diff --git a/package.json b/package.json index 1f494da..1036496 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "@jup-ag/terminal", - "version": "1.0.6", + "version": "1.0.7", "private": false, "license": "MIT", "scripts": { diff --git a/public/favicon-96x96.png b/public/favicon-96x96.png new file mode 100644 index 0000000..abb9586 Binary files /dev/null and b/public/favicon-96x96.png differ diff --git a/public/main-1.0.7-Jupiter.css b/public/main-1.0.7-Jupiter.css new file mode 100644 index 0000000..2274348 --- /dev/null +++ b/public/main-1.0.7-Jupiter.css @@ -0,0 +1,2 @@ +*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent;--tw-shadow:0 0 transparent;--tw-shadow-colored:0 0 transparent;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: }#jupiter-terminal .invisible{visibility:hidden}#jupiter-terminal .fixed{position:fixed}#jupiter-terminal .absolute{position:absolute}#jupiter-terminal .relative{position:relative}#jupiter-terminal .top-0{top:0}#jupiter-terminal .left-0{left:0}#jupiter-terminal .bottom-6{bottom:1.5rem}#jupiter-terminal .right-6{right:1.5rem}#jupiter-terminal .bottom-\[60px\]{bottom:60px}#jupiter-terminal .-right-3{right:-.75rem}#jupiter-terminal .bottom-\[44px\]{bottom:44px}#jupiter-terminal .-right-4{right:-1rem}#jupiter-terminal .left-6{left:1.5rem}#jupiter-terminal .-left-3{left:-.75rem}#jupiter-terminal .-left-4{left:-1rem}#jupiter-terminal .top-6{top:1.5rem}#jupiter-terminal .top-\[60px\]{top:60px}#jupiter-terminal .top-\[44px\]{top:44px}#jupiter-terminal .left-1{left:.25rem}#jupiter-terminal .top-1{top:.25rem}#jupiter-terminal .right-1{right:.25rem}#jupiter-terminal .bottom-1{bottom:.25rem}#jupiter-terminal .bottom-\[-8px\]{bottom:-8px}#jupiter-terminal .top-\[70px\]{top:70px}#jupiter-terminal .right-4{right:1rem}#jupiter-terminal .\!left-24{left:6rem!important}#jupiter-terminal .\!top-16{top:4rem!important}#jupiter-terminal .top-4{top:1rem}#jupiter-terminal .right-0{right:0}#jupiter-terminal .top-10{top:2.5rem}#jupiter-terminal .top-\[52px\]{top:52px}#jupiter-terminal .z-10{z-index:10}#jupiter-terminal .z-50{z-index:50}#jupiter-terminal .m-0\.5{margin:.125rem}#jupiter-terminal .m-0{margin:0}#jupiter-terminal .my-2{margin-bottom:.5rem;margin-top:.5rem}#jupiter-terminal .mx-0\.5{margin-left:.125rem;margin-right:.125rem}#jupiter-terminal .mx-0{margin-left:0;margin-right:0}#jupiter-terminal .my-4{margin-bottom:1rem;margin-top:1rem}#jupiter-terminal .my-3{margin-bottom:.75rem;margin-top:.75rem}#jupiter-terminal .ml-2{margin-left:.5rem}#jupiter-terminal .ml-0\.5{margin-left:.125rem}#jupiter-terminal .ml-0{margin-left:0}#jupiter-terminal .mt-2{margin-top:.5rem}#jupiter-terminal .ml-4{margin-left:1rem}#jupiter-terminal .mr-2{margin-right:.5rem}#jupiter-terminal .mt-3{margin-top:.75rem}#jupiter-terminal .mt-4{margin-top:1rem}#jupiter-terminal .ml-1{margin-left:.25rem}#jupiter-terminal .mt-1{margin-top:.25rem}#jupiter-terminal .mt-8{margin-top:2rem}#jupiter-terminal .mt-5{margin-top:1.25rem}#jupiter-terminal .ml-auto{margin-left:auto}#jupiter-terminal .mr-1{margin-right:.25rem}#jupiter-terminal .mb-4{margin-bottom:1rem}#jupiter-terminal .mb-2{margin-bottom:.5rem}#jupiter-terminal .mt-9{margin-top:2.25rem}#jupiter-terminal .mt-12{margin-top:3rem}#jupiter-terminal .mr-3{margin-right:.75rem}#jupiter-terminal .ml-3{margin-left:.75rem}#jupiter-terminal .ml-5{margin-left:1.25rem}#jupiter-terminal .mb-3{margin-bottom:.75rem}#jupiter-terminal .-mt-24{margin-top:-6rem}#jupiter-terminal .ml-2\.5{margin-left:.625rem}#jupiter-terminal .mt-2\.5{margin-top:.625rem}#jupiter-terminal .-mt-8{margin-top:-2rem}#jupiter-terminal .mt-6{margin-top:1.5rem}#jupiter-terminal .mt-7{margin-top:1.75rem}#jupiter-terminal .mt-0{margin-top:0}#jupiter-terminal .mt-auto{margin-top:auto}#jupiter-terminal .block{display:block}#jupiter-terminal .inline-block{display:inline-block}#jupiter-terminal .flex{display:flex}#jupiter-terminal .hidden{display:none}#jupiter-terminal .h-screen{height:100vh}#jupiter-terminal .h-full{height:100%}#jupiter-terminal .h-14{height:3.5rem}#jupiter-terminal .h-10{height:2.5rem}#jupiter-terminal .h-\[600px\]{height:600px}#jupiter-terminal .h-0{height:0}#jupiter-terminal .h-7{height:1.75rem}#jupiter-terminal .h-4{height:1rem}#jupiter-terminal .h-5{height:1.25rem}#jupiter-terminal .h-6{height:1.5rem}#jupiter-terminal .h-8{height:2rem}#jupiter-terminal .h-\[22px\]{height:22px}#jupiter-terminal .h-\[18px\]{height:18px}#jupiter-terminal .h-\[216px\]{height:216px}#jupiter-terminal .h-0\.5{height:.125rem}#jupiter-terminal .h-\[1px\]{height:1px}#jupiter-terminal .h-9{height:2.25rem}#jupiter-terminal .h-\[52px\]{height:52px}#jupiter-terminal .h-16{height:4rem}#jupiter-terminal .h-20{height:5rem}#jupiter-terminal .h-\[56px\]{height:56px}#jupiter-terminal .max-h-\[90vh\]{max-height:90vh}#jupiter-terminal .max-h-\[75vh\]{max-height:75vh}#jupiter-terminal .max-h-\[700px\]{max-height:700px}#jupiter-terminal .max-h-\[90\%\]{max-height:90%}#jupiter-terminal .max-h-\[80vh\]{max-height:80vh}#jupiter-terminal .max-h-\[260px\]{max-height:260px}#jupiter-terminal .min-h-\[12rem\]{min-height:12rem}#jupiter-terminal .min-h-\[600px\]{min-height:600px}#jupiter-terminal .w-screen{width:100vw}#jupiter-terminal .w-full{width:100%}#jupiter-terminal .w-14{width:3.5rem}#jupiter-terminal .w-10{width:2.5rem}#jupiter-terminal .w-\[90vw\]{width:90vw}#jupiter-terminal .w-4{width:1rem}#jupiter-terminal .w-5{width:1.25rem}#jupiter-terminal .w-6{width:1.5rem}#jupiter-terminal .w-\[98\%\]{width:98%}#jupiter-terminal .w-7{width:1.75rem}#jupiter-terminal .w-auto{width:auto}#jupiter-terminal .w-8{width:2rem}#jupiter-terminal .w-\[18px\]{width:18px}#jupiter-terminal .w-\[70\%\]{width:70%}#jupiter-terminal .w-\[80\%\]{width:80%}#jupiter-terminal .w-9{width:2.25rem}#jupiter-terminal .w-\[50\%\]{width:50%}#jupiter-terminal .w-\[120px\]{width:120px}#jupiter-terminal .w-16{width:4rem}#jupiter-terminal .w-20{width:5rem}#jupiter-terminal .w-\[56px\]{width:56px}#jupiter-terminal .min-w-\[40px\]{min-width:40px}#jupiter-terminal .min-w-0{min-width:0}#jupiter-terminal .max-w-\[360px\]{max-width:360px}#jupiter-terminal .max-w-\[384px\]{max-width:384px}#jupiter-terminal .max-w-full{max-width:100%}#jupiter-terminal .max-w-\[70\%\]{max-width:70%}#jupiter-terminal .max-w-6xl{max-width:72rem}#jupiter-terminal .max-w-3xl{max-width:48rem}#jupiter-terminal .max-w-xs{max-width:20rem}#jupiter-terminal .flex-1{flex:1 1 0%}#jupiter-terminal .flex-shrink-0{flex-shrink:0}#jupiter-terminal .flex-grow{flex-grow:1}#jupiter-terminal .origin-top-right{transform-origin:top right}#jupiter-terminal .translate-x-full{--tw-translate-x:100%}#jupiter-terminal .rotate-180,#jupiter-terminal .translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#jupiter-terminal .rotate-180{--tw-rotate:180deg}#jupiter-terminal .-rotate-45{--tw-rotate:-45deg}#jupiter-terminal .-rotate-45,#jupiter-terminal .rotate-45{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#jupiter-terminal .rotate-45{--tw-rotate:45deg}#jupiter-terminal .rotate-\[135deg\]{--tw-rotate:135deg}#jupiter-terminal .rotate-\[135deg\],#jupiter-terminal .rotate-\[225deg\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#jupiter-terminal .rotate-\[225deg\]{--tw-rotate:225deg}#jupiter-terminal .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}#jupiter-terminal .animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}#jupiter-terminal .animate-spin{animation:spin 1s linear infinite}#jupiter-terminal .cursor-pointer{cursor:pointer}#jupiter-terminal .cursor-not-allowed{cursor:not-allowed}#jupiter-terminal .cursor-wait{cursor:wait}#jupiter-terminal .cursor-text{cursor:text}#jupiter-terminal .list-none{list-style-type:none}#jupiter-terminal .flex-row{flex-direction:row}#jupiter-terminal .flex-col{flex-direction:column}#jupiter-terminal .items-start{align-items:flex-start}#jupiter-terminal .items-center{align-items:center}#jupiter-terminal .justify-center{justify-content:center}#jupiter-terminal .justify-between{justify-content:space-between}#jupiter-terminal .space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.25rem*var(--tw-space-x-reverse))}#jupiter-terminal .space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}#jupiter-terminal .space-x-2\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.625rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.625rem*var(--tw-space-x-reverse))}#jupiter-terminal .space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}#jupiter-terminal .space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}#jupiter-terminal .space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2.5rem*var(--tw-space-x-reverse))}#jupiter-terminal .space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}#jupiter-terminal .space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}#jupiter-terminal .space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.5rem*var(--tw-space-x-reverse))}#jupiter-terminal .space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}#jupiter-terminal .self-start{align-self:flex-start}#jupiter-terminal .overflow-auto{overflow:auto}#jupiter-terminal .overflow-hidden{overflow:hidden}#jupiter-terminal .overflow-y-auto{overflow-y:auto}#jupiter-terminal .overflow-x-hidden{overflow-x:hidden}#jupiter-terminal .overflow-y-scroll{overflow-y:scroll}#jupiter-terminal .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#jupiter-terminal .text-ellipsis{text-overflow:ellipsis}#jupiter-terminal .whitespace-nowrap{white-space:nowrap}#jupiter-terminal .rounded-lg{border-radius:.5rem}#jupiter-terminal .rounded-full{border-radius:9999px}#jupiter-terminal .rounded-2xl{border-radius:1rem}#jupiter-terminal .rounded-xl{border-radius:.75rem}#jupiter-terminal .rounded-md{border-radius:.375rem}#jupiter-terminal .rounded{border-radius:.25rem}#jupiter-terminal .border{border-width:1px}#jupiter-terminal .border-b{border-bottom-width:1px}#jupiter-terminal .border-l{border-left-width:1px}#jupiter-terminal .border-none{border-style:none}#jupiter-terminal .border-transparent{border-color:transparent}#jupiter-terminal .border-white\/10{border-color:hsla(0,0%,100%,.1)}#jupiter-terminal .border-white\/50{border-color:hsla(0,0%,100%,.5)}#jupiter-terminal .border-white\/20{border-color:hsla(0,0%,100%,.2)}#jupiter-terminal .border-black\/10{border-color:rgba(0,0,0,.1)}#jupiter-terminal .border-warning{--tw-border-opacity:1;border-color:rgba(250,166,60,var(--tw-border-opacity))}#jupiter-terminal .border-black\/50{border-color:rgba(0,0,0,.5)}#jupiter-terminal .border-white\/5{border-color:hsla(0,0%,100%,.05)}#jupiter-terminal .bg-black\/50{background-color:rgba(0,0,0,.5)}#jupiter-terminal .bg-jupiter-bg{--tw-bg-opacity:1;background-color:rgba(58,59,67,var(--tw-bg-opacity))}#jupiter-terminal .bg-black{--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#191B1F\]{--tw-bg-opacity:1;background-color:rgba(25,27,31,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#212128\]{--tw-bg-opacity:1;background-color:rgba(33,33,40,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#36373E\]{--tw-bg-opacity:1;background-color:rgba(54,55,62,var(--tw-bg-opacity))}#jupiter-terminal .bg-transparent{background-color:transparent}#jupiter-terminal .bg-black\/20{background-color:rgba(0,0,0,.2)}#jupiter-terminal .bg-white\/5{background-color:hsla(0,0%,100%,.05)}#jupiter-terminal .bg-white\/10{background-color:hsla(0,0%,100%,.1)}#jupiter-terminal .bg-zinc-700{--tw-bg-opacity:1;background-color:rgba(63,63,70,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#292A33\]{--tw-bg-opacity:1;background-color:rgba(41,42,51,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#2C2D33\]{--tw-bg-opacity:1;background-color:rgba(44,45,51,var(--tw-bg-opacity))}#jupiter-terminal .bg-black\/10{background-color:rgba(0,0,0,.1)}#jupiter-terminal .bg-white\/80{background-color:hsla(0,0%,100%,.8)}#jupiter-terminal .bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}#jupiter-terminal .bg-jupiter-jungle-green{--tw-bg-opacity:1;background-color:rgba(36,174,143,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#010101\]{--tw-bg-opacity:1;background-color:rgba(1,1,1,var(--tw-bg-opacity))}#jupiter-terminal .bg-black\/25{background-color:rgba(0,0,0,.25)}#jupiter-terminal .bg-\[\#282830\]{--tw-bg-opacity:1;background-color:rgba(40,40,48,var(--tw-bg-opacity))}#jupiter-terminal .bg-black\/30{background-color:rgba(0,0,0,.3)}#jupiter-terminal .bg-jupiter-dark-bg{--tw-bg-opacity:1;background-color:rgba(41,42,51,var(--tw-bg-opacity))}#jupiter-terminal .bg-black\/40{background-color:rgba(0,0,0,.4)}#jupiter-terminal .bg-white\/50{background-color:hsla(0,0%,100%,.5)}#jupiter-terminal .bg-\[rgba\(62\2c 62\2c 69\2c 0\.85\)\]{background-color:rgba(62,62,69,.85)}#jupiter-terminal .bg-\[\#1B1B1E\]{--tw-bg-opacity:1;background-color:rgba(27,27,30,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#25252D\]{--tw-bg-opacity:1;background-color:rgba(37,37,45,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#FBA43A\]{--tw-bg-opacity:1;background-color:rgba(251,164,58,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#23C1AA\]{--tw-bg-opacity:1;background-color:rgba(35,193,170,var(--tw-bg-opacity))}#jupiter-terminal .bg-opacity-\[15\%\]{--tw-bg-opacity:15%}#jupiter-terminal .\!bg-none{background-image:none!important}#jupiter-terminal .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}#jupiter-terminal .bg-v2-gradient{background-image:linear-gradient(96.8deg,rgba(250,196,58,.1) 4.71%,rgba(34,218,229,.1) 87.84%)}#jupiter-terminal .bg-jupiter-swap-gradient{background-image:linear-gradient(96.8deg,#faa43a 4.71%,#71e5ed 87.84%)}#jupiter-terminal .from-\[rgba\(252\2c 192\2c 10\2c 1\)\]{--tw-gradient-from:#fcc00a;--tw-gradient-to:rgba(252,192,10,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#jupiter-terminal .to-\[rgba\(78\2c 186\2c 233\2c 1\)\]{--tw-gradient-to:#4ebae9}#jupiter-terminal .bg-clip-text{-webkit-background-clip:text;background-clip:text}#jupiter-terminal .fill-current{fill:currentColor}#jupiter-terminal .fill-transparent{fill:transparent}#jupiter-terminal .object-contain{object-fit:contain}#jupiter-terminal .p-4{padding:1rem}#jupiter-terminal .p-3{padding:.75rem}#jupiter-terminal .p-2{padding:.5rem}#jupiter-terminal .p-5{padding:1.25rem}#jupiter-terminal .p-0\.5{padding:.125rem}#jupiter-terminal .p-0{padding:0}#jupiter-terminal .p-\[1px\]{padding:1px}#jupiter-terminal .p-1{padding:.25rem}#jupiter-terminal .p-1\.5{padding:.375rem}#jupiter-terminal .p-2\.5{padding:.625rem}#jupiter-terminal .p-6{padding:1.5rem}#jupiter-terminal .\!p-0{padding:0!important}#jupiter-terminal .py-2{padding-bottom:.5rem;padding-top:.5rem}#jupiter-terminal .px-3{padding-left:.75rem;padding-right:.75rem}#jupiter-terminal .px-2{padding-left:.5rem;padding-right:.5rem}#jupiter-terminal .py-5{padding-bottom:1.25rem;padding-top:1.25rem}#jupiter-terminal .px-4{padding-left:1rem;padding-right:1rem}#jupiter-terminal .py-1{padding-bottom:.25rem;padding-top:.25rem}#jupiter-terminal .py-3{padding-bottom:.75rem;padding-top:.75rem}#jupiter-terminal .px-5{padding-left:1.25rem;padding-right:1.25rem}#jupiter-terminal .py-\[1px\]{padding-bottom:1px;padding-top:1px}#jupiter-terminal .px-1{padding-left:.25rem;padding-right:.25rem}#jupiter-terminal .py-4{padding-bottom:1rem;padding-top:1rem}#jupiter-terminal .py-2\.5{padding-bottom:.625rem;padding-top:.625rem}#jupiter-terminal .py-0\.5{padding-bottom:.125rem;padding-top:.125rem}#jupiter-terminal .py-0{padding-bottom:0;padding-top:0}#jupiter-terminal .\!px-0{padding-left:0!important;padding-right:0!important}#jupiter-terminal .px-6{padding-left:1.5rem;padding-right:1.5rem}#jupiter-terminal .pt-1{padding-top:.25rem}#jupiter-terminal .pb-4{padding-bottom:1rem}#jupiter-terminal .pl-3{padding-left:.75rem}#jupiter-terminal .pr-2{padding-right:.5rem}#jupiter-terminal .pb-2{padding-bottom:.5rem}#jupiter-terminal .pl-2{padding-left:.5rem}#jupiter-terminal .pr-4{padding-right:1rem}#jupiter-terminal .pb-5{padding-bottom:1.25rem}#jupiter-terminal .pt-4{padding-top:1rem}#jupiter-terminal .text-left{text-align:left}#jupiter-terminal .text-center{text-align:center}#jupiter-terminal .text-right{text-align:right}#jupiter-terminal .text-xs{font-size:.75rem;line-height:1rem}#jupiter-terminal .text-lg{font-size:1.125rem;line-height:1.75rem}#jupiter-terminal .text-sm{font-size:.875rem;line-height:1.25rem}#jupiter-terminal .text-\[10px\]{font-size:10px}#jupiter-terminal .text-\[12px\]{font-size:12px}#jupiter-terminal .text-xxs{font-size:.625rem;line-height:1rem}#jupiter-terminal .text-\[13px\]{font-size:13px}#jupiter-terminal .text-\[11px\]{font-size:11px}#jupiter-terminal .text-4xl{font-size:2.25rem;line-height:2.5rem}#jupiter-terminal .text-base{font-size:1rem;line-height:1.5rem}#jupiter-terminal .text-xl{font-size:1.25rem;line-height:1.75rem}#jupiter-terminal .text-2xl{font-size:1.5rem;line-height:2rem}#jupiter-terminal .font-semibold{font-weight:600}#jupiter-terminal .font-medium{font-weight:500}#jupiter-terminal .font-bold{font-weight:700}#jupiter-terminal .font-\[500\]{font-weight:500}#jupiter-terminal .leading-none{line-height:1}#jupiter-terminal .leading-\[1\.67\]{line-height:1.67}#jupiter-terminal .leading-\[1\.17\]{line-height:1.17}#jupiter-terminal .leading-tight{line-height:1.25}#jupiter-terminal .text-black{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}#jupiter-terminal .text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}#jupiter-terminal .text-white\/30{color:hsla(0,0%,100%,.3)}#jupiter-terminal .text-white\/25{color:hsla(0,0%,100%,.25)}#jupiter-terminal .text-white\/50{color:hsla(0,0%,100%,.5)}#jupiter-terminal .text-white\/75{color:hsla(0,0%,100%,.75)}#jupiter-terminal .\!text-\[\#F04A44\]{--tw-text-opacity:1!important;color:rgba(240,74,68,var(--tw-text-opacity))!important}#jupiter-terminal .text-black\/50{color:rgba(0,0,0,.5)}#jupiter-terminal .text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}#jupiter-terminal .text-warning{--tw-text-opacity:1;color:rgba(250,166,60,var(--tw-text-opacity))}#jupiter-terminal .text-\[\#9D9DA6\]{--tw-text-opacity:1;color:rgba(157,157,166,var(--tw-text-opacity))}#jupiter-terminal .\!text-white{--tw-text-opacity:1!important;color:rgba(255,255,255,var(--tw-text-opacity))!important}#jupiter-terminal .text-transparent{color:transparent}#jupiter-terminal .\!text-jupiter-primary{--tw-text-opacity:1!important;color:rgba(251,164,58,var(--tw-text-opacity))!important}#jupiter-terminal .text-white\/40{color:hsla(0,0%,100%,.4)}#jupiter-terminal .underline{text-decoration-line:underline}#jupiter-terminal .opacity-0{opacity:0}#jupiter-terminal .opacity-100{opacity:1}#jupiter-terminal .opacity-20{opacity:.2}#jupiter-terminal .opacity-50{opacity:.5}#jupiter-terminal .opacity-25{opacity:.25}#jupiter-terminal .opacity-75{opacity:.75}#jupiter-terminal .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}#jupiter-terminal .shadow-2xl,#jupiter-terminal .shadow-sm{box-shadow:0 0 transparent,0 0 transparent,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}#jupiter-terminal .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}#jupiter-terminal .shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}#jupiter-terminal .shadow-md,#jupiter-terminal .shadow-xl{box-shadow:0 0 transparent,0 0 transparent,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}#jupiter-terminal .shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}#jupiter-terminal .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:0 0 transparent,0 0 transparent,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}#jupiter-terminal .ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),0 0 transparent;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}#jupiter-terminal .ring-white\/50{--tw-ring-color:hsla(0,0%,100%,.5)}#jupiter-terminal .ring-white\/5{--tw-ring-color:hsla(0,0%,100%,.05)}#jupiter-terminal .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#jupiter-terminal .backdrop-blur-\[20px\]{--tw-backdrop-blur:blur(20px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}#jupiter-terminal .transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}#jupiter-terminal .transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}#jupiter-terminal .duration-300{transition-duration:.3s}#jupiter-terminal .duration-200{transition-duration:.2s}#jupiter-terminal .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}#jupiter-terminal .placeholder\:text-sm::placeholder{font-size:.875rem;line-height:1.25rem}#jupiter-terminal .placeholder\:font-normal::placeholder{font-weight:400}#jupiter-terminal .placeholder\:text-white\/20::placeholder{color:hsla(0,0%,100%,.2)}#jupiter-terminal .placeholder\:text-white\/25::placeholder{color:hsla(0,0%,100%,.25)}#jupiter-terminal .hover\:bg-white\/20:hover{background-color:hsla(0,0%,100%,.2)}#jupiter-terminal .hover\:bg-black\/10:hover{background-color:rgba(0,0,0,.1)}#jupiter-terminal .hover\:bg-white\/10:hover{background-color:hsla(0,0%,100%,.1)}#jupiter-terminal .hover\:bg-black\/20:hover{background-color:rgba(0,0,0,.2)}#jupiter-terminal .hover\:text-white:hover{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}#jupiter-terminal .hover\:underline:hover{text-decoration-line:underline}#jupiter-terminal .hover\:opacity-100:hover{opacity:1}#jupiter-terminal .hover\:opacity-70:hover{opacity:.7}#jupiter-terminal .disabled\:opacity-50:disabled{opacity:.5}#jupiter-terminal .disabled\:hover\:bg-\[\#36373E\]:hover:disabled{--tw-bg-opacity:1;background-color:rgba(54,55,62,var(--tw-bg-opacity))}#jupiter-terminal .group:hover .group-hover\:visible{visibility:visible}#jupiter-terminal .group:hover .group-hover\:z-50{z-index:50}#jupiter-terminal .dark .dark\:border{border-width:1px}#jupiter-terminal .dark .dark\:border-white\/25{border-color:hsla(0,0%,100%,.25)}#jupiter-terminal .dark .dark\:border-transparent{border-color:transparent}#jupiter-terminal .dark .dark\:bg-black\/50{background-color:rgba(0,0,0,.5)}#jupiter-terminal .dark .dark\:bg-\[rgba\(62\2c 62\2c 69\2c 0\.9\)\]{background-color:rgba(62,62,69,.9)}#jupiter-terminal .dark .dark\:bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}#jupiter-terminal .dark .dark\:text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}#jupiter-terminal .dark .dark\:text-white\/50{color:hsla(0,0%,100%,.5)}#jupiter-terminal .dark .dark\:text-black{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}#jupiter-terminal .dark .dark\:placeholder\:text-white\/25::placeholder{color:hsla(0,0%,100%,.25)}#jupiter-terminal .dark .dark\:hover\:border-white\/50:hover{border-color:hsla(0,0%,100%,.5)}#jupiter-terminal .dark .dark\:hover\:text-white\/50:hover{color:hsla(0,0%,100%,.5)}@media (min-width:768px){#jupiter-terminal .md\:top-10{top:2.5rem}#jupiter-terminal .md\:right-2{right:.5rem}#jupiter-terminal .md\:mx-0{margin-left:0;margin-right:0}#jupiter-terminal .md\:mt-0{margin-top:0}#jupiter-terminal .md\:mt-14{margin-top:3.5rem}#jupiter-terminal .md\:ml-4{margin-left:1rem}#jupiter-terminal .md\:flex{display:flex}#jupiter-terminal .md\:\!flex{display:flex!important}#jupiter-terminal .md\:hidden{display:none}#jupiter-terminal .md\:max-h-\[600px\]{max-height:600px}#jupiter-terminal .md\:w-\[384px\]{width:384px}#jupiter-terminal .md\:max-w-\[300px\]{max-width:300px}#jupiter-terminal .md\:max-w-\[60\%\]{max-width:60%}#jupiter-terminal .md\:flex-row{flex-direction:row}#jupiter-terminal .md\:border-none{border-style:none}#jupiter-terminal .md\:p-4{padding:1rem}#jupiter-terminal .md\:px-6{padding-left:1.5rem;padding-right:1.5rem}#jupiter-terminal .md\:px-0{padding-left:0;padding-right:0}#jupiter-terminal .md\:px-8{padding-left:2rem;padding-right:2rem}#jupiter-terminal .md\:text-\[52px\]{font-size:52px}}@media (min-width:1024px){#jupiter-terminal .lg\:mt-0{margin-top:0}#jupiter-terminal .lg\:ml-4{margin-left:1rem}#jupiter-terminal .lg\:flex-row{flex-direction:row}#jupiter-terminal .lg\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}#jupiter-terminal .lg\:space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.75rem*var(--tw-space-x-reverse))}#jupiter-terminal .lg\:p-4{padding:1rem}} +/*# sourceMappingURL=main-1.0.7-Jupiter.css.map*/ \ No newline at end of file diff --git a/public/main-1.0.7-Jupiter.css.map b/public/main-1.0.7-Jupiter.css.map new file mode 100644 index 0000000..7e3c7c5 --- /dev/null +++ b/public/main-1.0.7-Jupiter.css.map @@ -0,0 +1 @@ +{"version":3,"file":"main-1.0.7-Jupiter.css","mappings":"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","sources":["webpack://@jup-ag/terminal/./node_modules/.pnpm/tailwindcss@3.2.4_postcss@8.4.19/node_modules/tailwindcss/tailwind.css"],"sourcesContent":["@tailwind base;\n\n@tailwind components;\n\n@tailwind utilities;\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/public/main-1.0.7-Tailwind.css b/public/main-1.0.7-Tailwind.css new file mode 100644 index 0000000..8474580 --- /dev/null +++ b/public/main-1.0.7-Tailwind.css @@ -0,0 +1,2 @@ +#jupiter-terminal .invisible{visibility:hidden}#jupiter-terminal .fixed{position:fixed}#jupiter-terminal .absolute{position:absolute}#jupiter-terminal .relative{position:relative}#jupiter-terminal .top-0{top:0}#jupiter-terminal .left-0{left:0}#jupiter-terminal .bottom-6{bottom:1.5rem}#jupiter-terminal .right-6{right:1.5rem}#jupiter-terminal .bottom-\[60px\]{bottom:60px}#jupiter-terminal .-right-3{right:-.75rem}#jupiter-terminal .bottom-\[44px\]{bottom:44px}#jupiter-terminal .-right-4{right:-1rem}#jupiter-terminal .left-6{left:1.5rem}#jupiter-terminal .-left-3{left:-.75rem}#jupiter-terminal .-left-4{left:-1rem}#jupiter-terminal .top-6{top:1.5rem}#jupiter-terminal .top-\[60px\]{top:60px}#jupiter-terminal .top-\[44px\]{top:44px}#jupiter-terminal .left-1{left:.25rem}#jupiter-terminal .top-1{top:.25rem}#jupiter-terminal .right-1{right:.25rem}#jupiter-terminal .bottom-1{bottom:.25rem}#jupiter-terminal .bottom-\[-8px\]{bottom:-8px}#jupiter-terminal .top-\[70px\]{top:70px}#jupiter-terminal .right-4{right:1rem}#jupiter-terminal .\!left-24{left:6rem!important}#jupiter-terminal .\!top-16{top:4rem!important}#jupiter-terminal .top-4{top:1rem}#jupiter-terminal .right-0{right:0}#jupiter-terminal .top-10{top:2.5rem}#jupiter-terminal .top-\[52px\]{top:52px}#jupiter-terminal .z-10{z-index:10}#jupiter-terminal .z-50{z-index:50}#jupiter-terminal .m-0\.5{margin:.125rem}#jupiter-terminal .m-0{margin:0}#jupiter-terminal .my-2{margin-bottom:.5rem;margin-top:.5rem}#jupiter-terminal .mx-0\.5{margin-left:.125rem;margin-right:.125rem}#jupiter-terminal .mx-0{margin-left:0;margin-right:0}#jupiter-terminal .my-4{margin-bottom:1rem;margin-top:1rem}#jupiter-terminal .my-3{margin-bottom:.75rem;margin-top:.75rem}#jupiter-terminal .ml-2{margin-left:.5rem}#jupiter-terminal .ml-0\.5{margin-left:.125rem}#jupiter-terminal .ml-0{margin-left:0}#jupiter-terminal .mt-2{margin-top:.5rem}#jupiter-terminal .ml-4{margin-left:1rem}#jupiter-terminal .mr-2{margin-right:.5rem}#jupiter-terminal .mt-3{margin-top:.75rem}#jupiter-terminal .mt-4{margin-top:1rem}#jupiter-terminal .ml-1{margin-left:.25rem}#jupiter-terminal .mt-1{margin-top:.25rem}#jupiter-terminal .mt-8{margin-top:2rem}#jupiter-terminal .mt-5{margin-top:1.25rem}#jupiter-terminal .ml-auto{margin-left:auto}#jupiter-terminal .mr-1{margin-right:.25rem}#jupiter-terminal .mb-4{margin-bottom:1rem}#jupiter-terminal .mb-2{margin-bottom:.5rem}#jupiter-terminal .mt-9{margin-top:2.25rem}#jupiter-terminal .mt-12{margin-top:3rem}#jupiter-terminal .mr-3{margin-right:.75rem}#jupiter-terminal .ml-3{margin-left:.75rem}#jupiter-terminal .ml-5{margin-left:1.25rem}#jupiter-terminal .mb-3{margin-bottom:.75rem}#jupiter-terminal .-mt-24{margin-top:-6rem}#jupiter-terminal .ml-2\.5{margin-left:.625rem}#jupiter-terminal .mt-2\.5{margin-top:.625rem}#jupiter-terminal .-mt-8{margin-top:-2rem}#jupiter-terminal .mt-6{margin-top:1.5rem}#jupiter-terminal .mt-7{margin-top:1.75rem}#jupiter-terminal .mt-0{margin-top:0}#jupiter-terminal .mt-auto{margin-top:auto}#jupiter-terminal .block{display:block}#jupiter-terminal .inline-block{display:inline-block}#jupiter-terminal .flex{display:flex}#jupiter-terminal .hidden{display:none}#jupiter-terminal .h-screen{height:100vh}#jupiter-terminal .h-full{height:100%}#jupiter-terminal .h-14{height:3.5rem}#jupiter-terminal .h-10{height:2.5rem}#jupiter-terminal .h-\[600px\]{height:600px}#jupiter-terminal .h-0{height:0}#jupiter-terminal .h-7{height:1.75rem}#jupiter-terminal .h-4{height:1rem}#jupiter-terminal .h-5{height:1.25rem}#jupiter-terminal .h-6{height:1.5rem}#jupiter-terminal .h-8{height:2rem}#jupiter-terminal .h-\[22px\]{height:22px}#jupiter-terminal .h-\[18px\]{height:18px}#jupiter-terminal .h-\[216px\]{height:216px}#jupiter-terminal .h-0\.5{height:.125rem}#jupiter-terminal .h-\[1px\]{height:1px}#jupiter-terminal .h-9{height:2.25rem}#jupiter-terminal .h-\[52px\]{height:52px}#jupiter-terminal .h-16{height:4rem}#jupiter-terminal .h-20{height:5rem}#jupiter-terminal .h-\[56px\]{height:56px}#jupiter-terminal .max-h-\[90vh\]{max-height:90vh}#jupiter-terminal .max-h-\[75vh\]{max-height:75vh}#jupiter-terminal .max-h-\[700px\]{max-height:700px}#jupiter-terminal .max-h-\[90\%\]{max-height:90%}#jupiter-terminal .max-h-\[80vh\]{max-height:80vh}#jupiter-terminal .max-h-\[260px\]{max-height:260px}#jupiter-terminal .min-h-\[12rem\]{min-height:12rem}#jupiter-terminal .min-h-\[600px\]{min-height:600px}#jupiter-terminal .w-screen{width:100vw}#jupiter-terminal .w-full{width:100%}#jupiter-terminal .w-14{width:3.5rem}#jupiter-terminal .w-10{width:2.5rem}#jupiter-terminal .w-\[90vw\]{width:90vw}#jupiter-terminal .w-4{width:1rem}#jupiter-terminal .w-5{width:1.25rem}#jupiter-terminal .w-6{width:1.5rem}#jupiter-terminal .w-\[98\%\]{width:98%}#jupiter-terminal .w-7{width:1.75rem}#jupiter-terminal .w-auto{width:auto}#jupiter-terminal .w-8{width:2rem}#jupiter-terminal .w-\[18px\]{width:18px}#jupiter-terminal .w-\[70\%\]{width:70%}#jupiter-terminal .w-\[80\%\]{width:80%}#jupiter-terminal .w-9{width:2.25rem}#jupiter-terminal .w-\[50\%\]{width:50%}#jupiter-terminal .w-\[120px\]{width:120px}#jupiter-terminal .w-16{width:4rem}#jupiter-terminal .w-20{width:5rem}#jupiter-terminal .w-\[56px\]{width:56px}#jupiter-terminal .min-w-\[40px\]{min-width:40px}#jupiter-terminal .min-w-0{min-width:0}#jupiter-terminal .max-w-\[360px\]{max-width:360px}#jupiter-terminal .max-w-\[384px\]{max-width:384px}#jupiter-terminal .max-w-full{max-width:100%}#jupiter-terminal .max-w-\[70\%\]{max-width:70%}#jupiter-terminal .max-w-6xl{max-width:72rem}#jupiter-terminal .max-w-3xl{max-width:48rem}#jupiter-terminal .max-w-xs{max-width:20rem}#jupiter-terminal .flex-1{flex:1 1 0%}#jupiter-terminal .flex-shrink-0{flex-shrink:0}#jupiter-terminal .flex-grow{flex-grow:1}#jupiter-terminal .origin-top-right{transform-origin:top right}#jupiter-terminal .translate-x-full{--tw-translate-x:100%}#jupiter-terminal .rotate-180,#jupiter-terminal .translate-x-full{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#jupiter-terminal .rotate-180{--tw-rotate:180deg}#jupiter-terminal .-rotate-45{--tw-rotate:-45deg}#jupiter-terminal .-rotate-45,#jupiter-terminal .rotate-45{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#jupiter-terminal .rotate-45{--tw-rotate:45deg}#jupiter-terminal .rotate-\[135deg\]{--tw-rotate:135deg}#jupiter-terminal .rotate-\[135deg\],#jupiter-terminal .rotate-\[225deg\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}#jupiter-terminal .rotate-\[225deg\]{--tw-rotate:225deg}#jupiter-terminal .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}#jupiter-terminal .animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}#jupiter-terminal .animate-spin{animation:spin 1s linear infinite}#jupiter-terminal .cursor-pointer{cursor:pointer}#jupiter-terminal .cursor-not-allowed{cursor:not-allowed}#jupiter-terminal .cursor-wait{cursor:wait}#jupiter-terminal .cursor-text{cursor:text}#jupiter-terminal .list-none{list-style-type:none}#jupiter-terminal .flex-row{flex-direction:row}#jupiter-terminal .flex-col{flex-direction:column}#jupiter-terminal .items-start{align-items:flex-start}#jupiter-terminal .items-center{align-items:center}#jupiter-terminal .justify-center{justify-content:center}#jupiter-terminal .justify-between{justify-content:space-between}#jupiter-terminal .space-x-1>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.25rem*var(--tw-space-x-reverse))}#jupiter-terminal .space-x-2>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.5rem*var(--tw-space-x-reverse))}#jupiter-terminal .space-x-2\.5>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.625rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.625rem*var(--tw-space-x-reverse))}#jupiter-terminal .space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.25rem*var(--tw-space-y-reverse));margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)))}#jupiter-terminal .space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1rem*var(--tw-space-x-reverse))}#jupiter-terminal .space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(2.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(2.5rem*var(--tw-space-x-reverse))}#jupiter-terminal .space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.5rem*var(--tw-space-y-reverse));margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)))}#jupiter-terminal .space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(1rem*var(--tw-space-y-reverse));margin-top:calc(1rem*(1 - var(--tw-space-y-reverse)))}#jupiter-terminal .space-x-6>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(1.5rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(1.5rem*var(--tw-space-x-reverse))}#jupiter-terminal .space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(.75rem*var(--tw-space-y-reverse));margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)))}#jupiter-terminal .self-start{align-self:flex-start}#jupiter-terminal .overflow-auto{overflow:auto}#jupiter-terminal .overflow-hidden{overflow:hidden}#jupiter-terminal .overflow-y-auto{overflow-y:auto}#jupiter-terminal .overflow-x-hidden{overflow-x:hidden}#jupiter-terminal .overflow-y-scroll{overflow-y:scroll}#jupiter-terminal .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#jupiter-terminal .text-ellipsis{text-overflow:ellipsis}#jupiter-terminal .whitespace-nowrap{white-space:nowrap}#jupiter-terminal .rounded-lg{border-radius:.5rem}#jupiter-terminal .rounded-full{border-radius:9999px}#jupiter-terminal .rounded-2xl{border-radius:1rem}#jupiter-terminal .rounded-xl{border-radius:.75rem}#jupiter-terminal .rounded-md{border-radius:.375rem}#jupiter-terminal .rounded{border-radius:.25rem}#jupiter-terminal .border{border-width:1px}#jupiter-terminal .border-b{border-bottom-width:1px}#jupiter-terminal .border-l{border-left-width:1px}#jupiter-terminal .border-none{border-style:none}#jupiter-terminal .border-transparent{border-color:transparent}#jupiter-terminal .border-white\/10{border-color:hsla(0,0%,100%,.1)}#jupiter-terminal .border-white\/50{border-color:hsla(0,0%,100%,.5)}#jupiter-terminal .border-white\/20{border-color:hsla(0,0%,100%,.2)}#jupiter-terminal .border-black\/10{border-color:rgba(0,0,0,.1)}#jupiter-terminal .border-warning{--tw-border-opacity:1;border-color:rgba(250,166,60,var(--tw-border-opacity))}#jupiter-terminal .border-black\/50{border-color:rgba(0,0,0,.5)}#jupiter-terminal .border-white\/5{border-color:hsla(0,0%,100%,.05)}#jupiter-terminal .bg-black\/50{background-color:rgba(0,0,0,.5)}#jupiter-terminal .bg-jupiter-bg{--tw-bg-opacity:1;background-color:rgba(58,59,67,var(--tw-bg-opacity))}#jupiter-terminal .bg-black{--tw-bg-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#191B1F\]{--tw-bg-opacity:1;background-color:rgba(25,27,31,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#212128\]{--tw-bg-opacity:1;background-color:rgba(33,33,40,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#36373E\]{--tw-bg-opacity:1;background-color:rgba(54,55,62,var(--tw-bg-opacity))}#jupiter-terminal .bg-transparent{background-color:transparent}#jupiter-terminal .bg-black\/20{background-color:rgba(0,0,0,.2)}#jupiter-terminal .bg-white\/5{background-color:hsla(0,0%,100%,.05)}#jupiter-terminal .bg-white\/10{background-color:hsla(0,0%,100%,.1)}#jupiter-terminal .bg-zinc-700{--tw-bg-opacity:1;background-color:rgba(63,63,70,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#292A33\]{--tw-bg-opacity:1;background-color:rgba(41,42,51,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#2C2D33\]{--tw-bg-opacity:1;background-color:rgba(44,45,51,var(--tw-bg-opacity))}#jupiter-terminal .bg-black\/10{background-color:rgba(0,0,0,.1)}#jupiter-terminal .bg-white\/80{background-color:hsla(0,0%,100%,.8)}#jupiter-terminal .bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}#jupiter-terminal .bg-jupiter-jungle-green{--tw-bg-opacity:1;background-color:rgba(36,174,143,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#010101\]{--tw-bg-opacity:1;background-color:rgba(1,1,1,var(--tw-bg-opacity))}#jupiter-terminal .bg-black\/25{background-color:rgba(0,0,0,.25)}#jupiter-terminal .bg-\[\#282830\]{--tw-bg-opacity:1;background-color:rgba(40,40,48,var(--tw-bg-opacity))}#jupiter-terminal .bg-black\/30{background-color:rgba(0,0,0,.3)}#jupiter-terminal .bg-jupiter-dark-bg{--tw-bg-opacity:1;background-color:rgba(41,42,51,var(--tw-bg-opacity))}#jupiter-terminal .bg-black\/40{background-color:rgba(0,0,0,.4)}#jupiter-terminal .bg-white\/50{background-color:hsla(0,0%,100%,.5)}#jupiter-terminal .bg-\[rgba\(62\2c 62\2c 69\2c 0\.85\)\]{background-color:rgba(62,62,69,.85)}#jupiter-terminal .bg-\[\#1B1B1E\]{--tw-bg-opacity:1;background-color:rgba(27,27,30,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#25252D\]{--tw-bg-opacity:1;background-color:rgba(37,37,45,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#FBA43A\]{--tw-bg-opacity:1;background-color:rgba(251,164,58,var(--tw-bg-opacity))}#jupiter-terminal .bg-\[\#23C1AA\]{--tw-bg-opacity:1;background-color:rgba(35,193,170,var(--tw-bg-opacity))}#jupiter-terminal .bg-opacity-\[15\%\]{--tw-bg-opacity:15%}#jupiter-terminal .\!bg-none{background-image:none!important}#jupiter-terminal .bg-gradient-to-r{background-image:linear-gradient(to right,var(--tw-gradient-stops))}#jupiter-terminal .bg-v2-gradient{background-image:linear-gradient(96.8deg,rgba(250,196,58,.1) 4.71%,rgba(34,218,229,.1) 87.84%)}#jupiter-terminal .bg-jupiter-swap-gradient{background-image:linear-gradient(96.8deg,#faa43a 4.71%,#71e5ed 87.84%)}#jupiter-terminal .from-\[rgba\(252\2c 192\2c 10\2c 1\)\]{--tw-gradient-from:#fcc00a;--tw-gradient-to:rgba(252,192,10,0);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to)}#jupiter-terminal .to-\[rgba\(78\2c 186\2c 233\2c 1\)\]{--tw-gradient-to:#4ebae9}#jupiter-terminal .bg-clip-text{-webkit-background-clip:text;background-clip:text}#jupiter-terminal .fill-current{fill:currentColor}#jupiter-terminal .fill-transparent{fill:transparent}#jupiter-terminal .object-contain{-o-object-fit:contain;object-fit:contain}#jupiter-terminal .p-4{padding:1rem}#jupiter-terminal .p-3{padding:.75rem}#jupiter-terminal .p-2{padding:.5rem}#jupiter-terminal .p-5{padding:1.25rem}#jupiter-terminal .p-0\.5{padding:.125rem}#jupiter-terminal .p-0{padding:0}#jupiter-terminal .p-\[1px\]{padding:1px}#jupiter-terminal .p-1{padding:.25rem}#jupiter-terminal .p-1\.5{padding:.375rem}#jupiter-terminal .p-2\.5{padding:.625rem}#jupiter-terminal .p-6{padding:1.5rem}#jupiter-terminal .\!p-0{padding:0!important}#jupiter-terminal .py-2{padding-bottom:.5rem;padding-top:.5rem}#jupiter-terminal .px-3{padding-left:.75rem;padding-right:.75rem}#jupiter-terminal .px-2{padding-left:.5rem;padding-right:.5rem}#jupiter-terminal .py-5{padding-bottom:1.25rem;padding-top:1.25rem}#jupiter-terminal .px-4{padding-left:1rem;padding-right:1rem}#jupiter-terminal .py-1{padding-bottom:.25rem;padding-top:.25rem}#jupiter-terminal .py-3{padding-bottom:.75rem;padding-top:.75rem}#jupiter-terminal .px-5{padding-left:1.25rem;padding-right:1.25rem}#jupiter-terminal .py-\[1px\]{padding-bottom:1px;padding-top:1px}#jupiter-terminal .px-1{padding-left:.25rem;padding-right:.25rem}#jupiter-terminal .py-4{padding-bottom:1rem;padding-top:1rem}#jupiter-terminal .py-2\.5{padding-bottom:.625rem;padding-top:.625rem}#jupiter-terminal .py-0\.5{padding-bottom:.125rem;padding-top:.125rem}#jupiter-terminal .py-0{padding-bottom:0;padding-top:0}#jupiter-terminal .\!px-0{padding-left:0!important;padding-right:0!important}#jupiter-terminal .px-6{padding-left:1.5rem;padding-right:1.5rem}#jupiter-terminal .pt-1{padding-top:.25rem}#jupiter-terminal .pb-4{padding-bottom:1rem}#jupiter-terminal .pl-3{padding-left:.75rem}#jupiter-terminal .pr-2{padding-right:.5rem}#jupiter-terminal .pb-2{padding-bottom:.5rem}#jupiter-terminal .pl-2{padding-left:.5rem}#jupiter-terminal .pr-4{padding-right:1rem}#jupiter-terminal .pb-5{padding-bottom:1.25rem}#jupiter-terminal .pt-4{padding-top:1rem}#jupiter-terminal .text-left{text-align:left}#jupiter-terminal .text-center{text-align:center}#jupiter-terminal .text-right{text-align:right}#jupiter-terminal .text-xs{font-size:.75rem;line-height:1rem}#jupiter-terminal .text-lg{font-size:1.125rem;line-height:1.75rem}#jupiter-terminal .text-sm{font-size:.875rem;line-height:1.25rem}#jupiter-terminal .text-\[10px\]{font-size:10px}#jupiter-terminal .text-\[12px\]{font-size:12px}#jupiter-terminal .text-xxs{font-size:.625rem;line-height:1rem}#jupiter-terminal .text-\[13px\]{font-size:13px}#jupiter-terminal .text-\[11px\]{font-size:11px}#jupiter-terminal .text-4xl{font-size:2.25rem;line-height:2.5rem}#jupiter-terminal .text-base{font-size:1rem;line-height:1.5rem}#jupiter-terminal .text-xl{font-size:1.25rem;line-height:1.75rem}#jupiter-terminal .text-2xl{font-size:1.5rem;line-height:2rem}#jupiter-terminal .font-semibold{font-weight:600}#jupiter-terminal .font-medium{font-weight:500}#jupiter-terminal .font-bold{font-weight:700}#jupiter-terminal .font-\[500\]{font-weight:500}#jupiter-terminal .leading-none{line-height:1}#jupiter-terminal .leading-\[1\.67\]{line-height:1.67}#jupiter-terminal .leading-\[1\.17\]{line-height:1.17}#jupiter-terminal .leading-tight{line-height:1.25}#jupiter-terminal .text-black{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}#jupiter-terminal .text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}#jupiter-terminal .text-white\/30{color:hsla(0,0%,100%,.3)}#jupiter-terminal .text-white\/25{color:hsla(0,0%,100%,.25)}#jupiter-terminal .text-white\/50{color:hsla(0,0%,100%,.5)}#jupiter-terminal .text-white\/75{color:hsla(0,0%,100%,.75)}#jupiter-terminal .\!text-\[\#F04A44\]{--tw-text-opacity:1!important;color:rgba(240,74,68,var(--tw-text-opacity))!important}#jupiter-terminal .text-black\/50{color:rgba(0,0,0,.5)}#jupiter-terminal .text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}#jupiter-terminal .text-warning{--tw-text-opacity:1;color:rgba(250,166,60,var(--tw-text-opacity))}#jupiter-terminal .text-\[\#9D9DA6\]{--tw-text-opacity:1;color:rgba(157,157,166,var(--tw-text-opacity))}#jupiter-terminal .\!text-white{--tw-text-opacity:1!important;color:rgba(255,255,255,var(--tw-text-opacity))!important}#jupiter-terminal .text-transparent{color:transparent}#jupiter-terminal .\!text-jupiter-primary{--tw-text-opacity:1!important;color:rgba(251,164,58,var(--tw-text-opacity))!important}#jupiter-terminal .text-white\/40{color:hsla(0,0%,100%,.4)}#jupiter-terminal .underline{text-decoration-line:underline}#jupiter-terminal .opacity-0{opacity:0}#jupiter-terminal .opacity-100{opacity:1}#jupiter-terminal .opacity-20{opacity:.2}#jupiter-terminal .opacity-50{opacity:.5}#jupiter-terminal .opacity-25{opacity:.25}#jupiter-terminal .opacity-75{opacity:.75}#jupiter-terminal .shadow-2xl{--tw-shadow:0 25px 50px -12px rgba(0,0,0,.25);--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color)}#jupiter-terminal .shadow-2xl,#jupiter-terminal .shadow-sm{box-shadow:0 0 transparent,0 0 transparent,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}#jupiter-terminal .shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0,0,0,.05);--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color)}#jupiter-terminal .shadow-xl{--tw-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 8px 10px -6px rgba(0,0,0,.1);--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color),0 8px 10px -6px var(--tw-shadow-color)}#jupiter-terminal .shadow-md,#jupiter-terminal .shadow-xl{box-shadow:0 0 transparent,0 0 transparent,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}#jupiter-terminal .shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -2px rgba(0,0,0,.1);--tw-shadow-colored:0 4px 6px -1px var(--tw-shadow-color),0 2px 4px -2px var(--tw-shadow-color)}#jupiter-terminal .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color);box-shadow:0 0 transparent,0 0 transparent,var(--tw-shadow);box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}#jupiter-terminal .ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),0 0 transparent;box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 transparent)}#jupiter-terminal .ring-white\/50{--tw-ring-color:hsla(0,0%,100%,.5)}#jupiter-terminal .ring-white\/5{--tw-ring-color:hsla(0,0%,100%,.05)}#jupiter-terminal .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}#jupiter-terminal .backdrop-blur-\[20px\]{--tw-backdrop-blur:blur(20px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}#jupiter-terminal .transition-opacity{transition-duration:.15s;transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1)}#jupiter-terminal .transition-all{transition-duration:.15s;transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1)}#jupiter-terminal .duration-300{transition-duration:.3s}#jupiter-terminal .duration-200{transition-duration:.2s}#jupiter-terminal .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}#jupiter-terminal *{box-sizing:border-box;font-family:Inter,sans-serif}#jupiter-terminal :focus{outline:none}.webkit-scrollbar::-webkit-scrollbar{width:8px}.webkit-scrollbar::-webkit-scrollbar-thumb{background:#979797;border-radius:10px;margin:2px}#jupiter-terminal .jup-gradient:before{background:linear-gradient(91.26deg,#fcc00a 15.73%,#4ebae9 83.27%);border-radius:.5rem;padding:2px}#jupiter-terminal .jup-gradient:before,#jupiter-terminal .v2-border-gradient:before{bottom:0;content:"";left:0;-webkit-mask:linear-gradient(#fff,#fff 0) content-box,linear-gradient(#fff,#fff 0);mask:linear-gradient(#fff,#fff 0) content-box,linear-gradient(#fff,#fff 0);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);mask-composite:exclude;-webkit-mask-composite:source-out;position:absolute;right:0;top:0}#jupiter-terminal .v2-border-gradient:before{background:linear-gradient(91.26deg,rgba(250,196,58,.5) 15.73%,rgba(113,229,237,.5) 83.27%);padding:1px;pointer-events:none;z-index:10}#jupiter-terminal .v2-border-gradient-left.v2-border-gradient:before{border-bottom-left-radius:.75rem;border-top-left-radius:.75rem}#jupiter-terminal .v2-border-gradient-center.v2-border-gradient:before{border-radius:.75rem}#jupiter-terminal .v2-border-gradient-right.v2-border-gradient:before{border-bottom-right-radius:.75rem;border-top-right-radius:.75rem}.jupiter-tooltip{--tw-bg-opacity:1;--tw-text-opacity:1;background-color:rgba(0,0,0,var(--tw-bg-opacity));border-radius:.5rem;color:rgba(255,255,255,var(--tw-text-opacity));padding:.5rem;position:absolute;visibility:hidden}.jupiter-has-tooltip:hover .jupiter-tooltip{visibility:visible;z-index:50}#jupiter-terminal .placeholder\:text-sm::-moz-placeholder{font-size:.875rem;line-height:1.25rem}#jupiter-terminal .placeholder\:text-sm::placeholder{font-size:.875rem;line-height:1.25rem}#jupiter-terminal .placeholder\:font-normal::-moz-placeholder{font-weight:400}#jupiter-terminal .placeholder\:font-normal::placeholder{font-weight:400}#jupiter-terminal .placeholder\:text-white\/20::-moz-placeholder{color:hsla(0,0%,100%,.2)}#jupiter-terminal .placeholder\:text-white\/20::placeholder{color:hsla(0,0%,100%,.2)}#jupiter-terminal .placeholder\:text-white\/25::-moz-placeholder{color:hsla(0,0%,100%,.25)}#jupiter-terminal .placeholder\:text-white\/25::placeholder{color:hsla(0,0%,100%,.25)}#jupiter-terminal .hover\:bg-white\/20:hover{background-color:hsla(0,0%,100%,.2)}#jupiter-terminal .hover\:bg-black\/10:hover{background-color:rgba(0,0,0,.1)}#jupiter-terminal .hover\:bg-white\/10:hover{background-color:hsla(0,0%,100%,.1)}#jupiter-terminal .hover\:bg-black\/20:hover{background-color:rgba(0,0,0,.2)}#jupiter-terminal .hover\:text-white:hover{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}#jupiter-terminal .hover\:underline:hover{text-decoration-line:underline}#jupiter-terminal .hover\:opacity-100:hover{opacity:1}#jupiter-terminal .hover\:opacity-70:hover{opacity:.7}#jupiter-terminal .disabled\:opacity-50:disabled{opacity:.5}#jupiter-terminal .disabled\:hover\:bg-\[\#36373E\]:hover:disabled{--tw-bg-opacity:1;background-color:rgba(54,55,62,var(--tw-bg-opacity))}#jupiter-terminal .group:hover .group-hover\:visible{visibility:visible}#jupiter-terminal .group:hover .group-hover\:z-50{z-index:50}#jupiter-terminal .dark .dark\:border{border-width:1px}#jupiter-terminal .dark .dark\:border-white\/25{border-color:hsla(0,0%,100%,.25)}#jupiter-terminal .dark .dark\:border-transparent{border-color:transparent}#jupiter-terminal .dark .dark\:bg-black\/50{background-color:rgba(0,0,0,.5)}#jupiter-terminal .dark .dark\:bg-\[rgba\(62\2c 62\2c 69\2c 0\.9\)\]{background-color:rgba(62,62,69,.9)}#jupiter-terminal .dark .dark\:bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}#jupiter-terminal .dark .dark\:text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}#jupiter-terminal .dark .dark\:text-white\/50{color:hsla(0,0%,100%,.5)}#jupiter-terminal .dark .dark\:text-black{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}#jupiter-terminal .dark .dark\:placeholder\:text-white\/25::-moz-placeholder{color:hsla(0,0%,100%,.25)}#jupiter-terminal .dark .dark\:placeholder\:text-white\/25::placeholder{color:hsla(0,0%,100%,.25)}#jupiter-terminal .dark .dark\:hover\:border-white\/50:hover{border-color:hsla(0,0%,100%,.5)}#jupiter-terminal .dark .dark\:hover\:text-white\/50:hover{color:hsla(0,0%,100%,.5)}@media (min-width:768px){#jupiter-terminal .md\:top-10{top:2.5rem}#jupiter-terminal .md\:right-2{right:.5rem}#jupiter-terminal .md\:mx-0{margin-left:0;margin-right:0}#jupiter-terminal .md\:mt-0{margin-top:0}#jupiter-terminal .md\:mt-14{margin-top:3.5rem}#jupiter-terminal .md\:ml-4{margin-left:1rem}#jupiter-terminal .md\:flex{display:flex}#jupiter-terminal .md\:\!flex{display:flex!important}#jupiter-terminal .md\:hidden{display:none}#jupiter-terminal .md\:max-h-\[600px\]{max-height:600px}#jupiter-terminal .md\:w-\[384px\]{width:384px}#jupiter-terminal .md\:max-w-\[300px\]{max-width:300px}#jupiter-terminal .md\:max-w-\[60\%\]{max-width:60%}#jupiter-terminal .md\:flex-row{flex-direction:row}#jupiter-terminal .md\:border-none{border-style:none}#jupiter-terminal .md\:p-4{padding:1rem}#jupiter-terminal .md\:px-6{padding-left:1.5rem;padding-right:1.5rem}#jupiter-terminal .md\:px-0{padding-left:0;padding-right:0}#jupiter-terminal .md\:px-8{padding-left:2rem;padding-right:2rem}#jupiter-terminal .md\:text-\[52px\]{font-size:52px}}@media (min-width:1024px){#jupiter-terminal .lg\:mt-0{margin-top:0}#jupiter-terminal .lg\:ml-4{margin-left:1rem}#jupiter-terminal .lg\:flex-row{flex-direction:row}#jupiter-terminal .lg\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-bottom:calc(0px*var(--tw-space-y-reverse));margin-top:calc(0px*(1 - var(--tw-space-y-reverse)))}#jupiter-terminal .lg\:space-x-3>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-left:calc(.75rem*(1 - var(--tw-space-x-reverse)));margin-right:calc(.75rem*var(--tw-space-x-reverse))}#jupiter-terminal .lg\:p-4{padding:1rem}} +/*# sourceMappingURL=main-1.0.7-Tailwind.css.map*/ \ No newline at end of file diff --git a/public/main-1.0.7-Tailwind.css.map b/public/main-1.0.7-Tailwind.css.map new file mode 100644 index 0000000..8d629e2 --- /dev/null +++ b/public/main-1.0.7-Tailwind.css.map @@ -0,0 +1 @@ +{"version":3,"file":"main-1.0.7-Tailwind.css","mappings":"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","sources":["webpack://@jup-ag/terminal/./src/styles/globals.css"],"sourcesContent":["@tailwind components;\n@tailwind utilities;\n\n#jupiter-terminal * {\n box-sizing: border-box;\n font-family: Inter, sans-serif;\n}\n\n#jupiter-terminal *:focus {\n outline: none;\n}\n\n/* JupButton border gradient */\n#jupiter-terminal .jup-gradient::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border-radius: 0.5rem;\n padding: 2px;\n background: linear-gradient(91.26deg, #fcc00a 15.73%, #4ebae9 83.27%);\n mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);\n mask-composite: exclude;\n -webkit-mask-composite: source-out;\n}\n\n/* Custom scroll bar */\n.webkit-scrollbar::-webkit-scrollbar {\n width: 8px;\n}\n\n.webkit-scrollbar::-webkit-scrollbar-thumb {\n margin: 2px;\n -webkit-border-radius: 10px;\n border-radius: 10px;\n background: #979797;\n}\n\n#jupiter-terminal .jup-gradient::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n border-radius: 0.5rem;\n padding: 2px;\n background: linear-gradient(91.26deg, #fcc00a 15.73%, #4ebae9 83.27%);\n mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);\n mask-composite: exclude;\n -webkit-mask-composite: source-out;\n}\n\n\n/* JupButton border gradient */\n#jupiter-terminal .v2-border-gradient::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n padding: 1px;\n background: linear-gradient(91.26deg, rgba(250, 196, 58, 0.5) 15.73%, rgba(113, 229, 237, 0.5) 83.27%);\n mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);\n mask-composite: exclude;\n -webkit-mask-composite: source-out;\n z-index: 10;\n pointer-events: none;\n}\n\n#jupiter-terminal .v2-border-gradient-left.v2-border-gradient::before {\n border-top-left-radius: 0.75rem;\n border-bottom-left-radius: 0.75rem;\n}\n#jupiter-terminal .v2-border-gradient-center.v2-border-gradient::before {\n border-radius: 0.75rem;\n}\n#jupiter-terminal .v2-border-gradient-right.v2-border-gradient::before {\n border-top-right-radius: 0.75rem;\n border-bottom-right-radius: 0.75rem;\n}\n\n /* Add tooltip functionality */\n.jupiter-tooltip {\n @apply invisible absolute;\n @apply bg-black text-white p-2 rounded-lg;\n}\n\n.jupiter-has-tooltip:hover .jupiter-tooltip {\n @apply visible z-50;\n}"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/public/main-1.0.7-app.js b/public/main-1.0.7-app.js new file mode 100644 index 0000000..6486a3b --- /dev/null +++ b/public/main-1.0.7-app.js @@ -0,0 +1,3 @@ +/*! For license information please see main-1.0.7-app.js.LICENSE.txt */ +(self.webpackChunk_jup_ag_terminal=self.webpackChunk_jup_ag_terminal||[]).push([[795],{83369:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=n(99174),A=n(88191),s=n(15380),a=n(27614),c=r(n(39098)),u=n(6267),l=n(25815),g=n(75710),d=n(27614),h=n(15380),p=r(n(36572)),f=r(n(44903));class m{constructor(e,t){this.publicKey=e,this.spotOpenOrdersAccounts=new Array(s.MAX_PAIRS).fill(void 0),this.advancedOrders=[],Object.assign(this,t)}get name(){return this.info?String.fromCharCode(...this.info).replace(new RegExp(String.fromCharCode(0),"g"),""):""}getLiquidationPrice(e,t,n){const{spot:i,perps:r,quote:o}=this.getHealthComponents(e,t);let c=o,u=A.ZERO_I80F48;for(let o=0;oe))}reload(e,t){return i(this,void 0,void 0,(function*(){const n=yield e.getAccountInfo(this.publicKey);return Object.assign(this,s.MangoAccountLayout.decode(null==n?void 0:n.data)),t&&(yield this.loadOpenOrders(e,t)),this}))}reloadFromSlot(e,t=0,n){var r;return i(this,void 0,void 0,(function*(){let i=-1,o=null;for(;i<=t;){const t=yield e.getAccountInfoAndContext(this.publicKey);i=null===(r=t.context)||void 0===r?void 0:r.slot,o=t.value,yield(0,d.sleep)(250)}const A=s.MangoAccountLayout.decode(null==o?void 0:o.data),a=new m(this.publicKey,A);return a.spotOpenOrdersAccounts=this.spotOpenOrdersAccounts,a.advancedOrders=this.advancedOrders,n&&(yield a.loadOpenOrders(e,n)),Object.assign(this,a),[a,i]}))}loadSpotOrdersForMarket(e,t,n){return i(this,void 0,void 0,(function*(){const[i,r]=yield(0,d.getMultipleAccounts)(e,[t.bidsAddress,t.asksAddress]);return[...o.Orderbook.decode(t,i.accountInfo.data),...o.Orderbook.decode(t,r.accountInfo.data)].filter((e=>e.openOrdersAddress.equals(this.spotOpenOrders[n])))}))}loadOpenOrders(e,t){return i(this,void 0,void 0,(function*(){const n=yield(0,d.getMultipleAccounts)(e,this.spotOpenOrders.filter((e=>!e.equals(a.zeroKey))));return this.spotOpenOrdersAccounts=this.spotOpenOrders.map((e=>{if(e.equals(a.zeroKey))return;const i=n.find((t=>t.publicKey.equals(e)));return i?o.OpenOrders.fromAccountInfo(e,i.accountInfo,t):void 0})),this.spotOpenOrdersAccounts}))}loadAdvancedOrders(e){return i(this,void 0,void 0,(function*(){if(this.advancedOrdersKey.equals(a.zeroKey))return[];const t=yield e.getAccountInfo(this.advancedOrdersKey),n=h.AdvancedOrdersLayout.decode(null==t?void 0:t.data);return this.advancedOrders=n.orders,n.orders}))}getNativeDeposit(e,t){return e.depositIndex.mul(this.deposits[t])}getNativeBorrow(e,t){return e.borrowIndex.mul(this.borrows[t])}getUiDeposit(e,t,n){return(0,a.nativeI80F48ToUi)(this.getNativeDeposit(e,n).floor(),t.getTokenDecimals(n))}getUiBorrow(e,t,n){return(0,a.nativeI80F48ToUi)(this.getNativeBorrow(e,n).ceil(),t.getTokenDecimals(n))}getSpotVal(e,t,n,i){let r=A.ZERO_I80F48;const o=e.getPrice(n,t),c=this.getUiDeposit(t.rootBankCache[n],e,n).mul(o).mul(i);r=r.add(c);const u=this.spotOpenOrdersAccounts[n];return void 0!==u&&(r=r.add(A.I80F48.fromNumber((0,a.nativeToUi)(u.baseTokenTotal.toNumber(),e.tokens[n].decimals)).mul(o).mul(i)),r=r.add(A.I80F48.fromNumber((0,a.nativeToUi)(u.quoteTokenTotal.toNumber()+u.referrerRebatesAccrued.toNumber(),e.tokens[s.QUOTE_INDEX].decimals)))),r}getAssetsVal(e,t,n){let i=A.ZERO_I80F48;i=i.add(this.getUiDeposit(t.rootBankCache[s.QUOTE_INDEX],e,s.QUOTE_INDEX));for(let r=0;rt.publicKey.equals(e.publicKey))),i=n.oracles.findIndex((e=>"MNGO"===e.symbol)),r=n.tokens.findIndex((e=>"MNGO"===e.symbol)),o=t.priceCache[i].price,s=e.tokens[r].decimals;let c=A.ZERO_I80F48;for(let t=0;tthis.inMarginBasket[t]?e:a.zeroKey))}getOpenOrdersKeysInBasketPacked(){return this.spotOpenOrders.filter(((e,t)=>this.inMarginBasket[t]))}getPerpPositionUi(e,t){return this.perpAccounts[e].getBasePositionUi(t)}getBasePositionUiWithGroup(e,t){return this.perpAccounts[e].basePosition.mul(t.perpMarkets[e].baseLotSize).toNumber()/Math.pow(10,t.tokens[e].decimals)}getEquityUi(e,t){return this.computeValue(e,t).toNumber()/Math.pow(10,e.tokens[s.QUOTE_INDEX].decimals)}getCollateralValueUi(e,t){return this.getHealth(e,t,"Init").toNumber()/Math.pow(10,e.tokens[s.QUOTE_INDEX].decimals)}getNetExposureByAsset(e,t,n,i){const r=(0,a.nativeToUi)(this.getNet(i.rootBankCache[s.QUOTE_INDEX],s.QUOTE_INDEX).toNumber(),t.tokens[s.QUOTE_INDEX].decimals);let o=[{asset:"USDC",amount:r,symbol:"USDC",value:r}];const c=o[0];for(let r=0;re.marketIndex==r)),d=n.find((e=>null==e?void 0:e.publicKey.equals(null==g?void 0:g.publicKey))),h=this.perpAccounts[r].getBasePositionUi(d),p=l*h;o.push({asset:g.name,symbol:u.symbol,amount:h,value:p});const f=(0,a.nativeToUi)(this.perpAccounts[r].getPnl(t.perpMarkets[r],i.perpMarketCache[r],A.I80F48.fromNumber(l)).toNumber(),t.tokens[s.QUOTE_INDEX].decimals);c.amount+=f,c.value+=f}}return o}}t.default=m},6336:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=n(75827),A=n(15380),s=n(88191),a=n(15380),c=r(n(36572)),u=r(n(95869)),l=n(27614);t.default=class{constructor(e,t){this.publicKey=e,Object.assign(this,t),this.oracles=this.oracles.filter((e=>!e.equals(l.zeroKey))),this.rootBankAccounts=new Array(a.MAX_TOKENS).fill(void 0)}getOracleIndex(e){for(let t=0;t{const i=a.MangoCacheLayout.decode(e.data),r=new a.MangoCache(this.mangoCache,i);t(r)}),e.commitment)}loadRootBanks(e){return i(this,void 0,void 0,(function*(){const t=this.tokens.map((e=>e.rootBank)).filter((e=>!e.equals(l.zeroKey))),n=(yield(0,l.getMultipleAccounts)(e,t)).map((e=>{const t=a.RootBankLayout.decode(e.accountInfo.data);return new u.default(e.publicKey,t)})),i=n.map((e=>e.nodeBanks.filter((e=>!e.equals(l.zeroKey))))),r=(yield(0,l.getMultipleAccounts)(e,i.flat())).map((e=>{const t=A.NodeBankLayout.decode(e.accountInfo.data);return new A.NodeBank(e.publicKey,t)}));let o=0;for(let e=0;e!e.equals(l.zeroKey))).length;t.nodeBankAccounts=r.slice(o,o+i),o+=i}return this.rootBankAccounts=this.tokens.map((e=>{const t=n.find((t=>t.publicKey.equals(e.rootBank)));return null!=t?t:void 0})),this.rootBankAccounts}))}loadPerpMarket(e,t,n,r){return i(this,void 0,void 0,(function*(){const i=this.perpMarkets[t].perpMarket,o=yield e.getAccountInfo(i),A=a.PerpMarketLayout.decode(null==o?void 0:o.data);return new c.default(i,n,r,A)}))}getQuoteTokenInfo(){return this.tokens[this.tokens.length-1]}}},10198:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(27614),o=n(88191),A=i(n(75827)),s=new A.default(0),a=new A.default(-1);t.default=class{constructor(e){Object.assign(this,e)}getAverageOpenPrice(e,t,n){if(this.basePosition.isZero())return s;const i=t.baseLotsToNumber(this.basePosition),r=e.publicKey.toString();let o=new A.default(i),c=s;for(const e of n){let t,n;if("liqor"in e){const i=e;t=new A.default(i.price);let c=new A.default(i.quantity);if(r===i.liqee.toString()&&(c=c.mul(a)),o.gt(s)&&c.gt(s))n=c.lt(o)?c:o;else{if(!o.lt(s)||!c.lt(s))continue;n=o.gt(c)?o:c}}else{const i=e;t=new A.default(i.price);let c=new A.default(i.quantity);if((r===i.taker.toString()&&"sell"===i.takerSide||r===i.maker.toString()&&"buy"===i.takerSide)&&(c=c.mul(a)),o.gt(s)&&c.gt(s))n=c.lt(o)?c:o;else{if(!o.lt(s)||!c.lt(s))continue;n=o.gt(c)?o:c}}if(c=c.sub(n.mul(t)),o=o.sub(n),o.lte(new A.default(1e-9))&&o.gte(new A.default(-1e-9)))return c.div(i).abs()}throw new Error("Trade history incomplete")}getBreakEvenPrice(e,t,n){if(this.basePosition.isZero())return s;const i=t.baseLotsToNumber(this.basePosition),r=e.publicKey.toString();let o=new A.default(i),c=s;for(const e of n){let t,n;if("liqor"in e){const i=e;t=new A.default(i.price);let c=new A.default(i.quantity);r===i.liqee.toString()&&(c=c.mul(a)),n=o.gt(s)&&c.gt(s)?c.lt(o)?c:o:o.lt(s)&&c.lt(s)&&o.gt(c)?o:c}else{const i=e;t=new A.default(i.price);let c=new A.default(i.quantity);(r===i.taker.toString()&&"sell"===i.takerSide||r===i.maker.toString()&&"buy"===i.takerSide)&&(c=c.mul(a)),n=o.gt(s)&&c.gt(s)?o.lt(c)?o:c:o.lt(s)&&c.lt(s)&&o.gt(c)?o:c}if(c=c.sub(n.mul(t)),o=o.sub(n),o.lte(new A.default(1e-9))&&o.gte(new A.default(-1e-9)))return c.mul(a).div(i)}throw new Error("Trade history incomplete")}getPnl(e,t,n){return o.I80F48.fromI64(this.basePosition.mul(e.baseLotSize)).mul(n).add(this.getQuotePosition(t))}getUnsettledFunding(e){return this.basePosition.isNeg()?o.I80F48.fromI64(this.basePosition).mul(e.shortFunding.sub(this.shortSettledFunding)):o.I80F48.fromI64(this.basePosition).mul(e.longFunding.sub(this.longSettledFunding))}getQuotePosition(e){return this.quotePosition.sub(this.getUnsettledFunding(e))}simPositionHealth(e,t,n,i,A){const s=this.basePosition.add(A);let a=this.quotePosition.sub(o.I80F48.fromI64(A.mul(e.baseLotSize)).mul(t));return a=s.gt(r.ZERO_BN)?a.add(o.I80F48.fromI64(s.mul(e.baseLotSize)).mul(t).mul(n)):a.add(o.I80F48.fromI64(s.mul(e.baseLotSize)).mul(t).mul(i)),a}getHealth(e,t,n,i,A,s){const a=this.simPositionHealth(e,t,n,i,this.bidsQuantity),c=this.simPositionHealth(e,t,n,i,this.asksQuantity.neg()),u=a.lt(c)?a:c;let l;return l=this.basePosition.gt(r.ZERO_BN)?u.sub(A.sub(this.longSettledFunding).mul(o.I80F48.fromI64(this.basePosition))):u.add(s.sub(this.shortSettledFunding).mul(o.I80F48.fromI64(this.basePosition))),l}getLiabsVal(e,t,n,i){let A=o.ZERO_I80F48;this.basePosition.lt(r.ZERO_BN)&&(A=A.add(o.I80F48.fromI64(this.basePosition.mul(e.baseLotSize)).mul(t)));let s=this.quotePosition;return this.basePosition.gt(r.ZERO_BN)?s=this.quotePosition.sub(i.sub(this.longSettledFunding).mul(o.I80F48.fromI64(this.basePosition))):this.basePosition.lt(r.ZERO_BN)&&(s=this.quotePosition.sub(n.sub(this.shortSettledFunding).mul(o.I80F48.fromI64(this.basePosition)))),s.lt(o.ZERO_I80F48)&&(A=A.add(s)),A.neg()}getAssetVal(e,t,n,i){let A=o.ZERO_I80F48;this.basePosition.gt(r.ZERO_BN)&&(A=A.add(o.I80F48.fromI64(this.basePosition.mul(e.baseLotSize)).mul(t)));let s=this.quotePosition;return this.basePosition.gt(r.ZERO_BN)?s=this.quotePosition.sub(i.sub(this.longSettledFunding).mul(o.I80F48.fromI64(this.basePosition))):this.basePosition.lt(r.ZERO_BN)&&(s=this.quotePosition.sub(n.sub(this.shortSettledFunding).mul(o.I80F48.fromI64(this.basePosition)))),s.gt(o.ZERO_I80F48)&&(A=A.add(s)),A}getBasePositionUi(e){return e.baseLotsToNumber(this.basePosition)}}},81180:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(27614);t.default=class{constructor(e){Object.assign(this,e)}getUnconsumedEvents(){const e=[],t=this.head.toNumber();for(let n=0;ne.timestamp.gt(i.ZERO_BN))).sort(((e,t)=>e.seqNum.cmp(t.seqNum))):t.filter((t=>t.seqNum.gt(e))).sort(((e,t)=>e.seqNum.cmp(t.seqNum))),n.map((e=>"fill"===e.eventType?{fill:e}:"out"===e.eventType?{out:e}:"liquidate"===e.eventType?{liquidate:e}:void 0))}}},36572:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const o=r(n(75827)),A=r(n(39098)),s=n(27614),a=r(n(81180)),c=n(15380),u=n(25815),l=n(88191),g=n(27614),d=n(6267);t.default=class{constructor(e,t,n,i){this.publicKey=e,this.baseDecimals=t,this.quoteDecimals=n,Object.assign(this,i),this.priceLotsToUiConvertor=new o.default(10).pow(t-n).mul(new o.default(this.quoteLotSize.toString())).div(new o.default(this.baseLotSize.toString())).toNumber(),this.baseLotsToUiConvertor=new o.default(this.baseLotSize.toString()).div(new o.default(10).pow(t)).toNumber()}priceLotsToNative(e){return l.I80F48.fromI64(this.quoteLotSize.mul(e)).div(l.I80F48.fromI64(this.baseLotSize))}baseLotsToNative(e){return l.I80F48.fromI64(this.baseLotSize.mul(e))}priceLotsToNumber(e){return parseFloat(e.toString())*this.priceLotsToUiConvertor}baseLotsToNumber(e){return parseFloat(e.toString())*this.baseLotsToUiConvertor}get minOrderSize(){return void 0===this._minOrderSize&&(this._minOrderSize=this.baseLotsToNumber(s.ONE_BN)),this._minOrderSize}get tickSize(){return void 0===this._tickSize&&(this._tickSize=this.priceLotsToNumber(s.ONE_BN)),this._tickSize}getCurrentFundingRate(e,t,n,i,r){const o=new A.default(100),a=i.getImpactPriceUi(o),c=r.getImpactPriceUi(o),u=e.getPriceUi(n,t);let l;if(void 0!==a&&void 0!==c){const e=(a+c)/2;l=(0,s.clamp)(e/u-1,-.05,.05)}else l=void 0!==a?.05:void 0!==c?-.05:0;return l/24}loadEventQueue(e){return i(this,void 0,void 0,(function*(){const t=yield e.getAccountInfo(this.eventQueue),n=c.PerpEventQueueLayout.decode(null==t?void 0:t.data);return new a.default(n)}))}loadFills(e){return i(this,void 0,void 0,(function*(){return(yield this.loadEventQueue(e)).eventsSince(g.ZERO_BN).map((e=>e.fill)).filter((e=>!!e)).map(this.parseFillEvent.bind(this))}))}parseFillEvent(e){const t=this.baseLotsToNumber(e.quantity),n=this.priceLotsToNumber(e.price);return Object.assign(Object.assign({},e),{quantity:t,price:n})}loadBids(e,t=!1){return i(this,void 0,void 0,(function*(){const n=yield e.getAccountInfo(this.bids);return new u.BookSide(this.bids,this,c.BookSideLayout.decode(null==n?void 0:n.data),t)}))}loadAsks(e,t=!1){return i(this,void 0,void 0,(function*(){const n=yield e.getAccountInfo(this.asks);return new u.BookSide(this.asks,this,c.BookSideLayout.decode(null==n?void 0:n.data),t)}))}loadOrdersForAccount(e,t,n=!1){return i(this,void 0,void 0,(function*(){const[i,r]=yield Promise.all([this.loadBids(e,n),this.loadAsks(e,n)]);return[...i,...r].filter((e=>e.owner.equals(t.publicKey)))}))}uiToNativePriceQuantity(e,t){const n=Math.pow(10,this.baseDecimals),i=Math.pow(10,this.quoteDecimals);return[new A.default(e*i).mul(this.baseLotSize).div(this.quoteLotSize.mul(new A.default(n))),new A.default(t*n).div(this.baseLotSize)]}uiQuoteToLots(e){const t=Math.pow(10,this.quoteDecimals);return new A.default(e*t).div(this.quoteLotSize)}toPrettyString(e,t){const n=e.perpMarkets[t.marketIndex],i=e.oracles[t.marketIndex],r=this.liquidityMiningInfo,o=Date.now()/1e3,A=r.periodStart.toNumber(),a=o-A,c=1-r.mngoLeft.toNumber()/r.mngoPerPeriod.toNumber(),u=A+a/c;return[`${t.name}`,`version: ${this.metaData.version}`,`publicKey: ${t.publicKey.toBase58()}`,`oracle: ${i.toBase58()}`,`initAssetWeight: ${e.perpMarkets[t.marketIndex].initAssetWeight.toString()}`,`maintAssetWeight: ${e.perpMarkets[t.marketIndex].maintAssetWeight.toString()}`,`marketIndex: ${t.marketIndex}`,`bidsKey: ${this.bids.toBase58()}`,`asksKey: ${this.asks.toBase58()}`,`eventQueue: ${this.eventQueue.toBase58()}`,`quoteLotSize: ${this.quoteLotSize.toString()}`,`baseLotSize: ${this.baseLotSize.toString()}`,`longFunding: ${this.longFunding.toString()}`,`shortFunding: ${this.shortFunding.toString()}`,`openInterest: ${this.openInterest.toString()}`,`lastUpdated: ${new Date(1e3*this.lastUpdated.toNumber()).toUTCString()}`,`seqNum: ${this.seqNum.toString()}`,`liquidationFee: ${n.liquidationFee.toString()}`,`takerFee: ${n.takerFee.toString()}`,`makerFee: ${n.makerFee.toString()}`,`feesAccrued: ${(0,s.nativeToUi)(this.feesAccrued.toNumber(),6).toFixed(6)}`,`\n----- ${t.name} Liquidity Mining Info -----`,`rate: ${r.rate.toString()}`,"maxDepth: "+(0===this.metaData.version?r.maxDepthBps.toString()+" bps":r.maxDepthBps.toString()+" contracts"),`exp: ${this.metaData.extraInfo[0]||2}`,`lmSizeShift: ${this.metaData.extraInfo[1]}`,`periodStart: ${new Date(1e3*r.periodStart.toNumber()).toUTCString()}`,`targetPeriodLength: ${r.targetPeriodLength.toString()}`,`mngoLeftInPeriod: ${(r.mngoLeft.toNumber()/Math.pow(10,6)).toFixed(2)}`,`mngoPerPeriod: ${(r.mngoPerPeriod.toNumber()/Math.pow(10,6)).toFixed(2)}`,`periodProgress: ${100*c}%`,`estPeriodEnd: ${new Date(1e3*u).toUTCString()}`,`mngoVault: ${this.mngoVault.toString()}`].join(d.EOL)}}},95869:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0});const r=n(88191),o=n(15380),A=n(27614);t.default=class{constructor(e,t){this.publicKey=e,Object.assign(this,t),this.nodeBankAccounts=[]}loadNodeBanks(e){return i(this,void 0,void 0,(function*(){const t=this.nodeBanks.filter((e=>!e.equals(A.zeroKey))),n=(yield(0,A.getMultipleAccounts)(e,t)).map((e=>{const t=o.NodeBankLayout.decode(e.accountInfo.data);return new o.NodeBank(e.publicKey,t)}));return this.nodeBankAccounts=n,n}))}getNativeTotalDeposit(){if(!this.nodeBankAccounts.length)throw new Error("Node bank accounts empty");let e=r.ZERO_I80F48;for(let t=0;t0;){const s=t.pop(),{leafNode:a,innerNode:u}=this.nodes[s];if(a){const t=c(a.key),n=a.timeInForce?a.timestamp.add(new r.default(a.timeInForce)):A.U64_MAX_BN;(e.lt(n)||this.includeExpired)&&(yield{orderId:a.key,clientId:a.clientOrderId,owner:a.owner,openOrdersSlot:a.ownerSlot,feeTier:0,price:this.perpMarket.priceLotsToNumber(t),priceLots:t,size:this.perpMarket.baseLotsToNumber(a.quantity),sizeLots:a.quantity,side:o,bestInitial:a.bestInitial,timestamp:a.timestamp,expiryTimestamp:n})}else u&&t.push(u.children[i],u.children[n])}}getImpactPriceUi(e){const t=A.ZERO_BN.clone();for(const n of this)if(t.iadd(n.sizeLots),t.gte(e))return n.price}getBest(){if(0===this.leafCount)return;const[e,t]=this.isBids?[1,0]:[0,1],n=this.isBids?"buy":"sell",i=[this.rootNode],o=this.now;for(;i.length>0;){let s=i.pop();const{leafNode:a,innerNode:u}=this.nodes[s];if(a){const e=c(a.key),t=a.timeInForce?a.timestamp.add(new r.default(a.timeInForce)):A.U64_MAX_BN;if(o.lt(t)||this.includeExpired)return{orderId:a.key,clientId:a.clientOrderId,owner:a.owner,openOrdersSlot:a.ownerSlot,feeTier:0,price:this.perpMarket.priceLotsToNumber(e),priceLots:e,size:this.perpMarket.baseLotsToNumber(a.quantity),sizeLots:a.quantity,side:n,bestInitial:a.bestInitial,timestamp:a.timestamp,expiryTimestamp:t}}else u&&i.push(u.children[t],u.children[e])}}[Symbol.iterator](){return this.items()}getL2Ui(e){const t=[];for(const{price:n,size:i}of this.items())if(t.length>0&&t[t.length-1][0]===n)t[t.length-1][1]+=i;else{if(t.length===e)break;t.push([n,i])}return t}getL2(e){const t=[];for(const{priceLots:n,sizeLots:i}of this.items())if(t.length>0&&t[t.length-1][0].eq(n))t[t.length-1][1].iadd(i);else{if(t.length===e)break;t.push([n,i])}return t.map((([e,t])=>[this.perpMarket.priceLotsToNumber(e),this.perpMarket.baseLotsToNumber(t),e,t]))}}function c(e){return e.ushrn(64)}t.BookSide=a,t.getPriceFromKey=c},51194:function(e,t,n){"use strict";var i=n(49500),r=n(55872).Buffer,o=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),A=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&o(t,e,n);return A(t,e),t},a=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},c=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.MangoClient=t.getUnixTs=void 0;const u=n(97212),l=c(n(39098)),g=c(n(45005)),d=n(27614),h=n(15380),p=c(n(83369)),f=c(n(36572)),m=n(20264),I=n(99174),y=n(88191),B=n(26959),C=n(25815),w=n(88323),E=n(76604),Q=c(n(6336)),b=n(20264),k=n(15380),v=s(n(11565));t.getUnixTs=()=>(new Date).getTime()/1e3,t.MangoClient=class{constructor(e,t,n={}){this.connection=e,this.programId=t,this.lastSlot=0,this.lastValidBlockHeight=0,this.blockhashCommitment=(null==n?void 0:n.blockhashCommitment)||"confirmed",this.timeout=(null==n?void 0:n.timeout)||6e4,this.sendConnection=null==n?void 0:n.sendConnection,this.prioritizationFee=(null==n?void 0:n.prioritizationFee)||0,n.postSendTxCallback&&(this.postSendTxCallback=n.postSendTxCallback)}sendTransactions(e,t,n,i=this.timeout,r="processed"){return a(this,void 0,void 0,(function*(){return yield Promise.all(e.map((e=>this.sendTransaction(e,t,n,i,r))))}))}getCurrentBlockhash(){return a(this,void 0,void 0,(function*(){return yield this.connection.getLatestBlockhash(this.blockhashCommitment)}))}signTransaction({transaction:e,payer:t,signers:n,currentBlockhash:r}){return a(this,void 0,void 0,(function*(){let o=r||(yield this.getCurrentBlockhash());if(e.recentBlockhash=o.blockhash,e.setSigners(t.publicKey,...n.map((e=>e.publicKey))),n.length>0&&e.partialSign(...n),null==t?void 0:t.connected)return i.log("signing as wallet",t.publicKey),yield t.signTransaction(e);e.sign(...[t].concat(n))}))}signTransactions({transactionsAndSigners:e,payer:t,currentBlockhash:n}){return a(this,void 0,void 0,(function*(){if(!t.publicKey)return;let i=n||(yield this.getCurrentBlockhash());return e.forEach((({transaction:e,signers:n=[]})=>{e.recentBlockhash=i.blockhash,this.prioritizationFee&&(e=(0,d.prependFeePrioritizationIx)(e,this.prioritizationFee)),t.publicKey&&e.setSigners(t.publicKey,...n.map((e=>e.publicKey))),(null==n?void 0:n.length)>0&&e.partialSign(...n)})),(0,B.adapterHasSignAllTransactions)(t)?yield t.signAllTransactions(e.map((({transaction:e})=>e))):(e.forEach((({transaction:e,signers:n})=>{e.sign(...[t].concat(n))})),e.map((e=>e.transaction)))}))}sendTransaction(e,n,r,o=this.timeout,A="processed"){return a(this,void 0,void 0,(function*(){const s=yield this.getCurrentBlockhash();e=(0,d.prependFeePrioritizationIx)(e,this.prioritizationFee),yield this.signTransaction({transaction:e,payer:n,signers:r,currentBlockhash:s});const c=e.serialize();let u=v.encode(e.signatures[0].signature);const l=(0,t.getUnixTs)();if(this.sendConnection){const e=this.sendConnection.sendRawTransaction(c);if(this.postSendTxCallback)try{this.postSendTxCallback({txid:u})}catch(e){i.warn(`postSendTxCallback error ${e}`)}try{return yield e}catch(e){throw i.error(e),new d.MangoError({message:"Transaction failed",txid:u})}}else{if(u=yield this.connection.sendRawTransaction(c,{skipPreflight:!0}),this.postSendTxCallback)try{this.postSendTxCallback({txid:u})}catch(e){i.warn(`postSendTxCallback error ${e}`)}if(!o)return u;i.log("Started awaiting confirmation for",u,"size:",c.length);let n=!1,r=0;const g=2e3,h=30;(()=>{a(this,void 0,void 0,(function*(){for(;!n&&(0,t.getUnixTs)()-l=0;--e){const t=n.logs[e];if(t.startsWith("Program log: "))throw new d.MangoError({message:"Transaction failed: "+t.slice("Program log: ".length),txid:u})}throw new d.MangoError({message:JSON.stringify(n.err),txid:u})}throw new d.MangoError({message:"Transaction failed",txid:u})}finally{n=!0}}return i.log("Latency",(0,t.getUnixTs)()-l,u),u}))}sendSignedTransaction({signedTransaction:e,timeout:n=this.timeout,confirmLevel:r="processed",signedAtBlock:o}){return a(this,void 0,void 0,(function*(){const A=e.serialize();let s=v.encode(e.signatures[0].signature);const c=(0,t.getUnixTs)();if(!this.sendConnection){if(s=yield this.connection.sendRawTransaction(A,{skipPreflight:!0}),this.postSendTxCallback)try{this.postSendTxCallback({txid:s})}catch(e){i.log(`postSendTxCallback error ${e}`)}if(!n)return s;let u=!1;(()=>{a(this,void 0,void 0,(function*(){for(;!u&&(0,t.getUnixTs)()-c=0;--e){const t=n.logs[e];if(t.startsWith("Program log: "))throw new d.MangoError({message:"Transaction failed: "+t.slice("Program log: ".length),txid:s})}throw new d.MangoError({message:JSON.stringify(n.err),txid:s})}throw new d.MangoError({message:"Transaction failed",txid:s})}finally{u=!0}return s}{const e=this.sendConnection.sendRawTransaction(A);if(this.postSendTxCallback)try{this.postSendTxCallback({txid:s})}catch(e){i.warn(`postSendTxCallback error ${e}`)}try{return yield e}catch(e){throw i.error(e),new d.MangoError({message:"Transaction failed",txid:s})}}}))}awaitTransactionSignatureConfirmation(e,t,n,r){return a(this,void 0,void 0,(function*(){const o=r?r.lastValidBlockHeight+d.MAXIMUM_NUMBER_OF_BLOCKS_FOR_TRANSACTION:0;let A=!1,s=!1;const c=["finalized"];let u;"confirmed"===n?c.push("confirmed"):"processed"===n&&(c.push("confirmed"),c.push("processed"));const l=yield new Promise(((n,r)=>{(()=>{a(this,void 0,void 0,(function*(){setTimeout((()=>{s||(0!==o?A=!0:(s=!0,i.log("Timed out for txid: ",e),r({timeout:!0})))}),t);try{u=this.connection.onSignature(e,((e,t)=>{u=void 0,s=!0,e.err?r(e.err):(this.lastSlot=null==t?void 0:t.slot,n(e))}),"processed")}catch(t){s=!0,i.log("WS error in setup",e,t)}for(;!s;)yield(0,d.sleep)(2e3),(()=>{a(this,void 0,void 0,(function*(){var t;try{const a=[this.connection.getSignatureStatuses([e])];A&&a.push(this.connection.getBlockHeight("confirmed"));const[u,l]=yield Promise.all(a);void 0!==typeof l&&o<=l&&(i.log("Timed out for txid: ",e),s=!0,r({timeout:!0}));const g=u&&u.value[0];if(!s){if(!g)return;g.err?(i.log("REST error for",e,g),s=!0,r(g.err)):g.confirmations||c.includes(g.confirmationStatus)?(this.lastSlot=null===(t=null==u?void 0:u.context)||void 0===t?void 0:t.slot,i.log("REST confirmed",e,g),s=!0,n(g)):i.log("REST not confirmed",e,g)}}catch(t){s||i.log("REST connection error: txid",e,t)}}))})()}))})()}));return u&&this.connection.removeSignatureListener(u).catch((e=>{i.log("WS error in cleanup",e)})),s=!0,l}))}initMangoGroup(e,t,n,i,r,o,A,s,c){return a(this,void 0,void 0,(function*(){if(!c.publicKey)return;const a=yield(0,d.createAccountInstruction)(this.connection,c.publicKey,h.MangoGroupLayout.span,this.programId),{signerKey:g,signerNonce:p}=yield(0,d.createSignerKeyAndNonce)(this.programId,a.account.publicKey),f=new u.Keypair,I=yield(0,d.createTokenAccountInstructions)(this.connection,c.publicKey,f.publicKey,e,g),B=new u.Keypair,C=yield(0,d.createTokenAccountInstructions)(this.connection,c.publicKey,B.publicKey,e,g),w=yield(0,d.createAccountInstruction)(this.connection,c.publicKey,h.NodeBankLayout.span,this.programId),E=yield(0,d.createAccountInstruction)(this.connection,c.publicKey,h.RootBankLayout.span,this.programId),Q=yield(0,d.createAccountInstruction)(this.connection,c.publicKey,h.MangoCacheLayout.span,this.programId),b=new u.Transaction;b.add(a.instruction),b.add(...I),b.add(w.instruction),b.add(E.instruction),b.add(Q.instruction),b.add(...C);const k=[a.account,f,w.account,E.account,Q.account,B];let v;if(yield this.sendTransaction(b,c,k),t.equals(d.zeroKey))v=d.zeroKey;else{const e=new u.Keypair,n=yield(0,d.createTokenAccountInstructions)(this.connection,c.publicKey,e.publicKey,t,g),i=new u.Transaction;i.add(...n),v=e.publicKey,yield this.sendTransaction(i,c,[e])}const S=(0,m.makeInitMangoGroupInstruction)(this.programId,a.account.publicKey,g,c.publicKey,e,f.publicKey,w.account.publicKey,E.account.publicKey,B.publicKey,v,i,Q.account.publicKey,n,new l.default(p),new l.default(r),y.I80F48.fromNumber(o),y.I80F48.fromNumber(A),y.I80F48.fromNumber(s)),M=new u.Transaction;return M.add(S),yield this.sendTransaction(M,c,[]),a.account.publicKey}))}getMangoGroup(e){return a(this,void 0,void 0,(function*(){const t=yield this.connection.getAccountInfo(e),n=h.MangoGroupLayout.decode(null==t?void 0:t.data);return new Q.default(e,n)}))}initMangoAccount(e,t){return a(this,void 0,void 0,(function*(){if(!t.publicKey)return;const n=yield(0,d.createAccountInstruction)(this.connection,t.publicKey,h.MangoAccountLayout.span,this.programId),i=(0,m.makeInitMangoAccountInstruction)(this.programId,e.publicKey,n.account.publicKey,t.publicKey),r=new u.Transaction;r.add(n.instruction),r.add(i);const o=[n.account];return yield this.sendTransaction(r,t,o),n.account.publicKey}))}createMangoAccount(e,t,n,i){return a(this,void 0,void 0,(function*(){if(!t.publicKey)return;const r=null!=i?i:t.publicKey,o=new l.default(n),[A]=yield u.PublicKey.findProgramAddress([e.publicKey.toBytes(),t.publicKey.toBytes(),o.toBuffer("le",8)],this.programId),s=(0,m.makeCreateMangoAccountInstruction)(this.programId,e.publicKey,A,t.publicKey,o,r),a=new u.Transaction;return a.add(s),yield this.sendTransaction(a,t,[]),A}))}upgradeMangoAccountV0V1(e,t,n){return a(this,void 0,void 0,(function*(){if(!t.publicKey)return;const i=new l.default(n),[r]=yield u.PublicKey.findProgramAddress([e.publicKey.toBytes(),t.publicKey.toBytes(),i.toBuffer()],this.programId),o=(0,m.makeUpgradeMangoAccountV0V1Instruction)(this.programId,e.publicKey,r,t.publicKey),A=new u.Transaction;return A.add(o),yield this.sendTransaction(A,t,[]),r}))}getMangoAccount(e,t){return a(this,void 0,void 0,(function*(){const n=yield this.connection.getAccountInfo(e,"processed"),i=new p.default(e,h.MangoAccountLayout.decode(null==n?void 0:n.data));return yield i.loadOpenOrders(this.connection,t),i}))}initMangoAccountAndDeposit(e,t,n,i,r,o,A,s){var c;return a(this,void 0,void 0,(function*(){if(!t.publicKey)return;const a=new u.Transaction,l=yield(0,d.createAccountInstruction)(this.connection,t.publicKey,h.MangoAccountLayout.span,this.programId),g=(0,m.makeInitMangoAccountInstruction)(this.programId,e.publicKey,l.account.publicKey,t.publicKey);a.add(l.instruction),a.add(g);const p=[l.account],f=e.getRootBankIndex(n);let I=null;if(e.tokens[f].mint.equals(w.WRAPPED_SOL_MINT)&&o.toBase58()===t.publicKey.toBase58()){I=new u.Keypair;const e=Math.round(A*u.LAMPORTS_PER_SOL)+1e7;a.add(u.SystemProgram.createAccount({fromPubkey:t.publicKey,newAccountPubkey:I.publicKey,lamports:e,space:165,programId:E.TOKEN_PROGRAM_ID})),a.add((0,w.initializeAccount)({account:I.publicKey,mint:w.WRAPPED_SOL_MINT,owner:t.publicKey})),p.push(I)}const y=(0,d.uiToNative)(A,e.tokens[f].decimals),B=(0,m.makeDepositInstruction)(this.programId,e.publicKey,t.publicKey,e.mangoCache,l.account.publicKey,n,i,r,null!==(c=null==I?void 0:I.publicKey)&&void 0!==c?c:o,y);if(a.add(B),s){const n=(0,m.makeAddMangoAccountInfoInstruction)(this.programId,e.publicKey,l.account.publicKey,t.publicKey,s);a.add(n)}return I&&a.add((0,w.closeAccount)({source:I.publicKey,destination:t.publicKey,owner:t.publicKey})),yield this.sendTransaction(a,t,p),l.account.publicKey.toString()}))}createMangoAccountAndDeposit(e,t,n,i,o,A,s,c,g,h,p){var f;return a(this,void 0,void 0,(function*(){if(!t.publicKey)return;const a=new u.Transaction,I=null!=p?p:t.publicKey,y=new l.default(c),[B]=yield u.PublicKey.findProgramAddress([e.publicKey.toBytes(),t.publicKey.toBytes(),y.toArrayLike(r,"le",8)],this.programId),C=(0,m.makeCreateMangoAccountInstruction)(this.programId,e.publicKey,B,t.publicKey,y,I);if(a.add(C),h){const[n]=yield u.PublicKey.findProgramAddress([B.toBytes(),new r("ReferrerMemory","utf-8")],this.programId),i=(0,m.makeSetReferrerMemoryInstruction)(this.programId,e.publicKey,B,t.publicKey,n,h,t.publicKey);a.add(i)}const Q=[],b=e.getRootBankIndex(n);let k=null;if(e.tokens[b].mint.equals(w.WRAPPED_SOL_MINT)&&A.toBase58()===t.publicKey.toBase58()){k=new u.Keypair;const e=Math.round(s*u.LAMPORTS_PER_SOL)+1e7;a.add(u.SystemProgram.createAccount({fromPubkey:t.publicKey,newAccountPubkey:k.publicKey,lamports:e,space:165,programId:E.TOKEN_PROGRAM_ID})),a.add((0,w.initializeAccount)({account:k.publicKey,mint:w.WRAPPED_SOL_MINT,owner:t.publicKey})),Q.push(k)}const v=(0,d.uiToNative)(s,e.tokens[b].decimals),S=(0,m.makeDepositInstruction)(this.programId,e.publicKey,t.publicKey,e.mangoCache,B,n,i,o,null!==(f=null==k?void 0:k.publicKey)&&void 0!==f?f:A,v);if(a.add(S),g){const n=(0,m.makeAddMangoAccountInfoInstruction)(this.programId,e.publicKey,B,t.publicKey,g);a.add(n)}k&&a.add((0,w.closeAccount)({source:k.publicKey,destination:t.publicKey,owner:t.publicKey}));const M=yield this.sendTransaction(a,t,Q);return[B.toString(),M]}))}deposit(e,t,n,i,r,o,A,s){var c;return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const a=new u.Transaction,l=[],g=e.getRootBankIndex(i);let h=null;if(e.tokens[g].mint.equals(w.WRAPPED_SOL_MINT)&&A.toBase58()===n.publicKey.toBase58()){h=new u.Keypair;const e=Math.round(s*u.LAMPORTS_PER_SOL)+1e7;a.add(u.SystemProgram.createAccount({fromPubkey:n.publicKey,newAccountPubkey:h.publicKey,lamports:e,space:165,programId:E.TOKEN_PROGRAM_ID})),a.add((0,w.initializeAccount)({account:h.publicKey,mint:w.WRAPPED_SOL_MINT,owner:n.publicKey})),l.push(h)}const p=(0,d.uiToNative)(s,e.tokens[g].decimals),f=(0,m.makeDepositInstruction)(this.programId,e.publicKey,n.publicKey,e.mangoCache,t.publicKey,i,r,o,null!==(c=null==h?void 0:h.publicKey)&&void 0!==c?c:A,p);return a.add(f),h&&a.add((0,w.closeAccount)({source:h.publicKey,destination:n.publicKey,owner:n.publicKey})),yield this.sendTransaction(a,n,l)}))}withdraw(e,t,n,i,r,o,A,s){return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const a=new u.Transaction,c=[],l=e.getRootBankIndex(i),g=e.tokens[l].mint;let h=yield E.Token.getAssociatedTokenAddress(E.ASSOCIATED_TOKEN_PROGRAM_ID,E.TOKEN_PROGRAM_ID,g,n.publicKey),p=null;if(g.equals(w.WRAPPED_SOL_MINT)){p=new u.Keypair,h=p.publicKey;const e=165,t=yield this.connection.getMinimumBalanceForRentExemption(e,"processed");a.add(u.SystemProgram.createAccount({fromPubkey:n.publicKey,newAccountPubkey:h,lamports:t,space:e,programId:E.TOKEN_PROGRAM_ID})),a.add((0,w.initializeAccount)({account:h,mint:w.WRAPPED_SOL_MINT,owner:n.publicKey})),c.push(p)}else(yield this.connection.getAccountInfo(h))||a.add(E.Token.createAssociatedTokenAccountInstruction(E.ASSOCIATED_TOKEN_PROGRAM_ID,E.TOKEN_PROGRAM_ID,g,h,n.publicKey,n.publicKey));const f=(0,d.uiToNative)(A,e.tokens[l].decimals),I=(0,m.makeWithdrawInstruction)(this.programId,e.publicKey,t.publicKey,n.publicKey,e.mangoCache,i,r,o,h,e.signerKey,t.spotOpenOrders,f,s);return a.add(I),p&&a.add((0,w.closeAccount)({source:p.publicKey,destination:n.publicKey,owner:n.publicKey})),yield this.sendTransaction(a,n,c)}))}withdraw2(e,t,n,i,r,o,A,s){return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const a=new u.Transaction,c=[],l=e.getRootBankIndex(i),g=e.tokens[l].mint;let h=yield E.Token.getAssociatedTokenAddress(E.ASSOCIATED_TOKEN_PROGRAM_ID,E.TOKEN_PROGRAM_ID,g,n.publicKey),p=null;if(g.equals(w.WRAPPED_SOL_MINT)){p=new u.Keypair,h=p.publicKey;const e=165,t=yield this.connection.getMinimumBalanceForRentExemption(e,"processed");a.add(u.SystemProgram.createAccount({fromPubkey:n.publicKey,newAccountPubkey:h,lamports:t,space:e,programId:E.TOKEN_PROGRAM_ID})),a.add((0,w.initializeAccount)({account:h,mint:w.WRAPPED_SOL_MINT,owner:n.publicKey})),c.push(p)}else(yield this.connection.getAccountInfo(h))||a.add(E.Token.createAssociatedTokenAccountInstruction(E.ASSOCIATED_TOKEN_PROGRAM_ID,E.TOKEN_PROGRAM_ID,g,h,n.publicKey,n.publicKey));const f=(0,d.uiToNative)(A,e.tokens[l].decimals),I=(0,m.makeWithdrawInstruction)(this.programId,e.publicKey,t.publicKey,n.publicKey,e.mangoCache,i,r,o,h,e.signerKey,t.spotOpenOrders.filter(((e,n)=>t.inMarginBasket[n])),f,s);return a.add(I),p&&a.add((0,w.closeAccount)({source:p.publicKey,destination:n.publicKey,owner:n.publicKey})),yield this.sendTransaction(a,n,c)}))}withdrawAll(e,t,n){return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const r=[];for(const i of e.rootBankAccounts){const o={transaction:new u.Transaction,signers:[]};if(i){const r=e.getRootBankIndex(null==i?void 0:i.publicKey),A=e.tokens[r].mint;if(t.deposits[r].isPos()){let r=yield E.Token.getAssociatedTokenAddress(E.ASSOCIATED_TOKEN_PROGRAM_ID,E.TOKEN_PROGRAM_ID,A,n.publicKey),s=null;if(A.equals(w.WRAPPED_SOL_MINT)){s=new u.Keypair,r=s.publicKey;const e=165,t=yield this.connection.getMinimumBalanceForRentExemption(e,"processed");o.transaction.add(u.SystemProgram.createAccount({fromPubkey:n.publicKey,newAccountPubkey:r,lamports:t,space:e,programId:E.TOKEN_PROGRAM_ID})),o.transaction.add((0,w.initializeAccount)({account:r,mint:w.WRAPPED_SOL_MINT,owner:n.publicKey})),o.signers.push(s)}else(yield this.connection.getAccountInfo(r,"recent"))||o.transaction.add(E.Token.createAssociatedTokenAccountInstruction(E.ASSOCIATED_TOKEN_PROGRAM_ID,E.TOKEN_PROGRAM_ID,A,r,n.publicKey,n.publicKey));const a=(0,m.makeWithdrawInstruction)(this.programId,e.publicKey,t.publicKey,n.publicKey,e.mangoCache,i.publicKey,i.nodeBanks[0],i.nodeBankAccounts[0].vault,r,e.signerKey,t.spotOpenOrders,new l.default("18446744073709551615"),!1);o.transaction.add(a),s&&o.transaction.add((0,w.closeAccount)({source:s.publicKey,destination:n.publicKey,owner:n.publicKey}))}}r.push(o)}const o=yield this.getCurrentBlockhash(),A=yield this.signTransactions({transactionsAndSigners:r,payer:n,currentBlockhash:o});if(!A)throw new Error("Unable to sign Settle All transaction");for(const e of A){if(0==e.instructions.length)continue;const t=yield this.sendSignedTransaction({signedTransaction:e,signedAtBlock:o});i.log(t)}}))}cacheRootBanks(e,t,n,i){return a(this,void 0,void 0,(function*(){const r=(0,m.makeCacheRootBankInstruction)(this.programId,e,t,n),o=new u.Transaction;return o.add(r),yield this.sendTransaction(o,i,[])}))}cachePrices(e,t,n,i){return a(this,void 0,void 0,(function*(){const r=(0,m.makeCachePricesInstruction)(this.programId,e,t,n),o=new u.Transaction;return o.add(r),yield this.sendTransaction(o,i,[])}))}cachePerpMarkets(e,t,n,i){return a(this,void 0,void 0,(function*(){const r=(0,m.makeCachePerpMarketsInstruction)(this.programId,e,t,n),o=new u.Transaction;return o.add(r),yield this.sendTransaction(o,i,[])}))}updateRootBank(e,t,n,i){return a(this,void 0,void 0,(function*(){const r=(0,m.makeUpdateRootBankInstruction)(this.programId,e.publicKey,e.mangoCache,t,n),o=new u.Transaction;return o.add(r),yield this.sendTransaction(o,i,[])}))}consumeEvents(e,t,n,i,r){return a(this,void 0,void 0,(function*(){const o=(0,m.makeConsumeEventsInstruction)(this.programId,e.publicKey,e.mangoCache,t.publicKey,t.eventQueue,n,r),A=new u.Transaction;return A.add(o),yield this.sendTransaction(A,i,[],null)}))}updateFunding(e,t,n,i,r,o){return a(this,void 0,void 0,(function*(){const A=(0,m.makeUpdateFundingInstruction)(this.programId,e,t,n,i,r),s=new u.Transaction;return s.add(A),yield this.sendTransaction(s,o,[])}))}getPerpMarket(e,t,n){return a(this,void 0,void 0,(function*(){const i=yield this.connection.getAccountInfo(e);return new f.default(e,t,n,h.PerpMarketLayout.decode(null==i?void 0:i.data))}))}placePerpOrder(e,t,n,i,r,o,A,s,c,g=0,d,p,f){return a(this,void 0,void 0,(function*(){if(!r.publicKey)return;const[a,I]=i.uiToNativePriceQuantity(A,s),y=new u.Transaction,B=(0,m.makePlacePerpOrderInstruction)(this.programId,e.publicKey,t.publicKey,r.publicKey,n,i.publicKey,i.bids,i.asks,i.eventQueue,t.spotOpenOrders,a,I,new l.default(g),o,c,p,f);if(y.add(B),d){let n=d.parsed;void 0===n&&(n=d.data?new C.BookSide("buy"===o?i.asks:i.bids,i,h.BookSideLayout.decode(d.data)):[]);const r=new Set;r.add(t.publicKey.toBase58());for(const e of n)if(r.add(e.owner.toBase58()),r.size>=10)break;const A=(0,m.makeConsumeEventsInstruction)(this.programId,e.publicKey,e.mangoCache,i.publicKey,i.eventQueue,Array.from(r).map((e=>new u.PublicKey(e))).sort(),new l.default(4));y.add(A)}return yield this.sendTransaction(y,r,[])}))}placePerpOrder2(e,t,n,i,r,o,A,s){return a(this,void 0,void 0,(function*(){if(!i.publicKey)return;s=s||{};let{maxQuoteQuantity:a,limit:c,orderType:g,clientOrderId:p,bookSideInfo:f,reduceOnly:I,referrerMangoAccountPk:y,expiryTimestamp:B,expiryType:w}=s;c=c||20,p=void 0===p?0:p,g=g||"limit";const[E,Q]=n.uiToNativePriceQuantity(o,A),b=a?n.uiQuoteToLots(a):d.I64_MAX_BN,k=new u.Transaction,v=(0,m.makePlacePerpOrder2Instruction)(this.programId,e.publicKey,t.publicKey,i.publicKey,e.mangoCache,n.publicKey,n.bids,n.asks,n.eventQueue,t.getOpenOrdersKeysInBasketPacked(),E,Q,b,new l.default(p),r,new l.default(c),g,I,y,B?new l.default(Math.floor(B)):d.ZERO_BN,w||"absolute");if(k.add(v),f){let i=f.parsed;void 0===i&&(i=f.data?new C.BookSide("buy"===r?n.asks:n.bids,n,h.BookSideLayout.decode(f.data)):[]);const o=new Set;o.add(t.publicKey.toBase58());for(const e of i)if(o.add(e.owner.toBase58()),o.size>=10)break;if(o.size>1){const t=(0,m.makeConsumeEventsInstruction)(this.programId,e.publicKey,e.mangoCache,n.publicKey,n.eventQueue,Array.from(o).map((e=>new u.PublicKey(e))).sort(),new l.default(4));k.add(t)}}return yield this.sendTransaction(k,i,[])}))}cancelPerpOrder(e,t,n,i,r,o=!1){return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const A=(0,m.makeCancelPerpOrderInstruction)(this.programId,e.publicKey,t.publicKey,n.publicKey,i.publicKey,i.bids,i.asks,r,o),s=new u.Transaction;return s.add(A),yield this.sendTransaction(s,n,[])}))}cancelAllPerpOrders(e,t,n,i,r=!0){return a(this,void 0,void 0,(function*(){if(!i.publicKey)return;let o=new u.Transaction;const A=[],s=new Array(e.perpMarkets.length).fill(!1);for(let e=0;ee.publicKey.equals(c.perpMarket)));if(void 0===g)continue;const d=(0,m.makeCancelAllPerpOrdersInstruction)(this.programId,e.publicKey,n.publicKey,r?i.publicKey:n.owner,g.publicKey,g.bids,g.asks,new l.default(20),r);o.add(d),2===o.instructions.length&&(A.push(o),o=new u.Transaction)}o.instructions.length>0&&A.push(o);const a=A.map((e=>({transaction:e,signers:[]})));if(0===a.length)throw new Error("No orders to cancel");const c=yield this.getCurrentBlockhash(),g=yield this.signTransactions({transactionsAndSigners:a,payer:i,currentBlockhash:c});if(g)return yield Promise.all(g.map((e=>this.sendSignedTransaction({signedTransaction:e,signedAtBlock:c}))));throw new Error("Unable to sign all CancelAllPerpOrders transactions")}))}addOracle(e,t,n){return a(this,void 0,void 0,(function*(){const i=(0,m.makeAddOracleInstruction)(this.programId,e.publicKey,t,n.publicKey),r=new u.Transaction;return r.add(i),yield this.sendTransaction(r,n,[])}))}setOracle(e,t,n,i){return a(this,void 0,void 0,(function*(){const r=(0,m.makeSetOracleInstruction)(this.programId,e.publicKey,t,n.publicKey,i),o=new u.Transaction;return o.add(r),yield this.sendTransaction(o,n,[])}))}addSpotMarket(e,t,n,i,r,o,A,s,c,l,g){return a(this,void 0,void 0,(function*(){const a=new u.Keypair,p=yield(0,d.createTokenAccountInstructions)(this.connection,r.publicKey,a.publicKey,i,e.signerKey),f=yield(0,d.createAccountInstruction)(this.connection,r.publicKey,h.NodeBankLayout.span,this.programId),I=yield(0,d.createAccountInstruction)(this.connection,r.publicKey,h.RootBankLayout.span,this.programId),B=(0,m.makeAddSpotMarketInstruction)(this.programId,e.publicKey,t,n,e.dexProgramId,i,f.account.publicKey,a.publicKey,I.account.publicKey,r.publicKey,y.I80F48.fromNumber(o),y.I80F48.fromNumber(A),y.I80F48.fromNumber(s),y.I80F48.fromNumber(c),y.I80F48.fromNumber(l),y.I80F48.fromNumber(g)),C=new u.Transaction;C.add(...p),C.add(f.instruction),C.add(I.instruction),C.add(B);const w=[a,f.account,I.account];return yield this.sendTransaction(C,r,w)}))}placeSpotOrder(e,t,n,o,A,s,c,g,p,f){return a(this,void 0,void 0,(function*(){if(!A.publicKey)return;const a=o.priceNumberToLots(c),y=o.baseSizeNumberToLots(g),B=(0,I.getFeeTier)(0,(0,d.nativeToUi)(0,0)),C=(0,I.getFeeRates)(B),w=new l.default(o._decoded.quoteLotSize.toNumber()*(1+C.taker)).mul(o.baseSizeNumberToLots(g).mul(o.priceNumberToLots(c)));if(y.lte(d.ZERO_BN))throw new Error("size too small");if(a.lte(d.ZERO_BN))throw new Error("invalid price");f=null!=f?f:new l.default(Date.now());const E=e.getSpotMarketIndex(o.publicKey);e.rootBankAccounts.filter((e=>!!e)).length||(yield e.loadRootBanks(this.connection));const Q=e.rootBankAccounts[E],b=null==Q?void 0:Q.nodeBankAccounts[0],k=e.rootBankAccounts[h.QUOTE_INDEX],v=null==k?void 0:k.nodeBankAccounts[0];if(!(Q&&b&&k&&v))throw new Error("Invalid or missing banks");const S=new u.Transaction,M=[];for(let n=0;n0&&i.log(E-1,t.spotOpenOrders[E-1].toBase58(),M[E-1].pubkey.toBase58());const T=yield this.sendTransaction(S,A,[]);return t.spotOpenOrders[E]=M[E].pubkey,t.inMarginBasket[E]=!0,i.log(E,t.spotOpenOrders[E].toBase58(),M[E].pubkey.toBase58()),T}))}placeSpotOrder2(e,t,n,i,o,A,s,c,g,p){var f;return a(this,void 0,void 0,(function*(){if(!i.publicKey)return;const a=n.priceNumberToLots(A),y=n.baseSizeNumberToLots(s),B=[],C=(0,I.getFeeTier)(0,(0,d.nativeToUi)(0,0)),w=(0,I.getFeeRates)(C),E=new l.default(n._decoded.quoteLotSize.toNumber()*(1+w.taker)).mul(n.baseSizeNumberToLots(s).mul(n.priceNumberToLots(A)));if(y.lte(d.ZERO_BN))throw new Error("size too small");if(a.lte(d.ZERO_BN))throw new Error("invalid price");const Q=e.getSpotMarketIndex(n.publicKey);let k;if(e.rootBankAccounts.filter((e=>!!e)).length||(yield e.loadRootBanks(this.connection)),p)k=e.msrmVault;else if(!1===p)k=e.srmVault;else{const t=yield this.connection.getTokenAccountBalance(e.msrmVault);k=(null===(f=null==t?void 0:t.value)||void 0===f?void 0:f.uiAmount)&&t.value.uiAmount>0?e.msrmVault:e.srmVault}const v=e.rootBankAccounts[Q],S=null==v?void 0:v.nodeBankAccounts[0],M=e.rootBankAccounts[h.QUOTE_INDEX],D=null==M?void 0:M.nodeBankAccounts[0];if(!(v&&S&&M&&D))throw new Error("Invalid or missing banks");const N=new u.Transaction,T=[];let P=d.zeroKey;const O=new u.Transaction;for(let o=0;o({transaction:e,signers:G}))),U=yield this.getCurrentBlockhash(),_=yield this.signTransactions({transactionsAndSigners:x,payer:i,currentBlockhash:U}),L=[];if(!_)throw new Error("Unable to sign Settle All transaction");for(const e of _){if(0==e.instructions.length)continue;const t=yield this.sendSignedTransaction({signedTransaction:e,signedAtBlock:U});L.push(t)}return t.spotOpenOrders[Q]=P,t.inMarginBasket[Q]=!0,L}))}cancelSpotOrder(e,t,n,i,o){return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const A=new u.Transaction,s=(0,m.makeCancelSpotOrderInstruction)(this.programId,e.publicKey,n.publicKey,t.publicKey,i.programId,i.publicKey,i._decoded.bids,i._decoded.asks,o.openOrdersAddress,e.signerKey,i._decoded.eventQueue,o);A.add(s);const a=yield u.PublicKey.createProgramAddress([i.publicKey.toBuffer(),i._decoded.vaultSignerNonce.toArrayLike(r,"le",8)],i.programId),c=e.getSpotMarketIndex(i.publicKey);e.rootBankAccounts.length||(yield e.loadRootBanks(this.connection));const l=e.rootBankAccounts[c],g=e.rootBankAccounts[h.QUOTE_INDEX],d=null==l?void 0:l.nodeBankAccounts[0],p=null==g?void 0:g.nodeBankAccounts[0];if(!d||!p)throw new Error("Invalid or missing node banks");const f=(0,m.makeSettleFundsInstruction)(this.programId,e.publicKey,e.mangoCache,n.publicKey,t.publicKey,i.programId,i.publicKey,t.spotOpenOrders[c],e.signerKey,i._decoded.baseVault,i._decoded.quoteVault,e.tokens[c].rootBank,d.publicKey,e.tokens[h.QUOTE_INDEX].rootBank,p.publicKey,d.vault,p.vault,a);return A.add(f),yield this.sendTransaction(A,n,[])}))}settleFunds(e,t,n,i){return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const o=e.getSpotMarketIndex(i.publicKey),A=yield u.PublicKey.createProgramAddress([i.publicKey.toBuffer(),i._decoded.vaultSignerNonce.toArrayLike(r,"le",8)],i.programId);e.rootBankAccounts.length||(yield e.loadRootBanks(this.connection));const s=e.rootBankAccounts[o],a=e.rootBankAccounts[h.QUOTE_INDEX],c=null==s?void 0:s.nodeBankAccounts[0],l=null==a?void 0:a.nodeBankAccounts[0];if(!c||!l)throw new Error("Invalid or missing node banks");const g=(0,m.makeSettleFundsInstruction)(this.programId,e.publicKey,e.mangoCache,n.publicKey,t.publicKey,i.programId,i.publicKey,t.spotOpenOrders[o],e.signerKey,i._decoded.baseVault,i._decoded.quoteVault,e.tokens[o].rootBank,c.publicKey,e.tokens[h.QUOTE_INDEX].rootBank,l.publicKey,c.vault,l.vault,A),d=new u.Transaction;return d.add(g),yield this.sendTransaction(d,n,[])}))}settleAll(e,t,n,i){return a(this,void 0,void 0,(function*(){if(!i.publicKey)return;const o=[];let A=0;for(let s=0;s({transaction:e,signers:s}))),c=yield this.getCurrentBlockhash(),l=yield this.signTransactions({transactionsAndSigners:a,payer:i,currentBlockhash:c}),g=[];if(!l)throw new Error("Unable to sign Settle All transaction");for(const e of l){if(0==e.instructions.length)continue;const t=yield this.sendSignedTransaction({signedTransaction:e,signedAtBlock:c});g.push(t)}return g}))}fetchTopPnlAccountsFromRPC(e,t,n,i,r,o){return a(this,void 0,void 0,(function*(){const A=e.getPerpMarketIndex(n.publicKey),s=e.perpMarkets[A];return void 0===o&&(o=yield this.getAllMangoAccounts(e,[],!1)),o.map((e=>({publicKey:e.publicKey,pnl:e.perpAccounts[A].getPnl(s,t.perpMarketCache[A],i)}))).sort(((e,t)=>r*e.pnl.cmp(t.pnl)))}))}fetchTopPnlAccountsFromDB(e,t,n){return a(this,void 0,void 0,(function*(){const i=e.getPerpMarketIndex(t.publicKey),r=1===n?"ASC":"DESC",o=yield(0,g.default)(`https://mango-transaction-log.herokuapp.com/v3/stats/ranked-pnl?market-index=${i}&order=${r}&limit=20`);return(yield o.json()).map((e=>({publicKey:new u.PublicKey(e.pubkey),pnl:y.I80F48.fromNumber(e.pnl)})))}))}settlePnl(e,t,n,r,o,A,s,c){return a(this,void 0,void 0,(function*(){const a=e.getPerpMarketIndex(r.publicKey),g=e.perpMarkets[a];let d=n.perpAccounts[a].getPnl(g,t.perpMarketCache[a],A);const h=new u.Transaction,p=[];let f,I;if(d.eq(y.ZERO_I80F48))return null;if(d.gt(y.ZERO_I80F48))f=1;else{f=-1,o.nodeBankAccounts||(yield o.loadNodeBanks(this.connection));const i=(0,m.makeSettleFeesInstruction)(this.programId,e.publicKey,t.publicKey,r.publicKey,n.publicKey,o.publicKey,o.nodeBanks[0],o.nodeBankAccounts[0].vault,e.feesVault,e.signerKey);if(h.add(i),d=d.add(r.feesAccrued).min(y.I80F48.fromString("-0.000001")),(d.gt(y.ZERO_I80F48)?1:-1)!==f)return yield this.sendTransaction(h,s,p)}if(this.isMainnet())try{I=yield this.fetchTopPnlAccountsFromDB(e,r,f)}catch(e){i.error(`fetchTopPnlAccountsFromDB failed, ${e}`)}I||(I=yield this.fetchTopPnlAccountsFromRPC(e,t,r,A,f,c));for(const t of I)if(!t.publicKey.equals(n.publicKey)&&(d.isPos()&&t.pnl.isNeg()||d.isNeg()&&t.pnl.isPos())&&h.instructions.length<10){const i=(0,m.makeSettlePnlInstruction)(this.programId,e.publicKey,n.publicKey,t.publicKey,e.mangoCache,o.publicKey,o.nodeBanks[0],new l.default(a));if(h.add(i),d=d.add(t.pnl),(d.gt(y.ZERO_I80F48)?1:-1)!==f)break}return yield this.sendTransaction(h,s,p)}))}settlePosPnl(e,t,n,i,r,o,A){return a(this,void 0,void 0,(function*(){void 0!==A||this.isMainnet()||(A=yield this.getAllMangoAccounts(e,[],!1));const s=yield Promise.all(i.map((i=>{const s=e.getPerpMarketIndex(i.publicKey),a=e.perpMarkets[s],c=t.getPrice(s);return n.perpAccounts[s].getPnl(a,t.perpMarketCache[s],c).isPos()?this.settlePnl(e,t,n,i,r,t.getPrice(s),o,A):(0,d.promiseNull)()}))),a=null==s?void 0:s.filter((function(e){return null!==e}));return(null==a?void 0:a.length)?a:void 0}))}settleAllPerpPnl(e,t,n,i,r,o,A){return a(this,void 0,void 0,(function*(){return void 0!==A||this.isMainnet()||(A=yield this.getAllMangoAccounts(e,[],!1)),yield Promise.all(i.map((i=>{const s=e.getPerpMarketIndex(i.publicKey),a=e.perpMarkets[s],c=t.getPrice(s);return n.perpAccounts[s].getPnl(a,t.perpMarketCache[s],c).isZero()?(0,d.promiseNull)():this.settlePnl(e,t,n,i,r,t.getPrice(s),o,A)})))}))}getMangoAccountsForOwner(e,t,n=!1){const i=[{memcmp:{offset:h.MangoAccountLayout.offsetOf("owner"),bytes:t.toBase58()}}];return this.getAllMangoAccounts(e,i,n)}getMangoAccountsForDelegate(e,t,n=!1){const i=[{memcmp:{offset:h.MangoAccountLayout.offsetOf("delegate"),bytes:t.toBase58()}}];return this.getAllMangoAccounts(e,i,n)}getAllMangoAccounts(e,t,n=!0){return a(this,void 0,void 0,(function*(){const i=[{memcmp:{offset:h.MangoAccountLayout.offsetOf("mangoGroup"),bytes:e.publicKey.toBase58()}},{dataSize:h.MangoAccountLayout.span}];t&&t.length&&i.push(...t);const r=yield(0,d.getFilteredProgramAccounts)(this.connection,this.programId,i).then((e=>e.map((({publicKey:e,accountInfo:t})=>new p.default(e,h.MangoAccountLayout.decode(null==t?void 0:t.data))))));if(n){const t=r.map((e=>e.spotOpenOrders.filter((e=>!e.equals(d.zeroKey))))).flat(),n=(yield(0,d.getMultipleAccounts)(this.connection,t)).map((({publicKey:t,accountInfo:n})=>I.OpenOrders.fromAccountInfo(t,n,e.dexProgramId))),i={};n.forEach((e=>{i[e.publicKey.toBase58()]=e}));for(const e of r)for(let t=0;tt.mngoAccrued.eq(d.ZERO_BN)?(0,d.promiseUndef)():this.getPerpMarket(e.perpMarkets[n].perpMarket,e.tokens[n].decimals,e.tokens[h.QUOTE_INDEX].decimals))));for(let c=0;c0&&A.push(s);const c=A.map((e=>({transaction:e,signers:[]})));if(0===c.length)throw new Error("No MNGO rewards to redeem");const l=yield this.getCurrentBlockhash(),g=yield this.signTransactions({transactionsAndSigners:c,payer:n,currentBlockhash:l});if(g)return yield Promise.all(g.map((e=>this.sendSignedTransaction({signedTransaction:e,signedAtBlock:l}))));throw new Error("Unable to sign all RedeemMngo transactions")}))}addMangoAccountInfo(e,t,n,i){return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const r=(0,m.makeAddMangoAccountInfoInstruction)(this.programId,e.publicKey,t.publicKey,n.publicKey,i),o=new u.Transaction;return o.add(r),yield this.sendTransaction(o,n,[])}))}depositMsrm(e,t,n,i,r){return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const o=(0,m.makeDepositMsrmInstruction)(this.programId,e.publicKey,t.publicKey,n.publicKey,i,e.msrmVault,new l.default(Math.floor(r))),A=new u.Transaction;return A.add(o),yield this.sendTransaction(A,n,[])}))}withdrawMsrm(e,t,n,i,r){return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const o=(0,m.makeWithdrawMsrmInstruction)(this.programId,e.publicKey,t.publicKey,n.publicKey,i,e.msrmVault,e.signerKey,new l.default(Math.floor(r))),A=new u.Transaction;return A.add(o),yield this.sendTransaction(A,n,[])}))}changePerpMarketParams(e,t,n,i,r,o,A,s,c,g,d,h,p){return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const a=(0,m.makeChangePerpMarketParamsInstruction)(this.programId,e.publicKey,t.publicKey,n.publicKey,y.I80F48.fromNumberOrUndef(i),y.I80F48.fromNumberOrUndef(r),y.I80F48.fromNumberOrUndef(o),y.I80F48.fromNumberOrUndef(A),y.I80F48.fromNumberOrUndef(s),y.I80F48.fromNumberOrUndef(c),y.I80F48.fromNumberOrUndef(g),void 0!==d?new l.default(d):void 0,void 0!==h?new l.default(h):void 0,void 0!==p?new l.default(p):void 0),f=new u.Transaction;return f.add(a),yield this.sendTransaction(f,n,[])}))}changePerpMarketParams2(e,t,n,i,r,o,A,s,c,g,d,h,p,f,I){return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const a=(0,m.makeChangePerpMarketParams2Instruction)(this.programId,e.publicKey,t.publicKey,n.publicKey,y.I80F48.fromNumberOrUndef(i),y.I80F48.fromNumberOrUndef(r),y.I80F48.fromNumberOrUndef(o),y.I80F48.fromNumberOrUndef(A),y.I80F48.fromNumberOrUndef(s),y.I80F48.fromNumberOrUndef(c),y.I80F48.fromNumberOrUndef(g),void 0!==d?new l.default(d):void 0,void 0!==h?new l.default(h):void 0,void 0!==p?new l.default(p):void 0,void 0!==f?new l.default(f):void 0,void 0!==I?new l.default(I):void 0),B=new u.Transaction;return B.add(a),yield this.sendTransaction(B,n,[])}))}setGroupAdmin(e,t,n){return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const i=(0,m.makeSetGroupAdminInstruction)(this.programId,e.publicKey,t,n.publicKey),r=new u.Transaction;return r.add(i),yield this.sendTransaction(r,n,[])}))}modifySpotOrder(e,t,n,o,A,s,c,g,p,f){return a(this,void 0,void 0,(function*(){if(!A.publicKey)return;const a=new u.Transaction,y=(0,m.makeCancelSpotOrderInstruction)(this.programId,e.publicKey,A.publicKey,t.publicKey,o.programId,o.publicKey,o._decoded.bids,o._decoded.asks,s.openOrdersAddress,e.signerKey,o._decoded.eventQueue,s);a.add(y);const B=yield u.PublicKey.createProgramAddress([o.publicKey.toBuffer(),o._decoded.vaultSignerNonce.toArrayLike(r,"le",8)],o.programId),C=e.getSpotMarketIndex(o.publicKey);e.rootBankAccounts.length||(yield e.loadRootBanks(this.connection));const w=e.rootBankAccounts[C],E=null==w?void 0:w.nodeBankAccounts[0],Q=e.rootBankAccounts[h.QUOTE_INDEX],b=null==Q?void 0:Q.nodeBankAccounts[0];if(!E||!b)throw new Error("Invalid or missing node banks");const k=(0,m.makeSettleFundsInstruction)(this.programId,e.publicKey,e.mangoCache,A.publicKey,t.publicKey,o.programId,o.publicKey,t.spotOpenOrders[C],e.signerKey,o._decoded.baseVault,o._decoded.quoteVault,e.tokens[C].rootBank,E.publicKey,e.tokens[h.QUOTE_INDEX].rootBank,b.publicKey,E.vault,b.vault,B);a.add(k);const v=o.priceNumberToLots(g),S=o.baseSizeNumberToLots(p),M=(0,I.getFeeTier)(0,(0,d.nativeToUi)(0,0)),D=(0,I.getFeeRates)(M),N=new l.default(o._decoded.quoteLotSize.toNumber()*(1+D.taker)).mul(o.baseSizeNumberToLots(p).mul(o.priceNumberToLots(g)));if(S.lte(d.ZERO_BN))throw new Error("size too small");if(v.lte(d.ZERO_BN))throw new Error("invalid price");if(!(w&&E&&Q&&b))throw new Error("Invalid or missing banks");const T=[];for(let n=0;n0&&i.log(C-1,t.spotOpenOrders[C-1].toBase58(),T[C-1].pubkey.toBase58());const O=yield this.sendTransaction(a,A,[]);return t.spotOpenOrders[C]=T[C].pubkey,t.inMarginBasket[C]=!0,i.log(C,t.spotOpenOrders[C].toBase58(),T[C].pubkey.toBase58()),O}))}modifyPerpOrder(e,t,n,i,r,o,A,s,c,g,d,p,f=!1,I){var y;return a(this,void 0,void 0,(function*(){if(!r.publicKey)return;const a=new u.Transaction,B=(0,m.makeCancelPerpOrderInstruction)(this.programId,e.publicKey,t.publicKey,r.publicKey,i.publicKey,i.bids,i.asks,o,f);a.add(B);const[w,E]=i.uiToNativePriceQuantity(s,c),Q=(0,m.makePlacePerpOrderInstruction)(this.programId,e.publicKey,t.publicKey,r.publicKey,n,i.publicKey,i.bids,i.asks,i.eventQueue,t.spotOpenOrders,w,E,d?new l.default(d):null!==(y=o.clientId)&&void 0!==y?y:new l.default(Date.now()),A,g,!1,I);if(a.add(Q),p){const n=p.data?new C.BookSide("buy"===A?i.asks:i.bids,i,h.BookSideLayout.decode(p.data)):[],r=new Set;r.add(t.publicKey.toBase58());for(const e of n)if(r.add(e.owner.toBase58()),r.size>=10)break;const o=(0,m.makeConsumeEventsInstruction)(this.programId,e.publicKey,e.mangoCache,i.publicKey,i.eventQueue,Array.from(r).map((e=>new u.PublicKey(e))).sort(),new l.default(4));a.add(o)}return yield this.sendTransaction(a,r,[])}))}addPerpTriggerOrder(e,t,n,r,o,A,s,c,g,p,f,I){return a(this,void 0,void 0,(function*(){if(!r.publicKey)return;const a=new u.Transaction;let B=t.advancedOrdersKey;t.advancedOrdersKey.equals(d.zeroKey)&&([B]=yield u.PublicKey.findProgramAddress([t.publicKey.toBytes()],this.programId),i.log("AdvancedOrders PDA:",B.toBase58()),a.add((0,m.makeInitAdvancedOrdersInstruction)(this.programId,e.publicKey,t.publicKey,r.publicKey,B)));const C=e.getPerpMarketIndex(n.publicKey),w=e.tokens[C],E=e.tokens[h.QUOTE_INDEX],Q=Math.pow(10,w.decimals),b=Math.pow(10,E.decimals),k=new l.default(s*b).mul(n.baseLotSize).div(n.quoteLotSize.mul(new l.default(Q))),v=new l.default(c*Q).div(n.baseLotSize),S=y.I80F48.fromNumber(p*Math.pow(10,n.quoteDecimals-n.baseDecimals)),M=t.spotOpenOrders.filter(((e,n)=>t.inMarginBasket[n]));a.add((0,m.makeAddPerpTriggerOrderInstruction)(this.programId,e.publicKey,t.publicKey,r.publicKey,B,e.mangoCache,n.publicKey,M,o,A,k,v,g,S,f,new l.default(null!=I?I:Date.now())));const D=yield this.sendTransaction(a,r,[]);return t.advancedOrdersKey=B,D}))}removeAdvancedOrder(e,t,n,i){return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const r=(0,m.makeRemoveAdvancedOrderInstruction)(this.programId,e.publicKey,t.publicKey,n.publicKey,t.advancedOrdersKey,i),o=new u.Transaction;return o.add(r),yield this.sendTransaction(o,n,[])}))}executePerpTriggerOrder(e,t,n,i,r,o){return a(this,void 0,void 0,(function*(){if(!r.publicKey)return;const A=t.spotOpenOrders.filter(((e,n)=>t.inMarginBasket[n])),s=(0,m.makeExecutePerpTriggerOrderInstruction)(this.programId,e.publicKey,t.publicKey,t.advancedOrdersKey,r.publicKey,n.publicKey,i.publicKey,i.bids,i.asks,i.eventQueue,A,new l.default(o)),a=new u.Transaction;return a.add(s),yield this.sendTransaction(a,r,[])}))}closeAdvancedOrders(e,t,n){return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const i=(0,m.makeCloseAdvancedOrdersInstruction)(this.programId,e.publicKey,t.publicKey,n.publicKey,t.advancedOrdersKey),r=new u.Transaction;return r.add(i),yield this.sendTransaction(r,n,[])}))}closeSpotOpenOrders(e,t,n,i,r=!0){return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const o=(0,m.makeCloseSpotOpenOrdersInstruction)(this.programId,e.publicKey,t.publicKey,r?n.publicKey:t.owner,e.dexProgramId,t.spotOpenOrders[i],e.spotMarkets[i].spotMarket,e.signerKey,r),A=new u.Transaction;return A.add(o),yield this.sendTransaction(A,n,[])}))}closeMangoAccount(e,t,n){return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const i=(0,m.makeCloseMangoAccountInstruction)(this.programId,e.publicKey,t.publicKey,n.publicKey),r=new u.Transaction;return r.add(i),yield this.sendTransaction(r,n,[])}))}createDustAccount(e,t){return a(this,void 0,void 0,(function*(){if(!t.publicKey)return;const[n]=yield u.PublicKey.findProgramAddress([e.publicKey.toBytes(),new r("DustAccount","utf-8")],this.programId),i=(0,m.makeCreateDustAccountInstruction)(this.programId,e.publicKey,n,t.publicKey),o=new u.Transaction;return o.add(i),yield this.sendTransaction(o,t,[])}))}resolveDust(e,t,n,i,o){return a(this,void 0,void 0,(function*(){if(!o.publicKey)return;const[A]=yield u.PublicKey.findProgramAddress([e.publicKey.toBytes(),new r("DustAccount","utf-8")],this.programId),s=(0,m.makeResolveDustInstruction)(this.programId,e.publicKey,t.publicKey,o.publicKey,A,n.publicKey,n.nodeBanks[0],i.publicKey),a=new u.Transaction;return a.add(s),yield this.sendTransaction(a,o,[])}))}updateMarginBasket(e,t,n){return a(this,void 0,void 0,(function*(){const i=(0,m.makeUpdateMarginBasketInstruction)(this.programId,e.publicKey,t.publicKey,t.spotOpenOrders),r=new u.Transaction;return r.add(i),yield this.sendTransaction(r,n,[])}))}resolveAllDust(e,t,n,o){return a(this,void 0,void 0,(function*(){if(!o.publicKey)return;const A=[],[s]=yield u.PublicKey.findProgramAddress([e.publicKey.toBytes(),new r("DustAccount","utf-8")],this.programId);for(const r of e.rootBankAccounts){const a={transaction:new u.Transaction,signers:[]};if(r){const A=e.getRootBankIndex(null==r?void 0:r.publicKey),c=t.getNativeDeposit(r,A),u=t.getNativeBorrow(r,A);if(i.log("nativeDeposit",c.toString()),i.log("nativeBorrow",u.toString()),i.log("tokenIndex",A.toString()),c.gt(y.ZERO_I80F48)&&c.lt(y.ONE_I80F48)||u.gt(y.ZERO_I80F48)&&u.lt(y.ONE_I80F48)){const i=(0,m.makeResolveDustInstruction)(this.programId,e.publicKey,t.publicKey,o.publicKey,s,r.publicKey,r.nodeBanks[0],n.publicKey);a.transaction.add(i)}}A.push(a)}const a=yield this.getCurrentBlockhash(),c=yield this.signTransactions({transactionsAndSigners:A,payer:o,currentBlockhash:a});if(!c)throw new Error("Unable to sign ResolveDust transactions");for(const e of c){if(0==e.instructions.length)continue;const t=yield this.sendSignedTransaction({signedTransaction:e,signedAtBlock:a});i.log(t)}}))}emptyAndCloseMangoAccount(e,t,n,o,A){return a(this,void 0,void 0,(function*(){if(!A.publicKey)return;const s=[],a={transaction:new u.Transaction,signers:[]},c=e.rootBankAccounts[o],l=yield Promise.all(t.perpAccounts.map(((t,n)=>t.mngoAccrued.eq(d.ZERO_BN)?(0,d.promiseUndef)():this.getPerpMarket(e.perpMarkets[n].perpMarket,e.tokens[n].decimals,e.tokens[h.QUOTE_INDEX].decimals))));let g=!1;for(let n=0;n0&&s.push(a);const p={transaction:new u.Transaction,signers:[]},[f]=yield u.PublicKey.findProgramAddress([e.publicKey.toBytes(),new r("DustAccount","utf-8")],this.programId);for(const i of e.rootBankAccounts)if(i){const r=e.getRootBankIndex(null==i?void 0:i.publicKey),a=e.tokens[r].mint,c=g&&r===o;if(t.deposits[r].isPos()||c){const n={transaction:new u.Transaction,signers:[]};let r=yield E.Token.getAssociatedTokenAddress(E.ASSOCIATED_TOKEN_PROGRAM_ID,E.TOKEN_PROGRAM_ID,a,A.publicKey),o=null;if(a.equals(w.WRAPPED_SOL_MINT)){o=new u.Keypair,r=o.publicKey;const e=165,t=yield this.connection.getMinimumBalanceForRentExemption(e,"processed");n.transaction.add(u.SystemProgram.createAccount({fromPubkey:A.publicKey,newAccountPubkey:r,lamports:t,space:e,programId:E.TOKEN_PROGRAM_ID})),n.transaction.add((0,w.initializeAccount)({account:r,mint:w.WRAPPED_SOL_MINT,owner:A.publicKey})),n.signers.push(o)}else(yield this.connection.getAccountInfo(r,"processed"))||n.transaction.add(E.Token.createAssociatedTokenAccountInstruction(E.ASSOCIATED_TOKEN_PROGRAM_ID,E.TOKEN_PROGRAM_ID,a,r,A.publicKey,A.publicKey));const c=(0,m.makeWithdrawInstruction)(this.programId,e.publicKey,t.publicKey,A.publicKey,e.mangoCache,i.publicKey,i.nodeBanks[0],i.nodeBankAccounts[0].vault,r,e.signerKey,t.spotOpenOrders,d.U64_MAX_BN,!1);n.transaction.add(c),o&&n.transaction.add((0,w.closeAccount)({source:o.publicKey,destination:A.publicKey,owner:A.publicKey})),s.push(n)}const l=t.getNativeBorrow(n.rootBankCache[r],r);if(c||t.deposits[r].isPos()||l.gt(y.ZERO_I80F48)&&l.lt(y.ONE_I80F48)){const r=(0,m.makeResolveDustInstruction)(this.programId,e.publicKey,t.publicKey,A.publicKey,f,i.publicKey,i.nodeBanks[0],n.publicKey);p.transaction.add(r)}}s.push(p);const I={transaction:new u.Transaction,signers:[]};for(let n=0;nh.INFO_LEN)throw new Error(`info string too long. Must be less than or equal to ${h.INFO_LEN} bytes`);const i=r.concat([n,r.alloc(h.INFO_LEN-n.length,0)]),[o]=yield u.PublicKey.findProgramAddress([e.publicKey.toBytes(),new r("ReferrerIdRecord","utf-8"),i],this.programId);return{referrerPda:o,encodedReferrerId:i}}))}registerReferrerId(e,t,n,i){return a(this,void 0,void 0,(function*(){if(!n.publicKey)return;const{referrerPda:r,encodedReferrerId:o}=yield this.getReferrerPda(e,i),A=(0,m.makeRegisterReferrerIdInstruction)(this.programId,e.publicKey,t.publicKey,r,n.publicKey,o),s=new u.Transaction;return s.add(A),yield this.sendTransaction(s,n,[])}))}getReferrerIdsForMangoAccount(e){return a(this,void 0,void 0,(function*(){const t=[{memcmp:{offset:k.ReferrerIdRecordLayout.offsetOf("referrerMangoAccount"),bytes:e.publicKey.toBase58()}},{dataSize:k.ReferrerIdRecordLayout.span}];return yield(0,d.getFilteredProgramAccounts)(this.connection,this.programId,t).then((e=>e.map((({accountInfo:e})=>new k.ReferrerIdRecord(k.ReferrerIdRecordLayout.decode(null==e?void 0:e.data))))))}))}cancelAllSpotOrders(e,t,n,o,A,s=!0){return a(this,void 0,void 0,(function*(){if(!o.publicKey)return;const a=e.getSpotMarketIndex(n.address),c=e.rootBankAccounts[a],g=e.rootBankAccounts[h.QUOTE_INDEX];if(null==c||null==g)return void i.log("A root bank is null");const d=yield c.loadNodeBanks(this.connection),p=yield g.loadNodeBanks(this.connection),f=e.getSpotMarketIndex(n.publicKey),I=yield u.PublicKey.createProgramAddress([n.publicKey.toBuffer(),n._decoded.vaultSignerNonce.toArrayLike(r,"le",8)],n.programId),y=(0,m.makeCancelAllSpotOrdersInstruction)(this.programId,e.publicKey,e.mangoCache,t.publicKey,s?o.publicKey:t.owner,c.publicKey,d[0].publicKey,d[0].vault,g.publicKey,p[0].publicKey,p[0].vault,n.publicKey,n.bidsAddress,n.asksAddress,t.spotOpenOrders[f],e.signerKey,n._decoded.eventQueue,n._decoded.baseVault,n._decoded.quoteVault,I,e.dexProgramId,new l.default(A),s),B=new u.Transaction;return B.add(y),yield this.sendTransaction(B,o,[])}))}ensureOpenOrdersAccount(e,t,n,o,A){return a(this,void 0,void 0,(function*(){if(e.spotOpenOrdersAccounts[A.marketIndex])return;const[s]=yield u.PublicKey.findProgramAddress([e.publicKey.toBytes(),new l.default(A.marketIndex).toArrayLike(r,"le",8),new r("OpenOrders","utf-8")],this.programId),a=(0,b.makeCreateSpotOpenOrdersInstruction)(this.programId,t.publicKey,e.publicKey,n.publicKey,t.dexProgramId,s,o.publicKey,t.signerKey),c=yield this.connection.getLatestBlockhash("finalized"),g=new u.Transaction({recentBlockhash:c.blockhash,feePayer:n.publicKey});g.add(a),g.sign(n);try{yield this.sendSignedTransaction({signedTransaction:g,signedAtBlock:c})}catch(e){i.error(e)}yield e.reload(this.connection,t.dexProgramId)}))}isMainnet(){var e;let t=null===(e=this.connection._rpcEndpoint)||void 0===e?void 0:e.toLowerCase();return t&&!t.includes("devnet")&&!t.includes("testnet")&&!t.includes("localhost")}}},75710:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Config=t.getTokenBySymbol=t.getTokenByMint=t.getMarketByPublicKey=t.getMarketByBaseSymbolAndKind=t.getAllMarkets=t.getSpotMarketByBaseSymbol=t.getPerpMarketByIndex=t.getPerpMarketByBaseSymbol=t.getOracleBySymbol=t.getMarketIndexBySymbol=t.getOracleConfig=t.getTokenConfig=t.getPerpMarketConfig=t.getSpotMarketConfig=t.delistedOracles=t.delistedTokens=t.delistedPerpMarkets=t.delistedSpotMarkets=t.mngoMints=t.msrmMints=void 0;const r=n(97212),o=i(n(44903)),A=n(27614);function s(e,n){let i=e.spotMarkets.find(n);return i||(i=t.delistedSpotMarkets.find(n)),i}function a(e,n){let i=e.perpMarkets.find(n);return i||(i=t.delistedPerpMarkets.find(n)),i}function c(e,n){let i=e.tokens.find(n);return i||(i=t.delistedTokens.find(n)),i}function u(e,n){let i=e.oracles.find(n);return i||(i=t.delistedOracles.find(n)),i}function l(e,t){return a(e,(e=>e.baseSymbol===t))}function g(e,t){return s(e,(e=>e.baseSymbol===t))}t.msrmMints={devnet:new r.PublicKey("8DJBo4bF4mHNxobjdax3BL9RMh5o71Jf8UiKsf5C5eVH"),mainnet:new r.PublicKey("MSRMcoVyrFxnSgo5uXwone5SKcGhT1KEJMFEkMEWf9L"),localnet:A.zeroKey,testnet:new r.PublicKey("3Ho7PN3bYv9bp1JDErBD2FxsRepPkL88vju3oDX9c3Ez")},t.mngoMints={devnet:new r.PublicKey("Bb9bsTQa1bGEtQ5KagGkvSHyuLqDWumFUcRqFusFNJWC"),mainnet:new r.PublicKey("MangoCzJ36AjZyKwVj3VnYU4GTonjfVEnJmvvWaxLac"),testnet:new r.PublicKey("2hvukwp4UR9tqmCQhRzcsW9S2QBuU5Xcv5JJ5fUMmfvQ")},t.delistedSpotMarkets=[{publicKey:new r.PublicKey("HBTu8hNaoT3VyiSSzJYa8jwt9sDGKtJviSwFa11iXdmE"),name:"LUNA/USDC",baseSymbol:"LUNA",baseDecimals:6,marketIndex:13},{publicKey:new r.PublicKey("6fc7v3PmjZG9Lk2XTot6BywGyYLkBQuzuFKd4FpCsPxk"),name:"COPE/USDC",baseSymbol:"COPE",baseDecimals:6,marketIndex:7},{publicKey:new r.PublicKey("3zzTxtDCt9PimwzGrgWJEbxZfSLetDMkdYegPanGNpMf"),name:"BNB/USDC",baseSymbol:"BNB",baseDecimals:8,marketIndex:11}],t.delistedPerpMarkets=[{publicKey:new r.PublicKey("BCJrpvsB2BJtqiDgKVC4N6gyX1y24Jz96C6wMraYmXss"),name:"LUNA-PERP",baseSymbol:"LUNA",baseDecimals:6,quoteDecimals:6,marketIndex:13}],t.delistedTokens=[{mintKey:new r.PublicKey("F6v4wfAdJB8D8p77bMXZgYt8TDKsYxLYxH5AFhUkYx9W"),symbol:"LUNA",decimals:6},{mintKey:new r.PublicKey("8HGyAAB1yoM1ttS7pXjHMa3dukTFGQggnFFH3hJZgzQh"),symbol:"COPE",decimals:6}],t.delistedOracles=[{publicKey:new r.PublicKey("5bmWuR1dgP4avtGYMNKLuxumZTVKGgoN2BCMXWDNL9nY"),symbol:"LUNA",marketIndex:13},{publicKey:new r.PublicKey("9xYBiDWYsh2fHzpsz3aaCnNHCKWBNtfEDLtU6kS4aFD9"),symbol:"COPE",marketIndex:7}],t.getSpotMarketConfig=s,t.getPerpMarketConfig=a,t.getTokenConfig=c,t.getOracleConfig=u,t.getMarketIndexBySymbol=function(e,t){let n=e.oracles.findIndex((e=>e.symbol===t));if(-1===n){const i=u(e,(e=>e.symbol===t));n=i?i.marketIndex:-1}return n},t.getOracleBySymbol=function(e,t){return u(e,(e=>e.symbol===t))},t.getPerpMarketByBaseSymbol=l,t.getPerpMarketByIndex=function(e,t){return a(e,(e=>e.marketIndex===t))},t.getSpotMarketByBaseSymbol=g,t.getAllMarkets=function(e){const t=e.spotMarkets.map((e=>Object.assign({kind:"spot"},e))),n=e.perpMarkets.map((e=>Object.assign({kind:"perp"},e)));return t.concat(n)},t.getMarketByBaseSymbolAndKind=function(e,t,n){const i="spot"===n?g(e,t):l(e,t);return Object.assign({kind:n},i)},t.getMarketByPublicKey=function(e,t){t instanceof r.PublicKey||(t=new r.PublicKey(t));const n=s(e,(e=>e.publicKey.equals(t)));if(n)return Object.assign({kind:"spot"},n);const i=a(e,(e=>e.publicKey.equals(t)));return i?Object.assign({kind:"perp"},i):void 0},t.getTokenByMint=function(e,t){return t instanceof r.PublicKey||(t=new r.PublicKey(t)),c(e,(e=>e.mintKey.equals(t)))},t.getTokenBySymbol=function(e,t){const n=c(e,(e=>e.symbol===t));if(void 0===n)throw new Error(`Unable to find symbol: ${t} in GroupConfig`);return n};class d{constructor(e){this.cluster_urls=e.cluster_urls,this.groups=e.groups.map((e=>{return t=e,Object.assign(Object.assign({},t),{publicKey:new r.PublicKey(t.publicKey),mangoProgramId:new r.PublicKey(t.mangoProgramId),serumProgramId:new r.PublicKey(t.serumProgramId),oracles:t.oracles.map((e=>function(e){return Object.assign(Object.assign({},e),{publicKey:new r.PublicKey(e.publicKey)})}(e))),perpMarkets:t.perpMarkets.map((e=>function(e){return Object.assign(Object.assign({},e),{publicKey:new r.PublicKey(e.publicKey),bidsKey:new r.PublicKey(e.bidsKey),asksKey:new r.PublicKey(e.asksKey),eventsKey:new r.PublicKey(e.eventsKey)})}(e))),spotMarkets:t.spotMarkets.map((e=>function(e){return Object.assign(Object.assign({},e),{publicKey:new r.PublicKey(e.publicKey),bidsKey:new r.PublicKey(e.bidsKey),asksKey:new r.PublicKey(e.asksKey),eventsKey:new r.PublicKey(e.eventsKey)})}(e))),tokens:t.tokens.map((e=>function(e){return Object.assign(Object.assign({},e),{mintKey:new r.PublicKey(e.mintKey),rootKey:new r.PublicKey(e.rootKey),nodeKeys:e.nodeKeys.map((e=>new r.PublicKey(e)))})}(e)))});var t}))}static ids(){return h}toJson(){return Object.assign(Object.assign({},this),{groups:this.groups.map((e=>function(e){return Object.assign(Object.assign({},e),{publicKey:e.publicKey.toBase58(),mangoProgramId:e.mangoProgramId.toBase58(),serumProgramId:e.serumProgramId.toBase58(),oracles:e.oracles.map((e=>function(e){return Object.assign(Object.assign({},e),{publicKey:e.publicKey.toBase58()})}(e))),perpMarkets:e.perpMarkets.map((e=>function(e){return Object.assign(Object.assign({},e),{publicKey:e.publicKey.toBase58(),bidsKey:e.bidsKey.toBase58(),asksKey:e.asksKey.toBase58(),eventsKey:e.eventsKey.toBase58()})}(e))),spotMarkets:e.spotMarkets.map((e=>function(e){return Object.assign(Object.assign({},e),{publicKey:e.publicKey.toBase58(),bidsKey:e.bidsKey.toBase58(),asksKey:e.asksKey.toBase58(),eventsKey:e.eventsKey.toBase58()})}(e))),tokens:e.tokens.map((e=>function(e){return Object.assign(Object.assign({},e),{mintKey:e.mintKey.toBase58(),rootKey:e.rootKey.toBase58(),nodeKeys:e.nodeKeys.map((e=>e.toBase58()))})}(e)))})}(e)))})}getGroup(e,t){return this.groups.find((n=>n.cluster===e&&n.name===t))}getGroupWithName(e){return this.groups.find((t=>t.name===e))}storeGroup(e){const t=this.getGroup(e.cluster,e.name);t?Object.assign(t,e):this.groups.unshift(e)}}t.Config=d;const h=new d(o.default)},8880:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.RootBank=t.PublicKey=t.PerpMarket=t.PerpEventQueue=t.PerpAccount=t.MangoGroup=t.MangoAccount=t.IDS=t.IDL=t.BN=void 0;const A=o(n(44903));t.IDS=A.default;const s=o(n(29406));t.IDL=s.default;const a=o(n(83369));t.MangoAccount=a.default;const c=o(n(6336));t.MangoGroup=c.default;const u=o(n(36572));t.PerpMarket=u.default;const l=o(n(10198));t.PerpAccount=l.default;const g=o(n(81180));t.PerpEventQueue=g.default;const d=o(n(95869));t.RootBank=d.default;const h=o(n(39098));t.BN=h.default;const p=n(97212);Object.defineProperty(t,"PublicKey",{enumerable:!0,get:function(){return p.PublicKey}}),r(n(25815),t),r(n(51194),t),r(n(75710),t),r(n(88191),t),r(n(20264),t),r(n(15380),t),r(n(25447),t),r(n(75506),t),r(n(27614),t),r(n(88191),t)},20264:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.makeCloseAdvancedOrdersInstruction=t.makeCloseSpotOpenOrdersInstruction=t.makeCloseMangoAccountInstruction=t.makeExecutePerpTriggerOrderInstruction=t.makeAddPerpTriggerOrderInstruction=t.makeInitAdvancedOrdersInstruction=t.makeRemoveAdvancedOrderInstruction=t.makeSetGroupAdminInstruction=t.makeChangePerpMarketParams2Instruction=t.makeChangePerpMarketParamsInstruction=t.makeWithdrawMsrmInstruction=t.makeDepositMsrmInstruction=t.makeAddMangoAccountInfoInstruction=t.makeRedeemMngoInstruction=t.makeResolveTokenBankruptcyInstruction=t.makeResolvePerpBankruptcyInstruction=t.makeSettleFeesInstruction=t.makeLiquidatePerpMarketInstruction=t.makeLiquidateTokenAndPerpInstruction=t.makeLiquidateTokenAndTokenInstruction=t.makeForceCancelPerpOrdersInstruction=t.makeForceCancelSpotOrdersInstruction=t.makeUpdateFundingInstruction=t.makePlacePerpOrder2Instruction=t.makePlacePerpOrderInstruction=t.makeConsumeEventsInstruction=t.makeSettlePnlInstruction=t.makeCachePerpMarketsInstruction=t.makeCreatePerpMarketInstruction=t.makeAddPerpMarketInstruction=t.makeSetOracleInstruction=t.makeAddOracleInstruction=t.makeUpdateRootBankInstruction=t.makePlaceSpotOrder2Instruction=t.makePlaceSpotOrderInstruction=t.makeCreateSpotOpenOrdersInstruction=t.makeInitSpotOpenOrdersInstruction=t.makeAddSpotMarketInstruction=t.makeCachePerpMarketInstruction=t.makeCachePricesInstruction=t.makeCacheRootBankInstruction=t.makeDepositInstruction=t.makeCancelAllPerpOrdersInstruction=t.makeCancelPerpOrderByClientIdInstruction=t.makeCancelPerpOrderInstruction=t.makeCancelSpotOrderInstruction=t.makeSettleFundsInstruction=t.makeWithdrawInstruction=t.makeInitMangoAccountInstruction=t.makeInitMangoGroupInstruction=void 0,t.makeCancelAllSpotOrdersInstruction=t.makeForceSettlePerpPositionInstruction=t.makeLiquidateDelistingTokenInstruction=t.makeRemoveOracleInstruction=t.makeRemoveSpotMarketInstruction=t.makeSwapSpotMarketInstruction=t.makeRemovePerpMarketInstruction=t.makeSetMarketModeInstruction=t.makeWithdraw2Instruction=t.makeRegisterReferrerIdInstruction=t.makeSetReferrerMemoryInstruction=t.makeChangeReferralFeeParams2Instruction=t.makeChangeReferralFeeParamsInstruction=t.makeChangeSpotMarketParamsInstruction=t.makeSetDelegateInstruction=t.makeCancelPerpOrdersSideInstruction=t.makeChangeMaxMangoAccountsInstruction=t.makeUpgradeMangoAccountV0V1Instruction=t.makeCreateMangoAccountInstruction=t.makeUpdateMarginBasketInstruction=t.makeResolveDustInstruction=t.makeCreateDustAccountInstruction=void 0;const r=n(97212),o=n(15380),A=n(76604),s=n(88191),a=n(27614);t.makeInitMangoGroupInstruction=function(e,t,n,i,A,s,a,c,u,l,g,d,h,p,f,m,I,y){const B=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:A},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!1,pubkey:u},{isSigner:!1,isWritable:!1,pubkey:l},{isSigner:!1,isWritable:!1,pubkey:g},{isSigner:!1,isWritable:!0,pubkey:d},{isSigner:!1,isWritable:!1,pubkey:h}],C=(0,o.encodeMangoInstruction)({InitMangoGroup:{signerNonce:p,validInterval:f,quoteOptimalUtil:m,quoteOptimalRate:I,quoteMaxRate:y}});return new r.TransactionInstruction({keys:B,data:C,programId:e})},t.makeInitMangoAccountInstruction=function(e,t,n,i){const A=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i}],s=(0,o.encodeMangoInstruction)({InitMangoAccount:{}});return new r.TransactionInstruction({keys:A,data:s,programId:e})},t.makeWithdrawInstruction=function(e,t,n,i,s,a,c,u,l,g,d,h,p){const f=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:s},{isSigner:!1,isWritable:!1,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!0,pubkey:u},{isSigner:!1,isWritable:!0,pubkey:l},{isSigner:!1,isWritable:!1,pubkey:g},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID},...d.map((e=>({isSigner:!1,isWritable:!1,pubkey:e})))],m=(0,o.encodeMangoInstruction)({Withdraw:{quantity:h,allowBorrow:p}});return new r.TransactionInstruction({keys:f,data:m,programId:e})},t.makeSettleFundsInstruction=function(e,t,n,i,s,a,c,u,l,g,d,h,p,f,m,I,y,B){const C=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!1,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!0,pubkey:u},{isSigner:!1,isWritable:!1,pubkey:l},{isSigner:!1,isWritable:!0,pubkey:g},{isSigner:!1,isWritable:!0,pubkey:d},{isSigner:!1,isWritable:!1,pubkey:h},{isSigner:!1,isWritable:!0,pubkey:p},{isSigner:!1,isWritable:!1,pubkey:f},{isSigner:!1,isWritable:!0,pubkey:m},{isSigner:!1,isWritable:!0,pubkey:I},{isSigner:!1,isWritable:!0,pubkey:y},{isSigner:!1,isWritable:!1,pubkey:B},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID}],w=(0,o.encodeMangoInstruction)({SettleFunds:{}});return new r.TransactionInstruction({keys:C,data:w,programId:e})},t.makeCancelSpotOrderInstruction=function(e,t,n,i,A,s,a,c,u,l,g,d){const h=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!0,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:A},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!0,pubkey:u},{isSigner:!1,isWritable:!1,pubkey:l},{isSigner:!1,isWritable:!0,pubkey:g}],p=(0,o.encodeMangoInstruction)({CancelSpotOrder:{side:d.side,orderId:d.orderId}});return new r.TransactionInstruction({keys:h,data:p,programId:e})},t.makeCancelPerpOrderInstruction=function(e,t,n,i,A,s,a,c,u){const l=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:A},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a}],g=(0,o.encodeMangoInstruction)({CancelPerpOrder:{orderId:c.orderId,invalidIdOk:u}});return new r.TransactionInstruction({keys:l,data:g,programId:e})},t.makeCancelPerpOrderByClientIdInstruction=function(e,t,n,i,A,s,a,c,u){const l=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:A},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a}],g=(0,o.encodeMangoInstruction)({CancelPerpOrderByClientId:{clientOrderId:c,invalidIdOk:u}});return new r.TransactionInstruction({keys:l,data:g,programId:e})},t.makeCancelAllPerpOrdersInstruction=function(e,t,n,i,A,s,a,c,u=!0){const l=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:u,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:A},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a}],g=(0,o.encodeMangoInstruction)({CancelAllPerpOrders:{limit:c}});return new r.TransactionInstruction({keys:l,data:g,programId:e})},t.makeDepositInstruction=function(e,t,n,i,s,a,c,u,l,g){const d=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!0,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!0,pubkey:u},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID},{isSigner:!1,isWritable:!0,pubkey:l}],h=(0,o.encodeMangoInstruction)({Deposit:{quantity:g}});return new r.TransactionInstruction({keys:d,data:h,programId:e})},t.makeCacheRootBankInstruction=function(e,t,n,i){const A=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},...i.map((e=>({isSigner:!1,isWritable:!0,pubkey:e})))],s=(0,o.encodeMangoInstruction)({CacheRootBanks:{}});return new r.TransactionInstruction({keys:A,data:s,programId:e})},t.makeCachePricesInstruction=function(e,t,n,i){const A=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},...i.map((e=>({isSigner:!1,isWritable:!1,pubkey:e})))],s=(0,o.encodeMangoInstruction)({CachePrices:{}});return new r.TransactionInstruction({keys:A,data:s,programId:e})},t.makeCachePerpMarketInstruction=function(e,t,n,i){const A=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},...i.map((e=>({isSigner:!1,isWritable:!1,pubkey:e})))],s=(0,o.encodeMangoInstruction)({CachePerpMarkets:{}});return new r.TransactionInstruction({keys:A,data:s,programId:e})},t.makeAddSpotMarketInstruction=function(e,t,n,i,A,s,a,c,u,l,g,d,h,p,f,m){const I=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:A},{isSigner:!1,isWritable:!1,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a},{isSigner:!1,isWritable:!1,pubkey:c},{isSigner:!1,isWritable:!0,pubkey:u},{isSigner:!0,isWritable:!1,pubkey:l}],y=(0,o.encodeMangoInstruction)({AddSpotMarket:{maintLeverage:g,initLeverage:d,liquidationFee:h,optimalUtil:p,optimalRate:f,maxRate:m}});return new r.TransactionInstruction({keys:I,data:y,programId:e})},t.makeInitSpotOpenOrdersInstruction=function(e,t,n,i,A,s,a,c){const u=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:A},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!1,pubkey:a},{isSigner:!1,isWritable:!1,pubkey:c},{isSigner:!1,isWritable:!1,pubkey:r.SYSVAR_RENT_PUBKEY}],l=(0,o.encodeMangoInstruction)({InitSpotOpenOrders:{}});return new r.TransactionInstruction({keys:u,data:l,programId:e})},t.makeCreateSpotOpenOrdersInstruction=function(e,t,n,i,A,s,a,c){const u=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:A},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!1,pubkey:a},{isSigner:!1,isWritable:!1,pubkey:c},{isSigner:!1,isWritable:!1,pubkey:r.SystemProgram.programId}],l=(0,o.encodeMangoInstruction)({CreateSpotOpenOrders:{}});return new r.TransactionInstruction({keys:u,data:l,programId:e})},t.makePlaceSpotOrderInstruction=function(e,t,n,i,s,a,c,u,l,g,d,h,p,f,m,I,y,B,C,w,E,Q,b,k,v,S,M,D,N,T){const P=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:s},{isSigner:!1,isWritable:!1,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!0,pubkey:u},{isSigner:!1,isWritable:!0,pubkey:l},{isSigner:!1,isWritable:!0,pubkey:g},{isSigner:!1,isWritable:!0,pubkey:d},{isSigner:!1,isWritable:!0,pubkey:h},{isSigner:!1,isWritable:!0,pubkey:p},{isSigner:!1,isWritable:!1,pubkey:f},{isSigner:!1,isWritable:!0,pubkey:m},{isSigner:!1,isWritable:!0,pubkey:I},{isSigner:!1,isWritable:!1,pubkey:y},{isSigner:!1,isWritable:!0,pubkey:B},{isSigner:!1,isWritable:!0,pubkey:C},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID},{isSigner:!1,isWritable:!1,pubkey:w},{isSigner:!1,isWritable:!1,pubkey:r.SYSVAR_RENT_PUBKEY},{isSigner:!1,isWritable:!1,pubkey:E},{isSigner:!1,isWritable:!1,pubkey:Q},...b.map((({pubkey:e,isWritable:t})=>({isSigner:!1,isWritable:t,pubkey:e})))],O=(0,o.encodeMangoInstruction)({PlaceSpotOrder:{side:k,limitPrice:v,maxBaseQuantity:S,maxQuoteQuantity:M,selfTradeBehavior:D,orderType:N,clientId:T,limit:65535}});return new r.TransactionInstruction({keys:P,data:O,programId:e})},t.makePlaceSpotOrder2Instruction=function(e,t,n,i,s,a,c,u,l,g,d,h,p,f,m,I,y,B,C,w,E,Q,b,k,v,S,M,D,N,T){const P=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:s},{isSigner:!1,isWritable:!1,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!0,pubkey:u},{isSigner:!1,isWritable:!0,pubkey:l},{isSigner:!1,isWritable:!0,pubkey:g},{isSigner:!1,isWritable:!0,pubkey:d},{isSigner:!1,isWritable:!0,pubkey:h},{isSigner:!1,isWritable:!0,pubkey:p},{isSigner:!1,isWritable:!1,pubkey:f},{isSigner:!1,isWritable:!0,pubkey:m},{isSigner:!1,isWritable:!0,pubkey:I},{isSigner:!1,isWritable:!1,pubkey:y},{isSigner:!1,isWritable:!0,pubkey:B},{isSigner:!1,isWritable:!0,pubkey:C},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID},{isSigner:!1,isWritable:!1,pubkey:w},{isSigner:!1,isWritable:!1,pubkey:E},{isSigner:!1,isWritable:!1,pubkey:Q},...b.map((({pubkey:e,isWritable:t})=>({isSigner:!1,isWritable:t,pubkey:e})))],O=(0,o.encodeMangoInstruction)({PlaceSpotOrder2:{side:k,limitPrice:v,maxBaseQuantity:S,maxQuoteQuantity:M,selfTradeBehavior:D,orderType:N,clientOrderId:T,limit:65535}});return new r.TransactionInstruction({keys:P,data:O,programId:e})},t.makeUpdateRootBankInstruction=function(e,t,n,i,A){const s=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},...A.map((e=>({isSigner:!1,isWritable:!0,pubkey:e})))],a=(0,o.encodeMangoInstruction)({UpdateRootBank:{}});return new r.TransactionInstruction({keys:s,data:a,programId:e})},t.makeAddOracleInstruction=function(e,t,n,i){const A=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i}],s=(0,o.encodeMangoInstruction)({AddOracle:{}});return new r.TransactionInstruction({keys:A,data:s,programId:e})},t.makeSetOracleInstruction=function(e,t,n,i,A){const s=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i}],a=(0,o.encodeMangoInstruction)({SetOracle:{price:A}});return new r.TransactionInstruction({keys:s,data:a,programId:e})},t.makeAddPerpMarketInstruction=function(e,t,n,i,A,s,a,c,u,l,g,d,h,p,f,m,I,y,B,C,w){const E=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:A},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a},{isSigner:!1,isWritable:!1,pubkey:c},{isSigner:!0,isWritable:!1,pubkey:u}],Q=(0,o.encodeMangoInstruction)({AddPerpMarket:{maintLeverage:l,initLeverage:g,liquidationFee:d,makerFee:h,takerFee:p,baseLotSize:f,quoteLotSize:m,rate:I,maxDepthBps:y,targetPeriodLength:B,mngoPerPeriod:C,exp:w}});return new r.TransactionInstruction({keys:E,data:Q,programId:e})},t.makeCreatePerpMarketInstruction=function(e,t,n,i,s,a,c,u,l,g,d,h,p,f,m,I,y,B,C,w,E,Q,b,k,v,S){const M=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!1,pubkey:u},{isSigner:!1,isWritable:!0,pubkey:l},{isSigner:!0,isWritable:!0,pubkey:g},{isSigner:!1,isWritable:!0,pubkey:d},{isSigner:!1,isWritable:!1,pubkey:r.SystemProgram.programId},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID},{isSigner:!1,isWritable:!1,pubkey:r.SYSVAR_RENT_PUBKEY}],D=(0,o.encodeMangoInstruction)({CreatePerpMarket:{maintLeverage:h,initLeverage:p,liquidationFee:f,makerFee:m,takerFee:I,baseLotSize:y,quoteLotSize:B,rate:C,maxDepthBps:w,targetPeriodLength:E,mngoPerPeriod:Q,exp:b,version:k,lmSizeShift:v,baseDecimals:S}});return new r.TransactionInstruction({keys:M,data:D,programId:e})},t.makeCachePerpMarketsInstruction=function(e,t,n,i){const A=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},...i.map((e=>({isSigner:!1,isWritable:!1,pubkey:e})))],s=(0,o.encodeMangoInstruction)({CachePerpMarkets:{}});return new r.TransactionInstruction({keys:A,data:s,programId:e})},t.makeSettlePnlInstruction=function(e,t,n,i,A,s,a,c){const u=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:A},{isSigner:!1,isWritable:!1,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a}],l=(0,o.encodeMangoInstruction)({SettlePnl:{marketIndex:c}});return new r.TransactionInstruction({keys:u,data:l,programId:e})},t.makeConsumeEventsInstruction=function(e,t,n,i,A,s,a){const c=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:A},...s.sort().map((e=>({isSigner:!1,isWritable:!0,pubkey:e})))],u=(0,o.encodeMangoInstruction)({ConsumeEvents:{limit:a}});return new r.TransactionInstruction({keys:c,data:u,programId:e})},t.makePlacePerpOrderInstruction=function(e,t,n,i,A,s,a,c,u,l,g,d,h,p,f,m,I){const y=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:A},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!0,pubkey:u},...l.map((e=>({isSigner:!1,isWritable:!1,pubkey:e})))];void 0!==I&&y.push({isSigner:!1,isWritable:!0,pubkey:I});const B=(0,o.encodeMangoInstruction)({PlacePerpOrder:{price:g,quantity:d,clientOrderId:h,side:p,orderType:f,reduceOnly:m||!1}});return new r.TransactionInstruction({keys:y,data:B,programId:e})},t.makePlacePerpOrder2Instruction=function(e,t,n,i,A,s,c,u,l,g,d,h,p,f,m,I,y,B,C,w,E){const Q=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:A},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!0,pubkey:u},{isSigner:!1,isWritable:!0,pubkey:l},{isSigner:!1,isWritable:!0,pubkey:C||n},...g.map((e=>({isSigner:!1,isWritable:!1,pubkey:e})))];void 0!==C&&Q.push({isSigner:!1,isWritable:!0,pubkey:C});const b=(0,o.encodeMangoInstruction)({PlacePerpOrder2:{price:d,maxBaseQuantity:h,maxQuoteQuantity:p,clientOrderId:f,expiryTimestamp:w||a.ZERO_BN,side:m,orderType:y,reduceOnly:B||!1,limit:I,expiryType:E}});return new r.TransactionInstruction({keys:Q,data:b,programId:e})},t.makeUpdateFundingInstruction=function(e,t,n,i,A,s){const a=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:A},{isSigner:!1,isWritable:!1,pubkey:s}],c=(0,o.encodeMangoInstruction)({UpdateFunding:{}});return new r.TransactionInstruction({keys:a,data:c,programId:e})},t.makeForceCancelSpotOrdersInstruction=function(e,t,n,i,s,a,c,u,l,g,d,h,p,f,m,I,y,B,C,w,E){const Q=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!1,pubkey:u},{isSigner:!1,isWritable:!0,pubkey:l},{isSigner:!1,isWritable:!0,pubkey:g},{isSigner:!1,isWritable:!0,pubkey:d},{isSigner:!1,isWritable:!0,pubkey:h},{isSigner:!1,isWritable:!0,pubkey:p},{isSigner:!1,isWritable:!1,pubkey:f},{isSigner:!1,isWritable:!0,pubkey:m},{isSigner:!1,isWritable:!0,pubkey:I},{isSigner:!1,isWritable:!0,pubkey:y},{isSigner:!1,isWritable:!1,pubkey:B},{isSigner:!1,isWritable:!1,pubkey:C},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID},...w.map((({pubkey:e,isWritable:t})=>({isSigner:!1,isWritable:t,pubkey:e})))],b=(0,o.encodeMangoInstruction)({ForceCancelSpotOrders:{limit:E}});return new r.TransactionInstruction({keys:Q,data:b,programId:e})},t.makeForceCancelPerpOrdersInstruction=function(e,t,n,i,A,s,a,c,u){const l=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:A},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a},...c.map((e=>({isSigner:!1,isWritable:!1,pubkey:e})))],g=(0,o.encodeMangoInstruction)({ForceCancelPerpOrders:{limit:u}});return new r.TransactionInstruction({keys:l,data:g,programId:e})},t.makeLiquidateTokenAndTokenInstruction=function(e,t,n,i,A,s,a,c,u,l,g,d,h){const p=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:A},{isSigner:!0,isWritable:!1,pubkey:s},{isSigner:!1,isWritable:!1,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!1,pubkey:u},{isSigner:!1,isWritable:!0,pubkey:l},...g.map((e=>({isSigner:!1,isWritable:!1,pubkey:e}))),...d.map((e=>({isSigner:!1,isWritable:!1,pubkey:e})))],f=(0,o.encodeMangoInstruction)({LiquidateTokenAndToken:{maxLiabTransfer:h}});return new r.TransactionInstruction({keys:p,data:f,programId:e})},t.makeLiquidateTokenAndPerpInstruction=function(e,t,n,i,A,s,a,c,u,l,g,d,h,p,f){const m=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:A},{isSigner:!0,isWritable:!1,pubkey:s},{isSigner:!1,isWritable:!1,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},...u.map((e=>({isSigner:!1,isWritable:!1,pubkey:e}))),...l.map((e=>({isSigner:!1,isWritable:!1,pubkey:e})))],I=(0,o.encodeMangoInstruction)({LiquidateTokenAndPerp:{assetType:g,assetIndex:d,liabType:h,liabIndex:p,maxLiabTransfer:f}});return new r.TransactionInstruction({keys:m,data:I,programId:e})},t.makeLiquidatePerpMarketInstruction=function(e,t,n,i,A,s,a,c,u,l,g){const d=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:A},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a},{isSigner:!0,isWritable:!1,pubkey:c},...u.map((e=>({isSigner:!1,isWritable:!1,pubkey:e}))),...l.map((e=>({isSigner:!1,isWritable:!1,pubkey:e})))],h=(0,o.encodeMangoInstruction)({LiquidatePerpMarket:{baseTransferRequest:g}});return new r.TransactionInstruction({keys:d,data:h,programId:e})},t.makeSettleFeesInstruction=function(e,t,n,i,s,a,c,u,l,g){const d=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!1,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!0,pubkey:u},{isSigner:!1,isWritable:!0,pubkey:l},{isSigner:!1,isWritable:!1,pubkey:g},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID}],h=(0,o.encodeMangoInstruction)({SettleFees:{}});return new r.TransactionInstruction({keys:d,data:h,programId:e})},t.makeResolvePerpBankruptcyInstruction=function(e,t,n,i,s,a,c,u,l,g,d,h,p,f,m){const I=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!0,isWritable:!1,pubkey:a},{isSigner:!1,isWritable:!1,pubkey:c},{isSigner:!1,isWritable:!0,pubkey:u},{isSigner:!1,isWritable:!0,pubkey:l},{isSigner:!1,isWritable:!0,pubkey:g},{isSigner:!1,isWritable:!1,pubkey:d},{isSigner:!1,isWritable:!0,pubkey:h},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID},...p.map((e=>({isSigner:!1,isWritable:!1,pubkey:e})))],y=(0,o.encodeMangoInstruction)({ResolvePerpBankruptcy:{liabIndex:f,maxLiabTransfer:m}});return new r.TransactionInstruction({keys:I,data:y,programId:e})},t.makeResolveTokenBankruptcyInstruction=function(e,t,n,i,s,a,c,u,l,g,d,h,p,f,m,I){const y=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!0,isWritable:!1,pubkey:a},{isSigner:!1,isWritable:!1,pubkey:c},{isSigner:!1,isWritable:!0,pubkey:u},{isSigner:!1,isWritable:!0,pubkey:l},{isSigner:!1,isWritable:!0,pubkey:g},{isSigner:!1,isWritable:!1,pubkey:d},{isSigner:!1,isWritable:!0,pubkey:h},{isSigner:!1,isWritable:!0,pubkey:p},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID},...f.map((e=>({isSigner:!1,isWritable:!1,pubkey:e}))),...m.map((e=>({isSigner:!1,isWritable:!0,pubkey:e})))],B=(0,o.encodeMangoInstruction)({ResolveTokenBankruptcy:{maxLiabTransfer:I}});return new r.TransactionInstruction({keys:y,data:B,programId:e})},t.makeRedeemMngoInstruction=function(e,t,n,i,s,a,c,u,l,g,d){const h=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!0,isWritable:!1,pubkey:s},{isSigner:!1,isWritable:!1,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!1,pubkey:u},{isSigner:!1,isWritable:!0,pubkey:l},{isSigner:!1,isWritable:!0,pubkey:g},{isSigner:!1,isWritable:!1,pubkey:d},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID}],p=(0,o.encodeMangoInstruction)({RedeemMngo:{}});return new r.TransactionInstruction({keys:h,data:p,programId:e})},t.makeAddMangoAccountInfoInstruction=function(e,t,n,A,s){const a=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:A}],c=i.from(s);if(c.length>o.INFO_LEN)throw new Error("info string too long. Must be less than or equal to 32 bytes");const u=new Uint8Array(c,0,o.INFO_LEN),l=(0,o.encodeMangoInstruction)({AddMangoAccountInfo:{info:u}});return new r.TransactionInstruction({keys:a,data:l,programId:e})},t.makeDepositMsrmInstruction=function(e,t,n,i,s,a,c){const u=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID}],l=(0,o.encodeMangoInstruction)({DepositMsrm:{quantity:c}});return new r.TransactionInstruction({keys:u,data:l,programId:e})},t.makeWithdrawMsrmInstruction=function(e,t,n,i,s,a,c,u){const l=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a},{isSigner:!1,isWritable:!1,pubkey:c},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID}],g=(0,o.encodeMangoInstruction)({WithdrawMsrm:{quantity:u}});return new r.TransactionInstruction({keys:l,data:g,programId:e})},t.makeChangePerpMarketParamsInstruction=function(e,t,n,i,A,c,u,l,g,d,h,p,f,m){const I=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i}],y=(0,o.encodeMangoInstruction)({ChangePerpMarketParams:{maintLeverageOption:void 0!==A,maintLeverage:void 0!==A?A:s.ZERO_I80F48,initLeverageOption:void 0!==c,initLeverage:void 0!==c?c:s.ZERO_I80F48,liquidationFeeOption:void 0!==u,liquidationFee:void 0!==u?u:s.ZERO_I80F48,makerFeeOption:void 0!==l,makerFee:void 0!==l?l:s.ZERO_I80F48,takerFeeOption:void 0!==g,takerFee:void 0!==g?g:s.ZERO_I80F48,rateOption:void 0!==d,rate:void 0!==d?d:s.ZERO_I80F48,maxDepthBpsOption:void 0!==h,maxDepthBps:void 0!==h?h:s.ZERO_I80F48,targetPeriodLengthOption:void 0!==p,targetPeriodLength:void 0!==p?p:a.ZERO_BN,mngoPerPeriodOption:void 0!==f,mngoPerPeriod:void 0!==f?f:a.ZERO_BN,expOption:void 0!==m,exp:void 0!==m?m:a.ZERO_BN}});return new r.TransactionInstruction({keys:I,data:y,programId:e})},t.makeChangePerpMarketParams2Instruction=function(e,t,n,i,A,c,u,l,g,d,h,p,f,m,I,y){const B=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i}],C=(0,o.encodeMangoInstruction)({ChangePerpMarketParams2:{maintLeverageOption:void 0!==A,maintLeverage:void 0!==A?A:s.ZERO_I80F48,initLeverageOption:void 0!==c,initLeverage:void 0!==c?c:s.ZERO_I80F48,liquidationFeeOption:void 0!==u,liquidationFee:void 0!==u?u:s.ZERO_I80F48,makerFeeOption:void 0!==l,makerFee:void 0!==l?l:s.ZERO_I80F48,takerFeeOption:void 0!==g,takerFee:void 0!==g?g:s.ZERO_I80F48,rateOption:void 0!==d,rate:void 0!==d?d:s.ZERO_I80F48,maxDepthBpsOption:void 0!==h,maxDepthBps:void 0!==h?h:s.ZERO_I80F48,targetPeriodLengthOption:void 0!==p,targetPeriodLength:void 0!==p?p:a.ZERO_BN,mngoPerPeriodOption:void 0!==f,mngoPerPeriod:void 0!==f?f:a.ZERO_BN,expOption:void 0!==m,exp:void 0!==m?m:a.ZERO_BN,versionOption:void 0!==I,version:void 0!==I?I:a.ZERO_BN,lmSizeShiftOption:void 0!==y,lmSizeShift:void 0!==y?y:a.ZERO_BN}});return new r.TransactionInstruction({keys:B,data:C,programId:e})},t.makeSetGroupAdminInstruction=function(e,t,n,i){const A=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i}],s=(0,o.encodeMangoInstruction)({SetGroupAdmin:{}});return new r.TransactionInstruction({keys:A,data:s,programId:e})},t.makeRemoveAdvancedOrderInstruction=function(e,t,n,i,A,s){const a=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!0,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:A},{isSigner:!1,isWritable:!1,pubkey:r.SystemProgram.programId}],c=(0,o.encodeMangoInstruction)({RemoveAdvancedOrder:{orderIndex:s}});return new r.TransactionInstruction({keys:a,data:c,programId:e})},t.makeInitAdvancedOrdersInstruction=function(e,t,n,i,A){const s=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:A},{isSigner:!1,isWritable:!1,pubkey:r.SystemProgram.programId}],a=(0,o.encodeMangoInstruction)({InitAdvancedOrders:{}});return new r.TransactionInstruction({keys:s,data:a,programId:e})},t.makeAddPerpTriggerOrderInstruction=function(e,t,n,i,A,s,a,c,u,l,g,d,h,p,f,m){const I=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!0,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:A},{isSigner:!1,isWritable:!1,pubkey:s},{isSigner:!1,isWritable:!1,pubkey:a},{isSigner:!1,isWritable:!1,pubkey:r.SystemProgram.programId},...c.map((e=>({isSigner:!1,isWritable:!1,pubkey:e})))],y=(0,o.encodeMangoInstruction)({AddPerpTriggerOrder:{price:g,quantity:d,clientOrderId:m,side:l,orderType:u,triggerCondition:h,triggerPrice:p,reduceOnly:f}});return new r.TransactionInstruction({keys:I,data:y,programId:e})},t.makeExecutePerpTriggerOrderInstruction=function(e,t,n,i,A,s,a,c,u,l,g,d){const h=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!0,isWritable:!0,pubkey:A},{isSigner:!1,isWritable:!1,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!0,pubkey:u},{isSigner:!1,isWritable:!0,pubkey:l},...g.map((e=>({isSigner:!1,isWritable:!1,pubkey:e})))],p=(0,o.encodeMangoInstruction)({ExecutePerpTriggerOrder:{orderIndex:d}});return new r.TransactionInstruction({keys:h,data:p,programId:e})},t.makeCloseMangoAccountInstruction=function(e,t,n,i){const A=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!0,pubkey:i}],s=(0,o.encodeMangoInstruction)({CloseMangoAccount:{}});return new r.TransactionInstruction({keys:A,data:s,programId:e})},t.makeCloseSpotOpenOrdersInstruction=function(e,t,n,i,A,s,a,c,u=!0){const l=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:u,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:A},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!1,pubkey:a},{isSigner:!1,isWritable:!1,pubkey:c}],g=(0,o.encodeMangoInstruction)({CloseSpotOpenOrders:{}});return new r.TransactionInstruction({keys:l,data:g,programId:e})},t.makeCloseAdvancedOrdersInstruction=function(e,t,n,i,A){const s=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:A}],a=(0,o.encodeMangoInstruction)({CloseAdvancedOrders:{}});return new r.TransactionInstruction({keys:s,data:a,programId:e})},t.makeCreateDustAccountInstruction=function(e,t,n,i){const A=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:r.SystemProgram.programId}],s=(0,o.encodeMangoInstruction)({CreateDustAccount:{}});return new r.TransactionInstruction({keys:A,data:s,programId:e})},t.makeResolveDustInstruction=function(e,t,n,i,A,s,a,c){const u=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:A},{isSigner:!1,isWritable:!1,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a},{isSigner:!1,isWritable:!1,pubkey:c}],l=(0,o.encodeMangoInstruction)({ResolveDust:{}});return new r.TransactionInstruction({keys:u,data:l,programId:e})},t.makeUpdateMarginBasketInstruction=function(e,t,n,i){const A=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},...i.map((e=>({isSigner:!1,isWritable:!0,pubkey:e})))],s=(0,o.encodeMangoInstruction)({UpdateMarginBasket:{}});return new r.TransactionInstruction({keys:A,data:s,programId:e})},t.makeCreateMangoAccountInstruction=function(e,t,n,i,A,s){const a=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:r.SystemProgram.programId},{isSigner:!0,isWritable:!0,pubkey:s}],c=(0,o.encodeMangoInstruction)({CreateMangoAccount:{accountNum:A}});return new r.TransactionInstruction({keys:a,data:c,programId:e})},t.makeUpgradeMangoAccountV0V1Instruction=function(e,t,n,i){const A=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i}],s=(0,o.encodeMangoInstruction)({UpgradeMangoAccountV0V1:{}});return new r.TransactionInstruction({keys:A,data:s,programId:e})},t.makeChangeMaxMangoAccountsInstruction=function(e,t,n,i){const A=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!0,isWritable:!1,pubkey:n}],s=(0,o.encodeMangoInstruction)({ChangeMaxMangoAccounts:{maxMangoAccounts:i}});return new r.TransactionInstruction({keys:A,data:s,programId:e})},t.makeCancelPerpOrdersSideInstruction=function(e,t,n,i,A,s,a,c,u){const l=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:A},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a}],g=(0,o.encodeMangoInstruction)({CancelPerpOrdersSide:{side:c,limit:u}});return new r.TransactionInstruction({keys:l,data:g,programId:e})},t.makeSetDelegateInstruction=function(e,t,n,i,A){const s=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:A}],a=(0,o.encodeMangoInstruction)({SetDelegate:{}});return new r.TransactionInstruction({keys:s,data:a,programId:e})},t.makeChangeSpotMarketParamsInstruction=function(e,t,n,i,A,c,u,l,g,d,h,p){const f=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!0,isWritable:!1,pubkey:A}],m=(0,o.encodeMangoInstruction)({ChangeSpotMarketParams:{maintLeverageOption:void 0!==c,maintLeverage:null!=c?c:s.ZERO_I80F48,initLeverageOption:void 0!==u,initLeverage:null!=u?u:s.ZERO_I80F48,liquidationFeeOption:void 0!==l,liquidationFee:null!=l?l:s.ZERO_I80F48,optimalUtilOption:void 0!==g,optimalUtil:null!=g?g:s.ZERO_I80F48,optimalRateOption:void 0!==d,optimalRate:null!=d?d:s.ZERO_I80F48,maxRateOption:void 0!==h,maxRate:null!=h?h:s.ZERO_I80F48,versionOption:void 0!==p,version:null!=p?p:a.ZERO_BN}});return new r.TransactionInstruction({keys:f,data:m,programId:e})},t.makeChangeReferralFeeParamsInstruction=function(e,t,n,i,A,s){const a=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!0,isWritable:!1,pubkey:n}],c=(0,o.encodeMangoInstruction)({ChangeReferralFeeParams:{refSurchargeCentibps:i,refShareCentibps:A,refMngoRequired:s}});return new r.TransactionInstruction({keys:a,data:c,programId:e})},t.makeChangeReferralFeeParams2Instruction=function(e,t,n,i,A,s,a,c,u){const l=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!0,isWritable:!1,pubkey:n}],g=(0,o.encodeMangoInstruction)({ChangeReferralFeeParams2:{refSurchargeCentibpsTier1:i,refShareCentibpsTier1:A,refSurchargeCentibpsTier2:s,refShareCentibpsTier2:a,refMngoRequired:c,refMngoTier2Factor:u}});return new r.TransactionInstruction({keys:l,data:g,programId:e})},t.makeSetReferrerMemoryInstruction=function(e,t,n,i,A,s,a){const c=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:A},{isSigner:!1,isWritable:!1,pubkey:s},{isSigner:!0,isWritable:!0,pubkey:a},{isSigner:!1,isWritable:!1,pubkey:r.SystemProgram.programId}],u=(0,o.encodeMangoInstruction)({SetReferrerMemory:{}});return new r.TransactionInstruction({keys:c,data:u,programId:e})},t.makeRegisterReferrerIdInstruction=function(e,t,n,i,A,s){const a=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!0,isWritable:!0,pubkey:A},{isSigner:!1,isWritable:!1,pubkey:r.SystemProgram.programId}],c=(0,o.encodeMangoInstruction)({RegisterReferrerId:{referrerId:s}});return new r.TransactionInstruction({keys:a,data:c,programId:e})},t.makeWithdraw2Instruction=function(e,t,n,i,s,a,c,u,l,g,d,h,p){const f=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!0,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:s},{isSigner:!1,isWritable:!1,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!0,pubkey:u},{isSigner:!1,isWritable:!0,pubkey:l},{isSigner:!1,isWritable:!1,pubkey:g},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID},...d.map((e=>({isSigner:!1,isWritable:!1,pubkey:e})))],m=(0,o.encodeMangoInstruction)({Withdraw2:{quantity:h,allowBorrow:p}});return new r.TransactionInstruction({keys:f,data:m,programId:e})},t.makeSetMarketModeInstruction=function(e,t,n,i,A,s){const a=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!0,isWritable:!1,pubkey:n}],c=(0,o.encodeMangoInstruction)({SetMarketMode:{marketIndex:i,marketMode:A,marketType:s}});return new r.TransactionInstruction({keys:a,data:c,programId:e})},t.makeRemovePerpMarketInstruction=function(e,t,n,i,s,a,c,u,l,g){const d=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!0,isWritable:!0,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!0,pubkey:u},{isSigner:!1,isWritable:!0,pubkey:l},{isSigner:!1,isWritable:!1,pubkey:g},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID}],h=(0,o.encodeMangoInstruction)({RemovePerpMarket:{}});return new r.TransactionInstruction({keys:d,data:h,programId:e})},t.makeSwapSpotMarketInstruction=function(e,t,n,i,A,s){const a=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!0,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!1,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:A},{isSigner:!1,isWritable:!1,pubkey:s}],c=(0,o.encodeMangoInstruction)({SwapSpotMarket:{}});return new r.TransactionInstruction({keys:a,data:c,programId:e})},t.makeRemoveSpotMarketInstruction=function(e,t,n,i,s,a,c,u,l){const g=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!0,isWritable:!0,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a},{isSigner:!1,isWritable:!1,pubkey:c},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID},...u.map((e=>({isSigner:!1,isWritable:!0,pubkey:e}))),...l.map((e=>({isSigner:!1,isWritable:!0,pubkey:e})))],d=(0,o.encodeMangoInstruction)({RemoveSpotMarket:{}});return new r.TransactionInstruction({keys:g,data:d,programId:e})},t.makeRemoveOracleInstruction=function(e,t,n,i){const A=[{isSigner:!1,isWritable:!0,pubkey:t},{isSigner:!0,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!1,pubkey:i}],s=(0,o.encodeMangoInstruction)({RemoveOracle:{}});return new r.TransactionInstruction({keys:A,data:s,programId:e})},t.makeLiquidateDelistingTokenInstruction=function(e,t,n,i,s,a,c,u,l,g,d,h,p,f,m,I,y,B){const C=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!0,pubkey:s},{isSigner:!1,isWritable:!0,pubkey:a},{isSigner:!0,isWritable:!1,pubkey:c},{isSigner:!1,isWritable:!1,pubkey:u},{isSigner:!1,isWritable:!0,pubkey:l},{isSigner:!1,isWritable:!1,pubkey:g},{isSigner:!1,isWritable:!0,pubkey:d},{isSigner:!1,isWritable:!0,pubkey:h},{isSigner:!1,isWritable:!0,pubkey:p},{isSigner:!1,isWritable:!0,pubkey:f},{isSigner:!1,isWritable:!1,pubkey:m},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID},...I.map((e=>({isSigner:!1,isWritable:!1,pubkey:e}))),...y.map((e=>({isSigner:!1,isWritable:!1,pubkey:e})))],w=(0,o.encodeMangoInstruction)({LiquidateDelistingToken:{maxLiquidateAmount:B}});return new r.TransactionInstruction({keys:C,data:w,programId:e})},t.makeForceSettlePerpPositionInstruction=function(e,t,n,i,A,s){const a=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!0,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:!1,isWritable:!1,pubkey:A},{isSigner:!1,isWritable:!0,pubkey:s}],c=(0,o.encodeMangoInstruction)({ForceSettlePerpPosition:{}});return new r.TransactionInstruction({keys:a,data:c,programId:e})},t.makeCancelAllSpotOrdersInstruction=function(e,t,n,i,s,a,c,u,l,g,d,h,p,f,m,I,y,B,C,w,E,Q,b=!0){const k=[{isSigner:!1,isWritable:!1,pubkey:t},{isSigner:!1,isWritable:!1,pubkey:n},{isSigner:!1,isWritable:!0,pubkey:i},{isSigner:b,isWritable:!1,pubkey:s},{isSigner:!1,isWritable:!1,pubkey:a},{isSigner:!1,isWritable:!0,pubkey:c},{isSigner:!1,isWritable:!0,pubkey:u},{isSigner:!1,isWritable:!1,pubkey:l},{isSigner:!1,isWritable:!0,pubkey:g},{isSigner:!1,isWritable:!0,pubkey:d},{isSigner:!1,isWritable:!0,pubkey:h},{isSigner:!1,isWritable:!0,pubkey:p},{isSigner:!1,isWritable:!0,pubkey:f},{isSigner:!1,isWritable:!0,pubkey:m},{isSigner:!1,isWritable:!1,pubkey:I},{isSigner:!1,isWritable:!0,pubkey:y},{isSigner:!1,isWritable:!0,pubkey:B},{isSigner:!1,isWritable:!0,pubkey:C},{isSigner:!1,isWritable:!1,pubkey:w},{isSigner:!1,isWritable:!1,pubkey:E},{isSigner:!1,isWritable:!1,pubkey:A.TOKEN_PROGRAM_ID}],v=(0,o.encodeMangoInstruction)({CancelAllSpotOrders:{limit:Q}});return new r.TransactionInstruction({keys:k,data:v,programId:e})}},15380:function(e,t,n){"use strict";var i=n(55872).Buffer,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.liquidityMiningInfoLayout=t.LiquidityMiningInfoLayout=t.StubOracleLayout=t.NodeBankLayout=t.RootBankLayout=t.MangoAccountLayout=t.MangoGroupLayout=t.perpAccountLayout=t.PerpAccountLayout=t.perpMarketInfoLayout=t.PerpMarketInfoLayout=t.PerpMarketInfo=t.spotMarketInfoLayout=t.SpotMarketInfoLayout=t.SpotMarketInfo=t.tokenInfoLayout=t.TokenInfoLayout=t.TokenInfo=t.metaDataLayout=t.MetaDataLayout=t.MetaData=t.AdvancedOrderType=t.MarketMode=t.AssetType=t.DataType=t.publicKeyLayout=t.PublicKeyLayout=t.encodeMangoInstruction=t.MangoInstructionLayout=t.expiryTypeLayout=t.advancedOrderTypeLayout=t.triggerConditionLayout=t.selfTradeBehaviorLayout=t.orderTypeLayout=t.sideLayout=t.bool=t.i128=t.u128=t.i64=t.u64=t.I80F48Layout=t.CENTIBPS_PER_UNIT=t.FREE_ORDER_SLOT=t.MAX_PERP_OPEN_ORDERS=t.MAX_NUM_IN_MARGIN_BASKET=t.QUOTE_INDEX=t.INFO_LEN=t.MAX_NODE_BANKS=t.MAX_PAIRS=t.MAX_TOKENS=void 0,t.ReferrerIdRecordLayout=t.ReferrerIdRecord=t.ReferrerMemoryLayout=t.ReferrerMemory=t.AdvancedOrdersLayout=t.TokenAccountLayout=t.NodeBank=t.MangoCache=t.MangoCacheLayout=t.perpMarketCacheLayout=t.PerpMarketCacheLayout=t.PerpMarketCache=t.rootBankCacheLayout=t.RootBankCacheLayout=t.RootBankCache=t.priceCacheLayout=t.PriceCacheLayout=t.PriceCache=t.BookSideLayout=t.PerpEventQueueLayout=t.PerpEventQueueHeaderLayout=t.PerpEventLayout=t.PerpMarketLayout=void 0;const o=n(84104),A=n(97212),s=n(88191),a=r(n(39098)),c=n(27614),u=r(n(10198));t.MAX_TOKENS=16,t.MAX_PAIRS=t.MAX_TOKENS-1,t.MAX_NODE_BANKS=8,t.INFO_LEN=32,t.QUOTE_INDEX=t.MAX_TOKENS-1,t.MAX_NUM_IN_MARGIN_BASKET=9,t.MAX_PERP_OPEN_ORDERS=64,t.FREE_ORDER_SLOT=255,t.CENTIBPS_PER_UNIT=1e6;class l extends o.Blob{constructor(e){super(16,e)}decode(e,t){let n=new a.default(super.decode(e,t),10,"le");return n=n.fromTwos(8*this.length),new s.I80F48(n)}encode(e,t,n){return e=e.toTwos(8*this.length),super.encode(e.toArrayLike(i,"le",this.span),t,n)}}function g(e=""){return new l(e)}t.I80F48Layout=g;class d extends o.Blob{constructor(e,t,n=!1){super(e,t),this.signed=n,Object.setPrototypeOf(this,new.target.prototype)}decode(e,t){let n=new a.default(super.decode(e,t),10,"le");return this.signed&&(n=n.fromTwos(8*this.length)),n}encode(e,t,n){return this.signed&&(e=e.toTwos(8*this.length)),super.encode(e.toArrayLike(i,"le",this.span),t,n)}}function h(e=""){return new d(8,e)}function p(e=""){return new d(8,e,!0)}function f(e){return new d(16,e)}function m(e){return new d(16,e,!0)}t.u64=h,t.i64=p,t.u128=f,t.i128=m;class I extends o.Layout{constructor(e,t,n,i){super(e.span,i),this.layout=e,this.decoder=t,this.encoder=n}decode(e,t){return this.decoder(this.layout.decode(e,t))}encode(e,t,n){return this.layout.encode(this.encoder(e),t,n)}getSpan(e,t){return this.layout.getSpan(e,t)}}function y(e){return new I((0,o.u8)(),B,C,e)}function B(e){return 0!==e}function C(e){return e?1:0}t.bool=y;class w extends o.UInt{constructor(e,t,n){super(t,n),this.values=e}encode(e,t,n){if(void 0!==this.values[e])return super.encode(this.values[e],t,n);throw new Error("Invalid "+this.property)}decode(e,t){const n=super.decode(e,t),i=Object.entries(this.values).find((([,e])=>e===n));if(i)return i[0];throw new Error("Invalid "+this.property)}}function E(e,t){return new w({buy:0,sell:1},e,t)}function Q(e,t){return new w({limit:0,ioc:1,postOnly:2,market:3,postOnlySlide:4},t,e)}function b(e,t){return new w({decrementTake:0,cancelProvide:1,abortTransaction:2},t,e)}function k(e,t){return new w({above:0,below:1},t,e)}function v(e,t){return new w({absolute:0,relative:1},t,e)}t.sideLayout=E,t.orderTypeLayout=Q,t.selfTradeBehaviorLayout=b,t.triggerConditionLayout=k,t.advancedOrderTypeLayout=function(e,t){return new w({perpTrigger:0,spotTrigger:1},t,e)},t.expiryTypeLayout=v;class S extends o.Union{constructor(e,t,n){super(e,t,n)}decode(e,t){void 0===t&&(t=0);const n=this.discriminator.decode(e,t);return 11===n&&144===e.length||12===n&&30===e.length?e=i.concat([e,i.from([0])]):37===n&&141===e.length&&(e=i.concat([e,i.from([0,0])])),super.decode(e,t)}addVariant(e,t,n){return super.addVariant(e,t,n)}}t.MangoInstructionLayout=new S((0,o.u32)("instruction")),t.MangoInstructionLayout.addVariant(0,(0,o.struct)([h("signerNonce"),h("validInterval"),g("quoteOptimalUtil"),g("quoteOptimalRate"),g("quoteMaxRate")]),"InitMangoGroup"),t.MangoInstructionLayout.addVariant(1,(0,o.struct)([]),"InitMangoAccount"),t.MangoInstructionLayout.addVariant(2,(0,o.struct)([h("quantity")]),"Deposit"),t.MangoInstructionLayout.addVariant(3,(0,o.struct)([h("quantity"),(0,o.u8)("allowBorrow")]),"Withdraw"),t.MangoInstructionLayout.addVariant(4,(0,o.struct)([g("maintLeverage"),g("initLeverage"),g("liquidationFee"),g("optimalUtil"),g("optimalRate"),g("maxRate")]),"AddSpotMarket"),t.MangoInstructionLayout.addVariant(5,(0,o.struct)([h("marketIndex")]),"AddToBasket"),t.MangoInstructionLayout.addVariant(6,(0,o.struct)([h("quantity")]),"Borrow"),t.MangoInstructionLayout.addVariant(7,(0,o.struct)([]),"CachePrices"),t.MangoInstructionLayout.addVariant(8,(0,o.struct)([]),"CacheRootBanks"),t.MangoInstructionLayout.addVariant(9,(0,o.struct)([E(4,"side"),h("limitPrice"),h("maxBaseQuantity"),h("maxQuoteQuantity"),b("selfTradeBehavior",4),Q("orderType",4),h("clientId"),(0,o.u16)("limit")]),"PlaceSpotOrder"),t.MangoInstructionLayout.addVariant(10,(0,o.struct)([]),"AddOracle"),t.MangoInstructionLayout.addVariant(11,(0,o.struct)([g("maintLeverage"),g("initLeverage"),g("liquidationFee"),g("makerFee"),g("takerFee"),p("baseLotSize"),p("quoteLotSize"),g("rate"),g("maxDepthBps"),h("targetPeriodLength"),h("mngoPerPeriod"),(0,o.u8)("exp")]),"AddPerpMarket"),t.MangoInstructionLayout.addVariant(12,(0,o.struct)([p("price"),p("quantity"),h("clientOrderId"),E(1,"side"),Q("orderType",1),y("reduceOnly")]),"PlacePerpOrder"),t.MangoInstructionLayout.addVariant(13,(0,o.struct)([h("clientOrderId"),y("invalidIdOk")]),"CancelPerpOrderByClientId"),t.MangoInstructionLayout.addVariant(14,(0,o.struct)([m("orderId"),y("invalidIdOk")]),"CancelPerpOrder"),t.MangoInstructionLayout.addVariant(15,(0,o.struct)([h("limit")]),"ConsumeEvents"),t.MangoInstructionLayout.addVariant(16,(0,o.struct)([]),"CachePerpMarkets"),t.MangoInstructionLayout.addVariant(17,(0,o.struct)([]),"UpdateFunding"),t.MangoInstructionLayout.addVariant(18,(0,o.struct)([g("price")]),"SetOracle"),t.MangoInstructionLayout.addVariant(19,(0,o.struct)([]),"SettleFunds"),t.MangoInstructionLayout.addVariant(20,(0,o.struct)([E(4,"side"),f("orderId")]),"CancelSpotOrder"),t.MangoInstructionLayout.addVariant(21,(0,o.struct)([]),"UpdateRootBank"),t.MangoInstructionLayout.addVariant(22,(0,o.struct)([h("marketIndex")]),"SettlePnl"),t.MangoInstructionLayout.addVariant(23,(0,o.struct)([h("tokenIndex"),h("quantity")]),"SettleBorrow"),t.MangoInstructionLayout.addVariant(24,(0,o.struct)([(0,o.u8)("limit")]),"ForceCancelSpotOrders"),t.MangoInstructionLayout.addVariant(25,(0,o.struct)([(0,o.u8)("limit")]),"ForceCancelPerpOrders"),t.MangoInstructionLayout.addVariant(26,(0,o.struct)([g("maxLiabTransfer")]),"LiquidateTokenAndToken"),t.MangoInstructionLayout.addVariant(27,(0,o.struct)([(0,o.u8)("assetType"),h("assetIndex"),(0,o.u8)("liabType"),h("liabIndex"),g("maxLiabTransfer")]),"LiquidateTokenAndPerp"),t.MangoInstructionLayout.addVariant(28,(0,o.struct)([p("baseTransferRequest")]),"LiquidatePerpMarket"),t.MangoInstructionLayout.addVariant(29,(0,o.struct)([]),"SettleFees"),t.MangoInstructionLayout.addVariant(30,(0,o.struct)([h("liabIndex"),g("maxLiabTransfer")]),"ResolvePerpBankruptcy"),t.MangoInstructionLayout.addVariant(31,(0,o.struct)([g("maxLiabTransfer")]),"ResolveTokenBankruptcy"),t.MangoInstructionLayout.addVariant(32,(0,o.struct)([]),"InitSpotOpenOrders"),t.MangoInstructionLayout.addVariant(33,(0,o.struct)([]),"RedeemMngo"),t.MangoInstructionLayout.addVariant(34,(0,o.struct)([(0,o.seq)((0,o.u8)(),t.INFO_LEN,"info")]),"AddMangoAccountInfo"),t.MangoInstructionLayout.addVariant(35,(0,o.struct)([h("quantity")]),"DepositMsrm"),t.MangoInstructionLayout.addVariant(36,(0,o.struct)([h("quantity")]),"WithdrawMsrm"),t.MangoInstructionLayout.addVariant(37,(0,o.struct)([y("maintLeverageOption"),g("maintLeverage"),y("initLeverageOption"),g("initLeverage"),y("liquidationFeeOption"),g("liquidationFee"),y("makerFeeOption"),g("makerFee"),y("takerFeeOption"),g("takerFee"),y("rateOption"),g("rate"),y("maxDepthBpsOption"),g("maxDepthBps"),y("targetPeriodLengthOption"),h("targetPeriodLength"),y("mngoPerPeriodOption"),h("mngoPerPeriod"),y("expOption"),(0,o.u8)("exp")]),"ChangePerpMarketParams"),t.MangoInstructionLayout.addVariant(38,(0,o.struct)([]),"SetGroupAdmin"),t.MangoInstructionLayout.addVariant(39,(0,o.struct)([(0,o.u8)("limit")]),"CancelAllPerpOrders"),t.MangoInstructionLayout.addVariant(41,(0,o.struct)([E(4,"side"),h("limitPrice"),h("maxBaseQuantity"),h("maxQuoteQuantity"),b("selfTradeBehavior",4),Q("orderType",4),h("clientOrderId"),(0,o.u16)("limit")]),"PlaceSpotOrder2"),t.MangoInstructionLayout.addVariant(42,(0,o.struct)([]),"InitAdvancedOrders"),t.MangoInstructionLayout.addVariant(43,(0,o.struct)([Q("orderType",1),E(1,"side"),k("triggerCondition",1),y("reduceOnly"),h("clientOrderId"),p("price"),p("quantity"),g("triggerPrice")]),"AddPerpTriggerOrder"),t.MangoInstructionLayout.addVariant(44,(0,o.struct)([(0,o.u8)("orderIndex")]),"RemoveAdvancedOrder"),t.MangoInstructionLayout.addVariant(45,(0,o.struct)([(0,o.u8)("orderIndex")]),"ExecutePerpTriggerOrder"),t.MangoInstructionLayout.addVariant(46,(0,o.struct)([g("maintLeverage"),g("initLeverage"),g("liquidationFee"),g("makerFee"),g("takerFee"),p("baseLotSize"),p("quoteLotSize"),g("rate"),g("maxDepthBps"),h("targetPeriodLength"),h("mngoPerPeriod"),(0,o.u8)("exp"),(0,o.u8)("version"),(0,o.u8)("lmSizeShift"),(0,o.u8)("baseDecimals")]),"CreatePerpMarket"),t.MangoInstructionLayout.addVariant(47,(0,o.struct)([y("maintLeverageOption"),g("maintLeverage"),y("initLeverageOption"),g("initLeverage"),y("liquidationFeeOption"),g("liquidationFee"),y("makerFeeOption"),g("makerFee"),y("takerFeeOption"),g("takerFee"),y("rateOption"),g("rate"),y("maxDepthBpsOption"),g("maxDepthBps"),y("targetPeriodLengthOption"),h("targetPeriodLength"),y("mngoPerPeriodOption"),h("mngoPerPeriod"),y("expOption"),(0,o.u8)("exp"),y("versionOption"),(0,o.u8)("version"),y("lmSizeShiftOption"),(0,o.u8)("lmSizeShift")]),"ChangePerpMarketParams2"),t.MangoInstructionLayout.addVariant(48,(0,o.struct)([]),"UpdateMarginBasket"),t.MangoInstructionLayout.addVariant(49,(0,o.struct)([(0,o.u32)("maxMangoAccounts")]),"ChangeMaxMangoAccounts"),t.MangoInstructionLayout.addVariant(50,(0,o.struct)([]),"CloseMangoAccount"),t.MangoInstructionLayout.addVariant(51,(0,o.struct)([]),"CloseSpotOpenOrders"),t.MangoInstructionLayout.addVariant(52,(0,o.struct)([]),"CloseAdvancedOrders"),t.MangoInstructionLayout.addVariant(53,(0,o.struct)([]),"CreateDustAccount"),t.MangoInstructionLayout.addVariant(54,(0,o.struct)([]),"ResolveDust"),t.MangoInstructionLayout.addVariant(55,(0,o.struct)([h("accountNum")]),"CreateMangoAccount"),t.MangoInstructionLayout.addVariant(56,(0,o.struct)([]),"UpgradeMangoAccountV0V1"),t.MangoInstructionLayout.addVariant(57,(0,o.struct)([E(1,"side"),(0,o.u8)("limit")]),"CancelPerpOrdersSide"),t.MangoInstructionLayout.addVariant(58,(0,o.struct)([]),"SetDelegate"),t.MangoInstructionLayout.addVariant(59,(0,o.struct)([y("maintLeverageOption"),g("maintLeverage"),y("initLeverageOption"),g("initLeverage"),y("liquidationFeeOption"),g("liquidationFee"),y("optimalUtilOption"),g("optimalUtil"),y("optimalRateOption"),g("optimalRate"),y("maxRateOption"),g("maxRate"),y("versionOption"),(0,o.u8)("version")]),"ChangeSpotMarketParams"),t.MangoInstructionLayout.addVariant(60,(0,o.struct)([]),"CreateSpotOpenOrders"),t.MangoInstructionLayout.addVariant(61,(0,o.struct)([(0,o.u32)("refSurchargeCentibps"),(0,o.u32)("refShareCentibps"),h("refMngoRequired")]),"ChangeReferralFeeParams"),t.MangoInstructionLayout.addVariant(62,(0,o.struct)([]),"SetReferrerMemory"),t.MangoInstructionLayout.addVariant(63,(0,o.struct)([(0,o.seq)((0,o.u8)(),t.INFO_LEN,"referrerId")]),"RegisterReferrerId"),t.MangoInstructionLayout.addVariant(64,(0,o.struct)([p("price"),p("maxBaseQuantity"),p("maxQuoteQuantity"),h("clientOrderId"),h("expiryTimestamp"),E(1,"side"),Q("orderType",1),y("reduceOnly"),(0,o.u8)("limit"),v("expiryType",1)]),"PlacePerpOrder2"),t.MangoInstructionLayout.addVariant(65,(0,o.struct)([(0,o.u8)("limit")]),"CancelAllSpotOrders"),t.MangoInstructionLayout.addVariant(66,(0,o.struct)([h("quantity"),(0,o.u8)("allowBorrow")]),"Withdraw2"),t.MangoInstructionLayout.addVariant(67,(0,o.struct)([h("marketIndex"),(0,o.u8)("marketMode"),(0,o.u8)("marketType")]),"SetMarketMode"),t.MangoInstructionLayout.addVariant(68,(0,o.struct)([]),"RemovePerpMarket"),t.MangoInstructionLayout.addVariant(69,(0,o.struct)([]),"SwapSpotMarket"),t.MangoInstructionLayout.addVariant(70,(0,o.struct)([]),"RemoveSpotMarket"),t.MangoInstructionLayout.addVariant(71,(0,o.struct)([]),"RemoveOracle"),t.MangoInstructionLayout.addVariant(72,(0,o.struct)([h("maxLiquidateAmount")]),"LiquidateDelistingToken"),t.MangoInstructionLayout.addVariant(73,(0,o.struct)([]),"ForceSettlePerpPosition"),t.MangoInstructionLayout.addVariant(74,(0,o.struct)([(0,o.u32)("refSurchargeCentibpsTier1"),(0,o.u32)("refShareCentibpsTier1"),(0,o.u16)("refSurchargeCentibpsTier2"),(0,o.u16)("refShareCentibpsTier2"),h("refMngoRequired"),(0,o.u8)("refMngoTier2Factor")]),"ChangeReferralFeeParams2");const M=Math.max(...Object.values(t.MangoInstructionLayout.registry).map((e=>e.span)));t.encodeMangoInstruction=function(e){const n=i.alloc(M),r=t.MangoInstructionLayout.encode(e,n);return n.slice(0,r)};class D extends o.Blob{constructor(e){super(32,e)}decode(e,t){return new A.PublicKey(super.decode(e,t))}encode(e,t,n){return super.encode(e.toBuffer(),t,n)}}function N(e=""){return new D(e)}var T,P,O;t.PublicKeyLayout=D,t.publicKeyLayout=N,t.DataType={MangoGroup:0,MangoAccount:1,RootBank:2,NodeBank:3,PerpMarket:4,Bids:5,Asks:6,MangoCache:7,EventQueue:8,AdvancedOrders:9,ReferrerMemory:10,ReferrerIdRecord:11},(O=t.AssetType||(t.AssetType={}))[O.Token=0]="Token",O[O.Perp=1]="Perp",(P=t.MarketMode||(t.MarketMode={}))[P.Default=0]="Default",P[P.Active=1]="Active",P[P.CloseOnly=2]="CloseOnly",P[P.ForceCloseOnly=3]="ForceCloseOnly",P[P.Inactive=4]="Inactive",P[P.SwappingSpotMarket=5]="SwappingSpotMarket",(T=t.AdvancedOrderType||(t.AdvancedOrderType={}))[T.PerpTrigger=0]="PerpTrigger",T[T.SpotTrigger=1]="SpotTrigger";class F{constructor(e){Object.assign(this,e)}}t.MetaData=F;class R extends o.Structure{constructor(e){super([(0,o.u8)("dataType"),(0,o.u8)("version"),(0,o.u8)("isInitialized"),(0,o.seq)((0,o.u8)(),5,"extraInfo")],e)}decode(e,t){return new F(super.decode(e,t))}encode(e,t,n){return super.encode(e.toBuffer(),t,n)}}function G(e=""){return new R(e)}t.MetaDataLayout=R,t.metaDataLayout=G;class x{constructor(e){Object.assign(this,e)}isEmpty(){return this.mint.equals(c.zeroKey)}}t.TokenInfo=x;class U extends o.Structure{constructor(e){super([N("mint"),N("rootBank"),(0,o.u8)("decimals"),(0,o.u8)("spotMarketMode"),(0,o.u8)("perpMarketMode"),y("oracleInactive"),(0,o.seq)((0,o.u8)(),4,"padding")],e)}decode(e,t){return new x(super.decode(e,t))}encode(e,t,n){return super.encode(e.toBuffer(),t,n)}}function _(e=""){return new U(e)}t.TokenInfoLayout=U,t.tokenInfoLayout=_;class L{constructor(e){Object.assign(this,e)}isEmpty(){return this.spotMarket.equals(c.zeroKey)}}t.SpotMarketInfo=L;class K extends o.Structure{constructor(e){super([N("spotMarket"),g("maintAssetWeight"),g("initAssetWeight"),g("maintLiabWeight"),g("initLiabWeight"),g("liquidationFee")],e)}decode(e,t){return new L(super.decode(e,t))}encode(e,t,n){return super.encode(e.toBuffer(),t,n)}}function Y(e=""){return new K(e)}t.SpotMarketInfoLayout=K,t.spotMarketInfoLayout=Y;class j{constructor(e){Object.assign(this,e)}isEmpty(){return this.perpMarket.equals(c.zeroKey)}}t.PerpMarketInfo=j;class W extends o.Structure{constructor(e){super([N("perpMarket"),g("maintAssetWeight"),g("initAssetWeight"),g("maintLiabWeight"),g("initLiabWeight"),g("liquidationFee"),g("makerFee"),g("takerFee"),p("baseLotSize"),p("quoteLotSize")],e)}decode(e,t){return new j(super.decode(e,t))}encode(e,t,n){return super.encode(e.toBuffer(),t,n)}}function J(e=""){return new W(e)}t.PerpMarketInfoLayout=W,t.perpMarketInfoLayout=J;class q extends o.Structure{constructor(e){super([p("basePosition"),g("quotePosition"),g("longSettledFunding"),g("shortSettledFunding"),p("bidsQuantity"),p("asksQuantity"),p("takerBase"),p("takerQuote"),h("mngoAccrued")],e)}decode(e,t){return new u.default(super.decode(e,t))}encode(e,t,n){return super.encode(e.toBuffer(),t,n)}}function Z(e=""){return new q(e)}t.PerpAccountLayout=q,t.perpAccountLayout=Z,t.MangoGroupLayout=(0,o.struct)([G("metaData"),h("numOracles"),(0,o.seq)(_(),t.MAX_TOKENS,"tokens"),(0,o.seq)(Y(),t.MAX_PAIRS,"spotMarkets"),(0,o.seq)(J(),t.MAX_PAIRS,"perpMarkets"),(0,o.seq)(N(),t.MAX_PAIRS,"oracles"),h("signerNonce"),N("signerKey"),N("admin"),N("dexProgramId"),N("mangoCache"),h("validInterval"),N("insuranceVault"),N("srmVault"),N("msrmVault"),N("feesVault"),(0,o.u32)("maxMangoAccounts"),(0,o.u32)("numMangoAccounts"),(0,o.u32)("refSurchargeCentibpsTier1"),(0,o.u32)("refShareCentibpsTier1"),h("refMngoRequired"),(0,o.u16)("refSurchargeCentibpsTier2"),(0,o.u16)("refShareCentibpsTier2"),(0,o.u8)("refMngoTier2Factor"),(0,o.seq)((0,o.u8)(),3,"padding")]),t.MangoAccountLayout=(0,o.struct)([G("metaData"),N("mangoGroup"),N("owner"),(0,o.seq)(y(),t.MAX_PAIRS,"inMarginBasket"),(0,o.u8)("numInMarginBasket"),(0,o.seq)(g(),t.MAX_TOKENS,"deposits"),(0,o.seq)(g(),t.MAX_TOKENS,"borrows"),(0,o.seq)(N(),t.MAX_PAIRS,"spotOpenOrders"),(0,o.seq)(Z(),t.MAX_PAIRS,"perpAccounts"),(0,o.seq)((0,o.u8)(),t.MAX_PERP_OPEN_ORDERS,"orderMarket"),(0,o.seq)(E(1),t.MAX_PERP_OPEN_ORDERS,"orderSide"),(0,o.seq)(m(),t.MAX_PERP_OPEN_ORDERS,"orders"),(0,o.seq)(h(),t.MAX_PERP_OPEN_ORDERS,"clientOrderIds"),h("msrmAmount"),y("beingLiquidated"),y("isBankrupt"),(0,o.seq)((0,o.u8)(),t.INFO_LEN,"info"),N("advancedOrdersKey"),y("notUpgradable"),N("delegate"),(0,o.seq)((0,o.u8)(),5,"padding")]),t.RootBankLayout=(0,o.struct)([G("metaData"),g("optimalUtil"),g("optimalRate"),g("maxRate"),h("numNodeBanks"),(0,o.seq)(N(),t.MAX_NODE_BANKS,"nodeBanks"),g("depositIndex"),g("borrowIndex"),h("lastUpdated"),(0,o.seq)((0,o.u8)(),64,"padding")]),t.NodeBankLayout=(0,o.struct)([G("metaData"),g("deposits"),g("borrows"),N("vault")]),t.StubOracleLayout=(0,o.struct)([(0,o.seq)((0,o.u8)(),8),g("price"),h("lastUpdate")]);class z extends o.Structure{constructor(e){super([g("rate"),g("maxDepthBps"),h("periodStart"),h("targetPeriodLength"),h("mngoLeft"),h("mngoPerPeriod")],e)}decode(e,t){return new F(super.decode(e,t))}encode(e,t,n){return super.encode(e.toBuffer(),t,n)}}function H(e=""){return new z(e)}t.LiquidityMiningInfoLayout=z,t.liquidityMiningInfoLayout=H,t.PerpMarketLayout=(0,o.struct)([G("metaData"),N("mangoGroup"),N("bids"),N("asks"),N("eventQueue"),p("quoteLotSize"),p("baseLotSize"),g("longFunding"),g("shortFunding"),p("openInterest"),h("lastUpdated"),h("seqNum"),g("feesAccrued"),H("liquidityMiningInfo"),N("mngoVault")]),t.PerpEventLayout=(0,o.union)((0,o.u8)("eventType"),(0,o.blob)(199),"event"),t.PerpEventLayout.addVariant(0,(0,o.struct)([E(1,"takerSide"),(0,o.u8)("makerSlot"),y("makerOut"),(0,o.u8)("version"),(0,o.seq)((0,o.u8)(),3),h("timestamp"),h("seqNum"),N("maker"),m("makerOrderId"),h("makerClientOrderId"),g("makerFee"),p("bestInitial"),h("makerTimestamp"),N("taker"),m("takerOrderId"),h("takerClientOrderId"),g("takerFee"),p("price"),p("quantity")]),"fill"),t.PerpEventLayout.addVariant(1,(0,o.struct)([E(1,"side"),(0,o.u8)("slot"),(0,o.seq)((0,o.u8)(),5),h("timestamp"),h("seqNum"),N("owner"),p("quantity"),(0,o.seq)((0,o.u8)(),136,"padding")]),"out"),t.PerpEventLayout.addVariant(2,(0,o.struct)([(0,o.seq)((0,o.u8)(),7),h("timestamp"),h("seqNum"),N("liqee"),N("liqor"),g("price"),p("quantity"),g("liquidationFee"),(0,o.seq)((0,o.u8)(),72,"padding")]),"liquidate"),t.PerpEventQueueHeaderLayout=(0,o.struct)([G("metaData"),h("head"),h("count"),h("seqNum")]),t.PerpEventQueueLayout=(0,o.struct)([G("metaData"),h("head"),h("count"),h("seqNum"),(0,o.seq)(t.PerpEventLayout,(0,o.greedy)(t.PerpEventLayout.span),"events")]);const V=(0,o.union)((0,o.u32)("tag"),(0,o.blob)(84),"node");V.addVariant(0,(0,o.struct)([]),"uninitialized"),V.addVariant(1,(0,o.struct)([(0,o.u32)("prefixLen"),f("key"),(0,o.seq)((0,o.u32)(),2,"children")]),"innerNode"),V.addVariant(2,(0,o.struct)([(0,o.u8)("ownerSlot"),Q("orderType",1),(0,o.u8)("version"),(0,o.u8)("timeInForce"),f("key"),N("owner"),h("quantity"),h("clientOrderId"),h("bestInitial"),h("timestamp")]),"leafNode"),V.addVariant(3,(0,o.struct)([(0,o.u32)("next")]),"freeNode"),V.addVariant(4,(0,o.struct)([]),"lastFreeNode"),t.BookSideLayout=(0,o.struct)([G("metaData"),(0,o.nu64)("bumpIndex"),(0,o.nu64)("freeListLen"),(0,o.u32)("freeListHead"),(0,o.u32)("rootNode"),(0,o.nu64)("leafCount"),(0,o.seq)(V,1024,"nodes")]);class X{constructor(e){Object.assign(this,e)}}t.PriceCache=X;class $ extends o.Structure{constructor(e){super([g("price"),h("lastUpdate")],e)}decode(e,t){return new X(super.decode(e,t))}encode(e,t,n){return super.encode(e.toBuffer(),t,n)}}function ee(e=""){return new $(e)}t.PriceCacheLayout=$,t.priceCacheLayout=ee;class te{constructor(e){Object.assign(this,e)}}t.RootBankCache=te;class ne extends o.Structure{constructor(e){super([g("depositIndex"),g("borrowIndex"),h("lastUpdate")],e)}decode(e,t){return new te(super.decode(e,t))}encode(e,t,n){return super.encode(e.toBuffer(),t,n)}}function ie(e=""){return new ne(e)}t.RootBankCacheLayout=ne,t.rootBankCacheLayout=ie;class re{constructor(e){Object.assign(this,e)}}t.PerpMarketCache=re;class oe extends o.Structure{constructor(e){super([g("longFunding"),g("shortFunding"),h("lastUpdate")],e)}decode(e,t){return new re(super.decode(e,t))}encode(e,t,n){return super.encode(e.toBuffer(),t,n)}}function Ae(e=""){return new oe(e)}t.PerpMarketCacheLayout=oe,t.perpMarketCacheLayout=Ae,t.MangoCacheLayout=(0,o.struct)([G("metaData"),(0,o.seq)(ee(),t.MAX_PAIRS,"priceCache"),(0,o.seq)(ie(),t.MAX_TOKENS,"rootBankCache"),(0,o.seq)(Ae(),t.MAX_PAIRS,"perpMarketCache")]),t.MangoCache=class{constructor(e,t){this.publicKey=e,Object.assign(this,t)}getPrice(e){return e===t.QUOTE_INDEX?s.ONE_I80F48:this.priceCache[e].price}},t.NodeBank=class{constructor(e,t){this.publicKey=e,Object.assign(this,t)}},t.TokenAccountLayout=(0,o.struct)([N("mint"),N("owner"),(0,o.nu64)("amount"),(0,o.blob)(93)]);const se=(0,o.union)((0,o.u8)("advancedOrderType"),(0,o.blob)(79),"advancedOrder");se.addVariant(0,(0,o.struct)([y("isActive"),(0,o.u8)("marketIndex"),Q("orderType",1),E(1,"side"),k("triggerCondition",1),y("reduceOnly"),(0,o.seq)((0,o.u8)(),1,"padding0"),h("clientOrderId"),p("price"),p("quantity"),g("triggerPrice"),(0,o.seq)((0,o.u8)(),32,"padding1")]),"perpTrigger"),t.AdvancedOrdersLayout=(0,o.struct)([G("metaData"),(0,o.seq)(se,32,"orders")]),t.ReferrerMemory=class{constructor(e){Object.assign(this,e)}},t.ReferrerMemoryLayout=(0,o.struct)([G("metaData"),N("referrerMangoAccount")]),t.ReferrerIdRecord=class{constructor(e){Object.assign(this,e)}get referrerId(){return this.id?String.fromCharCode(...this.id).replace(new RegExp(String.fromCharCode(0),"g"),""):""}},t.ReferrerIdRecordLayout=(0,o.struct)([G("metaData"),N("referrerMangoAccount"),(0,o.seq)((0,o.u8)(),t.INFO_LEN,"id")])},26959:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.adapterHasSignAllTransactions=void 0,t.adapterHasSignAllTransactions=e=>!!e.signAllTransactions},88191:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.NEG_ONE_I80F48=t.ZERO_I80F48=t.ONE_I80F48=t.I80F48=void 0;const r=i(n(39098)),o=i(n(75827));(0,i(n(30755)).default)(o.default);class A{constructor(e){if(e.lt(A.MIN_BN)||e.gt(A.MAX_BN))throw new Error("Number out of range");this.data=e}static fromNumber(e){let t=Math.trunc(e),n=new r.default(t).iushln(48);return n.iadd(new r.default((e-t)*A.MULTIPLIER_NUMBER)),new A(n)}static fromNumberOrUndef(e){return void 0===e?void 0:A.fromNumber(e)}static fromOptionalString(e){return e?A.fromString(e):void 0}static fromString(e){const t=new o.default(e).times(A.MULTIPLIER_BIG),n=new r.default(t.round().toFixed());return new A(n)}static fromI64(e){return new A(e.ushln(48))}static fromU64(e){return new A(e.ushln(48))}toTwos(){return this.data.toTwos(A.MAX_SIZE)}toString(){return this.toBig().toFixed()}toFixed(e){return this.toBig().round(14).toFixed(e)}toLocaleString(e,t){return this.toNumber().toLocaleString(e,t)}toFormat(e){return this.toBig().toFormat(e)}toBig(){return new o.default(this.data.toString()).div(A.MULTIPLIER_BIG)}static fromBig(e){return new A(new r.default(e.mul(A.MULTIPLIER_BIG).round().toFixed()))}toNumber(){return this.toBig().toNumber()}static fromArray(e){if(16!==e.length)throw new Error("Uint8Array must be of length 16");return new A(new r.default(e,"le").fromTwos(A.MAX_SIZE))}toArray(){return new Uint8Array(this.data.toTwos(A.MAX_SIZE).toArray("le",16))}toArrayLike(e,t,n){return this.data.toTwos(A.MAX_SIZE).toArrayLike(e,t,n)}getData(){return this.data}getBinaryLayout(){return this.data.toTwos(A.MAX_SIZE).toString(2,A.MAX_SIZE).replace(/-/g,"")}add(e){return new A(this.data.add(e.getData()))}sub(e){return new A(this.data.sub(e.getData()))}iadd(e){return this.data.iadd(e.getData()),this}isub(e){return this.data.isub(e.getData()),this}floor(){return A.fromBig(this.toBig().round(void 0,0))}ceil(){return A.fromBig(this.toBig().round(void 0,3))}frac(){return new A(this.data.maskn(A.FRACTIONS))}mul(e){return new A(this.data.mul(e.data).iushrn(A.FRACTIONS))}imul(e){return this.data.imul(e.getData()).iushrn(A.FRACTIONS),this}div(e){return new A(this.data.ushln(A.FRACTIONS).div(e.data))}idiv(e){return this.data=this.data.iushln(A.FRACTIONS).div(e.data),this}gt(e){return this.data.gt(e.getData())}lt(e){return this.data.lt(e.getData())}gte(e){return this.data.gte(e.getData())}lte(e){return this.data.lte(e.getData())}eq(e){return this.data.eq(e.getData())}cmp(e){return this.data.cmp(e.getData())}neg(){return this.mul(t.NEG_ONE_I80F48)}isPos(){return this.gt(t.ZERO_I80F48)}isNeg(){return this.data.isNeg()}isZero(){return this.eq(t.ZERO_I80F48)}min(e){return this.lte(e)?this:e}max(e){return this.gte(e)?this:e}abs(){return this.isNeg()?this.neg():this}}t.I80F48=A,A.MAX_SIZE=128,A.FRACTIONS=48,A.MULTIPLIER_BIG=new o.default(2).pow(A.FRACTIONS),A.MULTIPLIER_BN=new r.default(2).pow(new r.default(A.FRACTIONS)),A.MULTIPLIER_NUMBER=Math.pow(2,A.FRACTIONS),A.MAX_BN=new r.default(2).pow(new r.default(A.MAX_SIZE)).div(new r.default(2)).sub(new r.default(1)),A.MIN_BN=new r.default(2).pow(new r.default(A.MAX_SIZE)).div(new r.default(2)).neg(),t.ONE_I80F48=A.fromString("1"),t.ZERO_I80F48=A.fromString("0"),t.NEG_ONE_I80F48=A.fromString("-1")},25447:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.findLargestTokenAccountForOwner=t.getTokenAccountsByOwnerWithWrappedSol=t.TokenAccount=void 0;const r=n(99174),o=n(15380);class A{constructor(e,t){this.publicKey=e,Object.assign(this,t)}}function s(e){return e.value.map((({pubkey:e,account:t})=>new A(e,o.TokenAccountLayout.decode(t.data))))}t.TokenAccount=A,t.getTokenAccountsByOwnerWithWrappedSol=function(e,t){return i(this,void 0,void 0,(function*(){const n=e.getAccountInfo(t),i=e.getTokenAccountsByOwner(t,{programId:r.TokenInstructions.TOKEN_PROGRAM_ID}),[o,a]=yield Promise.all([n,i]),c=s(a);return[new A(t,{mint:r.TokenInstructions.WRAPPED_SOL_MINT,owner:t,amount:(null==o?void 0:o.lamports)||0})].concat(c)}))},t.findLargestTokenAccountForOwner=function(e,t,n){return i(this,void 0,void 0,(function*(){const i=yield e.getTokenAccountsByOwner(t,{mint:n},e.commitment);let r=null;for(const e of s(i))(!r||e.amount>r.amount)&&(r=e);if(!r)throw new Error("No accounts for this token");return r}))}},75506:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},27614:function(e,t,n){"use strict";var i=n(49500),r=n(55872).Buffer,o=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},A=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.prependFeePrioritizationIx=t.findPerpMarketParams=t.calculateLotSizes=t.throwUndefined=t.getMultipleAccounts=t.clamp=t.getFilteredProgramAccounts=t.createSignerKeyAndNonce=t.createTokenAccountInstructions=t.createAccountInstruction=t.simulateTransaction=t.sleep=t.awaitTransactionSignatureConfirmation=t.splitOpenOrders=t.getWeights=t.MangoError=t.TimeoutError=t.nativeI80F48ToUi=t.nativeToUi=t.uiToNative=t.optionalBNFromString=t.promiseNull=t.promiseUndef=t.zeroKey=t.I64_MAX_BN=t.U64_MAX_BN=t.ONE_BN=t.ZERO_BN=t.MAXIMUM_NUMBER_OF_BLOCKS_FOR_TRANSACTION=void 0;const s=A(n(39098)),a=n(97212),c=n(99174),u=n(88191);t.MAXIMUM_NUMBER_OF_BLOCKS_FOR_TRANSACTION=152,t.ZERO_BN=new s.default(0),t.ONE_BN=new s.default(1),t.U64_MAX_BN=new s.default("18446744073709551615"),t.I64_MAX_BN=new s.default("9223372036854775807").toTwos(64),t.zeroKey=new a.PublicKey(new Uint8Array(32)),t.promiseUndef=function(){return o(this,void 0,void 0,(function*(){}))},t.promiseNull=function(){return o(this,void 0,void 0,(function*(){return null}))},t.optionalBNFromString=function(e){return e?new s.default(e):void 0},t.uiToNative=function(e,t){return new s.default(Math.round(e*Math.pow(10,t)))},t.nativeToUi=function(e,t){return e/Math.pow(10,t)},t.nativeI80F48ToUi=function(e,t){return e.div(u.I80F48.fromNumber(Math.pow(10,t)))};class l extends Error{constructor({txid:e}){super(),this.message="Timed out awaiting confirmation. Please confirm in the explorer: ",this.txid=e}}t.TimeoutError=l;class g extends Error{constructor({txid:e,message:t}){super(),this.message=t,this.txid=e}}function d(e){return o(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}function h(e,t,n,i){const r=i*Math.pow(10,e),o=n*r/Math.pow(10,e-t);return{baseLotSize:new s.default(r),quoteLotSize:new s.default(o)}}t.MangoError=g,t.getWeights=function(e,t,n){return"Maint"===n?{spotAssetWeight:e.spotMarkets[t].maintAssetWeight,spotLiabWeight:e.spotMarkets[t].maintLiabWeight,perpAssetWeight:e.perpMarkets[t].maintAssetWeight,perpLiabWeight:e.perpMarkets[t].maintLiabWeight}:"Init"===n?{spotAssetWeight:e.spotMarkets[t].initAssetWeight,spotLiabWeight:e.spotMarkets[t].initLiabWeight,perpAssetWeight:e.perpMarkets[t].initAssetWeight,perpLiabWeight:e.perpMarkets[t].initLiabWeight}:{spotAssetWeight:u.ONE_I80F48,spotLiabWeight:u.ONE_I80F48,perpAssetWeight:u.ONE_I80F48,perpLiabWeight:u.ONE_I80F48}},t.splitOpenOrders=function(e){return{quoteFree:u.I80F48.fromU64(e.quoteTokenFree.add(e.referrerRebatesAccrued)),quoteLocked:u.I80F48.fromU64(e.quoteTokenTotal.sub(e.quoteTokenFree)),baseFree:u.I80F48.fromU64(e.baseTokenFree),baseLocked:u.I80F48.fromU64(e.baseTokenTotal.sub(e.baseTokenFree))}},t.awaitTransactionSignatureConfirmation=function(e,n,r,A,s){return o(this,void 0,void 0,(function*(){const a=s?s.lastValidBlockHeight+t.MAXIMUM_NUMBER_OF_BLOCKS_FOR_TRANSACTION:0;let c=!1,u=!1;const l=["finalized"];"confirmed"===A?l.push("confirmed"):"processed"===A&&(l.push("confirmed"),l.push("processed"));const g=yield new Promise(((t,A)=>{(()=>{o(this,void 0,void 0,(function*(){setTimeout((()=>{c||(0!==a?u=!0:(c=!0,i.log("Timed out for txid: ",e),A({timeout:!0})))}),n);try{r.onSignature(e,(e=>{c=!0,e.err?A(e.err):t(e)}),"processed")}catch(t){c=!0,i.log("WS error in setup",e,t)}for(;!c;)(()=>{o(this,void 0,void 0,(function*(){try{const n=[r.getSignatureStatuses([e])];u&&n.push(r.getBlockHeight("confirmed"));const[o,s]=yield Promise.all(n);void 0!==typeof s&&a<=s&&(c=!0,i.log("Timed out for txid: ",e),A({timeout:!0}));const g=o&&o.value[0];c||g&&(g.err?(i.log("REST error for",e,g),c=!0,A(g.err)):g.confirmations||l.includes(g.confirmationStatus)?(i.log("REST confirmed",e,g),c=!0,t(g)):i.log("REST not confirmed",e,g))}catch(t){c||i.log("REST connection error: txid",e,t)}}))})(),yield d(300)}))})()}));return c=!0,g}))},t.sleep=d,t.simulateTransaction=function(e,t,n){return o(this,void 0,void 0,(function*(){t.recentBlockhash=yield e._recentBlockhash(e._disableBlockhashCaching);const i=t.serializeMessage(),r=[t._serialize(i).toString("base64"),{encoding:"base64",commitment:n}],o=yield e._rpcRequest("simulateTransaction",r);if(o.error)throw new Error("failed to simulate transaction: "+o.error.message);return o.result}))},t.createAccountInstruction=function(e,t,n,i,r){return o(this,void 0,void 0,(function*(){const o=new a.Keypair;return{account:o,instruction:a.SystemProgram.createAccount({fromPubkey:t,newAccountPubkey:o.publicKey,lamports:r||(yield e.getMinimumBalanceForRentExemption(n)),space:n,programId:i})}}))},t.createTokenAccountInstructions=function(e,t,n,i,r){return o(this,void 0,void 0,(function*(){return[a.SystemProgram.createAccount({fromPubkey:t,newAccountPubkey:n,lamports:yield e.getMinimumBalanceForRentExemption(165),space:165,programId:c.TokenInstructions.TOKEN_PROGRAM_ID}),c.TokenInstructions.initializeAccount({account:n,mint:i,owner:r})]}))},t.createSignerKeyAndNonce=function(e,t){return o(this,void 0,void 0,(function*(){for(let n=0;n<=Number.MAX_SAFE_INTEGER;n++)try{const i=r.alloc(8);i.writeUInt32LE(n,0);const o=[t.toBuffer(),i];return{signerKey:yield a.PublicKey.createProgramAddress(o,e),signerNonce:n}}catch(e){continue}throw new Error("Could not generate signer key")}))},t.getFilteredProgramAccounts=function(e,t,n){var i;return o(this,void 0,void 0,(function*(){const o=yield e._rpcRequest("getProgramAccounts",[t.toBase58(),{commitment:e.commitment,filters:n,encoding:"base64"}]);if(o.error)throw new Error(o.error.message);if(o.result){const e=o.result.filter((e=>null===(null==e?void 0:e.account)));if(e.length>0)throw new Error(`gpa returned ${e.length} null results. ex: ${null===(i=e[0])||void 0===i?void 0:i.pubkey.toString()}`)}return o.result.map((({pubkey:e,account:{data:t,executable:n,owner:i,lamports:o}})=>({publicKey:new a.PublicKey(e),accountInfo:{data:r.from(t[0],"base64"),executable:n,owner:new a.PublicKey(i),lamports:o}})))}))},t.clamp=function(e,t,n){return en?n:e},t.getMultipleAccounts=function e(t,n,i){var A;return o(this,void 0,void 0,(function*(){const o=n.length;if(0===o)return[];if(o>100){const r=Math.floor(n.length/2);return Promise.all([e(t,n.slice(0,r),i),e(t,n.slice(r,o),i)]).then((e=>e[0].concat(e[1])))}const s=n.map((e=>e.toBase58()));i||(i=t.commitment);const c=i?[s,{commitment:i}]:[s],u=yield t._rpcRequest("getMultipleAccounts",c);if(u.error)throw new Error(u.error.message);if(u.result){const e=u.result.value.filter((e=>null===(null==e?void 0:e.account)));if(e.length>0)throw new Error(`gma returned ${e.length} null results. ex: ${null===(A=e[0])||void 0===A?void 0:A.pubkey.toString()}`)}return u.result.value.map((({data:e,executable:t,lamports:i,owner:o},A)=>({publicKey:n[A],context:u.result.context,accountInfo:{data:r.from(e[0],"base64"),executable:t,owner:new a.PublicKey(o),lamports:i}})))}))},t.throwUndefined=function(e){if(void 0===e)throw new Error("Undefined");return e},t.calculateLotSizes=h,t.findPerpMarketParams=function(e,t,n,i,r){const o=Math.min(e,8),A=Math.pow(10,Math.round(Math.log10(n))-4),s=Math.pow(10,-Math.round(Math.log10(n))),a=s*n,c=Math.floor(500*r/a),u=Math.floor(Math.log2(c)-3),{baseLotSize:l,quoteLotSize:g}=h(o,t,A,s);return{maintLeverage:2*i,initLeverage:i,liquidationFee:1/(4*i),makerFee:-4e-4,takerFee:5e-4,baseLotSize:l.toNumber(),quoteLotSize:g.toNumber(),rate:.03,maxDepthBps:c,exp:2,maxNumEvents:256,targetPeriodLength:3600,mngoPerPeriod:r,version:1,lmSizeShift:u,decimals:o,minTick:A,minSize:s,baseDecimals:o}},t.prependFeePrioritizationIx=(e,t)=>{if(t){const n=a.ComputeBudgetProgram.setComputeUnitPrice({microLamports:t});e.instructions=[n,...e.instructions]}return e}},12424:function(e,t,n){"use strict";var i=n(55872).Buffer,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.map=t.array=t.rustEnum=t.str=t.vecU8=t.tagged=t.vec=t.bool=t.option=t.publicKey=t.i256=t.u256=t.i128=t.u128=t.i64=t.u64=t.struct=t.f64=t.f32=t.i32=t.u32=t.i16=t.u16=t.i8=t.u8=void 0;const o=n(84104),A=n(97212),s=r(n(39098));var a=n(84104);Object.defineProperty(t,"u8",{enumerable:!0,get:function(){return a.u8}}),Object.defineProperty(t,"i8",{enumerable:!0,get:function(){return a.s8}}),Object.defineProperty(t,"u16",{enumerable:!0,get:function(){return a.u16}}),Object.defineProperty(t,"i16",{enumerable:!0,get:function(){return a.s16}}),Object.defineProperty(t,"u32",{enumerable:!0,get:function(){return a.u32}}),Object.defineProperty(t,"i32",{enumerable:!0,get:function(){return a.s32}}),Object.defineProperty(t,"f32",{enumerable:!0,get:function(){return a.f32}}),Object.defineProperty(t,"f64",{enumerable:!0,get:function(){return a.f64}}),Object.defineProperty(t,"struct",{enumerable:!0,get:function(){return a.struct}});class c extends o.Layout{constructor(e,t,n){super(e,n),this.blob=(0,o.blob)(e),this.signed=t}decode(e,t=0){const n=new s.default(this.blob.decode(e,t),10,"le");return this.signed?n.fromTwos(8*this.span).clone():n}encode(e,t,n=0){return this.signed&&(e=e.toTwos(8*this.span)),this.blob.encode(e.toArrayLike(i,"le",this.span),t,n)}}function u(e){return new c(8,!1,e)}t.u64=u,t.i64=function(e){return new c(8,!0,e)},t.u128=function(e){return new c(16,!1,e)},t.i128=function(e){return new c(16,!0,e)},t.u256=function(e){return new c(32,!1,e)},t.i256=function(e){return new c(32,!0,e)};class l extends o.Layout{constructor(e,t,n,i){super(e.span,i),this.layout=e,this.decoder=t,this.encoder=n}decode(e,t){return this.decoder(this.layout.decode(e,t))}encode(e,t,n){return this.layout.encode(this.encoder(e),t,n)}getSpan(e,t){return this.layout.getSpan(e,t)}}t.publicKey=function(e){return new l((0,o.blob)(32),(e=>new A.PublicKey(e)),(e=>e.toBuffer()),e)};class g extends o.Layout{constructor(e,t){super(-1,t),this.layout=e,this.discriminator=(0,o.u8)()}encode(e,t,n=0){return null==e?this.discriminator.encode(0,t,n):(this.discriminator.encode(1,t,n),this.layout.encode(e,t,n+1)+1)}decode(e,t=0){const n=this.discriminator.decode(e,t);if(0===n)return null;if(1===n)return this.layout.decode(e,t+1);throw new Error("Invalid option "+this.property)}getSpan(e,t=0){const n=this.discriminator.decode(e,t);if(0===n)return 1;if(1===n)return this.layout.getSpan(e,t+1)+1;throw new Error("Invalid option "+this.property)}}function d(e){if(0===e)return!1;if(1===e)return!0;throw new Error("Invalid bool: "+e)}function h(e){return e?1:0}function p(e){const t=(0,o.u32)("length"),n=(0,o.struct)([t,(0,o.blob)((0,o.offset)(t,-t.span),"data")]);return new l(n,(({data:e})=>e),(e=>({data:e})),e)}t.option=function(e,t){return new g(e,t)},t.bool=function(e){return new l((0,o.u8)(),d,h,e)},t.vec=function(e,t){const n=(0,o.u32)("length"),i=(0,o.struct)([n,(0,o.seq)(e,(0,o.offset)(n,-n.span),"values")]);return new l(i,(({values:e})=>e),(e=>({values:e})),t)},t.tagged=function(e,t,n){const i=(0,o.struct)([u("tag"),t.replicate("data")]);return new l(i,(function({tag:t,data:n}){if(!t.eq(e))throw new Error("Invalid tag, expected: "+e.toString("hex")+", got: "+t.toString("hex"));return n}),(t=>({tag:e,data:t})),n)},t.vecU8=p,t.str=function(e){return new l(p(),(e=>e.toString("utf-8")),(e=>i.from(e,"utf-8")),e)},t.rustEnum=function(e,t,n){const i=(0,o.union)(null!=n?n:(0,o.u8)(),t);return e.forEach(((e,t)=>i.addVariant(t,e,e.property))),i},t.array=function(e,t,n){const i=(0,o.struct)([(0,o.seq)(e,t,"values")]);return new l(i,(({values:e})=>e),(e=>({values:e})),n)};class f extends o.Layout{constructor(e,t,n){super(e.span+t.span,n),this.keyLayout=e,this.valueLayout=t}decode(e,t){return t=t||0,[this.keyLayout.decode(e,t),this.valueLayout.decode(e,t+this.keyLayout.getSpan(e,t))]}encode(e,t,n){n=n||0;const i=this.keyLayout.encode(e[0],t,n);return i+this.valueLayout.encode(e[1],t,n+i)}getSpan(e,t){return this.keyLayout.getSpan(e,t)+this.valueLayout.getSpan(e,t)}}t.map=function(e,t,n){const i=(0,o.u32)("length"),r=(0,o.struct)([i,(0,o.seq)(new f(e,t),(0,o.offset)(i,-i.span),"values")]);return new l(r,(({values:e})=>new Map(e)),(e=>({values:Array.from(e.entries())})),n)}},54791:function(e,t,n){"use strict";!function(e,t){const n=o,i=e();for(;;)try{if(676841==parseInt(n(160))/1*(parseInt(n(163))/2)+parseInt(n(165))/3+parseInt(n(168))/4*(parseInt(n(170))/5)+-parseInt(n(166))/6+-parseInt(n(161))/7+parseInt(n(164))/8*(parseInt(n(167))/9)+parseInt(n(169))/10*(parseInt(n(162))/11))break;i.push(i.shift())}catch(e){i.push(i.shift())}}(A);var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getCurveAmount=t.TradeDirection=void 0;const r=i(n(62496));function o(e,t){const n=A();return(o=function(e,t){return n[e-=160]})(e,t)}function A(){const e=["6821460xnbaXB","834685plOpLf","697IZStSD","8099637kMyemb","11ZPZkHL","1060VcigxO","328FJIDEQ","1483176RpEDjt","3506280xacanq","8271OAdiqX","20fDUZTB"];return(A=function(){return e})()}function s(e,t){let n=t,i=e.div(n);return i.eq(0)?{q:new r.default(0),r:new r.default(0)}:(e.mod(t).gt(0)&&(i=i.plus(1),n=e.div(i),e.mod(i).gt(0)&&(n=n.plus(1))),{q:i,r:n})}t.TradeDirection={AtoB:"AtoB",BtoA:"BtoA"},t.getCurveAmount=function(e,n,i,o,A,a,c,u,l,g){let d=new r.default(0),h=new r.default(0),p=e.times(o.tradeFeeNumerator).div(o.tradeFeeDenominator),f=e.times(o.ownerTradeFeeNumerator).div(o.ownerTradeFeeDenominator);!p.isZero()&&p.lt(1)&&(p=new r.default(1)),!f.isZero()&&f.lt(1)&&(f=new r.default(1));const m=p.plus(f),I=o.tradeFeeNumerator.div(o.tradeFeeDenominator).plus(o.ownerTradeFeeNumerator.div(o.ownerTradeFeeDenominator)),y=e.minus(m),B=new r.default(10),C=B.pow(i.baseDecimals);if(1===i.freezeTrade)throw new Error("ProgramIsFrozen");if(!u.status.eq(1))throw new Error("InvalidPythStatus");if(n-u.publishSlot.toNumber()>c.pythSlotLimit.toNumber())throw new Error("InvalidPythSlot");if(u.confidence.div(u.price).gt(c.pythConfidenceLimit.div(c.configDenominator)))throw new Error("InvalidPythConfidence");let w=u.price;if(l){if(!l.status.eq(1))throw new Error("InvalidPythPcStatus");if(n-l.publishSlot.toNumber()>c.pythSlotLimit.toNumber())throw new Error("InvalidPythPcSlot");if(l.confidence.div(l.price).gt(c.pythConfidenceLimit.div(c.configDenominator)))throw new Error("InvalidPythPcConfidence");w=w.times(B.pow(Math.abs(l.exponent))).div(l.price)}let E=new r.default(0);var Q;if(E=(Q=w.div(c.lastPrice).minus(1),Q.toNumber()<0?Q.times(-1):Q).gt(c.adjustRatio.div(c.configDenominator))?w:c.lastPrice,c.oracleStatus.eq(1)&&g===t.TradeDirection.AtoB)throw new Error("OracleConfidence");if(c.oracleStatus.eq(2)&&g===t.TradeDirection.BtoA)throw new Error("OracleConfidence");const b=c.lastBalancedPrice,k=c.coefficientUp,v=c.coefficientDown;if(0===i.curveType){const{destinationAmountSwapped:e,poolPriceImpact:n}=function(e,n,i,o,A,a,c,u,l,g){let d=new r.default(0),h=new r.default(0),p=c.times(l.concentrationRatio),f=u.times(l.concentrationRatio),m=p.times(n).div(o).floor();switch(g){case t.TradeDirection.AtoB:{if(n.gt(i)&&m.gt(f)){let e=f.div(m).pow(a);p=p.times(e).floor(),f=f.times(e).floor()}else if(i.gt(n)&&f.gt(m)){let e=f.div(m).pow(A);p=p.times(e).floor(),f=f.times(e).floor()}else if(m.gt(f)){let e=f.div(m).pow(a);p=p.times(e).floor(),f=f.times(e).floor()}let t=new r.default(Math.sqrt(p.toNumber())),c=new r.default(Math.sqrt(f.toNumber())),u=new r.default(Math.sqrt(n.toNumber())).div(new r.default(Math.sqrt(o.toNumber()))),l=t.times(c);p=l.div(u).floor(),f=l.times(u).floor();let g=p.times(f),I=p.plus(e),{q:y,r:B}=s(g,I),C=y.floor();I=B.floor(),d=f.minus(C).floor();const w=f.div(p),E=f.minus(d).div(p.plus(e));h=w.minus(E).div(w);break}case t.TradeDirection.BtoA:{if(n.gt(i)&&m.gt(f)){let e=m.div(f).pow(A);p=p.times(e).floor(),f=f.times(e).floor()}else if(i.gt(n)&&f.gt(m)){let e=m.div(f).pow(a);p=p.times(e).floor(),f=f.times(e).floor()}else if(m.gt(f));else{let e=m.div(f).pow(a);p=p.times(e).floor(),f=f.times(e).floor()}let t=new r.default(Math.sqrt(p.toNumber())),c=new r.default(Math.sqrt(f.toNumber())),u=new r.default(Math.sqrt(n.toNumber())).div(new r.default(Math.sqrt(o.toNumber()))),l=t.times(c);p=l.div(u).floor(),f=l.times(u).floor();let g=p.times(f),I=f.plus(e),{q:y,r:B}=s(g,I),C=y.floor();I=B.floor(),d=p.minus(C).floor();const w=f.div(p),E=f.plus(e).div(p.minus(d));h=E.minus(w).div(E);break}}return{destinationAmountSwapped:d,poolPriceImpact:h}}(y,E,b,C,k,v,A,a,c,g);d=e,h=n}else if(1===i.curveType){const{destinationAmountSwapped:e,poolPriceImpact:n}=function(e,n,i,o,A,a,c,u,l,g){let d=new r.default(0),h=new r.default(0),p=c,f=u,m=p.times(n).div(o);switch(g){case t.TradeDirection.AtoB:{if(n.gt(i)&&m.gt(f)){let e=f.div(m).pow(a);p=p.times(e),f=f.times(e)}else if(i.gt(n)&&f.gt(m)){let e=f.div(m).pow(A);p=p.times(e),f=f.times(e)}else if(m.gt(f)){let e=f.div(m).pow(a);p=p.times(e),f=f.times(e)}p=p.times(l.concentrationRatio),f=f.times(l.concentrationRatio);let t=new r.default(Math.sqrt(p.toNumber())),c=new r.default(Math.sqrt(f.toNumber())),u=new r.default(Math.sqrt(n.toNumber())).div(new r.default(Math.sqrt(o.toNumber()))),g=t.times(c);p=g.div(u),f=g.times(u);let I=p.times(f),y=p.plus(e),{q:B,r:C}=s(I,y),w=B;y=C,d=f.minus(w);const E=f.div(p),Q=f.minus(d).div(p.plus(e));h=E.minus(Q).div(Q);break}case t.TradeDirection.BtoA:{if(n.gt(i)&&m.gt(f)){let e=m.div(f).pow(A);p=p.times(e),f=f.times(e)}else if(i.gt(n)&&f.gt(m)){let e=m.div(f).pow(a);p=p.times(e),f=f.times(e)}else if(m.gt(f));else{let e=m.div(f).pow(a);p=p.times(e),f=f.times(e)}p=p.times(l.concentrationRatio),f=f.times(l.concentrationRatio);let t=new r.default(Math.sqrt(p.toNumber())),c=new r.default(Math.sqrt(f.toNumber())),u=new r.default(Math.sqrt(n.toNumber())).div(new r.default(Math.sqrt(o.toNumber()))),g=t.times(c);p=g.div(u),f=g.times(u);let I=p.times(f),y=f.plus(e),{q:B,r:C}=s(I,y),w=B;y=C,d=p.minus(w);const E=f.div(p);h=f.plus(e).div(p.minus(d)).minus(E).div(E);break}}return d=new r.default(Math.floor(d.toNumber())),{destinationAmountSwapped:d,poolPriceImpact:h}}(y,E,b,C,k,v,A,a,c,g);d=e,h=n}if(d.lt(1))throw new Error("ZeroAmountOut");if(g===t.TradeDirection.AtoB&&d.gte(a))throw new Error("ExceedPoolBalance");if(g===t.TradeDirection.BtoA&&d.gte(A))throw new Error("ExceedPoolBalance");return{amountSwapped:d,priceImpact:h,fee:m,feePercent:I}}},54387:(e,t)=>{"use strict";function n(e,t){var r=i();return(n=function(e,t){return r[e-=479]})(e,t)}function i(){var e=["1694745jUGEri","4338000umBOti","4WuUdgy","1388090JCCzMZ","51nguveh","95098rfasWN","675828DzkhsZ","416648qcZVQI","6383456mEfFsf","14iZmbFl"];return(i=function(){return e})()}!function(e,t){for(var i=n,r=e();;)try{if(462831==parseInt(i(482))/1+-parseInt(i(480))/2*(parseInt(i(479))/3)+-parseInt(i(487))/4*(parseInt(i(485))/5)+-parseInt(i(481))/6*(parseInt(i(484))/7)+parseInt(i(483))/8+parseInt(i(486))/9+parseInt(i(488))/10)break;r.push(r.shift())}catch(e){r.push(r.shift())}}(i),Object.defineProperty(t,"__esModule",{value:!0}),t.IDL=void 0,t.IDL={version:"0.1.0",name:"lifinity_amm",instructions:[{name:"swap",accounts:[{name:"authority",isMut:!1,isSigner:!1},{name:"amm",isMut:!1,isSigner:!1},{name:"userTransferAuthority",isMut:!1,isSigner:!0},{name:"sourceInfo",isMut:!0,isSigner:!1},{name:"destinationInfo",isMut:!0,isSigner:!1},{name:"swapSource",isMut:!0,isSigner:!1},{name:"swapDestination",isMut:!0,isSigner:!1},{name:"poolMint",isMut:!0,isSigner:!1},{name:"feeAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"pythAccount",isMut:!1,isSigner:!1},{name:"pythPcAccount",isMut:!1,isSigner:!1},{name:"configAccount",isMut:!0,isSigner:!1}],args:[{name:"amountIn",type:"u64"},{name:"minimumAmountOut",type:"u64"}]}],accounts:[{name:"amm",type:{kind:"struct",fields:[{name:"initializerKey",type:"publicKey"},{name:"initializerDepositTokenAccount",type:"publicKey"},{name:"initializerReceiveTokenAccount",type:"publicKey"},{name:"initializerAmount",type:"u64"},{name:"takerAmount",type:"u64"},{name:"isInitialized",type:"bool"},{name:"bumpSeed",type:"u8"},{name:"freezeTrade",type:"u8"},{name:"freezeDeposit",type:"u8"},{name:"freezeWithdraw",type:"u8"},{name:"baseDecimals",type:"u8"},{name:"tokenProgramId",type:"publicKey"},{name:"tokenAAccount",type:"publicKey"},{name:"tokenBAccount",type:"publicKey"},{name:"poolMint",type:"publicKey"},{name:"tokenAMint",type:"publicKey"},{name:"tokenBMint",type:"publicKey"},{name:"poolFeeAccount",type:"publicKey"},{name:"pythAccount",type:"publicKey"},{name:"pythPcAccount",type:"publicKey"},{name:"configAccount",type:"publicKey"},{name:"ammTemp1",type:"publicKey"},{name:"ammTemp2",type:"publicKey"},{name:"ammTemp3",type:"publicKey"},{name:"fees",type:{defined:"FeesInput"}},{name:"curve",type:{defined:"CurveInput"}}]}},{name:"config",type:{kind:"struct",fields:[{name:"concentrationRatio",type:"u64"},{name:"lastPrice",type:"u64"},{name:"adjustRatio",type:"u64"},{name:"balanceRatio",type:"u64"},{name:"lastBalancedPrice",type:"u64"},{name:"configDenominator",type:"u64"},{name:"pythConfidenceLimit",type:"u64"},{name:"pythSlotLimit",type:"u64"},{name:"volumeX",type:"u64"},{name:"volumeY",type:"u64"},{name:"volumeXInY",type:"u64"},{name:"coefficientUp",type:"u64"},{name:"coefficientDown",type:"u64"},{name:"oracleStatus",type:"u64"},{name:"configTemp1",type:"u64"},{name:"configTemp2",type:"u64"}]}}],types:[{name:"FeesInput",type:{kind:"struct",fields:[{name:"tradeFeeNumerator",type:"u64"},{name:"tradeFeeDenominator",type:"u64"},{name:"ownerTradeFeeNumerator",type:"u64"},{name:"ownerTradeFeeDenominator",type:"u64"},{name:"ownerWithdrawFeeNumerator",type:"u64"},{name:"ownerWithdrawFeeDenominator",type:"u64"},{name:"hostFeeNumerator",type:"u64"},{name:"hostFeeDenominator",type:"u64"}]}},{name:"CurveInput",type:{kind:"struct",fields:[{name:"curveType",type:"u8"},{name:"curveParameters",type:"u64"}]}},{name:"ConfigInput",type:{kind:"struct",fields:[{name:"concentrationRatio",type:"u64"},{name:"lastPrice",type:"u64"},{name:"adjustRatio",type:"u64"},{name:"balanceRatio",type:"u64"},{name:"lastBalancedPrice",type:"u64"},{name:"configDenominator",type:"u64"},{name:"pythConfidenceLimit",type:"u64"},{name:"pythSlotLimit",type:"u64"},{name:"volumeX",type:"u64"},{name:"volumeY",type:"u64"},{name:"volumeXInY",type:"u64"},{name:"coefficientUp",type:"u64"},{name:"coefficientDown",type:"u64"},{name:"oracleStatus",type:"u64"},{name:"configTemp1",type:"u64"},{name:"configTemp2",type:"u64"}]}},{name:"CurveFees",type:{kind:"struct",fields:[{name:"tradeFeeNumerator",type:"u64"},{name:"tradeFeeDenominator",type:"u64"},{name:"ownerTradeFeeNumerator",type:"u64"},{name:"ownerTradeFeeDenominator",type:"u64"},{name:"ownerWithdrawFeeNumerator",type:"u64"},{name:"ownerWithdrawFeeDenominator",type:"u64"},{name:"hostFeeNumerator",type:"u64"},{name:"hostFeeDenominator",type:"u64"}]}},{name:"CurveType",type:{kind:"enum",variants:[{name:"ConstantProduct"},{name:"Stable"}]}},{name:"TradeDirection",type:{kind:"enum",variants:[{name:"AtoB"},{name:"BtoA"}]}},{name:"RoundDirection",type:{kind:"enum",variants:[{name:"Floor"},{name:"Ceiling"}]}}],errors:[{code:6e3,name:"AlreadyInUse",msg:"Swap account already in use"},{code:6001,name:"InvalidProgramAddress",msg:"Invalid program address generated from bump seed and key"},{code:6002,name:"InvalidOwner",msg:"Input account owner is not the program address"},{code:6003,name:"InvalidOutputOwner",msg:"Output pool account owner cannot be the program address"},{code:6004,name:"ExpectedMint",msg:"Deserialized account is not an SPL Token mint"},{code:6005,name:"ExpectedAccount",msg:"Deserialized account is not an SPL Token account"},{code:6006,name:"EmptySupply",msg:"Input token account empty"},{code:6007,name:"InvalidSupply",msg:"Pool token mint has a non-zero supply"},{code:6008,name:"InvalidDelegate",msg:"Token account has a delegate"},{code:6009,name:"InvalidInput",msg:"InvalidInput"},{code:6010,name:"IncorrectSwapAccount",msg:"Address of the provided swap token account is incorrect"},{code:6011,name:"IncorrectPoolMint",msg:"Address of the provided pool token mint is incorrect"},{code:6012,name:"InvalidOutput",msg:"InvalidOutput"},{code:6013,name:"CalculationFailure",msg:"General calculation failure due to overflow or underflow"},{code:6014,name:"InvalidInstruction",msg:"Invalid instruction"},{code:6015,name:"RepeatedMint",msg:"Swap input token accounts have the same mint"},{code:6016,name:"ExceededSlippage",msg:"Swap instruction exceeds desired slippage limit"},{code:6017,name:"InvalidCloseAuthority",msg:"Token account has a close authority"},{code:6018,name:"InvalidFreezeAuthority",msg:"Pool token mint has a freeze authority"},{code:6019,name:"IncorrectFeeAccount",msg:"Pool fee token account incorrect"},{code:6020,name:"ZeroTradingTokens",msg:"Given pool token amount results in zero trading tokens"},{code:6021,name:"FeeCalculationFailure",msg:"Fee calculation failed due to overflow, underflow, or unexpected 0"},{code:6022,name:"ConversionFailure",msg:"Conversion to u64 failed with an overflow or underflow"},{code:6023,name:"InvalidFee",msg:"The provided fee does not match the program owner's constraints"},{code:6024,name:"IncorrectTokenProgramId",msg:"The provided token program does not match the token program expected by the swap"},{code:6025,name:"IncorrectOracleAccount",msg:"Address of the provided oracle account is incorrect"},{code:6026,name:"IncorrectConfigAccount",msg:"Address of the provided config account is incorrect"},{code:6027,name:"UnsupportedCurveType",msg:"The provided curve type is not supported by the program owner"},{code:6028,name:"InvalidCurve",msg:"The provided curve parameters are invalid"},{code:6029,name:"UnsupportedCurveOperation",msg:"The operation cannot be performed on the given curve"},{code:6030,name:"InvalidPythStatus",msg:"Pyth oracle status is not 'trading'"},{code:6031,name:"InvalidPythPrice",msg:"Could not retrieve updated price feed from the Pyth oracle"},{code:6032,name:"IncorrectSigner",msg:"Address of the provided signer account is incorrect"},{code:6033,name:"ProgramIsFrozen",msg:"Program is frozen"},{code:6034,name:"OracleConfidence",msg:"Oracle confidence is too low"}]}},32864:(e,t,n)=>{"use strict";t.Yk=t.gx=t._l=t.vS=void 0;n(23602),n(71877),n(83757);const i=n(15453);Object.defineProperty(t,"_l",{enumerable:!0,get:function(){return i.getParsedData}});const r=n(54791);Object.defineProperty(t,"gx",{enumerable:!0,get:function(){return r.getCurveAmount}}),Object.defineProperty(t,"vS",{enumerable:!0,get:function(){return r.TradeDirection}});const o=n(92222);Object.defineProperty(t,"Yk",{enumerable:!0,get:function(){return o.LIFINITY_AMM_LAYOUT}})},92222:(e,t,n)=>{"use strict";function i(e,t){const n=A();return(i=function(e,t){return n[e-=144]})(e,t)}!function(e,t){const n=i,r=e();for(;;)try{if(453314==-parseInt(n(147))/1*(-parseInt(n(151))/2)+-parseInt(n(149))/3+-parseInt(n(150))/4+-parseInt(n(148))/5+parseInt(n(146))/6+-parseInt(n(152))/7*(parseInt(n(144))/8)+parseInt(n(145))/9)break;r.push(r.shift())}catch(e){r.push(r.shift())}}(A),Object.defineProperty(t,"__esModule",{value:!0}),t.CONFIG_LAYOUT=t.LIFINITY_AMM_LAYOUT=void 0;const r=n(992),o=n(84104);function A(){const e=["16704ezZTzx","16992648ydycGs","1655412BiRZIo","2QLVGnI","3675995Yenkkb","812682EEFDnU","1865020UROZXN","225224xtDHNE","1554cXFVVx"];return(A=function(){return e})()}t.LIFINITY_AMM_LAYOUT=(0,o.struct)([(0,r.u64)("index"),(0,r.publicKey)("initializerKey"),(0,r.publicKey)("initializerDepositTokenAccount"),(0,r.publicKey)("initializerReceiveTokenAccount"),(0,r.u64)("initializerAmount"),(0,r.u64)("takerAmount"),(0,r.u8)("initialized"),(0,r.u8)("bumpSeed"),(0,r.u8)("freezeTrade"),(0,r.u8)("freezeDeposit"),(0,r.u8)("freezeWithdraw"),(0,r.u8)("baseDecimals"),(0,r.publicKey)("tokenProgramId"),(0,r.publicKey)("tokenAAccount"),(0,r.publicKey)("tokenBAccount"),(0,r.publicKey)("poolMint"),(0,r.publicKey)("tokenAMint"),(0,r.publicKey)("tokenBMint"),(0,r.publicKey)("poolFeeAccount"),(0,r.publicKey)("pythAccount"),(0,r.publicKey)("pythPcAccount"),(0,r.publicKey)("configAccount"),(0,r.publicKey)("ammTemp1"),(0,r.publicKey)("ammTemp2"),(0,r.publicKey)("ammTemp3"),(0,r.u64)("tradeFeeNumerator"),(0,r.u64)("tradeFeeDenominator"),(0,r.u64)("ownerTradeFeeNumerator"),(0,r.u64)("ownerTradeFeeDenominator"),(0,r.u64)("ownerWithdrawFeeNumerator"),(0,r.u64)("ownerWithdrawFeeDenominator"),(0,r.u64)("hostFeeNumerator"),(0,r.u64)("hostFeeDenominator"),(0,r.u8)("curveType"),(0,r.u64)("curveParameters")]),t.CONFIG_LAYOUT=(0,o.struct)([(0,r.u64)("index"),(0,r.u64)("concentrationRatio"),(0,r.u64)("lastPrice"),(0,r.u64)("adjustRatio"),(0,r.u64)("balanceRatio"),(0,r.u64)("lastBalancedPrice"),(0,r.u64)("configDenominator"),(0,r.u64)("pythConfidenceLimit"),(0,r.u64)("pythSlotLimit"),(0,r.u64)("volumeX"),(0,r.u64)("volumeY"),(0,r.u64)("volumeXinY"),(0,r.u64)("coefficientUp"),(0,r.u64)("coefficientDown"),(0,r.u64)("oracleStatus"),(0,r.u64)("configTemp1"),(0,r.u64)("configTemp2")])},23602:function(e,t,n){"use strict";var i=n(49500),r=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getSwapTransactionWithAuthority=t.getSwapInstruction=t.getAmountOut=t.Lifinity=void 0;const A=n(43352),s=n(97212),a=o(n(62496)),c=n(54387),u=n(71877),l=n(83757),g=n(71559),d=n(15453),h=n(54791);class p{constructor(e,t){this.stateAddress=s.PublicKey.default,this.programAuthority=s.PublicKey.default,this.connection=e,this.wallet=t;const n=new s.PublicKey((0,u.getProgramAddress)()),i=new A.Provider(e,t,A.Provider.defaultOptions());this.program=new A.Program(c.IDL,n,i)}static build(e,t){return r(this,void 0,void 0,(function*(){return new p(e,t)}))}swap(e,t,n,o){return r(this,void 0,void 0,(function*(){const r=(0,l.getPool)(n.toString(),o.toString());try{return yield(0,g.sendSwap)(this.program,r,n,o,e,t)}catch(e){return i.error(e),""}}))}}t.Lifinity=p,t.getAmountOut=function(e,t,n,o,A){return r(this,void 0,void 0,(function*(){const r=(0,l.getPool)(n.toString(),o.toString());if(r){let o,c,u,l=new a.default(t);r.poolCoinMint===n.toString()?(l=l.times(new a.default(10).pow(r.poolCoinDecimal)),c=r.poolCoinDecimal,u=r.poolPcDecimal,o=h.TradeDirection.AtoB):(l=l.times(new a.default(10).pow(r.poolPcDecimal)),c=r.poolPcDecimal,u=r.poolCoinDecimal,o=h.TradeDirection.BtoA);const g=[new s.PublicKey(r.amm),new s.PublicKey(r.poolCoinTokenAccount),new s.PublicKey(r.poolPcTokenAccount),new s.PublicKey(r.configAccount),new s.PublicKey(r.pythAccount)];r.pythAccount!==r.pythPcAccount&&g.push(new s.PublicKey(r.pythPcAccount));try{const n=yield(0,d.getMultipleAccounts)(e,g),{amm:i,fees:s,coinBalance:p,pcBalance:f,config:m,pyth:I,pythPc:y}=(0,d.getParsedData)(n,r),B=yield e.getSlot(),{amountSwapped:C,priceImpact:w,fee:E,feePercent:Q}=(0,h.getCurveAmount)(l,B,i,s,p,f,m,I,y,o),b=new a.default(A).div(100),k=new a.default(Math.floor(C.times(new a.default(1).minus(b)).toNumber())).div(new a.default(10).pow(u)).toNumber(),v=C.div(new a.default(10).pow(u)).toNumber(),S=E.div(new a.default(10).pow(c)).toNumber();return{amountIn:t,amountOut:v,amountOutWithSlippage:k,priceImpact:w.toNumber(),fee:S,feePercent:Q.toNumber()}}catch(e){return i.error(e),{amountIn:0,amountOut:0,amountOutWithSlippage:0,priceImpact:0,fee:0,feePercent:0}}}}))},t.getSwapInstruction=function(e,t,n,o,d,h,p,f,m=!0){return r(this,void 0,void 0,(function*(){try{const i=(0,l.getPool)(d.toString(),h.toString());let r,I,y=new a.default(n),B=new a.default(o);d.toString()===i.poolCoinMint?(y=y.times(new a.default(10).pow(i.poolCoinDecimal)),B=B.times(new a.default(10).pow(i.poolPcDecimal)),r=new s.PublicKey(i.poolCoinTokenAccount),I=new s.PublicKey(i.poolPcTokenAccount)):(y=y.times(new a.default(10).pow(i.poolPcDecimal)),B=B.times(new a.default(10).pow(i.poolCoinDecimal)),r=new s.PublicKey(i.poolPcTokenAccount),I=new s.PublicKey(i.poolCoinTokenAccount));let C=s.Keypair.generate();const w=new s.PublicKey((0,u.getProgramAddress)()),E=new A.Provider(e,C,A.Provider.defaultOptions()),Q=new A.Program(c.IDL,w,E),{approveInstruction:b,swapInstruction:k,signers:v}=yield(0,g.getInstruction)(Q,i,y,B,t,p,f,r,I,m);return{approveInstruction:b,swapInstruction:k,signers:v}}catch(e){return i.warn(e),{approveInstruction:null,swapInstruction:null,signers:[]}}}))},t.getSwapTransactionWithAuthority=function(e,t,n,i,r,o,a,d,h){const p=(0,l.getPool)(r.toString(),o.toString());let f=s.Keypair.generate();const m=new s.PublicKey((0,u.getProgramAddress)()),I=new A.Provider(e,f,A.Provider.defaultOptions()),y=new A.Program(c.IDL,m,I);return(0,g.makeSwapTransactionWithAuthority)(y,n,i,t,a,d,r,p,h)}},71877:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getProgramAddress=void 0,t.getProgramAddress=()=>"EewxydAPCCVuNEyrVN68PuSYdQ7wKn27V9Gjeoi8dy3S"},83757:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PoolList=t.getPool=t.getPoolList=void 0,t.getPoolList=function(){return t.PoolList},t.getPool=function(e,n){const i=Object.values(t.PoolList).filter((t=>t.poolCoinMint===e&&t.poolPcMint===n||t.poolCoinMint===n&&t.poolPcMint===e));return 1===i.length?i[0]:null},t.PoolList={"SOL-USDC":{amm:"amgK1WE8Cvae4mVdj4AhXSsknWsjaGgo1coYicasBnM",poolMint:"3WzrkFYq4SayCrhBw8BgsPiTVKTDjyV6wRqP7HL9Eyyw",feeAccount:"AD5DFr1AXMB9h6fw5KFtkEfwf7kYSAiaSueeu4NGrLKY",configAccount:"2iT9h99mhDqetoZGNj7KKrqBnoDmFvAytGrnFYuR7MwN",pythAccount:"H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG",pythPcAccount:"H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG",poolCoinTokenAccount:"2uySTNgvGT2kwqpfgLiSgeBLR3wQyye1i1A2iQWoPiFr",poolCoinMint:"So11111111111111111111111111111111111111112",poolPcTokenAccount:"32SjGNjesiCZgmZb4YxAGgjnym6jAvTWbqihR4CvvXkZ",poolPcMint:"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",poolCoinDecimal:9,poolPcDecimal:6,poolMintDecimal:9,pythBaseDecimal:11},"SOL-USDT":{amm:"2x8Bmv9wj2a4LxADBWKiLyGRgAosr8yJXuZyvS8adirK",poolMint:"BRchiwrv9yCr4jAi6xF4epQdtNtmJH93rrerpHpMhK1Z",feeAccount:"GFj8cNTP4mzWG7ywyJ35Ls2V8CbqDk3p4xNT1pAawoCh",configAccount:"Hor7j9oYfNH6EJgmnXQRiQSahduR5p4bfKyCZaQUqNKd",pythAccount:"H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG",pythPcAccount:"3vxLXJqLqF3JG5TCbYycbKWRBbCJQLxQmBGCkyqEEefL",poolCoinTokenAccount:"5pH2DBMZg7y5bN4J3oLKRETGXyVYPJpeaCH6AkdAcxqp",poolCoinMint:"So11111111111111111111111111111111111111112",poolPcTokenAccount:"7Cct2MJUwruQef5vQrP2bxYCNyVajJ3SiC1GYUmwmjUm",poolPcMint:"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB",poolCoinDecimal:9,poolPcDecimal:6,poolMintDecimal:9,pythBaseDecimal:11},"SOL-UST":{amm:"65E23qmpbcq3EynyxzSAk5PmAXv4NYmRb2jJiYDDRCaB",poolMint:"4aUVFHRR3c3Zyzi4yeT4U38x1hsPWE8VstKWAXkpgE7g",feeAccount:"Dyr7rzzrZbyHwHmx5YC4xcfzRJpuxDPmWu8BmwNzkAL4",configAccount:"5CmmN7dYxsmP88dE1eATYJc1SjKQXhZFs1FeDSdq5s2C",pythAccount:"H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG",pythPcAccount:"H8DvrfSaRfUyP1Ytse1exGf7VSinLWtmKNNaBhA4as9P",poolCoinTokenAccount:"AgiA6x7T6vR2J8ZPeBGizWruwhP6HBbpoW3Hg5jh2f2b",poolCoinMint:"So11111111111111111111111111111111111111112",poolPcTokenAccount:"3eM8HhW5XQeEmshqSvNSmrPmYuBKZpPXVVfzvqgYvJAv",poolPcMint:"9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i",poolCoinDecimal:9,poolPcDecimal:6,poolMintDecimal:9,pythBaseDecimal:11},"BTC-USDC":{amm:"HeH3s7B3a6nynim1rBGS6TRaYECgSNjt7Kp65mhW9P4k",poolMint:"BzuTSoWFHrnRQvn4sr5ErPQyMaRB9g2rsbKCruGtcvMa",feeAccount:"5HpNeHBBpg6x7fzTgbvP9UukQmDmvxbggwqo951BYkba",configAccount:"HuLmRVTfYjNYYGBpPtJEk7JKkosbbPF4zzBHnf3TfyCn",pythAccount:"GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU",pythPcAccount:"GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU",poolCoinTokenAccount:"FAFShq3gZYXWtk5EkeKPKcwSkz2rjfMDuD1i7KiYwjVM",poolCoinMint:"9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E",poolPcTokenAccount:"3ReY1xscSAEV9Qg1NshkU4KRWQs33nu5JMg8AnoU7duG",poolPcMint:"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",poolCoinDecimal:6,poolPcDecimal:6,poolMintDecimal:9,pythBaseDecimal:8},"ETH-USDC":{amm:"E32Z6DYwJELMTrVJVchN8PWbyhSoC3bRorMb7Cw2R9Xz",poolMint:"8FxRyaE8X6ENLmNbaBvgS6vMsN1GJ8J7CmKy8K8uN6wM",feeAccount:"5yXQ399ti5rKMcRMAZvFUqAgKHUP55bvhoYWd9bVrnu9",configAccount:"5JXrQpWAPNrvVN1R6Mz9MhA1EYUB948kceZjCxRzQzf5",pythAccount:"JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB",pythPcAccount:"JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB",poolCoinTokenAccount:"BRFwAToCofwzP29jVGzb6VZ4AGpw867AE5VsXfMsmEGk",poolCoinMint:"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs",poolPcTokenAccount:"FDCjDSbFCVRVBsWkJWfgZ9x3Dizm1MJjtzYw3R2fxXRv",poolPcMint:"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",poolCoinDecimal:8,poolPcDecimal:6,poolMintDecimal:9,pythBaseDecimal:10},"RAY-USDC":{amm:"FcxHANr1dguexPZ2PoPGBajgiednXFMYHGGx4YMgedkM",poolMint:"HUpvKUafPCMwhua6QtHXk1V8D6LZYyQmUKYPFZgRiiiX",feeAccount:"DyR91PiiRopbdcizbjdXejodjxEeVSs4uCkyhL7wCvxw",configAccount:"2EXv6K3cYDMXXKFfzGjqnjkbngUymnVwBoC4kwrCKwFy",pythAccount:"AnLf8tVYCM816gmBjiy8n53eXKKEDydT5piYjjQDPgTB",pythPcAccount:"AnLf8tVYCM816gmBjiy8n53eXKKEDydT5piYjjQDPgTB",poolCoinTokenAccount:"BhG9r4CkTBRtpLtxA8Hd72vCkikqyVhiq8pFunZNERV8",poolCoinMint:"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R",poolPcTokenAccount:"8HAVXU7bdS2SEkkrqFBdWPFxFTrWxtu4GTjP46BDzdTc",poolPcMint:"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",poolCoinDecimal:6,poolPcDecimal:6,poolMintDecimal:6,pythBaseDecimal:8},"SRM-USDC":{amm:"7RM8pzbWmGEYJLFuyS5uDyrkd4phcazHppn1C7Qim5nT",poolMint:"DKxkNu5PYoBEWiEZzD9hPsbga145AUZFfRCsieJQbGCP",feeAccount:"7xGiGPPFTiroce8ivKeLgH74WvMbinLqHUTMWwdsSXpp",configAccount:"CuPQhoTH29d5tP9TE2KQMrXqhrMD9ygNhaWDke1fuU7d",pythAccount:"3NBReDRTLKMQEKiLD5tGcx4kXbTf88b7f2xLS9UuGjym",pythPcAccount:"3NBReDRTLKMQEKiLD5tGcx4kXbTf88b7f2xLS9UuGjym",poolCoinTokenAccount:"2qAG2xw2sroQZfRUu5RhvneFm35p9NEtcpJizoFYMn2w",poolCoinMint:"SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt",poolPcTokenAccount:"DTmnsxurn7cFSqPMERogJDMKR5NbFjhrJTtFPJbgkW7e",poolPcMint:"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",poolCoinDecimal:6,poolPcDecimal:6,poolMintDecimal:6,pythBaseDecimal:8},"UXD-USDC":{amm:"5BJUhcBnysAmCpaU6pABof7FUqxx7ZnCZXbctpP48o3C",poolMint:"DM2Grhnear76DwNiRUSfeiFMt6jSj2op9GWinQDc7Yqh",feeAccount:"9pKxj6GTTdJ2biQ6uTyv7CTmVmnjz6cXGCz7rXg7Nm2N",configAccount:"86MM38X9P5mxzRHFVX8ahtB9dCFKSk8AFhb33f5Zz8VW",pythAccount:"3vxLXJqLqF3JG5TCbYycbKWRBbCJQLxQmBGCkyqEEefL",pythPcAccount:"3vxLXJqLqF3JG5TCbYycbKWRBbCJQLxQmBGCkyqEEefL",poolCoinTokenAccount:"5BUkh9e3JF9yUvSw6P3HHqkdMuujRG942hYNSkAEghFs",poolCoinMint:"7kbnvuGBxxj8AG9qp8Scn56muWGaRaFqxg1FsRp3PaFT",poolPcTokenAccount:"BbwCGgAHEUfu7PUEz8hR877aK2snseqorfLbvtcVbjhj",poolPcMint:"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",poolCoinDecimal:6,poolPcDecimal:6,poolMintDecimal:6,pythBaseDecimal:8},"LFNTY-USDC":{amm:"5m1fnYcDdF1TMRVEBdGuSPXt5Sw8ueb9LTopuNL8SJYc",poolMint:"AGytAQTdMJ1jYyDFwgqRUJfzuVUfFm4Kjh4ZnraPbTRv",feeAccount:"7Pa7ssUY264ircqLGXARFvVzENLxGwuXL7ptGJkNinzo",configAccount:"BhKTRa1uhYuSAMsY2SwAGuj5BnxpLPaPpJwArKxZvjYK",pythAccount:"GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU",pythPcAccount:"GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU",poolCoinTokenAccount:"3T9zHCguVtKfgzaUvdBne4V8LReeiAMAzmRbWwt69gwJ",poolCoinMint:"LFNTYraetVioAPnGJht4yNg2aUZFXR776cMeN9VMjXp",poolPcTokenAccount:"F3fuSs91bGysoZFgNDbGrPonEtCBaGRDMpHGMwfgxzsP",poolPcMint:"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",poolCoinDecimal:6,poolPcDecimal:6,poolMintDecimal:6,pythBaseDecimal:8}}},22851:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WSOL=void 0,t.WSOL={symbol:"WSOL",mintAddress:"So11111111111111111111111111111111111111112",decimals:9}},71559:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.makeSwapInstructionWithAuthority=t.makeSwapTransactionWithAuthority=t.getInstruction=t.sendSwap=void 0;const r=n(43352),o=n(97212),A=n(76604),s=n(76604),a=n(88323),c=n(22851),u=n(15453);function l(e,t,n,r){return i(this,void 0,void 0,(function*(){return A.Token.createApproveInstruction(s.TOKEN_PROGRAM_ID,t,n,e,[],r.toNumber())}))}function g(e,t,n,r,A,a,c,l,g){return i(this,void 0,void 0,(function*(){let{programAuthority:i}=yield(0,u.getProgramAuthority)(e.programId,new o.PublicKey(g.amm));return e.instruction.swap(c,l,{accounts:{authority:i,amm:new o.PublicKey(g.amm),userTransferAuthority:t,sourceInfo:n,destinationInfo:r,swapSource:A,swapDestination:a,poolMint:new o.PublicKey(g.poolMint),feeAccount:new o.PublicKey(g.feeAccount),tokenProgram:s.TOKEN_PROGRAM_ID,pythPcAccount:new o.PublicKey(g.pythPcAccount),pythAccount:new o.PublicKey(g.pythAccount),configAccount:new o.PublicKey(g.configAccount)}})}))}function d(e,t,n,i,r,A,a,c,u,l){return e.instruction.swap(a,c,{accounts:{authority:l,amm:new o.PublicKey(u.amm),userTransferAuthority:t,sourceInfo:n,destinationInfo:i,swapSource:r,swapDestination:A,poolMint:new o.PublicKey(u.poolMint),feeAccount:new o.PublicKey(u.feeAccount),tokenProgram:s.TOKEN_PROGRAM_ID,pythPcAccount:new o.PublicKey(u.pythPcAccount),pythAccount:new o.PublicKey(u.pythAccount),configAccount:new o.PublicKey(u.configAccount)}})}t.sendSwap=function(e,t,n,A,s,d){return i(this,void 0,void 0,(function*(){const{transaction:h,signers:p}=yield function(e,t,n,A,s,d){return i(this,void 0,void 0,(function*(){let h,p,f,m,I=new o.Transaction,y=[],B=Math.pow(10,A.poolCoinDecimal),C=Math.pow(10,A.poolPcDecimal);t.toString()===A.poolCoinMint?(h=new r.BN(s*B),p=new r.BN(d*C),f=new o.PublicKey(A.poolCoinTokenAccount),m=new o.PublicKey(A.poolPcTokenAccount)):(h=new r.BN(s*C),p=new r.BN(d*B),f=new o.PublicKey(A.poolPcTokenAccount),m=new o.PublicKey(A.poolCoinTokenAccount));let w=null,E=null;return w=t.toString()===c.WSOL.mintAddress?yield(0,u.createWSOLAccountIfNotExist)(e,w,h.toNumber(),I,y):yield(0,u.findAssociatedTokenAddress)(e.provider.wallet.publicKey,t),E=n.toString()===c.WSOL.mintAddress?yield(0,u.createWSOLAccountIfNotExist)(e,E,0,I,y):yield(0,u.createAssociatedTokenAccountIfNotExist)(e,n,I),yield function(e,t,n,r,A,s,a,c,u,d,h=!0){return i(this,void 0,void 0,(function*(){let i;h?(i=o.Keypair.generate(),t.add(yield l(e.provider.wallet.publicKey,r,i.publicKey,c)),n.push(i)):i=e.provider.wallet,t.add(yield g(e,i.publicKey,r,A,s,a,c,u,d))}))}(e,I,y,w,E,f,m,h,p,A,!0),n.toString()===c.WSOL.mintAddress&&I.add((0,a.closeAccount)({source:E,destination:e.provider.wallet.publicKey,owner:e.provider.wallet.publicKey})),{transaction:I,signers:y}}))}(e,n,A,t,s,d);return yield e.provider.send(h,p)}))},t.getInstruction=function(e,t,n,A,s,a,c,u,d,h=!0){return i(this,void 0,void 0,(function*(){let i=null,p=[],f=new r.BN(n.toNumber()),m=new r.BN(A.toNumber()),I=null;return h&&(I=o.Keypair.generate(),i=yield l(s,a,I.publicKey,f),p.push(I)),{approveInstruction:i,swapInstruction:yield g(e,I?I.publicKey:s,a,c,u,d,f,m,t),signers:p}}))},t.makeSwapTransactionWithAuthority=function(e,t,n,i,A,s,a,c,u){let l,g,h,p,f=Math.pow(10,c.poolCoinDecimal),m=Math.pow(10,c.poolPcDecimal);return a.toString()===c.poolCoinMint?(l=new r.BN(t*f),g=new r.BN(n*m),h=new o.PublicKey(c.poolCoinTokenAccount),p=new o.PublicKey(c.poolPcTokenAccount)):(l=new r.BN(t*m),g=new r.BN(n*f),h=new o.PublicKey(c.poolPcTokenAccount),p=new o.PublicKey(c.poolCoinTokenAccount)),d(e,i,A,s,h,p,l,g,c,u)},t.makeSwapInstructionWithAuthority=d},15453:function(e,t,n){"use strict";var i=n(55872).Buffer,r=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getTokenAccountBalance=t.getParsedData=t.getMultipleAccounts=t.sleep=t.getProgramAuthority=t.findProgramAddress=t.findAssociatedTokenAddress=t.createAssociatedTokenAccountIfNotExist=t.createWSOLAccountIfNotExist=void 0;const A=n(97212),s=n(76604),a=n(88323),c=n(76604),u=n(43955),l=o(n(62496)),g=n(22851),d=n(92222),h=new A.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");function p(e,t){return r(this,void 0,void 0,(function*(){const{publicKey:n}=yield f([e.toBuffer(),c.TOKEN_PROGRAM_ID.toBuffer(),t.toBuffer()],h);return n}))}function f(e,t){return r(this,void 0,void 0,(function*(){const[n,i]=yield A.PublicKey.findProgramAddress(e,t);return{publicKey:n,nonce:i}}))}function m(e,t){for(const[n,i]of Object.entries(e))if(i===t)return{key:n};return{}}t.createWSOLAccountIfNotExist=function(e,t,n,i,o){return r(this,void 0,void 0,(function*(){let r;if(t)r=t;else{const t=e.provider.wallet.publicKey,s=A.Keypair.generate();r=s.publicKey;let u=n+(yield e.provider.connection.getMinimumBalanceForRentExemption(c.AccountLayout.span));i.add(A.SystemProgram.createAccount({fromPubkey:t,newAccountPubkey:r,lamports:u,space:c.AccountLayout.span,programId:c.TOKEN_PROGRAM_ID})),i.add((0,a.initializeAccount)({account:r,mint:new A.PublicKey(g.WSOL.mintAddress),owner:t})),o.push(s)}return r}))},t.createAssociatedTokenAccountIfNotExist=function(e,t,n){return r(this,void 0,void 0,(function*(){let i=yield p(e.provider.wallet.publicKey,t);return yield e.provider.connection.getAccountInfo(i).then((o=>r(this,void 0,void 0,(function*(){o||(i=yield s.Token.getAssociatedTokenAddress(h,c.TOKEN_PROGRAM_ID,t,e.provider.wallet.publicKey),n.add(s.Token.createAssociatedTokenAccountInstruction(h,c.TOKEN_PROGRAM_ID,t,i,e.provider.wallet.publicKey,e.provider.wallet.publicKey)))})))),i}))},t.findAssociatedTokenAddress=p,t.findProgramAddress=f,t.getProgramAuthority=function(e,t){return r(this,void 0,void 0,(function*(){const[n,i]=yield A.PublicKey.findProgramAddress([t.toBuffer()],e);return{programAuthority:n,nonce:i}}))},t.sleep=e=>r(void 0,void 0,void 0,(function*(){return yield new Promise((t=>setTimeout(t,e)))})),t.getMultipleAccounts=function(e,t,n){return r(this,void 0,void 0,(function*(){const i=[];let o=[];t.forEach((e=>{o.length>=100&&(i.push(o),o=[]),o.push(e)})),o.length>0&&i.push(o);const A=[],s={};return yield Promise.all(i.map(((t,i)=>r(this,void 0,void 0,(function*(){const r=yield e.getMultipleAccountsInfo(t,n);s[i]=r}))))),Object.keys(s).sort(((e,t)=>parseInt(e)-parseInt(t))).forEach((e=>{const t=s[parseInt(e)];for(const e of t)A.push(e)})),A.map(((e,n)=>null===e?null:{publicKey:t[n],account:e}))}))},t.getParsedData=function(e,t){let n,r,o,A,s,a,g;for(let h=0;h{"use strict";n.r(t),n.d(t,{Fraction:()=>C,ONE:()=>c,Stable:()=>m,TWO:()=>u,TokenSwapConstantProduct:()=>B,TokenSwapStable:()=>y,ZERO:()=>a,ZERO_FRACTION:()=>w,abs:()=>l,calculateFeeAmount:()=>I,ceilingDivision:()=>h,mulArray:()=>d,sumArray:()=>g,toDecimal:()=>p});var i=n(48318),r=n.n(i),o=n(6716);function A(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n=e.length?{done:!0}:{done:!1,value:e[i++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var a=r().BigInt(0),c=r().BigInt(1),u=r().BigInt(2);function l(e){return r().GE(e,a)?e:r().unaryMinus(e)}function g(e){return e.reduce((function(e,t){return r().add(e,t)}),a)}function d(e){return e.reduce((function(e,t){return r().multiply(e,t)}),c)}function h(e,t){var n=r().divide(e,t);if(r().equal(n,a))return[a,a];var i=r().remainder(e,t);return r().greaterThan(i,a)&&(n=r().add(n,c),t=r().divide(e,n),i=r().remainder(e,n),r().greaterThan(i,a)&&(t=r().add(t,c))),[n,t]}function p(e,t){return void 0===t&&(t=0),new o.Z(e.toString()).div(new o.Z(10).pow(t))}var f=function(){function e(e,t,n){this.numberOfCurrencies=void 0,this.amplificationFactor=void 0,this.targetPrices=void 0,this.numberOfCurrencies=e,this.amplificationFactor=t,this.targetPrices=n}var t=e.prototype;return t.exchange=function(e,t,n,i,o){if(void 0===o&&(o=!0),e.length!==r().toNumber(this.numberOfCurrencies))throw new Error("Number of currencies does not match");var A=this.xp(e),s=r().multiply(i,this.targetPrices[t]),a=r().add(A[t],s),u=this.computeY(e,t,n,a),l=r().subtract(A[n],u);return o&&(l=r().subtract(l,c)),r().divide(l,this.targetPrices[n])},t.computeBaseY=function(e,t,n,i){var A=this.computeD(e),s=this.xp(e),a=r().exponentiate(this.numberOfCurrencies,this.numberOfCurrencies),c=g(s),u=d(s),l=r().subtract(r().add(r().multiply(r().multiply(this.amplificationFactor,a),c),A),r().multiply(r().multiply(this.amplificationFactor,A),a)),h=r().multiply(r().multiply(r().multiply(this.amplificationFactor,a),a),u),p=r().multiply(r().multiply(a,u),l),f=r().add(h,r().divide(p,s[t])),m=r().add(h,r().divide(p,s[n])),I=Math.log10(r().toNumber(this.targetPrices[t])),y=Math.log10(r().toNumber(this.targetPrices[n])),B=Math.abs(y-I);return I>=y?r().BigInt(new o.Z(f.toString()).mul(new o.Z(i.toString())).div(new o.Z(m.toString())).mul(Math.pow(10,B)).floor().toString()):r().BigInt(new o.Z(f.toString()).mul(new o.Z(i.toString())).div(new o.Z(m.toString())).div(Math.pow(10,B)).floor().toString())},t.computeY=function(e,t,n,i){var o=this.computeD(e),A=this.xp(e);A[t]=i,A.splice(n,1);for(var d,h=r().multiply(this.amplificationFactor,this.numberOfCurrencies),p=o,f=s(A);!(d=f()).done;){var m=d.value;p=r().divide(r().multiply(p,o),r().multiply(m,this.numberOfCurrencies))}p=r().divide(r().multiply(p,o),r().multiply(this.numberOfCurrencies,h));for(var I=r().subtract(r().add(g(A),r().divide(o,h)),o),y=a,B=o;r().greaterThan(l(r().subtract(B,y)),c);)y=B,B=r().divide(r().add(r().exponentiate(B,u),p),r().add(r().multiply(u,B),I));return B},t.computeD=function(e){for(var t=a,n=this.xp(e),i=g(n),o=i,A=r().multiply(this.amplificationFactor,this.numberOfCurrencies);r().greaterThan(l(r().subtract(o,t)),c);){for(var u,d=o,h=s(n);!(u=h()).done;){var p=u.value;d=r().divide(r().multiply(d,o),r().multiply(this.numberOfCurrencies,p))}t=o;var f=r().multiply(r().add(r().multiply(A,i),r().multiply(d,this.numberOfCurrencies)),o),m=r().add(r().multiply(r().subtract(A,c),o),r().multiply(r().add(this.numberOfCurrencies,c),d));o=r().divide(f,m)}return o},t.xp=function(e){var t=this;return e.map((function(e,n){return r().multiply(e,t.targetPrices[n])}))},t.setAmplificationFactor=function(e){this.amplificationFactor=e},e}(),m=function(){function e(e,t,n,i){this.targetPrices=void 0,this.traderFee=void 0,this.curve=void 0,this.targetPrices=n,this.traderFee=i,this.curve=new f(e,t,this.targetPrices)}var t=e.prototype;return t.exchange=function(e,t,n,i){var o=this.getOutputAmount(e,t,n,i),A=this.getFees(o),s=r().subtract(o,A);return{priceImpact:this.getPriceImpact(e,t,s,n,i),fees:A,expectedOutputAmount:s}},t.getPriceImpact=function(e,t,n,i,A){if(r().equal(t,a)||r().equal(e[i],a)||r().equal(e[A],a))return new o.Z(0);var s=p(this.getOutputAmountWithNoSlippage(e,t,i,A)),c=p(n);return s.sub(c).div(s)},t.getFees=function(e){return r().equal(this.traderFee.numerator,a)?a:r().divide(r().multiply(e,this.traderFee.numerator),this.traderFee.denominator)},t.getOutputAmount=function(e,t,n,i){return this.curve.exchange(e,n,i,t)},t.getOutputAmountWithNoSlippage=function(e,t,n,i){return this.curve.computeBaseY(e,n,i,t)},t.setAmp=function(e){this.curve.setAmplificationFactor(e)},e}();function I(e,t){if(r().equal(t.numerator,a)||r().equal(e,a))return a;var n=r().divide(r().multiply(e,t.numerator),t.denominator);return r().equal(n,a)?c:n}var y=function(){function e(e,t,n){this.traderFee=void 0,this.ownerFee=void 0,this.curve=void 0,this.traderFee=t,this.ownerFee=n,this.curve=new f(u,e,[c,c])}var t=e.prototype;return t.exchange=function(e,t,n){var i=0===n?1:0,r=this.getExpectedOutputAmount(e,t,i,n);return{priceImpact:this.getPriceImpact(e,t,r,i,n),fees:this.getFees(t),expectedOutputAmount:r}},t.getPriceImpact=function(e,t,n,i,A){if(r().equal(t,a)||r().equal(e[i],a)||r().equal(e[A],a))return new o.Z(0);var s=p(this.getExpectedOutputAmountWithNoSlippage(e,t,i,A)),c=p(n);return s.sub(c).div(s)},t.getFees=function(e){var t=I(e,this.traderFee),n=I(e,this.ownerFee);return r().add(t,n)},t.getExpectedOutputAmount=function(e,t,n,i){var r=this.getInputAmountLessFees(t);return this.getOutputAmount(e,r,n,i)},t.getExpectedOutputAmountWithNoSlippage=function(e,t,n,i){var r=this.getInputAmountLessFees(t);return this.getOutputAmountWithNoSlippage(e,r,n,i)},t.getInputAmountLessFees=function(e){return r().subtract(e,this.getFees(e))},t.getOutputAmount=function(e,t,n,i){return this.curve.exchange(e,n,i,t,!1)},t.getOutputAmountWithNoSlippage=function(e,t,n,i){return this.curve.computeBaseY(e,n,i,t)},e}(),B=function(){function e(e,t,n){void 0===n&&(n=!0),this.traderFee=void 0,this.ownerFee=void 0,this.feesOnInput=void 0,this.traderFee=e,this.ownerFee=t,this.feesOnInput=n}var t=e.prototype;return t.exchange=function(e,t,n){var i=0===n?1:0,r=this.feesOnInput?this.getAmountLessFees(t):t,o=this.getExpectedOutputAmount(e,r,i,n),A=this.getFees(this.feesOnInput?t:o);return this.feesOnInput||(o=this.getAmountLessFees(o)),{priceImpact:this.getPriceImpact(e,r,o,i,n),fees:A,expectedOutputAmount:o}},t.exchangeForExactOutput=function(e,t,n){var i=0===n?1:0,r=this.feesOnInput?t:this.getAmountPlusFees(t),o=this.getInputAmount(e,r,i,n),A=this.getFees(this.feesOnInput?o:t);return this.feesOnInput&&(o=this.getAmountPlusFees(o)),{priceImpact:this.getPriceImpactExactOutput(e,o,r,i,n),fees:A,expectedInputAmount:o}},t.getPriceImpact=function(e,t,n,i,A){if(r().equal(t,a)||r().equal(e[i],a)||r().equal(e[A],a))return new o.Z(0);var s=p(this.getExpectedOutputAmountWithNoSlippage(e,t,i,A)),c=p(n);return s.sub(c).div(s)},t.getPriceImpactExactOutput=function(e,t,n,i,A){if(r().equal(n,a)||r().equal(e[i],a)||r().equal(e[A],a))return new o.Z(0);var s=p(this.getExpectedInputAmountWithNoSlippage(e,n,i,A));return p(t).sub(s).div(s)},t.getFees=function(e){var t=I(e,this.traderFee),n=I(e,this.ownerFee);return r().add(t,n)},t.getExpectedOutputAmount=function(e,t,n,i){return this.getOutputAmount(e,t,n,i)},t.getExpectedOutputAmountWithNoSlippage=function(e,t,n,i){if(r().equal(e[n],a))return e[i];var o=r().divide(r().multiply(t,e[i]),e[n]);return this.feesOnInput?o:this.getAmountLessFees(o)},t.getExpectedInputAmountWithNoSlippage=function(e,t,n,i){if(r().equal(e[i],a))return e[n];var o=r().divide(r().multiply(t,e[n]),e[i]);return this.feesOnInput?this.getAmountPlusFees(o):o},t.getAmountLessFees=function(e){return r().subtract(e,this.getFees(e))},t.getAmountPlusFees=function(e){return r().add(e,this.getFees(e))},t.getOutputAmount=function(e,t,n,i){var o=[e[n],e[i]],A=o[0],s=o[1],a=h(this.getInvariant(e),r().add(A,t))[0];return r().subtract(s,a)},t.getInputAmount=function(e,t,n,i){var o=[e[n],e[i]],A=o[0],s=o[1],a=this.getInvariant(e);if(r().greaterThanOrEqual(t,s))throw new Error("Insufficient liquidity to provide outputTradeAmount");var c=h(a,r().subtract(s,t))[0];return r().subtract(c,A)},t.getInvariant=function(e){return r().multiply(e[0],e[1])},e}(),C=function(e,t){this.numerator=void 0,this.denominator=void 0,this.numerator=e,this.denominator=t},w=new C(r().BigInt(0),r().BigInt(1))},84291:(e,t,n)=>{"use strict";n(49500),n(55872).Buffer;function i(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(t[n]=e[n]);return t.default=e,t}function r(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty,Object.getOwnPropertySymbols,Object.prototype.hasOwnProperty,Object.prototype.propertyIsEnumerable,Math.pow;var o=n(97212),A=(i(o),i(o),i(o),i(o),i(o),i(o),i(o),i(o),i(o),i(o),i(o),i(o),i(o),i(o),i(o),i(o),i(o),i(o),new Map),s=new Map,a=class extends Error{constructor(){super("Invalid market parameters error"),this.code=0,this.name="InvalidMarketParameters","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,a)}};A.set(0,(()=>new a)),s.set("InvalidMarketParameters",(()=>new a));var c=class extends Error{constructor(){super("Invalid exchange authority error"),this.code=1,this.name="InvalidMarketAuthority","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,c)}};A.set(1,(()=>new c)),s.set("InvalidMarketAuthority",(()=>new c));var u=class extends Error{constructor(){super("Market deserialization error"),this.code=2,this.name="FailedToLoadMarketFromAccount","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,u)}};A.set(2,(()=>new u)),s.set("FailedToLoadMarketFromAccount",(()=>new u));var l=class extends Error{constructor(){super("Market already initialized error"),this.code=3,this.name="MarketAlreadyInitialized","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,l)}};A.set(3,(()=>new l)),s.set("MarketAlreadyInitialized",(()=>new l));var g=class extends Error{constructor(){super("Market is not initialized error"),this.code=4,this.name="MarketUninitialized","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,g)}};A.set(4,(()=>new g)),s.set("MarketUninitialized",(()=>new g));var d=class extends Error{constructor(){super("Invalid state transition error"),this.code=5,this.name="InvalidStateTransition","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,d)}};A.set(5,(()=>new d)),s.set("InvalidStateTransition",(()=>new d));var h=class extends Error{constructor(){super("Invalid market signer error"),this.code=6,this.name="InvalidMarketSigner","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,h)}};A.set(6,(()=>new h)),s.set("InvalidMarketSigner",(()=>new h));var p=class extends Error{constructor(){super("Invalid lot size error"),this.code=7,this.name="InvalidLotSize","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,p)}};A.set(7,(()=>new p)),s.set("InvalidLotSize",(()=>new p));var f=class extends Error{constructor(){super("Invalid tick size error"),this.code=8,this.name="InvalidTickSize","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,f)}};A.set(8,(()=>new f)),s.set("InvalidTickSize",(()=>new f));var m=class extends Error{constructor(){super("Invalid mint error"),this.code=9,this.name="InvalidMint","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,m)}};A.set(9,(()=>new m)),s.set("InvalidMint",(()=>new m));var I=class extends Error{constructor(){super("Invalid base vault error"),this.code=10,this.name="InvalidBaseVault","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,I)}};A.set(10,(()=>new I)),s.set("InvalidBaseVault",(()=>new I));var y=class extends Error{constructor(){super("Invalid quote vault error"),this.code=11,this.name="InvalidQuoteVault","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,y)}};A.set(11,(()=>new y)),s.set("InvalidQuoteVault",(()=>new y));var B=class extends Error{constructor(){super("Invalid base account error"),this.code=12,this.name="InvalidBaseAccount","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,B)}};A.set(12,(()=>new B)),s.set("InvalidBaseAccount",(()=>new B));var C=class extends Error{constructor(){super("Invalid quote account error"),this.code=13,this.name="InvalidQuoteAccount","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,C)}};A.set(13,(()=>new C)),s.set("InvalidQuoteAccount",(()=>new C));var w=class extends Error{constructor(){super("Too many events error"),this.code=14,this.name="TooManyEvents","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,w)}};A.set(14,(()=>new w)),s.set("TooManyEvents",(()=>new w));var E=class extends Error{constructor(){super("New order error"),this.code=15,this.name="NewOrderError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,E)}};A.set(15,(()=>new E)),s.set("NewOrderError",(()=>new E));var Q=class extends Error{constructor(){super("Reduce order error"),this.code=16,this.name="ReduceOrderError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,Q)}};A.set(16,(()=>new Q)),s.set("ReduceOrderError",(()=>new Q));var b=class extends Error{constructor(){super("Cancel multiple orders error"),this.code=17,this.name="CancelMultipleOrdersError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,b)}};A.set(17,(()=>new b)),s.set("CancelMultipleOrdersError",(()=>new b));var k=class extends Error{constructor(){super("Withdraw funds error"),this.code=18,this.name="WithdrawFundsError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,k)}};A.set(18,(()=>new k)),s.set("WithdrawFundsError",(()=>new k));var v=class extends Error{constructor(){super("Remove empty orders error"),this.code=19,this.name="RemoveEmptyOrdersError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,v)}};A.set(19,(()=>new v)),s.set("RemoveEmptyOrdersError",(()=>new v));var S=class extends Error{constructor(){super("Trader not found error"),this.code=20,this.name="TraderNotFound","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,S)}};A.set(20,(()=>new S)),s.set("TraderNotFound",(()=>new S));var M=class extends Error{constructor(){super("Invalid seat status"),this.code=21,this.name="InvalidSeatStatus","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,M)}};A.set(21,(()=>new M)),s.set("InvalidSeatStatus",(()=>new M));var D=class extends Error{constructor(){super("Failed to evict trader"),this.code=22,this.name="EvictionError","function"==typeof Error.captureStackTrace&&Error.captureStackTrace(this,D)}};A.set(22,(()=>new D)),s.set("EvictionError",(()=>new D));var N,T,P,O,F=n(13511),R=i(F),G=i(F),x=i(F),U=i(F),_=i(F),L=i(F),K=i(F),Y=i(F),j=i(F),W=i(F),J=i(F),q=i(F),Z=i(F),z=i(F),H=i(F),V=i(F),X=i(F),$=i(F),ee=i(F),te=i(F),ne=i(F),ie=i(F),re=i(F),oe=i(F),Ae=i(F),se=i(F),ae=i(F),ce=i(F),ue=i(F),le=i(F),ge=i(F),de=i(F),he=i(F),pe=i(F),fe=i(F),me=i(F),Ie=i(F),ye=i(F),Be=i(F),Ce=i(F),we=i(F),Ee=i(F),Qe=i(F),be=i(F),ke=n(54346),ve=i(ke),Se=i(ke),Me=i(ke),De=i(ke),Ne=i(ke),Te=i(ke),Pe=i(ke),Oe=(new R.BeetArgsStruct([["instruction",R.u8],["sequenceNumber",R.u64],["timestamp",R.i64],["slot",R.u64],["market",ve.publicKey],["signer",ve.publicKey],["totalEvents",R.u16]],"AuditLogHeader"),(O=Oe||{})[O.Bid=0]="Bid",O[O.Ask=1]="Ask",O),Fe=U.fixedScalarEnum(Oe),Re=new x.BeetArgsStruct([["side",Fe],["priceInTicks",x.u64],["orderSequenceNumber",x.u64]],"CancelOrderParams"),Ge=(new G.FixableBeetArgsStruct([["orders",G.array(Re)]],"CancelMultipleOrdersByIdParams"),new _.FixableBeetArgsStruct([["side",Fe],["tickLimit",_.coption(_.u64)],["numOrdersToSearch",_.coption(_.u32)],["numOrdersToCancel",_.coption(_.u32)]],"CancelUpToParams")),xe=new L.BeetArgsStruct([["priceInTicks",L.u64],["sizeInBaseLots",L.u64]],"CondensedOrder"),Ue=new K.BeetArgsStruct([["quoteLotsToDeposit",K.u64],["baseLotsToDeposit",K.u64]],"DepositParams"),_e=(new Y.BeetArgsStruct([["index",Y.u16],["makerId",Se.publicKey],["orderSequenceNumber",Y.u64],["priceInTicks",Y.u64],["baseLotsEvicted",Y.u64]],"EvictEvent"),new j.BeetArgsStruct([["index",j.u16],["feesCollectedInQuoteLots",j.u64]],"FeeEvent"),new W.BeetArgsStruct([["index",W.u16],["makerId",Me.publicKey],["orderSequenceNumber",W.u64],["priceInTicks",W.u64],["baseLotsFilled",W.u64],["baseLotsRemaining",W.u64]],"FillEvent"),new J.BeetArgsStruct([["index",J.u16],["clientOrderId",J.u128],["totalBaseLotsFilled",J.u64],["totalQuoteLotsFilled",J.u64],["totalFeeInQuoteLots",J.u64]],"FillSummaryEvent"),new Z.BeetArgsStruct([["bidsSize",Z.u64],["asksSize",Z.u64],["numSeats",Z.u64]],"MarketSizeParams")),Le=new z.BeetArgsStruct([["decimals",z.u32],["vaultBump",z.u32],["mintKey",Ne.publicKey],["vaultKey",Ne.publicKey]],"TokenParams"),Ke=new q.BeetArgsStruct([["discriminant",q.u64],["status",q.u64],["marketSizeParams",_e],["baseParams",Le],["baseLotSize",q.u64],["quoteParams",Le],["quoteLotSize",q.u64],["tickSizeInQuoteAtomsPerBaseUnit",q.u64],["authority",De.publicKey],["feeRecipient",De.publicKey],["marketSequenceNumber",q.u64],["successor",De.publicKey],["rawBaseUnitsPerBaseUnit",q.u32],["padding1",q.u32],["padding2",q.uniformFixedSizeArray(q.u64,32)]],"MarketHeader"),Ye=((P=Ye||{})[P.Uninitialized=0]="Uninitialized",P[P.Active=1]="Active",P[P.PostOnly=2]="PostOnly",P[P.Paused=3]="Paused",P[P.Closed=4]="Closed",P[P.Tombstoned=5]="Tombstoned",P),je=(H.fixedScalarEnum(Ye),new V.FixableBeetArgsStruct([["bids",V.array(xe)],["asks",V.array(xe)],["clientOrderId",V.coption(V.u128)],["rejectPostOnly",V.bool]],"MultipleOrderPacket")),We=((T=We||{})[T.Abort=0]="Abort",T[T.CancelProvide=1]="CancelProvide",T[T.DecrementTake=2]="DecrementTake",T),Je=$.fixedScalarEnum(We),qe=X.dataEnum([["PostOnly",new X.BeetArgsStruct([["side",Fe],["priceInTicks",X.u64],["numBaseLots",X.u64],["clientOrderId",X.u128],["rejectPostOnly",X.bool],["useOnlyDepositedFunds",X.bool]],'OrderPacketRecord["PostOnly"]')],["Limit",new X.FixableBeetArgsStruct([["side",Fe],["priceInTicks",X.u64],["numBaseLots",X.u64],["selfTradeBehavior",Je],["matchLimit",X.coption(X.u64)],["clientOrderId",X.u128],["useOnlyDepositedFunds",X.bool]],'OrderPacketRecord["Limit"]')],["ImmediateOrCancel",new X.FixableBeetArgsStruct([["side",Fe],["priceInTicks",X.coption(X.u64)],["numBaseLots",X.u64],["numQuoteLots",X.u64],["minBaseLotsToFill",X.u64],["minQuoteLotsToFill",X.u64],["selfTradeBehavior",Je],["matchLimit",X.coption(X.u64)],["clientOrderId",X.u128],["useOnlyDepositedFunds",X.bool]],'OrderPacketRecord["ImmediateOrCancel"]')]]),Ze=((N=Ze||{})[N.Uninitialized=0]="Uninitialized",N[N.Header=1]="Header",N[N.Fill=2]="Fill",N[N.Place=3]="Place",N[N.Reduce=4]="Reduce",N[N.Evict=5]="Evict",N[N.FillSummary=6]="FillSummary",N[N.Fee=7]="Fee",N),ze=(ee.fixedScalarEnum(Ze),new te.BeetArgsStruct([["index",te.u16],["orderSequenceNumber",te.u64],["clientOrderId",te.u128],["priceInTicks",te.u64],["baseLotsPlaced",te.u64]],"PlaceEvent"),new ne.BeetArgsStruct([["index",ne.u16],["orderSequenceNumber",ne.u64],["priceInTicks",ne.u64],["baseLotsRemoved",ne.u64],["baseLotsRemaining",ne.u64]],"ReduceEvent"),new ie.BeetArgsStruct([["baseParams",Re],["size",ie.u64]],"ReduceOrderParams")),He=(new re.BeetArgsStruct([["discriminant",re.u64],["market",Te.publicKey],["trader",Te.publicKey],["approvalStatus",re.u64],["padding",re.uniformFixedSizeArray(re.u64,16)]],"Seat"),(e=>(e[e.NotApproved=0]="NotApproved",e[e.Approved=1]="Approved",e[e.Retired=2]="Retired",e))(He||{})),Ve=(oe.fixedScalarEnum(He),new Ae.FixableBeetArgsStruct([["quoteLotsToWithdraw",Ae.coption(Ae.u64)],["baseLotsToWithdraw",Ae.coption(Ae.u64)]],"WithdrawParams")),Xe=r(n(39098));function $e(e){let t;return t="number"==typeof e?e:e.toNumber(),t}function et(e){return"number"==typeof e?new(0,Xe.default)(e):e.clone()}function tt(e){return e.lt(new(0,Xe.default)(0))?-1:e.gt(new(0,Xe.default)(0))?1:0}var nt=n(33983);i(nt),i(nt),i(nt),i(nt),i(nt),i(nt),i(nt),i(nt),i(nt),new se.BeetArgsStruct([["instructionDiscriminator",se.u8]],"CancelAllOrdersInstructionArgs"),new ae.BeetArgsStruct([["instructionDiscriminator",ae.u8]],"CancelAllOrdersWithFreeFundsInstructionArgs"),new ce.BeetArgsStruct([["instructionDiscriminator",ce.u8]],"CancelMultipleOrdersByIdInstructionArgs"),new ue.BeetArgsStruct([["instructionDiscriminator",ue.u8]],"CancelMultipleOrdersByIdWithFreeFundsInstructionArgs"),new le.FixableBeetArgsStruct([["instructionDiscriminator",le.u8],["params",Ge]],"CancelUpToInstructionArgs"),new ge.FixableBeetArgsStruct([["instructionDiscriminator",ge.u8],["params",Ge]],"CancelUpToWithFreeFundsInstructionArgs"),new de.BeetArgsStruct([["instructionDiscriminator",de.u8],["depositFundsParams",Ue]],"DepositFundsInstructionArgs"),new he.BeetArgsStruct([["instructionDiscriminator",he.u8]],"LogInstructionArgs"),new pe.FixableBeetArgsStruct([["instructionDiscriminator",pe.u8],["orderPacket",qe]],"PlaceLimitOrderInstructionArgs"),new fe.FixableBeetArgsStruct([["instructionDiscriminator",fe.u8],["orderPacket",qe]],"PlaceLimitOrderWithFreeFundsInstructionArgs"),new me.FixableBeetArgsStruct([["instructionDiscriminator",me.u8],["multipleOrderPacket",je]],"PlaceMultiplePostOnlyOrdersInstructionArgs"),new Ie.FixableBeetArgsStruct([["instructionDiscriminator",Ie.u8],["multipleOrderPacket",je]],"PlaceMultiplePostOnlyOrdersWithFreeFundsInstructionArgs"),new ye.BeetArgsStruct([["instructionDiscriminator",ye.u8],["params",ze]],"ReduceOrderInstructionArgs"),new Be.BeetArgsStruct([["instructionDiscriminator",Be.u8],["params",ze]],"ReduceOrderWithFreeFundsInstructionArgs"),new Ce.BeetArgsStruct([["instructionDiscriminator",Ce.u8]],"RequestSeatInstructionArgs"),new we.FixableBeetArgsStruct([["instructionDiscriminator",we.u8],["orderPacket",qe]],"SwapInstructionArgs");new Ee.FixableBeetArgsStruct([["instructionDiscriminator",Ee.u8],["orderPacket",qe]],"SwapWithFreeFundsInstructionArgs"),new Qe.FixableBeetArgsStruct([["instructionDiscriminator",Qe.u8],["withdrawFundsParams",Ve]],"WithdrawFundsInstructionArgs");var it=new be.BeetArgsStruct([["publicKey",Pe.publicKey]],"PubkeyWrapper"),rt=new be.BeetArgsStruct([["priceInTicks",be.u64],["orderSequenceNumber",be.u64]],"fIFOOrderId"),ot=new be.BeetArgsStruct([["traderIndex",be.u64],["numBaseLots",be.u64],["padding",be.uniformFixedSizeArray(be.u64,2)]],"fIFORestingOrder"),At=new be.BeetArgsStruct([["quoteLotsLocked",be.u64],["quoteLotsFree",be.u64],["baseLotsLocked",be.u64],["baseLotsFree",be.u64],["padding",be.uniformFixedSizeArray(be.u64,8)]],"TraderState");function st(e){let t=Ke.byteSize,[n]=Ke.deserialize(e.subarray(0,t)),i=e.subarray(t+256);t=0;let r=Number(i.readBigUInt64LE(t));t+=8;let o=Number(i.readBigUInt64LE(t));t+=8;let A=Number(i.readBigUInt64LE(t));t+=8;let s=Number(i.readBigUInt64LE(t));t+=8;let a=Number(i.readBigUInt64LE(t));t+=8;let c=Number(i.readBigUInt64LE(t));t+=8,i=i.subarray(t);let u=$e(n.marketSizeParams.bidsSize),l=$e(n.marketSizeParams.asksSize),g=$e(n.marketSizeParams.numSeats),d=32+(16+rt.byteSize+ot.byteSize)*u,h=32+(16+rt.byteSize+ot.byteSize)*l,p=32+(48+At.byteSize)*g;t=0;let f=i.subarray(t,t+d);t+=d;let m=i.subarray(t,t+h);t+=h;let I=i.subarray(t,t+p),y=at(f,rt,ot),B=at(m,rt,ot),C=[...y].sort(((e,t)=>tt(et(t[0].priceInTicks).sub(et(e[0].priceInTicks))))),w=[...B].sort(((e,t)=>tt(et(e[0].priceInTicks).sub(et(t[0].priceInTicks))))),E=new Map;for(let[e,t]of at(I,it,At))E.set(e.publicKey,t);return{header:n,baseLotsPerBaseUnit:r,quoteLotsPerBaseUnitPerTick:o,sequenceNumber:A,takerFeeBps:s,collectedAdjustedQuoteLotFees:a,unclaimedAdjustedQuoteLotFees:c,bids:C,asks:w,traders:E}}function at(e,t,n){let i=new Map,r=0,o=t.byteSize,A=n.byteSize,s=new Array;r+=16,r+=8;let a=e.readInt32LE(r);r+=4;let c=e.readInt32LE(r);r+=4;let u=new Array;for(let i=0;ra)throw new Error("Infinite loop detected");for(let[e,[t,n]]of s.entries())l.has(e)||i.set(t,n);return i}function ct(e,t=10){let n=[],i=[];for(let[i,r]of e.bids){let e=et(i.priceInTicks),o=et(r.numBaseLots);if(0===n.length)n.push([e,o]);else{let i=n[n.length-1];if(!i)throw Error;if(e.eq(i[0]))i[1]=i[1].add(o);else{if(n.length===t)break;n.push([e,o])}}}for(let[n,r]of e.asks){let e=et(n.priceInTicks),o=et(r.numBaseLots);if(0===i.length)i.push([e,o]);else{let n=i[i.length-1];if(!n)throw Error;if(e.eq(n[0]))n[1]=n[1].add(o);else{if(i.length===t)break;i.push([e,o])}}}return{asks:i.slice(0,t),bids:n.slice(0,t)}}n(48797),r(n(11565));new(0,o.PublicKey)("PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY");t.fi=st,t.oO=ct},94067:(t,n,i)=>{"use strict";i.r(n),i.d(n,{Errors:()=>UM,JUPITER_ERRORS:()=>bk,JUPITER_FEE_OWNER:()=>Jb,JupiterProvider:()=>KM,LAMPORTS_PER_SIGNATURE:()=>Rb,MARKETS_URL:()=>Ob,Owner:()=>nM,SwapMode:()=>kb,TOKEN_LIST_URL:()=>Fb,TransactionBuilder:()=>tM,getPlatformFeeAccounts:()=>qS,useJupiter:()=>jM,useJupiterRouteMap:()=>YM});var r={};i.r(r),i.d(r,{ACCOUNT_DISCRIMINATOR_SIZE:()=>ei,AccountClient:()=>hr,AnchorError:()=>xn,AnchorProvider:()=>bn,BN:()=>y(),BorshAccountsCoder:()=>ti,BorshCoder:()=>Ai,BorshEventCoder:()=>ni,BorshInstructionCoder:()=>zn,BorshStateCoder:()=>ri,EventManager:()=>Ir,EventParser:()=>yr,IdlError:()=>Rn,LangErrorCode:()=>Ln,LangErrorMessage:()=>Kn,MethodsBuilderFactory:()=>vr,Program:()=>Mr,ProgramError:()=>Un,ProgramErrorStack:()=>Gn,Spl:()=>Dr,SplTokenCoder:()=>Yi,StateClient:()=>gr,eventDiscriminator:()=>ii,getProvider:()=>Dn,parseIdlErrors:()=>Wt,setProvider:()=>Mn,splitArgsAndCtx:()=>ar,stateDiscriminator:()=>oi,toInstruction:()=>Jt,translateAddress:()=>Zt,translateError:()=>_n,utils:()=>Ar,validateAccounts:()=>qt,web3:()=>A});var o=i(50959),A=i(97212),s=i(30769),a=i.n(s),c=i(99174);i(49500);var u=i(54380);u.struct([u.u8("instruction"),u.u32("units"),u.u32("additionalFee")]),u.struct([u.u8("instruction"),u.u32("bytes")]),i(55872).Buffer,new A.PublicKey("ComputeBudget111111111111111111111111111111"),i(55872).Buffer,new A.PublicKey("MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr"),i(49500),i(14224),i(49500),i(49500);class l extends Error{constructor(e){super("could not estimate transaction size"),this.underlyingError=e,this.name="TXSizeEstimationError"}}class g extends Error{constructor(e,t){super("Transaction too large"),this.tx=e,this.size=t,this.name="EstimatedTXTooBigError"}}const d={};class h extends A.PublicKey{constructor(e){super(e),this._base58=super.toBase58()}equals(e){return e instanceof h?e._base58===this._base58:super.equals(e)}toString(){return this._base58}toBase58(){return this._base58}}const p=e=>d[e]||(d[e]=new h(e)),f={};var m,I=i(39098),y=i.n(I);!function(e){e.SOLANA_EXPLORER="solana-explorer",e.SOLSCAN="solscan"}(m||(m={})),new A.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"),A.SystemProgram.programId,new Map([["GenericError","generic instruction error"],["InvalidArgument","invalid program argument"],["InvalidInstructionData","invalid instruction data"],["InvalidAccountData","invalid account data for instruction"],["AccountDataTooSmall","account data too small for instruction"],["InsufficientFunds","insufficient funds for instruction"],["IncorrectProgramId","incorrect program id for instruction"],["MissingRequiredSignature","missing required signature for instruction"],["AccountAlreadyInitialized","instruction requires an uninitialized account"],["UninitializedAccount","instruction requires an initialized account"],["UnbalancedInstruction","sum of account balances before and after instruction do not match"],["ModifiedProgramId","instruction modified the program id of an account"],["ExternalAccountLamportSpend","instruction spent from the balance of an account it does not own"],["ExternalAccountDataModified","instruction modified data of an account it does not own"],["ReadonlyLamportChange","instruction changed the balance of a read-only account"],["ReadonlyDataModified","instruction modified data of a read-only account"],["DuplicateAccountIndex","instruction contains duplicate accounts"],["ExecutableModified","instruction changed executable bit of an account"],["RentEpochModified","instruction modified rent epoch of an account"],["NotEnoughAccountKeys","insufficient account keys for instruction"],["AccountDataSizeChanged","non-system instruction changed account size"],["AccountNotExecutable","instruction expected an executable account"],["AccountBorrowFailed","instruction tries to borrow reference for an account which is already borrowed"],["AccountBorrowOutstanding","instruction left account with an outstanding borrowed reference"],["DuplicateAccountOutOfSync","instruction modifications of multiply-passed account differ"],["Custom","custom program error: {0}"],["InvalidError","program returned invalid error code"],["ExecutableDataModified","instruction changed executable accounts data"],["ExecutableLamportChange","instruction changed the balance of a executable account"],["ExecutableAccountNotRentExempt","executable accounts must be rent exempt"],["UnsupportedProgramId","Unsupported program id"],["CallDepth","Cross-program invocation call depth too deep"],["MissingAccount","An account required by the instruction is missing"],["ReentrancyNotAllowed","Cross-program invocation reentrancy not allowed for this instruction"],["MaxSeedLengthExceeded","Length of the seed is too long for address generation"],["InvalidSeeds","Provided seeds do not result in a valid address"],["InvalidRealloc","Failed to reallocate account data"],["ComputationalBudgetExceeded","Computational budget exceeded"],["PrivilegeEscalation","Cross-program invocation with unauthorized signer or writable account"],["ProgramEnvironmentSetupFailure","Failed to create program execution environment"],["ProgramFailedToComplete","Program failed to complete"],["ProgramFailedToCompile","Program failed to compile"],["Immutable","Account is immutable"],["IncorrectAuthority","Incorrect authority provided"],["BorshIoError","Failed to serialize or deserialize account data: {0}"],["AccountNotRentExempt","An account does not have enough lamports to be rent-exempt"],["InvalidAccountOwner","Invalid account owner"],["ArithmeticOverflow","Program arithmetic overflowed"],["UnsupportedSysvar","Unsupported sysvar"],["IllegalOwner","Provided owner is not allowed"]]),i(74449),i(49500),i(49500),i(49500);var B=i(76604);const C=(e="publicKey")=>u.blob(32,e),w=(e="uint64")=>u.blob(8,e),E=B.MintLayout;var Q=i(48318),b=i.n(Q);const k=b().BigInt(0),v=b().BigInt(1),S=b().BigInt(10);var M;!function(e){e[e.ROUND_DOWN=0]="ROUND_DOWN",e[e.ROUND_HALF_UP=1]="ROUND_HALF_UP",e[e.ROUND_UP=2]="ROUND_UP"}(M||(M={}));const D=b().BigInt("0xffffffffffffffff");b().BigInt("0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff");var N=1e6,T="[big.js] ",P=T+"Invalid ",O=P+"decimal places",F=T+"Division by zero",R={},G=void 0,x=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function U(e,t,n,i){var r=e.c;if(n===G&&(n=e.constructor.RM),0!==n&&1!==n&&2!==n&&3!==n)throw Error("[big.js] Invalid rounding mode");if(t<1)i=3===n&&(i||!!r[0])||0===t&&(1===n&&r[0]>=5||2===n&&(r[0]>5||5===r[0]&&(i||r[1]!==G))),r.length=1,i?(e.e=e.e-t+1,r[0]=1):r[0]=e.e=0;else if(t=5||2===n&&(r[t]>5||5===r[t]&&(i||r[t+1]!==G||1&r[t-1]))||3===n&&(i||!!r[0]),r.length=t,i)for(;++r[--t]>9;)if(r[t]=0,0===t){++e.e,r.unshift(1);break}for(t=r.length;!r[--t];)r.pop()}return e}function _(e,t,n){var i=e.e,r=e.c.join(""),o=r.length;if(t)r=r.charAt(0)+(o>1?"."+r.slice(1):"")+(i<0?"e":"e+")+i;else if(i<0){for(;++i;)r="0"+r;r="0."+r}else if(i>0)if(++i>o)for(i-=o;i--;)r+="0";else i1&&(r=r.charAt(0)+"."+r.slice(1));return e.s<0&&n?"-"+r:r}R.abs=function(){var e=new this.constructor(this);return e.s=1,e},R.cmp=function(e){var t,n=this,i=n.c,r=(e=new n.constructor(e)).c,o=n.s,A=e.s,s=n.e,a=e.e;if(!i[0]||!r[0])return i[0]?o:r[0]?-A:0;if(o!=A)return o;if(t=o<0,s!=a)return s>a^t?1:-1;for(A=(s=i.length)<(a=r.length)?s:a,o=-1;++or[o]^t?1:-1;return s==a?0:s>a^t?1:-1},R.div=function(e){var t=this,n=t.constructor,i=t.c,r=(e=new n(e)).c,o=t.s==e.s?1:-1,A=n.DP;if(A!==~~A||A<0||A>N)throw Error(O);if(!r[0])throw Error(F);if(!i[0])return e.s=o,e.c=[e.e=0],e;var s,a,c,u,l,g=r.slice(),d=s=r.length,h=i.length,p=i.slice(0,s),f=p.length,m=e,I=m.c=[],y=0,B=A+(m.e=t.e-e.e)+1;for(m.s=o,o=B<0?0:B,g.unshift(0);f++f?1:-1;else for(l=-1,u=0;++lp[l]?1:-1;break}if(!(u<0))break;for(a=f==s?r:g;f;){if(p[--f]B&&U(m,B,n.RM,p[0]!==G),m},R.eq=function(e){return 0===this.cmp(e)},R.gt=function(e){return this.cmp(e)>0},R.gte=function(e){return this.cmp(e)>-1},R.lt=function(e){return this.cmp(e)<0},R.lte=function(e){return this.cmp(e)<1},R.minus=R.sub=function(e){var t,n,i,r,o=this,A=o.constructor,s=o.s,a=(e=new A(e)).s;if(s!=a)return e.s=-a,o.plus(e);var c=o.c.slice(),u=o.e,l=e.c,g=e.e;if(!c[0]||!l[0])return l[0]?e.s=-a:c[0]?e=new A(o):e.s=1,e;if(s=u-g){for((r=s<0)?(s=-s,i=c):(g=u,i=l),i.reverse(),a=s;a--;)i.push(0);i.reverse()}else for(n=((r=c.length0)for(;a--;)c[t++]=0;for(a=t;n>s;){if(c[--n]0?(a=A,i=c):(t=-t,i=s),i.reverse();t--;)i.push(0);i.reverse()}for(s.length-c.length<0&&(i=c,c=s,s=i),t=c.length,n=0;t;s[t]%=10)n=(s[--t]=s[t]+c[t]+n)/10|0;for(n&&(s.unshift(n),++a),t=s.length;0===s[--t];)s.pop();return e.c=s,e.e=a,e},R.pow=function(e){var t=this,n=new t.constructor("1"),i=n,r=e<0;if(e!==~~e||e<-1e6||e>1e6)throw Error(P+"exponent");for(r&&(e=-e);1&e&&(i=i.times(t)),e>>=1;)t=t.times(t);return r?n.div(i):i},R.prec=function(e,t){if(e!==~~e||e<1||e>N)throw Error(P+"precision");return U(new this.constructor(this),e,t)},R.round=function(e,t){if(e===G)e=0;else if(e!==~~e||e<-N||e>N)throw Error(O);return U(new this.constructor(this),e+this.e+1,t)},R.sqrt=function(){var e,t,n,i=this,r=i.constructor,o=i.s,A=i.e,s=new r("0.5");if(!i.c[0])return new r(i);if(o<0)throw Error(T+"No square root");0===(o=Math.sqrt(i+""))||o===1/0?((t=i.c.join("")).length+A&1||(t+="0"),A=((A+1)/2|0)-(A<0||1&A),e=new r(((o=Math.sqrt(t))==1/0?"5e":(o=o.toExponential()).slice(0,o.indexOf("e")+1))+A)):e=new r(o+""),A=e.e+(r.DP+=4);do{n=e,e=s.times(n.plus(i.div(n)))}while(n.c.slice(0,A).join("")!==e.c.slice(0,A).join(""));return U(e,(r.DP-=4)+e.e+1,r.RM)},R.times=R.mul=function(e){var t,n=this,i=n.constructor,r=n.c,o=(e=new i(e)).c,A=r.length,s=o.length,a=n.e,c=e.e;if(e.s=n.s==e.s?1:-1,!r[0]||!o[0])return e.c=[e.e=0],e;for(e.e=a+c,Aa;)s=t[c]+o[a]*r[c-a-1]+s,t[c--]=s%10,s=s/10|0;t[c]=s}for(s?++e.e:t.shift(),a=t.length;!t[--a];)t.pop();return e.c=t,e},R.toExponential=function(e,t){var n=this,i=n.c[0];if(e!==G){if(e!==~~e||e<0||e>N)throw Error(O);for(n=U(new n.constructor(n),++e,t);n.c.lengthN)throw Error(O);for(e=e+(n=U(new n.constructor(n),e+n.e+1,t)).e+1;n.c.length=t.PE,!!e.c[0])},R.toNumber=function(){var e=Number(_(this,!0,!0));if(!0===this.constructor.strict&&!this.eq(e.toString()))throw Error(T+"Imprecise conversion");return e},R.toPrecision=function(e,t){var n=this,i=n.constructor,r=n.c[0];if(e!==G){if(e!==~~e||e<1||e>N)throw Error(P+"precision");for(n=U(new i(n),e,t);n.c.length=i.PE,!!r)},R.valueOf=function(){var e=this,t=e.constructor;if(!0===t.strict)throw Error(T+"valueOf disallowed");return _(e,e.e<=t.NE||e.e>=t.PE,!0)};var L=function e(){function t(n){var i=this;if(!(i instanceof t))return n===G?e():new t(n);if(n instanceof t)i.s=n.s,i.e=n.e,i.c=n.c.slice();else{if("string"!=typeof n){if(!0===t.strict&&"bigint"!=typeof n)throw TypeError(P+"value");n=0===n&&1/n<0?"-0":String(n)}!function(e,t){var n,i,r;if(!x.test(t))throw Error(P+"number");for(e.s="-"==t.charAt(0)?(t=t.slice(1),-1):1,(n=t.indexOf("."))>-1&&(t=t.replace(".","")),(i=t.search(/e/i))>0?(n<0&&(n=i),n+=+t.slice(i+1),t=t.substring(0,i)):n<0&&(n=t.length),r=t.length,i=0;i0&&"0"==t.charAt(--r););for(e.e=n-i-1,e.c=[],n=0;i<=r;)e.c[n++]=+t.charAt(i++)}}(i,n)}i.constructor=t}return t.prototype=R,t.DP=20,t.RM=1,t.NE=-7,t.PE=21,t.strict=!1,t.roundDown=0,t.roundHalfUp=1,t.roundHalfEven=2,t.roundUp=3,t}();const K=L;var Y=i(97290),j=i.n(Y);function W(e,t){if(!e)throw new Error("Invariant failed")}const J={[M.ROUND_DOWN]:j().ROUND_DOWN,[M.ROUND_HALF_UP]:j().ROUND_HALF_UP,[M.ROUND_UP]:j().ROUND_UP},q={[M.ROUND_DOWN]:K.roundDown,[M.ROUND_HALF_UP]:K.roundHalfUp,[M.ROUND_UP]:K.roundUp},Z={decimalSeparator:".",groupSeparator:"",groupSize:3,rounding:M.ROUND_DOWN},z=(e,t,n,i,{decimalSeparator:r=Z.decimalSeparator,groupSeparator:o=Z.groupSeparator,groupSize:A=Z.groupSize,rounding:s=Z.rounding}=Z)=>{const a=e;if(!a.e&&0!==a.e)return e.toString();const[c,u]=e.toFixed(i,"fixed"===n?q[s]:J[s]).split(".");W(c);let l=c;if(o){const e=t?c.slice(1):c,n=e.length;if(A>0&&n>0){let i=n%A||A;for(l=e.slice(0,i);iz(e,-1===e.s,"fixed",t,n);function V(e){return e instanceof b()?e:"string"==typeof e||"number"==typeof e?b().BigInt(e):"bigint"==typeof e||null!==(t=e)&&"object"==typeof t&&26===t.constructor.wordSize&&Array.isArray(t.words)?b().BigInt(e.toString()):b().BigInt(e);var t}const X={},$=e=>X[e]||(X[e]=e<=18?b().BigInt(10**e):b().exponentiate(S,b().BigInt(e))),ee=e=>{if(te.isFraction(e))return e;try{return new te(V(e))}catch(e){if(e instanceof Error)throw new Error(`Could not parse fraction: ${e.message}`);throw new Error("Could not parse fraction")}};class te{constructor(e,t=v){this.isFraction=!0,this.numerator=V(e),this.denominator=V(t)}get numeratorStr(){return this.numerator.toString()}get denominatorStr(){return this.numerator.toString()}static fromObject(e){return e instanceof te?e:(({numeratorStr:e,denominatorStr:t})=>new te(e,t))(e)}toJSON(){return{isFraction:!0,numeratorStr:this.numerator.toString(),denominatorStr:this.denominator.toString()}}static isFraction(e){return"object"==typeof e&&null!==e&&"numerator"in e&&"denominator"in e}compareTo(e){return this.equalTo(e)?0:this.greaterThan(e)?1:-1}static fromNumber(e,t=10){const n=Math.pow(10,t);return new te(Math.floor(e*n),n)}get quotient(){return b().divide(this.numerator,this.denominator)}get remainder(){return new te(b().remainder(this.numerator,this.denominator),this.denominator)}invert(){return new te(this.denominator,this.numerator)}add(e){const t=ee(e);return b().equal(this.denominator,t.denominator)?new te(b().add(this.numerator,t.numerator),this.denominator):new te(b().add(b().multiply(this.numerator,t.denominator),b().multiply(t.numerator,this.denominator)),b().multiply(this.denominator,t.denominator))}subtract(e){const t=ee(e);return b().equal(this.denominator,t.denominator)?new te(b().subtract(this.numerator,t.numerator),this.denominator):new te(b().subtract(b().multiply(this.numerator,t.denominator),b().multiply(t.numerator,this.denominator)),b().multiply(this.denominator,t.denominator))}lessThan(e){const t=ee(e);return b().lessThan(b().multiply(this.numerator,t.denominator),b().multiply(t.numerator,this.denominator))}equalTo(e){const t=ee(e);return b().equal(b().multiply(this.numerator,t.denominator),b().multiply(t.numerator,this.denominator))}greaterThan(e){const t=ee(e);return b().greaterThan(b().multiply(this.numerator,t.denominator),b().multiply(t.numerator,this.denominator))}multiply(e){const t=ee(e);return new te(b().multiply(this.numerator,t.numerator),b().multiply(this.denominator,t.denominator))}divide(e){const t=ee(e);return new te(b().multiply(this.numerator,t.denominator),b().multiply(this.denominator,t.numerator))}toSignificant(e,t={groupSeparator:""},n=M.ROUND_HALF_UP){W(Number.isInteger(e)),W(e>0),j().set({precision:e+1,rounding:J[n]});const i=new(j())(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return((e,t,n=Z)=>z(e,e.isNegative(),"significant",t,n))(i,i.decimalPlaces(),{...t,rounding:n})}toFixed(e,t={groupSeparator:""},n=M.ROUND_HALF_UP){return W(Number.isInteger(e)),W(e>=0),H(new K(this.numerator.toString()).div(this.denominator.toString()),e,{...t,rounding:n})}get asFraction(){return new te(this.numerator,this.denominator)}get asNumber(){if(b().equal(this.denominator,k))return b().greaterThan(this.numerator,k)?Number.POSITIVE_INFINITY:b().lessThan(this.numerator,k)?Number.NEGATIVE_INFINITY:Number.NaN;const e=b().toNumber(this.numerator)/b().toNumber(this.denominator);return Number.isNaN(e)?parseFloat(this.toFixed(10)):e}isZero(){return b().EQ(this.numerator,k)&&b().NE(this.denominator,k)}isNonZero(){return!this.isZero()}}te.ZERO=new te(0),te.ONE=new te(1);const ne=new te(100);function ie(e){return new re(e.numerator,e.denominator)}class re extends te{constructor(){super(...arguments),this.isPercent=!0}static fromNumber(e,t=10){const n=te.fromNumber(e,t);return new re(n.numerator,n.denominator)}static fromObject(e){return e instanceof re?e:ie(te.fromObject(e))}toJSON(){return{...super.toJSON(),isPercent:!0}}static fromFraction(e){return ie(e)}static fromBPS(e){return new re(e,1e4)}add(e){return ie(super.add(e))}subtract(e){return ie(super.subtract(e))}multiply(e){return ie(super.multiply(e))}divide(e){return ie(super.divide(e))}invert(){return new re(this.denominator,this.numerator)}toSignificant(e=5,t,n){return super.multiply(ne).toSignificant(e,t,n)}toFixed(e=2,t,n){return super.multiply(ne).toFixed(e,t,n)}static isPercent(e){return te.isFraction(e)&&!0===(null==e?void 0:e.isPercent)}}re.ZERO=new re(0),re.ONE=new re(1,100),re.ONE_HUNDRED=new re(1);var oe=i(49500);const Ae=(e,t)=>{var n;return null===(n=Intl.NumberFormat(t).formatToParts(1000.1).find((t=>t.type===e)))||void 0===n?void 0:n.value};Ae("decimal",undefined),Ae("group",void 0);const se=(e,t,n=".",i=",")=>{const r=t.split(n);if(0===r.length)throw new Error("empty number");const[o,A]=r,s=o?b().BigInt(o.split(i).join("")):k,a=A?b().BigInt(A.slice(0,e.decimals)+Array(e.decimals).fill("0").slice(A.length).join("")):k;return b().add(b().multiply(s,$(e.decimals)),a)};class ae extends RangeError{constructor(e,t){super(`Token amount overflows ${e}: ${t.toString()}`)}}class ce extends RangeError{constructor(e){super(`Token amount must be greater than zero: ${e.toString()}`)}}function ue(e){if(!b().greaterThanOrEqual(e,k))throw new ce(e);if(!b().lessThanOrEqual(e,D))throw new ae("u64",e)}const le=e=>{const[t,n,...i]=e.split(".");if(i.length>0||!t)return oe.warn(`Invalid number passed to stripTrailingZeroes: ${e}`),e;if(!n)return e;const r=n.replace(/0+$/,"");return""===r?t:`${t}.${r}`};class ge extends te{constructor(e,t,n){const i=V(t);null==n||n(i),super(i,$(e.decimals)),this.token=e,this.token=e}withAmount(e){return this.new(this.token,e)}get raw(){return this.numerator}toSignificant(e=6,t,n=M.ROUND_DOWN){return super.toSignificant(e,t,n)}toFixed(e=this.token.decimals,t,n=M.ROUND_DOWN){return W(e<=this.token.decimals),super.toFixed(e,t,n)}toExact(e={groupSeparator:""}){return H(new K(this.numerator.toString()).div(this.denominator.toString()),this.token.decimals,e)}add(e){return W(this.token.equals(e.token),(this.token.toString(),e.token.toString())),this.withAmount(b().add(this.raw,e.raw))}subtract(e){return W(this.token.equals(e.token),(this.token.toString(),e.token.toString())),this.withAmount(b().subtract(this.raw,e.raw))}percentOf(e){W(this.token.equals(e.token),(this.token.toString(),e.token.toString()));const t=this.divide(e);return new re(t.numerator,t.denominator)}divideBy(e){const t=this.divide(e);return new re(t.numerator,t.denominator)}scale(e){return this.withAmount(e.asFraction.multiply(this.raw).toFixed(0))}reduceBy(e){return this.scale(re.ONE_HUNDRED.subtract(e))}formatUnits(){return`${le(this.toExact({groupSeparator:",",groupSize:3,decimalSeparator:"."}))} ${this.token.symbol}`}format({numberFormatOptions:e,locale:t}={}){return`${void 0!==e?this.asNumber.toLocaleString(t,e):le(this.toFixed(this.token.decimals))}`}get asNumber(){return parseFloat(this.toExact())}static isTokenAmount(e){return te.isFraction(e)&&!!(null==e?void 0:e.token)}divideByAmount(e){return this.percentOf(e)}multiplyBy(e){return this.scale(e)}}var de;!function(e){e[e.MainnetBeta=101]="MainnetBeta",e[e.Testnet=102]="Testnet",e[e.Devnet=103]="Devnet"}(de||(de={}));const he=new A.PublicKey("RawSo11111111111111111111111111111111111112");class pe{constructor(e){var t;this.info=e,this._mintAccount=null,this.network=null!==(t=Ee(e.chainId))&&void 0!==t?t:"localnet"}get mintAccount(){return this._mintAccount||(this._mintAccount=new A.PublicKey(this.info.address)),this._mintAccount}get isRawSOL(){return this.mintAccount.equals(he)}get address(){return this.info.address}get chainId(){return this.info.chainId}get decimals(){return this.info.decimals}get name(){return this.info.name}get symbol(){return this.info.symbol}get icon(){return this.info.logoURI}equals(e){return fe(this,e)}toString(){return`Token[mint=${this.address}, decimals=${this.decimals}, network=${this.network}]`}toJSON(){return this.info}hasTag(e){var t;return!!(null===(t=this.info.tags)||void 0===t?void 0:t.includes(e))}}pe.fromMint=(e,t,n={})=>{var i,r,o;return new pe({...n,address:e.toString(),decimals:t,name:null!==(i=n.name)&&void 0!==i?i:`Token ${e.toString().slice(0,4)}`,symbol:null!==(r=n.symbol)&&void 0!==r?r:e.toString().slice(0,5),chainId:null!==(o=n.chainId)&&void 0!==o?o:Be.Localnet})},pe.load=async(e,t,n={})=>{if("number"==typeof n.decimals)return pe.fromMint(t,n.decimals,n);const i=await e.getAccountInfo(t);if(!i)return null;const r=(e=>{if(e.length!==E.span)throw new Error("Not a valid Mint");const t=E.decode(e);let n;n=0===t.mintAuthorityOption?null:new A.PublicKey(t.mintAuthority);const i=B.u64.fromBuffer(t.supply),r=0!==t.isInitialized;let o;return o=0===t.freezeAuthorityOption?null:new A.PublicKey(t.freezeAuthority),{mintAuthority:n,supply:i,decimals:t.decimals,isInitialized:r,freezeAuthority:o}})(i.data);return pe.fromMint(t,r.decimals,n)};const fe=(e,t)=>void 0!==e&&void 0!==t&&e.address===t.address&&e.network===t.network,me={address:he.toString(),name:"Solana",symbol:"SOL",decimals:9,logoURI:"https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png"},Ie={address:B.NATIVE_MINT.toString(),name:"Wrapped SOL",symbol:"SOL",decimals:9,logoURI:"https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png"},ye=e=>({"mainnet-beta":new pe({...e,chainId:Be.MainnetBeta}),devnet:new pe({...e,chainId:Be.Devnet}),testnet:new pe({...e,chainId:Be.Testnet}),localnet:new pe({...e,chainId:Be.Localnet})});var Be;!function(e){e[e.MainnetBeta=101]="MainnetBeta",e[e.Testnet=102]="Testnet",e[e.Devnet=103]="Devnet",e[e.Localnet=104]="Localnet"}(Be||(Be={}));const Ce={"mainnet-beta":Be.MainnetBeta,devnet:Be.Devnet,testnet:Be.Testnet,localnet:104},we=Object.entries(Ce).reduce(((e,[t,n])=>({...e,[n]:t})),{}),Ee=e=>we[e];ye(me),ye(Ie);class Qe extends ge{constructor(e,t){super(e,t,ue)}new(e,t){return new Qe(e,t)}static parse(e,t){const n=se(e,t,".",",");return new Qe(e,n)}divideByInteger(e){return new Qe(this.token,this.toU64().div(new(y())(V(e).toString())))}toString(){return`TokenAmount[Token=(${this.token.toString()}), amount=${this.toExact()}`}toJSON(){return{...super.toJSON(),_isTA:!0,mint:this.token.address,uiAmount:this.toExact()}}toU64(){return new B.u64(this.raw.toString())}}new A.PublicKey("shmem4EWT2sPdVGvTZCzXXRAURL9G5vpPxNwSeKhHUL");var be=i(40525),ke=i.n(be);b().BigInt(2),b().BigInt(2);const ve=new A.PublicKey("SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ");var Se=i(55872).Buffer;new re(0,1e4);const Me=(new re(20,1e4),new re(50,1e4),new re(50,100),new re(50,100),({config:{swapProgramID:e},keys:t,data:n})=>new A.TransactionInstruction({keys:t,programId:e,data:n}));var De;i(55872).Buffer,function(e){e[e.RAMP_A=100]="RAMP_A",e[e.STOP_RAMP_A=101]="STOP_RAMP_A",e[e.PAUSE=102]="PAUSE",e[e.UNPAUSE=103]="UNPAUSE",e[e.SET_FEE_ACCOUNT=104]="SET_FEE_ACCOUNT",e[e.APPLY_NEW_ADMIN=105]="APPLY_NEW_ADMIN",e[e.COMMIT_NEW_ADMIN=106]="COMMIT_NEW_ADMIN",e[e.SET_NEW_FEES=107]="SET_NEW_FEES"}(De||(De={}));const Ne=u.struct([w("adminTradeFeeNumerator"),w("adminTradeFeeDenominator"),w("adminWithdrawFeeNumerator"),w("adminWithdrawFeeDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("withdrawFeeNumerator"),w("withdrawFeeDenominator")],"fees"),Te=u.struct([u.u8("isInitialized"),u.u8("isPaused"),u.u8("nonce"),w("initialAmpFactor"),w("targetAmpFactor"),u.ns64("startRampTs"),u.ns64("stopRampTs"),u.ns64("futureAdminDeadline"),C("futureAdminAccount"),C("adminAccount"),C("tokenAccountA"),C("tokenAccountB"),C("tokenPool"),C("mintA"),C("mintB"),C("adminFeeAccountA"),C("adminFeeAccountB"),Ne]),Pe=(u.struct([u.u8("instruction"),u.u8("nonce"),w("ampFactor"),Ne]),u.struct([u.u8("instruction"),w("amountIn"),w("minimumAmountOut")])),Oe=u.struct([u.u8("instruction"),w("tokenAmountA"),w("tokenAmountB"),w("minimumPoolTokenAmount")]),Fe=u.struct([u.u8("instruction"),w("poolTokenAmount"),w("minimumTokenA"),w("minimumTokenB")]),Re=u.struct([u.u8("instruction"),w("poolTokenAmount"),w("minimumTokenAmount")]);u.struct([u.u8("instruction"),w("targetAmp"),u.ns64("stopRampTS")]),u.struct([u.u8("instruction")]),u.struct([u.u8("instruction")]),u.struct([u.u8("instruction")]),u.struct([u.u8("instruction")]),u.struct([u.u8("instruction")]),u.struct([u.u8("instruction")]),u.struct([u.u8("instruction"),Ne]);var Ge=i(55872).Buffer;var xe,Ue=i(55872).Buffer;!function(e){e[e.INITIALIZE=0]="INITIALIZE",e[e.SWAP=1]="SWAP",e[e.DEPOSIT=2]="DEPOSIT",e[e.WITHDRAW=3]="WITHDRAW",e[e.WITHDRAW_ONE=4]="WITHDRAW_ONE"}(xe||(xe={}));var _e=i(55872).Buffer;class Le{constructor(e,t){this.config=e,this.state=t}static async getMinBalanceRentForExemptStableSwap(e){return await e.getMinimumBalanceForRentExemption(Te.span)}static async load(e,t,n=ve){const i=await(async(e,t,n)=>{const i=await e.getAccountInfo(t);if(null===i)throw new Error("Failed to find account");if(!i.owner.equals(n))throw new Error(`Invalid owner: expected ${n.toBase58()}, found ${i.owner.toBase58()}`);return _e.from(i.data)})(e,t,n),r=Ye(t,n);return Le.loadWithData(t,i,r,n)}static async loadFromExchange(e,t){return Le.load(e,t.swapAccount,t.programID)}static async fromProgramAccount(e){const[t]=await Ke(e.publicKey);return Le.fromProgramAccountWithAuthority(e,t)}static fromData(e){const t=Ye(e.publicKey);return Le.fromProgramAccountWithAuthority(e,t)}static fromProgramAccountWithAuthority(e,t){return new Le({swapAccount:e.publicKey,swapProgramID:ve,tokenProgramID:B.TOKEN_PROGRAM_ID,authority:t},e.account)}static loadWithData(e,t,n,i=ve){try{const r=(e=>{const t=Te.decode(e);if(!t.isInitialized)throw new Error("Invalid token swap state");const n=new A.PublicKey(t.adminAccount),i=new A.PublicKey(t.adminFeeAccountA),r=new A.PublicKey(t.adminFeeAccountB),o=new A.PublicKey(t.tokenAccountA),s=new A.PublicKey(t.tokenAccountB),a=new A.PublicKey(t.tokenPool),c=new A.PublicKey(t.mintA),u=new A.PublicKey(t.mintB),l=B.u64.fromBuffer(Ge.from(t.initialAmpFactor)),g=B.u64.fromBuffer(Ge.from(t.targetAmpFactor)),d=t.startRampTs,h=t.stopRampTs,p=(f=t.fees,{adminTrade:new re(B.u64.fromBuffer(Se.from(f.adminTradeFeeNumerator)).toString(),B.u64.fromBuffer(Se.from(f.adminTradeFeeDenominator)).toString()),adminWithdraw:new re(B.u64.fromBuffer(Se.from(f.adminWithdrawFeeNumerator)).toString(),B.u64.fromBuffer(Se.from(f.adminWithdrawFeeDenominator)).toString()),trade:new re(B.u64.fromBuffer(Se.from(f.tradeFeeNumerator)).toString(),B.u64.fromBuffer(Se.from(f.tradeFeeDenominator)).toString()),withdraw:new re(B.u64.fromBuffer(Se.from(f.withdrawFeeNumerator)).toString(),B.u64.fromBuffer(Se.from(f.withdrawFeeDenominator)).toString())});var f;return{isInitialized:!!t.isInitialized,isPaused:!!t.isPaused,nonce:t.nonce,futureAdminDeadline:t.futureAdminDeadline,futureAdminAccount:new A.PublicKey(t.futureAdminAccount),adminAccount:n,tokenA:{adminFeeAccount:i,reserve:o,mint:c},tokenB:{adminFeeAccount:r,reserve:s,mint:u},poolTokenMint:a,initialAmpFactor:l,targetAmpFactor:g,startRampTimestamp:d,stopRampTimestamp:h,fees:p}})(t);if(!r.isInitialized)throw new Error("Invalid token swap state");return new Le({swapAccount:e,swapProgramID:i,tokenProgramID:B.TOKEN_PROGRAM_ID,authority:n},r)}catch(e){throw Error(e)}}swap(e){return function({config:e,state:t},n){const i=n.poolDestination.equals(t.tokenA.reserve)?t.tokenA.adminFeeAccount:t.tokenB.adminFeeAccount;return(({config:e,userAuthority:t,userSource:n,poolSource:i,poolDestination:r,userDestination:o,adminDestination:A,amountIn:s,minimumAmountOut:a})=>{const c=Ue.alloc(Pe.span);Pe.encode({instruction:xe.SWAP,amountIn:s.toBuffer(),minimumAmountOut:a.toBuffer()},c);const u=[{pubkey:e.swapAccount,isSigner:!1,isWritable:!1},{pubkey:e.authority,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:A,isSigner:!1,isWritable:!0},{pubkey:e.tokenProgramID,isSigner:!1,isWritable:!1}];return Me({config:e,keys:u,data:c})})({config:e,...n,adminDestination:i})}(this,e)}deposit(e){return function({config:e,state:t},n){return(({config:e,userAuthority:t,sourceA:n,sourceB:i,tokenAccountA:r,tokenAccountB:o,poolTokenMint:A,poolTokenAccount:s,tokenAmountA:a,tokenAmountB:c,minimumPoolTokenAmount:u})=>{const l=Ue.alloc(Oe.span);Oe.encode({instruction:xe.DEPOSIT,tokenAmountA:a.toBuffer(),tokenAmountB:c.toBuffer(),minimumPoolTokenAmount:u.toBuffer()},l);const g=[{pubkey:e.swapAccount,isSigner:!1,isWritable:!1},{pubkey:e.authority,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:A,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:e.tokenProgramID,isSigner:!1,isWritable:!1}];return Me({config:e,keys:g,data:l})})({config:e,tokenAccountA:t.tokenA.reserve,tokenAccountB:t.tokenB.reserve,poolTokenMint:t.poolTokenMint,...n})}(this,e)}withdraw(e){return function({config:e,state:t},n){return(({config:e,userAuthority:t,poolMint:n,sourceAccount:i,tokenAccountA:r,tokenAccountB:o,userAccountA:A,userAccountB:s,adminFeeAccountA:a,adminFeeAccountB:c,poolTokenAmount:u,minimumTokenA:l,minimumTokenB:g})=>{const d=Ue.alloc(Fe.span);Fe.encode({instruction:xe.WITHDRAW,poolTokenAmount:u.toBuffer(),minimumTokenA:l.toBuffer(),minimumTokenB:g.toBuffer()},d);const h=[{pubkey:e.swapAccount,isSigner:!1,isWritable:!1},{pubkey:e.authority,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:A,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!0},{pubkey:e.tokenProgramID,isSigner:!1,isWritable:!1}];return Me({config:e,keys:h,data:d})})({config:e,poolMint:t.poolTokenMint,tokenAccountA:t.tokenA.reserve,tokenAccountB:t.tokenB.reserve,adminFeeAccountA:t.tokenA.adminFeeAccount,adminFeeAccountB:t.tokenB.adminFeeAccount,...n})}(this,e)}withdrawOne(e){return function({config:e,state:t},n){const[i,r]=n.baseTokenAccount.equals(t.tokenA.reserve)?[t.tokenB.reserve,t.tokenA.adminFeeAccount]:[t.tokenA.reserve,t.tokenB.adminFeeAccount];return(({config:e,userAuthority:t,poolMint:n,sourceAccount:i,baseTokenAccount:r,quoteTokenAccount:o,destinationAccount:A,adminDestinationAccount:s,poolTokenAmount:a,minimumTokenAmount:c})=>{const u=Ue.alloc(Re.span);Re.encode({instruction:xe.WITHDRAW_ONE,poolTokenAmount:a.toBuffer(),minimumTokenAmount:c.toBuffer()},u);const l=[{pubkey:e.swapAccount,isSigner:!1,isWritable:!1},{pubkey:e.authority,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!0,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:A,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!0},{pubkey:e.tokenProgramID,isSigner:!1,isWritable:!1}];return Me({config:e,keys:l,data:u})})({config:e,poolMint:t.poolTokenMint,quoteTokenAccount:i,adminDestinationAccount:r,...n})}(this,e)}}const Ke=(e,t=ve)=>A.PublicKey.findProgramAddress([e.toBuffer()],t),Ye=(e,t=ve)=>((e,t)=>{const n=(e=>Uint8Array.from(e.reduce(((e,t)=>[...e,...t]),[])))(e),i=`${n.toString()}_${t.toString()}`,r=f[i];if(r)return r;const[o]=A.PublicKey.findProgramAddressSync(e,t);return f[i]="string"==typeof(s=o)?p(s):s instanceof A.PublicKey?p(s.toString()):p(new A.PublicKey(s).toString());var s})([e.toBuffer()],t),je=(e,t=Date.now()/1e3)=>{const{initialAmpFactor:n,targetAmpFactor:i,startRampTimestamp:r,stopRampTimestamp:o}=e;if(t>=o)return V(i);if(t<=r)return V(n);W(o>=r);const A=t>=o?1:t<=r?0:(t-r)/(o-r),s=Math.floor(parseFloat(i.sub(n).toString())*A);return V(n.add(new(y())(s)))};i(49500),i(49500);var We=i(40065),Je=ArrayBuffer,qe=Uint8Array,Ze=Uint16Array,ze=Int16Array,He=(Uint32Array,Int32Array),Ve=function(e,t,n){if(qe.prototype.slice)return qe.prototype.slice.call(e,t,n);(null==t||t<0)&&(t=0),(null==n||n>e.length)&&(n=e.length);var i=new qe(n-t);return i.set(e.subarray(t,n)),i},Xe=function(e,t,n,i){if(qe.prototype.fill)return qe.prototype.fill.call(e,t,n,i);for((null==n||n<0)&&(n=0),(null==i||i>e.length)&&(i=e.length);ne.length)&&(i=e.length);n2046MB)","invalid block type","FSE accuracy too high","match distance too far back","unexpected EOF"],tt=function(e,t,n){var i=new Error(t||et[e]);if(i.code=e,Error.captureStackTrace&&Error.captureStackTrace(i,tt),!n)throw i;return i},nt=function(e,t,n){for(var i=0,r=0;i>5&1,A=r>>2&1,s=3&r,a=r>>6;8&r&&tt(0);var c=6-o,u=3==s?4:s,l=nt(e,c,u),g=a?1<>3);h=p+(p>>3)*(7&e[5])}h>2145386496&&tt(1);var f=new qe((1==t?d||h:t?0:h)+12);return f[0]=1,f[4]=4,f[8]=8,{b:c+g,y:0,l:0,d:l,w:t&&1!=t?t:f.subarray(12),e:h,o:new He(f.buffer,0,3),u:d,c:A,m:Math.min(131072,h)}}if(25481893==(i>>4|e[3]<<20))return 8+(((n=e)[4]|n[5]<<8|n[6]<<16|n[7]<<24)>>>0);tt(0)},rt=function(e){for(var t=0;1<n&&tt(3);for(var o=1<0;){var I=rt(A+1),y=i>>3,B=(1<>(7&i)&B,w=(1<w&&(C-=E)),g[++s]=--C,-1==C?(A+=C,f[--u]=s):A-=C,!C)do{var b=i>>3;a=(e[b]|e[b+1]<<8)>>(7&i)&3,i+=2,s+=a}while(3==a)}(s>255||A)&&tt(0);for(var k=0,v=(o>>1)+(o>>3)+3,S=o-1,M=0;M<=s;++M){var D=g[M];if(D<1)d[M]=-D;else for(c=0;c=u)}}for(k&&tt(0),c=0;c>3,{b:r,s:f,n:m,t:h}]},At=ot(new qe([81,16,99,140,49,198,24,99,12,33,196,24,99,102,102,134,70,146,4]),0,6)[1],st=ot(new qe([33,20,196,24,99,140,33,132,16,66,8,33,132,16,66,8,33,68,68,68,68,68,68,68,68,36,9]),0,6)[1],at=ot(new qe([32,132,16,66,102,70,68,68,68,68,36,73,2]),0,5)[1],ct=function(e,t){for(var n=e.length,i=new He(n),r=0;rs&&l>3;a=(a<>(7&u))&A,t[++l]=n.s[a],u-=c=n.n[a]}u==s&&l+1==r||tt(0)},pt=function(e,t,n){var i=6,r=t.length+3>>2,o=r<<1,A=r+o;ht(e.subarray(i,i+=e[0]|e[1]<<8),t.subarray(0,r),n),ht(e.subarray(i,i+=e[2]|e[3]<<8),t.subarray(r,o),n),ht(e.subarray(i,i+=e[4]|e[5]<<8),t.subarray(o,A),n),ht(e.subarray(i),t.subarray(A),n)},ft=function(e,t,n){var i,r=t.b,o=e[r],A=o>>1&3;t.l=1&o;var s=o>>3|e[r+1]<<5|e[r+2]<<13,a=(r+=3)+s;if(1==A){if(r>=e.length)return;return t.b=r+1,n?(Xe(n,e[r],t.y,t.y+=s),n):Xe(new qe(s),e[r])}if(!(a>e.length)){if(0==A)return t.b=a,n?(n.set(e.subarray(r,a),t.y),t.y+=s,n):Ve(e,r,a);if(2==A){var c=e[r],u=3&c,l=c>>2&3,g=c>>4,d=0,h=0;u<2?1&l?g|=e[++r]<<4|(2&l&&e[++r]<<12):g=c>>3:(h=l,l<2?(g|=(63&e[++r])<<4,d=e[r]>>6|e[++r]<<2):2==l?(g|=e[++r]<<4|(3&e[++r])<<12,d=e[r]>>2|e[++r]<<6):(g|=e[++r]<<4|(63&e[++r])<<12,d=e[r]>>6|e[++r]<<2|e[++r]<<10)),++r;var p=n?n.subarray(t.y,t.y+t.m):new qe(t.m),f=p.length-g;if(0==u)p.set(e.subarray(r,r+=g),f);else if(1==u)Xe(p,e[r++],f);else{var m=t.h;if(2==u){var I=function(e,t){var n=0,i=-1,r=new qe(292),o=e[t],A=r.subarray(0,256),s=r.subarray(256,268),a=new Ze(r.buffer,268);if(o<128){var c=ot(e,t+1,6),u=c[0],l=c[1],g=u<<3,d=e[t+=o];d||tt(0);for(var h=0,p=0,f=l.b,m=f,I=(++t<<3)-8+rt(d);!((I-=f)>3;if(h+=(e[y]|e[y+1]<<8)>>(7&I)&(1<>3]|e[y+1]<<8)>>(7&I)&(1<255&&tt(0)}else{for(i=o-127;n>4,A[n+1]=15&B}++t}var C=0;for(n=0;n11&&tt(0),C+=b&&1<0;--n){var M=a[n];Xe(S,n,M,a[n-1]=M+s[n]*(1<127&&(y=y-128<<8|e[r++]);var B=e[r++];3&B&&tt(0);for(var C=[st,at,At],w=2;w>-1;--w){var E=B>>2+(w<<1)&3;if(1==E){var Q=new qe([0,0,e[r++]]);C[w]={s:Q.subarray(2,3),n:Q.subarray(0,1),t:new Ze(Q.buffer,0,1),b:0}}else 2==E?(r=(i=ot(e,r,9-(1&w)))[0],C[w]=i[1]):3==E&&(t.t||tt(0),C[w]=t.t[w])}var b=t.t=C,k=b[0],v=b[1],S=b[2],M=e[a-1];M||tt(0);var D=(a<<3)-8+rt(M)-S.b,N=D>>3,T=0,P=(e[N]|e[N+1]<<8)>>(7&D)&(1<>3]|e[N+1]<<8)>>(7&D)&(1<>3]|e[N+1]<<8)>>(7&D)&(1<>3]|e[N+1]<<8|e[N+2]<<16|e[N+3]<<24)>>>(7&D)&K-1);N=(D-=gt[x])>>3;var j=dt[x]+((e[N]|e[N+1]<<8|e[N+2]<<16)>>(7&D)&(1<>3;var W=lt[R]+((e[N]|e[N+1]<<8|e[N+2]<<16)>>(7&D)&(1<>3,P=S.t[P]+((e[N]|e[N+1]<<8)>>(7&D)&(1<>3,F=k.t[F]+((e[N]|e[N+1]<<8)>>(7&D)&(1<>3,O=v.t[O]+((e[N]|e[N+1]<<8)>>(7&D)&(1<3)t.o[2]=t.o[1],t.o[1]=t.o[0],t.o[0]=Y-=3;else{var J=Y-(0!=W);J?(Y=3==J?t.o[0]-1:t.o[J],J>1&&(t.o[2]=t.o[1]),t.o[1]=t.o[0],t.o[0]=Y):Y=t.o[0]}for(w=0;wj&&(Z=j),w=0;w{if(null==e||0==e.length)return;const t=B.AccountLayout.decode(e);return t.mint=new A.PublicKey(t.mint),t.owner=new A.PublicKey(t.owner),t.amount=B.u64.fromBuffer(t.amount),0===t.delegateOption?(t.delegate=null,t.delegatedAmount=new B.u64(0)):(t.delegate=new A.PublicKey(t.delegate),t.delegatedAmount=B.u64.fromBuffer(t.delegatedAmount)),t.isInitialized=0!==t.state,t.isFrozen=2===t.state,1===t.isNativeOption?(t.rentExemptReserve=B.u64.fromBuffer(t.isNative),t.isNative=!0):(t.rentExemptReserve=null,t.isNative=!1),0===t.closeAuthorityOption?t.closeAuthority=null:t.closeAuthority=new A.PublicKey(t.closeAuthority),t};var Ct=i(55872),wt=i(31511),Et=i.n(wt),Qt=i(65415),bt=i(81036),kt=i.n(bt),vt=i(39489),St=i(992),Mt=i(50189),Dt=i(11312),Nt=i.n(Dt),Tt=i(42943),Pt=i.n(Tt),Ot=i(49500),Ft=i(55872).Buffer,Rt=Object.freeze({__proto__:null,encode:function(e){return e.reduce(((e,t)=>e+t.toString(16).padStart(2,"0")),"0x")},decode:function(e){0===e.indexOf("0x")&&(e=e.substr(2)),e.length%2==1&&(e="0"+e);let t=e.match(/.{2}/g);return null===t?Ct.Buffer.from([]):Ct.Buffer.from(t.map((e=>parseInt(e,16))))}});function Gt(e){return new TextDecoder("utf-8").decode(e)}function xt(e){return(new TextEncoder).encode(e)}var Ut=Object.freeze({__proto__:null,decode:Gt,encode:xt});function _t(e){return Et().encode(e)}var Lt=Object.freeze({__proto__:null,encode:_t,decode:function(e){return Et().decode(e)}});function Kt(e){return Ct.Buffer.from(Qt.toByteArray(e))}var Yt=Object.freeze({__proto__:null,encode:function(e){return Qt.fromByteArray(e)},decode:Kt}),jt=Object.freeze({__proto__:null,hex:Rt,utf8:Ut,bs58:Lt,base64:Yt});function Wt(e){const t=new Map;return e.errors&&e.errors.forEach((e=>{var n;let i=null!==(n=e.msg)&&void 0!==n?n:e.name;t.set(e.code,i)})),t}function Jt(e,...t){if(e.args.length!=t.length)throw new Error("Invalid argument length");const n={};let i=0;return e.args.forEach((e=>{n[e.name]=t[i],i+=1})),n}function qt(e,t={}){e.forEach((e=>{if("accounts"in e)qt(e.accounts,t[e.name]);else if(void 0===t[e.name])throw new Error(`Invalid arguments: ${e.name} not provided.`)}))}function Zt(e){return e instanceof A.PublicKey?e:new A.PublicKey(e)}class zt extends TypeError{constructor(e,t){let n;const{message:i,...r}=e,{path:o}=e;super(0===o.length?i:"At path: "+o.join(".")+" -- "+i),Object.assign(this,r),this.name=this.constructor.name,this.failures=()=>{var i;return null!=(i=n)?i:n=[e,...t()]}}}function Ht(e){return"object"==typeof e&&null!=e}function Vt(e){return"string"==typeof e?JSON.stringify(e):""+e}function Xt(e,t,n,i){if(!0===e)return;!1===e?e={}:"string"==typeof e&&(e={message:e});const{path:r,branch:o}=t,{type:A}=n,{refinement:s,message:a="Expected a value of type `"+A+"`"+(s?" with refinement `"+s+"`":"")+", but received: `"+Vt(i)+"`"}=e;return{value:i,type:A,refinement:s,key:r[r.length-1],path:r,branch:o,...e,message:a}}function*$t(e,t,n,i){var r;Ht(r=e)&&"function"==typeof r[Symbol.iterator]||(e=[e]);for(const r of e){const e=Xt(r,t,n,i);e&&(yield e)}}function*en(e,t,n={}){const{path:i=[],branch:r=[e],coerce:o=!1,mask:A=!1}=n,s={path:i,branch:r};if(o&&(e=t.coercer(e,s),A&&"type"!==t.type&&Ht(t.schema)&&Ht(e)&&!Array.isArray(e)))for(const n in e)void 0===t.schema[n]&&delete e[n];let a=!0;for(const n of t.validator(e,s))a=!1,yield[n,void 0];for(let[n,c,u]of t.entries(e,s)){const t=en(c,u,{path:void 0===n?i:[...i,n],branch:void 0===n?r:[...r,c],coerce:o,mask:A});for(const i of t)i[0]?(a=!1,yield[i[0],void 0]):o&&(c=i[1],void 0===n?e=c:e instanceof Map?e.set(n,c):e instanceof Set?e.add(c):Ht(e)&&(e[n]=c))}if(a)for(const n of t.refiner(e,s))a=!1,yield[n,void 0];a&&(yield[void 0,e])}class tn{constructor(e){const{type:t,schema:n,validator:i,refiner:r,coercer:o=(e=>e),entries:A=function*(){}}=e;this.type=t,this.schema=n,this.entries=A,this.coercer=o,this.validator=i?(e,t)=>$t(i(e,t),t,this,e):()=>[],this.refiner=r?(e,t)=>$t(r(e,t),t,this,e):()=>[]}assert(e){return function(e,t){const n=on(e,t);if(n[0])throw n[0]}(e,this)}create(e){return nn(e,this)}is(e){return rn(e,this)}mask(e){return function(e,t){const n=on(e,t,{coerce:!0,mask:!0});if(n[0])throw n[0];return n[1]}(e,this)}validate(e,t={}){return on(e,this,t)}}function nn(e,t){const n=on(e,t,{coerce:!0});if(n[0])throw n[0];return n[1]}function rn(e,t){return!on(e,t)[0]}function on(e,t,n={}){const i=en(e,t,n),r=function(e){const{done:t,value:n}=e.next();return t?void 0:n}(i);return r[0]?[new zt(r[0],(function*(){for(const e of i)e[0]&&(yield e[0])})),void 0]:[void 0,r[1]]}function An(e,t){return new tn({type:e,schema:null,validator:t})}function sn(e){return new tn({type:"array",schema:e,*entries(t){if(e&&Array.isArray(t))for(const[n,i]of t.entries())yield[n,i,e]},coercer:e=>Array.isArray(e)?e.slice():e,validator:e=>Array.isArray(e)||"Expected an array value, but received: "+Vt(e)})}function an(e){const t=Vt(e),n=typeof e;return new tn({type:"literal",schema:"string"===n||"number"===n||"boolean"===n?e:null,validator:n=>n===e||"Expected the literal `"+t+"`, but received: "+Vt(n)})}function cn(e){return new tn({...e,validator:(t,n)=>null===t||e.validator(t,n),refiner:(t,n)=>null===t||e.refiner(t,n)})}function un(){return An("number",(e=>"number"==typeof e&&!isNaN(e)||"Expected a number, but received: "+Vt(e)))}function ln(e){return new tn({...e,validator:(t,n)=>void 0===t||e.validator(t,n),refiner:(t,n)=>void 0===t||e.refiner(t,n)})}function gn(){return An("string",(e=>"string"==typeof e||"Expected a string, but received: "+Vt(e)))}function dn(e){const t=Object.keys(e);return new tn({type:"type",schema:e,*entries(n){if(Ht(n))for(const i of t)yield[i,n[i],e[i]]},validator:e=>Ht(e)||"Expected an object, but received: "+Vt(e)})}function hn(e){const t=e.map((e=>e.type)).join(" | ");return new tn({type:"union",schema:null,validator(n,i){const r=[];for(const t of e){const[...e]=en(n,t,i),[o]=e;if(!o[0])return[];for(const[t]of e)t&&r.push(t)}return["Expected the value to satisfy a union of `"+t+"`, but received: "+Vt(n),...r]}})}function pn(){return An("unknown",(()=>!0))}async function fn(e,t,n){if(t.length<=99)return await mn(e,t,n);{const i=function(e,t){return Array.apply(0,new Array(Math.ceil(e.length/99))).map(((t,n)=>e.slice(99*n,99*(n+1))))}(t);return(await Promise.all(i.map((t=>mn(e,t,n))))).flat()}}async function mn(e,t,n){const i=null!=n?n:e.commitment;return(await e.getMultipleAccountsInfo(t,i)).map(((e,n)=>null===e?null:{publicKey:t[n],account:e}))}async function In(e,t,n,i,r){n&&n.length>0&&t.sign(...n);const o=t._compile(),s=o.serialize(),a=t._serialize(s).toString("base64"),c={encoding:"base64",commitment:null!=i?i:e.commitment};if(r){const e=(Array.isArray(r)?r:o.nonProgramIds()).map((e=>e.toBase58()));c.accounts={encoding:"base64",addresses:e}}n&&(c.sigVerify=!0);const u=[a,c],l=nn(await e._rpcRequest("simulateTransaction",u),Cn);if("error"in l){let e;if("data"in l.error&&(e=l.error.data.logs,e&&Array.isArray(e))){const t="\n ",n=t+e.join(t);Ot.error(l.error.message,n)}throw new A.SendTransactionError("failed to simulate transaction: "+l.error.message,e)}return l.result}const yn=Bn(pn());function Bn(e){return hn([dn({jsonrpc:an("2.0"),id:gn(),result:e}),dn({jsonrpc:an("2.0"),id:gn(),error:dn({code:pn(),message:gn(),data:ln(An("any",(()=>!0)))})})])}const Cn=(En=dn({err:cn(hn([dn({}),gn()])),logs:cn(sn(gn())),accounts:ln(cn(sn(cn(dn({executable:An("boolean",(e=>"boolean"==typeof e)),owner:gn(),lamports:un(),data:sn(gn()),rentEpoch:ln(un())}))))),unitsConsumed:ln(un())}),function(e,t,n){return new tn({...e,coercer:(i,r)=>rn(i,t)?e.coercer(n(i),r):e.coercer(i,r)})}(Bn(wn=dn({context:dn({slot:un()}),value:En})),yn,(e=>"error"in e?e:{...e,result:nn(e.result,wn)})));var wn,En,Qn=Object.freeze({__proto__:null,invoke:async function(e,t,n,i){e=Zt(e),i||(i=Dn());const r=new A.Transaction;if(r.add(new A.TransactionInstruction({programId:e,keys:null!=t?t:[],data:n})),void 0===i.sendAndConfirm)throw new Error("This function requires 'Provider.sendAndConfirm' to be implemented.");return await i.sendAndConfirm(r,[])},getMultipleAccounts:fn,simulateTransaction:In});class bn{constructor(e,t,n){this.connection=e,this.wallet=t,this.opts=n}static defaultOptions(){return{preflightCommitment:"processed",commitment:"processed"}}static local(e,t){throw new Error("Provider local is not available on browser.")}static env(){throw new Error("Provider env is not available on browser.")}async sendAndConfirm(e,t,n){var i;void 0===n&&(n=this.opts),e.feePayer=this.wallet.publicKey,e.recentBlockhash=(await this.connection.getRecentBlockhash(n.preflightCommitment)).blockhash,e=await this.wallet.signTransaction(e),(null!=t?t:[]).forEach((t=>{e.partialSign(t)}));const r=e.serialize();try{return await vn(this.connection,r,n)}catch(t){if(t instanceof Sn){const n=await this.connection.getTransaction(_t(e.signature),{commitment:"confirmed"});if(n){const e=null===(i=n.meta)||void 0===i?void 0:i.logMessages;throw e?new A.SendTransactionError(t.message,e):t}throw t}throw t}}async sendAll(e,t){void 0===t&&(t=this.opts);const n=await this.connection.getRecentBlockhash(t.preflightCommitment);let i=e.map((e=>{var t;let i=e.tx,r=null!==(t=e.signers)&&void 0!==t?t:[];return i.feePayer=this.wallet.publicKey,i.recentBlockhash=n.blockhash,r.forEach((e=>{i.partialSign(e)})),i}));const r=await this.wallet.signAllTransactions(i),o=[];for(let e=0;ee.startsWith("Program log: AnchorError")));if(-1===t)return null;const n=e[t],i=[n];let r;if(t+11)return null;i=e[0].match(/([0-9]+)/g)[0]}try{r=parseInt(i)}catch(e){return null}let o=t.get(r);return void 0!==o?new Un(r,o,e.logs):(o=Kn.get(r),void 0!==o?new Un(r,o,e.logs):null)}get program(){var e;return null===(e=this._programErrorStack)||void 0===e?void 0:e.stack[this._programErrorStack.stack.length-1]}get programErrorStack(){var e;return null===(e=this._programErrorStack)||void 0===e?void 0:e.stack}toString(){return this.msg}}function _n(e,t){On("debug-logs")&&Ot.log("Translating error:",e);const n=xn.parse(e.logs);if(n)return n;const i=Un.parse(e,t);if(i)return i;if(e.logs){const t={get:function(t,n){return"programErrorStack"===n?t.programErrorStack.stack:"program"===n?t.programErrorStack.stack[e.programErrorStack.stack.length-1]:Reflect.get(...arguments)}};return e.programErrorStack=Gn.parse(e.logs),new Proxy(e,t)}return e}const Ln={InstructionMissing:100,InstructionFallbackNotFound:101,InstructionDidNotDeserialize:102,InstructionDidNotSerialize:103,IdlInstructionStub:1e3,IdlInstructionInvalidProgram:1001,ConstraintMut:2e3,ConstraintHasOne:2001,ConstraintSigner:2002,ConstraintRaw:2003,ConstraintOwner:2004,ConstraintRentExempt:2005,ConstraintSeeds:2006,ConstraintExecutable:2007,ConstraintState:2008,ConstraintAssociated:2009,ConstraintAssociatedInit:2010,ConstraintClose:2011,ConstraintAddress:2012,ConstraintZero:2013,ConstraintTokenMint:2014,ConstraintTokenOwner:2015,ConstraintMintMintAuthority:2016,ConstraintMintFreezeAuthority:2017,ConstraintMintDecimals:2018,ConstraintSpace:2019,RequireViolated:2500,RequireEqViolated:2501,RequireKeysEqViolated:2502,RequireNeqViolated:2503,RequireKeysNeqViolated:2504,RequireGtViolated:2505,RequireGteViolated:2506,AccountDiscriminatorAlreadySet:3e3,AccountDiscriminatorNotFound:3001,AccountDiscriminatorMismatch:3002,AccountDidNotDeserialize:3003,AccountDidNotSerialize:3004,AccountNotEnoughKeys:3005,AccountNotMutable:3006,AccountOwnedByWrongProgram:3007,InvalidProgramId:3008,InvalidProgramExecutable:3009,AccountNotSigner:3010,AccountNotSystemOwned:3011,AccountNotInitialized:3012,AccountNotProgramData:3013,AccountNotAssociatedTokenAccount:3014,AccountSysvarMismatch:3015,StateInvalidAddress:4e3,DeclaredProgramIdMismatch:4100,Deprecated:5e3},Kn=new Map([[Ln.InstructionMissing,"8 byte instruction identifier not provided"],[Ln.InstructionFallbackNotFound,"Fallback functions are not supported"],[Ln.InstructionDidNotDeserialize,"The program could not deserialize the given instruction"],[Ln.InstructionDidNotSerialize,"The program could not serialize the given instruction"],[Ln.IdlInstructionStub,"The program was compiled without idl instructions"],[Ln.IdlInstructionInvalidProgram,"The transaction was given an invalid program for the IDL instruction"],[Ln.ConstraintMut,"A mut constraint was violated"],[Ln.ConstraintHasOne,"A has_one constraint was violated"],[Ln.ConstraintSigner,"A signer constraint was violated"],[Ln.ConstraintRaw,"A raw constraint was violated"],[Ln.ConstraintOwner,"An owner constraint was violated"],[Ln.ConstraintRentExempt,"A rent exemption constraint was violated"],[Ln.ConstraintSeeds,"A seeds constraint was violated"],[Ln.ConstraintExecutable,"An executable constraint was violated"],[Ln.ConstraintState,"A state constraint was violated"],[Ln.ConstraintAssociated,"An associated constraint was violated"],[Ln.ConstraintAssociatedInit,"An associated init constraint was violated"],[Ln.ConstraintClose,"A close constraint was violated"],[Ln.ConstraintAddress,"An address constraint was violated"],[Ln.ConstraintZero,"Expected zero account discriminant"],[Ln.ConstraintTokenMint,"A token mint constraint was violated"],[Ln.ConstraintTokenOwner,"A token owner constraint was violated"],[Ln.ConstraintMintMintAuthority,"A mint mint authority constraint was violated"],[Ln.ConstraintMintFreezeAuthority,"A mint freeze authority constraint was violated"],[Ln.ConstraintMintDecimals,"A mint decimals constraint was violated"],[Ln.ConstraintSpace,"A space constraint was violated"],[Ln.RequireViolated,"A require expression was violated"],[Ln.RequireEqViolated,"A require_eq expression was violated"],[Ln.RequireKeysEqViolated,"A require_keys_eq expression was violated"],[Ln.RequireNeqViolated,"A require_neq expression was violated"],[Ln.RequireKeysNeqViolated,"A require_keys_neq expression was violated"],[Ln.RequireGtViolated,"A require_gt expression was violated"],[Ln.RequireGteViolated,"A require_gte expression was violated"],[Ln.AccountDiscriminatorAlreadySet,"The account discriminator was already set on this account"],[Ln.AccountDiscriminatorNotFound,"No 8 byte discriminator was found on the account"],[Ln.AccountDiscriminatorMismatch,"8 byte discriminator did not match what was expected"],[Ln.AccountDidNotDeserialize,"Failed to deserialize the account"],[Ln.AccountDidNotSerialize,"Failed to serialize the account"],[Ln.AccountNotEnoughKeys,"Not enough account keys given to the instruction"],[Ln.AccountNotMutable,"The given account is not mutable"],[Ln.AccountOwnedByWrongProgram,"The given account is owned by a different program than expected"],[Ln.InvalidProgramId,"Program ID was not as expected"],[Ln.InvalidProgramExecutable,"Program account is not executable"],[Ln.AccountNotSigner,"The given account did not sign"],[Ln.AccountNotSystemOwned,"The given account is not owned by the system program"],[Ln.AccountNotInitialized,"The program expected this account to be already initialized"],[Ln.AccountNotProgramData,"The given account is not a program data account"],[Ln.AccountNotAssociatedTokenAccount,"The given account is not the associated token account"],[Ln.AccountSysvarMismatch,"The given public key does not match the required sysvar"],[Ln.StateInvalidAddress,"The given state account does not have the correct address"],[Ln.DeclaredProgramIdMismatch,"The declared program id does not match the actual program id"],[Ln.Deprecated,"The API being used is deprecated and should no longer be used"]]);var Yn=function(){return Yn=Object.assign||function(e){for(var t,n=1,i=arguments.length;ne.name===i));if(1!==r.length)throw new Rn(`Type not found: ${JSON.stringify(e)}`);return Zn.typeDefLayout(r[0],t,n)}if("array"in e.type){let i=e.type.array[0],r=e.type.array[1],o=Zn.fieldLayout({name:void 0,type:i},t);return St.array(o,r,n)}throw new Error(`Not yet implemented: ${e}`)}}static typeDefLayout(e,t=[],n){if("struct"===e.type.kind){const i=e.type.fields.map((e=>Zn.fieldLayout(e,t)));return St.struct(i,n)}if("enum"===e.type.kind){let i=e.type.variants.map((e=>{const n=kt()(e.name);if(void 0===e.fields)return St.struct([],n);const i=e.fields.map((e=>{if(!e.hasOwnProperty("name"))throw new Error("Tuple enum variants not yet implemented.");return Zn.fieldLayout(e,t)}));return St.struct(i,n)}));return void 0!==n?St.rustEnum(i).replicate(n):St.rustEnum(i,n)}throw new Error(`Unknown type kint: ${e}`)}}class zn{constructor(e){this.idl=e,this.ixLayout=zn.parseIxLayout(e);const t=new Map;e.instructions.forEach((e=>{const n=Vn("global",e.name);t.set(Et().encode(n),{layout:this.ixLayout.get(e.name),name:e.name})})),e.state&&e.state.methods.map((e=>{const n=Vn("state",e.name);t.set(Et().encode(n),{layout:this.ixLayout.get(e.name),name:e.name})})),this.sighashLayouts=t}encode(e,t){return this._encode("global",e,t)}encodeState(e,t){return this._encode("state",e,t)}_encode(e,t,n){const i=Ct.Buffer.alloc(1e3),r=kt()(t),o=this.ixLayout.get(r);if(!o)throw new Error(`Unknown method: ${r}`);const A=o.encode(n,i),s=i.slice(0,A);return Ct.Buffer.concat([Vn(e,t),s])}static parseIxLayout(e){const t=(e.state?e.state.methods:[]).map((t=>{let n=t.args.map((t=>{var n,i;return Zn.fieldLayout(t,Array.from([...null!==(n=e.accounts)&&void 0!==n?n:[],...null!==(i=e.types)&&void 0!==i?i:[]]))}));const i=kt()(t.name);return[i,St.struct(n,i)]})).concat(e.instructions.map((t=>{let n=t.args.map((t=>{var n,i;return Zn.fieldLayout(t,Array.from([...null!==(n=e.accounts)&&void 0!==n?n:[],...null!==(i=e.types)&&void 0!==i?i:[]]))}));const i=kt()(t.name);return[i,St.struct(n,i)]})));return new Map(t)}decode(e,t="hex"){"string"==typeof e&&(e="hex"===t?Ct.Buffer.from(e,"hex"):Et().decode(e));let n=Et().encode(e.slice(0,8)),i=e.slice(8);const r=this.sighashLayouts.get(n);return r?{data:r.layout.decode(i),name:r.name}:null}format(e,t){return Hn.format(e,t,this.idl)}}class Hn{static format(e,t,n){const i=n.instructions.filter((t=>e.name===t.name))[0];if(void 0===i)return Ot.error("Invalid instruction given"),null;const r=i.args.map((t=>({name:t.name,type:Hn.formatIdlType(t.type),data:Hn.formatIdlData(t,e.data[t.name],n.types)}))),o=Hn.flattenIdlAccounts(i.accounts);return{args:r,accounts:t.map(((e,t)=>t`;if("option"in e)return`Option<${this.formatIdlType(e.option)}>`;if("defined"in e)return e.defined;if("array"in e)return`Array<${e.array[0]}; ${e.array[1]}>`;throw new Error(`Unknown IDL type: ${e}`)}static formatIdlData(e,t,n){if("string"==typeof e.type)return t.toString();if(e.type.hasOwnProperty("vec"))return"["+t.map((t=>this.formatIdlData({name:"",type:e.type.vec},t))).join(", ")+"]";if(e.type.hasOwnProperty("option"))return null===t?"null":this.formatIdlData({name:"",type:e.type.option},t,n);if(e.type.hasOwnProperty("defined")){if(void 0===n)throw new Error("User defined types not provided");const i=n.filter((t=>t.name===e.type.defined));if(1!==i.length)throw new Error(`Type not found: ${e.type.defined}`);return Hn.formatIdlDataDefined(i[0],t,n)}return"unknown"}static formatIdlDataDefined(e,t,n){if("struct"===e.type.kind){const i=e.type;return"{ "+Object.keys(t).map((e=>{const r=i.fields.filter((t=>t.name===e))[0];if(void 0===r)throw new Error("Unable to find type");return e+": "+Hn.formatIdlData(r,t[e],n)})).join(", ")+" }"}if(0===e.type.variants.length)return"{}";if(e.type.variants[0].name){const i=e.type.variants,r=Object.keys(t)[0],o=t[r],A=Object.keys(o).map((e=>{var t;const A=o[e],s=null===(t=i[r])||void 0===t?void 0:t.filter((t=>t.name===e))[0];if(void 0===s)throw new Error("Unable to find variant");return e+": "+Hn.formatIdlData(s,A,n)})).join(", "),s=kt()(r,{pascalCase:!0});return 0===A.length?s:`${s} { ${A} }`}return"Tuple formatting not yet implemented"}static flattenIdlAccounts(e,t){return e.map((e=>{const n=function(e){const t=e.replace(/([A-Z])/g," $1");return t.charAt(0).toUpperCase()+t.slice(1)}(e.name);if(e.hasOwnProperty("accounts")){const i=t?`${t} > ${n}`:n;return Hn.flattenIdlAccounts(e.accounts,i)}return{...e,name:t?`${t} > ${n}`:n}})).flat()}}function Vn(e,t){var n;let i=`${e}:${void 0===n&&(n={}),function(e,t){return void 0===t&&(t={}),function(e,t){void 0===t&&(t={});for(var n=t.splitRegexp,i=void 0===n?Wn:n,r=t.stripRegexp,o=void 0===r?Jn:r,A=t.transform,s=void 0===A?jn:A,a=t.delimiter,c=void 0===a?" ":a,u=qn(qn(e,i,"$1\0$2"),o,"\0"),l=0,g=u.length;"\0"===u.charAt(l);)l++;for(;"\0"===u.charAt(g-1);)g--;return u.slice(l,g).split("\0").map(s).join(c)}(e,Yn({delimiter:"."},t))}(t,Yn({delimiter:"_"},n))}`;return Ct.Buffer.from(vt.sha256.digest(i)).slice(0,8)}function Xn(e,t){if("enum"===t.type.kind){let n=t.type.variants.map((t=>void 0===t.fields?0:t.fields.map((t=>{if("object"!=typeof t||!("name"in t))throw new Error("Tuple enum variants not yet implemented.");return $n(e,t.type)})).reduce(((e,t)=>e+t))));return Math.max(...n)+1}return void 0===t.type.fields?0:t.type.fields.map((t=>$n(e,t.type))).reduce(((e,t)=>e+t),0)}function $n(e,t){var n,i;switch(t){case"bool":case"u8":case"i8":case"bytes":case"string":return 1;case"i16":case"u16":return 2;case"u32":case"i32":case"f32":return 4;case"u64":case"i64":case"f64":return 8;case"u128":case"i128":return 16;case"publicKey":return 32;default:if("vec"in t)return 1;if("option"in t)return 1+$n(e,t.option);if("coption"in t)return 4+$n(e,t.coption);if("defined"in t){const r=null!==(i=null===(n=e.types)||void 0===n?void 0:n.filter((e=>e.name===t.defined)))&&void 0!==i?i:[];if(1!==r.length)throw new Rn(`Type not found: ${JSON.stringify(t)}`);return Xn(e,r[0])}if("array"in t){let n=t.array[0],i=t.array[1];return $n(e,n)*i}throw new Error(`Invalid type ${JSON.stringify(t)}`)}}const ei=8;class ti{constructor(e){if(void 0===e.accounts)return void(this.accountLayouts=new Map);const t=e.accounts.map((t=>[t.name,Zn.typeDefLayout(t,e.types)]));this.accountLayouts=new Map(t),this.idl=e}async encode(e,t){const n=Ct.Buffer.alloc(1e3),i=this.accountLayouts.get(e);if(!i)throw new Error(`Unknown account: ${e}`);const r=i.encode(t,n);let o=n.slice(0,r),A=ti.accountDiscriminator(e);return Ct.Buffer.concat([A,o])}decode(e,t){if(ti.accountDiscriminator(e).compare(t.slice(0,8)))throw new Error("Invalid account discriminator");return this.decodeUnchecked(e,t)}decodeUnchecked(e,t){const n=t.slice(8),i=this.accountLayouts.get(e);if(!i)throw new Error(`Unknown account: ${e}`);return i.decode(n)}memcmp(e,t){const n=ti.accountDiscriminator(e);return{offset:0,bytes:Et().encode(t?Ct.Buffer.concat([n,t]):n)}}size(e){var t;return 8+(null!==(t=Xn(this.idl,e))&&void 0!==t?t:0)}static accountDiscriminator(e){return Ct.Buffer.from(vt.sha256.digest(`account:${kt()(e,{pascalCase:!0})}`)).slice(0,8)}}class ni{constructor(e){if(void 0===e.events)return void(this.layouts=new Map);const t=e.events.map((t=>{let n={name:t.name,type:{kind:"struct",fields:t.fields.map((e=>({name:e.name,type:e.type})))}};return[t.name,Zn.typeDefLayout(n,e.types)]}));this.layouts=new Map(t),this.discriminators=new Map(void 0===e.events?[]:e.events.map((e=>[Qt.fromByteArray(ii(e.name)),e.name])))}decode(e){let t;try{t=Ct.Buffer.from(Qt.toByteArray(e))}catch(e){return null}const n=Qt.fromByteArray(t.slice(0,8)),i=this.discriminators.get(n);if(void 0===i)return null;const r=this.layouts.get(i);if(!r)throw new Error(`Unknown event: ${i}`);return{data:r.decode(t.slice(8)),name:i}}}function ii(e){return Ct.Buffer.from(vt.sha256.digest(`event:${e}`)).slice(0,8)}class ri{constructor(e){if(void 0===e.state)throw new Error("Idl state not defined.");this.layout=Zn.typeDefLayout(e.state.struct,e.types)}async encode(e,t){const n=Ct.Buffer.alloc(1e3),i=this.layout.encode(t,n),r=await oi(e),o=n.slice(0,i);return Ct.Buffer.concat([r,o])}decode(e){const t=e.slice(8);return this.layout.decode(t)}}async function oi(e){let t=On("anchor-deprecated-state")?"account":"state";return Ct.Buffer.from(vt.sha256.digest(`${t}:${e}`)).slice(0,8)}class Ai{constructor(e){this.instruction=new zn(e),this.accounts=new ti(e),this.events=new ni(e),e.state&&(this.state=new ri(e))}}var si="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==i.g?i.g:"undefined"!=typeof self?self:{};class ai{constructor(e,t){if(!Number.isInteger(e))throw new TypeError("span must be an integer");this.span=e,this.property=t}makeDestinationObject(){return{}}decode(e,t){throw new Error("Layout is abstract")}encode(e,t,n){throw new Error("Layout is abstract")}getSpan(e,t){if(0>this.span)throw new RangeError("indeterminate span");return this.span}replicate(e){const t=Object.create(this.constructor.prototype);return Object.assign(t,this),t.property=e,t}fromArray(e){}}var ci=ai;class ui extends ai{isCount(){throw new Error("ExternalLayout is abstract")}}class li extends ui{constructor(e,t,n){if(!(e instanceof ai))throw new TypeError("layout must be a Layout");if(void 0===t)t=0;else if(!Number.isInteger(t))throw new TypeError("offset must be integer or undefined");super(e.span,n||e.property),this.layout=e,this.offset=t}isCount(){return this.layout instanceof gi||this.layout instanceof di}decode(e,t){return void 0===t&&(t=0),this.layout.decode(e,t+this.offset)}encode(e,t,n){return void 0===n&&(n=0),this.layout.encode(e,t,n+this.offset)}}class gi extends ai{constructor(e,t){if(super(e,t),6e&&t instanceof ai),!0))throw new TypeError("fields must be array of Layout instances");"boolean"==typeof t&&void 0===n&&(n=t,t=void 0);for(const t of e)if(0>t.span&&void 0===t.property)throw new Error("fields cannot contain unnamed variable-length layout");let i=-1;try{i=e.reduce(((e,t)=>e+t.getSpan()),0)}catch(e){}super(i,t),this.fields=e,this.decodePrefixes=!!n}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);let n=0;try{n=this.fields.reduce(((n,i)=>{const r=i.getSpan(e,t);return t+=r,n+r}),0)}catch(e){throw new RangeError("indeterminate span")}return n}decode(e,t){void 0===t&&(t=0);const n=this.makeDestinationObject();for(const i of this.fields)if(void 0!==i.property&&(n[i.property]=i.decode(e,t)),t+=i.getSpan(e,t),this.decodePrefixes&&e.length===t)break;return n}encode(e,t,n){void 0===n&&(n=0);const i=n;let r=0,o=0;for(const i of this.fields){let A=i.span;if(o=0A&&(A=i.getSpan(t,n)))}r=n,n+=A}return r+o-i}fromArray(e){const t=this.makeDestinationObject();for(const n of this.fields)void 0!==n.property&&0n.span?t=-1:0<=t&&(t+=n.span)}}}class mi{constructor(e){this.property=e}decode(){throw new Error("UnionDiscriminator is abstract")}encode(){throw new Error("UnionDiscriminator is abstract")}}class Ii extends mi{constructor(e,t){if(!(e instanceof ui&&e.isCount()))throw new TypeError("layout must be an unsigned integer ExternalLayout");super(t||e.property||"variant"),this.layout=e}decode(e,t){return this.layout.decode(e,t)}encode(e,t,n){return this.layout.encode(e,t,n)}}class yi extends ai{constructor(e,t,n){const i=e instanceof gi||e instanceof di;if(i)e=new Ii(new li(e));else if(e instanceof ui&&e.isCount())e=new Ii(e);else if(!(e instanceof mi))throw new TypeError("discr must be a UnionDiscriminator or an unsigned integer layout");if(void 0===t&&(t=null),!(null===t||t instanceof ai))throw new TypeError("defaultLayout must be null or a Layout");if(null!==t){if(0>t.span)throw new Error("defaultLayout must have constant span");void 0===t.property&&(t=t.replicate("content"))}let r=-1;t&&(r=t.span,0<=r&&i&&(r+=e.layout.span)),super(r,n),this.discriminator=e,this.usesPrefixDiscriminator=i,this.defaultLayout=t,this.registry={};let o=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(e){return o(e)},this.configGetSourceVariant=function(e){o=e.bind(this)}}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);const n=this.getVariant(e,t);if(!n)throw new Error("unable to determine span for unrecognized variant");return n.getSpan(e,t)}defaultGetSourceVariant(e){if(e.hasOwnProperty(this.discriminator.property)){if(this.defaultLayout&&e.hasOwnProperty(this.defaultLayout.property))return;const t=this.registry[e[this.discriminator.property]];if(t&&(!t.layout||e.hasOwnProperty(t.property)))return t}else for(const t in this.registry){const n=this.registry[t];if(e.hasOwnProperty(n.property))return n}throw new Error("unable to infer src variant")}decode(e,t){let n;void 0===t&&(t=0);const i=this.discriminator,r=i.decode(e,t);let o=this.registry[r];if(void 0===o){let A=0;o=this.defaultLayout,this.usesPrefixDiscriminator&&(A=i.layout.span),n=this.makeDestinationObject(),n[i.property]=r,n[o.property]=this.defaultLayout.decode(e,t+A)}else n=o.decode(e,t);return n}encode(e,t,n){void 0===n&&(n=0);const i=this.getSourceVariant(e);if(void 0===i){const i=this.discriminator,r=this.defaultLayout;let o=0;return this.usesPrefixDiscriminator&&(o=i.layout.span),i.encode(e[i.property],t,n),o+r.encode(e[r.property],t,n+o)}return i.encode(e,t,n)}addVariant(e,t,n){const i=new Bi(this,e,t,n);return this.registry[e]=i,i}getVariant(e,t){let n=e;return Ft.isBuffer(e)&&(void 0===t&&(t=0),n=this.discriminator.decode(e,t)),this.registry[n]}}class Bi extends ai{constructor(e,t,n,i){if(!(e instanceof yi))throw new TypeError("union must be a Union");if(!Number.isInteger(t)||0>t)throw new TypeError("variant must be a (non-negative) integer");if("string"==typeof n&&void 0===i&&(i=n,n=null),n){if(!(n instanceof ai))throw new TypeError("layout must be a Layout");if(null!==e.defaultLayout&&0<=n.span&&n.span>e.defaultLayout.span)throw new Error("variant span exceeds span of containing union");if("string"!=typeof i)throw new TypeError("variant must have a String property")}let r=e.span;0>e.span&&(r=n?n.span:0,0<=r&&e.usesPrefixDiscriminator&&(r+=e.discriminator.layout.span)),super(r,i),this.union=e,this.variant=t,this.layout=n||null}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);let n=0;return this.union.usesPrefixDiscriminator&&(n=this.union.discriminator.layout.span),n+this.layout.getSpan(e,t+n)}decode(e,t){const n=this.makeDestinationObject();if(void 0===t&&(t=0),this!==this.union.getVariant(e,t))throw new Error("variant mismatch");let i=0;return this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout?n[this.property]=this.layout.decode(e,t+i):this.property?n[this.property]=!0:this.union.usesPrefixDiscriminator&&(n[this.union.discriminator.property]=this.variant),n}encode(e,t,n){void 0===n&&(n=0);let i=0;if(this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout&&!e.hasOwnProperty(this.property))throw new TypeError("variant lacks property "+this.property);this.union.discriminator.encode(this.variant,t,n);let r=i;if(this.layout&&(this.layout.encode(e[this.property],t,n+i),r+=this.layout.getSpan(t,n+i),0<=this.union.span&&r>this.union.span))throw new Error("encoded variant overruns containing union");return r}fromArray(e){if(this.layout)return this.layout.fromArray(e)}}class Ci extends ai{constructor(e,t){if(!(e instanceof ui&&e.isCount()||Number.isInteger(e)&&0<=e))throw new TypeError("length must be positive integer or an unsigned integer ExternalLayout");let n=-1;e instanceof ui||(n=e),super(n,t),this.length=e}getSpan(e,t){let n=this.span;return 0>n&&(n=this.length.decode(e,t)),n}decode(e,t){void 0===t&&(t=0);let n=this.span;return 0>n&&(n=this.length.decode(e,t)),e.slice(t,t+n)}encode(e,t,n){let i=this.length;if(this.length instanceof ui&&(i=e.length),!Ft.isBuffer(e)||i!==e.length)throw new TypeError((r="Blob.encode",(this.property?r+"["+this.property+"]":r)+" requires (length "+i+") Buffer as src"));var r;if(n+i>t.length)throw new RangeError("encoding overruns Buffer");return t.write(e.toString("hex"),n,i,"hex"),this.length instanceof ui&&this.length.encode(i,t,n),i}}var wi=e=>new gi(1,e),Ei=e=>new pi(e),Qi=(e,t,n)=>new fi(e,t,n),bi=(e,t)=>new Ci(e,t);class ki{constructor(e){}encode(e,t){switch(kt()(e)){case"initializeMint":return function({decimals:e,mintAuthority:t,freezeAuthority:n}){return Di({initializeMint:{decimals:e,mintAuthority:t.toBuffer(),freezeAuthorityOption:!!n,freezeAuthority:(n||A.PublicKey.default).toBuffer()}})}(t);case"initializeAccount":return Di({initializeAccount:{}});case"initializeMultisig":return function({m:e}){return Di({initializeMultisig:{m:e}})}(t);case"transfer":return function({amount:e}){return Di({transfer:{amount:e}})}(t);case"approve":return function({amount:e}){return Di({approve:{amount:e}})}(t);case"revoke":return Di({revoke:{}});case"setAuthority":return function({authorityType:e,newAuthority:t}){return Di({setAuthority:{authorityType:e,newAuthority:t}})}(t);case"mintTo":return function({amount:e}){return Di({mintTo:{amount:e}})}(t);case"burn":return function({amount:e}){return Di({burn:{amount:e}})}(t);case"closeAccount":return Di({closeAccount:{}});case"freezeAccount":return Di({freezeAccount:{}});case"thawAccount":return Di({thawAccount:{}});case"transferChecked":return function({amount:e,decimals:t}){return Di({transferChecked:{amount:e,decimals:t}})}(t);case"approvedChecked":return function({amount:e,decimals:t}){return Di({approveChecked:{amount:e,decimals:t}})}(t);case"mintToChecked":return function({amount:e,decimals:t}){return Di({mintToChecked:{amount:e,decimals:t}})}(t);case"burnChecked":return function({amount:e,decimals:t}){return Di({burnChecked:{amount:e,decimals:t}})}(t);case"intializeAccount2":return function({authority:e}){return Di({initilaizeAccount2:{authority:e}})}(t);case"syncNative":return Di({syncNative:{}});case"initializeAccount3":return function({authority:e}){return Di({initializeAccount3:{authority:e}})}(t);case"initializeMultisig2":return function({m:e}){return Di({initializeMultisig2:{m:e}})}(t);case"initializeMint2":return function({decimals:e,mintAuthority:t,freezeAuthority:n}){return Di({encodeInitializeMint2:{decimals:e,mintAuthority:t,freezeAuthority:n}})}(t);default:throw new Error(`Invalid instruction: ${e}`)}}encodeState(e,t){throw new Error("SPL token does not have state")}}const vi=(Si=wi("instruction"),new yi(Si,void 0,void 0));var Si;function Mi(e){return bi(32,e)}function Di(e){let t=Ft.alloc(Ni),n=vi.encode(e,t);return t.slice(0,n)}vi.addVariant(0,Qi([wi("decimals"),bi(32,"mintAuthority"),wi("freezeAuthorityOption"),Mi("freezeAuthority")]),"initializeMint"),vi.addVariant(1,Qi([]),"initializeAccount"),vi.addVariant(2,Qi([wi("m")]),"initializeMultisig"),vi.addVariant(3,Qi([Ei("amount")]),"transfer"),vi.addVariant(4,Qi([Ei("amount")]),"approve"),vi.addVariant(5,Qi([]),"revoke"),vi.addVariant(6,Qi([wi("authorityType"),wi("newAuthorityOption"),Mi("newAuthority")]),"setAuthority"),vi.addVariant(7,Qi([Ei("amount")]),"mintTo"),vi.addVariant(8,Qi([Ei("amount")]),"burn"),vi.addVariant(9,Qi([]),"closeAccount"),vi.addVariant(10,Qi([]),"freezeAccount"),vi.addVariant(11,Qi([]),"thawAccount"),vi.addVariant(12,Qi([Ei("amount"),wi("decimals")]),"transferChecked"),vi.addVariant(13,Qi([Ei("amount"),wi("decimals")]),"approvedChecked"),vi.addVariant(14,Qi([Ei("amount"),wi("decimals")]),"mintToChecked"),vi.addVariant(15,Qi([Ei("amount"),wi("decimals")]),"burnedChecked"),vi.addVariant(16,Qi([Mi("authority")]),"InitializeAccount2"),vi.addVariant(17,Qi([]),"syncNative"),vi.addVariant(18,Qi([Mi("authority")]),"initializeAccount3"),vi.addVariant(19,Qi([wi("m")]),"initializeMultisig2"),vi.addVariant(20,Qi([wi("decimals"),Mi("mintAuthority"),wi("freezeAuthorityOption"),Mi("freezeAuthority")]),"initializeMint2");const Ni=Math.max(...Object.values(vi.registry).map((e=>e.span)));class Ti{constructor(e){}encode(e,t){throw new Error("SPL token does not have state")}decode(e){throw new Error("SPL token does not have state")}}function Pi(e){return new Ri(bi(8),(e=>xi.fromBuffer(e)),(e=>e.toBuffer()),e)}function Oi(e){return new Ri(bi(32),(e=>new A.PublicKey(e)),(e=>e.toBuffer()),e)}function Fi(e,t){return new Gi(e,t)}class Ri extends ci{constructor(e,t,n,i){super(e.span,i),this.layout=e,this.decoder=t,this.encoder=n}decode(e,t){return this.decoder(this.layout.decode(e,t))}encode(e,t,n){return this.layout.encode(this.encoder(e),t,n)}getSpan(e,t){return this.layout.getSpan(e,t)}}class Gi extends ci{constructor(e,t){super(-1,t),this.layout=e,this.discriminator=new gi(4,void 0)}encode(e,t,n=0){return null==e?this.layout.span+this.discriminator.encode(0,t,n):(this.discriminator.encode(1,t,n),this.layout.encode(e,t,n+4)+4)}decode(e,t=0){const n=this.discriminator.decode(e,t);if(0===n)return null;if(1===n)return this.layout.decode(e,t+4);throw new Error("Invalid coption "+this.layout.property)}getSpan(e,t=0){return this.layout.getSpan(e,t+4)+4}}class xi extends(y()){toBuffer(){const e=super.toArray().reverse(),t=Ft.from(e);if(8===t.length)return t;if(t.length>=8)throw new Error("u64 too large");const n=Ft.alloc(8);return t.copy(n),n}static fromBuffer(e){if(8!==e.length)throw new Error(`Invalid buffer length: ${e.length}`);return new xi([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class Ui{constructor(e){this.idl=e}async encode(e,t){switch(e){case"token":{const e=Ft.alloc(165),n=Li.encode(t,e);return e.slice(0,n)}case"mint":{const e=Ft.alloc(82),n=_i.encode(t,e);return e.slice(0,n)}default:throw new Error(`Invalid account name: ${e}`)}}decode(e,t){return this.decodeUnchecked(e,t)}decodeUnchecked(e,t){switch(e){case"token":return function(e){return Li.decode(e)}(t);case"mint":return function(e){return _i.decode(e)}(t);default:throw new Error(`Invalid account name: ${e}`)}}memcmp(e,t){switch(e){case"token":return{dataSize:165};case"mint":return{dataSize:82};default:throw new Error(`Invalid account name: ${e}`)}}size(e){var t;return null!==(t=Xn(this.idl,e))&&void 0!==t?t:0}}const _i=Qi([Fi(Oi(),"mintAuthority"),Pi("supply"),wi("decimals"),new Ri(wi(),(function(e){if(0===e)return!1;if(1===e)return!0;throw new Error("Invalid bool: "+e)}),(function(e){return e?1:0}),"isInitialized"),Fi(Oi(),"freezeAuthority")]),Li=Qi([Oi("mint"),Oi("authority"),Pi("amount"),Fi(Oi(),"delegate"),wi("state"),Fi(Pi(),"isNative"),Pi("delegatedAmount"),Fi(Oi(),"closeAuthority")]);class Ki{constructor(e){}decode(e){throw new Error("SPL token program does not have events")}}class Yi{constructor(e){this.instruction=new ki(e),this.accounts=new Ui(e),this.events=new Ki(e),this.state=new Ti(e)}}var ji=Object.freeze({__proto__:null,hash:function(e){return(0,vt.sha256)(e)}});function Wi(e,t,n){const i=Ct.Buffer.concat([e.toBuffer(),Ct.Buffer.from(t),n.toBuffer()]),r=vt.sha256.digest(i);return new A.PublicKey(Ct.Buffer.from(r))}function Ji(e,t){let n=Ct.Buffer.alloc(0);e.forEach((function(e){if(e.length>32)throw new TypeError("Max seed length exceeded");n=Ct.Buffer.concat([n,Zi(e)])})),n=Ct.Buffer.concat([n,t.toBuffer(),Ct.Buffer.from("ProgramDerivedAddress")]);let i=(0,vt.sha256)(new Uint8Array(n)),r=new(y())(i,16).toArray(void 0,32);if(A.PublicKey.isOnCurve(new Uint8Array(r)))throw new Error("Invalid seeds, address must fall off the curve");return new A.PublicKey(r)}function qi(e,t){let n,i=255;for(;0!=i;){try{n=Ji(e.concat(Ct.Buffer.from([i])),t)}catch(e){if(e instanceof TypeError)throw e;i--;continue}return[n,i]}throw new Error("Unable to find a viable program address nonce")}const Zi=e=>e instanceof Ct.Buffer?e:e instanceof Uint8Array?Ct.Buffer.from(e.buffer,e.byteOffset,e.byteLength):Ct.Buffer.from(e);async function zi(e,...t){let n=[Ct.Buffer.from([97,110,99,104,111,114])];t.forEach((e=>{n.push(e instanceof Ct.Buffer?e:Zt(e).toBuffer())}));const[i]=await A.PublicKey.findProgramAddress(n,Zt(e));return i}var Hi=Object.freeze({__proto__:null,createWithSeedSync:Wi,createProgramAddressSync:Ji,findProgramAddressSync:qi,associated:zi});const Vi=new A.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),Xi=new A.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");var $i=Object.freeze({__proto__:null,TOKEN_PROGRAM_ID:Vi,ASSOCIATED_PROGRAM_ID:Xi,associatedAddress:async function({mint:e,owner:t}){return(await A.PublicKey.findProgramAddress([t.toBuffer(),Vi.toBuffer(),e.toBuffer()],Xi))[0]}}),er={exports:{}};!function(e,t){var n="undefined"!=typeof self?self:si,i=function(){function e(){this.fetch=!1,this.DOMException=n.DOMException}return e.prototype=n,new e}();!function(e){!function(t){var n="URLSearchParams"in e,i="Symbol"in e&&"iterator"in Symbol,r="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),o="FormData"in e,A="ArrayBuffer"in e;if(A)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],a=ArrayBuffer.isView||function(e){return e&&s.indexOf(Object.prototype.toString.call(e))>-1};function c(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function u(e){return"string"!=typeof e&&(e=String(e)),e}function l(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return i&&(t[Symbol.iterator]=function(){return t}),t}function g(e){this.map={},e instanceof g?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function d(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function h(e){return new Promise((function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}}))}function p(e){var t=new FileReader,n=h(t);return t.readAsArrayBuffer(e),n}function f(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function m(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:r&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:o&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:n&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():A&&r&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=f(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):A&&(ArrayBuffer.prototype.isPrototypeOf(e)||a(e))?this._bodyArrayBuffer=f(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},r&&(this.blob=function(){var e=d(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?d(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(p)}),this.text=function(){var e=d(this);if(e)return e;if(this._bodyBlob)return function(e){var t=new FileReader,n=h(t);return t.readAsText(e),n}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),i=0;i-1?i:n),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function B(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var n=e.split("="),i=n.shift().replace(/\+/g," "),r=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(i),decodeURIComponent(r))}})),t}function C(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new g(t.headers),this.url=t.url||"",this._initBody(e)}y.prototype.clone=function(){return new y(this,{body:this._bodyInit})},m.call(y.prototype),m.call(C.prototype),C.prototype.clone=function(){return new C(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new g(this.headers),url:this.url})},C.error=function(){var e=new C(null,{status:0,statusText:""});return e.type="error",e};var w=[301,302,303,307,308];C.redirect=function(e,t){if(-1===w.indexOf(t))throw new RangeError("Invalid status code");return new C(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var n=Error(e);this.stack=n.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function E(e,n){return new Promise((function(i,o){var A=new y(e,n);if(A.signal&&A.signal.aborted)return o(new t.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function a(){s.abort()}s.onload=function(){var e,t,n={status:s.status,statusText:s.statusText,headers:(e=s.getAllResponseHeaders()||"",t=new g,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var n=e.split(":"),i=n.shift().trim();if(i){var r=n.join(":").trim();t.append(i,r)}})),t)};n.url="responseURL"in s?s.responseURL:n.headers.get("X-Request-URL");var r="response"in s?s.response:s.responseText;i(new C(r,n))},s.onerror=function(){o(new TypeError("Network request failed"))},s.ontimeout=function(){o(new TypeError("Network request failed"))},s.onabort=function(){o(new t.DOMException("Aborted","AbortError"))},s.open(A.method,A.url,!0),"include"===A.credentials?s.withCredentials=!0:"omit"===A.credentials&&(s.withCredentials=!1),"responseType"in s&&r&&(s.responseType="blob"),A.headers.forEach((function(e,t){s.setRequestHeader(t,e)})),A.signal&&(A.signal.addEventListener("abort",a),s.onreadystatechange=function(){4===s.readyState&&A.signal.removeEventListener("abort",a)}),s.send(void 0===A._bodyInit?null:A._bodyInit)}))}E.polyfill=!0,e.fetch||(e.fetch=E,e.Headers=g,e.Request=y,e.Response=C),t.Headers=g,t.Request=y,t.Response=C,t.fetch=E,Object.defineProperty(t,"__esModule",{value:!0})}({})}(i),i.fetch.ponyfill=!0,delete i.fetch.polyfill;var r=i;(t=r.fetch).default=r.fetch,t.fetch=r.fetch,t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response,e.exports=t}(er,er.exports);var tr=function(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}(er.exports);async function nr(e,t){const n=await e.getAccountInfo(t);if(null===n)throw new Error("program account not found");const{program:i}=rr(n.data),r=await e.getAccountInfo(i.programdataAddress);if(null===r)throw new Error("program data account not found");const{programData:o}=rr(r.data);return o}const ir=St.rustEnum([St.struct([],"uninitialized"),St.struct([St.option(St.publicKey(),"authorityAddress")],"buffer"),St.struct([St.publicKey("programdataAddress")],"program"),St.struct([St.u64("slot"),St.option(St.publicKey(),"upgradeAuthorityAddress")],"programData")],void 0,St.u32());function rr(e){return ir.decode(e)}var or=Object.freeze({__proto__:null,verifiedBuild:async function(e,t,n=5){const i=`https://anchor.projectserum.com/api/v0/program/${t.toString()}/latest?limit=${n}`,[r,o]=await Promise.all([nr(e,t),tr(i)]),A=(await o.json()).filter((e=>!e.aborted&&"Built"===e.state&&"Verified"===e.verified));if(0===A.length)return null;const s=A[0];return r.slot.toNumber()!==s.verified_slot?null:s},fetchData:nr,decodeUpgradeableLoaderState:rr}),Ar=Object.freeze({__proto__:null,sha256:ji,rpc:Qn,publicKey:Hi,bytes:jt,token:$i,features:Fn,registry:or});const sr=St.struct([St.publicKey("authority"),St.vecU8("data")]);function ar(e,t){var n,i;let r={};const o=e.args?e.args.length:0;if(t.length>o){if(t.length!==o+1)throw new Error(`provided too many arguments ${t} to instruction ${null==e?void 0:e.name} expecting: ${null!==(i=null===(n=e.args)||void 0===n?void 0:n.map((e=>e.name)))&&void 0!==i?i:[]}`);r=t.pop()}return[t,r]}class cr{static build(e,t,n){if("_inner"===e.name)throw new Rn("the _inner name is reserved");const i=(...r)=>{const[o,s]=ar(e,[...r]);qt(e.accounts,s.accounts);const a=i.accounts(s.accounts);return void 0!==s.remainingAccounts&&a.push(...s.remainingAccounts),On("debug-logs")&&Ot.log("Outgoing account metas:",a),new A.TransactionInstruction({keys:a,programId:n,data:t(e.name,Jt(e,...o))})};return i.accounts=t=>cr.accountsArray(t,e.accounts,e.name),i}static accountsArray(e,t,n){return e?t.map((t=>{if(void 0!==("accounts"in t?t.accounts:void 0)){const i=e[t.name];return cr.accountsArray(i,t.accounts,n).flat()}{const i=t;let r;try{r=Zt(e[t.name])}catch(e){throw new Error(`Wrong input type for account "${t.name}" in the instruction accounts object${void 0!==n?' for instruction "'+n+'"':""}. Expected PublicKey or string.`)}return{pubkey:r,isWritable:i.isMut,isSigner:i.isSigner}}})).flat():[]}}class ur{static build(e,t,n,i){return async(...r)=>{var o;const A=t(...r),[,s]=ar(e,[...r]);if(void 0===i.sendAndConfirm)throw new Error("This function requires 'Provider.sendAndConfirm' to be implemented.");try{return await i.sendAndConfirm(A,null!==(o=s.signers)&&void 0!==o?o:[],s.options)}catch(e){throw _n(e,n)}}}}class lr{static build(e,t){return(...n)=>{var i,r,o;const[,s]=ar(e,[...n]),a=new A.Transaction;if(s.preInstructions&&s.instructions)throw new Error("instructions is deprecated, use preInstructions");return null===(i=s.preInstructions)||void 0===i||i.forEach((e=>a.add(e))),null===(r=s.instructions)||void 0===r||r.forEach((e=>a.add(e))),a.add(t(...n)),null===(o=s.postInstructions)||void 0===o||o.forEach((e=>a.add(e))),a}}}class gr{constructor(e,t,n=Dn(),i=new Ai(e)){this.provider=n,this.coder=i,this._idl=e,this._programId=t,this._address=dr(t),this._sub=null;const[r,o,s]=(()=>{var r;let o={},s={},a={};return null===(r=e.state)||void 0===r||r.methods.forEach((r=>{const c=cr.build(r,((e,t)=>i.instruction.encodeState(e,t)),t);c.accounts=e=>{const i=function(e,t,n,i){if("new"===n.name){const[n]=qi([],e);if(void 0===t.wallet)throw new Error("This function requires the Provider interface implementor to have a 'wallet' field.");return[{pubkey:t.wallet.publicKey,isWritable:!1,isSigner:!0},{pubkey:dr(e),isWritable:!0,isSigner:!1},{pubkey:n,isWritable:!1,isSigner:!1},{pubkey:A.SystemProgram.programId,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!1,isSigner:!1}]}return qt(n.accounts,i),[{pubkey:dr(e),isWritable:!0,isSigner:!1}]}(t,n,r,e);return i.concat(cr.accountsArray(e,r.accounts,r.name))};const u=lr.build(r,c),l=ur.build(r,u,Wt(e),n),g=kt()(r.name);o[g]=c,s[g]=u,a[g]=l})),[o,s,a]})();this.instruction=r,this.transaction=o,this.rpc=s}get programId(){return this._programId}async fetch(){const e=this.address(),t=await this.provider.connection.getAccountInfo(e);if(null===t)throw new Error(`Account does not exist ${e.toString()}`);const n=this._idl.state;if(!n)throw new Error("State is not specified in IDL.");if((await oi(n.struct.name)).compare(t.data.slice(0,8)))throw new Error("Invalid account discriminator");return this.coder.state.decode(t.data)}address(){return this._address}subscribe(e){if(null!==this._sub)return this._sub.ee;const t=new(Nt()),n=this.provider.connection.onAccountChange(this.address(),(e=>{const n=this.coder.state.decode(e.data);t.emit("change",n)}),e);return this._sub={ee:t,listener:n},t}unsubscribe(){null!==this._sub&&this.provider.connection.removeAccountChangeListener(this._sub.listener).then((async()=>{this._sub=null})).catch(Ot.error)}}function dr(e){let[t]=qi([],e);return Wi(t,"unversioned",e)}class hr{constructor(e,t,n,i,r){this._idlAccount=t,this._programId=n,this._provider=null!=i?i:Dn(),this._coder=null!=r?r:new Ai(e),this._size=this._coder.accounts.size(t)}get size(){return this._size}get programId(){return this._programId}get provider(){return this._provider}get coder(){return this._coder}async fetchNullable(e,t){const n=await this.getAccountInfo(e,t);return null===n?null:this._coder.accounts.decode(this._idlAccount.name,n.data)}async fetch(e,t){const n=await this.fetchNullable(e,t);if(null===n)throw new Error(`Account does not exist ${e.toString()}`);return n}async fetchMultiple(e,t){return(await fn(this._provider.connection,e.map((e=>Zt(e))),t)).map((e=>null==e?null:this._coder.accounts.decode(this._idlAccount.name,null==e?void 0:e.account.data)))}async all(e){return(await this._provider.connection.getProgramAccounts(this._programId,{commitment:this._provider.connection.commitment,filters:[{memcmp:this.coder.accounts.memcmp(this._idlAccount.name,e instanceof Ft?e:void 0)},...Array.isArray(e)?e:[]]})).map((({pubkey:e,account:t})=>({publicKey:e,account:this._coder.accounts.decode(this._idlAccount.name,t.data)})))}subscribe(e,t){const n=pr.get(e.toString());if(n)return n.ee;const i=new(Nt());e=Zt(e);const r=this._provider.connection.onAccountChange(e,(e=>{const t=this._coder.accounts.decode(this._idlAccount.name,e.data);i.emit("change",t)}),t);return pr.set(e.toString(),{ee:i,listener:r}),i}async unsubscribe(e){let t=pr.get(e.toString());t?pr&&await this._provider.connection.removeAccountChangeListener(t.listener).then((()=>{pr.delete(e.toString())})).catch(Ot.error):Ot.warn("Address is not subscribed")}async createInstruction(e,t){const n=this.size;if(void 0===this._provider.wallet)throw new Error("This function requires the Provider interface implementor to have a 'wallet' field.");return A.SystemProgram.createAccount({fromPubkey:this._provider.wallet.publicKey,newAccountPubkey:e.publicKey,space:null!=t?t:n,lamports:await this._provider.connection.getMinimumBalanceForRentExemption(null!=t?t:n),programId:this._programId})}async associated(...e){const t=await this.associatedAddress(...e);return await this.fetch(t)}async associatedAddress(...e){return await zi(this._programId,...e)}async getAccountInfo(e,t){return await this._provider.connection.getAccountInfo(Zt(e),t)}}const pr=new Map,fr="Program log: ".length,mr="Program data: ".length;class Ir{constructor(e,t,n){this._programId=e,this._provider=t,this._eventParser=new yr(e,n),this._eventCallbacks=new Map,this._eventListeners=new Map,this._listenerIdCount=0}addEventListener(e,t){var n;let i=this._listenerIdCount;return this._listenerIdCount+=1,e in this._eventCallbacks||this._eventListeners.set(e,[]),this._eventListeners.set(e,(null!==(n=this._eventListeners.get(e))&&void 0!==n?n:[]).concat(i)),this._eventCallbacks.set(i,[e,t]),void 0!==this._onLogsSubscriptionId||(this._onLogsSubscriptionId=this._provider.connection.onLogs(this._programId,((e,t)=>{e.err||this._eventParser.parseLogs(e.logs,(e=>{const n=this._eventListeners.get(e.name);n&&n.forEach((n=>{const i=this._eventCallbacks.get(n);if(i){const[,n]=i;n(e.data,t.slot)}}))}))}))),i}async removeEventListener(e){const t=this._eventCallbacks.get(e);if(!t)throw new Error(`Event listener ${e} doesn't exist!`);const[n]=t;let i=this._eventListeners.get(n);if(!i)throw new Error(`Event listeners don't exist for ${n}!`);this._eventCallbacks.delete(e),i=i.filter((t=>t!==e)),0===i.length&&this._eventListeners.delete(n),0==this._eventCallbacks.size&&(Tt.ok(0===this._eventListeners.size),void 0!==this._onLogsSubscriptionId&&(await this._provider.connection.removeOnLogsListener(this._onLogsSubscriptionId),this._onLogsSubscriptionId=void 0))}}class yr{constructor(e,t){this.coder=t,this.programId=e}parseLogs(e,t){const n=new Cr(e),i=new Br;let r=n.next();for(;null!==r;){let[e,o,A]=this.handleLog(i,r);e&&t(e),o&&i.push(o),A&&i.pop(),r=n.next()}}handleLog(e,t){return e.stack.length>0&&e.program()===this.programId.toString()?this.handleProgramLog(t):[null,...this.handleSystemLog(t)]}handleProgramLog(e){if(e.startsWith("Program log: ")||e.startsWith("Program data: ")){const t=e.startsWith("Program log: ")?e.slice(fr):e.slice(mr);return[this.coder.events.decode(t),null,!1]}return[null,...this.handleSystemLog(e)]}handleSystemLog(e){const t=e.split(":")[0];return null!==t.match(/^Program (.*) success/g)?[null,!0]:t.startsWith(`Program ${this.programId.toString()} invoke`)?[this.programId.toString(),!1]:t.includes("invoke")?["cpi",!1]:[null,!1]}}class Br{constructor(){this.stack=[]}program(){return Tt.ok(this.stack.length>0),this.stack[this.stack.length-1]}push(e){this.stack.push(e)}pop(){Tt.ok(this.stack.length>0),this.stack.pop()}}class Cr{constructor(e){this.logs=e}next(){if(0===this.logs.length)return null;let e=this.logs[0];return this.logs=this.logs.slice(1),e}}const wr=new A.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");function Er(){return new Yi(Qr)}const Qr={version:"0.1.0",name:"spl_token",instructions:[{name:"initializeMint",accounts:[{name:"mint",isMut:!0,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"decimals",type:"u8"},{name:"mintAuthority",type:"publicKey"},{name:"freezeAuthority",type:{coption:"publicKey"}}]},{name:"initializeAccount",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]},{name:"initializeMultisig",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"m",type:"u8"}]},{name:"transfer",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"destination",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"}]},{name:"approve",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"delegate",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"}]},{name:"revoke",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[]},{name:"setAuthority",accounts:[{name:"mint",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"authorityType",type:"u8"},{name:"newAuthority",type:{coption:"publicKey"}}]},{name:"mintTo",accounts:[{name:"mint",isMut:!0,isSigner:!1},{name:"to",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"}]},{name:"burn",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"}]},{name:"closeAccount",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"destination",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1}],args:[]},{name:"freezeAccount",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[]},{name:"thawAccount",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[]},{name:"transferChecked",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"destination",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]},{name:"approveChecked",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"delegate",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]},{name:"mintToChecked",accounts:[{name:"mint",isMut:!0,isSigner:!1},{name:"to",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]},{name:"burnChecked",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]},{name:"initializeAccount2",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"authority",type:"publicKey"}]},{name:"syncNative",accounts:[{name:"account",isMut:!0,isSigner:!1}],args:[]},{name:"initializeAccount3",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1}],args:[{name:"authority",type:"publicKey"}]},{name:"initializeMultisig2",accounts:[{name:"account",isMut:!0,isSigner:!1}],args:[{name:"m",type:"u8"}]},{name:"initializeMint2",accounts:[{name:"mint",isMut:!0,isSigner:!1}],args:[{name:"decimals",type:"u8"},{name:"mintAuthority",type:"publicKey"},{name:"freezeAuthority",type:{coption:"publicKey"}}]}],accounts:[{name:"mint",type:{kind:"struct",fields:[{name:"mintAuthority",type:{coption:"publicKey"}},{name:"supply",type:"u64"},{name:"decimals",type:"u8"},{name:"isInitialized",type:"bool"},{name:"freezeAuthority",type:{coption:"publicKey"}}]}},{name:"token",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"authority",type:"publicKey"},{name:"amount",type:"u64"},{name:"delegate",type:{coption:"publicKey"}},{name:"state",type:"u8"},{name:"isNative",type:{coption:"u64"}},{name:"delegatedAmount",type:"u64"},{name:"closeAuthority",type:{coption:"publicKey"}}]}}]};class br{constructor(e,t,n,i,r,o){this._args=e,this._accounts=t,this._provider=n,this._programId=i,this._idlIx=r,this._accountStore=new kr(n,o)}async resolve(){for(let e=0;e0&&!this._accounts[n])await this.autoPopulatePda(t);else if(!t.isSigner||this._accounts[n])Reflect.has(br.CONST_ACCOUNTS,n)&&!this._accounts[n]&&(this._accounts[n]=br.CONST_ACCOUNTS[n]);else{if(void 0===this._provider.wallet)throw new Error("This function requires the Provider interface implementor to have a 'wallet' field.");this._accounts[n]=this._provider.wallet.publicKey}}}async autoPopulatePda(e){if(!e.pda||!e.pda.seeds)throw new Error("Must have seeds");const t=await Promise.all(e.pda.seeds.map((e=>this.toBuffer(e)))),n=await this.parseProgramId(e),[i]=await A.PublicKey.findProgramAddress(t,n);this._accounts[kt()(e.name)]=i}async parseProgramId(e){var t;if(!(null===(t=e.pda)||void 0===t?void 0:t.programId))return this._programId;switch(e.pda.programId.kind){case"const":return new A.PublicKey(this.toBufferConst(e.pda.programId.value));case"arg":return this.argValue(e.pda.programId);case"account":return await this.accountValue(e.pda.programId);default:throw new Error(`Unexpected program seed kind: ${e.pda.programId.kind}`)}}async toBuffer(e){switch(e.kind){case"const":return this.toBufferConst(e);case"arg":return await this.toBufferArg(e);case"account":return await this.toBufferAccount(e);default:throw new Error(`Unexpected seed kind: ${e.kind}`)}}toBufferConst(e){return this.toBufferValue(e.type,e.value)}async toBufferArg(e){const t=this.argValue(e);return this.toBufferValue(e.type,t)}argValue(e){const t=kt()(e.path.split(".")[0]),n=this._idlIx.args.findIndex((e=>e.name===t));if(-1===n)throw new Error(`Unable to find argument for seed: ${t}`);return this._args[n]}async toBufferAccount(e){const t=await this.accountValue(e);return this.toBufferValue(e.type,t)}async accountValue(e){const t=e.path.split("."),n=t[0],i=this._accounts[kt()(n)];if(1===t.length)return i;const r=await this._accountStore.fetchAccount(e.account,i);return this.parseAccountValue(r,t.slice(1))}parseAccountValue(e,t){let n;for(;t.length>0;)n=e[kt()(t[0])],t=t.slice(1);return n}toBufferValue(e,t){switch(e){case"u8":return Ft.from([t]);case"u16":let n=Ft.alloc(2);return n.writeUInt16LE(t),n;case"u32":let i=Ft.alloc(4);return i.writeUInt32LE(t),i;case"u64":let r=Ft.alloc(8);return r.writeBigUInt64LE(BigInt(t)),r;case"string":return Ft.from(xt(t));case"publicKey":return t.toBuffer();default:if(e.array)return Ft.from(t);throw new Error(`Unexpected seed type: ${e}`)}}}br.CONST_ACCOUNTS={systemProgram:A.SystemProgram.programId,tokenProgram:Vi,associatedTokenProgram:Xi,rent:A.SYSVAR_RENT_PUBKEY};class kr{constructor(e,t){this._provider=e,this._accounts=t,this._cache=new Map}async fetchAccount(e,t){const n=t.toString();if(!this._cache.has(n))if("TokenAccount"===e){const e=await this._provider.connection.getAccountInfo(t);if(null===e)throw new Error(`invalid account info for ${n}`);const i=Er().accounts.decode("token",e.data);this._cache.set(n,i)}else{const i=this._accounts[kt()(e)].fetch(t);this._cache.set(n,i)}return this._cache.get(n)}}class vr{static build(e,t,n,i,r,o,A,s,a){return(...c)=>new Sr(c,i,r,o,A,s,e,t,n,a)}}class Sr{constructor(e,t,n,i,r,o,A,s,a,c){this._args=e,this._ixFn=t,this._txFn=n,this._rpcFn=i,this._simulateFn=r,this._viewFn=o,this._accounts={},this._remainingAccounts=[],this._signers=[],this._preInstructions=[],this._postInstructions=[],this._accountsResolver=new br(e,this._accounts,A,s,a,c)}async pubkeys(){return await this._accountsResolver.resolve(),this._accounts}accounts(e){return Object.assign(this._accounts,e),this}signers(e){return this._signers=this._signers.concat(e),this}remainingAccounts(e){return this._remainingAccounts=this._remainingAccounts.concat(e),this}preInstructions(e){return this._preInstructions=this._preInstructions.concat(e),this}postInstructions(e){return this._postInstructions=this._postInstructions.concat(e),this}async rpc(e){return await this._accountsResolver.resolve(),this._rpcFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:e})}async view(e){if(await this._accountsResolver.resolve(),!this._viewFn)throw new Error("Method does not support views");return this._viewFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:e})}async simulate(e){return await this._accountsResolver.resolve(),this._simulateFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:e})}async instruction(){return await this._accountsResolver.resolve(),this._ixFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions})}async transaction(){return await this._accountsResolver.resolve(),this._txFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions})}}class Mr{constructor(e,t,n,i){t=Zt(t),n||(n=Dn()),this._idl=e,this._provider=n,this._programId=t,this._coder=null!=i?i:new Ai(e),this._events=new Ir(this._programId,n,this._coder);const[r,o,A,s,a,c,u,l]=class{static build(e,t,n,i){const r={},o={},A={},s={},a={},c={},u=Wt(e),l=e.accounts?class{static build(e,t,n,i){var r;const o={};return null===(r=e.accounts)||void 0===r||r.forEach((r=>{const A=kt()(r.name);o[A]=new hr(e,r,n,i,t)})),o}}.build(e,t,n,i):{},g=class{static build(e,t,n,i){if(void 0!==e.state)return new gr(e,n,i,t)}}.build(e,t,n,i);return e.instructions.forEach((g=>{const d=cr.build(g,((e,n)=>t.instruction.encode(e,n)),n),h=lr.build(g,d),p=ur.build(g,h,u,i),f=class{static build(e,t,n,i,r,o,A){return async(...s)=>{var a;const c=t(...s),[,u]=ar(e,[...s]);let l;if(void 0===i.simulate)throw new Error("This function requires 'Provider.simulate' to be implemented.");try{l=await i.simulate(c,u.signers,null===(a=u.options)||void 0===a?void 0:a.commitment)}catch(e){throw _n(e,n)}if(void 0===l)throw new Error("Unable to simulate transaction");const g=l.logs;if(!g)throw new Error("Simulated logs not found");const d=[];return A.events&&new yr(o,r).parseLogs(g,(e=>{d.push(e)})),{events:d,raw:g}}}}.build(g,h,u,i,t,n,e),m=class{static build(e,t,n,i){const r=t.accounts.find((e=>e.isMut)),o=!!t.returns;if(!r&&o)return async(...r)=>{var o,A;let s=await n(...r);const a=`Program return: ${e} `;let c=s.raw.find((e=>e.startsWith(a)));if(!c)throw new Error("View expected return log");let u=Kt(c.slice(a.length)),l=t.returns;if(!l)throw new Error("View expected return type");return Zn.fieldLayout({type:l},Array.from([...null!==(o=i.accounts)&&void 0!==o?o:[],...null!==(A=i.types)&&void 0!==A?A:[]])).decode(u)}}}.build(n,g,f,e),I=vr.build(i,n,g,d,h,p,f,m,l),y=kt()(g.name);o[y]=d,A[y]=h,r[y]=p,s[y]=f,a[y]=I,m&&(c[y]=m)})),[r,o,A,l,s,a,g,c]}}.build(e,this._coder,t,n);this.rpc=r,this.instruction=o,this.transaction=A,this.account=s,this.simulate=a,this.methods=c,this.state=u,this.views=l}get programId(){return this._programId}get idl(){return this._idl}get coder(){return this._coder}get provider(){return this._provider}static async at(e,t){const n=Zt(e),i=await Mr.fetchIdl(n,t);if(!i)throw new Error(`IDL not found for program: ${e.toString()}`);return new Mr(i,n,t)}static async fetchIdl(e,t){t=null!=t?t:Dn();const n=Zt(e),i=await async function(e){const t=(await A.PublicKey.findProgramAddress([],e))[0];return await A.PublicKey.createWithSeed(t,"anchor:idl",e)}(n),r=await t.connection.getAccountInfo(i);if(!r)return null;let o=(s=r.data.slice(8),sr.decode(s));var s;const a=(0,Mt.rr)(o.data);return JSON.parse(Gt(a))}addEventListener(e,t){return this._events.addEventListener(e,t)}async removeEventListener(e){return await this._events.removeEventListener(e)}}class Dr{static token(e){return function(e){return new Mr(Qr,wr,e,Er())}(e)}}var Nr=i(42781);function Tr(e){if(!Number.isSafeInteger(e)||e<0)throw new Error(`Wrong positive integer: ${e}`)}function Pr(e,...t){if(!(e instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(t.length>0&&!t.includes(e.length))throw new TypeError(`Expected Uint8Array of length ${t}, not of length=${e.length}`)}const Or={number:Tr,bool:function(e){if("boolean"!=typeof e)throw new Error(`Expected boolean, not ${e}`)},bytes:Pr,hash:function(e){if("function"!=typeof e||"function"!=typeof e.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");Tr(e.outputLen),Tr(e.blockLen)},exists:function(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")},output:function(e,t){Pr(e);const n=t.outputLen;if(e.lengthnew DataView(e.buffer,e.byteOffset,e.byteLength)),Gr=(e,t)=>e<<32-t|e>>>t;if(68!==new Uint8Array(new Uint32Array([287454020]).buffer)[0])throw new Error("Non little-endian hardware is not supported");function xr(e){if("string"==typeof e&&(e=function(e){if("string"!=typeof e)throw new TypeError("utf8ToBytes expected string, got "+typeof e);return(new TextEncoder).encode(e)}(e)),!(e instanceof Uint8Array))throw new TypeError(`Expected input type is Uint8Array (got ${typeof e})`);return e}Array.from({length:256},((e,t)=>t.toString(16).padStart(2,"0")));class Ur{clone(){return this._cloneInto()}}class _r extends Ur{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=Rr(this.buffer)}update(e){Fr.exists(this);const{view:t,buffer:n,blockLen:i}=this,r=(e=xr(e)).length;for(let o=0;oi-o&&(this.process(n,0),o=0);for(let e=o;e>r&o),s=Number(n&o),a=i?4:0,c=i?0:4;e.setUint32(t+a,A,i),e.setUint32(t+c,s,i)}(n,i-8,BigInt(8*this.length),r),this.process(n,0);const A=Rr(e);this.get().forEach(((e,t)=>A.setUint32(4*t,e,r)))}digest(){const{buffer:e,outputLen:t}=this;this.digestInto(e);const n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:t,buffer:n,length:i,finished:r,destroyed:o,pos:A}=this;return e.length=i,e.pos=A,e.finished=r,e.destroyed=o,i%t&&e.buffer.set(n),e}}const Lr=(e,t,n)=>e&t^e&n^t&n,Kr=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),Yr=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),jr=new Uint32Array(64);class Wr extends _r{constructor(){super(64,32,8,!1),this.A=0|Yr[0],this.B=0|Yr[1],this.C=0|Yr[2],this.D=0|Yr[3],this.E=0|Yr[4],this.F=0|Yr[5],this.G=0|Yr[6],this.H=0|Yr[7]}get(){const{A:e,B:t,C:n,D:i,E:r,F:o,G:A,H:s}=this;return[e,t,n,i,r,o,A,s]}set(e,t,n,i,r,o,A,s){this.A=0|e,this.B=0|t,this.C=0|n,this.D=0|i,this.E=0|r,this.F=0|o,this.G=0|A,this.H=0|s}process(e,t){for(let n=0;n<16;n++,t+=4)jr[n]=e.getUint32(t,!1);for(let e=16;e<64;e++){const t=jr[e-15],n=jr[e-2],i=Gr(t,7)^Gr(t,18)^t>>>3,r=Gr(n,17)^Gr(n,19)^n>>>10;jr[e]=r+jr[e-7]+i+jr[e-16]|0}let{A:n,B:i,C:r,D:o,E:A,F:s,G:a,H:c}=this;for(let e=0;e<64;e++){const t=c+(Gr(A,6)^Gr(A,11)^Gr(A,25))+((u=A)&s^~u&a)+Kr[e]+jr[e]|0,l=(Gr(n,2)^Gr(n,13)^Gr(n,22))+Lr(n,i,r)|0;c=a,a=s,s=A,A=o+t|0,o=r,r=i,i=n,n=t+l|0}var u;n=n+this.A|0,i=i+this.B|0,r=r+this.C|0,o=o+this.D|0,A=A+this.E|0,s=s+this.F|0,a=a+this.G|0,c=c+this.H|0,this.set(n,i,r,o,A,s,a,c)}roundClean(){jr.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const Jr=function(e){const t=t=>e().update(xr(t)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}((()=>new Wr));var qr,Zr,zr=i(6716),Hr=9e15,Vr=1e9,Xr="0123456789abcdef",$r="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",eo="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",to={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-Hr,maxE:Hr,crypto:!1},no=!0,io="[DecimalError] ",ro=io+"Invalid argument: ",oo=io+"Precision limit exceeded",Ao=io+"crypto unavailable",so="[object Decimal]",ao=Math.floor,co=Math.pow,uo=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,lo=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,go=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,ho=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,po=1e7,fo=$r.length-1,mo=eo.length-1,Io={toStringTag:so};function yo(e){var t,n,i,r=e.length-1,o="",A=e[0];if(r>0){for(o+=A,t=1;tn)throw Error(ro+e)}function Co(e,t,n,i){var r,o,A,s;for(o=e[0];o>=10;o/=10)--t;return--t<0?(t+=7,r=0):(r=Math.ceil((t+1)/7),t%=7),o=co(10,7-t),s=e[r]%o|0,null==i?t<3?(0==t?s=s/100|0:1==t&&(s=s/10|0),A=n<4&&99999==s||n>3&&49999==s||5e4==s||0==s):A=(n<4&&s+1==o||n>3&&s+1==o/2)&&(e[r+1]/o/100|0)==co(10,t-2)-1||(s==o/2||0==s)&&0==(e[r+1]/o/100|0):t<4?(0==t?s=s/1e3|0:1==t?s=s/100|0:2==t&&(s=s/10|0),A=(i||n<4)&&9999==s||!i&&n>3&&4999==s):A=((i||n<4)&&s+1==o||!i&&n>3&&s+1==o/2)&&(e[r+1]/o/1e3|0)==co(10,t-3)-1,A}function wo(e,t,n){for(var i,r,o=[0],A=0,s=e.length;An-1&&(void 0===o[i+1]&&(o[i+1]=0),o[i+1]+=o[i]/n|0,o[i]%=n)}return o.reverse()}Io.absoluteValue=Io.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),Qo(e)},Io.ceil=function(){return Qo(new this.constructor(this),this.e+1,2)},Io.clampedTo=Io.clamp=function(e,t){var n=this,i=n.constructor;if(e=new i(e),t=new i(t),!e.s||!t.s)return new i(NaN);if(e.gt(t))throw Error(ro+t);return n.cmp(e)<0?e:n.cmp(t)>0?t:new i(n)},Io.comparedTo=Io.cmp=function(e){var t,n,i,r,o=this,A=o.d,s=(e=new o.constructor(e)).d,a=o.s,c=e.s;if(!A||!s)return a&&c?a!==c?a:A===s?0:!A^a<0?1:-1:NaN;if(!A[0]||!s[0])return A[0]?a:s[0]?-c:0;if(a!==c)return a;if(o.e!==e.e)return o.e>e.e^a<0?1:-1;for(t=0,n=(i=A.length)<(r=s.length)?i:r;ts[t]^a<0?1:-1;return i===r?0:i>r^a<0?1:-1},Io.cosine=Io.cos=function(){var e,t,n=this,i=n.constructor;return n.d?n.d[0]?(e=i.precision,t=i.rounding,i.precision=e+Math.max(n.e,n.sd())+7,i.rounding=1,n=function(e,t){var n,i,r;if(t.isZero())return t;(i=t.d.length)<32?r=(1/_o(4,n=Math.ceil(i/3))).toString():(n=16,r="2.3283064365386962890625e-10"),e.precision+=n,t=Uo(e,1,t.times(r),new e(1));for(var o=n;o--;){var A=t.times(t);t=A.times(A).minus(A).times(8).plus(1)}return e.precision-=n,t}(i,Lo(i,n)),i.precision=e,i.rounding=t,Qo(2==Zr||3==Zr?n.neg():n,e,t,!0)):new i(1):new i(NaN)},Io.cubeRoot=Io.cbrt=function(){var e,t,n,i,r,o,A,s,a,c,u=this,l=u.constructor;if(!u.isFinite()||u.isZero())return new l(u);for(no=!1,(o=u.s*co(u.s*u,1/3))&&Math.abs(o)!=1/0?i=new l(o.toString()):(n=yo(u.d),(o=((e=u.e)-n.length+1)%3)&&(n+=1==o||-2==o?"0":"00"),o=co(n,1/3),e=ao((e+1)/3)-(e%3==(e<0?-1:2)),(i=new l(n=o==1/0?"5e"+e:(n=o.toExponential()).slice(0,n.indexOf("e")+1)+e)).s=u.s),A=(e=l.precision)+3;;)if(c=(a=(s=i).times(s).times(s)).plus(u),i=Eo(c.plus(u).times(s),c.plus(a),A+2,1),yo(s.d).slice(0,A)===(n=yo(i.d)).slice(0,A)){if("9999"!=(n=n.slice(A-3,A+1))&&(r||"4999"!=n)){+n&&(+n.slice(1)||"5"!=n.charAt(0))||(Qo(i,e+1,1),t=!i.times(i).times(i).eq(u));break}if(!r&&(Qo(s,e+1,0),s.times(s).times(s).eq(u))){i=s;break}A+=4,r=1}return no=!0,Qo(i,e,l.rounding,t)},Io.decimalPlaces=Io.dp=function(){var e,t=this.d,n=NaN;if(t){if(n=7*((e=t.length-1)-ao(this.e/7)),e=t[e])for(;e%10==0;e/=10)n--;n<0&&(n=0)}return n},Io.dividedBy=Io.div=function(e){return Eo(this,new this.constructor(e))},Io.dividedToIntegerBy=Io.divToInt=function(e){var t=this.constructor;return Qo(Eo(this,new t(e),0,1,1),t.precision,t.rounding)},Io.equals=Io.eq=function(e){return 0===this.cmp(e)},Io.floor=function(){return Qo(new this.constructor(this),this.e+1,3)},Io.greaterThan=Io.gt=function(e){return this.cmp(e)>0},Io.greaterThanOrEqualTo=Io.gte=function(e){var t=this.cmp(e);return 1==t||0===t},Io.hyperbolicCosine=Io.cosh=function(){var e,t,n,i,r,o=this,A=o.constructor,s=new A(1);if(!o.isFinite())return new A(o.s?1/0:NaN);if(o.isZero())return s;n=A.precision,i=A.rounding,A.precision=n+Math.max(o.e,o.sd())+4,A.rounding=1,(r=o.d.length)<32?t=(1/_o(4,e=Math.ceil(r/3))).toString():(e=16,t="2.3283064365386962890625e-10"),o=Uo(A,1,o.times(t),new A(1),!0);for(var a,c=e,u=new A(8);c--;)a=o.times(o),o=s.minus(a.times(u.minus(a.times(u))));return Qo(o,A.precision=n,A.rounding=i,!0)},Io.hyperbolicSine=Io.sinh=function(){var e,t,n,i,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(t=o.precision,n=o.rounding,o.precision=t+Math.max(r.e,r.sd())+4,o.rounding=1,(i=r.d.length)<3)r=Uo(o,2,r,r,!0);else{e=(e=1.4*Math.sqrt(i))>16?16:0|e,r=Uo(o,2,r=r.times(1/_o(5,e)),r,!0);for(var A,s=new o(5),a=new o(16),c=new o(20);e--;)A=r.times(r),r=r.times(s.plus(A.times(a.times(A).plus(c))))}return o.precision=t,o.rounding=n,Qo(r,t,n,!0)},Io.hyperbolicTangent=Io.tanh=function(){var e,t,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+7,i.rounding=1,Eo(n.sinh(),n.cosh(),i.precision=e,i.rounding=t)):new i(n.s)},Io.inverseCosine=Io.acos=function(){var e,t=this,n=t.constructor,i=t.abs().cmp(1),r=n.precision,o=n.rounding;return-1!==i?0===i?t.isNeg()?So(n,r,o):new n(0):new n(NaN):t.isZero()?So(n,r+4,o).times(.5):(n.precision=r+6,n.rounding=1,t=t.asin(),e=So(n,r+4,o).times(.5),n.precision=r,n.rounding=o,e.minus(t))},Io.inverseHyperbolicCosine=Io.acosh=function(){var e,t,n=this,i=n.constructor;return n.lte(1)?new i(n.eq(1)?0:NaN):n.isFinite()?(e=i.precision,t=i.rounding,i.precision=e+Math.max(Math.abs(n.e),n.sd())+4,i.rounding=1,no=!1,n=n.times(n).minus(1).sqrt().plus(n),no=!0,i.precision=e,i.rounding=t,n.ln()):new i(n)},Io.inverseHyperbolicSine=Io.asinh=function(){var e,t,n=this,i=n.constructor;return!n.isFinite()||n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+2*Math.max(Math.abs(n.e),n.sd())+6,i.rounding=1,no=!1,n=n.times(n).plus(1).sqrt().plus(n),no=!0,i.precision=e,i.rounding=t,n.ln())},Io.inverseHyperbolicTangent=Io.atanh=function(){var e,t,n,i,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(e=o.precision,t=o.rounding,i=r.sd(),Math.max(i,e)<2*-r.e-1?Qo(new o(r),e,t,!0):(o.precision=n=i-r.e,r=Eo(r.plus(1),new o(1).minus(r),n+e,1),o.precision=e+4,o.rounding=1,r=r.ln(),o.precision=e,o.rounding=t,r.times(.5))):new o(NaN)},Io.inverseSine=Io.asin=function(){var e,t,n,i,r=this,o=r.constructor;return r.isZero()?new o(r):(t=r.abs().cmp(1),n=o.precision,i=o.rounding,-1!==t?0===t?((e=So(o,n+4,i).times(.5)).s=r.s,e):new o(NaN):(o.precision=n+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=n,o.rounding=i,r.times(2)))},Io.inverseTangent=Io.atan=function(){var e,t,n,i,r,o,A,s,a,c=this,u=c.constructor,l=u.precision,g=u.rounding;if(c.isFinite()){if(c.isZero())return new u(c);if(c.abs().eq(1)&&l+4<=mo)return(A=So(u,l+4,g).times(.25)).s=c.s,A}else{if(!c.s)return new u(NaN);if(l+4<=mo)return(A=So(u,l+4,g).times(.5)).s=c.s,A}for(u.precision=s=l+10,u.rounding=1,e=n=Math.min(28,s/7+2|0);e;--e)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(no=!1,t=Math.ceil(s/7),i=1,a=c.times(c),A=new u(c),r=c;-1!==e;)if(r=r.times(a),o=A.minus(r.div(i+=2)),r=r.times(a),void 0!==(A=o.plus(r.div(i+=2))).d[t])for(e=t;A.d[e]===o.d[e]&&e--;);return n&&(A=A.times(2<this.d.length-2},Io.isNaN=function(){return!this.s},Io.isNegative=Io.isNeg=function(){return this.s<0},Io.isPositive=Io.isPos=function(){return this.s>0},Io.isZero=function(){return!!this.d&&0===this.d[0]},Io.lessThan=Io.lt=function(e){return this.cmp(e)<0},Io.lessThanOrEqualTo=Io.lte=function(e){return this.cmp(e)<1},Io.logarithm=Io.log=function(e){var t,n,i,r,o,A,s,a,c=this,u=c.constructor,l=u.precision,g=u.rounding;if(null==e)e=new u(10),t=!0;else{if(n=(e=new u(e)).d,e.s<0||!n||!n[0]||e.eq(1))return new u(NaN);t=e.eq(10)}if(n=c.d,c.s<0||!n||!n[0]||c.eq(1))return new u(n&&!n[0]?-1/0:1!=c.s?NaN:n?0:1/0);if(t)if(n.length>1)o=!0;else{for(r=n[0];r%10==0;)r/=10;o=1!==r}if(no=!1,A=Fo(c,s=l+5),i=t?vo(u,s+10):Fo(e,s),Co((a=Eo(A,i,s,1)).d,r=l,g))do{if(A=Fo(c,s+=10),i=t?vo(u,s+10):Fo(e,s),a=Eo(A,i,s,1),!o){+yo(a.d).slice(r+1,r+15)+1==1e14&&(a=Qo(a,l+1,0));break}}while(Co(a.d,r+=10,g));return no=!0,Qo(a,l,g)},Io.minus=Io.sub=function(e){var t,n,i,r,o,A,s,a,c,u,l,g,d=this,h=d.constructor;if(e=new h(e),!d.d||!e.d)return d.s&&e.s?d.d?e.s=-e.s:e=new h(e.d||d.s!==e.s?d:NaN):e=new h(NaN),e;if(d.s!=e.s)return e.s=-e.s,d.plus(e);if(c=d.d,g=e.d,s=h.precision,a=h.rounding,!c[0]||!g[0]){if(g[0])e.s=-e.s;else{if(!c[0])return new h(3===a?-0:0);e=new h(d)}return no?Qo(e,s,a):e}if(n=ao(e.e/7),u=ao(d.e/7),c=c.slice(),o=u-n){for((l=o<0)?(t=c,o=-o,A=g.length):(t=g,n=u,A=c.length),o>(i=Math.max(Math.ceil(s/7),A)+2)&&(o=i,t.length=1),t.reverse(),i=o;i--;)t.push(0);t.reverse()}else{for((l=(i=c.length)<(A=g.length))&&(A=i),i=0;i0;--i)c[A++]=0;for(i=g.length;i>o;){if(c[--i](A=(o=Math.ceil(s/7))>A?o+1:A+1)&&(r=A,n.length=1),n.reverse();r--;)n.push(0);n.reverse()}for((A=c.length)-(r=u.length)<0&&(r=A,n=u,u=c,c=n),t=0;r;)t=(c[--r]=c[r]+u[r]+t)/po|0,c[r]%=po;for(t&&(c.unshift(t),++i),A=c.length;0==c[--A];)c.pop();return e.d=c,e.e=ko(c,i),no?Qo(e,s,a):e},Io.precision=Io.sd=function(e){var t,n=this;if(void 0!==e&&e!==!!e&&1!==e&&0!==e)throw Error(ro+e);return n.d?(t=Mo(n.d),e&&n.e+1>t&&(t=n.e+1)):t=NaN,t},Io.round=function(){var e=this,t=e.constructor;return Qo(new t(e),e.e+1,t.rounding)},Io.sine=Io.sin=function(){var e,t,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+Math.max(n.e,n.sd())+7,i.rounding=1,n=function(e,t){var n,i=t.d.length;if(i<3)return t.isZero()?t:Uo(e,2,t,t);n=(n=1.4*Math.sqrt(i))>16?16:0|n,t=Uo(e,2,t=t.times(1/_o(5,n)),t);for(var r,o=new e(5),A=new e(16),s=new e(20);n--;)r=t.times(t),t=t.times(o.plus(r.times(A.times(r).minus(s))));return t}(i,Lo(i,n)),i.precision=e,i.rounding=t,Qo(Zr>2?n.neg():n,e,t,!0)):new i(NaN)},Io.squareRoot=Io.sqrt=function(){var e,t,n,i,r,o,A=this,s=A.d,a=A.e,c=A.s,u=A.constructor;if(1!==c||!s||!s[0])return new u(!c||c<0&&(!s||s[0])?NaN:s?A:1/0);for(no=!1,0==(c=Math.sqrt(+A))||c==1/0?(((t=yo(s)).length+a)%2==0&&(t+="0"),c=Math.sqrt(t),a=ao((a+1)/2)-(a<0||a%2),i=new u(t=c==1/0?"5e"+a:(t=c.toExponential()).slice(0,t.indexOf("e")+1)+a)):i=new u(c.toString()),n=(a=u.precision)+3;;)if(i=(o=i).plus(Eo(A,o,n+2,1)).times(.5),yo(o.d).slice(0,n)===(t=yo(i.d)).slice(0,n)){if("9999"!=(t=t.slice(n-3,n+1))&&(r||"4999"!=t)){+t&&(+t.slice(1)||"5"!=t.charAt(0))||(Qo(i,a+1,1),e=!i.times(i).eq(A));break}if(!r&&(Qo(o,a+1,0),o.times(o).eq(A))){i=o;break}n+=4,r=1}return no=!0,Qo(i,a,u.rounding,e)},Io.tangent=Io.tan=function(){var e,t,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+10,i.rounding=1,(n=n.sin()).s=1,n=Eo(n,new i(1).minus(n.times(n)).sqrt(),e+10,0),i.precision=e,i.rounding=t,Qo(2==Zr||4==Zr?n.neg():n,e,t,!0)):new i(NaN)},Io.times=Io.mul=function(e){var t,n,i,r,o,A,s,a,c,u=this,l=u.constructor,g=u.d,d=(e=new l(e)).d;if(e.s*=u.s,!(g&&g[0]&&d&&d[0]))return new l(!e.s||g&&!g[0]&&!d||d&&!d[0]&&!g?NaN:g&&d?0*e.s:e.s/0);for(n=ao(u.e/7)+ao(e.e/7),(a=g.length)<(c=d.length)&&(o=g,g=d,d=o,A=a,a=c,c=A),o=[],i=A=a+c;i--;)o.push(0);for(i=c;--i>=0;){for(t=0,r=a+i;r>i;)s=o[r]+d[i]*g[r-i-1]+t,o[r--]=s%po|0,t=s/po|0;o[r]=(o[r]+t)%po|0}for(;!o[--A];)o.pop();return t?++n:o.shift(),e.d=o,e.e=ko(o,n),no?Qo(e,l.precision,l.rounding):e},Io.toBinary=function(e,t){return Ko(this,2,e,t)},Io.toDecimalPlaces=Io.toDP=function(e,t){var n=this,i=n.constructor;return n=new i(n),void 0===e?n:(Bo(e,0,Vr),void 0===t?t=i.rounding:Bo(t,0,8),Qo(n,e+n.e+1,t))},Io.toExponential=function(e,t){var n,i=this,r=i.constructor;return void 0===e?n=bo(i,!0):(Bo(e,0,Vr),void 0===t?t=r.rounding:Bo(t,0,8),n=bo(i=Qo(new r(i),e+1,t),!0,e+1)),i.isNeg()&&!i.isZero()?"-"+n:n},Io.toFixed=function(e,t){var n,i,r=this,o=r.constructor;return void 0===e?n=bo(r):(Bo(e,0,Vr),void 0===t?t=o.rounding:Bo(t,0,8),n=bo(i=Qo(new o(r),e+r.e+1,t),!1,e+i.e+1)),r.isNeg()&&!r.isZero()?"-"+n:n},Io.toFraction=function(e){var t,n,i,r,o,A,s,a,c,u,l,g,d=this,h=d.d,p=d.constructor;if(!h)return new p(d);if(c=n=new p(1),i=a=new p(0),A=(o=(t=new p(i)).e=Mo(h)-d.e-1)%7,t.d[0]=co(10,A<0?7+A:A),null==e)e=o>0?t:c;else{if(!(s=new p(e)).isInt()||s.lt(c))throw Error(ro+s);e=s.gt(t)?o>0?t:c:s}for(no=!1,s=new p(yo(h)),u=p.precision,p.precision=o=7*h.length*2;l=Eo(s,t,0,1,1),1!=(r=n.plus(l.times(i))).cmp(e);)n=i,i=r,r=c,c=a.plus(l.times(r)),a=r,r=t,t=s.minus(l.times(r)),s=r;return r=Eo(e.minus(n),i,0,1,1),a=a.plus(r.times(c)),n=n.plus(r.times(i)),a.s=c.s=d.s,g=Eo(c,i,o,1).minus(d).abs().cmp(Eo(a,n,o,1).minus(d).abs())<1?[c,i]:[a,n],p.precision=u,no=!0,g},Io.toHexadecimal=Io.toHex=function(e,t){return Ko(this,16,e,t)},Io.toNearest=function(e,t){var n=this,i=n.constructor;if(n=new i(n),null==e){if(!n.d)return n;e=new i(1),t=i.rounding}else{if(e=new i(e),void 0===t?t=i.rounding:Bo(t,0,8),!n.d)return e.s?n:e;if(!e.d)return e.s&&(e.s=n.s),e}return e.d[0]?(no=!1,n=Eo(n,e,0,t,1).times(e),no=!0,Qo(n)):(e.s=n.s,n=e),n},Io.toNumber=function(){return+this},Io.toOctal=function(e,t){return Ko(this,8,e,t)},Io.toPower=Io.pow=function(e){var t,n,i,r,o,A,s=this,a=s.constructor,c=+(e=new a(e));if(!(s.d&&e.d&&s.d[0]&&e.d[0]))return new a(co(+s,c));if((s=new a(s)).eq(1))return s;if(i=a.precision,o=a.rounding,e.eq(1))return Qo(s,i,o);if((t=ao(e.e/7))>=e.d.length-1&&(n=c<0?-c:c)<=9007199254740991)return r=No(a,s,n,i),e.s<0?new a(1).div(r):Qo(r,i,o);if((A=s.s)<0){if(ta.maxE+1||t0?A/0:0):(no=!1,a.rounding=s.s=1,n=Math.min(12,(t+"").length),(r=Oo(e.times(Fo(s,i+n)),i)).d&&Co((r=Qo(r,i+5,1)).d,i,o)&&(t=i+10,+yo((r=Qo(Oo(e.times(Fo(s,t+n)),t),t+5,1)).d).slice(i+1,i+15)+1==1e14&&(r=Qo(r,i+1,0))),r.s=A,no=!0,a.rounding=o,Qo(r,i,o))},Io.toPrecision=function(e,t){var n,i=this,r=i.constructor;return void 0===e?n=bo(i,i.e<=r.toExpNeg||i.e>=r.toExpPos):(Bo(e,1,Vr),void 0===t?t=r.rounding:Bo(t,0,8),n=bo(i=Qo(new r(i),e,t),e<=i.e||i.e<=r.toExpNeg,e)),i.isNeg()&&!i.isZero()?"-"+n:n},Io.toSignificantDigits=Io.toSD=function(e,t){var n=this.constructor;return void 0===e?(e=n.precision,t=n.rounding):(Bo(e,1,Vr),void 0===t?t=n.rounding:Bo(t,0,8)),Qo(new n(this),e,t)},Io.toString=function(){var e=this,t=e.constructor,n=bo(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?"-"+n:n},Io.truncated=Io.trunc=function(){return Qo(new this.constructor(this),this.e+1,1)},Io.valueOf=Io.toJSON=function(){var e=this,t=e.constructor,n=bo(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?"-"+n:n};var Eo=function(){function e(e,t,n){var i,r=0,o=e.length;for(e=e.slice();o--;)i=e[o]*t+r,e[o]=i%n|0,r=i/n|0;return r&&e.unshift(r),e}function t(e,t,n,i){var r,o;if(n!=i)o=n>i?1:-1;else for(r=o=0;rt[r]?1:-1;break}return o}function n(e,t,n,i){for(var r=0;n--;)e[n]-=r,r=e[n]1;)e.shift()}return function(i,r,o,A,s,a){var c,u,l,g,d,h,p,f,m,I,y,B,C,w,E,Q,b,k,v,S,M=i.constructor,D=i.s==r.s?1:-1,N=i.d,T=r.d;if(!(N&&N[0]&&T&&T[0]))return new M(i.s&&r.s&&(N?!T||N[0]!=T[0]:T)?N&&0==N[0]||!T?0*D:D/0:NaN);for(a?(d=1,u=i.e-r.e):(a=po,d=7,u=ao(i.e/d)-ao(r.e/d)),v=T.length,b=N.length,I=(m=new M(D)).d=[],l=0;T[l]==(N[l]||0);l++);if(T[l]>(N[l]||0)&&u--,null==o?(w=o=M.precision,A=M.rounding):w=s?o+(i.e-r.e)+1:o,w<0)I.push(1),h=!0;else{if(w=w/d+2|0,l=0,1==v){for(g=0,T=T[0],w++;(l1&&(T=e(T,g,a),N=e(N,g,a),v=T.length,b=N.length),Q=v,B=(y=N.slice(0,v)).length;B=a/2&&++k;do{g=0,(c=t(T,y,v,B))<0?(C=y[0],v!=B&&(C=C*a+(y[1]||0)),(g=C/k|0)>1?(g>=a&&(g=a-1),1==(c=t(p=e(T,g,a),y,f=p.length,B=y.length))&&(g--,n(p,v=10;g/=10)l++;m.e=l+u*d-1,Qo(m,s?o+m.e+1:o,A,h)}return m}}();function Qo(e,t,n,i){var r,o,A,s,a,c,u,l,g,d=e.constructor;e:if(null!=t){if(!(l=e.d))return e;for(r=1,s=l[0];s>=10;s/=10)r++;if((o=t-r)<0)o+=7,A=t,a=(u=l[g=0])/co(10,r-A-1)%10|0;else if((g=Math.ceil((o+1)/7))>=(s=l.length)){if(!i)break e;for(;s++<=g;)l.push(0);u=a=0,r=1,A=(o%=7)-7+1}else{for(u=s=l[g],r=1;s>=10;s/=10)r++;a=(A=(o%=7)-7+r)<0?0:u/co(10,r-A-1)%10|0}if(i=i||t<0||void 0!==l[g+1]||(A<0?u:u%co(10,r-A-1)),c=n<4?(a||i)&&(0==n||n==(e.s<0?3:2)):a>5||5==a&&(4==n||i||6==n&&(o>0?A>0?u/co(10,r-A):0:l[g-1])%10&1||n==(e.s<0?8:7)),t<1||!l[0])return l.length=0,c?(t-=e.e+1,l[0]=co(10,(7-t%7)%7),e.e=-t||0):l[0]=e.e=0,e;if(0==o?(l.length=g,s=1,g--):(l.length=g+1,s=co(10,7-o),l[g]=A>0?(u/co(10,r-A)%co(10,A)|0)*s:0),c)for(;;){if(0==g){for(o=1,A=l[0];A>=10;A/=10)o++;for(A=l[0]+=s,s=1;A>=10;A/=10)s++;o!=s&&(e.e++,l[0]==po&&(l[0]=1));break}if(l[g]+=s,l[g]!=po)break;l[g--]=0,s=1}for(o=l.length;0===l[--o];)l.pop()}return no&&(e.e>d.maxE?(e.d=null,e.e=NaN):e.e0?o=o.charAt(0)+"."+o.slice(1)+Do(i):A>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(e.e<0?"e":"e+")+e.e):r<0?(o="0."+Do(-r-1)+o,n&&(i=n-A)>0&&(o+=Do(i))):r>=A?(o+=Do(r+1-A),n&&(i=n-r-1)>0&&(o=o+"."+Do(i))):((i=r+1)0&&(r+1===A&&(o+="."),o+=Do(i))),o}function ko(e,t){var n=e[0];for(t*=7;n>=10;n/=10)t++;return t}function vo(e,t,n){if(t>fo)throw no=!0,n&&(e.precision=n),Error(oo);return Qo(new e($r),t,1,!0)}function So(e,t,n){if(t>mo)throw Error(oo);return Qo(new e(eo),t,n,!0)}function Mo(e){var t=e.length-1,n=7*t+1;if(t=e[t]){for(;t%10==0;t/=10)n--;for(t=e[0];t>=10;t/=10)n++}return n}function Do(e){for(var t="";e--;)t+="0";return t}function No(e,t,n,i){var r,o=new e(1),A=Math.ceil(i/7+4);for(no=!1;;){if(n%2&&Yo((o=o.times(t)).d,A)&&(r=!0),0===(n=ao(n/2))){n=o.d.length-1,r&&0===o.d[n]&&++o.d[n];break}Yo((t=t.times(t)).d,A)}return no=!0,o}function To(e){return 1&e.d[e.d.length-1]}function Po(e,t,n){for(var i,r=new e(t[0]),o=0;++o17)return new g(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(null==t?(no=!1,a=h):a=t,s=new g(.03125);e.e>-2;)e=e.times(s),l+=5;for(a+=i=Math.log(co(2,l))/Math.LN10*2+5|0,n=o=A=new g(1),g.precision=a;;){if(o=Qo(o.times(e),a,1),n=n.times(++u),yo((s=A.plus(Eo(o,n,a,1))).d).slice(0,a)===yo(A.d).slice(0,a)){for(r=l;r--;)A=Qo(A.times(A),a,1);if(null!=t)return g.precision=h,A;if(!(c<3&&Co(A.d,a-i,d,c)))return Qo(A,g.precision=h,d,no=!0);g.precision=a+=10,n=o=s=new g(1),u=0,c++}A=s}}function Fo(e,t){var n,i,r,o,A,s,a,c,u,l,g,d=1,h=e,p=h.d,f=h.constructor,m=f.rounding,I=f.precision;if(h.s<0||!p||!p[0]||!h.e&&1==p[0]&&1==p.length)return new f(p&&!p[0]?-1/0:1!=h.s?NaN:p?0:h);if(null==t?(no=!1,u=I):u=t,f.precision=u+=10,i=(n=yo(p)).charAt(0),!(Math.abs(o=h.e)<15e14))return c=vo(f,u+2,I).times(o+""),h=Fo(new f(i+"."+n.slice(1)),u-10).plus(c),f.precision=I,null==t?Qo(h,I,m,no=!0):h;for(;i<7&&1!=i||1==i&&n.charAt(1)>3;)i=(n=yo((h=h.times(e)).d)).charAt(0),d++;for(o=h.e,i>1?(h=new f("0."+n),o++):h=new f(i+"."+n.slice(1)),l=h,a=A=h=Eo(h.minus(1),h.plus(1),u,1),g=Qo(h.times(h),u,1),r=3;;){if(A=Qo(A.times(g),u,1),yo((c=a.plus(Eo(A,new f(r),u,1))).d).slice(0,u)===yo(a.d).slice(0,u)){if(a=a.times(2),0!==o&&(a=a.plus(vo(f,u+2,I).times(o+""))),a=Eo(a,new f(d),u,1),null!=t)return f.precision=I,a;if(!Co(a.d,u-10,m,s))return Qo(a,f.precision=I,m,no=!0);f.precision=u+=10,c=A=h=Eo(l.minus(1),l.plus(1),u,1),g=Qo(h.times(h),u,1),r=s=1}a=c,r+=2}}function Ro(e){return String(e.s*e.s/0)}function Go(e,t){var n,i,r;for((n=t.indexOf("."))>-1&&(t=t.replace(".","")),(i=t.search(/e/i))>0?(n<0&&(n=i),n+=+t.slice(i+1),t=t.substring(0,i)):n<0&&(n=t.length),i=0;48===t.charCodeAt(i);i++);for(r=t.length;48===t.charCodeAt(r-1);--r);if(t=t.slice(i,r)){if(r-=i,e.e=n=n-i-1,e.d=[],i=(n+1)%7,n<0&&(i+=7),ie.constructor.maxE?(e.d=null,e.e=NaN):e.e-1){if(t=t.replace(/(\d)_(?=\d)/g,"$1"),ho.test(t))return Go(e,t)}else if("Infinity"===t||"NaN"===t)return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(lo.test(t))n=16,t=t.toLowerCase();else if(uo.test(t))n=2;else{if(!go.test(t))throw Error(ro+t);n=8}for((o=t.search(/p/i))>0?(a=+t.slice(o+1),t=t.substring(2,o)):t=t.slice(2),A=(o=t.indexOf("."))>=0,i=e.constructor,A&&(o=(s=(t=t.replace(".","")).length)-o,r=No(i,new i(n),o,2*o)),o=u=(c=wo(t,n,po)).length-1;0===c[o];--o)c.pop();return o<0?new i(0*e.s):(e.e=ko(c,u),e.d=c,no=!1,A&&(e=Eo(e,r,4*s)),a&&(e=e.times(Math.abs(a)<54?co(2,a):DA.pow(2,a))),no=!0,e)}function Uo(e,t,n,i,r){var o,A,s,a,c=e.precision,u=Math.ceil(c/7);for(no=!1,a=n.times(n),s=new e(i);;){if(A=Eo(s.times(a),new e(t++*t++),c,1),s=r?i.plus(A):i.minus(A),i=Eo(A.times(a),new e(t++*t++),c,1),void 0!==(A=s.plus(i)).d[u]){for(o=u;A.d[o]===s.d[o]&&o--;);if(-1==o)break}o=s,s=i,i=A,A=o}return no=!0,A.d.length=u+1,A}function _o(e,t){for(var n=e;--t;)n*=e;return n}function Lo(e,t){var n,i=t.s<0,r=So(e,e.precision,1),o=r.times(.5);if((t=t.abs()).lte(o))return Zr=i?4:1,t;if((n=t.divToInt(r)).isZero())Zr=i?3:2;else{if((t=t.minus(n.times(r))).lte(o))return Zr=To(n)?i?2:3:i?4:1,t;Zr=To(n)?i?1:4:i?3:2}return t.minus(r).abs()}function Ko(e,t,n,i){var r,o,A,s,a,c,u,l,g,d=e.constructor,h=void 0!==n;if(h?(Bo(n,1,Vr),void 0===i?i=d.rounding:Bo(i,0,8)):(n=d.precision,i=d.rounding),e.isFinite()){for(h?(r=2,16==t?n=4*n-3:8==t&&(n=3*n-2)):r=t,(A=(u=bo(e)).indexOf("."))>=0&&(u=u.replace(".",""),(g=new d(1)).e=u.length-A,g.d=wo(bo(g),10,r),g.e=g.d.length),o=a=(l=wo(u,10,r)).length;0==l[--a];)l.pop();if(l[0]){if(A<0?o--:((e=new d(e)).d=l,e.e=o,l=(e=Eo(e,g,n,i,0,r)).d,o=e.e,c=qr),A=l[n],s=r/2,c=c||void 0!==l[n+1],c=i<4?(void 0!==A||c)&&(0===i||i===(e.s<0?3:2)):A>s||A===s&&(4===i||c||6===i&&1&l[n-1]||i===(e.s<0?8:7)),l.length=n,c)for(;++l[--n]>r-1;)l[n]=0,n||(++o,l.unshift(1));for(a=l.length;!l[a-1];--a);for(A=0,u="";A1)if(16==t||8==t){for(A=16==t?4:3,--a;a%A;a++)u+="0";for(a=(l=wo(u,r,t)).length;!l[a-1];--a);for(A=1,u="1.";Aa)for(o-=a;o--;)u+="0";else ot)return e.length=t,!0}function jo(e){return new this(e).abs()}function Wo(e){return new this(e).acos()}function Jo(e){return new this(e).acosh()}function qo(e,t){return new this(e).plus(t)}function Zo(e){return new this(e).asin()}function zo(e){return new this(e).asinh()}function Ho(e){return new this(e).atan()}function Vo(e){return new this(e).atanh()}function Xo(e,t){e=new this(e),t=new this(t);var n,i=this.precision,r=this.rounding,o=i+4;return e.s&&t.s?e.d||t.d?!t.d||e.isZero()?(n=t.s<0?So(this,i,r):new this(0)).s=e.s:!e.d||t.isZero()?(n=So(this,o,1).times(.5)).s=e.s:t.s<0?(this.precision=o,this.rounding=1,n=this.atan(Eo(e,t,o,1)),t=So(this,o,1),this.precision=i,this.rounding=r,n=e.s<0?n.minus(t):n.plus(t)):n=this.atan(Eo(e,t,o,1)):(n=So(this,o,1).times(t.s>0?.25:.75)).s=e.s:n=new this(NaN),n}function $o(e){return new this(e).cbrt()}function eA(e){return Qo(e=new this(e),e.e+1,2)}function tA(e,t,n){return new this(e).clamp(t,n)}function nA(e){if(!e||"object"!=typeof e)throw Error(io+"Object expected");var t,n,i,r=!0===e.defaults,o=["precision",1,Vr,"rounding",0,8,"toExpNeg",-Hr,0,"toExpPos",0,Hr,"maxE",0,Hr,"minE",-Hr,0,"modulo",0,9];for(t=0;t=o[t+1]&&i<=o[t+2]))throw Error(ro+n+": "+i);this[n]=i}if(n="crypto",r&&(this[n]=to[n]),void 0!==(i=e[n])){if(!0!==i&&!1!==i&&0!==i&&1!==i)throw Error(ro+n+": "+i);if(i){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw Error(Ao);this[n]=!0}else this[n]=!1}return this}function iA(e){return new this(e).cos()}function rA(e){return new this(e).cosh()}function oA(e,t){return new this(e).div(t)}function AA(e){return new this(e).exp()}function sA(e){return Qo(e=new this(e),e.e+1,3)}function aA(){var e,t,n=new this(0);for(no=!1,e=0;e=429e7?t[o]=crypto.getRandomValues(new Uint32Array(1))[0]:s[o++]=r%1e7;else{if(!crypto.randomBytes)throw Error(Ao);for(t=crypto.randomBytes(i*=4);o=214e7?crypto.randomBytes(4).copy(t,o):(s.push(r%1e7),o+=4);o=i/4}else for(;o=10;r/=10)i++;i<7&&(n-=7-i)}return A.e=n,A.d=s,A}function BA(e){return Qo(e=new this(e),e.e+1,this.rounding)}function CA(e){return(e=new this(e)).d?e.d[0]?e.s:0*e.s:e.s||NaN}function wA(e){return new this(e).sin()}function EA(e){return new this(e).sinh()}function QA(e){return new this(e).sqrt()}function bA(e,t){return new this(e).sub(t)}function kA(){var e=0,t=arguments,n=new this(t[e]);for(no=!1;n.s&&++eo.maxE?(r.e=NaN,r.d=null):e.e=10;n/=10)t++;return void(no?t>o.maxE?(r.e=NaN,r.d=null):t0?new(y())(function(e){let t;return t=0!=(1&e)?new(y())("79232123823359799118286999567"):new(y())("79228162514264337593543950336"),0!=(2&e)&&(t=VA(t.mul(new(y())("79236085330515764027303304731")),96,256)),0!=(4&e)&&(t=VA(t.mul(new(y())("79244008939048815603706035061")),96,256)),0!=(8&e)&&(t=VA(t.mul(new(y())("79259858533276714757314932305")),96,256)),0!=(16&e)&&(t=VA(t.mul(new(y())("79291567232598584799939703904")),96,256)),0!=(32&e)&&(t=VA(t.mul(new(y())("79355022692464371645785046466")),96,256)),0!=(64&e)&&(t=VA(t.mul(new(y())("79482085999252804386437311141")),96,256)),0!=(128&e)&&(t=VA(t.mul(new(y())("79736823300114093921829183326")),96,256)),0!=(256&e)&&(t=VA(t.mul(new(y())("80248749790819932309965073892")),96,256)),0!=(512&e)&&(t=VA(t.mul(new(y())("81282483887344747381513967011")),96,256)),0!=(1024&e)&&(t=VA(t.mul(new(y())("83390072131320151908154831281")),96,256)),0!=(2048&e)&&(t=VA(t.mul(new(y())("87770609709833776024991924138")),96,256)),0!=(4096&e)&&(t=VA(t.mul(new(y())("97234110755111693312479820773")),96,256)),0!=(8192&e)&&(t=VA(t.mul(new(y())("119332217159966728226237229890")),96,256)),0!=(16384&e)&&(t=VA(t.mul(new(y())("179736315981702064433883588727")),96,256)),0!=(32768&e)&&(t=VA(t.mul(new(y())("407748233172238350107850275304")),96,256)),0!=(65536&e)&&(t=VA(t.mul(new(y())("2098478828474011932436660412517")),96,256)),0!=(131072&e)&&(t=VA(t.mul(new(y())("55581415166113811149459800483533")),96,256)),0!=(262144&e)&&(t=VA(t.mul(new(y())("38992368544603139932233054999993551")),96,256)),VA(t,32,256)}(e)):new(y())(function(e){const t=Math.abs(e);let n;return n=0!=(1&t)?new(y())("18445821805675392311"):new(y())("18446744073709551616"),0!=(2&t)&&(n=VA(n.mul(new(y())("18444899583751176498")),64,256)),0!=(4&t)&&(n=VA(n.mul(new(y())("18443055278223354162")),64,256)),0!=(8&t)&&(n=VA(n.mul(new(y())("18439367220385604838")),64,256)),0!=(16&t)&&(n=VA(n.mul(new(y())("18431993317065449817")),64,256)),0!=(32&t)&&(n=VA(n.mul(new(y())("18417254355718160513")),64,256)),0!=(64&t)&&(n=VA(n.mul(new(y())("18387811781193591352")),64,256)),0!=(128&t)&&(n=VA(n.mul(new(y())("18329067761203520168")),64,256)),0!=(256&t)&&(n=VA(n.mul(new(y())("18212142134806087854")),64,256)),0!=(512&t)&&(n=VA(n.mul(new(y())("17980523815641551639")),64,256)),0!=(1024&t)&&(n=VA(n.mul(new(y())("17526086738831147013")),64,256)),0!=(2048&t)&&(n=VA(n.mul(new(y())("16651378430235024244")),64,256)),0!=(4096&t)&&(n=VA(n.mul(new(y())("15030750278693429944")),64,256)),0!=(8192&t)&&(n=VA(n.mul(new(y())("12247334978882834399")),64,256)),0!=(16384&t)&&(n=VA(n.mul(new(y())("8131365268884726200")),64,256)),0!=(32768&t)&&(n=VA(n.mul(new(y())("3584323654723342297")),64,256)),0!=(65536&t)&&(n=VA(n.mul(new(y())("696457651847595233")),64,256)),0!=(131072&t)&&(n=VA(n.mul(new(y())("26294789957452057")),64,256)),0!=(262144&t)&&(n=VA(n.mul(new(y())("37481735321082")),64,256)),n}(e))}static sqrtPriceX64ToTickIndex(e){if(e.gt(new(y())(GA))||e.lt(new(y())(xA)))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");const t=e.bitLength()-1,n=function(e,t,n){const i=e.toTwos(128).shln(32);return i.imaskn(129),i.fromTwos(128)}(new(y())(t-64));let i=new(y())("8000000000000000","hex"),r=0,o=new(y())(0),A=t>=64?e.shrn(t-63):e.shln(63-t);for(;i.gt(new(y())(0))&&r<14;){A=A.mul(A);const e=A.shrn(127);A=A.shrn(63+e.toNumber()),o=o.add(i.mul(e)),i=i.shrn(1),r+=1}const s=o.shrn(32),a=n.add(s).mul(new(y())("59543866431248")),c=VA(a.sub(new(y())("184467440737095516")),64,128).toNumber(),u=VA(a.add(new(y())("15793534762490258745")),64,128).toNumber();return c===u?c:HA.tickIndexToSqrtPriceX64(u).lte(e)?u:c}static tickIndexToPrice(e,t,n){return HA.sqrtPriceX64ToPrice(HA.tickIndexToSqrtPriceX64(e),t,n)}static priceToTickIndex(e,t,n){return HA.sqrtPriceX64ToTickIndex(HA.priceToSqrtPriceX64(e,t,n))}static priceToInitializableTickIndex(e,t,n,i){return HA.getInitializableTickIndex(HA.priceToTickIndex(e,t,n),i)}static getStartTickIndex(e,t,n=0){const i=(Math.floor(e/t/UA)+n)*t*UA,r=UA*t;return W(i>=RA-(RA%r+r)),W(i<=FA),i}static getInitializableTickIndex(e,t){return e-e%t}static getNextInitializableTickIndex(e,t){return HA.getInitializableTickIndex(e,t)+t}static getPrevInitializableTickIndex(e,t){return HA.getInitializableTickIndex(e,t)-t}};function VA(e,t,n){const i=e.toTwos(n).shrn(t);return i.imaskn(n-t+1),i.fromTwos(n-t)}var XA=class{static toPubKey(e){return Zt(e)}static toPubKeys(e){return e.map((e=>XA.toPubKey(e)))}static findProgramAddress(e,t){const[n,i]=Ar.publicKey.findProgramAddressSync(e,t);return{publicKey:n,bump:i}}},$A=class{static isTickInitializable(e,t){return e%t==0}static checkTickInBounds(e){return e<=FA&&e>=RA}static checkIsValidTick(e,t){const n=this.getMinIndex(t),i=this.getMaxIndex(t);W(e>=n&&e<=i),W(e%t==0)}static getMinIndex(e){return RA+Math.abs(RA)%e}static getMaxIndex(e){return FA-FA%e}static getArrayIndex(e,t){const n=this.getMinIndex(t),i=this.getMaxIndex(t);W(e>=n&&e<=i);const r=UA*t;return Math.floor((e-n)/r)}static getOffset(e,t){const n=this.getArrayIndex(e,t),i=this.getStartTickIndex(n,t);return Math.floor((e-i)/t)}static getStartTickIndex(e,t){return this.getMinIndex(t)+UA*t*e}static getEndTickIndex(e,t){return this.getStartTickIndex(e,t)+63*t}static isMinTickArray(e,t){return this.getStartTickIndex(e,t)===this.getMinIndex(t)}static isMaxTickArray(e,t){return this.getEndTickIndex(e,t)===this.getMaxIndex(t)}static isInArray(e,t,n){return n>=this.getStartTickIndex(e,t)&&n<=this.getEndTickIndex(e,t)}static crossUpdate(e,t,n){const i=t.liquidity,r=n?e.liquidityNet.mul(new I.BN(-1)):e.liquidityNet;return r.gt(jA)?i.add(r):i.sub(r.abs())}static async getTickDataFromIndex(e,t,n,i,r){const o=this.getArrayIndex(i,r),A=this.getOffset(i,r),s=ts.getTickArrayPDA(n,t,o).publicKey;return(await e.getTickArray(s,!1)).ticks[A]}},es="metadata",ts=class{static getClmmConfigPDA(e){return XA.findProgramAddress([TA.from("clmmconfig")],e)}static getClmmpoolPDA(e,t,n,i,r){const[o,A]=n.toBuffer()({address:e,data:s[t]})))}static calculateSwapAmountsFromQuote(e,t,n,i,r){return r?{amount:e,amountLimit:ns(n,i,!1)}:{amount:e,amountLimit:ns(t,i,!0)}}};function rs(e,t,n,i){const r=e.gt(t)?e.sub(t):t.sub(e),o=n.mul(r).shln(64),A=e.mul(t),s=o.div(A),a=o.mod(A),c=i&&!a.eq(jA)?s.add(new I(1)):s;if(zA.isOverflow(c,64))throw new YA("Result large than u64 max","IntegerDowncastOverflow");return c}function os(e,t,n,i){const r=e.gt(t)?e.sub(t):t.sub(e);if(n.eq(jA)||r.eq(jA))return jA;const o=n.mul(r),A=i&&o.and(ZA).gt(jA)?o.shrn(64).add(WA):o.shrn(64);if(zA.isOverflow(A,64))throw new YA("Result large than u64 max","IntegerDowncastOverflow");return A}function As(e,t,n,i){if(n.eq(jA))return e;const r=zA.checkMulShiftLeft(e,t,64,256),o=t.shln(64),A=zA.checkMul(e,n,256);if(!i&&o.lte(A))throw new YA("getNextSqrtPriceAUp - Unable to divide liquidityShl64 by product","DivideByZero");const s=i?zA.checkDivRoundUpIf(r,o.add(A),!0):zA.checkDivRoundUpIf(r,o.sub(A),!0);if(s.lt(new I(xA)))throw new YA("getNextSqrtPriceAUp - Next sqrt price less than min sqrt price","TokenAmountMinSubceeded ");if(s.gt(new I(GA)))throw new YA("getNextSqrtPriceAUp - Next sqrt price greater than max sqrt price","TokenAmountMaxExceeded");return s}function ss(e,t,n,i){const r=zA.checkDivRoundUpIf(n.shln(64),t,!i),o=i?e.add(r):e.sub(r);if(o.lt(new I(xA))||o.gt(new I(GA)))throw new YA("getNextSqrtPriceAUp - Next sqrt price out of bounds","SqrtPriceOutOfBounds");return o}function as(e,t,n,i){return i?rs(t,e,n,!0):os(e,t,n,!0)}function cs(e,t,n,i){return i?os(t,e,n,!1):rs(e,t,n,!1)}function us(e,t,n,i,r,o){if(n===jA)return{amountIn:KA,amountOut:KA,nextSqrtPrice:t,feeAmount:KA};const A=e.gte(t);let s,a,c,u;if(o){const o=zA.checkMulDivFloor(i,zA.checkUnsignedSub(LA,r),LA,64),l=as(e,t,n,A);l.gt(o)?(s=o,u=zA.checkUnsignedSub(i,o),c=function(e,t,n,i){return i?As(e,t,n,!0):ss(e,t,n,!0)}(e,n,o,A)):(s=l,u=zA.checkMulDivCeil(s,r,LA.sub(r),64),c=t),a=cs(e,c,n,A)}else{const o=cs(e,t,n,A);o.gt(i)?(a=i,c=function(e,t,n,i){return i?ss(e,t,n,!1):As(e,t,n,!1)}(e,n,i,A)):(a=o,c=t),s=as(e,c,n,A),u=zA.checkMulDivCeil(s,r,LA.sub(r),64)}return{amountIn:s,amountOut:a,nextSqrtPrice:c,feeAmount:u}}function ls(e,t,n,i,r,o,A){let s=n,a=i.liquidity,c=i.currentSqrtPrice;const u={amountIn:jA,amountOut:jA,feeAmount:jA,refAmount:jA,nextSqrtPrice:jA,crossTickNum:0,swapTickArrays:[]};let l,g;const d=is.getDefaultSqrtPriceLimit(e);let h=0;h=e?i.currentTickIndex:i.currentTickIndex+1;for(const n of r){if(e){if(i.currentTickIndex=n.index)continue;if(null===n)continue;l=e&&d.gt(n.sqrtPrice)||!e&&d.lt(n.sqrtPrice)?d:n.sqrtPrice;const r=us(c,l,a,s,new I(i.feeRate),t);if(r.amountIn.eq(jA)||(s=t?s.sub(r.amountIn.add(r.feeAmount)):s.sub(r.amountOut)),u.amountIn=u.amountIn.add(r.amountIn),u.amountOut=u.amountOut.add(r.amountOut),u.feeAmount=u.feeAmount.add(r.feeAmount),r.nextSqrtPrice.eq(n.sqrtPrice)?(g=e?n.liquidityNet.mul(new I(-1)):n.liquidityNet,a=g.gt(jA)?a.add(g):a.sub(g.abs()),c=n.sqrtPrice):c=r.nextSqrtPrice,u.crossTickNum++,s.eq(jA))break}if(u.amountIn=u.amountIn.add(u.feeAmount),u.nextSqrtPrice=c,A&&o){const t=function(e,t,n,i){let r=[];for(let e=0;e<868;e++){let t=i.bitmap[e];for(let e=0;e<8;e++)(t>>e&1)>0?r.push(!0):r.push(!1)}const o=[];if(t)for(let t=n;t>=0;t-=1){if(r[t]){const n=ts.getTickArrayPDA(OA,e,t);o.push(n.publicKey)}if(o.length>=3)break}else for(let t=n;t<6943;t+=1){if(r[t]){const n=ts.getTickArrayPDA(OA,e,t);o.push(n.publicKey)}if(o.length>=3)break}return o}(o,e,$A.getArrayIndex(h,i.tickSpacing),A);u.swapTickArrays=t}return u}PA.set({precision:40,toExpPos:40,toExpNeg:-20,rounding:1});var gs=i(86061),ds=i.n(gs),hs=i(30755),ps=i.n(hs),fs=(i(49500),i(55872).Buffer);class ms{constructor(e,t,n){this.connection=e,this.wallet=t,this.opts=n}static defaultOptions(){return{preflightCommitment:"processed",commitment:"processed"}}static local(e,t){throw new Error("Provider local is not available on browser.")}static env(){throw new Error("Provider env is not available on browser.")}async send(e,t,n){void 0===t&&(t=[]),void 0===n&&(n=this.opts),e.feePayer=this.wallet.publicKey,e.recentBlockhash=(await this.connection.getRecentBlockhash(n.preflightCommitment)).blockhash,await this.wallet.signTransaction(e),t.filter((e=>void 0!==e)).forEach((t=>{e.partialSign(t)}));const i=e.serialize();return await(0,A.sendAndConfirmRawTransaction)(this.connection,i,n)}async sendAll(e,t){void 0===t&&(t=this.opts);const n=await this.connection.getRecentBlockhash(t.preflightCommitment);let i=e.map((e=>{let t=e.tx,i=e.signers;return void 0===i&&(i=[]),t.feePayer=this.wallet.publicKey,t.recentBlockhash=n.blockhash,i.filter((e=>void 0!==e)).forEach((e=>{t.partialSign(e)})),t}));const r=await this.wallet.signAllTransactions(i),o=[];for(let e=0;evoid 0!==e)).forEach((t=>{e.partialSign(t)})),await async function(e,t,n){t.recentBlockhash=await e._recentBlockhash(e._disableBlockhashCaching);const i=t.serializeMessage(),r=[t._serialize(i).toString("base64"),{encoding:"base64",commitment:n}],o=await e._rpcRequest("simulateTransaction",r);if(o.error)throw new Error("failed to simulate transaction: "+o.error.message);return o.result}(this.connection,e,null!==(o=null!==(r=n.commitment)&&void 0!==r?r:this.opts.commitment)&&void 0!==o?o:"processed")}}function Is(){return null===ys?ms.local():ys}let ys=null;class Bs extends Error{constructor(e){super(e),this.name="IdlError"}}class Cs extends Error{constructor(e,t,...n){super(...n),this.code=e,this.msg=t}static parse(e,t){const n=e.toString();let i;if(n.includes("custom program error:")){let e=n.split("custom program error: ");if(2!==e.length)return null;e[1]}else{const e=n.match(/"Custom":([0-9]+)}/g);if(!e||e.length>1)return null;e[0].match(/([0-9]+)/g)[0]}try{parseInt(undefined)}catch(e){return null}let r=t.get(i);return void 0!==r?new Cs(i,r,i+": "+r):(dist_browser_I.get(i),void 0!==r?new Cs(i,r,i+": "+r):null)}toString(){return this.msg}}new Map([[100,"8 byte instruction identifier not provided"],[101,"Fallback functions are not supported"],[102,"The program could not deserialize the given instruction"],[103,"The program could not serialize the given instruction"],[1e3,"The program was compiled without idl instructions"],[1001,"The transaction was given an invalid program for the IDL instruction"],[2e3,"A mut constraint was violated"],[2001,"A has_one constraint was violated"],[2002,"A signer constraint was violated"],[2003,"A raw constraint was violated"],[2004,"An owner constraint was violated"],[2005,"A rent exempt constraint was violated"],[2006,"A seeds constraint was violated"],[2007,"An executable constraint was violated"],[2008,"A state constraint was violated"],[2009,"An associated constraint was violated"],[2010,"An associated init constraint was violated"],[2011,"A close constraint was violated"],[2012,"An address constraint was violated"],[2013,"Expected zero account discriminant"],[2014,"A token mint constraint was violated"],[2015,"A token owner constraint was violated"],[2016,"A mint mint authority constraint was violated"],[2017,"A mint freeze authority constraint was violated"],[2018,"A mint decimals constraint was violated"],[2019,"A space constraint was violated"],[3e3,"The account discriminator was already set on this account"],[3001,"No 8 byte discriminator was found on the account"],[3002,"8 byte discriminator did not match what was expected"],[3003,"Failed to deserialize the account"],[3004,"Failed to serialize the account"],[3005,"Not enough account keys given to the instruction"],[3006,"The given account is not mutable"],[3007,"The given account is owned by a different program than expected"],[3008,"Program ID was not as expected"],[3009,"Program account is not executable"],[3010,"The given account did not sign"],[3011,"The given account is not owned by the system program"],[3012,"The program expected this account to be already initialized"],[3013,"The given account is not a program data account"],[3014,"The given account is not the associated token account"],[4e3,"The given state account does not have the correct address"],[4100,"The declared program id does not match the actual program id"],[5e3,"The API being used is deprecated and should no longer be used"]]);const ws=new Set(["anchor-deprecated-state","debug-logs"]),Es=new Map;var Qs=Object.freeze({__proto__:null,set:function(e){if(!ws.has(e))throw new Error("Invalid feature");Es.set(e,!0)},isSet:function(e){return void 0!==Es.get(e)}}),bs="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==i.g?i.g:"undefined"!=typeof self?self:{};class ks{constructor(e,t){if(!Number.isInteger(e))throw new TypeError("span must be an integer");this.span=e,this.property=t}makeDestinationObject(){return{}}decode(e,t){throw new Error("Layout is abstract")}encode(e,t,n){throw new Error("Layout is abstract")}getSpan(e,t){if(0>this.span)throw new RangeError("indeterminate span");return this.span}replicate(e){const t=Object.create(this.constructor.prototype);return Object.assign(t,this),t.property=e,t}fromArray(e){}}var vs=ks;class Ss extends ks{isCount(){throw new Error("ExternalLayout is abstract")}}class Ms extends Ss{constructor(e,t,n){if(!(e instanceof ks))throw new TypeError("layout must be a Layout");if(void 0===t)t=0;else if(!Number.isInteger(t))throw new TypeError("offset must be integer or undefined");super(e.span,n||e.property),this.layout=e,this.offset=t}isCount(){return this.layout instanceof Ds||this.layout instanceof Ns}decode(e,t){return void 0===t&&(t=0),this.layout.decode(e,t+this.offset)}encode(e,t,n){return void 0===n&&(n=0),this.layout.encode(e,t,n+this.offset)}}class Ds extends ks{constructor(e,t){if(super(e,t),6e&&t instanceof ks),!0))throw new TypeError("fields must be array of Layout instances");"boolean"==typeof t&&void 0===n&&(n=t,t=void 0);for(const t of e)if(0>t.span&&void 0===t.property)throw new Error("fields cannot contain unnamed variable-length layout");let i=-1;try{i=e.reduce(((e,t)=>e+t.getSpan()),0)}catch(e){}super(i,t),this.fields=e,this.decodePrefixes=!!n}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);let n=0;try{n=this.fields.reduce(((n,i)=>{const r=i.getSpan(e,t);return t+=r,n+r}),0)}catch(e){throw new RangeError("indeterminate span")}return n}decode(e,t){void 0===t&&(t=0);const n=this.makeDestinationObject();for(const i of this.fields)if(void 0!==i.property&&(n[i.property]=i.decode(e,t)),t+=i.getSpan(e,t),this.decodePrefixes&&e.length===t)break;return n}encode(e,t,n){void 0===n&&(n=0);const i=n;let r=0,o=0;for(const i of this.fields){let A=i.span;if(o=0A&&(A=i.getSpan(t,n)))}r=n,n+=A}return r+o-i}fromArray(e){const t=this.makeDestinationObject();for(const n of this.fields)void 0!==n.property&&0n.span?t=-1:0<=t&&(t+=n.span)}}}class Fs{constructor(e){this.property=e}decode(){throw new Error("UnionDiscriminator is abstract")}encode(){throw new Error("UnionDiscriminator is abstract")}}class Rs extends Fs{constructor(e,t){if(!(e instanceof Ss&&e.isCount()))throw new TypeError("layout must be an unsigned integer ExternalLayout");super(t||e.property||"variant"),this.layout=e}decode(e,t){return this.layout.decode(e,t)}encode(e,t,n){return this.layout.encode(e,t,n)}}class Gs extends ks{constructor(e,t,n){const i=e instanceof Ds||e instanceof Ns;if(i)e=new Rs(new Ms(e));else if(e instanceof Ss&&e.isCount())e=new Rs(e);else if(!(e instanceof Fs))throw new TypeError("discr must be a UnionDiscriminator or an unsigned integer layout");if(void 0===t&&(t=null),!(null===t||t instanceof ks))throw new TypeError("defaultLayout must be null or a Layout");if(null!==t){if(0>t.span)throw new Error("defaultLayout must have constant span");void 0===t.property&&(t=t.replicate("content"))}let r=-1;t&&(r=t.span,0<=r&&i&&(r+=e.layout.span)),super(r,n),this.discriminator=e,this.usesPrefixDiscriminator=i,this.defaultLayout=t,this.registry={};let o=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(e){return o(e)},this.configGetSourceVariant=function(e){o=e.bind(this)}}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);const n=this.getVariant(e,t);if(!n)throw new Error("unable to determine span for unrecognized variant");return n.getSpan(e,t)}defaultGetSourceVariant(e){if(e.hasOwnProperty(this.discriminator.property)){if(this.defaultLayout&&e.hasOwnProperty(this.defaultLayout.property))return;const t=this.registry[e[this.discriminator.property]];if(t&&(!t.layout||e.hasOwnProperty(t.property)))return t}else for(const t in this.registry){const n=this.registry[t];if(e.hasOwnProperty(n.property))return n}throw new Error("unable to infer src variant")}decode(e,t){let n;void 0===t&&(t=0);const i=this.discriminator,r=i.decode(e,t);let o=this.registry[r];if(void 0===o){let A=0;o=this.defaultLayout,this.usesPrefixDiscriminator&&(A=i.layout.span),n=this.makeDestinationObject(),n[i.property]=r,n[o.property]=this.defaultLayout.decode(e,t+A)}else n=o.decode(e,t);return n}encode(e,t,n){void 0===n&&(n=0);const i=this.getSourceVariant(e);if(void 0===i){const i=this.discriminator,r=this.defaultLayout;let o=0;return this.usesPrefixDiscriminator&&(o=i.layout.span),i.encode(e[i.property],t,n),o+r.encode(e[r.property],t,n+o)}return i.encode(e,t,n)}addVariant(e,t,n){const i=new xs(this,e,t,n);return this.registry[e]=i,i}getVariant(e,t){let n=e;return fs.isBuffer(e)&&(void 0===t&&(t=0),n=this.discriminator.decode(e,t)),this.registry[n]}}class xs extends ks{constructor(e,t,n,i){if(!(e instanceof Gs))throw new TypeError("union must be a Union");if(!Number.isInteger(t)||0>t)throw new TypeError("variant must be a (non-negative) integer");if("string"==typeof n&&void 0===i&&(i=n,n=null),n){if(!(n instanceof ks))throw new TypeError("layout must be a Layout");if(null!==e.defaultLayout&&0<=n.span&&n.span>e.defaultLayout.span)throw new Error("variant span exceeds span of containing union");if("string"!=typeof i)throw new TypeError("variant must have a String property")}let r=e.span;0>e.span&&(r=n?n.span:0,0<=r&&e.usesPrefixDiscriminator&&(r+=e.discriminator.layout.span)),super(r,i),this.union=e,this.variant=t,this.layout=n||null}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);let n=0;return this.union.usesPrefixDiscriminator&&(n=this.union.discriminator.layout.span),n+this.layout.getSpan(e,t+n)}decode(e,t){const n=this.makeDestinationObject();if(void 0===t&&(t=0),this!==this.union.getVariant(e,t))throw new Error("variant mismatch");let i=0;return this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout?n[this.property]=this.layout.decode(e,t+i):this.property?n[this.property]=!0:this.union.usesPrefixDiscriminator&&(n[this.union.discriminator.property]=this.variant),n}encode(e,t,n){void 0===n&&(n=0);let i=0;if(this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout&&!e.hasOwnProperty(this.property))throw new TypeError("variant lacks property "+this.property);this.union.discriminator.encode(this.variant,t,n);let r=i;if(this.layout&&(this.layout.encode(e[this.property],t,n+i),r+=this.layout.getSpan(t,n+i),0<=this.union.span&&r>this.union.span))throw new Error("encoded variant overruns containing union");return r}fromArray(e){if(this.layout)return this.layout.fromArray(e)}}class Us extends ks{constructor(e,t){if(!(e instanceof Ss&&e.isCount()||Number.isInteger(e)&&0<=e))throw new TypeError("length must be positive integer or an unsigned integer ExternalLayout");let n=-1;e instanceof Ss||(n=e),super(n,t),this.length=e}getSpan(e,t){let n=this.span;return 0>n&&(n=this.length.decode(e,t)),n}decode(e,t){void 0===t&&(t=0);let n=this.span;return 0>n&&(n=this.length.decode(e,t)),e.slice(t,t+n)}encode(e,t,n){let i=this.length;if(this.length instanceof Ss&&(i=e.length),!fs.isBuffer(e)||i!==e.length)throw new TypeError((r="Blob.encode",(this.property?r+"["+this.property+"]":r)+" requires (length "+i+") Buffer as src"));var r;if(n+i>t.length)throw new RangeError("encoding overruns Buffer");return t.write(e.toString("hex"),n,i,"hex"),this.length instanceof Ss&&this.length.encode(i,t,n),i}}var _s=e=>new Ds(1,e),Ls=e=>new Ps(e),Ks=(e,t,n)=>new Os(e,t,n),Ys=(e,t)=>new Us(e,t);const js=(Ws=_s("instruction"),new Gs(Ws,void 0,void 0));var Ws;function Js(e){return Ys(32,e)}function qs(e){return new Hs(Ys(8),(e=>Xs.fromBuffer(e)),(e=>e.toBuffer()),e)}function Zs(e){return new Hs(Ys(32),(e=>new A.PublicKey(e)),(e=>e.toBuffer()),e)}function zs(e,t){return new Vs(e,t)}js.addVariant(0,Ks([_s("decimals"),Ys(32,"mintAuthority"),_s("freezeAuthorityOption"),Js("freezeAuthority")]),"initializeMint"),js.addVariant(1,Ks([]),"initializeAccount"),js.addVariant(2,Ks([_s("m")]),"initializeMultisig"),js.addVariant(3,Ks([Ls("amount")]),"transfer"),js.addVariant(4,Ks([Ls("amount")]),"approve"),js.addVariant(5,Ks([]),"revoke"),js.addVariant(6,Ks([_s("authorityType"),_s("newAuthorityOption"),Js("newAuthority")]),"setAuthority"),js.addVariant(7,Ks([Ls("amount")]),"mintTo"),js.addVariant(8,Ks([Ls("amount")]),"burn"),js.addVariant(9,Ks([]),"closeAccount"),js.addVariant(10,Ks([]),"freezeAccount"),js.addVariant(11,Ks([]),"thawAccount"),js.addVariant(12,Ks([Ls("amount"),_s("decimals")]),"transferChecked"),js.addVariant(13,Ks([Ls("amount"),_s("decimals")]),"approvedChecked"),js.addVariant(14,Ks([Ls("amount"),_s("decimals")]),"mintToChecked"),js.addVariant(15,Ks([Ls("amount"),_s("decimals")]),"burnedChecked"),js.addVariant(16,Ks([Js("authority")]),"InitializeAccount2"),js.addVariant(17,Ks([]),"syncNative"),js.addVariant(18,Ks([Js("authority")]),"initializeAccount3"),js.addVariant(19,Ks([_s("m")]),"initializeMultisig2"),js.addVariant(20,Ks([_s("decimals"),Js("mintAuthority"),_s("freezeAuthorityOption"),Js("freezeAuthority")]),"initializeMint2"),Math.max(...Object.values(js.registry).map((e=>e.span)));class Hs extends vs{constructor(e,t,n,i){super(e.span,i),this.layout=e,this.decoder=t,this.encoder=n}decode(e,t){return this.decoder(this.layout.decode(e,t))}encode(e,t,n){return this.layout.encode(this.encoder(e),t,n)}getSpan(e,t){return this.layout.getSpan(e,t)}}class Vs extends vs{constructor(e,t){super(-1,t),this.layout=e,this.discriminator=new Ds(4,void 0)}encode(e,t,n=0){return null==e?this.layout.span+this.discriminator.encode(0,t,n):(this.discriminator.encode(1,t,n),this.layout.encode(e,t,n+4)+4)}decode(e,t=0){const n=this.discriminator.decode(e,t);if(0===n)return null;if(1===n)return this.layout.decode(e,t+4);throw new Error("Invalid coption "+this.property)}getSpan(e,t=0){return this.layout.getSpan(e,t+4)+4}}class Xs extends(y()){toBuffer(){const e=super.toArray().reverse(),t=fs.from(e);if(8===t.length)return t;if(t.length>=8)throw new Error("u64 too large");const n=fs.alloc(8);return t.copy(n),n}static fromBuffer(e){if(8!==e.length)throw new Error(`Invalid buffer length: ${e.length}`);return new Xs([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}Ks([zs(Zs(),"mintAuthority"),qs("supply"),_s("decimals"),new Hs(_s(),(function(e){if(0===e)return!1;if(1===e)return!0;throw new Error("Invalid bool: "+e)}),(function(e){return e?1:0}),"isInitialized"),zs(Zs(),"freezeAuthority")]),Ks([Zs("mint"),Zs("authority"),qs("amount"),zs(Zs(),"delegate"),_s("state"),zs(qs(),"isNative"),qs("delegatedAmount"),zs(Zs(),"closeAuthority")]);var $s=Object.freeze({__proto__:null,hash:function(e){return(0,vt.sha256)(e)}});function ea(e){return e instanceof A.PublicKey?e:new A.PublicKey(e)}async function ta(e,t,n){const i=null!=n?n:e.commitment,r=[t.map((e=>e.toBase58()))];i&&r.push({commitment:i});const o=await e._rpcRequest("getMultipleAccounts",r);if(o.error)throw new Error("failed to get info about accounts "+t.map((e=>e.toBase58())).join(", ")+": "+o.error.message);Pt()(void 0!==o.result);const s=[];for(const e of o.result.value){let t=null;if(null!==e){if(o.result.value){const{executable:n,owner:i,lamports:r,data:o}=e;Pt()("base64"===o[1]),t={executable:n,owner:new A.PublicKey(i),lamports:r,data:Ct.Buffer.from(o[0],"base64")}}if(null===t)throw new Error("Invalid response");s.push(t)}else s.push(null)}return s.map(((e,n)=>null===e?null:{publicKey:t[n],account:e}))}var na=Object.freeze({__proto__:null,invoke:async function(e,t,n,i){e=ea(e),i||(i=Is());const r=new A.Transaction;return r.add(new A.TransactionInstruction({programId:e,keys:null!=t?t:[],data:n})),await i.send(r)},getMultipleAccounts:async function(e,t,n){if(t.length<=99)return await ta(e,t,n);{const r=(i=t,Array.apply(0,new Array(Math.ceil(i.length/99))).map(((e,t)=>i.slice(99*t,99*(t+1)))));return(await Promise.all(r.map((t=>ta(e,t,n))))).flat()}var i}});function ia(e,t){let n=Ct.Buffer.alloc(0);e.forEach((function(e){if(e.length>32)throw new TypeError("Max seed length exceeded");n=Ct.Buffer.concat([n,ra(e)])})),n=Ct.Buffer.concat([n,t.toBuffer(),Ct.Buffer.from("ProgramDerivedAddress")]);let i=(0,vt.sha256)(new Uint8Array(n)),r=new(y())(i,16).toArray(void 0,32);if(A.PublicKey.isOnCurve(new Uint8Array(r)))throw new Error("Invalid seeds, address must fall off the curve");return new A.PublicKey(r)}const ra=e=>e instanceof Ct.Buffer?e:e instanceof Uint8Array?Ct.Buffer.from(e.buffer,e.byteOffset,e.byteLength):Ct.Buffer.from(e);var oa=Object.freeze({__proto__:null,createWithSeedSync:function(e,t,n){const i=Ct.Buffer.concat([e.toBuffer(),Ct.Buffer.from(t),n.toBuffer()]),r=vt.sha256.digest(i);return new A.PublicKey(Ct.Buffer.from(r))},createProgramAddressSync:ia,findProgramAddressSync:function(e,t){let n,i=255;for(;0!=i;){try{n=ia(e.concat(Ct.Buffer.from([i])),t)}catch(e){if(e instanceof TypeError)throw e;i--;continue}return[n,i]}throw new Error("Unable to find a viable program address nonce")},associated:async function(e,...t){let n=[Ct.Buffer.from([97,110,99,104,111,114])];t.forEach((e=>{n.push(e instanceof Ct.Buffer?e:ea(e).toBuffer())}));const[i]=await A.PublicKey.findProgramAddress(n,ea(e));return i}}),Aa=Object.freeze({__proto__:null,encode:function(e){return e.reduce(((e,t)=>e+t.toString(16).padStart(2,"0")),"0x")},decode:function(e){0===e.indexOf("0x")&&(e=e.substr(2)),e.length%2==1&&(e="0"+e);let t=e.match(/.{2}/g);return null===t?Ct.Buffer.from([]):Ct.Buffer.from(t.map((e=>parseInt(e,16))))}});var sa=Object.freeze({__proto__:null,decode:function(e){return new TextDecoder("utf-8").decode(e)},encode:function(e){return(new TextEncoder).encode(e)}}),aa=Object.freeze({__proto__:null,encode:function(e){return Et().encode(e)},decode:function(e){return Et().decode(e)}}),ca=Object.freeze({__proto__:null,encode:function(e){return Qt.fromByteArray(e)},decode:function(e){return Ct.Buffer.from(Qt.toByteArray(e))}}),ua=Object.freeze({__proto__:null,hex:Aa,utf8:sa,bs58:aa,base64:ca});const la=new A.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),ga=new A.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");var da=Object.freeze({__proto__:null,TOKEN_PROGRAM_ID:la,ASSOCIATED_PROGRAM_ID:ga,associatedAddress:async function({mint:e,owner:t}){return(await A.PublicKey.findProgramAddress([t.toBuffer(),la.toBuffer(),e.toBuffer()],ga))[0]}}),ha={exports:{}};!function(e,t){var n="undefined"!=typeof self?self:bs,i=function(){function e(){this.fetch=!1,this.DOMException=n.DOMException}return e.prototype=n,new e}();!function(e){!function(t){var n="URLSearchParams"in e,i="Symbol"in e&&"iterator"in Symbol,r="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),o="FormData"in e,A="ArrayBuffer"in e;if(A)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],a=ArrayBuffer.isView||function(e){return e&&s.indexOf(Object.prototype.toString.call(e))>-1};function c(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function u(e){return"string"!=typeof e&&(e=String(e)),e}function l(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return i&&(t[Symbol.iterator]=function(){return t}),t}function g(e){this.map={},e instanceof g?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function d(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function h(e){return new Promise((function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}}))}function p(e){var t=new FileReader,n=h(t);return t.readAsArrayBuffer(e),n}function f(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function m(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:r&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:o&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:n&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():A&&r&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=f(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):A&&(ArrayBuffer.prototype.isPrototypeOf(e)||a(e))?this._bodyArrayBuffer=f(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},r&&(this.blob=function(){var e=d(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?d(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(p)}),this.text=function(){var e=d(this);if(e)return e;if(this._bodyBlob)return function(e){var t=new FileReader,n=h(t);return t.readAsText(e),n}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),i=0;i-1?i:n),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function B(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var n=e.split("="),i=n.shift().replace(/\+/g," "),r=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(i),decodeURIComponent(r))}})),t}function C(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new g(t.headers),this.url=t.url||"",this._initBody(e)}y.prototype.clone=function(){return new y(this,{body:this._bodyInit})},m.call(y.prototype),m.call(C.prototype),C.prototype.clone=function(){return new C(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new g(this.headers),url:this.url})},C.error=function(){var e=new C(null,{status:0,statusText:""});return e.type="error",e};var w=[301,302,303,307,308];C.redirect=function(e,t){if(-1===w.indexOf(t))throw new RangeError("Invalid status code");return new C(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var n=Error(e);this.stack=n.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function E(e,n){return new Promise((function(i,o){var A=new y(e,n);if(A.signal&&A.signal.aborted)return o(new t.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function a(){s.abort()}s.onload=function(){var e,t,n={status:s.status,statusText:s.statusText,headers:(e=s.getAllResponseHeaders()||"",t=new g,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var n=e.split(":"),i=n.shift().trim();if(i){var r=n.join(":").trim();t.append(i,r)}})),t)};n.url="responseURL"in s?s.responseURL:n.headers.get("X-Request-URL");var r="response"in s?s.response:s.responseText;i(new C(r,n))},s.onerror=function(){o(new TypeError("Network request failed"))},s.ontimeout=function(){o(new TypeError("Network request failed"))},s.onabort=function(){o(new t.DOMException("Aborted","AbortError"))},s.open(A.method,A.url,!0),"include"===A.credentials?s.withCredentials=!0:"omit"===A.credentials&&(s.withCredentials=!1),"responseType"in s&&r&&(s.responseType="blob"),A.headers.forEach((function(e,t){s.setRequestHeader(t,e)})),A.signal&&(A.signal.addEventListener("abort",a),s.onreadystatechange=function(){4===s.readyState&&A.signal.removeEventListener("abort",a)}),s.send(void 0===A._bodyInit?null:A._bodyInit)}))}E.polyfill=!0,e.fetch||(e.fetch=E,e.Headers=g,e.Request=y,e.Response=C),t.Headers=g,t.Request=y,t.Response=C,t.fetch=E,Object.defineProperty(t,"__esModule",{value:!0})}({})}(i),i.fetch.ponyfill=!0,delete i.fetch.polyfill;var r=i;(t=r.fetch).default=r.fetch,t.fetch=r.fetch,t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response,e.exports=t}(ha,ha.exports);var pa=function(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}(ha.exports);async function fa(e,t){const n=await e.getAccountInfo(t);if(null===n)throw new Error("program account not found");const{program:i}=Ia(n.data),r=await e.getAccountInfo(i.programdataAddress);if(null===r)throw new Error("program data account not found");const{programData:o}=Ia(r.data);return o}const ma=St.rustEnum([St.struct([],"uninitialized"),St.struct([St.option(St.publicKey(),"authorityAddress")],"buffer"),St.struct([St.publicKey("programdataAddress")],"program"),St.struct([St.u64("slot"),St.option(St.publicKey(),"upgradeAuthorityAddress")],"programData")],void 0,St.u32());function Ia(e){return ma.decode(e)}var ya,Ba,Ca,wa=Object.freeze({__proto__:null,verifiedBuild:async function(e,t,n=5){const i=`https://anchor.projectserum.com/api/v0/program/${t.toString()}/latest?limit=${n}`,[r,o]=await Promise.all([fa(e,t),pa(i)]),A=(await o.json()).filter((e=>!e.aborted&&"Built"===e.state&&"Verified"===e.verified));if(0===A.length)return null;const s=A[0];return r.slot.toNumber()!==s.verified_slot?null:s},fetchData:fa,decodeUpgradeableLoaderState:Ia});Object.freeze({__proto__:null,sha256:$s,rpc:na,publicKey:oa,bytes:ua,token:da,features:Qs,registry:wa}),St.struct([St.publicKey("authority"),St.vecU8("data")]),new Map,new A.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),(Ca=ya||(ya={}))[Ca.EXACT_INPUT=0]="EXACT_INPUT",Ca[Ca.EXACT_OUTPUT=1]="EXACT_OUTPUT",function(e){e[e.ROUND_DOWN=0]="ROUND_DOWN",e[e.ROUND_HALF_UP=1]="ROUND_HALF_UP",e[e.ROUND_UP=2]="ROUND_UP"}(Ba||(Ba={}));var Ea,Qa,ba=b().BigInt("0xffffffffffffffffffffffffffffffff");function ka(e,t){for(var n=0;n0||W(!1),Ma.set({precision:e+1,rounding:Na[n]});var i=new Ma(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(e);return i.toFormat(i.decimalPlaces(),t)},t.toFixed=function(e,t,n){return void 0===t&&(t={groupSeparator:""}),void 0===n&&(n=Ba.ROUND_HALF_UP),Number.isInteger(e)||W(!1),e>=0||W(!1),Da.DP=e,Da.RM=Ta[n],new Da(this.numerator.toString()).div(this.denominator.toString()).toFormat(e,t)},va(e,[{key:"quotient",get:function(){return b().divide(this.numerator,this.denominator)}},{key:"remainder",get:function(){return new e(b().remainder(this.numerator,this.denominator),this.denominator)}},{key:"asFraction",get:function(){return new e(this.numerator,this.denominator)}}]),e}(),Oa=ps()(ds()),Fa=function(e){function t(t,n,i){var r;return r=e.call(this,n,i)||this,b().lessThanOrEqual(r.quotient,ba)||W(!1),r.currency=t,r.decimalScale=b().exponentiate(b().BigInt(10),b().BigInt(t.decimals)),r}Sa(t,e),t.fromRawAmount=function(e,n){return new t(e,n)},t.fromFractionalAmount=function(e,n,i){return new t(e,n,i)};var n=t.prototype;return n.add=function(n){this.currency.equals(n.currency)||W(!1);var i=e.prototype.add.call(this,n);return t.fromFractionalAmount(this.currency,i.numerator,i.denominator)},n.subtract=function(n){this.currency.equals(n.currency)||W(!1);var i=e.prototype.subtract.call(this,n);return t.fromFractionalAmount(this.currency,i.numerator,i.denominator)},n.multiply=function(n){var i=e.prototype.multiply.call(this,n);return t.fromFractionalAmount(this.currency,i.numerator,i.denominator)},n.divide=function(n){var i=e.prototype.divide.call(this,n);return t.fromFractionalAmount(this.currency,i.numerator,i.denominator)},n.toSignificant=function(t,n,i){return void 0===t&&(t=6),void 0===i&&(i=Ba.ROUND_DOWN),e.prototype.divide.call(this,this.decimalScale).toSignificant(t,n,i)},n.toFixed=function(t,n,i){return void 0===t&&(t=this.currency.decimals),void 0===i&&(i=Ba.ROUND_DOWN),t<=this.currency.decimals||W(!1),e.prototype.divide.call(this,this.decimalScale).toFixed(t,n,i)},n.toExact=function(e){return void 0===e&&(e={groupSeparator:""}),Oa.DP=this.currency.decimals,new Oa(this.quotient.toString()).div(this.decimalScale.toString()).toFormat(e)},va(t,[{key:"wrapped",get:function(){return this.currency.isToken?this:t.fromFractionalAmount(this.currency.wrapped,this.numerator,this.denominator)}}]),t}(Pa),Ra=function(e){function t(){for(var t,n,i,r,o,A=arguments.length,s=new Array(A),a=0;a=0&&t<255&&Number.isInteger(t)||W(!1),this.chainId=e,this.decimals=t,this.symbol=n,this.name=i},xa=function(e){function t(){var t;return(t=e.apply(this,arguments)||this).isNative=!0,t.isToken=!1,t}return Sa(t,e),t}(Ga),Ua=function(e){function t(t,n,i,r,o){var A;return(A=e.call(this,t,i,r,o)||this).isNative=!1,A.isToken=!0,A.address=n,A}Sa(t,e);var n=t.prototype;return n.equals=function(e){return e.isToken&&this.chainId===e.chainId&&this.address.equals(e.address)},n.sortsBefore=function(e){this.chainId!==e.chainId&&W(!1),this.address===e.address&&W(!1);var t=new(y())(this.address.toBuffer()),n=new(y())(e.address.toBuffer());return t.lt(n)},va(t,[{key:"wrapped",get:function(){return this}}]),t}(Ga),_a=new Ua(101,new A.PublicKey("So11111111111111111111111111111111111111112"),9,"wSOL","Wrapped SOL");(function(e){function t(t){return e.call(this,t,_a.decimals,_a.symbol,_a.name)||this}return Sa(t,e),t.onChain=function(e){var n;return null!=(n=this._solanaCache[e])?n:this._solanaCache[e]=new t(e)},t.prototype.equals=function(e){return e.isNative&&e.chainId===this.chainId},va(t,[{key:"wrapped",get:function(){return _a||W(!1),_a}}]),t}(xa))._solanaCache={},Number.MAX_SAFE_INTEGER;var La,Ka=i(55872).Buffer;function Ya(e,t){for(var n=0;n=e.MIN_TICK&&t<=e.MAX_TICK&&Number.isInteger(t)||W(!1);var n=t<0?-1*t:t,i=0!=(1&n)?b().BigInt("0xfffcb933bd6fb800"):b().BigInt("0x10000000000000000");return 0!=(2&n)&&(i=hc(i,"0xfff97272373d4000")),0!=(4&n)&&(i=hc(i,"0xfff2e50f5f657000")),0!=(8&n)&&(i=hc(i,"0xffe5caca7e10f000")),0!=(16&n)&&(i=hc(i,"0xffcb9843d60f7000")),0!=(32&n)&&(i=hc(i,"0xff973b41fa98e800")),0!=(64&n)&&(i=hc(i,"0xff2ea16466c9b000")),0!=(128&n)&&(i=hc(i,"0xfe5dee046a9a3800")),0!=(256&n)&&(i=hc(i,"0xfcbe86c7900bb000")),0!=(512&n)&&(i=hc(i,"0xf987a7253ac65800")),0!=(1024&n)&&(i=hc(i,"0xf3392b0822bb6000")),0!=(2048&n)&&(i=hc(i,"0xe7159475a2caf000")),0!=(4096&n)&&(i=hc(i,"0xd097f3bdfd2f2000")),0!=(8192&n)&&(i=hc(i,"0xa9f746462d9f8000")),0!=(16384&n)&&(i=hc(i,"0x70d869a156f31c00")),0!=(32768&n)&&(i=hc(i,"0x31be135f97ed3200")),0!=(65536&n)&&(i=hc(i,"0x9aa508b5b85a500")),0!=(131072&n)&&(i=hc(i,"0x5d6af8dedc582c")),t>0&&(i=b().divide(ba,i)),b().greaterThan(b().remainder(i,pc),Za)?b().add(b().divide(i,pc),za):b().divide(i,pc)},e.getTickAtSqrtRatio=function(t){b().greaterThanOrEqual(t,e.MIN_SQRT_RATIO)&&b().lessThan(t,e.MAX_SQRT_RATIO)||W(!1);var n,i=dc(new(y())(t.toString()));n=b().greaterThanOrEqual(b().BigInt(i),b().BigInt(32))?b().signedRightShift(t,b().BigInt(i-31)):b().leftShift(t,b().BigInt(31-i));for(var r=b().leftShift(b().subtract(b().BigInt(i),b().BigInt(32)),b().BigInt(16)),o=0;o<14;o++){n=b().signedRightShift(b().multiply(n,n),b().BigInt(31));var A=b().signedRightShift(n,b().BigInt(32));r=b().bitwiseOr(r,b().leftShift(A,b().BigInt(15-o))),n=b().signedRightShift(n,A)}var s=b().multiply(r,b().BigInt("908567298")),a=b().toNumber(b().signedRightShift(b().subtract(s,b().BigInt("42949672")),b().BigInt(32))),c=b().toNumber(b().signedRightShift(b().add(s,b().BigInt("3677218864")),b().BigInt(32)));return a===c?a:b().lessThanOrEqual(e.getSqrtRatioAtTick(c),t)?c:a},e}();fc.MIN_TICK=-221818,fc.MAX_TICK=-fc.MIN_TICK,fc.MIN_SQRT_RATIO=b().BigInt("65537"),fc.MAX_SQRT_RATIO=b().BigInt("281472331703918");var mc=function(){function e(){}var t=e.prototype;return t.getTickAddress=function(e){throw new Error("Method not implemented.")},t.getTick=function(t){throw new Error(e.ERROR_MESSAGE)},t.nextInitializedTickWithinOneWord=function(t,n,i){throw new Error(e.ERROR_MESSAGE)},e}();mc.ERROR_MESSAGE="No tick data provider was given";var Ic=new mc,yc=function(){function e(e,t,n,i,r,o,A){void 0===A&&(A=Ic),Number.isInteger(n)&&n<1e6||W(!1);var s=fc.getSqrtRatioAtTick(o),a=fc.getSqrtRatioAtTick(o+1);b().greaterThanOrEqual(i,s)&&b().lessThanOrEqual(i,a)||W(!1);var c=e.sortsBefore(t)?[e,t]:[t,e];this.token0=c[0],this.token1=c[1],this.fee=n,this.sqrtRatioX32=i,this.liquidity=r,this.tickCurrent=o,this.tickDataProvider=A}e.getAddress=function(e,t,n){return function(e){var t=e.factoryAddress,n=e.tokenA,i=e.tokenB,r=e.fee,o=n.sortsBefore(i)?[n,i]:[i,n],s=o[0],a=o[1],c=new A.PublicKey(s.address),u=new A.PublicKey(a.address);return A.PublicKey.findProgramAddress([tc,c.toBuffer(),u.toBuffer(),oc(r)],t).then((function(e){return e[0]}))}({factoryAddress:Wa,fee:n,tokenA:e,tokenB:t})};var t,n,i,r=e.prototype;return r.involvesToken=function(e){return e.equals(this.token0)||e.equals(this.token1)},r.priceOf=function(e){return this.involvesToken(e)||W(!1),e.equals(this.token0)?this.token0Price:this.token1Price},r.getOutputAmount=function(t,n){this.involvesToken(t.currency)||W(!1);var i=t.currency.equals(this.token0),r=this.swap(i,t.quotient,n),o=r.amountCalculated,A=r.sqrtRatioX32,s=r.liquidity,a=r.tickCurrent,c=r.accounts,u=i?this.token1:this.token0;return[Fa.fromRawAmount(u,b().multiply(o,qa)),new e(this.token0,this.token1,this.fee,A,s,a,this.tickDataProvider),c]},r.getInputAmount=function(t,n){t.currency.isToken&&this.involvesToken(t.currency)||W(!1);var i=t.currency.equals(this.token1),r=this.swap(i,b().multiply(t.quotient,qa),n),o=r.amountCalculated,A=r.sqrtRatioX32,s=r.liquidity,a=r.tickCurrent,c=i?this.token0:this.token1;return[Fa.fromRawAmount(c,o),new e(this.token0,this.token1,this.fee,A,s,a,this.tickDataProvider)]},r.swap=function(e,t,n){b().notEqual(t,Za)||W(!1),n||(n=e?b().add(fc.MIN_SQRT_RATIO,za):b().subtract(fc.MAX_SQRT_RATIO,za)),e?(b().greaterThan(n,fc.MIN_SQRT_RATIO)||W(!1),b().lessThan(n,this.sqrtRatioX32)||W(!1)):(b().lessThan(n,fc.MAX_SQRT_RATIO)||W(!1),b().greaterThan(n,this.sqrtRatioX32)||W(!1));for(var i,r=b().greaterThanOrEqual(t,Za),o={amountSpecifiedRemaining:t,amountCalculated:Za,sqrtPriceX32:this.sqrtRatioX32,tick:this.tickCurrent,accounts:[],liquidity:this.liquidity},A=0;b().notEqual(o.amountSpecifiedRemaining,Za)&&o.sqrtPriceX32!=n&&o.tickfc.MIN_TICK;){if(A>8)throw Error("account limit");var s={};s.sqrtPriceStartX32=o.sqrtPriceX32;var a=this.tickDataProvider.nextInitializedTickWithinOneWord(o.tick,e,this.tickSpacing);s.tickNext=a[0],s.initialized=a[1];var c=a[2],u=a[4];i!==c&&(o.accounts.push({pubkey:u,isWritable:!1,isSigner:!1}),i=c),s.tickNextfc.MAX_TICK&&(s.tickNext=fc.MAX_TICK),s.sqrtPriceNextX32=fc.getSqrtRatioAtTick(s.tickNext);var l=lc.computeSwapStep(o.sqrtPriceX32,(e?b().lessThan(s.sqrtPriceNextX32,n):b().greaterThan(s.sqrtPriceNextX32,n))?n:s.sqrtPriceNextX32,o.liquidity,o.amountSpecifiedRemaining,this.fee);if(o.sqrtPriceX32=l[0],s.amountIn=l[1],s.amountOut=l[2],s.feeAmount=l[3],r?(o.amountSpecifiedRemaining=b().subtract(o.amountSpecifiedRemaining,b().add(s.amountIn,s.feeAmount)),o.amountCalculated=b().subtract(o.amountCalculated,s.amountOut)):(o.amountSpecifiedRemaining=b().add(o.amountSpecifiedRemaining,s.amountOut),o.amountCalculated=b().add(o.amountCalculated,b().add(s.amountIn,s.feeAmount))),b().equal(o.sqrtPriceX32,s.sqrtPriceNextX32)){if(s.initialized){var g=this.tickDataProvider.getTick(s.tickNext);o.accounts.push({pubkey:g.address,isWritable:!0,isSigner:!1});var d=g.liquidityNet;e&&(d=b().multiply(d,qa)),o.liquidity=Ac.addDelta(o.liquidity,d)}o.tick=e?s.tickNext-1:s.tickNext}else o.sqrtPriceX32!=s.sqrtPriceStartX32&&(o.tick=fc.getTickAtSqrtRatio(o.sqrtPriceX32));++A}return{amountCalculated:o.amountCalculated,sqrtRatioX32:o.sqrtPriceX32,liquidity:o.liquidity,tickCurrent:o.tick,accounts:o.accounts}},t=e,(n=[{key:"token0Price",get:function(){var e;return null!=(e=this._token0Price)?e:this._token0Price=new Ra(this.token0,this.token1,Va,b().multiply(this.sqrtRatioX32,this.sqrtRatioX32))}},{key:"token1Price",get:function(){var e;return null!=(e=this._token1Price)?e:this._token1Price=new Ra(this.token1,this.token0,b().multiply(this.sqrtRatioX32,this.sqrtRatioX32),Va)}},{key:"chainId",get:function(){return this.token0.chainId}},{key:"tickSpacing",get:function(){return Ja[this.fee]}}])&&Ya(t.prototype,n),i&&Ya(t,i),Object.defineProperty(t,"prototype",{writable:!1}),e}();function Bc(e){return{wordPos:e>>8,bitPos:e%256&255}}!function(e){var t=function(e){var t,n=Object.prototype,i=n.hasOwnProperty,r="function"==typeof Symbol?Symbol:{},o=r.iterator||"@@iterator",A=r.asyncIterator||"@@asyncIterator",s=r.toStringTag||"@@toStringTag";function a(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{a({},"")}catch(e){a=function(e,t,n){return e[t]=n}}function c(e,t,n,i){var r=t&&t.prototype instanceof f?t:f,o=Object.create(r.prototype),A=new S(i||[]);return o._invoke=function(e,t,n){var i=l;return function(r,o){if(i===d)throw new Error("Generator is already running");if(i===h){if("throw"===r)throw o;return D()}for(n.method=r,n.arg=o;;){var A=n.delegate;if(A){var s=b(A,n);if(s){if(s===p)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if(i===l)throw i=h,n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i=d;var a=u(e,t,n);if("normal"===a.type){if(i=n.done?h:g,a.arg===p)continue;return{value:a.arg,done:n.done}}"throw"===a.type&&(i=h,n.method="throw",n.arg=a.arg)}}}(e,n,A),o}function u(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}e.wrap=c;var l="suspendedStart",g="suspendedYield",d="executing",h="completed",p={};function f(){}function m(){}function I(){}var y={};a(y,o,(function(){return this}));var B=Object.getPrototypeOf,C=B&&B(B(M([])));C&&C!==n&&i.call(C,o)&&(y=C);var w=I.prototype=f.prototype=Object.create(y);function E(e){["next","throw","return"].forEach((function(t){a(e,t,(function(e){return this._invoke(t,e)}))}))}function Q(e,t){function n(r,o,A,s){var a=u(e[r],e,o);if("throw"!==a.type){var c=a.arg,l=c.value;return l&&"object"==typeof l&&i.call(l,"__await")?t.resolve(l.__await).then((function(e){n("next",e,A,s)}),(function(e){n("throw",e,A,s)})):t.resolve(l).then((function(e){c.value=e,A(c)}),(function(e){return n("throw",e,A,s)}))}s(a.arg)}var r;this._invoke=function(e,i){function o(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(o,o):o()}}function b(e,n){var i=e.iterator[n.method];if(i===t){if(n.delegate=null,"throw"===n.method){if(e.iterator.return&&(n.method="return",n.arg=t,b(e,n),"throw"===n.method))return p;n.method="throw",n.arg=new TypeError("The iterator does not provide a 'throw' method")}return p}var r=u(i,e.iterator,n.arg);if("throw"===r.type)return n.method="throw",n.arg=r.arg,n.delegate=null,p;var o=r.arg;return o?o.done?(n[e.resultName]=o.value,n.next=e.nextLoc,"return"!==n.method&&(n.method="next",n.arg=t),n.delegate=null,p):o:(n.method="throw",n.arg=new TypeError("iterator result is not an object"),n.delegate=null,p)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function v(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function M(e){if(e){var n=e[o];if(n)return n.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var r=-1,A=function n(){for(;++r=0;--o){var A=this.tryEntries[o],s=A.completion;if("root"===A.tryLoc)return r("end");if(A.tryLoc<=this.prev){var a=i.call(A,"catchLoc"),c=i.call(A,"finallyLoc");if(a&&c){if(this.prev=0;--n){var r=this.tryEntries[n];if(r.tryLoc<=this.prev&&i.call(r,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),v(n),p}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var i=n.completion;if("throw"===i.type){var r=i.arg;v(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,n,i){return this.delegate={iterator:M(e),resultName:n,nextLoc:i},"next"===this.method&&(this.arg=t),p}},e}(e.exports);try{regeneratorRuntime=t}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=t:Function("r","regeneratorRuntime = r")(t)}}({exports:{}});var Cc=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,wc=Math.ceil,Ec=Math.floor,Qc="[BigNumber Error] ",bc=Qc+"Number primitive has more than 15 significant digits: ",kc=1e14,vc=14,Sc=9007199254740991,Mc=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],Dc=1e7,Nc=1e9;function Tc(e){var t=0|e;return e>0||e===t?t:t-1}function Pc(e){for(var t,n,i=1,r=e.length,o=e[0]+"";ic^n?1:-1;for(s=(a=r.length)<(c=o.length)?a:c,A=0;Ao[A]^n?1:-1;return a==c?0:a>c^n?1:-1}function Fc(e,t,n,i){if(en||e!==Ec(e))throw Error(Qc+(i||"Argument")+("number"==typeof e?en?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function Rc(e){var t=e.c.length-1;return Tc(e.e/vc)==t&&e.c[t]%2!=0}function Gc(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function xc(e,t,n){var i,r;if(t<0){for(r=n+".";++t;r+=n);e=r+e}else if(++t>(i=e.length)){for(r=n,t-=i;--t;r+=n);e+=r}else ty?g.c=g.e=null:e.e=10;a/=10,s++);return void(s>y?g.c=g.e=null:(g.e=s,g.c=[e]))}l=String(e)}else{if(!Cc.test(l=String(e)))return r(g,l,c);g.s=45==l.charCodeAt(0)?(l=l.slice(1),-1):1}(s=l.indexOf("."))>-1&&(l=l.replace(".","")),(a=l.search(/e/i))>0?(s<0&&(s=a),s+=+l.slice(a+1),l=l.substring(0,a)):s<0&&(s=l.length)}else{if(Fc(t,2,Q.length,"Base"),10==t&&b)return D(g=new k(e),h+g.e+1,p);if(l=String(e),c="number"==typeof e){if(0*e!=0)return r(g,l,c,t);if(g.s=1/e<0?(l=l.slice(1),-1):1,k.DEBUG&&l.replace(/^0\.0*|\./,"").length>15)throw Error(bc+e)}else g.s=45===l.charCodeAt(0)?(l=l.slice(1),-1):1;for(n=Q.slice(0,t),s=a=0,u=l.length;as){s=u;continue}}else if(!A&&(l==l.toUpperCase()&&(l=l.toLowerCase())||l==l.toLowerCase()&&(l=l.toUpperCase()))){A=!0,a=-1,s=0;continue}return r(g,String(e),c,t)}c=!1,(s=(l=i(l,t,10,g.s)).indexOf("."))>-1?l=l.replace(".",""):s=l.length}for(a=0;48===l.charCodeAt(a);a++);for(u=l.length;48===l.charCodeAt(--u););if(l=l.slice(a,++u)){if(u-=a,c&&k.DEBUG&&u>15&&(e>Sc||e!==Ec(e)))throw Error(bc+g.s*e);if((s=s-a-1)>y)g.c=g.e=null;else if(s=m)?Gc(a,A):xc(a,A,"0");else if(o=(e=D(new k(e),t,n)).e,s=(a=Pc(e.c)).length,1==i||2==i&&(t<=o||o<=f)){for(;ss){if(--t>0)for(a+=".";t--;a+="0");}else if((t+=o-s)>0)for(o+1==s&&(a+=".");t--;a+="0");return e.s<0&&r?"-"+a:a}function S(e,t){for(var n,i=1,r=new k(e[0]);i=10;r/=10,i++);return(n=i+n*vc-1)>y?e.c=e.e=null:n=10;s/=10,r++);if((o=t-r)<0)o+=vc,A=t,u=(a=l[c=0])/g[r-A-1]%10|0;else if((c=wc((o+1)/vc))>=l.length){if(!i)break e;for(;l.length<=c;l.push(0));a=u=0,r=1,A=(o%=vc)-vc+1}else{for(a=s=l[c],r=1;s>=10;s/=10,r++);u=(A=(o%=vc)-vc+r)<0?0:a/g[r-A-1]%10|0}if(i=i||t<0||null!=l[c+1]||(A<0?a:a%g[r-A-1]),i=n<4?(u||i)&&(0==n||n==(e.s<0?3:2)):u>5||5==u&&(4==n||i||6==n&&(o>0?A>0?a/g[r-A]:0:l[c-1])%10&1||n==(e.s<0?8:7)),t<1||!l[0])return l.length=0,i?(t-=e.e+1,l[0]=g[(vc-t%vc)%vc],e.e=-t||0):l[0]=e.e=0,e;if(0==o?(l.length=c,s=1,c--):(l.length=c+1,s=g[vc-o],l[c]=A>0?Ec(a/g[r-A]%g[A])*s:0),i)for(;;){if(0==c){for(o=1,A=l[0];A>=10;A/=10,o++);for(A=l[0]+=s,s=1;A>=10;A/=10,s++);o!=s&&(e.e++,l[0]==kc&&(l[0]=1));break}if(l[c]+=s,l[c]!=kc)break;l[c--]=0,s=1}for(o=l.length;0===l[--o];l.pop());}e.e>y?e.c=e.e=null:e.e=m?Gc(t,n):xc(t,n,"0"),e.s<0?"-"+t:t)}return k.clone=e,k.ROUND_UP=0,k.ROUND_DOWN=1,k.ROUND_CEIL=2,k.ROUND_FLOOR=3,k.ROUND_HALF_UP=4,k.ROUND_HALF_DOWN=5,k.ROUND_HALF_EVEN=6,k.ROUND_HALF_CEIL=7,k.ROUND_HALF_FLOOR=8,k.EUCLID=9,k.config=k.set=function(e){var t,n;if(null!=e){if("object"!=typeof e)throw Error(Qc+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(Fc(n=e[t],0,Nc,t),h=n),e.hasOwnProperty(t="ROUNDING_MODE")&&(Fc(n=e[t],0,8,t),p=n),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((n=e[t])&&n.pop?(Fc(n[0],-Nc,0,t),Fc(n[1],0,Nc,t),f=n[0],m=n[1]):(Fc(n,-Nc,Nc,t),f=-(m=n<0?-n:n))),e.hasOwnProperty(t="RANGE"))if((n=e[t])&&n.pop)Fc(n[0],-Nc,-1,t),Fc(n[1],1,Nc,t),I=n[0],y=n[1];else{if(Fc(n,-Nc,Nc,t),!n)throw Error(Qc+t+" cannot be zero: "+n);I=-(y=n<0?-n:n)}if(e.hasOwnProperty(t="CRYPTO")){if((n=e[t])!==!!n)throw Error(Qc+t+" not true or false: "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw B=!n,Error(Qc+"crypto unavailable");B=n}else B=n}if(e.hasOwnProperty(t="MODULO_MODE")&&(Fc(n=e[t],0,9,t),C=n),e.hasOwnProperty(t="POW_PRECISION")&&(Fc(n=e[t],0,Nc,t),w=n),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(n=e[t]))throw Error(Qc+t+" not an object: "+n);E=n}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(n=e[t])||/^.?$|[+\-.\s]|(.).*\1/.test(n))throw Error(Qc+t+" invalid: "+n);b="0123456789"==n.slice(0,10),Q=n}}return{DECIMAL_PLACES:h,ROUNDING_MODE:p,EXPONENTIAL_AT:[f,m],RANGE:[I,y],CRYPTO:B,MODULO_MODE:C,POW_PRECISION:w,FORMAT:E,ALPHABET:Q}},k.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!k.DEBUG)return!0;var t,n,i=e.c,r=e.e,o=e.s;e:if("[object Array]"=={}.toString.call(i)){if((1===o||-1===o)&&r>=-Nc&&r<=Nc&&r===Ec(r)){if(0===i[0]){if(0===r&&1===i.length)return!0;break e}if((t=(r+1)%vc)<1&&(t+=vc),String(i[0]).length==t){for(t=0;t=kc||n!==Ec(n))break e;if(0!==n)return!0}}}else if(null===i&&null===r&&(null===o||1===o||-1===o))return!0;throw Error(Qc+"Invalid BigNumber: "+e)},k.maximum=k.max=function(){return S(arguments,g.lt)},k.minimum=k.min=function(){return S(arguments,g.gt)},k.random=(o=9007199254740992,A=Math.random()*o&2097151?function(){return Ec(Math.random()*o)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,n,i,r,o,s=0,a=[],c=new k(d);if(null==e?e=h:Fc(e,0,Nc),r=wc(e/vc),B)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(r*=2));s>>11))>=9e15?(n=crypto.getRandomValues(new Uint32Array(2)),t[s]=n[0],t[s+1]=n[1]):(a.push(o%1e14),s+=2);s=r/2}else{if(!crypto.randomBytes)throw B=!1,Error(Qc+"crypto unavailable");for(t=crypto.randomBytes(r*=7);s=9e15?crypto.randomBytes(7).copy(t,s):(a.push(o%1e14),s+=7);s=r/7}if(!B)for(;s=10;o/=10,s++);sn-1&&(null==A[r+1]&&(A[r+1]=0),A[r+1]+=A[r]/n|0,A[r]%=n)}return A.reverse()}return function(i,r,o,A,s){var a,c,u,l,g,d,f,m,I=i.indexOf("."),y=h,B=p;for(I>=0&&(l=w,w=0,i=i.replace(".",""),d=(m=new k(r)).pow(i.length-I),w=l,m.c=t(xc(Pc(d.c),d.e,"0"),10,o,e),m.e=m.c.length),u=l=(f=t(i,r,o,s?(a=Q,e):(a=e,Q))).length;0==f[--l];f.pop());if(!f[0])return a.charAt(0);if(I<0?--u:(d.c=f,d.e=u,d.s=A,f=(d=n(d,m,y,B,o)).c,g=d.r,u=d.e),I=f[c=u+y+1],l=o/2,g=g||c<0||null!=f[c+1],g=B<4?(null!=I||g)&&(0==B||B==(d.s<0?3:2)):I>l||I==l&&(4==B||g||6==B&&1&f[c-1]||B==(d.s<0?8:7)),c<1||!f[0])i=g?xc(a.charAt(1),-y,a.charAt(0)):a.charAt(0);else{if(f.length=c,g)for(--o;++f[--c]>o;)f[c]=0,c||(++u,f=[1].concat(f));for(l=f.length;!f[--l];);for(I=0,i="";I<=l;i+=a.charAt(f[I++]));i=xc(i,u,a.charAt(0))}return i}}(),n=function(){function e(e,t,n){var i,r,o,A,s=0,a=e.length,c=t%Dc,u=t/Dc|0;for(e=e.slice();a--;)s=((r=c*(o=e[a]%Dc)+(i=u*o+(A=e[a]/Dc|0)*c)%Dc*Dc+s)/n|0)+(i/Dc|0)+u*A,e[a]=r%n;return s&&(e=[s].concat(e)),e}function t(e,t,n,i){var r,o;if(n!=i)o=n>i?1:-1;else for(r=o=0;rt[r]?1:-1;break}return o}function n(e,t,n,i){for(var r=0;n--;)e[n]-=r,r=e[n]1;e.splice(0,1));}return function(i,r,o,A,s){var a,c,u,l,g,d,h,p,f,m,I,y,B,C,w,E,Q,b=i.s==r.s?1:-1,v=i.c,S=r.c;if(!(v&&v[0]&&S&&S[0]))return new k(i.s&&r.s&&(v?!S||v[0]!=S[0]:S)?v&&0==v[0]||!S?0*b:b/0:NaN);for(f=(p=new k(b)).c=[],b=o+(c=i.e-r.e)+1,s||(s=kc,c=Tc(i.e/vc)-Tc(r.e/vc),b=b/vc|0),u=0;S[u]==(v[u]||0);u++);if(S[u]>(v[u]||0)&&c--,b<0)f.push(1),l=!0;else{for(C=v.length,E=S.length,u=0,b+=2,(g=Ec(s/(S[0]+1)))>1&&(S=e(S,g,s),v=e(v,g,s),E=S.length,C=v.length),B=E,I=(m=v.slice(0,E)).length;I=s/2&&w++;do{if(g=0,(a=t(S,m,E,I))<0){if(y=m[0],E!=I&&(y=y*s+(m[1]||0)),(g=Ec(y/w))>1)for(g>=s&&(g=s-1),h=(d=e(S,g,s)).length,I=m.length;1==t(d,m,h,I);)g--,n(d,E=10;b/=10,u++);D(p,o+(p.e=u+c*vc-1)+1,A,l)}else p.e=c,p.r=+l;return p}}(),s=/^(-?)0([xbo])(?=\w[\w.]*$)/i,a=/^([^.]+)\.$/,c=/^\.([^.]+)$/,u=/^-?(Infinity|NaN)$/,l=/^\s*\+(?=[\w.])|^\s+|\s+$/g,r=function(e,t,n,i){var r,o=n?t:t.replace(l,"");if(u.test(o))e.s=isNaN(o)?null:o<0?-1:1;else{if(!n&&(o=o.replace(s,(function(e,t,n){return r="x"==(n=n.toLowerCase())?16:"b"==n?2:8,i&&i!=r?e:t})),i&&(r=i,o=o.replace(a,"$1").replace(c,"0.$1")),t!=o))return new k(o,r);if(k.DEBUG)throw Error(Qc+"Not a"+(i?" base "+i:"")+" number: "+t);e.s=null}e.c=e.e=null},g.absoluteValue=g.abs=function(){var e=new k(this);return e.s<0&&(e.s=1),e},g.comparedTo=function(e,t){return Oc(this,new k(e,t))},g.decimalPlaces=g.dp=function(e,t){var n,i,r,o=this;if(null!=e)return Fc(e,0,Nc),null==t?t=p:Fc(t,0,8),D(new k(o),e+o.e+1,t);if(!(n=o.c))return null;if(i=((r=n.length-1)-Tc(this.e/vc))*vc,r=n[r])for(;r%10==0;r/=10,i--);return i<0&&(i=0),i},g.dividedBy=g.div=function(e,t){return n(this,new k(e,t),h,p)},g.dividedToIntegerBy=g.idiv=function(e,t){return n(this,new k(e,t),0,1)},g.exponentiatedBy=g.pow=function(e,t){var n,i,r,o,A,s,a,c,u=this;if((e=new k(e)).c&&!e.isInteger())throw Error(Qc+"Exponent not an integer: "+N(e));if(null!=t&&(t=new k(t)),A=e.e>14,!u.c||!u.c[0]||1==u.c[0]&&!u.e&&1==u.c.length||!e.c||!e.c[0])return c=new k(Math.pow(+N(u),A?2-Rc(e):+N(e))),t?c.mod(t):c;if(s=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new k(NaN);(i=!s&&u.isInteger()&&t.isInteger())&&(u=u.mod(t))}else{if(e.e>9&&(u.e>0||u.e<-1||(0==u.e?u.c[0]>1||A&&u.c[1]>=24e7:u.c[0]<8e13||A&&u.c[0]<=9999975e7)))return o=u.s<0&&Rc(e)?-0:0,u.e>-1&&(o=1/o),new k(s?1/o:o);w&&(o=wc(w/vc+2))}for(A?(n=new k(.5),s&&(e.s=1),a=Rc(e)):a=(r=Math.abs(+N(e)))%2,c=new k(d);;){if(a){if(!(c=c.times(u)).c)break;o?c.c.length>o&&(c.c.length=o):i&&(c=c.mod(t))}if(r){if(0===(r=Ec(r/2)))break;a=r%2}else if(D(e=e.times(n),e.e+1,1),e.e>14)a=Rc(e);else{if(0==(r=+N(e)))break;a=r%2}u=u.times(u),o?u.c&&u.c.length>o&&(u.c.length=o):i&&(u=u.mod(t))}return i?c:(s&&(c=d.div(c)),t?c.mod(t):o?D(c,w,p,void 0):c)},g.integerValue=function(e){var t=new k(this);return null==e?e=p:Fc(e,0,8),D(t,t.e+1,e)},g.isEqualTo=g.eq=function(e,t){return 0===Oc(this,new k(e,t))},g.isFinite=function(){return!!this.c},g.isGreaterThan=g.gt=function(e,t){return Oc(this,new k(e,t))>0},g.isGreaterThanOrEqualTo=g.gte=function(e,t){return 1===(t=Oc(this,new k(e,t)))||0===t},g.isInteger=function(){return!!this.c&&Tc(this.e/vc)>this.c.length-2},g.isLessThan=g.lt=function(e,t){return Oc(this,new k(e,t))<0},g.isLessThanOrEqualTo=g.lte=function(e,t){return-1===(t=Oc(this,new k(e,t)))||0===t},g.isNaN=function(){return!this.s},g.isNegative=function(){return this.s<0},g.isPositive=function(){return this.s>0},g.isZero=function(){return!!this.c&&0==this.c[0]},g.minus=function(e,t){var n,i,r,o,A=this,s=A.s;if(t=(e=new k(e,t)).s,!s||!t)return new k(NaN);if(s!=t)return e.s=-t,A.plus(e);var a=A.e/vc,c=e.e/vc,u=A.c,l=e.c;if(!a||!c){if(!u||!l)return u?(e.s=-t,e):new k(l?A:NaN);if(!u[0]||!l[0])return l[0]?(e.s=-t,e):new k(u[0]?A:3==p?-0:0)}if(a=Tc(a),c=Tc(c),u=u.slice(),s=a-c){for((o=s<0)?(s=-s,r=u):(c=a,r=l),r.reverse(),t=s;t--;r.push(0));r.reverse()}else for(i=(o=(s=u.length)<(t=l.length))?s:t,s=t=0;t0)for(;t--;u[n++]=0);for(t=99999999999999;i>s;){if(u[--i]=0;){for(n=0,g=y[r]%f,d=y[r]/f|0,o=r+(A=a);o>r;)n=((c=g*(c=I[--A]%f)+(s=d*c+(u=I[A]/f|0)*g)%f*f+h[o]+n)/p|0)+(s/f|0)+d*u,h[o--]=c%p;h[o]=n}return n?++i:h.splice(0,1),M(e,h,i)},g.negated=function(){var e=new k(this);return e.s=-e.s||null,e},g.plus=function(e,t){var n,i=this,r=i.s;if(t=(e=new k(e,t)).s,!r||!t)return new k(NaN);if(r!=t)return e.s=-t,i.minus(e);var o=i.e/vc,A=e.e/vc,s=i.c,a=e.c;if(!o||!A){if(!s||!a)return new k(r/0);if(!s[0]||!a[0])return a[0]?e:new k(s[0]?i:0*r)}if(o=Tc(o),A=Tc(A),s=s.slice(),r=o-A){for(r>0?(A=o,n=a):(r=-r,n=s),n.reverse();r--;n.push(0));n.reverse()}for((r=s.length)-(t=a.length)<0&&(n=a,a=s,s=n,t=r),r=0;t;)r=(s[--t]=s[t]+a[t]+r)/kc|0,s[t]=kc===s[t]?0:s[t]%kc;return r&&(s=[r].concat(s),++A),M(e,s,A)},g.precision=g.sd=function(e,t){var n,i,r,o=this;if(null!=e&&e!==!!e)return Fc(e,1,Nc),null==t?t=p:Fc(t,0,8),D(new k(o),e,t);if(!(n=o.c))return null;if(i=(r=n.length-1)*vc+1,r=n[r]){for(;r%10==0;r/=10,i--);for(r=n[0];r>=10;r/=10,i++);}return e&&o.e+1>i&&(i=o.e+1),i},g.shiftedBy=function(e){return Fc(e,-9007199254740991,Sc),this.times("1e"+e)},g.squareRoot=g.sqrt=function(){var e,t,i,r,o,A=this,s=A.c,a=A.s,c=A.e,u=h+4,l=new k("0.5");if(1!==a||!s||!s[0])return new k(!a||a<0&&(!s||s[0])?NaN:s?A:1/0);if(0==(a=Math.sqrt(+N(A)))||a==1/0?(((t=Pc(s)).length+c)%2==0&&(t+="0"),a=Math.sqrt(+t),c=Tc((c+1)/2)-(c<0||c%2),i=new k(t=a==1/0?"5e"+c:(t=a.toExponential()).slice(0,t.indexOf("e")+1)+c)):i=new k(a+""),i.c[0])for((a=(c=i.e)+u)<3&&(a=0);;)if(o=i,i=l.times(o.plus(n(A,o,u,1))),Pc(o.c).slice(0,a)===(t=Pc(i.c)).slice(0,a)){if(i.e0&&h>0){for(o=h%s||s,u=d.substr(0,o);o0&&(u+=c+d.slice(o)),g&&(u="-"+u)}i=l?u+(n.decimalSeparator||"")+((a=+n.fractionGroupSize)?l.replace(new RegExp("\\d{"+a+"}\\B","g"),"$&"+(n.fractionGroupSeparator||"")):l):u}return(n.prefix||"")+i+(n.suffix||"")},g.toFraction=function(e){var t,i,r,o,A,s,a,c,u,l,g,h,f=this,m=f.c;if(null!=e&&(!(a=new k(e)).isInteger()&&(a.c||1!==a.s)||a.lt(d)))throw Error(Qc+"Argument "+(a.isInteger()?"out of range: ":"not an integer: ")+N(a));if(!m)return new k(f);for(t=new k(d),u=i=new k(d),r=c=new k(d),h=Pc(m),A=t.e=h.length-f.e-1,t.c[0]=Mc[(s=A%vc)<0?vc+s:s],e=!e||a.comparedTo(t)>0?A>0?t:u:a,s=y,y=1/0,a=new k(h),c.c[0]=0;l=n(a,t,0,1),1!=(o=i.plus(l.times(r))).comparedTo(e);)i=r,r=o,u=c.plus(l.times(o=u)),c=o,t=a.minus(l.times(o=t)),a=o;return o=n(e.minus(i),r,0,1),c=c.plus(o.times(u)),i=i.plus(o.times(r)),c.s=u.s=f.s,g=n(u,r,A*=2,p).minus(f).abs().comparedTo(n(c,i,A,p).minus(f).abs())<1?[u,r]:[c,i],y=s,g},g.toNumber=function(){return+N(this)},g.toPrecision=function(e,t){return null!=e&&Fc(e,1,Nc),v(this,e,t,2)},g.toString=function(e){var t,n=this,r=n.s,o=n.e;return null===o?r?(t="Infinity",r<0&&(t="-"+t)):t="NaN":(null==e?t=o<=f||o>=m?Gc(Pc(n.c),o):xc(Pc(n.c),o,"0"):10===e&&b?t=xc(Pc((n=D(new k(n),h+o+1,p)).c),n.e,"0"):(Fc(e,2,Q.length,"Base"),t=i(xc(Pc(n.c),o,"0"),10,e,r,!0)),r<0&&n.c[0]&&(t="-"+t)),t},g.valueOf=g.toJSON=function(){return N(this)},g._isBigNumber=!0,g[Symbol.toStringTag]="BigNumber",g[Symbol.for("nodejs.util.inspect.custom")]=g.valueOf,null!=t&&k.set(t),k}();const _c=Uc;var Lc=i(43955),Kc={version:"0.1.0",name:"deltafi_dex_v2",instructions:[{name:"createMarketConfig",accounts:[{name:"seed",isMut:!1,isSigner:!0},{name:"marketConfig",isMut:!0,isSigner:!1},{name:"deltafiMint",isMut:!1,isSigner:!1},{name:"deltafiToken",isMut:!0,isSigner:!0},{name:"pythProgram",isMut:!1,isSigner:!1},{name:"serumProgram",isMut:!1,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"}]},{name:"createSwap",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"seed",isMut:!1,isSigner:!0},{name:"swapInfo",isMut:!0,isSigner:!1},{name:"mintBase",isMut:!1,isSigner:!1},{name:"mintQuote",isMut:!1,isSigner:!1},{name:"tokenBase",isMut:!0,isSigner:!0},{name:"tokenQuote",isMut:!0,isSigner:!0},{name:"adminFeeTokenBase",isMut:!1,isSigner:!1},{name:"adminFeeTokenQuote",isMut:!1,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"},{name:"swapType",type:{defined:"SwapType"}},{name:"swapConfig",type:{defined:"SwapConfig"}}]},{name:"updateSwapConfig",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0}],args:[{name:"swapConfig",type:{defined:"SwapConfig"}}]},{name:"updateFarmConfig",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"farmInfo",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0}],args:[{name:"farmConfig",type:{defined:"FarmConfig"}}]},{name:"initNormalSwap",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userTokenBase",isMut:!0,isSigner:!1},{name:"userTokenQuote",isMut:!0,isSigner:!1},{name:"liquidityProvider",isMut:!0,isSigner:!1},{name:"tokenBase",isMut:!0,isSigner:!1},{name:"tokenQuote",isMut:!0,isSigner:!1},{name:"pythPriceBase",isMut:!1,isSigner:!1},{name:"pythPriceQuote",isMut:!1,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"admin",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"baseAmount",type:"u64"},{name:"quoteAmount",type:"u64"}]},{name:"initStableSwap",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userTokenBase",isMut:!0,isSigner:!1},{name:"userTokenQuote",isMut:!0,isSigner:!1},{name:"liquidityProvider",isMut:!0,isSigner:!1},{name:"tokenBase",isMut:!0,isSigner:!1},{name:"tokenQuote",isMut:!0,isSigner:!1},{name:"pythPriceBase",isMut:!1,isSigner:!1},{name:"pythPriceQuote",isMut:!1,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"admin",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"baseAmount",type:"u64"},{name:"quoteAmount",type:"u64"}]},{name:"initSerumSwap",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userTokenBase",isMut:!0,isSigner:!1},{name:"userTokenQuote",isMut:!0,isSigner:!1},{name:"liquidityProvider",isMut:!0,isSigner:!1},{name:"tokenBase",isMut:!0,isSigner:!1},{name:"tokenQuote",isMut:!0,isSigner:!1},{name:"serumMarket",isMut:!1,isSigner:!1},{name:"serumBids",isMut:!1,isSigner:!1},{name:"serumAsks",isMut:!1,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"admin",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"baseAmount",type:"u64"},{name:"quoteAmount",type:"u64"}]},{name:"createLiquidityProviderV2",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!1,isSigner:!1},{name:"liquidityProvider",isMut:!0,isSigner:!1},{name:"owner",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"}]},{name:"depositToNormalSwap",accounts:[{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userTokenBase",isMut:!0,isSigner:!1},{name:"userTokenQuote",isMut:!0,isSigner:!1},{name:"liquidityProvider",isMut:!0,isSigner:!1},{name:"tokenBase",isMut:!0,isSigner:!1},{name:"tokenQuote",isMut:!0,isSigner:!1},{name:"pythPriceBase",isMut:!1,isSigner:!1},{name:"pythPriceQuote",isMut:!1,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"baseAmount",type:"u64"},{name:"quoteAmount",type:"u64"},{name:"minBaseShare",type:"u64"},{name:"minQuoteShare",type:"u64"}]},{name:"depositToStableSwap",accounts:[{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userTokenBase",isMut:!0,isSigner:!1},{name:"userTokenQuote",isMut:!0,isSigner:!1},{name:"liquidityProvider",isMut:!0,isSigner:!1},{name:"tokenBase",isMut:!0,isSigner:!1},{name:"tokenQuote",isMut:!0,isSigner:!1},{name:"pythPriceBase",isMut:!1,isSigner:!1},{name:"pythPriceQuote",isMut:!1,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"baseAmount",type:"u64"},{name:"quoteAmount",type:"u64"},{name:"minBaseShare",type:"u64"},{name:"minQuoteShare",type:"u64"}]},{name:"depositToSerumSwap",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userTokenBase",isMut:!0,isSigner:!1},{name:"userTokenQuote",isMut:!0,isSigner:!1},{name:"liquidityProvider",isMut:!0,isSigner:!1},{name:"tokenBase",isMut:!0,isSigner:!1},{name:"tokenQuote",isMut:!0,isSigner:!1},{name:"serumMarket",isMut:!1,isSigner:!1},{name:"serumBids",isMut:!1,isSigner:!1},{name:"serumAsks",isMut:!1,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"baseAmount",type:"u64"},{name:"quoteAmount",type:"u64"},{name:"minBaseShare",type:"u64"},{name:"minQuoteShare",type:"u64"}]},{name:"withdrawFromNormalSwap",accounts:[{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userTokenBase",isMut:!0,isSigner:!1},{name:"userTokenQuote",isMut:!0,isSigner:!1},{name:"liquidityProvider",isMut:!0,isSigner:!1},{name:"tokenBase",isMut:!0,isSigner:!1},{name:"tokenQuote",isMut:!0,isSigner:!1},{name:"pythPriceBase",isMut:!1,isSigner:!1},{name:"pythPriceQuote",isMut:!1,isSigner:!1},{name:"adminFeeTokenBase",isMut:!0,isSigner:!1},{name:"adminFeeTokenQuote",isMut:!0,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"baseShare",type:"u64"},{name:"quoteShare",type:"u64"},{name:"minBaseAmount",type:"u64"},{name:"minQuoteAmount",type:"u64"}]},{name:"withdrawFromStableSwap",accounts:[{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userTokenBase",isMut:!0,isSigner:!1},{name:"userTokenQuote",isMut:!0,isSigner:!1},{name:"liquidityProvider",isMut:!0,isSigner:!1},{name:"tokenBase",isMut:!0,isSigner:!1},{name:"tokenQuote",isMut:!0,isSigner:!1},{name:"pythPriceBase",isMut:!1,isSigner:!1},{name:"pythPriceQuote",isMut:!1,isSigner:!1},{name:"adminFeeTokenBase",isMut:!0,isSigner:!1},{name:"adminFeeTokenQuote",isMut:!0,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"baseShare",type:"u64"},{name:"quoteShare",type:"u64"},{name:"minBaseAmount",type:"u64"},{name:"minQuoteAmount",type:"u64"}]},{name:"withdrawFromSerumSwap",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userTokenBase",isMut:!0,isSigner:!1},{name:"userTokenQuote",isMut:!0,isSigner:!1},{name:"liquidityProvider",isMut:!0,isSigner:!1},{name:"tokenBase",isMut:!0,isSigner:!1},{name:"tokenQuote",isMut:!0,isSigner:!1},{name:"serumMarket",isMut:!1,isSigner:!1},{name:"serumBids",isMut:!1,isSigner:!1},{name:"serumAsks",isMut:!1,isSigner:!1},{name:"adminFeeTokenBase",isMut:!0,isSigner:!1},{name:"adminFeeTokenQuote",isMut:!0,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"baseShare",type:"u64"},{name:"quoteShare",type:"u64"},{name:"minBaseAmount",type:"u64"},{name:"minQuoteAmount",type:"u64"}]},{name:"normalSwap",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userSourceToken",isMut:!0,isSigner:!1},{name:"userDestinationToken",isMut:!0,isSigner:!1},{name:"swapSourceToken",isMut:!0,isSigner:!1},{name:"swapDestinationToken",isMut:!0,isSigner:!1},{name:"deltafiUser",isMut:!0,isSigner:!1},{name:"adminDestinationToken",isMut:!0,isSigner:!1},{name:"pythPriceBase",isMut:!1,isSigner:!1},{name:"pythPriceQuote",isMut:!1,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amountIn",type:"u64"},{name:"minAmountOut",type:"u64"}]},{name:"normalSwapWithReferrer",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userSourceToken",isMut:!0,isSigner:!1},{name:"userDestinationToken",isMut:!0,isSigner:!1},{name:"swapSourceToken",isMut:!0,isSigner:!1},{name:"swapDestinationToken",isMut:!0,isSigner:!1},{name:"deltafiUser",isMut:!0,isSigner:!1},{name:"referrer",isMut:!0,isSigner:!1},{name:"adminDestinationToken",isMut:!0,isSigner:!1},{name:"pythPriceBase",isMut:!1,isSigner:!1},{name:"pythPriceQuote",isMut:!1,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amountIn",type:"u64"},{name:"minAmountOut",type:"u64"}]},{name:"normalSwapWithRebate",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userSourceToken",isMut:!0,isSigner:!1},{name:"userDestinationToken",isMut:!0,isSigner:!1},{name:"swapSourceToken",isMut:!0,isSigner:!1},{name:"swapDestinationToken",isMut:!0,isSigner:!1},{name:"deltafiUser",isMut:!0,isSigner:!1},{name:"rebateToken",isMut:!0,isSigner:!1},{name:"adminDestinationToken",isMut:!0,isSigner:!1},{name:"pythPriceBase",isMut:!1,isSigner:!1},{name:"pythPriceQuote",isMut:!1,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amountIn",type:"u64"},{name:"minAmountOut",type:"u64"}]},{name:"stableSwap",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userSourceToken",isMut:!0,isSigner:!1},{name:"userDestinationToken",isMut:!0,isSigner:!1},{name:"swapSourceToken",isMut:!0,isSigner:!1},{name:"swapDestinationToken",isMut:!0,isSigner:!1},{name:"deltafiUser",isMut:!0,isSigner:!1},{name:"adminDestinationToken",isMut:!0,isSigner:!1},{name:"pythPriceBase",isMut:!1,isSigner:!1},{name:"pythPriceQuote",isMut:!1,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amountIn",type:"u64"},{name:"minAmountOut",type:"u64"}]},{name:"stableSwapWithReferrer",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userSourceToken",isMut:!0,isSigner:!1},{name:"userDestinationToken",isMut:!0,isSigner:!1},{name:"swapSourceToken",isMut:!0,isSigner:!1},{name:"swapDestinationToken",isMut:!0,isSigner:!1},{name:"deltafiUser",isMut:!0,isSigner:!1},{name:"referrer",isMut:!0,isSigner:!1},{name:"adminDestinationToken",isMut:!0,isSigner:!1},{name:"pythPriceBase",isMut:!1,isSigner:!1},{name:"pythPriceQuote",isMut:!1,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amountIn",type:"u64"},{name:"minAmountOut",type:"u64"}]},{name:"stableSwapWithRebate",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userSourceToken",isMut:!0,isSigner:!1},{name:"userDestinationToken",isMut:!0,isSigner:!1},{name:"swapSourceToken",isMut:!0,isSigner:!1},{name:"swapDestinationToken",isMut:!0,isSigner:!1},{name:"deltafiUser",isMut:!0,isSigner:!1},{name:"rebateToken",isMut:!0,isSigner:!1},{name:"adminDestinationToken",isMut:!0,isSigner:!1},{name:"pythPriceBase",isMut:!1,isSigner:!1},{name:"pythPriceQuote",isMut:!1,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amountIn",type:"u64"},{name:"minAmountOut",type:"u64"}]},{name:"serumSwap",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userSourceToken",isMut:!0,isSigner:!1},{name:"userDestinationToken",isMut:!0,isSigner:!1},{name:"swapSourceToken",isMut:!0,isSigner:!1},{name:"swapDestinationToken",isMut:!0,isSigner:!1},{name:"deltafiUser",isMut:!0,isSigner:!1},{name:"adminDestinationToken",isMut:!0,isSigner:!1},{name:"serumMarket",isMut:!1,isSigner:!1},{name:"serumBids",isMut:!1,isSigner:!1},{name:"serumAsks",isMut:!1,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amountIn",type:"u64"},{name:"minAmountOut",type:"u64"}]},{name:"serumSwapWithReferrer",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userSourceToken",isMut:!0,isSigner:!1},{name:"userDestinationToken",isMut:!0,isSigner:!1},{name:"swapSourceToken",isMut:!0,isSigner:!1},{name:"swapDestinationToken",isMut:!0,isSigner:!1},{name:"deltafiUser",isMut:!0,isSigner:!1},{name:"referrer",isMut:!0,isSigner:!1},{name:"adminDestinationToken",isMut:!0,isSigner:!1},{name:"serumMarket",isMut:!1,isSigner:!1},{name:"serumBids",isMut:!1,isSigner:!1},{name:"serumAsks",isMut:!1,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amountIn",type:"u64"},{name:"minAmountOut",type:"u64"}]},{name:"createFarm",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!1,isSigner:!1},{name:"farmInfo",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"},{name:"seed",type:"publicKey"},{name:"farmConfig",type:{defined:"FarmConfig"}}]},{name:"depositToFarm",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!1,isSigner:!1},{name:"farmInfo",isMut:!0,isSigner:!1},{name:"liquidityProvider",isMut:!0,isSigner:!1},{name:"farmUser",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0}],args:[{name:"baseAmount",type:"u64"},{name:"quoteAmount",type:"u64"}]},{name:"withdrawFromFarm",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!1,isSigner:!1},{name:"farmInfo",isMut:!0,isSigner:!1},{name:"liquidityProvider",isMut:!0,isSigner:!1},{name:"farmUser",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0}],args:[{name:"baseAmount",type:"u64"},{name:"quoteAmount",type:"u64"}]},{name:"claimFarmRewards",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!1,isSigner:!1},{name:"farmInfo",isMut:!1,isSigner:!1},{name:"farmUser",isMut:!0,isSigner:!1},{name:"userDeltafiToken",isMut:!0,isSigner:!1},{name:"swapDeltafiToken",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"createDeltafiUser",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"deltafiUser",isMut:!0,isSigner:!1},{name:"owner",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"}]},{name:"createDeltafiUserWithReferrer",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"deltafiUser",isMut:!0,isSigner:!1},{name:"referrer",isMut:!1,isSigner:!1},{name:"owner",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"}]},{name:"claimSwapRewards",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"deltafiUser",isMut:!0,isSigner:!1},{name:"userDeltafiToken",isMut:!0,isSigner:!1},{name:"swapDeltafiToken",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimTradeRewards",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"deltafiUser",isMut:!0,isSigner:!1},{name:"userDeltafiToken",isMut:!0,isSigner:!1},{name:"swapDeltafiToken",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimReferralRewards",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"deltafiUser",isMut:!0,isSigner:!1},{name:"userDeltafiToken",isMut:!0,isSigner:!1},{name:"swapDeltafiToken",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"createFarmUserV2",accounts:[{name:"marketConfig",isMut:!1,isSigner:!1},{name:"farmInfo",isMut:!1,isSigner:!1},{name:"farmUser",isMut:!0,isSigner:!1},{name:"owner",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"}]}],accounts:[{name:"DeltafiUser",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"configKey",type:"publicKey"},{name:"owner",type:"publicKey"},{name:"referrer",type:"publicKey"},{name:"owedTradeRewards",type:"u64"},{name:"claimedTradeRewards",type:"u64"},{name:"owedReferralRewards",type:"u64"},{name:"claimedReferralRewards",type:"u64"},{name:"reserved",type:{array:["u64",32]}}]}},{name:"FarmUser",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"configKey",type:"publicKey"},{name:"farmKey",type:"publicKey"},{name:"owner",type:"publicKey"},{name:"basePosition",type:{defined:"FarmPosition"}},{name:"quotePosition",type:{defined:"FarmPosition"}},{name:"reserved",type:{array:["u64",32]}}]}},{name:"FarmInfo",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"seed",type:"publicKey"},{name:"configKey",type:"publicKey"},{name:"swapKey",type:"publicKey"},{name:"stakedBaseShare",type:"u64"},{name:"stakedQuoteShare",type:"u64"},{name:"farmConfig",type:{defined:"FarmConfig"}},{name:"reserved",type:{array:["u64",32]}}]}},{name:"MarketConfig",type:{kind:"struct",fields:[{name:"version",type:"u8"},{name:"bump",type:"u8"},{name:"seed",type:"publicKey"},{name:"adminKey",type:"publicKey"},{name:"deltafiMint",type:"publicKey"},{name:"deltafiToken",type:"publicKey"},{name:"pythProgramId",type:"publicKey"},{name:"serumProgramId",type:"publicKey"},{name:"reservedU64",type:{array:["u64",32]}}]}},{name:"SwapInfo",type:{kind:"struct",fields:[{name:"isInitialized",type:"bool"},{name:"bump",type:"u8"},{name:"seed",type:"publicKey"},{name:"swapType",type:{defined:"SwapType"}},{name:"configKey",type:"publicKey"},{name:"mintBase",type:"publicKey"},{name:"mintQuote",type:"publicKey"},{name:"tokenBase",type:"publicKey"},{name:"tokenQuote",type:"publicKey"},{name:"adminFeeTokenBase",type:"publicKey"},{name:"adminFeeTokenQuote",type:"publicKey"},{name:"mintBaseDecimals",type:"u8"},{name:"mintQuoteDecimals",type:"u8"},{name:"pythPriceBase",type:"publicKey"},{name:"pythPriceQuote",type:"publicKey"},{name:"serumMarket",type:"publicKey"},{name:"serumBids",type:"publicKey"},{name:"serumAsks",type:"publicKey"},{name:"poolState",type:{defined:"PoolState"}},{name:"swapConfig",type:{defined:"SwapConfig"}},{name:"reservedU64",type:{array:["u64",24]}}]}},{name:"LiquidityProvider",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"configKey",type:"publicKey"},{name:"swapKey",type:"publicKey"},{name:"owner",type:"publicKey"},{name:"baseShare",type:"u64"},{name:"quoteShare",type:"u64"},{name:"stakedBaseShare",type:"u64"},{name:"stakedQuoteShare",type:"u64"},{name:"deprecatedU64",type:{array:["u64",10]}},{name:"reservedU64",type:{array:["u64",32]}}]}}],types:[{name:"PoolState",type:{kind:"struct",fields:[{name:"marketPrice",type:"u128"},{name:"baseReserve",type:"u64"},{name:"quoteReserve",type:"u64"},{name:"targetBaseReserve",type:"u128"},{name:"targetQuoteReserve",type:"u128"},{name:"baseSupply",type:"u64"},{name:"quoteSupply",type:"u64"},{name:"totalTradedBase",type:"u128"},{name:"totalTradedQuote",type:"u128"},{name:"accumulatedTradeReward",type:"u64"},{name:"lastUpdateTimestamp",type:"u64"},{name:"marketPriceLastUpdateSlot",type:"u64"},{name:"lowPrice",type:"u128"},{name:"highPrice",type:"u128"},{name:"currentDayTradedQuote",type:"u64"},{name:"lastDayTradedQuote",type:"u64"},{name:"currentWeekTradedQuote",type:"u64"},{name:"lastWeekTradedQuote",type:"u64"},{name:"reservedU64",type:{array:["u64",12]}}]}},{name:"FarmPosition",type:{kind:"struct",fields:[{name:"depositedAmount",type:"u64"},{name:"rewardsOwed",type:"u64"},{name:"cumulativeInterest",type:"u64"},{name:"lastUpdateTs",type:"i64"},{name:"nextClaimTs",type:"i64"},{name:"latestDepositSlot",type:"u64"}]}},{name:"FarmConfig",type:{kind:"struct",fields:[{name:"baseAprNumerator",type:"u64"},{name:"baseAprDenominator",type:"u64"},{name:"quoteAprNumerator",type:"u64"},{name:"quoteAprDenominator",type:"u64"},{name:"minClaimPeriod",type:"u32"},{name:"isPaused",type:"bool"},{name:"maxStakedBaseShare",type:"u64"},{name:"maxStakedQuoteShare",type:"u64"},{name:"endTimestamp",type:"u64"},{name:"reservedU64",type:{array:["u64",32]}}]}},{name:"SwapConfig",type:{kind:"struct",fields:[{name:"isPaused",type:"bool"},{name:"enableConfidenceInterval",type:"bool"},{name:"maxSwapPercentage",type:"u8"},{name:"minReserveLimitPercentage",type:"u8"},{name:"serumMarketTokenRatioLimitPercentage",type:"u8"},{name:"adminTradeFeeNumerator",type:"u32"},{name:"adminTradeFeeDenominator",type:"u32"},{name:"adminWithdrawFeeNumerator",type:"u32"},{name:"adminWithdrawFeeDenominator",type:"u32"},{name:"tradeFeeNumerator",type:"u32"},{name:"tradeFeeDenominator",type:"u32"},{name:"withdrawFeeNumerator",type:"u32"},{name:"withdrawFeeDenominator",type:"u32"},{name:"tradeRewardNumerator",type:"u32"},{name:"tradeRewardDenominator",type:"u32"},{name:"referralRewardNumerator",type:"u32"},{name:"referralRewardDenominator",type:"u32"},{name:"maxStablePriceDiffNumerator",type:"u32"},{name:"maxStablePriceDiffDenominator",type:"u32"},{name:"tradeRewardCap",type:"u64"},{name:"tradeRewardMaxReserve",type:"u64"},{name:"slope",type:"u128"},{name:"disableStablePriceDiffCheck",type:"bool"},{name:"disableQuoteTokenPriceCheck",type:"bool"},{name:"rebateNumerator",type:"u32"},{name:"rebateDenominator",type:"u32"},{name:"virtualReservePercentage",type:"u16"},{name:"reservedU8",type:{array:["u8",4]}},{name:"reservedU64",type:{array:["u64",14]}}]}},{name:"SwapDirection",type:{kind:"enum",variants:[{name:"SellBase"},{name:"SellQuote"}]}},{name:"SwapType",type:{kind:"enum",variants:[{name:"NormalSwap"},{name:"StableSwap"},{name:"SerumSwap"}]}}],errors:[{code:6e3,name:"AlreadyInUse",msg:"Swap account already in use"},{code:6001,name:"InvalidAdmin",msg:"Address of the admin fee account is incorrect"},{code:6002,name:"ActiveTransfer",msg:"Active admin transfer in progress"},{code:6003,name:"NoActiveTransfer",msg:"No active admin transfer in progress"},{code:6004,name:"AdminDeadlineExceeded",msg:"Admin transfer deadline exceeded"},{code:6005,name:"Unauthorized",msg:"Account is not authorized to execute this instruction"},{code:6006,name:"InvalidAccountOwner",msg:"Input account owner is not the program"},{code:6007,name:"InvalidOwner",msg:"Input account owner is not the program address"},{code:6008,name:"InvalidSigner",msg:"Input account must be signer"},{code:6009,name:"InvalidOutputOwner",msg:"Output pool account owner cannot be the program address"},{code:6010,name:"IncorrectSwapAccount",msg:"Address of the provided swap token account is incorrect"},{code:6011,name:"InvalidProgramAddress",msg:"Invalid program address generated from nonce and key"},{code:6012,name:"InvalidCloseAuthority",msg:"Token account has a close authority"},{code:6013,name:"InvalidFreezeAuthority",msg:"Pool token mint has a freeze authority"},{code:6014,name:"IncorrectTokenProgramId",msg:"Incorrect token program ID"},{code:6015,name:"IncorrectMint",msg:"Address of the provided token mint is incorrect"},{code:6016,name:"UnexpectedMint",msg:"Deserialized account is not an SPL Token mint"},{code:6017,name:"RepeatedMint",msg:"Swap input token accounts have the same mint"},{code:6018,name:"ExpectedAccount",msg:"Deserialized account is not an SPL Token account"},{code:6019,name:"InvalidInstruction",msg:"Invalid instruction"},{code:6020,name:"InstructionUnpackError",msg:"Instruction unpack is failed"},{code:6021,name:"EmptyPool",msg:"Pool token supply is 0"},{code:6022,name:"EmptySupply",msg:"Input token account empty"},{code:6023,name:"InvalidSupply",msg:"Pool token mint has a non-zero supply"},{code:6024,name:"InvalidDelegate",msg:"Token account has a delegate"},{code:6025,name:"InvalidInput",msg:"InvalidInput"},{code:6026,name:"IsPaused",msg:"Swap pool is paused"},{code:6027,name:"NotRentExempt",msg:"Lamport balance below rent-exempt threshold"},{code:6028,name:"CalculationFailure",msg:"CalculationFailure"},{code:6029,name:"ExceededSlippage",msg:"Swap instruction exceeds desired slippage limit"},{code:6030,name:"MismatchedDecimals",msg:"Token mints must have same decimals"},{code:6031,name:"InvalidPythConfig",msg:"Input pyth config is invalid"},{code:6032,name:"InsufficientLiquidity",msg:"Insufficient liquidity available"},{code:6033,name:"LiquidityPositionEmpty",msg:"User has no liquidity position"},{code:6034,name:"InvalidPositionKey",msg:"Invalid position key"},{code:6035,name:"InvalidClaimTime",msg:"Invalid claim timestamp"},{code:6036,name:"InsufficientClaimAmount",msg:"Insufficient claim amount"},{code:6037,name:"InsufficientFunds",msg:"Insufficient funds"},{code:6038,name:"WithdrawNotEnough",msg:"Withdraw not enough"},{code:6039,name:"TokenInitializeMintFailed",msg:"Mint initialization failed"},{code:6040,name:"InvalidSlope",msg:"Invalid slope"},{code:6041,name:"InvalidAccount",msg:"Invalid account"},{code:6042,name:"TokenTransferFailed",msg:"Token transfer failed"},{code:6043,name:"TokenMintToFailed",msg:"Token mint to failed"},{code:6044,name:"TokenBurnFailed",msg:"Token burn failed"},{code:6045,name:"InvalidPythPrice",msg:"Invalid pyth price"},{code:6046,name:"UnstablePythPrice",msg:"Unstable pyth price"},{code:6047,name:"InconfidentPythPrice",msg:"Pyth confidence interval is too large"},{code:6048,name:"IndexOutOfRange",msg:"Index of out rage"},{code:6049,name:"InvalidMarketConfig",msg:"Input market config is invalid"},{code:6050,name:"InvalidPythProgramId",msg:"Pyth program id is invalid"},{code:6051,name:"PotentialFlashLoanAttack",msg:"Potential Flash Loan Attack"},{code:6052,name:"IncorrectSwapType",msg:"Incorrect swap type"},{code:6053,name:"IncorrectStablePrice",msg:"Incorrect stable price"},{code:6054,name:"InvalidTokenDecimals",msg:"Invalid token decimals"},{code:6055,name:"InconsistentPoolState",msg:"Inconsistent pool state"},{code:6056,name:"InvalidReferrer",msg:"Invalid referrer address"},{code:6057,name:"InconsistentInitialPoolTokenBalance",msg:"Inconsistent initial pool token balance"},{code:6058,name:"ExceededSwapOutAmount",msg:"Swap out amount exceeds the limit"},{code:6059,name:"AlreadyInitialized",msg:"Already initialized"},{code:6060,name:"NotInitialized",msg:"Not initialized"},{code:6061,name:"InvalidSwapConfig",msg:"Invalid swap config"},{code:6062,name:"InvalidFarmConfig",msg:"Invalid farm config"},{code:6063,name:"InsufficientPoolReserve",msg:"Insufficient pool reserve"},{code:6064,name:"StableSwapPriceDiffLimitExceeded",msg:"stable swap price diff limit exceeded"},{code:6065,name:"InvalidTimestamp",msg:"Invalid timestamp"},{code:6066,name:"InvalidSerumData",msg:"InvalidSerumData"},{code:6067,name:"InvalidPythPriceAccount",msg:"Invalid pyth price account"},{code:6068,name:"InvalidSerumMarketTokenRatio",msg:"InvalidSerumMarketTokenRatio"},{code:6069,name:"DepeggedQuotePrice",msg:"DepeggedQuotePrice"},{code:6070,name:"InvalidWithdrawalAmount",msg:"Invalid withdrawal amount"},{code:6071,name:"InvalidStakingAmount",msg:"Invalid staking amount"},{code:6072,name:"RebateNotEnabled",msg:"Rebate not enabled"}]};new A.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),new _c("1e+18"),_c.clone({FORMAT:{decimalSeparator:".",groupSeparator:",",groupSize:3}});var Yc=i(62692),jc=i(53477);const Wc=e=>({decode:e.decode.bind(e),encode:e.encode.bind(e)});var Jc=i(55872).Buffer;const qc=e=>t=>{const n=(0,u.blob)(e,t),{encode:i,decode:r}=Wc(n),o=n;return o.decode=(e,t)=>{const n=r(e,t);return(0,jc.toBigIntLE)(Jc.from(n))},o.encode=(t,n,r)=>{const o=(0,jc.toBufferLE)(t,e);return i(o,n,r)},o},Zc=e=>t=>{const n=(0,u.blob)(e,t),{encode:i,decode:r}=Wc(n),o=n;return o.decode=(e,t)=>{const n=r(e,t);return(0,jc.toBigIntBE)(Jc.from(n))},o.encode=(t,n,r)=>{const o=(0,jc.toBufferBE)(t,e);return i(o,n,r)},o},zc=qc(8),Hc=(Zc(8),qc(16)),Vc=(Zc(16),qc(24),Zc(24),qc(32),Zc(32),new _c("1e+18"),e=>{const t=(0,u.u8)(e),{encode:n,decode:i}=Wc(t),r=t;return r.decode=(e,t)=>!!i(e,t),r.encode=(e,t,i)=>{const r=Number(e);return n(r,t,i)},r}),Xc=e=>{const t=(0,u.blob)(32,e),{encode:n,decode:i}=Wc(t),r=t;return r.decode=(e,t)=>{const n=i(e,t);return new A.PublicKey(n)},r.encode=(e,t,i)=>{const r=e.toBuffer();return n(r,t,i)},r};var $c;const eu="undefined"!=typeof window&&!(null===($c=window.process)||void 0===$c?void 0:$c.hasOwnProperty("type"));var tu=i(55872).Buffer;class nu{constructor(e,t,n){this.connection=e,this.wallet=t,this.opts=n}static defaultOptions(){return{preflightCommitment:"recent",commitment:"recent"}}static local(e,t){t=null!=t?t:nu.defaultOptions();const n=new A.Connection(null!=e?e:"http://localhost:8899",t.preflightCommitment),i=iu.local();return new nu(n,i,t)}static env(){if(eu)throw new Error("Provider env is not available on browser.");const e=i(14224).env.ANCHOR_PROVIDER_URL;if(void 0===e)throw new Error("ANCHOR_PROVIDER_URL is not defined");const t=nu.defaultOptions(),n=new A.Connection(e,t.commitment),r=iu.local();return new nu(n,r,t)}async send(e,t,n){void 0===t&&(t=[]),void 0===n&&(n=this.opts),e.feePayer=this.wallet.publicKey,e.recentBlockhash=(await this.connection.getRecentBlockhash(n.preflightCommitment)).blockhash,await this.wallet.signTransaction(e),t.filter((e=>void 0!==e)).forEach((t=>{e.partialSign(t)}));const i=e.serialize();return await(0,A.sendAndConfirmRawTransaction)(this.connection,i,n)}async sendAll(e,t){void 0===t&&(t=this.opts);const n=await this.connection.getRecentBlockhash(t.preflightCommitment);let i=e.map((e=>{let t=e.tx,i=e.signers;return void 0===i&&(i=[]),t.feePayer=this.wallet.publicKey,t.recentBlockhash=n.blockhash,i.filter((e=>void 0!==e)).forEach((e=>{t.partialSign(e)})),t}));const r=await this.wallet.signAllTransactions(i),o=[];for(let e=0;evoid 0!==e)).forEach((t=>{e.partialSign(t)})),await async function(e,t,n){t.recentBlockhash=await e._recentBlockhash(e._disableBlockhashCaching);const i=t.serializeMessage(),r=[t._serialize(i).toString("base64"),{encoding:"base64",commitment:n}],o=await e._rpcRequest("simulateTransaction",r);if(o.error)throw new Error("failed to simulate transaction: "+o.error.message);return o.result}(this.connection,e,null!==(o=null!==(r=n.commitment)&&void 0!==r?r:this.opts.commitment)&&void 0!==o?o:"recent")}}class iu{constructor(e){this.payer=e}static local(){const e=i(14224),t=A.Keypair.fromSecretKey(tu.from(JSON.parse(i(49563).readFileSync(e.env.ANCHOR_WALLET,{encoding:"utf-8"}))));return new iu(t)}async signTransaction(e){return e.partialSign(this.payer),e}async signAllTransactions(e){return e.map((e=>(e.partialSign(this.payer),e)))}get publicKey(){return this.payer.publicKey}}function ru(){return null===ou?nu.local():ou}let ou=null;class Au extends Error{constructor(e){super(e),this.name="IdlError"}}class su extends Error{constructor(e,t,...n){super(...n),this.code=e,this.msg=t}static parse(e,t){let n,i=e.toString().split("custom program error: ");if(2!==i.length)return null;try{n=parseInt(i[1])}catch(e){return null}let r=t.get(n);return void 0!==r?new su(n,r,n+": "+r):(r=au.get(n),void 0!==r?new su(n,r,n+": "+r):null)}toString(){return this.msg}}const au=new Map([[100,"8 byte instruction identifier not provided"],[101,"Fallback functions are not supported"],[102,"The program could not deserialize the given instruction"],[103,"The program could not serialize the given instruction"],[120,"The program was compiled without idl instructions"],[121,"The transaction was given an invalid program for the IDL instruction"],[140,"A mut constraint was violated"],[141,"A has_one constraint was violated"],[142,"A signer constraint was violated"],[143,"A raw constraint was violated"],[144,"An owner constraint was violated"],[145,"A rent exempt constraint was violated"],[146,"A seeds constraint was violated"],[147,"An executable constraint was violated"],[148,"A state constraint was violated"],[149,"An associated constraint was violated"],[150,"An associated init constraint was violated"],[151,"A close constraint was violated"],[152,"An address constraint was violated"],[160,"The account discriminator was already set on this account"],[161,"No 8 byte discriminator was found on the account"],[162,"8 byte discriminator did not match what was expected"],[163,"Failed to deserialize the account"],[164,"Failed to serialize the account"],[165,"Not enough account keys given to the instruction"],[166,"The given account is not mutable"],[167,"The given account is not owned by the executing program"],[168,"Program ID was not as expected"],[169,"Program account is not executable"],[180,"The given state account does not have the correct address"],[299,"The API being used is deprecated and should no longer be used"]]);class cu{static fieldLayout(e,t){const n=void 0!==e.name?kt()(e.name):void 0;switch(e.type){case"bool":return St.bool(n);case"u8":return St.u8(n);case"i8":return St.i8(n);case"u16":return St.u16(n);case"i16":return St.i16(n);case"u32":return St.u32(n);case"i32":return St.i32(n);case"u64":return St.u64(n);case"i64":return St.i64(n);case"u128":return St.u128(n);case"i128":return St.i128(n);case"bytes":return St.vecU8(n);case"string":return St.str(n);case"publicKey":return St.publicKey(n);default:if("vec"in e.type)return St.vec(cu.fieldLayout({name:void 0,type:e.type.vec},t),n);if("option"in e.type)return St.option(cu.fieldLayout({name:void 0,type:e.type.option},t),n);if("defined"in e.type){const i=e.type.defined;if(void 0===t)throw new Au("User defined types not provided");const r=t.filter((e=>e.name===i));if(1!==r.length)throw new Au(`Type not found: ${JSON.stringify(e)}`);return cu.typeDefLayout(r[0],t,n)}if("array"in e.type){let i=e.type.array[0],r=e.type.array[1],o=cu.fieldLayout({name:void 0,type:i},t);return St.array(o,r,n)}throw new Error(`Not yet implemented: ${e}`)}}static typeDefLayout(e,t=[],n){if("struct"===e.type.kind){const i=e.type.fields.map((e=>cu.fieldLayout(e,t)));return St.struct(i,n)}if("enum"===e.type.kind){let i=e.type.variants.map((e=>{const n=kt()(e.name);if(void 0===e.fields)return St.struct([],n);const i=e.fields.map((e=>{if(void 0===e.name)throw new Error("Tuple enum variants not yet implemented.");return cu.fieldLayout(e,t)}));return St.struct(i,n)}));return void 0!==n?St.rustEnum(i).replicate(n):St.rustEnum(i,n)}throw new Error(`Unknown type kint: ${e}`)}}var uu=i(30707),lu=i(55872).Buffer;function gu(e,t){if("enum"===t.type.kind){let n=t.type.variants.map((t=>void 0===t.fields?0:t.fields.map((t=>{if("object"!=typeof t||!("name"in t))throw new Error("Tuple enum variants not yet implemented.");return du(e,t.type)})).reduce(((e,t)=>e+t))));return Math.max(...n)+1}return void 0===t.type.fields?0:t.type.fields.map((t=>du(e,t.type))).reduce(((e,t)=>e+t),0)}function du(e,t){var n,i;switch(t){case"bool":case"u8":case"i8":case"bytes":case"string":return 1;case"i16":case"u16":return 2;case"u32":case"i32":return 4;case"u64":case"i64":return 8;case"u128":case"i128":return 16;case"publicKey":return 32;default:if("vec"in t)return 1;if("option"in t)return 1+du(e,t.option);if("defined"in t){const r=null!==(i=null===(n=e.types)||void 0===n?void 0:n.filter((e=>e.name===t.defined)))&&void 0!==i?i:[];if(1!==r.length)throw new Au(`Type not found: ${JSON.stringify(t)}`);return gu(e,r[0])}if("array"in t){let n=t.array[0],i=t.array[1];return du(e,n)*i}throw new Error(`Invalid type ${JSON.stringify(t)}`)}}function hu(e,t){let n=`${e}:${(0,uu.f)(t)}`;return lu.from(vt.sha256.digest(n)).slice(0,8)}var pu=i(55872).Buffer,fu=i(49500);const mu="state",Iu="global";class yu{constructor(e){this.idl=e,this.ixLayout=yu.parseIxLayout(e);const t=new Map;e.instructions.forEach((e=>{const n=hu(Iu,e.name);t.set(wt.encode(n),{layout:this.ixLayout.get(e.name),name:e.name})})),e.state&&e.state.methods.map((e=>{const n=hu(mu,e.name);t.set(wt.encode(n),{layout:this.ixLayout.get(e.name),name:e.name})})),this.sighashLayouts=t}encode(e,t){return this._encode(Iu,e,t)}encodeState(e,t){return this._encode(mu,e,t)}_encode(e,t,n){const i=pu.alloc(1e3),r=kt()(t),o=this.ixLayout.get(r);if(!o)throw new Error(`Unknown method: ${r}`);const A=o.encode(n,i),s=i.slice(0,A);return pu.concat([hu(e,t),s])}static parseIxLayout(e){const t=(e.state?e.state.methods:[]).map((t=>{let n=t.args.map((t=>{var n,i;return cu.fieldLayout(t,Array.from([...null!==(n=e.accounts)&&void 0!==n?n:[],...null!==(i=e.types)&&void 0!==i?i:[]]))}));const i=kt()(t.name);return[i,St.struct(n,i)]})).concat(e.instructions.map((t=>{let n=t.args.map((t=>{var n,i;return cu.fieldLayout(t,Array.from([...null!==(n=e.accounts)&&void 0!==n?n:[],...null!==(i=e.types)&&void 0!==i?i:[]]))}));const i=kt()(t.name);return[i,St.struct(n,i)]})));return new Map(t)}decode(e,t="hex"){"string"==typeof e&&(e="hex"===t?pu.from(e,"hex"):wt.decode(e));let n=wt.encode(e.slice(0,8)),i=e.slice(8);const r=this.sighashLayouts.get(n);return r?{data:r.layout.decode(i),name:r.name}:null}format(e,t){return Bu.format(e,t,this.idl)}}class Bu{static format(e,t,n){const i=n.instructions.filter((t=>e.name===t.name))[0];if(void 0===i)return fu.error("Invalid instruction given"),null;const r=i.args.map((t=>({name:t.name,type:Bu.formatIdlType(t.type),data:Bu.formatIdlData(t,e.data[t.name],n.types)}))),o=Bu.flattenIdlAccounts(i.accounts);return{args:r,accounts:t.map(((e,t)=>t`;if("option"in e)return`Option<${this.formatIdlType(e.option)}>`;if("defined"in e)return e.defined;if("array"in e)return`Array<${e.array[0]}; ${e.array[1]}>`;throw new Error(`Unknown IDL type: ${e}`)}static formatIdlData(e,t,n){if("string"==typeof e.type)return t.toString();if(e.type.vec)return"["+t.map((t=>this.formatIdlData({name:"",type:e.type.vec},t))).join(", ")+"]";if(e.type.option)return null===t?"null":this.formatIdlData({name:"",type:e.type.option},t);if(e.type.defined){if(void 0===n)throw new Error("User defined types not provided");const i=n.filter((t=>t.name===e.type.defined));if(1!==i.length)throw new Error(`Type not found: ${e.type.defined}`);return Bu.formatIdlDataDefined(i[0],t,n)}return"unknown"}static formatIdlDataDefined(e,t,n){if("struct"===e.type.kind){const i=e.type,r=Object.keys(t).map((e=>{const r=i.fields.filter((t=>t.name===e))[0];if(void 0===r)throw new Error("Unable to find type");return e+": "+Bu.formatIdlData(r,t[e],n)})).join(", ");return"{ "+r+" }"}if(0===e.type.variants.length)return"{}";if(e.type.variants[0].name){const i=e.type.variants,r=Object.keys(t)[0],o=t[r],A=Object.keys(o).map((e=>{var t;const A=o[e],s=null===(t=i[r])||void 0===t?void 0:t.filter((t=>t.name===e))[0];if(void 0===s)throw new Error("Unable to find variant");return e+": "+Bu.formatIdlData(s,A,n)})).join(", "),s=kt()(r,{pascalCase:!0});return 0===A.length?s:`${s} { ${A} }`}return"Tuple formatting not yet implemented"}static flattenIdlAccounts(e,t){return e.map((e=>{const n=function(e){const t=e.replace(/([A-Z])/g," $1");return t.charAt(0).toUpperCase()+t.slice(1)}(e.name);if(e.accounts){const i=t?`${t} > ${n}`:n;return Bu.flattenIdlAccounts(e.accounts,i)}return{...e,name:t?`${t} > ${n}`:n}})).flat()}}var Cu=i(55872).Buffer;class wu{constructor(e){if(void 0===e.accounts)return void(this.accountLayouts=new Map);const t=e.accounts.map((t=>[t.name,cu.typeDefLayout(t,e.types)]));this.accountLayouts=new Map(t)}async encode(e,t){const n=Cu.alloc(1e3),i=this.accountLayouts.get(e);if(!i)throw new Error(`Unknown account: ${e}`);const r=i.encode(t,n);let o=n.slice(0,r),A=wu.accountDiscriminator(e);return Cu.concat([A,o])}decode(e,t){const n=t.slice(8),i=this.accountLayouts.get(e);if(!i)throw new Error(`Unknown account: ${e}`);return i.decode(n)}static accountDiscriminator(e){return Cu.from(vt.sha256.digest(`account:${e}`)).slice(0,8)}}var Eu=i(55872).Buffer;class Qu{constructor(e){if(void 0===e.events)return void(this.layouts=new Map);const t=e.events.map((t=>{let n={name:t.name,type:{kind:"struct",fields:t.fields.map((e=>({name:e.name,type:e.type})))}};return[t.name,cu.typeDefLayout(n,e.types)]}));this.layouts=new Map(t),this.discriminators=new Map(void 0===e.events?[]:e.events.map((e=>{return[Qt.fromByteArray((t=e.name,Eu.from(vt.sha256.digest(`event:${t}`)).slice(0,8))),e.name];var t})))}decode(e){let t;try{t=Eu.from(Qt.toByteArray(e))}catch(e){return null}const n=Qt.fromByteArray(t.slice(0,8)),i=this.discriminators.get(n);if(void 0===i)return null;const r=this.layouts.get(i);if(!r)throw new Error(`Unknown event: ${i}`);return{data:r.decode(t.slice(8)),name:i}}}new Set(["anchor-deprecated-state"]);const bu=new Map;var ku=i(55872).Buffer;class vu{constructor(e){if(void 0===e.state)throw new Error("Idl state not defined.");this.layout=cu.typeDefLayout(e.state.struct,e.types)}async encode(e,t){const n=ku.alloc(1e3),i=this.layout.encode(t,n),r=await Su(e),o=n.slice(0,i);return ku.concat([r,o])}decode(e){const t=e.slice(8);return this.layout.decode(t)}}async function Su(e){let t=("anchor-deprecated-state",void 0!==bu.get("anchor-deprecated-state")?"account":"state");return ku.from(vt.sha256.digest(`${t}:${e}`)).slice(0,8)}class Mu{constructor(e){this.instruction=new yu(e),this.accounts=new wu(e),this.events=new Qu(e),e.state&&(this.state=new vu(e))}sighash(e,t){return hu(e,t)}}var Du=i(33859);i(55872).Buffer;const Nu=St.struct([St.publicKey("authority"),St.vecU8("data")]);function Tu(e){const t=new Map;return e.errors&&e.errors.forEach((e=>{var n;let i=null!==(n=e.msg)&&void 0!==n?n:e.name;t.set(e.code,i)})),t}function Pu(e,...t){if(e.args.length!=t.length)throw new Error("Invalid argument length");const n={};let i=0;return e.args.forEach((e=>{n[e.name]=t[i],i+=1})),n}function Ou(e,t={}){e.forEach((e=>{if("accounts"in e)Ou(e.accounts,t[e.name]);else if(void 0===t[e.name])throw new Error(`Invalid arguments: ${e.name} not provided.`)}))}function Fu(e){return"string"==typeof e?new A.PublicKey(e):e}var Ru=i(55872).Buffer;function Gu(e,t){let n=Ru.alloc(0);e.forEach((function(e){if(e.length>32)throw new TypeError("Max seed length exceeded");n=Ru.concat([n,Uu(e)])})),n=Ru.concat([n,t.toBuffer(),Ru.from("ProgramDerivedAddress")]);let i=(0,vt.sha256)(new Uint8Array(n)),r=new(y())(i,16).toArray(void 0,32);if(A.PublicKey.isOnCurve(new Uint8Array(r)))throw new Error("Invalid seeds, address must fall off the curve");return new A.PublicKey(r)}function xu(e,t){let n,i=255;for(;0!=i;){try{n=Gu(e.concat(Ru.from([i])),t)}catch(e){if(e instanceof TypeError)throw e;i--;continue}return[n,i]}throw new Error("Unable to find a viable program address nonce")}const Uu=e=>e instanceof Ru?e:e instanceof Uint8Array?Ru.from(e.buffer,e.byteOffset,e.byteLength):Ru.from(e);function _u(e,t){var n,i;let r={};const o=e.args?e.args.length:0;if(t.length>o){if(t.length!==o+1)throw new Error(`provided too many arguments ${t} to instruction ${null==e?void 0:e.name} expecting: ${null!==(i=null===(n=e.args)||void 0===n?void 0:n.map((e=>e.name)))&&void 0!==i?i:[]}`);r=t.pop()}return[t,r]}var Lu=i(49500);class Ku{static build(e,t,n){if("_inner"===e.name)throw new Au("the _inner name is reserved");const i=(...r)=>{const[o,s]=_u(e,[...r]);Ou(e.accounts,s.accounts);const a=i.accounts(s.accounts);return void 0!==s.remainingAccounts&&a.push(...s.remainingAccounts),s.__private&&s.__private.logAccounts&&Lu.log("Outgoing account metas:",a),new A.TransactionInstruction({keys:a,programId:n,data:t(e.name,Pu(e,...o))})};return i.accounts=t=>Ku.accountsArray(t,e.accounts),i}static accountsArray(e,t){return e?t.map((t=>{if(void 0!==("accounts"in t?t.accounts:void 0)){const n=e[t.name];return Ku.accountsArray(n,t.accounts).flat()}{const n=t;return{pubkey:Fu(e[t.name]),isWritable:n.isMut,isSigner:n.isSigner}}})).flat():[]}}var Yu=i(49500);class ju{static build(e,t,n,i){return async(...r)=>{const o=t(...r),[,A]=_u(e,[...r]);try{return await i.send(o,A.signers,A.options)}catch(e){Yu.log("Translating error",e);let t=su.parse(e,n);if(null===t)throw e;throw t}}}}class Wu{static build(e,t){return(...n)=>{var i;const[,r]=_u(e,[...n]),o=new A.Transaction;return null===(i=r.instructions)||void 0===i||i.forEach((e=>o.add(e))),o.add(t(...n)),o}}}var Ju=i(49500);class qu{static build(e,t,n,i){if(void 0!==e.state)return new Zu(e,n,i,t)}}class Zu{constructor(e,t,n=ru(),i=new Mu(e)){this.provider=n,this.coder=i,this._idl=e,this._programId=t,this._address=zu(t),this._sub=null;const[r,o,s]=(()=>{var r;let o={},s={},a={};return null===(r=e.state)||void 0===r||r.methods.forEach((r=>{const c=Ku.build(r,((e,t)=>i.instruction.encodeState(e,t)),t);c.accounts=e=>{const i=function(e,t,n,i){if("new"===n.name){const[n]=xu([],e);return[{pubkey:t.wallet.publicKey,isWritable:!1,isSigner:!0},{pubkey:zu(e),isWritable:!0,isSigner:!1},{pubkey:n,isWritable:!1,isSigner:!1},{pubkey:A.SystemProgram.programId,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!1,isSigner:!1}]}return Ou(n.accounts,i),[{pubkey:zu(e),isWritable:!0,isSigner:!1}]}(t,n,r,e);return i.concat(Ku.accountsArray(e,r.accounts))};const u=Wu.build(r,c),l=ju.build(r,u,Tu(e),n),g=kt()(r.name);o[g]=c,s[g]=u,a[g]=l})),[o,s,a]})();this.instruction=r,this.transaction=o,this.rpc=s}get programId(){return this._programId}async fetch(){const e=this.address(),t=await this.provider.connection.getAccountInfo(e);if(null===t)throw new Error(`Account does not exist ${e.toString()}`);const n=this._idl.state;if(!n)throw new Error("State is not specified in IDL.");if((await Su(n.struct.name)).compare(t.data.slice(0,8)))throw new Error("Invalid account discriminator");return this.coder.state.decode(t.data)}address(){return this._address}subscribe(e){if(null!==this._sub)return this._sub.ee;const t=new(Nt()),n=this.provider.connection.onAccountChange(this.address(),(e=>{const n=this.coder.state.decode(e.data);t.emit("change",n)}),e);return this._sub={ee:t,listener:n},t}unsubscribe(){null!==this._sub&&this.provider.connection.removeAccountChangeListener(this._sub.listener).then((async()=>{this._sub=null})).catch(Ju.error)}}function zu(e){let[t]=xu([],e);return function(e,t,n){const i=Ru.concat([e.toBuffer(),Ru.from("unversioned"),n.toBuffer()]),r=vt.sha256.digest(i);return new A.PublicKey(Ru.from(r))}(t,0,e)}var Hu=i(55872).Buffer;async function Vu(e,t){const n=[t.map((e=>e.toBase58())),{commitment:"recent"}],i=await e._rpcRequest("getMultipleAccounts",n);if(i.error)throw new Error("failed to get info about accounts "+t.map((e=>e.toBase58())).join(", ")+": "+i.error.message);Pt()(void 0!==i.result);const r=[];for(const e of i.result.value){let t=null;if(null!==e){if(i.result.value){const{executable:n,owner:i,lamports:r,data:o}=e;Pt()("base64"===o[1]),t={executable:n,owner:new A.PublicKey(i),lamports:r,data:Hu.from(o[0],"base64")}}if(null===t)throw new Error("Invalid response");r.push(t)}else r.push(null)}return r.map(((e,n)=>null===e?null:{publicKey:t[n],account:e}))}var Xu=i(55872).Buffer,$u=i(49500);class el{static build(e,t,n,i){var r;const o={};return null===(r=e.accounts)||void 0===r||r.forEach((r=>{const A=kt()(r.name);o[A]=new tl(e,r,n,i,t)})),o}}class tl{constructor(e,t,n,i,r){var o;this._idlAccount=t,this._programId=n,this._provider=null!=i?i:ru(),this._coder=null!=r?r:new Mu(e),this._size=8+(null!==(o=gu(e,t))&&void 0!==o?o:0)}get size(){return this._size}get programId(){return this._programId}get provider(){return this._provider}get coder(){return this._coder}async fetchNullable(e){const t=await this._provider.connection.getAccountInfo(Fu(e));if(null===t)return null;if(wu.accountDiscriminator(this._idlAccount.name).compare(t.data.slice(0,8)))throw new Error("Invalid account discriminator");return this._coder.accounts.decode(this._idlAccount.name,t.data)}async fetch(e){const t=await this.fetchNullable(e);if(null===t)throw new Error(`Account does not exist ${e.toString()}`);return t}async fetchMultiple(e){const t=await async function(e,t){if(t.length<=99)return await Vu(e,t);{const n=function(e,t){return Array.apply(0,new Array(Math.ceil(e.length/99))).map(((t,n)=>e.slice(99*n,99*(n+1))))}(t);return(await Promise.all(n.map((t=>Vu(e,t))))).flat()}}(this._provider.connection,e.map((e=>Fu(e)))),n=wu.accountDiscriminator(this._idlAccount.name);return t.map((e=>null==e||n.compare(null==e?void 0:e.account.data.slice(0,8))?null:this._coder.accounts.decode(this._idlAccount.name,null==e?void 0:e.account.data)))}async all(e){const t=wu.accountDiscriminator(this._idlAccount.name);return(await this._provider.connection.getProgramAccounts(this._programId,{commitment:this._provider.connection.commitment,filters:[{memcmp:{offset:0,bytes:wt.encode(e instanceof Xu?Xu.concat([t,e]):t)}},...Array.isArray(e)?e:[]]})).map((({pubkey:e,account:t})=>({publicKey:e,account:this._coder.accounts.decode(this._idlAccount.name,t.data)})))}subscribe(e,t){const n=nl.get(e.toString());if(n)return n.ee;const i=new(Nt());e=Fu(e);const r=this._provider.connection.onAccountChange(e,(e=>{const t=this._coder.accounts.decode(this._idlAccount.name,e.data);i.emit("change",t)}),t);return nl.set(e.toString(),{ee:i,listener:r}),i}async unsubscribe(e){let t=nl.get(e.toString());t?nl&&await this._provider.connection.removeAccountChangeListener(t.listener).then((()=>{nl.delete(e.toString())})).catch($u.error):$u.warn("Address is not subscribed")}async createInstruction(e,t){const n=this.size;return A.SystemProgram.createAccount({fromPubkey:this._provider.wallet.publicKey,newAccountPubkey:e.publicKey,space:null!=t?t:n,lamports:await this._provider.connection.getMinimumBalanceForRentExemption(null!=t?t:n),programId:this._programId})}async associated(...e){const t=await this.associatedAddress(...e);return await this.fetch(t)}async associatedAddress(...e){return await async function(e,...t){let n=[Ru.from([97,110,99,104,111,114])];t.forEach((e=>{n.push(void 0!==e.buffer?e:Fu(e).toBuffer())}));const[i]=await A.PublicKey.findProgramAddress(n,Fu(e));return i}(this._programId,...e)}}const nl=new Map;var il=i(49500);const rl="Program log: ".length;class ol{constructor(e,t,n){this._programId=e,this._provider=t,this._eventParser=new Al(e,n),this._eventCallbacks=new Map,this._eventListeners=new Map,this._listenerIdCount=0}addEventListener(e,t){var n;let i=this._listenerIdCount;return this._listenerIdCount+=1,e in this._eventCallbacks||this._eventListeners.set(e,[]),this._eventListeners.set(e,(null!==(n=this._eventListeners.get(e))&&void 0!==n?n:[]).concat(i)),this._eventCallbacks.set(i,[e,t]),void 0!==this._onLogsSubscriptionId||(this._onLogsSubscriptionId=this._provider.connection.onLogs(this._programId,((e,t)=>{e.err?il.error(e):this._eventParser.parseLogs(e.logs,(e=>{const n=this._eventListeners.get(e.name);n&&n.forEach((n=>{const i=this._eventCallbacks.get(n);if(i){const[,n]=i;n(e.data,t.slot)}}))}))}))),i}async removeEventListener(e){const t=this._eventCallbacks.get(e);if(!t)throw new Error(`Event listener ${e} doesn't exist!`);const[n]=t;let i=this._eventListeners.get(n);if(!i)throw new Error(`Event listeners don't exist for ${n}!`);this._eventCallbacks.delete(e),i=i.filter((t=>t!==e)),0===i.length&&this._eventListeners.delete(n),0==this._eventCallbacks.size&&(Tt.ok(0===this._eventListeners.size),void 0!==this._onLogsSubscriptionId&&(await this._provider.connection.removeOnLogsListener(this._onLogsSubscriptionId),this._onLogsSubscriptionId=void 0))}}class Al{constructor(e,t){this.coder=t,this.programId=e}parseLogs(e,t){const n=new al(e),i=new sl(n.next());let r=n.next();for(;null!==r;){let[e,o,A]=this.handleLog(i,r);e&&t(e),o&&i.push(o),A&&i.pop(),r=n.next()}}handleLog(e,t){return e.stack.length>0&&e.program()===this.programId.toString()?this.handleProgramLog(t):[null,...this.handleSystemLog(t)]}handleProgramLog(e){if(e.startsWith("Program log:")){const t=e.slice(rl);return[this.coder.events.decode(t),null,!1]}return[null,...this.handleSystemLog(e)]}handleSystemLog(e){const t=e.split(":")[0];return null!==t.match(/^Program (.*) success/g)?[null,!0]:t.startsWith(`Program ${this.programId.toString()} invoke`)?[this.programId.toString(),!1]:t.includes("invoke")?["cpi",!1]:[null,!1]}}class sl{constructor(e){var t;const n=null===(t=/^Program (.*) invoke.*$/g.exec(e))||void 0===t?void 0:t[1];if(!n)throw new Error("Could not find program invocation log line");this.stack=[n]}program(){return Tt.ok(this.stack.length>0),this.stack[this.stack.length-1]}push(e){this.stack.push(e)}pop(){Tt.ok(this.stack.length>0),this.stack.pop()}}class al{constructor(e){this.logs=e}next(){if(0===this.logs.length)return null;let e=this.logs[0];return this.logs=this.logs.slice(1),e}}var cl=i(49500);class ul{static build(e,t,n,i,r,o,A){return async(...s)=>{const a=t(...s),[,c]=_u(e,[...s]);let u;try{u=await i.simulate(a,c.signers,c.options)}catch(e){cl.log("Translating error",e);let t=su.parse(e,n);if(null===t)throw e;throw t}if(void 0===u)throw new Error("Unable to simulate transaction");if(u.value.err)throw new Error(`Simulate error: ${u.value.err.toString()}`);const l=u.value.logs;if(!l)throw new Error("Simulated logs not found");const g=[];return A.events&&new Al(o,r).parseLogs(l,(e=>{g.push(e)})),{events:g,raw:l}}}}class ll{static build(e,t,n,i){const r={},o={},A={},s={},a=Tu(e),c=qu.build(e,t,n,i);e.instructions.forEach((c=>{const u=Ku.build(c,((e,n)=>t.instruction.encode(e,n)),n),l=Wu.build(c,u),g=ju.build(c,l,a,i),d=ul.build(c,l,a,i,t,n,e),h=kt()(c.name);o[h]=u,A[h]=l,r[h]=g,s[h]=d}));const u=e.accounts?el.build(e,t,n,i):{};return[r,o,A,u,s,c]}}i(55872).Buffer,i(55872).Buffer;class gl{constructor(e,t,n){t=Fu(t),n||(n=ru()),this._idl=e,this._provider=n,this._programId=t,this._coder=new Mu(e),this._events=new ol(this._programId,n,this._coder);const[i,r,o,A,s,a]=ll.build(e,this._coder,t,n);this.rpc=i,this.instruction=r,this.transaction=o,this.account=A,this.simulate=s,this.state=a}get programId(){return this._programId}get idl(){return this._idl}get coder(){return this._coder}get provider(){return this._provider}static async at(e,t){const n=Fu(e),i=await gl.fetchIdl(n,t);if(!i)throw new Error(`IDL not found for program: ${e.toString()}`);return new gl(i,n,t)}static async fetchIdl(e,t){t=null!=t?t:ru();const n=Fu(e),r=await async function(e){const t=(await A.PublicKey.findProgramAddress([],e))[0];return await A.PublicKey.createWithSeed(t,"anchor:idl",e)}(n),o=await t.connection.getAccountInfo(r);if(!o)return null;let s=(a=o.data.slice(8),Nu.decode(a));var a;const c=(0,Mt.rr)(s.data);return JSON.parse(function(e){return("undefined"==typeof TextDecoder?new(i(93585).TextDecoder)("utf-8"):new TextDecoder("utf-8")).decode(e)}(c))}addEventListener(e,t){return this._events.addEventListener(e,t)}async removeEventListener(e){return await this._events.removeEventListener(e)}}var dl=i(49500);let hl=!1;var pl,fl;new Proxy({},{get(e,t){if(eu)return void dl.log("Workspaces aren't available in the browser");const n=i(49563),r=i(14224);if(!hl){const t=i(62005);let o=r.cwd();for(;!n.existsSync(t.join(o,"Anchor.toml"));){const e=t.dirname(o);e===o&&(o=void 0),o=e}if(void 0===o)throw new Error("Could not find workspace root.");const s=`${o}/target/idl`;if(!n.existsSync(s))throw new Error(`${s} doesn't exist. Did you use "anchor build"?`);const a=new Map;n.readdirSync(s).forEach((t=>{const i=`${s}/${t}`,r=n.readFileSync(i),o=JSON.parse(r);a.set(o.name,o);const c=kt()(o.name,{pascalCase:!0});o.metadata&&o.metadata.address&&(e[c]=new gl(o,new A.PublicKey(o.metadata.address)))}));const c=Du.parse(n.readFileSync(t.join(o,"Anchor.toml"),"utf-8")),u=c.provider.cluster;c.programs&&c.programs[u]&&function(e,t,n){Object.keys(t).forEach((r=>{const o=kt()(r,{pascalCase:!0}),s=t[r],a=new A.PublicKey("string"==typeof s?s:s.address);let c=n.get(r);if("string"!=typeof s&&s.idl&&(c=JSON.parse(i(49563).readFileSync(s.idl,"utf-8"))),!c)throw new Error(`Error loading workspace IDL for ${r}`);e[o]=new gl(c,a)}))}(e,c.programs[u],a),hl=!0}return e[t]}}),new A.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),new A.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"),(fl=pl||(pl={}))[fl.InitializeMint=0]="InitializeMint",fl[fl.InitializeAccount=1]="InitializeAccount",fl[fl.InitializeMultisig=2]="InitializeMultisig",fl[fl.Transfer=3]="Transfer",fl[fl.Approve=4]="Approve",fl[fl.Revoke=5]="Revoke",fl[fl.SetAuthority=6]="SetAuthority",fl[fl.MintTo=7]="MintTo",fl[fl.Burn=8]="Burn",fl[fl.CloseAccount=9]="CloseAccount",fl[fl.FreezeAccount=10]="FreezeAccount",fl[fl.ThawAccount=11]="ThawAccount",fl[fl.TransferChecked=12]="TransferChecked",fl[fl.ApproveChecked=13]="ApproveChecked",fl[fl.MintToChecked=14]="MintToChecked",fl[fl.BurnChecked=15]="BurnChecked",fl[fl.InitializeAccount2=16]="InitializeAccount2",fl[fl.SyncNative=17]="SyncNative",fl[fl.InitializeAccount3=18]="InitializeAccount3",fl[fl.InitializeMultisig2=19]="InitializeMultisig2",fl[fl.InitializeMint2=20]="InitializeMint2";const ml=new A.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),Il=new A.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");new A.PublicKey("So11111111111111111111111111111111111111112");class yl extends Error{constructor(e){super(e)}}class Bl extends yl{constructor(){super(...arguments),this.name="TokenAccountNotFoundError"}}class Cl extends yl{constructor(){super(...arguments),this.name="TokenInvalidAccountOwnerError"}}class wl extends yl{constructor(){super(...arguments),this.name="TokenInvalidAccountSizeError"}}var El,Ql;i(55872).Buffer,(0,u.struct)([(0,u.u8)("instruction"),(0,u.u8)("decimals"),Xc("mintAuthority"),(0,u.u8)("freezeAuthorityOption"),Xc("freezeAuthority")]),i(55872).Buffer,(0,u.struct)([(0,u.u8)("instruction")]),i(55872).Buffer,(0,u.struct)([(0,u.u8)("instruction"),(0,u.u8)("m")]),i(55872).Buffer,(0,u.struct)([(0,u.u8)("instruction"),zc("amount")]),i(55872).Buffer,(0,u.struct)([(0,u.u8)("instruction"),zc("amount")]),i(55872).Buffer,(0,u.struct)([(0,u.u8)("instruction")]),i(55872).Buffer,function(e){e[e.MintTokens=0]="MintTokens",e[e.FreezeAccount=1]="FreezeAccount",e[e.AccountOwner=2]="AccountOwner",e[e.CloseAccount=3]="CloseAccount"}(El||(El={})),(0,u.struct)([(0,u.u8)("instruction"),(0,u.u8)("authorityType"),(0,u.u8)("newAuthorityOption"),Xc("newAuthority")]),i(55872).Buffer,(0,u.struct)([(0,u.u8)("instruction"),zc("amount")]),i(55872).Buffer,(0,u.struct)([(0,u.u8)("instruction"),zc("amount")]),i(55872).Buffer,(0,u.struct)([(0,u.u8)("instruction")]),i(55872).Buffer,(0,u.struct)([(0,u.u8)("instruction")]),i(55872).Buffer,(0,u.struct)([(0,u.u8)("instruction")]),i(55872).Buffer,(0,u.struct)([(0,u.u8)("instruction"),zc("amount"),(0,u.u8)("decimals")]),i(55872).Buffer,(0,u.struct)([(0,u.u8)("instruction"),zc("amount"),(0,u.u8)("decimals")]),i(55872).Buffer,(0,u.struct)([(0,u.u8)("instruction"),zc("amount"),(0,u.u8)("decimals")]),i(55872).Buffer,(0,u.struct)([(0,u.u8)("instruction"),zc("amount"),(0,u.u8)("decimals")]),i(55872).Buffer,(0,u.struct)([(0,u.u8)("instruction")]),i(55872).Buffer,function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initialized=1]="Initialized",e[e.Frozen=2]="Frozen"}(Ql||(Ql={}));const bl=(0,u.struct)([Xc("mint"),Xc("owner"),zc("amount"),(0,u.u32)("delegateOption"),Xc("delegate"),(0,u.u8)("state"),(0,u.u32)("isNativeOption"),zc("isNative"),zc("delegatedAmount"),(0,u.u32)("closeAuthorityOption"),Xc("closeAuthority")]),kl=bl.span;(0,u.struct)([(0,u.u32)("mintAuthorityOption"),Xc("mintAuthority"),zc("supply"),(0,u.u8)("decimals"),Vc("isInitialized"),(0,u.u32)("freezeAuthorityOption"),Xc("freezeAuthority")]).span;(0,u.struct)([(0,u.u8)("m"),(0,u.u8)("n"),Vc("isInitialized"),Xc("signer1"),Xc("signer2"),Xc("signer3"),Xc("signer4"),Xc("signer5"),Xc("signer6"),Xc("signer7"),Xc("signer8"),Xc("signer9"),Xc("signer10"),Xc("signer11")]).span;var vl=i(49500),Sl=i(55872).Buffer,Ml=Object.defineProperty,Dl=(e,t)=>{for(var n in t)Ml(e,n,{get:t[n],enumerable:!0})};if(400!=u.struct([u.blob(8,"sighash"),u.blob(32,"seed"),u.u8("bump"),Xc("admin"),u.u8("suspended"),u.u8("decimals"),Xc("mint"),u.blob(5,"padding"),zc("dailyReward"),zc("totalStakingShare"),zc("stakingBalance"),zc("lastDistributionTime"),u.u16("withdrawFee"),u.blob(254,"padding")]).span)throw new Error("CONTROLLER LAYOUT SIZE MISMATCH");if(320!=u.struct([u.blob(8,"sighash"),Xc("mint"),u.u8("bump"),u.blob(7),zc("share"),zc("ptMinted"),zc("amountDeposited"),u.blob(248,"padding")]).span)throw new Error("LIQUIDITY_ACCOUNT LAYOUT SIZE MISMATCH");var Nl=u.struct([Xc("address"),Vc("inverse")]),Tl=u.struct([u.seq(Nl,4,"elements"),u.blob(4,"padding"),zc("n"),u.blob(64)]),Pl=u.struct([u.blob(8,"sighash"),Xc("controller"),u.seq(Xc("mint"),2,"mints"),u.blob(8),u.seq(Tl,5,"oracles"),zc("nOracle"),u.u8("A"),u.seq(u.u8(),2,"feeRates"),u.blob(5),zc("maxDelay"),zc("confidence"),Xc("balancer"),u.u16("excessiveConfiscateRate"),Xc("feeCollector"),u.seq(u.u16(),2,"platformFeeRate"),u.blob(18),u.seq(Hc("volumes"),2,"volumes"),u.blob(80),Vc("enableRebalanceSwap"),u.blob(151,"padding")]);if(1536!=Pl.span)throw new Error("PAIR LAYOUT SIZE MISMATCH");var Ol=u.struct([u.blob(8,"sighash"),Xc("controller"),Xc("mint"),u.u8("decimals"),u.u8("bump"),u.u8("ptBump"),Vc("suspended"),Xc("cranker"),u.blob(4),zc("weight"),u.blob(8),zc("swappedLiabilityNative"),zc("totalShare"),u.blob(256,"padding")]);if(400!=Ol.span)throw new Error(`SSL LAYOUT SIZE MISMATCH", ${Ol.span}, ${Ol.span-8}`);if(320!=u.struct([u.blob(8,"sighash"),Xc("controller"),u.u8("bump"),u.blob(7),zc("share"),zc("amountStaked"),u.blob(256,"padding")]).span)throw new Error("STAKING_ACCOUNT LAYOUT SIZE MISMATCH");new A.PublicKey("8KJx48PYGHVC9fxzRRtYp4x4CM2HyYCm2EjVuAP4vvrx");var Fl=new A.PublicKey("7WduLbRfYhTJktjLw5FDEyrqoEv61aTTCuGAetgLjzN5"),Rl=new A.PublicKey("8CxKnuJeoeQXFwiG6XiGY2akBjvJA5k3bE52BfnuEmNQ");Dl((new A.PublicKey("3Gwyhoudx8XgYry8dzKQ2GGsofkUdm7VZUvddHxchL3x"),new A.PublicKey("JYe7AcuQ7CqhkGvchJGvSKF8ei41FuDKb1h47qkbFNf"),new A.PublicKey("ApkmzBaTPUAeVj3QuqDcz6iLE6xZSLd29nke4McqrKw5"),{}),{accounts:()=>_l,default:()=>Kl,errors:()=>Ll,instructions:()=>Ul,name:()=>xl,version:()=>Gl});var Gl="0.1.0",xl="contract",Ul=[{name:"createLiquidityAccount",accounts:[{name:"controller",isMut:!1,isSigner:!1},{name:"ssl",isMut:!0,isSigner:!1},{name:"liquidityAccount",isMut:!0,isSigner:!1},{name:"userWallet",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]},{name:"deposit",accounts:[{name:"controller",isMut:!1,isSigner:!1},{name:"ssl",isMut:!0,isSigner:!1},{name:"liquidityAccount",isMut:!0,isSigner:!1},{name:"rtVault",isMut:!0,isSigner:!1},{name:"userRtAta",isMut:!0,isSigner:!1},{name:"userWallet",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdraw",accounts:[{name:"controller",isMut:!1,isSigner:!1},{name:"ssl",isMut:!0,isSigner:!1},{name:"liquidityAccount",isMut:!0,isSigner:!1},{name:"rtVault",isMut:!0,isSigner:!1},{name:"userRtAta",isMut:!0,isSigner:!1},{name:"userWallet",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"withdrawPercent",type:"u64"}]},{name:"mintPt",accounts:[{name:"controller",isMut:!1,isSigner:!1},{name:"ssl",isMut:!0,isSigner:!1},{name:"rtVault",isMut:!0,isSigner:!1},{name:"liquidityAccount",isMut:!0,isSigner:!1},{name:"ptMint",isMut:!0,isSigner:!1},{name:"userPtAta",isMut:!0,isSigner:!1},{name:"userWallet",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amountToMint",type:"u64"}]},{name:"burnPt",accounts:[{name:"controller",isMut:!1,isSigner:!1},{name:"ssl",isMut:!0,isSigner:!1},{name:"liquidityAccount",isMut:!0,isSigner:!1},{name:"ptMint",isMut:!0,isSigner:!1},{name:"userPtAta",isMut:!0,isSigner:!1},{name:"userWallet",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amountToBurn",type:"u64"}]},{name:"swap",accounts:[{name:"controller",isMut:!1,isSigner:!1},{name:"pair",isMut:!0,isSigner:!1},{name:"sslIn",isMut:!0,isSigner:!1},{name:"sslOut",isMut:!0,isSigner:!1},{name:"liabilityVaultIn",isMut:!0,isSigner:!1},{name:"swappedLiabilityVaultIn",isMut:!0,isSigner:!1},{name:"liabilityVaultOut",isMut:!0,isSigner:!1},{name:"swappedLiabilityVaultOut",isMut:!0,isSigner:!1},{name:"userInAta",isMut:!0,isSigner:!1},{name:"userOutAta",isMut:!0,isSigner:!1},{name:"feeCollectorAta",isMut:!0,isSigner:!1},{name:"userWallet",isMut:!1,isSigner:!0},{name:"feeCollector",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amountIn",type:"u64"},{name:"minOut",type:"u64"}]}],_l=[],Ll=[{code:6e3,name:"Suspended",msg:"[G100] The pool is suspended"},{code:6001,name:"NotAdmin",msg:"[G101] Not admin"},{code:6002,name:"MintsNotSorted",msg:"[G102] Mints are not sorted"},{code:6003,name:"WrongRTMint",msg:"[G103] The risk token mint is wrong"},{code:6004,name:"OracleNotPresent",msg:"[G104] The required oracle is not present"},{code:6005,name:"OracleNotHealthyStatus",msg:"[G105] The oracle is not in a healthy state (status)"},{code:6006,name:"OracleNotHealthyDelay",msg:"[G106] The oracle is not in a healthy state (delay)"},{code:6007,name:"OracleNotHealthyConfidence",msg:"[G107] The oracle is not in a healthy state (confidence)"},{code:6008,name:"SlippageTooLarge",msg:"[G108] SlippageTooLarge"},{code:6009,name:"PercentageOutOfRange",msg:"[G109] Percentage out of range"},{code:6010,name:"SwapIXNotInOrder",msg:"[G110] Swap instruction is not executed in order"},{code:6011,name:"MintNotMatchPair",msg:"[G111] Mint does not match the pair"},{code:6012,name:"FeeCollectorIncorrect",msg:"[G112] Fee collector account incorrect"}],Kl={version:Gl,name:xl,instructions:Ul,accounts:_l,errors:Ll};function Yl(e,t){return A.PublicKey.findProgramAddressSync([e.toBuffer(),ml.toBuffer(),t.toBuffer()],Il)[0]}var jl,Wl={};Dl(Wl,{Hash:()=>Ig,Instruction:()=>yg,Instructions:()=>Bg,Keypair:()=>Cg,Message:()=>wg,OracleRegistry:()=>Eg,Pubkey:()=>Qg,SwapResult:()=>bg,SystemInstruction:()=>kg,Transaction:()=>vg,default:()=>Tg,initSync:()=>Dg,solana_program_init:()=>fg,swap:()=>gg});var Jl=new TextDecoder("utf-8",{ignoreBOM:!0,fatal:!0});Jl.decode();var ql=new Uint8Array;function Zl(){return 0===ql.byteLength&&(ql=new Uint8Array(jl.memory.buffer)),ql}function zl(e,t){return Jl.decode(Zl().subarray(e,e+t))}var Hl=new Array(32).fill(void 0);Hl.push(void 0,null,!0,!1);var Vl=Hl.length;function Xl(e){Vl===Hl.length&&Hl.push(Hl.length+1);const t=Vl;return Vl=Hl[t],Hl[t]=e,t}function $l(e){return Hl[e]}function eg(e){const t=$l(e);return function(e){e<36||(Hl[e]=Vl,Vl=e)}(e),t}var tg=0,ng=new TextEncoder("utf-8"),ig="function"==typeof ng.encodeInto?function(e,t){return ng.encodeInto(e,t)}:function(e,t){const n=ng.encode(e);return t.set(n),{read:e.length,written:n.length}};function rg(e,t,n){if(void 0===n){const n=ng.encode(e),i=t(n.length);return Zl().subarray(i,i+n.length).set(n),tg=n.length,i}let i=e.length,r=t(i);const o=Zl();let A=0;for(;A127)break;o[r+A]=t}if(A!==i){0!==A&&(e=e.slice(A)),r=n(r,i,i=A+3*e.length);const t=Zl().subarray(r+A,r+i);A+=ig(e,t).written}return tg=A,r}function og(e){return null==e}var Ag=new Int32Array;function sg(){return 0===Ag.byteLength&&(Ag=new Int32Array(jl.memory.buffer)),Ag}var ag=new Float64Array;function cg(e){const t=typeof e;if("number"==t||"boolean"==t||null==e)return`${e}`;if("string"==t)return`"${e}"`;if("symbol"==t){const t=e.description;return null==t?"Symbol":`Symbol(${t})`}if("function"==t){const t=e.name;return"string"==typeof t&&t.length>0?`Function(${t})`:"Function"}if(Array.isArray(e)){const t=e.length;let n="[";t>0&&(n+=cg(e[0]));for(let i=1;i1))return toString.call(e);if(i=n[1],"Object"==i)try{return"Object("+JSON.stringify(e)+")"}catch(e){return"Object"}return e instanceof Error?`${e.name}: ${e.message}\n${e.stack}`:i}function ug(e,t){const n=t(1*e.length);return Zl().set(e,n/1),tg=e.length,n}function lg(e,t){if(!(e instanceof t))throw new Error(`expected instance of ${t.name}`);return e.ptr}function gg(e,t,n,i,r,o,A,s,a){try{const l=jl.__wbindgen_add_to_stack_pointer(-16),g=ug(e,jl.__wbindgen_malloc),d=tg,h=ug(t,jl.__wbindgen_malloc),p=tg,f=ug(n,jl.__wbindgen_malloc),m=tg;lg(s,Eg),jl.swap(l,g,d,h,p,f,m,i,r,o,A,s.ptr,a);var c=sg()[l/4+0],u=sg()[l/4+1];if(sg()[l/4+2])throw eg(u);return bg.__wrap(c)}finally{jl.__wbindgen_add_to_stack_pointer(16)}}function dg(e,t){return Zl().subarray(e/1,e/1+t)}var hg=new Uint32Array;function pg(e,t){const n=t(4*e.length),i=(0===hg.byteLength&&(hg=new Uint32Array(jl.memory.buffer)),hg);for(let t=0;t>>0}set iter(e){jl.__wbg_set_swapresult_iter(this.ptr,e)}},kg=class{__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();jl.__wbg_systeminstruction_free(e)}static createAccount(e,t,n,i,r){lg(e,Qg),lg(t,Qg),lg(r,Qg);const o=jl.systeminstruction_createAccount(e.ptr,t.ptr,n,i,r.ptr);return yg.__wrap(o)}static createAccountWithSeed(e,t,n,i,r,o,A){lg(e,Qg),lg(t,Qg),lg(n,Qg);const s=rg(i,jl.__wbindgen_malloc,jl.__wbindgen_realloc),a=tg;lg(A,Qg);const c=jl.systeminstruction_createAccountWithSeed(e.ptr,t.ptr,n.ptr,s,a,r,o,A.ptr);return yg.__wrap(c)}static assign(e,t){lg(e,Qg),lg(t,Qg);const n=jl.systeminstruction_assign(e.ptr,t.ptr);return yg.__wrap(n)}static assignWithSeed(e,t,n,i){lg(e,Qg),lg(t,Qg);const r=rg(n,jl.__wbindgen_malloc,jl.__wbindgen_realloc),o=tg;lg(i,Qg);const A=jl.systeminstruction_assignWithSeed(e.ptr,t.ptr,r,o,i.ptr);return yg.__wrap(A)}static transfer(e,t,n){lg(e,Qg),lg(t,Qg);const i=jl.systeminstruction_transfer(e.ptr,t.ptr,n);return yg.__wrap(i)}static transferWithSeed(e,t,n,i,r,o){lg(e,Qg),lg(t,Qg);const A=rg(n,jl.__wbindgen_malloc,jl.__wbindgen_realloc),s=tg;lg(i,Qg),lg(r,Qg);const a=jl.systeminstruction_transferWithSeed(e.ptr,t.ptr,A,s,i.ptr,r.ptr,o);return yg.__wrap(a)}static allocate(e,t){lg(e,Qg);const n=jl.systeminstruction_allocate(e.ptr,t);return yg.__wrap(n)}static allocateWithSeed(e,t,n,i,r){lg(e,Qg),lg(t,Qg);const o=rg(n,jl.__wbindgen_malloc,jl.__wbindgen_realloc),A=tg;lg(r,Qg);const s=jl.systeminstruction_allocateWithSeed(e.ptr,t.ptr,o,A,i,r.ptr);return yg.__wrap(s)}static createNonceAccount(e,t,n,i){return lg(e,Qg),lg(t,Qg),lg(n,Qg),eg(jl.systeminstruction_createNonceAccount(e.ptr,t.ptr,n.ptr,i))}static advanceNonceAccount(e,t){lg(e,Qg),lg(t,Qg);const n=jl.systeminstruction_advanceNonceAccount(e.ptr,t.ptr);return yg.__wrap(n)}static withdrawNonceAccount(e,t,n,i){lg(e,Qg),lg(t,Qg),lg(n,Qg);const r=jl.systeminstruction_withdrawNonceAccount(e.ptr,t.ptr,n.ptr,i);return yg.__wrap(r)}static authorizeNonceAccount(e,t,n){lg(e,Qg),lg(t,Qg),lg(n,Qg);const i=jl.systeminstruction_authorizeNonceAccount(e.ptr,t.ptr,n.ptr);return yg.__wrap(i)}},vg=class{static __wrap(e){const t=Object.create(vg.prototype);return t.ptr=e,t}__destroy_into_raw(){const e=this.ptr;return this.ptr=0,e}free(){const e=this.__destroy_into_raw();jl.__wbg_transaction_free(e)}constructor(e,t){lg(e,Bg);var n=e.ptr;e.ptr=0;let i=0;og(t)||(lg(t,Qg),i=t.ptr,t.ptr=0);const r=jl.transaction_constructor(n,i);return vg.__wrap(r)}message(){const e=jl.transaction_message(this.ptr);return wg.__wrap(e)}messageData(){try{const i=jl.__wbindgen_add_to_stack_pointer(-16);jl.transaction_messageData(i,this.ptr);var e=sg()[i/4+0],t=sg()[i/4+1],n=dg(e,t).slice();return jl.__wbindgen_free(e,1*t),n}finally{jl.__wbindgen_add_to_stack_pointer(16)}}verify(){try{const t=jl.__wbindgen_add_to_stack_pointer(-16);jl.transaction_verify(t,this.ptr);var e=sg()[t/4+0];if(sg()[t/4+1])throw eg(e)}finally{jl.__wbindgen_add_to_stack_pointer(16)}}partialSign(e,t){lg(e,Cg),lg(t,Ig),jl.transaction_partialSign(this.ptr,e.ptr,t.ptr)}isSigned(){return 0!==jl.transaction_isSigned(this.ptr)}toBytes(){try{const i=jl.__wbindgen_add_to_stack_pointer(-16);jl.transaction_toBytes(i,this.ptr);var e=sg()[i/4+0],t=sg()[i/4+1],n=dg(e,t).slice();return jl.__wbindgen_free(e,1*t),n}finally{jl.__wbindgen_add_to_stack_pointer(16)}}static fromBytes(e){try{const i=jl.__wbindgen_add_to_stack_pointer(-16),r=ug(e,jl.__wbindgen_malloc),o=tg;jl.transaction_fromBytes(i,r,o);var t=sg()[i/4+0],n=sg()[i/4+1];if(sg()[i/4+2])throw eg(n);return vg.__wrap(t)}finally{jl.__wbindgen_add_to_stack_pointer(16)}}};function Sg(){const e={wbg:{}};return e.wbg.__wbindgen_string_new=function(e,t){return Xl(zl(e,t))},e.wbg.__wbg_instruction_new=function(e){return Xl(yg.__wrap(e))},e.wbg.__wbindgen_number_new=function(e){return Xl(e)},e.wbg.__wbindgen_object_drop_ref=function(e){eg(e)},e.wbg.__wbindgen_string_get=function(e,t){const n=$l(t),i="string"==typeof n?n:void 0;var r=og(i)?0:rg(i,jl.__wbindgen_malloc,jl.__wbindgen_realloc),o=tg;sg()[e/4+1]=o,sg()[e/4+0]=r},e.wbg.__wbindgen_is_undefined=function(e){return void 0===$l(e)},e.wbg.__wbindgen_number_get=function(e,t){const n=$l(t),i="number"==typeof n?n:void 0;(0===ag.byteLength&&(ag=new Float64Array(jl.memory.buffer)),ag)[e/8+1]=og(i)?0:i,sg()[e/4+0]=!og(i)},e.wbg.__wbg_pubkey_new=function(e){return Xl(Qg.__wrap(e))},e.wbg.__wbg_debug_73395ca5669120ae=function(e){vl.debug($l(e))},e.wbg.__wbg_error_1189b5de6dd1b808=function(e){vl.error($l(e))},e.wbg.__wbg_info_3f1d8636ba58128f=function(e){vl.info($l(e))},e.wbg.__wbg_log_18ffdfe5a41bd781=function(e){vl.log($l(e))},e.wbg.__wbg_warn_dffa74cab78d3531=function(e){vl.warn($l(e))},e.wbg.__wbg_new_abda76e883ba8a5f=function(){return Xl(new Error)},e.wbg.__wbg_stack_658279fe44541cf6=function(e,t){const n=rg($l(t).stack,jl.__wbindgen_malloc,jl.__wbindgen_realloc),i=tg;sg()[e/4+1]=i,sg()[e/4+0]=n},e.wbg.__wbg_error_f851667af71bcfc6=function(e,t){try{vl.error(zl(e,t))}finally{jl.__wbindgen_free(e,t)}},e.wbg.__wbg_self_7eede1f4488bf346=function(){return mg((function(){return Xl(self.self)}),arguments)},e.wbg.__wbg_crypto_c909fb428dcbddb6=function(e){return Xl($l(e).crypto)},e.wbg.__wbg_msCrypto_511eefefbfc70ae4=function(e){return Xl($l(e).msCrypto)},e.wbg.__wbg_static_accessor_MODULE_ef3aa2eb251158a5=function(){return Xl(module)},e.wbg.__wbg_require_900d5c3984fe7703=function(e,t,n){return Xl($l(e).require(zl(t,n)))},e.wbg.__wbg_getRandomValues_307049345d0bd88c=function(e){return Xl($l(e).getRandomValues)},e.wbg.__wbg_getRandomValues_cd175915511f705e=function(e,t){$l(e).getRandomValues($l(t))},e.wbg.__wbg_randomFillSync_85b3f4c52c56c313=function(e,t,n){$l(e).randomFillSync(dg(t,n))},e.wbg.__wbg_new_b33e1ce63900068f=function(){return Xl(new Array)},e.wbg.__wbindgen_is_function=function(e){return"function"==typeof $l(e)},e.wbg.__wbindgen_is_object=function(e){const t=$l(e);return"object"==typeof t&&null!==t},e.wbg.__wbg_next_0b95852db3a0f568=function(e){return Xl($l(e).next)},e.wbg.__wbg_next_32ce4603e19a9ad8=function(){return mg((function(e){return Xl($l(e).next())}),arguments)},e.wbg.__wbg_done_b2b23adcafd6d372=function(e){return $l(e).done},e.wbg.__wbg_value_9bc3271f2556a621=function(e){return Xl($l(e).value)},e.wbg.__wbg_iterator_7e0ac697faa872f3=function(){return Xl(Symbol.iterator)},e.wbg.__wbg_get_02999bb2caeeff61=function(){return mg((function(e,t){return Xl(Reflect.get($l(e),$l(t)))}),arguments)},e.wbg.__wbg_call_875d4ea9abbec88f=function(){return mg((function(e,t){return Xl($l(e).call($l(t)))}),arguments)},e.wbg.__wbg_newwithlength_8ff69118ab23319b=function(e){return Xl(new Array(e>>>0))},e.wbg.__wbg_set_5eacdf54c9aafbdf=function(e,t,n){$l(e)[t>>>0]=eg(n)},e.wbg.__wbg_isArray_cf6829b1f25ba0f1=function(e){return Array.isArray($l(e))},e.wbg.__wbg_push_09ebcbbd6fb27ae1=function(e,t){return $l(e).push($l(t))},e.wbg.__wbg_values_a267575fa7b99075=function(e){return Xl($l(e).values())},e.wbg.__wbg_buffer_8dabc3a4cca7e065=function(e){return Xl($l(e).buffer)},e.wbg.__wbg_new_81bdddbe23a4c990=function(e){return Xl(new Uint8Array($l(e)))},e.wbg.__wbg_set_5778b152a7ec258c=function(e,t,n){$l(e).set($l(t),n>>>0)},e.wbg.__wbg_length_61f1949aa7f6fd39=function(e){return $l(e).length},e.wbg.__wbg_instanceof_Uint8Array_8a8537f46e056474=function(e){let t;try{t=$l(e)instanceof Uint8Array}catch{t=!1}return t},e.wbg.__wbg_newwithlength_6b2b32ef5bfc9a55=function(e){return Xl(new Uint8Array(e>>>0))},e.wbg.__wbg_subarray_247092e59b56339a=function(e,t,n){return Xl($l(e).subarray(t>>>0,n>>>0))},e.wbg.__wbindgen_debug_string=function(e,t){const n=rg(cg($l(t)),jl.__wbindgen_malloc,jl.__wbindgen_realloc),i=tg;sg()[e/4+1]=i,sg()[e/4+0]=n},e.wbg.__wbindgen_throw=function(e,t){throw new Error(zl(e,t))},e.wbg.__wbindgen_memory=function(){return Xl(jl.memory)},e}function Mg(e,t){return jl=e.exports,Ng.__wbindgen_wasm_module=t,ag=new Float64Array,Ag=new Int32Array,hg=new Uint32Array,ql=new Uint8Array,jl}function Dg(e){const t=Sg();return e instanceof WebAssembly.Module||(e=new WebAssembly.Module(e)),Mg(new WebAssembly.Instance(e,t),e)}async function Ng(e){const t=Sg();("string"==typeof e||"function"==typeof Request&&e instanceof Request||"function"==typeof URL&&e instanceof URL)&&(e=fetch(e));const{instance:n,module:i}=await async function(e,t){if("function"==typeof Response&&e instanceof Response){if("function"==typeof WebAssembly.instantiateStreaming)try{return await WebAssembly.instantiateStreaming(e,t)}catch(t){if("application/wasm"==e.headers.get("Content-Type"))throw t;vl.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n",t)}const n=await e.arrayBuffer();return await WebAssembly.instantiate(n,t)}{const n=await WebAssembly.instantiate(e,t);return n instanceof WebAssembly.Instance?{instance:n,module:e}:n}}(await e,t);return Mg(n,i)}var Tg=Ng,Pg=class{static async loadByMint(e,t,n,i=Fl){return await Pg.loadByAddress(e,Pg.findAddress(t,n,i))}static async loadByAddress(e,t,n=Fl){let i=await e.getAccountInfo(t);if(void 0!==i)return new Pg(i,n)}static async liabilityVault(e,t,n,i,r=Fl){void 0===i&&(i=n);let o=Yl(Pg.findAddress(t,n,r),i),A=await async function(e,t,n,i=ml){const r=await e.getAccountInfo(t,n);if(!r)throw new Bl;if(!r.owner.equals(i))throw new Cl;if(r.data.length!=kl)throw new wl;const o=bl.decode(r.data);return{address:t,mint:o.mint,owner:o.owner,amount:o.amount,delegate:o.delegateOption?o.delegate:null,delegatedAmount:o.delegatedAmount,isInitialized:o.state!==Ql.Uninitialized,isFrozen:o.state===Ql.Frozen,isNative:!!o.isNativeOption,rentExemptReserve:o.isNativeOption?o.isNative:null,closeAuthority:o.closeAuthorityOption?o.closeAuthority:null}}(e,o);return A}static findAddress(e,t,n=Fl){return A.PublicKey.findProgramAddressSync([Sl.from("GFX-SSL","utf-8"),e.toBuffer(),t.toBuffer()],n)[0]}constructor(e,t=Fl){this.inner=Ol.decode(e.data),this.address=Pg.findAddress(this.controller,this.mint,t)}isSuspended(){return this.inner.suspended}async deposit(e,t,n,i,r=Fl){const o=e.instruction,A={controller:t,ssl:this.address,liquidityAccount:Pg.getLiquidityAccountAddress(t,this.mint,n,r),rtVault:Yl(this.address,this.mint),userRtAta:Yl(n,this.mint),userWallet:n,tokenProgram:ml};return await o.deposit(new(y())(i.toString()),{accounts:A})}static getLiquidityAccountAddress(e,t,n,i){return A.PublicKey.findProgramAddressSync([Sl.from("GFX-LIQUIDITYACCOUNT","utf-8"),e.toBuffer(),t.toBuffer(),n.toBuffer()],i)[0]}get controller(){return this.inner.controller}get mint(){return this.inner.mint}get decimals(){return this.inner.decimals}poolTokenMint(e=Fl){return A.PublicKey.findProgramAddressSync([Sl.from("GFX-SSL-PTMINT","utf-8"),this.controller.toBuffer(),this.mint.toBuffer()],e)[0]}get suspended(){return this.inner.suspended}get weight(){return this.inner.weight}get swappedLiabilityNative(){return this.inner.swappedLiabilityNative}get totalShare(){return this.inner.totalShare}},Og=async()=>{await Tg(Ct.Buffer.from("AGFzbQEAAAABxYOAgAA6YAAAYAABf2ABfwBgAX8Bf2ABfwF+YAF/AXxgAn9/AGACf38Bf2ACf38BfmADf39/AGADf39/AX9gBH9/f38AYAR/f39/AX9gBX9/f39/AGAFf39/f38Bf2AGf39/f39/AGAGf39/f39/AX9gB39/f39/f38AYAd/f39/f39/AX9gCX9/f39/f39/fwBgDX9/f39/f39+fn5+f34AYAd/f39/f39+AGAHf39/f39/fgF/YAl/f39/f39+fn8AYAl/f39/f39+fn4AYAd/f39/f35/AGAIf39/f39+fn8Bf2AFf39/f34AYAZ/f39/fn8Bf2AKf39/f35+fn5/fgBgBH9/f34AYAR/f39+AX9gBn9/f35+fwBgA39/fgBgA39/fgF/YAV/f35+fwF/YAV/f31/fwBgBX9/fH9/AGACf34AYAJ/fgF/YAN/fn8AYAh/fn9+f39/fwBgCX9+f35/f39/fwBgA39+fgBgBH9+fn8AYAR/fn5+AGAFf35+fn4AYAR/fX9/AGACf3wAYAR/fH9/AGAEf3x/fwF/YAN+f38Bf2ACfn4BfmACfn4BfGABfAF/YAF8AXxgAnx/AXxgAnx8AXwCnY2AgAAxA3diZxVfX3diaW5kZ2VuX3N0cmluZ19uZXcABwN3YmcVX193YmdfaW5zdHJ1Y3Rpb25fbmV3AAMDd2JnFV9fd2JpbmRnZW5fbnVtYmVyX25ldwA2A3diZxpfX3diaW5kZ2VuX29iamVjdF9kcm9wX3JlZgACA3diZxVfX3diaW5kZ2VuX3N0cmluZ19nZXQABgN3YmcXX193YmluZGdlbl9pc191bmRlZmluZWQAAwN3YmcVX193YmluZGdlbl9udW1iZXJfZ2V0AAYDd2JnEF9fd2JnX3B1YmtleV9uZXcAAwN3YmccX193YmdfZGVidWdfNzMzOTVjYTU2NjkxMjBhZQACA3diZxxfX3diZ19lcnJvcl8xMTg5YjVkZTZkZDFiODA4AAIDd2JnG19fd2JnX2luZm9fM2YxZDg2MzZiYTU4MTI4ZgACA3diZxpfX3diZ19sb2dfMThmZmRmZTVhNDFiZDc4MQACA3diZxtfX3diZ193YXJuX2RmZmE3NGNhYjc4ZDM1MzEAAgN3YmcaX193YmdfbmV3X2FiZGE3NmU4ODNiYThhNWYAAQN3YmccX193Ymdfc3RhY2tfNjU4Mjc5ZmU0NDU0MWNmNgAGA3diZxxfX3diZ19lcnJvcl9mODUxNjY3YWY3MWJjZmM2AAYDd2JnG19fd2JnX3NlbGZfN2VlZGUxZjQ0ODhiZjM0NgABA3diZx1fX3diZ19jcnlwdG9fYzkwOWZiNDI4ZGNiZGRiNgADA3diZx9fX3diZ19tc0NyeXB0b181MTFlZWZlZmJmYzcwYWU0AAMDd2JnLV9fd2JnX3N0YXRpY19hY2Nlc3Nvcl9NT0RVTEVfZWYzYWEyZWIyNTExNThhNQABA3diZx5fX3diZ19yZXF1aXJlXzkwMGQ1YzM5ODRmZTc3MDMACgN3YmcmX193YmdfZ2V0UmFuZG9tVmFsdWVzXzMwNzA0OTM0NWQwYmQ4OGMAAwN3YmcmX193YmdfZ2V0UmFuZG9tVmFsdWVzX2NkMTc1OTE1NTExZjcwNWUABgN3YmclX193YmdfcmFuZG9tRmlsbFN5bmNfODViM2Y0YzUyYzU2YzMxMwAJA3diZxpfX3diZ19uZXdfYjMzZTFjZTYzOTAwMDY4ZgABA3diZxZfX3diaW5kZ2VuX2lzX2Z1bmN0aW9uAAMDd2JnFF9fd2JpbmRnZW5faXNfb2JqZWN0AAMDd2JnG19fd2JnX25leHRfMGI5NTg1MmRiM2EwZjU2OAADA3diZxtfX3diZ19uZXh0XzMyY2U0NjAzZTE5YTlhZDgAAwN3YmcbX193YmdfZG9uZV9iMmIyM2FkY2FmZDZkMzcyAAMDd2JnHF9fd2JnX3ZhbHVlXzliYzMyNzFmMjU1NmE2MjEAAwN3YmcfX193YmdfaXRlcmF0b3JfN2UwYWM2OTdmYWE4NzJmMwABA3diZxpfX3diZ19nZXRfMDI5OTliYjJjYWVlZmY2MQAHA3diZxtfX3diZ19jYWxsXzg3NWQ0ZWE5YWJiZWM4OGYABwN3YmckX193YmdfbmV3d2l0aGxlbmd0aF84ZmY2OTExOGFiMjMzMTliAAMDd2JnGl9fd2JnX3NldF81ZWFjZGY1NGM5YWFmYmRmAAkDd2JnHl9fd2JnX2lzQXJyYXlfY2Y2ODI5YjFmMjViYTBmMQADA3diZxtfX3diZ19wdXNoXzA5ZWJjYmJkNmZiMjdhZTEABwN3YmcdX193YmdfdmFsdWVzX2EyNjc1NzVmYTdiOTkwNzUAAwN3YmcdX193YmdfYnVmZmVyXzhkYWJjM2E0Y2NhN2UwNjUAAwN3YmcaX193YmdfbmV3XzgxYmRkZGJlMjNhNGM5OTAAAwN3YmcaX193Ymdfc2V0XzU3NzhiMTUyYTdlYzI1OGMACQN3YmcdX193YmdfbGVuZ3RoXzYxZjE5NDlhYTdmNmZkMzkAAwN3YmcsX193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzhhODUzN2Y0NmUwNTY0NzQAAwN3YmckX193YmdfbmV3d2l0aGxlbmd0aF82YjJiMzJlZjViZmM5YTU1AAMDd2JnH19fd2JnX3N1YmFycmF5XzI0NzA5MmU1OWI1NjMzOWEACgN3YmcXX193YmluZGdlbl9kZWJ1Z19zdHJpbmcABgN3YmcQX193YmluZGdlbl90aHJvdwAGA3diZxFfX3diaW5kZ2VuX21lbW9yeQABA7yGgIAAugYJCQsdDQkUCQcGAxMJCQkGBwcNCwkLCw8LKgYHCQkGCQYJBgkLBgsGBwsJDQcCDQsJBgYGBgkLBwkGCQkJCwoKMhAGBg0hLgYMCQkGBw8GCwsLDwYKDzIKBg4HCRsJKQkHDQsXDQoLAw8HBwkJABkHBgY3GwMGBg8JBg0VBgMPBwYCAwcgBgYHBhgJAwcLBgsHCQILCw4HAgYLBwYRNQkeCgoKCgoHFgcaEQYHEgkOBwkLCQkGBgM1DwcKBwoHAgcHBwcKBwcHCgcGBwYGBwYHCgYcCQ4hMwcHBgc3CSMKBh8JCisGBgkGBgIHCQIGBgEGBgkGBwciBwcHBgchBwYKBwMGBwIKBgcJCR8LBgMrBicGCQYICAkHBwYNBwcGAgkHBwYGMAkJAwcGBwYBAwICBwMGBgkGBgkLCQYJBgYJAiwKBwYGBgMHBgYGAwcJBwYHBgYLCwsLCw8LIQYHBwMHBwcGCg0GAgIGBwIJBgYGAwkGCQkLBgIJLgYKCgoHBwMoDQMGLQcHCQYCBgcGLQkHOAIHBgYGCQcHCQYNBgkJBwcHBgcHBwcHBywsBwYGBgkHBwYDAgYGAgoKCQoKAgouLgoKJwoKBwoKCi4HDC0GCQsABgkGBgcGBwYHBwkuBwIJAAYDAgI0AwcHBwcJCQcHBwcHBwsHByYmMDAwMAYGBgICAgkCAgIDJgkNCQsGJgQEBQUFBQMGBwcHBgIDBwEECQEJAgYHCQoBCRAHDSUODQ4NJAYCAgICCwIHAgIGBgoGAwM5BgMGAgcKBzcHBwMHBwcCDAcHAwcHBwIGBwcCAwcGBwcCBwcHByYHBgcGBwMHCQcHBwcCBwcHBgMCAwsHAwMDBgcGBwkHCwkDBwMKCQkJCgMDBgMHBwcJCgoHBwMHBwcGBwcHBwkHCQcHBwcHBwYAAAcHAwMDAwcGBgYGBgYGBgkJCQYGBgoHBwcHCgoKCgcHBwcHBwcHBwICAgICBgYDBwcHBwcDAwIGBgYGBAEGBgYDAwAJAwMDAwM3NwQDAwQDAQcEAQQEAAMBAQMODAoHAwMEBAMCAgICAgICAgICAgICAgICAgYCAAICAgICAgICAgICAgICBIeAgIAAAXAB9gH2AQWDgICAAAEAEgaJgICAAAF/AUGAgMAACweekICAAEsGbWVtb3J5AgAZX193Ymdfb3JhY2xlcmVnaXN0cnlfZnJlZQDoAxJvcmFjbGVyZWdpc3RyeV9uZXcAzwQZb3JhY2xlcmVnaXN0cnlfYWRkX29yYWNsZQCZARVfX3diZ19zd2FwcmVzdWx0X2ZyZWUAsgQeX193YmdfZ2V0X3N3YXByZXN1bHRfYW1vdW50X2luANAEHl9fd2JnX3NldF9zd2FwcmVzdWx0X2Ftb3VudF9pbgC/BB1fX3diZ19nZXRfc3dhcHJlc3VsdF9mZWVfcGFpZADABB1fX3diZ19zZXRfc3dhcHJlc3VsdF9mZWVfcGFpZACoBB9fX3diZ19nZXRfc3dhcHJlc3VsdF9hbW91bnRfb3V0AMEEH19fd2JnX3NldF9zd2FwcmVzdWx0X2Ftb3VudF9vdXQAqQQhX193YmdfZ2V0X3N3YXByZXN1bHRfcHJpY2VfaW1wYWN0AMIEIV9fd2JnX3NldF9zd2FwcmVzdWx0X3ByaWNlX2ltcGFjdACqBB9fX3diZ19nZXRfc3dhcHJlc3VsdF9zd2FwX3ByaWNlAMMEH19fd2JnX3NldF9zd2FwcmVzdWx0X3N3YXBfcHJpY2UAqwQgX193YmdfZ2V0X3N3YXByZXN1bHRfaW5zdGFfcHJpY2UAxAQgX193Ymdfc2V0X3N3YXByZXN1bHRfaW5zdGFfcHJpY2UArAQhX193YmdfZ2V0X3N3YXByZXN1bHRfb3JhY2xlX3ByaWNlAMUEIV9fd2JnX3NldF9zd2FwcmVzdWx0X29yYWNsZV9wcmljZQCtBBlfX3diZ19nZXRfc3dhcHJlc3VsdF9pdGVyAMYEGV9fd2JnX3NldF9zd2FwcmVzdWx0X2l0ZXIArgQEc3dhcAA3Fl9fd2JnX3RyYW5zYWN0aW9uX2ZyZWUAtQIXdHJhbnNhY3Rpb25fY29uc3RydWN0b3IAqAITdHJhbnNhY3Rpb25fbWVzc2FnZQCzARd0cmFuc2FjdGlvbl9tZXNzYWdlRGF0YQD5AhJ0cmFuc2FjdGlvbl92ZXJpZnkA9QIXdHJhbnNhY3Rpb25fcGFydGlhbFNpZ24A5AEUdHJhbnNhY3Rpb25faXNTaWduZWQAvgITdHJhbnNhY3Rpb25fdG9CeXRlcwDLAxV0cmFuc2FjdGlvbl9mcm9tQnl0ZXMA1gISX193Ymdfa2V5cGFpcl9mcmVlAMIDE2tleXBhaXJfY29uc3RydWN0b3IA3QIPa2V5cGFpcl90b0J5dGVzAL0CEWtleXBhaXJfZnJvbUJ5dGVzAMcCDmtleXBhaXJfcHVia2V5AN4CFl9fd2JnX2luc3RydWN0aW9uX2ZyZWUAugMfc3lzdGVtaW5zdHJ1Y3Rpb25fY3JlYXRlQWNjb3VudACOAidzeXN0ZW1pbnN0cnVjdGlvbl9jcmVhdGVBY2NvdW50V2l0aFNlZWQA2QEYc3lzdGVtaW5zdHJ1Y3Rpb25fYXNzaWduAKkCIHN5c3RlbWluc3RydWN0aW9uX2Fzc2lnbldpdGhTZWVkAIUCGnN5c3RlbWluc3RydWN0aW9uX3RyYW5zZmVyAKcCInN5c3RlbWluc3RydWN0aW9uX3RyYW5zZmVyV2l0aFNlZWQA1wEac3lzdGVtaW5zdHJ1Y3Rpb25fYWxsb2NhdGUAwQIic3lzdGVtaW5zdHJ1Y3Rpb25fYWxsb2NhdGVXaXRoU2VlZACDAiRzeXN0ZW1pbnN0cnVjdGlvbl9jcmVhdGVOb25jZUFjY291bnQAuwIlc3lzdGVtaW5zdHJ1Y3Rpb25fYWR2YW5jZU5vbmNlQWNjb3VudACqAiZzeXN0ZW1pbnN0cnVjdGlvbl93aXRoZHJhd05vbmNlQWNjb3VudACRAidzeXN0ZW1pbnN0cnVjdGlvbl9hdXRob3JpemVOb25jZUFjY291bnQAkwISX193YmdfbWVzc2FnZV9mcmVlAM8CIl9fd2JnX2dldF9tZXNzYWdlX3JlY2VudF9ibG9ja2hhc2gA4gIiX193Ymdfc2V0X21lc3NhZ2VfcmVjZW50X2Jsb2NraGFzaACeAhFfX3diZ19wdWJrZXlfZnJlZQC2BBJwdWJrZXlfY29uc3RydWN0b3IAmAIPcHVia2V5X3RvU3RyaW5nAPQCEHB1YmtleV9pc09uQ3VydmUAsAMNcHVia2V5X2VxdWFscwC2Aw5wdWJrZXlfdG9CeXRlcwDOAhVwdWJrZXlfY3JlYXRlV2l0aFNlZWQAqwEbcHVia2V5X2NyZWF0ZVByb2dyYW1BZGRyZXNzAOIBGXB1YmtleV9maW5kUHJvZ3JhbUFkZHJlc3MApQMTc29sYW5hX3Byb2dyYW1faW5pdACCBBBoYXNoX2NvbnN0cnVjdG9yAJkCDWhhc2hfdG9TdHJpbmcA9gILaGFzaF9lcXVhbHMAtwMMaGFzaF90b0J5dGVzAJYDF19fd2JnX2luc3RydWN0aW9uc19mcmVlAPACGGluc3RydWN0aW9uc19jb25zdHJ1Y3RvcgDSBBFpbnN0cnVjdGlvbnNfcHVzaACtAQ9fX3diZ19oYXNoX2ZyZWUAtwQRX193YmluZGdlbl9tYWxsb2MAlAQSX193YmluZGdlbl9yZWFsbG9jANgEH19fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIA0AUPX193YmluZGdlbl9mcmVlAIwFFF9fd2JpbmRnZW5fZXhuX3N0b3JlAKcFCfCDgIAAAQBBAQv1AckG0QK9AbME4QLKBuYD7gTLBp8GngadBrAErwSwBtIF0wXRBZQFtQTMBpcD1gXIA9cFhgXlBPID8QHXA80G+wSYA4UFmQSbBZAD5gTzA/IBzgbpA+oB0APSAuEDzwbaBZ0F0AbfA94D5wT1A/MBiQSkBqMGogbYBdEGuQXmAtIGjQaQBo4GjwaMBtMG6gPsAdED6AT2A/UB2APUBvcD1QbJAsgCkgazBrQGngWRBpYF8gTOBMoF1gbJBJ8FyATXBqEE+QThBIkD3QTfBNsE8ATpBOIE4ATjBN4E2AaaBNkGtgbaBtsG3AXeBeAFoQXOBd0GiAWbBJwE3wXdBY8EowWMBIAC3gbnA/EE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aikDACInIAQQtQMgCkHAAWpBCGopAwAhBCAKKQPAASEpIApBsAFqQpDOABCaBSAKQaABaiApIAQgCikDsAEiKiAKQbABakEIaikDACIrEPsDIApBkAFqIAopA6ABIApBoAFqQQhqKQMAQgEQ/gMgCkGAAWogCikDkAEgCkGQAWpBCGopAwAgKiArEPADIApB8ABqICggJyAKKQOAASIEIApBgAFqQQhqKQMAIikQ8QMgCikDcCAKQfAAakEIaikDABCXBCEoIApB4ABqIAQgKRCXBBCaBSAKQdAAaiAKKQNgIgQgCkHgAGpBCGopAwAiJyAHELUDIApB0ABqQQhqKQMAIQcgCikDUCEpIApBwABqQpDOABCaBSAKQTBqICkgByAKKQNAIiogCkHAAGpBCGopAwAiKxD7AyAKQSBqIAopAzAgCkEwakEIaikDAEIBEP4DIApBEGogCikDICAKQSBqQQhqKQMAICogKxDwAyAKIAQgJyAKKQMQIgcgCkEQakEIaikDACIpEPEDIAopAwAgCkEIaikDABCXBCEqIAcgKRCXBCErIApBgAVqIB8QuQQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAooAoAFRQ0AIApBkARqQQhqIApBjAVqKQIANwMAIAogCikChAU3A5AEIApByAZqIApBkARqIAItAEAiEBCRBCAKKALIBkEGRw0BIApBgAVqICAQuQQgCigCgAVFDQIgCkGgBGpBCGogCkGMBWopAgA3AwAgCiAKKQKEBTcDoAQgCkHIBmogCkGgBGogAy0AQCIREJEEIAooAsgGQQZHDQMgCkGwBGogIkIAQQkQ8QIgCkHABGogBkIAQQkQ8QIgCkGYBmpBCGogCkGwBGpBCGopAwA3AwAgCiAKKQOwBDcDmAYgCkGABWogIRC5BCAKKAKABUUNBCAKQagGakEIaiAKQYwFaikCADcDACAKIAopAoQFNwOoBiAKQcgGaiAKQagGaiAQEJEEIAooAsgGQQZHDQUgCkGABWogCkGYBmogCkGoBmoQWyAKKAKABQ0GIApBiAZqQQhqIApBjAVqIgIpAgA3AwAgCiAKKQKEBTcDiAYgCkHIBmpBCGogCkGQBGpBCGopAwA3AwAgCiAKKQOQBDcDyAYgCkGABWog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CGopAwA3AwAgCiAKKQPIBjcDgAVB24rAAEErIApBgAVqQYiLwABBlIzAABCyAwALQbCKwABBK0H4i8AAEIQEAAsgCkGABWpBCGogCkHIBmpBCGopAwA3AwAgCiAKKQPIBjcDgAVB24rAAEErIApBgAVqQYiLwABBlIzAABCyAwALQbCKwABBK0H4i8AAEIQEAAsgCkGABWpBCGogCkHIBmpBCGopAwA3AwAgCiAKKQPIBjcDgAVB24rAAEErIApBgAVqQYiLwABBlIzAABCyAwALQayBwABBGUHIgcAAENEEAAtBsIrAAEErQfiLwAAQhAQACyAKQYAFakEIaiAKQcgGakEIaikDADcDACAKIAopA8gGNwOABUHbisAAQSsgCkGABWpBiIvAAEGUjMAAELIDAAtBrIHAAEEZQciBwAAQ0QQAC0GwisAAQStB+IvAABCEBAALIApBgAVqQQhqIApByAZqQQhqKQMANwMAIAogCikDyAY3A4AFQduKwABBKyAKQYAFakGIi8AAQZSMwAAQsgMAC0GwisAAQStB+IvAABCEBAALIApBgAVqQQhqIApByAZqQQhqKQMANwMAIAogCikDyAY3A4AFQduKwABBKyAKQYAFakGIi8AAQZSMwAAQsgMAC0GwisAAQStB+IvAABCEBAALIApBgAVqQQhqIApByAZqQQhqKQMANwMAIAogCikDyAY3A4AFQduKwABBKyAKQYAFakGIi8AAQZSMwAAQsgMAC0GAgsAAQStByIPAABCEBAALQdiBwABBFkHwgcAAENEEAAtB2IHAAEEWQfCBwAAQ0QQAC0GsgcAAQRlByIHAABDRBAALQdiBwABBFkHwgcAAENEEAAtB2IHAAEEWQfCBwAAQ0QQAC0GsgcAAQRlByIHAABDRBAALIAopAoQFIQcgISEEIC0hBgwBCyAKKQKEBSEHICEhBCAtISALIAenQf8BcUEIRg0AIAdCgH6DIQYMAgsgAEHoAGogDzYCACAAQeAAaiAmNwMAIABB2ABqICU3AwAgAEHQAGogBDcDACAAQcgAaiAkNwMAIABBwABqICE3AwAgAEE4aiAFNwMAIABBMGogIDcDACAAQShqIB83AwAgAEEgaiAGNwMAIABBGGogIjcDACAAQRBqICM3AwAgAEEIaiAJNwMADAMLQgAhBkIDIQcLIAAgB0L/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QgAgBUIAEKkDIANBgAhqIAdCACAGQgAQqQMgA0HQB2ogASkDECIJQgAgBEIAEKkDIANBoAdqIAIpAxgiCkIAIAVCABCpAyADQcAIaiAIQgAgB0IAEKkDIANBkAhqIAlCACAGQgAQqQMgA0HgB2ogASkDGCILQgAgBEIAEKkDIANBsAdqIAIpAyAiDEIAIAVCABCpAyADQdAIaiAKQgAgB0IAEKkDIANB8AhqIAlCACAIQgAQqQMgA0GgCGogC0IAIAZCABCpAyADQfAHaiABKQMgIgVCACAEQgAQqQMgA0HgCGogDEIAIAdCABCpAyADQaAJaiAKQgAgCUIAEKkDIANBgAlqIAtCACAIQgAQqQMgA0GwCGogBUIAIAZCABCpAyADQbAJaiAMQgAgCUIAEKkDIANBwAlqIAtCACAKQgAQqQMgA0GQCWogBUIAIAhCABCpAyADQeAJaiAMQgAgC0IAEKkDIANB0AlqIAVCACAKQgAQqQMgA0HwCWogBUIAIAxCABCpAyADQeAGaiADKQPwBiIFQpv80ZKxtMcCfkL/////////B4MiBEIAQu2n1+el45gBQgAQqQMgA0HQBmogBEIAQoHLtc73xfoGQgAQqQMgA0HABmogAykDwAciDSADKQOAB3wiBiADKQPQBnwiByAFIAMpA+AGIgh8IgVCNIggA0HgBmpBCGopAwAgA0HwBmpBCGopAwB8IAUgCFStfCIOQgyGhHwiCEKb/NGSsbTHAn5C/////////weDIgVCAELtp9fnpeOYAUIAEKkDIANBkAZqIARCAEL5vdMAQgAQqQMgA0GwBmogBUIAQoHLtc73xfoGQgAQqQMgA0GABmogAykDkAciDyADKQOACHwiCSADKQPQB3wiCiADKQOQBnwiCyADKQOwBnwiDCADKQPABiIQIAh8IhFCNIggA0HABmpBCGopAwAgA0HAB2pBCGopAwAgA0GAB2pBCGopAwB8IAYgDVStfCADQdAGakEIaikDAHwgByAGVK18IA5CNIh8IAggB1StfHwgESAQVK18IhJCDIaEfCIHQpv80ZKxtMcCfkL/////////B4MiBkIAQu2n1+el45gBQgAQqQMgA0GgBmogBUIAQvm90wBCABCpAyADQfAFaiAGQgBCgcu1zvfF+gZCABCpAyADQeAFaiADKQOQCCITIAMpA8AIfCIIIAMpA6AHfCINIAMpA+AHfCIOIAMpA6AGfCIQIAMpA/AFfCIRIAMpA4AGIhQgB3wiFUI0iCADQYAGakEIaikDACADQZAHakEIaikDACADQYAIakEIaikDAHwgCSAPVK18IANB0AdqQQhqKQMAfCAKIAlUrXwgA0GQBmpBCGopAwB8IAsgClStfCADQbAGakEIaikDAHwgDCALVK18IBJCNIh8IAcgDFStfHwgFSAUVK18IhZCDIaEfCIJQpv80ZKxtMcCfkL/////////B4MiB0IAQu2n1+el45gBQgAQqQMgA0GwBWogBkIAQvm90wBCABCpAyADQdAFaiAHQgBCgcu1zvfF+gZCABCpAyADQaAFaiADKQPQCCIXIAMpA/AIfCIKIARCLIZ8IgsgAykDoAh8IgwgAykDsAd8Ig8gAykD8Ad8IhIgAykDsAV8IhQgAykD0AV8IhUgAykD4AUiGCAJfCIZQjSIIANB4AVqQQhqKQMAIANBkAhqQQhqKQMAIANBwAhqQQhqKQMAfCAIIBNUrXwgA0GgB2pBCGopAwB8IA0gCFStfCADQeAHakEIaikDAHwgDiANVK18IANBoAZqQQhqKQMAfCAQIA5UrXwgA0HwBWpBCGopAwB8IBEgEFStfCAWQjSIfCAJIBFUrXx8IBkgGFStfCIaQgyGhHwiCUKb/NGSsbTHAn5C/////////weDIghCAELtp9fnpeOYAUIAEKkDIANBwAVqIAdCAEL5vdMAQgAQqQMgA0GQBWogCEIAQoHLtc73xfoGQgAQqQMgA0GABWogCEIAQvm90wBCABCpAyADQfAEaiAIQiyGIhsgAykD8Al8Ig0gAykD0AkiHCADKQPgCXwiDiAHQiyGfCIQIAMpA7AJIh0gAykDwAl8IhEgAykDkAl8IhMgBkIshnwiFiADKQOABXwiGCADKQOACSIeIAMpA6AJfCIZIAMpA+AIfCIfIAMpA7AIfCIgIAVCLIZ8IiEgAykDwAV8IiIgAykDkAV8IiMgAykDoAUiJCAJfCIlQjSIIANBoAVqQQhqKQMAIANB0AhqQQhqKQMAIANB8AhqQQhqKQMAfCAKIBdUrXwgBEIUiHwgCyAKVK18IANBoAhqQQhqKQMAfCAMIAtUrXwgA0GwB2pBCGopAwB8IA8gDFStfCADQfAHakEIaikDAHwgEiAPVK18IANBsAVqQQhqKQMAfCAUIBJUrXwgA0HQBWpBCGopAwB8IBUgFFStfCAaQjSIfCAJIBVUrXx8ICUgJFStfCIJQgyGhHwiBEI0iCADQYAJakEIaikDACADQaAJakEIaikDAHwgGSAeVK18IANB4AhqQQhqKQMAfCAfIBlUrXwgA0GwCGpBCGopAwB8ICAgH1StfCAFQhSIfCAhICBUrXwgA0HABWpBCGopAwB8ICIgIVStfCADQZAFakEIaikDAHwgIyAiVK18IAlCNIh8IAQgI1StfCIJQgyGhHwiBUI0iCADQbAJakEIaikDACADQcAJakEIaikDAHwgESAdVK18IANBkAlqQQhqKQMAfCATIBFUrXwgBkIUiHwgFiATVK18IANBgAVqQQhqKQMAfCAYIBZUrXwgCUI0iHwgBSAYVK18IglCDIaEfCIGQjSIIANB0AlqQQhqKQMAIANB4AlqQQhqKQMAfCAOIBxUrXwgB0IUiHwgECAOVK18IAlCNIh8IAYgEFStfCIJQgyGhHwiB0I0iCAIQhSIIANB8AlqQQhqKQMAfCANIBtUrXwgCUI0iHwgByANVK18QgyGhCAGQv////////8HgyAEQv////////8Hg0KT2KiY2pznfnwiBEI/hyAFQv////////8Hg3xC/7TKsYi6hXl8IgVCP4d8QofCrH98IgZCP4cgB0L/////////B4N8IgdCP4d8QoCAgICAgHx8IglCP4ciCELtp9fnpeOYAYMgBEL/////////B4N8IgpC/////////weDIgRCAEK7osvK3sz0BEIAEKkDIANBsARqIARCAEKfzfqt8fjYBkIAEKkDIANB8ANqIAhCgcu1zvfF+gaDIAVC/////////weDfCAKQjSIfCIKQv////////8HgyIFQgBCu6LLyt7M9ARCABCpAyADQaAEaiAEQgBChOyh29zM7wJCABCpAyADQbADaiAFQgBCn836rfH42AZCABCpAyADQfACaiAIQvm90wCDIAZC/////////weDfCAKQjSIfCIKQv////////8HgyIGQgBCu6LLyt7M9ARCABCpAyADQZAEaiAEQgBC/8L0ueyd9wFCABCpAyADQaADaiAFQgBChOyh29zM7wJCABCpAyADQbACaiAGQgBCn836rfH42AZCABCpAyADQfABaiAKQjSIIAdC/////////weDfCIKQv////////8HgyIHQgBCu6LLyt7M9ARCABCpAyADQYAEaiAEQgBCmuHw25GoAkIAEKkDIANBkANqIAVCAEL/wvS57J33AUIAEKkDIANBoAJqIAZCAEKE7KHb3MzvAkIAEKkDIANBsAFqIAdCAEKfzfqt8fjYBkIAEKkDIANB8ABqIAhCgICAgICABIMgCXwgCkI0iHxC/////////weDIgRCAEK7osvK3sz0BEIAEKkDIANBgANqIAVCAEKa4fDbkagCQgAQqQMgA0GQAmogBkIAQv/C9LnsnfcBQgAQqQMgA0GgAWogB0IAQoTsodvczO8CQgAQqQMgA0EwaiAEQgBCn836rfH42AZCABCpAyADQYACaiAGQgBCmuHw25GoAkIAEKkDIANBkAFqIAdCAEL/wvS57J33AUIAEKkDIANBIGogBEIAQoTsodvczO8CQgAQqQMgA0GAAWogB0IAQprh8NuRqAJCABCpAyADQRBqIARCAEL/wvS57J33AUIAEKkDIAMgBEIAQprh8NuRqAJCABCpAyADQeAEaiADKQPwBCIFQpv80ZKxtMcCfkL/////////B4MiBEIAQu2n1+el45gBQgAQqQMgA0HQBGogBEIAQoHLtc73xfoGQgAQqQMgA0HgA2ogAykD8AMiDSADKQOwBHwiBiADKQPQBHwiByAFIAMpA+AEIgh8IgVCNIggA0HgBGpBCGopAwAgA0HwBGpBCGopAwB8IAUgCFStfCIOQgyGhHwiCEKb/NGSsbTHAn5C/////////weDIgVCAELtp9fnpeOYAUIAEKkDIANBwARqIARCAEL5vdMAQgAQqQMgA0HQA2ogBUIAQoHLtc73xfoGQgAQqQMgA0HgAmogAykDsAMiDyADKQOgBHwiCSADKQPwAnwiCiADKQPABHwiCyADKQPQA3wiDCADKQPgAyIQIAh8IhFCNIggA0HgA2pBCGopAwAgA0HwA2pBCGopAwAgA0GwBGpBCGopAwB8IAYgDVStfCADQdAEakEIaikDAHwgByAGVK18IA5CNIh8IAggB1StfHwgESAQVK18IhJCDIaEfCIHQpv80ZKxtMcCfkL/////////B4MiBkIAQu2n1+el45gBQgAQqQMgA0HAA2ogBUIAQvm90wBCABCpAyADQdACaiAGQgBCgcu1zvfF+gZCABCpAyADQeABaiADKQOgAyITIAMpA5AEfCIIIAMpA7ACfCINIAMpA/ABfCIOIAMpA8ADfCIQIAMpA9ACfCIRIAMpA+ACIhQgB3wiFUI0iCADQeACakEIaikDACADQbADakEIaikDACADQaAEakEIaikDAHwgCSAPVK18IANB8AJqQQhqKQMAfCAKIAlUrXwgA0HABGpBCGopAwB8IAsgClStfCADQdADakEIaikDAHwgDCALVK18IBJCNIh8IAcgDFStfHwgFSAUVK18IhZCDIaEfCIJQpv80ZKxtMcCfkL/////////B4MiB0IAQu2n1+el45gBQgAQqQMgA0HAAmogBkIAQvm90wBCABCpAyADQdABaiAHQgBCgcu1zvfF+gZCABCpAyADQeAAaiADKQOQAyIXIAMpA4AEfCIKIAMpA6ACfCILIARCLIZ8IgwgAykDsAF8Ig8gAykDcHwiEiADKQPAAnwiFCADKQPQAXwiFSADKQPgASIYIAl8IhlCNIggA0HgAWpBCGopAwAgA0GgA2pBCGopAwAgA0GQBGpBCGopAwB8IAggE1StfCADQbACakEIaikDAHwgDSAIVK18IANB8AFqQQhqKQMAfCAOIA1UrXwgA0HAA2pBCGopAwB8IBAgDlStfCADQdACakEIaikDAHwgESAQVK18IBZCNIh8IAkgEVStfHwgGSAYVK18IhpCDIaEfCIJQpv80ZKxtMcCfkL/////////B4MiCEIAQu2n1+el45gBQgAQqQMgA0HAAWogB0IAQvm90wBCABCpAyADQdAAaiAIQgBCgcu1zvfF+gZCABCpAyADQcAAaiAIQgBC+b3TAEIAEKkDIAAgCEIshiIbIAMpAwB8Ig0gAykDECIcIAMpA4ABfCIOIAdCLIZ8IhAgAykDkAEiHSADKQOAAnwiESADKQMgfCITIAZCLIZ8IhYgAykDQHwiGCADKQOQAiIeIAMpA4ADfCIZIAMpA6ABfCIfIAMpAzB8IiAgBUIshnwiISADKQPAAXwiIiADKQNQfCIjIAMpA2AiJCAJfCIlQjSIIANB4ABqQQhqKQMAIANBkANqQQhqKQMAIANBgARqQQhqKQMAfCAKIBdUrXwgA0GgAmpBCGopAwB8IAsgClStfCAEQhSIfCAMIAtUrXwgA0GwAWpBCGopAwB8IA8gDFStfCADQfAAakEIaikDAHwgEiAPVK18IANBwAJqQQhqKQMAfCAUIBJUrXwgA0HQAWpBCGopAwB8IBUgFFStfCAaQjSIfCAJIBVUrXx8ICUgJFStfCIJQgyGhHwiBEI0iCADQZACakEIaikDACADQYADakEIaikDAHwgGSAeVK18IANBoAFqQQhqKQMAfCAfIBlUrXwgA0EwakEIaikDAHwgICAfVK18IAVCFIh8ICEgIFStfCADQcABakEIaikDAHwgIiAhVK18IANB0ABqQQhqKQMAfCAjICJUrXwgCUI0iHwgBCAjVK18IglCDIaEfCIFQjSIIANBkAFqQQhqKQMAIANBgAJqQQhqKQMAfCARIB1UrXwgA0EgakEIaikDAHwgEyARVK18IAZCFIh8IBYgE1StfCADQcAAakEIaikDAHwgGCAWVK18IAlCNIh8IAUgGFStfCIJQgyGhHwiBkI0iCADQRBqQQhqKQMAIANBgAFqQQhqKQMAfCAOIBxUrXwgB0IUiHwgECAOVK18IAlCNIh8IAYgEFStfCIJQgyGhHwiB0I0iCAIQhSIIANBCGopAwB8IA0gG1StfCAJQjSIfCAHIA1UrXxCDIaEIAZC/////////weDIARC/////////weDQpPYqJjanOd+fCIGQj+HIAVC/////////weDfEL/tMqxiLqFeXwiBUI/h3xCh8Ksf3wiCEI/hyAHQv////////8Hg3wiB0I/h3xCgICAgICAfHwiCUI/hyIEQu2n1+el45gBgyAGQv////////8Hg3wiBkL/////////B4M3AwAgACAEQoHLtc73xfoGgyAFQv////////8Hg3wgBkI0iHwiBUL/////////B4M3AwggACAEQvm90wCDIAhC/////////weDfCAFQjSIfCIFQv////////8HgzcDECAAIAVCNIggB0L/////////B4N8IgVC/////////weDNwMYIAAgBEKAgICAgIAEgyAJfCAFQjSIfEL/////////B4M3AyAgA0GACmokAAvlKwMIfwR+BHwjAEGQBGsiDSQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCALRQ0AIAsoAgAiDkF/Rg0BIAsgDkEBajYCAAJAQQAoApC/RkEDRg0AIA1BAToAwAMgDSANQcADajYCcEGQv8YAQQAgDUHwAGpB8I3AAEGwh8AAEJIBCyACQQdNDQJChQQhFSACQZADRw0LAkAgAUEIaiIPQQdxRQ0AQgUhFQwMCyAEQQdNDQMgBEGQA0cNC0IFIRUgA0EIaiIQQQdxDQsgBkEHTQ0EQQEhDgJAIAZBgAxGDQBChQQhFQwLCwJAIAVBCGoiEUEHcUUNAEIFIRUMCwtCAiEVIAEtAEsNCSADLQBLDQkgDUHwAGogESABQShqIhIQ4AMgDSgCcA0FIA1BwABqIAwgDUH4AGopAwAQvwIgDSkDSCEWIA0pA0AhFyANQdAAaiALKAIEIhMgEyALQQxqKAIAQZAabGoQ1wIgDUHwAGogESANKAJQIhMgDSgCWBC+ASANKQJ0IRUgDSgCcA0HIA0gFTcDYCANIA1B8ABqQQxqKQIANwNoIBIgA0EoakEgEIEGQQBMDQYgDUHQA2pBCGpBACkCoIlANwMAIA1BwANqQQhqIA1B4ABqQQhqIhIpAwA3AwAgDSANKQNgNwPAAyANQQApApiJQDcD0AMgDUHwAGogDUHQA2ogDUHAA2oQOAJAIA0oAnAiFEUNAAJAAkAgFEF/ag4CAAEAC0HQhcAAQRNB5IXAABDRBAALQbCFwABBEEHAhcAAENEEAAsgEiANQfwAaikCADcDACANIA0pAnQ3A2AMBgsQ4wUACxDkBQALQQggAkHoiMAAEPQFAAtBCCAEQfiIwAAQ9AUAC0EIIAZBiInAABD0BQALIA0pAnQhFQwECyANQcADakEIaiANQeAAakEIaikDADcDACANIA0pA2A3A8ADIA1B8ABqIBEgDyAQIAcgCCAJIAogDUHAA2ogDBA0IA0oAnBFDQEgDSkCdCEVCyANKAJUIhFFDQEgEyARrUIkfqdBBBC4BQwCCyANQdgBaigCACERIA1BsANqIBAgDUHQAWopAwAiGBCLAyANQcADaiAPIBcQiwMgDUHwAGogDUGwA2ogDUHAA2oQOAJAIA0oAnAiDkUNAAJAAkAgDkF/ag4CAAEAC0HQhcAAQRNB5IXAABDRBAALQbCFwABBEEHAhcAAENEEAAsgDUHgAWpBCGogDUH8AGopAgA3AwAgDSANKQJ0NwPgAQJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAJUA0AIAUtAOgKDQELIA1B8AFqQQhqIA1B4ABqQQhqKQMANwMAIA0gDSkDYDcD8AEgDUHwAGogBTEAiAkQuQQgDSgCcEUNAiANQYACakEIaiANQfwAaiIOKQIANwMAIA0gDSkCdDcDgAIgDUGQAmogDyAHEIsDIA1BoAJqIBAgCBCLAyANQZADaiAPEIwDIA1BsANqIBAgChCLAyANQcADakEIaiANQZACakEIaikDADcDACANIA0pA5ACNwPAAyANQfAAaiANQbADaiANQcADahA4AkAgDSgCcCISRQ0AAkACQCASQX9qDgIAAQALQdCFwABBE0HkhcAAENEEAAtBsIXAAEEQQcCFwAAQ0QQACyANQaADakEIaiAOKQIANwMAIA1B4ANqQQhqQQApAqCJQDcDACANIA0pAnQ3A6ADIA1BACkCmIlANwPgAyANQfAAaiANQeADaiANQaADahDBBSANKAJwDQMgDUHAA2pBCGoiDiANQfwAaiISKQIANwMAIA0gDSkCdDcDwAMgDUHwAGogDUGQA2ogDUHAA2oQWyANKAJwDQQgDUGwAmpBCGogEikCADcDACANIA0pAnQ3A7ACIA1BkANqIBAQjAMgDUGwA2ogDyAJEIsDIA4gDUGgAmpBCGopAwA3AwAgDSANKQOgAjcDwAMgDUHwAGogDUGwA2ogDUHAA2oQOAJAIA0oAnAiDkUNAAJAAkAgDkF/ag4CAAEAC0HQhcAAQRNB5IXAABDRBAALQbCFwABBEEHAhcAAENEEAAsgDUGgA2pBCGogDUH8AGoiDikCADcDACANQfADakEIakEAKQKgiUA3AwAgDSANKQJ0NwOgAyANQQApApiJQDcD8AMgDUHwAGogDUHwA2ogDUGgA2oQwQUgDSgCcA0FIA1BwANqQQhqIA4pAgA3AwAgDSANKQJ0NwPAAyANQfAAaiANQZADaiANQcADahBbIA0oAnANBiANQcACakEIaiANQfwAaiIOKQIANwMAIA0gDSkCdDcDwAIgDUGwA2ogDyAHEIsDIA1BwANqIBAgChCLAyANQfAAaiANQbADaiANQcADahDBBSANKAJwDQcgDUHQAmpBCGogDikCADcDACANIA0pAnQ3A9ACIA1BsANqIBAgCBCLAyANQcADaiAPIAkQiwMgDUHwAGogDUGwA2ogDUHAA2oQwQUgDSgCcA0IIA1B4AJqQQhqIA1B/ABqIg4pAgAiFTcDACANIA0pAnQiCTcD4AIgDUGwA2pBCGoiDyAVNwMAIA0gCTcDsAMgDUHAA2pBCGoiECANQcACakEIaikDADcDACANIA0pA8ACNwPAAyANQfAAaiANQbADaiANQcADahA4AkAgDSgCcCISRQ0AAkACQCASQX9qDgIAAQALQdCFwABBE0HkhcAAENEEAAtBsIXAAEEQQcCFwAAQ0QQACyANQZADakEIaiAOKQIANwMAIA0gDSkCdDcDkAMgDyANQdACakEIaikDADcDACANIA0pA9ACNwOwAyAQIA1BsAJqQQhqKQMANwMAIA0gDSkDsAI3A8ADIA1B8ABqIA1BsANqIA1BwANqEDgCQCANKAJwIg5FDQACQAJAIA5Bf2oOAgABAAtB0IXAAEETQeSFwAAQ0QQAC0GwhcAAQRBBwIXAABDRBAALIA1BoANqQQhqIA1B/ABqIg4pAgA3AwAgDSANKQJ0NwOgAyANQfAAaiANQZADaiANQaADahA4IA0oAnAiD0UNAQJAAkAgD0F/ag4CAAEAC0HQhcAAQRNB5IXAABDRBAALQbCFwABBEEHAhcAAENEEAAsgDUGQA2pBCGogDUHgAGpBCGopAwA3AwAgDSANKQNgNwOQAwwPCyANQcADakEIaiAOKQIANwMAIA0gDSkCdDcDwAMCQAJAIA1BwANqIA1B8AFqEJQGQf8BcUH/AUYNACANQbADakEIaiANQfABakEIaikDADcDACANIA0pA/ABNwOwAwwBCyANQbADakEIaiIOIA1B4AJqQQhqKQMANwMAIA0gDSkD4AI3A7ADIA1BwANqQQhqIg8gDUHAAmpBCGopAwA3AwAgDSANKQPAAjcDwAMgDUHwAGogDUGwA2ogDUHAA2oQOAJAIA0oAnAiEEUNAAJAAkAgEEF/ag4CAAEAC0HQhcAAQRNB5IXAABDRBAALQbCFwABBEEHAhcAAENEEAAsgDUGQA2pBCGogDUH8AGoiECkCADcDACANIA0pAnQ3A5ADIA4gDUHQAmpBCGopAwA3AwAgDSANKQPQAjcDsAMgDyANQbACakEIaikDADcDACANIA0pA7ACNwPAAyANQfAAaiANQbADaiANQcADahA4AkAgDSgCcCIORQ0AAkACQCAOQX9qDgIAAQALQdCFwABBE0HkhcAAENEEAAtBsIXAAEEQQcCFwAAQ0QQACyANQaADakEIaiAQKQIANwMAIA0gDSkCdDcDoAMgDUHwAGogDUGQA2ogDUGgA2oQOAJAIA0oAnAiDkUNAAJAAkAgDkF/ag4CAAEAC0HQhcAAQRNB5IXAABDRBAALQbCFwABBEEHAhcAAENEEAAsgDUGAA2pBCGogDUH8AGoiDikCADcDACANIA0pAnQ3A4ADIA1BsANqQQhqIA1BgAJqQQhqKQMANwMAIA0gDSkDgAI3A7ADIA1BwANqQQhqIA1B8AFqQQhqKQMANwMAIA0gDSkD8AE3A8ADIA1B8ABqIA1BsANqIA1BwANqEFsgDSgCcA0IIA1BoANqQQhqIA4pAgA3AwAgDSANKQJ0NwOgAyANQcADakEIaiIOIA1B0AJqQQhqKQMANwMAIA0gDSkD0AI3A8ADIA1B8ABqIA1BoANqIA1BwANqEFsgDSgCcA0JIA1BsANqQQhqIA1B/ABqIg8pAgA3AwAgDSANKQJ0NwOwAyAOIA1BsAJqQQhqKQMANwMAIA0gDSkDsAI3A8ADIA1B8ABqIA1BsANqIA1BwANqEDgCQCANKAJwIg5FDQACQAJAIA5Bf2oOAgABAAtB0IXAAEETQeSFwAAQ0QQAC0GwhcAAQRBBwIXAABDRBAALIA1BkANqQQhqIA8pAgA3AwAgDSANKQJ0NwOQAyANQbADakEIaiANQeACakEIaikDADcDACANIA0pA+ACNwOwAyANQcADakEIaiANQcACakEIaikDADcDACANIA0pA8ACNwPAAyANQfAAaiANQbADaiANQcADahA4AkAgDSgCcCIORQ0AAkACQCAOQX9qDgIAAQALQdCFwABBE0HkhcAAENEEAAtBsIXAAEEQQcCFwAAQ0QQACyANQaADakEIaiANQfwAaiIOKQIANwMAIA0gDSkCdDcDoAMgDUHwAGogDUGQA2ogDUGgA2oQwQUgDSgCcA0KIA1BwANqQQhqIg8gDikCADcDACANIA0pAnQ3A8ADIA1B8ABqIA1BgANqIA1BwANqEFsgDSgCcA0LIA1B8AJqQQhqIA1B/ABqIg4pAgA3AwAgDSANKQJ0NwPwAiANQbADakEIaiANQYACakEIaikDADcDACANIA0pA4ACNwOwAyAPIA1B4AJqQQhqKQMANwMAIA0gDSkD4AI3A8ADIA1B8ABqIA1BsANqIA1BwANqEFsgDSgCcA0MIA1BoANqQQhqIA4pAgA3AwAgDSANKQJ0NwOgAyANQcADakEIaiIOIA1BwAJqQQhqKQMANwMAIA0gDSkDwAI3A8ADIA1B8ABqIA1BoANqIA1BwANqEDgCQCANKAJwIg9FDQACQAJAIA9Bf2oOAgABAAtB0IXAAEETQeSFwAAQ0QQAC0GwhcAAQRBBwIXAABDRBAALIA1BkANqQQhqIA1B/ABqIg8pAgA3AwAgDSANKQJ0NwOQAyANQbADakEIaiANQfABakEIaikDADcDACANIA0pA/ABNwOwAyAOIA1B0AJqQQhqKQMANwMAIA0gDSkD0AI3A8ADIA1B8ABqIA1BsANqIA1BwANqEFsgDSgCcA0NIA1BoANqQQhqIA8pAgA3AwAgDSANKQJ0NwOgAyANQcADakEIaiANQbACakEIaikDADcDACANIA0pA7ACNwPAAyANQfAAaiANQaADaiANQcADahA4AkAgDSgCcCIORQ0AAkACQCAOQX9qDgIAAQALQdCFwABBE0HkhcAAENEEAAtBsIXAAEEQQcCFwAAQ0QQACyANQbADakEIaiANQfwAaiIOKQIANwMAIA0gDSkCdDcDsAMgDUHwAGogDUGQA2ogDUGwA2oQwQUgDSgCcA0OIA1BwANqQQhqIA4pAgA3AwAgDSANKQJ0NwPAAyANQfAAaiANQfACaiANQcADahA4AkAgDSgCcCIORQ0AAkACQCAOQX9qDgIAAQALQdCFwABBE0HkhcAAENEEAAtBsIXAAEEQQcCFwAAQ0QQACyANQbADakEIaiANQfwAaikCADcDACANIA0pAnQ3A7ADCyANQZADakEIaiANQbADakEIaikDADcDACANIA0pA7ADNwOQAwwOC0HAh8AAQStBzIjAABCEBAALQaSEwABBE0GghcAAENEEAAtB9IXAAEEZQZCGwAAQ0QQAC0GkhMAAQRNBoIXAABDRBAALQfSFwABBGUGQhsAAENEEAAtBpITAAEETQaCFwAAQ0QQAC0GkhMAAQRNBoIXAABDRBAALQfSFwABBGUGQhsAAENEEAAtB9IXAAEEZQZCGwAAQ0QQAC0GkhMAAQRNBoIXAABDRBAALQfSFwABBGUGQhsAAENEEAAtB9IXAAEEZQZCGwAAQ0QQAC0H0hcAAQRlBkIbAABDRBAALQaSEwABBE0GghcAAENEEAAsCQAJAAkACQAJAAkACQCANQZADakGoicAAEJQGQf8BcQ0ARAAAAAAAAAAAIRkMAQsgDUGwA2pBCGogDUHgAWpBCGopAwA3AwAgDSANKQPgATcDsAMgDUHAA2pBCGogDUGQA2pBCGopAwA3AwAgDSANKQOQAzcDwAMgDUHwAGogDUGwA2ogDUHAA2oQOAJAIA0oAnAiDkUNAAJAAkAgDkF/ag4CAAEAC0HQhcAAQRNB5IXAABDRBAALQbCFwABBEEHAhcAAENEEAAsgDUGgA2pBCGogDUH8AGoiDikCADcDACANQYAEakEIakEAKQKgiUA3AwAgDSANKQJ0NwOgAyANQQApApiJQDcDgAQgDUHwAGogDUGABGogDUGgA2oQwgUgDSgCcA0BIA1ByANqIA4pAgA3AwAgDSANKQJ0NwPAAyANQTBqIA1BwANqELYBIA0pAzCnRQ0CIA0rAzghGQsgDUHAA2ogDUHgAWpBCBDABSANQSBqIA1BwANqELYBIA0oAiBFDQIgDSsDKCEaIA1B8ABqIA1BkANqQQgQwAUgDUEQaiANQfAAahC2ASANKAIQRQ0DIA0rAxghGyANIA1B4ABqELYBIA0pAwCnRQ0EIA0rAwghHCAMQiCIIQkCQCANKAJUIg5FDQAgEyAOrUIkfqdBBBC4BQsgDEIghiEVIAmnIQ9BACEODAYLQaCGwABBFkG4hsAAENEEAAtBwIfAAEErQbiJwAAQhAQAC0HAh8AAQStByInAABCEBAALQcCHwABBK0HYicAAEIQEAAtBwIfAAEErQeiJwAAQhAQACwsgCyALKAIAQX9qNgIADAELIAsgCygCAEF/ajYCAEEBIQ4gBkUNAQsgBSAGQQEQuAULAkAgBEUNACADIARBARC4BQsgASACQQEQuAUCQAJAAkAgDg0AQcgAQQgQmAUiC0UNAiALIBE2AkAgCyAcOQM4IAsgGzkDMCALIBo5AyggCyAZOQMgIAsgGDcDGCALIBY3AxAgCyAPNgIMQQAhAiALQQA2AgAgCyAVQiCIPgIIQQAhBAwBCyANIBU3A+ADIA1BhAFqQQE2AgAgDUIBNwJ0IA1ByIzAADYCcCANQQM2AvQDIA0gDUHwA2o2AoABIA0gDUHgA2o2AvADIA1BgARqIA1B8ABqELEBIA0oAoAEIgsgDSgCiAQQACEEAkAgDSgChAQiAkUNACALIAJBARC4BQsCQCANLQDgA0EHRw0AIA1B4ANqQQRyEJUFC0EBIQILIAAgAjYCCCAAIAQ2AgQgACALNgIAIA1BkARqJAAPC0HIAEEIEO8FAAuaIwILfwt+IwBB0ABrIgMkACACQQRqKAIAIQQgAigCDCEFAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAIoAggiBg0AIAUNACAERQ0BCyABQQRqKAIAIQcgASgCDCEIAkAgASgCCCIJDQAgCA0AIAdFDQILIAEoAgAhCiACKAIAIQsgAyAHNgJIIAMgCDYCRCADIAk2AkAgCkEQdkH/AXEgC0EQdkH/AXFrIQEgBCAFcg0FIAitIQ4gBq0hDyAHDQIgDkIghiAJrSIQhCIRUEUNA0EAIQIgBkUNBAwICyAAQQI2AgAMDAsgAEIANwIAIABBEGpBADYCACAAQQhqQgA3AgAMCwsgBkUNAyADIAetQiCGIA6EIA+AIhE3AkQgEachCCARQiCIpyECIA4gESAPfn1CIIYgCa2EIg5QDQUgAyAOIA+ApyIFNgJAIAkgBiAFbGshBCAFIQkMBgsCQCAGRQ0AIAMgESAPgCIONwNAIAkgBiAOpyIFbGshBCAOQiCIpyEIQQAhAiAFIQkMBgtBsM3BAEEZQbjOwQAQhAQACyABQX9KDQYgAyAQQQAgAWsiAkEJIAJBCUkbQQJ0QejOwQBqNQIAIg9+IhE+AkAgAyAOIA9+IBFCIIh8Ig4+AkQgAyAOQiCIPgJIQbDQwQBBGUGg0MEAEIQEAAsgBa0iEkIghiAGrYQgBGcgBWcgBBsiAq0iDoYhDyAHrUIghiAIrSIQhEEgIAJrrSITiCIRpyECIBBCIIYgCa2EIA6GIg5CIIgiFKchBSAEDQFBACEIIANBADYCSAJAAkACQCARQiCIpyIJDQAgEUIghiAUhCIRIA9UDQEgD1ANAiARIA+AIhCnIQggESAQIA9+fSIRpyEFIBFCIIinIQIMAQsCQAJAAkAgCSAPQiCIIhKnTw0AIBEgESASgCIQIBJ+fUIghiAUIBAgD0L/////D4N+IhJ9fCIRIBJCf4VWDQEgESESDAILIBQgD0Ighn0gEUIghiIQfCERIBQgD3wgEHynIA+nIglrIQVBACEIA0AgBSAJaiEFIAhBf2ohCCARIA98IhAgEVohAiAQIREgAg0ACyAQQiCIpyECDAILA0AgEEJ/fCEQIBEgD3wiEiARVCECIBIhESACRQ0ACwsgEkIgiKchAiAQpyEIIBKnIQULIAMgCDYCRAJAAkACQCACDQBBACEJIAWtQiCGIA5C/////w+DhCIRIA9UDQEgD1ANAiARIA+AIg6nIQkgESAOIA9+fSIOQiCIpyEFDAELIAWtIRECQAJAAkAgAiAPQiCIIhKnTw0AIBEgAq1CIIYgEYQgEoAiECASfn1CIIYgDkL/////D4MgECAPQv////8Pg34iDn18IhEgDkJ/hVYNASARIQ4MAgsgDkL/////D4MgD0Ighn0gEUIghnwhEUEAIQkDQCAJQX9qIQkgESAPfCIOIBFaIQIgDiERIAINAAsgDkIgiKchBQwCCwNAIBBCf3whECARIA98Ig4gEVQhAiAOIREgAkUNAAsLIA5CIIinIQUgEKchCQsgAyAJNgJAIA9C/////w+DIRVCACAPQiCGfSEWIA9CIIgiF6chDEEAIQRBACEGA0ACQAJAAkACQAJAAkACQCAFrSIQQiCGIA5C/////w+DIg6EIhFCAFINACABQX9KDQJBACABayICQQkgAkEJSRshBQwBCwJAAkAgAUEcRg0AIANBKGogA0HAAGogARCSAiADKAIoQQFHDREgAygCLCIFDQELAkAgEUIAUw0AIBFCAYYiDiAPVg0AIA4gD1INDyADLQBAQQFxRQ0PCyADQSBqIANBwABqIAEQ/gIgAygCIA0QIAMoAiQhAQwOCyAFQQlLDQJBASEGIAMoAkghBCADKAJEIQggAygCQCEJCyADIAitIAVBAnRB6M7BAGo1AgAiEX4gCa0gEX4iE0IgiHwiFEIgiCAErSARfnwiEqciBDYCSCASQoCAgIAQWg0OAkAgDiARfiIOQiCIIBEgEH58IhBCIIinIgINAEEAIQIgEEIghiAOQv////8Pg4QiESAPVA0FIA9QDQMgESARIA+AIhIgD359Ig5CIIghECASpyECDAULAkACQCACIAxPDQAgECAQIBeAIhEgF359QiCGIA5C/////w+DIBEgFX4iEH18Ig4gEEJ/hVYNAQwFCyAOQv////8PgyAWhCAQQiCGfCERQQAhAgNAIAJBf2ohAiARIA98Ig4gEVohCCAOIREgCA0ACyAOQiCIIRAMBQsDQCAR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Aw0AQRshAwwBCyALQRtqIgdBJ0sNASANIAdBAnRqIAM2AgBBHCEDCyADIAtqIgMgDiAOIANJGyEOIAohBwwBCwsgB0EoQcSmwgAQxwMACyADQSggAxD1BQALIAVBKEHEpsIAEMcDAAsgAEEEaiANQaABEP8FGiAAIA42AgALIAJBoAFqJAAgAAu7IQIifwp+IwBBgA9rIgIkACACQeANakEIaiABQTBqIgMpAwAiJCABQQhqIgQpAwAiJXw3AwAgAkHgDWpBEGogAUE4aiIFKQMAIiYgAUEQaiIGKQMAIid8NwMAIAJB4A1qQRhqIAFBwABqIgcpAwAiKCABQRhqIggpAwAiKXw3AwAgAkHgDWpBIGogAUHIAGoiCSkDACIqIAFBIGoiCikDACIrfDcDACACQeANakEwaiAkICV9QvD///////8/fCIkQv////////8DgyABKQMoIiUgASkDACIsfULQ/f//////P3wiLUIziHw3AwAgAkHgDWpBOGogJiAnfULw////////P3wiJkL/////////A4MgJEIziHw3AwAgAkHgDWpBwABqICggKX1C8P///////z98IiRC/////////wODICZCM4h8NwMAIAJB4A1qQcgAaiAqICt9QvD///////8/fCImQv////////8DgyAkQjOIfDcDACACICUgLHw3A+ANIAIgJkIziEITfiAtQv////////8Dg3w3A4gOIAJB4A1qQfAAaiABQfAAaiILKQMANwMAIAJB4A1qQegAaiABQegAaiIMKQMANwMAIAJB4A1qQeAAaiABQeAAaiINKQMANwMAIAJB4A1qQdgAaiABQdgAaiIOKQMANwMAIAIgASkDUDcDsA4gAkHgDWpB+ABqIg8gAUH4AGpBqOvAABBQIAIgAkHgDWpBoAEQ/wUiAkGgAWogAkHgDWpBoAEQ/wUhECACQcACaiACQeANakGgARD/BSERIAJB4ANqIAJB4A1qQaABEP8FIRIgAkGABWogAkHgDWpBoAEQ/wUhEyACQaAGaiACQeANakGgARD/BSEUIAJBwAdqIAJB4A1qQaABEP8FIRUgAkHgCGogAkHgDWpBoAEQ/wUhFiACQcAMakEgaiAKKQMANwMAIAJBwAxqQRhqIAgpAwA3AwAgAkHADGpBEGogBikDADcDACACQcAMakEIaiAEKQMANwMAIAJBwAxqQTBqIgYgAykDADcDACACQcAMakE4aiIIIAUpAwA3AwAgAkHADGpBwABqIgUgBykDADcDACACQcAMakHIAGoiByAJKQMANwMAIAIgASkDADcDwAwgAiABKQMoNwPoDCACQcAMakHwAGoiCSALKQMANwMAIAJBwAxqQegAaiIKIAwpAwA3AwAgAkHADGpB4ABqIgsgDSkDADcDACACQcAMakHYAGoiDCAOKQMANwMAIAIgASkDUDcDkA0gAkHgDWogAkHADGoQeCACQYAKaiACQeANaiAPEFAgAkGACmpBKGogAkHgDWpBKGoiASACQeANakHQAGoiAxBQIAJBgApqQdAAaiADIA8QUCACQYAKakH4AGogAkHgDWogARBQIAJB4A1qIAJBgApqIAIQbSACQcAMaiACQeANaiAPEFAgAkHADGpBKGoiDSABIAMQUCACQcAMakHQAGoiDiADIA8QUCACQcAMakH4AGoiBCACQeANaiABEFAgAkGgC2pBCGoiFyAGKQMAIiQgAikDyAwiJXw3AwAgAkGgC2pBEGoiGCAIKQMAIiYgAikD0AwiJ3w3AwAgAkGgC2pBGGoiGSAFKQMAIiggAikD2AwiKXw3AwAgAkGgC2pBIGoiGiAHKQMAIiogAikD4AwiK3w3AwAgAkGgC2pBMGoiGyAkICV9QvD///////8/fCIkQv////////8DgyACKQPoDCIlIAIpA8AMIix9QtD9//////8/fCItQjOIfDcDACACQaALakE4aiIcICYgJ31C8P///////z98IiZC/////////wODICRCM4h8NwMAIAJBoAtqQcAAaiIdICggKX1C8P///////z98IiRC/////////wODICZCM4h8NwMAIAJBoAtqQcgAaiIeICogK31C8P///////z98IiZC/////////wODICRCM4h8NwMAIAIgJSAsfDcDoAsgAiAmQjOIQhN+IC1C/////////wODfDcDyAsgAkGgC2pB8ABqIh8gCSkDADcDACACQaALakHoAGoiICAKKQMANwMAIAJBoAtqQeAAaiIhIAspAwA3AwAgAkGgC2pB2ABqIiIgDCkDADcDACACIAIpA5ANNwPwCyACQaALakH4AGoiIyAEQajrwAAQUCACQeANaiACQYAKaiAQIAJBoAtqQaABEP8FEG0gAkHADGogAkHgDWogDxBQIA0gASADEFAgDiADIA8QUCAEIAJB4A1qIAEQUCAXIAYpAwAiJCACKQPIDCIlfDcDACAYIAgpAwAiJiACKQPQDCInfDcDACAZIAUpAwAiKCACKQPYDCIpfDcDACAaIAcpAwAiKiACKQPgDCIrfDcDACAbICQgJX1C8P///////z98IiRC/////////wODIAIpA+gMIiUgAikDwAwiLH1C0P3//////z98Ii1CM4h8NwMAIBwgJiAnfULw////////P3wiJkL/////////A4MgJEIziHw3AwAgHSAoICl9QvD///////8/fCIkQv////////8DgyAmQjOIfDcDACAeICogK31C8P///////z98IiZC/////////wODICRCM4h8NwMAIAIgJSAsfDcDoAsgAiAmQjOIQhN+IC1C/////////wODfDcDyAsgHyAJKQMANwMAICAgCikDADcDACAhIAspAwA3AwAgIiAMKQMANwMAIAIgAikDkA03A/ALICMgBEGo68AAEFAgAkHgDWogAkGACmogESACQaALakGgARD/BRBtIAJBwAxqIAJB4A1qIA8QUCANIAEgAxBQIA4gAyAPEFAgBCACQeANaiABEFAgFyAGKQMAIiQgAikDyAwiJXw3AwAgGCAIKQMAIiYgAikD0AwiJ3w3AwAgGSAFKQMAIiggAikD2AwiKXw3AwAgGiAHKQMAIiogAikD4AwiK3w3AwAgGyAkICV9QvD///////8/fCIkQv////////8DgyACKQPoDCIlIAIpA8AMIix9QtD9//////8/fCItQjOIfDcDACAcICYgJ31C8P///////z98IiZC/////////wODICRCM4h8NwMAIB0gKCApfULw////////P3wiJEL/////////A4MgJkIziHw3AwAgHiAqICt9QvD///////8/fCImQv////////8DgyAkQjOIfDcDACACICUgLHw3A6ALIAIgJkIziEITfiAtQv////////8Dg3w3A8gLIB8gCSkDADcDACAgIAopAwA3AwAgISALKQMANwMAICIgDCkDADcDACACIAIpA5ANNwPwCyAjIARBqOvAABBQIAJB4A1qIAJBgApqIBIgAkGgC2pBoAEQ/wUQbSACQcAMaiACQeANaiAPEFAgDSABIAMQUCAOIAMgDxBQIAQgAkHgDWogARBQIBcgBikDACIkIAIpA8gMIiV8NwMAIBggCCkDACImIAIpA9AMIid8NwMAIBkgBSkDACIoIAIpA9gMIil8NwMAIBogBykDACIqIAIpA+AMIit8NwMAIBsgJCAlfULw////////P3wiJEL/////////A4MgAikD6AwiJSACKQPADCIsfULQ/f//////P3wiLUIziHw3AwAgHCAmICd9QvD///////8/fCImQv////////8DgyAkQjOIfDcDACAdICggKX1C8P///////z98IiRC/////////wODICZCM4h8NwMAIB4gKiArfULw////////P3wiJkL/////////A4MgJEIziHw3AwAgAiAlICx8NwOgCyACICZCM4hCE34gLUL/////////A4N8NwPICyAfIAkpAwA3AwAgICAKKQMANwMAICEgCykDADcDACAiIAwpAwA3AwAgAiACKQOQDTcD8AsgIyAEQajrwAAQUCACQeANaiACQYAKaiATIAJBoAtqQaABEP8FEG0gAkHADGogAkHgDWogDxBQIA0gASADEFAgDiADIA8QUCAEIAJB4A1qIAEQUCAXIAYpAwAiJCACKQPIDCIlfDcDACAYIAgpAwAiJiACKQPQDCInfDcDACAZIAUpAwAiKCACKQPYDCIpfDcDACAaIAcpAwAiKiACKQPgDCIrfDcDACAbICQgJX1C8P///////z98IiRC/////////wODIAIpA+gMIiUgAikDwAwiLH1C0P3//////z98Ii1CM4h8NwMAIBwgJiAnfULw////////P3wiJkL/////////A4MgJEIziHw3AwAgHSAoICl9QvD///////8/fCIkQv////////8DgyAmQjOIfDcDACAeICogK31C8P///////z98IiZC/////////wODICRCM4h8NwMAIAIgJSAsfDcDoAsgAiAmQjOIQhN+IC1C/////////wODfDcDyAsgHyAJKQMANwMAICAgCikDADcDACAhIAspAwA3AwAgIiAMKQMANwMAIAIgAikDkA03A/ALICMgBEGo68AAEFAgAkHgDWogAkGACmogFCACQaALakGgARD/BRBtIAJBwAxqIAJB4A1qIA8QUCANIAEgAxBQIA4gAyAPEFAgBCACQeANaiABEFAgFyAGKQMAIiQgAikDyAwiJXw3AwAgGCAIKQMAIiYgAikD0AwiJ3w3AwAgGSAFKQMAIiggAikD2AwiKXw3AwAgGiAHKQMAIiogAikD4AwiK3w3AwAgGyAkICV9QvD///////8/fCIkQv////////8DgyACKQPoDCIlIAIpA8AMIix9QtD9//////8/fCItQjOIfDcDACAcICYgJ31C8P///////z98IiZC/////////wODICRCM4h8NwMAIB0gKCApfULw////////P3wiJEL/////////A4MgJkIziHw3AwAgHiAqICt9QvD///////8/fCImQv////////8DgyAkQjOIfDcDACACICUgLHw3A6ALIAIgJkIziEITfiAtQv////////8Dg3w3A8gLIB8gCSkDADcDACAgIAopAwA3AwAgISALKQMANwMAICIgDCkDADcDACACIAIpA5ANNwPwCyAjIARBqOvAABBQIAJB4A1qIAJBgApqIBUgAkGgC2pBoAEQ/wUQbSACQcAMaiACQeANaiAPEFAgDSABIAMQUCAOIAMgDxBQIAQgAkHgDWogARBQIBcgBikDACIkIAIpA8gMIiV8NwMAIBggCCkDACImIAIpA9AMIid8NwMAIBkgBSkDACIoIAIpA9gMIil8NwMAIBogBykDACIqIAIpA+AMIit8NwMAIBsgJCAlfULw////////P3wiJEL/////////A4MgAikD6AwiJSACKQPADCIsfULQ/f//////P3wiLUIziHw3AwAgHCAmICd9QvD///////8/fCImQv////////8DgyAkQjOIfDcDACAdICggKX1C8P///////z98IiRC/////////wODICZCM4h8NwMAIB4gKiArfULw////////P3wiJkL/////////A4MgJEIziHw3AwAgAiAlICx8NwOgCyACICZCM4hCE34gLUL/////////A4N8NwPICyAfIAkpAwA3AwAgICAKKQMANwMAICEgCykDADcDACAiIAwpAwA3AwAgAiACKQOQDTcD8AsgIyAEQajrwAAQUCAWIAJBoAtqQaABEP8FGiAAIAJBgAoQ/wUaIAJBgA9qJAALriACEH8BfiMAQRBrIgEkAAJAAkACQCAAQfUBSQ0AEL4GIQJBACEDIAIgAkEIEIEFQRRBCBCBBWpBEEEIEIEFamtB+P97akF3cUF9aiIC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QbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADAELIAEgBUF+aiIGNgIEIAEgB0ECajYCAAJAAkAgBEUNACAHLQABIQkgAyACQX1qIgQ2AgQgBg0BIANCgcoANwPgASADQeABahC4BCEBIABBAToAACAAQQRqIAE2AgAMAgtBAiADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwBCyABIAVBfWoiBjYCBCABIAdBA2o2AgACQAJAIARFDQAgBy0AAiEEIAMgAkF8ajYCBCAGDQEgA0KBygA3A+ABIANB4AFqELgEIQEgAEEBOgAAIABBBGogATYCAAwCC0EDIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADAELIAEgBUF8ajYCBCABIAdBBGo2AgAgBy0AAyEBIANBCGogAxCTAwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADLQAIDQACQCADLQAJDQBBBCADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQAKIQIgA0EQaiADEJMDIAMtABANAQJAIAMtABENAEEFIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtABIhByADQRhqIAMQkwMgAy0AGA0CAkAgAy0AGQ0AQQYgA0HoAWpBtL3GABCwAiEBIABBAToAACAAQQRqIAE2AgAMHAsgAy0AGiEFIANBIGogAxCTAyADLQAgDQMCQCADLQAhDQBBByADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQAiIQYgA0EoaiADEJMDIAMtACgNBAJAIAMtACkNAEEIIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtACohCiADQTBqIAMQkwMgAy0AMA0FAkAgAy0AMQ0AQQkgA0HoAWpBtL3GABCwAiEBIABBAToAACAAQQRqIAE2AgAMHAsgAy0AMiELIANBOGogAxCTAyADLQA4DQYCQCADLQA5DQBBCiADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQA6IQwgA0HAAGogAxCTAyADLQBADQcCQCADLQBBDQBBCyADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQBCIQ0gA0HIAGogAxCTAyADLQBIDQgCQCADLQBJDQBBDCADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQBKIQ4gA0HQAGogAxCTAyADLQBQDQkCQCADLQBRDQBBDSADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQBSIQ8gA0HYAGogAxCTAyADLQBYDQoCQCADLQBZDQBBDiADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQBaIRAgA0HgAGogAxCTAyADLQBgDQsCQCADLQBhDQBBDyADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQBiIREgA0HoAGogAxCTAyADLQBoDQwCQCADLQBpDQBBECADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQBqIRIgA0HwAGogAxCTAyADLQBwDQ0CQCADLQBxDQBBESADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQByIRMgA0H4AGogAxCTAyADLQB4DQ4CQCADLQB5DQBBEiADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQB6IRQgA0GAAWogAxCTAyADLQCAAQ0PAkAgAy0AgQENAEETIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtAIIBIRUgA0GIAWogAxCTAyADLQCIAQ0QAkAgAy0AiQENAEEUIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtAIoBIRYgA0GQAWogAxCTAyADLQCQAQ0RAkAgAy0AkQENAEEVIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtAJIBIRcgA0GYAWogAxCTAyADLQCYAQ0SAkAgAy0AmQENAEEWIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtAJoBIRggA0GgAWogAxCTAyADLQCgAQ0TAkAgAy0AoQENAEEXIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtAKIBIRkgA0GoAWogAxCTAyADLQCoAQ0UAkAgAy0AqQENAEEYIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtAKoBIRogA0GwAWogAxCTAyADLQCwAQ0VAkAgAy0AsQENAEEZIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtALIBIRsgA0G4AWogAxCTAyADLQC4AQ0WAkAgAy0AuQENAEEaIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtALoBIRwgA0HAAWogAxCTAyADLQDAAQ0XAkAgAy0AwQENAEEbIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtAMIBIR0gA0HIAWogAxCTAyADLQDIAQ0YAkAgAy0AyQENAEEcIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtAMoBIR4gA0HQAWogAxCTAyADLQDQAQ0ZAkAgAy0A0QENAEEdIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtANIBIR8gA0HYAWogAxCTAyADLQDYAQ0aAkAgAy0A2QENAEEeIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtANoBISAgA0HgAWogAxCTAwJAAkACQCADLQDgAQ0AIAMtAOEBDQJBHyADQegBakG0vcYAELACIQEMAQsgAygC5AEhAQsgAEEBOgAAIABBBGogATYCAAwcCyAAIAg6AAEgAEEgaiADLQDiAToAACAAQR9qICA6AAAgAEEeaiAfOgAAIABBHWogHjoAACAAQRxqIB06AAAgAEEbaiAcOgAAIABBGmogGzoAACAAQRlqIBo6AAAgAEEYaiAZOgAAIABBF2ogGDoAACAAQRZqIBc6AAAgAEEVaiAWOgAAIABBFGogFToAACAAQRNqIBQ6AAAgAEESaiATOgAAIABBEWogEjoAACAAQRBqIBE6AAAgAEEPaiAQOgAAIABBDmogDzoAACAAQQ1qIA46AAAgAEEMaiANOgAAIABBC2ogDDoAACAAQQpqIAs6AAAgAEEJaiAKOgAAIABBCGogBjoAACAAQQdqIAU6AAAgAEEGaiAHOgAAIABBBWogAjoAACAAQQRqIAE6AAAgAEEDaiAEOgAAIABBAmogCToAACAAQQA6AAAMGwsgAEEBOgAAIABBBGogAygCDDYCAAwaCyAAQQE6AAAgAEEEaiADKAIUNgIADBkLIABBAToAACAAQQRqIAMoAhw2AgAMGAsgAEEBOgAAIABBBGogAygCJDYCAAwXCyAAQQE6AAAgAEEEaiADKAIsNgIADBYLIABBAToAACAAQQRqIAMoAjQ2AgAMFQsgAEEBOgAAIABBBGogAygCPDYCAAwUCyAAQQE6AAAgAEEEaiADKAJENgIADBMLIABBAToAACAAQQRqIAMoAkw2AgAMEgsgAEEBOgAAIABBBGogAygCVDYCAAwRCyAAQQE6AAAgAEEEaiADKAJcNgIADBALIABBAToAACAAQQRqIAMoAmQ2AgAMDwsgAEEBOgAAIABBBGogAygCbDYCAAwOCyAAQQE6AAAgAEEEaiADKAJ0NgIADA0LIABBAToAACAAQQRqIAMoAnw2AgAMDAsgAEEBOgAAIABBBGogAygChAE2AgAMCwsgAEEBOgAAIABBBGogAygCjAE2AgAMCgsgAEEBOgAAIABBBGogAygClAE2AgAMCQsgAEEBOgAAIABBBGogAygCnAE2AgAMCAsgAEEBOgAAIABBBGogAygCpAE2AgAMBwsgAEEBOgAAIABBBGogAygCrAE2AgAMBgsgAEEBOgAAIABBBGogAygCtAE2AgAMBQsgAEEBOgAAIABBBGogAygCvAE2AgAMBAsgAEEBOgAAIABBBGogAygCxAE2AgAMAwsgAEEBOgAAIABBBGogAygCzAE2AgAMAgsgAEEBOgAAIABBBGogAygC1AE2AgAMAQsgAEEBOgAAIABBBGogAygC3AE2AgALIANB8AFqJAAL+BgCAX8ifiMAQdAFayIDJAAgA0GABWogARD/ASADQagFaiACEP8BIANB8ARqIAMpA8gFIAMpA6AFfCADKQPABSADKQOYBXwgAykDuAUgAykDkAV8IAMpA6gFIAMpA4AFfCIEQjSIIAMpA4gFfCADKQOwBXwiBUI0iHwiBkI0iHwiB0I0iHxC/////////weDIAZC/////////weDIARC/////////weDQpPYqJjanOd+fCIEQj+HIAVC/////////weDfEL/tMqxiLqFeXwiBUI/h3xCh8Ksf3wiBkI/hyAHQv////////8Hg3wiB0I/h3xCgICAgICAfHwiCEI/hyIJQu2n1+el45gBgyAEQv////////8Hg3wiCkL/////////B4MiBEIAQu3Nh7nWl9IHQgAQqQMgA0GwBGogBEIAQtrIn+Pa1u4BQgAQqQMgA0HwA2ogCUKBy7XO98X6BoMgBUL/////////B4N8IApCNIh8IgpC/////////weDIgVCAELtzYe51pfSB0IAEKkDIANBoARqIARCAEKbytfZ/v//B0IAEKkDIANBsANqIAVCAELayJ/j2tbuAUIAEKkDIANB8AJqIAlC+b3TAIMgBkL/////////B4N8IApCNIh8IgpC/////////weDIgZCAELtzYe51pfSB0IAEKkDIANBkARqIARCAEL/////////B0IAEKkDIANBoANqIAVCAEKbytfZ/v//B0IAEKkDIANBsAJqIAZCAELayJ/j2tbuAUIAEKkDIANB8AFqIApCNIggB0L/////////B4N8IgpC/////////weDIgdCAELtzYe51pfSB0IAEKkDIANBgARqIARCAEL///////8DQgAQqQMgA0GQA2ogBUIAQv////////8HQgAQqQMgA0GgAmogBkIAQpvK19n+//8HQgAQqQMgA0GwAWogB0IAQtrIn+Pa1u4BQgAQqQMgA0HwAGogCUKAgICAgIAEgyAIfCAKQjSIfEL/////////B4MiBEIAQu3Nh7nWl9IHQgAQqQMgA0GAA2ogBUIAQv///////wNCABCpAyADQZACaiAGQgBC/////////wdCABCpAyADQaABaiAHQgBCm8rX2f7//wdCABCpAyADQTBqIARCAELayJ/j2tbuAUIAEKkDIANBgAJqIAZCAEL///////8DQgAQqQMgA0GQAWogB0IAQv////////8HQgAQqQMgA0EgaiAEQgBCm8rX2f7//wdCABCpAyADQYABaiAHQgBC////////A0IAEKkDIANBEGogBEIAQv////////8HQgAQqQMgAyAEQgBC////////A0IAEKkDIANB4ARqIAMpA/AEIgVCm/zRkrG0xwJ+Qv////////8HgyIEQgBC7afX56XjmAFCABCpAyADQdAEaiAEQgBCgcu1zvfF+gZCABCpAyADQeADaiADKQPwAyILIAMpA7AEfCIGIAMpA9AEfCIHIAUgAykD4AQiCXwiBUI0iCADQeAEakEIaikDACADQfAEakEIaikDAHwgBSAJVK18IgxCDIaEfCIJQpv80ZKxtMcCfkL/////////B4MiBUIAQu2n1+el45gBQgAQqQMgA0HABGogBEIAQvm90wBCABCpAyADQdADaiAFQgBCgcu1zvfF+gZCABCpAyADQeACaiADKQOwAyINIAMpA6AEfCIIIAMpA/ACfCIKIAMpA8AEfCIOIAMpA9ADfCIPIAMpA+ADIhAgCXwiEUI0iCADQeADakEIaikDACADQfADakEIaikDACADQbAEakEIaikDAHwgBiALVK18IANB0ARqQQhqKQMAfCAHIAZUrXwgDEI0iHwgCSAHVK18fCARIBBUrXwiEkIMhoR8IgdCm/zRkrG0xwJ+Qv////////8HgyIGQgBC7afX56XjmAFCABCpAyADQcADaiAFQgBC+b3TAEIAEKkDIANB0AJqIAZCAEKBy7XO98X6BkIAEKkDIANB4AFqIAMpA6ADIhMgAykDkAR8IgkgAykDsAJ8IgsgAykD8AF8IgwgAykDwAN8IhAgAykD0AJ8IhEgAykD4AIiFCAHfCIVQjSIIANB4AJqQQhqKQMAIANBsANqQQhqKQMAIANBoARqQQhqKQMAfCAIIA1UrXwgA0HwAmpBCGopAwB8IAogCFStfCADQcAEakEIaikDAHwgDiAKVK18IANB0ANqQQhqKQMAfCAPIA5UrXwgEkI0iHwgByAPVK18fCAVIBRUrXwiFkIMhoR8IghCm/zRkrG0xwJ+Qv////////8HgyIHQgBC7afX56XjmAFCABCpAyADQcACaiAGQgBC+b3TAEIAEKkDIANB0AFqIAdCAEKBy7XO98X6BkIAEKkDIANB4ABqIAMpA5ADIhcgAykDgAR8IgogAykDoAJ8Ig4gBEIshnwiDyADKQOwAXwiDSADKQNwfCISIAMpA8ACfCIUIAMpA9ABfCIVIAMpA+ABIhggCHwiGUI0iCADQeABakEIaikDACADQaADakEIaikDACADQZAEakEIaikDAHwgCSATVK18IANBsAJqQQhqKQMAfCALIAlUrXwgA0HwAWpBCGopAwB8IAwgC1StfCADQcADakEIaikDAHwgECAMVK18IANB0AJqQQhqKQMAfCARIBBUrXwgFkI0iHwgCCARVK18fCAZIBhUrXwiGkIMhoR8IghCm/zRkrG0xwJ+Qv////////8HgyIJQgBC7afX56XjmAFCABCpAyADQcABaiAHQgBC+b3TAEIAEKkDIANB0ABqIAlCAEKBy7XO98X6BkIAEKkDIANBwABqIAlCAEL5vdMAQgAQqQMgAyAJQiyGIhsgAykDAHwiCyADKQMQIhwgAykDgAF8IgwgB0IshnwiECADKQOQASIdIAMpA4ACfCIRIAMpAyB8IhMgBkIshnwiFiADKQNAfCIYIAMpA5ACIh4gAykDgAN8IhkgAykDoAF8Ih8gAykDMHwiICAFQiyGfCIhIAMpA8ABfCIiIAMpA1B8IiMgAykDYCIkIAh8IiVCNIggA0HgAGpBCGopAwAgA0GQA2pBCGopAwAgA0GABGpBCGopAwB8IAogF1StfCADQaACakEIaikDAHwgDiAKVK18IARCFIh8IA8gDlStfCADQbABakEIaikDAHwgDSAPVK18IANB8ABqQQhqKQMAfCASIA1UrXwgA0HAAmpBCGopAwB8IBQgElStfCADQdABakEIaikDAHwgFSAUVK18IBpCNIh8IAggFVStfHwgJSAkVK18IghCDIaEfCIEQjSIIANBkAJqQQhqKQMAIANBgANqQQhqKQMAfCAZIB5UrXwgA0GgAWpBCGopAwB8IB8gGVStfCADQTBqQQhqKQMAfCAgIB9UrXwgBUIUiHwgISAgVK18IANBwAFqQQhqKQMAfCAiICFUrXwgA0HQAGpBCGopAwB8ICMgIlStfCAIQjSIfCAEICNUrXwiCEIMhoR8IgVCNIggA0GQAWpBCGopAwAgA0GAAmpBCGopAwB8IBEgHVStfCADQSBqQQhqKQMAfCATIBFUrXwgBkIUiHwgFiATVK18IANBwABqQQhqKQMAfCAYIBZUrXwgCEI0iHwgBSAYVK18IghCDIaEfCIGQjSIIANBEGpBCGopAwAgA0GAAWpBCGopAwB8IAwgHFStfCAHQhSIfCAQIAxUrXwgCEI0iHwgBiAQVK18IghCDIaEfCIHQjSIIAlCFIggA0EIaikDAHwgCyAbVK18IAhCNIh8IAcgC1StfEIMhoQgBkL/////////B4MgBUL/////////B4MgBEL/////////B4NCk9iomNqc5358IgVCP4d8Qv+0yrGIuoV5fCIGQj+HfEKHwqx/fCIJQj+HIAdC/////////weDfCIHQj+HfEKAgICAgIB8fCIIQj+HIgRC7afX56XjmAGDIAVC/////////weDfCIFQv////////8HgzcDqAUgAyAEQoHLtc73xfoGgyAGQv////////8Hg3wgBUI0iHwiBUL/////////B4M3A7AFIAMgBEL5vdMAgyAJQv////////8Hg3wgBUI0iHwiBUL/////////B4M3A7gFIAMgBUI0iCAHQv////////8Hg3wiBUL/////////B4M3A8AFIAMgBEKAgICAgIAEgyAIfCAFQjSIfEL/////////B4M3A8gFIAAgA0GoBWoQ+gEgA0HQBWokAAvUFAIBfyJ+IwBBgAVrIgMkACADQfABaiACKQMAIgRCACABKQMAIgVCABCpAyADQYACaiACKQMIIgZCACAFQgAQqQMgA0HAAmogASkDCCIHQgAgBEIAEKkDIANBkAJqIAIpAxAiCEIAIAVCABCpAyADQYADaiAHQgAgBkIAEKkDIANB0AJqIAEpAxAiCUIAIARCABCpAyADQaACaiACKQMYIgpCACAFQgAQqQMgA0HAA2ogCEIAIAdCABCpAyADQZADaiAJQgAgBkIAEKkDIANB4AJqIAEpAxgiC0IAIARCABCpAyADQbACaiACKQMgIgxCACAFQgAQqQMgA0HQA2ogCkIAIAdCABCpAyADQfADaiAJQgAgCEIAEKkDIANBoANqIAtCACAGQgAQqQMgA0HwAmogASkDICIFQgAgBEIAEKkDIANB4ANqIAxCACAHQgAQqQMgA0GgBGogCkIAIAlCABCpAyADQYAEaiALQgAgCEIAEKkDIANBsANqIAVCACAGQgAQqQMgA0GwBGogDEIAIAlCABCpAyADQcAEaiALQgAgCkIAEKkDIANBkARqIAVCACAIQgAQqQMgA0HgBGogDEIAIAtCABCpAyADQdAEaiAFQgAgCkIAEKkDIANB8ARqIAVCACAMQgAQqQMgA0HgAWogAykD8AEiBUKb/NGSsbTHAn5C/////////weDIgRCAELtp9fnpeOYAUIAEKkDIANB0AFqIARCAEKBy7XO98X6BkIAEKkDIANBwAFqIAMpA8ACIg0gAykDgAJ8IgYgAykD0AF8IgcgBSADKQPgASIIfCIFQjSIIANB4AFqQQhqKQMAIANB8AFqQQhqKQMAfCAFIAhUrXwiDkIMhoR8IghCm/zRkrG0xwJ+Qv////////8HgyIFQgBC7afX56XjmAFCABCpAyADQZABaiAEQgBC+b3TAEIAEKkDIANBsAFqIAVCAEKBy7XO98X6BkIAEKkDIANBgAFqIAMpA5ACIg8gAykDgAN8IgkgAykD0AJ8IgogAykDkAF8IgsgAykDsAF8IgwgAykDwAEiECAIfCIRQjSIIANBwAFqQQhqKQMAIANBwAJqQQhqKQMAIANBgAJqQQhqKQMAfCAGIA1UrXwgA0HQAWpBCGopAwB8IAcgBlStfCAOQjSIfCAIIAdUrXx8IBEgEFStfCISQgyGhHwiB0Kb/NGSsbTHAn5C/////////weDIgZCAELtp9fnpeOYAUIAEKkDIANBoAFqIAVCAEL5vdMAQgAQqQMgA0HwAGogBkIAQoHLtc73xfoGQgAQqQMgA0HgAGogAykDkAMiEyADKQPAA3wiCCADKQOgAnwiDSADKQPgAnwiDiADKQOgAXwiECADKQNwfCIRIAMpA4ABIhQgB3wiFUI0iCADQYABakEIaikDACADQZACakEIaikDACADQYADakEIaikDAHwgCSAPVK18IANB0AJqQQhqKQMAfCAKIAlUrXwgA0GQAWpBCGopAwB8IAsgClStfCADQbABakEIaikDAHwgDCALVK18IBJCNIh8IAcgDFStfHwgFSAUVK18IhZCDIaEfCIJQpv80ZKxtMcCfkL/////////B4MiB0IAQu2n1+el45gBQgAQqQMgA0EwaiAGQgBC+b3TAEIAEKkDIANB0ABqIAdCAEKBy7XO98X6BkIAEKkDIANBIGogAykD0AMiFyADKQPwA3wiCiAEQiyGfCILIAMpA6ADfCIMIAMpA7ACfCIPIAMpA/ACfCISIAMpAzB8IhQgAykDUHwiFSADKQNgIhggCXwiGUI0iCADQeAAakEIaikDACADQZADakEIaikDACADQcADakEIaikDAHwgCCATVK18IANBoAJqQQhqKQMAfCANIAhUrXwgA0HgAmpBCGopAwB8IA4gDVStfCADQaABakEIaikDAHwgECAOVK18IANB8ABqQQhqKQMAfCARIBBUrXwgFkI0iHwgCSARVK18fCAZIBhUrXwiGkIMhoR8IglCm/zRkrG0xwJ+Qv////////8HgyIIQgBC7afX56XjmAFCABCpAyADQcAAaiAHQgBC+b3TAEIAEKkDIANBEGogCEIAQoHLtc73xfoGQgAQqQMgAyAIQgBC+b3TAEIAEKkDIAAgCEIshiIbIAMpA/AEfCINIAMpA9AEIhwgAykD4AR8Ig4gB0IshnwiECADKQOwBCIdIAMpA8AEfCIRIAMpA5AEfCITIAZCLIZ8IhYgAykDAHwiGCADKQOABCIeIAMpA6AEfCIZIAMpA+ADfCIfIAMpA7ADfCIgIAVCLIZ8IiEgAykDQHwiIiADKQMQfCIjIAMpAyAiJCAJfCIlQjSIIANBIGpBCGopAwAgA0HQA2pBCGopAwAgA0HwA2pBCGopAwB8IAogF1StfCAEQhSIfCALIApUrXwgA0GgA2pBCGopAwB8IAwgC1StfCADQbACakEIaikDAHwgDyAMVK18IANB8AJqQQhqKQMAfCASIA9UrXwgA0EwakEIaikDAHwgFCASVK18IANB0ABqQQhqKQMAfCAVIBRUrXwgGkI0iHwgCSAVVK18fCAlICRUrXwiCUIMhoR8IgRCNIggA0GABGpBCGopAwAgA0GgBGpBCGopAwB8IBkgHlStfCADQeADakEIaikDAHwgHyAZVK18IANBsANqQQhqKQMAfCAgIB9UrXwgBUIUiHwgISAgVK18IANBwABqQQhqKQMAfCAiICFUrXwgA0EQakEIaikDAHwgIyAiVK18IAlCNIh8IAQgI1StfCIJQgyGhHwiBUI0iCADQbAEakEIaikDACADQcAEakEIaikDAHwgESAdVK18IANBkARqQQhqKQMAfCATIBFUrXwgBkIUiHwgFiATVK18IANBCGopAwB8IBggFlStfCAJQjSIfCAFIBhUrXwiCUIMhoR8IgZCNIggA0HQBGpBCGopAwAgA0HgBGpBCGopAwB8IA4gHFStfCAHQhSIfCAQIA5UrXwgCUI0iHwgBiAQVK18IglCDIaEfCIHQjSIIAhCFIggA0HwBGpBCGopAwB8IA0gG1StfCAJQjSIfCAHIA1UrXxCDIaEIAZC/////////weDIARC/////////weDQpPYqJjanOd+fCIGQj+HIAVC/////////weDfEL/tMqxiLqFeXwiBUI/h3xCh8Ksf3wiCEI/hyAHQv////////8Hg3wiB0I/h3xCgICAgICAfHwiCUI/hyIEQu2n1+el45gBgyAGQv////////8Hg3wiBkL/////////B4M3AwAgACAEQoHLtc73xfoGgyAFQv////////8Hg3wgBkI0iHwiBUL/////////B4M3AwggACAEQvm90wCDIAhC/////////weDfCAFQjSIfCIFQv////////8HgzcDECAAIAVCNIggB0L/////////B4N8IgVC/////////weDNwMYIAAgBEKAgICAgIAEgyAJfCAFQjSIfEL/////////B4M3AyAgA0GABWokAAuFFgIBfyJ+IwBB0AVrIgIkACACQYAFaiABEP8BIAJB8AFqIAIpA4AFIgNCAELtzYe51pfSB0IAEKkDIAJBgAJqIANCAELayJ/j2tbuAUIAEKkDIAJBwAJqIAIpA4gFIgRCAELtzYe51pfSB0IAEKkDIAJBkAJqIANCAEKbytfZ/v//B0IAEKkDIAJB0AJqIARCAELayJ/j2tbuAUIAEKkDIAJBkANqIAIpA5AFIgVCAELtzYe51pfSB0IAEKkDIAJBoAJqIANCAEL/////////B0IAEKkDIAJB4AJqIARCAEKbytfZ/v//B0IAEKkDIAJBoANqIAVCAELayJ/j2tbuAUIAEKkDIAJB4ANqIAIpA5gFIgZCAELtzYe51pfSB0IAEKkDIAJBsAJqIANCAEL///////8DQgAQqQMgAkHwAmogBEIAQv////////8HQgAQqQMgAkGwA2ogBUIAQpvK19n+//8HQgAQqQMgAkHwA2ogBkIAQtrIn+Pa1u4BQgAQqQMgAkGwBGogAikDoAUiA0IAQu3Nh7nWl9IHQgAQqQMgAkGAA2ogBEIAQv///////wNCABCpAyACQcADaiAFQgBC/////////wdCABCpAyACQYAEaiAGQgBCm8rX2f7//wdCABCpAyACQcAEaiADQgBC2sif49rW7gFCABCpAyACQdADaiAFQgBC////////A0IAEKkDIAJBkARqIAZCAEL/////////B0IAEKkDIAJB0ARqIANCAEKbytfZ/v//B0IAEKkDIAJBoARqIAZCAEL///////8DQgAQqQMgAkHgBGogA0IAQv////////8HQgAQqQMgAkHwBGogA0IAQv///////wNCABCpAyACQeABaiACKQPwASIEQpv80ZKxtMcCfkL/////////B4MiA0IAQu2n1+el45gBQgAQqQMgAkHQAWogA0IAQoHLtc73xfoGQgAQqQMgAkHAAWogAikDwAIiByACKQOAAnwiBSACKQPQAXwiBiAEIAIpA+ABIgh8IgRCNIggAkHgAWpBCGopAwAgAkHwAWpBCGopAwB8IAQgCFStfCIJQgyGhHwiCEKb/NGSsbTHAn5C/////////weDIgRCAELtp9fnpeOYAUIAEKkDIAJBkAFqIANCAEL5vdMAQgAQqQMgAkGwAWogBEIAQoHLtc73xfoGQgAQqQMgAkGAAWogAikD0AIiCiACKQOQAnwiCyACKQOQA3wiDCACKQOQAXwiDSACKQOwAXwiDiACKQPAASIPIAh8IhBCNIggAkHAAWpBCGopAwAgAkHAAmpBCGopAwAgAkGAAmpBCGopAwB8IAUgB1StfCACQdABakEIaikDAHwgBiAFVK18IAlCNIh8IAggBlStfHwgECAPVK18IhFCDIaEfCIGQpv80ZKxtMcCfkL/////////B4MiBUIAQu2n1+el45gBQgAQqQMgAkGgAWogBEIAQvm90wBCABCpAyACQfAAaiAFQgBCgcu1zvfF+gZCABCpAyACQeAAaiACKQPgAiISIAIpA6ACfCIIIAIpA6ADfCIHIAIpA+ADfCIJIAIpA6ABfCIPIAIpA3B8IhAgAikDgAEiEyAGfCIUQjSIIAJBgAFqQQhqKQMAIAJB0AJqQQhqKQMAIAJBkAJqQQhqKQMAfCALIApUrXwgAkGQA2pBCGopAwB8IAwgC1StfCACQZABakEIaikDAHwgDSAMVK18IAJBsAFqQQhqKQMAfCAOIA1UrXwgEUI0iHwgBiAOVK18fCAUIBNUrXwiFUIMhoR8IgtCm/zRkrG0xwJ+Qv////////8HgyIGQgBC7afX56XjmAFCABCpAyACQTBqIAVCAEL5vdMAQgAQqQMgAkHQAGogBkIAQoHLtc73xfoGQgAQqQMgAkEgaiACKQPwAiIWIAIpA7ACfCIMIAIpA7ADfCINIAIpA/ADfCIOIAIpA7AEfCIKIANCLIZ8IhEgAikDMHwiEyACKQNQfCIUIAIpA2AiFyALfCIYQjSIIAJB4ABqQQhqKQMAIAJB4AJqQQhqKQMAIAJBoAJqQQhqKQMAfCAIIBJUrXwgAkGgA2pBCGopAwB8IAcgCFStfCACQeADakEIaikDAHwgCSAHVK18IAJBoAFqQQhqKQMAfCAPIAlUrXwgAkHwAGpBCGopAwB8IBAgD1StfCAVQjSIfCALIBBUrXx8IBggF1StfCIZQgyGhHwiC0Kb/NGSsbTHAn5C/////////weDIghCAELtp9fnpeOYAUIAEKkDIAJBwABqIAZCAEL5vdMAQgAQqQMgAkEQaiAIQgBCgcu1zvfF+gZCABCpAyACIAhCAEL5vdMAQgAQqQMgAiAIQiyGIhogAikD8AR8IgcgAikD4AQiGyACKQOgBHwiCSAGQiyGfCIPIAIpA5AEIhwgAikD0AN8IhAgAikD0AR8IhIgBUIshnwiFSACKQMAfCIXIAIpA8ADIh0gAikDgAN8IhggAikDgAR8Ih4gAikDwAR8Ih8gBEIshnwiICACKQNAfCIhIAIpAxB8IiIgAikDICIjIAt8IiRCNIggAkEgakEIaikDACACQfACakEIaikDACACQbACakEIaikDAHwgDCAWVK18IAJBsANqQQhqKQMAfCANIAxUrXwgAkHwA2pBCGopAwB8IA4gDVStfCACQbAEakEIaikDAHwgCiAOVK18IANCFIh8IBEgClStfCACQTBqQQhqKQMAfCATIBFUrXwgAkHQAGpBCGopAwB8IBQgE1StfCAZQjSIfCALIBRUrXx8ICQgI1StfCILQgyGhHwiA0I0iCACQcADakEIaikDACACQYADakEIaikDAHwgGCAdVK18IAJBgARqQQhqKQMAfCAeIBhUrXwgAkHABGpBCGopAwB8IB8gHlStfCAEQhSIfCAgIB9UrXwgAkHAAGpBCGopAwB8ICEgIFStfCACQRBqQQhqKQMAfCAiICFUrXwgC0I0iHwgAyAiVK18IgtCDIaEfCIEQjSIIAJBkARqQQhqKQMAIAJB0ANqQQhqKQMAfCAQIBxUrXwgAkHQBGpBCGopAwB8IBIgEFStfCAFQhSIfCAVIBJUrXwgAkEIaikDAHwgFyAVVK18IAtCNIh8IAQgF1StfCILQgyGhHwiBUI0iCACQeAEakEIaikDACACQaAEakEIaikDAHwgCSAbVK18IAZCFIh8IA8gCVStfCALQjSIfCAFIA9UrXwiC0IMhoR8IgZCNIggCEIUiCACQfAEakEIaikDAHwgByAaVK18IAtCNIh8IAYgB1StfEIMhoQgBUL/////////B4MgBEL/////////B4MgA0L/////////B4NCk9iomNqc5358IgRCP4d8Qv+0yrGIuoV5fCIFQj+HfEKHwqx/fCIIQj+HIAZC/////////weDfCIGQj+HfEKAgICAgIB8fCILQj+HIgNC7afX56XjmAGDIARC/////////weDfCIEQv////////8HgzcDqAUgAiADQoHLtc73xfoGgyAFQv////////8Hg3wgBEI0iHwiBEL/////////B4M3A7AFIAIgA0L5vdMAgyAIQv////////8Hg3wgBEI0iHwiBEL/////////B4M3A7gFIAIgBEI0iCAGQv////////8Hg3wiBEL/////////B4M3A8AFIAIgA0KAgICAgIAEgyALfCAEQjSIfEL/////////B4M3A8gFIAAgAkGoBWoQ+gEgAkHQBWokAAuVFwEBfyMAQTBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA40AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMwALIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBiMvAADYCGCABIAJBGGoQyQMhAAwzCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQeTKwAA2AhggASACQRhqEMkDIQAMMgsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkHEysAANgIYIAEgAkEYahDJAyEADDELIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBpMrAADYCGCABIAJBGGoQyQMhAAwwCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQfjJwAA2AhggASACQRhqEMkDIQAMLwsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkHIycAANgIYIAEgAkEYahDJAyEADC4LIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBnMnAADYCGCABIAJBGGoQyQMhAAwtCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQfDIwAA2AhggASACQRhqEMkDIQAMLAsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkG8yMAANgIYIAEgAkEYahDJAyEADCsLIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBhMjAADYCGCABIAJBGGoQyQMhAAwqCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQdDHwAA2AhggASACQRhqEMkDIQAMKQsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkGEx8AANgIYIAEgAkEYahDJAyEADCgLIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBwMbAADYCGCABIAJBGGoQyQMhAAwnCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQfjFwAA2AhggASACQRhqEMkDIQAMJgsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkG4xcAANgIYIAEgAkEYahDJAyEADCULIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJB+MTAADYCGCABIAJBGGoQyQMhAAwkCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQcDEwAA2AhggASACQRhqEMkDIQAMIwsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkGQxMAANgIYIAEgAkEYahDJAyEADCILIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJB2MPAADYCGCABIAJBGGoQyQMhAAwhCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQaDDwAA2AhggASACQRhqEMkDIQAMIAsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkHswsAANgIYIAEgAkEYahDJAyEADB8LIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBmMLAADYCGCABIAJBGGoQyQMhAAweCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQeTBwAA2AhggASACQRhqEMkDIQAMHQsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkGMwcAANgIYIAEgAkEYahDJAyEADBwLIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBxMDAADYCGCABIAJBGGoQyQMhAAwbCyACIABBBGo2AhQgAkEsakEBNgIAIAJBJGpBATYCACACQei/wAA2AiAgAkEBNgIcIAJB4L/AADYCGCACQRk2AgwgAiACQQhqNgIoIAIgAkEUajYCCCABIAJBGGoQyQMhAAwaCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQcC/wAA2AhggASACQRhqEMkDIQAMGQsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkGUv8AANgIYIAEgAkEYahDJAyEADBgLIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJB4L7AADYCGCABIAJBGGoQyQMhAAwXCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQaC+wAA2AhggASACQRhqEMkDIQAMFgsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkHwvcAANgIYIAEgAkEYahDJAyEADBULIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJB0L3AADYCGCABIAJBGGoQyQMhAAwUCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQZy9wAA2AhggASACQRhqEMkDIQAMEwsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkHgvMAANgIYIAEgAkEYahDJAyEADBILIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBlLzAADYCGCABIAJBGGoQyQMhAAwRCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQdS7wAA2AhggASACQRhqEMkDIQAMEAsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkGcu8AANgIYIAEgAkEYahDJAyEADA8LIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJB8LrAADYCGCABIAJBGGoQyQMhAAwOCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQci6wAA2AhggASACQRhqEMkDIQAMDQsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkH4ucAANgIYIAEgAkEYahDJAyEADAwLIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBwLnAADYCGCABIAJBGGoQyQMhAAwLCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQZy5wAA2AhggASACQRhqEMkDIQAMCgsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkH4uMAANgIYIAEgAkEYahDJAyEADAkLIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJB3LjAADYCGCABIAJBGGoQyQMhAAwICyACQSxqQQE2AgAgAkIBNwIcIAJBuLjAADYCGCACQRo2AgwgAiAAQQRqNgIUIAIgAkEIajYCKCACIAJBFGo2AgggASACQRhqEMkDIQAMBwsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkH8t8AANgIYIAEgAkEYahDJAyEADAYLIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBuLfAADYCGCABIAJBGGoQyQMhAAwFCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQZi3wAA2AhggASACQRhqEMkDIQAMBAsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkHwtsAANgIYIAEgAkEYahDJAyEADAMLIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJB1LbAADYCGCABIAJBGGoQyQMhAAwCCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQay2wAA2AhggASACQRhqEMkDIQAMAQsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkHctcAANgIYIAEgAkEYahDJAyEACyACQTBqJAAgAAvREgIHfwF+AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAAAODQABAgMEBQYHCAkKCwwACwJAIAEoAgAiAkEEaigCACACQQhqIgMoAgAiBGtBA0sNACACIARBBBDlAiADKAIAIQQLIAIoAgAgBGpBADYAACADIAMoAgBBBGo2AgAgAEEoaikDACEJAkAgASgCACIDQQRqKAIAIANBCGooAgAiAmtBCE8NACADIAJBCBDlAiADQQhqKAIAIQILIAMoAgAgAmogCTcAACADQQhqIgMgAygCAEEIajYCACABIAApAzAQ9AMiAw0NIABBAWogARCvAw8LAkAgASgCACICQQRqKAIA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WA0CCyAAQQA2AgAMBAsgAEEANgIADAMLIAAgBjYCBCAAIAI2AgAgAEEIaiAIOwEADAILIAwhDQsCQAJAAkAgGCANWA0AIAZFDQAgDSAZfCIMIBhUDQEgGCANfSAMIBh9Wg0BCwJAIBBCFH4gDVYNACANIBBCWH4gD3xYDQILIABBADYCAAwCCyAAQQA2AgAMAQsgACABNgIEIAAgAjYCACAAQQhqIAg7AQALIARBMGokAAvzEQEGfyMAQaABayIDJAAgA0HIAGpBCGogASgCACIEQQhqKQIANwMAIAMgBCkCADcDSCADQegAaiABKAIEIgVCAhCtAiADQfgAakEIakEAKQL4lUA3AwAgA0EAKQLwlUA3A3ggA0GIAWogA0HoAGogA0H4AGoQwgUCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMoAogBDQAgA0HYAGpBCGogA0GUAWoiBikCADcDACADIAMpAowBNwNYIANBiAFqIANByABqIANB2ABqEFsgAygCiAENASADQQhqQQhqIAYpAgA3AwAgAyADKQKMATcDCCADQdgAaiAEQgIQrQIgA0HoAGpBCGoiBiACQQhqKQIANwMAIAMgAikCADcDaCADQYgBaiADQdgAaiADQegAahBbIAMoAogBDQIgA0EoakEIaiADQZQBaiIHKQIANwMAIAMgAykCjAE3AyggA0HYAGpBCGogBEEIaikCADcDACADIAQpAgA3A1ggBiAFQQhqKQIANwMAIAMgBSkCADcDaCADQYgBaiADQdgAaiADQegAahBbIAMoAogBDQMgA0HIAGpBCGogBykCADcDACADIAMpAowBNwNIIANB6ABqQQhqIgcgASgCCCIGQQhqKQIANwMAIAMgBikCADcDaCADQYgBaiADQcgAaiADQegAahBbIAMoAogBDQQgA0E4akEIaiADQZQBaiIIKQIANwMAIAMgAykCjAE3AzggA0HYAGpBCGogASgCDCIBQQhqKQIANwMAIAMgASkCADcDWCAHIAJBCGopAgA3AwAgAyACKQIANwNoIANBiAFqIANB2ABqIANB6ABqEMEFIAMoAogBDQUgA0HIAGpBCGogCCkCADcDACADIAMpAowBNwNIIANBiAFqIANBOGogA0HIAGoQWyADKAKIAQ0GIANB6ABqQQhqIANBlAFqIgcpAgA3AwAgAyADKQKMATcDaCADQYgBaiADQShqIANB6ABqEMEFIAMoAogBDQcgA0E4akEIaiAHKQIANwMAIAMgAykCjAE3AzggA0HYAGogBkICEK0CIANB6ABqQQhqIAFBCGopAgA3AwAgAyABKQIANwNoIANBiAFqIANB2ABqIANB6ABqEFsgAygCiAENCCADQcgAakEIaiADQZQBaiIBKQIANwMAIAMgAykCjAE3A0ggA0GIAWogA0E4aiADQcgAahDBBSADKAKIAQ0JIANBGGpBCGogASkCADcDACADIAMpAowBNwMYIANB6ABqIANBGGoQpgMgA0GIAWogA0EIaiADQegAahBbIAMoAogBDQogA0EoakEIaiADQZQBaiIBKQIANwMAIAMgAykCjAE3AyggA0E4akEIaiAEQQhqKQIANwMAIAMgBCkCADcDOCADQdgAakEIaiAFQQhqKQIANwMAIAMgBSkCADcDWCADQegAakEIaiAGQQhqKQIANwMAIAMgBikCADcDaCADQYgBaiADQdgAaiADQegAahBbIAMoAogBDQsgA0HIAGpBCGogASkCADcDACADIAMpAowBNwNIIANBiAFqIANBOGogA0HIAGoQwQUgAygCiAENDCADQdgAakEIaiADQZQBaiIBKQIANwMAIAMgAykCjAE3A1ggA0HoAGogAhCmAyADQYgBaiADQdgAaiADQegAahBbIAMoAogBDQ0gA0HIAGpBCGogASkCADcDACADIAMpAowBNwNIIANBiAFqIANBKGogA0HIAGoQwQUgAygCiAENDiADQQhqQQhqIANBlAFqIgIpAgA3AwAgAyADKQKMATcDCCADQdgAakEIaiAEQQhqKQIANwMAIAMgBCkCADcDWCADQegAakEIaiAFQQhqKQIANwMAIAMgBSkCADcDaCADQYgBaiADQdgAaiADQegAahBbIAMoAogBDQ8gA0HIAGpBCGogAikCADcDACADIAMpAowBNwNIIANB6ABqQQhqIgIgBkEIaiIBKQIANwMAIAMgBikCADcDaCADQYgBaiADQcgAaiADQegAahDBBSADKAKIAQ0QIANBKGpBCGogA0GUAWoiBykCADcDACADIAMpAowBNwMoIANBOGpBCGogBEEIaikCADcDACADIAQpAgA3AzggA0HYAGpBCGog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C0H50MAAQSkgAkHQAGpBwM7AAEGk0cAAELIDAAtBktXAAEEUQajVwAAQywUACwJAIAIoAlAiAUEkSQ0AIAEQAwsCQCACKAKgAUEgRw0AIAIoApgBIQEgAEEAOgAAIAAgASkAADcAASAAQRlqIAFBGGopAAA3AAAgAEERaiABQRBqKQAANwAAIABBCWogAUEIaikAADcAACACKAKcASIARQ0DIAEgAEEBELgFDAMLQfnQwABBKSACQdAAakHAzsAAQaTRwAAQsgMACyACKAKcASIARQ0AIAIoApgBIABBARC4BQsgAigCLCIAQSNNDQIMAQsgAigCLCIAQSNNDQELIAAQAwsgAkGwAWokAA8LQYTNwABBNyACQdAAakGwzsAAQYjOwAAQsgMAC/QOAQF/IwBBwABrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAADiAAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHwALIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJBtLDGADYCICABIAJBIGoQyQMhAAwfCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQZywxgA2AiAgASACQSBqEMkDIQAMHgsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkGAsMYANgIgIAEgAkEgahDJAyEADB0LIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJBtK/GADYCICABIAJBIGoQyQMhAAwcCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQfyuxgA2AiAgASACQSBqEMkDIQAMGwsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkHYrsYANgIgIAEgAkEgahDJAyEADBoLIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJBnK7GADYCICABIAJBIGoQyQMhAAwZCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQeitxgA2AiAgASACQSBqEMkDIQAMGAsgAkEUakHdATYCACACQTRqQQI2AgAgAiAAQQFqNgIcIAJCAjcCJCACQcStxgA2AiAgAkHeATYCDCACIABBBGo2AjwgAiACQQhqNgIwIAIgAkE8ajYCECACIAJBHGo2AgggASACQSBqEMkDIQAMFwsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkGcrcYANgIgIAEgAkEgahDJAyEADBYLIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJB9KzGADYCICABIAJBIGoQyQMhAAwVCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQbSsxgA2AiAgASACQSBqEMkDIQAMFAsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkH4q8YANgIgIAEgAkEgahDJAyEADBMLIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJBwKvGADYCICABIAJBIGoQyQMhAAwSCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQYCrxgA2AiAgASACQSBqEMkDIQAMEQsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkG8qsYANgIgIAEgAkEgahDJAyEADBALIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJB9KnGADYCICABIAJBIGoQyQMhAAwPCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQZypxgA2AiAgASACQSBqEMkDIQAMDgsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkHkqMYANgIgIAEgAkEgahDJAyEADA0LIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJBuKjGADYCICABIAJBIGoQyQMhAAwMCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQfSnxgA2AiAgASACQSBqEMkDIQAMCwsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkGwp8YANgIgIAEgAkEgahDJAyEADAoLIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJB7KbGADYCICABIAJBIGoQyQMhAAwJCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQcCmxgA2AiAgASACQSBqEMkDIQAMCAsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkH4pcYANgIgIAEgAkEgahDJAyEADAcLIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJBsKXGADYCICABIAJBIGoQyQMhAAwGCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQeykxgA2AiAgASACQSBqEMkDIQAMBQsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkGspMYANgIgIAEgAkEgahDJAyEADAQLIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJB2KPGADYCICABIAJBIGoQyQMhAAwDCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQaSjxgA2AiAgASACQSBqEMkDIQAMAgsgAkE0akEBNgIAIAJCAjcCJCACQeCixgA2AiAgAkHeATYCDCACIABBAWo2AjwgAiACQQhqNgIwIAIgAkE8ajYCCCABIAJBIGoQyQMhAAwBCyACQTRqQQE2AgAgAkICNwIkIAJBjKLGADYCICACQd4BNgIMIAIgAEEBajYCPCACIAJBCGo2AjAgAiACQTxqNgIIIAEgAkEgahDJAyEACyACQcAAaiQAIAAL/gsBDX8jAEGgBWsiAyQAIANBwABqQgA3AwAgA0E4akIANwMAIANBMGpCADcDACADQShqQgA3AwAgA0EgakIANwMAIANBGGpCADcDACADQRBqQgA3AwAgA0IANwMIQQAhBANAIANBCGogBGoiBUEBaiACLQAAIgZBBHY6AAAgBSAGQQ9xOgAAIAVBA2ogAkEBai0AACIGQQR2OgAAIAVBAmogBkEPcToAACACQQJqIQIgBEEEaiIEQcAARw0AC0EAIQIgAy0ACCEFAkADQCADQQhqIAJqIgQgBSAFQQhqIgZB8AFxazoAACAEQQFqIgUgBS0AACAGQRh0QRx1aiIGOgAAIAJBPkYNASAFIAYgBkEIaiIHQfABcWs6AAAgBEECaiIFIAUtAAAgB0EYdEEcdWoiBToAACACQQJqIQIMAAsLIABCADcDACAAQgE3AyggAEIBNwNQIABBIGpCADcDACAAQRhqQgA3AwAgAEEQakIANwMAIABBCGpCADcDACAAQTBqQgA3AwAgAEE4akIANwMAIABBwABqQgA3AwAgAEHIAGpCADcDAEEAIQIgAEHYAGpBAEHIABCCBhogAEHQAGohByAAQShqIQggA0EIakF/aiEJIANB6AFqQfgAaiEKIANB6AFqQdAAaiELIANB6AFqQShqIQwgA0GABGpB0ABqIQ0gA0GABGpBKGohDiADQYAEakH4AGohDwJAA0AgAkHAACACQcAASxshBAJAA0AgBCACRg0BIAJBAXEhBSACQQFqIgYhAiAFRQ0ACyAGQX9qIgJBAXYhBSACQcAATw0CIANByABqIAEgBUHAB2xqIAkgBmotAAAQeyADQYAEaiAAIANByABqEGsgA0HoAWogA0GABGogDxBQIAwgDiANEFAgCyANIA8QUCAKIANBgARqIA4QUCAAIANB6AFqQaABEP8FGiAGIQIMAQsLIANBiANqQSBqIABBIGopAwA3AwAgA0GIA2pBGGogAEEYaikDADcDACADQYgDakEQaiAAQRBqKQMANwMAIANBiANqQQhqIABBCGopAwA3AwAgA0G4A2ogCEEIaikDADcDACADQcADaiAIQRBqKQMANwMAIANByANqIAhBGGopAwA3AwAgA0HQA2ogCEEgaikDADcDACADIAApAwA3A4gDIAMgCCkDADcDsAMgA0H4A2ogB0EgaikDADcDACADQfADaiAHQRhqKQMANwMAIANB6ANqIAdBEGopAwA3AwAgA0HgA2ogB0EIaikDADcDACADIAcpAwA3A9gDIANBgARqIANBiANqEHggA0HoAWogA0GABGpBoAEQ/wUaIANBgARqIANB6AFqIANB6AFqQfgAaiIIEFAgA0GABGpBKGoiBSADQegBakEoaiIOIANB6AFqQdAAaiINEFAgA0GABGpB0ABqIgQgDSAIEFAgA0GIA2ogA0GABGpB+AAQ/wUaIANBgARqIANBiANqEHggA0HoAWogA0GABGpBoAEQ/wUaIANBgARqIANB6AFqIAgQUCAFIA4gDRBQIAQgDSAIEFAgA0GIA2ogA0GABGpB+AAQ/wUaIANBgARqIANBiANqEHggA0HoAWogA0GABGpBoAEQ/wUaIANBgARqIANB6AFqIAgQUCAFIA4gDRBQIAQgDSAIEFAgA0GIA2ogA0GABGpB+AAQ/wUaIANBgARqIANBiANqEHggA0HIAGogA0GABGogA0GABGpB+ABqIgYQUCADQcgAakEoaiAFIAQQUCADQcgAakHQAGogBCAGEFAgA0HIAGpB+ABqIANBgARqIAUQUCAAIANByABqQaABEP8FIQdBACECA0AgA0HIAGogASACIAJBAXFqIgJBAXZBwAdsaiADQQhqIAJqLQAAEHsgA0GABGogByADQcgAahBrIANB6AFqIANBgARqIAYQUCAOIAUgBBBQIA0gBCAGEFAgCCADQYAEaiAFEFAgByADQegBakGgARD/BRpBPyACayACQQFqIgJBAXFLDQALIANBoAVqJAAPCyAFQSBB0OvAABDHAwALjg0CBX8IfiMAQfACayIDJAAgA0GgAmogAkEBEGYgA0EIaiADQaACaiACEFAgA0GgAmogA0EIakEBEGYgA0EwaiADQaACaiACEFAgA0GAAWogASADQQhqEFAgA0HQAWogASADQTBqEFAgA0GgAmogA0HQAWoQuQEgA0H4AWpBIGogA0GgAmpBIGopAwA3AwAgA0H4AWpBGGogA0GgAmpBGGopAwA3AwAgA0H4AWpBEGogA0GgAmpBEGopAwA3AwAgA0H4AWpBCGogA0GgAmpBCGopAwA3AwAgAyADKQOgAjcD+AEgA0GgAmogA0H4AWpBAhBmIANBqAFqIANB0AFqIANBoAJqEFAgA0HYAGogA0GAAWogA0GoAWoQUCADQaACaiADQdgAakEBEGYgA0HQAWogAiADQaACahBQIANB+AFqIANB0AFqEKIBIANBoAJqIAEQogFBACECQQEhBANAIANBoAJqIAJqLQAAIANB+AFqIAJqLQAAcyIFQX9qIAVBf3NxQYABcUEHdhCHBSAEcSEEIAJBAWoiAkEgRw0ACyAEEIcFIQYgA0GgAmpBCGpC8P///////z8gAUEIaikDAH0iCEL/////////A4NC0P3//////z8gASkDAH0iCUIziHw3AwAgA0GgAmpBEGpC8P///////z8gAUEQaikDAH0iCkL/////////A4MgCEIziHw3AwAgA0GgAmpBGGpC8P///////z8gAUEYaikDAH0iCEL/////////A4MgCkIziHw3AwAgA0GgAmpBIGpC8P///////z8gAUEgaikDAH0iCkL/////////A4MgCEIziHw3AwAgAyAKQjOIQhN+IAlC/////////wODfDcDoAIgA0GoAWogA0HQAWoQogEgA0H4AWogA0GgAmoQogFBACECQQEhBANAIANB+AFqIAJqLQAAIANBqAFqIAJqLQAAcyIFQX9qIAVBf3NxQYABcUEHdhCHBSAEcSEEIAJBAWoiAkEgRw0ACyAEEIcFIQcgA0GgAmpBCGpC8P///////z8gAUEIaikDAH0iCEL/////////A4NC0P3//////z8gASkDAH0iCUIziHw3AwAgA0GgAmpBEGpC8P///////z8gAUEQaikDAH0iCkL/////////A4MgCEIziHw3AwAgA0GgAmpBGGpC8P///////z8gAUEYaikDAH0iCEL/////////A4MgCkIziHw3AwAgA0GgAmpBIGpC8P///////z8gAUEgaikDAH0iCkL/////////A4MgCEIziHw3AwAgAyAKQjOIQhN+IAlC/////////wODfDcDoAIgA0H4AWogA0GgAmpB4OvAABBQIANBgAFqIANB0AFqEKIBIANBqAFqIANB+AFqEKIBQQAhAkEBIQQDQCADQagBaiACai0AACADQYABaiACai0AAHMiBUF/aiAFQX9zcUGAAXFBB3YQhwUgBHEhBCACQQFqIgJBIEcNAAsgBBCHBSECIANBoAJqQeDrwAAgA0HYAGoQUCACIAdyEIcFIQQgA0HgAGoiAiACKQMAIgkgAykDqAKFQgAgBK1C/wGDfSIIgyAJhSIJNwMAIANB2ABqQRBqIgQgBCkDACIKIAMpA7AChSAIgyAKhSIKNwMAIANB2ABqQRhqIgUgBSkDACILIAMpA7gChSAIgyALhSILNwMAIANB2ABqQSBqIgEgASkDACIMIAMpA8AChSAIgyAMhSIMNwMAIAMgAykDWCINIAMpA6AChSAIgyANhSINNwNYIANB+AFqIANB2ABqEKIBIAFC8P///////z8gDH0iDkL/////////A4NC8P///////z8gC30iD0IziHwgDIVCACADLQD4AUEBcRCHBa1C/wGDfSIIgyAMhTcDACAFIA9C/////////wODQvD///////8/IAp9IgxCM4h8IAuFIAiDIAuFNwMAIAQgDEL/////////A4NC8P///////z8gCX0iC0IziHwgCoUgCIMgCoU3AwAgAiALQv////////8Dg0LQ/f//////PyANfSIKQjOIfCAJhSAIgyAJhTcDACADIA5CM4hCE34gCkL/////////A4N8IA2FIAiDIA2FNwNYIAAgByAGchCHBToAACAAQShqIAEpAwA3AwAgAEEgaiAFKQMANwMAIABBGGogBCkDADcDACAAQRBqIAIp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QgAgAikDGCIMQhN+Ig1CABCpAyADQdACaiABKQMIIg5CACACKQMgIg9CE34iEEIAEKkDIANB0ABqIA5CACAEQgAQqQMgA0EQaiAFQgAgB0IAEKkDIANBoAFqIAZCACAKQgAQqQMgA0HgAWogCEIAIA1CABCpAyADQaACaiALQgAgEEIAEKkDIANB4ABqIAtCACAEQgAQqQMgA0HgAmogDkIAIAdCABCpAyADQSBqIAVCACAJQgAQqQMgA0GwAWogBkIAIA1CABCpAyADQfABaiAIQgAgEEIAEKkDIANB8ABqIAhCACAEQgAQqQMgA0GwAmogC0IAIAdCABCpAyADQfACaiAOQgAgCUIAEKkDIANBMGogBUIAIAxCABCpAyADQcABaiAGQgAgEEIAEKkDIANBgAFqIAZCACAEQgAQqQMgA0GAAmogCEIAIAdCABCpAyADQcACaiALQgAgCUIAEKkDIANBgANqIA5CACAMQgAQqQMgA0HAAGogBUIAIA9CABCpAyAAIAMpA7ABIg8gAykDIHwiBCADKQPwAXwiBSADKQNgfCIGIAMpA+ACfCIHIAMpA6ABIhEgAykDEHwiCCADKQPgAXwiCyADKQOgAnwiDiADKQNQfCIJIAMpA5ABIhIgAykDAHwiECADKQPQAXwiDCADKQOQAnwiDSADKQPQAnwiCkIziCADQZABakEIaikDACADQQhqKQMAfCAQIBJUrXwgA0HQAWpBCGopAwB8IAwgEFStfCADQZACakEIaikDAHwgDSAMVK18IANB0AJqQQhqKQMAfCAKIA1UrXxCDYaEfCIQQjOIIANBoAFqQQhqKQMAIANBEGpBCGopAwB8IAggEVStfCADQeABakEIaikDAHwgCyAIVK18IANBoAJqQQhqKQMAfCAOIAtUrXwgA0HQAGpBCGopAwB8IAkgDlStfCAQIAlUrXxCDYaEfCIIQv////////8DgzcDECAAIAMpA8ABIg0gAykDMHwiCyADKQNwfCIOIAMpA7ACfCIJIAMpA/ACfCIMIAhCM4ggA0GwAWpBCGopAwAgA0EgakEIaikDAHwgBCAPVK18IANB8AFqQQhqKQMAfCAFIARUrXwgA0HgAGpBCGopAwB8IAYgBVStfCADQeACakEIaikDAHwgByAGVK18IAggB1StfEINhoR8IgRC/////////wODNwMYIAAgAykDgAEiDyADKQNAfCIFIAMpA4ACfCIGIAMpA8ACfCIHIAMpA4ADfCIIIARCM4ggA0HAAWpBCGopAwAgA0EwakEIaikDAHwgCyANVK18IANB8ABqQQhqKQMAfCAOIAtUrXwgA0GwAmpBCGopAwB8IAkgDlStfCADQfACakEIaikDAHwgDCAJVK18IAQgDFStfEINhoR8IgRC/////////wODNwMgIAAgBEIziCADQYABakEIaikDACADQcAAakEIaikDAHwgBSAPVK18IANBgAJqQQhqKQMAfCAGIAVUrXwgA0HAAmpBCGopAwB8IAcgBlStfCADQYADakEIaikDAHwgCCAHVK18IAQgCFStfEINhoRCE34gCkL/////////A4N8IgRC/////////wODNwMAIAAgBEIziCAQQv////////8Dg3w3AwggA0GQA2okAAv1CwIHfwF8IwBBkAFrIgIkACACIAE2AjQgAkEoaiABEAQCQAJAAkACQCACKAIoIgNFDQBBACEEAkACQCACKAIsIgFBLEsNACACQbDLwAA2AogBIAIgATYChAEgAiADNgKAASACQThqIAJBgAFqENwCAkAgAigCOA0AIAJBwABqIgUoAgAhBiACKAI8IQdBACEEAkAgAkHEAGooAgAiCEEgRw0AIAUgB0EJaikAADcDACACQcgAaiAHQRFqKQAANwMAIAJBzwBqIAdBGGopAAA3AAAgAiAHKQABNwM4IActAAAhBAsCQCAGRQ0AIAcgBkEBELgFCyAIQSBHDQEgACAEOgABIABBAmogAikDODcAACAAQQpqIAJBwABqKQMANwAAIABBEmogAkHIAGopAwA3AAAgAEEZaiACQc8AaikAADcAAEEAIQQMAgtBASEECyAAQQRqIARB/wFxQQBHENgCNgIAQQEhBAsgACAEOgAAIAFFDQEgAyABQQEQuAUMAQsCQAJAAkACQAJAAkAgAkE0ahC+BUUNACACQThqIAJBNGoQmQMgAigCQEEgRw0BIAIoAjghASAAQQA6AAAgACABKQAANwABIABBGWogAUEYaikAADcAACAAQRFqIAFBEGopAAA3AAAgAEEJaiABQQhqKQAANwAAIAIoAjwiAEUNBiABIABBARC4BQwGCwJAAkAgAkE0ahC8BUUNACACQQA2AmAgAkIBNwNYIAIgAkE0ahCTBjYCgAEgAkE4aiACQYABahCKAiACKAI8IQEgAigCOEUNASAAQQE6AAAgAEEEaiABNgIAIAIoAoABIgBBJEkNBiAAEAMMBgsCQCACKAI0EAVBAUYNAEHY4cAAQRQQACEBIABBAToAACAAQQRqIAE2AgAMBwsgAEIANwIAIABBIGpBADoAACAAQRhqQgA3AgAgAEEQakIANwIAIABBCGpCADcCAAwGCyACQcAAai0AACIDQQJGDQECQCACKAKAASIEQSRJDQAgBBADCyACIANBAEc6AGwgAiABNgJoIAJBIGogAkHoAGoQogMgAigCICIDQQJGDQIgAigCJCEBA0ACQAJAAkAgAw0AIAIgATYCdCACQRBqIAEQBgJAIAIoAhBFDQAgAisDGCIJRAAAAAAAAAAAZiIBRQ0AIAlEAAAAAADgb0BlDQMLIAJBzABqQQE2AgAgAkIBNwI8IAJBjOPAADYCOCACQSU2AnwgAiACQfgAajYCSCACIAJB9ABqNgJ4IAJBgAFqIAJBOGoQsQEgAigChAEhASACKAKAASIEIAIoAogBEAAhAwJAIAFFDQAgBCABQQEQuAULIABBAToAACAAQQRqIAM2AgAgAigCdCIAQSRJDQEgABADDAELIABBAToAACAAQQRqIAE2AgALIAIoAmgiAEEkSQ0FIAAQAwwFCwJAAkAgCUQAAAAAAADwQWMgCUQAAAAAAAAAAGZxRQ0AIAmrIQMMAQtBACEDC0H/ASADQQAgARsgCUQAAAAAAOBvQGQbIQMCQCACKAJgIgEgAigCXEcNACACQdgAaiABEOQCIAIoAmAhAQsgAigCWCABaiADOgAAIAIgAigCYEEBajYCYAJAIAIoAnQiAUEkSQ0AIAEQAwsgAkEIaiACQegAahCiAyACKAIMIQEgAigCCCIDQQJHDQAMAwsLQYTfwABBKyACQYABakHA38AAQdjgwAAQsgMAC0HQ4sAAQRRB5OLAABDLBQALAkAgAigCaCIBQSRJDQAgARADCwJAIAIoAmBBIEcNACACKAJYIQEgAEEAOgAAIAAgASkAADcAASAAQRlqIAFBGGopAAA3AAAgAEERaiABQRBqKQAANwAAIABBCWogAUEIaikAADcAACACKAJcIgBFDQMgASAAQQEQuAUMAwtBhN/AAEErIAJBgAFqQcDfwABB2ODAABCyAwALIAIoAlwiAEUNACACKAJYIABBARC4BQsgAigCNCIAQSNNDQIMAQsgAigCNCIAQSNNDQELIAAQAwsgAkGQAWokAAuMCwILfwF+IwBB8ABrIgMkACABKAIEIgRBBGoiBSABKAIIIgZBAnRqIgc1AgAhDiABKAIAIQggByAFIAZBAWoiCUECdGogBC8BMiIBIAZBf3NqIgVBAnQQgAYaIARBNGoiByAGQQF0aiIKLwAAIQsgCiAHIAlBAXRqIAVBAXQQgAYaIAQgAUF/aiIBOwEyAkAgAUH//wNxQQVPDQACQAJAAkAgBCgCACIFRQ0AIAhBAWohBwJAIAQvATAiCg0AAkAgBS8BMg0AIANBKGpBFGpBATYCACADQcgAakEUakEANgIAIANCATcCLCADQbihwAA2AiggA0EYNgIcIANBlJ/AADYCWCADQgE3AkwgA0HUocAANgJIIAMgA0EYajYCOCADIANByABqNgIYIANBKGpB3KHAABCTBAALAkAgAUH//wNxIAUoAlAiAS8BMmpBAWpBDEkNACADQeAAaiABNgIAIANB2ABqIAQ2AgAgAyAINgJcIAMgCDYCVCADQQA2AlAgAyAFNgJMIAMgBzYCSCADQcgAakEBEGoMAgsgA0HgAGogATYCACADQdgAaiAENgIAIAMgCDYCXCADIAg2AlQgA0EANgJQIAMgBTYCTCADIAc2AkggA0EYaiADQcgAakEAIAYQZwwDCwJAIAFB//8DcSAFIApBf2oiAUECdGpBzABqKAIAIgovATJqQQFqQQxJDQAgA0HgAGogBDYCACADQdgAaiAKNgIAIAMgCDYCXCADIAg2AlQgAyABNgJQIAMgBTYCTCADIAc2AkggA0HIAGpBARCJASADIAk2AiAMAgsgA0HgAGogBDYCACADQdgAaiAKNgIAIAMgCDYCXCADIAg2AlQgAyABNgJQIAMgBTYCTCADIAc2AkggA0EYaiADQcgAakEBIAYQZwwCCyADIAY2AiALIAMgBDYCHCADIAg2AhgLIAMoAiAhBiADKAIYIQggAygCHCIEKAIAIgFFDQAgCEEBaiEJA0AgAS8BMiIHQQRLDQECQCABKAIAIgVFDQAgCUEBaiEKAkAgAS8BMCIMDQACQCAFLwEyDQAgA0EoakEUakEBNgIAIANByABqQRRqQQA2AgAgA0IBNwIsIANBuKHAADYCKCADQRg2AmwgA0GUn8AANgJYIANCATcCTCADQdShwAA2AkggAyADQegAajYCOCADIANByABqNgJoIANBKGpB3KHAABCTBAALIAMgBSgCUCIMNgJAIAMgCTYCPCADIAE2AjggAyAJNgI0IANBADYCMCADIAU2AiwgAyAKNgIoAkAgByAMLwEyakEBakEMSQ0AIANBKGpBBSAHaxBqQQAhAUEADQMMBAsgA0HIAGpBGGogA0EoakEYaigCADYCACADQcgAakEQaiADQShqQRBqKQMANwMAIANByABqQQhqIANBKGpBCGopAwA3AwAgAyADKQMoNwNIIANBCGogA0HIAGoQcyADKAIIIQkgAygCDCIBDQIMAwsgBSAMQX9qIg1BAnRqQcwAaigCACEMIAMgATYCQCADIAk2AjwgAyAMNgI4IAMgCTYCNCADIA02AjAgAyAFNgIsIAMgCjYCKAJAIAcgDC8BMmpBAWpBDEkNACADQShqQQUgB2sQiQFBACEBQQANAgwDCyADQcgAakEYaiADQShqQRhqKAIANgIAIANByABqQRBqIANBKGpBEGopAwA3AwAgA0HIAGpBCGogA0EoakEIaikDADcDACADIAMpAyg3A0ggA0EQaiADQcgAahBzIAMoAhAhCSADKAIUIgENAQwCCwsgBw0AIAJBAToAAAsgACAINgIIIABBEGogBjYCACAAQQxqIAQ2AgAgACALQQh2QQFxrUIohiALrUIBg0IghoQgDoQ3AgAgA0HwAGokAAurCgEDfyABKAI0IQICQAJAAkAgAS0AECIDQQRHDQAgAg0BQQAhAQwCCyABQSRqKAIAIQQCQCACDQACQAJAIANBA0cNACAEDQFBACEBDAQLIAFBFGooAgAhAgJAIAQNAAJAAkAgA0ECRw0AIAINAUEAIQEMBgsgASgCACEEAkAgAg0AAkACQCADDQAgBA0BQQAhAQwICwJAIAQNAEEAIQEMCAsgAUEMaigCACABQQhqKAIAa0EFdiEBDAcLIAFBDGooAgAgAUEIaigCAGtBBXYhAQwGCwJAAkACQCADDQAgBA0BQQAhAgwCCwJAIAQNAEEAIQIMAgsgAUEMaigCACABQQhqKAIAa0EFdiECDAELIAFBDGooAgAgAUEIaigCAGtBBXYhAgsgAUEgaigCACABQRxqKAIAa0EFdiACaiEBDAULIAFBIGooAgAgAUEcaigCAGtBBXYhAQwECwJAAkACQCADQQJHDQAgAg0BQQAhAgwCCyABKAIAIQQCQCACDQACQAJAIAMNACAEDQFBACECDAQLAkAgBA0AQQAhAgwECyABQQxqKAIAIAFBCGooAgBrQQV2IQIMAwsgAUEMaigCACABQQhqKAIAa0EFdiECDAILAkACQAJAIAMNACAEDQFBACECDAILAkAgBA0AQQAhAgwCCyABQQxqKAIAIAFBCGooAgBrQQV2IQIMAQsgAUEMaigCACABQQhqKAIAa0EFdiECCyABQSBqKAIAIAFBHGooAgBrQQV2IAJqIQIMAQsgAUEgaigCACABQRxqKAIAa0EFdiECCyABQTBqKAIAIAFBLGooAgBrQQV2IAJqIQEMAwsgAUEwaigCACABQSxqKAIAa0EFdiEBDAILAkACQAJAIANBA0cNACAEDQFBACECDAILIAFBFGooAgAhAgJAIAQNAAJAAkAgA0ECRw0AIAINAUEAIQIMBAsgASgCACEEAkAgAg0AAkACQCADDQAgBA0BQQAhAgwGCwJAIAQNAEEAIQIMBgsgAUEMaigCACABQQhqKAIAa0EFdiECDAULIAFBDGooAgAgAUEIaigCAGtBBXYhAgwECwJAAkACQCADDQAgBA0BQQAhAgwCCwJAIAQNAEEAIQIMAgsgAUEMaigCACABQQhqKAIAa0EFdiECDAELIAFBDGooAgAgAUEIaigCAGtBBXYhAgsgAUEgaigCACABQRxqKAIAa0EFdiACaiECDAMLIAFBIGooAgAgAUEcaigCAGtBBXYhAgwCCwJAAkACQCADQQJHDQAgAg0BQQAhAgwCCyABKAIAIQQCQCACDQACQAJAIAMNACAEDQFBACECDAQLAkAgBA0AQQAhAgwECyABQQxqKAIAIAFBCGooAgBrQQV2IQIMAwsgAUEMaigCACABQQhqKAIAa0EFdiECDAILAkACQAJAIAMNACAEDQFBACECDAILAkAgBA0AQQAhAgwCCyABQQxqKAIAIAFBCGooAgBrQQV2IQIMAQsgAUEMaigCACABQQhqKAIAa0EFdiECCyABQSBqKAIAIAFBHGooAgBrQQV2IAJqIQIMAQsgAUEgaigCACABQRxqKAIAa0EFdiECCyABQTBqKAIAIAFBLGooAgBrQQV2IAJqIQIMAQsgAUEwaigCACABQSxqKAIAa0EFdiECCyABQcAAaigCACABQTxqKAIAa0EFdiACaiEBDAELIAFBwABqKAIAIAFBPGooAgBrQQV2IQELIABBATYCBCAAIAE2AgAgAEEIaiABNgIAC94KAQV/IwBB0ABrIgMkACADQRBqQQhqIAFBCGooAgA2AgAgAyABKQIANwMQIAMgA0EQahDvBCADQRBqIAMoAgAiBCADKAIIIgUgAkEBakEAIAItAAAbEIEEAkACQAJAIAMtACgiBg0AIABCATcCAAwBCyAGQQZ0IgFBARCYBSICRQ0BIAAgBjYCBCAAIAI2AgACQCAGQQJJDQAgBkF/aiIHQQdxIQECQCAGQX5qQQdJDQAgB0F4cSEHA0AgAkIANwAAIAJBOGpCADcAACACQTBqQgA3AAAgAkEoakIANwAAIAJBIGpCADcAACACQRhqQgA3AAAgAkEQakIANwAAIAJBCGpCADcAACACQcAAakIANwAAIAJByABqQgA3AAAgAkHQAGpCADcAACACQdgAakIANwAAIAJB4ABqQgA3AAAgAkHoAGpCADcAACACQfAAakIANwAAIAJB+ABqQgA3AAAgAkGAAWpCADcAACACQYgBakIANwAAIAJBkAFqQgA3AAAgAkGYAWpCADcAACACQaABakIANwAAIAJBqAFqQgA3AAAgAkGwAWpCADcAACACQbgBakIANwAAIAJB+AFqQgA3AAAgAkHwAWpCADcAACACQegBakIANwAAIAJB4AFqQgA3AAAgAkHYAWpCADcAACACQdABakIANwAAIAJByAFqQgA3AAAgAkHAAWpCADcAACACQYACakIANwAAIAJBiAJqQgA3AAAgAkGQAmpCADcAACACQZgCakIANwAAIAJBoAJqQgA3AAAgAkGoAmpCADcAACACQbACakIANwAAIAJBuAJqQgA3AAAgAkHAAmpCADcAACACQcgCakIANwAAIAJB0AJqQgA3AAAgAkHYAmpCADcAACACQeACakIANwAAIAJB6AJqQgA3AAAgAkHwAmpCADcAACACQfgCakIANwAAIAJBuANqQgA3AAAgAkGwA2pCADcAACACQagDakIANwAAIAJBoANqQgA3AAAgAkGYA2pCADcAACACQZADakIANwAAIAJBiANqQgA3AAAgAkGAA2pCADcAACACQfgDakIANwAAIAJB8ANqQgA3AAAgAkHoA2pCADcAACACQeADakIANwAAIAJB2ANqQgA3AAAgAkHQA2pCADcAACACQcgDakIANwAAIAJBwANqQgA3AAAgAkGABGohAiAHQXhqIgcNAAsLIAFFDQADQCACQgA3AAAgAkE4akIANwAAIAJBMGpCADcAACACQShqQgA3AAAgAkEgakIANwAAIAJBGGpCADcAACACQRBqQgA3AAAgAkEIakIANwAAIAJBwABqIQIgAUF/aiIBDQALCyACQgA3AAAgAkE4akIANwAAIAJBMGpCADcAACACQShqQgA3AAAgAkEgakIANwAAIAJBGGpCADcAACACQRBqQgA3AAAgAkEIakIANwAACyAAIAY2AgggACADKQMQNwIMIABBJGogBjoAACAAQSVqIANBKWoiAikAADcAACAAQRRqIANBEGpBCGopAwA3AgAgAEEcaiADQRBqQRBqKQMANwIAIABBLWogAkEIaikAADcAACAAQTVqIAJBEGopAAA3AAAgAEE9aiACQRhqKQAANwAAIABBxABqIAJBH2ooAAA2AAACQCAFRQ0AIAVBOGwhASAEIQIDQAJAIAJBBGooAgAiAEUNACACKAIAIACtQiJ+p0EBELgFCwJAIAJBEGooAgAiAEUNACACQQxqKAIAIABBARC4BQsgAkE4aiECIAFBSGoiAQ0ACwsCQCADKAIEIgJFDQAgBCACrUI4fqdBBBC4BQsgA0HQAGokAA8LIAFBARDvBQALvAoCDH8HfiMAQeAAayIEJAACQAJAAkACQAJAAkBBIEEBEJgFIgVFDQAgBEEIaiACKAIAEJIFIARBMGogBCgCCCAEKAIMEL8DIAVBGGogBEEwakEYaikAADcAACAFQRBqIARBMGpBEGopAAA3AAAgBUEIaiAEQTBqQQhqKQAANwAAIAUgBCkAMDcAAAJAAkAgAUEUaigCACABQSRqLQAAIgZJDQAgASgCDCEHQQhBBBCYBSIIRQ0DIARBEGpBCGoiCUIBNwMAIAQgCDYCFCAEQTBqQQxqIAY2AgAgBCAHNgI4IAQgBUEgajYCNCAEIAU2AjBBACEGIARB0ABqQQhqQQA2AgAgBCAINgJQIAQgBEEQakEMaiIINgJUIARBMGogBEHQAGoQrwIgCSgCACEKIAgoAgAhCyAEKAIUIQggBUEgQQEQuAUgCCALQQN0IgdqIQkDQCAHIAZGDQIgCCAGaiEFIAZBCGohBiAFKAIAQQFGDQALIABBADYCACAKRQ0HIAggCkEDdEEEELgFDAcLIARBCzoAFCAEQRBqQQxqKAIAIQYgBCkCFCEQIABBEGogBEEQakEQaikDADcCACAAQQxqIAY2AgAgACAQNwIEIABBAjYCACAFQSBBARC4BQwGCwJAAkAgCSAIayIMDQBBBCENDAELIAxBAXYiBkEEEJgFIg1FDQMLAkACQCAIIAlHDQBBACELDAELIAtBf2pB/////wFxQQFqIQsgDSEFIAghBgNAIAYoAgBFDQUgBSAGQQRqKAIANgIAIAVBBGohBSAGQQhqIgYgCUcNAAsLIARBMGpBGGogA0EYaiIFKQAANwMAIARBMGpBEGogA0EQaiIHKQAANwMAIARBMGpBCGogA0EIaiIJKQAANwMAIAQgAykAADcDMCAEQTBqIAFBJ2oiBkEgEIEGRQ0EIAYgAykAADcAACAGQRhqIAUpAAA3AAAgBkEQaiAHKQAANwAAIAZBCGogCSkAADcAACABKAIIIgZFDQQgASgCAEEAIAZBBnQQggYaDAQLQSBBARDvBQALQQhBBBDvBQALIAZBBBDvBQALQYygxgBBK0GgocYAEIQEAAsgBEHQAGogAUEMahDdAyAEQRBqIAIgBCgCUCIGIAQoAlgQgAEgBEEQakEMaigCACECIARBEGpBCGooAgAhDiAEKAIUIQ8CQAJAAkACQCAEKAIQDQACQCAEKAJUIgVFDQAgBiAFQQEQuAULAkAgC0UNAEEAIQcgDyEGIA0hCQNAIAIgB0YNBCABKAIIIgMgCSgCACIFTQ0FIAZBCGopAAAhECAGQRBqKQAAIREgBkEYaikAACESIAZBIGopAAAhEyAGQShqKQAAIRQgBkEwaikAACEVIAZBOGopAAAhFiABKAIAIAVBBnRqIgUgBikAADcAACAFQThqIBY3AAAgBUEwaiAVNwAAIAVBKGogFDcAACAFQSBqIBM3AAAgBUEYaiASNwAAIAVBEGogETcAACAFQQhqIBA3AAAgBkHAAGohBiAJQQRqIQkgCyAHQQFqIgdHDQALCyAAQQs2AgAgDkUNASAPIA5BBnRBARC4BQwBCyAAQRRqIARBKGooAgA2AgAgAEEMaiAEQSBqKQMANwIAIABBCGogAjYCACAAIA42AgQgACAPNgIAIAQoAlQiBUUNACAGIAVBARC4BQsCQCAMRQ0AIA0gDEEBdkEEELgFCyAKRQ0CIAggCkEDdEEEELgFDAILIAIgAkHInsYAEMcDAAsgBSADQdiexgAQxwMACyAEQeAAaiQAC/cKAgx/LH4jAEGAAWsiAiQAIAExACYhDiABMQAlIQ8gATEAJCEQIAExACMhESABMQAhIRIgATEAIiETIAExACAhFCABMQAfIRUgATEAHiEWIAExAB0hFyABMQAcIRggATEAGiEZIAExABshGiABMQA/IRsgATEAPiEcIAExAD0hHSABMQA8IR4gATEAOyEfIAE1ADAhICABMQAvISEgATEALiEiIAEzADghIyABMQA6ISQgATEANyElIAExADYhJiABMQA0IScgATEANSEoIAE1AAghKSABMQAMISogATEAByErIAExAAYhLCABNQAAIS0gATEABCEuIAExAAUhLyABMwAYITAgATEAFyExIAExABYhMiABMQAUITMgATEAFSE0IAExACchNSABNQAoITYgATEALCE3IAExAC0hOCACQQhqQRBqIgMgATUAECI5QhiGIAExAA1CKIYgATEADkIwhoQgATEAD0I4hoRCKIiEQv////////8HgzcDACACQTBqQQhqIgQgNSA2IDdCIIaEIDhCKIaEIjZCCIaEQv////////8HgzcDACACQQhqQRhqIgEgMEIkhiA5IDNCIIaEIDRCKIaEIDJCMIaEIDFCOIaEQhyIhDcDACACQQhqQQhqIgUgKSAqQiCGhEIMhiArQjiGIC0gLkIghoQgL0IohoQgLEIwhoQiKYRCNIiENwMAIAJBMGpBGGoiBiAjICRCEIaEIiNCIIYgJ0IghiAoQiiGhCAmQjCGhCAlQjiGhEIgiIRC/////////weDNwMAIAJBMGpBEGoiByAgQhSGICJCMIYgNoQgIUI4hoRCLIiENwMAIAJBMGpBIGoiCCAfQhiGICOEIB5CIIaEIB1CKIaEIBxCMIaEIBtCOIaEQhSINwMAIAJBCGpBIGoiCSAUQjCGIDAgGUIQhoQgGkIYhoQgGEIghoQgF0IohoQgFkIwhoQgFUI4hoRCEIiEQv////////8HgzcDACACIClC/////////weDNwMIIAIgFCASQgiGhCATQhCGhCARQhiGhCAQQiCGhCAPQiiGhCAOQjCGhEIEiEL/////////B4M3AzAgAkHYAGogAkEIakGQqcEAED8gCSACQdgAakEgaiIKKQMANwMAIAEgAkHYAGpBGGoiCykDADcDACADIAJB2ABqQRBqIgwpAwA3AwAgBSACQdgAakEIaiINKQMANwMAIAIgAikDWDcDCCACQdgAaiACQTBqQbipwQAQPyAIIAopAwAiFDcDACAGIAspAwAiMDcDACAHIAwpAwAiDjcDACAEIA0pAwAiDzcDACACIAIpA1giEDcDMCAAIBQgCSkDAHwgMCABKQMAfCAOIAMpAwB8IA8gECACKQMIfCIUQjSIfCAFKQMAfCIwQjSIfCIOQjSIfCIPQjSIfEL/////////B4MgDkL/////////B4MgFEL/////////B4NCk9iomNqc5358Ig5CP4cgMEL/////////B4N8Qv+0yrGIuoV5fCIwQj+HfEKHwqx/fCIQQj+HIA9C/////////weDfCIPQj+HfEKAgICAgIB8fCIRQj+HIhRC7afX56XjmAGDIA5C/////////weDfCIOQv////////8HgzcDACAAIBRCgcu1zvfF+gaDIDBC/////////weDfCAOQjSIfCIwQv////////8HgzcDCCAAIBRC+b3TAIMgEEL/////////B4N8IDBCNIh8IjBC/////////weDNwMQIAAgMEI0iCAPQv////////8Hg3wiMEL/////////B4M3AxggACAUQoCAgICAgASDIBF8IDBCNIh8Qv////////8HgzcDICACQYABaiQAC+0JAQ9/IwBB4ABrIgQkACAEQgA3AgwCQCACQThsIgJFDQAgASACaiEFIARBGGpBFGohBiAEQRhqQRBqIQcgBEEYakEUaiEIIARBGGpBEGohCUEAIQoDQCABQRhqIQsCQAJAAkAgCg0AQQAhDCAEQQA2AiQMAQsgBCgCCCENAkADQCAKLwEyIg5BAnQhD0EAIQJBfyEMAkACQANAAkAgDyACRw0AIA4hDAwCCyAKIAJqIRAgDEEBaiEMIAJBBGohAkF/IAsgEEEEaigCAEEgEIEGIhBBAEcgEEEASBsiEEEBRg0ACyAQQf8BcUUNAQsgDUUNAiANQX9qIQ0gCiAMQQJ0akHMAGooAgAhCgwBCwsgBCAMNgIkIAQgCjYCICAEIA02AhxBASEMIAkhAgwCCyAEIAw2AiggBCAKNgIkQQAhDCAEQQA2AiALIAQgCzYCHCAIIQILIAFBOGohESAEIAw2AhggAiAEQQhqNgIAIARBGGoQrgEaAkAgASgCCCICRQ0AIAEoAgAiASACQSJsaiESA0AgASIPQSJqIQECQAJAAkAgBCgCDCIKDQBBACEMIARBADYCJAwBCyAEKAIIIQ0CQANAIAovATIiDkECdCELQQAhAkF/IQwCQAJAA0ACQCALIAJHDQAgDiEMDAILIAogAmohECAMQQFqIQwgAkEEaiECQX8gDyAQQQRqKAIAQSAQgQYiEEEARyAQQQBIGyIQQQFGDQALIBBB/wFxRQ0BCyANRQ0CIA1Bf2ohDSAKIAxBAnRqQcwAaigCACEKDAELCyAEIAw2AiQgBCAKNgIgIAQgDTYCHEEBIQwgByECDAILIAQgDDYCKCAEIAo2AiRBACEMIARBADYCIAsgBCAPNgIcIAYhAgsgBCAMNgIYIAIgBEEIajYCACAEQRhqEK4BIgIgAi0AACAPLQAgcjoAACACIAItAAEgDy0AIXI6AAEgASASRw0ACwsgESAFRg0BIAQoAgwhCiARIQEMAAsLAkAgAy0AAEUNACAEIARBCGogA0EBahCcAgsgBCgCCCEPIARBGGpBIGogBCgCEEEAIAQoAgwiAhs2AgAgBEEYakEYaiIMIAI2AgAgBEEsaiIQIA82AgAgBEEYakEIaiIKIAI2AgAgBEEYakEQaiACRUEBdCICNgIAIARBxABqIANBCGopAAA3AgAgBEHMAGogA0EQaikAADcCACAEQdQAaiADQRhqKQAANwIAIARB3ABqIANBIGotAAA6AAAgBCAPNgIcIAQgAjYCGCAEIAMpAAA3AjwgACAEQRhqEFggBCgCECELIAQoAgghDyAMIAQoAgwiAjYCACAQIA82AgAgCiACNgIAIAQgC0EAIAIbNgI4IAQgDzYCHCAEIAJFQQF0IgI2AiggBCACNgIYIABBDGogBEEYahBiIAQoAhAhCyAEKAIIIQ8gDCAEKAIMIgI2AgAgECAPNgIAIAogAjYCACAEIAtBACACGzYCOCAEIA82AhwgBCACRUEBdCICNgIoIAQgAjYCGCAAQRhqIARBGGoQYyAEKAIQIQsgBCgCCCEPIAwgBCgCDCICNgIAIBAgDzYCACAKIAI2AgAgBCALQQAgAhs2AjggBCAPNgIcIAQgAkVBAXQiAjYCKCAEIAI2AhggAEEkaiAEQRhqEGUgBEEIahCyASAEQeAAaiQAC64KAQh/IwBB0AFrIgIkACACQRBqIAFByAAQ/wUaAkACQAJAAkACQCACLQA0IgFBAkYNACACQQA6ADQgAQ0BIAJBAjoANAsCQAJAIAIoAhAiAUEDRg0AIAJBMGooAgAiA0UNACACQRBqQQRyIQQDQCACIANBf2o2AjACQAJAIAEOAwABBgELIAIoAhghAwJAIAIoAhQiAUUNACABQX9qIQUCQCABQQdxIgZFDQADQCABQX9qIQEgAygCTCEDIAZBf2oiBg0ACwsgBUEHSQ0AA0AgAygCTCgCTCgCTCgCTCgCTCgCTCgCTCgCTCEDIAFBeGoiAQ0ACwsgAkEANgIcIAIgAzYCGCACQgE3AxALIAJBCGogBBCfAiACKAIIIgNFDQECQCACKAIMIgEtAABFDQAgAUEBai0AAEH/AXENAwsgAigCMCIDRQ0BIAIoAhAhAQwACwsgAEEANgIIIABCATcCAAwECyACQegAakEYaiADKAIAIgFBGGopAAA3AwAgAkHoAGpBEGogAUEQaikAADcDACACQegAakEIaiABQQhqKQAANwMAIAIgASkAADcDaAwCCyACQYABaiACQc0AaikAADcDACACQfgAaiACQcUAaikAADcDACACQfAAaiACQT1qKQAANwMAIAIgAkE1aikAADcDaAwBC0HE2sAAQStBnNzAABCEBAALAkBBgAFBARCYBSIHRQ0AIAcgAikDaDcAACAHQRhqIAJB6ABqQRhqKQMANwAAIAdBEGogAkHoAGpBEGopAwA3AAAgB0EIaiACQegAakEIaikDADcAACACQoSAgIAQNwJcIAIgBzYCWCACQegAaiACQRBqQcgAEP8FGiACQegAakEEciEEIAJBjQFqIQhBASEJA0ACQAJAAkACQCACLQCMASIBQQJGDQAgAkEAOgCMASABDQEgAkECOgCMAQsCQCACKAJoIgNBA0YNACACKAKIASIBRQ0AA0AgAiABQX9qNgKIAQJAAkAgAw4DAAEFAQsgAigCcCEDAkAgAigCbCIBRQ0AIAFBf2ohBQJAIAFBB3EiBkUNAANA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AAtBACEAC0EAIQIgABDpBQ0AQfS/xgAgAEEMaigCAEEBdhDDBkUNACAAKAIEIANJDQBBnMPGACEBA0AgACABENYEDQEgASgCCCIBDQALQfS/xgAgACgCACAAKAIEIgEgASADaxDBBkUNACADRQ0AIAAgACgCBCADazYCBEEAQQAoApTDRiADazYClMNGQQAoAojDRiEBQQAoApDDRiEAQQAgACAAEJkGIgJBCBCBBSACayICEJcGIgA2ApDDRkEAIAEgAyACamsiATYCiMNGIAAgAUEBcjYCBBC+BiICQQgQgQUhBEEUQQgQgQUhBUEQQQgQgQUhBiAAIAEQlwYgBiAFIAQgAmtqajYCBEEAQYCAgAE2AqzDRiADIQILIAJBABCgAmtHDQFBACgCiMNGQQAoAqzDRk0NAUEAQX82AqzDRg8LIAFBgAJJDQEgACABEJUCQQBBACgCtMNGQX9qIgA2ArTDRiAADQAQoAIaDwsPCyABQQN2IgJBA3RB/L/GAGohAQJAAkBBACgC9L9GIgNBASACdCICcUUNACABKAIIIQIMAQtBACADIAJyNgL0v0YgASECCyABIAA2AgggAiAANgIMIAAgATYCDCAAIAI2AggLzggCCH8HfgJAAkACQAJAAkACQAJAIAEpAwAiDVANACANQv//////////H1YNASADRQ0DQaB/IAEvARgiAUFgaiABIA1CgICAgBBUIgUbIgFBcGogASANQiCGIA0gBRsiDUKAgICAgIDAAFQiBRsiAUF4aiABIA1CEIYgDSAFGyINQoCAgICAgICAAVQiBRsiAUF8aiABIA1CCIYgDSAFGyINQoCAgICAgICAEFQiBRsiAUF+aiABIA1CBIYgDSAFGyINQoCAgICAgICAwABUIgUbIA1CAoYgDSAFGyINQj+Hp0F/c2oiBWtBEHRBEHVB0ABsQbCnBWpBzhBtIgFB0QBPDQIgAUEEdCIBQfL8wQBqLwEAIQYCQAJAAkACQCABQej8wQBqKQMAIg5C/////w+DIg8gDSANQn+FQj+IhiINQiCIIhB+IhFCIIggDkIgiCIOIBB+fCAOIA1C/////w+DIg1+Ig5CIIh8IBFC/////w+DIA8gDX5CIIh8IA5C/////w+DfEKAgICACHxCIIh8Ig1BQCAFIAFB8PzBAGovAQBqayIBQT9xrSIQiKci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AEYNAEEoQQQQmAUiAUUNASABQoeAgICACDcCCCABQfiYxgA2AgQgAUECNgIAIAAgATYCBCAAQQE2AgAgAEEIakG4t8IANgIADAMLIAEoAAchAiABKAADIQQgAS0AHyEFIAEtAB4hBiABLQAdIQcgAS0AGyEIIAEtABwhCSABLQAaIQogAS0AGSELIAEtABghDCABLQAXIQ0gAS0AFiEOIAEtABUhDyABLQAUIRAgAS0AEyERIAEtABIhEiABLQARIRMgAS0AECEUIAEtAA8hFSABLQAOIRYgAS0ADSEXIAEtAAwhGCABLQALIRkgAS0AAiEaIAEtAAAhGyADIAEtAAEiHDoALiADIBs6AC8gAyAaOgAtIAMgGToAIyADIBg6ACIgAyAXOgAhIAMgFjoAICADIBU6AB8gAyAUOgAeIAMgEzoAHSADIBI6ABwgAyAROgAbIAMgEDoAGiADIA86ABkgAyAOOgAYIAMgDToAFyADIAw6ABYgAyALOgAVIAMgCjoAFCADIAk6ABIgAyAIOgATIAMgBzoAESADIAY6ABAgAyAFOgAPIAMgBDYCKCADIAI2AiQgA0HIAGoiHSABQThqKQAANwMAIANBwABqIh4gAUEwaikAADcDACADQTBqQQhqIh8gAUEoaikAADcDACADIAEpACA3AzAgA0HwAWogA0EwahB8AkAgAykD8AFCAFINAEEoQQQQmAUiAUUNAiABQQA2AgAgAEEIakG4t8IANgIAIAAgATYCBCAAQQE2AgAgA0EAOgAvIANBADoALiADQQA6AC0gA0EAOgAoIANBADoAKSADQQA6ACogA0EAOgArIANBADoAJCADQQA6ACUgA0EAOgAmIANBADoAJyADQQA6ACMgA0EAOgAiIANBADoAISADQQA6ACAgA0EAOgAfIANBADoAHiADQQA6AB0gA0EAOgAcIANBADoAGyADQQA6ABogA0EAOgAZIANBADoAGCADQQA6ABcgA0EAOgAWIANBADoAFSADQQA6ABQgA0EAOgATIANBADoAEiADQQA6ABEgA0EAOgAQIANBADoADwwDCyADKAL4ASEBIANB1ABqIANB8AFqQQxqQZwBEP8FGiADQaQDaiAdKQMANwIAIANBnANqIB4pAwA3AgAgA0GUA2ogHykDADcCACADIAMpAzA3AowDIANB8AFqIANB1ABq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IAogCVStfEINhoR8IgVCM4ggA0GgAWpBCGopAwAgA0EQakEIaikDAHwgCCANVK18QgGGIAhCP4iEIANBwAFqQQhqKQMAfCAEIA5UrXwgBSAEVK18Qg2GhHwiBEIziCADQZABakEIaikDACADQdAAakEIaikDAHwgBiALVK18QgGGIAZCP4iEIANBCGopAwB8IAcgDFStfCAEIAdUrXxCDYaEQhN+IBdC/////////wODfCIGQv////////8DgyEIIAZCM4ggFUL/////////A4N8IQcgBEL/////////A4MhBCAFQv////////8DgyEFIApC/////////wODIQYgAkF/aiICDQALIAAgBDcDICAAIAU3AxggACAGNwMQIAAgBzcDCCAAIAg3AwAgA0HwAWokAAvOBwEUfwJAAkAgAUEYaigCACIELwEyIgUgAUEQaigCACIGLwEyIgcgAhsgA0kNACAHQQFqIgggBWoiCUELSw0BIAEoAgwhCiABKAIIIQsgASgCACEMIAEoAgQiAS8BMiENIAYgCTsBMkEEIQ4gAUEEaiIPIAtBAnQiEGoiESgCACESIBEgDyALQQFqIhNBAnQiFGogDSALQX9zaiIVQQJ0IhYQgAYaIAZBBGoiDyAHQQJ0aiASNgIAIA8gCEECdGogBEEEaiAFQQJ0IhcQ/wUaIAFBNGoiESALQQF0aiISLwAAIQ8gEiARIBNBAXRqIBVBAXQQgAYaIAZBNGoiESAHQQF0aiISIA9BAXE6AAAgEiAPQQh2QQFxOgABIBEgCEEBdGogBEE0aiAFQQF0EP8FGiABQcwAaiIPIBRqIBAgD2pBCGogFhCABhoCQCATIA1PDQAgDSALa0F+aiEQAkAgFUEDcSIPRQ0AIAtBAnQgAWpB0ABqIQsDQCALKAIAIhUgEzsBMCAVIAE2AgAgC0EEaiELIBNBAWohEyAPQX9qIg8NAAsLIBBBA0kNACATQQNqIQtBACANayEVIBNBAnQgAWpB2ABqIRMDQCATQXRqKAIAIg8gC0F9ajsBMCAPIAE2AgAgE0F4aigCACIPIAtBfmo7ATAgDyABNgIAIBNBfGooAgAiDyALQX9qOwEwIA8gATYCACATKAIAIg8gCzsBMCAPIAE2AgAgE0EQaiETIBUgC0EEaiILakEDRw0ACwsgASABLwEyQX9qOwEyQcwAIQECQCAMQQFNDQBBBCEOIAYgCEECdGpBzABqIARBzABqIBdBBGoQ/wUaQfwAIQEgCSAHTQ0AIAghCwJAIAVBAWpBA3EiE0UNACAGIAdBAnRqQdAAaiEBIAghCwNAIAEoAgAiDyALOwEwIA8gBjYCACABQQRqIQEgC0EBaiELIBNBf2oiEw0ACwtB/AAhASAFQQNJDQAgC0EDaiEBQX4gByAFamshDyALQQJ0IAZqQdgAaiELA0AgC0F0aigCACITIAFBfWo7ATAgEyAGNgIAIAtBeGooAgAiEyABQX5qOwEwIBMgBjYCACALQXxqKAIAIhMgAUF/ajsBMCATIAY2AgAgCygCACITIAE7ATAgEyAGNgIAIAtBEGohC0EEIQ4gDyABQQRqIgFqQQNHDQALQfwAIQELIAQgASAOELgFIAAgCEEAIAIbIANqNgIIIAAgBjYCBCAAIAo2AgAPC0GApsAAQZEBQZSnwAAQhAQAC0Gkp8AAQSpB0KfAABCEBAALmgkBAX8jAEEwayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAADhIAAQIDBAUGBwgJCgsMDQ4PEBEACyACIAAtAAE6AAggAkEsakEBNgIAIAJCAjcCHCACQZjXwQA2AhggAkGMATYCFCACIAJBEGo2AiggAiACQQhqNgIQIAEgAkEYahDJAyEADBELIAIgAEEIaikDADcDCCACQSxqQQE2AgAgAkICNwIcIAJB/NbBADYCGCACQY0BNgIUIAIgAkEQajYCKCACIAJBCGo2AhAgASACQRhqEMkDIQAMEAsgAiAAQQhqKQMANwMIIAJBLGpBATYCACACQgI3AhwgAkH81sEANgIYIAJBjgE2AhQgAiACQRBqNgIoIAIgAkEIajYCECABIAJBGGoQyQMhAAwPCyACIABBCGorAwA5AwggAkEsakEBNgIAIAJCAjcCHCACQeDWwQA2AhggAkGPATYCFCACIAJBEGo2AiggAiACQQhqNgIQIAEgAkEYahDJAyEADA4LIAIgAEEEaigCADYCCCACQSxqQQE2AgAgAkICNwIcIAJBwNbBADYCGCACQZABNgIUIAIgAkEQajYCKCACIAJBCGo2AhAgASACQRhqEMkDIQAMDQsgAiAAQQRqKQIANwMIIAJBLGpBATYCACACQgE3AhwgAkGs1sEANgIYIAJBkQE2AhQgAiACQRBqNgIoIAIgAkEIajYCECABIAJBGGoQyQMhAAwMCyACQSxqQQA2AgAgAkHM1MEANgIoIAJCATcCHCACQZzWwQA2AhggASACQRhqEMkDIQAMCwsgAkEsakEANgIAIAJBzNTBADYCKCACQgE3AhwgAkGI1sEANgIYIAEgAkEYahDJAyEADAoLIAJBLGpBADYCACACQczUwQA2AiggAkIBNwIcIAJB9NXBADYCGCABIAJBGGoQyQMhAAwJCyACQSxqQQA2AgAgAkHM1MEANgIoIAJCATcCHCACQeDVwQA2AhggASACQRhqEMkDIQAMCAsgAkEsakEANgIAIAJBzNTBADYCKCACQgE3AhwgAkHI1cEANgIYIAEgAkEYahDJAyEADAcLIAJBLGpBADYCACACQczUwQA2AiggAkIBNwIcIAJBuNXBADYCGCABIAJBGGoQyQMhAAwGCyACQSxqQQA2AgAgAkHM1MEANgIoIAJCATcCHCACQazVwQA2AhggASACQRhqEMkDIQAMBQsgAkEsakEANgIAIAJBzNTBADYCKCACQgE3AhwgAkGg1cEANgIYIAEgAkEYahDJAyEADAQLIAJBLGpBADYCACACQczUwQA2AiggAkIBNwIcIAJBjNXBADYCGCABIAJBGGoQyQMhAAwDCyACQSxqQQA2AgAgAkHM1MEANgIoIAJCATcCHCACQfTUwQA2AhggASACQRhqEMkDIQAMAgsgAkEsakEANgIAIAJBzNTBADYCKCACQgE3AhwgAkHc1MEANgIYIAEgAkEYahDJAyEADAELIAEgAEEEaigCACAAQQhqKAIAEPoEIQALIAJBMGokACAAC4sJAgV/C34jAEHQAWsiAyQAIANBCGpBCGogAUEwaiIEKQMAIAEpAwgiCHw3AwAgA0EIakEQaiABQThqIgUpAwAgASkDECIJfDcDACADQQhqQRhqIAFBwABqIgYpAwAgASkDGCIKfDcDACADQQhqQSBqIAFByABqIgcpAwAgASkDICILfDcDACADIAEpAyggASkDACIMfDcDCCADIAcpAwAgC31C8P///////z98IgtC/////////wODIAYpAwAgCn1C8P///////z98IgpCM4h8NwNQIAMgCkL/////////A4MgBSkDACAJfULw////////P3wiCUIziHw3A0ggAyAJQv////////8DgyAEKQMAIAh9QvD///////8/fCIIQjOIfDcDQCADIAhC/////////wODIAEpAyggDH1C0P3//////z98IghCM4h8NwM4IAMgC0IziEITfiAIQv////////8Dg3w3AzAgA0HYAGogA0EIaiACQShqEFAgA0GAAWogA0EwaiACEFAgA0GoAWogAUH4AGogAkHQAGoQUCAAIANB2ABqQSBqIgIpAwAgAykDoAEiCH1C8P///////z98IglC/////////wODIANB2ABqQRhqIgQpAwAgAykDmAEiCn1C8P///////z98IgtCM4h8NwMgIAAgC0L/////////A4MgA0HYAGpBEGoiBSkDACADKQOQASILfULw////////P3wiDEIziHw3AxggACAMQv////////8DgyADQdgAakEIaiIGKQMAIAMpA4gBIgx9QvD///////8/fCINQjOIfDcDECAAIA1C/////////wODIAMpA1ggAykDgAEiDX1C0P3//////z98Ig5CM4h8NwMIIAAgCUIziEITfiAOQv////////8Dg3w3AwAgAUHYAGopAwAhDiABQeAAaikDACEPIAFB6ABqKQMAIRAgAUHwAGopAwAhESABKQNQIRIgACANIAMpA1h8NwMoIABBMGogDCAGKQMAfDcDACAAQThqIAsgBSkDAHw3AwAgAEHAAGogCiAEKQMAfDcDACAAQcgAaiAIIAIpAwB8NwMAIAMpA6gBIQggAykDsAEhCSADKQO4ASEKIAMpA8ABIQsgAEGYAWogEUIBhiIMIAMpA8gBIg18NwMAIABBkAFqIAsgEEIBhiIQfDcDACAAQYgBaiAKIA9CAYYiD3w3AwAgAEGAAWogCSAOQgGGIg58NwMAIAAgCCASQgGGIhF8NwN4IABB8ABqIAwgDX1C8P///////z98IgxC/////////wODIBAgC31C8P///////z98IgtCM4h8NwMAIABB6ABqIAtC/////////wODIA8gCn1C8P///////z98IgpCM4h8NwMAIABB4ABqIApC/////////wODIA4gCX1C8P///////z98IglCM4h8NwMAIABB2ABqIAlC/////////wODIBEgCH1C0P3//////z98IghCM4h8NwMAIAAgDEIziEITfiAIQv////////8Dg3w3A1AgA0HQAWokAAvMBwEPfwJAAkACQAJAIABBEGooAgAiAi8BMiIDIAFqIgRBC0sNACAAQRhqKAIAIgUvATIiBiABSQ0CIAIgBDsBMiAFIAYgAWsiBzsBMiAAQQRqKAIAIgggACgCCCIJQQJ0akEEaiIKKAIAIQsgBUE0aiIMIAFBf2oiDUEBdCIOai8AACEGIAogBUEEaiIPIA1BAnQiEGooAgA2AgAgCCAJQQF0aiIJQTRqIgovAAAhCCAKIAZBAXE6AAAgCUE1aiAGQQh2QQFxOgAAIAJBBGoiCSADQQJ0aiALNgIAIAJBNGoiCiADQQF0aiIGIAhBCHZBAXE6AAEgBiAIQQFxOgAAIA0gBCADQQFqIgZrRw0BIAkgBkECdGogDyAQEP8FGiAKIAZBAXRqIAwgDhD/BRogDyAPIAFBAnRqIAdBAnQQgAYaIAwgDCABQQF0aiAHQQF0EIAGGiAAKAIUIQwCQAJAIAAoAgwNACAMRQ0BDAULIAxFDQQgAiAGQQJ0akHMAGogBUHMAGoiACABQQJ0IgwQ/wUaIAAgACAMaiAHQQJ0QQRqEIAGGgJAIAQgA00NAAJAIAFBA3EiAEUNACADQQJ0IAJqQdAAaiEBA0AgASgCACIDIAY7ATAgAyACNgIAIAFBBGohASAGQQFqIQYgAEF/aiIADQALCyANQQNJDQAgBkEDaiEBQQAgBGshAyAGQQJ0IAJqQdgAaiEGA0AgBkF0aigCACIAIAFBfWo7ATAgACACNgIAIAZBeGooAgAiACABQX5qOwEwIAAgAjYCACAGQXxqKAIAIgAgAUF/ajsBMCAAIAI2AgAgBigCACIAIAE7ATAgACACNgIAIAZBEGohBiADIAFBBGoiAWpBBEcNAAsLIAdBf0YNACAHQQFqIgBBA3EhBkEAIQICQCAHQQNJDQAgBUHMAGohAUEAIABBfHFrIQNBASECA0AgASgCACIAIAJBf2o7ATAgACAFNgIAIAFBBGooAgAiACACOwEwIAAgBTYCACABQQhqKAIAIgAgAkEBajsBMCAAIAU2AgAgAUEMaigCACIAIAJBAmo7ATAgACAFNgIAIAFBEGohASADIAJBBGoiAmpBAUcNAAsgAkF/aiECCyAGRQ0AIAJBAnQgBWpBzABqIQEDQCABKAIAIgAgAjsBMCAAIAU2AgAgAUEEaiEBIAJBAWohAiAGQX9qIgYNAAsLDwtB9KTAAEEyQailwAAQhAQAC0GgosAAQShByKLAABCEBAALQbilwABBKEHgpcAAEIQEAAtBvKTAAEEoQfClwAAQhAQAC4UJAgV/Cn4jAEHQAWsiAyQAIANBCGpBCGogAUEwaiIEKQMAIAEpAwgiCHw3AwAgA0EIakEQaiABQThqIgUpAwAgASkDECIJfDcDACADQQhqQRhqIAFBwABqIgYpAwAgASkDGCIKfDcDACADQQhqQSBqIAFByABqIgcpAwAgASkDICILfDcDACADIAEpAyggASkDACIMfDcDCCADIAcpAwAgC31C8P///////z98IgtC/////////wODIAYpAwAgCn1C8P///////z98IgpCM4h8NwNQIAMgCkL/////////A4MgBSkDACAJfULw////////P3wiCUIziHw3A0ggAyAJQv////////8DgyAEKQMAIAh9QvD///////8/fCIIQjOIfDcDQCADIAhC/////////wODIAEpAyggDH1C0P3//////z98IghCM4h8NwM4IAMgC0IziEITfiAIQv////////8Dg3w3AzAgA0HYAGogA0EIaiACEFAgA0GAAWogA0EwaiACQShqEFAgA0GoAWogAUH4AGogAkHQAGoQUCAAIANB2ABqQSBqIgIpAwAgAykDoAEiCH1C8P///////z98IglC/////////wODIANB2ABqQRhqIgQpAwAgAykDmAEiCn1C8P///////z98IgtCM4h8NwMgIAAgC0L/////////A4MgA0HYAGpBEGoiBSkDACADKQOQASILfULw////////P3wiDEIziHw3AxggACAMQv////////8DgyADQdgAakEIaiIGKQMAIAMpA4gBIgx9QvD///////8/fCINQjOIfDcDECAAIA1C/////////wODIAMpA1ggAykDgAEiDX1C0P3//////z98Ig5CM4h8NwMIIAAgCUIziEITfiAOQv////////8Dg3w3AwAgAUHwAGopAwAhCSABQegAaikDACEOIAFB4ABqKQMAIQ8gAUHYAGopAwAhECABKQNQIREgACANIAMpA1h8NwMoIABBMGogDCAGKQMAfDcDACAAQThqIAsgBSkDAHw3AwAgAEHAAGogCiAEKQMAfDcDACAAQcgAaiAIIAIpAwB8NwMAIAAgEUIBhiIKIAMpA6gBIgt8NwNQIABB2ABqIBBCAYYiDCADKQOwASINfDcDACAAQeAAaiAPQgGGIg8gAykDuAEiEHw3AwAgAEHoAGogDkIBhiIOIAMpA8ABIhF8NwMAIAMpA8gBIQggAEGIAWogDyAQfULw////////P3wiD0L/////////A4MgDCANfULw////////P3wiDEIziHw3AwAgAEGAAWogDEL/////////A4MgCiALfULQ/f//////P3wiCkIziHw3AwAgAEGQAWogDiARfULw////////P3wiC0L/////////A4MgD0IziHw3AwAgAEHwAGogCCAJQgGGIgl8NwMAIABBmAFqIAkgCH1C8P///////z98IghC/////////wODIAtCM4h8NwMAIAAgCEIziEITfiAKQv////////8Dg3w3A3ggA0HQAWokAAuECQIFfwt+IwBB8AFrIgMkACADQQhqIAFBMGoiBCkDACABKQMIIgh8NwMAIANBEGogAUE4aiIFKQMAIAEpAxAiCXw3AwAgA0EYaiABQcAAaiIGKQMAIAEpAxgiCnw3AwAgA0EgaiABQcgAaiIHKQMAIAEpAyAiC3w3AwAgAyABKQMoIAEpAwAiDHw3AwAgAyAHKQMAIAt9QvD///////8/fCILQv////////8DgyAGKQMAIAp9QvD///////8/fCIKQjOIfDcDSCADIApC/////////wODIAUpAwAgCX1C8P///////z98IglCM4h8NwNAIAMgCUL/////////A4MgBCkDACAIfULw////////P3wiCEIziHw3AzggAyAIQv////////8DgyABKQMoIAx9QtD9//////8/fCIIQjOIfDcDMCADIAtCM4hCE34gCEL/////////A4N8NwMoIANB0ABqIAMgAkEoahBQIANB+ABqIANBKGogAhBQIANBoAFqIAFB+ABqIAJB+ABqEFAgA0HIAWogAUHQAGogAkHQAGoQUCAAIANB0ABqQSBqIgEpAwAgAykDmAEiCH1C8P///////z98IglC/////////wODIANB0ABqQRhqIgIpAwAgAykDkAEiCn1C8P///////z98IgtCM4h8NwMgIAAgC0L/////////A4MgA0HQAGpBEGoiBCkDACADKQOIASILfULw////////P3wiDEIziHw3AxggACAMQv////////8DgyADQdAAakEIaiIFKQMAIAMpA4ABIgx9QvD///////8/fCINQjOIfDcDECAAIA1C/////////wODIAMpA1AgAykDeCINfULQ/f//////P3wiDkIziHw3AwggACAJQjOIQhN+IA5C/////////wODfDcDACADKQPIASEOIAMpA9ABIQ8gAykD2AEhECADKQPgASERIAMpA+gBIRIgACANIAMpA1B8NwMoIABBMGogDCAFKQMAfDcDACAAQThqIAsgBCkDAHw3AwAgAEHAAGogCiACKQMAfDcDACAAQcgAaiAIIAEpAwB8NwMAIAMpA6ABIQggAykDqAEhCSADKQOwASEKIAMpA7gBIQsgAEGYAWogEkIBhiIMIAMpA8ABIg18NwMAIABBkAFqIAsgEUIBhiIRfDcDACAAQYgBaiAKIBBCAYYiEHw3AwAgAEGAAWogCSAPQgGGIg98NwMAIAAgCCAOQgGGIg58NwN4IABB8ABqIAwgDX1C8P///////z98IgxC/////////wODIBEgC31C8P///////z98IgtCM4h8NwMAIABB6ABqIAtC/////////wODIBAgCn1C8P///////z98IgpCM4h8NwMAIABB4ABqIApC/////////wODIA8gCX1C8P///////z98IglCM4h8NwMAIABB2ABqIAlC/////////wODIA4gCH1C0P3//////z98IghCM4h8NwMAIAAgDEIziEITfiAIQv////////8Dg3w3A1AgA0HwAWokAAv+CAIFfwp+IwBB8AFrIgMkACADQQhqIAFBMGoiBCkDACABKQMIIgh8NwMAIANBEGogAUE4aiIFKQMAIAEpAxAiCXw3AwAgA0EYaiABQcAAaiIGKQMAIAEpAxgiCnw3AwAgA0EgaiABQcgAaiIHKQMAIAEpAyAiC3w3AwAgAyABKQMoIAEpAwAiDHw3AwAgAyAHKQMAIAt9QvD///////8/fCILQv////////8DgyAGKQMAIAp9QvD///////8/fCIKQjOIfDcDSCADIApC/////////wODIAUpAwAgCX1C8P///////z98IglCM4h8NwNAIAMgCUL/////////A4MgBCkDACAIfULw////////P3wiCEIziHw3AzggAyAIQv////////8DgyABKQMoIAx9QtD9//////8/fCIIQjOIfDcDMCADIAtCM4hCE34gCEL/////////A4N8NwMoIANB0ABqIAMgAhBQIANB+ABqIANBKGogAkEoahBQIANBoAFqIAFB+ABqIAJB+ABqEFAgA0HIAWogAUHQAGogAkHQAGoQUCAAIANB0ABqQSBqIgEpAwAgAykDmAEiCH1C8P///////z98IglC/////////wODIANB0ABqQRhqIgIpAwAgAykDkAEiCn1C8P///////z98IgtCM4h8NwMgIAAgC0L/////////A4MgA0HQAGpBEGoiBCkDACADKQOIASILfULw////////P3wiDEIziHw3AxggACAMQv////////8DgyADQdAAakEIaiIFKQMAIAMpA4ABIgx9QvD///////8/fCINQjOIfDcDECAAIA1C/////////wODIAMpA1AgAykDeCINfULQ/f//////P3wiDkIziHw3AwggACAJQjOIQhN+IA5C/////////wODfDcDACADKQPoASEJIAMpA+ABIQ4gAykD2AEhDyADKQPQASEQIAMpA8gBIREgACANIAMpA1B8NwMoIABBMGogDCAFKQMAfDcDACAAQThqIAsgBCkDAHw3AwAgAEHAAGogCiACKQMAfDcDACAAQcgAaiAIIAEpAwB8NwMAIAAgEUIBhiIKIAMpA6ABIgt8NwNQIABB2ABqIBBCAYYiDCADKQOoASINfDcDACAAQeAAaiAPQgGGIg8gAykDsAEiEHw3AwAgAEHoAGogDkIBhiIOIAMpA7gBIhF8NwMAIAMpA8ABIQggAEGIAWogDyAQfULw////////P3wiD0L/////////A4MgDCANfULw////////P3wiDEIziHw3AwAgAEGAAWogDEL/////////A4MgCiALfULQ/f//////P3wiCkIziHw3AwAgAEGQAWogDiARfULw////////P3wiC0L/////////A4MgD0IziHw3AwAgAEHwAGogCCAJQgGGIgl8NwMAIABBmAFqIAkgCH1C8P///////z98IghC/////////wODIAtCM4h8NwMAIAAgCEIziEITfiAKQv////////8Dg3w3A3ggA0HwAWokAAvUBwILfwV+IwBB0ABrIgQkACAEQShqIAEgASAC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ASkCADcDGCADQShqQQhqIAQpAgA3AwAgAyABKQIANwMoIANBOGogA0EYaiADQShqEFtBACEBAkAgAygCOA0AIAAgAykCPDcCBCAAQQxqIANBOGpBDGopAgA3AgBBASEBCyAAIAE2AgAMAQsgA0EYakEIaiABQQhqIgQpAgA3AwAgAyABKQIANwMYIANBKGpBCGogBCkCADcDACADIAEpAgA3AyggA0E4aiADQRhqIANBKGoQWwJAAkAgAygCOA0AIANBCGpBCGogA0HEAGopAgA3AwAgAyADKQI8NwMIQQEhBQJAAkAgAkIBiKciBg0AQQAhB0EAIQRBACEIDAELQQAhCEEAIQRBACEHA0AgAyAHNgIkIAMgBTYCICADIAQ2AhwgAyAINgIYIANBKGpBCGogA0EIakEIaikDADcDACADIAMpAwg3AyggA0E4aiADQRhqIANBKGoQWyADKAI4DQIgAygCSCEHIAMoAkQhBSADKAJAIQQgAygCPCEIIAZBf2oiBg0ACwsgAkIBg1ANASADQRhqQQhqIAFBCGopAgA3AwAgAyABKQIANwMYIAMgBzYCNCADIAU2AjAgAyAENgIsIAMgCDYCKCADQThqIANBGGogA0EoahBbIAMoAjgNACADQcgAaigCACEHIANBxABqKAIAIQUgA0E4akEIaigCACEEIAMoAjwhCAwBCyAAQQA2AgAMAQsCQAJAIAUNACAHDQBBACEJQQAhCkEAIQFBACEGIARFDQELAkAgCEEQdkH/AXEiBg0AIAchCSAFIQogBCEBIAghBgwBCwJAA0ACQCAEIARBCm4iAUEKbGutQiCGIAethCICIAJCCoAiC0IKfn1CIIYgBa2EIgIgAkIKgCICQgp+fUIAUQ0AIAQhASAHIQkgBSEKDAILIAunIQcgAqchBSABIQQgBkF/aiIGDQALIAunIQkgAqchCkEAIQYLIAZBEHQgCEGAgICAeHFyIQYLIAAgBjYCBCAAQQE2AgAgAEEQaiAJNgIAIABBDGogCjYCACAAQQhqIAE2AgALIANB0ABqJAALsQYCAn8GfiMAQSBrIgUkAAJAAkACQAJAAkACQAJAAkACQCADUA0AIARQDQELQgAhByACUA0FIAEgA1QgAiAEVCACIARRGw0FIAUgAyAEIAR5pyACeadrIgZB/wBxENoDQgEgBkE/ca2GIQggBUEIaikDACEJQgAhByAFKQMAIQoDQCABIAp9IQsCQCACIAl9IAEgClStfSIMQn9XDQAgByAIhCEHIAsgA1ogDCAEWiAMIARRG0UNAyALIQEgDCECCyAKQgGIIAlCP4aEIQogCEIBiCEIIAlCAYghCQwACwsCQAJAIAJQDQAgAiADVA0BIAIgA1ENBCACIAIgA4AiCiADfn0hDCADQoCAgIAQWg0DIAxCIIYgAUIgiIQiCSAJIAOAIgkgA359QiCGIAFC/////w+DhCIBIAEgA4AiDCADfn0hASAJQiCGIAyEIQcgCUIgiCAKhCEKQgAhDAwICyABIAEgA4AiByADfn0hAQwECyAFQRBqIAMgBEHAACACeacgA3mnayIGa0E/IAYbIgZB/wBxENoDQgEgBkE/ca2GIQwgBUEYaikDACEKIAUpAxAhCUIAIQsDQAJAIAIgCn0gASAJVK19IghCf1cNACABIAl9IQEgDCALhCELAkAgCEIAUQ0AIAghAgwBCyABIAOAIgogC4QhByABIAogA359IQEMBQsgCUIBiCAKQj+GhCEJIAxCAYghDCAKQgGIIQoMAAsLQgAhCiALIQEMBQsCQCABIANUIAwgBFQgDCAEURsNACAEQj+GIANCAYiEIQkgA0I/hiEIQoCAgICAgICAgH8hC0IAIQQDQAJAIAwgCX0gASAIVK19IgJCf1cNACABIAh9IQEgCyAEhCEEAkAgAkIAUQ0AIAIhDAwBCyABIAOAIgkgBIQhByABIAkgA359IQFCACEMDAcLIAhCAYggCUI/hoQhCCALQgGIIQsgCUIBiCEJDAALC0IAIQcMBAsgASABIAKAIgcgAn59IQFCACEMQgEhCgwDC0IAIQwMAQsgAiEMC0IAIQoLIAAgATcDECAAIAc3AwAgAEEYaiAMNwMAIAAgCjcDCCAFQSBqJAALhwgCAX8UfiMAQdABayICJAAgAkEIaiABQQEQZiACQTBqIAFBKGpBARBmIAJB2ABqIAFB0ABqQQEQZiACKQNYIQMgAikDYCEEIAIpA2ghBSACKQN4IQYgAikDcCEHIAJBgAFqQQhqIAFBCGopAwAgAUEwaikDAHw3AwAgAkGAAWpBEGogAUEQaikDACABQThqKQMAfDcDACACQYABakEYaiABQRhqKQMAIAFBwABqKQMAfDcDACACQYABakEgaiABQSBqKQMAIAFByABqKQMAfDcDACACIAEpAwAgASkDKHw3A4ABIAJBqAFqIAJBgAFqQQEQZiAAQcgAaiACKQMoIgggAikDUCIJfCIKNwMAIABBwABqIAIpAyAiCyACKQNIIgx8Ig03AwAgAEE4aiACKQMYIg4gAikDQCIPfCIQNwMAIABBMGogAikDECIRIAIpAzgiEnwiEzcDACAAIAIpAwgiFCACKQMwIhV8IhY3AyggAEHwAGogCSAIfULw////////P3wiCEL/////////A4MgDCALfULw////////P3wiCUIziHwiCzcDACAAQegAaiAJQv////////8DgyAPIA59QvD///////8/fCIJQjOIfCIMNwMAIABB4ABqIAlC/////////wODIBIgEX1C8P///////z98IglCM4h8Ig43AwAgAEHYAGogCUL/////////A4MgFSAUfULQ/f//////P3wiCUIziHwiDzcDACAAIAhCM4hCE34gCUL/////////A4N8Igg3A1AgACACKQPIASAKfULw////////P3wiCUL/////////A4MgAikDwAEgDX1C8P///////z98IgpCM4h8NwMgIAAgCkL/////////A4MgAikDuAEgEH1C8P///////z98IgpCM4h8NwMYIAAgCkL/////////A4MgAikDsAEgE31C8P///////z98IgpCM4h8NwMQIAAgCkL/////////A4MgAikDqAEgFn1C0P3//////z98IgpCM4h8NwMIIAAgCUIziEITfiAKQv////////8Dg3w3AwAgAEGYAWogBkIBhiALfULw////////P3wiBkL/////////A4MgB0IBhiAMfULw////////P3wiB0IziHw3AwAgAEGQAWogB0L/////////A4MgBUIBhiAOfULw////////P3wiBUIziHw3AwAgAEGIAWogBUL/////////A4MgBEIBhiAPfULw////////P3wiBEIziHw3AwAgAEGAAWogA0IBhiAIfULQ/f//////P3wiA0IziCAEQv////////8Dg3w3AwAgACAGQjOIQhN+IANC/////////wODfDcDeCACQdABaiQAC54HAQZ/AkACQAJAAkAgAkEJSQ0AIAMgAhDLASICDQFBAA8LEL4GIQFBACECIAEgAUEIEIEFQRRBCBCBBWpBEEEIEIEFamtB+P97akF3cUF9aiIBQQBBEEEIEIEFQQJ0ayIEIAQgAUsbIANNDQFBECADQQRqQRBBCBCBBUF7aiADSxtBCBCBBSEEIAAQmgYhASABIAEQ5wUiBRCXBiEGAkACQAJAAkACQAJAAkACQCABEMUFDQAgBSAETw0BIAZBACgCkMNGRg0CIAZBACgCjMNGRg0DIAYQrAUNByAGEOcFIgcgBWoiBSAESQ0HIAUgBGshCCAHQYACSQ0EIAYQmgIMBQsgARDnBSEFIARBgAJJDQYCQCAFIARBBGpJDQAgBSAEa0GBgAhJDQYLQfS/xgAgASABKAIAIgZrIAUgBmpBEGoiByAEQR9qQfS/xgAQxQYQgQUiBUEBEMAGIgRFDQYgBCAGaiIBIAUgBmsiA0FwaiICNgIEEL0GIQAgASACEJcGIAA2AgQgASADQXRqEJcGQQA2AgRBAEEAKAKUw0YgBSAHa2oiAzYClMNGQQBBACgCsMNGIgIgBCAEIAJLGzYCsMNGQQBBACgCmMNGIgIgAyACIANLGzYCmMNGDAkLIAUgBGsiBUEQQQgQgQVJDQQgASAEEJcGIQYgASAEEMsEIAYgBRDLBCAGIAUQpwEMBAtBACgCiMNGIAVqIgUgBE0NBCABIAQQlwYhBiABIAQQywQgBiAFIARrIgRBAXI2AgRBACAENgKIw0ZBACAGNgKQw0YMAwtBACgChMNGIAVqIgUgBEkNAwJAAkAgBSAEayIGQRBBCBCBBU8NACABIAUQywRBACEGQQAhBQwBCyABIAQQlwYiBSAGEJcGIQcgASAEEMsEIAUgBhD3BCAHEK0FC0EAIAU2AozDRkEAIAY2AoTDRgwCCwJAIAZBDGooAgAiCSAGQQhqKAIAIgZGDQAgBiAJNgIMIAkgBjYCCAwBC0EAQQAoAvS/RkF+IAdBA3Z3cTYC9L9GCwJAIAhBEEEIEIEFSQ0AIAEgBBCXBiEFIAEgBBDLBCAFIAgQywQgBSAIEKcBDAELIAEgBRDLBAsgAQ0DCyADEDsiBEUNASAEIAAgAyABEOcFQXhBfCABEMUFG2oiAiACIANLGxD/BSEDIAAQXiADDwsgAiAAIAMgASABIANLGxD/BRogABBeCyACDwsgARDFBRogARCZBgucBwEPfyMAQfABayIDJAACQAJAAkACQCACRQ0AIANBoAFqIAFBAxCcAQJAIAMvAaABRQ0AIAMoAqQBIQIgAEEBNgIAIAAgAjYCBAwECwJAAkACQCADLwGiASIEDQAgA0EANgIQIAMgBDYCDCADQQE2AggMAQsgBEEGdCIFQQEQmAUiBkUNAyADQQA2AhAgAyAENgIMIAMgBjYCCCADQaABakEIaiEGIAJBf2oiByEFA0AgBUUNAiADQaABaiABQcAAEMIBAkAgAy0AoAFFDQAgAygCpAEhAgwGCyADQeAAakEIaiIIIAZBCGopAgA3AwAgA0HgAGpBEGoiCSAGQRBqKQIANwMAIANB4ABqQRhqIgogBkEYaikCADcDACADQeAAakEgaiILIAZBIGopAgA3AwAgA0HgAGpBKGoiDCAGQShqKQIANwMAIANB4ABqQTBqIg0gBkEwaikCADcDACADQeAAakE4aiIOIAZBOGotAAA6AAAgAyAGKQIANwNgIAMvAKEBIQ8gAy0AowEhECADKAKkASECIANBGGpBCGoiESAIKQMANwMAIANBGGpBEGoiCCAJKQMANwMAIANBGGpBGGoiCSAKKQMANwMAIANBGGpBIGoiCiALKQMANwMAIANBGGpBKGoiCyAMKQMANwMAIANBGGpBMGoiDCANKQMANwMAIANBGGpBOGoiDSAOLQAAOgAAIAMgAykDYDcDGCADIAI2AFkgAyAQOgBYIAJBgICAeHEgAygCWCIOQQh2ciEQAkAgAygCECICIAMoAgxHDQAgA0EIaiACENMCIAMoAhAhAgsgAygCCCACQQZ0aiICIBA2AAMgAiAOOgACIAIgDzsAACACIAMpAxg3AAcgAkEPaiARKQMANwAAIAJBF2ogCCkDADcAACACQR9qIAkpAwA3AAAgAkEnaiAKKQMANwAAIAJBL2ogCykDADcAACACQTdqIAwpAwA3AAAgAkE/aiANLQAAOgAAIAMgAygCEEEBajYCECAFQX9qIQUgBEF/aiIEDQALCyAAIAMpAwg3AgQgAEEANgIAIABBDGogA0EQaigCADYCAAwECyAHIANB6AFqQaC8xgAQsAIhAgwCC0EAIANB6AFqQaC8xgAQsAIhAiAAQQE2AgAgACACNgIEDAILIAVBARDvBQALIABBATYCACAAIAI2AgQgAygCDCICRQ0AIAMoAgggAkEGdEEBELgFCyADQfABaiQAC98GAgZ/DH4gAEIANwMIIABCATcDACAAQgE3AyggAEEQaiIDQgA3AwAgAEEYaiIEQgA3AwAgAEEgaiIFQgA3AwAgAEEwakEAQcgAEIIGIQYgACABIAJBGHQiAkEfdSIHIAJBGHVqIAdzIgJBAXNBf2ogAkF/cyIIcUGAgAJxQQ92EIcFELsBIAAgAUH4AGogAkECc0F/aiAIcUGAgAJxQQ92EIcFELsBIAAgAUHwAWogAkEDc0F/aiAIcUGAgAJxQQ92EIcFELsBIAAgAUHoAmogAkEEc0F/aiAIcUGAgAJxQQ92EIcFELsBIAAgAUHgA2ogAkEFc0F/aiAIcUGAgAJxQQ92EIcFELsBIAAgAUHYBGogAkEGc0F/aiAIcUGAgAJxQQ92EIcFELsBIAAgAUHQBWogAkEHc0F/aiAIcUGAgAJxQQ92EIcFELsBIAAgAUHIBmogAkEIc0F/aiAIcUGAgAJxQQ92EIcFELsBIAdBAXEQhwUhASAAQcgAaiICIAUpAwAiCSACKQMAIgqFQgAgAa1C/wGDfSILgyIMIAqFNwMAIABBwABqIgEgBCkDACIKIAEpAwAiDYUgC4MiDiANhTcDACAAQThqIgEgAykDACINIAEpAwAiD4UgC4MiECAPhTcDACAGIAApAwgiDyAGKQMAIhGFIAuDIhIgEYU3AwAgACAAKQMAIhEgACkDKCIThSALgyIUIBOFNwMoIAUgDCAJhTcDACAEIA4gCoU3AwAgAyAQIA2FNwMAIAAgEiAPhTcDCCAAIBQgEYU3AwAgAEHwAGoiAULw////////PyABKQMAIgl9IgxC/////////wODQvD///////8/IABB6ABqIgEpAwAiCn0iDUIziHwgCYUgC4MgCYU3AwAgASAKIAogDUL/////////A4NC8P///////z8gAEHgAGoiAikDACIJfSINQjOIfIUgC4OFNwMAIAIgCSAJIA1C/////////wODQvD///////8/IABB2ABqIgEpAwAiCn0iDUIziHyFIAuDhTcDACABIAogCiANQv////////8Dg0LQ/f//////PyAAKQNQIgl9Ig1CM4h8hSALg4U3AwAgACAJIAkgDEIziEITfiANQv////////8Dg3yFIAuDhTcDUAu9BwIJfwl+IwBB8AJrIgIkACACQQhqIAEQtwEgAkEwaiACQQhqQQEQZiACIAIpA1BC8P///////z98IgtC/////////wODIAIpA0hC8P///////z98IgxCM4h8NwN4IAIgDEL/////////A4MgAikDQELw////////P3wiDEIziHw3A3AgAiAMQv////////8DgyACKQM4QvD///////8/fCIMQjOIfDcDaCACIAxC/////////wODIAIpAzBCz/3//////z98IgxCM4h8NwNgIAIgC0IziEITfiAMQv////////8Dg3w3A1ggAkGAAWogAkEwakGI6sAAEFBCASELIAIgAikDgAFCAXw3A4ABIAJB0AFqIAJB2ABqIAJBgAFqEE4gAi0A0AEhAyACQagBakEgaiIEIAJB+AFqKQMANwMAIAJBqAFqQRhqIgUgAkHQAWpBIGoiBikDADcDACACQagBakEQaiIHIAJB0AFqQRhqIggpAwA3AwAgAkGoAWpBCGoiCSACQdABakEQaiIKKQMANwMAIAIgAikD2AE3A6gBAkACQCADQQFHDQAgAS0AH0EHdhCHBSEBIARC8P///////z8gBCkDACINfSIOQv////////8Dg0Lw////////PyAFKQMAIg99IhBCM4h8IA2FQgAgAa1C/wGDfSIMgyANhSIRNwMAIAUgDyAPIBBC/////////wODQvD///////8/IAcpAwAiDX0iEEIziHyFIAyDhSISNwMAIAcgDSANIBBC/////////wODQvD///////8/IAkpAwAiD30iEEIziHyFIAyDhSITNwMAIAkgDyAPIBBC/////////wODQtD9//////8/IAIpA6gBIg19IhBCM4h8hSAMg4UiDzcDACACIA0gDSAOQjOIQhN+IBBC/////////wODfIUgDIOFIgw3A6gBIAYgETcDACAIIBI3AwAgCiATNwMAIAJB0AFqQQhqIA83AwAgAkGAAmogAkEIakEIaikDADcDACACQYgCaiACQQhqQRBqKQMANwMAIAJBkAJqIAJBCGpBGGopAwA3AwAgAkGYAmogAkEIakEgaikDADcDACACQcACakIANwMAIAJBuAJqQgA3AwAgAkGwAmpCADcDACACQagCakIANwMAIAIgDDcD0AEgAiACKQMINwP4ASACQgE3A6ACIAJByAJqIAJBqAFqIAJBCGoQUCAAQQhqIAJB0AFqQaABEP8F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AToADCACQTxqQQI2AgAgAkEcakH4ADYCACACQgI3AiwgAkGUusEANgIoIAJB9wA2AhQgAkEeNgIkIAJBz7jBADYCICACIAJBEGo2AjggAiACQQxqNgIYIAIgAkEgajYCECABIAJBKGoQyQMhAAwGCyACQTxqQQE2AgAgAkIBNwIsIAJBiLnBADYCKCACQfcANgIkIAJBETYCFCACQb64wQA2AhAgAiACQSBqNgI4IAIgAkEQajYCICABIAJBKGoQyQMhAAwFCyACIABBBGooAgA2AgwgAkE8akECNgIAIAJBHGpB2wA2AgAgAkICNwIsIAJB6LnBADYCKCACQfcANgIUIAJBGTYCJCACQaW4wQA2AiAgAiACQRBqNgI4IAIgAkEMajYCGCACIAJBIGo2AhAgASACQShqEMkDIQAMBAsgAkE8akEANgIAIAJBtLfBADYCOCACQgE3AiwgAkHYucEANgIoIAEgAkEoahDJAyEADAMLIAJBPGpBATYCACACQgE3AiwgAkGIucEANgIoIAJB9wA2AiQgAkEfNgIUIAJBhrjBADYCECACIAJBIGo2AjggAiACQRBqNgIgIAEgAkEoahDJAyEADAILIAJBPGpBATYCACACQgE3AiwgAkGIucEANgIoIAJB9wA2AiQgAkHSADYCFCACQbS3wQA2AhAgAiACQSBqNgI4IAIgAkEQajYCICABIAJBKGoQyQMhAAwBCyAAQQRqKAIAIABBDGooAgAgARD6BSEACyACQcAAaiQAIAAL/wUCBn8CfgJAIAJFDQBBACACQXlqIgMgAyACSxshBCABQQNqQXxxIAFrIQVBACEDAkACQAJAAkADQAJAAkACQCABIANqLQAAIgZBGHRBGHUiB0EASA0AIAVBf0YNASAFIANrQQNxDQECQCADIARPDQADQCABIANqIgYoAgAgBkEEaigCAHJBgIGChHhxDQEgA0EIaiIDIARJDQALCyADIAJPDQIDQCABIANqLAAAQQBIDQMgAiADQQFqIgNHDQAMCQsLQoCAgICAICEJQoCAgIAQIQoCQAJAAkACQAJAAkACQAJAAkAgBkHslcIAai0AAEF+ag4DAAECDwsgA0EBaiIGIAJJDQZCACEJDA0LQgAhCSADQQFqIgggAk8NDCABIAhqLAAAIQggBkGgfmoODgEDAwMDAwMDAwMDAwMC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AkACQCACDQAgAEEENgIMIABBEGogAjYCAEEAIQMMAQsgAkEcbCIMQQQQmAUiA0UNAiAAIAM2AgwgAEEQaiACNgIAIAJBOGwhDCACQX9qQf////8BcSECA0AgBUHAAGogASAGIAcQxQEgA0EYaiAFQcAAakEYaigCADYCACADQRBqIAVBwABqQRBqKQMANwIAIANBCGogBUHAAGpBCGopAwA3AgAgAyAFKQNANwIAIANBHGohAyABQThqIQEgDEFIaiIMDQALIAJBAWohAwsgACAHNgIIIAAgCDYCBCAAIAY2AgAgACALOgAYIABBFGogAzYCACAAIAQpAAA3ABsgAEEaaiAJOgAAIABBGWogCjoAACAAQSNqIARBCGopAAA3AAAgAEEraiAEQRBqKQAANwAAIABBM2ogBEEYaikAADcAACAFQfAAaiQADwtB0J7AAEEkQfSewAAQywUACyAMQQQQ7wUAC5cFAQp/IwBBMGsiAyQAIANBJGogATYCACADQQM6ACggA0KAgICAgAQ3AwggAyAANgIgQQAhBCADQQA2AhggA0EANgIQAkACQAJAAkAgAigCCCIFDQAgAkEUaigCACIGRQ0BIAIoAgAhASACKAIQIQAgBkF/akH/////AXFBAWoiBCEGA0ACQCABQQRqKAIAIgdFDQAgAygCICABKAIAIAcgAygCJCgCDBEKAA0ECyAAKAIAIANBCGogAEEEaigCABEHAA0DIABBCGohACABQQhqIQEgBkF/aiIGDQAMAgsLIAJBDGooAgAiAEUNACAAQQV0IQggAEF/akH///8/cUEBaiEEIAIoAgAhAUEAIQYDQAJAIAFBBGooAgAiAEUNACADKAIgIAEoAgAgACADKAIkKAIMEQoADQMLIAMgBSAGaiIAQRxqLQAAOgAoIAMgAEEEaikCAEIgiTcDCCAAQRhqKAIAIQkgAigCECEKQQAhC0EAIQcCQAJAAkAgAEEUaigCAA4DAQACAQsgCUEDdCEMQQAhByAKIAxqIgwoAgRBtgFHDQEgDCgCACgCACEJC0EBIQcLIAMgCTYCFCADIAc2AhAgAEEQaigCACEHAkACQAJAIABBDGooAgAOAwEAAgELIAdBA3QhCSAKIAlqIgkoAgRBtgFHDQEgCSgCACgCACEHC0EBIQsLIAMgBzYCHCADIAs2AhggCiAAKAIA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IAYNACADQoHKADcDECADQRBqELgEIQEMBQsgASAFQX5qIgY2AgQgASAHQQJqNgIAIAMgBy0AASAIQQEQvAIgAy8BAA0DIAMvAQQhCCADLwECRQ0AAkAgAkECRw0AQQMhBQwDCwJAIAYNACADQoHKADcDECADQRBqELgEIQEMBQsgASAFQX1qNgIEIAEgB0EDajYCACADIActAAIgCEECELwCIAMvAQANAyADLwECDQEgAy8BBCEICyAAIAg7AQJBACEEDAULIANBGGpBHTYCACADQbi4xgA2AhQgA0EROgAQIABBBGogA0EQakGAucYAQYi5xgAQtgI2AgAMAwsgAEEEaiAFQfi5xgBBiLnGABCwAjYCAAwDCyADQQhqKAIAIQECQAJAAkACQAJAAkAgAygCBA4FBAABAgMECyABQfi5xgBBiLnGABCwAiEBDAQLIANBAToAECADIAGtNwMYIANBEGpB5LnGAEGIucYAELYCIQEMAwsgA0EQakEIakEONgIAIANBmLnGADYCFCADQRE6ABAgA0EQakG8ucYAQYi5xgAQtgIhAQwCCyADQRBqQQhqQR02AgAgA0G4uMYANgIUIANBEToAECADQRBqQYC5xgBBiLnGABC2AiEBDAELIAFBlLrGAEGIucYAELACIQELIABBBGogATYCAAwBCyAAQQRqIAE2AgALQQEhBAsgACAEOwEAIANBIGokAAv1BAELfyMAQZABayIDJAACQAJAAkACQCACRQ0AIANB4ABqIAFBAxCcAQJAIAMvAWBFDQAgAygCZCECIABBATYCACAAIAI2AgQMBAsCQAJAAkAgAy8BYiIEDQAgA0EANgIQIAMgBDYCDCADQQE2AggMAQsgBEEFdCIFQQEQmAUiBkUNAyADQQA2AhAgAyAENgIMIAMgBjYCCCADQeAAakEIaiEGIAJBf2oiByEFA0AgBUUNAiADQeAAaiABQSAQPQJAIAMtAGBFDQAgAygCZCECDAYLIANBGGpBCGoiCCAGQQhqKQIANwMAIANBGGpBEGoiCSAGQRBqKQIANwMAIANBGGpBGGoiCiAGQRhqLQAAOgAAIAMgAygCZCICNgA5IAMgAy0AYzoAOCADIAYpAgA3AxggAkGAgIB4cSADKAI4IgtBCHZyIQwgAy8AYSENAkAgAygCECICIAMoAgxHDQAgA0EIaiACENQCIAMoAhAhAgsgAygCCCACQQV0aiICIAw2AAMgAiALOgACIAIgDTsAACACIAMpAxg3AAcgAkEPaiAIKQMANwAAIAJBF2ogCSkDADcAACACQR9qIAotAAA6AAAgAyADKAIQQQFqNgIQIAVBf2ohBSAEQX9qIgQNAAsLIAAgAykDCDcCBCAAQQA2AgAgAEEMaiADQRBqKAIANgIADAQLIAcgA0GIAWpBoLzGABCwAiECDAILQQAgA0GIAWpBoLzGABCwAiECIABBATYCACAAIAI2AgQMAgsgBUEBEO8FAAsgAEEBNgIAIAAgAjYCBCADKAIMIgJFDQAgAygCCCACQQV0QQEQuAULIANBkAFqJAALpAUBBn8jAEEgayIAJAACQAJAAkACQAJAAkACQAJAQQAoArjDRg0AQQBBfzYCuMNGAkBBACgCvMNGIgENAEEAQQAgARCxAiIBNgK8w0YLIAEgASgCACICQQFqNgIAIAJBf0wNAUEAQQAoArjDRkEBajYCuMNGIAFFDQIgAUEAIAEoAhgiAiACQQJGIgIbNgIYAkAgAg0AIAFBGGoiAi0ABCEDIAJBAToABCAAIANBAXEiAzoABCADDQQgAkEEaiEEQQAhBQJAQQAoAvC/RkH/////B3FFDQAQ2QRBAXMhBQsgBC0AAQ0FIAIgAigCACIDQQEgAxs2AgAgA0UNCCADQQJHDQYgAigCACEDIAJBADYCACAAIAM2AgQgA0ECRw0HAkAgBQ0AQQAoAvC/RkH/////B3FFDQAQ2QQNACAEQQE6AAELIARBADoAAAsgASABKAIAIgJBf2o2AgACQCACQQFHDQAgARDlAwsgAEEgaiQADwtByNjBAEEQIABBCGpBhNnBAEHI5MEAELIDAAsAC0H72cEAQd4AQfjawQAQywUACyAAQRxqQQA2AgAgAEEYakHI2MEANgIAIABCATcCDCAAQfDswQA2AgggAEEEaiAAQQhqEM0DAAsgACAFOgAMIAAgBDYCCEGU2cEAQSsgAEEIakHA2cEAQfTtwQAQsgMACyAAQRxqQQA2AgAgAEHI2MEANgIYIABCATcCDCAAQZzuwQA2AgggAEEIakGk7sEAEJMEAAsgAEEcakEANgIAIABBGGpByNjBADYCACAAQgE3AgwgAEHU7sEANgIIIABBBGogAEEIakHc7sEAEM4DAAsgAEEcakEANgIAIABByNjBADYCGCAAQgE3AgwgAEGA7MEANgIIIABBCGpBwOzBABCTBAAL7wQBBX8jAEGAAWsiByQAQQEhCAJAAkACQAJAQcQAQQEQmAUiCUUNACAJQQE7AEIgCSABKQAANwAAIAkgAikAADcAIiAJQRhqIAFBGGopAAA3AAAgCUEQaiABQRBqKQAANwAAIAlBCGogAUEIaikAADcAACAJQSpqIAJBCGoiASkAADcAACAJQTJqIAJBEGoiCikAADcAACAJQTpqIAJBGGoiCykAADcAACAJQYACOwAgAkAgBEUNACAEQQBIDQIgBEEBEJgFIghFDQMLIAdB0ABqIAQ2AgAgByAINgJMIAggAyAEEP8FGiAHQdQAaiAENgIAIAdB2ABqIAU3AwAgB0EpaiAGKQAANwAAIAdBMWogBkEIaikAADcAACAHQTlqIAZBEGopAAA3AAAgB0HBAGogBkEYaikAADcAACAHQQhqQQlqIAEpAAA3AAAgB0EZaiAKKQAANwAAIAdBIWogCykAADcAACAHIAIpAAA3AAkgB0EJOgAIENwGIAdB6ABqIAdBCGoQtwIgBygCaA0DIAdBCGpBxABqIQQgACAHKQJsNwIMIABBFGogB0H0AGooAgA2AgAgAEEwakIANwIAIABBKGpCADcCACAAQSBqQgA3AgAgAEIANwIYIABCgoCAgCA3AgQgACAJNgIAAkACQAJAIActAAhBfWoOCQECAgICAgEBAAILIAdBLGohBAsgBEEEaigCACIJRQ0AIAQoAgAgCUEBELgFCyAHQYABaiQADwtBxABBARDvBQALEJIEAAsgBEEBEO8FAAsgByAHKAJsNgJ8QciqwABBKyAHQfwAakH0qsAAQeyswAAQsgMAC5EFAQF/IwBBgAFrIgIkAAJAAkACQAJAAkACQAJAIAAoAgAOBgABAgMEBQALIAJB5ABqQQA2AgAgAkHYssIANgJgIAJCATcCVCACQdi1wgA2AlAgASACQdAAahDJAyEADAULIAJB5ABqQQA2AgAgAkHYssIANgJgIAJCATcCVCACQbC1wgA2AlAgASACQdAAahDJAyEADAQLIAIgACkCBDcDKCACIABBDGooAgA2AhggAkHkAGpBAjYCACACQThqQQxqQdsANgIAIAJCAzcCVCACQfS0wgA2AlAgAkHKATYCPCACIAJBOGo2AmAgAiACQRhqNgJAIAIgAkEoajYCOCABIAJB0ABqEMkDIQAMAwsgAkHkAGpBADYCACACQdiywgA2AmAgAkIBNwJUIAJB0LTCADYCUCABIAJB0ABqEMkDIQAMAgsgAiAAKQIENwMIIAIgAEEMaigCADYCFCACIABBEGopAgA3AxggAiAAQRhqKAIANgIkIAIgAEEcaikCADcDKCACIABBJGooAgA2AjQgAkE4akEUakEGNgIAIAJB/ABqQdsANgIAIAJB0ABqQSRqQcoBNgIAIAJB0ABqQRxqQdsANgIAIAJB0ABqQRRqQcoBNgIAIAJB0ABqQQxqQdsANgIAIAJCBzcCPCACQfCzwgA2AjggAkHKATYCVCACIAJB0ABqNgJIIAIgAkE0ajYCeCACIAJBKGo2AnAgAiACQSRqNgJoIAIgAkEYajYCYCACIAJBFGo2AlggAiACQQhqNgJQIAEgAkE4ahDJAyEADAELIAJB5ABqQQA2AgAgAkHYssIANgJgIAJCATcCVCACQZizwgA2AlAgASACQdAAahDJAyEACyACQYABaiQAIAALvwQBDX8jAEHgAGsiAiQAAkACQCABQQhqKAIAIgMgAUEUaigCACIEaiIFIANJDQAgBUH/AUsNACAEQYACTw0AIAFBLGooAgAiBkH/AUsNACABQSBqKAIAIQcgAUEQaigCACEIIAFBHGooAgAhCSABQShqKAIAIQogASgCBCELIAEoAgAhDCABKAIMIQ0gASgCGCEOIAJB2ABqIAEoAiQiASAGQQV0ajYCACACQdQAaiABNgIAIAJB0ABqIAo2AgAgAkEYakEsaiAONgIAIAJBGGpBKGogCTYCACACQTxqIA42AgAgAkEYakEgaiANIARBBXRqNgIAIAJBGGpBHGogDTYCACACQTBqIAg2AgAgAkEsaiANNgIAIAJByABqIA4gB0EFdGo2AgAgAiABNgJMIAJBAToAKCACIAwgA0EFdGo2AiQgAiAMNgIgIAIgCzYCHCACIAw2AhggAkEIaiACQRhqEMwBIAJBIWogAkEIakEIaigCADYAACAAIAY6AAIgACAEOgABIAAgBToAACACIAIpAwg3ABkgACACKQAYNwADIABBCGogAkEYakEFaikAADcAAAwBCyAAQQA2AgQCQCABQQRqKAIAIgBFDQAgASgCACAAQQV0QQEQuAULAkAgAUEQaigCACIARQ0AIAEoAgwgAEEFdEEBELgFCwJAIAFBHGooAgAiAEUNACABKAIYIABBBXRBARC4BQsgAUEoaigCACIARQ0AIAEoAiQgAEEFdEEBELgFCyACQeAAaiQAC8gEAQZ+IAAgASkDICICQjOIQhN+IAEpAwAiA0L/////////A4N8IgRCE3xCM4ggASkDCCIFQv////////8DgyADQjOIfCIDfEIziCABKQMQIgZC/////////wODIAVCM4h8IgV8QjOIIAEpAxgiB0L/////////A4MgBkIziHwiBnxCM4ggAkL/////////A4MgB0IziHwiB3xCM4hCE34gBHwiAjwAACAAIAJCKIg8AAUgACACQiCIPAAEIAAgAkIYiDwAAyAAIAJCEIg8AAIgACACQgiIPAABIAAgAkIziCADfCIEQiWIPAALIAAgBEIdiDwACiAAIARCFYg8AAkgACAEQg2IPAAIIAAgBEIFiDwAByAAIARCM4ggBXwiA0IqiDwAEiAAIANCIog8ABEgACADQhqIPAAQIAAgA0ISiDwADyAAIANCCog8AA4gACADQgKIPAANIAAgBEL/////////A4MiBEIDhiACQjCIQgeDhDwABiAAIANCM4ggBnwiAkIniDwAGCAAIAJCH4g8ABcgACACQheIPAAWIAAgAkIPiDwAFSAAIAJCB4g8ABQgACADQv////////8DgyIFQgaGIARCLYiEPAAMIAAgAkIziCAHfCIDQiSIPAAeIAAgA0IciDwAHSAAIANCFIg8ABwgACADQgyIPAAbIAAgA0IEiDwAGiAAIAJC/////////wODIgJCAYYgBUIyiIQ8ABMgACADQv////////8DgyIDQiyIPAAfIAAgA0IEhiACQi+IhDwAGQvaBQMDfwF+A3wjAEEQayEBIAC9IgRCP4inIQICQAJAAkACQAJAAkACQAJAIARCIIinQf////8HcSIDQarGmIQESw0AIANBwtzY/gNLDQEgA0GAgMDxA00NA0QAAAAAAAAAACEFQQAhAyAAIQYMBgsCQCAAIABhDQAgAA8LIABE7zn6/kIuhkBkDQEgAETSvHrdKyOGwGNFDQMgAUQAAAAAAACgtiAAo7Y4AgQgASoCBBpEAAAAAAAAAAAhByAARFEwLdUQSYfAYw0G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IAUgBGoiCSAHLQAAOgAAIAMgBEEBajYCACAHQQFqIgcgAkYNAiAJQQFqIActAAA6AAAgAyAEQQJqNgIAIAdBAWoiByACRg0DIAlBAmogBy0AADoAACADIARBA2o2AgAgB0EBaiIHIAJGDQEgCUEDaiAHLQAAOgAAIAMgBEEEaiIENgIAIAdBAWohByAJQQRqIAZHDQALIAhBBGohCQwECyAEQQNqIQQMAgsgBEEBaiEEDAELIARBAmohBAsgAiEJCwJAAkACQCAEQcAARw0AIAkgAkYNAQtBACEEDAELIANBiAFqIANBxAAQ/wUaIANBgAFqIANBxAFqKQIAIgo3AwAgA0H4AGogA0G8AWopAgAiCzcDACADQfAAaiADQbQBaikCACIMNwMAIANB6ABqIANBrAFqKQIAIg03AwAgA0HgAGogA0GkAWopAgAiDjcDACADQdgAaiADQZwBaikCACIPNwMAIANB0ABqIANBlAFqKQIAIhA3AwAgAyADKQKMASIRNwNIIABBOWogCjcAACAAQTFqIAs3AAAgAEEpaiAMNwAAIABBIWogDTcAACAAQRlqIA43AAAgAEERaiAPNwAAIABBCWogEDcAACAAIBE3AAFBASEECyAAIAQ6AAAgA0HQAWokAAumBQIEfwV+IAAgASkDKDcDKCAAQTBqIAFBMGopAwA3AwAgAEE4aiABQThqKQMANwMAIABBwABqIAFBwABqKQMANwMAIABByABqIAFByABqKQMANwMAIABBCGpC8P///////z8gAUEIaikDAH0iBkL/////////A4NC0P3//////z8gASkDAH0iB0IziHw3AwAgAEEQakLw////////PyABQRBqKQMAfSIIQv////////8DgyAGQjOIfDcDACAAQRhqQvD///////8/IAFBGGopAwB9IgZC/////////wODIAhCM4h8NwMAIABBIGpC8P///////z8gAUEgaikDAH0iCEL/////////A4MgBkIziHw3AwAgACAIQjOIQhN+IAdC/////////wODfDcDACAAQfAAaiABQfAAaikDADcDACAAQegAaiABQegAaikDADcDACAAQeAAaiABQeAAaikDADcDACAAQdgAaiABQdgAaikDADcDACAAIAEpA1A3A1AgAEGYAWoiAiABQZgBaikDADcDACAAQZABaiIDIAFBkAFqKQMANwMAIABBiAFqIgQgAUGIAWopAwA3AwAgAEGAAWoiBSABQYABaikDADcDACAAIAEpA3g3A3ggBSkDACEGIAQpAwAhByAAKQN4IQggAkLw////////PyACKQMAfSIJQv////////8Dg0Lw////////PyADKQMAfSIKQjOIfDcDACADIApC/////////wODQvD///////8/IAd9IgdCM4h8NwMAIAQgB0L/////////A4NC8P///////z8gBn0iBkIziHw3AwAgBSAGQv////////8Dg0LQ/f//////PyAIfSIGQjOIfDcDACAAIAlCM4hCE34gBkL/////////A4N8NwN4C7AEAQN/IwBB8ABrIgUkAAJAAkACQAJAIAFFDQAgASgCACIGQX9GDQEgASAGQQFqNgIAIARFDQAgBCgCACIGQX9GDQEgBCAGQQFqNgIAIANBIEsNAgJAIARBD2pBtNHAAEEVEIEGRQ0AIAVBNGpBIDYCACAFQSxqIAM2AgAgBSAEQQRqNgIwIAUgAjYCKCAFQSA2AiQgBSABQQRqNgIgIAVByABqQQFyIAVBIGpBAxDhASAFQQA6AEgMBAsgBUGBBDsBSAwDCxDjBQALEOQFAAsgBUEBOwFICyAFQSBqIAVByABqEOYBIAVBHmogBS0AIzoAACAFQQhqIAVBIGpBEGopAwA3AwAgBUEQaiAFQSBqQRhqKQMANwMAIAVBGGogBUHAAGooAgA2AgAgBSAFLwAhOwEcIAUgBUEgakEIaikDADcDACAFLQAgIQcgBSgCJCEGIAQgBCgCAEF/ajYCAAJAIANFDQAgAiADQQEQuAULIAEgASgCAEF/ajYCAAJAAkACQCAHQf8BcUUNAEEBIQEMAQtBJEEEEJgFIgRFDQFBACEBIARBADYCACAEIAUvARw7AAQgBCAGNgAHIAQgBSkDADcACyAEQQZqIAVBHmotAAA6AAAgBEETaiAFQQhqKQMANwAAIARBG2ogBUEQaikDADcAACAEQSNqIAVBGGotAAA6AABBACEGCyAAIAE2AgggACAGNgIEIAAgBDYCACAFQfAAaiQADwtBJEEEEO8FAAvQBAECfyMAQYABayIHJAACQAJAAkACQEHmAEEBEJgFIghFDQAgCCABKQAANwAAIAggAikAADcAIiAIIAUpAAA3AEQgCEEYaiABQRhqKQAANwAAIAhBEGogAUEQaikAADcAACAIQQhqIAFBCGopAAA3AAAgCEEqaiACQQhqKQAANwAAIAhBMmogAkEQaikAADcAACAIQTpqIAJBGGopAAA3AAAgCEHMAGogBUEIaikAADcAACAIQdQAaiAFQRBqKQAANwAAIAhB3ABqIAVBGGopAAA3AAAgCEGAAjsAICAIQYACOwBkIAhBATsAQiAHQQhqQTBqIAY3AwAgB0EhaiAEQRhqKQAANwAAIAdBGWogBEEQaikAADcAACAHQRFqIARBCGopAAA3AAAgB0EsaiIBIAMpAgA3AgAgB0E0aiADQQhqKAIANgIAIAdBCzoACCAHIAQpAAA3AAkQ3AYgB0HoAGogB0EIahC3AiAHKAJoDQEgACAHKQJsNwIMIABBFGogB0H0AGooAgA2AgAgAEEwakIANwIAIABBKGpCADcCACAAQSBqQgA3AgAgAEIANwIYIABCg4CAgDA3AgQgACAINgIAAkACQAJAIActAAhBfWoOCQAGBgYGBgECBQYLIAdBzABqIQEMBAsgB0HMAGohAQwDCyAHQcwAaiEBDAILQeYAQQEQ7wUACyAHIAcoAmw2AnxByKrAAEErIAdB/ABqQfSqwABB7KzAABCyAwALIAFBBGooAgAiCEUNACABKAIAIAhBARC4BQsgB0GAAWokAAubBAEHfyMAQYABayICJAACQAJAIABFDQAgACgCAA0BIABBfzYCACABRQ0AIAEoAgANASABQQA2AgAgAkHAAGpBOGogAUE4aigCADYCACACQcAAakEwaiABQTBqKQIANwMAIAJBwABqQShqIAFBKGopAgA3AwAgAkHAAGpBIGogAUEgaikCADcDACACQcAAakEYaiABQRhqKQIANwMAIAJBwABqQRBqIAFBEGopAgA3AwAgAkHAAGpBCGogAUEIaikCADcDACACIAEpAgA3A0AgAkEIakEwaiIDIAJB9ABqKQIANwMAIAJBCGpBKGoiBCACQewAaikCADcDACACQQhqQSBqIgUgAkHkAGopAgA3AwAgAkEIakEYaiIGIAJB3ABqKQIANwMAIAJBCGpBEGoiByACQdQAaikCADcDACACQQhqQQhqIgggAkHAAGpBDGopAgA3AwAgAiACKQJENwMIIAFBPEEEELgFAkAgAEEMaigCACIBIABB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QQEQuAULIAZBgAFqJAAL3QMDBH8HfgR8IwBB0ABrIgIkAAJAAkACQCABKAIAIgNBEHZB/wFxIgQNAEIAIAEpAggiBn0gBiADQQBIIgUbQgAgATUCBCIHIAZCAFKtfH0gByAFGxDOASENDAELIAE1AgQhCCABKQIIIQkCQAJAIARBAUcNAEIAIQZCCiEHDAELQgohBiAEIQFCACEHQgEhCkIAIQsDQCACQTBqIAZCASABQQFxIgUbIAdCACAFGyAKIAsQqQMgAkHAAGogBiAHIAYgBxCpAyABQQNLIQUgAkHAAGpBCGopAwAhByACQTBqQQhqKQMAIQsgAikDQCEGIAIpAzAhCiABQQF2IQEgBQ0ACyACQSBqIAogCyAGIAcQqQMgAikDICIHIAJBKGopAwAiBoRQDQILIAJBEGogCSAIIAcgBhCOBCACIAIpAxAiCiACQRBqQQhqKQMAIgsgByAGEKkDIAkgAikDACIMfSAIIAJBCGopAwB9IAkgDFStfRDoASENIAcgBhDoASEOIAogCxDoASEPRAAAAAAAACRAIAQQwQMiECAPIA0gDqOgIg2aIA0gA0EASBuiEPwEIBCjIQ0LIAAgDTkDCCAAQgE3AwAgAkHQAGokAA8LQfC/wQBBGUHUv8EAEIQEAAvQAwEafiABMQASIQIgATEAESEDIAExABAhBCABMQAPIQUgATEADSEGIAExAA4hByABMQAfIQggATEAHiEJIAExAB0hCiABMQAcIQsgATEAGyEMIAExABohDSABMQAMIQ4gATEACyEPIAExAAohECABMQAJIREgATEAByESIAExAAghEyABMQAZIRQgATEAGCEVIAExABchFiABMQAWIRcgATEAEyEYIAExABQhGSABMQAVIRogACABNQAAIAExAARCIIaEIAExAAVCKIaEIAExAAYiG0IwhoRC/////////wODNwMAIAAgGCAZQgiGhCAaQhCGhCAXQhiGhCAWQiCGhCAVQiiGhCAUQjCGhEIBiEL/////////A4M3AxggACAbIBJCCIaEIBNCEIaEIBFCGIaEIBBCIIaEIA9CKIaEIA5CMIaEQgOIQv////////8DgzcDCCAAIBUgFEIIhoQgDUIQhoQgDEIYhoQgC0IghoQgCkIohoQgCUIwhoQgCEI4hoRCDIhC/////////wODNwMgIAAgDiAGQgiGhCAHQhCGhCAFQhiGhCAEQiCGhCADQiiGhCACQjCGhCAYQjiGhEIGiEL/////////A4M3AxALxwMCA38EfiABKAIMIQIgASkDACEFIAAoAgwhAyAAKQMAIQYCQCABKAIIIgQgACgCCCIARg0AAkAgBCAAayIBQQBIDQAgBEECdCAAQQJ0a0GAxsEAaiEEAkADQEGAlOvcAyEAAkAgAUEJTw0AIAQoAgAhAAsgBkL/////D4MgAK0iB34iCEIgiCAGQiCIIAd+fCIGQiCIIAcgA61+fCIHQv////8PVg0BIAZCIIYgCEL/////D4OEIQYgBEFcaiEEIAFBCkkhACAHpyEDIAFBd2ohASAARQ0ACyAHpyEDDAILQQEPCyAAQQJ0IARBAnRrQYDGwQBqIQRBACABayEBA0BBgJTr3AMhAAJAAkACQCABQQhKDQAgAUEKTw0BIAQoAgAhAAsgBUL/////D4MgAK0iB34iCEIgiCAFQiCIIAd+fCIFQiCIIAcgAq1+fCIHQv////8PWA0BQf8BDwsgAUEKQYjHwQAQxwMACyAFQiCGIAhC/////w+DhCEFIARBXGohBCABQQpJIQAgB6chAiABQXdqIQEgAEUNAAsgB6chAgsCQCADIAJHIgFFDQBBfyABIAMgAkkbDwtBfyAGIAVSIAYgBVQbC88DAQF/IwBBgAZrIgIkACACQQhqIAFBARBmIAJB2AVqIAJBCGpBARBmIAJBMGogAkHYBWpBARBmIAJB2ABqIAEgAkEwahBQIAJBgAFqIAJBCGogAkHYAGoQUCACQagBaiACQYABakEBEGYgAkHQAWogAkHYAGogAkGoAWoQUCACQfgBaiACQdABakEFEGYgAkGgAmogAkH4AWogAkHQAWoQUCACQcgCaiACQaACakEKEGYgAkHwAmogAkHIAmogAkGgAmoQUCACQZgDaiACQfACakEUEGYgAkHAA2ogAkGYA2ogAkHwAmoQUCACQegDaiACQcADakEKEGYgAkGQBGogAkHoA2ogAkGgAmoQUCACQbgEaiACQZAEakEyEGYgAkHgBGogAkG4BGogAkGQBGoQUCACQYgFaiACQeAEakHkABBmIAJBsAVqIAJBiAVqIAJB4ARqEFAgAkHYBWogAkGwBWpBMhBmIAAgAkHYBWogAkGQBGoQUCAAQcgAaiACQaABaikDADcDACAAQcAAaiACQZgBaikDADcDACAAQThqIAJBkAFqKQMANwMAIABBMGogAkGIAWopAwA3AwAgACACKQOAATcDKCACQYAGaiQAC7gDAQV/AkACQAJAAkACQAJAAkAgByAIWA0AIAcgCH0gCFgNAQJAIAcgBn0gBlgNACAHIAZCAYZ9IAhCAYZaDQMLAkAgBiAIWA0AIAcgBiAIfSIIfSAIWA0ECyAAQQA2AgAPCyAAQQA2AgAPCyAAQQA2AgAPCyADIAJLDQEgACADNgIEIAAgATYCACAAQQhqIAQ7AQAPCyADIAJLDQEgASADaiEJQQAhCiABIQsCQANAIAMgCkYNASAKQQFqIQogCyADaiEMIAtBf2oiDSELIAxBf2otAABBOUYNAAsgDSADaiILIAstAABBAWo6AAAgAyAKa0EBaiADTw0DIAtBAWpBMCAKQX9qEIIGGgwDCwJAAkAgAw0AQTEhCgwBCyABQTE6AABBMCEKIANBAUYNAEEwIQogAUEBakEwIANBf2oQggYaCyAEQRB0QYCABGpBEHUiBCAFQRB0QRB1TA0CIAMgAk8NAiAJIAo6AAAgA0EBaiEDDAILIAMgAiADEPUFAAsgAyACIAMQ9QUACwJAIAMgAksNACAAIAM2AgQgACABNgIAIABBCGogBDsBAA8LIAMgAiADEPUFAAvCAwECfiAAIAApAwAiAyABKQMAhUIAIAKtQv8Bg30iBIMgA4U3AwAgACAAKQMIIgMgASkDCIUgBIMgA4U3AwggACAAKQMQIgMgASkDEIUgBIMgA4U3AxAgACAAKQMYIgMgASkDGIUgBIMgA4U3AxggACAAKQMgIgMgASkDIIUgBIMgA4U3AyAgACAAKQMoIgMgASkDKIUgBIMgA4U3AyggAEEwaiICIAIpAwAiAyABQTBqKQMAhSAEgyADhTcDACAAQThqIgIgAikDACIDIAFBOGopAwCFIASDIAOFNwMAIABBwABqIgIgAikDACIDIAFBwABqKQMAhSAEgyADhTcDACAAQcgAaiICIAIpAwAiAyABQcgAaikDAIUgBIMgA4U3AwAgACAAKQNQIgMgASkDUIUgBIMgA4U3A1AgAEHYAGoiAiACKQMAIgMgAUHYAGopAwCFIASDIAOFNwMAIABB4ABqIgIgAikDACIDIAFB4ABqKQMAhSAEgyADhTcDACAAQegAaiICIAIpAwAiAyABQegAaikDAIUgBIMgA4U3AwAgAEHwAGoiACAAKQMAIgMgAUHwAGopAwCFIASDIAOFNwMAC78DAQh/IwBBgANrIgEkACABQSBqQgA3AwAgAUEYakIANwMAIAFBEGpCADcDACABQQhqQgA3AwAgAUEwakIANwMAIAFBOGpCADcDACABQcAAakIANwMAIAFByABqQgA3AwAgAUIANwMAIAFCATcDKCABQgE3A1BBACECIAFB2ABqQQBByAAQggYaIAFBoAFqIAAgAUHQAGoiAxBQIAFByAFqIAEgAEHQAGoiBBBQIAFB8AFqIAFBoAFqEKIBIAFBKGohBSABQZgCaiABQcgBahCiAUEBIQYDQCABQZgCaiACai0AACABQfABaiACai0AAHMiB0F/aiAHQX9zcUGAAXFBB3YQhwUgBnEhBiACQQFqIgJBIEcNAAsgBhCHBSEIIAFB8AFqIABBKGogAxBQIAFBmAJqIAUgBBBQIAFBwAJqIAFB8AFqEKIBIAFB4AJqIAFBmAJqEKIBQQAhAkEBIQYDQCABQeACaiACai0AACABQcACaiACai0AAHMiB0F/aiAHQX9zcUGAAXFBB3YQhwUgBnEhBiACQQFqIgJBIEcNAAsgBhCHBSAIcRCHBSECIAFBgANqJAAgAkH/AXFBAUYLgwQBAX8jAEEwayICJAACQAJAAkACQAJAAkACQAJAAkAgAC0AAA4IAAECAwQFBgcACyACQRxqQQA2AgAgAkGAlsAANgIYIAJCATcCDCACQciXwAA2AgggASACQQhqEMkDIQAMBwsgAkEcakEANgIAIAJBgJbAADYCGCACQgE3AgwgAkGol8AANgIIIAEgAkEIahDJAyEADAYLIAJBHGpBADYCACACQYCWwAA2AhggAkIBNwIMIAJBkJfAADYCCCABIAJBCGoQyQMhAAwFCyACQRxqQQA2AgAgAkGAlsAANgIYIAJCATcCDCACQfCWwAA2AgggASACQQhqEMkDIQAMBAsgAkEcakEBNgIAIAJCATcCDCACQcyWwAA2AgggAkEQNgIkIAIgAEEEajYCLCACIAJBIGo2AhggAiACQSxqNgIgIAEgAkEIahDJAyEADAMLIAJBHGpBATYCACACQgE3AgwgAkGclsAANgIIIAJBETYCJCACIABBAWo2AiwgAiACQSBqNgIYIAIgAkEsajYCICABIAJBCGoQyQMhAAwCCyACQRxqQQE2AgAgAkIBNwIMIAJBiJbAADYCCCACQRI2AiQgAiAAQQFqNgIsIAIgAkEgajYCGCACIAJBLGo2AiAgASACQQhqEMkDIQAMAQsgAEEEaiABENUFIQALIAJBMGokACAAC9wDAQd/IwBBwABrIgQkACAEQRBqQQApAuCDQDcDACAEQQApAtiDQDcDCAJAAkACQAJAAkAgAUH4CGooAgBFDQAgAUHwAWooAgAiBUEFTw0BAkAgBUEhbCIFRQ0AIAFB6ABqIgYgBWohByADQSRsIQgDQCAGIglBIWohBiAIIQEgAiEFA0AgAUUNBSABQVxqIQEgCSAFQSAQgQYhAyAFQSRqIgohBSADDQALQQAgCkF8aigCACIBKAIUayIFQX9MDQUgBEEYaiABKQPQASAFELEDAkACQCAJLQAgDQAgBEEoakEIaiAEQRhqQQhqKQMANwMAIAQgBCkDGDcDKCAEQQhqIARBKGoQnwMMAQsgBEEoakEIaiAEQRhqQQhqKQMANwMAIAQgBCkDGDcDKCAEQQhqIARBKGoQgAMLIAYgB0cNAAsLIAAgBCkDCDcCBCAAQQA2AgAgAEEMaiAEQRBqKQMANwIADAQLIARBPGpBADYCACAEQfiJwAA2AjggBEIBNwIsIARBjIrAADYCKCAEQShqQfSDwAAQkwQACyAFQQRBoIrAABD1BQALIABBATYCACAAQgA3AgQMAQtBq4LAAEErIARBKGpB2ILAAEGEhMAAELIDAAsgBEHAAGokAAvRAwEJfyMAQTBrIgIkACACQgM3AxggAiACQShqNgIgAkACQAJAAkACQCABKAIAIgMgASgCCCIEIAJBGGoQqwMiBQ0AIAIgAikDGEIgfDcDGCABKAIMIAFBFGooAgAgAkEYahD0ASIFDQACQAJAIAIoAhgiBQ0AQQEhBgwBCyAFQQBIDQQgBUEBEJgFIgZFDQULIAJBADYCECACIAU2AgwgAiAGNgIIIAIgAkEIajYCGCABQRhqIAJBGGoQ2QIiBQ0BIAMgBCACQRhqENEBIgUNASABQRtqIQcgAigCGCIIQQhqIgkoAgAhBUEAIQMgCEEEaiEKA0AgByADai0AACEGAkACQCAKKAIAIAVGDQAgBSEEDAELIAggBUEBEOUCIAkoAgAhBAsgCSAEQQFqIgU2AgAgCCgCACAEaiAGOgAAIANBAWoiA0EgRw0ACyABKAIMIAEoAhQgAkEYahDSASIFDQEgACACKQMINwIEIABBADYCACAAQQxqIAJBEGooAgA2AgAMAgsgAEEBNgIAIAAgBTYCBAwBCyAAQQE2AgAgACAFNgIEIAIoAgwiAUUNACACKAIIIAFBARC4BQsgAkEwaiQADwsQkgQACyAFQQEQ7wUAC+sDAQJ/IwBBgAFrIgQkAAJAAkACQAJAQcQAQQEQmAUiBUUNACAFQQE7AEIgBSABKQAANwAAIAUgAikAADcAIiAFQRhqIAFBGGopAAA3AAAgBUEQaiABQRBqKQAANwAAIAVBCGogAUEIaikAADcAACAFQSpqIAJBCGopAAA3AAAgBUEyaiACQRBqKQAANwAAIAVBOmogAkEYaikAADcAACAFQYACOwAgIARBIWogA0EYaikAADcAACAEQRlqIANBEGopAAA3AAAgBEERaiADQQhqKQAANwAAIARBBzoACCAEIAMpAAA3AAkQ3AYgBEHoAGogBEEIahC3AiAEKAJoDQEgACAEKQJsNwIMIABBFGogBEH0AGooAgA2AgAgAEEwakIANwIAIABBKGpCADcCACAAQSBqQgA3AgAgAEIANwIYIABCgoCAgCA3AgQgACAFNgIAAkACQAJAAkAgBC0ACEF9ag4JAAcHBwcHAQIDBwsgBEHMAGohBQwFCyAEQcwAaiEFDAQLIARBzABqIQUMAwsgBEEsaiEFDAILQcQAQQEQ7wUACyAEIAQoAmw2AnxByKrAAEErIARB/ABqQfSqwABB7KzAABCyAwALIAVBBGooAgAiAEUNACAFKAIAIABBARC4BQsgBEGAAWokAAvoAwEHfyMAQRBrIgIkAEEBIQMCQCABKAIYIgRBJyABQRxqKAIAKAIQIgURBwANACACIAAoAgBBgQIQ4wEgAkEMai0AACEGIAJBCGooAgAhByACKAIAIQECQAJAAkAgAigCBCIIQYCAxABGDQADQCABIQBB3AAhA0EBIQECQAJAAkACQCAADgQHAQMABwsgBkH/AXEhAEEAIQZBAyEBQf0AIQMCQAJAAkAgAA4GCQUEAAECCQtBAiEGQfsAIQMMBAtBAyEBQfUAIQNBAyEGDAMLQQQhBkHcACEDDAILQQAhASAIIQMMAQtBAkEBIAcbIQZBMEHXACAIIAdBAnR2QQ9xIgNBCkkbIANqIQMgB0F/akEAIAcbIQcLIAQgAyAFEQcARQ0ADAILCwNAIAEhAEHcACEDQQEhAQJAAkAgAA4EBAQBAAQLIAZB/wFxIQBBACEGQQMhAUH9ACEDAkACQAJAAkAgAA4GBwQDAgEABwtBBCEGQdwAIQMMAwtBAyEBQfUAIQNBAyEGDAILQQIhBkH7ACEDDAELQQJBASAHGyEGQYCAxAAgB0ECdHZBAXFBMHIhAyAHQX9qQQAgBxshBwsgBCADIAURBwBFDQALC0EBIQMMAQsgBEEnIAURBwAhAwsgAkEQaiQAIAMLxQMBCH8jAEHQAGsiAyQAIANBOGpCADcDACADQTBqQgA3AwAgA0EoakIANwMAIANBIGpCADcDACADQRhqQgA3AwAgA0EQakIANwMAIANBCGpCADcDACADQgA3AwAgAkF/aiEEQQAhBSABKAIEIgYhBwJAAkACQAJAAkADQCACIAVGDQIgBiAFRg0DIAEgB0F/aiIINgIEIAEgASgCACIJQQFqNgIAIAMgBWoiCiAJLQAAOgAAIAQgBUYNASAIRQ0DIAEgB0F+aiIHNgIEIAEgASgCACIJQQFqNgIAIApBAWogCS0AADoAACAFQQJqIgVBwABHDQALIAAgAykDADcAASAAQQA6AAAgAEE5aiADQThqKQMANwAAIABBMWogA0EwaikDADcAACAAQSlqIANBKGopAwA3AAAgAEEhaiADQSBqKQMANwAAIABBGWogA0EYaikDADcAACAAQRFqIANBEGopAwA3AAAgAEEJaiADQQhqKQMANwAADAQLIAVBAWohBQsgBSADQcgAakGMncYAELACIQUMAQsgA0KBygA3A0AgA0HAAGoQuAQhBQsgAEEBOgAAIABBBGogBTYCAAsgA0HQAGokAAvSAwIEfwJ+IABBEGohASAAQQhqKQMAIQUgACkDACEGAkACQCAAKAJQIgJBgAFGDQAgAkGAAUkNASACQYABQdyvwgAQxwMACyABIABB1ABqQQEQMUEAIQIgAEEANgJQCyAAQdQAaiIDIAJqQYABOgAAIAAgACgCUCIEQQFqIgI2AlACQAJAIAJBgQFPDQAgAEHQAGogAmpBBGpBAEH/ACAEaxCCBhoCQCAAKAJQQY9/akEQTw0AIAEgA0EBEDEgACgCUCICQYEBTw0CIABB1ABqQQAgAhCCBhoLIABBzAFqIAZCOIYgBkIohkKAgICAgIDA/wCDhCAGQhiGQoCAgICA4D+DIAZCCIZCgICAgPAfg4SEIAZCCIhCgICA+A+DIAZCGIhCgID8B4OEIAZCKIhCgP4DgyAGQjiIhISENwIAIABBxAFqIAVCOIYgBUIohkKAgICAgIDA/wCDhCAFQhiGQoCAgICA4D+DIAVCCIZCgICAgPAfg4SEIAVCCIhCgICA+A+DIAVCGIhCgID8B4OEIAVCKIhCgP4DgyAFQjiIhISENwIAIAEgA0EBEDEgAEEANgJQDwsgAkGAAUHsr8IAEPQFAAsgAkGAAUH8r8IAEPUFAAvJAwIFfwF+IwBBMGsiBCQAIARBCGpBCGogASgCACIBQQhqIgUoAgAiBjYCACAFQQA2AgAgASkCACEJIAFCATcCACAEIAk3AwgCQAJAIAYgAkkNACAEKAIIIQYMAQsCQAJAIAQoAgwgBmsgAiAGayIFSQ0AIAYhAgwBCyAEQQhqIAYgBRDlAiAEKAIQIQILIAQoAggiBiACaiEHAkACQCAFQQJJDQAgB0EAIAVBf2oiBRCCBhogBiACIAVqIgJqIQcMAQsgBUUNAQsgB0EAOgAAIAJBAWohAgsgBCADQQRqQSAgBiACIAMoAgAQgwEgBCgCBCEDAkACQAJAIAQoAgANACAEKAIMIQUgBEEYaiAGIAIgAyACIANJGyICEIwBIAQoAhgNAgJAIAFBBGoiBygCACIIRQ0AIAEoAgAgCEEBELgFCyABIAI2AgggASAGNgIAIAcgBTYCAEEAIQIMAQsCQCAEKAIMIgJFDQAgBiACQQEQuAULQQEhAgsgACADNgIEIAAgAjYCACAEQTBqJAAPCyAEIAQpAhw3AiQgBCACNgIgIAQgBTYCHCAEIAY2AhhB0M7AAEErIARBGGpB/M7AAEHkz8AAELIDAAu5AwEKfwJAAkACQAJAAkACQAJAAkAgASgCCCIERQ0AIAEoAgAhBSAEQQEQmAUiBkUNBCADRQ0HIAUgBEEibGohByADQX9qQf///z9xIghBAWohCSAEQX9qQf////8HcUEBaiEKIAYhCwNAIAVBImohDEEAIQ0gAiEDAkADQCADIAVBIBCBBkUNASADQSBqIQMgCSANQQFqIg1HDQAMCgsLIAsgDToAACALQQFqIQsgDCEFIAwgB0cNAAwCCwsgA0UNASADQX9qQf///z9xIQhBACEKQQEhBgsgCEEBaiEFIAFBGGohDUEAIQMDQCACIA1BIBCBBkUNAiACQSBqIQIgBSADQQFqIgNHDQALC0HsnMAAQStBwJ7AABCEBAALIAEoAgwhCQJAAkAgAUEUaigCACINDQBBASEFDAELIA1BAEgNAiANQQEQmAUiBUUNAwsgACAFNgIMIABBEGogDTYCACAFIAkgDRD/BRogACADOgAYIAAgCjYCCCAAIAQ2AgQgACAGNgIAIABBFGogDTYCAA8LIARBARDvBQALEJIEAAsgDUEBEO8FAAtB7JzAAEErQcCewAAQhAQAC5QDAgp/An4gASACQQJ0aiEFAkACQCAERQ0AIARBAWohBiAEQQJ0IQdBACEIQQAhCQNAIAAgCEECdGohCgNAIAghCyAKIQIgASAFRg0DIAJBBGohCiALQQFqIQggASgCACEMIAFBBGoiDSEBIAxFDQALIAtBKCALQShJG0FYaiEOIAytIQ9CACEQQQAhASAHIQwgAyEKAkACQAJAA0AgDiABRg0BIAIgECACNQIAfCAKNQIAIA9+fCIQPgIAIBBCIIghECACQQRqIQIgAUF/aiEBIApBBGohCiAMQXxqIgwNAAsgBCEBIBCnIgINAQwCCyABQX9zIAhqQShBxKbCABDHAwALAkAgCyAEaiIBQSdLDQAgACABQQJ0aiACNgIAIAYhAQwBCyABQShBxKbCABDHAwALIAEgC2oiASAJIAkgAUkbIQkgDSEBDAALC0EAIQlBACECA0AgASAFRg0BIAJBAWohAiABKAIAIQogAUEEaiILIQEgCkUNACACQX9qIgEgCSAJIAFJGyEJIAshAQwACwsgCQv7AwEBfyMAQTBrIgIkAAJAAkACQAJAAkACQCAALQAADgQAAQIDAAsgAiAAQQRqKAIANgIMIAJBEGogAUGU4sEAQQIQvQQgAkEQakGW4sEAQQQgAkEMakGc4sEAEN8BIQAgAkEoOgAfIABB4+HBAEEEIAJBH2pB6OHBABDfASEBQRRBARCYBSIARQ0EIABBEGpBACgA3+tBNgAAIABBCGpBACkA1+tBNwAAIABBACkAz+tBNwAAIAJClICAgMACNwIkIAIgADYCICABQfjhwQBBByACQSBqQaziwQAQ3wEQswMhACACKAIkIgFFDQMgAigCICABQQEQuAUMAwsgAiAALQABOgAQIAJBIGogAUGQ4sEAQQQQpQQgAkEgaiACQRBqQejhwQAQjwIQoAMhAAwCCyAAQQRqKAIAIQAgAkEgaiABQd7hwQBBBRC9BCACQSBqQePhwQBBBCAAQQhqQejhwQAQ3wFB+OHBAEEHIABBgOLBABDfARCzAyEADAELIABBBGooAgAhACACQSBqIAFBoOfBAEEGEL0EIAIgAEEIajYCECACQSBqQePhwQBBBCACQRBqQZDnwQAQ3wEaIAIgADYCECACQSBqQabnwQBBBSACQRBqQaznwQAQ3wEaIAJBIGoQswMhAAsgAkEwaiQAIAAPC0EUQQEQ7wUAC8MDAQd/IwBB0ABrIgEkACABQQA2AhggAUIBNwMQIAFBIGogAUEQakH858AAELwEAkACQCAAIAFBIGoQ8AENAAJAIAEoAhQgASgCGCIAa0EJSw0AIAFBEGogAEEKEOgCIAEoAhghAAsgASgCECAAaiICQQApALjpQDcAACACQQhqQQAvAMDpQDsAACABIABBCmo2AhggAUEIahANIgMQDiABKAIIIQQCQCABKAIUIAEoAhgiAmsgASgCDCIATw0AIAFBEGogAiAAEOgCIAEoAhghAgsgASgCECACaiAEIAAQ/wUaIAEgAiAAaiICNgIYAkAgASgCFCACa0EBSw0AIAFBEGogAkECEOgCIAEoAhghAgsgASgCECACakGKFDsAACABIAJBAmoiAjYCGCABKAIQIQUCQAJAIAEoAhQiBiACSw0AIAUhBwwBCwJAIAINAEEBIQcgBSAGQQEQuAUMAQsgBSAGQQEgAhCEBSIHRQ0CCyAHIAIQDwJAIABFDQAgBCAAQQEQuAULAkAgA0EkSQ0AIAMQAwsgAUHQAGokAA8LQZTowABBNyABQcgAakGo6cAAQZjpwAAQsgMACyACQQEQ7wUAC6IDAQN/IwBB0AFrIgIkACACQYABaiABQdAAahC5ASACQTBqQSBqIAJBgAFqQSBqKQMANwMAIAJBMGpBGGogAkGAAWpBGGopAwA3AwAgAkEwakEQaiIDIAJBgAFqQRBqKQMANwMAIAJBMGpBCGoiBCACQYABakEIaikDADcDACACIAIpA4ABNwMwIAJB2ABqQSBqIAJByAFqKQMANwMAIAJB2ABqQRhqIAJBwAFqKQMANwMAIAJB2ABqQRBqIAJBuAFqKQMANwMAIAJB2ABqQQhqIAJBsAFqKQMANwMAIAIgAikDqAE3A1ggAkGAAWogAkEwakEFEGYgAkEIaiACQYABaiACQdgAahBQIAJB2ABqIAEgAkEIahBQIAJBgAFqIAFBKGogAkEIahBQIAJBMGogAkGAAWoQogEgAEEXaiACQTBqQRdqKQAANwAAIABBEGogAykAADcAACAAQQhqIAQpAAA3AAAgACACKQAwNwAAIAItAE8hASACQTBqIAJB2ABqEKIBIAAgASACLQAwQQFxEIcFQQd0czoAHyACQdABaiQAC60DAQd/IwBBwABrIgQkACAEQf8BOgAHIAJBA3QhBSACQf////8BcSACRyEGIARBGGpBAXIhB0EAIQgCQAJAAkADQEEEIQkCQCACRQ0AIAYNAyAFQQBIDQMgBUEEEJgFIglFDQQLIAQgAjYCDCAEIAk2AgggCSABIAUQ/wUaIAQgAjYCECAEQQhqIAIQygIgBCgCCCAEKAIQQQN0aiIJQQE2AgQgCSAEQQdqNgIAIAQgBCgCEEEBaiIJNgIQIARBGGogBCgCCCAJIAMQYAJAIAQtABgNACAAQQE6AAAgACAHKQAANwABIABBIWogBC0ABzoAACAAQRlqIAdBGGopAAA3AAAgAEERaiAHQRBqKQAANwAAIABBCWogB0EIaikAADcAACAEKAIMIgJFDQIgBCgCCCACQQN0QQQQuAUMAgsgBC0AGSEJAkAgBCgCDCIKRQ0AIAQoAgggCkEDdEEEELgFCwJAIAlB/wFxQQFHDQAgBCAELQAHQX9qOgAHIAhBAWoiCEH/AXFB/wFHDQELCyAAQQA6AAALIARBwABqJAAPCxCSBAALIAVBBBDvBQALmQMBA38CQAJAAkACQAJAIAFBCUkNAEEQQQgQgQUgAUsNAQwCCyAAEDshAgwCC0EQQQgQgQUhAQsQvgYhA0EAIQIgAyADQQgQgQVBFEEIEIEFakEQQQgQgQVqa0H4/3tqQXdxQX1qIgNBAEEQQQgQgQVBAnRrIgQgBCADSxsgAWsgAE0NACABQRAgAEEEakEQQQgQgQVBe2ogAEsbQQgQgQUiBGpBEEEIEIEFakF8ahA7IgNFDQAgAxCaBiEAAkACQCABQX9qIgIgA3ENACAAIQEMAQsgAiADakEAIAFrcRCaBiECQRBBCBCBBSEDIAAQ5wUgAkEAIAEgAiAAayADSxtqIgEgAGsiAmshAwJAIAAQxQUNACABIAMQywQgACACEMsEIAAgAhCnAQwBCyAAKAIAIQAgASADNgIEIAEgACACajYCAAsgARDFBQ0BIAEQ5wUiAEEQQQgQgQUgBGpNDQEgASAEEJcGIQIgASAEEMsEIAIgACAEayIAEMsEIAIgABCnAQwBCyACDwsgARCZBiEAIAEQxQUaIAALvgMBBX8jAEHwAWsiAiQAIAJBCGogAUHEABD/BRogAkHQAGogAkEIahBTQQEhAwJAAkACQCACKAJUQQFHDQACQCACQdAAakEIaigCACIBRQ0AIAFB////P3EgAUcNAiABQQV0IgRBAEgNAiAEQQEQmAUiA0UNAwtBACEEIABBADYCCCAAIAM2AgAgAEEEaiABNgIAIAJB0ABqIAJBCGpBxAAQ/wUaIAJBmAFqIAJB0ABqEFMCQCACKAKcAUEBRw0AIABBCGohBQJAIAEgAkGYAWpBCGooAgAiBk8NACAAQQAgBhDQAiAAKAIIIQQgACgCACEDCyACQZgBaiACQdAAakHEABD/BRogAkHoAWogBDYCACACIAU2AuQBIAIgAyAEQQV0ajYC4AEgAkGYAWogAkHgAWoQZCACQfABaiQADwsgAkGsAWpBADYCACACQbzkwAA2AqgBIAJCATcCnAEgAkG05MAANgKYASACQZgBakGA5sAAEJMEAAsgAkGsAWpBADYCACACQbzkwAA2AqgBIAJCATcCnAEgAkG05MAANgKYASACQZgBakGc5cAAEJMEAAsQkgQACyAEQQEQ7wUAC7YDAQF/AkACQAJAAkACQCACRQ0AIAEtAABBMUkNASAGQQRJDQICQAJAIANBEHRBEHUiB0EBSA0AIAUgATYCBEECIQYgBUECOwEAIANB//8DcSIDIAJPDQEgBUECOwEYIAVBAjsBDCAFIAM2AgggBUEgaiACIANrIgI2AgAgBUEcaiABIANqNgIAIAVBFGpBATYCACAFQRBqQfKLwgA2AgBBAyEGIAIgBE8NBiAEIAJrIQQMBQsgBUECOwEYIAVBADsBDCAFQQI2AgggBUHwi8IANgIEIAVBAjsBACAFQSBqIAI2AgAgBUEcaiABNgIAIAVBEGpBACAHayIBNgIAQQMhBiAEIAJNDQUgBCACayICIAFNDQUgAiAHaiEEDAQLIAVBADsBDCAFIAI2AgggBUEQaiADIAJrNgIAIARFDQQgBUECOwEYIAVBIGpBATYCACAFQRxqQfKLwgA2AgAMAwtBrInCAEEhQfiKwgAQhAQAC0GIi8IAQSFBrIvCABCEBAALQbyLwgBBIkHgi8IAEIQEAAsgBUEAOwEkIAVBKGogBDYCAEEEIQYLIAAgBjYCBCAAIAU2AgALjAMDBH8DfgF8IwBBMGsiAiQAAkACQCAAIAGEUEUNAEQAAAAAAAAAACEJDAELQf8AQgAgASAAQgBSrXx9IAEgAUIAUyIDGyIGeUIAIAB9IAAgAxsiAHlCwAB8IAZCAFIbpyIDayEEAkACQCADQcsASQ0AIAJBIGogACAGIANBNWpB/wBxENoDIAIpAyAhAAwBCwJAAkACQEGAASADayIFQUpqDgIAAgELIAZCAYYgAEI/iIQhBiAAQgGGIQAMAQsgAkEQaiAAIAZByQAgA2tB/wBxENsDIAIgACAGIANBN2pB/wBxENoDIAIpAxAgAikDACACQQhqKQMAhEIAUq2EIQAgAkEQakEIaikDACEGCyAAQgKIQgGDIACEIgdCAXwiAEICQgMgAEKAgICAgICAwACDUCIDGyIIiCAGIAAgB1StfEIBhiAIp0E/c62GhCEAIAQgBSADGyEECyAEQf8Haq1CNIYgAUKAgICAgICAgIB/g4QgAEL/////////B4OEvyEJCyACQTBqJAAgCQu6AwEFfyMAQSBrIgMkAAJAAkACQAJAIAJFDQAgAyABQQMQnAECQCADLwEARQ0AIAMoAgQhASAAQQE2AgAgACABNgIEDAQLAkACQAJAIAMvAQIiBA0AIANBADYCCCADIAQ2AgQgA0EBNgIADAELIARBARCYBSIFRQ0DQQAhBiADQQA2AgggAyAENgIEIAMgBTYCACACQX9qIgchAgNAIAJFDQICQCABKAIEIgUNACADQoHKADcDECADQRBqELgEIQEMBgsgASAFQX9qNgIEIAEgASgCACIFQQFqNgIAIAUtAAAhBQJAIAYgAygCBEcNACADIAYQ7gIgAygCCCEGCyADKAIAIAZqIAU6AAAgAyADKAIIQQFqIgY2AgggAkF/aiECIARBf2oiBA0ACwsgACADKQMANwIEIABBADYCACAAQQxqIANBCGooAgA2AgAMBAsgByADQRhqQaC8xgAQsAIhAQwCC0EAIANBGGpBoLzGABCwAiEBIABBATYCACAAIAE2AgQMAgsgBEEBEO8FAAsgAEEBNgIAIAAgATYCBCADKAIEIgFFDQAgAygCACABQQEQuAULIANBIGokAAu/AwECfyMAQYABayIEJAACQAJAAkACQEHEAEEBEJgFIgVFDQAgBUGAAjsAQiAFIAEpAAA3AAAgBSACKQAANwAiIAVBGGogAUEYaikAADcAACAFQRBqIAFBEGopAAA3AAAgBUEIaiABQQhqKQAANwAAIAVBKmogAkEIaikAADcAACAFQTJqIAJBEGopAAA3AAAgBUE6aiACQRhqKQAANwAAIAVBgQI7ACAgBEEIakEIaiADNwMAIARBAjoACBDcBiAEQegAaiAEQQhqELcCIAQoAmgNASAAIAQpAmw3AgwgAEEUaiAEQfQAaigCADYCACAAQTBqQgA3AgAgAEEoakIANwIAIABBIGpCADcCACAAQgA3AhggAEKCgICAIDcCBCAAIAU2AgACQAJAAkACQCAELQAIQX1qDgkABwcHBwcBAgMHCyAEQcwAaiEFDAULIARBzABqIQUMBAsgBEHMAGohBQwDCyAEQSxqIQUMAgtBxABBARDvBQALIAQgBCgCbDYCfEHIqsAAQSsgBEH8AGpB9KrAAEHsrMAAELIDAAsgBUEEaigCACIARQ0AIAUoAgAgAEEBELgFCyAEQYABaiQAC54DAQd/AkACQCABQf//A0sNAAJAIAFB//8DcUH/AEsNACACKAIAIgNBCGooAgAhBCABIQUMAgsgAigCACIDQQhqIgYoAgAhBCADQQRqIQcgASECA0AgAkGAf3IhBSACQYD/A3EhCAJAAkAgBygCACAERg0AIAQhCQwBCyADIARBARDlAiAGKAIAIQkLIAYgCUEBaiIENgIAIAMoAgAgCWogBToAACACQf//A3EhCSAIQQd2IgUhAiAJQYCAAUkNAgwACwtB6ODAAEEWEP0CDwsCQCADQQRqKAIAIARHDQAgAyAEQQEQ5QIgA0EIaigCACEECyADQQhqIgggBEEBaiIJNgIAIAMoAgAgBGogBToAAAJAIAENAEEADwsgACABQQV0aiEHIANB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GGo2AjggAiACQQRqNgIgIAIgAkEIajYCGCABIAJBKGoQyQMhACACKAIMIgFFDQMgAigCCCABQQEQuAUMAwsgAC0AASEAIAJBPGpBATYCACACQgE3AiwgAkHo28EANgIoIAJBlAE2AgwgAiAAQSBzQT9xQQJ0IgBBsO/BAGooAgA2AhwgAiAAQbDxwQBqKAIANgIYIAIgAkEIajYCOCACIAJBGGo2AgggASACQShqEMkDIQAMAgsgAEEEaigCACIAKAIAIAAoAgQgARD6BSEADAELIABBBGooAgAiACgCACABIAAoAgQoAhARBwAhAAsgAkHAAGokACAADwtBFEEBEO8FAAv1AgEHf0EBIQcCQAJAIAJFDQAgASACQQF0aiEIIABBgP4DcUEIdiEJQQAhCiAAQf8BcSELAkADQCABQQJqIQwgCiABLQABIgJqIQ0CQCABLQAAIgEgCUYNACABIAlLDQMgDSEKIAwhASAMIAhHDQEMAwsCQCANIApJDQAgDSAESw0CIAMgCmohAQJAA0AgAkUNASACQX9qIQIgAS0AACEKIAFBAWohASAKIAtHDQALQQAhBwwFCyANIQogDCEBIAwgCEcNAQwDCwsgCiANIAIQ9gUACyANIAQgAhD1BQALIAZFDQAgBSAGaiELIABB//8DcSEBQQEhBwJAA0AgBUEBaiEKAkACQCAFLQAAIgJBGHRBGHUiDUEASA0AIAohBQwBCyAKIAtGDQIgDUH/AHFBCHQgBS0AAXIhAiAFQQJqIQULIAEgAmsiAUEASA0CIAdBAXMhByAFIAtHDQAMAgsLQZCNwgBBK0HQmsIAEIQEAAsgB0EBcQuoAwECfyMAQYABayIDJAACQAJAAkACQEEiQQEQmAUiBEUNACAEQYECOwAgIAQgASkAADcAACAEQRhqIAFBGGopAAA3AAAgBEEQaiABQRBqKQAANwAAIARBCGogAUEIaikAADcAACADQSFqIAJBGGopAAA3AAAgA0EZaiACQRBqKQAANwAAIANBEWogAkEIaikAADcAACADQQE6AAggAyACKQAANwAJENwGIANB6ABqIANBCGoQtwIgAygCaA0BIAAgAykCbDcCDCAAQRRqIANB9ABqKAIANgIAIABBMGpCADcCACAAQShqQgA3AgAgAEEgakIANwIAIABCADcCGCAAQoGAgIAQNwIEIAAgBDYCAAJAAkACQAJAIAMtAAhBfWoOCQAHBwcHBwECAwcLIANBzABqIQAMBQsgA0HMAGohAAwECyADQcwAaiEADAMLIANBLGohAAwCC0EiQQEQ7wUACyADIAMoAmw2AnxByKrAAEErIANB/ABqQfSqwABB7KzAABCyAwALIABBBGooAgAiBEUNACAAKAIAIARBARC4BQsgA0GAAWokAAu2AwIFfwJ+IwBBwABrIgUkAEEBIQYCQCAALQAEDQAgAC0ABSEHAkAgACgCACIIKAIAIglBBHENAEEBIQYgCCgCGEHdj8IAQd+PwgAgB0H/AXEiBxtBAkEDIAcbIAhBHGooAgAoAgwRCgANAUEBIQYgCCgCGCABIAIgCCgCHCgCDBEKAA0BQQEhBiAIKAIYQaiPwgBBAiAIKAIcKAIMEQoADQEgAyAIIAQoAgwRBwAhBgwBCwJAIAdB/wFxDQBBASEGIAgoAhhB2I/CAEEDIAhBHGooAgAoAgwRCgANASAIKAIAIQkLQQEhBiAFQQE6ABcgBUE0akG8j8IANgIAIAVBEGogBUEXajYCACAFIAk2AhggBSAIKQIYNwMIIAgpAgghCiAIKQIQIQsgBSAILQAgOgA4IAUgCCgCBDYCHCAFIAs3AyggBSAKNwMgIAUgBUEIajYCMCAFQQhqIAEgAhCFAQ0AIAVBCGpBqI/CAEECEIUBDQAgAyAFQRhqIAQoAgwRBwANACAFKAIwQduPwgBBAiAFKAI0KAIMEQoAIQYLIABBAToABSAAIAY6AAQgBUHAAGokACAAC6cDAgV/AX4jAEEQayICJAACQAJAAkACQAJAQQAgACgCABEDACIDRQ0AAkAgAygCAA0AIANBfzYCACADKAIEIgBBAkcNAyACEO8BIAIoAgQhACACKAIADQQgAkEIaikDACEHIAMoAgQiBEECRg0CIAMoAgghBQJAAkAgBA0AIAVBI00NBAwBCwJAIAVBJEkNACAFEAMLIAMoAgwiBUEkSQ0DCyAFEAMMAgtB3LLBAEEQIAJBqLPBAEGctMEAELIDAAtBtLHBAEHGACACQZizwQBBzLLBABCyAwALIAMgBzcCCCADIAA2AgQgAEECRg0CCwJAAkAgAA0AIAMoAgggASgCACABKAIEEBcMAQsgASgCBCIARQ0AIANBDGohBiABKAIAIQUDQCACIAZBACAAQYACIABBgAJJGyIBEL8FIgQ2AgAgAygCCCAEEBYgAiAFIAEQnAMgACABayEAAkAgAigCACIEQSRJDQAgBBADCyAFIAFqIQUgAA0ACwtBACEACyADIAMoAgBBAWo2AgAgAkEQaiQAIAAPC0HsssEAQStBrLTBABCEBAAL/wIBCH8jAEHgAWsiAyQAIANBKGpBAEHBABCCBiEEIANBEGpBACkD2N9ANwMAIANBGGpBACkD4N9ANwMAIANBIGpBACkD6N9ANwMAIANCADcDACADQQApA9DfQDcDCAJAIAJBA3QiAkUNACABIAJqIQUgA0EIaiEGIANB6ABqLQAAIQcDQCABKAIAIQgCQAJAIAFBBGooAgAiAkHAACAHQf8BcSIJayIKSQ0AAkAgCUUNACAEIAlqIAggChD/BRogAyADKQMAQgF8NwMAIAYgBEEBENsFIAggCmohCCACIAprIQILIAJBP3EhByAIIAJBQHFqIQkCQCACQT9LDQAgBCAJIAcQ/wUaDAILIAMgAykDACACQQZ2IgKtfDcDACAGIAggAhDbBSAEIAkgBxD/BRoMAQsgBCAJaiAIIAIQ/wUaIAcgAmohBwsgAyAHOgBoIAFBCGoiASAFRw0ACwsgA0HwAGogA0HwABD/BRogACADQfAAahCEASADQeABaiQAC/oCAQN/IwBB0ABrIgQkAAJAAkACQCADRQ0AIAMoAgAiBUF/Rg0BQQEhBiADIAVBAWo2AgAgBEEoaiABIAIgA0EEahCTASAEQSZqIAQtACs6AAAgBEEIakEIaiAEQShqQRBqKQMANwMAIARBCGpBEGogBEEoakEYaikDADcDACAEQQhqQRhqIARByABqKAIANgIAIAQgBC8AKTsBJCAEIARBKGpBCGopAwA3AwggBC0AKCECIAQoAiwhASADIAMoAgBBf2o2AgACQAJAIAJFDQAMAQtBJEEEEJgFIgNFDQNBACEGIANBADYCACADIAQvASQ7AAQgAyABNgAHIAMgBCkDCDcACyADQQZqIARBJmotAAA6AAAgA0ETaiAEQRBqKQMANwAAIANBG2ogBEEYaikDADcAACADQSNqIARBIGotAAA6AABBACEBCyAAIAY2AgggACABNgIEIAAgAzYCACAEQdAAaiQADwsQ4wUACxDkBQALQSRBBBDvBQALzAMCAn8BfkEw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AgghBQJAAkAgA0EKTw0AIAIhAQwBCwNAIAIgAkGAlOvcA24iAUGAlOvcA2xrrUIghiAErYQiByAHQoCU69wDgCIHQoCU69wDfn1CIIYgBa2EQoCU69wDgCIIpyEFIAenIQQgASECIANBd2oiA0EJSw0ACyAIpyEFIAenIQQLAkACQCADQQJ0QZy/wQBqKAIAIgIOAgACAQtB0cXBAEEeQfDFwQAQ0wQACyABIAEgAm4iAyACbGutQiCGIASthCIIIAggAq0iB4AiCCAHfn1CIIYgBa2EIAeApyEFIAinIQQgAyEBCyABDQAgBK1CIIYgBa2EIQdCASEGCyAAIAc3AwggACAGNwMAC/kCAQR/IwBB0ABrIgIkACACQSBqIAAgACgCACgCBBEGAEEBIQMgAkHEAGpBATYCACACQRM2AiwgAkIBNwI0IAJB0JfAADYCMCACIAIpAyA3A0ggAiACQcgAajYCKCACIAJBKGo2AkACQCABIAJBMGoQyQMNAEEAIQMgARCxBUUNACACQRhqIAAgACgCACgCBBEGAEEAIQAgAigCHCEEIAIoAhghBQNAAkACQCAAQQFxRQ0AIAUhACAEIQMMAQsCQCAFDQBBACEDDAMLIAJBEGogBSAEKAIYEQYAIAIoAhQhAyACKAIQIQALAkAgAA0AQQAhAwwCCyACQQhqIAAgAygCGBEGACACKAIMIQQgAigCCCEFIAIgAzYCLCACIAA2AiggAkEBNgJEIAJCATcCNCACQdyXwAA2AjAgAkETNgJMIAIgAkHIAGo2AkAgAiACQShqNgJIAkAgASACQTBqEMkDDQBBASEADAELC0EBIQMLIAJB0ABqJAAgAwvOAgETfiABMQAfIQIgATEAHiEDIAExAB0hBCABMQAcIQUgATEAGiEGIAExABshByABNQAIIQggATEADCEJIAExAAchCiABMwAYIQsgATEAFyEMIAExABYhDSABMQAUIQ4gATEAFSEPIAE1ABAhECABMQAPIREgATEADSESIAExAA4hEyAAIAE1AAAgATEABEIghoQgATEABUIohoQgATEABkIwhoQiFEL/////////B4M3AwAgACAQQhiGIBJCKIYgE0IwhoQgEUI4hoRCKIiEQv////////8HgzcDECAAIAtCJIYgECAOQiCGhCAPQiiGhCANQjCGhCAMQjiGhEIciIQ3AxggACAIIAlCIIaEQgyGIApCOIYgFIRCNIiENwMIIAAgCyAGQhCGhCAHQhiGhCAFQiCGhCAEQiiGhCADQjCGhCACQjiGhEIQiDcDIAuSAwEBfyMAQTBrIgIkAAJAAkACQAJAAkACQAJAIAAoAgAOBgABAgMEBQALIAEgACgCBCAAQQxqKAIAEG8hAAwFCyACQSxqQQA2AgAgAkGsx8EANgIoIAJCATcCHCACQdzJwQA2AhggASACQRhqEMkDIQAMBAsgAkEsakEANgIAIAJBrMfBADYCKCACQgE3AhwgAkGcycEANgIYIAEgAkEYahDJAyEADAMLIAJBLGpBADYCACACQazHwQA2AiggAkIBNwIcIAJB3MjBADYCGCABIAJBGGoQyQMhAAwCCyACIABBBGo2AhQgAkEsakECNgIAIAJBDGpB2wA2AgAgAkICNwIcIAJBkMjBADYCGCACQaDIwQA2AgggAkGGATYCBCACIAI2AiggAiACQRRqNgIAIAEgAkEYahDJAyEADAELIAIgAEEEajYCFCACQSxqQQE2AgAgAkIBNwIcIAJB2MfBADYCGCACQYcBNgIEIAIgAjYCKCACIAJBFGo2AgAgASACQRhqEMkDIQALIAJBMGokACAAC8ECAQh/AkACQCACQQ9LDQAgACEDDAELIABBACAAa0EDcSIEaiEFAkAgBEUNACAAIQMgASEGA0AgAyAGLQAAOgAAIAZBAWohBiADQQFqIgMgBUkNAAsLIAUgAiAEayIHQXxxIghqIQMCQAJAIAEgBGoiCUEDcUUNACAIQQFIDQEgCUEDdCIGQRhxIQIgCUF8cSIKQQRqIQFBACAGa0EYcSEEIAooAgAhBgNAIAUgBiACdiABKAIAIgYgBHRyNgIAIAFBBGohASAFQQRqIgUgA0kNAAwCCwsgCEEBSA0AIAkhAQNAIAUgASgCADYCACABQQRqIQEgBUEEaiIFIANJDQALCyAHQQNxIQIgCSAIaiEBCwJAIAJFDQAgAyACaiEFA0AgAyABLQAAOgAAIAFBAWohASADQQFqIgMgBUkNAAsLIAAL6QIBBX8jAEEwayICJAAgAkIANwMYIAIgAkEoajYCIAJAAkACQAJAAkAgASgCACIDIAEoAggiBCACQRhqEKwDIgUNACACIAIpAxhCA3w3AxggASgCDCABQRRqKAIAIAJBGGoQrQMiBQ0AIAIgAikDGEIgfDcDGCABQRhqKAIAIAFBIGooAgAgAkEYahD4ASIFDQACQAJAIAIoAhgiBQ0AQQEhBgwBCyAFQQBIDQQgBUEBEJgFIgZFDQULIAJBADYCECACIAU2AgwgAiAGNgIIIAIgAkEIajYCGCADIAQgAkEYahDTASIFDQEgAUEMaiACQRhqEPgCIgUNASAAIAIpAwg3AgQgAEEANgIAIABBDGogAkEQaigCADYCAAwCCyAAQQE2AgAgACAFNgIEDAELIABBATYCACAAIAU2AgQgAigCDCIBRQ0AIAIoAgggAUEBELgFCyACQTBqJAAPCxCSBAALIAVBARDvBQAL1QIBAn8jAEHAAGsiBiQAAkACQAJAIABFDQAgACgCACIHQX9GDQEgACAHQQFqNgIAIAFFDQAgASgCACIHQX9GDQEgASAHQQFqNgIAIAVFDQAgBSgCACIHQX9GDQEgBSAHQQFqNgIAIAZBCGogAEEEaiABQQRqIAIgAyAEIAVBBGoQnwEgBSAFKAIAQX9qNgIAAkAgA0UNACACIANBARC4BQsgASABKAIAQX9qNgIAIAAgACgCAEF/ajYCAEE8QQQQmAUiAEUNAiAAQQA2AgAgACAGKQMINwIEIABBDGogBkEQaikDADcCACAAQRRqIAZBGGopAwA3AgAgAEEcaiAGQSBqKQMANwIAIABBJGogBkEoaikDADcCACAAQSxqIAZBMGopAwA3AgAgAEE0aiAGQThqKQMANwIAIAZBwABqJAAgAA8LEOMFAAsQ5AUAC0E8QQQQ7wUAC4MDAQJ/IwBBIGsiAyQAAkACQEHmAEEBEJgFIgRFDQAgBEEBOwBkIAQgASkAADcAACAEIAIpAAA3AEQgBEEYaiABQRhqKQAANwAAIARBEGogAUEQaikAADcAACAEQQhqIAFBCGopAAA3AAAgBEHMAGogAkEIaikAADcAACAEQdQAaiACQRBqKQAANwAAIARB3ABqIAJBGGopAAA3AAAgBEGAAjsAICAEQQA7AEIgBEEAKQDM1kA3ACIgBEEqakEAKQDU1kA3AAAgBEEyakEAKQDc1kA3AAAgBEE6akEAKQDk1kA3AAAQ3AYgA0EIakHw1sAAELcCIAMoAggNASAAIAMpAgw3AgwgAEEUaiADQRRqKAIANgIAIABBMGpCADcCACAAQShqQgA3AgAgAEEgakIANwIAIABCADcCGCAAQoOAgIAwNwIEIAAgBDYCACADQSBqJAAPC0HmAEEBEO8FAAsgAyADKAIMNgIcQciqwABBKyADQRxqQfSqwABB7KzAABCyAwAL0wIBAn8jAEHAAGsiBSQAAkACQAJAIABFDQAgACgCACIGQX9GDQEgACAGQQFqNgIAIAFFDQAgASgCACIGQX9GDQEgASAGQQFqNgIAIARFDQAgBCgCACIGQX9GDQEgBCAGQQFqNgIAIAVBCGogAEEEaiABQQRqIAIgAyAEQQRqEKgBIAQgBCgCAEF/ajYCAAJAIANFDQAgAiADQQEQuAULIAEgASgCAEF/ajYCACAAIAAoAgBBf2o2AgBBPEEEEJgFIgBFDQIgAEEANgIAIAAgBSkDCDcCBCAAQQxqIAVBEGopAwA3AgAgAEEUaiAFQRhqKQMANwIAIABBHGogBUEgaikDADcCACAAQSRqIAVBKGopAwA3AgAgAEEsaiAFQTBqKQMANwIAIABBNGogBUE4aikDADcCACAFQcAAaiQAIAAPCxDjBQALEOQFAAtBPEEEEO8FAAv7AgECfyMAQYABayIDJAACQAJAAkACQEEiQQEQmAUiBEUNACAEQYECOwAgIAQgASkAADcAACAEQRhqIAFBGGopAAA3AAAgBEEQaiABQRBqKQAANwAAIARBCGogAUEIaikAADcAACADQQhqQQhqIAI3AwAgA0EIOgAIENwGIANB6ABqIANBCGoQtwIgAygCaA0BIAAgAykCbDcCDCAAQRRqIANB9ABqKAIANgIAIABBMGpCADcCACAAQShqQgA3AgAgAEEgakIANwIAIABCADcCGCAAQoGAgIAQNwIEIAAgBDYCAAJAAkACQAJAIAMtAAhBfWoOCQAHBwcHBwECAwcLIANBzABqIQAMBQsgA0HMAGohAAwECyADQcwAaiEADAMLIANBLGohAAwCC0EiQQEQ7wUACyADIAMoAmw2AnxByKrAAEErIANB/ABqQfSqwABB7KzAABCyAwALIABBBGooAgAiBEUNACAAKAIAIARBARC4BQsgA0GAAWokAAvSAgIFfwF+IwBBMGsiAyQAQSchBAJAAkAgAEKQzgBaDQAgACEIDAELQSchBANAIANBCWogBGoiBUF8aiAAIABCkM4AgCIIQpDOAH59pyIGQf//A3FB5ABuIgdBAXRBj5DCAGovAAA7AAAgBUF+aiAGIAdB5ABsa0H//wNxQQF0QY+QwgBqLwAAOwAAIARBfGohBCAAQv/B1y9WIQUgCCEAIAUNAAsLAkAgCKciBUHjAE0NACADQQlqIARBfmoiBGogCKciBSAFQf//A3FB5ABuIgVB5ABsa0H//wNxQQF0QY+QwgBqLwAAOwAACwJAAkAgBUEKSQ0AIANBCWogBEF+aiIEaiAFQQF0QY+QwgBqLwAAOwAADAELIANBCWogBEF/aiIEaiAFQTBqOgAACyACIAFByPXBAEEAIANBCWogBGpBJyAEaxByIQQgA0EwaiQAIAQLyQIBA38jAEGAAWsiAiQAAkACQAJAAkACQCABKAIAIgNBEHENACADQSBxDQEgADEAAEEBIAEQhwIhAAwECyAALQAAIQNBACEAA0AgAiAAakH/AGpBMEHXACADQQ9xIgRBCkkbIARqOgAAIABBf2ohACADQf8BcSIEQQR2IQMgBEEPSw0ACyAAQYABaiIDQYEBTw0BIAFBAUGNkMIAQQIgAiAAakGAAWpBACAAaxByIQAMAwsgAC0AACEDQQAhAANAIAIgAGpB/wBqQTBBNyADQQ9xIgRBCkkbIARqOgAAIABBf2ohACADQf8BcSIEQQR2IQMgBEEPSw0ACyAAQYABaiIDQYEBTw0BIAFBAUGNkMIAQQIgAiAAakGAAWpBACAAaxByIQAMAgsgA0GAASAAEPQFAAsgA0GAASAAEPQFAAsgAkGAAWokACAAC7sCAQd/IwBB4AFrIgIkACACIAAgAUHQAGoiAxBQIAJBKGogASAAQdAAaiIEEFAgAkHQAGogAhCiASACQfgAaiACQShqEKIBQQAhBUEBIQYDQCACQfgAaiAFai0AACACQdAAaiAFai0AAHMiB0F/aiAHQX9zcUGAAXFBB3YQhwUgBnEhBiAFQQFqIgVBIEcNAAsgBhCHBSEIIAJB0ABqIABBKGogAxBQIAJB+ABqIAFBKGogBBBQIAJBoAFqIAJB0ABqEKIBIAJBwAFqIAJB+ABqEKIBQQAhBUEBIQYDQCACQcABaiAFai0AACACQaABaiAFai0AAHMiB0F/aiAHQX9zcUGAAXFBB3YQhwUgBnEhBiAFQQFqIgVBIEcNAAsgBhCHBSAIcRCHBSEFIAJB4AFqJAAgBUH/AXFBAUYL0QIBBX8jAEEQayICJAAQHyEDIAEoAgAiBCADECAhASACQQhqEMwEIAIoAgwgASACKAIIIgUbIQECQAJAAkACQAJAIAUNACABEBlBAUYNASAAQQA2AgAgAEEIakECOgAAIAFBJEkNAiABEAMMAgsgAEEBNgIAIAAgATYCBAwBCyABIAQQISEFIAIQzAQCQAJAAkACQAJAIAIoAgANACAFEBpBAUcNAyAFEBsiBBAZIQYgBEEkSQ0BIAQQAyAGQQFGDQIMAwsgAigCBCEFIABBATYCACAAIAU2AgQMAwsgBkEBRw0BCyAAIAU2AgQgAEEANgIAIABBCGpBADoAAAJAIAFBJEkNACABEAMLIANBI0sNAwwECyAAQQA2AgAgAEEIakECOgAAIAVBJEkNACAFEAMLIAFBJEkNACABEAMLIANBI00NAQsgAxADCyACQRBqJAALxQIBA38jAEGAAWsiAiQAAkACQAJAAkACQCABKAIAIgNBEHENACADQSBxDQEgADUCAEEBIAEQhwIhAAwECyAAKAIAIQBBACEDA0AgAiADakH/AGpBMEHXACAAQQ9xIgRBCkkbIARqOgAAIANBf2ohAyAAQQ9LIQQgAEEEdiEAIAQNAAsgA0GAAWoiAEGBAU8NASABQQFBjZDCAEECIAIgA2pBgAFqQQAgA2sQciEADAMLIAAoAgAhAEEAIQMDQCACIANqQf8AakEwQTcgAEEPcSIEQQpJGyAEajoAACADQX9qIQMgAEEPSyEEIABBBHYhACAEDQALIANBgAFqIgBBgQFPDQEgAUEBQY2QwgBBAiACIANqQYABakEAIANrEHIhAAwCCyAAQYABIAAQ9AUACyAAQYABIAAQ9AUACyACQYABaiQAIAALpgMDAn8CfgJ8AkACQAJAAkAgAL0iA0IgiKciAUGAgMAASQ0AIANCAFMNACABQf//v/8HSw0CIANC/////w+DIQNBgXghAiABQYCAwP8DRw0BRAAAAAAAAAAAIQAgA0IAUg0BDAILAkAgA0L///////////8Ag0IAUg0ARAAAAAAAAPC/IAAgAKKjDwsgA0IAUw0CIABEAAAAAAAAUEOivSIEQv////8PgyEDIARCIIinIQFBy3chAgsgAUHiviVqIgFBFHYgAmq3IgVEAADg/kIu5j+iIAFB//8/cUGe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AEEBIQQCQCAALQAEDQAgAC0ABSEEAkACQAJAAkAgACgCACIFKAIAIgZBBHENACAEQf8BcQ0BDAMLIARB/wFxDQFBASEEIAUoAhhB+Y/CAEEBIAVBHGooAgAoAgwRCgANAyAFKAIAIQYMAQtBASEEIAUoAhhB3Y/CAEECIAVBHGooAgAoAgwRCgBFDQEMAgtBASEEIANBAToAFyADQTRqQbyPwgA2AgAgA0EQaiADQRdqNgIAIAMgBjYCGCADIAUpAhg3AwggBSkCCCEHIAUpAhAhCCADIAUtACA6ADggAyAFKAIENgIcIAMgCDcDKCADIAc3AyAgAyADQQhqNgIwIAEgA0EYaiACKAIMEQcADQEgAygCMEHbj8IAQQIgAygCNCgCDBEKACEEDAELIAEgBSACKAIMEQcAIQQLIABBAToABSAAIAQ6AAQgA0HAAGokAAu4AgEDfyMAQdAAayICJAAgAkEoaiABEEsgAkEmaiACLQArOgAAIAJBCGpBCGogAkEoakEQaikDADcDACACQQhqQRBqIAJBKGpBGGopAwA3AwAgAkEIakEYaiACQcgAaigCADYCACACIAIvACk7ASQgAiACQShqQQhqKQMANwMIIAIoAiwhAwJAAkACQCACLQAoRQ0AQQEhBAwBC0EkQQQQmAUiAUUNAUEAIQQgAUEANgIAIAEgAi8BJDsABCABIAM2AAcgASACKQMINwALIAFBBmogAkEmai0AADoAACABQRNqIAJBEGopAwA3AAAgAUEbaiACQRhqKQMANwAAIAFBI2ogAkEgai0AADoAAEEAIQMLIAAgBDYCCCAAIAM2AgQgACABNgIAIAJB0ABqJAAPC0EkQQQQ7wUAC7gCAQN/IwBB0ABrIgIkACACQShqIAEQUSACQSZqIAItACs6AAAgAkEIakEIaiACQShqQRBqKQMANwMAIAJBCGpBEGogAkEoakEYaikDADcDACACQQhqQRhqIAJByABqKAIANgIAIAIgAi8AKTsBJCACIAJBKGpBCGopAwA3AwggAigCLCEDAkACQAJAIAItAChFDQBBASEEDAELQSRBBBCYBSIBRQ0BQQAhBCABQQA2AgAgASACLwEkOwAEIAEgAzYAByABIAIpAwg3AAsgAUEGaiACQSZqLQAAOgAAIAFBE2ogAkEQaikDADcAACABQRtqIAJBGGop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AUEQaikAADcCACACQewAaiABQRhqKQAANwIAIAJB+NjAADYCUCACIAEpAAA3AlQgAiACQcAAajYCOCACQQhqIAJBOGpBOCACQdAAahDEAQJAAkAgAigCCA0AIABBATYCACACQTE2AjwgAkIBNwJUIAJB8N/AADYCUCACIAJBwABqNgI4IAIgAkE4ajYCYCACQRBqIAJB0ABqEMkDIQECQCACKAJEIgBFDQAgAigCQCAAQQEQuAULIAENASACQYABaiQADwtB79rAAEErIAJB+ABqQZzbwABBtNrAABCyAwALQbTdwABBNyACQfgAakH03sAAQbjewAAQsgMAC6MCAgR/An4gACAAKQMAIgcgAq1CA4Z8Igg3AwAgAEEIaiIDIAMpAwAgCCAHVK18NwMAAkACQEGAASAAKAJQIgNrIgQgAksNACAAQRBqIQUCQCADRQ0AIANBgQFPDQIgAEHUAGoiBiADaiABIAQQ/wUaIABBADYCUCAFIAZBARAxIAIgBGshAiABIARqIQELIAUgASACQQd2EDEgAEHUAGogASACQYB/cWogAkH/AHEiAhD/BRogACACNgJQDwsCQAJAIAMgAmoiBCADSQ0AIARBgAFLDQEgAEHQAGogA2pBBGogASACEP8FGiAAIAAoAlAgAmo2AlAPCyADIARBjLDCABD2BQALIARBgAFBjLDCABD1BQALIANBgAFBnLDCABD0BQALnwIBA38jAEHAAGsiAiQAQQAhAwJAAkAgASwAH0EASA0AIAJBGGogAUEYaikAADcDACACQRBqIAFBEGopAAA3AwAgAkEIaiABQQhqKQAANwMAIAIgASkAADcDACACIAItAB9B/wBxOgAfIAJBIGogAhBAQQEhAQNAIAJBIGogA2otAAAgAiADai0AAHMiBEF/aiAEQX9zcUGAAXFBB3YQhwUgAXEhASADQQFqIgNBIEcNAAtBACEDAkAgARCHBUH/AXFBAUcNACAAIAIpAwA3AAEgAEEZaiACQRhqKQMANwAAIABBEWogAkEQaikDADcAACAAQQlqIAJBCGopAwA3AABBASEDCyAAIAM6AAAMAQsgAEEAOgAACyACQcAAaiQAC98CAQF/IwBBEGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAADgkAAQIDBAUGBwgACyACIAFBnLzBAEEC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IAJBEGokACABC4ACAQd/AkACQCAARQ0AIAAoAgANASAAQQA2AgAgACgCBCEBIAAoAgghAiAAKAIQIQMgACgCFCEEIAAoAhwhBSAAKAIgIQYgACgCJCEHIABBzABBBBC4BQJAIAJFDQAgASACQQZ0QQEQuAULAkAgBEUNACADIARBBXRBARC4BQsCQCAHRQ0AIAdBHGwhAiAFIQADQAJAIABBBGooAgAiBEUNACAAKAIAIARBARC4BQsCQCAAQRBqKAIAIgRFDQAgAEEMaigCACAEQQEQuAULIABBHGohACACQWRqIgINAAsLAkAgBkUNACAFIAatQhx+p0EEELgFCw8LEOMFAAsQ5AUAC5YCAQF/IwBBgAFrIgMkACADIAI2AgwgAyABNgIIIANBJGpBAjYCACADQTRqQeIBNgIAIANCAjcCFCADQYi4xgA2AhAgA0HjATYCLCADIAA2AiggAyADQShqNgIgIAMgA0EIajYCMCADQQA2AlAgA0IBNwNIIANB2ABqIANByABqQbC2xgAQvAQCQAJAIANBEGogA0HYAGoQyAMNACADQcMAaiADQcgAakEIaigCADYAACADIAMpA0g3ADtBEEEEEJgFIgBFDQEgAEEIOgAAIAAgAykAODcAASAAQQhqIANBP2opAAA3AAAgA0GAAWokACAADwtByLbGAEE3IANBOGpB3LfGAEHMt8YAELIDAAtBEEEEEO8FAAuCAgEDfyMAQTBrIgIkACACQgA3AxggAiACQShqNgIgAkACQAJAAkACQCABIAJBGGoQpgIiAw0AAkACQCACKAIYIgMNAEEBIQQMAQsgA0EASA0EIANBARCYBSIERQ0FCyACQQA2AhAgAiADNgIMIAIgBDYCCCACIAJBCGo2AhggASACQRhqEEIiAQ0BIABBBGoiASACKQMINwIAIABBADYCACABQQhqIAJBCGpBCGooAgA2AgAMAgsgAEEBNgIAIAAgAzYCBAwBCyAAQQE2AgAgACABNgIEIAIoAgwiAEUNACACKAIIIABBARC4BQsgAkEwaiQADwsQkgQACyADQQEQ7wUAC/QBAQF/IwBBEGsiAiQAIAJBADYCDAJAAkACQAJAIAFBgAFJDQAgAUGAEEkNASABQYCABE8NAiACIAFBP3FBgAFyOgAOIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDIQEMAwsgAiABOgAMQQEhAQwCCyACIAFBP3FBgAFyOgANIAIgAUEGdkHAAXI6AAxBAiEBDAELIAIgAUE/cUGAAXI6AA8gAiABQRJ2QfABcjoADCACIAFBBnZBP3FBgAFyOgAOIAIgAUEMdkE/cUGAAXI6AA1BBCEBCyAAIAJBDGogARCFASEBIAJBEGokACABC/wBAgF/AX4jAEEQayIDJAACQAJAAkAgAkHAAEcNACABLQA/IgJBIEkNAQsgA0EIahCbBiAAQQRqIAMpAwg3AgBBASEBDAELIAAgAS8AADsAASAAQQxqIAEpAAs3AAAgAEEDaiABQQJqLQAAOgAAIABBFGogAUETaikAADcAACAAQRxqIAFBG2opAAA3AAAgAEEkaiABQSNqKQAANwAAIABBLGogAUEraikAADcAACAAQTRqIAFBM2opAAA3AAAgAEE8aiABQTtqKAAANgAAIAEpAAMhBCAAQcAAaiACOgAAIABBBGogBDcAAEEAIQELIAAgAToAACADQRBqJAAL/AECAX8BfiMAQRBrIgMkAAJAAkACQCACQcAARw0AIAEtAD8iAkEgSQ0BCyADQQhqEJsGIABBBGogAykDCDcCAEEBIQEMAQsgACABLwAAOwABIABBDGogASkACzcAACAAQQNqIAFBAmotAAA6AAAgAEEUaiABQRNqKQAANwAAIABBHGogAUEbaikAADcAACAAQSRqIAFBI2opAAA3AAAgAEEsaiABQStqKQAANwAAIABBNGogAUEzaikAADcAACAAQTxqIAFBO2ooAAA2AAAgASkAAyEEIABBwABqIAI6AAAgAEEEaiAENwAAQQAhAQsgACABOgAAIANBEGokAAvyAQEEfyMAQSBrIgQkAAJAAkAgAEUNACAAKAIAIgVBf0YNASAAIAVBAWo2AgAgAUUNACABKAIAIgVBf0YNASABIAVBAWo2AgAgAkUNACACKAIAIgVBf0YNASACIAVBAWo2AgAgBCAAQQRqIAFBBGogAkEEaiADEI0BIAQoAgghBiAEKAIEIQcgBCAEKAIAIgU2AhggBCAHNgIUIAQgBTYCECAEIAUgBkE4bGo2AhwgBEEQahClASEFIAIgAigCAEF/ajYCACABIAEoAgBBf2o2AgAgACAAKAIAQX9qNgIAIARBIGokACAFDwsQ4wUACxDkBQAL9AEBAX8CQAJAAkACQAJAAkACQCABQf8BcQ0AIAMNAQsgA0ECSw0BIAFBgAFxIQQCQCADQQJHDQAgBA0DCyABQf8AcSADQQdsdCACQf//A3FyIgNB//8DSw0DIARFDQQgAEEBOwECIABBBGogAzsBACAAQQA7AQAPCyAAQQRqQQM2AgAMBAsgAEEEakEANgIAIABBCGpBfyADQQFqIgEgASADSRs2AgAgAEEBOwEADwsgAEEEakEENgIADAILIABBCGogAzYCACAAQQRqQQI2AgAMAQsgAEEAOwECIABBBGogAzsBACAAQQA7AQAPCyAAQQE7AQAL+QEBAn8jAEHAAGsiAiQAAkACQAJAIAFFDQAgASgCACIDQX9GDQEgASADQQFqNgIAIAIgAUEIahC0A0HAAEEBEJgFIgNFDQIgAyACKQAANwAAIANBOGogAkE4aikAADcAACADQTBqIAJBMGopAAA3AAAgA0EoaiACQShqKQAANwAAIANBIGogAkEgaikAADcAACADQRhqIAJBGGopAAA3AAAgA0EQaiACQRBqKQAANwAAIANBCGogAkEIaikAADcAACABIAEoAgBBf2o2AgAgAEHAADYCBCAAIAM2AgAgAkHAAGokAA8LEOMFAAsQ5AUAC0HAAEEBEO8FAAvzAQENfyMAQcAAayIBJAACQAJAIABFDQAgACgCACICQX9GDQEgACACQQFqNgIAIABBDGooAgBBBnQhAyAAKAIEIQQgAUE4aiEFIAFBMGohBiABQShqIQcgAUEgaiEIIAFBGGohCSABQRBqIQogAUEIaiELAkADQCADIgxFDQEgBUIANwMAIAZCADcDACAHQgA3AwAgCEIANwMAIAlCADcDACAKQgA3AwAgC0IANwMAIAFCADcDACAMQUBqIQMgBCABQcAAEIEGIQ0gBEHAAGohBCANDQALCyAAIAI2AgAgAUHAAGokACAMRQ8LEOMFAAsQ5AUAC/4BAgF/BH4jAEHwAGsiAyQAIANB4ABqIAEQmgUgA0HQAGogAykDYCIBIANB4ABqQQhqKQMAIgQgAhC1AyADQdAAakEIaikDACECIAMpA1AhBSADQcAAakKQzgAQmgUgA0EwaiAFIAIgAykDQCIGIANBwABqQQhqKQMAIgcQ+wMgA0EgaiADKQMwIANBMGpBCGopAwBCARD+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IAAPCxDjBQALEOQFAAviAQAgAEEAOgAAIABBADoAASAAQQA6AAIgAEEAOgADIABBADoABCAAQQA6AAUgAEEAOgAGIABBADoAByAAQQA6AAggAEEAOgAJIABBADoACiAAQQA6AAsgAEEAOgAMIABBADoADSAAQQA6AA4gAEEAOgAPIABBADoAECAAQQA6ABEgAEEAOgASIABBADoAEyAAQQA6ABQgAEEAOgAVIABBADoAFiAAQQA6ABcgAEEAOgAYIABBADoAGSAAQQA6ABogAEEAOgAbIABBADoAHCAAQQA6AB0gAEEAOgAeIABBADoAHwviAQAgAEEAOgAAIABBADoAASAAQQA6AAIgAEEAOgADIABBADoABCAAQQA6AAUgAEEAOgAGIABBADoAByAAQQA6AAggAEEAOgAJIABBADoACiAAQQA6AAsgAEEAOgAMIABBADoADSAAQQA6AA4gAEEAOgAPIABBADoAECAAQQA6ABEgAEEAOgASIABBADoAEyAAQQA6ABQgAEEAOgAVIABBADoAFiAAQQA6ABcgAEEAOgAYIABBADoAGSAAQQA6ABogAEEAOgAbIABBADoAHCAAQQA6AB0gAEEAOgAeIABBADoAHwvvAQEBfyMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkAgACgCAA4GAAECAwQFAAsgAiABQezKwQBBCxClBCACIABBBGo2AgwgAiACQQxqQfDJwQAQjwIaDAULIAFB0crBAEEbEPoEIQAMBQsgAUG1ysEAQRwQ+gQhAAwECyABQazKwQBBCRD6BCEADAMLIAIgAUGAysEAQRwQpQQgAiAAQQRqNgIMIAIgAkEMakGcysEAEI8CGgwBCyACIAFB5MnBAEEMEKUEIAIgAEEEajYCDCACIAJBDGpB8MnBABCPAhoLIAIQoAMhAAsgAkEQaiQAIAALxgEBBH8jAEEgayIBJAACQAJAAkAgAEUNACAAKAIAQX9GDQEgAUEYaiICIABBN2opAAA3AwAgAUEQaiIDIABBL2opAAA3AwAgAUEIaiIEIABBJ2opAAA3AwAgASAAQR9qKQAANwMAQSRBBBCYBSIARQ0CIABBADYCACAAIAEpAwA3AAQgAEEMaiAEKQMANwAAIABBFGogAykDADcAACAAQRxqIAIpAwA3AAAgAUEgaiQAIAAPCxDjBQALEOQF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BAALwAEBAn8jAEEgayIDJAACQCABIAJqIgIgAUkNACAAQQRqKAIAIgRBAXQiASACIAEgAksbIgFBCCABQQhLGyEBAkACQCAEDQBBACECDAELIAMgBDYCFCADIAAoAgA2AhBBASECCyADIAI2AhggAyABQQEgA0EQahCFAwJAIAMoAgBFDQAgA0EIaigCACIARQ0BIAMoAgQgABDvBQALIAMoAgQhAiAAQQRqIAE2AgAgACACNgIAIANBIGokAA8LEJIEAAvAAQEDfyMAQSBrIgIkAAJAIAFBAWoiAyABSQ0AIABBBGooAgAiBEEBdCIBIAMgASADSxsiAUEIIAFBCEsbIQECQAJAIAQNAEEAIQMMAQsgAiAENgIUIAIgACgCADYCEEEBIQMLIAIgAzYCGCACIAFBASACQRBqEIUDAkAgAigCAEUNACACQQhqKAIAIgBFDQEgAigCBCAAEO8FAAsgAigCBCEDIABBBGogATYCACAAIAM2AgAgAkEgaiQADwsQkgQAC8ABAQN/IwBBIGsiAiQAAkAgAUEBaiIDIAFJDQAgAEEEaigCACIEQQF0IgEgAyABIANLGyIBQQggAUEISxshAQJAAkAgBA0AQQAhAwwBCyACIAQ2AhQgAiAAKAIANgIQQQEhAwsgAiADNgIYIAIgAUEBIAJBEGoQigMCQCACKAIARQ0AIAJBCGooAgAiAEUNASACKAIEIAAQ7wUACyACKAIEIQMgAEEEaiABNgIAIAAgAzYCACACQSBqJAAPCxCSBAALwAEBAn8jAEEgayIDJAACQCABIAJqIgIgAUkNACAAQQRqKAIAIgRBAXQiASACIAEgAksbIgFBCCABQQhLGyEBAkACQCAEDQBBACECDAELIAMgBDYCFCADIAAoAgA2AhBBASECCyADIAI2AhggAyABQQEgA0EQahCKAwJAIAMoAgBFDQAgA0EIaigCACIARQ0BIAMoAgQgABDvBQALIAMoAgQhAiAAQQRqIAE2AgAgACACNgIAIANBIGokAA8LEJIEAAvAAQEEfwJAAkAgAEUNACAAKAIADQEgAEEANgIAIAAoAgQhASAAKAIIIQIgACgCDCEDIABBEEEEELgFAkAgA0UNACADQThsIQMgASEAA0ACQCAAQQRqKAIAIgRFDQAgACgCACAErUIifqdBARC4BQsCQCAAQRBqKAIA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BkJ2fiAHfEIghkIKgCAGQiCGfEIBfCIHPgIAIAFBBGogB0IgiD4CAAsgACACNgIEIAAgAzYCAAu5AQEBfyMAQdAAayICJAAgAkEANgIgIAJCATcDGCACQShqIAJBGGpBsLbGABC8BAJAAkAgACABIAJBKGoQ+gUNACACQRNqIAJBGGpBCGooAgA2AAAgAiACKQMYNwALQRBBBBCYBSIARQ0BIABBCDoAACAAIAIpAAg3AAEgAEEIaiACQQ9qKQAANwAAIAJB0ABqJAAgAA8LQci2xgBBNyACQQhqQdy3xgBBzLfGABCyAwALQRBBBBDvBQALuwECAX8BfiMAQcAAayICJAAgAkEIakEIaiAAQQhqKQIANwMAIAIgACkCADcDCCACQRhqQQhqIAFBCGopAgA3AwAgAiABKQIANwMYIAJBKGogAkEIaiACQRhqEDgCQCACKAIoIgFFDQACQAJAIAFBf2oOAgABAAtBtMHBAEETQcjBwQAQ0wQAC0GUwcEAQRBBpMHBABDTBAALIAIpAiwhAyAAIAJBNGopAgA3AgggACADNwIAIAJBwABqJAALxAEBAX8jAEEgayICJAACQAJAAkACQCAALQAADgMAAQIACyACQRxqQQA2AgAgAkHgm8AANgIYIAJCATcCDCACQeScwAA2AgggASACQQhqEMkDIQAMAgsgAkEcakEANgIAIAJB4JvAADYCGCACQgE3AgwgAkGsnMAANgIIIAEgAkEIahDJAyEADAELIAJBHGpBADYCACACQeCbwAA2AhggAkIBNwIMIAJB+JvAADYCCCABIAJBCGoQyQMhAAsgAkEgaiQAIAALrgEBBH8jAEEgayICJAACQAJAIABBBGooAgAiAyABSQ0AAkAgA0UNACAAKAIAIQQCQAJAIAENAEEBIQUgBCADQQEQuAUMAQsgBCADQQEgARCEBSIFRQ0DCyAAIAU2AgAgAEEEaiABNgIACyACQSBqJAAPCyACQRxqQQA2AgAgAkHwp8QANgIYIAJCATcCDCACQeCoxAA2AgggAkEIakHoqMQAEJMEAAsgAUEBEO8FAAu0AQICfwF+IwBBIGsiAiQAENwGIAJBEGogARCCAgJAIAIoAhANACACQQhqIAJBHGooAgAiATYCACACIAIpAhQiBDcDACACQRBqQQhqIAE2AgAgAiAENwMQAkAgAigC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AAsgAEEBOgAAC4YBAQJ/IwBBEGsiBCQAAkACQCADRQ0AIAMoAgAiBUF/Rg0BIAMgBUEBajYCACAEQQhqIAEgAiADQQRqEG4gBCgCDCEBIAQoAgghAiADIAMoAgBBf2o2AgAgACACQQBHNgIIIAAgAUEAIAIbNgIEIAAgATYCACAEQRBqJAAPCxDjBQALEOQFAAuXAQEBfyMAQSBrIgIkACACQQhqIAEQTwJAAkACQCACKAIIDQAgASgCAEEASA0BIAEoAggNAiABKAIMDQIgASgCBA0CQeTDwQBBH0GExMEAENMEAAsgACACKQIMNwIAIABBCGogAkEUaikCADcCACACQSBqJAAPC0Gow8EAQStB1MPBABDTBAALQZTEwQBBLEHAxMEAENMEAAudAQAgAEHUAGpBAEGAARCCBhogAEIANwMIIABCADcDACAAQQA2AlAgAEHIAGpBACkDgOpANwMAIABBwABqQQApA/jpQDcDACAAQThqQQApA/DpQDcDACAAQTBqQQApA+jpQDcDACAAQShqQQApA+DpQDcDACAAQSBqQQApA9jpQDcDACAAQRhqQQApA9DpQDcDACAAQQApA8jpQDcDEAuOAQEBfyMAQeAAayIDJAAgAyABIAIQogUgAyADKQMANwMIIANBEGogA0EIakHonsYAQQtBhJ/GAEECEK8BAkACQCADKAIQDQAgAygCFCEBIABBCGogA0EQakEIakHEABD/BRogACABNgIEQQAhAQwBCyAAIAMoAhQ2AgRBASEBCyAAIAE2AgAgA0HgAGokAAtuAQZ+IAAgA0L/////D4MiBSABQv////8PgyIGfiIHIAUgAUIgiCIIfiIJIANCIIgiCiAGfnwiBUIghnwiBjcDACAAIAogCH4gBSAJVK1CIIYgBUIgiIR8IAYgB1StfCAEIAF+IAMgAn58fDcDCAt8ACAAIAEpAAA3AAAgAEE4aiABQThqKQAANwAAIABBMGogAUEwaikAADcAACAAQShqIAFBKGopAAA3AAAgAEEgaiABQSBqKQAANwAAIABBGGogAUEYaikAADcAACAAQRBqIAFBEGopAAA3AAAgAEEIaiABQQhqKQAANwAAC4EBAgJ/AX4CQCABQf//A0sNACACKQMAIQUCQCABQf//A3FBgAFJDQAgASEDA0AgBUIBfCEFIANB//8DcSIEQQd2IQMgBEGAgAFPDQALCyACIAVCAXw3AwACQCABRQ0AIAIgBSABQQV0QWBqrXxCIXw3AwALQQAPC0Ho4MAAQRYQ/QILggECAn8BfgJAIAFB//8DSw0AIAIpAwAhBQJAIAFB//8DcUGAAUkNACABIQMDQCAFQgF8IQUgA0H//wNxIgRBB3YhAyAEQYCAAU8NAAsLIAIgBUIBfDcDAAJAIAFFDQAgAiAFIAFBBnRBQGqtfELBAHw3AwALQQAPC0GcusYAQRYQ/wILgQECAn8BfgJAIAFB//8DSw0AIAIpAwAhBQJAIAFB//8DcUGAAUkNACABIQMDQCAFQgF8IQUgA0H//wNxIgRBB3YhAyAEQYCAAU8NAAsLIAIgBUIBfDcDAAJAIAFFDQAgAiAFIAFBBXRBYGqtfEIhfDcDAAtBAA8LQZy6xgBBFhD/AguFAQECfyMAQTBrIgIkAEEBIQMCQCABQeawwgBBDxD6BA0AAkAgACgCAA0AQQAhAwwBCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQfiwwgA2AhAgAkHHATYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDJAyEDCyACQTBqJAAgAwt6AQZ/IAEoAgAiAkEIaiIDKAIAIQFBACEEIAJBBGohBQNAIAAgBGotAAAhBgJAAkAgBSgCACABRg0AIAEhBwwBCyACIAFBARDlAiADKAIAIQcLIAMgB0EBaiIBNgIAIAIoAgAgB2ogBjoAACAEQQFqIgRBIEcNAAtBAAt4AgJ/AX4jAEHQAWsiASQAAkACQCAARQ0AIAAoAgAiAkF/Rg0BIAAgAkEBajYCACABQbABaiAAQQRqQSAQ6wMgAUEIaiABQbABahB8IAEpAwghAyAAIAAoAgBBf2o2AgAgAUHQAWokACADQgFRDwsQ4wUACxDkBQALegIBfwF+IwBBEGsiAyQAAkAgAkEcSw0AIABBADYCBCAAIAEgAUI/hyIEfCAEhSIEPgIIIAAgAkEQdCICQYCAgIB4ciACIAFCAFMbNgIAIAAgBEIgiD4CDCADQRBqJAAPCyADIAI2AgQgA0EENgIAIANB/L7BABCDBAALgQEBAX8jAEHAAGsiBSQAIAUgATYCDCAFIAA2AgggBSADNgIUIAUgAjYCECAFQSxqQQI2AgAgBUE8akG5ATYCACAFQgI3AhwgBUGsj8IANgIYIAVBswE2AjQgBSAFQTBqNgIoIAUgBUEQajYCOCAFIAVBCGo2AjAgBUEYaiAEEJMEAAuFAQECfyAALQAEIQECQCAALQAFRQ0AIAFB/wFxIQJBASEBAkAgAg0AAkAgACgCACIBLQAAQQRxDQAgASgCGEHzj8IAQQIgAUEcaigCACgCDBEKACEBDAELIAEoAhhB5Y/CAEEBIAFBHGooAgAoAgwRCgAhAQsgACABOgAECyABQf8BcUEARwt+ACAAIAEpAMABNwAAIAAgASkAoAE3ACAgAEEYaiABQdgBaikAADcAACAAQRBqIAFB0AFqKQAANwAAIABBCGogAUHIAWopAAA3AAAgAEEoaiABQagBaikAADcAACAAQTBqIAFBsAFqKQAANwAAIABBOGogAUG4AWopAAA3AAALeAEBfyMAQSBrIgQkACAEIAJCACADQgAQqQMgBEEQaiABQgAgA0IAEKkDAkAgBCkDCEIAUiAEQRhqKQMAIgMgBCkDAHwiASADVHJBAUcNAEHMmcAAQStBtJvAABCEBAALIAAgBCkDEDcDACAAIAE3AwggBEEgaiQAC3EBAn8CQAJAIABFDQAgACgCACICQX9GDQEgACACQQFqNgIAIAFFDQAgASgCACICQX9GDQEgASACQQFqNgIAIABBBGogAUEEakEgEIEGIQMgASACNgIAIAAgACgCAEF/ajYCACADRQ8LEOMFAAsQ5AUAC3EBAn8CQAJAIABFDQAgACgCACICQX9GDQEgACACQQFqNgIAIAFFDQAgASgCACICQX9GDQEgASACQQFqNgIAIABBBGogAUEEakEgEIEGIQMgASACNgIAIAAgACgCAEF/ajYCACADRQ8LEOMFAAsQ5AUAC30BAX8jAEHAAGsiAyQAIAMgATYCDCADIAA2AgggAyACOgAXIANBLGpBAjYCACADQTxqQf8ANgIAIANCAjcCHCADQbS8wQA2AhggA0GAATYCNCADIANBMGo2AiggAyADQRdqNgI4IAMgA0EIajYCMCADQRhqQZy9wQAQkwQAC3MBAX8jAEEQayICJAACQAJAIAFFDQAgASgCAA0BIAFBADYCACACQQhqIAFBCGopAgA3AwAgAiABKQIANwMAIAAgAikCBDcCACAAQQhqIAJBDGooAgA2AgAgAUEQQQQQuAUg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AwggACADIAJBCGoQlgEhASACQSBqJAAgAQtvAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EcakECNgIAIANBLGpB2wA2AgAgA0IDNwIMIANB5JTCADYCCCADQdsANgIkIAMgA0EgajYCGCADIAM2AiggAyADQQRqNgIgIANBCGogAhCTBAALaAICfwF+IwBBEGsiAiQAAkACQCABRQ0AIAEoAgAiA0F/Rg0BIAEgA0EBajYCACACQQhqIAFBBGoQgwMgAikDCCEEIAEgASgCAEF/ajYCACAAIAQ3AwAgAkEQaiQADwsQ4wUACxDkBQALaQEBfyMAQSBrIgUkACAFIAI2AgQgBSABNgIAIAVBCGpBEGogA0EQaikCADcDACAFQQhqQQhqIANBCGopAgA3AwAgBSADKQIANwMIIAAgBUGotsEAIAVBBGpBqLbBACAFQQhqIAQQ2gEAC28BAX8jAEEgayICJAAgAkHw28EANgIEIAIgADYCACACQQhqQRBqIAFBEGopAgA3AwAgAkEIakEIaiABQQhqKQIANwMAIAIgASkCADcDCEEAIAJB0NnBACACQQRqQdDZwQAgAkEIakGw7cEAENoBAAtsAQF/IwBBIGsiAyQAIANB8OPBADYCBCADIAA2AgAgA0EIakEQaiABQRBqKQIANwMAIANBCGpBCGogAUEIaikCADcDACADIAEpAgA3AwhBACADQeDZwQAgA0EEakHg2cEAIANBCGogAhDaAQALbAEBfyMAQSBrIgMkACADIAE2AgQgAyAANgIAIANBCGpBEGogAkEQaikCADcDACADQQhqQQhqIAJBCGopAgA3AwAgAyACKQIANwMIQQAgA0GMjsIAIANBBGpBjI7CACADQQhqQZj2wQAQ2gEAC2QBAX8jAEEgayICJAAgAiAAKAIANgIEIAJBCGpBEGogAUEQaikCADcDACACQQhqQQhqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBmM7AACACQQhqEJYBIQEgAkEgaiQAIAELZAEBfyMAQSBrIgIkACACIAAoAgA2AgQgAkEIakEQaiABQRBqKQIANwMAIAJBCGpBCGogAUEIaikCADcDACACIAEpAgA3AwggAkEEakHk58AAIAJBCGoQlgEhASACQSBqJAAgAQtkAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQQhqQRBqIAFBEGopAgA3AwAgAkEIakEIaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQbDYwQAgAkEIahCWASEBIAJBIGokACABC20BAX8jAEEwayICJAACQEEALQCIv0ZFDQAgAkEcakEBNgIAIAJCAjcCDCACQfzkwQA2AgggAkHbADYCJCACIAA2AiwgAiACQSBqNgIYIAIgAkEsajYCICACQQhqQaTlwQAQkwQACyACQTBqJAALZAEBfyMAQSBrIgIkACACIAAoAgA2AgQgAkEIakEQaiABQRBqKQIANwMAIAJBCGpBCGogAUEIaikCADcDACACIAEpAgA3AwggAkEEakGw88EAIAJBCGoQlgEhASACQSBqJAAgAQtkAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQQhqQRBqIAFBEGopAgA3AwAgAkEIakEIaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQdiRwgAgAkEIahCWASEBIAJBIGokACABC2QBAX8jAEEgayICJAAgAiAAKAIANgIEIAJBCGpBEGogAUEQaikCADcDACACQQhqQQhqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBsL7GACACQQhqEJYBIQEgAkEgaiQAIAELYQEBfyMAQSBrIgIkACACIAA2AgQgAkEIakEQaiABQRBqKQIANwMAIAJBCGpBCGogAUEIaikCADcDACACIAEpAgA3AwggAkEEakGYzsAAIAJBCGoQlgEhASACQSBqJAAgAQthAQF/IwBBIGsiAiQAIAIgADYCBCACQQhqQRBqIAFBEGopAgA3AwAgAkEIakEIaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQeTnwAAgAkEIahCWASEBIAJBIGokACABC2EBAX8jAEEgayICJAAgAiAANgIEIAJBCGpBEGogAUEQaikCADcDACACQQhqQQhqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpB2JHCACACQQhqEJYBIQEgAkEgaiQAIAELVwEBfgJAAkAgA0HAAHENACADRQ0BIAIgA0E/ca0iBIYgAUEAIANrQT9xrYiEIQIgASAEhiEBDAELIAEgA0E/ca2GIQJCACEBCyAAIAE3AwAgACACNwMIC1cBAX4CQAJAIANBwABxDQAgA0UNASACQQAgA2tBP3GthiABIANBP3GtIgSIhCEBIAIgBIghAgwBCyACIANBP3GtiCEBQgAhAgsgACABNwMAIAAgAjcDCAthAQF/IwBBIGsiAiQAIAIgADYCBCACQQhqQRBqIAFBEGopAgA3AwAgAkEIakEIaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQbC+xgAgAkEIahCWASEBIAJBIGokACABC2oBAX8jAEEgayICJAAQ3AYgAkEIaiABEL8BAkAgAigCCEUNACACIAIoAgw2AhxBl53AAEErIAJBHGpBxJ3AAEGEn8AAELIDAAsgACACKQIMNwIAIABBCGogAkEUaigCADYCACACQSBqJAALcQECfyMAQRBrIgIkACAAKAIAIgAtAAAhAyAAQQA6AAACQAJAIANBAXFFDQBBAUGU48AAEPsCQQMQmAQNASACQRBqJAAPC0HI3sAAQStBjN3AABCEBAALQYTfwABBKyACQQhqQbDfwABBkOTAABCyAwALcQECfyMAQRBrIgIkACAAKAIAIgAtAAAhAyAAQQA6AAACQAJAIANBAXFFDQBBAUGU48AAEPsCQQMQmAQNASACQRBqJAAPC0HI3sAAQStBjN3AABCEBAALQYTfwABBKyACQQhqQbDfwABBkOTAABCyAwALXwACQAJAAkAgAiABQSBqQSAQgQZFDQAgAiABQcAAakEgEIEGRQ0BIABCATcCBCAAQQE2AgAPCyABQYEJaiEBDAELIAFBgglqIQELIABBCGogATEAADcDACAAQQA2AgALagEBfyMAQRBrIgIkACACIAFBuPXBAEENEL0EIAIgADYCDCACQZz1wQBBBSACQQxqQYz1wQAQ3wEaIAIgAEEMajYCDCACQaH1wQBBBSACQQxqQaj1wQAQ3wEaIAIQswMhACACQRBqJAAgAAtgAQF/IwBBMGsiAiQAIAIgADYCDCACQSRqQQE2AgAgAkIBNwIUIAJBrL3BADYCECACQYEBNgIsIAIgAkEoajYCICACIAJBDGo2AiggASACQRBqEMkDIQEgAkEwaiQAIAELXwECf0EAIQJBBCEDAkAgAUEFSQ0AIAEhAwJAAkAgAUF7ag4CAgEACyABQXlqIQFBASECQQYhAwwBC0EAIQFBASECQQUhAwsgACACNgIEIAAgAzYCACAAQQhqIAE2AgALXQEBfwJA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QfS/xgAQxAZFDQAgARCaBhDFBQ0BCyABQQAgABCCBhoLIAELNAAgACgCACEAAkAgARCyBQ0AAkAgARCzBQ0AIAAgARDOBQ8LIAAgARCOAw8LIAAgARCNAws0ACAAIAEoAhggAiADIAFBHGooAgAoAgwRCgA6AAggACABNgIAIAAgA0U6AAkgAEEANgIECzQAIAAoAgAhAAJAIAEQsgUNAAJAIAEQswUNACAAIAEQygUPCyAAIAEQkgMPCyAAIAEQkQMLNAAgACgCACEAAkAgARCyBQ0AAkAgARCzBQ0AIAAgARDOBQ8LIAAgARCOAw8LIAAgARCNAwsuAAJAAkAgAEUNACAAKAIADQEgAEEANgIAIABBEGogATcDAA8LEOMFAAsQ5AUACy4AAkACQCAARQ0AIAAoAgANASAAQQA2AgAgAEEYaiABNwMADwsQ4wUACxDkBQALLgACQAJAIABFDQAgACgCAA0BIABBADYCACAAQSBqIAE5AwAPCxDjBQALEOQFAAsuAAJAAkAgAEUNACAAKAIADQEgAEEANgIAIABBKGogATkDAA8LEOMFAAsQ5AUACy4AAkACQCAARQ0AIAAoAgANASAAQQA2AgAgAEEwaiABOQMADwsQ4wUACxDkBQALLgACQAJAIABFDQAgACgCAA0BIABBADYCACAAQThqIAE5AwAPCxDjBQALEOQFAAsvAAJAAkAgAEUNACAAKAIADQEgAEEANgIAIABBwABqIAE2AgAPCxDjBQALEOQFAAs7AQF/IAAoAgAiAC0AACECIABBADoAAAJAIAJBAXENAEHgjsAAQStB0I7AABCEBAALQQFB2I3AABD7Ags7AQF/IAAoAgAiAC0AACECIABBADoAAAJAIAJBAXENAEHgjsAAQStB0I7AABCEBAALQQFB2I3AABD7Ags5AQF/IAAoAgAhAQJAIAAtAAQNAEEAKALwv0ZB/////wdxRQ0AENkEDQAgAUEBOgABCyABQQA6AAALLgACQAJAIABFDQAgACgCAA0BIABBADYCACAAQcgAQQgQuAUPCxDjBQALEOQFAAstAQF/AkAgACgCAEF/akEESQ0AIABBCGooAgAiAUUNACAAKAIEIAFBARC4BQsLLwEBfyMAQRBrIgMkACADIAE2AgwgAyAANgIIIANBCGpBtIzAAEEAIAJBARDLAgALLQEB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KAIQETEACyQAAkAgAA0AQbi2wQBBMBDiBQALIAAgAiADIAQgASgCEBEMAAskAAJAIAANAEG4tsEAQTAQ4gUACyAAIAIgAyAEIAEoAhARCwALJAACQCAADQBBuLbBAEEwEOIFAAsgACACIAMgBCABKAIQEQwACyQAAkAgAA0AQbi2wQBBMBDiBQALIAAgAiADIAQgASgCEBELAAskAAJAIAANAEG4tsEAQTAQ4gUACyAAIAIgAyAEIAEoAhARLwALHgAgACABQQNyNgIEIAAgAWoiACAAKAIEQQFyNgIECyABAX8CQCAAQQRqKAIAIgFFDQAgACgCACABQQEQuAULCyABAX8CQCAAQQRqKAIAIgFFDQAgACgCACABQQEQuAULCyABAX8CQCAAQQRqKAIAIgFFDQAgACgCACABQQEQuAULCyABAX8CQCAAQQRqKAIAIgFFDQAgACgCACABQQEQuAULCyIAAkAgAA0AQbi2wQBBMBDiBQALIAAgAiADIAEoAhARCQALIAEBfwJAIABBBGooAgAiAUUNACAAKAIAIAFBARC4BQsLIwACQCAALQAADQAgAUG0ksIAQQUQbw8LIAFBsJLCAEEEEG8LIAEBfwJAIABBBGooAgAiAUUNACAAKAIAIAFBARC4BQsLIAEBfwJAIABBBGooAgAiAUUNACAAKAIAIAFBARC4BQsLIQACQCABKAIADQAQuwYACyAAQYyPwAA2AgQgACABNgIACxwAIAAgASkCADcCACAAQQhqIAFBCGooAgA2AgALIAACQCAADQBBuLbBAEEwEOIFAAsgACACIAEoAhARBwALIQACQCABKAIADQAQuwYACyAAQazHwQA2AgQgACABNgIACyUBAX9BpL/GACEBAkBBACgCoL9GDQBBoL/GACAAEKwCIQELIAELHAEBfwJAIAAoAhAiAQ0AIABBFGooAgAhAQsgAQsUACABIAEgACAAIAFjGyAAIABiGwsbAQF/IAAgAUEAKALgv0YiAkGVASACGxEGAAALEgBBAEEZIABBAXZrIABBH0YbCxYAIAAgAUEBcjYCBCAAIAFqIAE2AgALGgAgACgCACAAKAIEIAAoAgggACgCDBCvBQALHAAgASgCGEHAjMIAQQ4gAUEcaigCACgCDBEKAAsZACAAKAIYIAEgAiAAQRxqKAIAKAIMEQoACxwAIAEoAhhB9KfCAEEFIAFBHGooAgAoAgwRCgALIQAgAL1CgICAgICAgICAf4NC/////////+8/hL8gAKCdCxgAIAAoAgAiACgCACAAQQRqKAIAIAEQcAsZACAAKAIAIgAoAgAgASAAKAIEKAIMEQcACxsAAkAgAA0AQdjYwQBBK0Gs5sEAEIQEAAsgAAsYAAJAIAANAEHY2MEAQSsgARCEBAALIAALEAAgACABakF/akEAIAFrcQsZACAAKAIAIgAoAgAgASAAKAIEKAIQEQcACxUAIAAoAgAgACgCBCAAKAIIELQEAAsTAQF/IAAgASACIAMQeSEEIAQPCxUAIAAoAgAiACgCACAAKAIIIAEQcAsWACAAKAIAIgAoAgAgACgCCCABEPoFCxUBAX8jAEEQayIBIAA6AA8gAS0ADwsVACAAKAIAIgAoAgAgACgCCCABEHALFQAgACgCACIAKAIAIAAoAgggARBwCxYAIAAoAgAiACgCACAAKAIIIAEQ+gULFQAgACgCACAAKAIEIAAoAggQugQACxMAAkAgAUUNACAAIAFBBBC4BQsLEwAgACgCACAAQQhqKAIAIAEQcAsUACAAKAIAIABBCGooAgAgARD6BQsVACAAKAIAIAAoAgQgACgCCBCjAwALDwAgAEEBdCIAQQAgAGtyCxUAIAEgACgCACIAKAIAIAAoAgQQbwsUACAAQSA2AgQgACABQaABajYCAAsVACAAKAIAIgAoAgAgACgCCCABEHALFAAgACgCACABIAAoAgQoAhARBwALFAAgACgCACIAIAAoAgAoAgARAgALFAAgACgCACABIAAoAgQoAhARBwALFAAgACgCACABIAAoAgQoAgwRBwALEAEBfyAAIAEQlgYhAiACDwsQAQF/IAAgARCjBCECIAIPCxAAIABCADcDCCAAIAE3AwALEQAgACgCACAAKAIIIAEQ+gULEAAgAEEgNgIEIAAgATYCAAsRACAAKAIAIAAoAgggARD6BQsTACAAQSg2AgQgAEGcq8EANgIACxAAIAAoAgAgACgCBCABEHALDAAgAEEGIABBBkkbCxEAIAAoAgAgACgCBCABEPoFCxAAIAAgAjYCBCAAIAE2AgALEQAgACgCACAAKAIEIAEQ+gULEQAgASAAKAIAIAAoAgQQ+gQLEAAgACgCACAAKAIEIAEQcAsRACAAKAIAIAAoAgggARD6BQsUAEEAIAA2Ati/RkEAQQE6ANS/RgsQACAAKAIAIAAoAgQgARBwCxEAIAAoAgAgACgCBCABEPoFCw8AIAAoAgAgARD7ARpBAAsTACAAQczmwQA2AgQgACABNgIACw0AIAAtAARBAnFBAXYLDwAgACAAKAIEQX5xNgIECw0AIAAoAgRBA3FBAUcLDQAgACABIAIgAxBaAAsQACABIAAoAgAgACgCBBBvCw0AIAAtAABBBHFBAnYLDQAgAC0AAEEQcUEEdgsNACAALQAAQSBxQQV2CxEAIABBwAA2AgQgACABNgIACxEAIAAoAgAgACgCBCABEPoFCxMAIABBKDYCBCAAQbCywgA2AgALEQAgACgCACAAKAIEIAEQwwULDAAgACABIAIQqAYPCw8AIAEoAgBBACgCuL9GTQsMACAAIAEgAiADEEcLDQAgACgCACABIAIQIwsMACAAKAIAECRBAEcLDgAgACgCACABKAIAECULDAAgACgCABArQQBHCw0AIAAoAgAgASACEC0LDAAgACABIAJBABBGCw0AIAAgASACQQAQlwELDQAgACABIAJBARCXAQsOACAAIAIgASgCDBEHAAsKAEEAIABrIABxCwsAIAAtAARBA3FFCwwAIAAgAUEDcjYCBAsNACAAKAIAIAAoAgRqCw4AIAAoAgAgARD8AUEACw0AIAAoAgAaA38MAAsLDgAgADUCAEEBIAEQhwILDAAgACABIAIQ1wQACw0AIAAgASACEJcCIAALDgAgACgCACABIAIQhQELDgAgADEAAEEBIAEQhwILDgAgACkDAEEBIAEQhwILCwAgACMAaiQAIwALDAAgACgCACABEIEDCwwAIAAoAgAgARDKBQsMACAAKAIAIAEQ4gMLCgAgACABEPAFDwsMACAAKAIAIAEQ/gELDAAgACgCACABEKUCCwwAIAAoAgAgARCRAwsMACAAKAIAIAEQyAMLCgAgACACIAEQTQsOACABQby0wQBBDhD6BAsKACAAIAEgAhAyCw0AIAFB6LbBAEECEG8LDAAgACgCACABEJUGCwwAIAAoAgAgARDcAQsMACAAKAIAIAEQzQILDAAgACgCACABEMwCCwwAIAAoAgAgARDKBQsJACAAIAEQLwALDQBBxNfBAEEbEOIFAAsOAEHf18EAQc8AEOIFAAsMACAAKAIAIAEQsAELDAAgACgCACABEOsECwoAIAAoAgRBeHELCgAgACgCBEEBcQsKACAAKAIMQQFxCwoAIAAoAgxBAXYLDAAgACgCACABEM0CCwoAIAAgARDtBQALCgAgACABEO4FAAsKACAAIAEQ1AUACwoAIAAgARDsBQALCgAgACABEPUEAAsKACAAIAEQxAMACwoAIAAgARDFAwALCgAgACABEMYDAAsKACAAIAEQ9wUACwoAIAAgARD5BQALCgAgACABEPgFAAsKACAAIAEQ8QUACwoAIAAgARDyBQALCgAgACABEPMFAAsKACACIAAgARBvCwwAIAAoAgAgARCLAgsNACABQbmSwgBBAhBvCwwAIAAoAgAgARCIAgsMACAAKAIAIAEQtAELCwAgACABIAIQgQILCwAgACABIAIQiAELCwAgACABIAIQ+AMLCwAgACABIAIQ8gILDAAgACgCACABEM4FCw4AIAFB4JvGAEEVEPoECwsAIAAoAgAgARB9CwsAIAAoAgAgARBBCw4AIAFB95zGAEETEPoECw4AIAFBsKHGAEETEPoECwwAIAAoAgAgARCbAQsMACAAKAIAIAEQpQILDgAgAUGAvMYAQR4Q+gQLCQAgACgCABAICwkAIAAoAgAQCQsJACAAKAIAEAoLCQAgACgCABALCwkAIAAoAgAQDAsJACAAQQA2AgALCQAgAEEANgIACwkAIAAoAgAQJgsJACAAIAEQ2AELCQAgACABEMcBCwkAIAAgARDLAQsHACAAIAFqCwcAIAAgAWsLBwAgAEEIagsHACAAQXhqCwkAIABBADYCAAsJACAAQQA2AgALBwAgARDIAQsHACABEMgBCwcAIAEQyAELBwAgACkDAAsIABDcBkHQAAsHACABEMgBCwcAIAEQyAELBwAgARDIAQsGACAAECILBgAgABAsCwYAELsGAAsGACAAEF4LBwAgACgCDAsHACAAKAIICwcAIAAoAggLBwAgACgCDAsHACAALQAQCwcAIAAQowELBwAgABCMAgsNAEKL5OeV8riP17h/CwQAIAALBAAgAAsMAEKXh+Sj16GA5ywLBABBAAsEABAYCwQAQQALDQBCi+TnlfK4j9e4fwsEABAwCwwAQo/05MKc7pTNbwsNAEKL5OeV8riP17h/CwMAAAsDAAALBABBBwsEAEEICwQAIAALBABBAAsEAEEACwQAQQALBABBAAsEAEEBCwYAQYCABAsNAEK0r6rI5Z+Hvu8ACwwAQvrw/IfC1u/qGQsEAEEACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwuXv4aAAAIAQYCAwAAL9L4GRGl2aXNpb24gYnkgemVyby9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ydXN0X2RlY2ltYWwtMS4yMy4xL3NyYy9hcml0aG1ldGljX2ltcGxzLnJzEAAQAGgAAADbAAAALQAAAERpdmlzaW9uIG92ZXJmbG93ZWQAEAAQAGgAAADaAAAALAAAAE11bHRpcGxpY2F0aW9uIG92ZXJmbG93ZWQAAAAQABAAaAAAAOgAAAASAAAAU3VidHJhY3Rpb24gb3ZlcmZsb3dlZAAAEAAQAGgAAAADAQAAEgAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWVjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAAABAAAAAAAAAAEAAAACAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3J1c3RfZGVjaW1hbC0xLjIzLjEvc3JjL2RlY2ltYWwucnMAaAEQAF8AAAABBwAAAQAAAAAAAAAAAAAAAQAAAAAAAABzcmMvcGFpci5ycwDoARAACwAAAEIAAAAiAAAA6AEQAAsAAABLAAAAWAAAAAAAAAAAAAAAAAAAAAAAAABBZGRpdGlvbiBvdmVyZmxvd2VkL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3J1c3RfZGVjaW1hbC0xLjIzLjEvc3JjL2FyaXRobWV0aWNfaW1wbHMucnMANwIQAGgAAAChAAAAEgAAAERpdmlzaW9uIGJ5IHplcm83AhAAaAAAANsAAAAtAAAARGl2aXNpb24gb3ZlcmZsb3dlZAA3AhAAaAAAANoAAAAsAAAATXVsdGlwbGljYXRpb24gb3ZlcmZsb3dlZAAAADcCEABoAAAA6AAAABIAAABTdWJ0cmFjdGlvbiBvdmVyZmxvd2VkAAA3AhAAaAAAAAMBAAASAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vay0wLjEuNy9zcmMvbGliLnJzAABIAxAAZgAAAJUAAAAOAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZS9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ydXN0X2RlY2ltYWwtMS4yMy4xL3NyYy9kZWNpbWFsLnJzAADrAxAAXwAAAAEHAAABAAAAc3JjL2xpYi5ycwAAXAQQAAoAAABVAAAAKAAAAFwEEAAKAAAAVgAAACkAAABcBBAACgAAAFcAAAAnAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcBBAACgAAAIgAAAA8AAAAXAQQAAoAAACQAAAANQAAAFwEEAAKAAAAkQAAADcAAABcBBAACgAAAJIAAAAtAAAAaW5kZXggb3V0IG9mIGJvdW5kAAD4BBAAEgAAAHNyYy9zdmVjLnJzABQFEAALAAAANQAAAAoAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAABAAAABAAAAAEAAAABQAAAC9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ydXN0X2RlY2ltYWwtMS4yMy4xL3NyYy9kZWNpbWFsLnJzAJgFEABfAAAABAcAAAEAAABzcmMvc3NsLnJzAAAIBhAACgAAACgAAAArAAAACAYQAAoAAAA2AAAAJgAAAAYAAAAIAAAABAAAAAcAAAAIAAAASAYQAAAAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlL2hvbWUvdWJ1bnR1L3Byb2plY3RzL2dmeC1zc2wvZ2Z4LXNvbGFuYS1jb21tb24vc3JjL2ZlZS5ycwAAAHsGEAA6AAAAHQAAABoAAAB7BhAAOgAAAB8AAAASAAAACQAAAAAAAAABAAAACgAAAAsAAAAMAAAACQAAAAQAAAAEAAAADQAAAA4AAAAvcnVzdGMvYTgzMTRlZjdkMGVjN2I3NWMzMzZhZjJjOTg1N2JmYWY0MzAwMmJmYy9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlLnJzBAcQAEwAAAAUAQAAMgAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUACQAAAAgAAAAEAAAADwAAAEFkZGl0aW9uIG92ZXJmbG93ZWQvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvcnVzdF9kZWNpbWFsLTEuMjMuMS9zcmMvYXJpdGhtZXRpY19pbXBscy5ycwCvBxAAaAAAAKEAAAASAAAARGl2aXNpb24gYnkgemVyb68HEABoAAAA2wAAAC0AAABEaXZpc2lvbiBvdmVyZmxvd2VkAK8HEABoAAAA2gAAACwAAABNdWx0aXBsaWNhdGlvbiBvdmVyZmxvd2VkAAAArwcQAGgAAADoAAAAEgAAAFN1YnRyYWN0aW9uIG92ZXJmbG93ZWQAAK8HEABoAAAAAwEAABIAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlAAAAAAAAAAAAAAAAAAAAAABhc3NlcnRpb24gZmFpbGVkOiB4X2luID4gRGVjaW1hbDo6WkVST3NyYy9tYXRoL2N1cnZlcy5ycyIJEAASAAAAHQAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiB4MCA+IERlY2ltYWw6OlpFUk8iCRAAEgAAAB4AAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogeTAgPiBEZWNpbWFsOjpaRVJPIgkQABIAAAAfAAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IHd4MCA+IERlY2ltYWw6OlpFUk8AAAAiCRAAEgAAACAAAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogd3kwID4gRGVjaW1hbDo6WkVSTwAAACIJEAASAAAAIQAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBwID4gRGVjaW1hbDo6WkVSTwAiCRAAEgAAACIAAAAFAAAAIgkQABIAAAAkAAAAHQAAACIJEAASAAAAJQAAAB0AAAAiCRAAEgAAACYAAAAZAAAAIgkQABIAAAAoAAAAGQAAACIJEAASAAAAUgAAABsAAAAiCRAAEgAAAFcAAAAZAAAAIgkQABIAAABdAAAAMAAAACIJEAASAAAAewAAACoAAAAiCRAAEgAAAKAAAAArAAAAIgkQABIAAACgAAAAOwAAAAAAAAAAAAAAAQAAAAAAAABweXRoOiAAAAALEAAGAAAAYnl0ZW11Y2s6IAAAEAsQAAoAAABUaGUgbGVuZ3RoIG9mIHRoZSBwdWJrZXkgaXMgbm90IDMyOiBnb3QgJAsQACgAAABUaGVyZSB3YXMgYW4gb3ZlcmZsb3cgZXJyb3IAVAsQABsAAABUaGUgc3dhcCBpcyBzdXNwZW5kZWQAAAB4CxAAFQAAAE9yYWNsZSBub3QgZm91bmSYCxAAEAAAAE1pc3NpbmcgcmVxdWlyZWQgb3JhY2xlALALEAAXAAAA0AsQAAAAAAA6IAAA2AsQAAIAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAAFAAAABAAAAAEAAAABQAAAC9ob21lL3VidW50dS9wcm9qZWN0cy9nZngtc3NsL2dmeC1zb2xhbmEtY29tbW9uL3NyYy9kZWNpbWFsLnJzAABMDBAAPgAAABYAAAAYAAAATAwQAD4AAAAXAAAAFAAAAEwMEAA+AAAAHQAAABgAAABMDBAAPgAAAB4AAAAUAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZWNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAABUAAAAAAAAAAQAAAAIAAAAvaG9tZS91YnVudHUvcHJvamVjdHMvZ2Z4LXNzbC9nZngtc29sYW5hLWNvbW1vbi9zcmMvc2FmZV9tYXRoLnJzNA0QAEAAAAA/AAAAGAAAADQNEABAAAAAUwAAACgAAAA0DRAAQAAAAGsAAAAoAAAANA0QAEAAAABzAAAALgAAADQNEABAAAAAiwAAAC4AAAA0DRAAQAAAAJsAAAAoAAAAZnJvbV9ieXRlcwAASW5jb3JyZWN0IGFjY291bnQgdHlwZQAA4A0QABYAAABJbmNvcnJlY3QgdmVyc2lvbiBudW1iZXIgZm9yIFB5dGggYWNjb3VudAAAAAAOEAApAAAARmFpbGVkIHRvIGNvbnZlcnQgYWNjb3VudCBpbnRvIGEgUHl0aCBhY2NvdW50AAAANA4QAC0AAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAAFgAAAAQAAAAEAAAAFwAAAC9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9zb2xhbmEtcHJvZ3JhbS0xLjEwLjM4L3NyYy9tZXNzYWdlL2xlZ2FjeS5ycwAAANQOEABpAAAAMAAAACgAAABvdmVyZmxvdyB3aGVuIGNvbXBpbGluZyBtZXNzYWdlIGtleXPUDhAAaQAAACgBAAAOAAAA1A4QAGkAAADUAQAAIgAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWVhc3NlcnRpb24gZmFpbGVkOiBpZHggPCBDQVBBQ0lUWS9ydXN0Yy9hODMxNGVmN2QwZWM3Yjc1YzMzNmFmMmM5ODU3YmZhZjQzMDAyYmZjL2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL25vZGUucnNhc3NlcnRpb24gZmFpbGVkOiBlZGdlLmhlaWdodCA9PSBzZWxmLmhlaWdodCAtIDEAAN8PEABbAAAAgAIAAAkAAADfDxAAWwAAAIQCAAAJAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogAACMEBAAKgAAAGVtcHR5IGludGVybmFsIG5vZGUAwBAQABMAAADfDxAAWwAAAL8EAAAfAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5oZWlnaHQgPiAwAAAA3w8QAFsAAABGAgAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNyYy5sZW4oKSA9PSBkc3QubGVuKCnfDxAAWwAAALYGAAAFAAAA3w8QAFsAAABGBAAAFgAAAN8PEABbAAAAgwQAABYAAABhc3NlcnRpb24gZmFpbGVkOiBlZGdlLmhlaWdodCA9PSBzZWxmLm5vZGUuaGVpZ2h0IC0gMQAAAN8PEABbAAAAnwMAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBvbGRfcmlnaHRfbGVuICsgY291bnQgPD0gQ0FQQUNJVFkA3w8QAFsAAABnBQAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IG9sZF9sZWZ0X2xlbiA+PSBjb3VudADfDxAAWwAAAGgFAAANAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZd8PEABbAAAAlwUAABYAAABhc3NlcnRpb24gZmFpbGVkOiBvbGRfbGVmdF9sZW4gKyBjb3VudCA8PSBDQVBBQ0lUWQAA3w8QAFsAAACmBQAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IG9sZF9yaWdodF9sZW4gPj0gY291bnTfDxAAWwAAAKcFAAANAAAA3w8QAFsAAADXBQAAFgAAAGFzc2VydGlvbiBmYWlsZWQ6IG1hdGNoIHRyYWNrX2VkZ2VfaWR4IHtcbiAgICBMZWZ0T3JSaWdodDo6TGVmdChpZHgpID0+IGlkeCA8PSBvbGRfbGVmdF9sZW4sXG4gICAgTGVmdE9yUmlnaHQ6OlJpZ2h0KGlkeCkgPT4gaWR4IDw9IHJpZ2h0X2xlbixcbn0AAADfDxAAWwAAADkFAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogbmV3X2xlZnRfbGVuIDw9IENBUEFDSVRZAADfDxAAWwAAAPMEAAAJAAAAL3J1c3RjL2E4MzE0ZWY3ZDBlYzdiNzVjMzM2YWYyYzk4NTdiZmFmNDMwMDJiZmMvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnMA4BMQAF8AAAA/AgAAVgAAAOATEABfAAAA/wEAAC8AAAAbAAAADAAAAAQAAAAcAAAAHQAAAB4AAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L3J1c3RjL2E4MzE0ZWY3ZDBlYzdiNzVjMzM2YWYyYzk4NTdiZmFmNDMwMDJiZmMvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAACvFBAASwAAALEJAAAOAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZQAfAAAAAAAAAAEAAAAgAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAhAAAABAAAAAQAAAAXAAAAL3J1c3RjL2E4MzE0ZWY3ZDBlYzdiNzVjMzM2YWYyYzk4NTdiZmFmNDMwMDJiZmMvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbWFwL2VudHJ5LnJzhBUQAGAAAABRAQAAMgAAAIQVEABgAAAACwIAACoAAAAvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvc29sYW5hLXByb2dyYW0tMS4xMC4zOC9zcmMvaW5zdHJ1Y3Rpb24ucnMAAAQWEABmAAAAuAEAACQAAABBY3RpdmVWb3RlQWNjb3VudENsb3NlTWF4QWNjb3VudHNEYXRhU2l6ZUV4Y2VlZGVkSWxsZWdhbE93bmVyVW5zdXBwb3J0ZWRTeXN2YXJBcml0aG1ldGljT3ZlcmZsb3dJbnZhbGlkQWNjb3VudE93bmVyQWNjb3VudE5vdFJlbnRFeGVtcHRCb3JzaElvRXJyb3IAHwAAAAQAAAAEAAAAIgAAAEluY29ycmVjdEF1dGhvcml0eUltbXV0YWJsZVByb2dyYW1GYWlsZWRUb0NvbXBpbGVQcm9ncmFtRmFpbGVkVG9Db21wbGV0ZVByb2dyYW1FbnZpcm9ubWVudFNldHVwRmFpbHVyZVByaXZpbGVnZUVzY2FsYXRpb25Db21wdXRhdGlvbmFsQnVkZ2V0RXhjZWVkZWRJbnZhbGlkUmVhbGxvY0ludmFsaWRTZWVkc01heFNlZWRMZW5ndGhFeGNlZWRlZFJlZW50cmFuY3lOb3RBbGxvd2VkTWlzc2luZ0FjY291bnRDYWxsRGVwdGhVbnN1cHBvcnRlZFByb2dyYW1JZEV4ZWN1dGFibGVBY2NvdW50Tm90UmVudEV4ZW1wdEV4ZWN1dGFibGVMYW1wb3J0Q2hhbmdlRXhlY3V0YWJsZURhdGFNb2RpZmllZEludmFsaWRFcnJvckN1c3RvbQAfAAAABAAAAAQAAAAjAAAARHVwbGljYXRlQWNjb3VudE91dE9mU3luY0FjY291bnRCb3Jyb3dPdXRzdGFuZGluZ0FjY291bnRCb3Jyb3dGYWlsZWRBY2NvdW50Tm90RXhlY3V0YWJsZUFjY291bnREYXRhU2l6ZUNoYW5nZWROb3RFbm91Z2hBY2NvdW50S2V5c1JlbnRFcG9jaE1vZGlmaWVkRXhlY3V0YWJsZU1vZGlmaWVkRHVwbGljYXRlQWNjb3VudEluZGV4UmVhZG9ubHlEYXRhTW9kaWZpZWRSZWFkb25seUxhbXBvcnRDaGFuZ2VFeHRlcm5hbEFjY291bnREYXRhTW9kaWZpZWRFeHRlcm5hbEFjY291bnRMYW1wb3J0U3BlbmRNb2RpZmllZFByb2dyYW1JZFVuYmFsYW5jZWRJbnN0cnVjdGlvblVuaW5pdGlhbGl6ZWRBY2NvdW50QWNjb3VudEFscmVhZHlJbml0aWFsaXplZE1pc3NpbmdSZXF1aXJlZFNpZ25hdHVyZUluY29ycmVjdFByb2dyYW1JZEluc3VmZmljaWVudEZ1bmRzQWNjb3VudERhdGFUb29TbWFsbEludmFsaWRBY2NvdW50RGF0YUludmFsaWRJbnN0cnVjdGlvbkRhdGFJbnZhbGlkQXJndW1lbnRHZW5lcmljRXJyb3JDYW5ub3QgY2xvc2Ugdm90ZSBhY2NvdW50IHVubGVzcyBpdCBzdG9wcGVkIHZvdGluZyBhdCBsZWFzdCBvbmUgZnVsbCBlcG9jaCBhZ28AjRoQAE4AAABBY2NvdW50IGRhdGEgYWxsb2NhdGlvbiBleGNlZWRlZCB0aGUgbWF4aW11bSBhY2NvdW50cyBkYXRhIHNpemUgbGltaXQAAADkGhAARQAAAFByb3ZpZGVkIG93bmVyIGlzIG5vdCBhbGxvd2VkAAAANBsQAB0AAABVbnN1cHBvcnRlZCBzeXN2YXIAAFwbEAASAAAAUHJvZ3JhbSBhcml0aG1ldGljIG92ZXJmbG93ZWQAAAB4GxAAHQAAAEludmFsaWQgYWNjb3VudCBvd25lcgAAAKAbEAAVAAAAQW4gYWNjb3VudCBkb2VzIG5vdCBoYXZlIGVub3VnaCBsYW1wb3J0cyB0byBiZSByZW50LWV4ZW1wdAAAwBsQADoAAABGYWlsZWQgdG8gc2VyaWFsaXplIG9yIGRlc2VyaWFsaXplIGFjY291bnQgZGF0YTogAAAABBwQADEAAABJbmNvcnJlY3QgYXV0aG9yaXR5IHByb3ZpZGVkQBwQABwAAABBY2NvdW50IGlzIGltbXV0YWJsZWQcEAAUAAAAUHJvZ3JhbSBmYWlsZWQgdG8gY29tcGlsZQAAAIAcEAAZAAAAUHJvZ3JhbSBmYWlsZWQgdG8gY29tcGxldGUAAKQcEAAaAAAARmFpbGVkIHRvIGNyZWF0ZSBwcm9ncmFtIGV4ZWN1dGlvbiBlbnZpcm9ubWVudAAAyBwQAC4AAABDcm9zcy1wcm9ncmFtIGludm9jYXRpb24gd2l0aCB1bmF1dGhvcml6ZWQgc2lnbmVyIG9yIHdyaXRhYmxlIGFjY291bnQAAAAAHRAARQAAAENvbXB1dGF0aW9uYWwgYnVkZ2V0IGV4Y2VlZGVkAAAAUB0QAB0AAABGYWlsZWQgdG8gcmVhbGxvY2F0ZSBhY2NvdW50IGRhdGEAAAB4HRAAIQAAAFByb3ZpZGVkIHNlZWRzIGRvIG5vdCByZXN1bHQgaW4gYSB2YWxpZCBhZGRyZXNzAKQdEAAvAAAATGVuZ3RoIG9mIHRoZSBzZWVkIGlzIHRvbyBsb25nIGZvciBhZGRyZXNzIGdlbmVyYXRpb24AAADcHRAANQAAAENyb3NzLXByb2dyYW0gaW52b2NhdGlvbiByZWVudHJhbmN5IG5vdCBhbGxvd2VkIGZvciB0aGlzIGluc3RydWN0aW9uHB4QAEQAAABBbiBhY2NvdW50IHJlcXVpcmVkIGJ5IHRoZSBpbnN0cnVjdGlvbiBpcyBtaXNzaW5nAAAAaB4QADEAAABDcm9zcy1wcm9ncmFtIGludm9jYXRpb24gY2FsbCBkZXB0aCB0b28gZGVlcKQeEAAsAAAAVW5zdXBwb3J0ZWQgcHJvZ3JhbSBpZAAA2B4QABYAAABleGVjdXRhYmxlIGFjY291bnRzIG11c3QgYmUgcmVudCBleGVtcHQA+B4QACcAAABpbnN0cnVjdGlvbiBjaGFuZ2VkIHRoZSBiYWxhbmNlIG9mIGEgZXhlY3V0YWJsZSBhY2NvdW50ACgfEAA3AAAAaW5zdHJ1Y3Rpb24gY2hhbmdlZCBleGVjdXRhYmxlIGFjY291bnRzIGRhdGFoHxAALAAAAHByb2dyYW0gcmV0dXJuZWQgaW52YWxpZCBlcnJvciBjb2RlAJwfEAAjAAAAY3VzdG9tIHByb2dyYW0gZXJyb3I6IAAAyB8QABYAAAAAAAAAIAAAAAQAAAACAAAAAAAAAAIAAAAAAAAAAwAAAGluc3RydWN0aW9uIG1vZGlmaWNhdGlvbnMgb2YgbXVsdGlwbHktcGFzc2VkIGFjY291bnQgZGlmZmVyAAggEAA7AAAAaW5zdHJ1Y3Rpb24gbGVmdCBhY2NvdW50IHdpdGggYW4gb3V0c3RhbmRpbmcgYm9ycm93ZWQgcmVmZXJlbmNlAEwgEAA/AAAAaW5zdHJ1Y3Rpb24gdHJpZXMgdG8gYm9ycm93IHJlZmVyZW5jZSBmb3IgYW4gYWNjb3VudCB3aGljaCBpcyBhbHJlYWR5IGJvcnJvd2VkAACUIBAATgAAAGluc3RydWN0aW9uIGV4cGVjdGVkIGFuIGV4ZWN1dGFibGUgYWNjb3VudAAA7CAQACoAAABwcm9ncmFtIG90aGVyIHRoYW4gdGhlIGFjY291bnQncyBvd25lciBjaGFuZ2VkIHRoZSBzaXplIG9mIHRoZSBhY2NvdW50IGRhdGEAICEQAEsAAABpbnN1ZmZpY2llbnQgYWNjb3VudCBrZXlzIGZvciBpbnN0cnVjdGlvbgAAAHQhEAApAAAAaW5zdHJ1Y3Rpb24gbW9kaWZpZWQgcmVudCBlcG9jaCBvZiBhbiBhY2NvdW50AAAAqCEQAC0AAABpbnN0cnVjdGlvbiBjaGFuZ2VkIGV4ZWN1dGFibGUgYml0IG9mIGFuIGFjY291bnTgIRAAMAAAAGluc3RydWN0aW9uIGNvbnRhaW5zIGR1cGxpY2F0ZSBhY2NvdW50cwAYIhAAJwAAAGluc3RydWN0aW9uIG1vZGlmaWVkIGRhdGEgb2YgYSByZWFkLW9ubHkgYWNjb3VudEgiEAAwAAAAaW5zdHJ1Y3Rpb24gY2hhbmdlZCB0aGUgYmFsYW5jZSBvZiBhIHJlYWQtb25seSBhY2NvdW50AACAIhAANgAAAGluc3RydWN0aW9uIG1vZGlmaWVkIGRhdGEgb2YgYW4gYWNjb3VudCBpdCBkb2VzIG5vdCBvd24AwCIQADcAAABpbnN0cnVjdGlvbiBzcGVudCBmcm9tIHRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQgaXQgZG9lcyBub3Qgb3duACMQAEAAAABpbnN0cnVjdGlvbiBpbGxlZ2FsbHkgbW9kaWZpZWQgdGhlIHByb2dyYW0gaWQgb2YgYW4gYWNjb3VudABIIxAAOwAAAHN1bSBvZiBhY2NvdW50IGJhbGFuY2VzIGJlZm9yZSBhbmQgYWZ0ZXIgaW5zdHJ1Y3Rpb24gZG8gbm90IG1hdGNoAAAAjCMQAEEAAABpbnN0cnVjdGlvbiByZXF1aXJlcyBhbiBpbml0aWFsaXplZCBhY2NvdW50ANgjEAArAAAAaW5zdHJ1Y3Rpb24gcmVxdWlyZXMgYW4gdW5pbml0aWFsaXplZCBhY2NvdW50AAAADCQQAC0AAABtaXNzaW5nIHJlcXVpcmVkIHNpZ25hdHVyZSBmb3IgaW5zdHJ1Y3Rpb24AAEQkEAAqAAAAaW5jb3JyZWN0IHByb2dyYW0gaWQgZm9yIGluc3RydWN0aW9ueCQQACQAAABpbnN1ZmZpY2llbnQgZnVuZHMgZm9yIGluc3RydWN0aW9uAACkJBAAIgAAAGFjY291bnQgZGF0YSB0b28gc21hbGwgZm9yIGluc3RydWN0aW9uAADQJBAAJgAAAGludmFsaWQgYWNjb3VudCBkYXRhIGZvciBpbnN0cnVjdGlvbgAlEAAkAAAAaW52YWxpZCBpbnN0cnVjdGlvbiBkYXRhLCUQABgAAABpbnZhbGlkIHByb2dyYW0gYXJndW1lbnRMJRAAGAAAAGdlbmVyaWMgaW5zdHJ1Y3Rpb24gZXJyb3IAAABsJRAAGQAAAAan1RcZLFxRIYzJTD1K8X9Y2u4Im6H9ROPb2YoAAAAAMTIzNDU2Nzg5QUJDREVGR0hKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamttbm9wcXJzdHV2d3h5ev////////////////////////////////////////////////////////////////8AAQIDBAUGBwj/////////CQoLDA0ODxD/ERITFBX/FhcYGRobHB0eHyD///////8hIiMkJSYnKCkqK/8sLS4vMDEyMzQ1Njc4Of//////AAAmAAAADAAAAAQAAAAnAAAAKAAAAB4AAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L3J1c3RjL2E4MzE0ZWY3ZDBlYzdiNzVjMzM2YWYyYzk4NTdiZmFmNDMwMDJiZmMvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAAC7JhAASwAAALEJAAAOAAAAKQAAAAQAAAAEAAAAKgAAACsAAAAsAAAAKQAAAAAAAAABAAAAIAAAACkAAAAAAAAAAQAAAC0AAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlACYAAAAUAAAABAAAAC4AAAAvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYnM1OC0wLjQuMC9zcmMvZW5jb2RlLnJzAAAAjCcQAFUAAABRAAAAKwAAAAAAAABn5glqha5nu3Lzbjw69U+lf1IOUYxoBZur2YMfGc3gWy9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9zb2xhbmEtcHJvZ3JhbS0xLjEwLjM4L3NyYy9wdWJrZXkucnNTbGljZSBtdXN0IGJlIHRoZSBzYW1lIGxlbmd0aCBhcyBhIFB1YmtleQAAGCgQAGEAAACHAAAAEgAAAFByb2dyYW1EZXJpdmVkQWRkcmVzc1VuYWJsZSB0byBmaW5kIGEgdmlhYmxlIHByb2dyYW0gYWRkcmVzcyBidW1wIHNlZWQAAMkoEAAxAAAAGCgQAGEAAAC0AQAAIAAAADAnEAAAAAAASW52YWxpZCBBcnJheSBvZiBVaW50OEFycmF5c1Byb3ZpZGVkIG93bmVyIGlzIG5vdCBhbGxvd2VkAAAAOCkQAB0AAABQcm92aWRlZCBzZWVkcyBkbyBub3QgcmVzdWx0IGluIGEgdmFsaWQgYWRkcmVzcwBgKRAALwAAAExlbmd0aCBvZiB0aGUgc2VlZCBpcyB0b28gbG9uZyBmb3IgYWRkcmVzcyBnZW5lcmF0aW9uAAAAmCkQADUAAABJbnZhbGlkIEJhc2U1OCBzdHJpbmcAAADYKRAAFQAAAFN0cmluZyBpcyB0aGUgd3Jvbmcgc2l6ZfgpEAAYAAAAVW5zdXBwb3J0ZWQgYXJndW1lbnQvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvc29sYW5hLXByb2dyYW0tMS4xMC4zOC9zcmMvd2FzbS9wdWJrZXkucnNhcnJheSB0byBiZSBpdGVyYWJsZQAALCoQAGYAAAAoAAAAPwAAAEludmFsaWQgYXJyYXkgYXJndW1lbnQ6ILgqEAAYAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3NvbGFuYS1wcm9ncmFtLTEuMTAuMzgvc3JjL3dhc20vbW9kLnJzANgqEABjAAAAEAAAAAoAAAAGp9UXGSxWjuCKhF9z0peIzwNcMUWyGrNE2AYuqUAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYnM1OC0wLjQuMC9zcmMvZW5jb2RlLnJzAAAA0CsQAFUAAABVAQAAGgAAANArEABVAAAAXgEAAA0AAADQKxAAVQAAAGgBAAAJAAAA0CsQAFUAAABsAQAAFQAAANArEABVAAAAbQEAABAAAAAxMjM0NTY3ODlBQkNERUZHSEpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa21ub3BxcnN0dXZ3eHl6/////////////////////////////////////////////////////////////////wABAgMEBQYHCP////////8JCgsMDQ4PEP8REhMUFf8WFxgZGhscHR4fIP///////yEiIyQlJicoKSor/ywtLi8wMTIzNDU2Nzg5//////8AANArEABVAAAA5gAAACAAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAALwAAAAAAAAABAAAAMAAAAC9ydXN0Yy9hODMxNGVmN2QwZWM3Yjc1YzMzNmFmMmM5ODU3YmZhZjQzMDAyYmZjL2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL25hdmlnYXRlLnJzAKwtEABfAAAAuAAAACcAAACsLRAAXwAAAJQAAAAkAAAAMgAAAAQAAAAEAAAAMwAAADQAAAAvcnVzdGMvYTgzMTRlZjdkMGVjN2I3NWMzMzZhZjJjOTg1N2JmYWY0MzAwMmJmYy9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlLnJzQC4QAEwAAAAUAQAAMgAAADUAAAAMAAAABAAAADYAAAA3AAAAHgAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvcnVzdGMvYTgzMTRlZjdkMGVjN2I3NWMzMzZhZjJjOTg1N2JmYWY0MzAwMmJmYy9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAAOsuEABLAAAAsQkAAA4AAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlADIAAAAAAAAAAQAAACAAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlADIAAAAAAAAAAQAAADgAAAAyAAAAAAAAAAEAAAAtAAAAZ+YJaoWuZ7ty8248OvVPpX9SDlGMaAWbq9mDHxnN4FtILxAAAAAAAC9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9zb2xhbmEtcHJvZ3JhbS0xLjEwLjM4L3NyYy9oYXNoLnJzAPgvEABfAAAAaAAAADcAAABsZW5ndGggbGFyZ2VyIHRoYW4gdTE2ZmFpbGVkIHRvIGRlY29kZWQgc3RyaW5nIHRvIGhhc2gAAH4wEAAgAAAAc3RyaW5nIGRlY29kZWQgdG8gd3Jvbmcgc2l6ZSBmb3IgaGFzaAAAAKgwEAAlAAAAVW5zdXBwb3J0ZWQgYXJndW1lbnQvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvc29sYW5hLXByb2dyYW0tMS4xMC4zOC9zcmMvd2FzbS9oYXNoLnJzYXJyYXkgdG8gYmUgaXRlcmFibGXsMBAAZAAAABcAAAA/AAAASW52YWxpZCBhcnJheSBhcmd1bWVudDogdDEQABgAAAAyAAAAAAAAAAEAAAA5AAAAOgAAADsAAAAvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvc29sYW5hLXByb2dyYW0tMS4xMC4zOC9zcmMvd2FzbS9tb2QucnMArDEQAGMAAAASAAAAOAAAAGNhcGFjaXR5IG92ZXJmbG93AAAAIDIQABEAAAAvcnVzdGMvYTgzMTRlZjdkMGVjN2I3NWMzMzZhZjJjOTg1N2JmYWY0MzAwMmJmYy9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvc3BlY19mcm9tX2l0ZXJfbmVzdGVkLnJzAAA8MhAAXgAAADsAAAASAAAAL3J1c3RjL2E4MzE0ZWY3ZDBlYzdiNzVjMzM2YWYyYzk4NTdiZmFmNDMwMDJiZmMvbGlicmFyeS9hbGxvYy9zcmMvdmVjL3NwZWNfZXh0ZW5kLnJzrDIQAFQAAAA3AAAADQAAAC9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9sb2ctMC40LjE2L3NyYy9saWIucnMAABAzEABSAAAAWQIAADEAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlAHQzEAAAAAAAPQAAAAAAAAABAAAAPQAAAAAAAAABAAAAqDMQAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAAQAAAAEAAAARwAAAEgAAABJAAAASgAAAAwAAAAE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2JmlojoIANs8nPpgugoAPFE0oDihBgDsvnM63+gFAICYP5iSGwUAxoAcV5TpAQAbWCtj9E4EAMlk0yEcSQYAerRESaSMBQDuaBddchwAAODsiHqr5wEAX0vEmUgFBwAvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvY3VydmUyNTUxOS1kYWxlay0zLjIuMS9zcmMvd2luZG93LnJzAAAACFQQAGEAAACVAAAACQAAAAhUEABhAAAAwAAAAAkAAAAAAAAA7eYhZ71IDwBa5GestboDABvlNev//w8A////////DwD//////w8AADvRUull0gkAn6a+FcdjDQAEdmjLZb4FAH8hPcfu3AMAmjB8G0EJAABQAAAABAAAAAQAAABRAAAAUAAAAAQAAAAEAAAAUgAAAFEAAADgVBAAUwAAAFQAAABVAAAAVgAAAFcAAABFcnJvcjogABxVEAAHAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3JhbmRfY29yZS0wLjUuMS9zcmMvb3MucnMAACxVEABWAAAAPwAAAA0AAACUVRAAAAAAAGRlc2NyaXB0aW9uKCkgaXMgZGVwcmVjYXRlZDsgdXNlIERpc3BsYXlZAAAAY3J5cHRvRXJyb3J1bmtub3duX2NvZGUAXAAAAAQAAAAEAAAAXQAAAGludGVybmFsX2NvZGVkZXNjcmlwdGlvblwAAAAIAAAABAAAAF4AAABvc19lcnJvclwAAAAEAAAABAAAAF8AAABVbmtub3duIEVycm9yOiAAMFYQAA8AAABPUyBFcnJvcjogAABIVhAACgAAAHJhbmRTZWN1cmU6IHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZSBpcyBub3QgaW5pdGlhbGl6ZWRzdGR3ZWI6IGZhaWxlZCB0byBnZXQgcmFuZG9tbmVzc3N0ZHdlYjogbm8gcmFuZG9tbmVzcyBzb3VyY2UgYXZhaWxhYmxld2FzbS1iaW5kZ2VuOiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIGlzIHVuZGVmaW5lZHdhc20tYmluZGdlbjogc2VsZi5jcnlwdG8gaXMgdW5kZWZpbmVkUkRSQU5EOiBpbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkUkRSQU5EOiBmYWlsZWQgbXVsdGlwbGUgdGltZXM6IENQVSBpc3N1ZSBsaWtlbHlSdGxHZW5SYW5kb206IGNhbGwgZmFpbGVkU2VjUmFuZG9tQ29weUJ5dGVzOiBjYWxsIGZhaWxlZFVua25vd24gc3RkOjppbzo6RXJyb3JlcnJubzogZGlkIG5vdCByZXR1cm4gYSBwb3NpdGl2ZSB2YWx1ZWdldHJhbmRvbTogdGhpcyB0YXJnZXQgaXMgbm90IHN1cHBvcnRlZAAAAPpXEADUVxAAvlcQAJ9XEACGVxAAV1cQADZXEAAQVxAA31YQALlWEACZVhAAXFYQACcAAAAmAAAAFgAAAB8AAAAZAAAALwAAACEAAAAmAAAAMQAAACYAAAAgAAAAPQAAAPpXEADUVxAAvlcQAJ9XEACGVxAAV1cQADZXEAAQVxAA31YQALlWEACZVhAAXFYQAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24vcnVzdGMvYTgzMTRlZjdkMGVjN2I3NWMzMzZhZjJjOTg1N2JmYWY0MzAwMmJmYy9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAAAA+lgQAE8AAAClAQAAGgAAAGFscmVhZHkgYm9ycm93ZWRjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlAGAAAAAAAAAAAQAAAGEAAABgAAAAAAAAAAEAAABiAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2dldHJhbmRvbS0wLjEuMTYvc3JjL3dhc20zMl9iaW5kZ2VuLnJzALhZEABjAAAAKwAAABwAAAC4WRAAYwAAADAAAAAfAAAAQnVmZmVyVG9vU21hbGwvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYnM1OC0wLjQuMC9zcmMvZGVjb2RlLnJzAEpaEABVAAAA1AAAABoAAABKWhAAVQAAAOgAAAAFAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2pzLXN5cy0wLjMuNTYvc3JjL2xpYi5ycwAAAMBaEABVAAAAUxYAAAEAAABuAAAABAAAAAQAAABvAAAAY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGRlc3Ryb3llZCBhbHJlYWR5KCkAAHAAAAAAAAAAAQAAAHAAAAAAAAAAAQAAAGxbEABxAAAAcgAAAHMAAABTZXRMb2dnZXJFcnJvcgAAcAAAAAQAAAAEAAAAdAAAAEJpbmNvZGUgY2FuIG9ubHkgZW5jb2RlIHNlcXVlbmNlcyBhbmQgbWFwcyB0aGF0IGhhdmUgYSBrbm93YWJsZSBzaXplIGFoZWFkIG9mIHRpbWV0aGUgc2l6ZSBsaW1pdCBoYXMgYmVlbiByZWFjaGVkdGFnIGZvciBlbnVtIGlzIG5vdCB2YWxpZGNoYXIgaXMgbm90IHZhbGlkaW52YWxpZCB1OCB3aGlsZSBkZWNvZGluZyBib29sc3RyaW5nIGlzIG5vdCB2YWxpZCB1dGY4AAAAtFsQAAAAAABCaW5jb2RlIGRvZXMgbm90IHN1cHBvcnQgdGhlIHNlcmRlOjpEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplX2FueSBtZXRob2SQXBAASAAAACwgZm91bmQgtFsQAAAAAADgXBAACAAAACwgZXhwZWN0ZWQgMCBvciAxLCBmb3VuZCAAAAC0WxAAAAAAAPhcEAAZAAAAOiAAALRbEAAAAAAAJF0QAAIAAABpbyBlcnJvcjogAAA4XRAACgAAAEN1c3RvbQAAeQAAAAQAAAAEAAAAegAAAFNlcXVlbmNlTXVzdEhhdmVMZW5ndGhTaXplTGltaXREZXNlcmlhbGl6ZUFueU5vdFN1cHBvcnRlZEludmFsaWRUYWdFbmNvZGluZwB5AAAABAAAAAQAAAB7AAAASW52YWxpZENoYXJFbmNvZGluZ0ludmFsaWRCb29sRW5jb2RpbmcAAHkAAAAEAAAABAAAAHwAAABJbnZhbGlkVXRmOEVuY29kaW5nAHkAAAAEAAAABAAAAH0AAABJbwAAeQAAAAQAAAAEAAAAfgAAAD4AAAAwXhAAAAAAADBeEAABAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2J5dGVtdWNrLTEuOC4wL3NyYy9saWIucnMAAEReEABWAAAAeQAAAAMAAAAwXhAAAAAAAEFsaWdubWVudE1pc21hdGNoU2l6ZU1pc21hdGNoT3V0cHV0U2xpY2VXb3VsZEhhdmVTbG9wVGFyZ2V0QWxpZ25tZW50R3JlYXRlckFuZElucHV0Tm90QWxpZ25lZAAAABRfEAAAAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3J1c3RfZGVjaW1hbC0xLjIzLjEvc3JjL2RlY2ltYWwucnMAHF8QAF8AAACDAQAAFwAAABxfEABfAAAAvwEAABcAAAABAAAACgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUAypo7AAAAAAAAAAABAAAAAAAAABxfEABfAAAA6ggAACEAAAAAAAAAAAAAAAAAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvQWRkaXRpb24gb3ZlcmZsb3dlZC9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ydXN0X2RlY2ltYWwtMS4yMy4xL3NyYy9hcml0aG1ldGljX2ltcGxzLnJzHGAQAGgAAAChAAAAEgAAAERpdmlzaW9uIGJ5IHplcm8cYBAAaAAAANsAAAAtAAAARGl2aXNpb24gb3ZlcmZsb3dlZAAcYBAAaAAAANoAAAAsAAAATXVsdGlwbGljYXRpb24gb3ZlcmZsb3dlZAAAABxgEABoAAAA6AAAABIAAABTdWJ0cmFjdGlvbiBvdmVyZmxvd2VkAAAcYBAAaAAAAAMBAAASAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3J1c3RfZGVjaW1hbC0xLjIzLjEvc3JjL21hdGhzLnJzUG93IG92ZXJmbG93ZWQALGEQAF0AAADKAAAAFQAAAFVuYWJsZSB0byBjYWxjdWxhdGUgbG4gZm9yIG5lZ2F0aXZlIG51bWJlcnMALGEQAF0AAAB2AQAAFQAAAFVuYWJsZSB0byBjYWxjdWxhdGUgbG4gZm9yIHplcm8ALGEQAF0AAAB4AQAAFQAAAENhbGN1bGF0aW9uIG9mIGxuIGZhaWxlZCBmb3IgdW5rbm93biByZWFzb25zLGEQAF0AAAB6AQAAFQAAAAAAHAAEB+MLRtsZjlKsWKoAABwAqxnVV1rteoU13uzrL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3J1c3RfZGVjaW1hbC0xLjIzLjEvc3JjL29wcy9hcnJheS5yc0ludGVybmFsIGVycm9yOiBkaXZpZGUgYnkgemVybwBwYhAAYQAAAN4AAAAJAAAAAQAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFAMqaOy9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ydXN0X2RlY2ltYWwtMS4yMy4xL3NyYy9vcHMvY21wLnJzAChjEABfAAAAUAAAAA0AAACDAAAACAAAAAQAAACEAAAAhQAAAIgAAAAIAAAABAAAAIkAAABFcnJvciB3aGlsZSBjb252ZXJ0aW5nIHRvIAAAvGMQABoAAABTY2FsZSBleGNlZWRzIHRoZSBtYXhpbXVtIHByZWNpc2lvbiBhbGxvd2VkOiAgPiDgYxAALQAAAA1kEAADAAAAHAAAAE51bWJlciBoYXMgYSBoaWdoIHByZWNpc2lvbiB0aGF0IGNhbiBub3QgYmUgcmVwcmVzZW50ZWQuJGQQADgAAABOdW1iZXIgbGVzcyB0aGFuIG1pbmltdW0gdmFsdWUgdGhhdCBjYW4gYmUgcmVwcmVzZW50ZWQuAGRkEAA3AAAATnVtYmVyIGV4Y2VlZHMgbWF4aW11bSB2YWx1ZSB0aGF0IGNhbiBiZSByZXByZXNlbnRlZC4AAACkZBAANQAAAENvbnZlcnNpb25Ub4gAAAAEAAAABAAAAIoAAABTY2FsZUV4Y2VlZHNNYXhpbXVtUHJlY2lzaW9uiAAAAAQAAAAEAAAAiwAAAFVuZGVyZmxvd0xlc3NUaGFuTWluaW11bVBvc3NpYmxlVmFsdWVFeGNlZWRzTWF4aW11bVBvc3NpYmxlVmFsdWVFcnJvclN0cmluZy9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ydXN0X2RlY2ltYWwtMS4yMy4xL3NyYy9vcHMvY29tbW9uLnJzAAAAd2UQAGIAAABpAAAAFQAAAJmZmZmZmZmZmZmZGY/C9Shcj8L1KFyPAg4tsp3vp8ZLN4lBABueXinLEMe6uI0GAM8PI4RHG0esxacAAMe0No3ttaD3xhAAAHp4hfTKqyl/rQEAAD+/cxhhxB3zKgAAAHdlEABiAAAAWQEAAB8AAAABAAAACgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUAypo7d2UQAGIAAABzAQAAHAAAAHdlEABiAAAAdAEAACUAAAAAAAAAAAAAAAAAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3J1c3RfZGVjaW1hbC0xLjIzLjEvc3JjL29wcy9kaXYucnPJZhAAXwAAAB8AAAAXAAAAyWYQAF8AAAAyAAAAHAAAAMlmEABfAAAAXwAAABwAAADJZhAAXwAAAKEAAAAXAAAAAQAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFAMqaOy9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ydXN0X2RlY2ltYWwtMS4yMy4xL3NyYy9vcHMvZGl2LnJzAJBnEABfAAAACgIAAB0AAACQZxAAXwAAAKUBAAAdAAAAkGcQAF8AAAAwAQAAGQAAAJBnEABfAAAAOQEAACYAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAAQAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFAMqaOy9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ydXN0X2RlY2ltYWwtMS4yMy4xL3NyYy9vcHMvYWRkLnJzAHRoEABfAAAA2QAAAB4AAAB0aBAAXwAAAPsAAAANAAAAdGgQAF8AAAAsAQAADQAAAHRoEABfAAAATAEAABAAAAB0aBAAXwAAAOUAAAARAAAAAAAAAAoAAAAAAAAAZAAAAAAAAADoAwAAAAAAABAnAAAAAAAAoIYBAAAAAABAQg8AAAAAAICWmAAAAAAAAOH1BQAAAAAAypo7AAAAAADkC1QCAAAAAOh2SBcAAAAAEKXU6AAAAACgck4YCQAAAEB6EPNaAAAAgMakfo0DAAAAwW/yhiMAAACKXXhFYwEAAGSns7bgDQAA6IkEI8eKL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3J1c3RfZGVjaW1hbC0xLjIzLjEvc3JjL29wcy9tdWwucnMAwGkQAF8AAAAgAAAAGwAAAGF0dGVtcHQgdG8gZGl2aWRlIGJ5IHplcm8AAABzdHJ1Y3QgdmFyaWFudAAATGoQAA4AAAB0dXBsZSB2YXJpYW50AAAAZGoQAA0AAABuZXd0eXBlIHZhcmlhbnQAfGoQAA8AAAB1bml0IHZhcmlhbnSUahAADAAAAGVudW2oahAABAAAAG1hcAC0ahAAAwAAAHNlcXVlbmNlwGoQAAgAAABuZXd0eXBlIHN0cnVjdAAA0GoQAA4AAABPcHRpb24gdmFsdWXoahAADAAAAHVuaXQgdmFsdWUAAPxqEAAKAAAAYnl0ZSBhcnJheQAAEGsQAAoAAABzdHJpbmcgACRrEAAHAAAAY2hhcmFjdGVyIGBgNGsQAAsAAAA/axAAAQAAAGZsb2F0aW5nIHBvaW50IGBQaxAAEAAAAD9rEAABAAAAaW50ZWdlciBgAAAAcGsQAAkAAAA/axAAAQAAAGJvb2xlYW4gYAAAAIxrEAAJAAAAP2sQAAEAAABKc1ZhbHVlKCkAAACoaxAACAAAALBrEAABAAAAbnVsbCBwb2ludGVyIHBhc3NlZCB0byBydXN0cmVjdXJzaXZlIHVzZSBvZiBhbiBvYmplY3QgZGV0ZWN0ZWQgd2hpY2ggd291bGQgbGVhZCB0byB1bnNhZmUgYWxpYXNpbmcgaW4gcnVzdAAAlgAAAAQAAAAEAAAAlwAAAJgAAACZAAAAYWxyZWFkeSBib3Jyb3dlZGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUAlgAAAAAAAAABAAAAYgAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAmgAAAAgAAAAEAAAAmwAAAJYAAAAEAAAABAAAAJwAAACWAAAABAAAAAQAAACdAAAAQWNjZXNzRXJyb3J1c2Ugb2Ygc3RkOjp0aHJlYWQ6OmN1cnJlbnQoKSBpcyBub3QgcG9zc2libGUgYWZ0ZXIgdGhlIHRocmVhZCdzIGxvY2FsIGRhdGEgaGFzIGJlZW4gZGVzdHJveWVkbGlicmFyeS9zdGQvc3JjL3RocmVhZC9tb2QucnMAAFltEAAdAAAApQIAACMAAABmYWlsZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIHRocmVhZCBJRDogYml0c3BhY2UgZXhoYXVzdGVkAIhtEAA3AAAAWW0QAB0AAAATBAAAEQAAAFltEAAdAAAAGQQAACoAAABIbBAAAAAAAAB1bmNhdGVnb3JpemVkIGVycm9yb3RoZXIgZXJyb3JvdXQgb2YgbWVtb3J5dW5leHBlY3RlZCBlbmQgb2YgZmlsZXVuc3VwcG9ydGVkb3BlcmF0aW9uIGludGVycnVwdGVkYXJndW1lbnQgbGlzdCB0b28gbG9uZ2ludmFsaWQgZmlsZW5hbWV0b28gbWFueSBsaW5rc2Nyb3NzLWRldmljZSBsaW5rIG9yIHJlbmFtZWRlYWRsb2NrZXhlY3V0YWJsZSBmaWxlIGJ1c3lyZXNvdXJjZSBidXN5ZmlsZSB0b28gbGFyZ2VmaWxlc3lzdGVtIHF1b3RhIGV4Y2VlZGVkc2VlayBvbiB1bnNlZWthYmxlIGZpbGVubyBzdG9yYWdlIHNwYWNld3JpdGUgemVyb3RpbWVkIG91dGludmFsaWQgZGF0YWludmFsaWQgaW5wdXQgcGFyYW1ldGVyc3RhbGUgbmV0d29yayBmaWxlIGhhbmRsZWZpbGVzeXN0ZW0gbG9vcCBvciBpbmRpcmVjdGlvbiBsaW1pdCAoZS5nLiBzeW1saW5rIGxvb3ApcmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1kaXJlY3Rvcnkgbm90IGVtcHR5aXMgYSBkaXJlY3Rvcnlub3QgYSBkaXJlY3RvcnlvcGVyYXRpb24gd291bGQgYmxvY2tlbnRpdHkgYWxyZWFkeSBleGlzdHNicm9rZW4gcGlwZW5ldHdvcmsgZG93bmFkZHJlc3Mgbm90IGF2YWlsYWJsZWFkZHJlc3MgaW4gdXNlbm90IGNvbm5lY3RlZGNvbm5lY3Rpb24gYWJvcnRlZG5ldHdvcmsgdW5yZWFjaGFibGVob3N0IHVucmVhY2hhYmxlY29ubmVjdGlvbiByZXNldGNvbm5lY3Rpb24gcmVmdXNlZHBlcm1pc3Npb24gZGVuaWVkZW50aXR5IG5vdCBmb3VuZEVycm9ya2luZACWAAAAAQAAAAEAAACeAAAAbWVzc2FnZQCWAAAACAAAAAQAAACfAAAAS2luZE9zY29kZQAAlgAAAAQAAAAEAAAAoAAAAKEAAAAMAAAABAAAAKIAAAAgKG9zIGVycm9yIClIbBAAAAAAADxxEAALAAAAR3EQAAEAAABsaWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlLnJzYXNzZXJ0aW9uIGZhaWxlZDogc3RhdGVfYW5kX3F1ZXVlLmFkZHIoKSAmIFNUQVRFX01BU0sgPT0gUlVOTklOR09uY2UgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZAAAvHEQACoAAAACAAAAYHEQABwAAAD/AQAACQAAAGBxEAAcAAAADAIAADUAAABQb2lzb25FcnJvcmxpYnJhcnkvc3RkL3NyYy9zeXNfY29tbW9uL3RocmVhZF9pbmZvLnJzH3IQACkAAAAWAAAAMwAAAG1lbW9yeSBhbGxvY2F0aW9uIG9mICBieXRlcyBmYWlsZWQKAFhyEAAVAAAAbXIQAA4AAABsaWJyYXJ5L3N0ZC9zcmMvYWxsb2MucnOMchAAGAAAAEQBAAAJAAAAY2Fubm90IG1vZGlmeSB0aGUgcGFuaWMgaG9vayBmcm9tIGEgcGFuaWNraW5nIHRocmVhZLRyEAA0AAAAbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5yc/ByEAAcAAAAfQAAAAkAAADwchAAHAAAAEYCAAAfAAAA8HIQABwAAABHAgAAHgAAAKEAAAAMAAAABAAAAKMAAACWAAAACAAAAAQAAACkAAAApQAAABAAAAAEAAAApgAAAKcAAACWAAAACAAAAAQAAACoAAAAqQAAAFVuc3VwcG9ydGVkAJYAAAAEAAAABAAAAKoAAABDdXN0b21lcnJvcgCWAAAABAAAAAQAAACrAAAAVW5jYXRlZ29yaXplZE90aGVyT3V0T2ZNZW1vcnlVbmV4cGVjdGVkRW9mSW50ZXJydXB0ZWRBcmd1bWVudExpc3RUb29Mb25nSW52YWxpZEZpbGVuYW1lVG9vTWFueUxpbmtzQ3Jvc3Nlc0RldmljZXNEZWFkbG9ja0V4ZWN1dGFibGVGaWxlQnVzeVJlc291cmNlQnVzeUZpbGVUb29MYXJnZUZpbGVzeXN0ZW1RdW90YUV4Y2VlZGVkTm90U2Vla2FibGVTdG9yYWdlRnVsbFdyaXRlWmVyb1RpbWVkT3V0SW52YWxpZERhdGFJbnZhbGlkSW5wdXRTdGFsZU5ldHdvcmtGaWxlSGFuZGxlRmlsZXN5c3RlbUxvb3BSZWFkT25seUZpbGVzeXN0ZW1EaXJlY3RvcnlOb3RFbXB0eUlzQURpcmVjdG9yeU5vdEFEaXJlY3RvcnlXb3VsZEJsb2NrQWxyZWFkeUV4aXN0c0Jyb2tlblBpcGVOZXR3b3JrRG93bkFkZHJOb3RBdmFpbGFibGVBZGRySW5Vc2VOb3RDb25uZWN0ZWRDb25uZWN0aW9uQWJvcnRlZE5ldHdvcmtVbnJlYWNoYWJsZUhvc3RVbnJlYWNoYWJsZUNvbm5lY3Rpb25SZXNldENvbm5lY3Rpb25SZWZ1c2VkUGVybWlzc2lvbkRlbmllZE5vdEZvdW5kb3BlcmF0aW9uIHN1Y2Nlc3NmdWxjb25kdmFyIHdhaXQgbm90IHN1cHBvcnRlZAAAAON1EAAaAAAAbGlicmFyeS9zdGQvc3JjL3N5cy93YXNtLy4uL3Vuc3VwcG9ydGVkL2xvY2tzL2NvbmR2YXIucnMIdhAAOAAAABcAAAAJAAAAY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXhQdhAAIAAAAGxpYnJhcnkvc3RkL3NyYy9zeXMvd2FzbS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9tdXRleC5ycwAAeHYQADYAAAAXAAAACQAAAGxpYnJhcnkvc3RkL3NyYy9z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VXNlckNhbmNlbADVAAAABAAAAAQAAADWAAAAUHJvdG9jb2xOb0RldmljZUZvdW5kSW52YWxpZElucHV0Q29ubmVjdGlvblByZXNpZ25lckVycm9yAAAA1QAAAAQAAAAEAAAA1wAAAEN1c3RvbVRyYW5zYWN0aW9uRXJyb3IAANUAAAAEAAAABAAAANgAAABOb3RFbm91Z2hTaWduZXJzS2V5cGFpclB1YmtleU1pc21hdGNoUHVibGljS2V5U2xpY2UgbXVzdCBiZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIGFycmF5L2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2dlbmVyaWMtYXJyYXktMC4xNC41L3NyYy9saWIucnN0jREAXAAAAEsCAAAOAAAAYW4gYXJyYXkgb2YgbGVuZ3RoIDMyQ29tcGlsZWRJbnN0cnVjdGlvbnByb2dyYW1JZEluZGV4YWNjb3VudHNkYXRhAAAIjhEADgAAABaOEQAIAAAAHo4RAAQAAADZAAAABAAAAAQAAADaAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZXN0cnVjdCBHZW5lcmljQXJyYXkAANsAAAAAAAAAAQAAANwAAAAvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvc29sYW5hLXNkay0xLjEwLjM4L3NyYy90cmFuc2FjdGlvbi9tb2QucnNUcmFuc2FjdGlvbjo6cGFydGlhbF9zaWduIGZhaWxlZCB3aXRoIGVycm9yIAAAAo8RACwAAACcjhEAZgAAAOACAAANAAAAnI4RAGYAAAC6AwAALQAAAJyOEQBmAAAAugMAAA0AAABUcmFuc2FjdGlvbnNpZ25hdHVyZXNtZXNzYWdlc48RAAoAAAB9jxEABwAAAC9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9zb2xhbmEtc2RrLTEuMTAuMzgvc3JjL3dhc20vdHJhbnNhY3Rpb24ucnMAlI8RAGcAAAAwAAAAIgAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvc29sYW5hLXNkay0xLjEwLjM4L3NyYy90cmFuc2FjdGlvbi9tb2QucnMAAAA3kBEAZgAAAJkDAABEAAAAVmVyaWZpY2F0aW9uRmFpbHVyZVRyYW5zYWN0aW9uIHJlc3VsdHMgaW4gYW4gYWNjb3VudCAoKSB3aXRob3V0IGluc3VmZmljaWVudCBmdW5kcyBmb3IgcmVudADDkBEAIwAAAOaQEQAlAAAAVHJhbnNhY3Rpb24gY29udGFpbnMgYSBkdXBsaWNhdGUgaW5zdHJ1Y3Rpb24gKCkgdGhhdCBpcyBub3QgYWxsb3dlZAAckREALgAAAEqREQAVAAAAVHJhbnNhY3Rpb24gd291bGQgZXhjZWVkIHRvdGFsIGFjY291bnQgZGF0YSBsaW1pdAAAAHCREQAxAAAAVHJhbnNhY3Rpb24gd291bGQgZXhjZWVkIG1heCBWb3RlIENvc3QgTGltaXSskREALAAAAFRyYW5zYWN0aW9uIGxlYXZlcyBhbiBhY2NvdW50IHdpdGggYSBsb3dlciBiYWxhbmNlIHRoYW4gcmVudC1leGVtcHQgbWluaW11bQDgkREASwAAAFRyYW5zYWN0aW9uIGFkZHJlc3MgdGFibGUgbG9va3VwIHVzZXMgYW4gaW52YWxpZCBpbmRleAAANJIRADYAAABUcmFuc2FjdGlvbiBsb2FkcyBhbiBhZGRyZXNzIHRhYmxlIGFjY291bnQgd2l0aCBpbnZhbGlkIGRhdGF0khEAPAAAAFRyYW5zYWN0aW9uIGxvYWRzIGFuIGFkZHJlc3MgdGFibGUgYWNjb3VudCB3aXRoIGFuIGludmFsaWQgb3duZXK4khEAQAAAAFRyYW5zYWN0aW9uIGxvYWRzIGFuIGFkZHJlc3MgdGFibGUgYWNjb3VudCB0aGF0IGRvZXNuJ3QgZXhpc3QAAAAAkxEAPQAAAFRyYW5zYWN0aW9uIGxvY2tlZCB0b28gbWFueSBhY2NvdW50c0iTEQAkAAAAVHJhbnNhY3Rpb24gd291bGQgZXhjZWVkIGFjY291bnQgZGF0YSBsaW1pdCB3aXRoaW4gdGhlIGJsb2NrdJMRADwAAABUcmFuc2FjdGlvbiB3b3VsZCBleGNlZWQgbWF4IGFjY291bnQgbGltaXQgd2l0aGluIHRoZSBibG9jawC4kxEAOwAAAFRyYW5zYWN0aW9uIGxvYWRzIGEgd3JpdGFibGUgYWNjb3VudCB0aGF0IGNhbm5vdCBiZSB3cml0dGVuAPyTEQA7AAAAVHJhbnNhY3Rpb24gdmVyc2lvbiBpcyB1bnN1cHBvcnRlZAAAQJQRACIAAABUcmFuc2FjdGlvbiB3b3VsZCBleGNlZWQgbWF4IEJsb2NrIENvc3QgTGltaXQAAABslBEALQAAAFRyYW5zYWN0aW9uIHByb2Nlc3NpbmcgbGVmdCBhbiBhY2NvdW50IHdpdGggYW4gb3V0c3RhbmRpbmcgYm9ycm93ZWQgcmVmZXJlbmNlAAAApJQRAE0AAABUcmFuc2FjdGlvbnMgYXJlIGN1cnJlbnRseSBkaXNhYmxlZCBkdWUgdG8gY2x1c3RlciBtYWludGVuYW5jZQAA/JQRAD4AAABUcmFuc2FjdGlvbiBmYWlsZWQgdG8gc2FuaXRpemUgYWNjb3VudHMgb2Zmc2V0cyBjb3JyZWN0bHkAAABElREAOQAAAFRoaXMgcHJvZ3JhbSBtYXkgbm90IGJlIHVzZWQgZm9yIGV4ZWN1dGluZyBpbnN0cnVjdGlvbnMAiJURADcAAABUcmFuc2FjdGlvbiBkaWQgbm90IHBhc3Mgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbgDIlREALwAAAFRyYW5zYWN0aW9uIGNvbnRhaW5zIGFuIGludmFsaWQgYWNjb3VudCByZWZlcmVuY2UAAAAAlhEAMQAAAFRyYW5zYWN0aW9uIHJlcXVpcmVzIGEgZmVlIGJ1dCBoYXMgbm8gc2lnbmF0dXJlIHByZXNlbnQAPJYRADcAAABMb2FkZXIgY2FsbCBjaGFpbiBpcyB0b28gZGVlcAAAAHyWEQAdAAAARXJyb3IgcHJvY2Vzc2luZyBJbnN0cnVjdGlvbiA6IACklhEAHQAAAMGWEQACAAAAQmxvY2toYXNoIG5vdCBmb3VuZADUlhEAEwAAAFRoaXMgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQA8JYRACsAAABUaGlzIGFjY291bnQgbWF5IG5vdCBiZSB1c2VkIHRvIHBheSB0cmFuc2FjdGlvbiBmZWVzJJcRADQAAABJbnN1ZmZpY2llbnQgZnVuZHMgZm9yIGZlZQAAYJcRABoAAABBdHRlbXB0IHRvIGxvYWQgYSBwcm9ncmFtIHRoYXQgZG9lcyBub3QgZXhpc3QAAACElxEALQAAAEF0dGVtcHQgdG8gZGViaXQgYW4gYWNjb3VudCBidXQgZm91bmQgbm8gcmVjb3JkIG9mIGEgcHJpb3IgY3JlZGl0LgAAvJcRAEIAAABBY2NvdW50IGxvYWRlZCB0d2ljZQiYEQAUAAAAQWNjb3VudCBpbiB1c2UAACSYEQAOAAAASW5zdWZmaWNpZW50RnVuZHNGb3JSZW50YWNjb3VudF9pbmRleAAAAN8AAAAEAAAABAAAAOAAAABEdXBsaWNhdGVJbnN0cnVjdGlvbldvdWxkRXhjZWVkQWNjb3VudERhdGFUb3RhbExpbWl0V291bGRFeGNlZWRNYXhWb3RlQ29zdExpbWl0SW52YWxpZFJlbnRQYXlpbmdBY2NvdW50SW52YWxpZEFkZHJlc3NMb29rdXBUYWJsZUluZGV4SW52YWxpZEFkZHJlc3NMb29rdXBUYWJsZURhdGFJbnZhbGlkQWRkcmVzc0xvb2t1cFRhYmxlT3duZXJBZGRyZXNzTG9va3VwVGFibGVOb3RGb3VuZFRvb01hbnlBY2NvdW50TG9ja3NXb3VsZEV4Y2VlZEFjY291bnREYXRhQmxvY2tMaW1pdFdvdWxkRXhjZWVkTWF4QWNjb3VudENvc3RMaW1pdEludmFsaWRXcml0YWJsZUFjY291bnRVbnN1cHBvcnRlZFZlcnNpb25Xb3VsZEV4Y2VlZE1heEJsb2NrQ29zdExpbWl0QWNjb3VudEJvcnJvd091dHN0YW5kaW5nQ2x1c3Rlck1haW50ZW5hbmNlU2FuaXRpemVGYWlsdXJlSW52YWxpZFByb2dyYW1Gb3JFeGVjdXRpb25TaWduYXR1cmVGYWlsdXJlSW52YWxpZEFjY291bnRJbmRleE1pc3NpbmdTaWduYXR1cmVGb3JGZWVDYWxsQ2hhaW5Ub29EZWVwSW5zdHJ1Y3Rpb25FcnJvcgDfAAAABAAAAAQAAADhAAAAQmxvY2toYXNoTm90Rm91bmRBbHJlYWR5UHJvY2Vzc2VkSW52YWxpZEFjY291bnRGb3JGZWVJbnN1ZmZpY2llbnRGdW5kc0ZvckZlZVByb2dyYW1BY2NvdW50Tm90Rm91bmRBY2NvdW50Tm90Rm91bmRBY2NvdW50TG9hZGVkVHdpY2VBY2NvdW50SW5Vc2UA5AAAAAwAAAAEAAAA5QAAAOYAAADnAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseS9ydXN0Yy9hODMxNGVmN2QwZWM3Yjc1YzMzNmFmMmM5ODU3YmZhZjQzMDAyYmZjL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAf5sRAEsAAACxCQAADgAAAOgAAAAAAAAAAQAAACAAAABpbnZhbGlkIHZhbHVlOiAsIGV4cGVjdGVkIAAA7JsRAA8AAAD7mxEACwAAAGludmFsaWQgbGVuZ3RoIAAYnBEADwAAAPubEQALAAAAY29udGludWUgc2lnbmFsIG9uIGJ5dGUtdGhyZWVhIHRlcm1pbmFsIHNpZ25hbCBvbiBvciBiZWZvcmUgYnl0ZS10aHJlZQAAVZwRACkAAADpAAAACAAAAAQAAADqAAAAYWxpYXMgZW5jb2RpbmdzdHJpY3QgZm9ybSBlbmNvZGluZwAAppwRABQAAABhIHZhbHVlIGluIHRoZSByYW5nZSBbMCwgNjU1MzVdAMScEQAfAAAAbW9yZSBieXRlcwAA7JwRAAoAAAB0aHJlZSBvciBmZXdlciBieXRlcwCdEQAUAAAAbGVuZ3RoIGxhcmdlciB0aGFuIHUxNgAA6wAAAAwAAAAEAAAA7AAAAO0AAADnAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseS9ydXN0Yy9hODMxNGVmN2QwZWM3Yjc1YzMzNmFmMmM5ODU3YmZhZjQzMDAyYmZjL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAg50RAEsAAACxCQAADgAAAOkAAAAAAAAAAQAAACAAAADuAAAACAAAAAQAAADJAAAAYSBWZWMgd2l0aCBhIG11bHRpLWJ5dGUgbGVuZ3RoAADpAAAAAAAAAAEAAADvAAAAc2lnbmF0dXJlIG9wZXJhdGlvbiBmYWlsZWQvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvc2lnbmF0dXJlLTEuNi4wL3NyYy9zaWduZXIucnNKnhEAWgAAABAAAAAcAAAA8AAAAAAAAAABAAAA8QAAAPAAAAAIAAAABAAAAOoAAABzdHJ1Y3QgTWVzc2FnZSB3aXRoIDQgZWxlbWVudHMAANSeEQAeAAAAc3RydWN0IENvbXBpbGVkSW5zdHJ1Y3Rpb24gd2l0aCAzIGVsZW1lbnRzAAD8nhEAKgAAAPAAAAAEAAAABAAAAPIAAADzAAAA9AAAAHN0cnVjdCBUcmFuc2FjdGlvbiB3aXRoIDIgZWxlbWVudHMAAEifEQAiAAAAAEH4vsYACxBsWxAAeFsQAAEAAAAAAAAAAIfVg4AABG5hbWUB/NSDgADrBgA2d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX3N0cmluZ19uZXc6OmgzYjk1MjRiNDM3MTllYWEwAasBc29sYW5hX3Byb2dyYW06Omluc3RydWN0aW9uOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPHNvbGFuYV9wcm9ncmFtOjppbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpfX3diZ19pbnN0cnVjdGlvbl9uZXc6OmgwOGIzM2NjZTBlMWMyNTFjAjZ3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5fbnVtYmVyX25ldzo6aDU2YjkxMjBlMTBhMWMyODYDO3dhc21fYmluZGdlbjo6X193YmluZGdlbl9vYmplY3RfZHJvcF9yZWY6OmhlMDYzMTc4ZTZiYTg1YjVkBDZ3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5fc3RyaW5nX2dldDo6aDYxYWJmYzhkYzE2MDYyNWMFOHdhc21fYmluZGdlbjo6X193YmluZGdlbl9pc191bmRlZmluZWQ6OmgwMzlhOGEwMjYzZTQ4MDcwBjZ3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5fbnVtYmVyX2dldDo6aDRiNDY1OTk1YzI1Zjk5ZjAHlwFzb2xhbmFfcHJvZ3JhbTo6cHVia2V5Ojo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPHNvbGFuYV9wcm9ncmFtOjpwdWJrZXk6OlB1YmtleT4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206Ol9fd2JnX3B1YmtleV9uZXc6OmhjMjdiYzFmNGEzN2FlODRlCGF3ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX2NvbnNvbGU6OmNvbnNvbGU6OmRlYnVnXzE6Ol9fd2JnX2RlYnVnXzczMzk1Y2E1NjY5MTIwYWU6Omg1MTQxN2RkZWQyMjk2MThlCWF3ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX2NvbnNvbGU6OmNvbnNvbGU6OmVycm9yXzE6Ol9fd2JnX2Vycm9yXzExODliNWRlNmRkMWI4MDg6OmgxYjhkY2M0NjlmNDdkNTE2Cl93ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX2NvbnNvbGU6OmNvbnNvbGU6OmluZm9fMTo6X193YmdfaW5mb18zZjFkODYzNmJhNTgxMjhmOjpoOThkOGE5YTk2MWJhYmI1YQtdd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9jb25zb2xlOjpjb25zb2xlOjpsb2dfMTo6X193YmdfbG9nXzE4ZmZkZmU1YTQxYmQ3ODE6OmhlOTk3NDJiNTAwM2RkMWMzDF93ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX2NvbnNvbGU6OmNvbnNvbGU6Ondhcm5fMTo6X193Ymdfd2Fybl9kZmZhNzRjYWI3OGQzNTMxOjpoYzcyYzViOGJkNmM4OGFmNg1TY29uc29sZV9lcnJvcl9wYW5pY19ob29rOjpFcnJvcjo6bmV3OjpfX3diZ19uZXdfYWJkYTc2ZTg4M2JhOGE1Zjo6aDg3MjJjMmFmNWNiYjVmMTcOV2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vazo6RXJyb3I6OnN0YWNrOjpfX3diZ19zdGFja182NTgyNzlmZTQ0NTQxY2Y2OjpoZDY4OWM2NTllMjNmM2ZmMg9QY29uc29sZV9lcnJvcl9wYW5pY19ob29rOjplcnJvcjo6X193YmdfZXJyb3JfZjg1MTY2N2FmNzFiY2ZjNjo6aDQ0YTU1Yzc1YzdkODZlZGEQUGdldHJhbmRvbTo6aW1wOjpHbG9iYWw6OmdldF9zZWxmOjpfX3diZ19zZWxmXzdlZWRlMWY0NDg4YmYzNDY6Omg2NWZiODQyMDRmOWJjMGZjEU9nZXRyYW5kb206OmltcDo6U2VsZl86OmNyeXB0bzo6X193YmdfY3J5cHRvX2M5MDlmYjQyOGRjYmRkYjY6Omg0YWNhMDJlMDdlZWYxYjRjElRnZXRyYW5kb206OmltcDo6U2VsZl86Om1zX2NyeXB0bzo6X193YmdfbXNDcnlwdG9fNTExZWVmZWZiZmM3MGFlNDo6aDM4OTE0NjA2NjI2YWZhNDETXmdldHJhbmRvbTo6aW1wOjpNT0RVTEU6OmluaXQ6Ol9fd2JnX3N0YXRpY19hY2Nlc3Nvcl9NT0RVTEVfZWYzYWEyZWIyNTExNThhNTo6aDAxZjAzOGM3MWY2MjA0OWIUVmdldHJhbmRvbTo6aW1wOjpOb2RlTW9kdWxlOjpyZXF1aXJlOjpfX3diZ19yZXF1aXJlXzkwMGQ1YzM5ODRmZTc3MDM6Omg4YzYxMDgxMmYxNjU5MTAzFW5nZXRyYW5kb206OmltcDo6QnJvd3NlckNyeXB0bzo6Z2V0X3JhbmRvbV92YWx1ZXNfZm46Ol9fd2JnX2dldFJhbmRvbVZhbHVlc18zMDcwNDkzNDVkMGJkODhjOjpoOWE0NTM0ZThjNzcxNzk1MxZrZ2V0cmFuZG9tOjppbXA6OkJyb3dzZXJDcnlwdG86OmdldF9yYW5kb21fdmFsdWVzOjpfX3diZ19nZXRSYW5kb21WYWx1ZXNfY2QxNzU5MTU1MTFmNzA1ZTo6aDI5ZDE1ZTYxOWMyYzhmYTcXZmdldHJhbmRvbTo6aW1wOjpOb2RlQ3J5cHRvOjpyYW5kb21fZmlsbF9zeW5jOjpfX3diZ19yYW5kb21GaWxsU3luY184NWIzZjRjNTJjNTZjMzEzOjpoYmU0NjNmOTdhZTc2NWU3MxhBanNfc3lzOjpBcnJheTo6bmV3OjpfX3diZ19uZXdfYjMzZTFjZTYzOTAwMDY4Zjo6aGVmOGJjYTRmYTIzZTk2ZTMZN3dhc21fYmluZGdlbjo6X193YmluZGdlbl9pc19mdW5jdGlvbjo6aDIxYWU4ZmRkOGY4NGY3ZGQaNXdhc21fYmluZGdlbjo6X193YmluZGdlbl9pc19vYmplY3Q6OmgxZmQ5NzljZmQzMjY0MzI3G2pqc19zeXM6Okl0ZXJhdG9yOjpsb29rc19saWtlX2l0ZXJhdG9yOjpNYXliZUl0ZXJhdG9yOjpuZXh0OjpfX3diZ19uZXh0XzBiOTU4NTJkYjNhMGY1Njg6OmhiNWVhMDFhZWZlOWJhNjZhHEZqc19zeXM6Okl0ZXJhdG9yOjpuZXh0OjpfX3diZ19uZXh0XzMyY2U0NjAzZTE5YTlhZDg6OmgyOGRkMjEyNzg1ZGU1MDYzHUpqc19zeXM6Okl0ZXJhdG9yTmV4dDo6ZG9uZTo6X193YmdfZG9uZV9iMmIyM2FkY2FmZDZkMzcyOjpoN2NjNGM5YWQzYWQzMmE2Yx5ManNfc3lzOjpJdGVyYXRvck5leHQ6OnZhbHVlOjpfX3diZ192YWx1ZV85YmMzMjcxZjI1NTZhNjIxOjpoNmVjYWZmMGZiNzg2NWU5NB9ManNfc3lzOjpTeW1ib2w6Oml0ZXJhdG9yOjpfX3diZ19pdGVyYXRvcl83ZTBhYzY5N2ZhYTg3MmYzOjpoZmQ4NzgxNmRmYjdlNDE3OCBDanNfc3lzOjpSZWZsZWN0OjpnZXQ6Ol9fd2JnX2dldF8wMjk5OWJiMmNhZWVmZjYxOjpoMDY1ZTkwZmE3YTM3ODljMyFHanNfc3lzOjpGdW5jdGlvbjo6Y2FsbDA6Ol9fd2JnX2NhbGxfODc1ZDRlYTlhYmJlYzg4Zjo6aGNhYjMyOTc3MmMyZjNjZmYiV2pzX3N5czo6QXJyYXk6Om5ld193aXRoX2xlbmd0aDo6X193YmdfbmV3d2l0aGxlbmd0aF84ZmY2OTExOGFiMjMzMTliOjpoNjYxMGVlZDM3ZTAzNmYwNCNBanNfc3lzOjpBcnJheTo6c2V0OjpfX3diZ19zZXRfNWVhY2RmNTRjOWFhZmJkZjo6aGQ5NTIxYzJhYzRmMjgzMDMkSmpzX3N5czo6QXJyYXk6OmlzX2FycmF5OjpfX3diZ19pc0FycmF5X2NmNjgyOWIxZjI1YmEwZjE6OmhlYzJhZmUzYzE3ZTNjY2UxJUNqc19zeXM6OkFycmF5OjpwdXNoOjpfX3diZ19wdXNoXzA5ZWJjYmJkNmZiMjdhZTE6OmgzZjNmYTZiNmY0ZWIxN2FiJkdqc19zeXM6OkFycmF5Ojp2YWx1ZXM6Ol9fd2JnX3ZhbHVlc19hMjY3NTc1ZmE3Yjk5MDc1OjpoMzA3MWNlMWY2YWFmMjI1NydVanNfc3lzOjpXZWJBc3NlbWJseTo6TWVtb3J5OjpidWZmZXI6Ol9fd2JnX2J1ZmZlcl84ZGFiYzNhNGNjYTdlMDY1OjpoMTQ3ZGU4MmE0MmViZDZiNChGanNfc3lzOjpVaW50OEFycmF5OjpuZXc6Ol9fd2JnX25ld184MWJkZGRiZTIzYTRjOTkwOjpoMjZmMDI5MzAxNTUzMzI0YilGanNfc3lzOjpVaW50OEFycmF5OjpzZXQ6Ol9fd2JnX3NldF81Nzc4YjE1MmE3ZWMyNThjOjpoMzlmNGU0Y2MzNDgwOGE1MCpManNfc3lzOjpVaW50OEFycmF5OjpsZW5ndGg6Ol9fd2JnX2xlbmd0aF82MWYxOTQ5YWE3ZjZmZDM5OjpoYmMxNGZhYmJjYzM1MTQwZCuvAWpzX3N5czo6X193YmdfZ2VuZXJhdGVkX2NvbnN0X1VpbnQ4QXJyYXk6OjxpbXBsIHdhc21fYmluZGdlbjo6Y2FzdDo6SnNDYXN0IGZvciBqc19zeXM6OlVpbnQ4QXJyYXk+OjppbnN0YW5jZW9mOjpfX3diZ19pbnN0YW5jZW9mX1VpbnQ4QXJyYXlfOGE4NTM3ZjQ2ZTA1NjQ3NDo6aGE2NGUzZmMwMzE0MDNhYzgsXGpzX3N5czo6VWludDhBcnJheTo6bmV3X3dpdGhfbGVuZ3RoOjpfX3diZ19uZXd3aXRobGVuZ3RoXzZiMmIzMmVmNWJmYzlhNTU6Omg3MDcyMWM2ZGY4NDZlMWIwLVBqc19zeXM6OlVpbnQ4QXJyYXk6OnN1YmFycmF5OjpfX3diZ19zdWJhcnJheV8yNDcwOTJlNTliNTYzMzlhOjpoNThjODFiYWM1OGE1OWIyZi44d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2RlYnVnX3N0cmluZzo6aDVjNzU5MTQzZDg5YzAwMDUvMXdhc21fYmluZGdlbjo6X193YmluZGdlbl90aHJvdzo6aDc4ZWEyMDM3NTEyYmYyMjMwMndhc21fYmluZGdlbjo6X193YmluZGdlbl9tZW1vcnk6Omg5YWFhMDAzNDEwYWE2NzZhMS9zaGEyOjpzaGE1MTI6OnNvZnQ6OmNvbXByZXNzOjpoZTY5YjhiMDQwM2RjZDg0NjIvc2hhMjo6c2hhMjU2Ojpzb2Z0Ojpjb21wcmVzczo6aDYxMDcwZGM4YjkzZWE0MWIzSGNvcmU6Om51bTo6Zmx0MmRlYzo6c3RyYXRlZ3k6OmRyYWdvbjo6Zm9ybWF0X3Nob3J0ZXN0OjpoOGY2YTY2Njk3ZDEzMjU2NTRMZ2Z4X3NzbF93YXNtOjpzd2FwOjo8aW1wbCBnZnhfc3NsX3dhc206OnBhaXI6OlBhaXI+Ojpzd2FwOjpoYWMxNDYzOGQ5NmVlZDMwOTVFY29yZTo6bnVtOjpmbHQyZGVjOjpzdHJhdGVneTo6ZHJhZ29uOjpmb3JtYXRfZXhhY3Q6OmgyN2RjNWE4OThiMTgzNjk3NlBjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OnU2NDo6c2NhbGFyOjpTY2FsYXI1Mjo6bXVsOjpoYTBkZTI5MTgyMjczMGY3ZDcEc3dhcDgzcnVzdF9kZWNpbWFsOjpvcHM6OmRpdjo6ZGl2X2ltcGw6Omg4YmVlNzdjODBlYzA3Y2QxOUJjb3JlOjpudW06OmZsdDJkZWM6OnN0cmF0ZWd5OjpkcmFnb246Om11bF9wb3cxMDo6aDJlYzE4ZTVkNWRlMDUxNTQ6zAE8Y3VydmUyNTUxOV9kYWxlazo6d2luZG93OjpOYWZMb29rdXBUYWJsZTU8Y3VydmUyNTUxOV9kYWxlazo6YmFja2VuZDo6c2VyaWFsOjpjdXJ2ZV9tb2RlbHM6OlByb2plY3RpdmVOaWVsc1BvaW50PiBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPCZjdXJ2ZTI1NTE5X2RhbGVrOjplZHdhcmRzOjpFZHdhcmRzUG9pbnQ+Pjo6ZnJvbTo6aDEzMDM2MjUwZTNiOWJmMzk7OmRsbWFsbG9jOjpkbG1hbGxvYzo6RGxtYWxsb2M8QT46Om1hbGxvYzo6aDI1ZDU4YmI2ZmU5OTk5M2Y8SmdmeF9zc2xfd2FzbTo6bWF0aDo6Y3VydmVzOjpzd2FwX29uY2VfcmVwZWdzd2FwX3Bvb3JtYW46OmhkNGRjMDJjNDc2MzMxZDllPWY8Jm11dCBiaW5jb2RlOjpkZTo6RGVzZXJpYWxpemVyPFIsTz4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV90dXBsZTo6aDZkZGI1OGE2ZjVlNWE5YmU+dzwmY3VydmUyNTUxOV9kYWxlazo6c2NhbGFyOjpTY2FsYXIgYXMgY29yZTo6b3BzOjphcml0aDo6QWRkPCZjdXJ2ZTI1NTE5X2RhbGVrOjpzY2FsYXI6OlNjYWxhcj4+OjphZGQ6Omg0MjJlNjg5ZjY4N2M3N2M2P1tjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OnU2NDo6c2NhbGFyOjpTY2FsYXI1Mjo6bW9udGdvbWVyeV9tdWw6Omg3YTY4YTkzMzBmMDRjMjU2QDtjdXJ2ZTI1NTE5X2RhbGVrOjpzY2FsYXI6OlNjYWxhcjo6cmVkdWNlOjpoY2YwMWI0ODEyY2I1YzlkMEFdPHNvbGFuYV9wcm9ncmFtOjppbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb25FcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzYzE3MzU5NTE5NGQ5ZGJlQpsBc29sYW5hX3Byb2dyYW06OnN5c3RlbV9pbnN0cnVjdGlvbjo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBzb2xhbmFfcHJvZ3JhbTo6c3lzdGVtX2luc3RydWN0aW9uOjpTeXN0ZW1JbnN0cnVjdGlvbj46OnNlcmlhbGl6ZTo6aDRkZjEyM2M0N2Y3OThmYzFDhAJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+OjppbnNlcnRfcmVjdXJzaW5nOjpoYWMwZjBmNDBlODM4NTExZURLY29yZTo6bnVtOjpmbHQyZGVjOjpzdHJhdGVneTo6Z3Jpc3U6OmZvcm1hdF9zaG9ydGVzdF9vcHQ6Omg3NDYxNTM1ZTExYzAxZmE1RVdnZnhfc3NsX3dhc206Om1hdGg6OmN1cnZlczo6c3dhcF9vbmNlX3JlcGVnc3dhcF9wb29ybWFuOjp7e2Nsb3N1cmV9fTo6aDY5ZGJjYzFjOTY5NjU2YjRGSXJ1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbDo6cm91bmRfZHBfd2l0aF9zdHJhdGVneTo6aGU2ODY0MDVlMjk0NTlhZmFHWmN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6c2NhbGFyX211bDo6dmFydGltZV9kb3VibGVfYmFzZTo6bXVsOjpoNWEzZGRkMGJjMGM2Y2Q2YUg6cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpiYXNlMl90b19kZWNpbWFsOjpoZWFjYmRiMWViOWJkOTlhY0lXZ2Z4X3NzbF93YXNtOjptYXRoOjpjdXJ2ZXM6OnN3YXBfb25jZV9yZXBlZ3N3YXBfcG9vcm1hbjo6e3tjbG9zdXJlfX06OmhjN2E4YTc4YzJhOGYzY2M0SjhydXN0X2RlY2ltYWw6Om9wczo6YWRkOjp1bmFsaWduZWRfYWRkOjpoMWY4MDM0NmQ2MjhmNjcxY0tjc29sYW5hX3Byb2dyYW06Ondhc206OnB1YmtleTo6PGltcGwgc29sYW5hX3Byb2dyYW06OnB1YmtleTo6UHVia2V5Pjo6Y29uc3RydWN0b3I6Omg4NWVmODRiMjIwNWVjNGM4TGA8c29sYW5hX3Nkazo6dHJhbnNhY3Rpb246OmVycm9yOjpUcmFuc2FjdGlvbkVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGFjMDhhN2FiZmQxODUxMDZNUmN1cnZlMjU1MTlfZGFsZWs6OmVkd2FyZHM6OkVkd2FyZHNCYXNlcG9pbnRUYWJsZTo6YmFzZXBvaW50X211bDo6aDE4N2VkNzNlN2VlZDg4M2JOfmN1cnZlMjU1MTlfZGFsZWs6OmZpZWxkOjo8aW1wbCBjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OnU2NDo6ZmllbGQ6OkZpZWxkRWxlbWVudDUxPjo6c3FydF9yYXRpb19pOjpoYjMzYzExMzNlYWVhZGMzM09nPHJ1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbCBhcyBydXN0X2RlY2ltYWw6Om1hdGhzOjpNYXRoZW1hdGljYWxPcHM+OjpjaGVja2VkX2xuOjpoMWIyMmM4ODBhODU0YzMyNFCxATwmY3VydmUyNTUxOV9kYWxlazo6YmFja2VuZDo6c2VyaWFsOjp1NjQ6OmZpZWxkOjpGaWVsZEVsZW1lbnQ1MSBhcyBjb3JlOjpvcHM6OmFyaXRoOjpNdWw8JmN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6dTY0OjpmaWVsZDo6RmllbGRFbGVtZW50NTE+Pjo6bXVsOjpoNTRjZjAxZmZhMDkzZmM0MlFdc29sYW5hX3Byb2dyYW06Ondhc206Omhhc2g6OjxpbXBsIHNvbGFuYV9wcm9ncmFtOjpoYXNoOjpIYXNoPjo6Y29uc3RydWN0b3I6OmhlMTcyNTZlZGUyZjM4MWQyUqoCYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6cmVtb3ZlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPj46OnJlbW92ZV9sZWFmX2t2OjpoMTdjMzE2ZDkzZDdjODMwOFNxPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpjaGFpbjo6Q2hhaW48QSxCPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46OnNpemVfaGludDo6aDQ1Njc3N2JkM2U1MDNkNzFUanNvbGFuYV9zZGs6Ondhc206OnRyYW5zYWN0aW9uOjo8aW1wbCBzb2xhbmFfc2RrOjp0cmFuc2FjdGlvbjo6VHJhbnNhY3Rpb24+Ojpjb25zdHJ1Y3Rvcjo6aDM2MzUxMDFjNjUxMzcxZGVVSXNvbGFuYV9zZGs6OnRyYW5zYWN0aW9uOjpUcmFuc2FjdGlvbjo6dHJ5X3BhcnRpYWxfc2lnbjo6aGU4MzVhOTZiYjE0OWVjYTVWXGN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6dTY0OjpzY2FsYXI6OlNjYWxhcjUyOjpmcm9tX2J5dGVzX3dpZGU6Omg5YWU1MDY0MTdmNzgxOWU0V1Bzb2xhbmFfcHJvZ3JhbTo6bWVzc2FnZTo6Y29tcGlsZWRfa2V5czo6Q29tcGlsZWRLZXlzOjpjb21waWxlOjpoZDcxOTM0NmJiMjgzZTMwMFhjPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBhbGxvYzo6dmVjOjpzcGVjX2Zyb21faXRlcjo6U3BlY0Zyb21JdGVyPFQsST4+Ojpmcm9tX2l0ZXI6Omg5NTlmODkzNDdlYjAxZWY0WThjb3JlOjpudW06OmJpZ251bTo6QmlnMzJ4NDA6Om11bF9wb3cyOjpoZmRlZTE4YWFlOWNmNDdlMFoxY29yZTo6c3RyOjpzbGljZV9lcnJvcl9mYWlsX3J0OjpoODM2ODg4MmJhODZkYWJkZFszcnVzdF9kZWNpbWFsOjpvcHM6Om11bDo6bXVsX2ltcGw6OmhhMWEzZGZiMGVjNzk0NWIyXEFlZDI1NTE5X2RhbGVrOjpzZWNyZXQ6OkV4cGFuZGVkU2VjcmV0S2V5OjpzaWduOjpoODk2YjQ5YTg4MTY3OGRhMl0zY29yZTo6c3RyOjpjb3VudDo6ZG9fY291bnRfY2hhcnM6OmhiOTIzNDdlZjQzMzgzYzYzXjhkbG1hbGxvYzo6ZGxtYWxsb2M6OkRsbWFsbG9jPEE+OjpmcmVlOjpoYzJhMmM0MThhMzEwNzEwNV9IY29yZTo6bnVtOjpmbHQyZGVjOjpzdHJhdGVneTo6Z3Jpc3U6OmZvcm1hdF9leGFjdF9vcHQ6OmhiYzcwYzI5N2IzMTc4NTQ3YElzb2xhbmFfcHJvZ3JhbTo6cHVia2V5OjpQdWJrZXk6OmNyZWF0ZV9wcm9ncmFtX2FkZHJlc3M6OmhmNTlkYjMwNmRkMjg5NTdkYT5lZDI1NTE5X2RhbGVrOjprZXlwYWlyOjpLZXlwYWlyOjpmcm9tX2J5dGVzOjpoYjEwMmI1N2UwODMyYmJmZWJjPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBhbGxvYzo6dmVjOjpzcGVjX2Zyb21faXRlcjo6U3BlY0Zyb21JdGVyPFQsST4+Ojpmcm9tX2l0ZXI6OmhkMWFmNjFhOGRmMTAzOGU3Y2M8YWxsb2M6OnZlYzo6VmVjPFQ+IGFzIGFsbG9jOjp2ZWM6OnNwZWNfZnJvbV9pdGVyOjpTcGVjRnJvbUl0ZXI8VCxJPj46OmZyb21faXRlcjo6aDJmYTQzZWE3ZmY0MWY1ODNkbDxjb3JlOjppdGVyOjphZGFwdGVyczo6Y2hhaW46OkNoYWluPEEsQj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+Ojpmb2xkOjpoNTRkYTlkODNjN2VjNmJhZWVjPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBhbGxvYzo6dmVjOjpzcGVjX2Zyb21faXRlcjo6U3BlY0Zyb21JdGVyPFQsST4+Ojpmcm9tX2l0ZXI6Omg0ZjdkZTEwNDU3MWRlZDkwZldjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OnU2NDo6ZmllbGQ6OkZpZWxkRWxlbWVudDUxOjpwb3cyazo6aDgwMmQyOTYyZGY3YTI4OTlnZGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6bWVyZ2VfdHJhY2tpbmdfY2hpbGRfZWRnZTo6aGU4MTlmZjYwZjkyOTRhNjJoRTxzZXJkZTo6ZGU6OlVuZXhwZWN0ZWQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNWY4N2QyMTg1ZWQ4YTJhOWnWAWN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6Y3VydmVfbW9kZWxzOjo8aW1wbCBjb3JlOjpvcHM6OmFyaXRoOjpTdWI8JmN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6Y3VydmVfbW9kZWxzOjpBZmZpbmVOaWVsc1BvaW50PiBmb3IgJmN1cnZlMjU1MTlfZGFsZWs6OmVkd2FyZHM6OkVkd2FyZHNQb2ludD46OnN1Yjo6aDIyZDQzM2FkODZjNWU2ZmZqW2FsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6YnVsa19zdGVhbF9yaWdodDo6aDI4M2EwMzg0ZmNjYTMzYjlr1gFjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OmN1cnZlX21vZGVsczo6PGltcGwgY29yZTo6b3BzOjphcml0aDo6QWRkPCZjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OmN1cnZlX21vZGVsczo6QWZmaW5lTmllbHNQb2ludD4gZm9yICZjdXJ2ZTI1NTE5X2RhbGVrOjplZHdhcmRzOjpFZHdhcmRzUG9pbnQ+OjphZGQ6Omg1ZTMyNzliNGMzYjk0ZmY5bNoBY3VydmUyNTUxOV9kYWxlazo6YmFja2VuZDo6c2VyaWFsOjpjdXJ2ZV9tb2RlbHM6OjxpbXBsIGNvcmU6Om9wczo6YXJpdGg6OlN1YjwmY3VydmUyNTUxOV9kYWxlazo6YmFja2VuZDo6c2VyaWFsOjpjdXJ2ZV9tb2RlbHM6OlByb2plY3RpdmVOaWVsc1BvaW50PiBmb3IgJmN1cnZlMjU1MTlfZGFsZWs6OmVkd2FyZHM6OkVkd2FyZHNQb2ludD46OnN1Yjo6aGI0MTc3YzYzMzgwNDQ5NjRt2gFjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OmN1cnZlX21vZGVsczo6PGltcGwgY29yZTo6b3BzOjphcml0aDo6QWRkPCZjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OmN1cnZlX21vZGVsczo6UHJvamVjdGl2ZU5pZWxzUG9pbnQ+IGZvciAmY3VydmUyNTUxOV9kYWxlazo6ZWR3YXJkczo6RWR3YXJkc1BvaW50Pjo6YWRkOjpoM2I1YjJmN2IxMWY2ZDJjZm5qc29sYW5hX3Byb2dyYW06Ondhc206OnB1YmtleTo6PGltcGwgc29sYW5hX3Byb2dyYW06OnB1YmtleTo6UHVia2V5Pjo6ZmluZFByb2dyYW1BZGRyZXNzOjpoMzVlZWIxZDI3MWMwY2YzMG8sY29yZTo6Zm10OjpGb3JtYXR0ZXI6OnBhZDo6aGM3NmVlZjhkNTc3OTQ5ODVwMTxzdHIgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDc1NDE3MDAzNTk5OWY2YjVxQmNvcmU6OmZtdDo6ZmxvYXQ6OmZsb2F0X3RvX2RlY2ltYWxfY29tbW9uX2V4YWN0OjpoMDZkMWM5YjQ2MjE5MjUxNnI1Y29yZTo6Zm10OjpGb3JtYXR0ZXI6OnBhZF9pbnRlZ3JhbDo6aGRmMGEwMWU5YjdmNTQ0NjlzYGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6bWVyZ2VfdHJhY2tpbmdfcGFyZW50OjpoYWNiMzE2OTkxYmRmNWNjZXR5PGVkMjU1MTlfZGFsZWs6OnNpZ25hdHVyZTo6SW50ZXJuYWxTaWduYXR1cmUgYXMgY29yZTo6Y29udmVydDo6VHJ5RnJvbTwmZWQyNTUxOTo6U2lnbmF0dXJlPj46OnRyeV9mcm9tOjpoMDBlZWY4NmU3ZGE1MzJmMHVCZWQyNTUxOV9kYWxlazo6cHVibGljOjpQdWJsaWNLZXk6OnZlcmlmeV9zdHJpY3Q6OmgzZGU0Y2JmNGI0MWIyNTNmdmk8cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpEZWNpbWFsIGFzIHJ1c3RfZGVjaW1hbDo6bWF0aHM6Ok1hdGhlbWF0aWNhbE9wcz46OmNoZWNrZWRfcG93dTo6aDY3ZWJlMWM1YjhjNWI4ZDd3TGNvbXBpbGVyX2J1aWx0aW5zOjppbnQ6OnNwZWNpYWxpemVkX2Rpdl9yZW06OnUxMjhfZGl2X3JlbTo6aGI0Y2YzN2IyMDU5YzMyZGZ4W2N1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6Y3VydmVfbW9kZWxzOjpQcm9qZWN0aXZlUG9pbnQ6OmRvdWJsZTo6aGI4ZjBiZTRjMjMyMmQ3NjN5DV9fcmRsX3JlYWxsb2N6Yzxzb2xhbmFfcHJvZ3JhbTo6c2hvcnRfdmVjOjpTaG9ydFZlY1Zpc2l0b3I8VD4gYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc2VxOjpoYjdkMzM5MWFlMThiOGEyMXtDY3VydmUyNTUxOV9kYWxlazo6d2luZG93OjpMb29rdXBUYWJsZTxUPjo6c2VsZWN0OjpoNDA3Y2ZkNDIyNjU2OTVlMHxMY3VydmUyNTUxOV9kYWxlazo6ZWR3YXJkczo6Q29tcHJlc3NlZEVkd2FyZHNZOjpkZWNvbXByZXNzOjpoOGJkZTVhYjdiMmVmMjVlNH1bPHNvbGFuYV9wcm9ncmFtOjppbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb25FcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNTIxYzBmYzQwNTRkMmYyOX4sYnM1ODo6ZGVjb2RlOjpkZWNvZGVfaW50bzo6aDIxMDc3ODA0MGNmZDNjNjJ/YTxzaGEyOjpzaGE1MTI6OlNoYTUxMiBhcyBkaWdlc3Q6OmZpeGVkOjpGaXhlZE91dHB1dERpcnR5Pjo6ZmluYWxpemVfaW50b19kaXJ0eTo6aDgzNzJkYjY4MjBlZTFkMmWAAVY8WyZUOyAxXSBhcyBzb2xhbmFfc2RrOjpzaWduZXI6OnNpZ25lcnM6OlNpZ25lcnM+Ojp0cnlfc2lnbl9tZXNzYWdlOjpoOTVkNmI4OTBkNjIwZTA4ZIEBbzxlZDI1NTE5X2RhbGVrOjprZXlwYWlyOjpLZXlwYWlyIGFzIHNpZ25hdHVyZTo6c2lnbmVyOjpTaWduZXI8ZWQyNTUxOTo6U2lnbmF0dXJlPj46OnRyeV9zaWduOjpoNjk2NDUyYTBkNTgxYjhiNIIBPHJ1c3RfZGVjaW1hbDo6b3BzOjpjb21tb246OkJ1ZjI0OjpyZXNjYWxlOjpoZjBkNDIzM2IyNGViYzQwY4MBLGJzNTg6OmVuY29kZTo6ZW5jb2RlX2ludG86Omg4ZWEwYTA2MDgzMzk5OTNjhAE3c29sYW5hX3Byb2dyYW06Omhhc2g6Okhhc2hlcjo6cmVzdWx0OjpoN2FmMWI5MDQ0NDQzODAxNYUBUzxjb3JlOjpmbXQ6OmJ1aWxkZXJzOjpQYWRBZGFwdGVyIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6OmhkNDdiNTZkZWVkNDQ1NmNjhgFnPCZtdXQgYmluY29kZTo6ZGU6OkRlc2VyaWFsaXplcjxSLE8+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfc3RydWN0OjpoNzFhZjZhNDI0NjBjNmM5NYcBRWNvcmU6OmZtdDo6ZmxvYXQ6OmZsb2F0X3RvX2RlY2ltYWxfY29tbW9uX3Nob3J0ZXN0OjpoNzAyZTA2OThlYjg2NTBlMogBMmNvbXBpbGVyX2J1aWx0aW5zOjptZW06Om1lbW1vdmU6OmgxZDE1OGNjNmE4OWEwNmJkiQFaYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+OjpidWxrX3N0ZWFsX2xlZnQ6OmgwZmFjZTIzODQyNWVkNTJhigE7c29sYW5hX3Nkazo6c2lnbmF0dXJlOjpTaWduYXR1cmU6OnZlcmlmeTo6aGUzMDdiNjg0YWU1NTk0NDeLAUk8YmluY29kZTo6ZXJyb3I6OkVycm9yS2luZCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg0ZTY0Mjc3NTQ3ODVkMjk0jAExY29yZTo6c3RyOjpjb252ZXJ0czo6ZnJvbV91dGY4OjpoZjRjZTQzMzhjMDYyYzBiMY0BS3NvbGFuYV9wcm9ncmFtOjpzeXN0ZW1faW5zdHJ1Y3Rpb246OmNyZWF0ZV9ub25jZV9hY2NvdW50OjpoNzVlMDRkOWI2NmE4OGVmM44BYzxzb2xhbmFfcHJvZ3JhbTo6c2hvcnRfdmVjOjpTaG9ydFZlY1Zpc2l0b3I8VD4gYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc2VxOjpoYTgxZDkyYmY3NjFhYmIwM48BNnJ1c3RfZGVjaW1hbDo6b3BzOjphZGQ6OmFsaWduZWRfYWRkOjpoNDg4NjI0NjVjYmRkYmJjNZABuAJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpyZW1vdmU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPj46OnJlbW92ZV9rdl90cmFja2luZzo6aDEyZDhjYWE3YzQwYzQ3MzaRAT5jb3JlOjpmbXQ6OkZvcm1hdHRlcjo6d3JpdGVfZm9ybWF0dGVkX3BhcnRzOjpoZDVmNGI2ZDAzNzQyOWZjY5IBNHN0ZDo6c3luYzo6b25jZTo6T25jZTo6Y2FsbF9pbm5lcjo6aGVjYzdjNjZhN2RlN2U5OGWTAWxzb2xhbmFfcHJvZ3JhbTo6d2FzbTo6cHVia2V5Ojo8aW1wbCBzb2xhbmFfcHJvZ3JhbTo6cHVia2V5OjpQdWJrZXk+OjpjcmVhdGVQcm9ncmFtQWRkcmVzczo6aDNmMWFkM2I2YmIwNzkxN2WUAU9zb2xhbmFfcHJvZ3JhbTo6c3lzdGVtX2luc3RydWN0aW9uOjpjcmVhdGVfYWNjb3VudF93aXRoX3NlZWQ6OmgyNWRhYmEwOTM5NzY5ZGI2lQFPc29sYW5hX3Byb2dyYW06Om1lc3NhZ2U6OmxlZ2FjeTo6TWVzc2FnZTo6bmV3X3dpdGhfYmxvY2toYXNoOjpoM2I2NmExOTZjMTU5MGVlNZYBI2NvcmU6OmZtdDo6d3JpdGU6OmhkNjFiYjk2OTM5MGJmZjU2lwE7cnVzdF9kZWNpbWFsOjpvcHM6OmFkZDo6YWRkX3N1Yl9pbnRlcm5hbDo6aGRjMjFmOWU5ODIwYWFhZmOYAUpjdXJ2ZTI1NTE5X2RhbGVrOjplZHdhcmRzOjpFZHdhcmRzUG9pbnQ6OmlzX3NtYWxsX29yZGVyOjpoYmZkMTA3OWUyNzhhNGQ3N5kBGW9yYWNsZXJlZ2lzdHJ5X2FkZF9vcmFjbGWaATxjb3JlOjpmbXQ6OkZvcm1hdHRlcjo6cGFkX2Zvcm1hdHRlZF9wYXJ0czo6aDE1NmFmODdlNTRiMzAxYjGbAV48c29sYW5hX3Nkazo6dHJhbnNhY3Rpb246OmVycm9yOjpUcmFuc2FjdGlvbkVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiNDE4NzAwZTA4Y2FhMjVhnAFgPHNvbGFuYV9wcm9ncmFtOjpzaG9ydF92ZWM6OlNob3J0VTE2VmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zZXE6OmhjZjdjMmZhYzRhZGY0ZWU4nQFjPHNvbGFuYV9wcm9ncmFtOjpzaG9ydF92ZWM6OlNob3J0VmVjVmlzaXRvcjxUPiBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zZXE6Omg2Mzc1MTY0ZWJkY2Y1ZjQyngEkc3RkOjp0aHJlYWQ6OnBhcms6OmgzNDMzMWVkOTk5NGJkOTVjnwFJc29sYW5hX3Byb2dyYW06OnN5c3RlbV9pbnN0cnVjdGlvbjo6YWxsb2NhdGVfd2l0aF9zZWVkOjpoYjk1OWQ5MThkYjJmZTA4MaABVDxlZDI1NTE5X2RhbGVrOjplcnJvcnM6OkludGVybmFsRXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYjM4NGNlNmY2N2U5ZDU5OKEBZHNvbGFuYV9wcm9ncmFtOjptZXNzYWdlOjpjb21waWxlZF9rZXlzOjpDb21waWxlZEtleXM6OnRyeV9pbnRvX21lc3NhZ2VfY29tcG9uZW50czo6aGJiZjg4OWVjMDlhNWI2NDOiAVpjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OnU2NDo6ZmllbGQ6OkZpZWxkRWxlbWVudDUxOjp0b19ieXRlczo6aDRmMGY1YTc2OWVjMWVkODijATpjb21waWxlcl9idWlsdGluczo6bWF0aDo6bGlibTo6ZXhwOjpleHA6OmgyMmI0MWVkOWY5ZGJhMTE3pAFNc29sYW5hX3Byb2dyYW06OnN5c3RlbV9pbnN0cnVjdGlvbjo6d2l0aGRyYXdfbm9uY2VfYWNjb3VudDo6aDQ4M2MxMDJjMjBkNzcyZDilAV08anNfc3lzOjpBcnJheSBhcyBjb3JlOjppdGVyOjp0cmFpdHM6OmNvbGxlY3Q6OkZyb21JdGVyYXRvcjxBPj46OmZyb21faXRlcjo6aGFmNGJmNWU2YjcyZTg4NmOmATpydXN0X2RlY2ltYWw6OmRlY2ltYWw6OkRlY2ltYWw6OnJlc2NhbGU6OmgxMmE4ZjM5YWNhZjJhYTQ3pwFBZGxtYWxsb2M6OmRsbWFsbG9jOjpEbG1hbGxvYzxBPjo6ZGlzcG9zZV9jaHVuazo6aDAwMGZkMTI2ZTQ1NzQyMjKoAUdzb2xhbmFfcHJvZ3JhbTo6c3lzdGVtX2luc3RydWN0aW9uOjphc3NpZ25fd2l0aF9zZWVkOjpoMjQzZTgyYjM5NDgxZWE2OakBRGdlbmVyaWNfYXJyYXk6OkdlbmVyaWNBcnJheTxULE4+Ojpmcm9tX2V4YWN0X2l0ZXI6OmhjMWUzNzRkZWU2NjVjYmRkqgFaPGN1cnZlMjU1MTlfZGFsZWs6OmVkd2FyZHM6OkVkd2FyZHNQb2ludCBhcyBjb3JlOjpvcHM6OmFyaXRoOjpOZWc+OjpuZWc6Omg4YjY3OGVhM2RkYWVjMWZkqwEVcHVia2V5X2NyZWF0ZVdpdGhTZWVkrAFJc29sYW5hX3Byb2dyYW06OnN5c3RlbV9pbnN0cnVjdGlvbjo6dHJhbnNmZXJfd2l0aF9zZWVkOjpoYjBlOTBkNjVhZjk4OTQ5Y60BEWluc3RydWN0aW9uc19wdXNorgFQYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjplbnRyeTo6RW50cnk8SyxWPjo6b3JfZGVmYXVsdDo6aGM5MWE4NDk4MmJiNjMyZTKvAWc8Jm11dCBiaW5jb2RlOjpkZTo6RGVzZXJpYWxpemVyPFIsTz4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9zdHJ1Y3Q6Omg3NzRhMDY2ZmNhNzQ4MWJmsAFHPHN0ZDo6aW86OmVycm9yOjpFcnJvcktpbmQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGZjMmI3NzhiYmY5NmRmYjaxASVhbGxvYzo6Zm10Ojpmb3JtYXQ6OmhmNjMwNTVkMGU3YWVhNjc0sgFhPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMzg1ZDZiOTFjMTBhMzk2MrMBE3RyYW5zYWN0aW9uX21lc3NhZ2W0AUdjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpEZWJ1ZyBmb3IgdTY0Pjo6Zm10OjpoODhmOTY0MjBjNGU4MWJhY7UBRXNvbGFuYV9wcm9ncmFtOjpzeXN0ZW1faW5zdHJ1Y3Rpb246OmNyZWF0ZV9hY2NvdW50OjpoYzcyYWU1MzRjOGJhNjI4ZrYBXDxydXN0X2RlY2ltYWw6OmRlY2ltYWw6OkRlY2ltYWwgYXMgbnVtX3RyYWl0czo6Y2FzdDo6VG9QcmltaXRpdmU+Ojp0b19mNjQ6OmhjYTFjYjJjMDVjNjFmZjQ4twFcY3VydmUyNTUxOV9kYWxlazo6YmFja2VuZDo6c2VyaWFsOjp1NjQ6OmZpZWxkOjpGaWVsZEVsZW1lbnQ1MTo6ZnJvbV9ieXRlczo6aDdkY2MxZDhmOWU2YjEyOTO4ATdydXN0X2RlY2ltYWw6Om9wczo6Y21wOjpjbXBfaW50ZXJuYWw6OmhlZTFiYjM0YTljMzczODQ0uQF6Y3VydmUyNTUxOV9kYWxlazo6ZmllbGQ6OjxpbXBsIGN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6dTY0OjpmaWVsZDo6RmllbGRFbGVtZW50NTE+Ojpwb3cyMjUwMTo6aDA4NWM1NDdhOWU1NzMxMzS6AVhjb3JlOjpudW06OmZsdDJkZWM6OnN0cmF0ZWd5OjpncmlzdTo6Zm9ybWF0X2V4YWN0X29wdDo6cG9zc2libHlfcm91bmQ6Omg3ZDJmNDUzNGVkMmYxOTU3uwGNATxjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OmN1cnZlX21vZGVsczo6QWZmaW5lTmllbHNQb2ludCBhcyBzdWJ0bGU6OkNvbmRpdGlvbmFsbHlTZWxlY3RhYmxlPjo6Y29uZGl0aW9uYWxfYXNzaWduOjpoNjRhMGNkZDk1ZjZjN2U5Y7wBSzxUIGFzIGN1cnZlMjU1MTlfZGFsZWs6OnRyYWl0czo6SXNJZGVudGl0eT46OmlzX2lkZW50aXR5OjpoZWI5ZWU1MDUzMjA0ZjFjYb0BTjxnZnhfc3NsX3dhc206OmVycm9yczo6U1NMRXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZGM0ZTk5MmI1YTdkYzE4Nr4BMmdmeF9zc2xfd2FzbTo6cGFpcjo6UGFpcjo6cHJpY2U6OmhiYjVmMjFlZWMyMmJmNTVhvwEvYmluY29kZTo6aW50ZXJuYWw6OnNlcmlhbGl6ZTo6aDE5MDFjMTUyYWE5NzkyNjfAAU5zb2xhbmFfcHJvZ3JhbTo6c3lzdGVtX2luc3RydWN0aW9uOjphdXRob3JpemVfbm9uY2VfYWNjb3VudDo6aDZlNTIxZDQ0YTkyMGQxMTfBATI8Y2hhciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMmU5ZWYyM2NkYjU2OTJmOcIBXzxnZW5lcmljX2FycmF5OjppbXBsX3NlcmRlOjpHQVZpc2l0b3I8VCxOPiBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zZXE6OmhjOGE3ZWU0NWYxZjgxYzhjwwEyc2hhMjo6c2hhNTEyOjpFbmdpbmU1MTI6OmZpbmlzaDo6aGI0ZTcwNzE4MDM3YjIxYznEAUY8Jm11dCBUIGFzIGJzNTg6OmVuY29kZTo6RW5jb2RlVGFyZ2V0Pjo6ZW5jb2RlX3dpdGg6OmhjZDI4MDg5MDgxYTU0OTc2xQFHc29sYW5hX3Byb2dyYW06Om1lc3NhZ2U6OmxlZ2FjeTo6Y29tcGlsZV9pbnN0cnVjdGlvbjo6aDUwOWRkNjBlZGJjM2Q0OTDGAUVjb3JlOjpudW06OmJpZ251bTo6QmlnMzJ4NDA6Om11bF9kaWdpdHM6Om11bF9pbm5lcjo6aGNjZWE0OGEzNDljNjgwNmbHAWdzdGQ6OmlvOjplcnJvcjo6PGltcGwgY29yZTo6Zm10OjpEZWJ1ZyBmb3Igc3RkOjppbzo6ZXJyb3I6OnJlcHJfdW5wYWNrZWQ6OlJlcHI+OjpmbXQ6OmhhZDc0NDdkYWNhZDRiZjA2yAExY29uc29sZV9lcnJvcl9wYW5pY19ob29rOjpob29rOjpoZTk0MGJhMTBhYWM0OWNlNMkBRGN1cnZlMjU1MTlfZGFsZWs6OmVkd2FyZHM6OkVkd2FyZHNQb2ludDo6Y29tcHJlc3M6OmhlYjdmY2FmMWNkNWY2YTY2ygFLc29sYW5hX3Byb2dyYW06OnB1YmtleTo6UHVia2V5Ojp0cnlfZmluZF9wcm9ncmFtX2FkZHJlc3M6OmhkYjk2YzQzMTc0NTczMWQzywEwZGxtYWxsb2M6OkRsbWFsbG9jPEE+OjptYWxsb2M6Omg3YmZhZjkzMDFkZWNmOWZizAFjPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBhbGxvYzo6dmVjOjpzcGVjX2Zyb21faXRlcjo6U3BlY0Zyb21JdGVyPFQsST4+Ojpmcm9tX2l0ZXI6Omg5NTVmMWIxY2NkNjAyY2Q0zQE4Y29yZTo6bnVtOjpmbHQyZGVjOjpkaWdpdHNfdG9fZGVjX3N0cjo6aGE3ZWNkM2EyMGNhZmYxNDbOAQtfX2Zsb2F0dGlkZs8BYzxzb2xhbmFfcHJvZ3JhbTo6c2hvcnRfdmVjOjpTaG9ydFZlY1Zpc2l0b3I8VD4gYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc2VxOjpoZWFiNjE0NDZjOGJiYzc5N9ABP3NvbGFuYV9wcm9ncmFtOjpzeXN0ZW1faW5zdHJ1Y3Rpb246OnRyYW5zZmVyOjpoZTI4YzRjY2IyNWQyMzQxNtEBN3NvbGFuYV9wcm9ncmFtOjpzaG9ydF92ZWM6OnNlcmlhbGl6ZTo6aGJhODk2YzNjM2RhMzZkYmLSATdzb2xhbmFfcHJvZ3JhbTo6c2hvcnRfdmVjOjpzZXJpYWxpemU6OmhlOGNlNzY5ZDI5NGJiZjhl0wE3c29sYW5hX3Byb2dyYW06OnNob3J0X3ZlYzo6c2VyaWFsaXplOjpoMGRkN2JhOTNkOTIyYWI5MNQBN3NvbGFuYV9wcm9ncmFtOjpzaG9ydF92ZWM6OnNlcmlhbGl6ZTo6aDRjM2I1YzdhNjM0MjRhNDXVATdzb2xhbmFfcHJvZ3JhbTo6c2hvcnRfdmVjOjpzZXJpYWxpemU6OmhhOWU2ODc3NjVkZDZmOTI11gFNPHNvbGFuYV9zZGs6OnNpZ25lcjo6U2lnbmVyRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDYzOGEzMDQwNjU0OGM2NTfXASJzeXN0ZW1pbnN0cnVjdGlvbl90cmFuc2ZlcldpdGhTZWVk2AEzcnVzdF9kZWNpbWFsOjpvcHM6OmNtcDo6Y21wX2ltcGw6Omg0NDBiYmEzYzhmZDAzYzZh2QEnc3lzdGVtaW5zdHJ1Y3Rpb25fY3JlYXRlQWNjb3VudFdpdGhTZWVk2gE3Y29yZTo6cGFuaWNraW5nOjphc3NlcnRfZmFpbGVkX2lubmVyOjpoZjUxNWJlODQ2MzJmZDUyY9sBdTxlZDI1NTE5X2RhbGVrOjpwdWJsaWM6OlB1YmxpY0tleSBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPCZlZDI1NTE5X2RhbGVrOjpzZWNyZXQ6OlNlY3JldEtleT4+Ojpmcm9tOjpoMTc2NzYwYjE2YWU3OGQzONwBRTxzdGQ6OmlvOjplcnJvcjo6RXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZmFkN2M0NTE0ZjYzODNhN90BMmNvcmU6OnVuaWNvZGU6OnByaW50YWJsZTo6Y2hlY2s6Omg2ZTQ4OWVmMWI1ZGUzYjBk3gE9c29sYW5hX3Byb2dyYW06OnN5c3RlbV9pbnN0cnVjdGlvbjo6YXNzaWduOjpoNzQ3YzY1MjM5M2Y0NjU4Zd8BOmNvcmU6OmZtdDo6YnVpbGRlcnM6OkRlYnVnU3RydWN0OjpmaWVsZDo6aDViYWY4ZTEyZTdhODFlNGTgAThzdGQ6OnRocmVhZDo6bG9jYWw6OkxvY2FsS2V5PFQ+Ojp3aXRoOjpoNmRiYjQ3NDdlN2QxNWVkZuEBLnNvbGFuYV9wcm9ncmFtOjpoYXNoOjpoYXNodjo6aGE4YjAwMmRhZWViN2FjOWPiARtwdWJrZXlfY3JlYXRlUHJvZ3JhbUFkZHJlc3PjAUVjb3JlOjpjaGFyOjptZXRob2RzOjo8aW1wbCBjaGFyPjo6ZXNjYXBlX2RlYnVnX2V4dDo6aDYxNTUxZmU3ZjdmN2I3ZDbkARd0cmFuc2FjdGlvbl9wYXJ0aWFsU2lnbuUBRjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aGUzZGZlYTY1OWZkYjkwNzHmATVjb3JlOjpyZXN1bHQ6OlJlc3VsdDxULEU+OjptYXBfZXJyOjpoYzE3YzhkOTVhYTlmNjFmMOcBR2NvcmU6OnVuaWNvZGU6OnVuaWNvZGVfZGF0YTo6Z3JhcGhlbWVfZXh0ZW5kOjpsb29rdXA6OmgxZWZmZDEwN2ZhNTI1NTlk6AENX19mbG9hdHVudGlkZukBZzwmbXV0IGJpbmNvZGU6OmRlOjpEZXNlcmlhbGl6ZXI8UixPPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3N0cnVjdDo6aDUwYjM2ZTZiZjUzNTBjNjXqATs8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoMTc2MTZjYjY4NGU3YmUwZusBN3NvbGFuYV9wcm9ncmFtOjpzaG9ydF92ZWM6OnNlcmlhbGl6ZTo6aDdiMmI2YjNmNTQyODNhZWXsATs8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoNDY3MWVhZmNjMTM2M2RhMO0BN3NvbGFuYV9wcm9ncmFtOjpzaG9ydF92ZWM6OnNlcmlhbGl6ZTo6aDI0NTdmMTZhNjAwMzNhMzjuATs8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoZDI5ZWI1OTgzNTY0MmU4Y+8BMWdldHJhbmRvbTo6aW1wOjpnZXRyYW5kb21faW5pdDo6aDIyMzE1YWExY2UxNThiMjnwAVI8Y29yZTo6cGFuaWM6OnBhbmljX2luZm86OlBhbmljSW5mbyBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzOTgyY2UwNmY0MTVjNTBk8QFKPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfY2hhcjo6aDIyNmE2ZmI3NmE1ZWU3NTfyAUo8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoMjI2YTZmYjc2YTVlZTc1N/MBSjxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2NoYXI6OmgyMjZhNmZiNzZhNWVlNzU39AE3c29sYW5hX3Byb2dyYW06OnNob3J0X3ZlYzo6c2VyaWFsaXplOjpoZTY5ZGIyN2EzY2NlOGQ5OPUBSjxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2NoYXI6OmgyMjZhNmZiNzZhNWVlNzU39gFSPGVkMjU1MTlfZGFsZWs6OmVycm9yczo6SW50ZXJuYWxFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNGQ1NzA1ZTgwMmQxMGY2MfcBSjxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2NoYXI6OmgyMjZhNmZiNzZhNWVlNzU3+AE3c29sYW5hX3Byb2dyYW06OnNob3J0X3ZlYzo6c2VyaWFsaXplOjpoZjRlMWUwYzhiMzhmZTI0NPkBSjxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2NoYXI6OmgyMjZhNmZiNzZhNWVlNzU3+gFyY3VydmUyNTUxOV9kYWxlazo6c2NhbGFyOjo8aW1wbCBjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OnU2NDo6c2NhbGFyOjpTY2FsYXI1Mj46OnBhY2s6Omg2Nzg4MDc3NTk4MDM2NTAx+wFKPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfY2hhcjo6aDIyNmE2ZmI3NmE1ZWU3NTf8AS5hbGxvYzo6c3RyaW5nOjpTdHJpbmc6OnB1c2g6OmhmOGJiOThjYTY3ZDYyNDM4/QFcPHJ1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbCBhcyBudW1fdHJhaXRzOjpjYXN0OjpUb1ByaW1pdGl2ZT46OnRvX3U2NDo6aDdiN2NiN2Q5NTMzOTE3MDj+AUhhbnlob3c6OmZtdDo6PGltcGwgYW55aG93OjplcnJvcjo6RXJyb3JJbXBsPjo6ZGlzcGxheTo6aDJkOTZmNTc3Y2U1M2Y5YjL/AVdjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OnU2NDo6c2NhbGFyOjpTY2FsYXI1Mjo6ZnJvbV9ieXRlczo6aGUwYzFmNDE4MmM5ZWM1NmWAAko8cnVzdF9kZWNpbWFsOjplcnJvcjo6RXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoY2IyNGM0OTYyODNjMTQ2MYECMWNvbXBpbGVyX2J1aWx0aW5zOjptZW06Om1lbWNweTo6aDMyNjFlZDViYzk1NzI3MmaCAi9iaW5jb2RlOjppbnRlcm5hbDo6c2VyaWFsaXplOjpoMWYxMDk4MGVkMDI1MmRmOYMCInN5c3RlbWluc3RydWN0aW9uX2FsbG9jYXRlV2l0aFNlZWSEAkxzb2xhbmFfcHJvZ3JhbTo6c3lzdGVtX2luc3RydWN0aW9uOjphZHZhbmNlX25vbmNlX2FjY291bnQ6OmhmOWJiMTVhZWUxMDZiZDlkhQIgc3lzdGVtaW5zdHJ1Y3Rpb25fYXNzaWduV2l0aFNlZWSGAj9zb2xhbmFfcHJvZ3JhbTo6c3lzdGVtX2luc3RydWN0aW9uOjphbGxvY2F0ZTo6aDBjZTQxZDhkYWU3NmRmNjeHAi9jb3JlOjpmbXQ6Om51bTo6aW1wOjpmbXRfdTY0OjpoMmQ0MDQ5OTUwYzAyMzI5OYgCRmNvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6OkRlYnVnIGZvciB1OD46OmZtdDo6aDUyMGJiZjM5YWE3NWY1MzCJAlg8Y3VydmUyNTUxOV9kYWxlazo6ZWR3YXJkczo6RWR3YXJkc1BvaW50IGFzIGNvcmU6OmNtcDo6UGFydGlhbEVxPjo6ZXE6Omg0YTgxNjY3MTZlOWI5Mjc4igIjanNfc3lzOjp0cnlfaXRlcjo6aGI1YTZiMDY1NWIyMTg2MTCLAkdjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpEZWJ1ZyBmb3IgdTMyPjo6Zm10OjpoODIxNGViNTkyNTY2ZjQ0MIwCOmNvbXBpbGVyX2J1aWx0aW5zOjptYXRoOjpsaWJtOjpsb2c6OmxvZzo6aGMxZDY4MTgxYTUwNThmNGGNAmM8YWxsb2M6OnZlYzo6VmVjPFQ+IGFzIGFsbG9jOjp2ZWM6OnNwZWNfZnJvbV9pdGVyOjpTcGVjRnJvbUl0ZXI8VCxJPj46OmZyb21faXRlcjo6aGJmNjUwZDVkZGI1MTllY2GOAh9zeXN0ZW1pbnN0cnVjdGlvbl9jcmVhdGVBY2NvdW50jwI5Y29yZTo6Zm10OjpidWlsZGVyczo6RGVidWdUdXBsZTo6ZmllbGQ6OmhiMzg4NjY1MTM4Mjg0NmQzkAK9AmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkR5aW5nLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT4+OjpkZWFsbG9jYXRpbmdfbmV4dF91bmNoZWNrZWQ6OmgxNGQ3OTVlY2RhYTU5ODBhkQImc3lzdGVtaW5zdHJ1Y3Rpb25fd2l0aGRyYXdOb25jZUFjY291bnSSAj9ydXN0X2RlY2ltYWw6Om9wczo6Y29tbW9uOjpCdWYxMjo6ZmluZF9zY2FsZTo6aGYzZTY2MDk2NzNlNTA5ZTeTAidzeXN0ZW1pbnN0cnVjdGlvbl9hdXRob3JpemVOb25jZUFjY291bnSUAkk8dTY0IGFzIGdmeF9zb2xhbmFfY29tbW9uOjpmZWU6OlNwbGl0RmVlPjo6Y29tYmluZV9mZWU6OmgxOGY0ZDI1OGY3M2VmMzE1lQJGZGxtYWxsb2M6OmRsbWFsbG9jOjpEbG1hbGxvYzxBPjo6aW5zZXJ0X2xhcmdlX2NodW5rOjpoYWE3YTFlZmU0OTE1NGM0MpYCP3NvbGFuYV9zZGs6OnRyYW5zYWN0aW9uOjpUcmFuc2FjdGlvbjo6dmVyaWZ5OjpoNjVhNjliZTMxNWYxZTE2YpcCOWNvcmU6OmZtdDo6YnVpbGRlcnM6OkRlYnVnSW5uZXI6OmVudHJ5OjpoNDJkMTg0YzUzNGVhMzA4MJgCEnB1YmtleV9jb25zdHJ1Y3RvcpkCEGhhc2hfY29uc3RydWN0b3KaAkZkbG1hbGxvYzo6ZGxtYWxsb2M6OkRsbWFsbG9jPEE+Ojp1bmxpbmtfbGFyZ2VfY2h1bms6OmgxMGNlODgyNmE2OWYxOTAzmwI0PGNoYXIgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoY2ZmMGRkNzhhMzQ0Zjc5N5wCSGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWPjo6cmVtb3ZlOjpoYmRmYmNiN2I1YWM4MTQyOZ0CSnN0ZDo6c3lzX2NvbW1vbjo6dGhyZWFkX3Bhcmtlcjo6Z2VuZXJpYzo6UGFya2VyOjp1bnBhcms6OmhkY2VkNDNhMDdhY2VlYTVhngIiX193Ymdfc2V0X21lc3NhZ2VfcmVjZW50X2Jsb2NraGFzaJ8CsAJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbW11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+Pjo6bmV4dF91bmNoZWNrZWQ6Omg2ZWIzNGQ5NGMwM2FmY2MxoAJLZGxtYWxsb2M6OmRsbWFsbG9jOjpEbG1hbGxvYzxBPjo6cmVsZWFzZV91bnVzZWRfc2VnbWVudHM6OmhmYjAyMTc2ZTUwODUyYjc4oQI8PFQgYXMgYWxsb2M6OnN0cmluZzo6VG9TdHJpbmc+Ojp0b19zdHJpbmc6OmhlNGM4NTRiN2Q2N2I4MTI1ogJac29sYW5hX3Byb2dyYW06Ondhc206Omhhc2g6OjxpbXBsIHNvbGFuYV9wcm9ncmFtOjpoYXNoOjpIYXNoPjo6dG9TdHJpbmc6Omg2YThmNWYwOTAyYmFkODNjowIyc2hhMjo6c2hhNTEyOjpFbmdpbmU1MTI6OnVwZGF0ZTo6aDZkZjM5ZWVlZDJlODBmMmGkAkljdXJ2ZTI1NTE5X2RhbGVrOjpzY2FsYXI6OlNjYWxhcjo6ZnJvbV9jYW5vbmljYWxfYnl0ZXM6Omg3ZTAxM2FmZTk2MWQzZTI3pQJHPGJpbmNvZGU6OmVycm9yOjpFcnJvcktpbmQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGQ1NmQxNDE2MmUzZmU5NjGmApsBc29sYW5hX3Byb2dyYW06OnN5c3RlbV9pbnN0cnVjdGlvbjo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBzb2xhbmFfcHJvZ3JhbTo6c3lzdGVtX2luc3RydWN0aW9uOjpTeXN0ZW1JbnN0cnVjdGlvbj46OnNlcmlhbGl6ZTo6aDlkZWJhNTg1ZDU1NzVmZjCnAhpzeXN0ZW1pbnN0cnVjdGlvbl90cmFuc2ZlcqgCF3RyYW5zYWN0aW9uX2NvbnN0cnVjdG9yqQIYc3lzdGVtaW5zdHJ1Y3Rpb25fYXNzaWduqgIlc3lzdGVtaW5zdHJ1Y3Rpb25fYWR2YW5jZU5vbmNlQWNjb3VudKsCaDxzdGQ6OnBhbmlja2luZzo6YmVnaW5fcGFuaWNfaGFuZGxlcjo6UGFuaWNQYXlsb2FkIGFzIGNvcmU6OnBhbmljOjpCb3hNZVVwPjo6dGFrZV9ib3g6OmhmOWUyODNlMzRiYmVmYjY5rAJIc3RkOjp0aHJlYWQ6OmxvY2FsOjpsYXp5OjpMYXp5S2V5SW5uZXI8VD46OmluaXRpYWxpemU6OmhhOGQ4OGEzYTBmODRiMDFmrQJhPHJ1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbCBhcyBydXN0X2RlY2ltYWw6Om1hdGhzOjpNYXRoZW1hdGljYWxPcHM+Ojpwb3dpOjpoOGQ2YWVkNzQxNGRkODVkZK4CMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYmM2NGIxYWVhNGFjZWNjMK8CaDxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46OmZvbGQ6OmhkZWE3ZTRlODkxNDFmNjk3sAIzc2VyZGU6OmRlOjpFcnJvcjo6aW52YWxpZF9sZW5ndGg6OmhmNmEzZjI3YjM0MGRiNzM2sQIrc3RkOjp0aHJlYWQ6OlRocmVhZDo6bmV3OjpoODU2NWJhN2JhYmEwNzJmObICO3NvbGFuYV9wcm9ncmFtOjp3YXNtOjpkaXNwbGF5X3RvX2pzdmFsdWU6Omg4OWQ4MmNhNmVmODY1OWUwswJjPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBhbGxvYzo6dmVjOjpzcGVjX2Zyb21faXRlcjo6U3BlY0Zyb21JdGVyPFQsST4+Ojpmcm9tX2l0ZXI6Omg0MzU2ZmJlYTRlNjMxZGUytAI7PCZtdXQgVyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfY2hhcjo6aDg2OWM1ZGZiZGM3ZTM3ZTS1AhZfX3diZ190cmFuc2FjdGlvbl9mcmVltgIyc2VyZGU6OmRlOjpFcnJvcjo6aW52YWxpZF92YWx1ZTo6aGJmNmI3OThhYmYxMzc2ZGW3Ai9iaW5jb2RlOjppbnRlcm5hbDo6c2VyaWFsaXplOjpoN2JlNTM1MjhmN2Q2NWU1NLgCL2NvcmU6OmZtdDo6V3JpdGU6OndyaXRlX2NoYXI6OmhlZjY0MWI1MzRmODU0MTJjuQIxZWQyNTUxOTo6U2lnbmF0dXJlOjpmcm9tX2J5dGVzOjpoMWY2MGQ3YzU5MjJmOGYxZLoCVjxlZDI1NTE5OjpTaWduYXR1cmUgYXMgc2lnbmF0dXJlOjpzaWduYXR1cmU6OlNpZ25hdHVyZT46OmZyb21fYnl0ZXM6Omg5MmNiOTA1ZmFkZjkxYmRmuwIkc3lzdGVtaW5zdHJ1Y3Rpb25fY3JlYXRlTm9uY2VBY2NvdW50vAI4c29sYW5hX3Byb2dyYW06OnNob3J0X3ZlYzo6dmlzaXRfYnl0ZTo6aDRhM2E5NzJkOWUzYmJiNDK9Ag9rZXlwYWlyX3RvQnl0ZXO+AhR0cmFuc2FjdGlvbl9pc1NpZ25lZL8CRzx1NjQgYXMgZ2Z4X3NvbGFuYV9jb21tb246OmZlZTo6U3BsaXRGZWU+OjpzcGxpdF9mZWU6OmhjOTA5MTQ4NWJkMWQ3Y2M2wAJAYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlX2Zvcl9wdXNoOjpoNTU0NTY4YzYxNjhjMTAxNcECGnN5c3RlbWluc3RydWN0aW9uX2FsbG9jYXRlwgJAYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlX2Zvcl9wdXNoOjpoOGM0Y2Y1MWRkNjk3Y2Q0McMCTmFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZTo6ZG9fcmVzZXJ2ZV9hbmRfaGFuZGxlOjpoMDdmMDQ5NTkyMjkzN2Y4ZMQCQGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZV9mb3JfcHVzaDo6aDNmMGVmYTUzMDA4ZDVhMDLFAmk8cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpEZWNpbWFsIGFzIGdmeF9zb2xhbmFfY29tbW9uOjpkZWNpbWFsOjpEZWNpbWFsRXh0Pjo6ZGVzY2FsZV91cDo6aDdmMjNhMGZjODFhOWUxMTnGAms8cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpEZWNpbWFsIGFzIGdmeF9zb2xhbmFfY29tbW9uOjpkZWNpbWFsOjpEZWNpbWFsRXh0Pjo6ZGVzY2FsZV9kb3duOjpoZmQzMDRjMzYyNzFmMjE3N8cCEWtleXBhaXJfZnJvbUJ5dGVzyAJFPGdldHJhbmRvbTo6ZXJyb3I6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlMjNkM2UyZjdkNWI4OGM2yQJHPGdldHJhbmRvbTo6ZXJyb3I6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDYyMDFmN2M0ZTAzZjE2YzTKAkBhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46OnJlc2VydmVfZm9yX3B1c2g6Omg2NmI4ODY2ZWYzNmMyZjdiywI3c3RkOjpwYW5pY2tpbmc6OnJ1c3RfcGFuaWNfd2l0aF9ob29rOjpoODg4OGJiYzIwMTM4NGQ3YswCSzxjb3JlOjpzdHI6OmVycm9yOjpVdGY4RXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMDFjMWU1MjIzOWQ0MzU5OM0CSTxjb3JlOjpzdHI6OmVycm9yOjpVdGY4RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDIzMmEwMzgyOGUxOTRmYWXOAg5wdWJrZXlfdG9CeXRlc88CEl9fd2JnX21lc3NhZ2VfZnJlZdACTmFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZTo6ZG9fcmVzZXJ2ZV9hbmRfaGFuZGxlOjpoNDdlYjRkOTVhMzI1NGEyOdECTzxjb3JlOjpudW06OmVycm9yOjpUcnlGcm9tSW50RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDE1NGQ1NzQwNmJhNjhjMWHSAkw8Y29yZTo6YXJyYXk6OlRyeUZyb21TbGljZUVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg5MmRjZTI5NTdkMDFhYWI20wJAYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlX2Zvcl9wdXNoOjpoMjIwMGU3ZjhiMDY5MmJhNtQCQGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZV9mb3JfcHVzaDo6aDNkODVmMGZmNTdhOGVmYWHVAmA8cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpEZWNpbWFsIGFzIG51bV90cmFpdHM6OmNhc3Q6OkZyb21QcmltaXRpdmU+Ojpmcm9tX2Y2NDo6aDc0MjZjOWYzOTVmYjQ2MDHWAhV0cmFuc2FjdGlvbl9mcm9tQnl0ZXPXAmM8YWxsb2M6OnZlYzo6VmVjPFQ+IGFzIGFsbG9jOjp2ZWM6OnNwZWNfZnJvbV9pdGVyOjpTcGVjRnJvbUl0ZXI8VCxJPj46OmZyb21faXRlcjo6aGFjYTkyOTMxNGU4NTU4ZmLYAjtzb2xhbmFfcHJvZ3JhbTo6d2FzbTo6ZGlzcGxheV90b19qc3ZhbHVlOjpoZTdiOWNiM2ZkZmQwMmZmZdkCgQFzb2xhbmFfcHJvZ3JhbTo6bWVzc2FnZTo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBzb2xhbmFfcHJvZ3JhbTo6bWVzc2FnZTo6TWVzc2FnZUhlYWRlcj46OnNlcmlhbGl6ZTo6aGRjNDEyYTY0NjgyMjc0ZTTaAms8c29sYW5hX3Byb2dyYW06OnB1YmtleTo6UHVia2V5IGFzIHdhc21fYmluZGdlbjo6Y29udmVydDo6dHJhaXRzOjpGcm9tV2FzbUFiaT46OmZyb21fYWJpOjpoYTcyNzIyNGVjMWM0YTQ2NtsCgQFzb2xhbmFfcHJvZ3JhbTo6bWVzc2FnZTo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBzb2xhbmFfcHJvZ3JhbTo6bWVzc2FnZTo6TWVzc2FnZUhlYWRlcj46OnNlcmlhbGl6ZTo6aGJjZWM5YTEwNDgwZGJkY2XcAjticzU4OjpkZWNvZGU6OkRlY29kZUJ1aWxkZXI8ST46OmludG9fdmVjOjpoYjdmNmIyMWY1YTBlNzQyOd0CE2tleXBhaXJfY29uc3RydWN0b3LeAg5rZXlwYWlyX3B1Ymtled8CUjxjdXJ2ZTI1NTE5X2RhbGVrOjpzY2FsYXI6OlNjYWxhciBhcyB6ZXJvaXplOjpaZXJvaXplPjo6emVyb2l6ZTo6aGI1MjA5OTVjYzAwZjljYmbgAo0BZWQyNTUxOV9kYWxlazo6c2VjcmV0OjpfREVSSVZFX0Ryb3BfRk9SX1NlY3JldEtleTo6PGltcGwgY29yZTo6b3BzOjpkcm9wOjpEcm9wIGZvciBlZDI1NTE5X2RhbGVrOjpzZWNyZXQ6OlNlY3JldEtleT46OmRyb3A6OmhlNzUzMmYzMDRmOWMzNDAx4QJIPHJ1c3RfZGVjaW1hbDo6ZXJyb3I6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgxZGM5NWNkN2I2Yzc5OGU34gIiX193YmdfZ2V0X21lc3NhZ2VfcmVjZW50X2Jsb2NraGFzaOMCWmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6ZW50cnk6Ok9jY3VwaWVkRW50cnk8SyxWPjo6cmVtb3ZlX2VudHJ5OjpoZTk3YjQ1NTdhMjMxMDE3M+QCQGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZV9mb3JfcHVzaDo6aGE0MjE2Zjk3M2MxZTliMDDlAk5hbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46OnJlc2VydmU6OmRvX3Jlc2VydmVfYW5kX2hhbmRsZTo6aGUzNTE5MmJlZjUzZTNmMjbmAkM8Y29uc29sZV9sb2c6OldlYkNvbnNvbGVMb2dnZXIgYXMgbG9nOjpMb2c+Ojpsb2c6OmgxZDQ0MDY2ODg0MmQyMTg15wJAYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlX2Zvcl9wdXNoOjpoZTdhYTJiZTZjZjBmNzI0OegCTmFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZTo6ZG9fcmVzZXJ2ZV9hbmRfaGFuZGxlOjpoYTQ4MWU3MGQzOWM3NGE1YekCQHJ1c3RfZGVjaW1hbDo6b3BzOjpkaXY6OnVuc2NhbGVfZnJvbV9vdmVyZmxvdzo6aDllNmZiM2ZmYzBkNTAzMDnqAk5hbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46OnJlc2VydmU6OmRvX3Jlc2VydmVfYW5kX2hhbmRsZTo6aGI2ZWE1MmZkOTBmMzkzYmXrAkBhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46OnJlc2VydmVfZm9yX3B1c2g6Omg3YzgwM2EwNDFjNzQ1MDFj7AJOYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlOjpkb19yZXNlcnZlX2FuZF9oYW5kbGU6OmhjZmVhYWY1NjFjNDFkODZi7QJAYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlX2Zvcl9wdXNoOjpoOTg4ZGQ5ZWYxMzZhOWJlYu4CQGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZV9mb3JfcHVzaDo6aDhlMzhhMmM2YTI2M2Q1MznvAk5hbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46OnJlc2VydmU6OmRvX3Jlc2VydmVfYW5kX2hhbmRsZTo6aDc4NzU1ZmFiYjBhMjgyODDwAhdfX3diZ19pbnN0cnVjdGlvbnNfZnJlZfECR3J1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbDo6ZnJvbV9pMTI4X3dpdGhfc2NhbGU6Omg5MDU0YjM0NzJkMjM0Yzg28gIxY29tcGlsZXJfYnVpbHRpbnM6Om1lbTo6bWVtc2V0OjpoYjdiYWVhMTk0OGRkZTA5ZvMCO3NvbGFuYV9wcm9ncmFtOjp3YXNtOjpkaXNwbGF5X3RvX2pzdmFsdWU6OmgzM2Y0ZjY1YmNmYjQ4Mzg09AIPcHVia2V5X3RvU3RyaW5n9QISdHJhbnNhY3Rpb25fdmVyaWZ59gINaGFzaF90b1N0cmluZ/cCSmNvcmU6OmZtdDo6YnVpbGRlcnM6OkRlYnVnU3RydWN0OjpmaW5pc2hfbm9uX2V4aGF1c3RpdmU6OmgyZTc1MDQ3ZDRlYTlhZWIw+AKLAXNvbGFuYV9wcm9ncmFtOjptZXNzYWdlOjpsZWdhY3k6Ol86OjxpbXBsIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZSBmb3Igc29sYW5hX3Byb2dyYW06Om1lc3NhZ2U6OmxlZ2FjeTo6TWVzc2FnZT46OnNlcmlhbGl6ZTo6aDUzZTAxZDViZDBlNDFmYjn5Ahd0cmFuc2FjdGlvbl9tZXNzYWdlRGF0YfoCYzxzdGQ6OnBhbmlja2luZzo6YmVnaW5fcGFuaWNfaGFuZGxlcjo6UGFuaWNQYXlsb2FkIGFzIGNvcmU6OnBhbmljOjpCb3hNZVVwPjo6Z2V0OjpoYjU4OTJhZjU0YzFmOGI1M/sCK3N0ZDo6cGFuaWNraW5nOjpzZXRfaG9vazo6aDU5ZjVkMTVlYjMzMDUwOGH8Ajtzb2xhbmFfcHJvZ3JhbTo6d2FzbTo6ZGlzcGxheV90b19qc3ZhbHVlOjpoNmJhNWM4YTNlOTVhZjc1Zv0CdGJpbmNvZGU6OmVycm9yOjo8aW1wbCBzZXJkZTo6c2VyOjpFcnJvciBmb3IgYWxsb2M6OmJveGVkOjpCb3g8YmluY29kZTo6ZXJyb3I6OkVycm9yS2luZD4+OjpjdXN0b206OmgzY2U5MDA1NTU1NzQ2NDdh/gIzcnVzdF9kZWNpbWFsOjpvcHM6OmRpdjo6cm91bmRfdXA6OmhkNzE5MzM1YjVmNTA3YjQ0/wJ0YmluY29kZTo6ZXJyb3I6OjxpbXBsIHNlcmRlOjpzZXI6OkVycm9yIGZvciBhbGxvYzo6Ym94ZWQ6OkJveDxiaW5jb2RlOjplcnJvcjo6RXJyb3JLaW5kPj46OmN1c3RvbTo6aGViM2U2YmExODg0Y2QzZTGAA148cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpEZWNpbWFsIGFzIGNvcmU6Om9wczo6YXJpdGg6OkRpdkFzc2lnbj46OmRpdl9hc3NpZ246OmhiZGE3ODZmMzE0NjZkYTNigQNRPHB5dGhfc2RrX3NvbGFuYTo6ZXJyb3I6OlB5dGhFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgwY2IwZDExNzQ0ZTQzYjI3ggM9YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpzaHJpbmtfdG9fZml0OjpoOGVkOGU0N2RjMzcyM2E1ZIMDZnNvbGFuYV9zZGs6Ondhc206OnRyYW5zYWN0aW9uOjo8aW1wbCBzb2xhbmFfc2RrOjp0cmFuc2FjdGlvbjo6VHJhbnNhY3Rpb24+Ojp0b0J5dGVzOjpoZmVlOWRiODdmZDNmYTlkN4QDLmFsbG9jOjpyYXdfdmVjOjpmaW5pc2hfZ3Jvdzo6aDExNTk4YjNjYmY2ZTg4YTeFAy5hbGxvYzo6cmF3X3ZlYzo6ZmluaXNoX2dyb3c6OmhjZWQ4Nzk0NDZmMjdlMjNihgMuYWxsb2M6OnJhd192ZWM6OmZpbmlzaF9ncm93OjpoNDMwYjU0OWUzYWVlOTY5OIcDLmFsbG9jOjpyYXdfdmVjOjpmaW5pc2hfZ3Jvdzo6aDQ5YzQ3YjEyOGQ2MDRkMWWIAy5hbGxvYzo6cmF3X3ZlYzo6ZmluaXNoX2dyb3c6Omg4NWQ2Y2JhZjVlOGQwOTI3iQM/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6OmhiZDdiZDZkYjlhYWMyNjE2igMuYWxsb2M6OnJhd192ZWM6OmZpbmlzaF9ncm93OjpoOTJmZjU1OGEwN2IzZTNlOYsDNWdmeF9zc2xfd2FzbTo6c3NsOjpTU0w6OnRvX2RlY2ltYWw6OmhkNjExMDgyMWQxMTdiMzQxjAMxZ2Z4X3NzbF93YXNtOjpzc2w6OlNTTDo6d2VpZ2h0OjpoYjRkNmU5ZjZkYzZjOGYxZo0DSWNvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6Okxvd2VySGV4IGZvciBpOD46OmZtdDo6aDUzNjBhNGU3ZmM1YTUyNmKOA0ljb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpVcHBlckhleCBmb3IgaTg+OjpmbXQ6Omg5NTc5ODdlOTU4NGRkZDYxjwN1PHNvbGFuYV9wcm9ncmFtOjptZXNzYWdlOjpsZWdhY3k6Ok1lc3NhZ2UgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OkludG9XYXNtQWJpPjo6aW50b19hYmk6Omg3OTUzOGNkNzM5YjU3ZjI5kANDPHdhc21fYmluZGdlbjo6SnNWYWx1ZSBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWE3MDA1N2ExN2U3YzdjZZEDSmNvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6Okxvd2VySGV4IGZvciBpMzI+OjpmbXQ6Omg1NGU1YmNhZTM0ZGE3NDFmkgNKY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6VXBwZXJIZXggZm9yIGkzMj46OmZtdDo6aDA3ZGRmNjNlYTQzNDI1MjWTA6ABPDwmbXV0IGJpbmNvZGU6OmRlOjpEZXNlcmlhbGl6ZXI8UixPPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3R1cGxlOjpBY2Nlc3M8UixPPiBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxlbWVudF9zZWVkOjpoZWQ0ZTZmYzRhN2RjNGVkM5QDYDwmbXV0IGJpbmNvZGU6OnNlcjo6U2VyaWFsaXplcjxXLE8+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfc3RyOjpoZTAzOTc5N2IwNWE2M2UwZZUDM3J1c3RfZGVjaW1hbDo6b3BzOjphZGQ6OmZhc3RfYWRkOjpoZjM2NzM2NzRjZGM3ODUyMJYDDGhhc2hfdG9CeXRlc5cDWWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6Ym94ZWQ6OkJveDxiaW5jb2RlOjplcnJvcjo6RXJyb3JLaW5kPj46OmhmNjdlMTBiMzk5NTcxNjQzmANZY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpib3hlZDo6Qm94PGJpbmNvZGU6OmVycm9yOjpFcnJvcktpbmQ+Pjo6aGY2N2UxMGIzOTk1NzE2NDOZAy1qc19zeXM6OlVpbnQ4QXJyYXk6OnRvX3ZlYzo6aDFmNjdlMDEzOTI5M2E4NmaaA0U8c2lnbmF0dXJlOjplcnJvcjo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGY5OWYyOGIzYjMxMDM4MzebA1ljb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OmJveGVkOjpCb3g8YmluY29kZTo6ZXJyb3I6OkVycm9yS2luZD4+OjpoNjY3ZmJkMmQzMDVlMTNiMpwDLmpzX3N5czo6VWludDhBcnJheTo6Y29weV90bzo6aDgwMjJhNTIxNjhiYjJkYjKdA148cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpEZWNpbWFsIGFzIGNvcmU6Om9wczo6YXJpdGg6OkFkZEFzc2lnbj46OmFkZF9hc3NpZ246OmgyNGU1NmQ0ODU2NmE2NjhjngNePHJ1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbCBhcyBjb3JlOjpvcHM6OmFyaXRoOjpTdWJBc3NpZ24+OjpzdWJfYXNzaWduOjpoYWQ3ZDkzYzQ5NmU3ZWMxOZ8DXjxydXN0X2RlY2ltYWw6OmRlY2ltYWw6OkRlY2ltYWwgYXMgY29yZTo6b3BzOjphcml0aDo6TXVsQXNzaWduPjo6bXVsX2Fzc2lnbjo6aDcwNGU0ODhmZmJkNGIyMzegAzpjb3JlOjpmbXQ6OmJ1aWxkZXJzOjpEZWJ1Z1R1cGxlOjpmaW5pc2g6Omg1NWJhYmZlNzBiN2VlZTcwoQNLPHJhbmRfY29yZTo6b3M6Ok9zUm5nIGFzIHJhbmRfY29yZTo6Um5nQ29yZT46OmZpbGxfYnl0ZXM6Omg1NzYxYjljMTc4NjJkYWE5ogNVPGpzX3N5czo6SW50b0l0ZXIgYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoOWY2MWFmMzA2ZWYyYjg2MaMDQ3N0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pY19oYW5kbGVyOjp7e2Nsb3N1cmV9fTo6aGVhMzExZWEyYmQ5MmEyOTOkAz1weXRoX3Nka19zb2xhbmE6OnN0YXRlOjpsb2FkX3ByaWNlX2FjY291bnQ6Omg2ZWNkY2RlNTE2YTdkYTA5pQMZcHVia2V5X2ZpbmRQcm9ncmFtQWRkcmVzc6YDXzxydXN0X2RlY2ltYWw6OmRlY2ltYWw6OkRlY2ltYWwgYXMgcnVzdF9kZWNpbWFsOjptYXRoczo6TWF0aGVtYXRpY2FsT3BzPjo6bG46OmhiODQ0OGNmY2EzMTViNGE3pwNMPHNoYTI6OnNoYTUxMjo6U2hhNTEyIGFzIGNvcmU6OmRlZmF1bHQ6OkRlZmF1bHQ+OjpkZWZhdWx0OjpoYzdhMzRmNGUyNmE2NmRjMagDMWJpbmNvZGU6OmludGVybmFsOjpkZXNlcmlhbGl6ZTo6aDkwMGVhNTNmMzE5NGRkYzWpAwhfX211bHRpM6oDXGVkMjU1MTk6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208ZWQyNTUxOTo6U2lnbmF0dXJlPiBmb3IgW3U4OyBfXT46OmZyb206Omg0MzhhYTQxNjc1YmFlYmRkqwM3c29sYW5hX3Byb2dyYW06OnNob3J0X3ZlYzo6c2VyaWFsaXplOjpoMjM1ZTMzZGYwN2M1OGFhMawDN3NvbGFuYV9wcm9ncmFtOjpzaG9ydF92ZWM6OnNlcmlhbGl6ZTo6aGQ1M2U0YjVjMWIzZjE5ZTetAzdzb2xhbmFfcHJvZ3JhbTo6c2hvcnRfdmVjOjpzZXJpYWxpemU6OmhmZTdmY2IyMzc2Mjg5ZWMxrgNHPHNpZ25hdHVyZTo6ZXJyb3I6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDg3MzIxMDYxN2IyOWI3MGWvA3hzb2xhbmFfcHJvZ3JhbTo6cHVia2V5OjpfOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxpemUgZm9yIHNvbGFuYV9wcm9ncmFtOjpwdWJrZXk6OlB1YmtleT46OnNlcmlhbGl6ZTo6aDk5NmFjNDBiNTUzNTYxNmawAxBwdWJrZXlfaXNPbkN1cnZlsQM2cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpEZWNpbWFsOjpuZXc6OmhlNjNkOGRiNWU5ZmVlYTEzsgMuY29yZTo6cmVzdWx0Ojp1bndyYXBfZmFpbGVkOjpoZTg0YjU4ZjZiNDRhN2RmNLMDO2NvcmU6OmZtdDo6YnVpbGRlcnM6OkRlYnVnU3RydWN0OjpmaW5pc2g6OmhhNDZjMTdmM2ViODdhYjQ3tAM8ZWQyNTUxOV9kYWxlazo6a2V5cGFpcjo6S2V5cGFpcjo6dG9fYnl0ZXM6OmhhMWVkZDYzMmUxNGRiOTFhtQNaPGdmeF9zb2xhbmFfY29tbW9uOjpzYWZlX21hdGg6OlUxMjggYXMgY29yZTo6b3BzOjphcml0aDo6TXVsPHU2ND4+OjptdWw6Omg5YjgwZGQ3MTdhYjk3NDcwtgMNcHVia2V5X2VxdWFsc7cDC2hhc2hfZXF1YWxzuAMxYnl0ZW11Y2s6OnNvbWV0aGluZ193ZW50X3dyb25nOjpoZGJiZjNiNmNiMTcyMjhjNLkDfTxzb2xhbmFfcHJvZ3JhbTo6d2FzbTo6aW5zdHJ1Y3Rpb25zOjpJbnN0cnVjdGlvbnMgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OkZyb21XYXNtQWJpPjo6ZnJvbV9hYmk6OmhhMzU5MWU0ZGQyOTliMjJmugMWX193YmdfaW5zdHJ1Y3Rpb25fZnJlZbsDPGRsbWFsbG9jOjpkbG1hbGxvYzo6RGxtYWxsb2M8QT46OmluaXRfdG9wOjpoMzViNDViZWQ5Y2NjZTk4OLwDSjxjb3JlOjpvcHM6OnJhbmdlOjpSYW5nZTxJZHg+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjNzMzMzU2YzI2MmI1ODg3vQOMAWVkMjU1MTlfZGFsZWs6OmVycm9yczo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxlZDI1NTE5X2RhbGVrOjplcnJvcnM6OkludGVybmFsRXJyb3I+IGZvciBzaWduYXR1cmU6OmVycm9yOjpFcnJvcj46OmZyb206Omg1NzdmMGFkNDI5MTRjYTg5vgNTPHU2NCBhcyBnZnhfc3NsX3dhc206Om1hdGg6OnNhZmVfbWF0aDo6U2FmZU11bERpdj46OnNhZmVfbXVsX2Rpdjo6aDdlZWQ1NjI4YWZlYTlkMGS/AzZzb2xhbmFfcHJvZ3JhbTo6cHVia2V5OjpQdWJrZXk6Om5ldzo6aDk4YTk4NDEyMjY5MDIyNDTAAzI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZTZmMTA1ZGRjZmM2M2JlZMEDCV9fcG93aWRmMsIDEl9fd2JnX2tleXBhaXJfZnJlZcMDMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMjk3OTVkYTE3ZmE3MTIwZMQDRGNvcmU6OnNsaWNlOjppbmRleDo6c2xpY2Vfc3RhcnRfaW5kZXhfbGVuX2ZhaWxfcnQ6Omg1ZWRlZmZlYzZmNTEzZmI5xQNAY29yZTo6c2xpY2U6OmluZGV4OjpzbGljZV9pbmRleF9vcmRlcl9mYWlsX3J0OjpoOTEwNTQwOGJmZmNmNzlmY8YDQmNvcmU6OnNsaWNlOjppbmRleDo6c2xpY2VfZW5kX2luZGV4X2xlbl9mYWlsX3J0OjpoNTg3YzcyNGY4ZDEzNzMyNMcDNmNvcmU6OnBhbmlja2luZzo6cGFuaWNfYm91bmRzX2NoZWNrOjpoODg0YWY5ZDNiOTM4OWY5M8gDRDxjb3JlOjpmbXQ6OkFyZ3VtZW50cyBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg4ODYzMTE1MjgzYWZjOTFjyQMyY29yZTo6Zm10OjpGb3JtYXR0ZXI6OndyaXRlX2ZtdDo6aGNlNTM4MDgxM2M5MDJkMDjKA05jb3JlOjpzbGljZTo6PGltcGwgW1RdPjo6Y29weV9mcm9tX3NsaWNlOjpsZW5fbWlzbWF0Y2hfZmFpbDo6aGZhODk4MDE1OTg3ZjVmNWLLAxN0cmFuc2FjdGlvbl90b0J5dGVzzAMxY29yZTo6cGFuaWNraW5nOjphc3NlcnRfZmFpbGVkOjpoOGNhYTQ3OTg2ZDUyZjliOc0DMWNvcmU6OnBhbmlja2luZzo6YXNzZXJ0X2ZhaWxlZDo6aDFkMTY5OTczNDZmNjYyODLOAzFjb3JlOjpwYW5pY2tpbmc6OmFzc2VydF9mYWlsZWQ6OmhkZmNmMzExYWQyMjI3NjA1zwMxY29yZTo6cGFuaWNraW5nOjphc3NlcnRfZmFpbGVkOjpoNGI3MGRkMTQ0OTE2NzA1NtADOjwmbXV0IFcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2ZtdDo6aGQ0YWM4YWJjNzljZGM4ZWHRAzo8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9mbXQ6OmgyNjIyYWMwNzRjMWEwNjE20gM6PCZtdXQgVyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfZm10OjpoMmZhZmNkZWQ1MTc5OTA5MtMDN3N0ZDo6YWxsb2M6OmRlZmF1bHRfYWxsb2NfZXJyb3JfaG9vazo6aGY5NGJiMDE5MzQxMGE2ZTLUAzo8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9mbXQ6Omg0MWVlNDE3NzBmMjcwYzUy1QM6PCZtdXQgVyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfZm10OjpoZGUzMGI0NTgwNDkzMDljNdYDOjwmbXV0IFcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2ZtdDo6aDI1NjQzY2QxZTk4ZTY0N2LXAy5jb3JlOjpmbXQ6OldyaXRlOjp3cml0ZV9mbXQ6OmhlM2Q3ZDllNDEyYzYwOTA52AMuY29yZTo6Zm10OjpXcml0ZTo6d3JpdGVfZm10OjpoNjNjODBiNTRkZjkxNzliM9kDLmNvcmU6OmZtdDo6V3JpdGU6OndyaXRlX2ZtdDo6aGFkY2YwYmE4YmIwMGNhOTPaAwlfX2FzaGx0aTPbAwlfX2xzaHJ0aTPcAy5jb3JlOjpmbXQ6OldyaXRlOjp3cml0ZV9mbXQ6Omg0OTg1OWNlNGY5OGM1YzRj3QNGc29sYW5hX3Byb2dyYW06Om1lc3NhZ2U6OmxlZ2FjeTo6TWVzc2FnZTo6c2VyaWFsaXplOjpoZjRhZGYwZTMyYTIzNThkYd4DQHN0ZDo6c3luYzo6b25jZTo6T25jZTo6Y2FsbF9vbmNlOjp7e2Nsb3N1cmV9fTo6aDQ1NmRlOTVlZTFmZjcxZmXfA0hjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDY2YmVkNjY1NWVhY2U5OWbgAzVnZnhfc3NsX3dhc206OnBhaXI6OlBhaXI6OmZlZV9yYXRlOjpoM2Q1YzQzYzZkZTRiM2ZjZeEDSjxhbGxvYzo6c3RyaW5nOjpGcm9tVXRmOEVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg1NDFjMTBmMWNlNTMwYjZh4gNGPGJ5dGVtdWNrOjpQb2RDYXN0RXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNjAxZmQ1NDhiNjcwMWM3N+MDPmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OnNwbGl0cG9pbnQ6Omg5NWI0NzczOWM3ZWNiMGI45ANrPHNvbGFuYV9wcm9ncmFtOjpwdWJrZXk6OlB1YmtleSBhcyB3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6SW50b1dhc21BYmk+OjppbnRvX2FiaTo6aDk1MjgxZDg3YjM3NDMwNzXlAzFhbGxvYzo6c3luYzo6QXJjPFQ+Ojpkcm9wX3Nsb3c6OmhhMmM1OGIxYjJiYzhiMGNi5gNjPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6UGFuaWNQYXlsb2FkPEE+IGFzIGNvcmU6OnBhbmljOjpCb3hNZVVwPjo6dGFrZV9ib3g6OmgyYTU1Njg0YzY5NDg0MWVj5wNjPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6UGFuaWNQYXlsb2FkPEE+IGFzIGNvcmU6OnBhbmljOjpCb3hNZVVwPjo6dGFrZV9ib3g6Omg2OGQ1OWVhYzY0ZTM2NDgz6AMZX193Ymdfb3JhY2xlcmVnaXN0cnlfZnJlZekDOjwmbXV0IFcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX3N0cjo6aDI4ZGUxYzUwNGMyMTNiMDfqAzo8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6OmhlZGI0ZmZmMDExMjlkMDdh6wNMY3VydmUyNTUxOV9kYWxlazo6ZWR3YXJkczo6Q29tcHJlc3NlZEVkd2FyZHNZOjpmcm9tX3NsaWNlOjpoZmU4ZGI1ZDZiM2Q3YTZjYewDOjwmbXV0IFcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX3N0cjo6aDMyYTNkYjI1N2U1MGZjMzDtAzo8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6OmhhODNjNWZhYzg5MWE4NmU37gNuPGdlbmVyaWNfYXJyYXk6OkdlbmVyaWNBcnJheTxULE4+IGFzIGdlbmVyaWNfYXJyYXk6OnNlcXVlbmNlOjpHZW5lcmljU2VxdWVuY2U8VD4+OjpnZW5lcmF0ZTo6aDU2ZDIwZjc3OWVlMGU4NTDvAzo8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6Omg5M2VmZjE1ZmRjNjljMzA08ANVPGdmeF9zb2xhbmFfY29tbW9uOjpzYWZlX21hdGg6OlUxMjggYXMgY29yZTo6b3BzOjphcml0aDo6RGl2Pjo6ZGl2OjpoMWM3ZDNlMmFjNDY2MmM1M/EDVTxnZnhfc29sYW5hX2NvbW1vbjo6c2FmZV9tYXRoOjpVMTI4IGFzIGNvcmU6Om9wczo6YXJpdGg6OlN1Yj46OnN1Yjo6aGRhMTQ4YTdiZjE5MDZiMzDyA0k8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6OmhjMDkyMTZiYWRmZmQ4ZTFj8wNJPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfc3RyOjpoYzA5MjE2YmFkZmZkOGUxY/QDYDwmbXV0IGJpbmNvZGU6OnNlcjo6U2VyaWFsaXplcjxXLE8+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfaTY0OjpoOWYxMTEzY2Y0Y2RmYjJkNfUDSTxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX3N0cjo6aGMwOTIxNmJhZGZmZDhlMWP2A0k8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6OmhjMDkyMTZiYWRmZmQ4ZTFj9wNHPHJhbmRfY29yZTo6ZXJyb3I6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDI4NzI2N2VlYjc3OGJjY2b4AzFjb21waWxlcl9idWlsdGluczo6bWVtOjptZW1jbXA6Omg0YmVlYzc4YzllMGExOWEw+QNJPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfc3RyOjpoYzA5MjE2YmFkZmZkOGUxY/oDSTxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX3N0cjo6aGMwOTIxNmJhZGZmZDhlMWP7A1U8Z2Z4X3NvbGFuYV9jb21tb246OnNhZmVfbWF0aDo6VTEyOCBhcyBjb3JlOjpvcHM6OmFyaXRoOjpBZGQ+OjphZGQ6OmgzZWIxYzcyZjY0MTZkN2E2/AMibG9nOjpzZXRfbG9nZ2VyOjpoOWNlODk1Y2E0M2MxNTI4Mv0DQ2NvcmU6OmZtdDo6Rm9ybWF0dGVyOjpwYWRfaW50ZWdyYWw6OndyaXRlX3ByZWZpeDo6aDkzMmZiYjVhNWNhOWNkMjX+A1o8Z2Z4X3NvbGFuYV9jb21tb246OnNhZmVfbWF0aDo6VTEyOCBhcyBjb3JlOjpvcHM6OmFyaXRoOjpTdWI8dTY0Pj46OnN1Yjo6aGUzYTczYzg4M2RkMDNiMjb/Az5jdXJ2ZTI1NTE5X2RhbGVrOjpzY2FsYXI6OlNjYWxhcjo6ZnJvbV9iaXRzOjpoYmUyZjJmZTc1NTY0Mjk5YYAEdzwmY3VydmUyNTUxOV9kYWxlazo6c2NhbGFyOjpTY2FsYXIgYXMgY29yZTo6b3BzOjphcml0aDo6TXVsPCZjdXJ2ZTI1NTE5X2RhbGVrOjpzY2FsYXI6OlNjYWxhcj4+OjptdWw6OmgzNzFkYWI0M2U4MjllMjQ3gQRAc29sYW5hX3Byb2dyYW06Om1lc3NhZ2U6OmxlZ2FjeTo6TWVzc2FnZTo6bmV3OjpoMzg4ZWMwNjEwYTBmODY3ZIIEPHNvbGFuYV9wcm9ncmFtOjp3YXNtOjpzb2xhbmFfcHJvZ3JhbV9pbml0OjpoM2JjMWJiZDdlMzFhMjE1NoMEMWNvcmU6OnBhbmlja2luZzo6cGFuaWNfZGlzcGxheTo6aDI2OWI1ODkzNjU4YjllZTSEBCljb3JlOjpwYW5pY2tpbmc6OnBhbmljOjpoMDIwN2IyNDQ4MTFmZWY4YoUEMWNvcmU6OnBhbmlja2luZzo6cGFuaWNfZGlzcGxheTo6aDY4OWE2YTljZDE3NDEzOWGGBG48c29sYW5hX3Byb2dyYW06Omhhc2g6Okhhc2ggYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OlJlZkZyb21XYXNtQWJpPjo6cmVmX2Zyb21fYWJpOjpoM2ZlODQ3NzZiY2QwOTU0OYcEJ2dldHJhbmRvbTo6Z2V0cmFuZG9tOjpoYzEyNzI3NDQ0MTk5M2U0M4gEQXNvbGFuYV9wcm9ncmFtOjpwdWJrZXk6OlB1YmtleTo6bmV3X2Zyb21fYXJyYXk6OmgwOGJjMzU5ZmI4ODg4ZGFiiQRBPGxvZzo6U2V0TG9nZ2VyRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDZiZTdmNmYzNTk0Mjk3NDGKBGs8c3RkOjpwYW5pY2tpbmc6OmJlZ2luX3BhbmljX2hhbmRsZXI6OlN0clBhbmljUGF5bG9hZCBhcyBjb3JlOjpwYW5pYzo6Qm94TWVVcD46OnRha2VfYm94OjpoZmYyZDAyZTJjYWUzMmFkMIsES2NvcmU6OmZtdDo6ZmxvYXQ6OjxpbXBsIGNvcmU6OmZtdDo6RGlzcGxheSBmb3IgZjY0Pjo6Zm10OjpoNGIwNGY3Y2U3MGZjYTUwNIwEMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOGI2YmEwNmI1YjNkMzkyYo0ESDxkbG1hbGxvYzo6c3lzOjpTeXN0ZW0gYXMgZGxtYWxsb2M6OkFsbG9jYXRvcj46OmFsbG9jOjpoYTQyZGI4NTBjMjVmYTViM44ECV9fdWRpdnRpM48ERDxieXRlbXVjazo6UG9kQ2FzdEVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2Y2RkZTA4MGFmOGRmMzE1kAQRcnVzdF9iZWdpbl91bndpbmSRBDxydXN0X2RlY2ltYWw6OmRlY2ltYWw6OkRlY2ltYWw6OnNldF9zY2FsZTo6aDkzNjNlYzZmOWUyOTUzNWSSBDRhbGxvYzo6cmF3X3ZlYzo6Y2FwYWNpdHlfb3ZlcmZsb3c6Omg2MjMwYTRkNWZiMmY1YjkzkwQtY29yZTo6cGFuaWNraW5nOjpwYW5pY19mbXQ6OmgxOGIxNWJlMjgzNDExYzY1lAQRX193YmluZGdlbl9tYWxsb2OVBERjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c2lnbmF0dXJlOjplcnJvcjo6RXJyb3I+OjpoYzRkNzgyMGQwMWVmNjc2OZYERGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzaWduYXR1cmU6OmVycm9yOjpFcnJvcj46Omg3MWFhY2JiZmUxYmU2ZTY3lwR9Z2Z4X3NvbGFuYV9jb21tb246OnNhZmVfbWF0aDo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxnZnhfc29sYW5hX2NvbW1vbjo6c2FmZV9tYXRoOjpVMTI4PiBmb3IgdTY0Pjo6ZnJvbTo6aGQ4MjcwZGIxMDFiODEwOTSYBC9jb25zb2xlX2xvZzo6aW5pdF93aXRoX2xldmVsOjpoYzQ4ZTA0MDBlMDU4NzVlM5kEMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMWQ2MTc4ZDQzMTM3MDdhY5oEMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYmRmYzcxOTdmOGM5NmNiZZsEMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjM3M2M0N2FmOTdhYTU1M5wEMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjgwYjY5NWE3MjFjN2M4Yp0ENnJ1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbDo6bWF4OjpoMDZlMmNlMWExNzdhMGU2NJ4ENnJ1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbDo6bWluOjpoMWNiZjUyNGIyZTQ2Y2EwMp8EMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMzZiNWQzNzYyNTUwMmVjMaAEMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzdhMjkzZTMxOTZkZWNlOaEETTxzdGQ6OnRocmVhZDo6bG9jYWw6OkFjY2Vzc0Vycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhNmMyNjllNGVhM2ZkNmU2ogRPPHN0ZDo6c3luYzo6cG9pc29uOjpQb2lzb25FcnJvcjxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMWU2ZjY1MDQyNTY1ZTZkYaMEEl9fcmRsX2FsbG9jX3plcm9lZKQEMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOTRjNWVkZGYxNTVkOGZkNKUENGNvcmU6OmZtdDo6Rm9ybWF0dGVyOjpkZWJ1Z190dXBsZTo6aGQ5MDViZGQ3N2M0N2FiYmOmBDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDMwNmFjZWRjNTdiMWY2YjGnBDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDE3OWRmYTg2YmUzNDJlYTmoBB1fX3diZ19zZXRfc3dhcHJlc3VsdF9mZWVfcGFpZKkEH19fd2JnX3NldF9zd2FwcmVzdWx0X2Ftb3VudF9vdXSqBCFfX3diZ19zZXRfc3dhcHJlc3VsdF9wcmljZV9pbXBhY3SrBB9fX3diZ19zZXRfc3dhcHJlc3VsdF9zd2FwX3ByaWNlrAQgX193Ymdfc2V0X3N3YXByZXN1bHRfaW5zdGFfcHJpY2WtBCFfX3diZ19zZXRfc3dhcHJlc3VsdF9vcmFjbGVfcHJpY2WuBBlfX3diZ19zZXRfc3dhcHJlc3VsdF9pdGVyrwRAc3RkOjpzeW5jOjpvbmNlOjpPbmNlOjpjYWxsX29uY2U6Ont7Y2xvc3VyZX19OjpoZWQ3ZDVkMDBmZDI1MzhlNLAESGNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNle3t2dGFibGUuc2hpbX19OjpoZjQ4NzZiMzNlMzgzMmE5Y7EEbWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzdGQ6OnN5bmM6OnBvaXNvbjo6UG9pc29uRXJyb3I8c3RkOjpzeW5jOjptdXRleDo6TXV0ZXhHdWFyZDwoKT4+Pjo6aDNkMDU2MmU0YWQ0OWQ1YTSyBBVfX3diZ19zd2FwcmVzdWx0X2ZyZWWzBEdjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVzdF9kZWNpbWFsOjplcnJvcjo6RXJyb3I+OjpoMTk4MWRhMGJmODQ4NzlhNbQEO3N0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6e3tjbG9zdXJlfX06OmhjZmQ3ZTFmODlmNWY2MGI3tQRHY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1c3RfZGVjaW1hbDo6ZXJyb3I6OkVycm9yPjo6aGQ0ZTA4YWMyN2U3ZThlZWW2BBFfX3diZ19wdWJrZXlfZnJlZbcED19fd2JnX2hhc2hfZnJlZbgEiwFiaW5jb2RlOjplcnJvcjo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxzdGQ6OmlvOjplcnJvcjo6RXJyb3I+IGZvciBhbGxvYzo6Ym94ZWQ6OkJveDxiaW5jb2RlOjplcnJvcjo6RXJyb3JLaW5kPj46OmZyb206OmgyYWNiNWNkZDc3MDYwY2JhuQRgPHJ1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbCBhcyBudW1fdHJhaXRzOjpjYXN0OjpGcm9tUHJpbWl0aXZlPjo6ZnJvbV91NjQ6OmhjZGU0YTUyNDE4NzFkM2E4ugQ7c3RkOjpwYW5pY2tpbmc6OmJlZ2luX3BhbmljOjp7e2Nsb3N1cmV9fTo6aGIwYjI3ODRlMzVhNWMxZDW7BC5jb3JlOjpzdHI6OnNsaWNlX2Vycm9yX2ZhaWw6OmgzMzUxZTVmYjFkNTFkNWU2vAQsY29yZTo6Zm10OjpGb3JtYXR0ZXI6Om5ldzo6aGM0MjY4NWNlMzkwZjVkM2a9BDVjb3JlOjpmbXQ6OkZvcm1hdHRlcjo6ZGVidWdfc3RydWN0OjpoNTcwM2E0MzYxZDBkYzcyNr4EM2NvcmU6OmZtdDo6Rm9ybWF0dGVyOjpkZWJ1Z19saXN0OjpoNDIyMWUzMDM2NTZhZDlhZb8EHl9fd2JnX3NldF9zd2FwcmVzdWx0X2Ftb3VudF9pbsAEHV9fd2JnX2dldF9zd2FwcmVzdWx0X2ZlZV9wYWlkwQQfX193YmdfZ2V0X3N3YXByZXN1bHRfYW1vdW50X291dMIEIV9fd2JnX2dldF9zd2FwcmVzdWx0X3ByaWNlX2ltcGFjdMMEH19fd2JnX2dldF9zd2FwcmVzdWx0X3N3YXBfcHJpY2XEBCBfX3diZ19nZXRfc3dhcHJlc3VsdF9pbnN0YV9wcmljZcUEIV9fd2JnX2dldF9zd2FwcmVzdWx0X29yYWNsZV9wcmljZcYEGV9fd2JnX2dldF9zd2FwcmVzdWx0X2l0ZXLHBE5jdXJ2ZTI1NTE5X2RhbGVrOjpzY2FsYXI6OlNjYWxhcjo6ZnJvbV9ieXRlc19tb2Rfb3JkZXJfd2lkZTo6aDUyMDM0MGRiNmRhZThlNDbIBEdjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpEZWJ1ZyBmb3IgaTMyPjo6Zm10OjpoMWMxYzhlYjVmNzNmMTMzMMkER2NvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6OkRlYnVnIGZvciB1MzI+OjpmbXQ6Omg4MjE0ZWI1OTI1NjZmNDQwygRHY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6RGVidWcgZm9yIGkzMj46OmZtdDo6aDFjMWM4ZWI1ZjczZjEzMzDLBDdkbG1hbGxvYzo6ZGxtYWxsb2M6OkNodW5rOjpzZXRfaW51c2U6OmgxYjRkYzAwMmYzMTc5MzBlzAQ6d2FzbV9iaW5kZ2VuOjpfX3J0Ojp0YWtlX2xhc3RfZXhjZXB0aW9uOjpoNjkyOGEwMmY4NzlkZWFmZc0EOWNvcmU6OmZtdDo6YnVpbGRlcnM6OkRlYnVnTGlzdDo6ZmluaXNoOjpoODZkYTU3ZTQ1NTliMmQzMM4ETmNvcmU6OmZtdDo6bnVtOjppbXA6OjxpbXBsIGNvcmU6OmZtdDo6RGlzcGxheSBmb3IgaTMyPjo6Zm10OjpoMWRlZGExYzQwZjNjNmFlY88EEm9yYWNsZXJlZ2lzdHJ5X25ld9AEHl9fd2JnX2dldF9zd2FwcmVzdWx0X2Ftb3VudF9pbtEELnN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6aGEwZDI3MTM4YTFiZWIyYmPSBBhpbnN0cnVjdGlvbnNfY29uc3RydWN0b3LTBC5zdGQ6OnBhbmlja2luZzo6YmVnaW5fcGFuaWM6Omg2Njc4Y2E1NTY0ZGI1ZWRm1AReY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pY19oYW5kbGVyOjpQYW5pY1BheWxvYWQ+OjpoMWY1MjdlY2RhMDU0ODRkNtUECnJ1c3RfcGFuaWPWBDVkbG1hbGxvYzo6ZGxtYWxsb2M6OlNlZ21lbnQ6OmhvbGRzOjpoNWFjNTIyMDRlMzM3NDdmMNcELWNvcmU6OnBhbmlja2luZzo6cGFuaWNfc3RyOjpoM2U5Zjc2MzY1YmIyYjRkMdgEEl9fd2JpbmRnZW5fcmVhbGxvY9kEQXN0ZDo6cGFuaWNraW5nOjpwYW5pY19jb3VudDo6aXNfemVyb19zbG93X3BhdGg6Omg1YjE2YjlmMWQwMzMwOGE32gRCZGxtYWxsb2M6OmRsbWFsbG9jOjpDaHVuazo6c2V0X2ZyZWVfd2l0aF9waW51c2U6OmhmNTc0YjZlZDU4MTVlZGYx2wQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlNF9tdXQ6OmgwMzA4M2MyYWVlMTk5NzBl3AROY29yZTo6Zm10OjpudW06OmltcDo6PGltcGwgY29yZTo6Zm10OjpEaXNwbGF5IGZvciBpNjQ+OjpmbXQ6OmhjMmVjMTM1ZGE1MWEzOTE03QQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6OmgxMGIxZWFkYmE0YWYzOTkx3gQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6OmgyYTQwNzA5OTEwNDYyMzY53wQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6OmgzMjg5YmZmZjlhNTMyODU54AQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6OmgzZThkNmJhNDNjMDM0OWIw4QQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6Omg1YTczMDM1ZWJhMzA3NWZh4gQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6Omg4NGRhMmYzY2UzMzQxNWZm4wQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6OmhkZDc2YmEzZDAxZmFmMWE15ARCZGxtYWxsb2M6OmRsbWFsbG9jOjpDaHVuazo6c2V0X2ludXNlX2FuZF9waW51c2U6Omg2NTUxNTBiMzVjMjIxYWNj5QRCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OmhlNTQ0ODQwMjQ5ZTc0YWRl5gRCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OmhlNTQ0ODQwMjQ5ZTc0YWRl5wRCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OmhlNTQ0ODQwMjQ5ZTc0YWRl6ARCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OmhlNTUwMWUyYzBlZjgzMTk26QQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlMl9tdXQ6OmgwZTRmMmQ2OWY2ZjQ0NGM36gTQAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzdGQ6OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGFsbG9jOjpzdHJpbmc6OlN0cmluZz4gZm9yIGFsbG9jOjpib3hlZDo6Qm94PGR5biBzdGQ6OmVycm9yOjpFcnJvcitjb3JlOjptYXJrZXI6OlN5bmMrY29yZTo6bWFya2VyOjpTZW5kPj46OmZyb206OlN0cmluZ0Vycm9yPjo6aDI1MGQ5YzdlMTM5NGQwYWHrBDQ8Ym9vbCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhiYjM1MzI1ODM0ODMwMGRj7ARCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OmgwMTgyZjVkOTc1ZWRiZmM07QRCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OmgwMTgyZjVkOTc1ZWRiZmM07gRePHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6UGFuaWNQYXlsb2FkPEE+IGFzIGNvcmU6OnBhbmljOjpCb3hNZVVwPjo6Z2V0OjpoZDE2ZDZmNGZjMjExODcyZO8ExwFzb2xhbmFfcHJvZ3JhbTo6d2FzbTo6aW5zdHJ1Y3Rpb25zOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPHNvbGFuYV9wcm9ncmFtOjp3YXNtOjppbnN0cnVjdGlvbnM6Okluc3RydWN0aW9ucz4gZm9yIGFsbG9jOjp2ZWM6OlZlYzxzb2xhbmFfcHJvZ3JhbTo6aW5zdHJ1Y3Rpb246Okluc3RydWN0aW9uPj46OmZyb206OmgyNWVmNmQ2MTQyNmJkNzY28AQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlMV9tdXQ6Omg1MGRiZGM1YTU2NGVhMDVm8QRePHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6UGFuaWNQYXlsb2FkPEE+IGFzIGNvcmU6OnBhbmljOjpCb3hNZVVwPjo6Z2V0OjpoMzRjNzY5MDFmMDJmNjRiYvIENmdldHJhbmRvbTo6aW1wOjpSTkdfU09VUkNFOjpfX2dldGl0OjpoN2E4OWY3NGU1Y2JlZDU1N/MEQGRsbWFsbG9jOjpkbG1hbGxvYzo6VHJlZUNodW5rOjpsZWZ0bW9zdF9jaGlsZDo6aDlkZmVkM2Y1NmU0ZmU3ODj0BARmbWF49QQIcnVzdF9vb232BD9kbG1hbGxvYzo6ZGxtYWxsb2M6OmxlZnRzaGlmdF9mb3JfdHJlZV9pbmRleDo6aDc2ZjNjNmIzYjI0NWQ1ZGb3BE9kbG1hbGxvYzo6ZGxtYWxsb2M6OkNodW5rOjpzZXRfc2l6ZV9hbmRfcGludXNlX29mX2ZyZWVfY2h1bms6Omg2ZmRiNDk0ZWY1YTJhNTdk+AQ2Y29yZTo6aW50cmluc2ljczo6Y29uc3RfZXZhbF9zZWxlY3Q6OmhiNmI3MTAyYjMxNjk3ZGNi+QRIPGNvcmU6OmNlbGw6OkJvcnJvd011dEVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhkY2ZiYTEyNmU2OWI5NTc2+gQyY29yZTo6Zm10OjpGb3JtYXR0ZXI6OndyaXRlX3N0cjo6aDRlZjQ3NGQzZDUzMDgyMjf7BD48Y29yZTo6Zm10OjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYTgwZGQ1M2ZmNWQxZWZhMfwEBXJvdW5k/QQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg1MjYwNmQyOWFjNWE0YzI0/gQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwNTg5M2IxM2U1MTdjMWM0/wQyY29yZTo6b3B0aW9uOjpPcHRpb248VD46OnVud3JhcDo6aDM5ZmExNDgxM2NhZTBmODSABTJjb3JlOjpvcHRpb246Ok9wdGlvbjxUPjo6dW53cmFwOjpoOWEzNzE2MWUzZjk1NzMzZIEFL2RsbWFsbG9jOjpkbG1hbGxvYzo6YWxpZ25fdXA6Omg3Nzc2ZDU2NmNmNWMwNmNlggUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGIzYmMxZDIzODg1MDkyNjiDBUlzdGQ6OnN5c19jb21tb246OmJhY2t0cmFjZTo6X19ydXN0X2VuZF9zaG9ydF9iYWNrdHJhY2U6Omg1ODdhMDZlZjYzMjkyNDU2hAUOX19ydXN0X3JlYWxsb2OFBTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDgzYzBhYWNjOTY3ZGMwMzeGBTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYjE0MTI0MjIxMGRkZDMzY4cFJHN1YnRsZTo6YmxhY2tfYm94OjpoNGNmYmQ4NWIxNDNkZWE1ZYgFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZGM5NmYxYmMxMWI5M2U2MYkFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoY2UyZTUzZTY4YThhZTc2ZYoFMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg2YWM0ZWY0Yzg0NDM5MWVjiwVJc3RkOjpzeXNfY29tbW9uOjpiYWNrdHJhY2U6Ol9fcnVzdF9lbmRfc2hvcnRfYmFja3RyYWNlOjpoNDllYjI5MTcwOTIzYWY4NowFD19fd2JpbmRnZW5fZnJlZY0FQzxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGMzOTc4ZTg5ZDAxY2YwOWSOBUU8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGI4YjY0ZTgxMGFmZWEwZDWPBUlzdGQ6OnN5c19jb21tb246OmJhY2t0cmFjZTo6X19ydXN0X2VuZF9zaG9ydF9iYWNrdHJhY2U6Omg3ZGY2YzFhNGI4OTQ5NjQ1kAUwZGxtYWxsb2M6OmRsbWFsbG9jOjpsZWZ0X2JpdHM6Omg4N2NiMzBmYWQ1NWJmMGVjkQUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGU5YzBlYTZlZDU5ZjhmM2GSBVs8ZWQyNTUxOV9kYWxlazo6cHVibGljOjpQdWJsaWNLZXkgYXMgY29yZTo6Y29udmVydDo6QXNSZWY8W3U4XT4+Ojphc19yZWY6OmhmZjdmNzZiYjNlNzMwNWU5kwUwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhMmQyMGVmMDQ4YjY2MGYxlAUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDUyZGNkMzI4MmJlMzA0MWSVBVZhbnlob3c6OmVycm9yOjo8aW1wbCBjb3JlOjpvcHM6OmRyb3A6OkRyb3AgZm9yIGFueWhvdzo6RXJyb3I+Ojpkcm9wOjpoODdiNDNhNzA5YjJmOGU3YpYFRjxhbGxvYzo6Ym94ZWQ6OkJveDxULEE+IGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDliYzQzNDY0YjY2NzQ0ZWaXBTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDY1ZTA1YTM4YTI5NTlkNDaYBQxfX3J1c3RfYWxsb2OZBRNfX3J1c3RfYWxsb2NfemVyb2VkmgV3PGdmeF9zb2xhbmFfY29tbW9uOjpzYWZlX21hdGg6OlUxMjggYXMgY29yZTo6Y29udmVydDo6RnJvbTxnZnhfc29sYW5hX2NvbW1vbjo6c2FmZV9tYXRoOjpVNjQ+Pjo6ZnJvbTo6aGZmNzY3YTg4ODUwMWZmYTObBUU8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGI4YjY0ZTgxMGFmZWEwZDWcBVk8c29sYW5hX3Byb2dyYW06OnB1YmtleTo6UHVia2V5IGFzIGNvcmU6OmNvbnZlcnQ6OkFzUmVmPFt1OF0+Pjo6YXNfcmVmOjpoYTczMmZkZGJiMGIxYzUzM50FRTxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYjhiNjRlODEwYWZlYTBkNZ4FMXN0ZDo6ZXJyb3I6OkVycm9yOjpkZXNjcmlwdGlvbjo6aGZhZjE3YWVlMjQ0ZTM4ZTCfBTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDk4OGU2NDE3ZWIxMjgyZGKgBS9sb2c6OkxldmVsRmlsdGVyOjpmcm9tX3VzaXplOjpoZTVjMTI2YjJjZDdmOTZkMqEFMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhjM2JhMzIxMDA5YzlmOTUwogU2YmluY29kZTo6ZGU6OnJlYWQ6OlNsaWNlUmVhZGVyOjpuZXc6Omg5N2Y5YWNmMjg0NWFiYTU1owUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDk4OGI4ZjU0ODUwODM5MGGkBTU8JnN0ciBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoNTI3NGUwYzlhNzZkZDUzZKUFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOGFmMGExMmFjNzQwNzI5Y6YFRTxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYjhiNjRlODEwYWZlYTBkNacFFF9fd2JpbmRnZW5fZXhuX3N0b3JlqAUwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2MTBjZjk0NjdiNmM3YjAwqQUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGY0YzExYTc5YjU1YThlN2SqBTs8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoYzA1MThhOGU2MjRiN2E2ZKsFZjxzdGQ6OnBhbmlja2luZzo6YmVnaW5fcGFuaWNfaGFuZGxlcjo6U3RyUGFuaWNQYXlsb2FkIGFzIGNvcmU6OnBhbmljOjpCb3hNZVVwPjo6Z2V0OjpoZWJkZTU0MWRmMWQ5YmRlZawFNGRsbWFsbG9jOjpkbG1hbGxvYzo6Q2h1bms6OmNpbnVzZTo6aDY3YjVmODI2YWMwNjQxOGOtBTpkbG1hbGxvYzo6ZGxtYWxsb2M6OkNodW5rOjpjbGVhcl9waW51c2U6OmhkZDk1NjMzYzUwZDQ0YWRkrgUzZGxtYWxsb2M6OmRsbWFsbG9jOjpDaHVuazo6aW51c2U6Omg5YTBjZjkxMjY0YWU1YjM3rwU5Y29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpjYWxsX29uY2U6OmgyNGEzMjEzZmVlYjE5YjQwsAUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDUyZjNlNzliZThkMTk0NTexBTJjb3JlOjpmbXQ6OkZvcm1hdHRlcjo6YWx0ZXJuYXRlOjpoZGU1NjBlMmM4MWYyMDJhMbIFOGNvcmU6OmZtdDo6Rm9ybWF0dGVyOjpkZWJ1Z19sb3dlcl9oZXg6OmgzMzBkZWFlNTc3N2JkYmE2swU4Y29yZTo6Zm10OjpGb3JtYXR0ZXI6OmRlYnVnX3VwcGVyX2hleDo6aDcxOTBiZDE4NDU3YWRmMTK0BU08ZWQyNTUxOTo6U2lnbmF0dXJlIGFzIGNvcmU6OmNvbnZlcnQ6OkFzUmVmPFt1OF0+Pjo6YXNfcmVmOjpoZDI0MDFiMjY0Y2FiNzRjZLUFMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzMjMwY2NmODlkZjM2MmM4tgUxc3RkOjplcnJvcjo6RXJyb3I6OmRlc2NyaXB0aW9uOjpoMmNhNTU5MWNmZGYzM2M3YbcFMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg0NTgzOWE1MDBiNjQ5ODIxuAUOX19ydXN0X2RlYWxsb2O5BUc8Y29uc29sZV9sb2c6OldlYkNvbnNvbGVMb2dnZXIgYXMgbG9nOjpMb2c+OjplbmFibGVkOjpoNDhkNGY3MzEwNjNlMmEwMboFX2N1cnZlMjU1MTlfZGFsZWs6OmVkd2FyZHM6OkVkd2FyZHNQb2ludDo6dmFydGltZV9kb3VibGVfc2NhbGFyX211bF9iYXNlcG9pbnQ6Omg2NTEwY2U5ODg5MTlmNTQwuwUlanNfc3lzOjpBcnJheTo6c2V0OjpoMTQ3YjhhMDU1ZTVjMDEwNLwFKmpzX3N5czo6QXJyYXk6OmlzX2FycmF5OjpoNTdlYmZhZjViNjQxNTMzOb0FJmpzX3N5czo6QXJyYXk6OnB1c2g6OmgwZDFjOTVlZjdhYmY2NjhivgWBAWpzX3N5czo6X193YmdfZ2VuZXJhdGVkX2NvbnN0X1VpbnQ4QXJyYXk6OjxpbXBsIHdhc21fYmluZGdlbjo6Y2FzdDo6SnNDYXN0IGZvciBqc19zeXM6OlVpbnQ4QXJyYXk+OjppbnN0YW5jZW9mOjpoODM4OGI4ZWE4Y2IwY2I5Yr8FL2pzX3N5czo6VWludDhBcnJheTo6c3ViYXJyYXk6Omg3YTU4OTZlNjYzNzIyZmViwAU7cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpEZWNpbWFsOjpyb3VuZF9kcDo6aDIxOTBkNzI5NzU5OWNmMWXBBTNydXN0X2RlY2ltYWw6Om9wczo6YWRkOjphZGRfaW1wbDo6aDM1NDk1ZjIyYzgwZDhmZGXCBTNydXN0X2RlY2ltYWw6Om9wczo6YWRkOjpzdWJfaW1wbDo6aGZiMDE1NDRhZjUwYjA1ZDDDBUc8ZHluIHNlcmRlOjpkZTo6RXhwZWN0ZWQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOTRjNGQ1YjNlYWY4MTgyNMQFMGRsbWFsbG9jOjpkbG1hbGxvYzo6bGVhc3RfYml0OjpoYjJkZDZlODI2MTZjZDQ4ZsUFNWRsbWFsbG9jOjpkbG1hbGxvYzo6Q2h1bms6Om1tYXBwZWQ6Omg0NDY5OWRkYzE0NDYzN2FjxgVQZGxtYWxsb2M6OmRsbWFsbG9jOjpDaHVuazo6c2V0X3NpemVfYW5kX3BpbnVzZV9vZl9pbnVzZV9jaHVuazo6aGNmOTc1MjgwOGZlNzUxNGXHBTNkbG1hbGxvYzo6ZGxtYWxsb2M6OlNlZ21lbnQ6OnRvcDo6aDEwZWFkNGQ5NWZkYTY0MmTIBTs8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoMzhkZDRmYmQ1Yzk5MGU5NMkFOWNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNlOjpoNTRkYWVmOGUzMTk0ODNmN8oFTmNvcmU6OmZtdDo6bnVtOjppbXA6OjxpbXBsIGNvcmU6OmZtdDo6RGlzcGxheSBmb3IgdTMyPjo6Zm10OjpoNWI3ZWE5ZjUxN2EwN2IzOcsFLmNvcmU6Om9wdGlvbjo6ZXhwZWN0X2ZhaWxlZDo6aDcxMDM2M2NiMzkxYTQxOTTMBTdjb3JlOjpmbXQ6OmJ1aWxkZXJzOjpEZWJ1Z1NldDo6ZW50cnk6OmhhYTRmYTcxOTU5MTUwYTMxzQU6PCZtdXQgVyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfc3RyOjpoOGNjMjRmM2Q3YThlOGI1Zc4FTWNvcmU6OmZtdDo6bnVtOjppbXA6OjxpbXBsIGNvcmU6OmZtdDo6RGlzcGxheSBmb3IgdTg+OjpmbXQ6Omg4MGMxYzQ5M2I5ODkwMjJizwVOY29yZTo6Zm10OjpudW06OmltcDo6PGltcGwgY29yZTo6Zm10OjpEaXNwbGF5IGZvciB1NjQ+OjpmbXQ6OmhiNzQ5YjlmMGQzNzEwMDYx0AUfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlctEFMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhhOGNkNTZkMDg5N2U3ZjNi0gUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDkyMDVlOGZlNmUwMTVkOTXTBTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOTI2YzU3ZDI0MTMzYWE3M9QFGl9fcnVzdF9hbGxvY19lcnJvcl9oYW5kbGVy1QVSYW55aG93OjplcnJvcjo6PGltcGwgY29yZTo6Zm10OjpEaXNwbGF5IGZvciBhbnlob3c6OkVycm9yPjo6Zm10OjpoZWYwNjA2NTAyMzYwMTM0YdYFRDxhbGxvYzo6Ym94ZWQ6OkJveDxULEE+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0ZTI2NDA4YTg2MDNiMzM51wUzPCZUIGFzIGNvcmU6OmZtdDo6TG93ZXJIZXg+OjpmbXQ6OmhkZTRlYTM3YjUwZWUxY2Fj2AUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDg2ZDc3ZmRmM2Y1Y2QzNjPZBagBY3VydmUyNTUxOV9kYWxlazo6ZWR3YXJkczo6PGltcGwgY29yZTo6b3BzOjphcml0aDo6TXVsPCZjdXJ2ZTI1NTE5X2RhbGVrOjplZHdhcmRzOjpFZHdhcmRzQmFzZXBvaW50VGFibGU+IGZvciAmY3VydmUyNTUxOV9kYWxlazo6c2NhbGFyOjpTY2FsYXI+OjptdWw6OmgwYWFlMWQ3Mzg4ZGZkM2U42gVBPGJzNTg6OmVuY29kZTo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDI2MTVhYzI4ODVlYjVjNDPbBSxzaGEyOjpzaGEyNTY6OmNvbXByZXNzMjU2OjpoMTM3ODJhNTE4YzlkYmFjONwFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZjVhZWIxMTM4MDM2Njk1N90FMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWQzMWRmOGFlYWY3OTk3ON4FMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgyY2ZkNzVhMTlkZWU4Yzdi3wUwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhkYjE1NGE1NzE0NzVjZDg44AUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDJhYTU5ZWU3MDEyZTE4ZmThBTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZjk5ODM5ZjExZDMzZDYyOOIFKndhc21fYmluZGdlbjo6dGhyb3dfc3RyOjpoNDIyOTgxNWViMGFlM2FkMuMFMXdhc21fYmluZGdlbjo6X19ydDo6dGhyb3dfbnVsbDo6aDU4Y2Y5MmZhM2MwNDhkNjLkBTJ3YXNtX2JpbmRnZW46Ol9fcnQ6OmJvcnJvd19mYWlsOjpoZGQzMGRmYzg4MzY0MWFmMeUFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzQ3ODE2MWU4NTFlYTc5NOYFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTlkMjRmNmQ2NWEwYWJhZecFMmRsbWFsbG9jOjpkbG1hbGxvYzo6Q2h1bms6OnNpemU6Omg1Y2U4ODE3ODBjOWQ2Zjgz6AU0ZGxtYWxsb2M6OmRsbWFsbG9jOjpDaHVuazo6cGludXNlOjpoMjgxYTA0MTk4MDM3ZjllOOkFOWRsbWFsbG9jOjpkbG1hbGxvYzo6U2VnbWVudDo6aXNfZXh0ZXJuOjpoOTU5ZDlhMWNhNmU5Mjc3MOoFOWRsbWFsbG9jOjpkbG1hbGxvYzo6U2VnbWVudDo6c3lzX2ZsYWdzOjpoZTVjYzEzNWRjNzQ5ODExNusFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTJhOTM4MTQ2OTU3ZDJkOOwFNmNvcmU6OmludHJpbnNpY3M6OmNvbnN0X2V2YWxfc2VsZWN0OjpoMDBjOTJkZDQxMjNjMmQ0Nu0FOWNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNlOjpoZTFhNmVhNDI4NThmN2RiOO4FPWFsbG9jOjphbGxvYzo6aGFuZGxlX2FsbG9jX2Vycm9yOjpydF9lcnJvcjo6aDBhYmIxNGUyZjFiY2Y1MmLvBTNhbGxvYzo6YWxsb2M6OmhhbmRsZV9hbGxvY19lcnJvcjo6aGY1ODEyYmIwOGEzNmFhZDbwBQhfX3JnX29vbfEFOWNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNlOjpoMGMxNmUxNGI4M2Y4ODUyY/IFOWNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNlOjpoMWNlMDY4MDgxZjlmNmFhYfMFOWNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNlOjpoY2I4NTRhNGI2NzM5NDdkN/QFQWNvcmU6OnNsaWNlOjppbmRleDo6c2xpY2Vfc3RhcnRfaW5kZXhfbGVuX2ZhaWw6OmhmZTJiZjhlOThkOTMzYWNl9QU/Y29yZTo6c2xpY2U6OmluZGV4OjpzbGljZV9lbmRfaW5kZXhfbGVuX2ZhaWw6Omg4Mzc0ZGI1MzJlMTdhMjc39gU9Y29yZTo6c2xpY2U6OmluZGV4OjpzbGljZV9pbmRleF9vcmRlcl9mYWlsOjpoYzkxNjk0ZTZkNmE0MzFkZfcFNmNvcmU6OmludHJpbnNpY3M6OmNvbnN0X2V2YWxfc2VsZWN0OjpoNGQzZmZjMGM3NzI2M2M0NvgFNmNvcmU6OmludHJpbnNpY3M6OmNvbnN0X2V2YWxfc2VsZWN0OjpoNTkzOWU2YjczMTgxM2Q5N/kFNmNvcmU6OmludHJpbnNpY3M6OmNvbnN0X2V2YWxfc2VsZWN0OjpoZmFjMTczM2QzMGNiYzA2OPoFMzxzdHIgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMmY0ZjU1NDkyYzZhZDY5YvsFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDc5OTY2Nzg1MzdhM2M2NvwFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMWZjMTcwMTY2NzY2MTk2Yf0FMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNDdiYjJmZWNhMzEyYTkzNv4FMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNzMzYTc0MGJlOGZhNzUzOP8FBm1lbWNweYAGB21lbW1vdmWBBgZtZW1jbXCCBgZtZW1zZXSDBjI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMTc0MzJhYzA1ZDQwOTgwN4QGMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgyN2VkMjk1NDFiM2RmM2QzhQYwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwYjI0YjlhYzc0NTViYWI4hgYyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGJlZmI3Y2QxYTdiZDNlODOHBjI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoNDNkZGMyNmRmNjZhZTUzZogGMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjYxMDZiOTgxMWM1MWUwNokGMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzA5OGIzZmIxOGUxNTdjOYoGRDxhbGxvYzo6Ym94ZWQ6OkJveDxULEE+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0ZWE3M2QwMzhhZGZlYzVliwYyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDE5MjQwYWYzNmZkMmQyMWSMBkN3ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX2NvbnNvbGU6OmNvbnNvbGU6OmRlYnVnXzE6OmhmZjQ5ODlkMGFhZGM3YzVhjQZDd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9jb25zb2xlOjpjb25zb2xlOjplcnJvcl8xOjpoOTIzZDNjODFjY2RlZWJlYo4GQndlYl9zeXM6OmZlYXR1cmVzOjpnZW5fY29uc29sZTo6Y29uc29sZTo6aW5mb18xOjpoMGQxMWUyNjI1MjI2Y2JiYY8GQXdlYl9zeXM6OmZlYXR1cmVzOjpnZW5fY29uc29sZTo6Y29uc29sZTo6bG9nXzE6Omg5NTc3ZDcxNzRmODg0ZDc1kAZCd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9jb25zb2xlOjpjb25zb2xlOjp3YXJuXzE6OmgzNTcwYzQ3YTgzMTE3MDZkkQYrc3RkOjplcnJvcjo6RXJyb3I6OmNhdXNlOjpoYmQ1NTMxYTVhMmJmMjI1NJIGLHN0ZDo6ZXJyb3I6OkVycm9yOjpzb3VyY2U6OmhhM2FhNzg5MDkxMzgyMTk4kwYoanNfc3lzOjpBcnJheTo6dmFsdWVzOjpoNjEyM2U5ZmJkOTkwMGI3ZJQGSjxydXN0X2RlY2ltYWw6OmRlY2ltYWw6OkRlY2ltYWwgYXMgY29yZTo6Y21wOjpPcmQ+OjpjbXA6Omg2M2Q2MTUzYzM0YzY1ODI4lQZDPHN0ZDo6aW86OmVycm9yOjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZjMzYWRkMzUxOTNhYTVjN5YGC19fcmRsX2FsbG9jlwY5ZGxtYWxsb2M6OmRsbWFsbG9jOjpDaHVuazo6cGx1c19vZmZzZXQ6Omg2YjFhYmU2Y2Q5Yzg1MTkzmAY6ZGxtYWxsb2M6OmRsbWFsbG9jOjpDaHVuazo6bWludXNfb2Zmc2V0OjpoZjkzNzRjNDNlMTE2ZDJmMpkGNGRsbWFsbG9jOjpkbG1hbGxvYzo6Q2h1bms6OnRvX21lbTo6aDk4ODcwZGZkN2UzMGIzNTGaBjZkbG1hbGxvYzo6ZGxtYWxsb2M6OkNodW5rOjpmcm9tX21lbTo6aDBjYTFlM2VlOWIzMjU0MDWbBi9zaWduYXR1cmU6OmVycm9yOjpFcnJvcjo6bmV3OjpoYzVlOTU4ZTliZjhjZWJmMpwGK3N0ZDo6ZXJyb3I6OkVycm9yOjpjYXVzZTo6aGE4ZDk1MGQzYjY0M2NhYzKdBjBjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbjo6Y2FsbDo6aDJjZjdiODBlNDE2YWZjNzeeBjdjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk11dDo6Y2FsbF9tdXQ6Omg0ZGM1Y2I4OWJhYmMzZjFknwZIY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpjYWxsX29uY2V7e3Z0YWJsZS5zaGltfX06OmgxOGUwOGYwZDI0YmJjYmFmoAZDPHU2NCBhcyBnZnhfc29sYW5hX2NvbW1vbjo6dmF1bHQ6OlZhdWx0Pjo6YW1vdW50OjpoNzIyM2Y1ZGNlZWE3M2IxNaEGRXNvbGFuYV9wcm9ncmFtOjpub25jZTo6c3RhdGU6OmN1cnJlbnQ6OlN0YXRlOjpzaXplOjpoYjA5MGY3M2NjZTcwOWJkOKIGMGNvcmU6Om9wczo6ZnVuY3Rpb246OkZuOjpjYWxsOjpoYzZhM2U2ODRhMjUyZjlkMaMGN2NvcmU6Om9wczo6ZnVuY3Rpb246OkZuTXV0OjpjYWxsX211dDo6aGU4OGNmYjBhZjBkMzY5OWGkBkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDUwODRmNmY3ZTYwYjY0YWSlBjFqc19zeXM6OkFycmF5OjpuZXdfd2l0aF9sZW5ndGg6Omg5ZDM3YmJiZWE0ZjBlNDdhpgY2anNfc3lzOjpVaW50OEFycmF5OjpuZXdfd2l0aF9sZW5ndGg6Omg5MjAwOTk3NmQwYzQyNjY0pwY1d2FzbV9iaW5kZ2VuOjpfX3J0OjptYWxsb2NfZmFpbHVyZTo6aDliYWU5N2U1YjEzYzllY2aoBg1fX3JkbF9kZWFsbG9jqQY2ZGxtYWxsb2M6OmRsbWFsbG9jOjpUcmVlQ2h1bms6Om5leHQ6OmhlMTA0ZTFkZTI5NjM0NjMzqgY2ZGxtYWxsb2M6OmRsbWFsbG9jOjpUcmVlQ2h1bms6OnByZXY6Omg2Y2UxZTRlOTJjZmUwZTM3qwY+Y29yZTo6cGFuaWM6OnBhbmljX2luZm86OlBhbmljSW5mbzo6bWVzc2FnZTo6aDcyOTNlYTNlNzVhMTdiN2asBj9jb3JlOjpwYW5pYzo6cGFuaWNfaW5mbzo6UGFuaWNJbmZvOjpsb2NhdGlvbjo6aDQ3NDlhYTYzZDAzNDBmNTOtBkFjb3JlOjpwYW5pYzo6cGFuaWNfaW5mbzo6UGFuaWNJbmZvOjpjYW5fdW53aW5kOjpoYWJlZmVlOWMyOGYzZWE5ZK4GA2V4cK8GA2xvZ7AGMTxUIGFzIGNvcmU6OmFueTo6QW55Pjo6dHlwZV9pZDo6aDhiZThkNGFjMjM4NGZmN2axBkpjdXJ2ZTI1NTE5X2RhbGVrOjplZHdhcmRzOjpDb21wcmVzc2VkRWR3YXJkc1k6OmFzX2J5dGVzOjpoZTdhNGY2MDRmOWVjNjU5OLIGPWN1cnZlMjU1MTlfZGFsZWs6OnNjYWxhcjo6U2NhbGFyOjphc19ieXRlczo6aGNhZDYxMGRlMWVjMGYzMzazBi1zdGQ6OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aDBlMzkxNjZiMzM0Y2Q1MDC0Bi9zdGQ6OmVycm9yOjpFcnJvcjo6YmFja3RyYWNlOjpoYjFiMTg2OTM2N2JlNjdmYbUGRTxqc19zeXM6OkFycmF5IGFzIGNvcmU6OmRlZmF1bHQ6OkRlZmF1bHQ+OjpkZWZhdWx0OjpoZWM3NTFkMGZhNmI0MWUyZrYGODxsb2c6Ok5vcExvZ2dlciBhcyBsb2c6OkxvZz46OmVuYWJsZWQ6OmhiYmNmYTdiNmI4OGUwZDRjtwYxPFQgYXMgY29yZTo6YW55OjpBbnk+Ojp0eXBlX2lkOjpoMjE3NzY4MmNiMzhkNjc4ZbgGJ3dhc21fYmluZGdlbjo6bWVtb3J5OjpoMDU2MDk0OWFmOGZmMzZiMbkGMTxUIGFzIGNvcmU6OmFueTo6QW55Pjo6dHlwZV9pZDo6aDZkYjE4ZDVjNWFmNjgyMDG6BjE8VCBhcyBjb3JlOjphbnk6OkFueT46OnR5cGVfaWQ6Omg3ZGFmYmFjNGVjOThmMjFhuwYmc3RkOjpwcm9jZXNzOjphYm9ydDo6aDc4NDdhMTMxMGJkZTUyNTO8BhJfX3J1c3Rfc3RhcnRfcGFuaWO9BjxkbG1hbGxvYzo6ZGxtYWxsb2M6OkNodW5rOjpmZW5jZXBvc3RfaGVhZDo6aDM0NDRhNzc0NTNkYWRlMzW+BjhkbG1hbGxvYzo6ZGxtYWxsb2M6OkNodW5rOjptZW1fb2Zmc2V0OjpoNmFkY2YyNmI5MWY2YTMwZL8GN2RsbWFsbG9jOjpkbG1hbGxvYzo6VHJlZUNodW5rOjpjaHVuazo6aDQ5Mzc5ZDdlMTc3OGI4ZGbABkg8ZGxtYWxsb2M6OnN5czo6U3lzdGVtIGFzIGRsbWFsbG9jOjpBbGxvY2F0b3I+OjpyZW1hcDo6aDY5MTFjNDkwZjc2NmJlNTHBBkw8ZGxtYWxsb2M6OnN5czo6U3lzdGVtIGFzIGRsbWFsbG9jOjpBbGxvY2F0b3I+OjpmcmVlX3BhcnQ6OmhlMjQyNDQ2OTA1ODg3NDQxwgZHPGRsbWFsbG9jOjpzeXM6OlN5c3RlbSBhcyBkbG1hbGxvYzo6QWxsb2NhdG9yPjo6ZnJlZTo6aDhhNWY4NjgwY2EzMzRhN2bDBlM8ZGxtYWxsb2M6OnN5czo6U3lzdGVtIGFzIGRsbWFsbG9jOjpBbGxvY2F0b3I+OjpjYW5fcmVsZWFzZV9wYXJ0OjpoNzA5ODM1NTc4ZTc5NGU5OcQGUjxkbG1hbGxvYzo6c3lzOjpTeXN0ZW0gYXMgZGxtYWxsb2M6OkFsbG9jYXRvcj46OmFsbG9jYXRlc196ZXJvczo6aDUxMzAyNWRhZWNjMjc4NTTFBkw8ZGxtYWxsb2M6OnN5czo6U3lzdGVtIGFzIGRsbWFsbG9jOjpBbGxvY2F0b3I+OjpwYWdlX3NpemU6OmgwNDdkNzc4MDMxNTc4NzdkxgYxPFQgYXMgY29yZTo6YW55OjpBbnk+Ojp0eXBlX2lkOjpoMTZkZTM5MGY5MjlkZmQ3NMcGLXN0ZDo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoOWRkNDM5ZGFjMjY4NGE1NcgGL3N0ZDo6ZXJyb3I6OkVycm9yOjpiYWNrdHJhY2U6OmgxNmE5MGQ3ZTI0ZGUwNThhyQZOY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om51bTo6ZXJyb3I6OlRyeUZyb21JbnRFcnJvcj46Omg4NGMxMzFmZTRkODNiMzg5ygZcY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6UGFuaWNQYXlsb2FkPCZzdHI+Pjo6aDg5ZjgzODc1M2E3ZmU4MDPLBosBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6c3luYzo6b25jZTo6T25jZTo6Y2FsbF9vbmNlPGNvbnNvbGVfZXJyb3JfcGFuaWNfaG9vazo6c2V0X29uY2U6Ont7Y2xvc3VyZX19Pjo6e3tjbG9zdXJlfX0+OjpoYWE2OGJmMTUzMGM0Zjc3McwGTmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpudW06OmVycm9yOjpUcnlGcm9tSW50RXJyb3I+OjpoZDQyMDRjZTE0NmYyNmU2N80GPWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpmbXQ6OkVycm9yPjo6aDJkMTNkYzBlMjI5NmFhOWTOBj1jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6Zm10OjpFcnJvcj46OmgyZDEzZGMwZTIyOTZhYTlkzwZAY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGJzNTg6OmVuY29kZTo6RXJyb3I+OjpoNGY5NGM1MDIxNjk0MmY1ZNAGkgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c3RkOjpzeW5jOjpvbmNlOjpPbmNlOjpjYWxsX29uY2U8c29sYW5hX3Byb2dyYW06Ondhc206OnNvbGFuYV9wcm9ncmFtX2luaXQ6Ont7Y2xvc3VyZX19Pjo6e3tjbG9zdXJlfX0+OjpoNmFhNTYyOTJkMjkwZDlmNtEGSmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb25zb2xlX2xvZzo6V2ViQ29uc29sZUxvZ2dlcj46Omg1OTA2NDg4YWIyNGJkODk30gZFPGNvbnNvbGVfbG9nOjpXZWJDb25zb2xlTG9nZ2VyIGFzIGxvZzo6TG9nPjo6Zmx1c2g6OmhlZTY3MWJhZGU4ODI0NTg20wZHY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPCZtdXQgYWxsb2M6OnN0cmluZzo6U3RyaW5nPjo6aGQ4NGE2ZTY1OTJhN2UxYjbUBj1jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6Zm10OjpFcnJvcj46OmgwMjY4Y2E0NmM2YmI4ZTNk1QZEY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGdldHJhbmRvbTo6ZXJyb3I6OkVycm9yPjo6aDA4ODAxNzc0YzJjNjc2MjDWBjBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8aTMyPjo6aGFmMzdlMmVjMjU4MmIzYjfXBkxjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c3RkOjp0aHJlYWQ6OmxvY2FsOjpBY2Nlc3NFcnJvcj46OmgxMDZlYmE4NDVlOGE0N2Fj2AYzY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPCZ1c2l6ZT46Omg1NmI0MzBhZjAyYWJlMDZh2QYyY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPCYmc3RyPjo6aDFhYjk3MmEzMDE3MTgxYjHaBjQ8bG9nOjpOb3BMb2dnZXIgYXMgbG9nOjpMb2c+Ojpsb2c6OmgyNjI3Y2Q0OWI0MDBiYzBi2wY2PGxvZzo6Tm9wTG9nZ2VyIGFzIGxvZzo6TG9nPjo6Zmx1c2g6Omg2OTk5MTExMjNjYTY2ZWVh3AZXPGJpbmNvZGU6OmNvbmZpZzo6RGVmYXVsdE9wdGlvbnMgYXMgY29yZTo6ZGVmYXVsdDo6RGVmYXVsdD46OmRlZmF1bHQ6OmhhZTBjYWY1Zjc0MTYyZTBj3QYwY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPCZ1OD46Omg5M2I3NWI4MDJjZjJkNDVh3gYxY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPCZ1MzI+OjpoMmZkZDJiM2RmYzM3ZjA2NN8GMWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTwmc3RyPjo6aDc3ZmYxOTc2ZWY3NzQ4NzLgBmljb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Jm11dCBzdGQ6OmlvOjpXcml0ZTo6d3JpdGVfZm10OjpBZGFwdGVyPGFsbG9jOjp2ZWM6OlZlYzx1OD4+Pjo6aDk4NzdkZTE4OTY1MzRiOWHhBjBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8JnU4Pjo6aDBlZmQ5YzIzMTk3ZGJjNDTiBm9jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8JmNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpjb3BpZWQ6OkNvcGllZDxjb3JlOjpzbGljZTo6aXRlcjo6SXRlcjx1OD4+Pjo6aGU2ZmI0OTkwNTVkZWExMmTjBjNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8JnVzaXplPjo6aDQ2MWMzYmQyYzU5ODlmN2PkBlFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8ZWQyNTUxOV9kYWxlazo6ZXJyb3JzOjpJbnRlcm5hbEVycm9yPjo6aDJhZGQ0NDQzZjQ0NWMzZDnlBkJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8JmNvcmU6OnRpbWU6OkR1cmF0aW9uPjo6aDNkMjBmYTU3NDk3MzkwZDnmBjBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dTY0Pjo6aGM1NDEyYTk2NjYyMmM5ZmHnBjFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8JnN0cj46OmgxNTVlMzQ1ODcxNmVjM2E36AY9Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6OmZtdDo6RXJyb3I+OjpoNTI3MTEwMzkxNjNmOTdjNOkGPWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpmbXQ6OkVycm9yPjo6aDUyNzExMDM5MTYzZjk3YzTqBjFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8JnN0cj46OmgxNTVlMzQ1ODcxNmVjM2E3AO+AgIAACXByb2R1Y2VycwIIbGFuZ3VhZ2UBBFJ1c3QADHByb2Nlc3NlZC1ieQMFcnVzdGMdMS42Mi4wIChhODMxNGVmN2QgMjAyMi0wNi0yNykGd2FscnVzBjAuMTkuMAx3YXNtLWJpbmRnZW4GMC4yLjgz","base64"))},Fg=class{constructor(e,t,n,i){this.programId=e,this.controller=t,this.tokenIn=n,this.tokenOut=i,this.getPairAddress=(e,t)=>{const n=[e.toBuffer(),t.toBuffer()].sort(Ct.Buffer.compare);return A.PublicKey.findProgramAddressSync([Ct.Buffer.from("GFX-SSL-Pair","utf-8"),this.controller.toBuffer(),n[0],n[1]],this.programId)[0]}}getAccounts(){const e=this.getPairAddress(this.tokenIn,this.tokenOut),t=Pg.findAddress(this.controller,this.tokenIn,this.programId),n=Pg.findAddress(this.controller,this.tokenOut,this.programId),i=Yl(t,this.tokenIn),r=Yl(t,this.tokenOut);return{pairAddress:e,sslIn:t,sslOut:n,liabilityVaultIn:i,liabilityVaultOut:Yl(n,this.tokenOut),swappedLiabilityVaultIn:r,swappedLiabilityVaultOut:Yl(n,this.tokenIn)}}getQuote(e,t,n){const i=gg;if(0n===e)return{amountIn:0n,fee:0n,amountOut:0n,impact:0,swapPrice:0,instantPrice:0,oraclePrice:0};let r;try{r=i(t.sslInData.slice(),t.sslOutData.slice(),t.pairData.slice(),t.liabilityIn,t.liabilityOut,t.swappedLiabilityIn,t.swappedLiabilityOut,t.registry,e)}catch(t){if(n)return{amountIn:e,fee:0n,amountOut:0n,impact:1,swapPrice:0,instantPrice:0,oraclePrice:0};throw t}return{amountIn:r.amount_in,fee:r.fee_paid,amountOut:r.amount_out,impact:r.price_impact,swapPrice:r.swap_price,instantPrice:r.insta_price,oraclePrice:r.oracle_price}}};Dl({},{accounts:()=>Ug,default:()=>Lg,errors:()=>_g,instructions:()=>xg,name:()=>Gg,version:()=>Rg});var Rg="0.1.0",Gg="contract",xg=[{name:"createStakingAccount",accounts:[{name:"controller",isMut:!1,isSigner:!1},{name:"stakingAccount",isMut:!0,isSigner:!1},{name:"userWallet",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]},{name:"stake",accounts:[{name:"controller",isMut:!0,isSigner:!1},{name:"stakingAccount",isMut:!0,isSigner:!1},{name:"vault",isMut:!0,isSigner:!1},{name:"userAta",isMut:!0,isSigner:!1},{name:"userWallet",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"unstake",accounts:[{name:"controller",isMut:!0,isSigner:!1},{name:"stakingAccount",isMut:!0,isSigner:!1},{name:"vault",isMut:!0,isSigner:!1},{name:"userAta",isMut:!0,isSigner:!1},{name:"feeCollectorAta",isMut:!0,isSigner:!1},{name:"userWallet",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"unstakePercent",type:"u64"}]}],Ug=[],_g=[{code:6e3,name:"Suspended",msg:"[G000] The pool is suspended"},{code:6001,name:"NotAdmin",msg:"[G001] Not admin"},{code:6002,name:"PercentageOutOfRange",msg:"[G002] Percentage out of range"},{code:6003,name:"NotEnoughRewardReserve",msg:"[G003] Not enough reward reserve"}],Lg={version:Rg,name:Gg,instructions:xg,accounts:Ug,errors:_g},Kg=i(53670),Yg=i.n(Kg),jg=(i(59985),i(79490)),Wg=(i(55872).Buffer,(e,t,n,i)=>(Kg(e%t==0,"tick not on tick spacing"),i?Jg(n,Math.max(-nd,e-od),e,t):Jg(n,e,Math.min(nd,e+od),t))),Jg=(e,t,n,i)=>{Kg(0!==i,"step must be non-zero"),t=Math.floor(t/i),n=Math.floor(n/i);const r=e;for(;n-t>1;){const e=Math.floor((n-t)/2)+t,o=ad(e*i);if(o.v.eq(r.v))return e*i;o.v.lt(r.v)&&(t=e),o.v.gt(r.v)&&(n=e)}return t*i},qg=(e,t,n)=>{const i=e.div(t);let r=new(y())(0);if(n){const e=new(y())(nd).subn(1),n=i.add(new(y())(od)),o=new(y())(id).div(t);r=y().min(y().min(e,n),o)}else{const e=new(y())(-nd).addn(1),n=i.sub(new(y())(od)),o=new(y())(-id).div(t);r=y().max(y().max(e,n),o)}return r.mul(t)},Zg=(e,t)=>{if(!e.mod(t).eqn(0))throw new Error("Tick not divisible by spacing");const n=e.div(t).addn(nd);return{byte:n.divn(8).toNumber(),bit:Math.abs(n.modn(8))}},zg=new(y())(10).pow(new(y())(12)),Hg=new(y())(10).pow(new(y())(6)),Vg=new(y())(10).pow(new(y())(24)),Xg=(new(y())(10).pow(new(y())(24)),new(y())(10).pow(new(y())(7))),$g=(new(y())("340282366920938463463374607431768211455"),e=>e.mul(Xg)),ed=($g(new(y())(1)),$g(new(y())(10)),$g(new(y())(50)),$g(new(y())(100)),$g(new(y())(300)),$g(new(y())(1e3)),(e,t=0)=>({v:zg.muln(e).div(new(y())(10).pow(new(y())(t)))})),td=e=>{const{sqrtPriceLimit:t,xToY:n,currentTick:i,tickSpacing:r,tickmap:o}=e;let A,s,a=n?((e,t,n)=>{const i=qg(new(y())(t),new(y())(n),!1);let{byte:r,bit:o}=Zg(new(y())(t),new(y())(n));const{byte:A,bit:s}=Zg(i,new(y())(n));for(;r>A||r===A&&o>=s;){let t=1<0){for(;0==(i&t);)t>>=1,o-=1;return r>A||r===A&&o>=s?(8*r+o-nd)*n:null}r-=1,o=7}return null})(o,i,r):((e,t,n)=>{const i=qg(new(y())(t),new(y())(n),!0);let{byte:r,bit:o}=Zg(new(y())(t+n),new(y())(n));const{byte:A,bit:s}=Zg(new(y())(i),new(y())(n));for(;r>o;if(0!==t){for(;t%2==0;)t>>=1,o+=1;return r({v:new(y())(e).mul(zg)}),ad=e=>{const t=Math.abs(e);if(t>id)throw Error("tick over bounds");let n=new(y())(zg);return 0!=(1&t)&&(n=n.mul(new(y())("1000049998750")).div(zg)),0!=(2&t)&&(n=n.mul(new(y())("1000100000000")).div(zg)),0!=(4&t)&&(n=n.mul(new(y())("1000200010000")).div(zg)),0!=(8&t)&&(n=n.mul(new(y())("1000400060004")).div(zg)),0!=(16&t)&&(n=n.mul(new(y())("1000800280056")).div(zg)),0!=(32&t)&&(n=n.mul(new(y())("1001601200560")).div(zg)),0!=(64&t)&&(n=n.mul(new(y())("1003204964963")).div(zg)),0!=(128&t)&&(n=n.mul(new(y())("1006420201726")).div(zg)),0!=(256&t)&&(n=n.mul(new(y())("1012881622442")).div(zg)),0!=(512&t)&&(n=n.mul(new(y())("1025929181080")).div(zg)),0!=(1024&t)&&(n=n.mul(new(y())("1052530684591")).div(zg)),0!=(2048&t)&&(n=n.mul(new(y())("1107820842005")).div(zg)),0!=(4096&t)&&(n=n.mul(new(y())("1227267017980")).div(zg)),0!=(8192&t)&&(n=n.mul(new(y())("1506184333421")).div(zg)),0!=(16384&t)&&(n=n.mul(new(y())("2268591246242")).div(zg)),0!=(32768&t)&&(n=n.mul(new(y())("5146506242525")).div(zg)),0!=(65536&t)&&(n=n.mul(new(y())("26486526504348")).div(zg)),0!=(131072&t)&&(n=n.mul(new(y())("701536086265529")).div(zg)),e<0?{v:zg.mul(zg).div(n).mul(new(y())(10).pow(new(y())(12)))}:{v:n.mul(new(y())(10).pow(new(y())(12)))}},cd=e=>{if(e.lt(new(y())(0)))throw new Error("Sqrt only works on non-negative inputs");if(e.lt(new(y())(2)))return e;const t=cd(e.shrn(2)).shln(1),n=t.add(new(y())(1));return n.mul(n).gt(e)?t:n},ud=(e,t,n)=>{const i=n?t.v.add(zg):zg.sub(t.v),r=cd(i.mul(zg));return{v:e.v.mul(r).div(zg)}},ld=(e,t,n,i,r,o)=>{if(n.v.eqn(0))return{nextPrice:t,amountIn:new(y())(0),amountOut:new(y())(0),feeAmount:new(y())(0)};const A=e.v.gte(t.v);let s={v:new(y())(0)},a=new(y())(0),c=new(y())(0),u=new(y())(0);if(r){const r=sd(1).v.sub(o.v).mul(i).div(zg);a=A?gd(t,e,n,!0)??Ad:dd(t,e,n,!0)??Ad,s=r.gte(a)?t:hd(e,n,r,A)}else c=A?dd(t,e,n,!1)??Ad:gd(e,t,n,!1)??Ad,s=i.gte(c)?t:pd(e,n,i,A);const l=t.v.eq(s.v);if(A?(l&&r||(a=gd(s,e,n,!0)),l&&!r||(c=dd(s,e,n,!1))):(l&&r||(a=dd(e,s,n,!0)),l&&!r||(c=gd(e,s,n,!1))),null===a||null===c)throw new Error("Amount would be greater than u64");return!r&&c.gt(i)&&(c=i),u=r&&!s.v.eq(t.v)?i.sub(a):a.mul(o.v).add(zg.subn(1)).div(zg),{nextPrice:s,amountIn:a,amountOut:c,feeAmount:u}},gd=(e,t,n,i)=>{let r;r=e.v.gt(t.v)?{v:e.v.sub(t.v)}:{v:t.v.sub(e.v)};const o=n.v.mul(r.v).div(Hg);if(i){const n=e.v.mul(t.v).div(Vg),i=o.mul(Vg).add(n.subn(1)).div(n).add(Vg.subn(1)).div(Vg);return i.lte(Ad)?i:null}{const n=e.v.mul(t.v).add(Vg.subn(1)).div(Vg),i=o.mul(Vg).div(n).div(Vg);return i.lte(Ad)?i:null}},dd=(e,t,n,i)=>{let r;if(r=e.v.gt(t.v)?{v:e.v.sub(t.v)}:{v:t.v.sub(e.v)},i){const e=r.v.mul(n.v).add(Hg.subn(1)).div(Hg).add(Vg.subn(1)).div(Vg);return e.lte(Ad)?e:null}{const e=r.v.mul(n.v).div(Hg).div(Vg);return e.lte(Ad)?e:null}},hd=(e,t,n,i)=>(Kg(e.v.gt(new(y())(0)),"prive should be gt 0"),Kg(t.v.gt(new(y())(0)),"liquidity should be gt 0"),i?fd(e,t,n,!0):md(e,t,n,!0)),pd=(e,t,n,i)=>(Kg(e.v.gt(new(y())(0)),"prive should be gt 0"),Kg(t.v.gt(new(y())(0)),"liquidity should be gt 0"),i?md(e,t,n,!1):fd(e,t,n,!1)),fd=(e,t,n,i)=>{if(n.eqn(0))return e;const r=t.v.mul(new(y())(10).pow(new(y())(18))),o=e.v.mul(n);let A;return A=i?r.add(o):r.sub(o),{v:e.v.mul(t.v).add(Hg.subn(1)).div(Hg).mul(Vg).add(A.subn(1)).div(A)}},md=(e,t,n,i)=>{let r;return i?(r=n.mul(Vg).mul(Vg).div(t.v.mul(new(y())(10).pow(new(y())(18)))),{v:e.v.add(r)}):(r=n.mul(Vg).mul(Vg).add(t.v.mul(new(y())(10).pow(new(y())(18))).subn(1)).div(t.v.mul(new(y())(10).pow(new(y())(18)))),{v:e.v.sub(r)})},Id=(e,t,n,i,r=1/0,o)=>{if(t%n!=0)throw Error("invalid arguments can't find initialized ticks");const A=Math.floor(t/n)+nd;let s=A+1,a=A;const c=[];let u="down"===o,l="up"===o;for(;c.length=2*nd,s++),l||(e[Math.floor(a/8)]&1<i&&c.pop(),c.map((e=>(e-nd)*n))},yd=(e,t,n,i,r,o)=>{if(n.v.eqn(0))return!0;let A;if(r){const r=sd(1).v.sub(i.v).mul(e).div(zg);A=hd(t,n,r,o)}else A=pd(t,n,e,o);return!t.v.eq(A.v)},Bd=(new A.PublicKey(0),i(32864)),Cd=(i(88323),i(55872).Buffer),wd=(i(49500),Math.pow,{version:"0.1.1",name:"lifinity_amm_v2",instructions:[{name:"initialize",accounts:[{name:"authority",isMut:!1,isSigner:!1},{name:"amm",isMut:!0,isSigner:!0},{name:"poolMint",isMut:!0,isSigner:!1},{name:"tokenA",isMut:!0,isSigner:!1},{name:"tokenB",isMut:!0,isSigner:!1},{name:"feeAccount",isMut:!0,isSigner:!1},{name:"destination",isMut:!0,isSigner:!1},{name:"oracleMainAccount",isMut:!1,isSigner:!1},{name:"oracleSubAccount",isMut:!1,isSigner:!1},{name:"oraclePcAccount",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"baseDecimals",type:"u8"},{name:"ammFees",type:{defined:"AmmFees"}},{name:"ammCurve",type:{defined:"AmmCurve"}},{name:"ammConfig",type:{defined:"AmmConfig"}}]},{name:"swap",accounts:[{name:"authority",isMut:!1,isSigner:!1},{name:"amm",isMut:!0,isSigner:!1},{name:"userTransferAuthority",isMut:!1,isSigner:!0},{name:"sourceInfo",isMut:!0,isSigner:!1},{name:"destinationInfo",isMut:!0,isSigner:!1},{name:"swapSource",isMut:!0,isSigner:!1},{name:"swapDestination",isMut:!0,isSigner:!1},{name:"poolMint",isMut:!0,isSigner:!1},{name:"feeAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"oracleMainAccount",isMut:!1,isSigner:!1},{name:"oracleSubAccount",isMut:!1,isSigner:!1},{name:"oraclePcAccount",isMut:!1,isSigner:!1}],args:[{name:"amountIn",type:"u64"},{name:"minimumAmountOut",type:"u64"}]},{name:"depositAllTokenTypes",accounts:[{name:"amm",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1},{name:"userTransferAuthorityInfo",isMut:!1,isSigner:!0},{name:"sourceAInfo",isMut:!0,isSigner:!1},{name:"sourceBInfo",isMut:!0,isSigner:!1},{name:"tokenA",isMut:!0,isSigner:!1},{name:"tokenB",isMut:!0,isSigner:!1},{name:"poolMint",isMut:!0,isSigner:!1},{name:"destination",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"poolTokenAmount",type:"u64"},{name:"maximumTokenAAmount",type:"u64"},{name:"maximumTokenBAmount",type:"u64"}]},{name:"withdrawAllTokenTypes",accounts:[{name:"amm",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1},{name:"userTransferAuthorityInfo",isMut:!1,isSigner:!0},{name:"sourceInfo",isMut:!0,isSigner:!1},{name:"tokenA",isMut:!0,isSigner:!1},{name:"tokenB",isMut:!0,isSigner:!1},{name:"poolMint",isMut:!0,isSigner:!1},{name:"destTokenAInfo",isMut:!0,isSigner:!1},{name:"destTokenBInfo",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"poolTokenAmount",type:"u64"},{name:"minimumTokenAAmount",type:"u64"},{name:"minimumTokenBAmount",type:"u64"}]},{name:"ammOracleStatusUpdate",accounts:[{name:"amm",isMut:!0,isSigner:!0}],args:[{name:"oracleStatus",type:"u64"}]},{name:"ammFreezeUpdate",accounts:[{name:"amm",isMut:!0,isSigner:!0}],args:[{name:"freezeTrade",type:"u8"},{name:"freezeDeposit",type:"u8"},{name:"freezeWithdraw",type:"u8"},{name:"baseDecimals",type:"u8"}]},{name:"ammFeeCurveConfigUpdate",accounts:[{name:"amm",isMut:!0,isSigner:!0}],args:[{name:"ammFees",type:{defined:"AmmFees"}},{name:"ammCurve",type:{defined:"AmmCurve"}},{name:"ammConfig",type:{defined:"AmmConfig"}}]},{name:"ammLastPriceUpdate",accounts:[{name:"amm",isMut:!0,isSigner:!0}],args:[{name:"lastPrice",type:"u64"}]},{name:"ammRegressionTargetUpdate",accounts:[{name:"amm",isMut:!1,isSigner:!1},{name:"ammOwner",isMut:!1,isSigner:!0}],args:[{name:"targetAmount",type:"u64"}]}],accounts:[{name:"amm",type:{kind:"struct",fields:[{name:"initializerKey",type:"publicKey"},{name:"initializerDepositTokenAccount",type:"publicKey"},{name:"initializerReceiveTokenAccount",type:"publicKey"},{name:"initializerAmount",type:"u64"},{name:"takerAmount",type:"u64"},{name:"isInitialized",type:"bool"},{name:"bumpSeed",type:"u8"},{name:"freezeTrade",type:"u8"},{name:"freezeDeposit",type:"u8"},{name:"freezeWithdraw",type:"u8"},{name:"baseDecimals",type:"u8"},{name:"tokenProgramId",type:"publicKey"},{name:"tokenAAccount",type:"publicKey"},{name:"tokenBAccount",type:"publicKey"},{name:"poolMint",type:"publicKey"},{name:"tokenAMint",type:"publicKey"},{name:"tokenBMint",type:"publicKey"},{name:"feeAccount",type:"publicKey"},{name:"oracleMainAccount",type:"publicKey"},{name:"oracleSubAccount",type:"publicKey"},{name:"oraclePcAccount",type:"publicKey"},{name:"fees",type:{defined:"AmmFees"}},{name:"curve",type:{defined:"AmmCurve"}},{name:"config",type:{defined:"AmmConfig"}},{name:"ammPTemp1",type:"publicKey"},{name:"ammPTemp2",type:"publicKey"},{name:"ammPTemp3",type:"publicKey"},{name:"ammPTemp4",type:"publicKey"},{name:"ammPTemp5",type:"publicKey"}]}}],types:[{name:"AmmFees",type:{kind:"struct",fields:[{name:"tradeFeeNumerator",type:"u64"},{name:"tradeFeeDenominator",type:"u64"},{name:"ownerTradeFeeNumerator",type:"u64"},{name:"ownerTradeFeeDenominator",type:"u64"},{name:"ownerWithdrawFeeNumerator",type:"u64"},{name:"ownerWithdrawFeeDenominator",type:"u64"},{name:"hostFeeNumerator",type:"u64"},{name:"hostFeeDenominator",type:"u64"}]}},{name:"AmmCurve",type:{kind:"struct",fields:[{name:"curveType",type:"u8"},{name:"curveParameters",type:"u64"}]}},{name:"AmmConfig",type:{kind:"struct",fields:[{name:"lastPrice",type:"u64"},{name:"lastBalancedPrice",type:"u64"},{name:"configDenominator",type:"u64"},{name:"volumeX",type:"u64"},{name:"volumeY",type:"u64"},{name:"volumeXInY",type:"u64"},{name:"depositCap",type:"u64"},{name:"regressionTarget",type:"u64"},{name:"oracleType",type:"u64"},{name:"oracleStatus",type:"u64"},{name:"oracleMainSlotLimit",type:"u64"},{name:"oracleSubConfidenceLimit",type:"u64"},{name:"oracleSubSlotLimit",type:"u64"},{name:"oraclePcConfidenceLimit",type:"u64"},{name:"oraclePcSlotLimit",type:"u64"},{name:"stdSpread",type:"u64"},{name:"stdSpreadBuffer",type:"u64"},{name:"spreadCoefficient",type:"u64"},{name:"priceBufferCoin",type:"i64"},{name:"priceBufferPc",type:"i64"},{name:"rebalanceRatio",type:"u64"},{name:"feeTrade",type:"u64"},{name:"feePlatform",type:"u64"},{name:"configTemp3",type:"u64"},{name:"configTemp4",type:"u64"},{name:"configTemp5",type:"u64"},{name:"configTemp6",type:"u64"},{name:"configTemp7",type:"u64"},{name:"configTemp8",type:"u64"}]}},{name:"CurveType",type:{kind:"enum",variants:[{name:"Standard"},{name:"ConstantProduct"}]}},{name:"TradeDirection",type:{kind:"enum",variants:[{name:"AtoB"},{name:"BtoA"}]}},{name:"RoundDirection",type:{kind:"enum",variants:[{name:"Floor"},{name:"Ceiling"}]}}],errors:[{code:6e3,name:"AlreadyInUse",msg:"Swap account already in use"},{code:6001,name:"InvalidProgramAddress",msg:"Invalid program address generated from bump seed and key"},{code:6002,name:"InvalidOwner",msg:"Input account owner is not the program address"},{code:6003,name:"InvalidOutputOwner",msg:"Output pool account owner cannot be the program address"},{code:6004,name:"ExpectedMint",msg:"Deserialized account is not an SPL Token mint"},{code:6005,name:"ExpectedAccount",msg:"Deserialized account is not an SPL Token account"},{code:6006,name:"EmptySupply",msg:"Input token account empty"},{code:6007,name:"InvalidSupply",msg:"Pool token mint has a non-zero supply"},{code:6008,name:"InvalidDelegate",msg:"Token account has a delegate"},{code:6009,name:"InvalidInput",msg:"InvalidInput"},{code:6010,name:"IncorrectSwapAccount",msg:"Address of the provided swap token account is incorrect"},{code:6011,name:"IncorrectPoolMint",msg:"Address of the provided pool token mint is incorrect"},{code:6012,name:"InvalidOutput",msg:"InvalidOutput"},{code:6013,name:"CalculationFailure",msg:"General calculation failure due to overflow or underflow"},{code:6014,name:"InvalidInstruction",msg:"Invalid instruction"},{code:6015,name:"RepeatedMint",msg:"Swap input token accounts have the same mint"},{code:6016,name:"ExceededSlippage",msg:"Swap instruction exceeds desired slippage limit"},{code:6017,name:"InvalidCloseAuthority",msg:"Token account has a close authority"},{code:6018,name:"InvalidFreezeAuthority",msg:"Pool token mint has a freeze authority"},{code:6019,name:"IncorrectFeeAccount",msg:"Pool fee token account incorrect"},{code:6020,name:"ZeroTradingTokens",msg:"Given pool token amount results in zero trading tokens"},{code:6021,name:"FeeCalculationFailure",msg:"Fee calculation failed due to overflow, underflow, or unexpected 0"},{code:6022,name:"ConversionFailure",msg:"Conversion to u64 failed with an overflow or underflow"},{code:6023,name:"InvalidFee",msg:"The provided fee does not match the program owner's constraints"},{code:6024,name:"IncorrectTokenProgramId",msg:"The provided token program does not match the token program expected by the swap"},{code:6025,name:"IncorrectOracleAccount",msg:"Address of the provided oracle account is incorrect"},{code:6026,name:"IncorrectConfigAccount",msg:"Address of the provided config account is incorrect"},{code:6027,name:"UnsupportedCurveType",msg:"The provided curve type is not supported by the program owner"},{code:6028,name:"InvalidCurve",msg:"The provided curve parameters are invalid"},{code:6029,name:"UnsupportedCurveOperation",msg:"The operation cannot be performed on the given curve"},{code:6030,name:"InvalidPythStatus",msg:"Pyth oracle status is not 'trading'"},{code:6031,name:"InvalidPythPrice",msg:"Could not retrieve updated price feed from the Pyth oracle"},{code:6032,name:"IncorrectSigner",msg:"Address of the provided signer account is incorrect"},{code:6033,name:"ExceedPoolBalance",msg:"Swap amount exceeds pool balance"},{code:6034,name:"ProgramIsFrozen",msg:"Program is frozen"},{code:6035,name:"OracleConfidence",msg:"Oracle confidence is too low"},{code:6036,name:"OverCapAmount",msg:"Over Pool Cap Amount"},{code:6037,name:"InvalidUpdateAccount",msg:"Invalid update wallet address"}]});function Ed(e,t){for(let[n,i]of Object.entries(e))if(i===t)return{key:n};return{}}new A.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");var Qd="AtoB",bd="BtoA";function kd(e,t){let n=t,i=e.div(n);return i.eq(0)?{q:new NA(0),r:new NA(0)}:(e.mod(t).gt(0)&&(i=i.plus(1),n=e.div(i),e.mod(i).gt(0)&&(n=n.plus(1))),{q:i,r:n})}new A.PublicKey("So11111111111111111111111111111111111111112"),new A.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),new A.PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),new A.PublicKey("HWzXGcGHy4tcpYfaRDCyLNzXqBTv3E6BttpCH2vJxArv");const vd=Object.freeze({VAULT_PREFIX:"vault",TOKEN_VAULT_PREFIX:"token_vault",LP_MINT_PREFIX:"lp_mint",COLLATERAL_VAULT_PREFIX:"collateral_vault",OBLIGATION_PREFIX:"obligation",OBLIGATION_OWNER_PREFIX:"obligation_owner",STAKING_PREFIX:"staking",MINER:"Miner",QUARRY:"Quarry",APRICOT_USER_INFO_SIGNER_PREFIX:"apricot_user_info_signer",FRAKT:"frakt",DEPOSIT:"deposit",FRAKT_LENDING:"nftlendingv2",CYPHER:"cypher"}),Sd=(new A.PublicKey("ALend7Ketfx5bxh6ghsCDXAoDrhvEmsXT3cynB6aPLgx"),new A.PublicKey("pdQ2rQQU5zH2rDgZ7xH2azMBJegUzUyunJ5Jd637hC4"),new A.PublicKey("ALend7Ketfx5bxh6ghsCDXAoDrhvEmsXT3cynB6aPLgx"),new A.PublicKey("pdQ2rQQU5zH2rDgZ7xH2azMBJegUzUyunJ5Jd637hC4"),new A.PublicKey("So1endDq2YkqhipRh3WViPa8hdiSpxWy6z3Z6tMCpAo"),new A.PublicKey("Port7uDYB3wk6GJAw4KT1WpTeMtSu9bTcChBHkX2LfR"),new(y())(1e12));i(49500),i(55872).Buffer;var Md=i(55872).Buffer,Dd=i(49500),Nd=(e=>(e.APT="APT",e.BTC="BTC",e.ETH="ETH",e.USDT="USDT",e.USDC="USDC",e.UST="UST",e.SOL="SOL",e.SBR="SBR",e.ORCA="ORCA",e.RAY="RAY",e.MERC="MERC",e.MNDE="MNDE",e.mSOL="mSOL",e.USTv2="USTv2",e.FTT="FTT",e.SRM="SRM",e.stSOL="stSOL",e.whETH="whETH",e.wLDO="wLDO",e.scnSOL="scnSOL",e.SOCN="SOCN",e.wLUNA="wLUNA",e.USDT_USDC_SABER="USDT_USDC_SABER",e.USTv2_USDC_SABER="USTv2_USDC_SABER",e.UST_USDC_SABER="UST_USDC_SABER",e.mSOL_SOL_SABER="mSOL_SOL_SABER",e.stSOL_SOL_SABER="stSOL_SOL_SABER",e.SOL_USDC_RAYDIUM="SOL_USDC_RAYDIUM",e.RAY_USDC_RAYDIUM="RAY_USDC_RAYDIUM",e.SOL_USDT_RAYDIUM="SOL_USDT_RAYDIUM",e.mSOL_SOL_RAYDIUM="mSOL_SOL_RAYDIUM",e.RAY_USDT_RAYDIUM="RAY_USDT_RAYDIUM",e.RAY_ETH_RAYDIUM="RAY_ETH_RAYDIUM",e.RAY_SOL_RAYDIUM="RAY_SOL_RAYDIUM",e.SRM_USDC_RAYDIUM="SRM_USDC_RAYDIUM",e.USDC_USDT_ORCA="USDC_USDT_ORCA",e.SOL_USDC_ORCA="SOL_USDC_ORCA",e.mSOL_SOL_ORCA="mSOL_SOL_ORCA",e.ORCA_USDC_ORCA="ORCA_USDC_ORCA",e.ORCA_SOL_ORCA="ORCA_SOL_ORCA",e.ETH_USDC_ORCA="ETH_USDC_ORCA",e.SOL_USDT_ORCA="SOL_USDT_ORCA",e.ETH_SOL_ORCA="ETH_SOL_ORCA",e.BTC_mSOL_ORCA="BTC_mSOL_ORCA",e.mSOL_USDC_ORCA="mSOL_USDC_ORCA",e.APT_USDC_ORCA="APT_USDC_ORCA",e.stSOL_USTv2_ORCA="stSOL_USTv2_ORCA",e.ORCA_whETH_ORCA="ORCA_whETH_ORCA",e))(Nd||{}),Td=class{constructor(e,t,n,i,r,o,A,s,a,c,u,l,g,d){if(this.tokenId=e,this.poolId=t,this.ltv=n,this.mint=i,this.liquidationDiscount=r,this.tokenCategory=o,this.lpLeftRightTokenId=A,this.lpLeftRightPoolId=s,this.lpDex=a,this.lpTargetSwap=c,this.lpSwapKeyInfo=u,this.lpNeedSndStake=l,this.interestRate=g,this.reserveRatio=d,W(e),W(t>=0),W(n>=0),W(i),W(r>=0),W(d>=0),W(d<=.2),"lp"===o){W(null!=A),W(null!=s),W(null!=a),W(null!=c);const[e,t]=A,[n,i]=s;W(e),W(t),W(n>=0),W(i>=0),W(u),W(!0===l||!1===l)}else W(g)}isStable(){return"stable"===this.tokenCategory}isLp(){return"lp"===this.tokenCategory}isVolatile(){return"volatile"===this.tokenCategory}};function Pd(e,t,n){const[i,r]=t[e];return[n[i],n[r]]}var Od=class{constructor(e,t,n,i,r,o,A,s,a,c,u,l,g,d,h,p,f,m,I,y,B,C,w){this.programPubkey=e,this.adminPubkey=t,this.farmerPubkey=n,this.assistKey=i,this.refresherKey=r,this.retroAptVault=o,this.lmAptVault=A,this.mints=s,this.decimalMults=a,this.categories=c,this.tokenIdToPoolId=u,this.discounts=l,this.ltvs=g,this.lpToLR=d,this.lpToDex=h,this.lpToTargetSwap=p,this.lpToNeedSndStake=f,this.switchboardPriceKeys=m,this.pythPriceKeys=I,this.interestRates=y,this.fees=B,this.lpSwapInfo=C,this.firebaseConfig=w,this.mints=s,this.tokenIdToPoolId=u;const E=Object.values(u),Q=new Set(E);W(E.length===Q.size,(E.length,Q.size)),this.poolConfigs={};for(const e in u){const t=e;this.poolConfigs[t]=new Td(t,u[t],g[t],s[t],l[t],c[t],"lp"===c[t]?d[t]:null,"lp"===c[t]?Pd(t,d,u):null,"lp"===c[t]?h[t]:null,"lp"===c[t]?p[t]:null,C[t],"lp"===c[t]?f[t]:null,"lp"===c[t]?null:y[t],B[t])}}mintKeyStrToPoolId(e){for(const[t,n]of Object.entries(this.mints))if(n.toString()===e){const e=this.tokenIdToPoolId[t];return W(void 0!==e),e}W(!1)}getPoolIdList(){return Object.values(this.tokenIdToPoolId)}getTokenIdByPoolId(e){for(const[t,n]of Object.entries(this.tokenIdToPoolId))if(n===e)return t;throw new Error(`poolId ${e} not valid`)}getLtvByPoolId(e){const t=this.getTokenIdByPoolId(e);return this.ltvs[t]}getDecimalMultByPoolId(e){const t=this.getTokenIdByPoolId(e);return this.decimalMults[t]}getMintByPoolId(e){const t=this.getTokenIdByPoolId(e);return this.mints[t]}getPoolConfigList(){return Object.values(this.poolConfigs)}getPoolConfigByPoolId(e){const t=this.getTokenIdByPoolId(e);return this.poolConfigs[t]}},Fd=(A.SystemProgram.programId,new DA(.9),new DA(1),new DA(1.01),{APT:new A.PublicKey("APTtJyaRX5yGTsJU522N4VYWg3vCvSb65eam5GrPT5Rt"),BTC:new A.PublicKey("9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E"),ETH:new A.PublicKey("2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk"),SOL:new A.PublicKey("So11111111111111111111111111111111111111112"),mSOL:new A.PublicKey("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),stSOL:new A.PublicKey("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),whETH:new A.PublicKey("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),scnSOL:new A.PublicKey("5oVNBeEEQvYi1cX3ir8Dx5n1P7pdxydbGF2X4TxVusJm"),RAY:new A.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),ORCA:new A.PublicKey("orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE"),SBR:new A.PublicKey("Saber2gLauYim4Mvftnrasomsv6NvAuncvMEZwcLpD1"),MERC:new A.PublicKey("MERt85fc5boKw3BW1eYdxonEuJNvXbiMbs6hvheau5K"),MNDE:new A.PublicKey("MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey"),FTT:new A.PublicKey("AGFEad2et2ZJif9jaGpdMixQqvW5i81aBdvKe7PHNfz3"),SRM:new A.PublicKey("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),wLDO:new A.PublicKey("HZRCwxP2Vq9PCpPXooayhJ2bxTpo5xfpQrwB1svh332p"),SOCN:new A.PublicKey("11111111111111111111111111111111"),wLUNA:new A.PublicKey("F6v4wfAdJB8D8p77bMXZgYt8TDKsYxLYxH5AFhUkYx9W"),USDT:new A.PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),USDC:new A.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),UST:new A.PublicKey("CXLBjMMcwkc17GfJtBos6rQCo1ypeH6eDbB82Kby4MRm"),USTv2:new A.PublicKey("9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i"),USDT_USDC_SABER:new A.PublicKey("2poo1w1DL6yd2WNTCnNTzDqkC6MBXq7axo77P16yrBuf"),mSOL_SOL_SABER:new A.PublicKey("SoLEao8wTzSfqhuou8rcYsVoLjthVmiXuEjzdNPMnCz"),stSOL_SOL_SABER:new A.PublicKey("stSjCmjQ96BiGhTk8gkU22j1739R8YBQVMq7KXWTqUV"),USDC_USDT_ORCA:new A.PublicKey("H2uzgruPvonVpCRhwwdukcpXK8TG17swFNzYFr2rtPxy"),UST_USDC_SABER:new A.PublicKey("UST32f2JtPGocLzsL41B3VBBoJzTm1mK1j3rwyM3Wgc"),SOL_USDC_RAYDIUM:new A.PublicKey("8HoQnePLqPj4M7PUDzfw8e3Ymdwgc7NLGnaTUapubyvu"),RAY_USDC_RAYDIUM:new A.PublicKey("FbC6K13MzHvN42bXrtGaWsvZY9fxrackRSZcBGfjPc7m"),SOL_USDT_RAYDIUM:new A.PublicKey("Epm4KfTj4DMrvqn6Bwg2Tr2N8vhQuNbuK8bESFp4k33K"),SOL_USDC_ORCA:new A.PublicKey("APDFRM3HMr8CAGXwKHiu2f5ePSpaiEJhaURwhsRrUUt9"),mSOL_SOL_ORCA:new A.PublicKey("29cdoMgu6MS2VXpcMo1sqRdWEzdUR9tjvoh8fcK8Z87R"),ORCA_USDC_ORCA:new A.PublicKey("n8Mpu28RjeYD7oUX3LG1tPxzhRZh3YYLRSHcHRdS3Zx"),ORCA_SOL_ORCA:new A.PublicKey("2uVjAuRXavpM6h1scGQaxqb6HVaNRn6T2X7HHXTabz25"),ETH_USDC_ORCA:new A.PublicKey("3e1W6Aqcbuk2DfHUwRiRcyzpyYRRjg6yhZZcyEARydUX"),SOL_USDT_ORCA:new A.PublicKey("FZthQCuYHhcfiDma7QrX7buDHwrZEd7vL8SjS6LQa3Tx"),mSOL_SOL_RAYDIUM:new A.PublicKey("5ijRoAHVgd5T5CNtK5KDRUBZ7Bffb69nktMj5n6ks6m4"),ETH_SOL_ORCA:new A.PublicKey("71FymgN2ZUf7VvVTLE8jYEnjP3jSK1Frp2XT1nHs8Hob"),BTC_mSOL_ORCA:new A.PublicKey("8nKJ4z9FSw6wrVZKASqBiS9DS1CiNsRnqwCCKVQjqdkB"),mSOL_USDC_ORCA:new A.PublicKey("8PSfyiTVwPb6Rr2iZ8F3kNpbg65BCfJM9v8LfB916r44"),USTv2_USDC_SABER:new A.PublicKey("USTCmQpbUGj5iTsXdnTYHZupY1QpftDZhLokSVk6UWi"),APT_USDC_ORCA:new A.PublicKey("HNrYngS1eoqkjWro9D3Y5Z9sWBDzPNK2tX4rfV2Up177"),RAY_USDT_RAYDIUM:new A.PublicKey("C3sT1R3nsw4AVdepvLTLKr5Gvszr7jufyBWUCvy4TUvT"),RAY_ETH_RAYDIUM:new A.PublicKey("mjQH33MqZv5aKAbKHi8dG3g3qXeRQqq1GFcXceZkNSr"),RAY_SOL_RAYDIUM:new A.PublicKey("89ZKE4aoyfLBe2RuV6jM3JGNhaV18Nxh8eNtjRcndBip"),SRM_USDC_RAYDIUM:new A.PublicKey("9XnZd82j34KxNLgQfz29jGbYdxsYznTWRpvZE3SRE7JG"),stSOL_USTv2_ORCA:new A.PublicKey("HTZd53fYwYQRyAjiaPsZy9Gf41gobFdqkF4oKe3XLi95"),ORCA_whETH_ORCA:new A.PublicKey("GsfyYHkSgC3Ta6aWR9MjB2sxoBrkGGeR2tAwXbpphf3")}),Rd={APT:1e6,BTC:1e6,ETH:1e6,SOL:1e9,mSOL:1e9,stSOL:1e9,whETH:1e8,scnSOL:1e9,RAY:1e6,ORCA:1e6,SBR:1e6,MERC:1e6,MNDE:1e9,FTT:1e6,SRM:1e6,wLDO:1e8,SOCN:1e9,wLUNA:1e6,USDT:1e6,USDC:1e6,UST:1e9,USTv2:1e6,USDT_USDC_SABER:1e6,mSOL_SOL_SABER:1e9,stSOL_SOL_SABER:1e9,USDC_USDT_ORCA:1e6,UST_USDC_SABER:1e9,SOL_USDC_RAYDIUM:1e9,RAY_USDC_RAYDIUM:1e6,SOL_USDT_RAYDIUM:1e9,SOL_USDC_ORCA:1e6,mSOL_SOL_ORCA:1e6,ORCA_USDC_ORCA:1e6,ORCA_SOL_ORCA:1e6,ETH_USDC_ORCA:1e6,SOL_USDT_ORCA:1e6,mSOL_SOL_RAYDIUM:1e9,ETH_SOL_ORCA:1e6,BTC_mSOL_ORCA:1e6,mSOL_USDC_ORCA:1e6,USTv2_USDC_SABER:1e6,APT_USDC_ORCA:1e6,RAY_USDT_RAYDIUM:1e6,RAY_ETH_RAYDIUM:1e6,RAY_SOL_RAYDIUM:1e6,SRM_USDC_RAYDIUM:1e6,stSOL_USTv2_ORCA:1e6,ORCA_whETH_ORCA:1e6},Gd={BTC:0,ETH:1,USDT:2,USDC:3,SOL:4,USDT_USDC_SABER:5,UST:6,USDC_USDT_ORCA:8,SOL_USDC_RAYDIUM:9,RAY_USDC_RAYDIUM:10,RAY:11,mSOL:12,ORCA:13,SOL_USDT_RAYDIUM:14,SOL_USDC_ORCA:15,mSOL_SOL_ORCA:16,ORCA_USDC_ORCA:17,ORCA_SOL_ORCA:18,ETH_USDC_ORCA:19,SOL_USDT_ORCA:20,USTv2:21,mSOL_SOL_RAYDIUM:22,ETH_SOL_ORCA:23,BTC_mSOL_ORCA:24,mSOL_USDC_ORCA:25,USTv2_USDC_SABER:26,APT:27,APT_USDC_ORCA:28,FTT:29,SRM:30,RAY_USDT_RAYDIUM:31,RAY_ETH_RAYDIUM:32,RAY_SOL_RAYDIUM:33,SRM_USDC_RAYDIUM:34,stSOL:35,whETH:36,scnSOL:37,stSOL_USTv2_ORCA:38,ORCA_whETH_ORCA:39,mSOL_SOL_SABER:40,stSOL_SOL_SABER:41},xd={APT:0,BTC:.85,ETH:.85,mSOL:.8,SOL:.8,stSOL:.8,whETH:.85,scnSOL:.8,RAY:.8,ORCA:.8,FTT:.8,SRM:.8,USDT:.9,USDC:.9,UST:.01,USTv2:.01,USDT_USDC_SABER:.8,mSOL_SOL_SABER:.8,stSOL_SOL_SABER:.8,USDC_USDT_ORCA:.8,SOL_USDC_RAYDIUM:.8,RAY_USDC_RAYDIUM:.8,SOL_USDT_RAYDIUM:.8,SOL_USDC_ORCA:.8,mSOL_SOL_ORCA:.8,ORCA_USDC_ORCA:.8,ORCA_SOL_ORCA:.8,ETH_USDC_ORCA:.8,SOL_USDT_ORCA:.8,mSOL_SOL_RAYDIUM:.8,ETH_SOL_ORCA:.8,BTC_mSOL_ORCA:.8,mSOL_USDC_ORCA:.8,USTv2_USDC_SABER:.8,APT_USDC_ORCA:.4,RAY_USDT_RAYDIUM:.8,RAY_ETH_RAYDIUM:.8,RAY_SOL_RAYDIUM:.8,SRM_USDC_RAYDIUM:.8,stSOL_USTv2_ORCA:.8,ORCA_whETH_ORCA:.8},Ud=class{constructor(e,t,n,i){this.baseRate=e,this.kink=t,this.kinkRate=n,this.fullRate=i,W(e>=0),W(t>0),W(t<1),W(n>0),W(i>n),this.multiplier=(n-e)/t,this.jumpMultiplier=(i-n)/(1-t)}},_d={BTC:new Ud(.02,.85,.2,2),ETH:new Ud(.02,.85,.2,2),SOL:new Ud(.02,.85,.2,2),mSOL:new Ud(.02,.85,.2,2),stSOL:new Ud(.02,.85,.2,2),whETH:new Ud(.02,.85,.2,2),scnSOL:new Ud(.02,.85,.2,2),APT:new Ud(.02,.85,.2,2),RAY:new Ud(.02,.85,.2,2),ORCA:new Ud(.02,.85,.2,2),SBR:new Ud(.02,.85,.2,2),FTT:new Ud(.02,.85,.2,2),SRM:new Ud(.02,.85,.2,2),USDT:new Ud(.01,.85,.08,1),USDC:new Ud(.01,.85,.08,1),UST:new Ud(.01,.85,.2,30),USTv2:new Ud(.01,.9,.2,30)},Ld={BTC:.2,ETH:.2,mSOL:.2,SOL:.2,stSOL:.2,whETH:.2,scnSOL:.2,APT:.2,RAY:.2,ORCA:.2,FTT:.2,SRM:.2,USDT:.2,USDC:.2,UST:.2,USTv2:.2,USDT_USDC_SABER:0,mSOL_SOL_SABER:0,stSOL_SOL_SABER:0,USDC_USDT_ORCA:.2,SOL_USDC_RAYDIUM:.2,RAY_USDC_RAYDIUM:.2,SOL_USDT_RAYDIUM:.2,SOL_USDC_ORCA:.2,mSOL_SOL_ORCA:.2,ORCA_USDC_ORCA:.2,ORCA_SOL_ORCA:.2,ETH_USDC_ORCA:.2,SOL_USDT_ORCA:.2,mSOL_SOL_RAYDIUM:0,ETH_SOL_ORCA:.2,BTC_mSOL_ORCA:.2,mSOL_USDC_ORCA:.2,USTv2_USDC_SABER:.2,APT_USDC_ORCA:.2,RAY_USDT_RAYDIUM:.2,RAY_ETH_RAYDIUM:.2,RAY_SOL_RAYDIUM:.2,SRM_USDC_RAYDIUM:.2,stSOL_USTv2_ORCA:.2,ORCA_whETH_ORCA:.2},Kd={BTC:"volatile",ETH:"volatile",SOL:"volatile",mSOL:"volatile",stSOL:"volatile",whETH:"volatile",scnSOL:"volatile",APT:"volatile",RAY:"volatile",ORCA:"volatile",SBR:"volatile",MERC:"volatile",MNDE:"volatile",FTT:"volatile",SRM:"volatile",wLDO:"volatile",SOCN:"volatile",wLUNA:"volatile",USDT:"stable",USDC:"stable",UST:"stable",USTv2:"stable",USDT_USDC_SABER:"lp",mSOL_SOL_SABER:"lp",stSOL_SOL_SABER:"lp",USDC_USDT_ORCA:"lp",UST_USDC_SABER:"lp",SOL_USDC_RAYDIUM:"lp",RAY_USDC_RAYDIUM:"lp",SOL_USDT_RAYDIUM:"lp",SOL_USDC_ORCA:"lp",mSOL_SOL_ORCA:"lp",ORCA_USDC_ORCA:"lp",ORCA_SOL_ORCA:"lp",ETH_USDC_ORCA:"lp",SOL_USDT_ORCA:"lp",mSOL_SOL_RAYDIUM:"lp",ETH_SOL_ORCA:"lp",BTC_mSOL_ORCA:"lp",mSOL_USDC_ORCA:"lp",USTv2_USDC_SABER:"lp",APT_USDC_ORCA:"lp",RAY_USDT_RAYDIUM:"lp",RAY_ETH_RAYDIUM:"lp",RAY_SOL_RAYDIUM:"lp",SRM_USDC_RAYDIUM:"lp",stSOL_USTv2_ORCA:"lp",ORCA_whETH_ORCA:"lp"},Yd={BTC:.04,ETH:.04,SOL:.04,mSOL:.04,stSOL:.04,whETH:.04,scnSOL:.04,RAY:.04,APT:0,ORCA:.04,FTT:.04,SRM:.04,USDT:.04,USDC:.04,UST:.04,USTv2:.04,USDT_USDC_SABER:0,mSOL_SOL_SABER:0,stSOL_SOL_SABER:0,USDC_USDT_ORCA:0,UST_USDC_SABER:0,SOL_USDC_RAYDIUM:0,RAY_USDC_RAYDIUM:0,SOL_USDT_RAYDIUM:0,SOL_USDC_ORCA:0,mSOL_SOL_ORCA:0,ORCA_USDC_ORCA:0,ORCA_SOL_ORCA:0,ETH_USDC_ORCA:0,SOL_USDT_ORCA:0,mSOL_SOL_RAYDIUM:0,ETH_SOL_ORCA:0,BTC_mSOL_ORCA:0,mSOL_USDC_ORCA:0,USTv2_USDC_SABER:0,APT_USDC_ORCA:0,RAY_USDT_RAYDIUM:0,RAY_ETH_RAYDIUM:0,RAY_SOL_RAYDIUM:0,SRM_USDC_RAYDIUM:0,stSOL_USTv2_ORCA:0,ORCA_whETH_ORCA:0},jd={USDT_USDC_SABER:["USDT","USDC"],mSOL_SOL_SABER:["mSOL","SOL"],stSOL_SOL_SABER:["stSOL","SOL"],USDC_USDT_ORCA:["USDC","USDT"],UST_USDC_SABER:["UST","USDC"],SOL_USDC_RAYDIUM:["SOL","USDC"],RAY_USDC_RAYDIUM:["RAY","USDC"],SOL_USDT_RAYDIUM:["SOL","USDT"],SOL_USDC_ORCA:["SOL","USDC"],mSOL_SOL_ORCA:["mSOL","SOL"],ORCA_USDC_ORCA:["ORCA","USDC"],ORCA_SOL_ORCA:["ORCA","SOL"],ETH_USDC_ORCA:["ETH","USDC"],SOL_USDT_ORCA:["SOL","USDT"],mSOL_SOL_RAYDIUM:["mSOL","SOL"],ETH_SOL_ORCA:["ETH","SOL"],BTC_mSOL_ORCA:["BTC","mSOL"],mSOL_USDC_ORCA:["mSOL","USDC"],USTv2_USDC_SABER:["USTv2","USDC"],APT_USDC_ORCA:["APT","USDC"],RAY_USDT_RAYDIUM:["RAY","USDT"],RAY_ETH_RAYDIUM:["RAY","ETH"],RAY_SOL_RAYDIUM:["RAY","SOL"],SRM_USDC_RAYDIUM:["SRM","USDC"],stSOL_USTv2_ORCA:["stSOL","USTv2"],ORCA_whETH_ORCA:["ORCA","whETH"]},Wd={USDT_USDC_SABER:3,mSOL_SOL_SABER:3,stSOL_SOL_SABER:3,USDC_USDT_ORCA:5,UST_USDC_SABER:3,SOL_USDC_RAYDIUM:2,RAY_USDC_RAYDIUM:2,SOL_USDT_RAYDIUM:2,SOL_USDC_ORCA:5,mSOL_SOL_ORCA:5,ORCA_USDC_ORCA:5,ORCA_SOL_ORCA:5,ETH_USDC_ORCA:5,SOL_USDT_ORCA:5,mSOL_SOL_RAYDIUM:2,ETH_SOL_ORCA:5,BTC_mSOL_ORCA:5,mSOL_USDC_ORCA:5,USTv2_USDC_SABER:3,APT_USDC_ORCA:5,RAY_USDT_RAYDIUM:2,RAY_ETH_RAYDIUM:2,RAY_SOL_RAYDIUM:2,SRM_USDC_RAYDIUM:2,stSOL_USTv2_ORCA:5,ORCA_whETH_ORCA:5},Jd={USDT_USDC_SABER:2,mSOL_SOL_SABER:2,stSOL_SOL_SABER:2,USDC_USDT_ORCA:4,UST_USDC_SABER:2,SOL_USDC_RAYDIUM:1,RAY_USDC_RAYDIUM:1,SOL_USDT_RAYDIUM:1,SOL_USDC_ORCA:4,mSOL_SOL_ORCA:4,ORCA_USDC_ORCA:4,ORCA_SOL_ORCA:4,ETH_USDC_ORCA:4,SOL_USDT_ORCA:4,mSOL_SOL_RAYDIUM:1,ETH_SOL_ORCA:4,BTC_mSOL_ORCA:4,mSOL_USDC_ORCA:4,USTv2_USDC_SABER:2,APT_USDC_ORCA:4,RAY_USDT_RAYDIUM:1,RAY_ETH_RAYDIUM:1,RAY_SOL_RAYDIUM:1,SRM_USDC_RAYDIUM:1,stSOL_USTv2_ORCA:4,ORCA_whETH_ORCA:4},qd={USDT_USDC_SABER:!1,mSOL_SOL_SABER:!1,stSOL_SOL_SABER:!1,USDC_USDT_ORCA:!1,UST_USDC_SABER:!1,SOL_USDC_RAYDIUM:!0,RAY_USDC_RAYDIUM:!0,SOL_USDT_RAYDIUM:!0,SOL_USDC_ORCA:!1,mSOL_SOL_ORCA:!0,ORCA_USDC_ORCA:!1,ORCA_SOL_ORCA:!1,ETH_USDC_ORCA:!1,SOL_USDT_ORCA:!1,mSOL_SOL_RAYDIUM:!1,ETH_SOL_ORCA:!1,BTC_mSOL_ORCA:!0,mSOL_USDC_ORCA:!0,USTv2_USDC_SABER:!1,APT_USDC_ORCA:!1,RAY_USDT_RAYDIUM:!0,RAY_ETH_RAYDIUM:!0,RAY_SOL_RAYDIUM:!0,SRM_USDC_RAYDIUM:!0,stSOL_USTv2_ORCA:!1,ORCA_whETH_ORCA:!1},Zd={3:{stake_program:new A.PublicKey("QMNeHCGYnLVDn1icRAfQZpjPLBNkfGbSKRB83G5d8KB"),deposit_program:new A.PublicKey("SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ"),redeem_program:new A.PublicKey("RDM23yr8pr1kEAmhnFpaabPny6C9UVcEcok3Py5v86X")},5:{depositProgramPubkey:new A.PublicKey("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"),farmProgramPubkey:new A.PublicKey("82yxjeMsvaURa4MbZZ7WZZHfobirZYkH1zF8fmeGtyaQ")},2:{depositProgramPubkey:new A.PublicKey("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),stakeProgramPubkey:new A.PublicKey("EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q"),stakeProgramV5Pubkey:new A.PublicKey("9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z")}},zd=e=>{const t="7Ne6h2w3LpTNTa7CNYcUs7UkjeJT3oW7jcrXWfVScTXW"===e.toString(),n="GipxmFXdiJaSevu6StymY2aphKVxgYmAmf2dT3fTEASc"===e.toString();if(!n&&!t)throw new Error(`Unknown ownerKey: ${e.toString()}`);return{isPublic:t,isAlpha:n}},Hd=(new DA(.195),new DA(.04),new DA(.52),new DA(.0044),class{constructor(e){this.swap=e.swap,this.swapAuthority=e.swapAuthority,this.tokenAVault=e.tokenAVault,this.tokenBVault=e.tokenBVault,this.tokenAfees=e.tokenAfees,this.tokenBfees=e.tokenBfees,this.quarry=e.quarry,this.rewarder=e.rewarder,this.mint=e.mint}async getMinerKey(e){const[t,n]=await A.PublicKey.findProgramAddress([Md.from("Miner"),this.quarry.toBuffer(),e.toBuffer()],Zd[3].stake_program);return[t,n]}async getMinerVault(e){const[t]=await this.getMinerKey(e);return await B.Token.getAssociatedTokenAddress(B.ASSOCIATED_TOKEN_PROGRAM_ID,B.TOKEN_PROGRAM_ID,this.mint,t,!0)}async getLpDepositKeys(e){return[{pubkey:Zd[3].deposit_program,isSigner:!1,isWritable:!1},{pubkey:this.swap,isSigner:!1,isWritable:!1},{pubkey:this.swapAuthority,isSigner:!1,isWritable:!1},{pubkey:this.tokenAVault,isSigner:!1,isWritable:!0},{pubkey:this.tokenBVault,isSigner:!1,isWritable:!0},{pubkey:this.mint,isSigner:!1,isWritable:!0},{pubkey:A.SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1}]}async getLpWithdrawKeys(){return[{pubkey:Zd[3].deposit_program,isSigner:!1,isWritable:!1},{pubkey:this.swap,isSigner:!1,isWritable:!1},{pubkey:this.swapAuthority,isSigner:!1,isWritable:!1},{pubkey:this.mint,isSigner:!1,isWritable:!0},{pubkey:this.tokenAVault,isSigner:!1,isWritable:!0},{pubkey:this.tokenBVault,isSigner:!1,isWritable:!0},{pubkey:this.tokenAfees,isSigner:!1,isWritable:!0},{pubkey:this.tokenBfees,isSigner:!1,isWritable:!0},{pubkey:A.SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1}]}async getLpStakeKeys(e){const t=Zd[3],[n,i]=await this.getMinerKey(e),r=await this.getMinerVault(e);return[{pubkey:t.stake_program,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:this.quarry,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:B.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:this.rewarder,isSigner:!1,isWritable:!1},{pubkey:A.SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1}]}getLRVaults(){return this.mint.toString()===Fd.USDT_USDC_SABER.toString()?[this.tokenBVault,this.tokenAVault]:[this.tokenAVault,this.tokenBVault]}}),Vd=class{constructor(e){this.isDoubleDipSupported=!1,this.lpMintPubkey=e.lpMintPubkey,this.swapPubkey=e.swapPubkey,this.swapAuthority=e.swapAuthority,this.swapTokenAAccount=e.swapTokenAAccount,this.swapTokenBAccount=e.swapTokenBAccount,this.globalLpVault=e.globalLpVault,this.farmTokenMint=e.farmTokenMint,this.globalFarmState=e.globalFarmState,this.globalRewardTokenVault=e.globalRewardTokenVault,this.rewardTokenAuthority=e.rewardTokenAuthority,this.feeAccount=e.feeAccount,this.publicRewardTokAcc=e.publicRewardTokAcc,this.alphaRewardTokAcc=e.alphaRewardTokAcc,this.isDoubleDipSupported=!!e.isDoubleDipSupported,this.globalLp3Vault=e.globalLp3Vault,this.farmTokenLp3Mint=e.farmTokenLp3Mint,this.globalDoubleDipFarmState=e.globalDoubleDipFarmState,this.globalDoubleDipRewardTokenVault=e.globalDoubleDipRewardTokenVault,this.doubleDipRewardTokenAuthority=e.doubleDipRewardTokenAuthority,this.publicDoubleDipRewardAcc=e.publicDoubleDipRewardAcc,this.alphaDoubleDipRewardAcc=e.alphaDoubleDipRewardAcc,this.doubleDipRewardMint=e.doubleDipRewardMint,this.isDoubleDipSupported&&W(this.globalLp3Vault&&this.farmTokenLp3Mint&&this.globalDoubleDipFarmState&&this.globalDoubleDipRewardTokenVault&&this.doubleDipRewardTokenAuthority&&this.publicDoubleDipRewardAcc&&this.alphaDoubleDipRewardAcc&&this.doubleDipRewardMint)}async getPdaKeys(e){const t=Zd[5];let n;const{isPublic:i}=zd(e);return n=i?this.publicRewardTokAcc:this.alphaRewardTokAcc,{pdaFarmTokenAccount:await Ah(e,this.farmTokenMint,!0),pdaRewardTokenAccount:n,pdaFarmState:(await A.PublicKey.findProgramAddress([this.globalFarmState.toBuffer(),e.toBuffer(),B.TOKEN_PROGRAM_ID.toBuffer()],t.farmProgramPubkey))[0]}}async getPdaDoubleDipKeys(e){if(!this.isDoubleDipSupported)throw new Error("Double dip not supported for getting pda keys");const t=Zd[5];let n;const{isPublic:i}=zd(e);return n=i?this.publicDoubleDipRewardAcc:this.alphaDoubleDipRewardAcc,{pdaDoubleDipFarmTokenAccount:await Ah(e,this.farmTokenLp3Mint,!0),pdaDoubleDipRewardTokenAccount:n,pdaDoubleDipFarmState:(await A.PublicKey.findProgramAddress([this.globalDoubleDipFarmState.toBuffer(),e.toBuffer(),B.TOKEN_PROGRAM_ID.toBuffer()],t.farmProgramPubkey))[0]}}async getLpDepositKeys(e){return[{pubkey:Zd[5].depositProgramPubkey,isSigner:!1,isWritable:!1},{pubkey:this.swapPubkey,isSigner:!1,isWritable:!1},{pubkey:this.swapAuthority,isSigner:!1,isWritable:!1},{pubkey:this.swapTokenAAccount,isSigner:!1,isWritable:!0},{pubkey:this.swapTokenBAccount,isSigner:!1,isWritable:!0},{pubkey:this.lpMintPubkey,isSigner:!1,isWritable:!0}]}async getLpWithdrawKeys(e){return[{pubkey:Zd[5].depositProgramPubkey,isSigner:!1,isWritable:!1},{pubkey:this.swapPubkey,isSigner:!1,isWritable:!1},{pubkey:this.swapAuthority,isSigner:!1,isWritable:!1},{pubkey:this.lpMintPubkey,isSigner:!1,isWritable:!0},{pubkey:this.swapTokenAAccount,isSigner:!1,isWritable:!0},{pubkey:this.swapTokenBAccount,isSigner:!1,isWritable:!0},{pubkey:this.feeAccount,isSigner:!1,isWritable:!0}]}async getLpStakeKeys(e){return this.isDoubleDipSupported?[]:await this.getFirstStakeKeys(e)}async getFirstStakeKeys(e){const t=Zd[5],n=await this.getPdaKeys(e);return[{pubkey:t.farmProgramPubkey,isSigner:!1,isWritable:!1},{pubkey:this.globalLpVault,isSigner:!1,isWritable:!0},{pubkey:this.farmTokenMint,isSigner:!1,isWritable:!0},{pubkey:n.pdaFarmTokenAccount,isSigner:!1,isWritable:!0},{pubkey:this.globalFarmState,isSigner:!1,isWritable:!0},{pubkey:n.pdaFarmState,isSigner:!1,isWritable:!0},{pubkey:this.globalRewardTokenVault,isSigner:!1,isWritable:!0},{pubkey:n.pdaRewardTokenAccount,isSigner:!1,isWritable:!0},{pubkey:this.rewardTokenAuthority,isSigner:!1,isWritable:!1},{pubkey:B.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}]}async getSecondStakeKeys(e){const t=Zd[5],n=await this.getPdaDoubleDipKeys(e);return[{pubkey:t.farmProgramPubkey,isSigner:!1,isWritable:!1},{pubkey:this.globalLp3Vault,isSigner:!1,isWritable:!0},{pubkey:this.farmTokenLp3Mint,isSigner:!1,isWritable:!0},{pubkey:n.pdaDoubleDipFarmTokenAccount,isSigner:!1,isWritable:!0},{pubkey:this.globalDoubleDipFarmState,isSigner:!1,isWritable:!0},{pubkey:n.pdaDoubleDipFarmState,isSigner:!1,isWritable:!0},{pubkey:this.globalDoubleDipRewardTokenVault,isSigner:!1,isWritable:!0},{pubkey:n.pdaDoubleDipRewardTokenAccount,isSigner:!1,isWritable:!0},{pubkey:this.doubleDipRewardTokenAuthority,isSigner:!1,isWritable:!1},{pubkey:B.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}]}getLRVaults(){return[this.swapTokenAAccount,this.swapTokenBAccount]}},Xd=class{constructor(e){this.lpMintPubkey=e.lpMintPubkey,this.ammIdPubkey=e.ammIdPubkey,this.ammAuthPubkey=e.ammAuthPubkey,this.ammOpenOrdersPubkey=e.ammOpenOrdersPubkey,this.ammTargetOrderPubkey=e.ammTargetOrderPubkey,this.poolCoinTokenPubkey=e.poolCoinTokenPubkey,this.poolPcTokenPubkey=e.poolPcTokenPubkey,this.poolWithdrawQueue=e.poolWithdrawQueue,this.poolTempLpTokenAccount=e.poolTempLpTokenAccount,this.serumProgramId=e.serumProgramId,this.serumMarketPubkey=e.serumMarketPubkey,this.serumCoinVaultAccount=e.serumCoinVaultAccount,this.serumPcVaultAccount=e.serumPcVaultAccount,this.serumVaultSigner=e.serumVaultSigner,this.rewardAccounts=e.rewardAccounts,this.stakeKeys=e.stakeKeys,this.stakeProgram=e.stakeProgram||Zd[2].stakeProgramV5Pubkey,this.serumEventQueueAccount=e.serumEventQueueAccount,this.serumBidsAccount=e.serumBidsAccount,this.serumAsksAccount=e.serumAsksAccount}async getLpDepositKeys(e){return[{pubkey:Zd[2].depositProgramPubkey,isSigner:!1,isWritable:!1},{pubkey:this.ammIdPubkey,isSigner:!1,isWritable:!0},{pubkey:this.ammAuthPubkey,isSigner:!1,isWritable:!1},{pubkey:this.ammOpenOrdersPubkey,isSigner:!1,isWritable:!1},{pubkey:this.ammTargetOrderPubkey,isSigner:!1,isWritable:!0},{pubkey:this.lpMintPubkey,isSigner:!1,isWritable:!0},{pubkey:this.poolCoinTokenPubkey,isSigner:!1,isWritable:!0},{pubkey:this.poolPcTokenPubkey,isSigner:!1,isWritable:!0},{pubkey:this.serumMarketPubkey,isSigner:!1,isWritable:!1}]}async getLpWithdrawKeys(e){return[{pubkey:Zd[2].depositProgramPubkey,isSigner:!1,isWritable:!1},{pubkey:this.ammIdPubkey,isSigner:!1,isWritable:!0},{pubkey:this.ammAuthPubkey,isSigner:!1,isWritable:!1},{pubkey:this.ammOpenOrdersPubkey,isSigner:!1,isWritable:!0},{pubkey:this.ammTargetOrderPubkey,isSigner:!1,isWritable:!0},{pubkey:this.lpMintPubkey,isSigner:!1,isWritable:!0},{pubkey:this.poolCoinTokenPubkey,isSigner:!1,isWritable:!0},{pubkey:this.poolPcTokenPubkey,isSigner:!1,isWritable:!0},{pubkey:this.poolWithdrawQueue,isSigner:!1,isWritable:!0},{pubkey:this.poolTempLpTokenAccount,isSigner:!1,isWritable:!0},{pubkey:this.serumProgramId,isSigner:!1,isWritable:!1},{pubkey:this.serumMarketPubkey,isSigner:!1,isWritable:!0},{pubkey:this.serumCoinVaultAccount,isSigner:!1,isWritable:!0},{pubkey:this.serumPcVaultAccount,isSigner:!1,isWritable:!0},{pubkey:this.serumVaultSigner,isSigner:!1,isWritable:!1},...this.serumEventQueueAccount?[{pubkey:this.serumEventQueueAccount,isSigner:!1,isWritable:!0},{pubkey:this.serumBidsAccount,isSigner:!1,isWritable:!0},{pubkey:this.serumAsksAccount,isSigner:!1,isWritable:!0}]:[]]}async getLpStakeKeys(e){if(this.stakeKeys){W(this.rewardAccounts);const t=this.stakeKeys,n=await this.getAssociatedLedger(e);Dd.log(`user ledger: ${n.toBase58()}`);const{isPublic:i}=zd(e),r=i?this.rewardAccounts[0].userRewardPublicAccountPubkey:this.rewardAccounts[0].userRewardAlphaAccountPubkey,o=[{pubkey:this.stakeProgram,isSigner:!1,isWritable:!1},{pubkey:t.poolIdPubkey,isSigner:!1,isWritable:!0},{pubkey:t.poolAuthorityPubkey,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:t.poolLPVault,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:this.rewardAccounts[0].rewardVault,isSigner:!1,isWritable:!0},{pubkey:A.SYSVAR_CLOCK_PUBKEY,isSigner:!1,isWritable:!1},{pubkey:B.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}];if(this.rewardAccounts.length>1)for(let e=1;e(e[n.rewardToken]=t?n.userRewardPublicAccountPubkey:n.userRewardAlphaAccountPubkey,e)),{})}getLRVaults(){return[this.poolCoinTokenPubkey,this.poolPcTokenPubkey]}async getAssociatedLedger(e){const t=this.stakeKeys?.poolIdPubkey;W(t);const[n]=await A.PublicKey.findProgramAddress([t.toBuffer(),e.toBuffer(),Md.from("staker_info_v2_associated_seed","utf-8")],this.stakeProgram);return n}},$d={USDT_USDC_SABER:new Hd({swap:new A.PublicKey("YAkoNb6HKmSxQN9L8hiBE5tPJRsniSSMzND1boHmZxe"),swapAuthority:new A.PublicKey("5C1k9yV7y4CjMnKv8eGYDgWND8P89Pdfj79Trk2qmfGo"),tokenAVault:new A.PublicKey("CfWX7o2TswwbxusJ4hCaPobu2jLCb1hfXuXJQjVq3jQF"),tokenBVault:new A.PublicKey("EnTrdMMpdhugeH6Ban6gYZWXughWxKtVGfCwFn78ZmY3"),tokenAfees:new A.PublicKey("XZuQG7CQrAA6y6tHM9CLrDjDUWwuUU2SBoV7pLaGDQT"),tokenBfees:new A.PublicKey("63aJYYuZddSnCGyE8FNrCVQWnXhjh6CQSRwcDeSMhdVC"),quarry:new A.PublicKey("Hs1X5YtXwZACueUtS9azZyXFDWVxAMLvm3tttubpK7ph"),rewarder:new A.PublicKey("rXhAofQCT7NN9TUqigyEAUzV1uLL4boeD8CRkNBSkYk"),mint:new A.PublicKey(Fd.USDT_USDC_SABER)}),mSOL_SOL_SABER:new Hd({swap:new A.PublicKey("Lee1XZJfJ9Hm2K1qTyeCz1LXNc1YBZaKZszvNY4KCDw"),swapAuthority:new A.PublicKey("2Sj4MZvmLhud4uRmGHJvDxq612nmF4JJsU1R4ZjNNGMS"),tokenAVault:new A.PublicKey("9DgFSWkPDGijNKcLGbr3p5xoJbHsPgXUTr6QvGBJ5vGN"),tokenBVault:new A.PublicKey("2hNHZg7XBhuhHVZ3JDEi4buq2fPQwuWBdQ9xkH7t1GQX"),tokenAfees:new A.PublicKey("HzZRDMiJSqS5oxzfu17c35DChnkx58LZtas16Pgmuunn"),tokenBfees:new A.PublicKey("3oebZVvPqba2egfdcbNXa1uS13SfSebxMaNVE82FMk7R"),quarry:new A.PublicKey("7193EeecxsPPv9TMoQATTN8i1eTqEUSNU8aDLuFCQy68"),rewarder:new A.PublicKey("rXhAofQCT7NN9TUqigyEAUzV1uLL4boeD8CRkNBSkYk"),mint:new A.PublicKey(Fd.mSOL_SOL_SABER)}),stSOL_SOL_SABER:new Hd({swap:new A.PublicKey("Lid8SLUxQ9RmF7XMqUA8c24RitTwzja8VSKngJxRcUa"),swapAuthority:new A.PublicKey("8eyi347MTDeH5F6eVv2qjPxVnU685FFZLDGcj5QWHZ6y"),tokenAVault:new A.PublicKey("4PgzyzLtds9bKZ2to9PMnKqJzKEUpjvNUaeN23phegax"),tokenBVault:new A.PublicKey("AtymwxoVN9peZo7EXTcDz9jKVc4vRmisJKKrNfe3ewBa"),tokenAfees:new A.PublicKey("2AbLYRQa7PV6gG6XgMjaey18RtPh85sXFmMmP4HsDdQK"),tokenBfees:new A.PublicKey("Cv3YNq8iY1ttMS3iDgwBxd7QxnMC2pwcXUomtR7CTD8W"),quarry:new A.PublicKey("2isVhcqVVpsAeZ94d1DGVErCQ7uZQNSJ85xikN8awHeC"),rewarder:new A.PublicKey("rXhAofQCT7NN9TUqigyEAUzV1uLL4boeD8CRkNBSkYk"),mint:new A.PublicKey(Fd.stSOL_SOL_SABER)}),USTv2_USDC_SABER:new Hd({swap:new A.PublicKey("KwnjUuZhTMTSGAaavkLEmSyfobY16JNH4poL9oeeEvE"),swapAuthority:new A.PublicKey("9osV5a7FXEjuMujxZJGBRXVAyQ5fJfBFNkyAf6fSz9kw"),tokenAVault:new A.PublicKey("J63v6qEZmQpDqCD8bd4PXu2Pq5ZbyXrFcSa3Xt1HdAPQ"),tokenBVault:new A.PublicKey("BnKQtTdLw9qPCDgZkWX3sURkBAoKCUYL1yahh6Mw7mRK"),tokenAfees:new A.PublicKey("BYgyVxdrGa3XNj1cx1XHAVyRG8qYhBnv1DS59Bsvmg5h"),tokenBfees:new A.PublicKey("G9nt2GazsDj3Ey3KdA49Sfaq9K95Dc72Ejps4NKTP2SR"),quarry:new A.PublicKey("BYEUtsLjYAVHRiRR3Avjqnd2RQLRL8n933N52p9kSX2y"),rewarder:new A.PublicKey("rXhAofQCT7NN9TUqigyEAUzV1uLL4boeD8CRkNBSkYk"),mint:new A.PublicKey(Fd.USTv2_USDC_SABER)})},eh={USDC_USDT_ORCA:new Vd({lpMintPubkey:new A.PublicKey(Fd.USDC_USDT_ORCA),swapPubkey:new A.PublicKey("F13xvvx45jVGd84ynK3c8T89UejQVxjCLtmHfPmAXAHP"),swapAuthority:new A.PublicKey("3cGHDS8uWhdxQj14vTmFtYHX3NMouPpE4o9MjQ43Bbf4"),swapTokenAAccount:new A.PublicKey("6uUn2okWk5v4x9Gc4n2LLGHtWoa9tmizHq1363dW7t9W"),swapTokenBAccount:new A.PublicKey("AiwmnLy7xPT28dqZpkRm6i1ZGwELUCzCsuN92v4JkSeU"),globalLpVault:new A.PublicKey("9hPRfmQmZYiL4ZtuvGBk5SjMzmFCQ2h9a4GKoM82BR84"),farmTokenMint:new A.PublicKey("GjpXgKwn4VW4J2pZdS3dovM58hiXWLJtopTfqG83zY2f"),globalFarmState:new A.PublicKey("5psKJrxWnPmoAbCxk3An2CGh7wHAX2cWddf5vZuYbbVw"),globalRewardTokenVault:new A.PublicKey("AYbtHmuJxXpo91m988UdyTtzC6J72WvMAW7XkXqFhAbz"),rewardTokenAuthority:new A.PublicKey("5YGvg6mfuvJtHdVWDXTs4sYy6GwQAUduK8qurDcL111S"),feeAccount:new A.PublicKey("B4RNxMJGRzKFQyTq2Uwkmpyjtew13n7KtdqZy6qgENTu"),publicRewardTokAcc:new A.PublicKey("FSQWYCVXiGXRfKd1NmchusEa9wADez9eQGt5RY5eDjiy"),alphaRewardTokAcc:new A.PublicKey("GUFm5nznu9B8Anfg3pZDxSofs8pUMjQZdVYnhbdvnkeV")}),SOL_USDC_ORCA:new Vd({lpMintPubkey:new A.PublicKey(Fd.SOL_USDC_ORCA),swapPubkey:new A.PublicKey("EGZ7tiLeH62TPV1gL8WwbXGzEPa9zmcpVnnkPKKnrE2U"),swapAuthority:new A.PublicKey("JU8kmKzDHF9sXWsnoznaFDFezLsE5uomX2JkRMbmsQP"),swapTokenAAccount:new A.PublicKey("ANP74VNsHwSrq9uUSjiSNyNWvf6ZPrKTmE4gHoNd13Lg"),swapTokenBAccount:new A.PublicKey("75HgnSvXbWKZBpZHveX68ZzAhDqMzNDS29X6BGLtxMo1"),globalLpVault:new A.PublicKey("7ipefo5V3QEJWeuT2PohFSEUaranZxMSeWQo2rcNigr3"),farmTokenMint:new A.PublicKey("FFdjrSvNALfdgxANNpt3x85WpeVMdQSH5SEP2poM8fcK"),globalFarmState:new A.PublicKey("85HrPbJtrN82aeB74WTwoFxcNgmf5aDNP2ENngbDpd5G"),globalRewardTokenVault:new A.PublicKey("kjjFC8RAF7GuBQ9iYgyTcPmvsRafJ2Ec2AmoS6DjakJ"),rewardTokenAuthority:new A.PublicKey("MDcWkwPqr5HrA91g4GGax7bVP1NDDetnR12nGhoAdYj"),feeAccount:new A.PublicKey("8JnSiuvQq3BVuCU3n4DrSTw9chBSPvEMswrhtifVkr1o"),publicRewardTokAcc:new A.PublicKey("Hr5yQGW35HBP8fJLKfranRbbKzfSPHrhKFf1ZP68LmVp"),alphaRewardTokAcc:new A.PublicKey("85hb3QUq7M8W3dMxCdxQ9vnezV7fRPBUGbq24XTEaLcg")}),mSOL_SOL_ORCA:new Vd({lpMintPubkey:new A.PublicKey(Fd.mSOL_SOL_ORCA),swapPubkey:new A.PublicKey("9EQMEzJdE2LDAY1hw1RytpufdwAXzatYfQ3M2UuT9b88"),swapAuthority:new A.PublicKey("6cwehd4xhKkJ2s7iGh4CaDb7KhMgqczSBnyNJieUYbHn"),swapTokenAAccount:new A.PublicKey("6xmki5RtGNHrfhTiHFfp9k3RQ9t8qgL1cYP2YCG2h179"),swapTokenBAccount:new A.PublicKey("Ew2coQtVGLeca31vqB2ssHntjzZgUy1ad9VuuAX8yw7p"),globalLpVault:new A.PublicKey("DuTZUmTRydVc3EN78brdYFUfskn6s93zH4WhY3Fo53AJ"),farmTokenMint:new A.PublicKey("3RTGL7gPF4V1ns1AeGFApT7cBEGVDfmJ77DqQi9AC6uG"),globalFarmState:new A.PublicKey("JADWjBW1Xs8WhW8kj3GTCRQn3LR4gwvbFTEMwv9ZNxQh"),globalRewardTokenVault:new A.PublicKey("7dpUACKvEiuq5kyoGtgiA131hYwdxfFhEeD5TMT4mnzG"),rewardTokenAuthority:new A.PublicKey("CtXKDXJ4wzgto48QQFANestEgtov5dJRrs9qpRw7BV1h"),feeAccount:new A.PublicKey("6j2tt2UVYMQwqG3hRtyydW3odzBFwy3pN33tyB3xCKQ6"),publicRewardTokAcc:new A.PublicKey("CA59mFikUhJYLesKAxx8j8unHrxTfXSEPjzoXFyrG9M1"),alphaRewardTokAcc:new A.PublicKey("3XNau9dqDSjAARS3cvTjzUv2nRU2FEzaGJd31f6NApUU"),isDoubleDipSupported:qd.mSOL_SOL_ORCA,globalLp3Vault:new A.PublicKey("AEZpFdJ5hA7MwVS7AReBbS9pMhoYRhLXgDyc1GWbSoXc"),farmTokenLp3Mint:new A.PublicKey("576ABEdvLG1iFU3bLC8AMJ3mo5LhfgPPhMtTeVAGG6u7"),globalDoubleDipFarmState:new A.PublicKey("2SciNw7cEsKJc1PMRDzWCcEzvuScmEaUgmrJXCi9UFxY"),globalDoubleDipRewardTokenVault:new A.PublicKey("DCHpFt1bCk9mTudj6VsKbADvUPT3tAJvJ2rcBZQry8Wz"),doubleDipRewardTokenAuthority:new A.PublicKey("5uk8F4MaFSu1pF9Q7k8xcyWgqyo9q2dqr3Kb4Esvd1n3"),publicDoubleDipRewardAcc:new A.PublicKey("5U5uowAVYyggB6DvVZE12cLZE7EjxkdKGt8VpvbsNbAy"),alphaDoubleDipRewardAcc:new A.PublicKey("GfSzQknESVecnF5z9G1gpEtcaxZkcT742uUdbhJoU5Ap"),doubleDipRewardMint:new A.PublicKey("MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey")}),ORCA_USDC_ORCA:new Vd({lpMintPubkey:new A.PublicKey(Fd.ORCA_USDC_ORCA),swapPubkey:new A.PublicKey("2p7nYbtPBgtmY69NsE8DAW6szpRJn7tQvDnqvoEWQvjY"),swapAuthority:new A.PublicKey("3fr1AhdiAmWLeNrS24CMoAu9pPgbzVhwLtJ6QUPmw2ob"),swapTokenAAccount:new A.PublicKey("9vYWHBPz817wJdQpE8u3h8UoY3sZ16ZXdCcvLB7jY4Dj"),swapTokenBAccount:new A.PublicKey("6UczejMUv1tzdvUzKpULKHxrK9sqLm8edR1v9jinVWm9"),globalLpVault:new A.PublicKey("45BAAQCZYd2kP3Z3WvRwdtfUhvuW4FvpqVK4m8qrR5x1"),farmTokenMint:new A.PublicKey("Gc7W5U66iuHQcC1cQyeX9hxkPF2QUVJPTf1NWbW8fNrt"),globalFarmState:new A.PublicKey("9S1BsxbDNQXQccjFamVEGgxiYQHTeudvhEYwFr4oWeaf"),globalRewardTokenVault:new A.PublicKey("DEiqe2Ta9TRMRtWdBqiFV13dhVrqCeG8MMmVwywvXvJo"),rewardTokenAuthority:new A.PublicKey("66xaEjFoYfRcspc18oDj61mXDyznr9zam6tFNeqvs2jK"),feeAccount:new A.PublicKey("7CXZED4jfRp3qdHB9Py3up6v1C4UhHofFvfT6RXbJLRN"),publicRewardTokAcc:new A.PublicKey("G8cPgn6tiQQAQcTQupEi8fTBfo1RpqTii1hW65L4poTY"),alphaRewardTokAcc:new A.PublicKey("8fFHftEm6PJBahCQukV6J27b7xzDeVPFdedjV1f4T36x")}),ORCA_SOL_ORCA:new Vd({lpMintPubkey:new A.PublicKey(Fd.ORCA_SOL_ORCA),swapPubkey:new A.PublicKey("2ZnVuidTHpi5WWKUwFXauYGhvdT9jRKYv5MDahtbwtYr"),swapAuthority:new A.PublicKey("2PH1quJj9MHQXATCmNZ6qQ2gZqM8R236DpKaz99ggVpm"),swapTokenAAccount:new A.PublicKey("AioST8HKQJRqjE1mknk4Rydc8wVADhdQwRJmAAYX1T6Z"),swapTokenBAccount:new A.PublicKey("73zdy95DynZP4exdpuXTDsexcrWbDJX9TFi2E6CDzXh4"),globalLpVault:new A.PublicKey("7N7zxoDMMV1sCDiVEzinTyQxS2GoN388QprMCQX38BeT"),farmTokenMint:new A.PublicKey("B5waaKnsmtqFawPspUwcuy1cRjAC7u2LrHSwxPSxK4sZ"),globalFarmState:new A.PublicKey("F6pi7SyXWx56fP96mYQ4Yfh4yZ7oGNtDjwSYHT5Mz7Ld"),globalRewardTokenVault:new A.PublicKey("CSbYA7Cd65Vis2oqX797zmnWmpgENmqrPdmPbTbRPykd"),rewardTokenAuthority:new A.PublicKey("98RAHBKRTTC87nNwug1GEAnLVgouk9nRaa3u14jrp6Zz"),feeAccount:new A.PublicKey("4Zc4kQZhRQeGztihvcGSWezJE1k44kKEgPCAkdeBfras"),publicRewardTokAcc:new A.PublicKey("2G7ZWG9z6WtKJ5k5B32RTmLFB7hLVEnC5RmYD7gvCpG3"),alphaRewardTokAcc:new A.PublicKey("8htfap3Gej5t4araQRHioggu2acsG3tQAc38PMtBhBhD")}),ETH_USDC_ORCA:new Vd({lpMintPubkey:new A.PublicKey(Fd.ETH_USDC_ORCA),swapPubkey:new A.PublicKey("FgZut2qVQEyPBibaTJbbX2PxaMZvT1vjDebiVaDp5BWP"),swapAuthority:new A.PublicKey("4dfCZR32xXhoTgMRhnViNaTFwiKP9A34TDjHCR3xM5rg"),swapTokenAAccount:new A.PublicKey("H9h5yTBfCHcb4eRP87fXczzXgNaMzKihr7bf1sjw7iuZ"),swapTokenBAccount:new A.PublicKey("JA98RXv2VdxQD8pRQq4dzJ1Bp4nH8nokCGmxvPWKJ3hx"),globalLpVault:new A.PublicKey("6zoYTvgLd4UAhKSPwirEU9VNNNkpezwq8AM4jXW1Qop9"),farmTokenMint:new A.PublicKey("HDP2AYFmvLz6sWpoSuNS62JjvW4HjMKp7doXucqpWN56"),globalFarmState:new A.PublicKey("FpezTR76RRjgpBb9HhR6ap8BgQfkHyNMQSqJDcoXpjAb"),globalRewardTokenVault:new A.PublicKey("9MWJmWVAGQ9C9SxwWKidStAA8HjDHpnZ7KfKgVJdrNtj"),rewardTokenAuthority:new A.PublicKey("DFTLJrgsn7cLNX9hbqiUwM8C1y6f7AfyvEmbsFSkjQNR"),feeAccount:new A.PublicKey("DLWewB12jzGn4wXJmFCddWDeof1Ma4cZYNRv9CP5hTvX"),publicRewardTokAcc:new A.PublicKey("CtVJtQHSAcSQ3b4FD3A3Zk8vb2PaC4wn1oTnHtUMS8rf"),alphaRewardTokAcc:new A.PublicKey("BSpFLmCAzJp5XMSfVXC2rq4LjJ2NSs2jqFS8agcENAkH")}),SOL_USDT_ORCA:new Vd({lpMintPubkey:new A.PublicKey(Fd.SOL_USDT_ORCA),swapPubkey:new A.PublicKey("Dqk7mHQBx2ZWExmyrR2S8X6UG75CrbbpK2FSBZsNYsw6"),swapAuthority:new A.PublicKey("2sxKY7hxVFrY5oNE2DgaPAJFamMzsmFLM2DgVcjK5yTy"),swapTokenAAccount:new A.PublicKey("DTb8NKsfhEJGY1TrA7RXN6MBiTrjnkdMAfjPEjtmTT3M"),swapTokenBAccount:new A.PublicKey("E8erPjPEorykpPjFV9yUYMYigEWKQUxuGfL2rJKLJ3KU"),globalLpVault:new A.PublicKey("EXxH5tKDHLy68nWXS8w1BRUsiDEHMbKACLUmFWv8Q9tu"),farmTokenMint:new A.PublicKey("71vZ7Jvu8fTyFzpX399dmoSovoz24rVbipLrRn2wBNzW"),globalFarmState:new A.PublicKey("4RRRJkscV2DmwJUxTQgRdYock75GfwYJn7LTxy9rGTmY"),globalRewardTokenVault:new A.PublicKey("H3ozvCeEwnsqnM2naCnXVxLLwH2XPC5kU8BH97XDpDwS"),rewardTokenAuthority:new A.PublicKey("EavNUagNtD7DEdV4atcm3dEBXafARKCNJyNkyfz426m6"),feeAccount:new A.PublicKey("BBKgw75FivTYXj85D2AWyVdaTdTWuSuHVXRm1Xu7fipb"),publicRewardTokAcc:new A.PublicKey("9AfsnfPwRrJLjcCAasUcaYeVunpmxgev6yCVa6HiLkp7"),alphaRewardTokAcc:new A.PublicKey("93xUo4bmSXdGxCNSDvk2xYH7YAY6KqDZ4mPMbwBuiyfm")}),ETH_SOL_ORCA:new Vd({lpMintPubkey:new A.PublicKey(Fd.ETH_SOL_ORCA),swapPubkey:new A.PublicKey("EuK3xDa4rWuHeMQCBsHf1ETZNiEQb5C476oE9u9kp8Ji"),swapAuthority:new A.PublicKey("DffrDbzPiswDJaiicBBo9CjqztKgFLrqXGwNJH4XQefZ"),swapTokenAAccount:new A.PublicKey("7F2cLdio3i6CCJaypj9VfNDPW2DwT3vkDmZJDEfmxu6A"),swapTokenBAccount:new A.PublicKey("5pUTGvN2AA2BEzBDU4CNDh3LHER15WS6J8oJf5XeZFD8"),globalLpVault:new A.PublicKey("6ckhPnn6tCr88aq9SxhWaAA5G7izuXNKhVk1Xa62zhFD"),farmTokenMint:new A.PublicKey("CGFTRh4jKLPbS9r4hZtbDfaRuC7qcA8rZpbLnVTzJBer"),globalFarmState:new A.PublicKey("3ARgavt1NhqLmJWj3wAJy6XBarG6pJbEKRv1wzzRbbaN"),globalRewardTokenVault:new A.PublicKey("FYTTVMqWPzbnhTsukgiWmPiNJam4yLTxHM9mpzdan2zo"),rewardTokenAuthority:new A.PublicKey("HXY2Vvj2XyqiPNXV3PhM9YYKgfjqzXUX4tUFRnvqihdY"),feeAccount:new A.PublicKey("unxKgWEc71ZiHwMqZs3VLqjcjmZhfTZEg94ZLGvjdMP"),publicRewardTokAcc:new A.PublicKey("2NYnAKhCwCMoe5unHuaEQEYL1ugLypK8Hrx4Qp5ugSUf"),alphaRewardTokAcc:new A.PublicKey("6uupGx988A2yiPEhZEayNSewkp45owfbQVrJcbcKoiC6")}),BTC_mSOL_ORCA:new Vd({lpMintPubkey:new A.PublicKey(Fd.BTC_mSOL_ORCA),swapPubkey:new A.PublicKey("8DRw5wQE1pyg6RB1UwypGNFgb2Pzp2hpyDDNwo76Lcc8"),swapAuthority:new A.PublicKey("3X1aLdyvcQNc8TvBMPiucMsRCnGMBnGsjJHpZEyCf3pn"),swapTokenAAccount:new A.PublicKey("6D3sxC6yEe84FUnF5Kpbgx6gN57N9poJCKAtrCeCWdJo"),swapTokenBAccount:new A.PublicKey("EPoVJLhi9QtVPVo8n31M5k5Knvb48j8zbYyRrUbrHwC5"),globalLpVault:new A.PublicKey("75gpvckCXk49zTUwG8QrzUSP4NpWh3JXdyELBrnAhimL"),farmTokenMint:new A.PublicKey("DzpLz78wuwyFsQToin8iDv6YK6aBEymRqQq82swiFh7r"),globalFarmState:new A.PublicKey("GBrpFtiTabs14mc4Hi1RX9YiQY7res6JxrVfMTADfcQV"),globalRewardTokenVault:new A.PublicKey("CNe5S831UP4YkumU7UsusTkf7uxJnAVdmPe6jhF51k4y"),rewardTokenAuthority:new A.PublicKey("8sVCTztvytajkdczYEZVkSmuoRLjnMezwpT46L5w4RWR"),feeAccount:new A.PublicKey("AqiLHbUAy4UWWKGVVgbHsaUVCMg1zemNkgsYBPSirT92"),publicRewardTokAcc:new A.PublicKey("7Sfy525w1dpCQqXb2sEKuacV57333VCSCKGuubsxXvCc"),alphaRewardTokAcc:new A.PublicKey("Bag2RfLUzSXYbnsnVAFeYYzfG6M4EGseUJsmJnC64Vrn"),isDoubleDipSupported:qd.BTC_mSOL_ORCA,globalLp3Vault:new A.PublicKey("DuyHVLzsqg6SZeFNbpUWfJf67kvAXPWUdUGJYWJK5vTu"),farmTokenLp3Mint:new A.PublicKey("6uA1ADUJbvwYJZpzUn9z9LuyKoRVngBKcQTKdXsSivA8"),globalDoubleDipFarmState:new A.PublicKey("Cn7QNyosNQ8DyKEeMDPmtg66R7vKMXigcQ561kTkFD8E"),globalDoubleDipRewardTokenVault:new A.PublicKey("Ea3FYh9RMJxwsyu3xS7BesLMtpX32DURohiEigG2iJCx"),doubleDipRewardTokenAuthority:new A.PublicKey("9Lg5wBjcYDgY8S2ZAEqjtXAQ4UdHuw65aP1WmmWss4QX"),doubleDipRewardMint:new A.PublicKey("MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey"),alphaDoubleDipRewardAcc:new A.PublicKey("J5cxhkPf25Ff4NT7WfWhLQzp58dksfhBT1vqprxBY7D3"),publicDoubleDipRewardAcc:new A.PublicKey("AoeNmMDdDBS7xyvXjtG79pCa8Duf4qFALs4KY49okdx2")}),mSOL_USDC_ORCA:new Vd({lpMintPubkey:new A.PublicKey(Fd.mSOL_USDC_ORCA),swapPubkey:new A.PublicKey("Hme4Jnqhdz2jAPUMnS7jGE5zv6Y1ynqrUEhmUAWkXmzn"),swapAuthority:new A.PublicKey("9Z7E42k46kxnBjAh8YGXDw3rRGwwxQUBYM7Ccrmwg6ZP"),swapTokenAAccount:new A.PublicKey("GBa7G5f1FqAXEgByuHXsqsEdpyMjRgT9SNxZwmmnEJAY"),swapTokenBAccount:new A.PublicKey("7hFgNawzzmpDM8TTVCKm8jykBrym8C3TQdb8TDAfAVkD"),globalLpVault:new A.PublicKey("8F6NCo1PiakW7m3eeEZvdxsjXF5bkLD3QZsTxaNg9jvv"),farmTokenMint:new A.PublicKey("5r3vDsNTGXXb9cGQfqyNuYD2bjhRPymGJBfDmKosR9Ev"),globalFarmState:new A.PublicKey("EvtMzreDMq1U8ytV5fEmfoWNfPhrjZ87za835GuRvZCc"),globalRewardTokenVault:new A.PublicKey("A1enLcj9XmuVeYCQScEruwnfAz7ksQhbuGFUgvgeS1a6"),rewardTokenAuthority:new A.PublicKey("9czgZkSxLFtxmvWSb1PEHmUyBuNpAUxj9XAcHKikYnzt"),feeAccount:new A.PublicKey("3W3Skj2vQsNEMhGRQprFXQy3Q8ZbM6ojdgiDCokVPWno"),publicRewardTokAcc:new A.PublicKey("B16JMAgpR84Dr6rucq4GYLZV7pdk1uPF533P9KVwNUq4"),alphaRewardTokAcc:new A.PublicKey("C7L8DS3ytgueAkcFojeshc2SEtePDPDXjv6gajyinGyL"),isDoubleDipSupported:qd.mSOL_USDC_ORCA,globalLp3Vault:new A.PublicKey("CdbgqE5B9oADrSAWc51Mgw6c3B6nvYJ4c431rftpoVqZ"),farmTokenLp3Mint:new A.PublicKey("9y3QYM5mcaB8tU7oXRzAQnzHVa75P8riDuPievLp64cY"),globalDoubleDipFarmState:new A.PublicKey("5fhDMuGKRDPWVWXf7BBEwifRFrp6XwXctDQoG7UHGVt6"),globalDoubleDipRewardTokenVault:new A.PublicKey("XbkV9HZpLdv3CjMUfoq4t8nkxR6UguHb4oP8aAKBGV2"),doubleDipRewardTokenAuthority:new A.PublicKey("FvXa954NiCqE2jAthxV5oVcuuPAJCggwYtAihYDRhVUw"),doubleDipRewardMint:new A.PublicKey("MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey"),alphaDoubleDipRewardAcc:new A.PublicKey("H6pK9gb58SxvyCRZzgCj4kuX758sjYAcqPJpY1aBJzLv"),publicDoubleDipRewardAcc:new A.PublicKey("3QaNhP4vT6PG3eoQwg2DRbH9ecmy7pR2f1PBPWCwDBYd")}),APT_USDC_ORCA:new Vd({lpMintPubkey:new A.PublicKey(Fd.APT_USDC_ORCA),swapPubkey:new A.PublicKey("Fg3UabVqnfycMtkiTVoaia9eNafehtT9Y4TicH2iBtvK"),swapAuthority:new A.PublicKey("JDEYn1JsacdxoB4v4mbctFSVrSUPttacX3gxWphFHJKZ"),swapTokenAAccount:new A.PublicKey("636crNdZTf46gFUKuedaBCZDBMLahf7KGud2LyTMskU5"),swapTokenBAccount:new A.PublicKey("DGEYFkEHyiuHWtHeCGiQGn1JbkGHqYrNwaP44miRbgxu"),globalLpVault:new A.PublicKey("Ha7NSMkfjQt2pWF8JY5p89T38NpKdm5da4FR3sYednin"),farmTokenMint:new A.PublicKey("Dx7DYSuaBufhXyQG7155ePkLmHyn6w7WeKKtQB9zscZV"),globalFarmState:new A.PublicKey("3YZ5GYL625vWibn7d8hMdrMBawy9HGUyeTe4AoXoME1Q"),globalRewardTokenVault:new A.PublicKey("HyCJbQkccvMwC5FHAYBMjQCKXEjDo9fbhBa5pj8sc2v5"),rewardTokenAuthority:new A.PublicKey("53y344S5Cv32ViwajrHxnsgcmam7Mw2nydcRgJEkqdGd"),feeAccount:new A.PublicKey("41H5mWwsZKewJeV4wWiNjQ3U4VYBnwqCpzvAWt86baHd"),publicRewardTokAcc:new A.PublicKey("EgFva9mEFCV31AkhoZb6rN6zvbNGE1xdaRYAkKTtdNjN"),alphaRewardTokAcc:new A.PublicKey("Cd5ijQFj1V7V5VwuoSkG6pEaPyeX2D9ZmqS7pE1RVdFX")}),stSOL_USTv2_ORCA:new Vd({lpMintPubkey:new A.PublicKey(Fd.stSOL_USTv2_ORCA),swapPubkey:new A.PublicKey("9F3J6RY7PTkDb3SUUpg725uXyCceBGCpZrtmYGJwgMwF"),swapAuthority:new A.PublicKey("wJydc21tAMxYDif8uvy5rWNGWDFNZnPPmqCvegyZRod"),swapTokenAAccount:new A.PublicKey("GFso9SAGakm8ZFa3rmuonuerbcQ8ZbACNZN7idkKR5nw"),swapTokenBAccount:new A.PublicKey("EZ7pJskN2a4pDknrdkLzGDHpzjbfgdBj3Tt594K9HZbL"),globalLpVault:new A.PublicKey("EQBy5YqWkLxr1xx1CZh2dDdX57XR9Ata4jNJebtuR61h"),farmTokenMint:new A.PublicKey("3Q44iV4URXdbS4Tk1PGs5VdWQoCxHB7zdcdMnemo8jfH"),globalFarmState:new A.PublicKey("GxhewC22S6wsXT156yC9SARvDnijoc3YEYyLVcQFDUCx"),globalRewardTokenVault:new A.PublicKey("FFjuVr4FYdRGkPwaQREVQWHsBFGwQ1LH6VkmVSJL5Vva"),rewardTokenAuthority:new A.PublicKey("8za7LwVuYbP2PivS3KbeohpUkSmRqLdTDxhrVzsHyFZf"),feeAccount:new A.PublicKey("5rCbmppxMBHwBjCkLUP6fireQ12cL8LRa26QRUimoxN6"),publicRewardTokAcc:new A.PublicKey("6P4frmXufUBsT2s39zbQ5k5UDrzSpFcNKmZAgWZLHgMv"),alphaRewardTokAcc:new A.PublicKey("DpBG9h4UWMfwRKXUzN1zo3jEkJLGE5RVz5Zt6Qr4Xt7c")}),ORCA_whETH_ORCA:new Vd({lpMintPubkey:new A.PublicKey(Fd.ORCA_whETH_ORCA),swapPubkey:new A.PublicKey("D67u6UEuFp9Q4Fu2gnu5thxBoVj2eRgDDDirdWsMVsgm"),swapAuthority:new A.PublicKey("4kwchkCnCaZPkBdnk85j9bJ9F1P883rwjbvsXGV7H5rM"),swapTokenAAccount:new A.PublicKey("EMxDw1NjdddQjPk9gCUN4iDMy8HJ5siKYMVjGbjuUCrh"),swapTokenBAccount:new A.PublicKey("DQyhcuEvE1K9DSd51agcNLg4CDrgthnKMVhU7q6R55LV"),globalLpVault:new A.PublicKey("CYSwKVGEaPazRXUcCo2Ve9wyovK44E9ftLNSsvVqRuf1"),farmTokenMint:new A.PublicKey("A7EAHvFEWzW8qSTFNLrEHN894GAZWZesNiebttEwtUGJ"),globalFarmState:new A.PublicKey("AgWH92f8cPAuURyqehF6A9wFgupEsnDX3VP5eHyytabA"),globalRewardTokenVault:new A.PublicKey("DoaerVHonB3FYpzKtqADug9UtrPLzgY1gbzZm6cRuymi"),rewardTokenAuthority:new A.PublicKey("B1pahxFpN3GX4TKsw7fEDLw5MuuzmHNUbVcPZ6bp7KBM"),feeAccount:new A.PublicKey("GdHXLai5M8FKedXUsECSzrV72nb1RTCCooFyTWT8WYmT"),publicRewardTokAcc:new A.PublicKey("9jJVuB2UhzcGED6h476kieHwTVPmhY7EJsQyud38Q4r1"),alphaRewardTokAcc:new A.PublicKey("HqTUasro97QUByk1LEbXGJCh672Bu1b5gnj31tLbbJfi")})},th={SOL_USDC_RAYDIUM:new Xd({lpMintPubkey:new A.PublicKey(Fd.SOL_USDC_RAYDIUM),ammIdPubkey:new A.PublicKey("58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2"),ammAuthPubkey:new A.PublicKey("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"),ammOpenOrdersPubkey:new A.PublicKey("HRk9CMrpq7Jn9sh7mzxE8CChHG8dneX9p475QKz4Fsfc"),ammTargetOrderPubkey:new A.PublicKey("CZza3Ej4Mc58MnxWA385itCC9jCo3L1D7zc3LKy1bZMR"),poolCoinTokenPubkey:new A.PublicKey("DQyrAcCrDXQ7NeoqGgDCZwBvWDcYmFCjSb9JtteuvPpz"),poolPcTokenPubkey:new A.PublicKey("HLmqeL62xR1QoZ1HKKbXRrdN1p3phKpxRMb2VVopvBBz"),poolWithdrawQueue:new A.PublicKey("G7xeGGLevkRwB5f44QNgQtrPKBdMfkT6ZZwpS9xcC97n"),poolTempLpTokenAccount:new A.PublicKey("Awpt6N7ZYPBa4vG4BQNFhFxDj4sxExAA9rpBAoBw2uok"),serumProgramId:new A.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),serumMarketPubkey:new A.PublicKey("9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusDBzvT"),serumCoinVaultAccount:new A.PublicKey("36c6YqAwyGKQG66XEp2dJc5JqjaBNv7sVghEtJv4c7u6"),serumPcVaultAccount:new A.PublicKey("8CFo8bL8mZQK8abbFyypFMwEDd8tVJjHTTojMLgQTUSZ"),serumVaultSigner:new A.PublicKey("F8Vyqk3unwxkXukZFQeYyGmFfTG3CAX4v24iyrjEYBJV"),serumEventQueueAccount:new A.PublicKey("5KKsLVU6TcbVDK4BS6K1DGDxnh4Q9xjYJ8XaDCG5t8ht"),serumBidsAccount:new A.PublicKey("14ivtgssEBoBjuZJtSAPKYgpUK7DmnSwuPMqJoVTSgKJ"),serumAsksAccount:new A.PublicKey("CEQdAFKdycHugujQg9k2wbmxjcpdYZyVLfV9WerTnafJ"),rewardAccounts:[{rewardToken:"RAY",userRewardAlphaAccountPubkey:new A.PublicKey("3ycsskwZL584nSTikjMR9DhVKRHFpYUbbx4m93kn6Djx"),userRewardPublicAccountPubkey:new A.PublicKey("44tSF4Sisrsy7YXmtSYnFLzQnZeVvwgd5PTMzRvAqtq4"),rewardVault:new A.PublicKey("38YS2N7VUb856QDsXHS1h8zv5556YgEy9zKbbL2mefjf")},{rewardToken:"SRM",userRewardAlphaAccountPubkey:new A.PublicKey("21rySZr2pQCaoGjdJy6gPx31vi5igVsKFAMRtqhgPgVX"),userRewardPublicAccountPubkey:new A.PublicKey("BzqrcDc7wpciqtsSj7MsDajDdjHuS7XBdqaprSm8GaiB"),rewardVault:new A.PublicKey("ANDJUfDryy3jY6DngwGRXVyxCJBT5JfojLDXwZYSpnEL")}],stakeKeys:{poolIdPubkey:new A.PublicKey("GUzaohfNuFbBqQTnPgPSNciv3aUvriXYjQduRE3ZkqFw"),poolAuthorityPubkey:new A.PublicKey("DgbCWnbXg43nmeiAveMCkUUPEpAr3rZo3iop3TyP6S63"),poolLPVault:new A.PublicKey("J6ECnRDZEXcxuruvErXDWsPZn9czowKynUr9eDSQ4QeN")}}),RAY_USDC_RAYDIUM:new Xd({lpMintPubkey:new A.PublicKey(Fd.RAY_USDC_RAYDIUM),ammIdPubkey:new A.PublicKey("6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg"),ammAuthPubkey:new A.PublicKey("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"),ammOpenOrdersPubkey:new A.PublicKey("J8u8nTHYtvudyqwLrXZboziN95LpaHFHpd97Jm5vtbkW"),ammTargetOrderPubkey:new A.PublicKey("3cji8XW5uhtsA757vELVFAeJpskyHwbnTSceMFY5GjVT"),poolCoinTokenPubkey:new A.PublicKey("FdmKUE4UMiJYFK5ogCngHzShuVKrFXBamPWcewDr31th"),poolPcTokenPubkey:new A.PublicKey("Eqrhxd7bDUCH3MepKmdVkgwazXRzY6iHhEoBpY7yAohk"),poolWithdrawQueue:new A.PublicKey("ERiPLHrxvjsoMuaWDWSTLdCMzRkQSo8SkLBLYEmSokyr"),poolTempLpTokenAccount:new A.PublicKey("D1V5GMf3N26owUFcbz2qR5N4G81qPKQvS2Vc4SM73XGB"),serumProgramId:new A.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),serumMarketPubkey:new A.PublicKey("2xiv8A5xrJ7RnGdxXB42uFEkYHJjszEhaJyKKt4WaLep"),serumCoinVaultAccount:new A.PublicKey("GGcdamvNDYFhAXr93DWyJ8QmwawUHLCyRqWL3KngtLRa"),serumPcVaultAccount:new A.PublicKey("22jHt5WmosAykp3LPGSAKgY45p7VGh4DFWSwp21SWBVe"),serumVaultSigner:new A.PublicKey("FmhXe9uG6zun49p222xt3nG1rBAkWvzVz7dxERQ6ouGw"),serumEventQueueAccount:new A.PublicKey("H9dZt8kvz1Fe5FyRisb77KcYTaN8LEbuVAfJSnAaEABz"),serumBidsAccount:new A.PublicKey("Hf84mYadE1VqSvVWAvCWc9wqLXak4RwXiPb4A91EAUn5"),serumAsksAccount:new A.PublicKey("DC1HsWWRCXVg3wk2NndS5LTbce3axwUwUZH1RgnV4oDN"),rewardAccounts:[{rewardToken:"RAY",userRewardAlphaAccountPubkey:new A.PublicKey("496NG3Ym9UAmDoYe1YdJMnEhAGJhfrY4Wz2Poc85VcMZ"),userRewardPublicAccountPubkey:new A.PublicKey("49i8NSa6z2DcWxBnnsZjyxKvLxEqXGZ833B4jUDNmxnT"),rewardVault:new A.PublicKey("DpRueBHHhrQNvrjZX7CwGitJDJ8eZc3AHcyFMG4LqCQR")}],stakeKeys:{poolIdPubkey:new A.PublicKey("CHYrUBX2RKX8iBg7gYTkccoGNBzP44LdaazMHCLcdEgS"),poolAuthorityPubkey:new A.PublicKey("5KQFnDd33J5NaMC9hQ64P5XzaaSz8Pt7NBCkZFYn1po"),poolLPVault:new A.PublicKey("BNnXLFGva3K8ACruAc1gaP49NCbLkyE6xWhGV4G2HLrs")},stakeProgram:Zd[2].stakeProgramPubkey}),SOL_USDT_RAYDIUM:new Xd({lpMintPubkey:new A.PublicKey(Fd.SOL_USDT_RAYDIUM),ammIdPubkey:new A.PublicKey("7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX"),ammAuthPubkey:new A.PublicKey("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"),ammOpenOrdersPubkey:new A.PublicKey("4NJVwEAoudfSvU5kdxKm5DsQe4AAqG6XxpZcNdQVinS4"),ammTargetOrderPubkey:new A.PublicKey("9x4knb3nuNAzxsV7YFuGLgnYqKArGemY54r2vFExM1dp"),poolCoinTokenPubkey:new A.PublicKey("876Z9waBygfzUrwwKFfnRcc7cfY4EQf6Kz1w7GRgbVYW"),poolPcTokenPubkey:new A.PublicKey("CB86HtaqpXbNWbq67L18y5x2RhqoJ6smb7xHUcyWdQAQ"),poolWithdrawQueue:new A.PublicKey("52AfgxYPTGruUA9XyE8eF46hdR6gMQiA6ShVoMMsC6jQ"),poolTempLpTokenAccount:new A.PublicKey("2JKZRQc92TaH3fgTcUZyxfD7k7V7BMqhF24eussPtkwh"),serumProgramId:new A.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),serumMarketPubkey:new A.PublicKey("HWHvQhFmJB3NUcu1aihKmrKegfVxBEHzwVX6yZCKEsi1"),serumCoinVaultAccount:new A.PublicKey("29cTsXahEoEBwbHwVc59jToybFpagbBMV6Lh45pWEmiK"),serumPcVaultAccount:new A.PublicKey("EJwyNJJPbHH4pboWQf1NxegoypuY48umbfkhyfPew4E"),serumVaultSigner:new A.PublicKey("CzZAjoEqA6sjqtaiZiPqDkmxG6UuZWxwRWCenbBMc8Xz"),serumEventQueueAccount:new A.PublicKey("GR363LDmwe25NZQMGtD2uvsiX66FzYByeQLcNFr596FK"),serumBidsAccount:new A.PublicKey("2juozaawVqhQHfYZ9HNcs66sPatFHSHeKG5LsTbrS2Dn"),serumAsksAccount:new A.PublicKey("ANXcuziKhxusxtthGxPxywY7FLRtmmCwFWDmU5eBDLdH"),rewardAccounts:[{rewardToken:"RAY",userRewardAlphaAccountPubkey:new A.PublicKey("BrDvLLjYtTPyaBN2kDxRCSDzoNPdYiozPfggcgEJt3Pd"),userRewardPublicAccountPubkey:new A.PublicKey("4aryP8pemzEuJjMteEPHFbM1SJdgoahx4AG1ZpdCvJZQ"),rewardVault:new A.PublicKey("Bgj3meVYds8ficJc9xntbjmMBPVUuyn6CvDUm1AD39yq")},{rewardToken:"SRM",userRewardAlphaAccountPubkey:new A.PublicKey("6Cp9hLDQpbmiXZopk9oJMqGj8nSUbQpGLqm9VxYmZbFB"),userRewardPublicAccountPubkey:new A.PublicKey("HBrRwtFzrL7CyngExF4N3LrKzSEf1ViFRLHJcVEwmphw"),rewardVault:new A.PublicKey("DJifNDjNt7iHbkNHs9V6Wm5pdiuddtF9w3o4WEiraKrP")}],stakeKeys:{poolIdPubkey:new A.PublicKey("5r878BSWPtoXgnqaeFJi7BCycKZ5CodBB2vS9SeiV8q"),poolAuthorityPubkey:new A.PublicKey("DimG1WK9N7NdbhddweGTDDBRaBdCmcbPtoWZJ4Fi4rn4"),poolLPVault:new A.PublicKey("jfhZy3B6sqeu95z71GukkxpkDtfHXJiFAMULM6STWxb")}}),mSOL_SOL_RAYDIUM:new Xd({lpMintPubkey:new A.PublicKey(Fd.mSOL_SOL_RAYDIUM),ammIdPubkey:new A.PublicKey("EGyhb2uLAsRUbRx9dNFBjMVYnFaASWMvD6RE1aEf2LxL"),ammAuthPubkey:new A.PublicKey("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"),ammOpenOrdersPubkey:new A.PublicKey("6c1u1cNEELKPmuH352WPNNEPdfTyVPHsei39DUPemC42"),ammTargetOrderPubkey:new A.PublicKey("CLuMpSesLPqdxewQTxfiLdifQfDfRsxkFhPgiChmdGfk"),poolCoinTokenPubkey:new A.PublicKey("85SxT7AdDQvJg6pZLoDf7vPiuXLj5UYZLVVNWD1NjnFK"),poolPcTokenPubkey:new A.PublicKey("BtGUR6y7uwJ6UGXNMcY3gCLm7dM3WaBdmgtKVgGnE1TJ"),poolWithdrawQueue:new A.PublicKey("7vvoHxA6di9EvzJKL6bmojbZnH3YaRXu2LitufrQhM21"),poolTempLpTokenAccount:new A.PublicKey("ACn8TZ27fQ85kgdPKUfkETB4dS5JPFoq53z7uCgtHDai"),serumProgramId:new A.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),serumMarketPubkey:new A.PublicKey("5cLrMai1DsLRYc1Nio9qMTicsWtvzjzZfJPXyAoF4t1Z"),serumCoinVaultAccount:new A.PublicKey("2qmHPJn3URkrboLiJkQ5tBB4bmYWdb6MyhQzZ6ms7wf9"),serumPcVaultAccount:new A.PublicKey("A6eEM36Vpyti2PoHK8h8Dqk5zu7YTaSRTQb7XXL8tcrV"),serumVaultSigner:new A.PublicKey("EHMK3DdPiPBd9aBjeRU4aZjD7z568rmwHCSAAxRooPq6"),stakeKeys:null}),RAY_USDT_RAYDIUM:new Xd({lpMintPubkey:new A.PublicKey(Fd.RAY_USDT_RAYDIUM),ammIdPubkey:new A.PublicKey("DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut"),ammAuthPubkey:new A.PublicKey("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"),ammOpenOrdersPubkey:new A.PublicKey("7UF3m8hDGZ6bNnHzaT2YHrhp7A7n9qFfBj6QEpHPv5S8"),ammTargetOrderPubkey:new A.PublicKey("3K2uLkKwVVPvZuMhcQAPLF8hw95somMeNwJS7vgWYrsJ"),poolCoinTokenPubkey:new A.PublicKey("3wqhzSB9avepM9xMteiZnbJw75zmTBDVmPFLTQAGcSMN"),poolPcTokenPubkey:new A.PublicKey("5GtSbKJEPaoumrDzNj4kGkgZtfDyUceKaHrPziazALC1"),poolWithdrawQueue:new A.PublicKey("8VuvrSWfQP8vdbuMAP9AkfgLxU9hbRR6BmTJ8Gfas9aK"),poolTempLpTokenAccount:new A.PublicKey("FBzqDD1cBgkZ1h6tiZNFpkh4sZyg6AG8K5P9DSuJoS5F"),serumProgramId:new A.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),serumMarketPubkey:new A.PublicKey("teE55QrL4a4QSfydR9dnHF97jgCfptpuigbb53Lo95g"),serumCoinVaultAccount:new A.PublicKey("2kVNVEgHicvfwiyhT2T51YiQGMPFWLMSp8qXc1hHzkpU"),serumPcVaultAccount:new A.PublicKey("5AXZV7XfR7Ctr6yjQ9m9dbgycKeUXWnWqHwBTZT6mqC7"),serumVaultSigner:new A.PublicKey("HzWpBN6ucpsA9wcfmhLAFYqEUmHjE9n2cGHwunG5avpL"),serumEventQueueAccount:new A.PublicKey("58KcficuUqPDcMittSddhT8LzsPJoH46YP4uURoMo5EB"),serumBidsAccount:new A.PublicKey("AvKStCiY8LTp3oDFrMkiHHxxhxk4sQUWnGVcetm4kRpy"),serumAsksAccount:new A.PublicKey("Hj9kckvMX96mQokfMBzNCYEYMLEBYKQ9WwSc1GxasW11"),rewardAccounts:[{rewardToken:"RAY",userRewardAlphaAccountPubkey:new A.PublicKey("Bq2M2YHcMVB9RDBjJsra4nP81qvJaAapY6fdCFoDNY61"),userRewardPublicAccountPubkey:new A.PublicKey("3YUuGZJSF5Jdy3mXBXgWh86t2msj4d2WvNGawSsDZbHC"),rewardVault:new A.PublicKey("HCHNuGzkqSnw9TbwpPv1gTnoqnqYepcojHw9DAToBrUj")}],stakeKeys:{poolIdPubkey:new A.PublicKey("AvbVWpBi2e4C9HPmZgShGdPoNydG4Yw8GJvG9HUcLgce"),poolAuthorityPubkey:new A.PublicKey("8JYVFy3pYsPSpPRsqf43KSJFnJzn83nnRLQgG88XKB8q"),poolLPVault:new A.PublicKey("4u4AnMBHXehdpP5tbD6qzB5Q4iZmvKKR5aUr2gavG7aw")},stakeProgram:Zd[2].stakeProgramPubkey}),RAY_ETH_RAYDIUM:new Xd({lpMintPubkey:new A.PublicKey(Fd.RAY_ETH_RAYDIUM),ammIdPubkey:new A.PublicKey("8iQFhWyceGREsWnLM8NkG9GC8DvZunGZyMzuyUScgkMK"),ammAuthPubkey:new A.PublicKey("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"),ammOpenOrdersPubkey:new A.PublicKey("7iztHknuo7FAXVrrpAjsHBEEjRTaNH4b3hecVApQnSwN"),ammTargetOrderPubkey:new A.PublicKey("JChSqhn6yyEWqD95t8UR5DaZZtEZ1RGGjdwgMc8S6UUt"),poolCoinTokenPubkey:new A.PublicKey("G3Szi8fUqxfZjZoNx17kQbxeMTyXt2ieRvju4f3eJt9j"),poolPcTokenPubkey:new A.PublicKey("7MgaPPNa7ySdu5XV7ik29Xoav4qcDk4wznXZ2Muq9MnT"),poolWithdrawQueue:new A.PublicKey("C9aijsE3tLbVyYaXXHi45qneDL5jfyN8befuJh8zzpou"),poolTempLpTokenAccount:new A.PublicKey("3CDnyBsNnexdvfvo6ASde5Q4e72jzMQFHRRkSQr49vEG"),serumProgramId:new A.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),serumMarketPubkey:new A.PublicKey("6jx6aoNFbmorwyncVP5V5ESKfuFc9oUYebob1iF6tgN4"),serumCoinVaultAccount:new A.PublicKey("EVVtYo4AeCbmn2dYS1UnhtfjpzCXCcN26G1HmuHwMo7w"),serumPcVaultAccount:new A.PublicKey("6ZT6KwvjLnJLpFdVfiRD9ifVUo4gv4MUie7VvPTuk69v"),serumVaultSigner:new A.PublicKey("HXbRDLcX2FyqWJY95apnsTgBoRHyp7SWYXcMYod6EBrQ"),serumEventQueueAccount:new A.PublicKey("EgcugBBSwM2FxqLQx5S6zAiU9x9qRS8qMVRMDFFU4Zty"),serumBidsAccount:new A.PublicKey("Hdvh4ZGL9MkiQApNqfZtdmd4jM6Sz8e9akCUuxxkYhb8"),serumAsksAccount:new A.PublicKey("7vWmTv9Mh8XbAxcduEqed2dLtro4N7hFroqch6mMxYKM"),rewardAccounts:[{rewardToken:"RAY",userRewardAlphaAccountPubkey:new A.PublicKey("B2LykyWkPGVcqwRgozr4WRst5x9s5pCHhT9CA4NLwtui"),userRewardPublicAccountPubkey:new A.PublicKey("5PzDUuUYWmkymdNznZmvWAj5nn89xwFbD844rMJveHY3"),rewardVault:new A.PublicKey("7YfTgYQFGEJ4kb8jCF8cBrrUwEFskLin3EbvE1crqiQh")}],stakeKeys:{poolIdPubkey:new A.PublicKey("B6fbnZZ7sbKHR18ffEDD5Nncgp54iKN1GbCgjTRdqhS1"),poolAuthorityPubkey:new A.PublicKey("6amoZ7YBbsz3uUUbkeEH4vDTNwjvgjxTiu6nGi9z1JGe"),poolLPVault:new A.PublicKey("BjAfXpHTHz2kipraNddS6WwQvGGtbvyobn7MxLEEYfrH")},stakeProgram:Zd[2].stakeProgramPubkey}),RAY_SOL_RAYDIUM:new Xd({lpMintPubkey:new A.PublicKey(Fd.RAY_SOL_RAYDIUM),ammIdPubkey:new A.PublicKey("AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA"),ammAuthPubkey:new A.PublicKey("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"),ammOpenOrdersPubkey:new A.PublicKey("6Su6Ea97dBxecd5W92KcVvv6SzCurE2BXGgFe9LNGMpE"),ammTargetOrderPubkey:new A.PublicKey("5hATcCfvhVwAjNExvrg8rRkXmYyksHhVajWLa46iRsmE"),poolCoinTokenPubkey:new A.PublicKey("Em6rHi68trYgBFyJ5261A2nhwuQWfLcirgzZZYoRcrkX"),poolPcTokenPubkey:new A.PublicKey("3mEFzHsJyu2Cpjrz6zPmTzP7uoLFj9SbbecGVzzkL1mJ"),poolWithdrawQueue:new A.PublicKey("FSHqX232PHE4ev9Dpdzrg9h2Tn1byChnX4tuoPUyjjdV"),poolTempLpTokenAccount:new A.PublicKey("87CCkBfthmyqwPuCDwFmyqKWJfjYqPFhm5btkNyoALYZ"),serumProgramId:new A.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),serumMarketPubkey:new A.PublicKey("C6tp2RVZnxBPFbnAsfTjis8BN9tycESAT4SgDQgbbrsA"),serumCoinVaultAccount:new A.PublicKey("6U6U59zmFWrPSzm9sLX7kVkaK78Kz7XJYkrhP1DjF3uF"),serumPcVaultAccount:new A.PublicKey("4YEx21yeUAZxUL9Fs7YU9Gm3u45GWoPFs8vcJiHga2eQ"),serumVaultSigner:new A.PublicKey("7SdieGqwPJo5rMmSQM9JmntSEMoimM4dQn7NkGbNFcrd"),serumEventQueueAccount:new A.PublicKey("4HGvdannxvmAhszVVig9auH6HsqVH17qoavDiNcnm9nj"),serumBidsAccount:new A.PublicKey("C1nEbACFaHMUiKAUsXVYPWZsuxunJeBkqXHPFr8QgSj9"),serumAsksAccount:new A.PublicKey("4DNBdnTw6wmrK4NmdSTTxs1kEz47yjqLGuoqsMeHvkMF"),rewardAccounts:[{rewardToken:"RAY",userRewardAlphaAccountPubkey:new A.PublicKey("B7ewVyAG7YMDemDGKQNBxyGAuoN94w4J5K8NZa72A4BM"),userRewardPublicAccountPubkey:new A.PublicKey("ChJUMQNtVNznGWaFUeNAqKD95hd1gmz9CRHobw3aMRbm"),rewardVault:new A.PublicKey("6zA5RAQYgazm4dniS8AigjGFtRi4xneqjL7ehrSqCmhr")}],stakeKeys:{poolIdPubkey:new A.PublicKey("HUDr9BDaAGqi37xbQHzxCyXvfMCKPTPNF8g9c9bPu1Fu"),poolAuthorityPubkey:new A.PublicKey("9VbmvaaPeNAke2MAL3h2Fw82VubH1tBCzwBzaWybGKiG"),poolLPVault:new A.PublicKey("A4xQv2BQPB1WxsjiCC7tcMH7zUq255uCBkevFj8qSCyJ")},stakeProgram:Zd[2].stakeProgramPubkey}),SRM_USDC_RAYDIUM:new Xd({lpMintPubkey:new A.PublicKey(Fd.SRM_USDC_RAYDIUM),ammIdPubkey:new A.PublicKey("8tzS7SkUZyHPQY7gLqsMCXZ5EDCgjESUHcB17tiR1h3Z"),ammAuthPubkey:new A.PublicKey("5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1"),ammOpenOrdersPubkey:new A.PublicKey("GJwrRrNeeQKY2eGzuXGc3KBrBftYbidCYhmA6AZj2Zur"),ammTargetOrderPubkey:new A.PublicKey("26LLpo8rscCpMxyAnJsqhqESPnzjMGiFdmXA4eF2Jrk5"),poolCoinTokenPubkey:new A.PublicKey("zuLDJ5SEe76L3bpFp2Sm9qTTe5vpJL3gdQFT5At5xXG"),poolPcTokenPubkey:new A.PublicKey("4usvfgPDwXBX2ySX11ubTvJ3pvJHbGEW2ytpDGCSv5cw"),poolWithdrawQueue:new A.PublicKey("7c1VbXTB7Xqx5eQQeUxAu5o6GHPq3P1ByhDsnRRUWYxB"),poolTempLpTokenAccount:new A.PublicKey("2sozAi6zXDUCCkpgG3usphzeCDm4e2jTFngbm5atSdC9"),serumProgramId:new A.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),serumMarketPubkey:new A.PublicKey("ByRys5tuUWDgL73G8JBAEfkdFf8JWBzPBDHsBVQ5vbQA"),serumCoinVaultAccount:new A.PublicKey("Ecfy8et9Mft9Dkavnuh4mzHMa2KWYUbBTA5oDZNoWu84"),serumPcVaultAccount:new A.PublicKey("hUgoKy5wjeFbZrXDW4ecr42T4F5Z1Tos31g68s5EHbP"),serumVaultSigner:new A.PublicKey("GVV4ZT9pccwy9d17STafFDuiSqFbXuRTdvKQ1zJX6ttX"),rewardAccounts:[{rewardToken:"RAY",userRewardAlphaAccountPubkey:new A.PublicKey("4jnfVscrBTf77bjkR2JSHQT6q7N7BWFyufG6YdZCR8re"),userRewardPublicAccountPubkey:new A.PublicKey("2qgtUtNopD3ZCrQCbVsvYd1BrPeWxn4TcrXjwvTzLCYi"),rewardVault:new A.PublicKey("9gs6XnKs3RMMSSQAZm3VCbRpoNmPMrGaQQGMmRKjPeSU")},{rewardToken:"SRM",userRewardAlphaAccountPubkey:new A.PublicKey("6E4seHTUoufVwALGE8XBYEMh5n7t4irwYXD6jtqgqzeM"),userRewardPublicAccountPubkey:new A.PublicKey("2iy54EuEMgUVFMaRzxusiMSawgcHUgR34SZWaKkMosMc"),rewardVault:new A.PublicKey("BsuQ3XCCapopam8byEzHzazyxcRn5dCT3UX9kUzozhw")}],stakeKeys:{poolIdPubkey:new A.PublicKey("27bysJaX5eu5Urb5kftR66otiVc6DKK7TnifKwnpNzYu"),poolAuthorityPubkey:new A.PublicKey("HAWwtFc4MFNSXFyQbUZd2GefSwZLntCiumt1D6XM8jfk"),poolLPVault:new A.PublicKey("HVEm5BG4jMHtwgrUtuiC9K17bjp9CjFpgqmzVABmzLxr")}})},nh={};for(const e in eh){const t=e;W(t in Nd),W(!(t in nh));const n=eh[t];W(n),nh[t]=n}for(const e in $d){const t=e;W(t in Nd),W(!(t in nh));const n=$d[t];W(n),nh[t]=n}for(const e in th){const t=e;W(t in Nd),W(!(t in nh));const n=th[t];W(n),nh[t]=n}var ih={BTC:new A.PublicKey("74YzQPGUT9VnjrBz8MuyDLKgKpbDqGot5xZJvTtMi6Ng"),ETH:new A.PublicKey("QJc2HgGhdtW4e7zjvLB1TGRuwEpTre2agU5Lap2UqYz"),SOL:new A.PublicKey("AdtRGGhmqvom3Jemp5YNrxd9q9unX36BZk1pujkkXijL"),mSOL:new A.PublicKey("CEPVH2t11KS4CaL3w4YxT9tRiijoGA4VEbnQ97cEpDmQ"),stSOL:new A.PublicKey("9r2p6vyF8Wp5YB2DASK95yuXEakQth6wmUmV2DpH91WX"),whETH:new A.PublicKey("QJc2HgGhdtW4e7zjvLB1TGRuwEpTre2agU5Lap2UqYz"),scnSOL:new A.PublicKey("DpzEKDSszosuzRUdRYzEcEbt6iZ4xhVEANQSRAYDYw8h"),APT:new A.PublicKey("CvLZbNUPLkbMuVK9YPqhvLu4UkXmrJbF98odXtPL6VRu"),RAY:new A.PublicKey("CppyF6264uKZkGua1brTUa2fSVdMFSCszwzDs76HCuzU"),ORCA:new A.PublicKey("EHwSRkm2ErRjWxCxrTxrmC7sT2kGb5jJcsiindUHAX7W"),SBR:new A.PublicKey("Lp3VNoRQi699VZe6u59TV8J38ELEUzxkaisoWsDuJgB"),FTT:new A.PublicKey("6SqRewrr5f4ycWy7NvLmNgpXJbhwXrtTc1erL9aq2gP3"),SRM:new A.PublicKey("BAoygKcKN7wk8yKzLD6sxzUQUqLvhBV1rjMA4UJqfZuH"),USDT:new A.PublicKey("5mp8kbkTYwWWCsKSte8rURjTuyinsqBpJ9xAQsewPDD"),USDC:new A.PublicKey("CZx29wKMUxaJDq6aLVQTdViPL754tTR64NAgQBUGxxHb"),UST:new A.PublicKey("8o8gN6VnW45R8pPfQzUJUwJi2adFmsWwfGcFNmicWt61"),USTv2:new A.PublicKey("8o8gN6VnW45R8pPfQzUJUwJi2adFmsWwfGcFNmicWt61")},rh={BTC:new A.PublicKey("GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU"),ETH:new A.PublicKey("JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB"),SOL:new A.PublicKey("H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG"),mSOL:new A.PublicKey("E4v1BBgoso9s64TQvmyownAVJbhbEPGyzA3qn4n46qj9"),stSOL:new A.PublicKey("Bt1hEbY62aMriY1SyQqbeZbm8VmSbQVGBFzSzMuVNWzN"),whETH:new A.PublicKey("JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB"),RAY:new A.PublicKey("AnLf8tVYCM816gmBjiy8n53eXKKEDydT5piYjjQDPgTB"),SBR:new A.PublicKey("8Td9VML1nHxQK6M8VVyzsHo32D7VBk72jSpa9U861z2A"),FTT:new A.PublicKey("8JPJJkmDScpcNmBRKGZuPuG2GYAveQgP3t5gFuMymwvF"),SRM:new A.PublicKey("3NBReDRTLKMQEKiLD5tGcx4kXbTf88b7f2xLS9UuGjym"),USDT:new A.PublicKey("3vxLXJqLqF3JG5TCbYycbKWRBbCJQLxQmBGCkyqEEefL"),USDC:new A.PublicKey("Gnt27xtC473ZT2Mw5u8wZ68Z3gULkSTb5DuxJy7eJotD"),UST:new A.PublicKey("H8DvrfSaRfUyP1Ytse1exGf7VSinLWtmKNNaBhA4as9P"),USTv2:new A.PublicKey("H8DvrfSaRfUyP1Ytse1exGf7VSinLWtmKNNaBhA4as9P")},oh=(new Od(new A.PublicKey("5dtKmAzoJu4qDxMjjK7gWY2pPe6NWAX6HWQk5QUHaKQZ"),new A.PublicKey("EFo9V7mFQgxz7xPMrJ6qLyrjfGXPgsEFEfGEtVQx2xKt"),new A.PublicKey("3cWR2VDrVhQ43VX8B43MwTazfx66naioXurUh8vrkidt"),new A.PublicKey("4DUvqxvab2BiJEYR7YHi3nM5tfyLNXFBQbJuExQPK9rf"),new A.PublicKey("Ff9WeFriS8DoJkiZPEZRpmiFu5jzYx3xZzoGNpwWMp5J"),new A.PublicKey("EQWujCg9fTnj2wi2oVWWkWsJmtRU2tpEUMhhiVSMtHCH"),new A.PublicKey("Cuf4Hbuv9RDZ1vzuUE833MKzjeX7odsBeewEjhmVwVRk"),Fd,Rd,Kd,Gd,Yd,xd,jd,Jd,Wd,qd,ih,rh,_d,Ld,nh,{apiKey:"AIzaSyDWBTlo8oeJGnpV0CnQEBpeloMbHgN6xY8",authDomain:"apricot-website-96904.firebaseapp.com",projectId:"apricot-website-96904",storageBucket:"apricot-website-96904.appspot.com",messagingSenderId:"181748660172",appId:"1:181748660172:web:fea7b301ef6a09c3d60f69",measurementId:"G-W2RX0BF87Q"}),new Od(new A.PublicKey("6UeJYTLU1adaoHWeApWsoj1xNEDbWA2RhM2DLc8CrDDi"),new A.PublicKey("6L2QoTpr8WUd76eLAGnvow8i3WQzRP36C1qdUna9iwMn"),new A.PublicKey("F5m8gNjC6pjynywcbw9kK1miSNJMw1nQGeviWykfCCXd"),new A.PublicKey("FsSq4dqugLgZbsyLNt7bngtBkDApXaHUFXVQ6od5TeQ3"),new A.PublicKey("GttyqdmooMEcgWqZPrb8FcdwjgaTLweLzuvVpnCMq5q1"),new A.PublicKey("4aWV85p4o115qVo5p9sgbAGqYXmh34838xFpwuN1nxEP"),new A.PublicKey("C1k4CehboSgUkmL3BJfw32Xj9HPs9NKTzhT5WXsYwWh4"),Fd,Rd,Kd,Gd,Yd,xd,jd,Jd,Wd,qd,ih,rh,_d,Ld,nh,{apiKey:"AIzaSyAGpQxt6PUaLf1vhfhxL5hzWcP1QDIeOSc",authDomain:"apricot-public.firebaseapp.com",projectId:"apricot-public",storageBucket:"apricot-public.appspot.com",messagingSenderId:"735163506624",appId:"1:735163506624:web:e6406687d889d993e93225",measurementId:"G-VBTE0406R3"}),class{constructor(e){this.POOL_SUMMARIES_SEED="PoolSummaries",this.config=e}getProgramKey(){return this.config.programPubkey}getAdminKey(){return this.config.adminPubkey}mintKeyStrToPoolId(e){return this.config.mintKeyStrToPoolId(e)}getBasePda(){return A.PublicKey.findProgramAddress([Md.from("2")],this.config.programPubkey)}getPricePda(){return A.PublicKey.findProgramAddress([Md.from("PRICE")],this.config.programPubkey)}getPoolListKey(e){return A.PublicKey.createWithSeed(e,"PoolList",this.config.programPubkey)}getPoolSummariesKey(){return A.PublicKey.createWithSeed(this.config.adminPubkey,this.POOL_SUMMARIES_SEED,this.config.programPubkey)}getPriceSummariesKey(e){return A.PublicKey.createWithSeed(e,"PriceSummaries",this.config.programPubkey)}getUserPagesStatsKey(){return A.PublicKey.createWithSeed(this.config.adminPubkey,oh.USER_STATS_SEED,this.config.programPubkey)}getUsersPageKey(e,t){return A.PublicKey.createWithSeed(e,"UsersPage_"+t,this.config.programPubkey)}getLmAptVault(){return this.config.lmAptVault}getAssetPoolKey(e,t){const n=this.mintKeyStrToPoolSeedStr(t);return A.PublicKey.createWithSeed(e,n,this.config.programPubkey)}getAssetPriceKey(e,t){const n=this.mintKeyStrToPoolSeedStr(t);return A.PublicKey.createWithSeed(e,n,this.config.programPubkey)}getAssetPoolSplKey(e,t){const n=this.mintKeyStrToPoolSeedStr(t);return A.PublicKey.createWithSeed(e,n,B.TOKEN_PROGRAM_ID)}async getAssetPoolStakeTableKey(e){const[t]=await this.getBasePda(),n=this.mintKeyStrToStakeTableSeedStr(e);return A.PublicKey.createWithSeed(t,n,this.config.programPubkey)}getUserInfoKey(e){return A.PublicKey.createWithSeed(e,"UserInfo",this.config.programPubkey)}poolIdToSeedStr(e){return"POOL__"+String.fromCharCode(e/16+"a".charCodeAt(0))+String.fromCharCode(e%16+"a".charCodeAt(0))}poolIdToStakeTableSeedStr(e){return"STAK__"+String.fromCharCode(e/16+"a".charCodeAt(0))+String.fromCharCode(e%16+"a".charCodeAt(0))}mintKeyStrToPoolSeedStr(e){const t=this.config.mintKeyStrToPoolId(e);return this.poolIdToSeedStr(t)}mintKeyStrToStakeTableSeedStr(e){const t=this.config.mintKeyStrToPoolId(e);return this.poolIdToStakeTableSeedStr(t)}getLpTargetSwap(e){return Wd[e]}async getLpDepositKeys(e){const[t,n]=await this.getBasePda(),i=nh[e];return W(i),await i.getLpDepositKeys(t)}async getLpWithdrawKeys(e){const[t,n]=await this.getBasePda(),i=nh[e];return W(i),await i.getLpWithdrawKeys(t)}async getLpStakeKeys(e){const[t,n]=await this.getBasePda(),i=nh[e];return W(i),await i.getLpStakeKeys(t)}async getLpFirstStakeKeys(e){const[t,n]=await this.getBasePda(),i=nh[e];return W(i),W(i.isDoubleDipSupported),await i.getFirstStakeKeys(t)}async getLpSecondStakeKeys(e){const[t,n]=await this.getBasePda(),i=nh[e];return W(i),W(i.isDoubleDipSupported),await i.getSecondStakeKeys(t)}async getFloatingLpTokenAccount(e){const t=nh[e];W(t instanceof Vd);const[n]=await this.getBasePda(),{pdaFarmTokenAccount:i}=await t.getPdaKeys(n);return i}});oh.USER_STATS_SEED="UserPagesStats";var Ah=async(e,t,n=!1)=>{let i;return n?[i]=await A.PublicKey.findProgramAddress([e.toBuffer(),B.TOKEN_PROGRAM_ID.toBuffer(),t.toBuffer()],B.ASSOCIATED_TOKEN_PROGRAM_ID):i=await B.Token.getAssociatedTokenAddress(B.ASSOCIATED_TOKEN_PROGRAM_ID,B.TOKEN_PROGRAM_ID,t,e,n),i};i(55872).Buffer;B.NATIVE_MINT,new A.PublicKey("So11111111111111111111111111111111111111112"),new A.PublicKey("9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E"),new A.PublicKey("2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk"),new A.PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),new A.PublicKey("BQcdHdAQW1hczDbBi9hiegXAR7A98Q9jx3X3iBBBDiq4"),new A.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),new A.PublicKey("BXXkv6z8ykpG1yuvUDPgh732wzVHB69RnB9YgSYh3itW"),new A.PublicKey("3JSf5tPeuscJGtaCp5giEiDhv51gQ4v3zWg8DGgyLfAB"),new A.PublicKey("CWE8jPTUYhdCTZYWPTe1o5DFqfdjzWKc9WKz6rSjQUdG"),new A.PublicKey("CsZ5LZkDS7h9TDKjrbL7VAwQZ9nsRu8vJLhRYfmGaN8K"),new A.PublicKey("SF3oTvfWzEP3DTwGSvUXRrGTvr75pdZNnBLAH9bzMuX"),new A.PublicKey("BtZQfWqDGbk9Wf2rXEiWyQBdBY1etnUUn6zEphvVS7yN"),new A.PublicKey("5Fu5UUgbjpUvdBveb3a1JTNirL8rXtiYeSMWvKjtUNQv"),new A.PublicKey("873KLxCbz7s9Kc4ZzgYRtNmhfkQrhfyWGZJBmyCbC3ei"),new A.PublicKey("HqB7uswoVg4suaQiDP3wjxob1G5WdZ144zhdStwMCq7e"),new A.PublicKey("9S4t2NEAiJVMvPdRYKVrfJpBafPBLtvbvyS3DecojQHw"),new A.PublicKey("6WNVCuxCGJzNjmMZoKyhZJwvJ5tYpsLyAtagzYASqBoF"),new A.PublicKey("DJafV9qemGp7mLMEn5wrfqaFwxsbLgUsGVS16zKRk9kc"),new A.PublicKey("DEhAasscXF4kEGxFgJ3bq4PpVGp5wyUxMRvn6TzGVHaw"),new A.PublicKey("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),new A.PublicKey("AGFEad2et2ZJif9jaGpdMixQqvW5i81aBdvKe7PHNfz3"),new A.PublicKey("GXMvfY2jpQctDqZ9RoU3oWPhufKiCcFEfchvYumtX7jd"),new A.PublicKey("EcqExpGNFBve2i1cMJUTR4bPXj4ZoqmDD2rTkeCcaTFX"),new A.PublicKey("EqWCKXfs3x47uVosDpTRgFniThL9Y8iCztJaapxbEaVX"),new A.PublicKey("GeDS162t9yGJuLEHPWXXGrb1zwkzinCgRwnT8vHYjKza"),new A.PublicKey("GUohe4DJUA5FKPWo3joiPgsB7yzer7LpDmt1Vhzy3Zht"),new A.PublicKey("9F9fNTT6qwjsu4X4yWYKZpsbw5qT7o6yR2i57JF2jagy"),new A.PublicKey("EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp"),new A.PublicKey("kinXdEcpDQeHPEuQnqmUgtYykqKGVFq6CeVX5iAHJq6"),new A.PublicKey("MAPS41MDahZ9QdKXhVa4dWB9RuyfV4XqhyAZ8XcYepb"),new A.PublicKey("z3dn17yLaGMKffVogeFHQ9zWVcXgqgf3PQnDsNs2g6M"),new A.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),new A.PublicKey("8HGyAAB1yoM1ttS7pXjHMa3dukTFGQggnFFH3hJZgzQh"),new A.PublicKey("StepAscQoEioFxxWGnh2sLBDFp9d8rvKz2Yp39iDpyT"),new A.PublicKey("ETAtLmCmsoiEEKfNrHKJ2kYy3MoABhU6NQvpSfij5tDs"),new A.PublicKey("8PMHT4swUMtBzgHnh5U564N5sjPSiUz2cjEQzFnnP1Fo"),new A.PublicKey("MERt85fc5boKw3BW1eYdxonEuJNvXbiMbs6hvheau5K"),new A.PublicKey("3bRTivrVsitbmCTGtqwp7hxXPsybkjn4XLNtPsHqa3zR");var sh={symbol:"ATLAS",name:"star-atlas",decimals:8,mintAddress:new A.PublicKey("ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx")},ah={symbol:"POLIS",name:"star-atlas-dao",decimals:8,mintAddress:new A.PublicKey("poLisWXnNRwC6oBu1vHiuKQzFjGL4XDSu4g9qjz9qVk")},ch=(new A.PublicKey("orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE"),new A.PublicKey("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),new A.PublicKey("MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey"),new A.PublicKey("FgX1WD9WzMU3yLwXaFSarPfkgzjLb2DZCqmkx9ExpuvJ"),new A.PublicKey("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),new A.PublicKey("Saber2gLauYim4Mvftnrasomsv6NvAuncvMEZwcLpD1"),new A.PublicKey("4wjPQJ6PrkC4dHhYghwJzGBVP78DkBzA2U3kHoFNBuhj"),new A.PublicKey("PoRTjZMPXb9T7dyU7tpLEZRQj7e6ssfAE62j2oQuc6y"),{symbol:"SAMO",name:"samoyedcoin",mintAddress:new A.PublicKey("7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU"),decimals:9}),uh=(new A.PublicKey("a11bdAAuV8iB2fu7X6AxAvDTo1QZ8FXB3kk5eecdasp"),{symbol:"weSUSHI",name:"allbridge",mintAddress:new A.PublicKey("ChVzxWRmrTeSgwd3Ui3UumcN8KX7VK3WaD4KGeSKpypj"),decimals:8}),lh={symbol:"weUNI",name:"allbridge",mintAddress:new A.PublicKey("8FU95xFJhUUkyyCLU13HSzDLs7oC4QZdXQHL6SCeab36"),decimals:8},gh=(new A.PublicKey("HCgybxq5Upy8Mccihrp7EsmwwFqYZtrHrsmsKwtGXLgW"),new A.PublicKey("4Hx6Bj56eGyw8EJrrheM6LBQAvVYRikYCWsALeTrwyRU"),new A.PublicKey("HysWcbHiYY9888pHbaqhwLYZQeZrcQMXKQWRqS7zcPK5"),new A.PublicKey("CiKu4eHsVrc1eueVQeHn7qhXTcVu95gSQmBpX4utjL9z"),new A.PublicKey("SLNDpmoWTVADgEdndyvWzroNL7zSi1dF9PC3xHGtPwp"),new A.PublicKey("7dgHoN8wBZCc5wbnQ2C47TDnBMAxG4Q5L3KjP67z8kNi"),new A.PublicKey("49c7WuCZkQgc3M4qH8WuEUNXfgwupZf1xqWkDQ7gjRGt"),new A.PublicKey("4SZjjNABoqhbd4hnapbvoEPEqT8mnNkfbEoAwALf1V8t"),{symbol:"GENE",name:"genopets",mintAddress:new A.PublicKey("GENEtH5amGSi8kHAtQoezp1XEXwZJ8vcuePYnXdKrMYz"),decimals:9}),dh={symbol:"SONAR",name:"sonarwatch",mintAddress:new A.PublicKey("sonarX4VtVkQemriJeLm6CKeW3GDMyiBnnAEMw1MRAE"),decimals:9},hh={symbol:"DFL",name:"defi-land",mintAddress:new A.PublicKey("DFL1zNkaGPWm1BqAVqRjCZvHmwTFrEaJtbzJWgseoNJh"),decimals:9},ph={symbol:"wbWBNB",name:"binancecoin",mintAddress:new A.PublicKey("9gP2kCy3wA1ctvYWQk75guqXuHfrEomqydHLtcTCqiLa"),decimals:8},fh=(new A.PublicKey("AD27ov5fVU2XzwsbvnFvb1JpCBaCB5dRXrczV9CqSVGb"),new A.PublicKey("Fm9rHUTF5v3hwMLbStjZXqNBBoZyGriQaFM6sTFz3K8A"),{symbol:"stSOL",name:"lido-staked-sol",mintAddress:new A.PublicKey("7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj"),decimals:9}),mh=(new A.PublicKey("HZRCwxP2Vq9PCpPXooayhJ2bxTpo5xfpQrwB1svh332p"),new A.PublicKey("PRSMNsEPqhGVCH1TtWiJqPjJyh2cKrLostPZTNy1o5x"),{symbol:"SHDW",name:"genesysgo-shadow",mintAddress:new A.PublicKey("SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y"),decimals:9}),Ih={symbol:"BASIS",name:"basis-markets",mintAddress:new A.PublicKey("Basis9oJw9j8cw53oMV7iqsgo6ihi9ALw4QR31rcjUJa"),decimals:6},yh=(new A.PublicKey("8upjSpvjcdpuzhfR1zriwg5NXkwDruejqNE9WNbPRtyA"),{symbol:"wUST",name:"wUST",mintAddress:new A.PublicKey("9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i"),decimals:6}),Bh=(new A.PublicKey("F6v4wfAdJB8D8p77bMXZgYt8TDKsYxLYxH5AFhUkYx9W"),new A.PublicKey("METAmTMXwdb8gYzyCPfXXFmZZw4rUsXX58PNsDg7zjL"),new A.PublicKey("MEANeD3XDdUmNMsRGjASkSWdC8prLYsoRJ61pPeHctD"),{symbol:"ZBC",name:"zebec-protocol",mintAddress:new A.PublicKey("zebeczgi5fSEtbpfQKVZKCJ3WgYXxjkMUkNNx7fLKAF"),decimals:9}),Ch=(new A.PublicKey("HJbNXx2YMRxgfUJ6K4qeWtjatMK5KYQT1QnsCdDWywNv"),{symbol:"GST",name:"green-satoshi-token",mintAddress:new A.PublicKey("AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB"),decimals:9}),wh={symbol:"GMT",name:"stepn",mintAddress:new A.PublicKey("7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx"),decimals:9};new A.PublicKey("PRAxfbouRoJ9yZqhyejEAH6RvjJ86Y82vfiZTBSM3xG"),new A.PublicKey("ratioMVg27rSZbSvBopUvsdrGUzeALUfFma61mpxc8J"),new A.PublicKey("FNFKRV3V8DtA3gVJN6UshMiLGYA8izxFwkNWmJbFjmRj"),new A.PublicKey("6F9XriABHfWhit6zmMUYAQBSy6XK5VF1cHXuW5LDpRtC"),new A.PublicKey("SLCLww7nc1PD2gQPQdGayHviVVcpMthnqUz2iWKhNQV"),new A.PublicKey("FC81tbGt6JWRXidaWYFXxGnTk4VgobhJHATvTRVMqgWj");new A.PublicKey("8zkUc4NeXDoFp8UBDQ3sPVKbBAHNHdvNbeRm1tupEHS9"),new A.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("Hx6LbkMHe69DYawhPyVNs8Apa6tyfogfzQV6a7XkwBUU"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("CFp9kt8z3Epb1QSiEp3xA44KbSwuJxhFR3wQoerFqYS9"),new A.PublicKey("CugsLyJk1Jghc7LkgvnFuUwshJhz1FE9mpkF7Z4acAMU"),new A.PublicKey("62fDf5daUJ9jBz8Xtj6Bmw1bh1DvHn8AG4L9hMmxCzpu"),new A.PublicKey("Gyc1V1xbA9NjzuURE662ATw6W4AdhwvsL26yUnSGhbkz"),new A.PublicKey("CZ2s85dnuAVyGbRWBNauHZwj9oTV2i9xTvFwc1Cedr7E"),new A.PublicKey("Bd71jEvypKFs8N5gByyhD2149tSqLy4PVAzFFShCTJTB"),new A.PublicKey("2E8tZ5SLctXECt74ooLxDf4Wz5dwngpoKwc6z7Mn987S"),new A.PublicKey("Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS"),new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("EzofB5BK23PHDfEAThk5oJANb9FWTXzezrafiTDzcBBA"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("4Kvd1ULAy45k2EQt1pdePa82UBz9tW6N1rLJWb3EAJgQ"),new A.PublicKey("sKmPL3zkAf7777bhXnMaSfTU1jg1keNHNPz38wBTNd5"),new A.PublicKey("HDvD8a4VWbkHNG7hb4CBumNhn41DyKL51qVYBNH73o23"),new A.PublicKey("9tk9XwzJt1J2DoNcBtBmGMsnbnwvMUAoJF1pjdcfJe2E"),new A.PublicKey("HkMze549cFMdLMRDsJyfH8n6EE5jjTuVZr9re4WRYuk9"),new A.PublicKey("7h8YziEXSZgyzqDb5c6PP3uUztQR7hQHwqyWWe9BTqY3"),new A.PublicKey("Fe8sni23YSFGqZTLpTia6y6fUmbyzao22wJy1hBqGSx"),new A.PublicKey("4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R"),new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("ENZ7vdrvNGdAfVa8DoGpT2GrfoSFUtWKRoesf2dvqpuq"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("BUK8XbZeEqVULYRxGp4Va2R1BRqrYzXDrCVnWt6B7TZf"),new A.PublicKey("C2HJD7r6NYCCVoXPPExxYEQ73LZJ3qmb5H13GnwMZfwa"),new A.PublicKey("5uZERkJVyhCABEdocEssPZyMXYa8GJpLhngi95yXr9jc"),new A.PublicKey("GrVpvHCRkTHESGwyaj4gtNLn95NAdkBSnZbKusoFumup"),new A.PublicKey("GZqhoJhN1bz5Frq9GCaUSJ2nimnizXzHwsH12Qgh4YmR"),new A.PublicKey("6EZzqDqfTfdoFF4KD1gmki3btEHfULK4SjNcuJMTEDUt"),new A.PublicKey("8T9RNbWAWuPgKXgV5EaQV8kvo9fbGjmLmt4XzwFimn1c"),new A.PublicKey("Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"),new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("EyqWUeme2B1dhuwJvJVi2coYPcGWmWrakcpsSFeikrhb"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("Acx3Ky9pk8CyYftA9HYF31EbVhBDi21EqJsFtMW2XxXW"),new A.PublicKey("7gAN5Y4hGAG2A9vyr9dURGosjmo4Rwiaqz4iKZGNenE1"),new A.PublicKey("8TtsTZQ6mU4YSW5jw4sDjSDEG1CW8QLpK7C9g5TVgBvn"),new A.PublicKey("EfLgyXRGFi9MUCMgrsFBuAJ7pMPXBceKhD6x4PgdvLLc"),new A.PublicKey("CoheXVD8cAdVaKznfay22dBpfML5Fbz5g4j67syKgRg4"),new A.PublicKey("EAQxDXsA6RXxWtA1PwZNnTnj2MapHBtMzvUmfuGPJCPX"),new A.PublicKey("E7Rf4v3DroXQ4Q2Aon5FsqtDvduNuXEXqCcoKoD8UYoj"),new A.PublicKey("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("B1zB1EuTjnFPLdwySeBYhzeAf3h9buWLbDoG7AHcUTMF"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("FLQtBThLEVvhXdKqq2CREL8sFt8jAFS8szm4HaMYqmJk"),new A.PublicKey("FdSBYwMEfy21H3k64cvYdir3mxzmnZotiYUsC5iPPoxM"),new A.PublicKey("6CZhCFwA7hbqDEoVUQdFpHaCGQU7fSSwhaJWdG4DmsQ6"),new A.PublicKey("C3EjtH3hVuLrU3j1y5ArMFRbAhxFf5hXNfk3b9SU91qN"),new A.PublicKey("DqKuxgMxLPDCXtoQzLG1p85S2i3tP3EaeUVDAw7P8Nt4"),new A.PublicKey("Ednqn9Zo5HpDX2DRmCWu6x46ZXnHNmTmrq9G8hrTuBnz"),new A.PublicKey("5M7vfgfzqT4F5QJyb7w9YqGPrVXBLhQa7sqVRfmd5NE7"),new A.PublicKey("2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk"),new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("CKMQxUz1nkn3NS5B9AUD1uyWNL8iN2piG9LVt1RvWXzj"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("9MH38iiDX4Pk37U6TXLqz2783RspNhwBTYwBNHp8WUzP"),new A.PublicKey("8UPe7Fcm2f1QEFQh2YNr1jg2vgQmj4CXhLYEWgStHd8B"),new A.PublicKey("B8QXcUv5FFwyHH5V88g6PhYBc8fQvwSpza4C9PsiRpQD"),new A.PublicKey("C5X2Q2K2jQtwpuqHKnLVJ1ZsvL9BMRwddMgqaQ5UGNkC"),new A.PublicKey("BKKbCDggM83SPLFd1jRPu1ZsCv9nXkwZVne11N9FEs9w"),new A.PublicKey("9A3KAmmv1VyqNqVGBM6T9b1dp9Ax9xxdeXEgedo8U7Gh"),new A.PublicKey("4DoNrJQqMB2kG31bzKxVdgKWqB4rrCNt3bVbAzUd4Tmg"),B.NATIVE_MINT,new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("EnZC8MB6QLTxwN1LNqCXYC7XMpvXqitnYQPf5y5AcQRn"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("GiJwrxQW5NQWWAva4rnDMXwHxfrhyUzwMX5to1pmCCgF"),new A.PublicKey("2BDZqoVKAX3PJKeZJytjk7oEpbUu3jvdgdi6tA8VusnY"),new A.PublicKey("92Zst3rEoJsyZUW2yNc2811GtkBwFrm3tqgxMTtFWuSB"),new A.PublicKey("Hyi1jMgc9MMEZyaG9ziL2PvT7zbeRNKhb5K1kj9bxz4x"),new A.PublicKey("7x61NrCzeekHwgW5Nk4afMg2sxjMK6RyMkx8tCzzX4qG"),new A.PublicKey("WuPCgCuyLSXatdjyWqkGjCPSQFgKLwcfsNR9fDq3hVL"),new A.PublicKey("2iiSgXsQv5Ej6m68KkP7uU1jCZwy2Py1RhwLkG91PBt4"),new A.PublicKey("orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE"),new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("9bo5JunUhp4XD7TDeeS9ARvWTYGBYtuQKUHGUb7RRvkf"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("F3EhkuRuZaYNY2bLTosjv6V7QXiZ8db9nXTZeLnmHC7V"),new A.PublicKey("F3EhkuRuZaYNY2bLTosjv6V7QXiZ8db9nXTZeLnmHC7V"),new A.PublicKey("DKoKBD7YheCGZjWp5CaHDPtheAcUveRSMvWkaivbNzWh"),new A.PublicKey("AMUE9EgiEiTP1YVBicwTVGtumBypR5thjTgbsXZM2PPG"),new A.PublicKey("CJNd1LZZxZr243dpNN9DtEavXn65kstrg251MPb8vmwW"),new A.PublicKey("74m1zyzV8x9d8kZLEaVaNWRsnx8pH47tfX8cquot11ef"),new A.PublicKey("A9L7C5QMNG5yBjntCxjo4tkxmu2AHiNP5ev9uBtLUMfE"),new A.PublicKey("mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So"),new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("492Hr5QDQyrsLcyXqMZ7A5osjmqwtn4cdKNQLDBYBzvy"),new A.PublicKey("ADW9ZJuRQ9xbzTtWCwX1Th24Vxq7GWHWwYtctrbyjSr1"),new A.PublicKey("ADW9ZJuRQ9xbzTtWCwX1Th24Vxq7GWHWwYtctrbyjSr1"),new A.PublicKey("4mntRxKJWib1YTWNV4aLfszF6FeziBHdwnNAwGSfKKMX"),new A.PublicKey("EbWWhmDLKXDdq2guubVJCdSztuUaN6XhtwVMy9TMMwtV"),new A.PublicKey("Fdu3QfaQ9VL4GF85NrkpzhKRAJECv9cx7gchHca5MsRt"),new A.PublicKey("HdTwUP1U3WQ1EnYPP8c8mx8sqHhXYQ9zwKVsLGxWi7W1"),new A.PublicKey("HUT8P5M4buU38F361SC8Zzp5VPAHfMbmL4aAzoyLdVp6"),new A.PublicKey("9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E"),new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("DxAuEAxKYXsKMYG5Ma4TM8AsrAo7LQBSnbEGicU7i1ek"),new A.PublicKey("2MN34BxuLVrjZpKYKHmW1c6ZGeQs4aWQRrEvmrYfZdtG"),new A.PublicKey("2MN34BxuLVrjZpKYKHmW1c6ZGeQs4aWQRrEvmrYfZdtG"),new A.PublicKey("2G9iwy9zfLaXB2bFiqSA7YbKEvtAEXVmdvGTF28jQVgg"),new A.PublicKey("HGejymLhai1TDvRA4vBEbS5VRbKP1u74ZdzZcv8Y2o1M"),new A.PublicKey("6WzqPd81AqsCwbXp33A6ro87axfD9je32hn3JE4KsnGi"),new A.PublicKey("E7HkZYeY8mqrtC45kusWiArqLNpGnV5Foioj6yEPHB1y"),new A.PublicKey("9YyTJSjV9YK4GgW4oKETJQcEJyHTCCDU1TwVFZu41Cjs"),new A.PublicKey("7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs"),new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("EEokU6r9bBdTz1umHjGhkjgfikARsJzJBXhYxnTmN4Xk"),new A.PublicKey("9Mq6KEyW1nF24TcGrdLLfnK2pE5VdMxbY2SZtcP84R5X"),new A.PublicKey("9Mq6KEyW1nF24TcGrdLLfnK2pE5VdMxbY2SZtcP84R5X"),new A.PublicKey("Hk8b6i2C7PxFBPdd1TCrGssuZpCDEg4fh8yFuyHNJuJe"),new A.PublicKey("FNG4A4GWF1EsQVEjNrQMRT9Dr3H28TycQabtnsQF1MiD"),new A.PublicKey("7f7mU3tQvxD9t3f5ckhxcGSdwqoHHdWrJg43HXiUFWri"),new A.PublicKey("7LvrwstXyshwVn7BPDgjR8Cndersy9GzbbGhyHwQcX3W"),new A.PublicKey("5vnSYw9FpCWYf6NB1VxNhC9ouv7d1xLz9Cx17S2f46aW"),uh.mintAddress,new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("2oTEVdMpSRsamFeNYzqn3wifsPHRomA8TShgbTnDtTgN"),new A.PublicKey("4VAyWCoRbW5YXiV5Rz7pZy7miYBJLjfZYsykDuTnWyqj"),new A.PublicKey("4VAyWCoRbW5YXiV5Rz7pZy7miYBJLjfZYsykDuTnWyqj"),new A.PublicKey("EEhiV55jAt5JDpeH3GF4VGrStiPn5gCeWmqffyTp9B4E"),new A.PublicKey("5SDoskkCcV8NBJcP97g9CS7BEGLqXT5q2F6Ve2W3VN71"),new A.PublicKey("E2ocWnUUuBpUDLRSxB5VdUqr635DMPiWuV4PYDtiyGbi"),new A.PublicKey("L9idBQvg4SKzdtHPgZijpJGkDT4WVbhnA7KmTVPT477"),new A.PublicKey("Hb4ZHgHCyyzJWfksKyr8mRB7ydvH2SG76AC5pXkv6j9G"),lh.mintAddress,new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("H4uTQ8CCFJYVQYZ8c2bH7hHGrrok6k4pWDhk5NQt9KR8"),new A.PublicKey("E3fN9Wqesn2NbYGPjybFo5HTMpcyLPnWNHovQpQqqw8G"),new A.PublicKey("E3fN9Wqesn2NbYGPjybFo5HTMpcyLPnWNHovQpQqqw8G"),new A.PublicKey("CGj7e1g4ojW1RhSocF8AKWxHFaqCQjK8kBsbHqNB4BxP"),new A.PublicKey("8BtR6Dzg4fLmLv4ZZdX1x22WYiPHvp8AtvRFgSMQwxdw"),new A.PublicKey("74WmdEZG9rjvcAX2yczd5h54QeXnq62sVNLMz1DU2Abh"),new A.PublicKey("8kLAk9EiLV6qePNEtjnDLyWbRsySgMPSTihdWAEEv9H9"),new A.PublicKey("FUdXgKTfisX642gKDZReFtaRee8WdHiw4nrz4Y4y7JpP"),ch.mintAddress,new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("HJLkovTpxof1z9tVMuX1pWp1ePDx1zgmnGYfFMxFRAd"),new A.PublicKey("J198uwytk8CPejCyNM9TMPJcLPCky6pZwGwP3n1CUfto"),new A.PublicKey("J198uwytk8CPejCyNM9TMPJcLPCky6pZwGwP3n1CUfto"),new A.PublicKey("A9H3fAqkWmRnnFzXXzydZHzyLQdzK5o9dMejCL27tqq8"),new A.PublicKey("HP3sKy5xqLkoNnbuHRCPuFaQUtYskNnockBPcYo5PZut"),new A.PublicKey("E5ejPudazVxEdQUsS37g8yUn5HD22FBHsGEKWkGRDR3F"),new A.PublicKey("23tLfFHXZR1tAimzVyEAdN7HWJWiqvjepaX5qBHkgQvT"),new A.PublicKey("8GNhPXDU4UGascdfKGmu3ZBJsEbYoxe4w2BRixXH8ZNK"),ah.mintAddress,new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("BWJkfNQnYt817V6sKxEJ3sFcivcXZgfKGCe8Z9f4LcVj"),new A.PublicKey("7Ad6djoPLzigyBnnWjoLh2gQ6Tbw2s6kAdsaVUBq6L8N"),new A.PublicKey("7Ad6djoPLzigyBnnWjoLh2gQ6Tbw2s6kAdsaVUBq6L8N"),new A.PublicKey("FenVvq6s6S3McD1BCm76Ktz1EvRNCB4qYKGFU76fB7Fj"),new A.PublicKey("GKTqMGVCgXJaDzjYfPdgMbVfnzCKDj6KqRpykauw19do"),new A.PublicKey("EkKFNt7PBRdWy8EpmZAbAZdvXZpSKvdwMfo8eotN1PEr"),new A.PublicKey("FGKikDsnBPQ5m7jgbNNbHaR1gh1T8GYJ5sPYWoYdoE4p"),new A.PublicKey("7jmphqSz19pSyYDAoNbBnAdpSPjCDMhuGowvZL4MVPya"),sh.mintAddress,new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("FnkmnUqazYmSm791rSTSXYbAzDzsuHJBgySgNZeCHGDJ"),new A.PublicKey("E5ovYitzudRyUy7AS4U52eFgrq1rjr773rRGpYax1nmD"),new A.PublicKey("E5ovYitzudRyUy7AS4U52eFgrq1rjr773rRGpYax1nmD"),new A.PublicKey("4mygt5bFQrbXH9gNg75j1KVTrKGhvcYiQjir6FJ8afYH"),new A.PublicKey("Eb4Ai2PXmRX3V9TX6awjNdBXZKGRyCgTmQu6Pni9NnTb"),new A.PublicKey("3nAgm2XrSi3RNDWz4wCvUWwQW3QQE7s5i7MxNz8r8mGZ"),new A.PublicKey("3PwecBTLVt8zqKadSFDjeKH7Swzt1GxvU27urj66L89P"),new A.PublicKey("HFKYALQcRFkM5S35fjXz3aCoyPDwKeGJtXzs5yMkjUFw"),gh.mintAddress,new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("FrgyPPEPNC25ihob4ZobP3eYjh8uBoxLiobdMDX2EsMc"),new A.PublicKey("A4UMfr97y35AvCaakKRAE5UBsb4UuvRQ2JiT23dyzDFu"),new A.PublicKey("A4UMfr97y35AvCaakKRAE5UBsb4UuvRQ2JiT23dyzDFu"),new A.PublicKey("9z3eDHueAMdUtym9Q2ku3hi5YXHTYjpFLp1YEEnxUHPV"),new A.PublicKey("58teG2GNEoeYQUBa3VxQe5ZH5SPCZ6nUsrCuN5akbaQS"),new A.PublicKey("2KR5Q6zCik6kFyiWPMMVCKC5HDAP6joGNhKhbEv6nFdY"),new A.PublicKey("7LBnkdaCZsM82t7G5MYKBoYAZetcnsqfU1cABxnPoquw"),new A.PublicKey("CUcpP2uUw77Ftvhdppy2SpcRsDQ9kgW4qeG6iWNKeiC1"),dh.mintAddress,new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("3USSy3sAZSCnUiCZJaTFt5hCHWSw87kg8tNPaEZh1p9D"),new A.PublicKey("2F2yrLZQa3av7PxW7vdqiYBV4AwTbkCdswgN2BYGgtvs"),new A.PublicKey("2F2yrLZQa3av7PxW7vdqiYBV4AwTbkCdswgN2BYGgtvs"),new A.PublicKey("FvHrhBTTgo7q8uDX7gN5f7YzSXMrf3mwYtkay5NvkJzg"),new A.PublicKey("DPMixAHcMsryStgytYBhvvtR2WbvyRxkMwG147NmXEPS"),new A.PublicKey("HsKN1EC5zcArg1yoq1tMg7JKfxPW9m644mqCphrbLMC"),new A.PublicKey("7zqtZ8LhBYUUXoDCwDFcdLgNkYo8tZZqTdoFJqAL5ie8"),new A.PublicKey("2Q144LX9XXacpEwNMFMESnuZhCNpPrABYun3AZJxnYHB"),hh.mintAddress,new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("74fWq2xnHBP1W6QhLDazCZAuZvp9XY3ck1PGNJg9hfhi"),new A.PublicKey("5QNHLaujxMgFKYaJM55uYb3jyMGgvspizg7S5eVAD3d8"),new A.PublicKey("5QNHLaujxMgFKYaJM55uYb3jyMGgvspizg7S5eVAD3d8"),new A.PublicKey("CGhMaGeVLxxQGJh6Y2bEYfLazumuFyEXpxF1UgrcMRJi"),new A.PublicKey("EHUF88xvJZyXzosAQ7Jzx5ozdvxCfZuwppSEo5b9pe2S"),new A.PublicKey("26Eo8VcgDuNZSn8x5infdYxDKs7mYZj4JKxLUCkKP3DV"),new A.PublicKey("GYZgKQmYZBosdS3PsSRv83CdPFAtTRXRZaqdFVUnumiw"),new A.PublicKey("AJMcPqmPMnPonDKCUHMyTF8sVCkGaHxMzQdEPKtY3QbK"),ph.mintAddress,new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("6RnKftFywvw8sceeWUM623BYyMeW216276G4atZ23CrF"),new A.PublicKey("F7SQgbgunwx7PKc9i5zXJfSNsjU9xM5P8Sb18FCUBKyf"),new A.PublicKey("F7SQgbgunwx7PKc9i5zXJfSNsjU9xM5P8Sb18FCUBKyf"),new A.PublicKey("8EzbLKBQ8Rest1SWUtZR6zFvYTo4cCaQ73ni8sF9vtjA"),new A.PublicKey("DgBnJvW9iQT5sP5YyVHeNbRjG8Xd2d53f19a2451eXkV"),new A.PublicKey("6bMAnnzp3pim8wd8XypLGuqVFQ3LMuY3vkRRse1DkZ7o"),new A.PublicKey("CFsjid6WFmsyZozJkj43ssA5rRmYa97mzvfs8eRYqBeZ"),new A.PublicKey("kTJ8hWwRV6vmj7feyD1ppNk7rxiuPMmhrjoSmHJ75M9"),fh.mintAddress,new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("9ogtxmnUF94KaPn3dB3unT5yyu7rpzSwc5igysgqFxrU"),new A.PublicKey("85pJTrAVdjHNvgCcUtefwkSe9RDKnHueyvs2uTocWmWs"),new A.PublicKey("85pJTrAVdjHNvgCcUtefwkSe9RDKnHueyvs2uTocWmWs"),new A.PublicKey("HyxfDg47HKS1rQUXWvJH2XQhwEJM3AqrHU7sK9bSNt5h"),new A.PublicKey("3H64RCjRcHEJAJK9mZ3q1mBZJ2hWuv3tUvXVY7XgFL5L"),new A.PublicKey("Hhh5mQQMuWjmyUNyYFDtuXKFp9wptPuLYvH9x98FSDq8"),new A.PublicKey("CRorEh6T7aXamCsjggckCMgF1ewVavo6CfXTPNkipson"),new A.PublicKey("37Fuw9zCDDaohHxY12cw6viNJ4J4qZysRYQynQ75Fo9F"),mh.mintAddress,new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("8NvPwUxtBohPg45bAmzzB45qLajpfptMVgqgu5vmCNgi"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("EoVqoTtczavGmATCagSQU11c74MkL8enp96fGkQz6uqK"),new A.PublicKey("AJu1s738dGsZ8mV2XKTqjuMiAiqNGaRsixTR4Czx4mJ2"),new A.PublicKey("48YJFjo3zLGSkUDXpa8mte3EMFNSPvy6pE9wUhoPSLnH"),new A.PublicKey("3fu3y5yGbBPqDpwKjN1PsVurm4af6uQnpkkuSo5SxZQa"),new A.PublicKey("2zxQFrSGMSWbHMzMjxDN8ceqgbJVUyyEEwR75R5zzh4M"),new A.PublicKey("3H3QXT9oEG5DaoWfQ727jgJdhVewgrTNc8jsGgBsXvQE"),new A.PublicKey("CweY4HW2y4mQQmduqQNBPRHLNcsLmNV3aUNSE4EHumhe"),Ih.mintAddress,new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("499SnZR7dFzLU6BF9v9obfSCsmgui3FBtYtFDakD89zQ"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("E85Eyi4NmBp2Der1ntoNNx3AH5FHmjp4gGoUPW7qYVJ8"),new A.PublicKey("9s2iRZBzSNCNTUtuzSRHcv3q4Q9SaFFhSFZVnFXGtHUp"),new A.PublicKey("5phQAZCwdfbYqj1tsv4xYWREpLZuxhqnMaZ126RAfVNb"),new A.PublicKey("AVRoCxDDfx525L1XJJ5JbKrPPbuHs1JL6Z17vWS3HpKc"),new A.PublicKey("FeMzBdYfGJtqeRAadiC4fStY13cjxe6GutTyFCFsP1vL"),new A.PublicKey("CtdMN3hrU9yq2GJpojbU1oQZbMXJyuVZYMfNkAPbgaZN"),new A.PublicKey("HbSUXs2y1nMm1rpWfxeD25ZsfXEk19PuvWTZhdzvwUvo"),yh.mintAddress,new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("G1PYcFc56DQHDjSyt8zRKcnxbBrKJq4Vehurzrt2KUzs"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("DKYpvhtPyU9yWkGZx5VM4fA1isLwpcmQ8ttqhPJgMMrJ"),new A.PublicKey("FPnFwW1ASFLBReVz1EPWVGkbrsnrekVkEcQnrBRkvDXS"),new A.PublicKey("MeLTPseZyHm2aWSk9Gda9d6xWM8DS5QySFKBS3Vyzsv"),new A.PublicKey("AbPJaMzRetUebzRV3mtoXtyPDVwEBEHif3EibVKhfcTs"),new A.PublicKey("mYi2FARcy26GxkDuTneTybM75izMAR7swioxUMvyPRa"),new A.PublicKey("5wTjKzJyEJHbjw4fsZM51fKBDwiq5JSA3bSzzRE2PXob"),new A.PublicKey("GBAgJPNhEmt3JwubXVgd66zoJZP8XBGD7FwsYzo8WRkh"),Ch.mintAddress,new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("93zxnt1gPepvUjWYPP32uANnhAK6NNphGD6A2yQFhk4s"),new A.PublicKey("4Y7VyaAWEDaQSkeYXbXRf1d82ZPViVRZ7Dt4fjHKgotL"),new A.PublicKey("4GDuSZwHUQvL6zga2UNdjgXSqXjcWaUYc4S36N9q4567"),new A.PublicKey("GjmnPLwAAA5aZCfN5sCwcbartonu8iyVMPqSnfkyvtC9"),new A.PublicKey("8Nq8YV7BYoe3dqdTX996TRDB2iYryAHbzZTXntt2A3Uo"),new A.PublicKey("8dzJgZxp7rBEbKhvFYXTMXKLmkqscn9UXwzcGA14fEgN"),new A.PublicKey("ERyCAJh59hn8187Kn6wiKpeXdnGw4hptrbn55vh9YJQ1"),new A.PublicKey("3KzviRz2snQevukX9FWt5n72XQFX48czkWJPsAiGoJZz"),wh.mintAddress,new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("9b5QWW2SqjmhRxtYTHXj6LFkmUkahrLAMQer3rEurd1k"),new A.PublicKey("7ZosDG7JWwXFnzhQ2aQ1ghCSQ9mrQzvH3ZhduhRPHgJB"),new A.PublicKey("9R6toP3xTFBWoqwBY8bfjUj6Tyd5hyR192jY4NeMmkNg"),new A.PublicKey("BPPtMXgGkpo5HuDbiFyQWiA5r4BfxRWfwUA8XoKPixb7"),new A.PublicKey("B1yWMWp7nvSV2upJxFUxpUkDiZAVD2MabnRgaBtR14Dm"),new A.PublicKey("6NvFHm9p6oSK8DJ9jurTMkC8KBo2hCk8UQm19Nub7R6X"),new A.PublicKey("ejLn4fFkVS29aYksC87TQYwcu8wy1tvc2AySpfHGabQ"),new A.PublicKey("FNVsWfdmEcAjdxUZtRC9165RUt8zQh3k3mANCQL4sRAu"),Bh.mintAddress,new A.PublicKey("4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E"),new A.PublicKey("sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem"),new A.PublicKey("7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR"),new A.PublicKey("6uPerEUyomCC5qn4z9xF3fbVa7SCytcKoCVannPDez5R"),new A.PublicKey("7quTFi1N9EZfz7jUx7ui9wx9rk1rb3F1Enjbh8Me2tSs"),new A.PublicKey("HUry6RSbDasMfU7LXZ5QR42YajkbMuLBQkyV742xgFKx"),new A.PublicKey("BHuVdzrDTssFdWTqt15fsdJzJuHESQrMhSnc3jsJ8X2Y"),new A.PublicKey("ADWAgFjannL985LDKQsQ9B833BFDMj4q8qQappe2F3X9"),new A.PublicKey("5xqkszmojpTFy3wGQTXFB7XoLyWXxw7ymmHN9iNYVdUK"),new A.PublicKey("qt8KMibr5UcB1WZGVdgyFNGvmzEtp3faUqfcKDytLzq"),i(55872).Buffer;var Eh=i(8880),Qh=i(55872).Buffer;class bh{withdraw(e,t,n,i,r,o,s,a,c,u,l,g){return function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))}(this,void 0,void 0,(function*(){const[d]=yield A.PublicKey.findProgramAddress([bh.MangoGrouPK.toBuffer(),i.toBuffer(),Qh.from([0,0,0,0,0,0,0,0])],bh.MangoProgramId),h=new Eh.MangoClient(t.provider.connection,bh.MangoProgramId),p=n.state.reserve,f=yield h.getMangoGroup(bh.MangoGrouPK);yield f.loadRootBanks(t.provider.connection);const m=f.getRootBankIndex(new A.PublicKey(p)),I=f.rootBankAccounts[m];if(!I)throw new Error("Root bank state not found");const C=I.nodeBanks[0],w=I.nodeBankAccounts.find((e=>e.publicKey.toBase58()===C.toBase58()));if(!w)throw new Error("Node bank state not found");const E=[{pubkey:bh.MangoGrouPK,isWritable:!0},{pubkey:d,isWritable:!0},{pubkey:f.mangoCache,isWritable:!0},{pubkey:C,isWritable:!0},{pubkey:w.vault,isWritable:!0},{pubkey:f.signerKey,isWritable:!0},{pubkey:A.PublicKey.default}],Q=[];for(const e of E)Q.push({pubkey:e.pubkey,isWritable:!!e.isWritable,isSigner:!1});const[b]=yield A.PublicKey.findProgramAddress([Qh.from(vd.COLLATERAL_VAULT_PREFIX),new A.PublicKey(n.pubkey).toBuffer()],t.programId),k={vault:i,strategy:n.pubkey,reserve:n.state.reserve,strategyProgram:bh.MangoProgramId,collateralVault:b,feeVault:o.feeVault,tokenVault:r,userToken:s,userLp:a,tokenProgram:B.TOKEN_PROGRAM_ID};return(null==g?void 0:g.affiliate)?yield g.affiliate.affiliateProgram.methods.withdrawDirectlyFromStrategy(c,new(y())(0)).preInstructions(u).postInstructions(l).remainingAccounts(Q).accounts(Object.assign(Object.assign({},k),{partner:g.affiliate.partner,user:g.affiliate.user,vaultProgram:t.programId,vaultLpMint:o.lpMint,owner:e})).transaction():yield t.methods.withdrawDirectlyFromStrategy(c,new(y())(0)).preInstructions(u).postInstructions(l).remainingAccounts(Q).accounts(Object.assign(Object.assign({},k),{lpMint:o.lpMint,user:e})).transaction()}))}}bh.MangoProgramId=new A.PublicKey("mv3ekLzLbnVPNxjSKvqBpU3ZeZXPQdEC3bp5MDEBG68"),bh.MangoGrouPK=new A.PublicKey("98pjRuQjK3qA6gXts96PqZT4Ze5QmnCmt3QYjhbUSPue");var kh=i(75481),vh=(i(32699),i(84104));i(55872).Buffer,new kh.web3.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),new kh.web3.PublicKey("Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo"),new kh.web3.PublicKey("4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM"),new kh.web3.PublicKey("QMNeHCGYnLVDn1icRAfQZpjPLBNkfGbSKRB83G5d8KB"),new kh.web3.PublicKey("SPQR4kT3q2oUKEJes2L6NNSBCiPW9SfuhkuqC9bp6Sx"),new kh.web3.PublicKey("82yxjeMsvaURa4MbZZ7WZZHfobirZYkH1zF8fmeGtyaQ"),new kh.web3.PublicKey("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP");i(55872).Buffer;var Sh=i(49500),Mh=i(55872).Buffer,Dh=Object.freeze({__proto__:null,encode:function(e){return e.reduce(((e,t)=>e+t.toString(16).padStart(2,"0")),"0x")},decode:function(e){0===e.indexOf("0x")&&(e=e.substr(2)),e.length%2==1&&(e="0"+e);let t=e.match(/.{2}/g);return null===t?Ct.Buffer.from([]):Ct.Buffer.from(t.map((e=>parseInt(e,16))))}});function Nh(e){return(new TextEncoder).encode(e)}var Th=Object.freeze({__proto__:null,decode:function(e){return new TextDecoder("utf-8").decode(e)},encode:Nh});function Ph(e){return Et().encode(e)}var Oh=Object.freeze({__proto__:null,encode:Ph,decode:function(e){return Et().decode(e)}});var Fh=Object.freeze({__proto__:null,encode:function(e){return Qt.fromByteArray(e)},decode:function(e){return Ct.Buffer.from(Qt.toByteArray(e))}}),Rh=Object.freeze({__proto__:null,hex:Dh,utf8:Th,bs58:Oh,base64:Fh});function Gh(e){return e instanceof A.PublicKey?e:new A.PublicKey(e)}class xh extends TypeError{constructor(e,t){let n;const{message:i,...r}=e,{path:o}=e;super(0===o.length?i:"At path: "+o.join(".")+" -- "+i),this.value=void 0,this.key=void 0,this.type=void 0,this.refinement=void 0,this.path=void 0,this.branch=void 0,this.failures=void 0,Object.assign(this,r),this.name=this.constructor.name,this.failures=()=>{var i;return null!=(i=n)?i:n=[e,...t()]}}}function Uh(e){return"object"==typeof e&&null!=e}function _h(e){return"string"==typeof e?JSON.stringify(e):""+e}function Lh(e,t,n,i){if(!0===e)return;!1===e?e={}:"string"==typeof e&&(e={message:e});const{path:r,branch:o}=t,{type:A}=n,{refinement:s,message:a="Expected a value of type `"+A+"`"+(s?" with refinement `"+s+"`":"")+", but received: `"+_h(i)+"`"}=e;return{value:i,type:A,refinement:s,key:r[r.length-1],path:r,branch:o,...e,message:a}}function*Kh(e,t,n,i){var r;Uh(r=e)&&"function"==typeof r[Symbol.iterator]||(e=[e]);for(const r of e){const e=Lh(r,t,n,i);e&&(yield e)}}function*Yh(e,t,n={}){const{path:i=[],branch:r=[e],coerce:o=!1,mask:A=!1}=n,s={path:i,branch:r};if(o&&(e=t.coercer(e,s),A&&"type"!==t.type&&Uh(t.schema)&&Uh(e)&&!Array.isArray(e)))for(const n in e)void 0===t.schema[n]&&delete e[n];let a=!0;for(const n of t.validator(e,s))a=!1,yield[n,void 0];for(let[n,c,u]of t.entries(e,s)){const t=Yh(c,u,{path:void 0===n?i:[...i,n],branch:void 0===n?r:[...r,c],coerce:o,mask:A});for(const i of t)i[0]?(a=!1,yield[i[0],void 0]):o&&(c=i[1],void 0===n?e=c:e instanceof Map?e.set(n,c):e instanceof Set?e.add(c):Uh(e)&&(e[n]=c))}if(a)for(const n of t.refiner(e,s))a=!1,yield[n,void 0];a&&(yield[void 0,e])}class jh{constructor(e){this.TYPE=void 0,this.type=void 0,this.schema=void 0,this.coercer=void 0,this.validator=void 0,this.refiner=void 0,this.entries=void 0;const{type:t,schema:n,validator:i,refiner:r,coercer:o=(e=>e),entries:A=function*(){}}=e;this.type=t,this.schema=n,this.entries=A,this.coercer=o,this.validator=i?(e,t)=>Kh(i(e,t),t,this,e):()=>[],this.refiner=r?(e,t)=>Kh(r(e,t),t,this,e):()=>[]}assert(e){return function(e,t){const n=qh(e,t);if(n[0])throw n[0]}(e,this)}create(e){return Wh(e,this)}is(e){return Jh(e,this)}mask(e){return function(e,t){const n=qh(e,t,{coerce:!0,mask:!0});if(n[0])throw n[0];return n[1]}(e,this)}validate(e,t={}){return qh(e,this,t)}}function Wh(e,t){const n=qh(e,t,{coerce:!0});if(n[0])throw n[0];return n[1]}function Jh(e,t){return!qh(e,t)[0]}function qh(e,t,n={}){const i=Yh(e,t,n),r=function(e){const{done:t,value:n}=e.next();return t?void 0:n}(i);return r[0]?[new xh(r[0],(function*(){for(const e of i)e[0]&&(yield e[0])})),void 0]:[void 0,r[1]]}function Zh(e,t){return new jh({type:e,schema:null,validator:t})}function zh(e){return new jh({type:"array",schema:e,*entries(t){if(e&&Array.isArray(t))for(const[n,i]of t.entries())yield[n,i,e]},coercer:e=>Array.isArray(e)?e.slice():e,validator:e=>Array.isArray(e)||"Expected an array value, but received: "+_h(e)})}function Hh(e){const t=_h(e),n=typeof e;return new jh({type:"literal",schema:"string"===n||"number"===n||"boolean"===n?e:null,validator:n=>n===e||"Expected the literal `"+t+"`, but received: "+_h(n)})}function Vh(e){return new jh({...e,validator:(t,n)=>null===t||e.validator(t,n),refiner:(t,n)=>null===t||e.refiner(t,n)})}function Xh(){return Zh("number",(e=>"number"==typeof e&&!isNaN(e)||"Expected a number, but received: "+_h(e)))}function $h(e){return new jh({...e,validator:(t,n)=>void 0===t||e.validator(t,n),refiner:(t,n)=>void 0===t||e.refiner(t,n)})}function ep(){return Zh("string",(e=>"string"==typeof e||"Expected a string, but received: "+_h(e)))}function tp(e){const t=Object.keys(e);return new jh({type:"type",schema:e,*entries(n){if(Uh(n))for(const i of t)yield[i,n[i],e[i]]},validator:e=>Uh(e)||"Expected an object, but received: "+_h(e)})}function np(e){const t=e.map((e=>e.type)).join(" | ");return new jh({type:"union",schema:null,coercer:(t,n)=>(e.find((e=>{const[n]=e.validate(t,{coerce:!0});return!n}))||ip()).coercer(t,n),validator(n,i){const r=[];for(const t of e){const[...e]=Yh(n,t,i),[o]=e;if(!o[0])return[];for(const[t]of e)t&&r.push(t)}return["Expected the value to satisfy a union of `"+t+"`, but received: "+_h(n),...r]}})}function ip(){return Zh("unknown",(()=>!0))}async function rp(e,t,n){const i=null!=n?n:e.commitment;return(await e.getMultipleAccountsInfo(t,i)).map(((e,n)=>null===e?null:{publicKey:t[n],account:e}))}async function op(e,t,n,i,r){n&&n.length>0&&t.sign(...n);const o=t._compile(),s=o.serialize(),a=t._serialize(s).toString("base64"),c={encoding:"base64",commitment:null!=i?i:e.commitment};if(r){const e=(Array.isArray(r)?r:o.nonProgramIds()).map((e=>e.toBase58()));c.accounts={encoding:"base64",addresses:e}}n&&(c.sigVerify=!0);const u=[a,c],l=Wh(await e._rpcRequest("simulateTransaction",u),ap);if("error"in l){let e;if("data"in l.error&&(e=l.error.data.logs,e&&Array.isArray(e))){const t="\n ",n=t+e.join(t);Sh.error(l.error.message,n)}throw new A.SendTransactionError("failed to simulate transaction: "+l.error.message,e)}return l.result}const Ap=sp(ip());function sp(e){return np([tp({jsonrpc:Hh("2.0"),id:ep(),result:e}),tp({jsonrpc:Hh("2.0"),id:ep(),error:tp({code:ip(),message:ep(),data:$h(Zh("any",(()=>!0)))})})])}const ap=(cp=tp({err:Vh(np([tp({}),ep()])),logs:Vh(zh(ep())),accounts:$h(Vh(zh(Vh(tp({executable:Zh("boolean",(e=>"boolean"==typeof e)),owner:ep(),lamports:Xh(),data:zh(ep()),rentEpoch:$h(Xh())}))))),unitsConsumed:$h(Xh())}),function(e){return function(e,t,n){return new jh({...e,coercer:(i,r)=>Jh(i,t)?e.coercer(n(i),r):e.coercer(i,r)})}(sp(e),Ap,(t=>"error"in t?t:{...t,result:Wh(t.result,e)}))}(tp({context:tp({slot:Xh()}),value:cp})));var cp,up=Object.freeze({__proto__:null,invoke:async function(e,t,n,i){e=Gh(e),i||(i=null===pp?lp.local():pp);const r=new A.Transaction;if(r.add(new A.TransactionInstruction({programId:e,keys:null!=t?t:[],data:n})),void 0===i.sendAndConfirm)throw new Error("This function requires 'Provider.sendAndConfirm' to be implemented.");return await i.sendAndConfirm(r,[])},getMultipleAccounts:async function(e,t,n){if(t.length<=99)return await rp(e,t,n);{const i=function(e,t){return Array.apply(0,new Array(Math.ceil(e.length/99))).map(((t,n)=>e.slice(99*n,99*(n+1))))}(t);return(await Promise.all(i.map((t=>rp(e,t,n))))).flat()}},simulateTransaction:op});class lp{constructor(e,t,n){this.connection=e,this.wallet=t,this.opts=n,this.publicKey=t.publicKey}static defaultOptions(){return{preflightCommitment:"processed",commitment:"processed"}}static local(e,t){throw new Error("Provider local is not available on browser.")}static env(){throw new Error("Provider env is not available on browser.")}async sendAndConfirm(e,t,n){var i;void 0===n&&(n=this.opts),e.feePayer=this.wallet.publicKey,e.recentBlockhash=(await this.connection.getRecentBlockhash(n.preflightCommitment)).blockhash,e=await this.wallet.signTransaction(e),(null!=t?t:[]).forEach((t=>{e.partialSign(t)}));const r=e.serialize();try{return await dp(this.connection,r,n)}catch(t){if(t instanceof hp){const n=await this.connection.getTransaction(Ph(e.signature),{commitment:"confirmed"});if(n){const e=null===(i=n.meta)||void 0===i?void 0:i.logMessages;throw e?new A.SendTransactionError(t.message,e):t}throw t}throw t}}async sendAll(e,t){void 0===t&&(t=this.opts);const n=await this.connection.getRecentBlockhash(t.preflightCommitment);let i=e.map((e=>{var t;let i=e.tx,r=null!==(t=e.signers)&&void 0!==t?t:[];return i.feePayer=this.wallet.publicKey,i.recentBlockhash=n.blockhash,r.forEach((e=>{i.partialSign(e)})),i}));const r=await this.wallet.signAllTransactions(i),o=[];for(let e=0;ee.startsWith("Program log: AnchorError")));if(-1===n)return null;const i=t[n],r=[i];let o;if(n+11)return null;e[0].match(/([0-9]+)/g)[0]}try{parseInt(undefined)}catch(e){return null}let r=t.get(i);return void 0!==r?new Cp(i,r,e.logs):(dist_browser_St.get(i),void 0!==r?new Cp(i,r,e.logs):null)}get program(){return this._programErrorStack,void 0}get programErrorStack(){return this._programErrorStack,void 0}toString(){return this.msg}}function wp(e,t){if("enum"===t.type.kind){let n=t.type.variants.map((t=>void 0===t.fields?0:t.fields.map((t=>{if("object"!=typeof t||!("name"in t))throw new Error("Tuple enum variants not yet implemented.");return Ep(e,t.type)})).reduce(((e,t)=>e+t))));return Math.max(...n)+1}return void 0===t.type.fields?0:t.type.fields.map((t=>Ep(e,t.type))).reduce(((e,t)=>e+t),0)}function Ep(e,t){var n,i;switch(t){case"bool":case"u8":case"i8":case"bytes":case"string":return 1;case"i16":case"u16":return 2;case"u32":case"i32":case"f32":return 4;case"u64":case"i64":case"f64":return 8;case"u128":case"i128":return 16;case"publicKey":return 32;default:if("vec"in t)return 1;if("option"in t)return 1+Ep(e,t.option);if("coption"in t)return 4+Ep(e,t.coption);if("defined"in t){const r=null!==(i=null===(n=e.types)||void 0===n?void 0:n.filter((e=>e.name===t.defined)))&&void 0!==i?i:[];if(1!==r.length)throw new yp(`Type not found: ${JSON.stringify(t)}`);return wp(e,r[0])}if("array"in t){let n=t.array[0],i=t.array[1];return Ep(e,n)*i}throw new Error(`Invalid type ${JSON.stringify(t)}`)}}new Map([[100,"8 byte instruction identifier not provided"],[101,"Fallback functions are not supported"],[102,"The program could not deserialize the given instruction"],[103,"The program could not serialize the given instruction"],[1e3,"The program was compiled without idl instructions"],[1001,"The transaction was given an invalid program for the IDL instruction"],[2e3,"A mut constraint was violated"],[2001,"A has_one constraint was violated"],[2002,"A signer constraint was violated"],[2003,"A raw constraint was violated"],[2004,"An owner constraint was violated"],[2005,"A rent exemption constraint was violated"],[2006,"A seeds constraint was violated"],[2007,"An executable constraint was violated"],[2008,"A state constraint was violated"],[2009,"An associated constraint was violated"],[2010,"An associated init constraint was violated"],[2011,"A close constraint was violated"],[2012,"An address constraint was violated"],[2013,"Expected zero account discriminant"],[2014,"A token mint constraint was violated"],[2015,"A token owner constraint was violated"],[2016,"A mint mint authority constraint was violated"],[2017,"A mint freeze authority constraint was violated"],[2018,"A mint decimals constraint was violated"],[2019,"A space constraint was violated"],[2500,"A require expression was violated"],[2501,"A require_eq expression was violated"],[2502,"A require_keys_eq expression was violated"],[2503,"A require_neq expression was violated"],[2504,"A require_keys_neq expression was violated"],[2505,"A require_gt expression was violated"],[2506,"A require_gte expression was violated"],[3e3,"The account discriminator was already set on this account"],[3001,"No 8 byte discriminator was found on the account"],[3002,"8 byte discriminator did not match what was expected"],[3003,"Failed to deserialize the account"],[3004,"Failed to serialize the account"],[3005,"Not enough account keys given to the instruction"],[3006,"The given account is not mutable"],[3007,"The given account is owned by a different program than expected"],[3008,"Program ID was not as expected"],[3009,"Program account is not executable"],[3010,"The given account did not sign"],[3011,"The given account is not owned by the system program"],[3012,"The program expected this account to be already initialized"],[3013,"The given account is not a program data account"],[3014,"The given account is not the associated token account"],[3015,"The given public key does not match the required sysvar"],[4e3,"The given state account does not have the correct address"],[4100,"The declared program id does not match the actual program id"],[5e3,"The API being used is deprecated and should no longer be used"]]);var Qp="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==i.g?i.g:"undefined"!=typeof self?self:{};class bp{constructor(e,t){if(!Number.isInteger(e))throw new TypeError("span must be an integer");this.span=e,this.property=t}makeDestinationObject(){return{}}decode(e,t){throw new Error("Layout is abstract")}encode(e,t,n){throw new Error("Layout is abstract")}getSpan(e,t){if(0>this.span)throw new RangeError("indeterminate span");return this.span}replicate(e){const t=Object.create(this.constructor.prototype);return Object.assign(t,this),t.property=e,t}fromArray(e){}}var kp=bp;class vp extends bp{isCount(){throw new Error("ExternalLayout is abstract")}}class Sp extends vp{constructor(e,t,n){if(!(e instanceof bp))throw new TypeError("layout must be a Layout");if(void 0===t)t=0;else if(!Number.isInteger(t))throw new TypeError("offset must be integer or undefined");super(e.span,n||e.property),this.layout=e,this.offset=t}isCount(){return this.layout instanceof Mp||this.layout instanceof Dp}decode(e,t){return void 0===t&&(t=0),this.layout.decode(e,t+this.offset)}encode(e,t,n){return void 0===n&&(n=0),this.layout.encode(e,t,n+this.offset)}}class Mp extends bp{constructor(e,t){if(super(e,t),6e&&t instanceof bp),!0))throw new TypeError("fields must be array of Layout instances");"boolean"==typeof t&&void 0===n&&(n=t,t=void 0);for(const t of e)if(0>t.span&&void 0===t.property)throw new Error("fields cannot contain unnamed variable-length layout");let i=-1;try{i=e.reduce(((e,t)=>e+t.getSpan()),0)}catch(e){}super(i,t),this.fields=e,this.decodePrefixes=!!n}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);let n=0;try{n=this.fields.reduce(((n,i)=>{const r=i.getSpan(e,t);return t+=r,n+r}),0)}catch(e){throw new RangeError("indeterminate span")}return n}decode(e,t){void 0===t&&(t=0);const n=this.makeDestinationObject();for(const i of this.fields)if(void 0!==i.property&&(n[i.property]=i.decode(e,t)),t+=i.getSpan(e,t),this.decodePrefixes&&e.length===t)break;return n}encode(e,t,n){void 0===n&&(n=0);const i=n;let r=0,o=0;for(const i of this.fields){let A=i.span;if(o=0A&&(A=i.getSpan(t,n)))}r=n,n+=A}return r+o-i}fromArray(e){const t=this.makeDestinationObject();for(const n of this.fields)void 0!==n.property&&0n.span?t=-1:0<=t&&(t+=n.span)}}}class Gp{constructor(e){this.property=e}decode(){throw new Error("UnionDiscriminator is abstract")}encode(){throw new Error("UnionDiscriminator is abstract")}}class xp extends Gp{constructor(e,t){if(!(e instanceof vp&&e.isCount()))throw new TypeError("layout must be an unsigned integer ExternalLayout");super(t||e.property||"variant"),this.layout=e}decode(e,t){return this.layout.decode(e,t)}encode(e,t,n){return this.layout.encode(e,t,n)}}class Up extends bp{constructor(e,t,n){const i=e instanceof Mp||e instanceof Dp;if(i)e=new xp(new Sp(e));else if(e instanceof vp&&e.isCount())e=new xp(e);else if(!(e instanceof Gp))throw new TypeError("discr must be a UnionDiscriminator or an unsigned integer layout");if(void 0===t&&(t=null),!(null===t||t instanceof bp))throw new TypeError("defaultLayout must be null or a Layout");if(null!==t){if(0>t.span)throw new Error("defaultLayout must have constant span");void 0===t.property&&(t=t.replicate("content"))}let r=-1;t&&(r=t.span,0<=r&&i&&(r+=e.layout.span)),super(r,n),this.discriminator=e,this.usesPrefixDiscriminator=i,this.defaultLayout=t,this.registry={};let o=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(e){return o(e)},this.configGetSourceVariant=function(e){o=e.bind(this)}}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);const n=this.getVariant(e,t);if(!n)throw new Error("unable to determine span for unrecognized variant");return n.getSpan(e,t)}defaultGetSourceVariant(e){if(e.hasOwnProperty(this.discriminator.property)){if(this.defaultLayout&&e.hasOwnProperty(this.defaultLayout.property))return;const t=this.registry[e[this.discriminator.property]];if(t&&(!t.layout||e.hasOwnProperty(t.property)))return t}else for(const t in this.registry){const n=this.registry[t];if(e.hasOwnProperty(n.property))return n}throw new Error("unable to infer src variant")}decode(e,t){let n;void 0===t&&(t=0);const i=this.discriminator,r=i.decode(e,t);let o=this.registry[r];if(void 0===o){let A=0;o=this.defaultLayout,this.usesPrefixDiscriminator&&(A=i.layout.span),n=this.makeDestinationObject(),n[i.property]=r,n[o.property]=this.defaultLayout.decode(e,t+A)}else n=o.decode(e,t);return n}encode(e,t,n){void 0===n&&(n=0);const i=this.getSourceVariant(e);if(void 0===i){const i=this.discriminator,r=this.defaultLayout;let o=0;return this.usesPrefixDiscriminator&&(o=i.layout.span),i.encode(e[i.property],t,n),o+r.encode(e[r.property],t,n+o)}return i.encode(e,t,n)}addVariant(e,t,n){const i=new _p(this,e,t,n);return this.registry[e]=i,i}getVariant(e,t){let n=e;return Mh.isBuffer(e)&&(void 0===t&&(t=0),n=this.discriminator.decode(e,t)),this.registry[n]}}class _p extends bp{constructor(e,t,n,i){if(!(e instanceof Up))throw new TypeError("union must be a Union");if(!Number.isInteger(t)||0>t)throw new TypeError("variant must be a (non-negative) integer");if("string"==typeof n&&void 0===i&&(i=n,n=null),n){if(!(n instanceof bp))throw new TypeError("layout must be a Layout");if(null!==e.defaultLayout&&0<=n.span&&n.span>e.defaultLayout.span)throw new Error("variant span exceeds span of containing union");if("string"!=typeof i)throw new TypeError("variant must have a String property")}let r=e.span;0>e.span&&(r=n?n.span:0,0<=r&&e.usesPrefixDiscriminator&&(r+=e.discriminator.layout.span)),super(r,i),this.union=e,this.variant=t,this.layout=n||null}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);let n=0;return this.union.usesPrefixDiscriminator&&(n=this.union.discriminator.layout.span),n+this.layout.getSpan(e,t+n)}decode(e,t){const n=this.makeDestinationObject();if(void 0===t&&(t=0),this!==this.union.getVariant(e,t))throw new Error("variant mismatch");let i=0;return this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout?n[this.property]=this.layout.decode(e,t+i):this.property?n[this.property]=!0:this.union.usesPrefixDiscriminator&&(n[this.union.discriminator.property]=this.variant),n}encode(e,t,n){void 0===n&&(n=0);let i=0;if(this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout&&!e.hasOwnProperty(this.property))throw new TypeError("variant lacks property "+this.property);this.union.discriminator.encode(this.variant,t,n);let r=i;if(this.layout&&(this.layout.encode(e[this.property],t,n+i),r+=this.layout.getSpan(t,n+i),0<=this.union.span&&r>this.union.span))throw new Error("encoded variant overruns containing union");return r}fromArray(e){if(this.layout)return this.layout.fromArray(e)}}class Lp extends bp{constructor(e,t){if(!(e instanceof vp&&e.isCount()||Number.isInteger(e)&&0<=e))throw new TypeError("length must be positive integer or an unsigned integer ExternalLayout");let n=-1;e instanceof vp||(n=e),super(n,t),this.length=e}getSpan(e,t){let n=this.span;return 0>n&&(n=this.length.decode(e,t)),n}decode(e,t){void 0===t&&(t=0);let n=this.span;return 0>n&&(n=this.length.decode(e,t)),e.slice(t,t+n)}encode(e,t,n){let i=this.length;if(this.length instanceof vp&&(i=e.length),!Mh.isBuffer(e)||i!==e.length)throw new TypeError((r="Blob.encode",(this.property?r+"["+this.property+"]":r)+" requires (length "+i+") Buffer as src"));var r;if(n+i>t.length)throw new RangeError("encoding overruns Buffer");return t.write(e.toString("hex"),n,i,"hex"),this.length instanceof vp&&this.length.encode(i,t,n),i}}var Kp=(e,t,n)=>new Sp(e,t,n),Yp=e=>new Mp(1,e),jp=e=>new Mp(4,e),Wp=e=>new Op(e),Jp=e=>new Fp(e),qp=(e,t,n)=>new Rp(e,t,n),Zp=(e,t,n)=>new Up(e,t,n),zp=(e,t)=>new Lp(e,t);class Hp{constructor(e){}encode(e,t){switch(kt()(e)){case"initializeMint":return function({decimals:e,mintAuthority:t,freezeAuthority:n}){return $p({initializeMint:{decimals:e,mintAuthority:t.toBuffer(),freezeAuthorityOption:!!n,freezeAuthority:(n||A.PublicKey.default).toBuffer()}})}(t);case"initializeAccount":return $p({initializeAccount:{}});case"initializeMultisig":return function({m:e}){return $p({initializeMultisig:{m:e}})}(t);case"transfer":return function({amount:e}){return $p({transfer:{amount:e}})}(t);case"approve":return function({amount:e}){return $p({approve:{amount:e}})}(t);case"revoke":return $p({revoke:{}});case"setAuthority":return function({authorityType:e,newAuthority:t}){return $p({setAuthority:{authorityType:e,newAuthority:t}})}(t);case"mintTo":return function({amount:e}){return $p({mintTo:{amount:e}})}(t);case"burn":return function({amount:e}){return $p({burn:{amount:e}})}(t);case"closeAccount":return $p({closeAccount:{}});case"freezeAccount":return $p({freezeAccount:{}});case"thawAccount":return $p({thawAccount:{}});case"transferChecked":return function({amount:e,decimals:t}){return $p({transferChecked:{amount:e,decimals:t}})}(t);case"approvedChecked":return function({amount:e,decimals:t}){return $p({approveChecked:{amount:e,decimals:t}})}(t);case"mintToChecked":return function({amount:e,decimals:t}){return $p({mintToChecked:{amount:e,decimals:t}})}(t);case"burnChecked":return function({amount:e,decimals:t}){return $p({burnChecked:{amount:e,decimals:t}})}(t);case"intializeAccount2":return function({authority:e}){return $p({initilaizeAccount2:{authority:e}})}(t);case"syncNative":return $p({syncNative:{}});case"initializeAccount3":return function({authority:e}){return $p({initializeAccount3:{authority:e}})}(t);case"initializeMultisig2":return function({m:e}){return $p({initializeMultisig2:{m:e}})}(t);case"initializeMint2":return function({decimals:e,mintAuthority:t,freezeAuthority:n}){return $p({encodeInitializeMint2:{decimals:e,mintAuthority:t,freezeAuthority:n}})}(t);default:throw new Error(`Invalid instruction: ${e}`)}}encodeState(e,t){throw new Error("SPL token does not have state")}}const Vp=Zp(Yp("instruction"));function Xp(e){return zp(32,e)}function $p(e){let t=Mh.alloc(ef),n=Vp.encode(e,t);return t.slice(0,n)}Vp.addVariant(0,qp([Yp("decimals"),zp(32,"mintAuthority"),Yp("freezeAuthorityOption"),Xp("freezeAuthority")]),"initializeMint"),Vp.addVariant(1,qp([]),"initializeAccount"),Vp.addVariant(2,qp([Yp("m")]),"initializeMultisig"),Vp.addVariant(3,qp([Wp("amount")]),"transfer"),Vp.addVariant(4,qp([Wp("amount")]),"approve"),Vp.addVariant(5,qp([]),"revoke"),Vp.addVariant(6,qp([Yp("authorityType"),Yp("newAuthorityOption"),Xp("newAuthority")]),"setAuthority"),Vp.addVariant(7,qp([Wp("amount")]),"mintTo"),Vp.addVariant(8,qp([Wp("amount")]),"burn"),Vp.addVariant(9,qp([]),"closeAccount"),Vp.addVariant(10,qp([]),"freezeAccount"),Vp.addVariant(11,qp([]),"thawAccount"),Vp.addVariant(12,qp([Wp("amount"),Yp("decimals")]),"transferChecked"),Vp.addVariant(13,qp([Wp("amount"),Yp("decimals")]),"approvedChecked"),Vp.addVariant(14,qp([Wp("amount"),Yp("decimals")]),"mintToChecked"),Vp.addVariant(15,qp([Wp("amount"),Yp("decimals")]),"burnedChecked"),Vp.addVariant(16,qp([Xp("authority")]),"InitializeAccount2"),Vp.addVariant(17,qp([]),"syncNative"),Vp.addVariant(18,qp([Xp("authority")]),"initializeAccount3"),Vp.addVariant(19,qp([Yp("m")]),"initializeMultisig2"),Vp.addVariant(20,qp([Yp("decimals"),Xp("mintAuthority"),Yp("freezeAuthorityOption"),Xp("freezeAuthority")]),"initializeMint2");const ef=Math.max(...Object.values(Vp.registry).map((e=>e.span)));class tf{constructor(e){}encode(e,t){throw new Error("SPL token does not have state")}decode(e){throw new Error("SPL token does not have state")}}function nf(e){return new Af(zp(8),(e=>af.fromBuffer(e)),(e=>e.toBuffer()),e)}function rf(e){return new Af(zp(32),(e=>new A.PublicKey(e)),(e=>e.toBuffer()),e)}function of(e,t){return new sf(e,t)}class Af extends kp{constructor(e,t,n,i){super(e.span,i),this.layout=e,this.decoder=t,this.encoder=n}decode(e,t){return this.decoder(this.layout.decode(e,t))}encode(e,t,n){return this.layout.encode(this.encoder(e),t,n)}getSpan(e,t){return this.layout.getSpan(e,t)}}class sf extends kp{constructor(e,t){super(-1,t),this.layout=e,this.discriminator=jp()}encode(e,t,n=0){return null==e?this.layout.span+this.discriminator.encode(0,t,n):(this.discriminator.encode(1,t,n),this.layout.encode(e,t,n+4)+4)}decode(e,t=0){const n=this.discriminator.decode(e,t);if(0===n)return null;if(1===n)return this.layout.decode(e,t+4);throw new Error("Invalid coption "+this.layout.property)}getSpan(e,t=0){return this.layout.getSpan(e,t+4)+4}}class af extends(y()){toBuffer(){const e=super.toArray().reverse(),t=Mh.from(e);if(8===t.length)return t;if(t.length>=8)throw new Error("u64 too large");const n=Mh.alloc(8);return t.copy(n),n}static fromBuffer(e){if(8!==e.length)throw new Error(`Invalid buffer length: ${e.length}`);return new af([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class cf{constructor(e){this.idl=e}async encode(e,t){switch(e){case"token":{const e=Mh.alloc(165),n=lf.encode(t,e);return e.slice(0,n)}case"mint":{const e=Mh.alloc(82),n=uf.encode(t,e);return e.slice(0,n)}default:throw new Error(`Invalid account name: ${e}`)}}decode(e,t){return this.decodeUnchecked(e,t)}decodeUnchecked(e,t){switch(e){case"token":return function(e){return lf.decode(e)}(t);case"mint":return function(e){return uf.decode(e)}(t);default:throw new Error(`Invalid account name: ${e}`)}}memcmp(e,t){switch(e){case"token":return{dataSize:165};case"mint":return{dataSize:82};default:throw new Error(`Invalid account name: ${e}`)}}size(e){var t;return null!==(t=wp(this.idl,e))&&void 0!==t?t:0}}const uf=qp([of(rf(),"mintAuthority"),nf("supply"),Yp("decimals"),new Af(Yp(),(function(e){if(0===e)return!1;if(1===e)return!0;throw new Error("Invalid bool: "+e)}),(function(e){return e?1:0}),"isInitialized"),of(rf(),"freezeAuthority")]),lf=qp([rf("mint"),rf("authority"),nf("amount"),of(rf(),"delegate"),Yp("state"),of(nf(),"isNative"),nf("delegatedAmount"),of(rf(),"closeAuthority")]);class gf{constructor(e){}decode(e){throw new Error("SPL token program does not have events")}}class df{constructor(e){this.instruction=new Hp(e),this.accounts=new cf(e),this.events=new gf(e),this.state=new tf(e)}}class hf extends kp{constructor(e){super(-1,e),this.property=e,this.layout=qp([jp("length"),jp("lengthPadding"),zp(Kp(jp(),-8),"chars")],this.property)}encode(e,t,n=0){if(null==e)return this.layout.span;const i={chars:Mh.from(e,"utf8")};return this.layout.encode(i,t,n)}decode(e,t=0){return this.layout.decode(e,t).chars.toString()}getSpan(e,t=0){return jp().span+jp().span+new(y())(new Uint8Array(e).slice(t,t+4),10,"le").toNumber()}}function pf(e){return new hf(e)}function ff(e){return zp(32,e)}const mf=Zp(jp("instruction"));mf.addVariant(0,qp([Jp("lamports"),Jp("space"),ff("owner")]),"createAccount"),mf.addVariant(1,qp([ff("owner")]),"assign"),mf.addVariant(2,qp([Jp("lamports")]),"transfer"),mf.addVariant(3,qp([ff("base"),pf("seed"),Jp("lamports"),Jp("space"),ff("owner")]),"createAccountWithSeed"),mf.addVariant(4,qp([ff("authorized")]),"advanceNonceAccount"),mf.addVariant(5,qp([Jp("lamports")]),"withdrawNonceAccount"),mf.addVariant(6,qp([ff("authorized")]),"initializeNonceAccount"),mf.addVariant(7,qp([ff("authorized")]),"authorizeNonceAccount"),mf.addVariant(8,qp([Jp("space")]),"allocate"),mf.addVariant(9,qp([ff("base"),pf("seed"),Jp("space"),ff("owner")]),"allocateWithSeed"),mf.addVariant(10,qp([ff("base"),pf("seed"),ff("owner")]),"assignWithSeed"),mf.addVariant(11,qp([Jp("lamports"),pf("seed"),ff("owner")]),"transferWithSeed"),Math.max(...Object.values(mf.registry).map((e=>e.span)));class If extends kp{constructor(e,t,n,i){super(e.span,i),this.layout=e,this.decoder=t,this.encoder=n}decode(e,t){return this.decoder(this.layout.decode(e,t))}encode(e,t,n){return this.layout.encode(this.encoder(e),t,n)}getSpan(e,t){return this.layout.getSpan(e,t)}}function yf(e){return new If(zp(32),(e=>new A.PublicKey(e)),(e=>e.toBuffer()),e)}qp([jp("version"),jp("state"),yf("authorizedPubkey"),yf("nonce"),qp([Wp("lamportsPerSignature")],"feeCalculator")]);var Bf=Object.freeze({__proto__:null,hash:function(e){return(0,vt.sha256)(e)}});function Cf(e,t){let n=Ct.Buffer.alloc(0);e.forEach((function(e){if(e.length>32)throw new TypeError("Max seed length exceeded");n=Ct.Buffer.concat([n,wf(e)])})),n=Ct.Buffer.concat([n,t.toBuffer(),Ct.Buffer.from("ProgramDerivedAddress")]);let i=(0,vt.sha256)(new Uint8Array(n)),r=new(y())(i,16).toArray(void 0,32);if(A.PublicKey.isOnCurve(new Uint8Array(r)))throw new Error("Invalid seeds, address must fall off the curve");return new A.PublicKey(r)}const wf=e=>e instanceof Ct.Buffer?e:e instanceof Uint8Array?Ct.Buffer.from(e.buffer,e.byteOffset,e.byteLength):Ct.Buffer.from(e);var Ef=Object.freeze({__proto__:null,createWithSeedSync:function(e,t,n){const i=Ct.Buffer.concat([e.toBuffer(),Ct.Buffer.from(t),n.toBuffer()]),r=vt.sha256.digest(i);return new A.PublicKey(Ct.Buffer.from(r))},createProgramAddressSync:Cf,findProgramAddressSync:function(e,t){let n,i=255;for(;0!=i;){try{n=Cf(e.concat(Ct.Buffer.from([i])),t)}catch(e){if(e instanceof TypeError)throw e;i--;continue}return[n,i]}throw new Error("Unable to find a viable program address nonce")},associated:async function(e,...t){let n=[Ct.Buffer.from([97,110,99,104,111,114])];t.forEach((e=>{n.push(e instanceof Ct.Buffer?e:Gh(e).toBuffer())}));const[i]=await A.PublicKey.findProgramAddress(n,Gh(e));return i}});const Qf=new A.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),bf=new A.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");var kf=Object.freeze({__proto__:null,TOKEN_PROGRAM_ID:Qf,ASSOCIATED_PROGRAM_ID:bf,associatedAddress:async function({mint:e,owner:t}){return(await A.PublicKey.findProgramAddress([t.toBuffer(),Qf.toBuffer(),e.toBuffer()],bf))[0]}}),vf={exports:{}};!function(e,t){var n="undefined"!=typeof self?self:Qp,i=function(){function e(){this.fetch=!1,this.DOMException=n.DOMException}return e.prototype=n,new e}();!function(e){!function(t){var n="URLSearchParams"in e,i="Symbol"in e&&"iterator"in Symbol,r="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),o="FormData"in e,A="ArrayBuffer"in e;if(A)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],a=ArrayBuffer.isView||function(e){return e&&s.indexOf(Object.prototype.toString.call(e))>-1};function c(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function u(e){return"string"!=typeof e&&(e=String(e)),e}function l(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return i&&(t[Symbol.iterator]=function(){return t}),t}function g(e){this.map={},e instanceof g?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function d(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function h(e){return new Promise((function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}}))}function p(e){var t=new FileReader,n=h(t);return t.readAsArrayBuffer(e),n}function f(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function m(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:r&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:o&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:n&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():A&&r&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=f(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):A&&(ArrayBuffer.prototype.isPrototypeOf(e)||a(e))?this._bodyArrayBuffer=f(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},r&&(this.blob=function(){var e=d(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?d(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(p)}),this.text=function(){var e=d(this);if(e)return e;if(this._bodyBlob)return function(e){var t=new FileReader,n=h(t);return t.readAsText(e),n}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),i=0;i-1?i:n),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function B(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var n=e.split("="),i=n.shift().replace(/\+/g," "),r=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(i),decodeURIComponent(r))}})),t}function C(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new g(t.headers),this.url=t.url||"",this._initBody(e)}y.prototype.clone=function(){return new y(this,{body:this._bodyInit})},m.call(y.prototype),m.call(C.prototype),C.prototype.clone=function(){return new C(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new g(this.headers),url:this.url})},C.error=function(){var e=new C(null,{status:0,statusText:""});return e.type="error",e};var w=[301,302,303,307,308];C.redirect=function(e,t){if(-1===w.indexOf(t))throw new RangeError("Invalid status code");return new C(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var n=Error(e);this.stack=n.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function E(e,n){return new Promise((function(i,o){var A=new y(e,n);if(A.signal&&A.signal.aborted)return o(new t.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function a(){s.abort()}s.onload=function(){var e,t,n={status:s.status,statusText:s.statusText,headers:(e=s.getAllResponseHeaders()||"",t=new g,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var n=e.split(":"),i=n.shift().trim();if(i){var r=n.join(":").trim();t.append(i,r)}})),t)};n.url="responseURL"in s?s.responseURL:n.headers.get("X-Request-URL");var r="response"in s?s.response:s.responseText;i(new C(r,n))},s.onerror=function(){o(new TypeError("Network request failed"))},s.ontimeout=function(){o(new TypeError("Network request failed"))},s.onabort=function(){o(new t.DOMException("Aborted","AbortError"))},s.open(A.method,A.url,!0),"include"===A.credentials?s.withCredentials=!0:"omit"===A.credentials&&(s.withCredentials=!1),"responseType"in s&&r&&(s.responseType="blob"),A.headers.forEach((function(e,t){s.setRequestHeader(t,e)})),A.signal&&(A.signal.addEventListener("abort",a),s.onreadystatechange=function(){4===s.readyState&&A.signal.removeEventListener("abort",a)}),s.send(void 0===A._bodyInit?null:A._bodyInit)}))}E.polyfill=!0,e.fetch||(e.fetch=E,e.Headers=g,e.Request=y,e.Response=C),t.Headers=g,t.Request=y,t.Response=C,t.fetch=E,Object.defineProperty(t,"__esModule",{value:!0})}({})}(i),i.fetch.ponyfill=!0,delete i.fetch.polyfill;var r=i;(t=r.fetch).default=r.fetch,t.fetch=r.fetch,t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response,e.exports=t}(vf,vf.exports);var Sf=function(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}(vf.exports);async function Mf(e,t){const n=await e.getAccountInfo(t);if(null===n)throw new Error("program account not found");const{program:i}=Nf(n.data),r=await e.getAccountInfo(i.programdataAddress);if(null===r)throw new Error("program data account not found");const{programData:o}=Nf(r.data);return o}const Df=St.rustEnum([St.struct([],"uninitialized"),St.struct([St.option(St.publicKey(),"authorityAddress")],"buffer"),St.struct([St.publicKey("programdataAddress")],"program"),St.struct([St.u64("slot"),St.option(St.publicKey(),"upgradeAuthorityAddress")],"programData")],void 0,St.u32());function Nf(e){return Df.decode(e)}var Tf=Object.freeze({__proto__:null,verifiedBuild:async function(e,t,n=5){const i=`https://anchor.projectserum.com/api/v0/program/${t.toString()}/latest?limit=${n}`,[r,o]=await Promise.all([Mf(e,t),Sf(i)]),A=(await o.json()).filter((e=>!e.aborted&&"Built"===e.state&&"Verified"===e.verified));if(0===A.length)return null;const s=A[0];return r.slot.toNumber()!==s.verified_slot?null:s},fetchData:Mf,decodeUpgradeableLoaderState:Nf});Object.freeze({__proto__:null,sha256:Bf,rpc:up,publicKey:Ef,bytes:Rh,token:kf,features:Ip,registry:Tf}),St.struct([St.publicKey("authority"),St.vecU8("data")]),new Map,new A.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");const Pf={version:"0.1.0",name:"spl_token",instructions:[{name:"initializeMint",accounts:[{name:"mint",isMut:!0,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"decimals",type:"u8"},{name:"mintAuthority",type:"publicKey"},{name:"freezeAuthority",type:{coption:"publicKey"}}]},{name:"initializeAccount",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]},{name:"initializeMultisig",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"m",type:"u8"}]},{name:"transfer",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"destination",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"}]},{name:"approve",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"delegate",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"}]},{name:"revoke",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[]},{name:"setAuthority",accounts:[{name:"mint",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"authorityType",type:"u8"},{name:"newAuthority",type:{coption:"publicKey"}}]},{name:"mintTo",accounts:[{name:"mint",isMut:!0,isSigner:!1},{name:"to",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"}]},{name:"burn",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"}]},{name:"closeAccount",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"destination",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1}],args:[]},{name:"freezeAccount",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[]},{name:"thawAccount",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[]},{name:"transferChecked",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"destination",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]},{name:"approveChecked",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"delegate",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]},{name:"mintToChecked",accounts:[{name:"mint",isMut:!0,isSigner:!1},{name:"to",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]},{name:"burnChecked",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]},{name:"initializeAccount2",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"authority",type:"publicKey"}]},{name:"syncNative",accounts:[{name:"account",isMut:!0,isSigner:!1}],args:[]},{name:"initializeAccount3",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1}],args:[{name:"authority",type:"publicKey"}]},{name:"initializeMultisig2",accounts:[{name:"account",isMut:!0,isSigner:!1}],args:[{name:"m",type:"u8"}]},{name:"initializeMint2",accounts:[{name:"mint",isMut:!0,isSigner:!1}],args:[{name:"decimals",type:"u8"},{name:"mintAuthority",type:"publicKey"},{name:"freezeAuthority",type:{coption:"publicKey"}}]}],accounts:[{name:"mint",type:{kind:"struct",fields:[{name:"mintAuthority",type:{coption:"publicKey"}},{name:"supply",type:"u64"},{name:"decimals",type:"u8"},{name:"isInitialized",type:"bool"},{name:"freezeAuthority",type:{coption:"publicKey"}}]}},{name:"token",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"authority",type:"publicKey"},{name:"amount",type:"u64"},{name:"delegate",type:{coption:"publicKey"}},{name:"state",type:"u8"},{name:"isNative",type:{coption:"u64"}},{name:"delegatedAmount",type:"u64"},{name:"closeAuthority",type:{coption:"publicKey"}}]}}]};class Of{constructor(e,t,n,i,r,o){this._args=e,this._accounts=t,this._provider=n,this._programId=i,this._idlIx=r,this._accountStore=new Ff(n,o)}async resolve(){for(let e=0;e0&&!this._accounts[n]&&await this.autoPopulatePda(t)}}async autoPopulatePda(e){if(!e.pda||!e.pda.seeds)throw new Error("Must have seeds");const t=await Promise.all(e.pda.seeds.map((e=>this.toBuffer(e)))),n=await this.parseProgramId(e),[i]=await A.PublicKey.findProgramAddress(t,n);this._accounts[kt()(e.name)]=i}async parseProgramId(e){var t;if(!(null===(t=e.pda)||void 0===t?void 0:t.programId))return this._programId;switch(e.pda.programId.kind){case"const":return new A.PublicKey(this.toBufferConst(e.pda.programId.value));case"arg":return this.argValue(e.pda.programId);case"account":return await this.accountValue(e.pda.programId);default:throw new Error(`Unexpected program seed kind: ${e.pda.programId.kind}`)}}async toBuffer(e){switch(e.kind){case"const":return this.toBufferConst(e);case"arg":return await this.toBufferArg(e);case"account":return await this.toBufferAccount(e);default:throw new Error(`Unexpected seed kind: ${e.kind}`)}}toBufferConst(e){return this.toBufferValue(e.type,e.value)}async toBufferArg(e){const t=this.argValue(e);return this.toBufferValue(e.type,t)}argValue(e){const t=kt()(e.path.split(".")[0]),n=this._idlIx.args.findIndex((e=>e.name===t));if(-1===n)throw new Error(`Unable to find argument for seed: ${t}`);return this._args[n]}async toBufferAccount(e){const t=await this.accountValue(e);return this.toBufferValue(e.type,t)}async accountValue(e){const t=e.path.split("."),n=t[0],i=this._accounts[kt()(n)];if(1===t.length)return i;const r=await this._accountStore.fetchAccount(e.account,i);return this.parseAccountValue(r,t.slice(1))}parseAccountValue(e,t){let n;for(;t.length>0;)n=e[kt()(t[0])],t=t.slice(1);return n}toBufferValue(e,t){switch(e){case"u8":return Mh.from([t]);case"u16":let n=Mh.alloc(2);return n.writeUInt16LE(t),n;case"u32":let i=Mh.alloc(4);return i.writeUInt32LE(t),i;case"u64":let r=Mh.alloc(8);return r.writeBigUInt64LE(BigInt(t)),r;case"string":return Mh.from(Nh(t));case"publicKey":return t.toBuffer();default:if(e.array)return Mh.from(t);throw new Error(`Unexpected seed type: ${e}`)}}}Of.CONST_ACCOUNTS={systemProgram:A.SystemProgram.programId,tokenProgram:Qf,associatedTokenProgram:bf,rent:A.SYSVAR_RENT_PUBKEY};class Ff{constructor(e,t){this._provider=e,this._accounts=t,this._cache=new Map}async fetchAccount(e,t){const n=t.toString();if(!this._cache.has(n))if("TokenAccount"===e){const e=await this._provider.connection.getAccountInfo(t);if(null===e)throw new Error(`invalid account info for ${n}`);const i=new df(Pf).accounts.decode("token",e.data);this._cache.set(n,i)}else{const i=this._accounts[kt()(e)].fetch(t);this._cache.set(n,i)}return this._cache.get(n)}}new A.PublicKey("11111111111111111111111111111111"),i(28145),i(72100),i(11565),i(76708),i(55872).Buffer;var Rf=i(49500),Gf=new(y())(0),xf=(new(y())(1),new(y())(2),new(y())(3),new(y())(4),new(y())(5),new(y())(6)),Uf=(new(y())(7),new(y())(8),new(y())(9),new(y())(10),new(y())(1e4)),_f=(new(y())(Number.MAX_SAFE_INTEGER),Uf.mul(Uf),new(y())(5),new(y())(6)),Lf=(new(y())(10).pow(_f),new(y())(6)),Kf=new(y())(3),Yf=new(y())(6),jf=Yf.add(Kf),Wf=new(y())(6),Jf=new(y())(9),qf=new(y())(6),Zf=(new(y())(10).pow(qf),new(y())(10)),zf=(new(y())(10).pow(Zf),new(y())(6)),Hf=(new(y())(10).pow(zf),new(y())(1e4),new(y())(9)),Vf=(new(y())(10).pow(Hf),new(y())(6)),Xf=(new(y())(10).pow(Vf),new(y())(1e6),new(y())(10).pow(Lf)),$f=new(y())(10).pow(Yf),em=(new(y())(10).pow(jf),new(y())(10).pow(Kf),new(y())(10).pow(Wf)),tm=new(y())(10).pow(Jf);tm.div(Xf),$f.div(em),$f.div(Xf),tm.mul(em).div(Xf),new(y())(1e6),new(y())(31536e3),new(y())(A.LAMPORTS_PER_SOL),new(y())(Math.log10(A.LAMPORTS_PER_SOL));Xf.div(new(y())(100)),new(y())(-25).mul(Xf);var nm=class{};nm.ACTIVE={active:{}},nm.FUNDING_PAUSED={fundingPaused:{}},nm.AMM_PAUSED={ammPaused:{}},nm.FILL_PAUSED={fillPaused:{}},nm.LIQ_PAUSED={liqPaused:{}},nm.WITHDRAW_PAUSED={withdrawPaused:{}},nm.PAUSED={paused:{}};var im=class{};im.INITIALIZED={initialized:{}},im.ACTIVE={active:{}},im.FUNDING_PAUSED={fundingPaused:{}},im.AMM_PAUSED={ammPaused:{}},im.FILL_PAUSED={fillPaused:{}},im.WITHDRAW_PAUSED={withdrawPaused:{}},im.REDUCE_ONLY={reduceOnly:{}},im.SETTLEMENT={settlement:{}},im.DELISTED={delisted:{}};var rm=class{};rm.ACTIVE={active:{}},rm.BEING_LIQUIDATED={beingLiquidated:{}},rm.BANKRUPT={bankrupt:{}};var om=class{};om.PERPETUAL={perpetual:{}},om.FUTURE={future:{}};var Am=class{};Am.A={a:{}},Am.B={b:{}},Am.C={c:{}},Am.SPECULATIVE={speculative:{}},Am.ISOLATED={isolated:{}};var sm=class{};sm.COLLATERAL={collateral:{}},sm.PROTECTED={protected:{}},sm.CROSS={cross:{}},sm.ISOLATED={isolated:{}},sm.UNLISTED={unlisted:{}};var am=class{};am.ADD={add:{}},am.REMOVE={remove:{}};var cm=class{};cm.DEPOSIT={deposit:{}},cm.BORROW={borrow:{}};var um=class{};um.LONG={long:{}},um.SHORT={short:{}};var lm=class{};lm.DEPOSIT={deposit:{}},lm.WITHDRAW={withdraw:{}};var gm=class{};gm.PYTH={pyth:{}},gm.SWITCHBOARD={switchboard:{}},gm.QUOTE_ASSET={quoteAsset:{}};var dm=class{};dm.LIMIT={limit:{}},dm.TRIGGER_MARKET={triggerMarket:{}},dm.TRIGGER_LIMIT={triggerLimit:{}},dm.MARKET={market:{}},dm.ORACLE={oracle:{}};var hm=class{};hm.SPOT={spot:{}},hm.PERP={perp:{}};var pm=class{};pm.INIT={init:{}},pm.OPEN={open:{}};var fm=class{};fm.PLACE={place:{}},fm.CANCEL={cancel:{}},fm.EXPIRE={expire:{}},fm.FILL={fill:{}},fm.TRIGGER={trigger:{}};var mm=class{};mm.NONE={none:{}},mm.INSUFFICIENT_FREE_COLLATERAL={insufficientFreeCollateral:{}},mm.ORACLE_PRICE_BREACHED_LIMIT_PRICE={oraclePriceBreachedLimitPrice:{}},mm.MARKET_ORDER_FILLED_TO_LIMIT_PRICE={marketOrderFilledToLimitPrice:{}},mm.ORDER_EXPIRED={orderExpired:{}},mm.LIQUIDATION={liquidation:{}},mm.ORDER_FILLED_WITH_AMM={orderFilledWithAmm:{}},mm.ORDER_FILLED_WITH_AMM_JIT={orderFilledWithAmmJit:{}},mm.ORDER_FILLED_WITH_MATCH={orderFilledWithMatch:{}},mm.ORDER_FILLED_WITH_MATCH_JIT={orderFilledWithMatchJit:{}},mm.MARKET_EXPIRED={marketExpired:{}},mm.RISK_INCREASING_ORDER={riskingIncreasingOrder:{}},mm.ORDER_FILLED_WITH_SERUM={orderFillWithSerum:{}},mm.REDUCE_ONLY_ORDER_INCREASED_POSITION={reduceOnlyOrderIncreasedPosition:{}};var Im=class{};Im.ABOVE={above:{}},Im.BELOW={below:{}},Im.TRIGGERED_ABOVE={triggeredAbove:{}},Im.TRIGGERED_BELOW={triggeredBelow:{}};var ym=class{};ym.ENABLED={enabled:{}},ym.DISABLED={disabled:{}};var Bm=class{};Bm.NONE={none:{}},Bm.TRANSFER={transfer:{}};var Cm=class{};Cm.NONE={none:{}},Cm.EXPIRED_POSITION={expiredPosition:{}};var wm=class{};wm.ENABLED={enabled:{}},wm.DISABLED={disabled:{}};var Em=class{};Em.STAKE={stake:{}},Em.UNSTAKE_REQUEST={unstakeRequest:{}},Em.UNSTAKE_CANCEL_REQUEST={unstakeCancelRequest:{}},Em.UNSTAKE={unstake:{}};var Qm=class{};Qm.ADD_LIQUIDITY={addLiquidity:{}},Qm.REMOVE_LIQUIDITY={removeLiquidity:{}},Qm.SETTLE_LIQUIDITY={settleLiquidity:{}};var bm=class{};function km(e,t){if(!e)throw new Error(t||"Unspecified AssertionError")}bm.LIQUIDATE_PERP={liquidatePerp:{}},bm.LIQUIDATE_BORROW_FOR_PERP_PNL={liquidateBorrowForPerpPnl:{}},bm.LIQUIDATE_PERP_PNL_FOR_DEPOSIT={liquidatePerpPnlForDeposit:{}},bm.PERP_BANKRUPTCY={perpBankruptcy:{}},bm.BORROW_BANKRUPTCY={borrowBankruptcy:{}},bm.LIQUIDATE_SPOT={liquidateSpot:{}},dm.MARKET,hm.PERP,um.LONG,Im.ABOVE,new A.PublicKey("J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix"),gm.PYTH,new A.PublicKey("HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J"),gm.PYTH,new A.PublicKey("EdVCmQ9FSPcVe5YySXDPCRmc8aDQLKJ9xvYBMZPie1Vw"),gm.PYTH,new A.PublicKey("H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG"),gm.PYTH,new A.PublicKey("GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU"),gm.PYTH,new A.PublicKey("JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB"),gm.PYTH,Error,new(y())(0),new(y())(1);var vm=new A.PublicKey("So11111111111111111111111111111111111111112");A.PublicKey.default,gm.QUOTE_ASSET,new A.PublicKey("8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2"),new(y())(10).pow(xf),new A.PublicKey("J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix"),gm.PYTH,new A.PublicKey(vm),new A.PublicKey("8N37SsnTu8RYxtjrV9SStjkkwVhmU8aCWhLvwduAPEKW"),new A.PublicKey("HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J"),gm.PYTH,new A.PublicKey("3BZPwbcqB5kKScF3TEXxwNfx5ipV13kbRVDvfVp5c6fv"),new(y())(10).pow(xf),new A.PublicKey("AGsmbVu3MS9u68GEYABWosQQCZwmLcBHu4pWEuBYH7Za"),A.PublicKey.default,gm.QUOTE_ASSET,new A.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),new A.PublicKey("H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG"),gm.PYTH,new A.PublicKey(vm),new A.PublicKey("8BnEgHoWFysVcuFFX7QztDmzuH8r5ZFvyP3sYwn1XTh6"),new(y())(1e3);var Sm=class{constructor(e,t=new(y())(0)){this.toString=(e,t)=>this.val.toString(e,t),this.val=new(y())(e),this.precision=new(y())(t)}static setLocale(e){Sm.delim=1.1.toLocaleString(e).slice(1,2)||".",Sm.spacer=1e3.toLocaleString(e).slice(1,2)||","}bigNumFromParam(e){return y().isBN(e)?Sm.from(e):e}add(e){return km(e.precision.eq(this.precision),"Adding unequal precisions"),Sm.from(this.val.add(e.val),this.precision)}sub(e){return km(e.precision.eq(this.precision),"Subtracting unequal precisions"),Sm.from(this.val.sub(e.val),this.precision)}mul(e){const t=this.bigNumFromParam(e);return Sm.from(this.val.mul(t.val),this.precision.add(t.precision))}scalarMul(e){return y().isBN(e)?Sm.from(this.val.mul(e),this.precision):Sm.from(this.val.mul(e.val),this.precision.add(e.precision)).shift(e.precision.neg())}div(e){return y().isBN(e)?Sm.from(this.val.div(e),this.precision):Sm.from(this.val.div(e.val),this.precision.sub(e.precision))}shift(e,t=!1){const n="number"==typeof e?new(y())(e):e;return Sm.from(n.isNeg()?this.val.div(new(y())(10).pow(n)):this.val.mul(new(y())(10).pow(n)),t?this.precision:this.precision.add(n))}shiftTo(e){return this.shift(e.sub(this.precision))}scale(e,t){return this.mul(Sm.from(new(y())(e))).div(new(y())(t))}toPercentage(e,t){return this.shift(t).shift(2,!0).div(e).toPrecision(t)}gt(e,t){const n=this.bigNumFromParam(e);return t||n.eq(Gf)||km(n.precision.eq(this.precision),"Trying to compare numbers with different precision. Yo can opt to ignore precision using the ignorePrecision parameter"),this.val.gt(n.val)}lt(e,t){const n=this.bigNumFromParam(e);return t||n.val.eq(Gf)||km(n.precision.eq(this.precision),"Trying to compare numbers with different precision. Yo can opt to ignore precision using the ignorePrecision parameter"),this.val.lt(n.val)}gte(e,t){const n=this.bigNumFromParam(e);return t||n.val.eq(Gf)||km(n.precision.eq(this.precision),"Trying to compare numbers with different precision. Yo can opt to ignore precision using the ignorePrecision parameter"),this.val.gte(n.val)}lte(e,t){const n=this.bigNumFromParam(e);return t||n.val.eq(Gf)||km(n.precision.eq(this.precision),"Trying to compare numbers with different precision. Yo can opt to ignore precision using the ignorePrecision parameter"),this.val.lte(n.val)}eq(e,t){const n=this.bigNumFromParam(e);return t||n.val.eq(Gf)||km(n.precision.eq(this.precision),"Trying to compare numbers with different precision. Yo can opt to ignore precision using the ignorePrecision parameter"),this.val.eq(n.val)}eqZero(){return this.val.eq(Gf)}gtZero(){return this.val.gt(Gf)}ltZero(){return this.val.lt(Gf)}gteZero(){return this.val.gte(Gf)}lteZero(){return this.val.lte(Gf)}abs(){return new Sm(this.val.abs(),this.precision)}neg(){return new Sm(this.val.neg(),this.precision)}print(){km(this.precision.gte(Gf),"Tried to print a BN with precision lower than zero");const e=this.isNeg(),t=this.abs().toString(),n=this.precision.toNumber();let i=[...Array(this.precision.toNumber()).fill(0),...t.split("")].join("");return i=i.substring(0,i.length-n)+Sm.delim+i.substring(i.length-n),i=i.replace(/^0+/,""),i[0]===Sm.delim&&(i=`0${i}`),e&&(i=`-${i}`),i[i.length-1]===Sm.delim&&(i=i.slice(0,i.length-1)),i}prettyPrint(e,t){const[n,i]=this.printShort(e,t).split(Sm.delim);let r=n;const o=r.includes("-");o&&(r=r.replace("-",""));let A=r.length-3;for(;A>=1;){const e=r.split("");e.splice(A,0,Sm.spacer),r=e.join(""),A-=3}return`${o?"-":""}${r}${i?`${Sm.delim}${i}`:""}`}printShort(e,t){const n=t?this.toPrecision(t):e?this.toTradePrecision():this.print();return n.includes(Sm.delim)?n.replace(/0+$/g,"").replace(/\.$/,"").replace(/,$/,""):n}debug(){Rf.log(`${this.toString()} | ${this.print()} | ${this.precision.toString()}`)}toFixed(e,t=!1){if(t)return this.toRounded(e).toFixed(e);const n=this.print(),[i,r]=n.split(Sm.delim),o=[...(null!=r?r:"").slice(0,e),...Array(e).fill("0")].slice(0,e).join("");return`${i}${Sm.delim}${o}`}getZeroes(e){return new Array(Math.max(e,0)).fill("0").join("")}toRounded(e){const t=this.toString();let n=!1;const i=t[e];if(i&&Number(i)>=5&&(n=!0),n){const n=this.add(Sm.from(new(y())(10).pow(new(y())(t.length-e)),this.precision)).toString().slice(0,e)+this.getZeroes(t.length-e);return Sm.from(n,this.precision)}{const n=t.slice(0,e)+this.getZeroes(t.length-e);return Sm.from(n,this.precision)}}toPrecision(e,t=!1,n=!1){if(n)return this.toRounded(e).toPrecision(e,t);const i=this.isNeg(),r=this.abs().print(),o=this.abs().toString();let A=r.slice(0,e+1);if(!r.includes(Sm.delim)&&o.length=e?`${s}`:`${s.slice(0,a)}${Sm.delim}${s.slice(a)}`,`${n?"-":""}${c}${A}`}toJSON(){return{val:this.val.toString(),precision:this.precision.toString()}}isNeg(){return this.lt(Gf,!0)}isPos(){return!this.isNeg()}toNum(){let e=this.print();return"."===Sm.delim&&","===Sm.spacer||(e=e.split("").map((e=>e===Sm.delim?".":e===Sm.spacer?",":e)).join("")),parseFloat(e)}static fromJSON(e){return Sm.from(new(y())(e.val),new(y())(e.precision))}static from(e=Gf,t){return km(new(y())(t).lt(new(y())(100)),"Tried to create a bignum with precision higher than 10^100"),new Sm(e,t)}static fromPrint(e,t){var n;if(!e)return Sm.from(Gf,t);if(!e.replace(Sm.delim,""))return Sm.from(Gf,t);const i=e.split(Sm.delim),r=i[1],o=i[0].replace(/\s/g,""),A=`${null!=o?o:""}${null!=r?r:""}`,s=new(y())(A),a=null!=(n=null==r?void 0:r.length)?n:0,c=t?t.sub(new(y())(a)):Gf;return Sm.from(s,t).shift(c,!0)}static max(e,t){return e.gt(t)?e:t}static min(e,t){return e.lt(t)?e:t}static zero(e){return Sm.from(0,e)}},Mm=Sm;Mm.delim=".",Mm.spacer=",",Symbol.iterator,i(55872).Buffer;const Dm=e=>{var t,n;return null!==(n=null===(t=e.errors)||void 0===t?void 0:t.reduce(((e,t)=>({...e,[t.name]:t})),{}))&&void 0!==n?n:{}};var Nm=i(51301),Tm=i.n(Nm);var Pm=i(37033),Om=i.n(Pm);const Fm="AnchorProvider"in r?r.AnchorProvider:r.Provider,Rm=(e,t,n)=>{return new Mr(e,t.toString(),(r=(i=n).connection,o=i.wallet,A=i.opts,new Fm(r,o,A)));var i,r,o,A};class Gm{constructor(e,t){var n,i;this.address=e,this.idl=t,this.coder=new Ai(t),this.eventParser=new yr(e,this.coder),this.accounts=((e,t,n)=>{const i={};return t.forEach((t=>{i[Tm()(t.name)]={programID:e,name:t.name,encode:e=>n.encode(t.name,e),parse:e=>n.decode(t.name,e),idl:t,size:n.size(t),discriminator:ti.accountDiscriminator(t.name)}})),i})(e,null!==(n=t.accounts)&&void 0!==n?n:[],this.coder.accounts),this.errorMap=Dm(t);const r=Object.values(this.accounts),o={};var A,s;r.forEach((e=>{o[e.name]=e.idl})),this.accountParsers=(A=null===(i=t.accounts)||void 0===i?void 0:i.map((e=>e.name)),s=this.coder.accounts,(null!=A?A:[]).reduce(((e,t)=>(e[Tm()(t)]=e=>s.decode(t,e),e)),{})),this.accountTypeDefs=o,this.discriminators=r.reduce(((e,t)=>({...e,[t.discriminator.toString("hex")]:t.name})),{}),this.discriminatorsByAccount=r.reduce(((e,t)=>({...e,[t.name]:t.discriminator})),{})}makeGPAFilter(e,...t){return[{memcmp:{offset:0,bytes:Ar.bytes.bs58.encode(this.discriminatorsByAccount[e])}},...t]}parseProgramLogEvents(e){if(!e)return[];const t=[],n=this.eventParser.parseLogs(null!=e?e:[]);let i=n.next();for(;!i.done;)t.push(i.value),i=n.next();return t}encodeIX(e,t,n){const i=this.idl.instructions.find((t=>t.name===e));if(!i)throw new Error(`could not find ix: ${e}`);const r=this.coder.instruction.encode(e,t),o=Om().accountsArray(n,i.accounts,e);return new A.TransactionInstruction({programId:this.address,keys:o,data:r})}parseInstruction(e){const t=this.coder.instruction.decode(e.data);if(!t)throw new Error("could not decode ix data");const n=this.coder.instruction.format(t,e.keys);if(!n)throw new Error("invalid instruction");return{...n,name:t.name}}getProgram(e){return Rm(this.idl,this.address,e)}}const xm={version:"5.0.2",name:"quarry_mine",instructions:[{name:"newRewarder",accounts:[{name:"base",isMut:!1,isSigner:!0},{name:"rewarder",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"Rewarder"},{kind:"account",type:"publicKey",path:"base"}]}},{name:"initialAuthority",isMut:!1,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"unusedAccount",isMut:!1,isSigner:!1},{name:"mintWrapper",isMut:!1,isSigner:!1},{name:"rewardsTokenMint",isMut:!1,isSigner:!1},{name:"claimFeeTokenAccount",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"}]},{name:"newRewarderV2",accounts:[{name:"base",isMut:!1,isSigner:!0},{name:"rewarder",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"Rewarder"},{kind:"account",type:"publicKey",path:"base"}]}},{name:"initialAuthority",isMut:!1,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"mintWrapper",isMut:!1,isSigner:!1},{name:"rewardsTokenMint",isMut:!1,isSigner:!1},{name:"claimFeeTokenAccount",isMut:!1,isSigner:!1}],args:[]},{name:"setPauseAuthority",accounts:[{name:"auth",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"rewarder",isMut:!0,isSigner:!1}]},{name:"newPauseAuthority",isMut:!1,isSigner:!1}],args:[]},{name:"pause",accounts:[{name:"pauseAuthority",isMut:!1,isSigner:!0},{name:"rewarder",isMut:!0,isSigner:!1}],args:[]},{name:"unpause",accounts:[{name:"pauseAuthority",isMut:!1,isSigner:!0},{name:"rewarder",isMut:!0,isSigner:!1}],args:[]},{name:"transferAuthority",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"rewarder",isMut:!0,isSigner:!1}],args:[{name:"newAuthority",type:"publicKey"}]},{name:"acceptAuthority",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"rewarder",isMut:!0,isSigner:!1}],args:[]},{name:"setAnnualRewards",accounts:[{name:"auth",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"rewarder",isMut:!0,isSigner:!1}]}],args:[{name:"newRate",type:"u64"}]},{name:"createQuarry",accounts:[{name:"quarry",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"Quarry"},{kind:"account",type:{defined:"Account<'info,Rewarder>"},account:"MutableRewarderWithAuthority",path:"auth.rewarder"},{kind:"account",type:"publicKey",account:"Mint",path:"token_mint"}]}},{name:"auth",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"rewarder",isMut:!0,isSigner:!1}]},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"unusedAccount",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"}]},{name:"createQuarryV2",accounts:[{name:"quarry",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"Quarry"},{kind:"account",type:{defined:"Account<'info,Rewarder>"},account:"MutableRewarderWithAuthority",path:"auth.rewarder"},{kind:"account",type:"publicKey",account:"Mint",path:"token_mint"}]}},{name:"auth",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"rewarder",isMut:!0,isSigner:!1}]},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setRewardsShare",accounts:[{name:"auth",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"rewarder",isMut:!0,isSigner:!1}]},{name:"quarry",isMut:!0,isSigner:!1}],args:[{name:"newShare",type:"u64"}]},{name:"setFamine",accounts:[{name:"auth",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"rewarder",isMut:!1,isSigner:!1}]},{name:"quarry",isMut:!0,isSigner:!1}],args:[{name:"famineTs",type:"i64"}]},{name:"updateQuarryRewards",accounts:[{name:"quarry",isMut:!0,isSigner:!1},{name:"rewarder",isMut:!1,isSigner:!1}],args:[]},{name:"createMiner",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"miner",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"Miner"},{kind:"account",type:"publicKey",account:"Quarry",path:"quarry"},{kind:"account",type:"publicKey",path:"authority"}]}},{name:"quarry",isMut:!0,isSigner:!1},{name:"rewarder",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"minerVault",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"}]},{name:"createMinerV2",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"miner",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"Miner"},{kind:"account",type:"publicKey",account:"Quarry",path:"quarry"},{kind:"account",type:"publicKey",path:"authority"}]}},{name:"quarry",isMut:!0,isSigner:!1},{name:"rewarder",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"minerVault",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimRewards",accounts:[{name:"mintWrapper",isMut:!0,isSigner:!1},{name:"mintWrapperProgram",isMut:!1,isSigner:!1},{name:"minter",isMut:!0,isSigner:!1},{name:"rewardsTokenMint",isMut:!0,isSigner:!1},{name:"rewardsTokenAccount",isMut:!0,isSigner:!1},{name:"claimFeeTokenAccount",isMut:!0,isSigner:!1},{name:"claim",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"miner",isMut:!0,isSigner:!1},{name:"quarry",isMut:!0,isSigner:!1},{name:"unusedMinerVault",isMut:!1,isSigner:!1},{name:"unusedTokenAccount",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rewarder",isMut:!1,isSigner:!1}]}],args:[]},{name:"claimRewardsV2",accounts:[{name:"mintWrapper",isMut:!0,isSigner:!1},{name:"mintWrapperProgram",isMut:!1,isSigner:!1},{name:"minter",isMut:!0,isSigner:!1},{name:"rewardsTokenMint",isMut:!0,isSigner:!1},{name:"rewardsTokenAccount",isMut:!0,isSigner:!1},{name:"claimFeeTokenAccount",isMut:!0,isSigner:!1},{name:"claim",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"miner",isMut:!0,isSigner:!1},{name:"quarry",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rewarder",isMut:!1,isSigner:!1}]}],args:[]},{name:"stakeTokens",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"miner",isMut:!0,isSigner:!1},{name:"quarry",isMut:!0,isSigner:!1},{name:"minerVault",isMut:!0,isSigner:!1},{name:"tokenAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rewarder",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdrawTokens",accounts:[{name:"authority",isMut:!1,isSigner:!0},{name:"miner",isMut:!0,isSigner:!1},{name:"quarry",isMut:!0,isSigner:!1},{name:"minerVault",isMut:!0,isSigner:!1},{name:"tokenAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rewarder",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"rescueTokens",accounts:[{name:"miner",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0},{name:"minerTokenAccount",isMut:!0,isSigner:!1},{name:"destinationTokenAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"extractFees",accounts:[{name:"rewarder",isMut:!1,isSigner:!1},{name:"claimFeeTokenAccount",isMut:!0,isSigner:!1},{name:"feeToTokenAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"Rewarder",type:{kind:"struct",fields:[{name:"base",type:"publicKey"},{name:"bump",type:"u8"},{name:"authority",type:"publicKey"},{name:"pendingAuthority",type:"publicKey"},{name:"numQuarries",type:"u16"},{name:"annualRewardsRate",type:"u64"},{name:"totalRewardsShares",type:"u64"},{name:"mintWrapper",type:"publicKey"},{name:"rewardsTokenMint",type:"publicKey"},{name:"claimFeeTokenAccount",type:"publicKey"},{name:"maxClaimFeeMillibps",type:"u64"},{name:"pauseAuthority",type:"publicKey"},{name:"isPaused",type:"bool"}]}},{name:"Quarry",type:{kind:"struct",fields:[{name:"rewarder",type:"publicKey"},{name:"tokenMintKey",type:"publicKey"},{name:"bump",type:"u8"},{name:"index",type:"u16"},{name:"tokenMintDecimals",type:"u8"},{name:"famineTs",type:"i64"},{name:"lastUpdateTs",type:"i64"},{name:"rewardsPerTokenStored",type:"u128"},{name:"annualRewardsRate",type:"u64"},{name:"rewardsShare",type:"u64"},{name:"totalTokensDeposited",type:"u64"},{name:"numMiners",type:"u64"}]}},{name:"Miner",type:{kind:"struct",fields:[{name:"quarry",type:"publicKey"},{name:"authority",type:"publicKey"},{name:"bump",type:"u8"},{name:"tokenVaultKey",type:"publicKey"},{name:"rewardsEarned",type:"u64"},{name:"rewardsPerTokenPaid",type:"u128"},{name:"balance",type:"u64"},{name:"index",type:"u64"}]}}],types:[{name:"StakeAction",type:{kind:"enum",variants:[{name:"Stake"},{name:"Withdraw"}]}}],events:[{name:"MinerCreateEvent",fields:[{name:"authority",type:"publicKey",index:!1},{name:"quarry",type:"publicKey",index:!1},{name:"miner",type:"publicKey",index:!1}]},{name:"NewRewarderEvent",fields:[{name:"authority",type:"publicKey",index:!1},{name:"timestamp",type:"i64",index:!1}]},{name:"ClaimEvent",fields:[{name:"authority",type:"publicKey",index:!1},{name:"stakedToken",type:"publicKey",index:!1},{name:"rewardsToken",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"fees",type:"u64",index:!1},{name:"timestamp",type:"i64",index:!1}]},{name:"StakeEvent",fields:[{name:"authority",type:"publicKey",index:!1},{name:"token",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"timestamp",type:"i64",index:!1}]},{name:"WithdrawEvent",fields:[{name:"authority",type:"publicKey",index:!1},{name:"token",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"timestamp",type:"i64",index:!1}]},{name:"RewarderAnnualRewardsUpdateEvent",fields:[{name:"previousRate",type:"u64",index:!1},{name:"newRate",type:"u64",index:!1},{name:"timestamp",type:"i64",index:!1}]},{name:"QuarryCreateEvent",fields:[{name:"tokenMint",type:"publicKey",index:!1},{name:"timestamp",type:"i64",index:!1}]},{name:"QuarryRewardsUpdateEvent",fields:[{name:"tokenMint",type:"publicKey",index:!1},{name:"annualRewardsRate",type:"u64",index:!1},{name:"rewardsShare",type:"u64",index:!1},{name:"timestamp",type:"i64",index:!1}]}],errors:[{code:6e3,name:"Unauthorized",msg:"You are not authorized to perform this action."},{code:6001,name:"InsufficientBalance",msg:"Insufficient staked balance for withdraw request."},{code:6002,name:"PendingAuthorityNotSet",msg:"Pending authority not set"},{code:6003,name:"InvalidRewardsShare",msg:"Invalid quarry rewards share"},{code:6004,name:"InsufficientAllowance",msg:"Insufficient allowance."},{code:6005,name:"NewVaultNotEmpty",msg:"New vault not empty."},{code:6006,name:"NotEnoughTokens",msg:"Not enough tokens."},{code:6007,name:"InvalidTimestamp",msg:"Invalid timestamp."},{code:6008,name:"InvalidMaxClaimFee",msg:"Invalid max claim fee."},{code:6009,name:"MaxAnnualRewardsRateExceeded",msg:"Max annual rewards rate exceeded."},{code:6010,name:"Paused",msg:"Rewarder is paused."},{code:6011,name:"UpperboundExceeded",msg:"Rewards earned exceeded quarry's upper bound."}]},Um=(Dm(xm),{version:"5.0.2",name:"quarry_mint_wrapper",instructions:[{name:"newWrapper",accounts:[{name:"base",isMut:!1,isSigner:!0},{name:"mintWrapper",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"MintWrapper"},{kind:"account",type:"publicKey",path:"base"}]}},{name:"admin",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"},{name:"hardCap",type:"u64"}]},{name:"newWrapperV2",accounts:[{name:"base",isMut:!1,isSigner:!0},{name:"mintWrapper",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"MintWrapper"},{kind:"account",type:"publicKey",path:"base"}]}},{name:"admin",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"hardCap",type:"u64"}]},{name:"transferAdmin",accounts:[{name:"mintWrapper",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0},{name:"nextAdmin",isMut:!1,isSigner:!1}],args:[]},{name:"acceptAdmin",accounts:[{name:"mintWrapper",isMut:!0,isSigner:!1},{name:"pendingAdmin",isMut:!1,isSigner:!0}],args:[]},{name:"newMinter",accounts:[{name:"auth",accounts:[{name:"mintWrapper",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0}]},{name:"newMinterAuthority",isMut:!1,isSigner:!1},{name:"minter",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"MintWrapperMinter"},{kind:"account",type:{defined:"Account<'info,MintWrapper>"},account:"OnlyAdmin",path:"auth.mint_wrapper"},{kind:"account",type:"publicKey",path:"new_minter_authority"}]}},{name:"payer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"}]},{name:"newMinterV2",accounts:[{name:"auth",accounts:[{name:"mintWrapper",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0}]},{name:"newMinterAuthority",isMut:!1,isSigner:!1},{name:"minter",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"MintWrapperMinter"},{kind:"account",type:{defined:"Account<'info,MintWrapper>"},account:"OnlyAdmin",path:"auth.mint_wrapper"},{kind:"account",type:"publicKey",path:"new_minter_authority"}]}},{name:"payer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"minterUpdate",accounts:[{name:"auth",accounts:[{name:"mintWrapper",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0}]},{name:"minter",isMut:!0,isSigner:!1}],args:[{name:"allowance",type:"u64"}]},{name:"performMint",accounts:[{name:"mintWrapper",isMut:!0,isSigner:!1},{name:"minterAuthority",isMut:!1,isSigner:!0},{name:"tokenMint",isMut:!0,isSigner:!1},{name:"destination",isMut:!0,isSigner:!1},{name:"minter",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]}],accounts:[{name:"MintWrapper",type:{kind:"struct",fields:[{name:"base",type:"publicKey"},{name:"bump",type:"u8"},{name:"hardCap",type:"u64"},{name:"admin",type:"publicKey"},{name:"pendingAdmin",type:"publicKey"},{name:"tokenMint",type:"publicKey"},{name:"numMinters",type:"u64"},{name:"totalAllowance",type:"u64"},{name:"totalMinted",type:"u64"}]}},{name:"Minter",type:{kind:"struct",fields:[{name:"mintWrapper",type:"publicKey"},{name:"minterAuthority",type:"publicKey"},{name:"bump",type:"u8"},{name:"index",type:"u64"},{name:"allowance",type:"u64"},{name:"totalMinted",type:"u64"}]}}],events:[{name:"NewMintWrapperEvent",fields:[{name:"mintWrapper",type:"publicKey",index:!1},{name:"hardCap",type:"u64",index:!1},{name:"admin",type:"publicKey",index:!1},{name:"tokenMint",type:"publicKey",index:!1}]},{name:"MintWrapperAdminProposeEvent",fields:[{name:"mintWrapper",type:"publicKey",index:!1},{name:"currentAdmin",type:"publicKey",index:!1},{name:"pendingAdmin",type:"publicKey",index:!1}]},{name:"MintWrapperAdminUpdateEvent",fields:[{name:"mintWrapper",type:"publicKey",index:!1},{name:"previousAdmin",type:"publicKey",index:!1},{name:"admin",type:"publicKey",index:!1}]},{name:"NewMinterEvent",fields:[{name:"mintWrapper",type:"publicKey",index:!1},{name:"minter",type:"publicKey",index:!1},{name:"index",type:"u64",index:!1},{name:"minterAuthority",type:"publicKey",index:!1}]},{name:"MinterAllowanceUpdateEvent",fields:[{name:"mintWrapper",type:"publicKey",index:!1},{name:"minter",type:"publicKey",index:!1},{name:"previousAllowance",type:"u64",index:!1},{name:"allowance",type:"u64",index:!1}]},{name:"MinterMintEvent",fields:[{name:"mintWrapper",type:"publicKey",index:!1},{name:"minter",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"destination",type:"publicKey",index:!1}]}],errors:[{code:6e3,name:"Unauthorized",msg:"You are not authorized to perform this action."},{code:6001,name:"HardcapExceeded",msg:"Cannot mint over hard cap."},{code:6002,name:"MinterAllowanceExceeded",msg:"Minter allowance exceeded."}]}),_m=(Dm(Um),{version:"5.0.2",name:"quarry_redeemer",instructions:[{name:"createRedeemer",accounts:[{name:"redeemer",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"Redeemer"},{kind:"account",type:"publicKey",account:"Mint",path:"iou_mint"},{kind:"account",type:"publicKey",account:"Mint",path:"redemption_mint"}]}},{name:"iouMint",isMut:!1,isSigner:!1},{name:"redemptionMint",isMut:!1,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"}]},{name:"redeemTokens",accounts:[{name:"redeemer",isMut:!0,isSigner:!1},{name:"sourceAuthority",isMut:!1,isSigner:!0},{name:"iouMint",isMut:!0,isSigner:!1},{name:"iouSource",isMut:!0,isSigner:!1},{name:"redemptionVault",isMut:!0,isSigner:!1},{name:"redemptionDestination",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"redeemAllTokens",accounts:[{name:"redeemer",isMut:!0,isSigner:!1},{name:"sourceAuthority",isMut:!1,isSigner:!0},{name:"iouMint",isMut:!0,isSigner:!1},{name:"iouSource",isMut:!0,isSigner:!1},{name:"redemptionVault",isMut:!0,isSigner:!1},{name:"redemptionDestination",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"Redeemer",type:{kind:"struct",fields:[{name:"iouMint",type:"publicKey"},{name:"redemptionMint",type:"publicKey"},{name:"bump",type:"u8"},{name:"totalTokensRedeemed",type:"u64"}]}}],events:[{name:"RedeemTokensEvent",fields:[{name:"user",type:"publicKey",index:!1},{name:"iouMint",type:"publicKey",index:!1},{name:"redemptionMint",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"timestamp",type:"i64",index:!1}]}],errors:[{code:6e3,name:"Unauthorized",msg:"Unauthorized."}]}),Lm=(Dm(_m),{version:"5.0.2",name:"quarry_operator",instructions:[{name:"createOperator",accounts:[{name:"base",isMut:!1,isSigner:!0},{name:"operator",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"Operator"},{kind:"account",type:"publicKey",path:"base"}]}},{name:"rewarder",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"quarryMineProgram",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"}]},{name:"createOperatorV2",accounts:[{name:"base",isMut:!1,isSigner:!0},{name:"operator",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"Operator"},{kind:"account",type:"publicKey",path:"base"}]}},{name:"rewarder",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"quarryMineProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setAdmin",accounts:[{name:"operator",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0},{name:"delegate",isMut:!1,isSigner:!1}],args:[]},{name:"setRateSetter",accounts:[{name:"operator",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0},{name:"delegate",isMut:!1,isSigner:!1}],args:[]},{name:"setQuarryCreator",accounts:[{name:"operator",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0},{name:"delegate",isMut:!1,isSigner:!1}],args:[]},{name:"setShareAllocator",accounts:[{name:"operator",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0},{name:"delegate",isMut:!1,isSigner:!1}],args:[]},{name:"delegateSetAnnualRewards",accounts:[{name:"withDelegate",accounts:[{name:"operator",isMut:!0,isSigner:!1},{name:"delegate",isMut:!1,isSigner:!0},{name:"rewarder",isMut:!0,isSigner:!1},{name:"quarryMineProgram",isMut:!1,isSigner:!1}]}],args:[{name:"newRate",type:"u64"}]},{name:"delegateCreateQuarry",accounts:[{name:"withDelegate",accounts:[{name:"operator",isMut:!0,isSigner:!1},{name:"delegate",isMut:!1,isSigner:!0},{name:"rewarder",isMut:!0,isSigner:!1},{name:"quarryMineProgram",isMut:!1,isSigner:!1}]},{name:"quarry",isMut:!0,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"unusedAccount",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"}]},{name:"delegateCreateQuarryV2",accounts:[{name:"withDelegate",accounts:[{name:"operator",isMut:!0,isSigner:!1},{name:"delegate",isMut:!1,isSigner:!0},{name:"rewarder",isMut:!0,isSigner:!1},{name:"quarryMineProgram",isMut:!1,isSigner:!1}]},{name:"quarry",isMut:!0,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"delegateSetRewardsShare",accounts:[{name:"withDelegate",accounts:[{name:"operator",isMut:!0,isSigner:!1},{name:"delegate",isMut:!1,isSigner:!0},{name:"rewarder",isMut:!0,isSigner:!1},{name:"quarryMineProgram",isMut:!1,isSigner:!1}]},{name:"quarry",isMut:!0,isSigner:!1}],args:[{name:"newShare",type:"u64"}]},{name:"delegateSetFamine",accounts:[{name:"withDelegate",accounts:[{name:"operator",isMut:!0,isSigner:!1},{name:"delegate",isMut:!1,isSigner:!0},{name:"rewarder",isMut:!0,isSigner:!1},{name:"quarryMineProgram",isMut:!1,isSigner:!1}]},{name:"quarry",isMut:!0,isSigner:!1}],args:[{name:"famineTs",type:"i64"}]}],accounts:[{name:"Operator",type:{kind:"struct",fields:[{name:"base",type:"publicKey"},{name:"bump",type:"u8"},{name:"rewarder",type:"publicKey"},{name:"admin",type:"publicKey"},{name:"rateSetter",type:"publicKey"},{name:"quarryCreator",type:"publicKey"},{name:"shareAllocator",type:"publicKey"},{name:"lastModifiedTs",type:"i64"},{name:"generation",type:"u64"}]}}],errors:[{code:6e3,name:"Unauthorized",msg:"Signer is not authorized to perform this action."},{code:6001,name:"PendingAuthorityNotSet",msg:"Pending authority must be set to the created operator."},{code:6002,name:"OperatorNotRewarderAuthority",msg:"Operator is not the Rewarder authority."}]}),Km=(Dm(Lm),{version:"5.0.2",name:"quarry_merge_mine",instructions:[{name:"newPool",accounts:[{name:"pool",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"MergePool"},{kind:"account",type:"publicKey",account:"Mint",path:"primary_mint"}]}},{name:"primaryMint",isMut:!1,isSigner:!1},{name:"replicaMint",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"ReplicaMint"},{kind:"account",type:"publicKey",account:"MergePool",path:"pool"}]}},{name:"payer",isMut:!0,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"},{name:"mintBump",type:"u8"}]},{name:"newPoolV2",accounts:[{name:"pool",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"MergePool"},{kind:"account",type:"publicKey",account:"Mint",path:"primary_mint"}]}},{name:"primaryMint",isMut:!1,isSigner:!1},{name:"replicaMint",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"ReplicaMint"},{kind:"account",type:"publicKey",account:"MergePool",path:"pool"}]}},{name:"payer",isMut:!0,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]},{name:"initMergeMiner",accounts:[{name:"pool",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!1},{name:"mm",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"MergeMiner"},{kind:"account",type:"publicKey",account:"MergePool",path:"pool"},{kind:"account",type:"publicKey",path:"owner"}]}},{name:"payer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"}]},{name:"initMergeMinerV2",accounts:[{name:"pool",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!1},{name:"mm",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"MergeMiner"},{kind:"account",type:"publicKey",account:"MergePool",path:"pool"},{kind:"account",type:"publicKey",path:"owner"}]}},{name:"payer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"initMiner",accounts:[{name:"pool",isMut:!1,isSigner:!1},{name:"mm",isMut:!1,isSigner:!1},{name:"miner",isMut:!0,isSigner:!1},{name:"quarry",isMut:!0,isSigner:!1},{name:"rewarder",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"minerVault",isMut:!1,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mineProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"bump",type:"u8"}]},{name:"initMinerV2",accounts:[{name:"pool",isMut:!1,isSigner:!1},{name:"mm",isMut:!1,isSigner:!1},{name:"miner",isMut:!0,isSigner:!1},{name:"quarry",isMut:!0,isSigner:!1},{name:"rewarder",isMut:!1,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"minerVault",isMut:!1,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"mineProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"stakePrimaryMiner",accounts:[{name:"mmOwner",isMut:!1,isSigner:!0},{name:"mmPrimaryTokenAccount",isMut:!0,isSigner:!1},{name:"stake",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"mm",isMut:!0,isSigner:!1},{name:"rewarder",isMut:!1,isSigner:!1},{name:"quarry",isMut:!0,isSigner:!1},{name:"miner",isMut:!0,isSigner:!1},{name:"minerVault",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"mineProgram",isMut:!1,isSigner:!1}]}],args:[]},{name:"stakeReplicaMiner",accounts:[{name:"mmOwner",isMut:!1,isSigner:!0},{name:"replicaMint",isMut:!0,isSigner:!1},{name:"replicaMintTokenAccount",isMut:!0,isSigner:!1},{name:"stake",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"mm",isMut:!0,isSigner:!1},{name:"rewarder",isMut:!1,isSigner:!1},{name:"quarry",isMut:!0,isSigner:!1},{name:"miner",isMut:!0,isSigner:!1},{name:"minerVault",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"mineProgram",isMut:!1,isSigner:!1}]}],args:[]},{name:"unstakePrimaryMiner",accounts:[{name:"mmOwner",isMut:!1,isSigner:!0},{name:"mmPrimaryTokenAccount",isMut:!0,isSigner:!1},{name:"stake",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"mm",isMut:!0,isSigner:!1},{name:"rewarder",isMut:!1,isSigner:!1},{name:"quarry",isMut:!0,isSigner:!1},{name:"miner",isMut:!0,isSigner:!1},{name:"minerVault",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"mineProgram",isMut:!1,isSigner:!1}]}],args:[{name:"amount",type:"u64"}]},{name:"unstakeAllReplicaMiner",accounts:[{name:"mmOwner",isMut:!1,isSigner:!0},{name:"replicaMint",isMut:!0,isSigner:!1},{name:"replicaMintTokenAccount",isMut:!0,isSigner:!1},{name:"stake",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"mm",isMut:!0,isSigner:!1},{name:"rewarder",isMut:!1,isSigner:!1},{name:"quarry",isMut:!0,isSigner:!1},{name:"miner",isMut:!0,isSigner:!1},{name:"minerVault",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"mineProgram",isMut:!1,isSigner:!1}]}],args:[]},{name:"withdrawTokens",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"pool",isMut:!1,isSigner:!1},{name:"mm",isMut:!0,isSigner:!1},{name:"withdrawMint",isMut:!1,isSigner:!1},{name:"mmTokenAccount",isMut:!0,isSigner:!1},{name:"tokenDestination",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"rescueTokens",accounts:[{name:"mmOwner",isMut:!1,isSigner:!0},{name:"mergePool",isMut:!1,isSigner:!1},{name:"mm",isMut:!1,isSigner:!1},{name:"miner",isMut:!1,isSigner:!1},{name:"minerTokenAccount",isMut:!0,isSigner:!1},{name:"destinationTokenAccount",isMut:!0,isSigner:!1},{name:"quarryMineProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"claimRewards",accounts:[{name:"mintWrapper",isMut:!0,isSigner:!1},{name:"mintWrapperProgram",isMut:!1,isSigner:!1},{name:"minter",isMut:!0,isSigner:!1},{name:"rewardsTokenMint",isMut:!0,isSigner:!1},{name:"rewardsTokenAccount",isMut:!0,isSigner:!1},{name:"claimFeeTokenAccount",isMut:!0,isSigner:!1},{name:"stakeTokenAccount",isMut:!0,isSigner:!1},{name:"stake",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"mm",isMut:!0,isSigner:!1},{name:"rewarder",isMut:!1,isSigner:!1},{name:"quarry",isMut:!0,isSigner:!1},{name:"miner",isMut:!0,isSigner:!1},{name:"minerVault",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"mineProgram",isMut:!1,isSigner:!1}]}],args:[]}],accounts:[{name:"MergePool",type:{kind:"struct",fields:[{name:"primaryMint",type:"publicKey"},{name:"bump",type:"u8"},{name:"replicaMint",type:"publicKey"},{name:"mmCount",type:"u64"},{name:"totalPrimaryBalance",type:"u64"},{name:"totalReplicaBalance",type:"u64"},{name:"reserved",type:{array:["u64",16]}}]}},{name:"MergeMiner",type:{kind:"struct",fields:[{name:"pool",type:"publicKey"},{name:"owner",type:"publicKey"},{name:"bump",type:"u8"},{name:"index",type:"u64"},{name:"primaryBalance",type:"u64"},{name:"replicaBalance",type:"u64"}]}}],events:[{name:"NewMergePoolEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"primaryMint",type:"publicKey",index:!1}]},{name:"InitMergeMinerEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"mm",type:"publicKey",index:!1},{name:"primaryMint",type:"publicKey",index:!1},{name:"owner",type:"publicKey",index:!1}]},{name:"InitMinerEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"mm",type:"publicKey",index:!1},{name:"miner",type:"publicKey",index:!1}]},{name:"StakePrimaryEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"mm",type:"publicKey",index:!1},{name:"miner",type:"publicKey",index:!1},{name:"owner",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]},{name:"StakeReplicaEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"mm",type:"publicKey",index:!1},{name:"miner",type:"publicKey",index:!1},{name:"owner",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]},{name:"UnstakePrimaryEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"mm",type:"publicKey",index:!1},{name:"miner",type:"publicKey",index:!1},{name:"owner",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]},{name:"UnstakeReplicaEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"mm",type:"publicKey",index:!1},{name:"miner",type:"publicKey",index:!1},{name:"owner",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]},{name:"WithdrawTokensEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"mm",type:"publicKey",index:!1},{name:"owner",type:"publicKey",index:!1},{name:"mint",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]},{name:"ClaimEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"mm",type:"publicKey",index:!1},{name:"mint",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"initialBalance",type:"u64",index:!1},{name:"endBalance",type:"u64",index:!1}]}],errors:[{code:6e3,name:"Unauthorized",msg:"Unauthorized."},{code:6001,name:"InsufficientBalance",msg:"Insufficient balance."},{code:6002,name:"InvalidMiner",msg:"Invalid miner for the given quarry."},{code:6003,name:"CannotWithdrawReplicaMint",msg:"Cannot withdraw a replica mint."},{code:6004,name:"OutstandingReplicaTokens",msg:"User must first withdraw from all replica quarries."},{code:6005,name:"ReplicaDecimalsMismatch",msg:"The replica mint must have the same number of decimals as the primary mint."},{code:6006,name:"ReplicaNonZeroSupply",msg:"The replica mint must have zero supply."}]}),Ym=(Dm(Km),{version:"5.0.2",name:"quarry_registry",instructions:[{name:"newRegistry",accounts:[{name:"rewarder",isMut:!1,isSigner:!1},{name:"registry",isMut:!0,isSigner:!1,pda:{seeds:[{kind:"const",type:"string",value:"QuarryRegistry"},{kind:"account",type:"publicKey",account:"Rewarder",path:"rewarder"}]}},{name:"payer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"maxQuarries",type:"u16"},{name:"bump",type:"u8"}]},{name:"syncQuarry",accounts:[{name:"quarry",isMut:!1,isSigner:!1},{name:"registry",isMut:!0,isSigner:!1}],args:[]}],accounts:[{name:"Registry",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"rewarder",type:"publicKey"},{name:"tokens",type:{vec:"publicKey"}}]}}]}),jm=(Dm(Ym),{MergeMine:new A.PublicKey("QMMD16kjauP5knBwxNUJRZ1Z5o3deBuFrqVjBVmmqto"),Mine:new A.PublicKey("QMNeHCGYnLVDn1icRAfQZpjPLBNkfGbSKRB83G5d8KB"),MintWrapper:new A.PublicKey("QMWoBmAyJLAsA1Lh9ugMTw2gciTihncciphzdNzdZYV"),Operator:new A.PublicKey("QoP6NfrQbaGnccXQrMLUkog2tQZ4C1RFgJcwDnT8Kmz"),Redeemer:new A.PublicKey("QRDxhMw1P2NEfiw5mYXG79bwfgHTdasY2xNP76XSea9"),Registry:new A.PublicKey("QREGBnEj9Sa5uR91AV8u3FxThgP5ZCvdZUW2bHAkfNc")});var Wm,Jm;Wm={MergeMine:Km,Mine:xm,MintWrapper:Um,Operator:Lm,Redeemer:_m,Registry:Ym},Jm=jm,ke()(Wm,((e,t)=>new Gm(Jm[t],e))),new A.PublicKey("4MMZH3ih1aSty2nx4MC3kSR94Zb55XsXnqb5jfEcyHWQ"),new A.PublicKey("4MMZH3ih1aSty2nx4MC3kSR94Zb55XsXnqb5jfEcyHWQ");const qm=B.MintLayout;var Zm;!function(e){e[e.MainnetBeta=101]="MainnetBeta",e[e.Testnet=102]="Testnet",e[e.Devnet=103]="Devnet"}(Zm||(Zm={}));const zm=new A.PublicKey("RawSo11111111111111111111111111111111111112");class Hm{constructor(e){var t;this.info=e,this._mintAccount=null,this.network=null!==(t=rI(e.chainId))&&void 0!==t?t:"localnet"}get mintAccount(){return this._mintAccount||(this._mintAccount=new A.PublicKey(this.info.address)),this._mintAccount}get isRawSOL(){return this.mintAccount.equals(zm)}get address(){return this.info.address}get chainId(){return this.info.chainId}get decimals(){return this.info.decimals}get name(){return this.info.name}get symbol(){return this.info.symbol}get icon(){return this.info.logoURI}equals(e){return Vm(this,e)}toString(){return`Token[mint=${this.address}, decimals=${this.decimals}, network=${this.network}]`}toJSON(){return this.info}hasTag(e){var t;return!!(null===(t=this.info.tags)||void 0===t?void 0:t.includes(e))}}Hm.fromMint=(e,t,n={})=>{var i,r,o;return new Hm({...n,address:e.toString(),decimals:t,name:null!==(i=n.name)&&void 0!==i?i:`Token ${e.toString().slice(0,4)}`,symbol:null!==(r=n.symbol)&&void 0!==r?r:e.toString().slice(0,5),chainId:null!==(o=n.chainId)&&void 0!==o?o:tI.Localnet})},Hm.load=async(e,t,n={})=>{if("number"==typeof n.decimals)return Hm.fromMint(t,n.decimals,n);const i=await e.getAccountInfo(t);if(!i)return null;const r=(e=>{if(e.length!==qm.span)throw new Error("Not a valid Mint");const t=qm.decode(e);let n;n=0===t.mintAuthorityOption?null:new A.PublicKey(t.mintAuthority);const i=B.u64.fromBuffer(t.supply),r=0!==t.isInitialized;let o;return o=0===t.freezeAuthorityOption?null:new A.PublicKey(t.freezeAuthority),{mintAuthority:n,supply:i,decimals:t.decimals,isInitialized:r,freezeAuthority:o}})(i.data);return Hm.fromMint(t,r.decimals,n)};const Vm=(e,t)=>void 0!==e&&void 0!==t&&e.address===t.address&&e.network===t.network,Xm={address:zm.toString(),name:"Solana",symbol:"SOL",decimals:9,logoURI:"https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png"},$m={address:B.NATIVE_MINT.toString(),name:"Wrapped SOL",symbol:"SOL",decimals:9,logoURI:"https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png"},eI=e=>({"mainnet-beta":new Hm({...e,chainId:tI.MainnetBeta}),devnet:new Hm({...e,chainId:tI.Devnet}),testnet:new Hm({...e,chainId:tI.Testnet}),localnet:new Hm({...e,chainId:tI.Localnet})});var tI;!function(e){e[e.MainnetBeta=101]="MainnetBeta",e[e.Testnet=102]="Testnet",e[e.Devnet=103]="Devnet",e[e.Localnet=104]="Localnet"}(tI||(tI={}));const nI={"mainnet-beta":tI.MainnetBeta,devnet:tI.Devnet,testnet:tI.Testnet,localnet:104},iI=Object.entries(nI).reduce(((e,[t,n])=>({...e,[n]:t})),{}),rI=e=>iI[e];eI(Xm),eI($m);class oI extends ge{constructor(e,t){super(e,t,ue)}new(e,t){return new oI(e,t)}static parse(e,t){const n=se(e,t,".",",");return new oI(e,n)}divideByInteger(e){return new oI(this.token,this.toU64().div(new(y())(V(e).toString())))}toString(){return`TokenAmount[Token=(${this.token.toString()}), amount=${this.toExact()}`}toJSON(){return{...super.toJSON(),_isTA:!0,mint:this.token.address,uiAmount:this.toExact()}}toU64(){return new B.u64(this.raw.toString())}}new A.PublicKey("shmem4EWT2sPdVGvTZCzXXRAURL9G5vpPxNwSeKhHUL"),i(49500),i(55872).Buffer,i(49500),i(55872).Buffer,new(y())(0),new(y())(10),new(y())(D.toString()),new(y())(31536e3);var AI=i(55872).Buffer,sI=i(49500),aI=e=>{const t=u.blob(32,e),n=t.decode.bind(t),i=t.encode.bind(t);return t.decode=(e,t)=>{const i=n(e,t);return new A.PublicKey(i)},t.encode=(e,t,n)=>i(e.toBuffer(),t,n),t},cI=(e="uint64")=>uI(8,e),uI=(e,t)=>{const n=u.blob(e,t),i=n.decode.bind(n),r=n.encode.bind(n);return n.decode=(e,t)=>{const n=i(e,t);return new I([...n].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)},n.encode=(t,n,i)=>{const o=t.toArray().reverse();let A=AI.from(o);if(A.length!==e){const t=AI.alloc(e);A.copy(t),A=t}return r(A,n,i)},n};var lI=class{constructor(e,t){this.decimals=e,this.multiplier=t}static fromDecimals(e){return sI.assert(Number.isInteger(e)),sI.assert(e>=0),new lI(e,new K(10).pow(e))}},gI=(new A.PublicKey("Port7uDYB3wk6GJAw4KT1WpTeMtSu9bTcChBHkX2LfR"),new A.PublicKey("stkarvwmSzv2BygN5e2LeTwimTczLWHCKPKGC2zVLiq"),new A.PublicKey("6T4XxKerq744sSuj3jaoV6QiZ8acirf4TrPwQzHAoSy5"),lI.fromDecimals(6),u.struct([u.u8("instruction")]),class{eq(e){return!!e&&0===this.checkAndCompare(e)}lt(e){return!!e&&this.checkAndCompare(e)<0}lte(e){return!!e&&this.checkAndCompare(e)<=0}gt(e){return!!e&&this.checkAndCompare(e)>0}gte(e){return!!e&&this.checkAndCompare(e)>=0}checkCompatible(e){sI.assert(this.isCompatibleWith(e))}checkAndCompare(e){return this.checkCompatible(e),this.compare(e)}}),dI=class extends u.Layout{},hI=class extends dI{constructor(e,t){super(e.getBytes(),t),this.type=e}static forType(e,t){return new hI(e,t)}decode(e,t){const n=this.type.getLayout().decode(e,t),i=new K(n.toString()),r=this.type.getMultiplier();return r?i.div(r):i}},pI=class extends gI{constructor(){super()}static sum(e,t){return e.add(t)}min(e){return this.checkCompatible(e),this.getRaw().lte(e.getRaw())?this.replaceWithValue(this.getRaw()):this.replaceWithValue(e.getRaw())}max(e){return this.checkCompatible(e),this.getRaw().gte(e.getRaw())?this.replaceWithValue(this.getRaw()):this.replaceWithValue(e.getRaw())}add(e){return this.checkCompatible(e),this.replaceWithValue(this.getRaw().add(e.getRaw()))}subtract(e){return this.checkCompatible(e),this.replaceWithValue(this.getRaw().sub(e.getRaw()))}multiply(e){return this.replaceWithValue(this.getRaw().mul(e))}divide(e){return this.replaceWithValue(this.getRaw().div(e))}compare(e){return this.compareRaw(e.getRaw())}isZero(){return 0===this.getSignum()}isPositive(){return this.getSignum()>0}isNegative(){return this.getSignum()<0}getSignum(){return this.compareRaw(pI.BIG_ZERO)}compareRaw(e){return this.getRaw().cmp(e)}},fI=pI;fI.BIG_ZERO=new K(0);var mI=class extends fI{constructor(e){super(),this.raw=new K(e)}getRaw(){return this.raw}isCompatibleWith(e){return!0}},II=class extends dI{constructor(e,t){super(e.getBytes(),t),this.delegate=hI.forType(e,t)}decode(e,t){return this.fromBig(this.delegate.decode(e,t))}},yI=class extends A.PublicKey{getAccess(e){return function(e,t){switch(t){case 1:return{pubkey:e,isSigner:!1,isWritable:!1};case 2:return{pubkey:e,isSigner:!1,isWritable:!0};case 3:return{pubkey:e,isSigner:!0,isWritable:!1};default:throw new Error(`Unknown access type ${t}`)}}(this,e)}},BI=class extends mI{constructor(e){super(e)}static zero(){return BI.ZERO}static max(){return BI.MAX}static of(e){return new BI(e)}static field(e,t){return new wI(e,t)}isTrivial(){return this.lt(BI.ONE)}isMax(){return this.eq(BI.MAX)}toU64(){return new B.u64(this.raw.toFixed(0,0))}replaceWithValue(e){return BI.of(e)}},CI=BI;CI.ZERO=new BI(0),CI.ONE=new BI(1),CI.MAX=new BI("18446744073709551615");var wI=class extends II{constructor(e,t){super(e,t)}fromBig(e){return CI.of(e)}},EI=class extends dI{constructor(e,t){super(e,t),this.delegate=new u.Blob(e,t)}decode(e,t){const n=this.delegate.decode(e,t);return this.fromBuffer(n)}},QI=class extends EI{constructor(e,t){super(e,t)}fromBuffer(e){return new I([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}},bI=class{constructor(e,t){this.bytes=e,this.multiplier=t}getLayout(){return 1===this.bytes?u.u8():2===this.bytes?u.u16():3===this.bytes?u.u24():4===this.bytes?u.u32():new QI(this.bytes)}getBytes(){return this.bytes}getMultiplier(){return this.multiplier}},kI=bI;kI.WAD=new K(10).pow(18),kI.U8=new bI(1),kI.U16=new bI(2),kI.U32=new bI(4),kI.U64=new bI(8),kI.U128=new bI(16),kI.D64=new bI(8,bI.WAD),kI.D128=new bI(16,bI.WAD);var vI=class extends mI{constructor(e){super(e)}static zero(){return vI.PCT_ZERO}static hundred(){return vI.PCT_HUNDRED}static fromOneBased(e){return vI.fromRaw(e,!1)}static fromHundredBased(e){return vI.fromRaw(e,!0)}static fromRaw(e,t){const n=new K(e);return new vI(t?n.div(100):n)}static field(e){return new MI(!0,e)}isTrivial(){return this.lt(vI.PCT_BIP)}isHundredPct(){return this.eq(vI.PCT_HUNDRED)}toOneBasedNumber(e){return this.raw.round(e).toNumber()}toHundredBasedNumber(e){return this.raw.mul(100).round(e,0).toNumber()}print(){return this.gt(vI.PCT_THOUSAND)?this.raw.round(1,1).toString()+"x":this.raw.mul(100).round(2,1).toString()+"%"}replaceWithValue(e){return new vI(e)}},SI=vI;SI.PCT_BIP=new vI(1e-4),SI.PCT_ZERO=new vI(0),SI.PCT_HUNDRED=new vI(1),SI.PCT_THOUSAND=new vI(10);var MI=class extends II{constructor(e,t){super(kI.U8,t),this.isHundredBased=e}fromBig(e){return SI.fromRaw(e,this.isHundredBased)}},DI=class extends gI{constructor(e){super(),this.pct=e}isTrivial(){const e=this.getPct();return!e||e.isTrivial()}isPresent(){return!!this.pct}isPositive(){return!!this.getPct()?.isPositive()}isNegative(){return!!this.getPct()?.isNegative()}getUnchecked(){if(!this.pct)throw new Error("No value available");return this.pct.getRaw()}getPct(){return this.pct}print(){return this.pct?this.pct.print():"--"}compare(e){const t=this.getPct(),n=e.getPct();return t&&n?t.compare(n):0}toString(){return this.print()}},NI=class extends fI{constructor(e){super(),this.wrapped=e}getRaw(){return this.getWrapped().getRaw()}getWrapped(){return this.wrapped}replaceWithValue(e){return this.wrap(this.getWrapped().replaceWithValue(e))}},TI=class extends NI{isMax(){return this.getWrapped().isMax()}toU64(){return this.getAmount().toU64()}getAmount(){return this.getWrapped()}},PI=class extends TI{constructor(e,t){super(t),this.mintId=e}isNative(){return this.getMintId().isNative()}getMintId(){return this.mintId}isCompatibleWith(e){return this.mintId.equals(e.mintId)}},OI=class extends EI{constructor(e){super(A.MAX_SEED_LENGTH,e)}fromBuffer(e){return this.fromPublicKey(new A.PublicKey(e))}},FI=class extends yI{constructor(e){super(e)}static fromBase58(e){return FI.of(new A.PublicKey(e))}static of(e){return new FI(e)}static field(e){return new RI(e)}},RI=class extends OI{constructor(e){super(e)}fromPublicKey(e){return FI.of(e)}},GI=class extends DI{constructor(e){super(e)}static na(){return GI.APY_NA}static of(e){return new GI(SI.fromOneBased(e))}isCompatibleWith(e){return!0}};GI.APY_NA=new GI;var xI=class extends mI{constructor(e){super(e)}toAsset(e,t){const n=CI.of(this.raw.div(e.getRaw()).mul(t.multiplier));return ey.of(e.getMintId(),n)}toNumber(){return this.raw.round(2,0).toNumber()}print(){return xI.FORMATTER.format(this.toNumber())}toString(){return this.print()}},UI=xI;UI.FORMATTER=Intl.NumberFormat("en-US",{style:"currency",currency:"USD"});var _I=class extends DI{constructor(e){super(e)}static of(e){return e?new _I(e):_I.na()}static na(){return _I.VALUE_RATIO_NA}isCompatibleWith(e){return!0}},LI=_I;LI.VALUE_RATIO_NA=new _I;var KI=class extends DI{constructor(e){super(e)}static of(e){return e?new KI(e):KI.na()}static na(){return KI.MARGIN_RATIO_NA}isCompatibleWith(e){return!0}},YI=KI;YI.MARGIN_RATIO_NA=new KI;var jI=class extends UI{constructor(e){super(e)}static of(e){return new jI(e)}static zero(){return jI.MARGIN_ZERO}static field(e){return new JI(e)}toCollateralValue(e){return ZI.of(this.getRaw().div(e.getRaw()))}toRatioAgainst(e){return e.isZero()?YI.na():YI.of(SI.fromOneBased(this.getRaw().div(e.raw)))}replaceWithValue(e){return new jI(e)}},WI=jI;WI.MARGIN_ZERO=new jI(0);var JI=class extends II{constructor(e){super(kI.D128,e)}fromBig(e){return WI.of(e)}},qI=class extends UI{constructor(e){super(e)}static of(e){const t=new qI(e);return t.isZero()?qI.zero():t}static zero(){return qI.QUOTE_VALUE_ZERO}static field(e){return new zI(e)}toCollateralMargin(e){return WI.of(this.getRaw().mul(e.getRaw()))}toLoanMargin(){return WI.of(this.getRaw())}toRatioAgainst(e){if(e.isZero())return LI.na();const t=SI.fromOneBased(this.getRaw().div(e.raw));return LI.of(t)}replaceWithValue(e){return new qI(e)}},ZI=qI;ZI.QUOTE_VALUE_ZERO=new qI(0);var zI=class extends II{constructor(e){super(kI.D128,e)}fromBig(e){return ZI.of(e)}},HI=class extends PI{constructor(e,t){super(e,t)}static zero(e){return HI.of(e,CI.zero())}static max(e){return HI.of(e,CI.max())}static fromTokenAccount(e){return HI.of(e.getMintId(),e.getAmount())}static of(e,t){return new HI(e,t)}toAsset(e){if(sI.assert(this.getMintId().equals(e.getShareMintId())),!e.isPresent())return ey.zero(e.getAssetMintId());const t=e.getUnchecked(),n=CI.of(this.getRaw().div(t).round(0));return ey.of(e.getAssetMintId(),n)}wrap(e){return HI.of(this.getMintId(),e)}},VI=class extends yI{constructor(e){super(e)}static native(){return VI.of(B.NATIVE_MINT)}static fromBase58(e){return VI.of(new A.PublicKey(e))}static of(e){return new VI(e)}static field(e){return new XI(e)}isNative(){return this.equals(B.NATIVE_MINT)}},XI=class extends OI{constructor(e){super(e)}fromPublicKey(e){return VI.of(e)}},$I=class extends PI{constructor(e,t){super(e,t)}static fromString(e,t,n){const i=n.multiplier,r=CI.of(new K(e).mul(i).round(0,0));return new $I(t,r)}static zero(e){return $I.of(e)}static max(e){return $I.of(e,CI.max())}static native(e){return $I.of(VI.native(),e)}static fromTokenAccount(e){return $I.of(e.getMintId(),e.getAmount())}static of(e,t){return new $I(e,t||CI.zero())}isNative(){return this.getMintId().isNative()}toValue(e,t){if(sI.assert(this.getMintId().equals(e.getMintId()),`asset id: ${this.getMintId()} price id: ${e.getMintId()}`),!e)return ZI.zero();const n=t.multiplier,i=this.getRaw().div(n).mul(e.getRaw());return ZI.of(i)}toInterest(e){if(!e.isPresent())return $I.zero(this.getMintId());const t=CI.of(this.getRaw().mul(e.getUnchecked()));return $I.of(this.getMintId(),t)}toShare(e){if(sI.assert(this.getMintId().equals(e.getAssetMintId())),!e.isPresent())return HI.zero(e.getShareMintId());const t=CI.of(this.getRaw().mul(e.getUnchecked()).round(0));return HI.of(e.getShareMintId(),t)}addFee(e){return this.multiply(new K(1).add(e.getRaw()))}toNumber(e){const t=e.multiplier,n=e.decimals;return this.getRaw().div(t).round(n,0).toNumber()}plain(e){return this.toLimitRoundNumber(e).toString()}toLimitRoundNumber(e){const t=e.multiplier,n=e.decimals;return this.getRaw().div(t).round(Math.min(n,6),0).toNumber()}print(e,t){if(!e)return"--";const n=this.toLimitRoundNumber(e),i=n>$I.LARGE_THRESHOLD?$I.FORMATTER_LARGE.format(n):$I.FORMATTER_NORMAL.format(n);return t?i+" "+t:i}wrap(e){return $I.of(this.getMintId(),e)}},ey=$I;ey.MIN_NATIVE_LAMPORT=$I.native(CI.of(5e6)),ey.SIGNIFICANT_DIGITS=6,ey.LARGE_THRESHOLD=new K(10).pow(6).toNumber(),ey.FORMATTER_NORMAL=new Intl.NumberFormat("en-US",{style:"decimal",maximumSignificantDigits:$I.SIGNIFICANT_DIGITS}),ey.FORMATTER_LARGE=new Intl.NumberFormat("en-US",{style:"decimal",maximumFractionDigits:0});var ty=class{constructor(e,t){this.decimals=e,this.increment=t}static fromDecimals(e){return sI.assert(Number.isInteger(e)),sI.assert(e>=0),new ty(e,new K(10).pow(e))}getDecimals(){return this.decimals}getIncrement(){return this.increment}},ny=(new class{constructor(e,t,n,i,r){this.mintId=e,this.display=t,this.price=n,this.deposit=i,this.isDefault=r??!1}checkIsDefault(){return this.isDefault}getMintId(){return this.mintId}getName(){return this.getDisplayConfig().getName()}getSymbol(){return this.getDisplayConfig().getSymbol()}getColor(){return this.getDisplayConfig().getColor()}getDisplayConfig(){return this.display}getPriceDecimals(){return this.getPriceConfig().getDecimals()}getPriceConfig(){return this.price}getReserveId(){return this.getDepositConfig()?.getReserveId()}getMaxDeposit(){const e=this.getDepositConfig()?.getMax();return e?ey.of(this.mintId,CI.of(e)):void 0}getMinDeposit(){const e=this.getDepositConfig()?.getMin();return e?ey.of(this.mintId,CI.of(e)):void 0}getRemainAsset(){const e=this.getDepositConfig()?.getRemain();return e?ey.of(this.mintId,CI.of(e)):void 0}getDepositConfig(){return this.deposit}}(VI.fromBase58("So11111111111111111111111111111111111111112"),new class{constructor(e,t,n){this.name=e,this.symbol=t,this.color=n}getName(){return this.name}getSymbol(){return this.symbol}getColor(){return this.color}}("Default Token","Default"),ty.fromDecimals(3)),class extends mI{constructor(e){super(e)}static zero(){return ny.ZERO}static of(e){return new ny(e)}static field(e,t){return new ry(e,t)}replaceWithValue(e){return ny.of(e)}}),iy=ny;iy.ZERO=ny.of(0);var ry=class extends II{constructor(e,t){super(e,t)}fromBig(e){return iy.of(e)}},oy=class extends yI{constructor(e){super(e)}static fromBase58(e){return oy.of(new A.PublicKey(e))}static of(e){return new oy(e)}static field(e){return new Ay(e)}},Ay=class extends OI{constructor(e){super(e)}fromPublicKey(e){return oy.of(e)}},sy=class extends yI{constructor(e){super(e)}static native(e){return sy.of(e)}static of(e){return new sy(e)}static field(e){return new ay(e)}},ay=class extends OI{constructor(e){super(e)}fromPublicKey(e){return sy.of(e)}},cy=class extends dI{constructor(e){super(e.span+1,e.property),this.delegate=e}static of(e){return new cy(e)}decode(e,t){if(u.u8().decode(e,t))return this.delegate.decode(e,(t||0)+1)}},uy=e=>u.struct([cI("slot"),u.u8("stale")],e),ly=e=>u.struct([hI.forType(kI.D64,"borrowFeeWad"),hI.forType(kI.D64,"flashLoanFeeWad"),u.u8("hostFeePercentage")],e),gy=(u.struct([u.u8("version"),uy("lastUpdate"),aI("lendingMarket"),("liquidity",u.struct([VI.field("mintPubkey"),u.u8("mintDecimals"),sy.field("supplyPubkey"),sy.field("feeReceiver"),u.u32("oracleOption"),aI("oraclePubkey"),CI.field(kI.U64,"availableAmount"),CI.field(kI.D128,"borrowedAmountWads"),iy.field(kI.D128,"cumulativeBorrowRateWads"),hI.forType(kI.D128,"marketPrice")],"liquidity")),u.struct([VI.field("mintPubkey"),CI.field(kI.U64,"mintTotalSupply"),sy.field("supplyPubkey")],"collateral"),u.struct([SI.field("optimalUtilizationRate"),SI.field("loanToValueRatio"),SI.field("liquidationBonus"),SI.field("liquidationThreshold"),SI.field("minBorrowRate"),SI.field("optimalBorrowRate"),SI.field("maxBorrowRate"),ly("fees"),cy.of(FI.field("stakingPoolId"))],"config"),u.blob(215,"padding2")]).span,class extends yI{constructor(e){super(e)}static fromBase58(e){return gy.of(new A.PublicKey(e))}static of(e){return new gy(e)}static field(e){return new dy(e)}}),dy=class extends OI{constructor(e){super(e)}fromPublicKey(e){return gy.of(e)}},hy=u.struct([u.u8("version"),uy("lastUpdate"),aI("lendingMarket"),gy.field("owner"),ZI.field("depositedValue"),WI.field("borrowedValue"),WI.field("allowedBorrowValue"),WI.field("unhealthyBorrowValue"),u.u8("depositsLen"),u.u8("borrowsLen"),u.blob(776,"dataFlat")]);u.struct([oy.field("depositReserve"),CI.field(kI.U64,"depositedAmount"),ZI.field("marketValue")]),u.struct([oy.field("borrowReserve"),iy.field(kI.D128,"cumulativeBorrowRateWads"),CI.field(kI.D128,"borrowedAmountWads"),ZI.field("marketValue")]),hy.span;var py=class{constructor(e,t,n,i,r){this.reserves=e,this.byReserveId=t,this.byAssetMintId=n,this.byShareMintId=i,this.byStakingPoolId=r}static empty(){return py.RESERVE_CONTEXT_EMPTY}static index(e,t){if(!e.length)return py.empty();const n=(t?e.filter((e=>t.has(e.getAssetMintId().toString()))):e).sort(((e,t)=>-e.getMarketCap().getValue().compare(t.getMarketCap().getValue()))),i=new Map,r=new Map,o=new Map,A=new Map;return n.forEach((e=>i.set(e.getReserveId().toString(),e))),n.forEach((e=>r.set(e.getAssetMintId().toString(),e))),n.forEach((e=>o.set(e.getShareMintId().toString(),e))),n.forEach((e=>{const t=e.getStakingPoolId();t&&A.set(t.toString(),e)})),new py(n,i,r,o,A)}isReady(){return this.reserves.length>0}getAllReserves(){return this.reserves}getAllReservesPricePubKey(){return this.reserves.map((e=>e.getOracleId()))}getReserve(e){const t=this.findReserve(e);if(!t)throw new Error(`No reserve for ${e}`);return t}getByAssetMintId(e){const t=this.findByAssetMintId(e);if(!t)throw new Error(`No reserve for asset mint ${e}`);return t}getByShareMintId(e){const t=this.findByShareMintId(e);if(!t)throw new Error(`No reserve for share mint ${e}`);return t}findReserve(e){const t=e.toString();return this.byReserveId.get(t)}findByAssetMintId(e){const t=e.toString();return this.byAssetMintId.get(t)}findByShareMintId(e){const t=e.toString();return this.byShareMintId.get(t)}findByStakingPoolId(e){if(!e)return;const t=e.toString();return this.byStakingPoolId.get(t)}};py.RESERVE_CONTEXT_EMPTY=new py([],new Map,new Map,new Map,new Map);var fy=class extends mI{constructor(e){super(e)}static zero(){return fy.SLOT_ZERO}static of(e){return new fy(e)}static field(e){return new Iy(e)}replaceWithValue(e){return fy.of(e)}},my=fy;my.SLOT_ZERO=fy.of(0);var Iy=class extends II{constructor(e){super(kI.U64,e)}fromBig(e){return my.of(e)}},yy=class{constructor(e,t){this.accounts=e,this.bySplAccountId=t}static empty(){return yy.SPL_ACCOUNT_CONTEXT_EMPTY}static index(e){const t=new Map;return e.forEach((e=>t.set(e.getSplAccountId().toString(),e))),new yy(e,t)}isReady(){return this.accounts.length>0}getAllTokenAccounts(){return this.accounts}getSplAccount(e){const t=this.findSplAccount(e);if(!t)throw new Error(`No account for ${e}`);return t}findSplAccount(e){const t=e.toString();return this.bySplAccountId.get(t)}getSplAccountByMintId(e){const t=this.findSplAccountByMintId(e);if(!t)throw new Error(`No account for mint ${e}`);return t}findSplAccountByMintId(e){return this.accounts.filter((t=>t.getMintId().equals(e))).sort(((e,t)=>-e.getAmount().compare(t.getAmount())))[0]}};yy.SPL_ACCOUNT_CONTEXT_EMPTY=yy.index([]),i(55872).Buffer,i(55872).Buffer;var By=i(55872).Buffer,Cy=(e="publicKey")=>{const t=vh.blob(32,e),n=t.decode.bind(t),i=t.encode.bind(t);return t.decode=(e,t)=>{const i=n(e,t);return new A.PublicKey(i)},t.encode=(e,t,n)=>i(e.toBuffer(),t,n),t},wy=(e="uint64")=>{const t=vh.blob(8,e),n=t.decode.bind(t),i=t.encode.bind(t);return t.decode=(e,t)=>{const i=n(e,t);return new I([...i].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)},t.encode=(e,t,n)=>{const r=e.toArray().reverse();let o=By.from(r);if(8!==o.length){const e=By.alloc(8);o.copy(e),o=e}return i(o,t,n)},t},Ey=(e="uint128")=>{const t=vh.blob(16,e),n=t.decode.bind(t),i=t.encode.bind(t);return t.decode=(e,t)=>{const i=n(e,t);return new I([...i].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)},t.encode=(e,t,n)=>{const r=e.toArray().reverse();let o=By.from(r);if(16!==o.length){const e=By.alloc(16);o.copy(e),o=e}return i(o,t,n)},t},Qy=vh.struct([wy("slot"),vh.u8("stale")],"lastUpdate"),by=(vh.struct([vh.u8("version"),vh.u8("bumpSeed"),Cy("owner"),Cy("quoteTokenMint"),Cy("tokenProgramId"),Cy("oracleProgramId"),Cy("switchboardOracleProgramId"),vh.blob(128,"padding")]).span,vh.struct([vh.u8("optimalUtilizationRate"),vh.u8("loanToValueRatio"),vh.u8("liquidationBonus"),vh.u8("liquidationThreshold"),vh.u8("minBorrowRate"),vh.u8("optimalBorrowRate"),vh.u8("maxBorrowRate"),vh.struct([wy("borrowFeeWad"),wy("flashLoanFeeWad"),vh.u8("hostFeePercentage")],"fees"),wy("depositLimit"),wy("borrowLimit"),Cy("feeReceiver"),vh.u8("protocolLiquidationFee"),vh.u8("protocolTakeRate")],"config"));vh.struct([vh.u8("version"),Qy,Cy("lendingMarket"),vh.struct([Cy("mintPubkey"),vh.u8("mintDecimals"),Cy("supplyPubkey"),Cy("pythOracle"),Cy("switchboardOracle"),wy("availableAmount"),Ey("borrowedAmountWads"),Ey("cumulativeBorrowRateWads"),Ey("marketPrice")],"liquidity"),vh.struct([Cy("mintPubkey"),wy("mintTotalSupply"),Cy("supplyPubkey")],"collateral"),by,vh.blob(247,"padding")]).span,I.prototype.toJSON=void 0;var ky=vh.struct([vh.u8("version"),Qy,Cy("lendingMarket"),Cy("owner"),Ey("depositedValue"),Ey("borrowedValue"),Ey("allowedBorrowValue"),Ey("unhealthyBorrowValue"),vh.blob(64,"_padding"),vh.u8("depositsLen"),vh.u8("borrowsLen"),vh.blob(1096,"dataFlat")]);vh.struct([Cy("depositReserve"),wy("depositedAmount"),Ey("marketValue"),vh.blob(32,"padding")]),vh.struct([Cy("borrowReserve"),Ey("cumulativeBorrowRateWads"),Ey("borrowedAmountWads"),Ey("marketValue"),vh.blob(32,"padding")]),ky.span,i(55872).Buffer,i(55872).Buffer,i(55872).Buffer,new A.PublicKey("A66HabVL3DzNzeJgcHYtRRNW1ZRMKwBfrdSR4kLsZ9DJ"),new A.PublicKey("9aTtUqAnuSMndCpjcPosRNf3fCkrTQAV8C8GERf3tZi3");var vy=i(65787),Sy=i.n(vy),My=i(12424),Dy=i(49500),Ny=i(55872).Buffer;function Ty(e){return Et().encode(e)}function Py(e){const t=new Map;return e.errors&&e.errors.forEach((e=>{var n;let i=null!==(n=e.msg)&&void 0!==n?n:e.name;t.set(e.code,i)})),t}function Oy(e,...t){if(e.args.length!=t.length)throw new Error("Invalid argument length");const n={};let i=0;return e.args.forEach((e=>{n[e.name]=t[i],i+=1})),n}function Fy(e,t={}){e.forEach((e=>{if("accounts"in e)Fy(e.accounts,t[e.name]);else if(void 0===t[e.name])throw new Error(`Invalid arguments: ${e.name} not provided.`)}))}function Ry(e){return e instanceof A.PublicKey?e:new A.PublicKey(e)}class Gy extends TypeError{constructor(e,t){let n;const{message:i,...r}=e,{path:o}=e;super(0===o.length?i:"At path: "+o.join(".")+" -- "+i),this.value=void 0,this.key=void 0,this.type=void 0,this.refinement=void 0,this.path=void 0,this.branch=void 0,this.failures=void 0,Object.assign(this,r),this.name=this.constructor.name,this.failures=()=>{var i;return null!=(i=n)?i:n=[e,...t()]}}}function xy(e){return"object"==typeof e&&null!=e}function Uy(e){return"string"==typeof e?JSON.stringify(e):""+e}function _y(e,t,n,i){if(!0===e)return;!1===e?e={}:"string"==typeof e&&(e={message:e});const{path:r,branch:o}=t,{type:A}=n,{refinement:s,message:a="Expected a value of type `"+A+"`"+(s?" with refinement `"+s+"`":"")+", but received: `"+Uy(i)+"`"}=e;return{value:i,type:A,refinement:s,key:r[r.length-1],path:r,branch:o,...e,message:a}}function*Ly(e,t,n,i){(function(e){return xy(e)&&"function"==typeof e[Symbol.iterator]})(e)||(e=[e]);for(const r of e){const e=_y(r,t,n,i);e&&(yield e)}}function*Ky(e,t,n){void 0===n&&(n={});const{path:i=[],branch:r=[e],coerce:o=!1,mask:A=!1}=n,s={path:i,branch:r};if(o&&(e=t.coercer(e,s),A&&"type"!==t.type&&xy(t.schema)&&xy(e)&&!Array.isArray(e)))for(const n in e)void 0===t.schema[n]&&delete e[n];let a=!0;for(const n of t.validator(e,s))a=!1,yield[n,void 0];for(let[n,c,u]of t.entries(e,s)){const t=Ky(c,u,{path:void 0===n?i:[...i,n],branch:void 0===n?r:[...r,c],coerce:o,mask:A});for(const i of t)i[0]?(a=!1,yield[i[0],void 0]):o&&(c=i[1],void 0===n?e=c:e instanceof Map?e.set(n,c):e instanceof Set?e.add(c):xy(e)&&(e[n]=c))}if(a)for(const n of t.refiner(e,s))a=!1,yield[n,void 0];a&&(yield[void 0,e])}class Yy{constructor(e){this.TYPE=void 0,this.type=void 0,this.schema=void 0,this.coercer=void 0,this.validator=void 0,this.refiner=void 0,this.entries=void 0;const{type:t,schema:n,validator:i,refiner:r,coercer:o=(e=>e),entries:A=function*(){}}=e;this.type=t,this.schema=n,this.entries=A,this.coercer=o,this.validator=i?(e,t)=>Ly(i(e,t),t,this,e):()=>[],this.refiner=r?(e,t)=>Ly(r(e,t),t,this,e):()=>[]}assert(e){return function(e,t){const n=Jy(e,t);if(n[0])throw n[0]}(e,this)}create(e){return jy(e,this)}is(e){return Wy(e,this)}mask(e){return function(e,t){const n=Jy(e,t,{coerce:!0,mask:!0});if(n[0])throw n[0];return n[1]}(e,this)}validate(e,t){return void 0===t&&(t={}),Jy(e,this,t)}}function jy(e,t){const n=Jy(e,t,{coerce:!0});if(n[0])throw n[0];return n[1]}function Wy(e,t){return!Jy(e,t)[0]}function Jy(e,t,n){void 0===n&&(n={});const i=Ky(e,t,n),r=function(e){const{done:t,value:n}=e.next();return t?void 0:n}(i);return r[0]?[new Gy(r[0],(function*(){for(const e of i)e[0]&&(yield e[0])})),void 0]:[void 0,r[1]]}function qy(e,t){return new Yy({type:e,schema:null,validator:t})}function Zy(e){return new Yy({type:"array",schema:e,*entries(t){if(e&&Array.isArray(t))for(const[n,i]of t.entries())yield[n,i,e]},coercer:e=>Array.isArray(e)?e.slice():e,validator:e=>Array.isArray(e)||"Expected an array value, but received: "+Uy(e)})}function zy(e){const t=Uy(e),n=typeof e;return new Yy({type:"literal",schema:"string"===n||"number"===n||"boolean"===n?e:null,validator:n=>n===e||"Expected the literal `"+t+"`, but received: "+Uy(n)})}function Hy(e){return new Yy({...e,validator:(t,n)=>null===t||e.validator(t,n),refiner:(t,n)=>null===t||e.refiner(t,n)})}function Vy(){return qy("number",(e=>"number"==typeof e&&!isNaN(e)||"Expected a number, but received: "+Uy(e)))}function Xy(e){return new Yy({...e,validator:(t,n)=>void 0===t||e.validator(t,n),refiner:(t,n)=>void 0===t||e.refiner(t,n)})}function $y(){return qy("string",(e=>"string"==typeof e||"Expected a string, but received: "+Uy(e)))}function eB(e){const t=Object.keys(e);return new Yy({type:"type",schema:e,*entries(n){if(xy(n))for(const i of t)yield[i,n[i],e[i]]},validator:e=>xy(e)||"Expected an object, but received: "+Uy(e)})}function tB(e){const t=e.map((e=>e.type)).join(" | ");return new Yy({type:"union",schema:null,coercer:(t,n)=>(e.find((e=>{const[n]=e.validate(t,{coerce:!0});return!n}))||nB()).coercer(t,n),validator(n,i){const r=[];for(const t of e){const[...e]=Ky(n,t,i),[o]=e;if(!o[0])return[];for(const[t]of e)t&&r.push(t)}return["Expected the value to satisfy a union of `"+t+"`, but received: "+Uy(n),...r]}})}function nB(){return qy("unknown",(()=>!0))}async function iB(e,t,n){const i=null!=n?n:e.commitment,{value:r,context:o}=await e.getMultipleAccountsInfoAndContext(t,i);return r.map(((e,n)=>null===e?null:{publicKey:t[n],account:e,context:o}))}const rB=oB(nB());function oB(e){return tB([eB({jsonrpc:zy("2.0"),id:$y(),result:e}),eB({jsonrpc:zy("2.0"),id:$y(),error:eB({code:nB(),message:$y(),data:Xy(qy("any",(()=>!0)))})})])}const AB=(uB=eB({err:Hy(tB([eB({}),$y()])),logs:Hy(Zy($y())),accounts:Xy(Hy(Zy(Hy(eB({executable:qy("boolean",(e=>"boolean"==typeof e)),owner:$y(),lamports:Vy(),data:Zy($y()),rentEpoch:Xy(Vy())}))))),unitsConsumed:Xy(Vy())}),sB=eB({context:eB({slot:Vy()}),value:uB}),aB=oB(sB),cB=rB,new Yy({...aB,coercer:(e,t)=>Wy(e,cB)?aB.coercer((e=>"error"in e?e:{...e,result:jy(e.result,sB)})(e),t):aB.coercer(e,t)}));var sB,aB,cB,uB;class lB{constructor(e,t,n){this.connection=e,this.wallet=t,this.opts=n,this.publicKey=null==t?void 0:t.publicKey}static defaultOptions(){return{preflightCommitment:"processed",commitment:"processed"}}static local(e,t){throw new Error("Provider local is not available on browser.")}static env(){throw new Error("Provider env is not available on browser.")}async sendAndConfirm(e,t,n){var i;void 0===n&&(n=this.opts),e.feePayer=e.feePayer||this.wallet.publicKey,e.recentBlockhash=(await this.connection.getLatestBlockhash(n.preflightCommitment)).blockhash,e=await this.wallet.signTransaction(e),(null!=t?t:[]).forEach((t=>{e.partialSign(t)}));const r=e.serialize();try{return await dB(this.connection,r,n)}catch(t){if(t instanceof hB){const n=await this.connection.getTransaction(Ty(e.signature),{commitment:"confirmed"});if(n){const e=null===(i=n.meta)||void 0===i?void 0:i.logMessages;throw e?new A.SendTransactionError(t.message,e):t}throw t}throw t}}async sendAll(e,t){var n;void 0===t&&(t=this.opts);const i=await this.connection.getLatestBlockhash(t.preflightCommitment);let r=e.map((e=>{var t;let n=e.tx,r=null!==(t=e.signers)&&void 0!==t?t:[];return n.feePayer=n.feePayer||this.wallet.publicKey,n.recentBlockhash=i.blockhash,r.forEach((e=>{n.partialSign(e)})),n}));const o=await this.wallet.signAllTransactions(r),s=[];for(let e=0;e0&&t.sign(...n);const o=t._compile(),s=o.serialize(),a=t._serialize(s).toString("base64"),c={encoding:"base64",commitment:null!=i?i:e.commitment};if(r){const e=(Array.isArray(r)?r:o.nonProgramIds()).map((e=>e.toBase58()));c.accounts={encoding:"base64",addresses:e}}n&&(c.sigVerify=!0);const u=[a,c],l=jy(await e._rpcRequest("simulateTransaction",u),AB);if("error"in l){let e;if("data"in l.error&&(e=l.error.data.logs,e&&Array.isArray(e))){const t="\n ",n=t+e.join(t);Dy.error(l.error.message,n)}throw new A.SendTransactionError("failed to simulate transaction: "+l.error.message,e)}return l.result}(this.connection,e,t,n,i);if(r.value.err)throw new gB(r.value);return r.value}}class gB extends Error{constructor(e,t){super(t),this.simulationResponse=e}}async function dB(e,t,n){const i=n&&{skipPreflight:n.skipPreflight,preflightCommitment:n.preflightCommitment||n.commitment},r=await e.sendRawTransaction(t,i),o=(await e.confirmTransaction(r,n&&n.commitment)).value;if(o.err)throw new hB(`Raw transaction ${r} failed (${JSON.stringify(o)})`);return r}class hB extends Error{constructor(e){super(e)}}function pB(){return null===fB?lB.local():fB}let fB=null;new Set(["anchor-deprecated-state","debug-logs"]);const mB=new Map;function IB(e){return void 0!==mB.get(e)}class yB extends Error{constructor(e){super(e),this.name="IdlError"}}class BB{constructor(e){this.stack=e}static parse(e){var t;const n=/^Program (\w*) invoke/,i=/^Program \w* success/,r=[];for(let o=0;oe.startsWith("Program log: AnchorError")));if(-1===t)return null;const n=e[t],i=[n];let r;if(t+11)return null;i=e[0].match(/([0-9]+)/g)[0]}try{r=parseInt(i)}catch(e){return null}let o=t.get(r);return void 0!==o?new wB(r,o,e.logs):(o=QB.get(r),void 0!==o?new wB(r,o,e.logs):null)}get program(){var e;return null===(e=this._programErrorStack)||void 0===e?void 0:e.stack[this._programErrorStack.stack.length-1]}get programErrorStack(){var e;return null===(e=this._programErrorStack)||void 0===e?void 0:e.stack}toString(){return this.msg}}function EB(e,t){IB("debug-logs")&&Dy.log("Translating error:",e);const n=CB.parse(e.logs);if(n)return n;const i=wB.parse(e,t);if(i)return i;if(e.logs){const t={get:function(t,n){return"programErrorStack"===n?t.programErrorStack.stack:"program"===n?t.programErrorStack.stack[e.programErrorStack.stack.length-1]:Reflect.get(...arguments)}};return e.programErrorStack=BB.parse(e.logs),new Proxy(e,t)}return e}const QB=new Map([[100,"8 byte instruction identifier not provided"],[101,"Fallback functions are not supported"],[102,"The program could not deserialize the given instruction"],[103,"The program could not serialize the given instruction"],[1e3,"The program was compiled without idl instructions"],[1001,"The transaction was given an invalid program for the IDL instruction"],[2e3,"A mut constraint was violated"],[2001,"A has one constraint was violated"],[2002,"A signer constraint was violated"],[2003,"A raw constraint was violated"],[2004,"An owner constraint was violated"],[2005,"A rent exemption constraint was violated"],[2006,"A seeds constraint was violated"],[2007,"An executable constraint was violated"],[2008,"A state constraint was violated"],[2009,"An associated constraint was violated"],[2010,"An associated init constraint was violated"],[2011,"A close constraint was violated"],[2012,"An address constraint was violated"],[2013,"Expected zero account discriminant"],[2014,"A token mint constraint was violated"],[2015,"A token owner constraint was violated"],[2016,"A mint mint authority constraint was violated"],[2017,"A mint freeze authority constraint was violated"],[2018,"A mint decimals constraint was violated"],[2019,"A space constraint was violated"],[2020,"A required account for the constraint is None"],[2500,"A require expression was violated"],[2501,"A require_eq expression was violated"],[2502,"A require_keys_eq expression was violated"],[2503,"A require_neq expression was violated"],[2504,"A require_keys_neq expression was violated"],[2505,"A require_gt expression was violated"],[2506,"A require_gte expression was violated"],[3e3,"The account discriminator was already set on this account"],[3001,"No 8 byte discriminator was found on the account"],[3002,"8 byte discriminator did not match what was expected"],[3003,"Failed to deserialize the account"],[3004,"Failed to serialize the account"],[3005,"Not enough account keys given to the instruction"],[3006,"The given account is not mutable"],[3007,"The given account is owned by a different program than expected"],[3008,"Program ID was not as expected"],[3009,"Program account is not executable"],[3010,"The given account did not sign"],[3011,"The given account is not owned by the system program"],[3012,"The program expected this account to be already initialized"],[3013,"The given account is not a program data account"],[3014,"The given account is not the associated token account"],[3015,"The given public key does not match the required sysvar"],[3016,"The account reallocation exceeds the MAX_PERMITTED_DATA_INCREASE limit"],[3017,"The account was duplicated for more than one reallocation"],[4e3,"The given state account does not have the correct address"],[4100,"The declared program id does not match the actual program id"],[5e3,"The API being used is deprecated and should no longer be used"]]);var bB=function(){return bB=Object.assign||function(e){for(var t,n=1,i=arguments.length;ne.name===i));if(1!==r.length)throw new yB(`Type not found: ${JSON.stringify(e)}`);return NB.typeDefLayout(r[0],t,n)}if("array"in e.type){let i=e.type.array[0],r=e.type.array[1],o=NB.fieldLayout({name:void 0,type:i},t);return My.array(o,r,n)}throw new Error(`Not yet implemented: ${e}`)}}static typeDefLayout(e,t=[],n){if("struct"===e.type.kind){const i=e.type.fields.map((e=>NB.fieldLayout(e,t)));return My.struct(i,n)}if("enum"===e.type.kind){let i=e.type.variants.map((e=>{const n=Sy()(e.name);if(void 0===e.fields)return My.struct([],n);const i=e.fields.map(((e,n)=>e.hasOwnProperty("name")?NB.fieldLayout(e,t):NB.fieldLayout({type:e,name:n.toString()},t)));return My.struct(i,n)}));return void 0!==n?My.rustEnum(i).replicate(n):My.rustEnum(i,n)}throw new Error(`Unknown type kint: ${e}`)}}const TB="state",PB="global";class OB{constructor(e){this.idl=e,this.ixLayout=OB.parseIxLayout(e);const t=new Map;e.instructions.forEach((e=>{const n=RB(PB,e.name);t.set(Et().encode(n),{layout:this.ixLayout.get(e.name),name:e.name})})),e.state&&e.state.methods.map((e=>{const n=RB(TB,e.name);t.set(Et().encode(n),{layout:this.ixLayout.get(e.name),name:e.name})})),this.sighashLayouts=t}encode(e,t){return this._encode(PB,e,t)}encodeState(e,t){return this._encode(TB,e,t)}_encode(e,t,n){const i=Ct.Buffer.alloc(1e3),r=Sy()(t),o=this.ixLayout.get(r);if(!o)throw new Error(`Unknown method: ${r}`);const A=o.encode(n,i),s=i.slice(0,A);return Ct.Buffer.concat([RB(e,t),s])}static parseIxLayout(e){const t=(e.state?e.state.methods:[]).map((t=>{let n=t.args.map((t=>{var n,i;return NB.fieldLayout(t,Array.from([...null!==(n=e.accounts)&&void 0!==n?n:[],...null!==(i=e.types)&&void 0!==i?i:[]]))}));const i=Sy()(t.name);return[i,My.struct(n,i)]})).concat(e.instructions.map((t=>{let n=t.args.map((t=>{var n,i;return NB.fieldLayout(t,Array.from([...null!==(n=e.accounts)&&void 0!==n?n:[],...null!==(i=e.types)&&void 0!==i?i:[]]))}));const i=Sy()(t.name);return[i,My.struct(n,i)]})));return new Map(t)}decode(e,t="hex"){"string"==typeof e&&(e="hex"===t?Ct.Buffer.from(e,"hex"):Et().decode(e));let n=Et().encode(e.slice(0,8)),i=e.slice(8);const r=this.sighashLayouts.get(n);return r?{data:r.layout.decode(i),name:r.name}:null}format(e,t){return FB.format(e,t,this.idl)}}class FB{static format(e,t,n){const i=n.instructions.filter((t=>e.name===t.name))[0];if(void 0===i)return Dy.error("Invalid instruction given"),null;const r=i.args.map((t=>({name:t.name,type:FB.formatIdlType(t.type),data:FB.formatIdlData(t,e.data[t.name],n.types)}))),o=FB.flattenIdlAccounts(i.accounts);return{args:r,accounts:t.map(((e,t)=>t`;if("option"in e)return`Option<${this.formatIdlType(e.option)}>`;if("defined"in e)return e.defined;if("array"in e)return`Array<${e.array[0]}; ${e.array[1]}>`;throw new Error(`Unknown IDL type: ${e}`)}static formatIdlData(e,t,n){if("string"==typeof e.type)return t.toString();if(e.type.hasOwnProperty("vec"))return"["+t.map((t=>this.formatIdlData({name:"",type:e.type.vec},t))).join(", ")+"]";if(e.type.hasOwnProperty("option"))return null===t?"null":this.formatIdlData({name:"",type:e.type.option},t,n);if(e.type.hasOwnProperty("defined")){if(void 0===n)throw new Error("User defined types not provided");const i=n.filter((t=>t.name===e.type.defined));if(1!==i.length)throw new Error(`Type not found: ${e.type.defined}`);return FB.formatIdlDataDefined(i[0],t,n)}return"unknown"}static formatIdlDataDefined(e,t,n){if("struct"===e.type.kind){const i=e.type,r=Object.keys(t).map((e=>{const r=i.fields.filter((t=>t.name===e))[0];if(void 0===r)throw new Error("Unable to find type");return e+": "+FB.formatIdlData(r,t[e],n)})).join(", ");return"{ "+r+" }"}if(0===e.type.variants.length)return"{}";if(e.type.variants[0].name){const i=e.type.variants,r=Object.keys(t)[0],o=t[r],A=Object.keys(o).map((e=>{var t;const A=o[e],s=null===(t=i[r])||void 0===t?void 0:t.filter((t=>t.name===e))[0];if(void 0===s)throw new Error("Unable to find variant");return e+": "+FB.formatIdlData(s,A,n)})).join(", "),s=Sy()(r,{pascalCase:!0});return 0===A.length?s:`${s} { ${A} }`}return"Tuple formatting not yet implemented"}static flattenIdlAccounts(e,t){return e.map((e=>{const n=function(e){const t=e.replace(/([A-Z])/g," $1");return t.charAt(0).toUpperCase()+t.slice(1)}(e.name);if(e.hasOwnProperty("accounts")){const i=t?`${t} > ${n}`:n;return FB.flattenIdlAccounts(e.accounts,i)}return{...e,name:t?`${t} > ${n}`:n}})).flat()}}function RB(e,t){var n;let i=`${e}:${void 0===n&&(n={}),function(e,t){return void 0===t&&(t={}),function(e,t){void 0===t&&(t={});for(var n=t.splitRegexp,i=void 0===n?SB:n,r=t.stripRegexp,o=void 0===r?MB:r,A=t.transform,s=void 0===A?vB:A,a=t.delimiter,c=void 0===a?" ":a,u=DB(DB(e,i,"$1\0$2"),o,"\0"),l=0,g=u.length;"\0"===u.charAt(l);)l++;for(;"\0"===u.charAt(g-1);)g--;return u.slice(l,g).split("\0").map(s).join(c)}(e,kB({delimiter:"."},t))}(t,bB({delimiter:"_"},n))}`;return Ct.Buffer.from(vt.sha256.digest(i)).slice(0,8)}function GB(e,t){if("enum"===t.type.kind){let n=t.type.variants.map((t=>void 0===t.fields?0:t.fields.map((t=>{if("object"!=typeof t||!("name"in t))throw new Error("Tuple enum variants not yet implemented.");return xB(e,t.type)})).reduce(((e,t)=>e+t))));return Math.max(...n)+1}return void 0===t.type.fields?0:t.type.fields.map((t=>xB(e,t.type))).reduce(((e,t)=>e+t),0)}function xB(e,t){var n,i;switch(t){case"bool":case"u8":case"i8":case"bytes":case"string":return 1;case"i16":case"u16":return 2;case"u32":case"i32":case"f32":return 4;case"u64":case"i64":case"f64":return 8;case"u128":case"i128":return 16;case"u256":case"i256":case"publicKey":return 32;default:if("vec"in t)return 1;if("option"in t)return 1+xB(e,t.option);if("coption"in t)return 4+xB(e,t.coption);if("defined"in t){const r=null!==(i=null===(n=e.types)||void 0===n?void 0:n.filter((e=>e.name===t.defined)))&&void 0!==i?i:[];if(1!==r.length)throw new yB(`Type not found: ${JSON.stringify(t)}`);return GB(e,r[0])}if("array"in t){let n=t.array[0],i=t.array[1];return xB(e,n)*i}throw new Error(`Invalid type ${JSON.stringify(t)}`)}}class UB{constructor(e){if(void 0===e.accounts)return void(this.accountLayouts=new Map);const t=e.accounts.map((t=>[t.name,NB.typeDefLayout(t,e.types)]));this.accountLayouts=new Map(t),this.idl=e}async encode(e,t){const n=Ct.Buffer.alloc(1e3),i=this.accountLayouts.get(e);if(!i)throw new Error(`Unknown account: ${e}`);const r=i.encode(t,n);let o=n.slice(0,r),A=UB.accountDiscriminator(e);return Ct.Buffer.concat([A,o])}decode(e,t){if(UB.accountDiscriminator(e).compare(t.slice(0,8)))throw new Error("Invalid account discriminator");return this.decodeUnchecked(e,t)}decodeAny(e){const t=e.slice(0,8),n=Array.from(this.accountLayouts.keys()).find((e=>UB.accountDiscriminator(e).equals(t)));if(!n)throw new Error("Account descriminator not found");return this.decodeUnchecked(n,e)}decodeUnchecked(e,t){const n=t.slice(8),i=this.accountLayouts.get(e);if(!i)throw new Error(`Unknown account: ${e}`);return i.decode(n)}memcmp(e,t){const n=UB.accountDiscriminator(e);return{offset:0,bytes:Et().encode(t?Ct.Buffer.concat([n,t]):n)}}size(e){var t;return 8+(null!==(t=GB(this.idl,e))&&void 0!==t?t:0)}static accountDiscriminator(e){return Ct.Buffer.from(vt.sha256.digest(`account:${Sy()(e,{pascalCase:!0,preserveConsecutiveUppercase:!0})}`)).slice(0,8)}}class _B{constructor(e){if(void 0===e.events)return void(this.layouts=new Map);const t=e.events.map((t=>{let n={name:t.name,type:{kind:"struct",fields:t.fields.map((e=>({name:e.name,type:e.type})))}};return[t.name,NB.typeDefLayout(n,e.types)]}));this.layouts=new Map(t),this.discriminators=new Map(void 0===e.events?[]:e.events.map((e=>{return[Qt.fromByteArray((t=e.name,Ct.Buffer.from(vt.sha256.digest(`event:${t}`)).slice(0,8))),e.name];var t})))}decode(e){let t;try{t=Ct.Buffer.from(Qt.toByteArray(e))}catch(e){return null}const n=Qt.fromByteArray(t.slice(0,8)),i=this.discriminators.get(n);if(void 0===i)return null;const r=this.layouts.get(i);if(!r)throw new Error(`Unknown event: ${i}`);return{data:r.decode(t.slice(8)),name:i}}}class LB{constructor(e){if(void 0===e.state)throw new Error("Idl state not defined.");this.layout=NB.typeDefLayout(e.state.struct,e.types)}async encode(e,t){const n=Ct.Buffer.alloc(1e3),i=this.layout.encode(t,n),r=await KB(e),o=n.slice(0,i);return Ct.Buffer.concat([r,o])}decode(e){const t=e.slice(8);return this.layout.decode(t)}}async function KB(e){let t=IB("anchor-deprecated-state")?"account":"state";return Ct.Buffer.from(vt.sha256.digest(`${t}:${e}`)).slice(0,8)}class YB{constructor(e){if(void 0===e.types)return void(this.typeLayouts=new Map);const t=e.types.map((t=>[t.name,NB.typeDefLayout(t,e.types)]));this.typeLayouts=new Map(t),this.idl=e}encode(e,t){const n=Ct.Buffer.alloc(1e3),i=this.typeLayouts.get(e);if(!i)throw new Error(`Unknown type: ${e}`);const r=i.encode(t,n);return n.slice(0,r)}decode(e,t){const n=this.typeLayouts.get(e);if(!n)throw new Error(`Unknown type: ${e}`);return n.decode(t)}}class jB{constructor(e){this.instruction=new OB(e),this.accounts=new UB(e),this.events=new _B(e),e.state&&(this.state=new LB(e)),this.types=new YB(e)}}var WB="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==i.g?i.g:"undefined"!=typeof self?self:{};class JB{constructor(e,t){if(!Number.isInteger(e))throw new TypeError("span must be an integer");this.span=e,this.property=t}makeDestinationObject(){return{}}decode(e,t){throw new Error("Layout is abstract")}encode(e,t,n){throw new Error("Layout is abstract")}getSpan(e,t){if(0>this.span)throw new RangeError("indeterminate span");return this.span}replicate(e){const t=Object.create(this.constructor.prototype);return Object.assign(t,this),t.property=e,t}fromArray(e){}}var qB=JB;class ZB extends JB{isCount(){throw new Error("ExternalLayout is abstract")}}class zB extends ZB{constructor(e,t,n){if(!(e instanceof JB))throw new TypeError("layout must be a Layout");if(void 0===t)t=0;else if(!Number.isInteger(t))throw new TypeError("offset must be integer or undefined");super(e.span,n||e.property),this.layout=e,this.offset=t}isCount(){return this.layout instanceof HB||this.layout instanceof VB}decode(e,t){return void 0===t&&(t=0),this.layout.decode(e,t+this.offset)}encode(e,t,n){return void 0===n&&(n=0),this.layout.encode(e,t,n+this.offset)}}class HB extends JB{constructor(e,t){if(super(e,t),6e&&t instanceof JB),!0))throw new TypeError("fields must be array of Layout instances");"boolean"==typeof t&&void 0===n&&(n=t,t=void 0);for(const t of e)if(0>t.span&&void 0===t.property)throw new Error("fields cannot contain unnamed variable-length layout");let i=-1;try{i=e.reduce(((e,t)=>e+t.getSpan()),0)}catch(e){}super(i,t),this.fields=e,this.decodePrefixes=!!n}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);let n=0;try{n=this.fields.reduce(((n,i)=>{const r=i.getSpan(e,t);return t+=r,n+r}),0)}catch(e){throw new RangeError("indeterminate span")}return n}decode(e,t){void 0===t&&(t=0);const n=this.makeDestinationObject();for(const i of this.fields)if(void 0!==i.property&&(n[i.property]=i.decode(e,t)),t+=i.getSpan(e,t),this.decodePrefixes&&e.length===t)break;return n}encode(e,t,n){void 0===n&&(n=0);const i=n;let r=0,o=0;for(const i of this.fields){let A=i.span;if(o=0A&&(A=i.getSpan(t,n)))}r=n,n+=A}return r+o-i}fromArray(e){const t=this.makeDestinationObject();for(const n of this.fields)void 0!==n.property&&0n.span?t=-1:0<=t&&(t+=n.span)}}}class rC{constructor(e){this.property=e}decode(){throw new Error("UnionDiscriminator is abstract")}encode(){throw new Error("UnionDiscriminator is abstract")}}class oC extends rC{constructor(e,t){if(!(e instanceof ZB&&e.isCount()))throw new TypeError("layout must be an unsigned integer ExternalLayout");super(t||e.property||"variant"),this.layout=e}decode(e,t){return this.layout.decode(e,t)}encode(e,t,n){return this.layout.encode(e,t,n)}}class AC extends JB{constructor(e,t,n){const i=e instanceof HB||e instanceof VB;if(i)e=new oC(new zB(e));else if(e instanceof ZB&&e.isCount())e=new oC(e);else if(!(e instanceof rC))throw new TypeError("discr must be a UnionDiscriminator or an unsigned integer layout");if(void 0===t&&(t=null),!(null===t||t instanceof JB))throw new TypeError("defaultLayout must be null or a Layout");if(null!==t){if(0>t.span)throw new Error("defaultLayout must have constant span");void 0===t.property&&(t=t.replicate("content"))}let r=-1;t&&(r=t.span,0<=r&&i&&(r+=e.layout.span)),super(r,n),this.discriminator=e,this.usesPrefixDiscriminator=i,this.defaultLayout=t,this.registry={};let o=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(e){return o(e)},this.configGetSourceVariant=function(e){o=e.bind(this)}}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);const n=this.getVariant(e,t);if(!n)throw new Error("unable to determine span for unrecognized variant");return n.getSpan(e,t)}defaultGetSourceVariant(e){if(e.hasOwnProperty(this.discriminator.property)){if(this.defaultLayout&&e.hasOwnProperty(this.defaultLayout.property))return;const t=this.registry[e[this.discriminator.property]];if(t&&(!t.layout||e.hasOwnProperty(t.property)))return t}else for(const t in this.registry){const n=this.registry[t];if(e.hasOwnProperty(n.property))return n}throw new Error("unable to infer src variant")}decode(e,t){let n;void 0===t&&(t=0);const i=this.discriminator,r=i.decode(e,t);let o=this.registry[r];if(void 0===o){let A=0;o=this.defaultLayout,this.usesPrefixDiscriminator&&(A=i.layout.span),n=this.makeDestinationObject(),n[i.property]=r,n[o.property]=this.defaultLayout.decode(e,t+A)}else n=o.decode(e,t);return n}encode(e,t,n){void 0===n&&(n=0);const i=this.getSourceVariant(e);if(void 0===i){const i=this.discriminator,r=this.defaultLayout;let o=0;return this.usesPrefixDiscriminator&&(o=i.layout.span),i.encode(e[i.property],t,n),o+r.encode(e[r.property],t,n+o)}return i.encode(e,t,n)}addVariant(e,t,n){const i=new sC(this,e,t,n);return this.registry[e]=i,i}getVariant(e,t){let n=e;return Ny.isBuffer(e)&&(void 0===t&&(t=0),n=this.discriminator.decode(e,t)),this.registry[n]}}class sC extends JB{constructor(e,t,n,i){if(!(e instanceof AC))throw new TypeError("union must be a Union");if(!Number.isInteger(t)||0>t)throw new TypeError("variant must be a (non-negative) integer");if("string"==typeof n&&void 0===i&&(i=n,n=null),n){if(!(n instanceof JB))throw new TypeError("layout must be a Layout");if(null!==e.defaultLayout&&0<=n.span&&n.span>e.defaultLayout.span)throw new Error("variant span exceeds span of containing union");if("string"!=typeof i)throw new TypeError("variant must have a String property")}let r=e.span;0>e.span&&(r=n?n.span:0,0<=r&&e.usesPrefixDiscriminator&&(r+=e.discriminator.layout.span)),super(r,i),this.union=e,this.variant=t,this.layout=n||null}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);let n=0;return this.union.usesPrefixDiscriminator&&(n=this.union.discriminator.layout.span),n+this.layout.getSpan(e,t+n)}decode(e,t){const n=this.makeDestinationObject();if(void 0===t&&(t=0),this!==this.union.getVariant(e,t))throw new Error("variant mismatch");let i=0;return this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout?n[this.property]=this.layout.decode(e,t+i):this.property?n[this.property]=!0:this.union.usesPrefixDiscriminator&&(n[this.union.discriminator.property]=this.variant),n}encode(e,t,n){void 0===n&&(n=0);let i=0;if(this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout&&!e.hasOwnProperty(this.property))throw new TypeError("variant lacks property "+this.property);this.union.discriminator.encode(this.variant,t,n);let r=i;if(this.layout&&(this.layout.encode(e[this.property],t,n+i),r+=this.layout.getSpan(t,n+i),0<=this.union.span&&r>this.union.span))throw new Error("encoded variant overruns containing union");return r}fromArray(e){if(this.layout)return this.layout.fromArray(e)}}class aC extends JB{constructor(e,t){if(!(e instanceof ZB&&e.isCount()||Number.isInteger(e)&&0<=e))throw new TypeError("length must be positive integer or an unsigned integer ExternalLayout");let n=-1;e instanceof ZB||(n=e),super(n,t),this.length=e}getSpan(e,t){let n=this.span;return 0>n&&(n=this.length.decode(e,t)),n}decode(e,t){void 0===t&&(t=0);let n=this.span;return 0>n&&(n=this.length.decode(e,t)),e.slice(t,t+n)}encode(e,t,n){let i=this.length;if(this.length instanceof ZB&&(i=e.length),!Ny.isBuffer(e)||i!==e.length)throw new TypeError(function(e,t){return t.property?e+"["+t.property+"]":e}("Blob.encode",this)+" requires (length "+i+") Buffer as src");if(n+i>t.length)throw new RangeError("encoding overruns Buffer");return t.write(e.toString("hex"),n,i,"hex"),this.length instanceof ZB&&this.length.encode(i,t,n),i}}var cC=(e,t,n)=>new zB(e,t,n),uC=e=>new HB(4,e),lC=e=>new nC(e),gC=(e,t,n)=>new iC(e,t,n),dC=(e,t,n)=>new AC(e,t,n),hC=(e,t)=>new aC(e,t);class pC extends qB{constructor(e){super(-1,e),this.property=e,this.layout=gC([uC("length"),uC("lengthPadding"),hC(cC(uC(),-8),"chars")],this.property)}encode(e,t,n=0){if(null==e)return this.layout.span;const i={chars:Ny.from(e,"utf8")};return this.layout.encode(i,t,n)}decode(e,t=0){return this.layout.decode(e,t).chars.toString()}getSpan(e,t=0){return uC().span+uC().span+new(y())(new Uint8Array(e).slice(t,t+4),10,"le").toNumber()}}function fC(e){return new pC(e)}function mC(e){return hC(32,e)}const IC=dC(uC("instruction"));IC.addVariant(0,gC([lC("lamports"),lC("space"),mC("owner")]),"createAccount"),IC.addVariant(1,gC([mC("owner")]),"assign"),IC.addVariant(2,gC([lC("lamports")]),"transfer"),IC.addVariant(3,gC([mC("base"),fC("seed"),lC("lamports"),lC("space"),mC("owner")]),"createAccountWithSeed"),IC.addVariant(4,gC([mC("authorized")]),"advanceNonceAccount"),IC.addVariant(5,gC([lC("lamports")]),"withdrawNonceAccount"),IC.addVariant(6,gC([mC("authorized")]),"initializeNonceAccount"),IC.addVariant(7,gC([mC("authorized")]),"authorizeNonceAccount"),IC.addVariant(8,gC([lC("space")]),"allocate"),IC.addVariant(9,gC([mC("base"),fC("seed"),lC("space"),mC("owner")]),"allocateWithSeed"),IC.addVariant(10,gC([mC("base"),fC("seed"),mC("owner")]),"assignWithSeed"),IC.addVariant(11,gC([lC("lamports"),fC("seed"),mC("owner")]),"transferWithSeed"),Math.max(...Object.values(IC.registry).map((e=>e.span)));class yC extends qB{constructor(e,t,n,i){super(e.span,i),this.layout=e,this.decoder=t,this.encoder=n}decode(e,t){return this.decoder(this.layout.decode(e,t))}encode(e,t,n){return this.layout.encode(this.encoder(e),t,n)}getSpan(e,t){return this.layout.getSpan(e,t)}}function BC(e){return new yC(hC(32),(e=>new A.PublicKey(e)),(e=>e.toBuffer()),e)}function CC(e,t){let n=Ct.Buffer.alloc(0);e.forEach((function(e){if(e.length>32)throw new TypeError("Max seed length exceeded");n=Ct.Buffer.concat([n,EC(e)])})),n=Ct.Buffer.concat([n,t.toBuffer(),Ct.Buffer.from("ProgramDerivedAddress")]);let i=(0,vt.sha256)(new Uint8Array(n)),r=new(y())(i,16).toArray(void 0,32);if(A.PublicKey.isOnCurve(new Uint8Array(r)))throw new Error("Invalid seeds, address must fall off the curve");return new A.PublicKey(r)}function wC(e,t){let n,i=255;for(;0!=i;){try{n=CC(e.concat(Ct.Buffer.from([i])),t)}catch(e){if(e instanceof TypeError)throw e;i--;continue}return[n,i]}throw new Error("Unable to find a viable program address nonce")}gC([uC("version"),uC("state"),BC("authorizedPubkey"),BC("nonce"),gC([new tC("lamportsPerSignature")],"feeCalculator")]);const EC=e=>e instanceof Ct.Buffer?e:e instanceof Uint8Array?Ct.Buffer.from(e.buffer,e.byteOffset,e.byteLength):Ct.Buffer.from(e);const QC=new A.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),bC=new A.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");var kC={exports:{}};function vC(e){return"accounts"in e}!function(e,t){var n="undefined"!=typeof self?self:WB,i=function(){function e(){this.fetch=!1,this.DOMException=n.DOMException}return e.prototype=n,new e}();!function(e){!function(t){var n="URLSearchParams"in e,i="Symbol"in e&&"iterator"in Symbol,r="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),o="FormData"in e,A="ArrayBuffer"in e;if(A)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],a=ArrayBuffer.isView||function(e){return e&&s.indexOf(Object.prototype.toString.call(e))>-1};function c(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function u(e){return"string"!=typeof e&&(e=String(e)),e}function l(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return i&&(t[Symbol.iterator]=function(){return t}),t}function g(e){this.map={},e instanceof g?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function d(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function h(e){return new Promise((function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}}))}function p(e){var t=new FileReader,n=h(t);return t.readAsArrayBuffer(e),n}function f(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function m(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:r&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:o&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:n&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():A&&r&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=f(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):A&&(ArrayBuffer.prototype.isPrototypeOf(e)||a(e))?this._bodyArrayBuffer=f(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},r&&(this.blob=function(){var e=d(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?d(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(p)}),this.text=function(){var e=d(this);if(e)return e;if(this._bodyBlob)return function(e){var t=new FileReader,n=h(t);return t.readAsText(e),n}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),i=0;i-1?i:n),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function B(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var n=e.split("="),i=n.shift().replace(/\+/g," "),r=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(i),decodeURIComponent(r))}})),t}function C(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new g(t.headers),this.url=t.url||"",this._initBody(e)}y.prototype.clone=function(){return new y(this,{body:this._bodyInit})},m.call(y.prototype),m.call(C.prototype),C.prototype.clone=function(){return new C(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new g(this.headers),url:this.url})},C.error=function(){var e=new C(null,{status:0,statusText:""});return e.type="error",e};var w=[301,302,303,307,308];C.redirect=function(e,t){if(-1===w.indexOf(t))throw new RangeError("Invalid status code");return new C(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var n=Error(e);this.stack=n.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function E(e,n){return new Promise((function(i,o){var A=new y(e,n);if(A.signal&&A.signal.aborted)return o(new t.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function a(){s.abort()}s.onload=function(){var e,t,n={status:s.status,statusText:s.statusText,headers:(e=s.getAllResponseHeaders()||"",t=new g,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var n=e.split(":"),i=n.shift().trim();if(i){var r=n.join(":").trim();t.append(i,r)}})),t)};n.url="responseURL"in s?s.responseURL:n.headers.get("X-Request-URL");var r="response"in s?s.response:s.responseText;i(new C(r,n))},s.onerror=function(){o(new TypeError("Network request failed"))},s.ontimeout=function(){o(new TypeError("Network request failed"))},s.onabort=function(){o(new t.DOMException("Aborted","AbortError"))},s.open(A.method,A.url,!0),"include"===A.credentials?s.withCredentials=!0:"omit"===A.credentials&&(s.withCredentials=!1),"responseType"in s&&r&&(s.responseType="blob"),A.headers.forEach((function(e,t){s.setRequestHeader(t,e)})),A.signal&&(A.signal.addEventListener("abort",a),s.onreadystatechange=function(){4===s.readyState&&A.signal.removeEventListener("abort",a)}),s.send(void 0===A._bodyInit?null:A._bodyInit)}))}E.polyfill=!0,e.fetch||(e.fetch=E,e.Headers=g,e.Request=y,e.Response=C),t.Headers=g,t.Request=y,t.Response=C,t.fetch=E,Object.defineProperty(t,"__esModule",{value:!0})}({})}(i),i.fetch.ponyfill=!0,delete i.fetch.polyfill;var r=i;(t=r.fetch).default=r.fetch,t.fetch=r.fetch,t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response,e.exports=t}(kC,kC.exports),My.rustEnum([My.struct([],"uninitialized"),My.struct([My.option(My.publicKey(),"authorityAddress")],"buffer"),My.struct([My.publicKey("programdataAddress")],"program"),My.struct([My.u64("slot"),My.option(My.publicKey(),"upgradeAuthorityAddress")],"programData")],void 0,My.u32());const SC=My.struct([My.publicKey("authority"),My.vecU8("data")]);function MC(e,t){var n,i;let r={};const o=e.args?e.args.length:0;if(t.length>o){if(t.length!==o+1)throw new Error(`provided too many arguments ${t} to instruction ${null==e?void 0:e.name} expecting: ${null!==(i=null===(n=e.args)||void 0===n?void 0:n.map((e=>e.name)))&&void 0!==i?i:[]}`);r=t.pop()}return[t,r]}class DC{static build(e,t,n){if("_inner"===e.name)throw new yB("the _inner name is reserved");const i=(...r)=>{const[o,s]=MC(e,[...r]);Fy(e.accounts,s.accounts);const a=i.accounts(s.accounts);return void 0!==s.remainingAccounts&&a.push(...s.remainingAccounts),IB("debug-logs")&&Dy.log("Outgoing account metas:",a),new A.TransactionInstruction({keys:a,programId:n,data:t(e.name,Oy(e,...o))})};return i.accounts=t=>DC.accountsArray(t,e.accounts,n,e.name),i}static accountsArray(e,t,n,i){return e?t.map((t=>{if(void 0!==("accounts"in t?t.accounts:void 0)){const r=e[t.name];return DC.accountsArray(r,t.accounts,n,i).flat()}{const r=t;let o;try{o=Ry(e[t.name])}catch(e){throw new Error(`Wrong input type for account "${t.name}" in the instruction accounts object${void 0!==i?' for instruction "'+i+'"':""}. Expected PublicKey or string.`)}const A=r.isOptional&&o.equals(n);return{pubkey:o,isWritable:r.isMut&&!A,isSigner:r.isSigner&&!A}}})).flat():[]}}class NC{static build(e,t,n,i){return async(...r)=>{var o;const A=t(...r),[,s]=MC(e,[...r]);if(void 0===i.sendAndConfirm)throw new Error("This function requires 'Provider.sendAndConfirm' to be implemented.");try{return await i.sendAndConfirm(A,null!==(o=s.signers)&&void 0!==o?o:[],s.options)}catch(e){throw EB(e,n)}}}}class TC{static build(e,t){return(...n)=>{var i,r,o;const[,s]=MC(e,[...n]),a=new A.Transaction;if(s.preInstructions&&s.instructions)throw new Error("instructions is deprecated, use preInstructions");return null===(i=s.preInstructions)||void 0===i||i.forEach((e=>a.add(e))),null===(r=s.instructions)||void 0===r||r.forEach((e=>a.add(e))),a.add(t(...n)),null===(o=s.postInstructions)||void 0===o||o.forEach((e=>a.add(e))),a}}}class PC{static build(e,t,n,i){if(void 0!==e.state)return new OC(e,n,i,t)}}class OC{get programId(){return this._programId}constructor(e,t,n=pB(),i=new jB(e)){this.provider=n,this.coder=i,this._idl=e,this._programId=t,this._address=FC(t),this._sub=null;const[r,o,s]=(()=>{var r;let o={},s={},a={};return null===(r=e.state)||void 0===r||r.methods.forEach((r=>{const c=DC.build(r,((e,t)=>i.instruction.encodeState(e,t)),t);c.accounts=e=>{const i=function(e,t,n,i){if("new"===n.name){const[n]=wC([],e);if(void 0===t.wallet)throw new Error("This function requires the Provider interface implementor to have a 'wallet' field.");return[{pubkey:t.wallet.publicKey,isWritable:!1,isSigner:!0},{pubkey:FC(e),isWritable:!0,isSigner:!1},{pubkey:n,isWritable:!1,isSigner:!1},{pubkey:A.SystemProgram.programId,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!1,isSigner:!1}]}return Fy(n.accounts,i),[{pubkey:FC(e),isWritable:!0,isSigner:!1}]}(t,n,r,e);return i.concat(DC.accountsArray(e,r.accounts,t,r.name))};const u=TC.build(r,c),l=NC.build(r,u,Py(e),n),g=Sy()(r.name);o[g]=c,s[g]=u,a[g]=l})),[o,s,a]})();this.instruction=r,this.transaction=o,this.rpc=s}async fetch(){const e=this.address(),t=await this.provider.connection.getAccountInfo(e);if(null===t)throw new Error(`Account does not exist ${e.toString()}`);const n=this._idl.state;if(!n)throw new Error("State is not specified in IDL.");if((await KB(n.struct.name)).compare(t.data.slice(0,8)))throw new Error("Invalid account discriminator");return this.coder.state.decode(t.data)}address(){return this._address}subscribe(e){if(null!==this._sub)return this._sub.ee;const t=new(Nt()),n=this.provider.connection.onAccountChange(this.address(),(e=>{const n=this.coder.state.decode(e.data);t.emit("change",n)}),e);return this._sub={ee:t,listener:n},t}unsubscribe(){null!==this._sub&&this.provider.connection.removeAccountChangeListener(this._sub.listener).then((async()=>{this._sub=null})).catch(Dy.error)}}function FC(e){let[t]=wC([],e);return function(e,t,n){const i=Ct.Buffer.concat([e.toBuffer(),Ct.Buffer.from(t),n.toBuffer()]),r=vt.sha256.digest(i);return new A.PublicKey(Ct.Buffer.from(r))}(t,"unversioned",e)}class RC{static build(e,t,n,i){var r;const o={};return null===(r=e.accounts)||void 0===r||r.forEach((r=>{const A=Sy()(r.name);o[A]=new GC(e,r,n,i,t)})),o}}class GC{get size(){return this._size}get programId(){return this._programId}get provider(){return this._provider}get coder(){return this._coder}constructor(e,t,n,i,r){this._idlAccount=t,this._programId=n,this._provider=null!=i?i:pB(),this._coder=null!=r?r:new jB(e),this._size=this._coder.accounts.size(t)}async fetchNullable(e,t){const{data:n}=await this.fetchNullableAndContext(e,t);return n}async fetchNullableAndContext(e,t){const n=await this.getAccountInfoAndContext(e,t),{value:i,context:r}=n;return{data:i&&0!==i.data.length?this._coder.accounts.decode(this._idlAccount.name,i.data):null,context:r}}async fetch(e,t){const{data:n}=await this.fetchNullableAndContext(e,t);if(null===n)throw new Error(`Account does not exist or has no data ${e.toString()}`);return n}async fetchAndContext(e,t){const{data:n,context:i}=await this.fetchNullableAndContext(e,t);if(null===n)throw new Error(`Account does not exist ${e.toString()}`);return{data:n,context:i}}async fetchMultiple(e,t){return(await this.fetchMultipleAndContext(e,t)).map((e=>e?e.data:null))}async fetchMultipleAndContext(e,t){return(await async function(e,t,n){if(t.length<=99)return await iB(e,t,n);{const i=function(e,t){return Array.apply(0,new Array(Math.ceil(e.length/99))).map(((t,n)=>e.slice(99*n,99*(n+1))))}(t);return(await Promise.all(i.map((t=>iB(e,t,n))))).flat()}}(this._provider.connection,e.map((e=>Ry(e))),t)).map((e=>{if(null==e)return null;const{account:t,context:n}=e;return{data:this._coder.accounts.decode(this._idlAccount.name,t.data),context:n}}))}async all(e){const t=this.coder.accounts.memcmp(this._idlAccount.name,e instanceof Ny?e:void 0),n=[];return null!=(null==t?void 0:t.offset)&&null!=(null==t?void 0:t.bytes)&&n.push({memcmp:{offset:t.offset,bytes:t.bytes}}),null!=(null==t?void 0:t.dataSize)&&n.push({dataSize:t.dataSize}),(await this._provider.connection.getProgramAccounts(this._programId,{commitment:this._provider.connection.commitment,filters:[...n,...Array.isArray(e)?e:[]]})).map((({pubkey:e,account:t})=>({publicKey:e,account:this._coder.accounts.decode(this._idlAccount.name,t.data)})))}subscribe(e,t){const n=xC.get(e.toString());if(n)return n.ee;const i=new(Nt());e=Ry(e);const r=this._provider.connection.onAccountChange(e,(e=>{const t=this._coder.accounts.decode(this._idlAccount.name,e.data);i.emit("change",t)}),t);return xC.set(e.toString(),{ee:i,listener:r}),i}async unsubscribe(e){let t=xC.get(e.toString());t?xC&&await this._provider.connection.removeAccountChangeListener(t.listener).then((()=>{xC.delete(e.toString())})).catch(Dy.error):Dy.warn("Address is not subscribed")}async createInstruction(e,t){const n=this.size;if(void 0===this._provider.publicKey)throw new Error("This function requires the Provider interface implementor to have a 'publicKey' field.");return A.SystemProgram.createAccount({fromPubkey:this._provider.publicKey,newAccountPubkey:e.publicKey,space:null!=t?t:n,lamports:await this._provider.connection.getMinimumBalanceForRentExemption(null!=t?t:n),programId:this._programId})}async associated(...e){const t=await this.associatedAddress(...e);return await this.fetch(t)}async associatedAddress(...e){return await async function(e,...t){let n=[Ct.Buffer.from([97,110,99,104,111,114])];t.forEach((e=>{n.push(e instanceof Ct.Buffer?e:Ry(e).toBuffer())}));const[i]=await A.PublicKey.findProgramAddress(n,Ry(e));return i}(this._programId,...e)}async getAccountInfo(e,t){return await this._provider.connection.getAccountInfo(Ry(e),t)}async getAccountInfoAndContext(e,t){return await this._provider.connection.getAccountInfoAndContext(Ry(e),t)}}const xC=new Map,UC="Program log: ",_C="Program data: ",LC=UC.length,KC=_C.length;class YC{constructor(e,t,n){this._programId=e,this._provider=t,this._eventParser=new jC(e,n),this._eventCallbacks=new Map,this._eventListeners=new Map,this._listenerIdCount=0}addEventListener(e,t){var n;let i=this._listenerIdCount;return this._listenerIdCount+=1,this._eventListeners.has(e)||this._eventListeners.set(e,[]),this._eventListeners.set(e,(null!==(n=this._eventListeners.get(e))&&void 0!==n?n:[]).concat(i)),this._eventCallbacks.set(i,[e,t]),void 0!==this._onLogsSubscriptionId||(this._onLogsSubscriptionId=this._provider.connection.onLogs(this._programId,((e,t)=>{if(!e.err)for(const n of this._eventParser.parseLogs(e.logs)){const i=this._eventListeners.get(n.name);i&&i.forEach((i=>{const r=this._eventCallbacks.get(i);if(r){const[,i]=r;i(n.data,t.slot,e.signature)}}))}}))),i}async removeEventListener(e){const t=this._eventCallbacks.get(e);if(!t)throw new Error(`Event listener ${e} doesn't exist!`);const[n]=t;let i=this._eventListeners.get(n);if(!i)throw new Error(`Event listeners don't exist for ${n}!`);this._eventCallbacks.delete(e),i=i.filter((t=>t!==e)),this._eventListeners.set(n,i),0===i.length&&this._eventListeners.delete(n),0==this._eventCallbacks.size&&(Tt.ok(0===this._eventListeners.size),void 0!==this._onLogsSubscriptionId&&(await this._provider.connection.removeOnLogsListener(this._onLogsSubscriptionId),this._onLogsSubscriptionId=void 0))}}class jC{constructor(e,t){this.coder=t,this.programId=e}*parseLogs(e,t=!1){const n=new JC(e),i=new WC;let r=n.next();for(;null!==r;){let[e,o,A]=this.handleLog(i,r,t);e&&(yield e),o&&i.push(o),A&&i.pop(),r=n.next()}}handleLog(e,t,n){return e.stack.length>0&&e.program()===this.programId.toString()?this.handleProgramLog(t,n):[null,...this.handleSystemLog(t)]}handleProgramLog(e,t){if(e.startsWith(UC)||e.startsWith(_C)){const n=e.startsWith(UC)?e.slice(LC):e.slice(KC),i=this.coder.events.decode(n);if(t&&null===i)throw new Error(`Unable to decode event ${n}`);return[i,null,!1]}return[null,...this.handleSystemLog(e)]}handleSystemLog(e){const t=e.split(":")[0];return null!==t.match(/^Program (.*) success/g)?[null,!0]:t.startsWith(`Program ${this.programId.toString()} invoke`)?[this.programId.toString(),!1]:t.includes("invoke")?["cpi",!1]:[null,!1]}}class WC{constructor(){this.stack=[]}program(){return Tt.ok(this.stack.length>0),this.stack[this.stack.length-1]}push(e){this.stack.push(e)}pop(){Tt.ok(this.stack.length>0),this.stack.pop()}}class JC{constructor(e){this.logs=e}next(){if(0===this.logs.length)return null;let e=this.logs[0];return this.logs=this.logs.slice(1),e}}class qC{static build(e,t,n,i,r,o,A){return async(...s)=>{var a;const c=t(...s),[,u]=MC(e,[...s]);let l;if(void 0===i.simulate)throw new Error("This function requires 'Provider.simulate' to be implemented.");try{l=await i.simulate(c,u.signers,null===(a=u.options)||void 0===a?void 0:a.commitment)}catch(e){throw EB(e,n)}if(void 0===l)throw new Error("Unable to simulate transaction");const g=l.logs;if(!g)throw new Error("Simulated logs not found");const d=[];if(A.events){let e=new jC(o,r);for(const t of e.parseLogs(g))d.push(t)}return{events:d,raw:g}}}}function ZC(e){return new VC(hC(8),(e=>$C.fromBuffer(e)),(e=>e.toBuffer()),e)}function zC(e){return new VC(hC(32),(e=>new A.PublicKey(e)),(e=>e.toBuffer()),e)}function HC(e,t){return new XC(e,t)}class VC extends qB{constructor(e,t,n,i){super(e.span,i),this.layout=e,this.decoder=t,this.encoder=n}decode(e,t){return this.decoder(this.layout.decode(e,t))}encode(e,t,n){return this.layout.encode(this.encoder(e),t,n)}getSpan(e,t){return this.layout.getSpan(e,t)}}class XC extends qB{constructor(e,t){super(-1,t),this.layout=e,this.discriminator=uC()}encode(e,t,n=0){return null==e?this.layout.span+this.discriminator.encode(0,t,n):(this.discriminator.encode(1,t,n),this.layout.encode(e,t,n+4)+4)}decode(e,t=0){const n=this.discriminator.decode(e,t);if(0===n)return null;if(1===n)return this.layout.decode(e,t+4);throw new Error("Invalid coption "+this.layout.property)}getSpan(e,t=0){return this.layout.getSpan(e,t+4)+4}}class $C extends(y()){toBuffer(){const e=super.toArray().reverse(),t=Ny.from(e);if(8===t.length)return t;if(t.length>=8)throw new Error("u64 too large");const n=Ny.alloc(8);return t.copy(n),n}static fromBuffer(e){if(8!==e.length)throw new Error(`Invalid buffer length: ${e.length}`);return new $C([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}const ew=gC([zC("mint"),zC("owner"),ZC("amount"),HC(zC(),"delegate"),(e=>{const t=dC(new HB(1,"discriminator"),null,"state");return t.addVariant(0,gC([]),"uninitialized"),t.addVariant(1,gC([]),"initialized"),t.addVariant(2,gC([]),"frozen"),t})(),HC(ZC(),"isNative"),ZC("delegatedAmount"),HC(zC(),"closeAuthority")]);class tw{constructor(e,t,n,i,r,o,A,s){this._accounts=t,this._provider=n,this._programId=i,this._idlIx=r,this._idlTypes=A,this._customResolver=s,this._args=e,this._accountStore=new nw(n,o,this._programId)}args(e){this._args=e}async resolve(){for(await this.resolveConst(this._idlIx.accounts);await this.resolvePdas(this._idlIx.accounts)+await this.resolveRelations(this._idlIx.accounts)+await this.resolveCustom()>0;);}async resolveCustom(){if(this._customResolver){const{accounts:e,resolved:t}=await this._customResolver({args:this._args,accounts:this._accounts,provider:this._provider,programId:this._programId,idlIx:this._idlIx});return this._accounts=e,t}return 0}resolveOptionalsHelper(e,t){const n={};for(const i of t){const t=i.name,r=e[t];void 0!==r&&(rw(r)?vC(i)?n[t]=this.resolveOptionalsHelper(r,i.accounts):n[t]=ow(r,!0):null!==r?n[t]=Ry(r):i.isOptional&&(n[t]=this._programId))}return n}resolveOptionals(e){Object.assign(this._accounts,this.resolveOptionalsHelper(e,this._idlIx.accounts))}get(e){const t=e.reduce(((e,t)=>e&&e[t]),this._accounts);if(t&&t.toBase58)return t}set(e,t){let n=this._accounts;e.forEach(((i,r)=>{r==e.length-1&&(n[i]=t),n[i]=n[i]||{},n=n[i]}))}async resolveConst(e,t=[]){for(let n=0;n0&&!this.get([...t,s])&&Boolean(await this.autoPopulatePda(A,t))&&(n+=1)}return n}async resolveRelations(e,t=[]){let n=0;for(let i=0;i!this.get([...t,Sy()(e)])));if(n+=e.length,e.length>0){const n=await this._accountStore.fetchAccount({publicKey:c});await Promise.all(e.map((async e=>{const i=Sy()(e);return this.set([...t,i],n[i]),n[i]})))}}}return n}async autoPopulatePda(e,t=[]){if(!e.pda||!e.pda.seeds)throw new Error("Must have seeds");const n=await Promise.all(e.pda.seeds.map((e=>this.toBuffer(e,t))));if(n.some((e=>void 0===e)))return;const i=await this.parseProgramId(e,t);if(!i)return;const[r]=await A.PublicKey.findProgramAddress(n,i);this.set([...t,Sy()(e.name)],r)}async parseProgramId(e,t=[]){var n;if(!(null===(n=e.pda)||void 0===n?void 0:n.programId))return this._programId;switch(e.pda.programId.kind){case"const":return new A.PublicKey(this.toBufferConst(e.pda.programId.value));case"arg":return this.argValue(e.pda.programId);case"account":return await this.accountValue(e.pda.programId,t);default:throw new Error(`Unexpected program seed kind: ${e.pda.programId.kind}`)}}async toBuffer(e,t=[]){switch(e.kind){case"const":return this.toBufferConst(e);case"arg":return await this.toBufferArg(e);case"account":return await this.toBufferAccount(e,t);default:throw new Error(`Unexpected seed kind: ${e.kind}`)}}getType(e,t=[]){if(t.length>0&&e.defined){const n=this._idlTypes.find((t=>t.name===e.defined));if(!n)throw new Error(`Cannot find type ${e.defined}`);const i=n.type.fields.find((e=>e.name===t[0]));return this.getType(i.type,t.slice(1))}return e}toBufferConst(e){return this.toBufferValue(this.getType(e.type,(e.path||"").split(".").slice(1)),e.value)}async toBufferArg(e){const t=this.argValue(e);if(void 0!==t)return this.toBufferValue(this.getType(e.type,(e.path||"").split(".").slice(1)),t)}argValue(e){const t=e.path.split("."),n=Sy()(t[0]),i=this._idlIx.args.findIndex((e=>e.name===n));if(-1===i)throw new Error(`Unable to find argument for seed: ${n}`);return t.slice(1).reduce(((e,t)=>(e||{})[t]),this._args[i])}async toBufferAccount(e,t=[]){const n=await this.accountValue(e,t);if(n)return this.toBufferValue(e.type,n)}async accountValue(e,t=[]){const n=e.path.split("."),i=n[0],r=this.get([...t,Sy()(i)]);if(null===r)throw new Error("fieldPubkey is null");if(1===n.length)return r;const o=await this._accountStore.fetchAccount({publicKey:r,name:e.account});return this.parseAccountValue(o,n.slice(1))}parseAccountValue(e,t){let n;for(;t.length>0;)n=e[Sy()(t[0])],t=t.slice(1);return n}toBufferValue(e,t){switch(e){case"u8":return Ny.from([t]);case"u16":let i=Ny.alloc(2);return i.writeUInt16LE(t),i;case"u32":let r=Ny.alloc(4);return r.writeUInt32LE(t),r;case"u64":let o=Ny.alloc(8);return o.writeBigUInt64LE(BigInt(t)),o;case"string":return Ny.from((n=t,(new TextEncoder).encode(n)));case"publicKey":return t.toBuffer();default:if(e.array)return Ny.from(t);throw new Error(`Unexpected seed type: ${e}`)}var n}}tw.CONST_ACCOUNTS={associatedTokenProgram:bC,rent:A.SYSVAR_RENT_PUBKEY,systemProgram:A.SystemProgram.programId,tokenProgram:QC,clock:A.SYSVAR_CLOCK_PUBKEY};class nw{constructor(e,t,n){this._provider=e,this._programId=n,this._cache=new Map,this._idls={},this._idls[n.toBase58()]=t}async ensureIdl(e){if(!this._idls[e.toBase58()]){const t=await cw.fetchIdl(e,this._provider);if(t){const n=new cw(t,e,this._provider);this._idls[e.toBase58()]=n.account}}return this._idls[e.toBase58()]}async fetchAccount({publicKey:e,name:t,programId:n=this._programId}){const i=e.toString();if(!this._cache.has(i))if("TokenAccount"===t){const t=await this._provider.connection.getAccountInfo(e);if(null===t)throw new Error(`invalid account info for ${i}`);const n=(r=t.data,ew.decode(r));this._cache.set(i,n)}else if(t){const r=await this.ensureIdl(n);if(r){const n=r[Sy()(t)];if(n){const t=await n.fetch(e);this._cache.set(i,t)}}}else{const t=await this._provider.connection.getAccountInfo(e);if(null===t)throw new Error(`invalid account info for ${i}`);const n=t.data,r=await this.ensureIdl(t.owner);if(r){const e=Object.values(r)[0];if(!e)throw new Error("No accounts for this program");const t=e.coder.accounts.decodeAny(n);this._cache.set(i,t)}}var r;return this._cache.get(i)}}class iw{static build(e,t,n,i,r,o,A,s,a,c,u){return(...l)=>new Aw(l,i,r,o,A,s,e,t,n,a,c,u)}}function rw(e){return"object"==typeof e&&null!==e&&!("_bn"in e)}function ow(e,t){const n={};for(const i in e){const r=e[i];if(null!==r)n[i]=rw(r)?ow(r,!0):Ry(r);else if(t)throw new Error("Failed to resolve optionals due to IDL type mismatch with input accounts!")}return n}class Aw{constructor(e,t,n,i,r,o,A,s,a,c,u,l){this._ixFn=t,this._txFn=n,this._rpcFn=i,this._simulateFn=r,this._viewFn=o,this._programId=s,this._accounts={},this._remainingAccounts=[],this._signers=[],this._preInstructions=[],this._postInstructions=[],this._autoResolveAccounts=!0,this._args=e,this._accountsResolver=new tw(e,this._accounts,A,s,a,c,u,l)}args(e){this._args=e,this._accountsResolver.args(e)}async pubkeys(){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._accounts}accounts(e){return this._autoResolveAccounts=!0,this._accountsResolver.resolveOptionals(e),this}accountsStrict(e){return this._autoResolveAccounts=!1,this._accountsResolver.resolveOptionals(e),this}signers(e){return this._signers=this._signers.concat(e),this}remainingAccounts(e){return this._remainingAccounts=this._remainingAccounts.concat(e),this}preInstructions(e){return this._preInstructions=this._preInstructions.concat(e),this}postInstructions(e){return this._postInstructions=this._postInstructions.concat(e),this}async rpc(e){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._rpcFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:e})}async rpcAndKeys(e){return{pubkeys:await this.pubkeys(),signature:await this.rpc(e)}}async view(e){if(this._autoResolveAccounts&&await this._accountsResolver.resolve(),!this._viewFn)throw new Error("Method does not support views");return this._viewFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:e})}async simulate(e){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._simulateFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:e})}async instruction(){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._ixFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions})}async prepare(){return{instruction:await this.instruction(),pubkeys:await this.pubkeys(),signers:await this._signers}}async transaction(){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._txFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions})}}class sw{static build(e,t,n,i){const r=t.accounts.find((e=>e.isMut)),o=!!t.returns;if(!r&&o)return async(...r)=>{var o,A;let s=await n(...r);const a=`Program return: ${e} `;let c=s.raw.find((e=>e.startsWith(a)));if(!c)throw new Error("View expected return log");let u=(g=c.slice(a.length),Ct.Buffer.from(Qt.toByteArray(g))),l=t.returns;var g;if(!l)throw new Error("View expected return type");return NB.fieldLayout({type:l},Array.from([...null!==(o=i.accounts)&&void 0!==o?o:[],...null!==(A=i.types)&&void 0!==A?A:[]])).decode(u)}}}class aw{static build(e,t,n,i,r){const o={},A={},s={},a={},c={},u={},l=Py(e),g=e.accounts?RC.build(e,t,n,i):{},d=PC.build(e,t,n,i);return e.instructions.forEach((d=>{const h=DC.build(d,((e,n)=>t.instruction.encode(e,n)),n),p=TC.build(d,h),f=NC.build(d,p,l,i),m=qC.build(d,p,l,i,t,n,e),I=sw.build(n,d,m,e),y=iw.build(i,n,d,h,p,f,m,I,g,e.types||[],r&&r(d)),B=Sy()(d.name);A[B]=h,s[B]=p,o[B]=f,a[B]=m,c[B]=y,I&&(u[B]=I)})),[o,A,s,g,a,c,d,u]}}class cw{get programId(){return this._programId}get idl(){return this._idl}get coder(){return this._coder}get provider(){return this._provider}constructor(e,t,n,i,r){t=Ry(t),n||(n=pB()),this._idl=e,this._provider=n,this._programId=t,this._coder=null!=i?i:new jB(e),this._events=new YC(this._programId,n,this._coder);const[o,A,s,a,c,u,l,g]=aw.build(e,this._coder,t,n,null!=r?r:()=>{});this.rpc=o,this.instruction=A,this.transaction=s,this.account=a,this.simulate=c,this.methods=u,this.state=l,this.views=g}static async at(e,t){const n=Ry(e),i=await cw.fetchIdl(n,t);if(!i)throw new Error(`IDL not found for program: ${e.toString()}`);return new cw(i,n,t)}static async fetchIdl(e,t){t=null!=t?t:pB();const n=Ry(e),i=await async function(e){const t=(await A.PublicKey.findProgramAddress([],e))[0];return await A.PublicKey.createWithSeed(t,"anchor:idl",e)}(n),r=await t.connection.getAccountInfo(i);if(!r)return null;let o=(s=r.data.slice(8),SC.decode(s));var s;const a=(0,Mt.rr)(o.data);return JSON.parse(function(e){return new TextDecoder("utf-8").decode(e)}(a))}addEventListener(e,t){return this._events.addEventListener(e,t)}async removeEventListener(e){return await this._events.removeEventListener(e)}}new A.PublicKey("11111111111111111111111111111111"),i(55872).Buffer,new A.PublicKey("E2hQJAedG6bX2w3rbPQ5XrBnPvC7u3mAorKLvU6XPxwe"),new A.PublicKey("gSbePebfvPy7tRqimPoVecS2UsBvYv46ynrzWocc92s"),new A.PublicKey("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),new A.PublicKey("2gCkR5aaUiTVRiKDB79EWXm5PAVDWtNTnp9mGuu4ZKdY"),new A.PublicKey("GE2GoxjfHo9uPJGDxwVifPFomBybhsh4m5SMqaw7vPBw"),new A.PublicKey("6NpdXrQEpmDZ3jZKmM2rhdmkd3H6QAk23j2x8bkXcHKA"),new A.PublicKey("DV1umVB5KzBkPuav7JbDNNKUzaDk9v2zAUNudR3kKRmZ"),new A.PublicKey("E2hQJAedG6bX2w3rbPQ5XrBnPvC7u3mAorKLvU6XPxwe"),new A.PublicKey("gSbePebfvPy7tRqimPoVecS2UsBvYv46ynrzWocc92s"),new A.PublicKey("EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj"),new A.PublicKey("2gCkR5aaUiTVRiKDB79EWXm5PAVDWtNTnp9mGuu4ZKdY"),new A.PublicKey("GE2GoxjfHo9uPJGDxwVifPFomBybhsh4m5SMqaw7vPBw"),new A.PublicKey("6NpdXrQEpmDZ3jZKmM2rhdmkd3H6QAk23j2x8bkXcHKA"),new A.PublicKey("DV1umVB5KzBkPuav7JbDNNKUzaDk9v2zAUNudR3kKRmZ"),new A.PublicKey("CYPH3o83JX6jY6NkbproSpdmQ5VWJtxjfJ5P8veyYVu3"),new A.PublicKey("FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH"),new A.PublicKey("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),new A.PublicKey("EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v"),new A.PublicKey("8GWTTbNiXdmyZREXbjsZBmCRuzdPrW55dnZGDkTRjWvb"),new A.PublicKey("6x5U4c41tfUYGEbTXofFiHcfyx3rqJZsT4emrLisNGGL");var uw=class{};uw.Active={active:{}},uw.ReduceOnly={reduceOnly:{}},uw.CancelOnly={cancelOnly:{}},uw.Halted={halted:{}};var lw=class{};lw.Limit={limit:{}},lw.ImmediateOrCancel={immediateOrCancel:{}},lw.PostOnly={postOnly:{}};var gw=class{};gw.Limit={limit:{}},gw.ImmediateOrCancel={immediateOrCancel:{}},gw.FillOrKill={fillOrKill:{}},gw.PostOnly={postOnly:{}};var dw=class{};dw.Bid={bid:{}},dw.Ask={ask:{}};var hw=class{};hw.DecrementTake={decrementTake:{}},hw.AbortTransaction={abortTransaction:{}},hw.CancelProvide={cancelProvide:{}};var pw=class{};pw.Create={create:{}},pw.Close={close:{}},pw.SetDelegate={setDelegate:{}};var fw=class{};fw.Create={create:{}},fw.Close={close:{}},fw.ChangeMarginingType={changeMarginingType:{}};var mw=class{};mw.Create={create:{}},mw.Close={close:{}},mw.SweepFee={sweepFee:{}};var Iw=class{};Iw.Create={create:{}},Iw.Close={close:{}};var yw=class{};yw.Public={public:{}},yw.Private={private:{}};var Bw=class{};Bw.Pending={pending:{}},Bw.Active={active:{}},Bw.Revoked={revoked:{}};var Cw=class{};Cw.Default={default:{}},Cw.PairFuture={pairFuture:{}},Cw.PerpetualFuture={perpetualFuture:{}},Cw.PreIDO={PreIDO:{}},Cw.IndexFuture={indexFuture:{}};var ww=class{};ww.CashSettled={cashSettled:{}},ww.PhysicalDelivery={physicalDelivery:{}};var Ew=class{};Ew.Pyth={pyth:{}},Ew.Switchboard={switchboard:{}};var Qw=class{};Qw.Cross={cross:{}},Qw.Isolated={isolated:{}};var bw,kw,vw=class{};function Sw(e,t,n){return e.mul(t).div(n)}function Mw(e,t,n){return e.mul(n).div(t)}function Dw(e,t){const{lockedProfitTracker:{lastReport:n,lockedProfitDegradation:i,lastUpdatedLockedProfit:r},totalAmount:o}=t,A=new(y())(e).sub(n).mul(i);if(A.gt(Sd))return o;const s=r.mul(Sd.sub(A)).div(Sd);return o.sub(s)}vw.Regular={regulard:{}},vw.Whitelisted={whitelisted:{}},i(55872).Buffer,(kw=bw||(bw={})).APY="apy",kw.VAULT_A_RESERVE="vaultAReserve",kw.VAULT_B_RESERVE="vaultBReserve",kw.VAULT_A_LP="vaultALp",kw.VAULT_B_LP="vaultBLp",kw.POOL_VAULT_A_LP="poolVaultALp",kw.POOL_VAULT_B_LP="poolVaultBLp",kw.POOL_LP_MINT="poolLpMint",kw.SYSVAR_CLOCK="sysClockVar";var Nw,Tw=i(13609),Pw=i(89343),Ow=i.n(Pw),Fw=i(49500);!function(e){e[e.MainnetBeta=101]="MainnetBeta",e[e.Testnet=102]="Testnet",e[e.Devnet=103]="Devnet"}(Nw||(Nw={}));const Rw={"mainnet-beta":Nw.MainnetBeta,testnet:Nw.Testnet,devnet:Nw.Devnet},Gw=async e=>(await Promise.all(e.map((async e=>{try{const t=await(0,Tw.fetch)(e);return await t.json()}catch{return Fw.info("@solana/token-registry: falling back to static repository."),Ow()}})))).map((e=>e.tokens)).reduce(((e,t)=>e.concat(t)),[]);var xw;!function(e){e.GitHub="GitHub",e.Static="Static",e.Solana="Solana",e.CDN="CDN"}(xw||(xw={}));class Uw{constructor(){this.resolve=async(e=xw.CDN)=>new _w(await Uw.strategies[e].resolve())}}Uw.strategies={[xw.GitHub]:new class{constructor(){this.repositories=["https://raw.githubusercontent.com/solana-labs/token-list/main/src/tokens/solana.tokenlist.json"],this.resolve=()=>Gw(this.repositories)}},[xw.Static]:new class{constructor(){this.resolve=()=>Ow().tokens}},[xw.Solana]:new class{constructor(){this.repositories=["https://token-list.solana.com/solana.tokenlist.json"],this.resolve=()=>Gw(this.repositories)}},[xw.CDN]:new class{constructor(){this.repositories=["https://cdn.jsdelivr.net/gh/solana-labs/token-list@main/src/tokens/solana.tokenlist.json"],this.resolve=()=>Gw(this.repositories)}}};class _w{constructor(e){this.tokenList=e,this.filterByTag=e=>new _w(this.tokenList.filter((t=>(t.tags||[]).includes(e)))),this.filterByChainId=e=>new _w(this.tokenList.filter((t=>t.chainId===e))),this.excludeByChainId=e=>new _w(this.tokenList.filter((t=>t.chainId!==e))),this.excludeByTag=e=>new _w(this.tokenList.filter((t=>!(t.tags||[]).includes(e)))),this.filterByClusterSlug=e=>{if(e in Rw)return this.filterByChainId(Rw[e]);throw new Error(`Unknown slug: ${e}, please use one of ${Object.keys(Rw)}`)},this.getList=()=>this.tokenList}}const Lw="Invalid mint",Kw="Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB",Yw=(Nw.Devnet,Nw.Devnet,Nw.Devnet,Nw.Devnet,Object.freeze({USDT_USDC:"BAHscmu1NncGS7t4rc5gSBPv1UFEMkvLaon1Ahdd5rHi",USDT_SOL:"Bgf1Sy5kfeDgib4go4NgzHuZwek8wE8NZus56z6uizzi",SOL_MSOL:"2rkn2yM4wJcHPV57T8fPWeBksrfSpiNZoEjRgjtxNDEQ"}),Object.freeze({USDT_USDC:"32D4zRxNc1EssbJieVHfPhZM3rH6CzfUPrWUuWxD9prG",USDC_SOL:"5yuefgbJJpmFNK2iiYbLSpv1aZXq7F9AUKkZKErTYCvs",SOL_STSOL:"7EJSgV2pthhDfb4UiER9vzTqe2eojei9GEQAQnkqJ96e"}),{marinade:new A.PublicKey("8szGkuLTAux9XMgZ2vtY39jVSowEcpBfFfD8hXSEqdGC"),lido:new A.PublicKey("49Yi1TKkNyYjPAFdR9LBvoHcUjuPX4Df5T5yv39w2XTn")}),jw=(Object.freeze({APY:"apy"}),new A.PublicKey("H9NnqW5Thn9dUzW3DRXe2xDhKjwZd4qbjngnZwEvnDuC"),new A.PublicKey("So11111111111111111111111111111111111111112"),new I.BN(1e8),b().BigInt(2)),Ww=e=>b().greaterThan(e,k)?e:b().unaryMinus(e),Jw=(e,t,n)=>{const i=b().multiply(e,jw),r=b().add(t,n);if(b().equal(r,k))return k;let o=k,A=r;for(let e=0;b().greaterThan(Ww(b().subtract(A,o)),v)&&e<20;e++){o=A;let e=A;e=b().divide(b().multiply(e,A),b().multiply(t,jw)),e=b().divide(b().multiply(e,A),b().multiply(n,jw));const s=b().multiply(A,b().add(b().multiply(i,r),b().multiply(e,jw))),a=b().add(b().multiply(A,b().subtract(i,v)),b().multiply(e,b().add(jw,v)));A=b().divide(s,a)}return A},qw=(e,t,n)=>{const i=b().multiply(e,jw),r=b().subtract(b().add(t,b().divide(n,i)),n),o=b().divide(b().multiply(b().multiply(n,n),n),b().multiply(jw,b().multiply(jw,b().multiply(t,i))));let A=k,s=n;for(let e=0;e<20&&b().greaterThan(Ww(b().subtract(s,A)),v);e++)A=s,s=b().divide(b().add(b().multiply(s,s),o),b().add(b().multiply(jw,s),r));return s},Zw=b().BigInt(2),zw=({trade:e},t,n)=>{const i=new te(t,b().multiply(b().subtract(t,v),b().BigInt(4)));return new te(n,1).multiply(e).multiply(i)};new A.PublicKey("SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ"),i(55872).Buffer,new re(0,1e4);const Hw=(new re(20,1e4),new re(50,1e4),new re(50,100),new re(50,100),u.struct([w("adminTradeFeeNumerator"),w("adminTradeFeeDenominator"),w("adminWithdrawFeeNumerator"),w("adminWithdrawFeeDenominator"),w("tradeFeeNumerator"),w("tradeFeeDenominator"),w("withdrawFeeNumerator"),w("withdrawFeeDenominator")],"fees"));var Vw,Xw;u.struct([u.u8("isInitialized"),u.u8("isPaused"),u.u8("nonce"),w("initialAmpFactor"),w("targetAmpFactor"),u.ns64("startRampTs"),u.ns64("stopRampTs"),u.ns64("futureAdminDeadline"),C("futureAdminAccount"),C("adminAccount"),C("tokenAccountA"),C("tokenAccountB"),C("tokenPool"),C("mintA"),C("mintB"),C("adminFeeAccountA"),C("adminFeeAccountB"),Hw]),u.struct([u.u8("instruction"),u.u8("nonce"),w("ampFactor"),Hw]),u.struct([u.u8("instruction"),w("amountIn"),w("minimumAmountOut")]),u.struct([u.u8("instruction"),w("tokenAmountA"),w("tokenAmountB"),w("minimumPoolTokenAmount")]),u.struct([u.u8("instruction"),w("poolTokenAmount"),w("minimumTokenA"),w("minimumTokenB")]),u.struct([u.u8("instruction"),w("poolTokenAmount"),w("minimumTokenAmount")]),u.struct([u.u8("instruction"),w("targetAmp"),u.ns64("stopRampTS")]),u.struct([u.u8("instruction")]),u.struct([u.u8("instruction")]),u.struct([u.u8("instruction")]),u.struct([u.u8("instruction")]),u.struct([u.u8("instruction")]),u.struct([u.u8("instruction")]),u.struct([u.u8("instruction"),Hw]),i(55872).Buffer,function(e){e[e.RAMP_A=100]="RAMP_A",e[e.STOP_RAMP_A=101]="STOP_RAMP_A",e[e.PAUSE=102]="PAUSE",e[e.UNPAUSE=103]="UNPAUSE",e[e.SET_FEE_ACCOUNT=104]="SET_FEE_ACCOUNT",e[e.APPLY_NEW_ADMIN=105]="APPLY_NEW_ADMIN",e[e.COMMIT_NEW_ADMIN=106]="COMMIT_NEW_ADMIN",e[e.SET_NEW_FEES=107]="SET_NEW_FEES"}(Vw||(Vw={})),i(55872).Buffer,i(55872).Buffer,function(e){e[e.INITIALIZE=0]="INITIALIZE",e[e.SWAP=1]="SWAP",e[e.DEPOSIT=2]="DEPOSIT",e[e.WITHDRAW=3]="WITHDRAW",e[e.WITHDRAW_ONE=4]="WITHDRAW_ONE"}(Xw||(Xw={})),i(55872).Buffer,i(49500),i(49500);const $w=JSON.parse('{"version":"0.0.0","name":"marinade_finance","instructions":[{"name":"initialize","accounts":[{"name":"creatorAuthority","isMut":false,"isSigner":true},{"name":"state","isMut":true,"isSigner":false},{"name":"reservePda","isMut":false,"isSigner":false},{"name":"stakeList","isMut":true,"isSigner":false},{"name":"validatorList","isMut":true,"isSigner":false},{"name":"msolMint","isMut":false,"isSigner":false},{"name":"operationalSolAccount","isMut":false,"isSigner":false},{"name":"liqPool","accounts":[{"name":"lpMint","isMut":false,"isSigner":false},{"name":"solLegPda","isMut":false,"isSigner":false},{"name":"msolLeg","isMut":false,"isSigner":false}]},{"name":"treasuryMsolAccount","isMut":false,"isSigner":false},{"name":"clock","isMut":false,"isSigner":false},{"name":"rent","isMut":false,"isSigner":false}],"args":[{"name":"data","type":{"defined":"InitializeData"}}]},{"name":"changeAuthority","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"adminAuthority","isMut":false,"isSigner":true}],"args":[{"name":"data","type":{"defined":"ChangeAuthorityData"}}]},{"name":"addValidator","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"managerAuthority","isMut":false,"isSigner":true},{"name":"validatorList","isMut":true,"isSigner":false},{"name":"validatorVote","isMut":false,"isSigner":false},{"name":"duplicationFlag","isMut":true,"isSigner":false},{"name":"rentPayer","isMut":true,"isSigner":true},{"name":"clock","isMut":false,"isSigner":false},{"name":"rent","isMut":false,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false}],"args":[{"name":"score","type":"u32"}]},{"name":"removeValidator","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"managerAuthority","isMut":false,"isSigner":true},{"name":"validatorList","isMut":true,"isSigner":false},{"name":"duplicationFlag","isMut":true,"isSigner":false},{"name":"operationalSolAccount","isMut":true,"isSigner":false}],"args":[{"name":"index","type":"u32"},{"name":"validatorVote","type":"publicKey"}]},{"name":"setValidatorScore","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"managerAuthority","isMut":false,"isSigner":true},{"name":"validatorList","isMut":true,"isSigner":false}],"args":[{"name":"index","type":"u32"},{"name":"validatorVote","type":"publicKey"},{"name":"score","type":"u32"}]},{"name":"configValidatorSystem","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"managerAuthority","isMut":false,"isSigner":true}],"args":[{"name":"extraRuns","type":"u32"}]},{"name":"deposit","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"msolMint","isMut":true,"isSigner":false},{"name":"liqPoolSolLegPda","isMut":true,"isSigner":false},{"name":"liqPoolMsolLeg","isMut":true,"isSigner":false},{"name":"liqPoolMsolLegAuthority","isMut":false,"isSigner":false},{"name":"reservePda","isMut":true,"isSigner":false},{"name":"transferFrom","isMut":true,"isSigner":true},{"name":"mintTo","isMut":true,"isSigner":false},{"name":"msolMintAuthority","isMut":false,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false}],"args":[{"name":"lamports","type":"u64"}]},{"name":"depositStakeAccount","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"validatorList","isMut":true,"isSigner":false},{"name":"stakeList","isMut":true,"isSigner":false},{"name":"stakeAccount","isMut":true,"isSigner":false},{"name":"stakeAuthority","isMut":false,"isSigner":true},{"name":"duplicationFlag","isMut":true,"isSigner":false},{"name":"rentPayer","isMut":true,"isSigner":true},{"name":"msolMint","isMut":true,"isSigner":false},{"name":"mintTo","isMut":true,"isSigner":false},{"name":"msolMintAuthority","isMut":false,"isSigner":false},{"name":"clock","isMut":false,"isSigner":false},{"name":"rent","isMut":false,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false},{"name":"stakeProgram","isMut":false,"isSigner":false}],"args":[{"name":"validatorIndex","type":"u32"}]},{"name":"liquidUnstake","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"msolMint","isMut":true,"isSigner":false},{"name":"liqPoolSolLegPda","isMut":true,"isSigner":false},{"name":"liqPoolMsolLeg","isMut":true,"isSigner":false},{"name":"treasuryMsolAccount","isMut":true,"isSigner":false},{"name":"getMsolFrom","isMut":true,"isSigner":false},{"name":"getMsolFromAuthority","isMut":false,"isSigner":true},{"name":"transferSolTo","isMut":true,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false}],"args":[{"name":"msolAmount","type":"u64"}]},{"name":"addLiquidity","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"lpMint","isMut":true,"isSigner":false},{"name":"lpMintAuthority","isMut":false,"isSigner":false},{"name":"liqPoolMsolLeg","isMut":false,"isSigner":false},{"name":"liqPoolSolLegPda","isMut":true,"isSigner":false},{"name":"transferFrom","isMut":true,"isSigner":true},{"name":"mintTo","isMut":true,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false}],"args":[{"name":"lamports","type":"u64"}]},{"name":"removeLiquidity","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"lpMint","isMut":true,"isSigner":false},{"name":"burnFrom","isMut":true,"isSigner":false},{"name":"burnFromAuthority","isMut":false,"isSigner":true},{"name":"transferSolTo","isMut":true,"isSigner":false},{"name":"transferMsolTo","isMut":true,"isSigner":false},{"name":"liqPoolSolLegPda","isMut":true,"isSigner":false},{"name":"liqPoolMsolLeg","isMut":true,"isSigner":false},{"name":"liqPoolMsolLegAuthority","isMut":false,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false}],"args":[{"name":"tokens","type":"u64"}]},{"name":"setLpParams","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"adminAuthority","isMut":false,"isSigner":true}],"args":[{"name":"minFee","type":{"defined":"Fee"}},{"name":"maxFee","type":{"defined":"Fee"}},{"name":"liquidityTarget","type":"u64"}]},{"name":"configMarinade","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"adminAuthority","isMut":false,"isSigner":true}],"args":[{"name":"params","type":{"defined":"ConfigMarinadeParams"}}]},{"name":"orderUnstake","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"msolMint","isMut":true,"isSigner":false},{"name":"burnMsolFrom","isMut":true,"isSigner":false},{"name":"burnMsolAuthority","isMut":false,"isSigner":true},{"name":"newTicketAccount","isMut":true,"isSigner":false},{"name":"clock","isMut":false,"isSigner":false},{"name":"rent","isMut":false,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false}],"args":[{"name":"msolAmount","type":"u64"}]},{"name":"claim","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"reservePda","isMut":true,"isSigner":false},{"name":"ticketAccount","isMut":true,"isSigner":false},{"name":"transferSolTo","isMut":true,"isSigner":false},{"name":"clock","isMut":false,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false}],"args":[]},{"name":"stakeReserve","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"validatorList","isMut":true,"isSigner":false},{"name":"stakeList","isMut":true,"isSigner":false},{"name":"validatorVote","isMut":true,"isSigner":false},{"name":"reservePda","isMut":true,"isSigner":false},{"name":"stakeAccount","isMut":true,"isSigner":false},{"name":"stakeDepositAuthority","isMut":false,"isSigner":false},{"name":"clock","isMut":false,"isSigner":false},{"name":"epochSchedule","isMut":false,"isSigner":false},{"name":"rent","isMut":false,"isSigner":false},{"name":"stakeHistory","isMut":false,"isSigner":false},{"name":"stakeConfig","isMut":false,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"stakeProgram","isMut":false,"isSigner":false}],"args":[{"name":"validatorIndex","type":"u32"}]},{"name":"updateActive","accounts":[{"name":"common","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"stakeList","isMut":true,"isSigner":false},{"name":"stakeAccount","isMut":true,"isSigner":false},{"name":"stakeWithdrawAuthority","isMut":false,"isSigner":false},{"name":"reservePda","isMut":true,"isSigner":false},{"name":"msolMint","isMut":true,"isSigner":false},{"name":"msolMintAuthority","isMut":false,"isSigner":false},{"name":"treasuryMsolAccount","isMut":true,"isSigner":false},{"name":"clock","isMut":false,"isSigner":false},{"name":"stakeHistory","isMut":false,"isSigner":false},{"name":"stakeProgram","isMut":false,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false}]},{"name":"validatorList","isMut":true,"isSigner":false}],"args":[{"name":"stakeIndex","type":"u32"},{"name":"validatorIndex","type":"u32"}]},{"name":"updateDeactivated","accounts":[{"name":"common","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"stakeList","isMut":true,"isSigner":false},{"name":"stakeAccount","isMut":true,"isSigner":false},{"name":"stakeWithdrawAuthority","isMut":false,"isSigner":false},{"name":"reservePda","isMut":true,"isSigner":false},{"name":"msolMint","isMut":true,"isSigner":false},{"name":"msolMintAuthority","isMut":false,"isSigner":false},{"name":"treasuryMsolAccount","isMut":true,"isSigner":false},{"name":"clock","isMut":false,"isSigner":false},{"name":"stakeHistory","isMut":false,"isSigner":false},{"name":"stakeProgram","isMut":false,"isSigner":false},{"name":"tokenProgram","isMut":false,"isSigner":false}]},{"name":"operationalSolAccount","isMut":true,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false}],"args":[{"name":"stakeIndex","type":"u32"}]},{"name":"deactivateStake","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"reservePda","isMut":false,"isSigner":false},{"name":"validatorList","isMut":true,"isSigner":false},{"name":"stakeList","isMut":true,"isSigner":false},{"name":"stakeAccount","isMut":true,"isSigner":false},{"name":"stakeDepositAuthority","isMut":false,"isSigner":false},{"name":"splitStakeAccount","isMut":true,"isSigner":true},{"name":"splitStakeRentPayer","isMut":true,"isSigner":true},{"name":"clock","isMut":false,"isSigner":false},{"name":"rent","isMut":false,"isSigner":false},{"name":"epochSchedule","isMut":false,"isSigner":false},{"name":"stakeHistory","isMut":false,"isSigner":false},{"name":"systemProgram","isMut":false,"isSigner":false},{"name":"stakeProgram","isMut":false,"isSigner":false}],"args":[{"name":"stakeIndex","type":"u32"},{"name":"validatorIndex","type":"u32"}]},{"name":"emergencyUnstake","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"validatorManagerAuthority","isMut":false,"isSigner":true},{"name":"validatorList","isMut":true,"isSigner":false},{"name":"stakeList","isMut":true,"isSigner":false},{"name":"stakeAccount","isMut":true,"isSigner":false},{"name":"stakeDepositAuthority","isMut":false,"isSigner":false},{"name":"clock","isMut":false,"isSigner":false},{"name":"stakeProgram","isMut":false,"isSigner":false}],"args":[{"name":"stakeIndex","type":"u32"},{"name":"validatorIndex","type":"u32"}]},{"name":"mergeStakes","accounts":[{"name":"state","isMut":true,"isSigner":false},{"name":"stakeList","isMut":true,"isSigner":false},{"name":"validatorList","isMut":true,"isSigner":false},{"name":"destinationStake","isMut":true,"isSigner":false},{"name":"sourceStake","isMut":true,"isSigner":false},{"name":"stakeDepositAuthority","isMut":false,"isSigner":false},{"name":"stakeWithdrawAuthority","isMut":false,"isSigner":false},{"name":"operationalSolAccount","isMut":true,"isSigner":false},{"name":"clock","isMut":false,"isSigner":false},{"name":"stakeHistory","isMut":false,"isSigner":false},{"name":"stakeProgram","isMut":false,"isSigner":false}],"args":[{"name":"destinationStakeIndex","type":"u32"},{"name":"sourceStakeIndex","type":"u32"},{"name":"validatorIndex","type":"u32"}]}],"accounts":[{"name":"State","type":{"kind":"struct","fields":[{"name":"msolMint","type":"publicKey"},{"name":"adminAuthority","type":"publicKey"},{"name":"operationalSolAccount","type":"publicKey"},{"name":"treasuryMsolAccount","type":"publicKey"},{"name":"reserveBumpSeed","type":"u8"},{"name":"msolMintAuthorityBumpSeed","type":"u8"},{"name":"rentExemptForTokenAcc","type":"u64"},{"name":"rewardFee","type":{"defined":"Fee"}},{"name":"stakeSystem","type":{"defined":"StakeSystem"}},{"name":"validatorSystem","type":{"defined":"ValidatorSystem"}},{"name":"liqPool","type":{"defined":"LiqPool"}},{"name":"availableReserveBalance","type":"u64"},{"name":"msolSupply","type":"u64"},{"name":"msolPrice","type":"u64"},{"name":"circulatingTicketCount","type":"u64"},{"name":"circulatingTicketBalance","type":"u64"},{"name":"lentFromReserve","type":"u64"},{"name":"minDeposit","type":"u64"},{"name":"minWithdraw","type":"u64"},{"name":"stakingSolCap","type":"u64"},{"name":"emergencyCoolingDown","type":"u64"}]}},{"name":"TicketAccountData","type":{"kind":"struct","fields":[{"name":"stateAddress","type":"publicKey"},{"name":"beneficiary","type":"publicKey"},{"name":"lamportsAmount","type":"u64"},{"name":"createdEpoch","type":"u64"}]}}],"types":[{"name":"Fee","type":{"kind":"struct","fields":[{"name":"basisPoints","type":"u32"}]}},{"name":"InitializeData","type":{"kind":"struct","fields":[{"name":"adminAuthority","type":"publicKey"},{"name":"validatorManagerAuthority","type":"publicKey"},{"name":"minStake","type":"u64"},{"name":"rewardFee","type":{"defined":"Fee"}},{"name":"liqPool","type":{"defined":"LiqPoolInitializeData"}},{"name":"additionalStakeRecordSpace","type":"u32"},{"name":"additionalValidatorRecordSpace","type":"u32"},{"name":"slotsForStakeDelta","type":"u64"}]}},{"name":"LiqPoolInitializeData","type":{"kind":"struct","fields":[{"name":"lpLiquidityTarget","type":"u64"},{"name":"lpMaxFee","type":{"defined":"Fee"}},{"name":"lpMinFee","type":{"defined":"Fee"}},{"name":"lpTreasuryCut","type":{"defined":"Fee"}}]}},{"name":"ChangeAuthorityData","type":{"kind":"struct","fields":[{"name":"admin","type":{"option":"publicKey"}},{"name":"validatorManager","type":{"option":"publicKey"}},{"name":"operationalSolAccount","type":{"option":"publicKey"}},{"name":"treasuryMsolAccount","type":{"option":"publicKey"}}]}},{"name":"ConfigMarinadeParams","type":{"kind":"struct","fields":[{"name":"rewardsFee","type":{"option":{"defined":"Fee"}}},{"name":"slotsForStakeDelta","type":{"option":"u64"}},{"name":"minStake","type":{"option":"u64"}},{"name":"minDeposit","type":{"option":"u64"}},{"name":"minWithdraw","type":{"option":"u64"}},{"name":"stakingSolCap","type":{"option":"u64"}},{"name":"liquiditySolCap","type":{"option":"u64"}},{"name":"autoAddValidatorEnabled","type":{"option":"bool"}}]}},{"name":"LiqPool","type":{"kind":"struct","fields":[{"name":"lpMint","type":"publicKey"},{"name":"lpMintAuthorityBumpSeed","type":"u8"},{"name":"solLegBumpSeed","type":"u8"},{"name":"msolLegAuthorityBumpSeed","type":"u8"},{"name":"msolLeg","type":"publicKey"},{"name":"lpLiquidityTarget","type":"u64"},{"name":"lpMaxFee","type":{"defined":"Fee"}},{"name":"lpMinFee","type":{"defined":"Fee"}},{"name":"treasuryCut","type":{"defined":"Fee"}},{"name":"lpSupply","type":"u64"},{"name":"lentFromSolLeg","type":"u64"},{"name":"liquiditySolCap","type":"u64"}]}},{"name":"List","type":{"kind":"struct","fields":[{"name":"account","type":"publicKey"},{"name":"itemSize","type":"u32"},{"name":"count","type":"u32"},{"name":"newAccount","type":"publicKey"},{"name":"copiedCount","type":"u32"}]}},{"name":"StakeRecord","type":{"kind":"struct","fields":[{"name":"stakeAccount","type":"publicKey"},{"name":"lastUpdateDelegatedLamports","type":"u64"},{"name":"lastUpdateEpoch","type":"u64"},{"name":"isEmergencyUnstaking","type":"u8"}]}},{"name":"StakeSystem","type":{"kind":"struct","fields":[{"name":"stakeList","type":{"defined":"List"}},{"name":"delayedUnstakeCoolingDown","type":"u64"},{"name":"stakeDepositBumpSeed","type":"u8"},{"name":"stakeWithdrawBumpSeed","type":"u8"},{"name":"slotsForStakeDelta","type":"u64"},{"name":"lastStakeDeltaEpoch","type":"u64"},{"name":"minStake","type":"u64"},{"name":"extraStakeDeltaRuns","type":"u32"}]}},{"name":"ValidatorRecord","type":{"kind":"struct","fields":[{"name":"validatorAccount","type":"publicKey"},{"name":"activeBalance","type":"u64"},{"name":"score","type":"u32"},{"name":"lastStakeDeltaEpoch","type":"u64"},{"name":"duplicationFlagBumpSeed","type":"u8"}]}},{"name":"ValidatorSystem","type":{"kind":"struct","fields":[{"name":"validatorList","type":{"defined":"List"}},{"name":"managerAuthority","type":"publicKey"},{"name":"totalValidatorScore","type":"u32"},{"name":"totalActiveBalance","type":"u64"},{"name":"autoAddValidatorEnabled","type":"u8"}]}},{"name":"CommonError","type":{"kind":"enum","variants":[{"name":"InvalidProgramId","fields":["publicKey"]},{"name":"UnexpectedAccount","fields":["publicKey"]},{"name":"CalculationFailure"},{"name":"AccountWithLockup"},{"name":"NumberTooLow","fields":["u64","u64"]},{"name":"NumberTooHigh","fields":["u64","u64"]},{"name":"FeeTooHigh","fields":[{"defined":"Fee"}]},{"name":"FeesWrongWayRound","fields":[{"defined":"Fee"},{"defined":"Fee"}]},{"name":"LiquidityTargetTooLow"},{"name":"TicketNotDue","fields":["u64"]},{"name":"TicketNotReady"},{"name":"WrongBeneficiary"},{"name":"InsufficientLiquidity"},{"name":"InvalidValidator"}]}},{"name":"InitializeError","type":{"kind":"enum","variants":[{"name":"WrongReserveOwner","fields":["publicKey"]},{"name":"NonEmptyReserveData","fields":[{"defined":"usize"}]},{"name":"InvalidInitialReserveLamports","fields":["u64"]},{"name":"ZeroValidatorChunkSize"},{"name":"TooBigValidatorChunkSize","fields":["u32"]},{"name":"ZeroCreditChunkSize"},{"name":"TooBigCreditChunkSize","fields":["u32"]},{"name":"TooLowCreditFee","fields":["u64"]},{"name":"InvalidMintAuthority","fields":[{"name":"expected","type":"publicKey"},{"name":"got","type":"publicKey"}]},{"name":"MintHasInitialSupply","fields":["u64"]},{"name":"InvalidOwnerFeeState","fields":[{"defined":"spl_token::state::AccountState"}]}]}}]}');const eE=new(y())(1e6),tE=new(y())(600);class nE{constructor(e,t,n,i,r){this.amp=e,this.tokenMultiplier=t,this.depeg=n,this.extraAccounts=i,this.onChainTime=r}getBasePoolVirtualPrice(e){if(e.marinade){const e=this.extraAccounts.get(Yw.marinade.toBase58());return new Ai($w).accounts.decode("State",e.data).msolPrice.mul(eE).div(new(y())(4294967296))}if(e.lido){const e=this.extraAccounts.get(Yw.lido.toBase58()),t=new(y())(e.data.readBigInt64LE(73).toString());return new(y())(e.data.readBigInt64LE(81).toString()).mul(eE).div(t)}throw new Error("UnsupportedBasePool")}updateDepegInfoIfExpired(){return function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){e.done?r(e.value):function(e){return e instanceof n?e:new n((function(t){t(e)}))}(e.value).then(A,s)}a((i=i.apply(e,t||[])).next())}))}(this,void 0,void 0,(function*(){this.depeg.depegType.none||this.onChainTime.toNumber()>this.depeg.baseCacheUpdated.add(tE).toNumber()&&(this.depeg.baseVirtualPrice=this.getBasePoolVirtualPrice(this.depeg.depegType),this.depeg.baseCacheUpdated=new(y())(this.onChainTime))}))}upscaleTokenA(e){const{tokenAMultiplier:t}=this.tokenMultiplier,n=e.mul(t);return this.depeg.depegType.none?n:n.mul(eE)}downscaleTokenA(e){const{tokenAMultiplier:t}=this.tokenMultiplier,n=e.div(t);return this.depeg.depegType.none?n:n.div(eE)}upscaleTokenB(e){const{tokenBMultiplier:t}=this.tokenMultiplier,n=e.mul(t);return this.depeg.depegType.none?n:n.mul(this.depeg.baseVirtualPrice)}downscaleTokenB(e){const{tokenBMultiplier:t}=this.tokenMultiplier,n=e.div(t);return this.depeg.depegType.none?n:n.div(this.depeg.baseVirtualPrice)}computeOutAmountWithoutSlippage(e,t,n,i){const r=new(y())(16),o=new(y())(4),A=new(y())(2),s=new(y())(this.amp),a=s.mul(r),c=a,u=i.mul(o).sub(i.mul(s).mul(r)),l=A.mul(a).mul(t).add(c.mul(n)).add(u).mul(n),g=a.mul(t).add(A.mul(c).mul(n).add(u)).mul(t);return e.mul(l).div(g)}computeOutAmount(e,t,n,i){this.updateDepegInfoIfExpired();const[r,o,A]=i==rE.AToB?[this.upscaleTokenA(e),this.upscaleTokenA(t),this.upscaleTokenB(n)]:[this.upscaleTokenB(e),this.upscaleTokenB(t),this.upscaleTokenA(n)],s=Jw(b().BigInt(this.amp),b().BigInt(o.toString()),b().BigInt(A.toString())),a=b().add(b().BigInt(o.toString()),b().BigInt(r.toString())),c=qw(b().BigInt(this.amp),a,s);let u=A.sub(new(y())(c.toString())),l=this.computeOutAmountWithoutSlippage(r,o,A,new(y())(s.toString()));return[u,l]=i==rE.AToB?[this.downscaleTokenB(u),this.downscaleTokenB(l)]:[this.downscaleTokenA(u),this.downscaleTokenA(l)],{outAmount:u,priceImpact:uE(u,l)}}computeD(e,t){this.updateDepegInfoIfExpired();const n=this.upscaleTokenA(e),i=this.upscaleTokenB(t),r=new(y())(Jw(b().BigInt(this.amp),b().BigInt(n.toString()),b().BigInt(i.toString())).toString());return this.depeg.depegType.none?r:r.div(eE)}computeInAmount(e,t,n,i){this.updateDepegInfoIfExpired();const[r,o,A]=i==rE.AToB?[this.upscaleTokenB(e),this.upscaleTokenA(t),this.upscaleTokenB(n)]:[this.upscaleTokenA(e),this.upscaleTokenB(t),this.upscaleTokenA(n)],s=Jw(b().BigInt(this.amp),b().BigInt(o.toString()),b().BigInt(A.toString())),a=b().subtract(b().BigInt(A.toString()),b().BigInt(r.toString())),c=qw(b().BigInt(this.amp),a,s),u=new(y())(c.toString()).sub(t);return i==rE.AToB?this.downscaleTokenA(u):this.downscaleTokenB(u)}computeImbalanceDeposit(e,t,n,i,r,o){this.updateDepegInfoIfExpired();const[A,s,a,c]=[this.upscaleTokenA(e),this.upscaleTokenB(t),this.upscaleTokenA(n),this.upscaleTokenB(i)],{mintAmount:u}=((e,t,n)=>{if(b().equal(t,k)&&b().equal(n,k)){const t=new Qe(e.lpTotalSupply.token,k);return{mintAmountBeforeFees:t,mintAmount:t,fees:t}}const i=e.ampFactor,[r,o]=e.reserves,A=Jw(i,r.amount.raw,o.amount.raw),s=Jw(i,b().add(r.amount.raw,t),b().add(o.amount.raw,n));if(b().lessThan(s,A))throw new Error("New D cannot be less than previous D");const a=e.reserves.map((e=>e.amount.raw)),c=[b().add(r.amount.raw,t),b().add(o.amount.raw,n)].map(((t,n)=>{const i=a[n],r=new te(s,A).multiply(i).subtract(t),o=r.greaterThan(0)?r:r.multiply(-1),c=zw(e.fees,Zw,b().BigInt(o.toFixed(0)));return b().subtract(t,b().BigInt(c.toFixed(0)))})),u=Jw(i,c[0],c[1]),l=e.lpTotalSupply,g=b().divide(b().multiply(l.raw,b().subtract(u,A)),A),d=new Qe(e.lpTotalSupply.token,g),h=b().divide(b().multiply(l.raw,b().subtract(s,A)),A),p=new Qe(e.lpTotalSupply.token,b().subtract(h,g));return{mintAmount:d,mintAmountBeforeFees:new Qe(e.lpTotalSupply.token,h),fees:p}})(iE.toExchange(this.amp,a,c,r,o),b().BigInt(A.toString()),b().BigInt(s.toString()));return u.toU64()}computeWithdrawOne(e,t,n,i,r,o){this.updateDepegInfoIfExpired();const[A,s]=[this.upscaleTokenA(n),this.upscaleTokenB(i)],a=iE.toExchange(this.amp,A,s,t,r),c=o==rE.BToA?a.reserves[0].amount.token:a.reserves[1].amount.token,{withdrawAmountBeforeFees:u}=(({exchange:e,poolTokenAmount:t,withdrawToken:n})=>{var i,r,o,A;if(t.equalTo(0)){const e=new Qe(n,k);return{withdrawAmount:e,withdrawAmountBeforeFees:e,swapFee:e,withdrawFee:e,lpSwapFee:e,lpWithdrawFee:e,adminSwapFee:e,adminWithdrawFee:e}}const{ampFactor:s,fees:a}=e,[c,u]=[null!==(r=null===(i=e.reserves.find((e=>e.amount.token.equals(n))))||void 0===i?void 0:i.amount.raw)&&void 0!==r?r:k,null!==(A=null===(o=e.reserves.find((e=>!e.amount.token.equals(n))))||void 0===o?void 0:o.amount.raw)&&void 0!==A?A:k],l=Jw(s,c,u),g=b().subtract(l,b().divide(b().multiply(t.raw,l),e.lpTotalSupply.raw)),d=qw(s,u,g),h=b().subtract(b().divide(b().multiply(c,g),l),d),p=b().subtract(u,b().divide(b().multiply(u,g),l)),f=new te(c.toString(),1).subtract(zw(a,Zw,h)),m=new te(u.toString(),1).subtract(zw(a,Zw,p)),I=f.subtract(qw(s,b().BigInt(m.toFixed(0)),g).toString()),y=b().subtract(c,d),B=new te(y.toString(),1).subtract(I),C=I.multiply(a.withdraw.asFraction),w=B.multiply(a.adminTrade.asFraction),E=C.multiply(a.adminWithdraw.asFraction),Q=B.subtract(w),v=C.subtract(E),S=I.subtract(C).subtract(B);return{withdrawAmount:new Qe(n,S.toFixed(0)),withdrawAmountBeforeFees:new Qe(n,I.toFixed(0)),swapFee:new Qe(n,B.toFixed(0)),withdrawFee:new Qe(n,C.toFixed(0)),lpSwapFee:new Qe(n,Q.toFixed(0)),lpWithdrawFee:new Qe(n,v.toFixed(0)),adminSwapFee:new Qe(n,w.toFixed(0)),adminWithdrawFee:new Qe(n,E.toFixed(0))}})({exchange:a,poolTokenAmount:iE.toTokenAmount(e),withdrawToken:c});return o==rE.AToB?this.downscaleTokenB(u.toU64()):this.downscaleTokenA(u.toU64())}}class iE{static toExchange(e,t,n,i,r){return{ampFactor:b().BigInt(e),fees:this.toFees(r),lpTotalSupply:this.toTokenAmount(i),reserves:[this.toReserve(t),this.toReserve(n)]}}static toFees(e){return{adminTrade:new re(e.ownerTradeFeeNumerator,e.ownerTradeFeeDenominator),trade:new re(e.tradeFeeNumerator,e.tradeFeeDenominator),adminWithdraw:new re(0,100),withdraw:new re(0,100)}}static toTokenAmount(e){return new oI(new Hm({address:A.Keypair.generate().publicKey.toBase58(),chainId:tI.MainnetBeta,decimals:0,name:"",symbol:""}),e.toString())}static toReserve(e){return{adminFeeAccount:A.PublicKey.default,amount:this.toTokenAmount(e),reserveAccount:A.PublicKey.default}}}var rE,oE,AE=i(39066),sE=i.n(AE);function aE(e,t){let n=e.div(t);if(n.eq(new(y())(0)))throw new Error("ceilDiv result in zero");let i=e.mod(t);return i.gt(new(y())(0))&&(n=n.add(new(y())(1)),t=e.div(n),i=e.mod(n),i.gt(new(y())(0))&&(t=t.add(new(y())(1)))),[n,t]}class cE{constructor(){}computeOutAmountWithoutSlippage(e,t,n){return e.mul(n).div(t)}computeOutAmount(e,t,n,i){let r=t.mul(n),[o,A]=aE(r,t.add(e)),s=n.sub(o);if(s.eq(new(y())(0)))throw new Error("Swap result in zero");const a=this.computeOutAmountWithoutSlippage(e,t,n);return{outAmount:s,priceImpact:uE(s,a)}}computeD(e,t){return sE()(e.mul(t))}computeInAmount(e,t,n,i){let r=t.mul(n),[o,A]=aE(r,n.sub(e)),s=o.sub(t);if(s.eq(new(y())(0)))throw new Error("Swap result in zero");return s}computeImbalanceDeposit(e,t,n,i,r,o){throw new Error("UnsupportedOperation")}computeWithdrawOne(e,t,n,i,r,o){throw new Error("UnsupportedOperation")}}(oE=rE||(rE={}))[oE.AToB=0]="AToB",oE[oE.BToA=1]="BToA";const uE=(e,t)=>{const n=t.sub(e);return new NA(n.toString()).div(new NA(t.toString()))};i(49500),i(55872).Buffer;i(55872).Buffer;var lE=i(62160),gE=(i(64929),i(55872).Buffer),dE=i(49500),hE=Object.defineProperty,pE=Object.getOwnPropertyDescriptor,fE=(e,t,n,i)=>{for(var r,o=i>1?void 0:i?pE(t,n):t,A=e.length-1;A>=0;A--)(r=e[A])&&(o=(i?r(t,n,o):r(o))||o);return i&&o&&hE(t,n,o),o},mE={};((e,t)=>{for(var n in t)hE(e,n,{get:t[n],enumerable:!0})})(mE,{accounts:()=>CE,default:()=>QE,errors:()=>EE,instructions:()=>BE,name:()=>yE,types:()=>wE,version:()=>IE});var IE="0.1.0",yE="whirlpool",BE=[{name:"initializeConfig",accounts:[{name:"config",isMut:!0,isSigner:!0},{name:"funder",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"feeAuthority",type:"publicKey"},{name:"collectProtocolFeesAuthority",type:"publicKey"},{name:"rewardEmissionsSuperAuthority",type:"publicKey"},{name:"defaultProtocolFeeRate",type:"u16"}]},{name:"initializePool",accounts:[{name:"whirlpoolsConfig",isMut:!1,isSigner:!1},{name:"tokenMintA",isMut:!1,isSigner:!1},{name:"tokenMintB",isMut:!1,isSigner:!1},{name:"funder",isMut:!0,isSigner:!0},{name:"whirlpool",isMut:!0,isSigner:!1},{name:"tokenVaultA",isMut:!0,isSigner:!0},{name:"tokenVaultB",isMut:!0,isSigner:!0},{name:"feeTier",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"bumps",type:{defined:"WhirlpoolBumps"}},{name:"tickSpacing",type:"u16"},{name:"initialSqrtPrice",type:"u128"}]},{name:"initializeTickArray",accounts:[{name:"whirlpool",isMut:!1,isSigner:!1},{name:"funder",isMut:!0,isSigner:!0},{name:"tickArray",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"startTickIndex",type:"i32"}]},{name:"initializeFeeTier",accounts:[{name:"config",isMut:!1,isSigner:!1},{name:"feeTier",isMut:!0,isSigner:!1},{name:"funder",isMut:!0,isSigner:!0},{name:"feeAuthority",isMut:!1,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"tickSpacing",type:"u16"},{name:"defaultFeeRate",type:"u16"}]},{name:"initializeReward",accounts:[{name:"rewardAuthority",isMut:!1,isSigner:!0},{name:"funder",isMut:!0,isSigner:!0},{name:"whirlpool",isMut:!0,isSigner:!1},{name:"rewardMint",isMut:!1,isSigner:!1},{name:"rewardVault",isMut:!0,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"rewardIndex",type:"u8"}]},{name:"setRewardEmissions",accounts:[{name:"whirlpool",isMut:!0,isSigner:!1},{name:"rewardAuthority",isMut:!1,isSigner:!0},{name:"rewardVault",isMut:!1,isSigner:!1}],args:[{name:"rewardIndex",type:"u8"},{name:"emissionsPerSecondX64",type:"u128"}]},{name:"openPosition",accounts:[{name:"funder",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!1},{name:"position",isMut:!0,isSigner:!1},{name:"positionMint",isMut:!0,isSigner:!0},{name:"positionTokenAccount",isMut:!0,isSigner:!1},{name:"whirlpool",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1}],args:[{name:"bumps",type:{defined:"OpenPositionBumps"}},{name:"tickLowerIndex",type:"i32"},{name:"tickUpperIndex",type:"i32"}]},{name:"openPositionWithMetadata",accounts:[{name:"funder",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!1},{name:"position",isMut:!0,isSigner:!1},{name:"positionMint",isMut:!0,isSigner:!0},{name:"positionMetadataAccount",isMut:!0,isSigner:!1},{name:"positionTokenAccount",isMut:!0,isSigner:!1},{name:"whirlpool",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"metadataProgram",isMut:!1,isSigner:!1},{name:"metadataUpdateAuth",isMut:!1,isSigner:!1}],args:[{name:"bumps",type:{defined:"OpenPositionWithMetadataBumps"}},{name:"tickLowerIndex",type:"i32"},{name:"tickUpperIndex",type:"i32"}]},{name:"increaseLiquidity",accounts:[{name:"whirlpool",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"positionAuthority",isMut:!1,isSigner:!0},{name:"position",isMut:!0,isSigner:!1},{name:"positionTokenAccount",isMut:!1,isSigner:!1},{name:"tokenOwnerAccountA",isMut:!0,isSigner:!1},{name:"tokenOwnerAccountB",isMut:!0,isSigner:!1},{name:"tokenVaultA",isMut:!0,isSigner:!1},{name:"tokenVaultB",isMut:!0,isSigner:!1},{name:"tickArrayLower",isMut:!0,isSigner:!1},{name:"tickArrayUpper",isMut:!0,isSigner:!1}],args:[{name:"liquidityAmount",type:"u128"},{name:"tokenMaxA",type:"u64"},{name:"tokenMaxB",type:"u64"}]},{name:"decreaseLiquidity",accounts:[{name:"whirlpool",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"positionAuthority",isMut:!1,isSigner:!0},{name:"position",isMut:!0,isSigner:!1},{name:"positionTokenAccount",isMut:!1,isSigner:!1},{name:"tokenOwnerAccountA",isMut:!0,isSigner:!1},{name:"tokenOwnerAccountB",isMut:!0,isSigner:!1},{name:"tokenVaultA",isMut:!0,isSigner:!1},{name:"tokenVaultB",isMut:!0,isSigner:!1},{name:"tickArrayLower",isMut:!0,isSigner:!1},{name:"tickArrayUpper",isMut:!0,isSigner:!1}],args:[{name:"liquidityAmount",type:"u128"},{name:"tokenMinA",type:"u64"},{name:"tokenMinB",type:"u64"}]},{name:"updateFeesAndRewards",accounts:[{name:"whirlpool",isMut:!0,isSigner:!1},{name:"position",isMut:!0,isSigner:!1},{name:"tickArrayLower",isMut:!1,isSigner:!1},{name:"tickArrayUpper",isMut:!1,isSigner:!1}],args:[]},{name:"collectFees",accounts:[{name:"whirlpool",isMut:!1,isSigner:!1},{name:"positionAuthority",isMut:!1,isSigner:!0},{name:"position",isMut:!0,isSigner:!1},{name:"positionTokenAccount",isMut:!1,isSigner:!1},{name:"tokenOwnerAccountA",isMut:!0,isSigner:!1},{name:"tokenVaultA",isMut:!0,isSigner:!1},{name:"tokenOwnerAccountB",isMut:!0,isSigner:!1},{name:"tokenVaultB",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"collectReward",accounts:[{name:"whirlpool",isMut:!1,isSigner:!1},{name:"positionAuthority",isMut:!1,isSigner:!0},{name:"position",isMut:!0,isSigner:!1},{name:"positionTokenAccount",isMut:!1,isSigner:!1},{name:"rewardOwnerAccount",isMut:!0,isSigner:!1},{name:"rewardVault",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"rewardIndex",type:"u8"}]},{name:"collectProtocolFees",accounts:[{name:"whirlpoolsConfig",isMut:!1,isSigner:!1},{name:"whirlpool",isMut:!0,isSigner:!1},{name:"collectProtocolFeesAuthority",isMut:!1,isSigner:!0},{name:"tokenVaultA",isMut:!0,isSigner:!1},{name:"tokenVaultB",isMut:!0,isSigner:!1},{name:"tokenDestinationA",isMut:!0,isSigner:!1},{name:"tokenDestinationB",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"swap",accounts:[{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!0},{name:"whirlpool",isMut:!0,isSigner:!1},{name:"tokenOwnerAccountA",isMut:!0,isSigner:!1},{name:"tokenVaultA",isMut:!0,isSigner:!1},{name:"tokenOwnerAccountB",isMut:!0,isSigner:!1},{name:"tokenVaultB",isMut:!0,isSigner:!1},{name:"tickArray0",isMut:!0,isSigner:!1},{name:"tickArray1",isMut:!0,isSigner:!1},{name:"tickArray2",isMut:!0,isSigner:!1},{name:"oracle",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"otherAmountThreshold",type:"u64"},{name:"sqrtPriceLimit",type:"u128"},{name:"amountSpecifiedIsInput",type:"bool"},{name:"aToB",type:"bool"}]},{name:"closePosition",accounts:[{name:"positionAuthority",isMut:!1,isSigner:!0},{name:"receiver",isMut:!0,isSigner:!1},{name:"position",isMut:!0,isSigner:!1},{name:"positionMint",isMut:!0,isSigner:!1},{name:"positionTokenAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"setDefaultFeeRate",accounts:[{name:"whirlpoolsConfig",isMut:!1,isSigner:!1},{name:"feeTier",isMut:!0,isSigner:!1},{name:"feeAuthority",isMut:!1,isSigner:!0}],args:[{name:"defaultFeeRate",type:"u16"}]},{name:"setDefaultProtocolFeeRate",accounts:[{name:"whirlpoolsConfig",isMut:!0,isSigner:!1},{name:"feeAuthority",isMut:!1,isSigner:!0}],args:[{name:"defaultProtocolFeeRate",type:"u16"}]},{name:"setFeeRate",accounts:[{name:"whirlpoolsConfig",isMut:!1,isSigner:!1},{name:"whirlpool",isMut:!0,isSigner:!1},{name:"feeAuthority",isMut:!1,isSigner:!0}],args:[{name:"feeRate",type:"u16"}]},{name:"setProtocolFeeRate",accounts:[{name:"whirlpoolsConfig",isMut:!1,isSigner:!1},{name:"whirlpool",isMut:!0,isSigner:!1},{name:"feeAuthority",isMut:!1,isSigner:!0}],args:[{name:"protocolFeeRate",type:"u16"}]},{name:"setFeeAuthority",accounts:[{name:"whirlpoolsConfig",isMut:!0,isSigner:!1},{name:"feeAuthority",isMut:!1,isSigner:!0},{name:"newFeeAuthority",isMut:!1,isSigner:!1}],args:[]},{name:"setCollectProtocolFeesAuthority",accounts:[{name:"whirlpoolsConfig",isMut:!0,isSigner:!1},{name:"collectProtocolFeesAuthority",isMut:!1,isSigner:!0},{name:"newCollectProtocolFeesAuthority",isMut:!1,isSigner:!1}],args:[]},{name:"setRewardAuthority",accounts:[{name:"whirlpool",isMut:!0,isSigner:!1},{name:"rewardAuthority",isMut:!1,isSigner:!0},{name:"newRewardAuthority",isMut:!1,isSigner:!1}],args:[{name:"rewardIndex",type:"u8"}]},{name:"setRewardAuthorityBySuperAuthority",accounts:[{name:"whirlpoolsConfig",isMut:!1,isSigner:!1},{name:"whirlpool",isMut:!0,isSigner:!1},{name:"rewardEmissionsSuperAuthority",isMut:!1,isSigner:!0},{name:"newRewardAuthority",isMut:!1,isSigner:!1}],args:[{name:"rewardIndex",type:"u8"}]},{name:"setRewardEmissionsSuperAuthority",accounts:[{name:"whirlpoolsConfig",isMut:!0,isSigner:!1},{name:"rewardEmissionsSuperAuthority",isMut:!1,isSigner:!0},{name:"newRewardEmissionsSuperAuthority",isMut:!1,isSigner:!1}],args:[]}],CE=[{name:"WhirlpoolsConfig",type:{kind:"struct",fields:[{name:"feeAuthority",type:"publicKey"},{name:"collectProtocolFeesAuthority",type:"publicKey"},{name:"rewardEmissionsSuperAuthority",type:"publicKey"},{name:"defaultProtocolFeeRate",type:"u16"}]}},{name:"FeeTier",type:{kind:"struct",fields:[{name:"whirlpoolsConfig",type:"publicKey"},{name:"tickSpacing",type:"u16"},{name:"defaultFeeRate",type:"u16"}]}},{name:"Position",type:{kind:"struct",fields:[{name:"whirlpool",type:"publicKey"},{name:"positionMint",type:"publicKey"},{name:"liquidity",type:"u128"},{name:"tickLowerIndex",type:"i32"},{name:"tickUpperIndex",type:"i32"},{name:"feeGrowthCheckpointA",type:"u128"},{name:"feeOwedA",type:"u64"},{name:"feeGrowthCheckpointB",type:"u128"},{name:"feeOwedB",type:"u64"},{name:"rewardInfos",type:{array:[{defined:"PositionRewardInfo"},3]}}]}},{name:"TickArray",type:{kind:"struct",fields:[{name:"startTickIndex",type:"i32"},{name:"ticks",type:{array:[{defined:"Tick"},88]}},{name:"whirlpool",type:"publicKey"}]}},{name:"Whirlpool",type:{kind:"struct",fields:[{name:"whirlpoolsConfig",type:"publicKey"},{name:"whirlpoolBump",type:{array:["u8",1]}},{name:"tickSpacing",type:"u16"},{name:"tickSpacingSeed",type:{array:["u8",2]}},{name:"feeRate",type:"u16"},{name:"protocolFeeRate",type:"u16"},{name:"liquidity",type:"u128"},{name:"sqrtPrice",type:"u128"},{name:"tickCurrentIndex",type:"i32"},{name:"protocolFeeOwedA",type:"u64"},{name:"protocolFeeOwedB",type:"u64"},{name:"tokenMintA",type:"publicKey"},{name:"tokenVaultA",type:"publicKey"},{name:"feeGrowthGlobalA",type:"u128"},{name:"tokenMintB",type:"publicKey"},{name:"tokenVaultB",type:"publicKey"},{name:"feeGrowthGlobalB",type:"u128"},{name:"rewardLastUpdatedTimestamp",type:"u64"},{name:"rewardInfos",type:{array:[{defined:"WhirlpoolRewardInfo"},3]}}]}}],wE=[{name:"OpenPositionBumps",type:{kind:"struct",fields:[{name:"positionBump",type:"u8"}]}},{name:"OpenPositionWithMetadataBumps",type:{kind:"struct",fields:[{name:"positionBump",type:"u8"},{name:"metadataBump",type:"u8"}]}},{name:"PositionRewardInfo",type:{kind:"struct",fields:[{name:"growthInsideCheckpoint",type:"u128"},{name:"amountOwed",type:"u64"}]}},{name:"Tick",type:{kind:"struct",fields:[{name:"initialized",type:"bool"},{name:"liquidityNet",type:"i128"},{name:"liquidityGross",type:"u128"},{name:"feeGrowthOutsideA",type:"u128"},{name:"feeGrowthOutsideB",type:"u128"},{name:"rewardGrowthsOutside",type:{array:["u128",3]}}]}},{name:"WhirlpoolRewardInfo",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"vault",type:"publicKey"},{name:"authority",type:"publicKey"},{name:"emissionsPerSecondX64",type:"u128"},{name:"growthGlobalX64",type:"u128"}]}},{name:"WhirlpoolBumps",type:{kind:"struct",fields:[{name:"whirlpoolBump",type:"u8"}]}},{name:"CurrIndex",type:{kind:"enum",variants:[{name:"Below"},{name:"Inside"},{name:"Above"}]}},{name:"TickLabel",type:{kind:"enum",variants:[{name:"Upper"},{name:"Lower"}]}},{name:"Direction",type:{kind:"enum",variants:[{name:"Left"},{name:"Right"}]}}],EE=[{code:6e3,name:"InvalidEnum",msg:"Enum value could not be converted"},{code:6001,name:"InvalidStartTick",msg:"Invalid start tick index provided."},{code:6002,name:"TickArrayExistInPool",msg:"Tick-array already exists in this whirlpool"},{code:6003,name:"TickArrayIndexOutofBounds",msg:"Attempt to search for a tick-array failed"},{code:6004,name:"InvalidTickSpacing",msg:"Tick-spacing is not supported"},{code:6005,name:"ClosePositionNotEmpty",msg:"Position is not empty It cannot be closed"},{code:6006,name:"DivideByZero",msg:"Unable to divide by zero"},{code:6007,name:"NumberCastError",msg:"Unable to cast number into BigInt"},{code:6008,name:"NumberDownCastError",msg:"Unable to down cast number"},{code:6009,name:"TickNotFound",msg:"Tick not found within tick array"},{code:6010,name:"InvalidTickIndex",msg:"Provided tick index is either out of bounds or uninitializable"},{code:6011,name:"SqrtPriceOutOfBounds",msg:"Provided sqrt price out of bounds"},{code:6012,name:"LiquidityZero",msg:"Liquidity amount must be greater than zero"},{code:6013,name:"LiquidityTooHigh",msg:"Liquidity amount must be less than i64::MAX"},{code:6014,name:"LiquidityOverflow",msg:"Liquidity overflow"},{code:6015,name:"LiquidityUnderflow",msg:"Liquidity underflow"},{code:6016,name:"LiquidityNetError",msg:"Tick liquidity net underflowed or overflowed"},{code:6017,name:"TokenMaxExceeded",msg:"Exceeded token max"},{code:6018,name:"TokenMinSubceeded",msg:"Did not meet token min"},{code:6019,name:"MissingOrInvalidDelegate",msg:"Position token account has a missing or invalid delegate"},{code:6020,name:"InvalidPositionTokenAmount",msg:"Position token amount must be 1"},{code:6021,name:"InvalidTimestampConversion",msg:"Timestamp should be convertible from i64 to u64"},{code:6022,name:"InvalidTimestamp",msg:"Timestamp should be greater than the last updated timestamp"},{code:6023,name:"InvalidTickArraySequence",msg:"Invalid tick array sequence provided for instruction."},{code:6024,name:"InvalidTokenMintOrder",msg:"Token Mint in wrong order"},{code:6025,name:"RewardNotInitialized",msg:"Reward not initialized"},{code:6026,name:"InvalidRewardIndex",msg:"Invalid reward index"},{code:6027,name:"RewardVaultAmountInsufficient",msg:"Reward vault requires amount to support emissions for at least one day"},{code:6028,name:"FeeRateMaxExceeded",msg:"Exceeded max fee rate"},{code:6029,name:"ProtocolFeeRateMaxExceeded",msg:"Exceeded max protocol fee rate"},{code:6030,name:"MultiplicationShiftRightOverflow",msg:"Multiplication with shift right overflow"},{code:6031,name:"MulDivOverflow",msg:"Muldiv overflow"},{code:6032,name:"MulDivInvalidInput",msg:"Invalid div_u256 input"},{code:6033,name:"MultiplicationOverflow",msg:"Multiplication overflow"},{code:6034,name:"InvalidSqrtPriceLimitDirection",msg:"Provided SqrtPriceLimit not in the same direction as the swap."},{code:6035,name:"ZeroTradableAmount",msg:"There are no tradable amount to swap."},{code:6036,name:"AmountOutBelowMinimum",msg:"Amount out below minimum threshold"},{code:6037,name:"AmountInAboveMaximum",msg:"Amount in above maximum threshold"},{code:6038,name:"TickArraySequenceInvalidIndex",msg:"Invalid index for tick array sequence"},{code:6039,name:"AmountCalcOverflow",msg:"Amount calculated overflows"},{code:6040,name:"AmountRemainingOverflow",msg:"Amount remaining overflows"}],QE={version:IE,name:yE,instructions:BE,accounts:CE,types:wE,errors:EE},bE=(new A.PublicKey("whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc"),new A.PublicKey("2LecshUwdy9xi7meFgHtFJQNSKk4KdTrcpvaB56dP2NQ"),443636),kE=-443636,vE="79226673515401279992447579055",SE="4295048016",ME=88,DE=new A.PublicKey("metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s"),NE=new kh.BN(1e4),TE=new kh.BN(1e6),PE=QE;new kh.BorshAccountsCoder(PE).size(PE.accounts[4]);var OE=class{constructor(){}static getOffsetIndex(e,t,n){return Math.floor((e-t)/n)}static getStartTickIndex(e,t,n=0){const i=(Math.floor(e/t/ME)+n)*t*ME,r=ME*t;return W(i>=kE-(kE%r+r)),W(i<=bE),i}static getInitializableTickIndex(e,t){return e-e%t}static getNextInitializableTickIndex(e,t){return OE.getInitializableTickIndex(e,t)+t}static getPrevInitializableTickIndex(e,t){return OE.getInitializableTickIndex(e,t)-t}static findPreviousInitializedTickIndex(e,t,n){return OE.findInitializedTick(e,t,n,0)}static findNextInitializedTickIndex(e,t,n){return OE.findInitializedTick(e,t,n,1)}static findInitializedTick(e,t,n,i){var r;const o=function(e,t,n){return Math.floor((t-e)/n)}(e.startTickIndex,t,n),A=1===i?1:-1;let s=1===i?o+A:o;for(;s>=0&&s=kE}static isTickInitializable(e,t){return e%t==0}static invertTick(e){return-e}};function FE(e,t,n){return e+t*n}var RE=class{static priceToSqrtPriceX64(e,t,n){return lE.MathUtil.toX64(e.mul(NA.pow(10,n-t)).sqrt())}static sqrtPriceX64ToPrice(e,t,n){return lE.MathUtil.fromX64(e).pow(2).mul(NA.pow(10,t-n))}static tickIndexToSqrtPriceX64(e){return e>0?new kh.BN(function(e){let t;return t=0!=(1&e)?new kh.BN("79232123823359799118286999567"):new kh.BN("79228162514264337593543950336"),0!=(2&e)&&(t=GE(t.mul(new kh.BN("79236085330515764027303304731")),96,256)),0!=(4&e)&&(t=GE(t.mul(new kh.BN("79244008939048815603706035061")),96,256)),0!=(8&e)&&(t=GE(t.mul(new kh.BN("79259858533276714757314932305")),96,256)),0!=(16&e)&&(t=GE(t.mul(new kh.BN("79291567232598584799939703904")),96,256)),0!=(32&e)&&(t=GE(t.mul(new kh.BN("79355022692464371645785046466")),96,256)),0!=(64&e)&&(t=GE(t.mul(new kh.BN("79482085999252804386437311141")),96,256)),0!=(128&e)&&(t=GE(t.mul(new kh.BN("79736823300114093921829183326")),96,256)),0!=(256&e)&&(t=GE(t.mul(new kh.BN("80248749790819932309965073892")),96,256)),0!=(512&e)&&(t=GE(t.mul(new kh.BN("81282483887344747381513967011")),96,256)),0!=(1024&e)&&(t=GE(t.mul(new kh.BN("83390072131320151908154831281")),96,256)),0!=(2048&e)&&(t=GE(t.mul(new kh.BN("87770609709833776024991924138")),96,256)),0!=(4096&e)&&(t=GE(t.mul(new kh.BN("97234110755111693312479820773")),96,256)),0!=(8192&e)&&(t=GE(t.mul(new kh.BN("119332217159966728226237229890")),96,256)),0!=(16384&e)&&(t=GE(t.mul(new kh.BN("179736315981702064433883588727")),96,256)),0!=(32768&e)&&(t=GE(t.mul(new kh.BN("407748233172238350107850275304")),96,256)),0!=(65536&e)&&(t=GE(t.mul(new kh.BN("2098478828474011932436660412517")),96,256)),0!=(131072&e)&&(t=GE(t.mul(new kh.BN("55581415166113811149459800483533")),96,256)),0!=(262144&e)&&(t=GE(t.mul(new kh.BN("38992368544603139932233054999993551")),96,256)),GE(t,32,256)}(e)):new kh.BN(function(e){let t,n=Math.abs(e);return t=0!=(1&n)?new kh.BN("18445821805675392311"):new kh.BN("18446744073709551616"),0!=(2&n)&&(t=GE(t.mul(new kh.BN("18444899583751176498")),64,256)),0!=(4&n)&&(t=GE(t.mul(new kh.BN("18443055278223354162")),64,256)),0!=(8&n)&&(t=GE(t.mul(new kh.BN("18439367220385604838")),64,256)),0!=(16&n)&&(t=GE(t.mul(new kh.BN("18431993317065449817")),64,256)),0!=(32&n)&&(t=GE(t.mul(new kh.BN("18417254355718160513")),64,256)),0!=(64&n)&&(t=GE(t.mul(new kh.BN("18387811781193591352")),64,256)),0!=(128&n)&&(t=GE(t.mul(new kh.BN("18329067761203520168")),64,256)),0!=(256&n)&&(t=GE(t.mul(new kh.BN("18212142134806087854")),64,256)),0!=(512&n)&&(t=GE(t.mul(new kh.BN("17980523815641551639")),64,256)),0!=(1024&n)&&(t=GE(t.mul(new kh.BN("17526086738831147013")),64,256)),0!=(2048&n)&&(t=GE(t.mul(new kh.BN("16651378430235024244")),64,256)),0!=(4096&n)&&(t=GE(t.mul(new kh.BN("15030750278693429944")),64,256)),0!=(8192&n)&&(t=GE(t.mul(new kh.BN("12247334978882834399")),64,256)),0!=(16384&n)&&(t=GE(t.mul(new kh.BN("8131365268884726200")),64,256)),0!=(32768&n)&&(t=GE(t.mul(new kh.BN("3584323654723342297")),64,256)),0!=(65536&n)&&(t=GE(t.mul(new kh.BN("696457651847595233")),64,256)),0!=(131072&n)&&(t=GE(t.mul(new kh.BN("26294789957452057")),64,256)),0!=(262144&n)&&(t=GE(t.mul(new kh.BN("37481735321082")),64,256)),t}(e))}static sqrtPriceX64ToTickIndex(e){if(e.gt(new kh.BN(vE))||e.lt(new kh.BN(SE)))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");const t=e.bitLength()-1,n=function(e,t,n){let i=e.toTwos(128).shln(32);return i.imaskn(129),i.fromTwos(128)}(new kh.BN(t-64));let i=new kh.BN("8000000000000000","hex"),r=0,o=new kh.BN(0),A=t>=64?e.shrn(t-63):e.shln(63-t);for(;i.gt(new kh.BN(0))&&r<14;){A=A.mul(A);let e=A.shrn(127);A=A.shrn(63+e.toNumber()),o=o.add(i.mul(e)),i=i.shrn(1),r+=1}const s=o.shrn(32),a=n.add(s).mul(new kh.BN("59543866431248")),c=GE(a.sub(new kh.BN("184467440737095516")),64,128).toNumber(),u=GE(a.add(new kh.BN("15793534762490258745")),64,128).toNumber();return c==u?c:RE.tickIndexToSqrtPriceX64(u).lte(e)?u:c}static tickIndexToPrice(e,t,n){return RE.sqrtPriceX64ToPrice(RE.tickIndexToSqrtPriceX64(e),t,n)}static priceToTickIndex(e,t,n){return RE.sqrtPriceX64ToTickIndex(RE.priceToSqrtPriceX64(e,t,n))}static priceToInitializableTickIndex(e,t,n,i){return OE.getInitializableTickIndex(RE.priceToTickIndex(e,t,n),i)}static invertPrice(e,t,n){const i=RE.priceToTickIndex(e,t,n),r=OE.invertTick(i);return RE.tickIndexToPrice(r,n,t)}static invertSqrtPriceX64(e){const t=RE.sqrtPriceX64ToTickIndex(e),n=OE.invertTick(t);return RE.tickIndexToSqrtPriceX64(n)}};function GE(e,t,n){let i=e.toTwos(n).shrn(t);return i.imaskn(n-t+1),i.fromTwos(n-t)}var xE=class{static getWhirlpool(e,t,n,i,r){return lE.AddressUtil.findProgramAddress([gE.from("whirlpool"),t.toBuffer(),n.toBuffer(),i.toBuffer(),new kh.BN(r).toArrayLike(gE,"le",2)],e)}static getPosition(e,t){return lE.AddressUtil.findProgramAddress([gE.from("position"),t.toBuffer()],e)}static getPositionMetadata(e){return lE.AddressUtil.findProgramAddress([gE.from("metadata"),DE.toBuffer(),e.toBuffer()],DE)}static getTickArray(e,t,n){return lE.AddressUtil.findProgramAddress([gE.from("tick_array"),t.toBuffer(),gE.from(n.toString())],e)}static getTickArrayFromTickIndex(e,t,n,i,r=0){const o=OE.getStartTickIndex(e,t,r);return xE.getTickArray(lE.AddressUtil.toPubKey(i),lE.AddressUtil.toPubKey(n),o)}static getTickArrayFromSqrtPrice(e,t,n,i,r=0){const o=RE.sqrtPriceX64ToTickIndex(e);return xE.getTickArrayFromTickIndex(o,t,n,i,r)}static getFeeTier(e,t,n){return lE.AddressUtil.findProgramAddress([gE.from("fee_tier"),t.toBuffer(),new kh.BN(n).toArrayLike(gE,"le",2)],e)}static getOracle(e,t){return lE.AddressUtil.findProgramAddress([gE.from("oracle"),t.toBuffer()],e)}},UE=class{constructor(){}static isRewardInitialized(e){return!A.PublicKey.default.equals(e.mint)&&!A.PublicKey.default.equals(e.vault)}static getTokenType(e,t){return e.tokenMintA.equals(t)?1:e.tokenMintB.equals(t)?2:void 0}static getFeeRate(e){return lE.Percentage.fromFraction(e,1e6)}static getProtocolFeeRate(e){return lE.Percentage.fromFraction(e,1e4)}static orderMints(e,t){let n,i;return gE.compare(lE.AddressUtil.toPubKey(e).toBuffer(),lE.AddressUtil.toPubKey(t).toBuffer())<0?(n=e,i=t):(n=t,i=e),[n,i]}static getTokenAmountsFromLiquidity(e,t,n,i,r){const o=new NA(e.toString()),A=new NA(t.toString()),s=new NA(n.toString()),a=new NA(i.toString());let c,u;return t.lt(n)?(c=lE.MathUtil.toX64_Decimal(o).mul(a.sub(s)).div(s.mul(a)),u=new NA(0)):t.lt(i)?(c=lE.MathUtil.toX64_Decimal(o).mul(a.sub(A)).div(A.mul(a)),u=lE.MathUtil.fromX64_Decimal(o.mul(A.sub(s)))):(c=new NA(0),u=lE.MathUtil.fromX64_Decimal(o.mul(a.sub(s)))),r?{tokenA:new B.u64(c.ceil().toString()),tokenB:new B.u64(u.ceil().toString())}:{tokenA:new B.u64(c.floor().toString()),tokenB:new B.u64(u.floor().toString())}}static estimateLiquidityFromTokenAmounts(e,t,n,i){if(n=n)return jE(A,o,i.tokenB);if(e({address:e,data:a[t]})))}static calculateSwapAmountsFromQuote(e,t){return{amount:e}}},JE=class{constructor(){}static parse(e){if(!e)return null;try{return eQ("WhirlpoolsConfig",e)}catch(e){return dE.error(`error while parsing WhirlpoolsConfig: ${e}`),null}}};JE=fE([e=>{}],JE);var qE=class{constructor(){}static parse(e){if(!e)return null;try{return eQ("Whirlpool",e)}catch(e){return dE.error(`error while parsing Whirlpool: ${e}`),null}}};qE=fE([e=>{}],qE);var ZE=class{constructor(){}static parse(e){if(!e)return null;try{return eQ("Position",e)}catch(e){return dE.error(`error while parsing Position: ${e}`),null}}};ZE=fE([e=>{}],ZE);var zE=class{constructor(){}static parse(e){if(!e)return null;try{return eQ("TickArray",e)}catch(e){return dE.error(`error while parsing TickArray: ${e}`),null}}};zE=fE([e=>{}],zE);var HE=class{constructor(){}static parse(e){if(!e)return null;try{return eQ("FeeTier",e)}catch(e){return dE.error(`error while parsing FeeTier: ${e}`),null}}};HE=fE([e=>{}],HE);var VE=class{constructor(){}static parse(e){if(!e)return null;try{return lE.TokenUtil.deserializeTokenAccount(e)}catch(e){return dE.error(`error while parsing TokenAccount: ${e}`),null}}};VE=fE([e=>{}],VE);var XE=class{constructor(){}static parse(e){if(!e)return null;try{const t=B.MintLayout.decode(e);return{mintAuthority:0===t.mintAuthorityOption?null:new A.PublicKey(t.mintAuthority),supply:B.u64.fromBuffer(t.supply),decimals:t.decimals,isInitialized:0!==t.isInitialized,freezeAuthority:0===t.freezeAuthority?null:new A.PublicKey(t.freezeAuthority)}}catch(e){return dE.error(`error while parsing MintInfo: ${e}`),null}}};XE=fE([e=>{}],XE);var $E=new kh.BorshAccountsCoder(mE);function eQ(e,t){if(kh.BorshAccountsCoder.accountDiscriminator(e).compare(t.slice(0,8)))return dE.error("incorrect account name during parsing"),null;try{return $E.decode(e,t)}catch(e){return dE.error("unknown account name during parsing"),null}}var tQ=class extends Error{constructor(e,t){super(e),this.message=e,this.errorCode=t}static isWhirlpoolsErrorCode(e,t){return e instanceof tQ&&e.errorCode===t}},nQ=class{constructor(e,t,n){if(this.arrayIndex=e,this.offsetIndex=t,this.tickSpacing=n,t>=ME)throw new Error("Invalid offsetIndex - value has to be smaller than TICK_ARRAY_SIZE");if(t<0)throw new Error("Invalid offsetIndex - value is smaller than 0");if(n<0)throw new Error("Invalid tickSpacing - value is less than 0")}static fromTickIndex(e,t){const n=Math.floor(Math.floor(e/t)/ME);let i=Math.floor(e%(t*ME)/t);return i<0&&(i=ME+i),new nQ(n,i,t)}toTickIndex(){return this.arrayIndex*ME*this.tickSpacing+this.offsetIndex*this.tickSpacing}toNextInitializableTickIndex(){return nQ.fromTickIndex(this.toTickIndex()+this.tickSpacing,this.tickSpacing)}toPrevInitializableTickIndex(){return nQ.fromTickIndex(this.toTickIndex()-this.tickSpacing,this.tickSpacing)}},iQ=class{static mul(e,t,n){const i=e.mul(t);if(this.isOverLimit(i,n))throw new tQ(`Mul result higher than u${n}`,"MultiplicationOverflow");return i}static mulDiv(e,t,n,i){return this.mulDivRoundUpIf(e,t,n,!1,i)}static mulDivRoundUp(e,t,n,i){return this.mulDivRoundUpIf(e,t,n,!0,i)}static mulDivRoundUpIf(e,t,n,i,r){if(n.eq(lE.ZERO))throw new tQ("mulDiv denominator is zero","DivideByZero");const o=this.mul(e,t,r),A=o.div(n);return i&&o.mod(n).gt(lE.ZERO)?A.add(lE.ONE):A}static checked_mul_shift_right(e,t,n){return this.checked_mul_shift_right_round_up_if(e,t,!1,n)}static checked_mul_shift_right_round_up_if(e,t,n,i){if(e.eq(lE.ZERO)||t.eq(lE.ZERO))return lE.ZERO;const r=this.mul(e,t,i);if(this.isOverLimit(r,i))throw new tQ(`MulShiftRight overflowed u${i}.`,"MultiplicationShiftRightOverflow");const o=lE.MathUtil.fromX64_BN(r),A=n&&o.and(lE.U64_MAX).gt(lE.ZERO);if(A&&o.eq(lE.U64_MAX))throw new tQ(`MulShiftRight overflowed u${i}.`,"MultiplicationOverflow");return A?o.add(lE.ONE):o}static isOverLimit(e,t){const n=lE.TWO.pow(new kh.BN(t)).sub(lE.ONE);return e.gt(n)}static divRoundUp(e,t){return this.divRoundUpIf(e,t,!0)}static divRoundUpIf(e,t,n){if(t.eq(lE.ZERO))throw new tQ("divRoundUpIf - divide by zero","DivideByZero");let i=e.div(t);return n&&e.mod(t).gt(lE.ZERO)?i.add(lE.ONE):i}};function rQ(e,t,n,i){let[r,o]=AQ(e,t),A=o.sub(r),s=n.mul(A).shln(64),a=r.mul(o),c=s.div(a),u=s.mod(a),l=i&&!u.eq(lE.ZERO)?c.add(new kh.BN(1)):c;if(l.gt(lE.U64_MAX))throw new tQ("Results larger than U64","TokenMaxExceeded");return l}function oQ(e,t,n,i){let[r,o]=AQ(e,t),A=o.sub(r);return iQ.checked_mul_shift_right_round_up_if(n,A,i,128)}function AQ(e,t){return e.gt(t)?[t,e]:[e,t]}function sQ(e,t,n,i,r,o,A){let s=aQ(i,r,n,o,A),a=e;o&&(a=iQ.mulDiv(e,TE.sub(new kh.BN(t)),TE,128));let c=a.gte(s)?r:function(e,t,n,i,r){return i===r?function(e,t,n,i){if(n.eq(lE.ZERO))return e;let r=iQ.mul(e,n,256),o=iQ.mul(t,e,256).shln(64);if(iQ.isOverLimit(o,256))throw new tQ("getNextSqrtPriceFromARoundUp - numerator overflow u256","MultiplicationOverflow");let A=t.shln(64);if(!i&&A.lte(r))throw new tQ("getNextSqrtPriceFromARoundUp - Unable to divide currLiquidityX64 by product","DivideByZero");let s=i?A.add(r):A.sub(r),a=iQ.divRoundUp(o,s);if(a.lt(new kh.BN(SE)))throw new tQ("getNextSqrtPriceFromARoundUp - price less than min sqrt price","TokenMinSubceeded");if(a.gt(new kh.BN(vE)))throw new tQ("getNextSqrtPriceFromARoundUp - price less than max sqrt price","TokenMaxExceeded");return a}(e,t,n,i):function(e,t,n,i){let r=n.shln(64),o=iQ.divRoundUpIf(r,t,!i);return i?e.add(o):e.sub(o)}(e,t,n,i)}(i,n,a,o,A),u=c.eq(r),l=function(e,t,n,i,r){return r===i?oQ(e,t,n,!i):rQ(e,t,n,!i)}(i,c,n,o,A);u||(s=aQ(i,c,n,o,A));let g,d=o?s:l,h=o?l:s;if(!o&&h.gt(e)&&(h=e),o&&!u)g=e.sub(d);else{const e=new kh.BN(t);g=iQ.mulDivRoundUp(d,e,TE.sub(e),128)}return{amountIn:d,amountOut:h,nextPrice:c,feeAmount:g}}function aQ(e,t,n,i,r){return r===i?rQ(e,t,n,i):oQ(e,t,n,i)}function cQ(e,t,n){const i=RE.tickIndexToSqrtPriceX64(e);return{nextTickPrice:i,nextSqrtPriceLimit:n?I.max(t,i):I.min(t,i)}}function uQ(e,t,n,i,r){let o=i,A=r,s=e;if(t>0){let e=function(e,t){return e.mul(new B.u64(t).div(NE))}(s,t);s=s.sub(e),o=o.add(i)}if(n.gt(lE.ZERO)){const e=s.shln(64).div(n);A=A.add(e)}return{nextProtocolFee:o,nextFeeGrowthGlobalInput:A}}function lQ(e,t,n){return n?t.sub(e):t.add(e)}function gQ(e){const t=function(e){const{aToB:t,whirlpoolData:n,tickArrays:i,tokenAmount:r,sqrtPriceLimit:o,otherAmountThreshold:A,amountSpecifiedIsInput:s}=e;if(o.gt(new kh.BN(vE))||o.lt(new kh.BN(SE)))throw new tQ("Provided SqrtPriceLimit is out of bounds.","SqrtPriceOutOfBounds");if(t&&o.gt(n.sqrtPrice)||!t&&o.lt(n.sqrtPrice))throw new tQ("Provided SqrtPriceLimit is in the opposite direction of the trade.","InvalidSqrtPriceLimitDirection");if(r.eq(lE.ZERO))throw new tQ("Provided tokenAmount is zero.","ZeroTradableAmount");const a=new class{constructor(e,t,n){if(this.tickSpacing=t,this.aToB=n,!e[0]||!e[0].data)throw new Error("TickArray index 0 must be initialized");this.sequence=[];for(const t of e){if(!t||!t.data)break;this.sequence.push({address:t.address,data:t.data})}this.touchedArrays=[...Array(this.sequence.length).fill(!1)],this.startArrayIndex=nQ.fromTickIndex(this.sequence[0].data.startTickIndex,this.tickSpacing).arrayIndex}isValidTickArray0(e){const t=this.aToB?0:this.tickSpacing,n=this.sequence[0].data;return this.checkIfIndexIsInTickArrayRange(n.startTickIndex,e+t)}getNumOfTouchedArrays(){return this.touchedArrays.filter((e=>!!e)).length}getTouchedArrays(e){let t=this.touchedArrays.reduce(((e,t,n)=>(t&&e.push(this.sequence[n].address),e)),[]);if(0===t.length)return[];const n=e-t.length;return n>0&&(t=t.concat(Array(n).fill(t[t.length-1]))),t}getTick(e){const t=nQ.fromTickIndex(e,this.tickSpacing);if(!this.isArrayIndexInBounds(t,this.aToB))throw new Error("Provided tick index is out of bounds for this sequence.");const n=this.getLocalArrayIndex(t.arrayIndex,this.aToB),i=this.sequence[n].data;if(this.touchedArrays[n]=!0,!i)throw new tQ(`TickArray at index ${n} is not initialized.`,"TickArrayIndexNotInitialized");if(!this.checkIfIndexIsInTickArrayRange(i.startTickIndex,e))throw new tQ(`TickArray at index ${n} is unexpected for this sequence.`,"TickArraySequenceInvalid");return i.ticks[t.offsetIndex]}findNextInitializedTickIndex(e){const t=this.aToB?e:e+this.tickSpacing;let n=nQ.fromTickIndex(t,this.tickSpacing);if(!this.isArrayIndexInBounds(n,this.aToB))throw new tQ(`Swap input value traversed too many arrays. Out of bounds at attempt to traverse tick index - ${n.toTickIndex()}.`,"TickArraySequenceInvalid");for(;this.isArrayIndexInBounds(n,this.aToB);){const e=this.getTick(n.toTickIndex());if(e.initialized)return{nextIndex:n.toTickIndex(),nextTickData:e};n=this.aToB?n.toPrevInitializableTickIndex():n.toNextInitializableTickIndex()}return{nextIndex:Math.max(Math.min(this.aToB?n.toTickIndex()+this.tickSpacing:n.toTickIndex()-1,bE),kE),nextTickData:null}}getLocalArrayIndex(e,t){return t?this.startArrayIndex-e:e-this.startArrayIndex}isArrayIndexInBounds(e,t){const n=this.getLocalArrayIndex(e.arrayIndex,t),i=this.sequence.length;return n>=0&&n=e&&t3)throw new tQ(`Input amount causes the quote to traverse more than the allowable amount of tick-arrays ${g}`,"TickArrayCrossingAboveMax");const d=a.getTouchedArrays(3);return{estimatedAmountIn:u,estimatedAmountOut:l,estimatedEndTickIndex:c.nextTickIndex,estimatedEndSqrtPrice:c.nextSqrtPrice,estimatedFeeAmount:c.totalFeeAmount,amount:r,amountSpecifiedIsInput:s,aToB:t,otherAmountThreshold:A,sqrtPriceLimit:o,tickArray0:d[0],tickArray1:d[1],tickArray2:d[2]}}(e);return{...t,...WE.calculateSwapAmountsFromQuote(t.amount,t.amountSpecifiedIsInput)}}NA.set({precision:40,toExpPos:40,toExpNeg:-20,rounding:1});var dQ=i(55872).Buffer;class hQ extends u.Layout{constructor(e){const t=(0,u.blob)(32);super(t.span,e),this.layout=t}getSpan(e,t){return this.layout.getSpan(e,t)}decode(e,t){return new A.PublicKey(this.layout.decode(e,t))}encode(e,t,n){return this.layout.encode(e.toBuffer(),t,n)}}function pQ(e){return new hQ(e)}class fQ extends u.Blob{decode(e,t){return new(y())(super.decode(e,t),10,"le")}encode(e,t,n){return super.encode(e.toArrayLike(dQ,"le",this.span),t,n)}}function mQ(e){return new fQ(8,e)}function IQ(e){return new fQ(16,e)}function yQ(e,t){const n=e.decode;e.decode=function(e,i=0){return t(n.call(this,e,i))}}const BQ=(0,u.struct)([(0,u.u8)("flag"),(0,u.u32)("len")],"header"),CQ=(0,u.struct)([IQ("key"),pQ("owner"),mQ("quantity"),mQ("clientOrderId"),(0,u.u8)("feeTier"),mQ("total")]),wQ=(0,u.struct)([BQ,(0,u.seq)(CQ,(0,u.offset)(BQ.layoutFor("len"),BQ.offsetOf("len")-BQ.span),"nodes")]);class EQ{constructor(e,t){this.header=e,this.nodes=t||[]}get isDescending(){return 1==this.header.flag}static decode(e){return wQ.decode(e)}static getPriceFromKey(e){return e.ushrn(64)}get(e){return this.nodes.find((t=>t.key.eq(e)))}get items(){return this.nodes}allItems(e=!1){return e!=this.isDescending?this.nodes.slice().reverse():this.nodes}find(e){return e instanceof y()||(e=new(y())(e)),this.nodes.find((t=>t.clientOrderId.eq(e)))}findMinMax(e){return this.allItems(e)[0]||null}}yQ(wQ,(({header:e,nodes:t})=>new EQ(e,t))),CQ.span;const QQ=(0,u.struct)([(0,u.u8)("flag"),(0,u.u8)("fee_tier"),(0,u.seq)((0,u.u8)(),6),IQ("key"),pQ("owner"),mQ("quantity"),mQ("total")]),bQ=(0,u.u32)("len"),kQ=(0,u.struct)([mQ("flag"),bQ,(0,u.seq)((0,u.u8)(),4),(0,u.seq)(QQ,(0,u.offset)(bQ,-8),"items")]);class vQ{constructor(e,t){this.len=e,this.items=t}allItems(){return this.items}get length(){return this.len}static decode(e){const{len:t,items:n}=kQ.decode(e);return new vQ(t,n)}}yQ(kQ,(({len:e,items:t})=>new vQ(e,t))),(0,u.seq)(mQ(""),4);const SQ=new Ai({version:"0.1.0",name:"dex",instructions:[{name:"setDexConfig",accounts:[{name:"master",isMut:!0,isSigner:!1},{name:"signer",isMut:!0,isSigner:!0},{name:"authority",isMut:!1,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"input",type:{defined:"DexConfigInput"}}]},{name:"setDexUserFeeTier",accounts:[{name:"dexUser",isMut:!0,isSigner:!1},{name:"user",isMut:!1,isSigner:!1},{name:"payer",isMut:!1,isSigner:!0},{name:"authority",isMut:!1,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"input",type:{defined:"DexUserFeeTierInput"}}]},{name:"createDexUser",accounts:[{name:"dexUser",isMut:!0,isSigner:!1},{name:"signer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"referrer",type:{option:{array:["u8",32]}}}]},{name:"createMarketUser",accounts:[{name:"pair",isMut:!1,isSigner:!1},{name:"market",isMut:!0,isSigner:!1},{name:"marketUser",isMut:!0,isSigner:!1},{name:"signer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"createMarket",accounts:[{name:"pair",isMut:!0,isSigner:!0},{name:"market",isMut:!0,isSigner:!1},{name:"eventQueue",isMut:!0,isSigner:!1},{name:"t0Mint",isMut:!1,isSigner:!1},{name:"t1Mint",isMut:!1,isSigner:!1},{name:"lpTokenMint",isMut:!0,isSigner:!1},{name:"t0Vault",isMut:!0,isSigner:!1},{name:"t1Vault",isMut:!0,isSigner:!1},{name:"bids",isMut:!0,isSigner:!1},{name:"asks",isMut:!0,isSigner:!1},{name:"master",isMut:!0,isSigner:!1},{name:"signer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"input",type:{defined:"MarketInput"}}]},{name:"addLiquidity",accounts:[{name:"pair",isMut:!1,isSigner:!1},{name:"market",isMut:!0,isSigner:!1},{name:"t0Mint",isMut:!0,isSigner:!1},{name:"t1Mint",isMut:!0,isSigner:!1},{name:"t0Vault",isMut:!0,isSigner:!1},{name:"t0User",isMut:!0,isSigner:!1},{name:"t1Vault",isMut:!0,isSigner:!1},{name:"t1User",isMut:!0,isSigner:!1},{name:"lpTokenMint",isMut:!0,isSigner:!1},{name:"lpTokenUser",isMut:!0,isSigner:!1},{name:"lpTokenVault",isMut:!0,isSigner:!1},{name:"master",isMut:!0,isSigner:!1},{name:"signer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"logger",isMut:!1,isSigner:!1}],args:[{name:"t0Amount",type:"u64"},{name:"t1Amount",type:"u64"}]},{name:"removeLiquidity",accounts:[{name:"pair",isMut:!1,isSigner:!1},{name:"market",isMut:!0,isSigner:!1},{name:"t0Mint",isMut:!0,isSigner:!1},{name:"t1Mint",isMut:!0,isSigner:!1},{name:"t0Vault",isMut:!0,isSigner:!1},{name:"t0User",isMut:!0,isSigner:!1},{name:"t1Vault",isMut:!0,isSigner:!1},{name:"t1User",isMut:!0,isSigner:!1},{name:"lpTokenMint",isMut:!0,isSigner:!1},{name:"lpTokenUser",isMut:!0,isSigner:!1},{name:"lpTokenVault",isMut:!0,isSigner:!1},{name:"master",isMut:!0,isSigner:!1},{name:"signer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"logger",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"createOrder",accounts:[{name:"pair",isMut:!0,isSigner:!1},{name:"market",isMut:!0,isSigner:!1},{name:"eventQueue",isMut:!0,isSigner:!1},{name:"dexUser",isMut:!1,isSigner:!1},{name:"marketUser",isMut:!0,isSigner:!1},{name:"bids",isMut:!0,isSigner:!1},{name:"asks",isMut:!0,isSigner:!1},{name:"t0Vault",isMut:!0,isSigner:!1},{name:"t1Vault",isMut:!0,isSigner:!1},{name:"t0User",isMut:!0,isSigner:!1},{name:"t1User",isMut:!0,isSigner:!1},{name:"master",isMut:!1,isSigner:!1},{name:"signer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"logger",isMut:!1,isSigner:!1}],args:[{name:"input",type:{defined:"OrderInput"}}]},{name:"settleFunds",accounts:[{name:"pair",isMut:!0,isSigner:!1},{name:"market",isMut:!0,isSigner:!1},{name:"eventQueue",isMut:!0,isSigner:!1},{name:"dexUser",isMut:!1,isSigner:!1},{name:"marketUser",isMut:!0,isSigner:!1},{name:"t0Mint",isMut:!1,isSigner:!1},{name:"t1Mint",isMut:!1,isSigner:!1},{name:"bids",isMut:!0,isSigner:!1},{name:"asks",isMut:!0,isSigner:!1},{name:"t0Vault",isMut:!0,isSigner:!1},{name:"t1Vault",isMut:!0,isSigner:!1},{name:"t0User",isMut:!0,isSigner:!1},{name:"t1User",isMut:!0,isSigner:!1},{name:"master",isMut:!1,isSigner:!1},{name:"signer",isMut:!0,isSigner:!0},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"logger",isMut:!1,isSigner:!1}],args:[]},{name:"cancelOrder",accounts:[{name:"pair",isMut:!0,isSigner:!1},{name:"market",isMut:!0,isSigner:!1},{name:"eventQueue",isMut:!0,isSigner:!1},{name:"dexUser",isMut:!1,isSigner:!1},{name:"marketUser",isMut:!0,isSigner:!1},{name:"bids",isMut:!0,isSigner:!1},{name:"asks",isMut:!0,isSigner:!1},{name:"t0Vault",isMut:!0,isSigner:!1},{name:"t1Vault",isMut:!0,isSigner:!1},{name:"t0User",isMut:!0,isSigner:!1},{name:"t1User",isMut:!0,isSigner:!1},{name:"master",isMut:!1,isSigner:!1},{name:"signer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"logger",isMut:!1,isSigner:!1}],args:[{name:"input",type:{defined:"CancelOrderInput"}}]},{name:"daoSetFundManager",accounts:[{name:"master",isMut:!0,isSigner:!1},{name:"daoConfig",isMut:!0,isSigner:!1},{name:"fundManager",isMut:!1,isSigner:!1},{name:"signer",isMut:!1,isSigner:!0},{name:"authority",isMut:!1,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"daoClaimRevenue",accounts:[{name:"tokenMint",isMut:!1,isSigner:!1},{name:"market",isMut:!1,isSigner:!1},{name:"marketVault",isMut:!0,isSigner:!1},{name:"daoConfig",isMut:!1,isSigner:!1},{name:"tokenUser",isMut:!0,isSigner:!1},{name:"master",isMut:!0,isSigner:!1},{name:"signer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"logger",isMut:!1,isSigner:!1}],args:[{name:"tokenIndex",type:"u8"}]},{name:"consumeEvents",accounts:[{name:"pair",isMut:!0,isSigner:!1},{name:"market",isMut:!1,isSigner:!1},{name:"eventQueue",isMut:!0,isSigner:!1},{name:"signer",isMut:!0,isSigner:!0},{name:"master",isMut:!0,isSigner:!1},{name:"logger",isMut:!1,isSigner:!1}],args:[{name:"input",type:{defined:"ConsumeEventsInput"}}]}],accounts:[{name:"dexState",type:{kind:"struct",fields:[{name:"crankPenalty",type:"u16"},{name:"reserved",type:{array:["u8",7]}}]}},{name:"daoConfig",type:{kind:"struct",fields:[{name:"fundManager",type:"publicKey"},{name:"reserved",type:{array:["u64",32]}}]}},{name:"pair",type:{kind:"struct",fields:[]}},{name:"market",type:{kind:"struct",fields:[{name:"pair",type:"publicKey"},{name:"t0",type:"publicKey"},{name:"t1",type:"publicKey"},{name:"t0Vault",type:"publicKey"},{name:"t1Vault",type:"publicKey"},{name:"lpToken",type:"publicKey"},{name:"authority",type:"publicKey"},{name:"config",type:{defined:"MarketConfig"}},{name:"orderBook",type:{defined:"OrderBook"}},{name:"nextUserId",type:"u64"},{name:"tokenDecimals",type:{array:["u8",2]}},{name:"pool",type:{array:["u64",2]}},{name:"daoRevenue",type:{array:["u64",2]}},{name:"eventQueue",type:"publicKey"},{name:"reserved",type:{array:["u64",20]}}]}},{name:"marketUser",type:{kind:"struct",fields:[{name:"id",type:"u64"},{name:"t0Pending",type:"u64"},{name:"t1Pending",type:"u64"},{name:"t0Unlocked",type:"u64"},{name:"t1Unlocked",type:"u64"}]}},{name:"dexUser",type:{kind:"struct",fields:[{name:"feeTier",type:{defined:"UserFeeTier"}},{name:"stakedAmount",type:"u64"}]}},{name:"eventQueue",type:{kind:"struct",fields:[{name:"len",type:"u32"},{name:"padding",type:{array:["u8",4]}},{name:"items",type:{array:[{defined:"EventItem"},128]}}]}}],types:[{name:"FeeRates",type:{kind:"struct",fields:[{name:"maker",type:"u64"},{name:"taker",type:"u64"}]}},{name:"MarketConfig",type:{kind:"struct",fields:[{name:"t0LotSize",type:"u64"},{name:"t1LotSize",type:"u64"},{name:"feeRates",type:{defined:"FeeRates"}}]}},{name:"MarketInput",type:{kind:"struct",fields:[{name:"t0LotSize",type:"u64"},{name:"t1LotSize",type:"u64"},{name:"feeTier",type:"u8"}]}},{name:"OrderInput",type:{kind:"struct",fields:[{name:"side",type:"u8"},{name:"limitPrice",type:"u64"},{name:"amount",type:"u64"},{name:"clientOrderId",type:"u64"},{name:"orderType",type:"u8"},{name:"limitTotal",type:{option:"u64"}},{name:"minAmountOut",type:{option:"u64"}}]}},{name:"OrderBook",type:{kind:"struct",fields:[{name:"bids",type:"publicKey"},{name:"asks",type:"publicKey"},{name:"nextSeqNum",type:"u64"}]}},{name:"CancelOrderInput",type:{kind:"struct",fields:[{name:"side",type:"u8"},{name:"orderId",type:"u128"}]}},{name:"EventItem",type:{kind:"struct",fields:[{name:"flag",type:"u8"},{name:"feeTier",type:{defined:"UserFeeTier"}},{name:"padding",type:{array:["u8",6]}},{name:"key",type:"u128"},{name:"owner",type:{array:["u64",4]}},{name:"quantity",type:"u64"},{name:"total",type:"u64"}]}},{name:"DexConfigInput",type:{kind:"struct",fields:[{name:"crankPenalty",type:"u16"}]}},{name:"DexUserFeeTierInput",type:{kind:"struct",fields:[{name:"feeTier",type:"u8"}]}},{name:"ConsumeEventsInput",type:{kind:"struct",fields:[{name:"limit",type:{option:"u32"}}]}},{name:"Side",type:{kind:"enum",variants:[{name:"Bid"},{name:"Ask"}]}},{name:"OrderType",type:{kind:"enum",variants:[{name:"Default"},{name:"ImmediateOrCancel"},{name:"PostOnly"}]}},{name:"MarketFeeTier",type:{kind:"enum",variants:[{name:"Default"},{name:"None"},{name:"Stable"},{name:"Classic"}]}},{name:"UserFeeTier",type:{kind:"enum",variants:[{name:"Default"},{name:"None"},{name:"Partner"},{name:"Referrer"}]}},{name:"FeeRole",type:{kind:"enum",variants:[{name:"Taker"},{name:"Maker"},{name:"Both"}]}}],errors:[{code:6e3,name:"Unknown",msg:"Unknown error"},{code:6001,name:"InsufficientLiquidityAdded",msg:"Insufficient liquidity added"},{code:6002,name:"InsufficientLiquidityRemoved",msg:"Insufficient liquidity removed"},{code:6003,name:"SlabTooSmall",msg:"Slab too small"},{code:6004,name:"SlabOutOfSpace",msg:"Slab out of space"},{code:6005,name:"InvalidQuantity",msg:"Invalid quantity"},{code:6006,name:"InvalidSide",msg:"Invalid side"},{code:6007,name:"OrderNotFound",msg:"Order not found"},{code:6008,name:"InvalidLotSize",msg:"Invalid lot size"},{code:6009,name:"InvalidFarmStartTime",msg:"Invalid farm start time"},{code:6010,name:"InvalidFarmEndTime",msg:"Invalid farm end time"},{code:6011,name:"InvalidFarmDuration",msg:"Invalid farm duration"},{code:6012,name:"InvalidAmount",msg:"Invalid amount"},{code:6013,name:"UnauthorizedOperation",msg:"Unauthorize operation"},{code:6014,name:"OrderbookFull",msg:"Order book is full, please submit a better offer"},{code:6015,name:"BootedOrdersNotFound",msg:"Order outdated: booted orders not found"},{code:6016,name:"InvalidFeeTier",msg:"Invalid fee tier"},{code:6017,name:"InvalidOrderType",msg:"Invalid order type"},{code:6018,name:"PostOnlyOrderCancelled",msg:"Order cancelled due to Post Only condition"},{code:6019,name:"SlippageToleranceExceeded",msg:"Slippage tolerance exceeded"},{code:6020,name:"InvalidTradingPair",msg:"Invalid trading pair"},{code:6021,name:"InvalidInput",msg:"Invalid input"},{code:6022,name:"OrderBookTooLarge",msg:"Order book too large"},{code:6023,name:"InvalidDexUser",msg:"Invalid dex user"},{code:6024,name:"InvalidMarketUser",msg:"Invalid market user"},{code:6025,name:"InvalidRebateAccount",msg:"Invalid rebate account"}]});var MQ,DQ;!function(e){e[e.BID=0]="BID",e[e.ASK=1]="ASK"}(MQ||(MQ={})),function(e){e.ExactIn="ExactIn",e.ExactOut="ExactOut"}(DQ||(DQ={}));class NQ{constructor(e,t,n){this.market=e,this.orderBook=t,this.tokens=n,this.parseOrder=e=>({quantity:this.toUiAmount(e.quantity,this.tokens[0]),price:this.toUiPrice(EQ.getPriceFromKey(e.key))}),this.formatting=this.getMarketFormatting(this.market.config.t0LotSize.toNumber(),this.market.config.t1LotSize.toNumber(),this.tokens[0].decimals,this.tokens[1].decimals),this.pool=this.market.pool.map(((e,t)=>this.toUiAmount(e,this.tokens[t]))),this.orders={bids:t.bids.map(this.parseOrder),asks:t.asks.map(this.parseOrder)},this.feeRates={maker:this.market.config.feeRates.maker.toNumber(),taker:this.market.config.feeRates.taker.toNumber()},this.basePrices=[this.evaluateOrder(MQ.BID,0).unitPrice,this.evaluateOrder(MQ.ASK,0).unitPrice]}getMarketFormatting(e,t,n,i){const r=10**-n*e,o=10**-i*t,A=t/(r*10**i),s=Math.max(Math.floor(-Math.log10(r)),0),a=Math.max(Math.floor(-Math.log10(A)),0);return{lotSize:r,tickSize:A,quoteSize:o,sizeDecimals:s,priceDecimals:a,quoteDecimals:a}}toUiAmount(e,t){var n;const i=new NA(10).toPower(null!==(n=t.decimals)&&void 0!==n?n:9);return new NA(e.toString()).div(i).toNumber()}toProgramAmount(e,t){var n;const i=new NA(10).toPower(null!==(n=t.decimals)&&void 0!==n?n:9);return b().BigInt(new NA(e).mul(i).floor().toString())}toUiPrice(e){const t=new NA(10).pow(this.tokens[0].decimals),n=new NA(10).pow(this.tokens[1].decimals),i=this.market.config.t0LotSize.toNumber(),r=this.market.config.t1LotSize.toNumber();return new NA(e.toString()).div(n.div(r)).mul(t.div(i)).toNumber()}isBetterOffer(e,t,n){return!!t&&(!n||(e?t>=n:t<=n))}getBetterOffer(e,t,n){return t?n?e?Math.max(t,n):Math.min(t,n):t:n}evaluateOrder(e,t,n,i){let r=this.pool;const o=e?this.orders.bids:this.orders.asks,{lotSize:A,tickSize:s}=this.formatting,a=Number(t)>0||Number(i)>0;n=null!=n?n:0;let c=t=null!=t?t:1/0;c||(c=A);let u=i=null!=i?i:1/0;u||(u=s);let l=0;const g={filled:0,cost:0,lpFilled:0,lpCost:0,orderFilled:0,orderCost:0};let d=r[0]?r[1]/r[0]:0;const h=this.toUiAmount(new(y())(100),this.tokens[0]),p=this.toUiAmount(new(y())(100),this.tokens[1]),f=r[0]>h&&r[1]>p;let m=0,I=0;for(;c>0&&u>0;){const t=o[l++],i=t?Number(t.price):0;if(f){const t=Math.max(r[0]-h,0),o=r[1]/r[0],A=this.getBetterOffer(e,i,n);if(!A||this.isBetterOffer(e,o,A)){const n=new NA(r[0]).mul(r[1]),i=A?Math.sqrt(n.div(A).toNumber()):0,s=Math.min(n.div(p).toNumber(),t);let a=A?0==e?t-i:Math.min(i-t,s):1/0;if(a>0){let i=1/0;if(u!=1/0){const o=0==e?r[1]+u:Math.max(r[1]-u,p),A=Math.max(n.div(o).toNumber(),h);i=Math.abs(A-t)}const A=Math.min(a,c,i,s),l=0==e?r[0]-A:r[0]+A,d=n.div(l).toNumber(),f=Math.min(Math.abs(r[1]-d),u);r=[l,d],c-=A,g.filled+=A,g.cost+=f,g.lpFilled+=A,g.lpCost+=f,u!=1/0&&(u-=f),I!=o&&(m++,I=f/A)}}}if(!(c>0&&u>0&&t)||n&&!this.isBetterOffer(e,i,n))break;{const e=Math.min(Number(t.quantity),c,u!=1/0?u/i:1/0),n=e*i;g.filled+=e,g.cost+=n,g.orderFilled+=e,g.orderCost+=n,u!=1/0&&(u-=n),c-=e,m++,I=i}}return n&&(c=Math.min(c,u/n)),{...g,lpPrice:d,unitPrice:g.filled?g.cost/g.filled:0,lpUnitPrice:g.lpFilled?g.lpCost/g.lpFilled:0,orderUnitPrice:g.orderFilled?g.orderCost/g.orderFilled:0,quantity:a?g.filled+c:0,remaining:n?c:0,remainingTotal:n?n*c:0,computeSteps:m,output:this.applyFees(g,e)}}applyFees(e,t){const{maker:n,taker:i}=this.feeRates,[r,o]=t?[e.lpCost,e.orderCost]:[e.lpFilled,e.orderFilled],A=(r*(n+i)+o*i)/1e4,s=r+o;return{grossAmount:s,netAmount:s-A,feeAmount:A,feePct:A/s*100}}checkMinimumAmounts(e,t,n){const i=this.toProgramAmount(this.formatting.lotSize,this.tokens[0]);return e?{outAmount:b().greaterThanOrEqual(t,i)?n:b().BigInt(0),minInAmount:i}:{outAmount:b().greaterThanOrEqual(n,i)?n:b().BigInt(0),minOutAmount:i}}getQuote(e){const t=e.destinationMint.equals(this.market.t0)?MQ.BID:MQ.ASK,n=e.swapMode==DQ.ExactIn,i=n?t:1-t,r=this.tokens[1-i],o=this.toUiAmount(new(y())(e.amount.toString()),r),A=this.tokens[t],s=this.tokens[1-t],a=n?!t:t,c=this.evaluateOrder(t,a?void 0:o,0,a?o:void 0),u=this.basePrices[t],{feeAmount:l,feePct:g,grossAmount:d}=c.output,h=this.toProgramAmount(l,A),p=b().subtract(this.toProgramAmount(d,A),h),f=this.toProgramAmount(t?c.filled:c.cost,s),[m,I]=n?[e.amount,p]:[f,p];return{feeMint:A.address.toString(),feeAmount:h,feePct:g,inAmount:m,notEnoughLiquidity:c.remaining>0&&c.remainingTotal>0,priceImpactPct:Math.abs(u-c.unitPrice)/c.unitPrice*100,...this.checkMinimumAmounts(t,m,I)}}}i(55872).Buffer;var TQ=i(55872).Buffer,PQ=Object.defineProperty,OQ=Object.defineProperties,FQ=Object.getOwnPropertyDescriptors,RQ=Object.getOwnPropertySymbols,GQ=Object.prototype.hasOwnProperty,xQ=Object.prototype.propertyIsEnumerable,UQ=(e,t,n)=>t in e?PQ(e,t,{enumerable:!0,configurable:!0,writable:!0,value:n}):e[t]=n,_Q=(e,t)=>{for(var n in t||(t={}))GQ.call(t,n)&&UQ(e,n,t[n]);if(RQ)for(var n of RQ(t))xQ.call(t,n)&&UQ(e,n,t[n]);return e},LQ=(e,t)=>OQ(e,FQ(t)),KQ=new I(0),YQ=new I(1),jQ=new I(-1),WQ=new I(1).shln(64),JQ=new I(1).shln(128),qQ=WQ.sub(YQ),ZQ=JQ.subn(1),zQ=-307200,HQ=307200,VQ=new I("3939943522091"),XQ=new I("86367321006760116002434269"),$Q=new I(10).pow(new I(6));function eb(e){let t=new ArrayBuffer(4);return new DataView(t).setInt32(0,e,!1),new Uint8Array(t)}new A.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");var tb=TQ.from("tick_array","utf8");function nb(e,t,n){let{publicKey:i,nonce:r}=function(e,t){let[n,i]=A.PublicKey.findProgramAddressSync(e,t);return{publicKey:n,nonce:i}}([tb,t.toBuffer(),eb(n)],e);return{publicKey:i,nonce:r}}var ib=60,rb=class{static getTickArrayStartIndexByTick(e,t){let n=e/(ib*t);return n=e<0&&e%(ib*t)!=0?Math.ceil(n)-1:Math.floor(n),n*(t*ib)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*ib,i=Math.floor(e/n)+512;return Math.abs(i)}static checkTickArrayIsInitialized(e,t,n){let i=n*ib,r=Math.floor(t/i)+512,o=Math.abs(r);return{isInitialized:e.testn(o),startIndex:(o-512)*i}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*ib:e+t*ib}static mergeTickArrayBitmap(e){return e[0].add(e[1].shln(64)).add(e[2].shln(128)).add(e[3].shln(192)).add(e[4].shln(256)).add(e[5].shln(320)).add(e[6].shln(384)).add(e[7].shln(448)).add(e[8].shln(512)).add(e[9].shln(576)).add(e[10].shln(640)).add(e[11].shln(704)).add(e[12].shln(768)).add(e[13].shln(832)).add(e[14].shln(896)).add(e[15].shln(960))}static getInitializedTickArrayInRange(e,t,n,i){if(n%(t*ib)!=0)throw new Error("Invild tickArrayStartIndex");let r=Math.floor(n/(t*ib))+512;return[...rb.searchLowBitFromStart(e,r-1,0,i,t),...rb.searchHightBitFromStart(e,r,1024,i,t)]}static searchLowBitFromStart(e,t,n,i,r){let o=0,A=[];for(let s=t;s>=n;s--){if(e.shrn(s).and(new I(1)).eqn(1)){let e=r*ib*(s-512);A.push(e),o++}if(o>=i)break}return A}static searchHightBitFromStart(e,t,n,i,r){let o=0,A=[];for(let s=t;s=i)break}return A}},ob=class{static nextInitializedTick(e,t,n,i,r,o){let{initializedTick:A,tickArrayAddress:s,tickArrayStartTickIndex:a}=this.nextInitializedTickInOneArray(e,t,n,i,r,o);for(;null==A||A.liquidityGross.lten(0);){if(a=rb.getNextTickArrayStartIndex(a,r,o),a<-307200||a>306600)throw new Error("No enough initialized tickArray");let i=n[a];if(void 0===i)continue;let{nextTick:c,tickArrayAddress:u,tickArrayStartTickIndex:l}=this.firstInitializedTickInOneArray(e,t,i,o);[A,s,a]=[c,u,l]}if(null==A)throw new Error("No invaild tickArray cache");return{nextTick:A,tickArrayAddress:s,tickArrayStartTickIndex:a}}static firstInitializedTickInOneArray(e,t,n,i){let r;if(i){let e=59;for(;e>=0;){let t=n.ticks[e];if(t.liquidityGross.gtn(0)){r=t;break}e-=1}}else{let e=0;for(;e=0;){let e=c.ticks[a];if(e.liquidityGross.gtn(0)){A=e;break}a-=1}else for(a+=1;aHQ)throw new Error("tick must be in MIN_TICK and MAX_TICK");let t=e<0?-1*e:e,n=new I(0!=(1&t)?"18445821805675395072":"18446744073709551616");return 0!=(2&t)&&(n=sb(n,new I("18444899583751176192"))),0!=(4&t)&&(n=sb(n,new I("18443055278223355904"))),0!=(8&t)&&(n=sb(n,new I("18439367220385607680"))),0!=(16&t)&&(n=sb(n,new I("18431993317065453568"))),0!=(32&t)&&(n=sb(n,new I("18417254355718170624"))),0!=(64&t)&&(n=sb(n,new I("18387811781193609216"))),0!=(128&t)&&(n=sb(n,new I("18329067761203558400"))),0!=(256&t)&&(n=sb(n,new I("18212142134806163456"))),0!=(512&t)&&(n=sb(n,new I("17980523815641700352"))),0!=(1024&t)&&(n=sb(n,new I("17526086738831433728"))),0!=(2048&t)&&(n=sb(n,new I("16651378430235570176"))),0!=(4096&t)&&(n=sb(n,new I("15030750278694412288"))),0!=(8192&t)&&(n=sb(n,new I("12247334978884435968"))),0!=(16384&t)&&(n=sb(n,new I("8131365268886854656"))),0!=(32768&t)&&(n=sb(n,new I("3584323654725218816"))),0!=(65536&t)&&(n=sb(n,new I("696457651848324352"))),0!=(131072&t)&&(n=sb(n,new I("26294789957507116"))),0!=(262144&t)&&(n=sb(n,new I("37481735321082"))),e>0&&(n=ZQ.div(n)),n}static getTickFromPrice(e,t,n){return cb.getTickFromSqrtPriceX64(cb.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(XQ)||e.lt(VQ))throw new Error("Provided sqrtPrice is not within the supported sqrtPrice range.");let t=e.bitLength()-1,n=function(e,t,n){let i=e.toTwos(128).shln(32);return i.imaskn(129),i.fromTwos(128)}(new I(t-64)),i=new I("8000000000000000","hex"),r=0,o=new I(0),A=t>=64?e.shrn(t-63):e.shln(63-t);for(;i.gt(new I(0))&&r<14;){A=A.mul(A);let e=A.shrn(127);A=A.shrn(63+e.toNumber()),o=o.add(i.mul(e)),i=i.shrn(1),r+=1}let s=o.shrn(32),a=n.add(s).mul(new I("59543866431248")),c=ab(a.sub(new I("184467440737095516")),64,128).toNumber(),u=ab(a.add(new I("15793534762490258745")),64,128).toNumber();return c==u?c:cb.getSqrtPriceX64FromTick(u).lte(e)?u:c}},ub=class{static addDelta(e,t){return e.add(t)}static getTokenAmountAFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(KQ))throw new Error("sqrtPriceX64A must greater than 0");let r=n.ushln(64),o=t.sub(e);return i?Ab.mulDivRoundingUp(Ab.mulDivCeil(r,o,t),YQ,e):Ab.mulDivFloor(r,o,t).div(e)}static getTokenAmountBFromLiquidity(e,t,n,i){if(e.gt(t)&&([e,t]=[t,e]),!e.gt(KQ))throw new Error("sqrtPriceX64A must greater than 0");return i?Ab.mulDivCeil(n,t.sub(e),WQ):Ab.mulDivFloor(n,t.sub(e),WQ)}static getLiquidityFromTokenAmountA(e,t,n,i){e.gt(t)&&([e,t]=[t,e]);let r=n.mul(e).mul(t),o=t.sub(e),A=r.div(o);return i?Ab.mulDivRoundingUp(A,YQ,qQ):A.shrn(64)}static getLiquidityFromTokenAmountB(e,t,n){return e.gt(t)&&([e,t]=[t,e]),Ab.mulDivFloor(n,qQ,t.sub(e))}static getLiquidityFromTokenAmounts(e,t,n,i,r){if(t.gt(n)&&([t,n]=[n,t]),e.lte(t))return ub.getLiquidityFromTokenAmountA(t,n,i,!1);if(e.lt(n)){let o=ub.getLiquidityFromTokenAmountA(e,n,i,!1),A=ub.getLiquidityFromTokenAmountB(t,e,r);return o.lt(A)?o:A}return ub.getLiquidityFromTokenAmountB(t,n,r)}static getAmountsFromLiquidity(e,t,n,i,r){return t.gt(n)&&([t,n]=[n,t]),e.lte(t)?{amountA:ub.getTokenAmountAFromLiquidity(t,n,i,r),amountB:new I(0)}:e.lt(n)?{amountA:ub.getTokenAmountAFromLiquidity(e,n,i,r),amountB:ub.getTokenAmountBFromLiquidity(t,e,i,r)}:{amountA:new I(0),amountB:ub.getTokenAmountBFromLiquidity(t,n,i,r)}}static getAmountsFromLiquidityWithSlippage(e,t,n,i,r,o,A){let{amountA:s,amountB:a}=ub.getAmountsFromLiquidity(e,t,n,i,o),c=r?1+A:1-A;return{amountSlippageA:s.muln(c),amountSlippageB:a.muln(c)}}},lb=class{static swapCompute(e,t,n,i,r,o,A,s,a,c,u,l){if(c.eq(KQ))throw new Error("amountSpecified must not be 0");if(l||(l=i?VQ.add(YQ):XQ.sub(YQ)),i){if(l.lt(VQ))throw new Error("sqrtPriceX64 must greater than MIN_SQRT_PRICE_X64");if(l.gte(a))throw new Error("sqrtPriceX64 must smaller than current")}else{if(l.gt(XQ))throw new Error("sqrtPriceX64 must smaller than MAX_SQRT_PRICE_X64");if(l.lte(a))throw new Error("sqrtPriceX64 must greater than current")}let g=c.gt(KQ),d={amountSpecifiedRemaining:c,amountCalculated:KQ,sqrtPriceX64:a,tick:A,accounts:[],liquidity:o,feeAmount:new I(0)},h=0;for(;!d.amountSpecifiedRemaining.eq(KQ)&&d.sqrtPriceX64!=l&&d.tickzQ;){if(h>10)throw Error("liquidity limit");let o={};o.sqrtPriceStartX64=d.sqrtPriceX64;let A,{nextTick:a,tickArrayAddress:c,tickArrayStartTickIndex:p}=ob.nextInitializedTick(e,t,n,d.tick,s,i);if(o.tickNext=a.tick,o.initialized=a.liquidityGross.gtn(0),u!==p&&c&&(d.accounts.push(c),u=p),o.tickNextHQ&&(o.tickNext=HQ),o.sqrtPriceNextX64=cb.getSqrtPriceX64FromTick(o.tickNext),A=i&&o.sqrtPriceNextX64.lt(l)||!i&&o.sqrtPriceNextX64.gt(l)?l:o.sqrtPriceNextX64,[d.sqrtPriceX64,o.amountIn,o.amountOut,o.feeAmount]=lb.swapStepCompute(d.sqrtPriceX64,A,d.liquidity,d.amountSpecifiedRemaining,r),d.feeAmount=d.feeAmount.add(o.feeAmount),g?(d.amountSpecifiedRemaining=d.amountSpecifiedRemaining.sub(o.amountIn.add(o.feeAmount)),d.amountCalculated=d.amountCalculated.sub(o.amountOut)):(d.amountSpecifiedRemaining=d.amountSpecifiedRemaining.add(o.amountOut),d.amountCalculated=d.amountCalculated.add(o.amountIn.add(o.feeAmount))),d.sqrtPriceX64.eq(o.sqrtPriceNextX64)){if(o.initialized){let e=a.liquidityNet;i&&(e=e.mul(jQ)),d.liquidity=ub.addDelta(d.liquidity,e)}d.tick=i?o.tickNext-1:o.tickNext}else d.sqrtPriceX64!=o.sqrtPriceStartX64&&(d.tick=cb.getTickFromSqrtPriceX64(d.sqrtPriceX64));++h}return{amountCalculated:d.amountCalculated,feeAmount:d.feeAmount,sqrtPriceX64:d.sqrtPriceX64,liquidity:d.liquidity,tickCurrent:d.tick,accounts:d.accounts}}static swapStepCompute(e,t,n,i,r){let o={sqrtPriceX64Next:new I(0),amountIn:new I(0),amountOut:new I(0),feeAmount:new I(0)},A=e.gte(t),s=i.gte(KQ);if(s){let s=Ab.mulDivFloor(i,$Q.sub(new I(r.toString())),$Q);o.amountIn=A?ub.getTokenAmountAFromLiquidity(t,e,n,!0):ub.getTokenAmountBFromLiquidity(e,t,n,!0),s.gte(o.amountIn)?o.sqrtPriceX64Next=t:o.sqrtPriceX64Next=cb.getNextSqrtPriceX64FromInput(e,n,s,A)}else o.amountOut=A?ub.getTokenAmountBFromLiquidity(t,e,n,!1):ub.getTokenAmountAFromLiquidity(e,t,n,!1),i.mul(jQ).gte(o.amountOut)?o.sqrtPriceX64Next=t:o.sqrtPriceX64Next=cb.getNextSqrtPriceX64FromOutput(e,n,i.mul(jQ),A);let a=t.eq(o.sqrtPriceX64Next);return A?(a&&s||(o.amountIn=ub.getTokenAmountAFromLiquidity(o.sqrtPriceX64Next,e,n,!0)),a&&!s||(o.amountOut=ub.getTokenAmountBFromLiquidity(o.sqrtPriceX64Next,e,n,!1))):(o.amountIn=a&&s?o.amountIn:ub.getTokenAmountBFromLiquidity(e,o.sqrtPriceX64Next,n,!0),o.amountOut=a&&!s?o.amountOut:ub.getTokenAmountAFromLiquidity(e,o.sqrtPriceX64Next,n,!1)),!s&&o.amountOut.gt(i.mul(jQ))&&(o.amountOut=i.mul(jQ)),s&&!o.sqrtPriceX64Next.eq(t)?o.feeAmount=i.sub(o.amountIn):o.feeAmount=Ab.mulDivCeil(o.amountIn,new I(r),$Q.sub(new I(r))),[o.sqrtPriceX64Next,o.amountIn,o.amountOut,o.feeAmount]}},gb=class{static getOutputAmountAndRemainAccounts(e,t,n,i,r){let o=n.equals(e.mintA.mint),A=[],{isExist:s,startIndex:a,nextAccountMeta:c}=this.getFirstInitializedTickArray(e,o);if(!s||void 0===a||!c)throw new Error("Invalid tick array");A.push(c);let{amountCalculated:u,accounts:l,sqrtPriceX64:g,feeAmount:d}=lb.swapCompute(e.programId,e.id,t,o,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i,a,r);return A.push(...l),{expectedAmountOut:u.mul(jQ),remainingAccounts:A,executionPrice:g,feeAmount:d}}static getInputAmountAndRemainAccounts(e,t,n,i,r){let o=n.equals(e.mintB.mint),A=[],{isExist:s,startIndex:a,nextAccountMeta:c}=this.getFirstInitializedTickArray(e,o);if(!s||void 0===a||!c)throw new Error("Invalid tick array");A.push(c);let{amountCalculated:u,accounts:l,sqrtPriceX64:g,feeAmount:d}=lb.swapCompute(e.programId,e.id,t,o,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,i.mul(jQ),a,r);return A.push(...l),{expectedAmountIn:u,remainingAccounts:A,executionPrice:g,feeAmount:d}}static getFirstInitializedTickArray(e,t){let n=rb.mergeTickArrayBitmap(e.tickArrayBitmap),{isInitialized:i,startIndex:r}=rb.checkTickArrayIsInitialized(n,e.tickCurrent,e.tickSpacing);if(i){let{publicKey:t}=nb(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:t}}let{isExist:o,nextStartIndex:A}=this.nextInitializedTickArrayStartIndex(e,t);if(o){let{publicKey:t}=nb(e.programId,e.id,A);return{isExist:!0,startIndex:A,nextAccountMeta:t}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static nextInitializedTickArrayStartIndex(e,t){let n=rb.mergeTickArrayBitmap(e.tickArrayBitmap),i=rb.getTickArrayOffsetInBitmapByTick(e.tickCurrent,e.tickSpacing),r=t?rb.searchLowBitFromStart(n,i-1,0,1,e.tickSpacing):rb.searchHightBitFromStart(n,i,1024,1,e.tickSpacing);return r.length>0?{isExist:!0,nextStartIndex:r[0]}:{isExist:!1,nextStartIndex:0}}},db=class{static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,amountIn:i,slippage:r,priceLimit:o=new NA(0)}){let A;A=o.equals(new NA(0))?n.equals(e.mintA.mint)?VQ.add(YQ):XQ.sub(YQ):cb.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let{expectedAmountOut:s,remainingAccounts:a,executionPrice:c,feeAmount:u}=gb.getOutputAmountAndRemainAccounts(e,t,n,i,A),l=cb.sqrtPriceX64ToPrice(c,e.mintA.decimals,e.mintB.decimals),g=n.equals(e.mintA.mint)?l:new NA(1).div(l),d=s.mul(new I(Math.floor(1e10*(1-r)))).div(new I(1e10)),h=e.mintA.mint.equals(n)?e.currentPrice:new NA(1).div(e.currentPrice),p=Math.abs(parseFloat(g.toFixed())-parseFloat(h.toFixed()))/parseFloat(h.toFixed());return{amountOut:s,minAmountOut:d,currentPrice:e.currentPrice,executionPrice:g,priceImpact:p,fee:u,remainingAccounts:a}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,amountOut:i,slippage:r,priceLimit:o=new NA(0)}){let A;A=o.equals(new NA(0))?n.equals(e.mintB.mint)?VQ.add(YQ):XQ.sub(YQ):cb.priceToSqrtPriceX64(o,e.mintA.decimals,e.mintB.decimals);let{expectedAmountIn:s,remainingAccounts:a,executionPrice:c,feeAmount:u}=gb.getInputAmountAndRemainAccounts(e,t,n,i,A),l=cb.sqrtPriceX64ToPrice(c,e.mintA.decimals,e.mintB.decimals),g=n.equals(e.mintA.mint)?l:new NA(1).div(l),d=s.mul(new I(Math.floor(1e10*(1+r)))).div(new I(1e10)),h=e.mintA.mint.equals(n)?e.currentPrice:new NA(1).div(e.currentPrice),p=Math.abs(parseFloat(g.toFixed())-parseFloat(h.toFixed()))/parseFloat(h.toFixed());return{amountIn:s,maxAmountIn:d,currentPrice:e.currentPrice,executionPrice:g,priceImpact:p,fee:u,remainingAccounts:a}}static getTickArrayPks(e,t,n){let i=rb.mergeTickArrayBitmap(t.tickArrayBitmap),r=rb.getTickArrayStartIndexByTick(t.tickCurrent,t.tickSpacing),o=[],A=rb.getInitializedTickArrayInRange(i,t.tickSpacing,r,Math.floor(7.5));for(let t of A){let{publicKey:i}=nb(n,e,t);o.push(i)}return o}static formatPoolInfo({address:e,poolState:t,ammConfig:n,programId:i}){return{id:e,mintA:{mint:t.tokenMint0,vault:t.tokenVault0,decimals:t.mintDecimals0},mintB:{mint:t.tokenMint1,vault:t.tokenVault1,decimals:t.mintDecimals1},observationId:t.observationKey,ammConfig:LQ(_Q({},n),{id:t.ammConfig}),programId:i,tickSpacing:t.tickSpacing,liquidity:t.liquidity,sqrtPriceX64:t.sqrtPriceX64,currentPrice:cb.sqrtPriceX64ToPrice(t.sqrtPriceX64,t.mintDecimals0,t.mintDecimals1),tickCurrent:t.tickCurrent,observationIndex:t.observationIndex,observationUpdateDuration:t.observationUpdateDuration,tickArrayBitmap:t.tickArrayBitmap}}},hb={version:"0.1.0",name:"amm_v3",instructions:[{name:"createAmmConfig",accounts:[{name:"owner",isMut:!0,isSigner:!0},{name:"ammConfig",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"index",type:"u16"},{name:"tickSpacing",type:"u16"},{name:"tradeFeeRate",type:"u32"},{name:"protocolFeeRate",type:"u32"},{name:"fundFeeRate",type:"u32"}]},{name:"updateAmmConfig",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"ammConfig",isMut:!0,isSigner:!1}],args:[{name:"param",type:"u8"},{name:"value",type:"u32"}]},{name:"createPool",accounts:[{name:"poolCreator",isMut:!0,isSigner:!0},{name:"ammConfig",isMut:!1,isSigner:!1},{name:"poolState",isMut:!0,isSigner:!1},{name:"tokenMint0",isMut:!1,isSigner:!1},{name:"tokenMint1",isMut:!1,isSigner:!1},{name:"tokenVault0",isMut:!0,isSigner:!1},{name:"tokenVault1",isMut:!0,isSigner:!1},{name:"observationState",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"sqrtPriceX64",type:"u128"}]},{name:"resetSqrtPrice",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"poolState",isMut:!0,isSigner:!1},{name:"tokenVault0",isMut:!0,isSigner:!1},{name:"tokenVault1",isMut:!0,isSigner:!1},{name:"observationState",isMut:!0,isSigner:!1},{name:"recipientTokenAccount0",isMut:!0,isSigner:!1},{name:"recipientTokenAccount1",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"sqrtPriceX64",type:"u128"}]},{name:"initializeReward",accounts:[{name:"rewardFunder",isMut:!0,isSigner:!0},{name:"funderTokenAccount",isMut:!0,isSigner:!1},{name:"ammConfig",isMut:!1,isSigner:!1},{name:"poolState",isMut:!0,isSigner:!1},{name:"rewardTokenMint",isMut:!1,isSigner:!1},{name:"rewardTokenVault",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"param",type:{defined:"InitializeRewardParam"}}]},{name:"collectRemainingRewards",accounts:[{name:"rewardFunder",isMut:!0,isSigner:!0},{name:"funderTokenAccount",isMut:!0,isSigner:!1},{name:"poolState",isMut:!0,isSigner:!1},{name:"rewardTokenVault",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"rewardIndex",type:"u8"}]},{name:"updateRewardInfos",accounts:[{name:"poolState",isMut:!0,isSigner:!1}],args:[]},{name:"setRewardParams",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"ammConfig",isMut:!0,isSigner:!1},{name:"poolState",isMut:!0,isSigner:!1}],args:[{name:"rewardIndex",type:"u8"},{name:"emissionsPerSecondX64",type:"u128"},{name:"openTime",type:"u64"},{name:"endTime",type:"u64"}]},{name:"collectProtocolFee",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"poolState",isMut:!0,isSigner:!1},{name:"ammConfig",isMut:!1,isSigner:!1},{name:"tokenVault0",isMut:!0,isSigner:!1},{name:"tokenVault1",isMut:!0,isSigner:!1},{name:"recipientTokenAccount0",isMut:!0,isSigner:!1},{name:"recipientTokenAccount1",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount0Requested",type:"u64"},{name:"amount1Requested",type:"u64"}]},{name:"collectFundFee",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"poolState",isMut:!0,isSigner:!1},{name:"ammConfig",isMut:!1,isSigner:!1},{name:"tokenVault0",isMut:!0,isSigner:!1},{name:"tokenVault1",isMut:!0,isSigner:!1},{name:"recipientTokenAccount0",isMut:!0,isSigner:!1},{name:"recipientTokenAccount1",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amount0Requested",type:"u64"},{name:"amount1Requested",type:"u64"}]},{name:"openPosition",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"positionNftOwner",isMut:!1,isSigner:!1},{name:"positionNftMint",isMut:!0,isSigner:!0},{name:"positionNftAccount",isMut:!0,isSigner:!1},{name:"metadataAccount",isMut:!0,isSigner:!1},{name:"poolState",isMut:!0,isSigner:!1},{name:"protocolPosition",isMut:!0,isSigner:!1},{name:"tickArrayLower",isMut:!0,isSigner:!1},{name:"tickArrayUpper",isMut:!0,isSigner:!1},{name:"personalPosition",isMut:!0,isSigner:!1},{name:"tokenAccount0",isMut:!0,isSigner:!1},{name:"tokenAccount1",isMut:!0,isSigner:!1},{name:"tokenVault0",isMut:!0,isSigner:!1},{name:"tokenVault1",isMut:!0,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"metadataProgram",isMut:!1,isSigner:!1}],args:[{name:"tickLowerIndex",type:"i32"},{name:"tickUpperIndex",type:"i32"},{name:"tickArrayLowerStartIndex",type:"i32"},{name:"tickArrayUpperStartIndex",type:"i32"},{name:"liquidity",type:"u128"},{name:"amount0Max",type:"u64"},{name:"amount1Max",type:"u64"}]},{name:"closePosition",accounts:[{name:"nftOwner",isMut:!0,isSigner:!0},{name:"positionNftMint",isMut:!0,isSigner:!1},{name:"positionNftAccount",isMut:!0,isSigner:!1},{name:"personalPosition",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"increaseLiquidity",accounts:[{name:"nftOwner",isMut:!1,isSigner:!0},{name:"nftAccount",isMut:!1,isSigner:!1},{name:"poolState",isMut:!0,isSigner:!1},{name:"protocolPosition",isMut:!0,isSigner:!1},{name:"personalPosition",isMut:!0,isSigner:!1},{name:"tickArrayLower",isMut:!0,isSigner:!1},{name:"tickArrayUpper",isMut:!0,isSigner:!1},{name:"tokenAccount0",isMut:!0,isSigner:!1},{name:"tokenAccount1",isMut:!0,isSigner:!1},{name:"tokenVault0",isMut:!0,isSigner:!1},{name:"tokenVault1",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"liquidity",type:"u128"},{name:"amount0Max",type:"u64"},{name:"amount1Max",type:"u64"}]},{name:"decreaseLiquidity",accounts:[{name:"nftOwner",isMut:!1,isSigner:!0},{name:"nftAccount",isMut:!1,isSigner:!1},{name:"personalPosition",isMut:!0,isSigner:!1},{name:"poolState",isMut:!0,isSigner:!1},{name:"protocolPosition",isMut:!0,isSigner:!1},{name:"tokenVault0",isMut:!0,isSigner:!1},{name:"tokenVault1",isMut:!0,isSigner:!1},{name:"tickArrayLower",isMut:!0,isSigner:!1},{name:"tickArrayUpper",isMut:!0,isSigner:!1},{name:"recipientTokenAccount0",isMut:!0,isSigner:!1},{name:"recipientTokenAccount1",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"liquidity",type:"u128"},{name:"amount0Min",type:"u64"},{name:"amount1Min",type:"u64"}]},{name:"swap",accounts:[{name:"payer",isMut:!1,isSigner:!0},{name:"ammConfig",isMut:!1,isSigner:!1},{name:"poolState",isMut:!0,isSigner:!1},{name:"inputTokenAccount",isMut:!0,isSigner:!1},{name:"outputTokenAccount",isMut:!0,isSigner:!1},{name:"inputVault",isMut:!0,isSigner:!1},{name:"outputVault",isMut:!0,isSigner:!1},{name:"observationState",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"tickArray",isMut:!0,isSigner:!1}],args:[{name:"amount",type:"u64"},{name:"otherAmountThreshold",type:"u64"},{name:"sqrtPriceLimitX64",type:"u128"},{name:"isBaseInput",type:"bool"}]},{name:"swapRouterBaseIn",accounts:[{name:"payer",isMut:!1,isSigner:!0},{name:"inputTokenAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"amountIn",type:"u64"},{name:"amountOutMinimum",type:"u64"}]}],accounts:[{name:"ammConfig",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"index",type:"u16"},{name:"owner",type:"publicKey"},{name:"protocolFeeRate",type:"u32"},{name:"tradeFeeRate",type:"u32"},{name:"tickSpacing",type:"u16"},{name:"fundFeeRate",type:"u32"},{name:"paddingU32",type:"u32"},{name:"fundOwner",type:"publicKey"},{name:"padding",type:{array:["u64",3]}}]}},{name:"observationState",type:{kind:"struct",fields:[{name:"initialized",type:"bool"},{name:"poolId",type:"publicKey"},{name:"observations",type:{array:[{defined:"Observation"},1e3]}},{name:"padding",type:{array:["u128",5]}}]}},{name:"personalPositionState",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"nftMint",type:"publicKey"},{name:"poolId",type:"publicKey"},{name:"tickLowerIndex",type:"i32"},{name:"tickUpperIndex",type:"i32"},{name:"liquidity",type:"u128"},{name:"feeGrowthInside0LastX64",type:"u128"},{name:"feeGrowthInside1LastX64",type:"u128"},{name:"tokenFeesOwed0",type:"u64"},{name:"tokenFeesOwed1",type:"u64"},{name:"rewardInfos",type:{array:[{defined:"PositionRewardInfo"},3]}},{name:"padding",type:{array:["u64",8]}}]}},{name:"poolState",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"ammConfig",type:"publicKey"},{name:"owner",type:"publicKey"},{name:"tokenMint0",type:"publicKey"},{name:"tokenMint1",type:"publicKey"},{name:"tokenVault0",type:"publicKey"},{name:"tokenVault1",type:"publicKey"},{name:"observationKey",type:"publicKey"},{name:"mintDecimals0",type:"u8"},{name:"mintDecimals1",type:"u8"},{name:"tickSpacing",type:"u16"},{name:"liquidity",type:"u128"},{name:"sqrtPriceX64",type:"u128"},{name:"tickCurrent",type:"i32"},{name:"observationIndex",type:"u16"},{name:"observationUpdateDuration",type:"u16"},{name:"feeGrowthGlobal0X64",type:"u128"},{name:"feeGrowthGlobal1X64",type:"u128"},{name:"protocolFeesToken0",type:"u64"},{name:"protocolFeesToken1",type:"u64"},{name:"swapInAmountToken0",type:"u128"},{name:"swapOutAmountToken1",type:"u128"},{name:"swapInAmountToken1",type:"u128"},{name:"swapOutAmountToken0",type:"u128"},{name:"status",type:"u8"},{name:"padding",type:{array:["u8",7]}},{name:"rewardInfos",type:{array:[{defined:"RewardInfo"},3]}},{name:"tickArrayBitmap",type:{array:["u64",16]}},{name:"totalFeesToken0",type:"u64"},{name:"totalFeesClaimedToken0",type:"u64"},{name:"totalFeesToken1",type:"u64"},{name:"totalFeesClaimedToken1",type:"u64"},{name:"fundFeesToken0",type:"u64"},{name:"fundFeesToken1",type:"u64"},{name:"padding1",type:{array:["u64",26]}},{name:"padding2",type:{array:["u64",32]}}]}},{name:"protocolPositionState",type:{kind:"struct",fields:[{name:"bump",type:"u8"},{name:"poolId",type:"publicKey"},{name:"tickLowerIndex",type:"i32"},{name:"tickUpperIndex",type:"i32"},{name:"liquidity",type:"u128"},{name:"feeGrowthInside0LastX64",type:"u128"},{name:"feeGrowthInside1LastX64",type:"u128"},{name:"tokenFeesOwed0",type:"u64"},{name:"tokenFeesOwed1",type:"u64"},{name:"rewardGrowthInside",type:{array:["u128",3]}},{name:"padding",type:{array:["u64",8]}}]}},{name:"tickArrayState",type:{kind:"struct",fields:[{name:"poolId",type:"publicKey"},{name:"startTickIndex",type:"i32"},{name:"ticks",type:{array:[{defined:"TickState"},60]}},{name:"initializedTickCount",type:"u8"},{name:"padding",type:{array:["u8",115]}}]}}],types:[{name:"InitializeRewardParam",type:{kind:"struct",fields:[{name:"openTime",type:"u64"},{name:"endTime",type:"u64"},{name:"emissionsPerSecondX64",type:"u128"}]}},{name:"Observation",type:{kind:"struct",fields:[{name:"blockTimestamp",type:"u32"},{name:"sqrtPriceX64",type:"u128"},{name:"cumulativeTimePriceX64",type:"u128"},{name:"padding",type:"u128"}]}},{name:"PositionRewardInfo",type:{kind:"struct",fields:[{name:"growthInsideLastX64",type:"u128"},{name:"rewardAmountOwed",type:"u64"}]}},{name:"RewardInfo",type:{kind:"struct",fields:[{name:"rewardState",type:"u8"},{name:"openTime",type:"u64"},{name:"endTime",type:"u64"},{name:"lastUpdateTime",type:"u64"},{name:"emissionsPerSecondX64",type:"u128"},{name:"rewardTotalEmissioned",type:"u64"},{name:"rewardClaimed",type:"u64"},{name:"tokenMint",type:"publicKey"},{name:"tokenVault",type:"publicKey"},{name:"authority",type:"publicKey"},{name:"rewardGrowthGlobalX64",type:"u128"}]}},{name:"TickState",type:{kind:"struct",fields:[{name:"tick",type:"i32"},{name:"liquidityNet",type:"i128"},{name:"liquidityGross",type:"u128"},{name:"feeGrowthOutside0X64",type:"u128"},{name:"feeGrowthOutside1X64",type:"u128"},{name:"rewardGrowthsOutsideX64",type:{array:["u128",3]}},{name:"padding",type:{array:["u32",13]}}]}},{name:"PoolStatusBitIndex",type:{kind:"enum",variants:[{name:"OpenPositionOrIncreaseLiquidity"},{name:"DecreaseLiquidity"},{name:"CollectFee"},{name:"CollectReward"},{name:"Swap"}]}},{name:"PoolStatusBitFlag",type:{kind:"enum",variants:[{name:"Enable"},{name:"Disable"}]}},{name:"RewardState",type:{kind:"enum",variants:[{name:"Uninitialized"},{name:"Initialized"},{name:"Opening"},{name:"Ended"}]}}],events:[{name:"CreateConfigEvent",fields:[{name:"index",type:"u16",index:!1},{name:"owner",type:"publicKey",index:!0},{name:"protocolFeeRate",type:"u32",index:!1},{name:"tradeFeeRate",type:"u32",index:!1},{name:"tickSpacing",type:"u16",index:!1},{name:"fundFeeRate",type:"u32",index:!1},{name:"fundOwner",type:"publicKey",index:!1}]},{name:"UpdaterConfigEvent",fields:[{name:"owner",type:"publicKey",index:!1},{name:"protocolFeeRate",type:"u32",index:!1},{name:"tradeFeeRate",type:"u32",index:!1},{name:"fundFeeRate",type:"u32",index:!1},{name:"fundOwner",type:"publicKey",index:!1}]},{name:"CreatePersonalPositionEvent",fields:[{name:"poolState",type:"publicKey",index:!1},{name:"minter",type:"publicKey",index:!1},{name:"nftOwner",type:"publicKey",index:!1},{name:"tickLowerIndex",type:"i32",index:!1},{name:"tickUpperIndex",type:"i32",index:!1},{name:"liquidity",type:"u128",index:!1},{name:"depositAmount0",type:"u64",index:!1},{name:"depositAmount1",type:"u64",index:!1}]},{name:"IncreaseLiquidityEvent",fields:[{name:"positionNftMint",type:"publicKey",index:!1},{name:"liquidity",type:"u128",index:!1},{name:"amount0",type:"u64",index:!1},{name:"amount1",type:"u64",index:!1}]},{name:"DecreaseLiquidityEvent",fields:[{name:"positionNftMint",type:"publicKey",index:!1},{name:"liquidity",type:"u128",index:!1},{name:"decreaseAmount0",type:"u64",index:!1},{name:"decreaseAmount1",type:"u64",index:!1},{name:"feeAmount0",type:"u64",index:!1},{name:"feeAmount1",type:"u64",index:!1},{name:"rewardAmounts",type:{array:["u64",3]},index:!1}]},{name:"CollectPersonalFeeEvent",fields:[{name:"positionNftMint",type:"publicKey",index:!1},{name:"recipientTokenAccount0",type:"publicKey",index:!1},{name:"recipientTokenAccount1",type:"publicKey",index:!1},{name:"amount0",type:"u64",index:!1},{name:"amount1",type:"u64",index:!1}]},{name:"UpdateRewardInfosEvent",fields:[{name:"rewardGrowthGlobalX64",type:{array:["u128",3]},index:!1}]},{name:"PoolCreatedEvent",fields:[{name:"tokenMint0",type:"publicKey",index:!1},{name:"tokenMint1",type:"publicKey",index:!1},{name:"tickSpacing",type:"u16",index:!1},{name:"poolState",type:"publicKey",index:!1},{name:"sqrtPriceX64",type:"u128",index:!1},{name:"tick",type:"i32",index:!1},{name:"tokenVault0",type:"publicKey",index:!1},{name:"tokenVault1",type:"publicKey",index:!1}]},{name:"CollectProtocolFeeEvent",fields:[{name:"poolState",type:"publicKey",index:!1},{name:"recipientTokenAccount0",type:"publicKey",index:!1},{name:"recipientTokenAccount1",type:"publicKey",index:!1},{name:"amount0",type:"u64",index:!1},{name:"amount1",type:"u64",index:!1}]},{name:"SwapEvent",fields:[{name:"poolState",type:"publicKey",index:!1},{name:"sender",type:"publicKey",index:!1},{name:"tokenAccount0",type:"publicKey",index:!1},{name:"tokenAccount1",type:"publicKey",index:!1},{name:"amount0",type:"u64",index:!1},{name:"amount1",type:"u64",index:!1},{name:"zeroForOne",type:"bool",index:!1},{name:"sqrtPriceX64",type:"u128",index:!1},{name:"liquidity",type:"u128",index:!1},{name:"tick",type:"i32",index:!1}]}],errors:[{code:6e3,name:"LOK",msg:"LOK"},{code:6001,name:"NotApproved",msg:"Not approved"},{code:6002,name:"InvalidUpdateConfigFlag",msg:"invalid update amm config flag"},{code:6003,name:"AccountLack",msg:"Account lack"},{code:6004,name:"ClosePositionErr",msg:"Remove liquitity, collect fees owed and reward then you can close position account"},{code:6005,name:"ZeroMintAmount",msg:"Minting amount should be greater than 0"},{code:6006,name:"InvaildTickIndex",msg:"Tick index of lower must be smaller than upper"},{code:6007,name:"TickInvaildOrder",msg:"The lower tick must be below the upper tick"},{code:6008,name:"TickLowerOverflow",msg:"The tick must be greater, or equal to the minimum tick(-221818)"},{code:6009,name:"TickUpperOverflow",msg:"The tick must be lesser than, or equal to the maximum tick(221818)"},{code:6010,name:"TickAndSpacingNotMatch",msg:"tick % tick_spacing must be zero"},{code:6011,name:"InvalidTickArray",msg:"Invaild tick array account"},{code:6012,name:"SqrtPriceLimitOverflow",msg:"Square root price limit overflow"},{code:6013,name:"SqrtPriceX64",msg:"sqrt_price_x64 out of range"},{code:6014,name:"LiquiditySubValueErr",msg:"Liquidity sub delta L must be smaller than before"},{code:6015,name:"LiquidityAddValueErr",msg:"Liquidity add delta L must be greater, or equal to before"},{code:6016,name:"InvaildLiquidity",msg:"Invaild liquidity when update position"},{code:6017,name:"ForbidBothZeroForSupplyLiquidity",msg:"Both token amount must not be zero while supply liquidity"},{code:6018,name:"TransactionTooOld",msg:"Transaction too old"},{code:6019,name:"PriceSlippageCheck",msg:"Price slippage check"},{code:6020,name:"TooLittleOutputReceived",msg:"Too little output received"},{code:6021,name:"TooMuchInputPaid",msg:"Too much input paid"},{code:6022,name:"InvaildSwapAmountSpecified",msg:"Swap special amount can not be zero"},{code:6023,name:"InvalidInputPoolVault",msg:"Input pool vault is invalid"},{code:6024,name:"TooSmallInputOrOutputAmount",msg:"Swap input or output amount is too small"},{code:6025,name:"InvalidRewardIndex",msg:"Invalid reward index"},{code:6026,name:"FullRewardInfo",msg:"The init reward token reach to the max"},{code:6027,name:"RewardTokenAlreadyInUse",msg:"The init reward token already in use"},{code:6028,name:"ExceptPoolVaultMint",msg:"The reward tokens must contain one of pool vault mint except the last reward"},{code:6029,name:"InvalidRewardInitParam",msg:"Invalid reward init param"},{code:6030,name:"InvalidRewardDesiredAmount",msg:"Invalid collect reward desired amount"},{code:6031,name:"InvalidRewardInputAccountNumber",msg:"Invalid collect reward input account number"},{code:6032,name:"InvalidRewardPeriod",msg:"Invalid reward period"},{code:6033,name:"NotApproveUpdateRewardEmissiones",msg:"Modification of emissiones is allowed within 72 hours from the end of the previous cycle"},{code:6034,name:"UnInitializedRewardInfo",msg:"uninitialized reward info"}]},pb=i(84291),fb=i(45005),mb=i.n(fb),Ib=i(55872).Buffer;const yb={Raydium:{Openbook:!0}},Bb={Openbook:!0,Cykura:!0,Meteora:{Lifinity:!0,"Lifinity V2":!0,Balansol:!0,Crema:!0,Dradex:!0,Raydium:!0,"Marco Polo":!0},Crema:{Balansol:!0,Raydium:!0,Lifinity:!0,"Lifinity V2":!0},"Marco Polo":{Lifinity:!0,"Lifinity V2":!0,Balansol:!0,Crema:!0,Dradex:!0,Raydium:!0},Dradex:{Lifinity:!0,"Lifinity V2":!0,Balansol:!0,Crema:!0,Raydium:!0},Balansol:{Raydium:!0},Lifinity:{Raydium:!0},"Lifinity V2":{Raydium:!0}},Cb={Raydium:!0,GooseFX:!0,Meteora:!0,Serum:!0,Openbook:!0,Dradex:!0,Crema:!0,Lifinity:!0,"Lifinity V2":!0},wb=(e,t,n)=>{const i=e[t];if(i){if(!0===i||!0===i["*"])return!0;if(n)return!0===i[n]}return!1},Eb=(e,t,n)=>wb(e,t,n)||!!n&&wb(e,n,t);function Qb(e,t){return Array.apply(0,new Array(Math.ceil(e.length/t))).map(((n,i)=>e.slice(i*t,(i+1)*t)))}async function bb(e,t,n=1e3,i=100){return(await Promise.all(Qb(t,n).map((async t=>{const n=Qb(t,i).map((t=>({methodName:"getMultipleAccounts",args:e._buildArgs([t],e.commitment,"base64+zstd")})));return e._rpcBatchRequest(n).then((e=>e.reduce(((e,t)=>(t.result.value.forEach((t=>{if(t){const n=t;n.data=Ib.from(function(e,t){for(var n=0,i=[],r=+!t,o=0;e.length;){var A=it(e,r||t);if("object"==typeof A){for(r?(t=null,A.w.length==A.u&&(i.push(t=A.w),o+=A.u)):(i.push(t),A.e=0);!A.l;){var s=ft(e,A,t);s||tt(5),t?A.e=A.y:(i.push(s),o+=s.length,$e(A.w,0,s.length),A.w.set(s,A.w.length-s.length))}n=A.b+4*A.c}else n=A;e=e.subarray(n)}return function(e,t){if(1==e.length)return e[0];for(var n=new qe(t),i=0,r=0;it.map((()=>null))))})))).flat()}var kb;!function(e){e.ExactIn="ExactIn",e.ExactOut="ExactOut"}(kb||(kb={}));const vb=(e,t)=>t.map((t=>{const n=e.get(t.toString());if(!n)throw new Error(`Account info ${t.toBase58()} missing`);return n})),Sb=e=>e.map((e=>{const t=Bt(e.data);if(!t)throw new Error("Invalid token account");return t})).map((e=>b().BigInt(e.amount))),Mb=async(e,t)=>{const n=e.map((e=>e.getAccountsForUpdate().map((e=>e.toBase58())))).flat(),i=new Map;(await bb(t,n)).forEach(((e,t)=>{e&&i.set(n[t],e)}));for(let t of e)t.update(i)},Db={version:"0.1.0",name:"jupiter",instructions:[{name:"route",accounts:[{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"userTransferAuthority",isMut:!1,isSigner:!0},{name:"destinationTokenAccount",isMut:!1,isSigner:!1}],args:[{name:"swapLeg",type:{defined:"SwapLeg"}},{name:"inAmount",type:"u64"},{name:"quotedOutAmount",type:"u64"},{name:"slippageBps",type:"u16"},{name:"platformFeeBps",type:"u8"}]},{name:"whirlpoolSwapExactOutput",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!0},{name:"whirlpool",isMut:!0,isSigner:!1},{name:"tokenOwnerAccountA",isMut:!0,isSigner:!1},{name:"tokenVaultA",isMut:!0,isSigner:!1},{name:"tokenOwnerAccountB",isMut:!0,isSigner:!1},{name:"tokenVaultB",isMut:!0,isSigner:!1},{name:"tickArray0",isMut:!0,isSigner:!1},{name:"tickArray1",isMut:!0,isSigner:!1},{name:"tickArray2",isMut:!0,isSigner:!1},{name:"oracle",isMut:!1,isSigner:!1}],args:[{name:"outAmount",type:"u64"},{name:"inAmountWithSlippage",type:{defined:"AmountWithSlippage"}},{name:"aToB",type:"bool"},{name:"platformFeeBps",type:"u8"}]},{name:"raydiumSwapExactOutput",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"ammId",isMut:!0,isSigner:!1},{name:"ammAuthority",isMut:!1,isSigner:!1},{name:"ammOpenOrders",isMut:!0,isSigner:!1},{name:"poolCoinTokenAccount",isMut:!0,isSigner:!1},{name:"poolPcTokenAccount",isMut:!0,isSigner:!1},{name:"serumProgramId",isMut:!1,isSigner:!1},{name:"serumMarket",isMut:!0,isSigner:!1},{name:"serumBids",isMut:!0,isSigner:!1},{name:"serumAsks",isMut:!0,isSigner:!1},{name:"serumEventQueue",isMut:!0,isSigner:!1},{name:"serumCoinVaultAccount",isMut:!0,isSigner:!1},{name:"serumPcVaultAccount",isMut:!0,isSigner:!1},{name:"serumVaultSigner",isMut:!1,isSigner:!1},{name:"userSourceTokenAccount",isMut:!0,isSigner:!1},{name:"userDestinationTokenAccount",isMut:!0,isSigner:!1},{name:"userSourceOwner",isMut:!1,isSigner:!0}],args:[{name:"outAmount",type:"u64"},{name:"inAmountWithSlippage",type:{defined:"AmountWithSlippage"}},{name:"platformFeeBps",type:"u8"}]},{name:"raydiumClmmSwapExactOutput",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"payer",isMut:!1,isSigner:!0},{name:"ammConfig",isMut:!1,isSigner:!1},{name:"poolState",isMut:!0,isSigner:!1},{name:"inputTokenAccount",isMut:!0,isSigner:!1},{name:"outputTokenAccount",isMut:!0,isSigner:!1},{name:"inputVault",isMut:!0,isSigner:!1},{name:"outputVault",isMut:!0,isSigner:!1},{name:"observationState",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"tickArray",isMut:!0,isSigner:!1}],args:[{name:"outAmount",type:"u64"},{name:"inAmountWithSlippage",type:{defined:"AmountWithSlippage"}},{name:"platformFeeBps",type:"u8"}]},{name:"createOpenOrders",accounts:[{name:"openOrders",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"dexProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"market",isMut:!1,isSigner:!1}],args:[]},{name:"mercurialSwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"swapState",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"poolAuthority",isMut:!1,isSigner:!1},{name:"userTransferAuthority",isMut:!1,isSigner:!0},{name:"sourceTokenAccount",isMut:!0,isSigner:!1},{name:"destinationTokenAccount",isMut:!0,isSigner:!1}],args:[]},{name:"cykuraSwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"signer",isMut:!1,isSigner:!0},{name:"factoryState",isMut:!1,isSigner:!1},{name:"poolState",isMut:!0,isSigner:!1},{name:"inputTokenAccount",isMut:!0,isSigner:!1},{name:"outputTokenAccount",isMut:!0,isSigner:!1},{name:"inputVault",isMut:!0,isSigner:!1},{name:"outputVault",isMut:!0,isSigner:!1},{name:"lastObservationState",isMut:!0,isSigner:!1},{name:"coreProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"serumSwap",accounts:[{name:"market",accounts:[{name:"market",isMut:!0,isSigner:!1},{name:"openOrders",isMut:!0,isSigner:!1},{name:"requestQueue",isMut:!0,isSigner:!1},{name:"eventQueue",isMut:!0,isSigner:!1},{name:"bids",isMut:!0,isSigner:!1},{name:"asks",isMut:!0,isSigner:!1},{name:"coinVault",isMut:!0,isSigner:!1},{name:"pcVault",isMut:!0,isSigner:!1},{name:"vaultSigner",isMut:!1,isSigner:!1}]},{name:"authority",isMut:!1,isSigner:!0},{name:"orderPayerTokenAccount",isMut:!0,isSigner:!1},{name:"coinWallet",isMut:!0,isSigner:!1},{name:"pcWallet",isMut:!0,isSigner:!1},{name:"dexProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]},{name:"saberSwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"swap",isMut:!1,isSigner:!1},{name:"swapAuthority",isMut:!1,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!1},{name:"inputUserAccount",isMut:!0,isSigner:!1},{name:"inputTokenAccount",isMut:!0,isSigner:!1},{name:"outputUserAccount",isMut:!0,isSigner:!1},{name:"outputTokenAccount",isMut:!0,isSigner:!1},{name:"feesTokenAccount",isMut:!0,isSigner:!1}],args:[]},{name:"saberAddDecimals",accounts:[{name:"addDecimalsProgram",isMut:!1,isSigner:!1},{name:"wrapper",isMut:!1,isSigner:!1},{name:"wrapperMint",isMut:!0,isSigner:!1},{name:"wrapperUnderlyingTokens",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"userUnderlyingTokens",isMut:!0,isSigner:!1},{name:"userWrappedTokens",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"tokenSwap",accounts:[{name:"tokenSwapProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"swap",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1},{name:"userTransferAuthority",isMut:!1,isSigner:!0},{name:"source",isMut:!0,isSigner:!1},{name:"swapSource",isMut:!0,isSigner:!1},{name:"swapDestination",isMut:!0,isSigner:!1},{name:"destination",isMut:!0,isSigner:!1},{name:"poolMint",isMut:!0,isSigner:!1},{name:"poolFee",isMut:!0,isSigner:!1}],args:[]},{name:"senchaSwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"swap",isMut:!0,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!1},{name:"inputUserAccount",isMut:!0,isSigner:!1},{name:"inputTokenAccount",isMut:!0,isSigner:!1},{name:"inputFeesAccount",isMut:!0,isSigner:!1},{name:"outputUserAccount",isMut:!0,isSigner:!1},{name:"outputTokenAccount",isMut:!0,isSigner:!1},{name:"outputFeesAccount",isMut:!0,isSigner:!1}],args:[]},{name:"stepSwap",accounts:[{name:"tokenSwapProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"swap",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1},{name:"userTransferAuthority",isMut:!1,isSigner:!0},{name:"source",isMut:!0,isSigner:!1},{name:"swapSource",isMut:!0,isSigner:!1},{name:"swapDestination",isMut:!0,isSigner:!1},{name:"destination",isMut:!0,isSigner:!1},{name:"poolMint",isMut:!0,isSigner:!1},{name:"poolFee",isMut:!0,isSigner:!1}],args:[]},{name:"cropperSwap",accounts:[{name:"tokenSwapProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"swap",isMut:!1,isSigner:!1},{name:"swapState",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1},{name:"userTransferAuthority",isMut:!1,isSigner:!0},{name:"source",isMut:!0,isSigner:!1},{name:"swapSource",isMut:!0,isSigner:!1},{name:"swapDestination",isMut:!0,isSigner:!1},{name:"destination",isMut:!0,isSigner:!1},{name:"poolMint",isMut:!0,isSigner:!1},{name:"poolFee",isMut:!0,isSigner:!1}],args:[]},{name:"raydiumSwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"ammId",isMut:!0,isSigner:!1},{name:"ammAuthority",isMut:!1,isSigner:!1},{name:"ammOpenOrders",isMut:!0,isSigner:!1},{name:"poolCoinTokenAccount",isMut:!0,isSigner:!1},{name:"poolPcTokenAccount",isMut:!0,isSigner:!1},{name:"serumProgramId",isMut:!1,isSigner:!1},{name:"serumMarket",isMut:!0,isSigner:!1},{name:"serumBids",isMut:!0,isSigner:!1},{name:"serumAsks",isMut:!0,isSigner:!1},{name:"serumEventQueue",isMut:!0,isSigner:!1},{name:"serumCoinVaultAccount",isMut:!0,isSigner:!1},{name:"serumPcVaultAccount",isMut:!0,isSigner:!1},{name:"serumVaultSigner",isMut:!1,isSigner:!1},{name:"userSourceTokenAccount",isMut:!0,isSigner:!1},{name:"userDestinationTokenAccount",isMut:!0,isSigner:!1},{name:"userSourceOwner",isMut:!1,isSigner:!0}],args:[]},{name:"cremaSwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"clmmConfig",isMut:!1,isSigner:!1},{name:"clmmpool",isMut:!0,isSigner:!1},{name:"tokenA",isMut:!1,isSigner:!1},{name:"tokenB",isMut:!1,isSigner:!1},{name:"accountA",isMut:!0,isSigner:!1},{name:"accountB",isMut:!0,isSigner:!1},{name:"tokenAVault",isMut:!0,isSigner:!1},{name:"tokenBVault",isMut:!0,isSigner:!1},{name:"tickArrayMap",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"partner",isMut:!1,isSigner:!1},{name:"partnerAtaA",isMut:!0,isSigner:!1},{name:"partnerAtaB",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"lifinitySwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1},{name:"amm",isMut:!1,isSigner:!1},{name:"userTransferAuthority",isMut:!1,isSigner:!0},{name:"sourceInfo",isMut:!0,isSigner:!1},{name:"destinationInfo",isMut:!0,isSigner:!1},{name:"swapSource",isMut:!0,isSigner:!1},{name:"swapDestination",isMut:!0,isSigner:!1},{name:"poolMint",isMut:!0,isSigner:!1},{name:"feeAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"pythAccount",isMut:!1,isSigner:!1},{name:"pythPcAccount",isMut:!1,isSigner:!1},{name:"configAccount",isMut:!0,isSigner:!1}],args:[]},{name:"marinadeDeposit",accounts:[{name:"marinadeFinanceProgram",isMut:!1,isSigner:!1},{name:"state",isMut:!0,isSigner:!1},{name:"msolMint",isMut:!0,isSigner:!1},{name:"liqPoolSolLegPda",isMut:!0,isSigner:!1},{name:"liqPoolMsolLeg",isMut:!0,isSigner:!1},{name:"liqPoolMsolLegAuthority",isMut:!1,isSigner:!1},{name:"reservePda",isMut:!0,isSigner:!1},{name:"transferFrom",isMut:!0,isSigner:!1},{name:"mintTo",isMut:!0,isSigner:!1},{name:"msolMintAuthority",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"userWsolTokenAccount",isMut:!0,isSigner:!1},{name:"tempWsolTokenAccount",isMut:!0,isSigner:!1},{name:"userTransferAuthority",isMut:!0,isSigner:!0},{name:"wsolMint",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]},{name:"marinadeUnstake",accounts:[{name:"marinadeFinanceProgram",isMut:!1,isSigner:!1},{name:"state",isMut:!0,isSigner:!1},{name:"msolMint",isMut:!0,isSigner:!1},{name:"liqPoolSolLegPda",isMut:!0,isSigner:!1},{name:"liqPoolMsolLeg",isMut:!0,isSigner:!1},{name:"treasuryMsolAccount",isMut:!0,isSigner:!1},{name:"getMsolFrom",isMut:!0,isSigner:!1},{name:"getMsolFromAuthority",isMut:!1,isSigner:!0},{name:"transferSolTo",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"userWsolTokenAccount",isMut:!0,isSigner:!1}],args:[]},{name:"aldrinSwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"pool",isMut:!1,isSigner:!1},{name:"poolSigner",isMut:!1,isSigner:!1},{name:"poolMint",isMut:!0,isSigner:!1},{name:"baseTokenVault",isMut:!0,isSigner:!1},{name:"quoteTokenVault",isMut:!0,isSigner:!1},{name:"feePoolTokenAccount",isMut:!0,isSigner:!1},{name:"walletAuthority",isMut:!1,isSigner:!0},{name:"userBaseTokenAccount",isMut:!0,isSigner:!1},{name:"userQuoteTokenAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"aldrinV2Swap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"pool",isMut:!1,isSigner:!1},{name:"poolSigner",isMut:!1,isSigner:!1},{name:"poolMint",isMut:!0,isSigner:!1},{name:"baseTokenVault",isMut:!0,isSigner:!1},{name:"quoteTokenVault",isMut:!0,isSigner:!1},{name:"feePoolTokenAccount",isMut:!0,isSigner:!1},{name:"walletAuthority",isMut:!1,isSigner:!0},{name:"userBaseTokenAccount",isMut:!0,isSigner:!1},{name:"userQuoteTokenAccount",isMut:!0,isSigner:!1},{name:"curve",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"whirlpoolSwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"tokenAuthority",isMut:!1,isSigner:!0},{name:"whirlpool",isMut:!0,isSigner:!1},{name:"tokenOwnerAccountA",isMut:!0,isSigner:!1},{name:"tokenVaultA",isMut:!0,isSigner:!1},{name:"tokenOwnerAccountB",isMut:!0,isSigner:!1},{name:"tokenVaultB",isMut:!0,isSigner:!1},{name:"tickArray0",isMut:!0,isSigner:!1},{name:"tickArray1",isMut:!0,isSigner:!1},{name:"tickArray2",isMut:!0,isSigner:!1},{name:"oracle",isMut:!1,isSigner:!1}],args:[]},{name:"invariantSwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"tickmap",isMut:!0,isSigner:!1},{name:"accountX",isMut:!0,isSigner:!1},{name:"accountY",isMut:!0,isSigner:!1},{name:"reserveX",isMut:!0,isSigner:!1},{name:"reserveY",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"meteoraSwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"userSourceToken",isMut:!0,isSigner:!1},{name:"userDestinationToken",isMut:!0,isSigner:!1},{name:"aVault",isMut:!0,isSigner:!1},{name:"bVault",isMut:!0,isSigner:!1},{name:"aTokenVault",isMut:!0,isSigner:!1},{name:"bTokenVault",isMut:!0,isSigner:!1},{name:"aVaultLpMint",isMut:!0,isSigner:!1},{name:"bVaultLpMint",isMut:!0,isSigner:!1},{name:"aVaultLp",isMut:!0,isSigner:!1},{name:"bVaultLp",isMut:!0,isSigner:!1},{name:"adminTokenFee",isMut:!0,isSigner:!1},{name:"user",isMut:!1,isSigner:!0},{name:"vaultProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"goosefxSwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"controller",isMut:!1,isSigner:!1},{name:"pair",isMut:!0,isSigner:!1},{name:"sslIn",isMut:!0,isSigner:!1},{name:"sslOut",isMut:!0,isSigner:!1},{name:"liabilityVaultIn",isMut:!0,isSigner:!1},{name:"swappedLiabilityVaultIn",isMut:!0,isSigner:!1},{name:"liabilityVaultOut",isMut:!0,isSigner:!1},{name:"swappedLiabilityVaultOut",isMut:!0,isSigner:!1},{name:"userInAta",isMut:!0,isSigner:!1},{name:"userOutAta",isMut:!0,isSigner:!1},{name:"feeCollectorAta",isMut:!0,isSigner:!1},{name:"userWallet",isMut:!1,isSigner:!0},{name:"feeCollector",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"deltafiSwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"marketConfig",isMut:!1,isSigner:!1},{name:"swapInfo",isMut:!0,isSigner:!1},{name:"userSourceToken",isMut:!0,isSigner:!1},{name:"userDestinationToken",isMut:!0,isSigner:!1},{name:"swapSourceToken",isMut:!0,isSigner:!1},{name:"swapDestinationToken",isMut:!0,isSigner:!1},{name:"deltafiUser",isMut:!0,isSigner:!1},{name:"adminDestinationToken",isMut:!0,isSigner:!1},{name:"pythPriceBase",isMut:!1,isSigner:!1},{name:"pythPriceQuote",isMut:!1,isSigner:!1},{name:"userAuthority",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"balansolSwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"authority",isMut:!0,isSigner:!0},{name:"pool",isMut:!0,isSigner:!1},{name:"taxMan",isMut:!0,isSigner:!1},{name:"bidMint",isMut:!1,isSigner:!1},{name:"treasurer",isMut:!1,isSigner:!1},{name:"srcTreasury",isMut:!0,isSigner:!1},{name:"srcAssociatedTokenAccount",isMut:!0,isSigner:!1},{name:"askMint",isMut:!1,isSigner:!1},{name:"dstTreasury",isMut:!0,isSigner:!1},{name:"dstAssociatedTokenAccount",isMut:!0,isSigner:!1},{name:"dstTokenAccountTaxman",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]},{name:"marcoPoloSwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"poolXAccount",isMut:!0,isSigner:!1},{name:"poolYAccount",isMut:!0,isSigner:!1},{name:"swapperXAccount",isMut:!0,isSigner:!1},{name:"swapperYAccount",isMut:!0,isSigner:!1},{name:"swapper",isMut:!0,isSigner:!0},{name:"referrerXAccount",isMut:!0,isSigner:!1},{name:"referrerYAccount",isMut:!0,isSigner:!1},{name:"referrer",isMut:!0,isSigner:!1},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]},{name:"dradexSwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"pair",isMut:!0,isSigner:!1},{name:"market",isMut:!0,isSigner:!1},{name:"eventQueue",isMut:!0,isSigner:!1},{name:"dexUser",isMut:!1,isSigner:!1},{name:"marketUser",isMut:!0,isSigner:!1},{name:"bids",isMut:!0,isSigner:!1},{name:"asks",isMut:!0,isSigner:!1},{name:"t0Vault",isMut:!0,isSigner:!1},{name:"t1Vault",isMut:!0,isSigner:!1},{name:"t0User",isMut:!0,isSigner:!1},{name:"t1User",isMut:!0,isSigner:!1},{name:"master",isMut:!1,isSigner:!1},{name:"signer",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"logger",isMut:!1,isSigner:!1}],args:[]},{name:"lifinityV2Swap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1},{name:"amm",isMut:!0,isSigner:!1},{name:"userTransferAuthority",isMut:!1,isSigner:!0},{name:"sourceInfo",isMut:!0,isSigner:!1},{name:"destinationInfo",isMut:!0,isSigner:!1},{name:"swapSource",isMut:!0,isSigner:!1},{name:"swapDestination",isMut:!0,isSigner:!1},{name:"poolMint",isMut:!0,isSigner:!1},{name:"feeAccount",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"oracleMainAccount",isMut:!1,isSigner:!1},{name:"oracleSubAccount",isMut:!1,isSigner:!1},{name:"oraclePcAccount",isMut:!1,isSigner:!1}],args:[]},{name:"raydiumClmmSwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"payer",isMut:!1,isSigner:!0},{name:"ammConfig",isMut:!1,isSigner:!1},{name:"poolState",isMut:!0,isSigner:!1},{name:"inputTokenAccount",isMut:!0,isSigner:!1},{name:"outputTokenAccount",isMut:!0,isSigner:!1},{name:"inputVault",isMut:!0,isSigner:!1},{name:"outputVault",isMut:!0,isSigner:!1},{name:"observationState",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"tickArray",isMut:!0,isSigner:!1}],args:[]},{name:"phoenixSwap",accounts:[{name:"swapProgram",isMut:!1,isSigner:!1},{name:"logAuthority",isMut:!1,isSigner:!1},{name:"market",isMut:!0,isSigner:!1},{name:"trader",isMut:!1,isSigner:!0},{name:"baseAccount",isMut:!0,isSigner:!1},{name:"quoteAccount",isMut:!0,isSigner:!1},{name:"baseVault",isMut:!0,isSigner:!1},{name:"quoteVault",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]}],types:[{name:"AmountWithSlippage",type:{kind:"struct",fields:[{name:"amount",type:"u64"},{name:"slippageBps",type:"u16"}]}},{name:"SplitLegDeeper",type:{kind:"struct",fields:[{name:"percent",type:"u8"},{name:"swapLeg",type:{defined:"SwapLegSwap"}}]}},{name:"SplitLeg",type:{kind:"struct",fields:[{name:"percent",type:"u8"},{name:"swapLeg",type:{defined:"SwapLegDeeper"}}]}},{name:"SwapInstrution",type:{kind:"enum",variants:[{name:"Swap",fields:[{defined:"Swap"}]}]}},{name:"Side",type:{kind:"enum",variants:[{name:"Bid"},{name:"Ask"}]}},{name:"SwapLegSwap",type:{kind:"enum",variants:[{name:"PlaceholderOne"},{name:"PlaceholderTwo"},{name:"Swap",fields:[{name:"swap",type:{defined:"Swap"}}]}]}},{name:"SwapLegDeeper",type:{kind:"enum",variants:[{name:"Chain",fields:[{name:"swap_legs",type:{vec:{defined:"SwapLegSwap"}}}]},{name:"Split",fields:[{name:"split_legs",type:{vec:{defined:"SplitLegDeeper"}}}]},{name:"Swap",fields:[{name:"swap",type:{defined:"Swap"}}]}]}},{name:"SwapLeg",type:{kind:"enum",variants:[{name:"Chain",fields:[{name:"swap_legs",type:{vec:{defined:"SwapLegDeeper"}}}]},{name:"Split",fields:[{name:"split_legs",type:{vec:{defined:"SplitLeg"}}}]},{name:"Swap",fields:[{name:"swap",type:{defined:"Swap"}}]}]}},{name:"Swap",type:{kind:"enum",variants:[{name:"Saber"},{name:"SaberAddDecimalsDeposit"},{name:"SaberAddDecimalsWithdraw"},{name:"TokenSwap"},{name:"Sencha"},{name:"Step"},{name:"Cropper"},{name:"Raydium"},{name:"Crema",fields:[{name:"a_to_b",type:"bool"}]},{name:"Lifinity"},{name:"Mercurial"},{name:"Cykura"},{name:"Serum",fields:[{name:"side",type:{defined:"Side"}}]},{name:"MarinadeDeposit"},{name:"MarinadeUnstake"},{name:"Aldrin",fields:[{name:"side",type:{defined:"Side"}}]},{name:"AldrinV2",fields:[{name:"side",type:{defined:"Side"}}]},{name:"Whirlpool",fields:[{name:"a_to_b",type:"bool"}]},{name:"Invariant",fields:[{name:"x_to_y",type:"bool"}]},{name:"Meteora"},{name:"GooseFX"},{name:"DeltaFi",fields:[{name:"stable",type:"bool"}]},{name:"Balansol"},{name:"MarcoPolo",fields:[{name:"x_to_y",type:"bool"}]},{name:"Dradex",fields:[{name:"side",type:{defined:"Side"}}]},{name:"LifinityV2"},{name:"RaydiumClmm"},{name:"Openbook",fields:[{name:"side",type:{defined:"Side"}}]},{name:"Phoenix",fields:[{name:"side",type:{defined:"Side"}}]}]}},{name:"SwapAction",type:{kind:"enum",variants:[{name:"SetupSplit",fields:[{name:"percents",type:"bytes"}]},{name:"NextSplitLeg"},{name:"MergeSplit"},{name:"Swap",fields:[{name:"swap",type:{defined:"Swap"}}]}]}}],events:[{name:"Swap",fields:[{name:"amm",type:"publicKey",index:!1},{name:"inputMint",type:"publicKey",index:!1},{name:"inputAmount",type:"u64",index:!1},{name:"outputMint",type:"publicKey",index:!1},{name:"outputAmount",type:"u64",index:!1}]},{name:"Fee",fields:[{name:"account",type:"publicKey",index:!1},{name:"mint",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1}]}],errors:[{code:6e3,name:"EmptyRoute",msg:"Empty route"},{code:6001,name:"SlippageToleranceExceeded",msg:"Slippage tolerance exceeded"},{code:6002,name:"InvalidCalculation",msg:"Invalid calculation"},{code:6003,name:"MissingPlatformFeeAccount",msg:"Missing platform fee account"},{code:6004,name:"InvalidSlippage",msg:"Invalid slippage"},{code:6005,name:"NotEnoughPercent",msg:"Not enough percent to 100"},{code:6006,name:"InAmountsStackIsEmpty",msg:"In amounts stack is empty"},{code:6007,name:"OutAmountsStackIsEmpty",msg:"Out amounts stack is empty"},{code:6008,name:"NotEnoughAccountKeys",msg:"Not Enough Account keys"}]},Nb=new A.PublicKey("So11111111111111111111111111111111111111112"),Tb=new A.PublicKey("9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"),Pb=new A.PublicKey("DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY"),Ob={devnet:"https://jupiter-devnet.zhen8558.workers.dev/markets?v=3","mainnet-beta":"https://cache.jup.ag/markets?v=3",testnet:"https://api.jup.ag/api/markets/cache/devnet"},Fb={devnet:"https://api.jup.ag/api/tokens/devnet",testnet:"https://api.jup.ag/api/markets/devnet","mainnet-beta":"https://cache.jup.ag/tokens"},Rb=5e3,Gb=new A.PublicKey("675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8"),xb=new A.PublicKey("AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6"),Ub=new A.PublicKey("CURVGoZn8zycx6FXwwevgBTB2gVvdbGTEpvMJDbgs2t4"),_b=new A.PublicKey("DecZY86MU5Gj7kppfUCEmd4LbXXuyZH1yHaP2NTqdiZB"),Lb=new A.PublicKey("CTMAxxk34HjKWxQ3QLZK1HpaLXmBveao3ESePXbiyfzh"),Kb=new A.PublicKey("SCHAtsf8mbjyjiv4LkhLKutTf6JnZAbdJKFkXQNMFHZ"),Yb=new A.PublicKey("EewxydAPCCVuNEyrVN68PuSYdQ7wKn27V9Gjeoi8dy3S"),jb=new A.PublicKey("CLMM9tUoggJu2wagPkkqs9eFG4BWhVBZWkP1qv3Sp7tR"),Wb=new A.PublicKey("FxYoB1VAx8TfLCwvmworJy16VH89v992qznUvBX5aR8K"),Jb=new A.PublicKey("BUX7s2ef2htTGb2KKoPHWkmzxPj4nTWMWRgs5CSbQxf9"),qb=new A.PublicKey("MERLuDFBMmsHnsBPZw2sDQZHvXFMwp8EdjudcU2HKky"),Zb=new A.PublicKey("whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc"),zb=new A.PublicKey("HyaB3W9q6XdA5xwpU4XnSZV94htfmbmqJXZcEbRaJutt"),Hb=new A.PublicKey("8NsPwRFYqob3FzYvHYTjFK6WVFJADFN8Hn7yNQKcVNW1"),Vb=new A.PublicKey("J4uBbeoWpZE8fH58PM1Fp9n9K6f1aThyeVCyRdJbaXqt"),Xb=new A.PublicKey("cysPXAjehMpVKUapzbMCCnpFxUFFryEWEaLgnb9NrR8"),$b=new A.PublicKey("DBsMwKfeoUHhxMi9x6wd2AsT12UwUCssjNbUzu1aKgqj"),ek=new A.PublicKey("MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD"),tk=new A.PublicKey("Dooar9JkhdZ7J3LHN3A7YCuoGRUggXhQaG4kijfLGU2j"),nk=new A.PublicKey("DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1"),ik=new A.PublicKey("9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP"),rk=new A.PublicKey("SSwpMgqNDsyV7mAgN9ady4bDVu5ySjmmXejXvy2vLt1"),ok=new A.PublicKey("PSwapMdSai8tjrEXcxFeQth87xC4rRsa4VA5mhGhXkP"),Ak=new A.PublicKey("SSwapUtytfBdBn1b9NUGG6foMVPtcWgpRU32HToDUZr"),sk=new A.PublicKey("Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB"),ak=new A.PublicKey("24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi"),ck=new A.PublicKey("GNExJhNUhc9LN2DauuQAUJnXoy6DJ6zey3t9kT9A2PF3"),uk=(new A.PublicKey("ziSPuDShwunW4xNrCfTnSHTPVT6FZDREtdofpf1BJwe"),new A.PublicKey("7WduLbRfYhTJktjLw5FDEyrqoEv61aTTCuGAetgLjzN5")),lk=new A.PublicKey("8CxKnuJeoeQXFwiG6XiGY2akBjvJA5k3bE52BfnuEmNQ"),gk=new A.PublicKey("D3BBjqUdCYuP18fNvvMbPAZ8DpcRi4io2EsYHQawJDag"),dk=new A.PublicKey("dp2waEWSBy5yKmq65ergoU3G6qRLmqa6K7We4rZSKph"),hk=new A.PublicKey("1gE3LGQze8DQ3KD2C4ZUCmRX5g4njhY5yLfYmnmcvJR"),pk=new A.PublicKey("76ygWLcvJLR6nSzRUpiQqqtX4Pabkq4vpaTxwr3mDcXA"),fk=new A.PublicKey("2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c"),mk=new A.PublicKey("571oqNkJauZ2tccLwf8CUB56hpLPZkop9X1Px4DE9rnQ"),Ik=new A.PublicKey("CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK"),yk=new A.PublicKey("srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX"),Bk=new A.PublicKey("9tKE7Mbmj4mxDjWatikzGAtkoWosiiZX9y6J4Hfm2R8H"),Ck=new A.PublicKey("BE5YRQ6N6LCw7UL3JwzVp317EWa4mzJY6JKDaudcXu7A"),wk=new A.PublicKey("JM78XNzeQRmZXDAP4DSq88ZdErbuSXSLE6fkRsVDKSu"),Ek=new A.PublicKey("PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY"),Qk=["StepAscQoEioFxxWGnh2sLBDFp9d8rvKz2Yp39iDpyT","DubwWZNWiNGMMeeQHPnMATNj77YZPZSAz2WVR5WjLJqz"],bk=Object.freeze({AlreadyInUse:{code:1,name:"AlreadyInUsed",msg:"Account already In Used"},InsufficientSOL:{code:1,name:"InsufficientSOL",msg:"Insufficient SOL"},TransactionNotConfirmed:{code:7e3,name:"TransactionNotConfirmed",msg:"Transaction was not confirmed"},BalancesNotExtractedProperly:{code:7001,name:"BalancesNotExtractedProperly",msg:"Balances cannot be extracted properly"},...Db.errors.reduce(((e,t)=>({...e,[t.name]:t})),{})}),kk=new bn(null,null,{skipPreflight:!1});class vk extends u.Layout{constructor(e){const t=(0,u.blob)(32);super(t.span,e),this.layout=void 0,this.layout=t}getSpan(e,t){return this.layout.getSpan(e,t)}decode(e,t){return new A.PublicKey(this.layout.decode(e,t))}encode(e,t,n){return this.layout.encode(e.toBuffer(),t,n)}}const Sk=e=>new vk(e);class Mk extends u.Layout{constructor(e=8,t){const n=(0,u.blob)(e);super(n.span,t),this.layout=void 0,this.layout=n}getSpan(e,t){return this.layout.getSpan(e,t)}decode(e,t){return new B.u64(this.layout.decode(e,t),10,"le")}encode(e,t,n){return this.layout.encode(e.toArrayLike(Ib,"le",this.layout.span),t,n)}}const Dk=e=>new Mk(8,e),Nk=e=>new Mk(16,e);function Tk(e,t){let n=Ib.alloc(0);e.forEach((function(e){if(e.length>A.MAX_SEED_LENGTH)throw new TypeError("Max seed length exceeded");var t;n=Ib.concat([n,(t=e,Ib.isBuffer(t)?t:t instanceof Uint8Array?Ib.from(t.buffer,t.byteOffset,t.byteLength):Ib.from(t))])})),n=Ib.concat([n,t.toBuffer(),Ib.from("ProgramDerivedAddress")]);let i=Jr(new Uint8Array(n)),r=new(y())(i,16).toArray(void 0,32);return new A.PublicKey(r)}const Pk=(0,u.struct)([(0,u.u8)("version"),(0,u.u8)("isInitialized"),(0,u.u8)("nonce"),Sk("ammId"),Sk("serumProgramId"),Sk("serumMarket"),Sk("tokenProgramId"),Sk("tokenAAccount"),Sk("tokenBAccount"),Sk("poolMint"),Sk("mintA"),Sk("mintB")]),Ok=(0,u.struct)([(0,u.u8)("isInitialized"),Sk("stateOwner"),Sk("feeOwner"),Dk("initialSupply"),Dk("returnFeeNumerator"),Dk("fixedFeeNumerator"),Dk("feeDenominator"),(0,u.u8)("curveType"),(0,u.blob)(32,"curveParameters")]),Fk=new A.PublicKey("3hsU1VgsBgBgz5jWiqdw9RfGU6TpWdCmdah1oi4kF3Tq"),Rk=(e,t)=>{const n=t.owner,i=Pk.decode(t.data);return{programId:n,authority:Tk([e.toBuffer(),Ib.from([i.nonce])],n),version:i.version,isInitialized:Boolean(i.isInitialized),nonce:i.nonce,ammId:i.ammId,serumProgramId:i.serumProgramId,tokenProgramId:i.tokenProgramId,tokenAAccount:i.tokenAAccount,tokenBAccount:i.tokenBAccount,serumMarket:i.serumMarket,poolMint:i.poolMint,mintA:i.mintA,mintB:i.mintB}},Gk={Bid:{bid:{}},Ask:{ask:{}}},xk=e=>({serum:{side:e}}),Uk=e=>({crema:{aToB:e}}),_k=e=>({aldrin:{side:e}}),Lk=e=>({aldrinV2:{side:e}}),Kk=e=>({whirlpool:{aToB:e}}),Yk=e=>({invariant:{xToY:e}}),jk=e=>({dradex:{side:e}}),Wk=e=>({marcoPolo:{xToY:e}}),Jk=e=>({openbook:{side:e}}),qk=e=>({phoenix:{side:e}}),Zk=e=>({chain:{swapLegs:e}}),zk=e=>({split:{splitLegs:e}}),Hk=e=>({swap:{swap:e}}),Vk=(e,t)=>({percent:e,swapLeg:t});async function Xk({connection:e,amount:t,owner:{publicKey:n}}){const i={setupInstructions:[],instructions:[],cleanupInstructions:[],signers:[]},r=ev({walletAddress:n,tokenMintAddress:Nb});return null===await e.getAccountInfo(r)&&i.setupInstructions.push($k(n,r,n,Nb)),i.setupInstructions.push(A.SystemProgram.transfer({fromPubkey:n,toPubkey:r,lamports:b().toNumber(t)})),i.setupInstructions.push(B.Token.createSyncNativeInstruction(B.TOKEN_PROGRAM_ID,r)),i.cleanupInstructions=[B.Token.createCloseAccountInstruction(B.TOKEN_PROGRAM_ID,r,n,n,[])],{address:r,...i}}function $k(e,t,n,i,r=B.TOKEN_PROGRAM_ID,o=B.ASSOCIATED_TOKEN_PROGRAM_ID){return new A.TransactionInstruction({keys:[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:A.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1}],programId:o,data:Ib.alloc(0)})}const ev=({walletAddress:e,tokenMintAddress:t})=>A.PublicKey.findProgramAddressSync([e.toBuffer(),B.TOKEN_PROGRAM_ID.toBuffer(),t.toBuffer()],B.ASSOCIATED_TOKEN_PROGRAM_ID)[0],tv=new A.PublicKey("JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB"),nv=new Mr(Db,tv,{}),iv={pubkey:tv,isSigner:!1,isWritable:!1};function rv(e,t,n,i,r,o,A,s){return nv.instruction.route(n,r,o,A,s,{accounts:{tokenProgram:B.TOKEN_PROGRAM_ID,userTransferAuthority:e,destinationTokenAccount:t},remainingAccounts:i})}function ov(e,t,n,i){return{swapProgram:qb,swapState:e.ammId,tokenProgram:B.TOKEN_PROGRAM_ID,poolAuthority:e.authority,userTransferAuthority:i,sourceTokenAccount:t,destinationTokenAccount:n}}const[Av]=(0,Nr.findProgramAddressSync)([new Uint8Array(Ib.from("amm authority".replace(" "," "),"utf-8"))],Gb);function sv(e,t,n,i){if(!e.serumMarketKeys)throw new Error("RaydiumAmm is missing serumMarketKeys");return{swapProgram:Gb,tokenProgram:B.TOKEN_PROGRAM_ID,ammId:e.ammId,ammAuthority:Av,ammOpenOrders:e.ammOpenOrders,poolCoinTokenAccount:e.poolCoinTokenAccount,poolPcTokenAccount:e.poolPcTokenAccount,serumProgramId:e.serumProgramId,serumMarket:e.serumMarket,serumBids:e.serumMarketKeys.serumBids,serumAsks:e.serumMarketKeys.serumAsks,serumEventQueue:e.serumMarketKeys.serumEventQueue,serumCoinVaultAccount:e.serumMarketKeys.serumCoinVaultAccount,serumPcVaultAccount:e.serumMarketKeys.serumPcVaultAccount,serumVaultSigner:e.serumMarketKeys.serumVaultSigner,userSourceTokenAccount:t,userDestinationTokenAccount:n,userSourceOwner:i}}function av(e,t,n,i,r,o){const s=(0,Nr.createProgramAddressSync)([e.address.toBuffer(),e.decoded.vaultSignerNonce.toArrayLike(Ib,"le",8)],e.programId);return{market:{market:e.address,openOrders:t,requestQueue:e.decoded.requestQueue,eventQueue:e.decoded.eventQueue,bids:e.bidsAddress,asks:e.asksAddress,coinVault:e.decoded.baseVault,pcVault:e.decoded.quoteVault,vaultSigner:s},authority:o,orderPayerTokenAccount:n,coinWallet:i,pcWallet:r,dexProgram:e.programId,tokenProgram:B.TOKEN_PROGRAM_ID,rent:A.SYSVAR_RENT_PUBKEY}}function cv(e,t,n,i,r){const o=t.equals(e.state.tokenA.mint)?e.state.tokenB.adminFeeAccount:e.state.tokenA.adminFeeAccount,[A,s]=t.equals(e.state.tokenA.mint)?[e.state.tokenA.reserve,e.state.tokenB.reserve]:[e.state.tokenB.reserve,e.state.tokenA.reserve];return{swapProgram:e.config.swapProgramID,tokenProgram:B.TOKEN_PROGRAM_ID,swap:e.config.swapAccount,swapAuthority:e.config.authority,userAuthority:r,inputUserAccount:n,inputTokenAccount:A,outputUserAccount:i,outputTokenAccount:s,feesTokenAccount:o}}function uv(e,t){const n=[];return n.push(e?{pubkey:e,isSigner:!1,isWritable:!0}:t?{pubkey:t,isSigner:!1,isWritable:!0}:iv),n}const lv=new B.u64(0);class gv{constructor(e,t){this.numerator=void 0,this.denominator=void 0,this.toString=()=>`${this.numerator.toString()}/${this.denominator.toString()}`,this.numerator=e,this.denominator=t}static fromDecimal(e){return gv.fromFraction(e.toDecimalPlaces(1).mul(10).toNumber(),1e3)}static fromFraction(e,t){const n="number"==typeof e?new B.u64(e.toString()):e,i="number"==typeof t?new B.u64(t.toString()):t;return new gv(n,i)}toDecimal(){return this.denominator.eq(lv)?new zr.Z(0):new zr.Z(this.numerator.toString()).div(new zr.Z(this.denominator.toString()))}add(e){const t=this.denominator.gcd(e.denominator),n=this.denominator.div(t).mul(e.denominator),i=n.div(this.denominator),r=n.div(e.denominator),o=this.numerator.mul(i),A=e.numerator.mul(r),s=o.add(A);return new gv(new B.u64(s.toString()),new B.u64(n.toString()))}}const dv=(0,u.struct)([Dk("tradeFeeNumerator"),Dk("tradeFeeDenominator"),Dk("ownerTradeFeeNumerator"),Dk("ownerTradeFeeDenominator"),Dk("ownerWithdrawFeeNumerator"),Dk("ownerWithdrawFeeDenominator")],"fees"),hv=[(0,u.blob)(8,"padding"),Sk("lpTokenFreezeVault"),Sk("poolMint"),Sk("baseTokenVault"),Sk("baseTokenMint"),Sk("quoteTokenVault"),Sk("quoteTokenMint"),Sk("poolSigner"),(0,u.u8)("poolSignerNonce"),Sk("authority"),Sk("initializerAccount"),Sk("feeBaseAccount"),Sk("feeQuoteAccount"),Sk("feePoolTokenAccount"),dv],pv=(0,u.struct)(hv),fv=(0,u.struct)([...hv,(0,u.u8)("curveType"),Sk("curve")]),mv=(0,u.struct)([(0,u.blob)(8,"padding"),Dk("amp")]);function Iv(e,t){const n=!!t.owner.equals(Ub),i=(n?fv:pv).decode(t.data),r="curveType"in i?{curveType:i.curveType,curve:i.curve}:{};return{isV2:n,address:e,poolMint:i.poolMint,baseTokenVault:i.baseTokenVault,baseTokenMint:i.baseTokenMint,quoteTokenVault:i.quoteTokenVault,quoteTokenMint:i.quoteTokenMint,poolSigner:i.poolSigner,feeBaseAccount:i.feeBaseAccount,feeQuoteAccount:i.feeQuoteAccount,feePoolTokenAccount:i.feePoolTokenAccount,fees:{traderFee:gv.fromFraction(i.fees.tradeFeeNumerator,i.fees.tradeFeeDenominator),ownerFee:gv.fromFraction(i.fees.ownerTradeFeeNumerator,i.fees.ownerTradeFeeDenominator)},...r}}class yv{constructor(e,t,n){if(this.params=void 0,this.id=void 0,this.label="Aldrin",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.poolState=void 0,this.tokenReserveAmounts=void 0,this.calculator=void 0,this.params=n,this.poolState=Iv(e,t),this.id=e.toBase58(),1===this.poolState.curveType){const{amp:e}=this.params;if(!e)throw new Error("Amp is required for a stable curve");this.calculator=new We.TokenSwapStable(b().BigInt(e),new We.Fraction(b().BigInt(this.poolState.fees.traderFee.numerator.toString()),b().BigInt(this.poolState.fees.traderFee.denominator.toString())),new We.Fraction(b().BigInt(this.poolState.fees.ownerFee.numerator.toString()),b().BigInt(this.poolState.fees.ownerFee.denominator.toString())))}else this.calculator=new We.TokenSwapConstantProduct(new We.Fraction(b().BigInt(this.poolState.fees.traderFee.numerator.toString()),b().BigInt(this.poolState.fees.traderFee.denominator.toString())),new We.Fraction(b().BigInt(this.poolState.fees.ownerFee.numerator.toString()),b().BigInt(this.poolState.fees.ownerFee.denominator.toString())))}static decodeStableCurveAmp(e){const{amp:t}=mv.decode(e.data);return 2*t.toNumber()}getAccountsForUpdate(){return[this.poolState.quoteTokenVault,this.poolState.baseTokenVault]}update(e){const t=vb(e,this.getAccountsForUpdate());this.tokenReserveAmounts=Sb(t)}getQuote({sourceMint:e,amount:t}){if(!this.tokenReserveAmounts)throw new Error("Missing tokenReserveAmounts");let n=new zr.Z(this.poolState.fees.traderFee.numerator.toString()).div(this.poolState.fees.traderFee.denominator.toString()).add(new zr.Z(this.poolState.fees.ownerFee.numerator.toString()).div(this.poolState.fees.ownerFee.denominator.toString()));const i=this.poolState.baseTokenMint.equals(e)?0:1;let r=this.calculator.exchange(this.tokenReserveAmounts,t,i);return{notEnoughLiquidity:!1,inAmount:t,outAmount:r.expectedOutputAmount,feeAmount:r.fees,feeMint:e.toBase58(),feePct:n.toNumber(),priceImpactPct:r.priceImpact.toNumber()}}getSwapLegAndAccounts(e){if(this.poolState.isV2){if(!this.poolState.curve)throw new Error("Unable to fetch curve account.");return function({poolState:e,sourceMint:t,userSourceTokenAccount:n,userDestinationTokenAccount:i,curve:r,userTransferAuthority:o}){const[A,s,a]=t.equals(e.baseTokenMint)?[Gk.Ask,n,i]:[Gk.Bid,i,n];return[Hk(Lk(A)),nv.instruction.aldrinV2Swap({accounts:{swapProgram:Ub,pool:e.address,poolSigner:e.poolSigner,poolMint:e.poolMint,baseTokenVault:e.baseTokenVault,quoteTokenVault:e.quoteTokenVault,feePoolTokenAccount:e.feePoolTokenAccount,walletAuthority:o,userBaseTokenAccount:s,userQuoteTokenAccount:a,curve:r,tokenProgram:B.TOKEN_PROGRAM_ID}}).keys]}({poolState:this.poolState,curve:this.poolState.curve,...e})}return function({poolState:e,sourceMint:t,userSourceTokenAccount:n,userDestinationTokenAccount:i,userTransferAuthority:r}){const[o,A,s]=t.equals(e.baseTokenMint)?[Gk.Ask,n,i]:[Gk.Bid,i,n];return[Hk(_k(o)),nv.instruction.aldrinSwap({accounts:{swapProgram:xb,pool:e.address,poolSigner:e.poolSigner,poolMint:e.poolMint,baseTokenVault:e.baseTokenVault,quoteTokenVault:e.quoteTokenVault,feePoolTokenAccount:e.feePoolTokenAccount,walletAuthority:r,userBaseTokenAccount:A,userQuoteTokenAccount:s,tokenProgram:B.TOKEN_PROGRAM_ID}}).keys]}({poolState:this.poolState,...e})}get reserveTokenMints(){return[this.poolState.quoteTokenMint,this.poolState.baseTokenMint]}}yv.accountInfoToAldrinPoolState=Iv;const Bv={version:"0.1.0",name:"balancer_amm",instructions:[{name:"swap",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"pool",isMut:!0,isSigner:!1},{name:"taxMan",isMut:!0,isSigner:!1},{name:"bidMint",isMut:!1,isSigner:!1},{name:"treasurer",isMut:!1,isSigner:!1},{name:"srcTreasury",isMut:!0,isSigner:!1},{name:"srcAssociatedTokenAccount",isMut:!0,isSigner:!1},{name:"askMint",isMut:!1,isSigner:!1},{name:"dstTreasury",isMut:!0,isSigner:!1},{name:"dstAssociatedTokenAccount",isMut:!0,isSigner:!1},{name:"dstTokenAccountTaxman",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"bidAmount",type:"u64"},{name:"limit",type:"u64"}],returns:"u64"}],accounts:[{name:"pool",type:{kind:"struct",fields:[{name:"authority",type:"publicKey"},{name:"fee",type:"u64"},{name:"taxFee",type:"u64"},{name:"state",type:{defined:"PoolState"}},{name:"mintLpt",type:"publicKey"},{name:"taxMan",type:"publicKey"},{name:"mints",type:{vec:"publicKey"}},{name:"actions",type:{vec:{defined:"MintActionState"}}},{name:"treasuries",type:{vec:"publicKey"}},{name:"reserves",type:{vec:"u64"}},{name:"weights",type:{vec:"u64"}}]}}],types:[{name:"PoolState",type:{kind:"enum",variants:[{name:"Uninitialized"},{name:"Initialized"},{name:"Frozen"},{name:"Deleted"}]}},{name:"MintActionState",type:{kind:"enum",variants:[{name:"Active"},{name:"BidOnly"},{name:"AskOnly"},{name:"Paused"}]}}],errors:[]},Cv=(e,t)=>{const n=e.map((e=>e.toNumber()/1e9));return t.toNumber()/1e9/n.reduce(((e,t)=>e+t),0)},wv=(e,t)=>{const{balanceIn:n,balanceOut:i,weightIn:r,weightOut:o,swapFee:A}=t,s=Number(n.toString()),a=Number(i.toString()),c=r,u=o,l=Number(A.toString())/1e9;return-s*u/(a*(-1+l)*(s/(e+s-e*l))**((c+u)/u)*c)},Ev=new ti(Bv);class Qv{constructor(e,t){this.address=void 0,this.label="Balansol",this.id=void 0,this.shouldPrefetch=!0,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.poolData=void 0,this.address=e,this.id=e.toBase58(),this.poolData=Ev.decode("pool",t.data)}getAccountsForUpdate(){return[new A.PublicKey(this.id)]}update(e){let[t]=vb(e,this.getAccountsForUpdate());const n=Ev.decode("pool",t.data);this.poolData=n}getQuote({sourceMint:e,destinationMint:t,amount:n}){var i,r;if(!this.poolData)throw new Error(`Invalid pool data ${this.address.toBase58()}`);if(!this.poolData.state.initialized)throw new Error(`Pool is not initialized ${this.address.toBase58()}`);const o=this.poolData.mints.map((e=>e.toBase58())),A=o.indexOf(e.toBase58()),s=o.indexOf(t.toBase58());if(null===(i=this.poolData.actions[A])||void 0===i||!i.active)throw new Error(`Invalid bid mint state ${this.address.toBase58()}`);if(null===(r=this.poolData.actions[s])||void 0===r||!r.active)throw new Error(`Invalid ask mint state ${this.address.toBase58()}`);const a=Cv(this.poolData.weights,this.poolData.weights[A]),c=Cv(this.poolData.weights,this.poolData.weights[s]),u=((e,t,n,i,r,o)=>{const A=Number(t.toString()),s=Number(n.toString());return A*(1-(s/(s+e))**(r/i))*(1-Number(o.toString())/1e9)})(Number(n.toString()),this.poolData.reserves[s],this.poolData.reserves[A],c,a,this.poolData.fee.add(this.poolData.taxFee)),l=((e,t)=>{const n=wv(0,t),i=wv(e,t);return it.equals(e.sourceMint))),i=this.poolData.mints.findIndex((t=>t.equals(e.destinationMint))),[r]=A.PublicKey.findProgramAddressSync([Ib.from("treasurer"),this.address.toBuffer()],gk),o=ev({tokenMintAddress:e.destinationMint,walletAddress:this.poolData.taxMan});return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i,sourceMint:r,destinationMint:o}){return[Hk({balansol:{}}),nv.instruction.balansolSwap({accounts:{swapProgram:gk,authority:i,pool:e.pool,taxMan:e.taxMan,bidMint:r,treasurer:e.treasurer,srcTreasury:e.srcTreasury,srcAssociatedTokenAccount:t,askMint:o,dstTreasury:e.dstTreasury,dstAssociatedTokenAccount:n,dstTokenAccountTaxman:e.dstTokenAccountTaxman,systemProgram:A.SystemProgram.programId,tokenProgram:B.TOKEN_PROGRAM_ID,associatedTokenProgram:B.ASSOCIATED_TOKEN_PROGRAM_ID,rent:A.SYSVAR_RENT_PUBKEY},remainingAccounts:e.referrer?[{pubkey:e.referrer,isSigner:!1,isWritable:!0}]:[iv]}).keys]}({...e,additionalArgs:{pool:this.address,taxMan:this.poolData.taxMan,dstTokenAccountTaxman:o,treasurer:r,srcTreasury:this.poolData.treasuries[n],dstTreasury:this.poolData.treasuries[i],referrer:null===(t=e.quoteMintToReferrer)||void 0===t?void 0:t.get(e.destinationMint.toBase58())}})}get reserveTokenMints(){return this.poolData.mints}}Qv.getIDL=()=>Bv;const bv=new Ai({version:"0.1.0",name:"clmmpool",instructions:[{name:"initializeClmmConfig",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"clmmConfig",isMut:!0,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"protocolAuthority",type:"publicKey"},{name:"protocolFeeClaimAuthority",type:"publicKey"},{name:"createPoolAuthority",type:"publicKey"},{name:"protocolFeeRate",type:"u16"}]},{name:"createFeeTier",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"clmmConfig",isMut:!1,isSigner:!1},{name:"feeTier",isMut:!0,isSigner:!1},{name:"protocolAuthority",isMut:!1,isSigner:!0},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"tickSpacing",type:"u16"},{name:"feeRate",type:"u16"}]},{name:"updateConfig",accounts:[{name:"clmmConfig",isMut:!0,isSigner:!1},{name:"protocolAuthority",isMut:!1,isSigner:!0}],args:[{name:"newProtocolFeeRate",type:{option:"u16"}},{name:"createPoolAuthority",type:{option:"publicKey"}},{name:"claimAuthority",type:{option:"publicKey"}}]},{name:"updateFeeRate",accounts:[{name:"protocolAuthority",isMut:!1,isSigner:!0},{name:"clmmConfig",isMut:!1,isSigner:!1},{name:"clmmpool",isMut:!0,isSigner:!1}],args:[{name:"newFeeRate",type:"u16"}]},{name:"transferProtocolAuthority",accounts:[{name:"protocolAuthority",isMut:!1,isSigner:!0},{name:"clmmConfig",isMut:!0,isSigner:!1},{name:"newAuthority",isMut:!1,isSigner:!1}],args:[]},{name:"acceptProtocolAuthority",accounts:[{name:"newAuthority",isMut:!1,isSigner:!0},{name:"clmmConfig",isMut:!0,isSigner:!1}],args:[]},{name:"createClmmpool",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"clmmConfig",isMut:!1,isSigner:!1},{name:"feeTier",isMut:!1,isSigner:!1},{name:"clmmpool",isMut:!0,isSigner:!1},{name:"tokenA",isMut:!1,isSigner:!1},{name:"tokenB",isMut:!1,isSigner:!1},{name:"tokenAVault",isMut:!0,isSigner:!1},{name:"tokenBVault",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"initSqrtPrice",type:"u128"}]},{name:"createTickArray",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"clmmpool",isMut:!1,isSigner:!1},{name:"tickArray",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"arrayIndex",type:"u16"}]},{name:"createTickArrayMap",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"clmmpool",isMut:!1,isSigner:!1},{name:"tickArrayMap",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]},{name:"openPosition",accounts:[{name:"owner",isMut:!0,isSigner:!0},{name:"clmmpool",isMut:!1,isSigner:!1},{name:"position",isMut:!0,isSigner:!1},{name:"positionNftMint",isMut:!0,isSigner:!0},{name:"positionMetadataAccount",isMut:!0,isSigner:!1},{name:"positionEdition",isMut:!0,isSigner:!1},{name:"positionAta",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"metadataProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"tickLowerIndex",type:"i32"},{name:"tickUpperIndex",type:"i32"}]},{name:"removePosition",accounts:[{name:"owner",isMut:!0,isSigner:!0},{name:"position",isMut:!0,isSigner:!1},{name:"positionNftMint",isMut:!0,isSigner:!1},{name:"positionAta",isMut:!0,isSigner:!1},{name:"positionMetadataAccount",isMut:!0,isSigner:!1},{name:"positionEdition",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"metadataProgram",isMut:!1,isSigner:!1}],args:[]},{name:"increaseLiquidity",accounts:[{name:"owner",isMut:!0,isSigner:!0},{name:"clmmpool",isMut:!0,isSigner:!1},{name:"position",isMut:!0,isSigner:!1},{name:"positionAta",isMut:!1,isSigner:!1},{name:"tokenAAta",isMut:!0,isSigner:!1},{name:"tokenBAta",isMut:!0,isSigner:!1},{name:"tokenAVault",isMut:!0,isSigner:!1},{name:"tokenBVault",isMut:!0,isSigner:!1},{name:"tickArrayLower",isMut:!0,isSigner:!1},{name:"tickArrayUpper",isMut:!0,isSigner:!1},{name:"tickArrayMap",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"deltaLiquidity",type:"u128"},{name:"tokenAMax",type:"u64"},{name:"tokenBMax",type:"u64"}]},{name:"increaseLiquidityWithFixedToken",accounts:[{name:"owner",isMut:!0,isSigner:!0},{name:"clmmpool",isMut:!0,isSigner:!1},{name:"position",isMut:!0,isSigner:!1},{name:"positionAta",isMut:!1,isSigner:!1},{name:"tokenAAta",isMut:!0,isSigner:!1},{name:"tokenBAta",isMut:!0,isSigner:!1},{name:"tokenAVault",isMut:!0,isSigner:!1},{name:"tokenBVault",isMut:!0,isSigner:!1},{name:"tickArrayLower",isMut:!0,isSigner:!1},{name:"tickArrayUpper",isMut:!0,isSigner:!1},{name:"tickArrayMap",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"tokenA",type:"u64"},{name:"tokenB",type:"u64"},{name:"isAFixed",type:"bool"}]},{name:"decreaseLiquidity",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"clmmpool",isMut:!0,isSigner:!1},{name:"position",isMut:!0,isSigner:!1},{name:"positionAta",isMut:!1,isSigner:!1},{name:"tokenAAta",isMut:!0,isSigner:!1},{name:"tokenBAta",isMut:!0,isSigner:!1},{name:"tokenAVault",isMut:!0,isSigner:!1},{name:"tokenBVault",isMut:!0,isSigner:!1},{name:"tickArrayLower",isMut:!0,isSigner:!1},{name:"tickArrayUpper",isMut:!0,isSigner:!1},{name:"tickArrayMap",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"deltaLiquidity",type:"u128"},{name:"tokenAMin",type:"u64"},{name:"tokenBMin",type:"u64"}]},{name:"swap",accounts:[{name:"clmmConfig",isMut:!1,isSigner:!1},{name:"clmmpool",isMut:!0,isSigner:!1},{name:"tokenA",isMut:!1,isSigner:!1},{name:"tokenB",isMut:!1,isSigner:!1},{name:"accountA",isMut:!0,isSigner:!1},{name:"accountB",isMut:!0,isSigner:!1},{name:"tokenAVault",isMut:!0,isSigner:!1},{name:"tokenBVault",isMut:!0,isSigner:!1},{name:"tickArrayMap",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"aToB",type:"bool"},{name:"byAmountIn",type:"bool"},{name:"amount",type:"u64"},{name:"amountLimit",type:"u64"},{name:"sqrtPriceLimit",type:"u128"}]},{name:"collectFee",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"clmmpool",isMut:!1,isSigner:!1},{name:"position",isMut:!0,isSigner:!1},{name:"positionAta",isMut:!1,isSigner:!1},{name:"tokenAAta",isMut:!0,isSigner:!1},{name:"tokenBAta",isMut:!0,isSigner:!1},{name:"tokenAVault",isMut:!0,isSigner:!1},{name:"tokenBVault",isMut:!0,isSigner:!1},{name:"tickArrayLower",isMut:!1,isSigner:!1},{name:"tickArrayUpper",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"collectProtocolFee",accounts:[{name:"protocolFeeClaimAuthority",isMut:!1,isSigner:!0},{name:"clmmConfig",isMut:!1,isSigner:!1},{name:"clmmpool",isMut:!0,isSigner:!1},{name:"tokenAAta",isMut:!0,isSigner:!1},{name:"tokenBAta",isMut:!0,isSigner:!1},{name:"tokenAVault",isMut:!0,isSigner:!1},{name:"tokenBVault",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"createPartner",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"clmmConfig",isMut:!1,isSigner:!1},{name:"protocolAuthority",isMut:!1,isSigner:!0},{name:"base",isMut:!1,isSigner:!0},{name:"partner",isMut:!0,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"partnerFeeClaimAuthority",type:"publicKey"},{name:"feeRate",type:"u16"},{name:"startTime",type:"u64"},{name:"endTime",type:"u64"},{name:"name",type:"string"}]},{name:"updatePartner",accounts:[{name:"clmmConfig",isMut:!1,isSigner:!1},{name:"partner",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"newFeeRate",type:{option:"u16"}},{name:"newClaimAuthority",type:{option:"publicKey"}},{name:"startTime",type:{option:"u64"}},{name:"endTime",type:{option:"u64"}}]},{name:"collectPartnerFee",accounts:[{name:"partnerFeeClaimAuthority",isMut:!1,isSigner:!0},{name:"partner",isMut:!1,isSigner:!1},{name:"clmmpool",isMut:!1,isSigner:!1},{name:"tokenAAta",isMut:!0,isSigner:!1},{name:"tokenBAta",isMut:!0,isSigner:!1},{name:"tokenAPartnerFeeVault",isMut:!0,isSigner:!1},{name:"tokenBPartnerFeeVault",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"swapWithPartner",accounts:[{name:"clmmConfig",isMut:!1,isSigner:!1},{name:"clmmpool",isMut:!0,isSigner:!1},{name:"tokenA",isMut:!1,isSigner:!1},{name:"tokenB",isMut:!1,isSigner:!1},{name:"accountA",isMut:!0,isSigner:!1},{name:"accountB",isMut:!0,isSigner:!1},{name:"tokenAVault",isMut:!0,isSigner:!1},{name:"tokenBVault",isMut:!0,isSigner:!1},{name:"tickArrayMap",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"partner",isMut:!1,isSigner:!1},{name:"partnerAtaA",isMut:!0,isSigner:!1},{name:"partnerAtaB",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"aToB",type:"bool"},{name:"byAmountIn",type:"bool"},{name:"amount",type:"u64"},{name:"amountLimit",type:"u64"},{name:"sqrtPriceLimit",type:"u128"}]},{name:"initializeRewarder",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"clmmConfig",isMut:!1,isSigner:!1},{name:"clmmpool",isMut:!0,isSigner:!1},{name:"rewarderAuthority",isMut:!1,isSigner:!0},{name:"rewarderTokenMint",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"rewarderIndex",type:"u8"},{name:"mintWrapper",type:"publicKey"},{name:"minter",type:"publicKey"}]},{name:"updateRewarderEmission",accounts:[{name:"rewarderAuthority",isMut:!1,isSigner:!0},{name:"clmmConfig",isMut:!1,isSigner:!1},{name:"clmmpool",isMut:!0,isSigner:!1}],args:[{name:"rewarderIndex",type:"u8"},{name:"emissionsPerSecond",type:"u128"}]},{name:"collectRewarder",accounts:[{name:"owner",isMut:!1,isSigner:!0},{name:"clmmpool",isMut:!0,isSigner:!1},{name:"position",isMut:!0,isSigner:!1},{name:"positionAta",isMut:!1,isSigner:!1},{name:"rewarderAta",isMut:!0,isSigner:!1},{name:"mintWrapper",isMut:!0,isSigner:!1},{name:"minter",isMut:!0,isSigner:!1},{name:"mintWrapperProgram",isMut:!1,isSigner:!1},{name:"rewardsTokenMint",isMut:!0,isSigner:!1},{name:"tickArrayLower",isMut:!1,isSigner:!1},{name:"tickArrayUpper",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"rewarderIndex",type:"u8"}]},{name:"transferPartnerClaimAuthority",accounts:[{name:"partnerClaimAuthority",isMut:!1,isSigner:!0},{name:"partner",isMut:!0,isSigner:!1},{name:"newAuthority",isMut:!1,isSigner:!1}],args:[]},{name:"acceptPartnerClaimAuthority",accounts:[{name:"newAuthority",isMut:!1,isSigner:!0},{name:"partner",isMut:!0,isSigner:!1}],args:[]},{name:"pauseClmmpool",accounts:[{name:"clmmConfig",isMut:!1,isSigner:!1},{name:"protocolAuthority",isMut:!1,isSigner:!0},{name:"clmmpool",isMut:!0,isSigner:!1}],args:[]},{name:"unpauseClmmpool",accounts:[{name:"clmmConfig",isMut:!1,isSigner:!1},{name:"protocolAuthority",isMut:!1,isSigner:!0},{name:"clmmpool",isMut:!0,isSigner:!1}],args:[]},{name:"createClmmpoolMetadata",accounts:[{name:"payer",isMut:!0,isSigner:!0},{name:"clmmConfig",isMut:!1,isSigner:!1},{name:"clmmpool",isMut:!1,isSigner:!1},{name:"clmmpoolMetadata",isMut:!0,isSigner:!1},{name:"protocolAuthority",isMut:!1,isSigner:!0},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"name",type:"string"},{name:"uri",type:"string"}]}],accounts:[{name:"clmmConfig",type:{kind:"struct",fields:[{name:"protocolAuthority",type:"publicKey"},{name:"protocolFeeClaimAuthority",type:"publicKey"},{name:"protocolFeeRate",type:"u16"},{name:"pendingAuthority",type:"publicKey"},{name:"createPoolAuthority",type:"publicKey"}]}},{name:"clmmpoolMetadata",type:{kind:"struct",fields:[{name:"clmmpool",type:"publicKey"},{name:"positionNums",type:"u64"},{name:"name",type:"string"},{name:"symbol",type:"string"},{name:"uri",type:"string"}]}},{name:"clmmpool",type:{kind:"struct",fields:[{name:"clmmConfig",type:"publicKey"},{name:"tokenA",type:"publicKey"},{name:"tokenB",type:"publicKey"},{name:"tokenAVault",type:"publicKey"},{name:"tokenBVault",type:"publicKey"},{name:"tickSpacing",type:"u16"},{name:"tickSpacingSeed",type:{array:["u8",2]}},{name:"feeRate",type:"u16"},{name:"liquidity",type:"u128"},{name:"currentSqrtPrice",type:"u128"},{name:"currentTickIndex",type:"i32"},{name:"feeGrowthGlobalA",type:"u128"},{name:"feeGrowthGlobalB",type:"u128"},{name:"feeProtocolTokenA",type:"u64"},{name:"feeProtocolTokenB",type:"u64"},{name:"bump",type:{array:["u8",1]}},{name:"rewarderInfos",type:{array:[{defined:"Rewarder"},3]}},{name:"rewarderLastUpdatedTime",type:"u64"},{name:"isPause",type:"bool"}]}},{name:"feeTier",type:{kind:"struct",fields:[{name:"feeRate",type:"u16"},{name:"tickSpacing",type:"u16"},{name:"bump",type:"u8"}]}},{name:"partner",type:{kind:"struct",fields:[{name:"partnerFeeClaimAuthority",type:"publicKey"},{name:"pendingAuthority",type:"publicKey"},{name:"base",type:"publicKey"},{name:"feeRate",type:"u16"},{name:"bump",type:{array:["u8",1]}},{name:"startTime",type:"u64"},{name:"endTime",type:"u64"},{name:"name",type:"string"}]}},{name:"position",type:{kind:"struct",fields:[{name:"clmmpool",type:"publicKey"},{name:"positionNftMint",type:"publicKey"},{name:"liquidity",type:"u128"},{name:"tickLowerIndex",type:"i32"},{name:"tickUpperIndex",type:"i32"},{name:"feeGrowthInsideA",type:"u128"},{name:"feeOwedA",type:"u64"},{name:"feeGrowthInsideB",type:"u128"},{name:"feeOwedB",type:"u64"},{name:"rewarderInfos",type:{array:[{defined:"PositionReward"},3]}}]}},{name:"tickArray",type:{kind:"struct",fields:[{name:"arrayIndex",type:"u16"},{name:"tickSpacing",type:"u16"},{name:"clmmpool",type:"publicKey"},{name:"ticks",type:{array:[{defined:"Tick"},64]}}]}},{name:"tickArrayMap",type:{kind:"struct",fields:[{name:"bitmap",type:{array:["u8",868]}}]}}],types:[{name:"Rewarder",type:{kind:"struct",fields:[{name:"mintWrapper",type:"publicKey"},{name:"minter",type:"publicKey"},{name:"mint",type:"publicKey"},{name:"authority",type:"publicKey"},{name:"emissionsPerSecond",type:"u128"},{name:"growthGlobal",type:"u128"}]}},{name:"PositionReward",type:{kind:"struct",fields:[{name:"growthInside",type:"u128"},{name:"amountOwed",type:"u64"}]}},{name:"Tick",type:{kind:"struct",fields:[{name:"isInitialized",type:"bool"},{name:"index",type:"i32"},{name:"sqrtPrice",type:"u128"},{name:"liquidityNet",type:"i128"},{name:"liquidityGross",type:"u128"},{name:"feeGrowthOutsideA",type:"u128"},{name:"feeGrowthOutsideB",type:"u128"},{name:"rewardGrowthOutside",type:{array:["u128",3]}}]}},{name:"ErrorCode",type:{kind:"enum",variants:[{name:"LOK"},{name:"NumberCastError"},{name:"ZeroMintAmount"},{name:"IntegerDowncastOverflow"},{name:"MultiplicationOverflow"},{name:"DivisorIsZero"},{name:"TokenAmountMinSubceeded"},{name:"TokenAmountMaxExceeded"},{name:"SqrtPriceOutOfBounds"},{name:"ProtocolFeeRateIllegal"},{name:"FeeRateIllegal"},{name:"TokenMintPairIllgal"},{name:"TickArrayStartIndexIllegal"},{name:"InvalidTickSpacing"},{name:"InvalidTickIndex"},{name:"InvalidTickArrayAccount"},{name:"PositionIsNotEmpty"},{name:"InvalidTokenAccountOwner"},{name:"TickNotFound"},{name:"TickNotInArray"},{name:"InvalidTokenAccount"},{name:"InvalidMint"},{name:"InvalidAuthority"},{name:"PositionAndClmmpoolNotMatch"},{name:"PositionIllegal"},{name:"InvalidDeltaLiquidity"},{name:"ConfigAndPoolNotMatch"},{name:"WrongSqrtPriceLimit"},{name:"TickArrayNotFound"},{name:"InvalidTickArrayIndex"},{name:"NextTickNotFound"},{name:"FeeGrowthIllegal"},{name:"LiquidityOverflow"},{name:"LiquidityUnderflow"},{name:"RemainerAmountUnderflow"},{name:"SwapAmountInOverflow"},{name:"SwapAmountOutOverflow"},{name:"SwapFeeAmountOverflow"},{name:"InvalidTime"},{name:"AmountInAboveMaximumLimit"},{name:"AmountOutBelowMaximumLimit"},{name:"InvalidFixedTokenType"},{name:"InvalidRewarderIndex"},{name:"InvalidPartner"},{name:"InvalidClmmpoolStatus"},{name:"InvalidClmmpoolMetadataAccount"}]}}],events:[{name:"AcceptPartnerClaimAuthorityEvent",fields:[{name:"newAuthority",type:"publicKey",index:!1},{name:"partner",type:"publicKey",index:!1},{name:"oldAuthority",type:"publicKey",index:!1}]},{name:"AcceptProtocolAuthorityEvent",fields:[{name:"newAuthority",type:"publicKey",index:!1},{name:"config",type:"publicKey",index:!1},{name:"oldAuthority",type:"publicKey",index:!1}]},{name:"CollectFeeEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"owner",type:"publicKey",index:!1},{name:"positionNftMint",type:"publicKey",index:!1},{name:"amountA",type:"u64",index:!1},{name:"amountB",type:"u64",index:!1}]},{name:"CollectPartnerFeeEvent",fields:[{name:"claimAuthority",type:"publicKey",index:!1},{name:"partner",type:"publicKey",index:!1},{name:"pool",type:"publicKey",index:!1},{name:"amountA",type:"u64",index:!1},{name:"amountB",type:"u64",index:!1}]},{name:"CollectProtocolFeeEvent",fields:[{name:"claimAuthority",type:"publicKey",index:!1},{name:"config",type:"publicKey",index:!1},{name:"pool",type:"publicKey",index:!1},{name:"amountA",type:"u64",index:!1},{name:"amountB",type:"u64",index:!1}]},{name:"CollectRewarderEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"owner",type:"publicKey",index:!1},{name:"positionNftMint",type:"publicKey",index:!1},{name:"amount",type:"u64",index:!1},{name:"rewarderMint",type:"publicKey",index:!1}]},{name:"CreateClmmPoolEvent",fields:[{name:"payer",type:"publicKey",index:!1},{name:"config",type:"publicKey",index:!1},{name:"feeTier",type:"publicKey",index:!1},{name:"pool",type:"publicKey",index:!1},{name:"tokenA",type:"publicKey",index:!1},{name:"tokenB",type:"publicKey",index:!1}]},{name:"CreateClmmpoolMetadataEvent",fields:[{name:"clmmpool",type:"publicKey",index:!1},{name:"clmmpoolMetadata",type:"publicKey",index:!1}]},{name:"CreateFeeTierEvent",fields:[{name:"payer",type:"publicKey",index:!1},{name:"config",type:"publicKey",index:!1},{name:"feeTier",type:"publicKey",index:!1}]},{name:"CreatePartnerEvent",fields:[{name:"config",type:"publicKey",index:!1},{name:"protocolAuthority",type:"publicKey",index:!1},{name:"partner",type:"publicKey",index:!1}]},{name:"CreateTickArrayEvent",fields:[{name:"payer",type:"publicKey",index:!1},{name:"pool",type:"publicKey",index:!1},{name:"tickArray",type:"publicKey",index:!1},{name:"arrayIndex",type:"u16",index:!1}]},{name:"CreateTickArrayMapEvent",fields:[{name:"payer",type:"publicKey",index:!1},{name:"pool",type:"publicKey",index:!1},{name:"tickArrayMap",type:"publicKey",index:!1}]},{name:"DecreaseLiquidityEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"owner",type:"publicKey",index:!1},{name:"positionNftMint",type:"publicKey",index:!1},{name:"deltaLiquidity",type:"u128",index:!1},{name:"amountA",type:"u64",index:!1},{name:"amountB",type:"u64",index:!1}]},{name:"IncreaseLiquidityEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"owner",type:"publicKey",index:!1},{name:"positionNftMint",type:"publicKey",index:!1},{name:"deltaLiquidity",type:"u128",index:!1},{name:"amountA",type:"u64",index:!1},{name:"amountB",type:"u64",index:!1}]},{name:"IncreaseLiquidityWithFixedTokenEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"owner",type:"publicKey",index:!1},{name:"positionNftMint",type:"publicKey",index:!1},{name:"deltaLiquidity",type:"u128",index:!1},{name:"amountA",type:"u64",index:!1},{name:"amountB",type:"u64",index:!1}]},{name:"InitializeClmmConfigEvent",fields:[{name:"config",type:"publicKey",index:!1},{name:"feeAuthority",type:"publicKey",index:!1},{name:"claimAuthority",type:"publicKey",index:!1},{name:"createPoolAuthority",type:"publicKey",index:!1},{name:"feeRate",type:"u16",index:!1}]},{name:"OpenPositionEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"owner",type:"publicKey",index:!1},{name:"positionNftMint",type:"publicKey",index:!1},{name:"position",type:"publicKey",index:!1},{name:"tickLowerIndex",type:"i32",index:!1},{name:"tickUpperIndex",type:"i32",index:!1}]},{name:"RemovePositionEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"owner",type:"publicKey",index:!1},{name:"positionNftMint",type:"publicKey",index:!1},{name:"position",type:"publicKey",index:!1}]},{name:"SwapEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"owner",type:"publicKey",index:!1},{name:"partner",type:"publicKey",index:!1},{name:"aToB",type:"bool",index:!1},{name:"amountIn",type:"u64",index:!1},{name:"amountOut",type:"u64",index:!1},{name:"refAmount",type:"u64",index:!1},{name:"feeAmount",type:"u64",index:!1},{name:"protocolAmount",type:"u64",index:!1},{name:"vaultAAmount",type:"u64",index:!1},{name:"vaultBAmount",type:"u64",index:!1}]},{name:"SwapWithPartnerEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"owner",type:"publicKey",index:!1},{name:"partner",type:"publicKey",index:!1},{name:"aToB",type:"bool",index:!1},{name:"amountIn",type:"u64",index:!1},{name:"amountOut",type:"u64",index:!1},{name:"refAmount",type:"u64",index:!1},{name:"feeAmount",type:"u64",index:!1},{name:"protocolAmount",type:"u64",index:!1},{name:"vaultAAmount",type:"u64",index:!1},{name:"vaultBAmount",type:"u64",index:!1}]},{name:"TransferPartnerClaimAuthorityEvent",fields:[{name:"newAuthority",type:"publicKey",index:!1},{name:"partner",type:"publicKey",index:!1},{name:"oldAuthority",type:"publicKey",index:!1}]},{name:"TransferProtocolAuthorityEvent",fields:[{name:"newAuthority",type:"publicKey",index:!1},{name:"config",type:"publicKey",index:!1},{name:"oldAuthority",type:"publicKey",index:!1}]},{name:"UpdateConfigEvent",fields:[{name:"config",type:"publicKey",index:!1},{name:"newProtocolFeeRate",type:{option:"u16"},index:!1},{name:"createPoolAuthority",type:{option:"publicKey"},index:!1},{name:"claimAuthority",type:{option:"publicKey"},index:!1}]},{name:"UpdateFeeRateEvent",fields:[{name:"pool",type:"publicKey",index:!1},{name:"config",type:"publicKey",index:!1}]},{name:"UpdatePartnerEvent",fields:[{name:"authority",type:"publicKey",index:!1},{name:"partner",type:"publicKey",index:!1},{name:"newFeeRate",type:{option:"u16"},index:!1},{name:"newClaimAuthority",type:{option:"publicKey"},index:!1}]}]});class kv{constructor(e,t,n){this.address=void 0,this.id=void 0,this.label="Crema",this.shouldPrefetch=!0,this.exactOutputSupported=!1,this.hasDynamicAccounts=!0,this.clmmpoolData=void 0,this.reserveTokenDecimals=void 0,this.tickArrayMapPubkey=void 0,this.feeRate=void 0,this.tickArrayMap=void 0,this.tickArrayPubkeys=[],this.tickArrays=[],this.arrayStartIndex=void 0,this.swapTicks=void 0,this.address=e,this.id=e.toBase58(),this.clmmpoolData=bv.accounts.decode("clmmpool",t.data),this.feeRate=this.clmmpoolData.feeRate,this.tickArrayMapPubkey=ts.getTickArrayMapPDA(jb,e).publicKey,this.reserveTokenDecimals=[n.decimalA,n.decimalB],this.arrayStartIndex=0}getAccountsForUpdate(){return[this.address,this.tickArrayMapPubkey,...this.tickArrayPubkeys]}update(e){const t=e.get(this.address.toBase58());if(!t)throw new Error(`Missing poolData ${this.address.toBase58()}`);this.clmmpoolData=bv.accounts.decode("clmmpool",t.data),this.feeRate=this.clmmpoolData.feeRate;const n=e.get(this.tickArrayMapPubkey.toBase58());if(!n)throw new Error(`Missing tickArrayMap ${this.tickArrayMapPubkey.toBase58()}`);const i=bv.accounts.decode("tickArrayMap",n.data);this.tickArrayPubkeys=this.getTickArrayPubkeys(this.address,i),this.tickArrayMap=i;const r=$A.getArrayIndex(this.clmmpoolData.currentTickIndex,this.clmmpoolData.tickSpacing);let o=!1;const A=[];for(let t=0;t=r&&(o=!0,this.arrayStartIndex=t),A.push({address:this.tickArrayPubkeys[t],data:e})}}this.tickArrays=A;const s={aToB:[],bToA:[]};for(let e=this.arrayStartIndex;e>this.arrayStartIndex-3;e--){let t=this.tickArrays[e];t&&s.aToB.push(t)}for(let e=this.arrayStartIndex;e{for(let n=0;n=0;e--)i.data&&i.data.ticks[e].isInitialized&&this.swapTicks.aToB.push(i.data.ticks[e]);else for(let e=0;e>e&1)>0)}const i=[];for(let t=0;t{a.push({pubkey:e,isSigner:!1,isWritable:!0})})),a.push(iv),[Hk(Uk(o)),nv.instruction.cremaSwap({accounts:{swapProgram:jb,clmmConfig:e.clmmConfig,clmmpool:e.clmmpool,tokenA:e.tokenA,tokenB:e.tokenB,accountA:A,accountB:s,tokenAVault:e.tokenAVault,tokenBVault:e.tokenBVault,tickArrayMap:e.tickArrayMap,owner:i,partner:Wb,partnerAtaA:ev({walletAddress:Wb,tokenMintAddress:e.tokenA}),partnerAtaB:ev({walletAddress:Wb,tokenMintAddress:e.tokenB}),tokenProgram:B.TOKEN_PROGRAM_ID},remainingAccounts:a}).keys]}({additionalArgs:{clmmConfig:i,clmmpool:this.address,tokenA:this.clmmpoolData.tokenA,tokenB:this.clmmpoolData.tokenB,tokenAVault:this.clmmpoolData.tokenAVault,tokenBVault:this.clmmpoolData.tokenBVault,tickArrayMap:this.tickArrayMapPubkey,remainingAccounts:r.swapTickArrays},...e})}get reserveTokenMints(){return[this.clmmpoolData.tokenA,this.clmmpoolData.tokenB]}}class vv{static async getStateFromStateAccount(e){const t=await e.getAccountInfo(Fk);if(!t)throw new Error("State account not found");return(e=>{const t=Ok.decode(e.data);return{isInitialized:Boolean(t.isInitialized),stateOwner:t.stateOwner,feeOwner:t.feeOwner,initialSupply:t.initialSupply,returnFeeNumerator:t.returnFeeNumerator.toNumber(),fixedFeeNumerator:t.fixedFeeNumerator.toNumber(),feeDenominator:t.feeDenominator.toNumber(),curveType:t.curveType,curveParameters:t.curveParameters}})(t)}constructor(e,t,n){this.id=void 0,this.label="Cropper",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.poolState=void 0,this.tokenReserveAmounts=void 0,this.calculator=void 0,this.feePct=void 0,this.params=void 0,this.id=e.toBase58(),this.poolState=Rk(e,t),this.params={...n,tokenAFeeAccount:new A.PublicKey(n.tokenAFeeAccount),tokenBFeeAccount:new A.PublicKey(n.tokenBFeeAccount)},this.feePct=new zr.Z(this.params.fixedFeeNumerator).add(new zr.Z(this.params.returnFeeNumerator)).div(this.params.feeDenominator),this.calculator=new We.TokenSwapConstantProduct(new We.Fraction(b().BigInt(this.params.fixedFeeNumerator),b().BigInt(this.params.feeDenominator)),new We.Fraction(b().BigInt(this.params.returnFeeNumerator),b().BigInt(this.params.feeDenominator)))}getAccountsForUpdate(){return[this.poolState.tokenAAccount,this.poolState.tokenBAccount]}update(e){const t=vb(e,this.getAccountsForUpdate());this.tokenReserveAmounts=Sb(t)}getQuote({sourceMint:e,amount:t}){if(!this.tokenReserveAmounts)throw new Error("Missing tokenReserveAmounts");const n=this.poolState.mintA.equals(e)?1:0,i=this.calculator.exchange(this.tokenReserveAmounts,t,n);return{notEnoughLiquidity:!1,inAmount:t,outAmount:i.expectedOutputAmount,feeAmount:i.fees,feeMint:e.toBase58(),feePct:this.feePct.toNumber(),priceImpactPct:i.priceImpact.toNumber()}}getSwapLegAndAccounts(e){const t=e.sourceMint.equals(this.poolState.mintA)?this.params.tokenAFeeAccount:this.params.tokenBFeeAccount;return function({poolState:e,feeAccount:t,sourceMint:n,userSourceTokenAccount:i,userDestinationTokenAccount:r,userTransferAuthority:o}){const[A,s]=n.equals(e.mintA)?[e.tokenAAccount,e.tokenBAccount]:[e.tokenBAccount,e.tokenAAccount];return[Hk({cropper:{}}),nv.instruction.cropperSwap({accounts:{tokenSwapProgram:e.programId,tokenProgram:B.TOKEN_PROGRAM_ID,swap:e.ammId,swapState:Fk,authority:e.authority,userTransferAuthority:o,source:i,swapSource:A,swapDestination:s,destination:r,poolMint:e.poolMint,poolFee:t}}).keys]}({poolState:this.poolState,feeAccount:t,...e})}get reserveTokenMints(){return[this.poolState.mintA,this.poolState.mintB]}}vv.decodePoolState=Rk;class Sv{constructor(e,t){this.program=void 0,this.pool=void 0,this.bitmapCache=void 0,this.tickCache=void 0,this.accountsToFetch={bitmaps:[],ticks:[]},this.program=e,this.pool=t,this.bitmapCache=new Map,this.tickCache=new Map}async eagerLoadCache(e,t){const n=b().toNumber(b().divide(b().BigInt(e),b().BigInt(t))),{wordPos:i}=Bc(n);try{const e=[],{wordPos:n}=Bc(Math.floor(fc.MIN_TICK/t)),{wordPos:o}=Bc(Math.floor(fc.MAX_TICK/t)),A=Math.max(i-10,n),s=Math.min(i+10,o);for(let t=A;tB.u64.fromBuffer(e.data.slice(64,72)),Pv=e=>B.u64.fromBuffer(e.data.slice(36,44));function Ov(e){const t=e.readBigUInt64LE();return Number(t)}class Fv{constructor(e,t){this.address=void 0,this.id=void 0,this.label="GooseFX",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!0,this.pairLayout=void 0,this.quoter=void 0,this.gooseFxAccounts=void 0,this.fixedAccounts=void 0,this.oracleAccounts=[],this.quoteParams=void 0,this.isQuoteInvalid=!0,this.slot=void 0,this.address=e,this.id=e.toBase58(),this.pairLayout=Pl.decode(t.data);const[n,i]=this.pairLayout.mints,r=new class{constructor(e=Rl,t=Fl){this.controller=e,this.programId=t,this.getPairAddress=(e,t)=>{const n=[e.toBuffer(),t.toBuffer()].sort(Ct.Buffer.compare);return A.PublicKey.findProgramAddressSync([Ct.Buffer.from("GFX-SSL-Pair","utf-8"),this.controller.toBuffer(),n[0],n[1]],this.programId)[0]}}getSyncQuoter(e,t){return new Fg(this.programId,this.controller,e,t)}};this.quoter=r.getSyncQuoter(n,i),this.gooseFxAccounts=this.quoter.getAccounts();const{pairAddress:o,sslIn:s,sslOut:a,liabilityVaultIn:c,liabilityVaultOut:u,swappedLiabilityVaultIn:l,swappedLiabilityVaultOut:g}=this.gooseFxAccounts;this.fixedAccounts=[A.SYSVAR_CLOCK_PUBKEY,o,s,a,c,u,l,g],this.updateOracles()}updateOracles(){const e=Number(this.pairLayout.nOracle.toString()),t=this.pairLayout.oracles.slice(0,e).reduce(((e,t)=>{const n=Number(t.n);for(const i of t.elements.slice(0,n))e.push(i.address);return e}),[]);this.oracleAccounts=t}getAccountsForUpdate(){return[...this.fixedAccounts,...this.oracleAccounts]}isSuspended(e){if(this.quoteParams){let t=Boolean(this.quoteParams.suspended);if(void 0!==e)for(const n of this.quoteParams.publishedSlots)t||=n+this.quoteParams.maxDelay<=e;return t}return!0}update(e){var t;const[n,i,r,o,A,s,a,c]=vb(e,this.fixedAccounts);if(!(i&&r&&o&&A&&s&&a&&c))throw new Error("Missing account data");const u=Wl.OracleRegistry;this.pairLayout=Pl.decode(i.data);const{oracles:l,nOracle:g,maxDelay:d}=this.pairLayout,h=Number(g.toString()),p=new u;this.updateOracles();let f=[];for(const t of l.slice(0,h)){const n=Number(t.n);for(const i of t.elements.slice(0,n)){const t=e.get(i.address.toBase58());if(!t)return void(this.isQuoteInvalid=!0);p.add_oracle(i.address.toBuffer(),t.data),f.push(BigInt((0,Yc.parsePriceData)(t.data).aggregate.publishSlot))}}this.slot=BigInt(Ov(n.data)),this.isQuoteInvalid&&(this.isQuoteInvalid=!1),null===(t=this.quoteParams)||void 0===t||t.registry.free(),this.quoteParams={liabilityIn:BigInt(Tv(A).toString()),liabilityOut:BigInt(Tv(s).toString()),pairData:i.data,sslInData:r.data,sslOutData:o.data,swappedLiabilityIn:BigInt(Tv(a).toString()),swappedLiabilityOut:BigInt(Tv(c).toString()),registry:p,suspended:new Pg(r).isSuspended()||new Pg(o).isSuspended(),maxDelay:d,publishedSlots:f}}getQuote({sourceMint:e,amount:t}){if(!this.quoteParams||this.isQuoteInvalid)throw new Error("Missing quote data");if(this.isSuspended(this.slot))throw new Error("Quote suspended");const{quoteParams:n}=this,i=Wl.swap;let r;const o=e.equals(this.pairLayout.mints[0]);r=o?i(n.sslInData.slice(),n.sslOutData.slice(),n.pairData.slice(),n.liabilityIn,n.liabilityOut,n.swappedLiabilityIn,n.swappedLiabilityOut,n.registry,BigInt(t.toString())):i(n.sslOutData.slice(),n.sslInData.slice(),n.pairData.slice(),n.liabilityOut,n.liabilityIn,n.swappedLiabilityOut,n.swappedLiabilityIn,n.registry,BigInt(t.toString()));const A=this.pairLayout.feeRates[o?0:1],s={notEnoughLiquidity:!1,inAmount:b().BigInt(r.amount_in.toString()),outAmount:b().BigInt(r.amount_out.toString()),feeAmount:b().BigInt(r.fee_paid.toString()),feeMint:e.toBase58(),feePct:A/1e4,priceImpactPct:r.price_impact};return r.free(),s}getSwapLegAndAccounts(e){var t;if(!this.quoteParams)throw new Error("Missing quote data");const n=e.sourceMint.equals(this.pairLayout.mints[0]),{gooseFxAccounts:i}=this,[r,o,A,s,a,c]=n?[i.sslIn,i.liabilityVaultIn,i.swappedLiabilityVaultIn,i.sslOut,i.liabilityVaultOut,i.swappedLiabilityVaultOut]:[i.sslOut,i.liabilityVaultOut,i.swappedLiabilityVaultOut,i.sslIn,i.liabilityVaultIn,i.swappedLiabilityVaultIn];return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i}){const r=[];return r.push(e.referrer?{pubkey:e.referrer,isSigner:!1,isWritable:!0}:iv),e.oracles.forEach((e=>{r.push({pubkey:e,isSigner:!1,isWritable:!1})})),r.push(iv),[Hk({gooseFx:{}}),nv.instruction.goosefxSwap({accounts:{swapProgram:uk,controller:lk,pair:e.pair,sslIn:e.sslIn,sslOut:e.sslOut,liabilityVaultIn:e.liabilityVaultIn,swappedLiabilityVaultIn:e.swappedLiabilityVaultIn,liabilityVaultOut:e.liabilityVaultOut,swappedLiabilityVaultOut:e.swappedLiabilityVaultOut,userInAta:t,userOutAta:n,feeCollectorAta:e.feeCollectorAta,userWallet:i,feeCollector:e.feeCollector,tokenProgram:B.TOKEN_PROGRAM_ID},remainingAccounts:r}).keys]}({additionalArgs:{pair:this.gooseFxAccounts.pairAddress,sslIn:r,sslOut:s,liabilityVaultIn:o,swappedLiabilityVaultIn:A,liabilityVaultOut:a,swappedLiabilityVaultOut:c,feeCollectorAta:ev({walletAddress:this.pairLayout.feeCollector,tokenMintAddress:e.sourceMint}),feeCollector:this.pairLayout.feeCollector,oracles:this.oracleAccounts,referrer:null===(t=e.quoteMintToReferrer)||void 0===t?void 0:t.get(e.sourceMint.toBase58())},...e})}get reserveTokenMints(){return this.pairLayout.mints}}const Rv=new Mr({version:"0.1.0",name:"invariant",instructions:[{name:"createState",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"admin",isMut:!0,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"nonce",type:"u8"}]},{name:"createFeeTier",accounts:[{name:"feeTier",isMut:!0,isSigner:!1},{name:"state",isMut:!1,isSigner:!1},{name:"admin",isMut:!0,isSigner:!0},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"fee",type:"u128"},{name:"tickSpacing",type:"u16"}]},{name:"createPool",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"feeTier",isMut:!1,isSigner:!1},{name:"tickmap",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"tokenXReserve",isMut:!0,isSigner:!0},{name:"tokenYReserve",isMut:!0,isSigner:!0},{name:"payer",isMut:!0,isSigner:!0},{name:"authority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"initTick",type:"i32"}]},{name:"swap",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"tickmap",isMut:!0,isSigner:!1},{name:"accountX",isMut:!0,isSigner:!1},{name:"accountY",isMut:!0,isSigner:!1},{name:"reserveX",isMut:!0,isSigner:!1},{name:"reserveY",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"xToY",type:"bool"},{name:"amount",type:"u64"},{name:"byAmountIn",type:"bool"},{name:"sqrtPriceLimit",type:"u128"}]},{name:"initializeOracle",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"oracle",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"payer",isMut:!1,isSigner:!0},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"createTick",accounts:[{name:"tick",isMut:!0,isSigner:!1},{name:"pool",isMut:!1,isSigner:!1},{name:"tickmap",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"index",type:"i32"}]},{name:"createPositionList",accounts:[{name:"positionList",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!1},{name:"signer",isMut:!0,isSigner:!0},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"createPosition",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"position",isMut:!0,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"positionList",isMut:!0,isSigner:!1},{name:"payer",isMut:!0,isSigner:!0},{name:"owner",isMut:!1,isSigner:!0},{name:"lowerTick",isMut:!0,isSigner:!1},{name:"upperTick",isMut:!0,isSigner:!1},{name:"tickmap",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"accountX",isMut:!0,isSigner:!1},{name:"accountY",isMut:!0,isSigner:!1},{name:"reserveX",isMut:!0,isSigner:!1},{name:"reserveY",isMut:!0,isSigner:!1},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"lowerTickIndex",type:"i32"},{name:"upperTickIndex",type:"i32"},{name:"liquidityDelta",type:{defined:"Liquidity"}},{name:"slippageLimitLower",type:{defined:"Price"}},{name:"slippageLimitUpper",type:{defined:"Price"}}]},{name:"removePosition",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"removedPosition",isMut:!0,isSigner:!1},{name:"positionList",isMut:!0,isSigner:!1},{name:"lastPosition",isMut:!0,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"tickmap",isMut:!0,isSigner:!1},{name:"lowerTick",isMut:!0,isSigner:!1},{name:"upperTick",isMut:!0,isSigner:!1},{name:"owner",isMut:!0,isSigner:!0},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"accountX",isMut:!0,isSigner:!1},{name:"accountY",isMut:!0,isSigner:!1},{name:"reserveX",isMut:!0,isSigner:!1},{name:"reserveY",isMut:!0,isSigner:!1},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"index",type:"u32"},{name:"lowerTickIndex",type:"i32"},{name:"upperTickIndex",type:"i32"}]},{name:"transferPositionOwnership",accounts:[{name:"ownerList",isMut:!0,isSigner:!1},{name:"recipientList",isMut:!0,isSigner:!1},{name:"newPosition",isMut:!0,isSigner:!1},{name:"removedPosition",isMut:!0,isSigner:!1},{name:"lastPosition",isMut:!0,isSigner:!1},{name:"owner",isMut:!0,isSigner:!0},{name:"recipient",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"index",type:"u32"}]},{name:"claimFee",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"position",isMut:!0,isSigner:!1},{name:"lowerTick",isMut:!0,isSigner:!1},{name:"upperTick",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!0},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"accountX",isMut:!0,isSigner:!1},{name:"accountY",isMut:!0,isSigner:!1},{name:"reserveX",isMut:!0,isSigner:!1},{name:"reserveY",isMut:!0,isSigner:!1},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"index",type:"u32"},{name:"lowerTickIndex",type:"i32"},{name:"upperTickIndex",type:"i32"}]},{name:"updateSecondsPerLiquidity",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"lowerTick",isMut:!1,isSigner:!1},{name:"upperTick",isMut:!1,isSigner:!1},{name:"position",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"owner",isMut:!1,isSigner:!1},{name:"signer",isMut:!0,isSigner:!0},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"lowerTickIndex",type:"i32"},{name:"upperTickIndex",type:"i32"},{name:"index",type:"i32"}]},{name:"withdrawProtocolFee",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"accountX",isMut:!0,isSigner:!1},{name:"accountY",isMut:!0,isSigner:!1},{name:"reserveX",isMut:!0,isSigner:!1},{name:"reserveY",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"changeProtocolFee",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1}],args:[{name:"protocolFee",type:{defined:"FixedPoint"}}]},{name:"changeFeeReceiver",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0},{name:"feeReceiver",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"feeTier",type:{kind:"struct",fields:[{name:"fee",type:{defined:"FixedPoint"}},{name:"tickSpacing",type:"u16"},{name:"bump",type:"u8"}]}},{name:"oracle",type:{kind:"struct",fields:[{name:"data",type:{array:[{defined:"Record"},256]}},{name:"head",type:"u16"},{name:"amount",type:"u16"},{name:"size",type:"u16"}]}},{name:"pool",type:{kind:"struct",fields:[{name:"tokenX",type:"publicKey"},{name:"tokenY",type:"publicKey"},{name:"tokenXReserve",type:"publicKey"},{name:"tokenYReserve",type:"publicKey"},{name:"positionIterator",type:"u128"},{name:"tickSpacing",type:"u16"},{name:"fee",type:{defined:"FixedPoint"}},{name:"protocolFee",type:{defined:"FixedPoint"}},{name:"liquidity",type:{defined:"Liquidity"}},{name:"sqrtPrice",type:{defined:"Price"}},{name:"currentTickIndex",type:"i32"},{name:"tickmap",type:"publicKey"},{name:"feeGrowthGlobalX",type:{defined:"FeeGrowth"}},{name:"feeGrowthGlobalY",type:{defined:"FeeGrowth"}},{name:"feeProtocolTokenX",type:"u64"},{name:"feeProtocolTokenY",type:"u64"},{name:"secondsPerLiquidityGlobal",type:{defined:"FixedPoint"}},{name:"startTimestamp",type:"u64"},{name:"lastTimestamp",type:"u64"},{name:"feeReceiver",type:"publicKey"},{name:"oracleAddress",type:"publicKey"},{name:"oracleInitialized",type:"bool"},{name:"bump",type:"u8"}]}},{name:"position",type:{kind:"struct",fields:[{name:"owner",type:"publicKey"},{name:"pool",type:"publicKey"},{name:"id",type:"u128"},{name:"liquidity",type:{defined:"Liquidity"}},{name:"lowerTickIndex",type:"i32"},{name:"upperTickIndex",type:"i32"},{name:"feeGrowthInsideX",type:{defined:"FeeGrowth"}},{name:"feeGrowthInsideY",type:{defined:"FeeGrowth"}},{name:"secondsPerLiquidityInside",type:{defined:"FixedPoint"}},{name:"lastSlot",type:"u64"},{name:"tokensOwedX",type:{defined:"FixedPoint"}},{name:"tokensOwedY",type:{defined:"FixedPoint"}},{name:"bump",type:"u8"}]}},{name:"positionList",type:{kind:"struct",fields:[{name:"head",type:"u32"},{name:"bump",type:"u8"}]}},{name:"state",type:{kind:"struct",fields:[{name:"admin",type:"publicKey"},{name:"nonce",type:"u8"},{name:"authority",type:"publicKey"},{name:"bump",type:"u8"}]}},{name:"tick",type:{kind:"struct",fields:[{name:"pool",type:"publicKey"},{name:"index",type:"i32"},{name:"sign",type:"bool"},{name:"liquidityChange",type:{defined:"Liquidity"}},{name:"liquidityGross",type:{defined:"Liquidity"}},{name:"sqrtPrice",type:{defined:"Price"}},{name:"feeGrowthOutsideX",type:{defined:"FeeGrowth"}},{name:"feeGrowthOutsideY",type:{defined:"FeeGrowth"}},{name:"secondsPerLiquidityOutside",type:{defined:"FixedPoint"}},{name:"secondsOutside",type:"u64"},{name:"bump",type:"u8"}]}},{name:"tickmap",type:{kind:"struct",fields:[{name:"bitmap",type:{array:["u8",11091]}}]}}],types:[{name:"Price",type:{kind:"struct",fields:[{name:"v",type:"u128"}]}},{name:"Liquidity",type:{kind:"struct",fields:[{name:"v",type:"u128"}]}},{name:"FeeGrowth",type:{kind:"struct",fields:[{name:"v",type:"u128"}]}},{name:"FixedPoint",type:{kind:"struct",fields:[{name:"v",type:"u128"}]}},{name:"Record",type:{kind:"struct",fields:[{name:"timestamp",type:"u64"},{name:"price",type:{defined:"Price"}}]}}],errors:[{code:6e3,name:"ZeroAmount",msg:"Amount is zero"},{code:6001,name:"ZeroOutput",msg:"Output would be zero"},{code:6002,name:"WrongTick",msg:"Not the expected tick"},{code:6003,name:"WrongLimit",msg:"Price limit is on the wrong side of price"},{code:6004,name:"InvalidTickIndex",msg:"Tick index not divisible by spacing or over limit"},{code:6005,name:"InvalidTickInterval",msg:"Invalid tick_lower or tick_upper"},{code:6006,name:"NoMoreTicks",msg:"There is no more tick in that direction"},{code:6007,name:"TickNotFound",msg:"Correct tick not found in context"},{code:6008,name:"PriceLimitReached",msg:"Price would cross swap limit"},{code:6009,name:"InvalidTickLiquidity",msg:"Invalid tick liquidity"},{code:6010,name:"EmptyPositionPokes",msg:"Disable empty position pokes"},{code:6011,name:"InvalidPositionLiquidity",msg:"Invalid tick liquidity"},{code:6012,name:"InvalidPoolLiquidity",msg:"Invalid pool liquidity"},{code:6013,name:"InvalidPositionIndex",msg:"Invalid position index"},{code:6014,name:"PositionWithoutLiquidity",msg:"Position liquidity would be zero"},{code:6015,name:"Unauthorized",msg:"You are not admin"},{code:6016,name:"InvalidPoolTokenAddresses",msg:"Invalid pool token addresses"},{code:6017,name:"NegativeTime",msg:"Time cannot be negative"},{code:6018,name:"OracleAlreadyInitialized",msg:"Oracle is already initialized"},{code:6019,name:"LimitReached",msg:"Absolute price limit was reached"},{code:6020,name:"InvalidProtocolFee",msg:"Invalid protocol fee"},{code:6021,name:"NoGainSwap",msg:"Swap amount out is 0"},{code:6022,name:"InvalidTokenAccount",msg:"Provided token account is different than expected"},{code:6023,name:"InvalidAdmin",msg:"Admin address is different than expected"},{code:6024,name:"InvalidAuthority",msg:"Provided authority is different than expected"},{code:6025,name:"InvalidOwner",msg:"Provided token owner is different than expected"},{code:6026,name:"InvalidMint",msg:"Provided token account mint is different than expected mint token"},{code:6027,name:"InvalidTickmap",msg:"Provided tickmap is different than expected"},{code:6028,name:"InvalidTickmapOwner",msg:"Provided tickmap owner is different than program ID"},{code:6029,name:"InvalidListOwner",msg:"Recipient list address and owner list address should be different"},{code:6030,name:"InvalidTickSpacing",msg:"Invalid tick spacing"}]},zb,kk);class Gv{static parsePoolStructure(e){return Rv.coder.accounts.decode("pool",e.data)}static parseTickmap(e){return Rv.coder.accounts.decode("tickmap",e.data)}static parseTick(e){return{...Rv.coder.accounts.decode("tick",e.data)}}static getQuote(e,t,n,i,r,o){const{currentTickIndex:A,fee:s,tickSpacing:a,tokenX:c,liquidity:u,sqrtPrice:l}=e,g={currentTickIndex:A,tickSpacing:a,liquidity:u,fee:s,sqrtPrice:l};return(e=>{const{xToY:t,byAmountIn:n,swapAmount:i,slippage:r,ticks:o,tickmap:A,priceLimit:s,pool:a}=e;let{currentTickIndex:c,tickSpacing:u,liquidity:l,sqrtPrice:g,fee:d}=a;const h=g.v;let p=id+1;const f=[],m=[];let I=new(y())(0),B=new(y())(0),C=new(y())(0),w=new(y())(0);const E=ud(s,r,!t);if(t){if(g.v.lt(E.v))throw new Error("Price limit is on the wrong side of price")}else if(g.v.gt(E.v))throw new Error("Price limit is on the wrong side of price");let Q=i,b=0;for(;!Q.lte(new(y())(0));){const e={sqrtPriceLimit:E,xToY:t,currentTick:c,tickSpacing:u,tickmap:A},{swapLimit:i,limitingTick:r}=td(e),s=ld(g,i,l,Q,n,d);let h;if(C=C.add(s.amountIn),B=B.add(s.amountOut),w=w.add(s.feeAmount),h=n?s.amountIn.add(s.feeAmount):s.amountOut,Q=Q.sub(h),g=s.nextPrice,g.v.eq(E.v)&&Q.gt(new(y())(0))){b="Price would cross swap limit";break}if(s.nextPrice.v.eq(i.v)&&null!=r){const e=r.index,i=r.initialized,A=yd(Q,s.nextPrice,a.liquidity,a.fee,n,t);if(i){if(!o.has(e))throw new Error("tick crossed but not passed to simulation");const i=o.get(e);!t||A?(l=c>=i.index!==i.sign?{v:l.v.add(i.liquidityChange.v)}:{v:l.v.sub(i.liquidityChange.v)},m.push(e)):Q.eqn(0)||(n&&(C=C.add(Q)),Q=new(y())(0))}c=t&&A?e-u:e}else c=Wg(c,u,s.nextPrice,t);I=I.add(h);const k=null!==r&&r.initialized;if((k||Q.eqn(0))&&(f.push(I),I=new(y())(0)),!k&&l.v.eqn(0)){b="Too large liquidity gap";break}if(c===p&&!Q.eqn(0)){b="At the end of price range";break}p=c}B.isZero()&&0===b&&(b="Amount out is zero");const k=g.v,v=((e,t)=>{const n=e.mul(e),i=t.mul(t);let r;return r=i.gte(n)?zg.mul(n).div(i):zg.mul(i).div(n),zg.sub(r)})(h,k);let S;if(n){S=((e,t,n,i)=>{const r=e.mul(e);let o;return o=t?n.mul(r).div(Vg).div(Vg):n.mul(Vg).mul(Vg).div(r),zg.sub(i).mul(o).div(zg)})(ud({v:k},r,!t).v,t,C,a.fee.v)}else S=B;return{status:b,amountPerTick:f,crossedTicks:m,accumulatedAmountIn:C,accumulatedAmountOut:B,accumulatedFee:w,priceAfterSwap:k,priceImpact:v,minReceived:S}})({xToY:i.equals(c),byAmountIn:o===kb.ExactIn,swapAmount:new I.BN(r.toString()),priceLimit:i.equals(c)?ad(rd):ad(id),slippage:ed(0),ticks:t,tickmap:n,pool:g})}static getTickIndexToTickPubkeyHash(e,t,n){if(!n){const{tickAddress:n}=this.getTickAddress(e,t.currentTickIndex),i=new Map;return i.set(t.currentTickIndex,n),i}const i=Id(n.bitmap,t.currentTickIndex,t.tickSpacing,19,1/0,"down"),r=Id(n.bitmap,t.currentTickIndex,t.tickSpacing,19,1/0,"up");return i.concat([t.currentTickIndex]).concat(r).reduce(((t,n)=>{const{tickAddress:i}=this.getTickAddress(e,n);return t.set(n,i),t}),new Map)}static getTickAddress(e,t){const n=Ib.alloc(4);n.writeInt32LE(t);const[i,r]=A.PublicKey.findProgramAddressSync([Ib.from(Ar.bytes.utf8.encode("tickv1")),e.toBuffer(),n],Rv.programId);return{tickAddress:i,tickBump:r}}}class xv{constructor(e,t){this.address=void 0,this.id=void 0,this.label="Invariant",this.shouldPrefetch=!0,this.exactOutputSupported=!1,this.hasDynamicAccounts=!0,this.poolStructure=void 0,this.tickmap=void 0,this.tickPkToTickIndexHash=void 0,this.ticks=new Map,this.feePct=void 0,this.address=e,this.id=e.toBase58(),this.poolStructure=Gv.parsePoolStructure(t),this.tickPkToTickIndexHash=Gv.getTickIndexToTickPubkeyHash(this.address,this.poolStructure,this.tickmap),this.feePct=new zr.Z(this.poolStructure.fee.v.toString()).div(zg.toString()).toNumber()}getAccountsForUpdate(){const e=this.tickPkToTickIndexHash.values();return[this.address,this.poolStructure.tickmap,...e]}update(e){const t=e.get(this.address.toBase58());if(!t)throw new Error(`Missing invariant pool data ${this.address.toBase58()}`);this.poolStructure=Gv.parsePoolStructure(t);const n=e.get(this.poolStructure.tickmap.toBase58());n&&(this.tickmap=Gv.parseTickmap(n)),this.tickPkToTickIndexHash=Gv.getTickIndexToTickPubkeyHash(this.address,this.poolStructure,this.tickmap),this.ticks.clear();for(const[t,n]of this.tickPkToTickIndexHash){const i=e.get(n.toBase58());if(!i)continue;const r=Gv.parseTick(i);this.ticks.set(t,r)}}getQuote({sourceMint:e,amount:t,swapMode:n}){if(!this.tickmap)throw new Error("Missing tickmap");const i=Gv.getQuote(this.poolStructure,this.ticks,this.tickmap,e,t,n),r=new zr.Z(i.priceImpact.toString()).div(zg.toString()).toNumber();if(0!==i.status)throw new Error(`Invariant simulation failed: ${this.address}`);return{notEnoughLiquidity:!1,inAmount:b().BigInt(i.accumulatedAmountIn.toString()),outAmount:b().BigInt(i.accumulatedAmountOut.toString()),feeAmount:b().BigInt(i.accumulatedFee.toString()),feeMint:e.toBase58(),feePct:this.feePct,priceImpactPct:r}}getSwapLegAndAccounts(e){var t;if(!this.tickmap)throw new Error("Missing tickmap");const n=Gv.getQuote(this.poolStructure,this.ticks,this.tickmap,e.sourceMint,e.amount,e.swapMode),i={};this.tickPkToTickIndexHash.forEach(((e,t)=>{i[t]=e}));const r=n.crossedTicks.concat(this.poolStructure.currentTickIndex).map((e=>{const t=i[e];if(!t)throw new Error("Missing tick account.");return t})),o=e.sourceMint.equals(this.poolStructure.tokenX);return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i}){const[r,o]=e.xToY?[t,n]:[n,t],A=e.referrer?[{pubkey:e.referrer,isSigner:!1,isWritable:!0}]:[];return e.crossedTickAddresses.forEach((e=>{A.push({pubkey:e,isSigner:!1,isWritable:!0})})),A.push(iv),[Hk(Yk(e.xToY)),nv.instruction.invariantSwap({accounts:{swapProgram:zb,tokenProgram:B.TOKEN_PROGRAM_ID,owner:i,state:Hb,pool:e.pool,tickmap:e.tickmap,accountX:r,accountY:o,reserveX:e.reserveX,reserveY:e.reserveY,programAuthority:Vb},remainingAccounts:A}).keys]}({...e,additionalArgs:{xToY:o,pool:this.address,tickmap:this.poolStructure.tickmap,reserveX:this.poolStructure.tokenXReserve,reserveY:this.poolStructure.tokenYReserve,crossedTickAddresses:r,referrer:null===(t=e.quoteMintToReferrer)||void 0===t?void 0:t.get(e.sourceMint.toBase58())}})}get reserveTokenMints(){return[this.poolStructure.tokenX,this.poolStructure.tokenY]}}class Uv{constructor(e,t){var n;this.ammAccountInfo=void 0,this.id=void 0,this.label="Lifinity",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.swapState=void 0,this.poolInfo=void 0,this.ammData=void 0,this.slot=void 0,this.ammAccountInfo=t,this.id=e.toBase58(),this.swapState=((e,t)=>{const n=t.owner,i=Bd.Yk.decode(t.data),[r]=(0,Nr.findProgramAddressSync)([e.toBuffer()],n);return{programId:n,authority:r,amm:e,tokenAMint:i.tokenAMint,tokenBMint:i.tokenBMint,poolMint:i.poolMint,feeAccount:i.poolFeeAccount,pythAccount:i.pythAccount,pythPcAccount:i.pythPcAccount,configAccount:i.configAccount,poolCoinTokenAccount:i.tokenAAccount,poolCoinMint:i.tokenAMint,poolPcTokenAccount:i.tokenBAccount,poolPcMint:i.tokenBMint}})(e,t),this.poolInfo={amm:(n=this.swapState).amm.toBase58(),configAccount:n.configAccount.toBase58(),feeAccount:n.feeAccount.toBase58(),pythAccount:n.pythAccount.toBase58(),pythPcAccount:n.pythPcAccount.toBase58(),poolCoinMint:n.poolCoinMint.toBase58(),poolCoinTokenAccount:n.poolCoinTokenAccount.toBase58(),poolMint:n.poolMint.toBase58(),poolPcTokenAccount:n.poolPcTokenAccount.toBase58(),poolPcMint:n.poolPcMint.toBase58(),poolCoinDecimal:0,poolPcDecimal:0,poolMintDecimal:0,pythBaseDecimal:0}}getAccountsForUpdate(){return[this.swapState.poolCoinTokenAccount,this.swapState.poolPcTokenAccount,this.swapState.configAccount,this.swapState.pythAccount,this.swapState.pythPcAccount,A.SYSVAR_CLOCK_PUBKEY]}update(e){const t=[];this.getAccountsForUpdate().forEach(((n,i)=>{const r=e.get(n.toBase58());r&&t.push({publicKey:n,account:r})})),this.ammData=(0,Bd._l)([{publicKey:this.swapState.amm,account:this.ammAccountInfo},...t],this.poolInfo),this.slot=Ov(t[t.length-1].account.data)}getQuote({sourceMint:e,amount:t}){if(!this.ammData||!this.slot)throw new Error("Accounts not loaded, missing ammData");if(this.isTradeFrozen)throw new Error("Trade is frozen");const n=this.swapState.poolCoinMint.equals(e)?Bd.vS.AtoB:Bd.vS.BtoA;if(!this.ammData.pyth.status.equals(1)||this.ammData.pythPc&&!this.ammData.pythPc.status.equals(1))throw new Error("Pyth accounts are outdated");const i=new zr.Z(t.toString()),r=(0,Bd.gx)(i,this.slot,this.ammData.amm,this.ammData.fees,this.ammData.coinBalance,this.ammData.pcBalance,this.ammData.config,this.ammData.pyth,this.ammData.pythPc,n);return{notEnoughLiquidity:!1,inAmount:t,outAmount:b().BigInt(r.amountSwapped.toString()),feeAmount:b().BigInt(r.fee.ceil().toString()),feeMint:e.toBase58(),feePct:r.feePercent.toNumber(),priceImpactPct:r.priceImpact.toNumber()}}getSwapLegAndAccounts(e){return function({swapState:e,sourceMint:t,userSourceTokenAccount:n,userDestinationTokenAccount:i,userTransferAuthority:r}){const[o,A]=t.equals(e.tokenAMint)?[e.poolCoinTokenAccount,e.poolPcTokenAccount]:[e.poolPcTokenAccount,e.poolCoinTokenAccount];return[Hk({lifinity:{}}),nv.instruction.lifinitySwap({accounts:{swapProgram:e.programId,authority:e.authority,amm:e.amm,userTransferAuthority:r,sourceInfo:n,destinationInfo:i,swapSource:o,swapDestination:A,poolMint:e.poolMint,feeAccount:e.feeAccount,tokenProgram:B.TOKEN_PROGRAM_ID,pythAccount:e.pythAccount,pythPcAccount:e.pythPcAccount,configAccount:e.configAccount}}).keys]}({swapState:this.swapState,...e})}get reserveTokenMints(){return[this.swapState.poolCoinMint,this.swapState.poolPcMint]}get isTradeFrozen(){var e;return 1===(null===(e=this.ammData)||void 0===e?void 0:e.amm.freezeTrade)}}class _v{constructor(e,t){this.address=void 0,this.id=void 0,this.label="Lifinity V2",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.ammState=void 0,this.poolInfo=void 0,this.ammData=void 0,this.slot=void 0,this.address=e;const n=new ti(wd);var i;this.id=e.toBase58(),this.ammState=n.decode("amm",t.data),this.poolInfo={amm:this.id,poolMint:(i=this.ammState).poolMint.toBase58(),feeAccount:i.feeAccount.toBase58(),oracleMainAccount:i.oracleMainAccount.toBase58(),oracleSubAccount:i.oracleSubAccount.toBase58(),oraclePcAccount:i.oraclePcAccount.toBase58(),poolCoinTokenAccount:i.tokenAAccount.toBase58(),poolCoinMint:i.tokenAMint.toBase58(),poolCoinDecimal:0,poolPcTokenAccount:i.tokenBAccount.toBase58(),poolPcMint:i.tokenBMint.toBase58(),poolPcDecimal:0,poolMintDecimal:0,pythBaseDecimal:i.baseDecimals}}getAccountsForUpdate(){return[this.address,this.ammState.tokenAAccount,this.ammState.tokenBAccount,this.ammState.oracleMainAccount,this.ammState.oracleSubAccount,this.ammState.oraclePcAccount,A.SYSVAR_CLOCK_PUBKEY]}update(e){const t=this.getAccountsForUpdate().reduce(((t,n)=>{const i=e.get(n.toBase58());return i&&t.push({publicKey:n,account:i}),t}),new Array);this.ammData=function(e,t){let n,i,r,o,A,s,a,c;for(let u=0;uA.oracleMainSlotLimit.toNumber()){if(!a||s.address==a.address)throw new Error("InvalidPythMainSlot");e=!0}if(p=s.price,f=s.confidence,e){if(f=new NA(0),!a.status.eq(1))throw new Error("InvalidPythSubStatus");if(t-a.publishSlot.toNumber()>A.oracleSubSlotLimit.toNumber())throw new Error("InvalidPythSubSlot");if(a.confidence.div(a.price).gt(A.oracleSubConfidenceLimit.div(A.configDenominator)))throw new Error("InvalidPythSubConfidence");p=a.price}}else{if(f=new NA(0),!a.status.eq(1))throw new Error("InvalidPythSubStatus");if(t-a.publishSlot.toNumber()>A.oracleSubSlotLimit.toNumber())throw new Error("InvalidPythSubSlot");if(a.confidence.div(a.price).gt(A.oracleSubConfidenceLimit.div(A.configDenominator)))throw new Error("InvalidPythSubConfidence");p=a.price}if(c){if(!c.status.eq(1))throw new Error("InvalidPythPcStatus");if(t-c.publishSlot.toNumber()>A.oraclePcSlotLimit.toNumber())throw new Error("InvalidPythPcSlot");if(c.confidence.div(c.price).gt(A.oraclePcConfidenceLimit.div(A.configDenominator)))throw new Error("InvalidPythPcConfidence");p=p.times(B.pow(Math.abs(c.exponent))).div(c.price)}let w=p;if(A.oracleStatus.eq(1)&&u===Qd)throw new Error("OracleConfidence");if(A.oracleStatus.eq(2)&&u===bd)throw new Error("OracleConfidence");if(0===n.curveType){let{destinationAmountSwapped:e,poolPriceImpact:t}=function(e,t,n,i,r,o,A,s){let a=new NA(0),c=new NA(0);switch(s){case Qd:{let o=t.times(A.priceBufferCoin.div(A.configDenominator).add(1)),s=r.plus(e).div(A.regressionTarget).minus(1),u=0;u=s.lt(0)?0:s.pow(A.spreadCoefficient.div(A.configDenominator)).times(A.stdSpread.div(A.configDenominator)).plus(A.stdSpreadBuffer.div(A.configDenominator)).toNumber(),u>1&&(u=.99);let l=o.times(1-u).minus(i).floor();a=e.times(l.div(n)).floor();let g=a.div(e).mul(n).floor();c=o.minus(g).div(o);break}case bd:{let o=t.times(A.priceBufferPc.div(A.configDenominator).add(1)),s=r,u=A.regressionTarget.times(2).minus(s).times(o).div(n).plus(e).div(A.regressionTarget.times(o).div(n)).minus(1),l=0;l=u.lt(0)?0:u.pow(A.spreadCoefficient.div(A.configDenominator)).times(A.stdSpread.div(A.configDenominator)).plus(A.stdSpreadBuffer.div(A.configDenominator)).toNumber(),l>1&&(l=.99);let g=o.times(1+l).plus(i).floor();a=e.div(g.div(n)).floor(),c=e.div(a).mul(n).floor().minus(o).div(o);break}}return{destinationAmountSwapped:a,poolPriceImpact:c}}(y,w,C,f,r,0,A,u);l=e,g=t}else if(1===n.curveType){let{destinationAmountSwapped:e,poolPriceImpact:t}=function(e,t,n,i,r,o,A){let s=new NA(0),a=new NA(0);switch(A){case Qd:{let t=i,n=r,o=t.times(n),A=t.plus(e),{q:c,r:u}=kd(o,A),l=c.floor();A=u.floor(),s=n.minus(l).floor();let g=n.div(t),d=n.minus(s).div(t.plus(e));a=g.minus(d).div(g);break}case bd:{let t=i,n=r,o=t.times(n),A=n.plus(e),{q:c,r:u}=kd(o,A),l=c.floor();A=u.floor(),s=t.minus(l).floor();let g=n.div(t),d=n.plus(e).div(t.minus(s));a=d.minus(g).div(d);break}}return{destinationAmountSwapped:s,poolPriceImpact:a}}(y,0,0,r,o,0,u);l=e,g=t}if(l.lt(1))throw new Error("ZeroAmountOut");if(u===Qd&&l.gte(o))throw new Error("ExceedPoolBalance");if(u===bd&&l.gte(r))throw new Error("ExceedPoolBalance");return{amountSwapped:l,priceImpact:g,fee:m,feePercent:I}}(new zr.Z(t.toString()),this.slot,this.ammData.amm,this.ammData.fees,this.ammData.coinBalance,this.ammData.pcBalance,this.ammData.config,this.ammData.oracleMain,this.ammData.oracleSub,this.ammData.oraclePc,n);return{notEnoughLiquidity:!1,inAmount:t,outAmount:b().BigInt(i.amountSwapped.toString()),feeAmount:b().BigInt(i.fee.ceil().toString()),feeMint:e.toBase58(),feePct:i.feePercent.toNumber(),priceImpactPct:i.priceImpact.toNumber()}}getSwapLegAndAccounts(e){return function({ammState:e,amm:t,sourceMint:n,userSourceTokenAccount:i,userDestinationTokenAccount:r,userTransferAuthority:o}){const[A,s]=n.equals(e.tokenAMint)?[e.tokenAAccount,e.tokenBAccount]:[e.tokenBAccount,e.tokenAAccount];return[Hk({lifinityV2:{}}),nv.instruction.lifinityV2Swap({accounts:{swapProgram:fk,authority:(0,Nr.findProgramAddressSync)([t.toBuffer()],fk)[0],amm:t,userTransferAuthority:o,sourceInfo:i,destinationInfo:r,swapSource:A,swapDestination:s,poolMint:e.poolMint,feeAccount:e.feeAccount,tokenProgram:B.TOKEN_PROGRAM_ID,oracleMainAccount:e.oracleMainAccount,oracleSubAccount:e.oracleSubAccount,oraclePcAccount:e.oraclePcAccount}}).keys]}({ammState:this.ammState,amm:this.address,...e})}get reserveTokenMints(){return[this.ammState.tokenAMint,this.ammState.tokenBMint]}get isTradeFrozen(){return 1===this.ammState.freezeTrade}}var Lv="marinade_finance",Kv=[{name:"initialize",accounts:[{name:"creatorAuthority",isMut:!1,isSigner:!0},{name:"state",isMut:!0,isSigner:!1},{name:"reservePda",isMut:!1,isSigner:!1},{name:"stakeList",isMut:!0,isSigner:!1},{name:"validatorList",isMut:!0,isSigner:!1},{name:"msolMint",isMut:!1,isSigner:!1},{name:"operationalSolAccount",isMut:!1,isSigner:!1},{name:"liqPool",accounts:[{name:"lpMint",isMut:!1,isSigner:!1},{name:"solLegPda",isMut:!1,isSigner:!1},{name:"msolLeg",isMut:!1,isSigner:!1}]},{name:"treasuryMsolAccount",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"data",type:{defined:"InitializeData"}}]},{name:"changeAuthority",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"adminAuthority",isMut:!1,isSigner:!0}],args:[{name:"data",type:{defined:"ChangeAuthorityData"}}]},{name:"addValidator",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"managerAuthority",isMut:!1,isSigner:!0},{name:"validatorList",isMut:!0,isSigner:!1},{name:"validatorVote",isMut:!1,isSigner:!1},{name:"duplicationFlag",isMut:!0,isSigner:!1},{name:"rentPayer",isMut:!0,isSigner:!0},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"score",type:"u32"}]},{name:"removeValidator",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"managerAuthority",isMut:!1,isSigner:!0},{name:"validatorList",isMut:!0,isSigner:!1},{name:"duplicationFlag",isMut:!0,isSigner:!1},{name:"operationalSolAccount",isMut:!0,isSigner:!1}],args:[{name:"index",type:"u32"},{name:"validatorVote",type:"publicKey"}]},{name:"setValidatorScore",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"managerAuthority",isMut:!1,isSigner:!0},{name:"validatorList",isMut:!0,isSigner:!1}],args:[{name:"index",type:"u32"},{name:"validatorVote",type:"publicKey"},{name:"score",type:"u32"}]},{name:"configValidatorSystem",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"managerAuthority",isMut:!1,isSigner:!0}],args:[{name:"extraRuns",type:"u32"}]},{name:"deposit",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"msolMint",isMut:!0,isSigner:!1},{name:"liqPoolSolLegPda",isMut:!0,isSigner:!1},{name:"liqPoolMsolLeg",isMut:!0,isSigner:!1},{name:"liqPoolMsolLegAuthority",isMut:!1,isSigner:!1},{name:"reservePda",isMut:!0,isSigner:!1},{name:"transferFrom",isMut:!0,isSigner:!0},{name:"mintTo",isMut:!0,isSigner:!1},{name:"msolMintAuthority",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"lamports",type:"u64"}]},{name:"depositStakeAccount",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"validatorList",isMut:!0,isSigner:!1},{name:"stakeList",isMut:!0,isSigner:!1},{name:"stakeAccount",isMut:!0,isSigner:!1},{name:"stakeAuthority",isMut:!1,isSigner:!0},{name:"duplicationFlag",isMut:!0,isSigner:!1},{name:"rentPayer",isMut:!0,isSigner:!0},{name:"msolMint",isMut:!0,isSigner:!1},{name:"mintTo",isMut:!0,isSigner:!1},{name:"msolMintAuthority",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"stakeProgram",isMut:!1,isSigner:!1}],args:[{name:"validatorIndex",type:"u32"}]},{name:"liquidUnstake",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"msolMint",isMut:!0,isSigner:!1},{name:"liqPoolSolLegPda",isMut:!0,isSigner:!1},{name:"liqPoolMsolLeg",isMut:!0,isSigner:!1},{name:"treasuryMsolAccount",isMut:!0,isSigner:!1},{name:"getMsolFrom",isMut:!0,isSigner:!1},{name:"getMsolFromAuthority",isMut:!1,isSigner:!0},{name:"transferSolTo",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"msolAmount",type:"u64"}]},{name:"addLiquidity",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"lpMint",isMut:!0,isSigner:!1},{name:"lpMintAuthority",isMut:!1,isSigner:!1},{name:"liqPoolMsolLeg",isMut:!1,isSigner:!1},{name:"liqPoolSolLegPda",isMut:!0,isSigner:!1},{name:"transferFrom",isMut:!0,isSigner:!0},{name:"mintTo",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"lamports",type:"u64"}]},{name:"removeLiquidity",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"lpMint",isMut:!0,isSigner:!1},{name:"burnFrom",isMut:!0,isSigner:!1},{name:"burnFromAuthority",isMut:!1,isSigner:!0},{name:"transferSolTo",isMut:!0,isSigner:!1},{name:"transferMsolTo",isMut:!0,isSigner:!1},{name:"liqPoolSolLegPda",isMut:!0,isSigner:!1},{name:"liqPoolMsolLeg",isMut:!0,isSigner:!1},{name:"liqPoolMsolLegAuthority",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"tokens",type:"u64"}]},{name:"setLpParams",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"adminAuthority",isMut:!1,isSigner:!0}],args:[{name:"minFee",type:{defined:"Fee"}},{name:"maxFee",type:{defined:"Fee"}},{name:"liquidityTarget",type:"u64"}]},{name:"configMarinade",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"adminAuthority",isMut:!1,isSigner:!0}],args:[{name:"params",type:{defined:"ConfigMarinadeParams"}}]},{name:"orderUnstake",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"msolMint",isMut:!0,isSigner:!1},{name:"burnMsolFrom",isMut:!0,isSigner:!1},{name:"burnMsolAuthority",isMut:!1,isSigner:!0},{name:"newTicketAccount",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"msolAmount",type:"u64"}]},{name:"claim",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"reservePda",isMut:!0,isSigner:!1},{name:"ticketAccount",isMut:!0,isSigner:!1},{name:"transferSolTo",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"stakeReserve",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"validatorList",isMut:!0,isSigner:!1},{name:"stakeList",isMut:!0,isSigner:!1},{name:"validatorVote",isMut:!0,isSigner:!1},{name:"reservePda",isMut:!0,isSigner:!1},{name:"stakeAccount",isMut:!0,isSigner:!1},{name:"stakeDepositAuthority",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"epochSchedule",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"stakeHistory",isMut:!1,isSigner:!1},{name:"stakeConfig",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"stakeProgram",isMut:!1,isSigner:!1}],args:[{name:"validatorIndex",type:"u32"}]},{name:"updateActive",accounts:[{name:"common",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"stakeList",isMut:!0,isSigner:!1},{name:"stakeAccount",isMut:!0,isSigner:!1},{name:"stakeWithdrawAuthority",isMut:!1,isSigner:!1},{name:"reservePda",isMut:!0,isSigner:!1},{name:"msolMint",isMut:!0,isSigner:!1},{name:"msolMintAuthority",isMut:!1,isSigner:!1},{name:"treasuryMsolAccount",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"stakeHistory",isMut:!1,isSigner:!1},{name:"stakeProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}]},{name:"validatorList",isMut:!0,isSigner:!1}],args:[{name:"stakeIndex",type:"u32"},{name:"validatorIndex",type:"u32"}]},{name:"updateDeactivated",accounts:[{name:"common",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"stakeList",isMut:!0,isSigner:!1},{name:"stakeAccount",isMut:!0,isSigner:!1},{name:"stakeWithdrawAuthority",isMut:!1,isSigner:!1},{name:"reservePda",isMut:!0,isSigner:!1},{name:"msolMint",isMut:!0,isSigner:!1},{name:"msolMintAuthority",isMut:!1,isSigner:!1},{name:"treasuryMsolAccount",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"stakeHistory",isMut:!1,isSigner:!1},{name:"stakeProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}]},{name:"operationalSolAccount",isMut:!0,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"stakeIndex",type:"u32"}]},{name:"deactivateStake",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"reservePda",isMut:!1,isSigner:!1},{name:"validatorList",isMut:!0,isSigner:!1},{name:"stakeList",isMut:!0,isSigner:!1},{name:"stakeAccount",isMut:!0,isSigner:!1},{name:"stakeDepositAuthority",isMut:!1,isSigner:!1},{name:"splitStakeAccount",isMut:!0,isSigner:!0},{name:"splitStakeRentPayer",isMut:!0,isSigner:!0},{name:"clock",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"epochSchedule",isMut:!1,isSigner:!1},{name:"stakeHistory",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"stakeProgram",isMut:!1,isSigner:!1}],args:[{name:"stakeIndex",type:"u32"},{name:"validatorIndex",type:"u32"}]},{name:"emergencyUnstake",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"validatorManagerAuthority",isMut:!1,isSigner:!0},{name:"validatorList",isMut:!0,isSigner:!1},{name:"stakeList",isMut:!0,isSigner:!1},{name:"stakeAccount",isMut:!0,isSigner:!1},{name:"stakeDepositAuthority",isMut:!1,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"stakeProgram",isMut:!1,isSigner:!1}],args:[{name:"stakeIndex",type:"u32"},{name:"validatorIndex",type:"u32"}]},{name:"mergeStakes",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"stakeList",isMut:!0,isSigner:!1},{name:"validatorList",isMut:!0,isSigner:!1},{name:"destinationStake",isMut:!0,isSigner:!1},{name:"sourceStake",isMut:!0,isSigner:!1},{name:"stakeDepositAuthority",isMut:!1,isSigner:!1},{name:"stakeWithdrawAuthority",isMut:!1,isSigner:!1},{name:"operationalSolAccount",isMut:!0,isSigner:!1},{name:"clock",isMut:!1,isSigner:!1},{name:"stakeHistory",isMut:!1,isSigner:!1},{name:"stakeProgram",isMut:!1,isSigner:!1}],args:[{name:"destinationStakeIndex",type:"u32"},{name:"sourceStakeIndex",type:"u32"},{name:"validatorIndex",type:"u32"}]}],Yv=[{name:"State",type:{kind:"struct",fields:[{name:"msolMint",type:"publicKey"},{name:"adminAuthority",type:"publicKey"},{name:"operationalSolAccount",type:"publicKey"},{name:"treasuryMsolAccount",type:"publicKey"},{name:"reserveBumpSeed",type:"u8"},{name:"msolMintAuthorityBumpSeed",type:"u8"},{name:"rentExemptForTokenAcc",type:"u64"},{name:"rewardFee",type:{defined:"Fee"}},{name:"stakeSystem",type:{defined:"StakeSystem"}},{name:"validatorSystem",type:{defined:"ValidatorSystem"}},{name:"liqPool",type:{defined:"LiqPool"}},{name:"availableReserveBalance",type:"u64"},{name:"msolSupply",type:"u64"},{name:"msolPrice",type:"u64"},{name:"circulatingTicketCount",type:"u64"},{name:"circulatingTicketBalance",type:"u64"},{name:"lentFromReserve",type:"u64"},{name:"minDeposit",type:"u64"},{name:"minWithdraw",type:"u64"},{name:"stakingSolCap",type:"u64"},{name:"emergencyCoolingDown",type:"u64"}]}},{name:"TicketAccountData",type:{kind:"struct",fields:[{name:"stateAddress",type:"publicKey"},{name:"beneficiary",type:"publicKey"},{name:"lamportsAmount",type:"u64"},{name:"createdEpoch",type:"u64"}]}}],jv=[{name:"Fee",type:{kind:"struct",fields:[{name:"basisPoints",type:"u32"}]}},{name:"InitializeData",type:{kind:"struct",fields:[{name:"adminAuthority",type:"publicKey"},{name:"validatorManagerAuthority",type:"publicKey"},{name:"minStake",type:"u64"},{name:"rewardFee",type:{defined:"Fee"}},{name:"liqPool",type:{defined:"LiqPoolInitializeData"}},{name:"additionalStakeRecordSpace",type:"u32"},{name:"additionalValidatorRecordSpace",type:"u32"},{name:"slotsForStakeDelta",type:"u64"}]}},{name:"LiqPoolInitializeData",type:{kind:"struct",fields:[{name:"lpLiquidityTarget",type:"u64"},{name:"lpMaxFee",type:{defined:"Fee"}},{name:"lpMinFee",type:{defined:"Fee"}},{name:"lpTreasuryCut",type:{defined:"Fee"}}]}},{name:"ChangeAuthorityData",type:{kind:"struct",fields:[{name:"admin",type:{option:"publicKey"}},{name:"validatorManager",type:{option:"publicKey"}},{name:"operationalSolAccount",type:{option:"publicKey"}},{name:"treasuryMsolAccount",type:{option:"publicKey"}}]}},{name:"ConfigMarinadeParams",type:{kind:"struct",fields:[{name:"rewardsFee",type:{option:{defined:"Fee"}}},{name:"slotsForStakeDelta",type:{option:"u64"}},{name:"minStake",type:{option:"u64"}},{name:"minDeposit",type:{option:"u64"}},{name:"minWithdraw",type:{option:"u64"}},{name:"stakingSolCap",type:{option:"u64"}},{name:"liquiditySolCap",type:{option:"u64"}},{name:"autoAddValidatorEnabled",type:{option:"bool"}}]}},{name:"LiqPool",type:{kind:"struct",fields:[{name:"lpMint",type:"publicKey"},{name:"lpMintAuthorityBumpSeed",type:"u8"},{name:"solLegBumpSeed",type:"u8"},{name:"msolLegAuthorityBumpSeed",type:"u8"},{name:"msolLeg",type:"publicKey"},{name:"lpLiquidityTarget",type:"u64"},{name:"lpMaxFee",type:{defined:"Fee"}},{name:"lpMinFee",type:{defined:"Fee"}},{name:"treasuryCut",type:{defined:"Fee"}},{name:"lpSupply",type:"u64"},{name:"lentFromSolLeg",type:"u64"},{name:"liquiditySolCap",type:"u64"}]}},{name:"List",type:{kind:"struct",fields:[{name:"account",type:"publicKey"},{name:"itemSize",type:"u32"},{name:"count",type:"u32"},{name:"newAccount",type:"publicKey"},{name:"copiedCount",type:"u32"}]}},{name:"StakeRecord",type:{kind:"struct",fields:[{name:"stakeAccount",type:"publicKey"},{name:"lastUpdateDelegatedLamports",type:"u64"},{name:"lastUpdateEpoch",type:"u64"},{name:"isEmergencyUnstaking",type:"u8"}]}},{name:"StakeSystem",type:{kind:"struct",fields:[{name:"stakeList",type:{defined:"List"}},{name:"delayedUnstakeCoolingDown",type:"u64"},{name:"stakeDepositBumpSeed",type:"u8"},{name:"stakeWithdrawBumpSeed",type:"u8"},{name:"slotsForStakeDelta",type:"u64"},{name:"lastStakeDeltaEpoch",type:"u64"},{name:"minStake",type:"u64"},{name:"extraStakeDeltaRuns",type:"u32"}]}},{name:"ValidatorRecord",type:{kind:"struct",fields:[{name:"validatorAccount",type:"publicKey"},{name:"activeBalance",type:"u64"},{name:"score",type:"u32"},{name:"lastStakeDeltaEpoch",type:"u64"},{name:"duplicationFlagBumpSeed",type:"u8"}]}},{name:"ValidatorSystem",type:{kind:"struct",fields:[{name:"validatorList",type:{defined:"List"}},{name:"managerAuthority",type:"publicKey"},{name:"totalValidatorScore",type:"u32"},{name:"totalActiveBalance",type:"u64"},{name:"autoAddValidatorEnabled",type:"u8"}]}},{name:"CommonError",type:{kind:"enum",variants:[{name:"InvalidProgramId",fields:["publicKey"]},{name:"UnexpectedAccount",fields:["publicKey"]},{name:"CalculationFailure"},{name:"AccountWithLockup"},{name:"NumberTooLow",fields:["u64","u64"]},{name:"NumberTooHigh",fields:["u64","u64"]},{name:"FeeTooHigh",fields:[{defined:"Fee"}]},{name:"FeesWrongWayRound",fields:[{defined:"Fee"},{defined:"Fee"}]},{name:"LiquidityTargetTooLow"},{name:"TicketNotDue",fields:["u64"]},{name:"TicketNotReady"},{name:"WrongBeneficiary"},{name:"InsufficientLiquidity"},{name:"InvalidValidator"}]}},{name:"InitializeError",type:{kind:"enum",variants:[{name:"WrongReserveOwner",fields:["publicKey"]},{name:"NonEmptyReserveData",fields:[{defined:"usize"}]},{name:"InvalidInitialReserveLamports",fields:["u64"]},{name:"ZeroValidatorChunkSize"},{name:"TooBigValidatorChunkSize",fields:["u32"]},{name:"ZeroCreditChunkSize"},{name:"TooBigCreditChunkSize",fields:["u32"]},{name:"TooLowCreditFee",fields:["u64"]},{name:"InvalidMintAuthority",fields:[{name:"expected",type:"publicKey"},{name:"got",type:"publicKey"}]},{name:"MintHasInitialSupply",fields:["u64"]},{name:"InvalidOwnerFeeState",fields:[{defined:"spl_token::state::AccountState"}]}]}}],Wv={__proto__:null,version:"0.0.0",name:Lv,instructions:Kv,accounts:Yv,types:jv,default:{version:"0.0.0",name:Lv,instructions:Kv,accounts:Yv,types:jv}};function Jv(e,t,n){return n.isZero()?e:e.mul(t).div(n)}class qv{constructor(e,t){this.address=void 0,this.id=void 0,this.label="Marinade",this.shouldPrefetch=!0,this.exactOutputSupported=!1,this.hasDynamicAccounts=!0,this.marinadeFinanceProgram=void 0,this.marinadeStateResponse=void 0,this.liqPoolSolLegPdaAddress=void 0,this.marinadeState=void 0,this.id=e.toBase58(),this.marinadeFinanceProgram=new Mr(Wv,ek,{}),this.marinadeStateResponse=this.marinadeFinanceProgram.coder.accounts.decode("State",t.data),this.address=e,this.liqPoolSolLegPdaAddress=this.findProgramDerivedAddress("liq_sol")}getAccountsForUpdate(){return[this.address,this.liqPoolSolLegPdaAddress,this.marinadeStateResponse.liqPool.msolLeg]}update(e){const[t,n,i]=vb(e,this.getAccountsForUpdate());this.marinadeStateResponse=this.marinadeFinanceProgram.coder.accounts.decode("State",t.data);const r=Bt(i.data);if(!r)throw new Error(`liqPoolMSOLLeg token account cannot be deserialized ${this.marinadeStateResponse.liqPool.msolLeg.toBase58()}`);this.marinadeState=new Zv(this.marinadeStateResponse,new(y())(n.lamports),r.amount)}getQuote({sourceMint:e,amount:t}){if(!this.marinadeState)throw new Error("Update was not run to create a complete marinadeState");const n=new(y())(t.toString()),i=e.equals(B.NATIVE_MINT)?this.marinadeState.depositQuote(n):this.marinadeState.liquidUnstakeQuote(n);return{notEnoughLiquidity:!1,inAmount:t,outAmount:b().BigInt(i.outAmount.toString()),feeAmount:b().BigInt(i.feeAmount.toString()),feeMint:this.marinadeStateResponse.msolMint.toBase58(),feePct:i.feePct,priceImpactPct:0}}getSwapLegAndAccounts(e){return e.sourceMint.equals(B.NATIVE_MINT)?function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i}){const r=(0,Nr.findProgramAddressSync)([Ib.from("temp-wsol-token-account"),i.toBuffer()],tv)[0],o=(0,Nr.findProgramAddressSync)([Ib.from("temp-sol-pda"),i.toBuffer()],tv)[0];return[Hk({marinadeDeposit:{}}),nv.instruction.marinadeDeposit({accounts:{marinadeFinanceProgram:ek,state:e.address,msolMint:e.marinadeStateResponse.msolMint,liqPoolSolLegPda:e.liqPoolSolLegPda,liqPoolMsolLeg:e.marinadeStateResponse.liqPool.msolLeg,liqPoolMsolLegAuthority:e.liqPoolMsolLegAuthority,reservePda:e.reservePda,transferFrom:o,mintTo:n,msolMintAuthority:e.msolMintAuthority,systemProgram:A.SystemProgram.programId,tokenProgram:B.TOKEN_PROGRAM_ID,userWsolTokenAccount:t,tempWsolTokenAccount:r,userTransferAuthority:i,wsolMint:B.NATIVE_MINT,rent:A.SYSVAR_RENT_PUBKEY}}).keys]}({additionalArgs:{address:this.address,marinadeStateResponse:this.marinadeStateResponse,liqPoolSolLegPda:this.liqPoolSolLegPdaAddress,liqPoolMsolLegAuthority:this.findProgramDerivedAddress("liq_st_sol_authority"),reservePda:this.findProgramDerivedAddress("reserve"),msolMintAuthority:this.findProgramDerivedAddress("st_mint")},...e}):function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i}){const r=(0,Nr.findProgramAddressSync)([Ib.from("temp-sol-pda"),i.toBuffer()],tv)[0];return[Hk({marinadeUnstake:{}}),nv.instruction.marinadeUnstake({accounts:{marinadeFinanceProgram:ek,state:e.address,msolMint:e.marinadeStateResponse.msolMint,liqPoolSolLegPda:e.liqPoolSolLegPda,liqPoolMsolLeg:e.marinadeStateResponse.liqPool.msolLeg,treasuryMsolAccount:e.marinadeStateResponse.treasuryMsolAccount,getMsolFrom:t,getMsolFromAuthority:i,transferSolTo:r,systemProgram:A.SystemProgram.programId,tokenProgram:B.TOKEN_PROGRAM_ID,userWsolTokenAccount:n}}).keys]}({additionalArgs:{address:this.address,marinadeStateResponse:this.marinadeStateResponse,liqPoolSolLegPda:this.liqPoolSolLegPdaAddress},...e})}get reserveTokenMints(){return[B.NATIVE_MINT,this.marinadeStateResponse.msolMint]}findProgramDerivedAddress(e,t=[]){const n=[this.address.toBuffer(),Ib.from(e),...t],[i]=(0,Nr.findProgramAddressSync)(n,this.marinadeFinanceProgram.programId);return i}}class Zv{constructor(e,t,n){this.state=void 0,this.liqPoolSolLegPdaLamports=void 0,this.liqPoolMSOLLegAmount=void 0,this.state=e,this.liqPoolSolLegPdaLamports=t,this.liqPoolMSOLLegAmount=n}depositQuote(e){let t=e;const n=this.calcMSOLFromLamports(t),i=y().min(n,this.liqPoolMSOLLegAmount);let r=new(y())(0);if(t=(()=>{if(i.gt(new(y())(0))){const e=n.eq(i)?t:this.calcLamportsFromMSOLAmount(i);return r=r.add(i),zv(t,e)}return t})(),t.gt(new(y())(0))){this.checkStakingCap(t);const e=this.calcMSOLFromLamports(t);r=r.add(e)}return{outAmount:r,feeAmount:0,feePct:0,priceImpactPct:0}}checkStakingCap(e){if(this.totalLamportsUnderControl().add(e).gt(this.state.stakingSolCap))throw new Error("Staking cap reached")}calcMSOLFromLamports(e){return t=e,n=this.totalVirtualStakedLamports(),(i=this.state.msolSupply).eq(new(y())(0))?t:Jv(t,i,n);var t,n,i}calcLamportsFromMSOLAmount(e){return Jv(e,this.totalVirtualStakedLamports(),this.state.msolSupply)}totalVirtualStakedLamports(){return zv(this.totalLamportsUnderControl(),this.state.circulatingTicketBalance)}totalLamportsUnderControl(){return this.state.validatorSystem.totalActiveBalance.add(this.totalCoolingDown()).add(this.state.availableReserveBalance)}totalCoolingDown(){return this.state.stakeSystem.delayedUnstakeCoolingDown.add(this.state.emergencyCoolingDown)}liquidUnstakeQuote(e){const t=zv(this.liqPoolSolLegPdaLamports,this.state.rentExemptForTokenAcc),n=this.calcLamportsFromMSOLAmount(e),i=function(e,t,n,i,r){if(r.gte(i))return t;const o=i.sub(r);return o.gte(n)?e:t-Jv(new(y())(t-e),o,n).toNumber()}(this.state.liqPool.lpMinFee.basisPoints,this.state.liqPool.lpMaxFee.basisPoints,this.state.liqPool.lpLiquidityTarget,t,n),r=e.mul(new(y())(i)).div(new(y())(1e4)),o=this.calcLamportsFromMSOLAmount(e.sub(r));if(o.add(this.state.rentExemptForTokenAcc).gt(this.liqPoolSolLegPdaLamports))throw new Error("Insufficient liquidity");return{outAmount:o,feeAmount:r,feePct:i/1e4,priceImpactPct:0}}}function zv(e,t){return e.gt(t)?e.sub(t):new(y())(0)}const Hv=Math.pow(10,10),Vv=(0,u.struct)([(0,u.u8)("version"),(0,u.u8)("isInitialized"),(0,u.u8)("nonce"),Dk("amplificationCoefficient"),Dk("feeNumerator"),Dk("adminFeeNumerator"),(0,u.u32)("tokenAccountsLength"),Dk("precisionFactor"),Dk("precisionMultiplierA"),Dk("precisionMultiplierB"),Dk("precisionMultiplierC"),Dk("precisionMultiplierD"),Sk("tokenAccountA"),Sk("tokenAccountB"),Sk("tokenAccountC"),Sk("tokenAccountD")]),Xv=(e,t)=>{const n=t.owner,i=Vv.decode(t.data),r=i.tokenAccountsLength,o=Tk([e.toBuffer(),Ib.from([i.nonce])],n),A=[i.precisionMultiplierA.toNumber(),i.precisionMultiplierB.toNumber(),i.precisionMultiplierC.toNumber(),i.precisionMultiplierD.toNumber()].slice(0,r),s=[i.tokenAccountA,i.tokenAccountB,i.tokenAccountC,i.tokenAccountD].slice(0,r);return{programId:n,authority:o,isInitialized:Boolean(i.isInitialized),nonce:i.nonce,ammId:e,amplificationCoefficient:i.amplificationCoefficient.toNumber(),feeNumerator:i.feeNumerator.toNumber(),tokenAccountsLength:r,precisionFactor:i.precisionFactor.toNumber(),precisionMultipliers:A,tokenAccounts:s}};class $v{constructor(e,t,n){this.params=void 0,this.id=void 0,this.label="Mercurial",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.swapLayout=void 0,this.tokenMints=void 0,this.tokenReserveAmounts=void 0,this.calculator=void 0,this.params=n,this.id=e.toBase58(),this.swapLayout=Xv(e,t),this.calculator=new We.Stable(b().BigInt(this.swapLayout.tokenAccountsLength),b().BigInt(this.swapLayout.amplificationCoefficient),this.swapLayout.precisionMultipliers.map((e=>b().BigInt(e))),new We.Fraction(b().BigInt(this.swapLayout.feeNumerator),b().BigInt(Hv))),this.tokenMints=n.tokenMints.map((e=>new A.PublicKey(e)))}getAccountsForUpdate(){return this.swapLayout.tokenAccounts}update(e){const t=vb(e,this.getAccountsForUpdate());this.tokenReserveAmounts=Sb(t)}getQuote({sourceMint:e,destinationMint:t,amount:n}){if(!this.tokenReserveAmounts)throw new Error("Missing tokenReserveAmounts");const i=this.tokenReserveAmounts.findIndex(((t,n)=>this.tokenMints[n].equals(e))),r=this.tokenReserveAmounts.findIndex(((e,n)=>this.tokenMints[n].equals(t))),o=this.calculator.exchange(this.tokenReserveAmounts,n,i,r),A=this.swapLayout.feeNumerator/Hv;return{notEnoughLiquidity:!1,inAmount:n,outAmount:o.expectedOutputAmount,feeAmount:o.fees,feeMint:t.toBase58(),feePct:A,priceImpactPct:o.priceImpact.toNumber()}}getSwapLegAndAccounts(e){return function({swapLayout:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i}){const r=[];for(const t of e.tokenAccounts)r.push({pubkey:t,isSigner:!1,isWritable:!0});return[Hk({mercurial:{}}),nv.instruction.mercurialSwap({accounts:ov(e,t,n,i),remainingAccounts:r}).keys]}({swapLayout:this.swapLayout,...e})}get reserveTokenMints(){return this.params.tokenMints.map((e=>new A.PublicKey(e)))}}$v.decodeSwapLayout=Xv;const eS=new Mr({version:"0.4.0",name:"amm",instructions:[{name:"initialize",accounts:[{name:"pool",isMut:!0,isSigner:!0},{name:"lpMint",isMut:!0,isSigner:!1},{name:"tokenAMint",isMut:!1,isSigner:!1},{name:"tokenBMint",isMut:!1,isSigner:!1},{name:"aVault",isMut:!0,isSigner:!1},{name:"bVault",isMut:!0,isSigner:!1},{name:"aTokenVault",isMut:!0,isSigner:!1},{name:"bTokenVault",isMut:!0,isSigner:!1},{name:"aVaultLpMint",isMut:!0,isSigner:!1},{name:"bVaultLpMint",isMut:!0,isSigner:!1},{name:"aVaultLp",isMut:!0,isSigner:!1},{name:"bVaultLp",isMut:!0,isSigner:!1},{name:"adminTokenA",isMut:!0,isSigner:!1},{name:"adminTokenB",isMut:!0,isSigner:!1},{name:"adminPoolLp",isMut:!0,isSigner:!1},{name:"adminTokenAFee",isMut:!0,isSigner:!1},{name:"adminTokenBFee",isMut:!0,isSigner:!1},{name:"apy",isMut:!0,isSigner:!1},{name:"admin",isMut:!0,isSigner:!0},{name:"rent",isMut:!1,isSigner:!1},{name:"vaultProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"curveType",type:{defined:"CurveType"}},{name:"tokenAAmount",type:"u64"},{name:"tokenBAmount",type:"u64"},{name:"invariantD",type:"u64"}]},{name:"enableOrDisablePool",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0}],args:[{name:"enable",type:"bool"}]},{name:"swap",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"userSourceToken",isMut:!0,isSigner:!1},{name:"userDestinationToken",isMut:!0,isSigner:!1},{name:"aVault",isMut:!0,isSigner:!1},{name:"bVault",isMut:!0,isSigner:!1},{name:"aTokenVault",isMut:!0,isSigner:!1},{name:"bTokenVault",isMut:!0,isSigner:!1},{name:"aVaultLpMint",isMut:!0,isSigner:!1},{name:"bVaultLpMint",isMut:!0,isSigner:!1},{name:"aVaultLp",isMut:!0,isSigner:!1},{name:"bVaultLp",isMut:!0,isSigner:!1},{name:"adminTokenFee",isMut:!0,isSigner:!1},{name:"user",isMut:!1,isSigner:!0},{name:"vaultProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"inAmount",type:"u64"},{name:"minimumOutAmount",type:"u64"}]},{name:"removeLiquiditySingleSide",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"lpMint",isMut:!0,isSigner:!1},{name:"userPoolLp",isMut:!0,isSigner:!1},{name:"aVaultLp",isMut:!0,isSigner:!1},{name:"bVaultLp",isMut:!0,isSigner:!1},{name:"aVault",isMut:!0,isSigner:!1},{name:"bVault",isMut:!0,isSigner:!1},{name:"aVaultLpMint",isMut:!0,isSigner:!1},{name:"bVaultLpMint",isMut:!0,isSigner:!1},{name:"aTokenVault",isMut:!0,isSigner:!1},{name:"bTokenVault",isMut:!0,isSigner:!1},{name:"userDestinationToken",isMut:!0,isSigner:!1},{name:"user",isMut:!1,isSigner:!0},{name:"vaultProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"poolTokenAmount",type:"u64"},{name:"minimumOutAmount",type:"u64"}]},{name:"addImbalanceLiquidity",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"lpMint",isMut:!0,isSigner:!1},{name:"userPoolLp",isMut:!0,isSigner:!1},{name:"aVaultLp",isMut:!0,isSigner:!1},{name:"bVaultLp",isMut:!0,isSigner:!1},{name:"aVault",isMut:!0,isSigner:!1},{name:"bVault",isMut:!0,isSigner:!1},{name:"aVaultLpMint",isMut:!0,isSigner:!1},{name:"bVaultLpMint",isMut:!0,isSigner:!1},{name:"aTokenVault",isMut:!0,isSigner:!1},{name:"bTokenVault",isMut:!0,isSigner:!1},{name:"userAToken",isMut:!0,isSigner:!1},{name:"userBToken",isMut:!0,isSigner:!1},{name:"user",isMut:!1,isSigner:!0},{name:"vaultProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"minimumPoolTokenAmount",type:"u64"},{name:"tokenAAmount",type:"u64"},{name:"tokenBAmount",type:"u64"}]},{name:"removeBalanceLiquidity",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"lpMint",isMut:!0,isSigner:!1},{name:"userPoolLp",isMut:!0,isSigner:!1},{name:"aVaultLp",isMut:!0,isSigner:!1},{name:"bVaultLp",isMut:!0,isSigner:!1},{name:"aVault",isMut:!0,isSigner:!1},{name:"bVault",isMut:!0,isSigner:!1},{name:"aVaultLpMint",isMut:!0,isSigner:!1},{name:"bVaultLpMint",isMut:!0,isSigner:!1},{name:"aTokenVault",isMut:!0,isSigner:!1},{name:"bTokenVault",isMut:!0,isSigner:!1},{name:"userAToken",isMut:!0,isSigner:!1},{name:"userBToken",isMut:!0,isSigner:!1},{name:"user",isMut:!1,isSigner:!0},{name:"vaultProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"poolTokenAmount",type:"u64"},{name:"minimumATokenOut",type:"u64"},{name:"minimumBTokenOut",type:"u64"}]},{name:"addBalanceLiquidity",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"lpMint",isMut:!0,isSigner:!1},{name:"userPoolLp",isMut:!0,isSigner:!1},{name:"aVaultLp",isMut:!0,isSigner:!1},{name:"bVaultLp",isMut:!0,isSigner:!1},{name:"aVault",isMut:!0,isSigner:!1},{name:"bVault",isMut:!0,isSigner:!1},{name:"aVaultLpMint",isMut:!0,isSigner:!1},{name:"bVaultLpMint",isMut:!0,isSigner:!1},{name:"aTokenVault",isMut:!0,isSigner:!1},{name:"bTokenVault",isMut:!0,isSigner:!1},{name:"userAToken",isMut:!0,isSigner:!1},{name:"userBToken",isMut:!0,isSigner:!1},{name:"user",isMut:!1,isSigner:!0},{name:"vaultProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"poolTokenAmount",type:"u64"},{name:"maximumTokenAAmount",type:"u64"},{name:"maximumTokenBAmount",type:"u64"}]},{name:"setPoolFees",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0}],args:[{name:"fees",type:{defined:"PoolFees"}}]},{name:"overrideCurveParam",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0}],args:[{name:"curveType",type:{defined:"CurveType"}}]},{name:"transferAdmin",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0},{name:"newAdmin",isMut:!1,isSigner:!0}],args:[]},{name:"setAdminFeeAccount",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"newAdminTokenAFee",isMut:!0,isSigner:!1},{name:"newAdminTokenBFee",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0}],args:[]},{name:"syncApy",accounts:[{name:"pool",isMut:!1,isSigner:!1},{name:"lpMint",isMut:!1,isSigner:!1},{name:"aVaultLp",isMut:!1,isSigner:!1},{name:"bVaultLp",isMut:!1,isSigner:!1},{name:"aVault",isMut:!1,isSigner:!1},{name:"bVault",isMut:!1,isSigner:!1},{name:"aVaultLpMint",isMut:!1,isSigner:!1},{name:"bVaultLpMint",isMut:!1,isSigner:!1},{name:"apy",isMut:!0,isSigner:!1}],args:[]},{name:"getPoolInfo",accounts:[{name:"pool",isMut:!1,isSigner:!1},{name:"lpMint",isMut:!1,isSigner:!1},{name:"aVaultLp",isMut:!1,isSigner:!1},{name:"bVaultLp",isMut:!1,isSigner:!1},{name:"aVault",isMut:!1,isSigner:!1},{name:"bVault",isMut:!1,isSigner:!1},{name:"aVaultLpMint",isMut:!1,isSigner:!1},{name:"bVaultLpMint",isMut:!1,isSigner:!1},{name:"apy",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"pool",type:{kind:"struct",fields:[{name:"lpMint",type:"publicKey"},{name:"tokenAMint",type:"publicKey"},{name:"tokenBMint",type:"publicKey"},{name:"aVault",type:"publicKey"},{name:"bVault",type:"publicKey"},{name:"aVaultLp",type:"publicKey"},{name:"bVaultLp",type:"publicKey"},{name:"aVaultLpBump",type:"u8"},{name:"enabled",type:"bool"},{name:"adminTokenAFee",type:"publicKey"},{name:"adminTokenBFee",type:"publicKey"},{name:"admin",type:"publicKey"},{name:"fees",type:{defined:"PoolFees"}},{name:"padding",type:{defined:"Padding"}},{name:"curveType",type:{defined:"CurveType"}}]}},{name:"apy",type:{kind:"struct",fields:[{name:"pool",type:"publicKey"},{name:"snapshot",type:{defined:"SnapShot"}}]}}],types:[{name:"TokenMultiplier",type:{kind:"struct",fields:[{name:"tokenAMultiplier",type:"u64"},{name:"tokenBMultiplier",type:"u64"},{name:"precisionFactor",type:"u8"}]}},{name:"PoolFees",type:{kind:"struct",fields:[{name:"tradeFeeNumerator",type:"u64"},{name:"tradeFeeDenominator",type:"u64"},{name:"ownerTradeFeeNumerator",type:"u64"},{name:"ownerTradeFeeDenominator",type:"u64"}]}},{name:"Depeg",type:{kind:"struct",fields:[{name:"baseVirtualPrice",type:"u64"},{name:"baseCacheUpdated",type:"u64"},{name:"depegType",type:{defined:"DepegType"}}]}},{name:"Padding",type:{kind:"struct",fields:[{name:"padding",type:{array:["u128",32]}}]}},{name:"VirtualPrice",type:{kind:"struct",fields:[{name:"price",type:"u64"},{name:"timestamp",type:"i64"}]}},{name:"SnapShot",type:{kind:"struct",fields:[{name:"pointer",type:"u64"},{name:"virtualPrices",type:{array:[{defined:"VirtualPrice"},28]}}]}},{name:"RoundDirection",type:{kind:"enum",variants:[{name:"Floor"},{name:"Ceiling"}]}},{name:"TradeDirection",type:{kind:"enum",variants:[{name:"AtoB"},{name:"BtoA"}]}},{name:"NewCurveType",type:{kind:"enum",variants:[{name:"ConstantProduct"},{name:"Stable",fields:[{name:"amp",type:"u64"},{name:"token_multiplier",type:{defined:"TokenMultiplier"}},{name:"depeg",type:{defined:"Depeg"}}]},{name:"NewCurve",fields:[{name:"field_one",type:"u64"},{name:"field_two",type:"u64"}]}]}},{name:"CurveType",type:{kind:"enum",variants:[{name:"ConstantProduct"},{name:"Stable",fields:[{name:"amp",type:"u64"},{name:"token_multiplier",type:{defined:"TokenMultiplier"}},{name:"depeg",type:{defined:"Depeg"}}]}]}},{name:"DepegType",type:{kind:"enum",variants:[{name:"None"},{name:"Marinade"},{name:"Lido"}]}}],events:[{name:"AddLiquidity",fields:[{name:"lpMintAmount",type:"u64",index:!1},{name:"tokenAAmount",type:"u64",index:!1},{name:"tokenBAmount",type:"u64",index:!1}]},{name:"RemoveLiquidity",fields:[{name:"lpUnmintAmount",type:"u64",index:!1},{name:"tokenAOutAmount",type:"u64",index:!1},{name:"tokenBOutAmount",type:"u64",index:!1}]},{name:"Swap",fields:[{name:"inAmount",type:"u64",index:!1},{name:"outAmount",type:"u64",index:!1},{name:"tradeFee",type:"u64",index:!1},{name:"adminFee",type:"u64",index:!1}]},{name:"SetPoolFees",fields:[{name:"tradeFeeNumerator",type:"u64",index:!1},{name:"tradeFeeDenominator",type:"u64",index:!1},{name:"ownerTradeFeeNumerator",type:"u64",index:!1},{name:"ownerTradeFeeDenominator",type:"u64",index:!1}]},{name:"PoolInfo",fields:[{name:"tokenAAmount",type:"u64",index:!1},{name:"tokenBAmount",type:"u64",index:!1},{name:"virtualPrice",type:"f64",index:!1},{name:"firstVirtualPrice",type:"f64",index:!1},{name:"firstTimestamp",type:"u64",index:!1},{name:"currentTimestamp",type:"u64",index:!1},{name:"apy",type:"f64",index:!1}]},{name:"TransferAdmin",fields:[{name:"admin",type:"publicKey",index:!1},{name:"newAdmin",type:"publicKey",index:!1}]},{name:"SetAdminFeeAccount",fields:[{name:"adminTokenAFee",type:"publicKey",index:!1},{name:"adminTokenBFee",type:"publicKey",index:!1},{name:"newAdminTokenAFee",type:"publicKey",index:!1},{name:"newAdminTokenBFee",type:"publicKey",index:!1}]}],errors:[{code:6e3,name:"MathOverflow",msg:"Math operation overflow"},{code:6001,name:"InvalidFee",msg:"Invalid fee setup"},{code:6002,name:"InvalidInvariant",msg:"Invalid invariant d"},{code:6003,name:"FeeCalculationFailure",msg:"Fee calculation failure"},{code:6004,name:"ExceededSlippage",msg:"Exceeded slippage tolerance"},{code:6005,name:"InvalidCalculation",msg:"Invalid curve calculation"},{code:6006,name:"ZeroTradingTokens",msg:"Given pool token amount results in zero trading tokens"},{code:6007,name:"ConversionError",msg:"Math conversion overflow"},{code:6008,name:"FaultyLpMint",msg:"LP mint authority must be 'A' vault lp, without freeze authority, and 0 supply"},{code:6009,name:"MismatchedTokenMint",msg:"Token mint mismatched"},{code:6010,name:"MismatchedLpMint",msg:"LP mint mismatched"},{code:6011,name:"MismatchedOwner",msg:"Invalid lp token owner"},{code:6012,name:"InvalidVaultAccount",msg:"Invalid vault account"},{code:6013,name:"InvalidVaultLpAccount",msg:"Invalid vault lp account"},{code:6014,name:"InvalidPoolLpMintAccount",msg:"Invalid pool lp mint account"},{code:6015,name:"PoolDisabled",msg:"Pool disabled"},{code:6016,name:"InvalidAdminAccount",msg:"Invalid admin account"},{code:6017,name:"InvalidAdminFeeAccount",msg:"Invalid admin fee account"},{code:6018,name:"SameAdminAccount",msg:"Same admin account"},{code:6019,name:"IdenticalSourceDestination",msg:"Identical user source and destination token account"},{code:6020,name:"ApyCalculationError",msg:"Apy calculation error"},{code:6021,name:"InsufficientSnapshot",msg:"Insufficient virtual price snapshot"},{code:6022,name:"NonUpdatableCurve",msg:"Current curve is non-updatable"},{code:6023,name:"MisMatchedCurve",msg:"New curve is mismatched with old curve"},{code:6024,name:"InvalidAmplification",msg:"Amplification is invalid"},{code:6025,name:"UnsupportedOperation",msg:"Operation is not supported"},{code:6026,name:"ExceedMaxAChanges",msg:"Exceed max amplification changes"},{code:6027,name:"InvalidRemainingAccountsLen",msg:"Invalid remaining accounts length"},{code:6028,name:"InvalidRemainingAccounts",msg:"Invalid remaining account"},{code:6029,name:"MismatchedDepegMint",msg:"Token mint B doesn't matches depeg type token mint"},{code:6030,name:"InvalidApyAccount",msg:"Invalid APY account"},{code:6031,name:"InvalidTokenMultiplier",msg:"Invalid token multiplier"},{code:6032,name:"InvalidDepegInformation",msg:"Invalid depeg information"}]},Kw,kk),tS=new Mr({version:"0.5.1",name:"vault",instructions:[{name:"initialize",accounts:[{name:"base",isMut:!1,isSigner:!0},{name:"vault",isMut:!0,isSigner:!1},{name:"admin",isMut:!0,isSigner:!0},{name:"tokenVault",isMut:!0,isSigner:!1},{name:"tokenMint",isMut:!1,isSigner:!1},{name:"feeVault",isMut:!1,isSigner:!1},{name:"lpMint",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[]},{name:"enableVault",accounts:[{name:"vault",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0}],args:[{name:"enabled",type:"u8"}]},{name:"setOperator",accounts:[{name:"vault",isMut:!0,isSigner:!1},{name:"operator",isMut:!1,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0}],args:[]},{name:"updateLockedProfitDegradation",accounts:[{name:"vault",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0}],args:[{name:"lockedProfitDegradation",type:"u64"}]},{name:"getUnlockedAmount",accounts:[{name:"vault",isMut:!1,isSigner:!1}],args:[]},{name:"transferAdmin",accounts:[{name:"vault",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0},{name:"newAdmin",isMut:!1,isSigner:!0}],args:[]},{name:"transferFeeVault",accounts:[{name:"vault",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0},{name:"newFeeVault",isMut:!1,isSigner:!1}],args:[]},{name:"initializeStrategy",accounts:[{name:"vault",isMut:!0,isSigner:!1},{name:"strategyProgram",isMut:!1,isSigner:!1},{name:"strategy",isMut:!0,isSigner:!1},{name:"reserve",isMut:!1,isSigner:!1},{name:"collateralVault",isMut:!0,isSigner:!1},{name:"collateralMint",isMut:!1,isSigner:!1},{name:"admin",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"bumps",type:{defined:"StrategyBumps"}},{name:"strategyType",type:{defined:"StrategyType"}}]},{name:"removeStrategy",accounts:[{name:"vault",isMut:!0,isSigner:!1},{name:"strategy",isMut:!0,isSigner:!1},{name:"strategyProgram",isMut:!1,isSigner:!1},{name:"collateralVault",isMut:!0,isSigner:!1},{name:"reserve",isMut:!0,isSigner:!1},{name:"tokenVault",isMut:!0,isSigner:!1},{name:"feeVault",isMut:!0,isSigner:!1},{name:"lpMint",isMut:!0,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0}],args:[]},{name:"addStrategy",accounts:[{name:"vault",isMut:!0,isSigner:!1},{name:"strategy",isMut:!1,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0}],args:[]},{name:"depositStrategy",accounts:[{name:"userInfo",isMut:!1,isSigner:!1},{name:"assetPoolSpl",isMut:!1,isSigner:!1},{name:"poolSummaries",isMut:!1,isSigner:!1},{name:"priceSummaries",isMut:!1,isSigner:!1},{name:"userInfoSignerPda",isMut:!1,isSigner:!1},{name:"basePda",isMut:!1,isSigner:!1},{name:"userPagesStats",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"withdrawStrategy",accounts:[{name:"userInfo",isMut:!1,isSigner:!1},{name:"assetPoolSpl",isMut:!1,isSigner:!1},{name:"poolSummaries",isMut:!1,isSigner:!1},{name:"priceSummaries",isMut:!1,isSigner:!1},{name:"userInfoSignerPda",isMut:!1,isSigner:!1},{name:"basePda",isMut:!1,isSigner:!1},{name:"userPagesStats",isMut:!1,isSigner:!1}],args:[{name:"amount",type:"u64"}]},{name:"claimRewards",accounts:[{name:"vault",isMut:!1,isSigner:!1},{name:"strategy",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"tokenRewardAcc",isMut:!0,isSigner:!1},{name:"operator",isMut:!1,isSigner:!0}],args:[]},{name:"deposit",accounts:[{name:"vault",isMut:!0,isSigner:!1},{name:"tokenVault",isMut:!0,isSigner:!1},{name:"lpMint",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userLp",isMut:!0,isSigner:!1},{name:"user",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"tokenAmount",type:"u64"},{name:"minimumLpTokenAmount",type:"u64"}]},{name:"withdraw",accounts:[{name:"vault",isMut:!0,isSigner:!1},{name:"tokenVault",isMut:!0,isSigner:!1},{name:"lpMint",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userLp",isMut:!0,isSigner:!1},{name:"user",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"unmintAmount",type:"u64"},{name:"minOutAmount",type:"u64"}]},{name:"withdrawDirectlyFromStrategy",accounts:[{name:"vault",isMut:!0,isSigner:!1},{name:"strategy",isMut:!0,isSigner:!1},{name:"reserve",isMut:!0,isSigner:!1},{name:"strategyProgram",isMut:!1,isSigner:!1},{name:"collateralVault",isMut:!0,isSigner:!1},{name:"tokenVault",isMut:!0,isSigner:!1},{name:"lpMint",isMut:!0,isSigner:!1},{name:"feeVault",isMut:!0,isSigner:!1},{name:"userToken",isMut:!0,isSigner:!1},{name:"userLp",isMut:!0,isSigner:!1},{name:"user",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"unmintAmount",type:"u64"},{name:"minOutAmount",type:"u64"}]}],accounts:[{name:"vault",type:{kind:"struct",fields:[{name:"enabled",type:"u8"},{name:"bumps",type:{defined:"VaultBumps"}},{name:"totalAmount",type:"u64"},{name:"tokenVault",type:"publicKey"},{name:"feeVault",type:"publicKey"},{name:"tokenMint",type:"publicKey"},{name:"lpMint",type:"publicKey"},{name:"strategies",type:{array:["publicKey",30]}},{name:"base",type:"publicKey"},{name:"admin",type:"publicKey"},{name:"operator",type:"publicKey"},{name:"lockedProfitTracker",type:{defined:"LockedProfitTracker"}}]}},{name:"strategy",type:{kind:"struct",fields:[{name:"reserve",type:"publicKey"},{name:"collateralVault",type:"publicKey"},{name:"strategyType",type:{defined:"StrategyType"}},{name:"currentLiquidity",type:"u64"},{name:"bumps",type:{array:["u8",10]}},{name:"vault",type:"publicKey"}]}}],types:[{name:"VaultBumps",type:{kind:"struct",fields:[{name:"vaultBump",type:"u8"},{name:"tokenVaultBump",type:"u8"}]}},{name:"StrategyBumps",type:{kind:"struct",fields:[{name:"strategyIndex",type:"u8"},{name:"otherBumps",type:{array:["u8",10]}}]}},{name:"LockedProfitTracker",type:{kind:"struct",fields:[{name:"lastUpdatedLockedProfit",type:"u64"},{name:"lastReport",type:"u64"},{name:"lockedProfitDegradation",type:"u64"}]}},{name:"StrategyType",type:{kind:"enum",variants:[{name:"PortFinanceWithoutLM"},{name:"PortFinanceWithLM"},{name:"SolendWithoutLM"},{name:"Mango"},{name:"SolendWithLM"},{name:"ApricotWithoutLM"},{name:"Francium"}]}}],events:[{name:"AddLiquidity",fields:[{name:"lpMintAmount",type:"u64",index:!1},{name:"tokenAmount",type:"u64",index:!1}]},{name:"RemoveLiquidity",fields:[{name:"lpUnmintAmount",type:"u64",index:!1},{name:"tokenAmount",type:"u64",index:!1}]},{name:"StrategyDeposit",fields:[{name:"strategyType",type:{defined:"StrategyType"},index:!1},{name:"tokenAmount",type:"u64",index:!1}]},{name:"StrategyWithdraw",fields:[{name:"strategyType",type:{defined:"StrategyType"},index:!1},{name:"collateralAmount",type:"u64",index:!1},{name:"estimatedTokenAmount",type:"u64",index:!1}]},{name:"ClaimReward",fields:[{name:"strategyType",type:{defined:"StrategyType"},index:!1},{name:"tokenAmount",type:"u64",index:!1},{name:"mintAccount",type:"publicKey",index:!1}]},{name:"PerformanceFee",fields:[{name:"lpMintMore",type:"u64",index:!1}]},{name:"ReportLoss",fields:[{name:"strategy",type:"publicKey",index:!1},{name:"loss",type:"u64",index:!1}]},{name:"TotalAmount",fields:[{name:"totalAmount",type:"u64",index:!1}]}],errors:[{code:6e3,name:"VaultIsDisabled",msg:"Vault is disabled"},{code:6001,name:"ExceededSlippage",msg:"Exceeded slippage tolerance"},{code:6002,name:"StrategyIsNotExisted",msg:"Strategy is not existed"},{code:6003,name:"UnAuthorized",msg:"UnAuthorized"},{code:6004,name:"MathOverflow",msg:"Math operation overflow"},{code:6005,name:"ProtocolIsNotSupported",msg:"Protocol is not supported"},{code:6006,name:"UnMatchReserve",msg:"Reserve does not support token mint"},{code:6007,name:"InvalidLockedProfitDegradation",msg:"lockedProfitDegradation is invalid"},{code:6008,name:"MaxStrategyReached",msg:"Maximum number of strategies have been reached"},{code:6009,name:"StrategyExisted",msg:"Strategy existed"},{code:6010,name:"InvalidUnmintAmount",msg:"Invalid unmint amount"},{code:6011,name:"InvalidAccountsForStrategy",msg:"Invalid accounts for strategy"},{code:6012,name:"InvalidBump",msg:"Invalid bump"},{code:6013,name:"AmountMustGreaterThanZero",msg:"Amount must be greater than 0"}]},Kw,kk),nS=e=>eS.coder.accounts.decode("pool",e.data),iS=e=>tS.coder.accounts.decode("vault",e.data);class rS{constructor(e,t,n){this.address=void 0,this.id=void 0,this.label="Meteora",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.poolState=void 0,this.data=void 0,this.depegAccount=void 0,this.depegAccounts=new Map,this.vaultLpMint=void 0,this.vaultToken=void 0,this.feePct=void 0,this.address=e,this.id=e.toBase58(),this.poolState=nS(t),this.vaultLpMint={a:new A.PublicKey(n.vaultLpMint.a),b:new A.PublicKey(n.vaultLpMint.b)},this.vaultToken={a:new A.PublicKey(n.vaultToken.a),b:new A.PublicKey(n.vaultToken.b)},n.depegAccount&&(this.depegAccount={...n.depegAccount,pubkey:new A.PublicKey(n.depegAccount.pubkey),data:Ib.from(n.depegAccount.data[0],n.depegAccount.data[1]),owner:new A.PublicKey(n.depegAccount.owner)},this.depegAccounts=new Map([[this.depegAccount.pubkey.toBase58(),this.depegAccount]]));const{ownerTradeFeeDenominator:i,ownerTradeFeeNumerator:r,tradeFeeDenominator:o,tradeFeeNumerator:s}=this.poolState.fees;this.feePct=new zr.Z(r.toString()).div(i.toString()).add(new zr.Z(s.toString()).div(o.toString())).toNumber()}getAccountsForUpdate(){var e;const t=[this.poolState.aVault,this.poolState.bVault,this.poolState.aVaultLp,this.poolState.bVaultLp,this.poolState.lpMint,this.vaultLpMint.a,this.vaultLpMint.b,this.vaultToken.a,this.vaultToken.b,A.SYSVAR_CLOCK_PUBKEY];return null!==(e=this.depegAccount)&&void 0!==e&&e.pubkey&&t.push(this.depegAccount.pubkey),t}update(e){const[t,n,i,r,o,A,s,a,c,u,l]=vb(e,this.getAccountsForUpdate());l&&this.depegAccount&&(this.depegAccount.data=l.data),this.data={vaultA:iS(t),vaultB:iS(n),poolAVaultLpAmount:Tv(i),poolBVaultLpAmount:Tv(r),poolLpTotalSupply:Pv(o),vaultALpTotalSupply:Pv(A),vaultBLpTotalSupply:Pv(s),vaultAReserve:Tv(a),vaultBReserve:Tv(c),currentTime:new I.BN(u.data.readBigInt64LE(32).toString()).toNumber()}}getQuote({sourceMint:e,destinationMint:t,amount:n}){if(void 0===this.data)throw new Error("Unable to fetch accounts.");const i=((e,t,n)=>{const{vaultA:i,vaultB:r,vaultALpSupply:o,vaultBLpSupply:A,poolState:s,poolVaultALp:a,poolVaultBLp:c,currentTime:u,depegAccounts:l,vaultAReserve:g,vaultBReserve:d}=n,{tokenAMint:h,tokenBMint:p}=s;let f;if(Yg()(e.equals(h)||e.equals(p),Lw),"stable"in s.curveType){const{amp:e,depeg:t,tokenMultiplier:n}=s.curveType.stable;f=new nE(e.toNumber(),n,t,l,new(y())(u))}else f=new cE;const m=Dw(u,i),I=Dw(u,r),B=Sw(a,m,o),C=Sw(c,I,A),w=e.equals(h),[E,Q,b,k,v,S,M,D]=w?[t,B,C,i,r,o,A,rE.AToB]:[t,C,B,r,i,A,o,rE.BToA],N=((e,t)=>{const{ownerTradeFeeDenominator:n,ownerTradeFeeNumerator:i}=t.fees;return e.mul(i).div(n)})(E,s),T=((e,t)=>{const{tradeFeeDenominator:n,tradeFeeNumerator:i}=t.fees;return e.mul(i).div(n)})(E,s),P=Dw(u,k);let O=Sw(Mw(E.sub(N),P,S),P,S).sub(T);const{outAmount:F,priceImpact:R}=f.computeOutAmount(O,Q,b,D),G=Dw(u,v);let x=Sw(Mw(F,G,M),G,M);const U=((e,t,n,i,r,o,A)=>{Yg()(e.equals(t)||e.equals(n),Lw);const[s,a]=e.equals(t)?[i,o]:[r,A];return s.gt(a)?a:s})(D==rE.AToB?p:h,h,p,B,C,g,d);return Yg()(x.lt(U),"Out amount > vault reserve"),{amountOut:x,fee:N.add(T),priceImpact:R}})(e,new I.BN(n.toString()),{currentTime:this.data.currentTime,depegAccounts:this.depegAccounts,poolState:this.poolState,poolVaultALp:this.data.poolAVaultLpAmount,poolVaultBLp:this.data.poolBVaultLpAmount,vaultA:this.data.vaultA,vaultALpSupply:this.data.vaultALpTotalSupply,vaultB:this.data.vaultB,vaultBLpSupply:this.data.vaultBLpTotalSupply,vaultAReserve:this.data.vaultAReserve,vaultBReserve:this.data.vaultBReserve});return{notEnoughLiquidity:!1,inAmount:n,outAmount:b().BigInt(i.amountOut.toString()),feeAmount:b().BigInt(i.fee.toString()),feeMint:t.toBase58(),feePct:this.feePct,priceImpactPct:0}}getSwapLegAndAccounts(e){var t,n;if(void 0===this.data)throw new Error("Unable to fetch accounts.");const i=e.sourceMint.equals(this.poolState.tokenAMint)?this.poolState.adminTokenAFee:this.poolState.adminTokenBFee;return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i}){const r=[];return r.push(e.referrer?{pubkey:e.referrer,isSigner:!1,isWritable:!0}:iv),r.push(e.depeg?{pubkey:e.depeg,isSigner:!1,isWritable:!1}:iv),[Hk({meteora:{}}),nv.instruction.meteoraSwap({accounts:{swapProgram:sk,pool:e.pool,userSourceToken:t,userDestinationToken:n,aVault:e.aVault,bVault:e.bVault,aTokenVault:e.aTokenVault,bTokenVault:e.bTokenVault,aVaultLpMint:e.aVaultLpMint,bVaultLpMint:e.bVaultLpMint,aVaultLp:e.aVaultLp,bVaultLp:e.bVaultLp,adminTokenFee:e.adminTokenFee,user:i,vaultProgram:ak,tokenProgram:B.TOKEN_PROGRAM_ID},remainingAccounts:r}).keys]}({additionalArgs:{pool:this.address,aVault:this.poolState.aVault,bVault:this.poolState.bVault,aTokenVault:this.vaultToken.a,bTokenVault:this.vaultToken.b,aVaultLpMint:this.vaultLpMint.a,bVaultLpMint:this.vaultLpMint.b,aVaultLp:this.poolState.aVaultLp,bVaultLp:this.poolState.bVaultLp,adminTokenFee:i,referrer:null===(t=e.quoteMintToReferrer)||void 0===t?void 0:t.get(e.sourceMint.toBase58()),depeg:null===(n=this.depegAccount)||void 0===n?void 0:n.pubkey},...e})}get reserveTokenMints(){return[this.poolState.tokenAMint,this.poolState.tokenBMint]}}rS.accountInfoToMeteoraSwapLayout=nS,rS.accountInfoToVaultLayout=iS;const oS=(0,u.struct)([(0,u.nu64)("status"),(0,u.nu64)("nonce"),(0,u.nu64)("orderNum"),(0,u.nu64)("depth"),(0,u.nu64)("coinDecimals"),(0,u.nu64)("pcDecimals"),(0,u.nu64)("state"),(0,u.nu64)("resetFlag"),(0,u.nu64)("minSize"),(0,u.nu64)("volMaxCutRatio"),(0,u.nu64)("amountWaveRatio"),(0,u.nu64)("coinLotSize"),(0,u.nu64)("pcLotSize"),(0,u.nu64)("minPriceMultiplier"),(0,u.nu64)("maxPriceMultiplier"),(0,u.nu64)("systemDecimalsValue"),(0,u.nu64)("minSeparateNumerator"),(0,u.nu64)("minSeparateDenominator"),(0,u.nu64)("tradeFeeNumerator"),(0,u.nu64)("tradeFeeDenominator"),(0,u.nu64)("pnlNumerator"),(0,u.nu64)("pnlDenominator"),(0,u.nu64)("swapFeeNumerator"),(0,u.nu64)("swapFeeDenominator"),(0,u.nu64)("needTakePnlCoin"),(0,u.nu64)("needTakePnlPc"),(0,u.nu64)("totalPnlPc"),(0,u.nu64)("totalPnlCoin"),Nk("poolTotalDepositPc"),Nk("poolTotalDepositCoin"),Nk("swapCoinInAmount"),Nk("swapPcOutAmount"),(0,u.nu64)("swapCoin2PcFee"),Nk("swapPcInAmount"),Nk("swapCoinOutAmount"),(0,u.nu64)("swapPc2CoinFee"),Sk("poolCoinTokenAccount"),Sk("poolPcTokenAccount"),Sk("coinMintAddress"),Sk("pcMintAddress"),Sk("lpMintAddress"),Sk("ammOpenOrders"),Sk("serumMarket"),Sk("serumProgramId"),Sk("ammTargetOrders"),Sk("poolWithdrawQueue"),Sk("poolTempLpTokenAccount"),Sk("ammOwner"),Sk("pnlOwner")]);class AS{constructor(e,t,n){this.ammId=void 0,this.id=void 0,this.label="Raydium",this.shouldPrefetch=!1,this.exactOutputSupported=!0,this.hasDynamicAccounts=!1,this.coinMint=void 0,this.pcMint=void 0,this.status=void 0,this.serumProgramId=void 0,this.serumMarket=void 0,this.ammOpenOrders=void 0,this.ammTargetOrders=void 0,this.poolCoinTokenAccount=void 0,this.poolPcTokenAccount=void 0,this.serumMarketKeys=void 0,this.coinReserve=void 0,this.pcReserve=void 0,this.feePct=void 0,this.calculator=void 0,this.ammId=e,this.id=e.toBase58();const i=oS.decode(t.data);this.status=i.status,this.coinMint=new A.PublicKey(i.coinMintAddress),this.pcMint=new A.PublicKey(i.pcMintAddress),this.poolCoinTokenAccount=new A.PublicKey(i.poolCoinTokenAccount),this.poolPcTokenAccount=new A.PublicKey(i.poolPcTokenAccount),this.serumProgramId=new A.PublicKey(i.serumProgramId),this.serumMarket=new A.PublicKey(i.serumMarket),this.ammOpenOrders=new A.PublicKey(i.ammOpenOrders),this.ammTargetOrders=new A.PublicKey(i.ammTargetOrders),this.serumMarketKeys=Object.keys(n).reduce(((e,t)=>{if(!n[t])throw new Error(`Could not find ${t} in params`);return e[t]=new A.PublicKey(n[t]),e}),{});const r=i.swapFeeNumerator,o=i.swapFeeDenominator;this.feePct=new zr.Z(r.toString()).div(o.toString()),this.calculator=new We.TokenSwapConstantProduct(new We.Fraction(b().BigInt(r),b().BigInt(o)),We.ZERO_FRACTION)}static decodeSerumMarketKeysString(e,t,n,i){if(!t.equals(yk))return{serumBids:e.toBase58(),serumAsks:e.toBase58(),serumEventQueue:e.toBase58(),serumCoinVaultAccount:e.toBase58(),serumPcVaultAccount:e.toBase58(),serumVaultSigner:e.toBase58()};const r=c.Market.getLayout(t).decode(i.data),o=Tk([n.toBuffer(),r.vaultSignerNonce.toArrayLike(Ib,"le",8)],t);return{serumBids:r.bids.toBase58(),serumAsks:r.asks.toBase58(),serumEventQueue:r.eventQueue.toBase58(),serumCoinVaultAccount:r.baseVault.toBase58(),serumPcVaultAccount:r.quoteVault.toBase58(),serumVaultSigner:o.toBase58()}}getAccountsForUpdate(){return[this.ammId,this.poolCoinTokenAccount,this.poolPcTokenAccount,this.ammOpenOrders]}update(e){const[t,n,i,r]=vb(e,this.getAccountsForUpdate()),[o,A]=[Tv(n),Tv(i)],s=c.OpenOrders.fromAccountInfo(this.ammOpenOrders,r,r.owner),a=oS.decode(t.data);this.coinReserve=b().BigInt(o.add(s.baseTokenTotal).sub(new B.u64(String(a.needTakePnlCoin)))),this.pcReserve=b().BigInt(A.add(s.quoteTokenTotal).sub(new B.u64(String(a.needTakePnlPc))))}getQuoteInternal({amount:e,sourceMint:t,coinReserve:n,pcReserve:i,swapMode:r}){const o=this.coinMint.equals(t)?1:0;if(r==kb.ExactIn){const t=this.calculator.exchange([n,i],e,o);return{inAmount:e,outAmount:t.expectedOutputAmount,feeAmount:t.fees,priceImpactPct:t.priceImpact.toNumber()}}{const t=this.calculator.exchangeForExactOutput([n,i],e,o);return{inAmount:t.expectedInputAmount,outAmount:e,feeAmount:t.fees,priceImpactPct:t.priceImpact.toNumber()}}}getQuote({sourceMint:e,amount:t,swapMode:n}){const{coinReserve:i,pcReserve:r}=this;if(!this.isTradable)throw new Error("Pool is not tradable");if(!i||!r)throw new Error("Pool token accounts balances not refreshed or empty");return{...this.getQuoteInternal({amount:t,sourceMint:e,coinReserve:i,pcReserve:r,swapMode:n}),notEnoughLiquidity:!1,feeMint:e.toBase58(),feePct:this.feePct.toNumber()}}getSwapLegAndAccounts(e){return function({raydiumAmm:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i}){return[Hk({raydium:{}}),nv.instruction.raydiumSwap({accounts:sv(e,t,n,i)}).keys]}({raydiumAmm:this,...e})}createExactOutSwapInstruction(e){return function({raydiumAmm:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i,outAmount:r,inAmount:o,slippageBps:A,platformFee:s,overflowFeeAccount:a}){var c;return nv.instruction.raydiumSwapExactOutput(r,{amount:o,slippageBps:A},null!==(c=null==s?void 0:s.feeBps)&&void 0!==c?c:0,{accounts:sv(e,t,n,i),remainingAccounts:uv(null==s?void 0:s.feeAccount,a)})}({raydiumAmm:this,...e,outAmount:new(y())(e.amount.toString()),inAmount:new(y())(e.inAmount.toString())})}get reserveTokenMints(){return[this.coinMint,this.pcMint]}get isTradable(){return 1===this.status||6===this.status}}const sS=new Mr({version:"0.0.1",name:"add_decimals",instructions:[],accounts:[{name:"wrappedToken",type:{kind:"struct",fields:[{name:"decimals",type:"u8"},{name:"multiplier",type:"u64"},{name:"wrappedUnderlyingMint",type:"publicKey"},{name:"wrappedUnderlyingTokens",type:"publicKey"},{name:"wrapperMint",type:"publicKey"},{name:"nonce",type:"u8"}]}}],errors:[]},_b,kk);class aS{constructor(e,t){this.address=void 0,this.accountInfo=void 0,this.id=void 0,this.label="Saber (Decimals)",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.wrappedToken=void 0,this.multiplierJsbi=void 0,this.address=e,this.accountInfo=t,this.id=e.toBase58(),this.wrappedToken=sS.coder.accounts.decode("wrappedToken",t.data),this.multiplierJsbi=b().BigInt(this.wrappedToken.multiplier)}getAccountsForUpdate(){return new Array}update(e){}toWrappedAmount(e){return b().multiply(this.multiplierJsbi,e)}toUnderlyingAmount(e){return b().divide(e,this.multiplierJsbi)}getAmounts(e,t){if(t)return[e,this.toWrappedAmount(e)];{const t=this.toUnderlyingAmount(e);return[this.toWrappedAmount(t),t]}}getQuote({sourceMint:e,amount:t}){const n=this.wrappedToken.wrappedUnderlyingMint.equals(e),[i,r]=this.getAmounts(t,n);return{notEnoughLiquidity:!1,inAmount:i,outAmount:r,feeAmount:We.ZERO,feeMint:e.toBase58(),feePct:0,priceImpactPct:0}}getSwapLegAndAccounts(e){return function({wrapper:e,wrappedToken:t,userSourceTokenAccount:n,userDestinationTokenAccount:i,userTransferAuthority:r,deposit:o}){return[Hk(o?{saberAddDecimalsDeposit:{}}:{saberAddDecimalsWithdraw:{}}),nv.instruction.saberAddDecimals({accounts:{addDecimalsProgram:_b,wrapper:e,wrapperMint:t.wrapperMint,wrapperUnderlyingTokens:t.wrappedUnderlyingTokens,owner:r,userUnderlyingTokens:o?n:i,userWrappedTokens:o?i:n,tokenProgram:B.TOKEN_PROGRAM_ID}}).keys]}({wrapper:this.address,wrappedToken:this.wrappedToken,...e,deposit:this.wrappedToken.wrappedUnderlyingMint.equals(e.sourceMint)})}get reserveTokenMints(){return[this.wrappedToken.wrappedUnderlyingMint,this.wrappedToken.wrapperMint]}get wrapperMint(){return this.wrappedToken.wrapperMint}}class cS{constructor(e){this.stableSwap=void 0,this.id=void 0,this.label="Saber",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.tokenReserveAmounts=void 0,this.calculator=void 0,this.stableSwap=e,this.id=e.config.swapAccount.toBase58(),this.calculator=new We.Stable(We.TWO,je(this.stableSwap.state),[We.ONE,We.ONE],new We.Fraction(this.stableSwap.state.fees.trade.numerator,this.stableSwap.state.fees.trade.denominator))}getAccountsForUpdate(){return[this.stableSwap.state.tokenA.reserve,this.stableSwap.state.tokenB.reserve]}update(e){const t=vb(e,this.getAccountsForUpdate());this.tokenReserveAmounts=Sb(t)}getQuote({sourceMint:e,destinationMint:t,amount:n}){if(this.stableSwap.state.isPaused)throw new Error("Saber pool is paused");if(!this.tokenReserveAmounts)throw new Error("Missing tokenReserveAmounts");const i=new zr.Z(this.stableSwap.state.fees.trade.asFraction.toFixed(4)),[r,o]=this.stableSwap.state.tokenA.mint.equals(e)?[0,1]:[1,0];this.calculator.setAmp(je(this.stableSwap.state));const A=this.calculator.exchange(this.tokenReserveAmounts,n,r,o);return{notEnoughLiquidity:!1,inAmount:n,outAmount:A.expectedOutputAmount,feeAmount:A.fees,feeMint:t.toBase58(),feePct:i.toNumber(),priceImpactPct:A.priceImpact.toNumber()}}getSwapLegAndAccounts(e){return function({stableSwap:e,sourceMint:t,userSourceTokenAccount:n,userDestinationTokenAccount:i,userTransferAuthority:r}){return[Hk({saber:{}}),nv.instruction.saberSwap({accounts:cv(e,t,n,i,r)}).keys]}({stableSwap:this.stableSwap,...e})}get reserveTokenMints(){return[this.stableSwap.state.tokenA.mint,this.stableSwap.state.tokenB.mint]}}const uS=(0,u.struct)([(0,u.blob)(8,"discriminator"),Sk("factory"),(0,u.u8)("bump"),Dk("index"),Sk("admin"),Sk("token0Reserves"),Sk("token0Mint"),Sk("token0Fees"),Sk("token1Reserves"),Sk("token1Mint"),Sk("token1Fees"),(0,u.u8)("isPaused"),Sk("poolMint"),Dk("tradeFeeKbps"),Dk("withdrawFeeKbps"),Dk("adminTradeFeeKbps"),Dk("adminWithdrawFeeKbps")]);class lS{constructor(e,t){this.id=void 0,this.label="Sencha",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.poolState=void 0,this.calculator=void 0,this.tokenReserveAmounts=void 0,this.id=e.toBase58(),this.poolState=((e,t)=>{const n=t.owner,i=uS.decode(t.data);return{programId:n,isPaused:Boolean(i.isPaused),bump:i.bump,ammId:e,token0Reserves:i.token0Reserves,token1Reserves:i.token1Reserves,token0Mint:i.token0Mint,token1Mint:i.token1Mint,token0Fees:i.token0Fees,token1Fees:i.token1Fees,poolMint:i.poolMint,tradeFeeKbps:i.tradeFeeKbps.toNumber()}})(e,t),this.calculator=new We.TokenSwapConstantProduct(new We.Fraction(b().BigInt(this.poolState.tradeFeeKbps),b().BigInt(1e7)),new We.Fraction(We.ZERO,We.ZERO),!1)}get isPaused(){return this.poolState.isPaused}getAccountsForUpdate(){return[this.poolState.token0Reserves,this.poolState.token1Reserves]}update(e){const t=vb(e,this.getAccountsForUpdate());this.tokenReserveAmounts=Sb(t)}getQuote({sourceMint:e,amount:t}){if(this.isPaused)throw new Error("Sencha pool is paused");if(!this.tokenReserveAmounts)throw new Error("Missing tokenReserveAmounts");const n=this.poolState.token0Mint.equals(e)?1:0;let i=this.calculator.exchange(this.tokenReserveAmounts,t,n),r=this.poolState.tradeFeeKbps/1e7;return{notEnoughLiquidity:!1,inAmount:t,outAmount:i.expectedOutputAmount,feeAmount:i.fees,feeMint:e.toBase58(),feePct:r,priceImpactPct:i.priceImpact.toNumber()}}getSwapLegAndAccounts(e){return function({poolState:e,sourceMint:t,userSourceTokenAccount:n,userDestinationTokenAccount:i,userTransferAuthority:r}){const[o,A]=t.equals(e.token0Mint)?[e.token0Reserves,e.token1Reserves]:[e.token1Reserves,e.token0Reserves],[s,a]=t.equals(e.token0Mint)?[e.token0Fees,e.token1Fees]:[e.token1Fees,e.token0Fees];return[Hk({sencha:{}}),nv.instruction.senchaSwap({accounts:{swapProgram:e.programId,tokenProgram:B.TOKEN_PROGRAM_ID,swap:e.ammId,userAuthority:r,inputUserAccount:n,inputTokenAccount:o,inputFeesAccount:s,outputUserAccount:i,outputTokenAccount:A,outputFeesAccount:a}}).keys]}({poolState:this.poolState,...e})}get reserveTokenMints(){return[this.poolState.token0Mint,this.poolState.token1Mint]}}const gS=["77quYg4MGneUdjgXCunt9GgM1usmrxKY31twEy3WHwcS","5cLrMai1DsLRYc1Nio9qMTicsWtvzjzZfJPXyAoF4t1Z","EERNEEnBqdGzBS8dd46wwNY5F2kwnaCQ3vsq2fNKGogZ","8sFf9TW3KzxLiBXcDcjAxqabEsRroo4EiRr3UG1xbJ9m","2iDSTGhjJEiRxNaLF27CY6daMYPs5hgYrP2REHd5YD62"],dS=["B2na8Awyd7cpC59iEU43FagJAPLigr3AP3s38KM982bu"];function*hS(e){const t=e.isBids;for(const{key:n,quantity:i}of e.slab.items(t)){const e=b().BigInt(n.ushrn(64).toString());yield[e,b().BigInt(i.toString())]}}function pS(e,t){const n=e._decoded.baseLotSize;return n.isZero()?new zr.Z(0):function(e,t){const n=new zr.Z(e.div(t).toString()),i=e.umod(t),r=i.gcd(t);return n.add(new zr.Z(i.div(r).toString()).div(new zr.Z(t.div(r).toString())))}(t.mul(e._decoded.quoteLotSize).mul(e._baseSplTokenMultiplier),n.mul(e._quoteSplTokenMultiplier))}class fS{constructor(e){this.market=void 0,this.id=void 0,this.label=void 0,this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this._orderbooks=void 0,this.isOpenbook=void 0,this.market=e,this.id=e.address.toBase58(),this.isOpenbook=e.programId.equals(yk),this.label=this.isOpenbook?"Openbook":"Serum"}get orderbooks(){return this._orderbooks}getAccountsForUpdate(){return[this.market.asksAddress,this.market.bidsAddress]}update(e){const[t,n]=vb(e,this.getAccountsForUpdate()),i=c.Orderbook.decode(this.market,t.data),r=c.Orderbook.decode(this.market,n.data);this._orderbooks={asks:i,bids:r}}getQuote({sourceMint:e,destinationMint:t,amount:n}){if(!this.orderbooks)throw new Error("Failed to find orderbooks");const i=function({market:e,asks:t,bids:n,fromAmount:i,fromMint:r,toMint:o,isOpenbook:A}){const s=A?dS.includes(e.address.toBase58())?1e-4:4e-4:gS.includes(e.address.toBase58())?1e-4:4e-4;return r.equals(e.quoteMintAddress)&&o.equals(e.baseMintAddress)?function(e,t,n,i){let r=We.ZERO,o=We.ZERO,A=We.ZERO,s=We.ZERO,a=We.ZERO;const c=e.quoteSizeLotsToNumber(new(y())(1));let u=c?b().BigInt(new zr.Z(n.toString()).div(1+i).div(c).floor()):We.ZERO;const l=b().BigInt(e.baseSizeLotsToNumber(new(y())(1)).toString());for(let[e,n]of hS(t)){b().equal(o,We.ZERO)&&(o=e),A=e;const t=b().multiply(n,l),i=b().multiply(n,e);if(a=b().add(a,t),b().greaterThanOrEqual(i,u)){const t=b().divide(u,e);s=b().add(s,b().multiply(e,t)),r=b().add(r,b().multiply(l,t)),u=We.ZERO;break}s=b().add(s,b().multiply(e,n)),r=b().add(r,t),u=b().subtract(u,i)}let g=0;if(b().notEqual(o,We.ZERO)){const e=new zr.Z(o.toString());g=new zr.Z(A.toString()).sub(e).div(e).toNumber()}const d=pS(e,new(y())(o.toString())),h=pS(e,new(y())(s.toString())),p=h.mul(l.toString()).ceil(),f=h.mul(l.toString()).mul(i).ceil();return{side:"buy",notEnoughLiquidity:b().lessThanOrEqual(a,r),minimum:{in:b().BigInt(d.mul(l.toString()).mul(1+i).ceil()),out:l},inAmount:b().BigInt(p.add(f)),outAmount:r,feeAmount:b().BigInt(f),priceImpactPct:g,feePct:i}}(e,t,i,s):function(e,t,n,i){let r=b().BigInt(0),o=b().BigInt(0),A=b().BigInt(0),s=b().BigInt(0),a=n,c=b().BigInt(0);const u=b().BigInt(e.baseSizeLotsToNumber(new(y())(1))),l=b().BigInt(e.quoteSizeLotsToNumber(new(y())(1)));for(const[e,n]of hS(t)){b().equal(o,We.ZERO)&&(o=e),A=e;const t=b().multiply(u,n),i=b().multiply(n,b().multiply(e,l));if(s=b().add(s,t),b().greaterThanOrEqual(t,a)){const t=b().divide(a,u),n=b().multiply(t,e);r=b().add(r,b().multiply(n,l)),a=b().subtract(a,n),c=b().add(c,b().multiply(t,u));break}r=b().add(r,i),a=b().subtract(a,t),c=b().add(c,t)}let g=new zr.Z(r.toString()).mul(1-i).floor(),d=0;const h=pS(e,new(y())(o.toString()));if(b().notEqual(o,We.ZERO)){const t=pS(e,new(y())(A.toString()));d=h.minus(t).div(h).toNumber()}return{side:"sell",notEnoughLiquidity:b().greaterThan(b().BigInt(n),s),minimum:{in:u,out:b().BigInt(h.mul(b().toNumber(u)).mul(1-i).floor().toString())},inAmount:c,outAmount:b().BigInt(g),feeAmount:b().BigInt(new zr.Z(r.toString()).mul(i).round()),priceImpactPct:d,feePct:i}}(e,n,i,s)}({market:this.market,asks:this.orderbooks.asks,bids:this.orderbooks.bids,fromMint:e,toMint:t,fromAmount:n,isOpenbook:this.isOpenbook});return{notEnoughLiquidity:i.notEnoughLiquidity,minInAmount:i.minimum.in,minOutAmount:i.minimum.out,inAmount:i.inAmount,outAmount:i.outAmount,feeAmount:i.feeAmount,feeMint:this.market.quoteMintAddress.toBase58(),feePct:i.feePct,priceImpactPct:i.priceImpactPct}}getSwapLegAndAccounts(e){var t;if(!e.openOrdersAddress)throw new Error("Missing open orders");return function({market:e,sourceMint:t,openOrdersAddress:n,userSourceTokenAccount:i,userDestinationTokenAccount:r,userTransferAuthority:o,referrer:A,isOpenbook:s}){const{side:a,coinWallet:c,pcWallet:u}=t.equals(e.baseMintAddress)?{side:Gk.Ask,coinWallet:i,pcWallet:r}:{side:Gk.Bid,coinWallet:r,pcWallet:i};return[Hk(s?Jk(a):xk(a)),nv.instruction.serumSwap({accounts:av(e,n,i,c,u,o),remainingAccounts:A?[{pubkey:A,isSigner:!1,isWritable:!0}]:[iv]}).keys]}({market:this.market,openOrdersAddress:e.openOrdersAddress,referrer:null==e||null===(t=e.quoteMintToReferrer)||void 0===t?void 0:t.get(this.market.quoteMintAddress.toBase58()),isOpenbook:this.isOpenbook,...e})}get reserveTokenMints(){return[this.market.baseMintAddress,this.market.quoteMintAddress]}}fS.getL2=hS;const mS=(0,u.struct)([(0,u.u8)("version"),(0,u.u8)("isInitialized"),(0,u.u8)("bumpSeed"),Sk("tokenProgramId"),Sk("tokenAccountA"),Sk("tokenAccountB"),Sk("tokenPool"),Sk("mintA"),Sk("mintB"),Sk("feeAccount"),Dk("tradeFeeNumerator"),Dk("tradeFeeDenominator"),Dk("ownerTradeFeeNumerator"),Dk("ownerTradeFeeDenominator"),Dk("ownerWithdrawFeeNumerator"),Dk("ownerWithdrawFeeDenominator"),Dk("hostFeeNumerator"),Dk("hostFeeDenominator"),(0,u.u8)("curveType"),(0,u.blob)(32,"curveParameters")]),IS=(0,u.struct)([(0,u.u8)("version"),(0,u.u8)("isInitialized"),(0,u.u8)("bumpSeed"),Sk("tokenProgramId"),Sk("tokenAccountA"),Sk("tokenAccountB"),Sk("tokenPool"),Sk("mintA"),Sk("mintB"),Sk("feeAccount"),Dk("tradeFeeNumerator"),Dk("tradeFeeDenominator"),Dk("ownerTradeFeeNumerator"),Dk("ownerTradeFeeDenominator"),Dk("ownerWithdrawFeeNumerator"),Dk("ownerWithdrawFeeDenominator"),(0,u.u8)("curveType"),(0,u.blob)(32,"curveParameters"),(0,u.u8)("poolNonce")]);var yS;!function(e){e[e.ConstantProduct=0]="ConstantProduct",e[e.Stable=2]="Stable"}(yS||(yS={}));class BS{constructor(e,t,n){if(this.label=void 0,this.id=void 0,this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.tokenSwapState=void 0,this.curveType=void 0,this.feePct=void 0,this.tokenReserveAmounts=void 0,this.calculator=void 0,this.label=n,this.id=e.toBase58(),this.tokenSwapState=function(e,t){const n=t.owner,i=n.equals(rk)?IS.decode(t.data):mS.decode(t.data);if(!i.isInitialized)throw new Error("Invalid token swap state");const r=Tk([e.toBuffer(),Ib.from([i.bumpSeed])],n),o=new A.PublicKey(i.tokenPool),s=new A.PublicKey(i.feeAccount),a=new A.PublicKey(i.tokenAccountA),c=new A.PublicKey(i.tokenAccountB),u=new A.PublicKey(i.mintA),l=new A.PublicKey(i.mintB);return{address:e,programId:n,tokenProgramId:new A.PublicKey(i.tokenProgramId),poolToken:o,feeAccount:s,authority:r,tokenAccountA:a,tokenAccountB:c,mintA:u,mintB:l,tradeFeeNumerator:i.tradeFeeNumerator,tradeFeeDenominator:i.tradeFeeDenominator,ownerTradeFeeNumerator:i.ownerTradeFeeNumerator,ownerTradeFeeDenominator:i.ownerTradeFeeDenominator,ownerWithdrawFeeNumerator:i.ownerWithdrawFeeNumerator,ownerWithdrawFeeDenominator:i.ownerWithdrawFeeDenominator,curveType:i.curveType,curveParameters:i.curveParameters,poolNonce:"poolNonce"in i?i.poolNonce:void 0}}(e,t),this.curveType=this.tokenSwapState.curveType,!(this.curveType in yS))throw new Error(`curveType ${this.tokenSwapState.curveType} is not supported`);const i=BS.getFeeFraction(this.tokenSwapState.tradeFeeNumerator,this.tokenSwapState.tradeFeeDenominator),r=BS.getFeeFraction(this.tokenSwapState.ownerTradeFeeNumerator,this.tokenSwapState.ownerTradeFeeDenominator);this.calculator=this.tokenSwapState.curveType===yS.ConstantProduct?new We.TokenSwapConstantProduct(i,r):new We.TokenSwapStable(b().BigInt(this.tokenSwapState.curveParameters[0]),i,r),this.feePct=BS.getFeeDecimal(this.tokenSwapState.tradeFeeNumerator,this.tokenSwapState.tradeFeeDenominator).add(BS.getFeeDecimal(this.tokenSwapState.ownerTradeFeeNumerator,this.tokenSwapState.ownerTradeFeeDenominator)).toNumber()}static getFeeFraction(e,t){return new We.Fraction(b().BigInt(e.toString()),b().BigInt(t.toString()))}static getFeeDecimal(e,t){return e.eq(new B.u64(0))?new zr.Z(0):new zr.Z(e.toString()).div(t.toString())}getAccountsForUpdate(){return[this.tokenSwapState.tokenAccountA,this.tokenSwapState.tokenAccountB]}update(e){const t=vb(e,this.getAccountsForUpdate());this.tokenReserveAmounts=Sb(t)}getQuote({sourceMint:e,amount:t}){if(!this.tokenReserveAmounts)throw new Error("Missing tokenReserveAmounts");const n=this.reserveTokenMints[0].equals(e)?1:0,i=this.calculator.exchange(this.tokenReserveAmounts,t,n);return{notEnoughLiquidity:!1,inAmount:t,outAmount:i.expectedOutputAmount,feeAmount:i.fees,feeMint:e.toBase58(),feePct:this.feePct,priceImpactPct:i.priceImpact.toNumber()}}getSwapLegAndAccounts(e){return function({tokenSwapState:e,sourceMint:t,userSourceTokenAccount:n,userDestinationTokenAccount:i,userTransferAuthority:r,isStep:o}){const[A,s]=t.equals(e.mintA)?[e.tokenAccountA,e.tokenAccountB]:[e.tokenAccountB,e.tokenAccountA];return[Hk(o?{step:{}}:{tokenSwap:{}}),(o?nv.instruction.stepSwap:nv.instruction.tokenSwap)({accounts:{tokenSwapProgram:e.programId,tokenProgram:B.TOKEN_PROGRAM_ID,swap:e.address,authority:e.authority,userTransferAuthority:r,source:n,swapSource:A,swapDestination:s,destination:i,poolMint:e.poolToken,poolFee:e.feeAccount}}).keys]}({tokenSwapState:this.tokenSwapState,...e,isStep:this.tokenSwapState.programId.equals(rk)})}get reserveTokenMints(){return[this.tokenSwapState.mintA,this.tokenSwapState.mintB]}}function CS(e){return e.reduce(((t,n)=>(e.forEach((e=>{n!==e&&t.push([n,e])})),t)),new Array)}const wS=b().BigInt(100);class ES{constructor(e,t,n){this.firstAmm=void 0,this.secondAmm=void 0,this.reserveTokenMints=void 0,this.market=void 0,this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.portion1=0,this.portion2=0,this.firstAmm=e,this.secondAmm=t,this.reserveTokenMints=n,this.market=e instanceof fS?e.market:t instanceof fS?t.market:null}static getAmmIdsFromSplitTradeAmmId(e){const t=e.split("-");return t.length>1?t:[]}static create(e,t){if(!function(e,t){return!Eb(yb,e.label,t.label)}(e,t))return;const n=CS(e.reserveTokenMints),i=CS(t.reserveTokenMints);for(const r of n)for(const n of i)if(r.every(((e,t)=>e.equals(n[t]))))return new ES(e,t,r)}setPortions(e,t){if(e+t!==100)throw new Error("Split trade portions must sum to 100");this.portion1=e,this.portion2=t}get id(){return`${this.firstAmm.id}-${this.secondAmm.id}`}get label(){return[{label:this.firstAmm.label,portion:this.portion1},{label:this.secondAmm.label,portion:this.portion2}].sort(((e,t)=>t.portion-e.portion)).map((({label:e,portion:t})=>`${e} (${t}%)`)).join(" + ")}getAccountsForUpdate(){return[]}update(e){}getQuote(e){const t=e.sourceMint.toBase58(),n=e.amount;let i={outAmount:We.ZERO,portion:0,firstQuote:void 0,secondQuote:void 0};for(let t=100;t-=5;t>0){const r=b().divide(b().multiply(n,b().BigInt(t)),wS),o=b().subtract(n,r),A=this.firstAmm.getQuote({...e,amount:r}),s=this.secondAmm.getQuote({...e,amount:o}),a=b().add(A.outAmount,s.outAmount);if(b().lessThan(a,i.outAmount))break;i={outAmount:a,portion:t,firstQuote:A,secondQuote:s}}if(!i.firstQuote||!i.secondQuote)throw new Error("Unreachable: There was no better solution than getting 0 outAmount");const{outAmount:r,portion:o,firstQuote:A,secondQuote:s}=i,a=o,c=100-a;this.portion1=a,this.portion2=c;let u={amount:A.feeAmount,mint:A.feeMint},l={amount:s.feeAmount,mint:s.feeMint};u.mint!==l.mint&&(u.mint!==t&&(u={amount:b().divide(b().divide(b().multiply(u.amount,b().multiply(n,b().BigInt(a))),wS),i.outAmount),mint:t}),l.mint!==t&&(l={amount:b().divide(b().divide(b().multiply(b().multiply(l.amount,n),b().BigInt(c)),wS),i.outAmount),mint:t}));const g=(a*A.feePct+c*s.feePct)/100,d=(a*A.priceImpactPct+c*s.priceImpactPct)/100;return{notEnoughLiquidity:!1,inAmount:e.amount,outAmount:r,feeAmount:b().add(u.amount,l.amount),feeMint:u.mint,feePct:g,priceImpactPct:d}}getSwapLegAndAccounts(e){let[t,n]=this.firstAmm.getSwapLegAndAccounts(e),[i,r]=this.secondAmm.getSwapLegAndAccounts(e),o=[Vk(this.portion1,t),Vk(this.portion2,i)],A=[...n,...r];return[zk(o),A]}}function QS(e,t){const n=qE.parse(t);if(!n)throw new Error(`Failed to parse whirlpool ${e.toBase58()}`);return n}function bS(e,t){const n=zE.parse(t);if(!n)throw new Error(`Failed to parse tick array ${e.toBase58()}`);return n}class kS{constructor(e,t){this.address=void 0,this.id=void 0,this.label="Orca (Whirlpools)",this.shouldPrefetch=!0,this.exactOutputSupported=!0,this.hasDynamicAccounts=!0,this.whirlpoolData=void 0,this.tickArrays={aToB:[],bToA:[]},this.tickPks=void 0,this.oracle=void 0,this.feePct=void 0,this.address=e,this.id=e.toBase58(),this.whirlpoolData=QS(e,t.data),this.oracle=(0,Nr.findProgramAddressSync)([Ib.from("oracle"),e.toBuffer()],Zb)[0],this.feePct=new zr.Z(this.whirlpoolData.feeRate).div(1e6),this.tickPks=this.getTickArrayPks()}getTickArrayPks(){const e={aToB:[],bToA:[]};return[!0,!1].forEach((t=>{e[t?"aToB":"bToA"].push(...WE.getTickArrayPublicKeys(this.whirlpoolData.tickCurrentIndex,this.whirlpoolData.tickSpacing,t,Zb,this.address))})),e}getAccountsForUpdate(){return[this.address,...this.tickPks.aToB,...this.tickPks.bToA]}update(e){const t=e.get(this.address.toBase58());if(!t)throw new Error(`Missing ${this.address.toBase58()}`);this.whirlpoolData=QS(this.address,t.data),this.tickPks=this.getTickArrayPks();const n={aToB:[],bToA:[]};[!0,!1].forEach((t=>{const i=t?"aToB":"bToA";for(const t of this.tickPks[i]){const r=t.toBase58(),o=e.get(r);if(!o)continue;const A=bS(t,o.data);n[i].push({address:t,data:A})}})),this.tickArrays=n}getQuote({sourceMint:e,amount:t,swapMode:n}){const i=!!e.equals(this.whirlpoolData.tokenMintA),r=n===kb.ExactIn,o=gQ({amountSpecifiedIsInput:r,aToB:i,otherAmountThreshold:WE.getDefaultOtherAmountThreshold(r),sqrtPriceLimit:WE.getDefaultSqrtPriceLimit(i),tickArrays:this.tickArrays[i?"aToB":"bToA"],tokenAmount:new(y())(t.toString()),whirlpoolData:this.whirlpoolData}),A=b().BigInt(o.estimatedAmountIn.toString()),s=b().BigInt(o.estimatedAmountOut.toString()),a=b().BigInt(o.estimatedFeeAmount.toString()),c=o.aToB?new zr.Z(o.estimatedAmountOut.toString()).div(o.estimatedAmountIn.toString()):new zr.Z(o.estimatedAmountIn.toString()).div(o.estimatedAmountOut.toString()),u=(l=this.whirlpoolData.sqrtPrice,new zr.Z(l.toString()).mul(zr.Z.pow(2,-64))).pow(2);var l;const g=u.minus(c).div(u).abs().toNumber();return{notEnoughLiquidity:!1,inAmount:A,outAmount:s,feeAmount:a,feeMint:e.toBase58(),feePct:this.feePct.toNumber(),priceImpactPct:Number(g)}}getSwapLegAndAccounts(e){const t=e.sourceMint.equals(this.whirlpoolData.tokenMintA),n=e.swapMode===kb.ExactIn,{tickArray0:i,tickArray1:r,tickArray2:o}=gQ({amountSpecifiedIsInput:n,aToB:t,otherAmountThreshold:WE.getDefaultOtherAmountThreshold(n),sqrtPriceLimit:WE.getDefaultSqrtPriceLimit(t),tickArrays:this.tickArrays[t?"aToB":"bToA"],tokenAmount:new(y())(e.amount.toString()),whirlpoolData:this.whirlpoolData});return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i}){const[r,o]=e.aToB?[t,n]:[n,t];return[Hk(Kk(e.aToB)),nv.instruction.whirlpoolSwap({accounts:{swapProgram:Zb,tokenProgram:B.TOKEN_PROGRAM_ID,tokenAuthority:i,whirlpool:e.whirlpool,tokenOwnerAccountA:r,tokenVaultA:e.tokenVaultA,tokenOwnerAccountB:o,tokenVaultB:e.tokenVaultB,tickArray0:e.tickArray0,tickArray1:e.tickArray1,tickArray2:e.tickArray2,oracle:e.oracle}}).keys]}({additionalArgs:{aToB:t,whirlpool:this.address,tickArray0:i,tickArray1:r,tickArray2:o,oracle:this.oracle,...this.whirlpoolData},...e})}createExactOutSwapInstruction(e){const t=e.sourceMint.equals(this.whirlpoolData.tokenMintA),n=e.swapMode===kb.ExactIn,{tickArray0:i,tickArray1:r,tickArray2:o}=gQ({amountSpecifiedIsInput:n,aToB:t,otherAmountThreshold:WE.getDefaultOtherAmountThreshold(n),sqrtPriceLimit:WE.getDefaultSqrtPriceLimit(t),tickArrays:this.tickArrays[t?"aToB":"bToA"],tokenAmount:new(y())(e.amount.toString()),whirlpoolData:this.whirlpoolData});return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i,outAmount:r,inAmount:o,slippageBps:A,platformFee:s,overflowFeeAccount:a}){var c;const[u,l]=e.aToB?[t,n]:[n,t];return nv.instruction.whirlpoolSwapExactOutput(r,{amount:o,slippageBps:A},e.aToB,null!==(c=null==s?void 0:s.feeBps)&&void 0!==c?c:0,{accounts:{swapProgram:Zb,tokenProgram:B.TOKEN_PROGRAM_ID,tokenAuthority:i,whirlpool:e.whirlpool,tokenOwnerAccountA:u,tokenVaultA:e.tokenVaultA,tokenOwnerAccountB:l,tokenVaultB:e.tokenVaultB,tickArray0:e.tickArray0,tickArray1:e.tickArray1,tickArray2:e.tickArray2,oracle:e.oracle},remainingAccounts:uv(null==s?void 0:s.feeAccount,a)})}({additionalArgs:{aToB:t,whirlpool:this.address,tickArray0:i,tickArray1:r,tickArray2:o,oracle:this.oracle,...this.whirlpoolData},...e,outAmount:new(y())(e.amount.toString()),inAmount:new(y())(e.inAmount.toString())})}get reserveTokenMints(){return[this.whirlpoolData.tokenMintA,this.whirlpoolData.tokenMintB]}}class vS{constructor(e,t,n){this.address=void 0,this.id=void 0,this.label="Dradex",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.state=void 0,this.orderBookState=void 0,this.quoteCalculator=void 0,this.marketUser=void 0,this.address=e,this.id=e.toBase58(),this.state=SQ.accounts.decode("market",t.data),this.marketUser=new A.PublicKey(n.marketUser)}getAccountsForUpdate(){return[this.address,...this.reserveTokenMints,this.state.orderBook.bids,this.state.orderBook.asks]}update(e){const t=e.get(this.id),n=e.get(this.state.orderBook.bids.toString()),i=e.get(this.state.orderBook.asks.toString()),r=this.reserveTokenMints.map((t=>e.get(t.toString())));if(!t||!n||!i||r.find((e=>!e)))throw new Error(`One of the required accounts is missing: ${this.address.toBase58()}`);if(r.length!==this.reserveTokenMints.length)throw new Error(`Missing mint info: ${this.address.toBase58()}`);this.state=SQ.accounts.decode("market",t.data);const o=this.reserveTokenMints.map(((e,t)=>((e,t)=>{if(e.length!==B.MintLayout.span)return;const n=B.MintLayout.decode(e);return n.address=t,0===n.mintAuthorityOption?n.mintAuthority=null:n.mintAuthority=new A.PublicKey(n.mintAuthority),n.supply=B.u64.fromBuffer(n.supply),n.isInitialized=0!==n.isInitialized,0===n.freezeAuthorityOption?n.freezeAuthority=null:n.freezeAuthority=new A.PublicKey(n.freezeAuthority),n})(r[t].data,e)));this.orderBookState={bids:EQ.decode(n.data).items,asks:EQ.decode(i.data).items},this.quoteCalculator=new NQ(this.state,this.orderBookState,o)}getQuote(e){if(!this.quoteCalculator)throw new Error(`Quote calculator is not initialized: ${this.address.toBase58()}`);const t=this.quoteCalculator.getQuote(e);return{...t,priceImpactPct:t.priceImpactPct/100}}getSwapLegAndAccounts(e){var t;return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i,sourceMint:r}){const{side:o,t0User:s,t1User:a}=r.equals(e.t0)?{side:Gk.Ask,t0User:t,t1User:n}:{side:Gk.Bid,t0User:n,t1User:t};return[Hk(jk(o)),nv.instruction.dradexSwap({accounts:{swapProgram:dk,pair:e.pair,market:e.market,eventQueue:e.eventQueue,dexUser:mk,marketUser:e.marketUser,bids:e.bids,asks:e.asks,t0Vault:e.t0Vault,t1Vault:e.t1Vault,t0User:s,t1User:a,master:pk,signer:i,systemProgram:A.SystemProgram.programId,tokenProgram:B.TOKEN_PROGRAM_ID,logger:hk},remainingAccounts:e.referrer?[{pubkey:e.referrer,isSigner:!1,isWritable:!0}]:[iv]}).keys]}({additionalArgs:{pair:this.state.pair,market:this.address,eventQueue:this.state.eventQueue,marketUser:this.marketUser,bids:this.state.orderBook.bids,asks:this.state.orderBook.asks,t0:this.state.t0,t1:this.state.t1,t0Vault:this.state.t0Vault,t1Vault:this.state.t1Vault,referrer:null===(t=e.quoteMintToReferrer)||void 0===t?void 0:t.get(e.destinationMint.toBase58())},...e})}get reserveTokenMints(){return[this.state.t0,this.state.t1]}}class SS{constructor(e,t){this.address=void 0,this.label="Raydium CLMM",this.id=void 0,this.reserveTokenMints=void 0,this.hasDynamicAccounts=!0,this.shouldPrefetch=!0,this.exactOutputSupported=!0,this.programId=void 0,this.poolState=void 0,this.coder=void 0,this.tickArrayPks=void 0,this.tickArrayCache={},this.ammV3PoolInfo=void 0,this.address=e,this.id=e.toBase58(),this.address=e,this.coder=new ti(hb),this.poolState=this.coder.decode("poolState",t.data),this.reserveTokenMints=[this.poolState.tokenMint0,this.poolState.tokenMint1],this.programId=Ik,this.tickArrayPks=db.getTickArrayPks(this.address,this.poolState,this.programId)}getAccountsForUpdate(){return[this.address,this.poolState.ammConfig,...this.tickArrayPks]}update(e){const t=e.get(this.id);if(!t)throw new Error("Missing poolStateAccountInfo");const n=e.get(this.poolState.ammConfig.toBase58());if(!n)throw new Error("Missing ammConfigAccoutnInfo");this.poolState=this.coder.decode("poolState",t.data);const i=this.coder.decode("ammConfig",n.data);this.tickArrayPks=db.getTickArrayPks(this.address,this.poolState,this.programId);const r={};for(const t of this.tickArrayPks){const n=e.get(t.toBase58());if(!n)continue;const i=this.coder.decode("tickArrayState",n.data);r[i.startTickIndex]={...i,address:t}}this.tickArrayCache=r,this.ammV3PoolInfo=db.formatPoolInfo({address:this.address,poolState:this.poolState,ammConfig:i,programId:this.programId})}getQuote(e){if(0!==this.poolState.status)throw new Error("Pool is not swapable");if(!this.ammV3PoolInfo)throw new Error("Missing ammV3PoolInfo");if(e.swapMode===kb.ExactIn){const{amountOut:t,fee:n,priceImpact:i}=db.computeAmountOut({poolInfo:this.ammV3PoolInfo,tickArrayCache:this.tickArrayCache,baseMint:e.sourceMint,amountIn:new(y())(e.amount.toString()),slippage:0});return{notEnoughLiquidity:!1,inAmount:e.amount,outAmount:b().BigInt(t.toString()),feeAmount:b().BigInt(n.toString()),feeMint:e.sourceMint.toString(),feePct:this.ammV3PoolInfo.ammConfig.tradeFeeRate/10**6,priceImpactPct:i}}{const{amountIn:t,fee:n,priceImpact:i}=db.computeAmountIn({poolInfo:this.ammV3PoolInfo,tickArrayCache:this.tickArrayCache,baseMint:e.destinationMint,amountOut:new(y())(e.amount.toString()),slippage:0});return{notEnoughLiquidity:!1,inAmount:b().BigInt(t.toString()),outAmount:e.amount,feeAmount:b().BigInt(n.toString()),feeMint:e.sourceMint.toString(),feePct:this.ammV3PoolInfo.ammConfig.tradeFeeRate/10**6,priceImpactPct:i}}}getSwapLegAndAccounts(e){if(!this.ammV3PoolInfo)throw new Error("Missing ammV3PoolInfo");const{remainingAccounts:t}=db.computeAmountOut({poolInfo:this.ammV3PoolInfo,tickArrayCache:this.tickArrayCache,baseMint:e.sourceMint,amountIn:new(y())(e.amount.toString()),slippage:0}),[n,i]=e.sourceMint.equals(this.poolState.tokenMint0)?[this.poolState.tokenVault0,this.poolState.tokenVault1]:[this.poolState.tokenVault1,this.poolState.tokenVault0],r=t.shift();if(!r)throw new Error("Missing at least one tick array");return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i}){const r=e.remainingAccounts.map((e=>({pubkey:e,isWritable:!0,isSigner:!1})));return r.push(iv),[Hk({raydiumClmm:{}}),nv.instruction.raydiumClmmSwap({accounts:{swapProgram:Ik,payer:i,ammConfig:e.ammConfig,poolState:e.poolState,inputTokenAccount:t,outputTokenAccount:n,inputVault:e.inputVault,outputVault:e.outputVault,observationState:e.observationState,tokenProgram:B.TOKEN_PROGRAM_ID,tickArray:e.tickArray},remainingAccounts:r}).keys]}({additionalArgs:{poolState:this.address,inputVault:n,outputVault:i,observationState:this.poolState.observationKey,tickArray:r,remainingAccounts:t,...this.poolState},...e})}createExactOutSwapInstruction(e){if(!this.ammV3PoolInfo)throw new Error("Missing ammV3PoolInfo");const{remainingAccounts:t}=db.computeAmountIn({poolInfo:this.ammV3PoolInfo,tickArrayCache:this.tickArrayCache,baseMint:e.sourceMint,amountOut:new(y())(e.amount.toString()),slippage:0}),[n,i]=e.sourceMint.equals(this.poolState.tokenMint0)?[this.poolState.tokenVault0,this.poolState.tokenVault1]:[this.poolState.tokenVault1,this.poolState.tokenVault0],r=t.shift();if(!r)throw new Error("Missing at least one tick array");return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i,outAmount:r,inAmount:o,slippageBps:A,platformFee:s,overflowFeeAccount:a}){var c;const u=e.remainingAccounts.map((e=>({pubkey:e,isWritable:!0,isSigner:!1})));return u.push(iv),u.push(...uv(null==s?void 0:s.feeAccount,a)),nv.instruction.raydiumClmmSwapExactOutput(r,{amount:o,slippageBps:A},null!==(c=null==s?void 0:s.feeBps)&&void 0!==c?c:0,{accounts:{swapProgram:Ik,payer:i,ammConfig:e.ammConfig,poolState:e.poolState,inputTokenAccount:t,outputTokenAccount:n,inputVault:e.inputVault,outputVault:e.outputVault,observationState:e.observationState,tokenProgram:B.TOKEN_PROGRAM_ID,tickArray:e.tickArray},remainingAccounts:u})}({additionalArgs:{poolState:this.address,inputVault:n,outputVault:i,observationState:this.poolState.observationKey,tickArray:r,remainingAccounts:t,...this.poolState},...e,outAmount:new(y())(e.amount.toString()),inAmount:new(y())(e.inAmount.toString())})}}const MS=new Mr({version:"0.1.1",name:"marcopolo",instructions:[{name:"createPool",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"poolXAccount",isMut:!0,isSigner:!0},{name:"poolYAccount",isMut:!0,isSigner:!0},{name:"adminXAccount",isMut:!0,isSigner:!1},{name:"adminYAccount",isMut:!0,isSigner:!1},{name:"admin",isMut:!0,isSigner:!0},{name:"projectOwner",isMut:!1,isSigner:!1},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"lpFee",type:{defined:"FixedPoint"}},{name:"buybackFee",type:{defined:"FixedPoint"}},{name:"projectFee",type:{defined:"FixedPoint"}},{name:"mercantiFee",type:{defined:"FixedPoint"}},{name:"initialTokenX",type:{defined:"Token"}},{name:"initialTokenY",type:{defined:"Token"}},{name:"bump",type:"u8"}]},{name:"createProvider",accounts:[{name:"pool",isMut:!0,isSigner:!1},{name:"farm",isMut:!0,isSigner:!1},{name:"provider",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"poolXAccount",isMut:!0,isSigner:!1},{name:"poolYAccount",isMut:!0,isSigner:!1},{name:"ownerXAccount",isMut:!0,isSigner:!1},{name:"ownerYAccount",isMut:!0,isSigner:!1},{name:"owner",isMut:!0,isSigner:!0},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"tokenXAmount",type:{defined:"Token"}},{name:"tokenYAmount",type:{defined:"Token"}},{name:"bump",type:"u8"}]},{name:"createState",accounts:[{name:"state",isMut:!0,isSigner:!1},{name:"admin",isMut:!0,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1}],args:[{name:"nonce",type:"u8"}]},{name:"addTokens",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"farm",isMut:!0,isSigner:!1},{name:"provider",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"tokenMarco",isMut:!0,isSigner:!1},{name:"tokenProjectFirst",isMut:!0,isSigner:!1},{name:"tokenProjectSecond",isMut:!0,isSigner:!1},{name:"ownerXAccount",isMut:!0,isSigner:!1},{name:"ownerYAccount",isMut:!0,isSigner:!1},{name:"poolXAccount",isMut:!0,isSigner:!1},{name:"poolYAccount",isMut:!0,isSigner:!1},{name:"ownerMarcoAccount",isMut:!0,isSigner:!1},{name:"ownerProjectFirstAccount",isMut:!0,isSigner:!1},{name:"ownerProjectSecondAccount",isMut:!0,isSigner:!1},{name:"tokenMarcoAccount",isMut:!0,isSigner:!1},{name:"tokenProjectFirstAccount",isMut:!0,isSigner:!1},{name:"tokenProjectSecondAccount",isMut:!0,isSigner:!1},{name:"owner",isMut:!0,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"deltaX",type:{defined:"Token"}},{name:"deltaY",type:{defined:"Token"}}]},{name:"withdrawBuyback",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"buybackXAccount",isMut:!0,isSigner:!1},{name:"buybackYAccount",isMut:!0,isSigner:!1},{name:"poolXAccount",isMut:!0,isSigner:!1},{name:"poolYAccount",isMut:!0,isSigner:!1},{name:"admin",isMut:!0,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]},{name:"swap",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"poolXAccount",isMut:!0,isSigner:!1},{name:"poolYAccount",isMut:!0,isSigner:!1},{name:"swapperXAccount",isMut:!0,isSigner:!1},{name:"swapperYAccount",isMut:!0,isSigner:!1},{name:"swapper",isMut:!0,isSigner:!0},{name:"referrerXAccount",isMut:!0,isSigner:!1},{name:"referrerYAccount",isMut:!0,isSigner:!1},{name:"referrer",isMut:!0,isSigner:!1},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"deltaIn",type:{defined:"Token"}},{name:"priceLimit",type:{defined:"FixedPoint"}},{name:"xToY",type:"bool"}]},{name:"withdrawShares",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"farm",isMut:!0,isSigner:!1},{name:"provider",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"tokenMarco",isMut:!0,isSigner:!1},{name:"tokenProjectFirst",isMut:!0,isSigner:!1},{name:"tokenProjectSecond",isMut:!0,isSigner:!1},{name:"poolXAccount",isMut:!0,isSigner:!1},{name:"poolYAccount",isMut:!0,isSigner:!1},{name:"tokenMarcoAccount",isMut:!0,isSigner:!1},{name:"tokenProjectFirstAccount",isMut:!0,isSigner:!1},{name:"tokenProjectSecondAccount",isMut:!0,isSigner:!1},{name:"ownerXAccount",isMut:!0,isSigner:!1},{name:"ownerYAccount",isMut:!0,isSigner:!1},{name:"ownerMarcoAccount",isMut:!0,isSigner:!1},{name:"ownerProjectFirstAccount",isMut:!0,isSigner:!1},{name:"ownerProjectSecondAccount",isMut:!0,isSigner:!1},{name:"owner",isMut:!0,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"shares",type:{defined:"Token"}}]},{name:"withdrawLpFee",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!1,isSigner:!1},{name:"provider",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"ownerXAccount",isMut:!0,isSigner:!1},{name:"ownerYAccount",isMut:!0,isSigner:!1},{name:"poolXAccount",isMut:!0,isSigner:!1},{name:"poolYAccount",isMut:!0,isSigner:!1},{name:"owner",isMut:!0,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]},{name:"withdrawProjectFee",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"projectOwnerXAccount",isMut:!0,isSigner:!1},{name:"projectOwnerYAccount",isMut:!0,isSigner:!1},{name:"poolXAccount",isMut:!0,isSigner:!1},{name:"poolYAccount",isMut:!0,isSigner:!1},{name:"projectOwner",isMut:!0,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]},{name:"createFarm",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!1,isSigner:!1},{name:"farm",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"tokenMarco",isMut:!1,isSigner:!1},{name:"tokenMarcoAccount",isMut:!0,isSigner:!0},{name:"adminMarcoAccount",isMut:!0,isSigner:!1},{name:"admin",isMut:!0,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"supply",type:{defined:"Token"}},{name:"duration",type:"u64"},{name:"bump",type:"u8"}]},{name:"createDualFarm",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!1,isSigner:!1},{name:"farm",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"tokenMarco",isMut:!1,isSigner:!1},{name:"tokenProjectFirst",isMut:!1,isSigner:!1},{name:"tokenMarcoAccount",isMut:!0,isSigner:!0},{name:"tokenProjectFirstAccount",isMut:!0,isSigner:!0},{name:"adminMarcoAccount",isMut:!0,isSigner:!1},{name:"adminProjectFirstAccount",isMut:!0,isSigner:!1},{name:"admin",isMut:!0,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"supplyMarco",type:{defined:"Token"}},{name:"supplyProjectFirst",type:{defined:"Token"}},{name:"duration",type:"u64"},{name:"bump",type:"u8"}]},{name:"createTripleFarm",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!1,isSigner:!1},{name:"farm",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"tokenMarco",isMut:!1,isSigner:!1},{name:"tokenProjectFirst",isMut:!1,isSigner:!1},{name:"tokenProjectSecond",isMut:!1,isSigner:!1},{name:"tokenMarcoAccount",isMut:!0,isSigner:!0},{name:"tokenProjectFirstAccount",isMut:!0,isSigner:!0},{name:"tokenProjectSecondAccount",isMut:!0,isSigner:!0},{name:"adminMarcoAccount",isMut:!0,isSigner:!1},{name:"adminProjectFirstAccount",isMut:!0,isSigner:!1},{name:"adminProjectSecondAccount",isMut:!0,isSigner:!1},{name:"admin",isMut:!0,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"supplyMarco",type:{defined:"Token"}},{name:"supplyProjectFirst",type:{defined:"Token"}},{name:"supplyProjectSecond",type:{defined:"Token"}},{name:"duration",type:"u64"},{name:"bump",type:"u8"}]},{name:"withdrawRewards",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!1,isSigner:!1},{name:"farm",isMut:!0,isSigner:!1},{name:"provider",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"tokenMarco",isMut:!0,isSigner:!1},{name:"tokenProjectFirst",isMut:!0,isSigner:!1},{name:"tokenProjectSecond",isMut:!0,isSigner:!1},{name:"tokenMarcoAccount",isMut:!0,isSigner:!1},{name:"tokenProjectFirstAccount",isMut:!0,isSigner:!1},{name:"tokenProjectSecondAccount",isMut:!0,isSigner:!1},{name:"ownerMarcoAccount",isMut:!0,isSigner:!1},{name:"ownerProjectFirstAccount",isMut:!0,isSigner:!1},{name:"ownerProjectSecondAccount",isMut:!0,isSigner:!1},{name:"owner",isMut:!0,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"associatedTokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]},{name:"closePool",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"farm",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"tokenMarcoAccount",isMut:!0,isSigner:!1},{name:"tokenProjectFirstAccount",isMut:!0,isSigner:!1},{name:"tokenProjectSecondAccount",isMut:!0,isSigner:!1},{name:"poolXAccount",isMut:!0,isSigner:!1},{name:"poolYAccount",isMut:!0,isSigner:!1},{name:"buybackXAccount",isMut:!0,isSigner:!1},{name:"buybackYAccount",isMut:!0,isSigner:!1},{name:"admin",isMut:!0,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"withdrawMercantiFee",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"mercantiXAccount",isMut:!0,isSigner:!1},{name:"mercantiYAccount",isMut:!0,isSigner:!1},{name:"poolXAccount",isMut:!0,isSigner:!1},{name:"poolYAccount",isMut:!0,isSigner:!1},{name:"admin",isMut:!0,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[]},{name:"addSupply",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"farm",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"tokenMarcoAccount",isMut:!0,isSigner:!1},{name:"tokenProjectFirstAccount",isMut:!0,isSigner:!1},{name:"tokenProjectSecondAccount",isMut:!0,isSigner:!1},{name:"adminMarcoAccount",isMut:!0,isSigner:!1},{name:"adminProjectFirstAccount",isMut:!0,isSigner:!1},{name:"adminProjectSecondAccount",isMut:!0,isSigner:!1},{name:"admin",isMut:!1,isSigner:!0},{name:"tokenProgram",isMut:!1,isSigner:!1}],args:[{name:"supplyMarco",type:{defined:"Token"}},{name:"supplyProjectFirst",type:{defined:"Token"}},{name:"supplyProjectSecond",type:{defined:"Token"}},{name:"duration",type:"u64"}]},{name:"updateFees",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"admin",isMut:!0,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1}],args:[{name:"newBuybackFee",type:{defined:"FixedPoint"}},{name:"newProjectFee",type:{defined:"FixedPoint"}},{name:"newProviderFee",type:{defined:"FixedPoint"}},{name:"newMercantiFee",type:{defined:"FixedPoint"}}]},{name:"resetFarm",accounts:[{name:"state",isMut:!1,isSigner:!1},{name:"pool",isMut:!1,isSigner:!1},{name:"farm",isMut:!0,isSigner:!1},{name:"tokenX",isMut:!1,isSigner:!1},{name:"tokenY",isMut:!1,isSigner:!1},{name:"tokenMarco",isMut:!1,isSigner:!1},{name:"tokenMarcoAccount",isMut:!0,isSigner:!1},{name:"tokenProjectFirstAccount",isMut:!0,isSigner:!1},{name:"tokenProjectSecondAccount",isMut:!0,isSigner:!1},{name:"adminMarcoAccount",isMut:!0,isSigner:!1},{name:"adminProjectFirstAccount",isMut:!0,isSigner:!1},{name:"adminProjectSecondAccount",isMut:!0,isSigner:!1},{name:"admin",isMut:!0,isSigner:!0},{name:"programAuthority",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:"farm",type:{kind:"struct",fields:[{name:"pool",type:"publicKey"},{name:"tokens",type:{array:["publicKey",3]}},{name:"tokenAccounts",type:{array:["publicKey",3]}},{name:"supply",type:{array:[{defined:"Token"},3]}},{name:"supplyLeft",type:{array:[{defined:"Token"},3]}},{name:"accumulatedSecondsPerShare",type:{defined:"FixedPoint"}},{name:"offsetSecondsPerShare",type:{defined:"FixedPoint"}},{name:"startTime",type:"u64"},{name:"endTime",type:"u64"},{name:"lastUpdate",type:"u64"},{name:"bump",type:"u8"},{name:"farmType",type:{defined:"FarmType"}}]}},{name:"pool",type:{kind:"struct",fields:[{name:"tokenX",type:"publicKey"},{name:"tokenY",type:"publicKey"},{name:"poolXAccount",type:"publicKey"},{name:"poolYAccount",type:"publicKey"},{name:"admin",type:"publicKey"},{name:"projectOwner",type:"publicKey"},{name:"tokenXReserve",type:{defined:"Token"}},{name:"tokenYReserve",type:{defined:"Token"}},{name:"selfShares",type:{defined:"Token"}},{name:"allShares",type:{defined:"Token"}},{name:"buybackAmountX",type:{defined:"Token"}},{name:"buybackAmountY",type:{defined:"Token"}},{name:"projectAmountX",type:{defined:"Token"}},{name:"projectAmountY",type:{defined:"Token"}},{name:"mercantiAmountX",type:{defined:"Token"}},{name:"mercantiAmountY",type:{defined:"Token"}},{name:"lpAccumulatorX",type:{defined:"FixedPoint"}},{name:"lpAccumulatorY",type:{defined:"FixedPoint"}},{name:"constK",type:{defined:"Product"}},{name:"price",type:{defined:"FixedPoint"}},{name:"lpFee",type:{defined:"FixedPoint"}},{name:"buybackFee",type:{defined:"FixedPoint"}},{name:"projectFee",type:{defined:"FixedPoint"}},{name:"mercantiFee",type:{defined:"FixedPoint"}},{name:"farmCount",type:"u64"},{name:"bump",type:"u8"}]}},{name:"provider",type:{kind:"struct",fields:[{name:"tokenX",type:"publicKey"},{name:"tokenY",type:"publicKey"},{name:"owner",type:"publicKey"},{name:"shares",type:{defined:"Token"}},{name:"lastFeeAccumulatorX",type:{defined:"FixedPoint"}},{name:"lastFeeAccumulatorY",type:{defined:"FixedPoint"}},{name:"lastSecondsPerShare",type:{defined:"FixedPoint"}},{name:"lastWithdrawTime",type:"u64"},{name:"tokensOwedX",type:{defined:"Token"}},{name:"tokensOwedY",type:{defined:"Token"}},{name:"currentFarmCount",type:"u64"},{name:"bump",type:"u8"}]}},{name:"state",type:{kind:"struct",fields:[{name:"admin",type:"publicKey"},{name:"programAuthority",type:"publicKey"},{name:"bump",type:"u8"},{name:"nonce",type:"u8"}]}}],types:[{name:"FixedPoint",type:{kind:"struct",fields:[{name:"v",type:"u128"}]}},{name:"Token",type:{kind:"struct",fields:[{name:"v",type:"u64"}]}},{name:"Product",type:{kind:"struct",fields:[{name:"v",type:"u128"}]}},{name:"FarmType",type:{kind:"enum",variants:[{name:"Single"},{name:"Dual"},{name:"Triple"}]}}],errors:[{code:6e3,name:"DeltaTooBig",msg:"Delta greater than provider's tokens"},{code:6001,name:"TokenUnderflow",msg:"Token amount underflow"},{code:6002,name:"WrongRatio",msg:"Wrong tokens ratio"},{code:6003,name:"TooMuchShares",msg:"Too much shares provided"},{code:6004,name:"SwapToBig",msg:"Swap too big"},{code:6005,name:"FeeExceeded",msg:"Fee exceeded 100%"},{code:6007,name:"ScalesNotEqual",msg:"Scales have to be equal"},{code:6008,name:"FeeExceededDeltaOut",msg:"Fees exceeded delta_out"},{code:6009,name:"PriceLimitExceeded",msg:"Price limit exceeded"},{code:6010,name:"MintMismatch",msg:"Mint mismatch"},{code:6011,name:"TokensAreTheSame",msg:"Tokens are the same"},{code:6012,name:"WrongFarm",msg:"Cannot add supply to wrong farm"},{code:6013,name:"RewardsExceedingSupply",msg:"Cannot withdraw rewards exceeding supply left"},{code:6014,name:"FarmNotEnded",msg:"Farm has not ended, cannot add additional rewards"},{code:6015,name:"ZeroAmount",msg:"Must provide a nonzero amount"},{code:6016,name:"InvariantChanged",msg:"Invariant has changed"}],metadata:{address:"9tKE7Mbmj4mxDjWatikzGAtkoWosiiZX9y6J4Hfm2R8H"}},Bk,kk),DS=new zr.Z(10).pow(12);class NS{constructor(e,t){this.address=void 0,this.id=void 0,this.label="Marco Polo",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.pool=void 0,this.calculator=void 0,this.feePct=void 0,this.tokenReserveAmounts=void 0,this.address=e,this.id=e.toBase58(),this.pool=this.decodePoolState(t);const n=this.pool.lpFee.v.add(this.pool.buybackFee.v).add(this.pool.mercantiFee.v).add(this.pool.projectFee.v);this.feePct=new zr.Z(n.toString()).div(DS),this.calculator=new We.TokenSwapConstantProduct(new We.Fraction(b().BigInt(n),b().BigInt(DS)),We.ZERO_FRACTION,!1)}decodePoolState(e){return MS.coder.accounts.decode("pool",e.data)}getAccountsForUpdate(){return[this.address]}update(e){const t=e.get(this.id);if(!t)throw new Error(`Pool account info is not found: ${this.id}`);const n=this.decodePoolState(t);this.pool=n,this.tokenReserveAmounts=[b().BigInt(n.tokenXReserve.v),b().BigInt(n.tokenYReserve.v)]}getQuote({destinationMint:e,amount:t}){const{tokenX:n}=this.pool;if(!this.tokenReserveAmounts)throw new Error("Missing tokenReserveAmounts");const i=e.equals(n)?0:1,r=this.calculator.exchange(this.tokenReserveAmounts,t,i);return{notEnoughLiquidity:!1,inAmount:t,outAmount:r.expectedOutputAmount,feeAmount:r.fees,feeMint:e.toBase58(),feePct:this.feePct.toNumber(),priceImpactPct:r.priceImpact.toNumber()}}getSwapLegAndAccounts(e){const t=Jb;return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i,sourceMint:r}){const o=r.equals(e.tokenX),{swapperXAccount:s,swapperYAccount:a}=o?{swapperXAccount:t,swapperYAccount:n}:{swapperXAccount:n,swapperYAccount:t};return[Hk(Wk(o)),nv.instruction.marcoPoloSwap({accounts:{swapProgram:Bk,state:Ck,pool:e.pool,tokenX:e.tokenX,tokenY:e.tokenY,poolXAccount:e.poolXAccount,poolYAccount:e.poolYAccount,swapperXAccount:s,swapperYAccount:a,swapper:i,referrerXAccount:e.referrerXAccount,referrerYAccount:e.referrerYAccount,referrer:e.referrer,programAuthority:wk,systemProgram:A.SystemProgram.programId,tokenProgram:B.TOKEN_PROGRAM_ID,associatedTokenProgram:B.ASSOCIATED_TOKEN_PROGRAM_ID,rent:A.SYSVAR_RENT_PUBKEY}}).keys]}({additionalArgs:{pool:this.address,tokenX:this.pool.tokenX,tokenY:this.pool.tokenY,poolXAccount:this.pool.poolXAccount,poolYAccount:this.pool.poolYAccount,referrer:t,referrerXAccount:ev({walletAddress:t,tokenMintAddress:this.pool.tokenX}),referrerYAccount:ev({walletAddress:t,tokenMintAddress:this.pool.tokenY})},...e})}get reserveTokenMints(){return[this.pool.tokenX,this.pool.tokenY]}}NS.getProgram=()=>MS;const TS=b().BigInt(1e4);class PS{constructor(e,t){this.address=void 0,this.id=void 0,this.label="Phoenix",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.marketData=void 0,this.ladder=void 0,this.outAmountWithoutFeesMultiplier=void 0,this.baseLotsPerBaseUnit=void 0,this.baseLotSize=void 0,this.quoteLotSize=void 0,this.tickSizeInQuoteLotsPerBaseUnitPerTick=void 0,this.address=e,this.id=e.toBase58(),this.marketData=(0,pb.fi)(t.data),this.ladder=(0,pb.oO)(this.marketData,-1),this.outAmountWithoutFeesMultiplier=b().BigInt(1e4-this.marketData.takerFeeBps),this.baseLotsPerBaseUnit=b().BigInt(this.marketData.baseLotsPerBaseUnit);const n=this.marketData.header;this.baseLotSize=b().BigInt(n.baseLotSize.toString()),this.quoteLotSize=b().BigInt(n.quoteLotSize.toString()),this.tickSizeInQuoteLotsPerBaseUnitPerTick=b().divide(b().BigInt(n.tickSizeInQuoteAtomsPerBaseUnit.toString()),this.quoteLotSize)}getAccountsForUpdate(){return[this.address]}update(e){const t=e.get(this.address.toBase58());if(!t)throw new Error(`Missing market accountInfo ${this.address.toBase58()}`);this.marketData=(0,pb.fi)(t.data),this.ladder=(0,pb.oO)(this.marketData,-1)}JSBImin(e,t){return b().lessThan(e,t)?e:t}computeQuote({sourceMint:e,amount:t}){let n,i=b().BigInt(0),r=We.ZERO;if(e.equals(this.marketData.header.baseParams.mintKey)){let e=b().divide(t,this.baseLotSize);const o=b().BigInt(e);for(const[t,r]of this.ladder.bids){if(b().lessThanOrEqual(e,We.ZERO))break;const o=b().BigInt(t.toString()),A=b().BigInt(r.toString()),s=this.JSBImin(A,e),a=b().divide(b().multiply(b().multiply(b().multiply(o,s),this.tickSizeInQuoteLotsPerBaseUnitPerTick),this.quoteLotSize),this.baseLotsPerBaseUnit);if(!n){const e=b().multiply(s,this.baseLotSize);n=new zr.Z(a.toString()).div(e.toString())}i=b().add(i,a),e=b().subtract(e,s)}r=b().multiply(b().subtract(o,e),this.baseLotSize)}else{let e=b().divide(t,this.quoteLotSize);const o=b().BigInt(e);for(const[t,r]of this.ladder.asks){if(b().lessThanOrEqual(e,We.ZERO))break;const o=b().BigInt(t.toString()),A=b().BigInt(r.toString()),s=b().divide(b().divide(b().multiply(e,this.baseLotsPerBaseUnit),this.tickSizeInQuoteLotsPerBaseUnitPerTick),b().BigInt(t)),a=this.JSBImin(A,s),c=b().multiply(a,this.baseLotSize),u=b().divide(b().multiply(b().multiply(o,a),this.tickSizeInQuoteLotsPerBaseUnitPerTick),this.baseLotsPerBaseUnit);if(!n){const e=b().multiply(u,this.quoteLotSize);n=new zr.Z(c.toString()).div(e.toString())}i=b().add(i,c),e=b().subtract(e,u)}r=b().multiply(b().subtract(o,e),this.quoteLotSize)}const o=this.computAmountAfterFees(i),A=b().subtract(i,o),s=new zr.Z(i.toString()).div(t.toString());if(!n)throw new Error("No best price");return{inAmount:r,outAmount:o,feeAmount:A,priceImpactPct:n.sub(s).div(n).toNumber()}}computAmountAfterFees(e){return b().divide(b().multiply(e,this.outAmountWithoutFeesMultiplier),TS)}getQuote({sourceMint:e,amount:t}){const{inAmount:n,outAmount:i,feeAmount:r,priceImpactPct:o}=this.computeQuote({sourceMint:e,amount:t});return{notEnoughLiquidity:!1,inAmount:n,outAmount:i,feeAmount:r,feeMint:e.toBase58(),feePct:this.marketData.takerFeeBps/1e4,priceImpactPct:o}}getSwapLegAndAccounts(e){return function({additionalArgs:e,sourceMint:t,userSourceTokenAccount:n,userDestinationTokenAccount:i,userTransferAuthority:r}){const{side:o,baseAccount:A,quoteAccount:s}=t.equals(e.baseMint)?{side:Gk.Ask,baseAccount:n,quoteAccount:i}:{side:Gk.Bid,baseAccount:i,quoteAccount:n};return[Hk(qk(o)),nv.instruction.phoenixSwap({accounts:{swapProgram:Ek,logAuthority:e.logAuthority,market:e.market,trader:r,baseAccount:A,quoteAccount:s,baseVault:e.baseVault,quoteVault:e.quoteVault,tokenProgram:B.TOKEN_PROGRAM_ID}}).keys]}({...e,additionalArgs:{logAuthority:A.PublicKey.findProgramAddressSync([Ib.from("log")],Ek)[0],market:this.address,baseVault:this.marketData.header.baseParams.vaultKey,quoteVault:this.marketData.header.quoteParams.vaultKey,baseMint:this.marketData.header.baseParams.mintKey}})}get reserveTokenMints(){return[this.marketData.header.baseParams.mintKey,this.marketData.header.quoteParams.mintKey]}}const OS=({amms:e,asLegacyTransaction:t,isSplit:n})=>{if(t){if(e.length>2)return!1;const[t,i]=e;return n?!Eb(Bb,t.label,i.label):!Eb(Cb,t.label,i.label)}return!0},FS=new Map([[nk.toString(),"Orca"],[ik.toString(),"Orca"],[rk.toString(),"Step"],[ok.toString(),"Penguin"],[Ak.toString(),"Saros"],[tk.toString(),"Stepn"]]);class RS{constructor(e,t){this.connection=void 0,this.ammIdToAddressLookupTable=void 0,this.ammIdToAddressLookupTableAccount=new Map,this.connection=e,this.ammIdToAddressLookupTable=t}async getAdressLookupTableAccounts(e){const t=new Map,n=[...e.reduce(((e,n)=>{const i=this.ammIdToAddressLookupTableAccount.get(n);if(i){const e=i.key.toBase58();t.has(e)||t.set(e,n)}else{const i=this.ammIdToAddressLookupTable.get(n);i&&(e.add(i),t.set(n,i))}return e}),new Set)];return(await bb(this.connection,n)).reduce(((e,i,r)=>{const o=n[r];if(i){const n=new A.AddressLookupTableAccount({key:new A.PublicKey(o),state:A.AddressLookupTableAccount.deserialize(i.data)});e.push(n);const r=t.get(o);r&&this.ammIdToAddressLookupTableAccount.set(r,n)}return e}),new Array)}}class GS{constructor(e){this.ammIdToAddressLookupTableAccount=void 0,this.ammIdToAddressLookupTableAccount=e}static async load(e,t){const n=[...t.entries()],i=await bb(e,n.map((([e,t])=>t))),r=new Map;for(const[e,t]of i.entries()){const[i,o]=n[e];t&&r.set(i,new A.AddressLookupTableAccount({key:new A.PublicKey(o),state:A.AddressLookupTableAccount.deserialize(t.data)}))}return new GS(r)}getAdressLookupTableAccounts(e){const t=new Set,n=e.reduce(((e,n)=>{const i=this.ammIdToAddressLookupTableAccount.get(n);if(i){const n=i.key.toBase58();t.has(n)||(e.push(i),t.add(n))}return e}),new Array);return Promise.resolve(n)}}async function xS(e,t,n){const i=t.reduce(((e,t)=>{var n;const i=null==t||null===(n=t.params)||void 0===n?void 0:n.addressLookupTableAddress;return i&&e.set(t.pubkey,i),e}),new Map);return n?await GS.load(e,i):new RS(e,i)}const US={};function _S(e){const t=e._bn.toString(),n=US[t];if(n)return n;{const n=e.toBase58();return US[t]=n,n}}function LS(e){const t=new Map;return e.forEach((e=>{CS(e.reserveTokenMints).forEach((([n,i])=>{!function(e,t,n,i){let r=i.get(e);r||(r=new Map([[t,[]]]),i.set(e,r));let o=r.get(t);o||(o=[],r.set(t,o)),o.push(n)}(_S(n),_S(i),e,t)}))})),t}function KS(e,t,n){return Boolean(e&&t>100&&!e.has(n))}async function YS({connection:e,marketInfos:t,owner:n,unwrapSOL:i}){const r=await Promise.all(t.map((({outputMint:t})=>async function({connection:e,payer:t,owner:{publicKey:n},mintAddress:i,unwrapSOL:r}){const o="string"==typeof i?new A.PublicKey(i):i,s=ev({tokenMintAddress:o,walletAddress:n}),a={setupInstructions:[],instructions:[],cleanupInstructions:[],signers:[]},c=await e.getAccountInfo(s);if(null===c)a.setupInstructions.push($k(t,s,n,o));else{const e=Bt(c.data);if(e&&!e.owner.equals(n))throw new Error(`/! ATA ${s.toBase58()} is not owned by ${n.toBase58()}`)}return o.equals(Nb)&&r&&a.cleanupInstructions.push(B.Token.createCloseAccountInstruction(B.TOKEN_PROGRAM_ID,s,n,n,[])),{address:s,...a}}({connection:e,payer:n.publicKey,owner:n,mintAddress:t,unwrapSOL:i})))),[o]=r.splice(r.length-1,1);return{userIntermediaryTokenAccountResults:r,userDestinationTokenAccountResult:o}}async function jS(e,t,n,i){const r={setupInstructions:[],instructions:[],cleanupInstructions:[],signers:[]},o=n.address.toString();if(i){let t=i.get(o);if(t){let n=null;if(n=await e.getAccountInfo(t,"confirmed"),n)return{...r,address:t}}}const[s,a]=function(e,t){const[n]=(0,Nr.findProgramAddressSync)([Ib.from("open_orders"),e.publicKey.toBuffer(),t.toBuffer()],tv);return[n,nv.instruction.createOpenOrders({accounts:{openOrders:n,payer:t,dexProgram:e.programId,systemProgram:A.SystemProgram.programId,rent:A.SYSVAR_RENT_PUBKEY,market:e.publicKey}})]}(n,t);return await e.getAccountInfo(s)||(r.setupInstructions=[a]),null==i||i.set(n.address.toString(),s),{...r,address:s}}function WS(e){return e.reduce(((e,t)=>t+e),0)}const JS={feeBps:0,feeAccounts:new Map};async function qS(e,t){return(await e.getTokenAccountsByOwner(t,{programId:B.TOKEN_PROGRAM_ID})).value.reduce(((e,t)=>{const n=Bt(t.account.data);return n&&e.set(n.mint.toBase58(),t.pubkey),e}),new Map)}const ZS=e=>new Promise((t=>setTimeout(t,e)));function zS(e,t,n){if(!e)return;const i=t.get(n.toBase58());return void 0!==i?function(e,t){var n,i,r,o;const A=null===(n=t.postTokenBalances)||void 0===n||null===(i=n.find((t=>t.accountIndex===e)))||void 0===i?void 0:i.uiTokenAmount.amount,s=null===(r=t.preTokenBalances)||void 0===r||null===(o=r.find((t=>t.accountIndex===e)))||void 0===o?void 0:o.uiTokenAmount.amount;if(A)return Math.abs(parseInt(A)-(void 0!==s?parseInt(s):0))}(i,e):void 0}function HS(e,t,n){const i=t.get(n.toBase58());return void 0!==i?Math.abs(e.postBalances[i]-e.preBalances[i]):0}function VS(){return(new Date).getTime()}const XS={skipPreflight:!0,maxRetries:2};function $S(e){const t="signature"in e?e.signature:e.signatures[0];if(!t)throw new Error("Transaction has no signature");return jg.bs58.encode(t)}function eM(e,t){return"message"in e?e.sign(t):e.sign(...t),$S(e)}class tM{constructor(e,t,n){this.connection=void 0,this.feePayer=void 0,this.instructions=void 0,this.owner=void 0,this.connection=e,this.feePayer=t,this.instructions=[],this.owner=n}addInstruction(e){return this.instructions.push(e),this}async build(e,t,n){let i=[],r=[],o=[],s=[];this.instructions.forEach((e=>{r=r.concat(e.setupInstructions),i=i.concat(e.instructions),o=o.concat(e.cleanupInstructions),s=s.concat(e.signers)}));const a=r.concat(i).concat(o),c=n?this.buildLegacyTransaction({transactionInstructions:a,blockhashWithExpiryBlockHeight:e}):this.buildVersionedTransaction({transactionInstructions:a,blockhashWithExpiryBlockHeight:e,addressLookupTables:t});return{transaction:c,signers:s,execute:this.owner.isKeyPair?()=>{const t=eM(c,[this.owner.signer,...s]),n=c.serialize();return(0,A.sendAndConfirmRawTransaction)(this.connection,Ib.from(n),{signature:t,...e})}:async()=>{throw new Error("Please use a Keypair for the owner parameter to enable the execute function")}}}buildLegacyTransaction({transactionInstructions:e,blockhashWithExpiryBlockHeight:t}){return new A.Transaction({feePayer:this.feePayer,...t}).add(...e)}buildVersionedTransaction({transactionInstructions:e,blockhashWithExpiryBlockHeight:t,addressLookupTables:n}){const i=new A.TransactionMessage({payerKey:this.feePayer,instructions:e,recentBlockhash:t.blockhash}).compileToV0Message(n);return new A.VersionedTransaction(i)}}class nM{constructor(e){this._owner=void 0,this._owner=e}get publicKey(){return nM.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return nM.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return nM.isKeyPair(this._owner)}get isPublicKey(){return nM.isPublicKey(this._owner)}static isKeyPair(e){return void 0!==e.secretKey}static isPublicKey(e){return!nM.isKeyPair(e)}}const iM=function(e){if(!Array.isArray(e))throw new TypeError(`Argument must be an array: ${e}`)},rM=function(e,t){return e*t.length},oM={},AM=function(e,t){return String(t)};function sM(e){return null!=e}const aM=b().BigInt(1e4);function cM({inputMint:e,outputMint:t}){return`${e}-${t}`}function uM({ammId:e,amount:t}){return`${e}-${t.toString()}`}function lM(e,t,n){return{ExactIn:b().greaterThanOrEqual(t.outAmount,e.outAmount)?1:-1,ExactOut:b().lessThanOrEqual(t.inAmount,e.inAmount)?1:-1}[n]}async function gM({inputRouteSegment:e,inputMint:t,outputMint:n,amount:i,getDepositAndFeeForRoute:r,platformFeeBps:o,slippageBps:s,filterTopNResult:a=1,onlyDirectRoutes:c,swapMode:u,asLegacyTransaction:l}){const g=t.toBase58(),d=n.toBase58();if(!e.get(g))throw new Error("No routes found for the input and output mints");const h=c||u===kb.ExactOut?1:l?2:3,p=new Map,f=[],m=new Map;return function i({startMint:r,amount:o,level:s=1,walked:g=[r]}){const I=e.get(r);I&&I.forEach(((y,B)=>{const C=cM({inputMint:r,outputMint:B}),w=function({amms:e,inputMint:t,outputMint:n,amount:i,swapMode:r}){return e.map((e=>{try{return{quote:e.getQuote({amount:i,sourceMint:new A.PublicKey(t),destinationMint:new A.PublicKey(n),swapMode:r}),amm:e}}catch(e){return}})).filter(sM).sort(((e,t)=>lM(e.quote,t.quote,r)))}({amms:y,inputMint:r,outputMint:B,amount:o,swapMode:u}),{filteredAmms:E,quoteMap:Q}=w.reduce(((e,t)=>(e.filteredAmms.lengthe)),((i,r)=>{if(e)return;const o=(()=>{if(OS({amms:[i,r],asLegacyTransaction:l,isSplit:!0}))return ES.create(i,r)})();o&&(e=!0,f.push({amms:[o],mints:[t,n]}))}))}if(I.set(B,E),p.set(C,Q),B!==d&&Q.size&&!g.includes(B)&&snew A.PublicKey(e))),i=t.reduce(((n,i,r)=>{var o;return r=100)throw new TypeError(`Too many arrays (${e}): please use the 'big-cartesian' library instead of 'fast-cartesian'`)}(e),function(e){const t=e.reduce(rM,1);if(t>=4294967296){const e=Number.isFinite(t)?` (${t.toExponential(0)})`:"";throw new TypeError(`Too many combinations${e}: please use the 'big-cartesian' library instead of 'fast-cartesian'`)}}(e)}(e),0===e.length)return[];const t=[];return function(e){const t=oM[e];if(void 0!==t)return t;const n=function(e){const t=Array.from({length:e},AM),n=t.map((e=>`for (const value${e} of arrays[${e}]) {`)).join("\n"),i=t.map((e=>`value${e}`)).join(", "),r="}\n".repeat(e);return new Function("arrays","result",`${n}\nresult.push([${i}])\n${r}`)}(e);return oM[e]=n,n}(e.length)(e,t),t}(i);for(let e of r)(1===e.length||OS({amms:e,asLegacyTransaction:l}))&&f.push({amms:e,mints:n})}}))}({startMint:g,amount:i}),f.map((e=>{const{amms:t,mints:n}=e;let A=[],a=i,c=We.ZERO;const l=n,g=t.length;for(const[n,r]of t.entries())try{var d;const e=l[n],t=l[n+1],h=cM({inputMint:e.toBase58(),outputMint:t.toBase58()}),f=null===(d=p.get(h))||void 0===d?void 0:d.get(uM({ammId:r.id,amount:a}));if(b().equal(a,We.ZERO))return;const m=f||r.getQuote({sourceMint:e,destinationMint:t,amount:a,swapMode:u}),I=dM({quote:m,sourceMint:e,destinationMint:t,swapMode:u,legIndex:n,isLastLeg:g-1===n,platformFeeBps:o}),y=u===kb.ExactIn?m.outAmount:m.inAmount;let B=u===kb.ExactIn?b().subtract(y,I.amount):b().add(y,I.amount);b().lessThan(B,We.ZERO)&&(B=We.ZERO);const C=b().BigInt(u===kb.ExactIn?new zr.Z(B.toString()).mul(1-s/b().toNumber(aM)).ceil():new zr.Z(B.toString()).mul(1+s/b().toNumber(aM)).floor()),[w,E]=u===kb.ExactIn?[m.inAmount,B]:[B,a];A.push({amm:r,inputMint:e,outputMint:t,notEnoughLiquidity:m.notEnoughLiquidity,minInAmount:m.minInAmount,minOutAmount:m.minOutAmount,inAmount:w,outAmount:E,priceImpactPct:m.priceImpactPct,lpFee:{amount:m.feeAmount,mint:m.feeMint,pct:m.feePct},platformFee:I}),a=u===kb.ExactIn?B:i,c=C}catch(e){return}return{marketInfos:A,getDepositAndFee:()=>r({marketInfos:A}),inAmount:A[0].inAmount,outAmount:a,amount:i,otherAmountThreshold:c,swapMode:u,slippageBps:s,priceImpactPct:1-A.reduce(((e,t)=>e*(1-t.priceImpactPct)),1)}})).filter(sM).sort(((e,t)=>lM(e,t,u)))}function dM({quote:e,sourceMint:t,destinationMint:n,swapMode:i,legIndex:r,isLastLeg:o,platformFeeBps:A}){return o&&i===kb.ExactIn?{amount:b().divide(b().multiply(e.outAmount,b().BigInt(A)),aM),mint:n.toBase58(),pct:A/100}:0===r&&i===kb.ExactOut?{amount:b().divide(b().multiply(e.inAmount,b().BigInt(A)),aM),mint:t.toBase58(),pct:A/100}:{amount:We.ZERO,mint:n.toBase58(),pct:0}}const hM=Object.values(bk).reduce(((e,t)=>(e[t.code]=t,e)),{});async function pM({onlyDirectRoutes:e,restrictIntermediateTokens:t,asLegacyTransaction:n},i){let r=i||"https://cache.jup.ag/indexed-route-maps-v2";return e?r=r.concat("?onlyDirectRoutes=true"):t&&(r=r.concat("?restrictIntermediateTokens=true")),n&&(r=r.concat("?asLegacyTransaction=true")),function(e){const t=t=>e.mintKeys[t],n=new Map;return Object.keys(e.indexedRouteMap).forEach((i=>{n.set(t(i),e.indexedRouteMap[i].map((e=>t(e))))})),n}(await(await fetch(r)).json())}class fM{constructor(e,t,n,i,r,o,s=0,c=!0,u,l,g){this.connection=void 0,this.cluster=void 0,this.tokenRouteSegments=void 0,this.feeCalculator=void 0,this.platformFeeAndAccounts=void 0,this.quoteMintToReferrer=void 0,this.routeCacheDuration=void 0,this.wrapUnwrapSOL=void 0,this.intermediateTokens=void 0,this.shouldLoadSerumOpenOrders=void 0,this.addressLookupTableProvider=void 0,this.serumOpenOrdersPromise=void 0,this.user=void 0,this.routeCache=new Map,this.routeSegmentCache=new(a())({max:500}),this.getDepositAndFees=async({marketInfos:e,userPublicKey:t,serumOpenOrdersPromise:n=Promise.resolve(new Map)})=>(async({connection:e,owner:t,inputMint:n,marketInfos:i,feeCalculator:r,serumOpenOrdersPromise:o,wrapUnwrapSOL:A})=>{const s=await Promise.all(i.map((async n=>{const i=n.amm;if(i instanceof fS||i instanceof ES){if(!i.market)return;return await jS(e,t.publicKey,i.market,await o)}}))),{userIntermediaryTokenAccountResults:a,userDestinationTokenAccountResult:c}=await YS({connection:e,marketInfos:i,owner:t,unwrapSOL:A});return(({intermediates:e,destination:t,openOrders:n,hasWrapUnwrapSOL:i,feeCalculator:r})=>{const o=n.filter((e=>e&&e.setupInstructions.length>0)).map((()=>23352760)),A=[...e,t].filter((e=>(null==e?void 0:e.setupInstructions.length)&&0===e.cleanupInstructions.length)).map((()=>2039280)),s=r.lamportsPerSignature;return{signatureFee:s,openOrdersDeposits:o,ataDeposits:A,totalFeeAndDeposits:WS([s,...o,...A]),minimumSOLForTransaction:WS([s,...o,...A,890880,i?2039280:0])}})({intermediates:a,destination:c,openOrders:s,hasWrapUnwrapSOL:!!A&&[n,...i.map((e=>e.outputMint))].some((e=>e.equals(Nb))),feeCalculator:r})})({connection:this.connection,feeCalculator:this.feeCalculator,inputMint:e[0].inputMint,marketInfos:e,serumOpenOrdersPromise:n,owner:new nM(t),wrapUnwrapSOL:this.wrapUnwrapSOL}),this.getDepositAndFeesForUser=({marketInfos:e})=>{if(this.user&&this.serumOpenOrdersPromise){const t=new nM(this.user);return this.getDepositAndFees({marketInfos:e,userPublicKey:t.publicKey,serumOpenOrdersPromise:this.serumOpenOrdersPromise})}return Promise.resolve(void 0)},this.exchange=async({routeInfo:e,userPublicKey:t,feeAccount:n,wrapUnwrapSOL:i,blockhashWithExpiryBlockHeight:r,asLegacyTransaction:o,computeUnitPriceMicroLamports:s})=>{var a;const{connection:c,serumOpenOrdersPromise:u}=this,l=t||this.user;if(!l)throw new Error("user not found");const g=new nM(l),d=e.marketInfos.length-1,h=e.marketInfos[0].inputMint,p=e.marketInfos[d].outputMint,f=null!=i?i:this.wrapUnwrapSOL,[m,y,B]=await Promise.all([h.equals(Nb)&&f?Xk({connection:c,owner:g,amount:e.swapMode===kb.ExactIn?e.amount:e.otherAmountThreshold}):{setupInstructions:[],instructions:[],cleanupInstructions:[],signers:[],address:ev({tokenMintAddress:h,walletAddress:g.publicKey})},YS({connection:c,marketInfos:e.marketInfos,owner:g,unwrapSOL:f}),Promise.all(e.marketInfos.map((async({amm:e})=>{if(e instanceof fS||e instanceof ES){if(!e.market)return;return await jS(c,g.publicKey,e.market,await u)}})))]),C={intermediates:y.userIntermediaryTokenAccountResults,destination:y.userDestinationTokenAccountResult,openOrders:B},w=C.openOrders.filter(Boolean).length>0,E=(n=null!==(a=n)&&void 0!==a?a:this.platformFeeAndAccounts.feeAccounts.get(e.swapMode===kb.ExactIn?p.toBase58():h.toBase58()))?{feeBps:this.platformFeeAndAccounts.feeBps||Math.floor(100*e.marketInfos[d].platformFee.pct),feeAccount:n}:void 0,{instruction:Q}=await async function({user:e,openOrdersAddresses:t,userSourceTokenAccountAddress:n,userIntermediateTokenAccountAddresses:i,userDestinationTokenAccountAddress:r,routeInfo:o,platformFee:s,computeUnitPriceMicroLamports:a,quoteMintToReferrer:c}){if(o.marketInfos.length-1!==i.length)throw new Error("Missing intermediary token account address");const u=[n,...i,r],l=!!s&&s.feeBps>0,g=e.publicKey,d=[A.ComputeBudgetProgram.setComputeUnitLimit({units:14e5})];a&&a>0&&d.push(A.ComputeBudgetProgram.setComputeUnitPrice({microLamports:a}));const h=[];if(o.swapMode===kb.ExactIn){const e=function(e,t,n,i,r,o,A,s){const a=[],c=[];for(const[t,i]of e.marketInfos.entries()){const s=i.amm,[u,l]=r.slice(t),[g,d]=s.getSwapLegAndAccounts({sourceMint:i.inputMint,destinationMint:i.outputMint,userSourceTokenAccount:u,userDestinationTokenAccount:l,userTransferAuthority:n,openOrdersAddress:o[t],quoteMintToReferrer:A,swapMode:e.swapMode,amount:i.inAmount});a.push(g),c.push(...d)}return t&&s&&c.push({pubkey:s.feeAccount,isWritable:!0,isSigner:!1}),{swapInstruction:rv(n,i,Zk(a),c,new I.BN(e.amount.toString()),new I.BN(e.outAmount.toString()),e.slippageBps,t&&s?s.feeBps:0)}}(o,l,g,r,u,t,c,s),{swapInstruction:n}=e;h.push(n)}else if(o.swapMode===kb.ExactOut){const{swapInstruction:e}=function(e,t,n,i,r,o){const A=e.marketInfos[0],s=A.amm;if(s.createExactOutSwapInstruction)return{swapInstruction:s.createExactOutSwapInstruction({sourceMint:A.inputMint,destinationMint:A.outputMint,userSourceTokenAccount:n,userDestinationTokenAccount:i,userTransferAuthority:t,quoteMintToReferrer:r,swapMode:e.swapMode,amount:e.amount,slippageBps:e.slippageBps,inAmount:e.inAmount,platformFee:o,overflowFeeAccount:null==r?void 0:r.get(A.inputMint.toBase58())})};throw new Error(`ExactOutInstruction missing for ${s.label}.`)}(o,g,n,r,c,s);h.push(e)}const{signers:p,cleanupInstructions:f}={setupInstructions:[],instructions:[],cleanupInstructions:[],signers:[]};return e.isKeyPair&&e.signer&&p.push(e.signer),{instruction:{setupInstructions:d,signers:p,cleanupInstructions:f,instructions:h}}}({user:g,openOrdersAddresses:C.openOrders.map((e=>null==e?void 0:e.address)),userSourceTokenAccountAddress:m.address,userIntermediateTokenAccountAddresses:C.intermediates.map((({address:e})=>e)),userDestinationTokenAccountAddress:C.destination.address,routeInfo:e,platformFee:E,computeUnitPriceMicroLamports:s,quoteMintToReferrer:this.quoteMintToReferrer,asLegacyTransaction:o}),b=new tM(c,g.publicKey,g),k=[...C.intermediates,m,!C.destination.address.equals(m.address)&&C.destination];b.addInstruction(Q),w&&C.openOrders.forEach((e=>{e&&b.addInstruction(e)})),k.forEach((e=>{e&&b.addInstruction(e)})),r=r||await this.connection.getLatestBlockhash("confirmed");const v=await this.addressLookupTableProvider.getAdressLookupTableAccounts(e.marketInfos.map((({amm:e})=>e instanceof ES?[e.firstAmm.id,e.secondAmm.id]:e.id)).flat()),{transaction:S}=await b.build(r,v,o),M=C;return{swapTransaction:S,addressLookupTableAccounts:v,execute:({wallet:e,onTransaction:t}={})=>mM({connection:this.connection,wallet:e,onTransaction:t,inputMint:h,outputMint:p,sourceAddress:m.address,destinationAddress:M.destination.address,swapTransaction:S,wrapUnwrapSOL:f,owner:g}).finally((()=>{this.routeCache.clear()}))}},this.connection=e,this.cluster=t,this.tokenRouteSegments=n,this.feeCalculator=i,this.platformFeeAndAccounts=r,this.quoteMintToReferrer=o,this.routeCacheDuration=s,this.wrapUnwrapSOL=c,this.intermediateTokens=u,this.shouldLoadSerumOpenOrders=l,this.addressLookupTableProvider=g}static async load({connection:e,cluster:t,user:n,platformFeeAndAccounts:i=JS,quoteMintToReferrer:r,routeCacheDuration:o=0,wrapUnwrapSOL:s=!0,marketUrl:a,restrictIntermediateTokens:c=!1,shouldLoadSerumOpenOrders:u=!0,ammsToExclude:l={GooseFX:!0,Serum:!0},usePreloadedAddressLookupTableCache:g=!1}){const[{tokenRouteSegments:d,addressLookupTableProvider:h,saberWrapperMints:p},{value:{feeCalculator:f}},m]=await Promise.all([fM.fetchAmms(e,t,l,a,g).then((({amms:e,saberWrapperMints:t,addressLookupTableProvider:n})=>({tokenRouteSegments:LS(e),addressLookupTableProvider:n,saberWrapperMints:t}))),e.getRecentBlockhashAndContext("processed"),null!=r?r:qS(e,new A.PublicKey(Jb))]),I=c?await fM.getIntermediateTokens(p):void 0,y=new fM(e,t,d,f,i,m,o,s,I?new Set(I):void 0,u,h);return n&&y.setUserPublicKey(n),y}getAccountToAmmIdsMap(){const e=new Map;return this.tokenRouteSegments.forEach((t=>{Array.from(t.values()).forEach((t=>{t.forEach((t=>{t.getAccountsForUpdate().forEach((n=>{const i=e.get(n.toBase58())||new Set;i.add(t.id),e.set(n.toBase58(),i)}))}))}))})),e}getAmmIdToAmmMap(){const e=new Map;return this.tokenRouteSegments.forEach((t=>{Array.from(t.values()).forEach((t=>{t.forEach((t=>{e.set(t.id,t)}))}))})),e}async computeRoutes({inputMint:e,outputMint:t,amount:n,slippageBps:i,feeBps:r=0,forceFetch:o,onlyDirectRoutes:A,swapMode:s=kb.ExactIn,filterTopNResult:a,asLegacyTransaction:c}){const u=e.toBase58(),l=t.toBase58(),g=r||(this.platformFeeAndAccounts.feeAccounts.get(l)?this.platformFeeAndAccounts.feeBps:0),d=(new Date).getTime(),h=[u,l].sort(((e,t)=>e.localeCompare(t))).join()+A+s+c,p=this.routeCache.get(h);let f=this.routeSegmentCache.get(h);f||(f=function({inputMint:e,outputMint:t,tokenRouteSegments:n,swapMode:i,intermediateTokens:r,onlyDirectRoutes:o,asLegacyTransaction:A}){const s=new Map,a=n.get(e),c=n.get(t);if(a&&c){const l=Math.min(a.size,c.size),g=new Map,d=new Map,[h,p,f,m]=[a,c,e,t];for(let[e,t]of h.entries()){if(t=i===kb.ExactIn?t.slice():t.filter((e=>e.exactOutputSupported)),e===m){const e=t;g.set(m,e),d.set(f,e);continue}if(o||i===kb.ExactOut||KS(r,l,e))continue;let a=n.get(e)||new Map;for(let[n,i]of a){if(i=i.slice(),n===m){const n=i;if(s.set(e,new Map([[f,t],[m,n]])),g.set(e,t),d.set(e,n),A)break}if(!A){var u;if(KS(r,l,n))continue;const o=null===(u=p.get(n))||void 0===u?void 0:u.slice();if(o){g.set(e,t);const r=s.get(e)||new Map;r.set(n,i),s.set(e,r);const A=s.get(n)||new Map;A.set(m,o),s.set(n,A)}}}}s.set(f,g),s.set(m,d)}return s}({inputMint:u,outputMint:l,tokenRouteSegments:this.tokenRouteSegments,intermediateTokens:this.intermediateTokens,onlyDirectRoutes:A,swapMode:s,asLegacyTransaction:c}),this.routeSegmentCache.set(h,f));let m=!1;if(-1===this.routeCacheDuration)m=!1;else if(0===this.routeCacheDuration)m=!0;else if(p){const{fetchTimestamp:e}=p;d-e>this.routeCacheDuration&&(m=!0)}else m=!0;(o||m)&&(await async function(e,t){const n=new Map,i=new Set,r=new Map;t.forEach((e=>{e.forEach((e=>{e.forEach((e=>{r.set(e.id,e),e.getAccountsForUpdate().forEach((e=>{i.add(e.toBase58())}))}))}))}));const o=Array.from(i);o.length>0&&((await bb(e,o)).forEach(((e,t)=>{e&&n.set(o[t],e)})),r.forEach((e=>{e.update(n)})))}(this.connection,f),this.routeCache.set(h,{fetchTimestamp:(new Date).getTime()}));try{return{routesInfos:await gM({inputRouteSegment:f,inputMint:e,outputMint:t,amount:n,getDepositAndFeeForRoute:this.getDepositAndFeesForUser,onlyDirectRoutes:A,slippageBps:i,platformFeeBps:g,filterTopNResult:a,swapMode:s,asLegacyTransaction:c}),cached:!(o||m)}}catch(e){throw e}finally{this.routeCache.forEach((({fetchTimestamp:e},t)=>{e-d>this.routeCacheDuration&&this.routeCache.delete(t)}))}}setUserPublicKey(e){this.user=e;const t=new nM(this.user);this.serumOpenOrdersPromise=this.shouldLoadSerumOpenOrders?fM.findSerumOpenOrdersForOwner({connection:this.connection,cluster:this.cluster,userPublicKey:t.publicKey}):Promise.resolve(new Map)}static async fetchAmms(e,t,n,i,r=!1){return async function(e,t,n={},i){const r=(e=>e.map((e=>{const{data:[t,n],pubkey:i,...r}=e;return{...r,pubkey:new A.PublicKey(i),data:Ib.from(t,n),owner:new A.PublicKey(r.owner)}})))(t),o=[],s=[],a=r.reduce(((e,t)=>{const i=function(e,t,n){const i=new A.PublicKey(t.owner);if(i.equals(Tb)||i.equals(Pb)||i.equals(yk)){const e=c.Market.getLayout(i).decode(t.data);if(!e.accountFlags.initialized||!e.accountFlags.market)throw new Error("Invalid market");const n=new c.Market(e,0,0,{},i);return new fS(n)}if(i.equals(Gb))return new AS(e,t,n);if(i.equals(qb))return new $v(e,t,n);if(i.equals(ve)){const n=t.data.slice(2,3),i=Le.loadWithData(e,t.data,Tk([e.toBuffer(),n],ve));if(!i.state.isInitialized)return;return new cS(i)}if(i.equals(_b))return new aS(e,t);if(i.equals(jb))return new kv(e,t,n);if(i.equals(xb)||i.equals(Ub))return new yv(e,t,n);if([...FS.keys()].includes(i.toBase58())){var r;const n=null!==(r=FS.get(t.owner.toBase58()))&&void 0!==r?r:"Unknown";return new BS(e,t,n)}return i.equals(Lb)?new vv(e,t,n):i.equals(Kb)?new lS(e,t):i.equals(Yb)?new Uv(e,t):i.equals(fk)?new _v(e,t):i.equals(Zb)?new kS(e,t):i.equals(Xb)?new Nv(e,t):i.equals(ek)?new qv(e,t):i.equals(sk)?new rS(e,t,n):i.equals(uk)?new Fv(e,t):i.equals(zb)?new xv(e,t):i.equals(dk)?new vS(e,t,n):i.equals(gk)?new Qv(e,t):i.equals(Ik)?new SS(e,t):i.equals(Bk)?new NS(e,t):i.equals(Ek)?new PS(e,t):void 0}(t.pubkey,t,t.params);if(i){if(Eb(n,i.label))return e;e.push(i),i.shouldPrefetch&&o.push(i),i instanceof aS&&s.push(i.wrapperMint.toBase58())}return e}),new Array),[u,l,g]=await Promise.all([Mb(o,e),Og(),await xS(e,t,i)]);return{amms:a,saberWrapperMints:s,addressLookupTableProvider:g}}(e,await(async e=>await(await mb()(e)).json())(i||Ob[t]),n,r)}getRouteMap(e,t){return function(e,t,n,i){const r=new Map,o=new Set(e.keys());o.forEach((e=>{r.set(e,new Set)}));for(const[f,m]of e){const I=new Set(o);for(let e of m.keys()){var A,s;null===(A=r.get(f))||void 0===A||A.add(e),null===(s=r.get(e))||void 0===s||s.add(f),I.delete(e)}if(!n)for(let o of I){var a;let A=null===(a=r.get(f))||void 0===a?void 0:a.has(o);if(A)continue;const s=e.get(f),m=e.get(o);if(s&&m){const a=Math.min(s.size,m.size);let[I,y,B,C]=[s,m,f,o];for(let[s,m]of I.entries()){if(n||KS(t,a,s))continue;let I=e.get(s)||new Map;for(let[e,n]of I){if(e===C){if(!i){var c,u;null===(c=r.get(f))||void 0===c||c.add(o),null===(u=r.get(o))||void 0===u||u.add(f),A=!0;break}for(let e of m){for(let t of n)if(OS({amms:[e,t],asLegacyTransaction:i})){var l,g;null===(l=r.get(f))||void 0===l||l.add(o),null===(g=r.get(o))||void 0===g||g.add(f),A=!0;break}if(A)break}}if(!i){var d;if(KS(t,a,e))continue;if(null===(d=y.get(e))||void 0===d?void 0:d.slice()){var h,p;null===(h=r.get(f))||void 0===h||h.add(o),null===(p=r.get(o))||void 0===p||p.add(f),A=!0;break}}}if(A)break}}}}return Array.from(r.entries()).reduce(((e,[t,n])=>(e.set(t,[...n]),e)),new Map)}(this.tokenRouteSegments,this.intermediateTokens,e,t)}static async getIntermediateTokens(e){const t=await async function(){const e=await(await mb()("https://cache.jup.ag/top-tokens")).json();return new Set(e.filter(((e,t)=>t<60)))}();for(const e of Qk)t.add(e);return e.forEach((e=>t.add(e))),Array.from(t)}}fM.getRemoteRouteMap=pM,fM.findSerumOpenOrdersForOwner=async({userPublicKey:e,cluster:t,connection:n})=>{const i=new Map;if(e){const r="mainnet-beta"===t?Tb:Pb;(await c.OpenOrders.findForOwner(n,e,r)).forEach((e=>{i.set(e.market.toString(),e.address)}))}return i};const mM=async({connection:e,wallet:t,onTransaction:n,inputMint:i,outputMint:r,sourceAddress:o,destinationAddress:A,swapTransaction:s,owner:a,wrapUnwrapSOL:c})=>{let u,l;try{if(a.signer)eM(s,[a.signer]);else{if(!t)throw new Error("Signer wallet not found");s=await t.signTransaction(s)}const g=$S(s);try{const t=async()=>await async function({txid:e,transactionResponse:t}){var n;if(!t)return new mt("Transaction was not confirmed",e);if(null!=t&&null!==(n=t.meta)&&void 0!==n&&n.err){let{message:n,programId:r,code:o}=function(e){var t;const n=[];if(null!=e&&e.meta&&e.meta.logMessages&&e.meta.logMessages.forEach((e=>{const t=/Error: (.*)/gm;let i;for(;null!==(i=t.exec(e));)i.index===t.lastIndex&&t.lastIndex++,i.length>1&&n.push(i[1])})),n.length>0)return{message:n.join(",")};const i=null==e||null===(t=e.meta)||void 0===t?void 0:t.err;let r;if(i&&"string"!=typeof i){const t=i.InstructionError,[n,{Custom:A}]=t;if(r=null!=A?A:t[1],null!=e&&e.meta&&e.meta.logMessages){var o;const n=function(e,t){for(let n=0;nr&&(c=t,u+=1,await e.sendRawTransaction(A,XS));const n=await Promise.any([e.getTransaction(s,{commitment:"confirmed",maxSupportedTransactionVersion:0}),ZS(5e3)]);if(n)return{txid:s,transactionResponse:n};await ZS(i)}return{txid:s,transactionResponse:null}}(e,s)),u=t();null==n||n(g,1,"SWAP",u);const d=await u;if(d instanceof Error)throw d;const[h,p]=await async function({txid:e,inputMint:t,outputMint:n,user:i,sourceAddress:r,destinationAddress:o,transactionResponse:A,hasWrappedSOL:s}){let a,c;if(A){let{meta:e,transaction:u}=A;if(e){const A=u.message.getAccountKeys({accountKeysFromLookups:e.loadedAddresses}).keySegments().flat().reduce(((e,t,n)=>(e.set(t.toBase58(),n),e)),new Map);a=t.equals(Nb)&&!s?HS(e,A,i):zS(e,A,r),c=n.equals(Nb)&&!s?HS(e,A,i):zS(e,A,o)}}if(!a||!c)throw new mt("Cannot find source or destination token account balance change",e,bk.BalancesNotExtractedProperly.code);return[a,c]}({txid:g,inputMint:i,outputMint:r,user:a.publicKey,sourceAddress:o,destinationAddress:A,transactionResponse:d,hasWrappedSOL:!c});l={txid:g,inputAddress:o,outputAddress:A,inputAmount:h,outputAmount:p}}catch(e){u=e}if(u||!l)throw u||new Error("Swap failed");return l}catch(e){return{error:e}}};var IM="http://localhost".replace(/\/+$/,""),yM=class{constructor(e=new CM){this.configuration=e,this.fetchApi=async(e,t)=>{let n={url:e,init:t};for(const e of this.middleware)e.pre&&(n=await e.pre({fetch:this.fetchApi,...n})||n);let i=await(this.configuration.fetchApi||fetch)(n.url,n.init);for(const e of this.middleware)e.post&&(i=await e.post({fetch:this.fetchApi,url:n.url,init:n.init,response:i.clone()})||i);return i},this.middleware=e.middleware}withMiddleware(...e){const t=this.clone();return t.middleware=t.middleware.concat(...e),t}withPreMiddleware(...e){const t=e.map((e=>({pre:e})));return this.withMiddleware(...t)}withPostMiddleware(...e){const t=e.map((e=>({post:e})));return this.withMiddleware(...t)}async request(e,t){const{url:n,init:i}=this.createFetchParams(e,t),r=await this.fetchApi(n,i);if(r.status>=200&&r.status<300)return r;throw r}createFetchParams(e,t){let n=this.configuration.basePath+e.path;void 0!==e.query&&0!==Object.keys(e.query).length&&(n+="?"+this.configuration.queryParamsStringify(e.query));const i="undefined"!=typeof FormData&&e.body instanceof FormData||e.body instanceof URLSearchParams||(e=>"undefined"!=typeof Blob&&e instanceof Blob)(e.body)?e.body:JSON.stringify(e.body),r=Object.assign({},this.configuration.headers,e.headers);return{url:n,init:{method:e.method,headers:r,body:i,credentials:this.configuration.credentials,...t}}}clone(){const e=new(0,this.constructor)(this.configuration);return e.middleware=this.middleware.slice(),e}},BM=class extends Error{constructor(e,t){super(t),this.field=e,this.name="RequiredError"}},CM=class{constructor(e={}){this.configuration=e}get basePath(){return null!=this.configuration.basePath?this.configuration.basePath:IM}get fetchApi(){return this.configuration.fetchApi}get middleware(){return this.configuration.middleware||[]}get queryParamsStringify(){return this.configuration.queryParamsStringify||EM}get username(){return this.configuration.username}get password(){return this.configuration.password}get apiKey(){const e=this.configuration.apiKey;if(e)return"function"==typeof e?e:()=>e}get accessToken(){const e=this.configuration.accessToken;if(e)return"function"==typeof e?e:async()=>e}get headers(){return this.configuration.headers}get credentials(){return this.configuration.credentials}};function wM(e,t){return null!=e[t]}function EM(e,t=""){return Object.keys(e).map((n=>{const i=t+(t.length?`[${n}]`:n),r=e[n];if(r instanceof Array){const e=r.map((e=>encodeURIComponent(String(e)))).join(`&${encodeURIComponent(i)}=`);return`${encodeURIComponent(i)}=${e}`}return r instanceof Date?`${encodeURIComponent(i)}=${encodeURIComponent(r.toISOString())}`:r instanceof Object?EM(r,i):`${encodeURIComponent(i)}=${encodeURIComponent(String(r))}`})).filter((e=>e.length>0)).join("&")}var QM=class{constructor(e,t=(e=>e)){this.raw=e,this.transformer=t}async value(){return this.transformer(await this.raw.json())}};function bM(e){return function(e,t){return null==e?e:{amount:wM(e,"amount")?e.amount:void 0,mint:wM(e,"mint")?e.mint:void 0,pct:wM(e,"pct")?e.pct:void 0}}(e)}function kM(e){if(void 0!==e)return null===e?null:{amount:e.amount,mint:e.mint,pct:e.pct}}function vM(e){return function(e,t){return null==e?e:{signatureFee:wM(e,"signatureFee")?e.signatureFee:void 0,openOrdersDeposits:wM(e,"openOrdersDeposits")?e.openOrdersDeposits:void 0,ataDeposits:wM(e,"ataDeposits")?e.ataDeposits:void 0,totalFeeAndDeposits:wM(e,"totalFeeAndDeposits")?e.totalFeeAndDeposits:void 0,minimumSOLForTransaction:wM(e,"minimumSOLForTransaction")?e.minimumSOLForTransaction:void 0}}(e)}function SM(e){if(void 0!==e)return null===e?null:{signatureFee:e.signatureFee,openOrdersDeposits:e.openOrdersDeposits,ataDeposits:e.ataDeposits,totalFeeAndDeposits:e.totalFeeAndDeposits,minimumSOLForTransaction:e.minimumSOLForTransaction}}function MM(e){return function(e,t){return null==e?e:{id:wM(e,"id")?e.id:void 0,label:wM(e,"label")?e.label:void 0,inputMint:wM(e,"inputMint")?e.inputMint:void 0,outputMint:wM(e,"outputMint")?e.outputMint:void 0,notEnoughLiquidity:wM(e,"notEnoughLiquidity")?e.notEnoughLiquidity:void 0,inAmount:wM(e,"inAmount")?e.inAmount:void 0,outAmount:wM(e,"outAmount")?e.outAmount:void 0,minInAmount:wM(e,"minInAmount")?e.minInAmount:void 0,minOutAmount:wM(e,"minOutAmount")?e.minOutAmount:void 0,priceImpactPct:wM(e,"priceImpactPct")?e.priceImpactPct:void 0,lpFee:wM(e,"lpFee")?bM(e.lpFee):void 0,platformFee:wM(e,"platformFee")?bM(e.platformFee):void 0}}(e)}function DM(e){if(void 0!==e)return null===e?null:{id:e.id,label:e.label,inputMint:e.inputMint,outputMint:e.outputMint,notEnoughLiquidity:e.notEnoughLiquidity,inAmount:e.inAmount,outAmount:e.outAmount,minInAmount:e.minInAmount,minOutAmount:e.minOutAmount,priceImpactPct:e.priceImpactPct,lpFee:kM(e.lpFee),platformFee:kM(e.platformFee)}}function NM(e){if(void 0!==e)return null===e?null:{inAmount:e.inAmount,outAmount:e.outAmount,priceImpactPct:e.priceImpactPct,marketInfos:e.marketInfos.map(DM),amount:e.amount,slippageBps:e.slippageBps,otherAmountThreshold:e.otherAmountThreshold,swapMode:e.swapMode,fees:SM(e.fees)}}function TM(e){return function(e,t){return null==e?e:{id:wM(e,"id")?e.id:void 0,mintSymbol:wM(e,"mintSymbol")?e.mintSymbol:void 0,vsToken:wM(e,"vsToken")?e.vsToken:void 0,vsTokenSymbol:wM(e,"vsTokenSymbol")?e.vsTokenSymbol:void 0,price:wM(e,"price")?e.price:void 0}}(e)}function PM(e){if(void 0!==e)return null===e?null:{route:NM(e.route),userPublicKey:e.userPublicKey,wrapUnwrapSOL:e.wrapUnwrapSOL,feeAccount:e.feeAccount,asLegacyTransaction:e.asLegacyTransaction,computeUnitPriceMicroLamports:e.computeUnitPriceMicroLamports,destinationWallet:e.destinationWallet}}function OM(e){return function(e,t){return null==e?e:{inAmount:e.inAmount,outAmount:e.outAmount,priceImpactPct:e.priceImpactPct,marketInfos:e.marketInfos.map(MM),amount:e.amount,slippageBps:e.slippageBps,otherAmountThreshold:e.otherAmountThreshold,swapMode:e.swapMode,fees:wM(e,"fees")?vM(e.fees):void 0}}(e)}var FM=class extends yM{async v4IndexedRouteMapGetRaw(e,t){const n={};void 0!==e.onlyDirectRoutes&&(n.onlyDirectRoutes=e.onlyDirectRoutes);const i=await this.request({path:"/v4/indexed-route-map",method:"GET",headers:{},query:n},t);return new QM(i,(e=>function(e,t){return null==e?e:{mintKeys:wM(e,"mintKeys")?e.mintKeys:void 0,indexedRouteMap:wM(e,"indexedRouteMap")?e.indexedRouteMap:void 0}}(e)))}async v4IndexedRouteMapGet(e={},t){const n=await this.v4IndexedRouteMapGetRaw(e,t);return await n.value()}async v4PriceGetRaw(e,t){if(null===e.ids||void 0===e.ids)throw new BM("ids","Required parameter requestParameters.ids was null or undefined when calling v4PriceGet.");const n={};void 0!==e.ids&&(n.ids=e.ids),void 0!==e.vsToken&&(n.vsToken=e.vsToken),void 0!==e.vsAmount&&(n.vsAmount=e.vsAmount);const i=await this.request({path:"/v4/price",method:"GET",headers:{},query:n},t);return new QM(i,(e=>function(e,t){return null==e?e:{data:wM(e,"data")?(n=e.data,i=TM,Object.keys(n).reduce(((e,t)=>({...e,[t]:i(n[t])})),{})):void 0,timeTaken:wM(e,"timeTaken")?e.timeTaken:void 0,contextSlot:wM(e,"contextSlot")?e.contextSlot:void 0};var n,i}(e)))}async v4PriceGet(e,t){const n=await this.v4PriceGetRaw(e,t);return await n.value()}async v4QuoteGetRaw(e,t){if(null===e.inputMint||void 0===e.inputMint)throw new BM("inputMint","Required parameter requestParameters.inputMint was null or undefined when calling v4QuoteGet.");if(null===e.outputMint||void 0===e.outputMint)throw new BM("outputMint","Required parameter requestParameters.outputMint was null or undefined when calling v4QuoteGet.");if(null===e.amount||void 0===e.amount)throw new BM("amount","Required parameter requestParameters.amount was null or undefined when calling v4QuoteGet.");const n={};void 0!==e.inputMint&&(n.inputMint=e.inputMint),void 0!==e.outputMint&&(n.outputMint=e.outputMint),void 0!==e.amount&&(n.amount=e.amount),void 0!==e.swapMode&&(n.swapMode=e.swapMode),void 0!==e.slippageBps&&(n.slippageBps=e.slippageBps),void 0!==e.feeBps&&(n.feeBps=e.feeBps),void 0!==e.onlyDirectRoutes&&(n.onlyDirectRoutes=e.onlyDirectRoutes),void 0!==e.userPublicKey&&(n.userPublicKey=e.userPublicKey),void 0!==e.asLegacyTransaction&&(n.asLegacyTransaction=e.asLegacyTransaction);const i=await this.request({path:"/v4/quote",method:"GET",headers:{},query:n},t);return new QM(i,(e=>function(e,t){return null==e?e:{data:wM(e,"data")?e.data.map(OM):void 0,timeTaken:wM(e,"timeTaken")?e.timeTaken:void 0,contextSlot:wM(e,"contextSlot")?e.contextSlot:void 0}}(e)))}async v4QuoteGet(e,t){const n=await this.v4QuoteGetRaw(e,t);return await n.value()}async v4SwapPostRaw(e,t){const n=await this.request({path:"/v4/swap",method:"POST",headers:{"Content-Type":"application/json"},query:{},body:PM(e.body)},t);return new QM(n,(e=>function(e,t){return null==e?e:{swapTransaction:wM(e,"swapTransaction")?e.swapTransaction:void 0}}(e)))}async v4SwapPost(e={},t){const n=await this.v4SwapPostRaw(e,t);return await n.value()}},RM=(e=>(e.ExactIn="ExactIn",e.ExactOut="ExactOut",e))(RM||{}),GM=i(49500),xM=i(55872).Buffer;const UM={INITIALIZE_ERROR:"INITIALIZE_ERROR",ROUTES_ERROR:"ROUTES_ERROR"},_M=e=>({...e,marketInfos:e.marketInfos.map((e=>({...e,inputMint:e.inputMint.toBase58(),outputMint:e.outputMint.toBase58(),lpFee:{...e.lpFee,amount:e.lpFee.amount.toString()},platformFee:{...e.platformFee,amount:e.platformFee.amount.toString()},inAmount:e.inAmount.toString(),outAmount:e.outAmount.toString(),minInAmount:e.minInAmount?e.minInAmount.toString():void 0,minOutAmount:e.minOutAmount?e.minOutAmount.toString():void 0}))),inAmount:e.inAmount.toString(),outAmount:e.outAmount.toString(),amount:e.amount.toString(),otherAmountThreshold:e.otherAmountThreshold.toString()}),LM=(0,o.createContext)(null),KM=({onlyDirectRoutes:e,userPublicKey:t,jupiterQuoteApiUrl:n,children:i,...r})=>{const[A,s]=(0,o.useState)(new Map),[a,c]=(0,o.useState)(),u=(0,o.useMemo)((()=>{const e=new CM({basePath:n??"https://quote-api.jup.ag",fetchApi:mb()});return new FM(e)}),[n]);(0,o.useEffect)((()=>{!async function(){const t=new URL("https://cache.jup.ag/indexed-route-maps-v2").toString(),n=await pM({onlyDirectRoutes:e,restrictIntermediateTokens:!0,asLegacyTransaction:r.asLegacyTransaction},t);s(n)}()}),[e,r.asLegacyTransaction]);const l=(0,o.useMemo)((()=>Array.from(A.keys())),[A]);return o.createElement(LM.Provider,{value:{...r,userPublicKey:t,jupiterApiClient:u,allTokenMints:l,routeMap:A,error:a,setError:c,onlyDirectRoutes:e}},i)},YM=()=>{const e=(0,o.useContext)(LM);if(!e)throw new Error("JupiterProvider is required");return e.routeMap},jM=({amount:e,inputMint:t,outputMint:n,slippageBps:i,swapMode:r,debounceTime:s=250})=>{const a=(0,o.useContext)(LM),[c,u]=(0,o.useState)(!1),[l,g]=(0,o.useState)(),[d,h]=(0,o.useState)(0),p=(0,o.useRef)(d),[f,m,I]=function(e,t){const[n,i]=(0,o.useState)(e);return(0,o.useEffect)((()=>{const n=setTimeout((()=>{i(e)}),t);return()=>{clearTimeout(n)}}),[e,t]),n}(o.useMemo((()=>(b().greaterThan(e,b().BigInt(0))&&u(!0),[e,t,n])),[e.toString(),t?.toBase58(),n?.toBase58()]),s),y=(0,o.useRef)(0),C=(0,o.useRef)(0);if(!a)throw new Error("JupiterProvider is required");const{routeMap:w,allTokenMints:E,error:Q,setError:k,routeCacheDuration:v=0,onlyDirectRoutes:S,jupiterApiClient:M,userPublicKey:D,connection:N,wrapUnwrapSOL:T,asLegacyTransaction:P,platformFeeAndAccounts:O}=a;(0,o.useEffect)((()=>{p.current=-1}),[[m?.toString(),I?.toString()].sort().join("-"),i]),(0,o.useEffect)((()=>{y.current&&(new Date).getTime()-y.current>=v&&(p.current=-1),b().greaterThan(f,b().BigInt(0))?u(!0):u(!1)}),[d,f,i,m,I,S,P]),(0,o.useEffect)((()=>{!async function(){if(b().equal(f,b().BigInt(0))||Q===UM.INITIALIZE_ERROR)u(!1),g(void 0);else if(f){if(!m||!I||!w)return;const e=(new Date).getTime();C.current=e;try{const t=m.toBase58(),n=I.toBase58(),o=r===kb.ExactOut?t:n,s=await M.v4QuoteGet({amount:f.toString(),inputMint:t,outputMint:n,userPublicKey:D?.toBase58(),slippageBps:i,swapMode:r?RM[r]:void 0,onlyDirectRoutes:S,asLegacyTransaction:P,feeBps:O?.feeAccounts.get(o)?O?.feeBps:void 0});if(C.current!==e)return;if(s.data){const e=s.data.map((e=>({marketInfos:e.marketInfos.map((({id:e,inAmount:t,inputMint:n,label:i,lpFee:r,notEnoughLiquidity:o,outAmount:s,outputMint:a,platformFee:c,priceImpactPct:u,minInAmount:l,minOutAmount:g})=>({id:e,label:i,notEnoughLiquidity:o,priceImpactPct:u,inputMint:new A.PublicKey(n),outputMint:new A.PublicKey(a),lpFee:{mint:r.mint,pct:r.pct,amount:b().BigInt(r.amount)},platformFee:{mint:c.mint,pct:c.pct,amount:b().BigInt(c.amount)},inAmount:b().BigInt(t),outAmount:b().BigInt(s),minInAmount:l?b().BigInt(l):void 0,minOutAmount:g?b().BigInt(g):void 0}))),fees:e.fees,priceImpactPct:e.priceImpactPct,slippageBps:e.slippageBps,swapMode:e.swapMode,inAmount:b().BigInt(e.inAmount),outAmount:b().BigInt(e.outAmount),amount:b().BigInt(e.amount),otherAmountThreshold:b().BigInt(e.otherAmountThreshold)})));g(e),k(void 0),y.current=(new Date).getTime()}}catch(t){if(GM.error(t),C.current!==e)return;g(void 0),k(UM.ROUTES_ERROR)}finally{if(C.current!==e)return;p.current=d,u(!1)}}}()}),[O,f,m,I,i,r,D,d,S,P]);const F=(0,o.useCallback)((async({wallet:e,routeInfo:t,onTransaction:n,computeUnitPriceMicroLamports:i,...o})=>{if(!D)throw new Error("User public key is required");if(!e)throw new Error("Wallet is required");const[s,a]=[t.marketInfos[0].inputMint,t.marketInfos[t.marketInfos.length-1].outputMint],c=o.wrapUnwrapSOL??T??!0,u=r===kb.ExactOut?s:a,l=await M.v4SwapPost({body:{route:_M(t),userPublicKey:D.toBase58(),wrapUnwrapSOL:c,computeUnitPriceMicroLamports:i||void 0,asLegacyTransaction:P,feeAccount:O?.feeAccounts.get(u.toBase58())?.toBase58()}}).catch((async e=>{const{error:t,message:n}=await e.json();return{error:new mt(n,void 0,t)}}));if("error"in l)return l;const{swapTransaction:g}=l,d=xM.from(g,"base64");let h=P?A.Transaction.from(d):A.VersionedTransaction.deserialize(d);const[p,f]=await Promise.all([s,a].map((e=>B.Token.getAssociatedTokenAddress(B.ASSOCIATED_TOKEN_PROGRAM_ID,B.TOKEN_PROGRAM_ID,e,D,!0))));return mM({connection:N,wallet:e,onTransaction:n,inputMint:s,outputMint:a,sourceAddress:p,destinationAddress:f,swapTransaction:h,wrapUnwrapSOL:c,owner:new nM(D)})}),[D,T,P,N,O]);return{allTokenMints:E,routeMap:w,exchange:F,refresh:()=>{!c&&y.current&&h((e=>e+1))},lastRefreshTimestamp:y.current,loading:c,routes:l,error:Q}}},54346:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.supportedTypeMap=void 0;const o=n(81090);r(n(81090),t),r(n(10587),t),t.supportedTypeMap=o.keysTypeMap},10587:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.GpaBuilder=void 0;const i=n(13511),r=n(42943),o=n(79675),A=n(68);class s{constructor(e,t,n){this.programId=e,this.beets=t,this.accountSize=n,this.config={}}_addFilter(e){return null==this.config.filters&&(this.config.filters=[]),this.config.filters.push(e),this}_addInnerFilter(e,t,n){(0,o.logTrace)(`gpa.addInnerFilter: ${e}.${t}`);const s=this.beets.get(e);(0,r.strict)(null!=s,"Outer filter key needs to be an existing field name");const a=s.beet;let c=s.offset;const u=(0,i.isFixedSizeBeet)(a)?a:a.toFixedFromValue(n);let l;for(const[e,n]of u.fields){if(e===t){l=n;break}c+=n.byteSize}(0,r.strict)(null!=l,`${t} is not a field of the ${e} struct`);const g=(0,A.encodeFixedBeet)(l,n);return this._addFilter({memcmp:{offset:c,bytes:g}}),this}addInnerFilter(e,t){const n=e.split(".");r.strict.equal(n.length,2,"inner filters can go only one level deep, i.e. 'outer.inner' is ok, but 'outer.inner.deep' is not");const[i,o]=n;return this._addInnerFilter(i,o,t)}addFilter(e,t){const n=this.beets.get(e);(0,r.strict)(null!=n,"Filter key needs to be an existing field name");const o=(0,i.isFixedSizeBeet)(n.beet)?n.beet:n.beet.toFixedFromValue(t),s=(0,A.encodeFixedBeet)(o,t);return this._addFilter({memcmp:{offset:n.offset,bytes:s}}),this}dataSize(e){return e=null!=e?e:this.accountSize,(0,r.strict)(null!=e,"for accounts of dynamic size the dataSize arg needs to be provided"),this._addFilter({dataSize:e})}run(e){return e.getProgramAccounts(this.programId,this.config)}static fromBeetFields(e,t){const n=new Map;let r=0,o=!1;for(const[e,A]of t){if(n.set(e,{beet:A,offset:r}),!(0,i.isFixedSizeBeet)(A)){o=!0;break}r+=A.byteSize}return new s(e,n,o?void 0:r)}static fromStruct(e,t){return s.fromBeetFields(e,t.fields)}}t.GpaBuilder=s},68:function(e,t,n){"use strict";var i=n(55872).Buffer,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.encodeFixedBeet=void 0;const o=r(n(11565));t.encodeFixedBeet=function(e,t){const n=i.alloc(e.byteSize);return e.write(n,0,t),o.default.encode(n)}},81090:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.keysTypeMap=t.publicKey=void 0;const i=n(97212),r=(0,n(13511).fixedSizeUint8Array)(32);t.publicKey={write:function(e,t,n){const i=n.toBytes();r.write(e,t,i)},read:function(e,t){const n=r.read(e,t);return new i.PublicKey(n)},byteSize:r.byteSize,description:"PublicKey"},t.keysTypeMap={publicKey:{beet:"publicKey",isFixable:!1,sourcePack:"@metaplex-foundation/beet-solana",ts:"PublicKey",pack:"@solana/web3.js"}}},79675:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.logTrace=t.logDebug=t.logInfo=t.logError=void 0;const r=i(n(37820));t.logError=(0,r.default)("beet:error"),t.logInfo=(0,r.default)("beet:info"),t.logDebug=(0,r.default)("beet:debug"),t.logTrace=(0,r.default)("beet:trace")},5526:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.fixBeetFromValue=t.fixBeetFromData=void 0;const i=n(27713),r=n(11580);t.fixBeetFromData=function(e,t,n){if((0,i.isFixedSizeBeet)(e))return e;if((0,i.isFixableBeet)(e))return e.toFixedFromData(t,n);throw new r.UnreachableCaseError(e)},t.fixBeetFromValue=function(e,t){if((0,i.isFixedSizeBeet)(e))return e;if((0,i.isFixableBeet)(e))return e.toFixedFromValue(t);throw new r.UnreachableCaseError(e)}},13511:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.supportedTypeMap=void 0;const o=n(83989),A=n(38194),s=n(52557),a=n(9060),c=n(39326),u=n(57282),l=n(41148),g=n(13671),d=n(10571),h=n(2069);r(n(57282),t),r(n(83989),t),r(n(38194),t),r(n(39326),t),r(n(13671),t),r(n(52557),t),r(n(2069),t),r(n(9060),t),r(n(41148),t),r(n(10571),t),r(n(5526),t),r(n(25511),t),r(n(8205),t),r(n(82102),t),r(n(27713),t),t.supportedTypeMap={...o.collectionsTypeMap,...a.stringTypeMap,...A.compositesTypeMap,...c.enumsTypeMap,...s.numbersTypeMap,...u.aliasesTypeMap,...l.tuplesTypeMap,...g.mapsTypeMap,...h.setsTypeMap,...d.unitTypeMap}},57282:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.aliasesTypeMap=t.bytes=void 0;const i=n(83989);t.bytes=i.uint8Array,t.aliasesTypeMap={bytes:i.collectionsTypeMap.Uint8Array}},83989:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.collectionsTypeMap=t.uint8Array=t.fixedSizeUint8Array=t.fixedSizeBuffer=t.array=t.fixedSizeArray=t.uniformFixedSizeArray=void 0;const r=n(27713),o=n(42943),A=n(52557),s=n(27713),a=n(11580),c=n(5526);function u(e,t){const n=e.length,i=0===n?"":e[0].description;return{write:function(t,i,r){o.strict.equal(r.length,n,`array length ${r.length} should match len ${n}`),A.u32.write(t,i,n);let s=i+4;for(let i=0;i(${n})[ 4 + ${t} ]`}}function l(e){return{write:function(t,n,i){i.copy(t,n,0,e)},read:function(t,n){return t.slice(n,n+e)},byteSize:e,description:`Buffer(${e})`}}function g(e,t=!1){const n=l(e);return{write:function(r,s,a){o.strict.equal(a.byteLength,e,`Uint8Array length ${a.byteLength} should match len ${e}`),t&&(A.u32.write(r,s,e),s+=4);const c=i.from(a);n.write(r,s,c)},read:function(i,r){if(t){const t=A.u32.read(i,r);o.strict.equal(t,e,"invalid byte size"),r+=4}const s=n.read(i,r);return Uint8Array.from(s)},byteSize:t?e+4:e,description:`Uint8Array(${e})`}}t.uniformFixedSizeArray=function(e,t,n=!1){const i=e.byteSize*t;return{write:function(i,r,s){o.strict.equal(s.length,t,`array length ${s.length} should match len ${t}`),n&&(A.u32.write(i,r,t),r+=4);for(let n=0;n(${t})`}},t.fixedSizeArray=u,t.array=function(e){return{toFixedFromData(t,n){const i=A.u32.read(t,n);(0,a.logTrace)(`${this.description}[${i}]`);const r=n+4;let o=r;const s=new Array(i);for(let n=0;ng(e.byteLength,!0),description:"Uint8Array"},t.collectionsTypeMap={Array:{beet:"array",isFixable:!0,sourcePack:s.BEET_PACKAGE,ts:"Array",arg:r.BEET_TYPE_ARG_LEN},FixedSizeArray:{beet:"fixedSizeArray",isFixable:!1,sourcePack:s.BEET_PACKAGE,ts:"Array",arg:r.BEET_TYPE_ARG_LEN},UniformFixedSizeArray:{beet:"uniformFixedSizeArray",isFixable:!1,sourcePack:s.BEET_PACKAGE,ts:"Array",arg:r.BEET_TYPE_ARG_LEN},Buffer:{beet:"fixedSizeBuffer",isFixable:!1,sourcePack:s.BEET_PACKAGE,ts:"Buffer",arg:r.BEET_TYPE_ARG_LEN},FixedSizeUint8Array:{beet:"fixedSizeUint8Array",isFixable:!1,sourcePack:s.BEET_PACKAGE,ts:"Uint8Array",arg:r.BEET_TYPE_ARG_LEN},Uint8Array:{beet:"uint8Array",isFixable:!0,sourcePack:s.BEET_PACKAGE,ts:"Uint8Array",arg:r.BEET_TYPE_ARG_LEN}}},38194:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.compositesTypeMap=t.coption=t.coptionSome=t.coptionNone=t.isNoneBuffer=t.isSomeBuffer=void 0;const i=n(42943),r=n(27713),o=n(27713),A=n(11580),s=n(5526);function a(e,t){return 1===e[t]}function c(e,t){return 0===e[t]}function u(e){return(0,A.logTrace)(`coptionNone(${e})`),{write:function(e,t,n){(0,i.strict)(null==n,"coptionNone can only handle `null` values"),e[t]=0},read:function(e,t){return(0,i.strict)(c(e,t),"coptionNone can only handle `NONE` data"),null},byteSize:1,description:`COption`}}function l(e){const t=1+e.byteSize,n={write:function(t,n,o){(0,r.assertFixedSizeBeet)(e,`coption inner type ${e.description} needs to be fixed before calling write`),(0,i.strict)(null!=o,"coptionSome cannot handle `null` values"),t[n]=1,e.write(t,n+1,o)},read:function(t,n){return(0,r.assertFixedSizeBeet)(e,`coption inner type ${e.description} needs to be fixed before calling read`),(0,i.strict)(a(t,n),"coptionSome can only handle `SOME` data"),e.read(t,n+1)},description:`COption<${e.description}>[1 + ${e.byteSize}]`,byteSize:t,inner:e};return(0,A.logTrace)(n.description),n}t.isSomeBuffer=a,t.isNoneBuffer=c,t.coptionNone=u,t.coptionSome=l,t.coption=function(e){return{toFixedFromData:(t,n)=>a(t,n)?l((0,s.fixBeetFromData)(e,t,n+1)):((0,i.strict)(c(t,n),`Expected ${t} to hold a COption`),u(e.description)),toFixedFromValue:t=>null==t?u(e.description):l((0,s.fixBeetFromValue)(e,t)),description:`COption<${e.description}>`}},t.compositesTypeMap={option:{beet:"coption",isFixable:!0,sourcePack:o.BEET_PACKAGE,ts:"COption",arg:r.BEET_TYPE_ARG_INNER,pack:o.BEET_PACKAGE}}},39326:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.enumsTypeMap=t.dataEnum=t.uniformDataEnum=t.fixedScalarEnum=void 0;const i=n(27713),r=n(52557),o=n(42943),A=n(8205),s=n(82102),a=n(10571);function c(e,t){return t?`${e}`:e}function u(e,t,n){return{write(n,i,o){r.u8.write(n,i,t),e.write(n,i+r.u8.byteSize,o)},read(t,i){const o=e.read(t,i+r.u8.byteSize);return{__kind:n,...o}},byteSize:e.byteSize+r.u8.byteSize,description:`EnumData<${e.description}>`}}t.fixedScalarEnum=function(e){const t=Object.keys(e);return{write(n,i,A){const s="number"==typeof A,a=c(A,s);if(t.includes(a)||o.strict.fail(`${A} should be a variant of the provided enum type, i.e. [ ${Object.values(e).join(", ")} ], but isn't`),s)r.u8.write(n,i,A);else{const t=e[a];r.u8.write(n,i,t)}},read(n,i){const A=r.u8.read(n,i),s="number"==typeof A,a=c(A,s);return t.includes(a)||o.strict.fail(`${A} should be a of a variant of the provided enum type, i.e. [ ${Object.values(e).join(", ")} ], but isn't`),s?A:e[a]},byteSize:r.u8.byteSize,description:"Enum"}},t.uniformDataEnum=function(e){return{write:function(t,n,i){r.u8.write(t,n,i.kind),e.write(t,n+1,i.data)},read:function(t,n){return{kind:r.u8.read(t,n),data:e.read(t,n+1)}},byteSize:1+e.byteSize,description:`UniformDataEnum<${e.description}>`}},t.dataEnum=function(e){for(const[t,n]of e)(0,o.strict)((0,A.isBeetStruct)(n)||(0,s.isFixableBeetStruct)(n)||n===a.unit,"dataEnum: variants must be a data beet struct or a scalar unit");return{toFixedFromData(t,n){const A=r.u8.read(t,n),s=e[A];(0,o.strict)(null!=s,`Discriminant ${A} out of range for ${e.length} variants`);const[a,c]=s;return u((0,i.isFixedSizeBeet)(c)?c:c.toFixedFromData(t,n+1),A,a)},toFixedFromValue(t){if(null==t.__kind){const n=Object.keys(t).join(", "),i=e.map((([e])=>e)).join(", ");o.strict.fail(`Value with fields [ ${n} ] is missing __kind, which needs to be set to one of [ ${i} ]`)}const n=e.findIndex((([e])=>e===t.__kind));if(n<0){const n=e.map((([e])=>e)).join(", ");o.strict.fail(`${t.__kind} is not a valid kind, needs to be one of [ ${n} ]`)}const r=e[n],{__kind:A,...s}=t,[a,c]=r;return u((0,i.isFixedSizeBeet)(c)?c:c.toFixedFromValue(s),n,a)},description:`DataEnum<${e.length} variants>`}},t.enumsTypeMap={fixedScalarEnum:{beet:"fixedScalarEnum",isFixable:!1,sourcePack:i.BEET_PACKAGE,ts:"",arg:i.BEET_TYPE_ARG_INNER,pack:i.BEET_PACKAGE},dataEnum:{beet:"dataEnum",isFixable:!1,sourcePack:i.BEET_PACKAGE,ts:"DataEnum",arg:i.BEET_TYPE_ARG_INNER,pack:i.BEET_PACKAGE}}},13671:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.mapsTypeMap=t.map=void 0;const i=n(27713),r=n(52557),o=n(11580),A=n(42943);function s(e,t,n,s){const a=(0,i.isFixedSizeBeet)(e),c=(0,i.isFixedSizeBeet)(t),{elementByteSize:u,byteSize:l}=function(){if(a&&c){const n=e.byteSize+t.byteSize;return{elementByteSize:n,byteSize:4+s*n}}if(a){let t=0;for(const[e,i]of n.values())t+=i.byteSize;return{elementByteSize:e.byteSize+Math.ceil(t/s),byteSize:4+e.byteSize*s+t}}if(c){let e=0;for(const[t,i]of n.values())e+=t.byteSize;return{elementByteSize:Math.ceil(e/s)+t.byteSize,byteSize:4+e+t.byteSize*s}}{let e=0,t=0;for(const[i,r]of n.values())e+=i.byteSize,t+=r.byteSize;return{elementByteSize:Math.ceil(e/s+t/s),byteSize:4+e+t}}}();return{write:function(i,u,l){let g=u+4,d=0;for(const[r,s]of l.entries()){let u=a?e:null,l=c?t:null;if(null==u||null==l){const e=n.get(r);(0,A.strict)(null!=e,`Should be able to find beet els for ${(0,o.stringify)(r)}, but could not`),null!=u||(u=e[0]),null!=l||(l=e[1])}u.write(i,g,r),g+=u.byteSize,l.write(i,g,s),g+=l.byteSize,d++}r.u32.write(i,u,d),A.strict.equal(d,s,`Expected map to have size ${s}, but has ${d}.`)},read:function(n,i){const o=r.u32.read(n,i);A.strict.equal(o,s,`Expected map to have size ${s}, but has ${o}.`);let u=i+4;const l=new Map;for(let i=0;i`}}t.map=function(e,t){const n=(0,i.isFixedSizeBeet)(e),o=(0,i.isFixedSizeBeet)(t);return{toFixedFromData(i,A){const a=r.u32.read(i,A);let c=A+4;if(n&&o)return s(e,t,new Map,a);const u=new Map;for(let r=0;r`}},t.mapsTypeMap={Map:{beet:"map",isFixable:!0,sourcePack:i.BEET_PACKAGE,ts:"Map"}}},52557:function(e,t,n){"use strict";var i=n(55872).Buffer,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.numbersTypeMap=t.bool=t.i512=t.i256=t.i128=t.i64=t.i32=t.i16=t.i8=t.u512=t.u256=t.u128=t.u64=t.u32=t.u16=t.u8=void 0;const o=r(n(39098)),A=n(27713);function s(e,t){return{write:function(e,t,n){const r=(o.default.isBN(n)?n:new o.default(n)).toArray("le",this.byteSize);i.from(r).copy(e,t,0,this.byteSize)},read:function(e,t){const n=e.slice(t,t+this.byteSize);return new o.default(n,"le")},byteSize:e,description:t}}function a(e,t){const n=8*e;return{write:function(e,t,r){const A=(o.default.isBN(r)?r:new o.default(r)).toTwos(n).toArray("le",this.byteSize);i.from(A).copy(e,t,0,this.byteSize)},read:function(e,t){const i=e.slice(t,t+this.byteSize);return new o.default(i,"le").fromTwos(n)},byteSize:e,description:t}}t.u8={write:function(e,t,n){e.writeUInt8(n,t)},read:function(e,t){return e.readUInt8(t)},byteSize:1,description:"u8"},t.u16={write:function(e,t,n){e.writeUInt16LE(n,t)},read:function(e,t){return e.readUInt16LE(t)},byteSize:2,description:"u16"},t.u32={write:function(e,t,n){e.writeUInt32LE(n,t)},read:function(e,t){return e.readUInt32LE(t)},byteSize:4,description:"u32"},t.u64=s(8,"u64"),t.u128=s(16,"u128"),t.u256=s(32,"u256"),t.u512=s(64,"u512"),t.i8={write:function(e,t,n){e.writeInt8(n,t)},read:function(e,t){return e.readInt8(t)},byteSize:1,description:"i8"},t.i16={write:function(e,t,n){e.writeInt16LE(n,t)},read:function(e,t){return e.readInt16LE(t)},byteSize:2,description:"i16"},t.i32={write:function(e,t,n){e.writeInt32LE(n,t)},read:function(e,t){return e.readInt32LE(t)},byteSize:4,description:"i32"},t.i64=a(8,"i64"),t.i128=a(16,"i128"),t.i256=a(32,"i256"),t.i512=a(64,"i512"),t.bool={write:function(e,n,i){const r=i?1:0;t.u8.write(e,n,r)},read:function(e,n){return 1===t.u8.read(e,n)},byteSize:1,description:"bool"},t.numbersTypeMap={u8:{beet:"u8",isFixable:!1,sourcePack:A.BEET_PACKAGE,ts:"number"},u16:{beet:"u16",isFixable:!1,sourcePack:A.BEET_PACKAGE,ts:"number"},u32:{beet:"u32",isFixable:!1,sourcePack:A.BEET_PACKAGE,ts:"number"},i8:{beet:"i8",isFixable:!1,sourcePack:A.BEET_PACKAGE,ts:"number"},i16:{beet:"i16",isFixable:!1,sourcePack:A.BEET_PACKAGE,ts:"number"},i32:{beet:"i32",isFixable:!1,sourcePack:A.BEET_PACKAGE,ts:"number"},bool:{beet:"bool",isFixable:!1,sourcePack:A.BEET_PACKAGE,ts:"boolean"},u64:{beet:"u64",isFixable:!1,sourcePack:A.BEET_PACKAGE,ts:"bignum",pack:A.BEET_PACKAGE},u128:{beet:"u128",isFixable:!1,sourcePack:A.BEET_PACKAGE,ts:"bignum",pack:A.BEET_PACKAGE},u256:{beet:"u256",isFixable:!1,sourcePack:A.BEET_PACKAGE,ts:"bignum",pack:A.BEET_PACKAGE},u512:{beet:"u512",isFixable:!1,sourcePack:A.BEET_PACKAGE,ts:"bignum",pack:A.BEET_PACKAGE},i64:{beet:"i64",isFixable:!1,sourcePack:A.BEET_PACKAGE,ts:"bignum",pack:A.BEET_PACKAGE},i128:{beet:"i128",isFixable:!1,sourcePack:A.BEET_PACKAGE,ts:"bignum",pack:A.BEET_PACKAGE},i256:{beet:"i256",isFixable:!1,sourcePack:A.BEET_PACKAGE,ts:"bignum",pack:A.BEET_PACKAGE},i512:{beet:"i512",isFixable:!1,sourcePack:A.BEET_PACKAGE,ts:"bignum",pack:A.BEET_PACKAGE}}},2069:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setsTypeMap=t.set=void 0;const i=n(27713),r=n(52557),o=n(11580),A=n(42943);function s(e,t,n){const s=(0,i.isFixedSizeBeet)(e),{elementByteSize:a,byteSize:c}=function(){if(s){const t=e.byteSize;return{elementByteSize:t,byteSize:4+n*t}}{let e=0;for(const n of t.values())e+=n.byteSize;return{elementByteSize:Math.ceil(e/n),byteSize:4+e}}}();return{write:function(i,a,c){let u=a+4,l=0;for(const n of c.keys()){let r=s?e:null;if(null==r){const e=t.get(n);(0,A.strict)(null!=e,`Should be able to find beet el for ${(0,o.stringify)(n)}, but could not`),null!=r||(r=e)}r.write(i,u,n),u+=r.byteSize,l++}r.u32.write(i,a,l),A.strict.equal(l,n,`Expected set to have size ${n}, but has ${l}.`)},read:function(t,i){const o=r.u32.read(t,i);A.strict.equal(o,n,`Expected set to have size ${n}, but has ${o}.`);let a=i+4;const c=new Set;for(let n=0;n`}}t.set=function(e){const t=(0,i.isFixedSizeBeet)(e);return{toFixedFromData(n,i){const o=r.u32.read(n,i);let A=i+4;if(t)return s(e,new Map,o);const a=new Map;for(let i=0;i`}},t.setsTypeMap={Set:{beet:"set",isFixable:!0,sourcePack:i.BEET_PACKAGE,ts:"Set"}}},9060:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.stringTypeMap=t.utf8String=t.fixedSizeUtf8String=void 0;const r=n(27713),o=n(42943),A=n(52557),s=n(11580);t.fixedSizeUtf8String=e=>({write:function(t,n,r){const s=i.from(r,"utf8");o.strict.equal(s.byteLength,e,`${r} has invalid byte size`),A.u32.write(t,n,e),s.copy(t,n+4,0,e)},read:function(t,n){const i=A.u32.read(t,n);return o.strict.equal(i,e,"invalid byte size"),t.slice(n+4,n+4+e).toString("utf8")},elementByteSize:1,length:e,lenPrefixByteSize:4,byteSize:4+e,description:`Utf8String(4 + ${e})`}),t.utf8String={toFixedFromData(e,n){const i=A.u32.read(e,n);return(0,s.logTrace)(`${this.description}[${i}]`),(0,t.fixedSizeUtf8String)(i)},toFixedFromValue(e){const n=i.from(e).byteLength;return(0,t.fixedSizeUtf8String)(n)},description:"Utf8String"},t.stringTypeMap={fixedSizeString:{beet:"fixedSizeUtf8String",isFixable:!1,sourcePack:r.BEET_PACKAGE,ts:"string",arg:r.BEET_TYPE_ARG_LEN},string:{beet:"utf8String",isFixable:!0,sourcePack:r.BEET_PACKAGE,ts:"string"}}},41148:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.tuplesTypeMap=t.tuple=t.fixedSizeTuple=void 0;const i=n(27713),r=n(42943),o=n(5526);function A(e){const t=e.length,n=e.map((e=>e.description)),i=e.map((e=>e.byteSize));return{write:function(n,i,o){r.strict.equal(o.length,t,`tuple value element size ${o.length} should match len ${t}`);let A=i;for(let i=0;ie+t),0),length:t,description:`FixedSizeTuple<${n.join(",")}>[ ${i.join(", ")} ]`}}t.fixedSizeTuple=A,t.tuple=function(e){const t=e.length;return{toFixedFromData(n,i){let r=i;const s=new Array(t);for(let i=0;ie.description)).join(",")}>`}},t.tuplesTypeMap={Tuple:{beet:"tuple",isFixable:!0,sourcePack:i.BEET_PACKAGE,ts:"[__tuple_elements__]"},FixedSizeTuple:{beet:"fixedSizeTuple",isFixable:!1,sourcePack:i.BEET_PACKAGE,ts:"[__tuple_elements__]"}}},10571:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.unitTypeMap=t.unit=void 0;const i=n(27713);t.unit={write:function(e,t,n){},read:function(e,t){},byteSize:0,description:"unit"},t.unitTypeMap={unit:{beet:"unit",isFixable:!1,sourcePack:i.BEET_PACKAGE,ts:"void"}}},25511:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.BeetReader=t.BeetWriter=void 0;const r=n(42943);t.BeetWriter=class{constructor(e){this.buf=i.alloc(e),this._offset=0}get buffer(){return this.buf}get offset(){return this._offset}maybeResize(e){this._offset+e>this.buf.length&&r.strict.fail(`We shouldn't ever need to resize, but ${this._offset+e} > ${this.buf.length}`)}write(e,t){this.maybeResize(e.byteSize),e.write(this.buf,this._offset,t),this._offset+=e.byteSize}writeStruct(e,t){for(const[n,i]of t){const t=e[n];this.write(i,t)}}},t.BeetReader=class{constructor(e,t=0){this.buffer=e,this._offset=t}get offset(){return this._offset}read(e){const t=e.read(this.buffer,this._offset);return this._offset+=e.byteSize,t}readStruct(e){const t={};for(const[n,i]of e)t[n]=this.read(i);return t}}},82102:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.FixableBeetArgsStruct=t.isFixableBeetStruct=t.FixableBeetStruct=void 0;const r=n(5526),o=n(8205),A=n(27713),s=n(42943),a=n(11580),c=i(n(18560)),{brightBlack:u}=c.default;class l{constructor(e,t,n=l.description){this.fields=e,this.construct=t,this.description=n;let i=0;if(a.logDebug.enabled){const t=e.map((([e,t])=>((0,A.isFixedSizeBeet)(t)&&(i+=t.byteSize),`${e}: ${t.description} ${(0,a.beetBytes)(t)}`))).join("\n "),r=`> ${i} B`;(0,a.logDebug)(`struct ${n} {\n ${t}\n} ${u(r)}`)}}deserialize(e,t=0){return this.toFixedFromData(e,t).deserialize(e,t)}serialize(e,t){return this.toFixedFromValue(e).serialize(e,t)}toFixedFromData(e,t){let n=t;const i=new Array(this.fields.length);for(let t=0;te),t)}}t.FixableBeetArgsStruct=g,g.description="FixableBeetArgsStruct"},8205:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.BeetArgsStruct=t.isBeetStruct=t.BeetStruct=void 0;const i=n(25511),r=n(11580);class o{constructor(e,t,n=o.description){if(this.fields=e,this.construct=t,this.description=n,this.byteSize=this.getByteSize(),r.logDebug.enabled){const t=e.map((([e,t])=>`${String(e)}: ${t.description} ${(0,r.beetBytes)(t)}`)).join("\n ");(0,r.logDebug)(`struct ${n} {\n ${t}\n} ${(0,r.beetBytes)(this)}`)}}read(e,t){const[n]=this.deserialize(e,t);return n}write(e,t,n){const[i,r]=this.serialize(n);i.copy(e,t,0,r)}deserialize(e,t=0){r.logTrace.enabled&&((0,r.logTrace)("deserializing [%s] from %d bytes buffer",this.description,e.byteLength),(0,r.logTrace)(e),(0,r.logTrace)(e.toJSON().data));const n=new i.BeetReader(e,t),o=n.readStruct(this.fields);return[this.construct(o),n.offset]}serialize(e,t=this.byteSize){(0,r.logTrace)("serializing [%s] %o to %d bytes buffer",this.description,e,t);const n=new i.BeetWriter(t);return n.writeStruct(e,this.fields),[n.buffer,n.offset]}getByteSize(){return this.fields.reduce(((e,[t,n])=>e+n.byteSize),0)}get type(){return o.TYPE}}t.BeetStruct=o,o.description="BeetStruct",o.TYPE="BeetStruct",t.isBeetStruct=function(e){return e.type===o.TYPE};class A extends o{constructor(e,t=A.description){super(e,(e=>e),t)}}t.BeetArgsStruct=A,A.description="BeetArgsStruct"},27713:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isElementCollectionFixedSizeBeet=t.isFixableBeet=t.assertFixedSizeBeet=t.isFixedSizeBeet=t.BEET_TYPE_ARG_INNER=t.BEET_TYPE_ARG_LEN=t.BEET_PACKAGE=void 0;const i=n(42943);function r(e){return Object.keys(e).includes("byteSize")}t.BEET_PACKAGE="@metaplex-foundation/beet",t.BEET_TYPE_ARG_LEN="len",t.BEET_TYPE_ARG_INNER="Beet<{innner}>",t.isFixedSizeBeet=r,t.assertFixedSizeBeet=function(e,t=`${e} should have been a fixed beet`){(0,i.strict)(r(e),t)},t.isFixableBeet=function(e){return"function"==typeof e.toFixedFromData&&"function"==typeof e.toFixedFromValue},t.isElementCollectionFixedSizeBeet=function(e){const t=Object.keys(e);return t.includes("length")&&t.includes("elementByteSize")&&t.includes("lenPrefixByteSize")}},11580:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.UnreachableCaseError=t.stringify=t.bytes=t.beetBytes=t.logTrace=t.logDebug=t.logInfo=t.logError=void 0;const r=i(n(37820)),o=i(n(18560)),A=n(27713),{brightBlack:s}=o.default;t.logError=(0,r.default)("beet:error"),t.logInfo=(0,r.default)("beet:info"),t.logDebug=(0,r.default)("beet:debug"),t.logTrace=(0,r.default)("beet:trace"),t.beetBytes=function(e,t=!1){let n;if((0,A.isFixableBeet)(e))n="? B";else if((0,A.isElementCollectionFixedSizeBeet)(e)){const i=t?"length":e.length,r=e.lenPrefixByteSize;n=r>0?`${r} + (${e.elementByteSize} * ${i}) B (${e.byteSize} B)`:`(${e.elementByteSize} * ${i}) B (${e.byteSize} B)`}else n=`${e.byteSize} B`;return s(n)},t.bytes=function(e){return s(`${e} B`)},t.stringify=function(e){return"function"===e.toString?e.toString():e};class a extends Error{constructor(e){super(`Unreachable case: ${e}`)}}t.UnreachableCaseError=a},64929:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.createWSOLAccountInstructions=void 0;const i=n(76604),r=n(97212);t.createWSOLAccountInstructions=function(e,t,n){const o=new r.Keypair,A=r.SystemProgram.createAccount({fromPubkey:e,newAccountPubkey:o.publicKey,lamports:t.toNumber()+n,space:i.AccountLayout.span,programId:i.TOKEN_PROGRAM_ID}),s=i.Token.createInitAccountInstruction(i.TOKEN_PROGRAM_ID,i.NATIVE_MINT,o.publicKey,e),a=i.Token.createCloseAccountInstruction(i.TOKEN_PROGRAM_ID,o.publicKey,e,e,[]);return{address:o.publicKey,instructions:[A,s],cleanupInstructions:[a],signers:[o]}}},62160:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(86216),t),r(n(56722),t)},91328:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.DecimalUtil=void 0;const r=n(76604),o=i(n(62496));t.DecimalUtil=class{static adjustDecimals(e,t=0){return e.div(o.default.pow(10,t))}static fromU64(e,t=0){return new o.default(e.toString()).div(new o.default(10).pow(t))}static fromNumber(e,t=0){return new o.default(e).div(new o.default(10).pow(t))}static toU64(e,t=0){if(e.isNeg())throw new Error("Negative decimal value ${input} cannot be converted to u64.");const n=e.mul(new o.default(10).pow(t)).trunc();return new r.u64(n.toString())}}},86216:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(91328),t),r(n(36512),t),r(n(79933),t)},36512:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.MathUtil=t.U64_MAX=t.U128=t.TWO=t.ONE=t.ZERO=void 0;const r=n(75481),o=i(n(62496));t.ZERO=new r.BN(0),t.ONE=new r.BN(1),t.TWO=new r.BN(2),t.U128=t.TWO.pow(new r.BN(128)),t.U64_MAX=t.TWO.pow(new r.BN(64)).sub(t.ONE),t.MathUtil=class{static toX64_BN(e){return e.mul(new r.BN(2).pow(new r.BN(64)))}static toX64_Decimal(e){return e.mul(o.default.pow(2,64))}static toX64(e){return new r.BN(e.mul(o.default.pow(2,64)).floor().toFixed())}static fromX64(e){return new o.default(e.toString()).mul(o.default.pow(2,-64))}static fromX64_Decimal(e){return e.mul(o.default.pow(2,-64))}static fromX64_BN(e){return e.div(new r.BN(2).pow(new r.BN(64)))}static shiftRightRoundUp(e){let n=e.shrn(64);return e.mod(t.U64_MAX).gt(t.ZERO)&&(n=n.add(t.ONE)),n}static divRoundUp(e,n){return e.mod(n).eq(t.ZERO)?e.div(n):e.div(n).add(new r.BN(1))}static subUnderflowU128(e,n){return e.add(t.U128).sub(n).mod(t.U128)}}},79933:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.Percentage=void 0;const r=n(76604),o=i(n(62496));class A{constructor(e,t){this.toString=()=>`${this.numerator.toString()}/${this.denominator.toString()}`,this.numerator=e,this.denominator=t}static fromDecimal(e){return A.fromFraction(e.toDecimalPlaces(1).mul(10).toNumber(),1e3)}static fromFraction(e,t){const n="number"==typeof e?new r.u64(e.toString()):e,i="number"==typeof t?new r.u64(t.toString()):t;return new A(n,i)}toDecimal(){return this.denominator.eq(new r.u64(0))?new o.default(0):new o.default(this.numerator.toString()).div(new o.default(this.denominator.toString()))}add(e){const t=this.denominator.gcd(e.denominator),n=this.denominator.div(t).mul(e.denominator),i=n.div(this.denominator),o=n.div(e.denominator),s=this.numerator.mul(i),a=e.numerator.mul(o),c=s.add(a);return new A(new r.u64(c.toString()),new r.u64(n.toString()))}}t.Percentage=A},26753:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AddressUtil=void 0;const i=n(75481);class r{static toPubKey(e){return(0,i.translateAddress)(e)}static toPubKeys(e){return e.map((e=>r.toPubKey(e)))}static findProgramAddress(e,t){const[n,r]=i.utils.publicKey.findProgramAddressSync(e,t);return{publicKey:n,bump:r}}}t.AddressUtil=r},94496:function(e,t,n){"use strict";var i=n(55872).Buffer,r=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.deriveATA=t.resolveOrCreateATAs=t.resolveOrCreateATA=void 0;const o=n(76604),A=n(97212),s=n(64929),a=n(91189),c=n(29755);function u(e,t,n,u,g=t,d=!1){var h;return r(this,void 0,void 0,(function*(){const r=n.filter((({tokenMint:e})=>!e.equals(o.NATIVE_MINT))),p=n.filter((({tokenMint:e})=>e.equals(o.NATIVE_MINT)));if(p.length>1)throw new Error("Cannot resolve multiple WSolAccounts");let f={};if(r.length>0){const n=yield Promise.all(r.map((({tokenMint:e})=>l(t,e))));(yield e.getMultipleAccountsInfo(n)).map((e=>a.TokenUtil.deserializeTokenAccount(null==e?void 0:e.data))).forEach(((e,s)=>{const a=n[s];let u;if(e)u=Object.assign({address:a},c.EMPTY_INSTRUCTION);else{const e=function(e,t,n,r,s,a,c){if(!c)return o.Token.createAssociatedTokenAccountInstruction(e,t,n,r,s,a);const u=[{pubkey:a,isSigner:!0,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:A.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1}],l=i.from([1]);return new A.TransactionInstruction({keys:u,programId:e,data:l})}(o.ASSOCIATED_TOKEN_PROGRAM_ID,o.TOKEN_PROGRAM_ID,r[s].tokenMint,a,t,g,d);u={address:a,instructions:[e],cleanupInstructions:[],signers:[]}}f[r[s].tokenMint.toBase58()]=u}))}if(p.length>0){const e=yield u(),n=(null===(h=p[0])||void 0===h?void 0:h.wrappedSolAmountIn)||new o.u64(0);f[o.NATIVE_MINT.toBase58()]=(0,s.createWSOLAccountInstructions)(t,n,e)}return n.map((({tokenMint:e})=>f[e.toBase58()]))}))}function l(e,t){return r(this,void 0,void 0,(function*(){return yield o.Token.getAssociatedTokenAddress(o.ASSOCIATED_TOKEN_PROGRAM_ID,o.TOKEN_PROGRAM_ID,t,e)}))}t.resolveOrCreateATA=function(e,t,n,i,A=new o.u64(0),s=t,a=!1){return r(this,void 0,void 0,(function*(){return(yield u(e,t,[{tokenMint:n,wrappedSolAmountIn:A}],i,s,a))[0]}))},t.resolveOrCreateATAs=u,t.deriveATA=l},56722:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(26753),t),r(n(94496),t),r(n(69512),t),r(n(91189),t),r(n(19704),t)},69512:(e,t)=>{"use strict";function n(e,t){const n=e.toBytes(),i=t.toBytes();if(n.byteLength!==i.byteLength)return n.byteLength-i.byteLength;for(let e=0;e{if(!e)return null;const t=A.AccountLayout.decode(e);return t.mint=new s.PublicKey(t.mint),t.owner=new s.PublicKey(t.owner),t.amount=A.u64.fromBuffer(t.amount),0===t.delegateOption?(t.delegate=null,t.delegatedAmount=new A.u64(0)):(t.delegate=new s.PublicKey(t.delegate),t.delegatedAmount=A.u64.fromBuffer(t.delegatedAmount)),t.isInitialized=0!==t.state,t.isFrozen=2===t.state,1===t.isNativeOption?(t.rentExemptReserve=A.u64.fromBuffer(t.isNative),t.isNative=!0):(t.rentExemptReserve=null,t.isNative=!1),0===t.closeAuthorityOption?t.closeAuthority=null:t.closeAuthority=new s.PublicKey(t.closeAuthority),t}},19704:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(83844),t),r(n(6007),t),r(n(29755),t)},83844:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.TransactionBuilder=void 0;const r=n(97212),o=n(6007);t.TransactionBuilder=class{constructor(e,t){this.connection=e,this.wallet=t,this.instructions=[],this.signers=[]}addInstruction(e){return this.instructions.push(e),this}addInstructions(e){return this.instructions=this.instructions.concat(e),this}prependInstruction(e){return this.instructions.unshift(e),this}prependInstructions(e){return this.instructions=e.concat(this.instructions),this}addSigner(e){return this.signers.push(e),this}isEmpty(){return 0==this.instructions.length}compressIx(e){let t=[],n=[],i=[];return this.instructions.forEach((e=>{t=t.concat(e.instructions),n=e.cleanupInstructions.concat(n),i=i.concat(e.signers)})),e&&(t=t.concat(n),n=[]),{instructions:[...t],cleanupInstructions:[...n],signers:i}}txnSize(e={latestBlockhash:void 0}){return i(this,void 0,void 0,(function*(){return this.isEmpty()?0:(yield this.build(e)).transaction.serialize({requireAllSignatures:!1}).length}))}build(e={latestBlockhash:void 0}){return i(this,void 0,void 0,(function*(){const{latestBlockhash:t}=e;let n=t||(yield this.connection.getLatestBlockhash("singleGossip"));const i=new r.Transaction(Object.assign(Object.assign({},n),{feePayer:this.wallet.publicKey})),o=this.compressIx(!0);return i.add(...o.instructions),i.feePayer=this.wallet.publicKey,{transaction:i,signers:o.signers.concat(this.signers)}}))}buildAndExecute(){return i(this,void 0,void 0,(function*(){const e=yield this.build(),t=new o.TransactionProcessor(this.connection,this.wallet),{execute:n}=yield t.signAndConstructTransaction(e);return n()}))}static sendAll(e,t,n){return i(this,void 0,void 0,(function*(){const r=yield Promise.all(t.map((e=>i(this,void 0,void 0,(function*(){const{transaction:t,signers:n}=yield e.build();return{tx:t,signers:n}})))));return yield e.sendAll(r,n)}))}}},6007:function(e,t){"use strict";var n,i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};function r(e){return i(this,void 0,void 0,(function*(){try{return{status:"fulfilled",value:yield e}}catch(e){return{status:"rejected",reason:e}}}))}function o(e){return new Promise((t=>setTimeout(t,e)))}Object.defineProperty(t,"__esModule",{value:!0}),t.TransactionProcessor=void 0,function(e){e[e.CONFIRMED=0]="CONFIRMED",e[e.EXPIRED=1]="EXPIRED"}(n||(n={})),t.TransactionProcessor=class{constructor(e,t,n="confirmed"){this.connection=e,this.wallet=t,this.commitment=n}signTransaction(e){return i(this,void 0,void 0,(function*(){const{transactions:t,lastValidBlockHeight:n}=yield this.signTransactions([e]);return{transaction:t[0],lastValidBlockHeight:n}}))}signTransactions(e){return i(this,void 0,void 0,(function*(){const{blockhash:t,lastValidBlockHeight:n}=yield this.connection.getLatestBlockhash(this.commitment),i=this.wallet.publicKey,r=e.map((e=>function(e,t,n){var i;const r=null!==(i=e.signers)&&void 0!==i?i:[],o=e.transaction;return o.feePayer=t,o.recentBlockhash=n,r.filter((e=>void 0!==e)).forEach((e=>o.partialSign(e))),o}(e,i,t)));return{transactions:yield this.wallet.signAllTransactions(r),lastValidBlockHeight:n}}))}sendTransaction(e,t){return i(this,void 0,void 0,(function*(){const n=this.constructSendTransactions([e],t),i=(yield n())[0];if("fulfilled"===i.status)return i.value;throw i.reason}))}constructSendTransactions(e,t,A=!0){return()=>i(this,void 0,void 0,(function*(){let s=!1;const a=function(e,t,r,A){return i(this,void 0,void 0,(function*(){for(;!s;){let n=yield e.getBlockHeight(r);if(n>t)break;yield o(5*(t-n)+500)}return n.EXPIRED}))}(this.connection,t,this.commitment),c=e.map((e=>e.serialize())).map((e=>i(this,void 0,void 0,(function*(){return function(e,t,r,o){return i(this,void 0,void 0,(function*(){const i=yield e.sendRawTransaction(t,{preflightCommitment:r});let A;const s=new Promise(((t,o)=>{try{A=e.onSignature(i,(()=>{A=void 0,t(n.CONFIRMED)}),r)}catch(e){o(e)}}));try{if((yield Promise.race([s,o]))===n.CONFIRMED)return i;throw new Error("Transaction failed to be confirmed before expiring")}finally{A&&e.removeSignatureListener(A)}}))}(this.connection,e,this.commitment,a)}))));let u=[];if(A)u=yield Promise.allSettled(c);else for(const e of c)u.push(yield r(e));return s=!0,u}))}signAndConstructTransaction(e){return i(this,void 0,void 0,(function*(){const{transaction:t,lastValidBlockHeight:n}=yield this.signTransaction(e);return{signedTx:t,execute:()=>i(this,void 0,void 0,(function*(){return this.sendTransaction(t,n)}))}}))}signAndConstructTransactions(e,t=!0){return i(this,void 0,void 0,(function*(){const{transactions:n,lastValidBlockHeight:i}=yield this.signTransactions(e);return{signedTxs:n,execute:this.constructSendTransactions(n,i,t)}}))}}},29755:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EMPTY_INSTRUCTION=void 0,t.EMPTY_INSTRUCTION={instructions:[],cleanupInstructions:[],signers:[]}},12573:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AccountClient:()=>Fe,AccountsCoder:()=>J,BN:()=>f(),Coder:()=>Ae,EventCoder:()=>X,InstructionCoder:()=>Y,Program:()=>it,Provider:()=>B,StateClient:()=>De,StateCoder:()=>re,TypesCoder:()=>z,Wallet:()=>C,getProvider:()=>E,setProvider:()=>w,utils:()=>d,web3:()=>m,workspace:()=>At});var i={};n.r(i),n.d(i,{isSet:()=>ne,set:()=>te});var r={};n.r(r),n.d(r,{associated:()=>Ce,createProgramAddressSync:()=>Ie,createWithSeedSync:()=>me,findProgramAddressSync:()=>ye});var o={};n.r(o),n.d(o,{decode:()=>Ze,encode:()=>qe});var A={};n.r(A),n.d(A,{decode:()=>ze,encode:()=>He});var s={};n.r(s),n.d(s,{decode:()=>Xe,encode:()=>Ve});var a={};n.r(a),n.d(a,{decode:()=>tt,encode:()=>et});var c={};n.r(c),n.d(c,{base64:()=>a,bs58:()=>s,hex:()=>o,utf8:()=>A});var u={};n.r(u),n.d(u,{hash:()=>st});var l={};n.r(l),n.d(l,{getMultipleAccounts:()=>ut,invoke:()=>ct});var g={};n.r(g),n.d(g,{associatedAddress:()=>dt});var d={};n.r(d),n.d(d,{bytes:()=>c,features:()=>i,publicKey:()=>r,rpc:()=>l,sha256:()=>u,token:()=>g});var h,p=n(39098),f=n.n(p),m=n(97212);const I="undefined"!=typeof window&&!(null===(h=window.process)||void 0===h?void 0:h.hasOwnProperty("type"));var y=n(55872).Buffer;class B{constructor(e,t,n){this.connection=e,this.wallet=t,this.opts=n}static defaultOptions(){return{preflightCommitment:"recent",commitment:"recent"}}static local(e,t){t=null!=t?t:B.defaultOptions();const n=new m.Connection(null!=e?e:"http://localhost:8899",t.preflightCommitment),i=C.local();return new B(n,i,t)}static env(){if(I)return;const e=n(14224).env.ANCHOR_PROVIDER_URL;if(void 0===e)throw new Error("ANCHOR_PROVIDER_URL is not defined");const t=B.defaultOptions(),i=new m.Connection(e,t.commitment),r=C.local();return new B(i,r,t)}async send(e,t,n){void 0===t&&(t=[]),void 0===n&&(n=this.opts),e.feePayer=this.wallet.publicKey,e.recentBlockhash=(await this.connection.getRecentBlockhash(n.preflightCommitment)).blockhash,await this.wallet.signTransaction(e),t.filter((e=>void 0!==e)).forEach((t=>{e.partialSign(t)}));const i=e.serialize();return await(0,m.sendAndConfirmRawTransaction)(this.connection,i,n)}async sendAll(e,t){void 0===t&&(t=this.opts);const n=await this.connection.getRecentBlockhash(t.preflightCommitment);let i=e.map((e=>{let t=e.tx,i=e.signers;return void 0===i&&(i=[]),t.feePayer=this.wallet.publicKey,t.recentBlockhash=n.blockhash,i.filter((e=>void 0!==e)).forEach((e=>{t.partialSign(e)})),t}));const r=await this.wallet.signAllTransactions(i),o=[];for(let e=0;evoid 0!==e)).forEach((t=>{e.partialSign(t)})),await async function(e,t,n){t.recentBlockhash=await e._recentBlockhash(e._disableBlockhashCaching);const i=t.serializeMessage(),r=[t._serialize(i).toString("base64"),{encoding:"base64",commitment:n}],o=await e._rpcRequest("simulateTransaction",r);if(o.error)throw new Error("failed to simulate transaction: "+o.error.message);return o.result}(this.connection,e,null!==(r=n.commitment)&&void 0!==r?r:this.opts.commitment)}}class C{constructor(e){this.payer=e}static local(){const e=m.Keypair.fromSecretKey(y.from(JSON.parse(n(39518).readFileSync(n(6267).homedir()+"/.config/solana/id.json",{encoding:"utf-8"}))));return new C(e)}async signTransaction(e){return e.partialSign(this.payer),e}async signAllTransactions(e){return e.map((e=>(e.partialSign(this.payer),e)))}get publicKey(){return this.payer.publicKey}}function w(e){Q=e}function E(){return null===Q?B.local():Q}let Q=null;var b=n(81036),k=n.n(b),v=n(992),S=n(31511);class M extends Error{}class D extends Error{constructor(e,t,...n){super(...n),this.code=e,this.msg=t}static parse(e,t){let n,i=e.toString().split("custom program error: ");if(2!==i.length)return null;try{n=parseInt(i[1])}catch(e){return null}let r=t.get(n);return void 0!==r?new D(n,r):(r=N.get(n),void 0!==r?new D(n,r):null)}toString(){return this.msg}}const N=new Map([[100,"8 byte instruction identifier not provided"],[101,"Fallback functions are not supported"],[102,"The program could not deserialize the given instruction"],[103,"The program could not serialize the given instruction"],[120,"The program was compiled without idl instructions"],[121,"The transaction was given an invalid program for the IDL instruction"],[140,"A mut constraint was violated"],[141,"A has_one constraint was violated"],[142,"A signer constraint was violated"],[143,"A raw constraint as violated"],[144,"An owner constraint was violated"],[145,"A rent exempt constraint was violated"],[146,"A seeds constraint was violated"],[147,"An executable constraint was violated"],[148,"A state constraint was violated"],[149,"An associated constraint was violated"],[150,"An associated init constraint was violated"],[151,"A close constraint was violated"],[152,"An address constraint was violated"],[160,"The account discriminator was already set on this account"],[161,"No 8 byte discriminator was found on the account"],[162,"8 byte discriminator did not match what was expected"],[163,"Failed to deserialize the account"],[164,"Failed to serialize the account"],[165,"Not enough account keys given to the instruction"],[166,"The given account is not mutable"],[167,"The given account is not owned by the executing program"],[180,"The given state account does not have the correct address"],[299,"The API being used is deprecated and should no longer be used"]]);class T{static fieldLayout(e,t){const n=void 0!==e.name?k()(e.name):void 0;switch(e.type){case"bool":return v.bool(n);case"u8":return v.u8(n);case"i8":return v.i8(n);case"u16":return v.u16(n);case"i16":return v.i16(n);case"u32":return v.u32(n);case"i32":return v.i32(n);case"u64":return v.u64(n);case"i64":return v.i64(n);case"u128":return v.u128(n);case"i128":return v.i128(n);case"bytes":return v.vecU8(n);case"string":return v.str(n);case"publicKey":return v.publicKey(n);default:if(e.type.vec)return v.vec(T.fieldLayout({name:void 0,type:e.type.vec},t),n);if(e.type.option)return v.option(T.fieldLayout({name:void 0,type:e.type.option},t),n);if(e.type.defined){if(void 0===t)throw new M("User defined types not provided");const i=t.filter((t=>t.name===e.type.defined));if(1!==i.length)throw new M(`Type not found: ${JSON.stringify(e)}`);return T.typeDefLayout(i[0],t,n)}if(e.type.array){let i=e.type.array[0],r=e.type.array[1],o=T.fieldLayout({name:void 0,type:i},t);return v.array(o,r,n)}throw new Error(`Not yet implemented: ${e}`)}}static typeDefLayout(e,t,n){if("struct"===e.type.kind){const i=e.type.fields.map((e=>T.fieldLayout(e,t)));return v.struct(i,n)}if("enum"===e.type.kind){let i=e.type.variants.map((e=>{const n=k()(e.name);if(void 0===e.fields)return v.struct([],n);const i=e.fields.map((e=>{if(void 0===e.name)throw new Error("Tuple enum variants not yet implemented.");return T.fieldLayout(e,t)}));return v.struct(i,n)}));return void 0!==n?v.rustEnum(i).replicate(n):v.rustEnum(i,n)}throw new Error(`Unknown type kint: ${e}`)}}var P=n(30707),O=n(39489),F=n(55872).Buffer;function R(e,t){if("enum"===t.type.kind){let n=t.type.variants.map((t=>void 0===t.fields?0:t.fields.map((t=>{if(void 0===t.name)throw new Error("Tuple enum variants not yet implemented.");return G(e,t.type)})).reduce(((e,t)=>e+t))));return Math.max(...n)+1}return void 0===t.type.fields?0:t.type.fields.map((t=>G(e,t.type))).reduce(((e,t)=>e+t))}function G(e,t){switch(t){case"bool":case"u8":case"i8":case"bytes":case"string":return 1;case"i16":case"u16":return 2;case"u32":case"i32":return 4;case"u64":case"i64":return 8;case"u128":case"i128":return 16;case"publicKey":return 32;default:if(void 0!==t.vec)return 1;if(void 0!==t.option)return 1+G(e,t.option);if(void 0!==t.defined){const n=e.types.filter((e=>e.name===t.defined));if(1!==n.length)throw new M(`Type not found: ${JSON.stringify(t)}`);return R(e,n[0])}if(void 0!==t.array){let n=t.array[0],i=t.array[1];return G(e,n)*i}throw new Error(`Invalid type ${JSON.stringify(t)}`)}}function x(e,t){let n=`${e}:${(0,P.f)(t)}`;return F.from(O.sha256.digest(n)).slice(0,8)}var U=n(55872).Buffer,_=n(49500);const L="state",K="global";class Y{constructor(e){this.idl=e,this.ixLayout=Y.parseIxLayout(e);const t=new Map;e.instructions.forEach((e=>{const n=x(K,e.name);t.set(S.encode(n),{layout:this.ixLayout.get(e.name),name:e.name})})),e.state&&e.state.methods.map((e=>{const n=x(L,e.name);t.set(S.encode(n),{layout:this.ixLayout.get(e.name),name:e.name})})),this.sighashLayouts=t}encode(e,t){return this._encode(K,e,t)}encodeState(e,t){return this._encode(L,e,t)}_encode(e,t,n){const i=U.alloc(1e3),r=k()(t),o=this.ixLayout.get(r).encode(n,i),A=i.slice(0,o);return U.concat([x(e,t),A])}static parseIxLayout(e){const t=(e.state?e.state.methods:[]).map((t=>{let n=t.args.map((t=>T.fieldLayout(t,e.types)));const i=k()(t.name);return[i,v.struct(n,i)]})).concat(e.instructions.map((t=>{let n=t.args.map((t=>T.fieldLayout(t,e.types)));const i=k()(t.name);return[i,v.struct(n,i)]})));return new Map(t)}decode(e){"string"==typeof e&&(e=S.decode(e));let t=S.encode(e.slice(0,8)),n=e.slice(8);const i=this.sighashLayouts.get(t);return i?{data:i.layout.decode(n),name:i.name}:null}format(e,t){return j.format(e,t,this.idl)}}class j{static format(e,t,n){const i=n.instructions.filter((t=>e.name===t.name))[0];if(void 0===i)return _.error("Invalid instruction given"),null;const r=i.args.map((t=>({name:t.name,type:j.formatIdlType(t.type),data:j.formatIdlData(t,e.data[t.name],n.types)}))),o=j.flattenIdlAccounts(i.accounts);return{args:r,accounts:t.map(((e,t)=>t`:e.option?`Option<${this.formatIdlType(e.option)}>`:e.defined?e.defined:void 0}static formatIdlData(e,t,n){if("string"==typeof e.type)return t.toString();if(e.type.vec)return"["+t.map((t=>this.formatIdlData({name:"",type:e.type.vec},t))).join(", ")+"]";if(e.type.option)return null===t?"null":this.formatIdlData({name:"",type:e.type.option},t);if(e.type.defined){if(void 0===n)throw new Error("User defined types not provided");const i=n.filter((t=>t.name===e.type.defined));if(1!==i.length)throw new Error(`Type not found: ${e.type.defined}`);return j.formatIdlDataDefined(i[0],t,n)}return"unknown"}static formatIdlDataDefined(e,t,n){if("struct"===e.type.kind)return"{ "+Object.keys(t).map((i=>{const r=e.type.fields.filter((e=>e.name===i))[0];if(void 0===r)throw new Error("Unable to find type");return i+": "+j.formatIdlData(r,t[i],n)})).join(", ")+" }";if(0===e.type.variants.length)return"{}";if(e.type.variants[0].name){const i=Object.keys(t)[0],r=t[i],o=Object.keys(r).map((t=>{var o;const A=r[t],s=null===(o=e.type.variants[i])||void 0===o?void 0:o.filter((e=>e.name===t))[0];if(void 0===s)throw new Error("Unable to find variant");return t+": "+j.formatIdlData(s,A,n)})).join(", "),A=k()(i,{pascalCase:!0});return 0===o.length?A:`${A} { ${o} }`}return"Tuple formatting not yet implemented"}static flattenIdlAccounts(e,t){return e.map((e=>{const n=function(e){const t=e.replace(/([A-Z])/g," $1");return t.charAt(0).toUpperCase()+t.slice(1)}(e.name);if(e.accounts){const i=t?`${t} > ${n}`:n;return j.flattenIdlAccounts(e.accounts,i)}return{...e,name:t?`${t} > ${n}`:n}})).flat()}}var W=n(55872).Buffer;class J{constructor(e){if(void 0===e.accounts)return void(this.accountLayouts=new Map);const t=e.accounts.map((t=>[t.name,T.typeDefLayout(t,e.types)]));this.accountLayouts=new Map(t)}async encode(e,t){const n=W.alloc(1e3),i=this.accountLayouts.get(e).encode(t,n);let r=n.slice(0,i),o=await q(e);return W.concat([o,r])}decode(e,t){const n=t.slice(8);return this.accountLayouts.get(e).decode(n)}}async function q(e){return W.from(O.sha256.digest(`account:${e}`)).slice(0,8)}var Z=n(55872).Buffer;class z{constructor(e){if(void 0===e.types)return void(this.layouts=new Map);const t=e.types.map((t=>[t.name,T.typeDefLayout(t,e.types)]));this.layouts=new Map(t)}encode(e,t){const n=Z.alloc(1e3),i=this.layouts.get(e).encode(t,n);return n.slice(0,i)}decode(e,t){return this.layouts.get(e).decode(t)}}var H=n(65415),V=n(55872).Buffer;class X{constructor(e){if(void 0===e.events)return void(this.layouts=new Map);const t=e.events.map((t=>{let n={name:t.name,type:{kind:"struct",fields:t.fields.map((e=>({name:e.name,type:e.type})))}};return[t.name,T.typeDefLayout(n,e.types)]}));this.layouts=new Map(t),this.discriminators=new Map(void 0===e.events?[]:e.events.map((e=>{return[H.fromByteArray((t=e.name,V.from(O.sha256.digest(`event:${t}`)).slice(0,8))),e.name];var t})))}decode(e){let t;try{t=V.from(H.toByteArray(e))}catch(e){return null}const n=H.fromByteArray(t.slice(0,8)),i=this.discriminators.get(n);return void 0===i?null:{data:this.layouts.get(i).decode(t.slice(8)),name:i}}}const $=new Set(["anchor-deprecated-state"]),ee=new Map;function te(e){if(!$.has(e))throw new Error("Invalid feature");ee.set(e,!0)}function ne(e){return void 0!==ee.get(e)}var ie=n(55872).Buffer;class re{constructor(e){if(void 0===e.state)throw new Error("Idl state not defined.");this.layout=T.typeDefLayout(e.state.struct,e.types)}async encode(e,t){const n=ie.alloc(1e3),i=this.layout.encode(t,n),r=await oe(e),o=n.slice(0,i);return ie.concat([r,o])}decode(e){const t=e.slice(8);return this.layout.decode(t)}}async function oe(e){let t=ne("anchor-deprecated-state")?"account":"state";return ie.from(O.sha256.digest(`${t}:${e}`)).slice(0,8)}class Ae{constructor(e){this.instruction=new Y(e),this.accounts=new J(e),this.types=new z(e),this.events=new X(e),e.state&&(this.state=new re(e))}sighash(e,t){return x(e,t)}}var se=n(33859),ae=n(50189);n(55872).Buffer;const ce=v.struct([v.publicKey("authority"),v.vecU8("data")]);var ue=n(11312),le=n.n(ue);function ge(e){const t=new Map;return e.errors&&e.errors.forEach((e=>{var n;let i=null!==(n=e.msg)&&void 0!==n?n:e.name;t.set(e.code,i)})),t}function de(e,...t){if(e.args.length!=t.length)throw new Error("Invalid argument length");const n={};let i=0;return e.args.forEach((e=>{n[e.name]=t[i],i+=1})),n}function he(e,t){e.forEach((e=>{if(void 0!==e.accounts)he(e.accounts,t[e.name]);else if(void 0===t[e.name])throw new Error(`Invalid arguments: ${e.name} not provided.`)}))}function pe(e){return"string"==typeof e?new m.PublicKey(e):e}var fe=n(55872).Buffer;function me(e,t,n){const i=fe.concat([e.toBuffer(),fe.from(t),n.toBuffer()]),r=O.sha256.digest(i);return new m.PublicKey(fe.from(r))}function Ie(e,t){let n=fe.alloc(0);e.forEach((function(e){if(e.length>32)throw new TypeError("Max seed length exceeded");n=fe.concat([n,Be(e)])})),n=fe.concat([n,t.toBuffer(),fe.from("ProgramDerivedAddress")]);let i=(0,O.sha256)(new Uint8Array(n)),r=new(f())(i,16).toArray(void 0,32);if(m.PublicKey.isOnCurve(new Uint8Array(r)))throw new Error("Invalid seeds, address must fall off the curve");return new m.PublicKey(r)}function ye(e,t){let n,i=255;for(;0!=i;){try{n=Ie(e.concat(fe.from([i])),t)}catch(e){if(e instanceof TypeError)throw e;i--;continue}return[n,i]}throw new Error("Unable to find a viable program address nonce")}const Be=e=>e instanceof fe?e:e instanceof Uint8Array?fe.from(e.buffer,e.byteOffset,e.byteLength):fe.from(e);async function Ce(e,...t){let n=[fe.from([97,110,99,104,111,114])];t.forEach((e=>{n.push(void 0!==e.buffer?e:pe(e).toBuffer())}));const[i]=await m.PublicKey.findProgramAddress(n,pe(e));return i}function we(e,t){let n={};const i=e.args?e.args.length:0;if(t.length>i){if(t.length!==i+1)throw new Error("provided too many arguments ${args}");n=t.pop()}return[t,n]}var Ee=n(49500);class Qe{static build(e,t,n){if("_inner"===e.name)throw new M("the _inner name is reserved");const i=(...r)=>{const[o,A]=we(e,[...r]);he(e.accounts,A.accounts);const s=i.accounts(A.accounts);return void 0!==A.remainingAccounts&&s.push(...A.remainingAccounts),A.__private&&A.__private.logAccounts&&Ee.log("Outgoing account metas:",s),new m.TransactionInstruction({keys:s,programId:n,data:t(e.name,de(e,...o))})};return i.accounts=t=>Qe.accountsArray(t,e.accounts),i}static accountsArray(e,t){return t.map((t=>{const n=t.accounts;if(void 0!==n){const i=e[t.name];return Qe.accountsArray(i,n).flat()}{const n=t;return{pubkey:pe(e[t.name]),isWritable:n.isMut,isSigner:n.isSigner}}})).flat()}}var be=n(49500);class ke{static build(e,t,n,i){return async(...r)=>{const o=t(...r),[,A]=we(e,[...r]);try{return await i.send(o,A.signers,A.options)}catch(e){be.log("Translating error",e);let t=D.parse(e,n);if(null===t)throw e;throw t}}}}class ve{static build(e,t){return(...n)=>{const[,i]=we(e,[...n]),r=new m.Transaction;return void 0!==i.instructions&&r.add(...i.instructions),r.add(t(...n)),r}}}var Se=n(49500);class Me{static build(e,t,n,i){if(void 0!==e.state)return new De(e,n,i,t)}}class De{constructor(e,t,n,i){this._idl=e,this._programId=t,this._address=Ne(t),this._provider=null!=n?n:E(),this._coder=null!=i?i:new Ae(e),this._sub=null;const[r,o,A]=(()=>{let r={},o={},A={};return e.state.methods.forEach((s=>{const a=Qe.build(s,((e,t)=>i.instruction.encodeState(e,t)),t);a.accounts=e=>{const i=function(e,t,n,i){if("new"===n.name){const[n]=ye([],e);return[{pubkey:t.wallet.publicKey,isWritable:!1,isSigner:!0},{pubkey:Ne(e),isWritable:!0,isSigner:!1},{pubkey:n,isWritable:!1,isSigner:!1},{pubkey:m.SystemProgram.programId,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!1,isSigner:!1},{pubkey:m.SYSVAR_RENT_PUBKEY,isWritable:!1,isSigner:!1}]}return he(n.accounts,i),[{pubkey:Ne(e),isWritable:!0,isSigner:!1}]}(t,n,s,e);return i.concat(Qe.accountsArray(e,s.accounts))};const c=ve.build(s,a),u=ke.build(s,c,ge(e),n),l=k()(s.name);r[l]=a,o[l]=c,A[l]=u})),[r,o,A]})();this.instruction=r,this.transaction=o,this.rpc=A}get programId(){return this._programId}get provider(){return this._provider}get coder(){return this._coder}async fetch(){const e=this.address(),t=await this.provider.connection.getAccountInfo(e);if(null===t)throw new Error(`Account does not exist ${e.toString()}`);if((await oe(this._idl.state.struct.name)).compare(t.data.slice(0,8)))throw new Error("Invalid account discriminator");return this.coder.state.decode(t.data)}address(){return this._address}subscribe(e){if(null!==this._sub)return this._sub.ee;const t=new(le()),n=this.provider.connection.onAccountChange(this.address(),(e=>{const n=this.coder.state.decode(e.data);t.emit("change",n)}),e);return this._sub={ee:t,listener:n},t}unsubscribe(){null!==this._sub&&this.provider.connection.removeAccountChangeListener(this._sub.listener).then((async()=>{this._sub=null})).catch(Se.error)}}function Ne(e){let[t]=ye([],e);return me(t,"unversioned",e)}var Te=n(55872).Buffer,Pe=n(49500);class Oe{static build(e,t,n,i){const r={};return e.accounts.forEach((o=>{const A=k()(o.name);r[A]=new Fe(e,o,n,i,t)})),r}}class Fe{constructor(e,t,n,i,r){this._idlAccount=t,this._programId=n,this._provider=null!=i?i:E(),this._coder=null!=r?r:new Ae(e),this._size=8+R(e,t)}get size(){return this._size}get programId(){return this._programId}get provider(){return this._provider}get coder(){return this._coder}async fetch(e){const t=await this._provider.connection.getAccountInfo(pe(e));if(null===t)throw new Error(`Account does not exist ${e.toString()}`);if((await q(this._idlAccount.name)).compare(t.data.slice(0,8)))throw new Error("Invalid account discriminator");return this._coder.accounts.decode(this._idlAccount.name,t.data)}async all(e){let t=await q(this._idlAccount.name);return void 0!==e&&(t=Te.concat([t,e])),(await this._provider.connection.getProgramAccounts(this._programId,{commitment:this._provider.connection.commitment,filters:[{memcmp:{offset:0,bytes:S.encode(t)}}]})).map((({pubkey:e,account:t})=>({publicKey:e,account:this._coder.accounts.decode(this._idlAccount.name,t.data)})))}subscribe(e,t){if(Re.get(e.toString()))return Re.get(e.toString()).ee;const n=new(le());e=pe(e);const i=this._provider.connection.onAccountChange(e,(e=>{const t=this._coder.accounts.decode(this._idlAccount.name,e.data);n.emit("change",t)}),t);return Re.set(e.toString(),{ee:n,listener:i}),n}unsubscribe(e){let t=Re.get(e.toString());t?Re&&this._provider.connection.removeAccountChangeListener(t.listener).then((()=>{Re.delete(e.toString())})).catch(Pe.error):Pe.warn("Address is not subscribed")}async createInstruction(e,t){const n=this.size;return m.SystemProgram.createAccount({fromPubkey:this._provider.wallet.publicKey,newAccountPubkey:e.publicKey,space:null!=t?t:n,lamports:await this._provider.connection.getMinimumBalanceForRentExemption(null!=t?t:n),programId:this._programId})}async associated(...e){const t=await this.associatedAddress(...e);return await this.fetch(t)}async associatedAddress(...e){return await Ce(this._programId,...e)}}const Re=new Map;var Ge=n(42943),xe=n.n(Ge);const Ue="Program log: ".length;class _e{constructor(e,t){this.coder=e,this.programId=t}parseLogs(e,t){const n=new Ke(e),i=new Le(n.next());let r=n.next();for(;null!==r;){let[e,o,A]=this.handleLog(i,r);e&&t(e),o&&i.push(o),A&&i.pop(),r=n.next()}}handleLog(e,t){return e.program()===this.programId.toString()?this.handleProgramLog(t):[null,...this.handleSystemLog(t)]}handleProgramLog(e){if(e.startsWith("Program log:")){const t=e.slice(Ue);return[this.coder.events.decode(t),null,!1]}return[null,...this.handleSystemLog(e)]}handleSystemLog(e){const t=e.split(":")[0];return null!==t.match(/^Program (.*) success/g)?[null,!0]:t.startsWith(`Program ${this.programId.toString()} invoke`)?[this.programId.toString(),!1]:t.includes("invoke")?["cpi",!1]:[null,!1]}}class Le{constructor(e){const t=/^Program (.*) invoke.*$/g.exec(e)[1];this.stack=[t]}program(){return Ge.ok(this.stack.length>0),this.stack[this.stack.length-1]}push(e){this.stack.push(e)}pop(){Ge.ok(this.stack.length>0),this.stack.pop()}}class Ke{constructor(e){this.logs=e}next(){if(0===this.logs.length)return null;let e=this.logs[0];return this.logs=this.logs.slice(1),e}}var Ye=n(49500);class je{static build(e,t,n,i,r,o,A){return async(...s)=>{const a=t(...s),[,c]=we(e,[...s]);let u;try{u=await i.simulate(a,c.signers,c.options)}catch(e){Ye.log("Translating error",e);let t=D.parse(e,n);if(null===t)throw e;throw t}if(void 0===u)throw new Error("Unable to simulate transaction");if(u.value.err)throw new Error(`Simulate error: ${u.value.err.toString()}`);const l=u.value.logs;if(!l)throw new Error("Simulated logs not found");const g=[];return A.events&&new _e(r,o).parseLogs(l,(e=>{g.push(e)})),{events:g,raw:l}}}}class We{static build(e,t,n,i){const r={},o={},A={},s={},a=ge(e),c=Me.build(e,t,n,i);e.instructions.forEach((c=>{const u=Qe.build(c,((e,n)=>t.instruction.encode(e,n)),n),l=ve.build(c,u),g=ke.build(c,l,a,i),d=je.build(c,l,a,i,t,n,e),h=k()(c.name);o[h]=u,A[h]=l,r[h]=g,s[h]=d}));const u=e.accounts?Oe.build(e,t,n,i):{};return[r,o,A,u,s,c]}}var Je=n(55872).Buffer;function qe(e){return e.reduce(((e,t)=>e+t.toString(16).padStart(2,"0")),"0x")}function Ze(e){0===e.indexOf("0x")&&(e=e.substr(2)),e.length%2==1&&(e="0"+e);let t=e.match(/.{2}/g);return null===t?Je.from([]):Je.from(t.map((e=>parseInt(e,16))))}function ze(e){return("undefined"==typeof TextDecoder?new(n(93585).TextDecoder)("utf-8"):new TextDecoder("utf-8")).decode(e)}function He(e){return("undefined"==typeof TextEncoder?new(n(93585).TextEncoder)("utf-8"):new TextEncoder).encode(e)}function Ve(e){return S.encode(e)}function Xe(e){return S.decode(e)}var $e=n(55872).Buffer;function et(e){return H.fromByteArray(e)}function tt(e){return $e.from(H.toByteArray(e))}var nt=n(49500);class it{constructor(e,t,n){t=pe(t),this._idl=e,this._programId=t,this._provider=null!=n?n:E(),this._coder=new Ae(e);const[i,r,o,A,s,a]=We.build(e,this._coder,t,this._provider);this.rpc=i,this.instruction=r,this.transaction=o,this.account=A,this.simulate=s,this.state=a}get programId(){return this._programId}get idl(){return this._idl}get coder(){return this._coder}get provider(){return this._provider}static async at(e,t){const n=pe(e),i=await it.fetchIdl(n,t);return new it(i,n,t)}static async fetchIdl(e,t){t=null!=t?t:E();const n=pe(e),i=await async function(e){const t=(await m.PublicKey.findProgramAddress([],e))[0];return await m.PublicKey.createWithSeed(t,"anchor:idl",e)}(n);let r=(o=(await t.connection.getAccountInfo(i)).data.slice(8),ce.decode(o));var o;const A=(0,ae.rr)(r.data);return JSON.parse(ze(A))}addEventListener(e,t){const n=new _e(this._coder,this._programId);return this._provider.connection.onLogs(this._programId,((i,r)=>{i.err?nt.error(i):n.parseLogs(i.logs,(n=>{n.name===e&&t(n.data,r.slot)}))}))}async removeEventListener(e){return this._provider.connection.removeOnLogsListener(e)}}var rt=n(49500);let ot=!1;const At=new Proxy({},{get(e,t){if(I)return void rt.log("Workspaces aren't available in the browser");const i=n(39518),r=n(14224);if(!ot){const t=n(62005);let o=r.cwd();for(;!i.existsSync(t.join(o,"Anchor.toml"));){const e=t.dirname(o);e===o&&(o=void 0),o=e}if(void 0===o)throw new Error("Could not find workspace root.");const A=`${o}/target/idl`;if(!i.existsSync(A))throw new Error(`${A} doesn't exist. Did you use "anchor build"?`);const s=new Map;i.readdirSync(A).forEach((t=>{const n=`${A}/${t}`,r=i.readFileSync(n),o=JSON.parse(r);s.set(o.name,o);const a=k()(o.name,{pascalCase:!0});o.metadata&&o.metadata.address&&(e[a]=new it(o,new m.PublicKey(o.metadata.address)))}));const a=se.parse(i.readFileSync(t.join(o,"Anchor.toml"),"utf-8")),c=a.provider.cluster;a.clusters&&a.clusters[c]&&function(e,t,i){Object.keys(t).forEach((r=>{const o=k()(r,{pascalCase:!0}),A=t[r],s=new m.PublicKey("string"==typeof A?A:A.address);let a=i.get(r);"string"!=typeof A&&A.idl&&(a=JSON.parse(n(39518).readFileSync(A.idl,"utf-8"))),e[o]=new it(a,s)}))}(e,a.clusters[c],s),ot=!0}return e[t]}});function st(e){return(0,O.sha256)(e)}var at=n(55872).Buffer;async function ct(e,t,n,i){e=pe(e),i||(i=E());const r=new m.Transaction;return r.add(new m.TransactionInstruction({programId:e,keys:null!=t?t:[],data:n})),await i.send(r)}async function ut(e,t){const n=[t.map((e=>e.toBase58())),{commitment:"recent"}],i=await e._rpcRequest("getMultipleAccounts",n);if(i.error)throw new Error("failed to get info about accounts "+t.map((e=>e.toBase58())).join(", ")+": "+i.error.message);xe()(void 0!==i.result);const r=[];for(const e of i.result.value){let t=null;if(null!==e){if(i.result.value){const{executable:n,owner:i,lamports:r,data:o}=e;xe()("base64"===o[1]),t={executable:n,owner:new m.PublicKey(i),lamports:r,data:at.from(o[0],"base64")}}if(null===t)throw new Error("Invalid response");r.push(t)}else r.push(null)}return r.map(((e,n)=>null===e?null:{publicKey:t[n],account:e}))}const lt=new m.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),gt=new m.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");async function dt({mint:e,owner:t}){return(await m.PublicKey.findProgramAddress([t.toBuffer(),lt.toBuffer(),e.toBuffer()],gt))[0]}},43352:(e,t,n)=>{"use strict";n.r(t),n.d(t,{AccountClient:()=>be,AccountsCoder:()=>U,BN:()=>r.a,Coder:()=>q,EventCoder:()=>_,EventManager:()=>Se,EventParser:()=>Me,IdlError:()=>Q,InstructionCoder:()=>G,Program:()=>Te,ProgramError:()=>b,Provider:()=>B,StateClient:()=>Ee,StateCoder:()=>W,getProvider:()=>w,parseIdlErrors:()=>z,setProvider:()=>C,splitArgsAndCtx:()=>ye,toInstruction:()=>H,translateAddress:()=>X,utils:()=>me,validateAccounts:()=>V,web3:()=>o});var i=n(39098),r=n.n(i),o=n(97212),A=n(55872),s=n(81036),a=n.n(s),c=n(992),u=n(31511),l=n.n(u),g=n(39489),d=n(65415),h=n(42943),p=n.n(h),f=n(50189),m=n(11312),I=n.n(m),y=n(49500);class B{constructor(e,t,n){this.connection=e,this.wallet=t,this.opts=n}static defaultOptions(){return{preflightCommitment:"processed",commitment:"processed"}}static local(e,t){throw new Error("Provider local is not available on browser.")}static env(){throw new Error("Provider env is not available on browser.")}async send(e,t,n){void 0===t&&(t=[]),void 0===n&&(n=this.opts),e.feePayer=this.wallet.publicKey,e.recentBlockhash=(await this.connection.getRecentBlockhash(n.preflightCommitment)).blockhash,await this.wallet.signTransaction(e),t.filter((e=>void 0!==e)).forEach((t=>{e.partialSign(t)}));const i=e.serialize();return await(0,o.sendAndConfirmRawTransaction)(this.connection,i,n)}async sendAll(e,t){void 0===t&&(t=this.opts);const n=await this.connection.getRecentBlockhash(t.preflightCommitment);let i=e.map((e=>{let t=e.tx,i=e.signers;return void 0===i&&(i=[]),t.feePayer=this.wallet.publicKey,t.recentBlockhash=n.blockhash,i.filter((e=>void 0!==e)).forEach((e=>{t.partialSign(e)})),t}));const r=await this.wallet.signAllTransactions(i),A=[];for(let e=0;evoid 0!==e)).forEach((t=>{e.partialSign(t)})),await async function(e,t,n){t.recentBlockhash=await e._recentBlockhash(e._disableBlockhashCaching);const i=t.serializeMessage(),r=[t._serialize(i).toString("base64"),{encoding:"base64",commitment:n}],o=await e._rpcRequest("simulateTransaction",r);if(o.error)throw new Error("failed to simulate transaction: "+o.error.message);return o.result}(this.connection,e,null!==(o=null!==(r=n.commitment)&&void 0!==r?r:this.opts.commitment)&&void 0!==o?o:"processed")}}function C(e){E=e}function w(){return null===E?B.local():E}let E=null;class Q extends Error{constructor(e){super(e),this.name="IdlError"}}class b extends Error{constructor(e,t,...n){super(...n),this.code=e,this.msg=t}static parse(e,t){let n,i=e.toString().split("custom program error: ");if(2!==i.length)return null;try{n=parseInt(i[1])}catch(e){return null}let r=t.get(n);return void 0!==r?new b(n,r,n+": "+r):(r=k.get(n),void 0!==r?new b(n,r,n+": "+r):null)}toString(){return this.msg}}const k=new Map([[100,"8 byte instruction identifier not provided"],[101,"Fallback functions are not supported"],[102,"The program could not deserialize the given instruction"],[103,"The program could not serialize the given instruction"],[1e3,"The program was compiled without idl instructions"],[1001,"The transaction was given an invalid program for the IDL instruction"],[2e3,"A mut constraint was violated"],[2001,"A has_one constraint was violated"],[2002,"A signer constraint was violated"],[2003,"A raw constraint was violated"],[2004,"An owner constraint was violated"],[2005,"A rent exempt constraint was violated"],[2006,"A seeds constraint was violated"],[2007,"An executable constraint was violated"],[2008,"A state constraint was violated"],[2009,"An associated constraint was violated"],[2010,"An associated init constraint was violated"],[2011,"A close constraint was violated"],[2012,"An address constraint was violated"],[2013,"Expected zero account discriminant"],[2014,"A token mint constraint was violated"],[2015,"A token owner constraint was violated"],[2016,"A mint mint authority constraint was violated"],[2017,"A mint freeze authority constraint was violated"],[2018,"A mint decimals constraint was violated"],[2019,"A space constraint was violated"],[3e3,"The account discriminator was already set on this account"],[3001,"No 8 byte discriminator was found on the account"],[3002,"8 byte discriminator did not match what was expected"],[3003,"Failed to deserialize the account"],[3004,"Failed to serialize the account"],[3005,"Not enough account keys given to the instruction"],[3006,"The given account is not mutable"],[3007,"The given account is owned by a different program than expected"],[3008,"Program ID was not as expected"],[3009,"Program account is not executable"],[3010,"The given account did not sign"],[3011,"The given account is not owned by the system program"],[3012,"The program expected this account to be already initialized"],[3013,"The given account is not a program data account"],[3014,"The given account is not the associated token account"],[4e3,"The given state account does not have the correct address"],[5e3,"The API being used is deprecated and should no longer be used"]]);class v{static fieldLayout(e,t){const n=void 0!==e.name?a()(e.name):void 0;switch(e.type){case"bool":return c.bool(n);case"u8":return c.u8(n);case"i8":return c.i8(n);case"u16":return c.u16(n);case"i16":return c.i16(n);case"u32":return c.u32(n);case"i32":return c.i32(n);case"u64":return c.u64(n);case"i64":return c.i64(n);case"u128":return c.u128(n);case"i128":return c.i128(n);case"bytes":return c.vecU8(n);case"string":return c.str(n);case"publicKey":return c.publicKey(n);default:if("vec"in e.type)return c.vec(v.fieldLayout({name:void 0,type:e.type.vec},t),n);if("option"in e.type)return c.option(v.fieldLayout({name:void 0,type:e.type.option},t),n);if("defined"in e.type){const i=e.type.defined;if(void 0===t)throw new Q("User defined types not provided");const r=t.filter((e=>e.name===i));if(1!==r.length)throw new Q(`Type not found: ${JSON.stringify(e)}`);return v.typeDefLayout(r[0],t,n)}if("array"in e.type){let i=e.type.array[0],r=e.type.array[1],o=v.fieldLayout({name:void 0,type:i},t);return c.array(o,r,n)}throw new Error(`Not yet implemented: ${e}`)}}static typeDefLayout(e,t=[],n){if("struct"===e.type.kind){const i=e.type.fields.map((e=>v.fieldLayout(e,t)));return c.struct(i,n)}if("enum"===e.type.kind){let i=e.type.variants.map((e=>{const n=a()(e.name);if(void 0===e.fields)return c.struct([],n);const i=e.fields.map((e=>{if(!e.hasOwnProperty("name"))throw new Error("Tuple enum variants not yet implemented.");return v.fieldLayout(e,t)}));return c.struct(i,n)}));return void 0!==n?c.rustEnum(i).replicate(n):c.rustEnum(i,n)}throw new Error(`Unknown type kint: ${e}`)}}var S=function(){return S=Object.assign||function(e){for(var t,n=1,i=arguments.length;nvoid 0===t.fields?0:t.fields.map((t=>{if("object"!=typeof t||!("name"in t))throw new Error("Tuple enum variants not yet implemented.");return F(e,t.type)})).reduce(((e,t)=>e+t))));return Math.max(...n)+1}return void 0===t.type.fields?0:t.type.fields.map((t=>F(e,t.type))).reduce(((e,t)=>e+t),0)}function F(e,t){var n,i;switch(t){case"bool":case"u8":case"i8":case"bytes":case"string":return 1;case"i16":case"u16":return 2;case"u32":case"i32":return 4;case"u64":case"i64":return 8;case"u128":case"i128":return 16;case"publicKey":return 32;default:if("vec"in t)return 1;if("option"in t)return 1+F(e,t.option);if("defined"in t){const r=null!==(i=null===(n=e.types)||void 0===n?void 0:n.filter((e=>e.name===t.defined)))&&void 0!==i?i:[];if(1!==r.length)throw new Q(`Type not found: ${JSON.stringify(t)}`);return O(e,r[0])}if("array"in t){let n=t.array[0],i=t.array[1];return F(e,n)*i}throw new Error(`Invalid type ${JSON.stringify(t)}`)}}function R(e,t){var n;let i=`${e}:${void 0===n&&(n={}),function(e,t){return void 0===t&&(t={}),function(e,t){void 0===t&&(t={});for(var n=t.splitRegexp,i=void 0===n?N:n,r=t.stripRegexp,o=void 0===r?T:r,A=t.transform,s=void 0===A?D:A,a=t.delimiter,c=void 0===a?" ":a,u=P(P(e,i,"$1\0$2"),o,"\0"),l=0,g=u.length;"\0"===u.charAt(l);)l++;for(;"\0"===u.charAt(g-1);)g--;return u.slice(l,g).split("\0").map(s).join(c)}(e,M({delimiter:"."},t))}(t,S({delimiter:"_"},n))}`;return A.Buffer.from(g.sha256.digest(i)).slice(0,8)}class G{constructor(e){this.idl=e,this.ixLayout=G.parseIxLayout(e);const t=new Map;e.instructions.forEach((e=>{const n=R("global",e.name);t.set(l().encode(n),{layout:this.ixLayout.get(e.name),name:e.name})})),e.state&&e.state.methods.map((e=>{const n=R("state",e.name);t.set(l().encode(n),{layout:this.ixLayout.get(e.name),name:e.name})})),this.sighashLayouts=t}encode(e,t){return this._encode("global",e,t)}encodeState(e,t){return this._encode("state",e,t)}_encode(e,t,n){const i=A.Buffer.alloc(1e3),r=a()(t),o=this.ixLayout.get(r);if(!o)throw new Error(`Unknown method: ${r}`);const s=o.encode(n,i),c=i.slice(0,s);return A.Buffer.concat([R(e,t),c])}static parseIxLayout(e){const t=(e.state?e.state.methods:[]).map((t=>{let n=t.args.map((t=>{var n,i;return v.fieldLayout(t,Array.from([...null!==(n=e.accounts)&&void 0!==n?n:[],...null!==(i=e.types)&&void 0!==i?i:[]]))}));const i=a()(t.name);return[i,c.struct(n,i)]})).concat(e.instructions.map((t=>{let n=t.args.map((t=>{var n,i;return v.fieldLayout(t,Array.from([...null!==(n=e.accounts)&&void 0!==n?n:[],...null!==(i=e.types)&&void 0!==i?i:[]]))}));const i=a()(t.name);return[i,c.struct(n,i)]})));return new Map(t)}decode(e,t="hex"){"string"==typeof e&&(e="hex"===t?A.Buffer.from(e,"hex"):l().decode(e));let n=l().encode(e.slice(0,8)),i=e.slice(8);const r=this.sighashLayouts.get(n);return r?{data:r.layout.decode(i),name:r.name}:null}format(e,t){return x.format(e,t,this.idl)}}class x{static format(e,t,n){const i=n.instructions.filter((t=>e.name===t.name))[0];if(void 0===i)return y.error("Invalid instruction given"),null;const r=i.args.map((t=>({name:t.name,type:x.formatIdlType(t.type),data:x.formatIdlData(t,e.data[t.name],n.types)}))),o=x.flattenIdlAccounts(i.accounts);return{args:r,accounts:t.map(((e,t)=>t`;if("option"in e)return`Option<${this.formatIdlType(e.option)}>`;if("defined"in e)return e.defined;if("array"in e)return`Array<${e.array[0]}; ${e.array[1]}>`;throw new Error(`Unknown IDL type: ${e}`)}static formatIdlData(e,t,n){if("string"==typeof e.type)return t.toString();if(e.type.hasOwnProperty("vec"))return"["+t.map((t=>this.formatIdlData({name:"",type:e.type.vec},t))).join(", ")+"]";if(e.type.hasOwnProperty("option"))return null===t?"null":this.formatIdlData({name:"",type:e.type.option},t);if(e.type.hasOwnProperty("defined")){if(void 0===n)throw new Error("User defined types not provided");const i=n.filter((t=>t.name===e.type.defined));if(1!==i.length)throw new Error(`Type not found: ${e.type.defined}`);return x.formatIdlDataDefined(i[0],t,n)}return"unknown"}static formatIdlDataDefined(e,t,n){if("struct"===e.type.kind){const i=e.type;return"{ "+Object.keys(t).map((e=>{const r=i.fields.filter((t=>t.name===e))[0];if(void 0===r)throw new Error("Unable to find type");return e+": "+x.formatIdlData(r,t[e],n)})).join(", ")+" }"}if(0===e.type.variants.length)return"{}";if(e.type.variants[0].name){const i=e.type.variants,r=Object.keys(t)[0],o=t[r],A=Object.keys(o).map((e=>{var t;const A=o[e],s=null===(t=i[r])||void 0===t?void 0:t.filter((t=>t.name===e))[0];if(void 0===s)throw new Error("Unable to find variant");return e+": "+x.formatIdlData(s,A,n)})).join(", "),s=a()(r,{pascalCase:!0});return 0===A.length?s:`${s} { ${A} }`}return"Tuple formatting not yet implemented"}static flattenIdlAccounts(e,t){return e.map((e=>{const n=function(e){const t=e.replace(/([A-Z])/g," $1");return t.charAt(0).toUpperCase()+t.slice(1)}(e.name);if(e.hasOwnProperty("accounts")){const i=t?`${t} > ${n}`:n;return x.flattenIdlAccounts(e.accounts,i)}return{...e,name:t?`${t} > ${n}`:n}})).flat()}}class U{constructor(e){if(void 0===e.accounts)return void(this.accountLayouts=new Map);const t=e.accounts.map((t=>[t.name,v.typeDefLayout(t,e.types)]));this.accountLayouts=new Map(t)}async encode(e,t){const n=A.Buffer.alloc(1e3),i=this.accountLayouts.get(e);if(!i)throw new Error(`Unknown account: ${e}`);const r=i.encode(t,n);let o=n.slice(0,r),s=U.accountDiscriminator(e);return A.Buffer.concat([s,o])}decode(e,t){const n=t.slice(8),i=this.accountLayouts.get(e);if(!i)throw new Error(`Unknown account: ${e}`);return i.decode(n)}static accountDiscriminator(e){return A.Buffer.from(g.sha256.digest(`account:${a()(e,{pascalCase:!0})}`)).slice(0,8)}}class _{constructor(e){if(void 0===e.events)return void(this.layouts=new Map);const t=e.events.map((t=>{let n={name:t.name,type:{kind:"struct",fields:t.fields.map((e=>({name:e.name,type:e.type})))}};return[t.name,v.typeDefLayout(n,e.types)]}));this.layouts=new Map(t),this.discriminators=new Map(void 0===e.events?[]:e.events.map((e=>{return[d.fromByteArray((t=e.name,A.Buffer.from(g.sha256.digest(`event:${t}`)).slice(0,8))),e.name];var t})))}decode(e){let t;try{t=A.Buffer.from(d.toByteArray(e))}catch(e){return null}const n=d.fromByteArray(t.slice(0,8)),i=this.discriminators.get(n);if(void 0===i)return null;const r=this.layouts.get(i);if(!r)throw new Error(`Unknown event: ${i}`);return{data:r.decode(t.slice(8)),name:i}}}const L=new Set(["anchor-deprecated-state"]),K=new Map;function Y(e){return void 0!==K.get(e)}var j=Object.freeze({__proto__:null,set:function(e){if(!L.has(e))throw new Error("Invalid feature");K.set(e,!0)},isSet:Y});class W{constructor(e){if(void 0===e.state)throw new Error("Idl state not defined.");this.layout=v.typeDefLayout(e.state.struct,e.types)}async encode(e,t){const n=A.Buffer.alloc(1e3),i=this.layout.encode(t,n),r=await J(e),o=n.slice(0,i);return A.Buffer.concat([r,o])}decode(e){const t=e.slice(8);return this.layout.decode(t)}}async function J(e){let t=Y("anchor-deprecated-state")?"account":"state";return A.Buffer.from(g.sha256.digest(`${t}:${e}`)).slice(0,8)}class q{constructor(e){this.instruction=new G(e),this.accounts=new U(e),this.events=new _(e),e.state&&(this.state=new W(e))}sighash(e,t){return R(e,t)}}var Z=Object.freeze({__proto__:null,hash:function(e){return(0,g.sha256)(e)}});function z(e){const t=new Map;return e.errors&&e.errors.forEach((e=>{var n;let i=null!==(n=e.msg)&&void 0!==n?n:e.name;t.set(e.code,i)})),t}function H(e,...t){if(e.args.length!=t.length)throw new Error("Invalid argument length");const n={};let i=0;return e.args.forEach((e=>{n[e.name]=t[i],i+=1})),n}function V(e,t={}){e.forEach((e=>{if("accounts"in e)V(e.accounts,t[e.name]);else if(void 0===t[e.name])throw new Error(`Invalid arguments: ${e.name} not provided.`)}))}function X(e){return e instanceof o.PublicKey?e:new o.PublicKey(e)}async function $(e,t,n){if(t.length<=99)return await ee(e,t,n);{const r=(i=t,Array.apply(0,new Array(Math.ceil(i.length/99))).map(((e,t)=>i.slice(99*t,99*(t+1)))));return(await Promise.all(r.map((t=>ee(e,t,n))))).flat()}var i}async function ee(e,t,n){const i=null!=n?n:e.commitment,r=[t.map((e=>e.toBase58()))];i&&r.push({commitment:i});const s=await e._rpcRequest("getMultipleAccounts",r);if(s.error)throw new Error("failed to get info about accounts "+t.map((e=>e.toBase58())).join(", ")+": "+s.error.message);p()(void 0!==s.result);const a=[];for(const e of s.result.value){let t=null;if(null!==e){if(s.result.value){const{executable:n,owner:i,lamports:r,data:s}=e;p()("base64"===s[1]),t={executable:n,owner:new o.PublicKey(i),lamports:r,data:A.Buffer.from(s[0],"base64")}}if(null===t)throw new Error("Invalid response");a.push(t)}else a.push(null)}return a.map(((e,n)=>null===e?null:{publicKey:t[n],account:e}))}var te=Object.freeze({__proto__:null,invoke:async function(e,t,n,i){e=X(e),i||(i=w());const r=new o.Transaction;return r.add(new o.TransactionInstruction({programId:e,keys:null!=t?t:[],data:n})),await i.send(r)},getMultipleAccounts:$});function ne(e,t,n){const i=A.Buffer.concat([e.toBuffer(),A.Buffer.from(t),n.toBuffer()]),r=g.sha256.digest(i);return new o.PublicKey(A.Buffer.from(r))}function ie(e,t){let n=A.Buffer.alloc(0);e.forEach((function(e){if(e.length>32)throw new TypeError("Max seed length exceeded");n=A.Buffer.concat([n,oe(e)])})),n=A.Buffer.concat([n,t.toBuffer(),A.Buffer.from("ProgramDerivedAddress")]);let i=(0,g.sha256)(new Uint8Array(n)),s=new(r())(i,16).toArray(void 0,32);if(o.PublicKey.isOnCurve(new Uint8Array(s)))throw new Error("Invalid seeds, address must fall off the curve");return new o.PublicKey(s)}function re(e,t){let n,i=255;for(;0!=i;){try{n=ie(e.concat(A.Buffer.from([i])),t)}catch(e){if(e instanceof TypeError)throw e;i--;continue}return[n,i]}throw new Error("Unable to find a viable program address nonce")}const oe=e=>e instanceof A.Buffer?e:e instanceof Uint8Array?A.Buffer.from(e.buffer,e.byteOffset,e.byteLength):A.Buffer.from(e);async function Ae(e,...t){let n=[A.Buffer.from([97,110,99,104,111,114])];t.forEach((e=>{n.push(e instanceof A.Buffer?e:X(e).toBuffer())}));const[i]=await o.PublicKey.findProgramAddress(n,X(e));return i}var se=Object.freeze({__proto__:null,createWithSeedSync:ne,createProgramAddressSync:ie,findProgramAddressSync:re,associated:Ae}),ae=Object.freeze({__proto__:null,encode:function(e){return e.reduce(((e,t)=>e+t.toString(16).padStart(2,"0")),"0x")},decode:function(e){0===e.indexOf("0x")&&(e=e.substr(2)),e.length%2==1&&(e="0"+e);let t=e.match(/.{2}/g);return null===t?A.Buffer.from([]):A.Buffer.from(t.map((e=>parseInt(e,16))))}});function ce(e){return new TextDecoder("utf-8").decode(e)}var ue=Object.freeze({__proto__:null,decode:ce,encode:function(e){return(new TextEncoder).encode(e)}}),le=Object.freeze({__proto__:null,encode:function(e){return l().encode(e)},decode:function(e){return l().decode(e)}}),ge=Object.freeze({__proto__:null,encode:function(e){return d.fromByteArray(e)},decode:function(e){return A.Buffer.from(d.toByteArray(e))}}),de=Object.freeze({__proto__:null,hex:ae,utf8:ue,bs58:le,base64:ge});const he=new o.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),pe=new o.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");var fe=Object.freeze({__proto__:null,associatedAddress:async function({mint:e,owner:t}){return(await o.PublicKey.findProgramAddress([t.toBuffer(),he.toBuffer(),e.toBuffer()],pe))[0]}}),me=Object.freeze({__proto__:null,sha256:Z,rpc:te,publicKey:se,bytes:de,token:fe,features:j});const Ie=c.struct([c.publicKey("authority"),c.vecU8("data")]);function ye(e,t){var n,i;let r={};const o=e.args?e.args.length:0;if(t.length>o){if(t.length!==o+1)throw new Error(`provided too many arguments ${t} to instruction ${null==e?void 0:e.name} expecting: ${null!==(i=null===(n=e.args)||void 0===n?void 0:n.map((e=>e.name)))&&void 0!==i?i:[]}`);r=t.pop()}return[t,r]}class Be{static build(e,t,n){if("_inner"===e.name)throw new Q("the _inner name is reserved");const i=(...r)=>{const[A,s]=ye(e,[...r]);V(e.accounts,s.accounts);const a=i.accounts(s.accounts);return void 0!==s.remainingAccounts&&a.push(...s.remainingAccounts),Y("debug-logs")&&y.log("Outgoing account metas:",a),new o.TransactionInstruction({keys:a,programId:n,data:t(e.name,H(e,...A))})};return i.accounts=t=>Be.accountsArray(t,e.accounts,e.name),i}static accountsArray(e,t,n){return e?t.map((t=>{if(void 0!==("accounts"in t?t.accounts:void 0)){const i=e[t.name];return Be.accountsArray(i,t.accounts,n).flat()}{const i=t;let r;try{r=X(e[t.name])}catch(e){throw new Error(`Wrong input type for account "${t.name}" in the instruction accounts object${void 0!==n?' for instruction "'+n+'"':""}. Expected PublicKey or string.`)}return{pubkey:r,isWritable:i.isMut,isSigner:i.isSigner}}})).flat():[]}}class Ce{static build(e,t,n,i){return async(...r)=>{const o=t(...r),[,A]=ye(e,[...r]);try{return await i.send(o,A.signers,A.options)}catch(e){Y("debug-logs")&&y.log("Translating error:",e);let t=b.parse(e,n);if(null===t)throw e;throw t}}}}class we{static build(e,t){return(...n)=>{var i,r,A;const[,s]=ye(e,[...n]),a=new o.Transaction;if(s.preInstructions&&s.instructions)throw new Error("instructions is deprecated, use preInstructions");return null===(i=s.preInstructions)||void 0===i||i.forEach((e=>a.add(e))),null===(r=s.instructions)||void 0===r||r.forEach((e=>a.add(e))),a.add(t(...n)),null===(A=s.postInstructions)||void 0===A||A.forEach((e=>a.add(e))),a}}}class Ee{constructor(e,t,n=w(),i=new q(e)){this.provider=n,this.coder=i,this._idl=e,this._programId=t,this._address=Qe(t),this._sub=null;const[r,A,s]=(()=>{var r;let A={},s={},c={};return null===(r=e.state)||void 0===r||r.methods.forEach((r=>{const u=Be.build(r,((e,t)=>i.instruction.encodeState(e,t)),t);u.accounts=e=>{const i=function(e,t,n,i){if("new"===n.name){const[n]=re([],e);return[{pubkey:t.wallet.publicKey,isWritable:!1,isSigner:!0},{pubkey:Qe(e),isWritable:!0,isSigner:!1},{pubkey:n,isWritable:!1,isSigner:!1},{pubkey:o.SystemProgram.programId,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!1,isSigner:!1}]}return V(n.accounts,i),[{pubkey:Qe(e),isWritable:!0,isSigner:!1}]}(t,n,r,e);return i.concat(Be.accountsArray(e,r.accounts,r.name))};const l=we.build(r,u),g=Ce.build(r,l,z(e),n),d=a()(r.name);A[d]=u,s[d]=l,c[d]=g})),[A,s,c]})();this.instruction=r,this.transaction=A,this.rpc=s}get programId(){return this._programId}async fetch(){const e=this.address(),t=await this.provider.connection.getAccountInfo(e);if(null===t)throw new Error(`Account does not exist ${e.toString()}`);const n=this._idl.state;if(!n)throw new Error("State is not specified in IDL.");if((await J(n.struct.name)).compare(t.data.slice(0,8)))throw new Error("Invalid account discriminator");return this.coder.state.decode(t.data)}address(){return this._address}subscribe(e){if(null!==this._sub)return this._sub.ee;const t=new(I()),n=this.provider.connection.onAccountChange(this.address(),(e=>{const n=this.coder.state.decode(e.data);t.emit("change",n)}),e);return this._sub={ee:t,listener:n},t}unsubscribe(){null!==this._sub&&this.provider.connection.removeAccountChangeListener(this._sub.listener).then((async()=>{this._sub=null})).catch(y.error)}}function Qe(e){let[t]=re([],e);return ne(t,"unversioned",e)}class be{constructor(e,t,n,i,r){var o;this._idlAccount=t,this._programId=n,this._provider=null!=i?i:w(),this._coder=null!=r?r:new q(e),this._size=8+(null!==(o=O(e,t))&&void 0!==o?o:0)}get size(){return this._size}get programId(){return this._programId}get provider(){return this._provider}get coder(){return this._coder}async fetchNullable(e,t){const n=await this.getAccountInfo(e,t);if(null===n)return null;if(U.accountDiscriminator(this._idlAccount.name).compare(n.data.slice(0,8)))throw new Error("Invalid account discriminator");return this._coder.accounts.decode(this._idlAccount.name,n.data)}async fetch(e,t){const n=await this.fetchNullable(e,t);if(null===n)throw new Error(`Account does not exist ${e.toString()}`);return n}async fetchMultiple(e,t){const n=await $(this._provider.connection,e.map((e=>X(e))),t),i=U.accountDiscriminator(this._idlAccount.name);return n.map((e=>null==e||i.compare(null==e?void 0:e.account.data.slice(0,8))?null:this._coder.accounts.decode(this._idlAccount.name,null==e?void 0:e.account.data)))}async all(e){const t=U.accountDiscriminator(this._idlAccount.name);return(await this._provider.connection.getProgramAccounts(this._programId,{commitment:this._provider.connection.commitment,filters:[{memcmp:{offset:0,bytes:l().encode(e instanceof A.Buffer?A.Buffer.concat([t,e]):t)}},...Array.isArray(e)?e:[]]})).map((({pubkey:e,account:t})=>({publicKey:e,account:this._coder.accounts.decode(this._idlAccount.name,t.data)})))}subscribe(e,t){const n=ke.get(e.toString());if(n)return n.ee;const i=new(I());e=X(e);const r=this._provider.connection.onAccountChange(e,(e=>{const t=this._coder.accounts.decode(this._idlAccount.name,e.data);i.emit("change",t)}),t);return ke.set(e.toString(),{ee:i,listener:r}),i}async unsubscribe(e){let t=ke.get(e.toString());t?ke&&await this._provider.connection.removeAccountChangeListener(t.listener).then((()=>{ke.delete(e.toString())})).catch(y.error):y.warn("Address is not subscribed")}async createInstruction(e,t){const n=this.size;return o.SystemProgram.createAccount({fromPubkey:this._provider.wallet.publicKey,newAccountPubkey:e.publicKey,space:null!=t?t:n,lamports:await this._provider.connection.getMinimumBalanceForRentExemption(null!=t?t:n),programId:this._programId})}async associated(...e){const t=await this.associatedAddress(...e);return await this.fetch(t)}async associatedAddress(...e){return await Ae(this._programId,...e)}async getAccountInfo(e,t){return await this._provider.connection.getAccountInfo(X(e),t)}}const ke=new Map,ve="Program log: ".length;class Se{constructor(e,t,n){this._programId=e,this._provider=t,this._eventParser=new Me(e,n),this._eventCallbacks=new Map,this._eventListeners=new Map,this._listenerIdCount=0}addEventListener(e,t){var n;let i=this._listenerIdCount;return this._listenerIdCount+=1,e in this._eventCallbacks||this._eventListeners.set(e,[]),this._eventListeners.set(e,(null!==(n=this._eventListeners.get(e))&&void 0!==n?n:[]).concat(i)),this._eventCallbacks.set(i,[e,t]),void 0!==this._onLogsSubscriptionId||(this._onLogsSubscriptionId=this._provider.connection.onLogs(this._programId,((e,t)=>{e.err?y.error(e):this._eventParser.parseLogs(e.logs,(e=>{const n=this._eventListeners.get(e.name);n&&n.forEach((n=>{const i=this._eventCallbacks.get(n);if(i){const[,n]=i;n(e.data,t.slot)}}))}))}))),i}async removeEventListener(e){const t=this._eventCallbacks.get(e);if(!t)throw new Error(`Event listener ${e} doesn't exist!`);const[n]=t;let i=this._eventListeners.get(n);if(!i)throw new Error(`Event listeners don't exist for ${n}!`);this._eventCallbacks.delete(e),i=i.filter((t=>t!==e)),0===i.length&&this._eventListeners.delete(n),0==this._eventCallbacks.size&&(h.ok(0===this._eventListeners.size),void 0!==this._onLogsSubscriptionId&&(await this._provider.connection.removeOnLogsListener(this._onLogsSubscriptionId),this._onLogsSubscriptionId=void 0))}}class Me{constructor(e,t){this.coder=t,this.programId=e}parseLogs(e,t){const n=new Ne(e),i=new De(n.next());let r=n.next();for(;null!==r;){let[e,o,A]=this.handleLog(i,r);e&&t(e),o&&i.push(o),A&&i.pop(),r=n.next()}}handleLog(e,t){return e.stack.length>0&&e.program()===this.programId.toString()?this.handleProgramLog(t):[null,...this.handleSystemLog(t)]}handleProgramLog(e){if(e.startsWith("Program log:")){const t=e.slice(ve);return[this.coder.events.decode(t),null,!1]}return[null,...this.handleSystemLog(e)]}handleSystemLog(e){const t=e.split(":")[0];return null!==t.match(/^Program (.*) success/g)?[null,!0]:t.startsWith(`Program ${this.programId.toString()} invoke`)?[this.programId.toString(),!1]:t.includes("invoke")?["cpi",!1]:[null,!1]}}class De{constructor(e){var t;const n=null===(t=/^Program (.*) invoke.*$/g.exec(e))||void 0===t?void 0:t[1];if(!n)throw new Error("Could not find program invocation log line");this.stack=[n]}program(){return h.ok(this.stack.length>0),this.stack[this.stack.length-1]}push(e){this.stack.push(e)}pop(){h.ok(this.stack.length>0),this.stack.pop()}}class Ne{constructor(e){this.logs=e}next(){if(0===this.logs.length)return null;let e=this.logs[0];return this.logs=this.logs.slice(1),e}}class Te{constructor(e,t,n){t=X(t),n||(n=w()),this._idl=e,this._provider=n,this._programId=t,this._coder=new q(e),this._events=new Se(this._programId,n,this._coder);const[i,r,o,A,s,c]=class{static build(e,t,n,i){const r={},o={},A={},s={},c=z(e),u=class{static build(e,t,n,i){if(void 0!==e.state)return new Ee(e,n,i,t)}}.build(e,t,n,i);e.instructions.forEach((u=>{const l=Be.build(u,((e,n)=>t.instruction.encode(e,n)),n),g=we.build(u,l),d=Ce.build(u,g,c,i),h=class{static build(e,t,n,i,r,o,A){return async(...s)=>{const a=t(...s),[,c]=ye(e,[...s]);let u;try{u=await i.simulate(a,c.signers,c.options)}catch(e){Y("debug-logs")&&y.log("Translating error:",e);let t=b.parse(e,n);if(null===t)throw e;throw t}if(void 0===u)throw new Error("Unable to simulate transaction");if(u.value.err)throw new Error(`Simulate error: ${u.value.err.toString()}`);const l=u.value.logs;if(!l)throw new Error("Simulated logs not found");const g=[];return A.events&&new Me(o,r).parseLogs(l,(e=>{g.push(e)})),{events:g,raw:l}}}}.build(u,g,c,i,t,n,e),p=a()(u.name);o[p]=l,A[p]=g,r[p]=d,s[p]=h}));const l=e.accounts?class{static build(e,t,n,i){var r;const o={};return null===(r=e.accounts)||void 0===r||r.forEach((r=>{const A=a()(r.name);o[A]=new be(e,r,n,i,t)})),o}}.build(e,t,n,i):{};return[r,o,A,l,s,u]}}.build(e,this._coder,t,n);this.rpc=i,this.instruction=r,this.transaction=o,this.account=A,this.simulate=s,this.state=c}get programId(){return this._programId}get idl(){return this._idl}get coder(){return this._coder}get provider(){return this._provider}static async at(e,t){const n=X(e),i=await Te.fetchIdl(n,t);if(!i)throw new Error(`IDL not found for program: ${e.toString()}`);return new Te(i,n,t)}static async fetchIdl(e,t){t=null!=t?t:w();const n=X(e),i=await async function(e){const t=(await o.PublicKey.findProgramAddress([],e))[0];return await o.PublicKey.createWithSeed(t,"anchor:idl",e)}(n),r=await t.connection.getAccountInfo(i);if(!r)return null;let A=(s=r.data.slice(8),Ie.decode(s));var s;const a=(0,f.rr)(A.data);return JSON.parse(ce(a))}addEventListener(e,t){return this._events.addEventListener(e,t)}async removeEventListener(e){return await this._events.removeEventListener(e)}}},28186:function(e,t,n){"use strict";var i=n(49500),r=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),A=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.LangErrorMessage=t.LangErrorCode=t.translateError=t.ProgramError=t.AnchorError=t.ProgramErrorStack=t.IdlError=void 0;const s=n(97212),a=A(n(3761));class c extends Error{constructor(e){super(e),this.name="IdlError"}}t.IdlError=c;class u{constructor(e){this.stack=e}static parse(e){var t;const n=/^Program (\w*) invoke/,i=/^Program \w* success/,r=[];for(let o=0;oe.startsWith("Program log: AnchorError")));if(-1===t)return null;const n=e[t],i=[n];let r;if(t+11)return null;r=e[0].match(/([0-9]+)/g)[0]}try{o=parseInt(r)}catch(e){return null}let A=n.get(o);return void 0!==A?new g(o,A,e.logs):(A=t.LangErrorMessage.get(o),void 0!==A?new g(o,A,e.logs):null)}get program(){var e;return null===(e=this._programErrorStack)||void 0===e?void 0:e.stack[this._programErrorStack.stack.length-1]}get programErrorStack(){var e;return null===(e=this._programErrorStack)||void 0===e?void 0:e.stack}toString(){return this.msg}}t.ProgramError=g,t.translateError=function(e,t){a.isSet("debug-logs")&&i.log("Translating error:",e);const n=l.parse(e.logs);if(n)return n;const r=g.parse(e,t);if(r)return r;if(e.logs){const t={get:function(t,n){return"programErrorStack"===n?t.programErrorStack.stack:"program"===n?t.programErrorStack.stack[e.programErrorStack.stack.length-1]:Reflect.get(...arguments)}};return e.programErrorStack=u.parse(e.logs),new Proxy(e,t)}return e},t.LangErrorCode={InstructionMissing:100,InstructionFallbackNotFound:101,InstructionDidNotDeserialize:102,InstructionDidNotSerialize:103,IdlInstructionStub:1e3,IdlInstructionInvalidProgram:1001,ConstraintMut:2e3,ConstraintHasOne:2001,ConstraintSigner:2002,ConstraintRaw:2003,ConstraintOwner:2004,ConstraintRentExempt:2005,ConstraintSeeds:2006,ConstraintExecutable:2007,ConstraintState:2008,ConstraintAssociated:2009,ConstraintAssociatedInit:2010,ConstraintClose:2011,ConstraintAddress:2012,ConstraintZero:2013,ConstraintTokenMint:2014,ConstraintTokenOwner:2015,ConstraintMintMintAuthority:2016,ConstraintMintFreezeAuthority:2017,ConstraintMintDecimals:2018,ConstraintSpace:2019,RequireViolated:2500,RequireEqViolated:2501,RequireKeysEqViolated:2502,RequireNeqViolated:2503,RequireKeysNeqViolated:2504,RequireGtViolated:2505,RequireGteViolated:2506,AccountDiscriminatorAlreadySet:3e3,AccountDiscriminatorNotFound:3001,AccountDiscriminatorMismatch:3002,AccountDidNotDeserialize:3003,AccountDidNotSerialize:3004,AccountNotEnoughKeys:3005,AccountNotMutable:3006,AccountOwnedByWrongProgram:3007,InvalidProgramId:3008,InvalidProgramExecutable:3009,AccountNotSigner:3010,AccountNotSystemOwned:3011,AccountNotInitialized:3012,AccountNotProgramData:3013,AccountNotAssociatedTokenAccount:3014,AccountSysvarMismatch:3015,StateInvalidAddress:4e3,DeclaredProgramIdMismatch:4100,Deprecated:5e3},t.LangErrorMessage=new Map([[t.LangErrorCode.InstructionMissing,"8 byte instruction identifier not provided"],[t.LangErrorCode.InstructionFallbackNotFound,"Fallback functions are not supported"],[t.LangErrorCode.InstructionDidNotDeserialize,"The program could not deserialize the given instruction"],[t.LangErrorCode.InstructionDidNotSerialize,"The program could not serialize the given instruction"],[t.LangErrorCode.IdlInstructionStub,"The program was compiled without idl instructions"],[t.LangErrorCode.IdlInstructionInvalidProgram,"The transaction was given an invalid program for the IDL instruction"],[t.LangErrorCode.ConstraintMut,"A mut constraint was violated"],[t.LangErrorCode.ConstraintHasOne,"A has_one constraint was violated"],[t.LangErrorCode.ConstraintSigner,"A signer constraint was violated"],[t.LangErrorCode.ConstraintRaw,"A raw constraint was violated"],[t.LangErrorCode.ConstraintOwner,"An owner constraint was violated"],[t.LangErrorCode.ConstraintRentExempt,"A rent exemption constraint was violated"],[t.LangErrorCode.ConstraintSeeds,"A seeds constraint was violated"],[t.LangErrorCode.ConstraintExecutable,"An executable constraint was violated"],[t.LangErrorCode.ConstraintState,"A state constraint was violated"],[t.LangErrorCode.ConstraintAssociated,"An associated constraint was violated"],[t.LangErrorCode.ConstraintAssociatedInit,"An associated init constraint was violated"],[t.LangErrorCode.ConstraintClose,"A close constraint was violated"],[t.LangErrorCode.ConstraintAddress,"An address constraint was violated"],[t.LangErrorCode.ConstraintZero,"Expected zero account discriminant"],[t.LangErrorCode.ConstraintTokenMint,"A token mint constraint was violated"],[t.LangErrorCode.ConstraintTokenOwner,"A token owner constraint was violated"],[t.LangErrorCode.ConstraintMintMintAuthority,"A mint mint authority constraint was violated"],[t.LangErrorCode.ConstraintMintFreezeAuthority,"A mint freeze authority constraint was violated"],[t.LangErrorCode.ConstraintMintDecimals,"A mint decimals constraint was violated"],[t.LangErrorCode.ConstraintSpace,"A space constraint was violated"],[t.LangErrorCode.RequireViolated,"A require expression was violated"],[t.LangErrorCode.RequireEqViolated,"A require_eq expression was violated"],[t.LangErrorCode.RequireKeysEqViolated,"A require_keys_eq expression was violated"],[t.LangErrorCode.RequireNeqViolated,"A require_neq expression was violated"],[t.LangErrorCode.RequireKeysNeqViolated,"A require_keys_neq expression was violated"],[t.LangErrorCode.RequireGtViolated,"A require_gt expression was violated"],[t.LangErrorCode.RequireGteViolated,"A require_gte expression was violated"],[t.LangErrorCode.AccountDiscriminatorAlreadySet,"The account discriminator was already set on this account"],[t.LangErrorCode.AccountDiscriminatorNotFound,"No 8 byte discriminator was found on the account"],[t.LangErrorCode.AccountDiscriminatorMismatch,"8 byte discriminator did not match what was expected"],[t.LangErrorCode.AccountDidNotDeserialize,"Failed to deserialize the account"],[t.LangErrorCode.AccountDidNotSerialize,"Failed to serialize the account"],[t.LangErrorCode.AccountNotEnoughKeys,"Not enough account keys given to the instruction"],[t.LangErrorCode.AccountNotMutable,"The given account is not mutable"],[t.LangErrorCode.AccountOwnedByWrongProgram,"The given account is owned by a different program than expected"],[t.LangErrorCode.InvalidProgramId,"Program ID was not as expected"],[t.LangErrorCode.InvalidProgramExecutable,"Program account is not executable"],[t.LangErrorCode.AccountNotSigner,"The given account did not sign"],[t.LangErrorCode.AccountNotSystemOwned,"The given account is not owned by the system program"],[t.LangErrorCode.AccountNotInitialized,"The program expected this account to be already initialized"],[t.LangErrorCode.AccountNotProgramData,"The given account is not a program data account"],[t.LangErrorCode.AccountNotAssociatedTokenAccount,"The given account is not the associated token account"],[t.LangErrorCode.AccountSysvarMismatch,"The given public key does not match the required sysvar"],[t.LangErrorCode.StateInvalidAddress,"The given state account does not have the correct address"],[t.LangErrorCode.DeclaredProgramIdMismatch,"The declared program id does not match the actual program id"],[t.LangErrorCode.Deprecated,"The API being used is deprecated and should no longer be used"]])},69794:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.translateAddress=t.validateAccounts=t.toInstruction=t.parseIdlErrors=void 0;const i=n(97212);t.parseIdlErrors=function(e){const t=new Map;return e.errors&&e.errors.forEach((e=>{var n;let i=null!==(n=e.msg)&&void 0!==n?n:e.name;t.set(e.code,i)})),t},t.toInstruction=function(e,...t){if(e.args.length!=t.length)throw new Error("Invalid argument length");const n={};let i=0;return e.args.forEach((e=>{n[e.name]=t[i],i+=1})),n},t.validateAccounts=function e(t,n={}){t.forEach((t=>{if("accounts"in t)e(t.accounts,n[t.name]);else if(void 0===n[t.name])throw new Error(`Invalid arguments: ${t.name} not provided.`)}))},t.translateAddress=function(e){return e instanceof i.PublicKey?e:new i.PublicKey(e)}},55679:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.splitArgsAndCtx=void 0,t.splitArgsAndCtx=function(e,t){var n,i;let r={};const o=e.args?e.args.length:0;if(t.length>o){if(t.length!==o+1)throw new Error(`provided too many arguments ${t} to instruction ${null==e?void 0:e.name} expecting: ${null!==(i=null===(n=e.args)||void 0===n?void 0:n.map((e=>e.name)))&&void 0!==i?i:[]}`);r=t.pop()}return[t,r]}},37033:function(e,t,n){"use strict";var i=n(49500),r=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),A=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t};Object.defineProperty(t,"__esModule",{value:!0});const s=n(97212),a=n(28186),c=n(69794),u=n(55679),l=A(n(3761));class g{static build(e,t,n){if("_inner"===e.name)throw new a.IdlError("the _inner name is reserved");const r=(...o)=>{const[A,a]=(0,u.splitArgsAndCtx)(e,[...o]);(0,c.validateAccounts)(e.accounts,a.accounts);const g=r.accounts(a.accounts);return void 0!==a.remainingAccounts&&g.push(...a.remainingAccounts),l.isSet("debug-logs")&&i.log("Outgoing account metas:",g),new s.TransactionInstruction({keys:g,programId:n,data:t(e.name,(0,c.toInstruction)(e,...A))})};return r.accounts=t=>g.accountsArray(t,e.accounts,e.name),r}static accountsArray(e,t,n){return e?t.map((t=>{if(void 0!==("accounts"in t?t.accounts:void 0)){const i=e[t.name];return g.accountsArray(i,t.accounts,n).flat()}{const i=t;let r;try{r=(0,c.translateAddress)(e[t.name])}catch(e){throw new Error(`Wrong input type for account "${t.name}" in the instruction accounts object${void 0!==n?' for instruction "'+n+'"':""}. Expected PublicKey or string.`)}return{pubkey:r,isWritable:i.isMut,isSigner:i.isSigner}}})).flat():[]}}t.default=g},1081:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return r(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=void 0;const A=n(55872),s=o(n(65415));t.encode=function(e){return s.fromByteArray(e)},t.decode=function(e){return A.Buffer.from(s.toByteArray(e))}},70108:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=void 0;const r=i(n(31511));t.encode=function(e){return r.default.encode(e)},t.decode=function(e){return r.default.decode(e)}},41552:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.decode=t.encode=void 0;const i=n(55872);t.encode=function(e){return e.reduce(((e,t)=>e+t.toString(16).padStart(2,"0")),"0x")},t.decode=function(e){0===e.indexOf("0x")&&(e=e.substr(2)),e.length%2==1&&(e="0"+e);let t=e.match(/.{2}/g);return null===t?i.Buffer.from([]):i.Buffer.from(t.map((e=>parseInt(e,16))))}},79490:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return r(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.base64=t.bs58=t.utf8=t.hex=void 0,t.hex=o(n(41552)),t.utf8=o(n(75644)),t.bs58=o(n(70108)),t.base64=o(n(1081))},75644:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.encode=t.decode=void 0;const i=n(1888);t.decode=function(e){return(i.isBrowser?new TextDecoder("utf-8"):new(n(93585).TextDecoder)("utf-8")).decode(e)},t.encode=function(e){return(i.isBrowser?new TextEncoder:new(n(93585).TextEncoder)("utf-8")).encode(e)}},1888:(e,t,n)=>{"use strict";var i,r=n(14224);Object.defineProperty(t,"__esModule",{value:!0}),t.chunks=t.isBrowser=void 0,t.isBrowser=r.env.BROWSER||"undefined"!=typeof window&&!(null===(i=window.process)||void 0===i?void 0:i.hasOwnProperty("type")),t.chunks=function(e,t){return Array.apply(0,new Array(Math.ceil(e.length/t))).map(((n,i)=>e.slice(i*t,(i+1)*t)))}},3761:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isSet=t.set=void 0;const n=new Set(["anchor-deprecated-state","debug-logs"]),i=new Map;t.set=function(e){if(!n.has(e))throw new Error("Invalid feature");i.set(e,!0)},t.isSet=function(e){return void 0!==i.get(e)}},42781:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.associated=t.findProgramAddressSync=t.createProgramAddressSync=t.createWithSeedSync=void 0;const r=n(55872),o=i(n(39098)),A=n(39489),s=n(97212),a=n(69794);function c(e,t){let n=r.Buffer.alloc(0);e.forEach((function(e){if(e.length>32)throw new TypeError("Max seed length exceeded");n=r.Buffer.concat([n,u(e)])})),n=r.Buffer.concat([n,t.toBuffer(),r.Buffer.from("ProgramDerivedAddress")]);let i=(0,A.sha256)(new Uint8Array(n)),a=new o.default(i,16).toArray(void 0,32);if(s.PublicKey.isOnCurve(new Uint8Array(a)))throw new Error("Invalid seeds, address must fall off the curve");return new s.PublicKey(a)}t.createWithSeedSync=function(e,t,n){const i=r.Buffer.concat([e.toBuffer(),r.Buffer.from(t),n.toBuffer()]),o=A.sha256.digest(i);return new s.PublicKey(r.Buffer.from(o))},t.createProgramAddressSync=c,t.findProgramAddressSync=function(e,t){let n,i=255;for(;0!=i;){try{n=c(e.concat(r.Buffer.from([i])),t)}catch(e){if(e instanceof TypeError)throw e;i--;continue}return[n,i]}throw new Error("Unable to find a viable program address nonce")};const u=e=>e instanceof r.Buffer?e:e instanceof Uint8Array?r.Buffer.from(e.buffer,e.byteOffset,e.byteLength):r.Buffer.from(e);t.associated=async function(e,...t){let n=[r.Buffer.from([97,110,99,104,111,114])];t.forEach((e=>{n.push(e instanceof r.Buffer?e:(0,a.translateAddress)(e).toBuffer())}));const[i]=await s.PublicKey.findProgramAddress(n,(0,a.translateAddress)(e));return i}},76708:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return r(t,e),t},A=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.IdlCoder=void 0;const s=A(n(81036)),a=o(n(992)),c=n(24555);class u{static fieldLayout(e,t){const n=void 0!==e.name?(0,s.default)(e.name):void 0;switch(e.type){case"bool":return a.bool(n);case"u8":return a.u8(n);case"i8":return a.i8(n);case"u16":return a.u16(n);case"i16":return a.i16(n);case"u32":return a.u32(n);case"i32":return a.i32(n);case"f32":return a.f32(n);case"u64":return a.u64(n);case"i64":return a.i64(n);case"f64":return a.f64(n);case"u128":return a.u128(n);case"i128":return a.i128(n);case"bytes":return a.vecU8(n);case"string":return a.str(n);case"publicKey":return a.publicKey(n);default:if("vec"in e.type)return a.vec(u.fieldLayout({name:void 0,type:e.type.vec},t),n);if("option"in e.type)return a.option(u.fieldLayout({name:void 0,type:e.type.option},t),n);if("defined"in e.type){const i=e.type.defined;if(void 0===t)throw new c.IdlError("User defined types not provided");const r=t.filter((e=>e.name===i));if(1!==r.length)throw new c.IdlError(`Type not found: ${JSON.stringify(e)}`);return u.typeDefLayout(r[0],t,n)}if("array"in e.type){let i=e.type.array[0],r=e.type.array[1],o=u.fieldLayout({name:void 0,type:i},t);return a.array(o,r,n)}throw new Error(`Not yet implemented: ${e}`)}}static typeDefLayout(e,t=[],n){if("struct"===e.type.kind){const i=e.type.fields.map((e=>u.fieldLayout(e,t)));return a.struct(i,n)}if("enum"===e.type.kind){let i=e.type.variants.map((e=>{const n=(0,s.default)(e.name);if(void 0===e.fields)return a.struct([],n);const i=e.fields.map((e=>{if(!e.hasOwnProperty("name"))throw new Error("Tuple enum variants not yet implemented.");return u.fieldLayout(e,t)}));return a.struct(i,n)}));return void 0!==n?a.rustEnum(i).replicate(n):a.rustEnum(i,n)}throw new Error(`Unknown type kint: ${e}`)}}t.IdlCoder=u},24555:function(e,t,n){"use strict";var i=n(49500),r=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),A=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.LangErrorMessage=t.LangErrorCode=t.translateError=t.ProgramError=t.AnchorError=t.ProgramErrorStack=t.IdlError=void 0;const s=n(97212),a=A(n(48118));class c extends Error{constructor(e){super(e),this.name="IdlError"}}t.IdlError=c;class u{constructor(e){this.stack=e}static parse(e){var t;const n=/^Program (\w*) invoke/,i=/^Program \w* success/,r=[];for(let o=0;oe.startsWith("Program log: AnchorError")));if(-1===t)return null;const n=e[t],i=[n];let r;if(t+11)return null;r=e[0].match(/([0-9]+)/g)[0]}try{o=parseInt(r)}catch(e){return null}let A=n.get(o);return void 0!==A?new g(o,A,e.logs):(A=t.LangErrorMessage.get(o),void 0!==A?new g(o,A,e.logs):null)}get program(){var e;return null===(e=this._programErrorStack)||void 0===e?void 0:e.stack[this._programErrorStack.stack.length-1]}get programErrorStack(){var e;return null===(e=this._programErrorStack)||void 0===e?void 0:e.stack}toString(){return this.msg}}t.ProgramError=g,t.translateError=function(e,t){a.isSet("debug-logs")&&i.log("Translating error:",e);const n=l.parse(e.logs);if(n)return n;const r=g.parse(e,t);if(r)return r;if(e.logs){const t={get:function(t,n){return"programErrorStack"===n?t.programErrorStack.stack:"program"===n?t.programErrorStack.stack[e.programErrorStack.stack.length-1]:Reflect.get(...arguments)}};return e.programErrorStack=u.parse(e.logs),new Proxy(e,t)}return e},t.LangErrorCode={InstructionMissing:100,InstructionFallbackNotFound:101,InstructionDidNotDeserialize:102,InstructionDidNotSerialize:103,IdlInstructionStub:1e3,IdlInstructionInvalidProgram:1001,ConstraintMut:2e3,ConstraintHasOne:2001,ConstraintSigner:2002,ConstraintRaw:2003,ConstraintOwner:2004,ConstraintRentExempt:2005,ConstraintSeeds:2006,ConstraintExecutable:2007,ConstraintState:2008,ConstraintAssociated:2009,ConstraintAssociatedInit:2010,ConstraintClose:2011,ConstraintAddress:2012,ConstraintZero:2013,ConstraintTokenMint:2014,ConstraintTokenOwner:2015,ConstraintMintMintAuthority:2016,ConstraintMintFreezeAuthority:2017,ConstraintMintDecimals:2018,ConstraintSpace:2019,RequireViolated:2500,RequireEqViolated:2501,RequireKeysEqViolated:2502,RequireNeqViolated:2503,RequireKeysNeqViolated:2504,RequireGtViolated:2505,RequireGteViolated:2506,AccountDiscriminatorAlreadySet:3e3,AccountDiscriminatorNotFound:3001,AccountDiscriminatorMismatch:3002,AccountDidNotDeserialize:3003,AccountDidNotSerialize:3004,AccountNotEnoughKeys:3005,AccountNotMutable:3006,AccountOwnedByWrongProgram:3007,InvalidProgramId:3008,InvalidProgramExecutable:3009,AccountNotSigner:3010,AccountNotSystemOwned:3011,AccountNotInitialized:3012,AccountNotProgramData:3013,AccountNotAssociatedTokenAccount:3014,AccountSysvarMismatch:3015,StateInvalidAddress:4e3,DeclaredProgramIdMismatch:4100,Deprecated:5e3},t.LangErrorMessage=new Map([[t.LangErrorCode.InstructionMissing,"8 byte instruction identifier not provided"],[t.LangErrorCode.InstructionFallbackNotFound,"Fallback functions are not supported"],[t.LangErrorCode.InstructionDidNotDeserialize,"The program could not deserialize the given instruction"],[t.LangErrorCode.InstructionDidNotSerialize,"The program could not serialize the given instruction"],[t.LangErrorCode.IdlInstructionStub,"The program was compiled without idl instructions"],[t.LangErrorCode.IdlInstructionInvalidProgram,"The transaction was given an invalid program for the IDL instruction"],[t.LangErrorCode.ConstraintMut,"A mut constraint was violated"],[t.LangErrorCode.ConstraintHasOne,"A has_one constraint was violated"],[t.LangErrorCode.ConstraintSigner,"A signer constraint was violated"],[t.LangErrorCode.ConstraintRaw,"A raw constraint was violated"],[t.LangErrorCode.ConstraintOwner,"An owner constraint was violated"],[t.LangErrorCode.ConstraintRentExempt,"A rent exemption constraint was violated"],[t.LangErrorCode.ConstraintSeeds,"A seeds constraint was violated"],[t.LangErrorCode.ConstraintExecutable,"An executable constraint was violated"],[t.LangErrorCode.ConstraintState,"A state constraint was violated"],[t.LangErrorCode.ConstraintAssociated,"An associated constraint was violated"],[t.LangErrorCode.ConstraintAssociatedInit,"An associated init constraint was violated"],[t.LangErrorCode.ConstraintClose,"A close constraint was violated"],[t.LangErrorCode.ConstraintAddress,"An address constraint was violated"],[t.LangErrorCode.ConstraintZero,"Expected zero account discriminant"],[t.LangErrorCode.ConstraintTokenMint,"A token mint constraint was violated"],[t.LangErrorCode.ConstraintTokenOwner,"A token owner constraint was violated"],[t.LangErrorCode.ConstraintMintMintAuthority,"A mint mint authority constraint was violated"],[t.LangErrorCode.ConstraintMintFreezeAuthority,"A mint freeze authority constraint was violated"],[t.LangErrorCode.ConstraintMintDecimals,"A mint decimals constraint was violated"],[t.LangErrorCode.ConstraintSpace,"A space constraint was violated"],[t.LangErrorCode.RequireViolated,"A require expression was violated"],[t.LangErrorCode.RequireEqViolated,"A require_eq expression was violated"],[t.LangErrorCode.RequireKeysEqViolated,"A require_keys_eq expression was violated"],[t.LangErrorCode.RequireNeqViolated,"A require_neq expression was violated"],[t.LangErrorCode.RequireKeysNeqViolated,"A require_keys_neq expression was violated"],[t.LangErrorCode.RequireGtViolated,"A require_gt expression was violated"],[t.LangErrorCode.RequireGteViolated,"A require_gte expression was violated"],[t.LangErrorCode.AccountDiscriminatorAlreadySet,"The account discriminator was already set on this account"],[t.LangErrorCode.AccountDiscriminatorNotFound,"No 8 byte discriminator was found on the account"],[t.LangErrorCode.AccountDiscriminatorMismatch,"8 byte discriminator did not match what was expected"],[t.LangErrorCode.AccountDidNotDeserialize,"Failed to deserialize the account"],[t.LangErrorCode.AccountDidNotSerialize,"Failed to serialize the account"],[t.LangErrorCode.AccountNotEnoughKeys,"Not enough account keys given to the instruction"],[t.LangErrorCode.AccountNotMutable,"The given account is not mutable"],[t.LangErrorCode.AccountOwnedByWrongProgram,"The given account is owned by a different program than expected"],[t.LangErrorCode.InvalidProgramId,"Program ID was not as expected"],[t.LangErrorCode.InvalidProgramExecutable,"Program account is not executable"],[t.LangErrorCode.AccountNotSigner,"The given account did not sign"],[t.LangErrorCode.AccountNotSystemOwned,"The given account is not owned by the system program"],[t.LangErrorCode.AccountNotInitialized,"The program expected this account to be already initialized"],[t.LangErrorCode.AccountNotProgramData,"The given account is not a program data account"],[t.LangErrorCode.AccountNotAssociatedTokenAccount,"The given account is not the associated token account"],[t.LangErrorCode.AccountSysvarMismatch,"The given public key does not match the required sysvar"],[t.LangErrorCode.StateInvalidAddress,"The given state account does not have the correct address"],[t.LangErrorCode.DeclaredProgramIdMismatch,"The declared program id does not match the actual program id"],[t.LangErrorCode.Deprecated,"The API being used is deprecated and should no longer be used"]])},48118:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isSet=t.set=void 0;const n=new Set(["anchor-deprecated-state","debug-logs"]),i=new Map;t.set=function(e){if(!n.has(e))throw new Error("Invalid feature");i.set(e,!0)},t.isSet=function(e){return void 0!==i.get(e)}},75481:(e,t,n)=>{"use strict";n.r(t),n.d(t,{ACCOUNT_DISCRIMINATOR_SIZE:()=>Ge,AccountClient:()=>Cn,AnchorError:()=>Ce,AnchorProvider:()=>ae,BN:()=>A.a,BorshAccountsCoder:()=>xe,BorshCoder:()=>je,BorshEventCoder:()=>Ue,BorshInstructionCoder:()=>Te,BorshStateCoder:()=>Le,EventManager:()=>bn,EventParser:()=>kn,IdlError:()=>ye,LangErrorCode:()=>Qe,LangErrorMessage:()=>be,MethodsBuilderFactory:()=>On,Native:()=>Zn,Program:()=>Rn,ProgramError:()=>we,ProgramErrorStack:()=>Be,Spl:()=>Wn,SplTokenCoder:()=>Ot,StateClient:()=>yn,SystemCoder:()=>zt,eventDiscriminator:()=>_e,getProvider:()=>de,parseIdlErrors:()=>M,setProvider:()=>ge,splitArgsAndCtx:()=>pn,stateDiscriminator:()=>Ke,toInstruction:()=>D,translateAddress:()=>T,translateError:()=>Ee,utils:()=>dn,validateAccounts:()=>N,web3:()=>r});var i=n(55872),r=n(97212),o=n(39098),A=n.n(o),s=n(31511),a=n.n(s),c=n(65415),u=n(81036),l=n.n(u),g=n(39489),d=n(992),h=n(50189),p=n(11312),f=n.n(p),m=n(42943),I=n(49500),y=n(55872).Buffer,B=Object.freeze({__proto__:null,encode:function(e){return e.reduce(((e,t)=>e+t.toString(16).padStart(2,"0")),"0x")},decode:function(e){0===e.indexOf("0x")&&(e=e.substr(2)),e.length%2==1&&(e="0"+e);let t=e.match(/.{2}/g);return null===t?i.Buffer.from([]):i.Buffer.from(t.map((e=>parseInt(e,16))))}});function C(e){return new TextDecoder("utf-8").decode(e)}function w(e){return(new TextEncoder).encode(e)}var E=Object.freeze({__proto__:null,decode:C,encode:w});function Q(e){return a().encode(e)}var b=Object.freeze({__proto__:null,encode:Q,decode:function(e){return a().decode(e)}});function k(e){return i.Buffer.from(c.toByteArray(e))}var v=Object.freeze({__proto__:null,encode:function(e){return c.fromByteArray(e)},decode:k}),S=Object.freeze({__proto__:null,hex:B,utf8:E,bs58:b,base64:v});function M(e){const t=new Map;return e.errors&&e.errors.forEach((e=>{var n;let i=null!==(n=e.msg)&&void 0!==n?n:e.name;t.set(e.code,i)})),t}function D(e,...t){if(e.args.length!=t.length)throw new Error("Invalid argument length");const n={};let i=0;return e.args.forEach((e=>{n[e.name]=t[i],i+=1})),n}function N(e,t={}){e.forEach((e=>{if("accounts"in e)N(e.accounts,t[e.name]);else if(void 0===t[e.name])throw new Error(`Invalid arguments: ${e.name} not provided.`)}))}function T(e){return e instanceof r.PublicKey?e:new r.PublicKey(e)}class P extends TypeError{constructor(e,t){let n;const{message:i,...r}=e,{path:o}=e;super(0===o.length?i:"At path: "+o.join(".")+" -- "+i),this.value=void 0,this.key=void 0,this.type=void 0,this.refinement=void 0,this.path=void 0,this.branch=void 0,this.failures=void 0,Object.assign(this,r),this.name=this.constructor.name,this.failures=()=>{var i;return null!=(i=n)?i:n=[e,...t()]}}}function O(e){return"object"==typeof e&&null!=e}function F(e){return"string"==typeof e?JSON.stringify(e):""+e}function R(e,t,n,i){if(!0===e)return;!1===e?e={}:"string"==typeof e&&(e={message:e});const{path:r,branch:o}=t,{type:A}=n,{refinement:s,message:a="Expected a value of type `"+A+"`"+(s?" with refinement `"+s+"`":"")+", but received: `"+F(i)+"`"}=e;return{value:i,type:A,refinement:s,key:r[r.length-1],path:r,branch:o,...e,message:a}}function*G(e,t,n,i){var r;O(r=e)&&"function"==typeof r[Symbol.iterator]||(e=[e]);for(const r of e){const e=R(r,t,n,i);e&&(yield e)}}function*x(e,t,n){void 0===n&&(n={});const{path:i=[],branch:r=[e],coerce:o=!1,mask:A=!1}=n,s={path:i,branch:r};if(o&&(e=t.coercer(e,s),A&&"type"!==t.type&&O(t.schema)&&O(e)&&!Array.isArray(e)))for(const n in e)void 0===t.schema[n]&&delete e[n];let a=!0;for(const n of t.validator(e,s))a=!1,yield[n,void 0];for(let[n,c,u]of t.entries(e,s)){const t=x(c,u,{path:void 0===n?i:[...i,n],branch:void 0===n?r:[...r,c],coerce:o,mask:A});for(const i of t)i[0]?(a=!1,yield[i[0],void 0]):o&&(c=i[1],void 0===n?e=c:e instanceof Map?e.set(n,c):e instanceof Set?e.add(c):O(e)&&(e[n]=c))}if(a)for(const n of t.refiner(e,s))a=!1,yield[n,void 0];a&&(yield[void 0,e])}class U{constructor(e){this.TYPE=void 0,this.type=void 0,this.schema=void 0,this.coercer=void 0,this.validator=void 0,this.refiner=void 0,this.entries=void 0;const{type:t,schema:n,validator:i,refiner:r,coercer:o=(e=>e),entries:A=function*(){}}=e;this.type=t,this.schema=n,this.entries=A,this.coercer=o,this.validator=i?(e,t)=>G(i(e,t),t,this,e):()=>[],this.refiner=r?(e,t)=>G(r(e,t),t,this,e):()=>[]}assert(e){return function(e,t){const n=K(e,t);if(n[0])throw n[0]}(e,this)}create(e){return _(e,this)}is(e){return L(e,this)}mask(e){return function(e,t){const n=K(e,t,{coerce:!0,mask:!0});if(n[0])throw n[0];return n[1]}(e,this)}validate(e,t){return void 0===t&&(t={}),K(e,this,t)}}function _(e,t){const n=K(e,t,{coerce:!0});if(n[0])throw n[0];return n[1]}function L(e,t){return!K(e,t)[0]}function K(e,t,n){void 0===n&&(n={});const i=x(e,t,n),r=function(e){const{done:t,value:n}=e.next();return t?void 0:n}(i);return r[0]?[new P(r[0],(function*(){for(const e of i)e[0]&&(yield e[0])})),void 0]:[void 0,r[1]]}function Y(e,t){return new U({type:e,schema:null,validator:t})}function j(e){return new U({type:"array",schema:e,*entries(t){if(e&&Array.isArray(t))for(const[n,i]of t.entries())yield[n,i,e]},coercer:e=>Array.isArray(e)?e.slice():e,validator:e=>Array.isArray(e)||"Expected an array value, but received: "+F(e)})}function W(e){const t=F(e),n=typeof e;return new U({type:"literal",schema:"string"===n||"number"===n||"boolean"===n?e:null,validator:n=>n===e||"Expected the literal `"+t+"`, but received: "+F(n)})}function J(e){return new U({...e,validator:(t,n)=>null===t||e.validator(t,n),refiner:(t,n)=>null===t||e.refiner(t,n)})}function q(){return Y("number",(e=>"number"==typeof e&&!isNaN(e)||"Expected a number, but received: "+F(e)))}function Z(e){return new U({...e,validator:(t,n)=>void 0===t||e.validator(t,n),refiner:(t,n)=>void 0===t||e.refiner(t,n)})}function z(){return Y("string",(e=>"string"==typeof e||"Expected a string, but received: "+F(e)))}function H(e){const t=Object.keys(e);return new U({type:"type",schema:e,*entries(n){if(O(n))for(const i of t)yield[i,n[i],e[i]]},validator:e=>O(e)||"Expected an object, but received: "+F(e)})}function V(e){const t=e.map((e=>e.type)).join(" | ");return new U({type:"union",schema:null,coercer:(t,n)=>(e.find((e=>{const[n]=e.validate(t,{coerce:!0});return!n}))||X()).coercer(t,n),validator(n,i){const r=[];for(const t of e){const[...e]=x(n,t,i),[o]=e;if(!o[0])return[];for(const[t]of e)t&&r.push(t)}return["Expected the value to satisfy a union of `"+t+"`, but received: "+F(n),...r]}})}function X(){return Y("unknown",(()=>!0))}async function $(e,t,n){if(t.length<=99)return await ee(e,t,n);{const i=function(e,t){return Array.apply(0,new Array(Math.ceil(e.length/99))).map(((t,n)=>e.slice(99*n,99*(n+1))))}(t);return(await Promise.all(i.map((t=>ee(e,t,n))))).flat()}}async function ee(e,t,n){const i=null!=n?n:e.commitment;return(await e.getMultipleAccountsInfo(t,i)).map(((e,n)=>null===e?null:{publicKey:t[n],account:e}))}async function te(e,t,n,i,o){n&&n.length>0&&t.sign(...n);const A=t._compile(),s=A.serialize(),a=t._serialize(s).toString("base64"),c={encoding:"base64",commitment:null!=i?i:e.commitment};if(o){const e=(Array.isArray(o)?o:A.nonProgramIds()).map((e=>e.toBase58()));c.accounts={encoding:"base64",addresses:e}}n&&(c.sigVerify=!0);const u=[a,c],l=_(await e._rpcRequest("simulateTransaction",u),re);if("error"in l){let e;if("data"in l.error&&(e=l.error.data.logs,e&&Array.isArray(e))){const t="\n ",n=t+e.join(t);I.error(l.error.message,n)}throw new r.SendTransactionError("failed to simulate transaction: "+l.error.message,e)}return l.result}const ne=ie(X());function ie(e){return V([H({jsonrpc:W("2.0"),id:z(),result:e}),H({jsonrpc:W("2.0"),id:z(),error:H({code:X(),message:z(),data:Z(Y("any",(()=>!0)))})})])}const re=(Ae=H({err:J(V([H({}),z()])),logs:J(j(z())),accounts:Z(J(j(J(H({executable:Y("boolean",(e=>"boolean"==typeof e)),owner:z(),lamports:q(),data:j(z()),rentEpoch:Z(q())}))))),unitsConsumed:Z(q())}),function(e,t,n){return new U({...e,coercer:(i,r)=>L(i,t)?e.coercer(n(i),r):e.coercer(i,r)})}(ie(oe=H({context:H({slot:q()}),value:Ae})),ne,(e=>"error"in e?e:{...e,result:_(e.result,oe)})));var oe,Ae,se=Object.freeze({__proto__:null,invoke:async function(e,t,n,i){e=T(e),i||(i=de());const o=new r.Transaction;if(o.add(new r.TransactionInstruction({programId:e,keys:null!=t?t:[],data:n})),void 0===i.sendAndConfirm)throw new Error("This function requires 'Provider.sendAndConfirm' to be implemented.");return await i.sendAndConfirm(o,[])},getMultipleAccounts:$,simulateTransaction:te});class ae{constructor(e,t,n){this.connection=e,this.wallet=t,this.opts=n,this.publicKey=t.publicKey}static defaultOptions(){return{preflightCommitment:"processed",commitment:"processed"}}static local(e,t){throw new Error("Provider local is not available on browser.")}static env(){throw new Error("Provider env is not available on browser.")}async sendAndConfirm(e,t,n){var i;void 0===n&&(n=this.opts),e.feePayer=this.wallet.publicKey,e.recentBlockhash=(await this.connection.getRecentBlockhash(n.preflightCommitment)).blockhash,e=await this.wallet.signTransaction(e),(null!=t?t:[]).forEach((t=>{e.partialSign(t)}));const o=e.serialize();try{return await ue(this.connection,o,n)}catch(t){if(t instanceof le){const n=await this.connection.getTransaction(Q(e.signature),{commitment:"confirmed"});if(n){const e=null===(i=n.meta)||void 0===i?void 0:i.logMessages;throw e?new r.SendTransactionError(t.message,e):t}throw t}throw t}}async sendAll(e,t){void 0===t&&(t=this.opts);const n=await this.connection.getRecentBlockhash(t.preflightCommitment);let i=e.map((e=>{var t;let i=e.tx,r=null!==(t=e.signers)&&void 0!==t?t:[];return i.feePayer=this.wallet.publicKey,i.recentBlockhash=n.blockhash,r.forEach((e=>{i.partialSign(e)})),i}));const r=await this.wallet.signAllTransactions(i),o=[];for(let e=0;ee.startsWith("Program log: AnchorError")));if(-1===t)return null;const n=e[t],i=[n];let o;if(t+11)return null;i=e[0].match(/([0-9]+)/g)[0]}try{r=parseInt(i)}catch(e){return null}let o=t.get(r);return void 0!==o?new we(r,o,e.logs):(o=be.get(r),void 0!==o?new we(r,o,e.logs):null)}get program(){var e;return null===(e=this._programErrorStack)||void 0===e?void 0:e.stack[this._programErrorStack.stack.length-1]}get programErrorStack(){var e;return null===(e=this._programErrorStack)||void 0===e?void 0:e.stack}toString(){return this.msg}}function Ee(e,t){me("debug-logs")&&I.log("Translating error:",e);const n=Ce.parse(e.logs);if(n)return n;const i=we.parse(e,t);if(i)return i;if(e.logs){const t={get:function(t,n){return"programErrorStack"===n?t.programErrorStack.stack:"program"===n?t.programErrorStack.stack[e.programErrorStack.stack.length-1]:Reflect.get(...arguments)}};return e.programErrorStack=Be.parse(e.logs),new Proxy(e,t)}return e}const Qe={InstructionMissing:100,InstructionFallbackNotFound:101,InstructionDidNotDeserialize:102,InstructionDidNotSerialize:103,IdlInstructionStub:1e3,IdlInstructionInvalidProgram:1001,ConstraintMut:2e3,ConstraintHasOne:2001,ConstraintSigner:2002,ConstraintRaw:2003,ConstraintOwner:2004,ConstraintRentExempt:2005,ConstraintSeeds:2006,ConstraintExecutable:2007,ConstraintState:2008,ConstraintAssociated:2009,ConstraintAssociatedInit:2010,ConstraintClose:2011,ConstraintAddress:2012,ConstraintZero:2013,ConstraintTokenMint:2014,ConstraintTokenOwner:2015,ConstraintMintMintAuthority:2016,ConstraintMintFreezeAuthority:2017,ConstraintMintDecimals:2018,ConstraintSpace:2019,RequireViolated:2500,RequireEqViolated:2501,RequireKeysEqViolated:2502,RequireNeqViolated:2503,RequireKeysNeqViolated:2504,RequireGtViolated:2505,RequireGteViolated:2506,AccountDiscriminatorAlreadySet:3e3,AccountDiscriminatorNotFound:3001,AccountDiscriminatorMismatch:3002,AccountDidNotDeserialize:3003,AccountDidNotSerialize:3004,AccountNotEnoughKeys:3005,AccountNotMutable:3006,AccountOwnedByWrongProgram:3007,InvalidProgramId:3008,InvalidProgramExecutable:3009,AccountNotSigner:3010,AccountNotSystemOwned:3011,AccountNotInitialized:3012,AccountNotProgramData:3013,AccountNotAssociatedTokenAccount:3014,AccountSysvarMismatch:3015,AccountReallocExceedsLimit:3016,AccountDuplicateReallocs:3017,StateInvalidAddress:4e3,DeclaredProgramIdMismatch:4100,Deprecated:5e3},be=new Map([[Qe.InstructionMissing,"8 byte instruction identifier not provided"],[Qe.InstructionFallbackNotFound,"Fallback functions are not supported"],[Qe.InstructionDidNotDeserialize,"The program could not deserialize the given instruction"],[Qe.InstructionDidNotSerialize,"The program could not serialize the given instruction"],[Qe.IdlInstructionStub,"The program was compiled without idl instructions"],[Qe.IdlInstructionInvalidProgram,"The transaction was given an invalid program for the IDL instruction"],[Qe.ConstraintMut,"A mut constraint was violated"],[Qe.ConstraintHasOne,"A has_one constraint was violated"],[Qe.ConstraintSigner,"A signer constraint was violated"],[Qe.ConstraintRaw,"A raw constraint was violated"],[Qe.ConstraintOwner,"An owner constraint was violated"],[Qe.ConstraintRentExempt,"A rent exemption constraint was violated"],[Qe.ConstraintSeeds,"A seeds constraint was violated"],[Qe.ConstraintExecutable,"An executable constraint was violated"],[Qe.ConstraintState,"A state constraint was violated"],[Qe.ConstraintAssociated,"An associated constraint was violated"],[Qe.ConstraintAssociatedInit,"An associated init constraint was violated"],[Qe.ConstraintClose,"A close constraint was violated"],[Qe.ConstraintAddress,"An address constraint was violated"],[Qe.ConstraintZero,"Expected zero account discriminant"],[Qe.ConstraintTokenMint,"A token mint constraint was violated"],[Qe.ConstraintTokenOwner,"A token owner constraint was violated"],[Qe.ConstraintMintMintAuthority,"A mint mint authority constraint was violated"],[Qe.ConstraintMintFreezeAuthority,"A mint freeze authority constraint was violated"],[Qe.ConstraintMintDecimals,"A mint decimals constraint was violated"],[Qe.ConstraintSpace,"A space constraint was violated"],[Qe.RequireViolated,"A require expression was violated"],[Qe.RequireEqViolated,"A require_eq expression was violated"],[Qe.RequireKeysEqViolated,"A require_keys_eq expression was violated"],[Qe.RequireNeqViolated,"A require_neq expression was violated"],[Qe.RequireKeysNeqViolated,"A require_keys_neq expression was violated"],[Qe.RequireGtViolated,"A require_gt expression was violated"],[Qe.RequireGteViolated,"A require_gte expression was violated"],[Qe.AccountDiscriminatorAlreadySet,"The account discriminator was already set on this account"],[Qe.AccountDiscriminatorNotFound,"No 8 byte discriminator was found on the account"],[Qe.AccountDiscriminatorMismatch,"8 byte discriminator did not match what was expected"],[Qe.AccountDidNotDeserialize,"Failed to deserialize the account"],[Qe.AccountDidNotSerialize,"Failed to serialize the account"],[Qe.AccountNotEnoughKeys,"Not enough account keys given to the instruction"],[Qe.AccountNotMutable,"The given account is not mutable"],[Qe.AccountOwnedByWrongProgram,"The given account is owned by a different program than expected"],[Qe.InvalidProgramId,"Program ID was not as expected"],[Qe.InvalidProgramExecutable,"Program account is not executable"],[Qe.AccountNotSigner,"The given account did not sign"],[Qe.AccountNotSystemOwned,"The given account is not owned by the system program"],[Qe.AccountNotInitialized,"The program expected this account to be already initialized"],[Qe.AccountNotProgramData,"The given account is not a program data account"],[Qe.AccountNotAssociatedTokenAccount,"The given account is not the associated token account"],[Qe.AccountSysvarMismatch,"The given public key does not match the required sysvar"],[Qe.AccountReallocExceedsLimit,"The account reallocation exceeds the MAX_PERMITTED_DATA_INCREASE limit"],[Qe.AccountDuplicateReallocs,"The account was duplicated for more than one reallocation"],[Qe.StateInvalidAddress,"The given state account does not have the correct address"],[Qe.DeclaredProgramIdMismatch,"The declared program id does not match the actual program id"],[Qe.Deprecated,"The API being used is deprecated and should no longer be used"]]);var ke=function(){return ke=Object.assign||function(e){for(var t,n=1,i=arguments.length;ne.name===i));if(1!==r.length)throw new ye(`Type not found: ${JSON.stringify(e)}`);return Ne.typeDefLayout(r[0],t,n)}if("array"in e.type){let i=e.type.array[0],r=e.type.array[1],o=Ne.fieldLayout({name:void 0,type:i},t);return d.array(o,r,n)}throw new Error(`Not yet implemented: ${e}`)}}static typeDefLayout(e,t=[],n){if("struct"===e.type.kind){const i=e.type.fields.map((e=>Ne.fieldLayout(e,t)));return d.struct(i,n)}if("enum"===e.type.kind){let i=e.type.variants.map((e=>{const n=l()(e.name);if(void 0===e.fields)return d.struct([],n);const i=e.fields.map((e=>{if(!e.hasOwnProperty("name"))throw new Error("Tuple enum variants not yet implemented.");return Ne.fieldLayout(e,t)}));return d.struct(i,n)}));return void 0!==n?d.rustEnum(i).replicate(n):d.rustEnum(i,n)}throw new Error(`Unknown type kint: ${e}`)}}class Te{constructor(e){this.idl=e,this.ixLayout=Te.parseIxLayout(e);const t=new Map;e.instructions.forEach((e=>{const n=Oe("global",e.name);t.set(a().encode(n),{layout:this.ixLayout.get(e.name),name:e.name})})),e.state&&e.state.methods.map((e=>{const n=Oe("state",e.name);t.set(a().encode(n),{layout:this.ixLayout.get(e.name),name:e.name})})),this.sighashLayouts=t}encode(e,t){return this._encode("global",e,t)}encodeState(e,t){return this._encode("state",e,t)}_encode(e,t,n){const r=i.Buffer.alloc(1e3),o=l()(t),A=this.ixLayout.get(o);if(!A)throw new Error(`Unknown method: ${o}`);const s=A.encode(n,r),a=r.slice(0,s);return i.Buffer.concat([Oe(e,t),a])}static parseIxLayout(e){const t=(e.state?e.state.methods:[]).map((t=>{let n=t.args.map((t=>{var n,i;return Ne.fieldLayout(t,Array.from([...null!==(n=e.accounts)&&void 0!==n?n:[],...null!==(i=e.types)&&void 0!==i?i:[]]))}));const i=l()(t.name);return[i,d.struct(n,i)]})).concat(e.instructions.map((t=>{let n=t.args.map((t=>{var n,i;return Ne.fieldLayout(t,Array.from([...null!==(n=e.accounts)&&void 0!==n?n:[],...null!==(i=e.types)&&void 0!==i?i:[]]))}));const i=l()(t.name);return[i,d.struct(n,i)]})));return new Map(t)}decode(e,t="hex"){"string"==typeof e&&(e="hex"===t?i.Buffer.from(e,"hex"):a().decode(e));let n=a().encode(e.slice(0,8)),r=e.slice(8);const o=this.sighashLayouts.get(n);return o?{data:o.layout.decode(r),name:o.name}:null}format(e,t){return Pe.format(e,t,this.idl)}}class Pe{static format(e,t,n){const i=n.instructions.filter((t=>e.name===t.name))[0];if(void 0===i)return I.error("Invalid instruction given"),null;const r=i.args.map((t=>({name:t.name,type:Pe.formatIdlType(t.type),data:Pe.formatIdlData(t,e.data[t.name],n.types)}))),o=Pe.flattenIdlAccounts(i.accounts);return{args:r,accounts:t.map(((e,t)=>t`;if("option"in e)return`Option<${this.formatIdlType(e.option)}>`;if("defined"in e)return e.defined;if("array"in e)return`Array<${e.array[0]}; ${e.array[1]}>`;throw new Error(`Unknown IDL type: ${e}`)}static formatIdlData(e,t,n){if("string"==typeof e.type)return t.toString();if(e.type.hasOwnProperty("vec"))return"["+t.map((t=>this.formatIdlData({name:"",type:e.type.vec},t))).join(", ")+"]";if(e.type.hasOwnProperty("option"))return null===t?"null":this.formatIdlData({name:"",type:e.type.option},t,n);if(e.type.hasOwnProperty("defined")){if(void 0===n)throw new Error("User defined types not provided");const i=n.filter((t=>t.name===e.type.defined));if(1!==i.length)throw new Error(`Type not found: ${e.type.defined}`);return Pe.formatIdlDataDefined(i[0],t,n)}return"unknown"}static formatIdlDataDefined(e,t,n){if("struct"===e.type.kind){const i=e.type;return"{ "+Object.keys(t).map((e=>{const r=i.fields.filter((t=>t.name===e))[0];if(void 0===r)throw new Error("Unable to find type");return e+": "+Pe.formatIdlData(r,t[e],n)})).join(", ")+" }"}if(0===e.type.variants.length)return"{}";if(e.type.variants[0].name){const i=e.type.variants,r=Object.keys(t)[0],o=t[r],A=Object.keys(o).map((e=>{var t;const A=o[e],s=null===(t=i[r])||void 0===t?void 0:t.filter((t=>t.name===e))[0];if(void 0===s)throw new Error("Unable to find variant");return e+": "+Pe.formatIdlData(s,A,n)})).join(", "),s=l()(r,{pascalCase:!0});return 0===A.length?s:`${s} { ${A} }`}return"Tuple formatting not yet implemented"}static flattenIdlAccounts(e,t){return e.map((e=>{const n=function(e){const t=e.replace(/([A-Z])/g," $1");return t.charAt(0).toUpperCase()+t.slice(1)}(e.name);if(e.hasOwnProperty("accounts")){const i=t?`${t} > ${n}`:n;return Pe.flattenIdlAccounts(e.accounts,i)}return{...e,name:t?`${t} > ${n}`:n}})).flat()}}function Oe(e,t){var n;let r=`${e}:${void 0===n&&(n={}),function(e,t){return void 0===t&&(t={}),function(e,t){void 0===t&&(t={});for(var n=t.splitRegexp,i=void 0===n?Se:n,r=t.stripRegexp,o=void 0===r?Me:r,A=t.transform,s=void 0===A?ve:A,a=t.delimiter,c=void 0===a?" ":a,u=De(De(e,i,"$1\0$2"),o,"\0"),l=0,g=u.length;"\0"===u.charAt(l);)l++;for(;"\0"===u.charAt(g-1);)g--;return u.slice(l,g).split("\0").map(s).join(c)}(e,ke({delimiter:"."},t))}(t,ke({delimiter:"_"},n))}`;return i.Buffer.from(g.sha256.digest(r)).slice(0,8)}function Fe(e,t){if("enum"===t.type.kind){let n=t.type.variants.map((t=>void 0===t.fields?0:t.fields.map((t=>{if("object"!=typeof t||!("name"in t))throw new Error("Tuple enum variants not yet implemented.");return Re(e,t.type)})).reduce(((e,t)=>e+t))));return Math.max(...n)+1}return void 0===t.type.fields?0:t.type.fields.map((t=>Re(e,t.type))).reduce(((e,t)=>e+t),0)}function Re(e,t){var n,i;switch(t){case"bool":case"u8":case"i8":case"bytes":case"string":return 1;case"i16":case"u16":return 2;case"u32":case"i32":case"f32":return 4;case"u64":case"i64":case"f64":return 8;case"u128":case"i128":return 16;case"publicKey":return 32;default:if("vec"in t)return 1;if("option"in t)return 1+Re(e,t.option);if("coption"in t)return 4+Re(e,t.coption);if("defined"in t){const r=null!==(i=null===(n=e.types)||void 0===n?void 0:n.filter((e=>e.name===t.defined)))&&void 0!==i?i:[];if(1!==r.length)throw new ye(`Type not found: ${JSON.stringify(t)}`);return Fe(e,r[0])}if("array"in t){let n=t.array[0],i=t.array[1];return Re(e,n)*i}throw new Error(`Invalid type ${JSON.stringify(t)}`)}}const Ge=8;class xe{constructor(e){if(void 0===e.accounts)return void(this.accountLayouts=new Map);const t=e.accounts.map((t=>[t.name,Ne.typeDefLayout(t,e.types)]));this.accountLayouts=new Map(t),this.idl=e}async encode(e,t){const n=i.Buffer.alloc(1e3),r=this.accountLayouts.get(e);if(!r)throw new Error(`Unknown account: ${e}`);const o=r.encode(t,n);let A=n.slice(0,o),s=xe.accountDiscriminator(e);return i.Buffer.concat([s,A])}decode(e,t){if(xe.accountDiscriminator(e).compare(t.slice(0,8)))throw new Error("Invalid account discriminator");return this.decodeUnchecked(e,t)}decodeUnchecked(e,t){const n=t.slice(8),i=this.accountLayouts.get(e);if(!i)throw new Error(`Unknown account: ${e}`);return i.decode(n)}memcmp(e,t){const n=xe.accountDiscriminator(e);return{offset:0,bytes:a().encode(t?i.Buffer.concat([n,t]):n)}}size(e){var t;return 8+(null!==(t=Fe(this.idl,e))&&void 0!==t?t:0)}static accountDiscriminator(e){return i.Buffer.from(g.sha256.digest(`account:${l()(e,{pascalCase:!0})}`)).slice(0,8)}}class Ue{constructor(e){if(void 0===e.events)return void(this.layouts=new Map);const t=e.events.map((t=>{let n={name:t.name,type:{kind:"struct",fields:t.fields.map((e=>({name:e.name,type:e.type})))}};return[t.name,Ne.typeDefLayout(n,e.types)]}));this.layouts=new Map(t),this.discriminators=new Map(void 0===e.events?[]:e.events.map((e=>[c.fromByteArray(_e(e.name)),e.name])))}decode(e){let t;try{t=i.Buffer.from(c.toByteArray(e))}catch(e){return null}const n=c.fromByteArray(t.slice(0,8)),r=this.discriminators.get(n);if(void 0===r)return null;const o=this.layouts.get(r);if(!o)throw new Error(`Unknown event: ${r}`);return{data:o.decode(t.slice(8)),name:r}}}function _e(e){return i.Buffer.from(g.sha256.digest(`event:${e}`)).slice(0,8)}class Le{constructor(e){if(void 0===e.state)throw new Error("Idl state not defined.");this.layout=Ne.typeDefLayout(e.state.struct,e.types)}async encode(e,t){const n=i.Buffer.alloc(1e3),r=this.layout.encode(t,n),o=await Ke(e),A=n.slice(0,r);return i.Buffer.concat([o,A])}decode(e){const t=e.slice(8);return this.layout.decode(t)}}async function Ke(e){let t=me("anchor-deprecated-state")?"account":"state";return i.Buffer.from(g.sha256.digest(`${t}:${e}`)).slice(0,8)}class Ye{constructor(e){if(void 0===e.types)return void(this.typeLayouts=new Map);const t=e.types.map((t=>[t.name,Ne.typeDefLayout(t,e.types)]));this.typeLayouts=new Map(t),this.idl=e}encode(e,t){const n=i.Buffer.alloc(1e3),r=this.typeLayouts.get(e);if(!r)throw new Error(`Unknown type: ${e}`);const o=r.encode(t,n);return n.slice(0,o)}decode(e,t){const n=this.typeLayouts.get(e);if(!n)throw new Error(`Unknown type: ${e}`);return n.decode(t)}}class je{constructor(e){this.instruction=new Te(e),this.accounts=new xe(e),this.events=new Ue(e),e.state&&(this.state=new Le(e)),this.types=new Ye(e)}}var We="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:void 0!==n.g?n.g:"undefined"!=typeof self?self:{};class Je{constructor(e,t){if(!Number.isInteger(e))throw new TypeError("span must be an integer");this.span=e,this.property=t}makeDestinationObject(){return{}}decode(e,t){throw new Error("Layout is abstract")}encode(e,t,n){throw new Error("Layout is abstract")}getSpan(e,t){if(0>this.span)throw new RangeError("indeterminate span");return this.span}replicate(e){const t=Object.create(this.constructor.prototype);return Object.assign(t,this),t.property=e,t}fromArray(e){}}var qe=Je;class Ze extends Je{isCount(){throw new Error("ExternalLayout is abstract")}}class ze extends Ze{constructor(e,t,n){if(!(e instanceof Je))throw new TypeError("layout must be a Layout");if(void 0===t)t=0;else if(!Number.isInteger(t))throw new TypeError("offset must be integer or undefined");super(e.span,n||e.property),this.layout=e,this.offset=t}isCount(){return this.layout instanceof He||this.layout instanceof Ve}decode(e,t){return void 0===t&&(t=0),this.layout.decode(e,t+this.offset)}encode(e,t,n){return void 0===n&&(n=0),this.layout.encode(e,t,n+this.offset)}}class He extends Je{constructor(e,t){if(super(e,t),6e&&t instanceof Je),!0))throw new TypeError("fields must be array of Layout instances");"boolean"==typeof t&&void 0===n&&(n=t,t=void 0);for(const t of e)if(0>t.span&&void 0===t.property)throw new Error("fields cannot contain unnamed variable-length layout");let i=-1;try{i=e.reduce(((e,t)=>e+t.getSpan()),0)}catch(e){}super(i,t),this.fields=e,this.decodePrefixes=!!n}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);let n=0;try{n=this.fields.reduce(((n,i)=>{const r=i.getSpan(e,t);return t+=r,n+r}),0)}catch(e){throw new RangeError("indeterminate span")}return n}decode(e,t){void 0===t&&(t=0);const n=this.makeDestinationObject();for(const i of this.fields)if(void 0!==i.property&&(n[i.property]=i.decode(e,t)),t+=i.getSpan(e,t),this.decodePrefixes&&e.length===t)break;return n}encode(e,t,n){void 0===n&&(n=0);const i=n;let r=0,o=0;for(const i of this.fields){let A=i.span;if(o=0A&&(A=i.getSpan(t,n)))}r=n,n+=A}return r+o-i}fromArray(e){const t=this.makeDestinationObject();for(const n of this.fields)void 0!==n.property&&0n.span?t=-1:0<=t&&(t+=n.span)}}}class rt{constructor(e){this.property=e}decode(){throw new Error("UnionDiscriminator is abstract")}encode(){throw new Error("UnionDiscriminator is abstract")}}class ot extends rt{constructor(e,t){if(!(e instanceof Ze&&e.isCount()))throw new TypeError("layout must be an unsigned integer ExternalLayout");super(t||e.property||"variant"),this.layout=e}decode(e,t){return this.layout.decode(e,t)}encode(e,t,n){return this.layout.encode(e,t,n)}}class At extends Je{constructor(e,t,n){const i=e instanceof He||e instanceof Ve;if(i)e=new ot(new ze(e));else if(e instanceof Ze&&e.isCount())e=new ot(e);else if(!(e instanceof rt))throw new TypeError("discr must be a UnionDiscriminator or an unsigned integer layout");if(void 0===t&&(t=null),!(null===t||t instanceof Je))throw new TypeError("defaultLayout must be null or a Layout");if(null!==t){if(0>t.span)throw new Error("defaultLayout must have constant span");void 0===t.property&&(t=t.replicate("content"))}let r=-1;t&&(r=t.span,0<=r&&i&&(r+=e.layout.span)),super(r,n),this.discriminator=e,this.usesPrefixDiscriminator=i,this.defaultLayout=t,this.registry={};let o=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(e){return o(e)},this.configGetSourceVariant=function(e){o=e.bind(this)}}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);const n=this.getVariant(e,t);if(!n)throw new Error("unable to determine span for unrecognized variant");return n.getSpan(e,t)}defaultGetSourceVariant(e){if(e.hasOwnProperty(this.discriminator.property)){if(this.defaultLayout&&e.hasOwnProperty(this.defaultLayout.property))return;const t=this.registry[e[this.discriminator.property]];if(t&&(!t.layout||e.hasOwnProperty(t.property)))return t}else for(const t in this.registry){const n=this.registry[t];if(e.hasOwnProperty(n.property))return n}throw new Error("unable to infer src variant")}decode(e,t){let n;void 0===t&&(t=0);const i=this.discriminator,r=i.decode(e,t);let o=this.registry[r];if(void 0===o){let A=0;o=this.defaultLayout,this.usesPrefixDiscriminator&&(A=i.layout.span),n=this.makeDestinationObject(),n[i.property]=r,n[o.property]=this.defaultLayout.decode(e,t+A)}else n=o.decode(e,t);return n}encode(e,t,n){void 0===n&&(n=0);const i=this.getSourceVariant(e);if(void 0===i){const i=this.discriminator,r=this.defaultLayout;let o=0;return this.usesPrefixDiscriminator&&(o=i.layout.span),i.encode(e[i.property],t,n),o+r.encode(e[r.property],t,n+o)}return i.encode(e,t,n)}addVariant(e,t,n){const i=new st(this,e,t,n);return this.registry[e]=i,i}getVariant(e,t){let n=e;return y.isBuffer(e)&&(void 0===t&&(t=0),n=this.discriminator.decode(e,t)),this.registry[n]}}class st extends Je{constructor(e,t,n,i){if(!(e instanceof At))throw new TypeError("union must be a Union");if(!Number.isInteger(t)||0>t)throw new TypeError("variant must be a (non-negative) integer");if("string"==typeof n&&void 0===i&&(i=n,n=null),n){if(!(n instanceof Je))throw new TypeError("layout must be a Layout");if(null!==e.defaultLayout&&0<=n.span&&n.span>e.defaultLayout.span)throw new Error("variant span exceeds span of containing union");if("string"!=typeof i)throw new TypeError("variant must have a String property")}let r=e.span;0>e.span&&(r=n?n.span:0,0<=r&&e.usesPrefixDiscriminator&&(r+=e.discriminator.layout.span)),super(r,i),this.union=e,this.variant=t,this.layout=n||null}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);let n=0;return this.union.usesPrefixDiscriminator&&(n=this.union.discriminator.layout.span),n+this.layout.getSpan(e,t+n)}decode(e,t){const n=this.makeDestinationObject();if(void 0===t&&(t=0),this!==this.union.getVariant(e,t))throw new Error("variant mismatch");let i=0;return this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout?n[this.property]=this.layout.decode(e,t+i):this.property?n[this.property]=!0:this.union.usesPrefixDiscriminator&&(n[this.union.discriminator.property]=this.variant),n}encode(e,t,n){void 0===n&&(n=0);let i=0;if(this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout&&!e.hasOwnProperty(this.property))throw new TypeError("variant lacks property "+this.property);this.union.discriminator.encode(this.variant,t,n);let r=i;if(this.layout&&(this.layout.encode(e[this.property],t,n+i),r+=this.layout.getSpan(t,n+i),0<=this.union.span&&r>this.union.span))throw new Error("encoded variant overruns containing union");return r}fromArray(e){if(this.layout)return this.layout.fromArray(e)}}class at extends Je{constructor(e,t){if(!(e instanceof Ze&&e.isCount()||Number.isInteger(e)&&0<=e))throw new TypeError("length must be positive integer or an unsigned integer ExternalLayout");let n=-1;e instanceof Ze||(n=e),super(n,t),this.length=e}getSpan(e,t){let n=this.span;return 0>n&&(n=this.length.decode(e,t)),n}decode(e,t){void 0===t&&(t=0);let n=this.span;return 0>n&&(n=this.length.decode(e,t)),e.slice(t,t+n)}encode(e,t,n){let i=this.length;if(this.length instanceof Ze&&(i=e.length),!y.isBuffer(e)||i!==e.length)throw new TypeError((r="Blob.encode",(this.property?r+"["+this.property+"]":r)+" requires (length "+i+") Buffer as src"));var r;if(n+i>t.length)throw new RangeError("encoding overruns Buffer");return t.write(e.toString("hex"),n,i,"hex"),this.length instanceof Ze&&this.length.encode(i,t,n),i}}var ct=(e,t,n)=>new ze(e,t,n),ut=e=>new He(1,e),lt=e=>new He(4,e),gt=e=>new tt(e),dt=e=>new nt(e),ht=(e,t,n)=>new it(e,t,n),pt=(e,t,n)=>new At(e,t,n),ft=(e,t)=>new at(e,t);class mt{constructor(e){}encode(e,t){switch(l()(e)){case"initializeMint":return function({decimals:e,mintAuthority:t,freezeAuthority:n}){return Bt({initializeMint:{decimals:e,mintAuthority:t.toBuffer(),freezeAuthorityOption:!!n,freezeAuthority:(n||r.PublicKey.default).toBuffer()}})}(t);case"initializeAccount":return Bt({initializeAccount:{}});case"initializeMultisig":return function({m:e}){return Bt({initializeMultisig:{m:e}})}(t);case"transfer":return function({amount:e}){return Bt({transfer:{amount:e}})}(t);case"approve":return function({amount:e}){return Bt({approve:{amount:e}})}(t);case"revoke":return Bt({revoke:{}});case"setAuthority":return function({authorityType:e,newAuthority:t}){return Bt({setAuthority:{authorityType:e,newAuthority:t}})}(t);case"mintTo":return function({amount:e}){return Bt({mintTo:{amount:e}})}(t);case"burn":return function({amount:e}){return Bt({burn:{amount:e}})}(t);case"closeAccount":return Bt({closeAccount:{}});case"freezeAccount":return Bt({freezeAccount:{}});case"thawAccount":return Bt({thawAccount:{}});case"transferChecked":return function({amount:e,decimals:t}){return Bt({transferChecked:{amount:e,decimals:t}})}(t);case"approvedChecked":return function({amount:e,decimals:t}){return Bt({approveChecked:{amount:e,decimals:t}})}(t);case"mintToChecked":return function({amount:e,decimals:t}){return Bt({mintToChecked:{amount:e,decimals:t}})}(t);case"burnChecked":return function({amount:e,decimals:t}){return Bt({burnChecked:{amount:e,decimals:t}})}(t);case"intializeAccount2":return function({authority:e}){return Bt({initilaizeAccount2:{authority:e}})}(t);case"syncNative":return Bt({syncNative:{}});case"initializeAccount3":return function({authority:e}){return Bt({initializeAccount3:{authority:e}})}(t);case"initializeMultisig2":return function({m:e}){return Bt({initializeMultisig2:{m:e}})}(t);case"initializeMint2":return function({decimals:e,mintAuthority:t,freezeAuthority:n}){return Bt({encodeInitializeMint2:{decimals:e,mintAuthority:t,freezeAuthority:n}})}(t);default:throw new Error(`Invalid instruction: ${e}`)}}encodeState(e,t){throw new Error("SPL token does not have state")}}const It=pt(ut("instruction"));function yt(e){return ft(32,e)}function Bt(e){let t=y.alloc(Ct),n=It.encode(e,t);return t.slice(0,n)}It.addVariant(0,ht([ut("decimals"),ft(32,"mintAuthority"),ut("freezeAuthorityOption"),yt("freezeAuthority")]),"initializeMint"),It.addVariant(1,ht([]),"initializeAccount"),It.addVariant(2,ht([ut("m")]),"initializeMultisig"),It.addVariant(3,ht([gt("amount")]),"transfer"),It.addVariant(4,ht([gt("amount")]),"approve"),It.addVariant(5,ht([]),"revoke"),It.addVariant(6,ht([ut("authorityType"),ut("newAuthorityOption"),yt("newAuthority")]),"setAuthority"),It.addVariant(7,ht([gt("amount")]),"mintTo"),It.addVariant(8,ht([gt("amount")]),"burn"),It.addVariant(9,ht([]),"closeAccount"),It.addVariant(10,ht([]),"freezeAccount"),It.addVariant(11,ht([]),"thawAccount"),It.addVariant(12,ht([gt("amount"),ut("decimals")]),"transferChecked"),It.addVariant(13,ht([gt("amount"),ut("decimals")]),"approvedChecked"),It.addVariant(14,ht([gt("amount"),ut("decimals")]),"mintToChecked"),It.addVariant(15,ht([gt("amount"),ut("decimals")]),"burnedChecked"),It.addVariant(16,ht([yt("authority")]),"InitializeAccount2"),It.addVariant(17,ht([]),"syncNative"),It.addVariant(18,ht([yt("authority")]),"initializeAccount3"),It.addVariant(19,ht([ut("m")]),"initializeMultisig2"),It.addVariant(20,ht([ut("decimals"),yt("mintAuthority"),ut("freezeAuthorityOption"),yt("freezeAuthority")]),"initializeMint2");const Ct=Math.max(...Object.values(It.registry).map((e=>e.span)));class wt{constructor(e){}encode(e,t){throw new Error("SPL token does not have state")}decode(e){throw new Error("SPL token does not have state")}}function Et(e){return new kt(ft(8),(e=>St.fromBuffer(e)),(e=>e.toBuffer()),e)}function Qt(e){return new kt(ft(32),(e=>new r.PublicKey(e)),(e=>e.toBuffer()),e)}function bt(e,t){return new vt(e,t)}class kt extends qe{constructor(e,t,n,i){super(e.span,i),this.layout=e,this.decoder=t,this.encoder=n}decode(e,t){return this.decoder(this.layout.decode(e,t))}encode(e,t,n){return this.layout.encode(this.encoder(e),t,n)}getSpan(e,t){return this.layout.getSpan(e,t)}}class vt extends qe{constructor(e,t){super(-1,t),this.layout=e,this.discriminator=lt()}encode(e,t,n=0){return null==e?this.layout.span+this.discriminator.encode(0,t,n):(this.discriminator.encode(1,t,n),this.layout.encode(e,t,n+4)+4)}decode(e,t=0){const n=this.discriminator.decode(e,t);if(0===n)return null;if(1===n)return this.layout.decode(e,t+4);throw new Error("Invalid coption "+this.layout.property)}getSpan(e,t=0){return this.layout.getSpan(e,t+4)+4}}class St extends(A()){toBuffer(){const e=super.toArray().reverse(),t=y.from(e);if(8===t.length)return t;if(t.length>=8)throw new Error("u64 too large");const n=y.alloc(8);return t.copy(n),n}static fromBuffer(e){if(8!==e.length)throw new Error(`Invalid buffer length: ${e.length}`);return new St([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}class Mt{constructor(e){this.idl=e}async encode(e,t){switch(e){case"token":{const e=y.alloc(165),n=Nt.encode(t,e);return e.slice(0,n)}case"mint":{const e=y.alloc(82),n=Dt.encode(t,e);return e.slice(0,n)}default:throw new Error(`Invalid account name: ${e}`)}}decode(e,t){return this.decodeUnchecked(e,t)}decodeUnchecked(e,t){switch(e){case"token":return function(e){return Nt.decode(e)}(t);case"mint":return function(e){return Dt.decode(e)}(t);default:throw new Error(`Invalid account name: ${e}`)}}memcmp(e,t){switch(e){case"token":return{dataSize:165};case"mint":return{dataSize:82};default:throw new Error(`Invalid account name: ${e}`)}}size(e){var t;return null!==(t=Fe(this.idl,e))&&void 0!==t?t:0}}const Dt=ht([bt(Qt(),"mintAuthority"),Et("supply"),ut("decimals"),new kt(ut(),(function(e){if(0===e)return!1;if(1===e)return!0;throw new Error("Invalid bool: "+e)}),(function(e){return e?1:0}),"isInitialized"),bt(Qt(),"freezeAuthority")]),Nt=ht([Qt("mint"),Qt("authority"),Et("amount"),bt(Qt(),"delegate"),ut("state"),bt(Et(),"isNative"),Et("delegatedAmount"),bt(Qt(),"closeAuthority")]);class Tt{constructor(e){}decode(e){throw new Error("SPL token program does not have events")}}class Pt{constructor(e){}encode(e,t){throw new Error("SPL token does not have user-defined types")}decode(e,t){throw new Error("SPL token does not have user-defined types")}}class Ot{constructor(e){this.instruction=new mt(e),this.accounts=new Mt(e),this.events=new Tt(e),this.state=new wt(e),this.types=new Pt(e)}}class Ft{constructor(e){}encode(e,t){switch(l()(e)){case"createAccount":return function({lamports:e,space:t,owner:n}){return _t({createAccount:{lamports:e,space:t,owner:n.toBuffer()}})}(t);case"assign":return function({owner:e}){return _t({assign:{owner:e.toBuffer()}})}(t);case"transfer":return function({lamports:e}){return _t({transfer:{lamports:e}})}(t);case"createAccountWithSeed":return function({base:e,seed:t,lamports:n,space:i,owner:r}){return _t({createAccountWithSeed:{base:e.toBuffer(),seed:t,lamports:n,space:i,owner:r.toBuffer()}},Ut.getVariant(3).span+t.length)}(t);case"advanceNonceAccount":return function({authorized:e}){return _t({advanceNonceAccount:{authorized:e.toBuffer()}})}(t);case"withdrawNonceAccount":return function({lamports:e}){return _t({withdrawNonceAccount:{lamports:e}})}(t);case"initializeNonceAccount":return function({authorized:e}){return _t({initializeNonceAccount:{authorized:e.toBuffer()}})}(t);case"authorizeNonceAccount":return function({authorized:e}){return _t({authorizeNonceAccount:{authorized:e.toBuffer()}})}(t);case"allocate":return function({space:e}){return _t({allocate:{space:e}})}(t);case"allocateWithSeed":return function({base:e,seed:t,space:n,owner:i}){return _t({allocateWithSeed:{base:e.toBuffer(),seed:t,space:n,owner:i.toBuffer()}},Ut.getVariant(9).span+t.length)}(t);case"assignWithSeed":return function({base:e,seed:t,owner:n}){return _t({assignWithSeed:{base:e.toBuffer(),seed:t,owner:n.toBuffer()}},Ut.getVariant(10).span+t.length)}(t);case"transferWithSeed":return function({lamports:e,seed:t,owner:n}){return _t({transferWithSeed:{lamports:e,seed:t,owner:n.toBuffer()}},Ut.getVariant(11).span+t.length)}(t);default:throw new Error(`Invalid instruction: ${e}`)}}encodeState(e,t){throw new Error("System does not have state")}}class Rt extends qe{constructor(e){super(-1,e),this.property=e,this.layout=ht([lt("length"),lt("lengthPadding"),ft(ct(lt(),-8),"chars")],this.property)}encode(e,t,n=0){if(null==e)return this.layout.span;const i={chars:y.from(e,"utf8")};return this.layout.encode(i,t,n)}decode(e,t=0){return this.layout.decode(e,t).chars.toString()}getSpan(e,t=0){return lt().span+lt().span+new(A())(new Uint8Array(e).slice(t,t+4),10,"le").toNumber()}}function Gt(e){return new Rt(e)}function xt(e){return ft(32,e)}const Ut=pt(lt("instruction"));function _t(e,t){const n=y.alloc(null!=t?t:Lt),i=Ut.encode(e,n);return void 0===t?n.slice(0,i):n}Ut.addVariant(0,ht([dt("lamports"),dt("space"),xt("owner")]),"createAccount"),Ut.addVariant(1,ht([xt("owner")]),"assign"),Ut.addVariant(2,ht([dt("lamports")]),"transfer"),Ut.addVariant(3,ht([xt("base"),Gt("seed"),dt("lamports"),dt("space"),xt("owner")]),"createAccountWithSeed"),Ut.addVariant(4,ht([xt("authorized")]),"advanceNonceAccount"),Ut.addVariant(5,ht([dt("lamports")]),"withdrawNonceAccount"),Ut.addVariant(6,ht([xt("authorized")]),"initializeNonceAccount"),Ut.addVariant(7,ht([xt("authorized")]),"authorizeNonceAccount"),Ut.addVariant(8,ht([dt("space")]),"allocate"),Ut.addVariant(9,ht([xt("base"),Gt("seed"),dt("space"),xt("owner")]),"allocateWithSeed"),Ut.addVariant(10,ht([xt("base"),Gt("seed"),xt("owner")]),"assignWithSeed"),Ut.addVariant(11,ht([dt("lamports"),Gt("seed"),xt("owner")]),"transferWithSeed");const Lt=Math.max(...Object.values(Ut.registry).map((e=>e.span)));class Kt{constructor(e){}encode(e,t){throw new Error("System does not have state")}decode(e){throw new Error("System does not have state")}}class Yt{constructor(e){this.idl=e}async encode(e,t){if("nonce"===e){const e=y.alloc(r.NONCE_ACCOUNT_LENGTH),n=Jt.encode(t,e);return e.slice(0,n)}throw new Error(`Invalid account name: ${e}`)}decode(e,t){return this.decodeUnchecked(e,t)}decodeUnchecked(e,t){if("nonce"===e)return function(e){return Jt.decode(e)}(t);throw new Error(`Invalid account name: ${e}`)}memcmp(e,t){if("nonce"===e)return{dataSize:r.NONCE_ACCOUNT_LENGTH};throw new Error(`Invalid account name: ${e}`)}size(e){var t;return null!==(t=Fe(this.idl,e))&&void 0!==t?t:0}}class jt extends qe{constructor(e,t,n,i){super(e.span,i),this.layout=e,this.decoder=t,this.encoder=n}decode(e,t){return this.decoder(this.layout.decode(e,t))}encode(e,t,n){return this.layout.encode(this.encoder(e),t,n)}getSpan(e,t){return this.layout.getSpan(e,t)}}function Wt(e){return new jt(ft(32),(e=>new r.PublicKey(e)),(e=>e.toBuffer()),e)}const Jt=ht([lt("version"),lt("state"),Wt("authorizedPubkey"),Wt("nonce"),ht([gt("lamportsPerSignature")],"feeCalculator")]);class qt{constructor(e){}decode(e){throw new Error("System program does not have events")}}class Zt{constructor(e){}encode(e,t){throw new Error("System does not have user-defined types")}decode(e,t){throw new Error("System does not have user-defined types")}}class zt{constructor(e){this.instruction=new Ft(e),this.accounts=new Yt(e),this.events=new qt(e),this.state=new Kt(e),this.types=new Zt(e)}}var Ht=Object.freeze({__proto__:null,hash:function(e){return(0,g.sha256)(e)}});function Vt(e,t,n){const o=i.Buffer.concat([e.toBuffer(),i.Buffer.from(t),n.toBuffer()]),A=g.sha256.digest(o);return new r.PublicKey(i.Buffer.from(A))}function Xt(e,t){let n=i.Buffer.alloc(0);e.forEach((function(e){if(e.length>32)throw new TypeError("Max seed length exceeded");n=i.Buffer.concat([n,en(e)])})),n=i.Buffer.concat([n,t.toBuffer(),i.Buffer.from("ProgramDerivedAddress")]);let o=(0,g.sha256)(new Uint8Array(n)),s=new(A())(o,16).toArray(void 0,32);if(r.PublicKey.isOnCurve(new Uint8Array(s)))throw new Error("Invalid seeds, address must fall off the curve");return new r.PublicKey(s)}function $t(e,t){let n,r=255;for(;0!=r;){try{n=Xt(e.concat(i.Buffer.from([r])),t)}catch(e){if(e instanceof TypeError)throw e;r--;continue}return[n,r]}throw new Error("Unable to find a viable program address nonce")}const en=e=>e instanceof i.Buffer?e:e instanceof Uint8Array?i.Buffer.from(e.buffer,e.byteOffset,e.byteLength):i.Buffer.from(e);async function tn(e,...t){let n=[i.Buffer.from([97,110,99,104,111,114])];t.forEach((e=>{n.push(e instanceof i.Buffer?e:T(e).toBuffer())}));const[o]=await r.PublicKey.findProgramAddress(n,T(e));return o}var nn=Object.freeze({__proto__:null,createWithSeedSync:Vt,createProgramAddressSync:Xt,findProgramAddressSync:$t,associated:tn});const rn=new r.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),on=new r.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL");var An=Object.freeze({__proto__:null,TOKEN_PROGRAM_ID:rn,ASSOCIATED_PROGRAM_ID:on,associatedAddress:async function({mint:e,owner:t}){return(await r.PublicKey.findProgramAddress([t.toBuffer(),rn.toBuffer(),e.toBuffer()],on))[0]}}),sn={exports:{}};!function(e,t){var n="undefined"!=typeof self?self:We,i=function(){function e(){this.fetch=!1,this.DOMException=n.DOMException}return e.prototype=n,new e}();!function(e){!function(t){var n="URLSearchParams"in e,i="Symbol"in e&&"iterator"in Symbol,r="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),o="FormData"in e,A="ArrayBuffer"in e;if(A)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],a=ArrayBuffer.isView||function(e){return e&&s.indexOf(Object.prototype.toString.call(e))>-1};function c(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function u(e){return"string"!=typeof e&&(e=String(e)),e}function l(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return i&&(t[Symbol.iterator]=function(){return t}),t}function g(e){this.map={},e instanceof g?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function d(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function h(e){return new Promise((function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}}))}function p(e){var t=new FileReader,n=h(t);return t.readAsArrayBuffer(e),n}function f(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function m(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:r&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:o&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:n&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():A&&r&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=f(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):A&&(ArrayBuffer.prototype.isPrototypeOf(e)||a(e))?this._bodyArrayBuffer=f(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},r&&(this.blob=function(){var e=d(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?d(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(p)}),this.text=function(){var e=d(this);if(e)return e;if(this._bodyBlob)return function(e){var t=new FileReader,n=h(t);return t.readAsText(e),n}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),i=0;i-1?i:n),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function B(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var n=e.split("="),i=n.shift().replace(/\+/g," "),r=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(i),decodeURIComponent(r))}})),t}function C(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new g(t.headers),this.url=t.url||"",this._initBody(e)}y.prototype.clone=function(){return new y(this,{body:this._bodyInit})},m.call(y.prototype),m.call(C.prototype),C.prototype.clone=function(){return new C(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new g(this.headers),url:this.url})},C.error=function(){var e=new C(null,{status:0,statusText:""});return e.type="error",e};var w=[301,302,303,307,308];C.redirect=function(e,t){if(-1===w.indexOf(t))throw new RangeError("Invalid status code");return new C(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var n=Error(e);this.stack=n.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function E(e,n){return new Promise((function(i,o){var A=new y(e,n);if(A.signal&&A.signal.aborted)return o(new t.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function a(){s.abort()}s.onload=function(){var e,t,n={status:s.status,statusText:s.statusText,headers:(e=s.getAllResponseHeaders()||"",t=new g,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var n=e.split(":"),i=n.shift().trim();if(i){var r=n.join(":").trim();t.append(i,r)}})),t)};n.url="responseURL"in s?s.responseURL:n.headers.get("X-Request-URL");var r="response"in s?s.response:s.responseText;i(new C(r,n))},s.onerror=function(){o(new TypeError("Network request failed"))},s.ontimeout=function(){o(new TypeError("Network request failed"))},s.onabort=function(){o(new t.DOMException("Aborted","AbortError"))},s.open(A.method,A.url,!0),"include"===A.credentials?s.withCredentials=!0:"omit"===A.credentials&&(s.withCredentials=!1),"responseType"in s&&r&&(s.responseType="blob"),A.headers.forEach((function(e,t){s.setRequestHeader(t,e)})),A.signal&&(A.signal.addEventListener("abort",a),s.onreadystatechange=function(){4===s.readyState&&A.signal.removeEventListener("abort",a)}),s.send(void 0===A._bodyInit?null:A._bodyInit)}))}E.polyfill=!0,e.fetch||(e.fetch=E,e.Headers=g,e.Request=y,e.Response=C),t.Headers=g,t.Request=y,t.Response=C,t.fetch=E,Object.defineProperty(t,"__esModule",{value:!0})}({})}(i),i.fetch.ponyfill=!0,delete i.fetch.polyfill;var r=i;(t=r.fetch).default=r.fetch,t.fetch=r.fetch,t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response,e.exports=t}(sn,sn.exports);var an=function(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}(sn.exports);async function cn(e,t){const n=await e.getAccountInfo(t);if(null===n)throw new Error("program account not found");const{program:i}=ln(n.data),r=await e.getAccountInfo(i.programdataAddress);if(null===r)throw new Error("program data account not found");const{programData:o}=ln(r.data);return o}const un=d.rustEnum([d.struct([],"uninitialized"),d.struct([d.option(d.publicKey(),"authorityAddress")],"buffer"),d.struct([d.publicKey("programdataAddress")],"program"),d.struct([d.u64("slot"),d.option(d.publicKey(),"upgradeAuthorityAddress")],"programData")],void 0,d.u32());function ln(e){return un.decode(e)}var gn=Object.freeze({__proto__:null,verifiedBuild:async function(e,t,n=5){const i=`https://api.apr.dev/api/v0/program/${t.toString()}/latest?limit=${n}`,[r,o]=await Promise.all([cn(e,t),an(i)]),A=(await o.json()).filter((e=>!e.aborted&&"Built"===e.state&&"Verified"===e.verified));if(0===A.length)return null;const s=A[0];return r.slot.toNumber()!==s.verified_slot?null:s},fetchData:cn,decodeUpgradeableLoaderState:ln}),dn=Object.freeze({__proto__:null,sha256:Ht,rpc:se,publicKey:nn,bytes:S,token:An,features:Ie,registry:gn});const hn=d.struct([d.publicKey("authority"),d.vecU8("data")]);function pn(e,t){var n,i;let r={};const o=e.args?e.args.length:0;if(t.length>o){if(t.length!==o+1)throw new Error(`provided too many arguments ${t} to instruction ${null==e?void 0:e.name} expecting: ${null!==(i=null===(n=e.args)||void 0===n?void 0:n.map((e=>e.name)))&&void 0!==i?i:[]}`);r=t.pop()}return[t,r]}class fn{static build(e,t,n){if("_inner"===e.name)throw new ye("the _inner name is reserved");const i=(...o)=>{const[A,s]=pn(e,[...o]);N(e.accounts,s.accounts);const a=i.accounts(s.accounts);return void 0!==s.remainingAccounts&&a.push(...s.remainingAccounts),me("debug-logs")&&I.log("Outgoing account metas:",a),new r.TransactionInstruction({keys:a,programId:n,data:t(e.name,D(e,...A))})};return i.accounts=t=>fn.accountsArray(t,e.accounts,e.name),i}static accountsArray(e,t,n){return e?t.map((t=>{if(void 0!==("accounts"in t?t.accounts:void 0)){const i=e[t.name];return fn.accountsArray(i,t.accounts,n).flat()}{const i=t;let r;try{r=T(e[t.name])}catch(e){throw new Error(`Wrong input type for account "${t.name}" in the instruction accounts object${void 0!==n?' for instruction "'+n+'"':""}. Expected PublicKey or string.`)}return{pubkey:r,isWritable:i.isMut,isSigner:i.isSigner}}})).flat():[]}}class mn{static build(e,t,n,i){return async(...r)=>{var o;const A=t(...r),[,s]=pn(e,[...r]);if(void 0===i.sendAndConfirm)throw new Error("This function requires 'Provider.sendAndConfirm' to be implemented.");try{return await i.sendAndConfirm(A,null!==(o=s.signers)&&void 0!==o?o:[],s.options)}catch(e){throw Ee(e,n)}}}}class In{static build(e,t){return(...n)=>{var i,o,A;const[,s]=pn(e,[...n]),a=new r.Transaction;if(s.preInstructions&&s.instructions)throw new Error("instructions is deprecated, use preInstructions");return null===(i=s.preInstructions)||void 0===i||i.forEach((e=>a.add(e))),null===(o=s.instructions)||void 0===o||o.forEach((e=>a.add(e))),a.add(t(...n)),null===(A=s.postInstructions)||void 0===A||A.forEach((e=>a.add(e))),a}}}class yn{constructor(e,t,n=de(),i=new je(e)){this.provider=n,this.coder=i,this._idl=e,this._programId=t,this._address=Bn(t),this._sub=null;const[o,A,s]=(()=>{var o;let A={},s={},a={};return null===(o=e.state)||void 0===o||o.methods.forEach((o=>{const c=fn.build(o,((e,t)=>i.instruction.encodeState(e,t)),t);c.accounts=e=>{const i=function(e,t,n,i){if("new"===n.name){const[n]=$t([],e);if(void 0===t.wallet)throw new Error("This function requires the Provider interface implementor to have a 'wallet' field.");return[{pubkey:t.wallet.publicKey,isWritable:!1,isSigner:!0},{pubkey:Bn(e),isWritable:!0,isSigner:!1},{pubkey:n,isWritable:!1,isSigner:!1},{pubkey:r.SystemProgram.programId,isWritable:!1,isSigner:!1},{pubkey:e,isWritable:!1,isSigner:!1}]}return N(n.accounts,i),[{pubkey:Bn(e),isWritable:!0,isSigner:!1}]}(t,n,o,e);return i.concat(fn.accountsArray(e,o.accounts,o.name))};const u=In.build(o,c),g=mn.build(o,u,M(e),n),d=l()(o.name);A[d]=c,s[d]=u,a[d]=g})),[A,s,a]})();this.instruction=o,this.transaction=A,this.rpc=s}get programId(){return this._programId}async fetch(){const e=this.address(),t=await this.provider.connection.getAccountInfo(e);if(null===t)throw new Error(`Account does not exist ${e.toString()}`);const n=this._idl.state;if(!n)throw new Error("State is not specified in IDL.");if((await Ke(n.struct.name)).compare(t.data.slice(0,8)))throw new Error("Invalid account discriminator");return this.coder.state.decode(t.data)}address(){return this._address}subscribe(e){if(null!==this._sub)return this._sub.ee;const t=new(f()),n=this.provider.connection.onAccountChange(this.address(),(e=>{const n=this.coder.state.decode(e.data);t.emit("change",n)}),e);return this._sub={ee:t,listener:n},t}unsubscribe(){null!==this._sub&&this.provider.connection.removeAccountChangeListener(this._sub.listener).then((async()=>{this._sub=null})).catch(I.error)}}function Bn(e){let[t]=$t([],e);return Vt(t,"unversioned",e)}class Cn{constructor(e,t,n,i,r){this._idlAccount=t,this._programId=n,this._provider=null!=i?i:de(),this._coder=null!=r?r:new je(e),this._size=this._coder.accounts.size(t)}get size(){return this._size}get programId(){return this._programId}get provider(){return this._provider}get coder(){return this._coder}async fetchNullable(e,t){const n=await this.getAccountInfo(e,t);return null===n?null:this._coder.accounts.decode(this._idlAccount.name,n.data)}async fetch(e,t){const n=await this.fetchNullable(e,t);if(null===n)throw new Error(`Account does not exist ${e.toString()}`);return n}async fetchMultiple(e,t){return(await $(this._provider.connection,e.map((e=>T(e))),t)).map((e=>null==e?null:this._coder.accounts.decode(this._idlAccount.name,null==e?void 0:e.account.data)))}async all(e){return(await this._provider.connection.getProgramAccounts(this._programId,{commitment:this._provider.connection.commitment,filters:[{memcmp:this.coder.accounts.memcmp(this._idlAccount.name,e instanceof y?e:void 0)},...Array.isArray(e)?e:[]]})).map((({pubkey:e,account:t})=>({publicKey:e,account:this._coder.accounts.decode(this._idlAccount.name,t.data)})))}subscribe(e,t){const n=wn.get(e.toString());if(n)return n.ee;const i=new(f());e=T(e);const r=this._provider.connection.onAccountChange(e,(e=>{const t=this._coder.accounts.decode(this._idlAccount.name,e.data);i.emit("change",t)}),t);return wn.set(e.toString(),{ee:i,listener:r}),i}async unsubscribe(e){let t=wn.get(e.toString());t?wn&&await this._provider.connection.removeAccountChangeListener(t.listener).then((()=>{wn.delete(e.toString())})).catch(I.error):I.warn("Address is not subscribed")}async createInstruction(e,t){const n=this.size;if(void 0===this._provider.wallet)throw new Error("This function requires the Provider interface implementor to have a 'wallet' field.");return r.SystemProgram.createAccount({fromPubkey:this._provider.wallet.publicKey,newAccountPubkey:e.publicKey,space:null!=t?t:n,lamports:await this._provider.connection.getMinimumBalanceForRentExemption(null!=t?t:n),programId:this._programId})}async associated(...e){const t=await this.associatedAddress(...e);return await this.fetch(t)}async associatedAddress(...e){return await tn(this._programId,...e)}async getAccountInfo(e,t){return await this._provider.connection.getAccountInfo(T(e),t)}}const wn=new Map,En="Program log: ".length,Qn="Program data: ".length;class bn{constructor(e,t,n){this._programId=e,this._provider=t,this._eventParser=new kn(e,n),this._eventCallbacks=new Map,this._eventListeners=new Map,this._listenerIdCount=0}addEventListener(e,t){var n;let i=this._listenerIdCount;return this._listenerIdCount+=1,e in this._eventCallbacks||this._eventListeners.set(e,[]),this._eventListeners.set(e,(null!==(n=this._eventListeners.get(e))&&void 0!==n?n:[]).concat(i)),this._eventCallbacks.set(i,[e,t]),void 0!==this._onLogsSubscriptionId||(this._onLogsSubscriptionId=this._provider.connection.onLogs(this._programId,((e,t)=>{if(!e.err)for(const n of this._eventParser.parseLogs(e.logs)){const i=this._eventListeners.get(n.name);i&&i.forEach((i=>{const r=this._eventCallbacks.get(i);if(r){const[,i]=r;i(n.data,t.slot,e.signature)}}))}}))),i}async removeEventListener(e){const t=this._eventCallbacks.get(e);if(!t)throw new Error(`Event listener ${e} doesn't exist!`);const[n]=t;let i=this._eventListeners.get(n);if(!i)throw new Error(`Event listeners don't exist for ${n}!`);this._eventCallbacks.delete(e),i=i.filter((t=>t!==e)),0===i.length&&this._eventListeners.delete(n),0==this._eventCallbacks.size&&(m.ok(0===this._eventListeners.size),void 0!==this._onLogsSubscriptionId&&(await this._provider.connection.removeOnLogsListener(this._onLogsSubscriptionId),this._onLogsSubscriptionId=void 0))}}class kn{constructor(e,t){this.coder=t,this.programId=e}*parseLogs(e){const t=new Sn(e),n=new vn;let i=t.next();for(;null!==i;){let[e,r,o]=this.handleLog(n,i);e&&(yield e),r&&n.push(r),o&&n.pop(),i=t.next()}}handleLog(e,t){return e.stack.length>0&&e.program()===this.programId.toString()?this.handleProgramLog(t):[null,...this.handleSystemLog(t)]}handleProgramLog(e){if(e.startsWith("Program log: ")||e.startsWith("Program data: ")){const t=e.startsWith("Program log: ")?e.slice(En):e.slice(Qn);return[this.coder.events.decode(t),null,!1]}return[null,...this.handleSystemLog(e)]}handleSystemLog(e){const t=e.split(":")[0];return null!==t.match(/^Program (.*) success/g)?[null,!0]:t.startsWith(`Program ${this.programId.toString()} invoke`)?[this.programId.toString(),!1]:t.includes("invoke")?["cpi",!1]:[null,!1]}}class vn{constructor(){this.stack=[]}program(){return m.ok(this.stack.length>0),this.stack[this.stack.length-1]}push(e){this.stack.push(e)}pop(){m.ok(this.stack.length>0),this.stack.pop()}}class Sn{constructor(e){this.logs=e}next(){if(0===this.logs.length)return null;let e=this.logs[0];return this.logs=this.logs.slice(1),e}}const Mn=new r.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA");function Dn(){return new Ot(Nn)}const Nn={version:"0.1.0",name:"spl_token",instructions:[{name:"initializeMint",accounts:[{name:"mint",isMut:!0,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"decimals",type:"u8"},{name:"mintAuthority",type:"publicKey"},{name:"freezeAuthority",type:{coption:"publicKey"}}]},{name:"initializeAccount",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]},{name:"initializeMultisig",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"m",type:"u8"}]},{name:"transfer",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"destination",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"}]},{name:"approve",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"delegate",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"}]},{name:"revoke",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[]},{name:"setAuthority",accounts:[{name:"mint",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"authorityType",type:"u8"},{name:"newAuthority",type:{coption:"publicKey"}}]},{name:"mintTo",accounts:[{name:"mint",isMut:!0,isSigner:!1},{name:"to",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"}]},{name:"burn",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"}]},{name:"closeAccount",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"destination",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!1}],args:[]},{name:"freezeAccount",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[]},{name:"thawAccount",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[]},{name:"transferChecked",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"destination",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]},{name:"approveChecked",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"delegate",isMut:!1,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]},{name:"mintToChecked",accounts:[{name:"mint",isMut:!0,isSigner:!1},{name:"to",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]},{name:"burnChecked",accounts:[{name:"source",isMut:!0,isSigner:!1},{name:"mint",isMut:!0,isSigner:!1},{name:"authority",isMut:!1,isSigner:!0}],args:[{name:"amount",type:"u64"},{name:"decimals",type:"u8"}]},{name:"initializeAccount2",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"authority",type:"publicKey"}]},{name:"syncNative",accounts:[{name:"account",isMut:!0,isSigner:!1}],args:[]},{name:"initializeAccount3",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1}],args:[{name:"authority",type:"publicKey"}]},{name:"initializeMultisig2",accounts:[{name:"account",isMut:!0,isSigner:!1}],args:[{name:"m",type:"u8"}]},{name:"initializeMint2",accounts:[{name:"mint",isMut:!0,isSigner:!1}],args:[{name:"decimals",type:"u8"},{name:"mintAuthority",type:"publicKey"},{name:"freezeAuthority",type:{coption:"publicKey"}}]}],accounts:[{name:"mint",type:{kind:"struct",fields:[{name:"mintAuthority",type:{coption:"publicKey"}},{name:"supply",type:"u64"},{name:"decimals",type:"u8"},{name:"isInitialized",type:"bool"},{name:"freezeAuthority",type:{coption:"publicKey"}}]}},{name:"token",type:{kind:"struct",fields:[{name:"mint",type:"publicKey"},{name:"authority",type:"publicKey"},{name:"amount",type:"u64"},{name:"delegate",type:{coption:"publicKey"}},{name:"state",type:"u8"},{name:"isNative",type:{coption:"u64"}},{name:"delegatedAmount",type:"u64"},{name:"closeAuthority",type:{coption:"publicKey"}}]}}]};class Tn{constructor(e,t,n,i,r,o){this._args=e,this._accounts=t,this._provider=n,this._programId=i,this._idlIx=r,this._accountStore=new Pn(n,o)}async resolve(){for(let e=0;e0&&!this._accounts[n]&&await this.autoPopulatePda(t)}}async autoPopulatePda(e){if(!e.pda||!e.pda.seeds)throw new Error("Must have seeds");const t=await Promise.all(e.pda.seeds.map((e=>this.toBuffer(e)))),n=await this.parseProgramId(e),[i]=await r.PublicKey.findProgramAddress(t,n);this._accounts[l()(e.name)]=i}async parseProgramId(e){var t;if(!(null===(t=e.pda)||void 0===t?void 0:t.programId))return this._programId;switch(e.pda.programId.kind){case"const":return new r.PublicKey(this.toBufferConst(e.pda.programId.value));case"arg":return this.argValue(e.pda.programId);case"account":return await this.accountValue(e.pda.programId);default:throw new Error(`Unexpected program seed kind: ${e.pda.programId.kind}`)}}async toBuffer(e){switch(e.kind){case"const":return this.toBufferConst(e);case"arg":return await this.toBufferArg(e);case"account":return await this.toBufferAccount(e);default:throw new Error(`Unexpected seed kind: ${e.kind}`)}}toBufferConst(e){return this.toBufferValue(e.type,e.value)}async toBufferArg(e){const t=this.argValue(e);return this.toBufferValue(e.type,t)}argValue(e){const t=l()(e.path.split(".")[0]),n=this._idlIx.args.findIndex((e=>e.name===t));if(-1===n)throw new Error(`Unable to find argument for seed: ${t}`);return this._args[n]}async toBufferAccount(e){const t=await this.accountValue(e);return this.toBufferValue(e.type,t)}async accountValue(e){const t=e.path.split("."),n=t[0],i=this._accounts[l()(n)];if(1===t.length)return i;const r=await this._accountStore.fetchAccount(e.account,i);return this.parseAccountValue(r,t.slice(1))}parseAccountValue(e,t){let n;for(;t.length>0;)n=e[l()(t[0])],t=t.slice(1);return n}toBufferValue(e,t){switch(e){case"u8":return y.from([t]);case"u16":let n=y.alloc(2);return n.writeUInt16LE(t),n;case"u32":let i=y.alloc(4);return i.writeUInt32LE(t),i;case"u64":let r=y.alloc(8);return r.writeBigUInt64LE(BigInt(t)),r;case"string":return y.from(w(t));case"publicKey":return t.toBuffer();default:if(e.array)return y.from(t);throw new Error(`Unexpected seed type: ${e}`)}}}Tn.CONST_ACCOUNTS={associatedTokenProgram:on,rent:r.SYSVAR_RENT_PUBKEY,systemProgram:r.SystemProgram.programId,tokenProgram:rn};class Pn{constructor(e,t){this._provider=e,this._accounts=t,this._cache=new Map}async fetchAccount(e,t){const n=t.toString();if(!this._cache.has(n))if("TokenAccount"===e){const e=await this._provider.connection.getAccountInfo(t);if(null===e)throw new Error(`invalid account info for ${n}`);const i=Dn().accounts.decode("token",e.data);this._cache.set(n,i)}else{const i=this._accounts[l()(e)].fetch(t);this._cache.set(n,i)}return this._cache.get(n)}}class On{static build(e,t,n,i,r,o,A,s,a){return(...c)=>new Fn(c,i,r,o,A,s,e,t,n,a)}}class Fn{constructor(e,t,n,i,r,o,A,s,a,c){this._args=e,this._ixFn=t,this._txFn=n,this._rpcFn=i,this._simulateFn=r,this._viewFn=o,this._accounts={},this._remainingAccounts=[],this._signers=[],this._preInstructions=[],this._postInstructions=[],this._autoResolveAccounts=!0,this._accountsResolver=new Tn(e,this._accounts,A,s,a,c)}async pubkeys(){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._accounts}accounts(e){return this._autoResolveAccounts=!0,Object.assign(this._accounts,e),this}accountsStrict(e){return this._autoResolveAccounts=!1,Object.assign(this._accounts,e),this}signers(e){return this._signers=this._signers.concat(e),this}remainingAccounts(e){return this._remainingAccounts=this._remainingAccounts.concat(e),this}preInstructions(e){return this._preInstructions=this._preInstructions.concat(e),this}postInstructions(e){return this._postInstructions=this._postInstructions.concat(e),this}async rpc(e){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._rpcFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:e})}async view(e){if(this._autoResolveAccounts&&await this._accountsResolver.resolve(),!this._viewFn)throw new Error("Method does not support views");return this._viewFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:e})}async simulate(e){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._simulateFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:e})}async instruction(){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._ixFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions})}async transaction(){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._txFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions})}}class Rn{constructor(e,t,n,i){t=T(t),n||(n=de()),this._idl=e,this._provider=n,this._programId=t,this._coder=null!=i?i:new je(e),this._events=new bn(this._programId,n,this._coder);const[r,o,A,s,a,c,u,g]=class{static build(e,t,n,i){const r={},o={},A={},s={},a={},c={},u=M(e),g=e.accounts?class{static build(e,t,n,i){var r;const o={};return null===(r=e.accounts)||void 0===r||r.forEach((r=>{const A=l()(r.name);o[A]=new Cn(e,r,n,i,t)})),o}}.build(e,t,n,i):{},d=class{static build(e,t,n,i){if(void 0!==e.state)return new yn(e,n,i,t)}}.build(e,t,n,i);return e.instructions.forEach((d=>{const h=fn.build(d,((e,n)=>t.instruction.encode(e,n)),n),p=In.build(d,h),f=mn.build(d,p,u,i),m=class{static build(e,t,n,i,r,o,A){return async(...s)=>{var a;const c=t(...s),[,u]=pn(e,[...s]);let l;if(void 0===i.simulate)throw new Error("This function requires 'Provider.simulate' to be implemented.");try{l=await i.simulate(c,u.signers,null===(a=u.options)||void 0===a?void 0:a.commitment)}catch(e){throw Ee(e,n)}if(void 0===l)throw new Error("Unable to simulate transaction");const g=l.logs;if(!g)throw new Error("Simulated logs not found");const d=[];if(A.events){let e=new kn(o,r);for(const t of e.parseLogs(g))d.push(t)}return{events:d,raw:g}}}}.build(d,p,u,i,t,n,e),I=class{static build(e,t,n,i){const r=t.accounts.find((e=>e.isMut)),o=!!t.returns;if(!r&&o)return async(...r)=>{var o,A;let s=await n(...r);const a=`Program return: ${e} `;let c=s.raw.find((e=>e.startsWith(a)));if(!c)throw new Error("View expected return log");let u=k(c.slice(a.length)),l=t.returns;if(!l)throw new Error("View expected return type");return Ne.fieldLayout({type:l},Array.from([...null!==(o=i.accounts)&&void 0!==o?o:[],...null!==(A=i.types)&&void 0!==A?A:[]])).decode(u)}}}.build(n,d,m,e),y=On.build(i,n,d,h,p,f,m,I,g),B=l()(d.name);o[B]=h,A[B]=p,r[B]=f,s[B]=m,a[B]=y,I&&(c[B]=I)})),[r,o,A,g,s,a,d,c]}}.build(e,this._coder,t,n);this.rpc=r,this.instruction=o,this.transaction=A,this.account=s,this.simulate=a,this.methods=c,this.state=u,this.views=g}get programId(){return this._programId}get idl(){return this._idl}get coder(){return this._coder}get provider(){return this._provider}static async at(e,t){const n=T(e),i=await Rn.fetchIdl(n,t);if(!i)throw new Error(`IDL not found for program: ${e.toString()}`);return new Rn(i,n,t)}static async fetchIdl(e,t){t=null!=t?t:de();const n=T(e),i=await async function(e){const t=(await r.PublicKey.findProgramAddress([],e))[0];return await r.PublicKey.createWithSeed(t,"anchor:idl",e)}(n),o=await t.connection.getAccountInfo(i);if(!o)return null;let A=(s=o.data.slice(8),hn.decode(s));var s;const a=(0,h.rr)(A.data);return JSON.parse(C(a))}addEventListener(e,t){return this._events.addEventListener(e,t)}async removeEventListener(e){return await this._events.removeEventListener(e)}}class Gn{constructor(e){}encode(e,t){if("create"===l()(e))return y.alloc(0);throw new Error(`Invalid instruction: ${e}`)}encodeState(e,t){throw new Error("SPL associated token does not have state")}}class xn{constructor(e){}encode(e,t){throw new Error("SPL associated token does not have state")}decode(e){throw new Error("SPL associated token does not have state")}}class Un{constructor(e){this.idl=e}async encode(e,t){throw new Error(`Invalid account name: ${e}`)}decode(e,t){return this.decodeUnchecked(e,t)}decodeUnchecked(e,t){throw new Error(`Invalid account name: ${e}`)}memcmp(e,t){throw new Error(`Invalid account name: ${e}`)}size(e){var t;return null!==(t=Fe(this.idl,e))&&void 0!==t?t:0}}class _n{constructor(e){}decode(e){throw new Error("SPL associated token program does not have events")}}class Ln{constructor(e){}encode(e,t){throw new Error("SPL associated token does not have user-defined types")}decode(e,t){throw new Error("SPL associated token does not have user-defined types")}}class Kn{constructor(e){this.instruction=new Gn(e),this.accounts=new Un(e),this.events=new _n(e),this.state=new xn(e),this.types=new Ln(e)}}const Yn=new r.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"),jn={version:"0.1.0",name:"spl_associated_token",instructions:[{name:"create",accounts:[{name:"authority",isMut:!0,isSigner:!0},{name:"associatedAccount",isMut:!0,isSigner:!1},{name:"owner",isMut:!1,isSigner:!1},{name:"mint",isMut:!1,isSigner:!1},{name:"systemProgram",isMut:!1,isSigner:!1},{name:"tokenProgram",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[]}]};class Wn{static token(e){return function(e){return new Rn(Nn,Mn,e,Dn())}(e)}static associatedToken(e){return function(e){return new Rn(jn,Yn,e,new Kn(jn))}(e)}}const Jn=new r.PublicKey("11111111111111111111111111111111"),qn={version:"0.1.0",name:"system_program",instructions:[{name:"createAccount",accounts:[{name:"from",isMut:!0,isSigner:!0},{name:"to",isMut:!0,isSigner:!0}],args:[{name:"lamports",type:"u64"},{name:"space",type:"u64"},{name:"owner",type:"publicKey"}]},{name:"assign",accounts:[{name:"pubkey",isMut:!0,isSigner:!0}],args:[{name:"owner",type:"publicKey"}]},{name:"transfer",accounts:[{name:"from",isMut:!0,isSigner:!0},{name:"to",isMut:!0,isSigner:!1}],args:[{name:"lamports",type:"u64"}]},{name:"createAccountWithSeed",accounts:[{name:"from",isMut:!0,isSigner:!0},{name:"to",isMut:!0,isSigner:!1},{name:"base",isMut:!1,isSigner:!0}],args:[{name:"base",type:"publicKey"},{name:"seed",type:"string"},{name:"lamports",type:"u64"},{name:"space",type:"u64"},{name:"owner",type:"publicKey"}]},{name:"advanceNonceAccount",accounts:[{name:"nonce",isMut:!0,isSigner:!1},{name:"recentBlockhashes",isMut:!1,isSigner:!1},{name:"authorized",isMut:!1,isSigner:!0}],args:[{name:"authorized",type:"publicKey"}]},{name:"withdrawNonceAccount",accounts:[{name:"nonce",isMut:!0,isSigner:!1},{name:"to",isMut:!0,isSigner:!1},{name:"recentBlockhashes",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1},{name:"authorized",isMut:!1,isSigner:!0}],args:[{name:"lamports",type:"u64"}]},{name:"initializeNonceAccount",accounts:[{name:"nonce",isMut:!0,isSigner:!0},{name:"recentBlockhashes",isMut:!1,isSigner:!1},{name:"rent",isMut:!1,isSigner:!1}],args:[{name:"authorized",type:"publicKey"}]},{name:"authorizeNonceAccount",accounts:[{name:"nonce",isMut:!0,isSigner:!1},{name:"authorized",isMut:!1,isSigner:!0}],args:[{name:"authorized",type:"publicKey"}]},{name:"allocate",accounts:[{name:"pubkey",isMut:!0,isSigner:!0}],args:[{name:"space",type:"u64"}]},{name:"allocateWithSeed",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"base",isMut:!1,isSigner:!0}],args:[{name:"base",type:"publicKey"},{name:"seed",type:"string"},{name:"space",type:"u64"},{name:"owner",type:"publicKey"}]},{name:"assignWithSeed",accounts:[{name:"account",isMut:!0,isSigner:!1},{name:"base",isMut:!1,isSigner:!0}],args:[{name:"base",type:"publicKey"},{name:"seed",type:"string"},{name:"owner",type:"publicKey"}]},{name:"transferWithSeed",accounts:[{name:"from",isMut:!0,isSigner:!1},{name:"base",isMut:!1,isSigner:!0},{name:"to",isMut:!0,isSigner:!1}],args:[{name:"lamports",type:"u64"},{name:"seed",type:"string"},{name:"owner",type:"publicKey"}]}],accounts:[{name:"nonce",type:{kind:"struct",fields:[{name:"version",type:"u32"},{name:"state",type:"u32"},{name:"authorizedPubkey",type:"publicKey"},{name:"nonce",type:"publicKey"},{name:"feeCalculator",type:{defined:"FeeCalculator"}}]}}],types:[{name:"FeeCalculator",type:{kind:"struct",fields:[{name:"lamportsPerSignature",type:"u64"}]}}]};class Zn{static system(e){return function(e){return new Rn(qn,Jn,e,new zt(qn))}(e)}}},992:function(e,t,n){"use strict";var i=n(55872).Buffer,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.map=t.array=t.rustEnum=t.str=t.vecU8=t.tagged=t.vec=t.bool=t.option=t.publicKey=t.i128=t.u128=t.i64=t.u64=t.struct=t.f64=t.f32=t.i32=t.u32=t.i16=t.u16=t.i8=t.u8=void 0;const o=n(84104),A=n(97212),s=r(n(39098));var a=n(84104);Object.defineProperty(t,"u8",{enumerable:!0,get:function(){return a.u8}}),Object.defineProperty(t,"i8",{enumerable:!0,get:function(){return a.s8}}),Object.defineProperty(t,"u16",{enumerable:!0,get:function(){return a.u16}}),Object.defineProperty(t,"i16",{enumerable:!0,get:function(){return a.s16}}),Object.defineProperty(t,"u32",{enumerable:!0,get:function(){return a.u32}}),Object.defineProperty(t,"i32",{enumerable:!0,get:function(){return a.s32}}),Object.defineProperty(t,"f32",{enumerable:!0,get:function(){return a.f32}}),Object.defineProperty(t,"f64",{enumerable:!0,get:function(){return a.f64}}),Object.defineProperty(t,"struct",{enumerable:!0,get:function(){return a.struct}});class c extends o.Layout{constructor(e,t,n){super(e,n),this.blob=o.blob(e),this.signed=t}decode(e,t=0){const n=new s.default(this.blob.decode(e,t),10,"le");return this.signed?n.fromTwos(8*this.span).clone():n}encode(e,t,n=0){return this.signed&&(e=e.toTwos(8*this.span)),this.blob.encode(e.toArrayLike(i,"le",this.span),t,n)}}function u(e){return new c(8,!1,e)}t.u64=u,t.i64=function(e){return new c(8,!0,e)},t.u128=function(e){return new c(16,!1,e)},t.i128=function(e){return new c(16,!0,e)};class l extends o.Layout{constructor(e,t,n,i){super(e.span,i),this.layout=e,this.decoder=t,this.encoder=n}decode(e,t){return this.decoder(this.layout.decode(e,t))}encode(e,t,n){return this.layout.encode(this.encoder(e),t,n)}getSpan(e,t){return this.layout.getSpan(e,t)}}t.publicKey=function(e){return new l(o.blob(32),(e=>new A.PublicKey(e)),(e=>e.toBuffer()),e)};class g extends o.Layout{constructor(e,t){super(-1,t),this.layout=e,this.discriminator=o.u8()}encode(e,t,n=0){return null==e?this.discriminator.encode(0,t,n):(this.discriminator.encode(1,t,n),this.layout.encode(e,t,n+1)+1)}decode(e,t=0){const n=this.discriminator.decode(e,t);if(0===n)return null;if(1===n)return this.layout.decode(e,t+1);throw new Error("Invalid option "+this.property)}getSpan(e,t=0){const n=this.discriminator.decode(e,t);if(0===n)return 1;if(1===n)return this.layout.getSpan(e,t+1)+1;throw new Error("Invalid option "+this.property)}}function d(e){if(0===e)return!1;if(1===e)return!0;throw new Error("Invalid bool: "+e)}function h(e){return e?1:0}function p(e){const t=o.u32("length"),n=o.struct([t,o.blob(o.offset(t,-t.span),"data")]);return new l(n,(({data:e})=>e),(e=>({data:e})),e)}t.option=function(e,t){return new g(e,t)},t.bool=function(e){return new l(o.u8(),d,h,e)},t.vec=function(e,t){const n=o.u32("length"),i=o.struct([n,o.seq(e,o.offset(n,-n.span),"values")]);return new l(i,(({values:e})=>e),(e=>({values:e})),t)},t.tagged=function(e,t,n){const i=o.struct([u("tag"),t.replicate("data")]);return new l(i,(function({tag:t,data:n}){if(!t.eq(e))throw new Error("Invalid tag, expected: "+e.toString("hex")+", got: "+t.toString("hex"));return n}),(t=>({tag:e,data:t})),n)},t.vecU8=p,t.str=function(e){return new l(p(),(e=>e.toString("utf-8")),(e=>i.from(e,"utf-8")),e)},t.rustEnum=function(e,t,n){const i=o.union(null!=n?n:o.u8(),t);return e.forEach(((e,t)=>i.addVariant(t,e,e.property))),i},t.array=function(e,t,n){const i=o.struct([o.seq(e,t,"values")]);return new l(i,(({values:e})=>e),(e=>({values:e})),n)};class f extends o.Layout{constructor(e,t,n){super(e.span+t.span,n),this.keyLayout=e,this.valueLayout=t}decode(e,t){return t=t||0,[this.keyLayout.decode(e,t),this.valueLayout.decode(e,t+this.keyLayout.getSpan(e,t))]}encode(e,t,n){n=n||0;const i=this.keyLayout.encode(e[0],t,n);return i+this.valueLayout.encode(e[1],t,n+i)}getSpan(e,t){return this.keyLayout.getSpan(e,t)+this.valueLayout.getSpan(e,t)}}t.map=function(e,t,n){const i=o.u32("length"),r=o.struct([i,o.seq(new f(e,t),o.offset(i,-i.span),"values")]);return new l(r,(({values:e})=>new Map(e)),(e=>({values:Array.from(e.entries())})),n)}},98433:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.parseInstructionErrorResponse=t.KNOWN_PROGRAMS=t.DexError=void 0;const i=n(97212),r=n(99630),o=n(88323);var A;!function(e){e[e.InvalidMarketFlags=0]="InvalidMarketFlags",e[e.InvalidAskFlags=1]="InvalidAskFlags",e[e.InvalidBidFlags=2]="InvalidBidFlags",e[e.InvalidQueueLength=3]="InvalidQueueLength",e[e.OwnerAccountNotProvided=4]="OwnerAccountNotProvided",e[e.ConsumeEventsQueueFailure=5]="ConsumeEventsQueueFailure",e[e.WrongCoinVault=6]="WrongCoinVault",e[e.WrongPcVault=7]="WrongPcVault",e[e.WrongCoinMint=8]="WrongCoinMint",e[e.WrongPcMint=9]="WrongPcMint",e[e.CoinVaultProgramId=10]="CoinVaultProgramId",e[e.PcVaultProgramId=11]="PcVaultProgramId",e[e.CoinMintProgramId=12]="CoinMintProgramId",e[e.PcMintProgramId=13]="PcMintProgramId",e[e.WrongCoinMintSize=14]="WrongCoinMintSize",e[e.WrongPcMintSize=15]="WrongPcMintSize",e[e.WrongCoinVaultSize=16]="WrongCoinVaultSize",e[e.WrongPcVaultSize=17]="WrongPcVaultSize",e[e.UninitializedVault=18]="UninitializedVault",e[e.UninitializedMint=19]="UninitializedMint",e[e.CoinMintUninitialized=20]="CoinMintUninitialized",e[e.PcMintUninitialized=21]="PcMintUninitialized",e[e.WrongMint=22]="WrongMint",e[e.WrongVaultOwner=23]="WrongVaultOwner",e[e.VaultHasDelegate=24]="VaultHasDelegate",e[e.AlreadyInitialized=25]="AlreadyInitialized",e[e.WrongAccountDataAlignment=26]="WrongAccountDataAlignment",e[e.WrongAccountDataPaddingLength=27]="WrongAccountDataPaddingLength",e[e.WrongAccountHeadPadding=28]="WrongAccountHeadPadding",e[e.WrongAccountTailPadding=29]="WrongAccountTailPadding",e[e.RequestQueueEmpty=30]="RequestQueueEmpty",e[e.EventQueueTooSmall=31]="EventQueueTooSmall",e[e.SlabTooSmall=32]="SlabTooSmall",e[e.BadVaultSignerNonce=33]="BadVaultSignerNonce",e[e.InsufficientFunds=34]="InsufficientFunds",e[e.SplAccountProgramId=35]="SplAccountProgramId",e[e.SplAccountLen=36]="SplAccountLen",e[e.WrongFeeDiscountAccountOwner=37]="WrongFeeDiscountAccountOwner",e[e.WrongFeeDiscountMint=38]="WrongFeeDiscountMint",e[e.CoinPayerProgramId=39]="CoinPayerProgramId",e[e.PcPayerProgramId=40]="PcPayerProgramId",e[e.ClientIdNotFound=41]="ClientIdNotFound",e[e.TooManyOpenOrders=42]="TooManyOpenOrders",e[e.FakeErrorSoWeDontChangeNumbers=43]="FakeErrorSoWeDontChangeNumbers",e[e.BorrowError=44]="BorrowError",e[e.WrongOrdersAccount=45]="WrongOrdersAccount",e[e.WrongBidsAccount=46]="WrongBidsAccount",e[e.WrongAsksAccount=47]="WrongAsksAccount",e[e.WrongRequestQueueAccount=48]="WrongRequestQueueAccount",e[e.WrongEventQueueAccount=49]="WrongEventQueueAccount",e[e.RequestQueueFull=50]="RequestQueueFull",e[e.EventQueueFull=51]="EventQueueFull",e[e.MarketIsDisabled=52]="MarketIsDisabled",e[e.WrongSigner=53]="WrongSigner",e[e.TransferFailed=54]="TransferFailed",e[e.ClientOrderIdIsZero=55]="ClientOrderIdIsZero",e[e.WrongRentSysvarAccount=56]="WrongRentSysvarAccount",e[e.RentNotProvided=57]="RentNotProvided",e[e.OrdersNotRentExempt=58]="OrdersNotRentExempt",e[e.OrderNotFound=59]="OrderNotFound",e[e.OrderNotYours=60]="OrderNotYours",e[e.WouldSelfTrade=61]="WouldSelfTrade",e[e.Unknown=1e3]="Unknown"}(A=t.DexError||(t.DexError={})),t.KNOWN_PROGRAMS={[o.TOKEN_PROGRAM_ID.toString()]:"Token program",[i.SystemProgram.programId.toString()]:"System program"},t.parseInstructionErrorResponse=function(e,n){const[i,o]=n,s=e.instructions[i];let a;return a=s.programId.toString()in r.PROGRAM_LAYOUT_VERSIONS?A[o.Custom]:s.programId.toString()in t.KNOWN_PROGRAMS?`${t.KNOWN_PROGRAMS[s.programId.toString()]} error ${o.Custom}`:`Unknown program ${s.programId.toString()} custom error: ${o.Custom}`,{failedInstructionIndex:i,error:a,failedProgram:s.programId.toString()}}},72190:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getFeeTier=t.getFeeRates=t.supportsSrmFeeDiscounts=void 0;const i=n(99630);t.supportsSrmFeeDiscounts=function(e){return i.getLayoutVersion(e)>1},t.getFeeRates=function(e){return 1===e?{taker:.002,maker:-3e-4}:2===e?{taker:.0018,maker:-3e-4}:3===e?{taker:.0016,maker:-3e-4}:4===e?{taker:.0014,maker:-3e-4}:5===e?{taker:.0012,maker:-3e-4}:6===e?{taker:.001,maker:-5e-4}:{taker:.0022,maker:-3e-4}},t.getFeeTier=function(e,t){return e>=1?6:t>=1e6?5:t>=1e5?4:t>=1e4?3:t>=1e3?2:t>=100?1:0}},99174:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return r(t,e),t},A=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.Logger=t.PermissionedCrank=t.ReferralFees=t.OpenOrdersPda=t.MarketProxyBuilder=t.MarketProxy=t.TokenInstructions=t.EVENT_QUEUE_LAYOUT=t.REQUEST_QUEUE_LAYOUT=t.decodeRequestQueue=t.decodeEventQueue=t.getLayoutVersion=t.MARKETS=t.TOKEN_MINTS=t.supportsSrmFeeDiscounts=t.getFeeRates=t.getFeeTier=t.NEW_ORDER_V3_OWNER_INDEX=t.NEW_ORDER_V3_OPEN_ORDERS_INDEX=t.NEW_ORDER_OWNER_INDEX=t.NEW_ORDER_OPEN_ORDERS_INDEX=t.SETTLE_FUNDS_QUOTE_WALLET_INDEX=t.SETTLE_FUNDS_BASE_WALLET_INDEX=t.decodeInstructionV2=t.decodeInstruction=t.DexInstructions=t.MARKET_STATE_LAYOUT_V2=t.MARKET_STATE_LAYOUT_V3=t.OpenOrders=t.Orderbook=t.Market=void 0;var s=n(12106);Object.defineProperty(t,"Market",{enumerable:!0,get:function(){return s.Market}}),Object.defineProperty(t,"Orderbook",{enumerable:!0,get:function(){return s.Orderbook}}),Object.defineProperty(t,"OpenOrders",{enumerable:!0,get:function(){return s.OpenOrders}}),Object.defineProperty(t,"MARKET_STATE_LAYOUT_V3",{enumerable:!0,get:function(){return s.MARKET_STATE_LAYOUT_V3}}),Object.defineProperty(t,"MARKET_STATE_LAYOUT_V2",{enumerable:!0,get:function(){return s.MARKET_STATE_LAYOUT_V2}});var a=n(58500);Object.defineProperty(t,"DexInstructions",{enumerable:!0,get:function(){return a.DexInstructions}}),Object.defineProperty(t,"decodeInstruction",{enumerable:!0,get:function(){return a.decodeInstruction}}),Object.defineProperty(t,"decodeInstructionV2",{enumerable:!0,get:function(){return a.decodeInstructionV2}}),Object.defineProperty(t,"SETTLE_FUNDS_BASE_WALLET_INDEX",{enumerable:!0,get:function(){return a.SETTLE_FUNDS_BASE_WALLET_INDEX}}),Object.defineProperty(t,"SETTLE_FUNDS_QUOTE_WALLET_INDEX",{enumerable:!0,get:function(){return a.SETTLE_FUNDS_QUOTE_WALLET_INDEX}}),Object.defineProperty(t,"NEW_ORDER_OPEN_ORDERS_INDEX",{enumerable:!0,get:function(){return a.NEW_ORDER_OPEN_ORDERS_INDEX}}),Object.defineProperty(t,"NEW_ORDER_OWNER_INDEX",{enumerable:!0,get:function(){return a.NEW_ORDER_OWNER_INDEX}}),Object.defineProperty(t,"NEW_ORDER_V3_OPEN_ORDERS_INDEX",{enumerable:!0,get:function(){return a.NEW_ORDER_V3_OPEN_ORDERS_INDEX}}),Object.defineProperty(t,"NEW_ORDER_V3_OWNER_INDEX",{enumerable:!0,get:function(){return a.NEW_ORDER_V3_OWNER_INDEX}});var c=n(72190);Object.defineProperty(t,"getFeeTier",{enumerable:!0,get:function(){return c.getFeeTier}}),Object.defineProperty(t,"getFeeRates",{enumerable:!0,get:function(){return c.getFeeRates}}),Object.defineProperty(t,"supportsSrmFeeDiscounts",{enumerable:!0,get:function(){return c.supportsSrmFeeDiscounts}});var u=n(99630);Object.defineProperty(t,"TOKEN_MINTS",{enumerable:!0,get:function(){return u.TOKEN_MINTS}}),Object.defineProperty(t,"MARKETS",{enumerable:!0,get:function(){return u.MARKETS}}),Object.defineProperty(t,"getLayoutVersion",{enumerable:!0,get:function(){return u.getLayoutVersion}});var l=n(57403);Object.defineProperty(t,"decodeEventQueue",{enumerable:!0,get:function(){return l.decodeEventQueue}}),Object.defineProperty(t,"decodeRequestQueue",{enumerable:!0,get:function(){return l.decodeRequestQueue}}),Object.defineProperty(t,"REQUEST_QUEUE_LAYOUT",{enumerable:!0,get:function(){return l.REQUEST_QUEUE_LAYOUT}}),Object.defineProperty(t,"EVENT_QUEUE_LAYOUT",{enumerable:!0,get:function(){return l.EVENT_QUEUE_LAYOUT}}),t.TokenInstructions=o(n(88323)),A(n(98433),t);var g=n(44659);Object.defineProperty(t,"MarketProxy",{enumerable:!0,get:function(){return g.MarketProxy}}),Object.defineProperty(t,"MarketProxyBuilder",{enumerable:!0,get:function(){return g.MarketProxyBuilder}});var d=n(20311);Object.defineProperty(t,"OpenOrdersPda",{enumerable:!0,get:function(){return d.OpenOrdersPda}}),Object.defineProperty(t,"ReferralFees",{enumerable:!0,get:function(){return d.ReferralFees}}),Object.defineProperty(t,"PermissionedCrank",{enumerable:!0,get:function(){return d.PermissionedCrank}}),Object.defineProperty(t,"Logger",{enumerable:!0,get:function(){return d.Logger}})},58500:function(e,t,n){"use strict";var i=n(55872).Buffer,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.DexInstructions=t.decodeInstructionV2=t.decodeInstruction=t.encodeInstructionV2=t.encodeInstruction=t.INSTRUCTION_LAYOUT_V2=t.INSTRUCTION_LAYOUT=t.NEW_ORDER_V3_OWNER_INDEX=t.NEW_ORDER_V3_OPEN_ORDERS_INDEX=t.NEW_ORDER_OWNER_INDEX=t.NEW_ORDER_OPEN_ORDERS_INDEX=t.SETTLE_FUNDS_QUOTE_WALLET_INDEX=t.SETTLE_FUNDS_BASE_WALLET_INDEX=void 0;const o=n(84104),A=n(8849),s=n(97212),a=n(88323),c=r(n(39098));t.SETTLE_FUNDS_BASE_WALLET_INDEX=5,t.SETTLE_FUNDS_QUOTE_WALLET_INDEX=6,t.NEW_ORDER_OPEN_ORDERS_INDEX=1,t.NEW_ORDER_OWNER_INDEX=4,t.NEW_ORDER_V3_OPEN_ORDERS_INDEX=1,t.NEW_ORDER_V3_OWNER_INDEX=7,t.INSTRUCTION_LAYOUT=new A.VersionedLayout(0,o.union(o.u32("instruction"))),t.INSTRUCTION_LAYOUT.inner.addVariant(0,o.struct([A.u64("baseLotSize"),A.u64("quoteLotSize"),o.u16("feeRateBps"),A.u64("vaultSignerNonce"),A.u64("quoteDustThreshold")]),"initializeMarket"),t.INSTRUCTION_LAYOUT.inner.addVariant(1,o.struct([A.sideLayout("side"),A.u64("limitPrice"),A.u64("maxQuantity"),A.orderTypeLayout("orderType"),A.u64("clientId")]),"newOrder"),t.INSTRUCTION_LAYOUT.inner.addVariant(2,o.struct([o.u16("limit")]),"matchOrders"),t.INSTRUCTION_LAYOUT.inner.addVariant(3,o.struct([o.u16("limit")]),"consumeEvents"),t.INSTRUCTION_LAYOUT.inner.addVariant(4,o.struct([A.sideLayout("side"),A.u128("orderId"),A.publicKeyLayout("openOrders"),o.u8("openOrdersSlot")]),"cancelOrder"),t.INSTRUCTION_LAYOUT.inner.addVariant(5,o.struct([]),"settleFunds"),t.INSTRUCTION_LAYOUT.inner.addVariant(6,o.struct([A.u64("clientId")]),"cancelOrderByClientId"),t.INSTRUCTION_LAYOUT.inner.addVariant(10,o.struct([A.sideLayout("side"),A.u64("limitPrice"),A.u64("maxBaseQuantity"),A.u64("maxQuoteQuantity"),A.selfTradeBehaviorLayout("selfTradeBehavior"),A.orderTypeLayout("orderType"),A.u64("clientId"),o.u16("limit")]),"newOrderV3"),t.INSTRUCTION_LAYOUT.inner.addVariant(11,o.struct([A.sideLayout("side"),A.u128("orderId")]),"cancelOrderV2"),t.INSTRUCTION_LAYOUT.inner.addVariant(12,o.struct([A.u64("clientId")]),"cancelOrderByClientIdV2"),t.INSTRUCTION_LAYOUT.inner.addVariant(14,o.struct([]),"closeOpenOrders"),t.INSTRUCTION_LAYOUT.inner.addVariant(15,o.struct([]),"initOpenOrders"),t.INSTRUCTION_LAYOUT.inner.addVariant(16,o.struct([o.u16("limit")]),"prune"),t.INSTRUCTION_LAYOUT.inner.addVariant(17,o.struct([o.u16("limit")]),"consumeEventsPermissioned"),t.INSTRUCTION_LAYOUT.inner.addVariant(18,o.struct([o.seq(A.u64(),8,"clientIds")]),"cancelOrdersByClientIds");const u=()=>o.struct([A.sideLayout("side"),A.u64("limitPrice"),A.u64("maxBaseQuantity"),A.u64("maxQuoteQuantity"),A.selfTradeBehaviorLayout("selfTradeBehavior"),A.orderTypeLayout("orderType"),A.u64("clientId"),o.u16("limit"),A.i64("maxTs")]);function l(e,n=100){const r=i.alloc(n);return r.slice(0,t.INSTRUCTION_LAYOUT.encode(e,r))}function g(e){const n=i.alloc(100);return n.slice(0,t.INSTRUCTION_LAYOUT_V2.encode(e,n))}t.INSTRUCTION_LAYOUT.inner.addVariant(19,u(),"replaceOrderByClientId"),t.INSTRUCTION_LAYOUT.inner.addVariant(20,o.struct([A.u64("orderAmount"),o.seq(u(),8,"orders")]),"replaceOrdersByClientIds"),t.INSTRUCTION_LAYOUT_V2=new A.VersionedLayout(0,o.union(o.u32("instruction"))),t.INSTRUCTION_LAYOUT_V2.inner.addVariant(10,u(),"newOrderV3"),t.encodeInstruction=l,t.encodeInstructionV2=g,t.decodeInstruction=function(e){return t.INSTRUCTION_LAYOUT.decode(e)},t.decodeInstructionV2=function(e){return t.INSTRUCTION_LAYOUT_V2.decode(e)},t.DexInstructions=class{static initializeMarket({market:e,requestQueue:t,eventQueue:n,bids:i,asks:r,baseVault:o,quoteVault:A,baseMint:a,quoteMint:c,baseLotSize:u,quoteLotSize:g,feeRateBps:d,vaultSignerNonce:h,quoteDustThreshold:p,programId:f,authority:m,pruneAuthority:I,crankAuthority:y}){return new s.PublicKey("SysvarRent111111111111111111111111111111111"),new s.TransactionInstruction({keys:[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:A,isSigner:!1,isWritable:!0},{pubkey:a,isSigner:!1,isWritable:!1},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:m?c:s.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}].concat(m?{pubkey:m,isSigner:!1,isWritable:!1}:[]).concat(m&&I?{pubkey:I,isSigner:!1,isWritable:!1}:[]).concat(m&&I&&y?{pubkey:y,isSigner:!1,isWritable:!1}:[]),programId:f,data:l({initializeMarket:{baseLotSize:u,quoteLotSize:g,feeRateBps:d,vaultSignerNonce:h,quoteDustThreshold:p}})})}static newOrder({market:e,openOrders:t,payer:n,owner:i,requestQueue:r,baseVault:o,quoteVault:A,side:c,limitPrice:u,maxQuantity:g,orderType:d,clientId:h,programId:p,feeDiscountPubkey:f=null}){const m=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:A,isSigner:!1,isWritable:!0},{pubkey:a.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:s.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}];return f&&m.push({pubkey:f,isSigner:!1,isWritable:!1}),new s.TransactionInstruction({keys:m,programId:p,data:l({newOrder:h?{side:c,limitPrice:u,maxQuantity:g,orderType:d,clientId:h}:{side:c,limitPrice:u,maxQuantity:g,orderType:d}})})}static newOrderV3({market:e,openOrders:t,payer:n,owner:i,requestQueue:r,eventQueue:o,bids:A,asks:u,baseVault:d,quoteVault:h,side:p,limitPrice:f,maxBaseQuantity:m,maxQuoteQuantity:I,orderType:y,clientId:B,programId:C,selfTradeBehavior:w,feeDiscountPubkey:E=null,maxTs:Q=null,replaceIfExists:b=!1}){const k=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:A,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:h,isSigner:!1,isWritable:!0},{pubkey:a.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:s.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}];let v,S;return E&&k.push({pubkey:E,isSigner:!1,isWritable:!1}),b?(v="replaceOrderByClientId",S=l):(v="newOrderV3",S=Q?g:l),new s.TransactionInstruction({keys:k,programId:C,data:S({[v]:{side:p,limitPrice:f,maxBaseQuantity:m,maxQuoteQuantity:I,selfTradeBehavior:w,orderType:y,clientId:B,limit:65535,maxTs:new c.default(null!=Q?Q:"9223372036854775807")}})})}static replaceOrdersByClientIds({market:e,openOrders:t,payer:n,owner:i,requestQueue:r,eventQueue:o,bids:A,asks:u,baseVault:g,quoteVault:d,feeDiscountPubkey:h=null,programId:p,orders:f}){const m=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:A,isSigner:!1,isWritable:!0},{pubkey:u,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1},{pubkey:g,isSigner:!1,isWritable:!0},{pubkey:d,isSigner:!1,isWritable:!0},{pubkey:a.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1},{pubkey:s.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}];return h&&m.push({pubkey:h,isSigner:!1,isWritable:!1}),new s.TransactionInstruction({keys:m,programId:p,data:l({replaceOrdersByClientIds:{orderAmount:new c.default(f.length),orders:f.map((e=>{var t;return{...e,maxTs:new c.default(null!==(t=e.maxTs)&&void 0!==t?t:"9223372036854775807"),limit:65535}}))}},15+60*f.length).slice(0,13+54*f.length)})}static matchOrders({market:e,requestQueue:t,eventQueue:n,bids:i,asks:r,baseVault:o,quoteVault:A,limit:a,programId:c}){return new s.TransactionInstruction({keys:[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:A,isSigner:!1,isWritable:!0}],programId:c,data:l({matchOrders:{limit:a}})})}static consumeEvents({market:e,eventQueue:t,coinFee:n,pcFee:i,openOrdersAccounts:r,limit:o,programId:A}){return new s.TransactionInstruction({keys:[...r.map((e=>({pubkey:e,isSigner:!1,isWritable:!0}))),{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWriteable:!0},{pubkey:i,isSigner:!1,isWritable:!0}],programId:A,data:l({consumeEvents:{limit:o}})})}static consumeEventsPermissioned({market:e,eventQueue:t,crankAuthority:n,openOrdersAccounts:i,limit:r,programId:o}){return new s.TransactionInstruction({keys:[...i.map((e=>({pubkey:e,isSigner:!1,isWritable:!0}))),{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}],programId:o,data:l({consumeEventsPermissioned:{limit:r}})})}static cancelOrder({market:e,openOrders:t,owner:n,requestQueue:i,side:r,orderId:o,openOrdersSlot:A,programId:a}){return new s.TransactionInstruction({keys:[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}],programId:a,data:l({cancelOrder:{side:r,orderId:o,openOrders:t,openOrdersSlot:A}})})}static cancelOrderV2(e){const{market:t,bids:n,asks:i,eventQueue:r,openOrders:o,owner:A,side:a,orderId:c,programId:u}=e;return new s.TransactionInstruction({keys:[{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:A,isSigner:!0,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0}],programId:u,data:l({cancelOrderV2:{side:a,orderId:c}})})}static cancelOrderByClientId({market:e,openOrders:t,owner:n,requestQueue:i,clientId:r,programId:o}){return new s.TransactionInstruction({keys:[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}],programId:o,data:l({cancelOrderByClientId:{clientId:r}})})}static cancelOrderByClientIdV2({market:e,openOrders:t,owner:n,bids:i,asks:r,eventQueue:o,clientId:A,programId:a}){return new s.TransactionInstruction({keys:[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0}],programId:a,data:l({cancelOrderByClientIdV2:{clientId:A}})})}static cancelOrdersByClientIds({market:e,openOrders:t,owner:n,bids:i,asks:r,eventQueue:o,clientIds:A,programId:a}){if(A.length>8)throw new Error("Number of client ids cannot exceed 8!");for(;A.length<8;)A.push(new c.default(0));return new s.TransactionInstruction({keys:[{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0}],programId:a,data:l({cancelOrdersByClientIds:{clientIds:A}})})}static settleFunds({market:e,openOrders:t,owner:n,baseVault:i,quoteVault:r,baseWallet:o,quoteWallet:A,vaultSigner:c,programId:u,referrerQuoteWallet:g=null}){const d=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:A,isSigner:!1,isWritable:!0},{pubkey:c,isSigner:!1,isWritable:!1},{pubkey:a.TOKEN_PROGRAM_ID,isSigner:!1,isWritable:!1}];return g&&d.push({pubkey:g,isSigner:!1,isWritable:!0}),new s.TransactionInstruction({keys:d,programId:u,data:l({settleFunds:{}})})}static closeOpenOrders({market:e,openOrders:t,owner:n,solWallet:i,programId:r}){const o=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:e,isSigner:!1,isWritable:!1}];return new s.TransactionInstruction({keys:o,programId:r,data:l({closeOpenOrders:{}})})}static initOpenOrders({market:e,openOrders:t,owner:n,programId:i,marketAuthority:r}){const o=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:e,isSigner:!1,isWritable:!1},{pubkey:s.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}].concat(r?{pubkey:r,isSigner:!1,isWritable:!1}:[]);return new s.TransactionInstruction({keys:o,programId:i,data:l({initOpenOrders:{}})})}static prune({market:e,bids:t,asks:n,eventQueue:i,pruneAuthority:r,openOrders:o,openOrdersOwner:A,programId:a,limit:c}){const u=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o,isSigner:!1,isWritable:!0},{pubkey:A,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0}];return new s.TransactionInstruction({keys:u,programId:a,data:l({prune:{limit:c}})})}}},8849:function(e,t,n){"use strict";var i=n(55872).Buffer,r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.setLayoutEncoder=t.setLayoutDecoder=t.accountFlagsLayout=t.selfTradeBehaviorLayout=t.orderTypeLayout=t.sideLayout=t.VersionedLayout=t.WideBits=t.u128=t.i64=t.u64=t.publicKeyLayout=t.zeros=void 0;const o=n(84104),A=n(97212),s=r(n(39098));class a extends o.Blob{decode(e,t){const n=super.decode(e,t);if(!n.every((e=>0===e)))throw new Error("nonzero padding bytes");return n}}t.zeros=function(e){return new a(e)};class c extends o.Blob{constructor(e){super(32,e)}decode(e,t){return new A.PublicKey(super.decode(e,t))}encode(e,t,n){return super.encode(e.toBuffer(),t,n)}}t.publicKeyLayout=function(e){return new c(e)};class u extends o.Blob{decode(e,t){return new s.default(super.decode(e,t),10,"le")}encode(e,t,n){return super.encode(e.toArrayLike(i,"le",this.span),t,n)}}t.u64=function(e){return new u(8,e)},t.i64=function(e){return new u(8,e)},t.u128=function(e){return new u(16,e)};class l extends o.Layout{constructor(e){super(8,e),this._lower=o.bits(o.u32(),!1),this._upper=o.bits(o.u32(),!1)}addBoolean(e){this._lower.fields.length<32?this._lower.addBoolean(e):this._upper.addBoolean(e)}decode(e,t=0){return{...this._lower.decode(e,t),...this._upper.decode(e,t+this._lower.span)}}encode(e,t,n=0){return this._lower.encode(e,t,n)+this._upper.encode(e,t,n+this._lower.span)}}t.WideBits=l;class g extends o.Layout{constructor(e,t,n){super(t.span>0?t.span+1:t.span,n),this.version=e,this.inner=t}decode(e,t=0){return this.inner.decode(e,t+1)}encode(e,t,n=0){return t.writeUInt8(this.version,n),1+this.inner.encode(e,t,n+1)}getSpan(e,t=0){return 1+this.inner.getSpan(e,t+1)}}t.VersionedLayout=g;class d extends o.UInt{constructor(e,t,n){super(t,n),this.values=e}encode(e,t,n){if(void 0!==this.values[e])return super.encode(this.values[e],t,n);throw new Error("Invalid "+this.property)}decode(e,t){const n=super.decode(e,t),i=Object.entries(this.values).find((([,e])=>e===n));if(i)return i[0];throw new Error("Invalid "+this.property)}}t.sideLayout=function(e){return new d({buy:0,sell:1},4,e)},t.orderTypeLayout=function(e){return new d({limit:0,ioc:1,postOnly:2},4,e)},t.selfTradeBehaviorLayout=function(e){return new d({decrementTake:0,cancelProvide:1,abortTransaction:2},4,e)};const h=new l;h.addBoolean("initialized"),h.addBoolean("market"),h.addBoolean("openOrders"),h.addBoolean("requestQueue"),h.addBoolean("eventQueue"),h.addBoolean("bids"),h.addBoolean("asks"),t.accountFlagsLayout=function(e="accountFlags"){return h.replicate(e)},t.setLayoutDecoder=function(e,t){const n=e.decode;e.decode=function(e,i=0){return t(n.call(this,e,i))}},t.setLayoutEncoder=function(e,t){const n=e.encode;return e.encode=function(e,i,r){return n.call(this,t(e),i,r)},e}},44659:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.MarketProxyBuilder=t.MarketProxyInstruction=t.MarketProxy=void 0;const r=n(12573),o=n(12106),A=n(58500);class s{constructor(e,t){this._market=e,this._instruction=t}get market(){return this._market}get instruction(){return this._instruction}get dexProgramId(){return this._market.programId}get proxyProgramId(){return this._instruction.proxyProgramId}}t.MarketProxy=s;class a{constructor(e,t,n,i){this._proxyProgramId=e,this._dexProgramId=t,this._market=n,this._middlewares=i}get proxyProgramId(){return this._proxyProgramId}newOrderV3(e){const t=this._market.makeNewOrderV3Instruction({...e,programId:this._proxyProgramId});return this._middlewares.forEach((e=>e.newOrderV3(t))),this.proxy(t)}initOpenOrders(e,t,n,i){const r=A.DexInstructions.initOpenOrders({market:t,openOrders:n,owner:e,programId:this._proxyProgramId,marketAuthority:i});return this._middlewares.forEach((e=>e.initOpenOrders(r))),this.proxy(r)}cancelOrder(e,t){const n=A.DexInstructions.cancelOrderV2({market:this._market.address,owner:e,openOrders:t.openOrdersAddress,bids:this._market.decoded.bids,asks:this._market.decoded.asks,eventQueue:this._market.decoded.eventQueue,side:t.side,orderId:t.orderId,openOrdersSlot:t.openOrdersSlot,programId:this._proxyProgramId});return this._middlewares.forEach((e=>e.cancelOrderV2(n))),this.proxy(n)}cancelOrderByClientId(e,t,n){const i=A.DexInstructions.cancelOrderByClientIdV2({market:this._market.address,openOrders:t,owner:e,bids:this._market.decoded.bids,asks:this._market.decoded.asks,eventQueue:this._market.decoded.eventQueue,clientId:n,programId:this._proxyProgramId});return this._middlewares.forEach((e=>e.cancelOrderByClientIdV2(i))),this.proxy(i)}settleFunds(e,t,n,o,s){const a=A.DexInstructions.settleFunds({market:this._market.address,openOrders:e,owner:t,baseVault:this._market.decoded.baseVault,quoteVault:this._market.decoded.quoteVault,baseWallet:n,quoteWallet:o,vaultSigner:r.utils.publicKey.createProgramAddressSync([this._market.address.toBuffer(),this._market.decoded.vaultSignerNonce.toArrayLike(i,"le",8)],this._dexProgramId),programId:this._proxyProgramId,referrerQuoteWallet:s});return this._middlewares.forEach((e=>e.settleFunds(a))),this.proxy(a)}closeOpenOrders(e,t,n){const i=A.DexInstructions.closeOpenOrders({market:this._market.address,openOrders:e,owner:t,solWallet:n,programId:this._proxyProgramId});return this._middlewares.forEach((e=>e.closeOpenOrders(i))),this.proxy(i)}prune(e,t,n){n||(n=65535);const i=A.DexInstructions.prune({market:this._market.address,bids:this._market.decoded.bids,asks:this._market.decoded.asks,eventQueue:this._market.decoded.eventQueue,pruneAuthority:this._market.decoded.pruneAuthority,openOrders:e,openOrdersOwner:t,programId:this._proxyProgramId,limit:n});return this._middlewares.forEach((e=>e.prune(i))),this.proxy(i)}consumeEvents(e,t){const n=A.DexInstructions.consumeEvents({market:this._market.address,eventQueue:this._market.decoded.eventQueue,coinFee:this._market.decoded.eventQueue,pcFee:this._market.decoded.eventQueue,openOrdersAccounts:e,limit:t,programId:this._proxyProgramId});return this._middlewares.forEach((e=>e.consumeEvents(n))),this.proxy(n)}consumeEventsPermissioned(e,t){const n=A.DexInstructions.consumeEventsPermissioned({market:this._market.address,eventQueue:this._market.decoded.eventQueue,crankAuthority:this._market.decoded.consumeEventsAuthority,openOrdersAccounts:e,limit:t,programId:this._proxyProgramId});return this._middlewares.forEach((e=>e.consumeEventsPermissioned(n))),this.proxy(n)}proxy(e){return e.keys=[{pubkey:this._dexProgramId,isWritable:!1,isSigner:!1},...e.keys],e}}t.MarketProxyInstruction=a,t.MarketProxyBuilder=class{constructor(){this._middlewares=[]}middleware(e){return this._middlewares.push(e),this}async load({connection:e,market:t,options:n={},dexProgramId:i,proxyProgramId:r}){const A=await o.Market.load(e,t,n,i,o.MARKET_STATE_LAYOUT_V3),c=new a(r,i,A,this._middlewares);return new s(A,c)}}},20311:(e,t,n)=>{"use strict";var i=n(55872).Buffer,r=n(49500);Object.defineProperty(t,"__esModule",{value:!0}),t.Logger=t.PermissionedCrank=t.ReferralFees=t.OpenOrdersPda=void 0;const o=n(12573),A=n(97212);t.OpenOrdersPda=class{constructor({proxyProgramId:e,dexProgramId:t}){this._proxyProgramId=e,this._dexProgramId=t}static async marketAuthority(e,t,n){const r=i.from([111,112,101,110,45,111,114,100,101,114,115,45,105,110,105,116]),[o]=await A.PublicKey.findProgramAddress([r,t.toBuffer(),e.toBuffer()],n);return o}static async openOrdersAddress(e,t,n,r){const o=i.from([111,112,101,110,45,111,114,100,101,114,115]),[s]=await A.PublicKey.findProgramAddress([o,n.toBuffer(),e.toBuffer(),t.toBuffer()],r);return s}initOpenOrders(e){const t=e.keys[2].pubkey,n=e.keys[1].pubkey,r=i.from([111,112,101,110,45,111,114,100,101,114,115]),s=i.from([111,112,101,110,45,111,114,100,101,114,115,45,105,110,105,116]),[a,c]=o.utils.publicKey.findProgramAddressSync([r,this._dexProgramId.toBuffer(),t.toBuffer(),n.toBuffer()],this._proxyProgramId),[u,l]=o.utils.publicKey.findProgramAddressSync([s,this._dexProgramId.toBuffer(),t.toBuffer()],this._proxyProgramId);e.keys[0].pubkey=a,e.keys[4].pubkey=u,e.keys[1].isWritable=!0,e.keys=[{pubkey:this._dexProgramId,isSigner:!1,isWritable:!1},{pubkey:A.SystemProgram.programId,isSigner:!1,isWritable:!1},...e.keys],e.data=i.concat([i.from([0,c,l]),e.data])}newOrderV3(e){e.data=i.concat([i.from([1]),e.data])}cancelOrderV2(e){e.data=i.concat([i.from([2]),e.data])}cancelOrderByClientIdV2(e){e.data=i.concat([i.from([3]),e.data])}settleFunds(e){e.data=i.concat([i.from([4]),e.data])}closeOpenOrders(e){e.data=i.concat([i.from([5]),e.data])}prune(e){e.data=i.concat([i.from([6]),e.data])}consumeEvents(e){e.data=i.concat([i.from([7]),e.data])}consumeEventsPermissioned(e){e.data=i.concat([i.from([8]),e.data])}},t.ReferralFees=class{initOpenOrders(e){}newOrderV3(e){}cancelOrderV2(e){}cancelOrderByClientIdV2(e){}settleFunds(e){}closeOpenOrders(e){}prune(e){}consumeEvents(e){}consumeEventsPermissioned(e){}},t.PermissionedCrank=class{initOpenOrders(e){}newOrderV3(e){}cancelOrderV2(e){}cancelOrderByClientIdV2(e){}settleFunds(e){}closeOpenOrders(e){}prune(e){}consumeEvents(e){}consumeEventsPermissioned(e){e.keys[e.keys.length-1].isSigner=!1}},t.Logger=class{initOpenOrders(e){r.log("Proxying initOpenOrders",this.ixToDisplay(e))}newOrderV3(e){r.log("Proxying newOrderV3",this.ixToDisplay(e))}cancelOrderV2(e){r.log("Proxying cancelOrderV2",this.ixToDisplay(e))}cancelOrderByClientIdV2(e){r.log("Proxying cancelOrderByClientIdV2",this.ixToDisplay(e))}settleFunds(e){r.log("Proxying settleFunds",this.ixToDisplay(e))}closeOpenOrders(e){r.log("Proxying closeOpenOrders",this.ixToDisplay(e))}prune(e){r.log("Proxying prune",this.ixToDisplay(e))}consumeEvents(e){r.log("Proxying consumeEvents",this.ixToDisplay(e))}consumeEventsPermissioned(e){r.log("Proxying consumeEventsPermissioned",this.ixToDisplay(e))}ixToDisplay(e){return{keys:e.keys.map((e=>({...e,pubkey:e.pubkey.toString()}))),programId:e.programId.toString(),data:new Uint8Array(e.data)}}}},12106:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.getMintDecimals=t.Orderbook=t.ORDERBOOK_LAYOUT=t.OpenOrders=t._OPEN_ORDERS_LAYOUT_V2=t._OPEN_ORDERS_LAYOUT_V1=t.Market=t.MARKET_STATE_LAYOUT_V3=t.MARKET_STATE_LAYOUT_V2=t._MARKET_STAT_LAYOUT_V1=void 0;const r=n(84104),o=n(8849),A=n(85605),s=n(58500),a=i(n(39098)),c=n(97212),u=n(57403),l=n(55872),g=n(72190),d=n(88323),h=n(99630);t._MARKET_STAT_LAYOUT_V1=r.struct([r.blob(5),o.accountFlagsLayout("accountFlags"),o.publicKeyLayout("ownAddress"),o.u64("vaultSignerNonce"),o.publicKeyLayout("baseMint"),o.publicKeyLayout("quoteMint"),o.publicKeyLayout("baseVault"),o.u64("baseDepositsTotal"),o.u64("baseFeesAccrued"),o.publicKeyLayout("quoteVault"),o.u64("quoteDepositsTotal"),o.u64("quoteFeesAccrued"),o.u64("quoteDustThreshold"),o.publicKeyLayout("requestQueue"),o.publicKeyLayout("eventQueue"),o.publicKeyLayout("bids"),o.publicKeyLayout("asks"),o.u64("baseLotSize"),o.u64("quoteLotSize"),o.u64("feeRateBps"),r.blob(7)]),t.MARKET_STATE_LAYOUT_V2=r.struct([r.blob(5),o.accountFlagsLayout("accountFlags"),o.publicKeyLayout("ownAddress"),o.u64("vaultSignerNonce"),o.publicKeyLayout("baseMint"),o.publicKeyLayout("quoteMint"),o.publicKeyLayout("baseVault"),o.u64("baseDepositsTotal"),o.u64("baseFeesAccrued"),o.publicKeyLayout("quoteVault"),o.u64("quoteDepositsTotal"),o.u64("quoteFeesAccrued"),o.u64("quoteDustThreshold"),o.publicKeyLayout("requestQueue"),o.publicKeyLayout("eventQueue"),o.publicKeyLayout("bids"),o.publicKeyLayout("asks"),o.u64("baseLotSize"),o.u64("quoteLotSize"),o.u64("feeRateBps"),o.u64("referrerRebatesAccrued"),r.blob(7)]),t.MARKET_STATE_LAYOUT_V3=r.struct([r.blob(5),o.accountFlagsLayout("accountFlags"),o.publicKeyLayout("ownAddress"),o.u64("vaultSignerNonce"),o.publicKeyLayout("baseMint"),o.publicKeyLayout("quoteMint"),o.publicKeyLayout("baseVault"),o.u64("baseDepositsTotal"),o.u64("baseFeesAccrued"),o.publicKeyLayout("quoteVault"),o.u64("quoteDepositsTotal"),o.u64("quoteFeesAccrued"),o.u64("quoteDustThreshold"),o.publicKeyLayout("requestQueue"),o.publicKeyLayout("eventQueue"),o.publicKeyLayout("bids"),o.publicKeyLayout("asks"),o.u64("baseLotSize"),o.u64("quoteLotSize"),o.u64("feeRateBps"),o.u64("referrerRebatesAccrued"),o.publicKeyLayout("authority"),o.publicKeyLayout("pruneAuthority"),o.publicKeyLayout("consumeEventsAuthority"),r.blob(992),r.blob(7)]);class p{constructor(e,t,n,i={},r,o){const{skipPreflight:A=!1,commitment:s="recent"}=i;if(!e.accountFlags.initialized||!e.accountFlags.market)throw new Error("Invalid market state");this._decoded=e,this._baseSplTokenDecimals=t,this._quoteSplTokenDecimals=n,this._skipPreflight=A,this._commitment=s,this._programId=r,this._openOrdersAccountsCache={},this._feeDiscountKeysCache={},this._layoutOverride=o}static getLayout(e){return 1===h.getLayoutVersion(e)?t._MARKET_STAT_LAYOUT_V1:t.MARKET_STATE_LAYOUT_V2}static async findAccountsByMints(e,t,n,i){return w(e,i,[{memcmp:{offset:this.getLayout(i).offsetOf("baseMint"),bytes:t.toBase58()}},{memcmp:{offset:p.getLayout(i).offsetOf("quoteMint"),bytes:n.toBase58()}}])}static async load(e,t,n={},i,r){const{owner:o,data:A}=E(await e.getAccountInfo(t),"Market not found");if(!o.equals(i))throw new Error("Address not owned by program: "+o.toBase58());const s=(null!=r?r:this.getLayout(i)).decode(A);if(!s.accountFlags.initialized||!s.accountFlags.market||!s.ownAddress.equals(t))throw new Error("Invalid market");const[a,c]=await Promise.all([C(e,s.baseMint),C(e,s.quoteMint)]);return new p(s,a,c,n,i,r)}get programId(){return this._programId}get address(){return this._decoded.ownAddress}get publicKey(){return this.address}get baseMintAddress(){return this._decoded.baseMint}get quoteMintAddress(){return this._decoded.quoteMint}get bidsAddress(){return this._decoded.bids}get asksAddress(){return this._decoded.asks}get decoded(){return this._decoded}async loadBids(e){const{data:t}=E(await e.getAccountInfo(this._decoded.bids));return m.decode(this,t)}async loadAsks(e){const{data:t}=E(await e.getAccountInfo(this._decoded.asks));return m.decode(this,t)}async loadOrdersForOwner(e,t,n=0){const[i,r,o]=await Promise.all([this.loadBids(e),this.loadAsks(e),this.findOpenOrdersAccountsForOwner(e,t,n)]);return this.filterForOpenOrders(i,r,o)}filterForOpenOrders(e,t,n){return[...e,...t].filter((e=>n.some((t=>e.openOrdersAddress.equals(t.address)))))}async findBaseTokenAccountsForOwner(e,t,n=!1){if(this.baseMintAddress.equals(d.WRAPPED_SOL_MINT)&&n){const[n,i]=await Promise.all([this.findBaseTokenAccountsForOwner(e,t,!1),e.getAccountInfo(t)]);return null!==i?[{pubkey:t,account:i},...n]:n}return await this.getTokenAccountsByOwnerForMint(e,t,this.baseMintAddress)}async getTokenAccountsByOwnerForMint(e,t,n){return(await e.getTokenAccountsByOwner(t,{mint:n})).value}async findQuoteTokenAccountsForOwner(e,t,n=!1){if(this.quoteMintAddress.equals(d.WRAPPED_SOL_MINT)&&n){const[n,i]=await Promise.all([this.findQuoteTokenAccountsForOwner(e,t,!1),e.getAccountInfo(t)]);return null!==i?[{pubkey:t,account:i},...n]:n}return await this.getTokenAccountsByOwnerForMint(e,t,this.quoteMintAddress)}async findOpenOrdersAccountsForOwner(e,t,n=0){const i=t.toBase58(),r=(new Date).getTime();if(i in this._openOrdersAccountsCache&&r-this._openOrdersAccountsCache[i].ts1}get usesRequestQueue(){return h.getLayoutVersion(this._programId)<=2}async findFeeDiscountKeys(e,t,n=0){let i=[];const r=(new Date).getTime(),o=t.toBase58();if(o in this._feeDiscountKeysCache&&r-this._feeDiscountKeysCache[o].ts{const n=this.getSplTokenBalanceFromAccountInfo(t,d.MSRM_DECIMALS);return{pubkey:e,mint:d.MSRM_MINT,balance:n,feeTier:g.getFeeTier(n,0)}})),r=(await this.getTokenAccountsByOwnerForMint(e,t,d.SRM_MINT)).map((({pubkey:e,account:t})=>{const n=this.getSplTokenBalanceFromAccountInfo(t,d.SRM_DECIMALS);return{pubkey:e,mint:d.SRM_MINT,balance:n,feeTier:g.getFeeTier(0,n)}}));i=n.concat(r).sort(((e,t)=>e.feeTier>t.feeTier?-1:e.feeTiert.balance?-1:e.balance0?{pubkey:i[0].pubkey,feeTier:i[0].feeTier}:{pubkey:null,feeTier:0}}async makePlaceOrderTransaction(e,{owner:t,payer:n,side:i,price:r,size:o,orderType:A="limit",clientId:s,openOrdersAddressKey:a,openOrdersAccount:u,feeDiscountPubkey:l,selfTradeBehavior:g="decrementTake",maxTs:h,replaceIfExists:p=!1},m=0,I=0){var y,B;const C=null!==(y=t.publicKey)&&void 0!==y?y:t,w=await this.findOpenOrdersAccountsForOwner(e,C,m),E=new c.Transaction,Q=[];let b,k;if(b=l||(void 0===l&&this.supportsSrmFeeDiscounts?(await this.findBestFeeDiscountKey(e,C,I)).pubkey:null),0===w.length){let t;t=u||new c.Account,E.add(await f.makeCreateAccountTransaction(e,this.address,C,t.publicKey,this._programId)),k=t.publicKey,Q.push(t),this._openOrdersAccountsCache[C.toBase58()].ts=0}else k=u?u.publicKey:a||w[0].address;let v=null;if(n.equals(C)){if(!("buy"===i&&this.quoteMintAddress.equals(d.WRAPPED_SOL_MINT)||"sell"===i&&this.baseMintAddress.equals(d.WRAPPED_SOL_MINT)))throw new Error("Invalid payer account");{let e;v=new c.Account,"buy"===i?(e=Math.round(r*o*1.01*c.LAMPORTS_PER_SOL),w.length>0&&(e-=w[0].quoteTokenFree.toNumber())):(e=Math.round(o*c.LAMPORTS_PER_SOL),w.length>0&&(e-=w[0].baseTokenFree.toNumber())),e=Math.max(e,0)+1e7,E.add(c.SystemProgram.createAccount({fromPubkey:C,newAccountPubkey:v.publicKey,lamports:e,space:165,programId:d.TOKEN_PROGRAM_ID})),E.add(d.initializeAccount({account:v.publicKey,mint:d.WRAPPED_SOL_MINT,owner:C})),Q.push(v)}}const S=this.makePlaceOrderInstruction(e,{owner:t,payer:null!==(B=null==v?void 0:v.publicKey)&&void 0!==B?B:n,side:i,price:r,size:o,orderType:A,clientId:s,openOrdersAddressKey:k,feeDiscountPubkey:b,selfTradeBehavior:g,maxTs:h,replaceIfExists:p});return E.add(S),v&&E.add(d.closeAccount({source:v.publicKey,destination:C,owner:C})),{transaction:E,signers:Q,payer:t}}makePlaceOrderInstruction(e,t){var n;const{owner:i,payer:r,side:o,price:A,size:c,orderType:u="limit",clientId:l,openOrdersAddressKey:g,openOrdersAccount:d,feeDiscountPubkey:h=null}=t,p=null!==(n=i.publicKey)&&void 0!==n?n:i;if(this.baseSizeNumberToLots(c).lte(new a.default(0)))throw new Error("size too small");if(this.priceNumberToLots(A).lte(new a.default(0)))throw new Error("invalid price");return this.usesRequestQueue?s.DexInstructions.newOrder({market:this.address,requestQueue:this._decoded.requestQueue,baseVault:this._decoded.baseVault,quoteVault:this._decoded.quoteVault,openOrders:d?d.publicKey:g,owner:p,payer:r,side:o,limitPrice:this.priceNumberToLots(A),maxQuantity:this.baseSizeNumberToLots(c),orderType:u,clientId:l,programId:this._programId,feeDiscountPubkey:this.supportsSrmFeeDiscounts?h:null}):this.makeNewOrderV3Instruction(t)}makeNewOrderV3Instruction(e){var t;const{owner:n,payer:i,side:r,price:o,size:A,orderType:c="limit",clientId:u,openOrdersAddressKey:l,openOrdersAccount:g,feeDiscountPubkey:d=null,selfTradeBehavior:h="decrementTake",programId:p,maxTs:f,replaceIfExists:m}=e,I=null!==(t=n.publicKey)&&void 0!==t?t:n;return s.DexInstructions.newOrderV3({market:this.address,bids:this._decoded.bids,asks:this._decoded.asks,requestQueue:this._decoded.requestQueue,eventQueue:this._decoded.eventQueue,baseVault:this._decoded.baseVault,quoteVault:this._decoded.quoteVault,openOrders:g?g.publicKey:l,owner:I,payer:i,side:r,limitPrice:this.priceNumberToLots(o),maxBaseQuantity:this.baseSizeNumberToLots(A),maxQuoteQuantity:new a.default(this._decoded.quoteLotSize.toNumber()).mul(this.baseSizeNumberToLots(A).mul(this.priceNumberToLots(o))),orderType:c,clientId:u,programId:null!=p?p:this._programId,selfTradeBehavior:h,feeDiscountPubkey:this.supportsSrmFeeDiscounts?d:null,maxTs:f,replaceIfExists:m})}makeReplaceOrdersByClientIdsInstruction(e,t){var n,i;const r=null!==(n=e.owner.publicKey)&&void 0!==n?n:e.owner;return s.DexInstructions.replaceOrdersByClientIds({market:this.address,bids:this._decoded.bids,asks:this._decoded.asks,requestQueue:this._decoded.requestQueue,eventQueue:this._decoded.eventQueue,baseVault:this._decoded.baseVault,quoteVault:this._decoded.quoteVault,openOrders:e.openOrdersAccount?e.openOrdersAccount.publicKey:e.openOrdersAddressKey,owner:r,payer:e.payer,programId:null!==(i=e.programId)&&void 0!==i?i:this._programId,feeDiscountPubkey:this.supportsSrmFeeDiscounts?e.feeDiscountPubkey:null,orders:t.map((t=>{var n;return{side:t.side,limitPrice:this.priceNumberToLots(t.price),maxBaseQuantity:this.baseSizeNumberToLots(t.size),maxQuoteQuantity:new a.default(this._decoded.quoteLotSize.toNumber()).mul(this.baseSizeNumberToLots(t.size).mul(this.priceNumberToLots(t.price))),orderType:t.orderType,clientId:t.clientId,programId:null!==(n=e.programId)&&void 0!==n?n:this._programId,selfTradeBehavior:t.selfTradeBehavior,maxTs:t.maxTs}}))})}async _sendTransaction(e,t,n){const i=await e.sendTransaction(t,n,{skipPreflight:this._skipPreflight}),{value:r}=await e.confirmTransaction(i,this._commitment);if(null==r?void 0:r.err)throw new Error(JSON.stringify(r.err));return i}async cancelOrderByClientId(e,t,n,i){const r=await this.makeCancelOrderByClientIdTransaction(e,t.publicKey,n,i);return await this._sendTransaction(e,r,[t])}async cancelOrdersByClientIds(e,t,n,i){const r=await this.makeCancelOrdersByClientIdsTransaction(e,t.publicKey,n,i);return await this._sendTransaction(e,r,[t])}async makeCancelOrderByClientIdTransaction(e,t,n,i){const r=new c.Transaction;return this.usesRequestQueue?r.add(s.DexInstructions.cancelOrderByClientId({market:this.address,owner:t,openOrders:n,requestQueue:this._decoded.requestQueue,clientId:i,programId:this._programId})):r.add(s.DexInstructions.cancelOrderByClientIdV2({market:this.address,openOrders:n,owner:t,bids:this._decoded.bids,asks:this._decoded.asks,eventQueue:this._decoded.eventQueue,clientId:i,programId:this._programId})),r}async makeCancelOrdersByClientIdsTransaction(e,t,n,i){const r=new c.Transaction;return r.add(s.DexInstructions.cancelOrdersByClientIds({market:this.address,openOrders:n,owner:t,bids:this._decoded.bids,asks:this._decoded.asks,eventQueue:this._decoded.eventQueue,clientIds:i,programId:this._programId})),r}async cancelOrder(e,t,n){const i=await this.makeCancelOrderTransaction(e,t.publicKey,n);return await this._sendTransaction(e,i,[t])}async makeCancelOrderTransaction(e,t,n){const i=new c.Transaction;return i.add(this.makeCancelOrderInstruction(e,t,n)),i}makeCancelOrderInstruction(e,t,n){return this.usesRequestQueue?s.DexInstructions.cancelOrder({market:this.address,owner:t,openOrders:n.openOrdersAddress,requestQueue:this._decoded.requestQueue,side:n.side,orderId:n.orderId,openOrdersSlot:n.openOrdersSlot,programId:this._programId}):s.DexInstructions.cancelOrderV2({market:this.address,owner:t,openOrders:n.openOrdersAddress,bids:this._decoded.bids,asks:this._decoded.asks,eventQueue:this._decoded.eventQueue,side:n.side,orderId:n.orderId,openOrdersSlot:n.openOrdersSlot,programId:this._programId})}makeConsumeEventsInstruction(e,t){return s.DexInstructions.consumeEvents({market:this.address,eventQueue:this._decoded.eventQueue,coinFee:this._decoded.eventQueue,pcFee:this._decoded.eventQueue,openOrdersAccounts:e,limit:t,programId:this._programId})}makeConsumeEventsPermissionedInstruction(e,t){return s.DexInstructions.consumeEventsPermissioned({market:this.address,eventQueue:this._decoded.eventQueue,crankAuthority:this._decoded.consumeEventsAuthority,openOrdersAccounts:e,limit:t,programId:this._programId})}async settleFunds(e,t,n,i,r,o=null){if(!n.owner.equals(t.publicKey))throw new Error("Invalid open orders account");if(o&&!this.supportsReferralFees)throw new Error("This program ID does not support referrerQuoteWallet");const{transaction:A,signers:s}=await this.makeSettleFundsTransaction(e,n,i,r,o);return await this._sendTransaction(e,A,[t,...s])}async makeSettleFundsTransaction(e,t,n,i,r=null){const o=await c.PublicKey.createProgramAddress([this.address.toBuffer(),this._decoded.vaultSignerNonce.toArrayLike(l.Buffer,"le",8)],this._programId),A=new c.Transaction,a=[];let u=null;return(this.baseMintAddress.equals(d.WRAPPED_SOL_MINT)&&n.equals(t.owner)||this.quoteMintAddress.equals(d.WRAPPED_SOL_MINT)&&i.equals(t.owner))&&(u=new c.Account,A.add(c.SystemProgram.createAccount({fromPubkey:t.owner,newAccountPubkey:u.publicKey,lamports:await e.getMinimumBalanceForRentExemption(165),space:165,programId:d.TOKEN_PROGRAM_ID})),A.add(d.initializeAccount({account:u.publicKey,mint:d.WRAPPED_SOL_MINT,owner:t.owner})),a.push(u)),A.add(s.DexInstructions.settleFunds({market:this.address,openOrders:t.address,owner:t.owner,baseVault:this._decoded.baseVault,quoteVault:this._decoded.quoteVault,baseWallet:n.equals(t.owner)&&u?u.publicKey:n,quoteWallet:i.equals(t.owner)&&u?u.publicKey:i,vaultSigner:o,programId:this._programId,referrerQuoteWallet:r})),u&&A.add(d.closeAccount({source:u.publicKey,destination:t.owner,owner:t.owner})),{transaction:A,signers:a,payer:t.owner}}async matchOrders(e,t,n){const i=this.makeMatchOrdersTransaction(n);return await this._sendTransaction(e,i,[t])}makeMatchOrdersTransaction(e){const t=new c.Transaction;return t.add(s.DexInstructions.matchOrders({market:this.address,requestQueue:this._decoded.requestQueue,eventQueue:this._decoded.eventQueue,bids:this._decoded.bids,asks:this._decoded.asks,baseVault:this._decoded.baseVault,quoteVault:this._decoded.quoteVault,limit:e,programId:this._programId})),t}async loadRequestQueue(e){const{data:t}=E(await e.getAccountInfo(this._decoded.requestQueue));return u.decodeRequestQueue(t)}async loadEventQueue(e){const{data:t}=E(await e.getAccountInfo(this._decoded.eventQueue));return u.decodeEventQueue(t)}async loadFills(e,t=100){const{data:n}=E(await e.getAccountInfo(this._decoded.eventQueue));return u.decodeEventQueue(n,t).filter((e=>e.eventFlags.fill&&e.nativeQuantityPaid.gtn(0))).map(this.parseFillEvent.bind(this))}parseFillEvent(e){let t,n,i,r;return e.eventFlags.bid?(i="buy",r=e.eventFlags.maker?e.nativeQuantityPaid.add(e.nativeFeeOrRebate):e.nativeQuantityPaid.sub(e.nativeFeeOrRebate),n=y(r.mul(this._baseSplTokenMultiplier),this._quoteSplTokenMultiplier.mul(e.nativeQuantityReleased)),t=y(e.nativeQuantityReleased,this._baseSplTokenMultiplier)):(i="sell",r=e.eventFlags.maker?e.nativeQuantityReleased.sub(e.nativeFeeOrRebate):e.nativeQuantityReleased.add(e.nativeFeeOrRebate),n=y(r.mul(this._baseSplTokenMultiplier),this._quoteSplTokenMultiplier.mul(e.nativeQuantityPaid)),t=y(e.nativeQuantityPaid,this._baseSplTokenMultiplier)),{...e,side:i,price:n,feeCost:this.quoteSplSizeToNumber(e.nativeFeeOrRebate)*(e.eventFlags.maker?-1:1),size:t}}get _baseSplTokenMultiplier(){return new a.default(10).pow(new a.default(this._baseSplTokenDecimals))}get _quoteSplTokenMultiplier(){return new a.default(10).pow(new a.default(this._quoteSplTokenDecimals))}priceLotsToNumber(e){return y(e.mul(this._decoded.quoteLotSize).mul(this._baseSplTokenMultiplier),this._decoded.baseLotSize.mul(this._quoteSplTokenMultiplier))}priceNumberToLots(e){return new a.default(Math.round(e*Math.pow(10,this._quoteSplTokenDecimals)*this._decoded.baseLotSize.toNumber()/(Math.pow(10,this._baseSplTokenDecimals)*this._decoded.quoteLotSize.toNumber())))}baseSplSizeToNumber(e){return y(e,this._baseSplTokenMultiplier)}quoteSplSizeToNumber(e){return y(e,this._quoteSplTokenMultiplier)}baseSizeLotsToNumber(e){return y(e.mul(this._decoded.baseLotSize),this._baseSplTokenMultiplier)}baseSizeNumberToLots(e){return new a.default(Math.round(e*Math.pow(10,this._baseSplTokenDecimals))).div(this._decoded.baseLotSize)}quoteSizeLotsToNumber(e){return y(e.mul(this._decoded.quoteLotSize),this._quoteSplTokenMultiplier)}quoteSizeNumberToLots(e){return new a.default(Math.round(e*Math.pow(10,this._quoteSplTokenDecimals))).div(this._decoded.quoteLotSize)}get minOrderSize(){return this.baseSizeLotsToNumber(new a.default(1))}get tickSize(){return this.priceLotsToNumber(new a.default(1))}}t.Market=p,t._OPEN_ORDERS_LAYOUT_V1=r.struct([r.blob(5),o.accountFlagsLayout("accountFlags"),o.publicKeyLayout("market"),o.publicKeyLayout("owner"),o.u64("baseTokenFree"),o.u64("baseTokenTotal"),o.u64("quoteTokenFree"),o.u64("quoteTokenTotal"),o.u128("freeSlotBits"),o.u128("isBidBits"),r.seq(o.u128(),128,"orders"),r.seq(o.u64(),128,"clientIds"),r.blob(7)]),t._OPEN_ORDERS_LAYOUT_V2=r.struct([r.blob(5),o.accountFlagsLayout("accountFlags"),o.publicKeyLayout("market"),o.publicKeyLayout("owner"),o.u64("baseTokenFree"),o.u64("baseTokenTotal"),o.u64("quoteTokenFree"),o.u64("quoteTokenTotal"),o.u128("freeSlotBits"),o.u128("isBidBits"),r.seq(o.u128(),128,"orders"),r.seq(o.u64(),128,"clientIds"),o.u64("referrerRebatesAccrued"),r.blob(7)]);class f{constructor(e,t,n){this.address=e,this._programId=n,Object.assign(this,t)}static getLayout(e){return 1===h.getLayoutVersion(e)?t._OPEN_ORDERS_LAYOUT_V1:t._OPEN_ORDERS_LAYOUT_V2}static async findForOwner(e,t,n){const i=[{memcmp:{offset:this.getLayout(n).offsetOf("owner"),bytes:t.toBase58()}},{dataSize:this.getLayout(n).span}];return(await w(e,n,i)).map((({publicKey:e,accountInfo:t})=>f.fromAccountInfo(e,t,n)))}static async findForMarketAndOwner(e,t,n,i){const r=[{memcmp:{offset:this.getLayout(i).offsetOf("market"),bytes:t.toBase58()}},{memcmp:{offset:this.getLayout(i).offsetOf("owner"),bytes:n.toBase58()}},{dataSize:this.getLayout(i).span}];return(await w(e,i,r)).map((({publicKey:e,accountInfo:t})=>f.fromAccountInfo(e,t,i)))}static async load(e,t,n){const i=await e.getAccountInfo(t);if(null===i)throw new Error("Open orders account not found");return f.fromAccountInfo(t,i,n)}static fromAccountInfo(e,t,n){const{owner:i,data:r}=t;if(!i.equals(n))throw new Error("Address not owned by program");const o=this.getLayout(n).decode(r);if(!o.accountFlags.initialized||!o.accountFlags.openOrders)throw new Error("Invalid open orders account");return new f(e,o,n)}static async makeCreateAccountTransaction(e,t,n,i,r){return c.SystemProgram.createAccount({fromPubkey:n,newAccountPubkey:i,lamports:await e.getMinimumBalanceForRentExemption(this.getLayout(r).span),space:this.getLayout(r).span,programId:r})}get publicKey(){return this.address}}t.OpenOrders=f,t.ORDERBOOK_LAYOUT=r.struct([r.blob(5),o.accountFlagsLayout("accountFlags"),A.SLAB_LAYOUT.replicate("slab"),r.blob(7)]);class m{constructor(e,t,n){if(!(t.initialized&&t.bids^t.asks))throw new Error("Invalid orderbook");this.market=e,this.isBids=t.bids,this.slab=n}static get LAYOUT(){return t.ORDERBOOK_LAYOUT}static decode(e,n){const{accountFlags:i,slab:r}=t.ORDERBOOK_LAYOUT.decode(n);return new m(e,i,r)}getL2(e){const t=this.isBids,n=[];for(const{key:i,quantity:r}of this.slab.items(t)){const t=I(i);if(n.length>0&&n[n.length-1][0].eq(t))n[n.length-1][1]=n[n.length-1][1].add(r);else{if(n.length===e)break;n.push([t,r])}}return n.map((([e,t])=>[this.market.priceLotsToNumber(e),this.market.baseSizeLotsToNumber(t),e,t]))}[Symbol.iterator](){return this.items(!1)}*items(e=!1){for(const{key:t,ownerSlot:n,owner:i,quantity:r,feeTier:o,clientOrderId:A}of this.slab.items(e)){const e=I(t);yield{orderId:t,clientId:A,openOrdersAddress:i,openOrdersSlot:n,feeTier:o,price:this.market.priceLotsToNumber(e),priceLots:e,size:this.market.baseSizeLotsToNumber(r),sizeLots:r,side:this.isBids?"buy":"sell"}}}}function I(e){return e.ushrn(64)}function y(e,t){const n=e.div(t).toNumber(),i=e.umod(t),r=i.gcd(t);return n+i.div(r).toNumber()/t.div(r).toNumber()}t.Orderbook=m;const B=r.struct([r.blob(44),r.u8("decimals"),r.blob(37)]);async function C(e,t){if(t.equals(d.WRAPPED_SOL_MINT))return 9;const{data:n}=E(await e.getAccountInfo(t),"mint not found"),{decimals:i}=B.decode(n);return i}async function w(e,t,n){const i=await e._rpcRequest("getProgramAccounts",[t.toBase58(),{commitment:e.commitment,filters:n,encoding:"base64"}]);if(i.error)throw new Error(i.error.message);return i.result.map((({pubkey:e,account:{data:t,executable:n,owner:i,lamports:r}})=>({publicKey:new c.PublicKey(e),accountInfo:{data:l.Buffer.from(t[0],"base64"),executable:n,owner:new c.PublicKey(i),lamports:r}})))}function E(e,t="account not found"){if(null===e)throw new Error(t);return e}t.getMintDecimals=C},57403:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EVENT_QUEUE_LAYOUT=t.REQUEST_QUEUE_LAYOUT=t.decodeEventQueue=t.decodeRequestQueue=t.decodeEventsSince=void 0;const i=n(84104),r=n(8849),o=i.struct([i.blob(5),r.accountFlagsLayout("accountFlags"),i.u32("head"),r.zeros(4),i.u32("count"),r.zeros(4),i.u32("nextSeqNum"),r.zeros(4)]),A=i.bits(i.u8(),!1,"requestFlags");A.addBoolean("newOrder"),A.addBoolean("cancelOrder"),A.addBoolean("bid"),A.addBoolean("postOnly"),A.addBoolean("ioc");const s=i.struct([A,i.u8("openOrdersSlot"),i.u8("feeTier"),i.blob(5),r.u64("maxBaseSizeOrCancelId"),r.u64("nativeQuoteQuantityLocked"),r.u128("orderId"),r.publicKeyLayout("openOrders"),r.u64("clientOrderId")]),a=i.struct([i.blob(5),r.accountFlagsLayout("accountFlags"),i.u32("head"),r.zeros(4),i.u32("count"),r.zeros(4),i.u32("seqNum"),r.zeros(4)]),c=i.bits(i.u8(),!1,"eventFlags");c.addBoolean("fill"),c.addBoolean("out"),c.addBoolean("bid"),c.addBoolean("maker");const u=i.struct([c,i.u8("openOrdersSlot"),i.u8("feeTier"),i.blob(5),r.u64("nativeQuantityReleased"),r.u64("nativeQuantityPaid"),r.u64("nativeFeeOrRebate"),r.u128("orderId"),r.publicKeyLayout("openOrders"),r.u64("clientOrderId")]);function l(e,t,n,i){return t.decode(n,e.span+i*t.span)}function g(e,t,n,i){const r=e.decode(n),o=Math.floor((n.length-e.span)/t.span),A=[];if(i)for(let s=0;si&&(o=i-1);const A=(n.seqNum-o+r)%r,s=((n.head+n.count)%i-o+i)%i,c=[];for(let t=0;t0;){const n=t.pop(),{leafNode:i,innerNode:r}=this.nodes[n];i?yield i:r&&(e?t.push(r.children[0],r.children[1]):t.push(r.children[1],r.children[0]))}}}t.Slab=c,A.setLayoutDecoder(t.SLAB_LAYOUT,(({header:e,nodes:t})=>new c(e,t)))},88323:function(e,t,n){"use strict";var i=n(55872).Buffer,r=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),A=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.closeAccount=t.mintTo=t.setAuthority=t.revoke=t.approve=t.transfer=t.initializeAccount=t.initializeMint=t.decodeTokenInstructionData=t.SRM_DECIMALS=t.SRM_MINT=t.MSRM_DECIMALS=t.MSRM_MINT=t.WRAPPED_SOL_MINT=t.TOKEN_PROGRAM_ID=t.CLOSE_ACCOUNT_OWNER_INDEX=t.CLOSE_ACCOUNT_DESTINATION_INDEX=t.CLOSE_ACCOUNT_SOURCE_INDEX=t.TRANSFER_OWNER_INDEX=t.TRANSFER_DESTINATION_INDEX=t.TRANSFER_SOURCE_INDEX=t.INITIALIZE_ACCOUNT_OWNER_INDEX=t.INITIALIZE_ACCOUNT_MINT_INDEX=t.INITIALIZE_ACCOUNT_ACCOUNT_INDEX=void 0;const s=A(n(84104)),a=n(97212),c=n(8849);t.INITIALIZE_ACCOUNT_ACCOUNT_INDEX=0,t.INITIALIZE_ACCOUNT_MINT_INDEX=1,t.INITIALIZE_ACCOUNT_OWNER_INDEX=2,t.TRANSFER_SOURCE_INDEX=0,t.TRANSFER_DESTINATION_INDEX=1,t.TRANSFER_OWNER_INDEX=2,t.CLOSE_ACCOUNT_SOURCE_INDEX=0,t.CLOSE_ACCOUNT_DESTINATION_INDEX=1,t.CLOSE_ACCOUNT_OWNER_INDEX=2,t.TOKEN_PROGRAM_ID=new a.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),t.WRAPPED_SOL_MINT=new a.PublicKey("So11111111111111111111111111111111111111112"),t.MSRM_MINT=new a.PublicKey("MSRMcoVyrFxnSgo5uXwone5SKcGhT1KEJMFEkMEWf9L"),t.MSRM_DECIMALS=0,t.SRM_MINT=new a.PublicKey("SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt"),t.SRM_DECIMALS=6;const u=s.union(s.u8("instruction"));u.addVariant(0,s.struct([s.u8("decimals"),c.publicKeyLayout("mintAuthority"),s.u8("freezeAuthorityOption"),c.publicKeyLayout("freezeAuthority")]),"initializeMint"),u.addVariant(1,s.struct([]),"initializeAccount"),u.addVariant(3,s.struct([s.nu64("amount")]),"transfer"),u.addVariant(4,s.struct([s.nu64("amount")]),"approve"),u.addVariant(5,s.struct([]),"revoke"),u.addVariant(6,s.struct([s.u8("authorityType"),s.u8("newAuthorityOption"),c.publicKeyLayout("newAuthority")]),"setAuthority"),u.addVariant(7,s.struct([s.nu64("amount")]),"mintTo"),u.addVariant(8,s.struct([s.nu64("amount")]),"burn"),u.addVariant(9,s.struct([]),"closeAccount");const l=Math.max(...Object.values(u.registry).map((e=>e.span)));function g(e){const t=i.alloc(l),n=u.encode(e,t);return t.slice(0,n)}t.decodeTokenInstructionData=function(e){return u.decode(e)},t.initializeMint=function({mint:e,decimals:n,mintAuthority:i,freezeAuthority:r=null}){const o=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:a.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}];return new a.TransactionInstruction({keys:o,data:g({initializeMint:{decimals:n,mintAuthority:i,freezeAuthorityOption:!!r,freezeAuthority:r||new a.PublicKey(0)}}),programId:t.TOKEN_PROGRAM_ID})},t.initializeAccount=function({account:e,mint:n,owner:i}){const r=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:a.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}];return new a.TransactionInstruction({keys:r,data:g({initializeAccount:{}}),programId:t.TOKEN_PROGRAM_ID})},t.transfer=function({source:e,destination:n,amount:i,owner:r}){const o=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!0,isWritable:!1}];return new a.TransactionInstruction({keys:o,data:g({transfer:{amount:i}}),programId:t.TOKEN_PROGRAM_ID})},t.approve=function({source:e,delegate:n,amount:i,owner:r}){const o=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!0,isWritable:!1}];return new a.TransactionInstruction({keys:o,data:g({approve:{amount:i}}),programId:t.TOKEN_PROGRAM_ID})},t.revoke=function({source:e,owner:n}){const i=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return new a.TransactionInstruction({keys:i,data:g({revoke:{}}),programId:t.TOKEN_PROGRAM_ID})},t.setAuthority=function({target:e,currentAuthority:n,newAuthority:i,authorityType:r}){const o=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return new a.TransactionInstruction({keys:o,data:g({setAuthority:{authorityType:r,newAuthorityOption:!!i,newAuthority:i}}),programId:t.TOKEN_PROGRAM_ID})},t.mintTo=function({mint:e,destination:n,amount:i,mintAuthority:r}){const o=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!0,isWritable:!1}];return new a.TransactionInstruction({keys:o,data:g({mintTo:{amount:i}}),programId:t.TOKEN_PROGRAM_ID})},t.closeAccount=function({source:e,destination:n,owner:i}){const r=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!0,isWritable:!1}];return new a.TransactionInstruction({keys:r,data:g({closeAccount:{}}),programId:t.TOKEN_PROGRAM_ID})}},99630:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.MARKETS=t.TOKEN_MINTS=t.getLayoutVersion=t.PROGRAM_LAYOUT_VERSIONS=void 0;const r=n(97212),o=i(n(15525)),A=i(n(49777));t.PROGRAM_LAYOUT_VERSIONS={"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn":1,BJ3jrUzddfuSrZHXSCxMUUQsjKEyLmuuyZebkcaFp2fg:1,EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o:2,"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin":3},t.getLayoutVersion=function(e){return t.PROGRAM_LAYOUT_VERSIONS[e.toString()]||3},t.TOKEN_MINTS=A.default.map((e=>({address:new r.PublicKey(e.address),name:e.name}))),t.MARKETS=o.default.map((e=>({address:new r.PublicKey(e.address),name:e.name,programId:new r.PublicKey(e.programId),deprecated:e.deprecated})))},97865:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},r=this&&this.__generator||function(e,t){var n,i,r,o,A={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;A;)try{if(n=1,i&&(r=2&o[0]?i.return:o[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,o[1])).done)return r;switch(i=0,r&&(o=[2&o[0],r.value]),o[0]){case 0:case 1:r=o;break;case 4:return A.label++,{value:o[1],done:!1};case 5:A.label++,i=o[1],o=[0];continue;case 7:o=A.ops.pop(),A.trys.pop();continue;default:if(!((r=(r=A.trys).length>0&&r[r.length-1])||6!==o[0]&&2!==o[0])){A=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]0&&r[r.length-1])||6!==o[0]&&2!==o[0])){A=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getPythProgramKeyForCluster=void 0;var i=n(97212),r={"mainnet-beta":"FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH",devnet:"gSbePebfvPy7tRqimPoVecS2UsBvYv46ynrzWocc92s",testnet:"8tfDNiaEyrV6Q1U4DEXrEigs9DoDtkugzFbybENEbCDz"};t.getPythProgramKeyForCluster=function(e){if(void 0!==r[e])return new i.PublicKey(r[e]);throw new Error("Invalid Solana cluster name: "+e+". Valid options are: "+JSON.stringify(Object.keys(r)))}},28145:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getPythProgramKeyForCluster=t.PythHttpClient=t.PythConnection=t.parsePriceData=t.parseProductData=t.parseMappingData=t.parseBaseData=t.MAX_SLOT_DIFFERENCE=t.AccountType=t.DeriveType=t.PriceType=t.CorpAction=t.PriceStatus=t.Version=t.Version2=t.Magic=void 0;var i=n(97212),r=n(55872),o=n(77976);t.Magic=2712847316,t.Version2=2,t.Version=t.Version2,t.PriceStatus=["Unknown","Trading","Halted","Auction"],t.CorpAction=["NoCorpAct"],t.PriceType=["Unknown","Price"],t.DeriveType=["Unknown","TWAP","Volatility"],t.AccountType=["Unknown","Mapping","Product","Price","Test"],t.MAX_SLOT_DIFFERENCE=25;var A=r.Buffer.alloc(32),s=function(e){return e.equals(A)?null:new i.PublicKey(e)};t.parseBaseData=function(e){if(!(e.byteLength<4)){var n=e.readUInt32LE(0);return n===t.Magic?{magic:n,version:e.readUInt32LE(4),type:e.readUInt32LE(8),size:e.readUInt32LE(12)}:void 0}},t.parseMappingData=function(e){for(var t=e.readUInt32LE(0),n=e.readUInt32LE(4),r=e.readUInt32LE(8),o=e.readUInt32LE(12),A=e.readUInt32LE(16),a=s(e.slice(24,56)),c=56,u=[],l=0;l{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.readBigUInt64LE=t.readBigInt64LE=void 0;var n=function(e,t,n){return new Error('The value of "'+e+" is out of range. It must be "+t+". Received "+n)};function i(e,t){if("number"!=typeof e)throw function(e,t,n){return new Error('The "'+e+'" argument must be of type number. Received '+n)}(t,0,e)}function r(e,t){if(Math.floor(e)!==e)throw i(e,"offset"),n("offset","an integer",e);if(t<0)throw new Error("Attempt to access memory outside buffer bounds");throw n("offset",">= 0 and <= "+t,e)}t.readBigInt64LE=function(e,t){void 0===t&&(t=0),i(t,"offset");var n=e[t],o=e[t+7];void 0!==n&&void 0!==o||r(t,e.length-8);var A=e[t+4]+e[t+5]*Math.pow(2,8)+e[t+6]*Math.pow(2,16)+(o<<24);return(BigInt(A)<0&&r[r.length-1])||6!==o[0]&&2!==o[0])){A=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]0&&r[r.length-1])||6!==o[0]&&2!==o[0])){A=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getPythClusterApiUrl=t.getPythProgramKeyForCluster=void 0;var i=n(97212),r={"mainnet-beta":"FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH",devnet:"gSbePebfvPy7tRqimPoVecS2UsBvYv46ynrzWocc92s",testnet:"8tfDNiaEyrV6Q1U4DEXrEigs9DoDtkugzFbybENEbCDz",pythtest:"8tfDNiaEyrV6Q1U4DEXrEigs9DoDtkugzFbybENEbCDz",pythnet:"FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH"};t.getPythProgramKeyForCluster=function(e){if(void 0!==r[e])return new i.PublicKey(r[e]);throw new Error("Invalid Solana cluster name: "+e+". Valid options are: "+JSON.stringify(Object.keys(r)))},t.getPythClusterApiUrl=function(e){return"pythtest"===e?"https://api.pythtest.pyth.network":"pythnet"===e?"https://pythnet.rpcpool.com":i.clusterApiUrl(e)}},62692:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getPythProgramKeyForCluster=t.PythHttpClient=t.PythConnection=t.parsePriceData=t.parseProductData=t.parseMappingData=t.parseBaseData=t.AccountType=t.DeriveType=t.PriceType=t.CorpAction=t.PriceStatus=t.MAX_SLOT_DIFFERENCE=t.Version=t.Version2=t.Magic=void 0;var i,r,o,A,s,a=n(97212),c=n(55872),u=n(58553);t.Magic=2712847316,t.Version2=2,t.Version=t.Version2,t.MAX_SLOT_DIFFERENCE=25,function(e){e[e.Unknown=0]="Unknown",e[e.Trading=1]="Trading",e[e.Halted=2]="Halted",e[e.Auction=3]="Auction"}(i=t.PriceStatus||(t.PriceStatus={})),(s=t.CorpAction||(t.CorpAction={}))[s.NoCorpAct=0]="NoCorpAct",(A=t.PriceType||(t.PriceType={}))[A.Unknown=0]="Unknown",A[A.Price=1]="Price",(o=t.DeriveType||(t.DeriveType={}))[o.Unknown=0]="Unknown",o[o.Volatility=1]="Volatility",(r=t.AccountType||(t.AccountType={}))[r.Unknown=0]="Unknown",r[r.Mapping=1]="Mapping",r[r.Product=2]="Product",r[r.Price=3]="Price",r[r.Test=4]="Test";var l=c.Buffer.alloc(32),g=function(e){return e.equals(l)?null:new a.PublicKey(e)};t.parseBaseData=function(e){if(!(e.byteLength<4)){var n=e.readUInt32LE(0);return n===t.Magic?{magic:n,version:e.readUInt32LE(4),type:e.readUInt32LE(8),size:e.readUInt32LE(12)}:void 0}},t.parseMappingData=function(e){for(var t=e.readUInt32LE(0),n=e.readUInt32LE(4),i=e.readUInt32LE(8),r=e.readUInt32LE(12),o=e.readUInt32LE(16),A=g(e.slice(24,56)),s=56,c=[],u=0;ut.MAX_SLOT_DIFFERENCE&&(G=i.Unknown),G===i.Trading&&(r=R.price,o=R.confidence);for(var x=[],U=240,_=!0;U{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.readBigUInt64LE=t.readBigInt64LE=void 0;var n=function(e,t,n){return new Error('The value of "'+e+" is out of range. It must be "+t+". Received "+n)};function i(e,t){if("number"!=typeof e)throw function(e,t,n){return new Error('The "'+e+'" argument must be of type number. Received '+n)}(t,0,e)}function r(e,t){if(Math.floor(e)!==e)throw i(e,"offset"),n("offset","an integer",e);if(t<0)throw new Error("Attempt to access memory outside buffer bounds");throw n("offset",">= 0 and <= "+t,e)}t.readBigInt64LE=function(e,t){void 0===t&&(t=0),i(t,"offset");var n=e[t],o=e[t+7];void 0!==n&&void 0!==o||r(t,e.length-8);var A=e[t+4]+e[t+5]*Math.pow(2,8)+e[t+6]*Math.pow(2,16)+(o<<24);return(BigInt(A)<0&&r[r.length-1])||6!==o[0]&&2!==o[0])){A=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]0&&r[r.length-1])||6!==o[0]&&2!==o[0])){A=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getPythClusterApiUrl=t.getPythProgramKeyForCluster=void 0;var i=n(97212),r={"mainnet-beta":"FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH",devnet:"gSbePebfvPy7tRqimPoVecS2UsBvYv46ynrzWocc92s",testnet:"8tfDNiaEyrV6Q1U4DEXrEigs9DoDtkugzFbybENEbCDz",pythtest:"8tfDNiaEyrV6Q1U4DEXrEigs9DoDtkugzFbybENEbCDz",pythnet:"FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH"};t.getPythProgramKeyForCluster=function(e){if(void 0!==r[e])return new i.PublicKey(r[e]);throw new Error("Invalid Solana cluster name: "+e+". Valid options are: "+JSON.stringify(Object.keys(r)))},t.getPythClusterApiUrl=function(e){return"pythtest"===e?"https://api.pythtest.pyth.network":"pythnet"===e?"https://pythnet.rpcpool.com":i.clusterApiUrl(e)}},43955:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getPythProgramKeyForCluster=t.PythHttpClient=t.PythConnection=t.parsePriceData=t.parseProductData=t.parseMappingData=t.parseBaseData=t.AccountType=t.DeriveType=t.PriceType=t.CorpAction=t.PriceStatus=t.MAX_SLOT_DIFFERENCE=t.Version=t.Version2=t.Magic=void 0;var i,r,o,A,s,a=n(97212),c=n(55872),u=n(40799);t.Magic=2712847316,t.Version2=2,t.Version=t.Version2,t.MAX_SLOT_DIFFERENCE=25,function(e){e[e.Unknown=0]="Unknown",e[e.Trading=1]="Trading",e[e.Halted=2]="Halted",e[e.Auction=3]="Auction"}(i=t.PriceStatus||(t.PriceStatus={})),(s=t.CorpAction||(t.CorpAction={}))[s.NoCorpAct=0]="NoCorpAct",(A=t.PriceType||(t.PriceType={}))[A.Unknown=0]="Unknown",A[A.Price=1]="Price",(o=t.DeriveType||(t.DeriveType={}))[o.Unknown=0]="Unknown",o[o.Volatility=1]="Volatility",(r=t.AccountType||(t.AccountType={}))[r.Unknown=0]="Unknown",r[r.Mapping=1]="Mapping",r[r.Product=2]="Product",r[r.Price=3]="Price",r[r.Test=4]="Test";var l=c.Buffer.alloc(32),g=function(e){return e.equals(l)?null:new a.PublicKey(e)};t.parseBaseData=function(e){if(!(e.byteLength<4)){var n=e.readUInt32LE(0);return n===t.Magic?{magic:n,version:e.readUInt32LE(4),type:e.readUInt32LE(8),size:e.readUInt32LE(12)}:void 0}},t.parseMappingData=function(e){for(var t=e.readUInt32LE(0),n=e.readUInt32LE(4),i=e.readUInt32LE(8),r=e.readUInt32LE(12),o=e.readUInt32LE(16),A=g(e.slice(24,56)),s=56,c=[],u=0;ut.MAX_SLOT_DIFFERENCE&&(G=i.Unknown),G===i.Trading&&(r=R.price,o=R.confidence);for(var x=[],U=240,_=!0;U{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.readBigUInt64LE=t.readBigInt64LE=void 0;var n=function(e,t,n){return new Error('The value of "'+e+" is out of range. It must be "+t+". Received "+n)};function i(e,t){if("number"!=typeof e)throw function(e,t,n){return new Error('The "'+e+'" argument must be of type number. Received '+n)}(t,0,e)}function r(e,t){if(Math.floor(e)!==e)throw i(e,"offset"),n("offset","an integer",e);if(t<0)throw new Error("Attempt to access memory outside buffer bounds");throw n("offset",">= 0 and <= "+t,e)}t.readBigInt64LE=function(e,t){void 0===t&&(t=0),i(t,"offset");var n=e[t],o=e[t+7];void 0!==n&&void 0!==o||r(t,e.length-8);var A=e[t+4]+e[t+5]*Math.pow(2,8)+e[t+6]*Math.pow(2,16)+(o<<24);return(BigInt(A)<{"use strict";var e=[,(e,t,n)=>{n.r(t),n.d(t,{default:()=>A});var i,o=(i="undefined"!=typeof document&&document.currentScript?document.currentScript.src:void 0,function(e){var t,n,o;function A(){function e(e){const A=i;n=t=0,i=new Map,A.forEach((t=>{try{t(e)}catch(e){r.error(e)}})),this.La(),o&&o.fb()}let t=0,n=0,i=new Map,o=null,A=null;this.requestAnimationFrame=function(r){t||(t=requestAnimationFrame(e.bind(this)));const o=++n;return i.set(o,r),o},this.cancelAnimationFrame=function(e){i.delete(e),t&&0==i.size&&(cancelAnimationFrame(t),t=0)},this.cb=function(e){A&&(document.body.remove(A),A=null),e||(A=document.createElement("div"),A.style.backgroundColor="black",A.style.position="fixed",A.style.right=0,A.style.top=0,A.style.color="white",A.style.padding="4px",A.innerHTML="RIVE FPS",e=function(e){A.innerHTML="RIVE FPS "+e.toFixed(1)},document.body.appendChild(A)),o=new function(){let t=0,n=0;this.fb=function(){var i=performance.now();n?(++t,1e3<(i-=n)&&(e(1e3*t/i),t=n=0)):(n=i,t=0)}}},this.$a=function(){A&&(document.body.remove(A),A=null),o=null},this.La=function(){}}function s(e){r.assert(!0);const t=new Map;let n=-1/0;this.push=function(i){return i=i+((1<>e,t.has(i)&&clearTimeout(t.get(i)),t.set(i,setTimeout((function(){t.delete(i),0==t.length?n=-1/0:i==n&&(n=Math.max(...t.keys()),r.assert(nt.Oa-e.Oa)),f=g.push(h),a!=f&&(t.bufferData(t.ARRAY_BUFFER,8*f,t.DYNAMIC_DRAW),a=f),f=0,s))t.bufferSubData(t.ARRAY_BUFFER,f,I.Aa),f+=4*I.Aa.length;for(var y of(r.assert(f==4*h),s))t.bufferSubData(t.ARRAY_BUFFER,f,y.Ra),f+=4*y.Ra.length;for(var B of(r.assert(f==8*h),f=d.push(p),c!=f&&(t.bufferData(t.ELEMENT_ARRAY_BUFFER,2*f,t.DYNAMIC_DRAW),c=f),I=0,s))t.bufferSubData(t.ELEMENT_ARRAY_BUFFER,I,B.indices),I+=2*B.indices.length;r.assert(I==2*p),B=0,y=!0,f=I=0;for(const e of s){e.image.va!=B&&(t.bindTexture(t.TEXTURE_2D,e.image.Va||null),B=e.image.va),e.rb?(t.scissor(e.Ea,m-e.Fa-e.Ka,e.yb,e.Ka),y=!0):y&&(t.scissor(0,m-i,n,i),y=!1),s=2/n;const r=-2/i;t.uniform4f(o,e.la[0]*s*e.ra,e.la[1]*r*e.sa,e.la[2]*s*e.ra,e.la[3]*r*e.sa),t.uniform2f(A,e.la[4]*s*e.ra+s*(e.Ea-e.pb*e.ra)-1,e.la[5]*r*e.sa+r*(e.Fa-e.qb*e.sa)+1),t.vertexAttribPointer(0,2,t.FLOAT,!1,0,f),t.vertexAttribPointer(1,2,t.FLOAT,!1,0,f+4*h),t.drawElements(t.TRIANGLES,e.indices.length,t.UNSIGNED_SHORT,I),f+=4*e.Aa.length,I+=2*e.indices.length}r.assert(f==4*h),r.assert(I==2*p)}},this.canvas=function(){return e()&&t.canvas}};e.onRuntimeInitialized=function(){function n(e){switch(e){case h.srcOver:return"source-over";case h.screen:return"screen";case h.overlay:return"overlay";case h.darken:return"darken";case h.lighten:return"lighten";case h.colorDodge:return"color-dodge";case h.colorBurn:return"color-burn";case h.hardLight:return"hard-light";case h.softLight:return"soft-light";case h.difference:return"difference";case h.exclusion:return"exclusion";case h.multiply:return"multiply";case h.hue:return"hue";case h.saturation:return"saturation";case h.color:return"color";case h.luminosity:return"luminosity"}}function i(e){return"rgba("+((16711680&e)>>>16)+","+((65280&e)>>>8)+","+((255&e)>>>0)+","+((4278190080&e)>>>24)/255+")"}function o(){0e)throw"restore() called without matching save().";this.fa.splice(e),this.da.push(this.Z.restore.bind(this.Z))},transform:function(e){const t=this.fa,n=t.length-6;t.splice(n,6,t[n]*e.xx+t[n+2]*e.xy,t[n+1]*e.xx+t[n+3]*e.xy,t[n]*e.yx+t[n+2]*e.yy,t[n+1]*e.yx+t[n+3]*e.yy,t[n]*e.tx+t[n+2]*e.ty+t[n+4],t[n+1]*e.tx+t[n+3]*e.ty+t[n+5]),this.da.push(this.Z.transform.bind(this.Z,e.xx,e.xy,e.yx,e.yy,e.tx,e.ty))},rotate:function(e){const t=Math.sin(e);e=Math.cos(e),this.transform({xx:e,xy:t,yx:-t,yy:e,tx:0,ty:0})},_drawPath:function(e,t){this.da.push(t.draw.bind(t,this.Z,e.ga,e.Ca===m?"evenodd":"nonzero"))},_drawImage:function(e,t,i){var r=e.Ta;if(r){var o=this.Z,A=n(t);this.da.push((function(){o.globalCompositeOperation=A,o.globalAlpha=i,o.drawImage(r,0,0),o.globalAlpha=1}))}},_getMatrix:function(e){const t=this.fa,n=t.length-6;for(let i=0;6>i;++i)e[i]=t[n+i]},_drawImageMesh:function(e,i,A,s,c,u,l,g,d,h){var p=this.Z.canvas.width,f=this.Z.canvas.height;const m=d-l,I=h-g;l=Math.max(l,0),g=Math.max(g,0),d=Math.min(d,p),h=Math.min(h,f);const y=d-l,B=h-g;if(r.assert(y<=Math.min(m,p)),r.assert(B<=Math.min(I,f)),!(0>=y||0>=B)){d=yf&&(h*=f/C,C=f),v>f&&(p*=f/v,v=f),E||(E=new t.DynamicRectanizer(f),E.reset(512,512)),0>(f=E.addRect(C,v))&&(o(),w.add(this),f=E.addRect(C,v),r.assert(0<=f));var S=65535&f,M=f>>16;Q.push({la:this.fa.slice(this.fa.length-6),image:e,Ea:S,Fa:M,pb:l,qb:g,yb:C,Ka:v,ra:h,sa:p,Aa:new Float32Array(s),Ra:new Float32Array(c),indices:new Uint16Array(u),rb:d,Oa:e.va<<1|(d?1:0)}),b+=s.length,k+=u.length;var D=this.Z,N=n(i);this.da.push((function(){D.save(),D.resetTransform(),D.globalCompositeOperation=N,D.globalAlpha=A,D.drawImage(a.canvas(),S,M,C,v,l,g,y,B),D.restore()}))}},_clipPath:function(e){this.da.push(this.Z.clip.bind(this.Z,e.ga,e.Ca===m?"evenodd":"nonzero"))},clear:function(){w.add(this),this.da.push(this.Z.clearRect.bind(this.Z,0,0,this.Ba.width,this.Ba.height))},flush:function(){},translate:function(e,t){this.transform({xx:1,xy:0,yx:0,yy:1,tx:e,ty:t})}});e.makeRenderer=function(e){return new v(e)},e.renderFactory={makeRenderPaint:function(){return new C},makeRenderPath:function(){return new B},makeRenderImage:function(){return new y}};let S=e.load,M=null;e.load=function(e){return new Promise((function(t){let n=null;M={total:0,loaded:0,ready:function(){t(n)}},n=S(e),0==M.total&&t(n)}))},s=new A,e.requestAnimationFrame=s.requestAnimationFrame.bind(s),e.cancelAnimationFrame=s.cancelAnimationFrame.bind(s),e.enableFPSCounter=s.cb.bind(s),e.disableFPSCounter=s.$a,s.La=o,e.cleanup=function(){E&&E.delete()}};var c,u,l=Object.assign({},t),g="object"==typeof window,d="function"==typeof importScripts,h="";(g||d)&&(d?h=self.location.href:"undefined"!=typeof document&&document.currentScript&&(h=document.currentScript.src),i&&(h=i),h=0!==h.indexOf("blob:")?h.substr(0,h.replace(/[?#].*/,"").lastIndexOf("/")+1):"",d&&(u=e=>{var t=new XMLHttpRequest;return t.open("GET",e,!1),t.responseType="arraybuffer",t.send(null),new Uint8Array(t.response)}),c=(e,t,n)=>{var i=new XMLHttpRequest;i.open("GET",e,!0),i.responseType="arraybuffer",i.onload=()=>{200==i.status||0==i.status&&i.response?t(i.response):n()},i.onerror=n,i.send(null)});var p,f=t.print||r.log.bind(r),m=t.printErr||r.warn.bind(r);Object.assign(t,l),l=null,t.wasmBinary&&(p=t.wasmBinary),t.noExitRuntime,"object"!=typeof WebAssembly&&L("no native wasm support detected");var I,y,B,C,w,E,Q,b,k,v,S=!1,M="undefined"!=typeof TextDecoder?new TextDecoder("utf8"):void 0;function D(e,t,n){var i=t+n;for(n=t;e[n]&&!(n>=i);)++n;if(16(r=224==(240&r)?(15&r)<<12|o<<6|A:(7&r)<<18|o<<12|A<<6|63&e[t++])?i+=String.fromCharCode(r):(r-=65536,i+=String.fromCharCode(55296|r>>10,56320|1023&r))}}else i+=String.fromCharCode(r)}return i}function N(){var e=I.buffer;y=e,t.HEAP8=B=new Int8Array(e),t.HEAP16=w=new Int16Array(e),t.HEAP32=Q=new Int32Array(e),t.HEAPU8=C=new Uint8Array(e),t.HEAPU16=E=new Uint16Array(e),t.HEAPU32=b=new Uint32Array(e),t.HEAPF32=k=new Float32Array(e),t.HEAPF64=v=new Float64Array(e)}var T,P=[],O=[],F=[];function R(){var e=t.preRun.shift();P.unshift(e)}var G,x=0,U=null,_=null;function L(e){throw t.onAbort&&t.onAbort(e),m(e="Aborted("+e+")"),S=!0,e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info."),o(e),e}function K(){return G.startsWith("data:application/octet-stream;base64,")}if(G="canvas_advanced.wasm",!K()){var Y=G;G=t.locateFile?t.locateFile(Y,h):h+Y}function j(){var e=G;try{if(e==G&&p)return new Uint8Array(p);if(u)return u(e);throw"both async and sync fetching of the wasm failed"}catch(e){L(e)}}function W(e){for(;0=t?"_"+e:e}function q(e,t){return e=J(e),function(){return t.apply(this,arguments)}}var Z=[{},{value:void 0},{value:null},{value:!0},{value:!1}],z=[];function H(e){var t=Error,n=q(e,(function(t){this.name=e,this.message=t,void 0!==(t=Error(t).stack)&&(this.stack=this.toString()+"\n"+t.replace(/^Error(:[^\n]*)?\n/,""))}));return n.prototype=Object.create(t.prototype),n.prototype.constructor=n,n.prototype.toString=function(){return void 0===this.message?this.name:this.name+": "+this.message},n}var V=void 0;function X(e){throw new V(e)}var $=e=>(e||X("Cannot use deleted val. handle = "+e),Z[e].value),ee=e=>{switch(e){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:var t=z.length?z.pop():Z.length;return Z[t]={ya:1,value:e},t}},te=void 0,ne=void 0;function ie(e){for(var t="";C[e];)t+=ne[C[e++]];return t}var re=[];function oe(){for(;re.length;){var e=re.pop();e.U.ka=!1,e.delete()}}var Ae=void 0,se={};function ae(e,t){for(void 0===t&&X("ptr should not be undefined");e.$;)t=e.na(t),e=e.$;return t}var ce={};function ue(e){var t=ie(e=pt(e));return dt(e),t}function le(e,t){var n=ce[e];return void 0===n&&X(t+" has unknown type "+ue(e)),n}function ge(){}var de=!1;function he(e){--e.count.value,0===e.count.value&&(e.aa?e.ca.ha(e.aa):e.X.V.ha(e.W))}function pe(e,t,n){return t===n?e:void 0===n.$||null===(e=pe(e,t,n.$))?null:n.ab(e)}var fe={},me=void 0;function Ie(e){throw new me(e)}function ye(e,t){return t.X&&t.W||Ie("makeClassHandle requires ptr and ptrType"),!!t.ca!=!!t.aa&&Ie("Both smartPtrType and smartPtr must be specified"),t.count={value:1},Be(Object.create(e,{U:{value:t}}))}function Be(e){return"undefined"==typeof FinalizationRegistry?(Be=e=>e,e):(de=new FinalizationRegistry((e=>{he(e.U)})),ge=e=>{de.unregister(e)},(Be=e=>{var t=e.U;return t.aa&&de.register(e,{U:t},e),e})(e))}var Ce={};function we(e){for(;e.length;){var t=e.pop();e.pop()(t)}}function Ee(e){return this.fromWireType(Q[e>>2])}var Qe={},be={};function ke(e,t,n){function i(t){(t=n(t)).length!==e.length&&Ie("Mismatched type converter count");for(var i=0;i{ce.hasOwnProperty(e)?r[t]=ce[e]:(o.push(e),Qe.hasOwnProperty(e)||(Qe[e]=[]),Qe[e].push((()=>{r[t]=ce[e],++A===o.length&&i(r)})))})),0===o.length&&i(r)}function ve(e){switch(e){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError("Unknown type size: "+e)}}function Se(e,t,n={}){if(!("argPackAdvance"in t))throw new TypeError("registerType registeredInstance requires argPackAdvance");var i=t.name;if(e||X('type "'+i+'" must have a positive integer typeid pointer'),ce.hasOwnProperty(e)){if(n.lb)return;X("Cannot register type '"+i+"' twice")}ce[e]=t,delete be[e],Qe.hasOwnProperty(e)&&(t=Qe[e],delete Qe[e],t.forEach((e=>e())))}function Me(e){X(e.U.X.V.name+" instance already deleted")}function De(){}function Ne(e,t,n){if(void 0===e[t].Y){var i=e[t];e[t]=function(){return e[t].Y.hasOwnProperty(arguments.length)||X("Function '"+n+"' called with an invalid number of arguments ("+arguments.length+") - expects one of ("+e[t].Y+")!"),e[t].Y[arguments.length].apply(this,arguments)},e[t].Y=[],e[t].Y[i.ja]=i}}function Te(e,n,i){t.hasOwnProperty(e)?((void 0===i||void 0!==t[e].Y&&void 0!==t[e].Y[i])&&X("Cannot register public name '"+e+"' twice"),Ne(t,e,e),t.hasOwnProperty(i)&&X("Cannot register multiple overloads of a function with the same number of arguments ("+i+")!"),t[e].Y[i]=n):(t[e]=n,void 0!==i&&(t[e].zb=i))}function Pe(e,t,n,i,r,o,A,s){this.name=e,this.constructor=t,this.ea=n,this.ha=i,this.$=r,this.gb=o,this.na=A,this.ab=s,this.Ma=[]}function Oe(e,t,n){for(;t!==n;)t.na||X("Expected null or instance of "+n.name+", got an instance of "+t.name),e=t.na(e),t=t.$;return e}function Fe(e,t){return null===t?(this.wa&&X("null is not a valid "+this.name),0):(t.U||X('Cannot pass "'+Ze(t)+'" as a '+this.name),t.U.W||X("Cannot pass deleted object as a pointer of type "+this.name),Oe(t.U.W,t.U.X.V,this.V))}function Re(e,t){if(null===t){if(this.wa&&X("null is not a valid "+this.name),this.qa){var n=this.xa();return null!==e&&e.push(this.ha,n),n}return 0}if(t.U||X('Cannot pass "'+Ze(t)+'" as a '+this.name),t.U.W||X("Cannot pass deleted object as a pointer of type "+this.name),!this.pa&&t.U.X.pa&&X("Cannot convert argument of type "+(t.U.ca?t.U.ca.name:t.U.X.name)+" to parameter type "+this.name),n=Oe(t.U.W,t.U.X.V,this.V),this.qa)switch(void 0===t.U.aa&&X("Passing raw pointer to smart pointer is illegal"),this.xb){case 0:t.U.ca===this?n=t.U.aa:X("Cannot convert argument of type "+(t.U.ca?t.U.ca.name:t.U.X.name)+" to parameter type "+this.name);break;case 1:n=t.U.aa;break;case 2:if(t.U.ca===this)n=t.U.aa;else{var i=t.clone();n=this.tb(n,ee((function(){i.delete()}))),null!==e&&e.push(this.ha,n)}break;default:X("Unsupporting sharing policy")}return n}function Ge(e,t){return null===t?(this.wa&&X("null is not a valid "+this.name),0):(t.U||X('Cannot pass "'+Ze(t)+'" as a '+this.name),t.U.W||X("Cannot pass deleted object as a pointer of type "+this.name),t.U.X.pa&&X("Cannot convert argument of type "+t.U.X.name+" to parameter type "+this.name),Oe(t.U.W,t.U.X.V,this.V))}function xe(e,t,n,i){this.name=e,this.V=t,this.wa=n,this.pa=i,this.qa=!1,this.ha=this.tb=this.xa=this.Na=this.xb=this.sb=void 0,void 0!==t.$?this.toWireType=Re:(this.toWireType=i?Fe:Ge,this.ba=null)}function Ue(e,n,i){t.hasOwnProperty(e)||Ie("Replacing nonexistant public symbol"),void 0!==t[e].Y&&void 0!==i?t[e].Y[i]=n:(t[e]=n,t[e].ja=i)}function _e(e,n){var i=(e=ie(e)).includes("j")?function(e,n){var i=[];return function(){if(i.length=0,Object.assign(i,arguments),e.includes("j")){var r=t["dynCall_"+e];r=i&&i.length?r.apply(null,[n].concat(i)):r.call(null,n)}else r=T.get(n).apply(null,i);return r}}(e,n):T.get(n);return"function"!=typeof i&&X("unknown function pointer with signature "+e+": "+n),i}var Le=void 0;function Ke(e,t){var n=[],i={};throw t.forEach((function e(t){i[t]||ce[t]||(be[t]?be[t].forEach(e):(n.push(t),i[t]=!0))})),new Le(e+": "+n.map(ue).join([", "]))}function Ye(e,t,n,i,r){var o=t.length;2>o&&X("argTypes array size mismatch! Must at least get return value and 'this' types!");var A=null!==t[1]&&null!==n,s=!1;for(n=1;n>2]);return n}function We(e,t,n){return e instanceof Object||X(n+' with invalid "this": '+e),e instanceof t.V.constructor||X(n+' incompatible with "this" of type '+e.constructor.name),e.U.W||X("cannot call emscripten binding method "+n+" on deleted object"),Oe(e.U.W,e.U.X.V,t.V)}function Je(e){4>1])};case 2:return function(e){return this.fromWireType((n?Q:b)[e>>2])};default:throw new TypeError("Unknown integer type: "+e)}}function Ze(e){if(null===e)return"null";var t=typeof e;return"object"===t||"array"===t||"function"===t?e.toString():""+e}function ze(e,t){switch(t){case 2:return function(e){return this.fromWireType(k[e>>2])};case 3:return function(e){return this.fromWireType(v[e>>3])};default:throw new TypeError("Unknown float type: "+e)}}function He(e,t,n){switch(t){case 0:return n?function(e){return B[e]}:function(e){return C[e]};case 1:return n?function(e){return w[e>>1]}:function(e){return E[e>>1]};case 2:return n?function(e){return Q[e>>2]}:function(e){return b[e>>2]};default:throw new TypeError("Unknown integer type: "+e)}}var Ve="undefined"!=typeof TextDecoder?new TextDecoder("utf-16le"):void 0;function Xe(e,t){for(var n=e>>1,i=n+t/2;!(n>=i)&&E[n];)++n;if(32<(n<<=1)-e&&Ve)return Ve.decode(C.subarray(e,n));for(n="",i=0;!(i>=t/2);++i){var r=w[e+2*i>>1];if(0==r)break;n+=String.fromCharCode(r)}return n}function $e(e,t,n){if(void 0===n&&(n=2147483647),2>n)return 0;var i=t;n=(n-=2)<2*e.length?n/2:e.length;for(var r=0;r>1]=e.charCodeAt(r),t+=2;return w[t>>1]=0,t-i}function et(e){return 2*e.length}function tt(e,t){for(var n=0,i="";!(n>=t/4);){var r=Q[e+4*n>>2];if(0==r)break;++n,65536<=r?(r-=65536,i+=String.fromCharCode(55296|r>>10,56320|1023&r)):i+=String.fromCharCode(r)}return i}function nt(e,t,n){if(void 0===n&&(n=2147483647),4>n)return 0;var i=t;n=i+n-4;for(var r=0;r=o&&(o=65536+((1023&o)<<10)|1023&e.charCodeAt(++r)),Q[t>>2]=o,(t+=4)+4>n)break}return Q[t>>2]=0,t-i}function it(e){for(var t=0,n=0;n=i&&++n,t+=4}return t}var rt={};function ot(e){var t=rt[e];return void 0===t?ie(e):t}var At=[],st=[],at=[null,[],[]];V=t.BindingError=H("BindingError"),t.count_emval_handles=function(){for(var e=0,t=5;tut;++ut)ct[ut]=String.fromCharCode(ut);ne=ct,t.getInheritedInstanceCount=function(){return Object.keys(se).length},t.getLiveInheritedInstances=function(){var e,t=[];for(e in se)se.hasOwnProperty(e)&&t.push(se[e]);return t},t.flushPendingDeletes=oe,t.setDelayFunction=function(e){Ae=e,re.length&&Ae&&Ae(oe)},me=t.InternalError=H("InternalError"),De.prototype.isAliasOf=function(e){if(!(this instanceof De&&e instanceof De))return!1;var t=this.U.X.V,n=this.U.W,i=e.U.X.V;for(e=e.U.W;t.$;)n=t.na(n),t=t.$;for(;i.$;)e=i.na(e),i=i.$;return t===i&&n===e},De.prototype.clone=function(){if(this.U.W||Me(this),this.U.ma)return this.U.count.value+=1,this;var e=Be,t=Object,n=t.create,i=Object.getPrototypeOf(this),r=this.U;return(e=e(n.call(t,i,{U:{value:{count:r.count,ka:r.ka,ma:r.ma,W:r.W,X:r.X,aa:r.aa,ca:r.ca}}}))).U.count.value+=1,e.U.ka=!1,e},De.prototype.delete=function(){this.U.W||Me(this),this.U.ka&&!this.U.ma&&X("Object already scheduled for deletion"),ge(this),he(this.U),this.U.ma||(this.U.aa=void 0,this.U.W=void 0)},De.prototype.isDeleted=function(){return!this.U.W},De.prototype.deleteLater=function(){return this.U.W||Me(this),this.U.ka&&!this.U.ma&&X("Object already scheduled for deletion"),re.push(this),1===re.length&&Ae&&Ae(oe),this.U.ka=!0,this},xe.prototype.hb=function(e){return this.Na&&(e=this.Na(e)),e},xe.prototype.Ga=function(e){this.ha&&this.ha(e)},xe.prototype.argPackAdvance=8,xe.prototype.readValueFromPointer=Ee,xe.prototype.deleteObject=function(e){null!==e&&e.delete()},xe.prototype.fromWireType=function(e){function t(){return this.qa?ye(this.V.ea,{X:this.sb,W:n,ca:this,aa:e}):ye(this.V.ea,{X:this,W:e})}var n=this.hb(e);if(!n)return this.Ga(e),null;var i=function(e,t){return t=ae(e,t),se[t]}(this.V,n);if(void 0!==i)return 0===i.U.count.value?(i.U.W=n,i.U.aa=e,i.clone()):(i=i.clone(),this.Ga(e),i);if(i=this.V.gb(n),!(i=fe[i]))return t.call(this);i=this.pa?i.Xa:i.pointerType;var r=pe(n,this.V,i.V);return null===r?t.call(this):this.qa?ye(i.V.ea,{X:i,W:r,ca:this,aa:e}):ye(i.V.ea,{X:i,W:r})},Le=t.UnboundTypeError=H("UnboundTypeError");var lt={l:function(e,t,n){e=ie(e),t=le(t,"wrapper"),n=$(n);var i=[].slice,r=t.V,o=r.ea,A=r.$.ea,s=r.$.constructor;for(var a in e=q(e,(function(){r.$.Ma.forEach(function(e){if(this[e]===A[e])throw new te("Pure virtual function "+e+" must be implemented in JavaScript")}.bind(this)),Object.defineProperty(this,"__parent",{value:o}),this.__construct.apply(this,i.call(arguments))})),o.__construct=function(){this===o&&X("Pass correct 'this' to __construct");var e=s.implement.apply(void 0,[this].concat(i.call(arguments)));ge(e);var t=e.U;e.notifyOnDestruction(),t.ma=!0,Object.defineProperties(this,{U:{value:t}}),Be(this),e=t.W,e=ae(r,e),se.hasOwnProperty(e)?X("Tried to register registered instance: "+e):se[e]=this},o.__destruct=function(){this===o&&X("Pass correct 'this' to __destruct"),ge(this);var e=this.U.W;e=ae(r,e),se.hasOwnProperty(e)?delete se[e]:X("Tried to unregister unregistered instance: "+e)},e.prototype=Object.create(o),n)e.prototype[a]=n[a];return ee(e)},I:function(e){var t=Ce[e];delete Ce[e];var n=t.xa,i=t.ha,r=t.Ja;ke([e],r.map((e=>e.kb)).concat(r.map((e=>e.vb))),(e=>{var o={};return r.forEach(((t,n)=>{var i=e[n],A=t.ib,s=t.jb,a=e[n+r.length],c=t.ub,u=t.wb;o[t.eb]={read:e=>i.fromWireType(A(s,e)),write:(e,t)=>{var n=[];c(u,e,a.toWireType(n,t)),we(n)}}})),[{name:t.name,fromWireType:function(e){var t,n={};for(t in o)n[t]=o[t].read(e);return i(e),n},toWireType:function(e,t){for(var r in o)if(!(r in t))throw new TypeError('Missing field: "'+r+'"');var A=n();for(r in o)o[r].write(A,t[r]);return null!==e&&e.push(i,A),A},argPackAdvance:8,readValueFromPointer:Ee,ba:i}]}))},x:function(){},B:function(e,t,n,i,r){var o=ve(n);Se(e,{name:t=ie(t),fromWireType:function(e){return!!e},toWireType:function(e,t){return t?i:r},argPackAdvance:8,readValueFromPointer:function(e){if(1===n)var i=B;else if(2===n)i=w;else{if(4!==n)throw new TypeError("Unknown boolean type size: "+t);i=Q}return this.fromWireType(i[e>>o])},ba:null})},c:function(e,t,n,i,r,o,A,s,a,c,u,l,g){u=ie(u),o=_e(r,o),s&&(s=_e(A,s)),c&&(c=_e(a,c)),g=_e(l,g);var d=J(u);Te(d,(function(){Ke("Cannot construct "+u+" due to unbound types",[i])})),ke([e,t,n],i?[i]:[],(function(t){if(t=t[0],i)var n=t.V,r=n.ea;else r=De.prototype;t=q(d,(function(){if(Object.getPrototypeOf(this)!==A)throw new V("Use 'new' to construct "+u);if(void 0===a.ia)throw new V(u+" has no accessible constructor");var e=a.ia[arguments.length];if(void 0===e)throw new V("Tried to invoke ctor of "+u+" with invalid number of parameters ("+arguments.length+") - expected ("+Object.keys(a.ia).toString()+") parameters instead!");return e.apply(this,arguments)}));var A=Object.create(r,{constructor:{value:t}});t.prototype=A;var a=new Pe(u,t,A,g,n,o,s,c);n=new xe(u,a,!0,!1),r=new xe(u+"*",a,!1,!1);var l=new xe(u+" const*",a,!1,!0);return fe[e]={pointerType:r,Xa:l},Ue(d,t),[n,r,l]}))},h:function(e,t,n,i,r,o,A){var s=je(n,i);t=ie(t),o=_e(r,o),ke([],[e],(function(e){function i(){Ke("Cannot call "+r+" due to unbound types",s)}var r=(e=e[0]).name+"."+t;t.startsWith("@@")&&(t=Symbol[t.substring(2)]);var a=e.V.constructor;return void 0===a[t]?(i.ja=n-1,a[t]=i):(Ne(a,t,r),a[t].Y[n-1]=i),ke([],s,(function(e){return e=Ye(r,[e[0],null].concat(e.slice(1)),null,o,A),void 0===a[t].Y?(e.ja=n-1,a[t]=e):a[t].Y[n-1]=e,[]})),[]}))},n:function(e,t,n,i,r,o,A,s){t=ie(t),o=_e(r,o),ke([],[e],(function(e){var r=(e=e[0]).name+"."+t,a={get:function(){Ke("Cannot access "+r+" due to unbound types",[n])},enumerable:!0,configurable:!0};return a.set=s?()=>{Ke("Cannot access "+r+" due to unbound types",[n])}:()=>{X(r+" is a read-only property")},Object.defineProperty(e.V.constructor,t,a),ke([],[n],(function(n){n=n[0];var r={get:function(){return n.fromWireType(o(i))},enumerable:!0};return s&&(s=_e(A,s),r.set=e=>{var t=[];s(i,n.toWireType(t,e)),we(t)}),Object.defineProperty(e.V.constructor,t,r),[]})),[]}))},k:function(e,t,n,i,r,o){0{Ke("Cannot construct "+e.name+" due to unbound types",A)},ke([],A,(function(i){return i.splice(1,0,null),e.V.ia[t-1]=Ye(n,i,null,r,o),[]})),[]}))},a:function(e,t,n,i,r,o,A,s){var a=je(n,i);t=ie(t),o=_e(r,o),ke([],[e],(function(e){function i(){Ke("Cannot call "+r+" due to unbound types",a)}var r=(e=e[0]).name+"."+t;t.startsWith("@@")&&(t=Symbol[t.substring(2)]),s&&e.V.Ma.push(t);var c=e.V.ea,u=c[t];return void 0===u||void 0===u.Y&&u.className!==e.name&&u.ja===n-2?(i.ja=n-2,i.className=e.name,c[t]=i):(Ne(c,t,r),c[t].Y[n-2]=i),ke([],a,(function(i){return i=Ye(r,i,e,o,A),void 0===c[t].Y?(i.ja=n-2,c[t]=i):c[t].Y[n-2]=i,[]})),[]}))},b:function(e,t,n,i,r,o,A,s,a,c){t=ie(t),r=_e(i,r),ke([],[e],(function(e){var i=(e=e[0]).name+"."+t,u={get:function(){Ke("Cannot access "+i+" due to unbound types",[n,A])},enumerable:!0,configurable:!0};return u.set=a?()=>{Ke("Cannot access "+i+" due to unbound types",[n,A])}:()=>{X(i+" is a read-only property")},Object.defineProperty(e.V.ea,t,u),ke([],a?[n,A]:[n],(function(n){var A=n[0],u={get:function(){var t=We(this,e,i+" getter");return A.fromWireType(r(o,t))},enumerable:!0};if(a){a=_e(s,a);var l=n[1];u.set=function(t){var n=We(this,e,i+" setter"),r=[];a(c,n,l.toWireType(r,t)),we(r)}}return Object.defineProperty(e.V.ea,t,u),[]})),[]}))},A:function(e,t){Se(e,{name:t=ie(t),fromWireType:function(e){var t=$(e);return Je(e),t},toWireType:function(e,t){return ee(t)},argPackAdvance:8,readValueFromPointer:Ee,ba:null})},j:function(e,t,n,i){function r(){}n=ve(n),t=ie(t),r.values={},Se(e,{name:t,constructor:r,fromWireType:function(e){return this.constructor.values[e]},toWireType:function(e,t){return t.value},argPackAdvance:8,readValueFromPointer:qe(t,n,i),ba:null}),Te(t,r)},i:function(e,t,n){var i=le(e,"enum");t=ie(t),e=i.constructor,i=Object.create(i.constructor.prototype,{value:{value:n},constructor:{value:q(i.name+"_"+t,(function(){}))}}),e.values[n]=i,e[t]=i},r:function(e,t,n){n=ve(n),Se(e,{name:t=ie(t),fromWireType:function(e){return e},toWireType:function(e,t){return t},argPackAdvance:8,readValueFromPointer:ze(t,n),ba:null})},q:function(e,t,n,i,r,o){var A=je(t,n);e=ie(e),r=_e(i,r),Te(e,(function(){Ke("Cannot call "+e+" due to unbound types",A)}),t-1),ke([],A,(function(n){return Ue(e,Ye(e,[n[0],null].concat(n.slice(1)),null,r,o),t-1),[]}))},g:function(e,t,n,i,r){t=ie(t),-1===r&&(r=4294967295),r=ve(n);var o=e=>e;if(0===i){var A=32-8*n;o=e=>e<>>A}n=t.includes("unsigned")?function(e,t){return t>>>0}:function(e,t){return t},Se(e,{name:t,fromWireType:o,toWireType:n,argPackAdvance:8,readValueFromPointer:He(t,r,0!==i),ba:null})},d:function(e,t,n){function i(e){var t=b;return new r(y,t[1+(e>>=2)],t[e])}var r=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][t];Se(e,{name:n=ie(n),fromWireType:i,argPackAdvance:8,readValueFromPointer:i},{lb:!0})},s:function(e,t){var n="std::string"===(t=ie(t));Se(e,{name:t,fromWireType:function(e){var t=b[e>>2],i=e+4;if(n)for(var r=i,o=0;o<=t;++o){var A=i+o;if(o==t||0==C[A]){if(r=r?D(C,r,A-r):"",void 0===s)var s=r;else s+=String.fromCharCode(0),s+=r;r=A+1}}else{for(s=Array(t),o=0;o=A?r++:2047>=A?r+=2:55296<=A&&57343>=A?(r+=4,++i):r+=3}else r=t.length;if(A=(r=ht(4+(i=r)+1))+4,b[r>>2]=i,n&&o){if(o=A,A=i+1,i=C,0=a&&(a=65536+((1023&a)<<10)|1023&t.charCodeAt(++s)),127>=a){if(o>=A)break;i[o++]=a}else{if(2047>=a){if(o+1>=A)break;i[o++]=192|a>>6}else{if(65535>=a){if(o+2>=A)break;i[o++]=224|a>>12}else{if(o+3>=A)break;i[o++]=240|a>>18,i[o++]=128|a>>12&63}i[o++]=128|a>>6&63}i[o++]=128|63&a}}i[o]=0}}else if(o)for(o=0;oE,s=1;else 4===t&&(i=tt,r=nt,o=it,A=()=>b,s=2);Se(e,{name:n,fromWireType:function(e){for(var n,r=b[e>>2],o=A(),a=e+4,c=0;c<=r;++c){var u=e+4+c*t;c!=r&&0!=o[u>>s]||(a=i(a,u-a),void 0===n?n=a:(n+=String.fromCharCode(0),n+=a),a=u+t)}return dt(e),n},toWireType:function(e,i){"string"!=typeof i&&X("Cannot pass non-string to C++ string type "+n);var A=o(i),a=ht(4+A+t);return b[a>>2]=A>>s,r(i,a+4,A+t),null!==e&&e.push(dt,a),a},argPackAdvance:8,readValueFromPointer:Ee,ba:function(e){dt(e)}})},K:function(e,t,n,i,r,o){Ce[e]={name:ie(t),xa:_e(n,i),ha:_e(r,o),Ja:[]}},J:function(e,t,n,i,r,o,A,s,a,c){Ce[e].Ja.push({eb:ie(t),kb:n,ib:_e(i,r),jb:o,vb:A,ub:_e(s,a),wb:c})},C:function(e,t){Se(e,{nb:!0,name:t=ie(t),argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},m:function(e,t,n){e=$(e),t=le(t,"emval::as");var i=[],r=ee(i);return b[n>>2]=r,t.toWireType(i,e)},t:function(e,t,n,i,r){e=At[e],t=$(t),n=ot(n);var o=[];return b[i>>2]=ee(o),e(t,n,o,r)},f:function(e,t,n,i){(e=At[e])(t=$(t),n=ot(n),null,i)},L:Je,e:function(e,t){var n=function(e,t){for(var n=Array(e),i=0;i>2],"parameter "+i);return n}(e,t),i=n[0];t=i.name+"_$"+n.slice(1).map((function(e){return e.name})).join("_")+"$";var r=st[t];if(void 0!==r)return r;var o=Array(e-1);return r=function(e){var t=At.length;return At.push(e),t}(((t,r,A,s)=>{for(var a=0,c=0;c>>=0))return!1;for(var n=1;4>=n;n*=2){var i=t*(1+.2/n);i=Math.min(i,e+100663296);var r=Math;i=Math.max(e,i),r=r.min.call(r,2147483648,i+(65536-i%65536)%65536);e:{try{I.grow(r-y.byteLength+65535>>>16),N();var o=1;break e}catch(e){}o=void 0}if(o)return!0}return!1},z:function(){return 52},w:function(){return 70},y:function(e,t,n,i){for(var r=0,o=0;o>2],s=b[t+4>>2];t+=8;for(var a=0;a>2]=r,0}};!function(){function e(e){t.asm=e.exports,I=t.asm.M,N(),T=t.asm.S,O.unshift(t.asm.N),x--,t.monitorRunDependencies&&t.monitorRunDependencies(x),0==x&&(null!==U&&(clearInterval(U),U=null),_&&(e=_,_=null,e()))}function n(t){e(t.instance)}function i(e){return function(){if(!p&&(g||d)){if("function"==typeof fetch&&!G.startsWith("file://"))return fetch(G,{credentials:"same-origin"}).then((function(e){if(!e.ok)throw"failed to load wasm binary file at '"+G+"'";return e.arrayBuffer()})).catch((function(){return j()}));if(c)return new Promise((function(e,t){c(G,(function(t){e(new Uint8Array(t))}),t)}))}return Promise.resolve().then((function(){return j()}))}().then((function(e){return WebAssembly.instantiate(e,r)})).then((function(e){return e})).then(e,(function(e){m("failed to asynchronously prepare wasm: "+e),L(e)}))}var r={a:lt};if(x++,t.monitorRunDependencies&&t.monitorRunDependencies(x),t.instantiateWasm)try{return t.instantiateWasm(r,e)}catch(e){return m("Module.instantiateWasm callback failed with error: "+e),!1}(p||"function"!=typeof WebAssembly.instantiateStreaming||K()||G.startsWith("file://")||"function"!=typeof fetch?i(n):fetch(G,{credentials:"same-origin"}).then((function(e){return WebAssembly.instantiateStreaming(e,r).then(n,(function(e){return m("wasm streaming compile failed: "+e),m("falling back to ArrayBuffer instantiation"),i(n)}))}))).catch(o)}(),t.___wasm_call_ctors=function(){return(t.___wasm_call_ctors=t.asm.N).apply(null,arguments)};var gt,dt=t._free=function(){return(dt=t._free=t.asm.O).apply(null,arguments)},ht=t._malloc=function(){return(ht=t._malloc=t.asm.P).apply(null,arguments)},pt=t.___getTypeName=function(){return(pt=t.___getTypeName=t.asm.Q).apply(null,arguments)};function ft(){function e(){if(!gt&&(gt=!0,t.calledRun=!0,!S)){if(W(O),n(t),t.onRuntimeInitialized&&t.onRuntimeInitialized(),t.postRun)for("function"==typeof t.postRun&&(t.postRun=[t.postRun]);t.postRun.length;){var e=t.postRun.shift();F.unshift(e)}W(F)}}if(!(0{e.exports=JSON.parse('{"name":"@rive-app/canvas","version":"1.0.95","description":"Rive\'s canvas based web api.","main":"rive.js","homepage":"https://rive.app","repository":{"type":"git","url":"https://github.com/rive-app/rive-wasm/tree/master/js"},"keywords":["rive","animation"],"author":"Rive","contributors":["Luigi Rosso (https://rive.app)","Maxwell Talbot (https://rive.app)","Arthur Vivian (https://rive.app)","Umberto Sonnino (https://rive.app)","Matthew Sullivan (mailto:matt.j.sullivan@gmail.com)"],"license":"MIT","files":["rive.js","rive.js.map","rive.wasm","rive.d.ts","rive_advanced.mjs.d.ts"],"typings":"rive.d.ts","dependencies":{},"browser":{"fs":false,"path":false}}')},(e,t,n)=>{n.r(t),n.d(t,{registerTouchInteractions:()=>i.registerTouchInteractions});var i=n(4)},(e,t,n)=>{n.r(t),n.d(t,{registerTouchInteractions:()=>i});const i=({canvas:e,artboard:t,stateMachines:n=[],renderer:i,rive:r,fit:o,alignment:A})=>{if(!(e&&n.length&&i&&r&&t))return null;const s=(e=>{const i=e.currentTarget.getBoundingClientRect(),s=e.clientX-i.left,a=e.clientY-i.top,c=r.computeAlignment(o,A,{minX:0,minY:0,maxX:i.width,maxY:i.height},t.bounds);let u=new r.Mat2D;c.invert(u);const l=new r.Vec2D(s,a),g=r.mapXY(u,l),d=g.x(),h=g.y();switch(g.delete(),u.delete(),l.delete(),c.delete(),e.type){case"mouseover":case"mouseout":case"mousemove":for(const e of n)e.pointerMove(d,h);break;case"mousedown":for(const e of n)e.pointerDown(d,h);break;case"mouseup":for(const e of n)e.pointerUp(d,h)}}).bind(void 0);return e.addEventListener("mouseover",s),e.addEventListener("mouseout",s),e.addEventListener("mousemove",s),e.addEventListener("mousedown",s),e.addEventListener("mouseup",s),()=>{e.removeEventListener("mouseover",s),e.removeEventListener("mouseout",s),e.removeEventListener("mousemove",s),e.removeEventListener("mousedown",s),e.removeEventListener("mouseup",s)}}}],t={};function n(i){var r=t[i];if(void 0!==r)return r.exports;var o=t[i]={exports:{}};return e[i](o,o.exports,n),o.exports}n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),n.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})};var i={};return(()=>{n.r(i),n.d(i,{Fit:()=>t,Alignment:()=>o,Layout:()=>g,RuntimeLoader:()=>d,StateMachineInputType:()=>l,StateMachineInput:()=>m,EventType:()=>p,LoopType:()=>f,Rive:()=>w,Testing:()=>b});var e,t,o,A=n(1),s=n(2),a=n(3),c=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},u=function(e,t){var n,i,r,o,A={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;A;)try{if(n=1,i&&(r=2&o[0]?i.return:o[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,o[1])).done)return r;switch(i=0,r&&(o=[2&o[0],r.value]),o[0]){case 0:case 1:r=o;break;case 4:return A.label++,{value:o[1],done:!1};case 5:A.label++,i=o[1],o=[0];continue;case 7:o=A.ops.pop(),A.trys.pop();continue;default:if(!((r=(r=A.trys).length>0&&r[r.length-1])||6!==o[0]&&2!==o[0])){A=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]0;)null===(n=e.callBackQueue.shift())||void 0===n||n(e.runtime)}))},e.getInstance=function(t){e.isLoading||(e.isLoading=!0,e.loadRuntime()),e.runtime?t(e.runtime):e.callBackQueue.push(t)},e.awaitInstance=function(){return new Promise((function(t,n){return e.getInstance((function(e){return t(e)}))}))},e.setWasmUrl=function(t){e.wasmURL=t},e.isLoading=!1,e.callBackQueue=[],e.wasmURL="https://unpkg.com/"+s.name+"@"+s.version+"/rive.wasm",e}(),h=function(){function e(e,t,n,i){this.animation=e,this.artboard=t,this.playing=i,this.loopCount=0,this.scrubTo=null,this.instance=new n.LinearAnimationInstance(e,t)}return Object.defineProperty(e.prototype,"name",{get:function(){return this.animation.name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"time",{get:function(){return this.instance.time},set:function(e){this.instance.time=e},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"loopValue",{get:function(){return this.animation.loopValue},enumerable:!1,configurable:!0}),e.prototype.advance=function(e){null===this.scrubTo?this.instance.advance(e):(this.instance.time=0,this.instance.advance(this.scrubTo),this.scrubTo=null)},e.prototype.apply=function(e){this.instance.apply(e)},Object.defineProperty(e.prototype,"needsScrub",{get:function(){return null!==this.scrubTo},enumerable:!1,configurable:!0}),e.prototype.cleanup=function(){this.instance.delete()},e}();!function(e){e[e.Number=56]="Number",e[e.Trigger=58]="Trigger",e[e.Boolean=59]="Boolean"}(l||(l={}));var p,f,m=function(){function e(e,t){this.type=e,this.runtimeInput=t}return Object.defineProperty(e.prototype,"name",{get:function(){return this.runtimeInput.name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"value",{get:function(){return this.runtimeInput.value},set:function(e){this.runtimeInput.value=e},enumerable:!1,configurable:!0}),e.prototype.fire=function(){this.type===l.Trigger&&this.runtimeInput.fire()},e}(),I=function(){function e(e,t,n,i){this.stateMachine=e,this.playing=n,this.artboard=i,this.inputs=[],this.instance=new t.StateMachineInstance(e,i),this.initInputs(t)}return Object.defineProperty(e.prototype,"name",{get:function(){return this.stateMachine.name},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"statesChanged",{get:function(){for(var e=[],t=0;t=0||s>=0)A>=0?this.animations[A].playing=t:this.stateMachines[s].playing=t;else{var a=this.artboard.animationByName(e[o]);if(a){var c=new h(a,this.artboard,this.runtime,t);c.advance(0),c.apply(1),this.animations.push(c)}else{var u=this.artboard.stateMachineByName(e[o]);if(u){var l=new I(u,this.runtime,t,this.artboard);this.stateMachines.push(l)}}}}}return n&&(t?this.eventManager.fire({type:p.Play,data:this.playing}):this.eventManager.fire({type:p.Pause,data:this.paused})),t?this.playing:this.paused},e.prototype.play=function(e){return this.add(e,!0)},e.prototype.pause=function(e){return this.add(e,!1)},e.prototype.scrub=function(e,t){var n=this.animations.filter((function(t){return e.includes(t.name)}));return n.forEach((function(e){return e.scrubTo=t})),n.map((function(e){return e.name}))},Object.defineProperty(e.prototype,"playing",{get:function(){return this.animations.filter((function(e){return e.playing})).map((function(e){return e.name})).concat(this.stateMachines.filter((function(e){return e.playing})).map((function(e){return e.name})))},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"paused",{get:function(){return this.animations.filter((function(e){return!e.playing})).map((function(e){return e.name})).concat(this.stateMachines.filter((function(e){return!e.playing})).map((function(e){return e.name})))},enumerable:!1,configurable:!0}),e.prototype.stop=function(e){var t=this,n=[];if(0===(e=Q(e)).length)n=this.animations.map((function(e){return e.name})).concat(this.stateMachines.map((function(e){return e.name}))),this.animations.forEach((function(e){return e.cleanup()})),this.stateMachines.forEach((function(e){return e.cleanup()})),this.animations.splice(0,this.animations.length),this.stateMachines.splice(0,this.stateMachines.length);else{var i=this.animations.filter((function(t){return e.includes(t.name)}));i.forEach((function(e){e.cleanup(),t.animations.splice(t.animations.indexOf(e),1)}));var r=this.stateMachines.filter((function(t){return e.includes(t.name)}));r.forEach((function(e){e.cleanup(),t.stateMachines.splice(t.stateMachines.indexOf(e),1)})),n=i.map((function(e){return e.name})).concat(r.map((function(e){return e.name})))}return this.eventManager.fire({type:p.Stop,data:n}),n},Object.defineProperty(e.prototype,"isPlaying",{get:function(){return this.animations.reduce((function(e,t){return e||t.playing}),!1)||this.stateMachines.reduce((function(e,t){return e||t.playing}),!1)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isPaused",{get:function(){return!this.isPlaying&&(this.animations.length>0||this.stateMachines.length>0)},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"isStopped",{get:function(){return 0===this.animations.length&&0===this.stateMachines.length},enumerable:!1,configurable:!0}),e.prototype.atLeastOne=function(e,t){var n;return void 0===t&&(t=!0),0===this.animations.length&&0===this.stateMachines.length&&(this.artboard.animationCount()>0?this.add([n=this.artboard.animationByIndex(0).name],e,t):this.artboard.stateMachineCount()>0&&this.add([n=this.artboard.stateMachineByIndex(0).name],e,t)),n},e.prototype.handleLooping=function(){for(var e=0,t=this.animations.filter((function(e){return e.playing}));e1&&(this.eventManager.fire({type:p.Loop,data:{animation:n.name,type:f.PingPong}}),n.loopCount=0)}},e.prototype.handleStateChanges=function(){for(var e=[],t=0,n=this.stateMachines.filter((function(e){return e.playing}));t0&&this.eventManager.fire({type:p.StateChange,data:e})},e}();!function(e){e.Load="load",e.LoadError="loaderror",e.Play="play",e.Pause="pause",e.Stop="stop",e.Loop="loop",e.Draw="draw",e.StateChange="statechange"}(p||(p={})),function(e){e.OneShot="oneshot",e.Loop="loop",e.PingPong="pingpong"}(f||(f={}));var B=function(){function e(e){void 0===e&&(e=[]),this.listeners=e}return e.prototype.getListeners=function(e){return this.listeners.filter((function(t){return t.type===e}))},e.prototype.add=function(e){this.listeners.includes(e)||this.listeners.push(e)},e.prototype.remove=function(e){for(var t=0;t0;){var e=this.queue.shift();null==e||e.action(),(null==e?void 0:e.event)&&this.eventManager.fire(e.event)}},e}(),w=function(){function e(e){var t;this._updateLayout=!0,this.isRendererActive=!0,this.loaded=!1,this.readyForPlaying=!1,this.artboard=null,this.eventCleanup=null,this.durations=[],this.frameTimes=[],this.frameCount=0,this.renderSecondTimer=0,this.canvas=e.canvas,this.src=e.src,this.buffer=e.buffer,this.layout=null!==(t=e.layout)&&void 0!==t?t:new g,this.eventManager=new B,e.onLoad&&this.on(p.Load,e.onLoad),e.onLoadError&&this.on(p.LoadError,e.onLoadError),e.onPlay&&this.on(p.Play,e.onPlay),e.onPause&&this.on(p.Pause,e.onPause),e.onStop&&this.on(p.Stop,e.onStop),e.onLoop&&this.on(p.Loop,e.onLoop),e.onStateChange&&this.on(p.StateChange,e.onStateChange),e.onload&&!e.onLoad&&this.on(p.Load,e.onload),e.onloaderror&&!e.onLoadError&&this.on(p.LoadError,e.onloaderror),e.onplay&&!e.onPlay&&this.on(p.Play,e.onplay),e.onpause&&!e.onPause&&this.on(p.Pause,e.onpause),e.onstop&&!e.onStop&&this.on(p.Stop,e.onstop),e.onloop&&!e.onLoop&&this.on(p.Loop,e.onloop),e.onstatechange&&!e.onStateChange&&this.on(p.StateChange,e.onstatechange),this.taskQueue=new C(this.eventManager),this.init({src:this.src,buffer:this.buffer,autoplay:e.autoplay,animations:e.animations,stateMachines:e.stateMachines,artboard:e.artboard,useOffscreenRenderer:e.useOffscreenRenderer})}return e.new=function(t){return r.warn("This function is deprecated: please use `new Rive({})` instead"),new e(t)},e.prototype.init=function(t){var n=this,i=t.src,o=t.buffer,A=t.animations,s=t.stateMachines,c=t.artboard,u=t.autoplay,l=void 0!==u&&u,g=t.useOffscreenRenderer,h=void 0!==g&&g;if(this.src=i,this.buffer=o,!this.src&&!this.buffer)throw new Error(e.missingErrorMessage);var p=Q(A),f=Q(s);this.loaded=!1,this.readyForPlaying=!1,d.awaitInstance().then((function(e){n.runtime=e,n.renderer=n.runtime.makeRenderer(n.canvas,h),n.canvas.width||n.canvas.height||n.resizeDrawingSurfaceToCanvas(),n.initData(c,p,f,l).then((function(){var e=(n.animator.stateMachines||[]).filter((function(e){return e.playing})).map((function(e){return e.instance}));n.eventCleanup=(0,a.registerTouchInteractions)({canvas:n.canvas,artboard:n.artboard,stateMachines:e,renderer:n.renderer,rive:n.runtime,fit:n._layout.runtimeFit(n.runtime),alignment:n._layout.runtimeAlignment(n.runtime)})})).catch((function(e){r.error(e)}))})).catch((function(e){r.error(e)}))},e.prototype.initData=function(e,t,n,i){var o;return c(this,void 0,void 0,(function(){var A,s,a;return u(this,(function(c){switch(c.label){case 0:return this.src?(A=this,[4,E(this.src)]):[3,2];case 1:A.buffer=c.sent(),c.label=2;case 2:return s=this,[4,this.runtime.load(new Uint8Array(this.buffer))];case 3:return s.file=c.sent(),this.file?(this.initArtboard(e,t,n,i),this.loaded=!0,this.eventManager.fire({type:p.Load,data:null!==(o=this.src)&&void 0!==o?o:"buffer"}),this.readyForPlaying=!0,this.taskQueue.process(),this.drawFrame(),[2,Promise.resolve()]):(a="Problem loading file; may be corrupt!",r.warn(a),this.eventManager.fire({type:p.LoadError,data:a}),[2,Promise.reject(a)])}}))}))},e.prototype.initArtboard=function(e,t,n,i){var o,A=e?this.file.artboardByName(e):this.file.defaultArtboard();if(!A){var s="Invalid artboard name or no default artboard";return r.warn(s),void this.eventManager.fire({type:p.LoadError,data:s})}if(this.artboard=A,this.artboard.animationCount()<1)throw s="Artboard has no animations",this.eventManager.fire({type:p.LoadError,data:s}),s;this.animator=new y(this.runtime,this.artboard,this.eventManager),t.length>0||n.length>0?(o=t.concat(n),this.animator.add(o,i,!1)):o=[this.animator.atLeastOne(i,!1)],this.taskQueue.add({action:function(){},event:{type:i?p.Play:p.Pause,data:o}})},e.prototype.drawFrame=function(){this.startRendering()},e.prototype.draw=function(e,t){var n=performance.now();this.frameRequestId=null,this.lastRenderTime||(this.lastRenderTime=e),this.renderSecondTimer+=e-this.lastRenderTime,this.renderSecondTimer>5e3&&(this.renderSecondTimer=0,null==t||t());var i=(e-this.lastRenderTime)/1e3;this.lastRenderTime=e;for(var r=0,o=this.animator.animations.filter((function(e){return e.playing||e.needsScrub})).sort((function(e,t){return e.needsScrub?-1:1}));r{Object.defineProperty(t,"__esModule",{value:!0});var i=n(50959),r=n(38176),o=function(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}(i),A=function(){return A=Object.assign||function(e){for(var t,n=1,i=arguments.length;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.s16=t.s8=t.nu64be=t.u48be=t.u40be=t.u32be=t.u24be=t.u16be=t.nu64=t.u48=t.u40=t.u32=t.u24=t.u16=t.u8=t.offset=t.greedy=t.Constant=t.UTF8=t.CString=t.Blob=t.Boolean=t.BitField=t.BitStructure=t.VariantLayout=t.Union=t.UnionLayoutDiscriminator=t.UnionDiscriminator=t.Structure=t.Sequence=t.DoubleBE=t.Double=t.FloatBE=t.Float=t.NearInt64BE=t.NearInt64=t.NearUInt64BE=t.NearUInt64=t.IntBE=t.Int=t.UIntBE=t.UInt=t.OffsetLayout=t.GreedyCount=t.ExternalLayout=t.bindConstructorLayout=t.nameWithProperty=t.Layout=t.uint8ArrayToBuffer=t.checkUint8Array=void 0,t.constant=t.utf8=t.cstr=t.blob=t.unionLayoutDiscriminator=t.union=t.seq=t.bits=t.struct=t.f64be=t.f64=t.f32be=t.f32=t.ns64be=t.s48be=t.s40be=t.s32be=t.s24be=t.s16be=t.ns64=t.s48=t.s40=t.s32=t.s24=void 0;const i=n(55872);function r(e){if(!(e instanceof Uint8Array))throw new TypeError("b must be a Uint8Array")}function o(e){return r(e),i.Buffer.from(e.buffer,e.byteOffset,e.length)}t.checkUint8Array=r,t.uint8ArrayToBuffer=o;class A{constructor(e,t){if(!Number.isInteger(e))throw new TypeError("span must be an integer");this.span=e,this.property=t}makeDestinationObject(){return{}}getSpan(e,t){if(0>this.span)throw new RangeError("indeterminate span");return this.span}replicate(e){const t=Object.create(this.constructor.prototype);return Object.assign(t,this),t.property=e,t}fromArray(e){}}function s(e,t){return t.property?e+"["+t.property+"]":e}t.Layout=A,t.nameWithProperty=s,t.bindConstructorLayout=function(e,t){if("function"!=typeof e)throw new TypeError("Class must be constructor");if(Object.prototype.hasOwnProperty.call(e,"layout_"))throw new Error("Class is already bound to a layout");if(!(t&&t instanceof A))throw new TypeError("layout must be a Layout");if(Object.prototype.hasOwnProperty.call(t,"boundConstructor_"))throw new Error("layout is already bound to a constructor");e.layout_=t,t.boundConstructor_=e,t.makeDestinationObject=()=>new e,Object.defineProperty(e.prototype,"encode",{value(e,n){return t.encode(this,e,n)},writable:!0}),Object.defineProperty(e,"decode",{value:(e,n)=>t.decode(e,n),writable:!0})};class a extends A{isCount(){throw new Error("ExternalLayout is abstract")}}t.ExternalLayout=a;class c extends a{constructor(e=1,t){if(!Number.isInteger(e)||0>=e)throw new TypeError("elementSpan must be a (positive) integer");super(-1,t),this.elementSpan=e}isCount(){return!0}decode(e,t=0){r(e);const n=e.length-t;return Math.floor(n/this.elementSpan)}encode(e,t,n){return 0}}t.GreedyCount=c;class u extends a{constructor(e,t=0,n){if(!(e instanceof A))throw new TypeError("layout must be a Layout");if(!Number.isInteger(t))throw new TypeError("offset must be integer or undefined");super(e.span,n||e.property),this.layout=e,this.offset=t}isCount(){return this.layout instanceof l||this.layout instanceof g}decode(e,t=0){return this.layout.decode(e,t+this.offset)}encode(e,t,n=0){return this.layout.encode(e,t,n+this.offset)}}t.OffsetLayout=u;class l extends A{constructor(e,t){if(super(e,t),6e+i.encode(r,t,n+e)),0);return this.count instanceof a&&this.count.encode(e.length,t,n),r}}t.Sequence=k;class v extends A{constructor(e,t,n){if(!Array.isArray(e)||!e.reduce(((e,t)=>e&&t instanceof A),!0))throw new TypeError("fields must be array of Layout instances");"boolean"==typeof t&&void 0===n&&(n=t,t=void 0);for(const t of e)if(0>t.span&&void 0===t.property)throw new Error("fields cannot contain unnamed variable-length layout");let i=-1;try{i=e.reduce(((e,t)=>e+t.getSpan()),0)}catch(e){}super(i,t),this.fields=e,this.decodePrefixes=!!n}getSpan(e,t=0){if(0<=this.span)return this.span;let n=0;try{n=this.fields.reduce(((n,i)=>{const r=i.getSpan(e,t);return t+=r,n+r}),0)}catch(e){throw new RangeError("indeterminate span")}return n}decode(e,t=0){r(e);const n=this.makeDestinationObject();for(const i of this.fields)if(void 0!==i.property&&(n[i.property]=i.decode(e,t)),t+=i.getSpan(e,t),this.decodePrefixes&&e.length===t)break;return n}encode(e,t,n=0){const i=n;let r=0,o=0;for(const i of this.fields){let A=i.span;if(o=0A&&(A=i.getSpan(t,n)))}r=n,n+=A}return r+o-i}fromArray(e){const t=this.makeDestinationObject();for(const n of this.fields)void 0!==n.property&&0n.span?t=-1:0<=t&&(t+=n.span)}}}t.Structure=v;class S{constructor(e){this.property=e}decode(e,t){throw new Error("UnionDiscriminator is abstract")}encode(e,t,n){throw new Error("UnionDiscriminator is abstract")}}t.UnionDiscriminator=S;class M extends S{constructor(e,t){if(!(e instanceof a&&e.isCount()))throw new TypeError("layout must be an unsigned integer ExternalLayout");super(t||e.property||"variant"),this.layout=e}decode(e,t){return this.layout.decode(e,t)}encode(e,t,n){return this.layout.encode(e,t,n)}}t.UnionLayoutDiscriminator=M;class D extends A{constructor(e,t,n){let i;if(e instanceof l||e instanceof g)i=new M(new u(e));else if(e instanceof a&&e.isCount())i=new M(e);else{if(!(e instanceof S))throw new TypeError("discr must be a UnionDiscriminator or an unsigned integer layout");i=e}if(void 0===t&&(t=null),!(null===t||t instanceof A))throw new TypeError("defaultLayout must be null or a Layout");if(null!==t){if(0>t.span)throw new Error("defaultLayout must have constant span");void 0===t.property&&(t=t.replicate("content"))}let r=-1;t&&(r=t.span,0<=r&&(e instanceof l||e instanceof g)&&(r+=i.layout.span)),super(r,n),this.discriminator=i,this.usesPrefixDiscriminator=e instanceof l||e instanceof g,this.defaultLayout=t,this.registry={};let o=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(e){return o(e)},this.configGetSourceVariant=function(e){o=e.bind(this)}}getSpan(e,t=0){if(0<=this.span)return this.span;const n=this.getVariant(e,t);if(!n)throw new Error("unable to determine span for unrecognized variant");return n.getSpan(e,t)}defaultGetSourceVariant(e){if(Object.prototype.hasOwnProperty.call(e,this.discriminator.property)){if(this.defaultLayout&&this.defaultLayout.property&&Object.prototype.hasOwnProperty.call(e,this.defaultLayout.property))return;const t=this.registry[e[this.discriminator.property]];if(t&&(!t.layout||t.property&&Object.prototype.hasOwnProperty.call(e,t.property)))return t}else for(const t in this.registry){const n=this.registry[t];if(n.property&&Object.prototype.hasOwnProperty.call(e,n.property))return n}throw new Error("unable to infer src variant")}decode(e,t=0){let n;const i=this.discriminator,r=i.decode(e,t),o=this.registry[r];if(void 0===o){const o=this.defaultLayout;let A=0;this.usesPrefixDiscriminator&&(A=i.layout.span),n=this.makeDestinationObject(),n[i.property]=r,n[o.property]=o.decode(e,t+A)}else n=o.decode(e,t);return n}encode(e,t,n=0){const i=this.getSourceVariant(e);if(void 0===i){const i=this.discriminator,r=this.defaultLayout;let o=0;return this.usesPrefixDiscriminator&&(o=i.layout.span),i.encode(e[i.property],t,n),o+r.encode(e[r.property],t,n+o)}return i.encode(e,t,n)}addVariant(e,t,n){const i=new N(this,e,t,n);return this.registry[e]=i,i}getVariant(e,t=0){let n;return n=e instanceof Uint8Array?this.discriminator.decode(e,t):e,this.registry[n]}}t.Union=D;class N extends A{constructor(e,t,n,i){if(!(e instanceof D))throw new TypeError("union must be a Union");if(!Number.isInteger(t)||0>t)throw new TypeError("variant must be a (non-negative) integer");if("string"==typeof n&&void 0===i&&(i=n,n=null),n){if(!(n instanceof A))throw new TypeError("layout must be a Layout");if(null!==e.defaultLayout&&0<=n.span&&n.span>e.defaultLayout.span)throw new Error("variant span exceeds span of containing union");if("string"!=typeof i)throw new TypeError("variant must have a String property")}let r=e.span;0>e.span&&(r=n?n.span:0,0<=r&&e.usesPrefixDiscriminator&&(r+=e.discriminator.layout.span)),super(r,i),this.union=e,this.variant=t,this.layout=n||null}getSpan(e,t=0){if(0<=this.span)return this.span;let n=0;this.union.usesPrefixDiscriminator&&(n=this.union.discriminator.layout.span);let i=0;return this.layout&&(i=this.layout.getSpan(e,t+n)),n+i}decode(e,t=0){const n=this.makeDestinationObject();if(this!==this.union.getVariant(e,t))throw new Error("variant mismatch");let i=0;return this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout?n[this.property]=this.layout.decode(e,t+i):this.property?n[this.property]=!0:this.union.usesPrefixDiscriminator&&(n[this.union.discriminator.property]=this.variant),n}encode(e,t,n=0){let i=0;if(this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout&&!Object.prototype.hasOwnProperty.call(e,this.property))throw new TypeError("variant lacks property "+this.property);this.union.discriminator.encode(this.variant,t,n);let r=i;if(this.layout&&(this.layout.encode(e[this.property],t,n+i),r+=this.layout.getSpan(t,n+i),0<=this.union.span&&r>this.union.span))throw new Error("encoded variant overruns containing union");return r}fromArray(e){if(this.layout)return this.layout.fromArray(e)}}function T(e){return 0>e&&(e+=4294967296),e}t.VariantLayout=N;class P extends A{constructor(e,t,n){if(!(e instanceof l||e instanceof g))throw new TypeError("word must be a UInt or UIntBE layout");if("string"==typeof t&&void 0===n&&(n=t,t=!1),4=t)throw new TypeError("bits must be positive integer");const i=8*e.span,r=e.fields.reduce(((e,t)=>e+t.bits),0);if(t+r>i)throw new Error("bits too long for span remainder ("+(i-r)+" of "+i+" remain)");this.container=e,this.bits=t,this.valueMask=(1<>>this.start}encode(e){if("number"!=typeof e||!Number.isInteger(e)||e!==T(e&this.valueMask))throw new TypeError(s("BitField.encode",this)+" value must be integer not exceeding "+this.valueMask);const t=this.container._packedGetValue(),n=T(e<n&&(n=this.length.decode(e,t)),n}decode(e,t=0){let n=this.span;return 0>n&&(n=this.length.decode(e,t)),o(e).slice(t,t+n)}encode(e,t,n){let i=this.length;if(this.length instanceof a&&(i=e.length),!(e instanceof Uint8Array&&i===e.length))throw new TypeError(s("Blob.encode",this)+" requires (length "+i+") Uint8Array as src");if(n+i>t.length)throw new RangeError("encoding overruns Uint8Array");const r=o(e);return o(t).write(r.toString("hex"),n,i,"hex"),this.length instanceof a&&this.length.encode(i,t,n),i}}t.Blob=R;class G extends A{constructor(e){super(-1,e)}getSpan(e,t=0){r(e);let n=t;for(;nt.length)throw new RangeError("encoding overruns Buffer");const s=o(t);return r.copy(s,n),s[n+A]=0,A+1}}t.CString=G;class x extends A{constructor(e,t){if("string"==typeof e&&void 0===t&&(t=e,e=void 0),void 0===e)e=-1;else if(!Number.isInteger(e))throw new TypeError("maxSpan must be an integer");super(-1,t),this.maxSpan=e}getSpan(e,t=0){return r(e),e.length-t}decode(e,t=0){const n=this.getSpan(e,t);if(0<=this.maxSpan&&this.maxSpant.length)throw new RangeError("encoding overruns Buffer");return r.copy(o(t),n),A}}t.UTF8=x;class U extends A{constructor(e,t){super(0,t),this.value=e}decode(e,t){return this.value}encode(e,t,n){return 0}}t.Constant=U,t.greedy=(e,t)=>new c(e,t),t.offset=(e,t,n)=>new u(e,t,n),t.u8=e=>new l(1,e),t.u16=e=>new l(2,e),t.u24=e=>new l(3,e),t.u32=e=>new l(4,e),t.u40=e=>new l(5,e),t.u48=e=>new l(6,e),t.nu64=e=>new I(e),t.u16be=e=>new g(2,e),t.u24be=e=>new g(3,e),t.u32be=e=>new g(4,e),t.u40be=e=>new g(5,e),t.u48be=e=>new g(6,e),t.nu64be=e=>new y(e),t.s8=e=>new d(1,e),t.s16=e=>new d(2,e),t.s24=e=>new d(3,e),t.s32=e=>new d(4,e),t.s40=e=>new d(5,e),t.s48=e=>new d(6,e),t.ns64=e=>new B(e),t.s16be=e=>new h(2,e),t.s24be=e=>new h(3,e),t.s32be=e=>new h(4,e),t.s40be=e=>new h(5,e),t.s48be=e=>new h(6,e),t.ns64be=e=>new C(e),t.f32=e=>new w(e),t.f32be=e=>new E(e),t.f64=e=>new Q(e),t.f64be=e=>new b(e),t.struct=(e,t,n)=>new v(e,t,n),t.bits=(e,t,n)=>new P(e,t,n),t.seq=(e,t,n)=>new k(e,t,n),t.union=(e,t,n)=>new D(e,t,n),t.unionLayoutDiscriminator=(e,t)=>new M(e,t),t.blob=(e,t)=>new R(e,t),t.cstr=e=>new G(e),t.utf8=(e,t)=>new x(e,t),t.constant=(e,t)=>new U(e,t)},59985:(e,t,n)=>{"use strict";n.r(t),n.d(t,{CDNTokenListResolutionStrategy:()=>u,CLUSTER_SLUGS:()=>a,ENV:()=>i,GitHubTokenListResolutionStrategy:()=>c,SolanaTokenListResolutionStrategy:()=>l,StaticTokenListResolutionStrategy:()=>h,Strategy:()=>d,TokenListContainer:()=>f,TokenListProvider:()=>p});var i,r=n(13609),o=n(20283),A=n.n(o),s=n(49500);!function(e){e[e.MainnetBeta=101]="MainnetBeta",e[e.Testnet=102]="Testnet",e[e.Devnet=103]="Devnet"}(i||(i={}));const a={"mainnet-beta":i.MainnetBeta,testnet:i.Testnet,devnet:i.Devnet};class c{constructor(){this.repositories=["https://raw.githubusercontent.com/solana-labs/token-list/main/src/tokens/solana.tokenlist.json"],this.resolve=()=>g(this.repositories)}}class u{constructor(){this.repositories=["https://cdn.jsdelivr.net/gh/solana-labs/token-list@latest/src/tokens/solana.tokenlist.json"],this.resolve=()=>g(this.repositories)}}class l{constructor(){this.repositories=["https://token-list.solana.com/solana.tokenlist.json"],this.resolve=()=>g(this.repositories)}}const g=async e=>(await Promise.all(e.map((async e=>{try{const t=await(0,r.fetch)(e);return await t.json()}catch{return s.info("@solana/token-registry: falling back to static repository."),A()}})))).map((e=>e.tokens||[])).reduce(((e,t)=>e.concat(t)),[]);var d;!function(e){e.GitHub="GitHub",e.Static="Static",e.Solana="Solana",e.CDN="CDN"}(d||(d={}));class h{constructor(){this.resolve=()=>A().tokens||[]}}class p{constructor(){this.resolve=async(e=d.CDN)=>new f(await p.strategies[e].resolve())}}p.strategies={[d.GitHub]:new c,[d.Static]:new h,[d.Solana]:new l,[d.CDN]:new u};class f{constructor(e){this.tokenList=e,this.filterByTag=e=>new f(this.tokenList.filter((t=>(t.tags||[]).includes(e)))),this.filterByChainId=e=>new f(this.tokenList.filter((t=>t.chainId===e))),this.excludeByChainId=e=>new f(this.tokenList.filter((t=>t.chainId!==e))),this.excludeByTag=e=>new f(this.tokenList.filter((t=>!(t.tags||[]).includes(e)))),this.filterByClusterSlug=e=>{if(e in a)return this.filterByChainId(a[e]);throw new Error(`Unknown slug: ${e}, please use one of ${Object.keys(a)}`)},this.getList=()=>this.tokenList}}},76604:(e,t,n)=>{"use strict";function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}function r(e,t,n){return(t=function(e){var t=function(e,t){if("object"!==i(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t);if("object"!==i(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e,"string");return"symbol"===i(t)?t:String(t)}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.r(t),n.d(t,{ASSOCIATED_TOKEN_PROGRAM_ID:()=>He,AccountLayout:()=>ot,MintLayout:()=>rt,NATIVE_MINT:()=>it,TOKEN_PROGRAM_ID:()=>ze,Token:()=>st,u64:()=>et});for(var o=n(39098),A=n.n(o),s=n(97212),a=n(49500),c={},u={byteLength:function(e){var t=m(e),n=t[0],i=t[1];return 3*(n+i)/4-i},toByteArray:function(e){var t,n,i=m(e),r=i[0],o=i[1],A=new d(function(e,t,n){return 3*(t+n)/4-n}(0,r,o)),s=0,a=o>0?r-4:r;for(n=0;n>16&255,A[s++]=t>>8&255,A[s++]=255&t;return 2===o&&(t=g[e.charCodeAt(n)]<<2|g[e.charCodeAt(n+1)]>>4,A[s++]=255&t),1===o&&(t=g[e.charCodeAt(n)]<<10|g[e.charCodeAt(n+1)]<<4|g[e.charCodeAt(n+2)]>>2,A[s++]=t>>8&255,A[s++]=255&t),A},fromByteArray:function(e){for(var t,n=e.length,i=n%3,r=[],o=16383,A=0,s=n-i;As?s:A+o));return 1===i?(t=e[n-1],r.push(l[t>>2]+l[t<<4&63]+"==")):2===i&&(t=(e[n-2]<<8)+e[n-1],r.push(l[t>>10]+l[t>>4&63]+l[t<<2&63]+"=")),r.join("")}},l=[],g=[],d="undefined"!=typeof Uint8Array?Uint8Array:Array,h="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",p=0,f=h.length;p0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function I(e,t,n){for(var i,r,o=[],A=t;A>18&63]+l[r>>12&63]+l[r>>6&63]+l[63&r]);return o.join("")}g["-".charCodeAt(0)]=62,g["_".charCodeAt(0)]=63;var y={read:function(e,t,n,i,r){var o,A,s=8*r-i-1,a=(1<>1,u=-7,l=n?r-1:0,g=n?-1:1,d=e[t+l];for(l+=g,o=d&(1<<-u)-1,d>>=-u,u+=s;u>0;o=256*o+e[t+l],l+=g,u-=8);for(A=o&(1<<-u)-1,o>>=-u,u+=i;u>0;A=256*A+e[t+l],l+=g,u-=8);if(0===o)o=1-c;else{if(o===a)return A?NaN:1/0*(d?-1:1);A+=Math.pow(2,i),o-=c}return(d?-1:1)*A*Math.pow(2,o-i)},write:function(e,t,n,i,r,o){var A,s,a,c=8*o-r-1,u=(1<>1,g=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,d=i?0:o-1,h=i?1:-1,p=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,A=u):(A=Math.floor(Math.log(t)/Math.LN2),t*(a=Math.pow(2,-A))<1&&(A--,a*=2),(t+=A+l>=1?g/a:g*Math.pow(2,1-l))*a>=2&&(A++,a/=2),A+l>=u?(s=0,A=u):A+l>=1?(s=(t*a-1)*Math.pow(2,r),A+=l):(s=t*Math.pow(2,l-1)*Math.pow(2,r),A=0));r>=8;e[n+d]=255&s,d+=h,s/=256,r-=8);for(A=A<0;e[n+d]=255&A,d+=h,A/=256,c-=8);e[n+d-h]|=128*p}};!function(e){const t=u,n=y,i="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;e.Buffer=A,e.SlowBuffer=function(e){return+e!=e&&(e=0),A.alloc(+e)},e.INSPECT_MAX_BYTES=50;const r=2147483647;function o(e){if(e>r)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,A.prototype),t}function A(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return l(e)}return s(e,t,n)}function s(e,t,n){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!A.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const n=0|p(e,t);let i=o(n);const r=i.write(e,t);return r!==n&&(i=i.slice(0,r)),i}(e,t);if(ArrayBuffer.isView(e))return function(e){if(H(e,Uint8Array)){const t=new Uint8Array(e);return d(t.buffer,t.byteOffset,t.byteLength)}return g(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(H(e,ArrayBuffer)||e&&H(e.buffer,ArrayBuffer))return d(e,t,n);if("undefined"!=typeof SharedArrayBuffer&&(H(e,SharedArrayBuffer)||e&&H(e.buffer,SharedArrayBuffer)))return d(e,t,n);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const i=e.valueOf&&e.valueOf();if(null!=i&&i!==e)return A.from(i,t,n);const r=function(e){if(A.isBuffer(e)){const t=0|h(e.length),n=o(t);return 0===n.length||e.copy(n,0,0,t),n}return void 0!==e.length?"number"!=typeof e.length||V(e.length)?o(0):g(e):"Buffer"===e.type&&Array.isArray(e.data)?g(e.data):void 0}(e);if(r)return r;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return A.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function c(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function l(e){return c(e),o(e<0?0:0|h(e))}function g(e){const t=e.length<0?0:0|h(e.length),n=o(t);for(let i=0;i=r)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+r.toString(16)+" bytes");return 0|e}function p(e,t){if(A.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||H(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const n=e.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===n)return 0;let r=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return q(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return Z(e).length;default:if(r)return i?-1:q(e).length;t=(""+t).toLowerCase(),r=!0}}function f(e,t,n){let i=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return N(this,t,n);case"utf8":case"utf-8":return v(this,t,n);case"ascii":return M(this,t,n);case"latin1":case"binary":return D(this,t,n);case"base64":return k(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,n);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),i=!0}}function m(e,t,n){const i=e[t];e[t]=e[n],e[n]=i}function I(e,t,n,i,r){if(0===e.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),V(n=+n)&&(n=r?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(r)return-1;n=e.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof t&&(t=A.from(t,i)),A.isBuffer(t))return 0===t.length?-1:B(e,t,n,i,r);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):B(e,[t],n,i,r);throw new TypeError("val must be string, number or Buffer")}function B(e,t,n,i,r){let o,A=1,s=e.length,a=t.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||t.length<2)return-1;A=2,s/=2,a/=2,n/=2}function c(e,t){return 1===A?e[t]:e.readUInt16BE(t*A)}if(r){let i=-1;for(o=n;os&&(n=s-a),o=n;o>=0;o--){let n=!0;for(let i=0;ir&&(i=r):i=r;const o=t.length;let A;for(i>o/2&&(i=o/2),A=0;A>8,r=n%256,o.push(r),o.push(i);return o}(t,e.length-n),e,n,i)}function k(e,n,i){return 0===n&&i===e.length?t.fromByteArray(e):t.fromByteArray(e.slice(n,i))}function v(e,t,n){n=Math.min(e.length,n);const i=[];let r=t;for(;r239?4:t>223?3:t>191?2:1;if(r+A<=n){let n,i,s,a;switch(A){case 1:t<128&&(o=t);break;case 2:n=e[r+1],128==(192&n)&&(a=(31&t)<<6|63&n,a>127&&(o=a));break;case 3:n=e[r+1],i=e[r+2],128==(192&n)&&128==(192&i)&&(a=(15&t)<<12|(63&n)<<6|63&i,a>2047&&(a<55296||a>57343)&&(o=a));break;case 4:n=e[r+1],i=e[r+2],s=e[r+3],128==(192&n)&&128==(192&i)&&128==(192&s)&&(a=(15&t)<<18|(63&n)<<12|(63&i)<<6|63&s,a>65535&&a<1114112&&(o=a))}}null===o?(o=65533,A=1):o>65535&&(o-=65536,i.push(o>>>10&1023|55296),o=56320|1023&o),i.push(o),r+=A}return function(e){const t=e.length;if(t<=S)return String.fromCharCode.apply(String,e);let n="",i=0;for(;ii.length?(A.isBuffer(t)||(t=A.from(t)),t.copy(i,r)):Uint8Array.prototype.set.call(i,t,r);else{if(!A.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(i,r)}r+=t.length}return i},A.byteLength=p,A.prototype._isBuffer=!0,A.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tn&&(t+=" ... "),""},i&&(A.prototype[i]=A.prototype.inspect),A.prototype.compare=function(e,t,n,i,r){if(H(e,Uint8Array)&&(e=A.from(e,e.offset,e.byteLength)),!A.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),t<0||n>e.length||i<0||r>this.length)throw new RangeError("out of range index");if(i>=r&&t>=n)return 0;if(i>=r)return-1;if(t>=n)return 1;if(this===e)return 0;let o=(r>>>=0)-(i>>>=0),s=(n>>>=0)-(t>>>=0);const a=Math.min(o,s),c=this.slice(i,r),u=e.slice(t,n);for(let e=0;e>>=0,isFinite(n)?(n>>>=0,void 0===i&&(i="utf8")):(i=n,n=void 0)}const r=this.length-t;if((void 0===n||n>r)&&(n=r),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let o=!1;for(;;)switch(i){case"hex":return C(this,e,t,n);case"utf8":case"utf-8":return w(this,e,t,n);case"ascii":case"latin1":case"binary":return E(this,e,t,n);case"base64":return Q(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return b(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},A.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const S=4096;function M(e,t,n){let i="";n=Math.min(e.length,n);for(let r=t;ri)&&(n=i);let r="";for(let i=t;in)throw new RangeError("Trying to access beyond buffer length")}function O(e,t,n,i,r,o){if(!A.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>r||te.length)throw new RangeError("Index out of range")}function F(e,t,n,i,r){Y(t,i,r,e,n,7);let o=Number(t&BigInt(4294967295));e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o;let A=Number(t>>BigInt(32)&BigInt(4294967295));return e[n++]=A,A>>=8,e[n++]=A,A>>=8,e[n++]=A,A>>=8,e[n++]=A,n}function R(e,t,n,i,r){Y(t,i,r,e,n,7);let o=Number(t&BigInt(4294967295));e[n+7]=o,o>>=8,e[n+6]=o,o>>=8,e[n+5]=o,o>>=8,e[n+4]=o;let A=Number(t>>BigInt(32)&BigInt(4294967295));return e[n+3]=A,A>>=8,e[n+2]=A,A>>=8,e[n+1]=A,A>>=8,e[n]=A,n+8}function G(e,t,n,i,r,o){if(n+i>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function x(e,t,i,r,o){return t=+t,i>>>=0,o||G(e,0,i,4),n.write(e,t,i,r,23,4),i+4}function U(e,t,i,r,o){return t=+t,i>>>=0,o||G(e,0,i,8),n.write(e,t,i,r,52,8),i+8}A.prototype.slice=function(e,t){const n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,n||P(e,t,this.length);let i=this[e],r=1,o=0;for(;++o>>=0,t>>>=0,n||P(e,t,this.length);let i=this[e+--t],r=1;for(;t>0&&(r*=256);)i+=this[e+--t]*r;return i},A.prototype.readUint8=A.prototype.readUInt8=function(e,t){return e>>>=0,t||P(e,1,this.length),this[e]},A.prototype.readUint16LE=A.prototype.readUInt16LE=function(e,t){return e>>>=0,t||P(e,2,this.length),this[e]|this[e+1]<<8},A.prototype.readUint16BE=A.prototype.readUInt16BE=function(e,t){return e>>>=0,t||P(e,2,this.length),this[e]<<8|this[e+1]},A.prototype.readUint32LE=A.prototype.readUInt32LE=function(e,t){return e>>>=0,t||P(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},A.prototype.readUint32BE=A.prototype.readUInt32BE=function(e,t){return e>>>=0,t||P(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},A.prototype.readBigUInt64LE=$((function(e){j(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||W(e,this.length-8);const i=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,r=this[++e]+256*this[++e]+65536*this[++e]+n*2**24;return BigInt(i)+(BigInt(r)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||W(e,this.length-8);const i=t*2**24+65536*this[++e]+256*this[++e]+this[++e],r=this[++e]*2**24+65536*this[++e]+256*this[++e]+n;return(BigInt(i)<>>=0,t>>>=0,n||P(e,t,this.length);let i=this[e],r=1,o=0;for(;++o=r&&(i-=Math.pow(2,8*t)),i},A.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||P(e,t,this.length);let i=t,r=1,o=this[e+--i];for(;i>0&&(r*=256);)o+=this[e+--i]*r;return r*=128,o>=r&&(o-=Math.pow(2,8*t)),o},A.prototype.readInt8=function(e,t){return e>>>=0,t||P(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},A.prototype.readInt16LE=function(e,t){e>>>=0,t||P(e,2,this.length);const n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},A.prototype.readInt16BE=function(e,t){e>>>=0,t||P(e,2,this.length);const n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},A.prototype.readInt32LE=function(e,t){return e>>>=0,t||P(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},A.prototype.readInt32BE=function(e,t){return e>>>=0,t||P(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},A.prototype.readBigInt64LE=$((function(e){j(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||W(e,this.length-8);const i=this[e+4]+256*this[e+5]+65536*this[e+6]+(n<<24);return(BigInt(i)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||W(e,this.length-8);const i=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(i)<>>=0,t||P(e,4,this.length),n.read(this,e,!0,23,4)},A.prototype.readFloatBE=function(e,t){return e>>>=0,t||P(e,4,this.length),n.read(this,e,!1,23,4)},A.prototype.readDoubleLE=function(e,t){return e>>>=0,t||P(e,8,this.length),n.read(this,e,!0,52,8)},A.prototype.readDoubleBE=function(e,t){return e>>>=0,t||P(e,8,this.length),n.read(this,e,!1,52,8)},A.prototype.writeUintLE=A.prototype.writeUIntLE=function(e,t,n,i){e=+e,t>>>=0,n>>>=0,i||O(this,e,t,n,Math.pow(2,8*n)-1,0);let r=1,o=0;for(this[t]=255&e;++o>>=0,n>>>=0,i||O(this,e,t,n,Math.pow(2,8*n)-1,0);let r=n-1,o=1;for(this[t+r]=255&e;--r>=0&&(o*=256);)this[t+r]=e/o&255;return t+n},A.prototype.writeUint8=A.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,1,255,0),this[t]=255&e,t+1},A.prototype.writeUint16LE=A.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},A.prototype.writeUint16BE=A.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},A.prototype.writeUint32LE=A.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},A.prototype.writeUint32BE=A.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},A.prototype.writeBigUInt64LE=$((function(e,t=0){return F(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),A.prototype.writeBigUInt64BE=$((function(e,t=0){return R(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),A.prototype.writeIntLE=function(e,t,n,i){if(e=+e,t>>>=0,!i){const i=Math.pow(2,8*n-1);O(this,e,t,n,i-1,-i)}let r=0,o=1,A=0;for(this[t]=255&e;++r>0)-A&255;return t+n},A.prototype.writeIntBE=function(e,t,n,i){if(e=+e,t>>>=0,!i){const i=Math.pow(2,8*n-1);O(this,e,t,n,i-1,-i)}let r=n-1,o=1,A=0;for(this[t+r]=255&e;--r>=0&&(o*=256);)e<0&&0===A&&0!==this[t+r+1]&&(A=1),this[t+r]=(e/o>>0)-A&255;return t+n},A.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},A.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},A.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},A.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},A.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},A.prototype.writeBigInt64LE=$((function(e,t=0){return F(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),A.prototype.writeBigInt64BE=$((function(e,t=0){return R(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),A.prototype.writeFloatLE=function(e,t,n){return x(this,e,t,!0,n)},A.prototype.writeFloatBE=function(e,t,n){return x(this,e,t,!1,n)},A.prototype.writeDoubleLE=function(e,t,n){return U(this,e,t,!0,n)},A.prototype.writeDoubleBE=function(e,t,n){return U(this,e,t,!1,n)},A.prototype.copy=function(e,t,n,i){if(!A.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(r=t;r=i+4;n-=3)t=`_${e.slice(n-3,n)}${t}`;return`${e.slice(0,n)}${t}`}function Y(e,t,n,i,r,o){if(e>n||e3?0===t||t===BigInt(0)?`>= 0${i} and < 2${i} ** ${8*(o+1)}${i}`:`>= -(2${i} ** ${8*(o+1)-1}${i}) and < 2 ** ${8*(o+1)-1}${i}`:`>= ${t}${i} and <= ${n}${i}`,new _.ERR_OUT_OF_RANGE("value",r,e)}!function(e,t,n){j(t,"offset"),void 0!==e[t]&&void 0!==e[t+n]||W(t,e.length-(n+1))}(i,r,o)}function j(e,t){if("number"!=typeof e)throw new _.ERR_INVALID_ARG_TYPE(t,"number",e)}function W(e,t,n){if(Math.floor(e)!==e)throw j(e,n),new _.ERR_OUT_OF_RANGE(n||"offset","an integer",e);if(t<0)throw new _.ERR_BUFFER_OUT_OF_BOUNDS;throw new _.ERR_OUT_OF_RANGE(n||"offset",`>= ${n?1:0} and <= ${t}`,e)}L("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),L("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),L("ERR_OUT_OF_RANGE",(function(e,t,n){let i=`The value of "${e}" is out of range.`,r=n;return Number.isInteger(n)&&Math.abs(n)>2**32?r=K(String(n)):"bigint"==typeof n&&(r=String(n),(n>BigInt(2)**BigInt(32)||n<-(BigInt(2)**BigInt(32)))&&(r=K(r)),r+="n"),i+=` It must be ${t}. Received ${r}`,i}),RangeError);const J=/[^+/0-9A-Za-z-_]/g;function q(e,t){let n;t=t||1/0;const i=e.length;let r=null;const o=[];for(let A=0;A55295&&n<57344){if(!r){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(A+1===i){(t-=3)>-1&&o.push(239,191,189);continue}r=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(t-=3)>-1&&o.push(239,191,189);if(r=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function Z(e){return t.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(J,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function z(e,t,n,i){let r;for(r=0;r=t.length||r>=e.length);++r)t[r+n]=e[r];return r}function H(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function V(e){return e!=e}const X=function(){const e="0123456789abcdef",t=new Array(256);for(let n=0;n<16;++n){const i=16*n;for(let r=0;r<16;++r)t[i+r]=e[n]+e[r]}return t}();function $(e){return"undefined"==typeof BigInt?ee:e}function ee(){throw new Error("BigInt not supported")}}(c);var B=void 0!==n.g?n.g:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},C="function"==typeof Object.create?function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})}:function(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e};function w(e,t){var n={seen:[],stylize:Q};return arguments.length>=3&&(n.depth=arguments[2]),arguments.length>=4&&(n.colors=arguments[3]),S(t)?n.showHidden=t:t&&U(n,t),N(n.showHidden)&&(n.showHidden=!1),N(n.depth)&&(n.depth=2),N(n.colors)&&(n.colors=!1),N(n.customInspect)&&(n.customInspect=!0),n.colors&&(n.stylize=E),b(n,e,n.depth)}function E(e,t){var n=w.styles[t];return n?"["+w.colors[n][0]+"m"+e+"["+w.colors[n][1]+"m":e}function Q(e,t){return e}function b(e,t,n){if(e.customInspect&&t&&R(t.inspect)&&t.inspect!==w&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(n,e);return D(i)||(i=b(e,i,n)),i}var r=function(e,t){if(N(t))return e.stylize("undefined","undefined");if(D(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}return"number"==typeof t?e.stylize(""+t,"number"):S(t)?e.stylize(""+t,"boolean"):M(t)?e.stylize("null","null"):void 0}(e,t);if(r)return r;var o=Object.keys(t),A=function(e){var t={};return e.forEach((function(e,n){t[e]=!0})),t}(o);if(e.showHidden&&(o=Object.getOwnPropertyNames(t)),F(t)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return k(t);if(0===o.length){if(R(t)){var s=t.name?": "+t.name:"";return e.stylize("[Function"+s+"]","special")}if(T(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(O(t))return e.stylize(Date.prototype.toString.call(t),"date");if(F(t))return k(t)}var a,c,u="",l=!1,g=["{","}"];return a=t,Array.isArray(a)&&(l=!0,g=["[","]"]),R(t)&&(u=" [Function"+(t.name?": "+t.name:"")+"]"),T(t)&&(u=" "+RegExp.prototype.toString.call(t)),O(t)&&(u=" "+Date.prototype.toUTCString.call(t)),F(t)&&(u=" "+k(t)),0!==o.length||l&&0!=t.length?n<0?T(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special"):(e.seen.push(t),c=l?function(e,t,n,i,r){for(var o=[],A=0,s=t.length;A60?n[0]+(""===t?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1]:n[0]+t+" "+e.join(", ")+" "+n[1]}(c,u,g)):g[0]+u+g[1]}function k(e){return"["+Error.prototype.toString.call(e)+"]"}function v(e,t,n,i,r,o){var A,s,a;if((a=Object.getOwnPropertyDescriptor(t,r)||{value:t[r]}).get?s=a.set?e.stylize("[Getter/Setter]","special"):e.stylize("[Getter]","special"):a.set&&(s=e.stylize("[Setter]","special")),_(i,r)||(A="["+r+"]"),s||(e.seen.indexOf(a.value)<0?(s=M(n)?b(e,a.value,null):b(e,a.value,n-1)).indexOf("\n")>-1&&(s=o?s.split("\n").map((function(e){return" "+e})).join("\n").substr(2):"\n"+s.split("\n").map((function(e){return" "+e})).join("\n")):s=e.stylize("[Circular]","special")),N(A)){if(o&&r.match(/^\d+$/))return s;(A=JSON.stringify(""+r)).match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(A=A.substr(1,A.length-2),A=e.stylize(A,"name")):(A=A.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),A=e.stylize(A,"string"))}return A+": "+s}function S(e){return"boolean"==typeof e}function M(e){return null===e}function D(e){return"string"==typeof e}function N(e){return void 0===e}function T(e){return P(e)&&"[object RegExp]"===x(e)}function P(e){return"object"==typeof e&&null!==e}function O(e){return P(e)&&"[object Date]"===x(e)}function F(e){return P(e)&&("[object Error]"===x(e)||e instanceof Error)}function R(e){return"function"==typeof e}function G(e){return null===e||"boolean"==typeof e||"number"==typeof e||"string"==typeof e||"symbol"==typeof e||void 0===e}function x(e){return Object.prototype.toString.call(e)}function U(e,t){if(!t||!P(t))return e;for(var n=Object.keys(t),i=n.length;i--;)e[n[i]]=t[n[i]];return e}function _(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function L(e,t){if(e===t)return 0;for(var n=e.length,i=t.length,r=0,o=Math.min(n,i);r=0){var A=i.indexOf("\n",o+1);i=i.substring(A+1)}this.stack=i}}}function $(e,t){return"string"==typeof e?e.length=0;s--)if(a[s]!==c[s])return!1;for(s=a.length-1;s>=0;s--)if(!ie(e[A=a[s]],t[A],n,i))return!1;return!0}(e,t,n,i))}return n?e===t:e==t}function re(e){return"[object Arguments]"==Object.prototype.toString.call(e)}function oe(e,t){if(!e||!t)return!1;if("[object RegExp]"==Object.prototype.toString.call(t))return t.test(e);try{if(e instanceof t)return!0}catch(e){}return!Error.isPrototypeOf(t)&&!0===t.call({},e)}function Ae(e,t,n,i){var r;if("function"!=typeof t)throw new TypeError('"block" argument must be a function');"string"==typeof n&&(i=n,n=null),r=function(e){var t;try{e()}catch(e){t=e}return t}(t),i=(n&&n.name?" ("+n.name+").":".")+(i?" "+i:"."),e&&!r&&te(r,n,"Missing expected exception"+i);var o="string"==typeof i,A=!e&&r&&!n;if((!e&&F(r)&&o&&oe(r,n)||A)&&te(r,n,"Got unwanted exception"+i),e&&r&&n&&!oe(r,n)||!e&&r)throw r}z.AssertionError=X,C(X,Error),z.fail=te,z.ok=ne,z.equal=function e(t,n,i){t!=n&&te(t,n,i,"==",e)},z.notEqual=function e(t,n,i){t==n&&te(t,n,i,"!=",e)},z.deepEqual=function e(t,n,i){ie(t,n,!1)||te(t,n,i,"deepEqual",e)},z.deepStrictEqual=function e(t,n,i){ie(t,n,!0)||te(t,n,i,"deepStrictEqual",e)},z.notDeepEqual=function e(t,n,i){ie(t,n,!1)&&te(t,n,i,"notDeepEqual",e)},z.notDeepStrictEqual=function e(t,n,i){ie(t,n,!0)&&te(t,n,i,"notDeepStrictEqual",e)},z.strictEqual=function e(t,n,i){t!==n&&te(t,n,i,"===",e)},z.notStrictEqual=function e(t,n,i){t===n&&te(t,n,i,"!==",e)},z.throws=function(e,t,n){Ae(!0,e,t,n)},z.doesNotThrow=function(e,t,n){Ae(!1,e,t,n)},z.ifError=function(e){if(e)throw e};var se={};class ae{constructor(e,t){if(!Number.isInteger(e))throw new TypeError("span must be an integer");this.span=e,this.property=t}makeDestinationObject(){return{}}decode(e,t){throw new Error("Layout is abstract")}encode(e,t,n){throw new Error("Layout is abstract")}getSpan(e,t){if(0>this.span)throw new RangeError("indeterminate span");return this.span}replicate(e){const t=Object.create(this.constructor.prototype);return Object.assign(t,this),t.property=e,t}fromArray(e){}}function ce(e,t){return t.property?e+"["+t.property+"]":e}se.Layout=ae,se.nameWithProperty=ce,se.bindConstructorLayout=function(e,t){if("function"!=typeof e)throw new TypeError("Class must be constructor");if(e.hasOwnProperty("layout_"))throw new Error("Class is already bound to a layout");if(!(t&&t instanceof ae))throw new TypeError("layout must be a Layout");if(t.hasOwnProperty("boundConstructor_"))throw new Error("layout is already bound to a constructor");e.layout_=t,t.boundConstructor_=e,t.makeDestinationObject=()=>new e,Object.defineProperty(e.prototype,"encode",{value:function(e,n){return t.encode(this,e,n)},writable:!0}),Object.defineProperty(e,"decode",{value:function(e,n){return t.decode(e,n)},writable:!0})};class ue extends ae{isCount(){throw new Error("ExternalLayout is abstract")}}class le extends ue{constructor(e,t){if(void 0===e&&(e=1),!Number.isInteger(e)||0>=e)throw new TypeError("elementSpan must be a (positive) integer");super(-1,t),this.elementSpan=e}isCount(){return!0}decode(e,t){void 0===t&&(t=0);const n=e.length-t;return Math.floor(n/this.elementSpan)}encode(e,t,n){return 0}}class ge extends ue{constructor(e,t,n){if(!(e instanceof ae))throw new TypeError("layout must be a Layout");if(void 0===t)t=0;else if(!Number.isInteger(t))throw new TypeError("offset must be integer or undefined");super(e.span,n||e.property),this.layout=e,this.offset=t}isCount(){return this.layout instanceof de||this.layout instanceof he}decode(e,t){return void 0===t&&(t=0),this.layout.decode(e,t+this.offset)}encode(e,t,n){return void 0===n&&(n=0),this.layout.encode(e,t,n+this.offset)}}class de extends ae{constructor(e,t){if(super(e,t),6e+i.encode(r,t,n+e)),0);return this.count instanceof ue&&this.count.encode(e.length,t,n),r}}class Me extends ae{constructor(e,t,n){if(!Array.isArray(e)||!e.reduce(((e,t)=>e&&t instanceof ae),!0))throw new TypeError("fields must be array of Layout instances");"boolean"==typeof t&&void 0===n&&(n=t,t=void 0);for(const t of e)if(0>t.span&&void 0===t.property)throw new Error("fields cannot contain unnamed variable-length layout");let i=-1;try{i=e.reduce(((e,t)=>e+t.getSpan()),0)}catch(e){}super(i,t),this.fields=e,this.decodePrefixes=!!n}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);let n=0;try{n=this.fields.reduce(((n,i)=>{const r=i.getSpan(e,t);return t+=r,n+r}),0)}catch(e){throw new RangeError("indeterminate span")}return n}decode(e,t){void 0===t&&(t=0);const n=this.makeDestinationObject();for(const i of this.fields)if(void 0!==i.property&&(n[i.property]=i.decode(e,t)),t+=i.getSpan(e,t),this.decodePrefixes&&e.length===t)break;return n}encode(e,t,n){void 0===n&&(n=0);const i=n;let r=0,o=0;for(const i of this.fields){let A=i.span;if(o=0A&&(A=i.getSpan(t,n)))}r=n,n+=A}return r+o-i}fromArray(e){const t=this.makeDestinationObject();for(const n of this.fields)void 0!==n.property&&0n.span?t=-1:0<=t&&(t+=n.span)}}}class De{constructor(e){this.property=e}decode(){throw new Error("UnionDiscriminator is abstract")}encode(){throw new Error("UnionDiscriminator is abstract")}}class Ne extends De{constructor(e,t){if(!(e instanceof ue&&e.isCount()))throw new TypeError("layout must be an unsigned integer ExternalLayout");super(t||e.property||"variant"),this.layout=e}decode(e,t){return this.layout.decode(e,t)}encode(e,t,n){return this.layout.encode(e,t,n)}}class Te extends ae{constructor(e,t,n){const i=e instanceof de||e instanceof he;if(i)e=new Ne(new ge(e));else if(e instanceof ue&&e.isCount())e=new Ne(e);else if(!(e instanceof De))throw new TypeError("discr must be a UnionDiscriminator or an unsigned integer layout");if(void 0===t&&(t=null),!(null===t||t instanceof ae))throw new TypeError("defaultLayout must be null or a Layout");if(null!==t){if(0>t.span)throw new Error("defaultLayout must have constant span");void 0===t.property&&(t=t.replicate("content"))}let r=-1;t&&(r=t.span,0<=r&&i&&(r+=e.layout.span)),super(r,n),this.discriminator=e,this.usesPrefixDiscriminator=i,this.defaultLayout=t,this.registry={};let o=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(e){return o(e)},this.configGetSourceVariant=function(e){o=e.bind(this)}}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);const n=this.getVariant(e,t);if(!n)throw new Error("unable to determine span for unrecognized variant");return n.getSpan(e,t)}defaultGetSourceVariant(e){if(e.hasOwnProperty(this.discriminator.property)){if(this.defaultLayout&&e.hasOwnProperty(this.defaultLayout.property))return;const t=this.registry[e[this.discriminator.property]];if(t&&(!t.layout||e.hasOwnProperty(t.property)))return t}else for(const t in this.registry){const n=this.registry[t];if(e.hasOwnProperty(n.property))return n}throw new Error("unable to infer src variant")}decode(e,t){let n;void 0===t&&(t=0);const i=this.discriminator,r=i.decode(e,t);let o=this.registry[r];if(void 0===o){let A=0;o=this.defaultLayout,this.usesPrefixDiscriminator&&(A=i.layout.span),n=this.makeDestinationObject(),n[i.property]=r,n[o.property]=this.defaultLayout.decode(e,t+A)}else n=o.decode(e,t);return n}encode(e,t,n){void 0===n&&(n=0);const i=this.getSourceVariant(e);if(void 0===i){const i=this.discriminator,r=this.defaultLayout;let o=0;return this.usesPrefixDiscriminator&&(o=i.layout.span),i.encode(e[i.property],t,n),o+r.encode(e[r.property],t,n+o)}return i.encode(e,t,n)}addVariant(e,t,n){const i=new Pe(this,e,t,n);return this.registry[e]=i,i}getVariant(e,t){let n=e;return c.Buffer.isBuffer(e)&&(void 0===t&&(t=0),n=this.discriminator.decode(e,t)),this.registry[n]}}class Pe extends ae{constructor(e,t,n,i){if(!(e instanceof Te))throw new TypeError("union must be a Union");if(!Number.isInteger(t)||0>t)throw new TypeError("variant must be a (non-negative) integer");if("string"==typeof n&&void 0===i&&(i=n,n=null),n){if(!(n instanceof ae))throw new TypeError("layout must be a Layout");if(null!==e.defaultLayout&&0<=n.span&&n.span>e.defaultLayout.span)throw new Error("variant span exceeds span of containing union");if("string"!=typeof i)throw new TypeError("variant must have a String property")}let r=e.span;0>e.span&&(r=n?n.span:0,0<=r&&e.usesPrefixDiscriminator&&(r+=e.discriminator.layout.span)),super(r,i),this.union=e,this.variant=t,this.layout=n||null}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);let n=0;return this.union.usesPrefixDiscriminator&&(n=this.union.discriminator.layout.span),n+this.layout.getSpan(e,t+n)}decode(e,t){const n=this.makeDestinationObject();if(void 0===t&&(t=0),this!==this.union.getVariant(e,t))throw new Error("variant mismatch");let i=0;return this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout?n[this.property]=this.layout.decode(e,t+i):this.property?n[this.property]=!0:this.union.usesPrefixDiscriminator&&(n[this.union.discriminator.property]=this.variant),n}encode(e,t,n){void 0===n&&(n=0);let i=0;if(this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout&&!e.hasOwnProperty(this.property))throw new TypeError("variant lacks property "+this.property);this.union.discriminator.encode(this.variant,t,n);let r=i;if(this.layout&&(this.layout.encode(e[this.property],t,n+i),r+=this.layout.getSpan(t,n+i),0<=this.union.span&&r>this.union.span))throw new Error("encoded variant overruns containing union");return r}fromArray(e){if(this.layout)return this.layout.fromArray(e)}}function Oe(e){return 0>e&&(e+=4294967296),e}class Fe extends ae{constructor(e,t,n){if(!(e instanceof de||e instanceof he))throw new TypeError("word must be a UInt or UIntBE layout");if("string"==typeof t&&void 0===n&&(n=t,t=void 0),4=t)throw new TypeError("bits must be positive integer");const i=8*e.span,r=e.fields.reduce(((e,t)=>e+t.bits),0);if(t+r>i)throw new Error("bits too long for span remainder ("+(i-r)+" of "+i+" remain)");this.container=e,this.bits=t,this.valueMask=(1<>>this.start}encode(e){if(!Number.isInteger(e)||e!==Oe(e&this.valueMask))throw new TypeError(ce("BitField.encode",this)+" value must be integer not exceeding "+this.valueMask);const t=this.container._packedGetValue(),n=Oe(e<n&&(n=this.length.decode(e,t)),n}decode(e,t){void 0===t&&(t=0);let n=this.span;return 0>n&&(n=this.length.decode(e,t)),e.slice(t,t+n)}encode(e,t,n){let i=this.length;if(this.length instanceof ue&&(i=e.length),!c.Buffer.isBuffer(e)||i!==e.length)throw new TypeError(ce("Blob.encode",this)+" requires (length "+i+") Buffer as src");if(n+i>t.length)throw new RangeError("encoding overruns Buffer");return t.write(e.toString("hex"),n,i,"hex"),this.length instanceof ue&&this.length.encode(i,t,n),i}}class Ue extends ae{constructor(e){super(-1,e)}getSpan(e,t){if(!c.Buffer.isBuffer(e))throw new TypeError("b must be a Buffer");void 0===t&&(t=0);let n=t;for(;nt.length)throw new RangeError("encoding overruns Buffer");return i.copy(t,n),t[n+r]=0,r+1}}class _e extends ae{constructor(e,t){if("string"==typeof e&&void 0===t&&(t=e,e=void 0),void 0===e)e=-1;else if(!Number.isInteger(e))throw new TypeError("maxSpan must be an integer");super(-1,t),this.maxSpan=e}getSpan(e,t){if(!c.Buffer.isBuffer(e))throw new TypeError("b must be a Buffer");return void 0===t&&(t=0),e.length-t}decode(e,t,n){void 0===t&&(t=0);let i=this.getSpan(e,t);if(0<=this.maxSpan&&this.maxSpant.length)throw new RangeError("encoding overruns Buffer");return i.copy(t,n),r}}class Le extends ae{constructor(e,t){super(0,t),this.value=e}decode(e,t,n){return this.value}encode(e,t,n){return 0}}se.ExternalLayout=ue,se.GreedyCount=le,se.OffsetLayout=ge,se.UInt=de,se.UIntBE=he,se.Int=pe,se.IntBE=fe,se.Float=Qe,se.FloatBE=be,se.Double=ke,se.DoubleBE=ve,se.Sequence=Se,se.Structure=Me,se.UnionDiscriminator=De,se.UnionLayoutDiscriminator=Ne,se.Union=Te,se.VariantLayout=Pe,se.BitStructure=Fe,se.BitField=Re,se.Boolean=Ge,se.Blob=xe,se.CString=Ue,se.UTF8=_e,se.Constant=Le,se.greedy=(e,t)=>new le(e,t),se.offset=(e,t,n)=>new ge(e,t,n);var Ke=se.u8=e=>new de(1,e);se.u16=e=>new de(2,e),se.u24=e=>new de(3,e);var Ye=se.u32=e=>new de(4,e);se.u40=e=>new de(5,e),se.u48=e=>new de(6,e),se.nu64=e=>new Be(e),se.u16be=e=>new he(2,e),se.u24be=e=>new he(3,e),se.u32be=e=>new he(4,e),se.u40be=e=>new he(5,e),se.u48be=e=>new he(6,e),se.nu64be=e=>new Ce(e),se.s8=e=>new pe(1,e),se.s16=e=>new pe(2,e),se.s24=e=>new pe(3,e),se.s32=e=>new pe(4,e),se.s40=e=>new pe(5,e),se.s48=e=>new pe(6,e),se.ns64=e=>new we(e),se.s16be=e=>new fe(2,e),se.s24be=e=>new fe(3,e),se.s32be=e=>new fe(4,e),se.s40be=e=>new fe(5,e),se.s48be=e=>new fe(6,e),se.ns64be=e=>new Ee(e),se.f32=e=>new Qe(e),se.f32be=e=>new be(e),se.f64=e=>new ke(e),se.f64be=e=>new ve(e);var je=se.struct=(e,t,n)=>new Me(e,t,n);se.bits=(e,t,n)=>new Fe(e,t,n),se.seq=(e,t,n)=>new Se(e,t,n),se.union=(e,t,n)=>new Te(e,t,n),se.unionLayoutDiscriminator=(e,t)=>new Ne(e,t);var We=se.blob=(e,t)=>new xe(e,t);se.cstr=e=>new Ue(e),se.utf8=(e,t)=>new _e(e,t),se.const=(e,t)=>new Le(e,t);const Je=(e="publicKey")=>We(32,e),qe=(e="uint64")=>We(8,e);function Ze(e,t,n,...i){return(0,s.sendAndConfirmTransaction)(t,n,i,{skipPreflight:!1})}const ze=new s.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),He=new s.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"),Ve="Failed to find account",Xe="Invalid account owner";function $e(e){return c.Buffer.from(e.toBuffer())}class et extends(A()){toBuffer(){const e=super.toArray().reverse(),t=c.Buffer.from(e);if(8===t.length)return t;z(t.length<8,"u64 too large");const n=c.Buffer.alloc(8);return t.copy(n),n}static fromBuffer(e){return z(8===e.length,`Invalid buffer length: ${e.length}`),new et([...e].reverse().map((e=>`00${e.toString(16)}`.slice(-2))).join(""),16)}}function tt(e){return"publicKey"in e}const nt={MintTokens:0,FreezeAccount:1,AccountOwner:2,CloseAccount:3},it=new s.PublicKey("So11111111111111111111111111111111111111112"),rt=je([Ye("mintAuthorityOption"),Je("mintAuthority"),qe("supply"),Ke("decimals"),Ke("isInitialized"),Ye("freezeAuthorityOption"),Je("freezeAuthority")]),ot=je([Je("mint"),Je("owner"),qe("amount"),Ye("delegateOption"),Je("delegate"),Ke("state"),Ye("isNativeOption"),qe("isNative"),qe("delegatedAmount"),Ye("closeAuthorityOption"),Je("closeAuthority")]),At=je([Ke("m"),Ke("n"),Ke("is_initialized"),Je("signer1"),Je("signer2"),Je("signer3"),Je("signer4"),Je("signer5"),Je("signer6"),Je("signer7"),Je("signer8"),Je("signer9"),Je("signer10"),Je("signer11")]);class st{constructor(e,t,n,i){r(this,"connection",void 0),r(this,"publicKey",void 0),r(this,"programId",void 0),r(this,"associatedProgramId",void 0),r(this,"payer",void 0),Object.assign(this,{connection:e,publicKey:t,programId:n,payer:i,associatedProgramId:He})}static async getMinBalanceRentForExemptMint(e){return await e.getMinimumBalanceForRentExemption(rt.span)}static async getMinBalanceRentForExemptAccount(e){return await e.getMinimumBalanceForRentExemption(ot.span)}static async getMinBalanceRentForExemptMultisig(e){return await e.getMinimumBalanceForRentExemption(At.span)}static async createMint(e,t,n,i,r,o){const A=s.Keypair.generate(),a=new st(e,A.publicKey,o,t),c=await st.getMinBalanceRentForExemptMint(e),u=new s.Transaction;return u.add(s.SystemProgram.createAccount({fromPubkey:t.publicKey,newAccountPubkey:A.publicKey,lamports:c,space:rt.span,programId:o})),u.add(st.createInitMintInstruction(o,A.publicKey,r,n,i)),await Ze(0,e,u,t,A),a}async createAccount(e){const t=await st.getMinBalanceRentForExemptAccount(this.connection),n=s.Keypair.generate(),i=new s.Transaction;i.add(s.SystemProgram.createAccount({fromPubkey:this.payer.publicKey,newAccountPubkey:n.publicKey,lamports:t,space:ot.span,programId:this.programId}));const r=this.publicKey;return i.add(st.createInitAccountInstruction(this.programId,r,n.publicKey,e)),await Ze(0,this.connection,i,this.payer,n),n.publicKey}async createAssociatedTokenAccount(e){const t=await st.getAssociatedTokenAddress(this.associatedProgramId,this.programId,this.publicKey,e);return this.createAssociatedTokenAccountInternal(e,t)}async createAssociatedTokenAccountInternal(e,t){return await Ze(0,this.connection,(new s.Transaction).add(st.createAssociatedTokenAccountInstruction(this.associatedProgramId,this.programId,this.publicKey,t,e,this.payer.publicKey)),this.payer),t}async getOrCreateAssociatedAccountInfo(e){const t=await st.getAssociatedTokenAddress(this.associatedProgramId,this.programId,this.publicKey,e);try{return await this.getAccountInfo(t)}catch(n){if(n.message===Ve||n.message===Xe){try{await this.createAssociatedTokenAccountInternal(e,t)}catch(e){}return await this.getAccountInfo(t)}throw n}}static async createWrappedNativeAccount(e,t,n,i,r){const o=await st.getMinBalanceRentForExemptAccount(e),A=s.Keypair.generate(),a=new s.Transaction;return a.add(s.SystemProgram.createAccount({fromPubkey:i.publicKey,newAccountPubkey:A.publicKey,lamports:o,space:ot.span,programId:t})),a.add(s.SystemProgram.transfer({fromPubkey:i.publicKey,toPubkey:A.publicKey,lamports:r})),a.add(st.createInitAccountInstruction(t,it,A.publicKey,n)),await Ze(0,e,a,i,A),A.publicKey}async createMultisig(e,t){const n=s.Keypair.generate(),i=await st.getMinBalanceRentForExemptMultisig(this.connection),r=new s.Transaction;r.add(s.SystemProgram.createAccount({fromPubkey:this.payer.publicKey,newAccountPubkey:n.publicKey,lamports:i,space:At.span,programId:this.programId}));let o=[{pubkey:n.publicKey,isSigner:!1,isWritable:!0},{pubkey:s.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}];t.forEach((e=>o.push({pubkey:e,isSigner:!1,isWritable:!1})));const A=je([Ke("instruction"),Ke("m")]),a=c.Buffer.alloc(A.span);return A.encode({instruction:2,m:e},a),r.add({keys:o,programId:this.programId,data:a}),await Ze(0,this.connection,r,this.payer,n),n.publicKey}async getMintInfo(){const e=await this.connection.getAccountInfo(this.publicKey);if(null===e)throw new Error("Failed to find mint account");if(!e.owner.equals(this.programId))throw new Error(`Invalid mint owner: ${JSON.stringify(e.owner)}`);if(e.data.length!=rt.span)throw new Error("Invalid mint size");const t=c.Buffer.from(e.data),n=rt.decode(t);return 0===n.mintAuthorityOption?n.mintAuthority=null:n.mintAuthority=new s.PublicKey(n.mintAuthority),n.supply=et.fromBuffer(n.supply),n.isInitialized=0!=n.isInitialized,0===n.freezeAuthorityOption?n.freezeAuthority=null:n.freezeAuthority=new s.PublicKey(n.freezeAuthority),n}async getAccountInfo(e,t){const n=await this.connection.getAccountInfo(e,t);if(null===n)throw new Error(Ve);if(!n.owner.equals(this.programId))throw new Error(Xe);if(n.data.length!=ot.span)throw new Error("Invalid account size");const i=c.Buffer.from(n.data),r=ot.decode(i);if(r.address=e,r.mint=new s.PublicKey(r.mint),r.owner=new s.PublicKey(r.owner),r.amount=et.fromBuffer(r.amount),0===r.delegateOption?(r.delegate=null,r.delegatedAmount=new et):(r.delegate=new s.PublicKey(r.delegate),r.delegatedAmount=et.fromBuffer(r.delegatedAmount)),r.isInitialized=0!==r.state,r.isFrozen=2===r.state,1===r.isNativeOption?(r.rentExemptReserve=et.fromBuffer(r.isNative),r.isNative=!0):(r.rentExemptReserve=null,r.isNative=!1),0===r.closeAuthorityOption?r.closeAuthority=null:r.closeAuthority=new s.PublicKey(r.closeAuthority),!r.mint.equals(this.publicKey))throw new Error(`Invalid account mint: ${JSON.stringify(r.mint)} !== ${JSON.stringify(this.publicKey)}`);return r}async getMultisigInfo(e){const t=await this.connection.getAccountInfo(e);if(null===t)throw new Error("Failed to find multisig");if(!t.owner.equals(this.programId))throw new Error("Invalid multisig owner");if(t.data.length!=At.span)throw new Error("Invalid multisig size");const n=c.Buffer.from(t.data),i=At.decode(n);return i.signer1=new s.PublicKey(i.signer1),i.signer2=new s.PublicKey(i.signer2),i.signer3=new s.PublicKey(i.signer3),i.signer4=new s.PublicKey(i.signer4),i.signer5=new s.PublicKey(i.signer5),i.signer6=new s.PublicKey(i.signer6),i.signer7=new s.PublicKey(i.signer7),i.signer8=new s.PublicKey(i.signer8),i.signer9=new s.PublicKey(i.signer9),i.signer10=new s.PublicKey(i.signer10),i.signer11=new s.PublicKey(i.signer11),i}async transfer(e,t,n,i,r){let o,A;return tt(n)?(o=n.publicKey,A=[n]):(o=n,A=i),await Ze("Transfer",this.connection,(new s.Transaction).add(st.createTransferInstruction(this.programId,e,t,o,i,r)),this.payer,...A)}async approve(e,t,n,i,r){let o,A;tt(n)?(o=n.publicKey,A=[n]):(o=n,A=i),await Ze("Approve",this.connection,(new s.Transaction).add(st.createApproveInstruction(this.programId,e,t,o,i,r)),this.payer,...A)}async revoke(e,t,n){let i,r;tt(t)?(i=t.publicKey,r=[t]):(i=t,r=n),await Ze("Revoke",this.connection,(new s.Transaction).add(st.createRevokeInstruction(this.programId,e,i,n)),this.payer,...r)}async setAuthority(e,t,n,i,r){let o,A;tt(i)?(o=i.publicKey,A=[i]):(o=i,A=r),await Ze("SetAuthority",this.connection,(new s.Transaction).add(st.createSetAuthorityInstruction(this.programId,e,t,n,o,r)),this.payer,...A)}async mintTo(e,t,n,i){let r,o;tt(t)?(r=t.publicKey,o=[t]):(r=t,o=n),await Ze("MintTo",this.connection,(new s.Transaction).add(st.createMintToInstruction(this.programId,this.publicKey,e,r,n,i)),this.payer,...o)}async burn(e,t,n,i){let r,o;tt(t)?(r=t.publicKey,o=[t]):(r=t,o=n),await Ze("Burn",this.connection,(new s.Transaction).add(st.createBurnInstruction(this.programId,this.publicKey,e,r,n,i)),this.payer,...o)}async closeAccount(e,t,n,i){let r,o;tt(n)?(r=n.publicKey,o=[n]):(r=n,o=i),await Ze("CloseAccount",this.connection,(new s.Transaction).add(st.createCloseAccountInstruction(this.programId,e,t,r,i)),this.payer,...o)}async freezeAccount(e,t,n){let i,r;tt(t)?(i=t.publicKey,r=[t]):(i=t,r=n),await Ze("FreezeAccount",this.connection,(new s.Transaction).add(st.createFreezeAccountInstruction(this.programId,e,this.publicKey,i,n)),this.payer,...r)}async thawAccount(e,t,n){let i,r;tt(t)?(i=t.publicKey,r=[t]):(i=t,r=n),await Ze("ThawAccount",this.connection,(new s.Transaction).add(st.createThawAccountInstruction(this.programId,e,this.publicKey,i,n)),this.payer,...r)}async transferChecked(e,t,n,i,r,o){let A,a;return tt(n)?(A=n.publicKey,a=[n]):(A=n,a=i),await Ze("TransferChecked",this.connection,(new s.Transaction).add(st.createTransferCheckedInstruction(this.programId,e,this.publicKey,t,A,i,r,o)),this.payer,...a)}async approveChecked(e,t,n,i,r,o){let A,a;tt(n)?(A=n.publicKey,a=[n]):(A=n,a=i),await Ze("ApproveChecked",this.connection,(new s.Transaction).add(st.createApproveCheckedInstruction(this.programId,e,this.publicKey,t,A,i,r,o)),this.payer,...a)}async mintToChecked(e,t,n,i,r){let o,A;tt(t)?(o=t.publicKey,A=[t]):(o=t,A=n),await Ze("MintToChecked",this.connection,(new s.Transaction).add(st.createMintToCheckedInstruction(this.programId,this.publicKey,e,o,n,i,r)),this.payer,...A)}async burnChecked(e,t,n,i,r){let o,A;tt(t)?(o=t.publicKey,A=[t]):(o=t,A=n),await Ze("BurnChecked",this.connection,(new s.Transaction).add(st.createBurnCheckedInstruction(this.programId,this.publicKey,e,o,n,i,r)),this.payer,...A)}async syncNative(e){await Ze(0,this.connection,(new s.Transaction).add(st.createSyncNativeInstruction(this.programId,e)),this.payer)}static createInitMintInstruction(e,t,n,i,r){let o=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:s.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}];const A=je([Ke("instruction"),Ke("decimals"),Je("mintAuthority"),Ke("option"),Je("freezeAuthority")]);let a=c.Buffer.alloc(1024);{const e=A.encode({instruction:0,decimals:n,mintAuthority:$e(i),option:null===r?0:1,freezeAuthority:$e(r||new s.PublicKey(0))},a);a=a.slice(0,e)}return new s.TransactionInstruction({keys:o,programId:e,data:a})}static createInitAccountInstruction(e,t,n,i){const r=[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:s.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}],o=je([Ke("instruction")]),A=c.Buffer.alloc(o.span);return o.encode({instruction:1},A),new s.TransactionInstruction({keys:r,programId:e,data:A})}static createTransferInstruction(e,t,n,i,r,o){const A=je([Ke("instruction"),qe("amount")]),a=c.Buffer.alloc(A.span);A.encode({instruction:3,amount:new et(o).toBuffer()},a);let u=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0}];return 0===r.length?u.push({pubkey:i,isSigner:!0,isWritable:!1}):(u.push({pubkey:i,isSigner:!1,isWritable:!1}),r.forEach((e=>u.push({pubkey:e.publicKey,isSigner:!0,isWritable:!1})))),new s.TransactionInstruction({keys:u,programId:e,data:a})}static createApproveInstruction(e,t,n,i,r,o){const A=je([Ke("instruction"),qe("amount")]),a=c.Buffer.alloc(A.span);A.encode({instruction:4,amount:new et(o).toBuffer()},a);let u=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1}];return 0===r.length?u.push({pubkey:i,isSigner:!0,isWritable:!1}):(u.push({pubkey:i,isSigner:!1,isWritable:!1}),r.forEach((e=>u.push({pubkey:e.publicKey,isSigner:!0,isWritable:!1})))),new s.TransactionInstruction({keys:u,programId:e,data:a})}static createRevokeInstruction(e,t,n,i){const r=je([Ke("instruction")]),o=c.Buffer.alloc(r.span);r.encode({instruction:5},o);let A=[{pubkey:t,isSigner:!1,isWritable:!0}];return 0===i.length?A.push({pubkey:n,isSigner:!0,isWritable:!1}):(A.push({pubkey:n,isSigner:!1,isWritable:!1}),i.forEach((e=>A.push({pubkey:e.publicKey,isSigner:!0,isWritable:!1})))),new s.TransactionInstruction({keys:A,programId:e,data:o})}static createSetAuthorityInstruction(e,t,n,i,r,o){const A=je([Ke("instruction"),Ke("authorityType"),Ke("option"),Je("newAuthority")]);let a=c.Buffer.alloc(1024);{const e=A.encode({instruction:6,authorityType:nt[i],option:null===n?0:1,newAuthority:$e(n||new s.PublicKey(0))},a);a=a.slice(0,e)}let u=[{pubkey:t,isSigner:!1,isWritable:!0}];return 0===o.length?u.push({pubkey:r,isSigner:!0,isWritable:!1}):(u.push({pubkey:r,isSigner:!1,isWritable:!1}),o.forEach((e=>u.push({pubkey:e.publicKey,isSigner:!0,isWritable:!1})))),new s.TransactionInstruction({keys:u,programId:e,data:a})}static createMintToInstruction(e,t,n,i,r,o){const A=je([Ke("instruction"),qe("amount")]),a=c.Buffer.alloc(A.span);A.encode({instruction:7,amount:new et(o).toBuffer()},a);let u=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0}];return 0===r.length?u.push({pubkey:i,isSigner:!0,isWritable:!1}):(u.push({pubkey:i,isSigner:!1,isWritable:!1}),r.forEach((e=>u.push({pubkey:e.publicKey,isSigner:!0,isWritable:!1})))),new s.TransactionInstruction({keys:u,programId:e,data:a})}static createBurnInstruction(e,t,n,i,r,o){const A=je([Ke("instruction"),qe("amount")]),a=c.Buffer.alloc(A.span);A.encode({instruction:8,amount:new et(o).toBuffer()},a);let u=[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0}];return 0===r.length?u.push({pubkey:i,isSigner:!0,isWritable:!1}):(u.push({pubkey:i,isSigner:!1,isWritable:!1}),r.forEach((e=>u.push({pubkey:e.publicKey,isSigner:!0,isWritable:!1})))),new s.TransactionInstruction({keys:u,programId:e,data:a})}static createCloseAccountInstruction(e,t,n,i,r){const o=je([Ke("instruction")]),A=c.Buffer.alloc(o.span);o.encode({instruction:9},A);let a=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0}];return 0===r.length?a.push({pubkey:i,isSigner:!0,isWritable:!1}):(a.push({pubkey:i,isSigner:!1,isWritable:!1}),r.forEach((e=>a.push({pubkey:e.publicKey,isSigner:!0,isWritable:!1})))),new s.TransactionInstruction({keys:a,programId:e,data:A})}static createFreezeAccountInstruction(e,t,n,i,r){const o=je([Ke("instruction")]),A=c.Buffer.alloc(o.span);o.encode({instruction:10},A);let a=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1}];return 0===r.length?a.push({pubkey:i,isSigner:!0,isWritable:!1}):(a.push({pubkey:i,isSigner:!1,isWritable:!1}),r.forEach((e=>a.push({pubkey:e.publicKey,isSigner:!0,isWritable:!1})))),new s.TransactionInstruction({keys:a,programId:e,data:A})}static createThawAccountInstruction(e,t,n,i,r){const o=je([Ke("instruction")]),A=c.Buffer.alloc(o.span);o.encode({instruction:11},A);let a=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1}];return 0===r.length?a.push({pubkey:i,isSigner:!0,isWritable:!1}):(a.push({pubkey:i,isSigner:!1,isWritable:!1}),r.forEach((e=>a.push({pubkey:e.publicKey,isSigner:!0,isWritable:!1})))),new s.TransactionInstruction({keys:a,programId:e,data:A})}static createTransferCheckedInstruction(e,t,n,i,r,o,A,a){const u=je([Ke("instruction"),qe("amount"),Ke("decimals")]),l=c.Buffer.alloc(u.span);u.encode({instruction:12,amount:new et(A).toBuffer(),decimals:a},l);let g=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!0}];return 0===o.length?g.push({pubkey:r,isSigner:!0,isWritable:!1}):(g.push({pubkey:r,isSigner:!1,isWritable:!1}),o.forEach((e=>g.push({pubkey:e.publicKey,isSigner:!0,isWritable:!1})))),new s.TransactionInstruction({keys:g,programId:e,data:l})}static createApproveCheckedInstruction(e,t,n,i,r,o,A,a){const u=je([Ke("instruction"),qe("amount"),Ke("decimals")]),l=c.Buffer.alloc(u.span);u.encode({instruction:13,amount:new et(A).toBuffer(),decimals:a},l);let g=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1}];return 0===o.length?g.push({pubkey:r,isSigner:!0,isWritable:!1}):(g.push({pubkey:r,isSigner:!1,isWritable:!1}),o.forEach((e=>g.push({pubkey:e.publicKey,isSigner:!0,isWritable:!1})))),new s.TransactionInstruction({keys:g,programId:e,data:l})}static createMintToCheckedInstruction(e,t,n,i,r,o,A){const a=je([Ke("instruction"),qe("amount"),Ke("decimals")]),u=c.Buffer.alloc(a.span);a.encode({instruction:14,amount:new et(o).toBuffer(),decimals:A},u);let l=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0}];return 0===r.length?l.push({pubkey:i,isSigner:!0,isWritable:!1}):(l.push({pubkey:i,isSigner:!1,isWritable:!1}),r.forEach((e=>l.push({pubkey:e.publicKey,isSigner:!0,isWritable:!1})))),new s.TransactionInstruction({keys:l,programId:e,data:u})}static createBurnCheckedInstruction(e,t,n,i,r,o,A){const a=je([Ke("instruction"),qe("amount"),Ke("decimals")]),u=c.Buffer.alloc(a.span);a.encode({instruction:15,amount:new et(o).toBuffer(),decimals:A},u);let l=[{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0}];return 0===r.length?l.push({pubkey:i,isSigner:!0,isWritable:!1}):(l.push({pubkey:i,isSigner:!1,isWritable:!1}),r.forEach((e=>l.push({pubkey:e.publicKey,isSigner:!0,isWritable:!1})))),new s.TransactionInstruction({keys:l,programId:e,data:u})}static createSyncNativeInstruction(e,t){const n=je([Ke("instruction")]),i=c.Buffer.alloc(n.span);n.encode({instruction:17},i);let r=[{pubkey:t,isSigner:!1,isWritable:!0}];return new s.TransactionInstruction({keys:r,programId:e,data:i})}static async getAssociatedTokenAddress(e,t,n,i,r=!1){if(!r&&!s.PublicKey.isOnCurve(i.toBuffer()))throw new Error(`Owner cannot sign: ${i.toString()}`);return(await s.PublicKey.findProgramAddress([i.toBuffer(),t.toBuffer(),n.toBuffer()],e))[0]}static createAssociatedTokenAccountInstruction(e,t,n,i,r,o){const A=c.Buffer.alloc(0);let a=[{pubkey:o,isSigner:!0,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:s.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!1,isWritable:!1},{pubkey:s.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}];return new s.TransactionInstruction({keys:a,programId:e,data:A})}}},97212:(e,t,n)=>{"use strict";n.r(t),n.d(t,{Account:()=>ii,AddressLookupTableAccount:()=>ur,AddressLookupTableInstruction:()=>nA,AddressLookupTableProgram:()=>iA,Authorized:()=>dA,BLOCKHASH_CACHE_TIMEOUT_MS:()=>fr,BPF_LOADER_DEPRECATED_PROGRAM_ID:()=>ri,BPF_LOADER_PROGRAM_ID:()=>Xi,BpfLoader:()=>$i,COMPUTE_BUDGET_INSTRUCTION_LAYOUTS:()=>oA,ComputeBudgetInstruction:()=>rA,ComputeBudgetProgram:()=>AA,Connection:()=>$o,Ed25519Program:()=>aA,Enum:()=>Hn,EpochSchedule:()=>or,FeeCalculatorLayout:()=>Ki,Keypair:()=>eA,LAMPORTS_PER_SOL:()=>RA,LOOKUP_TABLE_INSTRUCTION_LAYOUTS:()=>tA,Loader:()=>Vi,Lockup:()=>hA,MAX_SEED_LENGTH:()=>$n,Message:()=>Bi,MessageAccountKeys:()=>li,MessageV0:()=>Ci,NONCE_ACCOUNT_LENGTH:()=>ji,NonceAccount:()=>Wi,PACKET_DATA_SIZE:()=>oi,PUBLIC_KEY_LENGTH:()=>ei,PublicKey:()=>ni,SIGNATURE_LENGTH_IN_BYTES:()=>si,SOLANA_SCHEMA:()=>Vn,STAKE_CONFIG_ID:()=>gA,STAKE_INSTRUCTION_LAYOUTS:()=>fA,SYSTEM_INSTRUCTION_LAYOUTS:()=>Zi,SYSVAR_CLOCK_PUBKEY:()=>Mi,SYSVAR_EPOCH_SCHEDULE_PUBKEY:()=>Di,SYSVAR_INSTRUCTIONS_PUBKEY:()=>Ni,SYSVAR_RECENT_BLOCKHASHES_PUBKEY:()=>Ti,SYSVAR_RENT_PUBKEY:()=>Pi,SYSVAR_REWARDS_PUBKEY:()=>Oi,SYSVAR_SLOT_HASHES_PUBKEY:()=>Fi,SYSVAR_SLOT_HISTORY_PUBKEY:()=>Ri,SYSVAR_STAKE_HISTORY_PUBKEY:()=>Gi,Secp256k1Program:()=>lA,SendTransactionError:()=>Ar,SolanaJSONRPCError:()=>ar,SolanaJSONRPCErrorCode:()=>sr,StakeAuthorizationLayout:()=>mA,StakeInstruction:()=>pA,StakeProgram:()=>IA,Struct:()=>zn,SystemInstruction:()=>qi,SystemProgram:()=>zi,Transaction:()=>ki,TransactionExpiredBlockheightExceededError:()=>ai,TransactionExpiredNonceInvalidError:()=>ui,TransactionExpiredTimeoutError:()=>ci,TransactionInstruction:()=>bi,TransactionMessage:()=>vi,TransactionStatus:()=>Ei,VALIDATOR_INFO_KEY:()=>QA,VERSION_PREFIX_MASK:()=>Ai,VOTE_PROGRAM_ID:()=>vA,ValidatorInfo:()=>kA,VersionedMessage:()=>wi,VersionedTransaction:()=>Si,VoteAccount:()=>MA,VoteAuthorizationLayout:()=>wA,VoteInit:()=>yA,VoteInstruction:()=>BA,VoteProgram:()=>EA,clusterApiUrl:()=>OA,sendAndConfirmRawTransaction:()=>FA,sendAndConfirmTransaction:()=>xi});var i=n(75858);function r(e){if(!Number.isSafeInteger(e)||e<0)throw new Error(`Wrong positive integer: ${e}`)}function o(e,...t){if(!(e instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(t.length>0&&!t.includes(e.length))throw new TypeError(`Expected Uint8Array of length ${t}, not of length=${e.length}`)}const A={number:r,bool:function(e){if("boolean"!=typeof e)throw new Error(`Expected boolean, not ${e}`)},bytes:o,hash:function(e){if("function"!=typeof e||"function"!=typeof e.create)throw new Error("Hash should be wrapped by utils.wrapConstructor");r(e.outputLen),r(e.blockLen)},exists:function(e,t=!0){if(e.destroyed)throw new Error("Hash instance has been destroyed");if(t&&e.finished)throw new Error("Hash#digest() has already been called")},output:function(e,t){o(e);const n=t.outputLen;if(e.lengthnew DataView(e.buffer,e.byteOffset,e.byteLength)),c=(e,t)=>e<<32-t|e>>>t;if(68!==new Uint8Array(new Uint32Array([287454020]).buffer)[0])throw new Error("Non little-endian hardware is not supported");function u(e){if("string"==typeof e&&(e=function(e){if("string"!=typeof e)throw new TypeError("utf8ToBytes expected string, got "+typeof e);return(new TextEncoder).encode(e)}(e)),!(e instanceof Uint8Array))throw new TypeError(`Expected input type is Uint8Array (got ${typeof e})`);return e}Array.from({length:256},((e,t)=>t.toString(16).padStart(2,"0")));class l{clone(){return this._cloneInto()}}function g(e){const t=t=>e().update(u(t)).digest(),n=e();return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=()=>e(),t}class d extends l{constructor(e,t,n,i){super(),this.blockLen=e,this.outputLen=t,this.padOffset=n,this.isLE=i,this.finished=!1,this.length=0,this.pos=0,this.destroyed=!1,this.buffer=new Uint8Array(e),this.view=a(this.buffer)}update(e){s.exists(this);const{view:t,buffer:n,blockLen:i}=this,r=(e=u(e)).length;for(let o=0;oi-o&&(this.process(n,0),o=0);for(let e=o;e>r&o),s=Number(n&o),a=i?4:0,c=i?0:4;e.setUint32(t+a,A,i),e.setUint32(t+c,s,i)}(n,i-8,BigInt(8*this.length),r),this.process(n,0);const A=a(e);this.get().forEach(((e,t)=>A.setUint32(4*t,e,r)))}digest(){const{buffer:e,outputLen:t}=this;this.digestInto(e);const n=e.slice(0,t);return this.destroy(),n}_cloneInto(e){e||(e=new this.constructor),e.set(...this.get());const{blockLen:t,buffer:n,length:i,finished:r,destroyed:o,pos:A}=this;return e.length=i,e.pos=A,e.finished=r,e.destroyed=o,i%t&&e.buffer.set(n),e}}const h=BigInt(2**32-1),p=BigInt(32);function f(e,t=!1){return t?{h:Number(e&h),l:Number(e>>p&h)}:{h:0|Number(e>>p&h),l:0|Number(e&h)}}const m=function(e,t=!1){let n=new Uint32Array(e.length),i=new Uint32Array(e.length);for(let r=0;re>>>n,y=(e,t,n)=>e<<32-n|t>>>n,B=(e,t,n)=>e>>>n|t<<32-n,C=(e,t,n)=>e<<32-n|t>>>n,w=(e,t,n)=>e<<64-n|t>>>n-32,E=(e,t,n)=>e>>>n-32|t<<64-n,Q=(e,t,n)=>e<>>32-n,b=(e,t,n)=>t<>>32-n,k=(e,t,n)=>t<>>64-n,v=(e,t,n)=>e<>>64-n,S=function(e,t,n,i){const r=(t>>>0)+(i>>>0);return{h:e+n+(r/2**32|0)|0,l:0|r}},M=(e,t,n)=>(e>>>0)+(t>>>0)+(n>>>0),D=(e,t,n,i)=>t+n+i+(e/2**32|0)|0,N=(e,t,n,i)=>(e>>>0)+(t>>>0)+(n>>>0)+(i>>>0),T=(e,t,n,i,r)=>t+n+i+r+(e/2**32|0)|0,P=(e,t,n,i,r,o)=>t+n+i+r+o+(e/2**32|0)|0,O=(e,t,n,i,r)=>(e>>>0)+(t>>>0)+(n>>>0)+(i>>>0)+(r>>>0),[F,R]=m(["0x428a2f98d728ae22","0x7137449123ef65cd","0xb5c0fbcfec4d3b2f","0xe9b5dba58189dbbc","0x3956c25bf348b538","0x59f111f1b605d019","0x923f82a4af194f9b","0xab1c5ed5da6d8118","0xd807aa98a3030242","0x12835b0145706fbe","0x243185be4ee4b28c","0x550c7dc3d5ffb4e2","0x72be5d74f27b896f","0x80deb1fe3b1696b1","0x9bdc06a725c71235","0xc19bf174cf692694","0xe49b69c19ef14ad2","0xefbe4786384f25e3","0x0fc19dc68b8cd5b5","0x240ca1cc77ac9c65","0x2de92c6f592b0275","0x4a7484aa6ea6e483","0x5cb0a9dcbd41fbd4","0x76f988da831153b5","0x983e5152ee66dfab","0xa831c66d2db43210","0xb00327c898fb213f","0xbf597fc7beef0ee4","0xc6e00bf33da88fc2","0xd5a79147930aa725","0x06ca6351e003826f","0x142929670a0e6e70","0x27b70a8546d22ffc","0x2e1b21385c26c926","0x4d2c6dfc5ac42aed","0x53380d139d95b3df","0x650a73548baf63de","0x766a0abb3c77b2a8","0x81c2c92e47edaee6","0x92722c851482353b","0xa2bfe8a14cf10364","0xa81a664bbc423001","0xc24b8b70d0f89791","0xc76c51a30654be30","0xd192e819d6ef5218","0xd69906245565a910","0xf40e35855771202a","0x106aa07032bbd1b8","0x19a4c116b8d2d0c8","0x1e376c085141ab53","0x2748774cdf8eeb99","0x34b0bcb5e19b48a8","0x391c0cb3c5c95a63","0x4ed8aa4ae3418acb","0x5b9cca4f7763e373","0x682e6ff3d6b2b8a3","0x748f82ee5defb2fc","0x78a5636f43172f60","0x84c87814a1f0ab72","0x8cc702081a6439ec","0x90befffa23631e28","0xa4506cebde82bde9","0xbef9a3f7b2c67915","0xc67178f2e372532b","0xca273eceea26619c","0xd186b8c721c0c207","0xeada7dd6cde0eb1e","0xf57d4f7fee6ed178","0x06f067aa72176fba","0x0a637dc5a2c898a6","0x113f9804bef90dae","0x1b710b35131c471b","0x28db77f523047d84","0x32caab7b40c72493","0x3c9ebe0a15c9bebc","0x431d67c49c100d4c","0x4cc5d4becb3e42b6","0x597f299cfc657e2a","0x5fcb6fab3ad6faec","0x6c44198c4a475817"].map((e=>BigInt(e)))),G=new Uint32Array(80),x=new Uint32Array(80);class U extends d{constructor(){super(128,64,16,!1),this.Ah=1779033703,this.Al=-205731576,this.Bh=-1150833019,this.Bl=-2067093701,this.Ch=1013904242,this.Cl=-23791573,this.Dh=-1521486534,this.Dl=1595750129,this.Eh=1359893119,this.El=-1377402159,this.Fh=-1694144372,this.Fl=725511199,this.Gh=528734635,this.Gl=-79577749,this.Hh=1541459225,this.Hl=327033209}get(){const{Ah:e,Al:t,Bh:n,Bl:i,Ch:r,Cl:o,Dh:A,Dl:s,Eh:a,El:c,Fh:u,Fl:l,Gh:g,Gl:d,Hh:h,Hl:p}=this;return[e,t,n,i,r,o,A,s,a,c,u,l,g,d,h,p]}set(e,t,n,i,r,o,A,s,a,c,u,l,g,d,h,p){this.Ah=0|e,this.Al=0|t,this.Bh=0|n,this.Bl=0|i,this.Ch=0|r,this.Cl=0|o,this.Dh=0|A,this.Dl=0|s,this.Eh=0|a,this.El=0|c,this.Fh=0|u,this.Fl=0|l,this.Gh=0|g,this.Gl=0|d,this.Hh=0|h,this.Hl=0|p}process(e,t){for(let n=0;n<16;n++,t+=4)G[n]=e.getUint32(t),x[n]=e.getUint32(t+=4);for(let e=16;e<80;e++){const t=0|G[e-15],n=0|x[e-15],i=B(t,n,1)^B(t,n,8)^I(t,n,7),r=C(t,n,1)^C(t,n,8)^y(t,n,7),o=0|G[e-2],A=0|x[e-2],s=B(o,A,19)^w(o,A,61)^I(o,A,6),a=C(o,A,19)^E(o,A,61)^y(o,A,6),c=N(r,a,x[e-7],x[e-16]),u=T(c,i,s,G[e-7],G[e-16]);G[e]=0|u,x[e]=0|c}let{Ah:n,Al:i,Bh:r,Bl:o,Ch:A,Cl:s,Dh:a,Dl:c,Eh:u,El:l,Fh:g,Fl:d,Gh:h,Gl:p,Hh:f,Hl:m}=this;for(let e=0;e<80;e++){const t=B(u,l,14)^B(u,l,18)^w(u,l,41),I=C(u,l,14)^C(u,l,18)^E(u,l,41),y=u&g^~u&h,Q=O(m,I,l&d^~l&p,R[e],x[e]),b=P(Q,f,t,y,F[e],G[e]),k=0|Q,v=B(n,i,28)^w(n,i,34)^w(n,i,39),N=C(n,i,28)^E(n,i,34)^E(n,i,39),T=n&r^n&A^r&A,U=i&o^i&s^o&s;f=0|h,m=0|p,h=0|g,p=0|d,g=0|u,d=0|l,({h:u,l}=S(0|a,0|c,0|b,0|k)),a=0|A,c=0|s,A=0|r,s=0|o,r=0|n,o=0|i;const _=M(k,N,U);n=D(_,b,v,T),i=0|_}({h:n,l:i}=S(0|this.Ah,0|this.Al,0|n,0|i)),({h:r,l:o}=S(0|this.Bh,0|this.Bl,0|r,0|o)),({h:A,l:s}=S(0|this.Ch,0|this.Cl,0|A,0|s)),({h:a,l:c}=S(0|this.Dh,0|this.Dl,0|a,0|c)),({h:u,l}=S(0|this.Eh,0|this.El,0|u,0|l)),({h:g,l:d}=S(0|this.Fh,0|this.Fl,0|g,0|d)),({h,l:p}=S(0|this.Gh,0|this.Gl,0|h,0|p)),({h:f,l:m}=S(0|this.Hh,0|this.Hl,0|f,0|m)),this.set(n,i,r,o,A,s,a,c,u,l,g,d,h,p,f,m)}roundClean(){G.fill(0),x.fill(0)}destroy(){this.buffer.fill(0),this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0)}}class _ extends U{constructor(){super(),this.Ah=573645204,this.Al=-64227540,this.Bh=-1621794909,this.Bl=-934517566,this.Ch=596883563,this.Cl=1867755857,this.Dh=-1774684391,this.Dl=1497426621,this.Eh=-1775747358,this.El=-1467023389,this.Fh=-1101128155,this.Fl=1401305490,this.Gh=721525244,this.Gl=746961066,this.Hh=246885852,this.Hl=-2117784414,this.outputLen=32}}class L extends U{constructor(){super(),this.Ah=-876896931,this.Al=-1056596264,this.Bh=1654270250,this.Bl=914150663,this.Ch=-1856437926,this.Cl=812702999,this.Dh=355462360,this.Dl=-150054599,this.Eh=1731405415,this.El=-4191439,this.Fh=-1900787065,this.Fl=1750603025,this.Gh=-619958771,this.Gl=1694076839,this.Hh=1203062813,this.Hl=-1090891868,this.outputLen=48}}const K=g((()=>new U));g((()=>new _)),g((()=>new L));var Y=n(79572),j=n.t(Y,2);const W=BigInt(0),J=BigInt(1),q=BigInt(2),Z=BigInt("7237005577332262213973186563042994240857116359379907606001950938285454250989"),z=Object.freeze({a:BigInt(-1),d:BigInt("37095705934669439343138083508754565189542113879843219016388785533085940283555"),P:BigInt("57896044618658097711785492504343953926634992332820282019728792003956564819949"),l:Z,n:Z,h:BigInt(8),Gx:BigInt("15112221349535400772501151409588531511454012693041857206046113283949847762202"),Gy:BigInt("46316835694926478169428394003475163141307993866256225615783033603165251855960")}),H=BigInt("0x10000000000000000000000000000000000000000000000000000000000000000"),V=BigInt("19681161376707505956807079304988542015446066515923890162744021073123829784752"),X=(BigInt("6853475219497561581579357271197624642482790079785650197046958215289687604742"),BigInt("25063068953384623474111414158702152701244531502492656460079210482610430750235")),$=BigInt("54469307008909316920995813868745141605393597292927456921205312896311721017578"),ee=BigInt("1159843021668779879193775521855586647937357759715417654439879720876111806838"),te=BigInt("40440834346308536858101042469323190826248399146238708352240133220865137265952");class ne{constructor(e,t,n,i){this.x=e,this.y=t,this.z=n,this.t=i}static fromAffine(e){if(!(e instanceof ae))throw new TypeError("ExtendedPoint#fromAffine: expected Point");return e.equals(ae.ZERO)?ne.ZERO:new ne(e.x,e.y,J,Be(e.x*e.y))}static toAffineBatch(e){const t=function(e,t=z.P){const n=new Array(e.length),i=Ce(e.reduce(((e,i,r)=>i===W?e:(n[r]=e,Be(e*i,t))),J),t);return e.reduceRight(((e,i,r)=>i===W?e:(n[r]=Be(e*n[r],t),Be(e*i,t))),i),n}(e.map((e=>e.z)));return e.map(((e,n)=>e.toAffine(t[n])))}static normalizeZ(e){return this.toAffineBatch(e).map(this.fromAffine)}equals(e){ie(e);const{x:t,y:n,z:i}=this,{x:r,y:o,z:A}=e,s=Be(t*A),a=Be(r*i),c=Be(n*A),u=Be(o*i);return s===a&&c===u}negate(){return new ne(Be(-this.x),this.y,this.z,Be(-this.t))}double(){const{x:e,y:t,z:n}=this,{a:i}=z,r=Be(e*e),o=Be(t*t),A=Be(q*Be(n*n)),s=Be(i*r),a=e+t,c=Be(Be(a*a)-r-o),u=s+o,l=u-A,g=s-o,d=Be(c*l),h=Be(u*g),p=Be(c*g),f=Be(l*u);return new ne(d,h,f,p)}add(e){ie(e);const{x:t,y:n,z:i,t:r}=this,{x:o,y:A,z:s,t:a}=e,c=Be((n-t)*(A+o)),u=Be((n+t)*(A-o)),l=Be(u-c);if(l===W)return this.double();const g=Be(i*q*a),d=Be(r*q*s),h=d+g,p=u+c,f=d-g,m=Be(h*l),I=Be(p*f),y=Be(h*f),B=Be(l*p);return new ne(m,I,B,y)}subtract(e){return this.add(e.negate())}precomputeWindow(e){const t=1+256/e,n=[];let i=this,r=i;for(let o=0;o>=u,A>s&&(A-=c,e+=J),0===A){let e=i[n];t%2&&(e=e.negate()),o=o.add(e)}else{let e=i[n+Math.abs(A)-1];A<0&&(e=e.negate()),r=r.add(e)}}return ne.normalizeZ([r,o])[0]}multiply(e,t){return this.wNAF(ve(e,z.l),t)}multiplyUnsafe(e){let t=ve(e,z.l,!1);const n=ne.BASE,i=ne.ZERO;if(t===W)return i;if(this.equals(i)||t===J)return this;if(this.equals(n))return this.wNAF(t);let r=i,o=this;for(;t>W;)t&J&&(r=r.add(o)),o=o.double(),t>>=J;return r}isSmallOrder(){return this.multiplyUnsafe(z.h).equals(ne.ZERO)}isTorsionFree(){return this.multiplyUnsafe(z.l).equals(ne.ZERO)}toAffine(e=Ce(this.z)){const{x:t,y:n,z:i}=this,r=Be(t*e),o=Be(n*e);if(Be(i*e)!==J)throw new Error("invZ was invalid");return new ae(r,o)}fromRistrettoBytes(){oe()}toRistrettoBytes(){oe()}fromRistrettoHash(){oe()}}function ie(e){if(!(e instanceof ne))throw new TypeError("ExtendedPoint expected")}function re(e){if(!(e instanceof Ae))throw new TypeError("RistrettoPoint expected")}function oe(){throw new Error("Legacy method: switch to RistrettoPoint")}ne.BASE=new ne(z.Gx,z.Gy,J,Be(z.Gx*z.Gy)),ne.ZERO=new ne(W,J,J,W);class Ae{constructor(e){this.ep=e}static calcElligatorRistrettoMap(e){const{d:t}=z,n=Be(V*e*e),i=Be((n+J)*ee);let r=BigInt(-1);const o=Be((r-t*n)*Be(n+t));let{isValid:A,value:s}=Ee(i,o),a=Be(s*e);fe(a)||(a=Be(-a)),A||(s=a),A||(r=n);const c=Be(r*(n-J)*te-o),u=s*s,l=Be((s+s)*o),g=Be(c*X),d=Be(J-u),h=Be(J+u);return new ne(Be(l*h),Be(d*g),Be(g*h),Be(l*d))}static hashToCurve(e){const t=ye((e=ke(e,64)).slice(0,32)),n=this.calcElligatorRistrettoMap(t),i=ye(e.slice(32,64)),r=this.calcElligatorRistrettoMap(i);return new Ae(n.add(r))}static fromHex(e){e=ke(e,32);const{a:t,d:n}=z,i="RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint",r=ye(e);if(!function(e,t){if(e.length!==t.length)return!1;for(let n=0;n=i)throw new Error("Expected 0 < hex < P");if(!t&&o>=H)throw new Error("Expected 0 < hex < 2**256");const A=Be(o*o),s=Be(A-J),a=Be(n*A+J);let{isValid:c,value:u}=Ee(s,a);if(!c)throw new Error("Point.fromHex: invalid y coordinate");const l=(u&J)===J;return 0!=(128&e[31])!==l&&(u=Be(-u)),new ae(u,o)}static async fromPrivateKey(e){return(await Te(e)).point}toRawBytes(){const e=pe(this.y);return e[31]|=this.x&J?128:0,e}toHex(){return ge(this.toRawBytes())}toX25519(){const{y:e}=this;return pe(Be((J+e)*Ce(J-e)))}isTorsionFree(){return ne.fromAffine(this).isTorsionFree()}equals(e){return this.x===e.x&&this.y===e.y}negate(){return new ae(Be(-this.x),this.y)}add(e){return ne.fromAffine(this).add(ne.fromAffine(e)).toAffine()}subtract(e){return this.add(e.negate())}multiply(e){return ne.fromAffine(this).multiply(e,this).toAffine()}}ae.BASE=new ae(z.Gx,z.Gy),ae.ZERO=new ae(W,J);class ce{constructor(e,t){this.r=e,this.s=t,this.assertValidity()}static fromHex(e){const t=ke(e,64),n=ae.fromHex(t.slice(0,32),!1),i=me(t.slice(32,64));return new ce(n,i)}assertValidity(){const{r:e,s:t}=this;if(!(e instanceof ae))throw new Error("Expected Point instance");return ve(t,z.l,!1),this}toRawBytes(){const e=new Uint8Array(64);return e.set(this.r.toRawBytes()),e.set(pe(this.s),32),e}toHex(){return ge(this.toRawBytes())}}function ue(...e){if(!e.every((e=>e instanceof Uint8Array)))throw new Error("Expected Uint8Array list");if(1===e.length)return e[0];const t=e.reduce(((e,t)=>e+t.length),0),n=new Uint8Array(t);for(let t=0,i=0;tt.toString(16).padStart(2,"0")));function ge(e){if(!(e instanceof Uint8Array))throw new Error("Uint8Array expected");let t="";for(let n=0;n=W?n:t+n}function Ce(e,t=z.P){if(e===W||t<=W)throw new Error(`invert: expected positive integers, got n=${e} mod=${t}`);let n=Be(e,t),i=t,r=W,o=J,A=J,s=W;for(;n!==W;){const e=i/n,t=i%n,a=r-A*e,c=o-s*e;i=n,n=t,r=A,o=s,A=a,s=c}if(i!==J)throw new Error("invert: does not exist");return Be(r,t)}function we(e,t){const{P:n}=z;let i=e;for(;t-- >W;)i*=i,i%=n;return i}function Ee(e,t){const n=Be(t*t*t),i=Be(n*n*t);let r=Be(e*n*function(e){const{P:t}=z,n=BigInt(5),i=BigInt(10),r=BigInt(20),o=BigInt(40),A=BigInt(80),s=e*e%t*e%t,a=we(s,q)*s%t,c=we(a,J)*e%t,u=we(c,n)*c%t,l=we(u,i)*u%t,g=we(l,r)*l%t,d=we(g,o)*g%t,h=we(d,A)*d%t,p=we(h,A)*d%t,f=we(p,i)*u%t;return{pow_p_5_8:we(f,q)*e%t,b2:s}}(e*i).pow_p_5_8);const o=Be(t*r*r),A=r,s=Be(r*V),a=o===e,c=o===Be(-e),u=o===Be(-e*V);return a&&(r=A),(c||u)&&(r=s),fe(r)&&(r=Be(-r)),{isValid:a||c,value:r}}function Qe(e){return Ee(J,e)}function be(e){return Be(me(e),z.l)}function ke(e,t){const n=e instanceof Uint8Array?Uint8Array.from(e):de(e);if("number"==typeof t&&n.length!==t)throw new Error(`Expected ${t} bytes`);return n}function ve(e,t,n=!0){if(!t)throw new TypeError("Specify max value");if("number"==typeof e&&Number.isSafeInteger(e)&&(e=BigInt(e)),"bigint"==typeof e&&e{if((e=ke(e)).length<40||e.length>1024)throw new Error("Expected 40-1024 bytes of private key as per FIPS 186");return Be(me(e),z.l-J)+J},randomBytes:(e=32)=>{if(Ge.web)return Ge.web.getRandomValues(new Uint8Array(e));if(Ge.node){const{randomBytes:t}=Ge.node;return new Uint8Array(t(e).buffer)}throw new Error("The environment doesn't have randomBytes function")},randomPrivateKey:()=>xe.randomBytes(32),sha512:async(...e)=>{const t=ue(...e);if(Ge.web){const e=await Ge.web.subtle.digest("SHA-512",t.buffer);return new Uint8Array(e)}if(Ge.node)return Uint8Array.from(Ge.node.createHash("sha512").update(t).digest());throw new Error("The environment doesn't have sha512 function")},precompute(e=8,t=ae.BASE){const n=t.equals(ae.BASE)?t:new ae(t.x,t.y);return n._setWindowSize(e),n.multiply(q),n},sha512Sync:void 0};Object.defineProperties(xe,{sha512Sync:{configurable:!1,get:()=>De,set(e){De||(De=e)}}});var Ue=n(39098),_e=n.n(Ue),Le=n(31511),Ke=n.n(Le);const Ye=(e,t,n)=>e&t^e&n^t&n,je=new Uint32Array([1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298]),We=new Uint32Array([1779033703,3144134277,1013904242,2773480762,1359893119,2600822924,528734635,1541459225]),Je=new Uint32Array(64);class qe extends d{constructor(){super(64,32,8,!1),this.A=0|We[0],this.B=0|We[1],this.C=0|We[2],this.D=0|We[3],this.E=0|We[4],this.F=0|We[5],this.G=0|We[6],this.H=0|We[7]}get(){const{A:e,B:t,C:n,D:i,E:r,F:o,G:A,H:s}=this;return[e,t,n,i,r,o,A,s]}set(e,t,n,i,r,o,A,s){this.A=0|e,this.B=0|t,this.C=0|n,this.D=0|i,this.E=0|r,this.F=0|o,this.G=0|A,this.H=0|s}process(e,t){for(let n=0;n<16;n++,t+=4)Je[n]=e.getUint32(t,!1);for(let e=16;e<64;e++){const t=Je[e-15],n=Je[e-2],i=c(t,7)^c(t,18)^t>>>3,r=c(n,17)^c(n,19)^n>>>10;Je[e]=r+Je[e-7]+i+Je[e-16]|0}let{A:n,B:i,C:r,D:o,E:A,F:s,G:a,H:u}=this;for(let e=0;e<64;e++){const t=u+(c(A,6)^c(A,11)^c(A,25))+((l=A)&s^~l&a)+je[e]+Je[e]|0,g=(c(n,2)^c(n,13)^c(n,22))+Ye(n,i,r)|0;u=a,a=s,s=A,A=o+t|0,o=r,r=i,i=n,n=t+g|0}var l;n=n+this.A|0,i=i+this.B|0,r=r+this.C|0,o=o+this.D|0,A=A+this.E|0,s=s+this.F|0,a=a+this.G|0,u=u+this.H|0,this.set(n,i,r,o,A,s,a,u)}roundClean(){Je.fill(0)}destroy(){this.set(0,0,0,0,0,0,0,0),this.buffer.fill(0)}}const Ze=g((()=>new qe));var ze=n(48797),He=n(54380),Ve=n(53477);n(49500);class Xe extends TypeError{constructor(e,t){let n;const{message:i,...r}=e,{path:o}=e;super(0===o.length?i:"At path: "+o.join(".")+" -- "+i),Object.assign(this,r),this.name=this.constructor.name,this.failures=()=>{var i;return null!=(i=n)?i:n=[e,...t()]}}}function $e(e){return"object"==typeof e&&null!=e}function et(e){return"string"==typeof e?JSON.stringify(e):""+e}function tt(e,t,n,i){if(!0===e)return;!1===e?e={}:"string"==typeof e&&(e={message:e});const{path:r,branch:o}=t,{type:A}=n,{refinement:s,message:a="Expected a value of type `"+A+"`"+(s?" with refinement `"+s+"`":"")+", but received: `"+et(i)+"`"}=e;return{value:i,type:A,refinement:s,key:r[r.length-1],path:r,branch:o,...e,message:a}}function*nt(e,t,n,i){var r;$e(r=e)&&"function"==typeof r[Symbol.iterator]||(e=[e]);for(const r of e){const e=tt(r,t,n,i);e&&(yield e)}}function*it(e,t,n={}){const{path:i=[],branch:r=[e],coerce:o=!1,mask:A=!1}=n,s={path:i,branch:r};if(o&&(e=t.coercer(e,s),A&&"type"!==t.type&&$e(t.schema)&&$e(e)&&!Array.isArray(e)))for(const n in e)void 0===t.schema[n]&&delete e[n];let a=!0;for(const n of t.validator(e,s))a=!1,yield[n,void 0];for(let[n,c,u]of t.entries(e,s)){const t=it(c,u,{path:void 0===n?i:[...i,n],branch:void 0===n?r:[...r,c],coerce:o,mask:A});for(const i of t)i[0]?(a=!1,yield[i[0],void 0]):o&&(c=i[1],void 0===n?e=c:e instanceof Map?e.set(n,c):e instanceof Set?e.add(c):$e(e)&&(e[n]=c))}if(a)for(const n of t.refiner(e,s))a=!1,yield[n,void 0];a&&(yield[void 0,e])}class rt{constructor(e){const{type:t,schema:n,validator:i,refiner:r,coercer:o=(e=>e),entries:A=function*(){}}=e;this.type=t,this.schema=n,this.entries=A,this.coercer=o,this.validator=i?(e,t)=>nt(i(e,t),t,this,e):()=>[],this.refiner=r?(e,t)=>nt(r(e,t),t,this,e):()=>[]}assert(e){return ot(e,this)}create(e){return At(e,this)}is(e){return st(e,this)}mask(e){return function(e,t){const n=at(e,t,{coerce:!0,mask:!0});if(n[0])throw n[0];return n[1]}(e,this)}validate(e,t={}){return at(e,this,t)}}function ot(e,t){const n=at(e,t);if(n[0])throw n[0]}function At(e,t){const n=at(e,t,{coerce:!0});if(n[0])throw n[0];return n[1]}function st(e,t){return!at(e,t)[0]}function at(e,t,n={}){const i=it(e,t,n),r=function(e){const{done:t,value:n}=e.next();return t?void 0:n}(i);return r[0]?[new Xe(r[0],(function*(){for(const e of i)e[0]&&(yield e[0])})),void 0]:[void 0,r[1]]}function ct(e,t){return new rt({type:e,schema:null,validator:t})}function ut(e){return new rt({type:"array",schema:e,*entries(t){if(e&&Array.isArray(t))for(const[n,i]of t.entries())yield[n,i,e]},coercer:e=>Array.isArray(e)?e.slice():e,validator:e=>Array.isArray(e)||"Expected an array value, but received: "+et(e)})}function lt(){return ct("boolean",(e=>"boolean"==typeof e))}function gt(e){return ct("instance",(t=>t instanceof e||"Expected a `"+e.name+"` instance, but received: "+et(t)))}function dt(e){const t=et(e),n=typeof e;return new rt({type:"literal",schema:"string"===n||"number"===n||"boolean"===n?e:null,validator:n=>n===e||"Expected the literal `"+t+"`, but received: "+et(n)})}function ht(e){return new rt({...e,validator:(t,n)=>null===t||e.validator(t,n),refiner:(t,n)=>null===t||e.refiner(t,n)})}function pt(){return ct("number",(e=>"number"==typeof e&&!isNaN(e)||"Expected a number, but received: "+et(e)))}function ft(e){return new rt({...e,validator:(t,n)=>void 0===t||e.validator(t,n),refiner:(t,n)=>void 0===t||e.refiner(t,n)})}function mt(e,t){return new rt({type:"record",schema:null,*entries(n){if($e(n))for(const i in n){const r=n[i];yield[i,i,e],yield[i,r,t]}},validator:e=>$e(e)||"Expected an object, but received: "+et(e)})}function It(){return ct("string",(e=>"string"==typeof e||"Expected a string, but received: "+et(e)))}function yt(e){const t=ct("never",(()=>!1));return new rt({type:"tuple",schema:null,*entries(n){if(Array.isArray(n)){const i=Math.max(e.length,n.length);for(let r=0;rArray.isArray(e)||"Expected an array, but received: "+et(e)})}function Bt(e){const t=Object.keys(e);return new rt({type:"type",schema:e,*entries(n){if($e(n))for(const i of t)yield[i,n[i],e[i]]},validator:e=>$e(e)||"Expected an object, but received: "+et(e)})}function Ct(e){const t=e.map((e=>e.type)).join(" | ");return new rt({type:"union",schema:null,validator(n,i){const r=[];for(const t of e){const[...e]=it(n,t,i),[o]=e;if(!o[0])return[];for(const[t]of e)t&&r.push(t)}return["Expected the value to satisfy a union of `"+t+"`, but received: "+et(n),...r]}})}function wt(){return ct("unknown",(()=>!0))}function Et(e,t,n){return new rt({...e,coercer:(i,r)=>st(i,t)?e.coercer(n(i,r),r):e.coercer(i,r)})}var Qt=n(27969),bt=n(57167),kt=n.n(bt);const[vt,St,Mt]=[[],[],[]],Dt=BigInt(0),Nt=BigInt(1),Tt=BigInt(2),Pt=BigInt(7),Ot=BigInt(256),Ft=BigInt(113);for(let e=0,t=Nt,n=1,i=0;e<24;e++){[n,i]=[i,(2*n+3*i)%5],vt.push(2*(5*i+n)),St.push((e+1)*(e+2)/2%64);let r=Dt;for(let e=0;e<7;e++)t=(t<>Pt)*Ft)%Ot,t&Tt&&(r^=Nt<<(Nt<n>32?k(e,t,n):Q(e,t,n),Ut=(e,t,n)=>n>32?v(e,t,n):b(e,t,n);class _t extends l{constructor(e,t,n,i=!1,r=24){if(super(),this.blockLen=e,this.suffix=t,this.outputLen=n,this.enableXOF=i,this.rounds=r,this.pos=0,this.posOut=0,this.finished=!1,this.destroyed=!1,s.number(n),0>=this.blockLen||this.blockLen>=200)throw new Error("Sha3 supports only keccak-f1600 function");var o;this.state=new Uint8Array(200),this.state32=(o=this.state,new Uint32Array(o.buffer,o.byteOffset,Math.floor(o.byteLength/4)))}keccak(){!function(e,t=24){const n=new Uint32Array(10);for(let i=24-t;i<24;i++){for(let t=0;t<10;t++)n[t]=e[t]^e[t+10]^e[t+20]^e[t+30]^e[t+40];for(let t=0;t<10;t+=2){const i=(t+8)%10,r=(t+2)%10,o=n[r],A=n[r+1],s=xt(o,A,1)^n[i],a=Ut(o,A,1)^n[i+1];for(let n=0;n<50;n+=10)e[t+n]^=s,e[t+n+1]^=a}let t=e[2],r=e[3];for(let n=0;n<24;n++){const i=St[n],o=xt(t,r,i),A=Ut(t,r,i),s=vt[n];t=e[s],r=e[s+1],e[s]=o,e[s+1]=A}for(let t=0;t<50;t+=10){for(let i=0;i<10;i++)n[i]=e[t+i];for(let i=0;i<10;i++)e[t+i]^=~n[(i+2)%10]&n[(i+4)%10]}e[0]^=Rt[i],e[1]^=Gt[i]}n.fill(0)}(this.state32,this.rounds),this.posOut=0,this.pos=0}update(e){s.exists(this);const{blockLen:t,state:n}=this,i=(e=u(e)).length;for(let r=0;r=n&&this.keccak();const o=Math.min(n-this.posOut,r-i);e.set(t.subarray(this.posOut,this.posOut+o),i),this.posOut+=o,i+=o}return e}xofInto(e){if(!this.enableXOF)throw new Error("XOF is not possible for this instance");return this.writeInto(e)}xof(e){return s.number(e),this.xofInto(new Uint8Array(e))}digestInto(e){if(s.output(e,this),this.finished)throw new Error("digest() was already called");return this.writeInto(e),this.destroy(),e}digest(){return this.digestInto(new Uint8Array(this.outputLen))}destroy(){this.destroyed=!0,this.state.fill(0)}_cloneInto(e){const{blockLen:t,suffix:n,outputLen:i,rounds:r,enableXOF:o}=this;return e||(e=new _t(t,n,i,o,r)),e.state32.set(this.state32),e.pos=this.pos,e.posOut=this.posOut,e.finished=this.finished,e.rounds=r,e.suffix=n,e.outputLen=i,e.enableXOF=o,e.destroyed=this.destroyed,e}}const Lt=(e,t,n)=>g((()=>new _t(t,e,n))),Kt=(Lt(6,144,28),Lt(6,136,32),Lt(6,104,48),Lt(6,72,64),Lt(1,144,28),Lt(1,136,32)),Yt=(Lt(1,104,48),Lt(1,72,64),(e,t,n)=>function(e){const t=(t,n)=>e(n).update(u(t)).digest(),n=e({});return t.outputLen=n.outputLen,t.blockLen=n.blockLen,t.create=t=>e(t),t}(((i={})=>new _t(t,e,void 0===i.dkLen?n:i.dkLen,!0))));Yt(31,168,16),Yt(31,136,32);class jt extends l{constructor(e,t){super(),this.finished=!1,this.destroyed=!1,s.hash(e);const n=u(t);if(this.iHash=e.create(),"function"!=typeof this.iHash.update)throw new TypeError("Expected instance of class which extends utils.Hash");this.blockLen=this.iHash.blockLen,this.outputLen=this.iHash.outputLen;const i=this.blockLen,r=new Uint8Array(i);r.set(n.length>i?e.create().update(n).digest():n);for(let e=0;enew jt(e,t).update(n).digest();Wt.create=(e,t)=>new jt(e,t);var Jt=n(34490),qt=n.t(Jt,2);const Zt=BigInt(0),zt=BigInt(1),Ht=BigInt(2),Vt=BigInt(3),Xt=BigInt(8),$t=Object.freeze({a:Zt,b:BigInt(7),P:BigInt("0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f"),n:BigInt("0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141"),h:zt,Gx:BigInt("55066263022277343669578718895168534326250603453777594175500187360389116729240"),Gy:BigInt("32670510020758816978083085130507043184471273380659243275938904335757337482424"),beta:BigInt("0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee")});function en(e){const{a:t,b:n}=$t,i=wn(e*e),r=wn(i*e);return wn(r+t*e+n)}const tn=$t.a===Zt;class nn extends Error{constructor(e){super(e)}}class rn{constructor(e,t,n){this.x=e,this.y=t,this.z=n}static fromAffine(e){if(!(e instanceof An))throw new TypeError("JacobianPoint#fromAffine: expected Point");return new rn(e.x,e.y,zt)}static toAffineBatch(e){const t=function(e,t=$t.P){const n=new Array(e.length),i=Qn(e.reduce(((e,i,r)=>i===Zt?e:(n[r]=e,wn(e*i,t))),zt),t);return e.reduceRight(((e,i,r)=>i===Zt?e:(n[r]=wn(e*n[r],t),wn(e*i,t))),i),n}(e.map((e=>e.z)));return e.map(((e,n)=>e.toAffine(t[n])))}static normalizeZ(e){return rn.toAffineBatch(e).map(rn.fromAffine)}equals(e){if(!(e instanceof rn))throw new TypeError("JacobianPoint expected");const{x:t,y:n,z:i}=this,{x:r,y:o,z:A}=e,s=wn(i*i),a=wn(A*A),c=wn(t*a),u=wn(r*s),l=wn(wn(n*A)*a),g=wn(wn(o*i)*s);return c===u&&l===g}negate(){return new rn(this.x,wn(-this.y),this.z)}double(){const{x:e,y:t,z:n}=this,i=wn(e*e),r=wn(t*t),o=wn(r*r),A=e+r,s=wn(Ht*(wn(A*A)-i-o)),a=wn(Vt*i),c=wn(a*a),u=wn(c-Ht*s),l=wn(a*(s-u)-Xt*o),g=wn(Ht*t*n);return new rn(u,l,g)}add(e){if(!(e instanceof rn))throw new TypeError("JacobianPoint expected");const{x:t,y:n,z:i}=this,{x:r,y:o,z:A}=e;if(r===Zt||o===Zt)return this;if(t===Zt||n===Zt)return e;const s=wn(i*i),a=wn(A*A),c=wn(t*a),u=wn(r*s),l=wn(wn(n*A)*a),g=wn(wn(o*i)*s),d=wn(u-c),h=wn(g-l);if(d===Zt)return h===Zt?this.double():rn.ZERO;const p=wn(d*d),f=wn(d*p),m=wn(c*p),I=wn(h*h-f-Ht*m),y=wn(h*(m-I)-l*f),B=wn(i*A*d);return new rn(I,y,B)}subtract(e){return this.add(e.negate())}multiplyUnsafe(e){const t=rn.ZERO;if("bigint"==typeof e&&e===Zt)return t;let n=Cn(e);if(n===zt)return this;if(!tn){let e=t,i=this;for(;n>Zt;)n&zt&&(e=e.add(i)),i=i.double(),n>>=zt;return e}let{k1neg:i,k1:r,k2neg:o,k2:A}=vn(n),s=t,a=t,c=this;for(;r>Zt||A>Zt;)r&zt&&(s=s.add(c)),A&zt&&(a=a.add(c)),c=c.double(),r>>=zt,A>>=zt;return i&&(s=s.negate()),o&&(a=a.negate()),a=new rn(wn(a.x*$t.beta),a.y,a.z),s.add(a)}precomputeWindow(e){const t=tn?128/e+1:256/e+1,n=[];let i=this,r=i;for(let o=0;o>=u,A>s&&(A-=c,e+=zt),0===A){let e=i[n];t%2&&(e=e.negate()),o=o.add(e)}else{let e=i[n+Math.abs(A)-1];A<0&&(e=e.negate()),r=r.add(e)}}return{p:r,f:o}}multiply(e,t){let n,i,r=Cn(e);if(tn){const{k1neg:e,k1:o,k2neg:A,k2:s}=vn(r);let{p:a,f:c}=this.wNAF(o,t),{p:u,f:l}=this.wNAF(s,t);e&&(a=a.negate()),A&&(u=u.negate()),u=new rn(wn(u.x*$t.beta),u.y,u.z),n=a.add(u),i=c.add(l)}else{const{p:e,f:o}=this.wNAF(r,t);n=e,i=o}return rn.normalizeZ([n,i])[0]}toAffine(e=Qn(this.z)){const{x:t,y:n,z:i}=this,r=e,o=wn(r*r),A=wn(o*r),s=wn(t*o),a=wn(n*A);if(wn(i*r)!==zt)throw new Error("invZ was invalid");return new An(s,a)}}rn.BASE=new rn($t.Gx,$t.Gy,zt),rn.ZERO=new rn(Zt,zt,Zt);const on=new WeakMap;class An{constructor(e,t){this.x=e,this.y=t}_setWindowSize(e){this._WINDOW_SIZE=e,on.delete(this)}hasEvenY(){return this.y%Ht===Zt}static fromCompressedHex(e){const t=32===e.length,n=yn(t?e:e.subarray(1));if(!Tn(n))throw new Error("Point is not on curve");let i=function(e){const{P:t}=$t,n=BigInt(6),i=BigInt(11),r=BigInt(22),o=BigInt(23),A=BigInt(44),s=BigInt(88),a=e*e*e%t,c=a*a*e%t,u=En(c,Vt)*c%t,l=En(u,Vt)*c%t,g=En(l,Ht)*a%t,d=En(g,i)*g%t,h=En(d,r)*d%t,p=En(h,A)*h%t,f=En(p,s)*p%t,m=En(f,A)*h%t,I=En(m,Vt)*c%t,y=En(I,o)*d%t,B=En(y,n)*a%t;return En(B,Ht)}(en(n));const r=(i&zt)===zt;t?r&&(i=wn(-i)):1==(1&e[0])!==r&&(i=wn(-i));const o=new An(n,i);return o.assertValidity(),o}static fromUncompressedHex(e){const t=yn(e.subarray(1,33)),n=yn(e.subarray(33,65)),i=new An(t,n);return i.assertValidity(),i}static fromHex(e){const t=Bn(e),n=t.length,i=t[0];if(32===n||33===n&&(2===i||3===i))return this.fromCompressedHex(t);if(65===n&&4===i)return this.fromUncompressedHex(t);throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${n}`)}static fromPrivateKey(e){return An.BASE.multiply(On(e))}static fromSignature(e,t,n){const i=function(e){const{n:t}=$t,n=8*e.length-256;let i=yn(e);return n>0&&(i>>=BigInt(n)),i>=t&&(i-=t),i}(e=Bn(e)),{r,s:o}=function(e){if(e instanceof cn)return e.assertValidity(),e;try{return cn.fromDER(e)}catch(t){return cn.fromCompact(e)}}(t);if(0!==n&&1!==n)throw new Error("Cannot recover signature: invalid recovery bit");const A=1&n?"03":"02",s=An.fromHex(A+hn(r)),{n:a}=$t,c=Qn(r,a),u=wn(-i*c,a),l=wn(o*c,a),g=An.BASE.multiplyAndAddUnsafe(s,u,l);if(!g)throw new Error("Cannot recover signature: point at infinify");return g.assertValidity(),g}toRawBytes(e=!1){return In(this.toHex(e))}toHex(e=!1){const t=hn(this.x);return e?`${this.hasEvenY()?"02":"03"}${t}`:`04${t}${hn(this.y)}`}toHexX(){return this.toHex(!0).slice(2)}toRawX(){return this.toRawBytes(!0).slice(1)}assertValidity(){const e="Point is not on elliptic curve",{x:t,y:n}=this;if(!Tn(t)||!Tn(n))throw new Error(e);const i=wn(n*n);if(wn(i-en(t))!==Zt)throw new Error(e)}equals(e){return this.x===e.x&&this.y===e.y}negate(){return new An(this.x,wn(-this.y))}double(){return rn.fromAffine(this).double().toAffine()}add(e){return rn.fromAffine(this).add(rn.fromAffine(e)).toAffine()}subtract(e){return this.add(e.negate())}multiply(e){return rn.fromAffine(this).multiply(e,this).toAffine()}multiplyAndAddUnsafe(e,t,n){const i=rn.fromAffine(this),r=t===Zt||t===zt||this!==An.BASE?i.multiplyUnsafe(t):i.multiply(t),o=rn.fromAffine(e).multiplyUnsafe(n),A=r.add(o);return A.equals(rn.ZERO)?void 0:A.toAffine()}}function sn(e){return Number.parseInt(e[0],16)>=8?"00"+e:e}function an(e){if(e.length<2||2!==e[0])throw new Error(`Invalid signature integer tag: ${gn(e)}`);const t=e[1],n=e.subarray(2,t+2);if(!t||n.length!==t)throw new Error("Invalid signature integer: wrong length");if(0===n[0]&&n[1]<=127)throw new Error("Invalid signature integer: trailing length");return{data:yn(n),left:e.subarray(t+2)}}An.BASE=new An($t.Gx,$t.Gy),An.ZERO=new An(Zt,Zt);class cn{constructor(e,t){this.r=e,this.s=t,this.assertValidity()}static fromCompact(e){const t=e instanceof Uint8Array,n="Signature.fromCompact";if("string"!=typeof e&&!t)throw new TypeError(`${n}: Expected string or Uint8Array`);const i=t?gn(e):e;if(128!==i.length)throw new Error(`${n}: Expected 64-byte hex`);return new cn(mn(i.slice(0,64)),mn(i.slice(64,128)))}static fromDER(e){const t=e instanceof Uint8Array;if("string"!=typeof e&&!t)throw new TypeError("Signature.fromDER: Expected string or Uint8Array");const{r:n,s:i}=function(e){if(e.length<2||48!=e[0])throw new Error(`Invalid signature tag: ${gn(e)}`);if(e[1]!==e.length-2)throw new Error("Invalid signature: incorrect length");const{data:t,left:n}=an(e.subarray(2)),{data:i,left:r}=an(n);if(r.length)throw new Error(`Invalid signature: left bytes after parsing: ${gn(r)}`);return{r:t,s:i}}(t?e:In(e));return new cn(n,i)}static fromHex(e){return this.fromDER(e)}assertValidity(){const{r:e,s:t}=this;if(!Nn(e))throw new Error("Invalid Signature: r must be 0 < r < n");if(!Nn(t))throw new Error("Invalid Signature: s must be 0 < s < n")}hasHighS(){const e=$t.n>>zt;return this.s>e}normalizeS(){return this.hasHighS()?new cn(this.r,$t.n-this.s):this}toDERRawBytes(e=!1){return In(this.toDERHex(e))}toDERHex(e=!1){const t=sn(fn(this.s));if(e)return t;const n=sn(fn(this.r)),i=fn(n.length/2),r=fn(t.length/2);return`30${fn(n.length/2+t.length/2+4)}02${i}${n}02${r}${t}`}toRawBytes(){return this.toDERRawBytes()}toHex(){return this.toDERHex()}toCompactRawBytes(){return In(this.toCompactHex())}toCompactHex(){return hn(this.r)+hn(this.s)}}function un(...e){if(!e.every((e=>e instanceof Uint8Array)))throw new Error("Uint8Array list expected");if(1===e.length)return e[0];const t=e.reduce(((e,t)=>e+t.length),0),n=new Uint8Array(t);for(let t=0,i=0;tt.toString(16).padStart(2,"0")));function gn(e){if(!(e instanceof Uint8Array))throw new Error("Expected Uint8Array");let t="";for(let n=0;n0)return BigInt(e);if("bigint"==typeof e&&Nn(e))return e;throw new TypeError("Expected valid private scalar: 0 < scalar < curve.n")}function wn(e,t=$t.P){const n=e%t;return n>=Zt?n:t+n}function En(e,t){const{P:n}=$t;let i=e;for(;t-- >Zt;)i*=i,i%=n;return i}function Qn(e,t=$t.P){if(e===Zt||t<=Zt)throw new Error(`invert: expected positive integers, got n=${e} mod=${t}`);let n=wn(e,t),i=t,r=Zt,o=zt,A=zt,s=Zt;for(;n!==Zt;){const e=i/n,t=i%n,a=r-A*e,c=o-s*e;i=n,n=t,r=A,o=s,A=a,s=c}if(i!==zt)throw new Error("invert: does not exist");return wn(r,t)}const bn=(e,t)=>(e+t/Ht)/t,kn={a1:BigInt("0x3086d221a7d46bcde86c90e49284eb15"),b1:-zt*BigInt("0xe4437ed6010e88286f547fa90abfe4c3"),a2:BigInt("0x114ca50f7a8e2f3f657c1108d9d44cfd8"),b2:BigInt("0x3086d221a7d46bcde86c90e49284eb15"),POW_2_128:BigInt("0x100000000000000000000000000000000")};function vn(e){const{n:t}=$t,{a1:n,b1:i,a2:r,b2:o,POW_2_128:A}=kn,s=bn(o*e,t),a=bn(-i*e,t);let c=wn(e-s*n-a*r,t),u=wn(-s*i-a*o,t);const l=c>A,g=u>A;if(l&&(c=t-c),g&&(u=t-u),c>A||u>A)throw new Error("splitScalarEndo: Endomorphism failed, k="+e);return{k1neg:l,k1:c,k2neg:g,k2:u}}let Sn,Mn;class Dn{constructor(){this.v=new Uint8Array(32).fill(1),this.k=new Uint8Array(32).fill(0),this.counter=0}hmac(...e){return _n.hmacSha256(this.k,...e)}hmacSync(...e){return Mn(this.k,...e)}checkSync(){if("function"!=typeof Mn)throw new nn("hmacSha256Sync needs to be set")}incr(){if(this.counter>=1e3)throw new Error("Tried 1,000 k values for sign(), all were invalid");this.counter+=1}async reseed(e=new Uint8Array){this.k=await this.hmac(this.v,Uint8Array.from([0]),e),this.v=await this.hmac(this.v),0!==e.length&&(this.k=await this.hmac(this.v,Uint8Array.from([1]),e),this.v=await this.hmac(this.v))}reseedSync(e=new Uint8Array){this.checkSync(),this.k=this.hmacSync(this.v,Uint8Array.from([0]),e),this.v=this.hmacSync(this.v),0!==e.length&&(this.k=this.hmacSync(this.v,Uint8Array.from([1]),e),this.v=this.hmacSync(this.v))}async generate(){return this.incr(),this.v=await this.hmac(this.v),this.v}generateSync(){return this.checkSync(),this.incr(),this.v=this.hmacSync(this.v),this.v}}function Nn(e){return Zt0)t=BigInt(e);else if("string"==typeof e){if(64!==e.length)throw new Error("Expected 32 bytes of private key");t=mn(e)}else{if(!(e instanceof Uint8Array))throw new TypeError("Expected valid private key");if(32!==e.length)throw new Error("Expected 32 bytes of private key");t=yn(e)}if(!Nn(t))throw new Error("Expected private key: 0 < key < n");return t}function Fn(e){return yn(e.length>32?e.slice(0,32):e)}function Rn(e){const t=Fn(e),n=wn(t,$t.n);return Gn(n{if((e=Bn(e)).length<40||e.length>1024)throw new Error("Expected 40-1024 bytes of private key as per FIPS 186");return pn(wn(yn(e),$t.n-zt)+zt)},randomBytes:(e=32)=>{if(xn.web)return xn.web.getRandomValues(new Uint8Array(e));if(xn.node){const{randomBytes:t}=xn.node;return Uint8Array.from(t(e))}throw new Error("The environment doesn't have randomBytes function")},randomPrivateKey:()=>_n.hashToPrivateKey(_n.randomBytes(40)),sha256:async(...e)=>{if(xn.web){const t=await xn.web.subtle.digest("SHA-256",un(...e));return new Uint8Array(t)}if(xn.node){const{createHash:t}=xn.node,n=t("sha256");return e.forEach((e=>n.update(e))),Uint8Array.from(n.digest())}throw new Error("The environment doesn't have sha256 function")},hmacSha256:async(e,...t)=>{if(xn.web){const n=await xn.web.subtle.importKey("raw",e,{name:"HMAC",hash:{name:"SHA-256"}},!1,["sign"]),i=un(...t),r=await xn.web.subtle.sign("HMAC",n,i);return new Uint8Array(r)}if(xn.node){const{createHmac:n}=xn.node,i=n("sha256",e);return t.forEach((e=>i.update(e))),Uint8Array.from(i.digest())}throw new Error("The environment doesn't have hmac-sha256 function")},sha256Sync:void 0,hmacSha256Sync:void 0,taggedHash:async(e,...t)=>{let n=Un[e];if(void 0===n){const t=await _n.sha256(Uint8Array.from(e,(e=>e.charCodeAt(0))));n=un(t,t),Un[e]=n}return _n.sha256(n,...t)},taggedHashSync:(e,...t)=>{if("function"!=typeof Sn)throw new nn("sha256Sync is undefined, you need to set it");let n=Un[e];if(void 0===n){const t=Sn(Uint8Array.from(e,(e=>e.charCodeAt(0))));n=un(t,t),Un[e]=n}return Sn(n,...t)},precompute(e=8,t=An.BASE){const n=t===An.BASE?t:new An(t.x,t.y);return n._setWindowSize(e),n.multiply(Vt),n}};Object.defineProperties(_n,{sha256Sync:{configurable:!1,get:()=>Sn,set(e){Sn||(Sn=e)}},hmacSha256Sync:{configurable:!1,get:()=>Mn,set(e){Mn||(Mn=e)}}});var Ln=n(49500);xe.sha512Sync=(...e)=>K(xe.concatBytes(...e));const Kn=xe.randomPrivateKey,Yn=()=>{const e=xe.randomPrivateKey(),t=jn(e),n=new Uint8Array(64);return n.set(e),n.set(t,32),{publicKey:t,secretKey:n}},jn=Oe;function Wn(e){try{return ae.fromHex(e,!0),!0}catch{return!1}}const Jn=(e,t)=>Fe(e,t.slice(0,32)),qn=Re,Zn=e=>i.lW.isBuffer(e)?e:e instanceof Uint8Array?i.lW.from(e.buffer,e.byteOffset,e.byteLength):i.lW.from(e);class zn{constructor(e){Object.assign(this,e)}encode(){return i.lW.from((0,ze.serialize)(Vn,this))}static decode(e){return(0,ze.deserialize)(Vn,this,e)}static decodeUnchecked(e){return(0,ze.deserializeUnchecked)(Vn,this,e)}}class Hn extends zn{constructor(e){if(super(e),this.enum="",1!==Object.keys(e).length)throw new Error("Enum can only take single value");Object.keys(e).map((e=>{this.enum=e}))}}const Vn=new Map;let Xn;const $n=32,ei=32;let ti=1;Xn=Symbol.toStringTag;class ni extends zn{constructor(e){if(super({}),this._bn=void 0,function(e){return void 0!==e._bn}(e))this._bn=e._bn;else{if("string"==typeof e){const t=Ke().decode(e);if(t.length!=ei)throw new Error("Invalid public key input");this._bn=new(_e())(t)}else this._bn=new(_e())(e);if(this._bn.byteLength()>ei)throw new Error("Invalid public key input")}}static unique(){const e=new ni(ti);return ti+=1,new ni(e.toBuffer())}equals(e){return this._bn.eq(e._bn)}toBase58(){return Ke().encode(this.toBytes())}toJSON(){return this.toBase58()}toBytes(){const e=this.toBuffer();return new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}toBuffer(){const e=this._bn.toArrayLike(i.lW);if(e.length===ei)return e;const t=i.lW.alloc(32);return e.copy(t,32-e.length),t}get[Xn](){return`PublicKey(${this.toString()})`}toString(){return this.toBase58()}static async createWithSeed(e,t,n){const r=i.lW.concat([e.toBuffer(),i.lW.from(t),n.toBuffer()]),o=Ze(r);return new ni(o)}static createProgramAddressSync(e,t){let n=i.lW.alloc(0);e.forEach((function(e){if(e.length>$n)throw new TypeError("Max seed length exceeded");n=i.lW.concat([n,Zn(e)])})),n=i.lW.concat([n,t.toBuffer(),i.lW.from("ProgramDerivedAddress")]);const r=Ze(n);if(Wn(r))throw new Error("Invalid seeds, address must fall off the curve");return new ni(r)}static async createProgramAddress(e,t){return this.createProgramAddressSync(e,t)}static findProgramAddressSync(e,t){let n,r=255;for(;0!=r;){try{const o=e.concat(i.lW.from([r]));n=this.createProgramAddressSync(o,t)}catch(e){if(e instanceof TypeError)throw e;r--;continue}return[n,r]}throw new Error("Unable to find a viable program address nonce")}static async findProgramAddress(e,t){return this.findProgramAddressSync(e,t)}static isOnCurve(e){return Wn(new ni(e).toBytes())}}ni.default=new ni("11111111111111111111111111111111"),Vn.set(ni,{kind:"struct",fields:[["_bn","u256"]]});class ii{constructor(e){if(this._publicKey=void 0,this._secretKey=void 0,e){const t=Zn(e);if(64!==e.length)throw new Error("bad secret key size");this._publicKey=t.slice(32,64),this._secretKey=t.slice(0,32)}else this._secretKey=Zn(Kn()),this._publicKey=Zn(jn(this._secretKey))}get publicKey(){return new ni(this._publicKey)}get secretKey(){return i.lW.concat([this._secretKey,this._publicKey],64)}}const ri=new ni("BPFLoader1111111111111111111111111111111111"),oi=1232,Ai=127,si=64;class ai extends Error{constructor(e){super(`Signature ${e} has expired: block height exceeded.`),this.signature=void 0,this.signature=e}}Object.defineProperty(ai.prototype,"name",{value:"TransactionExpiredBlockheightExceededError"});class ci extends Error{constructor(e,t){super(`Transaction was not confirmed in ${t.toFixed(2)} seconds. It is unknown if it succeeded or failed. Check signature ${e} using the Solana Explorer or CLI tools.`),this.signature=void 0,this.signature=e}}Object.defineProperty(ci.prototype,"name",{value:"TransactionExpiredTimeoutError"});class ui extends Error{constructor(e){super(`Signature ${e} has expired: the nonce is no longer valid.`),this.signature=void 0,this.signature=e}}Object.defineProperty(ui.prototype,"name",{value:"TransactionExpiredNonceInvalidError"});class li{constructor(e,t){this.staticAccountKeys=void 0,this.accountKeysFromLookups=void 0,this.staticAccountKeys=e,this.accountKeysFromLookups=t}keySegments(){const e=[this.staticAccountKeys];return this.accountKeysFromLookups&&(e.push(this.accountKeysFromLookups.writable),e.push(this.accountKeysFromLookups.readonly)),e}get(e){for(const t of this.keySegments()){if(e256)throw new Error("Account index overflow encountered during compilation");const t=new Map;this.keySegments().flat().forEach(((e,n)=>{t.set(e.toBase58(),n)}));const n=e=>{const n=t.get(e.toBase58());if(void 0===n)throw new Error("Encountered an unknown instruction account key during compilation");return n};return e.map((e=>({programIdIndex:n(e.programId),accountKeyIndexes:e.keys.map((e=>n(e.pubkey))),data:e.data})))}}const gi=(e="publicKey")=>He.blob(32,e),di=(e="signature")=>He.blob(64,e),hi=(e="string")=>{const t=He.struct([He.u32("length"),He.u32("lengthPadding"),He.blob(He.offset(He.u32(),-8),"chars")],e),n=t.decode.bind(t),r=t.encode.bind(t),o=t;return o.decode=(e,t)=>n(e,t).chars.toString(),o.encode=(e,t,n)=>{const o={chars:i.lW.from(e,"utf8")};return r(o,t,n)},o.alloc=e=>He.u32().span+He.u32().span+i.lW.from(e,"utf8").length,o};function pi(e,t){const n=e=>{if(e.span>=0)return e.span;if("function"==typeof e.alloc)return e.alloc(t[e.property]);if("count"in e&&"elementLayout"in e){const i=t[e.property];if(Array.isArray(i))return i.length*n(e.elementLayout)}else if("fields"in e)return pi({layout:e},t[e.property]);return 0};let i=0;return e.layout.fields.forEach((e=>{i+=n(e)})),i}function fi(e){let t=0,n=0;for(;;){let i=e.shift();if(t|=(127&i)<<7*n,n+=1,0==(128&i))break}return t}function mi(e,t){let n=t;for(;;){let t=127&n;if(n>>=7,0==n){e.push(t);break}t|=128,e.push(t)}}function Ii(e,t){if(!e)throw new Error(t||"Assertion failed")}class yi{constructor(e,t){this.payer=void 0,this.keyMetaMap=void 0,this.payer=e,this.keyMetaMap=t}static compile(e,t){const n=new Map,i=e=>{const t=e.toBase58();let i=n.get(t);return void 0===i&&(i={isSigner:!1,isWritable:!1,isInvoked:!1},n.set(t,i)),i},r=i(t);r.isSigner=!0,r.isWritable=!0;for(const t of e){i(t.programId).isInvoked=!0;for(const e of t.keys){const t=i(e.pubkey);t.isSigner||(t.isSigner=e.isSigner),t.isWritable||(t.isWritable=e.isWritable)}}return new yi(t,n)}getMessageComponents(){const e=[...this.keyMetaMap.entries()];Ii(e.length<=256,"Max static account keys length exceeded");const t=e.filter((([,e])=>e.isSigner&&e.isWritable)),n=e.filter((([,e])=>e.isSigner&&!e.isWritable)),i=e.filter((([,e])=>!e.isSigner&&e.isWritable)),r=e.filter((([,e])=>!e.isSigner&&!e.isWritable)),o={numRequiredSignatures:t.length+n.length,numReadonlySignedAccounts:n.length,numReadonlyUnsignedAccounts:r.length};{Ii(t.length>0,"Expected at least one writable signer key");const[e]=t[0];Ii(e===this.payer.toBase58(),"Expected first writable signer key to be the fee payer")}return[o,[...t.map((([e])=>new ni(e))),...n.map((([e])=>new ni(e))),...i.map((([e])=>new ni(e))),...r.map((([e])=>new ni(e)))]]}extractTableLookup(e){const[t,n]=this.drainKeysFoundInLookupTable(e.state.addresses,(e=>!e.isSigner&&!e.isInvoked&&e.isWritable)),[i,r]=this.drainKeysFoundInLookupTable(e.state.addresses,(e=>!e.isSigner&&!e.isInvoked&&!e.isWritable));if(0!==t.length||0!==i.length)return[{accountKey:e.key,writableIndexes:t,readonlyIndexes:i},{writable:n,readonly:r}]}drainKeysFoundInLookupTable(e,t){const n=new Array,i=new Array;for(const[r,o]of this.keyMetaMap.entries())if(t(o)){const t=new ni(r),o=e.findIndex((e=>e.equals(t)));o>=0&&(Ii(o<256,"Max lookup table index exceeded"),n.push(o),i.push(t),this.keyMetaMap.delete(r))}return[n,i]}}class Bi{constructor(e){this.header=void 0,this.accountKeys=void 0,this.recentBlockhash=void 0,this.instructions=void 0,this.indexToProgramIds=new Map,this.header=e.header,this.accountKeys=e.accountKeys.map((e=>new ni(e))),this.recentBlockhash=e.recentBlockhash,this.instructions=e.instructions,this.instructions.forEach((e=>this.indexToProgramIds.set(e.programIdIndex,this.accountKeys[e.programIdIndex])))}get version(){return"legacy"}get staticAccountKeys(){return this.accountKeys}get compiledInstructions(){return this.instructions.map((e=>({programIdIndex:e.programIdIndex,accountKeyIndexes:e.accounts,data:Ke().decode(e.data)})))}get addressTableLookups(){return[]}getAccountKeys(){return new li(this.staticAccountKeys)}static compile(e){const t=yi.compile(e.instructions,e.payerKey),[n,i]=t.getMessageComponents(),r=new li(i).compileInstructions(e.instructions).map((e=>({programIdIndex:e.programIdIndex,accounts:e.accountKeyIndexes,data:Ke().encode(e.data)})));return new Bi({header:n,accountKeys:i,recentBlockhash:e.recentBlockhash,instructions:r})}isAccountSigner(e){return e=this.header.numRequiredSignatures?e-t!this.isProgramId(t)))}serialize(){const e=this.accountKeys.length;let t=[];mi(t,e);const n=this.instructions.map((e=>{const{accounts:t,programIdIndex:n}=e,r=Array.from(Ke().decode(e.data));let o=[];mi(o,t.length);let A=[];return mi(A,r.length),{programIdIndex:n,keyIndicesCount:i.lW.from(o),keyIndices:t,dataLength:i.lW.from(A),data:r}}));let r=[];mi(r,n.length);let o=i.lW.alloc(oi);i.lW.from(r).copy(o);let A=r.length;n.forEach((e=>{const t=He.struct([He.u8("programIdIndex"),He.blob(e.keyIndicesCount.length,"keyIndicesCount"),He.seq(He.u8("keyIndex"),e.keyIndices.length,"keyIndices"),He.blob(e.dataLength.length,"dataLength"),He.seq(He.u8("userdatum"),e.data.length,"data")]).encode(e,o,A);A+=t})),o=o.slice(0,A);const s=He.struct([He.blob(1,"numRequiredSignatures"),He.blob(1,"numReadonlySignedAccounts"),He.blob(1,"numReadonlyUnsignedAccounts"),He.blob(t.length,"keyCount"),He.seq(gi("key"),e,"keys"),gi("recentBlockhash")]),a={numRequiredSignatures:i.lW.from([this.header.numRequiredSignatures]),numReadonlySignedAccounts:i.lW.from([this.header.numReadonlySignedAccounts]),numReadonlyUnsignedAccounts:i.lW.from([this.header.numReadonlyUnsignedAccounts]),keyCount:i.lW.from(t),keys:this.accountKeys.map((e=>Zn(e.toBytes()))),recentBlockhash:Ke().decode(this.recentBlockhash)};let c=i.lW.alloc(2048);const u=s.encode(a,c);return o.copy(c,u),c.slice(0,u+o.length)}static from(e){let t=[...e];const n=t.shift();if(n!==(n&Ai))throw new Error("Versioned messages must be deserialized with VersionedMessage.deserialize()");const r=t.shift(),o=t.shift(),A=fi(t);let s=[];for(let e=0;e0)throw new Error("Failed to get account keys because address table lookups were not resolved");return new li(this.staticAccountKeys,t)}isAccountSigner(e){return e=n?e-ne+t.writableIndexes.length),0):e>=this.header.numRequiredSignatures?e-te.key.equals(n.accountKey)));if(!i)throw new Error(`Failed to find address lookup table account for table key ${n.accountKey.toBase58()}`);for(const e of n.writableIndexes){if(!(ee.toBytes())),recentBlockhash:Ke().decode(this.recentBlockhash),instructionsLength:new Uint8Array(n),serializedInstructions:t,addressTableLookupsLength:new Uint8Array(r),serializedAddressTableLookups:i},A);return A.slice(0,s)}serializeInstructions(){let e=0;const t=new Uint8Array(oi);for(const n of this.compiledInstructions){const i=Array();mi(i,n.accountKeyIndexes.length);const r=Array();mi(r,n.data.length),e+=He.struct([He.u8("programIdIndex"),He.blob(i.length,"encodedAccountKeyIndexesLength"),He.seq(He.u8(),n.accountKeyIndexes.length,"accountKeyIndexes"),He.blob(r.length,"encodedDataLength"),He.blob(n.data.length,"data")]).encode({programIdIndex:n.programIdIndex,encodedAccountKeyIndexesLength:new Uint8Array(i),accountKeyIndexes:n.accountKeyIndexes,encodedDataLength:new Uint8Array(r),data:n.data},t,e)}return t.slice(0,e)}serializeAddressTableLookups(){let e=0;const t=new Uint8Array(oi);for(const n of this.addressTableLookups){const i=Array();mi(i,n.writableIndexes.length);const r=Array();mi(r,n.readonlyIndexes.length),e+=He.struct([gi("accountKey"),He.blob(i.length,"encodedWritableIndexesLength"),He.seq(He.u8(),n.writableIndexes.length,"writableIndexes"),He.blob(r.length,"encodedReadonlyIndexesLength"),He.seq(He.u8(),n.readonlyIndexes.length,"readonlyIndexes")]).encode({accountKey:n.accountKey.toBytes(),encodedWritableIndexesLength:new Uint8Array(i),writableIndexes:n.writableIndexes,encodedReadonlyIndexesLength:new Uint8Array(r),readonlyIndexes:n.readonlyIndexes},t,e)}return t.slice(0,e)}static deserialize(e){let t=[...e];const n=t.shift(),i=n&Ai;Ii(n!==i,"Expected versioned message but received legacy message"),Ii(0===i,`Expected versioned message with version 0 but found version ${i}`);const r={numRequiredSignatures:t.shift(),numReadonlySignedAccounts:t.shift(),numReadonlyUnsignedAccounts:t.shift()},o=[],A=fi(t);for(let e=0;e{const t=wi.deserializeMessageVersion(e);if("legacy"===t)return Bi.from(e);if(0===t)return Ci.deserialize(e);throw new Error(`Transaction message version ${t} deserialization is not supported`)}};let Ei;!function(e){e[e.BLOCKHEIGHT_EXCEEDED=0]="BLOCKHEIGHT_EXCEEDED",e[e.PROCESSED=1]="PROCESSED",e[e.TIMED_OUT=2]="TIMED_OUT",e[e.NONCE_INVALID=3]="NONCE_INVALID"}(Ei||(Ei={}));const Qi=i.lW.alloc(si).fill(0);class bi{constructor(e){this.keys=void 0,this.programId=void 0,this.data=i.lW.alloc(0),this.programId=e.programId,this.keys=e.keys,e.data&&(this.data=e.data)}toJSON(){return{keys:this.keys.map((({pubkey:e,isSigner:t,isWritable:n})=>({pubkey:e.toJSON(),isSigner:t,isWritable:n}))),programId:this.programId.toJSON(),data:[...this.data]}}}class ki{get signature(){return this.signatures.length>0?this.signatures[0].signature:null}constructor(e){if(this.signatures=[],this.feePayer=void 0,this.instructions=[],this.recentBlockhash=void 0,this.lastValidBlockHeight=void 0,this.nonceInfo=void 0,this.minNonceContextSlot=void 0,this._message=void 0,this._json=void 0,e)if(e.feePayer&&(this.feePayer=e.feePayer),e.signatures&&(this.signatures=e.signatures),Object.prototype.hasOwnProperty.call(e,"nonceInfo")){const{minContextSlot:t,nonceInfo:n}=e;this.minNonceContextSlot=t,this.nonceInfo=n}else if(Object.prototype.hasOwnProperty.call(e,"lastValidBlockHeight")){const{blockhash:t,lastValidBlockHeight:n}=e;this.recentBlockhash=t,this.lastValidBlockHeight=n}else{const{recentBlockhash:t,nonceInfo:n}=e;n&&(this.nonceInfo=n),this.recentBlockhash=t}}toJSON(){return{recentBlockhash:this.recentBlockhash||null,feePayer:this.feePayer?this.feePayer.toJSON():null,nonceInfo:this.nonceInfo?{nonce:this.nonceInfo.nonce,nonceInstruction:this.nonceInfo.nonceInstruction.toJSON()}:null,instructions:this.instructions.map((e=>e.toJSON())),signers:this.signatures.map((({publicKey:e})=>e.toJSON()))}}add(...e){if(0===e.length)throw new Error("No instructions");return e.forEach((e=>{"instructions"in e?this.instructions=this.instructions.concat(e.instructions):"data"in e&&"programId"in e&&"keys"in e?this.instructions.push(e):this.instructions.push(new bi(e))})),this}compileMessage(){if(this._message&&JSON.stringify(this.toJSON())===JSON.stringify(this._json))return this._message;let e,t,n;if(this.nonceInfo?(e=this.nonceInfo.nonce,t=this.instructions[0]!=this.nonceInfo.nonceInstruction?[this.nonceInfo.nonceInstruction,...this.instructions]:this.instructions):(e=this.recentBlockhash,t=this.instructions),!e)throw new Error("Transaction recentBlockhash required");if(t.length<1&&Ln.warn("No instructions provided"),this.feePayer)n=this.feePayer;else{if(!(this.signatures.length>0&&this.signatures[0].publicKey))throw new Error("Transaction fee payer required");n=this.signatures[0].publicKey}for(let e=0;e{e.keys.forEach((e=>{r.push({...e})}));const t=e.programId.toString();i.includes(t)||i.push(t)})),i.forEach((e=>{r.push({pubkey:new ni(e),isSigner:!1,isWritable:!1})}));const o=[];r.forEach((e=>{const t=e.pubkey.toString(),n=o.findIndex((e=>e.pubkey.toString()===t));n>-1?(o[n].isWritable=o[n].isWritable||e.isWritable,o[n].isSigner=o[n].isSigner||e.isSigner):o.push(e)})),o.sort((function(e,t){return e.isSigner!==t.isSigner?e.isSigner?-1:1:e.isWritable!==t.isWritable?e.isWritable?-1:1:e.pubkey.toBase58().localeCompare(t.pubkey.toBase58())}));const A=o.findIndex((e=>e.pubkey.equals(n)));if(A>-1){const[e]=o.splice(A,1);e.isSigner=!0,e.isWritable=!0,o.unshift(e)}else o.unshift({pubkey:n,isSigner:!0,isWritable:!0});for(const e of this.signatures){const t=o.findIndex((t=>t.pubkey.equals(e.publicKey)));if(!(t>-1))throw new Error(`unknown signer: ${e.publicKey.toString()}`);o[t].isSigner||(o[t].isSigner=!0,Ln.warn("Transaction references a signature that is unnecessary, only the fee payer and instruction signer accounts should sign a transaction. This behavior is deprecated and will throw an error in the next major version release."))}let s=0,a=0,c=0;const u=[],l=[];o.forEach((({pubkey:e,isSigner:t,isWritable:n})=>{t?(u.push(e.toString()),s+=1,n||(a+=1)):(l.push(e.toString()),n||(c+=1))}));const g=u.concat(l),d=t.map((e=>{const{data:t,programId:n}=e;return{programIdIndex:g.indexOf(n.toString()),accounts:e.keys.map((e=>g.indexOf(e.pubkey.toString()))),data:Ke().encode(t)}}));return d.forEach((e=>{Ii(e.programIdIndex>=0),e.accounts.forEach((e=>Ii(e>=0)))})),new Bi({header:{numRequiredSignatures:s,numReadonlySignedAccounts:a,numReadonlyUnsignedAccounts:c},accountKeys:g,recentBlockhash:e,instructions:d})}_compile(){const e=this.compileMessage(),t=e.accountKeys.slice(0,e.header.numRequiredSignatures);return this.signatures.length===t.length&&this.signatures.every(((e,n)=>t[n].equals(e.publicKey)))||(this.signatures=t.map((e=>({signature:null,publicKey:e})))),e}serializeMessage(){return this._compile().serialize()}async getEstimatedFee(e){return(await e.getFeeForMessage(this.compileMessage())).value}setSigners(...e){if(0===e.length)throw new Error("No signers");const t=new Set;this.signatures=e.filter((e=>{const n=e.toString();return!t.has(n)&&(t.add(n),!0)})).map((e=>({signature:null,publicKey:e})))}sign(...e){if(0===e.length)throw new Error("No signers");const t=new Set,n=[];for(const i of e){const e=i.publicKey.toString();t.has(e)||(t.add(e),n.push(i))}this.signatures=n.map((e=>({signature:null,publicKey:e.publicKey})));const i=this._compile();this._partialSign(i,...n)}partialSign(...e){if(0===e.length)throw new Error("No signers");const t=new Set,n=[];for(const i of e){const e=i.publicKey.toString();t.has(e)||(t.add(e),n.push(i))}const i=this._compile();this._partialSign(i,...n)}_partialSign(e,...t){const n=e.serialize();t.forEach((e=>{const t=Jn(n,e.secretKey);this._addSignature(e.publicKey,Zn(t))}))}addSignature(e,t){this._compile(),this._addSignature(e,t)}_addSignature(e,t){Ii(64===t.length);const n=this.signatures.findIndex((t=>e.equals(t.publicKey)));if(n<0)throw new Error(`unknown signer: ${e.toString()}`);this.signatures[n].signature=i.lW.from(t)}verifySignatures(e){return this._verifySignatures(this.serializeMessage(),void 0===e||e)}_verifySignatures(e,t){for(const{signature:n,publicKey:i}of this.signatures)if(null===n){if(t)return!1}else if(!qn(n,e,i.toBytes()))return!1;return!0}serialize(e){const{requireAllSignatures:t,verifySignatures:n}=Object.assign({requireAllSignatures:!0,verifySignatures:!0},e),i=this.serializeMessage();if(n&&!this._verifySignatures(i,t))throw new Error("Signature verification failed");return this._serialize(i)}_serialize(e){const{signatures:t}=this,n=[];mi(n,t.length);const r=n.length+64*t.length+e.length,o=i.lW.alloc(r);return Ii(t.length<256),i.lW.from(n).copy(o,0),t.forEach((({signature:e},t)=>{null!==e&&(Ii(64===e.length,"signature has invalid length"),i.lW.from(e).copy(o,n.length+64*t))})),e.copy(o,n.length+64*t.length),Ii(o.length<=oi,`Transaction too large: ${o.length} > ${oi}`),o}get keys(){return Ii(1===this.instructions.length),this.instructions[0].keys.map((e=>e.pubkey))}get programId(){return Ii(1===this.instructions.length),this.instructions[0].programId}get data(){return Ii(1===this.instructions.length),this.instructions[0].data}static from(e){let t=[...e];const n=fi(t);let r=[];for(let e=0;e0&&(n.feePayer=e.accountKeys[0]),t.forEach(((t,i)=>{const r={signature:t==Ke().encode(Qi)?null:Ke().decode(t),publicKey:e.accountKeys[i]};n.signatures.push(r)})),e.instructions.forEach((t=>{const i=t.accounts.map((t=>{const i=e.accountKeys[t];return{pubkey:i,isSigner:n.signatures.some((e=>e.publicKey.toString()===i.toString()))||e.isAccountSigner(t),isWritable:e.isAccountWritable(t)}}));n.instructions.push(new bi({keys:i,programId:e.accountKeys[t.programIdIndex],data:Ke().decode(t.data)}))})),n._message=e,n._json=n.toJSON(),n}}class vi{constructor(e){this.payerKey=void 0,this.instructions=void 0,this.recentBlockhash=void 0,this.payerKey=e.payerKey,this.instructions=e.instructions,this.recentBlockhash=e.recentBlockhash}static decompile(e,t){const{header:n,compiledInstructions:i,recentBlockhash:r}=e,{numRequiredSignatures:o,numReadonlySignedAccounts:A,numReadonlyUnsignedAccounts:s}=n,a=o-A;Ii(a>0,"Message header is invalid");const c=e.staticAccountKeys.length-o-s;Ii(c>=0,"Message header is invalid");const u=e.getAccountKeys(t),l=u.get(0);if(void 0===l)throw new Error("Failed to decompile message because no account keys were found");const g=[];for(const e of i){const t=[];for(const i of e.accountKeyIndexes){const e=u.get(i);if(void 0===e)throw new Error(`Failed to find key for account key index ${i}`);let r;r=ie.equals(i.publicKey)));Ii(e>=0,`Cannot sign with non signer key ${i.publicKey.toBase58()}`),this.signatures[e]=Jn(t,i.secretKey)}}addSignature(e,t){Ii(64===t.byteLength,"Signature must be 64 bytes long");const n=this.message.staticAccountKeys.slice(0,this.message.header.numRequiredSignatures).findIndex((t=>t.equals(e)));Ii(n>=0,`Can not add signature; \`${e.toBase58()}\` is not required to sign this transaction`),this.signatures[n]=t}}const Mi=new ni("SysvarC1ock11111111111111111111111111111111"),Di=new ni("SysvarEpochSchedu1e111111111111111111111111"),Ni=new ni("Sysvar1nstructions1111111111111111111111111"),Ti=new ni("SysvarRecentB1ockHashes11111111111111111111"),Pi=new ni("SysvarRent111111111111111111111111111111111"),Oi=new ni("SysvarRewards111111111111111111111111111111"),Fi=new ni("SysvarS1otHashes111111111111111111111111111"),Ri=new ni("SysvarS1otHistory11111111111111111111111111"),Gi=new ni("SysvarStakeHistory1111111111111111111111111");async function xi(e,t,n,i){const r=i&&{skipPreflight:i.skipPreflight,preflightCommitment:i.preflightCommitment||i.commitment,maxRetries:i.maxRetries,minContextSlot:i.minContextSlot},o=await e.sendTransaction(t,n,r);let A;if(null!=t.recentBlockhash&&null!=t.lastValidBlockHeight)A=(await e.confirmTransaction({abortSignal:null==i?void 0:i.abortSignal,signature:o,blockhash:t.recentBlockhash,lastValidBlockHeight:t.lastValidBlockHeight},i&&i.commitment)).value;else if(null!=t.minNonceContextSlot&&null!=t.nonceInfo){const{nonceInstruction:n}=t.nonceInfo,r=n.keys[0].pubkey;A=(await e.confirmTransaction({abortSignal:null==i?void 0:i.abortSignal,minContextSlot:t.minNonceContextSlot,nonceAccountPubkey:r,nonceValue:t.nonceInfo.nonce,signature:o},i&&i.commitment)).value}else null!=(null==i?void 0:i.abortSignal)&&Ln.warn("sendAndConfirmTransaction(): A transaction with a deprecated confirmation strategy was supplied along with an `abortSignal`. Only transactions having `lastValidBlockHeight` or a combination of `nonceInfo` and `minNonceContextSlot` are abortable."),A=(await e.confirmTransaction(o,i&&i.commitment)).value;if(A.err)throw new Error(`Transaction ${o} failed (${JSON.stringify(A)})`);return o}function Ui(e){return new Promise((t=>setTimeout(t,e)))}function _i(e,t){const n=e.layout.span>=0?e.layout.span:pi(e,t),r=i.lW.alloc(n),o=Object.assign({instruction:e.index},t);return e.layout.encode(o,r),r}function Li(e,t){let n;try{n=e.layout.decode(t)}catch(e){throw new Error("invalid instruction; "+e)}if(n.instruction!==e.index)throw new Error(`invalid instruction; instruction index mismatch ${n.instruction} != ${e.index}`);return n}const Ki=He.nu64("lamportsPerSignature"),Yi=He.struct([He.u32("version"),He.u32("state"),gi("authorizedPubkey"),gi("nonce"),He.struct([Ki],"feeCalculator")]),ji=Yi.span;class Wi{constructor(e){this.authorizedPubkey=void 0,this.nonce=void 0,this.feeCalculator=void 0,this.authorizedPubkey=e.authorizedPubkey,this.nonce=e.nonce,this.feeCalculator=e.feeCalculator}static fromAccountData(e){const t=Yi.decode(Zn(e),0);return new Wi({authorizedPubkey:new ni(t.authorizedPubkey),nonce:new ni(t.nonce).toString(),feeCalculator:t.feeCalculator})}}const Ji=(8,e=>{const t=(0,He.blob)(8,e),{encode:n,decode:r}=(e=>({decode:e.decode.bind(e),encode:e.encode.bind(e)}))(t),o=t;return o.decode=(e,t)=>{const n=r(e,t);return(0,Ve.toBigIntLE)(i.lW.from(n))},o.encode=(e,t,i)=>{const r=(0,Ve.toBufferLE)(e,8);return n(r,t,i)},o});class qi{constructor(){}static decodeInstructionType(e){this.checkProgramId(e.programId);const t=He.u32("instruction").decode(e.data);let n;for(const[e,i]of Object.entries(Zi))if(i.index==t){n=e;break}if(!n)throw new Error("Instruction type incorrect; not a SystemInstruction");return n}static decodeCreateAccount(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,2);const{lamports:t,space:n,programId:i}=Li(Zi.Create,e.data);return{fromPubkey:e.keys[0].pubkey,newAccountPubkey:e.keys[1].pubkey,lamports:t,space:n,programId:new ni(i)}}static decodeTransfer(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,2);const{lamports:t}=Li(Zi.Transfer,e.data);return{fromPubkey:e.keys[0].pubkey,toPubkey:e.keys[1].pubkey,lamports:t}}static decodeTransferWithSeed(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{lamports:t,seed:n,programId:i}=Li(Zi.TransferWithSeed,e.data);return{fromPubkey:e.keys[0].pubkey,basePubkey:e.keys[1].pubkey,toPubkey:e.keys[2].pubkey,lamports:t,seed:n,programId:new ni(i)}}static decodeAllocate(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,1);const{space:t}=Li(Zi.Allocate,e.data);return{accountPubkey:e.keys[0].pubkey,space:t}}static decodeAllocateWithSeed(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,1);const{base:t,seed:n,space:i,programId:r}=Li(Zi.AllocateWithSeed,e.data);return{accountPubkey:e.keys[0].pubkey,basePubkey:new ni(t),seed:n,space:i,programId:new ni(r)}}static decodeAssign(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,1);const{programId:t}=Li(Zi.Assign,e.data);return{accountPubkey:e.keys[0].pubkey,programId:new ni(t)}}static decodeAssignWithSeed(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,1);const{base:t,seed:n,programId:i}=Li(Zi.AssignWithSeed,e.data);return{accountPubkey:e.keys[0].pubkey,basePubkey:new ni(t),seed:n,programId:new ni(i)}}static decodeCreateWithSeed(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,2);const{base:t,seed:n,lamports:i,space:r,programId:o}=Li(Zi.CreateWithSeed,e.data);return{fromPubkey:e.keys[0].pubkey,newAccountPubkey:e.keys[1].pubkey,basePubkey:new ni(t),seed:n,lamports:i,space:r,programId:new ni(o)}}static decodeNonceInitialize(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{authorized:t}=Li(Zi.InitializeNonceAccount,e.data);return{noncePubkey:e.keys[0].pubkey,authorizedPubkey:new ni(t)}}static decodeNonceAdvance(e){return this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3),Li(Zi.AdvanceNonceAccount,e.data),{noncePubkey:e.keys[0].pubkey,authorizedPubkey:e.keys[2].pubkey}}static decodeNonceWithdraw(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,5);const{lamports:t}=Li(Zi.WithdrawNonceAccount,e.data);return{noncePubkey:e.keys[0].pubkey,toPubkey:e.keys[1].pubkey,authorizedPubkey:e.keys[4].pubkey,lamports:t}}static decodeNonceAuthorize(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,2);const{authorized:t}=Li(Zi.AuthorizeNonceAccount,e.data);return{noncePubkey:e.keys[0].pubkey,authorizedPubkey:e.keys[1].pubkey,newAuthorizedPubkey:new ni(t)}}static checkProgramId(e){if(!e.equals(zi.programId))throw new Error("invalid instruction; programId is not SystemProgram")}static checkKeyLength(e,t){if(e.length0?i:1,space:o.length,programId:r}));null!==s&&await xi(e,s,[t,n],{commitment:"confirmed"})}const A=He.struct([He.u32("instruction"),He.u32("offset"),He.u32("bytesLength"),He.u32("bytesLengthPadding"),He.seq(He.u8("byte"),He.offset(He.u32(),-8),"bytes")]),s=Vi.chunkSize;let a=0,c=o,u=[];for(;c.length>0;){const o=c.slice(0,s),l=i.lW.alloc(s+16);A.encode({instruction:0,offset:a,bytes:o,bytesLength:0,bytesLengthPadding:0},l);const g=(new ki).add({keys:[{pubkey:n.publicKey,isSigner:!0,isWritable:!0}],programId:r,data:l});if(u.push(xi(e,g,[t,n],{commitment:"confirmed"})),e._rpcEndpoint.includes("solana.com")){const e=4;await Ui(1e3/e)}a+=s,c=c.slice(s)}await Promise.all(u);{const o=He.struct([He.u32("instruction")]),A=i.lW.alloc(o.span);o.encode({instruction:1},A);const s=(new ki).add({keys:[{pubkey:n.publicKey,isSigner:!0,isWritable:!0},{pubkey:Pi,isSigner:!1,isWritable:!1}],programId:r,data:A});await xi(e,s,[t,n],{commitment:"confirmed"})}return!0}}Vi.chunkSize=Hi;const Xi=new ni("BPFLoader2111111111111111111111111111111111");class $i{static getMinNumSignatures(e){return Vi.getMinNumSignatures(e)}static load(e,t,n,i,r){return Vi.load(e,t,n,r,i)}}var er=Object.prototype.toString,tr=Object.keys||function(e){var t=[];for(var n in e)t.push(n);return t};function nr(e,t){var n,i,r,o,A,s,a;if(!0===e)return"true";if(!1===e)return"false";switch(typeof e){case"object":if(null===e)return null;if(e.toJSON&&"function"==typeof e.toJSON)return nr(e.toJSON(),t);if("[object Array]"===(a=er.call(e))){for(r="[",i=e.length-1,n=0;n-1&&(r+=nr(e[n],!0)),r+"]"}if("[object Object]"===a){for(i=(o=tr(e).sort()).length,r="",n=0;n1;)e/=2,t++;return t}class or{constructor(e,t,n,i,r){this.slotsPerEpoch=void 0,this.leaderScheduleSlotOffset=void 0,this.warmup=void 0,this.firstNormalEpoch=void 0,this.firstNormalSlot=void 0,this.slotsPerEpoch=e,this.leaderScheduleSlotOffset=t,this.warmup=n,this.firstNormalEpoch=i,this.firstNormalSlot=r}getEpoch(e){return this.getEpochAndSlotIndex(e)[0]}getEpochAndSlotIndex(e){if(e>1,t|=t>>2,t|=t>>4,t|=t>>8,t|=t>>16,1+(t|=t>>32)))-rr(32)-1;return[n,e-(this.getSlotsInEpoch(n)-32)]}var t;{const t=e-this.firstNormalSlot,n=Math.floor(t/this.slotsPerEpoch);return[this.firstNormalEpoch+n,t%this.slotsPerEpoch]}}getFirstSlotInEpoch(e){return e<=this.firstNormalEpoch?32*(Math.pow(2,e)-1):(e-this.firstNormalEpoch)*this.slotsPerEpoch+this.firstNormalSlot}getLastSlotInEpoch(e){return this.getFirstSlotInEpoch(e)+this.getSlotsInEpoch(e)-1}getSlotsInEpoch(e){return e=0,"lookup table is invalid"),Ii(n%32==0,"lookup table is invalid");const i=n/32,{addresses:r}=He.struct([He.seq(gi(),i,"addresses")]).decode(e.slice(56));return{deactivationSlot:t.deactivationSlot,lastExtendedSlot:t.lastExtendedSlot,lastExtendedSlotStartIndex:t.lastExtendedStartIndex,authority:0!==t.authority.length?new ni(t.authority[0]):void 0,addresses:r.map((e=>new ni(e)))}}}const lr={index:1,layout:He.struct([He.u32("typeIndex"),Ji("deactivationSlot"),He.nu64("lastExtendedSlot"),He.u8("lastExtendedStartIndex"),He.u8(),He.seq(gi(),He.offset(He.u8(),-1),"authority")])},gr=/^[^:]+:\/\/([^:[]+|\[[^\]]+\])(:\d+)?(.*)/i;const dr=Et(gt(ni),It(),(e=>new ni(e))),hr=yt([It(),dt("base64")]),pr=Et(gt(i.lW),hr,(e=>i.lW.from(e[0],"base64"))),fr=3e4;function mr(e){let t,n;if("string"==typeof e)t=e;else if(e){const{commitment:i,...r}=e;t=i,n=r}return{commitment:t,config:n}}function Ir(e){return Ct([Bt({jsonrpc:dt("2.0"),id:It(),result:e}),Bt({jsonrpc:dt("2.0"),id:It(),error:Bt({code:wt(),message:It(),data:ft(ct("any",(()=>!0)))})})])}const yr=Ir(wt());function Br(e){return Et(Ir(e),yr,(t=>"error"in t?t:{...t,result:At(t.result,e)}))}function Cr(e){return Br(Bt({context:Bt({slot:pt()}),value:e}))}function wr(e){return Bt({context:Bt({slot:pt()}),value:e})}function Er(e,t){return 0===e?new Ci({header:t.header,staticAccountKeys:t.accountKeys.map((e=>new ni(e))),recentBlockhash:t.recentBlockhash,compiledInstructions:t.instructions.map((e=>({programIdIndex:e.programIdIndex,accountKeyIndexes:e.accounts,data:Ke().decode(e.data)}))),addressTableLookups:t.addressTableLookups}):new Bi(t)}const Qr=Bt({foundation:pt(),foundationTerm:pt(),initial:pt(),taper:pt(),terminal:pt()}),br=Br(ut(ht(Bt({epoch:pt(),effectiveSlot:pt(),amount:pt(),postBalance:pt(),commission:ft(ht(pt()))})))),kr=Bt({total:pt(),validator:pt(),foundation:pt(),epoch:pt()}),vr=Bt({epoch:pt(),slotIndex:pt(),slotsInEpoch:pt(),absoluteSlot:pt(),blockHeight:ft(pt()),transactionCount:ft(pt())}),Sr=Bt({slotsPerEpoch:pt(),leaderScheduleSlotOffset:pt(),warmup:lt(),firstNormalEpoch:pt(),firstNormalSlot:pt()}),Mr=mt(It(),ut(pt())),Dr=ht(Ct([Bt({}),It()])),Nr=Bt({err:Dr}),Tr=dt("receivedSignature"),Pr=Bt({"solana-core":It(),"feature-set":ft(pt())}),Or=Cr(Bt({err:ht(Ct([Bt({}),It()])),logs:ht(ut(It())),accounts:ft(ht(ut(ht(Bt({executable:lt(),owner:It(),lamports:pt(),data:ut(It()),rentEpoch:ft(pt())}))))),unitsConsumed:ft(pt()),returnData:ft(ht(Bt({programId:It(),data:yt([It(),dt("base64")])})))})),Fr=Cr(Bt({byIdentity:mt(It(),ut(pt())),range:Bt({firstSlot:pt(),lastSlot:pt()})})),Rr=Br(Qr),Gr=Br(kr),xr=Br(vr),Ur=Br(Sr),_r=Br(Mr),Lr=Br(pt()),Kr=Cr(Bt({total:pt(),circulating:pt(),nonCirculating:pt(),nonCirculatingAccounts:ut(dr)})),Yr=Bt({amount:It(),uiAmount:ht(pt()),decimals:pt(),uiAmountString:ft(It())}),jr=Cr(ut(Bt({address:dr,amount:It(),uiAmount:ht(pt()),decimals:pt(),uiAmountString:ft(It())}))),Wr=Cr(ut(Bt({pubkey:dr,account:Bt({executable:lt(),owner:dr,lamports:pt(),data:pr,rentEpoch:pt()})}))),Jr=Bt({program:It(),parsed:wt(),space:pt()}),qr=Cr(ut(Bt({pubkey:dr,account:Bt({executable:lt(),owner:dr,lamports:pt(),data:Jr,rentEpoch:pt()})}))),Zr=Cr(ut(Bt({lamports:pt(),address:dr}))),zr=Bt({executable:lt(),owner:dr,lamports:pt(),data:pr,rentEpoch:pt()}),Hr=Bt({pubkey:dr,account:zr}),Vr=Et(Ct([gt(i.lW),Jr]),Ct([hr,Jr]),(e=>Array.isArray(e)?At(e,pr):e)),Xr=Bt({executable:lt(),owner:dr,lamports:pt(),data:Vr,rentEpoch:pt()}),$r=Bt({pubkey:dr,account:Xr}),eo=Bt({state:Ct([dt("active"),dt("inactive"),dt("activating"),dt("deactivating")]),active:pt(),inactive:pt()}),to=Br(ut(Bt({signature:It(),slot:pt(),err:Dr,memo:ht(It()),blockTime:ft(ht(pt()))}))),no=Br(ut(Bt({signature:It(),slot:pt(),err:Dr,memo:ht(It()),blockTime:ft(ht(pt()))}))),io=Bt({subscription:pt(),result:wr(zr)}),ro=Bt({pubkey:dr,account:zr}),oo=Bt({subscription:pt(),result:wr(ro)}),Ao=Bt({parent:pt(),slot:pt(),root:pt()}),so=Bt({subscription:pt(),result:Ao}),ao=Ct([Bt({type:Ct([dt("firstShredReceived"),dt("completed"),dt("optimisticConfirmation"),dt("root")]),slot:pt(),timestamp:pt()}),Bt({type:dt("createdBank"),parent:pt(),slot:pt(),timestamp:pt()}),Bt({type:dt("frozen"),slot:pt(),timestamp:pt(),stats:Bt({numTransactionEntries:pt(),numSuccessfulTransactions:pt(),numFailedTransactions:pt(),maxTransactionsPerEntry:pt()})}),Bt({type:dt("dead"),slot:pt(),timestamp:pt(),err:It()})]),co=Bt({subscription:pt(),result:ao}),uo=Bt({subscription:pt(),result:wr(Ct([Nr,Tr]))}),lo=Bt({subscription:pt(),result:pt()}),go=Bt({pubkey:It(),gossip:ht(It()),tpu:ht(It()),rpc:ht(It()),version:ht(It())}),ho=Bt({votePubkey:It(),nodePubkey:It(),activatedStake:pt(),epochVoteAccount:lt(),epochCredits:ut(yt([pt(),pt(),pt()])),commission:pt(),lastVote:pt(),rootSlot:ht(pt())}),po=Br(Bt({current:ut(ho),delinquent:ut(ho)})),fo=Ct([dt("processed"),dt("confirmed"),dt("finalized")]),mo=Bt({slot:pt(),confirmations:ht(pt()),err:Dr,confirmationStatus:ft(fo)}),Io=Cr(ut(ht(mo))),yo=Br(pt()),Bo=Bt({accountKey:dr,writableIndexes:ut(pt()),readonlyIndexes:ut(pt())}),Co=Bt({signatures:ut(It()),message:Bt({accountKeys:ut(It()),header:Bt({numRequiredSignatures:pt(),numReadonlySignedAccounts:pt(),numReadonlyUnsignedAccounts:pt()}),instructions:ut(Bt({accounts:ut(pt()),data:It(),programIdIndex:pt()})),recentBlockhash:It(),addressTableLookups:ft(ut(Bo))})}),wo=Bt({pubkey:dr,signer:lt(),writable:lt(),source:ft(Ct([dt("transaction"),dt("lookupTable")]))}),Eo=Bt({accountKeys:ut(wo),signatures:ut(It())}),Qo=Bt({parsed:wt(),program:It(),programId:dr}),bo=Bt({accounts:ut(dr),data:It(),programId:dr}),ko=Et(Ct([bo,Qo]),Ct([Bt({parsed:wt(),program:It(),programId:It()}),Bt({accounts:ut(It()),data:It(),programId:It()})]),(e=>At(e,"accounts"in e?bo:Qo))),vo=Bt({signatures:ut(It()),message:Bt({accountKeys:ut(wo),instructions:ut(ko),recentBlockhash:It(),addressTableLookups:ft(ht(ut(Bo)))})}),So=Bt({accountIndex:pt(),mint:It(),owner:ft(It()),uiTokenAmount:Yr}),Mo=Bt({writable:ut(dr),readonly:ut(dr)}),Do=Bt({err:Dr,fee:pt(),innerInstructions:ft(ht(ut(Bt({index:pt(),instructions:ut(Bt({accounts:ut(pt()),data:It(),programIdIndex:pt()}))})))),preBalances:ut(pt()),postBalances:ut(pt()),logMessages:ft(ht(ut(It()))),preTokenBalances:ft(ht(ut(So))),postTokenBalances:ft(ht(ut(So))),loadedAddresses:ft(Mo),computeUnitsConsumed:ft(pt())}),No=Bt({err:Dr,fee:pt(),innerInstructions:ft(ht(ut(Bt({index:pt(),instructions:ut(ko)})))),preBalances:ut(pt()),postBalances:ut(pt()),logMessages:ft(ht(ut(It()))),preTokenBalances:ft(ht(ut(So))),postTokenBalances:ft(ht(ut(So))),loadedAddresses:ft(Mo),computeUnitsConsumed:ft(pt())}),To=Ct([dt(0),dt("legacy")]),Po=Bt({pubkey:It(),lamports:pt(),postBalance:ht(pt()),rewardType:ht(It()),commission:ft(ht(pt()))}),Oo=Br(ht(Bt({blockhash:It(),previousBlockhash:It(),parentSlot:pt(),transactions:ut(Bt({transaction:Co,meta:ht(Do),version:ft(To)})),rewards:ft(ut(Po)),blockTime:ht(pt()),blockHeight:ht(pt())}))),Fo=Br(ht(Bt({blockhash:It(),previousBlockhash:It(),parentSlot:pt(),rewards:ft(ut(Po)),blockTime:ht(pt()),blockHeight:ht(pt())}))),Ro=Br(ht(Bt({blockhash:It(),previousBlockhash:It(),parentSlot:pt(),transactions:ut(Bt({transaction:Eo,meta:ht(Do),version:ft(To)})),rewards:ft(ut(Po)),blockTime:ht(pt()),blockHeight:ht(pt())}))),Go=Br(ht(Bt({blockhash:It(),previousBlockhash:It(),parentSlot:pt(),transactions:ut(Bt({transaction:vo,meta:ht(No),version:ft(To)})),rewards:ft(ut(Po)),blockTime:ht(pt()),blockHeight:ht(pt())}))),xo=Br(ht(Bt({blockhash:It(),previousBlockhash:It(),parentSlot:pt(),transactions:ut(Bt({transaction:Eo,meta:ht(No),version:ft(To)})),rewards:ft(ut(Po)),blockTime:ht(pt()),blockHeight:ht(pt())}))),Uo=Br(ht(Bt({blockhash:It(),previousBlockhash:It(),parentSlot:pt(),rewards:ft(ut(Po)),blockTime:ht(pt()),blockHeight:ht(pt())}))),_o=Br(ht(Bt({blockhash:It(),previousBlockhash:It(),parentSlot:pt(),transactions:ut(Bt({transaction:Co,meta:ht(Do)})),rewards:ft(ut(Po)),blockTime:ht(pt())}))),Lo=Br(ht(Bt({blockhash:It(),previousBlockhash:It(),parentSlot:pt(),signatures:ut(It()),blockTime:ht(pt())}))),Ko=Br(ht(Bt({slot:pt(),meta:Do,blockTime:ft(ht(pt())),transaction:Co,version:ft(To)}))),Yo=Br(ht(Bt({slot:pt(),transaction:vo,meta:ht(No),blockTime:ft(ht(pt())),version:ft(To)}))),jo=Cr(Bt({blockhash:It(),feeCalculator:Bt({lamportsPerSignature:pt()})})),Wo=Cr(Bt({blockhash:It(),lastValidBlockHeight:pt()})),Jo=Br(ut(Bt({slot:pt(),numTransactions:pt(),numSlots:pt(),samplePeriodSecs:pt()}))),qo=Cr(ht(Bt({feeCalculator:Bt({lamportsPerSignature:pt()})}))),Zo=Br(It()),zo=Br(It()),Ho=Bt({err:Dr,logs:ut(It()),signature:It()}),Vo=Bt({result:wr(Ho),subscription:pt()}),Xo={"solana-client":"js/"+(null!=="0.0.0-development"?"0.0.0-development":"UNKNOWN")};class $o{constructor(e,t){let n,i,r,o,A,s;var a;this._commitment=void 0,this._confirmTransactionInitialTimeout=void 0,this._rpcEndpoint=void 0,this._rpcWsEndpoint=void 0,this._rpcClient=void 0,this._rpcRequest=void 0,this._rpcBatchRequest=void 0,this._rpcWebSocket=void 0,this._rpcWebSocketConnected=!1,this._rpcWebSocketHeartbeat=null,this._rpcWebSocketIdleTimeout=null,this._rpcWebSocketGeneration=0,this._disableBlockhashCaching=!1,this._pollingBlockhash=!1,this._blockhashInfo={latestBlockhash:null,lastFetch:0,transactionSignatures:[],simulatedSignatures:[]},this._nextClientSubscriptionId=0,this._subscriptionDisposeFunctionsByClientSubscriptionId={},this._subscriptionHashByClientSubscriptionId={},this._subscriptionStateChangeCallbacksByHash={},this._subscriptionCallbacksByServerSubscriptionId={},this._subscriptionsByHash={},this._subscriptionsAutoDisposedByRpc=new Set,t&&"string"==typeof t?this._commitment=t:t&&(this._commitment=t.commitment,this._confirmTransactionInitialTimeout=t.confirmTransactionInitialTimeout,n=t.wsEndpoint,i=t.httpHeaders,r=t.fetch,o=t.fetchMiddleware,A=t.disableRetryOnRateLimit,s=t.httpAgent),this._rpcEndpoint=function(e){if(!1===/^https?:/.test(e))throw new TypeError("Endpoint URL must start with `http:` or `https:`.");return e}(e),this._rpcWsEndpoint=n||function(e){const t=e.match(gr);if(null==t)throw TypeError(`Failed to validate endpoint URL \`${e}\``);const[n,i,r,o]=t,A=e.startsWith("https:")?"wss:":"ws:",s=null==r?null:parseInt(r.slice(1),10);return`${A}//${i}${null==s?"":`:${s+1}`}${o}`}(e),this._rpcClient=function(e,t,n,i,r,o){const A=n||cr;let s;return null!=o&&Ln.warn("You have supplied an `httpAgent` when creating a `Connection` in a browser environment.It has been ignored; `httpAgent` is only used in Node environments."),i&&(s=async(e,t)=>{const n=await new Promise(((n,r)=>{try{i(e,t,((e,t)=>n([e,t])))}catch(e){r(e)}}));return await A(...n)}),new(kt())((async(n,i)=>{const o={method:"POST",body:n,agent:void 0,headers:Object.assign({"Content-Type":"application/json"},t||{},Xo)};try{let t,n=5,a=500;for(;t=s?await s(e,o):await A(e,o),429===t.status&&!0!==r&&(n-=1,0!==n);)Ln.log(`Server responded with ${t.status} ${t.statusText}. Retrying after ${a}ms delay...`),await Ui(a),a*=2;const c=await t.text();t.ok?i(null,c):i(new Error(`${t.status} ${t.statusText}: ${c}`))}catch(e){e instanceof Error&&i(e)}}),{})}(e,i,r,o,A,s),this._rpcRequest=(a=this._rpcClient,(e,t)=>new Promise(((n,i)=>{a.request(e,t,((e,t)=>{e?i(e):n(t)}))}))),this._rpcBatchRequest=function(e){return t=>new Promise(((n,i)=>{0===t.length&&n([]);const r=t.map((t=>e.request(t.methodName,t.args)));e.request(r,((e,t)=>{e?i(e):n(t)}))}))}(this._rpcClient),this._rpcWebSocket=new Qt.K(this._rpcWsEndpoint,{autoconnect:!1,max_reconnects:1/0}),this._rpcWebSocket.on("open",this._wsOnOpen.bind(this)),this._rpcWebSocket.on("error",this._wsOnError.bind(this)),this._rpcWebSocket.on("close",this._wsOnClose.bind(this)),this._rpcWebSocket.on("accountNotification",this._wsOnAccountNotification.bind(this)),this._rpcWebSocket.on("programNotification",this._wsOnProgramAccountNotification.bind(this)),this._rpcWebSocket.on("slotNotification",this._wsOnSlotNotification.bind(this)),this._rpcWebSocket.on("slotsUpdatesNotification",this._wsOnSlotUpdatesNotification.bind(this)),this._rpcWebSocket.on("signatureNotification",this._wsOnSignatureNotification.bind(this)),this._rpcWebSocket.on("rootNotification",this._wsOnRootNotification.bind(this)),this._rpcWebSocket.on("logsNotification",this._wsOnLogsNotification.bind(this))}get commitment(){return this._commitment}get rpcEndpoint(){return this._rpcEndpoint}async getBalanceAndContext(e,t){const{commitment:n,config:i}=mr(t),r=this._buildArgs([e.toBase58()],n,void 0,i),o=At(await this._rpcRequest("getBalance",r),Cr(pt()));if("error"in o)throw new ar(o.error,`failed to get balance for ${e.toBase58()}`);return o.result}async getBalance(e,t){return await this.getBalanceAndContext(e,t).then((e=>e.value)).catch((t=>{throw new Error("failed to get balance of account "+e.toBase58()+": "+t)}))}async getBlockTime(e){const t=At(await this._rpcRequest("getBlockTime",[e]),Br(ht(pt())));if("error"in t)throw new ar(t.error,`failed to get block time for slot ${e}`);return t.result}async getMinimumLedgerSlot(){const e=At(await this._rpcRequest("minimumLedgerSlot",[]),Br(pt()));if("error"in e)throw new ar(e.error,"failed to get minimum ledger slot");return e.result}async getFirstAvailableBlock(){const e=At(await this._rpcRequest("getFirstAvailableBlock",[]),Lr);if("error"in e)throw new ar(e.error,"failed to get first available block");return e.result}async getSupply(e){let t={};t="string"==typeof e?{commitment:e}:e?{...e,commitment:e&&e.commitment||this.commitment}:{commitment:this.commitment};const n=At(await this._rpcRequest("getSupply",[t]),Kr);if("error"in n)throw new ar(n.error,"failed to get supply");return n.result}async getTokenSupply(e,t){const n=this._buildArgs([e.toBase58()],t),i=At(await this._rpcRequest("getTokenSupply",n),Cr(Yr));if("error"in i)throw new ar(i.error,"failed to get token supply");return i.result}async getTokenAccountBalance(e,t){const n=this._buildArgs([e.toBase58()],t),i=At(await this._rpcRequest("getTokenAccountBalance",n),Cr(Yr));if("error"in i)throw new ar(i.error,"failed to get token account balance");return i.result}async getTokenAccountsByOwner(e,t,n){const{commitment:i,config:r}=mr(n);let o=[e.toBase58()];"mint"in t?o.push({mint:t.mint.toBase58()}):o.push({programId:t.programId.toBase58()});const A=this._buildArgs(o,i,"base64",r),s=At(await this._rpcRequest("getTokenAccountsByOwner",A),Wr);if("error"in s)throw new ar(s.error,`failed to get token accounts owned by account ${e.toBase58()}`);return s.result}async getParsedTokenAccountsByOwner(e,t,n){let i=[e.toBase58()];"mint"in t?i.push({mint:t.mint.toBase58()}):i.push({programId:t.programId.toBase58()});const r=this._buildArgs(i,n,"jsonParsed"),o=At(await this._rpcRequest("getTokenAccountsByOwner",r),qr);if("error"in o)throw new ar(o.error,`failed to get token accounts owned by account ${e.toBase58()}`);return o.result}async getLargestAccounts(e){const t={...e,commitment:e&&e.commitment||this.commitment},n=t.filter||t.commitment?[t]:[],i=At(await this._rpcRequest("getLargestAccounts",n),Zr);if("error"in i)throw new ar(i.error,"failed to get largest accounts");return i.result}async getTokenLargestAccounts(e,t){const n=this._buildArgs([e.toBase58()],t),i=At(await this._rpcRequest("getTokenLargestAccounts",n),jr);if("error"in i)throw new ar(i.error,"failed to get token largest accounts");return i.result}async getAccountInfoAndContext(e,t){const{commitment:n,config:i}=mr(t),r=this._buildArgs([e.toBase58()],n,"base64",i),o=At(await this._rpcRequest("getAccountInfo",r),Cr(ht(zr)));if("error"in o)throw new ar(o.error,`failed to get info about account ${e.toBase58()}`);return o.result}async getParsedAccountInfo(e,t){const{commitment:n,config:i}=mr(t),r=this._buildArgs([e.toBase58()],n,"jsonParsed",i),o=At(await this._rpcRequest("getAccountInfo",r),Cr(ht(Xr)));if("error"in o)throw new ar(o.error,`failed to get info about account ${e.toBase58()}`);return o.result}async getAccountInfo(e,t){try{return(await this.getAccountInfoAndContext(e,t)).value}catch(t){throw new Error("failed to get info about account "+e.toBase58()+": "+t)}}async getMultipleParsedAccounts(e,t){const{commitment:n,config:i}=mr(t),r=e.map((e=>e.toBase58())),o=this._buildArgs([r],n,"jsonParsed",i),A=At(await this._rpcRequest("getMultipleAccounts",o),Cr(ut(ht(Xr))));if("error"in A)throw new ar(A.error,`failed to get info for accounts ${r}`);return A.result}async getMultipleAccountsInfoAndContext(e,t){const{commitment:n,config:i}=mr(t),r=e.map((e=>e.toBase58())),o=this._buildArgs([r],n,"base64",i),A=At(await this._rpcRequest("getMultipleAccounts",o),Cr(ut(ht(zr))));if("error"in A)throw new ar(A.error,`failed to get info for accounts ${r}`);return A.result}async getMultipleAccountsInfo(e,t){return(await this.getMultipleAccountsInfoAndContext(e,t)).value}async getStakeActivation(e,t,n){const{commitment:i,config:r}=mr(t),o=this._buildArgs([e.toBase58()],i,void 0,{...r,epoch:null!=n?n:null==r?void 0:r.epoch}),A=At(await this._rpcRequest("getStakeActivation",o),Br(eo));if("error"in A)throw new ar(A.error,`failed to get Stake Activation ${e.toBase58()}`);return A.result}async getProgramAccounts(e,t){const{commitment:n,config:i}=mr(t),{encoding:r,...o}=i||{},A=this._buildArgs([e.toBase58()],n,r||"base64",o),s=At(await this._rpcRequest("getProgramAccounts",A),Br(ut(Hr)));if("error"in s)throw new ar(s.error,`failed to get accounts owned by program ${e.toBase58()}`);return s.result}async getParsedProgramAccounts(e,t){const{commitment:n,config:i}=mr(t),r=this._buildArgs([e.toBase58()],n,"jsonParsed",i),o=At(await this._rpcRequest("getProgramAccounts",r),Br(ut($r)));if("error"in o)throw new ar(o.error,`failed to get accounts owned by program ${e.toBase58()}`);return o.result}async confirmTransaction(e,t){let n,i;if("string"==typeof e)n=e;else{var r;const t=e;if(null!==(r=t.abortSignal)&&void 0!==r&&r.aborted)return Promise.reject(t.abortSignal.reason);n=t.signature}try{i=Ke().decode(n)}catch(e){throw new Error("signature must be base58 encoded: "+n)}return Ii(64===i.length,"signature has invalid length"),"string"==typeof e?await this.confirmTransactionUsingLegacyTimeoutStrategy({commitment:t||this.commitment,signature:n}):"lastValidBlockHeight"in e?await this.confirmTransactionUsingBlockHeightExceedanceStrategy({commitment:t||this.commitment,strategy:e}):await this.confirmTransactionUsingDurableNonceStrategy({commitment:t||this.commitment,strategy:e})}getCancellationPromise(e){return new Promise(((t,n)=>{null!=e&&(e.aborted?n(e.reason):e.addEventListener("abort",(()=>{n(e.reason)})))}))}getTransactionConfirmationPromise({commitment:e,signature:t}){let n,i,r=!1;return{abortConfirmation:()=>{i&&(i(),i=void 0),null!=n&&(this.removeSignatureListener(n),n=void 0)},confirmationPromise:new Promise(((o,A)=>{try{n=this.onSignature(t,((e,t)=>{n=void 0;const i={context:t,value:e};o({__type:Ei.PROCESSED,response:i})}),e);const s=new Promise((e=>{null==n?e():i=this._onSubscriptionStateChange(n,(t=>{"subscribed"===t&&e()}))}));(async()=>{if(await s,r)return;const n=await this.getSignatureStatus(t);if(r)return;if(null==n)return;const{context:i,value:a}=n;if(null!=a)if(null!=a&&a.err)A(a.err);else{switch(e){case"confirmed":case"single":case"singleGossip":if("processed"===a.confirmationStatus)return;break;case"finalized":case"max":case"root":if("processed"===a.confirmationStatus||"confirmed"===a.confirmationStatus)return}r=!0,o({__type:Ei.PROCESSED,response:{context:i,value:a}})}})()}catch(e){A(e)}}))}}async confirmTransactionUsingBlockHeightExceedanceStrategy({commitment:e,strategy:{abortSignal:t,lastValidBlockHeight:n,signature:i}}){let r=!1;const o=new Promise((t=>{const i=async()=>{try{return await this.getBlockHeight(e)}catch(e){return-1}};(async()=>{let e=await i();if(!r){for(;e<=n;){if(await Ui(1e3),r)return;if(e=await i(),r)return}t({__type:Ei.BLOCKHEIGHT_EXCEEDED})}})()})),{abortConfirmation:A,confirmationPromise:s}=this.getTransactionConfirmationPromise({commitment:e,signature:i}),a=this.getCancellationPromise(t);let c;try{const e=await Promise.race([a,s,o]);if(e.__type!==Ei.PROCESSED)throw new ai(i);c=e.response}finally{r=!0,A()}return c}async confirmTransactionUsingDurableNonceStrategy({commitment:e,strategy:{abortSignal:t,minContextSlot:n,nonceAccountPubkey:i,nonceValue:r,signature:o}}){let A=!1;const s=new Promise((t=>{let o=r,s=null;const a=async()=>{try{const{context:t,value:r}=await this.getNonceAndContext(i,{commitment:e,minContextSlot:n});return s=t.slot,null==r?void 0:r.nonce}catch(e){return o}};(async()=>{if(o=await a(),!A)for(;;){if(r!==o)return void t({__type:Ei.NONCE_INVALID,slotInWhichNonceDidAdvance:s});if(await Ui(2e3),A)return;if(o=await a(),A)return}})()})),{abortConfirmation:a,confirmationPromise:c}=this.getTransactionConfirmationPromise({commitment:e,signature:o}),u=this.getCancellationPromise(t);let l;try{const t=await Promise.race([u,c,s]);if(t.__type===Ei.PROCESSED)l=t.response;else{var g;let i;for(;;){var d;const e=await this.getSignatureStatus(o);if(null==e)break;if(!(e.context.slot<(null!==(d=t.slotInWhichNonceDidAdvance)&&void 0!==d?d:n))){i=e;break}await Ui(400)}if(null===(g=i)||void 0===g||!g.value)throw new ui(o);{const t=e||"finalized",{confirmationStatus:n}=i.value;switch(t){case"processed":case"recent":if("processed"!==n&&"confirmed"!==n&&"finalized"!==n)throw new ui(o);break;case"confirmed":case"single":case"singleGossip":if("confirmed"!==n&&"finalized"!==n)throw new ui(o);break;case"finalized":case"max":case"root":if("finalized"!==n)throw new ui(o)}l={context:i.context,value:{err:i.value.err}}}}}finally{A=!0,a()}return l}async confirmTransactionUsingLegacyTimeoutStrategy({commitment:e,signature:t}){let n;const i=new Promise((t=>{let i=this._confirmTransactionInitialTimeout||6e4;switch(e){case"processed":case"recent":case"single":case"confirmed":case"singleGossip":i=this._confirmTransactionInitialTimeout||3e4}n=setTimeout((()=>t({__type:Ei.TIMED_OUT,timeoutMs:i})),i)})),{abortConfirmation:r,confirmationPromise:o}=this.getTransactionConfirmationPromise({commitment:e,signature:t});let A;try{const e=await Promise.race([o,i]);if(e.__type!==Ei.PROCESSED)throw new ci(t,e.timeoutMs/1e3);A=e.response}finally{clearTimeout(n),r()}return A}async getClusterNodes(){const e=At(await this._rpcRequest("getClusterNodes",[]),Br(ut(go)));if("error"in e)throw new ar(e.error,"failed to get cluster nodes");return e.result}async getVoteAccounts(e){const t=this._buildArgs([],e),n=At(await this._rpcRequest("getVoteAccounts",t),po);if("error"in n)throw new ar(n.error,"failed to get vote accounts");return n.result}async getSlot(e){const{commitment:t,config:n}=mr(e),i=this._buildArgs([],t,void 0,n),r=At(await this._rpcRequest("getSlot",i),Br(pt()));if("error"in r)throw new ar(r.error,"failed to get slot");return r.result}async getSlotLeader(e){const{commitment:t,config:n}=mr(e),i=this._buildArgs([],t,void 0,n),r=At(await this._rpcRequest("getSlotLeader",i),Br(It()));if("error"in r)throw new ar(r.error,"failed to get slot leader");return r.result}async getSlotLeaders(e,t){const n=[e,t],i=At(await this._rpcRequest("getSlotLeaders",n),Br(ut(dr)));if("error"in i)throw new ar(i.error,"failed to get slot leaders");return i.result}async getSignatureStatus(e,t){const{context:n,value:i}=await this.getSignatureStatuses([e],t);return Ii(1===i.length),{context:n,value:i[0]}}async getSignatureStatuses(e,t){const n=[e];t&&n.push(t);const i=At(await this._rpcRequest("getSignatureStatuses",n),Io);if("error"in i)throw new ar(i.error,"failed to get signature status");return i.result}async getTransactionCount(e){const{commitment:t,config:n}=mr(e),i=this._buildArgs([],t,void 0,n),r=At(await this._rpcRequest("getTransactionCount",i),Br(pt()));if("error"in r)throw new ar(r.error,"failed to get transaction count");return r.result}async getTotalSupply(e){return(await this.getSupply({commitment:e,excludeNonCirculatingAccountsList:!0})).value.total}async getInflationGovernor(e){const t=this._buildArgs([],e),n=At(await this._rpcRequest("getInflationGovernor",t),Rr);if("error"in n)throw new ar(n.error,"failed to get inflation");return n.result}async getInflationReward(e,t,n){const{commitment:i,config:r}=mr(n),o=this._buildArgs([e.map((e=>e.toBase58()))],i,void 0,{...r,epoch:null!=t?t:null==r?void 0:r.epoch}),A=At(await this._rpcRequest("getInflationReward",o),br);if("error"in A)throw new ar(A.error,"failed to get inflation reward");return A.result}async getInflationRate(){const e=At(await this._rpcRequest("getInflationRate",[]),Gr);if("error"in e)throw new ar(e.error,"failed to get inflation rate");return e.result}async getEpochInfo(e){const{commitment:t,config:n}=mr(e),i=this._buildArgs([],t,void 0,n),r=At(await this._rpcRequest("getEpochInfo",i),xr);if("error"in r)throw new ar(r.error,"failed to get epoch info");return r.result}async getEpochSchedule(){const e=At(await this._rpcRequest("getEpochSchedule",[]),Ur);if("error"in e)throw new ar(e.error,"failed to get epoch schedule");const t=e.result;return new or(t.slotsPerEpoch,t.leaderScheduleSlotOffset,t.warmup,t.firstNormalEpoch,t.firstNormalSlot)}async getLeaderSchedule(){const e=At(await this._rpcRequest("getLeaderSchedule",[]),_r);if("error"in e)throw new ar(e.error,"failed to get leader schedule");return e.result}async getMinimumBalanceForRentExemption(e,t){const n=this._buildArgs([e],t),i=At(await this._rpcRequest("getMinimumBalanceForRentExemption",n),yo);return"error"in i?(Ln.warn("Unable to fetch minimum balance for rent exemption"),0):i.result}async getRecentBlockhashAndContext(e){const t=this._buildArgs([],e),n=At(await this._rpcRequest("getRecentBlockhash",t),jo);if("error"in n)throw new ar(n.error,"failed to get recent blockhash");return n.result}async getRecentPerformanceSamples(e){const t=At(await this._rpcRequest("getRecentPerformanceSamples",e?[e]:[]),Jo);if("error"in t)throw new ar(t.error,"failed to get recent performance samples");return t.result}async getFeeCalculatorForBlockhash(e,t){const n=this._buildArgs([e],t),i=At(await this._rpcRequest("getFeeCalculatorForBlockhash",n),qo);if("error"in i)throw new ar(i.error,"failed to get fee calculator");const{context:r,value:o}=i.result;return{context:r,value:null!==o?o.feeCalculator:null}}async getFeeForMessage(e,t){const n=Zn(e.serialize()).toString("base64"),i=this._buildArgs([n],t),r=At(await this._rpcRequest("getFeeForMessage",i),Cr(ht(pt())));if("error"in r)throw new ar(r.error,"failed to get fee for message");if(null===r.result)throw new Error("invalid blockhash");return r.result}async getRecentBlockhash(e){try{return(await this.getRecentBlockhashAndContext(e)).value}catch(e){throw new Error("failed to get recent blockhash: "+e)}}async getLatestBlockhash(e){try{return(await this.getLatestBlockhashAndContext(e)).value}catch(e){throw new Error("failed to get recent blockhash: "+e)}}async getLatestBlockhashAndContext(e){const{commitment:t,config:n}=mr(e),i=this._buildArgs([],t,void 0,n),r=At(await this._rpcRequest("getLatestBlockhash",i),Wo);if("error"in r)throw new ar(r.error,"failed to get latest blockhash");return r.result}async getVersion(){const e=At(await this._rpcRequest("getVersion",[]),Br(Pr));if("error"in e)throw new ar(e.error,"failed to get version");return e.result}async getGenesisHash(){const e=At(await this._rpcRequest("getGenesisHash",[]),Br(It()));if("error"in e)throw new ar(e.error,"failed to get genesis hash");return e.result}async getBlock(e,t){const{commitment:n,config:i}=mr(t),r=this._buildArgsAtLeastConfirmed([e],n,void 0,i),o=await this._rpcRequest("getBlock",r);try{switch(null==i?void 0:i.transactionDetails){case"accounts":{const e=At(o,Ro);if("error"in e)throw e.error;return e.result}case"none":{const e=At(o,Fo);if("error"in e)throw e.error;return e.result}default:{const e=At(o,Oo);if("error"in e)throw e.error;const{result:t}=e;return t?{...t,transactions:t.transactions.map((({transaction:e,meta:t,version:n})=>({meta:t,transaction:{...e,message:Er(n,e.message)},version:n})))}:null}}}catch(e){throw new ar(e,"failed to get confirmed block")}}async getParsedBlock(e,t){const{commitment:n,config:i}=mr(t),r=this._buildArgsAtLeastConfirmed([e],n,"jsonParsed",i),o=await this._rpcRequest("getBlock",r);try{switch(null==i?void 0:i.transactionDetails){case"accounts":{const e=At(o,xo);if("error"in e)throw e.error;return e.result}case"none":{const e=At(o,Uo);if("error"in e)throw e.error;return e.result}default:{const e=At(o,Go);if("error"in e)throw e.error;return e.result}}}catch(e){throw new ar(e,"failed to get block")}}async getBlockHeight(e){const{commitment:t,config:n}=mr(e),i=this._buildArgs([],t,void 0,n),r=At(await this._rpcRequest("getBlockHeight",i),Br(pt()));if("error"in r)throw new ar(r.error,"failed to get block height information");return r.result}async getBlockProduction(e){let t,n;if("string"==typeof e)n=e;else if(e){const{commitment:i,...r}=e;n=i,t=r}const i=this._buildArgs([],n,"base64",t),r=At(await this._rpcRequest("getBlockProduction",i),Fr);if("error"in r)throw new ar(r.error,"failed to get block production information");return r.result}async getTransaction(e,t){const{commitment:n,config:i}=mr(t),r=this._buildArgsAtLeastConfirmed([e],n,void 0,i),o=At(await this._rpcRequest("getTransaction",r),Ko);if("error"in o)throw new ar(o.error,"failed to get transaction");const A=o.result;return A?{...A,transaction:{...A.transaction,message:Er(A.version,A.transaction.message)}}:A}async getParsedTransaction(e,t){const{commitment:n,config:i}=mr(t),r=this._buildArgsAtLeastConfirmed([e],n,"jsonParsed",i),o=At(await this._rpcRequest("getTransaction",r),Yo);if("error"in o)throw new ar(o.error,"failed to get transaction");return o.result}async getParsedTransactions(e,t){const{commitment:n,config:i}=mr(t),r=e.map((e=>({methodName:"getTransaction",args:this._buildArgsAtLeastConfirmed([e],n,"jsonParsed",i)})));return(await this._rpcBatchRequest(r)).map((e=>{const t=At(e,Yo);if("error"in t)throw new ar(t.error,"failed to get transactions");return t.result}))}async getTransactions(e,t){const{commitment:n,config:i}=mr(t),r=e.map((e=>({methodName:"getTransaction",args:this._buildArgsAtLeastConfirmed([e],n,void 0,i)})));return(await this._rpcBatchRequest(r)).map((e=>{const t=At(e,Ko);if("error"in t)throw new ar(t.error,"failed to get transactions");const n=t.result;return n?{...n,transaction:{...n.transaction,message:Er(n.version,n.transaction.message)}}:n}))}async getConfirmedBlock(e,t){const n=this._buildArgsAtLeastConfirmed([e],t),i=At(await this._rpcRequest("getConfirmedBlock",n),_o);if("error"in i)throw new ar(i.error,"failed to get confirmed block");const r=i.result;if(!r)throw new Error("Confirmed block "+e+" not found");const o={...r,transactions:r.transactions.map((({transaction:e,meta:t})=>{const n=new Bi(e.message);return{meta:t,transaction:{...e,message:n}}}))};return{...o,transactions:o.transactions.map((({transaction:e,meta:t})=>({meta:t,transaction:ki.populate(e.message,e.signatures)})))}}async getBlocks(e,t,n){const i=this._buildArgsAtLeastConfirmed(void 0!==t?[e,t]:[e],n),r=At(await this._rpcRequest("getBlocks",i),Br(ut(pt())));if("error"in r)throw new ar(r.error,"failed to get blocks");return r.result}async getBlockSignatures(e,t){const n=this._buildArgsAtLeastConfirmed([e],t,void 0,{transactionDetails:"signatures",rewards:!1}),i=At(await this._rpcRequest("getBlock",n),Lo);if("error"in i)throw new ar(i.error,"failed to get block");const r=i.result;if(!r)throw new Error("Block "+e+" not found");return r}async getConfirmedBlockSignatures(e,t){const n=this._buildArgsAtLeastConfirmed([e],t,void 0,{transactionDetails:"signatures",rewards:!1}),i=At(await this._rpcRequest("getConfirmedBlock",n),Lo);if("error"in i)throw new ar(i.error,"failed to get confirmed block");const r=i.result;if(!r)throw new Error("Confirmed block "+e+" not found");return r}async getConfirmedTransaction(e,t){const n=this._buildArgsAtLeastConfirmed([e],t),i=At(await this._rpcRequest("getConfirmedTransaction",n),Ko);if("error"in i)throw new ar(i.error,"failed to get transaction");const r=i.result;if(!r)return r;const o=new Bi(r.transaction.message),A=r.transaction.signatures;return{...r,transaction:ki.populate(o,A)}}async getParsedConfirmedTransaction(e,t){const n=this._buildArgsAtLeastConfirmed([e],t,"jsonParsed"),i=At(await this._rpcRequest("getConfirmedTransaction",n),Yo);if("error"in i)throw new ar(i.error,"failed to get confirmed transaction");return i.result}async getParsedConfirmedTransactions(e,t){const n=e.map((e=>({methodName:"getConfirmedTransaction",args:this._buildArgsAtLeastConfirmed([e],t,"jsonParsed")})));return(await this._rpcBatchRequest(n)).map((e=>{const t=At(e,Yo);if("error"in t)throw new ar(t.error,"failed to get confirmed transactions");return t.result}))}async getConfirmedSignaturesForAddress(e,t,n){let i={},r=await this.getFirstAvailableBlock();for(;!("until"in i)&&!(--t<=0||t0&&(i.until=e.signatures[e.signatures.length-1].toString())}catch(e){if(e instanceof Error&&e.message.includes("skipped"))continue;throw e}let o=await this.getSlot("finalized");for(;!("before"in i||++n>o);)try{const e=await this.getConfirmedBlockSignatures(n);e.signatures.length>0&&(i.before=e.signatures[e.signatures.length-1].toString())}catch(e){if(e instanceof Error&&e.message.includes("skipped"))continue;throw e}return(await this.getConfirmedSignaturesForAddress2(e,i)).map((e=>e.signature))}async getConfirmedSignaturesForAddress2(e,t,n){const i=this._buildArgsAtLeastConfirmed([e.toBase58()],n,void 0,t),r=At(await this._rpcRequest("getConfirmedSignaturesForAddress2",i),to);if("error"in r)throw new ar(r.error,"failed to get confirmed signatures for address");return r.result}async getSignaturesForAddress(e,t,n){const i=this._buildArgsAtLeastConfirmed([e.toBase58()],n,void 0,t),r=At(await this._rpcRequest("getSignaturesForAddress",i),no);if("error"in r)throw new ar(r.error,"failed to get signatures for address");return r.result}async getAddressLookupTable(e,t){const{context:n,value:i}=await this.getAccountInfoAndContext(e,t);let r=null;return null!==i&&(r=new ur({key:e,state:ur.deserialize(i.data)})),{context:n,value:r}}async getNonceAndContext(e,t){const{context:n,value:i}=await this.getAccountInfoAndContext(e,t);let r=null;return null!==i&&(r=Wi.fromAccountData(i.data)),{context:n,value:r}}async getNonce(e,t){return await this.getNonceAndContext(e,t).then((e=>e.value)).catch((t=>{throw new Error("failed to get nonce for account "+e.toBase58()+": "+t)}))}async requestAirdrop(e,t){const n=At(await this._rpcRequest("requestAirdrop",[e.toBase58(),t]),Zo);if("error"in n)throw new ar(n.error,`airdrop to ${e.toBase58()} failed`);return n.result}async _blockhashWithExpiryBlockHeight(e){if(!e){for(;this._pollingBlockhash;)await Ui(100);const e=Date.now()-this._blockhashInfo.lastFetch>=fr;if(null!==this._blockhashInfo.latestBlockhash&&!e)return this._blockhashInfo.latestBlockhash}return await this._pollNewBlockhash()}async _pollNewBlockhash(){this._pollingBlockhash=!0;try{const e=Date.now(),t=this._blockhashInfo.latestBlockhash,n=t?t.blockhash:null;for(let e=0;e<50;e++){const e=await this.getLatestBlockhash("finalized");if(n!==e.blockhash)return this._blockhashInfo={latestBlockhash:e,lastFetch:Date.now(),transactionSignatures:[],simulatedSignatures:[]},e;await Ui(200)}throw new Error(`Unable to obtain a new blockhash after ${Date.now()-e}ms`)}finally{this._pollingBlockhash=!1}}async getStakeMinimumDelegation(e){const{commitment:t,config:n}=mr(e),i=this._buildArgs([],t,"base64",n),r=At(await this._rpcRequest("getStakeMinimumDelegation",i),Cr(pt()));if("error"in r)throw new ar(r.error,"failed to get stake minimum delegation");return r.result}async simulateTransaction(e,t,n){if("message"in e){const r=e.serialize(),o=i.lW.from(r).toString("base64");if(Array.isArray(t)||void 0!==n)throw new Error("Invalid arguments");const A=t||{};A.encoding="base64","commitment"in A||(A.commitment=this.commitment);const s=[o,A],a=At(await this._rpcRequest("simulateTransaction",s),Or);if("error"in a)throw new Error("failed to simulate transaction: "+a.error.message);return a.result}let r;if(e instanceof ki){let t=e;r=new ki,r.feePayer=t.feePayer,r.instructions=e.instructions,r.nonceInfo=t.nonceInfo,r.signatures=t.signatures}else r=ki.populate(e),r._message=r._json=void 0;if(void 0!==t&&!Array.isArray(t))throw new Error("Invalid arguments");const o=t;if(r.nonceInfo&&o)r.sign(...o);else{let e=this._disableBlockhashCaching;for(;;){const t=await this._blockhashWithExpiryBlockHeight(e);if(r.lastValidBlockHeight=t.lastValidBlockHeight,r.recentBlockhash=t.blockhash,!o)break;if(r.sign(...o),!r.signature)throw new Error("!signature");const n=r.signature.toString("base64");if(!this._blockhashInfo.simulatedSignatures.includes(n)&&!this._blockhashInfo.transactionSignatures.includes(n)){this._blockhashInfo.simulatedSignatures.push(n);break}e=!0}}const A=r._compile(),s=A.serialize(),a=r._serialize(s).toString("base64"),c={encoding:"base64",commitment:this.commitment};if(n){const e=(Array.isArray(n)?n:A.nonProgramIds()).map((e=>e.toBase58()));c.accounts={encoding:"base64",addresses:e}}o&&(c.sigVerify=!0);const u=[a,c],l=At(await this._rpcRequest("simulateTransaction",u),Or);if("error"in l){let e;if("data"in l.error&&(e=l.error.data.logs,e&&Array.isArray(e))){const t="\n ",n=t+e.join(t);Ln.error(l.error.message,n)}throw new Ar("failed to simulate transaction: "+l.error.message,e)}return l.result}async sendTransaction(e,t,n){if("version"in e){if(t&&Array.isArray(t))throw new Error("Invalid arguments");const i=e.serialize();return await this.sendRawTransaction(i,n)}if(void 0===t||!Array.isArray(t))throw new Error("Invalid arguments");const i=t;if(e.nonceInfo)e.sign(...i);else{let t=this._disableBlockhashCaching;for(;;){const n=await this._blockhashWithExpiryBlockHeight(t);if(e.lastValidBlockHeight=n.lastValidBlockHeight,e.recentBlockhash=n.blockhash,e.sign(...i),!e.signature)throw new Error("!signature");const r=e.signature.toString("base64");if(!this._blockhashInfo.transactionSignatures.includes(r)){this._blockhashInfo.transactionSignatures.push(r);break}t=!0}}const r=e.serialize();return await this.sendRawTransaction(r,n)}async sendRawTransaction(e,t){const n=Zn(e).toString("base64");return await this.sendEncodedTransaction(n,t)}async sendEncodedTransaction(e,t){const n={encoding:"base64"},i=t&&t.skipPreflight,r=t&&t.preflightCommitment||this.commitment;t&&null!=t.maxRetries&&(n.maxRetries=t.maxRetries),t&&null!=t.minContextSlot&&(n.minContextSlot=t.minContextSlot),i&&(n.skipPreflight=i),r&&(n.preflightCommitment=r);const o=[e,n],A=At(await this._rpcRequest("sendTransaction",o),zo);if("error"in A){let e;throw"data"in A.error&&(e=A.error.data.logs),new Ar("failed to send transaction: "+A.error.message,e)}return A.result}_wsOnOpen(){this._rpcWebSocketConnected=!0,this._rpcWebSocketHeartbeat=setInterval((()=>{this._rpcWebSocket.notify("ping").catch((()=>{}))}),5e3),this._updateSubscriptions()}_wsOnError(e){this._rpcWebSocketConnected=!1,Ln.error("ws error:",e.message)}_wsOnClose(e){this._rpcWebSocketConnected=!1,this._rpcWebSocketGeneration=(this._rpcWebSocketGeneration+1)%Number.MAX_SAFE_INTEGER,this._rpcWebSocketIdleTimeout&&(clearTimeout(this._rpcWebSocketIdleTimeout),this._rpcWebSocketIdleTimeout=null),this._rpcWebSocketHeartbeat&&(clearInterval(this._rpcWebSocketHeartbeat),this._rpcWebSocketHeartbeat=null),1e3!==e?(this._subscriptionCallbacksByServerSubscriptionId={},Object.entries(this._subscriptionsByHash).forEach((([e,t])=>{this._setSubscription(e,{...t,state:"pending"})}))):this._updateSubscriptions()}_setSubscription(e,t){var n;const i=null===(n=this._subscriptionsByHash[e])||void 0===n?void 0:n.state;if(this._subscriptionsByHash[e]=t,i!==t.state){const n=this._subscriptionStateChangeCallbacksByHash[e];n&&n.forEach((e=>{try{e(t.state)}catch{}}))}}_onSubscriptionStateChange(e,t){var n;const i=this._subscriptionHashByClientSubscriptionId[e];if(null==i)return()=>{};const r=(n=this._subscriptionStateChangeCallbacksByHash)[i]||(n[i]=new Set);return r.add(t),()=>{r.delete(t),0===r.size&&delete this._subscriptionStateChangeCallbacksByHash[i]}}async _updateSubscriptions(){if(0===Object.keys(this._subscriptionsByHash).length)return void(this._rpcWebSocketConnected&&(this._rpcWebSocketConnected=!1,this._rpcWebSocketIdleTimeout=setTimeout((()=>{this._rpcWebSocketIdleTimeout=null;try{this._rpcWebSocket.close()}catch(e){e instanceof Error&&Ln.log(`Error when closing socket connection: ${e.message}`)}}),500)));if(null!==this._rpcWebSocketIdleTimeout&&(clearTimeout(this._rpcWebSocketIdleTimeout),this._rpcWebSocketIdleTimeout=null,this._rpcWebSocketConnected=!0),!this._rpcWebSocketConnected)return void this._rpcWebSocket.connect();const e=this._rpcWebSocketGeneration,t=()=>e===this._rpcWebSocketGeneration;await Promise.all(Object.keys(this._subscriptionsByHash).map((async e=>{const n=this._subscriptionsByHash[e];if(void 0!==n)switch(n.state){case"pending":case"unsubscribed":if(0===n.callbacks.size)return delete this._subscriptionsByHash[e],"unsubscribed"===n.state&&delete this._subscriptionCallbacksByServerSubscriptionId[n.serverSubscriptionId],void await this._updateSubscriptions();await(async()=>{const{args:i,method:r}=n;try{this._setSubscription(e,{...n,state:"subscribing"});const t=await this._rpcWebSocket.call(r,i);this._setSubscription(e,{...n,serverSubscriptionId:t,state:"subscribed"}),this._subscriptionCallbacksByServerSubscriptionId[t]=n.callbacks,await this._updateSubscriptions()}catch(o){if(o instanceof Error&&Ln.error(`${r} error for argument`,i,o.message),!t())return;this._setSubscription(e,{...n,state:"pending"}),await this._updateSubscriptions()}})();break;case"subscribed":0===n.callbacks.size&&await(async()=>{const{serverSubscriptionId:i,unsubscribeMethod:r}=n;if(this._subscriptionsAutoDisposedByRpc.has(i))this._subscriptionsAutoDisposedByRpc.delete(i);else{this._setSubscription(e,{...n,state:"unsubscribing"}),this._setSubscription(e,{...n,state:"unsubscribing"});try{await this._rpcWebSocket.call(r,[i])}catch(i){if(i instanceof Error&&Ln.error(`${r} error:`,i.message),!t())return;return this._setSubscription(e,{...n,state:"subscribed"}),void await this._updateSubscriptions()}}this._setSubscription(e,{...n,state:"unsubscribed"}),await this._updateSubscriptions()})()}})))}_handleServerNotification(e,t){const n=this._subscriptionCallbacksByServerSubscriptionId[e];void 0!==n&&n.forEach((e=>{try{e(...t)}catch(e){Ln.error(e)}}))}_wsOnAccountNotification(e){const{result:t,subscription:n}=At(e,io);this._handleServerNotification(n,[t.value,t.context])}_makeSubscription(e,t){const n=this._nextClientSubscriptionId++,i=ir([e.method,t]),r=this._subscriptionsByHash[i];return void 0===r?this._subscriptionsByHash[i]={...e,args:t,callbacks:new Set([e.callback]),state:"pending"}:r.callbacks.add(e.callback),this._subscriptionHashByClientSubscriptionId[n]=i,this._subscriptionDisposeFunctionsByClientSubscriptionId[n]=async()=>{delete this._subscriptionDisposeFunctionsByClientSubscriptionId[n],delete this._subscriptionHashByClientSubscriptionId[n];const t=this._subscriptionsByHash[i];Ii(void 0!==t,`Could not find a \`Subscription\` when tearing down client subscription #${n}`),t.callbacks.delete(e.callback),await this._updateSubscriptions()},this._updateSubscriptions(),n}onAccountChange(e,t,n){const i=this._buildArgs([e.toBase58()],n||this._commitment||"finalized","base64");return this._makeSubscription({callback:t,method:"accountSubscribe",unsubscribeMethod:"accountUnsubscribe"},i)}async removeAccountChangeListener(e){await this._unsubscribeClientSubscription(e,"account change")}_wsOnProgramAccountNotification(e){const{result:t,subscription:n}=At(e,oo);this._handleServerNotification(n,[{accountId:t.value.pubkey,accountInfo:t.value.account},t.context])}onProgramAccountChange(e,t,n,i){const r=this._buildArgs([e.toBase58()],n||this._commitment||"finalized","base64",i?{filters:i}:void 0);return this._makeSubscription({callback:t,method:"programSubscribe",unsubscribeMethod:"programUnsubscribe"},r)}async removeProgramAccountChangeListener(e){await this._unsubscribeClientSubscription(e,"program account change")}onLogs(e,t,n){const i=this._buildArgs(["object"==typeof e?{mentions:[e.toString()]}:e],n||this._commitment||"finalized");return this._makeSubscription({callback:t,method:"logsSubscribe",unsubscribeMethod:"logsUnsubscribe"},i)}async removeOnLogsListener(e){await this._unsubscribeClientSubscription(e,"logs")}_wsOnLogsNotification(e){const{result:t,subscription:n}=At(e,Vo);this._handleServerNotification(n,[t.value,t.context])}_wsOnSlotNotification(e){const{result:t,subscription:n}=At(e,so);this._handleServerNotification(n,[t])}onSlotChange(e){return this._makeSubscription({callback:e,method:"slotSubscribe",unsubscribeMethod:"slotUnsubscribe"},[])}async removeSlotChangeListener(e){await this._unsubscribeClientSubscription(e,"slot change")}_wsOnSlotUpdatesNotification(e){const{result:t,subscription:n}=At(e,co);this._handleServerNotification(n,[t])}onSlotUpdate(e){return this._makeSubscription({callback:e,method:"slotsUpdatesSubscribe",unsubscribeMethod:"slotsUpdatesUnsubscribe"},[])}async removeSlotUpdateListener(e){await this._unsubscribeClientSubscription(e,"slot update")}async _unsubscribeClientSubscription(e,t){const n=this._subscriptionDisposeFunctionsByClientSubscriptionId[e];n?await n():Ln.warn(`Ignored unsubscribe request because an active subscription with id \`${e}\` for '${t}' events could not be found.`)}_buildArgs(e,t,n,i){const r=t||this._commitment;if(r||n||i){let t={};n&&(t.encoding=n),r&&(t.commitment=r),i&&(t=Object.assign(t,i)),e.push(t)}return e}_buildArgsAtLeastConfirmed(e,t,n,i){const r=t||this._commitment;if(r&&!["confirmed","finalized"].includes(r))throw new Error("Using Connection with default commitment: `"+this._commitment+"`, but method requires at least `confirmed`");return this._buildArgs(e,t,n,i)}_wsOnSignatureNotification(e){const{result:t,subscription:n}=At(e,uo);"receivedSignature"!==t.value&&this._subscriptionsAutoDisposedByRpc.add(n),this._handleServerNotification(n,"receivedSignature"===t.value?[{type:"received"},t.context]:[{type:"status",result:t.value},t.context])}onSignature(e,t,n){const i=this._buildArgs([e],n||this._commitment||"finalized"),r=this._makeSubscription({callback:(e,n)=>{if("status"===e.type){t(e.result,n);try{this.removeSignatureListener(r)}catch(e){}}},method:"signatureSubscribe",unsubscribeMethod:"signatureUnsubscribe"},i);return r}onSignatureWithOptions(e,t,n){const{commitment:i,...r}={...n,commitment:n&&n.commitment||this._commitment||"finalized"},o=this._buildArgs([e],i,void 0,r),A=this._makeSubscription({callback:(e,n)=>{t(e,n);try{this.removeSignatureListener(A)}catch(e){}},method:"signatureSubscribe",unsubscribeMethod:"signatureUnsubscribe"},o);return A}async removeSignatureListener(e){await this._unsubscribeClientSubscription(e,"signature result")}_wsOnRootNotification(e){const{result:t,subscription:n}=At(e,lo);this._handleServerNotification(n,[t])}onRootChange(e){return this._makeSubscription({callback:e,method:"rootSubscribe",unsubscribeMethod:"rootUnsubscribe"},[])}async removeRootChangeListener(e){await this._unsubscribeClientSubscription(e,"root change")}}class eA{constructor(e){this._keypair=void 0,this._keypair=null!=e?e:Yn()}static generate(){return new eA(Yn())}static fromSecretKey(e,t){if(64!==e.byteLength)throw new Error("bad secret key size");const n=e.slice(32,64);if(!t||!t.skipValidation){const t=e.slice(0,32),i=jn(t);for(let e=0;e<32;e++)if(n[e]!==i[e])throw new Error("provided secretKey is invalid")}return new eA({publicKey:n,secretKey:e})}static fromSeed(e){const t=jn(e),n=new Uint8Array(64);return n.set(e),n.set(t,32),new eA({publicKey:t,secretKey:n})}get publicKey(){return new ni(this._keypair.publicKey)}get secretKey(){return new Uint8Array(this._keypair.secretKey)}}const tA=Object.freeze({CreateLookupTable:{index:0,layout:He.struct([He.u32("instruction"),Ji("recentSlot"),He.u8("bumpSeed")])},FreezeLookupTable:{index:1,layout:He.struct([He.u32("instruction")])},ExtendLookupTable:{index:2,layout:He.struct([He.u32("instruction"),Ji(),He.seq(gi(),He.offset(He.u32(),-8),"addresses")])},DeactivateLookupTable:{index:3,layout:He.struct([He.u32("instruction")])},CloseLookupTable:{index:4,layout:He.struct([He.u32("instruction")])}});class nA{constructor(){}static decodeInstructionType(e){this.checkProgramId(e.programId);const t=He.u32("instruction").decode(e.data);let n;for(const[e,i]of Object.entries(tA))if(i.index==t){n=e;break}if(!n)throw new Error("Invalid Instruction. Should be a LookupTable Instruction");return n}static decodeCreateLookupTable(e){this.checkProgramId(e.programId),this.checkKeysLength(e.keys,4);const{recentSlot:t}=Li(tA.CreateLookupTable,e.data);return{authority:e.keys[1].pubkey,payer:e.keys[2].pubkey,recentSlot:Number(t)}}static decodeExtendLookupTable(e){if(this.checkProgramId(e.programId),e.keys.length<2)throw new Error(`invalid instruction; found ${e.keys.length} keys, expected at least 2`);const{addresses:t}=Li(tA.ExtendLookupTable,e.data);return{lookupTable:e.keys[0].pubkey,authority:e.keys[1].pubkey,payer:e.keys.length>2?e.keys[2].pubkey:void 0,addresses:t.map((e=>new ni(e)))}}static decodeCloseLookupTable(e){return this.checkProgramId(e.programId),this.checkKeysLength(e.keys,3),{lookupTable:e.keys[0].pubkey,authority:e.keys[1].pubkey,recipient:e.keys[2].pubkey}}static decodeFreezeLookupTable(e){return this.checkProgramId(e.programId),this.checkKeysLength(e.keys,2),{lookupTable:e.keys[0].pubkey,authority:e.keys[1].pubkey}}static decodeDeactivateLookupTable(e){return this.checkProgramId(e.programId),this.checkKeysLength(e.keys,2),{lookupTable:e.keys[0].pubkey,authority:e.keys[1].pubkey}}static checkProgramId(e){if(!e.equals(iA.programId))throw new Error("invalid instruction; programId is not AddressLookupTable Program")}static checkKeysLength(e,t){if(e.lengthe.toBytes()))}),n=[{pubkey:e.lookupTable,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1}];return e.payer&&n.push({pubkey:e.payer,isSigner:!0,isWritable:!0},{pubkey:zi.programId,isSigner:!1,isWritable:!1}),new bi({programId:this.programId,keys:n,data:t})}static deactivateLookupTable(e){const t=_i(tA.DeactivateLookupTable),n=[{pubkey:e.lookupTable,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1}];return new bi({programId:this.programId,keys:n,data:t})}static closeLookupTable(e){const t=_i(tA.CloseLookupTable),n=[{pubkey:e.lookupTable,isSigner:!1,isWritable:!0},{pubkey:e.authority,isSigner:!0,isWritable:!1},{pubkey:e.recipient,isSigner:!1,isWritable:!0}];return new bi({programId:this.programId,keys:n,data:t})}}iA.programId=new ni("AddressLookupTab1e1111111111111111111111111");class rA{constructor(){}static decodeInstructionType(e){this.checkProgramId(e.programId);const t=He.u8("instruction").decode(e.data);let n;for(const[e,i]of Object.entries(oA))if(i.index==t){n=e;break}if(!n)throw new Error("Instruction type incorrect; not a ComputeBudgetInstruction");return n}static decodeRequestUnits(e){this.checkProgramId(e.programId);const{units:t,additionalFee:n}=Li(oA.RequestUnits,e.data);return{units:t,additionalFee:n}}static decodeRequestHeapFrame(e){this.checkProgramId(e.programId);const{bytes:t}=Li(oA.RequestHeapFrame,e.data);return{bytes:t}}static decodeSetComputeUnitLimit(e){this.checkProgramId(e.programId);const{units:t}=Li(oA.SetComputeUnitLimit,e.data);return{units:t}}static decodeSetComputeUnitPrice(e){this.checkProgramId(e.programId);const{microLamports:t}=Li(oA.SetComputeUnitPrice,e.data);return{microLamports:t}}static checkProgramId(e){if(!e.equals(AA.programId))throw new Error("invalid instruction; programId is not ComputeBudgetProgram")}}const oA=Object.freeze({RequestUnits:{index:0,layout:He.struct([He.u8("instruction"),He.u32("units"),He.u32("additionalFee")])},RequestHeapFrame:{index:1,layout:He.struct([He.u8("instruction"),He.u32("bytes")])},SetComputeUnitLimit:{index:2,layout:He.struct([He.u8("instruction"),He.u32("units")])},SetComputeUnitPrice:{index:3,layout:He.struct([He.u8("instruction"),Ji("microLamports")])}});class AA{constructor(){}static requestUnits(e){const t=_i(oA.RequestUnits,e);return new bi({keys:[],programId:this.programId,data:t})}static requestHeapFrame(e){const t=_i(oA.RequestHeapFrame,e);return new bi({keys:[],programId:this.programId,data:t})}static setComputeUnitLimit(e){const t=_i(oA.SetComputeUnitLimit,e);return new bi({keys:[],programId:this.programId,data:t})}static setComputeUnitPrice(e){const t=_i(oA.SetComputeUnitPrice,{microLamports:BigInt(e.microLamports)});return new bi({keys:[],programId:this.programId,data:t})}}AA.programId=new ni("ComputeBudget111111111111111111111111111111");const sA=He.struct([He.u8("numSignatures"),He.u8("padding"),He.u16("signatureOffset"),He.u16("signatureInstructionIndex"),He.u16("publicKeyOffset"),He.u16("publicKeyInstructionIndex"),He.u16("messageDataOffset"),He.u16("messageDataSize"),He.u16("messageInstructionIndex")]);class aA{constructor(){}static createInstructionWithPublicKey(e){const{publicKey:t,message:n,signature:r,instructionIndex:o}=e;Ii(32===t.length,`Public Key must be 32 bytes but received ${t.length} bytes`),Ii(64===r.length,`Signature must be 64 bytes but received ${r.length} bytes`);const A=sA.span,s=A+t.length,a=s+r.length,c=i.lW.alloc(a+n.length),u=null==o?65535:o;return sA.encode({numSignatures:1,padding:0,signatureOffset:s,signatureInstructionIndex:u,publicKeyOffset:A,publicKeyInstructionIndex:u,messageDataOffset:a,messageDataSize:n.length,messageInstructionIndex:u},c),c.fill(t,A),c.fill(r,s),c.fill(n,a),new bi({keys:[],programId:aA.programId,data:c})}static createInstructionWithPrivateKey(e){const{privateKey:t,message:n,instructionIndex:i}=e;Ii(64===t.length,`Private key must be 64 bytes but received ${t.length} bytes`);try{const e=eA.fromSecretKey(t),r=e.publicKey.toBytes(),o=Jn(n,e.secretKey);return this.createInstructionWithPublicKey({publicKey:r,message:n,signature:o,instructionIndex:i})}catch(e){throw new Error(`Error creating instruction; ${e}`)}}}aA.programId=new ni("Ed25519SigVerify111111111111111111111111111"),_n.hmacSha256Sync=(e,...t)=>{const n=Wt.create(Ze,e);return t.forEach((e=>n.update(e))),n.digest()};const cA=(e,t)=>function(e,t,n={}){const{seed:i,m:r,d:o}=function(e,t,n){if(null==e)throw new Error(`sign: expected valid message hash, not "${e}"`);const i=Bn(e),r=On(t),o=[Gn(r),Rn(i)];if(null!=n){!0===n&&(n=_n.randomBytes(32));const e=Bn(n);if(32!==e.length)throw new Error("sign: Expected 32 bytes of extra data");o.push(e)}return{seed:un(...o),m:Fn(i),d:r}}(e,t,n.extraEntropy);let A;const s=new Dn;for(s.reseedSync(i);!(A=Pn(s.generateSync(),r,o));)s.reseedSync();return function(e,t){let{sig:n,recovery:i}=e;const{canonical:r,der:o,recovered:A}=Object.assign({canonical:!0,der:!0},t);r&&n.hasHighS()&&(n=n.normalizeS(),i^=1);const s=o?n.toDERRawBytes():n.toCompactRawBytes();return A?[s,i]:s}(A,n)}(e,t,{der:!1,recovered:!0});_n.isValidPrivateKey;const uA=He.struct([He.u8("numSignatures"),He.u16("signatureOffset"),He.u8("signatureInstructionIndex"),He.u16("ethAddressOffset"),He.u8("ethAddressInstructionIndex"),He.u16("messageDataOffset"),He.u16("messageDataSize"),He.u8("messageInstructionIndex"),He.blob(20,"ethAddress"),He.blob(64,"signature"),He.u8("recoveryId")]);class lA{constructor(){}static publicKeyToEthAddress(e){Ii(64===e.length,`Public key must be 64 bytes but received ${e.length} bytes`);try{return i.lW.from(Kt(Zn(e))).slice(-20)}catch(e){throw new Error(`Error constructing Ethereum address: ${e}`)}}static createInstructionWithPublicKey(e){const{publicKey:t,message:n,signature:i,recoveryId:r,instructionIndex:o}=e;return lA.createInstructionWithEthAddress({ethAddress:lA.publicKeyToEthAddress(t),message:n,signature:i,recoveryId:r,instructionIndex:o})}static createInstructionWithEthAddress(e){const{ethAddress:t,message:n,signature:r,recoveryId:o,instructionIndex:A=0}=e;let s;s="string"==typeof t?t.startsWith("0x")?i.lW.from(t.substr(2),"hex"):i.lW.from(t,"hex"):t,Ii(20===s.length,`Address must be 20 bytes but received ${s.length} bytes`);const a=12+s.length,c=a+r.length+1,u=i.lW.alloc(uA.span+n.length);return uA.encode({numSignatures:1,signatureOffset:a,signatureInstructionIndex:A,ethAddressOffset:12,ethAddressInstructionIndex:A,messageDataOffset:c,messageDataSize:n.length,messageInstructionIndex:A,signature:Zn(r),ethAddress:Zn(s),recoveryId:o},u),u.fill(Zn(n),uA.span),new bi({keys:[],programId:lA.programId,data:u})}static createInstructionWithPrivateKey(e){const{privateKey:t,message:n,instructionIndex:r}=e;Ii(32===t.length,`Private key must be 32 bytes but received ${t.length} bytes`);try{const e=Zn(t),o=function(e,t=!1){return An.fromPrivateKey(e).toRawBytes(t)}(e,!1).slice(1),A=i.lW.from(Kt(Zn(n))),[s,a]=cA(A,e);return this.createInstructionWithPublicKey({publicKey:o,message:n,signature:s,recoveryId:a,instructionIndex:r})}catch(e){throw new Error(`Error creating instruction; ${e}`)}}}lA.programId=new ni("KeccakSecp256k11111111111111111111111111111");const gA=new ni("StakeConfig11111111111111111111111111111111");class dA{constructor(e,t){this.staker=void 0,this.withdrawer=void 0,this.staker=e,this.withdrawer=t}}class hA{constructor(e,t,n){this.unixTimestamp=void 0,this.epoch=void 0,this.custodian=void 0,this.unixTimestamp=e,this.epoch=t,this.custodian=n}}hA.default=new hA(0,0,ni.default);class pA{constructor(){}static decodeInstructionType(e){this.checkProgramId(e.programId);const t=He.u32("instruction").decode(e.data);let n;for(const[e,i]of Object.entries(fA))if(i.index==t){n=e;break}if(!n)throw new Error("Instruction type incorrect; not a StakeInstruction");return n}static decodeInitialize(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,2);const{authorized:t,lockup:n}=Li(fA.Initialize,e.data);return{stakePubkey:e.keys[0].pubkey,authorized:new dA(new ni(t.staker),new ni(t.withdrawer)),lockup:new hA(n.unixTimestamp,n.epoch,new ni(n.custodian))}}static decodeDelegate(e){return this.checkProgramId(e.programId),this.checkKeyLength(e.keys,6),Li(fA.Delegate,e.data),{stakePubkey:e.keys[0].pubkey,votePubkey:e.keys[1].pubkey,authorizedPubkey:e.keys[5].pubkey}}static decodeAuthorize(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{newAuthorized:t,stakeAuthorizationType:n}=Li(fA.Authorize,e.data),i={stakePubkey:e.keys[0].pubkey,authorizedPubkey:e.keys[2].pubkey,newAuthorizedPubkey:new ni(t),stakeAuthorizationType:{index:n}};return e.keys.length>3&&(i.custodianPubkey=e.keys[3].pubkey),i}static decodeAuthorizeWithSeed(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,2);const{newAuthorized:t,stakeAuthorizationType:n,authoritySeed:i,authorityOwner:r}=Li(fA.AuthorizeWithSeed,e.data),o={stakePubkey:e.keys[0].pubkey,authorityBase:e.keys[1].pubkey,authoritySeed:i,authorityOwner:new ni(r),newAuthorizedPubkey:new ni(t),stakeAuthorizationType:{index:n}};return e.keys.length>3&&(o.custodianPubkey=e.keys[3].pubkey),o}static decodeSplit(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{lamports:t}=Li(fA.Split,e.data);return{stakePubkey:e.keys[0].pubkey,splitStakePubkey:e.keys[1].pubkey,authorizedPubkey:e.keys[2].pubkey,lamports:t}}static decodeMerge(e){return this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3),Li(fA.Merge,e.data),{stakePubkey:e.keys[0].pubkey,sourceStakePubKey:e.keys[1].pubkey,authorizedPubkey:e.keys[4].pubkey}}static decodeWithdraw(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,5);const{lamports:t}=Li(fA.Withdraw,e.data),n={stakePubkey:e.keys[0].pubkey,toPubkey:e.keys[1].pubkey,authorizedPubkey:e.keys[4].pubkey,lamports:t};return e.keys.length>5&&(n.custodianPubkey=e.keys[5].pubkey),n}static decodeDeactivate(e){return this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3),Li(fA.Deactivate,e.data),{stakePubkey:e.keys[0].pubkey,authorizedPubkey:e.keys[2].pubkey}}static checkProgramId(e){if(!e.equals(IA.programId))throw new Error("invalid instruction; programId is not StakeProgram")}static checkKeyLength(e,t){if(e.lengthHe.struct([gi("staker"),gi("withdrawer")],e))(),((e="lockup")=>He.struct([He.ns64("unixTimestamp"),He.ns64("epoch"),gi("custodian")],e))()])},Authorize:{index:1,layout:He.struct([He.u32("instruction"),gi("newAuthorized"),He.u32("stakeAuthorizationType")])},Delegate:{index:2,layout:He.struct([He.u32("instruction")])},Split:{index:3,layout:He.struct([He.u32("instruction"),He.ns64("lamports")])},Withdraw:{index:4,layout:He.struct([He.u32("instruction"),He.ns64("lamports")])},Deactivate:{index:5,layout:He.struct([He.u32("instruction")])},Merge:{index:7,layout:He.struct([He.u32("instruction")])},AuthorizeWithSeed:{index:8,layout:He.struct([He.u32("instruction"),gi("newAuthorized"),He.u32("stakeAuthorizationType"),hi("authoritySeed"),gi("authorityOwner")])}}),mA=Object.freeze({Staker:{index:0},Withdrawer:{index:1}});class IA{constructor(){}static initialize(e){const{stakePubkey:t,authorized:n,lockup:i}=e,r=i||hA.default,o=_i(fA.Initialize,{authorized:{staker:Zn(n.staker.toBuffer()),withdrawer:Zn(n.withdrawer.toBuffer())},lockup:{unixTimestamp:r.unixTimestamp,epoch:r.epoch,custodian:Zn(r.custodian.toBuffer())}}),A={keys:[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:Pi,isSigner:!1,isWritable:!1}],programId:this.programId,data:o};return new bi(A)}static createAccountWithSeed(e){const t=new ki;t.add(zi.createAccountWithSeed({fromPubkey:e.fromPubkey,newAccountPubkey:e.stakePubkey,basePubkey:e.basePubkey,seed:e.seed,lamports:e.lamports,space:this.space,programId:this.programId}));const{stakePubkey:n,authorized:i,lockup:r}=e;return t.add(this.initialize({stakePubkey:n,authorized:i,lockup:r}))}static createAccount(e){const t=new ki;t.add(zi.createAccount({fromPubkey:e.fromPubkey,newAccountPubkey:e.stakePubkey,lamports:e.lamports,space:this.space,programId:this.programId}));const{stakePubkey:n,authorized:i,lockup:r}=e;return t.add(this.initialize({stakePubkey:n,authorized:i,lockup:r}))}static delegate(e){const{stakePubkey:t,authorizedPubkey:n,votePubkey:i}=e,r=_i(fA.Delegate);return(new ki).add({keys:[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:Mi,isSigner:!1,isWritable:!1},{pubkey:Gi,isSigner:!1,isWritable:!1},{pubkey:gA,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!1}],programId:this.programId,data:r})}static authorize(e){const{stakePubkey:t,authorizedPubkey:n,newAuthorizedPubkey:i,stakeAuthorizationType:r,custodianPubkey:o}=e,A=_i(fA.Authorize,{newAuthorized:Zn(i.toBuffer()),stakeAuthorizationType:r.index}),s=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:Mi,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return o&&s.push({pubkey:o,isSigner:!1,isWritable:!1}),(new ki).add({keys:s,programId:this.programId,data:A})}static authorizeWithSeed(e){const{stakePubkey:t,authorityBase:n,authoritySeed:i,authorityOwner:r,newAuthorizedPubkey:o,stakeAuthorizationType:A,custodianPubkey:s}=e,a=_i(fA.AuthorizeWithSeed,{newAuthorized:Zn(o.toBuffer()),stakeAuthorizationType:A.index,authoritySeed:i,authorityOwner:Zn(r.toBuffer())}),c=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1},{pubkey:Mi,isSigner:!1,isWritable:!1}];return s&&c.push({pubkey:s,isSigner:!1,isWritable:!1}),(new ki).add({keys:c,programId:this.programId,data:a})}static splitInstruction(e){const{stakePubkey:t,authorizedPubkey:n,splitStakePubkey:i,lamports:r}=e,o=_i(fA.Split,{lamports:r});return new bi({keys:[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}],programId:this.programId,data:o})}static split(e){const t=new ki;return t.add(zi.createAccount({fromPubkey:e.authorizedPubkey,newAccountPubkey:e.splitStakePubkey,lamports:0,space:this.space,programId:this.programId})),t.add(this.splitInstruction(e))}static splitWithSeed(e){const{stakePubkey:t,authorizedPubkey:n,splitStakePubkey:i,basePubkey:r,seed:o,lamports:A}=e,s=new ki;return s.add(zi.allocate({accountPubkey:i,basePubkey:r,seed:o,space:this.space,programId:this.programId})),s.add(this.splitInstruction({stakePubkey:t,authorizedPubkey:n,splitStakePubkey:i,lamports:A}))}static merge(e){const{stakePubkey:t,sourceStakePubKey:n,authorizedPubkey:i}=e,r=_i(fA.Merge);return(new ki).add({keys:[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:Mi,isSigner:!1,isWritable:!1},{pubkey:Gi,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!0,isWritable:!1}],programId:this.programId,data:r})}static withdraw(e){const{stakePubkey:t,authorizedPubkey:n,toPubkey:i,lamports:r,custodianPubkey:o}=e,A=_i(fA.Withdraw,{lamports:r}),s=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:i,isSigner:!1,isWritable:!0},{pubkey:Mi,isSigner:!1,isWritable:!1},{pubkey:Gi,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!1}];return o&&s.push({pubkey:o,isSigner:!1,isWritable:!1}),(new ki).add({keys:s,programId:this.programId,data:A})}static deactivate(e){const{stakePubkey:t,authorizedPubkey:n}=e,i=_i(fA.Deactivate);return(new ki).add({keys:[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:Mi,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!1}],programId:this.programId,data:i})}}IA.programId=new ni("Stake11111111111111111111111111111111111111"),IA.space=200;class yA{constructor(e,t,n,i){this.nodePubkey=void 0,this.authorizedVoter=void 0,this.authorizedWithdrawer=void 0,this.commission=void 0,this.nodePubkey=e,this.authorizedVoter=t,this.authorizedWithdrawer=n,this.commission=i}}class BA{constructor(){}static decodeInstructionType(e){this.checkProgramId(e.programId);const t=He.u32("instruction").decode(e.data);let n;for(const[e,i]of Object.entries(CA))if(i.index==t){n=e;break}if(!n)throw new Error("Instruction type incorrect; not a VoteInstruction");return n}static decodeInitializeAccount(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,4);const{voteInit:t}=Li(CA.InitializeAccount,e.data);return{votePubkey:e.keys[0].pubkey,nodePubkey:e.keys[3].pubkey,voteInit:new yA(new ni(t.nodePubkey),new ni(t.authorizedVoter),new ni(t.authorizedWithdrawer),t.commission)}}static decodeAuthorize(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{newAuthorized:t,voteAuthorizationType:n}=Li(CA.Authorize,e.data);return{votePubkey:e.keys[0].pubkey,authorizedPubkey:e.keys[2].pubkey,newAuthorizedPubkey:new ni(t),voteAuthorizationType:{index:n}}}static decodeAuthorizeWithSeed(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{voteAuthorizeWithSeedArgs:{currentAuthorityDerivedKeyOwnerPubkey:t,currentAuthorityDerivedKeySeed:n,newAuthorized:i,voteAuthorizationType:r}}=Li(CA.AuthorizeWithSeed,e.data);return{currentAuthorityDerivedKeyBasePubkey:e.keys[2].pubkey,currentAuthorityDerivedKeyOwnerPubkey:new ni(t),currentAuthorityDerivedKeySeed:n,newAuthorizedPubkey:new ni(i),voteAuthorizationType:{index:r},votePubkey:e.keys[0].pubkey}}static decodeWithdraw(e){this.checkProgramId(e.programId),this.checkKeyLength(e.keys,3);const{lamports:t}=Li(CA.Withdraw,e.data);return{votePubkey:e.keys[0].pubkey,authorizedWithdrawerPubkey:e.keys[2].pubkey,lamports:t,toPubkey:e.keys[1].pubkey}}static checkProgramId(e){if(!e.equals(EA.programId))throw new Error("invalid instruction; programId is not VoteProgram")}static checkKeyLength(e,t){if(e.lengthHe.struct([gi("nodePubkey"),gi("authorizedVoter"),gi("authorizedWithdrawer"),He.u8("commission")],e))()])},Authorize:{index:1,layout:He.struct([He.u32("instruction"),gi("newAuthorized"),He.u32("voteAuthorizationType")])},Withdraw:{index:3,layout:He.struct([He.u32("instruction"),He.ns64("lamports")])},AuthorizeWithSeed:{index:10,layout:He.struct([He.u32("instruction"),((e="voteAuthorizeWithSeedArgs")=>He.struct([He.u32("voteAuthorizationType"),gi("currentAuthorityDerivedKeyOwnerPubkey"),hi("currentAuthorityDerivedKeySeed"),gi("newAuthorized")],e))()])}}),wA=Object.freeze({Voter:{index:0},Withdrawer:{index:1}});class EA{constructor(){}static initializeAccount(e){const{votePubkey:t,nodePubkey:n,voteInit:i}=e,r=_i(CA.InitializeAccount,{voteInit:{nodePubkey:Zn(i.nodePubkey.toBuffer()),authorizedVoter:Zn(i.authorizedVoter.toBuffer()),authorizedWithdrawer:Zn(i.authorizedWithdrawer.toBuffer()),commission:i.commission}}),o={keys:[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:Pi,isSigner:!1,isWritable:!1},{pubkey:Mi,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!1}],programId:this.programId,data:r};return new bi(o)}static createAccount(e){const t=new ki;return t.add(zi.createAccount({fromPubkey:e.fromPubkey,newAccountPubkey:e.votePubkey,lamports:e.lamports,space:this.space,programId:this.programId})),t.add(this.initializeAccount({votePubkey:e.votePubkey,nodePubkey:e.voteInit.nodePubkey,voteInit:e.voteInit}))}static authorize(e){const{votePubkey:t,authorizedPubkey:n,newAuthorizedPubkey:i,voteAuthorizationType:r}=e,o=_i(CA.Authorize,{newAuthorized:Zn(i.toBuffer()),voteAuthorizationType:r.index}),A=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:Mi,isSigner:!1,isWritable:!1},{pubkey:n,isSigner:!0,isWritable:!1}];return(new ki).add({keys:A,programId:this.programId,data:o})}static authorizeWithSeed(e){const{currentAuthorityDerivedKeyBasePubkey:t,currentAuthorityDerivedKeyOwnerPubkey:n,currentAuthorityDerivedKeySeed:i,newAuthorizedPubkey:r,voteAuthorizationType:o,votePubkey:A}=e,s=_i(CA.AuthorizeWithSeed,{voteAuthorizeWithSeedArgs:{currentAuthorityDerivedKeyOwnerPubkey:Zn(n.toBuffer()),currentAuthorityDerivedKeySeed:i,newAuthorized:Zn(r.toBuffer()),voteAuthorizationType:o.index}}),a=[{pubkey:A,isSigner:!1,isWritable:!0},{pubkey:Mi,isSigner:!1,isWritable:!1},{pubkey:t,isSigner:!0,isWritable:!1}];return(new ki).add({keys:a,programId:this.programId,data:s})}static withdraw(e){const{votePubkey:t,authorizedWithdrawerPubkey:n,lamports:i,toPubkey:r}=e,o=_i(CA.Withdraw,{lamports:i}),A=[{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:r,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!0,isWritable:!1}];return(new ki).add({keys:A,programId:this.programId,data:o})}static safeWithdraw(e,t,n){if(e.lamports>t-n)throw new Error("Withdraw will leave vote account with insuffcient funds.");return EA.withdraw(e)}}EA.programId=new ni("Vote111111111111111111111111111111111111111"),EA.space=3731;const QA=new ni("Va1idator1nfo111111111111111111111111111111"),bA=Bt({name:It(),website:ft(It()),details:ft(It()),keybaseUsername:ft(It())});class kA{constructor(e,t){this.key=void 0,this.info=void 0,this.key=e,this.info=t}static fromConfigData(e){let t=[...e];if(2!==fi(t))return null;const n=[];for(let e=0;e<2;e++){const e=new ni(t.slice(0,ei));t=t.slice(ei);const i=1===t.slice(0,1)[0];t=t.slice(1),n.push({publicKey:e,isSigner:i})}if(n[0].publicKey.equals(QA)&&n[1].isSigner){const e=hi().decode(i.lW.from(t)),r=JSON.parse(e);return ot(r,bA),new kA(n[1].publicKey,r)}return null}}const vA=new ni("Vote111111111111111111111111111111111111111"),SA=He.struct([gi("nodePubkey"),gi("authorizedWithdrawer"),He.u8("commission"),He.nu64(),He.seq(He.struct([He.nu64("slot"),He.u32("confirmationCount")]),He.offset(He.u32(),-8),"votes"),He.u8("rootSlotValid"),He.nu64("rootSlot"),He.nu64(),He.seq(He.struct([He.nu64("epoch"),gi("authorizedVoter")]),He.offset(He.u32(),-8),"authorizedVoters"),He.struct([He.seq(He.struct([gi("authorizedPubkey"),He.nu64("epochOfLastAuthorizedSwitch"),He.nu64("targetEpoch")]),32,"buf"),He.nu64("idx"),He.u8("isEmpty")],"priorVoters"),He.nu64(),He.seq(He.struct([He.nu64("epoch"),He.nu64("credits"),He.nu64("prevCredits")]),He.offset(He.u32(),-8),"epochCredits"),He.struct([He.nu64("slot"),He.nu64("timestamp")],"lastTimestamp")]);class MA{constructor(e){this.nodePubkey=void 0,this.authorizedWithdrawer=void 0,this.commission=void 0,this.rootSlot=void 0,this.votes=void 0,this.authorizedVoters=void 0,this.priorVoters=void 0,this.epochCredits=void 0,this.lastTimestamp=void 0,this.nodePubkey=e.nodePubkey,this.authorizedWithdrawer=e.authorizedWithdrawer,this.commission=e.commission,this.rootSlot=e.rootSlot,this.votes=e.votes,this.authorizedVoters=e.authorizedVoters,this.priorVoters=e.priorVoters,this.epochCredits=e.epochCredits,this.lastTimestamp=e.lastTimestamp}static fromAccountData(e){const t=SA.decode(Zn(e),4);let n=t.rootSlot;return t.rootSlotValid||(n=null),new MA({nodePubkey:new ni(t.nodePubkey),authorizedWithdrawer:new ni(t.authorizedWithdrawer),commission:t.commission,votes:t.votes,rootSlot:n,authorizedVoters:t.authorizedVoters.map(DA),priorVoters:TA(t.priorVoters),epochCredits:t.epochCredits,lastTimestamp:t.lastTimestamp})}}function DA({authorizedVoter:e,epoch:t}){return{epoch:t,authorizedVoter:new ni(e)}}function NA({authorizedPubkey:e,epochOfLastAuthorizedSwitch:t,targetEpoch:n}){return{authorizedPubkey:new ni(e),epochOfLastAuthorizedSwitch:t,targetEpoch:n}}function TA({buf:e,idx:t,isEmpty:n}){return n?[]:[...e.slice(t+1).map(NA),...e.slice(0,t).map(NA)]}const PA={http:{devnet:"http://api.devnet.solana.com",testnet:"http://api.testnet.solana.com","mainnet-beta":"http://api.mainnet-beta.solana.com/"},https:{devnet:"https://api.devnet.solana.com",testnet:"https://api.testnet.solana.com","mainnet-beta":"https://api.mainnet-beta.solana.com/"}};function OA(e,t){const n=!1===t?"http":"https";if(!e)return PA[n].devnet;const i=PA[n][e];if(!i)throw new Error(`Unknown ${n} cluster: ${e}`);return i}async function FA(e,t,n,i){let r,o;n&&Object.prototype.hasOwnProperty.call(n,"lastValidBlockHeight")||n&&Object.prototype.hasOwnProperty.call(n,"nonceValue")?(r=n,o=i):o=n;const A=o&&{skipPreflight:o.skipPreflight,preflightCommitment:o.preflightCommitment||o.commitment,minContextSlot:o.minContextSlot},s=await e.sendRawTransaction(t,A),a=o&&o.commitment,c=r?e.confirmTransaction(r,a):e.confirmTransaction(s,a),u=(await c).value;if(u.err)throw new Error(`Raw transaction ${s} failed (${JSON.stringify(u)})`);return s}const RA=1e9},262:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>D});var i,r=n(11312),o=n.n(r),A=(i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},i(e,t)},function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)});const s=function(e){function t(){return null!==e&&e.apply(this,arguments)||this}return A(t,e),t}(o());var a=n(97212),c=n(31511),u=n.n(c);class l extends(o()){constructor(e,t){var n,i;if(super(),n=this,this._handleMessage=e=>{if(this._injectedProvider&&e.source===window||e.origin===this._providerUrl.origin&&e.source===this._popup)if("connected"===e.data.method){const t=new a.PublicKey(e.data.params.publicKey);this._publicKey&&this._publicKey.equals(t)||(this._publicKey&&!this._publicKey.equals(t)&&this._handleDisconnect(),this._publicKey=t,this._autoApprove=!!e.data.params.autoApprove,this.emit("connect",this._publicKey))}else if("disconnected"===e.data.method)this._handleDisconnect();else if((e.data.result||e.data.error)&&this._responsePromises.has(e.data.id)){const[t,n]=this._responsePromises.get(e.data.id);e.data.result?t(e.data.result):n(new Error(e.data.error))}},this._handleConnect=()=>(this._handlerAdded||(this._handlerAdded=!0,window.addEventListener("message",this._handleMessage),window.addEventListener("beforeunload",this.disconnect)),this._injectedProvider?new Promise((e=>{this._sendRequest("connect",{}),e()})):(window.name="parent",this._popup=window.open(this._providerUrl.toString(),"_blank","location,resizable,width=460,height=675"),new Promise((e=>{this.once("connect",e)})))),this._handleDisconnect=()=>{this._handlerAdded&&(this._handlerAdded=!1,window.removeEventListener("message",this._handleMessage),window.removeEventListener("beforeunload",this.disconnect)),this._publicKey&&(this._publicKey=null,this.emit("disconnect")),this._responsePromises.forEach((([e,t],n)=>{this._responsePromises.delete(n),t("Wallet disconnected")}))},this._sendRequest=async function(e,t){if("connect"!==e&&!n.connected)throw new Error("Wallet not connected");const i=n._nextRequestId;return++n._nextRequestId,new Promise(((r,o)=>{n._responsePromises.set(i,[r,o]),n._injectedProvider?n._injectedProvider.postMessage({jsonrpc:"2.0",id:i,method:e,params:{network:n._network,...t}}):(n._popup.postMessage({jsonrpc:"2.0",id:i,method:e,params:t},n._providerUrl.origin),n.autoApprove||n._popup.focus())}))},this.connect=()=>(this._popup&&this._popup.close(),this._handleConnect()),this.disconnect=async function(){n._injectedProvider&&await n._sendRequest("disconnect",{}),n._popup&&n._popup.close(),n._handleDisconnect()},this.sign=async function(e,t){if(!(e instanceof Uint8Array))throw new Error("Data must be an instance of Uint8Array");const i=await n._sendRequest("sign",{data:e,display:t});return{signature:u().decode(i.signature),publicKey:new a.PublicKey(i.publicKey)}},this.signTransaction=async function(e){const t=await n._sendRequest("signTransaction",{message:u().encode(e.serializeMessage())}),i=u().decode(t.signature),r=new a.PublicKey(t.publicKey);return e.addSignature(r,i),e},this.signAllTransactions=async function(e){const t=await n._sendRequest("signAllTransactions",{messages:e.map((e=>u().encode(e.serializeMessage())))}),i=t.signatures.map((e=>u().decode(e))),r=new a.PublicKey(t.publicKey);return e.map(((e,t)=>(e.addSignature(r,i[t]),e)))},function(e){return"object"==typeof e&&null!==e}(i=e)&&function(e){return"function"==typeof e}(i.postMessage))this._injectedProvider=e;else{if(!function(e){return"string"==typeof e}(e))throw new Error("provider parameter must be an injected provider or a URL string.");this._providerUrl=new URL(e),this._providerUrl.hash=new URLSearchParams({origin:window.location.origin,network:t}).toString()}this._network=t,this._publicKey=null,this._autoApprove=!1,this._popup=null,this._handlerAdded=!1,this._nextRequestId=1,this._responsePromises=new Map}get publicKey(){return this._publicKey}get connected(){return null!==this._publicKey}get autoApprove(){return this._autoApprove}}const g=l;var d=function(){var e=function(t,n){return e=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},e(t,n)};return function(t,n){if("function"!=typeof n&&null!==n)throw new TypeError("Class extends value "+String(n)+" is not a constructor or null");function i(){this.constructor=t}e(t,n),t.prototype=null===n?Object.create(n):(i.prototype=n.prototype,new i)}}(),h=function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},p=function(e,t){var n,i,r,o,A={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(o){return function(s){return function(o){if(n)throw new TypeError("Generator is already executing.");for(;A;)try{if(n=1,i&&(r=2&o[0]?i.return:o[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,o[1])).done)return r;switch(i=0,r&&(o=[2&o[0],r.value]),o[0]){case 0:case 1:r=o;break;case 4:return A.label++,{value:o[1],done:!1};case 5:A.label++,i=o[1],o=[0];continue;case 7:o=A.ops.pop(),A.trys.pop();continue;default:if(!((r=(r=A.trys).length>0&&r[r.length-1])||6!==o[0]&&2!==o[0])){A=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]0&&r[r.length-1])||6!==o[0]&&2!==o[0])){A=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]0&&r[r.length-1])||6!==o[0]&&2!==o[0])){A=0;continue}if(3===o[0]&&(!r||o[1]>r[0]&&o[1]=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}(n),r=i.next();!r.done;r=i.next()){var o=r.value;o.parentElement&&o.remove()}}catch(t){e={error:t}}finally{try{r&&!r.done&&(t=i.return)&&t.call(i)}finally{if(e)throw e.error}}},i._injectElement=function(){i._removeElement(),i._removeDanglingElements();var e="".concat(t.IFRAME_URL,"?cluster=").concat(encodeURIComponent(i._network),"&origin=").concat(encodeURIComponent(window.location.origin),"&version=1"),n=i._getPreferredAdapter();n&&(e+="&adapter=".concat(encodeURIComponent(n))),i._element=document.createElement("div"),i._element.className="solflare-wallet-adapter-iframe",i._element.innerHTML="\n \n "),document.body.appendChild(i._element),i._iframe=i._element.querySelector("iframe"),window.fromFlutter=i._handleMobileMessage,i._flutterHandlerInterval=setInterval((function(){window.fromFlutter=i._handleMobileMessage}),100),window.addEventListener("message",i._handleMessage,!1)},i._collapseIframe=function(){i._iframe&&(i._iframe.style.top="",i._iframe.style.right="",i._iframe.style.height="2px",i._iframe.style.width="2px")},i._expandIframe=function(){i._iframe&&(i._iframe.style.top="0px",i._iframe.style.bottom="0px",i._iframe.style.left="0px",i._iframe.style.right="0px",i._iframe.style.width="100%",i._iframe.style.height="100%")},i._getPreferredAdapter=function(){return localStorage&&localStorage.getItem("solflarePreferredWalletAdapter")||null},i._setPreferredAdapter=function(e){localStorage&&e&&localStorage.setItem("solflarePreferredWalletAdapter",e)},i._clearPreferredAdapter=function(){localStorage&&localStorage.removeItem("solflarePreferredWalletAdapter")},i._webConnected=function(){i._connectHandler&&(i._connectHandler.resolve(),i._connectHandler=null),i.emit("connect",i.publicKey)},i._webDisconnected=function(){i._connectHandler&&(i._connectHandler.reject(),i._connectHandler=null),i._disconnected(),i.emit("disconnect")},i._disconnected=function(){window.removeEventListener("message",i._handleMessage,!1),i._removeElement(),i._clearPreferredAdapter(),i._adapterInstance=null},i._handleMobileMessage=function(e){var t,n;null===(n=null===(t=i._iframe)||void 0===t?void 0:t.contentWindow)||void 0===n||n.postMessage({channel:"solflareMobileToIframe",data:e},"*")},(null==n?void 0:n.network)&&(i._network=null==n?void 0:n.network),(null==n?void 0:n.provider)&&(i._provider=null==n?void 0:n.provider),i}return v(t,e),Object.defineProperty(t.prototype,"publicKey",{get:function(){var e;return(null===(e=this._adapterInstance)||void 0===e?void 0:e.publicKey)||null},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"isConnected",{get:function(){var e;return!!(null===(e=this._adapterInstance)||void 0===e?void 0:e.connected)},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"connected",{get:function(){return this.isConnected},enumerable:!1,configurable:!0}),Object.defineProperty(t.prototype,"autoApprove",{get:function(){return!1},enumerable:!1,configurable:!0}),t.prototype.connect=function(){return S(this,void 0,void 0,(function(){var e=this;return M(this,(function(t){switch(t.label){case 0:return this.connected?[2]:(this._injectElement(),[4,new Promise((function(t,n){e._connectHandler={resolve:t,reject:n}}))]);case 1:return t.sent(),[2]}}))}))},t.prototype.disconnect=function(){return S(this,void 0,void 0,(function(){return M(this,(function(e){switch(e.label){case 0:return this._adapterInstance?[4,this._adapterInstance.disconnect()]:[2];case 1:return e.sent(),this._disconnected(),this.emit("disconnect"),[2]}}))}))},t.prototype.signTransaction=function(e){return S(this,void 0,void 0,(function(){var t,n,i,r,o=this;return M(this,(function(A){switch(A.label){case 0:if(!this.connected)throw new Error("Wallet not connected");return t=b(e)?e.serializeMessage():e.message.serialize(),[4,this._adapterInstance.signTransaction(t)];case 1:return n=A.sent(),b(e)?e.addSignature(this.publicKey,k.from(n)):(i=e.message.staticAccountKeys.slice(0,e.message.header.numRequiredSignatures),(r=i.findIndex((function(e){return e.equals(o.publicKey)})))>=0&&(e.signatures[r]=n)),[2,e]}}))}))},t.prototype.signAllTransactions=function(e){return S(this,void 0,void 0,(function(){var t,n,i,r,o,A,s=this;return M(this,(function(a){switch(a.label){case 0:if(!this.connected)throw new Error("Wallet not connected");return t=e.map((function(e){return b(e)?e.serializeMessage():e.message.serialize()})),[4,this._adapterInstance.signAllTransactions(t)];case 1:for(n=a.sent(),i=0;i=0&&(r.signatures[A]=n[i]));return[2,e]}}))}))},t.prototype.signMessage=function(e,t){return void 0===t&&(t="utf8"),S(this,void 0,void 0,(function(){return M(this,(function(n){switch(n.label){case 0:if(!this.connected)throw new Error("Wallet not connected");return[4,this._adapterInstance.signMessage(e,t)];case 1:return[2,n.sent()]}}))}))},t.prototype.sign=function(e,t){return void 0===t&&(t="utf8"),S(this,void 0,void 0,(function(){return M(this,(function(n){switch(n.label){case 0:return[4,this.signMessage(e,t)];case 1:return[2,n.sent()]}}))}))},t.prototype.detectWallet=function(e){var t;return void 0===e&&(e=10),S(this,void 0,void 0,(function(){return M(this,(function(n){return window.SolflareApp||(null===(t=window.solflare)||void 0===t?void 0:t.isSolflare)?[2,!0]:[2,new Promise((function(t){var n,i;n=setInterval((function(){var e;(window.SolflareApp||(null===(e=window.solflare)||void 0===e?void 0:e.isSolflare))&&(clearInterval(n),clearTimeout(i),t(!0))}),500),i=setTimeout((function(){clearInterval(n),t(!1)}),1e3*e)}))]}))}))},t.IFRAME_URL="https://connect.solflare.com/",t}(o())},25321:(e,t)=>{"use strict";function n(){return n=Object.assign||function(e){for(var t=1;t{"use strict";function n(e){return e&&e.__esModule?e:{default:e}}Object.defineProperty(t,"Z",{enumerable:!0,get:function(){return n}})},6687:(e,t)=>{"use strict";function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,i=new WeakMap;return(n=function(e){return e?i:t})(e)}function i(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var i=n(t);if(i&&i.has(e))return i.get(e);var r={},o=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var A in e)if("default"!==A&&Object.prototype.hasOwnProperty.call(e,A)){var s=o?Object.getOwnPropertyDescriptor(e,A):null;s&&(s.get||s.set)?Object.defineProperty(r,A,s):r[A]=e[A]}return r.default=e,i&&i.set(e,r),r}Object.defineProperty(t,"Z",{enumerable:!0,get:function(){return i}})},6239:(e,t)=>{"use strict";function n(e,t){if(null==e)return{};var n,i,r={},o=Object.keys(e);for(i=0;i=0||(r[n]=e[n]);return r}Object.defineProperty(t,"Z",{enumerable:!0,get:function(){return n}})},90018:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(390),r=n(88409);class o extends i.Subscribable{constructor(){super(),this.setup=e=>{if(!r.isServer&&window.addEventListener){const t=()=>e();return window.addEventListener("visibilitychange",t,!1),window.addEventListener("focus",t,!1),()=>{window.removeEventListener("visibilitychange",t),window.removeEventListener("focus",t)}}}}onSubscribe(){this.cleanup||this.setEventListener(this.setup)}onUnsubscribe(){var e;this.hasListeners()||(null==(e=this.cleanup)||e.call(this),this.cleanup=void 0)}setEventListener(e){var t;this.setup=e,null==(t=this.cleanup)||t.call(this),this.cleanup=e((e=>{"boolean"==typeof e?this.setFocused(e):this.onFocus()}))}setFocused(e){this.focused=e,e&&this.onFocus()}onFocus(){this.listeners.forEach((({listener:e})=>{e()}))}isFocused(){return"boolean"==typeof this.focused?this.focused:"undefined"==typeof document||[void 0,"visible","prerender"].includes(document.visibilityState)}}const A=new o;t.FocusManager=o,t.focusManager=A},60311:(e,t)=>{"use strict";function n(e){return e.state.isPaused}function i(e){return"success"===e.state.status}Object.defineProperty(t,"__esModule",{value:!0}),t.defaultShouldDehydrateMutation=n,t.defaultShouldDehydrateQuery=i,t.dehydrate=function(e,t={}){const r=[],o=[];if(!1!==t.dehydrateMutations){const i=t.shouldDehydrateMutation||n;e.getMutationCache().getAll().forEach((e=>{i(e)&&r.push(function(e){return{mutationKey:e.options.mutationKey,state:e.state}}(e))}))}if(!1!==t.dehydrateQueries){const n=t.shouldDehydrateQuery||i;e.getQueryCache().getAll().forEach((e=>{n(e)&&o.push(function(e){return{state:e.state,queryKey:e.queryKey,queryHash:e.queryHash}}(e))}))}return{mutations:r,queries:o}},t.hydrate=function(e,t,n){if("object"!=typeof t||null===t)return;const i=e.getMutationCache(),r=e.getQueryCache(),o=t.mutations||[],A=t.queries||[];o.forEach((t=>{var r;i.build(e,{...null==n||null==(r=n.defaultOptions)?void 0:r.mutations,mutationKey:t.mutationKey},t.state)})),A.forEach((t=>{var i;const o=r.get(t.queryHash),A={...t.state,fetchStatus:"idle"};o?o.state.dataUpdatedAt{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(69359),r=n(58222),o=n(5366),A=n(54287),s=n(88858),a=n(57840),c=n(81044),u=n(80696),l=n(42975),g=n(90018),d=n(71389),h=n(88409),p=n(60311);t.CancelledError=i.CancelledError,t.isCancelledError=i.isCancelledError,t.QueryCache=r.QueryCache,t.QueryClient=o.QueryClient,t.QueryObserver=A.QueryObserver,t.QueriesObserver=s.QueriesObserver,t.InfiniteQueryObserver=a.InfiniteQueryObserver,t.MutationCache=c.MutationCache,t.MutationObserver=u.MutationObserver,t.notifyManager=l.notifyManager,t.focusManager=g.focusManager,t.onlineManager=d.onlineManager,t.hashQueryKey=h.hashQueryKey,t.isError=h.isError,t.isServer=h.isServer,t.matchQuery=h.matchQuery,t.parseFilterArgs=h.parseFilterArgs,t.parseMutationArgs=h.parseMutationArgs,t.parseMutationFilterArgs=h.parseMutationFilterArgs,t.parseQueryArgs=h.parseQueryArgs,t.replaceEqualDeep=h.replaceEqualDeep,t.defaultShouldDehydrateMutation=p.defaultShouldDehydrateMutation,t.defaultShouldDehydrateQuery=p.defaultShouldDehydrateQuery,t.dehydrate=p.dehydrate,t.hydrate=p.hydrate},51179:(e,t)=>{"use strict";function n(e,t){return null==e.getNextPageParam?void 0:e.getNextPageParam(t[t.length-1],t)}function i(e,t){return null==e.getPreviousPageParam?void 0:e.getPreviousPageParam(t[0],t)}Object.defineProperty(t,"__esModule",{value:!0}),t.getNextPageParam=n,t.getPreviousPageParam=i,t.hasNextPage=function(e,t){if(e.getNextPageParam&&Array.isArray(t)){const i=n(e,t);return null!=i&&!1!==i}},t.hasPreviousPage=function(e,t){if(e.getPreviousPageParam&&Array.isArray(t)){const n=i(e,t);return null!=n&&!1!==n}},t.infiniteQueryBehavior=function(){return{onFetch:e=>{e.fetchFn=()=>{var t,r,o,A,s,a;const c=null==(t=e.fetchOptions)||null==(r=t.meta)?void 0:r.refetchPage,u=null==(o=e.fetchOptions)||null==(A=o.meta)?void 0:A.fetchMore,l=null==u?void 0:u.pageParam,g="forward"===(null==u?void 0:u.direction),d="backward"===(null==u?void 0:u.direction),h=(null==(s=e.state.data)?void 0:s.pages)||[],p=(null==(a=e.state.data)?void 0:a.pageParams)||[];let f=p,m=!1;const I=e.options.queryFn||(()=>Promise.reject("Missing queryFn")),y=(e,t,n,i)=>(f=i?[t,...f]:[...f,t],i?[n,...e]:[...e,n]),B=(t,n,i,r)=>{if(m)return Promise.reject("Cancelled");if(void 0===i&&!n&&t.length)return Promise.resolve(t);const o={queryKey:e.queryKey,pageParam:i,meta:e.options.meta};var A;A=o,Object.defineProperty(A,"signal",{enumerable:!0,get:()=>{var t,n;return null!=(t=e.signal)&&t.aborted?m=!0:null==(n=e.signal)||n.addEventListener("abort",(()=>{m=!0})),e.signal}});const s=I(o);return Promise.resolve(s).then((e=>y(t,i,e,r)))};let C;if(h.length)if(g){const t=void 0!==l,i=t?l:n(e.options,h);C=B(h,t,i)}else if(d){const t=void 0!==l,n=t?l:i(e.options,h);C=B(h,t,n,!0)}else{f=[];const t=void 0===e.options.getNextPageParam;C=c&&h[0]&&!c(h[0],0,h)?Promise.resolve(y([],p[0],h[0])):B([],t,p[0]);for(let i=1;i{if(!c||!h[i]||c(h[i],i,h)){const o=t?p[i]:n(e.options,r);return B(r,t,o)}return Promise.resolve(y(r,p[i],h[i]))}))}else C=B([]);return C.then((e=>({pages:e,pageParams:f})))}}}}},57840:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(54287),r=n(51179);class o extends i.QueryObserver{constructor(e,t){super(e,t)}bindMethods(){super.bindMethods(),this.fetchNextPage=this.fetchNextPage.bind(this),this.fetchPreviousPage=this.fetchPreviousPage.bind(this)}setOptions(e,t){super.setOptions({...e,behavior:r.infiniteQueryBehavior()},t)}getOptimisticResult(e){return e.behavior=r.infiniteQueryBehavior(),super.getOptimisticResult(e)}fetchNextPage({pageParam:e,...t}={}){return this.fetch({...t,meta:{fetchMore:{direction:"forward",pageParam:e}}})}fetchPreviousPage({pageParam:e,...t}={}){return this.fetch({...t,meta:{fetchMore:{direction:"backward",pageParam:e}}})}createResult(e,t){var n,i,o,A,s,a;const{state:c}=e,u=super.createResult(e,t),{isFetching:l,isRefetching:g}=u,d=l&&"forward"===(null==(n=c.fetchMeta)||null==(i=n.fetchMore)?void 0:i.direction),h=l&&"backward"===(null==(o=c.fetchMeta)||null==(A=o.fetchMore)?void 0:A.direction);return{...u,fetchNextPage:this.fetchNextPage,fetchPreviousPage:this.fetchPreviousPage,hasNextPage:r.hasNextPage(t,null==(s=c.data)?void 0:s.pages),hasPreviousPage:r.hasPreviousPage(t,null==(a=c.data)?void 0:a.pages),isFetchingNextPage:d,isFetchingPreviousPage:h,isRefetching:g&&!d&&!h}}}t.InfiniteQueryObserver=o},67220:(e,t,n)=>{"use strict";var i=n(49500);Object.defineProperty(t,"__esModule",{value:!0});const r=i;t.defaultLogger=r},42705:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(67220),r=n(42975),o=n(87959),A=n(69359);class s extends o.Removable{constructor(e){super(),this.defaultOptions=e.defaultOptions,this.mutationId=e.mutationId,this.mutationCache=e.mutationCache,this.logger=e.logger||i.defaultLogger,this.observers=[],this.state=e.state||{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0},this.setOptions(e.options),this.scheduleGc()}setOptions(e){this.options={...this.defaultOptions,...e},this.updateCacheTime(this.options.cacheTime)}get meta(){return this.options.meta}setState(e){this.dispatch({type:"setState",state:e})}addObserver(e){-1===this.observers.indexOf(e)&&(this.observers.push(e),this.clearGcTimeout(),this.mutationCache.notify({type:"observerAdded",mutation:this,observer:e}))}removeObserver(e){this.observers=this.observers.filter((t=>t!==e)),this.scheduleGc(),this.mutationCache.notify({type:"observerRemoved",mutation:this,observer:e})}optionalRemove(){this.observers.length||("loading"===this.state.status?this.scheduleGc():this.mutationCache.remove(this))}continue(){var e,t;return null!=(e=null==(t=this.retryer)?void 0:t.continue())?e:this.execute()}async execute(){const e=()=>{var e;return this.retryer=A.createRetryer({fn:()=>this.options.mutationFn?this.options.mutationFn(this.state.variables):Promise.reject("No mutationFn found"),onFail:(e,t)=>{this.dispatch({type:"failed",failureCount:e,error:t})},onPause:()=>{this.dispatch({type:"pause"})},onContinue:()=>{this.dispatch({type:"continue"})},retry:null!=(e=this.options.retry)?e:0,retryDelay:this.options.retryDelay,networkMode:this.options.networkMode}),this.retryer.promise},t="loading"===this.state.status;try{var n,i,r,o,s,a,c,u;if(!t){var l,g,d,h;this.dispatch({type:"loading",variables:this.options.variables}),await(null==(l=(g=this.mutationCache.config).onMutate)?void 0:l.call(g,this.state.variables,this));const e=await(null==(d=(h=this.options).onMutate)?void 0:d.call(h,this.state.variables));e!==this.state.context&&this.dispatch({type:"loading",context:e,variables:this.state.variables})}const A=await e();return await(null==(n=(i=this.mutationCache.config).onSuccess)?void 0:n.call(i,A,this.state.variables,this.state.context,this)),await(null==(r=(o=this.options).onSuccess)?void 0:r.call(o,A,this.state.variables,this.state.context)),await(null==(s=(a=this.mutationCache.config).onSettled)?void 0:s.call(a,A,null,this.state.variables,this.state.context,this)),await(null==(c=(u=this.options).onSettled)?void 0:c.call(u,A,null,this.state.variables,this.state.context)),this.dispatch({type:"success",data:A}),A}catch(e){try{var p,f,m,I,y,B,C,w;throw await(null==(p=(f=this.mutationCache.config).onError)?void 0:p.call(f,e,this.state.variables,this.state.context,this)),await(null==(m=(I=this.options).onError)?void 0:m.call(I,e,this.state.variables,this.state.context)),await(null==(y=(B=this.mutationCache.config).onSettled)?void 0:y.call(B,void 0,e,this.state.variables,this.state.context,this)),await(null==(C=(w=this.options).onSettled)?void 0:C.call(w,void 0,e,this.state.variables,this.state.context)),e}finally{this.dispatch({type:"error",error:e})}}}dispatch(e){this.state=(t=>{switch(e.type){case"failed":return{...t,failureCount:e.failureCount,failureReason:e.error};case"pause":return{...t,isPaused:!0};case"continue":return{...t,isPaused:!1};case"loading":return{...t,context:e.context,data:void 0,failureCount:0,failureReason:null,error:null,isPaused:!A.canFetch(this.options.networkMode),status:"loading",variables:e.variables};case"success":return{...t,data:e.data,failureCount:0,failureReason:null,error:null,status:"success",isPaused:!1};case"error":return{...t,data:void 0,error:e.error,failureCount:t.failureCount+1,failureReason:e.error,isPaused:!1,status:"error"};case"setState":return{...t,...e.state}}})(this.state),r.notifyManager.batch((()=>{this.observers.forEach((t=>{t.onMutationUpdate(e)})),this.mutationCache.notify({mutation:this,type:"updated",action:e})}))}}function a(){return{context:void 0,data:void 0,error:null,failureCount:0,failureReason:null,isPaused:!1,status:"idle",variables:void 0}}t.Mutation=s,t.getDefaultState=a},81044:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(42975),r=n(42705),o=n(88409),A=n(390);class s extends A.Subscribable{constructor(e){super(),this.config=e||{},this.mutations=[],this.mutationId=0}build(e,t,n){const i=new r.Mutation({mutationCache:this,logger:e.getLogger(),mutationId:++this.mutationId,options:e.defaultMutationOptions(t),state:n,defaultOptions:t.mutationKey?e.getMutationDefaults(t.mutationKey):void 0});return this.add(i),i}add(e){this.mutations.push(e),this.notify({type:"added",mutation:e})}remove(e){this.mutations=this.mutations.filter((t=>t!==e)),this.notify({type:"removed",mutation:e})}clear(){i.notifyManager.batch((()=>{this.mutations.forEach((e=>{this.remove(e)}))}))}getAll(){return this.mutations}find(e){return void 0===e.exact&&(e.exact=!0),this.mutations.find((t=>o.matchMutation(e,t)))}findAll(e){return this.mutations.filter((t=>o.matchMutation(e,t)))}notify(e){i.notifyManager.batch((()=>{this.listeners.forEach((({listener:t})=>{t(e)}))}))}resumePausedMutations(){var e;return this.resuming=(null!=(e=this.resuming)?e:Promise.resolve()).then((()=>{const e=this.mutations.filter((e=>e.state.isPaused));return i.notifyManager.batch((()=>e.reduce(((e,t)=>e.then((()=>t.continue().catch(o.noop)))),Promise.resolve())))})).then((()=>{this.resuming=void 0})),this.resuming}}t.MutationCache=s},80696:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(42705),r=n(42975),o=n(390),A=n(88409);class s extends o.Subscribable{constructor(e,t){super(),this.client=e,this.setOptions(t),this.bindMethods(),this.updateResult()}bindMethods(){this.mutate=this.mutate.bind(this),this.reset=this.reset.bind(this)}setOptions(e){var t;const n=this.options;this.options=this.client.defaultMutationOptions(e),A.shallowEqualObjects(n,this.options)||this.client.getMutationCache().notify({type:"observerOptionsUpdated",mutation:this.currentMutation,observer:this}),null==(t=this.currentMutation)||t.setOptions(this.options)}onUnsubscribe(){var e;this.hasListeners()||null==(e=this.currentMutation)||e.removeObserver(this)}onMutationUpdate(e){this.updateResult();const t={listeners:!0};"success"===e.type?t.onSuccess=!0:"error"===e.type&&(t.onError=!0),this.notify(t)}getCurrentResult(){return this.currentResult}reset(){this.currentMutation=void 0,this.updateResult(),this.notify({listeners:!0})}mutate(e,t){return this.mutateOptions=t,this.currentMutation&&this.currentMutation.removeObserver(this),this.currentMutation=this.client.getMutationCache().build(this.client,{...this.options,variables:void 0!==e?e:this.options.variables}),this.currentMutation.addObserver(this),this.currentMutation.execute()}updateResult(){const e=this.currentMutation?this.currentMutation.state:i.getDefaultState(),t={...e,isLoading:"loading"===e.status,isSuccess:"success"===e.status,isError:"error"===e.status,isIdle:"idle"===e.status,mutate:this.mutate,reset:this.reset};this.currentResult=t}notify(e){r.notifyManager.batch((()=>{var t,n,i,r;if(this.mutateOptions&&this.hasListeners())if(e.onSuccess)null==(t=(n=this.mutateOptions).onSuccess)||t.call(n,this.currentResult.data,this.currentResult.variables,this.currentResult.context),null==(i=(r=this.mutateOptions).onSettled)||i.call(r,this.currentResult.data,null,this.currentResult.variables,this.currentResult.context);else if(e.onError){var o,A,s,a;null==(o=(A=this.mutateOptions).onError)||o.call(A,this.currentResult.error,this.currentResult.variables,this.currentResult.context),null==(s=(a=this.mutateOptions).onSettled)||s.call(a,void 0,this.currentResult.error,this.currentResult.variables,this.currentResult.context)}e.listeners&&this.listeners.forEach((({listener:e})=>{e(this.currentResult)}))}))}}t.MutationObserver=s},42975:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(88409);function r(){let e=[],t=0,n=e=>{e()},r=e=>{e()};const o=r=>{t?e.push(r):i.scheduleMicrotask((()=>{n(r)}))};return{batch:o=>{let A;t++;try{A=o()}finally{t--,t||(()=>{const t=e;e=[],t.length&&i.scheduleMicrotask((()=>{r((()=>{t.forEach((e=>{n(e)}))}))}))})()}return A},batchCalls:e=>(...t)=>{o((()=>{e(...t)}))},schedule:o,setNotifyFunction:e=>{n=e},setBatchNotifyFunction:e=>{r=e}}}const o=r();t.createNotifyManager=r,t.notifyManager=o},71389:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(390),r=n(88409);class o extends i.Subscribable{constructor(){super(),this.setup=e=>{if(!r.isServer&&window.addEventListener){const t=()=>e();return window.addEventListener("online",t,!1),window.addEventListener("offline",t,!1),()=>{window.removeEventListener("online",t),window.removeEventListener("offline",t)}}}}onSubscribe(){this.cleanup||this.setEventListener(this.setup)}onUnsubscribe(){var e;this.hasListeners()||(null==(e=this.cleanup)||e.call(this),this.cleanup=void 0)}setEventListener(e){var t;this.setup=e,null==(t=this.cleanup)||t.call(this),this.cleanup=e((e=>{"boolean"==typeof e?this.setOnline(e):this.onOnline()}))}setOnline(e){this.online=e,e&&this.onOnline()}onOnline(){this.listeners.forEach((({listener:e})=>{e()}))}isOnline(){return"boolean"==typeof this.online?this.online:"undefined"==typeof navigator||void 0===navigator.onLine||navigator.onLine}}const A=new o;t.OnlineManager=o,t.onlineManager=A},88858:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(88409),r=n(42975),o=n(54287),A=n(390);class s extends A.Subscribable{constructor(e,t){super(),this.client=e,this.queries=[],this.result=[],this.observers=[],this.observersMap={},t&&this.setQueries(t)}onSubscribe(){1===this.listeners.size&&this.observers.forEach((e=>{e.subscribe((t=>{this.onUpdate(e,t)}))}))}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.observers.forEach((e=>{e.destroy()}))}setQueries(e,t){this.queries=e,r.notifyManager.batch((()=>{const e=this.observers,n=this.findMatchingObservers(this.queries);n.forEach((e=>e.observer.setOptions(e.defaultedQueryOptions,t)));const r=n.map((e=>e.observer)),o=Object.fromEntries(r.map((e=>[e.options.queryHash,e]))),A=r.map((e=>e.getCurrentResult())),s=r.some(((t,n)=>t!==e[n]));(e.length!==r.length||s)&&(this.observers=r,this.observersMap=o,this.result=A,this.hasListeners()&&(i.difference(e,r).forEach((e=>{e.destroy()})),i.difference(r,e).forEach((e=>{e.subscribe((t=>{this.onUpdate(e,t)}))})),this.notify()))}))}getCurrentResult(){return this.result}getQueries(){return this.observers.map((e=>e.getCurrentQuery()))}getObservers(){return this.observers}getOptimisticResult(e){return this.findMatchingObservers(e).map((e=>e.observer.getOptimisticResult(e.defaultedQueryOptions)))}findMatchingObservers(e){const t=this.observers,n=new Map(t.map((e=>[e.options.queryHash,e]))),i=e.map((e=>this.client.defaultQueryOptions(e))),r=i.flatMap((e=>{const t=n.get(e.queryHash);return null!=t?[{defaultedQueryOptions:e,observer:t}]:[]})),A=new Set(r.map((e=>e.defaultedQueryOptions.queryHash))),s=i.filter((e=>!A.has(e.queryHash))),a=new Set(r.map((e=>e.observer))),c=t.filter((e=>!a.has(e))),u=e=>{const t=this.client.defaultQueryOptions(e),n=this.observersMap[t.queryHash];return null!=n?n:new o.QueryObserver(this.client,t)},l=s.map(((e,t)=>{if(e.keepPreviousData){const n=c[t];if(void 0!==n)return{defaultedQueryOptions:e,observer:n}}return{defaultedQueryOptions:e,observer:u(e)}}));return r.concat(l).sort(((e,t)=>i.indexOf(e.defaultedQueryOptions)-i.indexOf(t.defaultedQueryOptions)))}onUpdate(e,t){const n=this.observers.indexOf(e);-1!==n&&(this.result=i.replaceAt(this.result,n,t),this.notify())}notify(){r.notifyManager.batch((()=>{this.listeners.forEach((({listener:e})=>{e(this.result)}))}))}}t.QueriesObserver=s},3345:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(88409),r=n(67220),o=n(42975),A=n(69359),s=n(87959);class a extends s.Removable{constructor(e){super(),this.abortSignalConsumed=!1,this.defaultOptions=e.defaultOptions,this.setOptions(e.options),this.observers=[],this.cache=e.cache,this.logger=e.logger||r.defaultLogger,this.queryKey=e.queryKey,this.queryHash=e.queryHash,this.initialState=e.state||function(e){const t="function"==typeof e.initialData?e.initialData():e.initialData,n=void 0!==t,i=n?"function"==typeof e.initialDataUpdatedAt?e.initialDataUpdatedAt():e.initialDataUpdatedAt:0;return{data:t,dataUpdateCount:0,dataUpdatedAt:n?null!=i?i:Date.now():0,error:null,errorUpdateCount:0,errorUpdatedAt:0,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null,isInvalidated:!1,status:n?"success":"loading",fetchStatus:"idle"}}(this.options),this.state=this.initialState,this.scheduleGc()}get meta(){return this.options.meta}setOptions(e){this.options={...this.defaultOptions,...e},this.updateCacheTime(this.options.cacheTime)}optionalRemove(){this.observers.length||"idle"!==this.state.fetchStatus||this.cache.remove(this)}setData(e,t){const n=i.replaceData(this.state.data,e,this.options);return this.dispatch({data:n,type:"success",dataUpdatedAt:null==t?void 0:t.updatedAt,manual:null==t?void 0:t.manual}),n}setState(e,t){this.dispatch({type:"setState",state:e,setStateOptions:t})}cancel(e){var t;const n=this.promise;return null==(t=this.retryer)||t.cancel(e),n?n.then(i.noop).catch(i.noop):Promise.resolve()}destroy(){super.destroy(),this.cancel({silent:!0})}reset(){this.destroy(),this.setState(this.initialState)}isActive(){return this.observers.some((e=>!1!==e.options.enabled))}isDisabled(){return this.getObserversCount()>0&&!this.isActive()}isStale(){return this.state.isInvalidated||!this.state.dataUpdatedAt||this.observers.some((e=>e.getCurrentResult().isStale))}isStaleByTime(e=0){return this.state.isInvalidated||!this.state.dataUpdatedAt||!i.timeUntilStale(this.state.dataUpdatedAt,e)}onFocus(){var e;const t=this.observers.find((e=>e.shouldFetchOnWindowFocus()));t&&t.refetch({cancelRefetch:!1}),null==(e=this.retryer)||e.continue()}onOnline(){var e;const t=this.observers.find((e=>e.shouldFetchOnReconnect()));t&&t.refetch({cancelRefetch:!1}),null==(e=this.retryer)||e.continue()}addObserver(e){-1===this.observers.indexOf(e)&&(this.observers.push(e),this.clearGcTimeout(),this.cache.notify({type:"observerAdded",query:this,observer:e}))}removeObserver(e){-1!==this.observers.indexOf(e)&&(this.observers=this.observers.filter((t=>t!==e)),this.observers.length||(this.retryer&&(this.abortSignalConsumed?this.retryer.cancel({revert:!0}):this.retryer.cancelRetry()),this.scheduleGc()),this.cache.notify({type:"observerRemoved",query:this,observer:e}))}getObserversCount(){return this.observers.length}invalidate(){this.state.isInvalidated||this.dispatch({type:"invalidate"})}fetch(e,t){var n,r;if("idle"!==this.state.fetchStatus)if(this.state.dataUpdatedAt&&null!=t&&t.cancelRefetch)this.cancel({silent:!0});else if(this.promise){var o;return null==(o=this.retryer)||o.continueRetry(),this.promise}if(e&&this.setOptions(e),!this.options.queryFn){const e=this.observers.find((e=>e.options.queryFn));e&&this.setOptions(e.options)}Array.isArray(this.options.queryKey);const s=i.getAbortController(),a={queryKey:this.queryKey,pageParam:void 0,meta:this.meta},c=e=>{Object.defineProperty(e,"signal",{enumerable:!0,get:()=>{if(s)return this.abortSignalConsumed=!0,s.signal}})};c(a);const u={fetchOptions:t,options:this.options,queryKey:this.queryKey,state:this.state,fetchFn:()=>this.options.queryFn?(this.abortSignalConsumed=!1,this.options.queryFn(a)):Promise.reject("Missing queryFn")};var l;c(u),null==(n=this.options.behavior)||n.onFetch(u),this.revertState=this.state,("idle"===this.state.fetchStatus||this.state.fetchMeta!==(null==(r=u.fetchOptions)?void 0:r.meta))&&this.dispatch({type:"fetch",meta:null==(l=u.fetchOptions)?void 0:l.meta});const g=e=>{var t,n,i,r;A.isCancelledError(e)&&e.silent||this.dispatch({type:"error",error:e}),A.isCancelledError(e)||(null==(t=(n=this.cache.config).onError)||t.call(n,e,this),null==(i=(r=this.cache.config).onSettled)||i.call(r,this.state.data,e,this)),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1};return this.retryer=A.createRetryer({fn:u.fetchFn,abort:null==s?void 0:s.abort.bind(s),onSuccess:e=>{var t,n,i,r;void 0!==e?(this.setData(e),null==(t=(n=this.cache.config).onSuccess)||t.call(n,e,this),null==(i=(r=this.cache.config).onSettled)||i.call(r,e,this.state.error,this),this.isFetchingOptimistic||this.scheduleGc(),this.isFetchingOptimistic=!1):g(new Error(this.queryHash+" data is undefined"))},onError:g,onFail:(e,t)=>{this.dispatch({type:"failed",failureCount:e,error:t})},onPause:()=>{this.dispatch({type:"pause"})},onContinue:()=>{this.dispatch({type:"continue"})},retry:u.options.retry,retryDelay:u.options.retryDelay,networkMode:u.options.networkMode}),this.promise=this.retryer.promise,this.promise}dispatch(e){this.state=(t=>{var n,i;switch(e.type){case"failed":return{...t,fetchFailureCount:e.failureCount,fetchFailureReason:e.error};case"pause":return{...t,fetchStatus:"paused"};case"continue":return{...t,fetchStatus:"fetching"};case"fetch":return{...t,fetchFailureCount:0,fetchFailureReason:null,fetchMeta:null!=(n=e.meta)?n:null,fetchStatus:A.canFetch(this.options.networkMode)?"fetching":"paused",...!t.dataUpdatedAt&&{error:null,status:"loading"}};case"success":return{...t,data:e.data,dataUpdateCount:t.dataUpdateCount+1,dataUpdatedAt:null!=(i=e.dataUpdatedAt)?i:Date.now(),error:null,isInvalidated:!1,status:"success",...!e.manual&&{fetchStatus:"idle",fetchFailureCount:0,fetchFailureReason:null}};case"error":const r=e.error;return A.isCancelledError(r)&&r.revert&&this.revertState?{...this.revertState}:{...t,error:r,errorUpdateCount:t.errorUpdateCount+1,errorUpdatedAt:Date.now(),fetchFailureCount:t.fetchFailureCount+1,fetchFailureReason:r,fetchStatus:"idle",status:"error"};case"invalidate":return{...t,isInvalidated:!0};case"setState":return{...t,...e.state}}})(this.state),o.notifyManager.batch((()=>{this.observers.forEach((t=>{t.onQueryUpdate(e)})),this.cache.notify({query:this,type:"updated",action:e})}))}}t.Query=a},58222:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(88409),r=n(3345),o=n(42975),A=n(390);class s extends A.Subscribable{constructor(e){super(),this.config=e||{},this.queries=[],this.queriesMap={}}build(e,t,n){var o;const A=t.queryKey,s=null!=(o=t.queryHash)?o:i.hashQueryKeyByOptions(A,t);let a=this.get(s);return a||(a=new r.Query({cache:this,logger:e.getLogger(),queryKey:A,queryHash:s,options:e.defaultQueryOptions(t),state:n,defaultOptions:e.getQueryDefaults(A)}),this.add(a)),a}add(e){this.queriesMap[e.queryHash]||(this.queriesMap[e.queryHash]=e,this.queries.push(e),this.notify({type:"added",query:e}))}remove(e){const t=this.queriesMap[e.queryHash];t&&(e.destroy(),this.queries=this.queries.filter((t=>t!==e)),t===e&&delete this.queriesMap[e.queryHash],this.notify({type:"removed",query:e}))}clear(){o.notifyManager.batch((()=>{this.queries.forEach((e=>{this.remove(e)}))}))}get(e){return this.queriesMap[e]}getAll(){return this.queries}find(e,t){const[n]=i.parseFilterArgs(e,t);return void 0===n.exact&&(n.exact=!0),this.queries.find((e=>i.matchQuery(n,e)))}findAll(e,t){const[n]=i.parseFilterArgs(e,t);return Object.keys(n).length>0?this.queries.filter((e=>i.matchQuery(n,e))):this.queries}notify(e){o.notifyManager.batch((()=>{this.listeners.forEach((({listener:t})=>{t(e)}))}))}onFocus(){o.notifyManager.batch((()=>{this.queries.forEach((e=>{e.onFocus()}))}))}onOnline(){o.notifyManager.batch((()=>{this.queries.forEach((e=>{e.onOnline()}))}))}}t.QueryCache=s},5366:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(88409),r=n(58222),o=n(81044),A=n(90018),s=n(71389),a=n(42975),c=n(51179),u=n(67220);t.QueryClient=class{constructor(e={}){this.queryCache=e.queryCache||new r.QueryCache,this.mutationCache=e.mutationCache||new o.MutationCache,this.logger=e.logger||u.defaultLogger,this.defaultOptions=e.defaultOptions||{},this.queryDefaults=[],this.mutationDefaults=[],this.mountCount=0}mount(){this.mountCount++,1===this.mountCount&&(this.unsubscribeFocus=A.focusManager.subscribe((()=>{A.focusManager.isFocused()&&(this.resumePausedMutations(),this.queryCache.onFocus())})),this.unsubscribeOnline=s.onlineManager.subscribe((()=>{s.onlineManager.isOnline()&&(this.resumePausedMutations(),this.queryCache.onOnline())})))}unmount(){var e,t;this.mountCount--,0===this.mountCount&&(null==(e=this.unsubscribeFocus)||e.call(this),this.unsubscribeFocus=void 0,null==(t=this.unsubscribeOnline)||t.call(this),this.unsubscribeOnline=void 0)}isFetching(e,t){const[n]=i.parseFilterArgs(e,t);return n.fetchStatus="fetching",this.queryCache.findAll(n).length}isMutating(e){return this.mutationCache.findAll({...e,fetching:!0}).length}getQueryData(e,t){var n;return null==(n=this.queryCache.find(e,t))?void 0:n.state.data}ensureQueryData(e,t,n){const r=i.parseQueryArgs(e,t,n),o=this.getQueryData(r.queryKey);return o?Promise.resolve(o):this.fetchQuery(r)}getQueriesData(e){return this.getQueryCache().findAll(e).map((({queryKey:e,state:t})=>[e,t.data]))}setQueryData(e,t,n){const r=this.queryCache.find(e),o=null==r?void 0:r.state.data,A=i.functionalUpdate(t,o);if(void 0===A)return;const s=i.parseQueryArgs(e),a=this.defaultQueryOptions(s);return this.queryCache.build(this,a).setData(A,{...n,manual:!0})}setQueriesData(e,t,n){return a.notifyManager.batch((()=>this.getQueryCache().findAll(e).map((({queryKey:e})=>[e,this.setQueryData(e,t,n)]))))}getQueryState(e,t){var n;return null==(n=this.queryCache.find(e,t))?void 0:n.state}removeQueries(e,t){const[n]=i.parseFilterArgs(e,t),r=this.queryCache;a.notifyManager.batch((()=>{r.findAll(n).forEach((e=>{r.remove(e)}))}))}resetQueries(e,t,n){const[r,o]=i.parseFilterArgs(e,t,n),A=this.queryCache,s={type:"active",...r};return a.notifyManager.batch((()=>(A.findAll(r).forEach((e=>{e.reset()})),this.refetchQueries(s,o))))}cancelQueries(e,t,n){const[r,o={}]=i.parseFilterArgs(e,t,n);void 0===o.revert&&(o.revert=!0);const A=a.notifyManager.batch((()=>this.queryCache.findAll(r).map((e=>e.cancel(o)))));return Promise.all(A).then(i.noop).catch(i.noop)}invalidateQueries(e,t,n){const[r,o]=i.parseFilterArgs(e,t,n);return a.notifyManager.batch((()=>{var e,t;if(this.queryCache.findAll(r).forEach((e=>{e.invalidate()})),"none"===r.refetchType)return Promise.resolve();const n={...r,type:null!=(e=null!=(t=r.refetchType)?t:r.type)?e:"active"};return this.refetchQueries(n,o)}))}refetchQueries(e,t,n){const[r,o]=i.parseFilterArgs(e,t,n),A=a.notifyManager.batch((()=>this.queryCache.findAll(r).filter((e=>!e.isDisabled())).map((e=>{var t;return e.fetch(void 0,{...o,cancelRefetch:null==(t=null==o?void 0:o.cancelRefetch)||t,meta:{refetchPage:r.refetchPage}})}))));let s=Promise.all(A).then(i.noop);return null!=o&&o.throwOnError||(s=s.catch(i.noop)),s}fetchQuery(e,t,n){const r=i.parseQueryArgs(e,t,n),o=this.defaultQueryOptions(r);void 0===o.retry&&(o.retry=!1);const A=this.queryCache.build(this,o);return A.isStaleByTime(o.staleTime)?A.fetch(o):Promise.resolve(A.state.data)}prefetchQuery(e,t,n){return this.fetchQuery(e,t,n).then(i.noop).catch(i.noop)}fetchInfiniteQuery(e,t,n){const r=i.parseQueryArgs(e,t,n);return r.behavior=c.infiniteQueryBehavior(),this.fetchQuery(r)}prefetchInfiniteQuery(e,t,n){return this.fetchInfiniteQuery(e,t,n).then(i.noop).catch(i.noop)}resumePausedMutations(){return this.mutationCache.resumePausedMutations()}getQueryCache(){return this.queryCache}getMutationCache(){return this.mutationCache}getLogger(){return this.logger}getDefaultOptions(){return this.defaultOptions}setDefaultOptions(e){this.defaultOptions=e}setQueryDefaults(e,t){const n=this.queryDefaults.find((t=>i.hashQueryKey(e)===i.hashQueryKey(t.queryKey)));n?n.defaultOptions=t:this.queryDefaults.push({queryKey:e,defaultOptions:t})}getQueryDefaults(e){if(!e)return;const t=this.queryDefaults.find((t=>i.partialMatchKey(e,t.queryKey)));return null==t?void 0:t.defaultOptions}setMutationDefaults(e,t){const n=this.mutationDefaults.find((t=>i.hashQueryKey(e)===i.hashQueryKey(t.mutationKey)));n?n.defaultOptions=t:this.mutationDefaults.push({mutationKey:e,defaultOptions:t})}getMutationDefaults(e){if(!e)return;const t=this.mutationDefaults.find((t=>i.partialMatchKey(e,t.mutationKey)));return null==t?void 0:t.defaultOptions}defaultQueryOptions(e){if(null!=e&&e._defaulted)return e;const t={...this.defaultOptions.queries,...this.getQueryDefaults(null==e?void 0:e.queryKey),...e,_defaulted:!0};return!t.queryHash&&t.queryKey&&(t.queryHash=i.hashQueryKeyByOptions(t.queryKey,t)),void 0===t.refetchOnReconnect&&(t.refetchOnReconnect="always"!==t.networkMode),void 0===t.useErrorBoundary&&(t.useErrorBoundary=!!t.suspense),t}defaultMutationOptions(e){return null!=e&&e._defaulted?e:{...this.defaultOptions.mutations,...this.getMutationDefaults(null==e?void 0:e.mutationKey),...e,_defaulted:!0}}clear(){this.queryCache.clear(),this.mutationCache.clear()}}},54287:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(88409),r=n(42975),o=n(90018),A=n(390),s=n(69359);class a extends A.Subscribable{constructor(e,t){super(),this.client=e,this.options=t,this.trackedProps=new Set,this.selectError=null,this.bindMethods(),this.setOptions(t)}bindMethods(){this.remove=this.remove.bind(this),this.refetch=this.refetch.bind(this)}onSubscribe(){1===this.listeners.size&&(this.currentQuery.addObserver(this),c(this.currentQuery,this.options)&&this.executeFetch(),this.updateTimers())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return u(this.currentQuery,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return u(this.currentQuery,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.clearStaleTimeout(),this.clearRefetchInterval(),this.currentQuery.removeObserver(this)}setOptions(e,t){const n=this.options,r=this.currentQuery;if(this.options=this.client.defaultQueryOptions(e),i.shallowEqualObjects(n,this.options)||this.client.getQueryCache().notify({type:"observerOptionsUpdated",query:this.currentQuery,observer:this}),void 0!==this.options.enabled&&"boolean"!=typeof this.options.enabled)throw new Error("Expected enabled to be a boolean");this.options.queryKey||(this.options.queryKey=n.queryKey),this.updateQuery();const o=this.hasListeners();o&&l(this.currentQuery,r,this.options,n)&&this.executeFetch(),this.updateResult(t),!o||this.currentQuery===r&&this.options.enabled===n.enabled&&this.options.staleTime===n.staleTime||this.updateStaleTimeout();const A=this.computeRefetchInterval();!o||this.currentQuery===r&&this.options.enabled===n.enabled&&A===this.currentRefetchInterval||this.updateRefetchInterval(A)}getOptimisticResult(e){const t=this.client.getQueryCache().build(this.client,e);return this.createResult(t,e)}getCurrentResult(){return this.currentResult}trackResult(e){const t={};return Object.keys(e).forEach((n=>{Object.defineProperty(t,n,{configurable:!1,enumerable:!0,get:()=>(this.trackedProps.add(n),e[n])})})),t}getCurrentQuery(){return this.currentQuery}remove(){this.client.getQueryCache().remove(this.currentQuery)}refetch({refetchPage:e,...t}={}){return this.fetch({...t,meta:{refetchPage:e}})}fetchOptimistic(e){const t=this.client.defaultQueryOptions(e),n=this.client.getQueryCache().build(this.client,t);return n.isFetchingOptimistic=!0,n.fetch().then((()=>this.createResult(n,t)))}fetch(e){var t;return this.executeFetch({...e,cancelRefetch:null==(t=e.cancelRefetch)||t}).then((()=>(this.updateResult(),this.currentResult)))}executeFetch(e){this.updateQuery();let t=this.currentQuery.fetch(this.options,e);return null!=e&&e.throwOnError||(t=t.catch(i.noop)),t}updateStaleTimeout(){if(this.clearStaleTimeout(),i.isServer||this.currentResult.isStale||!i.isValidTimeout(this.options.staleTime))return;const e=i.timeUntilStale(this.currentResult.dataUpdatedAt,this.options.staleTime)+1;this.staleTimeoutId=setTimeout((()=>{this.currentResult.isStale||this.updateResult()}),e)}computeRefetchInterval(){var e;return"function"==typeof this.options.refetchInterval?this.options.refetchInterval(this.currentResult.data,this.currentQuery):null!=(e=this.options.refetchInterval)&&e}updateRefetchInterval(e){this.clearRefetchInterval(),this.currentRefetchInterval=e,!i.isServer&&!1!==this.options.enabled&&i.isValidTimeout(this.currentRefetchInterval)&&0!==this.currentRefetchInterval&&(this.refetchIntervalId=setInterval((()=>{(this.options.refetchIntervalInBackground||o.focusManager.isFocused())&&this.executeFetch()}),this.currentRefetchInterval))}updateTimers(){this.updateStaleTimeout(),this.updateRefetchInterval(this.computeRefetchInterval())}clearStaleTimeout(){this.staleTimeoutId&&(clearTimeout(this.staleTimeoutId),this.staleTimeoutId=void 0)}clearRefetchInterval(){this.refetchIntervalId&&(clearInterval(this.refetchIntervalId),this.refetchIntervalId=void 0)}createResult(e,t){const n=this.currentQuery,r=this.options,o=this.currentResult,A=this.currentResultState,a=this.currentResultOptions,u=e!==n,d=u?e.state:this.currentQueryInitialState,h=u?this.currentResult:this.previousQueryResult,{state:p}=e;let f,{dataUpdatedAt:m,error:I,errorUpdatedAt:y,fetchStatus:B,status:C}=p,w=!1,E=!1;if(t._optimisticResults){const i=this.hasListeners(),o=!i&&c(e,t),A=i&&l(e,n,t,r);(o||A)&&(B=s.canFetch(e.options.networkMode)?"fetching":"paused",m||(C="loading")),"isRestoring"===t._optimisticResults&&(B="idle")}if(t.keepPreviousData&&!p.dataUpdatedAt&&null!=h&&h.isSuccess&&"error"!==C)f=h.data,m=h.dataUpdatedAt,C=h.status,w=!0;else if(t.select&&void 0!==p.data)if(o&&p.data===(null==A?void 0:A.data)&&t.select===this.selectFn)f=this.selectResult;else try{this.selectFn=t.select,f=t.select(p.data),f=i.replaceData(null==o?void 0:o.data,f,t),this.selectResult=f,this.selectError=null}catch(e){this.selectError=e}else f=p.data;if(void 0!==t.placeholderData&&void 0===f&&"loading"===C){let e;if(null!=o&&o.isPlaceholderData&&t.placeholderData===(null==a?void 0:a.placeholderData))e=o.data;else if(e="function"==typeof t.placeholderData?t.placeholderData():t.placeholderData,t.select&&void 0!==e)try{e=t.select(e),this.selectError=null}catch(e){this.selectError=e}void 0!==e&&(C="success",f=i.replaceData(null==o?void 0:o.data,e,t),E=!0)}this.selectError&&(I=this.selectError,f=this.selectResult,y=Date.now(),C="error");const Q="fetching"===B,b="loading"===C,k="error"===C;return{status:C,fetchStatus:B,isLoading:b,isSuccess:"success"===C,isError:k,isInitialLoading:b&&Q,data:f,dataUpdatedAt:m,error:I,errorUpdatedAt:y,failureCount:p.fetchFailureCount,failureReason:p.fetchFailureReason,errorUpdateCount:p.errorUpdateCount,isFetched:p.dataUpdateCount>0||p.errorUpdateCount>0,isFetchedAfterMount:p.dataUpdateCount>d.dataUpdateCount||p.errorUpdateCount>d.errorUpdateCount,isFetching:Q,isRefetching:Q&&!b,isLoadingError:k&&0===p.dataUpdatedAt,isPaused:"paused"===B,isPlaceholderData:E,isPreviousData:w,isRefetchError:k&&0!==p.dataUpdatedAt,isStale:g(e,t),refetch:this.refetch,remove:this.remove}}updateResult(e){const t=this.currentResult,n=this.createResult(this.currentQuery,this.options);if(this.currentResultState=this.currentQuery.state,this.currentResultOptions=this.options,i.shallowEqualObjects(n,t))return;this.currentResult=n;const r={cache:!0};!1!==(null==e?void 0:e.listeners)&&(()=>{if(!t)return!0;const{notifyOnChangeProps:e}=this.options;if("all"===e||!e&&!this.trackedProps.size)return!0;const n=new Set(null!=e?e:this.trackedProps);return this.options.useErrorBoundary&&n.add("error"),Object.keys(this.currentResult).some((e=>{const i=e;return this.currentResult[i]!==t[i]&&n.has(i)}))})()&&(r.listeners=!0),this.notify({...r,...e})}updateQuery(){const e=this.client.getQueryCache().build(this.client,this.options);if(e===this.currentQuery)return;const t=this.currentQuery;this.currentQuery=e,this.currentQueryInitialState=e.state,this.previousQueryResult=this.currentResult,this.hasListeners()&&(null==t||t.removeObserver(this),e.addObserver(this))}onQueryUpdate(e){const t={};"success"===e.type?t.onSuccess=!e.manual:"error"!==e.type||s.isCancelledError(e.error)||(t.onError=!0),this.updateResult(t),this.hasListeners()&&this.updateTimers()}notify(e){r.notifyManager.batch((()=>{var t,n,i,r;if(e.onSuccess)null==(t=(n=this.options).onSuccess)||t.call(n,this.currentResult.data),null==(i=(r=this.options).onSettled)||i.call(r,this.currentResult.data,null);else if(e.onError){var o,A,s,a;null==(o=(A=this.options).onError)||o.call(A,this.currentResult.error),null==(s=(a=this.options).onSettled)||s.call(a,void 0,this.currentResult.error)}e.listeners&&this.listeners.forEach((({listener:e})=>{e(this.currentResult)})),e.cache&&this.client.getQueryCache().notify({query:this.currentQuery,type:"observerResultsUpdated"})}))}}function c(e,t){return function(e,t){return!(!1===t.enabled||e.state.dataUpdatedAt||"error"===e.state.status&&!1===t.retryOnMount)}(e,t)||e.state.dataUpdatedAt>0&&u(e,t,t.refetchOnMount)}function u(e,t,n){if(!1!==t.enabled){const i="function"==typeof n?n(e):n;return"always"===i||!1!==i&&g(e,t)}return!1}function l(e,t,n,i){return!1!==n.enabled&&(e!==t||!1===i.enabled)&&(!n.suspense||"error"!==e.state.status)&&g(e,n)}function g(e,t){return e.isStaleByTime(t.staleTime)}t.QueryObserver=a},87959:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(88409);t.Removable=class{destroy(){this.clearGcTimeout()}scheduleGc(){this.clearGcTimeout(),i.isValidTimeout(this.cacheTime)&&(this.gcTimeout=setTimeout((()=>{this.optionalRemove()}),this.cacheTime))}updateCacheTime(e){this.cacheTime=Math.max(this.cacheTime||0,null!=e?e:i.isServer?1/0:3e5)}clearGcTimeout(){this.gcTimeout&&(clearTimeout(this.gcTimeout),this.gcTimeout=void 0)}}},69359:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(90018),r=n(71389),o=n(88409);function A(e){return Math.min(1e3*2**e,3e4)}function s(e){return"online"!==(null!=e?e:"online")||r.onlineManager.isOnline()}class a{constructor(e){this.revert=null==e?void 0:e.revert,this.silent=null==e?void 0:e.silent}}t.CancelledError=a,t.canFetch=s,t.createRetryer=function(e){let t,n,c,u=!1,l=0,g=!1;const d=new Promise(((e,t)=>{n=e,c=t})),h=()=>!i.focusManager.isFocused()||"always"!==e.networkMode&&!r.onlineManager.isOnline(),p=i=>{g||(g=!0,null==e.onSuccess||e.onSuccess(i),null==t||t(),n(i))},f=n=>{g||(g=!0,null==e.onError||e.onError(n),null==t||t(),c(n))},m=()=>new Promise((n=>{t=e=>{const t=g||!h();return t&&n(e),t},null==e.onPause||e.onPause()})).then((()=>{t=void 0,g||null==e.onContinue||e.onContinue()})),I=()=>{if(g)return;let t;try{t=e.fn()}catch(e){t=Promise.reject(e)}Promise.resolve(t).then(p).catch((t=>{var n,i;if(g)return;const r=null!=(n=e.retry)?n:3,s=null!=(i=e.retryDelay)?i:A,a="function"==typeof s?s(l,t):s,c=!0===r||"number"==typeof r&&l{if(h())return m()})).then((()=>{u?f(t):I()}))):f(t)}))};return s(e.networkMode)?I():m().then(I),{promise:d,cancel:t=>{g||(f(new a(t)),null==e.abort||e.abort())},continue:()=>(null==t?void 0:t())?d:Promise.resolve(),cancelRetry:()=>{u=!0},continueRetry:()=>{u=!1}}},t.isCancelledError=function(e){return e instanceof a}},390:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Subscribable=class{constructor(){this.listeners=new Set,this.subscribe=this.subscribe.bind(this)}subscribe(e){const t={listener:e};return this.listeners.add(t),this.onSubscribe(),()=>{this.listeners.delete(t),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}onSubscribe(){}onUnsubscribe(){}}},88409:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n="undefined"==typeof window||"Deno"in window;function i(e,t){return((null==t?void 0:t.queryKeyHashFn)||r)(e)}function r(e){return JSON.stringify(e,((e,t)=>c(t)?Object.keys(t).sort().reduce(((e,n)=>(e[n]=t[n],e)),{}):t))}function o(e,t){return A(e,t)}function A(e,t){return e===t||typeof e==typeof t&&!(!e||!t||"object"!=typeof e||"object"!=typeof t)&&!Object.keys(t).some((n=>!A(e[n],t[n])))}function s(e,t){if(e===t)return e;const n=a(e)&&a(t);if(n||c(e)&&c(t)){const i=n?e.length:Object.keys(e).length,r=n?t:Object.keys(t),o=r.length,A=n?[]:{};let a=0;for(let i=0;i{setTimeout(t,e)}))}t.difference=function(e,t){return e.filter((e=>-1===t.indexOf(e)))},t.functionalUpdate=function(e,t){return"function"==typeof e?e(t):e},t.getAbortController=function(){if("function"==typeof AbortController)return new AbortController},t.hashQueryKey=r,t.hashQueryKeyByOptions=i,t.isError=function(e){return e instanceof Error},t.isPlainArray=a,t.isPlainObject=c,t.isQueryKey=l,t.isServer=n,t.isValidTimeout=function(e){return"number"==typeof e&&e>=0&&e!==1/0},t.matchMutation=function(e,t){const{exact:n,fetching:i,predicate:A,mutationKey:s}=e;if(l(s)){if(!t.options.mutationKey)return!1;if(n){if(r(t.options.mutationKey)!==r(s))return!1}else if(!o(t.options.mutationKey,s))return!1}return!("boolean"==typeof i&&"loading"===t.state.status!==i||A&&!A(t))},t.matchQuery=function(e,t){const{type:n="all",exact:r,fetchStatus:A,predicate:s,queryKey:a,stale:c}=e;if(l(a))if(r){if(t.queryHash!==i(a,t.options))return!1}else if(!o(t.queryKey,a))return!1;if("all"!==n){const e=t.isActive();if("active"===n&&!e)return!1;if("inactive"===n&&e)return!1}return!("boolean"==typeof c&&t.isStale()!==c||void 0!==A&&A!==t.state.fetchStatus||s&&!s(t))},t.noop=function(){},t.parseFilterArgs=function(e,t,n){return l(e)?[{...t,queryKey:e},n]:[e||{},t]},t.parseMutationArgs=function(e,t,n){return l(e)?"function"==typeof t?{...n,mutationKey:e,mutationFn:t}:{...t,mutationKey:e}:"function"==typeof e?{...t,mutationFn:e}:{...e}},t.parseMutationFilterArgs=function(e,t,n){return l(e)?[{...t,mutationKey:e},n]:[e||{},t]},t.parseQueryArgs=function(e,t,n){return l(e)?"function"==typeof t?{...n,queryKey:e,queryFn:t}:{...t,queryKey:e}:e},t.partialDeepEqual=A,t.partialMatchKey=o,t.replaceAt=function(e,t,n){const i=e.slice(0);return i[t]=n,i},t.replaceData=function(e,t,n){return null!=n.isDataEqual&&n.isDataEqual(e,t)?e:"function"==typeof n.structuralSharing?n.structuralSharing(e,t):!1!==n.structuralSharing?s(e,t):t},t.replaceEqualDeep=s,t.scheduleMicrotask=function(e){g(0).then(e)},t.shallowEqualObjects=function(e,t){if(e&&!t||t&&!e)return!1;for(const n in e)if(e[n]!==t[n])return!1;return!0},t.sleep=g,t.timeUntilStale=function(e,t){return Math.max(e+(t||0)-Date.now(),0)}},71501:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(50959),r=n(12408),o=n(83207);function A(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var s=A(i);function a(e,t={}){const n=o.useQueryClient({context:t.context}),i=s.useRef(t);i.current=t,s.useMemo((()=>{e&&r.hydrate(n,e,i.current)}),[n,e])}t.Hydrate=({children:e,options:t,state:n})=>(a(n,t),e),t.useHydrate=a},83207:(e,t,n)=>{"use strict";function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(50959));const o=r.createContext(void 0),A=r.createContext(!1);function s(e,t){return e||(t&&"undefined"!=typeof window?(window.ReactQueryClientContext||(window.ReactQueryClientContext=o),window.ReactQueryClientContext):o)}t.QueryClientProvider=({client:e,children:t,context:n,contextSharing:i=!1})=>{r.useEffect((()=>(e.mount(),()=>{e.unmount()})),[e]);const o=s(n,i);return r.createElement(A.Provider,{value:!n&&i},r.createElement(o.Provider,{value:e},t))},t.defaultContext=o,t.useQueryClient=({context:e}={})=>{const t=r.useContext(s(e,r.useContext(A)));if(!t)throw new Error("No QueryClient set, use QueryClientProvider to set one");return t}},15890:(e,t,n)=>{"use strict";function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(50959));function o(){let e=!1;return{clearReset:()=>{e=!1},reset:()=>{e=!0},isReset:()=>e}}const A=r.createContext(o());t.QueryErrorResetBoundary=({children:e})=>{const[t]=r.useState((()=>o()));return r.createElement(A.Provider,{value:t},"function"==typeof e?e(t):e)},t.useQueryErrorResetBoundary=()=>r.useContext(A)},48590:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(50959),r=n(35013);function o(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var A=o(i);t.ensurePreventErrorBoundaryRetry=(e,t)=>{(e.suspense||e.useErrorBoundary)&&(t.isReset()||(e.retryOnMount=!1))},t.getHasError=({result:e,errorResetBoundary:t,useErrorBoundary:n,query:i})=>e.isError&&!t.isReset()&&!e.isFetching&&r.shouldThrowError(n,[e.error,i]),t.useClearResetErrorBoundary=e=>{A.useEffect((()=>{e.clearReset()}),[e])}},74830:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),n(9042);var i=n(12408),r=n(51958),o=n(21601),A=n(83207),s=n(71501),a=n(15890),c=n(22573),u=n(52291),l=n(70840),g=n(28646),d=n(78990);t.useQueries=r.useQueries,t.useQuery=o.useQuery,t.QueryClientProvider=A.QueryClientProvider,t.defaultContext=A.defaultContext,t.useQueryClient=A.useQueryClient,t.Hydrate=s.Hydrate,t.useHydrate=s.useHydrate,t.QueryErrorResetBoundary=a.QueryErrorResetBoundary,t.useQueryErrorResetBoundary=a.useQueryErrorResetBoundary,t.useIsFetching=c.useIsFetching,t.useIsMutating=u.useIsMutating,t.useMutation=l.useMutation,t.useInfiniteQuery=g.useInfiniteQuery,t.IsRestoringProvider=d.IsRestoringProvider,t.useIsRestoring=d.useIsRestoring,Object.keys(i).forEach((function(e){"default"===e||t.hasOwnProperty(e)||Object.defineProperty(t,e,{enumerable:!0,get:function(){return i[e]}})}))},78990:(e,t,n)=>{"use strict";function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}Object.defineProperty(t,"__esModule",{value:!0});var r=i(n(50959));const o=r.createContext(!1),A=o.Provider;t.IsRestoringProvider=A,t.useIsRestoring=()=>r.useContext(o)},28816:(e,t,n)=>{"use strict";function i(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}Object.defineProperty(t,"__esModule",{value:!0});const r=i(n(10422)).unstable_batchedUpdates;t.unstable_batchedUpdates=r},9042:(e,t,n)=>{"use strict";var i=n(12408),r=n(28816);i.notifyManager.setBatchNotifyFunction(r.unstable_batchedUpdates)},20338:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const n=(e,t)=>e.isLoading&&e.isFetching&&!t;t.ensureStaleTime=e=>{e.suspense&&"number"!=typeof e.staleTime&&(e.staleTime=1e3)},t.fetchOptimistic=(e,t,n)=>t.fetchOptimistic(e).then((({data:t})=>{null==e.onSuccess||e.onSuccess(t),null==e.onSettled||e.onSettled(t,null)})).catch((t=>{n.clearReset(),null==e.onError||e.onError(t),null==e.onSettled||e.onSettled(void 0,t)})),t.shouldSuspend=(e,t,i)=>(null==e?void 0:e.suspense)&&n(t,i),t.willFetch=n},60718:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(50959),r=n(22650),o=n(12408),A=n(15890),s=n(83207),a=n(78990),c=n(48590),u=n(20338);function l(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var g=l(i);t.useBaseQuery=function(e,t){const n=s.useQueryClient({context:e.context}),i=a.useIsRestoring(),l=A.useQueryErrorResetBoundary(),d=n.defaultQueryOptions(e);d._optimisticResults=i?"isRestoring":"optimistic",d.onError&&(d.onError=o.notifyManager.batchCalls(d.onError)),d.onSuccess&&(d.onSuccess=o.notifyManager.batchCalls(d.onSuccess)),d.onSettled&&(d.onSettled=o.notifyManager.batchCalls(d.onSettled)),u.ensureStaleTime(d),c.ensurePreventErrorBoundaryRetry(d,l),c.useClearResetErrorBoundary(l);const[h]=g.useState((()=>new t(n,d))),p=h.getOptimisticResult(d);if(r.useSyncExternalStore(g.useCallback((e=>i?()=>{}:h.subscribe(o.notifyManager.batchCalls(e))),[h,i]),(()=>h.getCurrentResult()),(()=>h.getCurrentResult())),g.useEffect((()=>{h.setOptions(d,{listeners:!1})}),[d,h]),u.shouldSuspend(d,p,i))throw u.fetchOptimistic(d,h,l);if(c.getHasError({result:p,errorResetBoundary:l,useErrorBoundary:d.useErrorBoundary,query:h.getCurrentQuery()}))throw p.error;return d.notifyOnChangeProps?p:h.trackResult(p)}},28646:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(12408),r=n(60718);t.useInfiniteQuery=function(e,t,n){const o=i.parseQueryArgs(e,t,n);return r.useBaseQuery(o,i.InfiniteQueryObserver)}},22573:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(50959),r=n(12408),o=n(22650),A=n(83207);function s(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var a=s(i);t.useIsFetching=function(e,t,n){const[i,s={}]=r.parseFilterArgs(e,t,n),c=A.useQueryClient({context:s.context}),u=c.getQueryCache();return o.useSyncExternalStore(a.useCallback((e=>u.subscribe(r.notifyManager.batchCalls(e))),[u]),(()=>c.isFetching(i)),(()=>c.isFetching(i)))}},52291:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(50959),r=n(22650),o=n(12408),A=n(83207);function s(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var a=s(i);t.useIsMutating=function(e,t,n){const[i,s={}]=o.parseMutationFilterArgs(e,t,n),c=A.useQueryClient({context:s.context}),u=c.getMutationCache();return r.useSyncExternalStore(a.useCallback((e=>u.subscribe(o.notifyManager.batchCalls(e))),[u]),(()=>c.isMutating(i)),(()=>c.isMutating(i)))}},70840:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(50959),r=n(22650),o=n(12408),A=n(83207),s=n(35013);function a(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var c=a(i);function u(){}t.useMutation=function(e,t,n){const i=o.parseMutationArgs(e,t,n),a=A.useQueryClient({context:i.context}),[l]=c.useState((()=>new o.MutationObserver(a,i)));c.useEffect((()=>{l.setOptions(i)}),[l,i]);const g=r.useSyncExternalStore(c.useCallback((e=>l.subscribe(o.notifyManager.batchCalls(e))),[l]),(()=>l.getCurrentResult()),(()=>l.getCurrentResult())),d=c.useCallback(((e,t)=>{l.mutate(e,t).catch(u)}),[l]);if(g.error&&s.shouldThrowError(l.options.useErrorBoundary,[g.error]))throw g.error;return{...g,mutate:d,mutateAsync:g.mutate}}},51958:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(50959),r=n(22650),o=n(12408),A=n(83207),s=n(78990),a=n(15890),c=n(48590),u=n(20338);function l(e){if(e&&e.__esModule)return e;var t=Object.create(null);return e&&Object.keys(e).forEach((function(n){if("default"!==n){var i=Object.getOwnPropertyDescriptor(e,n);Object.defineProperty(t,n,i.get?i:{enumerable:!0,get:function(){return e[n]}})}})),t.default=e,Object.freeze(t)}var g=l(i);t.useQueries=function({queries:e,context:t}){const n=A.useQueryClient({context:t}),i=s.useIsRestoring(),l=a.useQueryErrorResetBoundary(),d=g.useMemo((()=>e.map((e=>{const t=n.defaultQueryOptions(e);return t._optimisticResults=i?"isRestoring":"optimistic",t}))),[e,n,i]);d.forEach((e=>{u.ensureStaleTime(e),c.ensurePreventErrorBoundaryRetry(e,l)})),c.useClearResetErrorBoundary(l);const[h]=g.useState((()=>new o.QueriesObserver(n,d))),p=h.getOptimisticResult(d);r.useSyncExternalStore(g.useCallback((e=>i?()=>{}:h.subscribe(o.notifyManager.batchCalls(e))),[h,i]),(()=>h.getCurrentResult()),(()=>h.getCurrentResult())),g.useEffect((()=>{h.setQueries(d,{listeners:!1})}),[d,h]);const f=p.some(((e,t)=>u.shouldSuspend(d[t],e,i)))?p.flatMap(((e,t)=>{const n=d[t],r=h.getObservers()[t];if(n&&r){if(u.shouldSuspend(n,e,i))return u.fetchOptimistic(n,r,l);u.willFetch(e,i)&&u.fetchOptimistic(n,r,l)}return[]})):[];if(f.length>0)throw Promise.all(f);const m=h.getQueries(),I=p.find(((e,t)=>{var n,i;return c.getHasError({result:e,errorResetBoundary:l,useErrorBoundary:null!=(n=null==(i=d[t])?void 0:i.useErrorBoundary)&&n,query:m[t]})}));if(null!=I&&I.error)throw I.error;return p}},21601:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(12408),r=n(60718);t.useQuery=function(e,t,n){const o=i.parseQueryArgs(e,t,n);return r.useBaseQuery(o,i.QueryObserver)}},22650:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(4322).useSyncExternalStore;t.useSyncExternalStore=i},35013:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.shouldThrowError=function(e,t){return"function"==typeof e?e(...t):!!e}},18560:e=>{"use strict";var t={white:37,black:30,blue:34,cyan:36,green:32,magenta:35,red:31,yellow:33,brightBlack:90,brightRed:91,brightGreen:92,brightYellow:93,brightBlue:94,brightMagenta:95,brightCyan:96,brightWhite:97},n={bgBlack:40,bgRed:41,bgGreen:42,bgYellow:43,bgBlue:44,bgMagenta:45,bgCyan:46,bgWhite:47,bgBrightBlack:100,bgBrightRed:101,bgBrightGreen:102,bgBrightYellow:103,bgBrightBlue:104,bgBrightMagenta:105,bgBrightCyan:106,bgBrightWhite:107},i={},r={},o={};Object.keys(t).forEach((function(e){var n=i[e]="["+t[e]+"m",A=r[e]="";o[e]=function(e){return n+e+A}})),Object.keys(n).forEach((function(e){var t=i[e]="["+n[e]+"m",A=r[e]="";o[e]=function(e){return t+e+A}})),e.exports=o,o.open=i,o.close=r},85529:(e,t,n)=>{"use strict";var i=n(61874).Buffer;e.exports=function(e){if(e.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n>>0,u=new Uint8Array(A);e[n];){var l=t[e.charCodeAt(n)];if(255===l)return;for(var g=0,d=A-1;(0!==l||g>>0,u[d]=l%256>>>0,l=l/256>>>0;if(0!==l)throw new Error("Non-zero carry");o=g,n++}for(var h=A-o;h!==A&&0===u[h];)h++;var p=i.allocUnsafe(r+(A-h));p.fill(0,0,r);for(var f=r;h!==A;)p[f++]=u[h++];return p}return{encode:function(t){if((Array.isArray(t)||t instanceof Uint8Array)&&(t=i.from(t)),!i.isBuffer(t))throw new TypeError("Expected Buffer");if(0===t.length)return"";for(var n=0,r=0,o=0,A=t.length;o!==A&&0===t[o];)o++,n++;for(var c=(A-o)*u+1>>>0,l=new Uint8Array(c);o!==A;){for(var g=t[o],d=0,h=c-1;(0!==g||d>>0,l[h]=g%s>>>0,g=g/s>>>0;if(0!==g)throw new Error("Non-zero carry");r=d,o++}for(var p=c-r;p!==c&&0===l[p];)p++;for(var f=a.repeat(n);p{"use strict";e.exports=function(e){if(e.length>=255)throw new TypeError("Alphabet too long");for(var t=new Uint8Array(256),n=0;n>>0,c=new Uint8Array(o);e[n];){var u=t[e.charCodeAt(n)];if(255===u)return;for(var l=0,g=o-1;(0!==u||l>>0,c[g]=u%256>>>0,u=u/256>>>0;if(0!==u)throw new Error("Non-zero carry");r=l,n++}for(var d=o-r;d!==o&&0===c[d];)d++;for(var h=new Uint8Array(i+(o-d)),p=i;d!==o;)h[p++]=c[d++];return h}return{encode:function(t){if(t instanceof Uint8Array||(ArrayBuffer.isView(t)?t=new Uint8Array(t.buffer,t.byteOffset,t.byteLength):Array.isArray(t)&&(t=Uint8Array.from(t))),!(t instanceof Uint8Array))throw new TypeError("Expected Uint8Array");if(0===t.length)return"";for(var n=0,i=0,r=0,o=t.length;r!==o&&0===t[r];)r++,n++;for(var a=(o-r)*c+1>>>0,u=new Uint8Array(a);r!==o;){for(var l=t[r],g=0,d=a-1;(0!==l||g>>0,u[d]=l%A>>>0,l=l/A>>>0;if(0!==l)throw new Error("Non-zero carry");i=g,r++}for(var h=a-i;h!==a&&0===u[h];)h++;for(var p=s.repeat(n);h{"use strict";t.byteLength=function(e){var t=a(e),n=t[0],i=t[1];return 3*(n+i)/4-i},t.toByteArray=function(e){var t,n,o=a(e),A=o[0],s=o[1],c=new r(function(e,t,n){return 3*(t+n)/4-n}(0,A,s)),u=0,l=s>0?A-4:A;for(n=0;n>16&255,c[u++]=t>>8&255,c[u++]=255&t;return 2===s&&(t=i[e.charCodeAt(n)]<<2|i[e.charCodeAt(n+1)]>>4,c[u++]=255&t),1===s&&(t=i[e.charCodeAt(n)]<<10|i[e.charCodeAt(n+1)]<<4|i[e.charCodeAt(n+2)]>>2,c[u++]=t>>8&255,c[u++]=255&t),c},t.fromByteArray=function(e){for(var t,i=e.length,r=i%3,o=[],A=16383,s=0,a=i-r;sa?a:s+A));return 1===r?(t=e[i-1],o.push(n[t>>2]+n[t<<4&63]+"==")):2===r&&(t=(e[i-2]<<8)+e[i-1],o.push(n[t>>10]+n[t>>4&63]+n[t<<2&63]+"=")),o.join("")};for(var n=[],i=[],r="undefined"!=typeof Uint8Array?Uint8Array:Array,o="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",A=0,s=o.length;A0)throw new Error("Invalid string. Length must be a multiple of 4");var n=e.indexOf("=");return-1===n&&(n=t),[n,n===t?0:4-n%4]}function c(e,t,i){for(var r,o,A=[],s=t;s>18&63]+n[o>>12&63]+n[o>>6&63]+n[63&o]);return A.join("")}i["-".charCodeAt(0)]=62,i["_".charCodeAt(0)]=63},86061:function(e,t,n){var i;!function(r){"use strict";var o,A=1e6,s="[big.js] ",a=s+"Invalid ",c=a+"decimal places",u=a+"rounding mode",l=s+"Division by zero",g={},d=void 0,h=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function p(e,t,n,i){var r=e.c,o=e.e+t+1;if(o=5;else if(2===n)i=r[o]>5||5==r[o]&&(i||o<0||r[o+1]!==d||1&r[o-1]);else if(3===n)i=i||!!r[0];else if(i=!1,0!==n)throw Error(u);if(o<1)r.length=1,i?(e.e=-t,r[0]=1):r[0]=e.e=0;else{if(r.length=o--,i)for(;++r[o]>9;)r[o]=0,o--||(++e.e,r.unshift(1));for(o=r.length;!r[--o];)r.pop()}}else if(n<0||n>3||n!==~~n)throw Error(u);return e}function f(e,t,n,i){var r,o,s=e.constructor,u=!e.c[0];if(n!==d){if(n!==~~n||n<(3==t)||n>A)throw Error(3==t?a+"precision":c);for(n=i-(e=new s(e)).e,e.c.length>++i&&p(e,n,s.RM),2==t&&(i=e.e+n+1);e.c.length=s.PE))o=o.charAt(0)+(n>1?"."+o.slice(1):"")+(r<0?"e":"e+")+r;else if(r<0){for(;++r;)o="0"+o;o="0."+o}else if(r>0)if(++r>n)for(r-=n;r--;)o+="0";else r1&&(o=o.charAt(0)+"."+o.slice(1));return e.s<0&&(!u||4==t)?"-"+o:o}g.abs=function(){var e=new this.constructor(this);return e.s=1,e},g.cmp=function(e){var t,n=this,i=n.c,r=(e=new n.constructor(e)).c,o=n.s,A=e.s,s=n.e,a=e.e;if(!i[0]||!r[0])return i[0]?o:r[0]?-A:0;if(o!=A)return o;if(t=o<0,s!=a)return s>a^t?1:-1;for(A=(s=i.length)<(a=r.length)?s:a,o=-1;++or[o]^t?1:-1;return s==a?0:s>a^t?1:-1},g.div=function(e){var t=this,n=t.constructor,i=t.c,r=(e=new n(e)).c,o=t.s==e.s?1:-1,s=n.DP;if(s!==~~s||s<0||s>A)throw Error(c);if(!r[0])throw Error(l);if(!i[0])return new n(0*o);var a,u,g,h,f,m=r.slice(),I=a=r.length,y=i.length,B=i.slice(0,a),C=B.length,w=e,E=w.c=[],Q=0,b=s+(w.e=t.e-e.e)+1;for(w.s=o,o=b<0?0:b,m.unshift(0);C++C?1:-1;else for(f=-1,h=0;++fB[f]?1:-1;break}if(!(h<0))break;for(u=C==a?r:m;C;){if(B[--C]b&&p(w,s,n.RM,B[0]!==d),w},g.eq=function(e){return!this.cmp(e)},g.gt=function(e){return this.cmp(e)>0},g.gte=function(e){return this.cmp(e)>-1},g.lt=function(e){return this.cmp(e)<0},g.lte=function(e){return this.cmp(e)<1},g.minus=g.sub=function(e){var t,n,i,r,o=this,A=o.constructor,s=o.s,a=(e=new A(e)).s;if(s!=a)return e.s=-a,o.plus(e);var c=o.c.slice(),u=o.e,l=e.c,g=e.e;if(!c[0]||!l[0])return l[0]?(e.s=-a,e):new A(c[0]?o:0);if(s=u-g){for((r=s<0)?(s=-s,i=c):(g=u,i=l),i.reverse(),a=s;a--;)i.push(0);i.reverse()}else for(n=((r=c.length0)for(;a--;)c[t++]=0;for(a=t;n>s;){if(c[--n]0?(a=A,t=c):(r=-r,t=s),t.reverse();r--;)t.push(0);t.reverse()}for(s.length-c.length<0&&(t=c,c=s,s=t),r=c.length,o=0;r;s[r]%=10)o=(s[--r]=s[r]+c[r]+o)/10|0;for(o&&(s.unshift(o),++a),r=s.length;0===s[--r];)s.pop();return e.c=s,e.e=a,e},g.pow=function(e){var t=this,n=new t.constructor(1),i=n,r=e<0;if(e!==~~e||e<-1e6||e>1e6)throw Error(a+"exponent");for(r&&(e=-e);1&e&&(i=i.times(t)),e>>=1;)t=t.times(t);return r?n.div(i):i},g.round=function(e,t){var n=this.constructor;if(e===d)e=0;else if(e!==~~e||e<-A||e>A)throw Error(c);return p(new n(this),e,t===d?n.RM:t)},g.sqrt=function(){var e,t,n,i=this,r=i.constructor,o=i.s,A=i.e,a=new r(.5);if(!i.c[0])return new r(i);if(o<0)throw Error(s+"No square root");0===(o=Math.sqrt(i+""))||o===1/0?((t=i.c.join("")).length+A&1||(t+="0"),A=((A+1)/2|0)-(A<0||1&A),e=new r(((o=Math.sqrt(t))==1/0?"1e":(o=o.toExponential()).slice(0,o.indexOf("e")+1))+A)):e=new r(o),A=e.e+(r.DP+=4);do{n=e,e=a.times(n.plus(i.div(n)))}while(n.c.slice(0,A).join("")!==e.c.slice(0,A).join(""));return p(e,r.DP-=4,r.RM)},g.times=g.mul=function(e){var t,n=this,i=n.constructor,r=n.c,o=(e=new i(e)).c,A=r.length,s=o.length,a=n.e,c=e.e;if(e.s=n.s==e.s?1:-1,!r[0]||!o[0])return new i(0*e.s);for(e.e=a+c,Aa;)s=t[c]+o[a]*r[c-a-1]+s,t[c--]=s%10,s=s/10|0;t[c]=(t[c]+s)%10}for(s?++e.e:t.shift(),a=t.length;!t[--a];)t.pop();return e.c=t,e},g.toExponential=function(e){return f(this,1,e,e)},g.toFixed=function(e){return f(this,2,e,this.e+e)},g.toPrecision=function(e){return f(this,3,e,e-1)},g.toString=function(){return f(this)},g.valueOf=g.toJSON=function(){return f(this,4)},(o=function e(){function t(n){var i=this;if(!(i instanceof t))return n===d?e():new t(n);n instanceof t?(i.s=n.s,i.e=n.e,i.c=n.c.slice()):function(e,t){var n,i,r;if(0===t&&1/t<0)t="-0";else if(!h.test(t+=""))throw Error(a+"number");for(e.s="-"==t.charAt(0)?(t=t.slice(1),-1):1,(n=t.indexOf("."))>-1&&(t=t.replace(".","")),(i=t.search(/e/i))>0?(n<0&&(n=i),n+=+t.slice(i+1),t=t.substring(0,i)):n<0&&(n=t.length),r=t.length,i=0;i0&&"0"==t.charAt(--r););for(e.e=n-i-1,e.c=[],n=0;i<=r;)e.c[n++]=+t.charAt(i++)}}(i,n),i.constructor=t}return t.prototype=g,t.DP=20,t.RM=1,t.NE=-7,t.PE=21,t.version="5.2.2",t}()).default=o.Big=o,void 0===(i=function(){return o}.call(t,n,t,e))||(e.exports=i)}()},75827:function(e,t,n){var i;!function(r){"use strict";var o,A=1e6,s="[big.js] ",a=s+"Invalid ",c=a+"decimal places",u=s+"Division by zero",l={},g=void 0,d=/^-?(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i;function h(e,t,n,i){var r=e.c;if(n===g&&(n=e.constructor.RM),0!==n&&1!==n&&2!==n&&3!==n)throw Error("[big.js] Invalid rounding mode");if(t<1)i=3===n&&(i||!!r[0])||0===t&&(1===n&&r[0]>=5||2===n&&(r[0]>5||5===r[0]&&(i||r[1]!==g))),r.length=1,i?(e.e=e.e-t+1,r[0]=1):r[0]=e.e=0;else if(t=5||2===n&&(r[t]>5||5===r[t]&&(i||r[t+1]!==g||1&r[t-1]))||3===n&&(i||!!r[0]),r.length=t,i)for(;++r[--t]>9;)if(r[t]=0,0===t){++e.e,r.unshift(1);break}for(t=r.length;!r[--t];)r.pop()}return e}function p(e,t,n){var i=e.e,r=e.c.join(""),o=r.length;if(t)r=r.charAt(0)+(o>1?"."+r.slice(1):"")+(i<0?"e":"e+")+i;else if(i<0){for(;++i;)r="0"+r;r="0."+r}else if(i>0)if(++i>o)for(i-=o;i--;)r+="0";else i1&&(r=r.charAt(0)+"."+r.slice(1));return e.s<0&&n?"-"+r:r}l.abs=function(){var e=new this.constructor(this);return e.s=1,e},l.cmp=function(e){var t,n=this,i=n.c,r=(e=new n.constructor(e)).c,o=n.s,A=e.s,s=n.e,a=e.e;if(!i[0]||!r[0])return i[0]?o:r[0]?-A:0;if(o!=A)return o;if(t=o<0,s!=a)return s>a^t?1:-1;for(A=(s=i.length)<(a=r.length)?s:a,o=-1;++or[o]^t?1:-1;return s==a?0:s>a^t?1:-1},l.div=function(e){var t=this,n=t.constructor,i=t.c,r=(e=new n(e)).c,o=t.s==e.s?1:-1,s=n.DP;if(s!==~~s||s<0||s>A)throw Error(c);if(!r[0])throw Error(u);if(!i[0])return e.s=o,e.c=[e.e=0],e;var a,l,d,p,f,m=r.slice(),I=a=r.length,y=i.length,B=i.slice(0,a),C=B.length,w=e,E=w.c=[],Q=0,b=s+(w.e=t.e-e.e)+1;for(w.s=o,o=b<0?0:b,m.unshift(0);C++C?1:-1;else for(f=-1,p=0;++fB[f]?1:-1;break}if(!(p<0))break;for(l=C==a?r:m;C;){if(B[--C]b&&h(w,b,n.RM,B[0]!==g),w},l.eq=function(e){return 0===this.cmp(e)},l.gt=function(e){return this.cmp(e)>0},l.gte=function(e){return this.cmp(e)>-1},l.lt=function(e){return this.cmp(e)<0},l.lte=function(e){return this.cmp(e)<1},l.minus=l.sub=function(e){var t,n,i,r,o=this,A=o.constructor,s=o.s,a=(e=new A(e)).s;if(s!=a)return e.s=-a,o.plus(e);var c=o.c.slice(),u=o.e,l=e.c,g=e.e;if(!c[0]||!l[0])return l[0]?e.s=-a:c[0]?e=new A(o):e.s=1,e;if(s=u-g){for((r=s<0)?(s=-s,i=c):(g=u,i=l),i.reverse(),a=s;a--;)i.push(0);i.reverse()}else for(n=((r=c.length0)for(;a--;)c[t++]=0;for(a=t;n>s;){if(c[--n]0?(a=A,i=c):(t=-t,i=s),i.reverse();t--;)i.push(0);i.reverse()}for(s.length-c.length<0&&(i=c,c=s,s=i),t=c.length,n=0;t;s[t]%=10)n=(s[--t]=s[t]+c[t]+n)/10|0;for(n&&(s.unshift(n),++a),t=s.length;0===s[--t];)s.pop();return e.c=s,e.e=a,e},l.pow=function(e){var t=this,n=new t.constructor("1"),i=n,r=e<0;if(e!==~~e||e<-1e6||e>1e6)throw Error(a+"exponent");for(r&&(e=-e);1&e&&(i=i.times(t)),e>>=1;)t=t.times(t);return r?n.div(i):i},l.prec=function(e,t){if(e!==~~e||e<1||e>A)throw Error(a+"precision");return h(new this.constructor(this),e,t)},l.round=function(e,t){if(e===g)e=0;else if(e!==~~e||e<-A||e>A)throw Error(c);return h(new this.constructor(this),e+this.e+1,t)},l.sqrt=function(){var e,t,n,i=this,r=i.constructor,o=i.s,A=i.e,a=new r("0.5");if(!i.c[0])return new r(i);if(o<0)throw Error(s+"No square root");0===(o=Math.sqrt(i+""))||o===1/0?((t=i.c.join("")).length+A&1||(t+="0"),A=((A+1)/2|0)-(A<0||1&A),e=new r(((o=Math.sqrt(t))==1/0?"5e":(o=o.toExponential()).slice(0,o.indexOf("e")+1))+A)):e=new r(o+""),A=e.e+(r.DP+=4);do{n=e,e=a.times(n.plus(i.div(n)))}while(n.c.slice(0,A).join("")!==e.c.slice(0,A).join(""));return h(e,(r.DP-=4)+e.e+1,r.RM)},l.times=l.mul=function(e){var t,n=this,i=n.constructor,r=n.c,o=(e=new i(e)).c,A=r.length,s=o.length,a=n.e,c=e.e;if(e.s=n.s==e.s?1:-1,!r[0]||!o[0])return e.c=[e.e=0],e;for(e.e=a+c,Aa;)s=t[c]+o[a]*r[c-a-1]+s,t[c--]=s%10,s=s/10|0;t[c]=s}for(s?++e.e:t.shift(),a=t.length;!t[--a];)t.pop();return e.c=t,e},l.toExponential=function(e,t){var n=this,i=n.c[0];if(e!==g){if(e!==~~e||e<0||e>A)throw Error(c);for(n=h(new n.constructor(n),++e,t);n.c.lengthA)throw Error(c);for(e=e+(n=h(new n.constructor(n),e+n.e+1,t)).e+1;n.c.length=t.PE,!!e.c[0])},l.toNumber=function(){var e=Number(p(this,!0,!0));if(!0===this.constructor.strict&&!this.eq(e.toString()))throw Error(s+"Imprecise conversion");return e},l.toPrecision=function(e,t){var n=this,i=n.constructor,r=n.c[0];if(e!==g){if(e!==~~e||e<1||e>A)throw Error(a+"precision");for(n=h(new i(n),e,t);n.c.length=i.PE,!!r)},l.valueOf=function(){var e=this,t=e.constructor;if(!0===t.strict)throw Error(s+"valueOf disallowed");return p(e,e.e<=t.NE||e.e>=t.PE,!0)},(o=function e(){function t(n){var i=this;if(!(i instanceof t))return n===g?e():new t(n);if(n instanceof t)i.s=n.s,i.e=n.e,i.c=n.c.slice();else{if("string"!=typeof n){if(!0===t.strict&&"bigint"!=typeof n)throw TypeError(a+"value");n=0===n&&1/n<0?"-0":String(n)}!function(e,t){var n,i,r;if(!d.test(t))throw Error(a+"number");for(e.s="-"==t.charAt(0)?(t=t.slice(1),-1):1,(n=t.indexOf("."))>-1&&(t=t.replace(".","")),(i=t.search(/e/i))>0?(n<0&&(n=i),n+=+t.slice(i+1),t=t.substring(0,i)):n<0&&(n=t.length),r=t.length,i=0;i0&&"0"==t.charAt(--r););for(e.e=n-i-1,e.c=[],n=0;i<=r;)e.c[n++]=+t.charAt(i++)}}(i,n)}i.constructor=t}return t.prototype=l,t.DP=20,t.RM=1,t.NE=-7,t.PE=21,t.strict=!1,t.roundDown=0,t.roundHalfUp=1,t.roundHalfEven=2,t.roundUp=3,t}()).default=o.Big=o,void 0===(i=function(){return o}.call(t,n,t,e))||(e.exports=i)}()},53477:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.toBigIntLE=function(e){{const t=i.from(e);t.reverse();const n=t.toString("hex");return 0===n.length?BigInt(0):BigInt(`0x${n}`)}},t.toBigIntBE=function(e){{const t=e.toString("hex");return 0===t.length?BigInt(0):BigInt(`0x${t}`)}},t.toBufferLE=function(e,t){{const n=e.toString(16),r=i.from(n.padStart(2*t,"0").slice(0,2*t),"hex");return r.reverse(),r}},t.toBufferBE=function(e,t){{const n=e.toString(16);return i.from(n.padStart(2*t,"0").slice(0,2*t),"hex")}}},91319:function(e,t,n){var i;!function(r){"use strict";var o,A=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,s=Math.ceil,a=Math.floor,c="[BigNumber Error] ",u=c+"Number primitive has more than 15 significant digits: ",l=1e14,g=14,d=9007199254740991,h=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],p=1e7,f=1e9;function m(e){var t=0|e;return e>0||e===t?t:t-1}function I(e){for(var t,n,i=1,r=e.length,o=e[0]+"";ic^n?1:-1;for(s=(a=r.length)<(c=o.length)?a:c,A=0;Ao[A]^n?1:-1;return a==c?0:a>c^n?1:-1}function B(e,t,n,i){if(en||e!==a(e))throw Error(c+(i||"Argument")+("number"==typeof e?en?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function C(e){var t=e.c.length-1;return m(e.e/g)==t&&e.c[t]%2!=0}function w(e,t){return(e.length>1?e.charAt(0)+"."+e.slice(1):e)+(t<0?"e":"e+")+t}function E(e,t,n){var i,r;if(t<0){for(r=n+".";++t;r+=n);e=r+e}else if(++t>(i=e.length)){for(r=n,t-=i;--t;r+=n);e+=r}else tG?m.c=m.e=null:e.e=10;l/=10,c++);return void(c>G?m.c=m.e=null:(m.e=c,m.c=[e]))}f=String(e)}else{if(!A.test(f=String(e)))return r(m,f,h);m.s=45==f.charCodeAt(0)?(f=f.slice(1),-1):1}(c=f.indexOf("."))>-1&&(f=f.replace(".","")),(l=f.search(/e/i))>0?(c<0&&(c=l),c+=+f.slice(l+1),f=f.substring(0,l)):c<0&&(c=f.length)}else{if(B(t,2,K.length,"Base"),10==t&&Y)return Z(m=new j(e),T+m.e+1,P);if(f=String(e),h="number"==typeof e){if(0*e!=0)return r(m,f,h,t);if(m.s=1/e<0?(f=f.slice(1),-1):1,j.DEBUG&&f.replace(/^0\.0*|\./,"").length>15)throw Error(u+e)}else m.s=45===f.charCodeAt(0)?(f=f.slice(1),-1):1;for(n=K.slice(0,t),c=l=0,p=f.length;lc){c=p;continue}}else if(!s&&(f==f.toUpperCase()&&(f=f.toLowerCase())||f==f.toLowerCase()&&(f=f.toUpperCase()))){s=!0,l=-1,c=0;continue}return r(m,String(e),h,t)}h=!1,(c=(f=i(f,t,10,m.s)).indexOf("."))>-1?f=f.replace(".",""):c=f.length}for(l=0;48===f.charCodeAt(l);l++);for(p=f.length;48===f.charCodeAt(--p););if(f=f.slice(l,++p)){if(p-=l,h&&j.DEBUG&&p>15&&(e>d||e!==a(e)))throw Error(u+m.s*e);if((c=c-l-1)>G)m.c=m.e=null;else if(c=F)?w(a,A):E(a,A,"0");else if(o=(e=Z(new j(e),t,n)).e,s=(a=I(e.c)).length,1==i||2==i&&(t<=o||o<=O)){for(;ss){if(--t>0)for(a+=".";t--;a+="0");}else if((t+=o-s)>0)for(o+1==s&&(a+=".");t--;a+="0");return e.s<0&&r?"-"+a:a}function J(e,t){for(var n,i=1,r=new j(e[0]);i=10;r/=10,i++);return(n=i+n*g-1)>G?e.c=e.e=null:n=10;c/=10,r++);if((o=t-r)<0)o+=g,A=t,p=(u=f[d=0])/m[r-A-1]%10|0;else if((d=s((o+1)/g))>=f.length){if(!i)break e;for(;f.length<=d;f.push(0));u=p=0,r=1,A=(o%=g)-g+1}else{for(u=c=f[d],r=1;c>=10;c/=10,r++);p=(A=(o%=g)-g+r)<0?0:u/m[r-A-1]%10|0}if(i=i||t<0||null!=f[d+1]||(A<0?u:u%m[r-A-1]),i=n<4?(p||i)&&(0==n||n==(e.s<0?3:2)):p>5||5==p&&(4==n||i||6==n&&(o>0?A>0?u/m[r-A]:0:f[d-1])%10&1||n==(e.s<0?8:7)),t<1||!f[0])return f.length=0,i?(t-=e.e+1,f[0]=m[(g-t%g)%g],e.e=-t||0):f[0]=e.e=0,e;if(0==o?(f.length=d,c=1,d--):(f.length=d+1,c=m[g-o],f[d]=A>0?a(u/m[r-A]%m[A])*c:0),i)for(;;){if(0==d){for(o=1,A=f[0];A>=10;A/=10,o++);for(A=f[0]+=c,c=1;A>=10;A/=10,c++);o!=c&&(e.e++,f[0]==l&&(f[0]=1));break}if(f[d]+=c,f[d]!=l)break;f[d--]=0,c=1}for(o=f.length;0===f[--o];f.pop());}e.e>G?e.c=e.e=null:e.e=F?w(t,n):E(t,n,"0"),e.s<0?"-"+t:t)}return j.clone=e,j.ROUND_UP=0,j.ROUND_DOWN=1,j.ROUND_CEIL=2,j.ROUND_FLOOR=3,j.ROUND_HALF_UP=4,j.ROUND_HALF_DOWN=5,j.ROUND_HALF_EVEN=6,j.ROUND_HALF_CEIL=7,j.ROUND_HALF_FLOOR=8,j.EUCLID=9,j.config=j.set=function(e){var t,n;if(null!=e){if("object"!=typeof e)throw Error(c+"Object expected: "+e);if(e.hasOwnProperty(t="DECIMAL_PLACES")&&(B(n=e[t],0,f,t),T=n),e.hasOwnProperty(t="ROUNDING_MODE")&&(B(n=e[t],0,8,t),P=n),e.hasOwnProperty(t="EXPONENTIAL_AT")&&((n=e[t])&&n.pop?(B(n[0],-f,0,t),B(n[1],0,f,t),O=n[0],F=n[1]):(B(n,-f,f,t),O=-(F=n<0?-n:n))),e.hasOwnProperty(t="RANGE"))if((n=e[t])&&n.pop)B(n[0],-f,-1,t),B(n[1],1,f,t),R=n[0],G=n[1];else{if(B(n,-f,f,t),!n)throw Error(c+t+" cannot be zero: "+n);R=-(G=n<0?-n:n)}if(e.hasOwnProperty(t="CRYPTO")){if((n=e[t])!==!!n)throw Error(c+t+" not true or false: "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw x=!n,Error(c+"crypto unavailable");x=n}else x=n}if(e.hasOwnProperty(t="MODULO_MODE")&&(B(n=e[t],0,9,t),U=n),e.hasOwnProperty(t="POW_PRECISION")&&(B(n=e[t],0,f,t),_=n),e.hasOwnProperty(t="FORMAT")){if("object"!=typeof(n=e[t]))throw Error(c+t+" not an object: "+n);L=n}if(e.hasOwnProperty(t="ALPHABET")){if("string"!=typeof(n=e[t])||/^.?$|[+\-.\s]|(.).*\1/.test(n))throw Error(c+t+" invalid: "+n);Y="0123456789"==n.slice(0,10),K=n}}return{DECIMAL_PLACES:T,ROUNDING_MODE:P,EXPONENTIAL_AT:[O,F],RANGE:[R,G],CRYPTO:x,MODULO_MODE:U,POW_PRECISION:_,FORMAT:L,ALPHABET:K}},j.isBigNumber=function(e){if(!e||!0!==e._isBigNumber)return!1;if(!j.DEBUG)return!0;var t,n,i=e.c,r=e.e,o=e.s;e:if("[object Array]"=={}.toString.call(i)){if((1===o||-1===o)&&r>=-f&&r<=f&&r===a(r)){if(0===i[0]){if(0===r&&1===i.length)return!0;break e}if((t=(r+1)%g)<1&&(t+=g),String(i[0]).length==t){for(t=0;t=l||n!==a(n))break e;if(0!==n)return!0}}}else if(null===i&&null===r&&(null===o||1===o||-1===o))return!0;throw Error(c+"Invalid BigNumber: "+e)},j.maximum=j.max=function(){return J(arguments,D.lt)},j.minimum=j.min=function(){return J(arguments,D.gt)},j.random=(o=9007199254740992,Q=Math.random()*o&2097151?function(){return a(Math.random()*o)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var t,n,i,r,o,A=0,u=[],l=new j(N);if(null==e?e=T:B(e,0,f),r=s(e/g),x)if(crypto.getRandomValues){for(t=crypto.getRandomValues(new Uint32Array(r*=2));A>>11))>=9e15?(n=crypto.getRandomValues(new Uint32Array(2)),t[A]=n[0],t[A+1]=n[1]):(u.push(o%1e14),A+=2);A=r/2}else{if(!crypto.randomBytes)throw x=!1,Error(c+"crypto unavailable");for(t=crypto.randomBytes(r*=7);A=9e15?crypto.randomBytes(7).copy(t,A):(u.push(o%1e14),A+=7);A=r/7}if(!x)for(;A=10;o/=10,A++);An-1&&(null==A[r+1]&&(A[r+1]=0),A[r+1]+=A[r]/n|0,A[r]%=n)}return A.reverse()}return function(i,r,o,A,s){var a,c,u,l,g,d,h,p,f=i.indexOf("."),m=T,y=P;for(f>=0&&(l=_,_=0,i=i.replace(".",""),d=(p=new j(r)).pow(i.length-f),_=l,p.c=t(E(I(d.c),d.e,"0"),10,o,e),p.e=p.c.length),u=l=(h=t(i,r,o,s?(a=K,e):(a=e,K))).length;0==h[--l];h.pop());if(!h[0])return a.charAt(0);if(f<0?--u:(d.c=h,d.e=u,d.s=A,h=(d=n(d,p,m,y,o)).c,g=d.r,u=d.e),f=h[c=u+m+1],l=o/2,g=g||c<0||null!=h[c+1],g=y<4?(null!=f||g)&&(0==y||y==(d.s<0?3:2)):f>l||f==l&&(4==y||g||6==y&&1&h[c-1]||y==(d.s<0?8:7)),c<1||!h[0])i=g?E(a.charAt(1),-m,a.charAt(0)):a.charAt(0);else{if(h.length=c,g)for(--o;++h[--c]>o;)h[c]=0,c||(++u,h=[1].concat(h));for(l=h.length;!h[--l];);for(f=0,i="";f<=l;i+=a.charAt(h[f++]));i=E(i,u,a.charAt(0))}return i}}(),n=function(){function e(e,t,n){var i,r,o,A,s=0,a=e.length,c=t%p,u=t/p|0;for(e=e.slice();a--;)s=((r=c*(o=e[a]%p)+(i=u*o+(A=e[a]/p|0)*c)%p*p+s)/n|0)+(i/p|0)+u*A,e[a]=r%n;return s&&(e=[s].concat(e)),e}function t(e,t,n,i){var r,o;if(n!=i)o=n>i?1:-1;else for(r=o=0;rt[r]?1:-1;break}return o}function n(e,t,n,i){for(var r=0;n--;)e[n]-=r,r=e[n]1;e.splice(0,1));}return function(i,r,o,A,s){var c,u,d,h,p,f,I,y,B,C,w,E,Q,b,k,v,S,M=i.s==r.s?1:-1,D=i.c,N=r.c;if(!(D&&D[0]&&N&&N[0]))return new j(i.s&&r.s&&(D?!N||D[0]!=N[0]:N)?D&&0==D[0]||!N?0*M:M/0:NaN);for(B=(y=new j(M)).c=[],M=o+(u=i.e-r.e)+1,s||(s=l,u=m(i.e/g)-m(r.e/g),M=M/g|0),d=0;N[d]==(D[d]||0);d++);if(N[d]>(D[d]||0)&&u--,M<0)B.push(1),h=!0;else{for(b=D.length,v=N.length,d=0,M+=2,(p=a(s/(N[0]+1)))>1&&(N=e(N,p,s),D=e(D,p,s),v=N.length,b=D.length),Q=v,w=(C=D.slice(0,v)).length;w=s/2&&k++;do{if(p=0,(c=t(N,C,v,w))<0){if(E=C[0],v!=w&&(E=E*s+(C[1]||0)),(p=a(E/k))>1)for(p>=s&&(p=s-1),I=(f=e(N,p,s)).length,w=C.length;1==t(f,C,I,w);)p--,n(f,v=10;M/=10,d++);Z(y,o+(y.e=d+u*g-1)+1,A,h)}else y.e=u,y.r=+h;return y}}(),b=/^(-?)0([xbo])(?=\w[\w.]*$)/i,k=/^([^.]+)\.$/,v=/^\.([^.]+)$/,S=/^-?(Infinity|NaN)$/,M=/^\s*\+(?=[\w.])|^\s+|\s+$/g,r=function(e,t,n,i){var r,o=n?t:t.replace(M,"");if(S.test(o))e.s=isNaN(o)?null:o<0?-1:1;else{if(!n&&(o=o.replace(b,(function(e,t,n){return r="x"==(n=n.toLowerCase())?16:"b"==n?2:8,i&&i!=r?e:t})),i&&(r=i,o=o.replace(k,"$1").replace(v,"0.$1")),t!=o))return new j(o,r);if(j.DEBUG)throw Error(c+"Not a"+(i?" base "+i:"")+" number: "+t);e.s=null}e.c=e.e=null},D.absoluteValue=D.abs=function(){var e=new j(this);return e.s<0&&(e.s=1),e},D.comparedTo=function(e,t){return y(this,new j(e,t))},D.decimalPlaces=D.dp=function(e,t){var n,i,r,o=this;if(null!=e)return B(e,0,f),null==t?t=P:B(t,0,8),Z(new j(o),e+o.e+1,t);if(!(n=o.c))return null;if(i=((r=n.length-1)-m(this.e/g))*g,r=n[r])for(;r%10==0;r/=10,i--);return i<0&&(i=0),i},D.dividedBy=D.div=function(e,t){return n(this,new j(e,t),T,P)},D.dividedToIntegerBy=D.idiv=function(e,t){return n(this,new j(e,t),0,1)},D.exponentiatedBy=D.pow=function(e,t){var n,i,r,o,A,u,l,d,h=this;if((e=new j(e)).c&&!e.isInteger())throw Error(c+"Exponent not an integer: "+z(e));if(null!=t&&(t=new j(t)),A=e.e>14,!h.c||!h.c[0]||1==h.c[0]&&!h.e&&1==h.c.length||!e.c||!e.c[0])return d=new j(Math.pow(+z(h),A?2-C(e):+z(e))),t?d.mod(t):d;if(u=e.s<0,t){if(t.c?!t.c[0]:!t.s)return new j(NaN);(i=!u&&h.isInteger()&&t.isInteger())&&(h=h.mod(t))}else{if(e.e>9&&(h.e>0||h.e<-1||(0==h.e?h.c[0]>1||A&&h.c[1]>=24e7:h.c[0]<8e13||A&&h.c[0]<=9999975e7)))return o=h.s<0&&C(e)?-0:0,h.e>-1&&(o=1/o),new j(u?1/o:o);_&&(o=s(_/g+2))}for(A?(n=new j(.5),u&&(e.s=1),l=C(e)):l=(r=Math.abs(+z(e)))%2,d=new j(N);;){if(l){if(!(d=d.times(h)).c)break;o?d.c.length>o&&(d.c.length=o):i&&(d=d.mod(t))}if(r){if(0===(r=a(r/2)))break;l=r%2}else if(Z(e=e.times(n),e.e+1,1),e.e>14)l=C(e);else{if(0==(r=+z(e)))break;l=r%2}h=h.times(h),o?h.c&&h.c.length>o&&(h.c.length=o):i&&(h=h.mod(t))}return i?d:(u&&(d=N.div(d)),t?d.mod(t):o?Z(d,_,P,void 0):d)},D.integerValue=function(e){var t=new j(this);return null==e?e=P:B(e,0,8),Z(t,t.e+1,e)},D.isEqualTo=D.eq=function(e,t){return 0===y(this,new j(e,t))},D.isFinite=function(){return!!this.c},D.isGreaterThan=D.gt=function(e,t){return y(this,new j(e,t))>0},D.isGreaterThanOrEqualTo=D.gte=function(e,t){return 1===(t=y(this,new j(e,t)))||0===t},D.isInteger=function(){return!!this.c&&m(this.e/g)>this.c.length-2},D.isLessThan=D.lt=function(e,t){return y(this,new j(e,t))<0},D.isLessThanOrEqualTo=D.lte=function(e,t){return-1===(t=y(this,new j(e,t)))||0===t},D.isNaN=function(){return!this.s},D.isNegative=function(){return this.s<0},D.isPositive=function(){return this.s>0},D.isZero=function(){return!!this.c&&0==this.c[0]},D.minus=function(e,t){var n,i,r,o,A=this,s=A.s;if(t=(e=new j(e,t)).s,!s||!t)return new j(NaN);if(s!=t)return e.s=-t,A.plus(e);var a=A.e/g,c=e.e/g,u=A.c,d=e.c;if(!a||!c){if(!u||!d)return u?(e.s=-t,e):new j(d?A:NaN);if(!u[0]||!d[0])return d[0]?(e.s=-t,e):new j(u[0]?A:3==P?-0:0)}if(a=m(a),c=m(c),u=u.slice(),s=a-c){for((o=s<0)?(s=-s,r=u):(c=a,r=d),r.reverse(),t=s;t--;r.push(0));r.reverse()}else for(i=(o=(s=u.length)<(t=d.length))?s:t,s=t=0;t0)for(;t--;u[n++]=0);for(t=l-1;i>s;){if(u[--i]=0;){for(n=0,h=E[r]%B,f=E[r]/B|0,o=r+(A=a);o>r;)n=((c=h*(c=w[--A]%B)+(s=f*c+(u=w[A]/B|0)*h)%B*B+I[o]+n)/y|0)+(s/B|0)+f*u,I[o--]=c%y;I[o]=n}return n?++i:I.splice(0,1),q(e,I,i)},D.negated=function(){var e=new j(this);return e.s=-e.s||null,e},D.plus=function(e,t){var n,i=this,r=i.s;if(t=(e=new j(e,t)).s,!r||!t)return new j(NaN);if(r!=t)return e.s=-t,i.minus(e);var o=i.e/g,A=e.e/g,s=i.c,a=e.c;if(!o||!A){if(!s||!a)return new j(r/0);if(!s[0]||!a[0])return a[0]?e:new j(s[0]?i:0*r)}if(o=m(o),A=m(A),s=s.slice(),r=o-A){for(r>0?(A=o,n=a):(r=-r,n=s),n.reverse();r--;n.push(0));n.reverse()}for((r=s.length)-(t=a.length)<0&&(n=a,a=s,s=n,t=r),r=0;t;)r=(s[--t]=s[t]+a[t]+r)/l|0,s[t]=l===s[t]?0:s[t]%l;return r&&(s=[r].concat(s),++A),q(e,s,A)},D.precision=D.sd=function(e,t){var n,i,r,o=this;if(null!=e&&e!==!!e)return B(e,1,f),null==t?t=P:B(t,0,8),Z(new j(o),e,t);if(!(n=o.c))return null;if(i=(r=n.length-1)*g+1,r=n[r]){for(;r%10==0;r/=10,i--);for(r=n[0];r>=10;r/=10,i++);}return e&&o.e+1>i&&(i=o.e+1),i},D.shiftedBy=function(e){return B(e,-9007199254740991,d),this.times("1e"+e)},D.squareRoot=D.sqrt=function(){var e,t,i,r,o,A=this,s=A.c,a=A.s,c=A.e,u=T+4,l=new j("0.5");if(1!==a||!s||!s[0])return new j(!a||a<0&&(!s||s[0])?NaN:s?A:1/0);if(0==(a=Math.sqrt(+z(A)))||a==1/0?(((t=I(s)).length+c)%2==0&&(t+="0"),a=Math.sqrt(+t),c=m((c+1)/2)-(c<0||c%2),i=new j(t=a==1/0?"5e"+c:(t=a.toExponential()).slice(0,t.indexOf("e")+1)+c)):i=new j(a+""),i.c[0])for((a=(c=i.e)+u)<3&&(a=0);;)if(o=i,i=l.times(o.plus(n(A,o,u,1))),I(o.c).slice(0,a)===(t=I(i.c)).slice(0,a)){if(i.e0&&p>0){for(o=p%s||s,l=h.substr(0,o);o0&&(l+=u+h.slice(o)),d&&(l="-"+l)}i=g?l+(n.decimalSeparator||"")+((a=+n.fractionGroupSize)?g.replace(new RegExp("\\d{"+a+"}\\B","g"),"$&"+(n.fractionGroupSeparator||"")):g):l}return(n.prefix||"")+i+(n.suffix||"")},D.toFraction=function(e){var t,i,r,o,A,s,a,u,l,d,p,f,m=this,y=m.c;if(null!=e&&(!(a=new j(e)).isInteger()&&(a.c||1!==a.s)||a.lt(N)))throw Error(c+"Argument "+(a.isInteger()?"out of range: ":"not an integer: ")+z(a));if(!y)return new j(m);for(t=new j(N),l=i=new j(N),r=u=new j(N),f=I(y),A=t.e=f.length-m.e-1,t.c[0]=h[(s=A%g)<0?g+s:s],e=!e||a.comparedTo(t)>0?A>0?t:l:a,s=G,G=1/0,a=new j(f),u.c[0]=0;d=n(a,t,0,1),1!=(o=i.plus(d.times(r))).comparedTo(e);)i=r,r=o,l=u.plus(d.times(o=l)),u=o,t=a.minus(d.times(o=t)),a=o;return o=n(e.minus(i),r,0,1),u=u.plus(o.times(l)),i=i.plus(o.times(r)),u.s=l.s=m.s,p=n(l,r,A*=2,P).minus(m).abs().comparedTo(n(u,i,A,P).minus(m).abs())<1?[l,r]:[u,i],G=s,p},D.toNumber=function(){return+z(this)},D.toPrecision=function(e,t){return null!=e&&B(e,1,f),W(this,e,t,2)},D.toString=function(e){var t,n=this,r=n.s,o=n.e;return null===o?r?(t="Infinity",r<0&&(t="-"+t)):t="NaN":(null==e?t=o<=O||o>=F?w(I(n.c),o):E(I(n.c),o,"0"):10===e&&Y?t=E(I((n=Z(new j(n),T+o+1,P)).c),n.e,"0"):(B(e,2,K.length,"Base"),t=i(E(I(n.c),o,"0"),10,e,r,!0)),r<0&&n.c[0]&&(t="-"+t)),t},D.valueOf=D.toJSON=function(){return z(this)},D._isBigNumber=!0,null!=t&&j.set(t),j}(),o.default=o.BigNumber=o,void 0===(i=function(){return o}.call(t,n,t,e))||(e.exports=i)}()},39066:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};t.__esModule=!0,t.sqrt=void 0;var r=i(n(39098));t.sqrt=function(e){if(e.lt(new r.default(0)))throw new Error("Sqrt only works on non-negtiave inputs");if(e.lt(new r.default(2)))return e;var n=(0,t.sqrt)(e.shrn(2)).shln(1),i=n.add(new r.default(1));return i.mul(i).gt(e)?n:i},t.default=t.sqrt},39098:function(e,t,n){!function(e,t){"use strict";function i(e,t){if(!e)throw new Error(t||"Assertion failed")}function r(e,t){e.super_=t;var n=function(){};n.prototype=t.prototype,e.prototype=new n,e.prototype.constructor=e}function o(e,t,n){if(o.isBN(e))return e;this.negative=0,this.words=null,this.length=0,this.red=null,null!==e&&("le"!==t&&"be"!==t||(n=t,t=10),this._init(e||0,t||10,n||"be"))}var A;"object"==typeof e?e.exports=o:t.BN=o,o.BN=o,o.wordSize=26;try{A="undefined"!=typeof window&&void 0!==window.Buffer?window.Buffer:n(79391).Buffer}catch(e){}function s(e,t){var n=e.charCodeAt(t);return n>=48&&n<=57?n-48:n>=65&&n<=70?n-55:n>=97&&n<=102?n-87:void i(!1,"Invalid character in "+e)}function a(e,t,n){var i=s(e,n);return n-1>=t&&(i|=s(e,n-1)<<4),i}function c(e,t,n,r){for(var o=0,A=0,s=Math.min(e.length,n),a=t;a=49?c-49+10:c>=17?c-17+10:c,i(c>=0&&A0?e:t},o.min=function(e,t){return e.cmp(t)<0?e:t},o.prototype._init=function(e,t,n){if("number"==typeof e)return this._initNumber(e,t,n);if("object"==typeof e)return this._initArray(e,t,n);"hex"===t&&(t=16),i(t===(0|t)&&t>=2&&t<=36);var r=0;"-"===(e=e.toString().replace(/\s+/g,""))[0]&&(r++,this.negative=1),r=0;r-=3)A=e[r]|e[r-1]<<8|e[r-2]<<16,this.words[o]|=A<>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);else if("le"===n)for(r=0,o=0;r>>26-s&67108863,(s+=24)>=26&&(s-=26,o++);return this._strip()},o.prototype._parseHex=function(e,t,n){this.length=Math.ceil((e.length-t)/6),this.words=new Array(this.length);for(var i=0;i=t;i-=2)r=a(e,t,i)<=18?(o-=18,A+=1,this.words[A]|=r>>>26):o+=8;else for(i=(e.length-t)%2==0?t+1:t;i=18?(o-=18,A+=1,this.words[A]|=r>>>26):o+=8;this._strip()},o.prototype._parseBase=function(e,t,n){this.words=[0],this.length=1;for(var i=0,r=1;r<=67108863;r*=t)i++;i--,r=r/t|0;for(var o=e.length-n,A=o%i,s=Math.min(o,o-A)+n,a=0,u=n;u1&&0===this.words[this.length-1];)this.length--;return this._normSign()},o.prototype._normSign=function(){return 1===this.length&&0===this.words[0]&&(this.negative=0),this},"undefined"!=typeof Symbol&&"function"==typeof Symbol.for)try{o.prototype[Symbol.for("nodejs.util.inspect.custom")]=l}catch(e){o.prototype.inspect=l}else o.prototype.inspect=l;function l(){return(this.red?""}var g=["","0","00","000","0000","00000","000000","0000000","00000000","000000000","0000000000","00000000000","000000000000","0000000000000","00000000000000","000000000000000","0000000000000000","00000000000000000","000000000000000000","0000000000000000000","00000000000000000000","000000000000000000000","0000000000000000000000","00000000000000000000000","000000000000000000000000","0000000000000000000000000"],d=[0,0,25,16,12,11,10,9,8,8,7,7,7,7,6,6,6,6,6,6,6,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5,5],h=[0,0,33554432,43046721,16777216,48828125,60466176,40353607,16777216,43046721,1e7,19487171,35831808,62748517,7529536,11390625,16777216,24137569,34012224,47045881,64e6,4084101,5153632,6436343,7962624,9765625,11881376,14348907,17210368,20511149,243e5,28629151,33554432,39135393,45435424,52521875,60466176];function p(e,t,n){n.negative=t.negative^e.negative;var i=e.length+t.length|0;n.length=i,i=i-1|0;var r=0|e.words[0],o=0|t.words[0],A=r*o,s=67108863&A,a=A/67108864|0;n.words[0]=s;for(var c=1;c>>26,l=67108863&a,g=Math.min(c,t.length-1),d=Math.max(0,c-e.length+1);d<=g;d++){var h=c-d|0;u+=(A=(r=0|e.words[h])*(o=0|t.words[d])+l)/67108864|0,l=67108863&A}n.words[c]=0|l,a=0|u}return 0!==a?n.words[c]=0|a:n.length--,n._strip()}o.prototype.toString=function(e,t){var n;if(t=0|t||1,16===(e=e||10)||"hex"===e){n="";for(var r=0,o=0,A=0;A>>24-r&16777215,(r+=2)>=26&&(r-=26,A--),n=0!==o||A!==this.length-1?g[6-a.length]+a+n:a+n}for(0!==o&&(n=o.toString(16)+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}if(e===(0|e)&&e>=2&&e<=36){var c=d[e],u=h[e];n="";var l=this.clone();for(l.negative=0;!l.isZero();){var p=l.modrn(u).toString(e);n=(l=l.idivn(u)).isZero()?p+n:g[c-p.length]+p+n}for(this.isZero()&&(n="0"+n);n.length%t!=0;)n="0"+n;return 0!==this.negative&&(n="-"+n),n}i(!1,"Base should be between 2 and 36")},o.prototype.toNumber=function(){var e=this.words[0];return 2===this.length?e+=67108864*this.words[1]:3===this.length&&1===this.words[2]?e+=4503599627370496+67108864*this.words[1]:this.length>2&&i(!1,"Number can only safely store up to 53 bits"),0!==this.negative?-e:e},o.prototype.toJSON=function(){return this.toString(16,2)},A&&(o.prototype.toBuffer=function(e,t){return this.toArrayLike(A,e,t)}),o.prototype.toArray=function(e,t){return this.toArrayLike(Array,e,t)},o.prototype.toArrayLike=function(e,t,n){this._strip();var r=this.byteLength(),o=n||Math.max(1,r);i(r<=o,"byte array longer than desired length"),i(o>0,"Requested array length <= 0");var A=function(e,t){return e.allocUnsafe?e.allocUnsafe(t):new e(t)}(e,o);return this["_toArrayLike"+("le"===t?"LE":"BE")](A,r),A},o.prototype._toArrayLikeLE=function(e,t){for(var n=0,i=0,r=0,o=0;r>8&255),n>16&255),6===o?(n>24&255),i=0,o=0):(i=A>>>24,o+=2)}if(n=0&&(e[n--]=A>>8&255),n>=0&&(e[n--]=A>>16&255),6===o?(n>=0&&(e[n--]=A>>24&255),i=0,o=0):(i=A>>>24,o+=2)}if(n>=0)for(e[n--]=i;n>=0;)e[n--]=0},Math.clz32?o.prototype._countBits=function(e){return 32-Math.clz32(e)}:o.prototype._countBits=function(e){var t=e,n=0;return t>=4096&&(n+=13,t>>>=13),t>=64&&(n+=7,t>>>=7),t>=8&&(n+=4,t>>>=4),t>=2&&(n+=2,t>>>=2),n+t},o.prototype._zeroBits=function(e){if(0===e)return 26;var t=e,n=0;return 0==(8191&t)&&(n+=13,t>>>=13),0==(127&t)&&(n+=7,t>>>=7),0==(15&t)&&(n+=4,t>>>=4),0==(3&t)&&(n+=2,t>>>=2),0==(1&t)&&n++,n},o.prototype.bitLength=function(){var e=this.words[this.length-1],t=this._countBits(e);return 26*(this.length-1)+t},o.prototype.zeroBits=function(){if(this.isZero())return 0;for(var e=0,t=0;te.length?this.clone().ior(e):e.clone().ior(this)},o.prototype.uor=function(e){return this.length>e.length?this.clone().iuor(e):e.clone().iuor(this)},o.prototype.iuand=function(e){var t;t=this.length>e.length?e:this;for(var n=0;ne.length?this.clone().iand(e):e.clone().iand(this)},o.prototype.uand=function(e){return this.length>e.length?this.clone().iuand(e):e.clone().iuand(this)},o.prototype.iuxor=function(e){var t,n;this.length>e.length?(t=this,n=e):(t=e,n=this);for(var i=0;ie.length?this.clone().ixor(e):e.clone().ixor(this)},o.prototype.uxor=function(e){return this.length>e.length?this.clone().iuxor(e):e.clone().iuxor(this)},o.prototype.inotn=function(e){i("number"==typeof e&&e>=0);var t=0|Math.ceil(e/26),n=e%26;this._expand(t),n>0&&t--;for(var r=0;r0&&(this.words[r]=~this.words[r]&67108863>>26-n),this._strip()},o.prototype.notn=function(e){return this.clone().inotn(e)},o.prototype.setn=function(e,t){i("number"==typeof e&&e>=0);var n=e/26|0,r=e%26;return this._expand(n+1),this.words[n]=t?this.words[n]|1<e.length?(n=this,i=e):(n=e,i=this);for(var r=0,o=0;o>>26;for(;0!==r&&o>>26;if(this.length=n.length,0!==r)this.words[this.length]=r,this.length++;else if(n!==this)for(;oe.length?this.clone().iadd(e):e.clone().iadd(this)},o.prototype.isub=function(e){if(0!==e.negative){e.negative=0;var t=this.iadd(e);return e.negative=1,t._normSign()}if(0!==this.negative)return this.negative=0,this.iadd(e),this.negative=1,this._normSign();var n,i,r=this.cmp(e);if(0===r)return this.negative=0,this.length=1,this.words[0]=0,this;r>0?(n=this,i=e):(n=e,i=this);for(var o=0,A=0;A>26,this.words[A]=67108863&t;for(;0!==o&&A>26,this.words[A]=67108863&t;if(0===o&&A>>13,d=0|A[1],h=8191&d,p=d>>>13,f=0|A[2],m=8191&f,I=f>>>13,y=0|A[3],B=8191&y,C=y>>>13,w=0|A[4],E=8191&w,Q=w>>>13,b=0|A[5],k=8191&b,v=b>>>13,S=0|A[6],M=8191&S,D=S>>>13,N=0|A[7],T=8191&N,P=N>>>13,O=0|A[8],F=8191&O,R=O>>>13,G=0|A[9],x=8191&G,U=G>>>13,_=0|s[0],L=8191&_,K=_>>>13,Y=0|s[1],j=8191&Y,W=Y>>>13,J=0|s[2],q=8191&J,Z=J>>>13,z=0|s[3],H=8191&z,V=z>>>13,X=0|s[4],$=8191&X,ee=X>>>13,te=0|s[5],ne=8191&te,ie=te>>>13,re=0|s[6],oe=8191&re,Ae=re>>>13,se=0|s[7],ae=8191&se,ce=se>>>13,ue=0|s[8],le=8191&ue,ge=ue>>>13,de=0|s[9],he=8191&de,pe=de>>>13;n.negative=e.negative^t.negative,n.length=19;var fe=(c+(i=Math.imul(l,L))|0)+((8191&(r=(r=Math.imul(l,K))+Math.imul(g,L)|0))<<13)|0;c=((o=Math.imul(g,K))+(r>>>13)|0)+(fe>>>26)|0,fe&=67108863,i=Math.imul(h,L),r=(r=Math.imul(h,K))+Math.imul(p,L)|0,o=Math.imul(p,K);var me=(c+(i=i+Math.imul(l,j)|0)|0)+((8191&(r=(r=r+Math.imul(l,W)|0)+Math.imul(g,j)|0))<<13)|0;c=((o=o+Math.imul(g,W)|0)+(r>>>13)|0)+(me>>>26)|0,me&=67108863,i=Math.imul(m,L),r=(r=Math.imul(m,K))+Math.imul(I,L)|0,o=Math.imul(I,K),i=i+Math.imul(h,j)|0,r=(r=r+Math.imul(h,W)|0)+Math.imul(p,j)|0,o=o+Math.imul(p,W)|0;var Ie=(c+(i=i+Math.imul(l,q)|0)|0)+((8191&(r=(r=r+Math.imul(l,Z)|0)+Math.imul(g,q)|0))<<13)|0;c=((o=o+Math.imul(g,Z)|0)+(r>>>13)|0)+(Ie>>>26)|0,Ie&=67108863,i=Math.imul(B,L),r=(r=Math.imul(B,K))+Math.imul(C,L)|0,o=Math.imul(C,K),i=i+Math.imul(m,j)|0,r=(r=r+Math.imul(m,W)|0)+Math.imul(I,j)|0,o=o+Math.imul(I,W)|0,i=i+Math.imul(h,q)|0,r=(r=r+Math.imul(h,Z)|0)+Math.imul(p,q)|0,o=o+Math.imul(p,Z)|0;var ye=(c+(i=i+Math.imul(l,H)|0)|0)+((8191&(r=(r=r+Math.imul(l,V)|0)+Math.imul(g,H)|0))<<13)|0;c=((o=o+Math.imul(g,V)|0)+(r>>>13)|0)+(ye>>>26)|0,ye&=67108863,i=Math.imul(E,L),r=(r=Math.imul(E,K))+Math.imul(Q,L)|0,o=Math.imul(Q,K),i=i+Math.imul(B,j)|0,r=(r=r+Math.imul(B,W)|0)+Math.imul(C,j)|0,o=o+Math.imul(C,W)|0,i=i+Math.imul(m,q)|0,r=(r=r+Math.imul(m,Z)|0)+Math.imul(I,q)|0,o=o+Math.imul(I,Z)|0,i=i+Math.imul(h,H)|0,r=(r=r+Math.imul(h,V)|0)+Math.imul(p,H)|0,o=o+Math.imul(p,V)|0;var Be=(c+(i=i+Math.imul(l,$)|0)|0)+((8191&(r=(r=r+Math.imul(l,ee)|0)+Math.imul(g,$)|0))<<13)|0;c=((o=o+Math.imul(g,ee)|0)+(r>>>13)|0)+(Be>>>26)|0,Be&=67108863,i=Math.imul(k,L),r=(r=Math.imul(k,K))+Math.imul(v,L)|0,o=Math.imul(v,K),i=i+Math.imul(E,j)|0,r=(r=r+Math.imul(E,W)|0)+Math.imul(Q,j)|0,o=o+Math.imul(Q,W)|0,i=i+Math.imul(B,q)|0,r=(r=r+Math.imul(B,Z)|0)+Math.imul(C,q)|0,o=o+Math.imul(C,Z)|0,i=i+Math.imul(m,H)|0,r=(r=r+Math.imul(m,V)|0)+Math.imul(I,H)|0,o=o+Math.imul(I,V)|0,i=i+Math.imul(h,$)|0,r=(r=r+Math.imul(h,ee)|0)+Math.imul(p,$)|0,o=o+Math.imul(p,ee)|0;var Ce=(c+(i=i+Math.imul(l,ne)|0)|0)+((8191&(r=(r=r+Math.imul(l,ie)|0)+Math.imul(g,ne)|0))<<13)|0;c=((o=o+Math.imul(g,ie)|0)+(r>>>13)|0)+(Ce>>>26)|0,Ce&=67108863,i=Math.imul(M,L),r=(r=Math.imul(M,K))+Math.imul(D,L)|0,o=Math.imul(D,K),i=i+Math.imul(k,j)|0,r=(r=r+Math.imul(k,W)|0)+Math.imul(v,j)|0,o=o+Math.imul(v,W)|0,i=i+Math.imul(E,q)|0,r=(r=r+Math.imul(E,Z)|0)+Math.imul(Q,q)|0,o=o+Math.imul(Q,Z)|0,i=i+Math.imul(B,H)|0,r=(r=r+Math.imul(B,V)|0)+Math.imul(C,H)|0,o=o+Math.imul(C,V)|0,i=i+Math.imul(m,$)|0,r=(r=r+Math.imul(m,ee)|0)+Math.imul(I,$)|0,o=o+Math.imul(I,ee)|0,i=i+Math.imul(h,ne)|0,r=(r=r+Math.imul(h,ie)|0)+Math.imul(p,ne)|0,o=o+Math.imul(p,ie)|0;var we=(c+(i=i+Math.imul(l,oe)|0)|0)+((8191&(r=(r=r+Math.imul(l,Ae)|0)+Math.imul(g,oe)|0))<<13)|0;c=((o=o+Math.imul(g,Ae)|0)+(r>>>13)|0)+(we>>>26)|0,we&=67108863,i=Math.imul(T,L),r=(r=Math.imul(T,K))+Math.imul(P,L)|0,o=Math.imul(P,K),i=i+Math.imul(M,j)|0,r=(r=r+Math.imul(M,W)|0)+Math.imul(D,j)|0,o=o+Math.imul(D,W)|0,i=i+Math.imul(k,q)|0,r=(r=r+Math.imul(k,Z)|0)+Math.imul(v,q)|0,o=o+Math.imul(v,Z)|0,i=i+Math.imul(E,H)|0,r=(r=r+Math.imul(E,V)|0)+Math.imul(Q,H)|0,o=o+Math.imul(Q,V)|0,i=i+Math.imul(B,$)|0,r=(r=r+Math.imul(B,ee)|0)+Math.imul(C,$)|0,o=o+Math.imul(C,ee)|0,i=i+Math.imul(m,ne)|0,r=(r=r+Math.imul(m,ie)|0)+Math.imul(I,ne)|0,o=o+Math.imul(I,ie)|0,i=i+Math.imul(h,oe)|0,r=(r=r+Math.imul(h,Ae)|0)+Math.imul(p,oe)|0,o=o+Math.imul(p,Ae)|0;var Ee=(c+(i=i+Math.imul(l,ae)|0)|0)+((8191&(r=(r=r+Math.imul(l,ce)|0)+Math.imul(g,ae)|0))<<13)|0;c=((o=o+Math.imul(g,ce)|0)+(r>>>13)|0)+(Ee>>>26)|0,Ee&=67108863,i=Math.imul(F,L),r=(r=Math.imul(F,K))+Math.imul(R,L)|0,o=Math.imul(R,K),i=i+Math.imul(T,j)|0,r=(r=r+Math.imul(T,W)|0)+Math.imul(P,j)|0,o=o+Math.imul(P,W)|0,i=i+Math.imul(M,q)|0,r=(r=r+Math.imul(M,Z)|0)+Math.imul(D,q)|0,o=o+Math.imul(D,Z)|0,i=i+Math.imul(k,H)|0,r=(r=r+Math.imul(k,V)|0)+Math.imul(v,H)|0,o=o+Math.imul(v,V)|0,i=i+Math.imul(E,$)|0,r=(r=r+Math.imul(E,ee)|0)+Math.imul(Q,$)|0,o=o+Math.imul(Q,ee)|0,i=i+Math.imul(B,ne)|0,r=(r=r+Math.imul(B,ie)|0)+Math.imul(C,ne)|0,o=o+Math.imul(C,ie)|0,i=i+Math.imul(m,oe)|0,r=(r=r+Math.imul(m,Ae)|0)+Math.imul(I,oe)|0,o=o+Math.imul(I,Ae)|0,i=i+Math.imul(h,ae)|0,r=(r=r+Math.imul(h,ce)|0)+Math.imul(p,ae)|0,o=o+Math.imul(p,ce)|0;var Qe=(c+(i=i+Math.imul(l,le)|0)|0)+((8191&(r=(r=r+Math.imul(l,ge)|0)+Math.imul(g,le)|0))<<13)|0;c=((o=o+Math.imul(g,ge)|0)+(r>>>13)|0)+(Qe>>>26)|0,Qe&=67108863,i=Math.imul(x,L),r=(r=Math.imul(x,K))+Math.imul(U,L)|0,o=Math.imul(U,K),i=i+Math.imul(F,j)|0,r=(r=r+Math.imul(F,W)|0)+Math.imul(R,j)|0,o=o+Math.imul(R,W)|0,i=i+Math.imul(T,q)|0,r=(r=r+Math.imul(T,Z)|0)+Math.imul(P,q)|0,o=o+Math.imul(P,Z)|0,i=i+Math.imul(M,H)|0,r=(r=r+Math.imul(M,V)|0)+Math.imul(D,H)|0,o=o+Math.imul(D,V)|0,i=i+Math.imul(k,$)|0,r=(r=r+Math.imul(k,ee)|0)+Math.imul(v,$)|0,o=o+Math.imul(v,ee)|0,i=i+Math.imul(E,ne)|0,r=(r=r+Math.imul(E,ie)|0)+Math.imul(Q,ne)|0,o=o+Math.imul(Q,ie)|0,i=i+Math.imul(B,oe)|0,r=(r=r+Math.imul(B,Ae)|0)+Math.imul(C,oe)|0,o=o+Math.imul(C,Ae)|0,i=i+Math.imul(m,ae)|0,r=(r=r+Math.imul(m,ce)|0)+Math.imul(I,ae)|0,o=o+Math.imul(I,ce)|0,i=i+Math.imul(h,le)|0,r=(r=r+Math.imul(h,ge)|0)+Math.imul(p,le)|0,o=o+Math.imul(p,ge)|0;var be=(c+(i=i+Math.imul(l,he)|0)|0)+((8191&(r=(r=r+Math.imul(l,pe)|0)+Math.imul(g,he)|0))<<13)|0;c=((o=o+Math.imul(g,pe)|0)+(r>>>13)|0)+(be>>>26)|0,be&=67108863,i=Math.imul(x,j),r=(r=Math.imul(x,W))+Math.imul(U,j)|0,o=Math.imul(U,W),i=i+Math.imul(F,q)|0,r=(r=r+Math.imul(F,Z)|0)+Math.imul(R,q)|0,o=o+Math.imul(R,Z)|0,i=i+Math.imul(T,H)|0,r=(r=r+Math.imul(T,V)|0)+Math.imul(P,H)|0,o=o+Math.imul(P,V)|0,i=i+Math.imul(M,$)|0,r=(r=r+Math.imul(M,ee)|0)+Math.imul(D,$)|0,o=o+Math.imul(D,ee)|0,i=i+Math.imul(k,ne)|0,r=(r=r+Math.imul(k,ie)|0)+Math.imul(v,ne)|0,o=o+Math.imul(v,ie)|0,i=i+Math.imul(E,oe)|0,r=(r=r+Math.imul(E,Ae)|0)+Math.imul(Q,oe)|0,o=o+Math.imul(Q,Ae)|0,i=i+Math.imul(B,ae)|0,r=(r=r+Math.imul(B,ce)|0)+Math.imul(C,ae)|0,o=o+Math.imul(C,ce)|0,i=i+Math.imul(m,le)|0,r=(r=r+Math.imul(m,ge)|0)+Math.imul(I,le)|0,o=o+Math.imul(I,ge)|0;var ke=(c+(i=i+Math.imul(h,he)|0)|0)+((8191&(r=(r=r+Math.imul(h,pe)|0)+Math.imul(p,he)|0))<<13)|0;c=((o=o+Math.imul(p,pe)|0)+(r>>>13)|0)+(ke>>>26)|0,ke&=67108863,i=Math.imul(x,q),r=(r=Math.imul(x,Z))+Math.imul(U,q)|0,o=Math.imul(U,Z),i=i+Math.imul(F,H)|0,r=(r=r+Math.imul(F,V)|0)+Math.imul(R,H)|0,o=o+Math.imul(R,V)|0,i=i+Math.imul(T,$)|0,r=(r=r+Math.imul(T,ee)|0)+Math.imul(P,$)|0,o=o+Math.imul(P,ee)|0,i=i+Math.imul(M,ne)|0,r=(r=r+Math.imul(M,ie)|0)+Math.imul(D,ne)|0,o=o+Math.imul(D,ie)|0,i=i+Math.imul(k,oe)|0,r=(r=r+Math.imul(k,Ae)|0)+Math.imul(v,oe)|0,o=o+Math.imul(v,Ae)|0,i=i+Math.imul(E,ae)|0,r=(r=r+Math.imul(E,ce)|0)+Math.imul(Q,ae)|0,o=o+Math.imul(Q,ce)|0,i=i+Math.imul(B,le)|0,r=(r=r+Math.imul(B,ge)|0)+Math.imul(C,le)|0,o=o+Math.imul(C,ge)|0;var ve=(c+(i=i+Math.imul(m,he)|0)|0)+((8191&(r=(r=r+Math.imul(m,pe)|0)+Math.imul(I,he)|0))<<13)|0;c=((o=o+Math.imul(I,pe)|0)+(r>>>13)|0)+(ve>>>26)|0,ve&=67108863,i=Math.imul(x,H),r=(r=Math.imul(x,V))+Math.imul(U,H)|0,o=Math.imul(U,V),i=i+Math.imul(F,$)|0,r=(r=r+Math.imul(F,ee)|0)+Math.imul(R,$)|0,o=o+Math.imul(R,ee)|0,i=i+Math.imul(T,ne)|0,r=(r=r+Math.imul(T,ie)|0)+Math.imul(P,ne)|0,o=o+Math.imul(P,ie)|0,i=i+Math.imul(M,oe)|0,r=(r=r+Math.imul(M,Ae)|0)+Math.imul(D,oe)|0,o=o+Math.imul(D,Ae)|0,i=i+Math.imul(k,ae)|0,r=(r=r+Math.imul(k,ce)|0)+Math.imul(v,ae)|0,o=o+Math.imul(v,ce)|0,i=i+Math.imul(E,le)|0,r=(r=r+Math.imul(E,ge)|0)+Math.imul(Q,le)|0,o=o+Math.imul(Q,ge)|0;var Se=(c+(i=i+Math.imul(B,he)|0)|0)+((8191&(r=(r=r+Math.imul(B,pe)|0)+Math.imul(C,he)|0))<<13)|0;c=((o=o+Math.imul(C,pe)|0)+(r>>>13)|0)+(Se>>>26)|0,Se&=67108863,i=Math.imul(x,$),r=(r=Math.imul(x,ee))+Math.imul(U,$)|0,o=Math.imul(U,ee),i=i+Math.imul(F,ne)|0,r=(r=r+Math.imul(F,ie)|0)+Math.imul(R,ne)|0,o=o+Math.imul(R,ie)|0,i=i+Math.imul(T,oe)|0,r=(r=r+Math.imul(T,Ae)|0)+Math.imul(P,oe)|0,o=o+Math.imul(P,Ae)|0,i=i+Math.imul(M,ae)|0,r=(r=r+Math.imul(M,ce)|0)+Math.imul(D,ae)|0,o=o+Math.imul(D,ce)|0,i=i+Math.imul(k,le)|0,r=(r=r+Math.imul(k,ge)|0)+Math.imul(v,le)|0,o=o+Math.imul(v,ge)|0;var Me=(c+(i=i+Math.imul(E,he)|0)|0)+((8191&(r=(r=r+Math.imul(E,pe)|0)+Math.imul(Q,he)|0))<<13)|0;c=((o=o+Math.imul(Q,pe)|0)+(r>>>13)|0)+(Me>>>26)|0,Me&=67108863,i=Math.imul(x,ne),r=(r=Math.imul(x,ie))+Math.imul(U,ne)|0,o=Math.imul(U,ie),i=i+Math.imul(F,oe)|0,r=(r=r+Math.imul(F,Ae)|0)+Math.imul(R,oe)|0,o=o+Math.imul(R,Ae)|0,i=i+Math.imul(T,ae)|0,r=(r=r+Math.imul(T,ce)|0)+Math.imul(P,ae)|0,o=o+Math.imul(P,ce)|0,i=i+Math.imul(M,le)|0,r=(r=r+Math.imul(M,ge)|0)+Math.imul(D,le)|0,o=o+Math.imul(D,ge)|0;var De=(c+(i=i+Math.imul(k,he)|0)|0)+((8191&(r=(r=r+Math.imul(k,pe)|0)+Math.imul(v,he)|0))<<13)|0;c=((o=o+Math.imul(v,pe)|0)+(r>>>13)|0)+(De>>>26)|0,De&=67108863,i=Math.imul(x,oe),r=(r=Math.imul(x,Ae))+Math.imul(U,oe)|0,o=Math.imul(U,Ae),i=i+Math.imul(F,ae)|0,r=(r=r+Math.imul(F,ce)|0)+Math.imul(R,ae)|0,o=o+Math.imul(R,ce)|0,i=i+Math.imul(T,le)|0,r=(r=r+Math.imul(T,ge)|0)+Math.imul(P,le)|0,o=o+Math.imul(P,ge)|0;var Ne=(c+(i=i+Math.imul(M,he)|0)|0)+((8191&(r=(r=r+Math.imul(M,pe)|0)+Math.imul(D,he)|0))<<13)|0;c=((o=o+Math.imul(D,pe)|0)+(r>>>13)|0)+(Ne>>>26)|0,Ne&=67108863,i=Math.imul(x,ae),r=(r=Math.imul(x,ce))+Math.imul(U,ae)|0,o=Math.imul(U,ce),i=i+Math.imul(F,le)|0,r=(r=r+Math.imul(F,ge)|0)+Math.imul(R,le)|0,o=o+Math.imul(R,ge)|0;var Te=(c+(i=i+Math.imul(T,he)|0)|0)+((8191&(r=(r=r+Math.imul(T,pe)|0)+Math.imul(P,he)|0))<<13)|0;c=((o=o+Math.imul(P,pe)|0)+(r>>>13)|0)+(Te>>>26)|0,Te&=67108863,i=Math.imul(x,le),r=(r=Math.imul(x,ge))+Math.imul(U,le)|0,o=Math.imul(U,ge);var Pe=(c+(i=i+Math.imul(F,he)|0)|0)+((8191&(r=(r=r+Math.imul(F,pe)|0)+Math.imul(R,he)|0))<<13)|0;c=((o=o+Math.imul(R,pe)|0)+(r>>>13)|0)+(Pe>>>26)|0,Pe&=67108863;var Oe=(c+(i=Math.imul(x,he))|0)+((8191&(r=(r=Math.imul(x,pe))+Math.imul(U,he)|0))<<13)|0;return c=((o=Math.imul(U,pe))+(r>>>13)|0)+(Oe>>>26)|0,Oe&=67108863,a[0]=fe,a[1]=me,a[2]=Ie,a[3]=ye,a[4]=Be,a[5]=Ce,a[6]=we,a[7]=Ee,a[8]=Qe,a[9]=be,a[10]=ke,a[11]=ve,a[12]=Se,a[13]=Me,a[14]=De,a[15]=Ne,a[16]=Te,a[17]=Pe,a[18]=Oe,0!==c&&(a[19]=c,n.length++),n};function m(e,t,n){n.negative=t.negative^e.negative,n.length=e.length+t.length;for(var i=0,r=0,o=0;o>>26)|0)>>>26,A&=67108863}n.words[o]=s,i=A,A=r}return 0!==i?n.words[o]=i:n.length--,n._strip()}function I(e,t,n){return m(e,t,n)}function y(e,t){this.x=e,this.y=t}Math.imul||(f=p),o.prototype.mulTo=function(e,t){var n=this.length+e.length;return 10===this.length&&10===e.length?f(this,e,t):n<63?p(this,e,t):n<1024?m(this,e,t):I(this,e,t)},y.prototype.makeRBT=function(e){for(var t=new Array(e),n=o.prototype._countBits(e)-1,i=0;i>=1;return i},y.prototype.permute=function(e,t,n,i,r,o){for(var A=0;A>>=1)r++;return 1<>>=13,n[2*A+1]=8191&o,o>>>=13;for(A=2*t;A>=26,n+=o/67108864|0,n+=A>>>26,this.words[r]=67108863&A}return 0!==n&&(this.words[r]=n,this.length++),t?this.ineg():this},o.prototype.muln=function(e){return this.clone().imuln(e)},o.prototype.sqr=function(){return this.mul(this)},o.prototype.isqr=function(){return this.imul(this.clone())},o.prototype.pow=function(e){var t=function(e){for(var t=new Array(e.bitLength()),n=0;n>>r&1}return t}(e);if(0===t.length)return new o(1);for(var n=this,i=0;i=0);var t,n=e%26,r=(e-n)/26,o=67108863>>>26-n<<26-n;if(0!==n){var A=0;for(t=0;t>>26-n}A&&(this.words[t]=A,this.length++)}if(0!==r){for(t=this.length-1;t>=0;t--)this.words[t+r]=this.words[t];for(t=0;t=0),r=t?(t-t%26)/26:0;var o=e%26,A=Math.min((e-o)/26,this.length),s=67108863^67108863>>>o<A)for(this.length-=A,c=0;c=0&&(0!==u||c>=r);c--){var l=0|this.words[c];this.words[c]=u<<26-o|l>>>o,u=l&s}return a&&0!==u&&(a.words[a.length++]=u),0===this.length&&(this.words[0]=0,this.length=1),this._strip()},o.prototype.ishrn=function(e,t,n){return i(0===this.negative),this.iushrn(e,t,n)},o.prototype.shln=function(e){return this.clone().ishln(e)},o.prototype.ushln=function(e){return this.clone().iushln(e)},o.prototype.shrn=function(e){return this.clone().ishrn(e)},o.prototype.ushrn=function(e){return this.clone().iushrn(e)},o.prototype.testn=function(e){i("number"==typeof e&&e>=0);var t=e%26,n=(e-t)/26,r=1<=0);var t=e%26,n=(e-t)/26;if(i(0===this.negative,"imaskn works only with positive numbers"),this.length<=n)return this;if(0!==t&&n++,this.length=Math.min(n,this.length),0!==t){var r=67108863^67108863>>>t<=67108864;t++)this.words[t]-=67108864,t===this.length-1?this.words[t+1]=1:this.words[t+1]++;return this.length=Math.max(this.length,t+1),this},o.prototype.isubn=function(e){if(i("number"==typeof e),i(e<67108864),e<0)return this.iaddn(-e);if(0!==this.negative)return this.negative=0,this.iaddn(e),this.negative=1,this;if(this.words[0]-=e,1===this.length&&this.words[0]<0)this.words[0]=-this.words[0],this.negative=1;else for(var t=0;t>26)-(a/67108864|0),this.words[r+n]=67108863&o}for(;r>26,this.words[r+n]=67108863&o;if(0===s)return this._strip();for(i(-1===s),s=0,r=0;r>26,this.words[r]=67108863&o;return this.negative=1,this._strip()},o.prototype._wordDiv=function(e,t){var n=(this.length,e.length),i=this.clone(),r=e,A=0|r.words[r.length-1];0!=(n=26-this._countBits(A))&&(r=r.ushln(n),i.iushln(n),A=0|r.words[r.length-1]);var s,a=i.length-r.length;if("mod"!==t){(s=new o(null)).length=a+1,s.words=new Array(s.length);for(var c=0;c=0;l--){var g=67108864*(0|i.words[r.length+l])+(0|i.words[r.length+l-1]);for(g=Math.min(g/A|0,67108863),i._ishlnsubmul(r,g,l);0!==i.negative;)g--,i.negative=0,i._ishlnsubmul(r,1,l),i.isZero()||(i.negative^=1);s&&(s.words[l]=g)}return s&&s._strip(),i._strip(),"div"!==t&&0!==n&&i.iushrn(n),{div:s||null,mod:i}},o.prototype.divmod=function(e,t,n){return i(!e.isZero()),this.isZero()?{div:new o(0),mod:new o(0)}:0!==this.negative&&0===e.negative?(s=this.neg().divmod(e,t),"mod"!==t&&(r=s.div.neg()),"div"!==t&&(A=s.mod.neg(),n&&0!==A.negative&&A.iadd(e)),{div:r,mod:A}):0===this.negative&&0!==e.negative?(s=this.divmod(e.neg(),t),"mod"!==t&&(r=s.div.neg()),{div:r,mod:s.mod}):0!=(this.negative&e.negative)?(s=this.neg().divmod(e.neg(),t),"div"!==t&&(A=s.mod.neg(),n&&0!==A.negative&&A.isub(e)),{div:s.div,mod:A}):e.length>this.length||this.cmp(e)<0?{div:new o(0),mod:this}:1===e.length?"div"===t?{div:this.divn(e.words[0]),mod:null}:"mod"===t?{div:null,mod:new o(this.modrn(e.words[0]))}:{div:this.divn(e.words[0]),mod:new o(this.modrn(e.words[0]))}:this._wordDiv(e,t);var r,A,s},o.prototype.div=function(e){return this.divmod(e,"div",!1).div},o.prototype.mod=function(e){return this.divmod(e,"mod",!1).mod},o.prototype.umod=function(e){return this.divmod(e,"mod",!0).mod},o.prototype.divRound=function(e){var t=this.divmod(e);if(t.mod.isZero())return t.div;var n=0!==t.div.negative?t.mod.isub(e):t.mod,i=e.ushrn(1),r=e.andln(1),o=n.cmp(i);return o<0||1===r&&0===o?t.div:0!==t.div.negative?t.div.isubn(1):t.div.iaddn(1)},o.prototype.modrn=function(e){var t=e<0;t&&(e=-e),i(e<=67108863);for(var n=(1<<26)%e,r=0,o=this.length-1;o>=0;o--)r=(n*r+(0|this.words[o]))%e;return t?-r:r},o.prototype.modn=function(e){return this.modrn(e)},o.prototype.idivn=function(e){var t=e<0;t&&(e=-e),i(e<=67108863);for(var n=0,r=this.length-1;r>=0;r--){var o=(0|this.words[r])+67108864*n;this.words[r]=o/e|0,n=o%e}return this._strip(),t?this.ineg():this},o.prototype.divn=function(e){return this.clone().idivn(e)},o.prototype.egcd=function(e){i(0===e.negative),i(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var r=new o(1),A=new o(0),s=new o(0),a=new o(1),c=0;t.isEven()&&n.isEven();)t.iushrn(1),n.iushrn(1),++c;for(var u=n.clone(),l=t.clone();!t.isZero();){for(var g=0,d=1;0==(t.words[0]&d)&&g<26;++g,d<<=1);if(g>0)for(t.iushrn(g);g-- >0;)(r.isOdd()||A.isOdd())&&(r.iadd(u),A.isub(l)),r.iushrn(1),A.iushrn(1);for(var h=0,p=1;0==(n.words[0]&p)&&h<26;++h,p<<=1);if(h>0)for(n.iushrn(h);h-- >0;)(s.isOdd()||a.isOdd())&&(s.iadd(u),a.isub(l)),s.iushrn(1),a.iushrn(1);t.cmp(n)>=0?(t.isub(n),r.isub(s),A.isub(a)):(n.isub(t),s.isub(r),a.isub(A))}return{a:s,b:a,gcd:n.iushln(c)}},o.prototype._invmp=function(e){i(0===e.negative),i(!e.isZero());var t=this,n=e.clone();t=0!==t.negative?t.umod(e):t.clone();for(var r,A=new o(1),s=new o(0),a=n.clone();t.cmpn(1)>0&&n.cmpn(1)>0;){for(var c=0,u=1;0==(t.words[0]&u)&&c<26;++c,u<<=1);if(c>0)for(t.iushrn(c);c-- >0;)A.isOdd()&&A.iadd(a),A.iushrn(1);for(var l=0,g=1;0==(n.words[0]&g)&&l<26;++l,g<<=1);if(l>0)for(n.iushrn(l);l-- >0;)s.isOdd()&&s.iadd(a),s.iushrn(1);t.cmp(n)>=0?(t.isub(n),A.isub(s)):(n.isub(t),s.isub(A))}return(r=0===t.cmpn(1)?A:s).cmpn(0)<0&&r.iadd(e),r},o.prototype.gcd=function(e){if(this.isZero())return e.abs();if(e.isZero())return this.abs();var t=this.clone(),n=e.clone();t.negative=0,n.negative=0;for(var i=0;t.isEven()&&n.isEven();i++)t.iushrn(1),n.iushrn(1);for(;;){for(;t.isEven();)t.iushrn(1);for(;n.isEven();)n.iushrn(1);var r=t.cmp(n);if(r<0){var o=t;t=n,n=o}else if(0===r||0===n.cmpn(1))break;t.isub(n)}return n.iushln(i)},o.prototype.invm=function(e){return this.egcd(e).a.umod(e)},o.prototype.isEven=function(){return 0==(1&this.words[0])},o.prototype.isOdd=function(){return 1==(1&this.words[0])},o.prototype.andln=function(e){return this.words[0]&e},o.prototype.bincn=function(e){i("number"==typeof e);var t=e%26,n=(e-t)/26,r=1<>>26,s&=67108863,this.words[A]=s}return 0!==o&&(this.words[A]=o,this.length++),this},o.prototype.isZero=function(){return 1===this.length&&0===this.words[0]},o.prototype.cmpn=function(e){var t,n=e<0;if(0!==this.negative&&!n)return-1;if(0===this.negative&&n)return 1;if(this._strip(),this.length>1)t=1;else{n&&(e=-e),i(e<=67108863,"Number is too big");var r=0|this.words[0];t=r===e?0:re.length)return 1;if(this.length=0;n--){var i=0|this.words[n],r=0|e.words[n];if(i!==r){ir&&(t=1);break}}return t},o.prototype.gtn=function(e){return 1===this.cmpn(e)},o.prototype.gt=function(e){return 1===this.cmp(e)},o.prototype.gten=function(e){return this.cmpn(e)>=0},o.prototype.gte=function(e){return this.cmp(e)>=0},o.prototype.ltn=function(e){return-1===this.cmpn(e)},o.prototype.lt=function(e){return-1===this.cmp(e)},o.prototype.lten=function(e){return this.cmpn(e)<=0},o.prototype.lte=function(e){return this.cmp(e)<=0},o.prototype.eqn=function(e){return 0===this.cmpn(e)},o.prototype.eq=function(e){return 0===this.cmp(e)},o.red=function(e){return new k(e)},o.prototype.toRed=function(e){return i(!this.red,"Already a number in reduction context"),i(0===this.negative,"red works only with positives"),e.convertTo(this)._forceRed(e)},o.prototype.fromRed=function(){return i(this.red,"fromRed works only with numbers in reduction context"),this.red.convertFrom(this)},o.prototype._forceRed=function(e){return this.red=e,this},o.prototype.forceRed=function(e){return i(!this.red,"Already a number in reduction context"),this._forceRed(e)},o.prototype.redAdd=function(e){return i(this.red,"redAdd works only with red numbers"),this.red.add(this,e)},o.prototype.redIAdd=function(e){return i(this.red,"redIAdd works only with red numbers"),this.red.iadd(this,e)},o.prototype.redSub=function(e){return i(this.red,"redSub works only with red numbers"),this.red.sub(this,e)},o.prototype.redISub=function(e){return i(this.red,"redISub works only with red numbers"),this.red.isub(this,e)},o.prototype.redShl=function(e){return i(this.red,"redShl works only with red numbers"),this.red.shl(this,e)},o.prototype.redMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.mul(this,e)},o.prototype.redIMul=function(e){return i(this.red,"redMul works only with red numbers"),this.red._verify2(this,e),this.red.imul(this,e)},o.prototype.redSqr=function(){return i(this.red,"redSqr works only with red numbers"),this.red._verify1(this),this.red.sqr(this)},o.prototype.redISqr=function(){return i(this.red,"redISqr works only with red numbers"),this.red._verify1(this),this.red.isqr(this)},o.prototype.redSqrt=function(){return i(this.red,"redSqrt works only with red numbers"),this.red._verify1(this),this.red.sqrt(this)},o.prototype.redInvm=function(){return i(this.red,"redInvm works only with red numbers"),this.red._verify1(this),this.red.invm(this)},o.prototype.redNeg=function(){return i(this.red,"redNeg works only with red numbers"),this.red._verify1(this),this.red.neg(this)},o.prototype.redPow=function(e){return i(this.red&&!e.red,"redPow(normalNum)"),this.red._verify1(this),this.red.pow(this,e)};var B={k256:null,p224:null,p192:null,p25519:null};function C(e,t){this.name=e,this.p=new o(t,16),this.n=this.p.bitLength(),this.k=new o(1).iushln(this.n).isub(this.p),this.tmp=this._tmp()}function w(){C.call(this,"k256","ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f")}function E(){C.call(this,"p224","ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001")}function Q(){C.call(this,"p192","ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff")}function b(){C.call(this,"25519","7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed")}function k(e){if("string"==typeof e){var t=o._prime(e);this.m=t.p,this.prime=t}else i(e.gtn(1),"modulus must be greater than 1"),this.m=e,this.prime=null}function v(e){k.call(this,e),this.shift=this.m.bitLength(),this.shift%26!=0&&(this.shift+=26-this.shift%26),this.r=new o(1).iushln(this.shift),this.r2=this.imod(this.r.sqr()),this.rinv=this.r._invmp(this.m),this.minv=this.rinv.mul(this.r).isubn(1).div(this.m),this.minv=this.minv.umod(this.r),this.minv=this.r.sub(this.minv)}C.prototype._tmp=function(){var e=new o(null);return e.words=new Array(Math.ceil(this.n/13)),e},C.prototype.ireduce=function(e){var t,n=e;do{this.split(n,this.tmp),t=(n=(n=this.imulK(n)).iadd(this.tmp)).bitLength()}while(t>this.n);var i=t0?n.isub(this.p):void 0!==n.strip?n.strip():n._strip(),n},C.prototype.split=function(e,t){e.iushrn(this.n,0,t)},C.prototype.imulK=function(e){return e.imul(this.k)},r(w,C),w.prototype.split=function(e,t){for(var n=4194303,i=Math.min(e.length,9),r=0;r>>22,o=A}o>>>=22,e.words[r-10]=o,0===o&&e.length>10?e.length-=10:e.length-=9},w.prototype.imulK=function(e){e.words[e.length]=0,e.words[e.length+1]=0,e.length+=2;for(var t=0,n=0;n>>=26,e.words[n]=r,t=i}return 0!==t&&(e.words[e.length++]=t),e},o._prime=function(e){if(B[e])return B[e];var t;if("k256"===e)t=new w;else if("p224"===e)t=new E;else if("p192"===e)t=new Q;else{if("p25519"!==e)throw new Error("Unknown prime "+e);t=new b}return B[e]=t,t},k.prototype._verify1=function(e){i(0===e.negative,"red works only with positives"),i(e.red,"red works only with red numbers")},k.prototype._verify2=function(e,t){i(0==(e.negative|t.negative),"red works only with positives"),i(e.red&&e.red===t.red,"red works only with red numbers")},k.prototype.imod=function(e){return this.prime?this.prime.ireduce(e)._forceRed(this):(u(e,e.umod(this.m)._forceRed(this)),e)},k.prototype.neg=function(e){return e.isZero()?e.clone():this.m.sub(e)._forceRed(this)},k.prototype.add=function(e,t){this._verify2(e,t);var n=e.add(t);return n.cmp(this.m)>=0&&n.isub(this.m),n._forceRed(this)},k.prototype.iadd=function(e,t){this._verify2(e,t);var n=e.iadd(t);return n.cmp(this.m)>=0&&n.isub(this.m),n},k.prototype.sub=function(e,t){this._verify2(e,t);var n=e.sub(t);return n.cmpn(0)<0&&n.iadd(this.m),n._forceRed(this)},k.prototype.isub=function(e,t){this._verify2(e,t);var n=e.isub(t);return n.cmpn(0)<0&&n.iadd(this.m),n},k.prototype.shl=function(e,t){return this._verify1(e),this.imod(e.ushln(t))},k.prototype.imul=function(e,t){return this._verify2(e,t),this.imod(e.imul(t))},k.prototype.mul=function(e,t){return this._verify2(e,t),this.imod(e.mul(t))},k.prototype.isqr=function(e){return this.imul(e,e.clone())},k.prototype.sqr=function(e){return this.mul(e,e)},k.prototype.sqrt=function(e){if(e.isZero())return e.clone();var t=this.m.andln(3);if(i(t%2==1),3===t){var n=this.m.add(new o(1)).iushrn(2);return this.pow(e,n)}for(var r=this.m.subn(1),A=0;!r.isZero()&&0===r.andln(1);)A++,r.iushrn(1);i(!r.isZero());var s=new o(1).toRed(this),a=s.redNeg(),c=this.m.subn(1).iushrn(1),u=this.m.bitLength();for(u=new o(2*u*u).toRed(this);0!==this.pow(u,c).cmp(a);)u.redIAdd(a);for(var l=this.pow(u,r),g=this.pow(e,r.addn(1).iushrn(1)),d=this.pow(e,r),h=A;0!==d.cmp(s);){for(var p=d,f=0;0!==p.cmp(s);f++)p=p.redSqr();i(f=0;i--){for(var c=t.words[i],u=a-1;u>=0;u--){var l=c>>u&1;r!==n[0]&&(r=this.sqr(r)),0!==l||0!==A?(A<<=1,A|=l,(4==++s||0===i&&0===u)&&(r=this.mul(r,n[A]),s=0,A=0)):s=0}a=26}return r},k.prototype.convertTo=function(e){var t=e.umod(this.m);return t===e?t.clone():t},k.prototype.convertFrom=function(e){var t=e.clone();return t.red=null,t},o.mont=function(e){return new v(e)},r(v,k),v.prototype.convertTo=function(e){return this.imod(e.ushln(this.shift))},v.prototype.convertFrom=function(e){var t=this.imod(e.mul(this.rinv));return t.red=null,t},v.prototype.imul=function(e,t){if(e.isZero()||t.isZero())return e.words[0]=0,e.length=1,e;var n=e.imul(t),i=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),r=n.isub(i).iushrn(this.shift),o=r;return r.cmp(this.m)>=0?o=r.isub(this.m):r.cmpn(0)<0&&(o=r.iadd(this.m)),o._forceRed(this)},v.prototype.mul=function(e,t){if(e.isZero()||t.isZero())return new o(0)._forceRed(this);var n=e.mul(t),i=n.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m),r=n.isub(i).iushrn(this.shift),A=r;return r.cmp(this.m)>=0?A=r.isub(this.m):r.cmpn(0)<0&&(A=r.iadd(this.m)),A._forceRed(this)},v.prototype.invm=function(e){return this.imod(e._invmp(this.m).mul(this.r2))._forceRed(this)}}(e=n.nmd(e),this)},48797:function(e,t,n){"use strict";var i=n(55872).Buffer,r=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),A=this&&this.__decorate||function(e,t,n,i){var r,o=arguments.length,A=o<3?t:null===i?i=Object.getOwnPropertyDescriptor(t,n):i;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)A=Reflect.decorate(e,t,n,i);else for(var s=e.length-1;s>=0;s--)(r=e[s])&&(A=(o<3?r(A):o>3?r(t,n,A):r(t,n))||A);return o>3&&A&&Object.defineProperty(t,n,A),A},s=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t},a=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.deserializeUnchecked=t.deserialize=t.serialize=t.BinaryReader=t.BinaryWriter=t.BorshError=t.baseDecode=t.baseEncode=void 0;const c=a(n(39098)),u=a(n(31511)),l=s(n(88752)),g=new("function"!=typeof TextDecoder?l.TextDecoder:TextDecoder)("utf-8",{fatal:!0});t.baseEncode=function(e){return"string"==typeof e&&(e=i.from(e,"utf8")),u.default.encode(i.from(e))},t.baseDecode=function(e){return i.from(u.default.decode(e))};const d=1024;class h extends Error{constructor(e){super(e),this.fieldPath=[],this.originalMessage=e}addToFieldPath(e){this.fieldPath.splice(0,0,e),this.message=this.originalMessage+": "+this.fieldPath.join(".")}}t.BorshError=h;class p{constructor(){this.buf=i.alloc(d),this.length=0}maybeResize(){this.buf.length<16+this.length&&(this.buf=i.concat([this.buf,i.alloc(d)]))}writeU8(e){this.maybeResize(),this.buf.writeUInt8(e,this.length),this.length+=1}writeU16(e){this.maybeResize(),this.buf.writeUInt16LE(e,this.length),this.length+=2}writeU32(e){this.maybeResize(),this.buf.writeUInt32LE(e,this.length),this.length+=4}writeU64(e){this.maybeResize(),this.writeBuffer(i.from(new c.default(e).toArray("le",8)))}writeU128(e){this.maybeResize(),this.writeBuffer(i.from(new c.default(e).toArray("le",16)))}writeU256(e){this.maybeResize(),this.writeBuffer(i.from(new c.default(e).toArray("le",32)))}writeU512(e){this.maybeResize(),this.writeBuffer(i.from(new c.default(e).toArray("le",64)))}writeBuffer(e){this.buf=i.concat([i.from(this.buf.subarray(0,this.length)),e,i.alloc(d)]),this.length+=e.length}writeString(e){this.maybeResize();const t=i.from(e,"utf8");this.writeU32(t.length),this.writeBuffer(t)}writeFixedArray(e){this.writeBuffer(i.from(e))}writeArray(e,t){this.maybeResize(),this.writeU32(e.length);for(const n of e)this.maybeResize(),t(n)}toArray(){return this.buf.subarray(0,this.length)}}function f(e,t,n){const i=n.value;n.value=function(...e){try{return i.apply(this,e)}catch(e){if(e instanceof RangeError){const t=e.code;if(["ERR_BUFFER_OUT_OF_BOUNDS","ERR_OUT_OF_RANGE"].indexOf(t)>=0)throw new h("Reached the end of buffer when deserializing")}throw e}}}t.BinaryWriter=p;class m{constructor(e){this.buf=e,this.offset=0}readU8(){const e=this.buf.readUInt8(this.offset);return this.offset+=1,e}readU16(){const e=this.buf.readUInt16LE(this.offset);return this.offset+=2,e}readU32(){const e=this.buf.readUInt32LE(this.offset);return this.offset+=4,e}readU64(){const e=this.readBuffer(8);return new c.default(e,"le")}readU128(){const e=this.readBuffer(16);return new c.default(e,"le")}readU256(){const e=this.readBuffer(32);return new c.default(e,"le")}readU512(){const e=this.readBuffer(64);return new c.default(e,"le")}readBuffer(e){if(this.offset+e>this.buf.length)throw new h(`Expected buffer length ${e} isn't within bounds`);const t=this.buf.slice(this.offset,this.offset+e);return this.offset+=e,t}readString(){const e=this.readU32(),t=this.readBuffer(e);try{return g.decode(t)}catch(e){throw new h(`Error decoding UTF-8 string: ${e}`)}}readFixedArray(e){return new Uint8Array(this.readBuffer(e))}readArray(e){const t=this.readU32(),n=Array();for(let i=0;i{y(e,t,n,i[0],r)}));else if(void 0!==i.kind)switch(i.kind){case"option":null==n?r.writeU8(0):(r.writeU8(1),y(e,t,n,i.type,r));break;case"map":r.writeU32(n.size),n.forEach(((n,o)=>{y(e,t,o,i.key,r),y(e,t,n,i.value,r)}));break;default:throw new h(`FieldType ${i} unrecognized`)}else B(e,n,r)}catch(e){throw e instanceof h&&e.addToFieldPath(t),e}}function B(e,t,n){if("function"==typeof t.borshSerialize)return void t.borshSerialize(n);const i=e.get(t.constructor);if(!i)throw new h(`Class ${t.constructor.name} is missing in schema`);if("struct"===i.kind)i.fields.map((([i,r])=>{y(e,i,t[i],r,n)}));else{if("enum"!==i.kind)throw new h(`Unexpected schema kind: ${i.kind} for ${t.constructor.name}`);{const r=t[i.field];for(let o=0;oC(e,t,n[0],i)))}if("option"===n.kind)return i.readU8()?C(e,t,n.type,i):void 0;if("map"===n.kind){let r=new Map;const o=i.readU32();for(let A=0;A=i.values.length)throw new h(`Enum index: ${r} is out of range`);const[o,A]=i.values[r];return new t({[o]:C(e,o,A,n)})}throw new h(`Unexpected schema kind: ${i.kind} for ${t.constructor.name}`)}A([f],m.prototype,"readU8",null),A([f],m.prototype,"readU16",null),A([f],m.prototype,"readU32",null),A([f],m.prototype,"readU64",null),A([f],m.prototype,"readU128",null),A([f],m.prototype,"readU256",null),A([f],m.prototype,"readU512",null),A([f],m.prototype,"readString",null),A([f],m.prototype,"readFixedArray",null),A([f],m.prototype,"readArray",null),t.BinaryReader=m,t.serialize=function(e,t,n=p){const i=new n;return B(e,t,i),i.toArray()},t.deserialize=function(e,t,n,i=m){const r=new i(n),o=w(e,t,r);if(r.offset{var i=n(85529);e.exports=i("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz")},11565:(e,t,n)=>{const i=n(17110);e.exports=i("123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz")},84104:(e,t,n)=>{"use strict";var i=n(55872).Buffer;class r{constructor(e,t){if(!Number.isInteger(e))throw new TypeError("span must be an integer");this.span=e,this.property=t}makeDestinationObject(){return{}}decode(e,t){throw new Error("Layout is abstract")}encode(e,t,n){throw new Error("Layout is abstract")}getSpan(e,t){if(0>this.span)throw new RangeError("indeterminate span");return this.span}replicate(e){const t=Object.create(this.constructor.prototype);return Object.assign(t,this),t.property=e,t}fromArray(e){}}function o(e,t){return t.property?e+"["+t.property+"]":e}t.Layout=r,t.nameWithProperty=o,t.bindConstructorLayout=function(e,t){if("function"!=typeof e)throw new TypeError("Class must be constructor");if(e.hasOwnProperty("layout_"))throw new Error("Class is already bound to a layout");if(!(t&&t instanceof r))throw new TypeError("layout must be a Layout");if(t.hasOwnProperty("boundConstructor_"))throw new Error("layout is already bound to a constructor");e.layout_=t,t.boundConstructor_=e,t.makeDestinationObject=()=>new e,Object.defineProperty(e.prototype,"encode",{value:function(e,n){return t.encode(this,e,n)},writable:!0}),Object.defineProperty(e,"decode",{value:function(e,n){return t.decode(e,n)},writable:!0})};class A extends r{isCount(){throw new Error("ExternalLayout is abstract")}}class s extends A{constructor(e,t){if(void 0===e&&(e=1),!Number.isInteger(e)||0>=e)throw new TypeError("elementSpan must be a (positive) integer");super(-1,t),this.elementSpan=e}isCount(){return!0}decode(e,t){void 0===t&&(t=0);const n=e.length-t;return Math.floor(n/this.elementSpan)}encode(e,t,n){return 0}}class a extends A{constructor(e,t,n){if(!(e instanceof r))throw new TypeError("layout must be a Layout");if(void 0===t)t=0;else if(!Number.isInteger(t))throw new TypeError("offset must be integer or undefined");super(e.span,n||e.property),this.layout=e,this.offset=t}isCount(){return this.layout instanceof c||this.layout instanceof u}decode(e,t){return void 0===t&&(t=0),this.layout.decode(e,t+this.offset)}encode(e,t,n){return void 0===n&&(n=0),this.layout.encode(e,t,n+this.offset)}}class c extends r{constructor(e,t){if(super(e,t),6e+i.encode(r,t,n+e)),0);return this.count instanceof A&&this.count.encode(e.length,t,n),r}}class b extends r{constructor(e,t,n){if(!Array.isArray(e)||!e.reduce(((e,t)=>e&&t instanceof r),!0))throw new TypeError("fields must be array of Layout instances");"boolean"==typeof t&&void 0===n&&(n=t,t=void 0);for(const t of e)if(0>t.span&&void 0===t.property)throw new Error("fields cannot contain unnamed variable-length layout");let i=-1;try{i=e.reduce(((e,t)=>e+t.getSpan()),0)}catch(e){}super(i,t),this.fields=e,this.decodePrefixes=!!n}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);let n=0;try{n=this.fields.reduce(((n,i)=>{const r=i.getSpan(e,t);return t+=r,n+r}),0)}catch(e){throw new RangeError("indeterminate span")}return n}decode(e,t){void 0===t&&(t=0);const n=this.makeDestinationObject();for(const i of this.fields)if(void 0!==i.property&&(n[i.property]=i.decode(e,t)),t+=i.getSpan(e,t),this.decodePrefixes&&e.length===t)break;return n}encode(e,t,n){void 0===n&&(n=0);const i=n;let r=0,o=0;for(const i of this.fields){let A=i.span;if(o=0A&&(A=i.getSpan(t,n)))}r=n,n+=A}return r+o-i}fromArray(e){const t=this.makeDestinationObject();for(const n of this.fields)void 0!==n.property&&0n.span?t=-1:0<=t&&(t+=n.span)}}}class k{constructor(e){this.property=e}decode(){throw new Error("UnionDiscriminator is abstract")}encode(){throw new Error("UnionDiscriminator is abstract")}}class v extends k{constructor(e,t){if(!(e instanceof A&&e.isCount()))throw new TypeError("layout must be an unsigned integer ExternalLayout");super(t||e.property||"variant"),this.layout=e}decode(e,t){return this.layout.decode(e,t)}encode(e,t,n){return this.layout.encode(e,t,n)}}class S extends r{constructor(e,t,n){const i=e instanceof c||e instanceof u;if(i)e=new v(new a(e));else if(e instanceof A&&e.isCount())e=new v(e);else if(!(e instanceof k))throw new TypeError("discr must be a UnionDiscriminator or an unsigned integer layout");if(void 0===t&&(t=null),!(null===t||t instanceof r))throw new TypeError("defaultLayout must be null or a Layout");if(null!==t){if(0>t.span)throw new Error("defaultLayout must have constant span");void 0===t.property&&(t=t.replicate("content"))}let o=-1;t&&(o=t.span,0<=o&&i&&(o+=e.layout.span)),super(o,n),this.discriminator=e,this.usesPrefixDiscriminator=i,this.defaultLayout=t,this.registry={};let s=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(e){return s(e)},this.configGetSourceVariant=function(e){s=e.bind(this)}}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);const n=this.getVariant(e,t);if(!n)throw new Error("unable to determine span for unrecognized variant");return n.getSpan(e,t)}defaultGetSourceVariant(e){if(e.hasOwnProperty(this.discriminator.property)){if(this.defaultLayout&&e.hasOwnProperty(this.defaultLayout.property))return;const t=this.registry[e[this.discriminator.property]];if(t&&(!t.layout||e.hasOwnProperty(t.property)))return t}else for(const t in this.registry){const n=this.registry[t];if(e.hasOwnProperty(n.property))return n}throw new Error("unable to infer src variant")}decode(e,t){let n;void 0===t&&(t=0);const i=this.discriminator,r=i.decode(e,t);let o=this.registry[r];if(void 0===o){let A=0;o=this.defaultLayout,this.usesPrefixDiscriminator&&(A=i.layout.span),n=this.makeDestinationObject(),n[i.property]=r,n[o.property]=this.defaultLayout.decode(e,t+A)}else n=o.decode(e,t);return n}encode(e,t,n){void 0===n&&(n=0);const i=this.getSourceVariant(e);if(void 0===i){const i=this.discriminator,r=this.defaultLayout;let o=0;return this.usesPrefixDiscriminator&&(o=i.layout.span),i.encode(e[i.property],t,n),o+r.encode(e[r.property],t,n+o)}return i.encode(e,t,n)}addVariant(e,t,n){const i=new M(this,e,t,n);return this.registry[e]=i,i}getVariant(e,t){let n=e;return i.isBuffer(e)&&(void 0===t&&(t=0),n=this.discriminator.decode(e,t)),this.registry[n]}}class M extends r{constructor(e,t,n,i){if(!(e instanceof S))throw new TypeError("union must be a Union");if(!Number.isInteger(t)||0>t)throw new TypeError("variant must be a (non-negative) integer");if("string"==typeof n&&void 0===i&&(i=n,n=null),n){if(!(n instanceof r))throw new TypeError("layout must be a Layout");if(null!==e.defaultLayout&&0<=n.span&&n.span>e.defaultLayout.span)throw new Error("variant span exceeds span of containing union");if("string"!=typeof i)throw new TypeError("variant must have a String property")}let o=e.span;0>e.span&&(o=n?n.span:0,0<=o&&e.usesPrefixDiscriminator&&(o+=e.discriminator.layout.span)),super(o,i),this.union=e,this.variant=t,this.layout=n||null}getSpan(e,t){if(0<=this.span)return this.span;void 0===t&&(t=0);let n=0;return this.union.usesPrefixDiscriminator&&(n=this.union.discriminator.layout.span),n+this.layout.getSpan(e,t+n)}decode(e,t){const n=this.makeDestinationObject();if(void 0===t&&(t=0),this!==this.union.getVariant(e,t))throw new Error("variant mismatch");let i=0;return this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout?n[this.property]=this.layout.decode(e,t+i):this.property?n[this.property]=!0:this.union.usesPrefixDiscriminator&&(n[this.union.discriminator.property]=this.variant),n}encode(e,t,n){void 0===n&&(n=0);let i=0;if(this.union.usesPrefixDiscriminator&&(i=this.union.discriminator.layout.span),this.layout&&!e.hasOwnProperty(this.property))throw new TypeError("variant lacks property "+this.property);this.union.discriminator.encode(this.variant,t,n);let r=i;if(this.layout&&(this.layout.encode(e[this.property],t,n+i),r+=this.layout.getSpan(t,n+i),0<=this.union.span&&r>this.union.span))throw new Error("encoded variant overruns containing union");return r}fromArray(e){if(this.layout)return this.layout.fromArray(e)}}function D(e){return 0>e&&(e+=4294967296),e}class N extends r{constructor(e,t,n){if(!(e instanceof c||e instanceof u))throw new TypeError("word must be a UInt or UIntBE layout");if("string"==typeof t&&void 0===n&&(n=t,t=void 0),4=t)throw new TypeError("bits must be positive integer");const i=8*e.span,r=e.fields.reduce(((e,t)=>e+t.bits),0);if(t+r>i)throw new Error("bits too long for span remainder ("+(i-r)+" of "+i+" remain)");this.container=e,this.bits=t,this.valueMask=(1<>>this.start}encode(e){if(!Number.isInteger(e)||e!==D(e&this.valueMask))throw new TypeError(o("BitField.encode",this)+" value must be integer not exceeding "+this.valueMask);const t=this.container._packedGetValue(),n=D(e<n&&(n=this.length.decode(e,t)),n}decode(e,t){void 0===t&&(t=0);let n=this.span;return 0>n&&(n=this.length.decode(e,t)),e.slice(t,t+n)}encode(e,t,n){let r=this.length;if(this.length instanceof A&&(r=e.length),!i.isBuffer(e)||r!==e.length)throw new TypeError(o("Blob.encode",this)+" requires (length "+r+") Buffer as src");if(n+r>t.length)throw new RangeError("encoding overruns Buffer");return t.write(e.toString("hex"),n,r,"hex"),this.length instanceof A&&this.length.encode(r,t,n),r}}class F extends r{constructor(e){super(-1,e)}getSpan(e,t){if(!i.isBuffer(e))throw new TypeError("b must be a Buffer");void 0===t&&(t=0);let n=t;for(;nt.length)throw new RangeError("encoding overruns Buffer");return r.copy(t,n),t[n+o]=0,o+1}}class R extends r{constructor(e,t){if("string"==typeof e&&void 0===t&&(t=e,e=void 0),void 0===e)e=-1;else if(!Number.isInteger(e))throw new TypeError("maxSpan must be an integer");super(-1,t),this.maxSpan=e}getSpan(e,t){if(!i.isBuffer(e))throw new TypeError("b must be a Buffer");return void 0===t&&(t=0),e.length-t}decode(e,t,n){void 0===t&&(t=0);let i=this.getSpan(e,t);if(0<=this.maxSpan&&this.maxSpant.length)throw new RangeError("encoding overruns Buffer");return r.copy(t,n),o}}class G extends r{constructor(e,t){super(0,t),this.value=e}decode(e,t,n){return this.value}encode(e,t,n){return 0}}t.ExternalLayout=A,t.GreedyCount=s,t.OffsetLayout=a,t.UInt=c,t.UIntBE=u,t.Int=l,t.IntBE=g,t.Float=B,t.FloatBE=C,t.Double=w,t.DoubleBE=E,t.Sequence=Q,t.Structure=b,t.UnionDiscriminator=k,t.UnionLayoutDiscriminator=v,t.Union=S,t.VariantLayout=M,t.BitStructure=N,t.BitField=T,t.Boolean=P,t.Blob=O,t.CString=F,t.UTF8=R,t.Constant=G,t.greedy=(e,t)=>new s(e,t),t.offset=(e,t,n)=>new a(e,t,n),t.u8=e=>new c(1,e),t.u16=e=>new c(2,e),t.u24=e=>new c(3,e),t.u32=e=>new c(4,e),t.u40=e=>new c(5,e),t.u48=e=>new c(6,e),t.nu64=e=>new f(e),t.u16be=e=>new u(2,e),t.u24be=e=>new u(3,e),t.u32be=e=>new u(4,e),t.u40be=e=>new u(5,e),t.u48be=e=>new u(6,e),t.nu64be=e=>new m(e),t.s8=e=>new l(1,e),t.s16=e=>new l(2,e),t.s24=e=>new l(3,e),t.s32=e=>new l(4,e),t.s40=e=>new l(5,e),t.s48=e=>new l(6,e),t.ns64=e=>new I(e),t.s16be=e=>new g(2,e),t.s24be=e=>new g(3,e),t.s32be=e=>new g(4,e),t.s40be=e=>new g(5,e),t.s48be=e=>new g(6,e),t.ns64be=e=>new y(e),t.f32=e=>new B(e),t.f32be=e=>new C(e),t.f64=e=>new w(e),t.f64be=e=>new E(e),t.struct=(e,t,n)=>new b(e,t,n),t.bits=(e,t,n)=>new N(e,t,n),t.seq=(e,t,n)=>new Q(e,t,n),t.union=(e,t,n)=>new S(e,t,n),t.unionLayoutDiscriminator=(e,t)=>new v(e,t),t.blob=(e,t)=>new O(e,t),t.cstr=e=>new F(e),t.utf8=(e,t)=>new R(e,t),t.const=(e,t)=>new G(e,t)},75858:(e,t,n)=>{"use strict";var i=n(49500);const r=n(65415),o=n(30551),A="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.lW=c,t.h2=50;const s=2147483647;function a(e){if(e>s)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,c.prototype),t}function c(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return g(e)}return u(e,t,n)}function u(e,t,n){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!c.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const n=0|f(e,t);let i=a(n);const r=i.write(e,t);return r!==n&&(i=i.slice(0,r)),i}(e,t);if(ArrayBuffer.isView(e))return function(e){if(H(e,Uint8Array)){const t=new Uint8Array(e);return h(t.buffer,t.byteOffset,t.byteLength)}return d(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(H(e,ArrayBuffer)||e&&H(e.buffer,ArrayBuffer))return h(e,t,n);if("undefined"!=typeof SharedArrayBuffer&&(H(e,SharedArrayBuffer)||e&&H(e.buffer,SharedArrayBuffer)))return h(e,t,n);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const i=e.valueOf&&e.valueOf();if(null!=i&&i!==e)return c.from(i,t,n);const r=function(e){if(c.isBuffer(e)){const t=0|p(e.length),n=a(t);return 0===n.length||e.copy(n,0,0,t),n}return void 0!==e.length?"number"!=typeof e.length||V(e.length)?a(0):d(e):"Buffer"===e.type&&Array.isArray(e.data)?d(e.data):void 0}(e);if(r)return r;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return c.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function l(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function g(e){return l(e),a(e<0?0:0|p(e))}function d(e){const t=e.length<0?0:0|p(e.length),n=a(t);for(let i=0;i=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|e}function f(e,t){if(c.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||H(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const n=e.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===n)return 0;let r=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return q(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return Z(e).length;default:if(r)return i?-1:q(e).length;t=(""+t).toLowerCase(),r=!0}}function m(e,t,n){let i=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return N(this,t,n);case"utf8":case"utf-8":return v(this,t,n);case"ascii":return M(this,t,n);case"latin1":case"binary":return D(this,t,n);case"base64":return k(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,n);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),i=!0}}function I(e,t,n){const i=e[t];e[t]=e[n],e[n]=i}function y(e,t,n,i,r){if(0===e.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),V(n=+n)&&(n=r?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(r)return-1;n=e.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof t&&(t=c.from(t,i)),c.isBuffer(t))return 0===t.length?-1:B(e,t,n,i,r);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):B(e,[t],n,i,r);throw new TypeError("val must be string, number or Buffer")}function B(e,t,n,i,r){let o,A=1,s=e.length,a=t.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||t.length<2)return-1;A=2,s/=2,a/=2,n/=2}function c(e,t){return 1===A?e[t]:e.readUInt16BE(t*A)}if(r){let i=-1;for(o=n;os&&(n=s-a),o=n;o>=0;o--){let n=!0;for(let i=0;ir&&(i=r):i=r;const o=t.length;let A;for(i>o/2&&(i=o/2),A=0;A>8,r=n%256,o.push(r),o.push(i);return o}(t,e.length-n),e,n,i)}function k(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function v(e,t,n){n=Math.min(e.length,n);const i=[];let r=t;for(;r239?4:t>223?3:t>191?2:1;if(r+A<=n){let n,i,s,a;switch(A){case 1:t<128&&(o=t);break;case 2:n=e[r+1],128==(192&n)&&(a=(31&t)<<6|63&n,a>127&&(o=a));break;case 3:n=e[r+1],i=e[r+2],128==(192&n)&&128==(192&i)&&(a=(15&t)<<12|(63&n)<<6|63&i,a>2047&&(a<55296||a>57343)&&(o=a));break;case 4:n=e[r+1],i=e[r+2],s=e[r+3],128==(192&n)&&128==(192&i)&&128==(192&s)&&(a=(15&t)<<18|(63&n)<<12|(63&i)<<6|63&s,a>65535&&a<1114112&&(o=a))}}null===o?(o=65533,A=1):o>65535&&(o-=65536,i.push(o>>>10&1023|55296),o=56320|1023&o),i.push(o),r+=A}return function(e){const t=e.length;if(t<=S)return String.fromCharCode.apply(String,e);let n="",i=0;for(;ii.length?(c.isBuffer(t)||(t=c.from(t)),t.copy(i,r)):Uint8Array.prototype.set.call(i,t,r);else{if(!c.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(i,r)}r+=t.length}return i},c.byteLength=f,c.prototype._isBuffer=!0,c.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tn&&(e+=" ... "),""},A&&(c.prototype[A]=c.prototype.inspect),c.prototype.compare=function(e,t,n,i,r){if(H(e,Uint8Array)&&(e=c.from(e,e.offset,e.byteLength)),!c.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),t<0||n>e.length||i<0||r>this.length)throw new RangeError("out of range index");if(i>=r&&t>=n)return 0;if(i>=r)return-1;if(t>=n)return 1;if(this===e)return 0;let o=(r>>>=0)-(i>>>=0),A=(n>>>=0)-(t>>>=0);const s=Math.min(o,A),a=this.slice(i,r),u=e.slice(t,n);for(let e=0;e>>=0,isFinite(n)?(n>>>=0,void 0===i&&(i="utf8")):(i=n,n=void 0)}const r=this.length-t;if((void 0===n||n>r)&&(n=r),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let o=!1;for(;;)switch(i){case"hex":return C(this,e,t,n);case"utf8":case"utf-8":return w(this,e,t,n);case"ascii":case"latin1":case"binary":return E(this,e,t,n);case"base64":return Q(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return b(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const S=4096;function M(e,t,n){let i="";n=Math.min(e.length,n);for(let r=t;ri)&&(n=i);let r="";for(let i=t;in)throw new RangeError("Trying to access beyond buffer length")}function O(e,t,n,i,r,o){if(!c.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>r||te.length)throw new RangeError("Index out of range")}function F(e,t,n,i,r){Y(t,i,r,e,n,7);let o=Number(t&BigInt(4294967295));e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o;let A=Number(t>>BigInt(32)&BigInt(4294967295));return e[n++]=A,A>>=8,e[n++]=A,A>>=8,e[n++]=A,A>>=8,e[n++]=A,n}function R(e,t,n,i,r){Y(t,i,r,e,n,7);let o=Number(t&BigInt(4294967295));e[n+7]=o,o>>=8,e[n+6]=o,o>>=8,e[n+5]=o,o>>=8,e[n+4]=o;let A=Number(t>>BigInt(32)&BigInt(4294967295));return e[n+3]=A,A>>=8,e[n+2]=A,A>>=8,e[n+1]=A,A>>=8,e[n]=A,n+8}function G(e,t,n,i,r,o){if(n+i>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function x(e,t,n,i,r){return t=+t,n>>>=0,r||G(e,0,n,4),o.write(e,t,n,i,23,4),n+4}function U(e,t,n,i,r){return t=+t,n>>>=0,r||G(e,0,n,8),o.write(e,t,n,i,52,8),n+8}c.prototype.slice=function(e,t){const n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,n||P(e,t,this.length);let i=this[e],r=1,o=0;for(;++o>>=0,t>>>=0,n||P(e,t,this.length);let i=this[e+--t],r=1;for(;t>0&&(r*=256);)i+=this[e+--t]*r;return i},c.prototype.readUint8=c.prototype.readUInt8=function(e,t){return e>>>=0,t||P(e,1,this.length),this[e]},c.prototype.readUint16LE=c.prototype.readUInt16LE=function(e,t){return e>>>=0,t||P(e,2,this.length),this[e]|this[e+1]<<8},c.prototype.readUint16BE=c.prototype.readUInt16BE=function(e,t){return e>>>=0,t||P(e,2,this.length),this[e]<<8|this[e+1]},c.prototype.readUint32LE=c.prototype.readUInt32LE=function(e,t){return e>>>=0,t||P(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},c.prototype.readUint32BE=c.prototype.readUInt32BE=function(e,t){return e>>>=0,t||P(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},c.prototype.readBigUInt64LE=$((function(e){j(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||W(e,this.length-8);const i=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,r=this[++e]+256*this[++e]+65536*this[++e]+n*2**24;return BigInt(i)+(BigInt(r)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||W(e,this.length-8);const i=t*2**24+65536*this[++e]+256*this[++e]+this[++e],r=this[++e]*2**24+65536*this[++e]+256*this[++e]+n;return(BigInt(i)<>>=0,t>>>=0,n||P(e,t,this.length);let i=this[e],r=1,o=0;for(;++o=r&&(i-=Math.pow(2,8*t)),i},c.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||P(e,t,this.length);let i=t,r=1,o=this[e+--i];for(;i>0&&(r*=256);)o+=this[e+--i]*r;return r*=128,o>=r&&(o-=Math.pow(2,8*t)),o},c.prototype.readInt8=function(e,t){return e>>>=0,t||P(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},c.prototype.readInt16LE=function(e,t){e>>>=0,t||P(e,2,this.length);const n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},c.prototype.readInt16BE=function(e,t){e>>>=0,t||P(e,2,this.length);const n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},c.prototype.readInt32LE=function(e,t){return e>>>=0,t||P(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},c.prototype.readInt32BE=function(e,t){return e>>>=0,t||P(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},c.prototype.readBigInt64LE=$((function(e){j(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||W(e,this.length-8);const i=this[e+4]+256*this[e+5]+65536*this[e+6]+(n<<24);return(BigInt(i)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||W(e,this.length-8);const i=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(i)<>>=0,t||P(e,4,this.length),o.read(this,e,!0,23,4)},c.prototype.readFloatBE=function(e,t){return e>>>=0,t||P(e,4,this.length),o.read(this,e,!1,23,4)},c.prototype.readDoubleLE=function(e,t){return e>>>=0,t||P(e,8,this.length),o.read(this,e,!0,52,8)},c.prototype.readDoubleBE=function(e,t){return e>>>=0,t||P(e,8,this.length),o.read(this,e,!1,52,8)},c.prototype.writeUintLE=c.prototype.writeUIntLE=function(e,t,n,i){e=+e,t>>>=0,n>>>=0,i||O(this,e,t,n,Math.pow(2,8*n)-1,0);let r=1,o=0;for(this[t]=255&e;++o>>=0,n>>>=0,i||O(this,e,t,n,Math.pow(2,8*n)-1,0);let r=n-1,o=1;for(this[t+r]=255&e;--r>=0&&(o*=256);)this[t+r]=e/o&255;return t+n},c.prototype.writeUint8=c.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,1,255,0),this[t]=255&e,t+1},c.prototype.writeUint16LE=c.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},c.prototype.writeUint16BE=c.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},c.prototype.writeUint32LE=c.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},c.prototype.writeUint32BE=c.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},c.prototype.writeBigUInt64LE=$((function(e,t=0){return F(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),c.prototype.writeBigUInt64BE=$((function(e,t=0){return R(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),c.prototype.writeIntLE=function(e,t,n,i){if(e=+e,t>>>=0,!i){const i=Math.pow(2,8*n-1);O(this,e,t,n,i-1,-i)}let r=0,o=1,A=0;for(this[t]=255&e;++r>0)-A&255;return t+n},c.prototype.writeIntBE=function(e,t,n,i){if(e=+e,t>>>=0,!i){const i=Math.pow(2,8*n-1);O(this,e,t,n,i-1,-i)}let r=n-1,o=1,A=0;for(this[t+r]=255&e;--r>=0&&(o*=256);)e<0&&0===A&&0!==this[t+r+1]&&(A=1),this[t+r]=(e/o>>0)-A&255;return t+n},c.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},c.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},c.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},c.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},c.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},c.prototype.writeBigInt64LE=$((function(e,t=0){return F(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),c.prototype.writeBigInt64BE=$((function(e,t=0){return R(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),c.prototype.writeFloatLE=function(e,t,n){return x(this,e,t,!0,n)},c.prototype.writeFloatBE=function(e,t,n){return x(this,e,t,!1,n)},c.prototype.writeDoubleLE=function(e,t,n){return U(this,e,t,!0,n)},c.prototype.writeDoubleBE=function(e,t,n){return U(this,e,t,!1,n)},c.prototype.copy=function(e,t,n,i){if(!c.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(r=t;r=i+4;n-=3)t=`_${e.slice(n-3,n)}${t}`;return`${e.slice(0,n)}${t}`}function Y(e,t,n,i,r,o){if(e>n||e3?0===t||t===BigInt(0)?`>= 0${i} and < 2${i} ** ${8*(o+1)}${i}`:`>= -(2${i} ** ${8*(o+1)-1}${i}) and < 2 ** ${8*(o+1)-1}${i}`:`>= ${t}${i} and <= ${n}${i}`,new _.ERR_OUT_OF_RANGE("value",r,e)}!function(e,t,n){j(t,"offset"),void 0!==e[t]&&void 0!==e[t+n]||W(t,e.length-(n+1))}(i,r,o)}function j(e,t){if("number"!=typeof e)throw new _.ERR_INVALID_ARG_TYPE(t,"number",e)}function W(e,t,n){if(Math.floor(e)!==e)throw j(e,n),new _.ERR_OUT_OF_RANGE(n||"offset","an integer",e);if(t<0)throw new _.ERR_BUFFER_OUT_OF_BOUNDS;throw new _.ERR_OUT_OF_RANGE(n||"offset",`>= ${n?1:0} and <= ${t}`,e)}L("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),L("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),L("ERR_OUT_OF_RANGE",(function(e,t,n){let i=`The value of "${e}" is out of range.`,r=n;return Number.isInteger(n)&&Math.abs(n)>2**32?r=K(String(n)):"bigint"==typeof n&&(r=String(n),(n>BigInt(2)**BigInt(32)||n<-(BigInt(2)**BigInt(32)))&&(r=K(r)),r+="n"),i+=` It must be ${t}. Received ${r}`,i}),RangeError);const J=/[^+/0-9A-Za-z-_]/g;function q(e,t){let n;t=t||1/0;const i=e.length;let r=null;const o=[];for(let A=0;A55295&&n<57344){if(!r){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(A+1===i){(t-=3)>-1&&o.push(239,191,189);continue}r=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(t-=3)>-1&&o.push(239,191,189);if(r=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function Z(e){return r.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(J,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function z(e,t,n,i){let r;for(r=0;r=t.length||r>=e.length);++r)t[r+n]=e[r];return r}function H(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function V(e){return e!=e}const X=function(){const e="0123456789abcdef",t=new Array(256);for(let n=0;n<16;++n){const i=16*n;for(let r=0;r<16;++r)t[i+r]=e[n]+e[r]}return t}();function $(e){return"undefined"==typeof BigInt?ee:e}function ee(){throw new Error("BigInt not supported")}},55872:(e,t,n)=>{"use strict";var i=n(49500);const r=n(65415),o=n(30551),A="function"==typeof Symbol&&"function"==typeof Symbol.for?Symbol.for("nodejs.util.inspect.custom"):null;t.Buffer=c,t.SlowBuffer=function(e){return+e!=e&&(e=0),c.alloc(+e)},t.INSPECT_MAX_BYTES=50;const s=2147483647;function a(e){if(e>s)throw new RangeError('The value "'+e+'" is invalid for option "size"');const t=new Uint8Array(e);return Object.setPrototypeOf(t,c.prototype),t}function c(e,t,n){if("number"==typeof e){if("string"==typeof t)throw new TypeError('The "string" argument must be of type string. Received type number');return g(e)}return u(e,t,n)}function u(e,t,n){if("string"==typeof e)return function(e,t){if("string"==typeof t&&""!==t||(t="utf8"),!c.isEncoding(t))throw new TypeError("Unknown encoding: "+t);const n=0|f(e,t);let i=a(n);const r=i.write(e,t);return r!==n&&(i=i.slice(0,r)),i}(e,t);if(ArrayBuffer.isView(e))return function(e){if(H(e,Uint8Array)){const t=new Uint8Array(e);return h(t.buffer,t.byteOffset,t.byteLength)}return d(e)}(e);if(null==e)throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e);if(H(e,ArrayBuffer)||e&&H(e.buffer,ArrayBuffer))return h(e,t,n);if("undefined"!=typeof SharedArrayBuffer&&(H(e,SharedArrayBuffer)||e&&H(e.buffer,SharedArrayBuffer)))return h(e,t,n);if("number"==typeof e)throw new TypeError('The "value" argument must not be of type number. Received type number');const i=e.valueOf&&e.valueOf();if(null!=i&&i!==e)return c.from(i,t,n);const r=function(e){if(c.isBuffer(e)){const t=0|p(e.length),n=a(t);return 0===n.length||e.copy(n,0,0,t),n}return void 0!==e.length?"number"!=typeof e.length||V(e.length)?a(0):d(e):"Buffer"===e.type&&Array.isArray(e.data)?d(e.data):void 0}(e);if(r)return r;if("undefined"!=typeof Symbol&&null!=Symbol.toPrimitive&&"function"==typeof e[Symbol.toPrimitive])return c.from(e[Symbol.toPrimitive]("string"),t,n);throw new TypeError("The first argument must be one of type string, Buffer, ArrayBuffer, Array, or Array-like Object. Received type "+typeof e)}function l(e){if("number"!=typeof e)throw new TypeError('"size" argument must be of type number');if(e<0)throw new RangeError('The value "'+e+'" is invalid for option "size"')}function g(e){return l(e),a(e<0?0:0|p(e))}function d(e){const t=e.length<0?0:0|p(e.length),n=a(t);for(let i=0;i=s)throw new RangeError("Attempt to allocate Buffer larger than maximum size: 0x"+s.toString(16)+" bytes");return 0|e}function f(e,t){if(c.isBuffer(e))return e.length;if(ArrayBuffer.isView(e)||H(e,ArrayBuffer))return e.byteLength;if("string"!=typeof e)throw new TypeError('The "string" argument must be one of type string, Buffer, or ArrayBuffer. Received type '+typeof e);const n=e.length,i=arguments.length>2&&!0===arguments[2];if(!i&&0===n)return 0;let r=!1;for(;;)switch(t){case"ascii":case"latin1":case"binary":return n;case"utf8":case"utf-8":return q(e).length;case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return 2*n;case"hex":return n>>>1;case"base64":return Z(e).length;default:if(r)return i?-1:q(e).length;t=(""+t).toLowerCase(),r=!0}}function m(e,t,n){let i=!1;if((void 0===t||t<0)&&(t=0),t>this.length)return"";if((void 0===n||n>this.length)&&(n=this.length),n<=0)return"";if((n>>>=0)<=(t>>>=0))return"";for(e||(e="utf8");;)switch(e){case"hex":return N(this,t,n);case"utf8":case"utf-8":return v(this,t,n);case"ascii":return M(this,t,n);case"latin1":case"binary":return D(this,t,n);case"base64":return k(this,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return T(this,t,n);default:if(i)throw new TypeError("Unknown encoding: "+e);e=(e+"").toLowerCase(),i=!0}}function I(e,t,n){const i=e[t];e[t]=e[n],e[n]=i}function y(e,t,n,i,r){if(0===e.length)return-1;if("string"==typeof n?(i=n,n=0):n>2147483647?n=2147483647:n<-2147483648&&(n=-2147483648),V(n=+n)&&(n=r?0:e.length-1),n<0&&(n=e.length+n),n>=e.length){if(r)return-1;n=e.length-1}else if(n<0){if(!r)return-1;n=0}if("string"==typeof t&&(t=c.from(t,i)),c.isBuffer(t))return 0===t.length?-1:B(e,t,n,i,r);if("number"==typeof t)return t&=255,"function"==typeof Uint8Array.prototype.indexOf?r?Uint8Array.prototype.indexOf.call(e,t,n):Uint8Array.prototype.lastIndexOf.call(e,t,n):B(e,[t],n,i,r);throw new TypeError("val must be string, number or Buffer")}function B(e,t,n,i,r){let o,A=1,s=e.length,a=t.length;if(void 0!==i&&("ucs2"===(i=String(i).toLowerCase())||"ucs-2"===i||"utf16le"===i||"utf-16le"===i)){if(e.length<2||t.length<2)return-1;A=2,s/=2,a/=2,n/=2}function c(e,t){return 1===A?e[t]:e.readUInt16BE(t*A)}if(r){let i=-1;for(o=n;os&&(n=s-a),o=n;o>=0;o--){let n=!0;for(let i=0;ir&&(i=r):i=r;const o=t.length;let A;for(i>o/2&&(i=o/2),A=0;A>8,r=n%256,o.push(r),o.push(i);return o}(t,e.length-n),e,n,i)}function k(e,t,n){return 0===t&&n===e.length?r.fromByteArray(e):r.fromByteArray(e.slice(t,n))}function v(e,t,n){n=Math.min(e.length,n);const i=[];let r=t;for(;r239?4:t>223?3:t>191?2:1;if(r+A<=n){let n,i,s,a;switch(A){case 1:t<128&&(o=t);break;case 2:n=e[r+1],128==(192&n)&&(a=(31&t)<<6|63&n,a>127&&(o=a));break;case 3:n=e[r+1],i=e[r+2],128==(192&n)&&128==(192&i)&&(a=(15&t)<<12|(63&n)<<6|63&i,a>2047&&(a<55296||a>57343)&&(o=a));break;case 4:n=e[r+1],i=e[r+2],s=e[r+3],128==(192&n)&&128==(192&i)&&128==(192&s)&&(a=(15&t)<<18|(63&n)<<12|(63&i)<<6|63&s,a>65535&&a<1114112&&(o=a))}}null===o?(o=65533,A=1):o>65535&&(o-=65536,i.push(o>>>10&1023|55296),o=56320|1023&o),i.push(o),r+=A}return function(e){const t=e.length;if(t<=S)return String.fromCharCode.apply(String,e);let n="",i=0;for(;ii.length?(c.isBuffer(t)||(t=c.from(t)),t.copy(i,r)):Uint8Array.prototype.set.call(i,t,r);else{if(!c.isBuffer(t))throw new TypeError('"list" argument must be an Array of Buffers');t.copy(i,r)}r+=t.length}return i},c.byteLength=f,c.prototype._isBuffer=!0,c.prototype.swap16=function(){const e=this.length;if(e%2!=0)throw new RangeError("Buffer size must be a multiple of 16-bits");for(let t=0;tn&&(e+=" ... "),""},A&&(c.prototype[A]=c.prototype.inspect),c.prototype.compare=function(e,t,n,i,r){if(H(e,Uint8Array)&&(e=c.from(e,e.offset,e.byteLength)),!c.isBuffer(e))throw new TypeError('The "target" argument must be one of type Buffer or Uint8Array. Received type '+typeof e);if(void 0===t&&(t=0),void 0===n&&(n=e?e.length:0),void 0===i&&(i=0),void 0===r&&(r=this.length),t<0||n>e.length||i<0||r>this.length)throw new RangeError("out of range index");if(i>=r&&t>=n)return 0;if(i>=r)return-1;if(t>=n)return 1;if(this===e)return 0;let o=(r>>>=0)-(i>>>=0),A=(n>>>=0)-(t>>>=0);const s=Math.min(o,A),a=this.slice(i,r),u=e.slice(t,n);for(let e=0;e>>=0,isFinite(n)?(n>>>=0,void 0===i&&(i="utf8")):(i=n,n=void 0)}const r=this.length-t;if((void 0===n||n>r)&&(n=r),e.length>0&&(n<0||t<0)||t>this.length)throw new RangeError("Attempt to write outside buffer bounds");i||(i="utf8");let o=!1;for(;;)switch(i){case"hex":return C(this,e,t,n);case"utf8":case"utf-8":return w(this,e,t,n);case"ascii":case"latin1":case"binary":return E(this,e,t,n);case"base64":return Q(this,e,t,n);case"ucs2":case"ucs-2":case"utf16le":case"utf-16le":return b(this,e,t,n);default:if(o)throw new TypeError("Unknown encoding: "+i);i=(""+i).toLowerCase(),o=!0}},c.prototype.toJSON=function(){return{type:"Buffer",data:Array.prototype.slice.call(this._arr||this,0)}};const S=4096;function M(e,t,n){let i="";n=Math.min(e.length,n);for(let r=t;ri)&&(n=i);let r="";for(let i=t;in)throw new RangeError("Trying to access beyond buffer length")}function O(e,t,n,i,r,o){if(!c.isBuffer(e))throw new TypeError('"buffer" argument must be a Buffer instance');if(t>r||te.length)throw new RangeError("Index out of range")}function F(e,t,n,i,r){Y(t,i,r,e,n,7);let o=Number(t&BigInt(4294967295));e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o,o>>=8,e[n++]=o;let A=Number(t>>BigInt(32)&BigInt(4294967295));return e[n++]=A,A>>=8,e[n++]=A,A>>=8,e[n++]=A,A>>=8,e[n++]=A,n}function R(e,t,n,i,r){Y(t,i,r,e,n,7);let o=Number(t&BigInt(4294967295));e[n+7]=o,o>>=8,e[n+6]=o,o>>=8,e[n+5]=o,o>>=8,e[n+4]=o;let A=Number(t>>BigInt(32)&BigInt(4294967295));return e[n+3]=A,A>>=8,e[n+2]=A,A>>=8,e[n+1]=A,A>>=8,e[n]=A,n+8}function G(e,t,n,i,r,o){if(n+i>e.length)throw new RangeError("Index out of range");if(n<0)throw new RangeError("Index out of range")}function x(e,t,n,i,r){return t=+t,n>>>=0,r||G(e,0,n,4),o.write(e,t,n,i,23,4),n+4}function U(e,t,n,i,r){return t=+t,n>>>=0,r||G(e,0,n,8),o.write(e,t,n,i,52,8),n+8}c.prototype.slice=function(e,t){const n=this.length;(e=~~e)<0?(e+=n)<0&&(e=0):e>n&&(e=n),(t=void 0===t?n:~~t)<0?(t+=n)<0&&(t=0):t>n&&(t=n),t>>=0,t>>>=0,n||P(e,t,this.length);let i=this[e],r=1,o=0;for(;++o>>=0,t>>>=0,n||P(e,t,this.length);let i=this[e+--t],r=1;for(;t>0&&(r*=256);)i+=this[e+--t]*r;return i},c.prototype.readUint8=c.prototype.readUInt8=function(e,t){return e>>>=0,t||P(e,1,this.length),this[e]},c.prototype.readUint16LE=c.prototype.readUInt16LE=function(e,t){return e>>>=0,t||P(e,2,this.length),this[e]|this[e+1]<<8},c.prototype.readUint16BE=c.prototype.readUInt16BE=function(e,t){return e>>>=0,t||P(e,2,this.length),this[e]<<8|this[e+1]},c.prototype.readUint32LE=c.prototype.readUInt32LE=function(e,t){return e>>>=0,t||P(e,4,this.length),(this[e]|this[e+1]<<8|this[e+2]<<16)+16777216*this[e+3]},c.prototype.readUint32BE=c.prototype.readUInt32BE=function(e,t){return e>>>=0,t||P(e,4,this.length),16777216*this[e]+(this[e+1]<<16|this[e+2]<<8|this[e+3])},c.prototype.readBigUInt64LE=$((function(e){j(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||W(e,this.length-8);const i=t+256*this[++e]+65536*this[++e]+this[++e]*2**24,r=this[++e]+256*this[++e]+65536*this[++e]+n*2**24;return BigInt(i)+(BigInt(r)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||W(e,this.length-8);const i=t*2**24+65536*this[++e]+256*this[++e]+this[++e],r=this[++e]*2**24+65536*this[++e]+256*this[++e]+n;return(BigInt(i)<>>=0,t>>>=0,n||P(e,t,this.length);let i=this[e],r=1,o=0;for(;++o=r&&(i-=Math.pow(2,8*t)),i},c.prototype.readIntBE=function(e,t,n){e>>>=0,t>>>=0,n||P(e,t,this.length);let i=t,r=1,o=this[e+--i];for(;i>0&&(r*=256);)o+=this[e+--i]*r;return r*=128,o>=r&&(o-=Math.pow(2,8*t)),o},c.prototype.readInt8=function(e,t){return e>>>=0,t||P(e,1,this.length),128&this[e]?-1*(255-this[e]+1):this[e]},c.prototype.readInt16LE=function(e,t){e>>>=0,t||P(e,2,this.length);const n=this[e]|this[e+1]<<8;return 32768&n?4294901760|n:n},c.prototype.readInt16BE=function(e,t){e>>>=0,t||P(e,2,this.length);const n=this[e+1]|this[e]<<8;return 32768&n?4294901760|n:n},c.prototype.readInt32LE=function(e,t){return e>>>=0,t||P(e,4,this.length),this[e]|this[e+1]<<8|this[e+2]<<16|this[e+3]<<24},c.prototype.readInt32BE=function(e,t){return e>>>=0,t||P(e,4,this.length),this[e]<<24|this[e+1]<<16|this[e+2]<<8|this[e+3]},c.prototype.readBigInt64LE=$((function(e){j(e>>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||W(e,this.length-8);const i=this[e+4]+256*this[e+5]+65536*this[e+6]+(n<<24);return(BigInt(i)<>>=0,"offset");const t=this[e],n=this[e+7];void 0!==t&&void 0!==n||W(e,this.length-8);const i=(t<<24)+65536*this[++e]+256*this[++e]+this[++e];return(BigInt(i)<>>=0,t||P(e,4,this.length),o.read(this,e,!0,23,4)},c.prototype.readFloatBE=function(e,t){return e>>>=0,t||P(e,4,this.length),o.read(this,e,!1,23,4)},c.prototype.readDoubleLE=function(e,t){return e>>>=0,t||P(e,8,this.length),o.read(this,e,!0,52,8)},c.prototype.readDoubleBE=function(e,t){return e>>>=0,t||P(e,8,this.length),o.read(this,e,!1,52,8)},c.prototype.writeUintLE=c.prototype.writeUIntLE=function(e,t,n,i){e=+e,t>>>=0,n>>>=0,i||O(this,e,t,n,Math.pow(2,8*n)-1,0);let r=1,o=0;for(this[t]=255&e;++o>>=0,n>>>=0,i||O(this,e,t,n,Math.pow(2,8*n)-1,0);let r=n-1,o=1;for(this[t+r]=255&e;--r>=0&&(o*=256);)this[t+r]=e/o&255;return t+n},c.prototype.writeUint8=c.prototype.writeUInt8=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,1,255,0),this[t]=255&e,t+1},c.prototype.writeUint16LE=c.prototype.writeUInt16LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,65535,0),this[t]=255&e,this[t+1]=e>>>8,t+2},c.prototype.writeUint16BE=c.prototype.writeUInt16BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,65535,0),this[t]=e>>>8,this[t+1]=255&e,t+2},c.prototype.writeUint32LE=c.prototype.writeUInt32LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,4294967295,0),this[t+3]=e>>>24,this[t+2]=e>>>16,this[t+1]=e>>>8,this[t]=255&e,t+4},c.prototype.writeUint32BE=c.prototype.writeUInt32BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,4294967295,0),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},c.prototype.writeBigUInt64LE=$((function(e,t=0){return F(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),c.prototype.writeBigUInt64BE=$((function(e,t=0){return R(this,e,t,BigInt(0),BigInt("0xffffffffffffffff"))})),c.prototype.writeIntLE=function(e,t,n,i){if(e=+e,t>>>=0,!i){const i=Math.pow(2,8*n-1);O(this,e,t,n,i-1,-i)}let r=0,o=1,A=0;for(this[t]=255&e;++r>0)-A&255;return t+n},c.prototype.writeIntBE=function(e,t,n,i){if(e=+e,t>>>=0,!i){const i=Math.pow(2,8*n-1);O(this,e,t,n,i-1,-i)}let r=n-1,o=1,A=0;for(this[t+r]=255&e;--r>=0&&(o*=256);)e<0&&0===A&&0!==this[t+r+1]&&(A=1),this[t+r]=(e/o>>0)-A&255;return t+n},c.prototype.writeInt8=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,1,127,-128),e<0&&(e=255+e+1),this[t]=255&e,t+1},c.prototype.writeInt16LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,32767,-32768),this[t]=255&e,this[t+1]=e>>>8,t+2},c.prototype.writeInt16BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,2,32767,-32768),this[t]=e>>>8,this[t+1]=255&e,t+2},c.prototype.writeInt32LE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,2147483647,-2147483648),this[t]=255&e,this[t+1]=e>>>8,this[t+2]=e>>>16,this[t+3]=e>>>24,t+4},c.prototype.writeInt32BE=function(e,t,n){return e=+e,t>>>=0,n||O(this,e,t,4,2147483647,-2147483648),e<0&&(e=4294967295+e+1),this[t]=e>>>24,this[t+1]=e>>>16,this[t+2]=e>>>8,this[t+3]=255&e,t+4},c.prototype.writeBigInt64LE=$((function(e,t=0){return F(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),c.prototype.writeBigInt64BE=$((function(e,t=0){return R(this,e,t,-BigInt("0x8000000000000000"),BigInt("0x7fffffffffffffff"))})),c.prototype.writeFloatLE=function(e,t,n){return x(this,e,t,!0,n)},c.prototype.writeFloatBE=function(e,t,n){return x(this,e,t,!1,n)},c.prototype.writeDoubleLE=function(e,t,n){return U(this,e,t,!0,n)},c.prototype.writeDoubleBE=function(e,t,n){return U(this,e,t,!1,n)},c.prototype.copy=function(e,t,n,i){if(!c.isBuffer(e))throw new TypeError("argument should be a Buffer");if(n||(n=0),i||0===i||(i=this.length),t>=e.length&&(t=e.length),t||(t=0),i>0&&i=this.length)throw new RangeError("Index out of range");if(i<0)throw new RangeError("sourceEnd out of bounds");i>this.length&&(i=this.length),e.length-t>>=0,n=void 0===n?this.length:n>>>0,e||(e=0),"number"==typeof e)for(r=t;r=i+4;n-=3)t=`_${e.slice(n-3,n)}${t}`;return`${e.slice(0,n)}${t}`}function Y(e,t,n,i,r,o){if(e>n||e3?0===t||t===BigInt(0)?`>= 0${i} and < 2${i} ** ${8*(o+1)}${i}`:`>= -(2${i} ** ${8*(o+1)-1}${i}) and < 2 ** ${8*(o+1)-1}${i}`:`>= ${t}${i} and <= ${n}${i}`,new _.ERR_OUT_OF_RANGE("value",r,e)}!function(e,t,n){j(t,"offset"),void 0!==e[t]&&void 0!==e[t+n]||W(t,e.length-(n+1))}(i,r,o)}function j(e,t){if("number"!=typeof e)throw new _.ERR_INVALID_ARG_TYPE(t,"number",e)}function W(e,t,n){if(Math.floor(e)!==e)throw j(e,n),new _.ERR_OUT_OF_RANGE(n||"offset","an integer",e);if(t<0)throw new _.ERR_BUFFER_OUT_OF_BOUNDS;throw new _.ERR_OUT_OF_RANGE(n||"offset",`>= ${n?1:0} and <= ${t}`,e)}L("ERR_BUFFER_OUT_OF_BOUNDS",(function(e){return e?`${e} is outside of buffer bounds`:"Attempt to access memory outside buffer bounds"}),RangeError),L("ERR_INVALID_ARG_TYPE",(function(e,t){return`The "${e}" argument must be of type number. Received type ${typeof t}`}),TypeError),L("ERR_OUT_OF_RANGE",(function(e,t,n){let i=`The value of "${e}" is out of range.`,r=n;return Number.isInteger(n)&&Math.abs(n)>2**32?r=K(String(n)):"bigint"==typeof n&&(r=String(n),(n>BigInt(2)**BigInt(32)||n<-(BigInt(2)**BigInt(32)))&&(r=K(r)),r+="n"),i+=` It must be ${t}. Received ${r}`,i}),RangeError);const J=/[^+/0-9A-Za-z-_]/g;function q(e,t){let n;t=t||1/0;const i=e.length;let r=null;const o=[];for(let A=0;A55295&&n<57344){if(!r){if(n>56319){(t-=3)>-1&&o.push(239,191,189);continue}if(A+1===i){(t-=3)>-1&&o.push(239,191,189);continue}r=n;continue}if(n<56320){(t-=3)>-1&&o.push(239,191,189),r=n;continue}n=65536+(r-55296<<10|n-56320)}else r&&(t-=3)>-1&&o.push(239,191,189);if(r=null,n<128){if((t-=1)<0)break;o.push(n)}else if(n<2048){if((t-=2)<0)break;o.push(n>>6|192,63&n|128)}else if(n<65536){if((t-=3)<0)break;o.push(n>>12|224,n>>6&63|128,63&n|128)}else{if(!(n<1114112))throw new Error("Invalid code point");if((t-=4)<0)break;o.push(n>>18|240,n>>12&63|128,n>>6&63|128,63&n|128)}}return o}function Z(e){return r.toByteArray(function(e){if((e=(e=e.split("=")[0]).trim().replace(J,"")).length<2)return"";for(;e.length%4!=0;)e+="=";return e}(e))}function z(e,t,n,i){let r;for(r=0;r=t.length||r>=e.length);++r)t[r+n]=e[r];return r}function H(e,t){return e instanceof t||null!=e&&null!=e.constructor&&null!=e.constructor.name&&e.constructor.name===t.name}function V(e){return e!=e}const X=function(){const e="0123456789abcdef",t=new Array(256);for(let n=0;n<16;++n){const i=16*n;for(let r=0;r<16;++r)t[i+r]=e[n]+e[r]}return t}();function $(e){return"undefined"==typeof BigInt?ee:e}function ee(){throw new Error("BigInt not supported")}},81036:e=>{"use strict";const t=(e,t)=>{if("string"!=typeof e&&!Array.isArray(e))throw new TypeError("Expected the input to be `string | string[]`");return t=Object.assign({pascalCase:!1},t),e=Array.isArray(e)?e.map((e=>e.trim())).filter((e=>e.length)).join("-"):e.trim(),0===e.length?"":1===e.length?t.pascalCase?e.toUpperCase():e.toLowerCase():(e!==e.toLowerCase()&&(e=(e=>{let t=!1,n=!1,i=!1;for(let r=0;rt.toUpperCase())).replace(/\d+(\w|$)/g,(e=>e.toUpperCase())),t.pascalCase?n.charAt(0).toUpperCase()+n.slice(1):n);var n};e.exports=t,e.exports.default=t},65787:e=>{"use strict";const t=/[\p{Lu}]/u,n=/[\p{Ll}]/u,i=/^[\p{Lu}](?![\p{Lu}])/gu,r=/([\p{Alpha}\p{N}_]|$)/u,o=/[_.\- ]+/,A=new RegExp("^"+o.source),s=new RegExp(o.source+r.source,"gu"),a=new RegExp("\\d+"+r.source,"gu"),c=(e,r)=>{if("string"!=typeof e&&!Array.isArray(e))throw new TypeError("Expected the input to be `string | string[]`");if(r={pascalCase:!1,preserveConsecutiveUppercase:!1,...r},0===(e=Array.isArray(e)?e.map((e=>e.trim())).filter((e=>e.length)).join("-"):e.trim()).length)return"";const o=!1===r.locale?e=>e.toLowerCase():e=>e.toLocaleLowerCase(r.locale),c=!1===r.locale?e=>e.toUpperCase():e=>e.toLocaleUpperCase(r.locale);return 1===e.length?r.pascalCase?c(e):o(e):(e!==o(e)&&(e=((e,i,r)=>{let o=!1,A=!1,s=!1;for(let a=0;a(i.lastIndex=0,e.replace(i,(e=>t(e)))))(e,o):o(e),r.pascalCase&&(e=c(e.charAt(0))+e.slice(1)),((e,t)=>(s.lastIndex=0,a.lastIndex=0,e.replace(s,((e,n)=>t(n))).replace(a,(e=>t(e)))))(e,c))};e.exports=c,e.exports.default=c},874:(e,t,n)=>{"use strict";var i=n(49500),r=n(16935),o={"text/plain":"Text","text/html":"Url",default:"Text"};e.exports=function(e,t){var n,A,s,a,c,u,l=!1;t||(t={}),n=t.debug||!1;try{if(s=r(),a=document.createRange(),c=document.getSelection(),(u=document.createElement("span")).textContent=e,u.ariaHidden="true",u.style.all="unset",u.style.position="fixed",u.style.top=0,u.style.clip="rect(0, 0, 0, 0)",u.style.whiteSpace="pre",u.style.webkitUserSelect="text",u.style.MozUserSelect="text",u.style.msUserSelect="text",u.style.userSelect="text",u.addEventListener("copy",(function(r){if(r.stopPropagation(),t.format)if(r.preventDefault(),void 0===r.clipboardData){n&&i.warn("unable to use e.clipboardData"),n&&i.warn("trying IE specific stuff"),window.clipboardData.clearData();var A=o[t.format]||o.default;window.clipboardData.setData(A,e)}else r.clipboardData.clearData(),r.clipboardData.setData(t.format,e);t.onCopy&&(r.preventDefault(),t.onCopy(r.clipboardData))})),document.body.appendChild(u),a.selectNodeContents(u),c.addRange(a),!document.execCommand("copy"))throw new Error("copy command was unsuccessful");l=!0}catch(r){n&&i.error("unable to copy using execCommand: ",r),n&&i.warn("trying IE specific stuff");try{window.clipboardData.setData(t.format||"text",e),t.onCopy&&t.onCopy(window.clipboardData),l=!0}catch(r){n&&i.error("unable to copy using clipboardData: ",r),n&&i.error("falling back to prompt"),A=function(e){var t=(/mac os x/i.test(navigator.userAgent)?"⌘":"Ctrl")+"+C";return e.replace(/#{\s*key\s*}/g,t)}("message"in t?t.message:"Copy to clipboard: #{key}, Enter"),window.prompt(A,e)}}finally{c&&("function"==typeof c.removeRange?c.removeRange(a):c.removeAllRanges()),u&&document.body.removeChild(u),s()}return l}},13609:function(e,t){var n=function(e){function t(){this.fetch=!1,this.DOMException=e.DOMException}return t.prototype=e,new t}("undefined"!=typeof self?self:this);!function(e){!function(t){var n="URLSearchParams"in e,i="Symbol"in e&&"iterator"in Symbol,r="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),o="FormData"in e,A="ArrayBuffer"in e;if(A)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],a=ArrayBuffer.isView||function(e){return e&&s.indexOf(Object.prototype.toString.call(e))>-1};function c(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function u(e){return"string"!=typeof e&&(e=String(e)),e}function l(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return i&&(t[Symbol.iterator]=function(){return t}),t}function g(e){this.map={},e instanceof g?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function d(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function h(e){return new Promise((function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}}))}function p(e){var t=new FileReader,n=h(t);return t.readAsArrayBuffer(e),n}function f(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function m(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:r&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:o&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:n&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():A&&r&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=f(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):A&&(ArrayBuffer.prototype.isPrototypeOf(e)||a(e))?this._bodyArrayBuffer=f(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},r&&(this.blob=function(){var e=d(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?d(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(p)}),this.text=function(){var e,t,n,i=d(this);if(i)return i;if(this._bodyBlob)return e=this._bodyBlob,n=h(t=new FileReader),t.readAsText(e),n;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),i=0;i-1?i:n),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function B(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var n=e.split("="),i=n.shift().replace(/\+/g," "),r=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(i),decodeURIComponent(r))}})),t}function C(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new g(t.headers),this.url=t.url||"",this._initBody(e)}y.prototype.clone=function(){return new y(this,{body:this._bodyInit})},m.call(y.prototype),m.call(C.prototype),C.prototype.clone=function(){return new C(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new g(this.headers),url:this.url})},C.error=function(){var e=new C(null,{status:0,statusText:""});return e.type="error",e};var w=[301,302,303,307,308];C.redirect=function(e,t){if(-1===w.indexOf(t))throw new RangeError("Invalid status code");return new C(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var n=Error(e);this.stack=n.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function E(e,n){return new Promise((function(i,o){var A=new y(e,n);if(A.signal&&A.signal.aborted)return o(new t.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function a(){s.abort()}s.onload=function(){var e,t,n={status:s.status,statusText:s.statusText,headers:(e=s.getAllResponseHeaders()||"",t=new g,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var n=e.split(":"),i=n.shift().trim();if(i){var r=n.join(":").trim();t.append(i,r)}})),t)};n.url="responseURL"in s?s.responseURL:n.headers.get("X-Request-URL");var r="response"in s?s.response:s.responseText;i(new C(r,n))},s.onerror=function(){o(new TypeError("Network request failed"))},s.ontimeout=function(){o(new TypeError("Network request failed"))},s.onabort=function(){o(new t.DOMException("Aborted","AbortError"))},s.open(A.method,A.url,!0),"include"===A.credentials?s.withCredentials=!0:"omit"===A.credentials&&(s.withCredentials=!1),"responseType"in s&&r&&(s.responseType="blob"),A.headers.forEach((function(e,t){s.setRequestHeader(t,e)})),A.signal&&(A.signal.addEventListener("abort",a),s.onreadystatechange=function(){4===s.readyState&&A.signal.removeEventListener("abort",a)}),s.send(void 0===A._bodyInit?null:A._bodyInit)}))}E.polyfill=!0,e.fetch||(e.fetch=E,e.Headers=g,e.Request=y,e.Response=C),t.Headers=g,t.Request=y,t.Response=C,t.fetch=E}({})}(n),delete n.fetch.polyfill,(t=n.fetch).default=n.fetch,t.fetch=n.fetch,t.Headers=n.Headers,t.Request=n.Request,t.Response=n.Response,e.exports=t},45005:function(e,t){var n="undefined"!=typeof self?self:this,i=function(){function e(){this.fetch=!1,this.DOMException=n.DOMException}return e.prototype=n,new e}();!function(e){!function(t){var n="URLSearchParams"in e,i="Symbol"in e&&"iterator"in Symbol,r="FileReader"in e&&"Blob"in e&&function(){try{return new Blob,!0}catch(e){return!1}}(),o="FormData"in e,A="ArrayBuffer"in e;if(A)var s=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],a=ArrayBuffer.isView||function(e){return e&&s.indexOf(Object.prototype.toString.call(e))>-1};function c(e){if("string"!=typeof e&&(e=String(e)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(e))throw new TypeError("Invalid character in header field name");return e.toLowerCase()}function u(e){return"string"!=typeof e&&(e=String(e)),e}function l(e){var t={next:function(){var t=e.shift();return{done:void 0===t,value:t}}};return i&&(t[Symbol.iterator]=function(){return t}),t}function g(e){this.map={},e instanceof g?e.forEach((function(e,t){this.append(t,e)}),this):Array.isArray(e)?e.forEach((function(e){this.append(e[0],e[1])}),this):e&&Object.getOwnPropertyNames(e).forEach((function(t){this.append(t,e[t])}),this)}function d(e){if(e.bodyUsed)return Promise.reject(new TypeError("Already read"));e.bodyUsed=!0}function h(e){return new Promise((function(t,n){e.onload=function(){t(e.result)},e.onerror=function(){n(e.error)}}))}function p(e){var t=new FileReader,n=h(t);return t.readAsArrayBuffer(e),n}function f(e){if(e.slice)return e.slice(0);var t=new Uint8Array(e.byteLength);return t.set(new Uint8Array(e)),t.buffer}function m(){return this.bodyUsed=!1,this._initBody=function(e){var t;this._bodyInit=e,e?"string"==typeof e?this._bodyText=e:r&&Blob.prototype.isPrototypeOf(e)?this._bodyBlob=e:o&&FormData.prototype.isPrototypeOf(e)?this._bodyFormData=e:n&&URLSearchParams.prototype.isPrototypeOf(e)?this._bodyText=e.toString():A&&r&&(t=e)&&DataView.prototype.isPrototypeOf(t)?(this._bodyArrayBuffer=f(e.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):A&&(ArrayBuffer.prototype.isPrototypeOf(e)||a(e))?this._bodyArrayBuffer=f(e):this._bodyText=e=Object.prototype.toString.call(e):this._bodyText="",this.headers.get("content-type")||("string"==typeof e?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(e)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},r&&(this.blob=function(){var e=d(this);if(e)return e;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?d(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(p)}),this.text=function(){var e,t,n,i=d(this);if(i)return i;if(this._bodyBlob)return e=this._bodyBlob,n=h(t=new FileReader),t.readAsText(e),n;if(this._bodyArrayBuffer)return Promise.resolve(function(e){for(var t=new Uint8Array(e),n=new Array(t.length),i=0;i-1?i:n),this.mode=t.mode||this.mode||null,this.signal=t.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function B(e){var t=new FormData;return e.trim().split("&").forEach((function(e){if(e){var n=e.split("="),i=n.shift().replace(/\+/g," "),r=n.join("=").replace(/\+/g," ");t.append(decodeURIComponent(i),decodeURIComponent(r))}})),t}function C(e,t){t||(t={}),this.type="default",this.status=void 0===t.status?200:t.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in t?t.statusText:"OK",this.headers=new g(t.headers),this.url=t.url||"",this._initBody(e)}y.prototype.clone=function(){return new y(this,{body:this._bodyInit})},m.call(y.prototype),m.call(C.prototype),C.prototype.clone=function(){return new C(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new g(this.headers),url:this.url})},C.error=function(){var e=new C(null,{status:0,statusText:""});return e.type="error",e};var w=[301,302,303,307,308];C.redirect=function(e,t){if(-1===w.indexOf(t))throw new RangeError("Invalid status code");return new C(null,{status:t,headers:{location:e}})},t.DOMException=e.DOMException;try{new t.DOMException}catch(e){t.DOMException=function(e,t){this.message=e,this.name=t;var n=Error(e);this.stack=n.stack},t.DOMException.prototype=Object.create(Error.prototype),t.DOMException.prototype.constructor=t.DOMException}function E(e,n){return new Promise((function(i,o){var A=new y(e,n);if(A.signal&&A.signal.aborted)return o(new t.DOMException("Aborted","AbortError"));var s=new XMLHttpRequest;function a(){s.abort()}s.onload=function(){var e,t,n={status:s.status,statusText:s.statusText,headers:(e=s.getAllResponseHeaders()||"",t=new g,e.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach((function(e){var n=e.split(":"),i=n.shift().trim();if(i){var r=n.join(":").trim();t.append(i,r)}})),t)};n.url="responseURL"in s?s.responseURL:n.headers.get("X-Request-URL");var r="response"in s?s.response:s.responseText;i(new C(r,n))},s.onerror=function(){o(new TypeError("Network request failed"))},s.ontimeout=function(){o(new TypeError("Network request failed"))},s.onabort=function(){o(new t.DOMException("Aborted","AbortError"))},s.open(A.method,A.url,!0),"include"===A.credentials?s.withCredentials=!0:"omit"===A.credentials&&(s.withCredentials=!1),"responseType"in s&&r&&(s.responseType="blob"),A.headers.forEach((function(e,t){s.setRequestHeader(t,e)})),A.signal&&(A.signal.addEventListener("abort",a),s.onreadystatechange=function(){4===s.readyState&&A.signal.removeEventListener("abort",a)}),s.send(void 0===A._bodyInit?null:A._bodyInit)}))}E.polyfill=!0,e.fetch||(e.fetch=E,e.Headers=g,e.Request=y,e.Response=C),t.Headers=g,t.Request=y,t.Response=C,t.fetch=E,Object.defineProperty(t,"__esModule",{value:!0})}({})}(i),i.fetch.ponyfill=!0,delete i.fetch.polyfill;var r=i;(t=r.fetch).default=r.fetch,t.fetch=r.fetch,t.Headers=r.Headers,t.Request=r.Request,t.Response=r.Response,e.exports=t},37820:(e,t,n)=>{var i=n(49500),r=n(14224);t.formatArgs=function(t){if(t[0]=(this.useColors?"%c":"")+this.namespace+(this.useColors?" %c":" ")+t[0]+(this.useColors?"%c ":" ")+"+"+e.exports.humanize(this.diff),!this.useColors)return;const n="color: "+this.color;t.splice(1,0,n,"color: inherit");let i=0,r=0;t[0].replace(/%[a-zA-Z%]/g,(e=>{"%%"!==e&&(i++,"%c"===e&&(r=i))})),t.splice(r,0,n)},t.save=function(e){try{e?t.storage.setItem("debug",e):t.storage.removeItem("debug")}catch(e){}},t.load=function(){let e;try{e=t.storage.getItem("debug")}catch(e){}return!e&&void 0!==r&&"env"in r&&(e=r.env.DEBUG),e},t.useColors=function(){return!("undefined"==typeof window||!window.process||"renderer"!==window.process.type&&!window.process.__nwjs)||("undefined"==typeof navigator||!navigator.userAgent||!navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))&&("undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/))},t.storage=function(){try{return localStorage}catch(e){}}(),t.destroy=(()=>{let e=!1;return()=>{e||(e=!0,i.warn("Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`."))}})(),t.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],t.log=i.debug||i.log||(()=>{}),e.exports=n(18455)(t);const{formatters:o}=e.exports;o.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}}},18455:(e,t,n)=>{var i=n(49500);e.exports=function(e){function t(e){let n,i,o,A=null;function s(...e){if(!s.enabled)return;const i=s,r=Number(new Date),o=r-(n||r);i.diff=o,i.prev=n,i.curr=r,n=r,e[0]=t.coerce(e[0]),"string"!=typeof e[0]&&e.unshift("%O");let A=0;e[0]=e[0].replace(/%([a-zA-Z%])/g,((n,r)=>{if("%%"===n)return"%";A++;const o=t.formatters[r];if("function"==typeof o){const t=e[A];n=o.call(i,t),e.splice(A,1),A--}return n})),t.formatArgs.call(i,e),(i.log||t.log).apply(i,e)}return s.namespace=e,s.useColors=t.useColors(),s.color=t.selectColor(e),s.extend=r,s.destroy=t.destroy,Object.defineProperty(s,"enabled",{enumerable:!0,configurable:!1,get:()=>null!==A?A:(i!==t.namespaces&&(i=t.namespaces,o=t.enabled(e)),o),set:e=>{A=e}}),"function"==typeof t.init&&t.init(s),s}function r(e,n){const i=t(this.namespace+(void 0===n?":":n)+e);return i.log=this.log,i}function o(e){return e.toString().substring(2,e.toString().length-2).replace(/\.\*\?$/,"*")}return t.debug=t,t.default=t,t.coerce=function(e){return e instanceof Error?e.stack||e.message:e},t.disable=function(){const e=[...t.names.map(o),...t.skips.map(o).map((e=>"-"+e))].join(",");return t.enable(""),e},t.enable=function(e){let n;t.save(e),t.namespaces=e,t.names=[],t.skips=[];const i=("string"==typeof e?e:"").split(/[\s,]+/),r=i.length;for(n=0;n{t[n]=e[n]})),t.names=[],t.skips=[],t.formatters={},t.selectColor=function(e){let n=0;for(let t=0;t(s=(A=Math.ceil(g/7))>s?A+1:s+1)&&(o=s,i.length=1),i.reverse();o--;)i.push(0);i.reverse()}for((s=c.length)-(o=u.length)<0&&(o=s,i=u,u=c,c=i),n=0;o;)n=(c[--o]=c[o]+u[o]+n)/p|0,c[o]%=p;for(n&&(c.unshift(n),++r),s=c.length;0==c[--s];)c.pop();return t.d=c,t.e=r,a?S(t,g):t}function y(e,t,n){if(e!==~~e||en)throw Error(u+e)}function B(e){var t,n,i,r=e.length-1,o="",A=e[0];if(r>0){for(o+=A,t=1;te.e^o.s<0?1:-1;for(t=0,n=(i=o.d.length)<(r=e.d.length)?i:r;te.d[t]^o.s<0?1:-1;return i===r?0:i>r^o.s<0?1:-1},m.decimalPlaces=m.dp=function(){var e=this,t=e.d.length-1,n=7*(t-e.e);if(t=e.d[t])for(;t%10==0;t/=10)n--;return n<0?0:n},m.dividedBy=m.div=function(e){return C(this,new this.constructor(e))},m.dividedToIntegerBy=m.idiv=function(e){var t=this.constructor;return S(C(this,new t(e),0,1),t.precision)},m.equals=m.eq=function(e){return!this.cmp(e)},m.exponent=function(){return E(this)},m.greaterThan=m.gt=function(e){return this.cmp(e)>0},m.greaterThanOrEqualTo=m.gte=function(e){return this.cmp(e)>=0},m.isInteger=m.isint=function(){return this.e>this.d.length-2},m.isNegative=m.isneg=function(){return this.s<0},m.isPositive=m.ispos=function(){return this.s>0},m.isZero=function(){return 0===this.s},m.lessThan=m.lt=function(e){return this.cmp(e)<0},m.lessThanOrEqualTo=m.lte=function(e){return this.cmp(e)<1},m.logarithm=m.log=function(e){var t,n=this,i=n.constructor,r=i.precision,A=r+5;if(void 0===e)e=new i(10);else if((e=new i(e)).s<1||e.eq(o))throw Error(c+"NaN");if(n.s<1)throw Error(c+(n.s?"NaN":"-Infinity"));return n.eq(o)?new i(0):(a=!1,t=C(k(n,A),k(e,A),A),a=!0,S(t,r))},m.minus=m.sub=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?M(t,e):I(t,(e.s=-e.s,e))},m.modulo=m.mod=function(e){var t,n=this,i=n.constructor,r=i.precision;if(!(e=new i(e)).s)throw Error(c+"NaN");return n.s?(a=!1,t=C(n,e,0,1).times(e),a=!0,n.minus(t)):S(new i(n),r)},m.naturalExponential=m.exp=function(){return w(this)},m.naturalLogarithm=m.ln=function(){return k(this)},m.negated=m.neg=function(){var e=new this.constructor(this);return e.s=-e.s||0,e},m.plus=m.add=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?I(t,e):M(t,(e.s=-e.s,e))},m.precision=m.sd=function(e){var t,n,i,r=this;if(void 0!==e&&e!==!!e&&1!==e&&0!==e)throw Error(u+e);if(t=E(r)+1,n=7*(i=r.d.length-1)+1,i=r.d[i]){for(;i%10==0;i/=10)n--;for(i=r.d[0];i>=10;i/=10)n++}return e&&t>n?t:n},m.squareRoot=m.sqrt=function(){var e,t,n,i,r,o,A,s=this,u=s.constructor;if(s.s<1){if(!s.s)return new u(0);throw Error(c+"NaN")}for(e=E(s),a=!1,0==(r=Math.sqrt(+s))||r==1/0?(((t=B(s.d)).length+e)%2==0&&(t+="0"),r=Math.sqrt(t),e=g((e+1)/2)-(e<0||e%2),i=new u(t=r==1/0?"5e"+e:(t=r.toExponential()).slice(0,t.indexOf("e")+1)+e)):i=new u(r.toString()),r=A=(n=u.precision)+3;;)if(i=(o=i).plus(C(s,o,A+2)).times(.5),B(o.d).slice(0,A)===(t=B(i.d)).slice(0,A)){if(t=t.slice(A-3,A+1),r==A&&"4999"==t){if(S(o,n+1,0),o.times(o).eq(s)){i=o;break}}else if("9999"!=t)break;A+=4}return a=!0,S(i,n)},m.times=m.mul=function(e){var t,n,i,r,o,A,s,c,u,l=this,g=l.constructor,d=l.d,h=(e=new g(e)).d;if(!l.s||!e.s)return new g(0);for(e.s*=l.s,n=l.e+e.e,(c=d.length)<(u=h.length)&&(o=d,d=h,h=o,A=c,c=u,u=A),o=[],i=A=c+u;i--;)o.push(0);for(i=u;--i>=0;){for(t=0,r=c+i;r>i;)s=o[r]+h[i]*d[r-i-1]+t,o[r--]=s%p|0,t=s/p|0;o[r]=(o[r]+t)%p|0}for(;!o[--A];)o.pop();return t?++n:o.shift(),e.d=o,e.e=n,a?S(e,g.precision):e},m.toDecimalPlaces=m.todp=function(e,t){var n=this,i=n.constructor;return n=new i(n),void 0===e?n:(y(e,0,A),void 0===t?t=i.rounding:y(t,0,8),S(n,e+E(n)+1,t))},m.toExponential=function(e,t){var n,i=this,r=i.constructor;return void 0===e?n=D(i,!0):(y(e,0,A),void 0===t?t=r.rounding:y(t,0,8),n=D(i=S(new r(i),e+1,t),!0,e+1)),n},m.toFixed=function(e,t){var n,i,r=this,o=r.constructor;return void 0===e?D(r):(y(e,0,A),void 0===t?t=o.rounding:y(t,0,8),n=D((i=S(new o(r),e+E(r)+1,t)).abs(),!1,e+E(i)+1),r.isneg()&&!r.isZero()?"-"+n:n)},m.toInteger=m.toint=function(){var e=this,t=e.constructor;return S(new t(e),E(e)+1,t.rounding)},m.toNumber=function(){return+this},m.toPower=m.pow=function(e){var t,n,i,r,A,s,u=this,l=u.constructor,d=+(e=new l(e));if(!e.s)return new l(o);if(!(u=new l(u)).s){if(e.s<1)throw Error(c+"Infinity");return u}if(u.eq(o))return u;if(i=l.precision,e.eq(o))return S(u,i);if(s=(t=e.e)>=(n=e.d.length-1),A=u.s,s){if((n=d<0?-d:d)<=9007199254740991){for(r=new l(o),t=Math.ceil(i/7+4),a=!1;n%2&&N((r=r.times(u)).d,t),0!==(n=g(n/2));)N((u=u.times(u)).d,t);return a=!0,e.s<0?new l(o).div(r):S(r,i)}}else if(A<0)throw Error(c+"NaN");return A=A<0&&1&e.d[Math.max(t,n)]?-1:1,u.s=1,a=!1,r=e.times(k(u,i+12)),a=!0,(r=w(r)).s=A,r},m.toPrecision=function(e,t){var n,i,r=this,o=r.constructor;return void 0===e?i=D(r,(n=E(r))<=o.toExpNeg||n>=o.toExpPos):(y(e,1,A),void 0===t?t=o.rounding:y(t,0,8),i=D(r=S(new o(r),e,t),e<=(n=E(r))||n<=o.toExpNeg,e)),i},m.toSignificantDigits=m.tosd=function(e,t){var n=this.constructor;return void 0===e?(e=n.precision,t=n.rounding):(y(e,1,A),void 0===t?t=n.rounding:y(t,0,8)),S(new n(this),e,t)},m.toString=m.valueOf=m.val=m.toJSON=function(){var e=this,t=E(e),n=e.constructor;return D(e,t<=n.toExpNeg||t>=n.toExpPos)};var C=function(){function e(e,t){var n,i=0,r=e.length;for(e=e.slice();r--;)n=e[r]*t+i,e[r]=n%p|0,i=n/p|0;return i&&e.unshift(i),e}function t(e,t,n,i){var r,o;if(n!=i)o=n>i?1:-1;else for(r=o=0;rt[r]?1:-1;break}return o}function n(e,t,n){for(var i=0;n--;)e[n]-=i,i=e[n]1;)e.shift()}return function(i,r,o,A){var s,a,u,l,g,d,h,f,m,I,y,B,C,w,Q,b,k,v,M=i.constructor,D=i.s==r.s?1:-1,N=i.d,T=r.d;if(!i.s)return new M(i);if(!r.s)throw Error(c+"Division by zero");for(a=i.e-r.e,k=T.length,Q=N.length,f=(h=new M(D)).d=[],u=0;T[u]==(N[u]||0);)++u;if(T[u]>(N[u]||0)&&--a,(B=null==o?o=M.precision:A?o+(E(i)-E(r))+1:o)<0)return new M(0);if(B=B/7+2|0,u=0,1==k)for(l=0,T=T[0],B++;(u1&&(T=e(T,l),N=e(N,l),k=T.length,Q=N.length),w=k,I=(m=N.slice(0,k)).length;I=p/2&&++b;do{l=0,(s=t(T,m,k,I))<0?(y=m[0],k!=I&&(y=y*p+(m[1]||0)),(l=y/b|0)>1?(l>=p&&(l=p-1),1==(s=t(g=e(T,l),m,d=g.length,I=m.length))&&(l--,n(g,k16)throw Error(l+E(e));if(!e.s)return new g(o);for(null==t?(a=!1,s=h):s=t,A=new g(.03125);e.abs().gte(.1);)e=e.times(A),u+=5;for(s+=Math.log(d(2,u))/Math.LN10*2+5|0,n=i=r=new g(o),g.precision=s;;){if(i=S(i.times(e),s),n=n.times(++c),B((A=r.plus(C(i,n,s))).d).slice(0,s)===B(r.d).slice(0,s)){for(;u--;)r=S(r.times(r),s);return g.precision=h,null==t?(a=!0,S(r,h)):r}r=A}}function E(e){for(var t=7*e.e,n=e.d[0];n>=10;n/=10)t++;return t}function Q(e,t,n){if(t>e.LN10.sd())throw a=!0,n&&(e.precision=n),Error(c+"LN10 precision limit exceeded");return S(new e(e.LN10),t)}function b(e){for(var t="";e--;)t+="0";return t}function k(e,t){var n,i,r,A,s,u,l,g,d,h=1,p=e,f=p.d,m=p.constructor,I=m.precision;if(p.s<1)throw Error(c+(p.s?"NaN":"-Infinity"));if(p.eq(o))return new m(0);if(null==t?(a=!1,g=I):g=t,p.eq(10))return null==t&&(a=!0),Q(m,g);if(g+=10,m.precision=g,i=(n=B(f)).charAt(0),A=E(p),!(Math.abs(A)<15e14))return l=Q(m,g+2,I).times(A+""),p=k(new m(i+"."+n.slice(1)),g-10).plus(l),m.precision=I,null==t?(a=!0,S(p,I)):p;for(;i<7&&1!=i||1==i&&n.charAt(1)>3;)i=(n=B((p=p.times(e)).d)).charAt(0),h++;for(A=E(p),i>1?(p=new m("0."+n),A++):p=new m(i+"."+n.slice(1)),u=s=p=C(p.minus(o),p.plus(o),g),d=S(p.times(p),g),r=3;;){if(s=S(s.times(d),g),B((l=u.plus(C(s,new m(r),g))).d).slice(0,g)===B(u.d).slice(0,g))return u=u.times(2),0!==A&&(u=u.plus(Q(m,g+2,I).times(A+""))),u=C(u,new m(h),g),m.precision=I,null==t?(a=!0,S(u,I)):u;u=l,r+=2}}function v(e,t){var n,i,r;for((n=t.indexOf("."))>-1&&(t=t.replace(".","")),(i=t.search(/e/i))>0?(n<0&&(n=i),n+=+t.slice(i+1),t=t.substring(0,i)):n<0&&(n=t.length),i=0;48===t.charCodeAt(i);)++i;for(r=t.length;48===t.charCodeAt(r-1);)--r;if(t=t.slice(i,r)){if(r-=i,n=n-i-1,e.e=g(n/7),e.d=[],i=(n+1)%7,n<0&&(i+=7),if||e.e<-f))throw Error(l+n)}else e.s=0,e.e=0,e.d=[0];return e}function S(e,t,n){var i,r,o,A,s,c,u,h,m=e.d;for(A=1,o=m[0];o>=10;o/=10)A++;if((i=t-A)<0)i+=7,r=t,u=m[h=0];else{if((h=Math.ceil((i+1)/7))>=(o=m.length))return e;for(u=o=m[h],A=1;o>=10;o/=10)A++;r=(i%=7)-7+A}if(void 0!==n&&(s=u/(o=d(10,A-r-1))%10|0,c=t<0||void 0!==m[h+1]||u%o,c=n<4?(s||c)&&(0==n||n==(e.s<0?3:2)):s>5||5==s&&(4==n||c||6==n&&(i>0?r>0?u/d(10,A-r):0:m[h-1])%10&1||n==(e.s<0?8:7))),t<1||!m[0])return c?(o=E(e),m.length=1,t=t-o-1,m[0]=d(10,(7-t%7)%7),e.e=g(-t/7)||0):(m.length=1,m[0]=e.e=e.s=0),e;if(0==i?(m.length=h,o=1,h--):(m.length=h+1,o=d(10,7-i),m[h]=r>0?(u/d(10,A-r)%d(10,r)|0)*o:0),c)for(;;){if(0==h){(m[0]+=o)==p&&(m[0]=1,++e.e);break}if(m[h]+=o,m[h]!=p)break;m[h--]=0,o=1}for(i=m.length;0===m[--i];)m.pop();if(a&&(e.e>f||e.e<-f))throw Error(l+E(e));return e}function M(e,t){var n,i,r,o,A,s,c,u,l,g,d=e.constructor,h=d.precision;if(!e.s||!t.s)return t.s?t.s=-t.s:t=new d(e),a?S(t,h):t;if(c=e.d,g=t.d,i=t.e,u=e.e,c=c.slice(),A=u-i){for((l=A<0)?(n=c,A=-A,s=g.length):(n=g,i=u,s=c.length),A>(r=Math.max(Math.ceil(h/7),s)+2)&&(A=r,n.length=1),n.reverse(),r=A;r--;)n.push(0);n.reverse()}else{for((l=(r=c.length)<(s=g.length))&&(s=r),r=0;r0;--r)c[s++]=0;for(r=g.length;r>A;){if(c[--r]0?o=o.charAt(0)+"."+o.slice(1)+b(i):A>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(r<0?"e":"e+")+r):r<0?(o="0."+b(-r-1)+o,n&&(i=n-A)>0&&(o+=b(i))):r>=A?(o+=b(r+1-A),n&&(i=n-r-1)>0&&(o=o+"."+b(i))):((i=r+1)0&&(r+1===A&&(o+="."),o+=b(i))),e.s<0?"-"+o:o}function N(e,t){if(e.length>t)return e.length=t,!0}function T(e){if(!e||"object"!=typeof e)throw Error(c+"Object expected");var t,n,i,r=["precision",1,A,"rounding",0,8,"toExpNeg",-1/0,0,"toExpPos",0,1/0];for(t=0;t=r[t+1]&&i<=r[t+2]))throw Error(u+n+": "+i);this[n]=i}if(void 0!==(i=e[n="LN10"])){if(i!=Math.LN10)throw Error(u+n+": "+i);this[n]=new this(i)}return this}(s=function e(t){var n,i,r;function o(e){var t=this;if(!(t instanceof o))return new o(e);if(t.constructor=o,e instanceof o)return t.s=e.s,t.e=e.e,void(t.d=(e=e.d)?e.slice():e);if("number"==typeof e){if(0*e!=0)throw Error(u+e);if(e>0)t.s=1;else{if(!(e<0))return t.s=0,t.e=0,void(t.d=[0]);e=-e,t.s=-1}return e===~~e&&e<1e7?(t.e=0,void(t.d=[e])):v(t,e.toString())}if("string"!=typeof e)throw Error(u+e);if(45===e.charCodeAt(0)?(e=e.slice(1),t.s=-1):t.s=1,!h.test(e))throw Error(u+e);v(t,e)}if(o.prototype=m,o.ROUND_UP=0,o.ROUND_DOWN=1,o.ROUND_CEIL=2,o.ROUND_FLOOR=3,o.ROUND_HALF_UP=4,o.ROUND_HALF_DOWN=5,o.ROUND_HALF_EVEN=6,o.ROUND_HALF_CEIL=7,o.ROUND_HALF_FLOOR=8,o.clone=e,o.config=o.set=T,void 0===t&&(t={}),t)for(r=["precision","rounding","toExpNeg","toExpPos","LN10"],n=0;n0){for(o+=A,t=1;tn)throw Error(f+e)}function T(e,t,n,i){var r,o,A,s;for(o=e[0];o>=10;o/=10)--t;return--t<0?(t+=7,r=0):(r=Math.ceil((t+1)/7),t%=7),o=C(10,7-t),s=e[r]%o|0,null==i?t<3?(0==t?s=s/100|0:1==t&&(s=s/10|0),A=n<4&&99999==s||n>3&&49999==s||5e4==s||0==s):A=(n<4&&s+1==o||n>3&&s+1==o/2)&&(e[r+1]/o/100|0)==C(10,t-2)-1||(s==o/2||0==s)&&0==(e[r+1]/o/100|0):t<4?(0==t?s=s/1e3|0:1==t?s=s/100|0:2==t&&(s=s/10|0),A=(i||n<4)&&9999==s||!i&&n>3&&4999==s):A=((i||n<4)&&s+1==o||!i&&n>3&&s+1==o/2)&&(e[r+1]/o/1e3|0)==C(10,t-3)-1,A}function P(e,t,n){for(var i,r,o=[0],A=0,s=e.length;An-1&&(void 0===o[i+1]&&(o[i+1]=0),o[i+1]+=o[i]/n|0,o[i]%=n)}return o.reverse()}M.absoluteValue=M.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),F(e)},M.ceil=function(){return F(new this.constructor(this),this.e+1,2)},M.clampedTo=M.clamp=function(e,t){var n=this,i=n.constructor;if(e=new i(e),t=new i(t),!e.s||!t.s)return new i(NaN);if(e.gt(t))throw Error(f+t);return n.cmp(e)<0?e:n.cmp(t)>0?t:new i(n)},M.comparedTo=M.cmp=function(e){var t,n,i,r,o=this,A=o.d,s=(e=new o.constructor(e)).d,a=o.s,c=e.s;if(!A||!s)return a&&c?a!==c?a:A===s?0:!A^a<0?1:-1:NaN;if(!A[0]||!s[0])return A[0]?a:s[0]?-c:0;if(a!==c)return a;if(o.e!==e.e)return o.e>e.e^a<0?1:-1;for(t=0,n=(i=A.length)<(r=s.length)?i:r;ts[t]^a<0?1:-1;return i===r?0:i>r^a<0?1:-1},M.cosine=M.cos=function(){var e,t,n=this,i=n.constructor;return n.d?n.d[0]?(e=i.precision,t=i.rounding,i.precision=e+Math.max(n.e,n.sd())+7,i.rounding=1,n=function(e,t){var n,i,r;if(t.isZero())return t;(i=t.d.length)<32?r=(1/V(4,n=Math.ceil(i/3))).toString():(n=16,r="2.3283064365386962890625e-10"),e.precision+=n,t=H(e,1,t.times(r),new e(1));for(var o=n;o--;){var A=t.times(t);t=A.times(A).minus(A).times(8).plus(1)}return e.precision-=n,t}(i,X(i,n)),i.precision=e,i.rounding=t,F(2==s||3==s?n.neg():n,e,t,!0)):new i(1):new i(NaN)},M.cubeRoot=M.cbrt=function(){var e,t,n,i,r,o,A,s,a,c,u=this,l=u.constructor;if(!u.isFinite()||u.isZero())return new l(u);for(h=!1,(o=u.s*C(u.s*u,1/3))&&Math.abs(o)!=1/0?i=new l(o.toString()):(n=D(u.d),(o=((e=u.e)-n.length+1)%3)&&(n+=1==o||-2==o?"0":"00"),o=C(n,1/3),e=B((e+1)/3)-(e%3==(e<0?-1:2)),(i=new l(n=o==1/0?"5e"+e:(n=o.toExponential()).slice(0,n.indexOf("e")+1)+e)).s=u.s),A=(e=l.precision)+3;;)if(c=(a=(s=i).times(s).times(s)).plus(u),i=O(c.plus(u).times(s),c.plus(a),A+2,1),D(s.d).slice(0,A)===(n=D(i.d)).slice(0,A)){if("9999"!=(n=n.slice(A-3,A+1))&&(r||"4999"!=n)){+n&&(+n.slice(1)||"5"!=n.charAt(0))||(F(i,e+1,1),t=!i.times(i).times(i).eq(u));break}if(!r&&(F(s,e+1,0),s.times(s).times(s).eq(u))){i=s;break}A+=4,r=1}return h=!0,F(i,e,l.rounding,t)},M.decimalPlaces=M.dp=function(){var e,t=this.d,n=NaN;if(t){if(n=7*((e=t.length-1)-B(this.e/7)),e=t[e])for(;e%10==0;e/=10)n--;n<0&&(n=0)}return n},M.dividedBy=M.div=function(e){return O(this,new this.constructor(e))},M.dividedToIntegerBy=M.divToInt=function(e){var t=this.constructor;return F(O(this,new t(e),0,1,1),t.precision,t.rounding)},M.equals=M.eq=function(e){return 0===this.cmp(e)},M.floor=function(){return F(new this.constructor(this),this.e+1,3)},M.greaterThan=M.gt=function(e){return this.cmp(e)>0},M.greaterThanOrEqualTo=M.gte=function(e){var t=this.cmp(e);return 1==t||0===t},M.hyperbolicCosine=M.cosh=function(){var e,t,n,i,r,o=this,A=o.constructor,s=new A(1);if(!o.isFinite())return new A(o.s?1/0:NaN);if(o.isZero())return s;n=A.precision,i=A.rounding,A.precision=n+Math.max(o.e,o.sd())+4,A.rounding=1,(r=o.d.length)<32?t=(1/V(4,e=Math.ceil(r/3))).toString():(e=16,t="2.3283064365386962890625e-10"),o=H(A,1,o.times(t),new A(1),!0);for(var a,c=e,u=new A(8);c--;)a=o.times(o),o=s.minus(a.times(u.minus(a.times(u))));return F(o,A.precision=n,A.rounding=i,!0)},M.hyperbolicSine=M.sinh=function(){var e,t,n,i,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(t=o.precision,n=o.rounding,o.precision=t+Math.max(r.e,r.sd())+4,o.rounding=1,(i=r.d.length)<3)r=H(o,2,r,r,!0);else{e=(e=1.4*Math.sqrt(i))>16?16:0|e,r=H(o,2,r=r.times(1/V(5,e)),r,!0);for(var A,s=new o(5),a=new o(16),c=new o(20);e--;)A=r.times(r),r=r.times(s.plus(A.times(a.times(A).plus(c))))}return o.precision=t,o.rounding=n,F(r,t,n,!0)},M.hyperbolicTangent=M.tanh=function(){var e,t,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+7,i.rounding=1,O(n.sinh(),n.cosh(),i.precision=e,i.rounding=t)):new i(n.s)},M.inverseCosine=M.acos=function(){var e,t=this,n=t.constructor,i=t.abs().cmp(1),r=n.precision,o=n.rounding;return-1!==i?0===i?t.isNeg()?U(n,r,o):new n(0):new n(NaN):t.isZero()?U(n,r+4,o).times(.5):(n.precision=r+6,n.rounding=1,t=t.asin(),e=U(n,r+4,o).times(.5),n.precision=r,n.rounding=o,e.minus(t))},M.inverseHyperbolicCosine=M.acosh=function(){var e,t,n=this,i=n.constructor;return n.lte(1)?new i(n.eq(1)?0:NaN):n.isFinite()?(e=i.precision,t=i.rounding,i.precision=e+Math.max(Math.abs(n.e),n.sd())+4,i.rounding=1,h=!1,n=n.times(n).minus(1).sqrt().plus(n),h=!0,i.precision=e,i.rounding=t,n.ln()):new i(n)},M.inverseHyperbolicSine=M.asinh=function(){var e,t,n=this,i=n.constructor;return!n.isFinite()||n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+2*Math.max(Math.abs(n.e),n.sd())+6,i.rounding=1,h=!1,n=n.times(n).plus(1).sqrt().plus(n),h=!0,i.precision=e,i.rounding=t,n.ln())},M.inverseHyperbolicTangent=M.atanh=function(){var e,t,n,i,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(e=o.precision,t=o.rounding,i=r.sd(),Math.max(i,e)<2*-r.e-1?F(new o(r),e,t,!0):(o.precision=n=i-r.e,r=O(r.plus(1),new o(1).minus(r),n+e,1),o.precision=e+4,o.rounding=1,r=r.ln(),o.precision=e,o.rounding=t,r.times(.5))):new o(NaN)},M.inverseSine=M.asin=function(){var e,t,n,i,r=this,o=r.constructor;return r.isZero()?new o(r):(t=r.abs().cmp(1),n=o.precision,i=o.rounding,-1!==t?0===t?((e=U(o,n+4,i).times(.5)).s=r.s,e):new o(NaN):(o.precision=n+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=n,o.rounding=i,r.times(2)))},M.inverseTangent=M.atan=function(){var e,t,n,i,r,o,A,s,a,c=this,u=c.constructor,l=u.precision,g=u.rounding;if(c.isFinite()){if(c.isZero())return new u(c);if(c.abs().eq(1)&&l+4<=S)return(A=U(u,l+4,g).times(.25)).s=c.s,A}else{if(!c.s)return new u(NaN);if(l+4<=S)return(A=U(u,l+4,g).times(.5)).s=c.s,A}for(u.precision=s=l+10,u.rounding=1,e=n=Math.min(28,s/7+2|0);e;--e)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(h=!1,t=Math.ceil(s/7),i=1,a=c.times(c),A=new u(c),r=c;-1!==e;)if(r=r.times(a),o=A.minus(r.div(i+=2)),r=r.times(a),void 0!==(A=o.plus(r.div(i+=2))).d[t])for(e=t;A.d[e]===o.d[e]&&e--;);return n&&(A=A.times(2<this.d.length-2},M.isNaN=function(){return!this.s},M.isNegative=M.isNeg=function(){return this.s<0},M.isPositive=M.isPos=function(){return this.s>0},M.isZero=function(){return!!this.d&&0===this.d[0]},M.lessThan=M.lt=function(e){return this.cmp(e)<0},M.lessThanOrEqualTo=M.lte=function(e){return this.cmp(e)<1},M.logarithm=M.log=function(e){var t,n,i,r,o,A,s,a,c=this,u=c.constructor,l=u.precision,g=u.rounding;if(null==e)e=new u(10),t=!0;else{if(n=(e=new u(e)).d,e.s<0||!n||!n[0]||e.eq(1))return new u(NaN);t=e.eq(10)}if(n=c.d,c.s<0||!n||!n[0]||c.eq(1))return new u(n&&!n[0]?-1/0:1!=c.s?NaN:n?0:1/0);if(t)if(n.length>1)o=!0;else{for(r=n[0];r%10==0;)r/=10;o=1!==r}if(h=!1,A=J(c,s=l+5),i=t?x(u,s+10):J(e,s),T((a=O(A,i,s,1)).d,r=l,g))do{if(A=J(c,s+=10),i=t?x(u,s+10):J(e,s),a=O(A,i,s,1),!o){+D(a.d).slice(r+1,r+15)+1==1e14&&(a=F(a,l+1,0));break}}while(T(a.d,r+=10,g));return h=!0,F(a,l,g)},M.minus=M.sub=function(e){var t,n,i,r,o,A,s,a,c,u,l,g,d=this,p=d.constructor;if(e=new p(e),!d.d||!e.d)return d.s&&e.s?d.d?e.s=-e.s:e=new p(e.d||d.s!==e.s?d:NaN):e=new p(NaN),e;if(d.s!=e.s)return e.s=-e.s,d.plus(e);if(c=d.d,g=e.d,s=p.precision,a=p.rounding,!c[0]||!g[0]){if(g[0])e.s=-e.s;else{if(!c[0])return new p(3===a?-0:0);e=new p(d)}return h?F(e,s,a):e}if(n=B(e.e/7),u=B(d.e/7),c=c.slice(),o=u-n){for((l=o<0)?(t=c,o=-o,A=g.length):(t=g,n=u,A=c.length),o>(i=Math.max(Math.ceil(s/7),A)+2)&&(o=i,t.length=1),t.reverse(),i=o;i--;)t.push(0);t.reverse()}else{for((l=(i=c.length)<(A=g.length))&&(A=i),i=0;i0;--i)c[A++]=0;for(i=g.length;i>o;){if(c[--i](A=(o=Math.ceil(s/7))>A?o+1:A+1)&&(r=A,n.length=1),n.reverse();r--;)n.push(0);n.reverse()}for((A=c.length)-(r=u.length)<0&&(r=A,n=u,u=c,c=n),t=0;r;)t=(c[--r]=c[r]+u[r]+t)/k|0,c[r]%=k;for(t&&(c.unshift(t),++i),A=c.length;0==c[--A];)c.pop();return e.d=c,e.e=G(c,i),h?F(e,s,a):e},M.precision=M.sd=function(e){var t,n=this;if(void 0!==e&&e!==!!e&&1!==e&&0!==e)throw Error(f+e);return n.d?(t=_(n.d),e&&n.e+1>t&&(t=n.e+1)):t=NaN,t},M.round=function(){var e=this,t=e.constructor;return F(new t(e),e.e+1,t.rounding)},M.sine=M.sin=function(){var e,t,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+Math.max(n.e,n.sd())+7,i.rounding=1,n=function(e,t){var n,i=t.d.length;if(i<3)return t.isZero()?t:H(e,2,t,t);n=(n=1.4*Math.sqrt(i))>16?16:0|n,t=H(e,2,t=t.times(1/V(5,n)),t);for(var r,o=new e(5),A=new e(16),s=new e(20);n--;)r=t.times(t),t=t.times(o.plus(r.times(A.times(r).minus(s))));return t}(i,X(i,n)),i.precision=e,i.rounding=t,F(s>2?n.neg():n,e,t,!0)):new i(NaN)},M.squareRoot=M.sqrt=function(){var e,t,n,i,r,o,A=this,s=A.d,a=A.e,c=A.s,u=A.constructor;if(1!==c||!s||!s[0])return new u(!c||c<0&&(!s||s[0])?NaN:s?A:1/0);for(h=!1,0==(c=Math.sqrt(+A))||c==1/0?(((t=D(s)).length+a)%2==0&&(t+="0"),c=Math.sqrt(t),a=B((a+1)/2)-(a<0||a%2),i=new u(t=c==1/0?"5e"+a:(t=c.toExponential()).slice(0,t.indexOf("e")+1)+a)):i=new u(c.toString()),n=(a=u.precision)+3;;)if(i=(o=i).plus(O(A,o,n+2,1)).times(.5),D(o.d).slice(0,n)===(t=D(i.d)).slice(0,n)){if("9999"!=(t=t.slice(n-3,n+1))&&(r||"4999"!=t)){+t&&(+t.slice(1)||"5"!=t.charAt(0))||(F(i,a+1,1),e=!i.times(i).eq(A));break}if(!r&&(F(o,a+1,0),o.times(o).eq(A))){i=o;break}n+=4,r=1}return h=!0,F(i,a,u.rounding,e)},M.tangent=M.tan=function(){var e,t,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+10,i.rounding=1,(n=n.sin()).s=1,n=O(n,new i(1).minus(n.times(n)).sqrt(),e+10,0),i.precision=e,i.rounding=t,F(2==s||4==s?n.neg():n,e,t,!0)):new i(NaN)},M.times=M.mul=function(e){var t,n,i,r,o,A,s,a,c,u=this,l=u.constructor,g=u.d,d=(e=new l(e)).d;if(e.s*=u.s,!(g&&g[0]&&d&&d[0]))return new l(!e.s||g&&!g[0]&&!d||d&&!d[0]&&!g?NaN:g&&d?0*e.s:e.s/0);for(n=B(u.e/7)+B(e.e/7),(a=g.length)<(c=d.length)&&(o=g,g=d,d=o,A=a,a=c,c=A),o=[],i=A=a+c;i--;)o.push(0);for(i=c;--i>=0;){for(t=0,r=a+i;r>i;)s=o[r]+d[i]*g[r-i-1]+t,o[r--]=s%k|0,t=s/k|0;o[r]=(o[r]+t)%k|0}for(;!o[--A];)o.pop();return t?++n:o.shift(),e.d=o,e.e=G(o,n),h?F(e,l.precision,l.rounding):e},M.toBinary=function(e,t){return $(this,2,e,t)},M.toDecimalPlaces=M.toDP=function(e,t){var n=this,i=n.constructor;return n=new i(n),void 0===e?n:(N(e,0,c),void 0===t?t=i.rounding:N(t,0,8),F(n,e+n.e+1,t))},M.toExponential=function(e,t){var n,i=this,r=i.constructor;return void 0===e?n=R(i,!0):(N(e,0,c),void 0===t?t=r.rounding:N(t,0,8),n=R(i=F(new r(i),e+1,t),!0,e+1)),i.isNeg()&&!i.isZero()?"-"+n:n},M.toFixed=function(e,t){var n,i,r=this,o=r.constructor;return void 0===e?n=R(r):(N(e,0,c),void 0===t?t=o.rounding:N(t,0,8),n=R(i=F(new o(r),e+r.e+1,t),!1,e+i.e+1)),r.isNeg()&&!r.isZero()?"-"+n:n},M.toFraction=function(e){var t,n,i,r,o,A,s,a,c,u,l,g,d=this,p=d.d,m=d.constructor;if(!p)return new m(d);if(c=n=new m(1),i=a=new m(0),A=(o=(t=new m(i)).e=_(p)-d.e-1)%7,t.d[0]=C(10,A<0?7+A:A),null==e)e=o>0?t:c;else{if(!(s=new m(e)).isInt()||s.lt(c))throw Error(f+s);e=s.gt(t)?o>0?t:c:s}for(h=!1,s=new m(D(p)),u=m.precision,m.precision=o=7*p.length*2;l=O(s,t,0,1,1),1!=(r=n.plus(l.times(i))).cmp(e);)n=i,i=r,r=c,c=a.plus(l.times(r)),a=r,r=t,t=s.minus(l.times(r)),s=r;return r=O(e.minus(n),i,0,1,1),a=a.plus(r.times(c)),n=n.plus(r.times(i)),a.s=c.s=d.s,g=O(c,i,o,1).minus(d).abs().cmp(O(a,n,o,1).minus(d).abs())<1?[c,i]:[a,n],m.precision=u,h=!0,g},M.toHexadecimal=M.toHex=function(e,t){return $(this,16,e,t)},M.toNearest=function(e,t){var n=this,i=n.constructor;if(n=new i(n),null==e){if(!n.d)return n;e=new i(1),t=i.rounding}else{if(e=new i(e),void 0===t?t=i.rounding:N(t,0,8),!n.d)return e.s?n:e;if(!e.d)return e.s&&(e.s=n.s),e}return e.d[0]?(h=!1,n=O(n,e,0,t,1).times(e),h=!0,F(n)):(e.s=n.s,n=e),n},M.toNumber=function(){return+this},M.toOctal=function(e,t){return $(this,8,e,t)},M.toPower=M.pow=function(e){var t,n,i,r,o,A,s=this,a=s.constructor,c=+(e=new a(e));if(!(s.d&&e.d&&s.d[0]&&e.d[0]))return new a(C(+s,c));if((s=new a(s)).eq(1))return s;if(i=a.precision,o=a.rounding,e.eq(1))return F(s,i,o);if((t=B(e.e/7))>=e.d.length-1&&(n=c<0?-c:c)<=9007199254740991)return r=K(a,s,n,i),e.s<0?new a(1).div(r):F(r,i,o);if((A=s.s)<0){if(ta.maxE+1||t0?A/0:0):(h=!1,a.rounding=s.s=1,n=Math.min(12,(t+"").length),(r=W(e.times(J(s,i+n)),i)).d&&T((r=F(r,i+5,1)).d,i,o)&&(t=i+10,+D((r=F(W(e.times(J(s,t+n)),t),t+5,1)).d).slice(i+1,i+15)+1==1e14&&(r=F(r,i+1,0))),r.s=A,h=!0,a.rounding=o,F(r,i,o))},M.toPrecision=function(e,t){var n,i=this,r=i.constructor;return void 0===e?n=R(i,i.e<=r.toExpNeg||i.e>=r.toExpPos):(N(e,1,c),void 0===t?t=r.rounding:N(t,0,8),n=R(i=F(new r(i),e,t),e<=i.e||i.e<=r.toExpNeg,e)),i.isNeg()&&!i.isZero()?"-"+n:n},M.toSignificantDigits=M.toSD=function(e,t){var n=this.constructor;return void 0===e?(e=n.precision,t=n.rounding):(N(e,1,c),void 0===t?t=n.rounding:N(t,0,8)),F(new n(this),e,t)},M.toString=function(){var e=this,t=e.constructor,n=R(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?"-"+n:n},M.truncated=M.trunc=function(){return F(new this.constructor(this),this.e+1,1)},M.valueOf=M.toJSON=function(){var e=this,t=e.constructor,n=R(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?"-"+n:n};var O=function(){function e(e,t,n){var i,r=0,o=e.length;for(e=e.slice();o--;)i=e[o]*t+r,e[o]=i%n|0,r=i/n|0;return r&&e.unshift(r),e}function t(e,t,n,i){var r,o;if(n!=i)o=n>i?1:-1;else for(r=o=0;rt[r]?1:-1;break}return o}function n(e,t,n,i){for(var r=0;n--;)e[n]-=r,r=e[n]1;)e.shift()}return function(i,r,o,s,a,c){var u,l,g,d,h,p,f,m,I,y,C,w,E,Q,b,v,S,M,D,N,T=i.constructor,P=i.s==r.s?1:-1,O=i.d,R=r.d;if(!(O&&O[0]&&R&&R[0]))return new T(i.s&&r.s&&(O?!R||O[0]!=R[0]:R)?O&&0==O[0]||!R?0*P:P/0:NaN);for(c?(h=1,l=i.e-r.e):(c=k,h=7,l=B(i.e/h)-B(r.e/h)),D=R.length,S=O.length,y=(I=new T(P)).d=[],g=0;R[g]==(O[g]||0);g++);if(R[g]>(O[g]||0)&&l--,null==o?(Q=o=T.precision,s=T.rounding):Q=a?o+(i.e-r.e)+1:o,Q<0)y.push(1),p=!0;else{if(Q=Q/h+2|0,g=0,1==D){for(d=0,R=R[0],Q++;(g1&&(R=e(R,d,c),O=e(O,d,c),D=R.length,S=O.length),v=D,w=(C=O.slice(0,D)).length;w=c/2&&++M;do{d=0,(u=t(R,C,D,w))<0?(E=C[0],D!=w&&(E=E*c+(C[1]||0)),(d=E/M|0)>1?(d>=c&&(d=c-1),1==(u=t(f=e(R,d,c),C,m=f.length,w=C.length))&&(d--,n(f,D=10;d/=10)g++;I.e=g+l*h-1,F(I,a?o+I.e+1:o,s,p)}return I}}();function F(e,t,n,i){var r,o,A,s,a,c,u,l,g,d=e.constructor;e:if(null!=t){if(!(l=e.d))return e;for(r=1,s=l[0];s>=10;s/=10)r++;if((o=t-r)<0)o+=7,A=t,a=(u=l[g=0])/C(10,r-A-1)%10|0;else if((g=Math.ceil((o+1)/7))>=(s=l.length)){if(!i)break e;for(;s++<=g;)l.push(0);u=a=0,r=1,A=(o%=7)-7+1}else{for(u=s=l[g],r=1;s>=10;s/=10)r++;a=(A=(o%=7)-7+r)<0?0:u/C(10,r-A-1)%10|0}if(i=i||t<0||void 0!==l[g+1]||(A<0?u:u%C(10,r-A-1)),c=n<4?(a||i)&&(0==n||n==(e.s<0?3:2)):a>5||5==a&&(4==n||i||6==n&&(o>0?A>0?u/C(10,r-A):0:l[g-1])%10&1||n==(e.s<0?8:7)),t<1||!l[0])return l.length=0,c?(t-=e.e+1,l[0]=C(10,(7-t%7)%7),e.e=-t||0):l[0]=e.e=0,e;if(0==o?(l.length=g,s=1,g--):(l.length=g+1,s=C(10,7-o),l[g]=A>0?(u/C(10,r-A)%C(10,A)|0)*s:0),c)for(;;){if(0==g){for(o=1,A=l[0];A>=10;A/=10)o++;for(A=l[0]+=s,s=1;A>=10;A/=10)s++;o!=s&&(e.e++,l[0]==k&&(l[0]=1));break}if(l[g]+=s,l[g]!=k)break;l[g--]=0,s=1}for(o=l.length;0===l[--o];)l.pop()}return h&&(e.e>d.maxE?(e.d=null,e.e=NaN):e.e0?o=o.charAt(0)+"."+o.slice(1)+L(i):A>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(e.e<0?"e":"e+")+e.e):r<0?(o="0."+L(-r-1)+o,n&&(i=n-A)>0&&(o+=L(i))):r>=A?(o+=L(r+1-A),n&&(i=n-r-1)>0&&(o=o+"."+L(i))):((i=r+1)0&&(r+1===A&&(o+="."),o+=L(i))),o}function G(e,t){var n=e[0];for(t*=7;n>=10;n/=10)t++;return t}function x(e,t,n){if(t>v)throw h=!0,n&&(e.precision=n),Error(m);return F(new e(l),t,1,!0)}function U(e,t,n){if(t>S)throw Error(m);return F(new e(g),t,n,!0)}function _(e){var t=e.length-1,n=7*t+1;if(t=e[t]){for(;t%10==0;t/=10)n--;for(t=e[0];t>=10;t/=10)n++}return n}function L(e){for(var t="";e--;)t+="0";return t}function K(e,t,n,i){var r,o=new e(1),A=Math.ceil(i/7+4);for(h=!1;;){if(n%2&&ee((o=o.times(t)).d,A)&&(r=!0),0===(n=B(n/2))){n=o.d.length-1,r&&0===o.d[n]&&++o.d[n];break}ee((t=t.times(t)).d,A)}return h=!0,o}function Y(e){return 1&e.d[e.d.length-1]}function j(e,t,n){for(var i,r=new e(t[0]),o=0;++o17)return new g(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(null==t?(h=!1,a=p):a=t,s=new g(.03125);e.e>-2;)e=e.times(s),l+=5;for(a+=i=Math.log(C(2,l))/Math.LN10*2+5|0,n=o=A=new g(1),g.precision=a;;){if(o=F(o.times(e),a,1),n=n.times(++u),D((s=A.plus(O(o,n,a,1))).d).slice(0,a)===D(A.d).slice(0,a)){for(r=l;r--;)A=F(A.times(A),a,1);if(null!=t)return g.precision=p,A;if(!(c<3&&T(A.d,a-i,d,c)))return F(A,g.precision=p,d,h=!0);g.precision=a+=10,n=o=s=new g(1),u=0,c++}A=s}}function J(e,t){var n,i,r,o,A,s,a,c,u,l,g,d=1,p=e,f=p.d,m=p.constructor,I=m.rounding,y=m.precision;if(p.s<0||!f||!f[0]||!p.e&&1==f[0]&&1==f.length)return new m(f&&!f[0]?-1/0:1!=p.s?NaN:f?0:p);if(null==t?(h=!1,u=y):u=t,m.precision=u+=10,i=(n=D(f)).charAt(0),!(Math.abs(o=p.e)<15e14))return c=x(m,u+2,y).times(o+""),p=J(new m(i+"."+n.slice(1)),u-10).plus(c),m.precision=y,null==t?F(p,y,I,h=!0):p;for(;i<7&&1!=i||1==i&&n.charAt(1)>3;)i=(n=D((p=p.times(e)).d)).charAt(0),d++;for(o=p.e,i>1?(p=new m("0."+n),o++):p=new m(i+"."+n.slice(1)),l=p,a=A=p=O(p.minus(1),p.plus(1),u,1),g=F(p.times(p),u,1),r=3;;){if(A=F(A.times(g),u,1),D((c=a.plus(O(A,new m(r),u,1))).d).slice(0,u)===D(a.d).slice(0,u)){if(a=a.times(2),0!==o&&(a=a.plus(x(m,u+2,y).times(o+""))),a=O(a,new m(d),u,1),null!=t)return m.precision=y,a;if(!T(a.d,u-10,I,s))return F(a,m.precision=y,I,h=!0);m.precision=u+=10,c=A=p=O(l.minus(1),l.plus(1),u,1),g=F(p.times(p),u,1),r=s=1}a=c,r+=2}}function q(e){return String(e.s*e.s/0)}function Z(e,t){var n,i,r;for((n=t.indexOf("."))>-1&&(t=t.replace(".","")),(i=t.search(/e/i))>0?(n<0&&(n=i),n+=+t.slice(i+1),t=t.substring(0,i)):n<0&&(n=t.length),i=0;48===t.charCodeAt(i);i++);for(r=t.length;48===t.charCodeAt(r-1);--r);if(t=t.slice(i,r)){if(r-=i,e.e=n=n-i-1,e.d=[],i=(n+1)%7,n<0&&(i+=7),ie.constructor.maxE?(e.d=null,e.e=NaN):e.e-1){if(t=t.replace(/(\d)_(?=\d)/g,"$1"),b.test(t))return Z(e,t)}else if("Infinity"===t||"NaN"===t)return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(E.test(t))n=16,t=t.toLowerCase();else if(w.test(t))n=2;else{if(!Q.test(t))throw Error(f+t);n=8}for((A=t.search(/p/i))>0?(c=+t.slice(A+1),t=t.substring(2,A)):t=t.slice(2),s=(A=t.indexOf("."))>=0,i=e.constructor,s&&(A=(a=(t=t.replace(".","")).length)-A,r=K(i,new i(n),A,2*A)),A=l=(u=P(t,n,k)).length-1;0===u[A];--A)u.pop();return A<0?new i(0*e.s):(e.e=G(u,l),e.d=u,h=!1,s&&(e=O(e,r,4*a)),c&&(e=e.times(Math.abs(c)<54?C(2,c):o.pow(2,c))),h=!0,e)}function H(e,t,n,i,r){var o,A,s,a,c=e.precision,u=Math.ceil(c/7);for(h=!1,a=n.times(n),s=new e(i);;){if(A=O(s.times(a),new e(t++*t++),c,1),s=r?i.plus(A):i.minus(A),i=O(A.times(a),new e(t++*t++),c,1),void 0!==(A=s.plus(i)).d[u]){for(o=u;A.d[o]===s.d[o]&&o--;);if(-1==o)break}o=s,s=i,i=A,A=o}return h=!0,A.d.length=u+1,A}function V(e,t){for(var n=e;--t;)n*=e;return n}function X(e,t){var n,i=t.s<0,r=U(e,e.precision,1),o=r.times(.5);if((t=t.abs()).lte(o))return s=i?4:1,t;if((n=t.divToInt(r)).isZero())s=i?3:2;else{if((t=t.minus(n.times(r))).lte(o))return s=Y(n)?i?2:3:i?4:1,t;s=Y(n)?i?1:4:i?3:2}return t.minus(r).abs()}function $(e,t,n,i){var r,o,s,a,l,g,d,h,p,f=e.constructor,m=void 0!==n;if(m?(N(n,1,c),void 0===i?i=f.rounding:N(i,0,8)):(n=f.precision,i=f.rounding),e.isFinite()){for(m?(r=2,16==t?n=4*n-3:8==t&&(n=3*n-2)):r=t,(s=(d=R(e)).indexOf("."))>=0&&(d=d.replace(".",""),(p=new f(1)).e=d.length-s,p.d=P(R(p),10,r),p.e=p.d.length),o=l=(h=P(d,10,r)).length;0==h[--l];)h.pop();if(h[0]){if(s<0?o--:((e=new f(e)).d=h,e.e=o,h=(e=O(e,p,n,i,0,r)).d,o=e.e,g=A),s=h[n],a=r/2,g=g||void 0!==h[n+1],g=i<4?(void 0!==s||g)&&(0===i||i===(e.s<0?3:2)):s>a||s===a&&(4===i||g||6===i&&1&h[n-1]||i===(e.s<0?8:7)),h.length=n,g)for(;++h[--n]>r-1;)h[n]=0,n||(++o,h.unshift(1));for(l=h.length;!h[l-1];--l);for(s=0,d="";s1)if(16==t||8==t){for(s=16==t?4:3,--l;l%s;l++)d+="0";for(l=(h=P(d,r,t)).length;!h[l-1];--l);for(s=1,d="1.";sl)for(o-=l;o--;)d+="0";else ot)return e.length=t,!0}function te(e){return new this(e).abs()}function ne(e){return new this(e).acos()}function ie(e){return new this(e).acosh()}function re(e,t){return new this(e).plus(t)}function oe(e){return new this(e).asin()}function Ae(e){return new this(e).asinh()}function se(e){return new this(e).atan()}function ae(e){return new this(e).atanh()}function ce(e,t){e=new this(e),t=new this(t);var n,i=this.precision,r=this.rounding,o=i+4;return e.s&&t.s?e.d||t.d?!t.d||e.isZero()?(n=t.s<0?U(this,i,r):new this(0)).s=e.s:!e.d||t.isZero()?(n=U(this,o,1).times(.5)).s=e.s:t.s<0?(this.precision=o,this.rounding=1,n=this.atan(O(e,t,o,1)),t=U(this,o,1),this.precision=i,this.rounding=r,n=e.s<0?n.minus(t):n.plus(t)):n=this.atan(O(e,t,o,1)):(n=U(this,o,1).times(t.s>0?.25:.75)).s=e.s:n=new this(NaN),n}function ue(e){return new this(e).cbrt()}function le(e){return F(e=new this(e),e.e+1,2)}function ge(e,t,n){return new this(e).clamp(t,n)}function de(e){if(!e||"object"!=typeof e)throw Error(p+"Object expected");var t,n,i,r=!0===e.defaults,o=["precision",1,c,"rounding",0,8,"toExpNeg",-a,0,"toExpPos",0,a,"maxE",0,a,"minE",-a,0,"modulo",0,9];for(t=0;t=o[t+1]&&i<=o[t+2]))throw Error(f+n+": "+i);this[n]=i}if(n="crypto",r&&(this[n]=d[n]),void 0!==(i=e[n])){if(!0!==i&&!1!==i&&0!==i&&1!==i)throw Error(f+n+": "+i);if(i){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw Error(I);this[n]=!0}else this[n]=!1}return this}function he(e){return new this(e).cos()}function pe(e){return new this(e).cosh()}function fe(e,t){return new this(e).div(t)}function me(e){return new this(e).exp()}function Ie(e){return F(e=new this(e),e.e+1,3)}function ye(){var e,t,n=new this(0);for(h=!1,e=0;e=429e7?t[o]=crypto.getRandomValues(new Uint32Array(1))[0]:s[o++]=r%1e7;else{if(!crypto.randomBytes)throw Error(I);for(t=crypto.randomBytes(i*=4);o=214e7?crypto.randomBytes(4).copy(t,o):(s.push(r%1e7),o+=4);o=i/4}else for(;o=10;r/=10)i++;i<7&&(n-=7-i)}return A.e=n,A.d=s,A}function Ne(e){return F(e=new this(e),e.e+1,this.rounding)}function Te(e){return(e=new this(e)).d?e.d[0]?e.s:0*e.s:e.s||NaN}function Pe(e){return new this(e).sin()}function Oe(e){return new this(e).sinh()}function Fe(e){return new this(e).sqrt()}function Re(e,t){return new this(e).sub(t)}function Ge(){var e=0,t=arguments,n=new this(t[e]);for(h=!1;n.s&&++eo.maxE?(r.e=NaN,r.d=null):e.e=10;n/=10)t++;return void(h?t>o.maxE?(r.e=NaN,r.d=null):t{"use strict";function t(e,t){for(const n in t)Object.defineProperty(e,n,{value:t[n],enumerable:!0,configurable:!0});return e}e.exports=function(e,n,i){if(!e||"string"==typeof e)throw new TypeError("Please pass an Error to err-code");i||(i={}),"object"==typeof n&&(i=n,n=void 0),null!=n&&(i.code=n);try{return t(e,i)}catch(n){i.message=e.message,i.stack=e.stack;const r=function(){};return r.prototype=Object.create(Object.getPrototypeOf(e)),t(new r,i)}}},11312:e=>{"use strict";var t=Object.prototype.hasOwnProperty,n="~";function i(){}function r(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function o(e,t,i,o,A){if("function"!=typeof i)throw new TypeError("The listener must be a function");var s=new r(i,o||e,A),a=n?n+t:t;return e._events[a]?e._events[a].fn?e._events[a]=[e._events[a],s]:e._events[a].push(s):(e._events[a]=s,e._eventsCount++),e}function A(e,t){0==--e._eventsCount?e._events=new i:delete e._events[t]}function s(){this._events=new i,this._eventsCount=0}Object.create&&(i.prototype=Object.create(null),(new i).__proto__||(n=!1)),s.prototype.eventNames=function(){var e,i,r=[];if(0===this._eventsCount)return r;for(i in e=this._events)t.call(e,i)&&r.push(n?i.slice(1):i);return Object.getOwnPropertySymbols?r.concat(Object.getOwnPropertySymbols(e)):r},s.prototype.listeners=function(e){var t=n?n+e:e,i=this._events[t];if(!i)return[];if(i.fn)return[i.fn];for(var r=0,o=i.length,A=new Array(o);r{"use strict";var i,r=n(49500),o="object"==typeof Reflect?Reflect:null,A=o&&"function"==typeof o.apply?o.apply:function(e,t,n){return Function.prototype.apply.call(e,t,n)};i=o&&"function"==typeof o.ownKeys?o.ownKeys:Object.getOwnPropertySymbols?function(e){return Object.getOwnPropertyNames(e).concat(Object.getOwnPropertySymbols(e))}:function(e){return Object.getOwnPropertyNames(e)};var s=Number.isNaN||function(e){return e!=e};function a(){a.init.call(this)}e.exports=a,e.exports.once=function(e,t){return new Promise((function(n,i){function r(n){e.removeListener(t,o),i(n)}function o(){"function"==typeof e.removeListener&&e.removeListener("error",r),n([].slice.call(arguments))}I(e,t,o,{once:!0}),"error"!==t&&function(e,t,n){"function"==typeof e.on&&I(e,"error",t,{once:!0})}(e,r)}))},a.EventEmitter=a,a.prototype._events=void 0,a.prototype._eventsCount=0,a.prototype._maxListeners=void 0;var c=10;function u(e){if("function"!=typeof e)throw new TypeError('The "listener" argument must be of type Function. Received type '+typeof e)}function l(e){return void 0===e._maxListeners?a.defaultMaxListeners:e._maxListeners}function g(e,t,n,i){var o,A,s,a;if(u(n),void 0===(A=e._events)?(A=e._events=Object.create(null),e._eventsCount=0):(void 0!==A.newListener&&(e.emit("newListener",t,n.listener?n.listener:n),A=e._events),s=A[t]),void 0===s)s=A[t]=n,++e._eventsCount;else if("function"==typeof s?s=A[t]=i?[n,s]:[s,n]:i?s.unshift(n):s.push(n),(o=l(e))>0&&s.length>o&&!s.warned){s.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+s.length+" "+String(t)+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=s.length,a=c,r&&r.warn&&r.warn(a)}return e}function d(){if(!this.fired)return this.target.removeListener(this.type,this.wrapFn),this.fired=!0,0===arguments.length?this.listener.call(this.target):this.listener.apply(this.target,arguments)}function h(e,t,n){var i={fired:!1,wrapFn:void 0,target:e,type:t,listener:n},r=d.bind(i);return r.listener=n,i.wrapFn=r,r}function p(e,t,n){var i=e._events;if(void 0===i)return[];var r=i[t];return void 0===r?[]:"function"==typeof r?n?[r.listener||r]:[r]:n?function(e){for(var t=new Array(e.length),n=0;n0&&(o=t[0]),o instanceof Error)throw o;var s=new Error("Unhandled error."+(o?" ("+o.message+")":""));throw s.context=o,s}var a=r[e];if(void 0===a)return!1;if("function"==typeof a)A(a,this,t);else{var c=a.length,u=m(a,c);for(n=0;n=0;o--)if(n[o]===t||n[o].listener===t){A=n[o].listener,r=o;break}if(r<0)return this;0===r?n.shift():function(e,t){for(;t+1=0;i--)this.removeListener(e,t[i]);return this},a.prototype.listeners=function(e){return p(this,e,!0)},a.prototype.rawListeners=function(e){return p(this,e,!1)},a.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):f.call(e,t)},a.prototype.listenerCount=f,a.prototype.eventNames=function(){return this._eventsCount>0?i(this._events):[]}},1986:e=>{"use strict";e.exports=function e(t,n){if(t===n)return!0;if(t&&n&&"object"==typeof t&&"object"==typeof n){if(t.constructor!==n.constructor)return!1;var i,r,o;if(Array.isArray(t)){if((i=t.length)!=n.length)return!1;for(r=i;0!=r--;)if(!e(t[r],n[r]))return!1;return!0}if(t.constructor===RegExp)return t.source===n.source&&t.flags===n.flags;if(t.valueOf!==Object.prototype.valueOf)return t.valueOf()===n.valueOf();if(t.toString!==Object.prototype.toString)return t.toString()===n.toString();if((i=(o=Object.keys(t)).length)!==Object.keys(n).length)return!1;for(r=i;0!=r--;)if(!Object.prototype.hasOwnProperty.call(n,o[r]))return!1;for(r=i;0!=r--;){var A=o[r];if(!("_owner"===A&&t.$$typeof||e(t[A],n[A])))return!1}return!0}return t!=t&&n!=n}},52258:(e,t)=>{var n=Object.keys;t.D=function(e,t){if(e===t)return!0;if(!(e instanceof Object&&t instanceof Object))return!1;for(var i=n(e),r=i.length,o=0;o{t.read=function(e,t,n,i,r){var o,A,s=8*r-i-1,a=(1<>1,u=-7,l=n?r-1:0,g=n?-1:1,d=e[t+l];for(l+=g,o=d&(1<<-u)-1,d>>=-u,u+=s;u>0;o=256*o+e[t+l],l+=g,u-=8);for(A=o&(1<<-u)-1,o>>=-u,u+=i;u>0;A=256*A+e[t+l],l+=g,u-=8);if(0===o)o=1-c;else{if(o===a)return A?NaN:1/0*(d?-1:1);A+=Math.pow(2,i),o-=c}return(d?-1:1)*A*Math.pow(2,o-i)},t.write=function(e,t,n,i,r,o){var A,s,a,c=8*o-r-1,u=(1<>1,g=23===r?Math.pow(2,-24)-Math.pow(2,-77):0,d=i?0:o-1,h=i?1:-1,p=t<0||0===t&&1/t<0?1:0;for(t=Math.abs(t),isNaN(t)||t===1/0?(s=isNaN(t)?1:0,A=u):(A=Math.floor(Math.log(t)/Math.LN2),t*(a=Math.pow(2,-A))<1&&(A--,a*=2),(t+=A+l>=1?g/a:g*Math.pow(2,1-l))*a>=2&&(A++,a/=2),A+l>=u?(s=0,A=u):A+l>=1?(s=(t*a-1)*Math.pow(2,r),A+=l):(s=t*Math.pow(2,l-1)*Math.pow(2,r),A=0));r>=8;e[n+d]=255&s,d+=h,s/=256,r-=8);for(A=A<0;e[n+d]=255&A,d+=h,A/=256,c-=8);e[n+d-h]|=128*p}},53670:e=>{"use strict";e.exports=function(e,t,n,i,r,o,A,s){if(!e){var a;if(void 0===t)a=new Error("Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.");else{var c=[n,i,r,o,A,s],u=0;(a=new Error(t.replace(/%s/g,(function(){return c[u++]})))).name="Invariant Violation"}throw a.framesToPop=1,a}}},57167:(e,t,n)=>{"use strict";const i=n(44068).v4,r=n(90391),o=function(e,t){if(!(this instanceof o))return new o(e,t);t||(t={}),this.options={reviver:void 0!==t.reviver?t.reviver:null,replacer:void 0!==t.replacer?t.replacer:null,generator:void 0!==t.generator?t.generator:function(){return i()},version:void 0!==t.version?t.version:2,notificationIdNull:"boolean"==typeof t.notificationIdNull&&t.notificationIdNull},this.callServer=e};e.exports=o,o.prototype.request=function(e,t,n,i){const o=this;let A=null;const s=Array.isArray(e)&&"function"==typeof t;if(1===this.options.version&&s)throw new TypeError("JSON-RPC 1.0 does not support batching");if(s||!s&&e&&"object"==typeof e&&"function"==typeof t)i=t,A=e;else{"function"==typeof n&&(i=n,n=void 0);const o="function"==typeof i;try{A=r(e,t,n,{generator:this.options.generator,version:this.options.version,notificationIdNull:this.options.notificationIdNull})}catch(e){if(o)return i(e);throw e}if(!o)return A}let a;try{a=JSON.stringify(A,this.options.replacer)}catch(e){return i(e)}return this.callServer(a,(function(e,t){o._parseResponse(e,t,i)})),A},o.prototype._parseResponse=function(e,t,n){if(e)return void n(e);if(!t)return n();let i;try{i=JSON.parse(t,this.options.reviver)}catch(e){return n(e)}if(3===n.length){if(Array.isArray(i)){const e=function(e){return void 0!==e.error},t=function(t){return!e(t)};return n(null,i.filter(e),i.filter(t))}return n(null,i.error,i.result)}n(null,i)}},90391:(e,t,n)=>{"use strict";const i=n(44068).v4;e.exports=function(e,t,n,r){if("string"!=typeof e)throw new TypeError(e+" must be a string");const o="number"==typeof(r=r||{}).version?r.version:2;if(1!==o&&2!==o)throw new TypeError(o+" must be 1 or 2");const A={method:e};if(2===o&&(A.jsonrpc="2.0"),t){if("object"!=typeof t&&!Array.isArray(t))throw new TypeError(t+" must be an object, array or omitted");A.params=t}if(void 0===n){const e="function"==typeof r.generator?r.generator:function(){return i()};A.id=e(A,r)}else 2===o&&null===n?r.notificationIdNull&&(A.id=null):A.id=n;return A}},7258:(e,t,n)=>{var i,r,o;o=function(){function e(){for(var e=0,t={};e{var process=__webpack_require__(14224),__WEBPACK_AMD_DEFINE_RESULT__;(function(){"use strict";var ERROR="input is invalid type",WINDOW="object"==typeof window,root=WINDOW?window:{};root.JS_SHA256_NO_WINDOW&&(WINDOW=!1);var WEB_WORKER=!WINDOW&&"object"==typeof self,NODE_JS=!root.JS_SHA256_NO_NODE_JS&&"object"==typeof process&&process.versions&&process.versions.node;NODE_JS?root=__webpack_require__.g:WEB_WORKER&&(root=self);var COMMON_JS=!root.JS_SHA256_NO_COMMON_JS&&module.exports,AMD=__webpack_require__.amdO,ARRAY_BUFFER=!root.JS_SHA256_NO_ARRAY_BUFFER&&"undefined"!=typeof ArrayBuffer,HEX_CHARS="0123456789abcdef".split(""),EXTRA=[-2147483648,8388608,32768,128],SHIFT=[24,16,8,0],K=[1116352408,1899447441,3049323471,3921009573,961987163,1508970993,2453635748,2870763221,3624381080,310598401,607225278,1426881987,1925078388,2162078206,2614888103,3248222580,3835390401,4022224774,264347078,604807628,770255983,1249150122,1555081692,1996064986,2554220882,2821834349,2952996808,3210313671,3336571891,3584528711,113926993,338241895,666307205,773529912,1294757372,1396182291,1695183700,1986661051,2177026350,2456956037,2730485921,2820302411,3259730800,3345764771,3516065817,3600352804,4094571909,275423344,430227734,506948616,659060556,883997877,958139571,1322822218,1537002063,1747873779,1955562222,2024104815,2227730452,2361852424,2428436474,2756734187,3204031479,3329325298],OUTPUT_TYPES=["hex","array","digest","arrayBuffer"],blocks=[];!root.JS_SHA256_NO_NODE_JS&&Array.isArray||(Array.isArray=function(e){return"[object Array]"===Object.prototype.toString.call(e)}),!ARRAY_BUFFER||!root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW&&ArrayBuffer.isView||(ArrayBuffer.isView=function(e){return"object"==typeof e&&e.buffer&&e.buffer.constructor===ArrayBuffer});var createOutputMethod=function(e,t){return function(n){return new Sha256(t,!0).update(n)[e]()}},createMethod=function(e){var t=createOutputMethod("hex",e);NODE_JS&&(t=nodeWrap(t,e)),t.create=function(){return new Sha256(e)},t.update=function(e){return t.create().update(e)};for(var n=0;n>6,A[a++]=128|63&o):o<55296||o>=57344?(A[a++]=224|o>>12,A[a++]=128|o>>6&63,A[a++]=128|63&o):(o=65536+((1023&o)<<10|1023&e.charCodeAt(++i)),A[a++]=240|o>>18,A[a++]=128|o>>12&63,A[a++]=128|o>>6&63,A[a++]=128|63&o);e=A}else{if("object"!==r)throw new Error(ERROR);if(null===e)throw new Error(ERROR);if(ARRAY_BUFFER&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||ARRAY_BUFFER&&ArrayBuffer.isView(e)))throw new Error(ERROR)}e.length>64&&(e=new Sha256(t,!0).update(e).array());var c=[],u=[];for(i=0;i<64;++i){var l=e[i]||0;c[i]=92^l,u[i]=54^l}Sha256.call(this,t,n),this.update(u),this.oKeyPad=c,this.inner=!0,this.sharedMemory=n}Sha256.prototype.update=function(e){if(!this.finalized){var t,n=typeof e;if("string"!==n){if("object"!==n)throw new Error(ERROR);if(null===e)throw new Error(ERROR);if(ARRAY_BUFFER&&e.constructor===ArrayBuffer)e=new Uint8Array(e);else if(!(Array.isArray(e)||ARRAY_BUFFER&&ArrayBuffer.isView(e)))throw new Error(ERROR);t=!0}for(var i,r,o=0,A=e.length,s=this.blocks;o>2]|=e[o]<>2]|=i<>2]|=(192|i>>6)<>2]|=(128|63&i)<=57344?(s[r>>2]|=(224|i>>12)<>2]|=(128|i>>6&63)<>2]|=(128|63&i)<>2]|=(240|i>>18)<>2]|=(128|i>>12&63)<>2]|=(128|i>>6&63)<>2]|=(128|63&i)<=64?(this.block=s[16],this.start=r-64,this.hash(),this.hashed=!0):this.start=r}return this.bytes>4294967295&&(this.hBytes+=this.bytes/4294967296<<0,this.bytes=this.bytes%4294967296),this}},Sha256.prototype.finalize=function(){if(!this.finalized){this.finalized=!0;var e=this.blocks,t=this.lastByteIndex;e[16]=this.block,e[t>>2]|=EXTRA[3&t],this.block=e[16],t>=56&&(this.hashed||this.hash(),e[0]=this.block,e[16]=e[1]=e[2]=e[3]=e[4]=e[5]=e[6]=e[7]=e[8]=e[9]=e[10]=e[11]=e[12]=e[13]=e[14]=e[15]=0),e[14]=this.hBytes<<3|this.bytes>>>29,e[15]=this.bytes<<3,this.hash()}},Sha256.prototype.hash=function(){var e,t,n,i,r,o,A,s,a,c=this.h0,u=this.h1,l=this.h2,g=this.h3,d=this.h4,h=this.h5,p=this.h6,f=this.h7,m=this.blocks;for(e=16;e<64;++e)t=((r=m[e-15])>>>7|r<<25)^(r>>>18|r<<14)^r>>>3,n=((r=m[e-2])>>>17|r<<15)^(r>>>19|r<<13)^r>>>10,m[e]=m[e-16]+t+m[e-7]+n<<0;for(a=u&l,e=0;e<64;e+=4)this.first?(this.is224?(o=300032,f=(r=m[0]-1413257819)-150054599<<0,g=r+24177077<<0):(o=704751109,f=(r=m[0]-210244248)-1521486534<<0,g=r+143694565<<0),this.first=!1):(t=(c>>>2|c<<30)^(c>>>13|c<<19)^(c>>>22|c<<10),i=(o=c&u)^c&l^a,f=g+(r=f+(n=(d>>>6|d<<26)^(d>>>11|d<<21)^(d>>>25|d<<7))+(d&h^~d&p)+K[e]+m[e])<<0,g=r+(t+i)<<0),t=(g>>>2|g<<30)^(g>>>13|g<<19)^(g>>>22|g<<10),i=(A=g&c)^g&u^o,p=l+(r=p+(n=(f>>>6|f<<26)^(f>>>11|f<<21)^(f>>>25|f<<7))+(f&d^~f&h)+K[e+1]+m[e+1])<<0,t=((l=r+(t+i)<<0)>>>2|l<<30)^(l>>>13|l<<19)^(l>>>22|l<<10),i=(s=l&g)^l&c^A,h=u+(r=h+(n=(p>>>6|p<<26)^(p>>>11|p<<21)^(p>>>25|p<<7))+(p&f^~p&d)+K[e+2]+m[e+2])<<0,t=((u=r+(t+i)<<0)>>>2|u<<30)^(u>>>13|u<<19)^(u>>>22|u<<10),i=(a=u&l)^u&g^s,d=c+(r=d+(n=(h>>>6|h<<26)^(h>>>11|h<<21)^(h>>>25|h<<7))+(h&p^~h&f)+K[e+3]+m[e+3])<<0,c=r+(t+i)<<0;this.h0=this.h0+c<<0,this.h1=this.h1+u<<0,this.h2=this.h2+l<<0,this.h3=this.h3+g<<0,this.h4=this.h4+d<<0,this.h5=this.h5+h<<0,this.h6=this.h6+p<<0,this.h7=this.h7+f<<0},Sha256.prototype.hex=function(){this.finalize();var e=this.h0,t=this.h1,n=this.h2,i=this.h3,r=this.h4,o=this.h5,A=this.h6,s=this.h7,a=HEX_CHARS[e>>28&15]+HEX_CHARS[e>>24&15]+HEX_CHARS[e>>20&15]+HEX_CHARS[e>>16&15]+HEX_CHARS[e>>12&15]+HEX_CHARS[e>>8&15]+HEX_CHARS[e>>4&15]+HEX_CHARS[15&e]+HEX_CHARS[t>>28&15]+HEX_CHARS[t>>24&15]+HEX_CHARS[t>>20&15]+HEX_CHARS[t>>16&15]+HEX_CHARS[t>>12&15]+HEX_CHARS[t>>8&15]+HEX_CHARS[t>>4&15]+HEX_CHARS[15&t]+HEX_CHARS[n>>28&15]+HEX_CHARS[n>>24&15]+HEX_CHARS[n>>20&15]+HEX_CHARS[n>>16&15]+HEX_CHARS[n>>12&15]+HEX_CHARS[n>>8&15]+HEX_CHARS[n>>4&15]+HEX_CHARS[15&n]+HEX_CHARS[i>>28&15]+HEX_CHARS[i>>24&15]+HEX_CHARS[i>>20&15]+HEX_CHARS[i>>16&15]+HEX_CHARS[i>>12&15]+HEX_CHARS[i>>8&15]+HEX_CHARS[i>>4&15]+HEX_CHARS[15&i]+HEX_CHARS[r>>28&15]+HEX_CHARS[r>>24&15]+HEX_CHARS[r>>20&15]+HEX_CHARS[r>>16&15]+HEX_CHARS[r>>12&15]+HEX_CHARS[r>>8&15]+HEX_CHARS[r>>4&15]+HEX_CHARS[15&r]+HEX_CHARS[o>>28&15]+HEX_CHARS[o>>24&15]+HEX_CHARS[o>>20&15]+HEX_CHARS[o>>16&15]+HEX_CHARS[o>>12&15]+HEX_CHARS[o>>8&15]+HEX_CHARS[o>>4&15]+HEX_CHARS[15&o]+HEX_CHARS[A>>28&15]+HEX_CHARS[A>>24&15]+HEX_CHARS[A>>20&15]+HEX_CHARS[A>>16&15]+HEX_CHARS[A>>12&15]+HEX_CHARS[A>>8&15]+HEX_CHARS[A>>4&15]+HEX_CHARS[15&A];return this.is224||(a+=HEX_CHARS[s>>28&15]+HEX_CHARS[s>>24&15]+HEX_CHARS[s>>20&15]+HEX_CHARS[s>>16&15]+HEX_CHARS[s>>12&15]+HEX_CHARS[s>>8&15]+HEX_CHARS[s>>4&15]+HEX_CHARS[15&s]),a},Sha256.prototype.toString=Sha256.prototype.hex,Sha256.prototype.digest=function(){this.finalize();var e=this.h0,t=this.h1,n=this.h2,i=this.h3,r=this.h4,o=this.h5,A=this.h6,s=this.h7,a=[e>>24&255,e>>16&255,e>>8&255,255&e,t>>24&255,t>>16&255,t>>8&255,255&t,n>>24&255,n>>16&255,n>>8&255,255&n,i>>24&255,i>>16&255,i>>8&255,255&i,r>>24&255,r>>16&255,r>>8&255,255&r,o>>24&255,o>>16&255,o>>8&255,255&o,A>>24&255,A>>16&255,A>>8&255,255&A];return this.is224||a.push(s>>24&255,s>>16&255,s>>8&255,255&s),a},Sha256.prototype.array=Sha256.prototype.digest,Sha256.prototype.arrayBuffer=function(){this.finalize();var e=new ArrayBuffer(this.is224?28:32),t=new DataView(e);return t.setUint32(0,this.h0),t.setUint32(4,this.h1),t.setUint32(8,this.h2),t.setUint32(12,this.h3),t.setUint32(16,this.h4),t.setUint32(20,this.h5),t.setUint32(24,this.h6),this.is224||t.setUint32(28,this.h7),e},HmacSha256.prototype=new Sha256,HmacSha256.prototype.finalize=function(){if(Sha256.prototype.finalize.call(this),this.inner){this.inner=!1;var e=this.array();Sha256.call(this,this.is224,this.sharedMemory),this.update(this.oKeyPad),this.update(e),Sha256.prototype.finalize.call(this)}};var exports=createMethod();exports.sha256=exports,exports.sha224=createMethod(!0),exports.sha256.hmac=createHmacMethod(),exports.sha224.hmac=createHmacMethod(!0),COMMON_JS?module.exports=exports:(root.sha256=exports.sha256,root.sha224=exports.sha224,AMD&&(__WEBPACK_AMD_DEFINE_RESULT__=function(){return exports}.call(exports,__webpack_require__,exports,module),void 0===__WEBPACK_AMD_DEFINE_RESULT__||(module.exports=__WEBPACK_AMD_DEFINE_RESULT__)))})()},48318:function(e){e.exports=function(){"use strict";var e=Math.imul,t=Math.clz32;function n(e){return n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},n(e)}function i(e,t){for(var n,i=0;ie.length)&&(t=e.length);for(var n=0,i=Array(t);ns.__kMaxLength)throw new RangeError("Maximum BigInt size exceeded");return n}o(s,e);var a=d(s);return r(s,[{key:"toDebugString",value:function(){var e,t=["BigInt["],n=function(e,t){var n="undefined"!=typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(!n){if(Array.isArray(e)||(n=p(e))||t&&e&&"number"==typeof e.length){n&&(e=n);var i=0,r=function(){};return{s:r,n:function(){return i>=e.length?{done:!0}:{done:!1,value:e[i++]}},e:function(e){throw e},f:r}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,A=!0,s=!1;return{s:function(){n=n.call(e)},n:function(){var e=n.next();return A=e.done,e},e:function(e){s=!0,o=e},f:function(){try{A||null==n.return||n.return()}finally{if(s)throw o}}}}(this);try{for(n.s();!(e=n.n()).done;){var i=e.value;t.push((i?(i>>>0).toString(16):i)+", ")}}catch(e){n.e(e)}finally{n.f()}return t.push("]"),t.join("")}},{key:"toString",value:function(){var e=0e||36this.length&&(n=this.length);for(var i=32767&e,r=e>>>15,o=0,A=t,a=0;a>>15,g=s.__imul(u,i),d=s.__imul(u,r),h=s.__imul(l,i),p=A+g+o;o=p>>>30,p&=1073741823,o+=(p+=((32767&d)<<15)+((32767&h)<<15))>>>30,A=s.__imul(l,r)+(d>>>15)+(h>>>15),this.__setDigit(a,1073741823&p)}if(0!==o||0!==A)throw new Error("implementation bug")}},{key:"__inplaceAdd",value:function(e,t,n){for(var i,r=0,o=0;o>>15,this.__setHalfDigit(t+o,32767&i);return r}},{key:"__inplaceSub",value:function(e,t,n){var i=0;if(1&t){t>>=1;for(var r=this.__digit(t),o=32767&r,A=0;A>>1;A++){var s=e.__digit(A),a=(r>>>15)-(32767&s)-i;i=1&a>>>15,this.__setDigit(t+A,(32767&a)<<15|32767&o),i=1&(o=(32767&(r=this.__digit(t+A+1)))-(s>>>15)-i)>>>15}var c=e.__digit(A),u=(r>>>15)-(32767&c)-i;if(i=1&u>>>15,this.__setDigit(t+A,(32767&u)<<15|32767&o),t+A+1>=this.length)throw new RangeError("out of bounds");0==(1&n)&&(i=1&(o=(32767&(r=this.__digit(t+A+1)))-(c>>>15)-i)>>>15,this.__setDigit(t+e.length,1073709056&r|32767&o))}else{t>>=1;for(var l=0;l>>15)-(d>>>15)-(i=1&h>>>15);i=1&p>>>15,this.__setDigit(t+l,(32767&p)<<15|32767&h)}var f=this.__digit(t+l),m=e.__digit(l),I=(32767&f)-(32767&m)-i;i=1&I>>>15;var y=0;0==(1&n)&&(i=1&(y=(f>>>15)-(m>>>15)-i)>>>15),this.__setDigit(t+l,(32767&y)<<15|32767&I)}return i}},{key:"__inplaceRightShift",value:function(e){if(0!==e){for(var t,n=this.__digit(0)>>>e,i=this.length-1,r=0;r>>e;this.__setDigit(i,n)}}},{key:"__digit",value:function(e){return this[e]}},{key:"__unsignedDigit",value:function(e){return this[e]>>>0}},{key:"__setDigit",value:function(e,t){this[e]=0|t}},{key:"__setDigitGrow",value:function(e,t){this[e]=0|t}},{key:"__halfDigitLength",value:function(){var e=this.length;return 32767>=this.__unsignedDigit(e-1)?2*e-1:2*e}},{key:"__halfDigit",value:function(e){return 32767&this[e>>>1]>>>15*(1&e)}},{key:"__setHalfDigit",value:function(e,t){var n=e>>>1,i=this.__digit(n),r=1&e?32767&i|t<<15:1073709056&i|32767&t;this.__setDigit(n,r)}}],[{key:"BigInt",value:function(e){var t=Number.isFinite;if("number"==typeof e){if(0===e)return s.__zero();if(s.__isOneDigitInt(e))return 0>e?s.__oneDigit(-e,!0):s.__oneDigit(e,!1);if(!t(e)||A(e)!==e)throw new RangeError("The number "+e+" cannot be converted to BigInt because it is not an integer");return s.__fromDouble(e)}if("string"==typeof e){var i=s.__fromString(e);if(null===i)throw new SyntaxError("Cannot convert "+e+" to a BigInt");return i}if("boolean"==typeof e)return!0===e?s.__oneDigit(1,!1):s.__zero();if("object"===n(e)){if(e.constructor===s)return e;var r=s.__toPrimitive(e);return s.BigInt(r)}throw new TypeError("Cannot convert "+e+" to a BigInt")}},{key:"toNumber",value:function(e){var t=e.length;if(0===t)return 0;if(1===t){var n=e.__unsignedDigit(0);return e.sign?-n:n}var i=e.__digit(t-1),r=s.__clz30(i),o=30*t-r;if(1024>>=12;var g=u-12,d=12<=u?0:a<<20+u,h=20+u;for(0>>30-g,d=a<>>30-h,h-=30;var p=s.__decideRounding(e,h,c,a);if((1===p||0===p&&1==(1&d))&&0==(d=d+1>>>0)&&0!=++l>>>20&&(l=0,1023<++A))return e.sign?-1/0:1/0;var f=e.sign?-2147483648:0;return A=A+1023<<20,s.__kBitConversionInts[1]=f|A|l,s.__kBitConversionInts[0]=d,s.__kBitConversionDouble[0]}},{key:"unaryMinus",value:function(e){if(0===e.length)return e;var t=e.__copy();return t.sign=!e.sign,t}},{key:"bitwiseNot",value:function(e){return e.sign?s.__absoluteSubOne(e).__trim():s.__absoluteAddOne(e,!0)}},{key:"exponentiate",value:function(e,t){if(t.sign)throw new RangeError("Exponent must be positive");if(0===t.length)return s.__oneDigit(1,!1);if(0===e.length)return e;if(1===e.length&&1===e.__digit(0))return e.sign&&0==(1&t.__digit(0))?s.unaryMinus(e):e;if(1=s.__kMaxLengthBits)throw new RangeError("BigInt too big");if(1===e.length&&2===e.__digit(0)){var i=1+(0|n/30),r=new s(i,e.sign&&0!=(1&n));r.__initializeDigits();var o=1<>=1;0!==n;n>>=1)a=s.multiply(a,a),0!=(1&n)&&(A=null===A?a:s.multiply(A,a));return A}},{key:"multiply",value:function(e,t){if(0===e.length)return e;if(0===t.length)return t;var n=e.length+t.length;30<=e.__clzmsd()+t.__clzmsd()&&n--;var i=new s(n,e.sign!==t.sign);i.__initializeDigits();for(var r=0;rs.__absoluteCompare(e,t))return s.__zero();var n,i=e.sign!==t.sign,r=t.__unsignedDigit(0);if(1===t.length&&32767>=r){if(1===r)return i===e.sign?e:s.unaryMinus(e);n=s.__absoluteDivSmall(e,r,null)}else n=s.__absoluteDivLarge(e,t,!0,!1);return n.sign=i,n.__trim()}},{key:"remainder",value:function(e,t){if(0===t.length)throw new RangeError("Division by zero");if(0>s.__absoluteCompare(e,t))return e;var n=t.__unsignedDigit(0);if(1===t.length&&32767>=n){if(1===n)return s.__zero();var i=s.__absoluteModSmall(e,n);return 0===i?s.__zero():s.__oneDigit(i,e.sign)}var r=s.__absoluteDivLarge(e,t,!1,!0);return r.sign=e.sign,r.__trim()}},{key:"add",value:function(e,t){var n=e.sign;return n===t.sign?s.__absoluteAdd(e,t,n):0<=s.__absoluteCompare(e,t)?s.__absoluteSub(e,t,n):s.__absoluteSub(t,e,!n)}},{key:"subtract",value:function(e,t){var n=e.sign;return n===t.sign?0<=s.__absoluteCompare(e,t)?s.__absoluteSub(e,t,n):s.__absoluteSub(t,e,!n):s.__absoluteAdd(e,t,n)}},{key:"leftShift",value:function(e,t){return 0===t.length||0===e.length?e:t.sign?s.__rightShiftByAbsolute(e,t):s.__leftShiftByAbsolute(e,t)}},{key:"signedRightShift",value:function(e,t){return 0===t.length||0===e.length?e:t.sign?s.__leftShiftByAbsolute(e,t):s.__rightShiftByAbsolute(e,t)}},{key:"unsignedRightShift",value:function(){throw new TypeError("BigInts have no unsigned right shift; use >> instead")}},{key:"lessThan",value:function(e,t){return 0>s.__compareToBigInt(e,t)}},{key:"lessThanOrEqual",value:function(e,t){return 0>=s.__compareToBigInt(e,t)}},{key:"greaterThan",value:function(e,t){return 0(e=A(e)))throw new RangeError("Invalid value: not (convertible to) a safe integer");if(0===e)return s.__zero();if(e>=s.__kMaxLengthBits)return t;var n=0|(e+29)/30;if(t.length(e=A(e)))throw new RangeError("Invalid value: not (convertible to) a safe integer");if(0===e)return s.__zero();if(t.sign){if(e>s.__kMaxLengthBits)throw new RangeError("BigInt too big");return s.__truncateAndSubFromPowerOfTwo(e,t,!1)}if(e>=s.__kMaxLengthBits)return t;var n=0|(e+29)/30;if(t.length>>i)return t}return s.__truncateToNBits(e,t)}},{key:"ADD",value:function(e,t){if(e=s.__toPrimitive(e),t=s.__toPrimitive(t),"string"==typeof e)return"string"!=typeof t&&(t=t.toString()),e+t;if("string"==typeof t)return e.toString()+t;if(e=s.__toNumeric(e),t=s.__toNumeric(t),s.__isBigInt(e)&&s.__isBigInt(t))return s.add(e,t);if("number"==typeof e&&"number"==typeof t)return e+t;throw new TypeError("Cannot mix BigInt and other types, use explicit conversions")}},{key:"LT",value:function(e,t){return s.__compare(e,t,0)}},{key:"LE",value:function(e,t){return s.__compare(e,t,1)}},{key:"GT",value:function(e,t){return s.__compare(e,t,2)}},{key:"GE",value:function(e,t){return s.__compare(e,t,3)}},{key:"EQ",value:function(e,t){for(;;){if(s.__isBigInt(e))return s.__isBigInt(t)?s.equal(e,t):s.EQ(t,e);if("number"==typeof e){if(s.__isBigInt(t))return s.__equalToNumber(t,e);if("object"!==n(t))return e==t;t=s.__toPrimitive(t)}else if("string"==typeof e){if(s.__isBigInt(t))return null!==(e=s.__fromString(e))&&s.equal(e,t);if("object"!==n(t))return e==t;t=s.__toPrimitive(t)}else if("boolean"==typeof e){if(s.__isBigInt(t))return s.__equalToNumber(t,+e);if("object"!==n(t))return e==t;t=s.__toPrimitive(t)}else if("symbol"===n(e)){if(s.__isBigInt(t))return!1;if("object"!==n(t))return e==t;t=s.__toPrimitive(t)}else{if("object"!==n(e))return e==t;if("object"===n(t)&&t.constructor!==s)return e==t;e=s.__toPrimitive(e)}}}},{key:"NE",value:function(e,t){return!s.EQ(e,t)}},{key:"DataViewGetBigInt64",value:function(e,t){var n=!!(2>>30),c.__setDigit(2,A>>>28),c.__trim()}},{key:"DataViewSetBigInt64",value:function(e,t,n){var i=!!(3>>2,2t)r=-t-1;else{if(0===n)return-1;n--,i=e.__digit(n),r=29}var o=1<>>20)-1023,i=1+(0|n/30),r=new s(i,0>e),o=1048575&s.__kBitConversionInts[1]|1048576,A=s.__kBitConversionInts[0],a=n%30,c=0;if(a<20){var u=20-a;c=u+32,t=o>>>u,o=o<<32-u|A>>>u,A<<=32-u}else if(20===a)c=32,t=o,o=A,A=0;else{var l=a-20;c=32-l,t=o<>>32-l,o=A<>>2,o=o<<30|A>>>2,A<<=30):t=0,r.__setDigit(g,t);return r.__trim()}},{key:"__isWhitespace",value:function(e){return!!(13>=e&&9<=e)||(159>=e?32==e:131071>=e?160==e||5760==e:196607>=e?10>=(e&=131071)||40==e||41==e||47==e||95==e||4096==e:65279==e)}},{key:"__fromString",value:function(e){var t=11073741824/a)return null;var u=new s(0|(29+(a*A+c>>>s.__kBitsPerCharTableShift))/30,!1),l=10>t?t:10,g=10>=s.__kBitsPerCharTableShift;var d=[],h=[],p=!1;do{for(var f,m=0,I=0;;){if(f=void 0,o-48>>>0>>0>>0>>0>>s.__kBitsPerCharTableShift)/30;u.__inplaceMultiplyAdd(E,w,b)}while(!y)}if(r!==i){if(!s.__isWhitespace(o))return null;for(r++;r>>a-(o-=30))}if(0!==r){if(i>=e.length)throw new Error("implementation bug");e.__setDigit(i++,r)}for(;i>>1)+(85&i))>>>2)+(51&i))>>>4)+(15&i),o=t-1,A=e.__digit(n-1),a=0|(30*n-s.__clz30(A)+r-1)/r;if(e.sign&&a++,268435456>>f,g=30-f;g>=r;)c[u--]=s.__kConversionChars[l&o],l>>>=r,g-=r}var m=(l|A<>>r-g;0!==l;)c[u--]=s.__kConversionChars[l&o],l>>>=r;if(e.sign&&(c[u--]="-"),-1!==u)throw new Error("implementation bug");return c.join("")}},{key:"__toStringGeneric",value:function(e,t,n){var i=e.length;if(0===i)return"";if(1===i){var r=e.__unsignedDigit(0).toString(t);return!1===n&&e.sign&&(r="-"+r),r}var o,A,a=30*i-s.__clz30(e.__digit(i-1)),c=s.__kMaxBitsPerChar[t]-1,u=a*s.__kBitsPerCharTableMultiplier,l=1+(u=0|(u+=c-1)/c)>>1,g=s.exponentiate(s.__oneDigit(t,!1),s.__oneDigit(l,!1)),d=g.__unsignedDigit(0);if(1===g.length&&32767>=d){(o=new s(e.length,!1)).__initializeDigits();for(var h,p=0,f=2*e.length-1;0<=f;f--)h=p<<15|e.__halfDigit(f),o.__setHalfDigit(f,0|h/d),p=0|h%d;A=p.toString(t)}else{var m=s.__absoluteDivLarge(e,g,!0,!0);o=m.quotient;var I=m.remainder.__trim();A=s.__toStringGeneric(I,t,!0)}o.__trim();for(var y=s.__toStringGeneric(o,t,!0);A.lengthi?s.__absoluteLess(n):0}},{key:"__compareToNumber",value:function(e,n){if(s.__isOneDigitInt(n)){var i=e.sign,r=0>n;if(i!==r)return s.__unequalSign(i);if(0===e.length){if(r)throw new Error("implementation bug");return 0===n?0:-1}if(1o?s.__absoluteGreater(i):At)return s.__unequalSign(n);if(0===t)throw new Error("implementation bug: should be handled elsewhere");if(0===e.length)return-1;s.__kBitConversionDouble[0]=t;var i=2047&s.__kBitConversionInts[1]>>>20;if(2047==i)throw new Error("implementation bug: handled elsewhere");var r=i-1023;if(0>r)return s.__absoluteGreater(n);var o=e.length,A=e.__digit(o-1),a=s.__clz30(A),c=30*o-a,u=r+1;if(cu)return s.__absoluteGreater(n);var l=1048576|1048575&s.__kBitConversionInts[1],g=s.__kBitConversionInts[0],d=29-a;if(d!==(0|(c-1)%30))throw new Error("implementation bug");var h,p=0;if(d<20){var f=20-d;p=f+32,h=l>>>f,l=l<<32-f|g>>>f,g<<=32-f}else if(20===d)p=32,h=l,l=g,g=0;else{var m=d-20;p=32-m,h=l<>>32-m,l=g<>>=0)>(h>>>=0))return s.__absoluteGreater(n);if(A>>2,l=l<<30|g>>>2,g<<=30):h=0;var y=e.__unsignedDigit(I);if(y>h)return s.__absoluteGreater(n);if(yn&&e.__unsignedDigit(0)===t(n):0===s.__compareToDouble(e,n)}},{key:"__comparisonResultToBool",value:function(e,t){return 0===t?0>e:1===t?0>=e:2===t?0t;case 3:return e>=t}if(s.__isBigInt(e)&&"string"==typeof t)return null!==(t=s.__fromString(t))&&s.__comparisonResultToBool(s.__compareToBigInt(e,t),n);if("string"==typeof e&&s.__isBigInt(t))return null!==(e=s.__fromString(e))&&s.__comparisonResultToBool(s.__compareToBigInt(e,t),n);if(e=s.__toNumeric(e),t=s.__toNumeric(t),s.__isBigInt(e)){if(s.__isBigInt(t))return s.__comparisonResultToBool(s.__compareToBigInt(e,t),n);if("number"!=typeof t)throw new Error("implementation bug");return s.__comparisonResultToBool(s.__compareToNumber(e,t),n)}if("number"!=typeof e)throw new Error("implementation bug");if(s.__isBigInt(t))return s.__comparisonResultToBool(s.__compareToNumber(t,e),2^n);if("number"!=typeof t)throw new Error("implementation bug");return 0===n?et:3===n?e>=t:void 0}},{key:"__absoluteAdd",value:function(e,t,n){if(e.length>>30,o.__setDigit(a,1073741823&r);for(;a>>30,o.__setDigit(a,1073741823&c)}return a>>30,r.__setDigit(A,1073741823&i);for(;A>>30,r.__setDigit(A,1073741823&a)}return r.__trim()}},{key:"__absoluteAddOne",value:function(e,t){var n=2>>30,n.__setDigit(A,1073741823&r);return 0!==o&&n.__setDigitGrow(i,1),n}},{key:"__absoluteSubOne",value:function(e,t){for(var n,i=e.length,r=new s(t=t||i,!1),o=1,A=0;A>>30,r.__setDigit(A,1073741823&n);if(0!==o)throw new Error("implementation bug");for(var a=i;ai?0:e.__unsignedDigit(i)>t.__unsignedDigit(i)?1:-1}},{key:"__multiplyAccumulate",value:function(e,t,n,i){if(0!==t){for(var r=32767&t,o=t>>>15,A=0,a=0,c=0;c>>15,h=s.__imul(g,r),p=s.__imul(g,o),f=s.__imul(d,r);A=(u+=a+h+A)>>>30,u&=1073741823,A+=(u+=((32767&p)<<15)+((32767&f)<<15))>>>30,a=s.__imul(d,o)+(p>>>15)+(f>>>15),n.__setDigit(i,1073741823&u)}for(;0!==A||0!==a;i++){var m=n.__digit(i);m+=A+a,a=0,A=m>>>30,n.__setDigit(i,1073741823&m)}}}},{key:"__internalMultiplyAdd",value:function(e,t,n,i,r){for(var o=n,A=0,a=0;a>>15,t),g=u+((32767&l)<<15)+A+o;o=g>>>30,A=l>>>15,r.__setDigit(a,1073741823&g)}if(r.length>i)for(r.__setDigit(i++,o+A);i>>0,A=0|o/t,a=0|(o=((i=0|o%t)<<15|e.__halfDigit(r-1))>>>0)/t;i=0|o%t,n.__setDigit(r>>>1,A<<15|a)}return n}},{key:"__absoluteModSmall",value:function(e,t){for(var n=0,i=2*e.length-1;0<=i;i--)n=0|((n<<15|e.__halfDigit(i))>>>0)%t;return n}},{key:"__absoluteDivLarge",value:function(e,t,n,i){var r=t.__halfDigitLength(),o=t.length,A=e.__halfDigitLength()-r,a=null;n&&(a=new s(A+2>>>1,!1)).__initializeDigits();var c=new s(r+2>>>1,!1);c.__initializeDigits();var u=s.__clz15(t.__halfDigit(r-1));0>>0;p=0|m/g;for(var I=0|m%g,y=t.__halfDigit(r-2),B=l.__halfDigit(h+r-2);s.__imul(p,y)>>>0>(I<<16|B)>>>0&&(p--,!(32767<(I+=g))););}s.__internalMultiplyAdd(t,p,0,o,c);var C=l.__inplaceSub(c,h,r+1);0!==C&&(C=l.__inplaceAdd(t,h,r),l.__setHalfDigit(h+r,32767&l.__halfDigit(h+r)+C),p--),n&&(1&h?d=p<<15:a.__setDigit(h>>>1,d|p))}if(i)return l.__inplaceRightShift(u),n?{quotient:a,remainder:l}:l;if(n)return a;throw new Error("unreachable")}},{key:"__clz15",value:function(e){return s.__clz30(e)-15}},{key:"__specialLeftShift",value:function(e,t,n){var i=e.length,r=new s(i+n,!1);if(0===t){for(var o=0;o>>30-t;return 0n)throw new RangeError("BigInt too big");var i=0|n/30,r=n%30,o=e.length,A=0!==r&&0!=e.__digit(o-1)>>>30-r,a=o+i+(A?1:0),c=new s(a,e.sign);if(0===r){for(var u=0;u>>30-r;if(A)c.__setDigit(o+i,l);else if(0!==l)throw new Error("implementation bug")}return c.__trim()}},{key:"__rightShiftByAbsolute",value:function(e,t){var n=e.length,i=e.sign,r=s.__toShiftAmount(t);if(0>r)return s.__rightShiftByMaximum(i);var o=0|r/30,A=r%30,a=n-o;if(0>=a)return s.__rightShiftByMaximum(i);var c=!1;if(i)if(0!=(e.__digit(o)&(1<>>A,p=n-o-1,f=0;f>>A;l.__setDigit(p,h)}return c&&(l=s.__absoluteAddOne(l,!0,l)),l.__trim()}},{key:"__rightShiftByMaximum",value:function(e){return e?s.__oneDigit(1,!0):s.__zero()}},{key:"__toShiftAmount",value:function(e){if(1s.__kMaxLengthBits?-1:t}},{key:"__toPrimitive",value:function(e){var t=1>>a}return i.__setDigit(r,A),i.__trim()}},{key:"__truncateAndSubFromPowerOfTwo",value:function(e,t,n){for(var i,r=Math.min,o=0|(e+29)/30,A=new s(o,n),a=0,c=o-1,u=0,l=r(c,t.length);a>>30,A.__setDigit(a,1073741823&i);for(;a>>p)-u,g&=f-1}return A.__setDigit(c,g),A.__trim()}},{key:"__digitPow",value:function(e,t){for(var n=1;0>>=1,e*=e;return n}},{key:"__isOneDigitInt",value:function(e){return(1073741823&e)===e}}]),s}(u(Array));return m.__kMaxLength=33554432,m.__kMaxLengthBits=m.__kMaxLength<<5,m.__kMaxBitsPerChar=[0,0,32,51,64,75,83,90,96,102,107,111,115,119,122,126,128,131,134,136,139,141,143,145,147,149,151,153,154,156,158,159,160,162,163,165,166],m.__kBitsPerCharTableShift=5,m.__kBitsPerCharTableMultiplier=1<>>0)/t)},m.__imul=e||function(e,t){return 0|e*t},m}()},51301:(e,t,n)=>{var i,r=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,o=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,A="a-z\\xdf-\\xf6\\xf8-\\xff",s="A-Z\\xc0-\\xd6\\xd8-\\xde",a="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",c="["+a+"]",u="[\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0]",l="\\d+",g="["+A+"]",d="[^\\ud800-\\udfff"+a+l+"\\u2700-\\u27bf"+A+s+"]",h="\\ud83c[\\udffb-\\udfff]",p="[^\\ud800-\\udfff]",f="(?:\\ud83c[\\udde6-\\uddff]){2}",m="[\\ud800-\\udbff][\\udc00-\\udfff]",I="["+s+"]",y="(?:"+g+"|"+d+")",B="(?:"+I+"|"+d+")",C="(?:['’](?:d|ll|m|re|s|t|ve))?",w="(?:['’](?:D|LL|M|RE|S|T|VE))?",E="(?:"+u+"|"+h+")?",Q="[\\ufe0e\\ufe0f]?",b=Q+E+"(?:\\u200d(?:"+[p,f,m].join("|")+")"+Q+E+")*",k="(?:"+["[\\u2700-\\u27bf]",f,m].join("|")+")"+b,v="(?:"+[p+u+"?",u,f,m,"[\\ud800-\\udfff]"].join("|")+")",S=RegExp("['’]","g"),M=RegExp(u,"g"),D=RegExp(h+"(?="+h+")|"+v+b,"g"),N=RegExp([I+"?"+g+"+"+C+"(?="+[c,I,"$"].join("|")+")",B+"+"+w+"(?="+[c,I+y,"$"].join("|")+")",I+"?"+y+"+"+C,I+"+"+w,l,k].join("|"),"g"),T=RegExp("[\\u200d\\ud800-\\udfff\\u0300-\\u036f\\ufe20-\\ufe23\\u20d0-\\u20f0\\ufe0e\\ufe0f]"),P=/[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,O="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,F="object"==typeof self&&self&&self.Object===Object&&self,R=O||F||Function("return this")(),G=(i={À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"ss"},function(e){return null==i?void 0:i[e]});function x(e){return T.test(e)}var U=Object.prototype.toString,_=R.Symbol,L=_?_.prototype:void 0,K=L?L.toString:void 0;function Y(e){return null==e?"":function(e){if("string"==typeof e)return e;if(function(e){return"symbol"==typeof e||function(e){return!!e&&"object"==typeof e}(e)&&"[object Symbol]"==U.call(e)}(e))return K?K.call(e):"";var t=e+"";return"0"==t&&1/e==-1/0?"-0":t}(e)}var j,W=(j=function(e,t,n){return t=t.toLowerCase(),e+(n?J(Y(t).toLowerCase()):t)},function(e){return function(e,t,n,i){for(var r=-1,o=e?e.length:0;++r=r?t:function(e,t,n){var i=-1,r=e.length;t<0&&(t=-t>r?0:r+t),(n=n>r?r:n)<0&&(n+=r),r=t>n?0:n-t>>>0,t>>>=0;for(var o=Array(r);++i{e=n.nmd(e);var i="__lodash_hash_undefined__",r=9007199254740991,o="[object Arguments]",A="[object Array]",s="[object Boolean]",a="[object Date]",c="[object Error]",u="[object Function]",l="[object Map]",g="[object Number]",d="[object Object]",h="[object Promise]",p="[object RegExp]",f="[object Set]",m="[object String]",I="[object Symbol]",y="[object WeakMap]",B="[object ArrayBuffer]",C="[object DataView]",w=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,E=/^\w*$/,Q=/^\./,b=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,k=/\\(\\)?/g,v=/^\[object .+?Constructor\]$/,S=/^(?:0|[1-9]\d*)$/,M={};M["[object Float32Array]"]=M["[object Float64Array]"]=M["[object Int8Array]"]=M["[object Int16Array]"]=M["[object Int32Array]"]=M["[object Uint8Array]"]=M["[object Uint8ClampedArray]"]=M["[object Uint16Array]"]=M["[object Uint32Array]"]=!0,M[o]=M[A]=M[B]=M[s]=M[C]=M[a]=M[c]=M[u]=M[l]=M[g]=M[d]=M[p]=M[f]=M[m]=M[y]=!1;var D="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,N="object"==typeof self&&self&&self.Object===Object&&self,T=D||N||Function("return this")(),P=t&&!t.nodeType&&t,O=P&&e&&!e.nodeType&&e,F=O&&O.exports===P&&D.process,R=function(){try{return F&&F.binding("util")}catch(e){}}(),G=R&&R.isTypedArray;function x(e,t){for(var n=-1,i=e?e.length:0;++n-1},Be.prototype.set=function(e,t){var n=this.__data__,i=Qe(n,e);return i<0?n.push([e,t]):n[i][1]=t,this},Ce.prototype.clear=function(){this.__data__={hash:new ye,map:new(Ae||Be),string:new ye}},Ce.prototype.delete=function(e){return De(this,e).delete(e)},Ce.prototype.get=function(e){return De(this,e).get(e)},Ce.prototype.has=function(e){return De(this,e).has(e)},Ce.prototype.set=function(e,t){return De(this,e).set(e,t),this},we.prototype.add=we.prototype.push=function(e){return this.__data__.set(e,i),this},we.prototype.has=function(e){return this.__data__.has(e)},Ee.prototype.clear=function(){this.__data__=new Be},Ee.prototype.delete=function(e){return this.__data__.delete(e)},Ee.prototype.get=function(e){return this.__data__.get(e)},Ee.prototype.has=function(e){return this.__data__.has(e)},Ee.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Be){var i=n.__data__;if(!Ae||i.length<199)return i.push([e,t]),this;n=this.__data__=new Ce(i)}return n.set(e,t),this};function be(e,t){for(var n=0,i=(t=Oe(t,e)?[t]:Se(t)).length;null!=e&&ns))return!1;var c=o.get(e);if(c&&o.get(t))return c==t;var u=-1,l=!0,g=1&r?new we:void 0;for(o.set(e,t),o.set(t,e);++u-1&&e%1==0&&e-1&&e%1==0&&e<=r}function qe(e){var t=typeof e;return!!e&&("object"==t||"function"==t)}function Ze(e){return!!e&&"object"==typeof e}function ze(e){return"symbol"==typeof e||Ze(e)&&X.call(e)==I}var He=G?function(e){return function(t){return e(t)}}(G):function(e){return Ze(e)&&Je(e.length)&&!!M[X.call(e)]};function Ve(e){return je(e)?function(e,t){var n=Ye(e)||Ke(e)?function(e,t){for(var n=-1,i=Array(e);++n"']/g,q=RegExp(W.source),Z=RegExp(J.source),z=/<%-([\s\S]+?)%>/g,H=/<%([\s\S]+?)%>/g,V=/<%=([\s\S]+?)%>/g,X=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,$=/^\w*$/,ee=/[^.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|$))/g,te=/[\\^$.*+?()[\]{}|]/g,ne=RegExp(te.source),ie=/^\s+/,re=/\s/,oe=/\{(?:\n\/\* \[wrapped with .+\] \*\/)?\n?/,Ae=/\{\n\/\* \[wrapped with (.+)\] \*/,se=/,? & /,ae=/[^\x00-\x2f\x3a-\x40\x5b-\x60\x7b-\x7f]+/g,ce=/[()=,{}\[\]\/\s]/,ue=/\\(\\)?/g,le=/\$\{([^\\}]*(?:\\.[^\\}]*)*)\}/g,ge=/\w*$/,de=/^[-+]0x[0-9a-f]+$/i,he=/^0b[01]+$/i,pe=/^\[object .+?Constructor\]$/,fe=/^0o[0-7]+$/i,me=/^(?:0|[1-9]\d*)$/,Ie=/[\xc0-\xd6\xd8-\xf6\xf8-\xff\u0100-\u017f]/g,ye=/($^)/,Be=/['\n\r\u2028\u2029\\]/g,Ce="\\u0300-\\u036f\\ufe20-\\ufe2f\\u20d0-\\u20ff",we="a-z\\xdf-\\xf6\\xf8-\\xff",Ee="A-Z\\xc0-\\xd6\\xd8-\\xde",Qe="\\xac\\xb1\\xd7\\xf7\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\xbf\\u2000-\\u206f \\t\\x0b\\f\\xa0\\ufeff\\n\\r\\u2028\\u2029\\u1680\\u180e\\u2000\\u2001\\u2002\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200a\\u202f\\u205f\\u3000",be="["+Qe+"]",ke="["+Ce+"]",ve="\\d+",Se="["+we+"]",Me="[^\\ud800-\\udfff"+Qe+ve+"\\u2700-\\u27bf"+we+Ee+"]",De="\\ud83c[\\udffb-\\udfff]",Ne="[^\\ud800-\\udfff]",Te="(?:\\ud83c[\\udde6-\\uddff]){2}",Pe="[\\ud800-\\udbff][\\udc00-\\udfff]",Oe="["+Ee+"]",Fe="(?:"+Se+"|"+Me+")",Re="(?:"+Oe+"|"+Me+")",Ge="(?:['’](?:d|ll|m|re|s|t|ve))?",xe="(?:['’](?:D|LL|M|RE|S|T|VE))?",Ue="(?:"+ke+"|"+De+")?",_e="[\\ufe0e\\ufe0f]?",Le=_e+Ue+"(?:\\u200d(?:"+[Ne,Te,Pe].join("|")+")"+_e+Ue+")*",Ke="(?:"+["[\\u2700-\\u27bf]",Te,Pe].join("|")+")"+Le,Ye="(?:"+[Ne+ke+"?",ke,Te,Pe,"[\\ud800-\\udfff]"].join("|")+")",je=RegExp("['’]","g"),We=RegExp(ke,"g"),Je=RegExp(De+"(?="+De+")|"+Ye+Le,"g"),qe=RegExp([Oe+"?"+Se+"+"+Ge+"(?="+[be,Oe,"$"].join("|")+")",Re+"+"+xe+"(?="+[be,Oe+Fe,"$"].join("|")+")",Oe+"?"+Fe+"+"+Ge,Oe+"+"+xe,"\\d*(?:1ST|2ND|3RD|(?![123])\\dTH)(?=\\b|[a-z_])","\\d*(?:1st|2nd|3rd|(?![123])\\dth)(?=\\b|[A-Z_])",ve,Ke].join("|"),"g"),Ze=RegExp("[\\u200d\\ud800-\\udfff"+Ce+"\\ufe0e\\ufe0f]"),ze=/[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/,He=["Array","Buffer","DataView","Date","Error","Float32Array","Float64Array","Function","Int8Array","Int16Array","Int32Array","Map","Math","Object","Promise","RegExp","Set","String","Symbol","TypeError","Uint8Array","Uint8ClampedArray","Uint16Array","Uint32Array","WeakMap","_","clearTimeout","isFinite","parseInt","setTimeout"],Ve=-1,Xe={};Xe[P]=Xe[O]=Xe[F]=Xe[R]=Xe[G]=Xe[x]=Xe[U]=Xe[_]=Xe[L]=!0,Xe[p]=Xe[f]=Xe[N]=Xe[m]=Xe[T]=Xe[I]=Xe[y]=Xe[B]=Xe[w]=Xe[E]=Xe[Q]=Xe[k]=Xe[v]=Xe[S]=Xe[D]=!1;var $e={};$e[p]=$e[f]=$e[N]=$e[T]=$e[m]=$e[I]=$e[P]=$e[O]=$e[F]=$e[R]=$e[G]=$e[w]=$e[E]=$e[Q]=$e[k]=$e[v]=$e[S]=$e[M]=$e[x]=$e[U]=$e[_]=$e[L]=!0,$e[y]=$e[B]=$e[D]=!1;var et={"\\":"\\","'":"'","\n":"n","\r":"r","\u2028":"u2028","\u2029":"u2029"},tt=parseFloat,nt=parseInt,it="object"==typeof n.g&&n.g&&n.g.Object===Object&&n.g,rt="object"==typeof self&&self&&self.Object===Object&&self,ot=it||rt||Function("return this")(),At=t&&!t.nodeType&&t,st=At&&e&&!e.nodeType&&e,at=st&&st.exports===At,ct=at&&it.process,ut=function(){try{return st&&st.require&&st.require("util").types||ct&&ct.binding&&ct.binding("util")}catch(e){}}(),lt=ut&&ut.isArrayBuffer,gt=ut&&ut.isDate,dt=ut&&ut.isMap,ht=ut&&ut.isRegExp,pt=ut&&ut.isSet,ft=ut&&ut.isTypedArray;function mt(e,t,n){switch(n.length){case 0:return e.call(t);case 1:return e.call(t,n[0]);case 2:return e.call(t,n[0],n[1]);case 3:return e.call(t,n[0],n[1],n[2])}return e.apply(t,n)}function It(e,t,n,i){for(var r=-1,o=null==e?0:e.length;++r-1}function Qt(e,t,n){for(var i=-1,r=null==e?0:e.length;++i-1;);return n}function qt(e,t){for(var n=e.length;n--&&Pt(t,e[n],0)>-1;);return n}function Zt(e,t){for(var n=e.length,i=0;n--;)e[n]===t&&++i;return i}var zt=xt({À:"A",Á:"A",Â:"A",Ã:"A",Ä:"A",Å:"A",à:"a",á:"a",â:"a",ã:"a",ä:"a",å:"a",Ç:"C",ç:"c",Ð:"D",ð:"d",È:"E",É:"E",Ê:"E",Ë:"E",è:"e",é:"e",ê:"e",ë:"e",Ì:"I",Í:"I",Î:"I",Ï:"I",ì:"i",í:"i",î:"i",ï:"i",Ñ:"N",ñ:"n",Ò:"O",Ó:"O",Ô:"O",Õ:"O",Ö:"O",Ø:"O",ò:"o",ó:"o",ô:"o",õ:"o",ö:"o",ø:"o",Ù:"U",Ú:"U",Û:"U",Ü:"U",ù:"u",ú:"u",û:"u",ü:"u",Ý:"Y",ý:"y",ÿ:"y",Æ:"Ae",æ:"ae",Þ:"Th",þ:"th",ß:"ss",Ā:"A",Ă:"A",Ą:"A",ā:"a",ă:"a",ą:"a",Ć:"C",Ĉ:"C",Ċ:"C",Č:"C",ć:"c",ĉ:"c",ċ:"c",č:"c",Ď:"D",Đ:"D",ď:"d",đ:"d",Ē:"E",Ĕ:"E",Ė:"E",Ę:"E",Ě:"E",ē:"e",ĕ:"e",ė:"e",ę:"e",ě:"e",Ĝ:"G",Ğ:"G",Ġ:"G",Ģ:"G",ĝ:"g",ğ:"g",ġ:"g",ģ:"g",Ĥ:"H",Ħ:"H",ĥ:"h",ħ:"h",Ĩ:"I",Ī:"I",Ĭ:"I",Į:"I",İ:"I",ĩ:"i",ī:"i",ĭ:"i",į:"i",ı:"i",Ĵ:"J",ĵ:"j",Ķ:"K",ķ:"k",ĸ:"k",Ĺ:"L",Ļ:"L",Ľ:"L",Ŀ:"L",Ł:"L",ĺ:"l",ļ:"l",ľ:"l",ŀ:"l",ł:"l",Ń:"N",Ņ:"N",Ň:"N",Ŋ:"N",ń:"n",ņ:"n",ň:"n",ŋ:"n",Ō:"O",Ŏ:"O",Ő:"O",ō:"o",ŏ:"o",ő:"o",Ŕ:"R",Ŗ:"R",Ř:"R",ŕ:"r",ŗ:"r",ř:"r",Ś:"S",Ŝ:"S",Ş:"S",Š:"S",ś:"s",ŝ:"s",ş:"s",š:"s",Ţ:"T",Ť:"T",Ŧ:"T",ţ:"t",ť:"t",ŧ:"t",Ũ:"U",Ū:"U",Ŭ:"U",Ů:"U",Ű:"U",Ų:"U",ũ:"u",ū:"u",ŭ:"u",ů:"u",ű:"u",ų:"u",Ŵ:"W",ŵ:"w",Ŷ:"Y",ŷ:"y",Ÿ:"Y",Ź:"Z",Ż:"Z",Ž:"Z",ź:"z",ż:"z",ž:"z",IJ:"IJ",ij:"ij",Œ:"Oe",œ:"oe",ʼn:"'n",ſ:"s"}),Ht=xt({"&":"&","<":"<",">":">",'"':""","'":"'"});function Vt(e){return"\\"+et[e]}function Xt(e){return Ze.test(e)}function $t(e){var t=-1,n=Array(e.size);return e.forEach((function(e,i){n[++t]=[i,e]})),n}function en(e,t){return function(n){return e(t(n))}}function tn(e,t){for(var n=-1,i=e.length,r=0,o=[];++n",""":'"',"'":"'"}),cn=function e(t){var n,i=(t=null==t?ot:cn.defaults(ot.Object(),t,cn.pick(ot,He))).Array,re=t.Date,Ce=t.Error,we=t.Function,Ee=t.Math,Qe=t.Object,be=t.RegExp,ke=t.String,ve=t.TypeError,Se=i.prototype,Me=we.prototype,De=Qe.prototype,Ne=t["__core-js_shared__"],Te=Me.toString,Pe=De.hasOwnProperty,Oe=0,Fe=(n=/[^.]+$/.exec(Ne&&Ne.keys&&Ne.keys.IE_PROTO||""))?"Symbol(src)_1."+n:"",Re=De.toString,Ge=Te.call(Qe),xe=ot._,Ue=be("^"+Te.call(Pe).replace(te,"\\$&").replace(/hasOwnProperty|(function).*?(?=\\\()| for .+?(?=\\\])/g,"$1.*?")+"$"),_e=at?t.Buffer:r,Le=t.Symbol,Ke=t.Uint8Array,Ye=_e?_e.allocUnsafe:r,Je=en(Qe.getPrototypeOf,Qe),Ze=Qe.create,et=De.propertyIsEnumerable,it=Se.splice,rt=Le?Le.isConcatSpreadable:r,At=Le?Le.iterator:r,st=Le?Le.toStringTag:r,ct=function(){try{var e=co(Qe,"defineProperty");return e({},"",{}),e}catch(e){}}(),ut=t.clearTimeout!==ot.clearTimeout&&t.clearTimeout,Dt=re&&re.now!==ot.Date.now&&re.now,xt=t.setTimeout!==ot.setTimeout&&t.setTimeout,un=Ee.ceil,ln=Ee.floor,gn=Qe.getOwnPropertySymbols,dn=_e?_e.isBuffer:r,hn=t.isFinite,pn=Se.join,fn=en(Qe.keys,Qe),mn=Ee.max,In=Ee.min,yn=re.now,Bn=t.parseInt,Cn=Ee.random,wn=Se.reverse,En=co(t,"DataView"),Qn=co(t,"Map"),bn=co(t,"Promise"),kn=co(t,"Set"),vn=co(t,"WeakMap"),Sn=co(Qe,"create"),Mn=vn&&new vn,Dn={},Nn=Uo(En),Tn=Uo(Qn),Pn=Uo(bn),On=Uo(kn),Fn=Uo(vn),Rn=Le?Le.prototype:r,Gn=Rn?Rn.valueOf:r,xn=Rn?Rn.toString:r;function Un(e){if(ns(e)&&!WA(e)&&!(e instanceof Yn)){if(e instanceof Kn)return e;if(Pe.call(e,"__wrapped__"))return _o(e)}return new Kn(e)}var _n=function(){function e(){}return function(t){if(!ts(t))return{};if(Ze)return Ze(t);e.prototype=t;var n=new e;return e.prototype=r,n}}();function Ln(){}function Kn(e,t){this.__wrapped__=e,this.__actions__=[],this.__chain__=!!t,this.__index__=0,this.__values__=r}function Yn(e){this.__wrapped__=e,this.__actions__=[],this.__dir__=1,this.__filtered__=!1,this.__iteratees__=[],this.__takeCount__=d,this.__views__=[]}function jn(e){var t=-1,n=null==e?0:e.length;for(this.clear();++t=t?e:t)),e}function si(e,t,n,i,o,A){var s,a=1&t,c=2&t,u=4&t;if(n&&(s=o?n(e,i,o,A):n(e)),s!==r)return s;if(!ts(e))return e;var l=WA(e);if(l){if(s=function(e){var t=e.length,n=new e.constructor(t);return t&&"string"==typeof e[0]&&Pe.call(e,"index")&&(n.index=e.index,n.input=e.input),n}(e),!a)return vr(e,s)}else{var g=go(e),d=g==B||g==C;if(zA(e))return Cr(e,a);if(g==Q||g==p||d&&!o){if(s=c||d?{}:po(e),!a)return c?function(e,t){return Sr(e,lo(e),t)}(e,function(e,t){return e&&Sr(t,Ps(t),e)}(s,e)):function(e,t){return Sr(e,uo(e),t)}(e,ii(s,e))}else{if(!$e[g])return o?e:{};s=function(e,t,n){var i,r=e.constructor;switch(t){case N:return wr(e);case m:case I:return new r(+e);case T:return function(e,t){var n=t?wr(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.byteLength)}(e,n);case P:case O:case F:case R:case G:case x:case U:case _:case L:return Er(e,n);case w:return new r;case E:case S:return new r(e);case k:return function(e){var t=new e.constructor(e.source,ge.exec(e));return t.lastIndex=e.lastIndex,t}(e);case v:return new r;case M:return i=e,Gn?Qe(Gn.call(i)):{}}}(e,g,a)}}A||(A=new Zn);var h=A.get(e);if(h)return h;A.set(e,s),ss(e)?e.forEach((function(i){s.add(si(i,t,n,i,e,A))})):is(e)&&e.forEach((function(i,r){s.set(r,si(i,t,n,r,e,A))}));var f=l?r:(u?c?no:to:c?Ps:Ts)(e);return yt(f||e,(function(i,r){f&&(i=e[r=i]),ei(s,r,si(i,t,n,r,e,A))})),s}function ai(e,t,n){var i=n.length;if(null==e)return!i;for(e=Qe(e);i--;){var o=n[i],A=t[o],s=e[o];if(s===r&&!(o in e)||!A(s))return!1}return!0}function ci(e,t,n){if("function"!=typeof e)throw new ve(o);return Do((function(){e.apply(r,n)}),t)}function ui(e,t,n,i){var r=-1,o=Et,A=!0,s=e.length,a=[],c=t.length;if(!s)return a;n&&(t=bt(t,Yt(n))),i?(o=Qt,A=!1):t.length>=200&&(o=Wt,A=!1,t=new qn(t));e:for(;++r-1},Wn.prototype.set=function(e,t){var n=this.__data__,i=ti(n,e);return i<0?(++this.size,n.push([e,t])):n[i][1]=t,this},Jn.prototype.clear=function(){this.size=0,this.__data__={hash:new jn,map:new(Qn||Wn),string:new jn}},Jn.prototype.delete=function(e){var t=so(this,e).delete(e);return this.size-=t?1:0,t},Jn.prototype.get=function(e){return so(this,e).get(e)},Jn.prototype.has=function(e){return so(this,e).has(e)},Jn.prototype.set=function(e,t){var n=so(this,e),i=n.size;return n.set(e,t),this.size+=n.size==i?0:1,this},qn.prototype.add=qn.prototype.push=function(e){return this.__data__.set(e,A),this},qn.prototype.has=function(e){return this.__data__.has(e)},Zn.prototype.clear=function(){this.__data__=new Wn,this.size=0},Zn.prototype.delete=function(e){var t=this.__data__,n=t.delete(e);return this.size=t.size,n},Zn.prototype.get=function(e){return this.__data__.get(e)},Zn.prototype.has=function(e){return this.__data__.has(e)},Zn.prototype.set=function(e,t){var n=this.__data__;if(n instanceof Wn){var i=n.__data__;if(!Qn||i.length<199)return i.push([e,t]),this.size=++n.size,this;n=this.__data__=new Jn(i)}return n.set(e,t),this.size=n.size,this};var li=Nr(yi),gi=Nr(Bi,!0);function di(e,t){var n=!0;return li(e,(function(e,i,r){return n=!!t(e,i,r)})),n}function hi(e,t,n){for(var i=-1,o=e.length;++i0&&n(s)?t>1?fi(s,t-1,n,i,r):kt(r,s):i||(r[r.length]=s)}return r}var mi=Tr(),Ii=Tr(!0);function yi(e,t){return e&&mi(e,t,Ts)}function Bi(e,t){return e&&Ii(e,t,Ts)}function Ci(e,t){return wt(t,(function(t){return XA(e[t])}))}function wi(e,t){for(var n=0,i=(t=mr(t,e)).length;null!=e&&nt}function ki(e,t){return null!=e&&Pe.call(e,t)}function vi(e,t){return null!=e&&t in Qe(e)}function Si(e,t,n){for(var o=n?Qt:Et,A=e[0].length,s=e.length,a=s,c=i(s),u=1/0,l=[];a--;){var g=e[a];a&&t&&(g=bt(g,Yt(t))),u=In(g.length,u),c[a]=!n&&(t||A>=120&&g.length>=120)?new qn(a&&g):r}g=e[0];var d=-1,h=c[0];e:for(;++d=s?a:a*("desc"==n[i]?-1:1)}return e.index-t.index}(e,t,n)}));i--;)e[i]=e[i].value;return e}(r)}function Yi(e,t,n){for(var i=-1,r=t.length,o={};++i-1;)s!==e&&it.call(s,a,1),it.call(e,a,1);return e}function Wi(e,t){for(var n=e?t.length:0,i=n-1;n--;){var r=t[n];if(n==i||r!==o){var o=r;mo(r)?it.call(e,r,1):cr(e,r)}}return e}function Ji(e,t){return e+ln(Cn()*(t-e+1))}function qi(e,t){var n="";if(!e||t<1||t>l)return n;do{t%2&&(n+=e),(t=ln(t/2))&&(e+=e)}while(t);return n}function Zi(e,t){return No(bo(e,t,ra),e+"")}function zi(e){return Hn(Ls(e))}function Hi(e,t){var n=Ls(e);return Oo(n,Ai(t,0,n.length))}function Vi(e,t,n,i){if(!ts(e))return e;for(var o=-1,A=(t=mr(t,e)).length,s=A-1,a=e;null!=a&&++oo?0:o+t),(n=n>o?o:n)<0&&(n+=o),o=t>n?0:n-t>>>0,t>>>=0;for(var A=i(o);++r>>1,A=e[o];null!==A&&!cs(A)&&(n?A<=t:A=200){var c=t?null:qr(e);if(c)return nn(c);A=!1,r=Wt,a=new qn}else a=t?[]:s;e:for(;++i=i?e:tr(e,t,n)}var Br=ut||function(e){return ot.clearTimeout(e)};function Cr(e,t){if(t)return e.slice();var n=e.length,i=Ye?Ye(n):new e.constructor(n);return e.copy(i),i}function wr(e){var t=new e.constructor(e.byteLength);return new Ke(t).set(new Ke(e)),t}function Er(e,t){var n=t?wr(e.buffer):e.buffer;return new e.constructor(n,e.byteOffset,e.length)}function Qr(e,t){if(e!==t){var n=e!==r,i=null===e,o=e==e,A=cs(e),s=t!==r,a=null===t,c=t==t,u=cs(t);if(!a&&!u&&!A&&e>t||A&&s&&c&&!a&&!u||i&&s&&c||!n&&c||!o)return 1;if(!i&&!A&&!u&&e1?n[o-1]:r,s=o>2?n[2]:r;for(A=e.length>3&&"function"==typeof A?(o--,A):r,s&&Io(n[0],n[1],s)&&(A=o<3?r:A,o=1),t=Qe(t);++i-1?o[A?t[s]:s]:r}}function Gr(e){return eo((function(t){var n=t.length,i=n,A=Kn.prototype.thru;for(e&&t.reverse();i--;){var s=t[i];if("function"!=typeof s)throw new ve(o);if(A&&!a&&"wrapper"==ro(s))var a=new Kn([],!0)}for(i=a?i:n;++i1&&y.reverse(),d&&la))return!1;var u=A.get(e),l=A.get(t);if(u&&l)return u==t&&l==e;var g=-1,d=!0,h=2&n?new qn:r;for(A.set(e,t),A.set(t,e);++g-1&&e%1==0&&e1?"& ":"")+t[i],t=t.join(n>2?", ":" "),e.replace(oe,"{\n/* [wrapped with "+t+"] */\n")}(i,function(e,t){return yt(h,(function(n){var i="_."+n[0];t&n[1]&&!Et(e,i)&&e.push(i)})),e.sort()}(function(e){var t=e.match(Ae);return t?t[1].split(se):[]}(i),n)))}function Po(e){var t=0,n=0;return function(){var i=yn(),o=16-(i-n);if(n=i,o>0){if(++t>=800)return arguments[0]}else t=0;return e.apply(r,arguments)}}function Oo(e,t){var n=-1,i=e.length,o=i-1;for(t=t===r?i:t;++n1?e[t-1]:r;return n="function"==typeof n?(e.pop(),n):r,AA(e,n)}));function dA(e){var t=Un(e);return t.__chain__=!0,t}function hA(e,t){return t(e)}var pA=eo((function(e){var t=e.length,n=t?e[0]:0,i=this.__wrapped__,o=function(t){return oi(t,e)};return!(t>1||this.__actions__.length)&&i instanceof Yn&&mo(n)?((i=i.slice(n,+n+(t?1:0))).__actions__.push({func:hA,args:[o],thisArg:r}),new Kn(i,this.__chain__).thru((function(e){return t&&!e.length&&e.push(r),e}))):this.thru(o)})),fA=Mr((function(e,t,n){Pe.call(e,n)?++e[n]:ri(e,n,1)})),mA=Rr(jo),IA=Rr(Wo);function yA(e,t){return(WA(e)?yt:li)(e,Ao(t,3))}function BA(e,t){return(WA(e)?Bt:gi)(e,Ao(t,3))}var CA=Mr((function(e,t,n){Pe.call(e,n)?e[n].push(t):ri(e,n,[t])})),wA=Zi((function(e,t,n){var r=-1,o="function"==typeof t,A=qA(e)?i(e.length):[];return li(e,(function(e){A[++r]=o?mt(t,e,n):Mi(e,t,n)})),A})),EA=Mr((function(e,t,n){ri(e,n,t)}));function QA(e,t){return(WA(e)?bt:Gi)(e,Ao(t,3))}var bA=Mr((function(e,t,n){e[n?0:1].push(t)}),(function(){return[[],[]]})),kA=Zi((function(e,t){if(null==e)return[];var n=t.length;return n>1&&Io(e,t[0],t[1])?t=[]:n>2&&Io(t[0],t[1],t[2])&&(t=[t[0]]),Ki(e,fi(t,1),[])})),vA=Dt||function(){return ot.Date.now()};function SA(e,t,n){return t=n?r:t,t=e&&null==t?e.length:t,zr(e,c,r,r,r,r,t)}function MA(e,t){var n;if("function"!=typeof t)throw new ve(o);return e=ps(e),function(){return--e>0&&(n=t.apply(this,arguments)),e<=1&&(t=r),n}}var DA=Zi((function(e,t,n){var i=1;if(n.length){var r=tn(n,oo(DA));i|=a}return zr(e,i,t,n,r)})),NA=Zi((function(e,t,n){var i=3;if(n.length){var r=tn(n,oo(NA));i|=a}return zr(t,i,e,n,r)}));function TA(e,t,n){var i,A,s,a,c,u,l=0,g=!1,d=!1,h=!0;if("function"!=typeof e)throw new ve(o);function p(t){var n=i,o=A;return i=A=r,l=t,a=e.apply(o,n)}function f(e){return l=e,c=Do(I,t),g?p(e):a}function m(e){var n=e-u;return u===r||n>=t||n<0||d&&e-l>=s}function I(){var e=vA();if(m(e))return y(e);c=Do(I,function(e){var n=t-(e-u);return d?In(n,s-(e-l)):n}(e))}function y(e){return c=r,h&&i?p(e):(i=A=r,a)}function B(){var e=vA(),n=m(e);if(i=arguments,A=this,u=e,n){if(c===r)return f(u);if(d)return Br(c),c=Do(I,t),p(u)}return c===r&&(c=Do(I,t)),a}return t=ms(t)||0,ts(n)&&(g=!!n.leading,s=(d="maxWait"in n)?mn(ms(n.maxWait)||0,t):s,h="trailing"in n?!!n.trailing:h),B.cancel=function(){c!==r&&Br(c),l=0,i=u=A=c=r},B.flush=function(){return c===r?a:y(vA())},B}var PA=Zi((function(e,t){return ci(e,1,t)})),OA=Zi((function(e,t,n){return ci(e,ms(t)||0,n)}));function FA(e,t){if("function"!=typeof e||null!=t&&"function"!=typeof t)throw new ve(o);var n=function(){var i=arguments,r=t?t.apply(this,i):i[0],o=n.cache;if(o.has(r))return o.get(r);var A=e.apply(this,i);return n.cache=o.set(r,A)||o,A};return n.cache=new(FA.Cache||Jn),n}function RA(e){if("function"!=typeof e)throw new ve(o);return function(){var t=arguments;switch(t.length){case 0:return!e.call(this);case 1:return!e.call(this,t[0]);case 2:return!e.call(this,t[0],t[1]);case 3:return!e.call(this,t[0],t[1],t[2])}return!e.apply(this,t)}}FA.Cache=Jn;var GA=Ir((function(e,t){var n=(t=1==t.length&&WA(t[0])?bt(t[0],Yt(Ao())):bt(fi(t,1),Yt(Ao()))).length;return Zi((function(i){for(var r=-1,o=In(i.length,n);++r=t})),jA=Di(function(){return arguments}())?Di:function(e){return ns(e)&&Pe.call(e,"callee")&&!et.call(e,"callee")},WA=i.isArray,JA=lt?Yt(lt):function(e){return ns(e)&&Qi(e)==N};function qA(e){return null!=e&&es(e.length)&&!XA(e)}function ZA(e){return ns(e)&&qA(e)}var zA=dn||ma,HA=gt?Yt(gt):function(e){return ns(e)&&Qi(e)==I};function VA(e){if(!ns(e))return!1;var t=Qi(e);return t==y||"[object DOMException]"==t||"string"==typeof e.message&&"string"==typeof e.name&&!os(e)}function XA(e){if(!ts(e))return!1;var t=Qi(e);return t==B||t==C||"[object AsyncFunction]"==t||"[object Proxy]"==t}function $A(e){return"number"==typeof e&&e==ps(e)}function es(e){return"number"==typeof e&&e>-1&&e%1==0&&e<=l}function ts(e){var t=typeof e;return null!=e&&("object"==t||"function"==t)}function ns(e){return null!=e&&"object"==typeof e}var is=dt?Yt(dt):function(e){return ns(e)&&go(e)==w};function rs(e){return"number"==typeof e||ns(e)&&Qi(e)==E}function os(e){if(!ns(e)||Qi(e)!=Q)return!1;var t=Je(e);if(null===t)return!0;var n=Pe.call(t,"constructor")&&t.constructor;return"function"==typeof n&&n instanceof n&&Te.call(n)==Ge}var As=ht?Yt(ht):function(e){return ns(e)&&Qi(e)==k},ss=pt?Yt(pt):function(e){return ns(e)&&go(e)==v};function as(e){return"string"==typeof e||!WA(e)&&ns(e)&&Qi(e)==S}function cs(e){return"symbol"==typeof e||ns(e)&&Qi(e)==M}var us=ft?Yt(ft):function(e){return ns(e)&&es(e.length)&&!!Xe[Qi(e)]},ls=jr(Ri),gs=jr((function(e,t){return e<=t}));function ds(e){if(!e)return[];if(qA(e))return as(e)?An(e):vr(e);if(At&&e[At])return function(e){for(var t,n=[];!(t=e.next()).done;)n.push(t.value);return n}(e[At]());var t=go(e);return(t==w?$t:t==v?nn:Ls)(e)}function hs(e){return e?(e=ms(e))===u||e===-1/0?17976931348623157e292*(e<0?-1:1):e==e?e:0:0===e?e:0}function ps(e){var t=hs(e),n=t%1;return t==t?n?t-n:t:0}function fs(e){return e?Ai(ps(e),0,d):0}function ms(e){if("number"==typeof e)return e;if(cs(e))return g;if(ts(e)){var t="function"==typeof e.valueOf?e.valueOf():e;e=ts(t)?t+"":t}if("string"!=typeof e)return 0===e?e:+e;e=Kt(e);var n=he.test(e);return n||fe.test(e)?nt(e.slice(2),n?2:8):de.test(e)?g:+e}function Is(e){return Sr(e,Ps(e))}function ys(e){return null==e?"":sr(e)}var Bs=Dr((function(e,t){if(wo(t)||qA(t))Sr(t,Ts(t),e);else for(var n in t)Pe.call(t,n)&&ei(e,n,t[n])})),Cs=Dr((function(e,t){Sr(t,Ps(t),e)})),ws=Dr((function(e,t,n,i){Sr(t,Ps(t),e,i)})),Es=Dr((function(e,t,n,i){Sr(t,Ts(t),e,i)})),Qs=eo(oi),bs=Zi((function(e,t){e=Qe(e);var n=-1,i=t.length,o=i>2?t[2]:r;for(o&&Io(t[0],t[1],o)&&(i=1);++n1),t})),Sr(e,no(e),n),i&&(n=si(n,7,Xr));for(var r=t.length;r--;)cr(n,t[r]);return n})),Gs=eo((function(e,t){return null==e?{}:function(e,t){return Yi(e,t,(function(t,n){return Ss(e,n)}))}(e,t)}));function xs(e,t){if(null==e)return{};var n=bt(no(e),(function(e){return[e]}));return t=Ao(t),Yi(e,n,(function(e,n){return t(e,n[0])}))}var Us=Zr(Ts),_s=Zr(Ps);function Ls(e){return null==e?[]:jt(e,Ts(e))}var Ks=Or((function(e,t,n){return t=t.toLowerCase(),e+(n?Ys(t):t)}));function Ys(e){return Vs(ys(e).toLowerCase())}function js(e){return(e=ys(e))&&e.replace(Ie,zt).replace(We,"")}var Ws=Or((function(e,t,n){return e+(n?"-":"")+t.toLowerCase()})),Js=Or((function(e,t,n){return e+(n?" ":"")+t.toLowerCase()})),qs=Pr("toLowerCase"),Zs=Or((function(e,t,n){return e+(n?"_":"")+t.toLowerCase()})),zs=Or((function(e,t,n){return e+(n?" ":"")+Vs(t)})),Hs=Or((function(e,t,n){return e+(n?" ":"")+t.toUpperCase()})),Vs=Pr("toUpperCase");function Xs(e,t,n){return e=ys(e),(t=n?r:t)===r?function(e){return ze.test(e)}(e)?function(e){return e.match(qe)||[]}(e):function(e){return e.match(ae)||[]}(e):e.match(t)||[]}var $s=Zi((function(e,t){try{return mt(e,r,t)}catch(e){return VA(e)?e:new Ce(e)}})),ea=eo((function(e,t){return yt(t,(function(t){t=xo(t),ri(e,t,DA(e[t],e))})),e}));function ta(e){return function(){return e}}var na=Gr(),ia=Gr(!0);function ra(e){return e}function oa(e){return Oi("function"==typeof e?e:si(e,1))}var Aa=Zi((function(e,t){return function(n){return Mi(n,e,t)}})),sa=Zi((function(e,t){return function(n){return Mi(e,n,t)}}));function aa(e,t,n){var i=Ts(t),r=Ci(t,i);null!=n||ts(t)&&(r.length||!i.length)||(n=t,t=e,e=this,r=Ci(t,Ts(t)));var o=!(ts(n)&&"chain"in n&&!n.chain),A=XA(e);return yt(r,(function(n){var i=t[n];e[n]=i,A&&(e.prototype[n]=function(){var t=this.__chain__;if(o||t){var n=e(this.__wrapped__),r=n.__actions__=vr(this.__actions__);return r.push({func:i,args:arguments,thisArg:e}),n.__chain__=t,n}return i.apply(e,kt([this.value()],arguments))})})),e}function ca(){}var ua=Lr(bt),la=Lr(Ct),ga=Lr(Mt);function da(e){return yo(e)?Gt(xo(e)):function(e){return function(t){return wi(t,e)}}(e)}var ha=Yr(),pa=Yr(!0);function fa(){return[]}function ma(){return!1}var Ia,ya=_r((function(e,t){return e+t}),0),Ba=Jr("ceil"),Ca=_r((function(e,t){return e/t}),1),wa=Jr("floor"),Ea=_r((function(e,t){return e*t}),1),Qa=Jr("round"),ba=_r((function(e,t){return e-t}),0);return Un.after=function(e,t){if("function"!=typeof t)throw new ve(o);return e=ps(e),function(){if(--e<1)return t.apply(this,arguments)}},Un.ary=SA,Un.assign=Bs,Un.assignIn=Cs,Un.assignInWith=ws,Un.assignWith=Es,Un.at=Qs,Un.before=MA,Un.bind=DA,Un.bindAll=ea,Un.bindKey=NA,Un.castArray=function(){if(!arguments.length)return[];var e=arguments[0];return WA(e)?e:[e]},Un.chain=dA,Un.chunk=function(e,t,n){t=(n?Io(e,t,n):t===r)?1:mn(ps(t),0);var o=null==e?0:e.length;if(!o||t<1)return[];for(var A=0,s=0,a=i(un(o/t));Ao?0:o+n),(i=i===r||i>o?o:ps(i))<0&&(i+=o),i=n>i?0:fs(i);n>>0)?(e=ys(e))&&("string"==typeof t||null!=t&&!As(t))&&!(t=sr(t))&&Xt(e)?yr(An(e),0,n):e.split(t,n):[]},Un.spread=function(e,t){if("function"!=typeof e)throw new ve(o);return t=null==t?0:mn(ps(t),0),Zi((function(n){var i=n[t],r=yr(n,0,t);return i&&kt(r,i),mt(e,this,r)}))},Un.tail=function(e){var t=null==e?0:e.length;return t?tr(e,1,t):[]},Un.take=function(e,t,n){return e&&e.length?tr(e,0,(t=n||t===r?1:ps(t))<0?0:t):[]},Un.takeRight=function(e,t,n){var i=null==e?0:e.length;return i?tr(e,(t=i-(t=n||t===r?1:ps(t)))<0?0:t,i):[]},Un.takeRightWhile=function(e,t){return e&&e.length?lr(e,Ao(t,3),!1,!0):[]},Un.takeWhile=function(e,t){return e&&e.length?lr(e,Ao(t,3)):[]},Un.tap=function(e,t){return t(e),e},Un.throttle=function(e,t,n){var i=!0,r=!0;if("function"!=typeof e)throw new ve(o);return ts(n)&&(i="leading"in n?!!n.leading:i,r="trailing"in n?!!n.trailing:r),TA(e,t,{leading:i,maxWait:t,trailing:r})},Un.thru=hA,Un.toArray=ds,Un.toPairs=Us,Un.toPairsIn=_s,Un.toPath=function(e){return WA(e)?bt(e,xo):cs(e)?[e]:vr(Go(ys(e)))},Un.toPlainObject=Is,Un.transform=function(e,t,n){var i=WA(e),r=i||zA(e)||us(e);if(t=Ao(t,4),null==n){var o=e&&e.constructor;n=r?i?new o:[]:ts(e)&&XA(o)?_n(Je(e)):{}}return(r?yt:yi)(e,(function(e,i,r){return t(n,e,i,r)})),n},Un.unary=function(e){return SA(e,1)},Un.union=nA,Un.unionBy=iA,Un.unionWith=rA,Un.uniq=function(e){return e&&e.length?ar(e):[]},Un.uniqBy=function(e,t){return e&&e.length?ar(e,Ao(t,2)):[]},Un.uniqWith=function(e,t){return t="function"==typeof t?t:r,e&&e.length?ar(e,r,t):[]},Un.unset=function(e,t){return null==e||cr(e,t)},Un.unzip=oA,Un.unzipWith=AA,Un.update=function(e,t,n){return null==e?e:ur(e,t,fr(n))},Un.updateWith=function(e,t,n,i){return i="function"==typeof i?i:r,null==e?e:ur(e,t,fr(n),i)},Un.values=Ls,Un.valuesIn=function(e){return null==e?[]:jt(e,Ps(e))},Un.without=sA,Un.words=Xs,Un.wrap=function(e,t){return xA(fr(t),e)},Un.xor=aA,Un.xorBy=cA,Un.xorWith=uA,Un.zip=lA,Un.zipObject=function(e,t){return hr(e||[],t||[],ei)},Un.zipObjectDeep=function(e,t){return hr(e||[],t||[],Vi)},Un.zipWith=gA,Un.entries=Us,Un.entriesIn=_s,Un.extend=Cs,Un.extendWith=ws,aa(Un,Un),Un.add=ya,Un.attempt=$s,Un.camelCase=Ks,Un.capitalize=Ys,Un.ceil=Ba,Un.clamp=function(e,t,n){return n===r&&(n=t,t=r),n!==r&&(n=(n=ms(n))==n?n:0),t!==r&&(t=(t=ms(t))==t?t:0),Ai(ms(e),t,n)},Un.clone=function(e){return si(e,4)},Un.cloneDeep=function(e){return si(e,5)},Un.cloneDeepWith=function(e,t){return si(e,5,t="function"==typeof t?t:r)},Un.cloneWith=function(e,t){return si(e,4,t="function"==typeof t?t:r)},Un.conformsTo=function(e,t){return null==t||ai(e,t,Ts(t))},Un.deburr=js,Un.defaultTo=function(e,t){return null==e||e!=e?t:e},Un.divide=Ca,Un.endsWith=function(e,t,n){e=ys(e),t=sr(t);var i=e.length,o=n=n===r?i:Ai(ps(n),0,i);return(n-=t.length)>=0&&e.slice(n,o)==t},Un.eq=LA,Un.escape=function(e){return(e=ys(e))&&Z.test(e)?e.replace(J,Ht):e},Un.escapeRegExp=function(e){return(e=ys(e))&&ne.test(e)?e.replace(te,"\\$&"):e},Un.every=function(e,t,n){var i=WA(e)?Ct:di;return n&&Io(e,t,n)&&(t=r),i(e,Ao(t,3))},Un.find=mA,Un.findIndex=jo,Un.findKey=function(e,t){return Nt(e,Ao(t,3),yi)},Un.findLast=IA,Un.findLastIndex=Wo,Un.findLastKey=function(e,t){return Nt(e,Ao(t,3),Bi)},Un.floor=wa,Un.forEach=yA,Un.forEachRight=BA,Un.forIn=function(e,t){return null==e?e:mi(e,Ao(t,3),Ps)},Un.forInRight=function(e,t){return null==e?e:Ii(e,Ao(t,3),Ps)},Un.forOwn=function(e,t){return e&&yi(e,Ao(t,3))},Un.forOwnRight=function(e,t){return e&&Bi(e,Ao(t,3))},Un.get=vs,Un.gt=KA,Un.gte=YA,Un.has=function(e,t){return null!=e&&ho(e,t,ki)},Un.hasIn=Ss,Un.head=qo,Un.identity=ra,Un.includes=function(e,t,n,i){e=qA(e)?e:Ls(e),n=n&&!i?ps(n):0;var r=e.length;return n<0&&(n=mn(r+n,0)),as(e)?n<=r&&e.indexOf(t,n)>-1:!!r&&Pt(e,t,n)>-1},Un.indexOf=function(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var r=null==n?0:ps(n);return r<0&&(r=mn(i+r,0)),Pt(e,t,r)},Un.inRange=function(e,t,n){return t=hs(t),n===r?(n=t,t=0):n=hs(n),function(e,t,n){return e>=In(t,n)&&e=-9007199254740991&&e<=l},Un.isSet=ss,Un.isString=as,Un.isSymbol=cs,Un.isTypedArray=us,Un.isUndefined=function(e){return e===r},Un.isWeakMap=function(e){return ns(e)&&go(e)==D},Un.isWeakSet=function(e){return ns(e)&&"[object WeakSet]"==Qi(e)},Un.join=function(e,t){return null==e?"":pn.call(e,t)},Un.kebabCase=Ws,Un.last=Vo,Un.lastIndexOf=function(e,t,n){var i=null==e?0:e.length;if(!i)return-1;var o=i;return n!==r&&(o=(o=ps(n))<0?mn(i+o,0):In(o,i-1)),t==t?function(e,t,n){for(var i=n+1;i--;)if(e[i]===t)return i;return i}(e,t,o):Tt(e,Ft,o,!0)},Un.lowerCase=Js,Un.lowerFirst=qs,Un.lt=ls,Un.lte=gs,Un.max=function(e){return e&&e.length?hi(e,ra,bi):r},Un.maxBy=function(e,t){return e&&e.length?hi(e,Ao(t,2),bi):r},Un.mean=function(e){return Rt(e,ra)},Un.meanBy=function(e,t){return Rt(e,Ao(t,2))},Un.min=function(e){return e&&e.length?hi(e,ra,Ri):r},Un.minBy=function(e,t){return e&&e.length?hi(e,Ao(t,2),Ri):r},Un.stubArray=fa,Un.stubFalse=ma,Un.stubObject=function(){return{}},Un.stubString=function(){return""},Un.stubTrue=function(){return!0},Un.multiply=Ea,Un.nth=function(e,t){return e&&e.length?Li(e,ps(t)):r},Un.noConflict=function(){return ot._===this&&(ot._=xe),this},Un.noop=ca,Un.now=vA,Un.pad=function(e,t,n){e=ys(e);var i=(t=ps(t))?on(e):0;if(!t||i>=t)return e;var r=(t-i)/2;return Kr(ln(r),n)+e+Kr(un(r),n)},Un.padEnd=function(e,t,n){e=ys(e);var i=(t=ps(t))?on(e):0;return t&&it){var i=e;e=t,t=i}if(n||e%1||t%1){var o=Cn();return In(e+o*(t-e+tt("1e-"+((o+"").length-1))),t)}return Ji(e,t)},Un.reduce=function(e,t,n){var i=WA(e)?vt:Ut,r=arguments.length<3;return i(e,Ao(t,4),n,r,li)},Un.reduceRight=function(e,t,n){var i=WA(e)?St:Ut,r=arguments.length<3;return i(e,Ao(t,4),n,r,gi)},Un.repeat=function(e,t,n){return t=(n?Io(e,t,n):t===r)?1:ps(t),qi(ys(e),t)},Un.replace=function(){var e=arguments,t=ys(e[0]);return e.length<3?t:t.replace(e[1],e[2])},Un.result=function(e,t,n){var i=-1,o=(t=mr(t,e)).length;for(o||(o=1,e=r);++il)return[];var n=d,i=In(e,d);t=Ao(t),e-=d;for(var r=Lt(i,t);++n=A)return e;var a=n-on(i);if(a<1)return i;var c=s?yr(s,0,a).join(""):e.slice(0,a);if(o===r)return c+i;if(s&&(a+=c.length-a),As(o)){if(e.slice(a).search(o)){var u,l=c;for(o.global||(o=be(o.source,ys(ge.exec(o))+"g")),o.lastIndex=0;u=o.exec(l);)var g=u.index;c=c.slice(0,g===r?a:g)}}else if(e.indexOf(sr(o),a)!=a){var d=c.lastIndexOf(o);d>-1&&(c=c.slice(0,d))}return c+i},Un.unescape=function(e){return(e=ys(e))&&q.test(e)?e.replace(W,an):e},Un.uniqueId=function(e){var t=++Oe;return ys(e)+t},Un.upperCase=Hs,Un.upperFirst=Vs,Un.each=yA,Un.eachRight=BA,Un.first=qo,aa(Un,(Ia={},yi(Un,(function(e,t){Pe.call(Un.prototype,t)||(Ia[t]=e)})),Ia),{chain:!1}),Un.VERSION="4.17.21",yt(["bind","bindKey","curry","curryRight","partial","partialRight"],(function(e){Un[e].placeholder=Un})),yt(["drop","take"],(function(e,t){Yn.prototype[e]=function(n){n=n===r?1:mn(ps(n),0);var i=this.__filtered__&&!t?new Yn(this):this.clone();return i.__filtered__?i.__takeCount__=In(n,i.__takeCount__):i.__views__.push({size:In(n,d),type:e+(i.__dir__<0?"Right":"")}),i},Yn.prototype[e+"Right"]=function(t){return this.reverse()[e](t).reverse()}})),yt(["filter","map","takeWhile"],(function(e,t){var n=t+1,i=1==n||3==n;Yn.prototype[e]=function(e){var t=this.clone();return t.__iteratees__.push({iteratee:Ao(e,3),type:n}),t.__filtered__=t.__filtered__||i,t}})),yt(["head","last"],(function(e,t){var n="take"+(t?"Right":"");Yn.prototype[e]=function(){return this[n](1).value()[0]}})),yt(["initial","tail"],(function(e,t){var n="drop"+(t?"":"Right");Yn.prototype[e]=function(){return this.__filtered__?new Yn(this):this[n](1)}})),Yn.prototype.compact=function(){return this.filter(ra)},Yn.prototype.find=function(e){return this.filter(e).head()},Yn.prototype.findLast=function(e){return this.reverse().find(e)},Yn.prototype.invokeMap=Zi((function(e,t){return"function"==typeof e?new Yn(this):this.map((function(n){return Mi(n,e,t)}))})),Yn.prototype.reject=function(e){return this.filter(RA(Ao(e)))},Yn.prototype.slice=function(e,t){e=ps(e);var n=this;return n.__filtered__&&(e>0||t<0)?new Yn(n):(e<0?n=n.takeRight(-e):e&&(n=n.drop(e)),t!==r&&(n=(t=ps(t))<0?n.dropRight(-t):n.take(t-e)),n)},Yn.prototype.takeRightWhile=function(e){return this.reverse().takeWhile(e).reverse()},Yn.prototype.toArray=function(){return this.take(d)},yi(Yn.prototype,(function(e,t){var n=/^(?:filter|find|map|reject)|While$/.test(t),i=/^(?:head|last)$/.test(t),o=Un[i?"take"+("last"==t?"Right":""):t],A=i||/^find/.test(t);o&&(Un.prototype[t]=function(){var t=this.__wrapped__,s=i?[1]:arguments,a=t instanceof Yn,c=s[0],u=a||WA(t),l=function(e){var t=o.apply(Un,kt([e],s));return i&&g?t[0]:t};u&&n&&"function"==typeof c&&1!=c.length&&(a=u=!1);var g=this.__chain__,d=!!this.__actions__.length,h=A&&!g,p=a&&!d;if(!A&&u){t=p?t:new Yn(this);var f=e.apply(t,s);return f.__actions__.push({func:hA,args:[l],thisArg:r}),new Kn(f,g)}return h&&p?e.apply(this,s):(f=this.thru(l),h?i?f.value()[0]:f.value():f)})})),yt(["pop","push","shift","sort","splice","unshift"],(function(e){var t=Se[e],n=/^(?:push|sort|unshift)$/.test(e)?"tap":"thru",i=/^(?:pop|shift)$/.test(e);Un.prototype[e]=function(){var e=arguments;if(i&&!this.__chain__){var r=this.value();return t.apply(WA(r)?r:[],e)}return this[n]((function(n){return t.apply(WA(n)?n:[],e)}))}})),yi(Yn.prototype,(function(e,t){var n=Un[t];if(n){var i=n.name+"";Pe.call(Dn,i)||(Dn[i]=[]),Dn[i].push({name:t,func:n})}})),Dn[xr(r,2).name]=[{name:"wrapper",func:r}],Yn.prototype.clone=function(){var e=new Yn(this.__wrapped__);return e.__actions__=vr(this.__actions__),e.__dir__=this.__dir__,e.__filtered__=this.__filtered__,e.__iteratees__=vr(this.__iteratees__),e.__takeCount__=this.__takeCount__,e.__views__=vr(this.__views__),e},Yn.prototype.reverse=function(){if(this.__filtered__){var e=new Yn(this);e.__dir__=-1,e.__filtered__=!0}else(e=this.clone()).__dir__*=-1;return e},Yn.prototype.value=function(){var e=this.__wrapped__.value(),t=this.__dir__,n=WA(e),i=t<0,r=n?e.length:0,o=function(e,t,n){for(var i=-1,r=n.length;++i=this.__values__.length;return{done:e,value:e?r:this.__values__[this.__index__++]}},Un.prototype.plant=function(e){for(var t,n=this;n instanceof Ln;){var i=_o(n);i.__index__=0,i.__values__=r,t?o.__wrapped__=i:t=i;var o=i;n=n.__wrapped__}return o.__wrapped__=e,t},Un.prototype.reverse=function(){var e=this.__wrapped__;if(e instanceof Yn){var t=e;return this.__actions__.length&&(t=new Yn(this)),(t=t.reverse()).__actions__.push({func:hA,args:[tA],thisArg:r}),new Kn(t,this.__chain__)}return this.thru(tA)},Un.prototype.toJSON=Un.prototype.valueOf=Un.prototype.value=function(){return gr(this.__wrapped__,this.__actions__)},Un.prototype.first=Un.prototype.head,At&&(Un.prototype[At]=function(){return this}),Un}();ot._=cn,(i=function(){return cn}.call(t,n,t,e))===r||(e.exports=i)}.call(this)},30769:(e,t,n)=>{var i=n(14224),r=n(49500);const o="object"==typeof performance&&performance&&"function"==typeof performance.now?performance:Date,A="function"==typeof AbortController?AbortController:class{constructor(){this.signal=new c}abort(){this.signal.dispatchEvent("abort")}},s="function"==typeof AbortSignal,a="function"==typeof A.AbortSignal,c=s?AbortSignal:a?A.AbortController:class{constructor(){this.aborted=!1,this._listeners=[]}dispatchEvent(e){if("abort"===e){this.aborted=!0;const t={type:e,target:this};this.onabort(t),this._listeners.forEach((e=>e(t)),this)}}onabort(){}addEventListener(e,t){"abort"===e&&this._listeners.push(t)}removeEventListener(e,t){"abort"===e&&(this._listeners=this._listeners.filter((e=>e!==t)))}},u=new Set,l=(e,t)=>{const n=`LRU_CACHE_OPTION_${e}`;h(n)&&p(n,`${e} option`,`options.${t}`,B)},g=(e,t)=>{const n=`LRU_CACHE_METHOD_${e}`;if(h(n)){const{prototype:i}=B,{get:r}=Object.getOwnPropertyDescriptor(i,e);p(n,`${e} method`,`cache.${t}()`,r)}},d=(...e)=>{"object"==typeof i&&i&&"function"==typeof i.emitWarning?i.emitWarning(...e):r.error(...e)},h=e=>!u.has(e),p=(e,t,n,i)=>{u.add(e),d(`The ${t} is deprecated. Please use ${n} instead.`,"DeprecationWarning",e,i)},f=e=>e&&e===Math.floor(e)&&e>0&&isFinite(e),m=e=>f(e)?e<=Math.pow(2,8)?Uint8Array:e<=Math.pow(2,16)?Uint16Array:e<=Math.pow(2,32)?Uint32Array:e<=Number.MAX_SAFE_INTEGER?I:null:null;class I extends Array{constructor(e){super(e),this.fill(0)}}class y{constructor(e){if(0===e)return[];const t=m(e);this.heap=new t(e),this.length=0}push(e){this.heap[this.length++]=e}pop(){return this.heap[--this.length]}}class B{constructor(e={}){const{max:t=0,ttl:n,ttlResolution:i=1,ttlAutopurge:r,updateAgeOnGet:o,updateAgeOnHas:A,allowStale:s,dispose:a,disposeAfter:c,noDisposeOnSet:g,noUpdateTTL:p,maxSize:I=0,maxEntrySize:C=0,sizeCalculation:w,fetchMethod:E,fetchContext:Q,noDeleteOnFetchRejection:b,noDeleteOnStaleGet:k}=e,{length:v,maxAge:S,stale:M}=e instanceof B?{}:e;if(0!==t&&!f(t))throw new TypeError("max option must be a nonnegative integer");const D=t?m(t):Array;if(!D)throw new Error("invalid max value: "+t);if(this.max=t,this.maxSize=I,this.maxEntrySize=C||this.maxSize,this.sizeCalculation=w||v,this.sizeCalculation){if(!this.maxSize&&!this.maxEntrySize)throw new TypeError("cannot set sizeCalculation without setting maxSize or maxEntrySize");if("function"!=typeof this.sizeCalculation)throw new TypeError("sizeCalculation set to non-function")}if(this.fetchMethod=E||null,this.fetchMethod&&"function"!=typeof this.fetchMethod)throw new TypeError("fetchMethod must be a function if specified");if(this.fetchContext=Q,!this.fetchMethod&&void 0!==Q)throw new TypeError("cannot set fetchContext without fetchMethod");if(this.keyMap=new Map,this.keyList=new Array(t).fill(null),this.valList=new Array(t).fill(null),this.next=new D(t),this.prev=new D(t),this.head=0,this.tail=0,this.free=new y(t),this.initialFill=1,this.size=0,"function"==typeof a&&(this.dispose=a),"function"==typeof c?(this.disposeAfter=c,this.disposed=[]):(this.disposeAfter=null,this.disposed=null),this.noDisposeOnSet=!!g,this.noUpdateTTL=!!p,this.noDeleteOnFetchRejection=!!b,0!==this.maxEntrySize){if(0!==this.maxSize&&!f(this.maxSize))throw new TypeError("maxSize must be a positive integer if specified");if(!f(this.maxEntrySize))throw new TypeError("maxEntrySize must be a positive integer if specified");this.initializeSizeTracking()}if(this.allowStale=!!s||!!M,this.noDeleteOnStaleGet=!!k,this.updateAgeOnGet=!!o,this.updateAgeOnHas=!!A,this.ttlResolution=f(i)||0===i?i:1,this.ttlAutopurge=!!r,this.ttl=n||S||0,this.ttl){if(!f(this.ttl))throw new TypeError("ttl must be a positive integer if specified");this.initializeTTLTracking()}if(0===this.max&&0===this.ttl&&0===this.maxSize)throw new TypeError("At least one of max, maxSize, or ttl is required");if(!this.ttlAutopurge&&!this.max&&!this.maxSize){const e="LRU_CACHE_UNBOUNDED";h(e)&&(u.add(e),d("TTL caching without ttlAutopurge, max, or maxSize can result in unbounded memory consumption.","UnboundedCacheWarning",e,B))}M&&l("stale","allowStale"),S&&l("maxAge","ttl"),v&&l("length","sizeCalculation")}getRemainingTTL(e){return this.has(e,{updateAgeOnHas:!1})?1/0:0}initializeTTLTracking(){this.ttls=new I(this.max),this.starts=new I(this.max),this.setItemTTL=(e,t,n=o.now())=>{if(this.starts[e]=0!==t?n:0,this.ttls[e]=t,0!==t&&this.ttlAutopurge){const n=setTimeout((()=>{this.isStale(e)&&this.delete(this.keyList[e])}),t+1);n.unref&&n.unref()}},this.updateItemAge=e=>{this.starts[e]=0!==this.ttls[e]?o.now():0};let e=0;const t=()=>{const t=o.now();if(this.ttlResolution>0){e=t;const n=setTimeout((()=>e=0),this.ttlResolution);n.unref&&n.unref()}return t};this.getRemainingTTL=n=>{const i=this.keyMap.get(n);return void 0===i?0:0===this.ttls[i]||0===this.starts[i]?1/0:this.starts[i]+this.ttls[i]-(e||t())},this.isStale=n=>0!==this.ttls[n]&&0!==this.starts[n]&&(e||t())-this.starts[n]>this.ttls[n]}updateItemAge(e){}setItemTTL(e,t,n){}isStale(e){return!1}initializeSizeTracking(){this.calculatedSize=0,this.sizes=new I(this.max),this.removeItemSize=e=>{this.calculatedSize-=this.sizes[e],this.sizes[e]=0},this.requireSize=(e,t,n,i)=>{if(this.isBackgroundFetch(t))return 0;if(!f(n)){if(!i)throw new TypeError("invalid size value (must be positive integer)");if("function"!=typeof i)throw new TypeError("sizeCalculation must be a function");if(n=i(t,e),!f(n))throw new TypeError("sizeCalculation return invalid (expect positive integer)")}return n},this.addItemSize=(e,t)=>{if(this.sizes[e]=t,this.maxSize){const t=this.maxSize-this.sizes[e];for(;this.calculatedSize>t;)this.evict(!0)}this.calculatedSize+=this.sizes[e]}}removeItemSize(e){}addItemSize(e,t){}requireSize(e,t,n,i){if(n||i)throw new TypeError("cannot set size without setting maxSize or maxEntrySize on cache")}*indexes({allowStale:e=this.allowStale}={}){if(this.size)for(let t=this.tail;this.isValidIndex(t)&&(!e&&this.isStale(t)||(yield t),t!==this.head);)t=this.prev[t]}*rindexes({allowStale:e=this.allowStale}={}){if(this.size)for(let t=this.head;this.isValidIndex(t)&&(!e&&this.isStale(t)||(yield t),t!==this.tail);)t=this.next[t]}isValidIndex(e){return this.keyMap.get(this.keyList[e])===e}*entries(){for(const e of this.indexes())yield[this.keyList[e],this.valList[e]]}*rentries(){for(const e of this.rindexes())yield[this.keyList[e],this.valList[e]]}*keys(){for(const e of this.indexes())yield this.keyList[e]}*rkeys(){for(const e of this.rindexes())yield this.keyList[e]}*values(){for(const e of this.indexes())yield this.valList[e]}*rvalues(){for(const e of this.rindexes())yield this.valList[e]}[Symbol.iterator](){return this.entries()}find(e,t={}){for(const n of this.indexes())if(e(this.valList[n],this.keyList[n],this))return this.get(this.keyList[n],t)}forEach(e,t=this){for(const n of this.indexes())e.call(t,this.valList[n],this.keyList[n],this)}rforEach(e,t=this){for(const n of this.rindexes())e.call(t,this.valList[n],this.keyList[n],this)}get prune(){return g("prune","purgeStale"),this.purgeStale}purgeStale(){let e=!1;for(const t of this.rindexes({allowStale:!0}))this.isStale(t)&&(this.delete(this.keyList[t]),e=!0);return e}dump(){const e=[];for(const t of this.indexes({allowStale:!0})){const n=this.keyList[t],i=this.valList[t],r={value:this.isBackgroundFetch(i)?i.__staleWhileFetching:i};if(this.ttls){r.ttl=this.ttls[t];const e=o.now()-this.starts[t];r.start=Math.floor(Date.now()-e)}this.sizes&&(r.size=this.sizes[t]),e.unshift([n,r])}return e}load(e){this.clear();for(const[t,n]of e){if(n.start){const e=Date.now()-n.start;n.start=o.now()-e}this.set(t,n.value,n)}}dispose(e,t,n){}set(e,t,{ttl:n=this.ttl,start:i,noDisposeOnSet:r=this.noDisposeOnSet,size:o=0,sizeCalculation:A=this.sizeCalculation,noUpdateTTL:s=this.noUpdateTTL}={}){if(o=this.requireSize(e,t,o,A),this.maxEntrySize&&o>this.maxEntrySize)return this.delete(e),this;let a=0===this.size?void 0:this.keyMap.get(e);if(void 0===a)a=this.newIndex(),this.keyList[a]=e,this.valList[a]=t,this.keyMap.set(e,a),this.next[this.tail]=a,this.prev[a]=this.tail,this.tail=a,this.size++,this.addItemSize(a,o),s=!1;else{const n=this.valList[a];t!==n&&(this.isBackgroundFetch(n)?n.__abortController.abort():r||(this.dispose(n,e,"set"),this.disposeAfter&&this.disposed.push([n,e,"set"])),this.removeItemSize(a),this.valList[a]=t,this.addItemSize(a,o)),this.moveToTail(a)}if(0===n||0!==this.ttl||this.ttls||this.initializeTTLTracking(),s||this.setItemTTL(a,n,i),this.disposeAfter)for(;this.disposed.length;)this.disposeAfter(...this.disposed.shift());return this}newIndex(){return 0===this.size?this.tail:this.size===this.max&&0!==this.max?this.evict(!1):0!==this.free.length?this.free.pop():this.initialFill++}pop(){if(this.size){const e=this.valList[this.head];return this.evict(!0),e}}evict(e){const t=this.head,n=this.keyList[t],i=this.valList[t];return this.isBackgroundFetch(i)?i.__abortController.abort():(this.dispose(i,n,"evict"),this.disposeAfter&&this.disposed.push([i,n,"evict"])),this.removeItemSize(t),e&&(this.keyList[t]=null,this.valList[t]=null,this.free.push(t)),this.head=this.next[t],this.keyMap.delete(n),this.size--,t}has(e,{updateAgeOnHas:t=this.updateAgeOnHas}={}){const n=this.keyMap.get(e);return void 0!==n&&!this.isStale(n)&&(t&&this.updateItemAge(n),!0)}peek(e,{allowStale:t=this.allowStale}={}){const n=this.keyMap.get(e);if(void 0!==n&&(t||!this.isStale(n))){const e=this.valList[n];return this.isBackgroundFetch(e)?e.__staleWhileFetching:e}}backgroundFetch(e,t,n,i){const r=void 0===t?void 0:this.valList[t];if(this.isBackgroundFetch(r))return r;const o=new A,s={signal:o.signal,options:n,context:i},a=new Promise((t=>t(this.fetchMethod(e,r,s)))).then((t=>(o.signal.aborted||this.set(e,t,s.options),t)),(i=>{if(this.valList[t]===a&&(n.noDeleteOnFetchRejection&&void 0!==a.__staleWhileFetching?this.valList[t]=a.__staleWhileFetching:this.delete(e)),a.__returned===a)throw i}));return a.__abortController=o,a.__staleWhileFetching=r,a.__returned=null,void 0===t?(this.set(e,a,s.options),t=this.keyMap.get(e)):this.valList[t]=a,a}isBackgroundFetch(e){return e&&"object"==typeof e&&"function"==typeof e.then&&Object.prototype.hasOwnProperty.call(e,"__staleWhileFetching")&&Object.prototype.hasOwnProperty.call(e,"__returned")&&(e.__returned===e||null===e.__returned)}async fetch(e,{allowStale:t=this.allowStale,updateAgeOnGet:n=this.updateAgeOnGet,noDeleteOnStaleGet:i=this.noDeleteOnStaleGet,ttl:r=this.ttl,noDisposeOnSet:o=this.noDisposeOnSet,size:A=0,sizeCalculation:s=this.sizeCalculation,noUpdateTTL:a=this.noUpdateTTL,noDeleteOnFetchRejection:c=this.noDeleteOnFetchRejection,fetchContext:u=this.fetchContext,forceRefresh:l=!1}={}){if(!this.fetchMethod)return this.get(e,{allowStale:t,updateAgeOnGet:n,noDeleteOnStaleGet:i});const g={allowStale:t,updateAgeOnGet:n,noDeleteOnStaleGet:i,ttl:r,noDisposeOnSet:o,size:A,sizeCalculation:s,noUpdateTTL:a,noDeleteOnFetchRejection:c};let d=this.keyMap.get(e);if(void 0===d){const t=this.backgroundFetch(e,d,g,u);return t.__returned=t}{const i=this.valList[d];if(this.isBackgroundFetch(i))return t&&void 0!==i.__staleWhileFetching?i.__staleWhileFetching:i.__returned=i;if(!l&&!this.isStale(d))return this.moveToTail(d),n&&this.updateItemAge(d),i;const r=this.backgroundFetch(e,d,g,u);return t&&void 0!==r.__staleWhileFetching?r.__staleWhileFetching:r.__returned=r}}get(e,{allowStale:t=this.allowStale,updateAgeOnGet:n=this.updateAgeOnGet,noDeleteOnStaleGet:i=this.noDeleteOnStaleGet}={}){const r=this.keyMap.get(e);if(void 0!==r){const o=this.valList[r],A=this.isBackgroundFetch(o);if(this.isStale(r))return A?t?o.__staleWhileFetching:void 0:(i||this.delete(e),t?o:void 0);if(A)return;return this.moveToTail(r),n&&this.updateItemAge(r),o}}connect(e,t){this.prev[t]=e,this.next[e]=t}moveToTail(e){e!==this.tail&&(e===this.head?this.head=this.next[e]:this.connect(this.prev[e],this.next[e]),this.connect(this.tail,e),this.tail=e)}get del(){return g("del","delete"),this.delete}delete(e){let t=!1;if(0!==this.size){const n=this.keyMap.get(e);if(void 0!==n)if(t=!0,1===this.size)this.clear();else{this.removeItemSize(n);const t=this.valList[n];this.isBackgroundFetch(t)?t.__abortController.abort():(this.dispose(t,e,"delete"),this.disposeAfter&&this.disposed.push([t,e,"delete"])),this.keyMap.delete(e),this.keyList[n]=null,this.valList[n]=null,n===this.tail?this.tail=this.prev[n]:n===this.head?this.head=this.next[n]:(this.next[this.prev[n]]=this.next[n],this.prev[this.next[n]]=this.prev[n]),this.size--,this.free.push(n)}}if(this.disposed)for(;this.disposed.length;)this.disposeAfter(...this.disposed.shift());return t}clear(){for(const e of this.rindexes({allowStale:!0})){const t=this.valList[e];if(this.isBackgroundFetch(t))t.__abortController.abort();else{const n=this.keyList[e];this.dispose(t,n,"delete"),this.disposeAfter&&this.disposed.push([t,n,"delete"])}}if(this.keyMap.clear(),this.valList.fill(null),this.keyList.fill(null),this.ttls&&(this.ttls.fill(0),this.starts.fill(0)),this.sizes&&this.sizes.fill(0),this.head=0,this.tail=0,this.initialFill=1,this.free.length=0,this.calculatedSize=0,this.size=0,this.disposed)for(;this.disposed.length;)this.disposeAfter(...this.disposed.shift())}get reset(){return g("reset","clear"),this.clear}get length(){return((e,t)=>{const n="LRU_CACHE_PROPERTY_length";if(h(n)){const{prototype:t}=B,{get:i}=Object.getOwnPropertyDescriptor(t,e);p(n,"length property","cache.size",i)}})("length"),this.size}static get AbortController(){return A}static get AbortSignal(){return c}}e.exports=B},54610:e=>{var t=1e3,n=60*t,i=60*n,r=24*i;function o(e,t,n,i){var r=t>=1.5*n;return Math.round(e/n)+" "+i+(r?"s":"")}e.exports=function(e,A){A=A||{};var s,a,c=typeof e;if("string"===c&&e.length>0)return function(e){if(!((e=String(e)).length>100)){var o=/^(-?(?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|weeks?|w|years?|yrs?|y)?$/i.exec(e);if(o){var A=parseFloat(o[1]);switch((o[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*A;case"weeks":case"week":case"w":return 6048e5*A;case"days":case"day":case"d":return A*r;case"hours":case"hour":case"hrs":case"hr":case"h":return A*i;case"minutes":case"minute":case"mins":case"min":case"m":return A*n;case"seconds":case"second":case"secs":case"sec":case"s":return A*t;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return A;default:return}}}}(e);if("number"===c&&isFinite(e))return A.long?(s=e,(a=Math.abs(s))>=r?o(s,a,r,"day"):a>=i?o(s,a,i,"hour"):a>=n?o(s,a,n,"minute"):a>=t?o(s,a,t,"second"):s+" ms"):function(e){var o=Math.abs(e);return o>=r?Math.round(e/r)+"d":o>=i?Math.round(e/i)+"h":o>=n?Math.round(e/n)+"m":o>=t?Math.round(e/t)+"s":e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},4796:(e,t)=>{"use strict";t.I=function(e){e.client&&(document.head.appendChild(e.msh=document.createElement("style")),e.createRule=function(t,n){var i=t+"{}";n&&(i=n+"{"+i+"}");var r=n?e.msh.sheet:e.sh.sheet,o=r.insertRule(i,r.cssRules.length),A=(r.cssRules||r.rules)[o];if(A.index=o,n){var s=(A.cssRules||A.rules)[0];A.style=s.style,A.styleMap=s.styleMap}return A})}},15892:(e,t,n)=>{"use strict";var i=n(78301).D;t.I=function(e){if(e.client){var t=e.kebab;n.prototype.diff=function(e){var n,i=this.decl,r=this.rule.style;for(n in i)void 0===e[n]&&r.removeProperty(n);for(n in e)e[n]!==i[n]&&r.setProperty(t(n),e[n]);this.decl=e},n.prototype.del=function(){i(this.rule)},r.prototype.diff=function(e){var t=this.tree;for(var i in t)if(void 0===e[i]){var r=t[i];for(var o in r)r[o].del()}for(var i in e)if(void 0===t[i])for(var o in e[i])(a=new n(o,i)).diff(e[i][o]),e[i][o]=a;else{var A=t[i],s=e[i];for(var o in A)s[o]||A[o].del();for(var o in s){var a;(a=A[o])?(a.diff(s[o]),s[o]=a):((a=new n(o,i)).diff(s[o]),s[o]=a)}}this.tree=e},e.VRule=n,e.VSheet=r}function n(t,n){this.rule=e.createRule(t,n),this.decl={}}function r(){this.tree={}}}},27315:(e,t)=>{t.z=function e(t,n,i,r){var o,A,s={},a=!1;for(o in n)"object"!=typeof(A=n[o])&&(a=!0,s[o]=A);for(o in a&&(t[r]||(t[r]={}),t[r][i]=s),n)if("object"==typeof(A=n[o]))if("@"===o[0])e(t,A,i,o);else{var c=o.indexOf("&")>-1,u=i.split(",");if(c)for(var l=0;l{t.D=function(e){var t=e.index,n=e.parentStyleSheet,i=n.cssRules||n.rules;for(t=Math.max(t,i.length-1);t>=0;){if(i[t]===e){n.deleteRule(t);break}t--}}},4315:(e,t)=>{"use strict";var n=/[A-Z]/g;t.U=function(e){var t=(e=e||{}).assign||Object.assign,i=t({raw:"",pfx:"_",client:"object"==typeof window,assign:t,stringify:JSON.stringify,kebab:function(e){return e.replace(n,"-$&").toLowerCase()},decl:function(e,t){return(e=i.kebab(e))+":"+t+";"},hash:function(e){return function(e){for(var t=5381,n=e.length;n;)t=33*t^e.charCodeAt(--n);return"_"+(t>>>0).toString(36)}(i.stringify(e))},selector:function(e,t){return e+(":"===t[0]?"":" ")+t},putRaw:function(e){i.raw+=e}},e);return i.client&&(i.sh||document.head.appendChild(i.sh=document.createElement("style")),i.putRaw=function(e){var t=i.sh.sheet;try{t.insertRule(e,t.cssRules.length)}catch(e){}}),i.put=function(e,t,n){var r,o,A="",s=[];for(r in t)(o=t[r])instanceof Object&&!(o instanceof Array)?s.push(r):A+=i.decl(r,o,e,n);A&&(A=e+"{"+A+"}",i.putRaw(n?n+"{"+A+"}":A));for(var a=0;a{var i=n(14224);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var r=n(25321).Z,o=n(1322).Z,A=n(6687).Z,s=n(6239).Z,a=A(n(50959)),c=o(n(53243)),u=n(43582),l=n(1787),g=n(98940),d=(n(79145),o(n(42860)));const h=i.env.__NEXT_IMAGE_OPTS;function p(e){return void 0!==e.default}function f(e){return"number"==typeof e||void 0===e?e:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function m(e,t,n,i,o,A,s){e&&e["data-loaded-src"]!==t&&(e["data-loaded-src"]=t,("decode"in e?e.decode():Promise.resolve()).catch((()=>{})).then((()=>{if(e.parentNode){if("blur"===n&&A(!0),null==i?void 0:i.current){const t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let n=!1,o=!1;i.current(r({},t,{nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>n,isPropagationStopped:()=>o,persist:()=>{},preventDefault:()=>{n=!0,t.preventDefault()},stopPropagation:()=>{o=!0,t.stopPropagation()}}))}(null==o?void 0:o.current)&&o.current(e)}})))}new Map,"undefined"==typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);const I=a.forwardRef(((e,t)=>{var{imgAttributes:n,heightInt:i,widthInt:o,qualityInt:A,className:c,imgStyle:u,blurStyle:l,isLazy:g,fill:d,placeholder:h,loading:p,srcString:f,config:I,unoptimized:y,loader:B,onLoadRef:C,onLoadingCompleteRef:w,setBlurComplete:E,setShowAltText:Q,onLoad:b,onError:k}=e,v=s(e,["imgAttributes","heightInt","widthInt","qualityInt","className","imgStyle","blurStyle","isLazy","fill","placeholder","loading","srcString","config","unoptimized","loader","onLoadRef","onLoadingCompleteRef","setBlurComplete","setShowAltText","onLoad","onError"]);return p=g?"lazy":p,a.default.createElement(a.default.Fragment,null,a.default.createElement("img",Object.assign({},v,n,{width:o,height:i,decoding:"async","data-nimg":d?"fill":"1",className:c,loading:p,style:r({},u,l),ref:a.useCallback((e=>{t&&("function"==typeof t?t(e):"object"==typeof t&&(t.current=e)),e&&(k&&(e.src=e.src),e.complete&&m(e,f,h,C,w,E))}),[f,h,C,w,E,k,y,t]),onLoad:e=>{m(e.currentTarget,f,h,C,w,E)},onError:e=>{Q(!0),"blur"===h&&E(!0),k&&k(e)}})))}));var y=a.forwardRef(((e,t)=>{var{src:n,sizes:i,unoptimized:o=!1,priority:A=!1,loading:m,className:y,quality:B,width:C,height:w,fill:E,style:Q,onLoad:b,onLoadingComplete:k,placeholder:v="empty",blurDataURL:S,layout:M,objectFit:D,objectPosition:N,lazyBoundary:T,lazyRoot:P}=e,O=s(e,["src","sizes","unoptimized","priority","loading","className","quality","width","height","fill","style","onLoad","onLoadingComplete","placeholder","blurDataURL","layout","objectFit","objectPosition","lazyBoundary","lazyRoot"]);const F=a.useContext(g.ImageConfigContext),R=a.useMemo((()=>{const e=h||F||l.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort(((e,t)=>e-t)),n=e.deviceSizes.sort(((e,t)=>e-t));return r({},e,{allSizes:t,deviceSizes:n})}),[F]);let G=O,x=G.loader||d.default;delete G.loader;const U="__next_img_default"in x;if(U){if("custom"===R.loader)throw new Error(`Image with src "${n}" is missing "loader" prop.\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader`)}else{const e=x;x=t=>{const{config:n}=t,i=s(t,["config"]);return e(i)}}if(M){"fill"===M&&(E=!0);const e={responsive:"100vw",fill:"100vw"},t={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[M];t&&(Q=r({},Q,t));const n=e[M];n&&!i&&(i=n)}let _,L,K="",Y=f(C),j=f(w);if(function(e){return"object"==typeof e&&(p(e)||function(e){return void 0!==e.src}(e))}(n)){const e=p(n)?n.default:n;if(!e.src)throw new Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(e)}`);if(!e.height||!e.width)throw new Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(e)}`);if(_=e.blurWidth,L=e.blurHeight,S=S||e.blurDataURL,K=e.src,!E)if(Y||j){if(Y&&!j){const t=Y/e.width;j=Math.round(e.height*t)}else if(!Y&&j){const t=j/e.height;Y=Math.round(e.width*t)}}else Y=e.width,j=e.height}let W=!A&&("lazy"===m||void 0===m);((n="string"==typeof n?n:K).startsWith("data:")||n.startsWith("blob:"))&&(o=!0,W=!1),R.unoptimized&&(o=!0),U&&n.endsWith(".svg")&&!R.dangerouslyAllowSVG&&(o=!0);const[J,q]=a.useState(!1),[Z,z]=a.useState(!1),H=f(B),V=Object.assign(E?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:D,objectPosition:N}:{},Z?{}:{color:"transparent"},Q),X="blur"===v&&S&&!J?{backgroundSize:V.objectFit||"cover",backgroundPosition:V.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:`url("data:image/svg+xml;charset=utf-8,${u.getImageBlurSvg({widthInt:Y,heightInt:j,blurWidth:_,blurHeight:L,blurDataURL:S})}")`}:{},$=function({config:e,src:t,unoptimized:n,width:i,quality:r,sizes:o,loader:A}){if(n)return{src:t,srcSet:void 0,sizes:void 0};const{widths:s,kind:a}=function({deviceSizes:e,allSizes:t},n,i){if(i){const n=/(^|\s)(1?\d?\d)vw/g,r=[];for(let e;e=n.exec(i);e)r.push(parseInt(e[2]));if(r.length){const n=.01*Math.min(...r);return{widths:t.filter((t=>t>=e[0]*n)),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof n?{widths:e,kind:"w"}:{widths:[...new Set([n,2*n].map((e=>t.find((t=>t>=e))||t[t.length-1])))],kind:"x"}}(e,i,o),c=s.length-1;return{sizes:o||"w"!==a?o:"100vw",srcSet:s.map(((n,i)=>`${A({config:e,src:t,quality:r,width:n})} ${"w"===a?n:i+1}${a}`)).join(", "),src:A({config:e,src:t,quality:r,width:s[c]})}}({config:R,src:n,unoptimized:o,width:Y,quality:H,sizes:i,loader:x});let ee=n;const te={imageSrcSet:$.srcSet,imageSizes:$.sizes,crossOrigin:G.crossOrigin},ne=a.useRef(b);a.useEffect((()=>{ne.current=b}),[b]);const ie=a.useRef(k);a.useEffect((()=>{ie.current=k}),[k]);const re=r({isLazy:W,imgAttributes:$,heightInt:j,widthInt:Y,qualityInt:H,className:y,imgStyle:V,blurStyle:X,loading:m,config:R,fill:E,unoptimized:o,placeholder:v,loader:x,srcString:ee,onLoadRef:ne,onLoadingCompleteRef:ie,setBlurComplete:q,setShowAltText:z},G);return a.default.createElement(a.default.Fragment,null,a.default.createElement(I,Object.assign({},re,{ref:t})),A?a.default.createElement(c.default,null,a.default.createElement("link",Object.assign({key:"__nimg-"+$.src+$.srcSet+$.sizes,rel:"preload",as:"image",href:$.srcSet?void 0:$.src},te))):null)}));t.default=y,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},69488:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AmpStateContext=void 0;const i=(0,n(1322).Z)(n(50959)).default.createContext({});t.AmpStateContext=i},92013:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isInAmpMode=function({ampFirst:e=!1,hybrid:t=!1,hasQuery:n=!1}={}){return e||t&&n}},78293:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.HeadManagerContext=void 0;const i=(0,n(1322).Z)(n(50959)).default.createContext({});t.HeadManagerContext=i},53243:(e,t,n)=>{var i=n(14224);Object.defineProperty(t,"__esModule",{value:!0}),t.defaultHead=l,t.default=void 0;var r=n(25321).Z,o=n(1322).Z,A=(0,n(6687).Z)(n(50959)),s=o(n(21753)),a=n(69488),c=n(78293),u=n(92013);function l(e=!1){const t=[A.default.createElement("meta",{charSet:"utf-8"})];return e||t.push(A.default.createElement("meta",{name:"viewport",content:"width=device-width"})),t}function g(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===A.default.Fragment?e.concat(A.default.Children.toArray(t.props.children).reduce(((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t)),[])):e.concat(t)}n(79145);const d=["name","httpEquiv","charSet","itemProp"];function h(e,t){const{inAmpMode:n}=t;return e.reduce(g,[]).reverse().concat(l(n).reverse()).filter(function(){const e=new Set,t=new Set,n=new Set,i={};return r=>{let o=!0,A=!1;if(r.key&&"number"!=typeof r.key&&r.key.indexOf("$")>0){A=!0;const t=r.key.slice(r.key.indexOf("$")+1);e.has(t)?o=!1:e.add(t)}switch(r.type){case"title":case"base":t.has(r.type)?o=!1:t.add(r.type);break;case"meta":for(let e=0,t=d.length;e{const o=e.key||t;if(i.env.__NEXT_OPTIMIZE_FONTS&&!n&&"link"===e.type&&e.props.href&&["https://fonts.googleapis.com/css","https://use.typekit.net/"].some((t=>e.props.href.startsWith(t)))){const t=r({},e.props||{});return t["data-href"]=t.href,t.href=void 0,t["data-optimized-fonts"]=!0,A.default.cloneElement(e,t)}return A.default.cloneElement(e,{key:o})}))}t.default=function({children:e}){const t=A.useContext(a.AmpStateContext),n=A.useContext(c.HeadManagerContext);return A.default.createElement(s.default,{reduceComponentsToState:h,headManager:n,inAmpMode:u.isInAmpMode(t)},e)},("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},43582:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getImageBlurSvg=function({widthInt:e,heightInt:t,blurWidth:n,blurHeight:i,blurDataURL:r}){const o=n&&i?"1":"20",A=n||e,s=i||t,a=r.startsWith("data:image/jpeg")?"%3CfeComponentTransfer%3E%3CfeFuncA type='discrete' tableValues='1 1'/%3E%3C/feComponentTransfer%3E%":"";return A&&s?`%3Csvg xmlns='http%3A//www.w3.org/2000/svg' viewBox='0 0 ${A} ${s}'%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='${o}'/%3E${a}%3C/filter%3E%3Cimage preserveAspectRatio='none' filter='url(%23b)' x='0' y='0' height='100%25' width='100%25' href='${r}'/%3E%3C/svg%3E`:`%3Csvg xmlns='http%3A//www.w3.org/2000/svg'%3E%3Cimage style='filter:blur(20px)' x='0' y='0' height='100%25' width='100%25' href='${r}'/%3E%3C/svg%3E`}},98940:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ImageConfigContext=void 0;var i=(0,n(1322).Z)(n(50959)),r=n(1787);const o=i.default.createContext(r.imageConfigDefault);t.ImageConfigContext=o},1787:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.imageConfigDefault=t.VALID_LOADERS=void 0,t.VALID_LOADERS=["default","imgix","cloudinary","akamai","custom"];t.imageConfigDefault={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:60,formats:["image/webp"],dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",remotePatterns:[],unoptimized:!1}},42860:(e,t)=>{"use strict";function n({config:e,src:t,width:n,quality:i}){return`${e.path}?url=${encodeURIComponent(t)}&w=${n}&q=${i||75}`}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0,n.__next_img_default=!0;var i=n;t.default=i},21753:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){const{headManager:t,reduceComponentsToState:n}=e;function s(){if(t&&t.mountedInstances){const r=i.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(n(r,e))}}var a;r&&(null==t||null==(a=t.mountedInstances)||a.add(e.children),s());return o((()=>{var n;return null==t||null==(n=t.mountedInstances)||n.add(e.children),()=>{var n;null==t||null==(n=t.mountedInstances)||n.delete(e.children)}})),o((()=>(t&&(t._pendingUpdate=s),()=>{t&&(t._pendingUpdate=s)}))),A((()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)}))),null};var i=(0,n(6687).Z)(n(50959));const r="undefined"==typeof window,o=r?()=>{}:i.useLayoutEffect,A=r?()=>{}:i.useEffect},79145:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.warnOnce=void 0,t.warnOnce=e=>{}},16256:(e,t,n)=>{e.exports=n(63075)},6267:(e,t)=>{t.endianness=function(){return"LE"},t.hostname=function(){return"undefined"!=typeof location?location.hostname:""},t.loadavg=function(){return[]},t.uptime=function(){return 0},t.freemem=function(){return Number.MAX_VALUE},t.totalmem=function(){return Number.MAX_VALUE},t.cpus=function(){return[]},t.type=function(){return"Browser"},t.release=function(){return"undefined"!=typeof navigator?navigator.appVersion:""},t.networkInterfaces=t.getNetworkInterfaces=function(){return{}},t.arch=function(){return"javascript"},t.platform=function(){return"browser"},t.tmpdir=t.tmpDir=function(){return"/tmp"},t.EOL="\n",t.homedir=function(){return"/"}},62005:(e,t,n)=>{"use strict";var i=n(14224);function r(e){if("string"!=typeof e)throw new TypeError("Path must be a string. Received "+JSON.stringify(e))}function o(e,t){for(var n,i="",r=0,o=-1,A=0,s=0;s<=e.length;++s){if(s2){var a=i.lastIndexOf("/");if(a!==i.length-1){-1===a?(i="",r=0):r=(i=i.slice(0,a)).length-1-i.lastIndexOf("/"),o=s,A=0;continue}}else if(2===i.length||1===i.length){i="",r=0,o=s,A=0;continue}t&&(i.length>0?i+="/..":i="..",r=2)}else i.length>0?i+="/"+e.slice(o+1,s):i=e.slice(o+1,s),r=s-o-1;o=s,A=0}else 46===n&&-1!==A?++A:A=-1}return i}var A={resolve:function(){for(var e,t="",n=!1,A=arguments.length-1;A>=-1&&!n;A--){var s;A>=0?s=arguments[A]:(void 0===e&&(e=i.cwd()),s=e),r(s),0!==s.length&&(t=s+"/"+t,n=47===s.charCodeAt(0))}return t=o(t,!n),n?t.length>0?"/"+t:"/":t.length>0?t:"."},normalize:function(e){if(r(e),0===e.length)return".";var t=47===e.charCodeAt(0),n=47===e.charCodeAt(e.length-1);return 0!==(e=o(e,!t)).length||t||(e="."),e.length>0&&n&&(e+="/"),t?"/"+e:e},isAbsolute:function(e){return r(e),e.length>0&&47===e.charCodeAt(0)},join:function(){if(0===arguments.length)return".";for(var e,t=0;t0&&(void 0===e?e=n:e+="/"+n)}return void 0===e?".":A.normalize(e)},relative:function(e,t){if(r(e),r(t),e===t)return"";if((e=A.resolve(e))===(t=A.resolve(t)))return"";for(var n=1;nc){if(47===t.charCodeAt(s+l))return t.slice(s+l+1);if(0===l)return t.slice(s+l)}else o>c&&(47===e.charCodeAt(n+l)?u=l:0===l&&(u=0));break}var g=e.charCodeAt(n+l);if(g!==t.charCodeAt(s+l))break;47===g&&(u=l)}var d="";for(l=n+u+1;l<=i;++l)l!==i&&47!==e.charCodeAt(l)||(0===d.length?d+="..":d+="/..");return d.length>0?d+t.slice(s+u):(s+=u,47===t.charCodeAt(s)&&++s,t.slice(s))},_makeLong:function(e){return e},dirname:function(e){if(r(e),0===e.length)return".";for(var t=e.charCodeAt(0),n=47===t,i=-1,o=!0,A=e.length-1;A>=1;--A)if(47===(t=e.charCodeAt(A))){if(!o){i=A;break}}else o=!1;return-1===i?n?"/":".":n&&1===i?"//":e.slice(0,i)},basename:function(e,t){if(void 0!==t&&"string"!=typeof t)throw new TypeError('"ext" argument must be a string');r(e);var n,i=0,o=-1,A=!0;if(void 0!==t&&t.length>0&&t.length<=e.length){if(t.length===e.length&&t===e)return"";var s=t.length-1,a=-1;for(n=e.length-1;n>=0;--n){var c=e.charCodeAt(n);if(47===c){if(!A){i=n+1;break}}else-1===a&&(A=!1,a=n+1),s>=0&&(c===t.charCodeAt(s)?-1==--s&&(o=n):(s=-1,o=a))}return i===o?o=a:-1===o&&(o=e.length),e.slice(i,o)}for(n=e.length-1;n>=0;--n)if(47===e.charCodeAt(n)){if(!A){i=n+1;break}}else-1===o&&(A=!1,o=n+1);return-1===o?"":e.slice(i,o)},extname:function(e){r(e);for(var t=-1,n=0,i=-1,o=!0,A=0,s=e.length-1;s>=0;--s){var a=e.charCodeAt(s);if(47!==a)-1===i&&(o=!1,i=s+1),46===a?-1===t?t=s:1!==A&&(A=1):-1!==t&&(A=-1);else if(!o){n=s+1;break}}return-1===t||-1===i||0===A||1===A&&t===i-1&&t===n+1?"":e.slice(t,i)},format:function(e){if(null===e||"object"!=typeof e)throw new TypeError('The "pathObject" argument must be of type Object. Received type '+typeof e);return function(e,t){var n=t.dir||t.root,i=t.base||(t.name||"")+(t.ext||"");return n?n===t.root?n+i:n+"/"+i:i}(0,e)},parse:function(e){r(e);var t={root:"",dir:"",base:"",ext:"",name:""};if(0===e.length)return t;var n,i=e.charCodeAt(0),o=47===i;o?(t.root="/",n=1):n=0;for(var A=-1,s=0,a=-1,c=!0,u=e.length-1,l=0;u>=n;--u)if(47!==(i=e.charCodeAt(u)))-1===a&&(c=!1,a=u+1),46===i?-1===A?A=u:1!==l&&(l=1):-1!==A&&(l=-1);else if(!c){s=u+1;break}return-1===A||-1===a||0===l||1===l&&A===a-1&&A===s+1?-1!==a&&(t.base=t.name=0===s&&o?e.slice(1,a):e.slice(s,a)):(0===s&&o?(t.name=e.slice(1,A),t.base=e.slice(1,a)):(t.name=e.slice(s,A),t.base=e.slice(s,a)),t.ext=e.slice(A,a)),s>0?t.dir=e.slice(0,s-1):o&&(t.dir="/"),t},sep:"/",delimiter:":",win32:null,posix:null};A.posix=A,e.exports=A},74449:(e,t,n)=>{"use strict";var i=n(76693),r=n(96157),o=Object.prototype.hasOwnProperty;function A(e){return e&&"EPROMISERETRY"===e.code&&o.call(e,"retried")}e.exports=function(e,t){var n,o;return"object"==typeof e&&"function"==typeof t&&(n=t,t=e,e=n),o=r.operation(t),new Promise((function(t,n){o.attempt((function(r){Promise.resolve().then((function(){return e((function(e){throw A(e)&&(e=e.retried),i(new Error("Retrying"),"EPROMISERETRY",{retried:e})}),r)})).then(t,(function(e){A(e)&&(e=e.retried,o.retry(e||new Error))||n(e)}))}))}))}},13775:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=function(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}(n(50959)),r=e=>"checkbox"===e.type,o=e=>e instanceof Date,A=e=>null==e;const s=e=>"object"==typeof e;var a=e=>!A(e)&&!Array.isArray(e)&&s(e)&&!o(e),c=e=>a(e)&&e.target?r(e.target)?e.target.checked:e.target.value:e,u=(e,t)=>e.has((e=>e.substring(0,e.search(/\.\d+(\.|$)/))||e)(t)),l=e=>Array.isArray(e)?e.filter(Boolean):[],g=e=>void 0===e,d=(e,t,n)=>{if(!t||!a(e))return n;const i=l(t.split(/[,[\].]+?/)).reduce(((e,t)=>A(e)?e:e[t]),e);return g(i)||i===e?g(e[t])?n:e[t]:i};const h="blur",p="onChange",f="onSubmit",m="all",I="pattern",y="required",B=i.default.createContext(null),C=()=>i.default.useContext(B);var w=(e,t,n,i=!0)=>{const r={defaultValues:t._defaultValues};for(const o in e)Object.defineProperty(r,o,{get:()=>{const r=o;return t._proxyFormState[r]!==m&&(t._proxyFormState[r]=!i||m),n&&(n[r]=!0),e[r]}});return r},E=e=>a(e)&&!Object.keys(e).length,Q=(e,t,n,i)=>{n(e);const{name:r,...o}=e;return E(o)||Object.keys(o).length>=Object.keys(t).length||Object.keys(o).find((e=>t[e]===(!i||m)))},b=e=>Array.isArray(e)?e:[e],k=(e,t,n)=>n&&t?e===t:!e||!t||e===t||b(e).some((e=>e&&(e.startsWith(t)||t.startsWith(e))));function v(e){const t=i.default.useRef(e);t.current=e,i.default.useEffect((()=>{const n=!e.disabled&&t.current.subject.subscribe({next:t.current.next});return()=>{n&&n.unsubscribe()}}),[e.disabled])}function S(e){const t=C(),{control:n=t.control,disabled:r,name:o,exact:A}=e||{},[s,a]=i.default.useState(n._formState),c=i.default.useRef(!0),u=i.default.useRef({isDirty:!1,isLoading:!1,dirtyFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1}),l=i.default.useRef(o);return l.current=o,v({disabled:r,next:e=>c.current&&k(l.current,e.name,A)&&Q(e,u.current,n._updateFormState)&&a({...n._formState,...e}),subject:n._subjects.state}),i.default.useEffect((()=>{c.current=!0;const e=n._proxyFormState.isDirty&&n._getDirty();return e!==n._formState.isDirty&&n._subjects.state.next({isDirty:e}),u.current.isValid&&n._updateValid(!0),()=>{c.current=!1}}),[n]),w(s,n,u.current,!1)}var M=e=>"string"==typeof e,D=(e,t,n,i,r)=>M(e)?(i&&t.watch.add(e),d(n,e,r)):Array.isArray(e)?e.map((e=>(i&&t.watch.add(e),d(n,e)))):(i&&(t.watchAll=!0),n),N="undefined"!=typeof window&&void 0!==window.HTMLElement&&"undefined"!=typeof document;function T(e){let t;const n=Array.isArray(e);if(e instanceof Date)t=new Date(e);else if(e instanceof Set)t=new Set(e);else{if(N&&(e instanceof Blob||e instanceof FileList)||!n&&!a(e))return e;if(t=n?[]:{},Array.isArray(e)||(e=>{const t=e.constructor&&e.constructor.prototype;return a(t)&&t.hasOwnProperty("isPrototypeOf")})(e))for(const n in e)t[n]=T(e[n]);else t=e}return t}function P(e){const t=C(),{control:n=t.control,name:r,defaultValue:o,disabled:A,exact:s}=e||{},a=i.default.useRef(r);a.current=r,v({disabled:A,subject:n._subjects.watch,next:e=>{k(a.current,e.name,s)&&u(T(D(a.current,n._names,e.values||n._formValues,!1,o)))}});const[c,u]=i.default.useState(n._getWatch(r,o));return i.default.useEffect((()=>n._removeUnmounted())),c}function O(e){const t=C(),{name:n,control:r=t.control,shouldUnregister:o}=e,A=u(r._names.array,n),s=P({control:r,name:n,defaultValue:d(r._formValues,n,d(r._defaultValues,n,e.defaultValue)),exact:!0}),a=S({control:r,name:n}),l=i.default.useRef(r.register(n,{...e.rules,value:s}));return i.default.useEffect((()=>{const e=(e,t)=>{const n=d(r._fields,e);n&&(n._f.mount=t)};return e(n,!0),()=>{const t=r._options.shouldUnregister||o;(A?t&&!r._stateFlags.action:t)?r.unregister(n):e(n,!1)}}),[n,r,A,o]),{field:{name:n,value:s,onChange:i.default.useCallback((e=>l.current.onChange({target:{value:c(e),name:n},type:"change"})),[n]),onBlur:i.default.useCallback((()=>l.current.onBlur({target:{value:d(r._formValues,n),name:n},type:h})),[n,r]),ref:e=>{const t=d(r._fields,n);t&&e&&(t._f.ref={focus:()=>e.focus(),select:()=>e.select(),setCustomValidity:t=>e.setCustomValidity(t),reportValidity:()=>e.reportValidity()})}},formState:a,fieldState:Object.defineProperties({},{invalid:{enumerable:!0,get:()=>!!d(a.errors,n)},isDirty:{enumerable:!0,get:()=>!!d(a.dirtyFields,n)},isTouched:{enumerable:!0,get:()=>!!d(a.touchedFields,n)},error:{enumerable:!0,get:()=>d(a.errors,n)}})}}var F=(e,t,n,i,r)=>t?{...n[e],types:{...n[e]&&n[e].types?n[e].types:{},[i]:r||!0}}:{},R=e=>/^\w*$/.test(e),G=e=>l(e.replace(/["|']|\]/g,"").split(/\.|\[/));function x(e,t,n){let i=-1;const r=R(t)?[t]:G(t),o=r.length,A=o-1;for(;++i{for(const i of n||Object.keys(e)){const n=d(e,i);if(n){const{_f:e,...i}=n;if(e&&t(e.name)){if(e.ref.focus){e.ref.focus();break}if(e.refs&&e.refs[0].focus){e.refs[0].focus();break}}else a(i)&&U(i,t)}}};var _=()=>{const e="undefined"==typeof performance?Date.now():1e3*performance.now();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(t=>{const n=(16*Math.random()+e)%16|0;return("x"==t?n:3&n|8).toString(16)}))},L=(e,t,n={})=>n.shouldFocus||g(n.shouldFocus)?n.focusName||`${e}.${g(n.focusIndex)?t:n.focusIndex}.`:"",K=e=>({isOnSubmit:!e||e===f,isOnBlur:"onBlur"===e,isOnChange:e===p,isOnAll:e===m,isOnTouch:"onTouched"===e}),Y=(e,t,n)=>!n&&(t.watchAll||t.watch.has(e)||[...t.watch].some((t=>e.startsWith(t)&&/^\.\w+/.test(e.slice(t.length))))),j=(e,t,n)=>{const i=l(d(e,n));return x(i,"root",t[n]),x(e,n,i),e},W=e=>"boolean"==typeof e,J=e=>"file"===e.type,q=e=>"function"==typeof e,Z=e=>{if(!N)return!1;const t=e?e.ownerDocument:0;return e instanceof(t&&t.defaultView?t.defaultView.HTMLElement:HTMLElement)},z=e=>M(e)||i.default.isValidElement(e),H=e=>"radio"===e.type,V=e=>e instanceof RegExp;const X={value:!1,isValid:!1},$={value:!0,isValid:!0};var ee=e=>{if(Array.isArray(e)){if(e.length>1){const t=e.filter((e=>e&&e.checked&&!e.disabled)).map((e=>e.value));return{value:t,isValid:!!t.length}}return e[0].checked&&!e[0].disabled?e[0].attributes&&!g(e[0].attributes.value)?g(e[0].value)||""===e[0].value?$:{value:e[0].value,isValid:!0}:$:X}return X};const te={isValid:!1,value:null};var ne=e=>Array.isArray(e)?e.reduce(((e,t)=>t&&t.checked&&!t.disabled?{isValid:!0,value:t.value}:e),te):te;function ie(e,t,n="validate"){if(z(e)||Array.isArray(e)&&e.every(z)||W(e)&&!e)return{type:n,message:z(e)?e:"",ref:t}}var re=e=>a(e)&&!V(e)?e:{value:e,message:""},oe=async(e,t,n,i,o)=>{const{ref:s,refs:c,required:u,maxLength:l,minLength:h,min:p,max:f,pattern:m,validate:B,name:C,valueAsNumber:w,mount:Q,disabled:b}=e._f,k=d(t,C);if(!Q||b)return{};const v=c?c[0]:s,S=e=>{i&&v.reportValidity&&(v.setCustomValidity(W(e)?"":e||""),v.reportValidity())},D={},N=H(s),T=r(s),P=N||T,O=(w||J(s))&&g(s.value)&&g(k)||Z(s)&&""===s.value||""===k||Array.isArray(k)&&!k.length,R=F.bind(null,C,n,D),G=(e,t,n,i="maxLength",r="minLength")=>{const o=e?t:n;D[C]={type:e?i:r,message:o,ref:s,...R(e?i:r,o)}};if(o?!Array.isArray(k)||!k.length:u&&(!P&&(O||A(k))||W(k)&&!k||T&&!ee(c).isValid||N&&!ne(c).isValid)){const{value:e,message:t}=z(u)?{value:!!u,message:u}:re(u);if(e&&(D[C]={type:y,message:t,ref:v,...R(y,t)},!n))return S(t),D}if(!(O||A(p)&&A(f))){let e,t;const i=re(f),r=re(p);if(A(k)||isNaN(k)){const n=s.valueAsDate||new Date(k),o=e=>new Date((new Date).toDateString()+" "+e),A="time"==s.type,a="week"==s.type;M(i.value)&&k&&(e=A?o(k)>o(i.value):a?k>i.value:n>new Date(i.value)),M(r.value)&&k&&(t=A?o(k)i.value),A(r.value)||(t=ne.value,r=!A(t.value)&&k.lengthArray.isArray(e)?e.map((()=>{})):void 0;function ae(e,t,n){return[...e.slice(0,t),...b(n),...e.slice(t)]}var ce=(e,t,n)=>Array.isArray(e)?(g(e[n])&&(e[n]=void 0),e.splice(n,0,e.splice(t,1)[0]),e):[];function ue(e,t){return[...b(t),...b(e)]}var le=(e,t)=>g(t)?[]:function(e,t){let n=0;const i=[...e];for(const e of t)i.splice(e-n,1),n++;return l(i).length?i:[]}(e,b(t).sort(((e,t)=>e-t))),ge=(e,t,n)=>{e[t]=[e[n],e[n]=e[t]][0]};function de(e,t){const n=Array.isArray(t)?t:R(t)?[t]:G(t),i=1===n.length?e:function(e,t){const n=t.slice(0,-1).length;let i=0;for(;i(e[t]=n,e);function pe(){let e=[];return{get observers(){return e},next:t=>{for(const n of e)n.next(t)},subscribe:t=>(e.push(t),{unsubscribe:()=>{e=e.filter((e=>e!==t))}}),unsubscribe:()=>{e=[]}}}var fe=e=>A(e)||!s(e);function me(e,t){if(fe(e)||fe(t))return e===t;if(o(e)&&o(t))return e.getTime()===t.getTime();const n=Object.keys(e),i=Object.keys(t);if(n.length!==i.length)return!1;for(const r of n){const n=e[r];if(!i.includes(r))return!1;if("ref"!==r){const e=t[r];if(o(n)&&o(e)||a(n)&&a(e)||Array.isArray(n)&&Array.isArray(e)?!me(n,e):n!==e)return!1}}return!0}var Ie=e=>"select-multiple"===e.type,ye=e=>Z(e)&&e.isConnected,Be=e=>{for(const t in e)if(q(e[t]))return!0;return!1};function Ce(e,t={}){const n=Array.isArray(e);if(a(e)||n)for(const n in e)Array.isArray(e[n])||a(e[n])&&!Be(e[n])?(t[n]=Array.isArray(e[n])?[]:{},Ce(e[n],t[n])):A(e[n])||(t[n]=!0);return t}function we(e,t,n){const i=Array.isArray(e);if(a(e)||i)for(const i in e)Array.isArray(e[i])||a(e[i])&&!Be(e[i])?g(t)||fe(n[i])?n[i]=Array.isArray(e[i])?Ce(e[i],[]):{...Ce(e[i])}:we(e[i],A(t)?{}:t[i],n[i]):me(e[i],t[i])?delete n[i]:n[i]=!0;return n}var Ee=(e,t)=>we(e,t,Ce(t)),Qe=(e,{valueAsNumber:t,valueAsDate:n,setValueAs:i})=>g(e)?e:t?""===e?NaN:e?+e:e:n&&M(e)?new Date(e):i?i(e):e;function be(e){const t=e.ref;if(!(e.refs?e.refs.every((e=>e.disabled)):t.disabled))return J(t)?t.files:H(t)?ne(e.refs).value:Ie(t)?[...t.selectedOptions].map((({value:e})=>e)):r(t)?ee(e.refs).value:Qe(g(t.value)?e.ref.value:t.value,e)}var ke=e=>g(e)?e:V(e)?e.source:a(e)?V(e.value)?e.value.source:e.value:e;function ve(e,t,n){const i=d(e,n);if(i||R(n))return{error:i,name:n};const r=n.split(".");for(;r.length;){const i=r.join("."),o=d(t,i),A=d(e,i);if(o&&!Array.isArray(o)&&n!==i)return{name:n};if(A&&A.type)return{name:i,error:A};r.pop()}return{name:n}}const Se={mode:f,reValidateMode:p,shouldFocusError:!0};function Me(e={},t){let n={...Se,...e};const i=e.resetOptions&&e.resetOptions.keepDirtyValues;let s,p={submitCount:0,isDirty:!1,isLoading:!0,isValidating:!1,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,touchedFields:{},dirtyFields:{},errors:{}},f={},I=a(n.defaultValues)&&T(n.defaultValues)||{},y=n.shouldUnregister?{}:T(I),B={action:!1,mount:!1,watch:!1},C={mount:new Set,unMount:new Set,array:new Set,watch:new Set},w=0;const Q={isDirty:!1,dirtyFields:!1,touchedFields:!1,isValidating:!1,isValid:!1,errors:!1},k={watch:pe(),array:pe(),state:pe()},v=K(n.mode),S=K(n.reValidateMode),P=n.criteriaMode===m,O=async e=>{if(Q.isValid||e){const e=n.resolver?E((await L()).errors):await z(f,!0);e!==p.isValid&&(p.isValid=e,k.state.next({isValid:e}))}},F=e=>Q.isValidating&&k.state.next({isValidating:e}),R=(e,t,n,i)=>{const r=d(f,e);if(r){const o=d(y,e,g(n)?d(I,e):n);g(o)||i&&i.defaultChecked||t?x(y,e,t?o:be(r._f)):$(e,o),B.mount&&O()}},G=(e,t,n,i,r)=>{let o=!1,A=!1;const s={name:e};if(!n||i){Q.isDirty&&(A=p.isDirty,p.isDirty=s.isDirty=V(),o=A!==s.isDirty);const n=me(d(I,e),t);A=d(p.dirtyFields,e),n?de(p.dirtyFields,e):x(p.dirtyFields,e,!0),s.dirtyFields=p.dirtyFields,o=o||Q.dirtyFields&&A!==!n}if(n){const t=d(p.touchedFields,e);t||(x(p.touchedFields,e,n),s.touchedFields=p.touchedFields,o=o||Q.touchedFields&&t!==n)}return o&&r&&k.state.next(s),o?s:{}},_=(t,n,i,r)=>{const o=d(p.errors,t),A=Q.isValid&&W(n)&&p.isValid!==n;var a;if(e.delayError&&i?(a=()=>((e,t)=>{x(p.errors,e,t),k.state.next({errors:p.errors})})(t,i),s=e=>{clearTimeout(w),w=window.setTimeout(a,e)},s(e.delayError)):(clearTimeout(w),s=null,i?x(p.errors,t,i):de(p.errors,t)),(i?!me(o,i):o)||!E(r)||A){const e={...r,...A&&W(n)?{isValid:n}:{},errors:p.errors,name:t};p={...p,...e},k.state.next(e)}F(!1)},L=async e=>await n.resolver(y,n.context,((e,t,n,i)=>{const r={};for(const n of e){const e=d(t,n);e&&x(r,n,e._f)}return{criteriaMode:n,names:[...e],fields:r,shouldUseNativeValidation:i}})(e||C.mount,f,n.criteriaMode,n.shouldUseNativeValidation)),z=async(e,t,i={valid:!0})=>{for(const r in e){const o=e[r];if(o){const{_f:e,...r}=o;if(e){const r=C.array.has(e.name),A=await oe(o,y,P,n.shouldUseNativeValidation,r);if(A[e.name]&&(i.valid=!1,t))break;!t&&(d(A,e.name)?r?j(p.errors,A,e.name):x(p.errors,e.name,A[e.name]):de(p.errors,e.name))}r&&await z(r,t,i)}}return i.valid},V=(e,t)=>(e&&t&&x(y,e,t),!me(re(),I)),X=(e,t,n)=>D(e,C,{...B.mount?y:g(t)?I:M(e)?{[e]:t}:t},n,t),$=(e,t,n={})=>{const i=d(f,e);let o=t;if(i){const n=i._f;n&&(!n.disabled&&x(y,e,Qe(t,n)),o=Z(n.ref)&&A(t)?"":t,Ie(n.ref)?[...n.ref.options].forEach((e=>e.selected=o.includes(e.value))):n.refs?r(n.ref)?n.refs.length>1?n.refs.forEach((e=>(!e.defaultChecked||!e.disabled)&&(e.checked=Array.isArray(o)?!!o.find((t=>t===e.value)):o===e.value))):n.refs[0]&&(n.refs[0].checked=!!o):n.refs.forEach((e=>e.checked=e.value===o)):J(n.ref)?n.ref.value="":(n.ref.value=o,n.ref.type||k.watch.next({name:e})))}(n.shouldDirty||n.shouldTouch)&&G(e,o,n.shouldTouch,n.shouldDirty,!0),n.shouldValidate&&ie(e)},ee=(e,t,n)=>{for(const i in t){const r=t[i],A=`${e}.${i}`,s=d(f,A);!C.array.has(e)&&fe(r)&&(!s||s._f)||o(r)?$(A,r,n):ee(A,r,n)}},te=(e,n,i={})=>{const r=d(f,e),o=C.array.has(e),s=T(n);x(y,e,s),o?(k.array.next({name:e,values:y}),(Q.isDirty||Q.dirtyFields)&&i.shouldDirty&&(p.dirtyFields=Ee(I,y),k.state.next({name:e,dirtyFields:p.dirtyFields,isDirty:V(e,s)}))):!r||r._f||A(s)?$(e,s,i):ee(e,s,i),Y(e,C)&&k.state.next({}),k.watch.next({name:e}),!B.mount&&t()},ne=async e=>{const t=e.target;let i=t.name;const r=d(f,i);if(r){let A,a;const u=t.type?be(r._f):c(e),l=e.type===h||"focusout"===e.type,g=!((o=r._f).mount&&(o.required||o.min||o.max||o.maxLength||o.minLength||o.pattern||o.validate)||n.resolver||d(p.errors,i)||r._f.deps)||((e,t,n,i,r)=>!r.isOnAll&&(!n&&r.isOnTouch?!(t||e):(n?i.isOnBlur:r.isOnBlur)?!e:!(n?i.isOnChange:r.isOnChange)||e))(l,d(p.touchedFields,i),p.isSubmitted,S,v),m=Y(i,C,l);x(y,i,u),l?(r._f.onBlur&&r._f.onBlur(e),s&&s(0)):r._f.onChange&&r._f.onChange(e);const I=G(i,u,l,!1),B=!E(I)||m;if(!l&&k.watch.next({name:i,type:e.type}),g)return Q.isValid&&O(),B&&k.state.next({name:i,...m?{}:I});if(!l&&m&&k.state.next({}),F(!0),n.resolver){const{errors:e}=await L([i]),t=ve(p.errors,f,i),n=ve(e,f,t.name||i);A=n.error,i=n.name,a=E(e)}else A=(await oe(r,y,P,n.shouldUseNativeValidation))[i],A?a=!1:Q.isValid&&(a=await z(f,!0));r._f.deps&&ie(r._f.deps),_(i,a,A,I)}var o},ie=async(e,t={})=>{let i,r;const o=b(e);if(F(!0),n.resolver){const t=await(async e=>{const{errors:t}=await L();if(e)for(const n of e){const e=d(t,n);e?x(p.errors,n,e):de(p.errors,n)}else p.errors=t;return t})(g(e)?e:o);i=E(t),r=e?!o.some((e=>d(t,e))):i}else e?(r=(await Promise.all(o.map((async e=>{const t=d(f,e);return await z(t&&t._f?{[e]:t}:t)})))).every(Boolean),(r||p.isValid)&&O()):r=i=await z(f);return k.state.next({...!M(e)||Q.isValid&&i!==p.isValid?{}:{name:e},...n.resolver||!e?{isValid:i}:{},errors:p.errors,isValidating:!1}),t.shouldFocus&&!r&&U(f,(e=>e&&d(p.errors,e)),e?o:C.mount),r},re=e=>{const t={...I,...B.mount?y:{}};return g(e)?t:M(e)?d(t,e):e.map((e=>d(t,e)))},Ae=(e,t)=>({invalid:!!d((t||p).errors,e),isDirty:!!d((t||p).dirtyFields,e),isTouched:!!d((t||p).touchedFields,e),error:d((t||p).errors,e)}),se=(e,t={})=>{for(const i of e?b(e):C.mount)C.mount.delete(i),C.array.delete(i),d(f,i)&&(t.keepValue||(de(f,i),de(y,i)),!t.keepError&&de(p.errors,i),!t.keepDirty&&de(p.dirtyFields,i),!t.keepTouched&&de(p.touchedFields,i),!n.shouldUnregister&&!t.keepDefaultValue&&de(I,i));k.watch.next({}),k.state.next({...p,...t.keepDirty?{isDirty:V()}:{}}),!t.keepIsValid&&O()},ae=(e,t={})=>{let i=d(f,e);const o=W(t.disabled);return x(f,e,{...i||{},_f:{...i&&i._f?i._f:{ref:{name:e}},name:e,mount:!0,...t}}),C.mount.add(e),i?o&&x(y,e,t.disabled?void 0:d(y,e,be(i._f))):R(e,!0,t.value),{...o?{disabled:t.disabled}:{},...n.shouldUseNativeValidation?{required:!!t.required,min:ke(t.min),max:ke(t.max),minLength:ke(t.minLength),maxLength:ke(t.maxLength),pattern:ke(t.pattern)}:{},name:e,onChange:ne,onBlur:ne,ref:o=>{if(o){ae(e,t),i=d(f,e);const n=g(o.value)&&o.querySelectorAll&&o.querySelectorAll("input,select,textarea")[0]||o,A=(e=>H(e)||r(e))(n),s=i._f.refs||[];if(A?s.find((e=>e===n)):n===i._f.ref)return;x(f,e,{_f:{...i._f,...A?{refs:[...s.filter(ye),n,...Array.isArray(d(I,e))?[{}]:[]],ref:{type:n.type,name:e}}:{ref:n}}}),R(e,!1,void 0,n)}else i=d(f,e,{}),i._f&&(i._f.mount=!1),(n.shouldUnregister||t.shouldUnregister)&&(!u(C.array,e)||!B.action)&&C.unMount.add(e)}}},ce=()=>n.shouldFocusError&&U(f,(e=>e&&d(p.errors,e)),C.mount),ue=(n,r={})=>{const o=n||I,A=T(o),s=n&&!E(n)?A:I;if(r.keepDefaultValues||(I=o),!r.keepValues){if(r.keepDirtyValues||i)for(const e of C.mount)d(p.dirtyFields,e)?x(s,e,d(y,e)):te(e,d(s,e));else{if(N&&g(n))for(const e of C.mount){const t=d(f,e);if(t&&t._f){const e=Array.isArray(t._f.refs)?t._f.refs[0]:t._f.ref;if(Z(e)){const t=e.closest("form");if(t){t.reset();break}}}}f={}}y=e.shouldUnregister?r.keepDefaultValues?T(I):{}:A,k.array.next({values:s}),k.watch.next({values:s})}C={mount:new Set,unMount:new Set,array:new Set,watch:new Set,watchAll:!1,focus:""},!B.mount&&t(),B.mount=!Q.isValid||!!r.keepIsValid,B.watch=!!e.shouldUnregister,k.state.next({submitCount:r.keepSubmitCount?p.submitCount:0,isDirty:r.keepDirty||r.keepDirtyValues?p.isDirty:!(!r.keepDefaultValues||me(n,I)),isSubmitted:!!r.keepIsSubmitted&&p.isSubmitted,dirtyFields:r.keepDirty||r.keepDirtyValues?p.dirtyFields:r.keepDefaultValues&&n?Ee(I,n):{},touchedFields:r.keepTouched?p.touchedFields:{},errors:r.keepErrors?p.errors:{},isSubmitting:!1,isSubmitSuccessful:!1})},le=(e,t)=>ue(q(e)?e(y):e,t);return q(n.defaultValues)&&n.defaultValues().then((e=>{le(e,n.resetOptions),k.state.next({isLoading:!1})})),{control:{register:ae,unregister:se,getFieldState:Ae,_executeSchema:L,_focusError:ce,_getWatch:X,_getDirty:V,_updateValid:O,_removeUnmounted:()=>{for(const e of C.unMount){const t=d(f,e);t&&(t._f.refs?t._f.refs.every((e=>!ye(e))):!ye(t._f.ref))&&se(e)}C.unMount=new Set},_updateFieldArray:(e,t=[],n,i,r=!0,o=!0)=>{if(i&&n){if(B.action=!0,o&&Array.isArray(d(f,e))){const t=n(d(f,e),i.argA,i.argB);r&&x(f,e,t)}if(o&&Array.isArray(d(p.errors,e))){const t=n(d(p.errors,e),i.argA,i.argB);r&&x(p.errors,e,t),((e,t)=>{!l(d(e,t)).length&&de(e,t)})(p.errors,e)}if(Q.touchedFields&&o&&Array.isArray(d(p.touchedFields,e))){const t=n(d(p.touchedFields,e),i.argA,i.argB);r&&x(p.touchedFields,e,t)}Q.dirtyFields&&(p.dirtyFields=Ee(I,y)),k.state.next({name:e,isDirty:V(e,t),dirtyFields:p.dirtyFields,errors:p.errors,isValid:p.isValid})}else x(y,e,t)},_getFieldArray:t=>l(d(B.mount?y:I,t,e.shouldUnregister?d(I,t,[]):[])),_reset:ue,_updateFormState:e=>{p={...p,...e}},_subjects:k,_proxyFormState:Q,get _fields(){return f},get _formValues(){return y},get _stateFlags(){return B},set _stateFlags(e){B=e},get _defaultValues(){return I},get _names(){return C},set _names(e){C=e},get _formState(){return p},set _formState(e){p=e},get _options(){return n},set _options(e){n={...n,...e}}},trigger:ie,register:ae,handleSubmit:(e,t)=>async i=>{i&&(i.preventDefault&&i.preventDefault(),i.persist&&i.persist());let r=T(y);if(k.state.next({isSubmitting:!0}),n.resolver){const{errors:e,values:t}=await L();p.errors=e,r=t}else await z(f);E(p.errors)?(k.state.next({errors:{}}),await e(r,i)):(t&&await t({...p.errors},i),ce()),k.state.next({isSubmitted:!0,isSubmitting:!1,isSubmitSuccessful:E(p.errors),submitCount:p.submitCount+1,errors:p.errors})},watch:(e,t)=>q(e)?k.watch.subscribe({next:n=>e(X(void 0,t),n)}):X(e,t,!0),setValue:te,getValues:re,reset:le,resetField:(e,t={})=>{d(f,e)&&(g(t.defaultValue)?te(e,d(I,e)):(te(e,t.defaultValue),x(I,e,t.defaultValue)),t.keepTouched||de(p.touchedFields,e),t.keepDirty||(de(p.dirtyFields,e),p.isDirty=t.defaultValue?V(e,d(I,e)):V()),t.keepError||(de(p.errors,e),Q.isValid&&O()),k.state.next({...p}))},clearErrors:e=>{e?b(e).forEach((e=>de(p.errors,e))):p.errors={},k.state.next({errors:p.errors})},unregister:se,setError:(e,t,n)=>{const i=(d(f,e,{_f:{}})._f||{}).ref;x(p.errors,e,{...t,ref:i}),k.state.next({name:e,errors:p.errors,isValid:!1}),n&&n.shouldFocus&&i&&i.focus&&i.focus()},setFocus:(e,t={})=>{const n=d(f,e),i=n&&n._f;if(i){const e=i.refs?i.refs[0]:i.ref;e.focus&&(e.focus(),t.shouldSelect&&e.select())}},getFieldState:Ae}}t.Controller=e=>e.render(O(e)),t.FormProvider=e=>{const{children:t,...n}=e;return i.default.createElement(B.Provider,{value:n},t)},t.appendErrors=F,t.get=d,t.set=x,t.useController=O,t.useFieldArray=function(e){const t=C(),{control:n=t.control,name:r,keyName:o="id",shouldUnregister:A}=e,[s,a]=i.default.useState(n._getFieldArray(r)),c=i.default.useRef(n._getFieldArray(r).map(_)),u=i.default.useRef(s),l=i.default.useRef(r),g=i.default.useRef(!1);l.current=r,u.current=s,n._names.array.add(r),e.rules&&n.register(r,e.rules),v({next:({values:e,name:t})=>{if(t===l.current||!t){const t=d(e,l.current);Array.isArray(t)&&(a(t),c.current=t.map(_))}},subject:n._subjects.array});const h=i.default.useCallback((e=>{g.current=!0,n._updateFieldArray(r,e)}),[n,r]);return i.default.useEffect((()=>{if(n._stateFlags.action=!1,Y(r,n._names)&&n._subjects.state.next({}),g.current&&(!K(n._options.mode).isOnSubmit||n._formState.isSubmitted))if(n._options.resolver)n._executeSchema([r]).then((e=>{const t=d(e.errors,r),i=d(n._formState.errors,r);(i?!t&&i.type:t&&t.type)&&(t?x(n._formState.errors,r,t):de(n._formState.errors,r),n._subjects.state.next({errors:n._formState.errors}))}));else{const e=d(n._fields,r);e&&e._f&&oe(e,n._formValues,n._options.criteriaMode===m,n._options.shouldUseNativeValidation,!0).then((e=>!E(e)&&n._subjects.state.next({errors:j(n._formState.errors,e,r)})))}n._subjects.watch.next({name:r,values:n._formValues}),n._names.focus&&U(n._fields,(e=>!!e&&e.startsWith(n._names.focus||""))),n._names.focus="",n._updateValid()}),[s,r,n]),i.default.useEffect((()=>(!d(n._formValues,r)&&n._updateFieldArray(r),()=>{(n._options.shouldUnregister||A)&&n.unregister(r)})),[r,n,o,A]),{swap:i.default.useCallback(((e,t)=>{const i=n._getFieldArray(r);ge(i,e,t),ge(c.current,e,t),h(i),a(i),n._updateFieldArray(r,i,ge,{argA:e,argB:t},!1)}),[h,r,n]),move:i.default.useCallback(((e,t)=>{const i=n._getFieldArray(r);ce(i,e,t),ce(c.current,e,t),h(i),a(i),n._updateFieldArray(r,i,ce,{argA:e,argB:t},!1)}),[h,r,n]),prepend:i.default.useCallback(((e,t)=>{const i=b(T(e)),o=ue(n._getFieldArray(r),i);n._names.focus=L(r,0,t),c.current=ue(c.current,i.map(_)),h(o),a(o),n._updateFieldArray(r,o,ue,{argA:se(e)})}),[h,r,n]),append:i.default.useCallback(((e,t)=>{const i=b(T(e)),o=Ae(n._getFieldArray(r),i);n._names.focus=L(r,o.length-1,t),c.current=Ae(c.current,i.map(_)),h(o),a(o),n._updateFieldArray(r,o,Ae,{argA:se(e)})}),[h,r,n]),remove:i.default.useCallback((e=>{const t=le(n._getFieldArray(r),e);c.current=le(c.current,e),h(t),a(t),n._updateFieldArray(r,t,le,{argA:e})}),[h,r,n]),insert:i.default.useCallback(((e,t,i)=>{const o=b(T(t)),A=ae(n._getFieldArray(r),e,o);n._names.focus=L(r,e,i),c.current=ae(c.current,e,o.map(_)),h(A),a(A),n._updateFieldArray(r,A,ae,{argA:e,argB:se(t)})}),[h,r,n]),update:i.default.useCallback(((e,t)=>{const i=T(t),o=he(n._getFieldArray(r),e,i);c.current=[...o].map(((t,n)=>t&&n!==e?c.current[n]:_())),h(o),a([...o]),n._updateFieldArray(r,o,he,{argA:e,argB:i},!0,!1)}),[h,r,n]),replace:i.default.useCallback((e=>{const t=b(T(e));c.current=t.map(_),h([...t]),a([...t]),n._updateFieldArray(r,[...t],(e=>e),{},!0,!1)}),[h,r,n]),fields:i.default.useMemo((()=>s.map(((e,t)=>({...e,[o]:c.current[t]||_()})))),[s,o])}},t.useForm=function(e={}){const t=i.default.useRef(),[n,r]=i.default.useState({isDirty:!1,isValidating:!1,isLoading:!0,isSubmitted:!1,isSubmitting:!1,isSubmitSuccessful:!1,isValid:!1,submitCount:0,dirtyFields:{},touchedFields:{},errors:{},defaultValues:q(e.defaultValues)?void 0:e.defaultValues});t.current||(t.current={...Me(e,(()=>r((e=>({...e}))))),formState:n});const o=t.current.control;return o._options=e,v({subject:o._subjects.state,next:e=>{Q(e,o._proxyFormState,o._updateFormState,!0)&&r({...o._formState})}}),i.default.useEffect((()=>{o._stateFlags.mount||(o._updateValid(),o._stateFlags.mount=!0),o._stateFlags.watch&&(o._stateFlags.watch=!1,o._subjects.state.next({})),o._removeUnmounted()})),i.default.useEffect((()=>{e.values&&!me(e.values,o._defaultValues)&&o._reset(e.values,o._options.resetOptions)}),[e.values,o]),i.default.useEffect((()=>{n.submitCount&&o._focusError()}),[o,n.submitCount]),t.current.formState=w(n,o),t.current},t.useFormContext=C,t.useFormState=S,t.useWatch=P},97528:(e,t,n)=>{"use strict";n.r(t),n.d(t,{NumberFormatBase:()=>b,NumericFormat:()=>N,PatternFormat:()=>R,getNumericCaretBoundary:()=>M,getPatternCaretBoundary:()=>O,numericFormatter:()=>k,patternFormatter:()=>T,removeNumericFormat:()=>S,removePatternFormat:()=>P,useNumericFormat:()=>D,usePatternFormat:()=>F});var i,r=n(50959);function o(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r=s?r+=d("0",A-s):r=(r.substring(0,A)||"0")+"."+r.substring(A),n+r}function p(e,t,n){if(-1!==["","-"].indexOf(e))return e;var i=(-1!==e.indexOf(".")||n)&&t,r=l(e),o=r.beforeDecimal,A=r.afterDecimal,s=r.hasNegation,a=parseFloat("0."+(A||"0")),c=(A.length<=t?"0."+A:a.toFixed(t)).split(".");return(s?"-":"")+o.split("").reverse().reduce((function(e,t,n){return e.length>n?(Number(e[0])+Number(t)).toString()+e.substring(1,e.length):t+e}),c[0])+(i?".":"")+g(c[1]||"",t,n)}function f(e,t){if(e.value=e.value,null!==e){if(e.createTextRange){var n=e.createTextRange();return n.move("character",t),n.select(),!0}return e.selectionStart||0===e.selectionStart?(e.focus(),e.setSelectionRange(t,t),!0):(e.focus(),!1)}}function m(e){return Math.max(e.selectionStart,e.selectionEnd)}function I(e){return{from:{start:0,end:0},to:{start:0,end:e.length},lastValue:""}}function y(e,t){return void 0===e&&(e=" "),"string"==typeof e?e:e[t]||" "}function B(e,t,n,i){var r,o,A=e.length;if(r=t,0,o=A,t=Math.min(Math.max(r,0),o),"left"===i){for(;t>=0&&!n[t];)t--;-1===t&&(t=n.indexOf(!0))}else{for(;t<=A&&!n[t];)t++;t>A&&(t=n.lastIndexOf(!0))}return-1===t&&(t=A),t}function C(e){for(var t=Array.from({length:e.length+1}).map((function(){return!0})),n=0,i=t.length;n0&&-1===l[p];)p--;var m=-1===p||-1===l[p]?0:l[p]+1;return m>f?f:i-mn&&r-i>n;)i++;return{from:{start:n,end:r-i},to:{start:n,end:o-i}}}(F,e),r=Object.assign(Object.assign({},i),{lastValue:F}),o=g(e,r),A=j(o);if(o=g(A,void 0),I&&!I(W(A,o))){var s=t.target,a=m(s),c=Z(e,F,a);return J(s,c,F),!1}return z({formattedValue:A,numAsString:o,inputValue:e,event:t,source:n,setCaretPosition:!0,input:t.target}),!0})(e.target.value,e,i.event)&&y(e)},onKeyDown:function(e){var t,n=e.target,i=e.key,r=n.selectionStart,o=n.selectionEnd,A=n.value;if(void 0===A&&(A=""),"ArrowLeft"===i||"Backspace"===i?t=Math.max(r-1,0):"ArrowRight"===i?t=Math.min(r+1,A.length):"Delete"===i&&(t=r),void 0!==t&&r===o){var s=t;"ArrowLeft"===i||"ArrowRight"===i?s=q(A,t,"ArrowLeft"===i?"left":"right"):"Delete"!==i||N(A[t])?"Backspace"!==i||N(A[t])||(s=q(A,t,"left")):s=q(A,t,"right"),s!==t&&J(n,s,A),e.isUnitTestRun&&J(n,s,A),b(e)}else b(e)},onMouseUp:function(e){var t=e.target,n=t.selectionStart,i=t.selectionEnd,r=t.value;if(void 0===r&&(r=""),n===i){var o=q(r,n);o!==n&&J(t,o,r)}k(e)},onFocus:function(e){e.persist&&e.persist();var t=e.target;K.current=t,Y.current.focusTimeout=setTimeout((function(){var n=t.selectionStart,i=t.selectionEnd,r=t.value;void 0===r&&(r="");var o=q(r,n);o===n||0===n&&i===r.length||J(t,o,r),v(e)}),0)},onBlur:function(e){K.current=null,clearTimeout(Y.current.focusTimeout),clearTimeout(Y.current.setCaretTimeout),S(e)}});if("text"===n)return c?r.createElement(r.Fragment,null,c(F,T)||null):r.createElement("span",Object.assign({},T,{ref:u}),F);if(a){var X=a;return r.createElement(X,Object.assign({},V,{ref:u}))}return r.createElement("input",Object.assign({},V,{ref:u}))}function k(e,t){var n=t.decimalScale,i=t.fixedDecimalScale,r=t.prefix;void 0===r&&(r="");var o=t.suffix;void 0===o&&(o="");var A=t.allowNegative;void 0===A&&(A=!0);var s=t.thousandsGroupStyle;if(void 0===s&&(s="thousand"),""===e||"-"===e)return e;var a=v(t),c=a.thousandSeparator,u=a.decimalSeparator,d=0!==n&&-1!==e.indexOf(".")||n&&i,h=l(e,A),p=h.beforeDecimal,f=h.afterDecimal,m=h.addNegation;return void 0!==n&&(f=g(f,n,!!i)),c&&(p=function(e,t,n){var i=function(e){switch(e){case"lakh":return/(\d+?)(?=(\d\d)+(\d)(?!\d))(\.\d+)?/g;case"wan":return/(\d)(?=(\d{4})+(?!\d))/g;default:return/(\d)(?=(\d{3})+(?!\d))/g}}(n),r=e.search(/[1-9]/);return r=-1===r?e.length:r,e.substring(0,r)+e.substring(r,e.length).replace(i,"$1"+t)}(p,c,s)),r&&(p=r+p),o&&(f+=o),m&&(p="-"+p),p+(d&&u||"")+f}function v(e){var t=e.decimalSeparator;void 0===t&&(t=".");var n=e.thousandSeparator,i=e.allowedDecimalSeparators;return!0===n&&(n=","),i||(i=[t,"."]),{decimalSeparator:t,thousandSeparator:n,allowedDecimalSeparators:i}}function S(e,t,n){void 0===t&&(t=I(e));var i=n.allowNegative;void 0===i&&(i=!0);var r=n.prefix;void 0===r&&(r="");var o=n.suffix;void 0===o&&(o="");var A=n.decimalScale,s=t.from,a=t.to,c=a.start,g=a.end,d=v(n),h=d.allowedDecimalSeparators,p=d.decimalSeparator,f=e[g]===p;if(g-c==1&&-1!==h.indexOf(e[c])){var m=0===A?"":p;e=e.substring(0,c)+m+e.substring(c+1,e.length)}var y=!1;r.startsWith("-")?y=e.startsWith("--"):o.startsWith("-")&&e.length===o.length?y=!1:"-"===e[0]&&(y=!0),y&&(e=e.substring(1),c-=1,g-=1);var B=0;e.startsWith(r)?B+=r.length:ce.length-o.length&&(C=g),e=e.substring(0,C),e=function(e,t){void 0===e&&(e="");var n=new RegExp("(-)"),i=new RegExp("(-)(.)*(-)"),r=n.test(e),o=i.test(e);return e=e.replace(/-/g,""),r&&!o&&t&&(e="-"+e),e}(y?"-"+e:e,i),e=(e.match(function(e,t){return new RegExp("(^-)|[0-9]|"+u(e),"g")}(p))||[]).join("");var E=e.indexOf(p),Q=l(e=e.replace(new RegExp(u(p),"g"),(function(e,t){return t===E?".":""})),i),b=Q.beforeDecimal,k=Q.afterDecimal,S=Q.addNegation;return a.end-a.start0&&t[u-1]!==r;)u--;l="left"}else{for(var g=t.length;u{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(80677).__importDefault(n(9555));t.default=function(e){return e.prototype?e:i.default(e)}},63871:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.divWrapper=void 0;var i=n(80677),r=i.__importStar(n(50959)),o=i.__importDefault(n(31535)),A=r.createElement,s=function(e,t,n,r){var o;return A(e,t?i.__assign(((o={})[t]=r,o),n):i.__assign(i.__assign({},r),n))};t.divWrapper=function(e,t,n,i){return A("div",null,s(e,t,n,i))},t.default=function(e,t,n){void 0===n&&(n=s);var i=function(r,s,a){void 0===s&&(s=t),void 0===a&&(a=null);var c="string"==typeof r;if(c)return function(e){return i(e,r||t,s)};var u=function(t){return A(e,a,(function(e){return n(r,s,t,e)}))};return c?o.default(u):u};return i}},29713:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(80677).__importDefault(n(78392)),r=function(e){return[e]};t.default=function(e,t){return void 0===t&&(t=r),function(n){return i.default(n,e.apply(void 0,t(n)))}}},34979:(e,t,n)=>{"use strict";var i=n(80677);i.__importDefault(n(78392)).default,i.__importDefault(n(63871)).default,i.__importDefault(n(29713)).default},78392:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(80677),r=n(50959),o=parseInt(r.version.substr(0,r.version.indexOf(".")))>15,A=function(e){return"function"==typeof e};t.default=function(e,t){for(var n=[],s=2;s{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(80677),r=i.__importStar(n(50959));t.default=function(e){var t=function(t){function n(){return null!==t&&t.apply(this,arguments)||this}return i.__extends(n,t),n.prototype.render=function(){return e(this.props,this.context)},n}(r.Component);return t}},81185:(e,t,n)=>{"use strict";n.r(t),n.d(t,{createBreakpoint:()=>Oe,createGlobalState:()=>En,createMemo:()=>o,createReducer:()=>u,createReducerContext:()=>A,createStateContext:()=>l,ensuredForwardRef:()=>le,useAsync:()=>p,useAsyncFn:()=>h,useAsyncRetry:()=>f,useAudio:()=>B,useBattery:()=>M,useBeforeUnload:()=>D,useBoolean:()=>P,useClickAway:()=>F,useCookie:()=>x,useCopyToClipboard:()=>L,useCounter:()=>q,useCss:()=>te,useCustomCompareEffect:()=>ne,useDebounce:()=>re,useDeepCompareEffect:()=>oe,useDefault:()=>Ae,useDrop:()=>se,useDropArea:()=>ae,useEffectOnce:()=>ce,useEnsuredForwardedRef:()=>ue,useError:()=>fe,useEvent:()=>pe,useFavicon:()=>me,useFirstMountState:()=>s,useFullscreen:()=>Be,useGeolocation:()=>Ce,useGetSet:()=>W,useGetSetState:()=>we,useHarmonicIntervalFn:()=>be,useHash:()=>Qn,useHover:()=>ve,useHoverDirty:()=>Se,useIdle:()=>De,useIntersection:()=>Ne,useInterval:()=>Te,useIsomorphicLayoutEffect:()=>X,useKey:()=>Pe,useKeyPress:()=>Fe,useKeyPressEvent:()=>Re,useLatest:()=>Ge,useLifecycles:()=>xe,useList:()=>Ue,useLocalStorage:()=>_e,useLocation:()=>je,useLockBodyScroll:()=>Ve,useLogger:()=>$e,useLongPress:()=>tt,useMap:()=>nt,useMeasure:()=>In,useMedia:()=>it,useMediaDevices:()=>rt,useMediatedState:()=>ot,useMethods:()=>At,useMotion:()=>at,useMount:()=>ct,useMountedState:()=>d,useMouse:()=>gt,useMouseHovered:()=>ht,useMouseWheel:()=>pt,useMultiStateValidator:()=>hn,useNetworkState:()=>yt,useNumber:()=>Bt,useObservable:()=>Ct,useOrientation:()=>Et,usePageLeave:()=>Qt,usePermission:()=>bt,usePinchZoom:()=>Bn,usePrevious:()=>kt,usePreviousDistinct:()=>St,usePromise:()=>Mt,useQueue:()=>Dt,useRaf:()=>Nt,useRafLoop:()=>Tt,useRafState:()=>lt,useRendersCount:()=>Cn,useScratch:()=>Ft,useScroll:()=>Rt,useScrollbarWidth:()=>dn,useScrolling:()=>Gt,useSearchParam:()=>Ot,useSessionStorage:()=>xt,useSet:()=>wn,useSetState:()=>m,useShallowCompareEffect:()=>Lt,useSize:()=>Wt,useSlider:()=>Jt,useSpeech:()=>Zt,useStartTyping:()=>zt,useStateList:()=>Vt,useStateValidator:()=>ln,useStateWithHistory:()=>Ht,useThrottle:()=>Xt,useThrottleFn:()=>$t,useTimeout:()=>en,useTimeoutFn:()=>ie,useTitle:()=>nn,useToggle:()=>T,useTween:()=>on,useUnmount:()=>ut,useUnmountPromise:()=>sn,useUpdate:()=>Y,useUpdateEffect:()=>a,useUpsert:()=>an,useVibrate:()=>cn,useVideo:()=>un,useWindowScroll:()=>pn,useWindowSize:()=>fn});var i=n(50959),r=n.t(i,2);const o=function(e){return function(){for(var t=[],n=0;ne?d():!0!==t&&(r=setTimeout(i?h:d,void 0===i?e-g:e)))}return"boolean"!=typeof t&&(i=n,n=t,t=void 0),a.cancel=function(){s(),o=!0},a}(50,(function(){r&&s(!1),clearTimeout(t),t=setTimeout((function(){return s(!0)}),e)})),c=function(){document.hidden||a()},u=0;u=t[1]?1:-1}))}),[e]),A=o.reduce((function(e,t){var i=t[0],r=t[1];return n>=r?i:e}),o[0][0]);return A}},Fe=function(e){var t=(0,i.useState)([!1,null]),n=t[0],r=t[1];return Pe(e,(function(e){return r([!0,e])}),{event:"keydown"},[n]),Pe(e,(function(e){return r([!1,e])}),{event:"keyup"},[n]),n},Re=function(e,t,n,i){void 0===i&&(i=Fe);var r=i(e),o=r[0],A=r[1];a((function(){!o&&n?n(A):o&&t&&t(A)}),[o])},Ge=function(e){var t=(0,i.useRef)(e);return t.current=e,t},xe=function(e,t){(0,i.useEffect)((function(){return e&&e(),function(){t&&t()}}),[])},Ue=function(e){void 0===e&&(e=[]);var t=(0,i.useRef)(j(e)),n=Y(),r=(0,i.useMemo)((function(){var i={set:function(e){t.current=j(e,t.current),n()},push:function(){for(var e=[],t=0;ti.length?i[e]=t:i.splice(e,0,t),i}))},update:function(e,t){r.set((function(n){return n.map((function(n){return e(n,t)?t:n}))}))},updateFirst:function(e,n){var i=t.current.findIndex((function(t){return e(t,n)}));i>=0&&r.updateAt(i,n)},upsert:function(e,n){var i=t.current.findIndex((function(t){return e(t,n)}));i>=0?r.updateAt(i,n):r.push(n)},sort:function(e){r.set((function(t){return t.slice().sort(e)}))},filter:function(e,t){r.set((function(n){return n.slice().filter(e,t)}))},removeAt:function(e){r.set((function(t){var n=t.slice();return n.splice(e,1),n}))},clear:function(){r.set([])},reset:function(){r.set(j(e).slice())}};return i.remove=i.removeAt,i}),[]);return[t.current,r]},_e=function(e,t,n){if(!Q)return[t,C,C];if(!e)throw new Error("useLocalStorage key may not be falsy");var r=n?n.raw?function(e){return e}:n.deserializer:JSON.parse,o=(0,i.useRef)((function(e){try{var i=n?n.raw?String:n.serializer:JSON.stringify,o=localStorage.getItem(e);return null!==o?r(o):(t&&localStorage.setItem(e,i(t)),t)}catch(e){return t}})),A=(0,i.useState)((function(){return o.current(e)})),s=A[0],a=A[1];(0,i.useLayoutEffect)((function(){return a(o.current(e))}),[e]);var c=(0,i.useCallback)((function(t){try{var i="function"==typeof t?t(s):t;if(void 0===i)return;var o;o=n?n.raw?"string"==typeof i?i:JSON.stringify(i):n.serializer?n.serializer(i):JSON.stringify(i):JSON.stringify(i),localStorage.setItem(e,o),a(r(o))}catch(e){}}),[e,a]),u=(0,i.useCallback)((function(){try{localStorage.removeItem(e),a(void 0)}catch(e){}}),[e,a]);return[s,c,u]};var Le=function(e){var t=window.history,n=t[e];t[e]=function(t){var i=n.apply(this,arguments),r=new Event(e.toLowerCase());return r.state=t,window.dispatchEvent(r),i}};Q&&(Le("pushState"),Le("replaceState"));var Ke=function(e){var t=window.history,n=t.state,i=t.length,r=window.location;return{trigger:e,state:n,length:i,hash:r.hash,host:r.host,hostname:r.hostname,href:r.href,origin:r.origin,pathname:r.pathname,port:r.port,protocol:r.protocol,search:r.search}},Ye="function"==typeof Event;const je=Q&&Ye?function(){var e=(0,i.useState)(Ke("load")),t=e[0],n=e[1];return(0,i.useEffect)((function(){var e=function(){return n(Ke("popstate"))},t=function(){return n(Ke("pushstate"))},i=function(){return n(Ke("replacestate"))};return w(window,"popstate",e),w(window,"pushstate",t),w(window,"replacestate",i),function(){E(window,"popstate",e),E(window,"pushstate",t),E(window,"replacestate",i)}}),[]),t}:function(){return{trigger:"load",length:1}};function We(e){if(!e)return null;if("BODY"===e.tagName)return e;if("IFRAME"===e.tagName){var t=e.contentDocument;return t?t.body:null}return e.offsetParent?We(e.offsetParent):null}function Je(e){var t=e||window.event;return t.touches.length>1||(t.preventDefault&&t.preventDefault(),!1)}var qe=Q&&window.navigator&&window.navigator.platform&&/iP(ad|hone|od)/.test(window.navigator.platform),Ze=new Map,ze="object"==typeof document?document:void 0,He=!1;const Ve=ze?function(e,t){void 0===e&&(e=!0);var n=(0,i.useRef)(ze.body);t=t||n;var r=function(e){var t=Ze.get(e);t&&(1===t.counter?(Ze.delete(e),qe?(e.ontouchmove=null,He&&(E(document,"touchmove",Je),He=!1)):e.style.overflow=t.initialOverflow):Ze.set(e,{counter:t.counter-1,initialOverflow:t.initialOverflow}))};(0,i.useEffect)((function(){var n=We(t.current);n&&(e?function(e){var t=Ze.get(e);t?Ze.set(e,{counter:t.counter+1,initialOverflow:t.initialOverflow}):(Ze.set(e,{counter:1,initialOverflow:e.style.overflow}),qe?He||(w(document,"touchmove",Je,{passive:!1}),He=!0):e.style.overflow="hidden")}(n):r(n))}),[e,t.current]),(0,i.useEffect)((function(){var e=We(t.current);if(e)return function(){r(e)}}),[])}:function(e,t){void 0===e&&(e=!0)};var Xe=n(49500);const $e=function(e){for(var t=[],n=1;n1?a=1:a<0&&(a=0),s&&(a=1-a),c({value:a}),(t.onScrub||C)(a)}}))};return w(e.current,"mousedown",l),w(e.current,"touchstart",d),function(){E(e.current,"mousedown",l),E(e.current,"touchstart",d)}}}),[e,t.vertical]),a};var qt;!function(e){e[e.init=0]="init",e[e.play=1]="play",e[e.pause=2]="pause",e[e.end=3]="end"}(qt||(qt={}));const Zt=function(e,t){var n=(0,i.useRef)(!1),r=(0,i.useState)((function(){var e=t.voice||{},n=e.lang,i=void 0===n?"default":n,r=e.name,o=void 0===r?"":r;return{isPlaying:!1,status:qt[qt.init],lang:t.lang||"default",voiceInfo:{lang:i,name:o},rate:t.rate||1,pitch:t.pitch||1,volume:t.volume||1}})),o=r[0],A=r[1],s=(0,i.useCallback)((function(){n.current&&A((function(e){return(0,g.__assign)((0,g.__assign)({},e),{isPlaying:!0,status:qt[qt.play]})}))}),[]),a=(0,i.useCallback)((function(){n.current&&A((function(e){return(0,g.__assign)((0,g.__assign)({},e),{isPlaying:!1,status:qt[qt.pause]})}))}),[]),c=(0,i.useCallback)((function(){n.current&&A((function(e){return(0,g.__assign)((0,g.__assign)({},e),{isPlaying:!1,status:qt[qt.end]})}))}),[]);return(0,i.useEffect)((function(){n.current=!0;var i=new SpeechSynthesisUtterance(e);return t.lang&&(i.lang=t.lang),t.voice&&(i.voice=t.voice),i.rate=t.rate||1,i.pitch=t.pitch||1,i.volume=t.volume||1,i.onstart=s,i.onpause=a,i.onresume=s,i.onend=c,window.speechSynthesis.speak(i),function(){n.current=!1}}),[]),o},zt=function(e){X((function(){var t=function(t){var n,i,r,o,A;!function(){var e=document.activeElement,t=document.body;if(!e)return!1;if(e===t)return!1;switch(e.tagName){case"INPUT":case"TEXTAREA":return!0}return e.hasAttribute("contenteditable")}()&&(i=(n=t).keyCode,r=n.metaKey,o=n.ctrlKey,A=n.altKey,!(r||o||A)&&(i>=48&&i<=57||i>=65&&i<=90))&&e(t)};return w(document,"keydown",t),function(){E(document,"keydown",t)}}),[])};function Ht(e,t,n){if(void 0===t&&(t=10),t<1)throw new Error("Capacity has to be greater than 1, got '"+t+"'");var r=s(),o=(0,i.useState)(e),A=o[0],a=o[1],c=(0,i.useRef)(null!=n?n:[]),u=(0,i.useRef)(0);return r&&(c.current.length?(c.current[c.current.length-1]!==e&&c.current.push(e),c.current.length>t&&(c.current=c.current.slice(c.current.length-t))):c.current.push(e),u.current=c.current.length&&c.current.length-1),[A,(0,i.useCallback)((function(e){a((function(n){return(e=j(e,n))!==n&&(u.currentt&&(c.current=c.current.slice(c.current.length-t))),e}))}),[A,t]),(0,i.useMemo)((function(){return{history:c.current,position:u.current,capacity:t,back:function(e){void 0===e&&(e=1),u.current&&a((function(){return u.current-=Math.min(e,u.current),c.current[u.current]}))},forward:function(e){void 0===e&&(e=1),u.current!==c.current.length-1&&a((function(){return u.current=Math.min(u.current+e,c.current.length-1),c.current[u.current]}))},go:function(e){e!==u.current&&a((function(){return u.current=e<0?Math.max(c.current.length+e,0):Math.min(c.current.length-1,e),c.current[u.current]}))}}}),[A])]}function Vt(e){void 0===e&&(e=[]);var t=d(),n=Y(),r=(0,i.useRef)(0);a((function(){e.length<=r.current&&(r.current=e.length-1,n())}),[e.length]);var o=(0,i.useMemo)((function(){return{next:function(){return o.setStateAt(r.current+1)},prev:function(){return o.setStateAt(r.current-1)},setStateAt:function(i){t()&&e.length&&i!==r.current&&(r.current=i>=0?i%e.length:e.length+i%e.length,n())},setState:function(i){if(t()){var o=e.length?e.indexOf(i):-1;if(-1===o)throw new Error("State '"+i+"' is not a valid state (does not exist in state list)");r.current=o,n()}}}}),[e]);return(0,g.__assign)({state:e[r.current],currentIndex:r.current},o)}const Xt=function(e,t){void 0===t&&(t=200);var n=(0,i.useState)(e),r=n[0],o=n[1],A=(0,i.useRef)(),s=(0,i.useRef)(null),a=(0,i.useRef)(0);return(0,i.useEffect)((function(){if(A.current)s.current=e,a.current=!0;else{o(e);var n=function(){a.current?(a.current=!1,o(s.current),A.current=setTimeout(n,t)):A.current=void 0};A.current=setTimeout(n,t)}}),[e]),ut((function(){A.current&&clearTimeout(A.current)})),r},$t=function(e,t,n){void 0===t&&(t=200);var r=(0,i.useState)(null),o=r[0],A=r[1],s=(0,i.useRef)(),a=(0,i.useRef)();return(0,i.useEffect)((function(){if(s.current)a.current=n;else{A(e.apply(void 0,n));var i=function(){a.current?(A(e.apply(void 0,a.current)),a.current=void 0,s.current=setTimeout(i,t)):s.current=void 0};s.current=setTimeout(i,t)}}),n),ut((function(){s.current&&clearTimeout(s.current)})),o};function en(e){return void 0===e&&(e=0),ie(Y(),e)}var tn={restoreOnUnmount:!1};const nn="undefined"!=typeof document?function(e,t){void 0===t&&(t=tn);var n=(0,i.useRef)(document.title);document.title!==e&&(document.title=e),(0,i.useEffect)((function(){return t&&t.restoreOnUnmount?function(){document.title=n.current}:void 0}),[])}:function(e){};var rn=n(36842);const on=function(e,t,n){return void 0===e&&(e="inCirc"),void 0===t&&(t=200),void 0===n&&(n=0),(0,rn.U[e])(Nt(t,n))};var An=n(49500);const sn=function(){var e=(0,i.useRef)(!1);return ce((function(){return function(){e.current=!0}})),(0,i.useMemo)((function(){return function(t,n){return new Promise((function(i,r){t.then((function(t){e.current||i(t)}),(function(t){e.current?n?n(t):An.error("useUnmountPromise",t):r(t)}))}))}}),[])};function an(e,t){void 0===t&&(t=[]);var n=Ue(t),i=n[0],r=n[1];return[i,(0,g.__assign)((0,g.__assign)({},r),{upsert:function(t){r.upsert(e,t)}})]}const cn=b&&"vibrate"in navigator?function(e,t,n){void 0===e&&(e=!0),void 0===t&&(t=[1e3,1e3]),void 0===n&&(n=!0),(0,i.useEffect)((function(){var i;if(e&&(navigator.vibrate(t),n)){var r=t instanceof Array?t.reduce((function(e,t){return e+t})):t;i=setInterval((function(){navigator.vibrate(t)}),r)}return function(){e&&(navigator.vibrate(0),n&&clearInterval(i))}}),[e])}:C,un=y("video");function ln(e,t,n){void 0===n&&(n=[void 0]);var r=(0,i.useRef)(t),o=(0,i.useRef)(e);r.current=t,o.current=e;var A=(0,i.useState)(n),s=A[0],a=A[1],c=(0,i.useCallback)((function(){r.current.length>=2?r.current(o.current,a):a(r.current(o.current))}),[a]);return(0,i.useEffect)((function(){c()}),[e]),[s,c]}var gn=function(e){if("undefined"==typeof document)return 0;if(document.body&&(!document.readyState||"loading"!==document.readyState)){if(!0!==e&&"number"==typeof gn.__cache)return gn.__cache;var t=document.createElement("div"),n=t.style;n.display="block",n.position="absolute",n.width="100px",n.height="100px",n.left="-999px",n.top="-999px",n.overflow="scroll",document.body.insertBefore(t,null);var i=t.clientWidth;if(0!==i)return gn.__cache=100-i,document.body.removeChild(t),gn.__cache;document.body.removeChild(t)}};function dn(){var e=(0,i.useState)(gn()),t=e[0],n=e[1];return(0,i.useEffect)((function(){if(void 0===t){var e=requestAnimationFrame((function(){n(gn())}));return function(){return cancelAnimationFrame(e)}}}),[]),t}function hn(e,t,n){if(void 0===n&&(n=[void 0]),"object"!=typeof e)throw new Error("states expected to be an object or array, got "+typeof e);var r=(0,i.useRef)(t),o=(0,i.useRef)(e);r.current=t,o.current=e;var A=(0,i.useState)(n),s=A[0],a=A[1],c=(0,i.useCallback)((function(){r.current.length>=2?r.current(o.current,a):a(r.current(o.current))}),[a]);return(0,i.useEffect)((function(){c()}),Object.values(e)),[s,c]}const pn=function(){var e=lt((function(){return{x:Q?window.pageXOffset:0,y:Q?window.pageYOffset:0}})),t=e[0],n=e[1];return(0,i.useEffect)((function(){var e=function(){n((function(e){var t=window.pageXOffset,n=window.pageYOffset;return e.x!==t||e.y!==n?{x:t,y:n}:e}))};return e(),w(window,"scroll",e,{capture:!1,passive:!0}),function(){E(window,"scroll",e)}}),[]),t},fn=function(e,t){void 0===e&&(e=1/0),void 0===t&&(t=1/0);var n=lt({width:Q?window.innerWidth:e,height:Q?window.innerHeight:t}),r=n[0],o=n[1];return(0,i.useEffect)((function(){if(Q){var e=function(){o({width:window.innerWidth,height:window.innerHeight})};return w(window,"resize",e),function(){E(window,"resize",e)}}}),[]),r};var mn={x:0,y:0,width:0,height:0,top:0,left:0,bottom:0,right:0};const In=Q&&void 0!==window.ResizeObserver?function(){var e=(0,i.useState)(null),t=e[0],n=e[1],r=(0,i.useState)(mn),o=r[0],A=r[1],s=(0,i.useMemo)((function(){return new window.ResizeObserver((function(e){if(e[0]){var t=e[0].contentRect,n=t.x,i=t.y,r=t.width,o=t.height,s=t.top,a=t.left,c=t.bottom,u=t.right;A({x:n,y:i,width:r,height:o,top:s,left:a,bottom:c,right:u})}}))}),[]);return X((function(){if(t)return s.observe(t),function(){s.disconnect()}}),[t]),[n,o]}:function(){return[C,mn]};var yn;!function(e){e.ZOOMING_IN="ZOOMING_IN",e.ZOOMING_OUT="ZOOMING_OUT"}(yn||(yn={}));const Bn=function(e){var t=(0,i.useMemo)((function(){return{evCache:[],prevDiff:-1}}),[e.current]),n=(0,i.useState)(),r=n[0],o=n[1],A=function(e){for(var n=0;n0&&(i>t.prevDiff&&o([yn.ZOOMING_IN,i]),i{"use strict";n.r(t),n.d(t,{default:()=>f});var i=n(50959),r=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},o=function(){function e(e,t){for(var n=0;n div, .contract-trigger:before { content: " "; display: block; position: absolute; top: 0; left: 0; height: 100%; width: 100%; overflow: hidden; z-index: -1; } .resize-triggers > div { background: #eee; overflow: auto; } .contract-trigger:before { width: 200%; height: 200%; }',o=n.head||n.getElementsByTagName("head")[0],A=n.createElement("style");A.id="detectElementResize",A.type="text/css",null!=e&&A.setAttribute("nonce",e),A.styleSheet?A.styleSheet.cssText=i:A.appendChild(n.createTextNode(i)),o.appendChild(A)}}(u),o.__resizeLast__={},o.__resizeListeners__=[],(o.__resizeTriggers__=u.createElement("div")).className="resize-triggers";var d=u.createElement("div");d.className="expand-trigger",d.appendChild(u.createElement("div"));var h=u.createElement("div");h.className="contract-trigger",o.__resizeTriggers__.appendChild(d),o.__resizeTriggers__.appendChild(h),o.appendChild(o.__resizeTriggers__),A(o),o.addEventListener("scroll",s,!0),i&&(o.__resizeTriggers__.__animationListener__=function(e){e.animationName===n&&A(o)},o.__resizeTriggers__.addEventListener(i,o.__resizeTriggers__.__animationListener__))}o.__resizeListeners__.push(c)}},removeResizeListener:function(e,t){if(l)e.detachEvent("onresize",t);else if(e.__resizeListeners__.splice(e.__resizeListeners__.indexOf(t),1),!e.__resizeListeners__.length){e.removeEventListener("scroll",s,!0),e.__resizeTriggers__.__animationListener__&&(e.__resizeTriggers__.removeEventListener(i,e.__resizeTriggers__.__animationListener__),e.__resizeTriggers__.__animationListener__=null);try{e.__resizeTriggers__=!e.removeChild(e.__resizeTriggers__)}catch(e){}}}}}(e),this._detectElementResize.addResizeListener(this._parentNode,this._onResize),this._onResize())}},{key:"componentWillUnmount",value:function(){this._detectElementResize&&this._parentNode&&this._detectElementResize.removeResizeListener(this._parentNode,this._onResize)}},{key:"render",value:function(){var e=this.props,t=e.children,n=e.className,r=e.disableHeight,o=e.disableWidth,s=e.style,a=this.state,c=a.height,u=a.width,l={overflow:"visible"},g={},d=!1;return r||(0===c&&(d=!0),l.height=0,g.height=c),o||(0===u&&(d=!0),l.width=0,g.width=u),(0,i.createElement)("div",{className:n,ref:this._setRef,style:A({},l,s)},!d&&t(g))}}]),t}(i.PureComponent);p.defaultProps={onResize:function(){},disableHeight:!1,disableWidth:!1,style:{}};const f=p},37012:(e,t,n)=>{"use strict";function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;tG,FixedSizeList:()=>x,VariableSizeGrid:()=>M,VariableSizeList:()=>R,areEqual:()=>K,shouldComponentUpdate:()=>Y});var s=Number.isNaN||function(e){return"number"==typeof e&&e!=e};function a(e,t){if(e.length!==t.length)return!1;for(var n=0;n=0||(r[n]=e[n]);return r}var g="object"==typeof performance&&"function"==typeof performance.now?function(){return performance.now()}:function(){return Date.now()};function d(e){cancelAnimationFrame(e.id)}function h(e,t){var n=g(),i={id:requestAnimationFrame((function r(){g()-n>=t?e.call(null):i.id=requestAnimationFrame(r)}))};return i}var p=-1;function f(e){if(void 0===e&&(e=!1),-1===p||e){var t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",document.body.appendChild(t),p=t.offsetWidth-t.clientWidth,document.body.removeChild(t)}return p}var m=null;function I(e){if(void 0===e&&(e=!1),null===m||e){var t=document.createElement("div"),n=t.style;n.width="50px",n.height="50px",n.overflow="scroll",n.direction="rtl";var i=document.createElement("div"),r=i.style;return r.width="100px",r.height="100px",t.appendChild(i),document.body.appendChild(t),t.scrollLeft>0?m="positive-descending":(t.scrollLeft=1,m=0===t.scrollLeft?"negative":"positive-ascending"),document.body.removeChild(t),m}return m}var y=function(e){var t=e.columnIndex;return e.data,e.rowIndex+":"+t};function B(e){var t,n=e.getColumnOffset,o=e.getColumnStartIndexForOffset,s=e.getColumnStopIndexForStartIndex,a=e.getColumnWidth,l=e.getEstimatedTotalHeight,g=e.getEstimatedTotalWidth,p=e.getOffsetForColumnAndAlignment,m=e.getOffsetForRowAndAlignment,B=e.getRowHeight,w=e.getRowOffset,E=e.getRowStartIndexForOffset,Q=e.getRowStopIndexForStartIndex,b=e.initInstanceProps,k=e.shouldResetStyleCacheOnItemSizeChange,v=e.validateProps;return(t=function(e){function t(t){var i;return(i=e.call(this,t)||this)._instanceProps=b(i.props,r(i)),i._resetIsScrollingTimeoutId=null,i._outerRef=void 0,i.state={instance:r(i),isScrolling:!1,horizontalScrollDirection:"forward",scrollLeft:"number"==typeof i.props.initialScrollLeft?i.props.initialScrollLeft:0,scrollTop:"number"==typeof i.props.initialScrollTop?i.props.initialScrollTop:0,scrollUpdateWasRequested:!1,verticalScrollDirection:"forward"},i._callOnItemsRendered=void 0,i._callOnItemsRendered=c((function(e,t,n,r,o,A,s,a){return i.props.onItemsRendered({overscanColumnStartIndex:e,overscanColumnStopIndex:t,overscanRowStartIndex:n,overscanRowStopIndex:r,visibleColumnStartIndex:o,visibleColumnStopIndex:A,visibleRowStartIndex:s,visibleRowStopIndex:a})})),i._callOnScroll=void 0,i._callOnScroll=c((function(e,t,n,r,o){return i.props.onScroll({horizontalScrollDirection:n,scrollLeft:e,scrollTop:t,verticalScrollDirection:r,scrollUpdateWasRequested:o})})),i._getItemStyle=void 0,i._getItemStyle=function(e,t){var r,o=i.props,A=o.columnWidth,s=o.direction,c=o.rowHeight,u=i._getItemStyleCache(k&&A,k&&s,k&&c),l=e+":"+t;if(u.hasOwnProperty(l))r=u[l];else{var g=n(i.props,t,i._instanceProps),d="rtl"===s;u[l]=r={position:"absolute",left:d?void 0:g,right:d?g:void 0,top:w(i.props,e,i._instanceProps),height:B(i.props,e,i._instanceProps),width:a(i.props,t,i._instanceProps)}}return r},i._getItemStyleCache=void 0,i._getItemStyleCache=c((function(e,t,n){return{}})),i._onScroll=function(e){var t=e.currentTarget,n=t.clientHeight,r=t.clientWidth,o=t.scrollLeft,A=t.scrollTop,s=t.scrollHeight,a=t.scrollWidth;i.setState((function(e){if(e.scrollLeft===o&&e.scrollTop===A)return null;var t=i.props.direction,c=o;if("rtl"===t)switch(I()){case"negative":c=-o;break;case"positive-descending":c=a-r-o}c=Math.max(0,Math.min(c,a-r));var u=Math.max(0,Math.min(A,s-n));return{isScrolling:!0,horizontalScrollDirection:e.scrollLeftc?I:0,C=y>s?I:0;this.scrollTo({scrollLeft:void 0!==i?p(this.props,i,n,d,this._instanceProps,C):d,scrollTop:void 0!==r?m(this.props,r,n,h,this._instanceProps,B):h})},S.componentDidMount=function(){var e=this.props,t=e.initialScrollLeft,n=e.initialScrollTop;if(null!=this._outerRef){var i=this._outerRef;"number"==typeof t&&(i.scrollLeft=t),"number"==typeof n&&(i.scrollTop=n)}this._callPropsCallbacks()},S.componentDidUpdate=function(){var e=this.props.direction,t=this.state,n=t.scrollLeft,i=t.scrollTop;if(t.scrollUpdateWasRequested&&null!=this._outerRef){var r=this._outerRef;if("rtl"===e)switch(I()){case"negative":r.scrollLeft=-n;break;case"positive-ascending":r.scrollLeft=n;break;default:var o=r.clientWidth,A=r.scrollWidth;r.scrollLeft=A-o-n}else r.scrollLeft=Math.max(0,n);r.scrollTop=Math.max(0,i)}this._callPropsCallbacks()},S.componentWillUnmount=function(){null!==this._resetIsScrollingTimeoutId&&d(this._resetIsScrollingTimeoutId)},S.render=function(){var e=this.props,t=e.children,n=e.className,r=e.columnCount,o=e.direction,A=e.height,s=e.innerRef,a=e.innerElementType,c=e.innerTagName,d=e.itemData,h=e.itemKey,p=void 0===h?y:h,f=e.outerElementType,m=e.outerTagName,I=e.rowCount,B=e.style,C=e.useIsScrolling,w=e.width,E=this.state.isScrolling,Q=this._getHorizontalRangeToRender(),b=Q[0],k=Q[1],v=this._getVerticalRangeToRender(),S=v[0],M=v[1],D=[];if(r>0&&I)for(var N=S;N<=M;N++)for(var T=b;T<=k;T++)D.push((0,u.createElement)(t,{columnIndex:T,data:d,isScrolling:C?E:void 0,key:p({columnIndex:T,data:d,rowIndex:N}),rowIndex:N,style:this._getItemStyle(N,T)}));var P=l(this.props,this._instanceProps),O=g(this.props,this._instanceProps);return(0,u.createElement)(f||m||"div",{className:n,onScroll:this._onScroll,ref:this._outerRefSetter,style:i({position:"relative",height:A,width:w,overflow:"auto",WebkitOverflowScrolling:"touch",willChange:"transform",direction:o},B)},(0,u.createElement)(a||c||"div",{children:D,ref:s,style:{height:P,pointerEvents:E?"none":void 0,width:O}}))},S._callPropsCallbacks=function(){var e=this.props,t=e.columnCount,n=e.onItemsRendered,i=e.onScroll,r=e.rowCount;if("function"==typeof n&&t>0&&r>0){var o=this._getHorizontalRangeToRender(),A=o[0],s=o[1],a=o[2],c=o[3],u=this._getVerticalRangeToRender(),l=u[0],g=u[1],d=u[2],h=u[3];this._callOnItemsRendered(A,s,l,g,a,c,d,h)}if("function"==typeof i){var p=this.state,f=p.horizontalScrollDirection,m=p.scrollLeft,I=p.scrollTop,y=p.scrollUpdateWasRequested,B=p.verticalScrollDirection;this._callOnScroll(m,I,f,B,y)}},S._getHorizontalRangeToRender=function(){var e=this.props,t=e.columnCount,n=e.overscanColumnCount,i=e.overscanColumnsCount,r=e.overscanCount,A=e.rowCount,a=this.state,c=a.horizontalScrollDirection,u=a.isScrolling,l=a.scrollLeft,g=n||i||r||1;if(0===t||0===A)return[0,0,0,0];var d=o(this.props,l,this._instanceProps),h=s(this.props,d,l,this._instanceProps),p=u&&"backward"!==c?1:Math.max(1,g),f=u&&"forward"!==c?1:Math.max(1,g);return[Math.max(0,d-p),Math.max(0,Math.min(t-1,h+f)),d,h]},S._getVerticalRangeToRender=function(){var e=this.props,t=e.columnCount,n=e.overscanCount,i=e.overscanRowCount,r=e.overscanRowsCount,o=e.rowCount,A=this.state,s=A.isScrolling,a=A.verticalScrollDirection,c=A.scrollTop,u=i||r||n||1;if(0===t||0===o)return[0,0,0,0];var l=E(this.props,c,this._instanceProps),g=Q(this.props,l,c,this._instanceProps),d=s&&"backward"!==a?1:Math.max(1,u),h=s&&"forward"!==a?1:Math.max(1,u);return[Math.max(0,l-d),Math.max(0,Math.min(o-1,g+h)),l,g]},t}(u.PureComponent)).defaultProps={direction:"ltr",itemData:void 0,useIsScrolling:!1},t}var C=function(e,t){e.children,e.direction,e.height,e.innerTagName,e.outerTagName,e.overscanColumnsCount,e.overscanCount,e.overscanRowsCount,e.width,t.instance},w=function(e,t){var n=e.rowCount,i=t.rowMetadataMap,r=t.estimatedRowHeight,o=t.lastMeasuredRowIndex,A=0;if(o>=n&&(o=n-1),o>=0){var s=i[o];A=s.offset+s.size}return A+(n-o-1)*r},E=function(e,t){var n=e.columnCount,i=t.columnMetadataMap,r=t.estimatedColumnWidth,o=t.lastMeasuredColumnIndex,A=0;if(o>=n&&(o=n-1),o>=0){var s=i[o];A=s.offset+s.size}return A+(n-o-1)*r},Q=function(e,t,n,i){var r,o,A;if("column"===e?(r=i.columnMetadataMap,o=t.columnWidth,A=i.lastMeasuredColumnIndex):(r=i.rowMetadataMap,o=t.rowHeight,A=i.lastMeasuredRowIndex),n>A){var s=0;if(A>=0){var a=r[A];s=a.offset+a.size}for(var c=A+1;c<=n;c++){var u=o(c);r[c]={offset:s,size:u},s+=u}"column"===e?i.lastMeasuredColumnIndex=n:i.lastMeasuredRowIndex=n}return r[n]},b=function(e,t,n,i){var r,o;return"column"===e?(r=n.columnMetadataMap,o=n.lastMeasuredColumnIndex):(r=n.rowMetadataMap,o=n.lastMeasuredRowIndex),(o>0?r[o].offset:0)>=i?k(e,t,n,o,0,i):v(e,t,n,Math.max(0,o),i)},k=function(e,t,n,i,r,o){for(;r<=i;){var A=r+Math.floor((i-r)/2),s=Q(e,t,A,n).offset;if(s===o)return A;so&&(i=A-1)}return r>0?r-1:0},v=function(e,t,n,i,r){for(var o="column"===e?t.columnCount:t.rowCount,A=1;i=l-s&&r<=u+s?"auto":"center"),i){case"start":return u;case"end":return l;case"center":return Math.round(l+(u-l)/2);default:return r>=l&&r<=u?r:l>u||rs.clientWidth?f():0:s.scrollHeight>s.clientHeight?f():0}this.scrollTo(a(this.props,e,t,o,this._instanceProps,A))},B.componentDidMount=function(){var e=this.props,t=e.direction,n=e.initialScrollOffset,i=e.layout;if("number"==typeof n&&null!=this._outerRef){var r=this._outerRef;"horizontal"===t||"horizontal"===i?r.scrollLeft=n:r.scrollTop=n}this._callPropsCallbacks()},B.componentDidUpdate=function(){var e=this.props,t=e.direction,n=e.layout,i=this.state,r=i.scrollOffset;if(i.scrollUpdateWasRequested&&null!=this._outerRef){var o=this._outerRef;if("horizontal"===t||"horizontal"===n)if("rtl"===t)switch(I()){case"negative":o.scrollLeft=-r;break;case"positive-ascending":o.scrollLeft=r;break;default:var A=o.clientWidth,s=o.scrollWidth;o.scrollLeft=s-A-r}else o.scrollLeft=r;else o.scrollTop=r}this._callPropsCallbacks()},B.componentWillUnmount=function(){null!==this._resetIsScrollingTimeoutId&&d(this._resetIsScrollingTimeoutId)},B.render=function(){var e=this.props,t=e.children,n=e.className,r=e.direction,A=e.height,s=e.innerRef,a=e.innerElementType,c=e.innerTagName,l=e.itemCount,g=e.itemData,d=e.itemKey,h=void 0===d?D:d,p=e.layout,f=e.outerElementType,m=e.outerTagName,I=e.style,y=e.useIsScrolling,B=e.width,C=this.state.isScrolling,w="horizontal"===r||"horizontal"===p,E=w?this._onScrollHorizontal:this._onScrollVertical,Q=this._getRangeToRender(),b=Q[0],k=Q[1],v=[];if(l>0)for(var S=b;S<=k;S++)v.push((0,u.createElement)(t,{data:g,key:h(S,g),index:S,isScrolling:y?C:void 0,style:this._getItemStyle(S)}));var M=o(this.props,this._instanceProps);return(0,u.createElement)(f||m||"div",{className:n,onScroll:E,ref:this._outerRefSetter,style:i({position:"relative",height:A,width:B,overflow:"auto",WebkitOverflowScrolling:"touch",willChange:"transform",direction:r},I)},(0,u.createElement)(a||c||"div",{children:v,ref:s,style:{height:w?"100%":M,pointerEvents:C?"none":void 0,width:w?M:"100%"}}))},B._callPropsCallbacks=function(){if("function"==typeof this.props.onItemsRendered&&this.props.itemCount>0){var e=this._getRangeToRender(),t=e[0],n=e[1],i=e[2],r=e[3];this._callOnItemsRendered(t,n,i,r)}if("function"==typeof this.props.onScroll){var o=this.state,A=o.scrollDirection,s=o.scrollOffset,a=o.scrollUpdateWasRequested;this._callOnScroll(A,s,a)}},B._getRangeToRender=function(){var e=this.props,t=e.itemCount,n=e.overscanCount,i=this.state,r=i.isScrolling,o=i.scrollDirection,A=i.scrollOffset;if(0===t)return[0,0,0,0];var s=l(this.props,A,this._instanceProps),a=g(this.props,s,A,this._instanceProps),c=r&&"backward"!==o?1:Math.max(1,n),u=r&&"forward"!==o?1:Math.max(1,n);return[Math.max(0,s-c),Math.max(0,Math.min(t-1,a+u)),s,a]},t}(u.PureComponent),t.defaultProps={direction:"ltr",itemData:void 0,layout:"vertical",overscanCount:2,useIsScrolling:!1},t}var T=function(e,t){e.children,e.direction,e.height,e.layout,e.innerTagName,e.outerTagName,e.width,t.instance},P=function(e,t,n){var i=e.itemSize,r=n.itemMetadataMap,o=n.lastMeasuredIndex;if(t>o){var A=0;if(o>=0){var s=r[o];A=s.offset+s.size}for(var a=o+1;a<=t;a++){var c=i(a);r[a]={offset:A,size:c},A+=c}n.lastMeasuredIndex=t}return r[t]},O=function(e,t,n,i,r){for(;i<=n;){var o=i+Math.floor((n-i)/2),A=P(e,o,t).offset;if(A===r)return o;Ar&&(n=o-1)}return i>0?i-1:0},F=function(e,t){var n=e.itemCount,i=t.itemMetadataMap,r=t.estimatedItemSize,o=t.lastMeasuredIndex,A=0;if(o>=n&&(o=n-1),o>=0){var s=i[o];A=s.offset+s.size}return A+(n-o-1)*r},R=N({getItemOffset:function(e,t,n){return P(e,t,n).offset},getItemSize:function(e,t,n){return n.itemMetadataMap[t].size},getEstimatedTotalSize:F,getOffsetForIndexAndAlignment:function(e,t,n,i,r,o){var A=e.direction,s=e.height,a=e.layout,c=e.width,u="horizontal"===A||"horizontal"===a?c:s,l=P(e,t,r),g=F(e,r),d=Math.max(0,Math.min(g-u,l.offset)),h=Math.max(0,l.offset-u+l.size+o);switch("smart"===n&&(n=i>=h-u&&i<=d+u?"auto":"center"),n){case"start":return d;case"end":return h;case"center":return Math.round(h+(d-h)/2);default:return i>=h&&i<=d?i:i0?i[r].offset:0)>=n?O(e,t,r,0,n):function(e,t,n,i){for(var r=e.itemCount,o=1;n=l-a&&i<=u+a?"auto":"center"),n){case"start":return u;case"end":return l;case"center":var g=Math.round(l+(u-l)/2);return gc+Math.floor(a/2)?c:g;default:return i>=l&&i<=u?i:l>u||i=l-s&&i<=u+s?"auto":"center"),n){case"start":return u;case"end":return l;case"center":var g=Math.round(l+(u-l)/2);return gc+Math.floor(s/2)?c:g;default:return i>=l&&i<=u?i:l>u||i=p-g&&i<=h+g?"auto":"center"),n){case"start":return h;case"end":return p;case"center":var f=Math.round(p+(h-p)/2);return fd+Math.floor(g/2)?d:f;default:return i>=p&&i<=h?i:i{e.exports=n(44250)},44250:(e,t,n)=>{var i=n(54061);t.operation=function(e){var n=t.timeouts(e);return new i(n,{forever:e&&e.forever,unref:e&&e.unref,maxRetryTime:e&&e.maxRetryTime})},t.timeouts=function(e){if(e instanceof Array)return[].concat(e);var t={retries:10,factor:2,minTimeout:1e3,maxTimeout:1/0,randomize:!1};for(var n in e)t[n]=e[n];if(t.minTimeout>t.maxTimeout)throw new Error("minTimeout is greater than maxTimeout");for(var i=[],r=0;r{var i=n(49500);function r(e,t){"boolean"==typeof t&&(t={forever:t}),this._originalTimeouts=JSON.parse(JSON.stringify(e)),this._timeouts=e,this._options=t||{},this._maxRetryTime=t&&t.maxRetryTime||1/0,this._fn=null,this._errors=[],this._attempts=1,this._operationTimeout=null,this._operationTimeoutCb=null,this._timeout=null,this._operationStart=null,this._options.forever&&(this._cachedTimeouts=this._timeouts.slice(0))}e.exports=r,r.prototype.reset=function(){this._attempts=1,this._timeouts=this._originalTimeouts},r.prototype.stop=function(){this._timeout&&clearTimeout(this._timeout),this._timeouts=[],this._cachedTimeouts=null},r.prototype.retry=function(e){if(this._timeout&&clearTimeout(this._timeout),!e)return!1;var t=(new Date).getTime();if(e&&t-this._operationStart>=this._maxRetryTime)return this._errors.unshift(new Error("RetryOperation timeout occurred")),!1;this._errors.push(e);var n=this._timeouts.shift();if(void 0===n){if(!this._cachedTimeouts)return!1;this._errors.splice(this._errors.length-1,this._errors.length),this._timeouts=this._cachedTimeouts.slice(0),n=this._timeouts.shift()}var i=this,r=setTimeout((function(){i._attempts++,i._operationTimeoutCb&&(i._timeout=setTimeout((function(){i._operationTimeoutCb(i._attempts)}),i._operationTimeout),i._options.unref&&i._timeout.unref()),i._fn(i._attempts)}),n);return this._options.unref&&r.unref(),!0},r.prototype.attempt=function(e,t){this._fn=e,t&&(t.timeout&&(this._operationTimeout=t.timeout),t.cb&&(this._operationTimeoutCb=t.cb));var n=this;this._operationTimeoutCb&&(this._timeout=setTimeout((function(){n._operationTimeoutCb()}),n._operationTimeout)),this._operationStart=(new Date).getTime(),this._fn(this._attempts)},r.prototype.try=function(e){i.log("Using RetryOperation.try() is deprecated"),this.attempt(e)},r.prototype.start=function(e){i.log("Using RetryOperation.start() is deprecated"),this.attempt(e)},r.prototype.start=r.prototype.try,r.prototype.errors=function(){return this._errors},r.prototype.attempts=function(){return this._attempts},r.prototype.mainError=function(){if(0===this._errors.length)return null;for(var e={},t=null,n=0,i=0;i=n&&(t=r,n=A)}return t}},27969:(e,t,n)=>{"use strict";var i=n(70489);t.K=void 0;var r=i(n(29197)),o=i(n(81568)),A=i(n(23460)),s=i(n(85402)),a=i(n(93670)),c=i(n(92023));var u=function(e){(0,A.default)(u,e);var t,n,i=(t=u,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,i=(0,a.default)(t);if(n){var r=(0,a.default)(this).constructor;e=Reflect.construct(i,arguments,r)}else e=i.apply(this,arguments);return(0,s.default)(this,e)});function u(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"ws://localhost:8080",t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=t.autoconnect,r=void 0===n||n,A=t.reconnect,s=void 0===A||A,a=t.reconnect_interval,l=void 0===a?1e3:a,g=t.max_reconnects,d=void 0===g?5:g,h=arguments.length>2?arguments[2]:void 0;return(0,o.default)(this,u),i.call(this,c.default,e,{autoconnect:r,reconnect:s,reconnect_interval:l,max_reconnects:d},h)}return(0,r.default)(u)}(i(n(6330)).default);t.K=u},6330:(e,t,n)=>{"use strict";var i=n(55872).Buffer,r=n(70489);Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=r(n(88158)),A=r(n(15305)),s=r(n(24445)),a=r(n(81568)),c=r(n(29197)),u=r(n(23460)),l=r(n(85402)),g=r(n(93670)),d=n(11312);var h=function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r1&&void 0!==arguments[1]?arguments[1]:"ws://localhost:8080",i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},r=arguments.length>3?arguments[3]:void 0;(0,a.default)(this,I);var o=i.autoconnect,A=void 0===o||o,s=i.reconnect,c=void 0===s||s,u=i.reconnect_interval,l=void 0===u?1e3:u,g=i.max_reconnects,d=void 0===g?5:g,p=h(i,["autoconnect","reconnect","reconnect_interval","max_reconnects"]);return(t=m.call(this)).webSocketFactory=e,t.queue={},t.rpc_id=0,t.address=n,t.autoconnect=A,t.ready=!1,t.reconnect=c,t.reconnect_interval=l,t.max_reconnects=d,t.rest_options=p,t.current_reconnects=0,t.generate_request_id=r||function(){return++t.rpc_id},t.autoconnect&&t._connect(t.address,Object.assign({autoconnect:t.autoconnect,reconnect:t.reconnect,reconnect_interval:t.reconnect_interval,max_reconnects:t.max_reconnects},t.rest_options)),t}return(0,c.default)(I,[{key:"connect",value:function(){this.socket||this._connect(this.address,Object.assign({autoconnect:this.autoconnect,reconnect:this.reconnect,reconnect_interval:this.reconnect_interval,max_reconnects:this.max_reconnects},this.rest_options))}},{key:"call",value:function(e,t,n,i){var r=this;return i||"object"!==(0,s.default)(n)||(i=n,n=null),new Promise((function(o,A){if(!r.ready)return A(new Error("socket not ready"));var s=r.generate_request_id(e,t),a={jsonrpc:"2.0",method:e,params:t||null,id:s};r.socket.send(JSON.stringify(a),i,(function(e){if(e)return A(e);r.queue[s]={promise:[o,A]},n&&(r.queue[s].timeout=setTimeout((function(){delete r.queue[s],A(new Error("reply timeout"))}),n))}))}))}},{key:"login",value:(d=(0,A.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.call("rpc.login",t);case 2:if(n=e.sent){e.next=5;break}throw new Error("authentication failed");case 5:return e.abrupt("return",n);case 6:case"end":return e.stop()}}),e,this)}))),function(e){return d.apply(this,arguments)})},{key:"listMethods",value:(r=(0,A.default)(o.default.mark((function e(){return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return e.next=2,this.call("__listMethods");case 2:return e.abrupt("return",e.sent);case 3:case"end":return e.stop()}}),e,this)}))),function(){return r.apply(this,arguments)})},{key:"notify",value:function(e,t){var n=this;return new Promise((function(i,r){if(!n.ready)return r(new Error("socket not ready"));var o={jsonrpc:"2.0",method:e,params:t||null};n.socket.send(JSON.stringify(o),(function(e){if(e)return r(e);i()}))}))}},{key:"subscribe",value:(n=(0,A.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return"string"==typeof t&&(t=[t]),e.next=3,this.call("rpc.on",t);case 3:if(n=e.sent,"string"!=typeof t||"ok"===n[t]){e.next=6;break}throw new Error("Failed subscribing to an event '"+t+"' with: "+n[t]);case 6:return e.abrupt("return",n);case 7:case"end":return e.stop()}}),e,this)}))),function(e){return n.apply(this,arguments)})},{key:"unsubscribe",value:(t=(0,A.default)(o.default.mark((function e(t){var n;return o.default.wrap((function(e){for(;;)switch(e.prev=e.next){case 0:return"string"==typeof t&&(t=[t]),e.next=3,this.call("rpc.off",t);case 3:if(n=e.sent,"string"!=typeof t||"ok"===n[t]){e.next=6;break}throw new Error("Failed unsubscribing from an event with: "+n);case 6:return e.abrupt("return",n);case 7:case"end":return e.stop()}}),e,this)}))),function(e){return t.apply(this,arguments)})},{key:"close",value:function(e,t){this.socket.close(e||1e3,t)}},{key:"_connect",value:function(e,t){var n=this;this.socket=this.webSocketFactory(e,t),this.socket.addEventListener("open",(function(){n.ready=!0,n.emit("open"),n.current_reconnects=0})),this.socket.addEventListener("message",(function(e){var t=e.data;t instanceof ArrayBuffer&&(t=i.from(t).toString());try{t=JSON.parse(t)}catch(e){return}if(t.notification&&n.listeners(t.notification).length){if(!Object.keys(t.params).length)return n.emit(t.notification);var r=[t.notification];if(t.params.constructor===Object)r.push(t.params);else for(var o=0;on.current_reconnects||0===n.max_reconnects)&&setTimeout((function(){return n._connect(e,t)}),n.reconnect_interval))}))}}]),I}(d.EventEmitter);t.default=p},92023:(e,t,n)=>{"use strict";var i=n(70489);Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e,t){return new c(e,t)};var r=i(n(81568)),o=i(n(29197)),A=i(n(23460)),s=i(n(85402)),a=i(n(93670));var c=function(e){(0,A.default)(c,e);var t,n,i=(t=c,n=function(){if("undefined"==typeof Reflect||!Reflect.construct)return!1;if(Reflect.construct.sham)return!1;if("function"==typeof Proxy)return!0;try{return Boolean.prototype.valueOf.call(Reflect.construct(Boolean,[],(function(){}))),!0}catch(e){return!1}}(),function(){var e,i=(0,a.default)(t);if(n){var r=(0,a.default)(this).constructor;e=Reflect.construct(i,arguments,r)}else e=i.apply(this,arguments);return(0,s.default)(this,e)});function c(e,t,n){var o;return(0,r.default)(this,c),(o=i.call(this)).socket=new window.WebSocket(e,n),o.socket.onopen=function(){return o.emit("open")},o.socket.onmessage=function(e){return o.emit("message",e.data)},o.socket.onerror=function(e){return o.emit("error",e)},o.socket.onclose=function(e){o.emit("close",e.code,e.reason)},o}return(0,o.default)(c,[{key:"send",value:function(e,t,n){var i=n||t;try{this.socket.send(e),i()}catch(e){i(e)}}},{key:"close",value:function(e,t){this.socket.close(e,t)}},{key:"addEventListener",value:function(e,t,n){this.socket.addEventListener(e,t,n)}}]),c}(n(11312).EventEmitter)},61874:(e,t,n)=>{var i=n(55872),r=i.Buffer;function o(e,t){for(var n in e)t[n]=e[n]}function A(e,t,n){return r(e,t,n)}r.from&&r.alloc&&r.allocUnsafe&&r.allocUnsafeSlow?e.exports=i:(o(i,t),t.Buffer=A),A.prototype=Object.create(r.prototype),o(r,A),A.from=function(e,t,n){if("number"==typeof e)throw new TypeError("Argument must not be a number");return r(e,t,n)},A.alloc=function(e,t,n){if("number"!=typeof e)throw new TypeError("Argument must be a number");var i=r(e);return void 0!==t?"string"==typeof n?i.fill(t,n):i.fill(t):i.fill(0),i},A.allocUnsafe=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return r(e)},A.allocUnsafeSlow=function(e){if("number"!=typeof e)throw new TypeError("Argument must be a number");return i.SlowBuffer(e)}},45869:e=>{!function(){"use strict";var t="undefined"!=typeof window&&void 0!==window.document?window.document:{},n=e.exports,i=function(){for(var e,n=[["requestFullscreen","exitFullscreen","fullscreenElement","fullscreenEnabled","fullscreenchange","fullscreenerror"],["webkitRequestFullscreen","webkitExitFullscreen","webkitFullscreenElement","webkitFullscreenEnabled","webkitfullscreenchange","webkitfullscreenerror"],["webkitRequestFullScreen","webkitCancelFullScreen","webkitCurrentFullScreenElement","webkitCancelFullScreen","webkitfullscreenchange","webkitfullscreenerror"],["mozRequestFullScreen","mozCancelFullScreen","mozFullScreenElement","mozFullScreenEnabled","mozfullscreenchange","mozfullscreenerror"],["msRequestFullscreen","msExitFullscreen","msFullscreenElement","msFullscreenEnabled","MSFullscreenChange","MSFullscreenError"]],i=0,r=n.length,o={};i{"use strict";n.d(t,{f:()=>a});var i=n(80677);function r(e){return e.toLowerCase()}var o=[/([a-z0-9])([A-Z])/g,/([A-Z])([A-Z][a-z])/g],A=/[^A-Z0-9]+/gi;function s(e,t,n){return t instanceof RegExp?e.replace(t,n):t.reduce((function(e,t){return e.replace(t,n)}),e)}function a(e,t){return void 0===t&&(t={}),function(e,t){return void 0===t&&(t={}),function(e,t){void 0===t&&(t={});for(var n=t.splitRegexp,i=void 0===n?o:n,a=t.stripRegexp,c=void 0===a?A:a,u=t.transform,l=void 0===u?r:u,g=t.delimiter,d=void 0===g?" ":g,h=s(s(e,i,"$1\0$2"),c,"\0"),p=0,f=h.length;"\0"===h.charAt(p);)p++;for(;"\0"===h.charAt(f-1);)f--;return h.slice(p,f).split("\0").map(l).join(d)}(e,(0,i.__assign)({delimiter:"."},t))}(e,(0,i.__assign)({delimiter:"_"},t))}},88752:(e,t)=>{"use strict";function n(e,t,n){return t<=e&&e<=n}function i(e){if(void 0===e)return{};if(e===Object(e))return e;throw TypeError("Could not convert argument to dictionary")}function r(e){this.tokens=[].slice.call(e)}r.prototype={endOfStream:function(){return!this.tokens.length},read:function(){return this.tokens.length?this.tokens.shift():-1},prepend:function(e){if(Array.isArray(e))for(var t=e;t.length;)this.tokens.unshift(t.pop());else this.tokens.unshift(e)},push:function(e){if(Array.isArray(e))for(var t=e;t.length;)this.tokens.push(t.shift());else this.tokens.push(e)}};var o=-1;function A(e,t){if(e)throw TypeError("Decoder error");return t||65533}var s="utf-8";function a(e,t){if(!(this instanceof a))return new a(e,t);if((e=void 0!==e?String(e).toLowerCase():s)!==s)throw new Error("Encoding not supported. Only utf-8 is supported");t=i(t),this._streaming=!1,this._BOMseen=!1,this._decoder=null,this._fatal=Boolean(t.fatal),this._ignoreBOM=Boolean(t.ignoreBOM),Object.defineProperty(this,"encoding",{value:"utf-8"}),Object.defineProperty(this,"fatal",{value:this._fatal}),Object.defineProperty(this,"ignoreBOM",{value:this._ignoreBOM})}function c(e,t){if(!(this instanceof c))return new c(e,t);if((e=void 0!==e?String(e).toLowerCase():s)!==s)throw new Error("Encoding not supported. Only utf-8 is supported");t=i(t),this._streaming=!1,this._encoder=null,this._options={fatal:Boolean(t.fatal)},Object.defineProperty(this,"encoding",{value:"utf-8"})}function u(e){var t=e.fatal,i=0,r=0,s=0,a=128,c=191;this.handler=function(e,u){if(-1===u&&0!==s)return s=0,A(t);if(-1===u)return o;if(0===s){if(n(u,0,127))return u;if(n(u,194,223))s=1,i=u-192;else if(n(u,224,239))224===u&&(a=160),237===u&&(c=159),s=2,i=u-224;else{if(!n(u,240,244))return A(t);240===u&&(a=144),244===u&&(c=143),s=3,i=u-240}return i<<=6*s,null}if(!n(u,a,c))return i=s=r=0,a=128,c=191,e.prepend(u),A(t);if(a=128,c=191,i+=u-128<<6*(s-(r+=1)),r!==s)return null;var l=i;return i=s=r=0,l}}function l(e){e.fatal,this.handler=function(e,t){if(-1===t)return o;if(n(t,0,127))return t;var i,r;n(t,128,2047)?(i=1,r=192):n(t,2048,65535)?(i=2,r=224):n(t,65536,1114111)&&(i=3,r=240);for(var A=[(t>>6*i)+r];i>0;){var s=t>>6*(i-1);A.push(128|63&s),i-=1}return A}}a.prototype={decode:function(e,t){var n;n="object"==typeof e&&e instanceof ArrayBuffer?new Uint8Array(e):"object"==typeof e&&"buffer"in e&&e.buffer instanceof ArrayBuffer?new Uint8Array(e.buffer,e.byteOffset,e.byteLength):new Uint8Array(0),t=i(t),this._streaming||(this._decoder=new u({fatal:this._fatal}),this._BOMseen=!1),this._streaming=Boolean(t.stream);for(var A,s=new r(n),a=[];!s.endOfStream()&&(A=this._decoder.handler(s,s.read()))!==o;)null!==A&&(Array.isArray(A)?a.push.apply(a,A):a.push(A));if(!this._streaming){do{if((A=this._decoder.handler(s,s.read()))===o)break;null!==A&&(Array.isArray(A)?a.push.apply(a,A):a.push(A))}while(!s.endOfStream());this._decoder=null}return a.length&&(-1===["utf-8"].indexOf(this.encoding)||this._ignoreBOM||this._BOMseen||(65279===a[0]?(this._BOMseen=!0,a.shift()):this._BOMseen=!0)),function(e){for(var t="",n=0;n>10),56320+(1023&i)))}return t}(a)}},c.prototype={encode:function(e,t){e=e?String(e):"",t=i(t),this._streaming||(this._encoder=new l(this._options)),this._streaming=Boolean(t.stream);for(var n,A=[],s=new r(function(e){for(var t=String(e),n=t.length,i=0,r=[];i57343)r.push(o);else if(56320<=o&&o<=57343)r.push(65533);else if(55296<=o&&o<=56319)if(i===n-1)r.push(65533);else{var A=e.charCodeAt(i+1);if(56320<=A&&A<=57343){var s=1023&o,a=1023&A;r.push(65536+(s<<10)+a),i+=1}else r.push(65533)}i+=1}return r}(e));!s.endOfStream()&&(n=this._encoder.handler(s,s.read()))!==o;)Array.isArray(n)?A.push.apply(A,n):A.push(n);if(!this._streaming){for(;(n=this._encoder.handler(s,s.read()))!==o;)Array.isArray(n)?A.push.apply(A,n):A.push(n);this._encoder=null}return new Uint8Array(A)}},t.TextEncoder=c,t.TextDecoder=a},47874:e=>{"use strict";e.exports=function(e,t){if(!e)throw new Error("Invariant failed")}},30755:e=>{e.exports&&(e.exports=function(e){"use strict";return e.prototype.toFormat=function(e,t,n){if(!this.e&&0!==this.e)return this.toString();var i,r,o,A,s,a,c,u,l,g,d,h,p,f,m,I=this.format||{},y=this.constructor.format||{};if(e!=s?"object"==typeof e?(n=e,e=s):t!=s?"object"==typeof t?(n=t,t=s):"object"!=typeof n&&(n={}):n={}:n={},u=(i=this.toFixed(e,t).split("."))[0],l=i[1],a=(c=this.s<0?u.slice(1):u).length,(g=n.decimalSeparator)==s&&(g=I.decimalSeparator)==s&&(g=y.decimalSeparator)==s&&(g="."),(d=n.groupSeparator)==s&&(d=I.groupSeparator)==s&&(d=y.groupSeparator),d&&((h=n.groupSize)==s&&(h=I.groupSize)==s&&(h=y.groupSize)==s&&(h=0),(p=n.secondaryGroupSize)==s&&(p=I.secondaryGroupSize)==s&&(p=y.secondaryGroupSize)==s&&(p=0),p?(r=+p,a-=o=+h):(r=+h,o=+p),r>0&&a>0)){for(A=a%r||r,u=c.substr(0,A);A0&&(u+=d+c.slice(A)),this.s<0&&(u="-"+u)}return l?((f=n.fractionGroupSeparator)==s&&(f=I.fractionGroupSeparator)==s&&(f=y.fractionGroupSeparator),f&&((m=n.fractionGroupSize)==s&&(m=I.fractionGroupSize)==s&&(m=y.fractionGroupSize)==s&&(m=0),(m=+m)&&(l=l.replace(new RegExp("\\d{"+m+"}\\B","g"),"$&"+f))),u+g+l):u},e.format={decimalSeparator:".",groupSeparator:",",groupSize:3,secondaryGroupSize:0,fractionGroupSeparator:"",fractionGroupSize:0},e})},16935:e=>{e.exports=function(){var e=document.getSelection();if(!e.rangeCount)return function(){};for(var t=document.activeElement,n=[],i=0;i{var i=n(3983),r=n(7311);e.exports={parse:function(e){var t=i.parse(e.toString());return r.compile(t)}}},7311:e=>{"use strict";e.exports={compile:function(e){var t=[],n=[],i="",r=Object.create(null),o=r;return function(e){for(var t,n=0;n-1&&A("Cannot redefine existing key '"+a+"'.",r,o),(c=c[l])instanceof Array&&c.length&&u-1?'"'+e+'"':e}}}},3983:e=>{e.exports=function(){function e(e,t,n,i,r,o){this.message=e,this.expected=t,this.found=n,this.offset=i,this.line=r,this.column=o,this.name="SyntaxError"}return function(e,t){function n(){this.constructor=e}n.prototype=t.prototype,e.prototype=new n}(e,Error),{SyntaxError:e,parse:function(t){var n,i=arguments.length>1?arguments[1]:{},r={},o={start:Ot},A=Ot,s=function(){return Dn},a=r,c="#",u={type:"literal",value:"#",description:'"#"'},l=void 0,g={type:"any",description:"any character"},d="[",h={type:"literal",value:"[",description:'"["'},p="]",f={type:"literal",value:"]",description:'"]"'},m=function(e){Tn(Pn("ObjectPath",e,Mt,Dt))},I=function(e){Tn(Pn("ArrayPath",e,Mt,Dt))},y=function(e,t){return e.concat(t)},B=function(e){return[e]},C=function(e){return e},w=".",E={type:"literal",value:".",description:'"."'},Q="=",b={type:"literal",value:"=",description:'"="'},k=function(e,t){Tn(Pn("Assign",t,Mt,Dt,e))},v=function(e){return e.join("")},S=function(e){return e.value},M='"""',D={type:"literal",value:'"""',description:'"\\"\\"\\""'},N=null,T=function(e){return Pn("String",e.join(""),Mt,Dt)},P='"',O={type:"literal",value:'"',description:'"\\""'},F="'''",R={type:"literal",value:"'''",description:"\"'''\""},G="'",x={type:"literal",value:"'",description:'"\'"'},U=function(e){return e},_=function(e){return e},L="\\",K={type:"literal",value:"\\",description:'"\\\\"'},Y=function(){return""},j="e",W={type:"literal",value:"e",description:'"e"'},J="E",q={type:"literal",value:"E",description:'"E"'},Z=function(e,t){return Pn("Float",parseFloat(e+"e"+t),Mt,Dt)},z=function(e){return Pn("Float",parseFloat(e),Mt,Dt)},H="+",V={type:"literal",value:"+",description:'"+"'},X=function(e){return e.join("")},$="-",ee={type:"literal",value:"-",description:'"-"'},te=function(e){return"-"+e.join("")},ne=function(e){return Pn("Integer",parseInt(e,10),Mt,Dt)},ie="true",re={type:"literal",value:"true",description:'"true"'},oe=function(){return Pn("Boolean",!0,Mt,Dt)},Ae="false",se={type:"literal",value:"false",description:'"false"'},ae=function(){return Pn("Boolean",!1,Mt,Dt)},ce=function(){return Pn("Array",[],Mt,Dt)},ue=function(e){return Pn("Array",e?[e]:[],Mt,Dt)},le=function(e){return Pn("Array",e,Mt,Dt)},ge=function(e,t){return Pn("Array",e.concat(t),Mt,Dt)},de=function(e){return e},he=",",pe={type:"literal",value:",",description:'","'},fe="{",me={type:"literal",value:"{",description:'"{"'},Ie="}",ye={type:"literal",value:"}",description:'"}"'},Be=function(e){return Pn("InlineTable",e,Mt,Dt)},Ce=function(e,t){return Pn("InlineTableValue",t,Mt,Dt,e)},we=function(e){return"."+e},Ee=function(e){return e.join("")},Qe=":",be={type:"literal",value:":",description:'":"'},ke=function(e){return e.join("")},ve="T",Se={type:"literal",value:"T",description:'"T"'},Me="Z",De={type:"literal",value:"Z",description:'"Z"'},Ne=function(e,t){return Pn("Date",new Date(e+"T"+t+"Z"),Mt,Dt)},Te=function(e,t){return Pn("Date",new Date(e+"T"+t),Mt,Dt)},Pe=/^[ \t]/,Oe={type:"class",value:"[ \\t]",description:"[ \\t]"},Fe="\n",Re={type:"literal",value:"\n",description:'"\\n"'},Ge="\r",xe={type:"literal",value:"\r",description:'"\\r"'},Ue=/^[0-9a-f]/i,_e={type:"class",value:"[0-9a-f]i",description:"[0-9a-f]i"},Le=/^[0-9]/,Ke={type:"class",value:"[0-9]",description:"[0-9]"},Ye="_",je={type:"literal",value:"_",description:'"_"'},We=function(){return""},Je=/^[A-Za-z0-9_\-]/,qe={type:"class",value:"[A-Za-z0-9_\\-]",description:"[A-Za-z0-9_\\-]"},Ze=function(e){return e.join("")},ze='\\"',He={type:"literal",value:'\\"',description:'"\\\\\\""'},Ve=function(){return'"'},Xe="\\\\",$e={type:"literal",value:"\\\\",description:'"\\\\\\\\"'},et=function(){return"\\"},tt="\\b",nt={type:"literal",value:"\\b",description:'"\\\\b"'},it=function(){return"\b"},rt="\\t",ot={type:"literal",value:"\\t",description:'"\\\\t"'},At=function(){return"\t"},st="\\n",at={type:"literal",value:"\\n",description:'"\\\\n"'},ct=function(){return"\n"},ut="\\f",lt={type:"literal",value:"\\f",description:'"\\\\f"'},gt=function(){return"\f"},dt="\\r",ht={type:"literal",value:"\\r",description:'"\\\\r"'},pt=function(){return"\r"},ft="\\U",mt={type:"literal",value:"\\U",description:'"\\\\U"'},It=function(e){return On(e.join(""))},yt="\\u",Bt={type:"literal",value:"\\u",description:'"\\\\u"'},Ct=0,wt=0,Et=0,Qt={line:1,column:1,seenCR:!1},bt=0,kt=[],vt=0,St={};if("startRule"in i){if(!(i.startRule in o))throw new Error("Can't start parsing from rule \""+i.startRule+'".');A=o[i.startRule]}function Mt(){return Nt(wt).line}function Dt(){return Nt(wt).column}function Nt(e){return Et!==e&&(Et>e&&(Et=0,Qt={line:1,column:1,seenCR:!1}),function(e,n,i){var r,o;for(r=n;rbt&&(bt=Ct,kt=[]),kt.push(e))}function Pt(n,i,r){var o=Nt(r),A=rt.description?1:0}));t1?i.slice(0,-1).join(", ")+" or "+i[e.length-1]:i[0])+" but "+(t?'"'+function(e){function t(e){return e.charCodeAt(0).toString(16).toUpperCase()}return e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E\x0F]/g,(function(e){return"\\x0"+t(e)})).replace(/[\x10-\x1F\x80-\xFF]/g,(function(e){return"\\x"+t(e)})).replace(/[\u0180-\u0FFF]/g,(function(e){return"\\u0"+t(e)})).replace(/[\u1080-\uFFFF]/g,(function(e){return"\\u"+t(e)}))}(t)+'"':"end of input")+" found."}(i,A),i,A,r,o.line,o.column)}function Ot(){var e,t,n,i=49*Ct+0,o=St[i];if(o)return Ct=o.nextPos,o.result;for(e=Ct,t=[],n=Ft();n!==r;)t.push(n),n=Ft();return t!==r&&(wt=e,t=s()),e=t,St[i]={nextPos:Ct,result:e},e}function Ft(){var e,t,n,i,o,A,s,c=49*Ct+1,u=St[c];if(u)return Ct=u.nextPos,u.result;for(e=Ct,t=[],n=Bn();n!==r;)t.push(n),n=Bn();if(t!==r)if((n=Rt())!==r){for(i=[],o=Bn();o!==r;)i.push(o),o=Bn();if(i!==r){for(o=[],A=Gt();A!==r;)o.push(A),A=Gt();if(o!==r){if(A=[],(s=Cn())!==r)for(;s!==r;)A.push(s),s=Cn();else A=a;A===r&&(A=En()),A!==r?e=t=[t,n,i,o,A]:(Ct=e,e=a)}else Ct=e,e=a}else Ct=e,e=a}else Ct=e,e=a;else Ct=e,e=a;if(e===r){if(e=Ct,t=[],(n=Bn())!==r)for(;n!==r;)t.push(n),n=Bn();else t=a;if(t!==r){if(n=[],(i=Cn())!==r)for(;i!==r;)n.push(i),i=Cn();else n=a;n===r&&(n=En()),n!==r?e=t=[t,n]:(Ct=e,e=a)}else Ct=e,e=a;e===r&&(e=Cn())}return St[c]={nextPos:Ct,result:e},e}function Rt(){var e,t=49*Ct+2,n=St[t];return n?(Ct=n.nextPos,n.result):((e=Gt())===r&&(e=xt())===r&&(e=Ut())===r&&(e=Yt()),St[t]={nextPos:Ct,result:e},e)}function Gt(){var e,n,i,o,A,s,d=49*Ct+3,h=St[d];if(h)return Ct=h.nextPos,h.result;if(e=Ct,35===t.charCodeAt(Ct)?(n=c,Ct++):(n=r,0===vt&&Tt(u)),n!==r){for(i=[],o=Ct,A=Ct,vt++,(s=Cn())===r&&(s=En()),vt--,s===r?A=l:(Ct=A,A=a),A!==r?(t.length>Ct?(s=t.charAt(Ct),Ct++):(s=r,0===vt&&Tt(g)),s!==r?o=A=[A,s]:(Ct=o,o=a)):(Ct=o,o=a);o!==r;)i.push(o),o=Ct,A=Ct,vt++,(s=Cn())===r&&(s=En()),vt--,s===r?A=l:(Ct=A,A=a),A!==r?(t.length>Ct?(s=t.charAt(Ct),Ct++):(s=r,0===vt&&Tt(g)),s!==r?o=A=[A,s]:(Ct=o,o=a)):(Ct=o,o=a);i!==r?e=n=[n,i]:(Ct=e,e=a)}else Ct=e,e=a;return St[d]={nextPos:Ct,result:e},e}function xt(){var e,n,i,o,A,s,c=49*Ct+4,u=St[c];if(u)return Ct=u.nextPos,u.result;if(e=Ct,91===t.charCodeAt(Ct)?(n=d,Ct++):(n=r,0===vt&&Tt(h)),n!==r){for(i=[],o=Bn();o!==r;)i.push(o),o=Bn();if(i!==r)if((o=_t())!==r){for(A=[],s=Bn();s!==r;)A.push(s),s=Bn();A!==r?(93===t.charCodeAt(Ct)?(s=p,Ct++):(s=r,0===vt&&Tt(f)),s!==r?(wt=e,e=n=m(o)):(Ct=e,e=a)):(Ct=e,e=a)}else Ct=e,e=a;else Ct=e,e=a}else Ct=e,e=a;return St[c]={nextPos:Ct,result:e},e}function Ut(){var e,n,i,o,A,s,c,u,l=49*Ct+5,g=St[l];if(g)return Ct=g.nextPos,g.result;if(e=Ct,91===t.charCodeAt(Ct)?(n=d,Ct++):(n=r,0===vt&&Tt(h)),n!==r)if(91===t.charCodeAt(Ct)?(i=d,Ct++):(i=r,0===vt&&Tt(h)),i!==r){for(o=[],A=Bn();A!==r;)o.push(A),A=Bn();if(o!==r)if((A=_t())!==r){for(s=[],c=Bn();c!==r;)s.push(c),c=Bn();s!==r?(93===t.charCodeAt(Ct)?(c=p,Ct++):(c=r,0===vt&&Tt(f)),c!==r?(93===t.charCodeAt(Ct)?(u=p,Ct++):(u=r,0===vt&&Tt(f)),u!==r?(wt=e,e=n=I(A)):(Ct=e,e=a)):(Ct=e,e=a)):(Ct=e,e=a)}else Ct=e,e=a;else Ct=e,e=a}else Ct=e,e=a;else Ct=e,e=a;return St[l]={nextPos:Ct,result:e},e}function _t(){var e,t,n,i=49*Ct+6,o=St[i];if(o)return Ct=o.nextPos,o.result;if(e=Ct,t=[],(n=Kt())!==r)for(;n!==r;)t.push(n),n=Kt();else t=a;return t!==r&&(n=Lt())!==r?(wt=e,e=t=y(t,n)):(Ct=e,e=a),e===r&&(e=Ct,(t=Lt())!==r&&(wt=e,t=B(t)),e=t),St[i]={nextPos:Ct,result:e},e}function Lt(){var e,t,n,i,o,A=49*Ct+7,s=St[A];if(s)return Ct=s.nextPos,s.result;for(e=Ct,t=[],n=Bn();n!==r;)t.push(n),n=Bn();if(t!==r)if((n=jt())!==r){for(i=[],o=Bn();o!==r;)i.push(o),o=Bn();i!==r?(wt=e,e=t=C(n)):(Ct=e,e=a)}else Ct=e,e=a;else Ct=e,e=a;if(e===r){for(e=Ct,t=[],n=Bn();n!==r;)t.push(n),n=Bn();if(t!==r)if((n=Wt())!==r){for(i=[],o=Bn();o!==r;)i.push(o),o=Bn();i!==r?(wt=e,e=t=C(n)):(Ct=e,e=a)}else Ct=e,e=a;else Ct=e,e=a}return St[A]={nextPos:Ct,result:e},e}function Kt(){var e,n,i,o,A,s,c,u=49*Ct+8,l=St[u];if(l)return Ct=l.nextPos,l.result;for(e=Ct,n=[],i=Bn();i!==r;)n.push(i),i=Bn();if(n!==r)if((i=jt())!==r){for(o=[],A=Bn();A!==r;)o.push(A),A=Bn();if(o!==r)if(46===t.charCodeAt(Ct)?(A=w,Ct++):(A=r,0===vt&&Tt(E)),A!==r){for(s=[],c=Bn();c!==r;)s.push(c),c=Bn();s!==r?(wt=e,e=n=C(i)):(Ct=e,e=a)}else Ct=e,e=a;else Ct=e,e=a}else Ct=e,e=a;else Ct=e,e=a;if(e===r){for(e=Ct,n=[],i=Bn();i!==r;)n.push(i),i=Bn();if(n!==r)if((i=Wt())!==r){for(o=[],A=Bn();A!==r;)o.push(A),A=Bn();if(o!==r)if(46===t.charCodeAt(Ct)?(A=w,Ct++):(A=r,0===vt&&Tt(E)),A!==r){for(s=[],c=Bn();c!==r;)s.push(c),c=Bn();s!==r?(wt=e,e=n=C(i)):(Ct=e,e=a)}else Ct=e,e=a;else Ct=e,e=a}else Ct=e,e=a;else Ct=e,e=a}return St[u]={nextPos:Ct,result:e},e}function Yt(){var e,n,i,o,A,s,c=49*Ct+9,u=St[c];if(u)return Ct=u.nextPos,u.result;if(e=Ct,(n=jt())!==r){for(i=[],o=Bn();o!==r;)i.push(o),o=Bn();if(i!==r)if(61===t.charCodeAt(Ct)?(o=Q,Ct++):(o=r,0===vt&&Tt(b)),o!==r){for(A=[],s=Bn();s!==r;)A.push(s),s=Bn();A!==r&&(s=Jt())!==r?(wt=e,e=n=k(n,s)):(Ct=e,e=a)}else Ct=e,e=a;else Ct=e,e=a}else Ct=e,e=a;if(e===r)if(e=Ct,(n=Wt())!==r){for(i=[],o=Bn();o!==r;)i.push(o),o=Bn();if(i!==r)if(61===t.charCodeAt(Ct)?(o=Q,Ct++):(o=r,0===vt&&Tt(b)),o!==r){for(A=[],s=Bn();s!==r;)A.push(s),s=Bn();A!==r&&(s=Jt())!==r?(wt=e,e=n=k(n,s)):(Ct=e,e=a)}else Ct=e,e=a;else Ct=e,e=a}else Ct=e,e=a;return St[c]={nextPos:Ct,result:e},e}function jt(){var e,t,n,i=49*Ct+10,o=St[i];if(o)return Ct=o.nextPos,o.result;if(e=Ct,t=[],(n=kn())!==r)for(;n!==r;)t.push(n),n=kn();else t=a;return t!==r&&(wt=e,t=v(t)),e=t,St[i]={nextPos:Ct,result:e},e}function Wt(){var e,t,n=49*Ct+11,i=St[n];return i?(Ct=i.nextPos,i.result):(e=Ct,(t=zt())!==r&&(wt=e,t=S(t)),(e=t)===r&&(e=Ct,(t=Vt())!==r&&(wt=e,t=S(t)),e=t),St[n]={nextPos:Ct,result:e},e)}function Jt(){var e,t=49*Ct+12,n=St[t];return n?(Ct=n.nextPos,n.result):((e=qt())===r&&(e=yn())===r&&(e=rn())===r&&(e=An())===r&&(e=an())===r&&(e=cn())===r&&(e=dn()),St[t]={nextPos:Ct,result:e},e)}function qt(){var e,t=49*Ct+13,n=St[t];return n?(Ct=n.nextPos,n.result):((e=Zt())===r&&(e=zt())===r&&(e=Ht())===r&&(e=Vt()),St[t]={nextPos:Ct,result:e},e)}function Zt(){var e,n,i,o,A,s=49*Ct+14,c=St[s];if(c)return Ct=c.nextPos,c.result;if(e=Ct,t.substr(Ct,3)===M?(n=M,Ct+=3):(n=r,0===vt&&Tt(D)),n!==r)if((i=Cn())===r&&(i=N),i!==r){for(o=[],A=en();A!==r;)o.push(A),A=en();o!==r?(t.substr(Ct,3)===M?(A=M,Ct+=3):(A=r,0===vt&&Tt(D)),A!==r?(wt=e,e=n=T(o)):(Ct=e,e=a)):(Ct=e,e=a)}else Ct=e,e=a;else Ct=e,e=a;return St[s]={nextPos:Ct,result:e},e}function zt(){var e,n,i,o,A=49*Ct+15,s=St[A];if(s)return Ct=s.nextPos,s.result;if(e=Ct,34===t.charCodeAt(Ct)?(n=P,Ct++):(n=r,0===vt&&Tt(O)),n!==r){for(i=[],o=Xt();o!==r;)i.push(o),o=Xt();i!==r?(34===t.charCodeAt(Ct)?(o=P,Ct++):(o=r,0===vt&&Tt(O)),o!==r?(wt=e,e=n=T(i)):(Ct=e,e=a)):(Ct=e,e=a)}else Ct=e,e=a;return St[A]={nextPos:Ct,result:e},e}function Ht(){var e,n,i,o,A,s=49*Ct+16,c=St[s];if(c)return Ct=c.nextPos,c.result;if(e=Ct,t.substr(Ct,3)===F?(n=F,Ct+=3):(n=r,0===vt&&Tt(R)),n!==r)if((i=Cn())===r&&(i=N),i!==r){for(o=[],A=nn();A!==r;)o.push(A),A=nn();o!==r?(t.substr(Ct,3)===F?(A=F,Ct+=3):(A=r,0===vt&&Tt(R)),A!==r?(wt=e,e=n=T(o)):(Ct=e,e=a)):(Ct=e,e=a)}else Ct=e,e=a;else Ct=e,e=a;return St[s]={nextPos:Ct,result:e},e}function Vt(){var e,n,i,o,A=49*Ct+17,s=St[A];if(s)return Ct=s.nextPos,s.result;if(e=Ct,39===t.charCodeAt(Ct)?(n=G,Ct++):(n=r,0===vt&&Tt(x)),n!==r){for(i=[],o=$t();o!==r;)i.push(o),o=$t();i!==r?(39===t.charCodeAt(Ct)?(o=G,Ct++):(o=r,0===vt&&Tt(x)),o!==r?(wt=e,e=n=T(i)):(Ct=e,e=a)):(Ct=e,e=a)}else Ct=e,e=a;return St[A]={nextPos:Ct,result:e},e}function Xt(){var e,n,i,o=49*Ct+18,A=St[o];return A?(Ct=A.nextPos,A.result):((e=Sn())===r&&(e=Ct,n=Ct,vt++,34===t.charCodeAt(Ct)?(i=P,Ct++):(i=r,0===vt&&Tt(O)),vt--,i===r?n=l:(Ct=n,n=a),n!==r?(t.length>Ct?(i=t.charAt(Ct),Ct++):(i=r,0===vt&&Tt(g)),i!==r?(wt=e,e=n=U(i)):(Ct=e,e=a)):(Ct=e,e=a)),St[o]={nextPos:Ct,result:e},e)}function $t(){var e,n,i,o=49*Ct+19,A=St[o];return A?(Ct=A.nextPos,A.result):(e=Ct,n=Ct,vt++,39===t.charCodeAt(Ct)?(i=G,Ct++):(i=r,0===vt&&Tt(x)),vt--,i===r?n=l:(Ct=n,n=a),n!==r?(t.length>Ct?(i=t.charAt(Ct),Ct++):(i=r,0===vt&&Tt(g)),i!==r?(wt=e,e=n=U(i)):(Ct=e,e=a)):(Ct=e,e=a),St[o]={nextPos:Ct,result:e},e)}function en(){var e,n,i,o=49*Ct+20,A=St[o];return A?(Ct=A.nextPos,A.result):((e=Sn())===r&&(e=tn())===r&&(e=Ct,n=Ct,vt++,t.substr(Ct,3)===M?(i=M,Ct+=3):(i=r,0===vt&&Tt(D)),vt--,i===r?n=l:(Ct=n,n=a),n!==r?(t.length>Ct?(i=t.charAt(Ct),Ct++):(i=r,0===vt&&Tt(g)),i!==r?(wt=e,e=n=_(i)):(Ct=e,e=a)):(Ct=e,e=a)),St[o]={nextPos:Ct,result:e},e)}function tn(){var e,n,i,o,A=49*Ct+21,s=St[A];if(s)return Ct=s.nextPos,s.result;if(e=Ct,92===t.charCodeAt(Ct)?(n=L,Ct++):(n=r,0===vt&&Tt(K)),n!==r)if(Cn()!==r){for(i=[],o=wn();o!==r;)i.push(o),o=wn();i!==r?(wt=e,e=n=Y()):(Ct=e,e=a)}else Ct=e,e=a;else Ct=e,e=a;return St[A]={nextPos:Ct,result:e},e}function nn(){var e,n,i,o=49*Ct+22,A=St[o];return A?(Ct=A.nextPos,A.result):(e=Ct,n=Ct,vt++,t.substr(Ct,3)===F?(i=F,Ct+=3):(i=r,0===vt&&Tt(R)),vt--,i===r?n=l:(Ct=n,n=a),n!==r?(t.length>Ct?(i=t.charAt(Ct),Ct++):(i=r,0===vt&&Tt(g)),i!==r?(wt=e,e=n=U(i)):(Ct=e,e=a)):(Ct=e,e=a),St[o]={nextPos:Ct,result:e},e)}function rn(){var e,n,i,o,A=49*Ct+23,s=St[A];return s?(Ct=s.nextPos,s.result):(e=Ct,(n=on())===r&&(n=sn()),n!==r?(101===t.charCodeAt(Ct)?(i=j,Ct++):(i=r,0===vt&&Tt(W)),i===r&&(69===t.charCodeAt(Ct)?(i=J,Ct++):(i=r,0===vt&&Tt(q))),i!==r&&(o=sn())!==r?(wt=e,e=n=Z(n,o)):(Ct=e,e=a)):(Ct=e,e=a),e===r&&(e=Ct,(n=on())!==r&&(wt=e,n=z(n)),e=n),St[A]={nextPos:Ct,result:e},e)}function on(){var e,n,i,o,A,s,c=49*Ct+24,u=St[c];return u?(Ct=u.nextPos,u.result):(e=Ct,43===t.charCodeAt(Ct)?(n=H,Ct++):(n=r,0===vt&&Tt(V)),n===r&&(n=N),n!==r?(i=Ct,(o=vn())!==r?(46===t.charCodeAt(Ct)?(A=w,Ct++):(A=r,0===vt&&Tt(E)),A!==r&&(s=vn())!==r?i=o=[o,A,s]:(Ct=i,i=a)):(Ct=i,i=a),i!==r?(wt=e,e=n=X(i)):(Ct=e,e=a)):(Ct=e,e=a),e===r&&(e=Ct,45===t.charCodeAt(Ct)?(n=$,Ct++):(n=r,0===vt&&Tt(ee)),n!==r?(i=Ct,(o=vn())!==r?(46===t.charCodeAt(Ct)?(A=w,Ct++):(A=r,0===vt&&Tt(E)),A!==r&&(s=vn())!==r?i=o=[o,A,s]:(Ct=i,i=a)):(Ct=i,i=a),i!==r?(wt=e,e=n=te(i)):(Ct=e,e=a)):(Ct=e,e=a)),St[c]={nextPos:Ct,result:e},e)}function An(){var e,t,n=49*Ct+25,i=St[n];return i?(Ct=i.nextPos,i.result):(e=Ct,(t=sn())!==r&&(wt=e,t=ne(t)),e=t,St[n]={nextPos:Ct,result:e},e)}function sn(){var e,n,i,o,A,s=49*Ct+26,c=St[s];if(c)return Ct=c.nextPos,c.result;if(e=Ct,43===t.charCodeAt(Ct)?(n=H,Ct++):(n=r,0===vt&&Tt(V)),n===r&&(n=N),n!==r){if(i=[],(o=bn())!==r)for(;o!==r;)i.push(o),o=bn();else i=a;i!==r?(o=Ct,vt++,46===t.charCodeAt(Ct)?(A=w,Ct++):(A=r,0===vt&&Tt(E)),vt--,A===r?o=l:(Ct=o,o=a),o!==r?(wt=e,e=n=X(i)):(Ct=e,e=a)):(Ct=e,e=a)}else Ct=e,e=a;if(e===r)if(e=Ct,45===t.charCodeAt(Ct)?(n=$,Ct++):(n=r,0===vt&&Tt(ee)),n!==r){if(i=[],(o=bn())!==r)for(;o!==r;)i.push(o),o=bn();else i=a;i!==r?(o=Ct,vt++,46===t.charCodeAt(Ct)?(A=w,Ct++):(A=r,0===vt&&Tt(E)),vt--,A===r?o=l:(Ct=o,o=a),o!==r?(wt=e,e=n=te(i)):(Ct=e,e=a)):(Ct=e,e=a)}else Ct=e,e=a;return St[s]={nextPos:Ct,result:e},e}function an(){var e,n,i=49*Ct+27,o=St[i];return o?(Ct=o.nextPos,o.result):(e=Ct,t.substr(Ct,4)===ie?(n=ie,Ct+=4):(n=r,0===vt&&Tt(re)),n!==r&&(wt=e,n=oe()),(e=n)===r&&(e=Ct,t.substr(Ct,5)===Ae?(n=Ae,Ct+=5):(n=r,0===vt&&Tt(se)),n!==r&&(wt=e,n=ae()),e=n),St[i]={nextPos:Ct,result:e},e)}function cn(){var e,n,i,o,A,s=49*Ct+28,c=St[s];if(c)return Ct=c.nextPos,c.result;if(e=Ct,91===t.charCodeAt(Ct)?(n=d,Ct++):(n=r,0===vt&&Tt(h)),n!==r){for(i=[],o=gn();o!==r;)i.push(o),o=gn();i!==r?(93===t.charCodeAt(Ct)?(o=p,Ct++):(o=r,0===vt&&Tt(f)),o!==r?(wt=e,e=n=ce()):(Ct=e,e=a)):(Ct=e,e=a)}else Ct=e,e=a;if(e===r&&(e=Ct,91===t.charCodeAt(Ct)?(n=d,Ct++):(n=r,0===vt&&Tt(h)),n!==r?((i=un())===r&&(i=N),i!==r?(93===t.charCodeAt(Ct)?(o=p,Ct++):(o=r,0===vt&&Tt(f)),o!==r?(wt=e,e=n=ue(i)):(Ct=e,e=a)):(Ct=e,e=a)):(Ct=e,e=a),e===r)){if(e=Ct,91===t.charCodeAt(Ct)?(n=d,Ct++):(n=r,0===vt&&Tt(h)),n!==r){if(i=[],(o=ln())!==r)for(;o!==r;)i.push(o),o=ln();else i=a;i!==r?(93===t.charCodeAt(Ct)?(o=p,Ct++):(o=r,0===vt&&Tt(f)),o!==r?(wt=e,e=n=le(i)):(Ct=e,e=a)):(Ct=e,e=a)}else Ct=e,e=a;if(e===r)if(e=Ct,91===t.charCodeAt(Ct)?(n=d,Ct++):(n=r,0===vt&&Tt(h)),n!==r){if(i=[],(o=ln())!==r)for(;o!==r;)i.push(o),o=ln();else i=a;i!==r&&(o=un())!==r?(93===t.charCodeAt(Ct)?(A=p,Ct++):(A=r,0===vt&&Tt(f)),A!==r?(wt=e,e=n=ge(i,o)):(Ct=e,e=a)):(Ct=e,e=a)}else Ct=e,e=a}return St[s]={nextPos:Ct,result:e},e}function un(){var e,t,n,i,o,A=49*Ct+29,s=St[A];if(s)return Ct=s.nextPos,s.result;for(e=Ct,t=[],n=gn();n!==r;)t.push(n),n=gn();if(t!==r)if((n=Jt())!==r){for(i=[],o=gn();o!==r;)i.push(o),o=gn();i!==r?(wt=e,e=t=de(n)):(Ct=e,e=a)}else Ct=e,e=a;else Ct=e,e=a;return St[A]={nextPos:Ct,result:e},e}function ln(){var e,n,i,o,A,s,c,u=49*Ct+30,l=St[u];if(l)return Ct=l.nextPos,l.result;for(e=Ct,n=[],i=gn();i!==r;)n.push(i),i=gn();if(n!==r)if((i=Jt())!==r){for(o=[],A=gn();A!==r;)o.push(A),A=gn();if(o!==r)if(44===t.charCodeAt(Ct)?(A=he,Ct++):(A=r,0===vt&&Tt(pe)),A!==r){for(s=[],c=gn();c!==r;)s.push(c),c=gn();s!==r?(wt=e,e=n=de(i)):(Ct=e,e=a)}else Ct=e,e=a;else Ct=e,e=a}else Ct=e,e=a;else Ct=e,e=a;return St[u]={nextPos:Ct,result:e},e}function gn(){var e,t=49*Ct+31,n=St[t];return n?(Ct=n.nextPos,n.result):((e=Bn())===r&&(e=Cn())===r&&(e=Gt()),St[t]={nextPos:Ct,result:e},e)}function dn(){var e,n,i,o,A,s,c=49*Ct+32,u=St[c];if(u)return Ct=u.nextPos,u.result;if(e=Ct,123===t.charCodeAt(Ct)?(n=fe,Ct++):(n=r,0===vt&&Tt(me)),n!==r){for(i=[],o=Bn();o!==r;)i.push(o),o=Bn();if(i!==r){for(o=[],A=hn();A!==r;)o.push(A),A=hn();if(o!==r){for(A=[],s=Bn();s!==r;)A.push(s),s=Bn();A!==r?(125===t.charCodeAt(Ct)?(s=Ie,Ct++):(s=r,0===vt&&Tt(ye)),s!==r?(wt=e,e=n=Be(o)):(Ct=e,e=a)):(Ct=e,e=a)}else Ct=e,e=a}else Ct=e,e=a}else Ct=e,e=a;return St[c]={nextPos:Ct,result:e},e}function hn(){var e,n,i,o,A,s,c,u,l,g,d,h=49*Ct+33,p=St[h];if(p)return Ct=p.nextPos,p.result;for(e=Ct,n=[],i=Bn();i!==r;)n.push(i),i=Bn();if(n!==r)if((i=jt())!==r){for(o=[],A=Bn();A!==r;)o.push(A),A=Bn();if(o!==r)if(61===t.charCodeAt(Ct)?(A=Q,Ct++):(A=r,0===vt&&Tt(b)),A!==r){for(s=[],c=Bn();c!==r;)s.push(c),c=Bn();if(s!==r)if((c=Jt())!==r){for(u=[],l=Bn();l!==r;)u.push(l),l=Bn();if(u!==r)if(44===t.charCodeAt(Ct)?(l=he,Ct++):(l=r,0===vt&&Tt(pe)),l!==r){for(g=[],d=Bn();d!==r;)g.push(d),d=Bn();g!==r?(wt=e,e=n=Ce(i,c)):(Ct=e,e=a)}else Ct=e,e=a;else Ct=e,e=a}else Ct=e,e=a;else Ct=e,e=a}else Ct=e,e=a;else Ct=e,e=a}else Ct=e,e=a;else Ct=e,e=a;if(e===r){for(e=Ct,n=[],i=Bn();i!==r;)n.push(i),i=Bn();if(n!==r)if((i=jt())!==r){for(o=[],A=Bn();A!==r;)o.push(A),A=Bn();if(o!==r)if(61===t.charCodeAt(Ct)?(A=Q,Ct++):(A=r,0===vt&&Tt(b)),A!==r){for(s=[],c=Bn();c!==r;)s.push(c),c=Bn();s!==r&&(c=Jt())!==r?(wt=e,e=n=Ce(i,c)):(Ct=e,e=a)}else Ct=e,e=a;else Ct=e,e=a}else Ct=e,e=a;else Ct=e,e=a}return St[h]={nextPos:Ct,result:e},e}function pn(){var e,n,i,o=49*Ct+34,A=St[o];return A?(Ct=A.nextPos,A.result):(e=Ct,46===t.charCodeAt(Ct)?(n=w,Ct++):(n=r,0===vt&&Tt(E)),n!==r&&(i=vn())!==r?(wt=e,e=n=we(i)):(Ct=e,e=a),St[o]={nextPos:Ct,result:e},e)}function fn(){var e,n,i,o,A,s,c,u,l,g,d,h,p=49*Ct+35,f=St[p];return f?(Ct=f.nextPos,f.result):(e=Ct,n=Ct,(i=bn())!==r&&(o=bn())!==r&&(A=bn())!==r&&(s=bn())!==r?(45===t.charCodeAt(Ct)?(c=$,Ct++):(c=r,0===vt&&Tt(ee)),c!==r&&(u=bn())!==r&&(l=bn())!==r?(45===t.charCodeAt(Ct)?(g=$,Ct++):(g=r,0===vt&&Tt(ee)),g!==r&&(d=bn())!==r&&(h=bn())!==r?n=i=[i,o,A,s,c,u,l,g,d,h]:(Ct=n,n=a)):(Ct=n,n=a)):(Ct=n,n=a),n!==r&&(wt=e,n=Ee(n)),e=n,St[p]={nextPos:Ct,result:e},e)}function mn(){var e,n,i,o,A,s,c,u,l,g,d,h=49*Ct+36,p=St[h];return p?(Ct=p.nextPos,p.result):(e=Ct,n=Ct,(i=bn())!==r&&(o=bn())!==r?(58===t.charCodeAt(Ct)?(A=Qe,Ct++):(A=r,0===vt&&Tt(be)),A!==r&&(s=bn())!==r&&(c=bn())!==r?(58===t.charCodeAt(Ct)?(u=Qe,Ct++):(u=r,0===vt&&Tt(be)),u!==r&&(l=bn())!==r&&(g=bn())!==r?((d=pn())===r&&(d=N),d!==r?n=i=[i,o,A,s,c,u,l,g,d]:(Ct=n,n=a)):(Ct=n,n=a)):(Ct=n,n=a)):(Ct=n,n=a),n!==r&&(wt=e,n=ke(n)),e=n,St[h]={nextPos:Ct,result:e},e)}function In(){var e,n,i,o,A,s,c,u,l,g,d,h,p,f,m,I,y,B=49*Ct+37,C=St[B];return C?(Ct=C.nextPos,C.result):(e=Ct,n=Ct,(i=bn())!==r&&(o=bn())!==r?(58===t.charCodeAt(Ct)?(A=Qe,Ct++):(A=r,0===vt&&Tt(be)),A!==r&&(s=bn())!==r&&(c=bn())!==r?(58===t.charCodeAt(Ct)?(u=Qe,Ct++):(u=r,0===vt&&Tt(be)),u!==r&&(l=bn())!==r&&(g=bn())!==r?((d=pn())===r&&(d=N),d!==r?(45===t.charCodeAt(Ct)?(h=$,Ct++):(h=r,0===vt&&Tt(ee)),h===r&&(43===t.charCodeAt(Ct)?(h=H,Ct++):(h=r,0===vt&&Tt(V))),h!==r&&(p=bn())!==r&&(f=bn())!==r?(58===t.charCodeAt(Ct)?(m=Qe,Ct++):(m=r,0===vt&&Tt(be)),m!==r&&(I=bn())!==r&&(y=bn())!==r?n=i=[i,o,A,s,c,u,l,g,d,h,p,f,m,I,y]:(Ct=n,n=a)):(Ct=n,n=a)):(Ct=n,n=a)):(Ct=n,n=a)):(Ct=n,n=a)):(Ct=n,n=a),n!==r&&(wt=e,n=ke(n)),e=n,St[B]={nextPos:Ct,result:e},e)}function yn(){var e,n,i,o,A,s=49*Ct+38,c=St[s];return c?(Ct=c.nextPos,c.result):(e=Ct,(n=fn())!==r?(84===t.charCodeAt(Ct)?(i=ve,Ct++):(i=r,0===vt&&Tt(Se)),i!==r&&(o=mn())!==r?(90===t.charCodeAt(Ct)?(A=Me,Ct++):(A=r,0===vt&&Tt(De)),A!==r?(wt=e,e=n=Ne(n,o)):(Ct=e,e=a)):(Ct=e,e=a)):(Ct=e,e=a),e===r&&(e=Ct,(n=fn())!==r?(84===t.charCodeAt(Ct)?(i=ve,Ct++):(i=r,0===vt&&Tt(Se)),i!==r&&(o=In())!==r?(wt=e,e=n=Te(n,o)):(Ct=e,e=a)):(Ct=e,e=a)),St[s]={nextPos:Ct,result:e},e)}function Bn(){var e,n=49*Ct+39,i=St[n];return i?(Ct=i.nextPos,i.result):(Pe.test(t.charAt(Ct))?(e=t.charAt(Ct),Ct++):(e=r,0===vt&&Tt(Oe)),St[n]={nextPos:Ct,result:e},e)}function Cn(){var e,n,i,o=49*Ct+40,A=St[o];return A?(Ct=A.nextPos,A.result):(10===t.charCodeAt(Ct)?(e=Fe,Ct++):(e=r,0===vt&&Tt(Re)),e===r&&(e=Ct,13===t.charCodeAt(Ct)?(n=Ge,Ct++):(n=r,0===vt&&Tt(xe)),n!==r?(10===t.charCodeAt(Ct)?(i=Fe,Ct++):(i=r,0===vt&&Tt(Re)),i!==r?e=n=[n,i]:(Ct=e,e=a)):(Ct=e,e=a)),St[o]={nextPos:Ct,result:e},e)}function wn(){var e,t=49*Ct+41,n=St[t];return n?(Ct=n.nextPos,n.result):((e=Cn())===r&&(e=Bn()),St[t]={nextPos:Ct,result:e},e)}function En(){var e,n,i=49*Ct+42,o=St[i];return o?(Ct=o.nextPos,o.result):(e=Ct,vt++,t.length>Ct?(n=t.charAt(Ct),Ct++):(n=r,0===vt&&Tt(g)),vt--,n===r?e=l:(Ct=e,e=a),St[i]={nextPos:Ct,result:e},e)}function Qn(){var e,n=49*Ct+43,i=St[n];return i?(Ct=i.nextPos,i.result):(Ue.test(t.charAt(Ct))?(e=t.charAt(Ct),Ct++):(e=r,0===vt&&Tt(_e)),St[n]={nextPos:Ct,result:e},e)}function bn(){var e,n,i=49*Ct+44,o=St[i];return o?(Ct=o.nextPos,o.result):(Le.test(t.charAt(Ct))?(e=t.charAt(Ct),Ct++):(e=r,0===vt&&Tt(Ke)),e===r&&(e=Ct,95===t.charCodeAt(Ct)?(n=Ye,Ct++):(n=r,0===vt&&Tt(je)),n!==r&&(wt=e,n=We()),e=n),St[i]={nextPos:Ct,result:e},e)}function kn(){var e,n=49*Ct+45,i=St[n];return i?(Ct=i.nextPos,i.result):(Je.test(t.charAt(Ct))?(e=t.charAt(Ct),Ct++):(e=r,0===vt&&Tt(qe)),St[n]={nextPos:Ct,result:e},e)}function vn(){var e,t,n,i=49*Ct+46,o=St[i];if(o)return Ct=o.nextPos,o.result;if(e=Ct,t=[],(n=bn())!==r)for(;n!==r;)t.push(n),n=bn();else t=a;return t!==r&&(wt=e,t=Ze(t)),e=t,St[i]={nextPos:Ct,result:e},e}function Sn(){var e,n,i=49*Ct+47,o=St[i];return o?(Ct=o.nextPos,o.result):(e=Ct,t.substr(Ct,2)===ze?(n=ze,Ct+=2):(n=r,0===vt&&Tt(He)),n!==r&&(wt=e,n=Ve()),(e=n)===r&&(e=Ct,t.substr(Ct,2)===Xe?(n=Xe,Ct+=2):(n=r,0===vt&&Tt($e)),n!==r&&(wt=e,n=et()),(e=n)===r&&(e=Ct,t.substr(Ct,2)===tt?(n=tt,Ct+=2):(n=r,0===vt&&Tt(nt)),n!==r&&(wt=e,n=it()),(e=n)===r&&(e=Ct,t.substr(Ct,2)===rt?(n=rt,Ct+=2):(n=r,0===vt&&Tt(ot)),n!==r&&(wt=e,n=At()),(e=n)===r&&(e=Ct,t.substr(Ct,2)===st?(n=st,Ct+=2):(n=r,0===vt&&Tt(at)),n!==r&&(wt=e,n=ct()),(e=n)===r&&(e=Ct,t.substr(Ct,2)===ut?(n=ut,Ct+=2):(n=r,0===vt&&Tt(lt)),n!==r&&(wt=e,n=gt()),(e=n)===r&&(e=Ct,t.substr(Ct,2)===dt?(n=dt,Ct+=2):(n=r,0===vt&&Tt(ht)),n!==r&&(wt=e,n=pt()),(e=n)===r&&(e=Mn()))))))),St[i]={nextPos:Ct,result:e},e)}function Mn(){var e,n,i,o,A,s,c,u,l,g,d,h=49*Ct+48,p=St[h];return p?(Ct=p.nextPos,p.result):(e=Ct,t.substr(Ct,2)===ft?(n=ft,Ct+=2):(n=r,0===vt&&Tt(mt)),n!==r?(i=Ct,(o=Qn())!==r&&(A=Qn())!==r&&(s=Qn())!==r&&(c=Qn())!==r&&(u=Qn())!==r&&(l=Qn())!==r&&(g=Qn())!==r&&(d=Qn())!==r?i=o=[o,A,s,c,u,l,g,d]:(Ct=i,i=a),i!==r?(wt=e,e=n=It(i)):(Ct=e,e=a)):(Ct=e,e=a),e===r&&(e=Ct,t.substr(Ct,2)===yt?(n=yt,Ct+=2):(n=r,0===vt&&Tt(Bt)),n!==r?(i=Ct,(o=Qn())!==r&&(A=Qn())!==r&&(s=Qn())!==r&&(c=Qn())!==r?i=o=[o,A,s,c]:(Ct=i,i=a),i!==r?(wt=e,e=n=It(i)):(Ct=e,e=a)):(Ct=e,e=a)),St[h]={nextPos:Ct,result:e},e)}var Dn=[];function Nn(e,t,n){var i=new Error(e);throw i.line=t,i.column=n,i}function Tn(e){Dn.push(e)}function Pn(e,t,n,i,r){var o={type:e,value:t,line:n(),column:i()};return r&&(o.key=r),o}function On(e,t,n){var i=parseInt("0x"+e);if(!(!isFinite(i)||Math.floor(i)!=i||i<0||i>1114111||i>55295&&i<57344))return Fn(i);Nn("Invalid Unicode escape code: "+e,t,n)}function Fn(){var e,t,n=16384,i=[],r=-1,o=arguments.length;if(!o)return"";for(var A="";++r>10),t=s%1024+56320,i.push(e,t)),(r+1==o||i.length>n)&&(A+=String.fromCharCode.apply(null,i),i.length=0)}return A}if((n=A())!==r&&Ct===t.length)return n;throw n!==r&&Ct{"use strict";t.U={linear:function(e){return e},quadratic:function(e){return e*(-e*e*e+4*e*e-6*e+4)},cubic:function(e){return e*(4*e*e-9*e+6)},elastic:function(e){return e*(33*e*e*e*e-106*e*e*e+126*e*e-67*e+15)},inQuad:function(e){return e*e},outQuad:function(e){return e*(2-e)},inOutQuad:function(e){return e<.5?2*e*e:(4-2*e)*e-1},inCubic:function(e){return e*e*e},outCubic:function(e){return--e*e*e+1},inOutCubic:function(e){return e<.5?4*e*e*e:(e-1)*(2*e-2)*(2*e-2)+1},inQuart:function(e){return e*e*e*e},outQuart:function(e){return 1- --e*e*e*e},inOutQuart:function(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e},inQuint:function(e){return e*e*e*e*e},outQuint:function(e){return 1+--e*e*e*e*e},inOutQuint:function(e){return e<.5?16*e*e*e*e*e:1+16*--e*e*e*e*e},inSine:function(e){return 1-Math.cos(e*(Math.PI/2))},outSine:function(e){return Math.sin(e*(Math.PI/2))},inOutSine:function(e){return-(Math.cos(Math.PI*e)-1)/2},inExpo:function(e){return Math.pow(2,10*(e-1))},outExpo:function(e){return 1-Math.pow(2,-10*e)},inOutExpo:function(e){return(e/=.5)<1?Math.pow(2,10*(e-1))/2:(e--,(2-Math.pow(2,-10*e))/2)},inCirc:function(e){return 1-Math.sqrt(1-e*e)},outCirc:function(e){return Math.sqrt(1-(e-=1)*e)},inOutCirc:function(e){return(e/=.5)<1?-(Math.sqrt(1-e*e)-1)/2:(e-=2,(Math.sqrt(1-e*e)+1)/2)}}},68786:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=n(50959),A=i(n(62496)),s=n(69160),a=n(23200);t.default=({tokenInfo:e,amount:t})=>{const{tokenPriceMap:n}=(0,s.useUSDValueProvider)(),i=(0,o.useMemo)((()=>{var i;if(!t||!(0,a.hasNumericValue)(t))return 0;const r=(null===(i=n[e.address])||void 0===i?void 0:i.usd)||0;return new A.default(t||0).mul(r).toNumber()}),[n,t]);return i&&i>0?(0,r.jsxs)(r.Fragment,{children:["$",a.formatNumber.format(i,2)]}):(0,r.jsx)(r.Fragment,{children:""})}},44286:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return r(t,e),t};Object.defineProperty(t,"__esModule",{value:!0});const A=n(11527),s=o(n(50959)),a=n(19078),c=n(57139),u=n(23200);t.default=e=>{const{accounts:t}=(0,c.useAccounts)(),{wallet:n}=(0,a.useWalletPassThrough)(),i=s.useMemo((()=>{var e;return null===(e=null==n?void 0:n.adapter.publicKey)||void 0===e?void 0:e.toString()}),[null==n?void 0:n.adapter.publicKey]),r=s.useMemo((()=>{var n;return(null===(n=t[e.mintAddress])||void 0===n?void 0:n.balance)||0}),[t,e.mintAddress]);return e.hideZeroBalance&&0===r?null:i?(0,A.jsx)("span",Object.assign({translate:"no"},{children:u.formatNumber.format(r,6)})):(0,A.jsx)("span",Object.assign({translate:"no"},{children:u.formatNumber.format(0,6)}))}},82528:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CurrentUserBadge=void 0;const i=n(11527),r=n(50959),o=n(38865),A=n(57139),s=n(19078),a=n(23200);t.CurrentUserBadge=()=>{var e;const{publicKey:t,wallet:n}=(0,s.useWalletPassThrough)(),{accounts:c}=(0,A.useAccounts)();return(0,r.useMemo)((()=>c[o.WRAPPED_SOL_MINT.toString()]?c[o.WRAPPED_SOL_MINT.toString()].balance:0),[t,c]),n&&t?(0,i.jsxs)("div",Object.assign({className:"flex items-center bg-[#191B1F] py-2 px-3 rounded-2xl h-7"},{children:[(0,i.jsx)("div",Object.assign({className:"w-4 h-4 rounded-full bg-[#191B1F] dark:bg-white-10 flex justify-center items-center",style:{position:"relative"}},{children:(0,i.jsx)("img",{alt:"Wallet logo",width:16,height:16,src:null===(e=null==n?void 0:n.adapter)||void 0===e?void 0:e.icon})})),(0,i.jsx)("div",Object.assign({className:"ml-2"},{children:(0,i.jsx)("div",Object.assign({className:"text-xs text-white"},{children:(0,a.shortenAddress)(`${t}`)}))}))]})):null}},45817:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return r(t,e),t},A=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.calculateRate=void 0;const s=n(11527),a=A(n(84875)),c=A(n(62496)),u=o(n(50959)),l=n(23200),g=A(n(17154));t.calculateRate=({inAmount:e,inputDecimal:t,outAmount:n,outputDecimal:i},r)=>{const o=(0,l.fromLamports)(e,t),A=(0,l.fromLamports)(n,i),s=r?new c.default(A).div(o):new c.default(o).div(A);return Number.isNaN(s.toNumber())?new c.default(0):s};const d=({width:e=16,height:t=16})=>(0,s.jsx)("svg",Object.assign({width:e,height:t,viewBox:"0 0 16 16",fill:"none",xmlns:"http://www.w3.org/2000/svg"},{children:(0,s.jsx)("path",{d:"M10.8573 8.18429L13.6323 5.95933L10.8573 3.73438V5.31937H3.32735V6.59937H10.8573V8.18429ZM5.14223 7.81429L2.36719 10.0393L5.14223 12.2642V10.6792H12.6722V9.39922H5.14223V7.81429Z",fill:"#777777"})}));t.default=({className:e,textClassName:n,loading:i=!1,fromTokenInfo:r,rateParams:o,toTokenInfo:A,reversible:c=!0})=>{const[h,p]=u.useState(null==c||c),f=u.useMemo((()=>(0,t.calculateRate)(o,h)),[i,h,o]),m=u.useCallback((e=>{e.stopPropagation(),p((e=>!e))}),[]);return(0,s.jsxs)("div",Object.assign({className:(0,a.default)(e,"flex cursor-pointer text-white/30 text-xs align-center"),onClick:m},{children:[(0,s.jsx)("span",Object.assign({className:(0,a.default)(n,"max-w-full flex whitespace-nowrap")},{children:h?(0,s.jsxs)(s.Fragment,{children:["1 ",r.symbol," ≈",(0,s.jsx)("div",Object.assign({className:"flex ml-0.5"},{children:f.gt(1e-5)?`${l.formatNumber.format(f.toNumber())} ${A.symbol}`:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(g.default,{value:f.toNumber(),maxSuffix:6})," ",A.symbol]})}))]}):(0,s.jsxs)(s.Fragment,{children:["1 ",A.symbol," ≈",(0,s.jsx)("div",Object.assign({className:"flex ml-0.5"},{children:f.gt(1e-5)?`${l.formatNumber.format(f.toNumber())} ${r.symbol}`:(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)(g.default,{value:f.toNumber(),maxSuffix:6})," ",r.symbol]})}))]})})),c?(0,s.jsx)("div",Object.assign({className:"ml-2"},{children:(0,s.jsx)(d,{})})):null]}))}},51586:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=n(50959),A=n(97528),s=n(57139),a=n(56378),c=i(n(44286)),u=i(n(41338)),l=i(n(80873)),g=i(n(36652)),d=n(38865),h=n(18090),p=i(n(56757)),f=n(19078),m=i(n(10622)),I=i(n(27239)),y=i(n(94115)),B=n(17503),C=i(n(78712)),w=i(n(91637)),E=n(94067),Q=i(n(84875)),b=n(23200),k=i(n(68786));t.default=({onSubmit:e,isDisabled:t,setSelectPairSelector:n,setIsWalletModalOpen:i,setShowRouteSelector:v})=>{const{connect:S,wallet:M}=(0,f.useWalletPassThrough)(),{accounts:D}=(0,s.useAccounts)(),{form:N,setForm:T,errors:P,fromTokenInfo:O,toTokenInfo:F,selectedSwapRoute:R,formProps:{swapMode:G,fixedAmount:x,fixedInputMint:U,fixedOutputMint:_},jupiter:{routes:L,loading:K,refresh:Y}}=(0,h.useSwapContext)(),[j,W]=(0,p.default)();(0,o.useEffect)((()=>{j&&Y()}),[j]);const J=(0,o.useMemo)((()=>{var e;return null===(e=null==M?void 0:M.adapter.publicKey)||void 0===e?void 0:e.toString()}),[null==M?void 0:M.adapter.publicKey]),q=(0,o.useMemo)((()=>{var e;return O&&(null===(e=D[O.address])||void 0===e?void 0:e.balance)||0}),[D,O]),Z=(0,o.useCallback)((e=>{e.preventDefault(),q&&"ExactOut"!==G&&((null==O?void 0:O.address)===d.WRAPPED_SOL_MINT.toBase58()?T((e=>Object.assign(Object.assign({},e),{fromValue:String(q>a.MINIMUM_SOL_BALANCE?(q-a.MINIMUM_SOL_BALANCE).toFixed(6):0)}))):T((e=>Object.assign(Object.assign({},e),{fromValue:String(q)}))))}),[q,O]),z=(0,o.useMemo)((()=>U||_),[U,_]),{inputAmountDisabled:H,outputAmountDisabled:V}=(0,o.useMemo)((()=>{const e={inputAmountDisabled:!0,outputAmountDisabled:!0};return x||(G===E.SwapMode.ExactOut?e.outputAmountDisabled=!1:e.inputAmountDisabled=!1),e}),[x,G]),X=R?R.marketInfos.map((({label:e})=>e)).join(", "):"",$=(0,o.useCallback)((()=>{U||n("fromMint")}),[U]),ee=(0,o.useCallback)((()=>{_||n("toMint")}),[_]),te=(0,o.useMemo)((()=>"ExactOut"!==G||N.toValue?"":"opacity-20 hover:opacity-100"),[_,N.toValue]),ne=(0,o.useMemo)((()=>","===b.detectedSeparator?".":","),[]),ie=(0,o.useCallback)((({floatValue:e})=>!e||e<=a.MAX_INPUT_LIMIT),[]);return(0,r.jsxs)("div",Object.assign({className:"h-full flex flex-col items-center justify-center pb-4"},{children:[(0,r.jsxs)("div",Object.assign({className:"w-full mt-2 rounded-xl flex flex-col px-2"},{children:[(0,r.jsxs)("div",Object.assign({className:"flex-col"},{children:[(0,r.jsx)("div",Object.assign({className:(0,Q.default)("border-b border-transparent bg-[#212128] rounded-xl transition-all",te)},{children:(0,r.jsx)("div",Object.assign({className:(0,Q.default)("px-x border-transparent rounded-xl ")},{children:(0,r.jsx)("div",{children:(0,r.jsxs)("div",Object.assign({className:(0,Q.default)("py-5 px-4 flex flex-col dark:text-white")},{children:[(0,r.jsxs)("div",Object.assign({className:"flex justify-between items-center"},{children:[(0,r.jsxs)("button",Object.assign({type:"button",className:"py-2 px-3 rounded-2xl flex items-center bg-[#36373E] hover:bg-white/20 text-white",disabled:U,onClick:$},{children:[(0,r.jsx)("div",Object.assign({className:"h-5 w-5"},{children:(0,r.jsx)(g.default,{tokenInfo:O,width:20,height:20})})),(0,r.jsx)("div",Object.assign({className:"ml-4 mr-2 font-semibold",translate:"no"},{children:null==O?void 0:O.symbol})),U?null:(0,r.jsx)("span",Object.assign({className:"text-white/25 fill-current"},{children:(0,r.jsx)(I.default,{})}))]})),(0,r.jsx)("div",Object.assign({className:"text-right"},{children:(0,r.jsx)(A.NumericFormat,{disabled:"ExactOut"===G,value:void 0===N.fromValue?"":N.fromValue,decimalScale:null==O?void 0:O.decimals,thousandSeparator:ne,allowNegative:!1,valueIsNumericString:!0,onValueChange:({value:e})=>(e=>{""!==e?Number.isNaN(e)||T((t=>Object.assign(Object.assign({},t),{fromValue:e}))):T((e=>Object.assign(Object.assign({},e),{fromValue:"",toValue:""})))})(e),placeholder:"0.00",className:(0,Q.default)("h-full w-full bg-transparent text-white text-right font-semibold dark:placeholder:text-white/25 text-lg",{"cursor-not-allowed":H}),decimalSeparator:b.detectedSeparator,isAllowed:ie})}))]})),(null==O?void 0:O.address)?(0,r.jsxs)("div",Object.assign({className:"flex justify-between items-center"},{children:[(0,r.jsxs)("div",Object.assign({className:(0,Q.default)("flex mt-3 space-x-1 text-xs items-center text-white/30 fill-current",{"cursor-pointer":"ExactOut"!==G}),onClick:Z},{children:[(0,r.jsx)(m.default,{width:10,height:10}),(0,r.jsx)(c.default,{mintAddress:O.address}),(0,r.jsx)("span",{children:O.symbol})]})),N.fromValue?(0,r.jsx)("span",Object.assign({className:"text-xs text-white/30"},{children:(0,r.jsx)(k.default,{tokenInfo:O,amount:N.fromValue})})):null]})):null]}))})}))})),(0,r.jsx)("div",Object.assign({className:"my-2"},{children:z?null:(0,r.jsx)(w.default,{onClick:()=>{T((e=>Object.assign(Object.assign({},e),{fromValue:"",toValue:"",fromMint:e.toMint,toMint:e.fromMint})))},className:(0,Q.default)("transition-all",te)})})),(0,r.jsx)("div",Object.assign({className:"border-b border-transparent bg-[#212128] rounded-xl"},{children:(0,r.jsx)("div",Object.assign({className:"px-x border-transparent rounded-xl"},{children:(0,r.jsx)("div",{children:(0,r.jsxs)("div",Object.assign({className:"py-5 px-4 flex flex-col dark:text-white"},{children:[(0,r.jsxs)("div",Object.assign({className:"flex justify-between items-center"},{children:[(0,r.jsxs)("button",Object.assign({type:"button",className:"py-2 px-3 rounded-2xl flex items-center bg-[#36373E] hover:bg-white/20 disabled:hover:bg-[#36373E] text-white",disabled:_,onClick:ee},{children:[(0,r.jsx)("div",Object.assign({className:"h-5 w-5"},{children:(0,r.jsx)(g.default,{tokenInfo:F,width:20,height:20})})),(0,r.jsx)("div",Object.assign({className:"ml-4 mr-2 font-semibold",translate:"no"},{children:null==F?void 0:F.symbol})),_?null:(0,r.jsx)("span",Object.assign({className:"text-white/25 fill-current"},{children:(0,r.jsx)(I.default,{})}))]})),(0,r.jsx)("div",Object.assign({className:"text-right"},{children:(0,r.jsx)(A.NumericFormat,{disabled:!G||"ExactIn"===G,value:void 0===N.toValue?"":N.toValue,decimalScale:null==F?void 0:F.decimals,thousandSeparator:ne,allowNegative:!1,valueIsNumericString:!0,onValueChange:({value:e})=>(e=>{""!==e?Number.isNaN(e)||T((t=>Object.assign(Object.assign({},t),{toValue:e}))):T((e=>Object.assign(Object.assign({},e),{fromValue:"",toValue:""})))})(e),placeholder:"ExactOut"===G?"Enter desired amount":"",className:(0,Q.default)("h-full w-full bg-transparent text-white text-right font-semibold dark:placeholder:text-white/25 placeholder:text-sm placeholder:font-normal text-lg"),decimalSeparator:b.detectedSeparator,isAllowed:ie})}))]})),(null==F?void 0:F.address)?(0,r.jsxs)("div",Object.assign({className:"flex justify-between items-center"},{children:[(0,r.jsxs)("div",Object.assign({className:"flex mt-3 space-x-1 text-xs items-center text-white/30 fill-current"},{children:[(0,r.jsx)(m.default,{width:10,height:10}),(0,r.jsx)(c.default,{mintAddress:F.address}),(0,r.jsx)("span",{children:F.symbol})]})),N.toValue?(0,r.jsx)("span",Object.assign({className:"text-xs text-white/30"},{children:(0,r.jsx)(k.default,{tokenInfo:F,amount:N.toValue})})):null]})):null]}))})}))})),L?(0,r.jsxs)("div",Object.assign({className:"flex items-center mt-2 text-xs space-x-1"},{children:[(0,r.jsxs)("div",Object.assign({className:"bg-black/20 rounded-xl px-2 py-1 cursor-pointer text-white/50 flex items-center space-x-1",onClick:()=>v(!0)},{children:[(0,r.jsx)("span",{children:null==L?void 0:L.length}),(0,r.jsx)(B.RoutesSVG,{width:7,height:9})]})),(0,r.jsx)("span",Object.assign({className:"text-white/30"},{children:"using"})),(0,r.jsx)("span",Object.assign({className:"text-white/50 overflow-hidden whitespace-nowrap text-ellipsis max-w-[70%]"},{children:X}))]})):null]})),J?(0,r.jsx)(u.default,{errors:P}):null]})),(0,r.jsxs)("div",Object.assign({className:"w-full px-2"},{children:[J?(0,r.jsx)(l.default,Object.assign({size:"lg",className:"w-full mt-4 disabled:opacity-50",type:"button",onClick:e,disabled:t||K},{children:K?(0,r.jsx)("span",Object.assign({className:"text-sm"},{children:"Loading..."})):(0,r.jsx)(C.default,{children:"Swap"})})):(0,r.jsx)(l.default,Object.assign({size:"lg",className:"w-full mt-4",type:"button",onClick:()=>{M?S():i(!0)}},{children:"Connect Wallet"})),L&&R&&O&&F?(0,r.jsx)(y.default,{routes:L,selectedSwapRoute:R,fromTokenInfo:O,toTokenInfo:F,loading:K}):null]}))]}))}},41338:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(11527);t.default=({errors:e})=>(0,i.jsx)(i.Fragment,{children:Object.keys(e).map((t=>(0,i.jsx)("div",Object.assign({className:"w-full mt-5 bg-[#292A33] border border-black/10 dark:border-white/25 shadow-row-dark py-3 px-5 space-y-1 rounded-lg backdrop-blur-[20px]"},{children:(0,i.jsx)("div",Object.assign({className:"flex items-start space-x-2.5"},{children:(0,i.jsxs)("div",Object.assign({className:"flex-grow"},{children:[(0,i.jsx)("p",Object.assign({className:"text-[12px] leading-[1.67] font-bold !text-[#F04A44]"},{children:e[t].title})),e[t].message?(0,i.jsx)("p",Object.assign({className:"text-[12px] leading-[1.17] font-medium dark:text-white/50 text-black/50"},{children:e[t].message})):null]}))}))}),t)))})},32085:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=n(50959),A=i(n(44286)),s=n(48356),a=i(n(36652)),c=i(n(24968)),u=n(69160),l=i(n(62496)),g=n(57139);t.default=({item:e,style:t,onSubmit:n})=>{const i=(0,o.useMemo)((()=>{var t;return 0===(null===(t=e.tags)||void 0===t?void 0:t.length)}),[e.tags]),{accounts:d}=(0,g.useAccounts)(),{tokenPriceMap:h}=(0,u.useUSDValueProvider)(),p=(0,o.useMemo)((()=>{var t,n;const i=null===(t=h[e.address])||void 0===t?void 0:t.usd,r=null===(n=d[e.address])||void 0===n?void 0:n.balance;return i&&r?new l.default(i).mul(r):null}),[d,h]);return(0,r.jsx)("li",Object.assign({className:"cursor-pointer list-none ",style:Object.assign({maxHeight:s.PAIR_ROW_HEIGHT,height:s.PAIR_ROW_HEIGHT},t),translate:"no"},{children:(0,r.jsxs)("div",Object.assign({className:"flex items-center rounded-xl space-x-4 my-2 p-3 justify-between bg-[#2C2D33] hover:bg-black/10",onClick:()=>n(e)},{children:[(0,r.jsx)("div",Object.assign({className:"flex-shrink-0"},{children:(0,r.jsx)("div",Object.assign({className:"h-6 w-6 rounded-full"},{children:(0,r.jsx)(a.default,{tokenInfo:e,width:24,height:24})}))})),(0,r.jsxs)("div",Object.assign({className:"flex-1 min-w-0"},{children:[(0,r.jsxs)("div",Object.assign({className:"flex flex-row space-x-2"},{children:[(0,r.jsx)("p",Object.assign({className:"text-sm text-white truncate"},{children:e.symbol})),(0,r.jsx)(c.default,{tokenInfo:e})]})),(0,r.jsxs)("div",Object.assign({className:"mt-1 text-xs text-gray-500 truncate flex space-x-1"},{children:[(0,r.jsx)(A.default,{mintAddress:e.address}),p&&p.gt(.01)?(0,r.jsxs)("span",Object.assign({className:"ml-1"},{children:["| $",p.toFixed(2)]})):null]}))]})),i?(0,r.jsx)("p",Object.assign({className:"ml-auto border rounded-md text-xxs py-[1px] px-1 border-warning text-warning"},{children:(0,r.jsx)("span",{children:"Unknown"})})):null]}))}))}},48356:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.PAIR_ROW_HEIGHT=void 0;const r=n(11527),o=i(n(84875)),A=n(50959),s=i(n(98370)),a=n(37012),c=i(n(88811)),u=i(n(31525)),l=n(56378),g=n(57139),d=i(n(32085)),h=n(69160),p=i(n(62496));t.PAIR_ROW_HEIGHT=72;const f=(0,A.memo)((e=>{const{data:t,index:n,style:i}=e,o=t.searchResult[n];return(0,r.jsx)(d.default,{item:o,style:i,onSubmit:t.onSubmit},o.address)}),a.areEqual);t.default=({onSubmit:e,tokenInfos:n,onClose:i})=>{const{accounts:d}=(0,g.useAccounts)(),{tokenPriceMap:m}=(0,h.useUSDValueProvider)(),[I,y]=(0,A.useState)(""),[B,C]=(0,A.useState)(n);(0,A.useEffect)((()=>{const e=n.sort(((e,t)=>l.PAIR_SELECTOR_TOP_TOKENS.includes(e.address)&&!l.PAIR_SELECTOR_TOP_TOKENS.includes(t.address)?-1:1)).sort(((e,t)=>{var n,i;if(!d[e.address])return 1;if(!d[t.address])return-1;const[r,o]=[null===(n=m[e.address])||void 0===n?void 0:n.usd,null===(i=m[t.address])||void 0===i?void 0:i.usd];if(r&&o){const n=new p.default(r).mul(d[e.address].balance);return new p.default(o).mul(d[t.address].balance).gt(n)?1:-1}return d[t.address].balance-d[e.address].balance}));if(I){const t=e.filter((e=>e.symbol.toLowerCase().includes(I.toLowerCase())));C(t)}else C(e)}),[d,n,I]);const w=(0,A.createRef)(),E=(0,A.createRef)();return(0,A.useEffect)((()=>{var e;return null===(e=E.current)||void 0===e?void 0:e.focus()}),[E]),(0,r.jsxs)("div",Object.assign({className:"flex flex-col h-full w-full py-4 px-2"},{children:[(0,r.jsxs)("div",Object.assign({className:"flex w-full justify-between"},{children:[(0,r.jsx)("div",Object.assign({className:"text-white fill-current w-6 h-6 cursor-pointer",onClick:i},{children:(0,r.jsx)(c.default,{width:24,height:24})})),(0,r.jsx)("div",Object.assign({className:"text-white"},{children:"Select Token"})),(0,r.jsx)("div",{className:" w-6 h-6"})]})),(0,r.jsxs)("div",Object.assign({className:"flex px-5 mt-4 w-[98%] rounded-xl bg-[#212128]",style:{height:56,maxHeight:56}},{children:[(0,r.jsx)(u.default,{}),(0,r.jsx)("input",{autoComplete:"off",className:"w-full rounded-xl ml-4 truncate bg-[#212128] text-white/50 placeholder:text-white/20",placeholder:"Search",value:I,onChange:e=>y(e.target.value),ref:E})]})),(0,r.jsxs)("div",Object.assign({className:"mt-2",style:{flexGrow:1}},{children:[B.length>0&&(0,r.jsx)(s.default,{children:({height:n,width:i})=>(0,r.jsx)(a.FixedSizeList,Object.assign({ref:w,height:n,itemCount:B.length,itemSize:t.PAIR_ROW_HEIGHT,width:i-2,itemData:{searchResult:B,onSubmit:e},className:(0,o.default)("overflow-y-scroll mr-1 min-h-[12rem] px-5 webkit-scrollbar")},{children:f}))}),0===B.length?(0,r.jsx)("div",Object.assign({className:"mt-4 mb-4 text-center text-white/50"},{children:(0,r.jsx)("span",{children:"No tokens found"})})):(0,r.jsx)(r.Fragment,{})]}))]}))}},76952:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=n(50959),A=n(3305),s=n(18090),a=i(n(67358)),c=i(n(45201)),u=n(23200),l=i(n(67486)),g=n(52169),d=i(n(78821));t.default=({setIsWalletModalOpen:e})=>{const{slippage:t}=(0,A.useSlippageConfig)(),{form:n,jupiter:{refresh:i}}=(0,s.useSwapContext)(),[h,p]=(0,o.useState)(!1),f=(0,o.useMemo)((()=>`https://jup.ag/swap/${n.fromMint}-${n.toMint}?inAmount=${n.fromValue}`),[n]);return(0,r.jsxs)("div",Object.assign({className:"mt-2 h-7 pl-3 pr-2"},{children:[(0,r.jsxs)("div",Object.assign({className:"w-full flex items-center justify-between "},{children:[(0,r.jsxs)("a",Object.assign({href:f,target:"_blank",rel:"noreferrer noopener",className:"flex items-center space-x-2"},{children:[(0,r.jsx)(l.default,{width:24,height:24}),(0,r.jsx)("span",Object.assign({className:"font-bold text-sm text-white"},{children:"Jupiter"}))]})),(0,r.jsxs)("div",Object.assign({className:"flex space-x-1 items-center"},{children:[(0,r.jsx)("button",Object.assign({type:"button",className:"p-2 h-7 w-7 flex items-center justify-center border rounded-full border-white/10 bg-black/10 text-white/30 fill-current",onClick:i},{children:(0,r.jsx)(a.default,{})})),(0,r.jsxs)("button",Object.assign({type:"button",className:"p-2 h-7 space-x-1 flex items-center justify-center border rounded-2xl border-white/10 bg-black/10 text-white/30 fill-current",onClick:()=>p(!0)},{children:[(0,r.jsx)(c.default,{}),(0,r.jsxs)("span",Object.assign({suppressHydrationWarning:!0,className:"text-xs text-white-30"},{children:[isNaN(t)?"0":u.formatNumber.format(t),"%"]}))]})),(0,r.jsx)(g.WalletButton,{setIsWalletModalOpen:e})]}))]})),h?(0,r.jsx)("div",Object.assign({className:"absolute z-10 top-0 left-0 w-full h-full overflow-hidden bg-black/50 flex items-center px-4"},{children:(0,r.jsx)(d.default,{closeModal:()=>p(!1)})})):null]}))}},76951:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=i(n(96319));t.default=({message:e,iconSize:t=20,className:n})=>(0,r.jsxs)("div",Object.assign({className:`md:px-6 mt-1 flex items-center text-xs fill-current text-black/50 dark:text-white font-semibold ${n}`},{children:[(0,r.jsx)(o.default,{width:t,height:t}),(0,r.jsx)("span",Object.assign({className:"ml-2"},{children:e}))]}))},80873:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=i(n(84875)),A=i(n(50959)).default.forwardRef((({onClick:e,disabled:t,children:n,highlighted:i,className:A="",size:s="md",type:a,bgClass:c,rounded:u},l)=>{const g="sm"===s?"px-4 py-2.5 text-xs":"md"===s?"px-4 py-3 text-sm font-semibold":"lg"===s?"p-5 text-md font-semibold":void 0,d=c||"text-white bg-[#191B1F] dark:bg-black/50";return(0,r.jsx)("button",Object.assign({type:a,ref:l,className:(0,o.default)({relative:!0,"jup-gradient":i,"opacity-50 cursor-not-allowed":t,[d]:!0,[A]:!0,[u||"rounded-xl"]:!0}),disabled:t,onClick:e},{children:(0,r.jsx)("div",Object.assign({className:`${g} h-full w-full leading-none`},{children:n}))}))}));A.displayName="JupButton",t.default=A},36145:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=n(94067),A=n(93200),s=n(50959),a=n(74830),c=n(23510),u=n(18090),l=n(56378),g=n(19078),d=n(3305),h=n(69160),p=i(n(76952)),f=n(57139),m=i(n(17725)),I=i(n(8057)),y=i(n(96423)),B=()=>{const{screen:e}=(0,c.useScreenState)(),[t,n]=(0,s.useState)(!1);return(0,r.jsxs)(r.Fragment,{children:["Initial"===e?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(p.default,{setIsWalletModalOpen:n}),(0,r.jsx)(m.default,{isWalletModalOpen:t,setIsWalletModalOpen:n})]}):null,"Confirmation"===e?(0,r.jsx)(I.default,{}):null,"Swapping"===e?(0,r.jsx)(y.default,{}):null]})},C=new a.QueryClient;t.default=e=>{const{displayMode:t,platformFeeAndAccounts:n,formProps:i}=e,{connection:c}=(0,A.useConnection)(),{wallet:p}=(0,g.useWalletPassThrough)(),m=(0,s.useMemo)((()=>null==p?void 0:p.adapter.publicKey),[null==p?void 0:p.adapter.publicKey]),[I,y]=(0,s.useState)(!0);return(0,s.useEffect)((()=>{var e,t;(null===(t=null===(e=null==p?void 0:p.adapter)||void 0===e?void 0:e.supportedTransactionVersions)||void 0===t?void 0:t.has(0))?y(!1):y(!0)}),[null==p?void 0:p.adapter]),(0,r.jsx)(a.QueryClientProvider,Object.assign({client:C},{children:(0,r.jsx)(f.AccountsProvider,{children:(0,r.jsx)(d.SlippageConfigProvider,{children:(0,r.jsx)(o.JupiterProvider,Object.assign({connection:c,routeCacheDuration:l.ROUTE_CACHE_DURATION,wrapUnwrapSOL:!0,userPublicKey:m||void 0,platformFeeAndAccounts:n,asLegacyTransaction:I},{children:(0,r.jsx)(u.SwapContextProvider,Object.assign({displayMode:t,formProps:i,scriptDomain:e.scriptDomain,asLegacyTransaction:I,setAsLegacyTransaction:y},{children:(0,r.jsx)(h.USDValueProvider,{children:(0,r.jsx)(B,{})})}))}))})})}))}},17154:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=i(n(62496));function A(e){const t=["₀","₁","₂","₃","₄","₅","₆","₇","₈","₉"],n=e.toString();let i="";for(let e=0;e{const[n,i,s]=(e=>{const t=o.default.abs(o.default.ceil(new o.default(-1).mul(o.default.log10(e)))).toNumber(),[n,i]=[new o.default(e).toFixed().slice(0,t+2),new o.default(e).toFixed().slice(t+1)];return[t,n,i]})(e);return n<=5?(0,r.jsx)("span",{children:e.toFixed(6)}):(0,r.jsxs)("span",Object.assign({className:"flex items-center h-4"},{children:["0.0",(0,r.jsx)("span",Object.assign({className:"mb-3 text-xl mx-0.5"},{children:A(n-1)})),s.slice(0,t)]}))}},80451:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=i(n(63407)),A=n(23200);t.default=({hasSerumDeposit:e,hasAtaDeposit:t,feeInformation:n})=>e||t?(0,r.jsxs)("div",Object.assign({className:"flex items-start justify-between text-xs"},{children:[(0,r.jsxs)("div",Object.assign({className:"flex w-[50%] text-white/30"},{children:[(0,r.jsx)("span",{children:"Deposit"}),(0,r.jsx)(o.default,Object.assign({variant:"dark",className:"-mt-24",content:(0,r.jsx)("div",Object.assign({className:"max-w-xs p-2 rounded-lg text-white-75"},{children:(0,r.jsxs)("ul",Object.assign({className:"pl-2"},{children:[e&&(0,r.jsx)("li",{children:(0,r.jsxs)("p",{children:[(0,r.jsx)("span",{children:"Open serum require an OpenOrders account but it can be closed later on."})," ",(0,r.jsx)("a",Object.assign({className:"underline",target:"_blank",rel:"noopener noreferrer",href:"https://docs.google.com/document/d/1qEWc_Bmc1aAxyCUcilKB4ZYpOu3B0BxIbe__dRYmVns"},{children:(0,r.jsx)("span",{children:"Check here"})})),"."]})}),t&&(0,r.jsx)("li",{children:(0,r.jsx)("p",{children:(0,r.jsx)("span",{children:"You need to have the token program in order to execute the trade."})})})]}))}))},{children:(0,r.jsx)("span",Object.assign({className:"ml-1 cursor-pointer"},{children:"[?]"}))}))]})),(0,r.jsx)("div",Object.assign({className:"w-[50%] text-white/30 text-xs text-right"},{children:(()=>{var i,o,s;const a=[t&&(0,r.jsx)("p",{children:(0,r.jsxs)("span",{children:[A.formatNumber.format((0,A.fromLamports)(null==n?void 0:n.ataDeposits.reduce(((e,t)=>e+t),0),9))," ","SOL for ",null===(i=null==n?void 0:n.ataDeposits)||void 0===i?void 0:i.length," ",((null===(o=null==n?void 0:n.ataDeposits)||void 0===o?void 0:o.length)||0)>0?"ATA account":"ATA accounts"]})},"ata"),e&&(0,r.jsx)("p",{children:(0,r.jsxs)("span",{children:[A.formatNumber.format((0,A.fromLamports)(null==n?void 0:n.openOrdersDeposits.reduce(((e,t)=>e+t),0),9))," ","SOL for ",null==n?void 0:n.openOrdersDeposits.length," ",((null===(s=null==n?void 0:n.openOrdersDeposits)||void 0===s?void 0:s.length)||0)>0?"Serum OpenOrders account":"Serum OpenOrders accounts"]})},"serum")].filter(Boolean);return a.length?a:"-"})()}))]})):null},44085:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=i(n(62496)),A=n(23200),s=n(53183);t.default=({marketInfos:e})=>{const{tokenMap:t}=(0,s.useTokenContext)();return!e||e&&0===e.length?null:(0,r.jsx)(r.Fragment,{children:e.map(((e,n)=>{var i;const s=t.get(e.lpFee.mint),a=null!==(i=null==s?void 0:s.decimals)&&void 0!==i?i:6,c=A.formatNumber.format(new o.default(e.lpFee.amount.toString()).div(Math.pow(10,a)).toNumber());return(0,r.jsxs)("div",Object.assign({className:"flex items-center space-x-4 justify-between text-xs"},{children:[(0,r.jsx)("div",Object.assign({className:"text-white/30"},{children:(0,r.jsx)("span",{children:(0,r.jsxs)("span",{children:["Fees paid to ",(0,r.jsx)("span",Object.assign({translate:"no"},{children:e.label}))," LP"]})})})),(0,r.jsxs)("div",Object.assign({className:"text-white/30 text-right"},{children:[c," ",null==s?void 0:s.symbol," (",A.formatNumber.format(new o.default(e.lpFee.pct).mul(100).toNumber()),"%)"]}))]}),n)}))})}},13512:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=n(50959),A=i(n(63407)),s=n(23200);t.default=({feeInformation:e})=>{const t=(0,o.useMemo)((()=>e?s.formatNumber.format((0,s.fromLamports)(e.signatureFee,9)):"-"),[e]);return(0,r.jsxs)("div",Object.assign({className:"flex items-center justify-between text-xs"},{children:[(0,r.jsxs)("div",Object.assign({className:"flex w-[50%] text-white/30"},{children:[(0,r.jsx)("span",{children:"Transaction Fee"}),(0,r.jsx)(A.default,Object.assign({content:(0,r.jsx)("span",{children:"This is for Solana transaction fee"})},{children:(0,r.jsx)("span",Object.assign({className:"ml-1 cursor-pointer"},{children:"[?]"}))}))]})),(0,r.jsxs)("div",Object.assign({className:"text-white/30"},{children:[t," SOL"]}))]}))}},94115:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=n(40065),A=n(94067),s=i(n(84875)),a=i(n(62496)),c=i(n(48318)),u=n(50959),l=n(18090),g=n(19078),d=n(23200),h=i(n(45817)),p=i(n(80451)),f=i(n(44085)),m=i(n(13512));t.default=({routes:e,selectedSwapRoute:t,fromTokenInfo:n,toTokenInfo:i,loading:I,showFullDetails:y=!1,containerClassName:B})=>{var C,w,E,Q;const b={inAmount:(null==t?void 0:t.inAmount)||(null===(C=null==e?void 0:e[0])||void 0===C?void 0:C.inAmount)||o.ZERO,inputDecimal:n.decimals,outAmount:(null==t?void 0:t.outAmount)||(null===(w=null==e?void 0:e[0])||void 0===w?void 0:w.outAmount)||o.ZERO,outputDecimal:i.decimals},{wallet:k}=(0,g.useWalletPassThrough)(),v=(0,u.useMemo)((()=>{var e;return null===(e=null==k?void 0:k.adapter.publicKey)||void 0===e?void 0:e.toString()}),[null==k?void 0:k.adapter.publicKey]),S=d.formatNumber.format(new a.default((null==t?void 0:t.priceImpactPct)||0).mul(100).toDP(4).toNumber()),M=Number(S)<.1?`< ${d.formatNumber.format(.1)}%`:`~ ${S}%`,D=(0,u.useMemo)((()=>{if(null==t?void 0:t.otherAmountThreshold){const e=new a.default(t.otherAmountThreshold.toString()).div(Math.pow(10,i.decimals));return`${d.formatNumber.format(e.toNumber())} ${i.symbol}`}return"-"}),[t]),[N,T]=(0,u.useState)();(0,u.useEffect)((()=>{T(void 0),t.fees&&T(t.fees)}),[t,v]);const P=(null!==(E=null==N?void 0:N.ataDeposits.length)&&void 0!==E?E:0)>0,O=(null!==(Q=null==N?void 0:N.openOrdersDeposits.length)&&void 0!==Q?Q:0)>0,{jupiter:{priorityFeeInSOL:F}}=(0,l.useSwapContext)();return(0,r.jsxs)("div",Object.assign({className:(0,s.default)("mt-4 space-y-4 border border-white/5 rounded-xl p-3",B)},{children:[(0,r.jsxs)("div",Object.assign({className:"flex items-center justify-between text-xs"},{children:[(0,r.jsx)("div",Object.assign({className:"text-white/30"},{children:(0,r.jsx)("span",{children:"Rate"})})),c.default.greaterThan(b.inAmount,o.ZERO)&&c.default.greaterThan(b.outAmount,o.ZERO)?(0,r.jsx)(h.default,{loading:I,rateParams:b,fromTokenInfo:n,toTokenInfo:i,reversible:!0}):(0,r.jsx)("span",Object.assign({className:"text-white/30"},{children:"-"}))]})),(0,r.jsxs)("div",Object.assign({className:"flex items-center justify-between text-xs text-white/30"},{children:[(0,r.jsx)("div",{children:(0,r.jsx)("span",{children:"Price Impact"})}),(0,r.jsx)("div",{children:M})]})),(0,r.jsxs)("div",Object.assign({className:"flex items-center justify-between text-xs"},{children:[(0,r.jsx)("div",Object.assign({className:"text-white/30"},{children:(null==t?void 0:t.swapMode)===A.SwapMode.ExactIn?(0,r.jsx)("span",{children:"Minimum Received"}):(0,r.jsx)("span",{children:"Maximum Consumed"})})),(0,r.jsx)("div",Object.assign({className:"text-white/30"},{children:D}))]})),y?(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(f.default,{marketInfos:null==t?void 0:t.marketInfos}),(0,r.jsx)(m.default,{feeInformation:N}),(0,r.jsx)(p.default,{hasSerumDeposit:O,hasAtaDeposit:P,feeInformation:N}),F>0?(0,r.jsxs)("div",Object.assign({className:"flex items-center justify-between text-xs"},{children:[(0,r.jsx)("div",Object.assign({className:"text-white/30"},{children:"Priority Fee"})),(0,r.jsx)("div",Object.assign({className:"text-white/30"},{children:new a.default(F).toString()}))]})):null]}):null]}))}},78712:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(11527);t.default=({children:e,className:t})=>{const n=["text-transparent bg-clip-text bg-gradient-to-r from-[rgba(252,192,10,1)] to-[rgba(78,186,233,1)] dark:bg-200-auto dark:bg-jupiter-gradient-alternative animate-hue dark:animate-shine",t].join(" ");return(0,i.jsx)("span",Object.assign({className:n},{children:e}))}},16038:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(11527);t.default=({className:e,baseColor:t="currentColor",spinnerColor:n="currentColor",width:r=16,height:o=16})=>(0,i.jsx)("div",Object.assign({className:`rounded-full flex items-center justify-center ${e}`,style:{width:r,height:o}},{children:(0,i.jsxs)("svg",Object.assign({className:"animate-spin h-5 w-5 text-black dark:text-white",xmlns:"http://www.w3.org/2000/svg",fill:"none",viewBox:"0 0 24 24"},{children:[(0,i.jsx)("circle",{className:"opacity-25",cx:"12",cy:"12",r:"10",stroke:t,strokeWidth:"4"}),(0,i.jsx)("path",{className:"opacity-75",fill:n,d:"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"})]}))}))},36028:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(11527),r=n(50959);t.default=({idx:e,itemsCount:t,className:n="",onClick:o,highlighted:A,roundBorder:s,children:a})=>{const c="left"===s?"v2-border-gradient-left":"right"===s?"v2-border-gradient-right":void 0,u=(0,r.useMemo)((()=>{if(e>0&&e(0,r.jsx)("div",{className:"my-4 border-b border-white/10"});t.PRIORITY_TEXT={[I.PRIORITY_NONE]:"Normal",[I.PRIORITY_HIGH]:"High",[I.PRIORITY_TURBO]:"Turbo"};const E=[I.PRIORITY_NONE,I.PRIORITY_HIGH,I.PRIORITY_TURBO];t.default=({closeModal:e})=>{const{jupiter:{asLegacyTransaction:n,setAsLegacyTransaction:i,priorityFeeInSOL:Q,setPriorityFeeInSOL:b}}=(0,I.useSwapContext)(),{slippage:k,setSlippage:v}=(0,m.useSlippageConfig)(),{preferredTokenListMode:S,setPreferredTokenListMode:M}=(0,B.useTokenContext)(),D=(0,o.useMemo)((()=>["0.1",String(m.DEFAULT_SLIPPAGE),"1.0"]),[m.DEFAULT_SLIPPAGE]),N=(0,o.useMemo)((()=>D.find((e=>Number(e)===k))),[k,D]),T=(0,o.useMemo)((()=>E.find((e=>Number(e)===Q))),[Q]),P=(0,A.useForm)({defaultValues:Object.assign(Object.assign(Object.assign({},k?N?{slippagePreset:String(N)}:{slippageInput:String(k)}:{}),void 0!==Q&&void 0!==T?{priorityInSOLPreset:T}:{priorityInSOLInput:Q}),{asLegacyTransaction:n,preferredTokenListMode:S})}),[O,F]=(0,o.useState)(!N),R=P.watch("slippageInput"),G=P.watch("slippagePreset"),x=(0,o.useMemo)((()=>Number(R)>=0&&Number(R)<=50),[R]),U=(0,o.useMemo)((()=>Number(R)<=.05?(0,r.jsx)("span",{children:"Your transaction may fail"}):Number(R)>=10?(0,r.jsx)("span",{children:"Warning, slippage is high"}):""),[R]),_=(0,o.useRef)(),[L,K]=(0,o.useState)(void 0===T),Y=P.watch("priorityInSOLPreset"),j=(0,o.useRef)(),W=P.watch("priorityInSOLInput"),J=(0,o.useMemo)((()=>Number(W)<=I.PRIORITY_MAXIMUM_SUGGESTED),[W]),q=(0,o.useMemo)((()=>Number(W)>I.PRIORITY_MAXIMUM_SUGGESTED?(0,r.jsxs)("span",{children:["Warning, max priority fee is over the suggested amount of ",f.formatNumber.format(I.PRIORITY_MAXIMUM_SUGGESTED)," ","SOL."]}):""),[W]),Z=!(!O||R)||!G&&!x||!(!L||W)||void 0===Y&&!J,z=P.watch("asLegacyTransaction"),H=P.watch("preferredTokenListMode");return(0,r.jsxs)("div",Object.assign({className:(0,a.default)("w-full rounded-xl flex flex-col bg-jupiter-bg text-white shadow-xl max-h-[90%]")},{children:[(0,r.jsxs)("div",Object.assign({className:"flex justify-between items-center p-4 border-b border-white/10"},{children:[(0,r.jsx)("div",Object.assign({className:"text-sm font-semibold"},{children:(0,r.jsx)("span",{children:"Swap Settings"})})),(0,r.jsx)("div",Object.assign({className:"text-white fill-current cursor-pointer",onClick:()=>e()},{children:(0,r.jsx)(l.default,{width:14,height:14})}))]})),(0,r.jsx)("form",Object.assign({onSubmit:P.handleSubmit((t=>{var n;const i=Number(null!==(n=t.slippageInput)&&void 0!==n?n:t.slippagePreset);"number"==typeof i&&(v(i),e())})),className:(0,a.default)("relative w-full overflow-y-auto webkit-scrollbar")},{children:(0,r.jsxs)("div",{children:[(0,r.jsxs)("div",Object.assign({className:(0,a.default)("mt-2 px-5")},{children:[(0,r.jsxs)("div",Object.assign({className:"flex items-center text-sm text-white/75 font-[500]"},{children:[(0,r.jsx)("span",{children:"Transaction Priority"}),(0,r.jsx)(d.default,Object.assign({variant:"dark",className:"!left-24 !top-16 w-[50%]",content:(0,r.jsx)("span",Object.assign({className:"flex rounded-lg text-xs text-white/75"},{children:"The priority fee is paid to the Solana network. This additional fee helps boost how a transaction is prioritized against others, resulting in faster transaction execution times."}))},{children:(0,r.jsx)("div",Object.assign({className:"flex ml-2.5 items-center text-white-35 fill-current"},{children:(0,r.jsx)(g.default,{width:12,height:12})}))}))]})),(0,r.jsx)("div",Object.assign({className:"flex items-center mt-2.5 rounded-xl ring-1 ring-white/5 overflow-hidden"},{children:(0,r.jsx)(A.Controller,{name:"priorityInSOLInput",control:P.control,render:({})=>(0,r.jsx)(r.Fragment,{children:E.map(((e,n)=>{const i=t.PRIORITY_TEXT[e];return(0,r.jsx)(c.default,Object.assign({idx:n,itemsCount:E.length,roundBorder:0===n?"left":n===D.length-1?"right":void 0,highlighted:!L&&Y===e,onClick:()=>{P.setValue("priorityInSOLPreset",e),P.setValue("priorityInSOLInput",void 0),K(!1)}},{children:(0,r.jsxs)("div",{children:[(0,r.jsx)("p",Object.assign({className:"text-sm text-white"},{children:i})),(0,r.jsxs)("span",Object.assign({className:"mt-1 text-xs"},{children:[e," SOL"]}))]})}),n)}))})})})),(0,r.jsxs)("div",Object.assign({className:"mt-1"},{children:[(0,r.jsx)("span",Object.assign({className:"text-white/75 font-500 text-xs"},{children:"or set manually:"})),(0,r.jsxs)("div",Object.assign({className:"relative mt-1 "+(L?"v2-border-gradient v2-border-gradient-center":"")},{children:[(0,r.jsx)(A.Controller,{name:"priorityInSOLInput",control:P.control,render:({field:{onChange:e,value:t}})=>{const n=","===f.detectedSeparator?".":",";return(0,r.jsx)(s.NumericFormat,{value:void 0===t?"":t,decimalScale:9,thousandSeparator:n,getInputRef:e=>j.current=e,allowNegative:!1,onValueChange:({floatValue:t})=>{e(t),void 0!==t&&P.setValue("priorityInSOLPreset",void 0)},onFocus:()=>{var e;null===(e=j.current)||void 0===e||e.focus(),K(!0)},maxLength:12,placeholder:"0.0000",className:"text-left h-full w-full bg-[#1B1B1E] placeholder:text-white/25 py-4 px-5 text-sm rounded-xl ring-1 ring-white/5 text-white/50 pointer-events-all relative",decimalSeparator:f.detectedSeparator})}}),(0,r.jsx)("span",Object.assign({className:"absolute right-4 top-4 text-sm text-white/50"},{children:"SOL"}))]})),(0,r.jsxs)("div",Object.assign({className:""},{children:[void 0===Y&&0!==W?(0,r.jsx)("span",Object.assign({className:"text-xs text-white/50"},{children:(0,r.jsxs)("span",{children:["This will cost an additional ",new h.default(W||0).toString()," SOL."]})})):null,L&&!J&&(0,r.jsx)(u.default,{iconSize:14,className:"!text-jupiter-primary !px-0",message:`Please set a priority fee within ${f.formatNumber.format(I.PRIORITY_MAXIMUM_SUGGESTED)} SOL`}),void 0===Y&&q&&(0,r.jsx)(u.default,{iconSize:14,className:"!text-jupiter-primary !px-0 mb-2",message:q})]}))]})),(0,r.jsx)(w,{}),(0,r.jsx)("div",Object.assign({className:"flex items-center text-sm text-white/75 font-[500]"},{children:(0,r.jsx)("span",{children:"Slippage Settings"})})),(0,r.jsxs)("div",Object.assign({className:"flex items-center mt-2.5 rounded-xl ring-1 ring-white/5 overflow-hidden text-sm h-[52px]"},{children:[(0,r.jsx)(A.Controller,{name:"slippagePreset",control:P.control,render:({field:{onChange:e,value:t}})=>(0,r.jsx)(r.Fragment,{children:D.map(((n,i)=>{const o=f.formatNumber.format(Number(n))+"%";return(0,r.jsx)(c.default,Object.assign({idx:i,itemsCount:D.length,className:"h-full",roundBorder:0===i?"left":void 0,highlighted:!O&&Number(t)===Number(n),onClick:()=>{e(n),F(!1),P.setValue("slippageInput",void 0)}},{children:o}),i)}))})}),(0,r.jsxs)("div",Object.assign({onClick:()=>{var e;null===(e=_.current)||void 0===e||e.focus(),F(!0)},className:"flex items-center justify-between cursor-text w-[120px] h-full text-white/50 bg-[#1B1B1E] pl-2 text-sm relative border-l border-black-10 border-white/5 "+(O?"v2-border-gradient v2-border-gradient-right":"")},{children:[(0,r.jsx)("span",Object.assign({className:"text-xs"},{children:(0,r.jsx)("span",{children:"Custom"})})),(0,r.jsx)(A.Controller,{name:"slippageInput",control:P.control,render:({field:{onChange:e,value:t}})=>(0,r.jsx)(s.NumericFormat,{value:void 0===t?"":t,decimalScale:2,isAllowed:e=>(e.floatValue||0)<=100&&(e.floatValue||0)>=0,getInputRef:e=>_.current=e,allowNegative:!1,onValueChange:({floatValue:t})=>{e(t),void 0!==t&&P.setValue("slippagePreset",void 0)},allowLeadingZeros:!1,suffix:"%",className:"h-full w-full bg-transparent py-4 pr-4 text-sm rounded-lg placeholder:text-white/25 text-white/50 text-right pointer-events-all",decimalSeparator:f.detectedSeparator,placeholder:","===f.detectedSeparator?"0,00%":"0.00%"})})]}))]})),(0,r.jsxs)("div",{children:[O&&!x&&(0,r.jsx)(u.default,{iconSize:14,className:"!text-jupiter-primary !px-0",message:"Please set a slippage value that is within 0% to 50%"}),U&&(0,r.jsx)(u.default,{iconSize:14,className:"!text-jupiter-primary !px-0",message:U})]}),(0,r.jsx)(w,{}),(0,r.jsxs)("div",Object.assign({className:"flex items-center justify-between mt-2"},{children:[(0,r.jsxs)("div",Object.assign({className:"flex items-center space-x-2"},{children:[(0,r.jsx)("p",Object.assign({className:"text-sm font-semibold"},{children:"Versioned Tx."})),(0,r.jsx)("a",Object.assign({href:"https://docs.jup.ag/integrating-jupiter-1/additional-guides/composing-with-versioned-transactions#what-are-versioned-transactions",rel:"noreferrer",target:"_blank",className:"cursor-pointer"},{children:(0,r.jsx)(C.default,{})}))]})),(0,r.jsx)(y.default,{active:!z,onClick:()=>P.setValue("asLegacyTransaction",!z)})]})),(0,r.jsx)("p",Object.assign({className:"mt-2 text-xs text-white/50"},{children:"Versioned Tx is a significant upgrade that allows for more advanced routings and better prices! Make sure your connected wallet is compatible before toggling on Ver. Tx. Current compatible wallets: Phantom, Solflare, Glow and Backpack."})),(0,r.jsx)(w,{}),(0,r.jsxs)("div",Object.assign({className:"flex items-center justify-between mt-2"},{children:[(0,r.jsxs)("div",Object.assign({className:"flex items-center space-x-2"},{children:[(0,r.jsx)("p",Object.assign({className:"text-sm font-semibold"},{children:"Strict Token list"})),(0,r.jsx)("a",Object.assign({href:"https://docs.jup.ag/api/token-list-api",rel:"noreferrer",target:"_blank",className:"cursor-pointer"},{children:(0,r.jsx)(C.default,{})}))]})),(0,r.jsx)(y.default,{active:"strict"===H,onClick:()=>P.setValue("preferredTokenListMode","strict"===H?"all":"strict")})]})),(0,r.jsx)("p",Object.assign({className:"mt-2 text-xs text-white/50"},{children:'The strict list contains a smaller set of validated tokens. To see all tokens, toggle "off".'}))]})),(0,r.jsx)("div",Object.assign({className:"px-5 pb-5"},{children:(0,r.jsx)(p.default,Object.assign({type:"button",onClick:()=>{if(Z)return;const t=Number(null!=R?R:G);"number"==typeof t&&v(t);const n=Number(null!=W?W:Y);"number"==typeof n&&b(n),i(z),M(H),e()},className:"w-full mt-4",disabled:Z,size:"lg"},{children:(0,r.jsx)("span",{children:"Save Settings"})}))}))]})}))]}))}},91637:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(11527),r=()=>(0,i.jsx)("svg",Object.assign({width:"12",height:"12",viewBox:"0 0 12 12",fill:"none",xmlns:"http://www.w3.org/2000/svg"},{children:(0,i.jsx)("path",{d:"M9.04393 5.74021L12 3.3701L9.04393 1V2.68839H1.0228V4.05189H9.04393V5.74021ZM2.95607 5.34607L0 7.71617L2.95607 10.0863V8.39789H10.9772V7.03439H2.95607V5.34607Z",fill:"white",fillOpacity:"0.5"})}));t.default=({className:e,onClick:t,disabled:n})=>(0,i.jsx)("div",Object.assign({className:"flex justify-center"},{children:(0,i.jsx)("div",Object.assign({onClick:t,className:`border border-black/50 fill-current text-black bg-black/10 dark:text-white-35 dark:hover:text-white/50 dark:border dark:border-white-35 dark:hover:border-white/50 h-8 w-8 rounded-full flex items-center justify-center cursor-pointer ${n?"opacity-50 cursor-not-allowed":""} ${e}`},{children:(0,i.jsx)("div",Object.assign({className:"block -rotate-45"},{children:(0,i.jsx)(r,{})}))}))}))},31566:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=i(n(84875));t.default=({active:e,onClick:t,className:n,dotClassName:i})=>(0,r.jsx)("button",Object.assign({type:"button",className:(0,o.default)("w-10 h-[22px] flex items-center rounded-full p-[1px] cursor-pointer",n,{"bg-jupiter-jungle-green":e,"bg-[#010101]":!e}),onClick:()=>t(!e)},{children:(0,r.jsx)("div",{className:(0,o.default)("w-[18px] h-[18px] rounded-full shadow-md transform duration-300 ease-in-out",e?"bg-white transform translate-x-full":"bg-white",i)})}))},36652:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(11527),r=n(50959);t.default=({tokenInfo:e,width:t=24,height:n=24})=>{const[o,A]=(0,r.useState)(!1);return(0,i.jsx)("div",Object.assign({className:"text-xs flex items-center justify-center rounded-full overflow-hidden",style:{width:t,height:n}},{children:e&&!o?(0,i.jsx)("img",{onError:()=>A(!0),src:null==e?void 0:e.logoURI,alt:null==e?void 0:e.symbol,width:t,height:n}):(0,i.jsx)("div",{className:"items-center justify-center rounded-full overflow-hidden bg-black/20",style:{width:t,height:n}})}))}},24968:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=n(53884),A=i(n(499)),s=n(23200),a=({tokenInfo:e})=>{const{getTokenExplorer:t}=(0,o.usePreferredExplorer)();return(0,r.jsxs)("a",Object.assign({target:"_blank",rel:"noreferrer",className:"flex items-center bg-black/25 text-white/75 px-2 py-0.5 space-x-1 rounded cursor-pointer",href:t(e.address),onClick:e=>e.stopPropagation()},{children:[(0,r.jsx)("div",Object.assign({className:"text-xxs"},{children:(0,s.shortenAddress)(e.address)})),(0,r.jsx)(A.default,{})]}))};a.displayName="TokenLink",t.default=a},63407:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=i(n(84875));t.default=({className:e,content:t,disabled:n=!1,variant:i="light",onClick:A,children:s})=>(0,r.jsxs)("div",Object.assign({className:"group cursor-pointer",onClick:A},{children:[(0,r.jsx)("div",Object.assign({className:(0,o.default)("invisible absolute rounded shadow-lg py-1 px-2 right-0 w-full -mt-8 flex justify-center items-center text-center",e,{"bg-white text-black":"light"===i,"bg-black text-white":"dark"===i,"group-hover:visible group-hover:z-50":!n})},{children:t})),s]}))},59883:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=i(n(98711)),A=i(n(499)),s=n(53884),a=i(n(36652)),c=n(23200);t.default=({tokensInfo:e,onClickAccept:t,onClickReject:n})=>{const{getTokenExplorer:i}=(0,s.usePreferredExplorer)();return(0,r.jsxs)("div",Object.assign({className:"p-6 rounded-lg bg-jupiter-bg text-white max-h-[80vh] overflow-auto"},{children:[(0,r.jsxs)("div",Object.assign({className:"flex justify-between"},{children:[(0,r.jsx)("div",{}),(0,r.jsx)("div",Object.assign({className:"flex space-x-6 w-full justify-center"},{children:e.map((e=>(0,r.jsxs)("div",Object.assign({className:"flex flex-col items-center justify-center"},{children:[(0,r.jsx)(a.default,{tokenInfo:e,width:52,height:52}),(0,r.jsx)("div",Object.assign({className:"mt-2 font-semibold"},{children:e.symbol})),(0,r.jsxs)("a",Object.assign({href:i(e.address,"mainnet-beta"),target:"_blank",rel:"nofollow noreferrer",className:"mt-1 flex justify-center items-center rounded-lg py-1 px-2 bg-black-10 bg-black/30 cursor-pointer text-white/40 fill-current"},{children:[(0,r.jsx)("span",Object.assign({className:"mr-2 text-xxs"},{children:(0,c.shortenAddress)(e.address)})),(0,r.jsx)(A.default,{})]}))]}),e.address)))})),(0,r.jsx)("div",Object.assign({className:"mt-2 fill-current text-white-35 cursor-pointer",onClick:n},{children:(0,r.jsx)(o.default,{width:16,height:16})}))]})),(0,r.jsxs)("div",Object.assign({className:"mt-6 text-sm text-white "},{children:[(0,r.jsx)("div",{children:e.length>1?"These tokens are not on the strict list, make sure that the mint addresses are correct before confirming.":"This token is not on the strict list, make sure the mint address is correct before confirming"}),(0,r.jsxs)("a",Object.assign({href:"https://docs.jup.ag/notes/getting-your-token-on-jupiter",target:"_blank",rel:"noreferrer",className:"mt-4 flex justify-center items-center text-white/40"},{children:[(0,r.jsx)("span",{children:"Learn More"}),(0,r.jsx)("div",Object.assign({className:"ml-1 flex items-center fill-current"},{children:(0,r.jsx)(A.default,{})}))]}))]})),(0,r.jsx)("div",Object.assign({className:"w-full space-y-3 lg:space-y-0 lg:space-x-3 mt-7"},{children:(0,r.jsx)("button",Object.assign({type:"button",className:"bg-black text-white rounded-lg w-full py-2.5 px-6 font-semibold text-sm",onClick:t},{children:(0,r.jsx)("span",{children:"Confirm Selection"})}))}))]}))}},19622:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WalletButton=void 0;const i=n(11527),r=n(50959),o=n(23510),A=n(19078),s=n(23200),a=n(82528),c=n(93219);t.WalletButton=({setIsWalletModalOpen:e})=>{const{publicKey:t,connected:n,connecting:u,disconnect:l}=(0,A.useWalletPassThrough)(),[g,d]=(0,r.useState)(!1),h=(0,r.useRef)(null),{screen:p}=(0,o.useScreenState)(),f=(0,r.useMemo)((()=>null==t?void 0:t.toBase58()),[t]),m=window.Jupiter.passThroughWallet;return(0,s.useOutsideClick)(h,(()=>{d(!1)})),(n||u)&&f?(0,i.jsxs)("div",Object.assign({className:"cursor-pointer relative"},{children:[(0,i.jsx)("div",Object.assign({onClick:()=>d(!g)},{children:(0,i.jsx)(a.CurrentUserBadge,{})})),"Initial"===p&&!1===Boolean(m)?(0,i.jsx)("ul",Object.assign({"aria-label":"dropdown-list",className:g?"absolute block top-10 right-0 text-sm bg-black rounded-lg p-2 text-white dark:bg-white dark:text-black":"hidden",ref:h,role:"menu"},{children:(0,i.jsx)("li",Object.assign({onClick:()=>{d(!1),l()},role:"menuitem"},{children:(0,i.jsx)("span",{children:"Disconnect"})}))})):null]})):(0,i.jsx)(c.WalletModalButton,{setIsWalletModalOpen:e})}},51164:function(e,t,n){"use strict";var i=this&&this.__rest||function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r(0,o.jsxs)("svg",Object.assign({width:e,height:t,viewBox:"0 0 24 24",fill:"none",xmlns:"http://www.w3.org/2000/svg"},{children:[(0,o.jsx)("path",{d:"M12 0C18.6271 0 24 5.37288 24 12C24 18.6271 18.6269 24 12 24C5.37312 24 0 18.6286 0 12C0 5.37144 5.37216 0 12 0Z",fill:"#23C1AA"}),(0,o.jsx)("path",{d:"M10.79 14.55H12.89V14.355C12.89 13.925 13.01 13.55 13.25 13.23C13.49 12.91 13.765 12.605 14.075 12.315C14.315 12.085 14.545 11.85 14.765 11.61C14.985 11.36 15.165 11.09 15.305 10.8C15.455 10.5 15.53 10.16 15.53 9.78C15.53 9.25 15.395 8.75 15.125 8.28C14.855 7.8 14.45 7.41 13.91 7.11C13.38 6.8 12.725 6.645 11.945 6.645C11.305 6.645 10.725 6.765 10.205 7.005C9.69504 7.245 9.27504 7.575 8.94504 7.995C8.62504 8.415 8.42004 8.905 8.33004 9.465L10.415 9.99C10.475 9.61 10.64 9.31 10.91 9.09C11.19 8.86 11.515 8.745 11.885 8.745C12.315 8.745 12.64 8.85 12.86 9.06C13.09 9.26 13.205 9.52 13.205 9.84C13.205 10.15 13.09 10.425 12.86 10.665C12.63 10.895 12.37 11.155 12.08 11.445C11.77 11.765 11.475 12.14 11.195 12.57C10.925 13 10.79 13.545 10.79 14.205V14.55ZM10.73 18H12.98V15.75H10.73V18Z",fill:"white"})]})),u={};t.WalletIcon=e=>{var{wallet:t}=e,n=i(e,["wallet"]);const[r,a]=A.default.useState(!1),l=(null==t?void 0:t.name)?u[t.name]:void 0;let g="";return l?g=l.light:t&&t.icon&&(g=t.icon),t&&g&&!r?(0,o.jsx)(s.default,{width:n.width||24,height:n.height||24,src:g,alt:`${t.name} icon`,className:"object-contain",onError:()=>{a(!0)}}):(0,o.jsx)(c,{width:n.width||24,height:n.height||24})},t.WalletListItem=A.default.forwardRef((({handleClick:e,wallet:n},i)=>(0,o.jsxs)("li",Object.assign({ref:i,className:"relative list-none h-full flex justify-between p-4 cursor-pointer text-white bg-[#2C2D33] rounded-xl hover:bg-white/10",onClick:e},{children:[(0,o.jsx)("div",Object.assign({className:"absolute top-0 left-0 w-full h-full"},{children:(0,o.jsx)("div",{className:"absolute top-0 left-0 w-full h-full",style:{zIndex:-1}})})),(0,o.jsxs)("div",Object.assign({className:"flex items-center overflow-hidden"},{children:[(0,a.isMobile)()?(0,o.jsx)(t.WalletIcon,{wallet:n}):(0,o.jsx)(t.WalletIcon,{wallet:n,width:30,height:30}),(0,o.jsx)("div",Object.assign({className:"font-medium ml-3 truncate text-sm"},{children:n.name}))]}))]})))),t.WalletListItem.displayName="WalletListItem"},50841:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WalletModal=void 0;const o=n(11527),A=n(51164),s=n(79335),a=n(93200),c=r(n(88811)),u={[s.WalletReadyState.Installed]:1,[s.WalletReadyState.Loadable]:2,[s.WalletReadyState.NotDetected]:3,[s.WalletReadyState.Unsupported]:3};t.WalletModal=({setIsWalletModalOpen:e})=>{const{wallets:t,select:n}=(0,a.useWallet)();return(0,o.jsxs)("div",Object.assign({className:"flex flex-col h-full w-full py-4 px-2 bg-jupiter-bg"},{children:[(0,o.jsxs)("div",Object.assign({className:"flex w-full justify-between"},{children:[(0,o.jsx)("div",Object.assign({className:"text-white fill-current w-6 h-6 cursor-pointer",onClick:()=>e(!1)},{children:(0,o.jsx)(c.default,{width:24,height:24})})),(0,o.jsx)("div",Object.assign({className:"text-white"},{children:"Connect Wallet"})),(0,o.jsx)("div",{className:" w-6 h-6"})]})),(0,o.jsx)("div",Object.assign({className:"mt-7 overflow-auto"},{children:(r=t.sort(((e,t)=>u[e.readyState]-u[t.readyState])),(0,o.jsx)("div",Object.assign({className:"h-full overflow-y-auto space-y-2 webkit-scrollbar",translate:"no"},{children:r.map(((t,r)=>(0,o.jsx)("ul",{children:(0,o.jsx)(A.WalletListItem,{handleClick:r=>((t,r)=>i(void 0,void 0,void 0,(function*(){t.preventDefault();try{if(n(r.name),r.readyState===s.WalletReadyState.NotDetected)throw s.WalletReadyState.NotDetected;e(!1)}catch(e){}})))(r,t.adapter),wallet:t.adapter})},r)))})))}))]}));var r}},93219:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WalletModalButton=void 0;const i=n(11527),r=n(50959),o=n(19078);t.WalletModalButton=({setIsWalletModalOpen:e})=>{const{connecting:t}=(0,o.useWalletPassThrough)(),n=(0,r.useCallback)((t=>{e(!0)}),[]);return(0,i.jsx)("button",Object.assign({type:"button",className:"py-2 px-3 h-7 flex items-center rounded-2xl text-xs bg-[#191B1F] text-white",onClick:n},{children:t?(0,i.jsx)("span",{children:(0,i.jsx)("span",{children:"Connecting..."})}):(0,i.jsx)("span",{children:(0,i.jsx)("span",{children:"Connect Wallet"})})}))}},52169:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(93219),t),r(n(19622),t)},17725:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=n(50959),A=i(n(51586)),s=i(n(48356)),a=n(57139),c=n(53183),u=n(50841),l=n(18090),g=n(23510),d=n(19078),h=i(n(40603)),p=i(n(59883));t.default=({setIsWalletModalOpen:e,isWalletModalOpen:t})=>{const{wallet:n}=(0,d.useWalletPassThrough)(),{accounts:i}=(0,a.useAccounts)(),{tokenMap:f}=(0,c.useTokenContext)(),{form:m,setForm:I,setErrors:y,selectedSwapRoute:B,formProps:{initialOutputMint:C,fixedOutputMint:w},jupiter:{loading:E}}=(0,l.useSwapContext)(),{setScreen:Q}=(0,g.useScreenState)(),b=(0,o.useMemo)((()=>{var e;return null===(e=null==n?void 0:n.adapter.publicKey)||void 0===e?void 0:e.toString()}),[null==n?void 0:n.adapter.publicKey]),k=(0,o.useMemo)((()=>{var e;return m.fromMint&&(null===(e=i[m.fromMint])||void 0===e?void 0:e.balance)||0}),[b,i,m.fromMint]),[v,S]=(0,o.useState)(!1);(0,o.useEffect)((()=>m.fromValue&&m.fromMint&&m.toMint&&m.toValue&&B&&!E?Number(m.fromValue)>k?(y({fromValue:{title:"Insufficient balance",message:""}}),void S(!0)):(y({}),void S(!1)):(y({}),void S(!0))),[m,k]);const[M,D]=(0,o.useState)(null),[N,T]=(0,o.useState)(!1),[P,O]=(0,o.useState)(null),F=(0,o.useCallback)(((e,t=!1)=>{var n;0===(null===(n=e.tags)||void 0===n?void 0:n.length)&&!1===t?O(e):(I("fromMint"===M?t=>Object.assign(Object.assign(Object.assign({},t),{fromMint:e.address,fromValue:""}),t.toMint===e.address?{toMint:t.fromMint}:void 0):t=>Object.assign(Object.assign(Object.assign({},t),{toMint:e.address,toValue:""}),t.fromMint===e.address?{fromMint:t.toMint}:void 0)),D(null))}),[M]),R=(0,o.useMemo)((()=>{let e=[...f.values()];return w&&(e=e.filter((e=>e.address!==C))),e}),[f,w,C]),G=(0,o.useCallback)((()=>{Q("Confirmation")}),[]);return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("form",Object.assign({onSubmit:G},{children:(0,r.jsx)(A.default,{onSubmit:G,isDisabled:v,setSelectPairSelector:D,setIsWalletModalOpen:e,setShowRouteSelector:T})})),null!==M?(0,r.jsx)("div",Object.assign({className:"absolute top-0 left-0 h-full w-full bg-jupiter-bg rounded-lg overflow-hidden"},{children:(0,r.jsx)(s.default,{onSubmit:F,tokenInfos:R,onClose:()=>D(null)})})):null,N?(0,r.jsx)("div",Object.assign({className:"absolute top-0 left-0 h-full w-full bg-jupiter-bg rounded-lg overflow-hidden"},{children:(0,r.jsx)(h.default,{onClose:()=>T(!1)})})):null,t?(0,r.jsx)("div",Object.assign({className:"absolute h-full w-full flex justify-center items-center bg-black/50 rounded-lg overflow-hidden"},{children:(0,r.jsx)(u.WalletModal,{setIsWalletModalOpen:e})})):null,P?(0,r.jsx)("div",Object.assign({className:"absolute h-full w-full flex justify-center items-center bg-black/50 rounded-lg overflow-hidden"},{children:(0,r.jsx)(p.default,{tokensInfo:[P],onClickAccept:()=>{F(P,!0),O(null)},onClickReject:()=>O(null)})})):null]})}},8057:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const r=n(11527),o=n(23510),A=n(18090),s=i(n(88811)),a=i(n(56757)),c=i(n(94115)),u=i(n(80873)),l=i(n(78712));t.default=()=>{const{fromTokenInfo:e,toTokenInfo:t,onSubmit:n,selectedSwapRoute:i,jupiter:{routes:g,loading:d,refresh:h}}=(0,A.useSwapContext)(),[p]=(0,a.default)(),{setScreen:f}=(0,o.useScreenState)(),m=()=>{h(),f("Initial")};return(0,r.jsxs)("div",Object.assign({className:"flex flex-col h-full w-full py-4 px-2"},{children:[(0,r.jsxs)("div",Object.assign({className:"flex w-full justify-between"},{children:[(0,r.jsx)("div",Object.assign({className:"text-white fill-current w-6 h-6 cursor-pointer",onClick:m},{children:(0,r.jsx)(s.default,{width:24,height:24})})),(0,r.jsx)("div",Object.assign({className:"text-white"},{children:"Review Order"})),(0,r.jsx)("div",{className:" w-6 h-6"})]})),(0,r.jsx)("div",{children:g&&i&&e&&t?(0,r.jsx)(c.default,{routes:g,selectedSwapRoute:i,fromTokenInfo:e,toTokenInfo:t,loading:d,showFullDetails:!0,containerClassName:"bg-[#25252D] border-none"}):null}),p?(0,r.jsx)(u.default,Object.assign({size:"lg",className:"w-full mt-4 disabled:opacity-50 !p-0",type:"button",onClick:m},{children:(0,r.jsx)("span",Object.assign({className:"text-sm"},{children:"Refresh"}))})):(0,r.jsx)(u.default,Object.assign({size:"lg",className:"w-full mt-4 disabled:opacity-50",type:"button",onClick:()=>{f("Swapping"),n()}},{children:(0,r.jsx)(l.default,{children:"Confirm"})}))]}))}},40603:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.PADDING_TOP=t.ROUTE_HEIGHT=void 0;const r=n(11527),o=n(50959),A=n(18090),s=i(n(88811)),a=n(37012),c=n(37012),u=i(n(84875)),l=n(53183),g=n(23200);t.ROUTE_HEIGHT=64,t.PADDING_TOP=18;const d=(0,o.memo)((e=>{const{data:n,index:i,style:o}=e,A=n.availableRoutes[i],s=n.fromTokenInfo,a=n.toTokenInfo,c=n.selectedSwapRoute==n.availableRoutes[i],u=A?A.marketInfos.map((({label:e})=>e)).join(", "):"",l=c?"bg-jupiter-swap-gradient":"";return(0,r.jsxs)("li",Object.assign({className:`cursor-pointer list-none text-xs flex rounded-xl ${l}`,style:Object.assign(Object.assign({maxHeight:t.ROUTE_HEIGHT,height:t.ROUTE_HEIGHT},o),{top:Number(o.top)+18}),translate:"no"},{children:[0===i&&(0,r.jsx)("div",Object.assign({className:"absolute px-2 py-1 font-semibold text-white p-0.5 bg-[#FBA43A]",style:{borderRadius:4,left:0,top:-14,fontSize:11}},{children:(0,r.jsx)("span",{children:"Best price"})})),(0,r.jsxs)("div",Object.assign({className:`flex items-center w-full justify-between rounded-xl space-x-4 m-0.5 p-4 bg-[#2C2D33] ${c?"":"hover:bg-black/10"} `,onClick:()=>n.onSubmit(A)},{children:[(0,r.jsx)("div",Object.assign({className:"text-white/50 w-[50%]"},{children:u})),(0,r.jsx)("div",Object.assign({className:"w-[50%] text-right"},{children:(0,r.jsx)("p",Object.assign({className:"text-sm font-semibold text-white truncate"},{children:"ExactOut"===n.swapMode?`${(0,g.fromLamports)(A.inAmount,s.decimals||6)} ${s.symbol}`:`${(0,g.fromLamports)(A.outAmount,a.decimals||6)} ${a.symbol}`}))}))]}))]}))}),c.areEqual);t.default=({onClose:e})=>{const{form:{fromMint:n,toMint:i},selectedSwapRoute:c,setSelectedSwapRoute:g,formProps:{swapMode:h},jupiter:{routes:p}}=(0,A.useSwapContext)(),{tokenMap:f}=(0,l.useTokenContext)(),[m,I]=(0,o.useMemo)((()=>[n?f.get(n):null,i?f.get(i):null]),[n,i,f]),y=(0,o.useRef)(),B=(0,o.useMemo)((()=>p||[]),[p]);return(0,r.jsxs)("div",Object.assign({className:"flex flex-col h-full w-full py-4 px-2"},{children:[(0,r.jsxs)("div",Object.assign({className:"flex w-full justify-between"},{children:[(0,r.jsx)("div",Object.assign({className:"text-white fill-current w-6 h-6 cursor-pointer",onClick:()=>{e()}},{children:(0,r.jsx)(s.default,{width:24,height:24})})),(0,r.jsx)("div",Object.assign({className:"text-white"},{children:"Select Route"})),(0,r.jsx)("div",{className:" w-6 h-6"})]})),(0,r.jsx)("p",Object.assign({className:"text-xs text-white/50 my-3"},{children:"Jupiter automatically selects a route with the best price, however you can select a route manually."})),(0,r.jsx)("div",Object.assign({className:"mt-2 overflow-y-auto overflow-x-hidden webkit-scrollbar",style:{flexGrow:1}},{children:(B||[]).length>0?(0,r.jsx)(a.VariableSizeList,Object.assign({ref:y,height:B.length*t.ROUTE_HEIGHT+t.PADDING_TOP,itemCount:B.length,itemSize:()=>t.ROUTE_HEIGHT,width:"100%",itemData:{availableRoutes:B,fromTokenInfo:m,toTokenInfo:I,selectedSwapRoute:c,onSubmit:e=>{g(e)},swapMode:h},className:(0,u.default)("overflow-y-scroll mr-1 min-h-[12rem] webkit-scrollbar pt-4")},{children:d})):null}))]}))}},96423:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return r(t,e),t},A=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0});const s=n(11527),a=n(50959),c=o(n(36632)),u=n(23510),l=n(18090),g=A(n(80873)),d=A(n(78712)),h=A(n(16038)),p=A(n(51541)),f=A(n(94115)),m=n(23200),I=n(53884),y=()=>(0,s.jsxs)("svg",Object.assign({width:"40",height:"40",viewBox:"0 0 40 40",fill:"none",xmlns:"http://www.w3.org/2000/svg"},{children:[(0,s.jsxs)("g",Object.assign({clipPath:"url(#clip0_7547_116874)"},{children:[(0,s.jsx)("circle",{cx:"20",cy:"20",r:"20",fill:"#F04A44"}),(0,s.jsx)("path",{d:"M19.8444 25.4321C18.6773 25.4332 17.7205 24.5092 17.6793 23.3431L17.1718 9.04107C17.1507 8.45326 17.3706 7.88344 17.7786 7.46056C18.1867 7.03768 18.7492 6.7998 19.337 6.7998H20.3519C20.9397 6.7998 21.5021 7.03768 21.9102 7.46056C22.3183 7.88344 22.5382 8.45329 22.5171 9.04107L22.0096 23.3431C21.9684 24.5092 21.0116 25.4332 19.8444 25.4321Z",fill:"white"}),(0,s.jsx)("path",{d:"M22.8893 30.4989C22.8893 32.1809 21.5266 33.5436 19.8446 33.5436C18.1626 33.5436 16.7998 32.1809 16.7998 30.4989C16.7998 28.8169 18.1626 27.4541 19.8446 27.4541C21.5266 27.4541 22.8893 28.8169 22.8893 30.4989Z",fill:"white"})]})),(0,s.jsx)("defs",{children:(0,s.jsx)("clipPath",Object.assign({id:"clip0_7547_116874"},{children:(0,s.jsx)("rect",{width:"40",height:"40",fill:"white"})}))})]}));t.default=()=>{const{displayMode:e,lastSwapResult:t,reset:n,scriptDomain:i,swapping:{totalTxs:r,txStatus:o},selectedSwapRoute:A,fromTokenInfo:B,toTokenInfo:C,jupiter:{routes:w,refresh:E}}=(0,l.useSwapContext)(),{screen:Q,setScreen:b}=(0,u.useScreenState)(),[k,v]=(0,a.useState)(""),S=()=>{n(),v(""),b("Initial"),E()};(0,a.useEffect)((()=>{var e;if("Swapping"===Q)return t&&"error"in t?(v((null===(e=t.error)||void 0===e?void 0:e.message)||""),void(window.Jupiter.onSwapError&&window.Jupiter.onSwapError({error:t.error}))):void(t&&"txid"in t&&window.Jupiter.onSuccess&&window.Jupiter.onSuccess({txid:t.txid,swapResult:t}))}),[t]);const M=()=>{e&&"modal"!==e||window.Jupiter.close(),n(),b("Initial")},D=(0,a.useMemo)((()=>{if(o.find((e=>"fail"===e.status))||k)return"error";const e=o.every((e=>"loading"!==e.status));return o.length>0&&e?"success":"loading"}),[o]),{explorer:N,getExplorer:T}=(0,I.usePreferredExplorer)();return(0,s.jsxs)("div",Object.assign({className:"flex flex-col h-full w-full py-4 px-2"},{children:[k||"error"===D?(0,s.jsx)("div",Object.assign({className:"flex justify-center"},{children:(0,s.jsxs)("div",Object.assign({className:"flex flex-col items-center justify-center text-center mt-12"},{children:[(0,s.jsx)(y,{}),(0,s.jsx)("p",Object.assign({className:"text-white mt-2"},{children:"Swap Failed"})),(0,s.jsx)("p",Object.assign({className:"text-white/50 text-xs mt-2"},{children:"We were unable to complete the swap, please try again."})),k?(0,s.jsx)("p",Object.assign({className:"text-white/50 text-xs mt-2"},{children:k})):"",(0,s.jsx)(g.default,Object.assign({size:"lg",className:"w-full mt-6 disabled:opacity-50",type:"button",onClick:()=>{n({resetValues:!1}),v(""),b("Initial"),E()}},{children:(0,s.jsx)(d.default,{children:"Retry"})}))]}))})):null,k||"loading"!==D?null:(0,s.jsx)((()=>(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",Object.assign({className:"flex w-full justify-center"},{children:(0,s.jsx)("div",Object.assign({className:"text-white"},{children:"loading"===D?"Performing Swap":""}))})),(0,s.jsx)("div",Object.assign({className:"flex w-full justify-center items-center mt-9"},{children:(0,s.jsx)("div",Object.assign({className:"h-16 w-16"},{children:(0,s.jsx)(c.default,{src:`${i}/swap-animation.riv`,layout:new c.Layout({fit:c.Fit.Contain,alignment:c.Alignment.TopCenter})})}))})),0===r?(0,s.jsx)("span",Object.assign({className:"text-white text-center mt-8 text-sm px-4"},{children:"Awaiting approval from your wallet..."})):null,r>1?(0,s.jsx)("span",Object.assign({className:"text-white text-center mt-8 text-sm px-4"},{children:"Because of transaction size limits, we need to split up the transactions"})):"",(0,s.jsx)("div",Object.assign({className:"flex flex-col w-full justify-center items-center px-5 mt-7"},{children:o&&o.map((e=>(0,s.jsxs)("div",Object.assign({className:"flex items-center w-full rounded-xl p-4 bg-[#25252D] mb-2"},{children:[(0,s.jsx)(h.default,{spinnerColor:"white"}),(0,s.jsxs)("div",Object.assign({className:"ml-4 text-white text-sm"},{children:["SETUP"===e.txDescription?(0,s.jsx)("span",{children:"Setup"}):null,"SWAP"===e.txDescription?(0,s.jsx)("span",{children:"Swap"}):null,"CLEANUP"===e.txDescription?(0,s.jsx)("span",{children:"Cleanup"}):null]}))]}),e.txid)))}))]})),{}),k||"success"!==D?null:(0,s.jsx)((()=>{if(!(t&&B&&C&&w&&A))return null;const n=t.txid?T(t.txid):null;return(0,s.jsxs)(s.Fragment,{children:[(0,s.jsxs)("div",Object.assign({className:"flex justify-center mt-12"},{children:[(0,s.jsx)("div",{className:"absolute top-[52px] bg-[#23C1AA] bg-opacity-[15%] rounded-full w-20 h-20 flex justify-center items-center animate-pulse"}),(0,s.jsx)("div",Object.assign({className:"h-[56px] w-[56px] bg-white rounded-full"},{children:(0,s.jsx)(p.default,{})}))]})),(0,s.jsxs)("div",Object.assign({className:"flex flex-col justify-center items-center"},{children:[(0,s.jsx)("p",Object.assign({className:"mt-5 text-white text-xl font-semibold"},{children:"Swap successful"})),(0,s.jsxs)("div",Object.assign({className:"mt-4 bg-[#25252D] rounded-xl overflow-y-auto w-full webkit-scrollbar py-4 max-h-[260px]"},{children:[(0,s.jsxs)("div",Object.assign({className:"mt-2 flex flex-col items-center justify-center text-center px-4"},{children:[(0,s.jsxs)("p",Object.assign({className:"text-xs font-semibold text-white/75"},{children:["Swapped ",(0,m.fromLamports)(t.inputAmount,B.decimals)," ",B.symbol," to"]})),(0,s.jsxs)("p",Object.assign({className:"text-2xl font-semibold text-white/75"},{children:[(0,m.fromLamports)(t.outputAmount,C.decimals)," ",C.symbol]}))]})),(0,s.jsx)(f.default,{routes:w,selectedSwapRoute:A,fromTokenInfo:B,toTokenInfo:C,loading:!1,showFullDetails:!0,containerClassName:"bg-[#25252D] border-none mt-0"})]}))]})),n?(0,s.jsxs)("a",Object.assign({href:n,target:"_blank",rel:"noopener noreferrer",className:"cursor-pointer text-white/50 mt-2 ml-2 text-xs hover:underline"},{children:["View on ",N]})):null,(0,s.jsxs)("div",Object.assign({className:"mt-auto px-5 pb-4 flex space-x-2"},{children:[(0,s.jsx)(g.default,Object.assign({size:"lg",className:"w-full mt-4",type:"button",onClick:S},{children:(0,s.jsx)(d.default,{children:(0,s.jsx)("span",Object.assign({className:"text-sm"},{children:"Swap More"}))})})),"integrated"!==e?(0,s.jsx)(g.default,Object.assign({size:"lg",className:"w-full mt-4",type:"button",onClick:M},{children:(0,s.jsx)("span",Object.assign({className:"text-sm"},{children:"Close"}))})):null]}))]})}),{})]}))}},56757:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return r(t,e),t};Object.defineProperty(t,"__esModule",{value:!0});const A=o(n(50959)),s=n(18090),a=n(56378);t.default=()=>{const{jupiter:{lastRefreshTimestamp:e}}=(0,s.useSwapContext)(),[t,n]=A.default.useState(!1),[i,r]=(0,A.useState)(0);return(0,A.useEffect)((()=>{const t=setInterval((()=>{const t=Date.now()>e+a.ROUTE_CACHE_DURATION,i=(Date.now()-(e+a.ROUTE_CACHE_DURATION))/1e3;r(i/(a.ROUTE_CACHE_DURATION/1e3)*100),n(t)}),1e3);return()=>clearInterval(t)}),[e]),[t,i]}},38865:(e,t,n)=>{"use strict";var i=n(14224);Object.defineProperty(t,"__esModule",{value:!0}),t.INITIAL_FORM_CONFIG=t.SOL_MINT_TOKEN_INFO=t.WRAPPED_SOL_MINT=t.JUPITER_DEFAULT_RPC=void 0;const r=n(94067),o=n(97212);t.JUPITER_DEFAULT_RPC=i.env.NEXT_PUBLIC_JUPITER_DEFAULT_RPC||"https://neat-hidden-sanctuary.solana-mainnet.discover.quiknode.pro/2af5315d336f9ae920028bbb90a73b724dc1bbed",t.WRAPPED_SOL_MINT=new o.PublicKey("So11111111111111111111111111111111111111112"),t.SOL_MINT_TOKEN_INFO={chainId:101,address:"So11111111111111111111111111111111111111112",symbol:"SOL",name:"Wrapped SOL",decimals:9,logoURI:"https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png",tags:[],extensions:{website:"https://solana.com/",serumV3Usdc:"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusDBzvT",serumV3Usdt:"HWHvQhFmJB3NUcu1aihKmrKegfVxBEHzwVX6yZCKEsi1",coingeckoId:"solana"}},t.INITIAL_FORM_CONFIG=Object.freeze({useWalletPassthrough:!1,strictTokenList:!0,defaultExplorer:"Solana Explorer",formProps:{fixedInputMint:!1,fixedOutputMint:!1,swapMode:r.SwapMode.ExactIn,fixedAmount:!1,initialAmount:"",initialInputMint:"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",initialOutputMint:t.WRAPPED_SOL_MINT.toString()}})},40180:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.AutoConnectProvider=t.useAutoConnect=t.AutoConnectContext=void 0;const i=n(11527),r=n(93200),o=n(50959);t.AutoConnectContext=(0,o.createContext)({}),t.useAutoConnect=function(){return(0,o.useContext)(t.AutoConnectContext)},t.AutoConnectProvider=({children:e})=>{const[n,o]=(0,r.useLocalStorage)("autoConnect",!0);return(0,i.jsx)(t.AutoConnectContext.Provider,Object.assign({value:{autoConnect:n,setAutoConnect:o}},{children:e}))}},90182:(e,t,n)=>{"use strict";var i=n(49500);Object.defineProperty(t,"__esModule",{value:!0}),t.ContextProvider=void 0;const r=n(11527),o=n(93200),A=n(97212),s=n(50959),a=n(40180),c=n(69440),u=n(86072),l=n(429),g=n(19155),d=n(70077),h=n(53884),p=({endpoint:e,children:t})=>{const{autoConnect:n}=(0,a.useAutoConnect)(),{networkConfiguration:h}=(0,c.useNetworkConfiguration)(),p=h,f=(0,s.useMemo)((()=>null!=e?e:(0,A.clusterApiUrl)(p)),[p]),m=(()=>{if("undefined"!=typeof window)return window.Jupiter.passThroughWallet})(),I=(0,s.useMemo)((()=>m?[]:[new u.PhantomWalletAdapter,new l.SolflareWalletAdapter,new g.BackpackWalletAdapter,new d.GlowWalletAdapter]),[p]),y=(0,s.useCallback)((e=>{i.error({type:"error",message:e.message?`${e.name}: ${e.message}`:e.name})}),[]);return(0,r.jsx)(o.ConnectionProvider,Object.assign({endpoint:f},{children:(0,r.jsx)(o.WalletProvider,Object.assign({wallets:I,onError:y,autoConnect:n},{children:t}))}))};t.ContextProvider=({endpoint:e,defaultExplorer:t,children:n})=>(0,r.jsx)(r.Fragment,{children:(0,r.jsx)(c.NetworkConfigurationProvider,{children:(0,r.jsx)(a.AutoConnectProvider,{children:(0,r.jsx)(p,Object.assign({endpoint:e},{children:(0,r.jsx)(h.PreferredExplorerProvider,Object.assign({defaultExplorer:t},{children:n}))}))})})})},69440:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.NetworkConfigurationProvider=t.useNetworkConfiguration=t.NetworkConfigurationContext=void 0;const i=n(11527),r=n(93200),o=n(50959);t.NetworkConfigurationContext=(0,o.createContext)({}),t.useNetworkConfiguration=function(){return(0,o.useContext)(t.NetworkConfigurationContext)},t.NetworkConfigurationProvider=({children:e})=>{const[n,o]=(0,r.useLocalStorage)("network","mainnet-beta");return(0,i.jsx)(t.NetworkConfigurationContext.Provider,Object.assign({value:{networkConfiguration:n,setNetworkConfiguration:o}},{children:e}))}},23510:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.ScreenProvider=t.useScreenState=t.ScreenStateContext=void 0;const i=n(11527),r=n(50959);t.ScreenStateContext=(0,r.createContext)({screen:"Initial",setScreen(){}}),t.useScreenState=function(){return(0,r.useContext)(t.ScreenStateContext)},t.ScreenProvider=({children:e})=>{const[n,o]=(0,r.useState)("Initial");return(0,i.jsx)(t.ScreenStateContext.Provider,Object.assign({value:{screen:n,setScreen:o}},{children:e}))}},3305:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SlippageConfigProvider=t.useSlippageConfig=t.SlippageConfigContext=t.DEFAULT_SLIPPAGE=void 0;const i=n(11527),r=n(50959);t.DEFAULT_SLIPPAGE=.5,t.SlippageConfigContext=(0,r.createContext)({}),t.useSlippageConfig=function(){return(0,r.useContext)(t.SlippageConfigContext)},t.SlippageConfigProvider=({children:e})=>{const[n,o]=(0,r.useState)(t.DEFAULT_SLIPPAGE);return(0,i.jsx)(t.SlippageConfigContext.Provider,Object.assign({value:{slippage:n,setSlippage:o}},{children:e}))}},18090:function(e,t,n){"use strict";var i=n(49500),r=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.SwapContextProvider=t.PRIORITY_MAXIMUM_SUGGESTED=t.PRIORITY_TURBO=t.PRIORITY_HIGH=t.PRIORITY_NONE=t.useSwapContext=t.SwapContext=t.initialSwapContext=void 0;const A=n(11527),s=n(40065),a=n(94067),c=n(97212),u=o(n(62496)),l=o(n(48318)),g=n(50959),d=n(38865),h=n(23200),p=n(57139),f=n(3305),m=n(53183),I=n(19078);t.initialSwapContext={form:{fromMint:"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",toMint:d.WRAPPED_SOL_MINT.toString(),fromValue:"",toValue:""},setForm(){},errors:{},setErrors(){},fromTokenInfo:void 0,toTokenInfo:void 0,selectedSwapRoute:null,setSelectedSwapRoute(){},onSubmit:()=>r(void 0,void 0,void 0,(function*(){return null})),lastSwapResult:null,displayMode:"modal",formProps:{swapMode:a.SwapMode.ExactIn,initialAmount:void 0,fixedAmount:void 0,initialInputMint:void 0,fixedInputMint:void 0,initialOutputMint:void 0,fixedOutputMint:void 0},scriptDomain:"",swapping:{totalTxs:0,txStatus:[]},reset(){},jupiter:{routes:[],allTokenMints:[],routeMap:new Map,exchange:void 0,loading:!1,refresh(){},lastRefreshTimestamp:0,error:void 0,asLegacyTransaction:!1,setAsLegacyTransaction(){},priorityFeeInSOL:0,setPriorityFeeInSOL(){}}},t.SwapContext=(0,g.createContext)(t.initialSwapContext),t.useSwapContext=function(){return(0,g.useContext)(t.SwapContext)},t.PRIORITY_NONE=0,t.PRIORITY_HIGH=5e-6,t.PRIORITY_TURBO=5e-4,t.PRIORITY_MAXIMUM_SUGGESTED=.01,t.SwapContextProvider=e=>{var n,o;const{displayMode:y,scriptDomain:B,asLegacyTransaction:C,setAsLegacyTransaction:w,formProps:E,children:Q}=e,{tokenMap:b}=(0,m.useTokenContext)(),{wallet:k}=(0,I.useWalletPassThrough)(),{refresh:v}=(0,p.useAccounts)(),S=(0,g.useMemo)((()=>{var e;return null===(e=null==k?void 0:k.adapter.publicKey)||void 0===e?void 0:e.toString()}),[null==k?void 0:k.adapter.publicKey]),M=(0,g.useMemo)((()=>Object.assign(Object.assign({},t.initialSwapContext.formProps),E)),[E]),[D,N]=(0,g.useState)({fromMint:null!==(n=null==M?void 0:M.initialInputMint)&&void 0!==n?n:"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",toMint:null!==(o=null==M?void 0:M.initialOutputMint)&&void 0!==o?o:d.WRAPPED_SOL_MINT.toString(),fromValue:"",toValue:""}),[T,P]=(0,g.useState)({}),O=(0,g.useMemo)((()=>(null==M?void 0:M.swapMode)?a.SwapMode[null==M?void 0:M.swapMode]:a.SwapMode.ExactIn),[null==M?void 0:M.swapMode]),F=(0,g.useMemo)((()=>D.fromMint?b.get(D.fromMint):null),[D.fromMint,b]),R=(0,g.useMemo)((()=>D.toMint?b.get(D.toMint):null),[D.toMint,b]),G=(0,g.useCallback)((()=>{if(!(null==M?void 0:M.initialAmount)||0===b.size||!F||!R)return;const e=e=>{var t;const n=e?b.get(e):void 0;if(n)return String((0,h.fromLamports)(l.default.BigInt(null!==(t=M.initialAmount)&&void 0!==t?t:0),n.decimals))};O===a.SwapMode.ExactOut?N((t=>{var n;return Object.assign(Object.assign({},t),{toValue:null!==(n=e(t.toMint))&&void 0!==n?n:""})})):N((t=>{var n;return Object.assign(Object.assign({},t),{fromValue:null!==(n=e(t.fromMint))&&void 0!==n?n:""})}))}),[null==M?void 0:M.initialAmount,O,b]);(0,g.useEffect)((()=>{G()}),[null==M?void 0:M.initialAmount,O,b]);const x=(0,g.useMemo)((()=>O===a.SwapMode.ExactOut?D.toValue&&R?(0,h.toLamports)(Number(D.toValue),Number(R.decimals)):l.default.BigInt(0):D.fromValue&&F?(0,h.toLamports)(Number(D.fromValue),Number(F.decimals)):l.default.BigInt(0)),[D.fromValue,D.fromMint,F,D.toValue,D.toMint,R,O]),{slippage:U}=(0,f.useSlippageConfig)(),_=l.default.BigInt(x),{routes:L,allTokenMints:K,routeMap:Y,exchange:j,loading:W,refresh:J,lastRefreshTimestamp:q,error:Z}=(0,a.useJupiter)({amount:_,inputMint:(0,g.useMemo)((()=>D.fromMint?new c.PublicKey(D.fromMint):c.PublicKey.default),[D.fromMint]),outputMint:(0,g.useMemo)((()=>D.toMint?new c.PublicKey(D.toMint):c.PublicKey.default),[D.toMint]),swapMode:O,slippageBps:Math.ceil(100*U),asLegacyTransaction:C});(0,g.useEffect)((()=>J()),[U]);const[z,H]=(0,g.useState)(null);(0,g.useEffect)((()=>{L&&0!==L.length?H(L[0]):H(null)}),[O,L]),(0,g.useEffect)((()=>{N((e=>{const t=Object.assign({},e);return O===a.SwapMode.ExactIn?t.toValue=(null==z?void 0:z.outAmount)?String((0,h.fromLamports)(null==z?void 0:z.outAmount,(null==R?void 0:R.decimals)||0)):"":t.fromValue=(null==z?void 0:z.inAmount)?String((0,h.fromLamports)(null==z?void 0:z.inAmount,(null==F?void 0:F.decimals)||0)):"",t}))}),[z,F,R,O]);const[V,X]=(0,g.useState)(0),[$,ee]=(0,g.useState)([]),te=(e,t,n,i)=>r(void 0,void 0,void 0,(function*(){X(t),$.find((t=>t.txid===e))||ee((t=>[...t,{txid:e,txDescription:n,status:"loading"}]));const r=!((yield i)instanceof Error);ee((t=>{const n=t.find((t=>t.txid===e));return n&&(n.status=r?"success":"fail"),[...t]}))})),[ne,ie]=(0,g.useState)(null),re=(0,g.useCallback)((()=>r(void 0,void 0,void 0,(function*(){if(!S||!(null==k?void 0:k.adapter)||!z)return null;try{const e=yield j({wallet:null==k?void 0:k.adapter,routeInfo:z,onTransaction:te,computeUnitPriceMicroLamports:ae});return ie(e),e}catch(e){return i.log("Swap error",e),null}}))),[S,z]),oe=(0,g.useCallback)((({resetValues:e}={resetValues:!0})=>{setTimeout((()=>{e&&(N(Object.assign(Object.assign({},t.initialSwapContext.form),M)),G()),H(null),P(t.initialSwapContext.errors),ie(t.initialSwapContext.lastSwapResult),ee(t.initialSwapContext.swapping.txStatus),X(t.initialSwapContext.swapping.totalTxs),v()}),0)}),[G]),[Ae,se]=(0,g.useState)(t.PRIORITY_NONE),ae=(0,g.useMemo)((()=>void 0===Ae?0:new u.default(Ae).mul(Math.pow(10,9)).mul(Math.pow(10,6)).div(14e5).round().toNumber()),[Ae]);return(0,A.jsx)(t.SwapContext.Provider,Object.assign({value:{form:D,setForm:N,errors:T,setErrors:P,fromTokenInfo:F,toTokenInfo:R,selectedSwapRoute:z,setSelectedSwapRoute:H,onSubmit:re,lastSwapResult:ne,reset:oe,displayMode:y,formProps:M,scriptDomain:B,swapping:{totalTxs:V,txStatus:$},jupiter:{routes:l.default.GT(_,s.ZERO)?L:void 0,allTokenMints:K,routeMap:Y,exchange:j,loading:W,refresh:()=>{J(),v()},lastRefreshTimestamp:q,error:Z,asLegacyTransaction:C,setAsLegacyTransaction:w,priorityFeeInSOL:Ae,setPriorityFeeInSOL:se}}},{children:Q}))}},53183:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return r(t,e),t},A=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.useTokenContext=t.TokenContextProvider=t.CLUSTER_TO_CHAIN_ID=void 0;const s=n(11527),a=o(n(50959)),c=n(59985),u=n(93200);t.CLUSTER_TO_CHAIN_ID={"mainnet-beta":c.ENV.MainnetBeta,testnet:c.ENV.Testnet,devnet:c.ENV.Devnet,localnet:c.ENV.Devnet};const l=a.default.createContext({tokenMap:new Map,isLoaded:!1,preferredTokenListMode:"strict",setPreferredTokenListMode(){}});t.TokenContextProvider=function({strictTokenList:e,children:n}){const{connection:i}=(0,u.useConnection)(),r=(0,a.useMemo)((()=>void 0===e||e?"strict":"all"),[e]),[o,g]=(0,a.useState)(r),[{tokenMap:d,isLoaded:h},p]=(0,a.useState)({isLoaded:!1,tokenMap:new Map});return(0,a.useEffect)((()=>{((e,n)=>A(void 0,void 0,void 0,(function*(){const e=yield("strict"===n?yield fetch("https://token.jup.ag/strict"):yield fetch("https://token.jup.ag/all")).json();return new c.TokenListContainer(e).filterByChainId(t.CLUSTER_TO_CHAIN_ID["mainnet-beta"]).getList().reduce(((e,t)=>(e.set(t.address,t),e)),new Map)})))(0,o).then((e=>A(this,void 0,void 0,(function*(){p({isLoaded:!0,tokenMap:e})}))))}),[i,o]),(0,s.jsx)(l.Provider,Object.assign({value:{tokenMap:d,isLoaded:h,preferredTokenListMode:o,setPreferredTokenListMode:g}},{children:n}))},t.useTokenContext=function(){const e=(0,a.useContext)(l);if(!e)throw new Error("TokenContext not found");return e}},69160:function(e,t,n){"use strict";var i=n(49500),r=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.USDValueProvider=t.useUSDValueProvider=t.USDValueProviderContext=void 0;const o=n(11527),A=n(74830),s=n(50959),a=n(81185),c=n(23200),u=n(57139),l=n(53183),g=n(18090),d=6e4;t.USDValueProviderContext=(0,s.createContext)({}),t.useUSDValueProvider=function(){return(0,s.useContext)(t.USDValueProviderContext)};const h=e=>(new Date).getTime()-e>=d;t.USDValueProvider=({children:e})=>{const{accounts:n}=(0,u.useAccounts)(),{tokenMap:p}=(0,l.useTokenContext)(),{fromTokenInfo:f,toTokenInfo:m}=(0,g.useSwapContext)(),[I,y]=(0,a.useLocalStorage)("jupiter-terminal-cached-token-prices",{}),[B,C]=(0,s.useState)(new Set),[w,E]=(0,s.useState)([]);(0,a.useDebounce)((()=>{E(Array.from(B))}),250,[B]);const Q=(0,s.useCallback)((e=>r(void 0,void 0,void 0,(function*(){const{data:t}=yield fetch(`https://price.jup.ag/v4/price?ids=${e.join(",")}`).then((e=>e.json())),n=(new Date).getTime();return e.reduce(((i,r,o)=>{const A=t[r];return A?Object.assign(Object.assign({},i),{result:Object.assign(Object.assign({},i.result),{[A.id]:{usd:A.price,timestamp:n}})}):Object.assign(Object.assign({},i),{failed:[...i.failed,e[o]]})}),{result:{},failed:[]})}))),[]),{data:b,isFetched:k}=(0,A.useQuery)([w,Object.keys(I||{}).length],(()=>r(void 0,void 0,void 0,(function*(){let e={};const t=[];if(w.forEach((n=>{if(n){const i=(I||{})[n];if(!i)return void t.push(n);if(h(i.timestamp))return void t.push(n);e=Object.assign(Object.assign({},e),{[n]:{usd:i.usd,timestamp:i.timestamp}})}})),!t.length)return e;try{const n=(0,c.splitIntoChunks)(t,100);(yield Promise.all(n.map((e=>r(void 0,void 0,void 0,(function*(){return yield Q(e)})))))).forEach((({result:t})=>{e=Object.assign(Object.assign({},e),t)}))}catch(e){i.log("Error fetching prices from Jupiter Pricing API",e)}return e}))),{staleTime:d,refetchInterval:d});(0,s.useEffect)((()=>{y((e=>Object.entries(e||{}).filter((([e,t])=>{var n;return!h(null!==(n=null==t?void 0:t.timestamp)&&void 0!==n?n:0)})).reduce(((e,[t,n])=>Object.assign(Object.assign({},e),{[t]:n})),{})))}),[]),(0,s.useEffect)((()=>{if(!Object.keys(n).length||!p.size)return;const e=Object.keys(n).map((e=>{const t=p.get(e);if(t)return t.address})).filter(Boolean);C((t=>new Set([...t,...e])))}),[n,p]),(0,s.useEffect)((()=>{C((e=>{const t=new Set([...e]);return(null==f?void 0:f.address)&&t.add(null==f?void 0:f.address),(null==m?void 0:m.address)&&t.add(null==m?void 0:m.address),t}))}),[f,m]);const v=(0,s.useMemo)((()=>Object.assign(Object.assign({},I),b)),[b,I]);return(0,o.jsx)(t.USDValueProviderContext.Provider,Object.assign({value:{tokenPriceMap:v}},{children:e}))}},19078:function(e,t,n){"use strict";var i=n(49500),r=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.useWalletPassThrough=t.WalletPassthroughContext=void 0;const o=n(11527),A=n(79335),s=n(93200),a=n(50959),c={publicKey:null,wallets:[],wallet:null,connect:()=>r(void 0,void 0,void 0,(function*(){})),select:()=>{},connecting:!1,connected:!1,disconnect:()=>r(void 0,void 0,void 0,(function*(){}))};t.WalletPassthroughContext=(0,a.createContext)(c),t.useWalletPassThrough=function(){return(0,a.useContext)(t.WalletPassthroughContext)},t.default=({children:e})=>{const{publicKey:n,wallets:a,wallet:u,connect:l,select:g,connecting:d,connected:h,disconnect:p}=(0,s.useWallet)(),f=(()=>{const e=window.Jupiter.passThroughWallet;return Boolean(e)&&(null==e?void 0:e.adapter.publicKey)?Object.assign(Object.assign({},c),{publicKey:null==e?void 0:e.adapter.publicKey,wallet:{adapter:e.adapter,readyState:A.WalletReadyState.Loadable},connecting:!1,connected:!0,disconnect:()=>r(void 0,void 0,void 0,(function*(){try{if(null==e?void 0:e.adapter.disconnect)return null==e?void 0:e.adapter.disconnect()}catch(e){i.log(e)}}))}):{publicKey:n,wallets:a,wallet:u,connect:l,select:g,connecting:d,connected:h,disconnect:p}})();return(0,o.jsx)(t.WalletPassthroughContext.Provider,Object.assign({value:f},{children:e}))}},57139:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return r(t,e),t},A=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},s=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.useAccounts=t.AccountsProvider=void 0;const a=n(11527),c=s(n(39098)),u=n(76604),l=n(93200),g=o(n(50959)),d=n(19078),h=n(38865),p=n(23200),f=g.default.createContext({accounts:{},loading:!0,refresh:()=>{}});t.AccountsProvider=({children:e})=>{const{publicKey:t,connected:n}=(0,d.useWalletPassThrough)(),{connection:i}=(0,l.useConnection)(),[r,o]=(0,g.useState)(!1),[s,m]=(0,g.useState)({}),I=()=>A(void 0,void 0,void 0,(function*(){if(!t)return void m({});const[e,r]=yield Promise.all([A(void 0,void 0,void 0,(function*(){if(!t||!n)return null;const e=yield i.getAccountInfo(t);return e?{balance:(0,p.fromLamports)((null==e?void 0:e.lamports)||0,9),balanceLamports:new c.default((null==e?void 0:e.lamports)||0),hasBalance:!!(null==e?void 0:e.lamports)&&(null==e?void 0:e.lamports)>0,decimals:9}:void 0})),A(void 0,void 0,void 0,(function*(){return t&&n?(yield i.getParsedTokenAccountsByOwner(t,{programId:u.TOKEN_PROGRAM_ID},"confirmed")).value.reduce(((e,t)=>(e[t.account.data.parsed.info.mint]={balance:t.account.data.parsed.info.tokenAmount.uiAmount,balanceLamports:new c.default(0),hasBalance:t.account.data.parsed.info.tokenAmount.uiAmount>0,decimals:t.account.data.parsed.info.tokenAmount.decimals},e)),{}):{}}))]);m(Object.assign(Object.assign({},r),e?{[h.WRAPPED_SOL_MINT.toString()]:e}:{})),o(!1)}));return(0,g.useEffect)((()=>{I()}),[t,n]),(0,a.jsx)(f.Provider,Object.assign({value:{accounts:s,loading:r,refresh:I}},{children:e}))},t.useAccounts=()=>(0,g.useContext)(f)},53884:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.usePreferredExplorer=t.PreferredExplorerProvider=t.AVAILABLE_EXPLORER=void 0;const i=n(11527),r=n(50959);t.AVAILABLE_EXPLORER=[{name:"Solana Explorer",url:"https://explorer.solana.com/",get:(e,t="mainnet-beta")=>"mainnet-beta"!==t?`https://explorer.solana.com/tx/${e}?cluster=${t}`:`https://explorer.solana.com/tx/${e}`,getToken:(e,t="mainnet-beta")=>"mainnet-beta"!==t?`https://explorer.solana.com/address/${e}?cluster=${t}`:`https://explorer.solana.com/address/${e}`},{name:"Solscan",url:"https://solscan.io/",get:(e,t="mainnet-beta")=>"mainnet-beta"!==t?`https://solscan.io/tx/${e}?cluster=${t}`:`https://solscan.io/tx/${e}`,getToken:(e,t="mainnet-beta")=>"mainnet-beta"!==t?`https://solscan.io/token/${e}?cluster=${t}`:`https://solscan.io/token/${e}`},{name:"Solana Beach",url:"https://solanabeach.io/",get:(e,t="mainnet-beta")=>"mainnet-beta"!==t?`https://solanabeach.io/transaction/${e}?cluster=${t}`:`https://solanabeach.io/transaction/${e}`,getToken:(e,t="mainnet-beta")=>"mainnet-beta"!==t?`https://solanabeach.io/address/${e}?cluster=${t}`:`https://solanabeach.io/address/${e}`},{name:"SolanaFM",url:"https://solana.fm/",get:(e,t="mainnet-beta")=>"devnet"===t?`https://solana.fm/tx/${e}?cluster=devnet-solana`:"testnet"===t?`https://solana.fm/tx/${e}?cluster=testnet-qn1`:`https://solana.fm/tx/${e}`,getToken:(e,t="mainnet-beta")=>"devnet"===t?`https://solana.fm/address/${e}?cluster=devnet-solana`:"testnet"===t?`https://solana.fm/address/${e}?cluster=testnet-qn1`:`https://solana.fm/address/${e}`}];const o=(0,r.createContext)({explorer:t.AVAILABLE_EXPLORER[0].name,getExplorer:(e,t)=>"",getTokenExplorer:(e,t)=>"",setExplorer:e=>{}});t.PreferredExplorerProvider=({defaultExplorer:e,children:n})=>{const[A,s]=(0,r.useState)(null!=e?e:t.AVAILABLE_EXPLORER[0].name),a=(0,r.useMemo)((()=>t.AVAILABLE_EXPLORER.find((e=>e.name===A))||t.AVAILABLE_EXPLORER[0]),[A]),c=(0,r.useCallback)(((e,t)=>a.get(e,t)),[a]),u=(0,r.useCallback)(((e,t)=>a.getToken(e,t)),[a]);return(0,i.jsx)(o.Provider,Object.assign({value:{explorer:A,getExplorer:c,getTokenExplorer:u,setExplorer:e=>s(e)}},{children:n}))},t.usePreferredExplorer=function(){return(0,r.useContext)(o)}},98711:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(11527);t.default=({width:e=20,height:t=20})=>(0,i.jsx)("svg",Object.assign({width:e,height:t,viewBox:"0 0 20 21",fill:"none",xmlns:"http://www.w3.org/2000/svg"},{children:(0,i.jsx)("path",{d:"M2.0336 16.2126L8.2336 10.0126L2.0336 3.81263C1.7961 3.57903 1.66172 3.25951 1.66016 2.92669C1.65938 2.59309 1.79141 2.27357 2.02734 2.03763C2.26328 1.80247 2.5828 1.67045 2.9164 1.67201C3.25 1.67357 3.56874 1.80795 3.80234 2.04623L9.99994 8.24623L16.1999 2.04623C16.4335 1.80795 16.7523 1.67357 17.0859 1.67201C17.4187 1.67045 17.739 1.80248 17.9749 2.03763C18.2109 2.27357 18.3429 2.59309 18.3413 2.92669C18.3406 3.25951 18.2062 3.57903 17.9687 3.81263L11.7663 10.0126L17.9663 16.2126C18.2038 16.4462 18.3382 16.7658 18.3397 17.0986C18.3405 17.4322 18.2085 17.7517 17.9725 17.9876C17.7366 18.2228 17.4171 18.3548 17.0835 18.3533C16.7499 18.3517 16.4311 18.2173 16.1975 17.979L9.99994 11.779L3.79994 17.979C3.31088 18.4611 2.52494 18.4579 2.039 17.9736C1.55384 17.4884 1.54994 16.7025 2.03119 16.2126L2.0336 16.2126Z",fill:"currentColor"})}))},499:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(11527);t.default=()=>(0,i.jsx)("svg",Object.assign({width:"10",height:"10",viewBox:"0 0 10 10",fill:"none",xmlns:"http://www.w3.org/2000/svg"},{children:(0,i.jsx)("path",{d:"M4 2V3H1.5V8.5H7V6H8V9C8 9.13261 7.94732 9.25979 7.85355 9.35355C7.75979 9.44732 7.63261 9.5 7.5 9.5H1C0.867392 9.5 0.740215 9.44732 0.646447 9.35355C0.552678 9.25979 0.5 9.13261 0.5 9V2.5C0.5 2.36739 0.552678 2.24021 0.646447 2.14645C0.740215 2.05268 0.867392 2 1 2H4ZM9.5 0.5V4.5H8.5V2.2065L4.6035 6.1035L3.8965 5.3965L7.7925 1.5H5.5V0.5H9.5Z",fill:"currentColor"})}))},96319:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(11527);t.default=({width:e=12,height:t=12})=>(0,i.jsxs)("svg",Object.assign({width:e,height:t,viewBox:"0 0 12 12",fill:"inherit",xmlns:"http://www.w3.org/2000/svg"},{children:[(0,i.jsx)("path",{d:"M6.83337 3.56012C6.83337 4.02043 6.46024 4.39309 5.99994 4.39309C5.53963 4.39309 5.1665 4.02043 5.1665 3.56012C5.1665 3.09981 5.53963 2.72668 5.99994 2.72668C6.46024 2.72668 6.83337 3.09981 6.83337 3.56012Z",fill:"inherit"}),(0,i.jsx)("path",{d:"M6.69319 5.84293V8.58985C6.69319 8.97282 6.38288 9.28313 5.99992 9.28313C5.61695 9.28313 5.30664 8.97282 5.30664 8.58985V5.84293C5.30664 5.46043 5.61695 5.14966 5.99992 5.14966C6.38288 5.14966 6.69319 5.46043 6.69319 5.84293Z",fill:"inherit"}),(0,i.jsx)("path",{d:"M6 0C2.68644 0 0 2.68644 0 6C0 9.31356 2.68644 12 6 12C9.31356 12 12 9.31356 12 6C12 2.68644 9.31356 0 6 0ZM9.4884 9.4884C8.5659 10.4264 7.3068 10.9574 5.991 10.9631C4.67568 10.9687 3.41196 10.4484 2.48196 9.51792C1.55149 8.58792 1.03116 7.3242 1.0368 6.00888C1.04243 4.69308 1.57352 3.43404 2.51148 2.51148C3.43398 1.57351 4.69308 1.04244 6.00888 1.0368C7.3242 1.03118 8.58792 1.55149 9.51792 2.48196C10.4484 3.41196 10.9687 4.67568 10.9631 5.991C10.9575 7.3068 10.4264 8.56584 9.4884 9.4884Z",fill:"inherit"}),(0,i.jsx)("path",{d:"M6 0C2.68644 0 0 2.68644 0 6C0 9.31356 2.68644 12 6 12C9.31356 12 12 9.31356 12 6C12 2.68644 9.31356 0 6 0ZM9.4884 9.4884C8.5659 10.4264 7.3068 10.9574 5.991 10.9631C4.67568 10.9687 3.41196 10.4484 2.48196 9.51792C1.55149 8.58792 1.03116 7.3242 1.0368 6.00888C1.04243 4.69308 1.57352 3.43404 2.51148 2.51148C3.43398 1.57351 4.69308 1.04244 6.00888 1.0368C7.3242 1.03118 8.58792 1.55149 9.51792 2.48196C10.4484 3.41196 10.9687 4.67568 10.9631 5.991C10.9575 7.3068 10.4264 8.56584 9.4884 9.4884Z",fill:"inherit"})]}))},88811:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(11527);t.default=({width:e="12",height:t="12"})=>(0,i.jsx)("svg",Object.assign({width:e,height:t,viewBox:"0 0 53 52",fill:"none",xmlns:"http://www.w3.org/2000/svg"},{children:(0,i.jsx)("path",{d:"M17.3336 23.8334H43.7062V28.1667H17.3336L28.9555 39.7887L25.8919 42.8524L9.03955 26L25.8919 9.14771L28.9555 12.2114L17.3336 23.8334Z",fill:"currentColor"})}))},67358:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(11527);t.default=({width:e="12",height:t="12"})=>(0,i.jsxs)("svg",Object.assign({width:e,height:t,viewBox:"0 0 12 12",fill:"inherit",xmlns:"http://www.w3.org/2000/svg"},{children:[(0,i.jsx)("g",Object.assign({clipPath:"url(#clip0_841_4053)"},{children:(0,i.jsx)("path",{d:"M11.6466 4.23513V0.706082L10.4111 1.94156C9.3173 0.741165 7.72912 0 6 0C2.6827 0 0 2.6827 0 6C0 9.3173 2.68203 12 6 12C7.69405 12 9.21142 11.2939 10.3059 10.165L9.31797 9.14128C8.50601 10.0234 7.30561 10.5879 6 10.5879C3.45892 10.5879 1.41216 8.5411 1.41216 6.00002C1.41216 3.45894 3.45892 1.41218 6 1.41218C7.34135 1.41218 8.57615 2.01238 9.42317 2.92954L8.11757 4.23515L11.6466 4.23513Z",fill:"inherit"})})),(0,i.jsx)("defs",{children:(0,i.jsx)("clipPath",Object.assign({id:"clip0_841_4053"},{children:(0,i.jsx)("rect",{width:e,height:t,fill:"white"})}))})]}))},17503:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RoutesSVG=void 0;const i=n(11527);t.RoutesSVG=({width:e="20",height:t="20"})=>(0,i.jsx)("svg",Object.assign({width:e,height:t,viewBox:"0 0 7 9",fill:"none",xmlns:"http://www.w3.org/2000/svg"},{children:(0,i.jsx)("path",{d:"M2.11894 4.99859H4.79173C5.96242 4.99859 6.92699 4.04958 6.94255 2.89521C6.94255 1.72452 5.97798 0.791834 4.79173 0.791834L2.75212 0.791092C2.54675 0.332152 2.08781 0 1.5503 0C0.822978 0 0.237252 0.601291 0.237252 1.31305C0.237252 2.0248 0.838542 2.62609 1.5503 2.62609C2.10414 2.62609 2.56232 2.29394 2.75212 1.835H4.79248C5.40934 1.835 5.91573 2.34139 5.91573 2.91079C5.91573 3.4802 5.40934 3.98659 4.79248 3.98659H2.15083C0.980134 3.98659 0.0155637 4.93559 0 6.08997C0 7.27622 0.964571 8.19334 2.15083 8.19334H4.34911C4.55447 8.65228 5.01341 9 5.55093 9C6.27825 9 6.86398 8.39871 6.86398 7.68695C6.86398 6.95964 6.26269 6.37391 5.55093 6.37391C4.99709 6.37391 4.53891 6.70606 4.34911 7.165L2.13527 7.16574C1.51841 7.16574 1.01202 6.65935 1.01202 6.08995C1.01202 5.50498 1.50209 5.01415 2.11894 4.99859Z",fill:"white",fillOpacity:"0.5"})}))},31525:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(11527);t.default=()=>(0,i.jsx)("div",Object.assign({className:"flex items-center text-white fill-current"},{children:(0,i.jsx)("svg",Object.assign({width:"18",height:"18",viewBox:"0 0 18 18",fill:"inherit",xmlns:"http://www.w3.org/2000/svg"},{children:(0,i.jsx)("path",{d:"M7.30327 14.6058C8.75327 14.6074 10.1705 14.1746 11.3729 13.3637L15.5971 17.5871C16.1463 18.1371 17.0377 18.1371 17.5877 17.5871C18.1377 17.0371 18.1377 16.1457 17.5877 15.5964L13.3643 11.3722C14.5823 9.55661 14.9229 7.28943 14.2909 5.19563C13.6596 3.10183 12.1229 1.40183 10.1033 0.56283C8.08365 -0.276231 5.79385 -0.16607 3.86505 0.86283C1.93537 1.89251 0.569053 3.73243 0.140853 5.87683C-0.286487 8.02143 0.269759 10.2448 1.65725 11.9354C3.04397 13.6261 5.11665 14.6064 7.30325 14.6058H7.30327ZM7.30327 1.68943C8.79233 1.68865 10.2197 2.28005 11.2729 3.33319C12.3252 4.38631 12.9166 5.81359 12.9166 7.30279C12.9166 8.79199 12.3252 10.2192 11.2729 11.2724C10.2198 12.3247 8.79247 12.9162 7.30327 12.9162C5.81407 12.9162 4.38687 12.3247 3.33367 11.2724C2.28133 10.2193 1.68913 8.79199 1.68991 7.30279C1.69148 5.81451 2.28287 4.38719 3.33523 3.33479C4.38759 2.28239 5.81483 1.69103 7.30323 1.68947L7.30327 1.68943Z",fill:"inherit",fillOpacity:"0.25"})}))}))},45201:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(11527);t.default=({width:e="12",height:t="12"})=>(0,i.jsx)("svg",Object.assign({width:e,height:t,viewBox:"0 0 12 10",fill:"inherit",xmlns:"http://www.w3.org/2000/svg"},{children:(0,i.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M4.67559 1.39922C4.18425 1.39922 3.78594 1.79753 3.78594 2.28887C3.78594 2.78022 4.18425 3.17853 4.67559 3.17853C5.16694 3.17853 5.56525 2.78022 5.56525 2.28887C5.56525 1.79753 5.16694 1.39922 4.67559 1.39922ZM1.19961 2.88867H2.67329C2.93107 3.75043 3.72998 4.37853 4.67559 4.37853C5.62121 4.37853 6.42012 3.75043 6.67789 2.88867H10.7996C11.131 2.88867 11.3996 2.62004 11.3996 2.28867C11.3996 1.9573 11.131 1.68867 10.7996 1.68867H6.67777C6.41987 0.827121 5.62106 0.199219 4.67559 0.199219C3.73013 0.199219 2.93132 0.827121 2.67342 1.68867H1.19961C0.868239 1.68867 0.599609 1.9573 0.599609 2.28867C0.599609 2.62004 0.868239 2.88867 1.19961 2.88867ZM0.599609 7.58555C0.599609 7.25418 0.868239 6.98555 1.19961 6.98555H5.98367C6.24157 6.124 7.04038 5.49609 7.98585 5.49609C8.93131 5.49609 9.73012 6.124 9.98802 6.98555H10.7995C11.1309 6.98555 11.3995 7.25418 11.3995 7.58555C11.3995 7.91692 11.1309 8.18555 10.7995 8.18555H9.98814C9.73037 9.04731 8.93146 9.6754 7.98585 9.6754C7.04023 9.6754 6.24132 9.04731 5.98355 8.18555H1.19961C0.868239 8.18555 0.599609 7.91692 0.599609 7.58555ZM7.09619 7.58575C7.09619 7.09441 7.4945 6.69609 7.98585 6.69609C8.47719 6.69609 8.8755 7.09441 8.8755 7.58575C8.8755 8.07709 8.47719 8.4754 7.98585 8.4754C7.4945 8.4754 7.09619 8.07709 7.09619 7.58575Z",fill:"inherit",fillOpacity:"0.5"})}))},51541:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(11527);t.default=({width:e="56",height:t="56"})=>(0,i.jsx)("svg",Object.assign({width:e,height:t,viewBox:"0 0 56 56",fill:"none",xmlns:"http://www.w3.org/2000/svg"},{children:(0,i.jsx)("path",{d:"M28 0C12.5564 0 0 12.5564 0 28C0 43.4436 12.5564 56 28 56C43.4436 56 56 43.4436 56 28C56 12.5564 43.4436 0 28 0ZM42.1474 21.7504L27.1759 38.7874C26.6463 39.3768 25.9371 39.7315 25.1727 39.7315H25.0552C24.3483 39.7315 23.6414 39.4367 23.1095 38.9071L13.9703 29.7084C12.9088 28.6469 12.9088 26.8785 13.9703 25.8169C15.0318 24.7554 16.8002 24.7554 17.8617 25.8169L24.9956 32.9508L38.0218 18.0966C39.0234 16.9177 40.7918 16.8578 41.9132 17.8617C43.0922 18.8634 43.2089 20.5715 42.1474 21.7504Z",fill:"#23C1AA"})}))},10622:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const i=n(11527);t.default=({width:e=20,height:t=20})=>(0,i.jsx)("svg",Object.assign({width:e,height:t,viewBox:"0 0 11 11",fill:"none",xmlns:"http://www.w3.org/2000/svg"},{children:(0,i.jsx)("path",{d:"M2.0625 11H10.3125V2.75H8.59375V0H2.0625C0.923158 0 0 0.923158 0 2.0625V8.9375C0 10.0768 0.923158 11 2.0625 11ZM8.9375 4.125V9.625H2.0625C1.6825 9.625 1.375 9.3175 1.375 8.9375V4.00486C1.59589 4.08408 1.82818 4.12437 2.0625 4.12504L8.9375 4.125ZM2.0625 1.375H7.21875V2.75H2.0625C1.6825 2.75 1.375 2.4425 1.375 2.0625C1.375 1.6825 1.6825 1.375 2.0625 1.375Z",fill:"white",fillOpacity:"0.25"})}))},41542:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.RenderJupiter=void 0;const r=n(11527),o=i(n(36145)),A=n(90182),s=n(23510),a=n(53183),c=i(n(19078));t.RenderJupiter=e=>(0,r.jsx)(A.ContextProvider,Object.assign({},e,{children:(0,r.jsx)(c.default,{children:(0,r.jsx)(a.TokenContextProvider,Object.assign({},e,{children:(0,r.jsx)(s.ScreenProvider,{children:(0,r.jsx)(o.default,Object.assign({},e))})}))})}))},56378:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WRAPPED_SOL_MINT=t.MAX_INPUT_LIMIT=t.PAIR_SELECTOR_TOP_TOKENS=t.ROUTE_CACHE_DURATION=t.MINIMUM_SOL_BALANCE=void 0;const i=n(97212);t.MINIMUM_SOL_BALANCE=.05,t.ROUTE_CACHE_DURATION=2e4,t.PAIR_SELECTOR_TOP_TOKENS=["EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","So11111111111111111111111111111111111111112","Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj","7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs","4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R","A9mUU4qviSctJVPJdBJWkb28deg915LYJKrzQ19ji3FM"],t.MAX_INPUT_LIMIT=1e14,t.WRAPPED_SOL_MINT=new i.PublicKey("So11111111111111111111111111111111111111112")},23200:function(e,t,n){"use strict";var i=n(55872).Buffer,r=n(49500),o=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.base64ToJson=t.jsonToBase64=t.hasNumericValue=t.splitIntoChunks=t.useDebouncedEffect=t.useOutsideClick=t.detectedSeparator=t.isMobile=t.useReactiveEventListener=t.toLamports=t.fromLamports=t.shortenAddress=t.formatNumber=t.numberFormatter=void 0;const A=o(n(62496)),s=o(n(39098)),a=n(50959),c="undefined"!=typeof window?navigator.languages&&navigator.languages.length?navigator.languages[0]:navigator.language:"en-US";t.numberFormatter=new Intl.NumberFormat(c,{style:"decimal",minimumFractionDigits:0,maximumFractionDigits:9}),t.formatNumber={format:(e,n)=>e||0===e?void 0!==n?e.toFixed(n):t.numberFormatter.format(e):"--"},t.shortenAddress=function(e,t=4){return`${e.slice(0,t)}...${e.slice(-t)}`},t.fromLamports=function(e,t,n=1){if(!e)return 0;const i=(s.default.isBN(e),e),r=new A.default(10).pow(null!=t?t:6);return new A.default(i.toString()).div(r).mul(n).toNumber()},t.toLamports=function(e,t){let n=s.default.isBN(e)?e.toNumber():Number(e);Number.isNaN(n)&&(n=0);const i=Math.pow(10,t);return Math.floor(n*i)},t.useReactiveEventListener=function(e,t,n=("undefined"!=typeof window?window:null)){const i=(0,a.useRef)();(0,a.useEffect)((()=>{i.current=t}),[t]),(0,a.useEffect)((()=>{if("undefined"!=typeof window){if(!n||!n.addEventListener)return;const t=e=>"function"==typeof i.current&&i.current(e);return n.addEventListener(e,t),()=>{n.removeEventListener(e,t)}}}),[e,n])},t.isMobile=()=>"undefined"!=typeof window&&screen&&screen.width<=480,t.detectedSeparator=t.formatNumber.format(1.1).substring(1,2),t.useOutsideClick=function(e,t){(0,a.useEffect)((()=>{const n=n=>{e.current&&!e.current.contains(n.target)&&t(n)};return document.addEventListener("mouseup",n),()=>{document.removeEventListener("mouseup",n)}}),[e,t])},t.useDebouncedEffect=function(e,t,n){const i=[...t,e,n];(0,a.useEffect)((()=>{const t=setTimeout(e,n);return()=>{clearTimeout(t)}}),i)},t.splitIntoChunks=function(e,t){return Array.apply(0,new Array(Math.ceil(e.length/t))).map(((n,i)=>e.slice(i*t,(i+1)*t)))},t.hasNumericValue=e=>!(!e||Number.isNaN(Number(e))),t.jsonToBase64=function(e){try{const t=JSON.stringify(e);return i.from(t).toString("base64")}catch(e){return r.log(e),null}},t.base64ToJson=function(e){try{const t=i.from(e,"base64").toString();return JSON.parse(t)}catch(e){return r.log(e),null}}},80677:(e,t,n)=>{"use strict";n.r(t),n.d(t,{__assign:()=>o,__asyncDelegator:()=>C,__asyncGenerator:()=>B,__asyncValues:()=>w,__await:()=>y,__awaiter:()=>u,__classPrivateFieldGet:()=>v,__classPrivateFieldIn:()=>M,__classPrivateFieldSet:()=>S,__createBinding:()=>g,__decorate:()=>s,__exportStar:()=>d,__extends:()=>r,__generator:()=>l,__importDefault:()=>k,__importStar:()=>b,__makeTemplateObject:()=>E,__metadata:()=>c,__param:()=>a,__read:()=>p,__rest:()=>A,__spread:()=>f,__spreadArray:()=>I,__spreadArrays:()=>m,__values:()=>h});var i=function(e,t){return i=Object.setPrototypeOf||{__proto__:[]}instanceof Array&&function(e,t){e.__proto__=t}||function(e,t){for(var n in t)Object.prototype.hasOwnProperty.call(t,n)&&(e[n]=t[n])},i(e,t)};function r(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Class extends value "+String(t)+" is not a constructor or null");function n(){this.constructor=e}i(e,t),e.prototype=null===t?Object.create(t):(n.prototype=t.prototype,new n)}var o=function(){return o=Object.assign||function(e){for(var t,n=1,i=arguments.length;n=0;s--)(r=e[s])&&(A=(o<3?r(A):o>3?r(t,n,A):r(t,n))||A);return o>3&&A&&Object.defineProperty(t,n,A),A}function a(e,t){return function(n,i){t(n,i,e)}}function c(e,t){if("object"==typeof Reflect&&"function"==typeof Reflect.metadata)return Reflect.metadata(e,t)}function u(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))}function l(e,t){var n,i,r,o,A={label:0,sent:function(){if(1&r[0])throw r[1];return r[1]},trys:[],ops:[]};return o={next:s(0),throw:s(1),return:s(2)},"function"==typeof Symbol&&(o[Symbol.iterator]=function(){return this}),o;function s(s){return function(a){return function(s){if(n)throw new TypeError("Generator is already executing.");for(;o&&(o=0,s[0]&&(A=0)),A;)try{if(n=1,i&&(r=2&s[0]?i.return:s[0]?i.throw||((r=i.return)&&r.call(i),0):i.next)&&!(r=r.call(i,s[1])).done)return r;switch(i=0,r&&(s=[2&s[0],r.value]),s[0]){case 0:case 1:r=s;break;case 4:return A.label++,{value:s[1],done:!1};case 5:A.label++,i=s[1],s=[0];continue;case 7:s=A.ops.pop(),A.trys.pop();continue;default:if(!((r=(r=A.trys).length>0&&r[r.length-1])||6!==s[0]&&2!==s[0])){A=0;continue}if(3===s[0]&&(!r||s[1]>r[0]&&s[1]=e.length&&(e=void 0),{value:e&&e[i++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function p(e,t){var n="function"==typeof Symbol&&e[Symbol.iterator];if(!n)return e;var i,r,o=n.call(e),A=[];try{for(;(void 0===t||t-- >0)&&!(i=o.next()).done;)A.push(i.value)}catch(e){r={error:e}}finally{try{i&&!i.done&&(n=o.return)&&n.call(o)}finally{if(r)throw r.error}}return A}function f(){for(var e=[],t=0;t1||s(e,t)}))})}function s(e,t){try{(n=r[e](t)).value instanceof y?Promise.resolve(n.value.v).then(a,c):u(o[0][2],n)}catch(e){u(o[0][3],e)}var n}function a(e){s("next",e)}function c(e){s("throw",e)}function u(e,t){e(t),o.shift(),o.length&&s(o[0][0],o[0][1])}}function C(e){var t,n;return t={},i("next"),i("throw",(function(e){throw e})),i("return"),t[Symbol.iterator]=function(){return this},t;function i(i,r){t[i]=e[i]?function(t){return(n=!n)?{value:y(e[i](t)),done:"return"===i}:r?r(t):t}:r}}function w(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e=h(e),t={},i("next"),i("throw"),i("return"),t[Symbol.asyncIterator]=function(){return this},t);function i(n){t[n]=e[n]&&function(t){return new Promise((function(i,r){!function(e,t,n,i){Promise.resolve(i).then((function(t){e({value:t,done:n})}),t)}(i,r,(t=e[n](t)).done,t.value)}))}}}function E(e,t){return Object.defineProperty?Object.defineProperty(e,"raw",{value:t}):e.raw=t,e}var Q=Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t};function b(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&g(t,e,n);return Q(t,e),t}function k(e){return e&&e.__esModule?e:{default:e}}function v(e,t,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(e):i?i.value:t.get(e)}function S(e,t,n,i,r){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?r.call(e,n):r?r.value=n:t.set(e,n),n}function M(e,t){if(null===t||"object"!=typeof t&&"function"!=typeof t)throw new TypeError("Cannot use 'in' operator on non-object");return"function"==typeof e?t===e:e.has(t)}},12415:(e,t,n)=>{"use strict";var i=n(50959),r="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},o=i.useState,A=i.useEffect,s=i.useLayoutEffect,a=i.useDebugValue;function c(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch(e){return!0}}var u="undefined"==typeof window||void 0===window.document||void 0===window.document.createElement?function(e,t){return t()}:function(e,t){var n=t(),i=o({inst:{value:n,getSnapshot:t}}),r=i[0].inst,u=i[1];return s((function(){r.value=n,r.getSnapshot=t,c(r)&&u({inst:r})}),[e,n,t]),A((function(){return c(r)&&u({inst:r}),e((function(){c(r)&&u({inst:r})}))}),[e]),a(n),n};t.useSyncExternalStore=void 0!==i.useSyncExternalStore?i.useSyncExternalStore:u},4322:(e,t,n)=>{"use strict";e.exports=n(12415)},44068:(e,t,n)=>{"use strict";n.d(t,{v4:()=>i.Z});var i=n(92675)},92675:(e,t,n)=>{"use strict";var i;n.d(t,{Z:()=>u});var r=new Uint8Array(16);function o(){if(!i&&!(i="undefined"!=typeof crypto&&crypto.getRandomValues&&crypto.getRandomValues.bind(crypto)||"undefined"!=typeof msCrypto&&"function"==typeof msCrypto.getRandomValues&&msCrypto.getRandomValues.bind(msCrypto)))throw new Error("crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported");return i(r)}const A=/^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i,s=function(e){return"string"==typeof e&&A.test(e)};for(var a=[],c=0;c<256;++c)a.push((c+256).toString(16).substr(1));const u=function(e,t,n){var i=(e=e||{}).random||(e.rng||o)();if(i[6]=15&i[6]|64,i[8]=63&i[8]|128,t){n=n||0;for(var r=0;r<16;++r)t[n+r]=i[r];return t}return function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,n=(a[e[t+0]]+a[e[t+1]]+a[e[t+2]]+a[e[t+3]]+"-"+a[e[t+4]]+a[e[t+5]]+"-"+a[e[t+6]]+a[e[t+7]]+"-"+a[e[t+8]]+a[e[t+9]]+"-"+a[e[t+10]]+a[e[t+11]]+a[e[t+12]]+a[e[t+13]]+a[e[t+14]]+a[e[t+15]]).toLowerCase();if(!s(n))throw TypeError("Stringified UUID is invalid");return n}(i)}},79572:()=>{},34490:()=>{},39518:()=>{},49563:()=>{},89343:()=>{},20283:()=>{},79391:()=>{},61485:e=>{e.exports=function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e},e.exports.__esModule=!0,e.exports.default=e.exports},15305:e=>{function t(e,t,n,i,r,o,A){try{var s=e[o](A),a=s.value}catch(e){return void n(e)}s.done?t(a):Promise.resolve(a).then(i,r)}e.exports=function(e){return function(){var n=this,i=arguments;return new Promise((function(r,o){var A=e.apply(n,i);function s(e){t(A,r,o,s,a,"next",e)}function a(e){t(A,r,o,s,a,"throw",e)}s(void 0)}))}},e.exports.__esModule=!0,e.exports.default=e.exports},81568:e=>{e.exports=function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")},e.exports.__esModule=!0,e.exports.default=e.exports},29197:(e,t,n)=>{var i=n(69496);function r(e,t){for(var n=0;n{function t(n){return e.exports=t=Object.setPrototypeOf?Object.getPrototypeOf.bind():function(e){return e.__proto__||Object.getPrototypeOf(e)},e.exports.__esModule=!0,e.exports.default=e.exports,t(n)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},23460:(e,t,n)=>{var i=n(74185);e.exports=function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),Object.defineProperty(e,"prototype",{writable:!1}),t&&i(e,t)},e.exports.__esModule=!0,e.exports.default=e.exports},70489:e=>{e.exports=function(e){return e&&e.__esModule?e:{default:e}},e.exports.__esModule=!0,e.exports.default=e.exports},85402:(e,t,n)=>{var i=n(24445).default,r=n(61485);e.exports=function(e,t){if(t&&("object"===i(t)||"function"==typeof t))return t;if(void 0!==t)throw new TypeError("Derived constructors may only return object or undefined");return r(e)},e.exports.__esModule=!0,e.exports.default=e.exports},19032:(e,t,n)=>{var i=n(24445).default;function r(){"use strict";e.exports=r=function(){return t},e.exports.__esModule=!0,e.exports.default=e.exports;var t={},n=Object.prototype,o=n.hasOwnProperty,A=Object.defineProperty||function(e,t,n){e[t]=n.value},s="function"==typeof Symbol?Symbol:{},a=s.iterator||"@@iterator",c=s.asyncIterator||"@@asyncIterator",u=s.toStringTag||"@@toStringTag";function l(e,t,n){return Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}),e[t]}try{l({},"")}catch(e){l=function(e,t,n){return e[t]=n}}function g(e,t,n,i){var r=t&&t.prototype instanceof p?t:p,o=Object.create(r.prototype),s=new S(i||[]);return A(o,"_invoke",{value:Q(e,n,s)}),o}function d(e,t,n){try{return{type:"normal",arg:e.call(t,n)}}catch(e){return{type:"throw",arg:e}}}t.wrap=g;var h={};function p(){}function f(){}function m(){}var I={};l(I,a,(function(){return this}));var y=Object.getPrototypeOf,B=y&&y(y(M([])));B&&B!==n&&o.call(B,a)&&(I=B);var C=m.prototype=p.prototype=Object.create(I);function w(e){["next","throw","return"].forEach((function(t){l(e,t,(function(e){return this._invoke(t,e)}))}))}function E(e,t){function n(r,A,s,a){var c=d(e[r],e,A);if("throw"!==c.type){var u=c.arg,l=u.value;return l&&"object"==i(l)&&o.call(l,"__await")?t.resolve(l.__await).then((function(e){n("next",e,s,a)}),(function(e){n("throw",e,s,a)})):t.resolve(l).then((function(e){u.value=e,s(u)}),(function(e){return n("throw",e,s,a)}))}a(c.arg)}var r;A(this,"_invoke",{value:function(e,i){function o(){return new t((function(t,r){n(e,i,t,r)}))}return r=r?r.then(o,o):o()}})}function Q(e,t,n){var i="suspendedStart";return function(r,o){if("executing"===i)throw new Error("Generator is already running");if("completed"===i){if("throw"===r)throw o;return{value:void 0,done:!0}}for(n.method=r,n.arg=o;;){var A=n.delegate;if(A){var s=b(A,n);if(s){if(s===h)continue;return s}}if("next"===n.method)n.sent=n._sent=n.arg;else if("throw"===n.method){if("suspendedStart"===i)throw i="completed",n.arg;n.dispatchException(n.arg)}else"return"===n.method&&n.abrupt("return",n.arg);i="executing";var a=d(e,t,n);if("normal"===a.type){if(i=n.done?"completed":"suspendedYield",a.arg===h)continue;return{value:a.arg,done:n.done}}"throw"===a.type&&(i="completed",n.method="throw",n.arg=a.arg)}}}function b(e,t){var n=t.method,i=e.iterator[n];if(void 0===i)return t.delegate=null,"throw"===n&&e.iterator.return&&(t.method="return",t.arg=void 0,b(e,t),"throw"===t.method)||"return"!==n&&(t.method="throw",t.arg=new TypeError("The iterator does not provide a '"+n+"' method")),h;var r=d(i,e.iterator,t.arg);if("throw"===r.type)return t.method="throw",t.arg=r.arg,t.delegate=null,h;var o=r.arg;return o?o.done?(t[e.resultName]=o.value,t.next=e.nextLoc,"return"!==t.method&&(t.method="next",t.arg=void 0),t.delegate=null,h):o:(t.method="throw",t.arg=new TypeError("iterator result is not an object"),t.delegate=null,h)}function k(e){var t={tryLoc:e[0]};1 in e&&(t.catchLoc=e[1]),2 in e&&(t.finallyLoc=e[2],t.afterLoc=e[3]),this.tryEntries.push(t)}function v(e){var t=e.completion||{};t.type="normal",delete t.arg,e.completion=t}function S(e){this.tryEntries=[{tryLoc:"root"}],e.forEach(k,this),this.reset(!0)}function M(e){if(e){var t=e[a];if(t)return t.call(e);if("function"==typeof e.next)return e;if(!isNaN(e.length)){var n=-1,i=function t(){for(;++n=0;--i){var r=this.tryEntries[i],A=r.completion;if("root"===r.tryLoc)return n("end");if(r.tryLoc<=this.prev){var s=o.call(r,"catchLoc"),a=o.call(r,"finallyLoc");if(s&&a){if(this.prev=0;--n){var i=this.tryEntries[n];if(i.tryLoc<=this.prev&&o.call(i,"finallyLoc")&&this.prev=0;--t){var n=this.tryEntries[t];if(n.finallyLoc===e)return this.complete(n.completion,n.afterLoc),v(n),h}},catch:function(e){for(var t=this.tryEntries.length-1;t>=0;--t){var n=this.tryEntries[t];if(n.tryLoc===e){var i=n.completion;if("throw"===i.type){var r=i.arg;v(n)}return r}}throw new Error("illegal catch attempt")},delegateYield:function(e,t,n){return this.delegate={iterator:M(e),resultName:t,nextLoc:n},"next"===this.method&&(this.arg=void 0),h}},t}e.exports=r,e.exports.__esModule=!0,e.exports.default=e.exports},74185:e=>{function t(n,i){return e.exports=t=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},e.exports.__esModule=!0,e.exports.default=e.exports,t(n,i)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},23694:(e,t,n)=>{var i=n(24445).default;e.exports=function(e,t){if("object"!==i(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var r=n.call(e,t||"default");if("object"!==i(r))return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)},e.exports.__esModule=!0,e.exports.default=e.exports},69496:(e,t,n)=>{var i=n(24445).default,r=n(23694);e.exports=function(e){var t=r(e,"string");return"symbol"===i(t)?t:String(t)},e.exports.__esModule=!0,e.exports.default=e.exports},24445:e=>{function t(n){return e.exports=t="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},e.exports.__esModule=!0,e.exports.default=e.exports,t(n)}e.exports=t,e.exports.__esModule=!0,e.exports.default=e.exports},88158:(e,t,n)=>{var i=n(19032)();e.exports=i;try{regeneratorRuntime=i}catch(e){"object"==typeof globalThis?globalThis.regeneratorRuntime=i:Function("r","regeneratorRuntime = r")(i)}},34997:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.encodeDecode=void 0,t.encodeDecode=e=>({decode:e.decode.bind(e),encode:e.encode.bind(e)})},98687:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.u256be=t.u256=t.u192be=t.u192=t.u128be=t.u128=t.u64be=t.u64=t.bigIntBE=t.bigInt=void 0;const r=n(54380),o=n(53477),A=n(34997);t.bigInt=e=>t=>{const n=(0,r.blob)(e,t),{encode:s,decode:a}=(0,A.encodeDecode)(n),c=n;return c.decode=(e,t)=>{const n=a(e,t);return(0,o.toBigIntLE)(i.from(n))},c.encode=(t,n,i)=>{const r=(0,o.toBufferLE)(t,e);return s(r,n,i)},c},t.bigIntBE=e=>t=>{const n=(0,r.blob)(e,t),{encode:s,decode:a}=(0,A.encodeDecode)(n),c=n;return c.decode=(e,t)=>{const n=a(e,t);return(0,o.toBigIntBE)(i.from(n))},c.encode=(t,n,i)=>{const r=(0,o.toBufferBE)(t,e);return s(r,n,i)},c},t.u64=(0,t.bigInt)(8),t.u64be=(0,t.bigIntBE)(8),t.u128=(0,t.bigInt)(16),t.u128be=(0,t.bigIntBE)(16),t.u192=(0,t.bigInt)(24),t.u192be=(0,t.bigIntBE)(24),t.u256=(0,t.bigInt)(32),t.u256be=(0,t.bigIntBE)(32)},66985:function(e,t,n){"use strict";var i=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.decimal=t.WAD=void 0;const r=i(n(91319)),o=n(34997),A=n(98687);t.WAD=new r.default("1e+18"),t.decimal=e=>{const n=(0,A.u128)(e),{encode:i,decode:s}=(0,o.encodeDecode)(n),a=n;return a.decode=(e,n)=>{const i=s(e,n).toString();return new r.default(i).div(t.WAD)},a.encode=(e,n,r)=>{const o=BigInt(e.times(t.WAD).integerValue().toString());return i(o,n,r)},a}},3629:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n),Object.defineProperty(e,i,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(34997),t),r(n(98687),t),r(n(66985),t),r(n(26885),t),r(n(61211),t)},26885:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.bool=void 0;const i=n(54380),r=n(34997);t.bool=e=>{const t=(0,i.u8)(e),{encode:n,decode:o}=(0,r.encodeDecode)(t),A=t;return A.decode=(e,t)=>!!o(e,t),A.encode=(e,t,i)=>{const r=Number(e);return n(r,t,i)},A}},61211:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.publicKey=void 0;const i=n(54380),r=n(97212),o=n(34997);t.publicKey=e=>{const t=(0,i.blob)(32,e),{encode:n,decode:A}=(0,o.encodeDecode)(t),s=t;return s.decode=(e,t)=>{const n=A(e,t);return new r.PublicKey(n)},s.encode=(e,t,i)=>{const r=e.toBuffer();return n(r,t,i)},s}},74946:function(e,t,n){"use strict";var i=n(55872).Buffer,r=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.amountToUiAmount=void 0;const o=n(97212),A=n(38281),s=n(56006);t.amountToUiAmount=function(e,t,n,a,c=A.TOKEN_PROGRAM_ID){return r(this,void 0,void 0,(function*(){const r=(new o.Transaction).add((0,s.createAmountToUiAmountInstruction)(n,a,c)),{returnData:A,err:u}=(yield e.simulateTransaction(r,[t],!1)).value;return(null==A?void 0:A.data)?i.from(A.data[0],A.data[1]).toString("utf-8"):u}))}},86726:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.approve=void 0;const r=n(97212),o=n(38281),A=n(83317),s=n(54008);t.approve=function(e,t,n,a,c,u,l=[],g,d=o.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,o]=(0,s.getSigners)(c,l),h=(new r.Transaction).add((0,A.createApproveInstruction)(n,a,i,u,l,d));return yield(0,r.sendAndConfirmTransaction)(e,h,[t,...o],g)}))}},13685:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.approveChecked=void 0;const r=n(97212),o=n(38281),A=n(54012),s=n(54008);t.approveChecked=function(e,t,n,a,c,u,l,g,d=[],h,p=o.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,o]=(0,s.getSigners)(u,d),f=(new r.Transaction).add((0,A.createApproveCheckedInstruction)(a,n,c,i,l,g,d,p));return yield(0,r.sendAndConfirmTransaction)(e,f,[t,...o],h)}))}},28707:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.burn=void 0;const r=n(97212),o=n(38281),A=n(26249),s=n(54008);t.burn=function(e,t,n,a,c,u,l=[],g,d=o.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,o]=(0,s.getSigners)(c,l),h=(new r.Transaction).add((0,A.createBurnInstruction)(n,a,i,u,l,d));return yield(0,r.sendAndConfirmTransaction)(e,h,[t,...o],g)}))}},47412:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.burnChecked=void 0;const r=n(97212),o=n(38281),A=n(95045),s=n(54008);t.burnChecked=function(e,t,n,a,c,u,l,g=[],d,h=o.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,o]=(0,s.getSigners)(c,g),p=(new r.Transaction).add((0,A.createBurnCheckedInstruction)(n,a,i,u,l,g,h));return yield(0,r.sendAndConfirmTransaction)(e,p,[t,...o],d)}))}},98090:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.closeAccount=void 0;const r=n(97212),o=n(38281),A=n(50726),s=n(54008);t.closeAccount=function(e,t,n,a,c,u=[],l,g=o.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,o]=(0,s.getSigners)(c,u),d=(new r.Transaction).add((0,A.createCloseAccountInstruction)(n,a,i,u,g));return yield(0,r.sendAndConfirmTransaction)(e,d,[t,...o],l)}))}},43934:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.createAccount=void 0;const r=n(97212),o=n(38281),A=n(72705),s=n(5546),a=n(3361),c=n(96090);t.createAccount=function(e,t,n,u,l,g,d=o.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){if(!l)return yield(0,c.createAssociatedTokenAccount)(e,t,n,u,g,d);const i=yield(0,a.getMint)(e,n,null==g?void 0:g.commitment,d),o=(0,A.getAccountLenForMint)(i),h=yield e.getMinimumBalanceForRentExemption(o),p=(new r.Transaction).add(r.SystemProgram.createAccount({fromPubkey:t.publicKey,newAccountPubkey:l.publicKey,space:o,lamports:h,programId:d}),(0,s.createInitializeAccountInstruction)(l.publicKey,n,u,d));return yield(0,r.sendAndConfirmTransaction)(e,p,[t,l],g),l.publicKey}))}},96090:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.createAssociatedTokenAccount=void 0;const r=n(97212),o=n(38281),A=n(23858),s=n(3361);t.createAssociatedTokenAccount=function(e,t,n,a,c,u=o.TOKEN_PROGRAM_ID,l=o.ASSOCIATED_TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const i=yield(0,s.getAssociatedTokenAddress)(n,a,!1,u,l),o=(new r.Transaction).add((0,A.createAssociatedTokenAccountInstruction)(t.publicKey,i,a,n,u,l));return yield(0,r.sendAndConfirmTransaction)(e,o,[t],c),i}))}},86231:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.createAssociatedTokenAccountIdempotent=void 0;const r=n(97212),o=n(38281),A=n(23858),s=n(3361);t.createAssociatedTokenAccountIdempotent=function(e,t,n,a,c,u=o.TOKEN_PROGRAM_ID,l=o.ASSOCIATED_TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const i=yield(0,s.getAssociatedTokenAddress)(n,a,!1,u,l),o=(new r.Transaction).add((0,A.createAssociatedTokenAccountIdempotentInstruction)(t.publicKey,i,a,n,u,l));return yield(0,r.sendAndConfirmTransaction)(e,o,[t],c),i}))}},76562:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.createMint=void 0;const r=n(97212),o=n(38281),A=n(39643),s=n(3361);t.createMint=function(e,t,n,a,c,u=r.Keypair.generate(),l,g=o.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const i=yield(0,s.getMinimumBalanceForRentExemptMint)(e),o=(new r.Transaction).add(r.SystemProgram.createAccount({fromPubkey:t.publicKey,newAccountPubkey:u.publicKey,space:s.MINT_SIZE,lamports:i,programId:g}),(0,A.createInitializeMint2Instruction)(u.publicKey,c,n,a,g));return yield(0,r.sendAndConfirmTransaction)(e,o,[t,u],l),u.publicKey}))}},56627:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.createMultisig=void 0;const r=n(97212),o=n(38281),A=n(67201),s=n(6962);t.createMultisig=function(e,t,n,a,c=r.Keypair.generate(),u,l=o.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const i=yield(0,s.getMinimumBalanceForRentExemptMultisig)(e),o=(new r.Transaction).add(r.SystemProgram.createAccount({fromPubkey:t.publicKey,newAccountPubkey:c.publicKey,space:s.MULTISIG_SIZE,lamports:i,programId:l}),(0,A.createInitializeMultisigInstruction)(c.publicKey,n,a,l));return yield(0,r.sendAndConfirmTransaction)(e,o,[t,c],u),c.publicKey}))}},42811:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.createNativeMint=void 0;const r=n(97212),o=n(38281),A=n(67459);t.createNativeMint=function(e,t,n,s=o.NATIVE_MINT_2022,a=o.TOKEN_2022_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const i=(new r.Transaction).add((0,A.createCreateNativeMintInstruction)(t.publicKey,s,a));yield(0,r.sendAndConfirmTransaction)(e,i,[t],n)}))}},2709:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.createWrappedNativeAccount=void 0;const r=n(97212),o=n(38281),A=n(23858),s=n(5546),a=n(62905),c=n(53739),u=n(3361),l=n(43934);t.createWrappedNativeAccount=function(e,t,n,g,d,h,p=o.TOKEN_PROGRAM_ID,f=o.NATIVE_MINT){return i(this,void 0,void 0,(function*(){if(!g)return yield(0,l.createAccount)(e,t,f,n,d,h,p);if(!d){const i=yield(0,u.getAssociatedTokenAddress)(f,n,!1,p,o.ASSOCIATED_TOKEN_PROGRAM_ID),s=(new r.Transaction).add((0,A.createAssociatedTokenAccountInstruction)(t.publicKey,i,n,f,p,o.ASSOCIATED_TOKEN_PROGRAM_ID),r.SystemProgram.transfer({fromPubkey:t.publicKey,toPubkey:i,lamports:g}),(0,a.createSyncNativeInstruction)(i,p));return yield(0,r.sendAndConfirmTransaction)(e,s,[t],h),i}const i=yield(0,c.getMinimumBalanceForRentExemptAccount)(e),m=(new r.Transaction).add(r.SystemProgram.createAccount({fromPubkey:t.publicKey,newAccountPubkey:d.publicKey,space:c.ACCOUNT_SIZE,lamports:i,programId:p}),r.SystemProgram.transfer({fromPubkey:t.publicKey,toPubkey:d.publicKey,lamports:g}),(0,s.createInitializeAccountInstruction)(d.publicKey,f,n,p));return yield(0,r.sendAndConfirmTransaction)(e,m,[t,d],h),d.publicKey}))}},92493:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.freezeAccount=void 0;const r=n(97212),o=n(38281),A=n(36030),s=n(54008);t.freezeAccount=function(e,t,n,a,c,u=[],l,g=o.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,o]=(0,s.getSigners)(c,u),d=(new r.Transaction).add((0,A.createFreezeAccountInstruction)(n,a,i,u,g));return yield(0,r.sendAndConfirmTransaction)(e,d,[t,...o],l)}))}},30462:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.getOrCreateAssociatedTokenAccount=void 0;const r=n(97212),o=n(38281),A=n(56463),s=n(23858),a=n(53739),c=n(3361);t.getOrCreateAssociatedTokenAccount=function(e,t,n,u,l=!1,g,d,h=o.TOKEN_PROGRAM_ID,p=o.ASSOCIATED_TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const i=yield(0,c.getAssociatedTokenAddress)(n,u,l,h,p);let o;try{o=yield(0,a.getAccount)(e,i,g,h)}catch(c){if(!(c instanceof A.TokenAccountNotFoundError||c instanceof A.TokenInvalidAccountOwnerError))throw c;try{const o=(new r.Transaction).add((0,s.createAssociatedTokenAccountInstruction)(t.publicKey,i,u,n,h,p));yield(0,r.sendAndConfirmTransaction)(e,o,[t],d)}catch(e){}o=yield(0,a.getAccount)(e,i,g,h)}if(!o.mint.equals(n))throw new A.TokenInvalidMintError;if(!o.owner.equals(u))throw new A.TokenInvalidOwnerError;return o}))}},16336:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(74946),t),r(n(86726),t),r(n(13685),t),r(n(28707),t),r(n(47412),t),r(n(98090),t),r(n(43934),t),r(n(96090),t),r(n(86231),t),r(n(76562),t),r(n(56627),t),r(n(42811),t),r(n(2709),t),r(n(92493),t),r(n(30462),t),r(n(73248),t),r(n(70416),t),r(n(65377),t),r(n(76753),t),r(n(92999),t),r(n(11645),t),r(n(50638),t),r(n(6663),t),r(n(43368),t)},54008:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getSigners=void 0;const i=n(97212);t.getSigners=function(e,t){return e instanceof i.PublicKey?[e,t]:[e.publicKey,[e]]}},73248:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.mintTo=void 0;const r=n(97212),o=n(38281),A=n(37448),s=n(54008);t.mintTo=function(e,t,n,a,c,u,l=[],g,d=o.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,o]=(0,s.getSigners)(c,l),h=(new r.Transaction).add((0,A.createMintToInstruction)(n,a,i,u,l,d));return yield(0,r.sendAndConfirmTransaction)(e,h,[t,...o],g)}))}},70416:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.mintToChecked=void 0;const r=n(97212),o=n(38281),A=n(94382),s=n(54008);t.mintToChecked=function(e,t,n,a,c,u,l,g=[],d,h=o.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,o]=(0,s.getSigners)(c,g),p=(new r.Transaction).add((0,A.createMintToCheckedInstruction)(n,a,i,u,l,g,h));return yield(0,r.sendAndConfirmTransaction)(e,p,[t,...o],d)}))}},65377:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.revoke=void 0;const r=n(97212),o=n(38281),A=n(4446),s=n(54008);t.revoke=function(e,t,n,a,c=[],u,l=o.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,o]=(0,s.getSigners)(a,c),g=(new r.Transaction).add((0,A.createRevokeInstruction)(n,i,c,l));return yield(0,r.sendAndConfirmTransaction)(e,g,[t,...o],u)}))}},76753:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.setAuthority=void 0;const r=n(97212),o=n(38281),A=n(12011),s=n(54008);t.setAuthority=function(e,t,n,a,c,u,l=[],g,d=o.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,o]=(0,s.getSigners)(a,l),h=(new r.Transaction).add((0,A.createSetAuthorityInstruction)(n,i,c,u,l,d));return yield(0,r.sendAndConfirmTransaction)(e,h,[t,...o],g)}))}},92999:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.syncNative=void 0;const r=n(97212),o=n(38281),A=n(62905);t.syncNative=function(e,t,n,s,a=o.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const i=(new r.Transaction).add((0,A.createSyncNativeInstruction)(n,a));return yield(0,r.sendAndConfirmTransaction)(e,i,[t],s)}))}},11645:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.thawAccount=void 0;const r=n(97212),o=n(38281),A=n(48210),s=n(54008);t.thawAccount=function(e,t,n,a,c,u=[],l,g=o.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,o]=(0,s.getSigners)(c,u),d=(new r.Transaction).add((0,A.createThawAccountInstruction)(n,a,i,u,g));return yield(0,r.sendAndConfirmTransaction)(e,d,[t,...o],l)}))}},50638:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.transfer=void 0;const r=n(97212),o=n(38281),A=n(50986),s=n(54008);t.transfer=function(e,t,n,a,c,u,l=[],g,d=o.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,o]=(0,s.getSigners)(c,l),h=(new r.Transaction).add((0,A.createTransferInstruction)(n,a,i,u,l,d));return yield(0,r.sendAndConfirmTransaction)(e,h,[t,...o],g)}))}},6663:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.transferChecked=void 0;const r=n(97212),o=n(38281),A=n(25956),s=n(54008);t.transferChecked=function(e,t,n,a,c,u,l,g,d=[],h,p=o.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,o]=(0,s.getSigners)(u,d),f=(new r.Transaction).add((0,A.createTransferCheckedInstruction)(n,a,c,i,l,g,d,p));return yield(0,r.sendAndConfirmTransaction)(e,f,[t,...o],h)}))}},43368:function(e,t,n){"use strict";var i=n(55872).Buffer,r=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.uiAmountToAmount=void 0;const o=n(3629),A=n(97212),s=n(38281),a=n(82729);t.uiAmountToAmount=function(e,t,n,c,u=s.TOKEN_PROGRAM_ID){return r(this,void 0,void 0,(function*(){const r=(new A.Transaction).add((0,a.createUiAmountToAmountInstruction)(n,c,u)),{returnData:s,err:l}=(yield e.simulateTransaction(r,[t],!1)).value;if(s){const e=i.from(s.data[0],s.data[1]);return(0,o.u64)().decode(e)}return l}))}},38281:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.programSupportsExtensions=t.NATIVE_MINT_2022=t.NATIVE_MINT=t.ASSOCIATED_TOKEN_PROGRAM_ID=t.TOKEN_2022_PROGRAM_ID=t.TOKEN_PROGRAM_ID=void 0;const i=n(97212);t.TOKEN_PROGRAM_ID=new i.PublicKey("TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"),t.TOKEN_2022_PROGRAM_ID=new i.PublicKey("TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"),t.ASSOCIATED_TOKEN_PROGRAM_ID=new i.PublicKey("ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL"),t.NATIVE_MINT=new i.PublicKey("So11111111111111111111111111111111111111112"),t.NATIVE_MINT_2022=new i.PublicKey("9pan9bMn5HatX4EJdBwg9VgCa7Uz5HL8N1m5D3NdXejP"),t.programSupportsExtensions=function(e){return e!==t.TOKEN_PROGRAM_ID}},56463:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TokenUnsupportedInstructionError=t.TokenInvalidInstructionTypeError=t.TokenInvalidInstructionDataError=t.TokenInvalidInstructionKeysError=t.TokenInvalidInstructionProgramError=t.TokenOwnerOffCurveError=t.TokenInvalidOwnerError=t.TokenInvalidMintError=t.TokenInvalidAccountSizeError=t.TokenInvalidAccountOwnerError=t.TokenInvalidAccountError=t.TokenAccountNotFoundError=t.TokenError=void 0;class n extends Error{constructor(e){super(e)}}t.TokenError=n,t.TokenAccountNotFoundError=class extends n{constructor(){super(...arguments),this.name="TokenAccountNotFoundError"}},t.TokenInvalidAccountError=class extends n{constructor(){super(...arguments),this.name="TokenInvalidAccountError"}},t.TokenInvalidAccountOwnerError=class extends n{constructor(){super(...arguments),this.name="TokenInvalidAccountOwnerError"}},t.TokenInvalidAccountSizeError=class extends n{constructor(){super(...arguments),this.name="TokenInvalidAccountSizeError"}},t.TokenInvalidMintError=class extends n{constructor(){super(...arguments),this.name="TokenInvalidMintError"}},t.TokenInvalidOwnerError=class extends n{constructor(){super(...arguments),this.name="TokenInvalidOwnerError"}},t.TokenOwnerOffCurveError=class extends n{constructor(){super(...arguments),this.name="TokenOwnerOffCurveError"}},t.TokenInvalidInstructionProgramError=class extends n{constructor(){super(...arguments),this.name="TokenInvalidInstructionProgramError"}},t.TokenInvalidInstructionKeysError=class extends n{constructor(){super(...arguments),this.name="TokenInvalidInstructionKeysError"}},t.TokenInvalidInstructionDataError=class extends n{constructor(){super(...arguments),this.name="TokenInvalidInstructionDataError"}},t.TokenInvalidInstructionTypeError=class extends n{constructor(){super(...arguments),this.name="TokenInvalidInstructionTypeError"}},t.TokenUnsupportedInstructionError=class extends n{constructor(){super(...arguments),this.name="TokenUnsupportedInstructionError"}}},13729:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.ACCOUNT_TYPE_SIZE=t.AccountType=void 0,(n=t.AccountType||(t.AccountType={}))[n.Uninitialized=0]="Uninitialized",n[n.Mint=1]="Mint",n[n.Account=2]="Account",t.ACCOUNT_TYPE_SIZE=1},61208:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.disableCpiGuard=t.enableCpiGuard=void 0;const r=n(97212),o=n(54008),A=n(38281),s=n(19341);t.enableCpiGuard=function(e,t,n,a,c=[],u,l=A.TOKEN_2022_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,A]=(0,o.getSigners)(a,c),g=(new r.Transaction).add((0,s.createEnableCpiGuardInstruction)(n,i,A,l));return yield(0,r.sendAndConfirmTransaction)(e,g,[t,...A],u)}))},t.disableCpiGuard=function(e,t,n,a,c=[],u,l=A.TOKEN_2022_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,A]=(0,o.getSigners)(a,c),g=(new r.Transaction).add((0,s.createDisableCpiGuardInstruction)(n,i,A,l));return yield(0,r.sendAndConfirmTransaction)(e,g,[t,...A],u)}))}},94525:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(61208),t),r(n(19341),t),r(n(20623),t)},19341:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.createDisableCpiGuardInstruction=t.createEnableCpiGuardInstruction=t.cpiGuardInstructionData=t.CpiGuardInstruction=void 0;const r=n(54380),o=n(97212),A=n(38281),s=n(56463),a=n(79506),c=n(79697);var u;function l(e,n,r,u,l){if(!(0,A.programSupportsExtensions)(l))throw new s.TokenUnsupportedInstructionError;const g=(0,a.addSigners)([{pubkey:n,isSigner:!1,isWritable:!0}],r,u),d=i.alloc(t.cpiGuardInstructionData.span);return t.cpiGuardInstructionData.encode({instruction:c.TokenInstruction.CpiGuardExtension,cpiGuardInstruction:e},d),new o.TransactionInstruction({keys:g,programId:l,data:d})}!function(e){e[e.Enable=0]="Enable",e[e.Disable=1]="Disable"}(u=t.CpiGuardInstruction||(t.CpiGuardInstruction={})),t.cpiGuardInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,r.u8)("cpiGuardInstruction")]),t.createEnableCpiGuardInstruction=function(e,t,n=[],i=A.TOKEN_2022_PROGRAM_ID){return l(u.Enable,e,t,n,i)},t.createDisableCpiGuardInstruction=function(e,t,n=[],i=A.TOKEN_2022_PROGRAM_ID){return l(u.Disable,e,t,n,i)}},20623:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getCpiGuard=t.CPI_GUARD_SIZE=t.CpiGuardLayout=void 0;const i=n(54380),r=n(3629),o=n(72705);t.CpiGuardLayout=(0,i.struct)([(0,r.bool)("lockCpi")]),t.CPI_GUARD_SIZE=t.CpiGuardLayout.span,t.getCpiGuard=function(e){const n=(0,o.getExtensionData)(o.ExtensionType.CpiGuard,e.tlvData);return null!==n?t.CpiGuardLayout.decode(n):null}},32358:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.updateDefaultAccountState=t.initializeDefaultAccountState=void 0;const r=n(97212),o=n(54008),A=n(38281),s=n(25798);t.initializeDefaultAccountState=function(e,t,n,o,a,c=A.TOKEN_2022_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const i=(new r.Transaction).add((0,s.createInitializeDefaultAccountStateInstruction)(n,o,c));return yield(0,r.sendAndConfirmTransaction)(e,i,[t],a)}))},t.updateDefaultAccountState=function(e,t,n,a,c,u=[],l,g=A.TOKEN_2022_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,A]=(0,o.getSigners)(c,u),d=(new r.Transaction).add((0,s.createUpdateDefaultAccountStateInstruction)(n,a,i,A,g));return yield(0,r.sendAndConfirmTransaction)(e,d,[t,...A],l)}))}},80882:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(32358),t),r(n(25798),t),r(n(74311),t)},25798:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.createUpdateDefaultAccountStateInstruction=t.createInitializeDefaultAccountStateInstruction=t.defaultAccountStateInstructionData=t.DefaultAccountStateInstruction=void 0;const r=n(54380),o=n(97212),A=n(38281),s=n(56463),a=n(79506),c=n(79697);var u;!function(e){e[e.Initialize=0]="Initialize",e[e.Update=1]="Update"}(u=t.DefaultAccountStateInstruction||(t.DefaultAccountStateInstruction={})),t.defaultAccountStateInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,r.u8)("defaultAccountStateInstruction"),(0,r.u8)("accountState")]),t.createInitializeDefaultAccountStateInstruction=function(e,n,r=A.TOKEN_2022_PROGRAM_ID){if(!(0,A.programSupportsExtensions)(r))throw new s.TokenUnsupportedInstructionError;const a=[{pubkey:e,isSigner:!1,isWritable:!0}],l=i.alloc(t.defaultAccountStateInstructionData.span);return t.defaultAccountStateInstructionData.encode({instruction:c.TokenInstruction.DefaultAccountStateExtension,defaultAccountStateInstruction:u.Initialize,accountState:n},l),new o.TransactionInstruction({keys:a,programId:r,data:l})},t.createUpdateDefaultAccountStateInstruction=function(e,n,r,l=[],g=A.TOKEN_2022_PROGRAM_ID){if(!(0,A.programSupportsExtensions)(g))throw new s.TokenUnsupportedInstructionError;const d=(0,a.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0}],r,l),h=i.alloc(t.defaultAccountStateInstructionData.span);return t.defaultAccountStateInstructionData.encode({instruction:c.TokenInstruction.DefaultAccountStateExtension,defaultAccountStateInstruction:u.Update,accountState:n},h),new o.TransactionInstruction({keys:d,programId:g,data:h})}},74311:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getDefaultAccountState=t.DEFAULT_ACCOUNT_STATE_SIZE=t.DefaultAccountStateLayout=void 0;const i=n(54380),r=n(72705);t.DefaultAccountStateLayout=(0,i.struct)([(0,i.u8)("state")]),t.DEFAULT_ACCOUNT_STATE_SIZE=t.DefaultAccountStateLayout.span,t.getDefaultAccountState=function(e){const n=(0,r.getExtensionData)(r.ExtensionType.DefaultAccountState,e.tlvData);return null!==n?t.DefaultAccountStateLayout.decode(n):null}},72705:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getAccountLenForMint=t.getExtensionTypes=t.getExtensionData=t.getAccountLen=t.getMintLen=t.getAccountTypeOfMintType=t.isAccountExtension=t.isMintExtension=t.getTypeLen=t.LENGTH_SIZE=t.TYPE_SIZE=t.ExtensionType=void 0;const i=n(53739),r=n(3361),o=n(6962),A=n(13729),s=n(94525),a=n(80882),c=n(14750),u=n(87526),l=n(17111),g=n(75350),d=n(40097),h=n(56851),p=n(47359);var f;function m(e){switch(e){case f.Uninitialized:return 0;case f.TransferFeeConfig:return p.TRANSFER_FEE_CONFIG_SIZE;case f.TransferFeeAmount:return p.TRANSFER_FEE_AMOUNT_SIZE;case f.MintCloseAuthority:return g.MINT_CLOSE_AUTHORITY_SIZE;case f.ConfidentialTransferMint:return 97;case f.ConfidentialTransferAccount:return 286;case f.CpiGuard:return s.CPI_GUARD_SIZE;case f.DefaultAccountState:return a.DEFAULT_ACCOUNT_STATE_SIZE;case f.ImmutableOwner:return c.IMMUTABLE_OWNER_SIZE;case f.MemoTransfer:return l.MEMO_TRANSFER_SIZE;case f.NonTransferable:return d.NON_TRANSFERABLE_SIZE;case f.InterestBearingConfig:return u.INTEREST_BEARING_MINT_CONFIG_STATE_SIZE;case f.PermanentDelegate:return h.PERMANENT_DELEGATE_SIZE;default:throw Error(`Unknown extension type: ${e}`)}}function I(e){switch(e){case f.TransferFeeConfig:return f.TransferFeeAmount;case f.ConfidentialTransferMint:return f.ConfidentialTransferAccount;case f.TransferFeeAmount:case f.ConfidentialTransferAccount:case f.CpiGuard:case f.DefaultAccountState:case f.ImmutableOwner:case f.MemoTransfer:case f.MintCloseAuthority:case f.NonTransferable:case f.Uninitialized:case f.InterestBearingConfig:case f.PermanentDelegate:return f.Uninitialized}}function y(e,n){if(0===e.length)return n;{const n=i.ACCOUNT_SIZE+A.ACCOUNT_TYPE_SIZE+e.filter(((t,n)=>n===e.indexOf(t))).map((e=>m(e)+t.TYPE_SIZE+t.LENGTH_SIZE)).reduce(((e,t)=>e+t));return n===o.MULTISIG_SIZE?n+t.TYPE_SIZE:n}}function B(e){return y(e,i.ACCOUNT_SIZE)}function C(e){const n=[];let i=0;for(;i{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getImmutableOwner=t.IMMUTABLE_OWNER_SIZE=t.ImmutableOwnerLayout=void 0;const i=n(54380),r=n(72705);t.ImmutableOwnerLayout=(0,i.struct)([]),t.IMMUTABLE_OWNER_SIZE=t.ImmutableOwnerLayout.span,t.getImmutableOwner=function(e){const n=(0,r.getExtensionData)(r.ExtensionType.ImmutableOwner,e.tlvData);return null!==n?t.ImmutableOwnerLayout.decode(n):null}},92292:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(13729),t),r(n(94525),t),r(n(80882),t),r(n(72705),t),r(n(14750),t),r(n(92466),t),r(n(17111),t),r(n(75350),t),r(n(40097),t),r(n(47359),t),r(n(56851),t)},24908:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.updateRateInterestBearingMint=t.createInterestBearingMint=void 0;const r=n(97212),o=n(54008),A=n(38281),s=n(99217),a=n(72705),c=n(53100);t.createInterestBearingMint=function(e,t,n,o,u,l,g,d=r.Keypair.generate(),h,p=A.TOKEN_2022_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const i=(0,a.getMintLen)([a.ExtensionType.InterestBearingConfig]),A=yield e.getMinimumBalanceForRentExemption(i),f=(new r.Transaction).add(r.SystemProgram.createAccount({fromPubkey:t.publicKey,newAccountPubkey:d.publicKey,space:i,lamports:A,programId:p}),(0,c.createInitializeInterestBearingMintInstruction)(d.publicKey,u,l,p),(0,s.createInitializeMintInstruction)(d.publicKey,g,n,o,p));return yield(0,r.sendAndConfirmTransaction)(e,f,[t,d],h),d.publicKey}))},t.updateRateInterestBearingMint=function(e,t,n,s,a,u=[],l,g=A.TOKEN_2022_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,A]=(0,o.getSigners)(s,u),d=(new r.Transaction).add((0,c.createUpdateRateInterestBearingMintInstruction)(n,i,a,A,g));return yield(0,r.sendAndConfirmTransaction)(e,d,[t,s,...A],l)}))}},92466:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(24908),t),r(n(53100),t),r(n(87526),t)},53100:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.createUpdateRateInterestBearingMintInstruction=t.createInitializeInterestBearingMintInstruction=t.interestBearingMintUpdateRateInstructionData=t.interestBearingMintInitializeInstructionData=t.InterestBearingMintInstruction=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(38281),a=n(79506),c=n(79697);var u;!function(e){e[e.Initialize=0]="Initialize",e[e.UpdateRate=1]="UpdateRate"}(u=t.InterestBearingMintInstruction||(t.InterestBearingMintInstruction={})),t.interestBearingMintInitializeInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,r.u8)("interestBearingMintInstruction"),(0,o.publicKey)("rateAuthority"),(0,r.s16)("rate")]),t.interestBearingMintUpdateRateInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,r.u8)("interestBearingMintInstruction"),(0,r.s16)("rate")]),t.createInitializeInterestBearingMintInstruction=function(e,n,r,o=s.TOKEN_2022_PROGRAM_ID){const a=[{pubkey:e,isSigner:!1,isWritable:!0}],l=i.alloc(t.interestBearingMintInitializeInstructionData.span);return t.interestBearingMintInitializeInstructionData.encode({instruction:c.TokenInstruction.InterestBearingMintExtension,interestBearingMintInstruction:u.Initialize,rateAuthority:n,rate:r},l),new A.TransactionInstruction({keys:a,programId:o,data:l})},t.createUpdateRateInterestBearingMintInstruction=function(e,n,r,o=[],l=s.TOKEN_2022_PROGRAM_ID){const g=(0,a.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!o.length,isWritable:!1}],n,o),d=i.alloc(t.interestBearingMintUpdateRateInstructionData.span);return t.interestBearingMintUpdateRateInstructionData.encode({instruction:c.TokenInstruction.InterestBearingMintExtension,interestBearingMintInstruction:u.UpdateRate,rate:r},d),new A.TransactionInstruction({keys:g,programId:l,data:d})}},87526:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getInterestBearingMintConfigState=t.INTEREST_BEARING_MINT_CONFIG_STATE_SIZE=t.InterestBearingMintConfigStateLayout=void 0;const i=n(54380),r=n(3629),o=n(72705);t.InterestBearingMintConfigStateLayout=(0,i.struct)([(0,r.publicKey)("rateAuthority"),(0,i.ns64)("initializationTimestamp"),(0,i.s16)("preUpdateAverageRate"),(0,i.ns64)("lastUpdateTimestamp"),(0,i.s16)("currentRate")]),t.INTEREST_BEARING_MINT_CONFIG_STATE_SIZE=t.InterestBearingMintConfigStateLayout.span,t.getInterestBearingMintConfigState=function(e){const n=(0,o.getExtensionData)(o.ExtensionType.InterestBearingConfig,e.tlvData);return null!==n?t.InterestBearingMintConfigStateLayout.decode(n):null}},57684:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.disableRequiredMemoTransfers=t.enableRequiredMemoTransfers=void 0;const r=n(97212),o=n(54008),A=n(38281),s=n(15787);t.enableRequiredMemoTransfers=function(e,t,n,a,c=[],u,l=A.TOKEN_2022_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,A]=(0,o.getSigners)(a,c),g=(new r.Transaction).add((0,s.createEnableRequiredMemoTransfersInstruction)(n,i,A,l));return yield(0,r.sendAndConfirmTransaction)(e,g,[t,...A],u)}))},t.disableRequiredMemoTransfers=function(e,t,n,a,c=[],u,l=A.TOKEN_2022_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,A]=(0,o.getSigners)(a,c),g=(new r.Transaction).add((0,s.createDisableRequiredMemoTransfersInstruction)(n,i,A,l));return yield(0,r.sendAndConfirmTransaction)(e,g,[t,...A],u)}))}},17111:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(57684),t),r(n(15787),t),r(n(59349),t)},15787:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.createDisableRequiredMemoTransfersInstruction=t.createEnableRequiredMemoTransfersInstruction=t.memoTransferInstructionData=t.MemoTransferInstruction=void 0;const r=n(54380),o=n(97212),A=n(38281),s=n(56463),a=n(79506),c=n(79697);var u;function l(e,n,r,u,l){if(!(0,A.programSupportsExtensions)(l))throw new s.TokenUnsupportedInstructionError;const g=(0,a.addSigners)([{pubkey:n,isSigner:!1,isWritable:!0}],r,u),d=i.alloc(t.memoTransferInstructionData.span);return t.memoTransferInstructionData.encode({instruction:c.TokenInstruction.MemoTransferExtension,memoTransferInstruction:e},d),new o.TransactionInstruction({keys:g,programId:l,data:d})}!function(e){e[e.Enable=0]="Enable",e[e.Disable=1]="Disable"}(u=t.MemoTransferInstruction||(t.MemoTransferInstruction={})),t.memoTransferInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,r.u8)("memoTransferInstruction")]),t.createEnableRequiredMemoTransfersInstruction=function(e,t,n=[],i=A.TOKEN_2022_PROGRAM_ID){return l(u.Enable,e,t,n,i)},t.createDisableRequiredMemoTransfersInstruction=function(e,t,n=[],i=A.TOKEN_2022_PROGRAM_ID){return l(u.Disable,e,t,n,i)}},59349:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getMemoTransfer=t.MEMO_TRANSFER_SIZE=t.MemoTransferLayout=void 0;const i=n(54380),r=n(3629),o=n(72705);t.MemoTransferLayout=(0,i.struct)([(0,r.bool)("requireIncomingTransferMemos")]),t.MEMO_TRANSFER_SIZE=t.MemoTransferLayout.span,t.getMemoTransfer=function(e){const n=(0,o.getExtensionData)(o.ExtensionType.MemoTransfer,e.tlvData);return null!==n?t.MemoTransferLayout.decode(n):null}},75350:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getMintCloseAuthority=t.MINT_CLOSE_AUTHORITY_SIZE=t.MintCloseAuthorityLayout=void 0;const i=n(54380),r=n(3629),o=n(72705);t.MintCloseAuthorityLayout=(0,i.struct)([(0,r.publicKey)("closeAuthority")]),t.MINT_CLOSE_AUTHORITY_SIZE=t.MintCloseAuthorityLayout.span,t.getMintCloseAuthority=function(e){const n=(0,o.getExtensionData)(o.ExtensionType.MintCloseAuthority,e.tlvData);return null!==n?t.MintCloseAuthorityLayout.decode(n):null}},40097:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getNonTransferable=t.NON_TRANSFERABLE_SIZE=t.NonTransferableLayout=void 0;const i=n(54380),r=n(72705);t.NonTransferableLayout=(0,i.struct)([]),t.NON_TRANSFERABLE_SIZE=t.NonTransferableLayout.span,t.getNonTransferable=function(e){const n=(0,r.getExtensionData)(r.ExtensionType.NonTransferable,e.tlvData);return null!==n?t.NonTransferableLayout.decode(n):null}},56851:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getPermanentDelegate=t.PERMANENT_DELEGATE_SIZE=t.PermanentDelegateLayout=void 0;const i=n(54380),r=n(3629),o=n(72705);t.PermanentDelegateLayout=(0,i.struct)([(0,r.publicKey)("delegate")]),t.PERMANENT_DELEGATE_SIZE=t.PermanentDelegateLayout.span,t.getPermanentDelegate=function(e){const n=(0,o.getExtensionData)(o.ExtensionType.PermanentDelegate,e.tlvData);return null!==n?t.PermanentDelegateLayout.decode(n):null}},72893:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.harvestWithheldTokensToMint=t.withdrawWithheldTokensFromAccounts=t.withdrawWithheldTokensFromMint=t.transferCheckedWithFee=void 0;const r=n(97212),o=n(54008),A=n(38281),s=n(75817);t.transferCheckedWithFee=function(e,t,n,a,c,u,l,g,d,h=[],p,f=A.TOKEN_2022_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,A]=(0,o.getSigners)(u,h),m=(new r.Transaction).add((0,s.createTransferCheckedWithFeeInstruction)(n,a,c,i,l,g,d,h,f));return yield(0,r.sendAndConfirmTransaction)(e,m,[t,...A],p)}))},t.withdrawWithheldTokensFromMint=function(e,t,n,a,c,u=[],l,g=A.TOKEN_2022_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,A]=(0,o.getSigners)(c,u),d=(new r.Transaction).add((0,s.createWithdrawWithheldTokensFromMintInstruction)(n,a,i,A,g));return yield(0,r.sendAndConfirmTransaction)(e,d,[t,...A],l)}))},t.withdrawWithheldTokensFromAccounts=function(e,t,n,a,c,u,l,g,d=A.TOKEN_2022_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const[i,A]=(0,o.getSigners)(c,u),h=(new r.Transaction).add((0,s.createWithdrawWithheldTokensFromAccountsInstruction)(n,a,i,A,l,d));return yield(0,r.sendAndConfirmTransaction)(e,h,[t,...A],g)}))},t.harvestWithheldTokensToMint=function(e,t,n,o,a,c=A.TOKEN_2022_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const i=(new r.Transaction).add((0,s.createHarvestWithheldTokensToMintInstruction)(n,o,c));return yield(0,r.sendAndConfirmTransaction)(e,i,[t],a)}))}},47359:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(72893),t),r(n(75817),t),r(n(6981),t)},75817:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeHarvestWithheldTokensToMintInstructionUnchecked=t.decodeHarvestWithheldTokensToMintInstruction=t.createHarvestWithheldTokensToMintInstruction=t.harvestWithheldTokensToMintInstructionData=t.decodeWithdrawWithheldTokensFromAccountsInstructionUnchecked=t.decodeWithdrawWithheldTokensFromAccountsInstruction=t.createWithdrawWithheldTokensFromAccountsInstruction=t.withdrawWithheldTokensFromAccountsInstructionData=t.decodeWithdrawWithheldTokensFromMintInstructionUnchecked=t.decodeWithdrawWithheldTokensFromMintInstruction=t.createWithdrawWithheldTokensFromMintInstruction=t.withdrawWithheldTokensFromMintInstructionData=t.decodeTransferCheckedWithFeeInstructionUnchecked=t.decodeTransferCheckedWithFeeInstruction=t.createTransferCheckedWithFeeInstruction=t.transferCheckedWithFeeInstructionData=t.decodeInitializeTransferFeeConfigInstructionUnchecked=t.decodeInitializeTransferFeeConfigInstruction=t.createInitializeTransferFeeConfigInstruction=t.initializeTransferFeeConfigInstructionData=t.TransferFeeInstruction=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(38281),a=n(56463),c=n(79506),u=n(79697);var l;function g({programId:e,keys:[n],data:i}){const{instruction:r,transferFeeInstruction:o,transferFeeConfigAuthorityOption:A,transferFeeConfigAuthority:s,withdrawWithheldAuthorityOption:a,withdrawWithheldAuthority:c,transferFeeBasisPoints:u,maximumFee:l}=t.initializeTransferFeeConfigInstructionData.decode(i);return{programId:e,keys:{mint:n},data:{instruction:r,transferFeeInstruction:o,transferFeeConfigAuthority:A?s:null,withdrawWithheldAuthority:a?c:null,transferFeeBasisPoints:u,maximumFee:l}}}function d({programId:e,keys:[n,i,r,o,...A],data:s}){const{instruction:a,transferFeeInstruction:c,amount:u,decimals:l,fee:g}=t.transferCheckedWithFeeInstructionData.decode(s);return{programId:e,keys:{source:n,mint:i,destination:r,authority:o,signers:A},data:{instruction:a,transferFeeInstruction:c,amount:u,decimals:l,fee:g}}}function h({programId:e,keys:[n,i,r,...o],data:A}){const{instruction:s,transferFeeInstruction:a}=t.withdrawWithheldTokensFromMintInstructionData.decode(A);return{programId:e,keys:{mint:n,destination:i,authority:r,signers:o},data:{instruction:s,transferFeeInstruction:a}}}function p({programId:e,keys:n,data:i}){const{instruction:r,transferFeeInstruction:o,numTokenAccounts:A}=t.withdrawWithheldTokensFromAccountsInstructionData.decode(i),[s,a,c,u,l]=[n[0],n[1],n[2],n.slice(3,3+A),n.slice(-1*A)];return{programId:e,keys:{mint:s,destination:a,authority:c,signers:u,sources:l},data:{instruction:r,transferFeeInstruction:o,numTokenAccounts:A}}}function f({programId:e,keys:[n,...i],data:r}){const{instruction:o,transferFeeInstruction:A}=t.harvestWithheldTokensToMintInstructionData.decode(r);return{programId:e,keys:{mint:n,sources:i},data:{instruction:o,transferFeeInstruction:A}}}!function(e){e[e.InitializeTransferFeeConfig=0]="InitializeTransferFeeConfig",e[e.TransferCheckedWithFee=1]="TransferCheckedWithFee",e[e.WithdrawWithheldTokensFromMint=2]="WithdrawWithheldTokensFromMint",e[e.WithdrawWithheldTokensFromAccounts=3]="WithdrawWithheldTokensFromAccounts",e[e.HarvestWithheldTokensToMint=4]="HarvestWithheldTokensToMint",e[e.SetTransferFee=5]="SetTransferFee"}(l=t.TransferFeeInstruction||(t.TransferFeeInstruction={})),t.initializeTransferFeeConfigInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,r.u8)("transferFeeInstruction"),(0,r.u8)("transferFeeConfigAuthorityOption"),(0,o.publicKey)("transferFeeConfigAuthority"),(0,r.u8)("withdrawWithheldAuthorityOption"),(0,o.publicKey)("withdrawWithheldAuthority"),(0,r.u16)("transferFeeBasisPoints"),(0,o.u64)("maximumFee")]),t.createInitializeTransferFeeConfigInstruction=function(e,n,r,o,c,g=s.TOKEN_2022_PROGRAM_ID){if(!(0,s.programSupportsExtensions)(g))throw new a.TokenUnsupportedInstructionError;const d=[{pubkey:e,isSigner:!1,isWritable:!0}],h=i.alloc(t.initializeTransferFeeConfigInstructionData.span);return t.initializeTransferFeeConfigInstructionData.encode({instruction:u.TokenInstruction.TransferFeeExtension,transferFeeInstruction:l.InitializeTransferFeeConfig,transferFeeConfigAuthorityOption:n?1:0,transferFeeConfigAuthority:n||new A.PublicKey(0),withdrawWithheldAuthorityOption:r?1:0,withdrawWithheldAuthority:r||new A.PublicKey(0),transferFeeBasisPoints:o,maximumFee:c},h),new A.TransactionInstruction({keys:d,programId:g,data:h})},t.decodeInitializeTransferFeeConfigInstruction=function(e,n){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.initializeTransferFeeConfigInstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{mint:i},data:r}=g(e);if(r.instruction!==u.TokenInstruction.TransferFeeExtension||r.transferFeeInstruction!==l.InitializeTransferFeeConfig)throw new a.TokenInvalidInstructionTypeError;if(!i)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{mint:i},data:r}},t.decodeInitializeTransferFeeConfigInstructionUnchecked=g,t.transferCheckedWithFeeInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,r.u8)("transferFeeInstruction"),(0,o.u64)("amount"),(0,r.u8)("decimals"),(0,o.u64)("fee")]),t.createTransferCheckedWithFeeInstruction=function(e,n,r,o,g,d,h,p=[],f=s.TOKEN_2022_PROGRAM_ID){if(!(0,s.programSupportsExtensions)(f))throw new a.TokenUnsupportedInstructionError;const m=i.alloc(t.transferCheckedWithFeeInstructionData.span);t.transferCheckedWithFeeInstructionData.encode({instruction:u.TokenInstruction.TransferFeeExtension,transferFeeInstruction:l.TransferCheckedWithFee,amount:g,decimals:d,fee:h},m);const I=(0,c.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0}],o,p);return new A.TransactionInstruction({keys:I,programId:f,data:m})},t.decodeTransferCheckedWithFeeInstruction=function(e,n){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.transferCheckedWithFeeInstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{source:i,mint:r,destination:o,authority:A,signers:s},data:c}=d(e);if(c.instruction!==u.TokenInstruction.TransferFeeExtension||c.transferFeeInstruction!==l.TransferCheckedWithFee)throw new a.TokenInvalidInstructionTypeError;if(!r)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{source:i,mint:r,destination:o,authority:A,signers:s||null},data:c}},t.decodeTransferCheckedWithFeeInstructionUnchecked=d,t.withdrawWithheldTokensFromMintInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,r.u8)("transferFeeInstruction")]),t.createWithdrawWithheldTokensFromMintInstruction=function(e,n,r,o=[],g=s.TOKEN_2022_PROGRAM_ID){if(!(0,s.programSupportsExtensions)(g))throw new a.TokenUnsupportedInstructionError;const d=i.alloc(t.withdrawWithheldTokensFromMintInstructionData.span);t.withdrawWithheldTokensFromMintInstructionData.encode({instruction:u.TokenInstruction.TransferFeeExtension,transferFeeInstruction:l.WithdrawWithheldTokensFromMint},d);const h=(0,c.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0}],r,o);return new A.TransactionInstruction({keys:h,programId:g,data:d})},t.decodeWithdrawWithheldTokensFromMintInstruction=function(e,n){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.withdrawWithheldTokensFromMintInstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{mint:i,destination:r,authority:o,signers:A},data:s}=h(e);if(s.instruction!==u.TokenInstruction.TransferFeeExtension||s.transferFeeInstruction!==l.WithdrawWithheldTokensFromMint)throw new a.TokenInvalidInstructionTypeError;if(!i)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{mint:i,destination:r,authority:o,signers:A||null},data:s}},t.decodeWithdrawWithheldTokensFromMintInstructionUnchecked=h,t.withdrawWithheldTokensFromAccountsInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,r.u8)("transferFeeInstruction"),(0,r.u8)("numTokenAccounts")]),t.createWithdrawWithheldTokensFromAccountsInstruction=function(e,n,r,o,g,d=s.TOKEN_2022_PROGRAM_ID){if(!(0,s.programSupportsExtensions)(d))throw new a.TokenUnsupportedInstructionError;const h=i.alloc(t.withdrawWithheldTokensFromAccountsInstructionData.span);t.withdrawWithheldTokensFromAccountsInstructionData.encode({instruction:u.TokenInstruction.TransferFeeExtension,transferFeeInstruction:l.WithdrawWithheldTokensFromAccounts,numTokenAccounts:g.length},h);const p=(0,c.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0}],r,o);for(const e of g)p.push({pubkey:e,isSigner:!1,isWritable:!0});return new A.TransactionInstruction({keys:p,programId:d,data:h})},t.decodeWithdrawWithheldTokensFromAccountsInstruction=function(e,n){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.withdrawWithheldTokensFromAccountsInstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{mint:i,destination:r,authority:o,signers:A,sources:s},data:c}=p(e);if(c.instruction!==u.TokenInstruction.TransferFeeExtension||c.transferFeeInstruction!==l.WithdrawWithheldTokensFromAccounts)throw new a.TokenInvalidInstructionTypeError;if(!i)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{mint:i,destination:r,authority:o,signers:A||null,sources:s||null},data:c}},t.decodeWithdrawWithheldTokensFromAccountsInstructionUnchecked=p,t.harvestWithheldTokensToMintInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,r.u8)("transferFeeInstruction")]),t.createHarvestWithheldTokensToMintInstruction=function(e,n,r=s.TOKEN_2022_PROGRAM_ID){if(!(0,s.programSupportsExtensions)(r))throw new a.TokenUnsupportedInstructionError;const o=i.alloc(t.harvestWithheldTokensToMintInstructionData.span);t.harvestWithheldTokensToMintInstructionData.encode({instruction:u.TokenInstruction.TransferFeeExtension,transferFeeInstruction:l.HarvestWithheldTokensToMint},o);const c=[];c.push({pubkey:e,isSigner:!1,isWritable:!0});for(const e of n)c.push({pubkey:e,isSigner:!1,isWritable:!0});return new A.TransactionInstruction({keys:c,programId:r,data:o})},t.decodeHarvestWithheldTokensToMintInstruction=function(e,n){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.harvestWithheldTokensToMintInstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{mint:i,sources:r},data:o}=f(e);if(o.instruction!==u.TokenInstruction.TransferFeeExtension||o.transferFeeInstruction!==l.HarvestWithheldTokensToMint)throw new a.TokenInvalidInstructionTypeError;if(!i)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{mint:i,sources:r},data:o}},t.decodeHarvestWithheldTokensToMintInstructionUnchecked=f},6981:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getTransferFeeAmount=t.getTransferFeeConfig=t.TRANSFER_FEE_AMOUNT_SIZE=t.TransferFeeAmountLayout=t.TRANSFER_FEE_CONFIG_SIZE=t.TransferFeeConfigLayout=t.transferFeeLayout=t.ONE_IN_BASIS_POINTS=t.MAX_FEE_BASIS_POINTS=void 0;const i=n(54380),r=n(3629),o=n(72705);function A(e){return(0,i.struct)([(0,r.u64)("epoch"),(0,r.u64)("maximumFee"),(0,i.u16)("transferFeeBasisPoints")],e)}t.MAX_FEE_BASIS_POINTS=1e4,t.ONE_IN_BASIS_POINTS=t.MAX_FEE_BASIS_POINTS,t.transferFeeLayout=A,t.TransferFeeConfigLayout=(0,i.struct)([(0,r.publicKey)("transferFeeConfigAuthority"),(0,r.publicKey)("withdrawWithheldAuthority"),(0,r.u64)("withheldAmount"),A("olderTransferFee"),A("newerTransferFee")]),t.TRANSFER_FEE_CONFIG_SIZE=t.TransferFeeConfigLayout.span,t.TransferFeeAmountLayout=(0,i.struct)([(0,r.u64)("withheldAmount")]),t.TRANSFER_FEE_AMOUNT_SIZE=t.TransferFeeAmountLayout.span,t.getTransferFeeConfig=function(e){const n=(0,o.getExtensionData)(o.ExtensionType.TransferFeeConfig,e.tlvData);return null!==n?t.TransferFeeConfigLayout.decode(n):null},t.getTransferFeeAmount=function(e){const n=(0,o.getExtensionData)(o.ExtensionType.TransferFeeAmount,e.tlvData);return null!==n?t.TransferFeeAmountLayout.decode(n):null}},33983:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(16336),t),r(n(38281),t),r(n(56463),t),r(n(92292),t),r(n(29537),t),r(n(8660),t)},56006:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeAmountToUiAmountInstructionUnchecked=t.decodeAmountToUiAmountInstruction=t.createAmountToUiAmountInstruction=t.amountToUiAmountInstructionData=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(38281),a=n(56463),c=n(79697);function u({programId:e,keys:[n],data:i}){return{programId:e,keys:{mint:n},data:t.amountToUiAmountInstructionData.decode(i)}}t.amountToUiAmountInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,o.u64)("amount")]),t.createAmountToUiAmountInstruction=function(e,n,r=s.TOKEN_PROGRAM_ID){const o=[{pubkey:e,isSigner:!1,isWritable:!1}],a=i.alloc(t.amountToUiAmountInstructionData.span);return t.amountToUiAmountInstructionData.encode({instruction:c.TokenInstruction.AmountToUiAmount,amount:BigInt(n)},a),new A.TransactionInstruction({keys:o,programId:r,data:a})},t.decodeAmountToUiAmountInstruction=function(e,n=s.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.amountToUiAmountInstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{mint:i},data:r}=u(e);if(r.instruction!==c.TokenInstruction.AmountToUiAmount)throw new a.TokenInvalidInstructionTypeError;if(!i)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{mint:i},data:r}},t.decodeAmountToUiAmountInstructionUnchecked=u},83317:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeApproveInstructionUnchecked=t.decodeApproveInstruction=t.createApproveInstruction=t.approveInstructionData=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(38281),a=n(56463),c=n(79506),u=n(79697);function l({programId:e,keys:[n,i,r,...o],data:A}){return{programId:e,keys:{account:n,delegate:i,owner:r,multiSigners:o},data:t.approveInstructionData.decode(A)}}t.approveInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,o.u64)("amount")]),t.createApproveInstruction=function(e,n,r,o,a=[],l=s.TOKEN_PROGRAM_ID){const g=(0,c.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1}],r,a),d=i.alloc(t.approveInstructionData.span);return t.approveInstructionData.encode({instruction:u.TokenInstruction.Approve,amount:BigInt(o)},d),new A.TransactionInstruction({keys:g,programId:l,data:d})},t.decodeApproveInstruction=function(e,n=s.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.approveInstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{account:i,delegate:r,owner:o,multiSigners:A},data:c}=l(e);if(c.instruction!==u.TokenInstruction.Approve)throw new a.TokenInvalidInstructionTypeError;if(!i||!r||!o)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{account:i,delegate:r,owner:o,multiSigners:A},data:c}},t.decodeApproveInstructionUnchecked=l},54012:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeApproveCheckedInstructionUnchecked=t.decodeApproveCheckedInstruction=t.createApproveCheckedInstruction=t.approveCheckedInstructionData=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(38281),a=n(56463),c=n(79506),u=n(79697);function l({programId:e,keys:[n,i,r,o,...A],data:s}){return{programId:e,keys:{account:n,mint:i,delegate:r,owner:o,multiSigners:A},data:t.approveCheckedInstructionData.decode(s)}}t.approveCheckedInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,o.u64)("amount"),(0,r.u8)("decimals")]),t.createApproveCheckedInstruction=function(e,n,r,o,a,l,g=[],d=s.TOKEN_PROGRAM_ID){const h=(0,c.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1}],o,g),p=i.alloc(t.approveCheckedInstructionData.span);return t.approveCheckedInstructionData.encode({instruction:u.TokenInstruction.ApproveChecked,amount:BigInt(a),decimals:l},p),new A.TransactionInstruction({keys:h,programId:d,data:p})},t.decodeApproveCheckedInstruction=function(e,n=s.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.approveCheckedInstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{account:i,mint:r,delegate:o,owner:A,multiSigners:c},data:g}=l(e);if(g.instruction!==u.TokenInstruction.ApproveChecked)throw new a.TokenInvalidInstructionTypeError;if(!(i&&r&&o&&A))throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{account:i,mint:r,delegate:o,owner:A,multiSigners:c},data:g}},t.decodeApproveCheckedInstructionUnchecked=l},23858:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.createAssociatedTokenAccountIdempotentInstruction=t.createAssociatedTokenAccountInstruction=void 0;const r=n(97212),o=n(38281);function A(e,t,n,i,A,s=o.TOKEN_PROGRAM_ID,a=o.ASSOCIATED_TOKEN_PROGRAM_ID){const c=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:i,isSigner:!1,isWritable:!1},{pubkey:r.SystemProgram.programId,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1}];return new r.TransactionInstruction({keys:c,programId:a,data:A})}t.createAssociatedTokenAccountInstruction=function(e,t,n,r,s=o.TOKEN_PROGRAM_ID,a=o.ASSOCIATED_TOKEN_PROGRAM_ID){return A(e,t,n,r,i.alloc(0),s,a)},t.createAssociatedTokenAccountIdempotentInstruction=function(e,t,n,r,s=o.TOKEN_PROGRAM_ID,a=o.ASSOCIATED_TOKEN_PROGRAM_ID){return A(e,t,n,r,i.from([1]),s,a)}},26249:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeBurnInstructionUnchecked=t.decodeBurnInstruction=t.createBurnInstruction=t.burnInstructionData=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(38281),a=n(56463),c=n(79506),u=n(79697);function l({programId:e,keys:[n,i,r,...o],data:A}){return{programId:e,keys:{account:n,mint:i,owner:r,multiSigners:o},data:t.burnInstructionData.decode(A)}}t.burnInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,o.u64)("amount")]),t.createBurnInstruction=function(e,n,r,o,a=[],l=s.TOKEN_PROGRAM_ID){const g=(0,c.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0}],r,a),d=i.alloc(t.burnInstructionData.span);return t.burnInstructionData.encode({instruction:u.TokenInstruction.Burn,amount:BigInt(o)},d),new A.TransactionInstruction({keys:g,programId:l,data:d})},t.decodeBurnInstruction=function(e,n=s.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.burnInstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{account:i,mint:r,owner:o,multiSigners:A},data:c}=l(e);if(c.instruction!==u.TokenInstruction.Burn)throw new a.TokenInvalidInstructionTypeError;if(!i||!r||!o)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{account:i,mint:r,owner:o,multiSigners:A},data:c}},t.decodeBurnInstructionUnchecked=l},95045:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeBurnCheckedInstructionUnchecked=t.decodeBurnCheckedInstruction=t.createBurnCheckedInstruction=t.burnCheckedInstructionData=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(38281),a=n(56463),c=n(79506),u=n(79697);function l({programId:e,keys:[n,i,r,...o],data:A}){return{programId:e,keys:{account:n,mint:i,owner:r,multiSigners:o},data:t.burnCheckedInstructionData.decode(A)}}t.burnCheckedInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,o.u64)("amount"),(0,r.u8)("decimals")]),t.createBurnCheckedInstruction=function(e,n,r,o,a,l=[],g=s.TOKEN_PROGRAM_ID){const d=(0,c.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0}],r,l),h=i.alloc(t.burnCheckedInstructionData.span);return t.burnCheckedInstructionData.encode({instruction:u.TokenInstruction.BurnChecked,amount:BigInt(o),decimals:a},h),new A.TransactionInstruction({keys:d,programId:g,data:h})},t.decodeBurnCheckedInstruction=function(e,n=s.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.burnCheckedInstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{account:i,mint:r,owner:o,multiSigners:A},data:c}=l(e);if(c.instruction!==u.TokenInstruction.BurnChecked)throw new a.TokenInvalidInstructionTypeError;if(!i||!r||!o)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{account:i,mint:r,owner:o,multiSigners:A},data:c}},t.decodeBurnCheckedInstructionUnchecked=l},50726:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeCloseAccountInstructionUnchecked=t.decodeCloseAccountInstruction=t.createCloseAccountInstruction=t.closeAccountInstructionData=void 0;const r=n(54380),o=n(97212),A=n(38281),s=n(56463),a=n(79506),c=n(79697);function u({programId:e,keys:[n,i,r,...o],data:A}){return{programId:e,keys:{account:n,destination:i,authority:r,multiSigners:o},data:t.closeAccountInstructionData.decode(A)}}t.closeAccountInstructionData=(0,r.struct)([(0,r.u8)("instruction")]),t.createCloseAccountInstruction=function(e,n,r,s=[],u=A.TOKEN_PROGRAM_ID){const l=(0,a.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0}],r,s),g=i.alloc(t.closeAccountInstructionData.span);return t.closeAccountInstructionData.encode({instruction:c.TokenInstruction.CloseAccount},g),new o.TransactionInstruction({keys:l,programId:u,data:g})},t.decodeCloseAccountInstruction=function(e,n=A.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new s.TokenInvalidInstructionProgramError;if(e.data.length!==t.closeAccountInstructionData.span)throw new s.TokenInvalidInstructionDataError;const{keys:{account:i,destination:r,authority:o,multiSigners:a},data:l}=u(e);if(l.instruction!==c.TokenInstruction.CloseAccount)throw new s.TokenInvalidInstructionTypeError;if(!i||!r||!o)throw new s.TokenInvalidInstructionKeysError;return{programId:n,keys:{account:i,destination:r,authority:o,multiSigners:a},data:l}},t.decodeCloseAccountInstructionUnchecked=u},67459:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.createCreateNativeMintInstruction=t.createNativeMintInstructionData=void 0;const r=n(54380),o=n(97212),A=n(38281),s=n(56463),a=n(79697);t.createNativeMintInstructionData=(0,r.struct)([(0,r.u8)("instruction")]),t.createCreateNativeMintInstruction=function(e,n=A.NATIVE_MINT_2022,r=A.TOKEN_2022_PROGRAM_ID){if(!(0,A.programSupportsExtensions)(r))throw new s.TokenUnsupportedInstructionError;const c=[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0},{pubkey:o.SystemProgram.programId,isSigner:!1,isWritable:!1}],u=i.alloc(t.createNativeMintInstructionData.span);return t.createNativeMintInstructionData.encode({instruction:a.TokenInstruction.CreateNativeMint},u),new o.TransactionInstruction({keys:c,programId:r,data:u})}},35341:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isUiamountToAmountInstruction=t.isAmountToUiAmountInstruction=t.isInitializeMint2Instruction=t.isInitializeAccount3Instruction=t.isSyncNativeInstruction=t.isInitializeAccount2Instruction=t.isBurnCheckedInstruction=t.isMintToCheckedInstruction=t.isApproveCheckedInstruction=t.isTransferCheckedInstruction=t.isThawAccountInstruction=t.isFreezeAccountInstruction=t.isCloseAccountInstruction=t.isBurnInstruction=t.isMintToInstruction=t.isSetAuthorityInstruction=t.isRevokeInstruction=t.isApproveInstruction=t.isTransferInstruction=t.isInitializeMultisigInstruction=t.isInitializeAccountInstruction=t.isInitializeMintInstruction=t.decodeInstruction=void 0;const i=n(54380),r=n(38281),o=n(56463),A=n(56006),s=n(83317),a=n(54012),c=n(26249),u=n(95045),l=n(50726),g=n(36030),d=n(5546),h=n(41313),p=n(44886),f=n(99217),m=n(39643),I=n(67201),y=n(37448),B=n(94382),C=n(4446),w=n(12011),E=n(62905),Q=n(48210),b=n(50986),k=n(25956),v=n(79697),S=n(82729);t.decodeInstruction=function(e,t=r.TOKEN_PROGRAM_ID){if(!e.data.length)throw new o.TokenInvalidInstructionDataError;const n=(0,i.u8)().decode(e.data);if(n===v.TokenInstruction.InitializeMint)return(0,f.decodeInitializeMintInstruction)(e,t);if(n===v.TokenInstruction.InitializeAccount)return(0,d.decodeInitializeAccountInstruction)(e,t);if(n===v.TokenInstruction.InitializeMultisig)return(0,I.decodeInitializeMultisigInstruction)(e,t);if(n===v.TokenInstruction.Transfer)return(0,b.decodeTransferInstruction)(e,t);if(n===v.TokenInstruction.Approve)return(0,s.decodeApproveInstruction)(e,t);if(n===v.TokenInstruction.Revoke)return(0,C.decodeRevokeInstruction)(e,t);if(n===v.TokenInstruction.SetAuthority)return(0,w.decodeSetAuthorityInstruction)(e,t);if(n===v.TokenInstruction.MintTo)return(0,y.decodeMintToInstruction)(e,t);if(n===v.TokenInstruction.Burn)return(0,c.decodeBurnInstruction)(e,t);if(n===v.TokenInstruction.CloseAccount)return(0,l.decodeCloseAccountInstruction)(e,t);if(n===v.TokenInstruction.FreezeAccount)return(0,g.decodeFreezeAccountInstruction)(e,t);if(n===v.TokenInstruction.ThawAccount)return(0,Q.decodeThawAccountInstruction)(e,t);if(n===v.TokenInstruction.TransferChecked)return(0,k.decodeTransferCheckedInstruction)(e,t);if(n===v.TokenInstruction.ApproveChecked)return(0,a.decodeApproveCheckedInstruction)(e,t);if(n===v.TokenInstruction.MintToChecked)return(0,B.decodeMintToCheckedInstruction)(e,t);if(n===v.TokenInstruction.BurnChecked)return(0,u.decodeBurnCheckedInstruction)(e,t);if(n===v.TokenInstruction.InitializeAccount2)return(0,h.decodeInitializeAccount2Instruction)(e,t);if(n===v.TokenInstruction.SyncNative)return(0,E.decodeSyncNativeInstruction)(e,t);if(n===v.TokenInstruction.InitializeAccount3)return(0,p.decodeInitializeAccount3Instruction)(e,t);if(n===v.TokenInstruction.InitializeMint2)return(0,m.decodeInitializeMint2Instruction)(e,t);if(n===v.TokenInstruction.AmountToUiAmount)return(0,A.decodeAmountToUiAmountInstruction)(e,t);if(n===v.TokenInstruction.UiAmountToAmount)return(0,S.decodeUiAmountToAmountInstruction)(e,t);if(n===v.TokenInstruction.InitializeMultisig2)throw new o.TokenInvalidInstructionTypeError;throw new o.TokenInvalidInstructionTypeError},t.isInitializeMintInstruction=function(e){return e.data.instruction===v.TokenInstruction.InitializeMint},t.isInitializeAccountInstruction=function(e){return e.data.instruction===v.TokenInstruction.InitializeAccount},t.isInitializeMultisigInstruction=function(e){return e.data.instruction===v.TokenInstruction.InitializeMultisig},t.isTransferInstruction=function(e){return e.data.instruction===v.TokenInstruction.Transfer},t.isApproveInstruction=function(e){return e.data.instruction===v.TokenInstruction.Approve},t.isRevokeInstruction=function(e){return e.data.instruction===v.TokenInstruction.Revoke},t.isSetAuthorityInstruction=function(e){return e.data.instruction===v.TokenInstruction.SetAuthority},t.isMintToInstruction=function(e){return e.data.instruction===v.TokenInstruction.MintTo},t.isBurnInstruction=function(e){return e.data.instruction===v.TokenInstruction.Burn},t.isCloseAccountInstruction=function(e){return e.data.instruction===v.TokenInstruction.CloseAccount},t.isFreezeAccountInstruction=function(e){return e.data.instruction===v.TokenInstruction.FreezeAccount},t.isThawAccountInstruction=function(e){return e.data.instruction===v.TokenInstruction.ThawAccount},t.isTransferCheckedInstruction=function(e){return e.data.instruction===v.TokenInstruction.TransferChecked},t.isApproveCheckedInstruction=function(e){return e.data.instruction===v.TokenInstruction.ApproveChecked},t.isMintToCheckedInstruction=function(e){return e.data.instruction===v.TokenInstruction.MintToChecked},t.isBurnCheckedInstruction=function(e){return e.data.instruction===v.TokenInstruction.BurnChecked},t.isInitializeAccount2Instruction=function(e){return e.data.instruction===v.TokenInstruction.InitializeAccount2},t.isSyncNativeInstruction=function(e){return e.data.instruction===v.TokenInstruction.SyncNative},t.isInitializeAccount3Instruction=function(e){return e.data.instruction===v.TokenInstruction.InitializeAccount3},t.isInitializeMint2Instruction=function(e){return e.data.instruction===v.TokenInstruction.InitializeMint2},t.isAmountToUiAmountInstruction=function(e){return e.data.instruction===v.TokenInstruction.AmountToUiAmount},t.isUiamountToAmountInstruction=function(e){return e.data.instruction===v.TokenInstruction.UiAmountToAmount}},36030:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeFreezeAccountInstructionUnchecked=t.decodeFreezeAccountInstruction=t.createFreezeAccountInstruction=t.freezeAccountInstructionData=void 0;const r=n(54380),o=n(97212),A=n(38281),s=n(56463),a=n(79506),c=n(79697);function u({programId:e,keys:[n,i,r,...o],data:A}){return{programId:e,keys:{account:n,mint:i,authority:r,multiSigners:o},data:t.freezeAccountInstructionData.decode(A)}}t.freezeAccountInstructionData=(0,r.struct)([(0,r.u8)("instruction")]),t.createFreezeAccountInstruction=function(e,n,r,s=[],u=A.TOKEN_PROGRAM_ID){const l=(0,a.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1}],r,s),g=i.alloc(t.freezeAccountInstructionData.span);return t.freezeAccountInstructionData.encode({instruction:c.TokenInstruction.FreezeAccount},g),new o.TransactionInstruction({keys:l,programId:u,data:g})},t.decodeFreezeAccountInstruction=function(e,n=A.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new s.TokenInvalidInstructionProgramError;if(e.data.length!==t.freezeAccountInstructionData.span)throw new s.TokenInvalidInstructionDataError;const{keys:{account:i,mint:r,authority:o,multiSigners:a},data:l}=u(e);if(l.instruction!==c.TokenInstruction.FreezeAccount)throw new s.TokenInvalidInstructionTypeError;if(!i||!r||!o)throw new s.TokenInvalidInstructionKeysError;return{programId:n,keys:{account:i,mint:r,authority:o,multiSigners:a},data:l}},t.decodeFreezeAccountInstructionUnchecked=u},29537:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(23858),t),r(n(35341),t),r(n(79697),t),r(n(99217),t),r(n(5546),t),r(n(67201),t),r(n(50986),t),r(n(83317),t),r(n(4446),t),r(n(12011),t),r(n(37448),t),r(n(26249),t),r(n(50726),t),r(n(36030),t),r(n(48210),t),r(n(25956),t),r(n(54012),t),r(n(94382),t),r(n(95045),t),r(n(41313),t),r(n(62905),t),r(n(44886),t),r(n(85164),t),r(n(39643),t),r(n(26247),t),r(n(56006),t),r(n(82729),t),r(n(24522),t),r(n(79338),t),r(n(67459),t),r(n(4178),t),r(n(58572),t)},5546:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeInitializeAccountInstructionUnchecked=t.decodeInitializeAccountInstruction=t.createInitializeAccountInstruction=t.initializeAccountInstructionData=void 0;const r=n(54380),o=n(97212),A=n(38281),s=n(56463),a=n(79697);function c({programId:e,keys:[n,i,r,o],data:A}){return{programId:e,keys:{account:n,mint:i,owner:r,rent:o},data:t.initializeAccountInstructionData.decode(A)}}t.initializeAccountInstructionData=(0,r.struct)([(0,r.u8)("instruction")]),t.createInitializeAccountInstruction=function(e,n,r,s=A.TOKEN_PROGRAM_ID){const c=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!1},{pubkey:o.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}],u=i.alloc(t.initializeAccountInstructionData.span);return t.initializeAccountInstructionData.encode({instruction:a.TokenInstruction.InitializeAccount},u),new o.TransactionInstruction({keys:c,programId:s,data:u})},t.decodeInitializeAccountInstruction=function(e,n=A.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new s.TokenInvalidInstructionProgramError;if(e.data.length!==t.initializeAccountInstructionData.span)throw new s.TokenInvalidInstructionDataError;const{keys:{account:i,mint:r,owner:o,rent:u},data:l}=c(e);if(l.instruction!==a.TokenInstruction.InitializeAccount)throw new s.TokenInvalidInstructionTypeError;if(!(i&&r&&o&&u))throw new s.TokenInvalidInstructionKeysError;return{programId:n,keys:{account:i,mint:r,owner:o,rent:u},data:l}},t.decodeInitializeAccountInstructionUnchecked=c},41313:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeInitializeAccount2InstructionUnchecked=t.decodeInitializeAccount2Instruction=t.createInitializeAccount2Instruction=t.initializeAccount2InstructionData=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(38281),a=n(56463),c=n(79697);function u({programId:e,keys:[n,i,r],data:o}){return{programId:e,keys:{account:n,mint:i,rent:r},data:t.initializeAccount2InstructionData.decode(o)}}t.initializeAccount2InstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,o.publicKey)("owner")]),t.createInitializeAccount2Instruction=function(e,n,r,o=s.TOKEN_PROGRAM_ID){const a=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:A.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}],u=i.alloc(t.initializeAccount2InstructionData.span);return t.initializeAccount2InstructionData.encode({instruction:c.TokenInstruction.InitializeAccount2,owner:r},u),new A.TransactionInstruction({keys:a,programId:o,data:u})},t.decodeInitializeAccount2Instruction=function(e,n=s.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.initializeAccount2InstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{account:i,mint:r,rent:o},data:A}=u(e);if(A.instruction!==c.TokenInstruction.InitializeAccount2)throw new a.TokenInvalidInstructionTypeError;if(!i||!r||!o)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{account:i,mint:r,rent:o},data:A}},t.decodeInitializeAccount2InstructionUnchecked=u},44886:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeInitializeAccount3InstructionUnchecked=t.decodeInitializeAccount3Instruction=t.createInitializeAccount3Instruction=t.initializeAccount3InstructionData=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(38281),a=n(56463),c=n(79697);function u({programId:e,keys:[n,i],data:r}){return{programId:e,keys:{account:n,mint:i},data:t.initializeAccount3InstructionData.decode(r)}}t.initializeAccount3InstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,o.publicKey)("owner")]),t.createInitializeAccount3Instruction=function(e,n,r,o=s.TOKEN_PROGRAM_ID){const a=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1}],u=i.alloc(t.initializeAccount3InstructionData.span);return t.initializeAccount3InstructionData.encode({instruction:c.TokenInstruction.InitializeAccount3,owner:r},u),new A.TransactionInstruction({keys:a,programId:o,data:u})},t.decodeInitializeAccount3Instruction=function(e,n=s.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.initializeAccount3InstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{account:i,mint:r},data:o}=u(e);if(o.instruction!==c.TokenInstruction.InitializeAccount3)throw new a.TokenInvalidInstructionTypeError;if(!i||!r)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{account:i,mint:r},data:o}},t.decodeInitializeAccount3InstructionUnchecked=u},26247:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeInitializeImmutableOwnerInstructionUnchecked=t.decodeInitializeImmutableOwnerInstruction=t.createInitializeImmutableOwnerInstruction=t.initializeImmutableOwnerInstructionData=void 0;const r=n(54380),o=n(97212),A=n(56463),s=n(79697);function a({programId:e,keys:[n],data:i}){const{instruction:r}=t.initializeImmutableOwnerInstructionData.decode(i);return{programId:e,keys:{account:n},data:{instruction:r}}}t.initializeImmutableOwnerInstructionData=(0,r.struct)([(0,r.u8)("instruction")]),t.createInitializeImmutableOwnerInstruction=function(e,n){const r=[{pubkey:e,isSigner:!1,isWritable:!0}],A=i.alloc(t.initializeImmutableOwnerInstructionData.span);return t.initializeImmutableOwnerInstructionData.encode({instruction:s.TokenInstruction.InitializeImmutableOwner},A),new o.TransactionInstruction({keys:r,programId:n,data:A})},t.decodeInitializeImmutableOwnerInstruction=function(e,n){if(!e.programId.equals(n))throw new A.TokenInvalidInstructionProgramError;if(e.data.length!==t.initializeImmutableOwnerInstructionData.span)throw new A.TokenInvalidInstructionDataError;const{keys:{account:i},data:r}=a(e);if(r.instruction!==s.TokenInstruction.InitializeImmutableOwner)throw new A.TokenInvalidInstructionTypeError;if(!i)throw new A.TokenInvalidInstructionKeysError;return{programId:n,keys:{account:i},data:r}},t.decodeInitializeImmutableOwnerInstructionUnchecked=a},99217:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeInitializeMintInstructionUnchecked=t.decodeInitializeMintInstruction=t.createInitializeMintInstruction=t.initializeMintInstructionData=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(38281),a=n(56463),c=n(79697);function u({programId:e,keys:[n,i],data:r}){const{instruction:o,decimals:A,mintAuthority:s,freezeAuthorityOption:a,freezeAuthority:c}=t.initializeMintInstructionData.decode(r);return{programId:e,keys:{mint:n,rent:i},data:{instruction:o,decimals:A,mintAuthority:s,freezeAuthority:a?c:null}}}t.initializeMintInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,r.u8)("decimals"),(0,o.publicKey)("mintAuthority"),(0,r.u8)("freezeAuthorityOption"),(0,o.publicKey)("freezeAuthority")]),t.createInitializeMintInstruction=function(e,n,r,o,a=s.TOKEN_PROGRAM_ID){const u=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:A.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}],l=i.alloc(t.initializeMintInstructionData.span);return t.initializeMintInstructionData.encode({instruction:c.TokenInstruction.InitializeMint,decimals:n,mintAuthority:r,freezeAuthorityOption:o?1:0,freezeAuthority:o||new A.PublicKey(0)},l),new A.TransactionInstruction({keys:u,programId:a,data:l})},t.decodeInitializeMintInstruction=function(e,n=s.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.initializeMintInstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{mint:i,rent:r},data:o}=u(e);if(o.instruction!==c.TokenInstruction.InitializeMint)throw new a.TokenInvalidInstructionTypeError;if(!i||!r)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{mint:i,rent:r},data:o}},t.decodeInitializeMintInstructionUnchecked=u},39643:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeInitializeMint2InstructionUnchecked=t.decodeInitializeMint2Instruction=t.createInitializeMint2Instruction=t.initializeMint2InstructionData=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(38281),a=n(56463),c=n(79697);function u({programId:e,keys:[n],data:i}){const{instruction:r,decimals:o,mintAuthority:A,freezeAuthorityOption:s,freezeAuthority:a}=t.initializeMint2InstructionData.decode(i);return{programId:e,keys:{mint:n},data:{instruction:r,decimals:o,mintAuthority:A,freezeAuthority:s?a:null}}}t.initializeMint2InstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,r.u8)("decimals"),(0,o.publicKey)("mintAuthority"),(0,r.u8)("freezeAuthorityOption"),(0,o.publicKey)("freezeAuthority")]),t.createInitializeMint2Instruction=function(e,n,r,o,a=s.TOKEN_PROGRAM_ID){const u=[{pubkey:e,isSigner:!1,isWritable:!0}],l=i.alloc(t.initializeMint2InstructionData.span);return t.initializeMint2InstructionData.encode({instruction:c.TokenInstruction.InitializeMint2,decimals:n,mintAuthority:r,freezeAuthorityOption:o?1:0,freezeAuthority:o||new A.PublicKey(0)},l),new A.TransactionInstruction({keys:u,programId:a,data:l})},t.decodeInitializeMint2Instruction=function(e,n=s.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.initializeMint2InstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{mint:i},data:r}=u(e);if(r.instruction!==c.TokenInstruction.InitializeMint2)throw new a.TokenInvalidInstructionTypeError;if(!i)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{mint:i},data:r}},t.decodeInitializeMint2InstructionUnchecked=u},24522:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeInitializeMintCloseAuthorityInstructionUnchecked=t.decodeInitializeMintCloseAuthorityInstruction=t.createInitializeMintCloseAuthorityInstruction=t.initializeMintCloseAuthorityInstructionData=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(38281),a=n(56463),c=n(79697);function u({programId:e,keys:[n],data:i}){const{instruction:r,closeAuthorityOption:o,closeAuthority:A}=t.initializeMintCloseAuthorityInstructionData.decode(i);return{programId:e,keys:{mint:n},data:{instruction:r,closeAuthority:o?A:null}}}t.initializeMintCloseAuthorityInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,r.u8)("closeAuthorityOption"),(0,o.publicKey)("closeAuthority")]),t.createInitializeMintCloseAuthorityInstruction=function(e,n,r){if(!(0,s.programSupportsExtensions)(r))throw new a.TokenUnsupportedInstructionError;const o=[{pubkey:e,isSigner:!1,isWritable:!0}],u=i.alloc(t.initializeMintCloseAuthorityInstructionData.span);return t.initializeMintCloseAuthorityInstructionData.encode({instruction:c.TokenInstruction.InitializeMintCloseAuthority,closeAuthorityOption:n?1:0,closeAuthority:n||new A.PublicKey(0)},u),new A.TransactionInstruction({keys:o,programId:r,data:u})},t.decodeInitializeMintCloseAuthorityInstruction=function(e,n){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.initializeMintCloseAuthorityInstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{mint:i},data:r}=u(e);if(r.instruction!==c.TokenInstruction.InitializeMintCloseAuthority)throw new a.TokenInvalidInstructionTypeError;if(!i)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{mint:i},data:r}},t.decodeInitializeMintCloseAuthorityInstructionUnchecked=u},67201:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeInitializeMultisigInstructionUnchecked=t.decodeInitializeMultisigInstruction=t.createInitializeMultisigInstruction=t.initializeMultisigInstructionData=void 0;const r=n(54380),o=n(97212),A=n(38281),s=n(56463),a=n(79697);function c({programId:e,keys:[n,i,...r],data:o}){return{programId:e,keys:{account:n,rent:i,signers:r},data:t.initializeMultisigInstructionData.decode(o)}}t.initializeMultisigInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,r.u8)("m")]),t.createInitializeMultisigInstruction=function(e,n,r,s=A.TOKEN_PROGRAM_ID){const c=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:o.SYSVAR_RENT_PUBKEY,isSigner:!1,isWritable:!1}];for(const e of n)c.push({pubkey:e instanceof o.PublicKey?e:e.publicKey,isSigner:!1,isWritable:!1});const u=i.alloc(t.initializeMultisigInstructionData.span);return t.initializeMultisigInstructionData.encode({instruction:a.TokenInstruction.InitializeMultisig,m:r},u),new o.TransactionInstruction({keys:c,programId:s,data:u})},t.decodeInitializeMultisigInstruction=function(e,n=A.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new s.TokenInvalidInstructionProgramError;if(e.data.length!==t.initializeMultisigInstructionData.span)throw new s.TokenInvalidInstructionDataError;const{keys:{account:i,rent:r,signers:o},data:u}=c(e);if(u.instruction!==a.TokenInstruction.InitializeMultisig)throw new s.TokenInvalidInstructionTypeError;if(!i||!r||!o.length)throw new s.TokenInvalidInstructionKeysError;return{programId:n,keys:{account:i,rent:r,signers:o},data:u}},t.decodeInitializeMultisigInstructionUnchecked=c},85164:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0})},4178:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.createInitializeNonTransferableMintInstruction=t.initializeNonTransferableMintInstructionData=void 0;const r=n(54380),o=n(97212),A=n(38281),s=n(56463),a=n(79697);t.initializeNonTransferableMintInstructionData=(0,r.struct)([(0,r.u8)("instruction")]),t.createInitializeNonTransferableMintInstruction=function(e,n){if(!(0,A.programSupportsExtensions)(n))throw new s.TokenUnsupportedInstructionError;const r=[{pubkey:e,isSigner:!1,isWritable:!0}],c=i.alloc(t.initializeNonTransferableMintInstructionData.span);return t.initializeNonTransferableMintInstructionData.encode({instruction:a.TokenInstruction.InitializeNonTransferableMint},c),new o.TransactionInstruction({keys:r,programId:n,data:c})}},58572:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeInitializePermanentDelegateInstructionUnchecked=t.decodeInitializePermanentDelegateInstruction=t.createInitializePermanentDelegateInstruction=t.initializePermanentDelegateInstructionData=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(97212),a=n(38281),c=n(56463),u=n(79697);function l({programId:e,keys:[n],data:i}){const{instruction:r,delegate:o}=t.initializePermanentDelegateInstructionData.decode(i);return{programId:e,keys:{mint:n},data:{instruction:r,delegate:o}}}t.initializePermanentDelegateInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,o.publicKey)("delegate")]),t.createInitializePermanentDelegateInstruction=function(e,n,r){if(!(0,a.programSupportsExtensions)(r))throw new c.TokenUnsupportedInstructionError;const o=[{pubkey:e,isSigner:!1,isWritable:!0}],l=i.alloc(t.initializePermanentDelegateInstructionData.span);return t.initializePermanentDelegateInstructionData.encode({instruction:u.TokenInstruction.InitializePermanentDelegate,delegate:n||new A.PublicKey(0)},l),new s.TransactionInstruction({keys:o,programId:r,data:l})},t.decodeInitializePermanentDelegateInstruction=function(e,n){if(!e.programId.equals(n))throw new c.TokenInvalidInstructionProgramError;if(e.data.length!==t.initializePermanentDelegateInstructionData.span)throw new c.TokenInvalidInstructionDataError;const{keys:{mint:i},data:r}=l(e);if(r.instruction!==u.TokenInstruction.InitializePermanentDelegate)throw new c.TokenInvalidInstructionTypeError;if(!i)throw new c.TokenInvalidInstructionKeysError;return{programId:n,keys:{mint:i},data:r}},t.decodeInitializePermanentDelegateInstructionUnchecked=l},79506:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addSigners=void 0;const i=n(97212);t.addSigners=function(e,t,n){if(n.length){e.push({pubkey:t,isSigner:!1,isWritable:!1});for(const t of n)e.push({pubkey:t instanceof i.PublicKey?t:t.publicKey,isSigner:!0,isWritable:!1})}else e.push({pubkey:t,isSigner:!0,isWritable:!1});return e}},37448:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeMintToInstructionUnchecked=t.decodeMintToInstruction=t.createMintToInstruction=t.mintToInstructionData=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(38281),a=n(56463),c=n(79506),u=n(79697);function l({programId:e,keys:[n,i,r,...o],data:A}){return{programId:e,keys:{mint:n,destination:i,authority:r,multiSigners:o},data:t.mintToInstructionData.decode(A)}}t.mintToInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,o.u64)("amount")]),t.createMintToInstruction=function(e,n,r,o,a=[],l=s.TOKEN_PROGRAM_ID){const g=(0,c.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0}],r,a),d=i.alloc(t.mintToInstructionData.span);return t.mintToInstructionData.encode({instruction:u.TokenInstruction.MintTo,amount:BigInt(o)},d),new A.TransactionInstruction({keys:g,programId:l,data:d})},t.decodeMintToInstruction=function(e,n=s.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.mintToInstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{mint:i,destination:r,authority:o,multiSigners:A},data:c}=l(e);if(c.instruction!==u.TokenInstruction.MintTo)throw new a.TokenInvalidInstructionTypeError;if(!i||!r||!o)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{mint:i,destination:r,authority:o,multiSigners:A},data:c}},t.decodeMintToInstructionUnchecked=l},94382:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeMintToCheckedInstructionUnchecked=t.decodeMintToCheckedInstruction=t.createMintToCheckedInstruction=t.mintToCheckedInstructionData=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(38281),a=n(56463),c=n(79506),u=n(79697);function l({programId:e,keys:[n,i,r,...o],data:A}){return{programId:e,keys:{mint:n,destination:i,authority:r,multiSigners:o},data:t.mintToCheckedInstructionData.decode(A)}}t.mintToCheckedInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,o.u64)("amount"),(0,r.u8)("decimals")]),t.createMintToCheckedInstruction=function(e,n,r,o,a,l=[],g=s.TOKEN_PROGRAM_ID){const d=(0,c.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0}],r,l),h=i.alloc(t.mintToCheckedInstructionData.span);return t.mintToCheckedInstructionData.encode({instruction:u.TokenInstruction.MintToChecked,amount:BigInt(o),decimals:a},h),new A.TransactionInstruction({keys:d,programId:g,data:h})},t.decodeMintToCheckedInstruction=function(e,n=s.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.mintToCheckedInstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{mint:i,destination:r,authority:o,multiSigners:A},data:c}=l(e);if(c.instruction!==u.TokenInstruction.MintToChecked)throw new a.TokenInvalidInstructionTypeError;if(!i||!r||!o)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{mint:i,destination:r,authority:o,multiSigners:A},data:c}},t.decodeMintToCheckedInstructionUnchecked=l},79338:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.createReallocateInstruction=void 0;const r=n(54380),o=n(97212),A=n(38281),s=n(56463),a=n(79506),c=n(79697);t.createReallocateInstruction=function(e,t,n,u,l=[],g=A.TOKEN_2022_PROGRAM_ID){if(!(0,A.programSupportsExtensions)(g))throw new s.TokenUnsupportedInstructionError;const d=[{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:t,isSigner:!0,isWritable:!0},{pubkey:o.SystemProgram.programId,isSigner:!1,isWritable:!1}],h=(0,a.addSigners)(d,u,l),p=(0,r.struct)([(0,r.u8)("instruction"),(0,r.seq)((0,r.u16)(),n.length,"extensionTypes")]),f=i.alloc(p.span);return p.encode({instruction:c.TokenInstruction.Reallocate,extensionTypes:n},f),new o.TransactionInstruction({keys:h,programId:g,data:f})}},4446:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeRevokeInstructionUnchecked=t.decodeRevokeInstruction=t.createRevokeInstruction=t.revokeInstructionData=void 0;const r=n(54380),o=n(97212),A=n(38281),s=n(56463),a=n(79506),c=n(79697);function u({programId:e,keys:[n,i,...r],data:o}){return{programId:e,keys:{account:n,owner:i,multiSigners:r},data:t.revokeInstructionData.decode(o)}}t.revokeInstructionData=(0,r.struct)([(0,r.u8)("instruction")]),t.createRevokeInstruction=function(e,n,r=[],s=A.TOKEN_PROGRAM_ID){const u=(0,a.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0}],n,r),l=i.alloc(t.revokeInstructionData.span);return t.revokeInstructionData.encode({instruction:c.TokenInstruction.Revoke},l),new o.TransactionInstruction({keys:u,programId:s,data:l})},t.decodeRevokeInstruction=function(e,n=A.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new s.TokenInvalidInstructionProgramError;if(e.data.length!==t.revokeInstructionData.span)throw new s.TokenInvalidInstructionDataError;const{keys:{account:i,owner:r,multiSigners:o},data:a}=u(e);if(a.instruction!==c.TokenInstruction.Revoke)throw new s.TokenInvalidInstructionTypeError;if(!i||!r)throw new s.TokenInvalidInstructionKeysError;return{programId:n,keys:{account:i,owner:r,multiSigners:o},data:a}},t.decodeRevokeInstructionUnchecked=u},12011:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeSetAuthorityInstructionUnchecked=t.decodeSetAuthorityInstruction=t.createSetAuthorityInstruction=t.setAuthorityInstructionData=t.AuthorityType=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(38281),a=n(56463),c=n(79506),u=n(79697);function l({programId:e,keys:[n,i,...r],data:o}){const{instruction:A,authorityType:s,newAuthorityOption:a,newAuthority:c}=t.setAuthorityInstructionData.decode(o);return{programId:e,keys:{account:n,currentAuthority:i,multiSigners:r},data:{instruction:A,authorityType:s,newAuthority:a?c:null}}}var g;(g=t.AuthorityType||(t.AuthorityType={}))[g.MintTokens=0]="MintTokens",g[g.FreezeAccount=1]="FreezeAccount",g[g.AccountOwner=2]="AccountOwner",g[g.CloseAccount=3]="CloseAccount",t.setAuthorityInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,r.u8)("authorityType"),(0,r.u8)("newAuthorityOption"),(0,o.publicKey)("newAuthority")]),t.createSetAuthorityInstruction=function(e,n,r,o,a=[],l=s.TOKEN_PROGRAM_ID){const g=(0,c.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0}],n,a),d=i.alloc(t.setAuthorityInstructionData.span);return t.setAuthorityInstructionData.encode({instruction:u.TokenInstruction.SetAuthority,authorityType:r,newAuthorityOption:o?1:0,newAuthority:o||new A.PublicKey(0)},d),new A.TransactionInstruction({keys:g,programId:l,data:d})},t.decodeSetAuthorityInstruction=function(e,n=s.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.setAuthorityInstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{account:i,currentAuthority:r,multiSigners:o},data:A}=l(e);if(A.instruction!==u.TokenInstruction.SetAuthority)throw new a.TokenInvalidInstructionTypeError;if(!i||!r)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{account:i,currentAuthority:r,multiSigners:o},data:A}},t.decodeSetAuthorityInstructionUnchecked=l},62905:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeSyncNativeInstructionUnchecked=t.decodeSyncNativeInstruction=t.createSyncNativeInstruction=t.syncNativeInstructionData=void 0;const r=n(54380),o=n(97212),A=n(38281),s=n(56463),a=n(79697);function c({programId:e,keys:[n],data:i}){return{programId:e,keys:{account:n},data:t.syncNativeInstructionData.decode(i)}}t.syncNativeInstructionData=(0,r.struct)([(0,r.u8)("instruction")]),t.createSyncNativeInstruction=function(e,n=A.TOKEN_PROGRAM_ID){const r=[{pubkey:e,isSigner:!1,isWritable:!0}],s=i.alloc(t.syncNativeInstructionData.span);return t.syncNativeInstructionData.encode({instruction:a.TokenInstruction.SyncNative},s),new o.TransactionInstruction({keys:r,programId:n,data:s})},t.decodeSyncNativeInstruction=function(e,n=A.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new s.TokenInvalidInstructionProgramError;if(e.data.length!==t.syncNativeInstructionData.span)throw new s.TokenInvalidInstructionDataError;const{keys:{account:i},data:r}=c(e);if(r.instruction!==a.TokenInstruction.SyncNative)throw new s.TokenInvalidInstructionTypeError;if(!i)throw new s.TokenInvalidInstructionKeysError;return{programId:n,keys:{account:i},data:r}},t.decodeSyncNativeInstructionUnchecked=c},48210:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeThawAccountInstructionUnchecked=t.decodeThawAccountInstruction=t.createThawAccountInstruction=t.thawAccountInstructionData=void 0;const r=n(54380),o=n(97212),A=n(38281),s=n(56463),a=n(79506),c=n(79697);function u({programId:e,keys:[n,i,r,...o],data:A}){return{programId:e,keys:{account:n,mint:i,authority:r,multiSigners:o},data:t.thawAccountInstructionData.decode(A)}}t.thawAccountInstructionData=(0,r.struct)([(0,r.u8)("instruction")]),t.createThawAccountInstruction=function(e,n,r,s=[],u=A.TOKEN_PROGRAM_ID){const l=(0,a.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1}],r,s),g=i.alloc(t.thawAccountInstructionData.span);return t.thawAccountInstructionData.encode({instruction:c.TokenInstruction.ThawAccount},g),new o.TransactionInstruction({keys:l,programId:u,data:g})},t.decodeThawAccountInstruction=function(e,n=A.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new s.TokenInvalidInstructionProgramError;if(e.data.length!==t.thawAccountInstructionData.span)throw new s.TokenInvalidInstructionDataError;const{keys:{account:i,mint:r,authority:o,multiSigners:a},data:l}=u(e);if(l.instruction!==c.TokenInstruction.ThawAccount)throw new s.TokenInvalidInstructionTypeError;if(!i||!r||!o)throw new s.TokenInvalidInstructionKeysError;return{programId:n,keys:{account:i,mint:r,authority:o,multiSigners:a},data:l}},t.decodeThawAccountInstructionUnchecked=u},50986:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeTransferInstructionUnchecked=t.decodeTransferInstruction=t.createTransferInstruction=t.transferInstructionData=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(38281),a=n(56463),c=n(79506),u=n(79697);function l({programId:e,keys:[n,i,r,...o],data:A}){return{programId:e,keys:{source:n,destination:i,owner:r,multiSigners:o},data:t.transferInstructionData.decode(A)}}t.transferInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,o.u64)("amount")]),t.createTransferInstruction=function(e,n,r,o,a=[],l=s.TOKEN_PROGRAM_ID){const g=(0,c.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!0}],r,a),d=i.alloc(t.transferInstructionData.span);return t.transferInstructionData.encode({instruction:u.TokenInstruction.Transfer,amount:BigInt(o)},d),new A.TransactionInstruction({keys:g,programId:l,data:d})},t.decodeTransferInstruction=function(e,n=s.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.transferInstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{source:i,destination:r,owner:o,multiSigners:A},data:c}=l(e);if(c.instruction!==u.TokenInstruction.Transfer)throw new a.TokenInvalidInstructionTypeError;if(!i||!r||!o)throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{source:i,destination:r,owner:o,multiSigners:A},data:c}},t.decodeTransferInstructionUnchecked=l},25956:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeTransferCheckedInstructionUnchecked=t.decodeTransferCheckedInstruction=t.createTransferCheckedInstruction=t.transferCheckedInstructionData=void 0;const r=n(54380),o=n(3629),A=n(97212),s=n(38281),a=n(56463),c=n(79506),u=n(79697);function l({programId:e,keys:[n,i,r,o,...A],data:s}){return{programId:e,keys:{source:n,mint:i,destination:r,owner:o,multiSigners:A},data:t.transferCheckedInstructionData.decode(s)}}t.transferCheckedInstructionData=(0,r.struct)([(0,r.u8)("instruction"),(0,o.u64)("amount"),(0,r.u8)("decimals")]),t.createTransferCheckedInstruction=function(e,n,r,o,a,l,g=[],d=s.TOKEN_PROGRAM_ID){const h=(0,c.addSigners)([{pubkey:e,isSigner:!1,isWritable:!0},{pubkey:n,isSigner:!1,isWritable:!1},{pubkey:r,isSigner:!1,isWritable:!0}],o,g),p=i.alloc(t.transferCheckedInstructionData.span);return t.transferCheckedInstructionData.encode({instruction:u.TokenInstruction.TransferChecked,amount:BigInt(a),decimals:l},p),new A.TransactionInstruction({keys:h,programId:d,data:p})},t.decodeTransferCheckedInstruction=function(e,n=s.TOKEN_PROGRAM_ID){if(!e.programId.equals(n))throw new a.TokenInvalidInstructionProgramError;if(e.data.length!==t.transferCheckedInstructionData.span)throw new a.TokenInvalidInstructionDataError;const{keys:{source:i,mint:r,destination:o,owner:A,multiSigners:c},data:g}=l(e);if(g.instruction!==u.TokenInstruction.TransferChecked)throw new a.TokenInvalidInstructionTypeError;if(!(i&&r&&o&&A))throw new a.TokenInvalidInstructionKeysError;return{programId:n,keys:{source:i,mint:r,destination:o,owner:A,multiSigners:c},data:g}},t.decodeTransferCheckedInstructionUnchecked=l},79697:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.TokenInstruction=void 0,(n=t.TokenInstruction||(t.TokenInstruction={}))[n.InitializeMint=0]="InitializeMint",n[n.InitializeAccount=1]="InitializeAccount",n[n.InitializeMultisig=2]="InitializeMultisig",n[n.Transfer=3]="Transfer",n[n.Approve=4]="Approve",n[n.Revoke=5]="Revoke",n[n.SetAuthority=6]="SetAuthority",n[n.MintTo=7]="MintTo",n[n.Burn=8]="Burn",n[n.CloseAccount=9]="CloseAccount",n[n.FreezeAccount=10]="FreezeAccount",n[n.ThawAccount=11]="ThawAccount",n[n.TransferChecked=12]="TransferChecked",n[n.ApproveChecked=13]="ApproveChecked",n[n.MintToChecked=14]="MintToChecked",n[n.BurnChecked=15]="BurnChecked",n[n.InitializeAccount2=16]="InitializeAccount2",n[n.SyncNative=17]="SyncNative",n[n.InitializeAccount3=18]="InitializeAccount3",n[n.InitializeMultisig2=19]="InitializeMultisig2",n[n.InitializeMint2=20]="InitializeMint2",n[n.GetAccountDataSize=21]="GetAccountDataSize",n[n.InitializeImmutableOwner=22]="InitializeImmutableOwner",n[n.AmountToUiAmount=23]="AmountToUiAmount",n[n.UiAmountToAmount=24]="UiAmountToAmount",n[n.InitializeMintCloseAuthority=25]="InitializeMintCloseAuthority",n[n.TransferFeeExtension=26]="TransferFeeExtension",n[n.ConfidentialTransferExtension=27]="ConfidentialTransferExtension",n[n.DefaultAccountStateExtension=28]="DefaultAccountStateExtension",n[n.Reallocate=29]="Reallocate",n[n.MemoTransferExtension=30]="MemoTransferExtension",n[n.CreateNativeMint=31]="CreateNativeMint",n[n.InitializeNonTransferableMint=32]="InitializeNonTransferableMint",n[n.InterestBearingMintExtension=33]="InterestBearingMintExtension",n[n.CpiGuardExtension=34]="CpiGuardExtension",n[n.InitializePermanentDelegate=35]="InitializePermanentDelegate"},82729:(e,t,n)=>{"use strict";var i=n(55872).Buffer;Object.defineProperty(t,"__esModule",{value:!0}),t.decodeUiAmountToAmountInstructionUnchecked=t.decodeUiAmountToAmountInstruction=t.createUiAmountToAmountInstruction=void 0;const r=n(54380),o=n(97212),A=n(38281),s=n(56463),a=n(79697);function c({programId:e,keys:[t],data:n}){return{programId:e,keys:{mint:t},data:(0,r.struct)([(0,r.u8)("instruction"),(0,r.blob)(n.length-1,"amount")]).decode(n)}}t.createUiAmountToAmountInstruction=function(e,t,n=A.TOKEN_PROGRAM_ID){const s=[{pubkey:e,isSigner:!1,isWritable:!1}],c=i.from(t,"utf8"),u=(0,r.struct)([(0,r.u8)("instruction"),(0,r.blob)(c.length,"amount")]),l=i.alloc(u.span);return u.encode({instruction:a.TokenInstruction.UiAmountToAmount,amount:c},l),new o.TransactionInstruction({keys:s,programId:n,data:l})},t.decodeUiAmountToAmountInstruction=function(e,t=A.TOKEN_PROGRAM_ID){if(!e.programId.equals(t))throw new s.TokenInvalidInstructionProgramError;const n=(0,r.struct)([(0,r.u8)("instruction"),(0,r.blob)(e.data.length-1,"amount")]);if(e.data.length!==n.span)throw new s.TokenInvalidInstructionDataError;const{keys:{mint:i},data:o}=c(e);if(o.instruction!==a.TokenInstruction.UiAmountToAmount)throw new s.TokenInvalidInstructionTypeError;if(!i)throw new s.TokenInvalidInstructionKeysError;return{programId:t,keys:{mint:i},data:o}},t.decodeUiAmountToAmountInstructionUnchecked=c},53739:function(e,t,n){"use strict";var i=n(55872).Buffer,r=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.unpackAccount=t.getMinimumBalanceForRentExemptAccountWithExtensions=t.getMinimumBalanceForRentExemptAccount=t.getMultipleAccounts=t.getAccount=t.ACCOUNT_SIZE=t.AccountLayout=t.AccountState=void 0;const o=n(54380),A=n(3629),s=n(38281),a=n(56463),c=n(13729),u=n(72705),l=n(6962);var g;function d(e,t,n){return r(this,void 0,void 0,(function*(){const i=(0,u.getAccountLen)(t);return yield e.getMinimumBalanceForRentExemption(i,n)}))}function h(e,n,r=s.TOKEN_PROGRAM_ID){if(!n)throw new a.TokenAccountNotFoundError;if(!n.owner.equals(r))throw new a.TokenInvalidAccountOwnerError;if(n.data.lengtht.ACCOUNT_SIZE){if(n.data.length===l.MULTISIG_SIZE)throw new a.TokenInvalidAccountSizeError;if(n.data[t.ACCOUNT_SIZE]!=c.AccountType.Account)throw new a.TokenInvalidAccountError;A=n.data.slice(t.ACCOUNT_SIZE+c.ACCOUNT_TYPE_SIZE)}return{address:e,mint:o.mint,owner:o.owner,amount:o.amount,delegate:o.delegateOption?o.delegate:null,delegatedAmount:o.delegatedAmount,isInitialized:o.state!==g.Uninitialized,isFrozen:o.state===g.Frozen,isNative:!!o.isNativeOption,rentExemptReserve:o.isNativeOption?o.isNative:null,closeAuthority:o.closeAuthorityOption?o.closeAuthority:null,tlvData:A}}!function(e){e[e.Uninitialized=0]="Uninitialized",e[e.Initialized=1]="Initialized",e[e.Frozen=2]="Frozen"}(g=t.AccountState||(t.AccountState={})),t.AccountLayout=(0,o.struct)([(0,A.publicKey)("mint"),(0,A.publicKey)("owner"),(0,A.u64)("amount"),(0,o.u32)("delegateOption"),(0,A.publicKey)("delegate"),(0,o.u8)("state"),(0,o.u32)("isNativeOption"),(0,A.u64)("isNative"),(0,A.u64)("delegatedAmount"),(0,o.u32)("closeAuthorityOption"),(0,A.publicKey)("closeAuthority")]),t.ACCOUNT_SIZE=t.AccountLayout.span,t.getAccount=function(e,t,n,i=s.TOKEN_PROGRAM_ID){return r(this,void 0,void 0,(function*(){const r=yield e.getAccountInfo(t,n);return h(t,r,i)}))},t.getMultipleAccounts=function(e,t,n,i=s.TOKEN_PROGRAM_ID){return r(this,void 0,void 0,(function*(){const r=yield e.getMultipleAccountsInfo(t,n);return t.map(((e,t)=>h(e,r[t],i)))}))},t.getMinimumBalanceForRentExemptAccount=function(e,t){return r(this,void 0,void 0,(function*(){return yield d(e,[],t)}))},t.getMinimumBalanceForRentExemptAccountWithExtensions=d,t.unpackAccount=h},8660:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(53739),t),r(n(3361),t),r(n(6962),t)},3361:function(e,t,n){"use strict";var i=n(55872).Buffer,r=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.getAssociatedTokenAddressSync=t.getAssociatedTokenAddress=t.getMinimumBalanceForRentExemptMintWithExtensions=t.getMinimumBalanceForRentExemptMint=t.unpackMint=t.getMint=t.MINT_SIZE=t.MintLayout=void 0;const o=n(54380),A=n(3629),s=n(97212),a=n(38281),c=n(56463),u=n(13729),l=n(72705),g=n(53739),d=n(6962);function h(e,n,r=a.TOKEN_PROGRAM_ID){if(!n)throw new c.TokenAccountNotFoundError;if(!n.owner.equals(r))throw new c.TokenInvalidAccountOwnerError;if(n.data.lengtht.MINT_SIZE){if(n.data.length<=g.ACCOUNT_SIZE)throw new c.TokenInvalidAccountSizeError;if(n.data.length===d.MULTISIG_SIZE)throw new c.TokenInvalidAccountSizeError;if(n.data[g.ACCOUNT_SIZE]!=u.AccountType.Mint)throw new c.TokenInvalidMintError;A=n.data.slice(g.ACCOUNT_SIZE+u.ACCOUNT_TYPE_SIZE)}return{address:e,mintAuthority:o.mintAuthorityOption?o.mintAuthority:null,supply:o.supply,decimals:o.decimals,isInitialized:o.isInitialized,freezeAuthority:o.freezeAuthorityOption?o.freezeAuthority:null,tlvData:A}}function p(e,t,n){return r(this,void 0,void 0,(function*(){const i=(0,l.getMintLen)(t);return yield e.getMinimumBalanceForRentExemption(i,n)}))}t.MintLayout=(0,o.struct)([(0,o.u32)("mintAuthorityOption"),(0,A.publicKey)("mintAuthority"),(0,A.u64)("supply"),(0,o.u8)("decimals"),(0,A.bool)("isInitialized"),(0,o.u32)("freezeAuthorityOption"),(0,A.publicKey)("freezeAuthority")]),t.MINT_SIZE=t.MintLayout.span,t.getMint=function(e,t,n,i=a.TOKEN_PROGRAM_ID){return r(this,void 0,void 0,(function*(){const r=yield e.getAccountInfo(t,n);return h(t,r,i)}))},t.unpackMint=h,t.getMinimumBalanceForRentExemptMint=function(e,t){return r(this,void 0,void 0,(function*(){return yield p(e,[],t)}))},t.getMinimumBalanceForRentExemptMintWithExtensions=p,t.getAssociatedTokenAddress=function(e,t,n=!1,i=a.TOKEN_PROGRAM_ID,o=a.ASSOCIATED_TOKEN_PROGRAM_ID){return r(this,void 0,void 0,(function*(){if(!n&&!s.PublicKey.isOnCurve(t.toBuffer()))throw new c.TokenOwnerOffCurveError;const[r]=yield s.PublicKey.findProgramAddress([t.toBuffer(),i.toBuffer(),e.toBuffer()],o);return r}))},t.getAssociatedTokenAddressSync=function(e,t,n=!1,i=a.TOKEN_PROGRAM_ID,r=a.ASSOCIATED_TOKEN_PROGRAM_ID){if(!n&&!s.PublicKey.isOnCurve(t.toBuffer()))throw new c.TokenOwnerOffCurveError;const[o]=s.PublicKey.findProgramAddressSync([t.toBuffer(),i.toBuffer(),e.toBuffer()],r);return o}},6962:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.getMinimumBalanceForRentExemptMultisig=t.unpackMultisig=t.getMultisig=t.MULTISIG_SIZE=t.MultisigLayout=void 0;const r=n(54380),o=n(3629),A=n(38281),s=n(56463);function a(e,n,i=A.TOKEN_PROGRAM_ID){if(!n)throw new s.TokenAccountNotFoundError;if(!n.owner.equals(i))throw new s.TokenInvalidAccountOwnerError;if(n.data.length!=t.MULTISIG_SIZE)throw new s.TokenInvalidAccountSizeError;const r=t.MultisigLayout.decode(n.data);return Object.assign({address:e},r)}t.MultisigLayout=(0,r.struct)([(0,r.u8)("m"),(0,r.u8)("n"),(0,o.bool)("isInitialized"),(0,o.publicKey)("signer1"),(0,o.publicKey)("signer2"),(0,o.publicKey)("signer3"),(0,o.publicKey)("signer4"),(0,o.publicKey)("signer5"),(0,o.publicKey)("signer6"),(0,o.publicKey)("signer7"),(0,o.publicKey)("signer8"),(0,o.publicKey)("signer9"),(0,o.publicKey)("signer10"),(0,o.publicKey)("signer11")]),t.MULTISIG_SIZE=t.MultisigLayout.span,t.getMultisig=function(e,t,n,r=A.TOKEN_PROGRAM_ID){return i(this,void 0,void 0,(function*(){const i=yield e.getAccountInfo(t,n);return a(t,i,r)}))},t.unpackMultisig=a,t.getMinimumBalanceForRentExemptMultisig=function(e,n){return i(this,void 0,void 0,(function*(){return yield e.getMinimumBalanceForRentExemption(t.MULTISIG_SIZE,n)}))}},781:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},r=this&&this.__rest||function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r{const e=this._wallet;e&&(e.off("disconnect",this._disconnected),this._wallet=null,this._publicKey=null,this.emit("error",new o.WalletDisconnectedError),this.emit("disconnect"))},this._connecting=!1,this._wallet=null,this._publicKey=null,this._readyState!==o.WalletReadyState.Unsupported&&(0,o.scopePollingDetectionStrategy)((()=>{var e;return!!(null===(e=window.backpack)||void 0===e?void 0:e.isBackpack)&&(this._readyState=o.WalletReadyState.Installed,this.emit("readyStateChange",this._readyState),!0)}))}get publicKey(){return this._publicKey}get connecting(){return this._connecting}get connected(){var e;return!!(null===(e=this._wallet)||void 0===e?void 0:e.isConnected)}get readyState(){return this._readyState}connect(){return i(this,void 0,void 0,(function*(){try{if(this.connected||this.connecting)return;if(this._readyState!==o.WalletReadyState.Installed)throw new o.WalletNotReadyError;this._connecting=!0;const e=window.backpack;try{yield e.connect()}catch(e){throw new o.WalletConnectionError(null==e?void 0:e.message,e)}if(!e.publicKey)throw new o.WalletAccountError;let t;try{t=new A.PublicKey(e.publicKey.toBytes())}catch(e){throw new o.WalletPublicKeyError(null==e?void 0:e.message,e)}e.on("disconnect",this._disconnected),this._wallet=e,this._publicKey=t,this.emit("connect",t)}catch(e){throw this.emit("error",e),e}finally{this._connecting=!1}}))}disconnect(){return i(this,void 0,void 0,(function*(){const e=this._wallet;if(e){e.off("disconnect",this._disconnected),this._wallet=null,this._publicKey=null;try{yield e.disconnect()}catch(e){this.emit("error",new o.WalletDisconnectionError(null==e?void 0:e.message,e))}}this.emit("disconnect")}))}sendTransaction(e,t,n={}){return i(this,void 0,void 0,(function*(){try{const i=this._wallet;if(!i)throw new o.WalletNotConnectedError;const{signers:A}=n,s=r(n,["signers"]);try{return yield i.send(e,A,s,t,this.publicKey)}catch(e){throw new o.WalletSendTransactionError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))}signTransaction(e){return i(this,void 0,void 0,(function*(){try{const t=this._wallet;if(!t)throw new o.WalletNotConnectedError;try{return yield t.signTransaction(e,this.publicKey)}catch(e){throw new o.WalletSignTransactionError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))}signAllTransactions(e){return i(this,void 0,void 0,(function*(){try{const t=this._wallet;if(!t)throw new o.WalletNotConnectedError;try{return yield t.signAllTransactions(e,this.publicKey)}catch(e){throw new o.WalletSignTransactionError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))}signMessage(e){return i(this,void 0,void 0,(function*(){try{const t=this._wallet;if(!t)throw new o.WalletNotConnectedError;try{return yield t.signMessage(e,this.publicKey)}catch(e){throw new o.WalletSignMessageError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))}}t.BackpackWalletAdapter=s},19155:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(781),t)},12598:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},r=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.isIosAndRedirectable=t.scopePollingDetectionStrategy=t.BaseWalletAdapter=t.WalletReadyState=t.EventEmitter=void 0;const o=r(n(11312));t.EventEmitter=o.default;const A=n(18653);var s;(s=t.WalletReadyState||(t.WalletReadyState={})).Installed="Installed",s.NotDetected="NotDetected",s.Loadable="Loadable",s.Unsupported="Unsupported";class a extends o.default{get connected(){return!!this.publicKey}autoConnect(){return i(this,void 0,void 0,(function*(){yield this.connect()}))}prepareTransaction(e,t,n={}){return i(this,void 0,void 0,(function*(){const i=this.publicKey;if(!i)throw new A.WalletNotConnectedError;return e.feePayer=e.feePayer||i,e.recentBlockhash=e.recentBlockhash||(yield t.getLatestBlockhash({commitment:n.preflightCommitment,minContextSlot:n.minContextSlot})).blockhash,e}))}}t.BaseWalletAdapter=a,t.scopePollingDetectionStrategy=function(e){if("undefined"==typeof window||"undefined"==typeof document)return;const t=[];function n(){if(e())for(const e of t)e()}const i=setInterval(n,1e3);t.push((()=>clearInterval(i))),"loading"===document.readyState&&(document.addEventListener("DOMContentLoaded",n,{once:!0}),t.push((()=>document.removeEventListener("DOMContentLoaded",n)))),"complete"!==document.readyState&&(window.addEventListener("load",n,{once:!0}),t.push((()=>window.removeEventListener("load",n)))),n()},t.isIosAndRedirectable=function(){if(!navigator)return!1;const e=navigator.userAgent.toLowerCase(),t=e.includes("iphone")||e.includes("ipad"),n=e.includes("safari");return t&&n}},18653:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WalletWindowClosedError=t.WalletWindowBlockedError=t.WalletTimeoutError=t.WalletSignTransactionError=t.WalletSignMessageError=t.WalletSendTransactionError=t.WalletNotConnectedError=t.WalletKeypairError=t.WalletPublicKeyError=t.WalletAccountError=t.WalletDisconnectionError=t.WalletDisconnectedError=t.WalletConnectionError=t.WalletConfigError=t.WalletLoadError=t.WalletNotReadyError=t.WalletError=void 0;class n extends Error{constructor(e,t){super(e),this.error=t}}t.WalletError=n,t.WalletNotReadyError=class extends n{constructor(){super(...arguments),this.name="WalletNotReadyError"}},t.WalletLoadError=class extends n{constructor(){super(...arguments),this.name="WalletLoadError"}},t.WalletConfigError=class extends n{constructor(){super(...arguments),this.name="WalletConfigError"}},t.WalletConnectionError=class extends n{constructor(){super(...arguments),this.name="WalletConnectionError"}},t.WalletDisconnectedError=class extends n{constructor(){super(...arguments),this.name="WalletDisconnectedError"}},t.WalletDisconnectionError=class extends n{constructor(){super(...arguments),this.name="WalletDisconnectionError"}},t.WalletAccountError=class extends n{constructor(){super(...arguments),this.name="WalletAccountError"}},t.WalletPublicKeyError=class extends n{constructor(){super(...arguments),this.name="WalletPublicKeyError"}},t.WalletKeypairError=class extends n{constructor(){super(...arguments),this.name="WalletKeypairError"}},t.WalletNotConnectedError=class extends n{constructor(){super(...arguments),this.name="WalletNotConnectedError"}},t.WalletSendTransactionError=class extends n{constructor(){super(...arguments),this.name="WalletSendTransactionError"}},t.WalletSignMessageError=class extends n{constructor(){super(...arguments),this.name="WalletSignMessageError"}},t.WalletSignTransactionError=class extends n{constructor(){super(...arguments),this.name="WalletSignTransactionError"}},t.WalletTimeoutError=class extends n{constructor(){super(...arguments),this.name="WalletTimeoutError"}},t.WalletWindowBlockedError=class extends n{constructor(){super(...arguments),this.name="WalletWindowBlockedError"}},t.WalletWindowClosedError=class extends n{constructor(){super(...arguments),this.name="WalletWindowClosedError"}}},79335:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(12598),t),r(n(18653),t),r(n(41943),t),r(n(91663),t)},41943:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},r=this&&this.__rest||function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.isVersionedTransaction=t.WalletAdapterNetwork=void 0,(n=t.WalletAdapterNetwork||(t.WalletAdapterNetwork={})).Mainnet="mainnet-beta",n.Testnet="testnet",n.Devnet="devnet",t.isVersionedTransaction=function(e){return"version"in e}},2321:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},r=this&&this.__rest||function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r{const e=this._wallet;e&&(e.off("disconnect",this._disconnected),this._wallet=null,this._publicKey=null,this.emit("error",new o.WalletDisconnectedError),this.emit("disconnect"))},this._connecting=!1,this._wallet=null,this._publicKey=null,this._network=e.network||null,this._readyState!==o.WalletReadyState.Unsupported){const e=t=>{"object"==typeof t.data&&t.data.__glow_loaded&&(this._readyState!==o.WalletReadyState.Installed&&(this._readyState=o.WalletReadyState.Installed,this.emit("readyStateChange",this._readyState)),window.removeEventListener("message",e))};window.addEventListener("message",e),(0,o.scopePollingDetectionStrategy)((()=>{var t;return!!(null===(t=window.glowSolana)||void 0===t?void 0:t.isGlow)&&(window.removeEventListener("message",e),this._readyState!==o.WalletReadyState.Installed&&(this._readyState=o.WalletReadyState.Installed,this.emit("readyStateChange",this._readyState)),!0)}))}}get publicKey(){return this._publicKey}get connecting(){return this._connecting}get connected(){var e;return!!(null===(e=this._wallet)||void 0===e?void 0:e.isConnected)}get readyState(){return this._readyState}connect(){return i(this,void 0,void 0,(function*(){try{if(this.connected||this.connecting)return;if(this._readyState!==o.WalletReadyState.Installed)throw new o.WalletNotReadyError;this._connecting=!0;const e=window.glowSolana;try{yield e.connect()}catch(e){throw new o.WalletConnectionError(null==e?void 0:e.message,e)}if(!e.publicKey)throw new o.WalletAccountError;let t;try{t=new A.PublicKey(e.publicKey.toBytes())}catch(e){throw new o.WalletPublicKeyError(null==e?void 0:e.message,e)}e.on("disconnect",this._disconnected),this._wallet=e,this._publicKey=t,this.emit("connect",t)}catch(e){throw this.emit("error",e),e}finally{this._connecting=!1}}))}disconnect(){return i(this,void 0,void 0,(function*(){const e=this._wallet;if(e){e.off("disconnect",this._disconnected),this._wallet=null,this._publicKey=null;try{yield e.disconnect()}catch(e){this.emit("error",new o.WalletDisconnectionError(null==e?void 0:e.message,e))}}this.emit("disconnect")}))}sendTransaction(e,t,n={}){return i(this,void 0,void 0,(function*(){try{const i=this._wallet;if(!i)throw new o.WalletNotConnectedError;try{const{signers:o}=n,A=r(n,["signers"]);e=yield this.prepareTransaction(e,t,A),(null==o?void 0:o.length)&&e.partialSign(...o),A.preflightCommitment=A.preflightCommitment||t.commitment;const{signature:s}=yield i.signAndSendTransaction(e,Object.assign(Object.assign({},A),{network:this._network}));return s}catch(e){if(e instanceof o.WalletError)throw e;throw new o.WalletSendTransactionError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))}signTransaction(e){return i(this,void 0,void 0,(function*(){try{const t=this._wallet;if(!t)throw new o.WalletNotConnectedError;try{return(yield t.signTransaction(e,this._network))||e}catch(e){throw new o.WalletSignTransactionError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))}signAllTransactions(e){return i(this,void 0,void 0,(function*(){try{const t=this._wallet;if(!t)throw new o.WalletNotConnectedError;try{return(yield t.signAllTransactions(e,this._network))||e}catch(e){throw new o.WalletSignTransactionError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))}signMessage(e){return i(this,void 0,void 0,(function*(){try{const t=this._wallet;if(!t)throw new o.WalletNotConnectedError;try{const{signature:n}=yield t.signMessage(e);return n}catch(e){throw new o.WalletSignMessageError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))}}t.GlowWalletAdapter=s},70077:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(2321),t)},6969:function(e,t,n){"use strict";var i=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},r=this&&this.__rest||function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r{const e=this._wallet;e&&(e.off("disconnect",this._disconnected),e.off("accountChanged",this._accountChanged),this._wallet=null,this._publicKey=null,this.emit("error",new o.WalletDisconnectedError),this.emit("disconnect"))},this._accountChanged=e=>{const t=this._publicKey;if(t){try{e=new A.PublicKey(e.toBytes())}catch(e){return void this.emit("error",new o.WalletPublicKeyError(null==e?void 0:e.message,e))}t.equals(e)||(this._publicKey=e,this.emit("connect",e))}},this._connecting=!1,this._wallet=null,this._publicKey=null,this._readyState!==o.WalletReadyState.Unsupported&&((0,o.isIosAndRedirectable)()?(this._readyState=o.WalletReadyState.Loadable,this.emit("readyStateChange",this._readyState)):(0,o.scopePollingDetectionStrategy)((()=>{var e,t,n;return!(!(null===(t=null===(e=window.phantom)||void 0===e?void 0:e.solana)||void 0===t?void 0:t.isPhantom)&&!(null===(n=window.solana)||void 0===n?void 0:n.isPhantom)||(this._readyState=o.WalletReadyState.Installed,this.emit("readyStateChange",this._readyState),0))})))}get publicKey(){return this._publicKey}get connecting(){return this._connecting}get connected(){var e;return!!(null===(e=this._wallet)||void 0===e?void 0:e.isConnected)}get readyState(){return this._readyState}autoConnect(){return i(this,void 0,void 0,(function*(){this.readyState===o.WalletReadyState.Installed&&(yield this.connect())}))}connect(){var e;return i(this,void 0,void 0,(function*(){try{if(this.connected||this.connecting)return;if(this.readyState===o.WalletReadyState.Loadable){const e=encodeURI(window.location.href),t=encodeURI(window.location.origin);return void(window.location.href=`https://phantom.app/ul/browse/${e}?ref=${t}`)}if(this.readyState!==o.WalletReadyState.Installed)throw new o.WalletNotReadyError;this._connecting=!0;const t=(null===(e=window.phantom)||void 0===e?void 0:e.solana)||window.solana;if(!t.isConnected)try{yield t.connect()}catch(e){throw new o.WalletConnectionError(null==e?void 0:e.message,e)}if(!t.publicKey)throw new o.WalletAccountError;let n;try{n=new A.PublicKey(t.publicKey.toBytes())}catch(e){throw new o.WalletPublicKeyError(null==e?void 0:e.message,e)}t.on("disconnect",this._disconnected),t.on("accountChanged",this._accountChanged),this._wallet=t,this._publicKey=n,this.emit("connect",n)}catch(e){throw this.emit("error",e),e}finally{this._connecting=!1}}))}disconnect(){return i(this,void 0,void 0,(function*(){const e=this._wallet;if(e){e.off("disconnect",this._disconnected),e.off("accountChanged",this._accountChanged),this._wallet=null,this._publicKey=null;try{yield e.disconnect()}catch(e){this.emit("error",new o.WalletDisconnectionError(null==e?void 0:e.message,e))}}this.emit("disconnect")}))}sendTransaction(e,t,n={}){return i(this,void 0,void 0,(function*(){try{const i=this._wallet;if(!i)throw new o.WalletNotConnectedError;try{const{signers:A}=n,s=r(n,["signers"]);(0,o.isVersionedTransaction)(e)?(null==A?void 0:A.length)&&e.sign(A):(e=yield this.prepareTransaction(e,t,s),(null==A?void 0:A.length)&&e.partialSign(...A)),s.preflightCommitment=s.preflightCommitment||t.commitment;const{signature:a}=yield i.signAndSendTransaction(e,s);return a}catch(e){if(e instanceof o.WalletError)throw e;throw new o.WalletSendTransactionError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))}signTransaction(e){return i(this,void 0,void 0,(function*(){try{const t=this._wallet;if(!t)throw new o.WalletNotConnectedError;try{return(yield t.signTransaction(e))||e}catch(e){throw new o.WalletSignTransactionError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))}signAllTransactions(e){return i(this,void 0,void 0,(function*(){try{const t=this._wallet;if(!t)throw new o.WalletNotConnectedError;try{return(yield t.signAllTransactions(e))||e}catch(e){throw new o.WalletSignTransactionError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))}signMessage(e){return i(this,void 0,void 0,(function*(){try{const t=this._wallet;if(!t)throw new o.WalletNotConnectedError;try{const{signature:n}=yield t.signMessage(e);return n}catch(e){throw new o.WalletSignMessageError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))}}t.PhantomWalletAdapter=s},86072:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(6969),t)},58253:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return r(t,e),t};Object.defineProperty(t,"__esModule",{value:!0}),t.ConnectionProvider=void 0;const A=n(97212),s=o(n(50959)),a=n(65045);t.ConnectionProvider=({children:e,endpoint:t,config:n={commitment:"confirmed"}})=>{const i=(0,s.useMemo)((()=>new A.Connection(t,n)),[t,n]);return s.default.createElement(a.ConnectionContext.Provider,{value:{connection:i}},e)}},13852:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return r(t,e),t},A=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.WalletProvider=void 0;const s=n(58787),a=n(89230),c=o(n(50959)),u=o(n(97928)),l=A(n(32313)),g=n(65045),d=n(1489),h=n(57275);let p;function f(e){const t=(void 0===p&&(p=null!==(i=null===(n=globalThis.navigator)||void 0===n?void 0:n.userAgent)&&void 0!==i?i:null),p);var n,i;return(0,u.default)({adapters:e,userAgentString:t})===u.Environment.MOBILE_WEB}function m(){const e=globalThis.location;if(null!=e)return`${e.protocol}//${e.host}`}t.WalletProvider=function({children:e,wallets:t,autoConnect:n,localStorageKey:i="walletName",onError:r}){const{connection:o}=(0,g.useConnection)(),A=(0,a.useStandardWalletAdapters)(t),u=(0,c.useMemo)((()=>{if(!f(A))return null;const e=A.find((e=>e.name===s.SolanaMobileWalletAdapterWalletName));return e||new s.SolanaMobileWalletAdapter({addressSelector:(0,s.createDefaultAddressSelector)(),appIdentity:{uri:m()},authorizationResultCache:(0,s.createDefaultAuthorizationResultCache)(),cluster:(0,l.default)(null==o?void 0:o.rpcEndpoint),onWalletNotFound:(0,s.createDefaultWalletNotFoundHandler)()})}),[A,null==o?void 0:o.rpcEndpoint]),p=(0,c.useMemo)((()=>null==u||-1!==A.indexOf(u)?A:[u,...A]),[A,u]),[I,y]=(0,d.useLocalStorage)(i,f(A)?s.SolanaMobileWalletAdapterWalletName:null),B=(0,c.useMemo)((()=>{var e;return null!==(e=p.find((e=>e.name===I)))&&void 0!==e?e:null}),[p,I]),C=(0,c.useCallback)((e=>{I!==e&&(B&&B.name!==s.SolanaMobileWalletAdapterWalletName&&B.disconnect(),y(e))}),[B,y,I]);(0,c.useEffect)((()=>{if(null!=B)return B.on("disconnect",e),()=>{B.off("disconnect",e)};function e(){Q.current||I===s.SolanaMobileWalletAdapterWalletName&&f(A)||y(null)}}),[B,A,y,I]);const w=(0,c.useRef)(!1),E=(0,c.useMemo)((()=>{if(!0===n&&B)return()=>w.current?B.connect():B.autoConnect()}),[B,n]),Q=(0,c.useRef)(!1);(0,c.useEffect)((()=>{if(I!==s.SolanaMobileWalletAdapterWalletName||!f(A))return window.addEventListener("beforeunload",e),()=>{window.removeEventListener("beforeunload",e)};function e(){Q.current=!0}Q.current=!1}),[A,I]);const b=(0,c.useCallback)((()=>{B&&B.name!==s.SolanaMobileWalletAdapterWalletName&&C(null)}),[B,C]),k=(0,c.useCallback)((e=>{w.current=!0,C(e)}),[C]);return c.default.createElement(h.WalletProviderBase,{wallets:p,adapter:B,isUnloadingRef:Q,onAutoConnectRequest:E,onConnectError:b,onError:r,onSelectWallet:k},e)}},57275:function(e,t,n){"use strict";var i=n(49500),r=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),o=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),A=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&r(t,e,n);return o(t,e),t},s=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.WalletProviderBase=void 0;const a=n(79335),c=A(n(50959)),u=n(44739),l=n(44268);t.WalletProviderBase=function({children:e,wallets:t,adapter:n,isUnloadingRef:r,onAutoConnectRequest:o,onConnectError:A,onError:g,onSelectWallet:d}){const h=(0,c.useRef)(!1),[p,f]=(0,c.useState)(!1),m=(0,c.useRef)(!1),[I,y]=(0,c.useState)(!1),[B,C]=(0,c.useState)((()=>{var e;return null!==(e=null==n?void 0:n.publicKey)&&void 0!==e?e:null})),[w,E]=(0,c.useState)((()=>{var e;return null!==(e=null==n?void 0:n.connected)&&void 0!==e&&e})),Q=(0,c.useRef)(g);(0,c.useEffect)((()=>(Q.current=g,()=>{Q.current=void 0})),[g]);const b=(0,c.useRef)(((e,t)=>(r.current||(Q.current?Q.current(e,t):(i.error(e,t),e instanceof a.WalletNotReadyError&&"undefined"!=typeof window&&t&&window.open(t.url,"_blank"))),e))),[k,v]=(0,c.useState)((()=>t.map((e=>({adapter:e,readyState:e.readyState}))).filter((({readyState:e})=>e!==a.WalletReadyState.Unsupported))));(0,c.useEffect)((()=>{function e(e){v((t=>{const n=t.findIndex((({adapter:e})=>e===this));if(-1===n)return t;const{adapter:i}=t[n];return[...t.slice(0,n),{adapter:i,readyState:e},...t.slice(n+1)].filter((({readyState:e})=>e!==a.WalletReadyState.Unsupported))}))}return v((e=>t.map(((t,n)=>{const i=e[n];return i&&i.adapter===t&&i.readyState===t.readyState?i:{adapter:t,readyState:t.readyState}})).filter((({readyState:e})=>e!==a.WalletReadyState.Unsupported)))),t.forEach((t=>t.on("readyStateChange",e,t))),()=>{t.forEach((t=>t.off("readyStateChange",e,t)))}}),[n,t]);const S=(0,c.useMemo)((()=>{var e;return null!==(e=k.find((e=>e.adapter===n)))&&void 0!==e?e:null}),[n,k]);(0,c.useEffect)((()=>{if(!n)return;const e=e=>{C(e),h.current=!1,f(!1),E(!0),m.current=!1,y(!1)},t=()=>{r.current||(C(null),h.current=!1,f(!1),E(!1),m.current=!1,y(!1))},i=e=>{b.current(e,n)};return n.on("connect",e),n.on("disconnect",t),n.on("error",i),()=>{n.off("connect",e),n.off("disconnect",t),n.off("error",i),t()}}),[n,r]);const M=(0,c.useRef)(!1);(0,c.useEffect)((()=>()=>{M.current=!1}),[n]),(0,c.useEffect)((()=>{M.current||h.current||w||!o||(null==S?void 0:S.readyState)!==a.WalletReadyState.Installed&&(null==S?void 0:S.readyState)!==a.WalletReadyState.Loadable||(h.current=!0,f(!0),M.current=!0,function(){s(this,void 0,void 0,(function*(){try{yield o()}catch(e){A()}finally{f(!1),h.current=!1}}))}())}),[w,o,A,S]);const D=(0,c.useCallback)(((e,t,i)=>s(this,void 0,void 0,(function*(){if(!n)throw b.current(new u.WalletNotSelectedError);if(!w)throw b.current(new a.WalletNotConnectedError,n);return yield n.sendTransaction(e,t,i)}))),[n,w]),N=(0,c.useMemo)((()=>n&&"signTransaction"in n?e=>s(this,void 0,void 0,(function*(){if(!w)throw b.current(new a.WalletNotConnectedError,n);return yield n.signTransaction(e)})):void 0),[n,w]),T=(0,c.useMemo)((()=>n&&"signAllTransactions"in n?e=>s(this,void 0,void 0,(function*(){if(!w)throw b.current(new a.WalletNotConnectedError,n);return yield n.signAllTransactions(e)})):void 0),[n,w]),P=(0,c.useMemo)((()=>n&&"signMessage"in n?e=>s(this,void 0,void 0,(function*(){if(!w)throw b.current(new a.WalletNotConnectedError,n);return yield n.signMessage(e)})):void 0),[n,w]),O=(0,c.useCallback)((()=>s(this,void 0,void 0,(function*(){if(h.current||m.current||(null==S?void 0:S.adapter.connected))return;if(!S)throw b.current(new u.WalletNotSelectedError);const{adapter:e,readyState:t}=S;if(t!==a.WalletReadyState.Installed&&t!==a.WalletReadyState.Loadable)throw b.current(new a.WalletNotReadyError,e);h.current=!0,f(!0);try{yield e.connect()}catch(e){throw A(),e}finally{f(!1),h.current=!1}}))),[A,S]),F=(0,c.useCallback)((()=>s(this,void 0,void 0,(function*(){if(!m.current&&n){m.current=!0,y(!0);try{yield n.disconnect()}finally{y(!1),m.current=!1}}}))),[n]);return c.default.createElement(l.WalletContext.Provider,{value:{autoConnect:!!o,wallets:k,wallet:S,publicKey:B,connected:w,connecting:p,disconnecting:I,select:d,connect:O,disconnect:F,sendTransaction:D,signTransaction:N,signAllTransactions:T,signMessage:P}},e)}},44739:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.WalletNotSelectedError=void 0;const i=n(79335);class r extends i.WalletError{constructor(){super(...arguments),this.name="WalletNotSelectedError"}}t.WalletNotSelectedError=r},97928:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Environment=void 0;const i=n(58787),r=n(79335);var o;!function(e){e[e.DESKTOP_WEB=0]="DESKTOP_WEB",e[e.MOBILE_WEB=1]="MOBILE_WEB"}(o=t.Environment||(t.Environment={})),t.default=function({adapters:e,userAgentString:t}){return e.some((e=>e.name!==i.SolanaMobileWalletAdapterWalletName&&e.readyState===r.WalletReadyState.Installed))?o.DESKTOP_WEB:t&&/android/i.test(t)&&!function(e){return/(WebView|Version\/.+(Chrome)\/(\d+)\.(\d+)\.(\d+)\.(\d+)|; wv\).+(Chrome)\/(\d+)\.(\d+)\.(\d+)\.(\d+))/i.test(e)}(t)?o.MOBILE_WEB:o.DESKTOP_WEB}},32313:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(e){return e?/devnet/i.test(e)?"devnet":/testnet/i.test(e)?"testnet":"mainnet-beta":"mainnet-beta"}},93200:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(58253),t),r(n(44739),t),r(n(58188),t),r(n(65045),t),r(n(1489),t),r(n(44268),t),r(n(13852),t)},58188:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useAnchorWallet=void 0;const i=n(50959),r=n(44268);t.useAnchorWallet=function(){const{publicKey:e,signTransaction:t,signAllTransactions:n}=(0,r.useWallet)();return(0,i.useMemo)((()=>e&&t&&n?{publicKey:e,signTransaction:t,signAllTransactions:n}:void 0),[e,t,n])}},65045:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.useConnection=t.ConnectionContext=void 0;const i=n(50959);t.ConnectionContext=(0,i.createContext)({}),t.useConnection=function(){return(0,i.useContext)(t.ConnectionContext)}},1489:(e,t,n)=>{"use strict";var i=n(49500);Object.defineProperty(t,"__esModule",{value:!0}),t.useLocalStorage=void 0;const r=n(50959);t.useLocalStorage=function(e,t){const n=(0,r.useState)((()=>{try{const t=localStorage.getItem(e);if(t)return JSON.parse(t)}catch(e){"undefined"!=typeof window&&i.error(e)}return t})),o=n[0],A=(0,r.useRef)(!0);return(0,r.useEffect)((()=>{if(A.current)A.current=!1;else try{null===o?localStorage.removeItem(e):localStorage.setItem(e,JSON.stringify(o))}catch(e){"undefined"!=typeof window&&i.error(e)}}),[o,e]),n}},44268:(e,t,n)=>{"use strict";var i=n(49500);Object.defineProperty(t,"__esModule",{value:!0}),t.useWallet=t.WalletContext=void 0;const r=n(50959),o=[],A={autoConnect:!1,connecting:!1,connected:!1,disconnecting:!1,select(e){i.error(s("get","select"))},connect:()=>Promise.reject(i.error(s("get","connect"))),disconnect:()=>Promise.reject(i.error(s("get","disconnect"))),sendTransaction:(e,t,n)=>Promise.reject(i.error(s("get","sendTransaction"))),signTransaction:e=>Promise.reject(i.error(s("get","signTransaction"))),signAllTransactions:e=>Promise.reject(i.error(s("get","signAllTransactions"))),signMessage:e=>Promise.reject(i.error(s("get","signMessage")))};function s(e,t){return`You have tried to ${e} "${t}" on a WalletContext without providing one. Make sure to render a WalletProvider as an ancestor of the component that uses WalletContext`}Object.defineProperty(A,"wallets",{get:()=>(i.error(s("read","wallets")),o)}),Object.defineProperty(A,"wallet",{get:()=>(i.error(s("read","wallet")),null)}),Object.defineProperty(A,"publicKey",{get:()=>(i.error(s("read","publicKey")),null)}),t.WalletContext=(0,r.createContext)(A),t.useWallet=function(){return(0,r.useContext)(t.WalletContext)}},9578:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__setModuleDefault||(Object.create?function(e,t){Object.defineProperty(e,"default",{enumerable:!0,value:t})}:function(e,t){e.default=t}),o=this&&this.__importStar||function(e){if(e&&e.__esModule)return e;var t={};if(null!=e)for(var n in e)"default"!==n&&Object.prototype.hasOwnProperty.call(e,n)&&i(t,e,n);return r(t,e),t},A=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))};Object.defineProperty(t,"__esModule",{value:!0}),t.SolflareWalletAdapter=t.SolflareWalletName=void 0;const s=n(79335),a=n(97212);t.SolflareWalletName="Solflare";class c extends s.BaseMessageSignerWalletAdapter{constructor(e={}){super(),this.name=t.SolflareWalletName,this.url="https://solflare.com",this.icon="data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjUwIiB2aWV3Qm94PSIwIDAgNTAgNTAiIHdpZHRoPSI1MCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayI+PGxpbmVhckdyYWRpZW50IGlkPSJhIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmMxMGIiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmYjNmMmUiLz48L2xpbmVhckdyYWRpZW50PjxsaW5lYXJHcmFkaWVudCBpZD0iYiIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI2LjQ3ODM1IiB4Mj0iMzQuOTEwNyIgeGxpbms6aHJlZj0iI2EiIHkxPSI3LjkyIiB5Mj0iMzMuNjU5MyIvPjxyYWRpYWxHcmFkaWVudCBpZD0iYyIgY3g9IjAiIGN5PSIwIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KDQuOTkyMTg4MzIgMTIuMDYzODc5NjMgLTEyLjE4MTEzNjU1IDUuMDQwNzEwNzQgMjIuNTIwMiAyMC42MTgzKSIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHI9IjEiIHhsaW5rOmhyZWY9IiNhIi8+PHBhdGggZD0ibTI1LjE3MDggNDcuOTEwNGMuNTI1IDAgLjk1MDcuNDIxLjk1MDcuOTQwM3MtLjQyNTcuOTQwMi0uOTUwNy45NDAyLS45NTA3LS40MjA5LS45NTA3LS45NDAyLjQyNTctLjk0MDMuOTUwNy0uOTQwM3ptLTEuMDMyOC00NC45MTU2NWMuNDY0Ni4wMzgzNi44Mzk4LjM5MDQuOTAyNy44NDY4MWwxLjEzMDcgOC4yMTU3NGMuMzc5OCAyLjcxNDMgMy42NTM1IDMuODkwNCA1LjY3NDMgMi4wNDU5bDExLjMyOTEtMTAuMzExNThjLjI3MzMtLjI0ODczLjY5ODktLjIzMTQ5Ljk1MDcuMDM4NTEuMjMwOS4yNDc3Mi4yMzc5LjYyNjk3LjAxNjEuODgyNzdsLTkuODc5MSAxMS4zOTU4Yy0xLjgxODcgMi4wOTQyLS40NzY4IDUuMzY0MyAyLjI5NTYgNS41OTc4bDguNzE2OC44NDAzYy40MzQxLjA0MTguNzUxNy40MjM0LjcwOTMuODUyNC0uMDM0OS4zNTM3LS4zMDc0LjYzOTUtLjY2MjguNjk0OWwtOS4xNTk0IDEuNDMwMmMtMi42NTkzLjM2MjUtMy44NjM2IDMuNTExNy0yLjEzMzkgNS41NTc2bDMuMjIgMy43OTYxYy4yNTk0LjMwNTguMjE4OC43NjE1LS4wOTA4IDEuMDE3OC0uMjYyMi4yMTcyLS42NDE5LjIyNTYtLjkxMzguMDIwM2wtMy45Njk0LTIuOTk3OGMtMi4xNDIxLTEuNjEwOS01LjIyOTctLjI0MTctNS40NTYxIDIuNDI0M2wtLjg3NDcgMTAuMzk3NmMtLjAzNjIuNDI5NS0uNDE3OC43NDg3LS44NTI1LjcxMy0uMzY5LS4wMzAzLS42NjcxLS4zMDk3LS43MTcxLS42NzIxbC0xLjM4NzEtMTAuMDQzN2MtLjM3MTctMi43MTQ0LTMuNjQ1NC0zLjg5MDQtNS42NzQzLTIuMDQ1OWwtMTIuMDUxOTUgMTAuOTc0Yy0uMjQ5NDcuMjI3MS0uNjM4MDkuMjExNC0uODY4LS4wMzUtLjIxMDk0LS4yMjYyLS4yMTczNS0uNTcyNC0uMDE0OTMtLjgwNmwxMC41MTgxOC0xMi4xMzg1YzEuODE4Ny0yLjA5NDIuNDg0OS01LjM2NDQtMi4yODc2LTUuNTk3OGwtOC43MTg3Mi0uODQwNWMtLjQzNDEzLS4wNDE4LS43NTE3Mi0uNDIzNS0uNzA5MzYtLjg1MjQuMDM0OTMtLjM1MzcuMzA3MzktLjYzOTQuNjYyNy0uNjk1bDkuMTUzMzgtMS40Mjk5YzIuNjU5NC0uMzYyNSAzLjg3MTgtMy41MTE3IDIuMTQyMS01LjU1NzZsLTIuMTkyLTIuNTg0MWMtLjMyMTctLjM3OTItLjI3MTMtLjk0NDMuMTEyNi0xLjI2MjEuMzI1My0uMjY5NC43OTYzLS4yNzk3IDEuMTMzNC0uMDI0OWwyLjY5MTggMi4wMzQ3YzIuMTQyMSAxLjYxMDkgNS4yMjk3LjI0MTcgNS40NTYxLTIuNDI0M2wuNzI0MS04LjU1OTk4Yy4wNDU3LS41NDA4LjUyNjUtLjk0MjU3IDEuMDczOS0uODk3Mzd6bS0yMy4xODczMyAyMC40Mzk2NWMuNTI1MDQgMCAuOTUwNjcuNDIxLjk1MDY3Ljk0MDNzLS40MjU2My45NDAzLS45NTA2Ny45NDAzYy0uNTI1MDQxIDAtLjk1MDY3LS40MjEtLjk1MDY3LS45NDAzcy40MjU2MjktLjk0MDMuOTUwNjctLjk0MDN6bTQ3LjY3OTczLS45NTQ3Yy41MjUgMCAuOTUwNy40MjEuOTUwNy45NDAzcy0uNDI1Ny45NDAyLS45NTA3Ljk0MDItLjk1MDctLjQyMDktLjk1MDctLjk0MDIuNDI1Ny0uOTQwMy45NTA3LS45NDAzem0tMjQuNjI5Ni0yMi40Nzk3Yy41MjUgMCAuOTUwNi40MjA5NzMuOTUwNi45NDAyNyAwIC41MTkzLS40MjU2Ljk0MDI3LS45NTA2Ljk0MDI3LS41MjUxIDAtLjk1MDctLjQyMDk3LS45NTA3LS45NDAyNyAwLS41MTkyOTcuNDI1Ni0uOTQwMjcuOTUwNy0uOTQwMjd6IiBmaWxsPSJ1cmwoI2IpIi8+PHBhdGggZD0ibTI0LjU3MSAzMi43NzkyYzQuOTU5NiAwIDguOTgwMi0zLjk3NjUgOC45ODAyLTguODgxOSAwLTQuOTA1My00LjAyMDYtOC44ODE5LTguOTgwMi04Ljg4MTlzLTguOTgwMiAzLjk3NjYtOC45ODAyIDguODgxOWMwIDQuOTA1NCA0LjAyMDYgOC44ODE5IDguOTgwMiA4Ljg4MTl6IiBmaWxsPSJ1cmwoI2MpIi8+PC9zdmc+",this.supportedTransactionVersions=new Set(["legacy",0]),this._readyState="undefined"==typeof window||"undefined"==typeof document?s.WalletReadyState.Unsupported:s.WalletReadyState.Loadable,this._disconnected=()=>{const e=this._wallet;e&&(e.off("disconnect",this._disconnected),this._wallet=null,this._publicKey=null,this.emit("error",new s.WalletDisconnectedError),this.emit("disconnect"))},this._accountChanged=e=>{if(!e)return;const t=this._publicKey;if(t){try{e=new a.PublicKey(e.toBytes())}catch(e){return void this.emit("error",new s.WalletPublicKeyError(null==e?void 0:e.message,e))}t.equals(e)||(this._publicKey=e,this.emit("connect",e))}},this._connecting=!1,this._publicKey=null,this._wallet=null,this._config=e,this._readyState!==s.WalletReadyState.Unsupported&&(0,s.scopePollingDetectionStrategy)((()=>{var e;return!(!(null===(e=window.solflare)||void 0===e?void 0:e.isSolflare)&&!window.SolflareApp||(this._readyState=s.WalletReadyState.Installed,this.emit("readyStateChange",this._readyState),0))}))}get publicKey(){return this._publicKey}get connecting(){return this._connecting}get connected(){var e;return!!(null===(e=this._wallet)||void 0===e?void 0:e.connected)}get readyState(){return this._readyState}connect(){return A(this,void 0,void 0,(function*(){try{if(this.connected||this.connecting)return;if(this._readyState!==s.WalletReadyState.Loadable&&this._readyState!==s.WalletReadyState.Installed)throw new s.WalletNotReadyError;let e,t,i;try{e=(yield Promise.resolve().then((()=>o(n(262))))).default}catch(e){throw new s.WalletLoadError(null==e?void 0:e.message,e)}try{t=new e({network:this._config.network})}catch(e){throw new s.WalletConfigError(null==e?void 0:e.message,e)}if(this._connecting=!0,!t.connected)try{yield t.connect()}catch(e){throw new s.WalletConnectionError(null==e?void 0:e.message,e)}if(!t.publicKey)throw new s.WalletConnectionError;try{i=new a.PublicKey(t.publicKey.toBytes())}catch(e){throw new s.WalletPublicKeyError(null==e?void 0:e.message,e)}t.on("disconnect",this._disconnected),t.on("accountChanged",this._accountChanged),this._wallet=t,this._publicKey=i,this.emit("connect",i)}catch(e){throw this.emit("error",e),e}finally{this._connecting=!1}}))}disconnect(){return A(this,void 0,void 0,(function*(){const e=this._wallet;if(e){e.off("disconnect",this._disconnected),e.off("accountChanged",this._accountChanged),this._wallet=null,this._publicKey=null;try{yield e.disconnect()}catch(e){this.emit("error",new s.WalletDisconnectionError(null==e?void 0:e.message,e))}}this.emit("disconnect")}))}signTransaction(e){return A(this,void 0,void 0,(function*(){try{const t=this._wallet;if(!t)throw new s.WalletNotConnectedError;try{return(yield t.signTransaction(e))||e}catch(e){throw new s.WalletSignTransactionError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))}signAllTransactions(e){return A(this,void 0,void 0,(function*(){try{const t=this._wallet;if(!t)throw new s.WalletNotConnectedError;try{return(yield t.signAllTransactions(e))||e}catch(e){throw new s.WalletSignTransactionError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))}signMessage(e){return A(this,void 0,void 0,(function*(){try{const t=this._wallet;if(!t)throw new s.WalletNotConnectedError;try{return yield t.signMessage(e,"utf8")}catch(e){throw new s.WalletSignMessageError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))}}t.SolflareWalletAdapter=c},429:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(9578),t)},19994:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isSolanaChain=t.SOLANA_CHAINS=t.SOLANA_LOCALNET_CHAIN=t.SOLANA_TESTNET_CHAIN=t.SOLANA_DEVNET_CHAIN=t.SOLANA_MAINNET_CHAIN=void 0,t.SOLANA_MAINNET_CHAIN="solana:mainnet",t.SOLANA_DEVNET_CHAIN="solana:devnet",t.SOLANA_TESTNET_CHAIN="solana:testnet",t.SOLANA_LOCALNET_CHAIN="solana:localnet",t.SOLANA_CHAINS=[t.SOLANA_MAINNET_CHAIN,t.SOLANA_DEVNET_CHAIN,t.SOLANA_TESTNET_CHAIN,t.SOLANA_LOCALNET_CHAIN],t.isSolanaChain=function(e){return t.SOLANA_CHAINS.includes(e)}},23590:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getCommitment=void 0,t.getCommitment=function(e){switch(e){case"processed":case"confirmed":case"finalized":case void 0:return e;case"recent":return"processed";case"single":case"singleGossip":return"confirmed";case"max":case"root":return"finalized";default:return}}},84560:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getEndpointForChain=t.getChainForEndpoint=t.LOCALNET_ENDPOINT=t.TESTNET_ENDPOINT=t.DEVNET_ENDPOINT=t.MAINNET_ENDPOINT=void 0;const i=n(19994);t.MAINNET_ENDPOINT="https://api.mainnet-beta.solana.com",t.DEVNET_ENDPOINT="https://api.devnet.solana.com",t.TESTNET_ENDPOINT="https://api.testnet.solana.com",t.LOCALNET_ENDPOINT="http://localhost:8899",t.getChainForEndpoint=function(e){return e.includes(t.MAINNET_ENDPOINT)?i.SOLANA_MAINNET_CHAIN:/\bdevnet\b/i.test(e)?i.SOLANA_DEVNET_CHAIN:/\btestnet\b/i.test(e)?i.SOLANA_TESTNET_CHAIN:/\blocalhost\b/i.test(e)||/\b127\.0\.0\.1\b/.test(e)?i.SOLANA_LOCALNET_CHAIN:i.SOLANA_MAINNET_CHAIN},t.getEndpointForChain=function(e,n){return n||(e===i.SOLANA_MAINNET_CHAIN?t.MAINNET_ENDPOINT:e===i.SOLANA_DEVNET_CHAIN?t.DEVNET_ENDPOINT:e===i.SOLANA_TESTNET_CHAIN?t.TESTNET_ENDPOINT:e===i.SOLANA_LOCALNET_CHAIN?t.LOCALNET_ENDPOINT:t.MAINNET_ENDPOINT)}},64341:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(23590),t),r(n(84560),t)},73267:function(e,t,n){"use strict";var i,r,o,A,s,a,c,u,l,g,d,h,p,f,m=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},I=this&&this.__classPrivateFieldSet||function(e,t,n,i,r){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?r.call(e,n):r?r.value=n:t.set(e,n),n},y=this&&this.__classPrivateFieldGet||function(e,t,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(e):i?i.value:t.get(e)},B=this&&this.__rest||function(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);r{if(!y(this,r,"f")||!y(this,o,"f")||!("accounts"in e))return;const t=y(this,a,"f").accounts[0];if(!t)return y(this,i,"m",g).call(this),this.emit("error",new w.WalletDisconnectedError),void this.emit("disconnect");if(t===y(this,r,"f"))return;let n;try{n=new Q.PublicKey(t.publicKey)}catch(e){return y(this,i,"m",g).call(this),this.emit("error",new w.WalletPublicKeyError(null==e?void 0:e.message)),void this.emit("disconnect")}y(this,i,"m",l).call(this,t,n),this.emit("connect",n)})),I(this,a,e,"f");const t="solana:signAndSendTransaction"in e.features?e.features["solana:signAndSendTransaction"].supportedTransactionVersions:e.features["solana:signTransaction"].supportedTransactionVersions;I(this,c,(0,b.arraysEqual)(t,["legacy"])?null:new Set(t),"f"),I(this,r,null,"f"),I(this,o,null,"f"),I(this,A,!1,"f")}get supportedTransactionVersions(){return y(this,c,"f")}get name(){return y(this,a,"f").name}get icon(){return y(this,a,"f").icon}get url(){return"https://github.com/wallet-standard"}get publicKey(){return y(this,o,"f")}get connecting(){return y(this,A,"f")}get readyState(){return y(this,u,"f")}get wallet(){return y(this,a,"f")}get standard(){return!0}connect(){return m(this,void 0,void 0,(function*(){try{if(this.connected||this.connecting)return;if(y(this,u,"f")!==w.WalletReadyState.Installed)throw new w.WalletNotReadyError;if(I(this,A,!0,"f"),!y(this,a,"f").accounts.length)try{yield y(this,a,"f").features["standard:connect"].connect()}catch(e){throw new w.WalletConnectionError(null==e?void 0:e.message,e)}if(!y(this,a,"f").accounts.length)throw new w.WalletAccountError;const e=y(this,a,"f").accounts[0];let t;try{t=new Q.PublicKey(e.publicKey)}catch(e){throw new w.WalletPublicKeyError(null==e?void 0:e.message,e)}I(this,s,y(this,a,"f").features["standard:events"].on("change",y(this,d,"f")),"f"),y(this,i,"m",l).call(this,e,t),this.emit("connect",t)}catch(e){throw this.emit("error",e),e}finally{I(this,A,!1,"f")}}))}disconnect(){return m(this,void 0,void 0,(function*(){if("standard:disconnect"in y(this,a,"f").features)try{yield y(this,a,"f").features["standard:disconnect"].disconnect()}catch(e){this.emit("error",new w.WalletDisconnectionError(null==e?void 0:e.message,e))}y(this,i,"m",g).call(this),this.emit("disconnect")}))}sendTransaction(e,t,n={}){return m(this,void 0,void 0,(function*(){try{const i=y(this,r,"f");if(!i)throw new w.WalletNotConnectedError;let o;if("solana:signAndSendTransaction"in y(this,a,"f").features)if(i.features.includes("solana:signAndSendTransaction"))o="solana:signAndSendTransaction";else{if(!("solana:signTransaction"in y(this,a,"f").features)||!i.features.includes("solana:signTransaction"))throw new w.WalletAccountError;o="solana:signTransaction"}else{if(!("solana:signTransaction"in y(this,a,"f").features))throw new w.WalletConfigError;if(!i.features.includes("solana:signTransaction"))throw new w.WalletAccountError;o="solana:signTransaction"}const A=(0,E.getChainForEndpoint)(t.rpcEndpoint);if(!i.chains.includes(A))throw new w.WalletSendTransactionError;try{const{signers:r}=n,s=B(n,["signers"]);let c;if((0,v.isVersionedTransaction)(e)?((null==r?void 0:r.length)&&e.sign(r),c=e.serialize()):(e=yield this.prepareTransaction(e,t,s),(null==r?void 0:r.length)&&e.partialSign(...r),c=new Uint8Array(e.serialize({requireAllSignatures:!1,verifySignatures:!1}))),"solana:signAndSendTransaction"===o){const[e]=yield y(this,a,"f").features["solana:signAndSendTransaction"].signAndSendTransaction({account:i,chain:A,transaction:c,options:{preflightCommitment:(0,E.getCommitment)(s.preflightCommitment||t.commitment),skipPreflight:s.skipPreflight,maxRetries:s.maxRetries,minContextSlot:s.minContextSlot}});return k.default.encode(e.signature)}{const[e]=yield y(this,a,"f").features["solana:signTransaction"].signTransaction({account:i,chain:A,transaction:c,options:{preflightCommitment:(0,E.getCommitment)(s.preflightCommitment||t.commitment),minContextSlot:s.minContextSlot}});return yield t.sendRawTransaction(e.signedTransaction,Object.assign(Object.assign({},s),{preflightCommitment:(0,E.getCommitment)(s.preflightCommitment||t.commitment)}))}}catch(e){if(e instanceof w.WalletError)throw e;throw new w.WalletSendTransactionError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))}}t.StandardWalletAdapter=S,r=new WeakMap,o=new WeakMap,A=new WeakMap,s=new WeakMap,a=new WeakMap,c=new WeakMap,u=new WeakMap,d=new WeakMap,i=new WeakSet,l=function(e,t){I(this,r,e,"f"),I(this,o,t,"f"),(null==e?void 0:e.features.includes("solana:signTransaction"))?(this.signTransaction=y(this,i,"m",h),this.signAllTransactions=y(this,i,"m",p)):(delete this.signTransaction,delete this.signAllTransactions),(null==e?void 0:e.features.includes("solana:signMessage"))?this.signMessage=y(this,i,"m",f):delete this.signMessage},g=function(){const e=y(this,s,"f");e&&(I(this,s,void 0,"f"),e()),y(this,i,"m",l).call(this,null,null)},h=function(e){return m(this,void 0,void 0,(function*(){try{const t=y(this,r,"f");if(!t)throw new w.WalletNotConnectedError;if(!("solana:signTransaction"in y(this,a,"f").features))throw new w.WalletConfigError;if(!t.features.includes("solana:signTransaction"))throw new w.WalletAccountError;try{const n=(yield y(this,a,"f").features["solana:signTransaction"].signTransaction({account:t,transaction:(0,v.isVersionedTransaction)(e)?e.serialize():new Uint8Array(e.serialize({requireAllSignatures:!1,verifySignatures:!1}))}))[0].signedTransaction;return(0,v.isVersionedTransaction)(e)?Q.VersionedTransaction.deserialize(n):Q.Transaction.from(n)}catch(e){if(e instanceof w.WalletError)throw e;throw new w.WalletSignTransactionError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))},p=function(e){return m(this,void 0,void 0,(function*(){try{const t=y(this,r,"f");if(!t)throw new w.WalletNotConnectedError;if(!("solana:signTransaction"in y(this,a,"f").features))throw new w.WalletConfigError;if(!t.features.includes("solana:signTransaction"))throw new w.WalletSignTransactionError;try{const n=yield y(this,a,"f").features["solana:signTransaction"].signTransaction(...e.map((e=>({account:t,transaction:(0,v.isVersionedTransaction)(e)?e.serialize():new Uint8Array(e.serialize({requireAllSignatures:!1,verifySignatures:!1}))}))));return e.map(((e,t)=>{const i=n[t].signedTransaction;return(0,v.isVersionedTransaction)(e)?Q.VersionedTransaction.deserialize(i):Q.Transaction.from(i)}))}catch(e){throw new w.WalletSignTransactionError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))},f=function(e){return m(this,void 0,void 0,(function*(){try{const t=y(this,r,"f");if(!t)throw new w.WalletNotConnectedError;if(!("solana:signMessage"in y(this,a,"f").features))throw new w.WalletConfigError;if(!t.features.includes("solana:signMessage"))throw new w.WalletSignMessageError;try{return(yield y(this,a,"f").features["solana:signMessage"].signMessage({account:t,message:e}))[0].signature}catch(e){throw new w.WalletSignMessageError(null==e?void 0:e.message,e)}}catch(e){throw this.emit("error",e),e}}))}},73337:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(73267),t),r(n(76960),t)},84593:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.isVersionedTransaction=void 0,t.isVersionedTransaction=function(e){return"version"in e}},76960:function(e,t,n){"use strict";var i,r,o,A,s,a,c,u,l,g,d,h,p,f,m,I,y,B,C,w=this&&this.__awaiter||function(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))},E=this&&this.__classPrivateFieldSet||function(e,t,n,i,r){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?r.call(e,n):r?r.value=n:t.set(e,n),n},Q=this&&this.__classPrivateFieldGet||function(e,t,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(e):i?i.value:t.get(e)},b=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(t,"__esModule",{value:!0}),t.registerWalletAdapter=t.SolanaWalletAdapterWallet=t.SolanaWalletAdapterWalletAccount=void 0;const k=n(79335),v=n(19994),S=n(64341),M=n(97212),D=n(41842),N=n(84461),T=b(n(11565)),P=n(84593);class O extends N.ReadonlyWalletAccount{constructor({adapter:e,address:t,publicKey:n,chains:r}){const o=["solana:signAndSendTransaction"];"signTransaction"in e&&o.push("solana:signTransaction"),"signMessage"in e&&o.push("solana:signMessage"),super({address:t,publicKey:n,chains:r,features:o}),i.set(this,void 0),new.target===O&&Object.freeze(this),E(this,i,e,"f")}}t.SolanaWalletAdapterWalletAccount=O,i=new WeakMap;class F{constructor(e,t,n){r.add(this),o.set(this,{}),A.set(this,void 0),s.set(this,void 0),a.set(this,void 0),c.set(this,void 0),u.set(this,void 0),d.set(this,(({silent:e}={})=>w(this,void 0,void 0,(function*(){return e||Q(this,A,"f").connected||(yield Q(this,A,"f").connect()),Q(this,r,"m",l).call(this),{accounts:this.accounts}})))),h.set(this,(()=>w(this,void 0,void 0,(function*(){yield Q(this,A,"f").disconnect()})))),p.set(this,((e,t)=>{var n;return(null===(n=Q(this,o,"f")[e])||void 0===n?void 0:n.push(t))||(Q(this,o,"f")[e]=[t]),()=>Q(this,r,"m",m).call(this,e,t)})),y.set(this,((...e)=>w(this,void 0,void 0,(function*(){const t=[];if(1===e.length){const n=e[0];if(n.account!==Q(this,u,"f"))throw new Error("invalid account");if(!(0,v.isSolanaChain)(n.chain))throw new Error("invalid chain");const i=Q(this,r,"m",I).call(this,n.transaction),{commitment:o,preflightCommitment:s,skipPreflight:a,maxRetries:l,minContextSlot:g}=n.options||{},d=(0,S.getEndpointForChain)(n.chain,Q(this,c,"f")),h=new M.Connection(d,o||"confirmed"),p=o?yield h.getLatestBlockhash({commitment:s||o,minContextSlot:g}):void 0,f=yield Q(this,A,"f").sendTransaction(i,h,{preflightCommitment:s,skipPreflight:a,maxRetries:l,minContextSlot:g});p&&(yield h.confirmTransaction(Object.assign(Object.assign({},p),{signature:f}),o||"confirmed")),t.push({signature:T.default.decode(f)})}else if(e.length>1)for(const n of e)t.push(...yield Q(this,y,"f").call(this,n));return t})))),B.set(this,((...e)=>w(this,void 0,void 0,(function*(){if(!("signTransaction"in Q(this,A,"f")))throw new Error("signTransaction not implemented by adapter");const t=[];if(1===e.length){const n=e[0];if(n.account!==Q(this,u,"f"))throw new Error("invalid account");if(n.chain&&!(0,v.isSolanaChain)(n.chain))throw new Error("invalid chain");const i=Q(this,r,"m",I).call(this,n.transaction),o=yield Q(this,A,"f").signTransaction(i),s=(0,P.isVersionedTransaction)(o)?o.serialize():new Uint8Array(o.serialize({requireAllSignatures:!1,verifySignatures:!1}));t.push({signedTransaction:s})}else if(e.length>1){for(const t of e){if(t.account!==Q(this,u,"f"))throw new Error("invalid account");if(t.chain&&!(0,v.isSolanaChain)(t.chain))throw new Error("invalid chain")}const n=e.map((({transaction:e})=>Q(this,r,"m",I).call(this,e))),i=yield Q(this,A,"f").signAllTransactions(n);t.push(...i.map((e=>({signedTransaction:(0,P.isVersionedTransaction)(e)?e.serialize():new Uint8Array(e.serialize({requireAllSignatures:!1,verifySignatures:!1}))}))))}return t})))),C.set(this,((...e)=>w(this,void 0,void 0,(function*(){if(!("signMessage"in Q(this,A,"f")))throw new Error("signMessage not implemented by adapter");const t=[];if(1===e.length){const n=e[0];if(n.account!==Q(this,u,"f"))throw new Error("invalid account");const i=yield Q(this,A,"f").signMessage(n.message);t.push({signedMessage:n.message,signature:i})}else if(e.length>1)for(const n of e)t.push(...yield Q(this,C,"f").call(this,n));return t})))),new.target===F&&Object.freeze(this);const i=[...e.supportedTransactionVersions||["legacy"]];i.length||i.push("legacy"),E(this,A,e,"f"),E(this,s,i,"f"),E(this,a,t,"f"),E(this,c,n,"f"),e.on("connect",Q(this,r,"m",l),this),e.on("disconnect",Q(this,r,"m",g),this),Q(this,r,"m",l).call(this)}get version(){return"1.0.0"}get name(){return Q(this,A,"f").name}get icon(){return Q(this,A,"f").icon}get chains(){return[Q(this,a,"f")]}get features(){const e={"standard:connect":{version:"1.0.0",connect:Q(this,d,"f")},"standard:disconnect":{version:"1.0.0",disconnect:Q(this,h,"f")},"standard:events":{version:"1.0.0",on:Q(this,p,"f")},"solana:signAndSendTransaction":{version:"1.0.0",supportedTransactionVersions:Q(this,s,"f"),signAndSendTransaction:Q(this,y,"f")}};let t,n;return"signTransaction"in Q(this,A,"f")&&(t={"solana:signTransaction":{version:"1.0.0",supportedTransactionVersions:Q(this,s,"f"),signTransaction:Q(this,B,"f")}}),"signMessage"in Q(this,A,"f")&&(n={"solana:signMessage":{version:"1.0.0",signMessage:Q(this,C,"f")}}),Object.assign(Object.assign(Object.assign({},e),t),n)}get accounts(){return Q(this,u,"f")?[Q(this,u,"f")]:[]}get endpoint(){return Q(this,c,"f")}destroy(){Q(this,A,"f").off("connect",Q(this,r,"m",l),this),Q(this,A,"f").off("disconnect",Q(this,r,"m",g),this)}}t.SolanaWalletAdapterWallet=F,o=new WeakMap,A=new WeakMap,s=new WeakMap,a=new WeakMap,c=new WeakMap,u=new WeakMap,d=new WeakMap,h=new WeakMap,p=new WeakMap,y=new WeakMap,B=new WeakMap,C=new WeakMap,r=new WeakSet,l=function(){var e;const t=null===(e=Q(this,A,"f").publicKey)||void 0===e?void 0:e.toBytes();if(t){const e=Q(this,A,"f").publicKey.toBase58(),n=Q(this,u,"f");n&&n.address===e&&!n.chains.includes(Q(this,a,"f"))&&(0,N.bytesEqual)(n.publicKey,t)||(E(this,u,new O({adapter:Q(this,A,"f"),address:e,publicKey:t,chains:[Q(this,a,"f")]}),"f"),Q(this,r,"m",f).call(this,"change",{accounts:this.accounts}))}},g=function(){Q(this,u,"f")&&(E(this,u,void 0,"f"),Q(this,r,"m",f).call(this,"change",{accounts:this.accounts}))},f=function(e,...t){var n;null===(n=Q(this,o,"f")[e])||void 0===n||n.forEach((e=>e.apply(null,t)))},m=function(e,t){var n;Q(this,o,"f")[e]=null===(n=Q(this,o,"f")[e])||void 0===n?void 0:n.filter((e=>t!==e))},I=function(e){const t=M.VersionedTransaction.deserialize(e);if(!Q(this,s,"f").includes(t.version))throw new Error("unsupported transaction version");return"legacy"===t.version&&(0,N.arraysEqual)(Q(this,s,"f"),["legacy"])?M.Transaction.from(e):t},t.registerWalletAdapter=function(e,t,n,i=(t=>t.name===e.name)){const{register:r,get:o,on:A}=(0,D.getWallets)(),s=[];function a(){s.forEach((e=>e())),s.length=0}function c(){if(e.readyState===k.WalletReadyState.Unsupported||o().some(i))return!0;const c=e.readyState===k.WalletReadyState.Installed||e.readyState===k.WalletReadyState.Loadable;if(c){const o=new F(e,t,n);s.push((()=>o.destroy())),s.push(r(o)),s.push(A("register",((...e)=>{e.some(i)&&a()})))}return c}if(!c()){function u(){c()&&e.off("readyStateChange",u)}e.on("readyStateChange",u),s.push((()=>e.off("readyStateChange",u)))}return a}},89230:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(25306),t)},25306:(e,t,n)=>{"use strict";var i=n(49500);Object.defineProperty(t,"__esModule",{value:!0}),t.useStandardWalletAdapters=void 0;const r=n(73337),o=n(41842),A=n(50959);function s(e){const t=(0,A.useRef)();return t.current||(t.current={value:e()}),t.current.value}function a(e){return e.filter(r.isWalletAdapterCompatibleWallet).map((e=>new r.StandardWalletAdapter({wallet:e})))}t.useStandardWalletAdapters=function(e){const{get:t,on:n}=s((()=>(0,o.DEPRECATED_getWallets)())),[r,c]=(0,A.useState)((()=>a(t()))),u=s((()=>new Set));return(0,A.useEffect)((()=>{const e=[n("register",((...e)=>c((t=>[...t,...a(e)])))),n("unregister",((...e)=>c((t=>t.filter((t=>e.some((e=>e===t.wallet))))))))];return()=>e.forEach((e=>e()))}),[n]),(0,A.useMemo)((()=>[...r,...e.filter((({name:e})=>!r.some((t=>t.name===e))||(u.has(e)||(u.add(e),i.warn(`${e} was registered as a Standard Wallet. The Wallet Adapter for ${e} can be removed from your app.`)),!1)))]),[r,e,u])}},35309:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(97212),r=n(24726);function o(e){return e&&"object"==typeof e&&"default"in e?e:{default:e}}var A=o(n(11565));function s(e,t){var n={};for(var i in e)Object.prototype.hasOwnProperty.call(e,i)&&t.indexOf(i)<0&&(n[i]=e[i]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols){var r=0;for(i=Object.getOwnPropertySymbols(e);re.charCodeAt(0))))}function l(e){return c("version"in e?e.serialize():e.serialize({requireAllSignatures:!1,verifySignatures:!1}))}function g(e){return"legacy"===i.VersionedMessage.deserializeMessageVersion(e)?i.Transaction.from(e):i.VersionedTransaction.deserialize(e)}t.transact=function(e,t){return a(this,void 0,void 0,(function*(){return yield r.transact((t=>{const n=new Proxy({},{get(e,n){if(null==e[n])switch(n){case"signAndSendTransactions":e[n]=function(e){var{minContextSlot:n,transactions:i}=e,r=s(e,["minContextSlot","transactions"]);return a(this,void 0,void 0,(function*(){const e=i.map(l),{signatures:o}=yield t.signAndSendTransactions(Object.assign(Object.assign(Object.assign({},r),null!=n?{options:{min_context_slot:n}}:null),{payloads:e}));return o.map(u).map(A.default.encode)}))};break;case"signMessages":e[n]=function(e){var{payloads:n}=e,i=s(e,["payloads"]);return a(this,void 0,void 0,(function*(){const e=n.map(c),{signed_payloads:r}=yield t.signMessages(Object.assign(Object.assign({},i),{payloads:e}));return r.map(u)}))};break;case"signTransactions":e[n]=function(e){var{transactions:n}=e,i=s(e,["transactions"]);return a(this,void 0,void 0,(function*(){const e=n.map(l),{signed_payloads:r}=yield t.signTransactions(Object.assign(Object.assign({},i),{payloads:e}));return r.map(u).map(g)}))};break;default:e[n]=t[n]}return e[n]},defineProperty:()=>!1,deleteProperty:()=>!1});return e(n)}),t)}))}},24726:(e,t,n)=>{"use strict";var i=n(49500);Object.defineProperty(t,"__esModule",{value:!0});const r={ERROR_ASSOCIATION_PORT_OUT_OF_RANGE:"ERROR_ASSOCIATION_PORT_OUT_OF_RANGE",ERROR_FORBIDDEN_WALLET_BASE_URL:"ERROR_FORBIDDEN_WALLET_BASE_URL",ERROR_SECURE_CONTEXT_REQUIRED:"ERROR_SECURE_CONTEXT_REQUIRED",ERROR_SESSION_CLOSED:"ERROR_SESSION_CLOSED",ERROR_SESSION_TIMEOUT:"ERROR_SESSION_TIMEOUT",ERROR_WALLET_NOT_FOUND:"ERROR_WALLET_NOT_FOUND"};class o extends Error{constructor(...e){const[t,n,i]=e;super(n),this.code=t,this.data=i,this.name="SolanaMobileWalletAdapterError"}}class A extends Error{constructor(...e){const[t,n,i,r]=e;super(i),this.code=n,this.data=r,this.jsonRpcMessageId=t,this.name="SolanaMobileWalletAdapterProtocolError"}}function s(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))}function a(e,t){return{additionalData:e,iv:t,name:"AES-GCM",tagLength:128}}let c;function u(e){if(e<49152||e>65535)throw new o(r.ERROR_ASSOCIATION_PORT_OUT_OF_RANGE,`Association port number must be between 49152 and 65535. ${e} given.`,{port:e});return e}function l(e){return e.replace(/(^\/+|\/+$)/g,"").split("/")}let g=null;function d(e,t){return s(this,void 0,void 0,(function*(){const n=u(49152+Math.floor(16384*Math.random())),i=yield function(e,t,n){return s(this,void 0,void 0,(function*(){const i=u(t),A=function(e){let t="";const n=new Uint8Array(e),i=n.byteLength;for(let e=0;e({"/":"_","+":"-","=":"."}[e])))),s.searchParams.set("port",`${i}`),s}))}(e,n,t);if("https:"===i.protocol)window.location.assign(i);else try{switch(-1!==navigator.userAgent.indexOf("Firefox/")?0:1){case 0:A=i,null==g&&(g=document.createElement("iframe"),g.style.display="none",document.body.appendChild(g)),g.contentWindow.location.href=A.toString();break;case 1:{const e=new Promise(((e,t)=>{function n(){clearTimeout(r),window.removeEventListener("blur",i)}function i(){n(),e()}window.addEventListener("blur",i);const r=setTimeout((()=>{n(),t()}),2e3)}));window.location.assign(i),yield e;break}}}catch(e){throw new o(r.ERROR_WALLET_NOT_FOUND,"Found no installed wallet that supports the mobile wallet protocol.")}var A;return n}))}const h={retryDelayScheduleMs:[150,150,200,500,500,750,750,1e3],timeoutMs:3e4};t.SolanaMobileWalletAdapterError=o,t.SolanaMobileWalletAdapterErrorCode=r,t.SolanaMobileWalletAdapterProtocolError=A,t.SolanaMobileWalletAdapterProtocolErrorCode={ERROR_AUTHORIZATION_FAILED:-1,ERROR_INVALID_PAYLOADS:-2,ERROR_NOT_SIGNED:-3,ERROR_NOT_SUBMITTED:-4,ERROR_TOO_MANY_PAYLOADS:-5,ERROR_ATTEST_ORIGIN_ANDROID:-100},t.transact=function(e,t){return s(this,void 0,void 0,(function*(){!function(){if("undefined"==typeof window||!0!==window.isSecureContext)throw new o(r.ERROR_SECURE_CONTEXT_REQUIRED,"The mobile wallet adapter protocol must be used in a secure context (`https`).")}();const n=yield function(){return s(this,void 0,void 0,(function*(){return yield crypto.subtle.generateKey({name:"ECDSA",namedCurve:"P-256"},!1,["sign"])}))}(),u=yield d(n.publicKey,null==t?void 0:t.baseUri),l=`ws://localhost:${u}/solana-wallet`;let g;const p=(()=>{const e=[...h.retryDelayScheduleMs];return()=>e.length>1?e.shift():e[0]})();let f=1,m=0,I={__type:"disconnected"};return new Promise(((t,d)=>{let y;const B={},C=()=>s(this,void 0,void 0,(function*(){if("connecting"!==I.__type)return void i.warn(`Expected adapter state to be \`connecting\` at the moment the websocket opens. Got \`${I.__type}\`.`);const{associationKeypair:e}=I;y.removeEventListener("open",C);const t=yield function(){return s(this,void 0,void 0,(function*(){return yield crypto.subtle.generateKey({name:"ECDH",namedCurve:"P-256"},!1,["deriveKey","deriveBits"])}))}();y.send(yield function(e,t){return s(this,void 0,void 0,(function*(){const n=yield crypto.subtle.exportKey("raw",e),i=yield crypto.subtle.sign({hash:"SHA-256",name:"ECDSA"},t,n),r=new Uint8Array(n.byteLength+i.byteLength);return r.set(new Uint8Array(n),0),r.set(new Uint8Array(i),n.byteLength),r}))}(t.publicKey,e.privateKey)),I={__type:"hello_req_sent",associationPublicKey:e.publicKey,ecdhPrivateKey:t.privateKey}})),w=e=>{e.wasClean?I={__type:"disconnected"}:d(new o(r.ERROR_SESSION_CLOSED,`The wallet session dropped unexpectedly (${e.code}: ${e.reason}).`,{closeEvent:e})),b()},E=e=>s(this,void 0,void 0,(function*(){b(),Date.now()-g>=h.timeoutMs?d(new o(r.ERROR_SESSION_TIMEOUT,`Failed to connect to the wallet websocket on port ${u}.`)):(yield new Promise((e=>{const t=p();k=window.setTimeout(e,t)})),v())})),Q=n=>s(this,void 0,void 0,(function*(){const i=yield n.data.arrayBuffer();switch(I.__type){case"connected":try{const e=i.slice(0,4),t=new DataView(e).getUint32(0,!1);if(t!==m+1)throw new Error("Encrypted message has invalid sequence number");m=t;const n=yield function(e,t){return s(this,void 0,void 0,(function*(){const n=e.slice(0,4),i=e.slice(4,16),r=e.slice(16),o=yield crypto.subtle.decrypt(a(n,i),t,r),s=(void 0===c&&(c=new TextDecoder("utf-8")),c).decode(o),u=JSON.parse(s);if(Object.hasOwnProperty.call(u,"error"))throw new A(u.id,u.error.code,u.error.message);return u}))}(i,I.sharedSecret),r=B[n.id];delete B[n.id],r.resolve(n.result)}catch(e){if(!(e instanceof A))throw e;{const t=B[e.jsonRpcMessageId];delete B[e.jsonRpcMessageId],t.reject(e)}}break;case"hello_req_sent":{const n=yield function(e,t,n){return s(this,void 0,void 0,(function*(){const[i,r]=yield Promise.all([crypto.subtle.exportKey("raw",t),crypto.subtle.importKey("raw",e,{name:"ECDH",namedCurve:"P-256"},!1,[])]),o=yield crypto.subtle.deriveBits({name:"ECDH",public:r},n,256),A=yield crypto.subtle.importKey("raw",o,"HKDF",!1,["deriveKey"]);return yield crypto.subtle.deriveKey({name:"HKDF",hash:"SHA-256",salt:new Uint8Array(i),info:new Uint8Array},A,{name:"AES-GCM",length:128},!1,["encrypt","decrypt"])}))}(i,I.associationPublicKey,I.ecdhPrivateKey);I={__type:"connected",sharedSecret:n};const A=new Proxy({},{get(e,t){if(null==e[t]){const i=t.toString().replace(/[A-Z]/g,(e=>`_${e.toLowerCase()}`)).toLowerCase();e[t]=function(e){return s(this,void 0,void 0,(function*(){const A=f++;return y.send(yield function(e,t){return s(this,void 0,void 0,(function*(){const n=JSON.stringify(e),i=function(e){if(e>=4294967296)throw new Error("Outbound sequence number overflow. The maximum sequence number is 32-bytes.");const t=new ArrayBuffer(4);return new DataView(t).setUint32(0,e,!1),new Uint8Array(t)}(e.id),r=new Uint8Array(12);crypto.getRandomValues(r);const o=yield crypto.subtle.encrypt(a(i,r),t,(new TextEncoder).encode(n)),A=new Uint8Array(i.byteLength+r.byteLength+o.byteLength);return A.set(new Uint8Array(i),0),A.set(new Uint8Array(r),i.byteLength),A.set(new Uint8Array(o),i.byteLength+r.byteLength),A}))}({id:A,jsonrpc:"2.0",method:i,params:null!=e?e:{}},n)),new Promise(((e,n)=>{B[A]={resolve(i){switch(t){case"authorize":case"reauthorize":{const{wallet_uri_base:e}=i;if(null!=e)try{!function(e){let t;try{t=new URL(e)}catch(e){throw new o(r.ERROR_FORBIDDEN_WALLET_BASE_URL,"Invalid base URL supplied by wallet")}if("https:"!==t.protocol)throw new o(r.ERROR_FORBIDDEN_WALLET_BASE_URL,"Base URLs supplied by wallets must be valid `https` URLs")}(e)}catch(e){return void n(e)}break}}e(i)},reject:n}}))}))}}return e[t]},defineProperty:()=>!1,deleteProperty:()=>!1});try{t(yield e(A))}catch(e){d(e)}finally{b(),y.close()}break}}}));let b,k;const v=()=>{b&&b(),I={__type:"connecting",associationKeypair:n},void 0===g&&(g=Date.now()),y=new WebSocket(l,["com.solana.mobilewalletadapter.v1"]),y.addEventListener("open",C),y.addEventListener("close",w),y.addEventListener("error",E),y.addEventListener("message",Q),b=()=>{window.clearTimeout(k),y.removeEventListener("open",C),y.removeEventListener("close",w),y.removeEventListener("error",E),y.removeEventListener("message",Q)}};v()}))}))}},58787:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var i=n(79335),r=n(97212),o=n(35309);function A(e,t,n,i){return new(n||(n=Promise))((function(r,o){function A(e){try{a(i.next(e))}catch(e){o(e)}}function s(e){try{a(i.throw(e))}catch(e){o(e)}}function a(e){var t;e.done?r(e.value):(t=e.value,t instanceof n?t:new n((function(e){e(t)}))).then(A,s)}a((i=i.apply(e,t||[])).next())}))}const s="Mobile Wallet Adapter";function a(e){return"version"in e}class c extends i.BaseMessageSignerWalletAdapter{constructor(e){super(),this.supportedTransactionVersions=new Set(["legacy",0]),this.name=s,this.url="https://solanamobile.com/wallets",this.icon="data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiBoZWlnaHQ9IjI4IiB3aWR0aD0iMjgiIHZpZXdCb3g9Ii0zIDAgMjggMjgiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+PGcgZmlsbD0iI0RDQjhGRiI+PHBhdGggZD0iTTE3LjQgMTcuNEgxNXYyLjRoMi40di0yLjRabTEuMi05LjZoLTIuNHYyLjRoMi40VjcuOFoiLz48cGF0aCBkPSJNMjEuNiAzVjBoLTIuNHYzaC0zLjZWMGgtMi40djNoLTIuNHY2LjZINC41YTIuMSAyLjEgMCAxIDEgMC00LjJoMi43VjNINC41QTQuNSA0LjUgMCAwIDAgMCA3LjVWMjRoMjEuNnYtNi42aC0yLjR2NC4ySDIuNFYxMS41Yy41LjMgMS4yLjQgMS44LjVoNy41QTYuNiA2LjYgMCAwIDAgMjQgOVYzaC0yLjRabTAgNS43YTQuMiA0LjIgMCAxIDEtOC40IDBWNS40aDguNHYzLjNaIi8+PC9nPjwvc3ZnPg==",this._connecting=!1,this._connectionGeneration=0,this._readyState="undefined"!=typeof window&&window.isSecureContext&&"undefined"!=typeof document&&/android/i.test(navigator.userAgent)?i.WalletReadyState.Loadable:i.WalletReadyState.Unsupported,this._authorizationResultCache=e.authorizationResultCache,this._addressSelector=e.addressSelector,this._appIdentity=e.appIdentity,this._cluster=e.cluster,this._onWalletNotFound=e.onWalletNotFound,this._readyState!==i.WalletReadyState.Unsupported&&this._authorizationResultCache.get().then((e=>{e&&this.declareWalletAsInstalled()}))}get publicKey(){if(null==this._publicKey&&null!=this._selectedAddress)try{this._publicKey=function(e){const t=(n=e,new Uint8Array(window.atob(n).split("").map((e=>e.charCodeAt(0)))));var n;return new r.PublicKey(t)}(this._selectedAddress)}catch(e){throw new i.WalletPublicKeyError(e instanceof Error&&(null==e?void 0:e.message)||"Unknown error",e)}return this._publicKey?this._publicKey:null}get connected(){return!!this._authorizationResult}get connecting(){return this._connecting}get readyState(){return this._readyState}declareWalletAsInstalled(){this._readyState!==i.WalletReadyState.Installed&&this.emit("readyStateChange",this._readyState=i.WalletReadyState.Installed)}runWithGuard(e){return A(this,void 0,void 0,(function*(){try{return yield e()}catch(e){throw this.emit("error",e),e}}))}autoConnect_DO_NOT_USE_OR_YOU_WILL_BE_FIRED(){return A(this,void 0,void 0,(function*(){return yield this.autoConnect()}))}autoConnect(){return A(this,void 0,void 0,(function*(){if(!this.connecting&&!this.connected)return yield this.runWithGuard((()=>A(this,void 0,void 0,(function*(){if(this._readyState!==i.WalletReadyState.Installed&&this._readyState!==i.WalletReadyState.Loadable)throw new i.WalletNotReadyError;this._connecting=!0;try{const e=yield this._authorizationResultCache.get();e&&this.handleAuthorizationResult(e)}catch(e){throw new i.WalletConnectionError(e instanceof Error&&e.message||"Unknown error",e)}finally{this._connecting=!1}}))))}))}connect(){return A(this,void 0,void 0,(function*(){if(!this.connecting&&!this.connected)return yield this.runWithGuard((()=>A(this,void 0,void 0,(function*(){if(this._readyState!==i.WalletReadyState.Installed&&this._readyState!==i.WalletReadyState.Loadable)throw new i.WalletNotReadyError;this._connecting=!0;try{const e=yield this._authorizationResultCache.get();if(e)return void this.handleAuthorizationResult(e);yield this.transact((e=>A(this,void 0,void 0,(function*(){const t=yield e.authorize({cluster:this._cluster,identity:this._appIdentity});Promise.all([this._authorizationResultCache.set(t),this.handleAuthorizationResult(t)])}))))}catch(e){throw new i.WalletConnectionError(e instanceof Error&&e.message||"Unknown error",e)}finally{this._connecting=!1}}))))}))}handleAuthorizationResult(e){var t;return A(this,void 0,void 0,(function*(){const n=null==this._authorizationResult||(null===(t=this._authorizationResult)||void 0===t?void 0:t.accounts.length)!==e.accounts.length||this._authorizationResult.accounts.some(((t,n)=>t.address!==e.accounts[n].address));if(this._authorizationResult=e,this.declareWalletAsInstalled(),n){const t=yield this._addressSelector.select(e.accounts.map((({address:e})=>e)));t!==this._selectedAddress&&(this._selectedAddress=t,delete this._publicKey,this.emit("connect",this.publicKey))}}))}performReauthorization(e,t){return A(this,void 0,void 0,(function*(){try{const n=yield e.reauthorize({auth_token:t});Promise.all([this._authorizationResultCache.set(n),this.handleAuthorizationResult(n)])}catch(e){throw this.disconnect(),new i.WalletDisconnectedError(e instanceof Error&&(null==e?void 0:e.message)||"Unknown error",e)}}))}disconnect(){return A(this,void 0,void 0,(function*(){this._authorizationResultCache.clear(),this._connecting=!1,this._connectionGeneration++,delete this._authorizationResult,delete this._publicKey,delete this._selectedAddress,this.emit("disconnect")}))}transact(e){var t;return A(this,void 0,void 0,(function*(){const n=null===(t=this._authorizationResult)||void 0===t?void 0:t.wallet_uri_base,i=n?{baseUri:n}:void 0,r=this._connectionGeneration;try{return yield o.transact(e,i)}catch(e){throw this._connectionGeneration!==r&&(yield new Promise((()=>{}))),e instanceof Error&&"SolanaMobileWalletAdapterError"===e.name&&"ERROR_WALLET_NOT_FOUND"===e.code&&(yield this._onWalletNotFound(this)),e}}))}assertIsAuthorized(){if(!this._authorizationResult||!this._selectedAddress)throw new i.WalletNotConnectedError;return{authToken:this._authorizationResult.auth_token,selectedAddress:this._selectedAddress}}performSignTransactions(e){return A(this,void 0,void 0,(function*(){const{authToken:t}=this.assertIsAuthorized();try{return yield this.transact((n=>A(this,void 0,void 0,(function*(){return yield this.performReauthorization(n,t),yield n.signTransactions({transactions:e})}))))}catch(e){throw new i.WalletSignTransactionError(null==e?void 0:e.message,e)}}))}sendTransaction(e,t,n){return A(this,void 0,void 0,(function*(){return yield this.runWithGuard((()=>A(this,void 0,void 0,(function*(){const{authToken:r}=this.assertIsAuthorized(),o=null==n?void 0:n.minContextSlot;try{return yield this.transact((i=>A(this,void 0,void 0,(function*(){function s(){let e,i;switch(t.commitment){case"confirmed":case"finalized":case"processed":e=t.commitment;break;default:e="finalized"}switch(null==n?void 0:n.preflightCommitment){case"confirmed":case"finalized":case"processed":i=n.preflightCommitment;break;case void 0:i=e;default:i="finalized"}return("finalized"===i?2:"confirmed"===i?1:0)<("finalized"===e?2:"confirmed"===e?1:0)?i:e}const[c,u,l]=yield Promise.all([i.getCapabilities(),this.performReauthorization(i,r),a(e)?null:(()=>A(this,void 0,void 0,(function*(){var n;if(e.feePayer||(e.feePayer=null!==(n=this.publicKey)&&void 0!==n?n:void 0),null==e.recentBlockhash){const{blockhash:n}=yield t.getLatestBlockhash({commitment:s()});e.recentBlockhash=n}})))()]);if(c.supports_sign_and_send_transactions)return(yield i.signAndSendTransactions({minContextSlot:o,transactions:[e]}))[0];{const[r]=yield i.signTransactions({transactions:[e]});if(a(r))return yield t.sendTransaction(r);{const e=r.serialize();return yield t.sendRawTransaction(e,Object.assign(Object.assign({},n),{preflightCommitment:s()}))}}}))))}catch(e){throw new i.WalletSendTransactionError(null==e?void 0:e.message,e)}}))))}))}signTransaction(e){return A(this,void 0,void 0,(function*(){return yield this.runWithGuard((()=>A(this,void 0,void 0,(function*(){const[t]=yield this.performSignTransactions([e]);return t}))))}))}signAllTransactions(e){return A(this,void 0,void 0,(function*(){return yield this.runWithGuard((()=>A(this,void 0,void 0,(function*(){return yield this.performSignTransactions(e)}))))}))}signMessage(e){return A(this,void 0,void 0,(function*(){return yield this.runWithGuard((()=>A(this,void 0,void 0,(function*(){const{authToken:t,selectedAddress:n}=this.assertIsAuthorized();try{return yield this.transact((i=>A(this,void 0,void 0,(function*(){yield this.performReauthorization(i,t);const[r]=yield i.signMessages({addresses:[n],payloads:[e]});return r.slice(-64)}))))}catch(e){throw new i.WalletSignMessageError(null==e?void 0:e.message,e)}}))))}))}}const u="SolanaMobileWalletAdapterDefaultAuthorizationCache";function l(e){return A(this,void 0,void 0,(function*(){"undefined"!=typeof window&&window.location.assign(e.url)}))}t.SolanaMobileWalletAdapter=c,t.SolanaMobileWalletAdapterWalletName=s,t.createDefaultAddressSelector=function(){return{select(e){return A(this,void 0,void 0,(function*(){return e[0]}))}}},t.createDefaultAuthorizationResultCache=function(){let e;try{e=window.localStorage}catch(e){}return{clear(){return A(this,void 0,void 0,(function*(){if(e)try{e.removeItem(u)}catch(e){}}))},get(){return A(this,void 0,void 0,(function*(){if(e)try{return JSON.parse(e.getItem(u))||void 0}catch(e){}}))},set(t){return A(this,void 0,void 0,(function*(){if(e)try{e.setItem(u,JSON.stringify(t))}catch(e){}}))}}},t.createDefaultWalletNotFoundHandler=function(){return l}},41842:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(54857),t)},54857:function(e,t,n){"use strict";var i,r=n(49500),o=this&&this.__classPrivateFieldSet||function(e,t,n,i,r){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?r.call(e,n):r?r.value=n:t.set(e,n),n},A=this&&this.__classPrivateFieldGet||function(e,t,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(e):i?i.value:t.get(e)};let s;Object.defineProperty(t,"__esModule",{value:!0}),t.DEPRECATED_getWallets=t.getWallets=void 0;const a=new Set,c={};function u(){if(s)return s;if(s=Object.freeze({register:l,get:g,on:d}),"undefined"==typeof window)return s;const e=Object.freeze({register:l});try{window.addEventListener("wallet-standard:register-wallet",(({detail:t})=>t(e)))}catch(e){r.error("wallet-standard:register-wallet event listener could not be added\n",e)}try{window.dispatchEvent(new p(e))}catch(e){r.error("wallet-standard:app-ready event could not be dispatched\n",e)}return s}function l(...e){var t;return(e=e.filter((e=>!a.has(e)))).length?(e.forEach((e=>a.add(e))),null===(t=c.register)||void 0===t||t.forEach((t=>h((()=>t(...e))))),function(){var t;e.forEach((e=>a.delete(e))),null===(t=c.unregister)||void 0===t||t.forEach((t=>h((()=>t(...e)))))}):()=>{}}function g(){return[...a]}function d(e,t){var n;return(null===(n=c[e])||void 0===n?void 0:n.push(t))||(c[e]=[t]),function(){var n;c[e]=null===(n=c[e])||void 0===n?void 0:n.filter((e=>t!==e))}}function h(e){try{e()}catch(e){r.error(e)}}t.getWallets=u;class p extends Event{constructor(e){super("wallet-standard:app-ready",{bubbles:!1,cancelable:!1,composed:!1}),i.set(this,void 0),o(this,i,e,"f")}get detail(){return A(this,i,"f")}get type(){return"wallet-standard:app-ready"}preventDefault(){throw new Error("preventDefault cannot be called")}stopImmediatePropagation(){throw new Error("stopImmediatePropagation cannot be called")}stopPropagation(){throw new Error("stopPropagation cannot be called")}}i=new WeakMap,t.DEPRECATED_getWallets=function(){if(s)return s;if(s=u(),"undefined"==typeof window)return s;const e=window.navigator.wallets||[];if(!Array.isArray(e))return r.error("window.navigator.wallets is not an array"),s;const{register:t}=s,n=(...e)=>e.forEach((e=>h((()=>e({register:t})))));try{Object.defineProperty(window.navigator,"wallets",{value:Object.freeze({push:n})})}catch(e){return r.error("window.navigator.wallets could not be set"),s}return n(...e),s}},84461:function(e,t,n){"use strict";var i=this&&this.__createBinding||(Object.create?function(e,t,n,i){void 0===i&&(i=n);var r=Object.getOwnPropertyDescriptor(t,n);r&&!("get"in r?!t.__esModule:r.writable||r.configurable)||(r={enumerable:!0,get:function(){return t[n]}}),Object.defineProperty(e,i,r)}:function(e,t,n,i){void 0===i&&(i=n),e[i]=t[n]}),r=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||i(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),r(n(86526),t),r(n(60851),t)},86526:function(e,t,n){"use strict";var i,r=n(49500),o=this&&this.__classPrivateFieldSet||function(e,t,n,i,r){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?r.call(e,n):r?r.value=n:t.set(e,n),n},A=this&&this.__classPrivateFieldGet||function(e,t,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(e):i?i.value:t.get(e)};function s(e){const t=({register:t})=>t(e);try{window.dispatchEvent(new a(t))}catch(e){r.error("wallet-standard:register-wallet event could not be dispatched\n",e)}try{window.addEventListener("wallet-standard:app-ready",(({detail:e})=>t(e)))}catch(e){r.error("wallet-standard:app-ready event listener could not be added\n",e)}}Object.defineProperty(t,"__esModule",{value:!0}),t.DEPRECATED_registerWallet=t.registerWallet=void 0,t.registerWallet=s;class a extends Event{constructor(e){super("wallet-standard:register-wallet",{bubbles:!1,cancelable:!1,composed:!1}),i.set(this,void 0),o(this,i,e,"f")}get detail(){return A(this,i,"f")}get type(){return"wallet-standard:register-wallet"}preventDefault(){throw new Error("preventDefault cannot be called")}stopImmediatePropagation(){throw new Error("stopImmediatePropagation cannot be called")}stopPropagation(){throw new Error("stopPropagation cannot be called")}}i=new WeakMap,t.DEPRECATED_registerWallet=function(e){var t;s(e);try{((t=window.navigator).wallets||(t.wallets=[])).push((({register:t})=>t(e)))}catch(e){r.error("window.navigator.wallets could not be pushed\n",e)}}},60851:function(e,t,n){"use strict";var i,r,o,A,s,a,c=n(49500),u=this&&this.__classPrivateFieldSet||function(e,t,n,i,r){if("m"===i)throw new TypeError("Private method is not writable");if("a"===i&&!r)throw new TypeError("Private accessor was defined without a setter");if("function"==typeof t?e!==t||!r:!t.has(e))throw new TypeError("Cannot write private member to an object whose class did not declare it");return"a"===i?r.call(e,n):r?r.value=n:t.set(e,n),n},l=this&&this.__classPrivateFieldGet||function(e,t,n,i){if("a"===n&&!i)throw new TypeError("Private accessor was defined without a getter");if("function"==typeof t?e!==t||!i:!t.has(e))throw new TypeError("Cannot read private member from an object whose class did not declare it");return"m"===n?i:"a"===n?i.call(e):i?i.value:t.get(e)};Object.defineProperty(t,"__esModule",{value:!0}),t.guard=t.pick=t.concatBytes=t.bytesEqual=t.arraysEqual=t.ReadonlyWalletAccount=void 0;class g{constructor(e){i.set(this,void 0),r.set(this,void 0),o.set(this,void 0),A.set(this,void 0),s.set(this,void 0),a.set(this,void 0),new.target===g&&Object.freeze(this),u(this,i,e.address,"f"),u(this,r,e.publicKey.slice(),"f"),u(this,o,e.chains.slice(),"f"),u(this,A,e.features.slice(),"f"),u(this,s,e.label,"f"),u(this,a,e.icon,"f")}get address(){return l(this,i,"f")}get publicKey(){return l(this,r,"f").slice()}get chains(){return l(this,o,"f").slice()}get features(){return l(this,A,"f").slice()}get label(){return l(this,s,"f")}get icon(){return l(this,a,"f")}}function d(e,t){if(e===t)return!0;const n=e.length;if(n!==t.length)return!1;for(let i=0;ie+t.length),e.length),i=new Uint8Array(n);i.set(e,0);for(const e of t)i.set(e,i.length);return i},t.pick=function(e,...t){const n={};for(const i of t)n[i]=e[i];return n},t.guard=function(e){try{e()}catch(e){c.error(e)}}},6716:(e,t,n)=>{"use strict";n.d(t,{Z:()=>Ue});var i,r,o=9e15,A=1e9,s="0123456789abcdef",a="2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058",c="3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789",u={precision:20,rounding:4,modulo:1,toExpNeg:-7,toExpPos:21,minE:-o,maxE:o,crypto:!1},l=!0,g="[DecimalError] ",d=g+"Invalid argument: ",h=g+"Precision limit exceeded",p=g+"crypto unavailable",f="[object Decimal]",m=Math.floor,I=Math.pow,y=/^0b([01]+(\.[01]*)?|\.[01]+)(p[+-]?\d+)?$/i,B=/^0x([0-9a-f]+(\.[0-9a-f]*)?|\.[0-9a-f]+)(p[+-]?\d+)?$/i,C=/^0o([0-7]+(\.[0-7]*)?|\.[0-7]+)(p[+-]?\d+)?$/i,w=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,E=1e7,Q=a.length-1,b=c.length-1,k={toStringTag:f};function v(e){var t,n,i,r=e.length-1,o="",A=e[0];if(r>0){for(o+=A,t=1;tn)throw Error(d+e)}function M(e,t,n,i){var r,o,A,s;for(o=e[0];o>=10;o/=10)--t;return--t<0?(t+=7,r=0):(r=Math.ceil((t+1)/7),t%=7),o=I(10,7-t),s=e[r]%o|0,null==i?t<3?(0==t?s=s/100|0:1==t&&(s=s/10|0),A=n<4&&99999==s||n>3&&49999==s||5e4==s||0==s):A=(n<4&&s+1==o||n>3&&s+1==o/2)&&(e[r+1]/o/100|0)==I(10,t-2)-1||(s==o/2||0==s)&&0==(e[r+1]/o/100|0):t<4?(0==t?s=s/1e3|0:1==t?s=s/100|0:2==t&&(s=s/10|0),A=(i||n<4)&&9999==s||!i&&n>3&&4999==s):A=((i||n<4)&&s+1==o||!i&&n>3&&s+1==o/2)&&(e[r+1]/o/1e3|0)==I(10,t-3)-1,A}function D(e,t,n){for(var i,r,o=[0],A=0,a=e.length;An-1&&(void 0===o[i+1]&&(o[i+1]=0),o[i+1]+=o[i]/n|0,o[i]%=n)}return o.reverse()}k.absoluteValue=k.abs=function(){var e=new this.constructor(this);return e.s<0&&(e.s=1),T(e)},k.ceil=function(){return T(new this.constructor(this),this.e+1,2)},k.clampedTo=k.clamp=function(e,t){var n=this,i=n.constructor;if(e=new i(e),t=new i(t),!e.s||!t.s)return new i(NaN);if(e.gt(t))throw Error(d+t);return n.cmp(e)<0?e:n.cmp(t)>0?t:new i(n)},k.comparedTo=k.cmp=function(e){var t,n,i,r,o=this,A=o.d,s=(e=new o.constructor(e)).d,a=o.s,c=e.s;if(!A||!s)return a&&c?a!==c?a:A===s?0:!A^a<0?1:-1:NaN;if(!A[0]||!s[0])return A[0]?a:s[0]?-c:0;if(a!==c)return a;if(o.e!==e.e)return o.e>e.e^a<0?1:-1;for(t=0,n=(i=A.length)<(r=s.length)?i:r;ts[t]^a<0?1:-1;return i===r?0:i>r^a<0?1:-1},k.cosine=k.cos=function(){var e,t,n=this,i=n.constructor;return n.d?n.d[0]?(e=i.precision,t=i.rounding,i.precision=e+Math.max(n.e,n.sd())+7,i.rounding=1,n=function(e,t){var n,i,r;if(t.isZero())return t;(i=t.d.length)<32?r=(1/Z(4,n=Math.ceil(i/3))).toString():(n=16,r="2.3283064365386962890625e-10"),e.precision+=n,t=q(e,1,t.times(r),new e(1));for(var o=n;o--;){var A=t.times(t);t=A.times(A).minus(A).times(8).plus(1)}return e.precision-=n,t}(i,z(i,n)),i.precision=e,i.rounding=t,T(2==r||3==r?n.neg():n,e,t,!0)):new i(1):new i(NaN)},k.cubeRoot=k.cbrt=function(){var e,t,n,i,r,o,A,s,a,c,u=this,g=u.constructor;if(!u.isFinite()||u.isZero())return new g(u);for(l=!1,(o=u.s*I(u.s*u,1/3))&&Math.abs(o)!=1/0?i=new g(o.toString()):(n=v(u.d),(o=((e=u.e)-n.length+1)%3)&&(n+=1==o||-2==o?"0":"00"),o=I(n,1/3),e=m((e+1)/3)-(e%3==(e<0?-1:2)),(i=new g(n=o==1/0?"5e"+e:(n=o.toExponential()).slice(0,n.indexOf("e")+1)+e)).s=u.s),A=(e=g.precision)+3;;)if(c=(a=(s=i).times(s).times(s)).plus(u),i=N(c.plus(u).times(s),c.plus(a),A+2,1),v(s.d).slice(0,A)===(n=v(i.d)).slice(0,A)){if("9999"!=(n=n.slice(A-3,A+1))&&(r||"4999"!=n)){+n&&(+n.slice(1)||"5"!=n.charAt(0))||(T(i,e+1,1),t=!i.times(i).times(i).eq(u));break}if(!r&&(T(s,e+1,0),s.times(s).times(s).eq(u))){i=s;break}A+=4,r=1}return l=!0,T(i,e,g.rounding,t)},k.decimalPlaces=k.dp=function(){var e,t=this.d,n=NaN;if(t){if(n=7*((e=t.length-1)-m(this.e/7)),e=t[e])for(;e%10==0;e/=10)n--;n<0&&(n=0)}return n},k.dividedBy=k.div=function(e){return N(this,new this.constructor(e))},k.dividedToIntegerBy=k.divToInt=function(e){var t=this.constructor;return T(N(this,new t(e),0,1,1),t.precision,t.rounding)},k.equals=k.eq=function(e){return 0===this.cmp(e)},k.floor=function(){return T(new this.constructor(this),this.e+1,3)},k.greaterThan=k.gt=function(e){return this.cmp(e)>0},k.greaterThanOrEqualTo=k.gte=function(e){var t=this.cmp(e);return 1==t||0===t},k.hyperbolicCosine=k.cosh=function(){var e,t,n,i,r,o=this,A=o.constructor,s=new A(1);if(!o.isFinite())return new A(o.s?1/0:NaN);if(o.isZero())return s;n=A.precision,i=A.rounding,A.precision=n+Math.max(o.e,o.sd())+4,A.rounding=1,(r=o.d.length)<32?t=(1/Z(4,e=Math.ceil(r/3))).toString():(e=16,t="2.3283064365386962890625e-10"),o=q(A,1,o.times(t),new A(1),!0);for(var a,c=e,u=new A(8);c--;)a=o.times(o),o=s.minus(a.times(u.minus(a.times(u))));return T(o,A.precision=n,A.rounding=i,!0)},k.hyperbolicSine=k.sinh=function(){var e,t,n,i,r=this,o=r.constructor;if(!r.isFinite()||r.isZero())return new o(r);if(t=o.precision,n=o.rounding,o.precision=t+Math.max(r.e,r.sd())+4,o.rounding=1,(i=r.d.length)<3)r=q(o,2,r,r,!0);else{e=(e=1.4*Math.sqrt(i))>16?16:0|e,r=q(o,2,r=r.times(1/Z(5,e)),r,!0);for(var A,s=new o(5),a=new o(16),c=new o(20);e--;)A=r.times(r),r=r.times(s.plus(A.times(a.times(A).plus(c))))}return o.precision=t,o.rounding=n,T(r,t,n,!0)},k.hyperbolicTangent=k.tanh=function(){var e,t,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+7,i.rounding=1,N(n.sinh(),n.cosh(),i.precision=e,i.rounding=t)):new i(n.s)},k.inverseCosine=k.acos=function(){var e,t=this,n=t.constructor,i=t.abs().cmp(1),r=n.precision,o=n.rounding;return-1!==i?0===i?t.isNeg()?R(n,r,o):new n(0):new n(NaN):t.isZero()?R(n,r+4,o).times(.5):(n.precision=r+6,n.rounding=1,t=t.asin(),e=R(n,r+4,o).times(.5),n.precision=r,n.rounding=o,e.minus(t))},k.inverseHyperbolicCosine=k.acosh=function(){var e,t,n=this,i=n.constructor;return n.lte(1)?new i(n.eq(1)?0:NaN):n.isFinite()?(e=i.precision,t=i.rounding,i.precision=e+Math.max(Math.abs(n.e),n.sd())+4,i.rounding=1,l=!1,n=n.times(n).minus(1).sqrt().plus(n),l=!0,i.precision=e,i.rounding=t,n.ln()):new i(n)},k.inverseHyperbolicSine=k.asinh=function(){var e,t,n=this,i=n.constructor;return!n.isFinite()||n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+2*Math.max(Math.abs(n.e),n.sd())+6,i.rounding=1,l=!1,n=n.times(n).plus(1).sqrt().plus(n),l=!0,i.precision=e,i.rounding=t,n.ln())},k.inverseHyperbolicTangent=k.atanh=function(){var e,t,n,i,r=this,o=r.constructor;return r.isFinite()?r.e>=0?new o(r.abs().eq(1)?r.s/0:r.isZero()?r:NaN):(e=o.precision,t=o.rounding,i=r.sd(),Math.max(i,e)<2*-r.e-1?T(new o(r),e,t,!0):(o.precision=n=i-r.e,r=N(r.plus(1),new o(1).minus(r),n+e,1),o.precision=e+4,o.rounding=1,r=r.ln(),o.precision=e,o.rounding=t,r.times(.5))):new o(NaN)},k.inverseSine=k.asin=function(){var e,t,n,i,r=this,o=r.constructor;return r.isZero()?new o(r):(t=r.abs().cmp(1),n=o.precision,i=o.rounding,-1!==t?0===t?((e=R(o,n+4,i).times(.5)).s=r.s,e):new o(NaN):(o.precision=n+6,o.rounding=1,r=r.div(new o(1).minus(r.times(r)).sqrt().plus(1)).atan(),o.precision=n,o.rounding=i,r.times(2)))},k.inverseTangent=k.atan=function(){var e,t,n,i,r,o,A,s,a,c=this,u=c.constructor,g=u.precision,d=u.rounding;if(c.isFinite()){if(c.isZero())return new u(c);if(c.abs().eq(1)&&g+4<=b)return(A=R(u,g+4,d).times(.25)).s=c.s,A}else{if(!c.s)return new u(NaN);if(g+4<=b)return(A=R(u,g+4,d).times(.5)).s=c.s,A}for(u.precision=s=g+10,u.rounding=1,e=n=Math.min(28,s/7+2|0);e;--e)c=c.div(c.times(c).plus(1).sqrt().plus(1));for(l=!1,t=Math.ceil(s/7),i=1,a=c.times(c),A=new u(c),r=c;-1!==e;)if(r=r.times(a),o=A.minus(r.div(i+=2)),r=r.times(a),void 0!==(A=o.plus(r.div(i+=2))).d[t])for(e=t;A.d[e]===o.d[e]&&e--;);return n&&(A=A.times(2<this.d.length-2},k.isNaN=function(){return!this.s},k.isNegative=k.isNeg=function(){return this.s<0},k.isPositive=k.isPos=function(){return this.s>0},k.isZero=function(){return!!this.d&&0===this.d[0]},k.lessThan=k.lt=function(e){return this.cmp(e)<0},k.lessThanOrEqualTo=k.lte=function(e){return this.cmp(e)<1},k.logarithm=k.log=function(e){var t,n,i,r,o,A,s,a,c=this,u=c.constructor,g=u.precision,d=u.rounding;if(null==e)e=new u(10),t=!0;else{if(n=(e=new u(e)).d,e.s<0||!n||!n[0]||e.eq(1))return new u(NaN);t=e.eq(10)}if(n=c.d,c.s<0||!n||!n[0]||c.eq(1))return new u(n&&!n[0]?-1/0:1!=c.s?NaN:n?0:1/0);if(t)if(n.length>1)o=!0;else{for(r=n[0];r%10==0;)r/=10;o=1!==r}if(l=!1,A=Y(c,s=g+5),i=t?F(u,s+10):Y(e,s),M((a=N(A,i,s,1)).d,r=g,d))do{if(A=Y(c,s+=10),i=t?F(u,s+10):Y(e,s),a=N(A,i,s,1),!o){+v(a.d).slice(r+1,r+15)+1==1e14&&(a=T(a,g+1,0));break}}while(M(a.d,r+=10,d));return l=!0,T(a,g,d)},k.minus=k.sub=function(e){var t,n,i,r,o,A,s,a,c,u,g,d,h=this,p=h.constructor;if(e=new p(e),!h.d||!e.d)return h.s&&e.s?h.d?e.s=-e.s:e=new p(e.d||h.s!==e.s?h:NaN):e=new p(NaN),e;if(h.s!=e.s)return e.s=-e.s,h.plus(e);if(c=h.d,d=e.d,s=p.precision,a=p.rounding,!c[0]||!d[0]){if(d[0])e.s=-e.s;else{if(!c[0])return new p(3===a?-0:0);e=new p(h)}return l?T(e,s,a):e}if(n=m(e.e/7),u=m(h.e/7),c=c.slice(),o=u-n){for((g=o<0)?(t=c,o=-o,A=d.length):(t=d,n=u,A=c.length),o>(i=Math.max(Math.ceil(s/7),A)+2)&&(o=i,t.length=1),t.reverse(),i=o;i--;)t.push(0);t.reverse()}else{for((g=(i=c.length)<(A=d.length))&&(A=i),i=0;i0;--i)c[A++]=0;for(i=d.length;i>o;){if(c[--i](A=(o=Math.ceil(s/7))>A?o+1:A+1)&&(r=A,n.length=1),n.reverse();r--;)n.push(0);n.reverse()}for((A=c.length)-(r=u.length)<0&&(r=A,n=u,u=c,c=n),t=0;r;)t=(c[--r]=c[r]+u[r]+t)/E|0,c[r]%=E;for(t&&(c.unshift(t),++i),A=c.length;0==c[--A];)c.pop();return e.d=c,e.e=O(c,i),l?T(e,s,a):e},k.precision=k.sd=function(e){var t,n=this;if(void 0!==e&&e!==!!e&&1!==e&&0!==e)throw Error(d+e);return n.d?(t=G(n.d),e&&n.e+1>t&&(t=n.e+1)):t=NaN,t},k.round=function(){var e=this,t=e.constructor;return T(new t(e),e.e+1,t.rounding)},k.sine=k.sin=function(){var e,t,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+Math.max(n.e,n.sd())+7,i.rounding=1,n=function(e,t){var n,i=t.d.length;if(i<3)return t.isZero()?t:q(e,2,t,t);n=(n=1.4*Math.sqrt(i))>16?16:0|n,t=q(e,2,t=t.times(1/Z(5,n)),t);for(var r,o=new e(5),A=new e(16),s=new e(20);n--;)r=t.times(t),t=t.times(o.plus(r.times(A.times(r).minus(s))));return t}(i,z(i,n)),i.precision=e,i.rounding=t,T(r>2?n.neg():n,e,t,!0)):new i(NaN)},k.squareRoot=k.sqrt=function(){var e,t,n,i,r,o,A=this,s=A.d,a=A.e,c=A.s,u=A.constructor;if(1!==c||!s||!s[0])return new u(!c||c<0&&(!s||s[0])?NaN:s?A:1/0);for(l=!1,0==(c=Math.sqrt(+A))||c==1/0?(((t=v(s)).length+a)%2==0&&(t+="0"),c=Math.sqrt(t),a=m((a+1)/2)-(a<0||a%2),i=new u(t=c==1/0?"5e"+a:(t=c.toExponential()).slice(0,t.indexOf("e")+1)+a)):i=new u(c.toString()),n=(a=u.precision)+3;;)if(i=(o=i).plus(N(A,o,n+2,1)).times(.5),v(o.d).slice(0,n)===(t=v(i.d)).slice(0,n)){if("9999"!=(t=t.slice(n-3,n+1))&&(r||"4999"!=t)){+t&&(+t.slice(1)||"5"!=t.charAt(0))||(T(i,a+1,1),e=!i.times(i).eq(A));break}if(!r&&(T(o,a+1,0),o.times(o).eq(A))){i=o;break}n+=4,r=1}return l=!0,T(i,a,u.rounding,e)},k.tangent=k.tan=function(){var e,t,n=this,i=n.constructor;return n.isFinite()?n.isZero()?new i(n):(e=i.precision,t=i.rounding,i.precision=e+10,i.rounding=1,(n=n.sin()).s=1,n=N(n,new i(1).minus(n.times(n)).sqrt(),e+10,0),i.precision=e,i.rounding=t,T(2==r||4==r?n.neg():n,e,t,!0)):new i(NaN)},k.times=k.mul=function(e){var t,n,i,r,o,A,s,a,c,u=this,g=u.constructor,d=u.d,h=(e=new g(e)).d;if(e.s*=u.s,!(d&&d[0]&&h&&h[0]))return new g(!e.s||d&&!d[0]&&!h||h&&!h[0]&&!d?NaN:d&&h?0*e.s:e.s/0);for(n=m(u.e/7)+m(e.e/7),(a=d.length)<(c=h.length)&&(o=d,d=h,h=o,A=a,a=c,c=A),o=[],i=A=a+c;i--;)o.push(0);for(i=c;--i>=0;){for(t=0,r=a+i;r>i;)s=o[r]+h[i]*d[r-i-1]+t,o[r--]=s%E|0,t=s/E|0;o[r]=(o[r]+t)%E|0}for(;!o[--A];)o.pop();return t?++n:o.shift(),e.d=o,e.e=O(o,n),l?T(e,g.precision,g.rounding):e},k.toBinary=function(e,t){return H(this,2,e,t)},k.toDecimalPlaces=k.toDP=function(e,t){var n=this,i=n.constructor;return n=new i(n),void 0===e?n:(S(e,0,A),void 0===t?t=i.rounding:S(t,0,8),T(n,e+n.e+1,t))},k.toExponential=function(e,t){var n,i=this,r=i.constructor;return void 0===e?n=P(i,!0):(S(e,0,A),void 0===t?t=r.rounding:S(t,0,8),n=P(i=T(new r(i),e+1,t),!0,e+1)),i.isNeg()&&!i.isZero()?"-"+n:n},k.toFixed=function(e,t){var n,i,r=this,o=r.constructor;return void 0===e?n=P(r):(S(e,0,A),void 0===t?t=o.rounding:S(t,0,8),n=P(i=T(new o(r),e+r.e+1,t),!1,e+i.e+1)),r.isNeg()&&!r.isZero()?"-"+n:n},k.toFraction=function(e){var t,n,i,r,o,A,s,a,c,u,g,h,p=this,f=p.d,m=p.constructor;if(!f)return new m(p);if(c=n=new m(1),i=a=new m(0),A=(o=(t=new m(i)).e=G(f)-p.e-1)%7,t.d[0]=I(10,A<0?7+A:A),null==e)e=o>0?t:c;else{if(!(s=new m(e)).isInt()||s.lt(c))throw Error(d+s);e=s.gt(t)?o>0?t:c:s}for(l=!1,s=new m(v(f)),u=m.precision,m.precision=o=7*f.length*2;g=N(s,t,0,1,1),1!=(r=n.plus(g.times(i))).cmp(e);)n=i,i=r,r=c,c=a.plus(g.times(r)),a=r,r=t,t=s.minus(g.times(r)),s=r;return r=N(e.minus(n),i,0,1,1),a=a.plus(r.times(c)),n=n.plus(r.times(i)),a.s=c.s=p.s,h=N(c,i,o,1).minus(p).abs().cmp(N(a,n,o,1).minus(p).abs())<1?[c,i]:[a,n],m.precision=u,l=!0,h},k.toHexadecimal=k.toHex=function(e,t){return H(this,16,e,t)},k.toNearest=function(e,t){var n=this,i=n.constructor;if(n=new i(n),null==e){if(!n.d)return n;e=new i(1),t=i.rounding}else{if(e=new i(e),void 0===t?t=i.rounding:S(t,0,8),!n.d)return e.s?n:e;if(!e.d)return e.s&&(e.s=n.s),e}return e.d[0]?(l=!1,n=N(n,e,0,t,1).times(e),l=!0,T(n)):(e.s=n.s,n=e),n},k.toNumber=function(){return+this},k.toOctal=function(e,t){return H(this,8,e,t)},k.toPower=k.pow=function(e){var t,n,i,r,o,A,s=this,a=s.constructor,c=+(e=new a(e));if(!(s.d&&e.d&&s.d[0]&&e.d[0]))return new a(I(+s,c));if((s=new a(s)).eq(1))return s;if(i=a.precision,o=a.rounding,e.eq(1))return T(s,i,o);if((t=m(e.e/7))>=e.d.length-1&&(n=c<0?-c:c)<=9007199254740991)return r=U(a,s,n,i),e.s<0?new a(1).div(r):T(r,i,o);if((A=s.s)<0){if(ta.maxE+1||t0?A/0:0):(l=!1,a.rounding=s.s=1,n=Math.min(12,(t+"").length),(r=K(e.times(Y(s,i+n)),i)).d&&M((r=T(r,i+5,1)).d,i,o)&&(t=i+10,+v((r=T(K(e.times(Y(s,t+n)),t),t+5,1)).d).slice(i+1,i+15)+1==1e14&&(r=T(r,i+1,0))),r.s=A,l=!0,a.rounding=o,T(r,i,o))},k.toPrecision=function(e,t){var n,i=this,r=i.constructor;return void 0===e?n=P(i,i.e<=r.toExpNeg||i.e>=r.toExpPos):(S(e,1,A),void 0===t?t=r.rounding:S(t,0,8),n=P(i=T(new r(i),e,t),e<=i.e||i.e<=r.toExpNeg,e)),i.isNeg()&&!i.isZero()?"-"+n:n},k.toSignificantDigits=k.toSD=function(e,t){var n=this.constructor;return void 0===e?(e=n.precision,t=n.rounding):(S(e,1,A),void 0===t?t=n.rounding:S(t,0,8)),T(new n(this),e,t)},k.toString=function(){var e=this,t=e.constructor,n=P(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()&&!e.isZero()?"-"+n:n},k.truncated=k.trunc=function(){return T(new this.constructor(this),this.e+1,1)},k.valueOf=k.toJSON=function(){var e=this,t=e.constructor,n=P(e,e.e<=t.toExpNeg||e.e>=t.toExpPos);return e.isNeg()?"-"+n:n};var N=function(){function e(e,t,n){var i,r=0,o=e.length;for(e=e.slice();o--;)i=e[o]*t+r,e[o]=i%n|0,r=i/n|0;return r&&e.unshift(r),e}function t(e,t,n,i){var r,o;if(n!=i)o=n>i?1:-1;else for(r=o=0;rt[r]?1:-1;break}return o}function n(e,t,n,i){for(var r=0;n--;)e[n]-=r,r=e[n]1;)e.shift()}return function(r,o,A,s,a,c){var u,l,g,d,h,p,f,I,y,B,C,w,Q,b,k,v,S,M,D,N,P=r.constructor,O=r.s==o.s?1:-1,F=r.d,R=o.d;if(!(F&&F[0]&&R&&R[0]))return new P(r.s&&o.s&&(F?!R||F[0]!=R[0]:R)?F&&0==F[0]||!R?0*O:O/0:NaN);for(c?(h=1,l=r.e-o.e):(c=E,h=7,l=m(r.e/h)-m(o.e/h)),D=R.length,S=F.length,B=(y=new P(O)).d=[],g=0;R[g]==(F[g]||0);g++);if(R[g]>(F[g]||0)&&l--,null==A?(b=A=P.precision,s=P.rounding):b=a?A+(r.e-o.e)+1:A,b<0)B.push(1),p=!0;else{if(b=b/h+2|0,g=0,1==D){for(d=0,R=R[0],b++;(g1&&(R=e(R,d,c),F=e(F,d,c),D=R.length,S=F.length),v=D,w=(C=F.slice(0,D)).length;w=c/2&&++M;do{d=0,(u=t(R,C,D,w))<0?(Q=C[0],D!=w&&(Q=Q*c+(C[1]||0)),(d=Q/M|0)>1?(d>=c&&(d=c-1),1==(u=t(f=e(R,d,c),C,I=f.length,w=C.length))&&(d--,n(f,D=10;d/=10)g++;y.e=g+l*h-1,T(y,a?A+y.e+1:A,s,p)}return y}}();function T(e,t,n,i){var r,o,A,s,a,c,u,g,d,h=e.constructor;e:if(null!=t){if(!(g=e.d))return e;for(r=1,s=g[0];s>=10;s/=10)r++;if((o=t-r)<0)o+=7,A=t,a=(u=g[d=0])/I(10,r-A-1)%10|0;else if((d=Math.ceil((o+1)/7))>=(s=g.length)){if(!i)break e;for(;s++<=d;)g.push(0);u=a=0,r=1,A=(o%=7)-7+1}else{for(u=s=g[d],r=1;s>=10;s/=10)r++;a=(A=(o%=7)-7+r)<0?0:u/I(10,r-A-1)%10|0}if(i=i||t<0||void 0!==g[d+1]||(A<0?u:u%I(10,r-A-1)),c=n<4?(a||i)&&(0==n||n==(e.s<0?3:2)):a>5||5==a&&(4==n||i||6==n&&(o>0?A>0?u/I(10,r-A):0:g[d-1])%10&1||n==(e.s<0?8:7)),t<1||!g[0])return g.length=0,c?(t-=e.e+1,g[0]=I(10,(7-t%7)%7),e.e=-t||0):g[0]=e.e=0,e;if(0==o?(g.length=d,s=1,d--):(g.length=d+1,s=I(10,7-o),g[d]=A>0?(u/I(10,r-A)%I(10,A)|0)*s:0),c)for(;;){if(0==d){for(o=1,A=g[0];A>=10;A/=10)o++;for(A=g[0]+=s,s=1;A>=10;A/=10)s++;o!=s&&(e.e++,g[0]==E&&(g[0]=1));break}if(g[d]+=s,g[d]!=E)break;g[d--]=0,s=1}for(o=g.length;0===g[--o];)g.pop()}return l&&(e.e>h.maxE?(e.d=null,e.e=NaN):e.e0?o=o.charAt(0)+"."+o.slice(1)+x(i):A>1&&(o=o.charAt(0)+"."+o.slice(1)),o=o+(e.e<0?"e":"e+")+e.e):r<0?(o="0."+x(-r-1)+o,n&&(i=n-A)>0&&(o+=x(i))):r>=A?(o+=x(r+1-A),n&&(i=n-r-1)>0&&(o=o+"."+x(i))):((i=r+1)0&&(r+1===A&&(o+="."),o+=x(i))),o}function O(e,t){var n=e[0];for(t*=7;n>=10;n/=10)t++;return t}function F(e,t,n){if(t>Q)throw l=!0,n&&(e.precision=n),Error(h);return T(new e(a),t,1,!0)}function R(e,t,n){if(t>b)throw Error(h);return T(new e(c),t,n,!0)}function G(e){var t=e.length-1,n=7*t+1;if(t=e[t]){for(;t%10==0;t/=10)n--;for(t=e[0];t>=10;t/=10)n++}return n}function x(e){for(var t="";e--;)t+="0";return t}function U(e,t,n,i){var r,o=new e(1),A=Math.ceil(i/7+4);for(l=!1;;){if(n%2&&V((o=o.times(t)).d,A)&&(r=!0),0===(n=m(n/2))){n=o.d.length-1,r&&0===o.d[n]&&++o.d[n];break}V((t=t.times(t)).d,A)}return l=!0,o}function _(e){return 1&e.d[e.d.length-1]}function L(e,t,n){for(var i,r=new e(t[0]),o=0;++o17)return new d(e.d?e.d[0]?e.s<0?0:1/0:1:e.s?e.s<0?0:e:NaN);for(null==t?(l=!1,a=p):a=t,s=new d(.03125);e.e>-2;)e=e.times(s),g+=5;for(a+=i=Math.log(I(2,g))/Math.LN10*2+5|0,n=o=A=new d(1),d.precision=a;;){if(o=T(o.times(e),a,1),n=n.times(++u),v((s=A.plus(N(o,n,a,1))).d).slice(0,a)===v(A.d).slice(0,a)){for(r=g;r--;)A=T(A.times(A),a,1);if(null!=t)return d.precision=p,A;if(!(c<3&&M(A.d,a-i,h,c)))return T(A,d.precision=p,h,l=!0);d.precision=a+=10,n=o=s=new d(1),u=0,c++}A=s}}function Y(e,t){var n,i,r,o,A,s,a,c,u,g,d,h=1,p=e,f=p.d,m=p.constructor,I=m.rounding,y=m.precision;if(p.s<0||!f||!f[0]||!p.e&&1==f[0]&&1==f.length)return new m(f&&!f[0]?-1/0:1!=p.s?NaN:f?0:p);if(null==t?(l=!1,u=y):u=t,m.precision=u+=10,i=(n=v(f)).charAt(0),!(Math.abs(o=p.e)<15e14))return c=F(m,u+2,y).times(o+""),p=Y(new m(i+"."+n.slice(1)),u-10).plus(c),m.precision=y,null==t?T(p,y,I,l=!0):p;for(;i<7&&1!=i||1==i&&n.charAt(1)>3;)i=(n=v((p=p.times(e)).d)).charAt(0),h++;for(o=p.e,i>1?(p=new m("0."+n),o++):p=new m(i+"."+n.slice(1)),g=p,a=A=p=N(p.minus(1),p.plus(1),u,1),d=T(p.times(p),u,1),r=3;;){if(A=T(A.times(d),u,1),v((c=a.plus(N(A,new m(r),u,1))).d).slice(0,u)===v(a.d).slice(0,u)){if(a=a.times(2),0!==o&&(a=a.plus(F(m,u+2,y).times(o+""))),a=N(a,new m(h),u,1),null!=t)return m.precision=y,a;if(!M(a.d,u-10,I,s))return T(a,m.precision=y,I,l=!0);m.precision=u+=10,c=A=p=N(g.minus(1),g.plus(1),u,1),d=T(p.times(p),u,1),r=s=1}a=c,r+=2}}function j(e){return String(e.s*e.s/0)}function W(e,t){var n,i,r;for((n=t.indexOf("."))>-1&&(t=t.replace(".","")),(i=t.search(/e/i))>0?(n<0&&(n=i),n+=+t.slice(i+1),t=t.substring(0,i)):n<0&&(n=t.length),i=0;48===t.charCodeAt(i);i++);for(r=t.length;48===t.charCodeAt(r-1);--r);if(t=t.slice(i,r)){if(r-=i,e.e=n=n-i-1,e.d=[],i=(n+1)%7,n<0&&(i+=7),ie.constructor.maxE?(e.d=null,e.e=NaN):e.e-1){if(t=t.replace(/(\d)_(?=\d)/g,"$1"),w.test(t))return W(e,t)}else if("Infinity"===t||"NaN"===t)return+t||(e.s=NaN),e.e=NaN,e.d=null,e;if(B.test(t))n=16,t=t.toLowerCase();else if(y.test(t))n=2;else{if(!C.test(t))throw Error(d+t);n=8}for((o=t.search(/p/i))>0?(a=+t.slice(o+1),t=t.substring(2,o)):t=t.slice(2),A=(o=t.indexOf("."))>=0,i=e.constructor,A&&(o=(s=(t=t.replace(".","")).length)-o,r=U(i,new i(n),o,2*o)),o=u=(c=D(t,n,E)).length-1;0===c[o];--o)c.pop();return o<0?new i(0*e.s):(e.e=O(c,u),e.d=c,l=!1,A&&(e=N(e,r,4*s)),a&&(e=e.times(Math.abs(a)<54?I(2,a):xe.pow(2,a))),l=!0,e)}function q(e,t,n,i,r){var o,A,s,a,c=e.precision,u=Math.ceil(c/7);for(l=!1,a=n.times(n),s=new e(i);;){if(A=N(s.times(a),new e(t++*t++),c,1),s=r?i.plus(A):i.minus(A),i=N(A.times(a),new e(t++*t++),c,1),void 0!==(A=s.plus(i)).d[u]){for(o=u;A.d[o]===s.d[o]&&o--;);if(-1==o)break}o=s,s=i,i=A,A=o}return l=!0,A.d.length=u+1,A}function Z(e,t){for(var n=e;--t;)n*=e;return n}function z(e,t){var n,i=t.s<0,o=R(e,e.precision,1),A=o.times(.5);if((t=t.abs()).lte(A))return r=i?4:1,t;if((n=t.divToInt(o)).isZero())r=i?3:2;else{if((t=t.minus(n.times(o))).lte(A))return r=_(n)?i?2:3:i?4:1,t;r=_(n)?i?1:4:i?3:2}return t.minus(o).abs()}function H(e,t,n,r){var o,a,c,u,l,g,d,h,p,f=e.constructor,m=void 0!==n;if(m?(S(n,1,A),void 0===r?r=f.rounding:S(r,0,8)):(n=f.precision,r=f.rounding),e.isFinite()){for(m?(o=2,16==t?n=4*n-3:8==t&&(n=3*n-2)):o=t,(c=(d=P(e)).indexOf("."))>=0&&(d=d.replace(".",""),(p=new f(1)).e=d.length-c,p.d=D(P(p),10,o),p.e=p.d.length),a=l=(h=D(d,10,o)).length;0==h[--l];)h.pop();if(h[0]){if(c<0?a--:((e=new f(e)).d=h,e.e=a,h=(e=N(e,p,n,r,0,o)).d,a=e.e,g=i),c=h[n],u=o/2,g=g||void 0!==h[n+1],g=r<4?(void 0!==c||g)&&(0===r||r===(e.s<0?3:2)):c>u||c===u&&(4===r||g||6===r&&1&h[n-1]||r===(e.s<0?8:7)),h.length=n,g)for(;++h[--n]>o-1;)h[n]=0,n||(++a,h.unshift(1));for(l=h.length;!h[l-1];--l);for(c=0,d="";c1)if(16==t||8==t){for(c=16==t?4:3,--l;l%c;l++)d+="0";for(l=(h=D(d,o,t)).length;!h[l-1];--l);for(c=1,d="1.";cl)for(a-=l;a--;)d+="0";else at)return e.length=t,!0}function X(e){return new this(e).abs()}function $(e){return new this(e).acos()}function ee(e){return new this(e).acosh()}function te(e,t){return new this(e).plus(t)}function ne(e){return new this(e).asin()}function ie(e){return new this(e).asinh()}function re(e){return new this(e).atan()}function oe(e){return new this(e).atanh()}function Ae(e,t){e=new this(e),t=new this(t);var n,i=this.precision,r=this.rounding,o=i+4;return e.s&&t.s?e.d||t.d?!t.d||e.isZero()?(n=t.s<0?R(this,i,r):new this(0)).s=e.s:!e.d||t.isZero()?(n=R(this,o,1).times(.5)).s=e.s:t.s<0?(this.precision=o,this.rounding=1,n=this.atan(N(e,t,o,1)),t=R(this,o,1),this.precision=i,this.rounding=r,n=e.s<0?n.minus(t):n.plus(t)):n=this.atan(N(e,t,o,1)):(n=R(this,o,1).times(t.s>0?.25:.75)).s=e.s:n=new this(NaN),n}function se(e){return new this(e).cbrt()}function ae(e){return T(e=new this(e),e.e+1,2)}function ce(e,t,n){return new this(e).clamp(t,n)}function ue(e){if(!e||"object"!=typeof e)throw Error(g+"Object expected");var t,n,i,r=!0===e.defaults,s=["precision",1,A,"rounding",0,8,"toExpNeg",-o,0,"toExpPos",0,o,"maxE",0,o,"minE",-o,0,"modulo",0,9];for(t=0;t=s[t+1]&&i<=s[t+2]))throw Error(d+n+": "+i);this[n]=i}if(n="crypto",r&&(this[n]=u[n]),void 0!==(i=e[n])){if(!0!==i&&!1!==i&&0!==i&&1!==i)throw Error(d+n+": "+i);if(i){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw Error(p);this[n]=!0}else this[n]=!1}return this}function le(e){return new this(e).cos()}function ge(e){return new this(e).cosh()}function de(e,t){return new this(e).div(t)}function he(e){return new this(e).exp()}function pe(e){return T(e=new this(e),e.e+1,3)}function fe(){var e,t,n=new this(0);for(l=!1,e=0;e=429e7?t[o]=crypto.getRandomValues(new Uint32Array(1))[0]:a[o++]=r%1e7;else{if(!crypto.randomBytes)throw Error(p);for(t=crypto.randomBytes(i*=4);o=214e7?crypto.randomBytes(4).copy(t,o):(a.push(r%1e7),o+=4);o=i/4}else for(;o=10;r/=10)i++;i<7&&(n-=7-i)}return s.e=n,s.d=a,s}function Se(e){return T(e=new this(e),e.e+1,this.rounding)}function Me(e){return(e=new this(e)).d?e.d[0]?e.s:0*e.s:e.s||NaN}function De(e){return new this(e).sin()}function Ne(e){return new this(e).sinh()}function Te(e){return new this(e).sqrt()}function Pe(e,t){return new this(e).sub(t)}function Oe(){var e=0,t=arguments,n=new this(t[e]);for(l=!1;n.s&&++eo.maxE?(r.e=NaN,r.d=null):e.e=10;n/=10)t++;return void(l?t>o.maxE?(r.e=NaN,r.d=null):t{"use strict";function i(e){let t=e.length;for(;--t>=0;)e[t]=0}n.d(t,{rr:()=>En});const r=new Uint8Array([0,0,0,0,0,0,0,0,1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,0]),o=new Uint8Array([0,0,0,0,1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13]),A=new Uint8Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,2,3,7]),s=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]),a=new Array(576);i(a);const c=new Array(60);i(c);const u=new Array(512);i(u);const l=new Array(256);i(l);const g=new Array(29);i(g);const d=new Array(30);function h(e,t,n,i,r){this.static_tree=e,this.extra_bits=t,this.extra_base=n,this.elems=i,this.max_length=r,this.has_stree=e&&e.length}let p,f,m;function I(e,t){this.dyn_tree=e,this.max_code=0,this.stat_desc=t}i(d);const y=e=>e<256?u[e]:u[256+(e>>>7)],B=(e,t)=>{e.pending_buf[e.pending++]=255&t,e.pending_buf[e.pending++]=t>>>8&255},C=(e,t,n)=>{e.bi_valid>16-n?(e.bi_buf|=t<>16-e.bi_valid,e.bi_valid+=n-16):(e.bi_buf|=t<{C(e,n[2*t],n[2*t+1])},E=(e,t)=>{let n=0;do{n|=1&e,e>>>=1,n<<=1}while(--t>0);return n>>>1},Q=(e,t,n)=>{const i=new Array(16);let r,o,A=0;for(r=1;r<=15;r++)A=A+n[r-1]<<1,i[r]=A;for(o=0;o<=t;o++){let t=e[2*o+1];0!==t&&(e[2*o]=E(i[t]++,t))}},b=e=>{let t;for(t=0;t<286;t++)e.dyn_ltree[2*t]=0;for(t=0;t<30;t++)e.dyn_dtree[2*t]=0;for(t=0;t<19;t++)e.bl_tree[2*t]=0;e.dyn_ltree[512]=1,e.opt_len=e.static_len=0,e.sym_next=e.matches=0},k=e=>{e.bi_valid>8?B(e,e.bi_buf):e.bi_valid>0&&(e.pending_buf[e.pending++]=e.bi_buf),e.bi_buf=0,e.bi_valid=0},v=(e,t,n,i)=>{const r=2*t,o=2*n;return e[r]{const i=e.heap[n];let r=n<<1;for(;r<=e.heap_len&&(r{let i,A,s,a,c=0;if(0!==e.sym_next)do{i=255&e.pending_buf[e.sym_buf+c++],i+=(255&e.pending_buf[e.sym_buf+c++])<<8,A=e.pending_buf[e.sym_buf+c++],0===i?w(e,A,t):(s=l[A],w(e,s+256+1,t),a=r[s],0!==a&&(A-=g[s],C(e,A,a)),i--,s=y(i),w(e,s,n),a=o[s],0!==a&&(i-=d[s],C(e,i,a)))}while(c{const n=t.dyn_tree,i=t.stat_desc.static_tree,r=t.stat_desc.has_stree,o=t.stat_desc.elems;let A,s,a,c=-1;for(e.heap_len=0,e.heap_max=573,A=0;A>1;A>=1;A--)S(e,n,A);a=o;do{A=e.heap[1],e.heap[1]=e.heap[e.heap_len--],S(e,n,1),s=e.heap[1],e.heap[--e.heap_max]=A,e.heap[--e.heap_max]=s,n[2*a]=n[2*A]+n[2*s],e.depth[a]=(e.depth[A]>=e.depth[s]?e.depth[A]:e.depth[s])+1,n[2*A+1]=n[2*s+1]=a,e.heap[1]=a++,S(e,n,1)}while(e.heap_len>=2);e.heap[--e.heap_max]=e.heap[1],((e,t)=>{const n=t.dyn_tree,i=t.max_code,r=t.stat_desc.static_tree,o=t.stat_desc.has_stree,A=t.stat_desc.extra_bits,s=t.stat_desc.extra_base,a=t.stat_desc.max_length;let c,u,l,g,d,h,p=0;for(g=0;g<=15;g++)e.bl_count[g]=0;for(n[2*e.heap[e.heap_max]+1]=0,c=e.heap_max+1;c<573;c++)u=e.heap[c],g=n[2*n[2*u+1]+1]+1,g>a&&(g=a,p++),n[2*u+1]=g,u>i||(e.bl_count[g]++,d=0,u>=s&&(d=A[u-s]),h=n[2*u],e.opt_len+=h*(g+d),o&&(e.static_len+=h*(r[2*u+1]+d)));if(0!==p){do{for(g=a-1;0===e.bl_count[g];)g--;e.bl_count[g]--,e.bl_count[g+1]+=2,e.bl_count[a]--,p-=2}while(p>0);for(g=a;0!==g;g--)for(u=e.bl_count[g];0!==u;)l=e.heap[--c],l>i||(n[2*l+1]!==g&&(e.opt_len+=(g-n[2*l+1])*n[2*l],n[2*l+1]=g),u--)}})(e,t),Q(n,c,e.bl_count)},N=(e,t,n)=>{let i,r,o=-1,A=t[1],s=0,a=7,c=4;for(0===A&&(a=138,c=3),t[2*(n+1)+1]=65535,i=0;i<=n;i++)r=A,A=t[2*(i+1)+1],++s{let i,r,o=-1,A=t[1],s=0,a=7,c=4;for(0===A&&(a=138,c=3),i=0;i<=n;i++)if(r=A,A=t[2*(i+1)+1],!(++s{C(e,0+(i?1:0),3),k(e),B(e,n),B(e,~n),n&&e.pending_buf.set(e.window.subarray(t,t+n),e.pending),e.pending+=n};var F={_tr_init:e=>{P||((()=>{let e,t,n,i,s;const I=new Array(16);for(n=0,i=0;i<28;i++)for(g[i]=n,e=0;e<1<>=7;i<30;i++)for(d[i]=s<<7,e=0;e<1<{let r,o,A=0;e.level>0?(2===e.strm.data_type&&(e.strm.data_type=(e=>{let t,n=4093624447;for(t=0;t<=31;t++,n>>>=1)if(1&n&&0!==e.dyn_ltree[2*t])return 0;if(0!==e.dyn_ltree[18]||0!==e.dyn_ltree[20]||0!==e.dyn_ltree[26])return 1;for(t=32;t<256;t++)if(0!==e.dyn_ltree[2*t])return 1;return 0})(e)),D(e,e.l_desc),D(e,e.d_desc),A=(e=>{let t;for(N(e,e.dyn_ltree,e.l_desc.max_code),N(e,e.dyn_dtree,e.d_desc.max_code),D(e,e.bl_desc),t=18;t>=3&&0===e.bl_tree[2*s[t]+1];t--);return e.opt_len+=3*(t+1)+5+5+4,t})(e),r=e.opt_len+3+7>>>3,o=e.static_len+3+7>>>3,o<=r&&(r=o)):r=o=n+5,n+4<=r&&-1!==t?O(e,t,n,i):4===e.strategy||o===r?(C(e,2+(i?1:0),3),M(e,a,c)):(C(e,4+(i?1:0),3),((e,t,n,i)=>{let r;for(C(e,t-257,5),C(e,n-1,5),C(e,i-4,4),r=0;r(e.pending_buf[e.sym_buf+e.sym_next++]=t,e.pending_buf[e.sym_buf+e.sym_next++]=t>>8,e.pending_buf[e.sym_buf+e.sym_next++]=n,0===t?e.dyn_ltree[2*n]++:(e.matches++,t--,e.dyn_ltree[2*(l[n]+256+1)]++,e.dyn_dtree[2*y(t)]++),e.sym_next===e.sym_end),_tr_align:e=>{C(e,2,3),w(e,256,a),(e=>{16===e.bi_valid?(B(e,e.bi_buf),e.bi_buf=0,e.bi_valid=0):e.bi_valid>=8&&(e.pending_buf[e.pending++]=255&e.bi_buf,e.bi_buf>>=8,e.bi_valid-=8)})(e)}},R=(e,t,n,i)=>{let r=65535&e|0,o=e>>>16&65535|0,A=0;for(;0!==n;){A=n>2e3?2e3:n,n-=A;do{r=r+t[i++]|0,o=o+r|0}while(--A);r%=65521,o%=65521}return r|o<<16|0};const G=new Uint32Array((()=>{let e,t=[];for(var n=0;n<256;n++){e=n;for(var i=0;i<8;i++)e=1&e?3988292384^e>>>1:e>>>1;t[n]=e}return t})());var x=(e,t,n,i)=>{const r=G,o=i+n;e^=-1;for(let n=i;n>>8^r[255&(e^t[n])];return-1^e},U={2:"need dictionary",1:"stream end",0:"","-1":"file error","-2":"stream error","-3":"data error","-4":"insufficient memory","-5":"buffer error","-6":"incompatible version"},_={Z_NO_FLUSH:0,Z_PARTIAL_FLUSH:1,Z_SYNC_FLUSH:2,Z_FULL_FLUSH:3,Z_FINISH:4,Z_BLOCK:5,Z_TREES:6,Z_OK:0,Z_STREAM_END:1,Z_NEED_DICT:2,Z_ERRNO:-1,Z_STREAM_ERROR:-2,Z_DATA_ERROR:-3,Z_MEM_ERROR:-4,Z_BUF_ERROR:-5,Z_NO_COMPRESSION:0,Z_BEST_SPEED:1,Z_BEST_COMPRESSION:9,Z_DEFAULT_COMPRESSION:-1,Z_FILTERED:1,Z_HUFFMAN_ONLY:2,Z_RLE:3,Z_FIXED:4,Z_DEFAULT_STRATEGY:0,Z_BINARY:0,Z_TEXT:1,Z_UNKNOWN:2,Z_DEFLATED:8};const{_tr_init:L,_tr_stored_block:K,_tr_flush_block:Y,_tr_tally:j,_tr_align:W}=F,{Z_NO_FLUSH:J,Z_PARTIAL_FLUSH:q,Z_FULL_FLUSH:Z,Z_FINISH:z,Z_BLOCK:H,Z_OK:V,Z_STREAM_END:X,Z_STREAM_ERROR:$,Z_DATA_ERROR:ee,Z_BUF_ERROR:te,Z_DEFAULT_COMPRESSION:ne,Z_FILTERED:ie,Z_HUFFMAN_ONLY:re,Z_RLE:oe,Z_FIXED:Ae,Z_DEFAULT_STRATEGY:se,Z_UNKNOWN:ae,Z_DEFLATED:ce}=_,ue=258,le=262,ge=42,de=113,he=666,pe=(e,t)=>(e.msg=U[t],t),fe=e=>2*e-(e>4?9:0),me=e=>{let t=e.length;for(;--t>=0;)e[t]=0},Ie=e=>{let t,n,i,r=e.w_size;t=e.hash_size,i=t;do{n=e.head[--i],e.head[i]=n>=r?n-r:0}while(--t);t=r,i=t;do{n=e.prev[--i],e.prev[i]=n>=r?n-r:0}while(--t)};let ye=(e,t,n)=>(t<{const t=e.state;let n=t.pending;n>e.avail_out&&(n=e.avail_out),0!==n&&(e.output.set(t.pending_buf.subarray(t.pending_out,t.pending_out+n),e.next_out),e.next_out+=n,t.pending_out+=n,e.total_out+=n,e.avail_out-=n,t.pending-=n,0===t.pending&&(t.pending_out=0))},Ce=(e,t)=>{Y(e,e.block_start>=0?e.block_start:-1,e.strstart-e.block_start,t),e.block_start=e.strstart,Be(e.strm)},we=(e,t)=>{e.pending_buf[e.pending++]=t},Ee=(e,t)=>{e.pending_buf[e.pending++]=t>>>8&255,e.pending_buf[e.pending++]=255&t},Qe=(e,t,n,i)=>{let r=e.avail_in;return r>i&&(r=i),0===r?0:(e.avail_in-=r,t.set(e.input.subarray(e.next_in,e.next_in+r),n),1===e.state.wrap?e.adler=R(e.adler,t,r,n):2===e.state.wrap&&(e.adler=x(e.adler,t,r,n)),e.next_in+=r,e.total_in+=r,r)},be=(e,t)=>{let n,i,r=e.max_chain_length,o=e.strstart,A=e.prev_length,s=e.nice_match;const a=e.strstart>e.w_size-le?e.strstart-(e.w_size-le):0,c=e.window,u=e.w_mask,l=e.prev,g=e.strstart+ue;let d=c[o+A-1],h=c[o+A];e.prev_length>=e.good_match&&(r>>=2),s>e.lookahead&&(s=e.lookahead);do{if(n=t,c[n+A]===h&&c[n+A-1]===d&&c[n]===c[o]&&c[++n]===c[o+1]){o+=2,n++;do{}while(c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&c[++o]===c[++n]&&oA){if(e.match_start=t,A=i,i>=s)break;d=c[o+A-1],h=c[o+A]}}}while((t=l[t&u])>a&&0!=--r);return A<=e.lookahead?A:e.lookahead},ke=e=>{const t=e.w_size;let n,i,r;do{if(i=e.window_size-e.lookahead-e.strstart,e.strstart>=t+(t-le)&&(e.window.set(e.window.subarray(t,t+t-i),0),e.match_start-=t,e.strstart-=t,e.block_start-=t,e.insert>e.strstart&&(e.insert=e.strstart),Ie(e),i+=t),0===e.strm.avail_in)break;if(n=Qe(e.strm,e.window,e.strstart+e.lookahead,i),e.lookahead+=n,e.lookahead+e.insert>=3)for(r=e.strstart-e.insert,e.ins_h=e.window[r],e.ins_h=ye(e,e.ins_h,e.window[r+1]);e.insert&&(e.ins_h=ye(e,e.ins_h,e.window[r+3-1]),e.prev[r&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=r,r++,e.insert--,!(e.lookahead+e.insert<3)););}while(e.lookahead{let n,i,r,o=e.pending_buf_size-5>e.w_size?e.w_size:e.pending_buf_size-5,A=0,s=e.strm.avail_in;do{if(n=65535,r=e.bi_valid+42>>3,e.strm.avail_outi+e.strm.avail_in&&(n=i+e.strm.avail_in),n>r&&(n=r),n>8,e.pending_buf[e.pending-2]=~n,e.pending_buf[e.pending-1]=~n>>8,Be(e.strm),i&&(i>n&&(i=n),e.strm.output.set(e.window.subarray(e.block_start,e.block_start+i),e.strm.next_out),e.strm.next_out+=i,e.strm.avail_out-=i,e.strm.total_out+=i,e.block_start+=i,n-=i),n&&(Qe(e.strm,e.strm.output,e.strm.next_out,n),e.strm.next_out+=n,e.strm.avail_out-=n,e.strm.total_out+=n)}while(0===A);return s-=e.strm.avail_in,s&&(s>=e.w_size?(e.matches=2,e.window.set(e.strm.input.subarray(e.strm.next_in-e.w_size,e.strm.next_in),0),e.strstart=e.w_size,e.insert=e.strstart):(e.window_size-e.strstart<=s&&(e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,e.insert>e.strstart&&(e.insert=e.strstart)),e.window.set(e.strm.input.subarray(e.strm.next_in-s,e.strm.next_in),e.strstart),e.strstart+=s,e.insert+=s>e.w_size-e.insert?e.w_size-e.insert:s),e.block_start=e.strstart),e.high_waterr&&e.block_start>=e.w_size&&(e.block_start-=e.w_size,e.strstart-=e.w_size,e.window.set(e.window.subarray(e.w_size,e.w_size+e.strstart),0),e.matches<2&&e.matches++,r+=e.w_size,e.insert>e.strstart&&(e.insert=e.strstart)),r>e.strm.avail_in&&(r=e.strm.avail_in),r&&(Qe(e.strm,e.window,e.strstart,r),e.strstart+=r,e.insert+=r>e.w_size-e.insert?e.w_size-e.insert:r),e.high_water>3,r=e.pending_buf_size-r>65535?65535:e.pending_buf_size-r,o=r>e.w_size?e.w_size:r,i=e.strstart-e.block_start,(i>=o||(i||t===z)&&t!==J&&0===e.strm.avail_in&&i<=r)&&(n=i>r?r:i,A=t===z&&0===e.strm.avail_in&&n===i?1:0,K(e,e.block_start,n,A),e.block_start+=n,Be(e.strm)),A?3:1)},Se=(e,t)=>{let n,i;for(;;){if(e.lookahead=3&&(e.ins_h=ye(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),0!==n&&e.strstart-n<=e.w_size-le&&(e.match_length=be(e,n)),e.match_length>=3)if(i=j(e,e.strstart-e.match_start,e.match_length-3),e.lookahead-=e.match_length,e.match_length<=e.max_lazy_match&&e.lookahead>=3){e.match_length--;do{e.strstart++,e.ins_h=ye(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart}while(0!=--e.match_length);e.strstart++}else e.strstart+=e.match_length,e.match_length=0,e.ins_h=e.window[e.strstart],e.ins_h=ye(e,e.ins_h,e.window[e.strstart+1]);else i=j(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++;if(i&&(Ce(e,!1),0===e.strm.avail_out))return 1}return e.insert=e.strstart<2?e.strstart:2,t===z?(Ce(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Ce(e,!1),0===e.strm.avail_out)?1:2},Me=(e,t)=>{let n,i,r;for(;;){if(e.lookahead=3&&(e.ins_h=ye(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart),e.prev_length=e.match_length,e.prev_match=e.match_start,e.match_length=2,0!==n&&e.prev_length4096)&&(e.match_length=2)),e.prev_length>=3&&e.match_length<=e.prev_length){r=e.strstart+e.lookahead-3,i=j(e,e.strstart-1-e.prev_match,e.prev_length-3),e.lookahead-=e.prev_length-1,e.prev_length-=2;do{++e.strstart<=r&&(e.ins_h=ye(e,e.ins_h,e.window[e.strstart+3-1]),n=e.prev[e.strstart&e.w_mask]=e.head[e.ins_h],e.head[e.ins_h]=e.strstart)}while(0!=--e.prev_length);if(e.match_available=0,e.match_length=2,e.strstart++,i&&(Ce(e,!1),0===e.strm.avail_out))return 1}else if(e.match_available){if(i=j(e,0,e.window[e.strstart-1]),i&&Ce(e,!1),e.strstart++,e.lookahead--,0===e.strm.avail_out)return 1}else e.match_available=1,e.strstart++,e.lookahead--}return e.match_available&&(i=j(e,0,e.window[e.strstart-1]),e.match_available=0),e.insert=e.strstart<2?e.strstart:2,t===z?(Ce(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Ce(e,!1),0===e.strm.avail_out)?1:2};function De(e,t,n,i,r){this.good_length=e,this.max_lazy=t,this.nice_length=n,this.max_chain=i,this.func=r}const Ne=[new De(0,0,0,0,ve),new De(4,4,8,4,Se),new De(4,5,16,8,Se),new De(4,6,32,32,Se),new De(4,4,16,16,Me),new De(8,16,32,32,Me),new De(8,16,128,128,Me),new De(8,32,128,256,Me),new De(32,128,258,1024,Me),new De(32,258,258,4096,Me)];function Te(){this.strm=null,this.status=0,this.pending_buf=null,this.pending_buf_size=0,this.pending_out=0,this.pending=0,this.wrap=0,this.gzhead=null,this.gzindex=0,this.method=ce,this.last_flush=-1,this.w_size=0,this.w_bits=0,this.w_mask=0,this.window=null,this.window_size=0,this.prev=null,this.head=null,this.ins_h=0,this.hash_size=0,this.hash_bits=0,this.hash_mask=0,this.hash_shift=0,this.block_start=0,this.match_length=0,this.prev_match=0,this.match_available=0,this.strstart=0,this.match_start=0,this.lookahead=0,this.prev_length=0,this.max_chain_length=0,this.max_lazy_match=0,this.level=0,this.strategy=0,this.good_match=0,this.nice_match=0,this.dyn_ltree=new Uint16Array(1146),this.dyn_dtree=new Uint16Array(122),this.bl_tree=new Uint16Array(78),me(this.dyn_ltree),me(this.dyn_dtree),me(this.bl_tree),this.l_desc=null,this.d_desc=null,this.bl_desc=null,this.bl_count=new Uint16Array(16),this.heap=new Uint16Array(573),me(this.heap),this.heap_len=0,this.heap_max=0,this.depth=new Uint16Array(573),me(this.depth),this.sym_buf=0,this.lit_bufsize=0,this.sym_next=0,this.sym_end=0,this.opt_len=0,this.static_len=0,this.matches=0,this.insert=0,this.bi_buf=0,this.bi_valid=0}const Pe=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.status!==ge&&57!==t.status&&69!==t.status&&73!==t.status&&91!==t.status&&103!==t.status&&t.status!==de&&t.status!==he?1:0},Oe=e=>{if(Pe(e))return pe(e,$);e.total_in=e.total_out=0,e.data_type=ae;const t=e.state;return t.pending=0,t.pending_out=0,t.wrap<0&&(t.wrap=-t.wrap),t.status=2===t.wrap?57:t.wrap?ge:de,e.adler=2===t.wrap?0:1,t.last_flush=-2,L(t),V},Fe=e=>{const t=Oe(e);return t===V&&((n=e.state).window_size=2*n.w_size,me(n.head),n.max_lazy_match=Ne[n.level].max_lazy,n.good_match=Ne[n.level].good_length,n.nice_match=Ne[n.level].nice_length,n.max_chain_length=Ne[n.level].max_chain,n.strstart=0,n.block_start=0,n.lookahead=0,n.insert=0,n.match_length=n.prev_length=2,n.match_available=0,n.ins_h=0),t;var n},Re=(e,t,n,i,r,o)=>{if(!e)return $;let A=1;if(t===ne&&(t=6),i<0?(A=0,i=-i):i>15&&(A=2,i-=16),r<1||r>9||n!==ce||i<8||i>15||t<0||t>9||o<0||o>Ae||8===i&&1!==A)return pe(e,$);8===i&&(i=9);const s=new Te;return e.state=s,s.strm=e,s.status=ge,s.wrap=A,s.gzhead=null,s.w_bits=i,s.w_size=1<Pe(e)||2!==e.state.wrap?$:(e.state.gzhead=t,V),Ue=(e,t)=>{if(Pe(e)||t>H||t<0)return e?pe(e,$):$;const n=e.state;if(!e.output||0!==e.avail_in&&!e.input||n.status===he&&t!==z)return pe(e,0===e.avail_out?te:$);const i=n.last_flush;if(n.last_flush=t,0!==n.pending){if(Be(e),0===e.avail_out)return n.last_flush=-1,V}else if(0===e.avail_in&&fe(t)<=fe(i)&&t!==z)return pe(e,te);if(n.status===he&&0!==e.avail_in)return pe(e,te);if(n.status===ge&&0===n.wrap&&(n.status=de),n.status===ge){let t=ce+(n.w_bits-8<<4)<<8,i=-1;if(i=n.strategy>=re||n.level<2?0:n.level<6?1:6===n.level?2:3,t|=i<<6,0!==n.strstart&&(t|=32),t+=31-t%31,Ee(n,t),0!==n.strstart&&(Ee(n,e.adler>>>16),Ee(n,65535&e.adler)),e.adler=1,n.status=de,Be(e),0!==n.pending)return n.last_flush=-1,V}if(57===n.status)if(e.adler=0,we(n,31),we(n,139),we(n,8),n.gzhead)we(n,(n.gzhead.text?1:0)+(n.gzhead.hcrc?2:0)+(n.gzhead.extra?4:0)+(n.gzhead.name?8:0)+(n.gzhead.comment?16:0)),we(n,255&n.gzhead.time),we(n,n.gzhead.time>>8&255),we(n,n.gzhead.time>>16&255),we(n,n.gzhead.time>>24&255),we(n,9===n.level?2:n.strategy>=re||n.level<2?4:0),we(n,255&n.gzhead.os),n.gzhead.extra&&n.gzhead.extra.length&&(we(n,255&n.gzhead.extra.length),we(n,n.gzhead.extra.length>>8&255)),n.gzhead.hcrc&&(e.adler=x(e.adler,n.pending_buf,n.pending,0)),n.gzindex=0,n.status=69;else if(we(n,0),we(n,0),we(n,0),we(n,0),we(n,0),we(n,9===n.level?2:n.strategy>=re||n.level<2?4:0),we(n,3),n.status=de,Be(e),0!==n.pending)return n.last_flush=-1,V;if(69===n.status){if(n.gzhead.extra){let t=n.pending,i=(65535&n.gzhead.extra.length)-n.gzindex;for(;n.pending+i>n.pending_buf_size;){let r=n.pending_buf_size-n.pending;if(n.pending_buf.set(n.gzhead.extra.subarray(n.gzindex,n.gzindex+r),n.pending),n.pending=n.pending_buf_size,n.gzhead.hcrc&&n.pending>t&&(e.adler=x(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex+=r,Be(e),0!==n.pending)return n.last_flush=-1,V;t=0,i-=r}let r=new Uint8Array(n.gzhead.extra);n.pending_buf.set(r.subarray(n.gzindex,n.gzindex+i),n.pending),n.pending+=i,n.gzhead.hcrc&&n.pending>t&&(e.adler=x(e.adler,n.pending_buf,n.pending-t,t)),n.gzindex=0}n.status=73}if(73===n.status){if(n.gzhead.name){let t,i=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=x(e.adler,n.pending_buf,n.pending-i,i)),Be(e),0!==n.pending)return n.last_flush=-1,V;i=0}t=n.gzindexi&&(e.adler=x(e.adler,n.pending_buf,n.pending-i,i)),n.gzindex=0}n.status=91}if(91===n.status){if(n.gzhead.comment){let t,i=n.pending;do{if(n.pending===n.pending_buf_size){if(n.gzhead.hcrc&&n.pending>i&&(e.adler=x(e.adler,n.pending_buf,n.pending-i,i)),Be(e),0!==n.pending)return n.last_flush=-1,V;i=0}t=n.gzindexi&&(e.adler=x(e.adler,n.pending_buf,n.pending-i,i))}n.status=103}if(103===n.status){if(n.gzhead.hcrc){if(n.pending+2>n.pending_buf_size&&(Be(e),0!==n.pending))return n.last_flush=-1,V;we(n,255&e.adler),we(n,e.adler>>8&255),e.adler=0}if(n.status=de,Be(e),0!==n.pending)return n.last_flush=-1,V}if(0!==e.avail_in||0!==n.lookahead||t!==J&&n.status!==he){let i=0===n.level?ve(n,t):n.strategy===re?((e,t)=>{let n;for(;;){if(0===e.lookahead&&(ke(e),0===e.lookahead)){if(t===J)return 1;break}if(e.match_length=0,n=j(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++,n&&(Ce(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===z?(Ce(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Ce(e,!1),0===e.strm.avail_out)?1:2})(n,t):n.strategy===oe?((e,t)=>{let n,i,r,o;const A=e.window;for(;;){if(e.lookahead<=ue){if(ke(e),e.lookahead<=ue&&t===J)return 1;if(0===e.lookahead)break}if(e.match_length=0,e.lookahead>=3&&e.strstart>0&&(r=e.strstart-1,i=A[r],i===A[++r]&&i===A[++r]&&i===A[++r])){o=e.strstart+ue;do{}while(i===A[++r]&&i===A[++r]&&i===A[++r]&&i===A[++r]&&i===A[++r]&&i===A[++r]&&i===A[++r]&&i===A[++r]&&re.lookahead&&(e.match_length=e.lookahead)}if(e.match_length>=3?(n=j(e,1,e.match_length-3),e.lookahead-=e.match_length,e.strstart+=e.match_length,e.match_length=0):(n=j(e,0,e.window[e.strstart]),e.lookahead--,e.strstart++),n&&(Ce(e,!1),0===e.strm.avail_out))return 1}return e.insert=0,t===z?(Ce(e,!0),0===e.strm.avail_out?3:4):e.sym_next&&(Ce(e,!1),0===e.strm.avail_out)?1:2})(n,t):Ne[n.level].func(n,t);if(3!==i&&4!==i||(n.status=he),1===i||3===i)return 0===e.avail_out&&(n.last_flush=-1),V;if(2===i&&(t===q?W(n):t!==H&&(K(n,0,0,!1),t===Z&&(me(n.head),0===n.lookahead&&(n.strstart=0,n.block_start=0,n.insert=0))),Be(e),0===e.avail_out))return n.last_flush=-1,V}return t!==z?V:n.wrap<=0?X:(2===n.wrap?(we(n,255&e.adler),we(n,e.adler>>8&255),we(n,e.adler>>16&255),we(n,e.adler>>24&255),we(n,255&e.total_in),we(n,e.total_in>>8&255),we(n,e.total_in>>16&255),we(n,e.total_in>>24&255)):(Ee(n,e.adler>>>16),Ee(n,65535&e.adler)),Be(e),n.wrap>0&&(n.wrap=-n.wrap),0!==n.pending?V:X)},_e=e=>{if(Pe(e))return $;const t=e.state.status;return e.state=null,t===de?pe(e,ee):V},Le=(e,t)=>{let n=t.length;if(Pe(e))return $;const i=e.state,r=i.wrap;if(2===r||1===r&&i.status!==ge||i.lookahead)return $;if(1===r&&(e.adler=R(e.adler,t,n,0)),i.wrap=0,n>=i.w_size){0===r&&(me(i.head),i.strstart=0,i.block_start=0,i.insert=0);let e=new Uint8Array(i.w_size);e.set(t.subarray(n-i.w_size,n),0),t=e,n=i.w_size}const o=e.avail_in,A=e.next_in,s=e.input;for(e.avail_in=n,e.next_in=0,e.input=t,ke(i);i.lookahead>=3;){let e=i.strstart,t=i.lookahead-2;do{i.ins_h=ye(i,i.ins_h,i.window[e+3-1]),i.prev[e&i.w_mask]=i.head[i.ins_h],i.head[i.ins_h]=e,e++}while(--t);i.strstart=e,i.lookahead=2,ke(i)}return i.strstart+=i.lookahead,i.block_start=i.strstart,i.insert=i.lookahead,i.lookahead=0,i.match_length=i.prev_length=2,i.match_available=0,e.next_in=A,e.input=s,e.avail_in=o,i.wrap=r,V};const Ke=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var Ye=function(e){const t=Array.prototype.slice.call(arguments,1);for(;t.length;){const n=t.shift();if(n){if("object"!=typeof n)throw new TypeError(n+"must be non-object");for(const t in n)Ke(n,t)&&(e[t]=n[t])}}return e},je=e=>{let t=0;for(let n=0,i=e.length;n=252?6:e>=248?5:e>=240?4:e>=224?3:e>=192?2:1;Je[254]=Je[254]=1;var qe=e=>{if("function"==typeof TextEncoder&&TextEncoder.prototype.encode)return(new TextEncoder).encode(e);let t,n,i,r,o,A=e.length,s=0;for(r=0;r>>6,t[o++]=128|63&n):n<65536?(t[o++]=224|n>>>12,t[o++]=128|n>>>6&63,t[o++]=128|63&n):(t[o++]=240|n>>>18,t[o++]=128|n>>>12&63,t[o++]=128|n>>>6&63,t[o++]=128|63&n);return t},Ze=(e,t)=>{const n=t||e.length;if("function"==typeof TextDecoder&&TextDecoder.prototype.decode)return(new TextDecoder).decode(e.subarray(0,t));let i,r;const o=new Array(2*n);for(r=0,i=0;i4)o[r++]=65533,i+=A-1;else{for(t&=2===A?31:3===A?15:7;A>1&&i1?o[r++]=65533:t<65536?o[r++]=t:(t-=65536,o[r++]=55296|t>>10&1023,o[r++]=56320|1023&t)}}return((e,t)=>{if(t<65534&&e.subarray&&We)return String.fromCharCode.apply(null,e.length===t?e:e.subarray(0,t));let n="";for(let i=0;i{(t=t||e.length)>e.length&&(t=e.length);let n=t-1;for(;n>=0&&128==(192&e[n]);)n--;return n<0||0===n?t:n+Je[e[n]]>t?n:t},He=function(){this.input=null,this.next_in=0,this.avail_in=0,this.total_in=0,this.output=null,this.next_out=0,this.avail_out=0,this.total_out=0,this.msg="",this.state=null,this.data_type=2,this.adler=0};const Ve=Object.prototype.toString,{Z_NO_FLUSH:Xe,Z_SYNC_FLUSH:$e,Z_FULL_FLUSH:et,Z_FINISH:tt,Z_OK:nt,Z_STREAM_END:it,Z_DEFAULT_COMPRESSION:rt,Z_DEFAULT_STRATEGY:ot,Z_DEFLATED:At}=_;function st(e){this.options=Ye({level:rt,method:At,chunkSize:16384,windowBits:15,memLevel:8,strategy:ot},e||{});let t=this.options;t.raw&&t.windowBits>0?t.windowBits=-t.windowBits:t.gzip&&t.windowBits>0&&t.windowBits<16&&(t.windowBits+=16),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new He,this.strm.avail_out=0;let n=Ge(this.strm,t.level,t.method,t.windowBits,t.memLevel,t.strategy);if(n!==nt)throw new Error(U[n]);if(t.header&&xe(this.strm,t.header),t.dictionary){let e;if(e="string"==typeof t.dictionary?qe(t.dictionary):"[object ArrayBuffer]"===Ve.call(t.dictionary)?new Uint8Array(t.dictionary):t.dictionary,n=Le(this.strm,e),n!==nt)throw new Error(U[n]);this._dict_set=!0}}function at(e,t){const n=new st(t);if(n.push(e,!0),n.err)throw n.msg||U[n.err];return n.result}st.prototype.push=function(e,t){const n=this.strm,i=this.options.chunkSize;let r,o;if(this.ended)return!1;for(o=t===~~t?t:!0===t?tt:Xe,"string"==typeof e?n.input=qe(e):"[object ArrayBuffer]"===Ve.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;)if(0===n.avail_out&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),(o===$e||o===et)&&n.avail_out<=6)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else{if(r=Ue(n,o),r===it)return n.next_out>0&&this.onData(n.output.subarray(0,n.next_out)),r=_e(this.strm),this.onEnd(r),this.ended=!0,r===nt;if(0!==n.avail_out){if(o>0&&n.next_out>0)this.onData(n.output.subarray(0,n.next_out)),n.avail_out=0;else if(0===n.avail_in)break}else this.onData(n.output)}return!0},st.prototype.onData=function(e){this.chunks.push(e)},st.prototype.onEnd=function(e){e===nt&&(this.result=je(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var ct={Deflate:st,deflate:at,deflateRaw:function(e,t){return(t=t||{}).raw=!0,at(e,t)},gzip:function(e,t){return(t=t||{}).gzip=!0,at(e,t)},constants:_};const ut=16209;var lt=function(e,t){let n,i,r,o,A,s,a,c,u,l,g,d,h,p,f,m,I,y,B,C,w,E,Q,b;const k=e.state;n=e.next_in,Q=e.input,i=n+(e.avail_in-5),r=e.next_out,b=e.output,o=r-(t-e.avail_out),A=r+(e.avail_out-257),s=k.dmax,a=k.wsize,c=k.whave,u=k.wnext,l=k.window,g=k.hold,d=k.bits,h=k.lencode,p=k.distcode,f=(1<>>24,g>>>=y,d-=y,y=I>>>16&255,0===y)b[r++]=65535&I;else{if(!(16&y)){if(0==(64&y)){I=h[(65535&I)+(g&(1<>>=y,d-=y),d<15&&(g+=Q[n++]<>>24,g>>>=y,d-=y,y=I>>>16&255,!(16&y)){if(0==(64&y)){I=p[(65535&I)+(g&(1<s){e.msg="invalid distance too far back",k.mode=ut;break e}if(g>>>=y,d-=y,y=r-o,C>y){if(y=C-y,y>c&&k.sane){e.msg="invalid distance too far back",k.mode=ut;break e}if(w=0,E=l,0===u){if(w+=a-y,y2;)b[r++]=E[w++],b[r++]=E[w++],b[r++]=E[w++],B-=3;B&&(b[r++]=E[w++],B>1&&(b[r++]=E[w++]))}else{w=r-C;do{b[r++]=b[w++],b[r++]=b[w++],b[r++]=b[w++],B-=3}while(B>2);B&&(b[r++]=b[w++],B>1&&(b[r++]=b[w++]))}break}}break}}while(n>3,n-=B,d-=B<<3,g&=(1<{const a=s.bits;let c,u,l,g,d,h,p=0,f=0,m=0,I=0,y=0,B=0,C=0,w=0,E=0,Q=0,b=null;const k=new Uint16Array(16),v=new Uint16Array(16);let S,M,D,N=null;for(p=0;p<=15;p++)k[p]=0;for(f=0;f=1&&0===k[I];I--);if(y>I&&(y=I),0===I)return r[o++]=20971520,r[o++]=20971520,s.bits=1,0;for(m=1;m0&&(0===e||1!==I))return-1;for(v[1]=0,p=1;p<15;p++)v[p+1]=v[p]+k[p];for(f=0;f852||2===e&&E>592)return 1;for(;;){S=p-C,A[f]+1=h?(M=N[A[f]-h],D=b[A[f]-h]):(M=96,D=0),c=1<>C)+u]=S<<24|M<<16|D|0}while(0!==u);for(c=1<>=1;if(0!==c?(Q&=c-1,Q+=c):Q=0,f++,0==--k[p]){if(p===I)break;p=t[n+A[f]]}if(p>y&&(Q&g)!==l){for(0===C&&(C=y),d+=m,B=p-C,w=1<852||2===e&&E>592)return 1;l=Q&g,r[l]=y<<24|B<<16|d-o|0}}return 0!==Q&&(r[d+Q]=p-C<<24|64<<16|0),s.bits=y,0};const{Z_FINISH:mt,Z_BLOCK:It,Z_TREES:yt,Z_OK:Bt,Z_STREAM_END:Ct,Z_NEED_DICT:wt,Z_STREAM_ERROR:Et,Z_DATA_ERROR:Qt,Z_MEM_ERROR:bt,Z_BUF_ERROR:kt,Z_DEFLATED:vt}=_,St=16180,Mt=16190,Dt=16191,Nt=16192,Tt=16194,Pt=16199,Ot=16200,Ft=16206,Rt=16209,Gt=e=>(e>>>24&255)+(e>>>8&65280)+((65280&e)<<8)+((255&e)<<24);function xt(){this.strm=null,this.mode=0,this.last=!1,this.wrap=0,this.havedict=!1,this.flags=0,this.dmax=0,this.check=0,this.total=0,this.head=null,this.wbits=0,this.wsize=0,this.whave=0,this.wnext=0,this.window=null,this.hold=0,this.bits=0,this.length=0,this.offset=0,this.extra=0,this.lencode=null,this.distcode=null,this.lenbits=0,this.distbits=0,this.ncode=0,this.nlen=0,this.ndist=0,this.have=0,this.next=null,this.lens=new Uint16Array(320),this.work=new Uint16Array(288),this.lendyn=null,this.distdyn=null,this.sane=0,this.back=0,this.was=0}const Ut=e=>{if(!e)return 1;const t=e.state;return!t||t.strm!==e||t.mode16211?1:0},_t=e=>{if(Ut(e))return Et;const t=e.state;return e.total_in=e.total_out=t.total=0,e.msg="",t.wrap&&(e.adler=1&t.wrap),t.mode=St,t.last=0,t.havedict=0,t.flags=-1,t.dmax=32768,t.head=null,t.hold=0,t.bits=0,t.lencode=t.lendyn=new Int32Array(852),t.distcode=t.distdyn=new Int32Array(592),t.sane=1,t.back=-1,Bt},Lt=e=>{if(Ut(e))return Et;const t=e.state;return t.wsize=0,t.whave=0,t.wnext=0,_t(e)},Kt=(e,t)=>{let n;if(Ut(e))return Et;const i=e.state;return t<0?(n=0,t=-t):(n=5+(t>>4),t<48&&(t&=15)),t&&(t<8||t>15)?Et:(null!==i.window&&i.wbits!==t&&(i.window=null),i.wrap=n,i.wbits=t,Lt(e))},Yt=(e,t)=>{if(!e)return Et;const n=new xt;e.state=n,n.strm=e,n.window=null,n.mode=St;const i=Kt(e,t);return i!==Bt&&(e.state=null),i};let jt,Wt,Jt=!0;const qt=e=>{if(Jt){jt=new Int32Array(512),Wt=new Int32Array(32);let t=0;for(;t<144;)e.lens[t++]=8;for(;t<256;)e.lens[t++]=9;for(;t<280;)e.lens[t++]=7;for(;t<288;)e.lens[t++]=8;for(ft(1,e.lens,0,288,jt,0,e.work,{bits:9}),t=0;t<32;)e.lens[t++]=5;ft(2,e.lens,0,32,Wt,0,e.work,{bits:5}),Jt=!1}e.lencode=jt,e.lenbits=9,e.distcode=Wt,e.distbits=5},Zt=(e,t,n,i)=>{let r;const o=e.state;return null===o.window&&(o.wsize=1<=o.wsize?(o.window.set(t.subarray(n-o.wsize,n),0),o.wnext=0,o.whave=o.wsize):(r=o.wsize-o.wnext,r>i&&(r=i),o.window.set(t.subarray(n-i,n-i+r),o.wnext),(i-=r)?(o.window.set(t.subarray(n-i,n),0),o.wnext=i,o.whave=o.wsize):(o.wnext+=r,o.wnext===o.wsize&&(o.wnext=0),o.whave{let n,i,r,o,A,s,a,c,u,l,g,d,h,p,f,m,I,y,B,C,w,E,Q=0;const b=new Uint8Array(4);let k,v;const S=new Uint8Array([16,17,18,0,8,7,9,6,10,5,11,4,12,3,13,2,14,1,15]);if(Ut(e)||!e.output||!e.input&&0!==e.avail_in)return Et;n=e.state,n.mode===Dt&&(n.mode=Nt),A=e.next_out,r=e.output,a=e.avail_out,o=e.next_in,i=e.input,s=e.avail_in,c=n.hold,u=n.bits,l=s,g=a,E=Bt;e:for(;;)switch(n.mode){case St:if(0===n.wrap){n.mode=Nt;break}for(;u<16;){if(0===s)break e;s--,c+=i[o++]<>>8&255,n.check=x(n.check,b,2,0),c=0,u=0,n.mode=16181;break}if(n.head&&(n.head.done=!1),!(1&n.wrap)||(((255&c)<<8)+(c>>8))%31){e.msg="incorrect header check",n.mode=Rt;break}if((15&c)!==vt){e.msg="unknown compression method",n.mode=Rt;break}if(c>>>=4,u-=4,w=8+(15&c),0===n.wbits&&(n.wbits=w),w>15||w>n.wbits){e.msg="invalid window size",n.mode=Rt;break}n.dmax=1<>8&1),512&n.flags&&4&n.wrap&&(b[0]=255&c,b[1]=c>>>8&255,n.check=x(n.check,b,2,0)),c=0,u=0,n.mode=16182;case 16182:for(;u<32;){if(0===s)break e;s--,c+=i[o++]<>>8&255,b[2]=c>>>16&255,b[3]=c>>>24&255,n.check=x(n.check,b,4,0)),c=0,u=0,n.mode=16183;case 16183:for(;u<16;){if(0===s)break e;s--,c+=i[o++]<>8),512&n.flags&&4&n.wrap&&(b[0]=255&c,b[1]=c>>>8&255,n.check=x(n.check,b,2,0)),c=0,u=0,n.mode=16184;case 16184:if(1024&n.flags){for(;u<16;){if(0===s)break e;s--,c+=i[o++]<>>8&255,n.check=x(n.check,b,2,0)),c=0,u=0}else n.head&&(n.head.extra=null);n.mode=16185;case 16185:if(1024&n.flags&&(d=n.length,d>s&&(d=s),d&&(n.head&&(w=n.head.extra_len-n.length,n.head.extra||(n.head.extra=new Uint8Array(n.head.extra_len)),n.head.extra.set(i.subarray(o,o+d),w)),512&n.flags&&4&n.wrap&&(n.check=x(n.check,i,d,o)),s-=d,o+=d,n.length-=d),n.length))break e;n.length=0,n.mode=16186;case 16186:if(2048&n.flags){if(0===s)break e;d=0;do{w=i[o+d++],n.head&&w&&n.length<65536&&(n.head.name+=String.fromCharCode(w))}while(w&&d>9&1,n.head.done=!0),e.adler=n.check=0,n.mode=Dt;break;case 16189:for(;u<32;){if(0===s)break e;s--,c+=i[o++]<>>=7&u,u-=7&u,n.mode=Ft;break}for(;u<3;){if(0===s)break e;s--,c+=i[o++]<>>=1,u-=1,3&c){case 0:n.mode=16193;break;case 1:if(qt(n),n.mode=Pt,t===yt){c>>>=2,u-=2;break e}break;case 2:n.mode=16196;break;case 3:e.msg="invalid block type",n.mode=Rt}c>>>=2,u-=2;break;case 16193:for(c>>>=7&u,u-=7&u;u<32;){if(0===s)break e;s--,c+=i[o++]<>>16^65535)){e.msg="invalid stored block lengths",n.mode=Rt;break}if(n.length=65535&c,c=0,u=0,n.mode=Tt,t===yt)break e;case Tt:n.mode=16195;case 16195:if(d=n.length,d){if(d>s&&(d=s),d>a&&(d=a),0===d)break e;r.set(i.subarray(o,o+d),A),s-=d,o+=d,a-=d,A+=d,n.length-=d;break}n.mode=Dt;break;case 16196:for(;u<14;){if(0===s)break e;s--,c+=i[o++]<>>=5,u-=5,n.ndist=1+(31&c),c>>>=5,u-=5,n.ncode=4+(15&c),c>>>=4,u-=4,n.nlen>286||n.ndist>30){e.msg="too many length or distance symbols",n.mode=Rt;break}n.have=0,n.mode=16197;case 16197:for(;n.have>>=3,u-=3}for(;n.have<19;)n.lens[S[n.have++]]=0;if(n.lencode=n.lendyn,n.lenbits=7,k={bits:n.lenbits},E=ft(0,n.lens,0,19,n.lencode,0,n.work,k),n.lenbits=k.bits,E){e.msg="invalid code lengths set",n.mode=Rt;break}n.have=0,n.mode=16198;case 16198:for(;n.have>>24,m=Q>>>16&255,I=65535&Q,!(f<=u);){if(0===s)break e;s--,c+=i[o++]<>>=f,u-=f,n.lens[n.have++]=I;else{if(16===I){for(v=f+2;u>>=f,u-=f,0===n.have){e.msg="invalid bit length repeat",n.mode=Rt;break}w=n.lens[n.have-1],d=3+(3&c),c>>>=2,u-=2}else if(17===I){for(v=f+3;u>>=f,u-=f,w=0,d=3+(7&c),c>>>=3,u-=3}else{for(v=f+7;u>>=f,u-=f,w=0,d=11+(127&c),c>>>=7,u-=7}if(n.have+d>n.nlen+n.ndist){e.msg="invalid bit length repeat",n.mode=Rt;break}for(;d--;)n.lens[n.have++]=w}}if(n.mode===Rt)break;if(0===n.lens[256]){e.msg="invalid code -- missing end-of-block",n.mode=Rt;break}if(n.lenbits=9,k={bits:n.lenbits},E=ft(1,n.lens,0,n.nlen,n.lencode,0,n.work,k),n.lenbits=k.bits,E){e.msg="invalid literal/lengths set",n.mode=Rt;break}if(n.distbits=6,n.distcode=n.distdyn,k={bits:n.distbits},E=ft(2,n.lens,n.nlen,n.ndist,n.distcode,0,n.work,k),n.distbits=k.bits,E){e.msg="invalid distances set",n.mode=Rt;break}if(n.mode=Pt,t===yt)break e;case Pt:n.mode=Ot;case Ot:if(s>=6&&a>=258){e.next_out=A,e.avail_out=a,e.next_in=o,e.avail_in=s,n.hold=c,n.bits=u,lt(e,g),A=e.next_out,r=e.output,a=e.avail_out,o=e.next_in,i=e.input,s=e.avail_in,c=n.hold,u=n.bits,n.mode===Dt&&(n.back=-1);break}for(n.back=0;Q=n.lencode[c&(1<>>24,m=Q>>>16&255,I=65535&Q,!(f<=u);){if(0===s)break e;s--,c+=i[o++]<>y)],f=Q>>>24,m=Q>>>16&255,I=65535&Q,!(y+f<=u);){if(0===s)break e;s--,c+=i[o++]<>>=y,u-=y,n.back+=y}if(c>>>=f,u-=f,n.back+=f,n.length=I,0===m){n.mode=16205;break}if(32&m){n.back=-1,n.mode=Dt;break}if(64&m){e.msg="invalid literal/length code",n.mode=Rt;break}n.extra=15&m,n.mode=16201;case 16201:if(n.extra){for(v=n.extra;u>>=n.extra,u-=n.extra,n.back+=n.extra}n.was=n.length,n.mode=16202;case 16202:for(;Q=n.distcode[c&(1<>>24,m=Q>>>16&255,I=65535&Q,!(f<=u);){if(0===s)break e;s--,c+=i[o++]<>y)],f=Q>>>24,m=Q>>>16&255,I=65535&Q,!(y+f<=u);){if(0===s)break e;s--,c+=i[o++]<>>=y,u-=y,n.back+=y}if(c>>>=f,u-=f,n.back+=f,64&m){e.msg="invalid distance code",n.mode=Rt;break}n.offset=I,n.extra=15&m,n.mode=16203;case 16203:if(n.extra){for(v=n.extra;u>>=n.extra,u-=n.extra,n.back+=n.extra}if(n.offset>n.dmax){e.msg="invalid distance too far back",n.mode=Rt;break}n.mode=16204;case 16204:if(0===a)break e;if(d=g-a,n.offset>d){if(d=n.offset-d,d>n.whave&&n.sane){e.msg="invalid distance too far back",n.mode=Rt;break}d>n.wnext?(d-=n.wnext,h=n.wsize-d):h=n.wnext-d,d>n.length&&(d=n.length),p=n.window}else p=r,h=A-n.offset,d=n.length;d>a&&(d=a),a-=d,n.length-=d;do{r[A++]=p[h++]}while(--d);0===n.length&&(n.mode=Ot);break;case 16205:if(0===a)break e;r[A++]=n.length,a--,n.mode=Ot;break;case Ft:if(n.wrap){for(;u<32;){if(0===s)break e;s--,c|=i[o++]<{if(Ut(e))return Et;let t=e.state;return t.window&&(t.window=null),e.state=null,Bt},$t=(e,t)=>{if(Ut(e))return Et;const n=e.state;return 0==(2&n.wrap)?Et:(n.head=t,t.done=!1,Bt)},en=(e,t)=>{const n=t.length;let i,r,o;return Ut(e)?Et:(i=e.state,0!==i.wrap&&i.mode!==Mt?Et:i.mode===Mt&&(r=1,r=R(r,t,n,0),r!==i.check)?Qt:(o=Zt(e,t,n,n),o?(i.mode=16210,bt):(i.havedict=1,Bt)))},tn=function(){this.text=0,this.time=0,this.xflags=0,this.os=0,this.extra=null,this.extra_len=0,this.name="",this.comment="",this.hcrc=0,this.done=!1};const nn=Object.prototype.toString,{Z_NO_FLUSH:rn,Z_FINISH:on,Z_OK:An,Z_STREAM_END:sn,Z_NEED_DICT:an,Z_STREAM_ERROR:cn,Z_DATA_ERROR:un,Z_MEM_ERROR:ln}=_;function gn(e){this.options=Ye({chunkSize:65536,windowBits:15,to:""},e||{});const t=this.options;t.raw&&t.windowBits>=0&&t.windowBits<16&&(t.windowBits=-t.windowBits,0===t.windowBits&&(t.windowBits=-15)),!(t.windowBits>=0&&t.windowBits<16)||e&&e.windowBits||(t.windowBits+=32),t.windowBits>15&&t.windowBits<48&&0==(15&t.windowBits)&&(t.windowBits|=15),this.err=0,this.msg="",this.ended=!1,this.chunks=[],this.strm=new He,this.strm.avail_out=0;let n=Ht(this.strm,t.windowBits);if(n!==An)throw new Error(U[n]);if(this.header=new tn,$t(this.strm,this.header),t.dictionary&&("string"==typeof t.dictionary?t.dictionary=qe(t.dictionary):"[object ArrayBuffer]"===nn.call(t.dictionary)&&(t.dictionary=new Uint8Array(t.dictionary)),t.raw&&(n=en(this.strm,t.dictionary),n!==An)))throw new Error(U[n])}function dn(e,t){const n=new gn(t);if(n.push(e),n.err)throw n.msg||U[n.err];return n.result}gn.prototype.push=function(e,t){const n=this.strm,i=this.options.chunkSize,r=this.options.dictionary;let o,A,s;if(this.ended)return!1;for(A=t===~~t?t:!0===t?on:rn,"[object ArrayBuffer]"===nn.call(e)?n.input=new Uint8Array(e):n.input=e,n.next_in=0,n.avail_in=n.input.length;;){for(0===n.avail_out&&(n.output=new Uint8Array(i),n.next_out=0,n.avail_out=i),o=Vt(n,A),o===an&&r&&(o=en(n,r),o===An?o=Vt(n,A):o===un&&(o=an));n.avail_in>0&&o===sn&&n.state.wrap>0&&0!==e[n.next_in];)zt(n),o=Vt(n,A);switch(o){case cn:case un:case an:case ln:return this.onEnd(o),this.ended=!0,!1}if(s=n.avail_out,n.next_out&&(0===n.avail_out||o===sn))if("string"===this.options.to){let e=ze(n.output,n.next_out),t=n.next_out-e,r=Ze(n.output,e);n.next_out=t,n.avail_out=i-t,t&&n.output.set(n.output.subarray(e,e+t),0),this.onData(r)}else this.onData(n.output.length===n.next_out?n.output:n.output.subarray(0,n.next_out));if(o!==An||0!==s){if(o===sn)return o=Xt(this.strm),this.onEnd(o),this.ended=!0,!0;if(0===n.avail_in)break}}return!0},gn.prototype.onData=function(e){this.chunks.push(e)},gn.prototype.onEnd=function(e){e===An&&("string"===this.options.to?this.result=this.chunks.join(""):this.result=je(this.chunks)),this.chunks=[],this.err=e,this.msg=this.strm.msg};var hn={Inflate:gn,inflate:dn,inflateRaw:function(e,t){return(t=t||{}).raw=!0,dn(e,t)},ungzip:dn,constants:_};const{Deflate:pn,deflate:fn,deflateRaw:mn,gzip:In}=ct,{Inflate:yn,inflate:Bn,inflateRaw:Cn,ungzip:wn}=hn;var En=Bn},44903:e=>{"use strict";e.exports=JSON.parse('{"cluster_urls":{"devnet":"https://mango.devnet.rpcpool.com","localnet":"http://127.0.0.1:8899","mainnet":"https://mango.rpcpool.com/946ef7337da3f5b8d3e4a34e7f88","testnet":"http://api.testnet.rpcpool.com"},"groups":[{"cluster":"mainnet","name":"mainnet.1","publicKey":"98pjRuQjK3qA6gXts96PqZT4Ze5QmnCmt3QYjhbUSPue","quoteSymbol":"USDC","mangoProgramId":"mv3ekLzLbnVPNxjSKvqBpU3ZeZXPQdEC3bp5MDEBG68","serumProgramId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","tokens":[{"symbol":"USDC","mintKey":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","decimals":6,"rootKey":"AMzanZxMirPCgGcBoH9kw4Jzi9LFMomyUCXbpzDeL2T8","nodeKeys":["BGcwkj1WudQwUUjFk78hAjwd1uAm8trh1N4CJSa51euh"]},{"symbol":"MNGO","mintKey":"MangoCzJ36AjZyKwVj3VnYU4GTonjfVEnJmvvWaxLac","decimals":6,"rootKey":"8HjXYFntHMDNJKCJpHFufDaFYXfuAk6c6odfFnWc4xWy","nodeKeys":["8XZx15vqdUbt3eVTXsxPfEMS3o2KXJ5sM7G2qXmmkETk"]},{"symbol":"BTC","mintKey":"9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E","decimals":6,"rootKey":"8VwAANqu3t4KQKpMq7wrS6yg5GTHwJBFsrK4Tk2cFN3q","nodeKeys":["7CfvGCV7qMf7im7mcqftZxQZGTweGappvL1maH7PMZ3Q"]},{"symbol":"ETH","mintKey":"2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk","decimals":6,"rootKey":"FDpHjPQnUkmYVpAEVBpzb3sQgjZM7fanJoRb1VVtjF6u","nodeKeys":["B6mYWs6PKda8DtJwvkvk2UV88NCChdmFGhcWSrgxY5vb"]},{"symbol":"SOL","mintKey":"So11111111111111111111111111111111111111112","decimals":9,"rootKey":"7jH1uLmiB2zbHNe6juZZYjQCrvquakTwd3yMaQpeP8rR","nodeKeys":["2bqJYcA1A8gw4qJFjyE2G4akiUunpd9rP6QzfnxHqSqr"]},{"symbol":"USDT","mintKey":"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","decimals":6,"rootKey":"4GYDmgvMpBx2n2iSmaS1xhZnwebR2gJ5V7UYUBA1PkJi","nodeKeys":["FYFJ4YHDEJnX7yVPoejUTAcKstnovTZpLq5zWAM7c6Uz"]},{"symbol":"SRM","mintKey":"SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt","decimals":6,"rootKey":"AjMbjA1JsHh574Eo1RRV2XXtB8St139oBXKPXPo2HLdU","nodeKeys":["qsGcM7VLiywm1wvvvjzWd7SynnyMcg8Pc7QxKUW4CUY"]},{"symbol":"RAY","mintKey":"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R","decimals":6,"rootKey":"7TNHrBUDH3FL9uy9hxjmRcKNNaCBG9sYPuDJSJuj3LGs","nodeKeys":["GDNCSCaVzhD2L164GwUv8JqTdaHCuYGg21JjXQDtuofk"]},{"symbol":"FTT","mintKey":"AGFEad2et2ZJif9jaGpdMixQqvW5i81aBdvKe7PHNfz3","decimals":6,"rootKey":"9i35wTe5W9vVLUJnzuhnFZbLThYJr2NF38MhEGVHJY5T","nodeKeys":["8Q9JVDynPbyqXfnDXT31mncD7LAnoHAoSv2ywxZHjPFJ"]},{"symbol":"MSOL","mintKey":"mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So","decimals":9,"rootKey":"5AWnWCNKSzdpgyJSD3NWdarMazCGX2t8D4NU5xwSEVjC","nodeKeys":["H9jHd5YsHN4fg17aqng2WzJGTyinMDyQ2jin3iuiXPVD"]},{"symbol":"BNB","mintKey":"9gP2kCy3wA1ctvYWQk75guqXuHfrEomqydHLtcTCqiLa","decimals":8,"rootKey":"HBvFxqx8pX8GGMExXvKssY8ZK6FjoB2YHWg8UhuVdDTx","nodeKeys":["2e9qKNKdAQw9pmwxoCiKYyeKiaDetBiashktGTPgzSa8"]},{"symbol":"AVAX","mintKey":"KgV1GvrHQmRBY8sHQQeUKwTm2r2h8t4C8qt12Cw1HVE","decimals":8,"rootKey":"5CAS4x9S9DRWMPz4YuY9PBiXRhhN9ZXjb7JtorvaSkCV","nodeKeys":["7FPdLxS1m9PhuFbCpQi1FJFNXmPFuwnbDXs16HxA1AEt"]},{"symbol":"GMT","mintKey":"7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx","decimals":9,"rootKey":"HdFSXT8HSooTByieyKhuujBsvHkXR9zA4ZFmiToQhqEg","nodeKeys":["BsyDMxu87YHUJXYHundMGp5YmpD2J3xm62TdaQyryp8f"]}],"oracles":[{"symbol":"MNGO","publicKey":"49cnp1ejyvQi3CJw3kKXNCDGnNbWDuZd3UG3Y2zGvQkX"},{"symbol":"BTC","publicKey":"GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU"},{"symbol":"ETH","publicKey":"JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB"},{"symbol":"SOL","publicKey":"H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG"},{"symbol":"USDT","publicKey":"3vxLXJqLqF3JG5TCbYycbKWRBbCJQLxQmBGCkyqEEefL"},{"symbol":"SRM","publicKey":"3NBReDRTLKMQEKiLD5tGcx4kXbTf88b7f2xLS9UuGjym"},{"symbol":"RAY","publicKey":"AnLf8tVYCM816gmBjiy8n53eXKKEDydT5piYjjQDPgTB"},{"symbol":"FTT","publicKey":"8JPJJkmDScpcNmBRKGZuPuG2GYAveQgP3t5gFuMymwvF"},{"symbol":"ADA","publicKey":"3pyn4svBbxJ9Wnn3RVeafyLWfzie6yC5eTig2S62v9SC"},{"symbol":"MSOL","publicKey":"E4v1BBgoso9s64TQvmyownAVJbhbEPGyzA3qn4n46qj9"},{"symbol":"BNB","publicKey":"4CkQJBxhU8EZ2UjhigbtdaPbpTe6mqf811fipYBFbSYN"},{"symbol":"AVAX","publicKey":"C2GXZT21UUm6G3J4N26h6d3tpgfUhh6ok5aNi24K88Wu"},{"symbol":"GMT","publicKey":"DZYZkJcFJThN9nZy4nK3hrHra1LaWeiyoZ9SMdLFEFpY"}],"perpMarkets":[{"name":"MNGO-PERP","publicKey":"4nfmQP3KmUqEJ6qJLsS3offKgE96YUB4Rp7UQvm2Fbi9","baseSymbol":"MNGO","baseDecimals":6,"quoteDecimals":6,"marketIndex":0,"bidsKey":"4XU8wH9ivp7x7ohhTbWUZabg5WVkF7sBtqQCmFEV6qiN","asksKey":"4ZkS7ZZkxfsC3GtvvsHP3DFcUeByU9zzZELS4r8HCELo","eventsKey":"7orixrhZpjvofZGWZyyLFxSEt2tfFiost5kHEzd7jdet"},{"name":"BTC-PERP","publicKey":"DtEcjPLyD4YtTBB4q8xwFZ9q49W89xZCZtJyrGebi5t8","baseSymbol":"BTC","baseDecimals":6,"quoteDecimals":6,"marketIndex":1,"bidsKey":"Bc8XaK5UTuDSCBtiESSUxBSb9t6xczhbAJnesPamMRir","asksKey":"BkWRiarqxP5Gwx7115LQPbjRmr3NjuSRXWBnduXXLGWR","eventsKey":"7t5Me8RieYKsFpfLEV8jnpqcqswNpyWD95ZqgUXuLV8Z"},{"name":"ETH-PERP","publicKey":"DVXWg6mfwFvHQbGyaHke4h3LE9pSkgbooDSDgA4JBC8d","baseSymbol":"ETH","baseDecimals":6,"quoteDecimals":6,"marketIndex":2,"bidsKey":"DQv2sWhaHYbKrobHH6jAdkAXw13mnDdM9hVfRQtrUcMe","asksKey":"8NhLMV6huneGAqijuUgUFSshbAfXxdNj6ZMHSLb9aW8K","eventsKey":"9vDfKNPJkCvQv9bzR4JNTGciQC2RVHPVNMMHiVDgT1mw"},{"name":"SOL-PERP","publicKey":"2TgaaVoHgnSeEtXvWTx13zQeTf4hYWAMEiMQdcG6EwHi","baseSymbol":"SOL","baseDecimals":9,"quoteDecimals":6,"marketIndex":3,"bidsKey":"Fu8q5EiFunGwSRrjFKjRUoMABj5yCoMEPccMbUiAT6PD","asksKey":"9qUxMSWBGAeNmXusQHuLfgSuYJqADyYoNLwZ63JJSi6V","eventsKey":"31cKs646dt1YkA3zPyxZ7rUAkxTBz279w4XEobFXcAKP"},{"name":"SRM-PERP","publicKey":"4GkJj2znAr2pE2PBbak66E12zjCs2jkmeafiJwDVM9Au","baseSymbol":"SRM","baseDecimals":6,"quoteDecimals":6,"marketIndex":5,"bidsKey":"E8Dv9giJQgPqNaBxF9WKDUhJD7GZ5fwXfF1NQfeCCaQp","asksKey":"GMv773oHiNd4jaj8uQvr1kbzroY5BDK7QTNHD14ATjGJ","eventsKey":"BXSPmdHWP6fMqsCsT6kG8UN9uugAJxdDkQWy87njUQnL"},{"name":"RAY-PERP","publicKey":"6WGoQr5mJAEpYCdX6qjju2vEnJuD7e8ZeYes7X7Shi7E","baseSymbol":"RAY","baseDecimals":6,"quoteDecimals":6,"marketIndex":6,"bidsKey":"9AHm1nsxG1e3zkHnFLzYUXd17qnCgM7aFJDDApXXrhVU","asksKey":"43dVtcFTgDHHr32V6vhvxU2gg11wK7oyK8DdfTQ2pQsy","eventsKey":"Css2MQhEvXMTKjp9REVZR9ZyUAYAZAPrnDvRoPxrQkeN"},{"name":"FTT-PERP","publicKey":"AhgEayEGNw46ALHuC5ASsKyfsJzAm5JY8DWqpGMQhcGC","baseSymbol":"FTT","baseDecimals":6,"quoteDecimals":6,"marketIndex":8,"bidsKey":"5xihpD8yz9vt95WSHVpW8pVykffW7h5VHb2LkhGBMUck","asksKey":"G9HtAEwHRYBrz9ZpdDJH8Qs1hEZqNJ1BPm3veBsmEXbX","eventsKey":"5pHAhyEphQRVvLqvYF7dziofR52yZWuq8DThQFJvJ7r5"},{"name":"ADA-PERP","publicKey":"Bh9UENAncoTEwE7NDim8CdeM1GPvw6xAT4Sih2rKVmWB","baseSymbol":"ADA","baseDecimals":6,"quoteDecimals":6,"marketIndex":9,"bidsKey":"ivYhvYgribqdCzDg4m8fUF9ejgJHE4mnRUseR4d9khN","asksKey":"F4UTmEXxEUgGSL7P3HePAuz3PsXvx6hWr256vqVnzxKE","eventsKey":"G6Dsw9KnP4G38hePtedTH6gDfDQmPJGJw8zipBJvKc12"},{"name":"BNB-PERP","publicKey":"CqxX2QupYiYafBSbA519j4vRVxxecidbh2zwX66Lmqem","baseSymbol":"BNB","baseDecimals":8,"quoteDecimals":6,"marketIndex":11,"bidsKey":"6Pg82x4SSejLny5v1wSWs7QhnheLDq7EX1pMVY8LTsB3","asksKey":"6n2ooaNFP6X54ZiwDskhhVeW81F4hHNEibsJ8vfjVNDU","eventsKey":"GmX4qXMpXvs1DuUXNB4eqL1rfF8LeYEjkKgpFeYsm55n"},{"name":"AVAX-PERP","publicKey":"EAC7jtzsoQwCbXj1M3DapWrNLnc3MBwXAarvWDPr2ZV9","baseSymbol":"AVAX","baseDecimals":8,"quoteDecimals":6,"marketIndex":12,"bidsKey":"BD1vpQjLXx7Rmd5n1SFNTLcwujPYTnFpoaArvPd9ixB9","asksKey":"8Q11iGHXFTr267J4bgbeEeWPYPSANVcs6NQWHQK4UrNs","eventsKey":"5Grgo9kLu692SUcJ6S7jtbi1WkdwiyRWgThAfN1PcvbL"},{"name":"GMT-PERP","publicKey":"3hBYgfMHogR8X2JkpxvT8HMtUSbrE2PE61q64gZkWArr","baseSymbol":"GMT","baseDecimals":9,"quoteDecimals":6,"marketIndex":14,"bidsKey":"67jnTtxDdDqz6R18Do3AUUjBbZT3yysprGLhaucyKd93","asksKey":"DstVrGA3CBcq1r7op4yU7dX3sirzSgz1uicn63aYBMGz","eventsKey":"J2WYiw67VeGkPvmM3fi65H9KxDgCf79fNwspcD3ycubK"}],"spotMarkets":[{"name":"MNGO/USDC","publicKey":"3d4rzwpy9iGdCZvgxcu7B1YocYffVLsQXPXkBZKt2zLc","baseSymbol":"MNGO","baseDecimals":6,"quoteDecimals":6,"marketIndex":0,"bidsKey":"3nAdH9wTEhPoW4e2s8K2cXfn4jZH8FBCkUqtzWpsZaGb","asksKey":"HxbWm3iabHEFeHG9LVGYycTwn7aJVYYHbpQyhZhAYnfn","eventsKey":"H1VVmwbM96BiBJq46zubSBm6VBhfM2FUhLVUqKGh1ee9"},{"name":"BTC/USDC","publicKey":"A8YFbxQYFVqKZaoYJLLUVcQiWP7G2MeEgW5wsAQgMvFw","baseSymbol":"BTC","baseDecimals":6,"quoteDecimals":6,"marketIndex":1,"bidsKey":"6wLt7CX1zZdFpa6uGJJpZfzWvG6W9rxXjquJDYiFwf9K","asksKey":"6EyVXMMA58Nf6MScqeLpw1jS12RCpry23u9VMfy8b65Y","eventsKey":"6NQqaa48SnBBJZt9HyVPngcZFW81JfDv9EjRX2M4WkbP"},{"name":"ETH/USDC","publicKey":"4tSvZvnbyzHXLMTiFonMyxZoHmFqau1XArcRCVHLZ5gX","baseSymbol":"ETH","baseDecimals":6,"quoteDecimals":6,"marketIndex":2,"bidsKey":"8tFaNpFPWJ8i7inhKSfAcSestudiFqJ2wHyvtTfsBZZU","asksKey":"2po4TC8qiTgPsqcnbf6uMZRMVnPBzVwqqYfHP15QqREU","eventsKey":"Eac7hqpaZxiBtG4MdyKpsgzcoVN6eMe9tAbsdZRYH4us"},{"name":"SOL/USDC","publicKey":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusDBzvT","baseSymbol":"SOL","baseDecimals":9,"quoteDecimals":6,"marketIndex":3,"bidsKey":"14ivtgssEBoBjuZJtSAPKYgpUK7DmnSwuPMqJoVTSgKJ","asksKey":"CEQdAFKdycHugujQg9k2wbmxjcpdYZyVLfV9WerTnafJ","eventsKey":"5KKsLVU6TcbVDK4BS6K1DGDxnh4Q9xjYJ8XaDCG5t8ht"},{"name":"USDT/USDC","publicKey":"77quYg4MGneUdjgXCunt9GgM1usmrxKY31twEy3WHwcS","baseSymbol":"USDT","baseDecimals":6,"quoteDecimals":6,"marketIndex":4,"bidsKey":"37m9QdvxmKRdjm3KKV2AjTiGcXMfWHQpVFnmhtb289yo","asksKey":"AQKXXC29ybqL8DLeAVNt3ebpwMv8Sb4csberrP6Hz6o5","eventsKey":"9MgPMkdEHFX7DZaitSh6Crya3kCCr1As6JC75bm3mjuC"},{"name":"SRM/USDC","publicKey":"ByRys5tuUWDgL73G8JBAEfkdFf8JWBzPBDHsBVQ5vbQA","baseSymbol":"SRM","baseDecimals":6,"quoteDecimals":6,"marketIndex":5,"bidsKey":"AuL9JzRJ55MdqzubK4EutJgAumtkuFcRVuPUvTX39pN8","asksKey":"8Lx9U9wdE3afdqih1mCAXy3unJDfzSaXFqAvoLMjhwoD","eventsKey":"6o44a9xdzKKDNY7Ff2Qb129mktWbsCT4vKJcg2uk41uy"},{"name":"RAY/USDC","publicKey":"2xiv8A5xrJ7RnGdxXB42uFEkYHJjszEhaJyKKt4WaLep","baseSymbol":"RAY","baseDecimals":6,"quoteDecimals":6,"marketIndex":6,"bidsKey":"Hf84mYadE1VqSvVWAvCWc9wqLXak4RwXiPb4A91EAUn5","asksKey":"DC1HsWWRCXVg3wk2NndS5LTbce3axwUwUZH1RgnV4oDN","eventsKey":"H9dZt8kvz1Fe5FyRisb77KcYTaN8LEbuVAfJSnAaEABz"},{"name":"FTT/USDC","publicKey":"2Pbh1CvRVku1TgewMfycemghf6sU9EyuFDcNXqvRmSxc","baseSymbol":"FTT","baseDecimals":6,"quoteDecimals":6,"marketIndex":8,"bidsKey":"9HTDV2r7cQBUKL3fgcJZCUfmJsKA9qCP7nZAXyoyaQou","asksKey":"EpnUJCMCQNZi45nCBoNs6Bugy67Kj3bCSTLYPfz6jkYH","eventsKey":"2XHxua6ZaPKpCGUNvSvTwc9teJBmexp8iMWCLu4mtzGb"},{"name":"MSOL/USDC","publicKey":"6oGsL2puUgySccKzn9XA9afqF217LfxP5ocq4B3LWsjy","baseSymbol":"MSOL","baseDecimals":9,"quoteDecimals":6,"marketIndex":10,"bidsKey":"8qyWhEcpuvEsdCmY1kvEnkTfgGeWHmi73Mta5jgWDTuT","asksKey":"PPnJy6No31U45SVSjWTr45R8Q73X6bNHfxdFqr2vMq3","eventsKey":"BC8Tdzz7rwvuYkJWKnPnyguva27PQP5DTxosHVQrEzg9"},{"name":"BNB/USDC","publicKey":"4UPUurKveNEJgBqJzqHPyi8DhedvpYsMXi7d43CjAg2f","baseSymbol":"BNB","baseDecimals":8,"quoteDecimals":6,"marketIndex":11,"bidsKey":"XHJx6VrtEjpHhTQVt7KSapsTf63BqrStuFd3X3LSovP","asksKey":"4wZkXYKNcnkkf2ALX3ktRDCuj8Sj1dd2L4APxcKDpgwG","eventsKey":"DK7Jw2fZCbTVDF191eXywDFymmbXqGUp4VuERiX6RAR4"},{"name":"AVAX/USDC","publicKey":"E8JQstcwjuqN5kdMyUJLNuaectymnhffkvfg1j286UCr","baseSymbol":"AVAX","baseDecimals":8,"quoteDecimals":6,"marketIndex":12,"bidsKey":"925NuYb44V63wNRooM5tBFNCXM5daD72m6KDxoCmYpYX","asksKey":"q2eUYuqJeBD6DndxDQ2tEuFqAe6j9j9jMtMnkkKU5P9","eventsKey":"HY7ZpmQ6VXLHKxN4cruFKMTNu42EbjPEDthyGPnsYYHq"},{"name":"GMT/USDC","publicKey":"9KLmeRBpT4chsxkJatfDdzrtTBvBastYp9wMe712ASCg","baseSymbol":"GMT","baseDecimals":9,"quoteDecimals":6,"marketIndex":14,"bidsKey":"EzVutiMEE8gyeyaiQ4jUrSn4LXwrDmRkuNK4wcRctJxW","asksKey":"Eg2PKQ3BHWsRCMLZQaJrAXMCEWoEsNXPY8BLLk5AHsrM","eventsKey":"92AfWEUqA2RQjD46otvaXEA3CQ4qBFi2K8AmCBwwghHG"}]},{"cluster":"devnet","name":"devnet.3","publicKey":"5vQp48Wx55Ft1PUAx8qWbsioNaLeXWVkyCq2XpQSv34M","quoteSymbol":"USDC","mangoProgramId":"4skJ85cdxQAFVKbcGgfun8iZPL7BadVYXG3kGEGkufqA","serumProgramId":"DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY","tokens":[{"symbol":"USDC","mintKey":"8FRFC6MoGGkMFQwngccyu69VnYbzykGeez7ignHVAFSN","decimals":6,"rootKey":"JBwwKNaqwyWVd5W22m5umAGUrqG4Lf7N6oWrtQEmBg6c","nodeKeys":["2XNwQscYHLeRaHY3ZUPfhG8pAy47f3eXazZMZK19EKPn"]},{"symbol":"MNGO","mintKey":"Bb9bsTQa1bGEtQ5KagGkvSHyuLqDWumFUcRqFusFNJWC","decimals":6,"rootKey":"HfV52Z5rjY4PYxTEHiks8m6jTwxyLM24RxW3A1AFtWpn","nodeKeys":["EEUVfNXkLNCzsEmq4pS5aXpePA8i5yGfgFNaU5SbrQA8"]},{"symbol":"ETH","mintKey":"Cu84KB3tDL6SbFgToHMLYVDJJXdJjenNzSKikeAvzmkA","decimals":6,"rootKey":"CbD1bumpdddi21TZJNsGaxkEpV1pjPVdvKYyDGcNpJzz","nodeKeys":["GYVB1Ft1vWBqiDGUooyBgBdo1NiKhqbgJ9dPdRDGWq3a"]},{"symbol":"SOL","mintKey":"So11111111111111111111111111111111111111112","decimals":9,"rootKey":"HCwTWCLZDeveaW7V41i5aJ2Fuq7D51iS6WDUS4occA5a","nodeKeys":["2trzMWmfbhMFu1bCKZ1axDybMPPa7SXAR1Q4JYzybuPb"]},{"symbol":"SRM","mintKey":"AvtB6w9xboLwA145E221vhof5TddhqsChYcx7Fy3xVMH","decimals":6,"rootKey":"36YZQGCXTthrAwkpEZgh1PQLh61As4gv2V6VzH2pjoeQ","nodeKeys":["aRv6uLBdSwKpeisEsXYwr5VjgopaXbFSnJkfemdspXi"]},{"symbol":"RAY","mintKey":"3YFQ7UYJ7sNGpXTKBxM3bYLVxKpzVudXAe4gLExh5b3n","decimals":6,"rootKey":"8cogBuTCmkVDduaS9Hb92DYSEj9rpXa6TuPrCyb8ao9U","nodeKeys":["B4Vk7UbJo5sySP3zDsv5rP5kx7sUQsXqx5BxQjQdeJQ5"]},{"symbol":"USDT","mintKey":"DAwBSXe6w9g37wdE2tCrFbho3QHKZi4PjuBytQCULap2","decimals":6,"rootKey":"DE9Wn6mUeTxaYo3qWdthHo4amrxSApNtmaAxcP8kyCs7","nodeKeys":["FxJN7rzcSSoUhPBD2J3e1YzJC6PWpvrZK6MFNSKJ4NqG"]}],"oracles":[{"symbol":"MNGO","publicKey":"8k7F9Xb36oFJsjpCKpsXvg4cgBRoZtwNTc3EzG5Ttd2o"},{"symbol":"BTC","publicKey":"bupSBQ8eyULSzYHfwfaejFxsUjfTX3PMLC5y72daKQu"},{"symbol":"ETH","publicKey":"EdVCmQ9FSPcVe5YySXDPCRmc8aDQLKJ9xvYBMZPie1Vw"},{"symbol":"SOL","publicKey":"J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix"},{"symbol":"SRM","publicKey":"992moaMQKs32GKZ9dxi8keyM2bUmbrwBZpK4p2K6X5Vs"},{"symbol":"RAY","publicKey":"4CLJtTJaVJUTHPkTyhq2EwNKiYQYyWxTwFw1rCyZVjPr"},{"symbol":"USDT","publicKey":"38xoQ4oeJCBrcVvca2cGk7iV1dAfrmTR1kmhSCJQ8Jto"}],"perpMarkets":[],"spotMarkets":[{"name":"MNGO/USDC","publicKey":"2T6koUWudFgY2gavW8EDyBCnNpRU3spyiKTLpDc79Ma9","baseSymbol":"MNGO","baseDecimals":6,"quoteDecimals":6,"marketIndex":0,"bidsKey":"98guKbHBvEQsdXtwPVXhqzVQddMDxvYKExHiDBQjjEgM","asksKey":"AQgDsKzVQT9enwebZCV1GgaffCsjUpsuj6xeUFxuza42","eventsKey":"2iGo6GWEPBUuuruWofGwvzZMMos4aPJKDLbMmTt9ZBXQ"},{"name":"ETH/USDC","publicKey":"HpDBtFHwrwJ1CzDmvffd5LCdeuXt8iaN9zMFgJGdQ6Eq","baseSymbol":"ETH","baseDecimals":6,"quoteDecimals":6,"marketIndex":2,"bidsKey":"CFT975GqsYXN7GH8mkTJDGFXuWBV1ZyAx9wCbhdgPwfn","asksKey":"5eVxSdwkaRpUpeJTBkSRych5pYqJYnzQncwUbodiZBte","eventsKey":"HvcAE6cUbpWr2fKPTkHTjQjiCgFkQr4YP6m6bprn6EYT"},{"name":"SOL/USDC","publicKey":"HCGGqktRV1UXFKHoqEkdf9HqXs6Rfp7xSdwLcvHUy8KD","baseSymbol":"SOL","baseDecimals":9,"quoteDecimals":6,"marketIndex":3,"bidsKey":"372WbS47X4FQGk49LuQG38QUmEAkds4dKExfqxKneX3M","asksKey":"7j3wRRvrm2RXwkrxsuoiCQGG66S6qboJQGjW3AKsckuK","eventsKey":"FuCL1VHY2zmhHs5xrTePJSyShiwcNPLdRcXDeovGvovN"},{"name":"SRM/USDC","publicKey":"A6WkZRrymq9ANeqU5ZbFjrUzQ9yDKx1C9SnDk5Hd3fU4","baseSymbol":"SRM","baseDecimals":6,"quoteDecimals":6,"marketIndex":4,"bidsKey":"7FVZb6UQ9ouLVwSs77vKsPDR5e5rsM2UV7tuDe6ZAz9Z","asksKey":"3t7KeCcS7j3q2NYTMQgDecMYeYfPKqkdd6jU16K3SUBa","eventsKey":"D2AZ12UaFPnVMqNm1VfaJffRV9i6niwTc4Y3SmJyTsu8"},{"name":"RAY/USDC","publicKey":"yVQ2x8HEjFf8P2JcknfhnzaHMZkPP8ugffFRMH168GC","baseSymbol":"RAY","baseDecimals":6,"quoteDecimals":6,"marketIndex":5,"bidsKey":"tEAhXz8iHoRUMCA4L494aj1v9BieEzf219g1ud2hAuB","asksKey":"8An5p9V1ZPBtowLWgtphDDaRyJFFQdVXhbE4cfh7PrsX","eventsKey":"EtZgfLD6rPDrge22Pt5g4pe2FFrro2eCfZ5qKYapZ1FP"},{"name":"USDT/USDC","publicKey":"25GbwfhHRzttgjXemtnZZGdogkV8ef9rs9NCSXzZAJDY","baseSymbol":"USDT","baseDecimals":6,"quoteDecimals":6,"marketIndex":6,"bidsKey":"CQnw1aiR4qG4YxmZfK7dZBUZAUwhga4by3p5HCVMJjJ3","asksKey":"7Rg4E9Qa8qbkVXKesrBu43LEir2u9Yj83RgMVnZyk2Ty","eventsKey":"2Bso4AYM4isogoaAH2gfdKip7wdSWBWYDb8f3fhGodaC"}]},{"cluster":"devnet","name":"devnet.2","publicKey":"Ec2enZyoC4nGpEfu2sUNAa2nUGJHWxoUWYSEJ2hNTWTA","quoteSymbol":"USDC","mangoProgramId":"4skJ85cdxQAFVKbcGgfun8iZPL7BadVYXG3kGEGkufqA","serumProgramId":"DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY","tokens":[{"symbol":"USDC","mintKey":"8FRFC6MoGGkMFQwngccyu69VnYbzykGeez7ignHVAFSN","decimals":6,"rootKey":"HUBX4iwWEUK5VrXXXcB7uhuKrfT4fpu2T9iZbg712JrN","nodeKeys":["J2Lmnc1e4frMnBEJARPoHtfpcohLfN67HdK1inXjTFSM"]},{"symbol":"MNGO","mintKey":"Bb9bsTQa1bGEtQ5KagGkvSHyuLqDWumFUcRqFusFNJWC","decimals":6,"rootKey":"CY4nMV9huW5KCYFxWChrmoLwGCsZiXoiREeo2PMrBm5o","nodeKeys":["6rkPNJTXF37X6Pf5ct5Y6E91PozpZpZNNU1AGATomKjD"]},{"symbol":"BTC","mintKey":"3UNBZ6o52WTWwjac2kPUb4FyodhU1vFkRJheu1Sh2TvU","decimals":6,"rootKey":"BeEoyDq1v2DYJCoXDQAJKfmrsoRRvfmV856f2ijkXbtp","nodeKeys":["4X3nP921qyh6BKJSAohKGNCykSXahFFwg1LxtC993Fai"]},{"symbol":"ETH","mintKey":"Cu84KB3tDL6SbFgToHMLYVDJJXdJjenNzSKikeAvzmkA","decimals":6,"rootKey":"AxwY5sgwSq5Uh8GD6A6ZtSzGd5fqvW2hwgGLLgZ4v2eW","nodeKeys":["3FPjawEtvrwvwtAetaURTbkkucu9BJofxWZUNPGHJtHg"]},{"symbol":"SOL","mintKey":"So11111111111111111111111111111111111111112","decimals":9,"rootKey":"8GC81raaLjhTx3yedctxCJW46qdmmSRybH2s1eFYFFxT","nodeKeys":["7mYqCavd1K24fnL3oKTpX3YM66W5gfikmVHJWM3nrWKe"]},{"symbol":"SRM","mintKey":"AvtB6w9xboLwA145E221vhof5TddhqsChYcx7Fy3xVMH","decimals":6,"rootKey":"73W29LAZog2zSyE1uNYivBW8SMZQX3WBX4qfTMrMJxW2","nodeKeys":["9wkpWmkSUSn9fitLhVh12cLbiDa5Bbhf6ZBGmPtcdMqN"]},{"symbol":"RAY","mintKey":"3YFQ7UYJ7sNGpXTKBxM3bYLVxKpzVudXAe4gLExh5b3n","decimals":6,"rootKey":"49S76N83tSBBozugLtNYrMojFqDb3VvYq4wBB6bcAhfV","nodeKeys":["JBHBTED3ttzk5u3U24txdjBFadm4Dnohb7g2pwcxU4rx"]},{"symbol":"USDT","mintKey":"DAwBSXe6w9g37wdE2tCrFbho3QHKZi4PjuBytQCULap2","decimals":6,"rootKey":"7JTHE8C1kvB4h67RVvhdHjDqHXsWkSeoKcBsHV7wVhu","nodeKeys":["ERkKh9yUKzJ3kkHWhMNd3xGaync11TpzQiDFukEatHEQ"]}],"oracles":[{"symbol":"MNGO","publicKey":"8k7F9Xb36oFJsjpCKpsXvg4cgBRoZtwNTc3EzG5Ttd2o"},{"symbol":"BTC","publicKey":"HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J"},{"symbol":"ETH","publicKey":"EdVCmQ9FSPcVe5YySXDPCRmc8aDQLKJ9xvYBMZPie1Vw"},{"symbol":"SOL","publicKey":"J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix"},{"symbol":"SRM","publicKey":"992moaMQKs32GKZ9dxi8keyM2bUmbrwBZpK4p2K6X5Vs"},{"symbol":"RAY","publicKey":"4WXvuax8VeqhFZeWQ1d9Nx7FHt9YnePahPPvSrf59Nbp"},{"symbol":"USDT","publicKey":"38xoQ4oeJCBrcVvca2cGk7iV1dAfrmTR1kmhSCJQ8Jto"},{"symbol":"ADA","publicKey":"8oGTURNmSQkrBS1AQ5NjB2p8qY34UVmMA9ojrw8vnHus"},{"symbol":"FTT","publicKey":"6vivTRs5ZPeeXbjo7dfburfaYDWoXjBtdtuYgQRuGfu"},{"symbol":"AVAX","publicKey":"6npJ7pCBQ1YkaF7wEyu5sfDNN1aHXnvhxh1z9GySKCEs"},{"symbol":"BNB","publicKey":"GwzBgrXb4PG59zjce24SF2b9JXbLEjJJTBkmytuEZj1b"},{"symbol":"MATIC","publicKey":"5wZ8TQrizdWp4LKwBEPaer4AaNeLiPcQYuy5ddSr2Zfj"}],"perpMarkets":[{"name":"MNGO-PERP","publicKey":"98wPi7vBkiJ1sXLPipQEjrgHYcMBcNUsg9avTyWUi26j","baseSymbol":"MNGO","baseDecimals":6,"quoteDecimals":6,"marketIndex":0,"bidsKey":"5Zpfa8VbFKBJQFueomXz82EjbbtP6nFFQmBkHPCxfKpb","asksKey":"4Z9xHcCUMY9QLevHu3JpzxnwiHzzaQACMJERZ1XVJcSa","eventsKey":"uaUCSQejWYrDeYSuvn4As4kaCwJ2rLnRQSsSjY3ogZk"},{"name":"ETH-PERP","publicKey":"8jKPf3KJKWvvSbbYnunwZYv62UoRPpyGb93NWLaswzcS","baseSymbol":"ETH","baseDecimals":6,"quoteDecimals":6,"marketIndex":2,"bidsKey":"6jGBscmZgRXk6oVLWbnQDpRftmzrDVu82TARci9VHKuW","asksKey":"FXSvghvoaWFHRXzWUHi5tjK9YhgcPgMPpypFXBd4Aq3r","eventsKey":"8WLv5fKLYkyZpFG74kRmp2RALHQFcNKmH7eJn8ebHC13"},{"name":"SOL-PERP","publicKey":"58vac8i9QXStG1hpaa4ouwE1X7ngeDjY9oY7R15hcbKJ","baseSymbol":"SOL","baseDecimals":9,"quoteDecimals":6,"marketIndex":3,"bidsKey":"7HRgm8iXEDx2TmSETo3Lq9SXkF954HMVKNiq8t5sKvQS","asksKey":"4oNxXQv1Rx3h7aNWjhTs3PWBoXdoPZjCaikSThV4yGb8","eventsKey":"CZ5MCRvkN38d5pnZDDEEyMiED3drgDUVpEUjkuJq31Kf"},{"name":"ADA-PERP","publicKey":"Ai2579GtT3mYEu6LDB3FoZxJT7tiuo91t1joreQTfj9p","baseSymbol":"ADA","baseDecimals":6,"quoteDecimals":6,"marketIndex":7,"bidsKey":"5ugnXufA13HVgY6P9QLkFiSR6jy6XUv96WLbDV2Sf5i5","asksKey":"45MdNs8jpedfHLaHvL7nyfhHSwHXzTYzPQvR2FAnXG1p","eventsKey":"5v5fz2cCSy2VvrgVf5Vu7PF23RiZjv6BL36bgg48bA1c"},{"name":"FTT-PERP","publicKey":"8fKNzMe22bZ6H9TP8KpyM8B6b6DhZQyNmodChvQRbV8P","baseSymbol":"FTT","baseDecimals":6,"quoteDecimals":6,"marketIndex":8,"bidsKey":"78fRmLeyvMQ96GwJuusxN5Zn2QKbYh752GoAGc2qVE6q","asksKey":"9GTHBjPNUBBWuqhYinxwqdesW8amzFBCAVS96waKkE5L","eventsKey":"7rswj7FVZcMYUKxcTLndZhWBmuVNc2GuxqjuXU8KcPWv"},{"name":"AVAX-PERP","publicKey":"FYCrDJEC1FxEtSqwvqJz1nL4wSBsBWUMuYvRHV8CTJWp","baseSymbol":"AVAX","baseDecimals":9,"quoteDecimals":6,"marketIndex":9,"bidsKey":"9J1Etaw9AbUVr3dXT3ZZweUQC5StCkTVSYG7GDdWucFy","asksKey":"CESZWBf6Yry4PmXZeX3kC5Xdc5s7VRLCt342FmSYf633","eventsKey":"4b7NqjqWoQoQh9V3dubfjkLPQVNJijwAwr7D9q6vTqqd"},{"name":"BNB-PERP","publicKey":"3Le8zLUKsa1kVr1Uq63DsStVdaekp3pJzcF8GaZpauK9","baseSymbol":"BNB","baseDecimals":8,"quoteDecimals":6,"marketIndex":11,"bidsKey":"GqwmfoAxgJLDDs5x1K6u1YVkHXSjPKG4GgwFoAgfGH1G","asksKey":"H57z5imzrExpqYJ4WP4MKEg8GyMV2VTQAbF25DEP9i7k","eventsKey":"96Y87LTz5Mops7wdT9EJo1eM79XToKYJJmRZxNatV85d"},{"name":"MATIC-PERP","publicKey":"Fmg4wXV9hYUNjAYeLX1gDBSC3ucKcYJGrZQus64n9h9N","baseSymbol":"MATIC","baseDecimals":8,"quoteDecimals":6,"marketIndex":12,"bidsKey":"BTHVQCnVmdZThbpCtxiVSANuRnfd89uGsYAfaGbqsC39","asksKey":"GgQsLPiiq6JjNUe2kmKpHJNtNSEXk2kHcMZE2AbG6HDW","eventsKey":"77maU5zdfYayqhqjBi2ocosM4PXvPXxbps2Up7dxDsMR"}],"spotMarkets":[{"name":"MNGO/USDC","publicKey":"8W8Hrj16TZhM4RrFzHBuyWGbh396ig3hJtLPJRGmxPVG","baseSymbol":"MNGO","baseDecimals":6,"quoteDecimals":6,"marketIndex":0,"bidsKey":"Diynh714TQsx3qP2bsUuKZk8P31UtKWS9xU6jAZ7A97q","asksKey":"EhgGeUyv42vZkfWTi2Bxk53cUEW9WWDWrt3qURo8Jfzm","eventsKey":"5vE1a72aw1Hi6JR8sK6ny9mRetWExkryYVxPFQ7zNGY2"},{"name":"BTC/USDC","publicKey":"DW83EpHFywBxCHmyARxwj3nzxJd7MUdSeznmrdzZKNZB","baseSymbol":"BTC","baseDecimals":6,"quoteDecimals":6,"marketIndex":1,"bidsKey":"PuDcnQDEpoR3WwVAi8PqnHJxHbVEwiusM4PnyHEykFT","asksKey":"998DHpQmViDq67vMFKYYXgaHs3CJ5YHEBQSoiwxCjsCW","eventsKey":"CQxwLPMoqAwi5wcfkULzF6Fwh7cf4Aiz8tR6DY4NNCN1"},{"name":"ETH/USDC","publicKey":"BkAraCyL9TTLbeMY3L1VWrPcv32DvSi5QDDQjik1J6Ac","baseSymbol":"ETH","baseDecimals":6,"quoteDecimals":6,"marketIndex":2,"bidsKey":"ETf3PZi9VaBsfpMU5e3SAn4SMjkaM6tyrn2Td9N2kSRx","asksKey":"3pfYeG2GKSh8SSZJEEwjYqgaHwYkq5vvSDET2M33nQAf","eventsKey":"F43gimmdvBPQoGA4eDxt2N2ooiYWHvQ8pEATrtsArKuC"},{"name":"SOL/USDC","publicKey":"5xWpt56U1NCuHoAEtpLeUrQcxDkEpNfScjfLFaRzLPgR","baseSymbol":"SOL","baseDecimals":9,"quoteDecimals":6,"marketIndex":3,"bidsKey":"8ezpneRznTJNZWFSLeQvtPCagpsUVWA7djLSzqp3Hx4p","asksKey":"8gJhxSwbLJkDQbqgzbJ6mDvJYnEVWB6NHWEN9oZZkwz7","eventsKey":"48be6VKEq86awgUjfvbKDmEzXr4WNR7hzDxfF6ZPptmd"},{"name":"SRM/USDC","publicKey":"249LDNPLLL29nRq8kjBTg9hKdXMcZf4vK2UvxszZYcuZ","baseSymbol":"SRM","baseDecimals":6,"quoteDecimals":6,"marketIndex":4,"bidsKey":"5p39nxjdx9RXDVjSwTaej9oUgiLHeV8tfUn7PJoJRLgu","asksKey":"2sxkmiwvaMNtuh7eFQPMycJHrwrcJixDASXQFJx79y6C","eventsKey":"F66CSYP3TgxGjVongBJ7Cjbiq9j267Keos7cUUUbBZx7"},{"name":"RAY/USDC","publicKey":"5xhm43GzigfEh8XAo5PwgoKK3gFkRr2PUgzWAmLzUTv2","baseSymbol":"RAY","baseDecimals":6,"quoteDecimals":6,"marketIndex":5,"bidsKey":"BVDy8YmnbVtfidu8N5YJBDoHXf7vn5B6xnsV6ZLFnFdD","asksKey":"4QpxvtDNetYt4pbC8Ng66i6BZdkJEEtSux8HVdGKZbxh","eventsKey":"DgojAawYqQqp4Wn9RwahP6yXMNGXsAtBfnoLNqNaWeLy"},{"name":"USDT/USDC","publicKey":"E7ch7T7v4DTHcc2YF6ioQow4UPfubbSdpgYqyxoEhiMu","baseSymbol":"USDT","baseDecimals":6,"quoteDecimals":6,"marketIndex":6,"bidsKey":"ELwx9pggHdz9CKDpnyCg6L1b8U67WPGsQ4TTbNsLjZJc","asksKey":"Gr9rsX5uGCTDbhSPzCfrzufSt1mTCggSJAgPfwhBBX1r","eventsKey":"H1gJZngRXUtj7N91xnnydC39XqmbU8d2jQZxwqSf21jX"}]},{"cluster":"testnet","name":"testnet.0","publicKey":"8V7JSTBrHPHzNhMxvEPKLFsPs382mdxSJ7krhsn44JGm","quoteSymbol":"USDC","mangoProgramId":"BXhdkETgbHrr5QmVBT1xbz3JrMM28u5djbVtmTUfmFTH","serumProgramId":"3qx9WcNPw4jj3v1kJbWoxSN2ZAakwUXFu9HDr2QjQ6xq","tokens":[{"symbol":"USDC","mintKey":"HL4ZFMUcS5uoPe4cwbRk1xNfYMRTwoahVmf69VkDPJGS","decimals":6,"rootKey":"9KoJCDviY77ZNyLoh9rmMo1Hczq1Vi5aRbaNk2uprSBf","nodeKeys":["9Gmgig2tk4jrsxpkq8nWvSjcCAM8BqPXV8gPxocwKWTz"]},{"symbol":"MNGO","mintKey":"2hvukwp4UR9tqmCQhRzcsW9S2QBuU5Xcv5JJ5fUMmfvQ","decimals":6,"rootKey":"554bNs3LhkyDcEEKZJEfaLZADUo4ppEp19yuMbAqtgh6","nodeKeys":["4ioNEawYymdd2v39wsmKupMA1ucwGk4Cej7cdnNk2hE2"]},{"symbol":"BTC","mintKey":"ConQTBPzFgVCQp6FvXufs5ZpyWG1r6wLYf5EYzzaGX3U","decimals":6,"rootKey":"7JZU7ycWd5FGHRce44vs6tzcBveoeJPCymvN5GWj1SGr","nodeKeys":["AbLaJ8sw6LKjNxraT1rq7uDJRyxCcCRBS4WWx9c1JQwp"]},{"symbol":"ETH","mintKey":"AsYEqWmRyHPgocG35pu9EHduavgiUA5sU26m1oCEYJ3Y","decimals":6,"rootKey":"Cq2Mcfd9i17xEA2QUb3J25FEXfxkqYAhNTiX3sznWvTx","nodeKeys":["5VHy63Xo1ah4HABkzgvmVhtP7fhHPLoinczboMYkEdqb"]},{"symbol":"SOL","mintKey":"So11111111111111111111111111111111111111112","decimals":9,"rootKey":"3x1aZ7nZPmCMYus9ZnZHaz1D7o3GY3tMF1cYQk7VUpZa","nodeKeys":["3iub93kTVfAUzhPeff3g431aNorEdXKT44suZaqNKmum"]},{"symbol":"USDT","mintKey":"9F7fShLuDueXHcZ2xnxF5qtN1vFBRNWmgqeFgSz7boxW","decimals":6,"rootKey":"5S3CU67fJyMoxt3tMqE5yujn2d1Ps5DmniZ9KrAWEJSa","nodeKeys":["KSNytgnVnWoGwY7i73bJWGa5J2P5obEVw2ayv61cCH2"]},{"symbol":"SRM","mintKey":"5vGS1gUhHcHCWNFnQGJ8uRaWVknfFPHS8fgvomkHx5fh","decimals":6,"rootKey":"HrmDruCQBpXPEpKJF7wTTDR6KskfdRfXZkrp7pHbfvS8","nodeKeys":["Bq5mNuZpjRg8kdjWhi4pv5qYwAi6pS5ng5v2Au8YuDvD"]},{"symbol":"RAY","mintKey":"AAPkfrpqfJ1Sq6dEWEtJNN74YRi7YybSYxtmtx5QNxFe","decimals":6,"rootKey":"5afyVFtv9D31wHU1yEf4o96MqSmHJg7zFaJjzLuzC2KY","nodeKeys":["AZMwYh3Z9igqpvxYp7pXwfUgGsAGyPwDiVGGvDPB3Z6C"]},{"symbol":"COPE","mintKey":"4Jvv7evitAePYo61e1bfwrLvqtVSLLdwsvfqbMofzmv6","decimals":6,"rootKey":"4TRzqq1Q5itrZJxfhZS4SudERSi1EaGi7i5p4m8QY9fr","nodeKeys":["HnPMKeumjnXvaE6gvax3xmDq9bngs7XVysr841p6Tozg"]},{"symbol":"FTT","mintKey":"UHkzA7RwBwj8Rtuj74TmPJYLRuDXXVu7CV45mtbKdrM","decimals":6,"rootKey":"6MVuHyWd1BCyBVqZYqs4D6kpav2m82L8sXwvJx6KSL1N","nodeKeys":["GpCDNFR8PBLzXkpyvVaDSuucGg8hjtAEu3BucZmcy2W4"]},{"symbol":"MSOL","mintKey":"EHwfam2RkPGTBEEQrkFS9pt5KtmbYXdpVXhdisC4w6Jf","decimals":9,"rootKey":"7qcuSnemoe1A9uU6w7YsNzEgoLY7pyvgrisiajA2RAdE","nodeKeys":["C9RP4qiXF6jVfadbqV7g2ZRGkpcc22JdU476RbVNMyoY"]},{"symbol":"BNB","mintKey":"2zbgxXtobk1DD1v9NuDE4XJsftGx5sc8YEgfSBxHCgbV","decimals":8,"rootKey":"6SB9cGRt5N2Wahw55N1uH5XXE11P2qdcgYneqFfmd6TC","nodeKeys":["CdSRsdPCTrQ1rajnLjHpDWx7YvZKNoeKtNZ7Z2owPi7k"]},{"symbol":"AVAX","mintKey":"Ba7aMmNU1CsmR9JLUcnsFGFFePtvujzgPddja66tVooA","decimals":8,"rootKey":"BU1C6ZYD7BXSf7BNbYA8tyWfXBaffXBrbJsMahApqUhZ","nodeKeys":["CxVAPSaRSyhX6WKsHb8LQZyWQQ4jA5FyhPrgG7kSZiKY"]},{"symbol":"LUNA","mintKey":"E1uFVJjU3ZQCrDioMbLFjVMjeYQv1X7gYE8hbgFn3j4x","decimals":6,"rootKey":"8smgskx6NJyAFnVABtc2CkYEVMMjCUe2eHuXYjCU3THw","nodeKeys":["GFK6EgNEqfPzQdsQvAYTYBC5AMXFc8FGzofV7fJy6pEE"]},{"symbol":"GMT","mintKey":"BiFY7TA4b2q5zxUSMQD1cKuFMT2GP5GjWh5DzCpkW9md","decimals":6,"rootKey":"FCVvDzNinnkZb9HWRK1E1kUYZgvyVmCES6kdzA5VjS6P","nodeKeys":["DFhowHWrUYxP6gXvj2i9uoT5nxsmv9BT4rLHsFQXqa9w"]}],"oracles":[{"symbol":"MNGO","publicKey":"28ne4YVvDST7P2GXnPxYfvufe5ur5Y88K5WppevnqqbW"},{"symbol":"BTC","publicKey":"DJW6f4ZVqCnpYNN9rNuzqUcCvkVtBgixo8mq9FKSsCbJ"},{"symbol":"ETH","publicKey":"7A98y76fcETLHnkCxjmnUrsuNrbUae7asy4TiVeGqLSs"},{"symbol":"SOL","publicKey":"7VJsBtJzgTftYzEeooSDYyjKXvYRWJHdwvbwfBvTg9K"},{"symbol":"USDT","publicKey":"AbdpsSpVLHLNKpnwr6aMnUyvwh4nxQercb9d4bmGoUZs"},{"symbol":"SRM","publicKey":"74Bak9eMFPvDLHcnjCpvDWvBSGNd8sCThVe3WmDf7sZW"},{"symbol":"RAY","publicKey":"JDpdv9VibnayNDd2k7JaJW39fdeQT2fT4BmfUpfVj76j"},{"symbol":"COPE","publicKey":"YJK3fYw84NoSVKF3G2HgwRMBzTP8eJ3TD7fFY9rz5CA"},{"symbol":"FTT","publicKey":"9594DvS2MxHoLRsWyRrfdsNMnBFRkRvH25gKxwxZwAuP"},{"symbol":"MSOL","publicKey":"FvnczKgxE1WKeqUuP7BisgKxDRZRW2KqiEP14GfVirEo"},{"symbol":"BNB","publicKey":"ms12GN1spexWbhRkkv3HFQaGJ4dsuUiYatMnHNsS28z"},{"symbol":"AVAX","publicKey":"2d9P5LTqFrtGsBFXXkJfMxtSLwG3qh3fBgHCVdURAZTE"},{"symbol":"LUNA","publicKey":"HzcvvCpmEUaiG19Wppzz7pkUj9YrbXvF3kiyDZYixMmg"},{"symbol":"GMT","publicKey":"ANepGpAFeXHCudwgPoikdACvm9zuvJKBingX95kJcUhh"}],"perpMarkets":[{"name":"MNGO-PERP","publicKey":"Epd5FcpgpK5MyPnR3NjTJzG6m3xDKvwugx2B39iagcqY","baseSymbol":"MNGO","baseDecimals":6,"quoteDecimals":6,"marketIndex":0,"bidsKey":"BteA961mSUSX8LS5hucwGFfanEDAEh8Rx6aALDWMmjuw","asksKey":"EwyUF9jfYbUZNxSCVxJ74BCt3V69hbZgSUh53LnVxnUn","eventsKey":"8nsqnbgEBtLdf1CF2rMqPpg8vN5u3XktW1RhK19L5css"},{"name":"BTC-PERP","publicKey":"6GTMXmpBdUDAojfjocxxn2nD7C5CiN9i4RLqcC3BWEG7","baseSymbol":"BTC","baseDecimals":6,"quoteDecimals":6,"marketIndex":1,"bidsKey":"GKn1W4kYg5mCZqmSTLpPRxoijDQ8wzwXdJU5VfuDUf9S","asksKey":"GjyaAXiY66c7f13w7gqm3n5XZzuKYwXvVUCkHNvoEF18","eventsKey":"7stBzmzWKHemYjA2GaDgopLmouYmkD9XPuWN651rFDz3"},{"name":"ETH-PERP","publicKey":"8QM2v7PHf9qyeHZ5nxAaxefUcAedL2wN1NrrQpAuygUc","baseSymbol":"ETH","baseDecimals":6,"quoteDecimals":6,"marketIndex":2,"bidsKey":"3ox38JjdkCK9UkXYQ1jZshaRR9VaiRX8JDmYdmY3bPoH","asksKey":"jKDsNvLmvyfxNbNGHdThGYLFw3s9yRXbwUUNJKKNPFP","eventsKey":"6JXbNJDLTh5KHv1tJaF2EB9SEoyPZ3AhBV2rfpAb3DQY"},{"name":"SOL-PERP","publicKey":"6GMeYPTEgUiY5RHDvYuiNkyp3HEnq6Dn9KUwg4X4kcA","baseSymbol":"SOL","baseDecimals":9,"quoteDecimals":6,"marketIndex":3,"bidsKey":"2AzjrytNAGgV275kMcvFoBBDqpy3a3JLo5Uojgiu34jE","asksKey":"3Bf2rtYBUBtHAtxEgCoFEdQFyRF9zRyw7aVeTweRaiGJ","eventsKey":"6MeNc3fXo5TM2vWjVbiiyHpPRUYroqv3qkPLM95GGD2Y"},{"name":"SRM-PERP","publicKey":"Ff6mWKYx7fPybsuUoanBVTLh3hNrn25uXYtMVQWVxHwj","baseSymbol":"SRM","baseDecimals":6,"quoteDecimals":6,"marketIndex":5,"bidsKey":"87CW1HPLop2KqBJFkpYyCWcDpuPCdyFECYGTruGVX6GM","asksKey":"6W7rUjJW3c2pvRaC6aPvzeMzTZTmcAaQXKdFxFg9fiee","eventsKey":"871TXPBpaFEuBy1vrYi1fpxSagui1kjcXpsnT6xEZ6Zu"},{"name":"RAY-PERP","publicKey":"5EEsnq1CPpV62vpBKPhoBbRLhxAG9AjGXEqNWm1Ry9HR","baseSymbol":"RAY","baseDecimals":6,"quoteDecimals":6,"marketIndex":6,"bidsKey":"FcSD7nS4tmpU7jdqtTkmgXn7LsZwCHarjuHfzGxn1QFV","asksKey":"FzYMxLN3853V1dNSWW6Xo9E7sm8AutnYVkuV87h6dYob","eventsKey":"4Na9dMzptoQUzzGtXU7hJY7QcYbu1EQwAAK4vGX7fioK"},{"name":"FTT-PERP","publicKey":"5dHBKiqnwoGFDJkKymBrmvi5ut2S3kiTHpwrYJtBGKsc","baseSymbol":"FTT","baseDecimals":6,"quoteDecimals":6,"marketIndex":8,"bidsKey":"AwYeNFQSJNRJKdr6n9C584eURQMbX8kQp6YR3KocSaJZ","asksKey":"DWwBUEvyLaeuVLs75nxtdSHLP12RcjDtcQPtG58hw8cp","eventsKey":"Ctj2kZzQKJ7DEWWDPKEz6UxgmkpbyD9uhkiBwHYFZPN9"},{"name":"BNB-PERP","publicKey":"FyVXKgad8nV1VUcok1usrzsCA8qYY7AEXCpSWTGY5UeU","baseSymbol":"BNB","baseDecimals":8,"quoteDecimals":6,"marketIndex":10,"bidsKey":"JB22ph1veB1hys1TpZgEYZxRWtQZj4PLZeUsK8szrKCB","asksKey":"6yW23UFsAuvGrgfFwfrF4gfWBcYgJeCDMdXZb9seoMrm","eventsKey":"EtabLdm2mYKww1P1u33JmW9E8R3kjv2NzJMqBbDfu6ea"},{"name":"AVAX-PERP","publicKey":"64gTDbPHv76mWPP4BMEHwfY7whTThKSsodXGPDfieSrm","baseSymbol":"AVAX","baseDecimals":8,"quoteDecimals":6,"marketIndex":11,"bidsKey":"2DXoBNZHP9TruQ1XcSUtpAe7yYoUE3tkREmjNuEqWTgG","asksKey":"6XtV3f6TvAEr3gRDp55RuSwXfwxR82LGVtggxyaDvfa4","eventsKey":"7xbvjdvd96MPDodhS1yCkLEsrgnhbrwoLhNHUWqBpVtH"},{"name":"LUNA-PERP","publicKey":"8q2qCBtrr1rpjpXUf4ksW8942Lfsr7iAMM5sQtcGR4U3","baseSymbol":"LUNA","baseDecimals":6,"quoteDecimals":6,"marketIndex":12,"bidsKey":"FEV2XWZKrn5VBexXCbzJp2gDNcYwH26iqnERRo2ZHuE","asksKey":"G3Jyq62TukJnLZZuoCp29CGFrNk7wNBbpTuzLd3SyaQ2","eventsKey":"C5dsgFpuhzHk5WEFksMsfuMMo5pAqak2Y1sQhtf8k9G5"},{"name":"GMT-PERP","publicKey":"BAnUEtyejzpEMN5RQAhg8d98qg8mvZAxzYQ3HTrrorXn","baseSymbol":"GMT","baseDecimals":6,"quoteDecimals":6,"marketIndex":13,"bidsKey":"CiSSSF1SH4fipf3WPHHqgSKAGxfP7gQweBMGu2hBFuKU","asksKey":"DqgupGtNDs1aosDfAQCcjVkZJxf53uKQ1v1gqXwTJwPT","eventsKey":"GJKEjUbezyecGs8baddi7suVy2meT7eS6PHeGB3ZxswM"}],"spotMarkets":[{"name":"MNGO/USDC","publicKey":"8TLPwY6wBVWhrMtZbYCmubLGFvXxg6FoEomBYSFPDdp7","baseSymbol":"MNGO","baseDecimals":6,"quoteDecimals":6,"marketIndex":0,"bidsKey":"7Gk8okpxHWtCYUwVeFzpA6emdUCt1mwZ9xe49BVA4PV6","asksKey":"7J6XcotRXiqV2Nd4undgx7kdrB6vmw3YGtwGpq6ivKdB","eventsKey":"5JD58RvQyf8sDGoWEKhKVp3hW7wA1LfApfUJueMqGwMo"},{"name":"BTC/USDC","publicKey":"HGsmWCnpCKkUvZHPFeniNDVP2cT7938ctZZgipoCfYVW","baseSymbol":"BTC","baseDecimals":6,"quoteDecimals":6,"marketIndex":1,"bidsKey":"8sZwjiSKgB7RW5J6DrhX9UZQc29TcwRKTN8Q5qLZpMEk","asksKey":"2ApLQWxUut5acJ5xyVB2ABmgkVF8X6vSRAWyEb6MR33e","eventsKey":"91EqdkfTrjycaScc15yQqCCTVuYPv7WP7CurXv93rDiS"},{"name":"ETH/USDC","publicKey":"2RnUA2WmeXjqBBNmofRkjWfMPGqdzJzX25Bhfz5v4j3r","baseSymbol":"ETH","baseDecimals":6,"quoteDecimals":6,"marketIndex":2,"bidsKey":"3x2z8TALfAZE29kVPbUMMnVfebACAw2nC5xW8CuKXPZj","asksKey":"9GTZYGMNZrUMm1oDncvJZJw9kqbG4sSzgE54QEttyEMk","eventsKey":"8RXvfTggy5QsBMK3sQgxwZVzTHEKjscewkFVv25sPZ9t"},{"name":"SOL/USDC","publicKey":"9kDBreEZr2LQgbGB16eLW6YFmeMSRK3BpzGKL14L69cb","baseSymbol":"SOL","baseDecimals":9,"quoteDecimals":6,"marketIndex":3,"bidsKey":"H4EUio7qYBkejqQiUEx1b59aJcZYeJ1ZS9b4vfVCgRok","asksKey":"A2G4qUDeNYKrtyP5w5XbaSYsY46s38BPeUpuZJLiCm9y","eventsKey":"835FgJV2L8czJNemyn2ZSihpTpw5UmrviH9qyorEs41B"},{"name":"USDT/USDC","publicKey":"AwLAfPV61tKrbkCh63HJHYR7sCp3VHCXojvSQuosfBv3","baseSymbol":"USDT","baseDecimals":6,"quoteDecimals":6,"marketIndex":4,"bidsKey":"HLzV5bg8rLpoPKo2u5xwGzj4FtMFQ6FVNie58ketmCrx","asksKey":"F1nDmqp1yf2dnJNAGZB1V2AdYFLxTsteowt8h4j8CA4J","eventsKey":"7ZsDUq3Shujh5FLQ5ttm6aordSbKooqmye5up5zTq8i1"},{"name":"SRM/USDC","publicKey":"2dXVEWSscyQpmsH1ePyV6LTRubVCVhJdEYr3UtJX5ZbR","baseSymbol":"SRM","baseDecimals":6,"quoteDecimals":6,"marketIndex":5,"bidsKey":"F467AsRoFyGHerMecSNMbtfU1MgyXev23ENpBQ6pK6DM","asksKey":"Fise2zhtMMk3r4s2EsaR4jkvMaiUKmULi6jozXuAipmY","eventsKey":"2XeEmHtNqZDrkbniYFPLRH7XtJF8FrHzaijbHsXUtKYc"},{"name":"RAY/USDC","publicKey":"FbsnAtFrKj5GRFnAmeE2bMZFBWyacmLB9n6Q1WeVZaYM","baseSymbol":"RAY","baseDecimals":6,"quoteDecimals":6,"marketIndex":6,"bidsKey":"HGHZrRZu1yKEFPJTRSdCko1fb7iRsu8H5ZDqM6LGr4pV","asksKey":"GXScF2UAN9gXAgAQTpk7JTYEuPN66W4tquVemr5817bb","eventsKey":"7yXVcXPCyHzpwiX1emX68eYKFZvF8Xpm48RFMKra9LR5"},{"name":"COPE/USDC","publicKey":"BY2KHjSXnd8Awb9eRsHCS33gMGzgJussF32uYuU6EmX9","baseSymbol":"COPE","baseDecimals":6,"quoteDecimals":6,"marketIndex":7,"bidsKey":"G5q8nXW9qjwTCax5NbsXKnKgmh5ZHmNSrC9w9nNkspCU","asksKey":"EHiMfMSkyaN7DKkDX5hwRQsFMZP7Gf2wdmjkKK7HjgTT","eventsKey":"2cWLNgi2UuuotVshgMWug2VJA1EJbz5SKG4nNpDp1k4j"},{"name":"FTT/USDC","publicKey":"GCnCL6XiEW4pqnab5kmp3UMxHDaRF1zPBfafSDPLbTVN","baseSymbol":"FTT","baseDecimals":6,"quoteDecimals":6,"marketIndex":8,"bidsKey":"A8KxPVg9gzusevrxEXzi1dVmKrS95QNT6KZcESwUwShx","asksKey":"AXWkZg86hycvSGgqtfdmuWQLDhdgxcUyVmG3bWXHQPbH","eventsKey":"6C3mLJRo2g3jR4p5EvNpD4ZrXjPx4zxdys3pLZwekHpD"},{"name":"MSOL/USDC","publicKey":"Hmex3Sx82grdYTPcwqEN1EuSMXy1g1G9LYCidr5vWhwN","baseSymbol":"MSOL","baseDecimals":9,"quoteDecimals":6,"marketIndex":9,"bidsKey":"EdgXJgc6snuRpj3FHubyvRfrtgHEBqvCCsiqXQ1n5Kr8","asksKey":"C62SxTD7XVqLeouiEAzuDCoQqyyFtNdJvCNv9vfaPnc4","eventsKey":"Ebq1Gh814EKZCumAPedvG95U3gEeU44DneuXW3w4ko39"},{"name":"BNB/USDC","publicKey":"B78LZyoJwzLMyvMZ4xN8sts97W9UAwLPiHhSotxxwmJq","baseSymbol":"BNB","baseDecimals":8,"quoteDecimals":6,"marketIndex":10,"bidsKey":"37hxB89uWfQy4PFms9BpaEyYk4u16wL6czUo6amfcK1h","asksKey":"9uzvoiGymvJTpdBWHRKNxkQjGGCFTWTL8KFuakNNPfmU","eventsKey":"HiWLsZCDbgKCauZNu1PwQsBYknqRv1em59RiL8CeHH1p"},{"name":"AVAX/USDC","publicKey":"21dDCUbxkCvnEZ9Em1zaXjd9MhLzFWbff3251zsS1d9N","baseSymbol":"AVAX","baseDecimals":8,"quoteDecimals":6,"marketIndex":11,"bidsKey":"CfKNYzBsPw1XWRarvAWCKzyNy2nvBYkdZSFAAZd1EQ7n","asksKey":"5VoD87b4TTg5YSfmviAsNUhKKMrw2LqbpH1kz3ymaru9","eventsKey":"3STWFVXvveh7675BEc1sYtEybxBg3oXLZ7jgYhXSpb77"},{"name":"LUNA/USDC","publicKey":"7fvBDEjSvLYUoZ8VsLiLQpZ6onHiHNaeQd3c9dzFKpEc","baseSymbol":"LUNA","baseDecimals":6,"quoteDecimals":6,"marketIndex":12,"bidsKey":"ABsPbLjzT43FZAAo8n5kZSn8QG7pWPnu1BVXeUMpbT19","asksKey":"CpaKMETvL9Ch2HMKWTiMZctCZuoj9PPrBJheKjBpzdzm","eventsKey":"GaXZDxbRSwRUi3yXF7FQ73D8wAGTjwz26NjTAUhqmtEi"},{"name":"GMT/USDC","publicKey":"DXovHwbYdVZKNPqSHssiAnkrLaxoUov4jskQi4DV98Fc","baseSymbol":"GMT","baseDecimals":6,"quoteDecimals":6,"marketIndex":13,"bidsKey":"6zNgYXpQ9Z75i9Qg9Mc4MnJFkFBTLTMxSWoikSHwmb5o","asksKey":"74cDEkm2tD5GrhCHL3zaCQJZQsU6d2bkZZqmdhsbLYaH","eventsKey":"Ve5ctdzm48MLvgjYezeF5Fp2WSNfX2ZNG3CbANkkekt"}]}]}')},29406:e=>{"use strict";e.exports=JSON.parse('{"version":"0.1.0","name":"mango_logs","instructions":[],"events":[{"name":"FillLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"marketIndex","type":"u64","index":false},{"name":"takerSide","type":"u8","index":false},{"name":"makerSlot","type":"u8","index":false},{"name":"makerOut","type":"bool","index":false},{"name":"timestamp","type":"u64","index":false},{"name":"seqNum","type":"u64","index":false},{"name":"maker","type":"publicKey","index":false},{"name":"makerOrderId","type":"i128","index":false},{"name":"makerClientOrderId","type":"u64","index":false},{"name":"makerFee","type":"i128","index":false},{"name":"bestInitial","type":"i64","index":false},{"name":"makerTimestamp","type":"u64","index":false},{"name":"taker","type":"publicKey","index":false},{"name":"takerOrderId","type":"i128","index":false},{"name":"takerClientOrderId","type":"u64","index":false},{"name":"takerFee","type":"i128","index":false},{"name":"price","type":"i64","index":false},{"name":"quantity","type":"i64","index":false}]},{"name":"TokenBalanceLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"mangoAccount","type":"publicKey","index":false},{"name":"tokenIndex","type":"u64","index":false},{"name":"deposit","type":"i128","index":false},{"name":"borrow","type":"i128","index":false}]},{"name":"CachePricesLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"oracleIndexes","type":{"vec":"u64"},"index":false},{"name":"oraclePrices","type":{"vec":"i128"},"index":false}]},{"name":"CacheRootBanksLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"tokenIndexes","type":{"vec":"u64"},"index":false},{"name":"depositIndexes","type":{"vec":"i128"},"index":false},{"name":"borrowIndexes","type":{"vec":"i128"},"index":false}]},{"name":"CachePerpMarketsLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"marketIndexes","type":{"vec":"u64"},"index":false},{"name":"longFundings","type":{"vec":"i128"},"index":false},{"name":"shortFundings","type":{"vec":"i128"},"index":false}]},{"name":"SettlePnlLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"mangoAccountA","type":"publicKey","index":false},{"name":"mangoAccountB","type":"publicKey","index":false},{"name":"marketIndex","type":"u64","index":false},{"name":"settlement","type":"i128","index":false}]},{"name":"SettleFeesLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"mangoAccount","type":"publicKey","index":false},{"name":"marketIndex","type":"u64","index":false},{"name":"settlement","type":"i128","index":false}]},{"name":"LiquidateTokenAndTokenLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"liqee","type":"publicKey","index":false},{"name":"liqor","type":"publicKey","index":false},{"name":"assetIndex","type":"u64","index":false},{"name":"liabIndex","type":"u64","index":false},{"name":"assetTransfer","type":"i128","index":false},{"name":"liabTransfer","type":"i128","index":false},{"name":"assetPrice","type":"i128","index":false},{"name":"liabPrice","type":"i128","index":false},{"name":"bankruptcy","type":"bool","index":false}]},{"name":"LiquidateTokenAndPerpLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"liqee","type":"publicKey","index":false},{"name":"liqor","type":"publicKey","index":false},{"name":"assetIndex","type":"u64","index":false},{"name":"liabIndex","type":"u64","index":false},{"name":"assetType","type":"u8","index":false},{"name":"liabType","type":"u8","index":false},{"name":"assetPrice","type":"i128","index":false},{"name":"liabPrice","type":"i128","index":false},{"name":"assetTransfer","type":"i128","index":false},{"name":"liabTransfer","type":"i128","index":false},{"name":"bankruptcy","type":"bool","index":false}]},{"name":"LiquidatePerpMarketLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"liqee","type":"publicKey","index":false},{"name":"liqor","type":"publicKey","index":false},{"name":"marketIndex","type":"u64","index":false},{"name":"price","type":"i128","index":false},{"name":"baseTransfer","type":"i64","index":false},{"name":"quoteTransfer","type":"i128","index":false},{"name":"bankruptcy","type":"bool","index":false}]},{"name":"PerpBankruptcyLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"liqee","type":"publicKey","index":false},{"name":"liqor","type":"publicKey","index":false},{"name":"liabIndex","type":"u64","index":false},{"name":"insuranceTransfer","type":"u64","index":false},{"name":"socializedLoss","type":"i128","index":false},{"name":"cacheLongFunding","type":"i128","index":false},{"name":"cacheShortFunding","type":"i128","index":false}]},{"name":"TokenBankruptcyLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"liqee","type":"publicKey","index":false},{"name":"liqor","type":"publicKey","index":false},{"name":"liabIndex","type":"u64","index":false},{"name":"insuranceTransfer","type":"u64","index":false},{"name":"socializedLoss","type":"i128","index":false},{"name":"percentageLoss","type":"i128","index":false},{"name":"cacheDepositIndex","type":"i128","index":false}]},{"name":"UpdateRootBankLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"tokenIndex","type":"u64","index":false},{"name":"depositIndex","type":"i128","index":false},{"name":"borrowIndex","type":"i128","index":false}]},{"name":"UpdateFundingLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"marketIndex","type":"u64","index":false},{"name":"longFunding","type":"i128","index":false},{"name":"shortFunding","type":"i128","index":false}]},{"name":"OpenOrdersBalanceLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"mangoAccount","type":"publicKey","index":false},{"name":"marketIndex","type":"u64","index":false},{"name":"baseTotal","type":"u64","index":false},{"name":"baseFree","type":"u64","index":false},{"name":"quoteTotal","type":"u64","index":false},{"name":"quoteFree","type":"u64","index":false},{"name":"referrerRebatesAccrued","type":"u64","index":false}]},{"name":"MngoAccrualLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"mangoAccount","type":"publicKey","index":false},{"name":"marketIndex","type":"u64","index":false},{"name":"mngoAccrual","type":"u64","index":false}]},{"name":"WithdrawLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"mangoAccount","type":"publicKey","index":false},{"name":"owner","type":"publicKey","index":false},{"name":"tokenIndex","type":"u64","index":false},{"name":"quantity","type":"u64","index":false}]},{"name":"DepositLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"mangoAccount","type":"publicKey","index":false},{"name":"owner","type":"publicKey","index":false},{"name":"tokenIndex","type":"u64","index":false},{"name":"quantity","type":"u64","index":false}]},{"name":"RedeemMngoLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"mangoAccount","type":"publicKey","index":false},{"name":"marketIndex","type":"u64","index":false},{"name":"redeemedMngo","type":"u64","index":false}]},{"name":"CancelAllPerpOrdersLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"mangoAccount","type":"publicKey","index":false},{"name":"marketIndex","type":"u64","index":false},{"name":"allOrderIds","type":{"vec":"i128"},"index":false},{"name":"canceledOrderIds","type":{"vec":"i128"},"index":false}]},{"name":"PerpBalanceLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"mangoAccount","type":"publicKey","index":false},{"name":"marketIndex","type":"u64","index":false},{"name":"basePosition","type":"i64","index":false},{"name":"quotePosition","type":"i128","index":false},{"name":"longSettledFunding","type":"i128","index":false},{"name":"shortSettledFunding","type":"i128","index":false},{"name":"longFunding","type":"i128","index":false},{"name":"shortFunding","type":"i128","index":false}]},{"name":"ReferralFeeAccrualLog","fields":[{"name":"mangoGroup","type":"publicKey","index":false},{"name":"referrerMangoAccount","type":"publicKey","index":false},{"name":"referreeMangoAccount","type":"publicKey","index":false},{"name":"marketIndex","type":"u64","index":false},{"name":"referralFeeAccrual","type":"i128","index":false}]}]}')},15525:e=>{"use strict";e.exports=JSON.parse('[{"address":"B37pZmwrwXHjpgvd9hHDAx1yeDsNevTnbbrN9W12BoGK","deprecated":true,"name":"soALEPH/soUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"CAgAeMD7quTdnr6RPa7JySQpjf3irAmefYNdTb6anemq","deprecated":true,"name":"BTC/soUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"ASKiV944nKg1W9vsf7hf3fTsjawK6DwLwrnB2LH9n61c","deprecated":true,"name":"soETH/soUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"Cdp72gDcYMCLLk3aDkPxjeiirKoFqK38ECm8Ywvk94Wi","deprecated":true,"name":"SOL/soUSDC","programId":"BJ3jrUzddfuSrZHXSCxMUUQsjKEyLmuuyZebkcaFp2fg"},{"address":"68J6nkWToik6oM9rTatKSR5ibVSykAtzftBUEAvpRsys","deprecated":true,"name":"SRM/soUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"8Jzed8Fafu1RU1CQDWdiETSrqAJy1ukZ5JL6Pma3p3a2","deprecated":true,"name":"SRM/SOL","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"9wDmxsfwaDb2ysmZpBLzxKzoWrF1zHzBN7PV5EmJe19R","deprecated":true,"name":"soSUSHI/soUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"GbQSffne1NcJbS4jsewZEpRGYVR4RNnuVUN8Ht6vAGb6","deprecated":true,"name":"soSXP/soUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"7kgkDyW7dmyMeP8KFXzbcUZz1R2WHsovDZ7n3ihZuNDS","deprecated":true,"name":"MSRM/soUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"FZqrBXz7ADGsmDf1TM9YgysPUfvtG8rJiNUrqDpHc9Au","deprecated":true,"name":"soFTT/soUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"FJg9FUtbN3fg3YFbMCFiZKjGh5Bn4gtzxZmtxFzmz9kT","deprecated":true,"name":"soYFI/soUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"7GZ59DMgJ7D6dfoJTpszPayTRyua9jwcaGJXaRMMF1my","deprecated":true,"name":"soLINK/soUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"uPNcBgFhrLW3FtvyYYbBUi53BBEQf9e4NPgwxaLu5Hn","deprecated":true,"name":"soHGET/soUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"3puWJFZyCso14EdxhywjD7xqyTarpsULx483mzvqxQRW","deprecated":true,"name":"soCREAM/soUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"8Ae7Uhigx8k4fKdJG7irdPCVDZLvWsJfeTH2t5fr3TVD","deprecated":true,"name":"soUBXT/soUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"Hze5AUX4Qp1cTujiJ4CsAMRGn4g6ZpgXsmptFn3xxhWg","deprecated":true,"name":"soHNT/soUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"FJq4HX3bUSgF3yQZ8ADALtJYfAyr9fz36SNG18hc3dgF","deprecated":true,"name":"soFRONT/soUSDC","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"BZMuoQ2i2noNUXMdrRDivc7MwjGspNJTCfZkdHMwK18T","deprecated":true,"name":"soALEPH/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"5LgJphS6D5zXwUVPU7eCryDBkyta3AidrJ5vjNU6BcGW","deprecated":true,"name":"BTC/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"DmEDKZPXXkWgaYiKgWws2ZXWWKCh41eryDPRVD4zKnD9","deprecated":true,"name":"soETH/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"EBFTQNg2QjyxV7WDDenoLbfLLXLcbSz6w1YrdTCGPWT5","deprecated":true,"name":"SOL/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"8YmQZRXGizZXYPCDmxgjwB8X8XN4PZG7MMwNg76iAmPZ","deprecated":true,"name":"SRM/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"9vFuX2BizwinWjkZLQTmThDcNMFEcY3wVXYuqnRQtcD","deprecated":true,"name":"soSUSHI/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"C5NReXAeQhfjiDCGPFj1UUmDxDqF8v2CUVKoYuQqb4eW","deprecated":true,"name":"soSXP/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"58H7ZRmiyWtsrz2sQGz1qQCMW6n7447xhNNehUSQGPj5","deprecated":true,"name":"MSRM/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"ES8skmkEeyH1BYFThd2FtyaFKhkqtwH7XWp8mXptv3vg","deprecated":true,"name":"soFTT/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"Gw78CYLLFbgmmn4rps9KoPAnNtBQ2S1foL2Mn6Z5ZHYB","deprecated":true,"name":"soYFI/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"WjfsTPyrvUUrhGJ9hVQFubMnKDcnQS8VxSXU7L2gLcA","deprecated":true,"name":"soLINK/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"2ZmB255T4FVUugpeXTFxD6Yz5GE47yTByYvqSTDUbk3G","deprecated":true,"name":"soHGET/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"FGJtCDXoHLHjagP5Ht6xcUFt2rW3z8MJPe87rFKP2ZW6","deprecated":true,"name":"soCREAM/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7K6MPog6LskZmyaYwqtLvRUuedoiE68nirbQ9tK3LasE","deprecated":true,"name":"soUBXT/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"9RyozJe3bkAFfH3jmoiKHjkWCoLTxn7aBQSi6YfaV6ab","deprecated":true,"name":"soHNT/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"AGtBbGuJZiv3Ko3dfT4v6g4kCqnNc9DXfoGLe5HpjmWx","deprecated":true,"name":"soFRONT/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"AA1HSrsMcRNzjaQfRMTNarHR9B7e4U79LJ2319UtiqPF","deprecated":true,"name":"soAKRO/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"AUAobJdffexcoJBMeyLorpShu3ZtG9VvPEPjoeTN4u5Z","deprecated":true,"name":"soHXRO/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"GpdYLFbKHeSeDGqsnQ4jnP7D1294iBpQcsN1VPwhoaFS","deprecated":true,"name":"soUNI/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"sxS9EdTx1UPe4j2c6Au9f1GKZXrFj5pTgNKgjGGtGdY","deprecated":true,"name":"soKEEP/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"CfnnU38ACScF6pcurxSB3FLXeZmfFYunVKExeUyosu5P","deprecated":true,"name":"soMATH/soUSDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7NR5GDouQYkkfppVkNhpa4HfJ2LwqUQymE3b4CYQiYHa","deprecated":true,"name":"soALEPH/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"CVfYa8RGXnuDBeGmniCcdkBwoLqVxh92xB1JqgRQx3F","deprecated":true,"name":"BTC/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"H5uzEytiByuXt964KampmuNCurNDwkVVypkym75J2DQW","deprecated":true,"name":"soETH/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7xMDbYTCqQEcK2aM9LbetGtNFJpzKdfXzLL5juaLh4GJ","deprecated":true,"name":"SOL/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"CDdR97S8y96v3To93aKvi3nCnjUrbuVSuumw8FLvbVeg","deprecated":true,"name":"SRM/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7LVJtqSrF6RudMaz5rKGTmR3F3V5TKoDcN6bnk68biYZ","deprecated":true,"name":"soSUSHI/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"13vjJ8pxDMmzen26bQ5UrouX8dkXYPW1p3VLVDjxXrKR","deprecated":true,"name":"soSXP/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"AwvPwwSprfDZ86beBJDNH5vocFvuw4ZbVQ6upJDbSCXZ","deprecated":true,"name":"MSRM/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"FfDb3QZUdMW2R2aqJQgzeieys4ETb3rPrFFfPSemzq7R","deprecated":true,"name":"soFTT/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"4QL5AQvXdMSCVZmnKXiuMMU83Kq3LCwVfU8CyznqZELG","deprecated":true,"name":"soYFI/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7JCG9TsCx3AErSV3pvhxiW4AbkKRcJ6ZAveRmJwrgQ16","deprecated":true,"name":"soLINK/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"3otQFkeQ7GNUKT3i2p3aGTQKS2SAw6NLYPE5qxh3PoqZ","deprecated":true,"name":"soHGET/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"2M8EBxFbLANnCoHydypL1jupnRHG782RofnvkatuKyLL","deprecated":true,"name":"soCREAM/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"3UqXdFtNBZsFrFtRGAWGvy9R8H6GJR2hAyGRdYT9BgG3","deprecated":true,"name":"soUBXT/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"9jiasgdYGGh34fAbBQSwkKe1dYSapXbjy2sLsYpetqFp","deprecated":true,"name":"soHNT/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7oKqJhnz9b8af8Mw47dieTiuxeaHnRYYGBiqCrRpzTRD","deprecated":true,"name":"soFRONT/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"F1rxD8Ns5w4WzVcTRdaJ96LG7YKaA5a25BBmM32yFP4b","deprecated":true,"name":"soAKRO/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"6ToedDwjRCvrcKX7fnHSTA9uABQe1dcLK6YgS5B9M3wo","deprecated":true,"name":"soHXRO/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"FURvCsDUiuUaxZ13pZqQbbfktFGWmQVTHz7tL992LQVZ","deprecated":true,"name":"soUNI/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"EcfDRMrEJ3yW4SgrRyyxTPoKqAZDNSBV8EerigT7BNSS","deprecated":true,"name":"soKEEP/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"2bPsJ6bZ9KDLfJ8QgSN1Eb4mRsbAiaGyHN6cJkoVLpwd","deprecated":true,"name":"soMATH/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"B1GypajMh7S8zJVp6M1xMfu6zGsMgvYrt3cSn9wG7Dd6","deprecated":true,"name":"soTOMO/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"rPTGvVrNFYzBeTEcYnHiaWGNnkSXsWNNjUgk771LkwJ","deprecated":true,"name":"soLUA/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"FrDavxi4QawYnQY259PVfYUjUvuyPNfqSXbLBqMnbfWJ","deprecated":true,"name":"FIDA/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"CVn1nJ5Utuseyy2qqwrpYoJz9Y7jjYonVL4UYvcCepDH","deprecated":true,"name":"KIN/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"BqjGW7ousAizgs8VrHo5SR1LxTksAQPtb8cKZZiNvX5D","deprecated":true,"name":"MAPS/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"GcoKtAmTy5QyuijXSmJKBtFdt99e6Buza18Js7j9AJ6e","deprecated":false,"name":"soALEPH/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"A8YFbxQYFVqKZaoYJLLUVcQiWP7G2MeEgW5wsAQgMvFw","deprecated":false,"name":"BTC/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"4tSvZvnbyzHXLMTiFonMyxZoHmFqau1XArcRCVHLZ5gX","deprecated":false,"name":"soETH/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"ByRys5tuUWDgL73G8JBAEfkdFf8JWBzPBDHsBVQ5vbQA","deprecated":false,"name":"SRM/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"A1Q9iJDVVS8Wsswr9ajeZugmj64bQVCYLZQLra2TMBMo","deprecated":false,"name":"soSUSHI/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"4LUro5jaPaTurXK737QAxgJywdhABnFAMQkXX4ZyqqaZ","deprecated":false,"name":"soSXP/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"4VKLSYdvrQ5ngQrt1d2VS8o4ewvb2MMUZLiejbnGPV33","deprecated":false,"name":"MSRM/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"2Pbh1CvRVku1TgewMfycemghf6sU9EyuFDcNXqvRmSxc","deprecated":false,"name":"soFTT/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"7qcCo8jqepnjjvB5swP4Afsr3keVBs6gNpBTNubd1Kr2","deprecated":false,"name":"soYFI/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"3hwH1txjJVS8qv588tWrjHfRxdqNjBykM1kMcit484up","deprecated":false,"name":"soLINK/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"88vztw7RTN6yJQchVvxrs6oXUDryvpv9iJaFa1EEmg87","deprecated":false,"name":"soHGET/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"7nZP6feE94eAz9jmfakNJWPwEKaeezuKKC5D1vrnqyo2","deprecated":false,"name":"soCREAM/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"2wr3Ab29KNwGhtzr5HaPCyfU1qGJzTUAN4amCLZWaD1H","deprecated":false,"name":"soUBXT/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"CnUV42ZykoKUnMDdyefv5kP6nDSJf7jFd7WXAecC6LYr","deprecated":false,"name":"soHNT/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"9Zx1CvxSVdroKMMWf2z8RwrnrLiQZ9VkQ7Ex3syQqdSH","deprecated":false,"name":"soFRONT/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"5CZXTTgVZKSzgSA3AFMN5a2f3hmwmmJ6hU8BHTEJ3PX8","deprecated":false,"name":"soAKRO/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"6Pn1cSiRos3qhBf54uBP9ZQg8x3JTardm1dL3n4p29tA","deprecated":false,"name":"soHXRO/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"6JYHjaQBx6AtKSSsizDMwozAEDEZ5KBsSUzH7kRjGJon","deprecated":false,"name":"soUNI/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"J7cPYBrXVy8Qeki2crZkZavcojf2sMRyQU7nx438Mf8t","deprecated":false,"name":"soMATH/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"8BdpjpSD5n3nk8DQLqPUyTZvVqFu6kcff5bzUX5dqDpy","deprecated":false,"name":"soTOMO/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"4xyWjQ74Eifq17vbue5Ut9xfFNfuVB116tZLEpiZuAn8","deprecated":false,"name":"soLUA/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"jyei9Fpj2GtHLDDGgcuhDacxYLLiSyxU4TY7KxB2xai","deprecated":false,"name":"SRM/SOL","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusDBzvT","deprecated":false,"name":"SOL/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"E14BKBhDWD4EuTkWj1ooZezesGxMW8LPCps4W5PuzZJo","deprecated":false,"name":"FIDA/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"Bn6NPyr6UzrFAwC4WmvPvDr2Vm8XSUnFykM2aQroedgn","deprecated":false,"name":"KIN/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"3A8XQRWXC7BjLpgLDDBhQJLT5yPCzS16cGYRKHkKxvYo","deprecated":false,"name":"MAPS/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"3rgacody9SvM88QR83GHaNdEEx4Fe2V2ed5GJp2oeKDr","deprecated":false,"name":"soKEEP/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"EmCzMQfXMgNHcnRoFwAdPe1i2SuiSzMj1mx6wu3KN2uA","deprecated":true,"name":"soALEPH/soUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"8AcVjMG2LTbpkjNoyq8RwysokqZunkjy3d5JDzxC6BJa","deprecated":true,"name":"BTC/soUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"HfCZdJ1wfsWKfYP2qyWdXTT5PWAGWFctzFjLH48U1Hsd","deprecated":true,"name":"soETH/soUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"8mDuvJJSgoodovMRYArtVVYBbixWYdGzR47GPrRT65YJ","deprecated":true,"name":"SOL/soUSDT","programId":"BJ3jrUzddfuSrZHXSCxMUUQsjKEyLmuuyZebkcaFp2fg"},{"address":"HARFLhSq8nECZk4DVFKvzqXMNMA9a3hjvridGMFizeLa","deprecated":true,"name":"SRM/soUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"DzFjazak6EKHnaB2w6qSsArnj28CV1TKd2Smcj9fqtHW","deprecated":true,"name":"soSUSHI/soUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"GuvWMATdEV6DExWnXncPYEzn4ePWYkvGdC8pu8gsn7m7","deprecated":true,"name":"soSXP/soUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"H4snTKK9adiU15gP22ErfZYtro3aqR9BTMXiH3AwiUTQ","deprecated":true,"name":"MSRM/soUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"DHDdghmkBhEpReno3tbzBPtsxCt6P3KrMzZvxavTktJt","deprecated":true,"name":"soFTT/soUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"5zu5bTZZvqESAAgFsr12CUMxdQvMrvU9CgvC1GW8vJdf","deprecated":true,"name":"soYFI/soUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"F5xschQBMpu1gD2q1babYEAVJHR1buj1YazLiXyQNqSW","deprecated":true,"name":"soLINK/soUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"BAbc9baz4hV1hnYjWSJ6cZDRjfvziWbYGQu9UFkcdUmx","deprecated":true,"name":"soHGET/soUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"EBxJWA2nLV57ZntbjizxH527ZjPNLT5cpUHMnY5k3oq","deprecated":true,"name":"soCREAM/soUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"46VdEkj4MJwZinwVb3Y7DUDpVXLNb9YW7P2waKU3vCqr","deprecated":true,"name":"soUBXT/soUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"Hc22rHKrhbrZBaQMmhJvPTkp1yDr31PDusU8wKoqFSZV","deprecated":true,"name":"soHNT/soUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"HFoca5HKwiTPpw9iUY5iXWqzkXdu88dS7YrpSvt2uhyF","deprecated":true,"name":"soFRONT/soUSDT","programId":"4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn"},{"address":"5xnYnWca2bFwC6cPufpdsCbDJhMjYCC59YgwoZHEfiee","deprecated":true,"name":"soALEPH/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"EXnGBBSamqzd3uxEdRLUiYzjJkTwQyorAaFXdfteuGXe","deprecated":true,"name":"BTC/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"5abZGhrELnUnfM9ZUnvK6XJPoBU5eShZwfFPkdhAC7o","deprecated":true,"name":"soETH/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7xLk17EQQ5KLDLDe44wCmupJKJjTGd8hs3eSVVhCx932","deprecated":true,"name":"SOL/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"H3APNWA8bZW2gLMSq5sRL41JSMmEJ648AqoEdDgLcdvB","deprecated":true,"name":"SRM/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"4uZTPc72sCDcVRfKKii67dTPm2Xe4ri3TYnGcUQrtnU9","deprecated":true,"name":"soSUSHI/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"33GHmwG9woY95JuWNi74Aa8uKvysSXxif9P1EwwkrCRz","deprecated":true,"name":"soSXP/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"FUaF58sDrgbqakHTR8RUwRLauSofRTjqyCsqThFPh6YM","deprecated":true,"name":"MSRM/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"5NqjQVXLuLSDnsnQMfWp3rF9gbWDusWG4B1Xwtk3rZ5S","deprecated":true,"name":"soFTT/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"97NiXHUNkpYd1eb2HthSDGhaPfepuqMAV3QsZhAgb1wm","deprecated":true,"name":"soYFI/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"hBswhpNyz4m5nt4KwtCA7jYXvh7VmyZ4TuuPmpaKQb1","deprecated":true,"name":"soLINK/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"GaeUpY7CT8rjoeVGjY1t3mJJDd1bdXxYWtrGSpsVFors","deprecated":true,"name":"soHGET/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7qq9BABQvTWKZuJ5fX2PeTKX6XVtduEs9zW9WS21fSzN","deprecated":true,"name":"soCREAM/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"DCHvVahuLTNWBGUtEzF5GrTdx5FRpxqEJiS6Ru1hrDfD","deprecated":true,"name":"soUBXT/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"DWjJ8VHdGYBxDQYdrRBVDWkHswrgjuBFEv5pBhiRoPBz","deprecated":true,"name":"soHNT/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"56eqxJYzPigm4FkigiBdsfebjMgAbKNh24E7oiKLBtye","deprecated":true,"name":"soFRONT/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"FQbCNSVH3RgosCPB4CJRstkLh5hXkvuXzAjQzT11oMYo","deprecated":true,"name":"soAKRO/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"Fs5xtGUmJTYo8Ao75M3R3m3mVX53KMUhzfXCmyRLnp2P","deprecated":true,"name":"soHXRO/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"ChKV7mxecPqFPGYJjhzowPHDiLKFWXXVujUiE3EWxFcg","deprecated":true,"name":"soUNI/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"6N3oU7ALvn2RPwdpYVzPBgQJ8njT29inBbS2tSrwx8fh","deprecated":true,"name":"soKEEP/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"5P6dJbyKySFXMYNWiEcNQu8xPRYsehYzCeVpae9Ueqrg","deprecated":true,"name":"soMATH/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"H7c8FcQPJ2E5tJmpWBPSi7xCAbk8immdtUxKFRUyE4Ro","deprecated":true,"name":"soTOMO/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"7PSeX1AEtBY9KvgegF5rUh452VemMh7oDzFtJgH7sxMG","deprecated":true,"name":"soLUA/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"AF2oQQaLtcrTnQyVs3EPTdyw57TPaK6njKYDq2Qw7LqP","deprecated":true,"name":"soSWAG/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"9TE15E5h61zJ5VmQAAHkGrAuQdFTth33aBbKdcrppZBp","deprecated":true,"name":"FIDA/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"8HEaA1vSA5mGQoHcvRPNibnuZvnUpSjJJru9HJNH3SqM","deprecated":true,"name":"KIN/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"8EuuEwULFM7n7zthPjC7kA64LPRzYkpAyuLFiLuVg7D4","deprecated":true,"name":"soUSDT/USDC","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"8grUs4WZoTs4KJ8LfRNUBs6SNkMTp5BnVRzJgQ2ranDT","deprecated":true,"name":"MAPS/soUSDT","programId":"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o"},{"address":"FoCuWt4KboucUg2PwmQ3dbkvLqYPLnAo1Rsm8p7QPyf","deprecated":true,"name":"soALEPH/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"5r8FfnbNYcQbS1m4CYmoHYGjBtu6bxfo6UJHNRfzPiYH","deprecated":true,"name":"BTC/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"71CtEComq2XdhGNbXBuYPmosAjMCPSedcgbNi5jDaGbR","deprecated":true,"name":"soETH/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"EZyQ9zyqQsw3QcsLksoWyd1UFVjHZkzRx8N4ZMnZQrS2","deprecated":true,"name":"SRM/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"6ERBjj692XHLWwWSRAUpiKenXshcwmPqhMy7RMapeoKa","deprecated":true,"name":"soSUSHI/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"CQ3kAGxPmpBbak2RSHWyMeRhyLYbH6oVZHJxgjzDLpLW","deprecated":true,"name":"soSXP/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"2Hqn46jhwaQMQ3zEnHtxrWxQZom6qwLXAgdsFJM1Srwh","deprecated":true,"name":"MSRM/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"G5jqZNo2UVCTnJxgEhKCYvqFRs3MxsnH8Bervq3rfLoL","deprecated":true,"name":"soFTT/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"CbwtTHEpfTnCyLw4GoTbKk7WyrXkuATLfLadY2odBSsY","deprecated":true,"name":"soYFI/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"5GjhBAYx8pYeCeUQt7rt93KQZnoQFuDq9Jx4iqq97Mip","deprecated":true,"name":"soLINK/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"9jMPV9E23pTirMjC7vz5suRNkd25311G3Httg7jTib8R","deprecated":true,"name":"soCREAM/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"DsSz9KWT97T4RewRTqTNDpNFQyxMPcuYNAJw2xHAzSiZ","deprecated":true,"name":"soUBXT/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"3k1sURztjxhjYczjyioQ7y2UkMB6K5Ksi3SWvLeLx6Ex","deprecated":true,"name":"soHNT/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"B791G8UCahfmABVcR2wPAMK6LJnuqxSAqiG6wX3mmVVM","deprecated":true,"name":"soFRONT/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"95f7fxfUh8WqUTrdjorHRXm6rTfkWqr23ioGMmKMjedP","deprecated":true,"name":"soAKRO/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"H4RxtmQ4P3TYPt78G3DuHgaGzyFct6MfaeYneLB5PyeG","deprecated":true,"name":"soHXRO/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"7myaZEGZf9m72T1Mqm8GTx5MnmSFS5NCXSwRP18W4EA3","deprecated":true,"name":"soUNI/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"7cRKzNoqjF9VtzvdnP129VYP3izivk9iY3jMJBMzREVT","deprecated":true,"name":"soHGET/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"GV9fYzdwipoaagXFxe5tzDMPcmSVQati5CUvBPsEZThH","deprecated":true,"name":"soMATH/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"AaMLXcwYYi5fA41JNCB2ukAmQyKHitYx5NnpsiWWev6R","deprecated":true,"name":"soTOMO/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"5ZeNLrduGi3WkH9CPwv2Zpbkh38MH8v63aSi2aBUW23g","deprecated":true,"name":"soLUA/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"Ec1aq54XKH9o5fe169cU2sCcxxTP54eeQCe77SpizKuc","deprecated":true,"name":"soUSDT/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"G3uhFg2rBFunHUXtCera13vyQ5KCS8Hx3d4HohLoZbT5","deprecated":true,"name":"SOL/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"2NMTG7tFZidRpQk9Sf4dgQyJb9HxKCyXjQdiuXww3sKm","deprecated":true,"name":"soSWAG/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"7QpJAiwGmqY1SiucjfPXvgeWwCobyV6hZSgzMysZX6Ww","deprecated":true,"name":"FIDA/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"CmLhvXARncLncE1949XBfQWeJh6Zvw3FE5A3Z5ecPYQH","deprecated":true,"name":"KIN/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"FhP3X2ptdi7L1RtWK9Vfow5dyzD92gfXiA57e8eqxvka","deprecated":true,"name":"MAPS/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"DE7xJE2EkaV81wLabDMuhBzUwFhhwfURLdz1aXBBQZQ1","deprecated":true,"name":"soKEEP/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"5nLJ22h1DUfeCfwbFxPYK8zbfbri7nA9bXoDcR8AcJjs","deprecated":false,"name":"MSRM/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"7dLVkUfBVfCGkFhSXDCq1ukM9usathSgS716t643iFGF","deprecated":false,"name":"soETH/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"8afKwzHR3wJE7W7Y5hvQkngXh6iTepSZuutRMMy96MjR","deprecated":false,"name":"soSXP/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"cgani53cMZgYfRMgSrNekJTMaLmccRfspsfTbXWRg7u","deprecated":false,"name":"soCEL/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"Gyp1UGRgbrb6z8t7fpssxEKQgEmcJ4pVnWW3ds2p6ZPY","deprecated":false,"name":"soALEPH/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"4ztJEvQyryoYagj2uieep3dyPwG2pyEwb2dKXTwmXe82","deprecated":false,"name":"soCREAM/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"HEGnaVL5i48ubPBqWAhodnZo8VsSLzEM3Gfc451DnFj9","deprecated":false,"name":"soKEEP/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"8FpuMGLtMZ7Wt9ZvyTGuTVwTwwzLYfS5NZWcHxbP1Wuh","deprecated":false,"name":"soHNT/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"5GAPymgnnWieGcRrcghZdA3aanefqa4cZx1ZSE8UTyMV","deprecated":false,"name":"soMAPS/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"AADohBGxvf7bvixs2HKC3dG2RuU3xpZDwaTzYFJThM8U","deprecated":false,"name":"TRYB/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"EbV7pPpEvheLizuYX3gUCvWM8iySbSRAhu2mQ5Vz2Mxf","deprecated":false,"name":"FIDA/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"FcPet5fz9NLdbXwVM6kw2WTHzRAD7mT78UjwTpawd7hJ","deprecated":false,"name":"soRSR/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"AtNnsY1AyRERWJ8xCskfz38YdvruWVJQUVXgScC1iPb","deprecated":false,"name":"SRM/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"teE55QrL4a4QSfydR9dnHF97jgCfptpuigbb53Lo95g","deprecated":false,"name":"RAY/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"C1EuT9VokAKLiW7i2ASnZUvxDoKuKkCpDDeNxAptuNe4","deprecated":false,"name":"BTC/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"Hr3wzG8mZXNHV7TuL6YqtgfVUesCqMxGYCEyP3otywZE","deprecated":false,"name":"soFTT/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"HLvRdctRB48F9yLnu9E24LUTRt89D48Z35yi1HcxayDf","deprecated":false,"name":"soAKRO/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"2SSnWNrc83otLpfRo792P6P3PESZpdr8cu2r8zCE6bMD","deprecated":false,"name":"soUNI/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"F1T7b6pnR8Pge3qmfNUfW6ZipRDiGpMww6TKTrRU4NiL","deprecated":false,"name":"soUBXT/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"HWHvQhFmJB3NUcu1aihKmrKegfVxBEHzwVX6yZCKEsi1","deprecated":false,"name":"SOL/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"35tV8UsHH8FnSAi3YFRrgCu4K9tb883wKnAXpnihot5r","deprecated":false,"name":"soLUA/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"6DgQRTpJTnAYBSShngAVZZDq7j9ogRN1GfSQ3cq9tubW","deprecated":false,"name":"soSUSHI/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"2WghiBkDL2yRhHdvm8CpprrkmfguuQGJTCDfPSudKBAZ","deprecated":false,"name":"soMATH/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"ErQXxiNfJgd4fqQ58PuEw5xY35TZG84tHT6FXf5s4UxY","deprecated":false,"name":"soHGET/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"CGC4UgWwqA9PET6Tfx6o6dLv94EK2coVkPtxgNHuBtxj","deprecated":false,"name":"soFRONT/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"GnKPri4thaGipzTbp8hhSGSrHgG4F8MFiZVrbRn16iG2","deprecated":false,"name":"soTOMO/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"6bxuB5N3bt3qW8UnPNLgMMzDq5sEH8pFmYJYGgzvE11V","deprecated":false,"name":"soAAVE/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"7cknqHAuGpfVXPtFoJpFvUjJ8wkmyEfbFusmwMfNy3FE","deprecated":false,"name":"MAPS/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"4absuMsgemvdjfkgdLQq1zKEjw3dHBoCWkzKoctndyqd","deprecated":false,"name":"soHXRO/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"4nCFQr8sahhhL4XJ7kngGFBmpkmyf3xLzemuMhn6mWTm","deprecated":false,"name":"KIN/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"3Xg9Q4VtZhD4bVYJbTfgGWFV5zjE3U7ztSHa938zizte","deprecated":false,"name":"soYFI/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"3yEZ9ZpXSQapmKjLAGKZEzUNA1rcupJtsDp5mPBWmGZR","deprecated":false,"name":"soLINK/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"J2XSt77XWim5HwtUM8RUwQvmRXNZsbMKpp5GTKpHafvf","deprecated":false,"name":"soSWAG/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"77quYg4MGneUdjgXCunt9GgM1usmrxKY31twEy3WHwcS","deprecated":false,"name":"USDT/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"GKLev6UHeX1KSDCyo2bzyG6wqhByEzDBkmYTxEdmYJgB","deprecated":false,"name":"OXY/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"address":"HdBhZrnrxpje39ggXnTb6WuTWVvj5YKcSHwYGQCRsVj","deprecated":false,"name":"OXY/soUSDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"name":"OXY/USDC","address":"GZ3WBFsqntmERPwumFEYgrX2B7J7G11MzNZAy7Hje27X","deprecated":false,"programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"name":"xCOPE/USDC","address":"7MpMwArporUHEGW7quUpkPZp5L5cHPs9eKUfKCdaPHq2","deprecated":false,"programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"name":"COPE/USDC","address":"6fc7v3PmjZG9Lk2XTot6BywGyYLkBQuzuFKd4FpCsPxk","deprecated":false,"programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"name":"MER/USDC","address":"HhvDWug3ftYNx5148ZmrQxzvEmohN2pKVNiRT4TVoekF","deprecated":true,"programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"name":"MER/USDT","address":"6HwcY27nbeb933UkEcxqJejtjWLfNQFWkGCjAVNes6g7","deprecated":false,"programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"name":"MER/USDC","address":"G4LcexdCzzJUKZfqyVDQFzpkjhB1JoCNL8Kooxi9nJz5","deprecated":false,"programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"name":"SNY/USDC","address":"DPfj2jYwPaezkCmUNm5SSYfkrkz8WFqwGLcxDDUsN3gA","deprecated":false,"programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"name":"SLRS/USDC","address":"2Gx3UfV831BAh8uQv1FKSPKS9yajfeeD8GJ4ZNb2o2YP","deprecated":false,"programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin"},{"name":"ETHV/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"HrgkuJryyKRserkoz7LBFYkASzhXHWp9XA6fRYCA6PHb"},{"name":"IETHV/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"5aoLj1bySDhhWjo7cLfT3pF2gqNGd63uEJ9HMSfASESL"},{"name":"SBR/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"HXBi8YBwbh4TXF6PjVw81m8Z3Cc4WBofvauj5SBFdgUs"},{"name":"renBTC/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"74Ciu5yRzhe8TFTHvQuEVbFZJrbnCMRoohBK33NNiPtv"},{"name":"renDOGE/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"5FpKCWYXgHWZ9CdDMHjwxAfqxJLdw2PRXuAmtECkzADk"},{"name":"DXL/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"DYfigimKWc5VhavR4moPBibx9sMcWYVSjVdWvPztBPTa"},{"name":"MNGO/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"3d4rzwpy9iGdCZvgxcu7B1YocYffVLsQXPXkBZKt2zLc"},{"name":"CYS/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"6V6y6QFi17QZC9qNRpVp7SaPiHpCTp2skbRQkUyZZXPW"},{"name":"POLIS/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"HxFLKUAmAMLz1jtT3hbvCMELwH5H9tpM2QugP8sKyfhW"},{"name":"ATLAS/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"Di66GTLsV64JgCCYGVcY21RZ173BHkjJVgPyezNN7P1K"},{"name":"LIKE/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"3WptgZZu34aiDrLMUiPntTYZGNZ72yT1yxHYxSdbTArX"},{"name":"MSOL/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"6oGsL2puUgySccKzn9XA9afqF217LfxP5ocq4B3LWsjy"},{"name":"MSOL/SOL","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"5cLrMai1DsLRYc1Nio9qMTicsWtvzjzZfJPXyAoF4t1Z"},{"name":"AAVE/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"8WZrmdpLckptiVKd2fPHPjewRVYQGQkjxi9vzRYG1sfs"},{"name":"AAVE/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"LghsMERQWQFK3zWMTrUkoyAJARQw2wSmcYZjexeN3zy"},{"name":"AKRO/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"G3h8NZgJozk9crme2me6sKDJuSQ12mNCtvC9NbSWqGuk"},{"name":"AKRO/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"DvbiPxKzuXZPcmUcYDqBz1tvUrXYPsNrRAjSeuwHtmEA"},{"name":"ALEPH/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"Fw4mvuE7KZmTjQPxP2sRpHwPDfRMWnKBupFZGyW9CAQH"},{"name":"ALEPH/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"GZeHR8uCTVoHVDZFRVXTgm386DK1EKehy9yMS3BFChcL"},{"name":"CEL/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"79ESpYSb2hM14KTRXPZUwDkxUGC5irE2esd1vxdXfnZz"},{"name":"CEL/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"J9ww1yufRNDDbUbDXmew2mW2ozkx7cme7dMvKjMQVHrL"},{"name":"CREAM/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"4pdQ2D4gehMhGu4z9jeQbEPUFbTxB5qcPr3zCynjJGyp"},{"name":"CREAM/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"6fspxMfBmYFTGFBDN5MU33A55i2MkGr7eSjBLPCAU6y9"},{"name":"ETH/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"8Gmi2HhZmwQPVdCwzS7CM66MGstMXPcTVHA7jF19cLZz"},{"name":"ETH/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"ch7kmPrtoQUSEPBggcNAvLGiMQkJagVwd3gDYfd8m7Q"},{"name":"FRONT/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"B95oZN5HCLGmFAhbzReWBA9cuSGPFQAXeuhm2FfpdrML"},{"name":"FRONT/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"DZTYyy1L5Pr6DmTtYY5bEuU9g3LQ4XGvuYiN3zS25yG7"},{"name":"FTT/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"2wteg25ch227n4Rh1CN4WNrDZXBpRBpWJ48mEC2K7f4r"},{"name":"FTT/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"BoHojHESAv4McZx9gXd1bWTZMq25JYyGz4qL1m5C3nvk"},{"name":"HGET/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"27e1mB6UoPohbc3MmwMXu5QM7b2E3k5Mbhwv6JguwyXg"},{"name":"HGET/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"BdRzTEKb7Qdu4tWts5zXjwcpQErZxEzvShKZ5QcthMag"},{"name":"HXRO/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"CBb5zXwNRB73WVjs2m21P5prcEZa6SWmej74Vzxh8dRm"},{"name":"HXRO/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"3BScwNxtMrEcQ5VTHyXHYQR98dTaxfyXGaLkuSjBY1dW"},{"name":"LINK/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"FJMjxMCiDKn16TLhXUdEbVDH5wC6k9EHYJTcrH6NcbDE"},{"name":"LINK/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"Gr2KmhK7Upr4uW56B1QQrJuhhgmot6zAHJeZALTMStiX"},{"name":"LUA/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"J9imTcEeahZqKuaoQaPcCeSGCMWL8qSACpK4B7bC8NN4"},{"name":"LUA/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"BMJ3CvQZ57cNnuc3Lz5Pb6cW6Sr9kZGz3qz2bJQTE24A"},{"name":"MATH/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"G8L1YLrktaG1t8YBMJs3CwV96nExvJJCSpw3DARPDjE2"},{"name":"MATH/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"CkvNfATB7nky8zPLuwS9bgcFbVRkQdkd5zuKEovyo9rs"},{"name":"RAY/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"2xiv8A5xrJ7RnGdxXB42uFEkYHJjszEhaJyKKt4WaLep"},{"name":"RSR/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"GqgkxEswUwHBntmzb5GpUhKrVpJhzreSruZycuJwdNwB"},{"name":"RSR/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"2j2or38X2FUbpkK4gkgvjDtqN3ibkKw3v5yn7o2gHqPc"},{"name":"SUSHI/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"3uWVMWu7cwMnYMAAdtsZNwaaqeeeZHARGZwcExnQiFay"},{"name":"SUSHI/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"T3aC6qcPAJtX1gqkckfSxBPdPWziz5fLYRt5Dz3Nafq"},{"name":"SWAG/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"wSkeLMv3ktJyLm51bvQWxY2saGKqGxbnUFimPxbgEvQ"},{"name":"SWAG/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"6URQ4zFWvPm1fhJCKKWorrh8X3mmTFiDDyXEUmSf8Rb2"},{"name":"SXP/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"G5F84rfqmWqzZv5GBpSn8mMwW8zJ2B4Y1GpGupiwjHNM"},{"name":"SXP/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"2FQbPW1ticJz2SMMbEXxbKWJKmw1wLc6ggSP2HyzdMen"},{"name":"UBXT/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"Hh4p7tJpqkGW6xsHM2LiPPMpJg43fwn5TbmVmfrURdLY"},{"name":"UBXT/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"5xhjc3ZtAwnBK3qsaro28VChL7WrxY9N4SG6UZpYxpGc"},{"name":"UNI/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"B7b5rjQuqQCuGqmUBWmcCTqaL3Z1462mo4NArqty6QFR"},{"name":"UNI/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"FrKM6kJtAjXknHPEpkrQtJSXZwUxV5dq26wDpc4YjQST"},{"name":"YFI/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"BiJXGFc1c4gyPpv9HLRJoKbZewWQrTCHGuxYKjYMQJpC"},{"name":"YFI/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"9sue9TZAeUhNtNAPPGb9dke7rkJeXktGD3u8ZC37GWnQ"},{"name":"AVAX/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"E8JQstcwjuqN5kdMyUJLNuaectymnhffkvfg1j286UCr"},{"name":"AXSet/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"HZCheduA4nsSuQpVww1TiyKZpXSAitqaXxjBD2ymg22X"},{"name":"BNB/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"4UPUurKveNEJgBqJzqHPyi8DhedvpYsMXi7d43CjAg2f"},{"name":"BNB/USDT","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"FjbKNZME5yVSC1R3HJM99kB3yir3q3frS5MteMFD72sV"},{"name":"GALA/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"F7WJsoxTWQRmAwAyFe9APmuVv4HqmhchFtdbR9dvAUDm"},{"name":"MATICpo/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"5WRoQxE59966N2XfD2wYy1uhuyKeoVJ9NBMH6r6RNYEF"},{"name":"ROSE/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"EybAYkmRKCyD4w8AErTG1bqmnvT85LFuPQPMCc8J3yD"},{"name":"SAND/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"3FE2g3cadTJjN3C7gNRavwnv7Yh9Midq7h9KgTVUE7tR"},{"name":"LUNA/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"HBTu8hNaoT3VyiSSzJYa8jwt9sDGKtJviSwFa11iXdmE"},{"name":"SHIB/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"Er7Jp4PADPVHifykFwbVoHdkL1RtZSsx9zGJrPJTrCgW"},{"name":"UST/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"8WmckvEoVGZvtN8knjdzFGbWJ3Sr4BcWdyzSYuCrD4YK"},{"name":"FAB/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"Cud48DK2qoxsWNzQeTL5D8sAiHsGwG8Ev1VMNcYLayxt"},{"name":"JET/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"6pQMoHDC2o8eeFxyTKtfnsr8d48hKFWsRpLHAqVHH2ZP"},{"name":"scnSOL/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"D52sefGCWho2nd5UGxWd7wCftAzeNEMNYZkdEPGEdQTb"},{"name":"stSOL/USDC","programId":"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin","deprecated":false,"address":"5F7LGsP1LPtaRV7vVKgxwNYX4Vf22xvuzyXjyar7jJqp"}]')},49777:e=>{"use strict";e.exports=JSON.parse('[{"address":"9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E","name":"BTC"},{"address":"2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk","name":"ETH"},{"address":"AGFEad2et2ZJif9jaGpdMixQqvW5i81aBdvKe7PHNfz3","name":"FTT"},{"address":"3JSf5tPeuscJGtaCp5giEiDhv51gQ4v3zWg8DGgyLfAB","name":"YFI"},{"address":"CWE8jPTUYhdCTZYWPTe1o5DFqfdjzWKc9WKz6rSjQUdG","name":"LINK"},{"address":"Ga2AXHpfAF6mv2ekZwcsJFqu7wB4NV331qNH7fW9Nst8","name":"XRP"},{"address":"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB","name":"USDT"},{"address":"BQcdHdAQW1hczDbBi9hiegXAR7A98Q9jx3X3iBBBDiq4","name":"WUSDT"},{"address":"BXXkv6z8ykpG1yuvUDPgh732wzVHB69RnB9YgSYh3itW","name":"WUSDC"},{"address":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","name":"USDC"},{"address":"MSRMcoVyrFxnSgo5uXwone5SKcGhT1KEJMFEkMEWf9L","name":"MSRM"},{"address":"SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt","name":"SRM"},{"address":"AR1Mtgh7zAtxuxGd2XPovXPVjcSdY3i4rQYisNadjfKy","name":"SUSHI"},{"address":"SF3oTvfWzEP3DTwGSvUXRrGTvr75pdZNnBLAH9bzMuX","name":"SXP"},{"address":"CsZ5LZkDS7h9TDKjrbL7VAwQZ9nsRu8vJLhRYfmGaN8K","name":"ALEPH"},{"address":"BtZQfWqDGbk9Wf2rXEiWyQBdBY1etnUUn6zEphvVS7yN","name":"HGET"},{"address":"5Fu5UUgbjpUvdBveb3a1JTNirL8rXtiYeSMWvKjtUNQv","name":"CREAM"},{"address":"873KLxCbz7s9Kc4ZzgYRtNmhfkQrhfyWGZJBmyCbC3ei","name":"UBXT"},{"address":"HqB7uswoVg4suaQiDP3wjxob1G5WdZ144zhdStwMCq7e","name":"HNT"},{"address":"9S4t2NEAiJVMvPdRYKVrfJpBafPBLtvbvyS3DecojQHw","name":"FRONT"},{"address":"6WNVCuxCGJzNjmMZoKyhZJwvJ5tYpsLyAtagzYASqBoF","name":"AKRO"},{"address":"DJafV9qemGp7mLMEn5wrfqaFwxsbLgUsGVS16zKRk9kc","name":"HXRO"},{"address":"DEhAasscXF4kEGxFgJ3bq4PpVGp5wyUxMRvn6TzGVHaw","name":"UNI"},{"address":"GUohe4DJUA5FKPWo3joiPgsB7yzer7LpDmt1Vhzy3Zht","name":"KEEP"},{"address":"GeDS162t9yGJuLEHPWXXGrb1zwkzinCgRwnT8vHYjKza","name":"MATH"},{"address":"So11111111111111111111111111111111111111112","name":"SOL"},{"address":"GXMvfY2jpQctDqZ9RoU3oWPhufKiCcFEfchvYumtX7jd","name":"TOMO"},{"address":"EqWCKXfs3x47uVosDpTRgFniThL9Y8iCztJaapxbEaVX","name":"LUA"},{"address":"9F9fNTT6qwjsu4X4yWYKZpsbw5qT7o6yR2i57JF2jagy","name":"SWAG"},{"address":"EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp","name":"FIDA"},{"address":"kinXdEcpDQeHPEuQnqmUgtYykqKGVFq6CeVX5iAHJq6","name":"KIN"},{"address":"MAPS41MDahZ9QdKXhVa4dWB9RuyfV4XqhyAZ8XcYepb","name":"MAPS"},{"address":"z3dn17yLaGMKffVogeFHQ9zWVcXgqgf3PQnDsNs2g6M","name":"OXY"},{"address":"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R","name":"RAY"},{"address":"3K6rftdAaQYMPunrtNRHgnK2UAtjm2JwyT2oCiTDouYE","name":"xCOPE"},{"address":"dK83wTVypEpa1pqiBbHY3MNuUnT3ADUZM4wk9VZXZEc","name":"AAVE"},{"address":"DgHK9mfhMtUwwv54GChRrU54T2Em5cuszq2uMuen1ZVE","name":"CEL"},{"address":"7ncCLJpP3MNww17LW8bRvx8odQQnubNtfNZBL5BgAEHW","name":"RSR"},{"address":"6ry4WBDvAwAnrYJVv6MCog4J8zx6S3cPgSqnTsDZ73AR","name":"TRYB"},{"address":"8HGyAAB1yoM1ttS7pXjHMa3dukTFGQggnFFH3hJZgzQh","name":"COPE"},{"address":"MERt85fc5boKw3BW1eYdxonEuJNvXbiMbs6hvheau5K","name":"MER"},{"address":"4dmKkXNHdgYsXqBHCuMikNQWwVomZURhYvkkX5c4pQ7y","name":"SNY"},{"address":"SLRSSpSLUTP7okbCUBYStWCo1vUgyt775faPqz8HUMr","name":"SLRS"},{"address":"CDJWUqTcYTVAKXAVXoQZFes5JUFc7owSeq7eMQcDSbo5","name":"renBTC"},{"address":"ArUkYE2XDKzqy77PRRGjo4wREWwqk6RXTfM9NeqzPvjU","name":"renDOGE"},{"address":"GsNzxJfFn6zQdJGeYsupJWzUAm57Ba7335mfhWvFiE9Z","name":"DXL"}]')}},e=>{var t=(41542,e(e.s=41542));window.JupiterRenderer=t}]); +//# sourceMappingURL=main-1.0.7-app.js.map \ No newline at end of file diff --git a/public/main-1.0.7-app.js.LICENSE.txt b/public/main-1.0.7-app.js.LICENSE.txt new file mode 100644 index 0000000..3238697 --- /dev/null +++ b/public/main-1.0.7-app.js.LICENSE.txt @@ -0,0 +1,309 @@ +/*! + * decimal.js v10.4.3 + * An arbitrary-precision Decimal type for JavaScript. + * https://github.com/MikeMcl/decimal.js + * Copyright (c) 2022 Michael Mclaughlin + * MIT Licence + */ + +/*! + * decimal.js v10.4.2 + * An arbitrary-precision Decimal type for JavaScript. + * https://github.com/MikeMcl/decimal.js + * Copyright (c) 2022 Michael Mclaughlin + * MIT Licence + */ + +/*! + * JavaScript Cookie v2.2.1 + * https://github.com/js-cookie/js-cookie + * + * Copyright 2006, 2015 Klaus Hartl & Fagner Brack + * Released under the MIT license + */ + +/*! + * The buffer module from node.js, for the browser. + * + * @author Feross Aboukhadijeh + * @license MIT + */ + +/*! +* screenfull +* v5.2.0 - 2021-11-03 +* (c) Sindre Sorhus; MIT License +*/ + +/*! ***************************************************************************** +Copyright (c) Microsoft Corporation. + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY +AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +***************************************************************************** */ + +/*! decimal.js-light v2.5.1 https://github.com/MikeMcl/decimal.js-light/LICENCE */ + +/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */ + +/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */ + +/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */ + +/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ + +/*! safe-buffer. MIT License. Feross Aboukhadijeh */ + +/** + * @license + * Lodash + * Copyright OpenJS Foundation and other contributors + * Released under MIT license + * Based on Underscore.js 1.8.3 + * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors + */ + +/** + * @license React + * use-sync-external-store-shim.production.min.js + * + * Copyright (c) Facebook, Inc. and its affiliates. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +/** + * Support for translating between Buffer instances and JavaScript + * native types. + * + * {@link module:Layout~Layout|Layout} is the basis of a class + * hierarchy that associates property names with sequences of encoded + * bytes. + * + * Layouts are supported for these scalar (numeric) types: + * * {@link module:Layout~UInt|Unsigned integers in little-endian + * format} with {@link module:Layout.u8|8-bit}, {@link + * module:Layout.u16|16-bit}, {@link module:Layout.u24|24-bit}, + * {@link module:Layout.u32|32-bit}, {@link + * module:Layout.u40|40-bit}, and {@link module:Layout.u48|48-bit} + * representation ranges; + * * {@link module:Layout~UIntBE|Unsigned integers in big-endian + * format} with {@link module:Layout.u16be|16-bit}, {@link + * module:Layout.u24be|24-bit}, {@link module:Layout.u32be|32-bit}, + * {@link module:Layout.u40be|40-bit}, and {@link + * module:Layout.u48be|48-bit} representation ranges; + * * {@link module:Layout~Int|Signed integers in little-endian + * format} with {@link module:Layout.s8|8-bit}, {@link + * module:Layout.s16|16-bit}, {@link module:Layout.s24|24-bit}, + * {@link module:Layout.s32|32-bit}, {@link + * module:Layout.s40|40-bit}, and {@link module:Layout.s48|48-bit} + * representation ranges; + * * {@link module:Layout~IntBE|Signed integers in big-endian format} + * with {@link module:Layout.s16be|16-bit}, {@link + * module:Layout.s24be|24-bit}, {@link module:Layout.s32be|32-bit}, + * {@link module:Layout.s40be|40-bit}, and {@link + * module:Layout.s48be|48-bit} representation ranges; + * * 64-bit integral values that decode to an exact (if magnitude is + * less than 2^53) or nearby integral Number in {@link + * module:Layout.nu64|unsigned little-endian}, {@link + * module:Layout.nu64be|unsigned big-endian}, {@link + * module:Layout.ns64|signed little-endian}, and {@link + * module:Layout.ns64be|unsigned big-endian} encodings; + * * 32-bit floating point values with {@link + * module:Layout.f32|little-endian} and {@link + * module:Layout.f32be|big-endian} representations; + * * 64-bit floating point values with {@link + * module:Layout.f64|little-endian} and {@link + * module:Layout.f64be|big-endian} representations; + * * {@link module:Layout.const|Constants} that take no space in the + * encoded expression. + * + * and for these aggregate types: + * * {@link module:Layout.seq|Sequence}s of instances of a {@link + * module:Layout~Layout|Layout}, with JavaScript representation as + * an Array and constant or data-dependent {@link + * module:Layout~Sequence#count|length}; + * * {@link module:Layout.struct|Structure}s that aggregate a + * heterogeneous sequence of {@link module:Layout~Layout|Layout} + * instances, with JavaScript representation as an Object; + * * {@link module:Layout.union|Union}s that support multiple {@link + * module:Layout~VariantLayout|variant layouts} over a fixed + * (padded) or variable (not padded) span of bytes, using an + * unsigned integer at the start of the data or a separate {@link + * module:Layout.unionLayoutDiscriminator|layout element} to + * determine which layout to use when interpreting the buffer + * contents; + * * {@link module:Layout.bits|BitStructure}s that contain a sequence + * of individual {@link + * module:Layout~BitStructure#addField|BitField}s packed into an 8, + * 16, 24, or 32-bit unsigned integer starting at the least- or + * most-significant bit; + * * {@link module:Layout.cstr|C strings} of varying length; + * * {@link module:Layout.blob|Blobs} of fixed- or variable-{@link + * module:Layout~Blob#length|length} raw data. + * + * All {@link module:Layout~Layout|Layout} instances are immutable + * after construction, to prevent internal state from becoming + * inconsistent. + * + * @local Layout + * @local ExternalLayout + * @local GreedyCount + * @local OffsetLayout + * @local UInt + * @local UIntBE + * @local Int + * @local IntBE + * @local NearUInt64 + * @local NearUInt64BE + * @local NearInt64 + * @local NearInt64BE + * @local Float + * @local FloatBE + * @local Double + * @local DoubleBE + * @local Sequence + * @local Structure + * @local UnionDiscriminator + * @local UnionLayoutDiscriminator + * @local Union + * @local VariantLayout + * @local BitStructure + * @local BitField + * @local Boolean + * @local Blob + * @local CString + * @local Constant + * @local bindConstructorLayout + * @module Layout + * @license MIT + * @author Peter A. Bigot + * @see {@link https://github.com/pabigot/buffer-layout|buffer-layout on GitHub} + */ + +/** + * Support for translating between Uint8Array instances and JavaScript + * native types. + * + * {@link module:Layout~Layout|Layout} is the basis of a class + * hierarchy that associates property names with sequences of encoded + * bytes. + * + * Layouts are supported for these scalar (numeric) types: + * * {@link module:Layout~UInt|Unsigned integers in little-endian + * format} with {@link module:Layout.u8|8-bit}, {@link + * module:Layout.u16|16-bit}, {@link module:Layout.u24|24-bit}, + * {@link module:Layout.u32|32-bit}, {@link + * module:Layout.u40|40-bit}, and {@link module:Layout.u48|48-bit} + * representation ranges; + * * {@link module:Layout~UIntBE|Unsigned integers in big-endian + * format} with {@link module:Layout.u16be|16-bit}, {@link + * module:Layout.u24be|24-bit}, {@link module:Layout.u32be|32-bit}, + * {@link module:Layout.u40be|40-bit}, and {@link + * module:Layout.u48be|48-bit} representation ranges; + * * {@link module:Layout~Int|Signed integers in little-endian + * format} with {@link module:Layout.s8|8-bit}, {@link + * module:Layout.s16|16-bit}, {@link module:Layout.s24|24-bit}, + * {@link module:Layout.s32|32-bit}, {@link + * module:Layout.s40|40-bit}, and {@link module:Layout.s48|48-bit} + * representation ranges; + * * {@link module:Layout~IntBE|Signed integers in big-endian format} + * with {@link module:Layout.s16be|16-bit}, {@link + * module:Layout.s24be|24-bit}, {@link module:Layout.s32be|32-bit}, + * {@link module:Layout.s40be|40-bit}, and {@link + * module:Layout.s48be|48-bit} representation ranges; + * * 64-bit integral values that decode to an exact (if magnitude is + * less than 2^53) or nearby integral Number in {@link + * module:Layout.nu64|unsigned little-endian}, {@link + * module:Layout.nu64be|unsigned big-endian}, {@link + * module:Layout.ns64|signed little-endian}, and {@link + * module:Layout.ns64be|unsigned big-endian} encodings; + * * 32-bit floating point values with {@link + * module:Layout.f32|little-endian} and {@link + * module:Layout.f32be|big-endian} representations; + * * 64-bit floating point values with {@link + * module:Layout.f64|little-endian} and {@link + * module:Layout.f64be|big-endian} representations; + * * {@link module:Layout.const|Constants} that take no space in the + * encoded expression. + * + * and for these aggregate types: + * * {@link module:Layout.seq|Sequence}s of instances of a {@link + * module:Layout~Layout|Layout}, with JavaScript representation as + * an Array and constant or data-dependent {@link + * module:Layout~Sequence#count|length}; + * * {@link module:Layout.struct|Structure}s that aggregate a + * heterogeneous sequence of {@link module:Layout~Layout|Layout} + * instances, with JavaScript representation as an Object; + * * {@link module:Layout.union|Union}s that support multiple {@link + * module:Layout~VariantLayout|variant layouts} over a fixed + * (padded) or variable (not padded) span of bytes, using an + * unsigned integer at the start of the data or a separate {@link + * module:Layout.unionLayoutDiscriminator|layout element} to + * determine which layout to use when interpreting the buffer + * contents; + * * {@link module:Layout.bits|BitStructure}s that contain a sequence + * of individual {@link + * module:Layout~BitStructure#addField|BitField}s packed into an 8, + * 16, 24, or 32-bit unsigned integer starting at the least- or + * most-significant bit; + * * {@link module:Layout.cstr|C strings} of varying length; + * * {@link module:Layout.blob|Blobs} of fixed- or variable-{@link + * module:Layout~Blob#length|length} raw data. + * + * All {@link module:Layout~Layout|Layout} instances are immutable + * after construction, to prevent internal state from becoming + * inconsistent. + * + * @local Layout + * @local ExternalLayout + * @local GreedyCount + * @local OffsetLayout + * @local UInt + * @local UIntBE + * @local Int + * @local IntBE + * @local NearUInt64 + * @local NearUInt64BE + * @local NearInt64 + * @local NearInt64BE + * @local Float + * @local FloatBE + * @local Double + * @local DoubleBE + * @local Sequence + * @local Structure + * @local UnionDiscriminator + * @local UnionLayoutDiscriminator + * @local Union + * @local VariantLayout + * @local BitStructure + * @local BitField + * @local Boolean + * @local Blob + * @local CString + * @local Constant + * @local bindConstructorLayout + * @module Layout + * @license MIT + * @author Peter A. Bigot + * @see {@link https://github.com/pabigot/buffer-layout|buffer-layout on GitHub} + */ + +/** + * [js-sha256]{@link https://github.com/emn178/js-sha256} + * + * @version 0.9.0 + * @author Chen, Yi-Cyuan [emn178@gmail.com] + * @copyright Chen, Yi-Cyuan 2014-2017 + * @license MIT + */ diff --git a/public/main-1.0.7-app.js.map b/public/main-1.0.7-app.js.map new file mode 100644 index 0000000..1a3c00b --- /dev/null +++ b/public/main-1.0.7-app.js.map @@ -0,0 +1 @@ +{"version":3,"file":"main-1.0.7-app.js","mappings":"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ACN24E,IAAK,kDAET,CACI7c,KAAM,KACN97D,KAAM,sBACN24E,IAAK,qDAET,CACI7c,KAAM,KACN97D,KAAM,yBACN24E,IAAK,6BAET,CACI7c,KAAM,KACN97D,KAAM,sBACN24E,IAAK,gCAET,CACI7c,KAAM,KACN97D,KAAM,wBACN24E,IAAK,2BAET,CACI7c,KAAM,KACN97D,KAAM,mBACN24E,IAAK,wBAET,CACI7c,KAAM,KACN97D,KAAM,kBACN24E,IAAK,sBAET,CACI7c,KAAM,KACN97D,KAAM,mBACN24E,IAAK,sBAET,CACI7c,KAAM,KACN97D,KAAM,qBACN24E,IAAK,0BAET,CACI7c,KAAM,KACN97D,KAAM,+BACN24E,IAAK,qCAET,CACI7c,KAAM,KACN97D,KAAM,SACN24E,IAAK,uBAET,CACI7c,KAAM,KACN97D,KAAM,qBACN24E,IAAK,mDC//DJwzE,IDmgEmBxB,GAAiBuB,ICngEZ,CACjC9vI,QAAS,QACTpc,KAAM,sBACN8tB,aAAc,CACV,CACI9tB,KAAM,aACNqF,SAAU,CACN,CACIrF,KAAM,OACNoyF,OAAO,EACP/rD,UAAU,GAEd,CACIrmC,KAAM,cACNoyF,OAAO,EACP/rD,UAAU,EACV+uD,IAAK,CACDr5C,MAAO,CACH,CACIvZ,KAAM,QACNgsC,KAAM,SACN9wE,MAAO,eAEX,CACI8kC,KAAM,UACNgsC,KAAM,YACN6S,KAAM,WAKtB,CACIrhF,KAAM,QACNoyF,OAAO,EACP/rD,UAAU,GAEd,CACIrmC,KAAM,YACNoyF,OAAO,EACP/rD,UAAU,GAEd,CACIrmC,KAAM,eACNoyF,OAAO,EACP/rD,UAAU,GAEd,CACIrmC,KAAM,QACNoyF,OAAO,EACP/rD,UAAU,GAEd,CACIrmC,KAAM,gBACNoyF,OAAO,EACP/rD,UAAU,IAGlB+U,KAAM,CACF,CACIp7C,KAAM,OACNwuE,KAAM,MAEV,CACIxuE,KAAM,UACNwuE,KAAM,SAIlB,CACIxuE,KAAM,eACNqF,SAAU,CACN,CACIrF,KAAM,OACNoyF,OAAO,EACP/rD,UAAU,GAEd,CACIrmC,KAAM,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,CACJ,CACEp7C,KAAM,cACNwuE,KAAM,QAIZ,CACExuE,KAAM,mCACNqF,SAAU,CACR,CACErF,KAAM,mBACNoyF,OAAO,EACP/rD,UAAU,GAEZ,CACErmC,KAAM,gCACNoyF,OAAO,EACP/rD,UAAU,GAEZ,CACErmC,KAAM,mCACNoyF,OAAO,EACP/rD,UAAU,IAGd+U,KAAM,KAGN,GAAW,CACb,CACEp7C,KAAM,mBACNwuE,KAAM,CACJhsC,KAAM,SACNslD,OAAQ,CACN,CACE9nF,KAAM,eACNwuE,KAAM,aAER,CACExuE,KAAM,+BACNwuE,KAAM,aAER,CACExuE,KAAM,gCACNwuE,KAAM,aAER,CACExuE,KAAM,yBACNwuE,KAAM,UAKd,CACExuE,KAAM,UACNwuE,KAAM,CACJhsC,KAAM,SACNslD,OAAQ,CACN,CACE9nF,KAAM,mBACNwuE,KAAM,aAER,CACExuE,KAAM,cACNwuE,KAAM,OAER,CACExuE,KAAM,iBACNwuE,KAAM,UAKd,CACExuE,KAAM,WACNwuE,KAAM,CACJhsC,KAAM,SACNslD,OAAQ,CACN,CACE9nF,KAAM,YACNwuE,KAAM,aAER,CACExuE,KAAM,eACNwuE,KAAM,aAER,CACExuE,KAAM,YACNwuE,KAAM,QAER,CACExuE,KAAM,iBACNwuE,KAAM,OAER,CACExuE,KAAM,iBACNwuE,KAAM,OAER,CACExuE,KAAM,uBACNwuE,KAAM,QAER,CACExuE,KAAM,WACNwuE,KAAM,OAER,CACExuE,KAAM,uBACNwuE,KAAM,QAER,CACExuE,KAAM,WACNwuE,KAAM,OAER,CACExuE,KAAM,cACNwuE,KAAM,CACJtxB,MAAO,CACL,CACE0qC,QAAS,sBAEX,QAOZ,CACE5nF,KAAM,YACNwuE,KAAM,CACJhsC,KAAM,SACNslD,OAAQ,CACN,CACE9nF,KAAM,iBACNwuE,KAAM,OAER,CACExuE,KAAM,QACNwuE,KAAM,CACJtxB,MAAO,CACL,CACE0qC,QAAS,QAEX,MAIN,CACE5nF,KAAM,YACNwuE,KAAM,gBAKd,CACExuE,KAAM,YACNwuE,KAAM,CACJhsC,KAAM,SACNslD,OAAQ,CACN,CACE9nF,KAAM,mBACNwuE,KAAM,aAER,CACExuE,KAAM,gBACNwuE,KAAM,CACJtxB,MAAO,CACL,KACA,KAIN,CACEl9C,KAAM,cACNwuE,KAAM,OAER,CACExuE,KAAM,kBACNwuE,KAAM,CACJtxB,MAAO,CACL,KACA,KAIN,CACEl9C,KAAM,UACNwuE,KAAM,OAER,CACExuE,KAAM,kBACNwuE,KAAM,OAER,CACExuE,KAAM,YACNwuE,KAAM,QAER,CACExuE,KAAM,YACNwuE,KAAM,QAER,CACExuE,KAAM,mBACNwuE,KAAM,OAER,CACExuE,KAAM,mBACNwuE,KAAM,OAER,CACExuE,KAAM,mBACNwuE,KAAM,OAER,CACExuE,KAAM,aACNwuE,KAAM,aAER,CACExuE,KAAM,cACNwuE,KAAM,aAER,CACExuE,KAAM,mBACNwuE,KAAM,QAER,CACExuE,KAAM,aACNwuE,KAAM,aAER,CACExuE,KAAM,cACNwuE,KAAM,aAER,CACExuE,KAAM,mBACNwuE,KAAM,QAER,CACExuE,KAAM,6BACNwuE,KAAM,OAER,CACExuE,KAAM,cACNwuE,KAAM,CACJtxB,MAAO,CACL,CACE0qC,QAAS,uBAEX,SAQVW,GAAQ,CACV,CACEvoF,KAAM,oBACNwuE,KAAM,CACJhsC,KAAM,SACNslD,OAAQ,CACN,CACE9nF,KAAM,eACNwuE,KAAM,SAKd,CACExuE,KAAM,gCACNwuE,KAAM,CACJhsC,KAAM,SACNslD,OAAQ,CACN,CACE9nF,KAAM,eACNwuE,KAAM,MAER,CACExuE,KAAM,eACNwuE,KAAM,SAKd,CACExuE,KAAM,qBACNwuE,KAAM,CACJhsC,KAAM,SACNslD,OAAQ,CACN,CACE9nF,KAAM,yBACNwuE,KAAM,QAER,CACExuE,KAAM,aACNwuE,KAAM,UAKd,CACExuE,KAAM,OACNwuE,KAAM,CACJhsC,KAAM,SACNslD,OAAQ,CACN,CACE9nF,KAAM,cACNwuE,KAAM,QAER,CACExuE,KAAM,eACNwuE,KAAM,QAER,CACExuE,KAAM,iBACNwuE,KAAM,QAER,CACExuE,KAAM,oBACNwuE,KAAM,QAER,CACExuE,KAAM,oBACNwuE,KAAM,QAER,CACExuE,KAAM,uBACNwuE,KAAM,CACJtxB,MAAO,CACL,OACA,QAOZ,CACEl9C,KAAM,sBACNwuE,KAAM,CACJhsC,KAAM,SACNslD,OAAQ,CACN,CACE9nF,KAAM,OACNwuE,KAAM,aAER,CACExuE,KAAM,QACNwuE,KAAM,aAER,CACExuE,KAAM,YACNwuE,KAAM,aAER,CACExuE,KAAM,wBACNwuE,KAAM,QAER,CACExuE,KAAM,kBACNwuE,KAAM,WAKd,CACExuE,KAAM,iBACNwuE,KAAM,CACJhsC,KAAM,SACNslD,OAAQ,CACN,CACE9nF,KAAM,gBACNwuE,KAAM,SAKd,CACExuE,KAAM,YACNwuE,KAAM,CACJhsC,KAAM,OACNoc,SAAU,CACR,CACE5+C,KAAM,SAER,CACEA,KAAM,UAER,CACEA,KAAM,YAKd,CACEA,KAAM,YACNwuE,KAAM,CACJhsC,KAAM,OACNoc,SAAU,CACR,CACE5+C,KAAM,SAER,CACEA,KAAM,YAKd,CACEA,KAAM,YACNwuE,KAAM,CACJhsC,KAAM,OACNoc,SAAU,CACR,CACE5+C,KAAM,QAER,CACEA,KAAM,aAMZ,GAAS,CACX,CACE87D,KAAM,IACN97D,KAAM,cACN24E,IAAK,qCAEP,CACE7c,KAAM,KACN97D,KAAM,mBACN24E,IAAK,sCAEP,CACE7c,KAAM,KACN97D,KAAM,uBACN24E,IAAK,+CAEP,CACE7c,KAAM,KACN97D,KAAM,4BACN24E,IAAK,6CAEP,CACE7c,KAAM,KACN97D,KAAM,qBACN24E,IAAK,iCAEP,CACE7c,KAAM,KACN97D,KAAM,wBACN24E,IAAK,6CAEP,CACE7c,KAAM,KACN97D,KAAM,eACN24E,IAAK,4BAEP,CACE7c,KAAM,KACN97D,KAAM,kBACN24E,IAAK,qCAEP,CACE7c,KAAM,KACN97D,KAAM,sBACN24E,IAAK,8BAEP,CACE7c,KAAM,KACN97D,KAAM,eACN24E,IAAK,oCAEP,CACE7c,KAAM,KACN97D,KAAM,mBACN24E,IAAK,kEAEP,CACE7c,KAAM,KACN97D,KAAM,uBACN24E,IAAK,qCAEP,CACE7c,KAAM,KACN97D,KAAM,gBACN24E,IAAK,8CAEP,CACE7c,KAAM,KACN97D,KAAM,mBACN24E,IAAK,+CAEP,CACE7c,KAAM,KACN97D,KAAM,oBACN24E,IAAK,sBAEP,CACE7c,KAAM,KACN97D,KAAM,qBACN24E,IAAK,uBAEP,CACE7c,KAAM,KACN97D,KAAM,oBACN24E,IAAK,gDAEP,CACE7c,KAAM,KACN97D,KAAM,mBACN24E,IAAK,sBAEP,CACE7c,KAAM,KACN97D,KAAM,oBACN24E,IAAK,0BAEP,CACE7c,KAAM,KACN97D,KAAM,2BACN24E,IAAK,4DAEP,CACE7c,KAAM,KACN97D,KAAM,6BACN24E,IAAK,mCAEP,CACE7c,KAAM,KACN97D,KAAM,6BACN24E,IAAK,mDAEP,CACE7c,KAAM,KACN97D,KAAM,mBACN24E,IAAK,+DAEP,CACE7c,KAAM,KACN97D,KAAM,2BACN24E,IAAK,yDAEP,CACE7c,KAAM,KACN97D,KAAM,wBACN24E,IAAK,6BAEP,CACE7c,KAAM,KACN97D,KAAM,uBACN24E,IAAK,0BAEP,CACE7c,KAAM,KACN97D,KAAM,qBACN24E,IAAK,wBAEP,CACE7c,KAAM,KACN97D,KAAM,gCACN24E,IAAK,0EAEP,CACE7c,KAAM,KACN97D,KAAM,qBACN24E,IAAK,yBAEP,CACE7c,KAAM,KACN97D,KAAM,6BACN24E,IAAK,kCAEP,CACE7c,KAAM,KACN97D,KAAM,mCACN24E,IAAK,4CAEP,CACE7c,KAAM,KACN97D,KAAM,iBACN24E,IAAK,mBAEP,CACE7c,KAAM,KACN97D,KAAM,qBACN24E,IAAK,0BAEP,CACE7c,KAAM,KACN97D,KAAM,yBACN24E,IAAK,2BAEP,CACE7c,KAAM,KACN97D,KAAM,iCACN24E,IAAK,kEAEP,CACE7c,KAAM,KACN97D,KAAM,qBACN24E,IAAK,yCAEP,CACE7c,KAAM,KACN97D,KAAM,wBACN24E,IAAK,sCAEP,CACE7c,KAAM,KACN97D,KAAM,uBACN24E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T,CACI7c,KAAM,KACN97D,KAAM,qBACN24E,IAAK,6BAET,CACI7c,KAAM,KACN97D,KAAM,oBACN24E,IAAK,0DAET,CACI7c,KAAM,KACN97D,KAAM,kBACN24E,IAAK,4BAET,CACI7c,KAAM,KACN97D,KAAM,eACN24E,IAAK,kFAET,CACI7c,KAAM,KACN97D,KAAM,sBACN24E,IAAK,yBAET,CACI7c,KAAM,KACN97D,KAAM,mBACN24E,IAAK,sBAET,CACI7c,KAAM,KACN97D,KAAM,kBACN24E,IAAK,0BAET,CACI7c,KAAM,KACN97D,KAAM,sBACN24E,IAAK,yBAET,CACI7c,KAAM,KACN97D,KAAM,wBACN24E,IAAK,4BAET,CACI7c,KAAM,KACN97D,KAAM,2BACN24E,IAAK,gCAET,CACI7c,KAAM,KACN97D,KAAM,eACN24E,IAAK,iBAET,CACI7c,KAAM,KACN97D,KAAM,sBACN24E,IAAK,yBAET,CACI7c,KAAM,KACN97D,KAAM,yBACN24E,IAAK,6BAET,CACI7c,KAAM,KACN97D,KAAM,mBACN24E,IAAK,sBAET,CACI7c,KAAM,KACN97D,KAAM,6BACN24E,IAAK,uDAET,CACI7c,KAAM,KACN97D,KAAM,sBACN24E,IAAK,yBAET,CACI7c,KAAM,KACN97D,KAAM,uBACN24E,IAAK,uCAET,CACI7c,KAAM,KACN97D,KAAM,oBACN24E,IAAK,kCAET,CACI7c,KAAM,KACN97D,KAAM,kBACN24E,IAAK,0CAET,CACI7c,KAAM,KACN97D,KAAM,uBACN24E,IAAK,4BAET,CACI7c,KAAM,KACN97D,KAAM,uBACN24E,IAAK,8BAET,CACI7c,KAAM,KACN97D,KAAM,oBACN24E,IAAK,oCAET,CACI7c,KAAM,KACN97D,KAAM,8BACN24E,IAAK,qCAET,CACI7c,KAAM,KACN97D,KAAM,2BACN24E,IAAK,6BAET,CACI7c,KAAM,KACN97D,KAAM,sBACN24E,IAAK,sDAET,CACI7c,KAAM,KACN97D,KAAM,oBACN24E,IAAK,uBAET,CACI7c,KAAM,KACN97D,KAAM,yBACN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lH,KAAM,uBACNwuE,KAAM,MACNtnE,OAAO,KAInB,CACIlH,KAAM,cACN8nF,OAAQ,CACJ,CACI9nF,KAAM,eACNwuE,KAAM,CACFoZ,QAAS,gBAEb1gF,OAAO,GAEX,CACIlH,KAAM,cACNwuE,KAAM,MACNtnE,OAAO,GAEX,CACIlH,KAAM,cACNwuE,KAAM,YACNtnE,OAAO,KAInB,CACIlH,KAAM,iBACN8nF,OAAQ,CACJ,CACI9nF,KAAM,aACNwuE,KAAM,MACNtnE,OAAO,KAInB,CACIlH,KAAM,aACN8nF,OAAQ,CACJ,CACI9nF,KAAM,WACNwuE,KAAM,YACNtnE,OAAO,GAEX,CACIlH,KAAM,OACNwuE,KAAM,MACNtnE,OAAO,KAInB,CACIlH,KAAM,cACN8nF,OAAQ,CACJ,CACI9nF,KAAM,cACNwuE,KAAM,MACNtnE,OAAO,MAKvBk6E,OAAQ,CACJ,CACItlB,KAAM,IACN97D,KAAM,kBACN24E,IAAK,qBAET,CACI7c,KAAM,KACN97D,KAAM,mBACN24E,IAAK,+BAET,CACI7c,KAAM,KACN97D,KAAM,uBACN24E,IAAK,2BAET,CACI7c,KAAM,KACN97D,KAAM,eACN24E,IAAK,gBAET,CACI7c,KAAM,KACN97D,KAAM,eACN24E,IAAK,2BAET,CACI7c,KAAM,KACN97D,KAAM,yBACN24E,IAAK,6BAET,CACI7c,KAAM,KACN97D,KAAM,iBACN24E,IAAK,uCAET,CACI7c,KAAM,KACN97D,KAAM,iCACN24E,IAAK,sCAET,CACI7c,KAAM,KACN97D,KAAM,qBACN24E,IAAK,kDAET,CACI7c,KAAM,KACN97D,KAAM,kBACN24E,IAAK,oBAET,CACI7c,KAAM,KACN97D,KAAM,sBACN24E,IAAK,yBAET,CACI7c,KAAM,KACN97D,KAAM,6BACN24E,IAAK,iCAET,CACI7c,KAAM,KACN97D,KAAM,cACN24E,IAAK,gBAET,CACI7c,KAAM,KACN97D,KAAM,4BACN24E,IAAK,mCF3+By6rG,GAAG,IAAIusH,GAAGrnM,GAAGmnM,GAAGxyG,MAAMntF,SAAS7B,OAAO,OAAO3F,EAAE4F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","sources":["webpack://@jup-ag/terminal/./node_modules/.pnpm/@blockworks-foundation+mango-client@3.6.20/node_modules/@blockworks-foundation/mango-client/lib/src/MangoAccount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@blockworks-foundation+mango-client@3.6.20/node_modules/@blockworks-foundation/mango-client/lib/src/MangoGroup.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@blockworks-foundation+mango-client@3.6.20/node_modules/@blockworks-foundation/mango-client/lib/src/PerpAccount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@blockworks-foundation+mango-client@3.6.20/node_modules/@blockworks-foundation/mango-client/lib/src/PerpEventQueue.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@blockworks-foundation+mango-client@3.6.20/node_modules/@blockworks-foundation/mango-client/lib/src/PerpMarket.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@blockworks-foundation+mango-client@3.6.20/node_modules/@blockworks-foundation/mango-client/lib/src/RootBank.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@blockworks-foundation+mango-client@3.6.20/node_modules/@blockworks-foundation/mango-client/lib/src/book.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@blockworks-foundation+mango-client@3.6.20/node_modules/@blockworks-foundation/mango-client/lib/src/client.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@blockworks-foundation+mango-client@3.6.20/node_modules/@blockworks-foundation/mango-client/lib/src/config.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@blockworks-foundation+mango-client@3.6.20/node_modules/@blockworks-foundation/mango-client/lib/src/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@blockworks-foundation+mango-client@3.6.20/node_modules/@blockworks-foundation/mango-client/lib/src/instruction.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@blockworks-foundation+mango-client@3.6.20/node_modules/@blockworks-foundation/mango-client/lib/src/layout.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@blockworks-foundation+mango-client@3.6.20/node_modules/@blockworks-foundation/mango-client/lib/src/utils/adapterTypes.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@blockworks-foundation+mango-client@3.6.20/node_modules/@blockworks-foundation/mango-client/lib/src/utils/fixednum.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@blockworks-foundation+mango-client@3.6.20/node_modules/@blockworks-foundation/mango-client/lib/src/utils/token.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@blockworks-foundation+mango-client@3.6.20/node_modules/@blockworks-foundation/mango-client/lib/src/utils/types.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@blockworks-foundation+mango-client@3.6.20/node_modules/@blockworks-foundation/mango-client/lib/src/utils/utils.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@coral-xyz+borsh@0.26.0_@solana+web3.js@1.73.0/node_modules/@coral-xyz/borsh/dist/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+lifinity-sdk@0.1.72/node_modules/@jup-ag/lifinity-sdk/lib/curve.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+lifinity-sdk@0.1.72/node_modules/@jup-ag/lifinity-sdk/lib/idl/lifinity_amm.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+lifinity-sdk@0.1.72/node_modules/@jup-ag/lifinity-sdk/lib/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+lifinity-sdk@0.1.72/node_modules/@jup-ag/lifinity-sdk/lib/layout.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+lifinity-sdk@0.1.72/node_modules/@jup-ag/lifinity-sdk/lib/lifinity_amm.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+lifinity-sdk@0.1.72/node_modules/@jup-ag/lifinity-sdk/lib/network.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+lifinity-sdk@0.1.72/node_modules/@jup-ag/lifinity-sdk/lib/pool.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+lifinity-sdk@0.1.72/node_modules/@jup-ag/lifinity-sdk/lib/tokens.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+lifinity-sdk@0.1.72/node_modules/@jup-ag/lifinity-sdk/lib/transaction.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+lifinity-sdk@0.1.72/node_modules/@jup-ag/lifinity-sdk/lib/utils.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+math@4.0.0-beta.11/node_modules/@jup-ag/math/dist/math.esm.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+phoenix-sdk@1.0.5_@solana+web3.js@1.73.0/node_modules/@jup-ag/phoenix-sdk/dist/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+solana-contrib@1.14.11_2c3thrgaemkadsehqvxmpc5dbe/node_modules/@saberhq/solana-contrib/dist/esm/computeBudget/layouts.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+solana-contrib@1.14.11_2c3thrgaemkadsehqvxmpc5dbe/node_modules/@saberhq/solana-contrib/dist/esm/computeBudget/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+solana-contrib@1.14.11_2c3thrgaemkadsehqvxmpc5dbe/node_modules/@saberhq/solana-contrib/dist/esm/utils/instructions.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+solana-contrib@1.14.11_2c3thrgaemkadsehqvxmpc5dbe/node_modules/@saberhq/solana-contrib/dist/esm/utils/printTXTable.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+solana-contrib@1.14.11_2c3thrgaemkadsehqvxmpc5dbe/node_modules/@saberhq/solana-contrib/dist/esm/utils/pubkeyCache.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+solana-contrib@1.14.11_2c3thrgaemkadsehqvxmpc5dbe/node_modules/@saberhq/solana-contrib/dist/esm/utils/txLink.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+solana-contrib@1.14.11_2c3thrgaemkadsehqvxmpc5dbe/node_modules/@saberhq/solana-contrib/dist/esm/transaction/TransactionEnvelope.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+solana-contrib@1.14.11_2c3thrgaemkadsehqvxmpc5dbe/node_modules/@saberhq/solana-contrib/dist/esm/provider.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+solana-contrib@1.14.11_2c3thrgaemkadsehqvxmpc5dbe/node_modules/@saberhq/solana-contrib/dist/esm/transaction/programErr.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+token-utils@1.14.11_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/token-utils/dist/esm/ata.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+token-utils@1.14.11_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/token-utils/dist/esm/layout.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@ubeswap+token-math@5.2.1_jsbi@4.3.0/node_modules/@ubeswap/token-math/dist/esm/constants.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/big.js@6.2.1/node_modules/big.js/big.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/tiny-invariant@1.3.1/node_modules/tiny-invariant/dist/esm/tiny-invariant.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@ubeswap+token-math@5.2.1_jsbi@4.3.0/node_modules/@ubeswap/token-math/dist/esm/format.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@ubeswap+token-math@5.2.1_jsbi@4.3.0/node_modules/@ubeswap/token-math/dist/esm/utils.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@ubeswap+token-math@5.2.1_jsbi@4.3.0/node_modules/@ubeswap/token-math/dist/esm/fraction.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@ubeswap+token-math@5.2.1_jsbi@4.3.0/node_modules/@ubeswap/token-math/dist/esm/percent.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@ubeswap+token-math@5.2.1_jsbi@4.3.0/node_modules/@ubeswap/token-math/dist/esm/tokenAmount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+token-utils@1.14.11_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/token-utils/dist/esm/splTokenRegistry.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+token-utils@1.14.11_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/token-utils/dist/esm/token.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+token-utils@1.14.11_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/token-utils/dist/esm/tokenAmount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+token-utils@1.14.11_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/token-utils/dist/esm/common.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.13.6_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/calculator/curve.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.13.6_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/calculator/amounts.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.13.6_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/constants.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.13.6_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/state/fees.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.13.6_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/instructions/common.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.13.6_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/instructions/admin.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.13.6_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/state/layout.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.13.6_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/instructions/layouts.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.13.6_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/instructions/swap.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.13.6_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/stable-swap.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.13.6_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/util/account.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.13.6_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/state/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.13.6_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/entities/exchange.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/fzstd@0.0.4/node_modules/fzstd/esm/index.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+optimist@0.2.0_3uu5xgoq3e7kvunyrzjtujz4mu/node_modules/@mercurial-finance/optimist/dist/optimist.esm.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.24.2/node_modules/@project-serum/anchor/dist/browser/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@noble+hashes@1.1.2/node_modules/@noble/hashes/esm/_assert.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@noble+hashes@1.1.2/node_modules/@noble/hashes/esm/utils.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@noble+hashes@1.1.2/node_modules/@noble/hashes/esm/cryptoBrowser.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@noble+hashes@1.1.2/node_modules/@noble/hashes/esm/_sha2.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@noble+hashes@1.1.2/node_modules/@noble/hashes/esm/sha256.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/decimal.js@10.4.3/node_modules/decimal.js/decimal.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+crema-sdk-v2@2.1.6/node_modules/@jup-ag/crema-sdk-v2/dist/index.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.22.1/node_modules/@project-serum/anchor/dist/browser/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+cykura-sdk-core@0.1.8/node_modules/@jup-ag/cykura-sdk-core/dist/cykura-sdk-core.esm.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+cykura-sdk@0.1.25/node_modules/@jup-ag/cykura-sdk/dist/cykura-sdk.esm.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/bignumber.js@9.1.0/node_modules/bignumber.js/bignumber.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+deltafi-sdk@0.0.2_@solana+web3.js@1.73.0/node_modules/@jup-ag/deltafi-sdk/dist/index.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+buffer-layout-utils@0.2.0/node_modules/@solana/buffer-layout-utils/lib/esm/base.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+buffer-layout-utils@0.2.0/node_modules/@solana/buffer-layout-utils/lib/esm/bigint.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+buffer-layout-utils@0.2.0/node_modules/@solana/buffer-layout-utils/lib/esm/native.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+buffer-layout-utils@0.2.0/node_modules/@solana/buffer-layout-utils/lib/esm/decimal.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+buffer-layout-utils@0.2.0/node_modules/@solana/buffer-layout-utils/lib/esm/web3.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/utils/common.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/provider.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/error.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/coder/idl.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/coder/common.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/coder/instruction.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/coder/accounts.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/coder/event.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/utils/features.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/coder/state.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/coder/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/idl.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/program/common.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/utils/pubkey.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/program/context.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/program/namespace/instruction.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/program/namespace/rpc.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/program/namespace/transaction.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/program/namespace/state.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/utils/rpc.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/program/namespace/account.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/program/event.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/program/namespace/simulate.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/program/namespace/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/program/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/utils/bytes/utf8.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/workspace.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/types.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.17.1-beta.2/node_modules/@project-serum/anchor/dist/esm/utils/token.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/constants.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/errors.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/setAuthority.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/state/account.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/initializeMint.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/initializeAccount.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/initializeMultisig.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/transfer.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/approve.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/revoke.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/mintTo.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/burn.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/closeAccount.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/freezeAccount.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/thawAccount.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/transferChecked.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/approveChecked.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/mintToChecked.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/burnChecked.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/instructions/syncNative.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/state/mint.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.2.0/node_modules/@solana/spl-token/lib/esm/state/multisig.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+goosefx-ssl-sdk@1.2.17/node_modules/@jup-ag/goosefx-ssl-sdk/dist/index.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+invariant@0.9.35/node_modules/@jup-ag/invariant/lib/index.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+lifinity-sdk-v2@1.0.8/node_modules/@jup-ag/lifinity-sdk-v2/lib/index.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+vault-sdk@0.3.12_plhixtjxfbfr3mbxehj34lupl4/node_modules/@mercurial-finance/vault-sdk/dist/esm/src/vault/constants.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+apricot-sdk@0.17.6/node_modules/@mercurial-finance/apricot-sdk/dist/index.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+francium-sdk@1.4.3/node_modules/@mercurial-finance/francium-sdk/dist/index.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+vault-sdk@0.3.12_plhixtjxfbfr3mbxehj34lupl4/node_modules/@mercurial-finance/vault-sdk/dist/esm/src/vault/strategy/mango.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+tulip-platform-sdk@2.0.30/node_modules/@mercurial-finance/tulip-platform-sdk/dist/index.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.25.0-beta.1/node_modules/@project-serum/anchor/dist/browser/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+drift-sdk@1.0.3/node_modules/@mercurial-finance/drift-sdk/dist/index.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+anchor-contrib@1.14.11_ye4pmluxnapcgtgk44qwvoptby/node_modules/@saberhq/anchor-contrib/dist/esm/errors.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+anchor-contrib@1.14.11_ye4pmluxnapcgtgk44qwvoptby/node_modules/@saberhq/anchor-contrib/dist/esm/utils/accounts.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+anchor-contrib@1.14.11_ye4pmluxnapcgtgk44qwvoptby/node_modules/@saberhq/anchor-contrib/dist/esm/utils/provider.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+anchor-contrib@1.14.11_ye4pmluxnapcgtgk44qwvoptby/node_modules/@saberhq/anchor-contrib/dist/esm/utils/programs.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+anchor-contrib@1.14.11_ye4pmluxnapcgtgk44qwvoptby/node_modules/@saberhq/anchor-contrib/dist/esm/utils/coder.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+anchor-contrib@1.14.11_ye4pmluxnapcgtgk44qwvoptby/node_modules/@saberhq/anchor-contrib/dist/esm/generateAccountParsers.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@quarryprotocol+quarry-sdk@5.0.2_zpb64bnhglokejpe42gvi32sxe/node_modules/@quarryprotocol/quarry-sdk/dist/esm/idls/quarry_mine.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@quarryprotocol+quarry-sdk@5.0.2_zpb64bnhglokejpe42gvi32sxe/node_modules/@quarryprotocol/quarry-sdk/dist/esm/idls/quarry_mint_wrapper.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@quarryprotocol+quarry-sdk@5.0.2_zpb64bnhglokejpe42gvi32sxe/node_modules/@quarryprotocol/quarry-sdk/dist/esm/idls/quarry_redeemer.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@quarryprotocol+quarry-sdk@5.0.2_zpb64bnhglokejpe42gvi32sxe/node_modules/@quarryprotocol/quarry-sdk/dist/esm/idls/quarry_operator.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@quarryprotocol+quarry-sdk@5.0.2_zpb64bnhglokejpe42gvi32sxe/node_modules/@quarryprotocol/quarry-sdk/dist/esm/idls/quarry_merge_mine.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@quarryprotocol+quarry-sdk@5.0.2_zpb64bnhglokejpe42gvi32sxe/node_modules/@quarryprotocol/quarry-sdk/dist/esm/idls/quarry_registry.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@quarryprotocol+quarry-sdk@5.0.2_zpb64bnhglokejpe42gvi32sxe/node_modules/@quarryprotocol/quarry-sdk/dist/esm/constants.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+token-utils@1.13.32_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/token-utils/dist/esm/layout.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+token-utils@1.13.32_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/token-utils/dist/esm/splTokenRegistry.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+token-utils@1.13.32_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/token-utils/dist/esm/token.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+token-utils@1.13.32_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/token-utils/dist/esm/tokenAmount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+token-utils@1.13.32_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/token-utils/dist/esm/common.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@quarryprotocol+quarry-sdk@5.0.2_zpb64bnhglokejpe42gvi32sxe/node_modules/@quarryprotocol/quarry-sdk/dist/esm/wrappers/mine/payroll.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+port-sdk@0.2.69_2c3thrgaemkadsehqvxmpc5dbe/node_modules/@mercurial-finance/port-sdk/dist/index.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+solend-sdk@0.6.5/node_modules/@mercurial-finance/solend-sdk/dist/index.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+vault-sdk@0.3.12_plhixtjxfbfr3mbxehj34lupl4/node_modules/@mercurial-finance/vault-sdk/dist/esm/src/vault/strategy/frakt.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.26.0/node_modules/@project-serum/anchor/dist/browser/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+cypher-client@4.1.4/node_modules/@mercurial-finance/cypher-client/dist/index.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+dynamic-amm-sdk@0.2.3/node_modules/@mercurial-finance/dynamic-amm-sdk/dist/esm/src/amm/types/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+vault-sdk@0.3.12_plhixtjxfbfr3mbxehj34lupl4/node_modules/@mercurial-finance/vault-sdk/dist/esm/src/vault/helper/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token-registry@0.2.1105/node_modules/@solana/spl-token-registry/dist/module/lib/tokenlist.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+dynamic-amm-sdk@0.2.3/node_modules/@mercurial-finance/dynamic-amm-sdk/dist/esm/src/amm/constants.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.14.11_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/calculator/curve.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.14.11_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/calculator/amounts.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.14.11_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/constants.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.14.11_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/state/fees.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.14.11_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/state/layout.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.14.11_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/instructions/admin.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.14.11_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/instructions/swap.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.14.11_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/instructions/layouts.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@saberhq+stableswap-sdk@1.14.11_iziyofpkyexr3iekamwp24a3lm/node_modules/@saberhq/stableswap-sdk/dist/esm/util/initialize.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+dynamic-amm-sdk@0.2.3/node_modules/@mercurial-finance/dynamic-amm-sdk/dist/esm/src/amm/curve/stable-swap.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+dynamic-amm-sdk@0.2.3/node_modules/@mercurial-finance/dynamic-amm-sdk/dist/esm/src/amm/curve/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+dynamic-amm-sdk@0.2.3/node_modules/@mercurial-finance/dynamic-amm-sdk/dist/esm/src/amm/curve/constant-product.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+whirlpools-sdk@0.7.2/node_modules/@jup-ag/whirlpools-sdk/dist/index.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+dradex-idl@0.2.1_@solana+web3.js@1.73.0/node_modules/@jup-ag/dradex-idl/dist/esm/layout/base.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+dradex-idl@0.2.1_@solana+web3.js@1.73.0/node_modules/@jup-ag/dradex-idl/dist/esm/layout/order.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+dradex-idl@0.2.1_@solana+web3.js@1.73.0/node_modules/@jup-ag/dradex-idl/dist/esm/layout/queue.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+dradex-idl@0.2.1_@solana+web3.js@1.73.0/node_modules/@jup-ag/dradex-idl/dist/esm/layout/utils.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+dradex-sdk@0.2.3_nwooxxictht3heoss7kbmyb67e/node_modules/@jup-ag/dradex-sdk/dist/esm/core.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+dradex-idl@0.2.1_@solana+web3.js@1.73.0/node_modules/@jup-ag/dradex-idl/dist/esm/types/dex.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+dradex-sdk@0.2.3_nwooxxictht3heoss7kbmyb67e/node_modules/@jup-ag/dradex-sdk/dist/esm/quote.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+raydium-clmm-sdk@1.0.5/node_modules/@jup-ag/raydium-clmm-sdk/lib/index.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+core@4.0.0-beta.11_@solana+web3.js@1.73.0/node_modules/@jup-ag/core/dist/core.esm.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+dynamic-amm-sdk@0.2.3/node_modules/@mercurial-finance/dynamic-amm-sdk/dist/esm/src/amm/idl.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+dynamic-amm-sdk@0.2.3/node_modules/@mercurial-finance/dynamic-amm-sdk/dist/esm/src/amm/vault-idl.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@mercurial-finance+dynamic-amm-sdk@0.2.3/node_modules/@mercurial-finance/dynamic-amm-sdk/dist/esm/src/amm/utils.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+api@4.0.1-alpha.0/node_modules/@jup-ag/api/dist/index.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/@jup-ag+react-hook@4.0.0-beta.11_rxupii4s52jeacpwn3d7xdhi4u/node_modules/@jup-ag/react-hook/dist/react-hook.esm.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet-solana@0.3.1/node_modules/@metaplex-foundation/beet-solana/dist/cjs/src/beet-solana.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet-solana@0.3.1/node_modules/@metaplex-foundation/beet-solana/dist/cjs/src/gpa/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet-solana@0.3.1/node_modules/@metaplex-foundation/beet-solana/dist/cjs/src/gpa/util.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet-solana@0.3.1/node_modules/@metaplex-foundation/beet-solana/dist/cjs/src/keys.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet-solana@0.3.1/node_modules/@metaplex-foundation/beet-solana/dist/cjs/src/utils.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet@0.7.1/node_modules/@metaplex-foundation/beet/dist/cjs/src/beet.fixable.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet@0.7.1/node_modules/@metaplex-foundation/beet/dist/cjs/src/beet.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet@0.7.1/node_modules/@metaplex-foundation/beet/dist/cjs/src/beets/aliases.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet@0.7.1/node_modules/@metaplex-foundation/beet/dist/cjs/src/beets/collections.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet@0.7.1/node_modules/@metaplex-foundation/beet/dist/cjs/src/beets/composites.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet@0.7.1/node_modules/@metaplex-foundation/beet/dist/cjs/src/beets/enums.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet@0.7.1/node_modules/@metaplex-foundation/beet/dist/cjs/src/beets/maps.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet@0.7.1/node_modules/@metaplex-foundation/beet/dist/cjs/src/beets/numbers.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet@0.7.1/node_modules/@metaplex-foundation/beet/dist/cjs/src/beets/sets.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet@0.7.1/node_modules/@metaplex-foundation/beet/dist/cjs/src/beets/string.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet@0.7.1/node_modules/@metaplex-foundation/beet/dist/cjs/src/beets/tuples.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet@0.7.1/node_modules/@metaplex-foundation/beet/dist/cjs/src/beets/unit.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet@0.7.1/node_modules/@metaplex-foundation/beet/dist/cjs/src/read-write.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet@0.7.1/node_modules/@metaplex-foundation/beet/dist/cjs/src/struct.fixable.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet@0.7.1/node_modules/@metaplex-foundation/beet/dist/cjs/src/struct.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet@0.7.1/node_modules/@metaplex-foundation/beet/dist/cjs/src/types.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@metaplex-foundation+beet@0.7.1/node_modules/@metaplex-foundation/beet/dist/cjs/src/utils.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@orca-so+common-sdk@0.1.6/node_modules/@orca-so/common-sdk/dist/helpers/token-instructions.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@orca-so+common-sdk@0.1.6/node_modules/@orca-so/common-sdk/dist/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@orca-so+common-sdk@0.1.6/node_modules/@orca-so/common-sdk/dist/math/decimal-util.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@orca-so+common-sdk@0.1.6/node_modules/@orca-so/common-sdk/dist/math/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@orca-so+common-sdk@0.1.6/node_modules/@orca-so/common-sdk/dist/math/math-util.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@orca-so+common-sdk@0.1.6/node_modules/@orca-so/common-sdk/dist/math/percentage.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@orca-so+common-sdk@0.1.6/node_modules/@orca-so/common-sdk/dist/web3/address-util.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@orca-so+common-sdk@0.1.6/node_modules/@orca-so/common-sdk/dist/web3/ata-util.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@orca-so+common-sdk@0.1.6/node_modules/@orca-so/common-sdk/dist/web3/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@orca-so+common-sdk@0.1.6/node_modules/@orca-so/common-sdk/dist/web3/public-key-utils.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@orca-so+common-sdk@0.1.6/node_modules/@orca-so/common-sdk/dist/web3/token-util.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@orca-so+common-sdk@0.1.6/node_modules/@orca-so/common-sdk/dist/web3/transactions/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@orca-so+common-sdk@0.1.6/node_modules/@orca-so/common-sdk/dist/web3/transactions/transactions-builder.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@orca-so+common-sdk@0.1.6/node_modules/@orca-so/common-sdk/dist/web3/transactions/transactions-processor.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@orca-so+common-sdk@0.1.6/node_modules/@orca-so/common-sdk/dist/web3/transactions/types.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/utils/common.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/provider.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/error.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/coder/idl.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/coder/common.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/coder/instruction.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/coder/accounts.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/coder/types.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/coder/event.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/utils/features.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/coder/state.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/coder/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/idl.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/program/common.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/utils/pubkey.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/program/context.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/program/namespace/instruction.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/program/namespace/rpc.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/program/namespace/transaction.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/program/namespace/state.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/program/namespace/account.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/program/event.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/program/namespace/simulate.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/program/namespace/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/utils/bytes/hex.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/utils/bytes/utf8.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/utils/bytes/bs58.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/utils/bytes/base64.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/program/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/workspace.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/utils/sha256.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/utils/rpc.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.11.1/node_modules/@project-serum/anchor/dist/esm/utils/token.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.20.1/node_modules/@project-serum/anchor/dist/browser/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.24.2/node_modules/@project-serum/anchor/dist/cjs/error.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.24.2/node_modules/@project-serum/anchor/dist/cjs/program/common.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.24.2/node_modules/@project-serum/anchor/dist/cjs/program/context.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.24.2/node_modules/@project-serum/anchor/dist/cjs/program/namespace/instruction.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.24.2/node_modules/@project-serum/anchor/dist/cjs/utils/bytes/base64.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.24.2/node_modules/@project-serum/anchor/dist/cjs/utils/bytes/bs58.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.24.2/node_modules/@project-serum/anchor/dist/cjs/utils/bytes/hex.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.24.2/node_modules/@project-serum/anchor/dist/cjs/utils/bytes/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.24.2/node_modules/@project-serum/anchor/dist/cjs/utils/bytes/utf8.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.24.2/node_modules/@project-serum/anchor/dist/cjs/utils/common.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.24.2/node_modules/@project-serum/anchor/dist/cjs/utils/features.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.24.2/node_modules/@project-serum/anchor/dist/cjs/utils/pubkey.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.25.0-beta.1/node_modules/@project-serum/anchor/dist/cjs/coder/borsh/idl.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.25.0-beta.1/node_modules/@project-serum/anchor/dist/cjs/error.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.25.0-beta.1/node_modules/@project-serum/anchor/dist/cjs/utils/features.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+anchor@0.25.0/node_modules/@project-serum/anchor/dist/browser/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+borsh@0.2.5_@solana+web3.js@1.73.0/node_modules/@project-serum/borsh/dist/lib/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+serum@0.13.65/node_modules/@project-serum/serum/lib/error.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+serum@0.13.65/node_modules/@project-serum/serum/lib/fees.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+serum@0.13.65/node_modules/@project-serum/serum/lib/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+serum@0.13.65/node_modules/@project-serum/serum/lib/instructions.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+serum@0.13.65/node_modules/@project-serum/serum/lib/layout.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+serum@0.13.65/node_modules/@project-serum/serum/lib/market-proxy/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+serum@0.13.65/node_modules/@project-serum/serum/lib/market-proxy/middleware.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+serum@0.13.65/node_modules/@project-serum/serum/lib/market.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+serum@0.13.65/node_modules/@project-serum/serum/lib/queue.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+serum@0.13.65/node_modules/@project-serum/serum/lib/slab.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+serum@0.13.65/node_modules/@project-serum/serum/lib/token-instructions.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+serum@0.13.65/node_modules/@project-serum/serum/lib/tokens_and_markets.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@pythnetwork+client@2.5.3/node_modules/@pythnetwork/client/lib/PythConnection.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@pythnetwork+client@2.5.3/node_modules/@pythnetwork/client/lib/PythHttpClient.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@pythnetwork+client@2.5.3/node_modules/@pythnetwork/client/lib/cluster.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@pythnetwork+client@2.5.3/node_modules/@pythnetwork/client/lib/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@pythnetwork+client@2.5.3/node_modules/@pythnetwork/client/lib/readBig.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@pythnetwork+client@2.7.3_@solana+web3.js@1.73.0/node_modules/@pythnetwork/client/lib/PythConnection.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@pythnetwork+client@2.7.3_@solana+web3.js@1.73.0/node_modules/@pythnetwork/client/lib/PythHttpClient.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@pythnetwork+client@2.7.3_@solana+web3.js@1.73.0/node_modules/@pythnetwork/client/lib/cluster.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@pythnetwork+client@2.7.3_@solana+web3.js@1.73.0/node_modules/@pythnetwork/client/lib/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@pythnetwork+client@2.7.3_@solana+web3.js@1.73.0/node_modules/@pythnetwork/client/lib/readBig.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@pythnetwork+client@2.8.0_@solana+web3.js@1.73.0/node_modules/@pythnetwork/client/lib/PythConnection.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@pythnetwork+client@2.8.0_@solana+web3.js@1.73.0/node_modules/@pythnetwork/client/lib/PythHttpClient.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@pythnetwork+client@2.8.0_@solana+web3.js@1.73.0/node_modules/@pythnetwork/client/lib/cluster.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@pythnetwork+client@2.8.0_@solana+web3.js@1.73.0/node_modules/@pythnetwork/client/lib/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@pythnetwork+client@2.8.0_@solana+web3.js@1.73.0/node_modules/@pythnetwork/client/lib/readBig.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@rive-app+canvas@1.0.95/node_modules/@rive-app/canvas/rive.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@rive-app+react-canvas@3.0.33_react@18.2.0/node_modules/@rive-app/react-canvas/dist/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+buffer-layout@4.0.0/node_modules/@solana/buffer-layout/lib/Layout.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token-registry@0.2.4574/node_modules/@solana/spl-token-registry/dist/module/lib/tokenlist.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/esm/typeof.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/esm/defineProperty.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/esm/toPrimitive.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.1.8/node_modules/@solana/spl-token/lib/index.browser.esm.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@noble+hashes@1.1.3/node_modules/@noble/hashes/esm/_assert.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@noble+hashes@1.1.3/node_modules/@noble/hashes/esm/utils.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@noble+hashes@1.1.3/node_modules/@noble/hashes/esm/cryptoBrowser.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@noble+hashes@1.1.3/node_modules/@noble/hashes/esm/_sha2.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@noble+hashes@1.1.3/node_modules/@noble/hashes/esm/_u64.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@noble+hashes@1.1.3/node_modules/@noble/hashes/esm/sha512.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@noble+ed25519@1.7.1/node_modules/@noble/ed25519/lib/esm/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@noble+hashes@1.1.3/node_modules/@noble/hashes/esm/sha256.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/superstruct@0.14.2/node_modules/superstruct/lib/index.es.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@noble+hashes@1.1.3/node_modules/@noble/hashes/esm/sha3.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@noble+hashes@1.1.3/node_modules/@noble/hashes/esm/hmac.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@noble+secp256k1@1.7.0/node_modules/@noble/secp256k1/lib/esm/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+web3.js@1.73.0/node_modules/@solana/web3.js/lib/index.browser.esm.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solflare-wallet+sdk@1.2.0_@solana+web3.js@1.73.0/node_modules/@solflare-wallet/sdk/lib/esm/adapters/base.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@project-serum+sol-wallet-adapter@0.2.0_@solana+web3.js@1.73.0/node_modules/@project-serum/sol-wallet-adapter/dist/index.modern.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solflare-wallet+sdk@1.2.0_@solana+web3.js@1.73.0/node_modules/@solflare-wallet/sdk/lib/esm/adapters/web.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solflare-wallet+sdk@1.2.0_@solana+web3.js@1.73.0/node_modules/@solflare-wallet/sdk/lib/esm/adapters/iframe.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solflare-wallet+sdk@1.2.0_@solana+web3.js@1.73.0/node_modules/@solflare-wallet/sdk/lib/esm/utils.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solflare-wallet+sdk@1.2.0_@solana+web3.js@1.73.0/node_modules/@solflare-wallet/sdk/lib/esm/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@swc+helpers@0.4.14/node_modules/@swc/helpers/lib/_extends.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@swc+helpers@0.4.14/node_modules/@swc/helpers/lib/_interop_require_default.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@swc+helpers@0.4.14/node_modules/@swc/helpers/lib/_interop_require_wildcard.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@swc+helpers@0.4.14/node_modules/@swc/helpers/lib/_object_without_properties_loose.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/focusManager.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/hydration.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/infiniteQueryBehavior.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/infiniteQueryObserver.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/logger.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/mutation.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/mutationCache.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/mutationObserver.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/notifyManager.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/onlineManager.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/queriesObserver.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/query.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/queryCache.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/queryClient.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/queryObserver.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/removable.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/retryer.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/subscribable.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+query-core@4.29.7/node_modules/@tanstack/query-core/build/lib/utils.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/Hydrate.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/QueryClientProvider.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/QueryErrorResetBoundary.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/errorBoundaryUtils.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/isRestoring.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/reactBatchedUpdates.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/setBatchUpdatesFn.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/suspense.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/useBaseQuery.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/useInfiniteQuery.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/useIsFetching.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/useIsMutating.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/useMutation.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/useQueries.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/useQuery.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/useSyncExternalStore.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@tanstack+react-query@4.29.7_biqbaboplfbrettd7655fr4n2y/node_modules/@tanstack/react-query/build/lib/utils.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/ansicolors@0.3.2/node_modules/ansicolors/ansicolors.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/base-x@3.0.9/node_modules/base-x/src/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/base-x@4.0.0/node_modules/base-x/src/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/base64-js@1.5.1/node_modules/base64-js/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/big.js@5.2.2/node_modules/big.js/big.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/big.js@6.2.1/node_modules/big.js/big.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/bigint-buffer@1.1.5/node_modules/bigint-buffer/dist/browser.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/bignumber.js@9.1.0/node_modules/bignumber.js/bignumber.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/bn-sqrt@1.0.0/node_modules/bn-sqrt/dist/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/bn.js@5.2.1/node_modules/bn.js/lib/bn.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/borsh@0.7.0/node_modules/borsh/lib/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/bs58@4.0.1/node_modules/bs58/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/bs58@5.0.0/node_modules/bs58/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/buffer-layout@1.2.2/node_modules/buffer-layout/lib/Layout.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/buffer@6.0.1/node_modules/buffer/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/buffer@6.0.3/node_modules/buffer/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/camelcase@5.3.1/node_modules/camelcase/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/camelcase@6.3.0/node_modules/camelcase/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/copy-to-clipboard@3.3.3/node_modules/copy-to-clipboard/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/cross-fetch@3.0.6/node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/cross-fetch@3.1.5/node_modules/cross-fetch/dist/browser-ponyfill.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/browser.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/debug@4.3.4/node_modules/debug/src/common.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/decimal.js-light@2.5.1/node_modules/decimal.js-light/decimal.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/decimal.js@10.4.3/node_modules/decimal.js/decimal.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/err-code@2.0.3/node_modules/err-code/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/eventemitter3@4.0.7/node_modules/eventemitter3/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/events@3.3.0/node_modules/events/events.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/fast-deep-equal@3.1.3/node_modules/fast-deep-equal/react.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/fast-shallow-equal@1.0.0/node_modules/fast-shallow-equal/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/ieee754@1.2.1/node_modules/ieee754/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/invariant@2.2.4/node_modules/invariant/browser.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/jayson@3.7.0/node_modules/jayson/lib/client/browser/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/jayson@3.7.0/node_modules/jayson/lib/generateRequest.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/js-cookie@2.2.1/node_modules/js-cookie/src/js.cookie.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/js-sha256@0.9.0/node_modules/js-sha256/src/sha256.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/jsbi@4.3.0/node_modules/jsbi/dist/jsbi-umd.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/lodash.camelcase@4.3.0/node_modules/lodash.camelcase/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/lodash.mapvalues@4.6.0/node_modules/lodash.mapvalues/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/lodash@4.17.21/node_modules/lodash/lodash.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/lru-cache@7.14.1/node_modules/lru-cache/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/ms@2.1.2/node_modules/ms/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/nano-css@5.3.5_biqbaboplfbrettd7655fr4n2y/node_modules/nano-css/addon/cssom.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/nano-css@5.3.5_biqbaboplfbrettd7655fr4n2y/node_modules/nano-css/addon/vcssom.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/nano-css@5.3.5_biqbaboplfbrettd7655fr4n2y/node_modules/nano-css/addon/vcssom/cssToTree.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/nano-css@5.3.5_biqbaboplfbrettd7655fr4n2y/node_modules/nano-css/addon/vcssom/removeRule.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/nano-css@5.3.5_biqbaboplfbrettd7655fr4n2y/node_modules/nano-css/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/next@13.1.2_m5sxuueb27gk6ddc5gums6vtgq/node_modules/next/dist/client/image.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/next@13.1.2_m5sxuueb27gk6ddc5gums6vtgq/node_modules/next/dist/shared/lib/amp-context.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/next@13.1.2_m5sxuueb27gk6ddc5gums6vtgq/node_modules/next/dist/shared/lib/amp-mode.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/next@13.1.2_m5sxuueb27gk6ddc5gums6vtgq/node_modules/next/dist/shared/lib/head-manager-context.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/next@13.1.2_m5sxuueb27gk6ddc5gums6vtgq/node_modules/next/dist/shared/lib/head.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/next@13.1.2_m5sxuueb27gk6ddc5gums6vtgq/node_modules/next/dist/shared/lib/image-blur-svg.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/next@13.1.2_m5sxuueb27gk6ddc5gums6vtgq/node_modules/next/dist/shared/lib/image-config-context.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/next@13.1.2_m5sxuueb27gk6ddc5gums6vtgq/node_modules/next/dist/shared/lib/image-config.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/next@13.1.2_m5sxuueb27gk6ddc5gums6vtgq/node_modules/next/dist/shared/lib/image-loader.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/next@13.1.2_m5sxuueb27gk6ddc5gums6vtgq/node_modules/next/dist/shared/lib/side-effect.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/next@13.1.2_m5sxuueb27gk6ddc5gums6vtgq/node_modules/next/dist/shared/lib/utils/warn-once.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/next@13.1.2_m5sxuueb27gk6ddc5gums6vtgq/node_modules/next/image.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/os-browserify@0.3.0/node_modules/os-browserify/browser.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/path-browserify@1.0.1/node_modules/path-browserify/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/promise-retry@2.0.1/node_modules/promise-retry/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-hook-form@7.42.1_react@18.2.0/node_modules/react-hook-form/dist/index.cjs.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-number-format@5.1.3_biqbaboplfbrettd7655fr4n2y/node_modules/react-number-format/dist/react-number-format.es.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-universal-interface@0.6.2_react@18.2.0+tslib@2.4.1/node_modules/react-universal-interface/lib/addClassDecoratorSupport.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-universal-interface@0.6.2_react@18.2.0+tslib@2.4.1/node_modules/react-universal-interface/lib/createEnhancer.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-universal-interface@0.6.2_react@18.2.0+tslib@2.4.1/node_modules/react-universal-interface/lib/hookToRenderProp.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-universal-interface@0.6.2_react@18.2.0+tslib@2.4.1/node_modules/react-universal-interface/lib/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-universal-interface@0.6.2_react@18.2.0+tslib@2.4.1/node_modules/react-universal-interface/lib/render.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-universal-interface@0.6.2_react@18.2.0+tslib@2.4.1/node_modules/react-universal-interface/lib/wrapInStatefulComponent.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/factory/createMemo.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/factory/createReducerContext.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useFirstMountState.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useUpdateEffect.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/factory/createReducer.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/factory/createStateContext.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useMountedState.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useAsyncFn.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useAsync.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useAsyncRetry.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useSetState.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/misc/parseTimeRanges.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/factory/createHTMLMediaHook.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useAudio.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/misc/util.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/misc/isDeepEqual.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useBattery.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useBeforeUnload.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useToggle.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useBoolean.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useClickAway.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useCookie.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useCopyToClipboard.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useUpdate.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/misc/hookState.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useGetSet.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useCounter.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useIsomorphicLayoutEffect.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useCss.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useCustomCompareEffect.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useTimeoutFn.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useDebounce.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useDeepCompareEffect.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useDefault.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useDrop.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useDropArea.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useEffectOnce.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useEnsuredForwardedRef.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useEvent.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useError.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useFavicon.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useFullscreen.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useGeolocation.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useGetSetState.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/set-harmonic-interval@1.0.1/node_modules/set-harmonic-interval/lib/index.esm.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useHarmonicIntervalFn.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useHover.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useHoverDirty.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useIdle.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/throttle-debounce@3.0.1/node_modules/throttle-debounce/esm/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useIntersection.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useInterval.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useKey.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/factory/createBreakpoint.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useKeyPress.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useKeyPressEvent.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useLatest.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useLifecycles.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useList.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useLocalStorage.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useLocation.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useLockBodyScroll.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useLogger.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useLongPress.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useMap.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useMedia.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useMediaDevices.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useMediatedState.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useMethods.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useMotion.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useMount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useUnmount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useRafState.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useMouse.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useMouseHovered.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useMouseWheel.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useNetworkState.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useNumber.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useObservable.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useOrientation.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/usePageLeave.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/usePermission.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/usePrevious.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/usePreviousDistinct.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/usePromise.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useQueue.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useRaf.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useRafLoop.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useSearchParam.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useScratch.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useScroll.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useScrolling.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useSessionStorage.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useShallowCompareEffect.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useSize.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useSlider.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useSpeech.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useStartTyping.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useStateWithHistory.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useStateList.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useThrottle.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useThrottleFn.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useTimeout.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useTitle.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useTween.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useUnmountPromise.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useUpsert.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useVibrate.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useVideo.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useStateValidator.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@xobotyi+scrollbar-width@1.9.5/node_modules/@xobotyi/scrollbar-width/dist/index.esm.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useScrollbarWidth.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useMultiStateValidator.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useWindowScroll.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useWindowSize.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useMeasure.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/usePinchZoom.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useRendersCount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useSet.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/factory/createGlobalState.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-use@17.4.0_biqbaboplfbrettd7655fr4n2y/node_modules/react-use/esm/useHash.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-virtualized-auto-sizer@1.0.7_biqbaboplfbrettd7655fr4n2y/node_modules/react-virtualized-auto-sizer/dist/index.esm.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/esm/extends.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/memoize-one@5.2.1/node_modules/memoize-one/dist/memoize-one.esm.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/react-window@1.8.8_biqbaboplfbrettd7655fr4n2y/node_modules/react-window/dist/index.esm.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/retry@0.12.0/node_modules/retry/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/retry@0.12.0/node_modules/retry/lib/retry.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/retry@0.12.0/node_modules/retry/lib/retry_operation.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/rpc-websockets@7.5.0/node_modules/rpc-websockets/dist/index.browser.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/rpc-websockets@7.5.0/node_modules/rpc-websockets/dist/lib/client.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/rpc-websockets@7.5.0/node_modules/rpc-websockets/dist/lib/client/websocket.browser.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/safe-buffer@5.2.1/node_modules/safe-buffer/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/screenfull@5.2.0/node_modules/screenfull/dist/screenfull.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/lower-case@2.0.2/node_modules/lower-case/dist.es2015/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/no-case@3.0.4/node_modules/no-case/dist.es2015/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/snake-case@3.0.4/node_modules/snake-case/dist.es2015/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/dot-case@3.0.4/node_modules/dot-case/dist.es2015/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/text-encoding-utf-8@1.0.2/node_modules/text-encoding-utf-8/lib/encoding.lib.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/tiny-invariant@1.3.1/node_modules/tiny-invariant/dist/tiny-invariant.cjs.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/toformat@2.0.0/node_modules/toformat/toFormat.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/toggle-selection@1.0.6/node_modules/toggle-selection/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/toml@3.0.0/node_modules/toml/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/toml@3.0.0/node_modules/toml/lib/compiler.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/toml@3.0.0/node_modules/toml/lib/parser.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/ts-easing@0.2.0/node_modules/ts-easing/lib/index.js","webpack://@jup-ag/terminal/./src/components/CoinBalanceUSD.tsx","webpack://@jup-ag/terminal/./src/components/Coinbalance.tsx","webpack://@jup-ag/terminal/./src/components/CurrentUserBadge.tsx","webpack://@jup-ag/terminal/./src/components/ExchangeRate.tsx","webpack://@jup-ag/terminal/./src/components/Form.tsx","webpack://@jup-ag/terminal/./src/components/FormError.tsx","webpack://@jup-ag/terminal/./src/components/FormPairRow.tsx","webpack://@jup-ag/terminal/./src/components/FormPairSelector.tsx","webpack://@jup-ag/terminal/./src/components/Header.tsx","webpack://@jup-ag/terminal/./src/components/InformationMessage.tsx","webpack://@jup-ag/terminal/./src/components/JupButton.tsx","webpack://@jup-ag/terminal/./src/components/Jupiter.tsx","webpack://@jup-ag/terminal/./src/components/PrecisionTickSize/index.tsx","webpack://@jup-ag/terminal/./src/components/PriceInfo/Deposits.tsx","webpack://@jup-ag/terminal/./src/components/PriceInfo/Fees.tsx","webpack://@jup-ag/terminal/./src/components/PriceInfo/TransactionFee.tsx","webpack://@jup-ag/terminal/./src/components/PriceInfo/index.tsx","webpack://@jup-ag/terminal/./src/components/SexyChameleonText/SexyChameleonText.tsx","webpack://@jup-ag/terminal/./src/components/Spinner/index.tsx","webpack://@jup-ag/terminal/./src/components/SwapSettingsModal/SwapSettingButton.tsx","webpack://@jup-ag/terminal/./src/components/SwapSettingsModal/SwapSettingsModal.tsx","webpack://@jup-ag/terminal/./src/components/SwitchPairButton.tsx","webpack://@jup-ag/terminal/./src/components/Toggle.tsx","webpack://@jup-ag/terminal/./src/components/TokenIcon.tsx","webpack://@jup-ag/terminal/./src/components/TokenLink.tsx","webpack://@jup-ag/terminal/./src/components/Tooltip/index.tsx","webpack://@jup-ag/terminal/./src/components/UnknownTokenModal/UnknownTokenModal.tsx","webpack://@jup-ag/terminal/./src/components/WalletComponents/WalletButton.tsx","webpack://@jup-ag/terminal/./src/components/WalletComponents/components/WalletListItem.tsx","webpack://@jup-ag/terminal/./src/components/WalletComponents/components/WalletModal.tsx","webpack://@jup-ag/terminal/./src/components/WalletComponents/components/WalletModalButton.tsx","webpack://@jup-ag/terminal/./src/components/WalletComponents/index.ts","webpack://@jup-ag/terminal/./src/components/screens/InitialScreen.tsx","webpack://@jup-ag/terminal/./src/components/screens/ReviewOrderScreen.tsx","webpack://@jup-ag/terminal/./src/components/screens/RouteSelectionScreen.tsx","webpack://@jup-ag/terminal/./src/components/screens/SwappingScreen.tsx","webpack://@jup-ag/terminal/./src/components/useTimeDiff/useTimeDiff.tsx","webpack://@jup-ag/terminal/./src/constants/index.ts","webpack://@jup-ag/terminal/./src/contexts/AutoConnectProvider.tsx","webpack://@jup-ag/terminal/./src/contexts/ContextProvider.tsx","webpack://@jup-ag/terminal/./src/contexts/NetworkConfigurationProvider.tsx","webpack://@jup-ag/terminal/./src/contexts/ScreenProvider.tsx","webpack://@jup-ag/terminal/./src/contexts/SlippageConfigProvider.tsx","webpack://@jup-ag/terminal/./src/contexts/SwapContext.tsx","webpack://@jup-ag/terminal/./src/contexts/TokenContextProvider.tsx","webpack://@jup-ag/terminal/./src/contexts/USDValueProvider.tsx","webpack://@jup-ag/terminal/./src/contexts/WalletPassthroughProvider.tsx","webpack://@jup-ag/terminal/./src/contexts/accounts.tsx","webpack://@jup-ag/terminal/./src/contexts/preferredExplorer/index.tsx","webpack://@jup-ag/terminal/./src/icons/CloseIcon.tsx","webpack://@jup-ag/terminal/./src/icons/ExternalIcon.tsx","webpack://@jup-ag/terminal/./src/icons/InfoIconSVG.tsx","webpack://@jup-ag/terminal/./src/icons/LeftArrowIcon.tsx","webpack://@jup-ag/terminal/./src/icons/RefreshSVG.tsx","webpack://@jup-ag/terminal/./src/icons/RoutesSVG.tsx","webpack://@jup-ag/terminal/./src/icons/SearchIcon.tsx","webpack://@jup-ag/terminal/./src/icons/SettingsSVG.tsx","webpack://@jup-ag/terminal/./src/icons/SuccessIcon.tsx","webpack://@jup-ag/terminal/./src/icons/WalletIcon.tsx","webpack://@jup-ag/terminal/./src/index.tsx","webpack://@jup-ag/terminal/./src/misc/constants.ts","webpack://@jup-ag/terminal/./src/misc/utils.ts","webpack://@jup-ag/terminal/./node_modules/.pnpm/tslib@2.4.1/node_modules/tslib/tslib.es6.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.2.0/node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.min.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/use-sync-external-store@1.2.0_react@18.2.0/node_modules/use-sync-external-store/shim/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/rng.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/regex.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/validate.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/stringify.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/uuid@8.3.2/node_modules/uuid/dist/esm-browser/v4.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/assertThisInitialized.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/asyncToGenerator.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/classCallCheck.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/createClass.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/getPrototypeOf.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/inherits.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/interopRequireDefault.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/regeneratorRuntime.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/setPrototypeOf.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/toPrimitive.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/toPropertyKey.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/helpers/typeof.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@babel+runtime@7.20.6/node_modules/@babel/runtime/regenerator/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+buffer-layout-utils@0.2.0/node_modules/@solana/buffer-layout-utils/lib/cjs/base.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+buffer-layout-utils@0.2.0/node_modules/@solana/buffer-layout-utils/lib/cjs/bigint.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+buffer-layout-utils@0.2.0/node_modules/@solana/buffer-layout-utils/lib/cjs/decimal.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+buffer-layout-utils@0.2.0/node_modules/@solana/buffer-layout-utils/lib/cjs/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+buffer-layout-utils@0.2.0/node_modules/@solana/buffer-layout-utils/lib/cjs/native.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+buffer-layout-utils@0.2.0/node_modules/@solana/buffer-layout-utils/lib/cjs/web3.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/amountToUiAmount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/approve.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/approveChecked.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/burn.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/burnChecked.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/closeAccount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/createAccount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/createAssociatedTokenAccount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/createAssociatedTokenAccountIdempotent.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/createMint.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/createMultisig.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/createNativeMint.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/createWrappedNativeAccount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/freezeAccount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/getOrCreateAssociatedTokenAccount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/internal.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/mintTo.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/mintToChecked.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/revoke.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/setAuthority.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/syncNative.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/thawAccount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/transfer.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/transferChecked.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/actions/uiAmountToAmount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/constants.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/errors.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/accountType.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/cpiGuard/actions.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/cpiGuard/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/cpiGuard/instructions.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/cpiGuard/state.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/defaultAccountState/actions.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/defaultAccountState/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/defaultAccountState/instructions.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/defaultAccountState/state.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/extensionType.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/immutableOwner.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/interestBearingMint/actions.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/interestBearingMint/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/interestBearingMint/instructions.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/interestBearingMint/state.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/memoTransfer/actions.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/memoTransfer/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/memoTransfer/instructions.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/memoTransfer/state.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/mintCloseAuthority.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/nonTransferable.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/permanentDelegate.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/transferFee/actions.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/transferFee/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/transferFee/instructions.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/extensions/transferFee/state.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/amountToUiAmount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/approve.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/approveChecked.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/associatedTokenAccount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/burn.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/burnChecked.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/closeAccount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/createNativeMint.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/decode.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/freezeAccount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/initializeAccount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/initializeAccount2.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/initializeAccount3.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/initializeImmutableOwner.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/initializeMint.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/initializeMint2.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/initializeMintCloseAuthority.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/initializeMultisig.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/initializeMultisig2.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/initializeNonTransferableMint.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/initializePermanentDelegate.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/internal.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/mintTo.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/mintToChecked.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/reallocate.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/revoke.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/setAuthority.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/syncNative.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/thawAccount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/transfer.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/transferChecked.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/types.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/instructions/uiAmountToAmount.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/state/account.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/state/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/state/mint.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+spl-token@0.3.7_@solana+web3.js@1.73.0/node_modules/@solana/spl-token/lib/cjs/state/multisig.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-backpack@0.1.11_@solana+web3.js@1.73.0/node_modules/@solana/wallet-adapter-backpack/lib/cjs/adapter.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-backpack@0.1.11_@solana+web3.js@1.73.0/node_modules/@solana/wallet-adapter-backpack/lib/cjs/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-base@0.9.20_@solana+web3.js@1.73.0/node_modules/@solana/wallet-adapter-base/lib/cjs/adapter.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-base@0.9.20_@solana+web3.js@1.73.0/node_modules/@solana/wallet-adapter-base/lib/cjs/errors.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-base@0.9.20_@solana+web3.js@1.73.0/node_modules/@solana/wallet-adapter-base/lib/cjs/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-base@0.9.20_@solana+web3.js@1.73.0/node_modules/@solana/wallet-adapter-base/lib/cjs/signer.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-base@0.9.20_@solana+web3.js@1.73.0/node_modules/@solana/wallet-adapter-base/lib/cjs/types.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-glow@0.1.15_@solana+web3.js@1.73.0/node_modules/@solana/wallet-adapter-glow/lib/cjs/adapter.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-glow@0.1.15_@solana+web3.js@1.73.0/node_modules/@solana/wallet-adapter-glow/lib/cjs/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-phantom@0.9.19_@solana+web3.js@1.73.0/node_modules/@solana/wallet-adapter-phantom/lib/cjs/adapter.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-phantom@0.9.19_@solana+web3.js@1.73.0/node_modules/@solana/wallet-adapter-phantom/lib/cjs/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-react@0.15.28_xlhudxas6ds7l5hebkzvzyrmni/node_modules/@solana/wallet-adapter-react/lib/cjs/ConnectionProvider.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-react@0.15.28_xlhudxas6ds7l5hebkzvzyrmni/node_modules/@solana/wallet-adapter-react/lib/cjs/WalletProvider.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-react@0.15.28_xlhudxas6ds7l5hebkzvzyrmni/node_modules/@solana/wallet-adapter-react/lib/cjs/WalletProviderBase.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-react@0.15.28_xlhudxas6ds7l5hebkzvzyrmni/node_modules/@solana/wallet-adapter-react/lib/cjs/errors.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-react@0.15.28_xlhudxas6ds7l5hebkzvzyrmni/node_modules/@solana/wallet-adapter-react/lib/cjs/getEnvironment.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-react@0.15.28_xlhudxas6ds7l5hebkzvzyrmni/node_modules/@solana/wallet-adapter-react/lib/cjs/getInferredClusterFromEndpoint.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-react@0.15.28_xlhudxas6ds7l5hebkzvzyrmni/node_modules/@solana/wallet-adapter-react/lib/cjs/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-react@0.15.28_xlhudxas6ds7l5hebkzvzyrmni/node_modules/@solana/wallet-adapter-react/lib/cjs/useAnchorWallet.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-react@0.15.28_xlhudxas6ds7l5hebkzvzyrmni/node_modules/@solana/wallet-adapter-react/lib/cjs/useConnection.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-react@0.15.28_xlhudxas6ds7l5hebkzvzyrmni/node_modules/@solana/wallet-adapter-react/lib/cjs/useLocalStorage.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-react@0.15.28_xlhudxas6ds7l5hebkzvzyrmni/node_modules/@solana/wallet-adapter-react/lib/cjs/useWallet.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-solflare@0.6.21_@solana+web3.js@1.73.0/node_modules/@solana/wallet-adapter-solflare/lib/cjs/adapter.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-adapter-solflare@0.6.21_@solana+web3.js@1.73.0/node_modules/@solana/wallet-adapter-solflare/lib/cjs/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-standard-chains@1.0.0/node_modules/@solana/wallet-standard-chains/lib/cjs/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-standard-util@1.0.0/node_modules/@solana/wallet-standard-util/lib/cjs/commitment.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-standard-util@1.0.0/node_modules/@solana/wallet-standard-util/lib/cjs/endpoint.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-standard-util@1.0.0/node_modules/@solana/wallet-standard-util/lib/cjs/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-standard-wallet-adapter-base@1.0.0_uivfmorrnxlqjntluzt4qbwf4e/node_modules/@solana/wallet-standard-wallet-adapter-base/lib/cjs/adapter.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-standard-wallet-adapter-base@1.0.0_uivfmorrnxlqjntluzt4qbwf4e/node_modules/@solana/wallet-standard-wallet-adapter-base/lib/cjs/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-standard-wallet-adapter-base@1.0.0_uivfmorrnxlqjntluzt4qbwf4e/node_modules/@solana/wallet-standard-wallet-adapter-base/lib/cjs/transaction.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-standard-wallet-adapter-base@1.0.0_uivfmorrnxlqjntluzt4qbwf4e/node_modules/@solana/wallet-standard-wallet-adapter-base/lib/cjs/wallet.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-standard-wallet-adapter-react@1.0.0_ohpms2mql6fcwbve5r6yvo4sii/node_modules/@solana/wallet-standard-wallet-adapter-react/lib/cjs/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana+wallet-standard-wallet-adapter-react@1.0.0_ohpms2mql6fcwbve5r6yvo4sii/node_modules/@solana/wallet-standard-wallet-adapter-react/lib/cjs/useStandardWalletAdapters.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana-mobile+mobile-wallet-adapter-protocol-web3js@0.9.9_@solana+web3.js@1.73.0/node_modules/@solana-mobile/mobile-wallet-adapter-protocol-web3js/lib/cjs/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana-mobile+mobile-wallet-adapter-protocol@0.9.9/node_modules/@solana-mobile/mobile-wallet-adapter-protocol/lib/cjs/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@solana-mobile+wallet-adapter-mobile@0.9.9_@solana+web3.js@1.73.0/node_modules/@solana-mobile/wallet-adapter-mobile/lib/cjs/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@wallet-standard+app@1.0.1/node_modules/@wallet-standard/app/lib/cjs/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@wallet-standard+app@1.0.1/node_modules/@wallet-standard/app/lib/cjs/wallets.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@wallet-standard+wallet@1.0.1/node_modules/@wallet-standard/wallet/lib/cjs/index.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@wallet-standard+wallet@1.0.1/node_modules/@wallet-standard/wallet/lib/cjs/register.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/@wallet-standard+wallet@1.0.1/node_modules/@wallet-standard/wallet/lib/cjs/util.js","webpack://@jup-ag/terminal/./node_modules/.pnpm/decimal.js@10.4.2/node_modules/decimal.js/decimal.mjs","webpack://@jup-ag/terminal/./node_modules/.pnpm/pako@2.1.0/node_modules/pako/dist/pako.esm.mjs"],"sourcesContent":["\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst serum_1 = require(\"@project-serum/serum\");\nconst fixednum_1 = require(\"./utils/fixednum\");\nconst layout_1 = require(\"./layout\");\nconst utils_1 = require(\"./utils/utils\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst os_1 = require(\"os\");\nconst book_1 = require(\"./book\");\nconst config_1 = require(\"./config\");\nconst utils_2 = require(\"./utils/utils\");\nconst layout_2 = require(\"./layout\");\nconst PerpMarket_1 = __importDefault(require(\"./PerpMarket\"));\nconst ids_json_1 = __importDefault(require(\"./ids.json\"));\nclass MangoAccount {\n constructor(publicKey, decoded) {\n this.publicKey = publicKey;\n this.spotOpenOrdersAccounts = new Array(layout_1.MAX_PAIRS).fill(undefined);\n this.advancedOrders = [];\n Object.assign(this, decoded);\n }\n get name() {\n return this.info\n ? String.fromCharCode(...this.info).replace(new RegExp(String.fromCharCode(0), 'g'), '')\n : '';\n }\n getLiquidationPrice(mangoGroup, mangoCache, oracleIndex) {\n const { spot, perps, quote } = this.getHealthComponents(mangoGroup, mangoCache);\n let partialHealth = quote;\n let weightedAsset = fixednum_1.ZERO_I80F48;\n for (let i = 0; i < mangoGroup.numOracles; i++) {\n const w = (0, utils_1.getWeights)(mangoGroup, i, 'Maint');\n if (i === oracleIndex) {\n const weightedSpot = spot[i].mul(spot[i].isPos() ? w.spotAssetWeight : w.spotLiabWeight);\n const weightedPerps = perps[i].mul(perps[i].isPos() ? w.perpAssetWeight : w.perpLiabWeight);\n weightedAsset = weightedSpot.add(weightedPerps).neg();\n }\n else {\n const price = mangoCache.priceCache[i].price;\n const spotHealth = spot[i]\n .mul(price)\n .mul(spot[i].isPos() ? w.spotAssetWeight : w.spotLiabWeight);\n const perpHealth = perps[i]\n .mul(price)\n .mul(perps[i].isPos() ? w.perpAssetWeight : w.perpLiabWeight);\n partialHealth = partialHealth.add(spotHealth).add(perpHealth);\n }\n }\n if (weightedAsset.isZero()) {\n return undefined;\n }\n const liqPrice = partialHealth.div(weightedAsset);\n if (liqPrice.isNeg()) {\n return undefined;\n }\n return liqPrice.mul(\n // adjust for decimals in the price\n fixednum_1.I80F48.fromNumber(Math.pow(10, mangoGroup.tokens[oracleIndex].decimals -\n mangoGroup.tokens[layout_1.QUOTE_INDEX].decimals)));\n }\n hasAnySpotOrders() {\n return this.inMarginBasket.some((b) => b);\n }\n reload(connection, dexProgramId = undefined) {\n return __awaiter(this, void 0, void 0, function* () {\n const acc = yield connection.getAccountInfo(this.publicKey);\n Object.assign(this, layout_1.MangoAccountLayout.decode(acc === null || acc === void 0 ? void 0 : acc.data));\n if (dexProgramId) {\n yield this.loadOpenOrders(connection, dexProgramId);\n }\n return this;\n });\n }\n reloadFromSlot(connection, lastSlot = 0, dexProgramId = undefined) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n let slot = -1;\n let value = null;\n while (slot <= lastSlot) {\n const response = yield connection.getAccountInfoAndContext(this.publicKey);\n slot = (_a = response.context) === null || _a === void 0 ? void 0 : _a.slot;\n value = response.value;\n yield (0, utils_2.sleep)(250);\n }\n const decodedMangoAccount = layout_1.MangoAccountLayout.decode(value === null || value === void 0 ? void 0 : value.data);\n const newMangoAccount = new MangoAccount(this.publicKey, decodedMangoAccount);\n newMangoAccount.spotOpenOrdersAccounts = this.spotOpenOrdersAccounts;\n newMangoAccount.advancedOrders = this.advancedOrders;\n if (dexProgramId) {\n yield newMangoAccount.loadOpenOrders(connection, dexProgramId);\n }\n Object.assign(this, newMangoAccount);\n return [newMangoAccount, slot];\n });\n }\n loadSpotOrdersForMarket(connection, market, marketIndex) {\n return __awaiter(this, void 0, void 0, function* () {\n const [bidsInfo, asksInfo] = yield (0, utils_2.getMultipleAccounts)(connection, [\n market.bidsAddress,\n market.asksAddress,\n ]);\n const bids = serum_1.Orderbook.decode(market, bidsInfo.accountInfo.data);\n const asks = serum_1.Orderbook.decode(market, asksInfo.accountInfo.data);\n return [...bids, ...asks].filter((o) => o.openOrdersAddress.equals(this.spotOpenOrders[marketIndex]));\n });\n }\n loadOpenOrders(connection, serumDexPk) {\n return __awaiter(this, void 0, void 0, function* () {\n const accounts = yield (0, utils_2.getMultipleAccounts)(connection, this.spotOpenOrders.filter((pk) => !pk.equals(utils_1.zeroKey)));\n this.spotOpenOrdersAccounts = this.spotOpenOrders.map((openOrderPk) => {\n if (openOrderPk.equals(utils_1.zeroKey)) {\n return undefined;\n }\n const account = accounts.find((a) => a.publicKey.equals(openOrderPk));\n return account\n ? serum_1.OpenOrders.fromAccountInfo(openOrderPk, account.accountInfo, serumDexPk)\n : undefined;\n });\n return this.spotOpenOrdersAccounts;\n });\n }\n loadAdvancedOrders(connection) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.advancedOrdersKey.equals(utils_1.zeroKey))\n return [];\n const acc = yield connection.getAccountInfo(this.advancedOrdersKey);\n const decoded = layout_2.AdvancedOrdersLayout.decode(acc === null || acc === void 0 ? void 0 : acc.data);\n this.advancedOrders = decoded.orders;\n return decoded.orders;\n });\n }\n getNativeDeposit(rootBank, tokenIndex) {\n return rootBank.depositIndex.mul(this.deposits[tokenIndex]);\n }\n getNativeBorrow(rootBank, tokenIndex) {\n return rootBank.borrowIndex.mul(this.borrows[tokenIndex]);\n }\n getUiDeposit(rootBank, mangoGroup, tokenIndex) {\n return (0, utils_1.nativeI80F48ToUi)(this.getNativeDeposit(rootBank, tokenIndex).floor(), mangoGroup.getTokenDecimals(tokenIndex));\n }\n getUiBorrow(rootBank, mangoGroup, tokenIndex) {\n return (0, utils_1.nativeI80F48ToUi)(this.getNativeBorrow(rootBank, tokenIndex).ceil(), mangoGroup.getTokenDecimals(tokenIndex));\n }\n getSpotVal(mangoGroup, mangoCache, index, assetWeight) {\n let assetsVal = fixednum_1.ZERO_I80F48;\n const price = mangoGroup.getPrice(index, mangoCache);\n const depositVal = this.getUiDeposit(mangoCache.rootBankCache[index], mangoGroup, index)\n .mul(price)\n .mul(assetWeight);\n assetsVal = assetsVal.add(depositVal);\n const openOrdersAccount = this.spotOpenOrdersAccounts[index];\n if (openOrdersAccount !== undefined) {\n assetsVal = assetsVal.add(fixednum_1.I80F48.fromNumber((0, utils_1.nativeToUi)(openOrdersAccount.baseTokenTotal.toNumber(), mangoGroup.tokens[index].decimals))\n .mul(price)\n .mul(assetWeight));\n assetsVal = assetsVal.add(fixednum_1.I80F48.fromNumber((0, utils_1.nativeToUi)(openOrdersAccount.quoteTokenTotal.toNumber() +\n openOrdersAccount['referrerRebatesAccrued'].toNumber(), mangoGroup.tokens[layout_1.QUOTE_INDEX].decimals)));\n }\n return assetsVal;\n }\n getAssetsVal(mangoGroup, mangoCache, healthType) {\n let assetsVal = fixednum_1.ZERO_I80F48;\n // quote currency deposits\n assetsVal = assetsVal.add(this.getUiDeposit(mangoCache.rootBankCache[layout_1.QUOTE_INDEX], mangoGroup, layout_1.QUOTE_INDEX));\n for (let i = 0; i < mangoGroup.numOracles; i++) {\n let assetWeight = fixednum_1.ONE_I80F48;\n if (healthType === 'Maint') {\n assetWeight = mangoGroup.spotMarkets[i].maintAssetWeight;\n }\n else if (healthType === 'Init') {\n assetWeight = mangoGroup.spotMarkets[i].initAssetWeight;\n }\n const spotVal = this.getSpotVal(mangoGroup, mangoCache, i, assetWeight);\n assetsVal = assetsVal.add(spotVal);\n const price = mangoCache.priceCache[i].price;\n const perpsUiAssetVal = (0, utils_1.nativeI80F48ToUi)(this.perpAccounts[i].getAssetVal(mangoGroup.perpMarkets[i], price, mangoCache.perpMarketCache[i].shortFunding, mangoCache.perpMarketCache[i].longFunding), mangoGroup.tokens[layout_1.QUOTE_INDEX].decimals);\n assetsVal = assetsVal.add(perpsUiAssetVal);\n }\n return assetsVal;\n }\n getLiabsVal(mangoGroup, mangoCache, healthType) {\n let liabsVal = fixednum_1.ZERO_I80F48;\n liabsVal = liabsVal.add(this.getUiBorrow(mangoCache.rootBankCache[layout_1.QUOTE_INDEX], mangoGroup, layout_1.QUOTE_INDEX));\n for (let i = 0; i < mangoGroup.numOracles; i++) {\n let liabWeight = fixednum_1.ONE_I80F48;\n const price = mangoGroup.getPrice(i, mangoCache);\n if (healthType === 'Maint') {\n liabWeight = mangoGroup.spotMarkets[i].maintLiabWeight;\n }\n else if (healthType === 'Init') {\n liabWeight = mangoGroup.spotMarkets[i].initLiabWeight;\n }\n liabsVal = liabsVal.add(this.getUiBorrow(mangoCache.rootBankCache[i], mangoGroup, i).mul(price.mul(liabWeight)));\n const perpsUiLiabsVal = (0, utils_1.nativeI80F48ToUi)(this.perpAccounts[i].getLiabsVal(mangoGroup.perpMarkets[i], mangoCache.priceCache[i].price, mangoCache.perpMarketCache[i].shortFunding, mangoCache.perpMarketCache[i].longFunding), mangoGroup.tokens[layout_1.QUOTE_INDEX].decimals);\n liabsVal = liabsVal.add(perpsUiLiabsVal);\n }\n return liabsVal;\n }\n getNativeLiabsVal(mangoGroup, mangoCache, healthType) {\n let liabsVal = fixednum_1.ZERO_I80F48;\n liabsVal = liabsVal.add(this.getNativeBorrow(mangoCache.rootBankCache[layout_1.QUOTE_INDEX], layout_1.QUOTE_INDEX));\n for (let i = 0; i < mangoGroup.numOracles; i++) {\n const price = mangoCache.priceCache[i].price;\n let liabWeight = fixednum_1.ONE_I80F48;\n if (healthType === 'Maint') {\n liabWeight = mangoGroup.spotMarkets[i].maintLiabWeight;\n }\n else if (healthType === 'Init') {\n liabWeight = mangoGroup.spotMarkets[i].initLiabWeight;\n }\n liabsVal = liabsVal.add(this.getNativeBorrow(mangoCache.rootBankCache[i], i).mul(price.mul(liabWeight)));\n liabsVal = liabsVal.add(this.perpAccounts[i].getLiabsVal(mangoGroup.perpMarkets[i], price, mangoCache.perpMarketCache[i].shortFunding, mangoCache.perpMarketCache[i].longFunding));\n }\n return liabsVal;\n }\n /**\n * deposits - borrows in native terms\n */\n getNet(bankCache, tokenIndex) {\n return this.deposits[tokenIndex]\n .mul(bankCache.depositIndex)\n .sub(this.borrows[tokenIndex].mul(bankCache.borrowIndex));\n }\n /**\n * Take health components and return the assets and liabs weighted\n */\n getWeightedAssetsLiabsVals(mangoGroup, mangoCache, spot, perps, quote, healthType) {\n let assets = fixednum_1.ZERO_I80F48;\n let liabs = fixednum_1.ZERO_I80F48;\n if (quote.isPos()) {\n assets = assets.add(quote);\n }\n else {\n liabs = liabs.add(quote.neg());\n }\n for (let i = 0; i < mangoGroup.numOracles; i++) {\n const w = (0, utils_1.getWeights)(mangoGroup, i, healthType);\n const price = mangoCache.priceCache[i].price;\n if (spot[i].isPos()) {\n assets = spot[i].mul(price).mul(w.spotAssetWeight).add(assets);\n }\n else {\n liabs = spot[i].neg().mul(price).mul(w.spotLiabWeight).add(liabs);\n }\n if (perps[i].isPos()) {\n assets = perps[i].mul(price).mul(w.perpAssetWeight).add(assets);\n }\n else {\n liabs = perps[i].neg().mul(price).mul(w.perpLiabWeight).add(liabs);\n }\n }\n return { assets, liabs };\n }\n /**\n * Take health components and return the assets and liabs weighted using a price modifier\n */\n getModWeightedAssetsLiabsVals(mangoGroup, mangoCache, spot, perps, quote, modifier, healthType) {\n let assets = fixednum_1.ZERO_I80F48;\n let liabs = fixednum_1.ZERO_I80F48;\n if (quote.isPos()) {\n assets = assets.add(quote);\n }\n else {\n liabs = liabs.add(quote.neg());\n }\n for (let i = 0; i < mangoGroup.numOracles; i++) {\n let priceModifier = fixednum_1.ONE_I80F48;\n if (i != layout_1.QUOTE_INDEX || i != 4) {\n priceModifier = modifier;\n }\n const w = (0, utils_1.getWeights)(mangoGroup, i, healthType);\n const price = mangoCache.priceCache[i].price.mul(priceModifier);\n if (spot[i].isPos()) {\n assets = spot[i].mul(price).mul(w.spotAssetWeight).add(assets);\n }\n else {\n liabs = spot[i].neg().mul(price).mul(w.spotLiabWeight).add(liabs);\n }\n if (perps[i].isPos()) {\n assets = perps[i].mul(price).mul(w.perpAssetWeight).add(assets);\n }\n else {\n liabs = perps[i].neg().mul(price).mul(w.perpLiabWeight).add(liabs);\n }\n }\n return { assets, liabs };\n }\n getHealthFromComponents(mangoGroup, mangoCache, spot, perps, quote, healthType) {\n const health = quote;\n for (let i = 0; i < mangoGroup.numOracles; i++) {\n const w = (0, utils_1.getWeights)(mangoGroup, i, healthType);\n const price = mangoCache.priceCache[i].price;\n const spotHealth = spot[i]\n .mul(price)\n .imul(spot[i].isPos() ? w.spotAssetWeight : w.spotLiabWeight);\n const perpHealth = perps[i]\n .mul(price)\n .imul(perps[i].isPos() ? w.perpAssetWeight : w.perpLiabWeight);\n health.iadd(spotHealth).iadd(perpHealth);\n }\n return health;\n }\n getHealthsFromComponents(mangoGroup, mangoCache, spot, perps, quote, healthType) {\n const spotHealth = quote;\n const perpHealth = quote;\n for (let i = 0; i < mangoGroup.numOracles; i++) {\n const w = (0, utils_1.getWeights)(mangoGroup, i, healthType);\n const price = mangoCache.priceCache[i].price;\n const _spotHealth = spot[i]\n .mul(price)\n .imul(spot[i].isPos() ? w.spotAssetWeight : w.spotLiabWeight);\n const _perpHealth = perps[i]\n .mul(price)\n .imul(perps[i].isPos() ? w.perpAssetWeight : w.perpLiabWeight);\n spotHealth.iadd(_spotHealth);\n perpHealth.iadd(_perpHealth);\n }\n return { spot: spotHealth, perp: perpHealth };\n }\n /**\n * Amount of native quote currency available to expand your position in this market\n */\n getMarketMarginAvailable(mangoGroup, mangoCache, marketIndex, marketType) {\n const health = this.getHealth(mangoGroup, mangoCache, 'Init');\n if (health.lte(fixednum_1.ZERO_I80F48)) {\n return fixednum_1.ZERO_I80F48;\n }\n const w = (0, utils_1.getWeights)(mangoGroup, marketIndex, 'Init');\n const weight = marketType === 'spot' ? w.spotAssetWeight : w.perpAssetWeight;\n if (weight.gte(fixednum_1.ONE_I80F48)) {\n // This is actually an error state and should not happen\n return health;\n }\n else {\n return health.div(fixednum_1.ONE_I80F48.sub(weight));\n }\n }\n /**\n * Get token amount available to withdraw without borrowing.\n */\n getAvailableBalance(mangoGroup, mangoCache, tokenIndex) {\n const health = this.getHealth(mangoGroup, mangoCache, 'Init');\n const net = this.getNet(mangoCache.rootBankCache[tokenIndex], tokenIndex);\n if (tokenIndex === layout_1.QUOTE_INDEX) {\n return health.min(net).max(fixednum_1.ZERO_I80F48);\n }\n else {\n const w = (0, utils_1.getWeights)(mangoGroup, tokenIndex, 'Init');\n return net\n .min(health\n .div(w.spotAssetWeight)\n .div(mangoCache.priceCache[tokenIndex].price))\n .max(fixednum_1.ZERO_I80F48);\n }\n }\n /**\n * Return the spot, perps and quote currency values after adjusting for\n * worst case open orders scenarios. These values are not adjusted for health\n * type\n * @param mangoGroup\n * @param mangoCache\n */\n getHealthComponents(mangoGroup, mangoCache) {\n const spot = Array(mangoGroup.numOracles).fill(fixednum_1.ZERO_I80F48);\n const perps = Array(mangoGroup.numOracles).fill(fixednum_1.ZERO_I80F48);\n const quote = this.getNet(mangoCache.rootBankCache[layout_1.QUOTE_INDEX], layout_1.QUOTE_INDEX);\n for (let i = 0; i < mangoGroup.numOracles; i++) {\n const bankCache = mangoCache.rootBankCache[i];\n const price = mangoCache.priceCache[i].price;\n const baseNet = this.getNet(bankCache, i);\n // Evaluate spot first\n const openOrders = this.spotOpenOrdersAccounts[i];\n if (this.inMarginBasket[i] && openOrders !== undefined) {\n const { quoteFree, quoteLocked, baseFree, baseLocked } = (0, utils_1.splitOpenOrders)(openOrders);\n // base total if all bids were executed\n const bidsBaseNet = baseNet\n .add(quoteLocked.div(price))\n .iadd(baseFree)\n .iadd(baseLocked);\n // base total if all asks were executed\n const asksBaseNet = baseNet.add(baseFree);\n // bids case worse if it has a higher absolute position\n if (bidsBaseNet.abs().gt(asksBaseNet.abs())) {\n spot[i] = bidsBaseNet;\n quote.iadd(quoteFree);\n }\n else {\n spot[i] = asksBaseNet;\n quote.iadd(baseLocked.mul(price)).iadd(quoteFree).iadd(quoteLocked);\n }\n }\n else {\n spot[i] = baseNet;\n }\n // Evaluate perps\n if (!mangoGroup.perpMarkets[i].perpMarket.equals(utils_1.zeroKey)) {\n const perpMarketCache = mangoCache.perpMarketCache[i];\n const perpAccount = this.perpAccounts[i];\n const baseLotSize = mangoGroup.perpMarkets[i].baseLotSize;\n const quoteLotSize = mangoGroup.perpMarkets[i].quoteLotSize;\n const takerQuote = fixednum_1.I80F48.fromI64(perpAccount.takerQuote.mul(quoteLotSize));\n const basePos = fixednum_1.I80F48.fromI64(perpAccount.basePosition.add(perpAccount.takerBase).imul(baseLotSize));\n const bidsQuantity = fixednum_1.I80F48.fromI64(perpAccount.bidsQuantity.mul(baseLotSize));\n const asksQuantity = fixednum_1.I80F48.fromI64(perpAccount.asksQuantity.mul(baseLotSize));\n const bidsBaseNet = basePos.add(bidsQuantity);\n const asksBaseNet = basePos.sub(asksQuantity);\n if (bidsBaseNet.abs().gt(asksBaseNet.abs())) {\n const quotePos = perpAccount\n .getQuotePosition(perpMarketCache)\n .add(takerQuote)\n .isub(bidsQuantity.mul(price));\n quote.iadd(quotePos);\n perps[i] = bidsBaseNet;\n }\n else {\n const quotePos = perpAccount\n .getQuotePosition(perpMarketCache)\n .add(takerQuote)\n .iadd(asksQuantity.mul(price));\n quote.iadd(quotePos);\n perps[i] = asksBaseNet;\n }\n }\n else {\n perps[i] = fixednum_1.ZERO_I80F48;\n }\n }\n return { spot, perps, quote };\n }\n getHealth(mangoGroup, mangoCache, healthType) {\n const { spot, perps, quote } = this.getHealthComponents(mangoGroup, mangoCache);\n const health = this.getHealthFromComponents(mangoGroup, mangoCache, spot, perps, quote, healthType);\n return health;\n }\n getHealthRatio(mangoGroup, mangoCache, healthType) {\n const { spot, perps, quote } = this.getHealthComponents(mangoGroup, mangoCache);\n const { assets, liabs } = this.getWeightedAssetsLiabsVals(mangoGroup, mangoCache, spot, perps, quote, healthType);\n if (liabs.gt(fixednum_1.ZERO_I80F48)) {\n return assets.div(liabs).sub(fixednum_1.ONE_I80F48).mul(fixednum_1.I80F48.fromNumber(100));\n }\n else {\n return fixednum_1.I80F48.fromNumber(100);\n }\n }\n /**\n * Return the spot, perps and quote currency values after adjusting for\n * worst case open orders scenarios, using a price modifier.\n * These values are not adjusted for health type.\n */\n getModHealthComponents(mangoGroup, mangoCache, modifier) {\n const spot = Array(mangoGroup.numOracles).fill(fixednum_1.ZERO_I80F48);\n const perps = Array(mangoGroup.numOracles).fill(fixednum_1.ZERO_I80F48);\n const quote = this.getNet(mangoCache.rootBankCache[layout_1.QUOTE_INDEX], layout_1.QUOTE_INDEX);\n for (let i = 0; i < mangoGroup.numOracles; i++) {\n let priceModifier = fixednum_1.ONE_I80F48;\n if (i != layout_1.QUOTE_INDEX || i != 4) {\n priceModifier = modifier;\n }\n const bankCache = mangoCache.rootBankCache[i];\n const price = mangoCache.priceCache[i].price.mul(priceModifier);\n const baseNet = this.getNet(bankCache, i);\n // Evaluate spot first\n const openOrders = this.spotOpenOrdersAccounts[i];\n if (this.inMarginBasket[i] && openOrders !== undefined) {\n const { quoteFree, quoteLocked, baseFree, baseLocked } = (0, utils_1.splitOpenOrders)(openOrders);\n // base total if all bids were executed\n const bidsBaseNet = baseNet\n .add(quoteLocked.div(price))\n .iadd(baseFree)\n .iadd(baseLocked);\n // base total if all asks were executed\n const asksBaseNet = baseNet.add(baseFree);\n // bids case worse if it has a higher absolute position\n if (bidsBaseNet.abs().gt(asksBaseNet.abs())) {\n spot[i] = bidsBaseNet;\n quote.iadd(quoteFree);\n }\n else {\n spot[i] = asksBaseNet;\n quote.iadd(baseLocked.mul(price)).iadd(quoteFree).iadd(quoteLocked);\n }\n }\n else {\n spot[i] = baseNet;\n }\n // Evaluate perps\n if (!mangoGroup.perpMarkets[i].perpMarket.equals(utils_1.zeroKey)) {\n const perpMarketCache = mangoCache.perpMarketCache[i];\n const perpAccount = this.perpAccounts[i];\n const baseLotSize = mangoGroup.perpMarkets[i].baseLotSize;\n const quoteLotSize = mangoGroup.perpMarkets[i].quoteLotSize;\n const takerQuote = fixednum_1.I80F48.fromI64(perpAccount.takerQuote.mul(quoteLotSize));\n const basePos = fixednum_1.I80F48.fromI64(perpAccount.basePosition.add(perpAccount.takerBase).imul(baseLotSize));\n const bidsQuantity = fixednum_1.I80F48.fromI64(perpAccount.bidsQuantity.mul(baseLotSize));\n const asksQuantity = fixednum_1.I80F48.fromI64(perpAccount.asksQuantity.mul(baseLotSize));\n const bidsBaseNet = basePos.add(bidsQuantity);\n const asksBaseNet = basePos.sub(asksQuantity);\n if (bidsBaseNet.abs().gt(asksBaseNet.abs())) {\n const quotePos = perpAccount\n .getQuotePosition(perpMarketCache)\n .add(takerQuote)\n .isub(bidsQuantity.mul(price));\n quote.iadd(quotePos);\n perps[i] = bidsBaseNet;\n }\n else {\n const quotePos = perpAccount\n .getQuotePosition(perpMarketCache)\n .add(takerQuote)\n .iadd(asksQuantity.mul(price));\n quote.iadd(quotePos);\n perps[i] = asksBaseNet;\n }\n }\n else {\n perps[i] = fixednum_1.ZERO_I80F48;\n }\n }\n return { spot, perps, quote };\n }\n getPriceMoveToLiquidate(mangoGroup, mangoCache) {\n const scenarioBaseLine = this.getHealthComponents(mangoGroup, mangoCache);\n const scenarioBaseAssetsLiabs = this.getWeightedAssetsLiabsVals(mangoGroup, mangoCache, scenarioBaseLine.spot, scenarioBaseLine.perps, scenarioBaseLine.quote, 'Maint');\n const scenarioMod = this.getModHealthComponents(mangoGroup, mangoCache, fixednum_1.I80F48.fromNumber(1.01));\n const scenarioModAssetsLiabs = this.getModWeightedAssetsLiabsVals(mangoGroup, mangoCache, scenarioMod.spot, scenarioMod.perps, scenarioMod.quote, fixednum_1.I80F48.fromNumber(1.01), 'Maint');\n const maintEquity = scenarioBaseAssetsLiabs.assets.sub(scenarioBaseAssetsLiabs.liabs);\n const maintAssetsRateOfChange = scenarioModAssetsLiabs.assets.sub(scenarioBaseAssetsLiabs.assets);\n const maintLiabsRateOfChange = scenarioModAssetsLiabs.liabs.sub(scenarioBaseAssetsLiabs.liabs);\n const maintRateOfChange = maintLiabsRateOfChange.sub(maintAssetsRateOfChange);\n let priceMoveToLiquidate = fixednum_1.ZERO_I80F48;\n if (maintRateOfChange.isZero()) {\n priceMoveToLiquidate = fixednum_1.ZERO_I80F48;\n }\n else {\n priceMoveToLiquidate = maintEquity.div(maintRateOfChange);\n }\n return priceMoveToLiquidate;\n }\n computeValue(mangoGroup, mangoCache) {\n return this.getAssetsVal(mangoGroup, mangoCache).sub(this.getLiabsVal(mangoGroup, mangoCache));\n }\n /**\n * Get the value of unclaimed MNGO liquidity mining rewards\n */\n mgnoAccruedValue(mangoGroup, mangoCache) {\n const config = new config_1.Config(ids_json_1.default);\n const groupConfig = config.groups.find((g) => g.publicKey.equals(mangoGroup.publicKey));\n const mngoOracleIndex = groupConfig.oracles.findIndex((t) => t.symbol === 'MNGO');\n const mngoTokenIndex = groupConfig.tokens.findIndex((t) => t.symbol === 'MNGO');\n const mngoPrice = mangoCache.priceCache[mngoOracleIndex].price;\n const mngoDecimals = mangoGroup.tokens[mngoTokenIndex].decimals;\n let val = fixednum_1.ZERO_I80F48;\n for (let i = 0; i < mangoGroup.numOracles; i++) {\n const mgnoAccruedUiVal = (0, utils_1.nativeI80F48ToUi)(fixednum_1.I80F48.fromI64(this.perpAccounts[i].mngoAccrued).mul(mngoPrice), mngoDecimals);\n val = val.add(mgnoAccruedUiVal);\n }\n return val;\n }\n getLeverage(mangoGroup, mangoCache) {\n const liabs = this.getLiabsVal(mangoGroup, mangoCache);\n const assets = this.getAssetsVal(mangoGroup, mangoCache);\n if (assets.gt(fixednum_1.ZERO_I80F48)) {\n return liabs.div(assets.sub(liabs));\n }\n return fixednum_1.ZERO_I80F48;\n }\n calcTotalPerpUnsettledPnl(mangoGroup, mangoCache) {\n let pnl = fixednum_1.ZERO_I80F48;\n for (let i = 0; i < mangoGroup.perpMarkets.length; i++) {\n const perpMarketInfo = mangoGroup.perpMarkets[i];\n if (perpMarketInfo.isEmpty())\n continue;\n const price = mangoCache.getPrice(i);\n pnl = pnl.add(this.perpAccounts[i].getPnl(perpMarketInfo, mangoCache.perpMarketCache[i], price));\n }\n return pnl;\n }\n calcTotalPerpPosUnsettledPnl(mangoGroup, mangoCache) {\n let pnl = fixednum_1.ZERO_I80F48;\n for (let i = 0; i < mangoGroup.perpMarkets.length; i++) {\n const perpMarketInfo = mangoGroup.perpMarkets[i];\n if (perpMarketInfo.isEmpty())\n continue;\n const price = mangoCache.getPrice(i);\n const perpAccountPnl = this.perpAccounts[i].getPnl(perpMarketInfo, mangoCache.perpMarketCache[i], price);\n if (perpAccountPnl.isPos()) {\n pnl = pnl.add(perpAccountPnl);\n }\n }\n return pnl;\n }\n getMaxLeverageForMarket(mangoGroup, mangoCache, marketIndex, market, side, price) {\n const initHealth = this.getHealth(mangoGroup, mangoCache, 'Init');\n const healthDecimals = fixednum_1.I80F48.fromNumber(Math.pow(10, mangoGroup.tokens[layout_1.QUOTE_INDEX].decimals));\n const uiInitHealth = initHealth.div(healthDecimals);\n let uiDepositVal = fixednum_1.ZERO_I80F48;\n let uiBorrowVal = fixednum_1.ZERO_I80F48;\n let deposits = fixednum_1.ZERO_I80F48;\n let borrows = fixednum_1.ZERO_I80F48;\n let initLiabWeight, initAssetWeight;\n if (market instanceof PerpMarket_1.default) {\n ({ initLiabWeight, initAssetWeight } =\n mangoGroup.perpMarkets[marketIndex]);\n const basePos = this.perpAccounts[marketIndex].basePosition;\n if (basePos.gt(utils_2.ZERO_BN)) {\n deposits = fixednum_1.I80F48.fromNumber(market.baseLotsToNumber(basePos));\n uiDepositVal = deposits.mul(price);\n }\n else {\n borrows = fixednum_1.I80F48.fromNumber(market.baseLotsToNumber(basePos)).abs();\n uiBorrowVal = borrows.mul(price);\n }\n }\n else {\n ({ initLiabWeight, initAssetWeight } =\n mangoGroup.spotMarkets[marketIndex]);\n deposits = this.getUiDeposit(mangoCache.rootBankCache[marketIndex], mangoGroup, marketIndex);\n uiDepositVal = deposits.mul(price);\n borrows = this.getUiBorrow(mangoCache.rootBankCache[marketIndex], mangoGroup, marketIndex);\n uiBorrowVal = borrows.mul(price);\n }\n let max = fixednum_1.ZERO_I80F48;\n if (side === 'buy') {\n const uiHealthAtZero = uiInitHealth.add(uiBorrowVal.mul(initLiabWeight.sub(fixednum_1.ONE_I80F48)));\n max = uiHealthAtZero\n .div(fixednum_1.ONE_I80F48.sub(initAssetWeight))\n .add(uiBorrowVal);\n }\n else {\n const uiHealthAtZero = uiInitHealth.add(uiDepositVal.mul(fixednum_1.ONE_I80F48.sub(initAssetWeight)));\n max = uiHealthAtZero\n .div(initLiabWeight.sub(fixednum_1.ONE_I80F48))\n .add(uiDepositVal);\n }\n return { max, uiBorrowVal, uiDepositVal, deposits, borrows };\n }\n getMaxWithBorrowForToken(mangoGroup, mangoCache, tokenIndex) {\n const oldInitHealth = this.getHealth(mangoGroup, mangoCache, 'Init').floor();\n const tokenDeposits = this.getNativeDeposit(mangoCache.rootBankCache[tokenIndex], tokenIndex).floor();\n let liabWeight, assetWeight, nativePrice;\n if (tokenIndex === layout_1.QUOTE_INDEX) {\n liabWeight = assetWeight = nativePrice = fixednum_1.ONE_I80F48;\n }\n else {\n liabWeight = mangoGroup.spotMarkets[tokenIndex].initLiabWeight;\n assetWeight = mangoGroup.spotMarkets[tokenIndex].initAssetWeight;\n nativePrice = mangoCache.priceCache[tokenIndex].price;\n }\n const newInitHealth = oldInitHealth\n .sub(tokenDeposits.mul(nativePrice).mul(assetWeight))\n .floor();\n const price = mangoGroup.getPrice(tokenIndex, mangoCache);\n const healthDecimals = fixednum_1.I80F48.fromNumber(Math.pow(10, mangoGroup.tokens[layout_1.QUOTE_INDEX].decimals));\n return newInitHealth.div(healthDecimals).div(price.mul(liabWeight));\n }\n isLiquidatable(mangoGroup, mangoCache) {\n return ((this.beingLiquidated &&\n this.getHealth(mangoGroup, mangoCache, 'Init').isNeg()) ||\n this.getHealth(mangoGroup, mangoCache, 'Maint').isNeg());\n }\n toPrettyString(groupConfig, mangoGroup, cache) {\n const lines = [];\n lines.push('MangoAccount ' + this.publicKey.toBase58());\n lines.push('Owner: ' + this.owner.toBase58());\n if (!this.delegate.equals(utils_1.zeroKey)) {\n lines.push('Delegate: ' + this.delegate.toBase58());\n }\n lines.push('Maint Health Ratio: ' +\n this.getHealthRatio(mangoGroup, cache, 'Maint').toFixed(4));\n lines.push('Maint Health: ' + this.getHealth(mangoGroup, cache, 'Maint').toFixed(4));\n lines.push('Init Health: ' + this.getHealth(mangoGroup, cache, 'Init').toFixed(4));\n lines.push('Equity: ' + this.computeValue(mangoGroup, cache).toFixed(4));\n lines.push('isBankrupt: ' + this.isBankrupt);\n lines.push('beingLiquidated: ' + this.beingLiquidated);\n lines.push('Spot:');\n lines.push('Token: Net Balance / Base In Orders / Quote In Orders / Liq. Price');\n const quoteAdj = new bn_js_1.default(10).pow(new bn_js_1.default(mangoGroup.tokens[layout_1.QUOTE_INDEX].decimals));\n for (let i = 0; i < mangoGroup.tokens.length; i++) {\n if (mangoGroup.tokens[i].mint.equals(utils_1.zeroKey)) {\n continue;\n }\n const token = (0, config_1.getTokenByMint)(groupConfig, mangoGroup.tokens[i].mint);\n let baseInOrders = utils_2.ZERO_BN;\n let quoteInOrders = utils_2.ZERO_BN;\n const openOrders = i !== layout_1.QUOTE_INDEX ? this.spotOpenOrdersAccounts[i] : undefined;\n if (openOrders) {\n const baseAdj = new bn_js_1.default(10).pow(new bn_js_1.default(mangoGroup.tokens[i].decimals));\n baseInOrders = openOrders.baseTokenTotal.div(baseAdj);\n quoteInOrders = openOrders.quoteTokenTotal\n .add(openOrders['referrerRebatesAccrued'])\n .div(quoteAdj);\n }\n const net = (0, utils_1.nativeI80F48ToUi)(this.getNet(cache.rootBankCache[i], i), mangoGroup.tokens[i].decimals);\n if (net.eq(fixednum_1.ZERO_I80F48) &&\n baseInOrders.isZero() &&\n quoteInOrders.isZero()) {\n continue;\n }\n const liqPrice = i !== layout_1.QUOTE_INDEX\n ? this.getLiquidationPrice(mangoGroup, cache, i)\n : undefined;\n const liqPriceStr = liqPrice !== undefined ? liqPrice.toFixed(4) : 'N/A';\n lines.push(`${token.symbol}: ${net.toFixed(4)} / ${baseInOrders\n .toNumber()\n .toFixed(4)} / ${quoteInOrders\n .toNumber()\n .toFixed(4)} / ${liqPriceStr}`);\n }\n lines.push('Perps:');\n lines.push('Market: Base Pos / Quote Pos / Unsettled Funding / Health / Liq. Price');\n for (let i = 0; i < this.perpAccounts.length; i++) {\n if (mangoGroup.perpMarkets[i].perpMarket.equals(utils_1.zeroKey)) {\n continue;\n }\n const market = (0, config_1.getMarketByPublicKey)(groupConfig, mangoGroup.perpMarkets[i].perpMarket);\n if (market === undefined) {\n continue;\n }\n const liqPrice = this.getLiquidationPrice(mangoGroup, cache, i);\n const liqPriceStr = liqPrice !== undefined ? liqPrice.toFixed(4) : 'N/A';\n const perpAccount = this.perpAccounts[i];\n const perpMarketInfo = mangoGroup.perpMarkets[i];\n lines.push(`${market.name}: ${this.getBasePositionUiWithGroup(i, mangoGroup).toFixed(4)} / ${(perpAccount.getQuotePosition(cache.perpMarketCache[i]).toNumber() /\n quoteAdj.toNumber()).toFixed(4)} / ${(perpAccount.getUnsettledFunding(cache.perpMarketCache[i]).toNumber() /\n quoteAdj.toNumber()).toFixed(4)} / ${perpAccount\n .getHealth(perpMarketInfo, cache.priceCache[i].price, perpMarketInfo.maintAssetWeight, perpMarketInfo.maintLiabWeight, cache.perpMarketCache[i].longFunding, cache.perpMarketCache[i].shortFunding)\n .toFixed(4)} / ${liqPriceStr}`);\n }\n return lines.join(os_1.EOL);\n }\n /**\n * Get all the open orders using only info in MangoAccount; Does not contain\n * information about the size of the order.\n */\n getPerpOpenOrders() {\n const perpOpenOrders = [];\n for (let i = 0; i < this.orders.length; i++) {\n if (this.orderMarket[i] === layout_1.FREE_ORDER_SLOT) {\n continue;\n }\n perpOpenOrders.push({\n marketIndex: this.orderMarket[i],\n price: (0, book_1.getPriceFromKey)(this.orders[i]),\n side: this.orderSide[i],\n });\n }\n return perpOpenOrders;\n }\n /**\n * Return the open orders keys in basket and replace open orders not in basket with zero key\n */\n getOpenOrdersKeysInBasket() {\n return this.spotOpenOrders.map((pk, i) => this.inMarginBasket[i] ? pk : utils_1.zeroKey);\n }\n /**\n * Return the open orders keys in basket; no zero keys; useful for PlaceSpotOrder2 and PlacePerpOrder2\n */\n getOpenOrdersKeysInBasketPacked() {\n return this.spotOpenOrders.filter((pk, i) => this.inMarginBasket[i]);\n }\n /**\n * Return the current position for the market at `marketIndex` in UI units\n * e.g. if you buy 1 BTC in the UI, you're buying 1,000,000 native BTC,\n * 10,000 BTC-PERP contracts and exactly 1 BTC in UI\n * Find the marketIndex in the ids.json list of perp markets\n */\n getPerpPositionUi(marketIndex, perpMarket) {\n return this.perpAccounts[marketIndex].getBasePositionUi(perpMarket);\n }\n /**\n * Return the current position for the market at `marketIndex` in UI units\n * e.g. if you buy 1 BTC in the UI, you're buying 1,000,000 native BTC,\n * 10,000 BTC-PERP contracts and exactly 1 BTC in UI\n * Find the marketIndex in the ids.json list of perp markets\n */\n getBasePositionUiWithGroup(marketIndex, group) {\n return (this.perpAccounts[marketIndex].basePosition\n .mul(group.perpMarkets[marketIndex].baseLotSize)\n .toNumber() / Math.pow(10, group.tokens[marketIndex].decimals));\n }\n /**\n * Return the equity in standard UI numbers. E.g. if equity is $100, this returns 100\n */\n getEquityUi(mangoGroup, mangoCache) {\n return (this.computeValue(mangoGroup, mangoCache).toNumber() /\n Math.pow(10, mangoGroup.tokens[layout_1.QUOTE_INDEX].decimals));\n }\n /**\n * This is the init health divided by quote decimals\n */\n getCollateralValueUi(mangoGroup, mangoCache) {\n return (this.getHealth(mangoGroup, mangoCache, 'Init').toNumber() /\n Math.pow(10, mangoGroup.tokens[layout_1.QUOTE_INDEX].decimals));\n }\n /**\n * Calculates the exposure for each spot asset and perp contract\n * in standard UI numbers. E.g. if a user has net borrowed $100,\n * and is long 10,000 MNGO contracts this would return:\n * [{asset: \"USDC\", symbol: \"USDC\", amount: -100, value: -100},\n * {asset: \"MNGO-PERP\", symbol: \"MNGO\", amount: 10000, value: 2000}]\n * All perp markets that are active for the mango group need to be\n * loaded before calling this method and can passed in arbitrary order.\n */\n getNetExposureByAsset(groupConfig, group, perpMarkets, cache) {\n // calculate quote balance first\n const quoteBalance = (0, utils_1.nativeToUi)(this.getNet(cache.rootBankCache[layout_1.QUOTE_INDEX], layout_1.QUOTE_INDEX).toNumber(), group.tokens[layout_1.QUOTE_INDEX].decimals);\n let result = [\n {\n asset: 'USDC',\n amount: quoteBalance,\n symbol: 'USDC',\n value: quoteBalance,\n },\n ];\n const quote = result[0];\n // then for each oracle\n for (let index = 0; index < group.numOracles; ++index) {\n const oracle = groupConfig.oracles[index];\n if (!oracle) {\n continue;\n }\n const price = group.getPrice(index, cache).toNumber();\n // calculate spot margin balance\n if (!group.spotMarkets[index].isEmpty()) {\n let amount = (0, utils_1.nativeToUi)(this.getNet(cache.rootBankCache[index], index).toNumber(), group.tokens[index].decimals);\n let value = amount * price;\n const openOrdersAccount = this.spotOpenOrdersAccounts[index];\n if (openOrdersAccount !== undefined) {\n // include open orders unsettled base\n const baseAmount = (0, utils_1.nativeToUi)(openOrdersAccount.baseTokenTotal.toNumber(), group.tokens[index].decimals);\n amount += baseAmount;\n value += baseAmount * price;\n // adjust quote with open orders unsettled quote\n const quoteAmount = (0, utils_1.nativeToUi)(openOrdersAccount.quoteTokenTotal.toNumber() +\n openOrdersAccount['referrerRebatesAccrued'].toNumber(), group.tokens[layout_1.QUOTE_INDEX].decimals);\n quote.amount += quoteAmount;\n quote.value += quoteAmount;\n }\n result.push({\n asset: oracle.symbol,\n symbol: oracle.symbol,\n amount,\n value,\n });\n }\n // calculate perp balance\n if (!group.perpMarkets[index].isEmpty()) {\n const marketConfig = groupConfig.perpMarkets.find((p) => p.marketIndex == index);\n const market = perpMarkets.find((p) => p === null || p === void 0 ? void 0 : p.publicKey.equals(marketConfig === null || marketConfig === void 0 ? void 0 : marketConfig.publicKey));\n const amount = this.perpAccounts[index].getBasePositionUi(market);\n const value = price * amount;\n result.push({\n asset: marketConfig.name,\n symbol: oracle.symbol,\n amount,\n value,\n });\n // adjust quote w/ unsettled amount\n const unsettledAmount = (0, utils_1.nativeToUi)(this.perpAccounts[index]\n .getPnl(group.perpMarkets[index], cache.perpMarketCache[index], fixednum_1.I80F48.fromNumber(price))\n .toNumber(), group.tokens[layout_1.QUOTE_INDEX].decimals);\n quote.amount += unsettledAmount;\n quote.value += unsettledAmount;\n }\n }\n return result;\n }\n}\nexports.default = MangoAccount;\n//# sourceMappingURL=MangoAccount.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst big_js_1 = require(\"big.js\");\nconst layout_1 = require(\"./layout\");\nconst fixednum_1 = require(\"./utils/fixednum\");\nconst layout_2 = require(\"./layout\");\nconst PerpMarket_1 = __importDefault(require(\"./PerpMarket\"));\nconst RootBank_1 = __importDefault(require(\"./RootBank\"));\nconst utils_1 = require(\"./utils/utils\");\nclass MangoGroup {\n constructor(publicKey, decoded) {\n this.publicKey = publicKey;\n Object.assign(this, decoded);\n this.oracles = this.oracles.filter((o) => !o.equals(utils_1.zeroKey));\n this.rootBankAccounts = new Array(layout_2.MAX_TOKENS).fill(undefined);\n }\n getOracleIndex(oracle) {\n for (let i = 0; i < this.numOracles; i++) {\n if (this.oracles[i].equals(oracle)) {\n return i;\n }\n }\n throw new Error('This Oracle does not belong to this MangoGroup');\n }\n getSpotMarketIndex(spotMarketPk) {\n for (let i = 0; i < this.numOracles; i++) {\n if (this.spotMarkets[i].spotMarket.equals(spotMarketPk)) {\n return i;\n }\n }\n throw new Error('This Market does not belong to this MangoGroup');\n }\n getPerpMarketIndex(perpMarketPk) {\n for (let i = 0; i < this.numOracles; i++) {\n if (this.perpMarkets[i].perpMarket.equals(perpMarketPk)) {\n return i;\n }\n }\n throw new Error('This PerpMarket does not belong to this MangoGroup');\n }\n getTokenIndex(token) {\n for (let i = 0; i < this.tokens.length; i++) {\n if (this.tokens[i].mint.equals(token)) {\n return i;\n }\n }\n throw new Error('This token does not belong in this MangoGroup');\n }\n getRootBankIndex(rootBank) {\n for (let i = 0; i < this.tokens.length; i++) {\n if (this.tokens[i].rootBank.equals(rootBank)) {\n return i;\n }\n }\n throw new Error('This root bank does not belong in this MangoGroup');\n }\n getBorrowRate(tokenIndex) {\n const rootBank = this.rootBankAccounts[tokenIndex];\n if (!rootBank)\n throw new Error(`Root bank at index ${tokenIndex} is not loaded`);\n return rootBank.getBorrowRate(this);\n }\n getDepositRate(tokenIndex) {\n const rootBank = this.rootBankAccounts[tokenIndex];\n if (!rootBank)\n throw new Error(`Root bank at index ${tokenIndex} is not loaded`);\n return rootBank.getDepositRate(this);\n }\n /**\n * Return the decimals in TokenInfo;\n * If it's not QUOTE_INDEX and there is an oracle for this index but no SPL-Token, this will default to 6\n * Otherwise throw error\n */\n getTokenDecimals(tokenIndex) {\n const tokenInfo = this.tokens[tokenIndex];\n if (tokenInfo.decimals == 0) {\n if (this.oracles[tokenIndex].equals(utils_1.zeroKey)) {\n throw new Error('No oracle for this tokenIndex');\n }\n else {\n return 6;\n }\n }\n else {\n return tokenInfo.decimals;\n }\n }\n cachePriceToUi(price, tokenIndex) {\n const decimalAdj = new big_js_1.Big(10).pow(this.getTokenDecimals(tokenIndex) - this.getTokenDecimals(layout_2.QUOTE_INDEX));\n return price.toBig().mul(decimalAdj).toNumber();\n }\n getPrice(tokenIndex, mangoCache) {\n var _a;\n if (tokenIndex === layout_2.QUOTE_INDEX)\n return fixednum_1.ONE_I80F48;\n const decimalAdj = new big_js_1.Big(10).pow(this.getTokenDecimals(tokenIndex) - this.getTokenDecimals(layout_2.QUOTE_INDEX));\n return fixednum_1.I80F48.fromBig((_a = mangoCache.priceCache[tokenIndex]) === null || _a === void 0 ? void 0 : _a.price.toBig().mul(decimalAdj));\n }\n getPriceUi(tokenIndex, mangoCache) {\n var _a;\n if (tokenIndex === layout_2.QUOTE_INDEX)\n return 1;\n return (((_a = mangoCache.priceCache[tokenIndex]) === null || _a === void 0 ? void 0 : _a.price.toNumber()) *\n Math.pow(10, this.getTokenDecimals(tokenIndex) - this.getTokenDecimals(layout_2.QUOTE_INDEX)));\n }\n getPriceNative(tokenIndex, mangoCache) {\n if (tokenIndex === layout_2.QUOTE_INDEX)\n return fixednum_1.ONE_I80F48;\n return mangoCache.priceCache[tokenIndex].price;\n }\n getUiTotalDeposit(tokenIndex) {\n const rootBank = this.rootBankAccounts[tokenIndex];\n if (!rootBank)\n throw new Error(`Root bank at index ${tokenIndex} is not loaded`);\n return rootBank.getUiTotalDeposit(this);\n }\n getUiTotalBorrow(tokenIndex) {\n const rootBank = this.rootBankAccounts[tokenIndex];\n if (!rootBank)\n throw new Error(`Root bank at index ${tokenIndex} is not loaded`);\n return rootBank.getUiTotalBorrow(this);\n }\n loadCache(connection) {\n return __awaiter(this, void 0, void 0, function* () {\n const account = yield connection.getAccountInfo(this.mangoCache);\n if (!account || !(account === null || account === void 0 ? void 0 : account.data))\n throw new Error('Unable to load cache');\n const decoded = layout_2.MangoCacheLayout.decode(account.data);\n return new layout_2.MangoCache(this.mangoCache, decoded);\n });\n }\n onCacheChange(connection, cb) {\n const sub = connection.onAccountChange(this.mangoCache, (ai, _) => {\n const decoded = layout_2.MangoCacheLayout.decode(ai.data);\n const parsed = new layout_2.MangoCache(this.mangoCache, decoded);\n cb(parsed);\n }, connection.commitment);\n return sub;\n }\n loadRootBanks(connection) {\n return __awaiter(this, void 0, void 0, function* () {\n const rootBankPks = this.tokens\n .map((t) => t.rootBank)\n .filter((rB) => !rB.equals(utils_1.zeroKey));\n const rootBankAccts = yield (0, utils_1.getMultipleAccounts)(connection, rootBankPks);\n const parsedRootBanks = rootBankAccts.map((acc) => {\n const decoded = layout_2.RootBankLayout.decode(acc.accountInfo.data);\n return new RootBank_1.default(acc.publicKey, decoded);\n });\n const nodeBankPks = parsedRootBanks.map((bank) => bank.nodeBanks.filter((key) => !key.equals(utils_1.zeroKey)));\n const nodeBankAccts = yield (0, utils_1.getMultipleAccounts)(connection, nodeBankPks.flat());\n const nodeBankAccounts = nodeBankAccts.map((acc) => {\n const decoded = layout_1.NodeBankLayout.decode(acc.accountInfo.data);\n return new layout_1.NodeBank(acc.publicKey, decoded);\n });\n let nodeBankIndex = 0;\n for (let i = 0; i < parsedRootBanks.length; i++) {\n const rootBank = parsedRootBanks[i];\n const numNodeBanks = rootBank.nodeBanks.filter((pk) => !pk.equals(utils_1.zeroKey)).length;\n rootBank.nodeBankAccounts = nodeBankAccounts.slice(nodeBankIndex, nodeBankIndex + numNodeBanks);\n nodeBankIndex += numNodeBanks;\n }\n this.rootBankAccounts = this.tokens.map((t) => {\n const rootBank = parsedRootBanks.find((rB) => rB.publicKey.equals(t.rootBank));\n return rootBank !== null && rootBank !== void 0 ? rootBank : undefined;\n });\n return this.rootBankAccounts;\n });\n }\n loadPerpMarket(connection, marketIndex, baseDecimals, quoteDecimals) {\n return __awaiter(this, void 0, void 0, function* () {\n const pk = this.perpMarkets[marketIndex].perpMarket;\n const acc = yield connection.getAccountInfo(pk);\n const decoded = layout_2.PerpMarketLayout.decode(acc === null || acc === void 0 ? void 0 : acc.data);\n return new PerpMarket_1.default(pk, baseDecimals, quoteDecimals, decoded);\n });\n }\n getQuoteTokenInfo() {\n return this.tokens[this.tokens.length - 1];\n }\n}\nexports.default = MangoGroup;\n//# sourceMappingURL=MangoGroup.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils_1 = require(\"./utils/utils\");\nconst fixednum_1 = require(\"./utils/fixednum\");\nconst big_js_1 = __importDefault(require(\"big.js\"));\nconst ZERO = new big_js_1.default(0);\nconst NEG_ONE = new big_js_1.default(-1);\nclass PerpAccount {\n constructor(decoded) {\n Object.assign(this, decoded);\n }\n /**\n * Get average entry price of current position. Returned value is UI number.\n * Does not include fees.\n * Events are sorted latest event first\n */\n getAverageOpenPrice(mangoAccount, // circular import?\n perpMarket, events) {\n if (this.basePosition.isZero()) {\n return ZERO;\n }\n const basePos = perpMarket.baseLotsToNumber(this.basePosition);\n const userPk = mangoAccount.publicKey.toString();\n let currBase = new big_js_1.default(basePos);\n let openingQuote = ZERO;\n for (const event of events) {\n let price, baseChange;\n if ('liqor' in event) {\n const le = event;\n price = new big_js_1.default(le.price);\n let quantity = new big_js_1.default(le.quantity);\n if (userPk === le.liqee.toString()) {\n quantity = quantity.mul(NEG_ONE);\n }\n if (currBase.gt(ZERO) && quantity.gt(ZERO)) {\n // liquidation that opens\n baseChange = quantity.lt(currBase) ? quantity : currBase; // get min value\n }\n else if (currBase.lt(ZERO) && quantity.lt(ZERO)) {\n // liquidation that opens\n baseChange = currBase.gt(quantity) ? currBase : quantity; // get max value\n }\n else {\n // liquidation that closes\n continue;\n }\n }\n else {\n const fe = event;\n // TODO - verify this gives proper UI number\n price = new big_js_1.default(fe.price);\n let quantity = new big_js_1.default(fe.quantity);\n if ((userPk === fe.taker.toString() && fe.takerSide === 'sell') ||\n (userPk === fe.maker.toString() && fe.takerSide === 'buy')) {\n quantity = quantity.mul(NEG_ONE);\n }\n if (currBase.gt(ZERO) && quantity.gt(ZERO)) {\n // Means we are opening long\n baseChange = quantity.lt(currBase) ? quantity : currBase; // get min value\n }\n else if (currBase.lt(ZERO) && quantity.lt(ZERO)) {\n // means we are opening short\n baseChange = currBase.gt(quantity) ? currBase : quantity; // get max value\n }\n else {\n // ignore closing trades\n continue;\n }\n }\n openingQuote = openingQuote.sub(baseChange.mul(price));\n currBase = currBase.sub(baseChange);\n if (currBase.lte(new big_js_1.default(1e-9)) &&\n currBase.gte(new big_js_1.default(-1e-9))) {\n return openingQuote.div(basePos).abs();\n }\n }\n // If we haven't returned yet, there was an error or missing data\n // TODO - consider failing silently\n throw new Error('Trade history incomplete');\n }\n /**\n * Get price at which you break even. Includes fees.\n */\n getBreakEvenPrice(mangoAccount, // circular import?\n perpMarket, events) {\n if (this.basePosition.isZero()) {\n return ZERO;\n }\n const basePos = perpMarket.baseLotsToNumber(this.basePosition);\n const userPk = mangoAccount.publicKey.toString();\n let currBase = new big_js_1.default(basePos);\n let totalQuoteChange = ZERO;\n for (const event of events) {\n let price, baseChange;\n if ('liqor' in event) {\n // TODO - build cleaner way to distinguish events\n const le = event;\n price = new big_js_1.default(le.price);\n let quantity = new big_js_1.default(le.quantity);\n if (userPk === le.liqee.toString()) {\n quantity = quantity.mul(NEG_ONE);\n }\n if (currBase.gt(ZERO) && quantity.gt(ZERO)) {\n // liquidation that opens\n baseChange = quantity.lt(currBase) ? quantity : currBase; // get min value\n }\n else if (currBase.lt(ZERO) && quantity.lt(ZERO)) {\n // liquidation that opens\n baseChange = currBase.gt(quantity) ? currBase : quantity; // get max value\n }\n else {\n // liquidation that closes\n baseChange = quantity;\n }\n }\n else {\n const fe = event;\n // TODO - verify this gives proper UI number\n price = new big_js_1.default(fe.price);\n let quantity = new big_js_1.default(fe.quantity);\n if ((userPk === fe.taker.toString() && fe.takerSide === 'sell') ||\n (userPk === fe.maker.toString() && fe.takerSide === 'buy')) {\n quantity = quantity.mul(NEG_ONE);\n }\n if (currBase.gt(ZERO) && quantity.gt(ZERO)) {\n // Means we are opening long\n baseChange = currBase.lt(quantity) ? currBase : quantity; // get min value\n }\n else if (currBase.lt(ZERO) && quantity.lt(ZERO)) {\n // means we are opening short\n baseChange = currBase.gt(quantity) ? currBase : quantity; // get max value\n }\n else {\n baseChange = quantity;\n }\n }\n totalQuoteChange = totalQuoteChange.sub(baseChange.mul(price));\n currBase = currBase.sub(baseChange);\n if (currBase.lte(new big_js_1.default(1e-9)) &&\n currBase.gte(new big_js_1.default(-1e-9))) {\n return totalQuoteChange.mul(NEG_ONE).div(basePos);\n }\n }\n // If we haven't returned yet, there was an error or missing data\n // TODO - consider failing silently\n throw new Error('Trade history incomplete');\n }\n getPnl(perpMarketInfo, perpMarketCache, price) {\n return fixednum_1.I80F48.fromI64(this.basePosition.mul(perpMarketInfo.baseLotSize))\n .mul(price)\n .add(this.getQuotePosition(perpMarketCache));\n }\n getUnsettledFunding(perpMarketCache) {\n if (this.basePosition.isNeg()) {\n return fixednum_1.I80F48.fromI64(this.basePosition).mul(perpMarketCache.shortFunding.sub(this.shortSettledFunding));\n }\n else {\n return fixednum_1.I80F48.fromI64(this.basePosition).mul(perpMarketCache.longFunding.sub(this.longSettledFunding));\n }\n }\n /**\n * Return the quote position after adjusting for unsettled funding\n */\n getQuotePosition(perpMarketCache) {\n return this.quotePosition.sub(this.getUnsettledFunding(perpMarketCache));\n }\n simPositionHealth(perpMarketInfo, price, assetWeight, liabWeight, baseChange) {\n const newBase = this.basePosition.add(baseChange);\n let health = this.quotePosition.sub(fixednum_1.I80F48.fromI64(baseChange.mul(perpMarketInfo.baseLotSize)).mul(price));\n if (newBase.gt(utils_1.ZERO_BN)) {\n health = health.add(fixednum_1.I80F48.fromI64(newBase.mul(perpMarketInfo.baseLotSize))\n .mul(price)\n .mul(assetWeight));\n }\n else {\n health = health.add(fixednum_1.I80F48.fromI64(newBase.mul(perpMarketInfo.baseLotSize))\n .mul(price)\n .mul(liabWeight));\n }\n return health;\n }\n getHealth(perpMarketInfo, price, assetWeight, liabWeight, longFunding, shortFunding) {\n const bidsHealth = this.simPositionHealth(perpMarketInfo, price, assetWeight, liabWeight, this.bidsQuantity);\n const asksHealth = this.simPositionHealth(perpMarketInfo, price, assetWeight, liabWeight, this.asksQuantity.neg());\n const health = bidsHealth.lt(asksHealth) ? bidsHealth : asksHealth;\n let x;\n if (this.basePosition.gt(utils_1.ZERO_BN)) {\n x = health.sub(longFunding\n .sub(this.longSettledFunding)\n .mul(fixednum_1.I80F48.fromI64(this.basePosition)));\n }\n else {\n x = health.add(shortFunding\n .sub(this.shortSettledFunding)\n .mul(fixednum_1.I80F48.fromI64(this.basePosition)));\n }\n return x;\n }\n getLiabsVal(perpMarketInfo, price, shortFunding, longFunding) {\n let liabsVal = fixednum_1.ZERO_I80F48;\n if (this.basePosition.lt(utils_1.ZERO_BN)) {\n liabsVal = liabsVal.add(fixednum_1.I80F48.fromI64(this.basePosition.mul(perpMarketInfo.baseLotSize)).mul(price));\n }\n let realQuotePosition = this.quotePosition;\n if (this.basePosition.gt(utils_1.ZERO_BN)) {\n realQuotePosition = this.quotePosition.sub(longFunding\n .sub(this.longSettledFunding)\n .mul(fixednum_1.I80F48.fromI64(this.basePosition)));\n }\n else if (this.basePosition.lt(utils_1.ZERO_BN)) {\n realQuotePosition = this.quotePosition.sub(shortFunding\n .sub(this.shortSettledFunding)\n .mul(fixednum_1.I80F48.fromI64(this.basePosition)));\n }\n if (realQuotePosition.lt(fixednum_1.ZERO_I80F48)) {\n liabsVal = liabsVal.add(realQuotePosition);\n }\n return liabsVal.neg();\n }\n getAssetVal(perpMarketInfo, price, shortFunding, longFunding) {\n let assetsVal = fixednum_1.ZERO_I80F48;\n if (this.basePosition.gt(utils_1.ZERO_BN)) {\n assetsVal = assetsVal.add(fixednum_1.I80F48.fromI64(this.basePosition.mul(perpMarketInfo.baseLotSize)).mul(price));\n }\n let realQuotePosition = this.quotePosition;\n if (this.basePosition.gt(utils_1.ZERO_BN)) {\n realQuotePosition = this.quotePosition.sub(longFunding\n .sub(this.longSettledFunding)\n .mul(fixednum_1.I80F48.fromI64(this.basePosition)));\n }\n else if (this.basePosition.lt(utils_1.ZERO_BN)) {\n realQuotePosition = this.quotePosition.sub(shortFunding\n .sub(this.shortSettledFunding)\n .mul(fixednum_1.I80F48.fromI64(this.basePosition)));\n }\n if (realQuotePosition.gt(fixednum_1.ZERO_I80F48)) {\n assetsVal = assetsVal.add(realQuotePosition);\n }\n return assetsVal;\n }\n getBasePositionUi(perpMarket) {\n return perpMarket.baseLotsToNumber(this.basePosition);\n }\n}\nexports.default = PerpAccount;\n//# sourceMappingURL=PerpAccount.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils_1 = require(\"./utils/utils\");\nclass PerpEventQueue {\n constructor(decoded) {\n Object.assign(this, decoded);\n }\n getUnconsumedEvents() {\n const events = [];\n const head = this.head.toNumber();\n for (let i = 0; i < this.count.toNumber(); i++) {\n events.push(this.events[(head + i) % this.events.length]);\n }\n return events;\n }\n /**\n * Returns events since the lastSeqNum you've seen. If you haven't seen any yet,\n * send in undefined for lastSeqNum\n */\n eventsSince(lastSeqNum) {\n const flatEvents = [];\n for (const e of this.events) {\n let event;\n if (e.fill) {\n event = e.fill;\n event['eventType'] = 'fill';\n }\n else if (e.out) {\n event = e.out;\n event['eventType'] = 'out';\n }\n else if (e.liquidate) {\n event = e.liquidate;\n event['eventType'] = 'liquidate';\n }\n else {\n continue;\n }\n flatEvents.push(event);\n }\n let filtered;\n if (lastSeqNum === undefined) {\n filtered = flatEvents\n .filter((e) => e.timestamp.gt(utils_1.ZERO_BN))\n .sort((a, b) => a.seqNum.cmp(b.seqNum));\n }\n else {\n filtered = flatEvents\n .filter((e) => e.seqNum.gt(lastSeqNum))\n .sort((a, b) => a.seqNum.cmp(b.seqNum));\n }\n // @ts-ignore\n return filtered.map((e) => {\n if (e['eventType'] === 'fill') {\n return { fill: e };\n }\n else if (e['eventType'] === 'out') {\n return { out: e };\n }\n else if (e['eventType'] === 'liquidate') {\n return { liquidate: e };\n }\n // undefined if it's not one of those event types which it shouldn't be anyway\n });\n // const modulo64Uint = new BN('10000000000000000', 'hex');\n // let missedEvents = this.seqNum\n // .add(modulo64Uint)\n // .sub(lastSeqNum)\n // .mod(modulo64Uint);\n //\n // /*\n // console.log({\n // last: lastSeqNum.toString(),\n // now: this.seqNum.toString(),\n // missed: missedEvents.toString(),\n // mod: modulo64Uint.toString(),\n // });\n // */\n //\n // const bufferLength = new BN(this.events.length);\n // if (missedEvents.gte(bufferLength)) {\n // missedEvents = bufferLength.sub(new BN(1));\n // }\n //\n // const endIndex = this.head.add(this.count).mod(bufferLength);\n // const startIndex = endIndex\n // .add(bufferLength)\n // .sub(missedEvents)\n // .mod(bufferLength);\n //\n // /*\n // console.log({\n // bufLength: bufferLength.toString(),\n // missed: missedEvents.toString(),\n // head: this.head.toString(),\n // count: this.count.toString(),\n // end: endIndex.toString(),\n // start: startIndex.toString(),\n // });\n // */\n //\n // const results: {\n // fill?: FillEvent;\n // out?: OutEvent;\n // liquidate?: LiquidateEvent;\n // }[] = [];\n // let index = startIndex;\n // while (!index.eq(endIndex)) {\n // const event = this.events[index.toNumber()];\n // if (event.fill || event.out || event.liquidate) results.push(event);\n // index = index.add(new BN(1)).mod(bufferLength);\n // }\n //\n // return results;\n }\n}\nexports.default = PerpEventQueue;\n//# sourceMappingURL=PerpEventQueue.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst big_js_1 = __importDefault(require(\"big.js\"));\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst utils_1 = require(\"./utils/utils\");\nconst PerpEventQueue_1 = __importDefault(require(\"./PerpEventQueue\"));\nconst layout_1 = require(\"./layout\");\nconst book_1 = require(\"./book\");\nconst fixednum_1 = require(\"./utils/fixednum\");\nconst utils_2 = require(\"./utils/utils\");\nconst os_1 = require(\"os\");\nclass PerpMarket {\n constructor(publicKey, baseDecimals, quoteDecimals, decoded) {\n this.publicKey = publicKey;\n this.baseDecimals = baseDecimals;\n this.quoteDecimals = quoteDecimals;\n Object.assign(this, decoded);\n this.priceLotsToUiConvertor = new big_js_1.default(10)\n .pow(baseDecimals - quoteDecimals)\n .mul(new big_js_1.default(this.quoteLotSize.toString()))\n .div(new big_js_1.default(this.baseLotSize.toString()))\n .toNumber();\n this.baseLotsToUiConvertor = new big_js_1.default(this.baseLotSize.toString())\n .div(new big_js_1.default(10).pow(baseDecimals))\n .toNumber();\n }\n priceLotsToNative(price) {\n return fixednum_1.I80F48.fromI64(this.quoteLotSize.mul(price)).div(fixednum_1.I80F48.fromI64(this.baseLotSize));\n }\n baseLotsToNative(quantity) {\n return fixednum_1.I80F48.fromI64(this.baseLotSize.mul(quantity));\n }\n priceLotsToNumber(price) {\n return parseFloat(price.toString()) * this.priceLotsToUiConvertor;\n }\n baseLotsToNumber(quantity) {\n return parseFloat(quantity.toString()) * this.baseLotsToUiConvertor;\n }\n get minOrderSize() {\n if (this._minOrderSize === undefined) {\n this._minOrderSize = this.baseLotsToNumber(utils_1.ONE_BN);\n }\n return this._minOrderSize;\n }\n get tickSize() {\n if (this._tickSize === undefined) {\n this._tickSize = this.priceLotsToNumber(utils_1.ONE_BN);\n }\n return this._tickSize;\n }\n /**\n * Calculate the instantaneous funding rate using the bids and asks\n * Reported as an hourly number\n * Make sure `cache`, `bids` and `asks` are up to date\n */\n getCurrentFundingRate(group, cache, marketIndex, bids, asks) {\n const IMPACT_QUANTITY = new bn_js_1.default(100);\n const MIN_FUNDING = -0.05;\n const MAX_FUNDING = 0.05;\n const bid = bids.getImpactPriceUi(IMPACT_QUANTITY);\n const ask = asks.getImpactPriceUi(IMPACT_QUANTITY);\n const indexPrice = group.getPriceUi(marketIndex, cache);\n let diff;\n if (bid !== undefined && ask !== undefined) {\n const bookPrice = (bid + ask) / 2;\n diff = (0, utils_1.clamp)(bookPrice / indexPrice - 1, MIN_FUNDING, MAX_FUNDING);\n }\n else if (bid !== undefined) {\n diff = MAX_FUNDING;\n }\n else if (ask !== undefined) {\n diff = MIN_FUNDING;\n }\n else {\n diff = 0;\n }\n return diff / 24;\n }\n loadEventQueue(connection) {\n return __awaiter(this, void 0, void 0, function* () {\n const acc = yield connection.getAccountInfo(this.eventQueue);\n const parsed = layout_1.PerpEventQueueLayout.decode(acc === null || acc === void 0 ? void 0 : acc.data);\n return new PerpEventQueue_1.default(parsed);\n });\n }\n loadFills(connection) {\n return __awaiter(this, void 0, void 0, function* () {\n const q = yield this.loadEventQueue(connection);\n // TODO - verify this works\n return q\n .eventsSince(utils_2.ZERO_BN)\n .map((e) => e.fill)\n .filter((e) => !!e)\n .map(this.parseFillEvent.bind(this));\n });\n }\n parseFillEvent(event) {\n const quantity = this.baseLotsToNumber(event.quantity);\n const price = this.priceLotsToNumber(event.price);\n return Object.assign(Object.assign({}, event), { quantity,\n price });\n }\n loadBids(connection, includeExpired = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const acc = yield connection.getAccountInfo(this.bids);\n return new book_1.BookSide(this.bids, this, layout_1.BookSideLayout.decode(acc === null || acc === void 0 ? void 0 : acc.data), includeExpired);\n });\n }\n loadAsks(connection, includeExpired = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const acc = yield connection.getAccountInfo(this.asks);\n return new book_1.BookSide(this.asks, this, layout_1.BookSideLayout.decode(acc === null || acc === void 0 ? void 0 : acc.data), includeExpired);\n });\n }\n loadOrdersForAccount(connection, account, includeExpired = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const [bids, asks] = yield Promise.all([\n this.loadBids(connection, includeExpired),\n this.loadAsks(connection, includeExpired),\n ]);\n // @ts-ignore\n return [...bids, ...asks].filter((order) => order.owner.equals(account.publicKey));\n });\n }\n uiToNativePriceQuantity(price, quantity) {\n const baseUnit = Math.pow(10, this.baseDecimals);\n const quoteUnit = Math.pow(10, this.quoteDecimals);\n const nativePrice = new bn_js_1.default(price * quoteUnit)\n .mul(this.baseLotSize)\n .div(this.quoteLotSize.mul(new bn_js_1.default(baseUnit)));\n const nativeQuantity = new bn_js_1.default(quantity * baseUnit).div(this.baseLotSize);\n return [nativePrice, nativeQuantity];\n }\n uiQuoteToLots(uiQuote) {\n const quoteUnit = Math.pow(10, this.quoteDecimals);\n return new bn_js_1.default(uiQuote * quoteUnit).div(this.quoteLotSize);\n }\n toPrettyString(group, perpMarketConfig) {\n const info = group.perpMarkets[perpMarketConfig.marketIndex];\n const oracle = group.oracles[perpMarketConfig.marketIndex];\n const lmi = this.liquidityMiningInfo;\n const now = Date.now() / 1000;\n const start = lmi.periodStart.toNumber();\n const elapsed = now - start;\n const progress = 1 - lmi.mngoLeft.toNumber() / lmi.mngoPerPeriod.toNumber();\n const est = start + elapsed / progress;\n const lines = [\n `${perpMarketConfig.name}`,\n `version: ${this.metaData.version}`,\n `publicKey: ${perpMarketConfig.publicKey.toBase58()}`,\n `oracle: ${oracle.toBase58()}`,\n `initAssetWeight: ${group.perpMarkets[perpMarketConfig.marketIndex].initAssetWeight.toString()}`,\n `maintAssetWeight: ${group.perpMarkets[perpMarketConfig.marketIndex].maintAssetWeight.toString()}`,\n `marketIndex: ${perpMarketConfig.marketIndex}`,\n `bidsKey: ${this.bids.toBase58()}`,\n `asksKey: ${this.asks.toBase58()}`,\n `eventQueue: ${this.eventQueue.toBase58()}`,\n `quoteLotSize: ${this.quoteLotSize.toString()}`,\n `baseLotSize: ${this.baseLotSize.toString()}`,\n `longFunding: ${this.longFunding.toString()}`,\n `shortFunding: ${this.shortFunding.toString()}`,\n `openInterest: ${this.openInterest.toString()}`,\n `lastUpdated: ${new Date(this.lastUpdated.toNumber() * 1000).toUTCString()}`,\n `seqNum: ${this.seqNum.toString()}`,\n `liquidationFee: ${info.liquidationFee.toString()}`,\n `takerFee: ${info.takerFee.toString()}`,\n `makerFee: ${info.makerFee.toString()}`,\n `feesAccrued: ${(0, utils_1.nativeToUi)(this.feesAccrued.toNumber(), 6).toFixed(6)}`,\n `\\n----- ${perpMarketConfig.name} Liquidity Mining Info -----`,\n `rate: ${lmi.rate.toString()}`,\n `maxDepth: ${this.metaData.version === 0\n ? lmi.maxDepthBps.toString() + ' bps'\n : lmi.maxDepthBps.toString() + ' contracts'}`,\n `exp: ${this.metaData.extraInfo[0] || 2}`,\n `lmSizeShift: ${this.metaData.extraInfo[1]}`,\n `periodStart: ${new Date(lmi.periodStart.toNumber() * 1000).toUTCString()}`,\n `targetPeriodLength: ${lmi.targetPeriodLength.toString()}`,\n `mngoLeftInPeriod: ${(lmi.mngoLeft.toNumber() / Math.pow(10, 6)).toFixed(2)}`,\n `mngoPerPeriod: ${(lmi.mngoPerPeriod.toNumber() / Math.pow(10, 6)).toFixed(2)}`,\n `periodProgress: ${progress * 100}%`,\n `estPeriodEnd: ${new Date(est * 1000).toUTCString()}`,\n `mngoVault: ${this.mngoVault.toString()}`,\n ];\n return lines.join(os_1.EOL);\n }\n}\nexports.default = PerpMarket;\n//# sourceMappingURL=PerpMarket.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst fixednum_1 = require(\"./utils/fixednum\");\nconst layout_1 = require(\"./layout\");\nconst utils_1 = require(\"./utils/utils\");\nclass RootBank {\n //mintKey: PublicKey;\n constructor(publicKey, decoded) {\n this.publicKey = publicKey;\n Object.assign(this, decoded);\n this.nodeBankAccounts = [];\n //this.mintKey = tokenMint;\n }\n loadNodeBanks(connection) {\n return __awaiter(this, void 0, void 0, function* () {\n const filteredNodeBanks = this.nodeBanks.filter((nb) => !nb.equals(utils_1.zeroKey));\n const accounts = yield (0, utils_1.getMultipleAccounts)(connection, filteredNodeBanks);\n const nodeBankAccounts = accounts.map((acc) => {\n const decoded = layout_1.NodeBankLayout.decode(acc.accountInfo.data);\n return new layout_1.NodeBank(acc.publicKey, decoded);\n });\n this.nodeBankAccounts = nodeBankAccounts;\n return nodeBankAccounts;\n });\n }\n getNativeTotalDeposit() {\n if (!this.nodeBankAccounts.length)\n throw new Error('Node bank accounts empty');\n let totalDeposits = fixednum_1.ZERO_I80F48;\n for (let i = 0; i < this.nodeBankAccounts.length; i++) {\n totalDeposits = totalDeposits.add(this.nodeBankAccounts[i].deposits);\n }\n return this.depositIndex.mul(totalDeposits);\n }\n getNativeTotalBorrow() {\n if (!this.nodeBankAccounts.length)\n throw new Error('Node bank accounts empty');\n let totalBorrow = fixednum_1.ZERO_I80F48;\n for (let i = 0; i < this.nodeBankAccounts.length; i++) {\n totalBorrow = totalBorrow.add(this.nodeBankAccounts[i].borrows);\n }\n return this.borrowIndex.mul(totalBorrow);\n }\n getUiTotalDeposit(mangoGroup) {\n const tokenIndex = mangoGroup.getRootBankIndex(this.publicKey);\n return (0, utils_1.nativeI80F48ToUi)(this.getNativeTotalDeposit(), mangoGroup.tokens[tokenIndex].decimals);\n }\n getUiTotalBorrow(mangoGroup) {\n const tokenIndex = mangoGroup.getRootBankIndex(this.publicKey);\n return (0, utils_1.nativeI80F48ToUi)(this.getNativeTotalBorrow(), mangoGroup.tokens[tokenIndex].decimals);\n }\n getBorrowRate(mangoGroup) {\n const totalBorrows = this.getUiTotalBorrow(mangoGroup);\n const totalDeposits = this.getUiTotalDeposit(mangoGroup);\n if (totalDeposits.eq(fixednum_1.ZERO_I80F48) && totalBorrows.eq(fixednum_1.ZERO_I80F48)) {\n return fixednum_1.ZERO_I80F48;\n }\n if (totalDeposits.lte(totalBorrows)) {\n return this.maxRate;\n }\n const utilization = totalBorrows.div(totalDeposits);\n if (utilization.gt(this.optimalUtil)) {\n const extraUtil = utilization.sub(this.optimalUtil);\n const slope = this.maxRate\n .sub(this.optimalRate)\n .div(fixednum_1.I80F48.fromNumber(1).sub(this.optimalUtil));\n return this.optimalRate.add(slope.mul(extraUtil));\n }\n else {\n const slope = this.optimalRate.div(this.optimalUtil);\n return slope.mul(utilization);\n }\n }\n getDepositRate(mangoGroup) {\n const borrowRate = this.getBorrowRate(mangoGroup);\n const totalBorrows = this.getUiTotalBorrow(mangoGroup);\n const totalDeposits = this.getUiTotalDeposit(mangoGroup);\n if (totalDeposits.eq(fixednum_1.ZERO_I80F48) && totalBorrows.eq(fixednum_1.ZERO_I80F48)) {\n return fixednum_1.ZERO_I80F48;\n }\n else if (totalDeposits.eq(fixednum_1.ZERO_I80F48)) {\n return this.maxRate;\n }\n const utilization = totalBorrows.div(totalDeposits);\n return utilization.mul(borrowRate);\n }\n}\nexports.default = RootBank;\n//# sourceMappingURL=RootBank.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPriceFromKey = exports.BookSide = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst layout_1 = require(\"./layout\");\nconst utils_1 = require(\"./utils/utils\");\nconst client_1 = require(\"./client\");\n// TODO - maybe store ref inside PerpMarket class\nclass BookSide {\n constructor(publicKey, perpMarket, decoded, includeExpired = false, maxBookDelay) {\n this.publicKey = publicKey;\n this.isBids = decoded.metaData.dataType === layout_1.DataType.Bids;\n this.perpMarket = perpMarket;\n this.includeExpired = includeExpired;\n Object.assign(this, decoded);\n // Determine the maxTimestamp found on the book to use for tif\n // If maxBookDelay is not provided, use 3600 as a very large number\n maxBookDelay = maxBookDelay === undefined ? 3600 : maxBookDelay;\n let maxTimestamp = new bn_js_1.default((0, client_1.getUnixTs)() - maxBookDelay);\n for (const { leafNode } of this.nodes) {\n if (leafNode && leafNode.timestamp.gt(maxTimestamp)) {\n maxTimestamp = leafNode.timestamp;\n }\n }\n this.now = maxTimestamp;\n }\n *items() {\n if (this.leafCount === 0) {\n return;\n }\n const now = this.now;\n const stack = [this.rootNode];\n const [left, right] = this.isBids ? [1, 0] : [0, 1];\n const side = (this.isBids ? 'buy' : 'sell');\n while (stack.length > 0) {\n const index = stack.pop();\n // @ts-ignore\n const { leafNode, innerNode } = this.nodes[index]; // we know index is not undefined\n if (leafNode) {\n const price = getPriceFromKey(leafNode.key);\n const expiryTimestamp = leafNode.timeInForce\n ? leafNode.timestamp.add(new bn_js_1.default(leafNode.timeInForce))\n : utils_1.U64_MAX_BN;\n if (now.lt(expiryTimestamp) || this.includeExpired) {\n yield {\n orderId: leafNode.key,\n clientId: leafNode.clientOrderId,\n owner: leafNode.owner,\n openOrdersSlot: leafNode.ownerSlot,\n feeTier: 0,\n price: this.perpMarket.priceLotsToNumber(price),\n priceLots: price,\n size: this.perpMarket.baseLotsToNumber(leafNode.quantity),\n sizeLots: leafNode.quantity,\n side,\n bestInitial: leafNode.bestInitial,\n timestamp: leafNode.timestamp,\n expiryTimestamp,\n };\n }\n }\n else if (innerNode) {\n stack.push(innerNode.children[right], innerNode.children[left]);\n }\n }\n }\n /**\n * Return the ui price reached at `quantity` lots up the book;\n * return undefined if `quantity` not on book\n */\n getImpactPriceUi(quantity) {\n const s = utils_1.ZERO_BN.clone();\n for (const order of this) {\n s.iadd(order.sizeLots);\n if (s.gte(quantity)) {\n return order.price;\n }\n }\n return undefined;\n }\n getBest() {\n if (this.leafCount === 0) {\n return;\n }\n const [left, right] = this.isBids ? [1, 0] : [0, 1];\n const side = (this.isBids ? 'buy' : 'sell');\n const stack = [this.rootNode];\n const now = this.now;\n while (stack.length > 0) {\n let index = stack.pop();\n // @ts-ignore\n const { leafNode, innerNode } = this.nodes[index]; // we know index is not undefined\n if (leafNode) {\n const price = getPriceFromKey(leafNode.key);\n const expiryTimestamp = leafNode.timeInForce\n ? leafNode.timestamp.add(new bn_js_1.default(leafNode.timeInForce))\n : utils_1.U64_MAX_BN;\n if (now.lt(expiryTimestamp) || this.includeExpired) {\n return {\n orderId: leafNode.key,\n clientId: leafNode.clientOrderId,\n owner: leafNode.owner,\n openOrdersSlot: leafNode.ownerSlot,\n feeTier: 0,\n price: this.perpMarket.priceLotsToNumber(price),\n priceLots: price,\n size: this.perpMarket.baseLotsToNumber(leafNode.quantity),\n sizeLots: leafNode.quantity,\n side,\n bestInitial: leafNode.bestInitial,\n timestamp: leafNode.timestamp,\n expiryTimestamp,\n };\n }\n }\n else if (innerNode) {\n stack.push(innerNode.children[right], innerNode.children[left]);\n }\n }\n }\n [Symbol.iterator]() {\n return this.items();\n }\n getL2Ui(depth) {\n const levels = []; // (price, size)\n //@ts-ignore\n for (const { price, size } of this.items()) {\n if (levels.length > 0 && levels[levels.length - 1][0] === price) {\n levels[levels.length - 1][1] += size;\n }\n else if (levels.length === depth) {\n break;\n }\n else {\n levels.push([price, size]);\n }\n }\n return levels;\n }\n getL2(depth) {\n const levels = []; // (price, size)\n //@ts-ignore\n for (const { priceLots, sizeLots } of this.items()) {\n if (levels.length > 0 && levels[levels.length - 1][0].eq(priceLots)) {\n levels[levels.length - 1][1].iadd(sizeLots);\n }\n else if (levels.length === depth) {\n break;\n }\n else {\n levels.push([priceLots, sizeLots]);\n }\n }\n return levels.map(([priceLots, sizeLots]) => [\n this.perpMarket.priceLotsToNumber(priceLots),\n this.perpMarket.baseLotsToNumber(sizeLots),\n priceLots,\n sizeLots,\n ]);\n }\n}\nexports.BookSide = BookSide;\nfunction getPriceFromKey(key) {\n return key.ushrn(64); // TODO - maybe use shrn instead\n}\nexports.getPriceFromKey = getPriceFromKey;\n//# sourceMappingURL=book.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MangoClient = exports.getUnixTs = void 0;\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst cross_fetch_1 = __importDefault(require(\"cross-fetch\"));\nconst utils_1 = require(\"./utils/utils\");\nconst layout_1 = require(\"./layout\");\nconst MangoAccount_1 = __importDefault(require(\"./MangoAccount\"));\nconst PerpMarket_1 = __importDefault(require(\"./PerpMarket\"));\nconst instruction_1 = require(\"./instruction\");\nconst serum_1 = require(\"@project-serum/serum\");\nconst fixednum_1 = require(\"./utils/fixednum\");\nconst adapterTypes_1 = require(\"./utils/adapterTypes\");\nconst book_1 = require(\"./book\");\nconst token_instructions_1 = require(\"@project-serum/serum/lib/token-instructions\");\nconst spl_token_1 = require(\"@solana/spl-token\");\nconst MangoGroup_1 = __importDefault(require(\"./MangoGroup\"));\nconst instruction_2 = require(\"./instruction\");\nconst layout_2 = require(\"./layout\");\nconst bs58 = __importStar(require(\"bs58\"));\n/**\n * Get the current epoch timestamp in seconds with microsecond precision\n */\nconst getUnixTs = () => {\n return new Date().getTime() / 1000;\n};\nexports.getUnixTs = getUnixTs;\n/**\n * A class for interacting with the Mango V3 Program\n *\n * @param connection A solana web.js Connection object\n * @param programId The PublicKey of the Mango V3 Program\n * @param opts An object used to configure the MangoClient. Accepts a postSendTxCallback, and prioritizationFee. The prioritizationFee is a number measured in micro lamports that is charged per compute unit.\n */\nclass MangoClient {\n constructor(connection, programId, opts = {}) {\n this.connection = connection;\n this.programId = programId;\n this.lastSlot = 0;\n this.lastValidBlockHeight = 0;\n this.blockhashCommitment = (opts === null || opts === void 0 ? void 0 : opts.blockhashCommitment) || 'confirmed';\n this.timeout = (opts === null || opts === void 0 ? void 0 : opts.timeout) || 60000;\n this.sendConnection = opts === null || opts === void 0 ? void 0 : opts.sendConnection;\n this.prioritizationFee = (opts === null || opts === void 0 ? void 0 : opts.prioritizationFee) || 0;\n if (opts.postSendTxCallback) {\n this.postSendTxCallback = opts.postSendTxCallback;\n }\n }\n sendTransactions(transactions, payer, additionalSigners, timeout = this.timeout, confirmLevel = 'processed') {\n return __awaiter(this, void 0, void 0, function* () {\n return yield Promise.all(transactions.map((tx) => this.sendTransaction(tx, payer, additionalSigners, timeout, confirmLevel)));\n });\n }\n getCurrentBlockhash() {\n return __awaiter(this, void 0, void 0, function* () {\n let currentBlockhash = yield this.connection.getLatestBlockhash(this.blockhashCommitment);\n return currentBlockhash;\n });\n }\n signTransaction({ transaction, payer, signers, currentBlockhash, }) {\n return __awaiter(this, void 0, void 0, function* () {\n let blockhashWithExpiryBlockHeight = currentBlockhash ? currentBlockhash : yield this.getCurrentBlockhash();\n transaction.recentBlockhash = blockhashWithExpiryBlockHeight.blockhash;\n transaction.setSigners(payer.publicKey, ...signers.map((s) => s.publicKey));\n if (signers.length > 0) {\n transaction.partialSign(...signers);\n }\n if (payer === null || payer === void 0 ? void 0 : payer.connected) {\n console.log('signing as wallet', payer.publicKey);\n return yield payer.signTransaction(transaction);\n }\n else {\n transaction.sign(...[payer].concat(signers));\n }\n });\n }\n signTransactions({ transactionsAndSigners, payer, currentBlockhash, }) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!payer.publicKey) {\n return;\n }\n let blockhashWithExpiryBlockHeight = currentBlockhash ? currentBlockhash : yield this.getCurrentBlockhash();\n transactionsAndSigners.forEach(({ transaction, signers = [] }) => {\n transaction.recentBlockhash = blockhashWithExpiryBlockHeight.blockhash;\n if (this.prioritizationFee) {\n transaction = (0, utils_1.prependFeePrioritizationIx)(transaction, this.prioritizationFee);\n }\n if (payer.publicKey) {\n transaction.setSigners(payer.publicKey, ...signers.map((s) => s.publicKey));\n }\n if ((signers === null || signers === void 0 ? void 0 : signers.length) > 0) {\n transaction.partialSign(...signers);\n }\n });\n if ((0, adapterTypes_1.adapterHasSignAllTransactions)(payer)) {\n return yield payer.signAllTransactions(transactionsAndSigners.map(({ transaction }) => transaction));\n }\n else {\n transactionsAndSigners.forEach(({ transaction, signers }) => {\n // @ts-ignore\n transaction.sign(...[payer].concat(signers));\n });\n return transactionsAndSigners.map((t) => t.transaction);\n }\n });\n }\n /**\n * Send a transaction using the Solana Web3.js connection on the mango client\n *\n * @param transaction\n * @param payer\n * @param additionalSigners\n * @param timeout Retries sending the transaction and trying to confirm it until the given timeout. Passing null will disable the transaction confirmation check and always return success.\n */\n sendTransaction(transaction, payer, additionalSigners, timeout = this.timeout, confirmLevel = 'processed') {\n return __awaiter(this, void 0, void 0, function* () {\n const currentBlockhash = yield this.getCurrentBlockhash();\n transaction = (0, utils_1.prependFeePrioritizationIx)(transaction, this.prioritizationFee);\n yield this.signTransaction({\n transaction,\n payer,\n signers: additionalSigners,\n currentBlockhash,\n });\n const rawTransaction = transaction.serialize();\n let txid = bs58.encode(transaction.signatures[0].signature);\n const startTime = (0, exports.getUnixTs)();\n if (this.sendConnection) {\n const promise = this.sendConnection.sendRawTransaction(rawTransaction);\n if (this.postSendTxCallback) {\n try {\n this.postSendTxCallback({ txid });\n }\n catch (e) {\n console.warn(`postSendTxCallback error ${e}`);\n }\n }\n try {\n return yield promise;\n }\n catch (e) {\n console.error(e);\n throw new utils_1.MangoError({ message: 'Transaction failed', txid });\n }\n }\n else {\n txid = yield this.connection.sendRawTransaction(rawTransaction, {\n skipPreflight: true,\n });\n if (this.postSendTxCallback) {\n try {\n this.postSendTxCallback({ txid });\n }\n catch (e) {\n console.warn(`postSendTxCallback error ${e}`);\n }\n }\n if (!timeout)\n return txid;\n console.log('Started awaiting confirmation for', txid, 'size:', rawTransaction.length);\n let done = false;\n let retryAttempts = 0;\n const retrySleep = 2000;\n const maxRetries = 30;\n (() => __awaiter(this, void 0, void 0, function* () {\n while (!done && (0, exports.getUnixTs)() - startTime < timeout / 1000) {\n yield (0, utils_1.sleep)(retrySleep);\n // console.log(new Date().toUTCString(), ' sending tx ', txid);\n this.connection.sendRawTransaction(rawTransaction, {\n skipPreflight: true,\n });\n if (retryAttempts <= maxRetries) {\n retryAttempts = retryAttempts++;\n }\n else {\n break;\n }\n }\n }))();\n try {\n yield this.awaitTransactionSignatureConfirmation(txid, timeout, confirmLevel, currentBlockhash);\n }\n catch (err) {\n if (err.timeout) {\n throw new utils_1.TimeoutError({ txid });\n }\n let simulateResult = null;\n try {\n simulateResult = (yield (0, utils_1.simulateTransaction)(this.connection, transaction, 'processed')).value;\n }\n catch (e) {\n console.warn('Simulate transaction failed');\n }\n if (simulateResult && simulateResult.err) {\n if (simulateResult.logs) {\n for (let i = simulateResult.logs.length - 1; i >= 0; --i) {\n const line = simulateResult.logs[i];\n if (line.startsWith('Program log: ')) {\n throw new utils_1.MangoError({\n message: 'Transaction failed: ' + line.slice('Program log: '.length),\n txid,\n });\n }\n }\n }\n throw new utils_1.MangoError({\n message: JSON.stringify(simulateResult.err),\n txid,\n });\n }\n throw new utils_1.MangoError({ message: 'Transaction failed', txid });\n }\n finally {\n done = true;\n }\n }\n console.log('Latency', (0, exports.getUnixTs)() - startTime, txid);\n return txid;\n });\n }\n sendSignedTransaction({ signedTransaction, timeout = this.timeout, confirmLevel = 'processed', signedAtBlock, }) {\n return __awaiter(this, void 0, void 0, function* () {\n const rawTransaction = signedTransaction.serialize();\n let txid = bs58.encode(signedTransaction.signatures[0].signature);\n const startTime = (0, exports.getUnixTs)();\n if (this.sendConnection) {\n const promise = this.sendConnection.sendRawTransaction(rawTransaction);\n if (this.postSendTxCallback) {\n try {\n this.postSendTxCallback({ txid });\n }\n catch (e) {\n console.warn(`postSendTxCallback error ${e}`);\n }\n }\n try {\n return yield promise;\n }\n catch (e) {\n console.error(e);\n throw new utils_1.MangoError({ message: 'Transaction failed', txid });\n }\n }\n else {\n txid = yield this.connection.sendRawTransaction(rawTransaction, {\n skipPreflight: true,\n });\n if (this.postSendTxCallback) {\n try {\n this.postSendTxCallback({ txid });\n }\n catch (e) {\n console.log(`postSendTxCallback error ${e}`);\n }\n }\n if (!timeout)\n return txid;\n let done = false;\n (() => __awaiter(this, void 0, void 0, function* () {\n while (!done && (0, exports.getUnixTs)() - startTime < timeout) {\n yield (0, utils_1.sleep)(2000);\n this.connection.sendRawTransaction(rawTransaction, {\n skipPreflight: true,\n });\n }\n }))();\n try {\n yield this.awaitTransactionSignatureConfirmation(txid, timeout, confirmLevel, signedAtBlock);\n }\n catch (err) {\n if (err.timeout) {\n throw new utils_1.TimeoutError({ txid });\n }\n let simulateResult = null;\n try {\n simulateResult = (yield (0, utils_1.simulateTransaction)(this.connection, signedTransaction, 'single')).value;\n }\n catch (e) {\n console.log('Simulate tx failed');\n }\n if (simulateResult && simulateResult.err) {\n if (simulateResult.logs) {\n for (let i = simulateResult.logs.length - 1; i >= 0; --i) {\n const line = simulateResult.logs[i];\n if (line.startsWith('Program log: ')) {\n throw new utils_1.MangoError({\n message: 'Transaction failed: ' + line.slice('Program log: '.length),\n txid,\n });\n }\n }\n }\n throw new utils_1.MangoError({\n message: JSON.stringify(simulateResult.err),\n txid,\n });\n }\n throw new utils_1.MangoError({ message: 'Transaction failed', txid });\n }\n finally {\n done = true;\n }\n return txid;\n }\n });\n }\n awaitTransactionSignatureConfirmation(txid, timeout, confirmLevel, signedAtBlock) {\n return __awaiter(this, void 0, void 0, function* () {\n const timeoutBlockHeight = signedAtBlock\n ? signedAtBlock.lastValidBlockHeight +\n utils_1.MAXIMUM_NUMBER_OF_BLOCKS_FOR_TRANSACTION\n : 0;\n let startTimeoutCheck = false;\n let done = false;\n const confirmLevels = ['finalized'];\n if (confirmLevel === 'confirmed') {\n confirmLevels.push('confirmed');\n }\n else if (confirmLevel === 'processed') {\n confirmLevels.push('confirmed');\n confirmLevels.push('processed');\n }\n let subscriptionId;\n const result = yield new Promise((resolve, reject) => {\n (() => __awaiter(this, void 0, void 0, function* () {\n setTimeout(() => {\n if (done) {\n return;\n }\n if (timeoutBlockHeight !== 0) {\n startTimeoutCheck = true;\n }\n else {\n done = true;\n console.log('Timed out for txid: ', txid);\n reject({ timeout: true });\n }\n }, timeout);\n try {\n subscriptionId = this.connection.onSignature(txid, (result, context) => {\n subscriptionId = undefined;\n done = true;\n if (result.err) {\n reject(result.err);\n }\n else {\n this.lastSlot = context === null || context === void 0 ? void 0 : context.slot;\n resolve(result);\n }\n }, 'processed');\n }\n catch (e) {\n done = true;\n console.log('WS error in setup', txid, e);\n }\n let retrySleep = 2000;\n while (!done) {\n // eslint-disable-next-line no-loop-func\n yield (0, utils_1.sleep)(retrySleep);\n (() => __awaiter(this, void 0, void 0, function* () {\n var _a;\n try {\n const promises = [this.connection.getSignatureStatuses([txid])];\n //if startTimeoutThreshold passed we start to check if\n //current blocks are did not passed timeoutBlockHeight threshold\n if (startTimeoutCheck) {\n promises.push(this.connection.getBlockHeight('confirmed'));\n }\n const [signatureStatuses, currentBlockHeight] = yield Promise.all(promises);\n if (typeof currentBlockHeight !== undefined &&\n timeoutBlockHeight <= currentBlockHeight) {\n console.log('Timed out for txid: ', txid);\n done = true;\n reject({ timeout: true });\n }\n const result = signatureStatuses && signatureStatuses.value[0];\n if (!done) {\n if (!result)\n return;\n if (result.err) {\n console.log('REST error for', txid, result);\n done = true;\n reject(result.err);\n }\n else if (!(result.confirmations ||\n confirmLevels.includes(result.confirmationStatus))) {\n console.log('REST not confirmed', txid, result);\n }\n else {\n this.lastSlot = (_a = signatureStatuses === null || signatureStatuses === void 0 ? void 0 : signatureStatuses.context) === null || _a === void 0 ? void 0 : _a.slot;\n console.log('REST confirmed', txid, result);\n done = true;\n resolve(result);\n }\n }\n }\n catch (e) {\n if (!done) {\n console.log('REST connection error: txid', txid, e);\n }\n }\n }))();\n }\n }))();\n });\n if (subscriptionId) {\n this.connection.removeSignatureListener(subscriptionId).catch((e) => {\n console.log('WS error in cleanup', e);\n });\n }\n done = true;\n return result;\n });\n }\n /**\n * Create a new Mango group\n */\n initMangoGroup(quoteMint, msrmMint, dexProgram, feesVault, // owned by Mango DAO token governance\n validInterval, quoteOptimalUtil, quoteOptimalRate, quoteMaxRate, payer) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!payer.publicKey) {\n return;\n }\n const accountInstruction = yield (0, utils_1.createAccountInstruction)(this.connection, payer.publicKey, layout_1.MangoGroupLayout.span, this.programId);\n const { signerKey, signerNonce } = yield (0, utils_1.createSignerKeyAndNonce)(this.programId, accountInstruction.account.publicKey);\n const quoteVaultAccount = new web3_js_1.Keypair();\n const quoteVaultAccountInstructions = yield (0, utils_1.createTokenAccountInstructions)(this.connection, payer.publicKey, quoteVaultAccount.publicKey, quoteMint, signerKey);\n const insuranceVaultAccount = new web3_js_1.Keypair();\n const insuranceVaultAccountInstructions = yield (0, utils_1.createTokenAccountInstructions)(this.connection, payer.publicKey, insuranceVaultAccount.publicKey, quoteMint, signerKey);\n const quoteNodeBankAccountInstruction = yield (0, utils_1.createAccountInstruction)(this.connection, payer.publicKey, layout_1.NodeBankLayout.span, this.programId);\n const quoteRootBankAccountInstruction = yield (0, utils_1.createAccountInstruction)(this.connection, payer.publicKey, layout_1.RootBankLayout.span, this.programId);\n const cacheAccountInstruction = yield (0, utils_1.createAccountInstruction)(this.connection, payer.publicKey, layout_1.MangoCacheLayout.span, this.programId);\n const createAccountsTransaction = new web3_js_1.Transaction();\n createAccountsTransaction.add(accountInstruction.instruction);\n createAccountsTransaction.add(...quoteVaultAccountInstructions);\n createAccountsTransaction.add(quoteNodeBankAccountInstruction.instruction);\n createAccountsTransaction.add(quoteRootBankAccountInstruction.instruction);\n createAccountsTransaction.add(cacheAccountInstruction.instruction);\n createAccountsTransaction.add(...insuranceVaultAccountInstructions);\n const signers = [\n accountInstruction.account,\n quoteVaultAccount,\n quoteNodeBankAccountInstruction.account,\n quoteRootBankAccountInstruction.account,\n cacheAccountInstruction.account,\n insuranceVaultAccount,\n ];\n yield this.sendTransaction(createAccountsTransaction, payer, signers);\n // If valid msrmMint passed in, then create new msrmVault\n let msrmVaultPk;\n if (!msrmMint.equals(utils_1.zeroKey)) {\n const msrmVaultAccount = new web3_js_1.Keypair();\n const msrmVaultAccountInstructions = yield (0, utils_1.createTokenAccountInstructions)(this.connection, payer.publicKey, msrmVaultAccount.publicKey, msrmMint, signerKey);\n const createMsrmVaultTransaction = new web3_js_1.Transaction();\n createMsrmVaultTransaction.add(...msrmVaultAccountInstructions);\n msrmVaultPk = msrmVaultAccount.publicKey;\n yield this.sendTransaction(createMsrmVaultTransaction, payer, [\n msrmVaultAccount,\n ]);\n }\n else {\n msrmVaultPk = utils_1.zeroKey;\n }\n const initMangoGroupInstruction = (0, instruction_1.makeInitMangoGroupInstruction)(this.programId, accountInstruction.account.publicKey, signerKey, payer.publicKey, quoteMint, quoteVaultAccount.publicKey, quoteNodeBankAccountInstruction.account.publicKey, quoteRootBankAccountInstruction.account.publicKey, insuranceVaultAccount.publicKey, msrmVaultPk, feesVault, cacheAccountInstruction.account.publicKey, dexProgram, new bn_js_1.default(signerNonce), new bn_js_1.default(validInterval), fixednum_1.I80F48.fromNumber(quoteOptimalUtil), fixednum_1.I80F48.fromNumber(quoteOptimalRate), fixednum_1.I80F48.fromNumber(quoteMaxRate));\n const initMangoGroupTransaction = new web3_js_1.Transaction();\n initMangoGroupTransaction.add(initMangoGroupInstruction);\n yield this.sendTransaction(initMangoGroupTransaction, payer, []);\n return accountInstruction.account.publicKey;\n });\n }\n /**\n * Retrieve information about a Mango Group\n */\n getMangoGroup(mangoGroup) {\n return __awaiter(this, void 0, void 0, function* () {\n const accountInfo = yield this.connection.getAccountInfo(mangoGroup);\n const decoded = layout_1.MangoGroupLayout.decode(accountInfo == null ? undefined : accountInfo.data);\n return new MangoGroup_1.default(mangoGroup, decoded);\n });\n }\n /**\n * DEPRECATED - Create a new Mango Account on a given group\n */\n initMangoAccount(mangoGroup, owner) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const accountInstruction = yield (0, utils_1.createAccountInstruction)(this.connection, owner.publicKey, layout_1.MangoAccountLayout.span, this.programId);\n const initMangoAccountInstruction = (0, instruction_1.makeInitMangoAccountInstruction)(this.programId, mangoGroup.publicKey, accountInstruction.account.publicKey, owner.publicKey);\n // Add all instructions to one atomic transaction\n const transaction = new web3_js_1.Transaction();\n transaction.add(accountInstruction.instruction);\n transaction.add(initMangoAccountInstruction);\n const additionalSigners = [accountInstruction.account];\n yield this.sendTransaction(transaction, owner, additionalSigners);\n return accountInstruction.account.publicKey;\n });\n }\n /**\n * Create a new Mango Account (PDA) on a given group\n */\n createMangoAccount(mangoGroup, owner, accountNum, payerPk) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const payer = payerPk !== null && payerPk !== void 0 ? payerPk : owner.publicKey;\n const accountNumBN = new bn_js_1.default(accountNum);\n const [mangoAccountPk] = yield web3_js_1.PublicKey.findProgramAddress([\n mangoGroup.publicKey.toBytes(),\n owner.publicKey.toBytes(),\n accountNumBN.toBuffer('le', 8),\n ], this.programId);\n const createMangoAccountInstruction = (0, instruction_1.makeCreateMangoAccountInstruction)(this.programId, mangoGroup.publicKey, mangoAccountPk, owner.publicKey, accountNumBN, payer);\n // Add all instructions to one atomic transaction\n const transaction = new web3_js_1.Transaction();\n transaction.add(createMangoAccountInstruction);\n yield this.sendTransaction(transaction, owner, []);\n return mangoAccountPk;\n });\n }\n /**\n * Upgrade a Mango Account from V0 (not deletable) to V1 (deletable)\n */\n upgradeMangoAccountV0V1(mangoGroup, owner, accountNum) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const accountNumBN = new bn_js_1.default(accountNum);\n const [mangoAccountPk] = yield web3_js_1.PublicKey.findProgramAddress([\n mangoGroup.publicKey.toBytes(),\n owner.publicKey.toBytes(),\n accountNumBN.toBuffer(),\n ], this.programId);\n const upgradeMangoAccountInstruction = (0, instruction_1.makeUpgradeMangoAccountV0V1Instruction)(this.programId, mangoGroup.publicKey, mangoAccountPk, owner.publicKey);\n const transaction = new web3_js_1.Transaction();\n transaction.add(upgradeMangoAccountInstruction);\n yield this.sendTransaction(transaction, owner, []);\n return mangoAccountPk;\n });\n }\n /**\n * Retrieve information about a Mango Account\n */\n getMangoAccount(mangoAccountPk, dexProgramId) {\n return __awaiter(this, void 0, void 0, function* () {\n const acc = yield this.connection.getAccountInfo(mangoAccountPk, 'processed');\n const mangoAccount = new MangoAccount_1.default(mangoAccountPk, layout_1.MangoAccountLayout.decode(acc == null ? undefined : acc.data));\n yield mangoAccount.loadOpenOrders(this.connection, dexProgramId);\n return mangoAccount;\n });\n }\n /**\n * Create a new Mango Account and deposit some tokens in a single transaction\n *\n * @param rootBank The RootBank for the deposit currency\n * @param nodeBank The NodeBank asociated with the RootBank\n * @param vault The token account asociated with the NodeBank\n * @param tokenAcc The token account to transfer from\n * @param info An optional UI name for the account\n */\n initMangoAccountAndDeposit(mangoGroup, owner, rootBank, nodeBank, vault, tokenAcc, quantity, info) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const transaction = new web3_js_1.Transaction();\n const accountInstruction = yield (0, utils_1.createAccountInstruction)(this.connection, owner.publicKey, layout_1.MangoAccountLayout.span, this.programId);\n const initMangoAccountInstruction = (0, instruction_1.makeInitMangoAccountInstruction)(this.programId, mangoGroup.publicKey, accountInstruction.account.publicKey, owner.publicKey);\n transaction.add(accountInstruction.instruction);\n transaction.add(initMangoAccountInstruction);\n const additionalSigners = [accountInstruction.account];\n const tokenIndex = mangoGroup.getRootBankIndex(rootBank);\n const tokenMint = mangoGroup.tokens[tokenIndex].mint;\n let wrappedSolAccount = null;\n if (tokenMint.equals(token_instructions_1.WRAPPED_SOL_MINT) &&\n tokenAcc.toBase58() === owner.publicKey.toBase58()) {\n wrappedSolAccount = new web3_js_1.Keypair();\n const lamports = Math.round(quantity * web3_js_1.LAMPORTS_PER_SOL) + 1e7;\n transaction.add(web3_js_1.SystemProgram.createAccount({\n fromPubkey: owner.publicKey,\n newAccountPubkey: wrappedSolAccount.publicKey,\n lamports,\n space: 165,\n programId: spl_token_1.TOKEN_PROGRAM_ID,\n }));\n transaction.add((0, token_instructions_1.initializeAccount)({\n account: wrappedSolAccount.publicKey,\n mint: token_instructions_1.WRAPPED_SOL_MINT,\n owner: owner.publicKey,\n }));\n additionalSigners.push(wrappedSolAccount);\n }\n const nativeQuantity = (0, utils_1.uiToNative)(quantity, mangoGroup.tokens[tokenIndex].decimals);\n const instruction = (0, instruction_1.makeDepositInstruction)(this.programId, mangoGroup.publicKey, owner.publicKey, mangoGroup.mangoCache, accountInstruction.account.publicKey, rootBank, nodeBank, vault, (_a = wrappedSolAccount === null || wrappedSolAccount === void 0 ? void 0 : wrappedSolAccount.publicKey) !== null && _a !== void 0 ? _a : tokenAcc, nativeQuantity);\n transaction.add(instruction);\n if (info) {\n const addAccountNameinstruction = (0, instruction_1.makeAddMangoAccountInfoInstruction)(this.programId, mangoGroup.publicKey, accountInstruction.account.publicKey, owner.publicKey, info);\n transaction.add(addAccountNameinstruction);\n }\n if (wrappedSolAccount) {\n transaction.add((0, token_instructions_1.closeAccount)({\n source: wrappedSolAccount.publicKey,\n destination: owner.publicKey,\n owner: owner.publicKey,\n }));\n }\n yield this.sendTransaction(transaction, owner, additionalSigners);\n return accountInstruction.account.publicKey.toString();\n });\n }\n /**\n * Create a new Mango Account (PDA) and deposit some tokens in a single transaction\n *\n * @param rootBank The RootBank for the deposit currency\n * @param nodeBank The NodeBank asociated with the RootBank\n * @param vault The token account asociated with the NodeBank\n * @param tokenAcc The token account to transfer from\n * @param info An optional UI name for the account\n */\n createMangoAccountAndDeposit(mangoGroup, owner, rootBank, nodeBank, vault, tokenAcc, quantity, accountNum, info, referrerPk, payerPk) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const transaction = new web3_js_1.Transaction();\n const payer = payerPk !== null && payerPk !== void 0 ? payerPk : owner.publicKey;\n const accountNumBN = new bn_js_1.default(accountNum);\n const [mangoAccountPk] = yield web3_js_1.PublicKey.findProgramAddress([\n mangoGroup.publicKey.toBytes(),\n owner.publicKey.toBytes(),\n accountNumBN.toArrayLike(Buffer, 'le', 8),\n ], this.programId);\n const createMangoAccountInstruction = (0, instruction_1.makeCreateMangoAccountInstruction)(this.programId, mangoGroup.publicKey, mangoAccountPk, owner.publicKey, accountNumBN, payer);\n transaction.add(createMangoAccountInstruction);\n if (referrerPk) {\n const [referrerMemoryPk] = yield web3_js_1.PublicKey.findProgramAddress([mangoAccountPk.toBytes(), new Buffer('ReferrerMemory', 'utf-8')], this.programId);\n const setReferrerInstruction = (0, instruction_1.makeSetReferrerMemoryInstruction)(this.programId, mangoGroup.publicKey, mangoAccountPk, owner.publicKey, referrerMemoryPk, referrerPk, owner.publicKey);\n transaction.add(setReferrerInstruction);\n }\n const additionalSigners = [];\n const tokenIndex = mangoGroup.getRootBankIndex(rootBank);\n const tokenMint = mangoGroup.tokens[tokenIndex].mint;\n let wrappedSolAccount = null;\n if (tokenMint.equals(token_instructions_1.WRAPPED_SOL_MINT) &&\n tokenAcc.toBase58() === owner.publicKey.toBase58()) {\n wrappedSolAccount = new web3_js_1.Keypair();\n const lamports = Math.round(quantity * web3_js_1.LAMPORTS_PER_SOL) + 1e7;\n transaction.add(web3_js_1.SystemProgram.createAccount({\n fromPubkey: owner.publicKey,\n newAccountPubkey: wrappedSolAccount.publicKey,\n lamports,\n space: 165,\n programId: spl_token_1.TOKEN_PROGRAM_ID,\n }));\n transaction.add((0, token_instructions_1.initializeAccount)({\n account: wrappedSolAccount.publicKey,\n mint: token_instructions_1.WRAPPED_SOL_MINT,\n owner: owner.publicKey,\n }));\n additionalSigners.push(wrappedSolAccount);\n }\n const nativeQuantity = (0, utils_1.uiToNative)(quantity, mangoGroup.tokens[tokenIndex].decimals);\n const instruction = (0, instruction_1.makeDepositInstruction)(this.programId, mangoGroup.publicKey, owner.publicKey, mangoGroup.mangoCache, mangoAccountPk, rootBank, nodeBank, vault, (_a = wrappedSolAccount === null || wrappedSolAccount === void 0 ? void 0 : wrappedSolAccount.publicKey) !== null && _a !== void 0 ? _a : tokenAcc, nativeQuantity);\n transaction.add(instruction);\n if (info) {\n const addAccountNameinstruction = (0, instruction_1.makeAddMangoAccountInfoInstruction)(this.programId, mangoGroup.publicKey, mangoAccountPk, owner.publicKey, info);\n transaction.add(addAccountNameinstruction);\n }\n if (wrappedSolAccount) {\n transaction.add((0, token_instructions_1.closeAccount)({\n source: wrappedSolAccount.publicKey,\n destination: owner.publicKey,\n owner: owner.publicKey,\n }));\n }\n const txid = yield this.sendTransaction(transaction, owner, additionalSigners);\n return [mangoAccountPk.toString(), txid];\n });\n }\n /**\n * Deposit tokens in a Mango Account\n *\n * @param rootBank The RootBank for the deposit currency\n * @param nodeBank The NodeBank asociated with the RootBank\n * @param vault The token account asociated with the NodeBank\n * @param tokenAcc The token account to transfer from\n */\n deposit(mangoGroup, mangoAccount, owner, rootBank, nodeBank, vault, tokenAcc, quantity) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const transaction = new web3_js_1.Transaction();\n const additionalSigners = [];\n const tokenIndex = mangoGroup.getRootBankIndex(rootBank);\n const tokenMint = mangoGroup.tokens[tokenIndex].mint;\n let wrappedSolAccount = null;\n if (tokenMint.equals(token_instructions_1.WRAPPED_SOL_MINT) &&\n tokenAcc.toBase58() === owner.publicKey.toBase58()) {\n wrappedSolAccount = new web3_js_1.Keypair();\n const lamports = Math.round(quantity * web3_js_1.LAMPORTS_PER_SOL) + 1e7;\n transaction.add(web3_js_1.SystemProgram.createAccount({\n fromPubkey: owner.publicKey,\n newAccountPubkey: wrappedSolAccount.publicKey,\n lamports,\n space: 165,\n programId: spl_token_1.TOKEN_PROGRAM_ID,\n }));\n transaction.add((0, token_instructions_1.initializeAccount)({\n account: wrappedSolAccount.publicKey,\n mint: token_instructions_1.WRAPPED_SOL_MINT,\n owner: owner.publicKey,\n }));\n additionalSigners.push(wrappedSolAccount);\n }\n const nativeQuantity = (0, utils_1.uiToNative)(quantity, mangoGroup.tokens[tokenIndex].decimals);\n const instruction = (0, instruction_1.makeDepositInstruction)(this.programId, mangoGroup.publicKey, owner.publicKey, mangoGroup.mangoCache, mangoAccount.publicKey, rootBank, nodeBank, vault, (_a = wrappedSolAccount === null || wrappedSolAccount === void 0 ? void 0 : wrappedSolAccount.publicKey) !== null && _a !== void 0 ? _a : tokenAcc, nativeQuantity);\n transaction.add(instruction);\n if (wrappedSolAccount) {\n transaction.add((0, token_instructions_1.closeAccount)({\n source: wrappedSolAccount.publicKey,\n destination: owner.publicKey,\n owner: owner.publicKey,\n }));\n }\n return yield this.sendTransaction(transaction, owner, additionalSigners);\n });\n }\n /**\n * Withdraw tokens from a Mango Account\n *\n * @param rootBank The RootBank for the withdrawn currency\n * @param nodeBank The NodeBank asociated with the RootBank\n * @param vault The token account asociated with the NodeBank\n * @param allowBorrow Whether to borrow tokens if there are not enough deposits for the withdrawal\n */\n withdraw(mangoGroup, mangoAccount, owner, rootBank, nodeBank, vault, quantity, allowBorrow) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const transaction = new web3_js_1.Transaction();\n const additionalSigners = [];\n const tokenIndex = mangoGroup.getRootBankIndex(rootBank);\n const tokenMint = mangoGroup.tokens[tokenIndex].mint;\n let tokenAcc = yield spl_token_1.Token.getAssociatedTokenAddress(spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID, spl_token_1.TOKEN_PROGRAM_ID, tokenMint, owner.publicKey);\n let wrappedSolAccount = null;\n if (tokenMint.equals(token_instructions_1.WRAPPED_SOL_MINT)) {\n wrappedSolAccount = new web3_js_1.Keypair();\n tokenAcc = wrappedSolAccount.publicKey;\n const space = 165;\n const lamports = yield this.connection.getMinimumBalanceForRentExemption(space, 'processed');\n transaction.add(web3_js_1.SystemProgram.createAccount({\n fromPubkey: owner.publicKey,\n newAccountPubkey: tokenAcc,\n lamports,\n space,\n programId: spl_token_1.TOKEN_PROGRAM_ID,\n }));\n transaction.add((0, token_instructions_1.initializeAccount)({\n account: tokenAcc,\n mint: token_instructions_1.WRAPPED_SOL_MINT,\n owner: owner.publicKey,\n }));\n additionalSigners.push(wrappedSolAccount);\n }\n else {\n const tokenAccExists = yield this.connection.getAccountInfo(tokenAcc);\n if (!tokenAccExists) {\n transaction.add(spl_token_1.Token.createAssociatedTokenAccountInstruction(spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID, spl_token_1.TOKEN_PROGRAM_ID, tokenMint, tokenAcc, owner.publicKey, owner.publicKey));\n }\n }\n const nativeQuantity = (0, utils_1.uiToNative)(quantity, mangoGroup.tokens[tokenIndex].decimals);\n const instruction = (0, instruction_1.makeWithdrawInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, mangoGroup.mangoCache, rootBank, nodeBank, vault, tokenAcc, mangoGroup.signerKey, mangoAccount.spotOpenOrders, nativeQuantity, allowBorrow);\n transaction.add(instruction);\n if (wrappedSolAccount) {\n transaction.add((0, token_instructions_1.closeAccount)({\n source: wrappedSolAccount.publicKey,\n destination: owner.publicKey,\n owner: owner.publicKey,\n }));\n }\n return yield this.sendTransaction(transaction, owner, additionalSigners);\n });\n }\n /**\n * Withdraw tokens from a Mango Account, only passing open orders accounts in the margin basket\n *\n * @param rootBank The RootBank for the withdrawn currency\n * @param nodeBank The NodeBank asociated with the RootBank\n * @param vault The token account asociated with the NodeBank\n * @param allowBorrow Whether to borrow tokens if there are not enough deposits for the withdrawal\n */\n withdraw2(mangoGroup, mangoAccount, owner, rootBank, nodeBank, vault, quantity, allowBorrow) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const transaction = new web3_js_1.Transaction();\n const additionalSigners = [];\n const tokenIndex = mangoGroup.getRootBankIndex(rootBank);\n const tokenMint = mangoGroup.tokens[tokenIndex].mint;\n let tokenAcc = yield spl_token_1.Token.getAssociatedTokenAddress(spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID, spl_token_1.TOKEN_PROGRAM_ID, tokenMint, owner.publicKey);\n let wrappedSolAccount = null;\n if (tokenMint.equals(token_instructions_1.WRAPPED_SOL_MINT)) {\n wrappedSolAccount = new web3_js_1.Keypair();\n tokenAcc = wrappedSolAccount.publicKey;\n const space = 165;\n const lamports = yield this.connection.getMinimumBalanceForRentExemption(space, 'processed');\n transaction.add(web3_js_1.SystemProgram.createAccount({\n fromPubkey: owner.publicKey,\n newAccountPubkey: tokenAcc,\n lamports,\n space,\n programId: spl_token_1.TOKEN_PROGRAM_ID,\n }));\n transaction.add((0, token_instructions_1.initializeAccount)({\n account: tokenAcc,\n mint: token_instructions_1.WRAPPED_SOL_MINT,\n owner: owner.publicKey,\n }));\n additionalSigners.push(wrappedSolAccount);\n }\n else {\n const tokenAccExists = yield this.connection.getAccountInfo(tokenAcc);\n if (!tokenAccExists) {\n transaction.add(spl_token_1.Token.createAssociatedTokenAccountInstruction(spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID, spl_token_1.TOKEN_PROGRAM_ID, tokenMint, tokenAcc, owner.publicKey, owner.publicKey));\n }\n }\n const nativeQuantity = (0, utils_1.uiToNative)(quantity, mangoGroup.tokens[tokenIndex].decimals);\n const instruction = (0, instruction_1.makeWithdrawInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, mangoGroup.mangoCache, rootBank, nodeBank, vault, tokenAcc, mangoGroup.signerKey, mangoAccount.spotOpenOrders.filter((_, i) => mangoAccount.inMarginBasket[i]), nativeQuantity, allowBorrow);\n transaction.add(instruction);\n if (wrappedSolAccount) {\n transaction.add((0, token_instructions_1.closeAccount)({\n source: wrappedSolAccount.publicKey,\n destination: owner.publicKey,\n owner: owner.publicKey,\n }));\n }\n return yield this.sendTransaction(transaction, owner, additionalSigners);\n });\n }\n withdrawAll(mangoGroup, mangoAccount, owner) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const transactionsAndSigners = [];\n for (const rootBank of mangoGroup.rootBankAccounts) {\n const transactionAndSigners = {\n transaction: new web3_js_1.Transaction(),\n signers: [],\n };\n if (rootBank) {\n const tokenIndex = mangoGroup.getRootBankIndex(rootBank === null || rootBank === void 0 ? void 0 : rootBank.publicKey);\n const tokenMint = mangoGroup.tokens[tokenIndex].mint;\n // const decimals = mangoGroup.tokens[tokenIndex].decimals;\n if (mangoAccount.deposits[tokenIndex].isPos()) {\n let tokenAcc = yield spl_token_1.Token.getAssociatedTokenAddress(spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID, spl_token_1.TOKEN_PROGRAM_ID, tokenMint, owner.publicKey);\n let wrappedSolAccount = null;\n if (tokenMint.equals(token_instructions_1.WRAPPED_SOL_MINT)) {\n wrappedSolAccount = new web3_js_1.Keypair();\n tokenAcc = wrappedSolAccount.publicKey;\n const space = 165;\n const lamports = yield this.connection.getMinimumBalanceForRentExemption(space, 'processed');\n transactionAndSigners.transaction.add(web3_js_1.SystemProgram.createAccount({\n fromPubkey: owner.publicKey,\n newAccountPubkey: tokenAcc,\n lamports,\n space,\n programId: spl_token_1.TOKEN_PROGRAM_ID,\n }));\n transactionAndSigners.transaction.add((0, token_instructions_1.initializeAccount)({\n account: tokenAcc,\n mint: token_instructions_1.WRAPPED_SOL_MINT,\n owner: owner.publicKey,\n }));\n transactionAndSigners.signers.push(wrappedSolAccount);\n }\n else {\n const tokenAccExists = yield this.connection.getAccountInfo(tokenAcc, 'recent');\n if (!tokenAccExists) {\n transactionAndSigners.transaction.add(spl_token_1.Token.createAssociatedTokenAccountInstruction(spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID, spl_token_1.TOKEN_PROGRAM_ID, tokenMint, tokenAcc, owner.publicKey, owner.publicKey));\n }\n }\n const instruction = (0, instruction_1.makeWithdrawInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, mangoGroup.mangoCache, rootBank.publicKey, rootBank.nodeBanks[0], rootBank.nodeBankAccounts[0].vault, tokenAcc, mangoGroup.signerKey, mangoAccount.spotOpenOrders, new bn_js_1.default('18446744073709551615'), // u64::MAX to withdraw errything\n false);\n transactionAndSigners.transaction.add(instruction);\n if (wrappedSolAccount) {\n transactionAndSigners.transaction.add((0, token_instructions_1.closeAccount)({\n source: wrappedSolAccount.publicKey,\n destination: owner.publicKey,\n owner: owner.publicKey,\n }));\n }\n }\n }\n transactionsAndSigners.push(transactionAndSigners);\n }\n const currentBlockhash = yield this.getCurrentBlockhash();\n const signedTransactions = yield this.signTransactions({\n transactionsAndSigners,\n payer: owner,\n currentBlockhash,\n });\n if (signedTransactions) {\n for (const signedTransaction of signedTransactions) {\n if (signedTransaction.instructions.length == 0) {\n continue;\n }\n const txid = yield this.sendSignedTransaction({\n signedTransaction,\n signedAtBlock: currentBlockhash,\n });\n console.log(txid);\n }\n }\n else {\n throw new Error('Unable to sign Settle All transaction');\n }\n });\n }\n // Keeper functions\n /**\n * Called by the Keeper to cache interest rates from the RootBanks\n */\n cacheRootBanks(mangoGroup, mangoCache, rootBanks, payer) {\n return __awaiter(this, void 0, void 0, function* () {\n const cacheRootBanksInstruction = (0, instruction_1.makeCacheRootBankInstruction)(this.programId, mangoGroup, mangoCache, rootBanks);\n const transaction = new web3_js_1.Transaction();\n transaction.add(cacheRootBanksInstruction);\n return yield this.sendTransaction(transaction, payer, []);\n });\n }\n /**\n * Called by the Keeper to cache prices from the Oracles\n */\n cachePrices(mangoGroup, mangoCache, oracles, payer) {\n return __awaiter(this, void 0, void 0, function* () {\n const cachePricesInstruction = (0, instruction_1.makeCachePricesInstruction)(this.programId, mangoGroup, mangoCache, oracles);\n const transaction = new web3_js_1.Transaction();\n transaction.add(cachePricesInstruction);\n return yield this.sendTransaction(transaction, payer, []);\n });\n }\n /**\n * Called by the Keeper to cache perp market funding\n */\n cachePerpMarkets(mangoGroup, mangoCache, perpMarkets, payer) {\n return __awaiter(this, void 0, void 0, function* () {\n const cachePerpMarketsInstruction = (0, instruction_1.makeCachePerpMarketsInstruction)(this.programId, mangoGroup, mangoCache, perpMarkets);\n const transaction = new web3_js_1.Transaction();\n transaction.add(cachePerpMarketsInstruction);\n return yield this.sendTransaction(transaction, payer, []);\n });\n }\n /**\n * Called by the Keeper to update interest rates on the RootBanks\n */\n updateRootBank(mangoGroup, rootBank, nodeBanks, payer) {\n return __awaiter(this, void 0, void 0, function* () {\n const updateRootBanksInstruction = (0, instruction_1.makeUpdateRootBankInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, rootBank, nodeBanks);\n const transaction = new web3_js_1.Transaction();\n transaction.add(updateRootBanksInstruction);\n return yield this.sendTransaction(transaction, payer, []);\n });\n }\n /**\n * Called by the Keeper to process events on the Perp order book\n */\n consumeEvents(mangoGroup, perpMarket, mangoAccounts, payer, limit) {\n return __awaiter(this, void 0, void 0, function* () {\n const consumeEventsInstruction = (0, instruction_1.makeConsumeEventsInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, perpMarket.publicKey, perpMarket.eventQueue, mangoAccounts, limit);\n const transaction = new web3_js_1.Transaction();\n transaction.add(consumeEventsInstruction);\n return yield this.sendTransaction(transaction, payer, [], null);\n });\n }\n /**\n * Called by the Keeper to update funding on the perp markets\n */\n updateFunding(mangoGroup, mangoCache, perpMarket, bids, asks, payer) {\n return __awaiter(this, void 0, void 0, function* () {\n const updateFundingInstruction = (0, instruction_1.makeUpdateFundingInstruction)(this.programId, mangoGroup, mangoCache, perpMarket, bids, asks);\n const transaction = new web3_js_1.Transaction();\n transaction.add(updateFundingInstruction);\n return yield this.sendTransaction(transaction, payer, []);\n });\n }\n /**\n * Retrieve information about a perp market\n */\n getPerpMarket(perpMarketPk, baseDecimal, quoteDecimal) {\n return __awaiter(this, void 0, void 0, function* () {\n const acc = yield this.connection.getAccountInfo(perpMarketPk);\n const perpMarket = new PerpMarket_1.default(perpMarketPk, baseDecimal, quoteDecimal, layout_1.PerpMarketLayout.decode(acc === null || acc === void 0 ? void 0 : acc.data));\n return perpMarket;\n });\n }\n /**\n * Place an order on a perp market\n *\n * @param clientOrderId An optional id that can be used to correlate events related to your order\n * @param bookSideInfo Account info for asks if side === bid, bids if side === ask. If this is given, crank instruction is added\n */\n placePerpOrder(mangoGroup, mangoAccount, mangoCache, // TODO - remove; already in MangoGroup\n perpMarket, owner, side, price, quantity, orderType, clientOrderId = 0, bookSideInfo, reduceOnly, referrerMangoAccountPk) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const [nativePrice, nativeQuantity] = perpMarket.uiToNativePriceQuantity(price, quantity);\n const transaction = new web3_js_1.Transaction();\n const additionalSigners = [];\n const instruction = (0, instruction_1.makePlacePerpOrderInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, mangoCache, perpMarket.publicKey, perpMarket.bids, perpMarket.asks, perpMarket.eventQueue, mangoAccount.spotOpenOrders, nativePrice, nativeQuantity, new bn_js_1.default(clientOrderId), side, orderType, reduceOnly, referrerMangoAccountPk);\n transaction.add(instruction);\n if (bookSideInfo) {\n // If this data is already parsed as BookSide, use that instead of decoding again\n let bookSide = bookSideInfo['parsed'];\n if (bookSide === undefined) {\n bookSide = bookSideInfo.data\n ? new book_1.BookSide(side === 'buy' ? perpMarket.asks : perpMarket.bids, perpMarket, layout_1.BookSideLayout.decode(bookSideInfo.data))\n : [];\n }\n const accounts = new Set();\n accounts.add(mangoAccount.publicKey.toBase58());\n for (const order of bookSide) {\n accounts.add(order.owner.toBase58());\n if (accounts.size >= 10) {\n break;\n }\n }\n const consumeInstruction = (0, instruction_1.makeConsumeEventsInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, perpMarket.publicKey, perpMarket.eventQueue, Array.from(accounts)\n .map((s) => new web3_js_1.PublicKey(s))\n .sort(), new bn_js_1.default(4));\n transaction.add(consumeInstruction);\n }\n return yield this.sendTransaction(transaction, owner, additionalSigners);\n });\n }\n /**\n * Place an order on a perp market\n *\n * @param clientOrderId An optional id that can be used to correlate events related to your order\n * @param bookSideInfo Account info for asks if side === bid, bids if side === ask. If this is given, crank instruction is added\n * @param expiryTimestamp Absolute: 0 for never expire, othereise future expiry timestamp in seconds. Relative: expiry offset in seconds\n * @param expiryType Since there is an unknown delay from sending a transaction to the transaction being processed, Absolute expiry usually preferred.\n */\n placePerpOrder2(mangoGroup, mangoAccount, perpMarket, owner, side, price, quantity, options) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n options = options ? options : {};\n let { maxQuoteQuantity, limit, orderType, clientOrderId, bookSideInfo, reduceOnly, referrerMangoAccountPk, expiryTimestamp, expiryType, } = options;\n limit = limit || 20;\n clientOrderId = clientOrderId === undefined ? 0 : clientOrderId;\n orderType = orderType || 'limit';\n const [nativePrice, nativeQuantity] = perpMarket.uiToNativePriceQuantity(price, quantity);\n const maxQuoteQuantityLots = maxQuoteQuantity\n ? perpMarket.uiQuoteToLots(maxQuoteQuantity)\n : utils_1.I64_MAX_BN;\n const transaction = new web3_js_1.Transaction();\n const additionalSigners = [];\n const instruction = (0, instruction_1.makePlacePerpOrder2Instruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, mangoGroup.mangoCache, perpMarket.publicKey, perpMarket.bids, perpMarket.asks, perpMarket.eventQueue, mangoAccount.getOpenOrdersKeysInBasketPacked(), nativePrice, nativeQuantity, maxQuoteQuantityLots, new bn_js_1.default(clientOrderId), side, new bn_js_1.default(limit), orderType, reduceOnly, referrerMangoAccountPk, expiryTimestamp ? new bn_js_1.default(Math.floor(expiryTimestamp)) : utils_1.ZERO_BN, expiryType ? expiryType : 'absolute');\n transaction.add(instruction);\n if (bookSideInfo) {\n // If this data is already parsed as BookSide, use that instead of decoding again\n let bookSide = bookSideInfo['parsed'];\n if (bookSide === undefined) {\n bookSide = bookSideInfo.data\n ? new book_1.BookSide(side === 'buy' ? perpMarket.asks : perpMarket.bids, perpMarket, layout_1.BookSideLayout.decode(bookSideInfo.data))\n : [];\n }\n const accounts = new Set();\n accounts.add(mangoAccount.publicKey.toBase58());\n for (const order of bookSide) {\n accounts.add(order.owner.toBase58());\n if (accounts.size >= 10) {\n break;\n }\n }\n if (accounts.size > 1) {\n const consumeInstruction = (0, instruction_1.makeConsumeEventsInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, perpMarket.publicKey, perpMarket.eventQueue, Array.from(accounts)\n .map((s) => new web3_js_1.PublicKey(s))\n .sort(), new bn_js_1.default(4));\n transaction.add(consumeInstruction);\n }\n }\n return yield this.sendTransaction(transaction, owner, additionalSigners);\n });\n }\n /**\n * Cancel an order on a perp market\n *\n * @param invalidIdOk Don't throw error if order is invalid\n */\n cancelPerpOrder(mangoGroup, mangoAccount, owner, perpMarket, order, invalidIdOk = false) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const instruction = (0, instruction_1.makeCancelPerpOrderInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, perpMarket.publicKey, perpMarket.bids, perpMarket.asks, order, invalidIdOk);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, owner, additionalSigners);\n });\n }\n /**\n * Cancel all perp orders across all markets\n */\n cancelAllPerpOrders(group, perpMarkets, mangoAccount, owner, ownerIsSigner = true) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n let tx = new web3_js_1.Transaction();\n const transactions = [];\n // Determine which market indexes have open orders\n const hasOrders = new Array(group.perpMarkets.length).fill(false);\n for (let i = 0; i < mangoAccount.orderMarket.length; i++) {\n if (mangoAccount.orderMarket[i] !== layout_1.FREE_ORDER_SLOT) {\n hasOrders[mangoAccount.orderMarket[i]] = true;\n }\n }\n for (let i = 0; i < group.perpMarkets.length; i++) {\n if (!hasOrders[i])\n continue;\n const pmi = group.perpMarkets[i];\n if (pmi.isEmpty())\n continue;\n const perpMarket = perpMarkets.find((pm) => pm.publicKey.equals(pmi.perpMarket));\n if (perpMarket === undefined)\n continue;\n const cancelAllInstr = (0, instruction_1.makeCancelAllPerpOrdersInstruction)(this.programId, group.publicKey, mangoAccount.publicKey, ownerIsSigner ? owner.publicKey : mangoAccount.owner, perpMarket.publicKey, perpMarket.bids, perpMarket.asks, new bn_js_1.default(20), ownerIsSigner);\n tx.add(cancelAllInstr);\n if (tx.instructions.length === 2) {\n transactions.push(tx);\n tx = new web3_js_1.Transaction();\n }\n }\n if (tx.instructions.length > 0) {\n transactions.push(tx);\n }\n const transactionsAndSigners = transactions.map((tx) => ({\n transaction: tx,\n signers: [],\n }));\n if (transactionsAndSigners.length === 0) {\n throw new Error('No orders to cancel');\n }\n // Sign multiple transactions at once for better UX\n const currentBlockhash = yield this.getCurrentBlockhash();\n const signedTransactions = yield this.signTransactions({\n transactionsAndSigners,\n payer: owner,\n currentBlockhash,\n });\n if (signedTransactions) {\n return yield Promise.all(signedTransactions.map((signedTransaction) => this.sendSignedTransaction({\n signedTransaction,\n signedAtBlock: currentBlockhash,\n })));\n }\n else {\n throw new Error('Unable to sign all CancelAllPerpOrders transactions');\n }\n });\n }\n /**\n * Add a new oracle to a group\n */\n addOracle(mangoGroup, oracle, admin) {\n return __awaiter(this, void 0, void 0, function* () {\n const instruction = (0, instruction_1.makeAddOracleInstruction)(this.programId, mangoGroup.publicKey, oracle, admin.publicKey);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, admin, additionalSigners);\n });\n }\n /**\n * Set the price of a 'stub' type oracle\n */\n setOracle(mangoGroup, oracle, admin, price) {\n return __awaiter(this, void 0, void 0, function* () {\n const instruction = (0, instruction_1.makeSetOracleInstruction)(this.programId, mangoGroup.publicKey, oracle, admin.publicKey, price);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, admin, additionalSigners);\n });\n }\n addSpotMarket(mangoGroup, oracle, spotMarket, mint, admin, maintLeverage, initLeverage, liquidationFee, optimalUtil, optimalRate, maxRate) {\n return __awaiter(this, void 0, void 0, function* () {\n const vaultAccount = new web3_js_1.Keypair();\n const vaultAccountInstructions = yield (0, utils_1.createTokenAccountInstructions)(this.connection, admin.publicKey, vaultAccount.publicKey, mint, mangoGroup.signerKey);\n const nodeBankAccountInstruction = yield (0, utils_1.createAccountInstruction)(this.connection, admin.publicKey, layout_1.NodeBankLayout.span, this.programId);\n const rootBankAccountInstruction = yield (0, utils_1.createAccountInstruction)(this.connection, admin.publicKey, layout_1.RootBankLayout.span, this.programId);\n const instruction = (0, instruction_1.makeAddSpotMarketInstruction)(this.programId, mangoGroup.publicKey, oracle, spotMarket, mangoGroup.dexProgramId, mint, nodeBankAccountInstruction.account.publicKey, vaultAccount.publicKey, rootBankAccountInstruction.account.publicKey, admin.publicKey, fixednum_1.I80F48.fromNumber(maintLeverage), fixednum_1.I80F48.fromNumber(initLeverage), fixednum_1.I80F48.fromNumber(liquidationFee), fixednum_1.I80F48.fromNumber(optimalUtil), fixednum_1.I80F48.fromNumber(optimalRate), fixednum_1.I80F48.fromNumber(maxRate));\n const transaction = new web3_js_1.Transaction();\n transaction.add(...vaultAccountInstructions);\n transaction.add(nodeBankAccountInstruction.instruction);\n transaction.add(rootBankAccountInstruction.instruction);\n transaction.add(instruction);\n const additionalSigners = [\n vaultAccount,\n nodeBankAccountInstruction.account,\n rootBankAccountInstruction.account,\n ];\n return yield this.sendTransaction(transaction, admin, additionalSigners);\n });\n }\n /**\n * Make sure mangoAccount has recent and valid inMarginBasket and spotOpenOrders\n */\n placeSpotOrder(mangoGroup, mangoAccount, mangoCache, spotMarket, owner, side, price, size, orderType, clientId) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const limitPrice = spotMarket.priceNumberToLots(price);\n const maxBaseQuantity = spotMarket.baseSizeNumberToLots(size);\n // TODO implement srm vault fee discount\n // const feeTier = getFeeTier(0, nativeToUi(mangoGroup.nativeSrm || 0, SRM_DECIMALS));\n const feeTier = (0, serum_1.getFeeTier)(0, (0, utils_1.nativeToUi)(0, 0));\n const rates = (0, serum_1.getFeeRates)(feeTier);\n const maxQuoteQuantity = new bn_js_1.default(spotMarket['_decoded'].quoteLotSize.toNumber() * (1 + rates.taker)).mul(spotMarket\n .baseSizeNumberToLots(size)\n .mul(spotMarket.priceNumberToLots(price)));\n if (maxBaseQuantity.lte(utils_1.ZERO_BN)) {\n throw new Error('size too small');\n }\n if (limitPrice.lte(utils_1.ZERO_BN)) {\n throw new Error('invalid price');\n }\n const selfTradeBehavior = 'decrementTake';\n clientId = clientId !== null && clientId !== void 0 ? clientId : new bn_js_1.default(Date.now());\n const spotMarketIndex = mangoGroup.getSpotMarketIndex(spotMarket.publicKey);\n if (!mangoGroup.rootBankAccounts.filter((a) => !!a).length) {\n yield mangoGroup.loadRootBanks(this.connection);\n }\n const baseRootBank = mangoGroup.rootBankAccounts[spotMarketIndex];\n const baseNodeBank = baseRootBank === null || baseRootBank === void 0 ? void 0 : baseRootBank.nodeBankAccounts[0];\n const quoteRootBank = mangoGroup.rootBankAccounts[layout_1.QUOTE_INDEX];\n const quoteNodeBank = quoteRootBank === null || quoteRootBank === void 0 ? void 0 : quoteRootBank.nodeBankAccounts[0];\n if (!baseRootBank || !baseNodeBank || !quoteRootBank || !quoteNodeBank) {\n throw new Error('Invalid or missing banks');\n }\n const transaction = new web3_js_1.Transaction();\n const additionalSigners = [];\n const openOrdersKeys = [];\n // Only pass in open orders if in margin basket or current market index, and\n // the only writable account should be OpenOrders for current market index\n for (let i = 0; i < mangoAccount.spotOpenOrders.length; i++) {\n let pubkey = utils_1.zeroKey;\n let isWritable = false;\n if (i === spotMarketIndex) {\n isWritable = true;\n if (mangoAccount.spotOpenOrders[spotMarketIndex].equals(utils_1.zeroKey)) {\n // open orders missing for this market; create a new one now\n const openOrdersSpace = serum_1.OpenOrders.getLayout(mangoGroup.dexProgramId).span;\n const openOrdersLamports = yield this.connection.getMinimumBalanceForRentExemption(openOrdersSpace, 'processed');\n const accInstr = yield (0, utils_1.createAccountInstruction)(this.connection, owner.publicKey, openOrdersSpace, mangoGroup.dexProgramId, openOrdersLamports);\n const initOpenOrders = (0, instruction_1.makeInitSpotOpenOrdersInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, mangoGroup.dexProgramId, accInstr.account.publicKey, spotMarket.publicKey, mangoGroup.signerKey);\n const initTx = new web3_js_1.Transaction();\n initTx.add(accInstr.instruction);\n initTx.add(initOpenOrders);\n yield this.sendTransaction(initTx, owner, [accInstr.account]);\n pubkey = accInstr.account.publicKey;\n }\n else {\n pubkey = mangoAccount.spotOpenOrders[i];\n }\n }\n else if (mangoAccount.inMarginBasket[i]) {\n pubkey = mangoAccount.spotOpenOrders[i];\n }\n openOrdersKeys.push({ pubkey, isWritable });\n }\n const dexSigner = yield web3_js_1.PublicKey.createProgramAddress([\n spotMarket.publicKey.toBuffer(),\n spotMarket['_decoded'].vaultSignerNonce.toArrayLike(Buffer, 'le', 8),\n ], spotMarket.programId);\n const placeOrderInstruction = (0, instruction_1.makePlaceSpotOrderInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, mangoCache, spotMarket.programId, spotMarket.publicKey, spotMarket['_decoded'].bids, spotMarket['_decoded'].asks, spotMarket['_decoded'].requestQueue, spotMarket['_decoded'].eventQueue, spotMarket['_decoded'].baseVault, spotMarket['_decoded'].quoteVault, baseRootBank.publicKey, baseNodeBank.publicKey, baseNodeBank.vault, quoteRootBank.publicKey, quoteNodeBank.publicKey, quoteNodeBank.vault, mangoGroup.signerKey, dexSigner, mangoGroup.srmVault, // TODO: choose msrm vault if it has any deposits\n openOrdersKeys, side, limitPrice, maxBaseQuantity, maxQuoteQuantity, selfTradeBehavior, orderType, clientId);\n transaction.add(placeOrderInstruction);\n if (spotMarketIndex > 0) {\n console.log(spotMarketIndex - 1, mangoAccount.spotOpenOrders[spotMarketIndex - 1].toBase58(), openOrdersKeys[spotMarketIndex - 1].pubkey.toBase58());\n }\n const txid = yield this.sendTransaction(transaction, owner, additionalSigners);\n // update MangoAccount to have new OpenOrders pubkey\n mangoAccount.spotOpenOrders[spotMarketIndex] =\n openOrdersKeys[spotMarketIndex].pubkey;\n mangoAccount.inMarginBasket[spotMarketIndex] = true;\n console.log(spotMarketIndex, mangoAccount.spotOpenOrders[spotMarketIndex].toBase58(), openOrdersKeys[spotMarketIndex].pubkey.toBase58());\n return txid;\n });\n }\n /**\n * Make sure mangoAccount has recent and valid inMarginBasket and spotOpenOrders\n */\n placeSpotOrder2(mangoGroup, mangoAccount, spotMarket, owner, side, price, size, orderType, clientOrderId, useMsrmVault) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const limitPrice = spotMarket.priceNumberToLots(price);\n const maxBaseQuantity = spotMarket.baseSizeNumberToLots(size);\n const allTransactions = [];\n // TODO implement srm vault fee discount\n // const feeTier = getFeeTier(0, nativeToUi(mangoGroup.nativeSrm || 0, SRM_DECIMALS));\n const feeTier = (0, serum_1.getFeeTier)(0, (0, utils_1.nativeToUi)(0, 0));\n const rates = (0, serum_1.getFeeRates)(feeTier);\n const maxQuoteQuantity = new bn_js_1.default(spotMarket['_decoded'].quoteLotSize.toNumber() * (1 + rates.taker)).mul(spotMarket\n .baseSizeNumberToLots(size)\n .mul(spotMarket.priceNumberToLots(price)));\n if (maxBaseQuantity.lte(utils_1.ZERO_BN)) {\n throw new Error('size too small');\n }\n if (limitPrice.lte(utils_1.ZERO_BN)) {\n throw new Error('invalid price');\n }\n const selfTradeBehavior = 'decrementTake';\n const spotMarketIndex = mangoGroup.getSpotMarketIndex(spotMarket.publicKey);\n if (!mangoGroup.rootBankAccounts.filter((a) => !!a).length) {\n yield mangoGroup.loadRootBanks(this.connection);\n }\n let feeVault;\n if (useMsrmVault) {\n feeVault = mangoGroup.msrmVault;\n }\n else if (useMsrmVault === false) {\n feeVault = mangoGroup.srmVault;\n }\n else {\n const totalMsrm = yield this.connection.getTokenAccountBalance(mangoGroup.msrmVault);\n feeVault =\n ((_a = totalMsrm === null || totalMsrm === void 0 ? void 0 : totalMsrm.value) === null || _a === void 0 ? void 0 : _a.uiAmount) && totalMsrm.value.uiAmount > 0\n ? mangoGroup.msrmVault\n : mangoGroup.srmVault;\n }\n const baseRootBank = mangoGroup.rootBankAccounts[spotMarketIndex];\n const baseNodeBank = baseRootBank === null || baseRootBank === void 0 ? void 0 : baseRootBank.nodeBankAccounts[0];\n const quoteRootBank = mangoGroup.rootBankAccounts[layout_1.QUOTE_INDEX];\n const quoteNodeBank = quoteRootBank === null || quoteRootBank === void 0 ? void 0 : quoteRootBank.nodeBankAccounts[0];\n if (!baseRootBank || !baseNodeBank || !quoteRootBank || !quoteNodeBank) {\n throw new Error('Invalid or missing banks');\n }\n const transaction = new web3_js_1.Transaction();\n const openOrdersKeys = [];\n // Only pass in open orders if in margin basket or current market index, and\n // the only writable account should be OpenOrders for current market index\n let marketOpenOrdersKey = utils_1.zeroKey;\n const initTx = new web3_js_1.Transaction();\n for (let i = 0; i < mangoAccount.spotOpenOrders.length; i++) {\n let pubkey = utils_1.zeroKey;\n let isWritable = false;\n if (i === spotMarketIndex) {\n isWritable = true;\n if (mangoAccount.spotOpenOrders[spotMarketIndex].equals(utils_1.zeroKey)) {\n const spotMarketIndexBN = new bn_js_1.default(spotMarketIndex);\n const [openOrdersPk] = yield web3_js_1.PublicKey.findProgramAddress([\n mangoAccount.publicKey.toBytes(),\n spotMarketIndexBN.toArrayLike(Buffer, 'le', 8),\n new Buffer('OpenOrders', 'utf-8'),\n ], this.programId);\n const initOpenOrders = (0, instruction_2.makeCreateSpotOpenOrdersInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, mangoGroup.dexProgramId, openOrdersPk, spotMarket.publicKey, mangoGroup.signerKey);\n initTx.add(initOpenOrders);\n allTransactions.push(initTx);\n pubkey = openOrdersPk;\n }\n else {\n pubkey = mangoAccount.spotOpenOrders[i];\n }\n marketOpenOrdersKey = pubkey;\n }\n else if (mangoAccount.inMarginBasket[i]) {\n pubkey = mangoAccount.spotOpenOrders[i];\n }\n // new design does not require zero keys to be passed in\n if (!pubkey.equals(utils_1.zeroKey)) {\n openOrdersKeys.push({ pubkey, isWritable });\n }\n }\n const dexSigner = yield web3_js_1.PublicKey.createProgramAddress([\n spotMarket.publicKey.toBuffer(),\n spotMarket['_decoded'].vaultSignerNonce.toArrayLike(Buffer, 'le', 8),\n ], spotMarket.programId);\n const placeOrderInstruction = (0, instruction_1.makePlaceSpotOrder2Instruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, mangoGroup.mangoCache, spotMarket.programId, spotMarket.publicKey, spotMarket['_decoded'].bids, spotMarket['_decoded'].asks, spotMarket['_decoded'].requestQueue, spotMarket['_decoded'].eventQueue, spotMarket['_decoded'].baseVault, spotMarket['_decoded'].quoteVault, baseRootBank.publicKey, baseNodeBank.publicKey, baseNodeBank.vault, quoteRootBank.publicKey, quoteNodeBank.publicKey, quoteNodeBank.vault, mangoGroup.signerKey, dexSigner, feeVault, openOrdersKeys, side, limitPrice, maxBaseQuantity, maxQuoteQuantity, selfTradeBehavior, orderType, clientOrderId !== null && clientOrderId !== void 0 ? clientOrderId : new bn_js_1.default(Date.now()));\n transaction.add(placeOrderInstruction);\n allTransactions.push(transaction);\n const signers = [];\n const transactionsAndSigners = allTransactions.map((tx) => ({\n transaction: tx,\n signers,\n }));\n const currentBlockhash = yield this.getCurrentBlockhash();\n const signedTransactions = yield this.signTransactions({\n transactionsAndSigners,\n payer: owner,\n currentBlockhash,\n });\n const txids = [];\n if (signedTransactions) {\n for (const signedTransaction of signedTransactions) {\n if (signedTransaction.instructions.length == 0) {\n continue;\n }\n const txid = yield this.sendSignedTransaction({\n signedTransaction,\n signedAtBlock: currentBlockhash,\n });\n txids.push(txid);\n }\n // update MangoAccount to have new OpenOrders pubkey\n // We know this new key is in margin basket because if it was a full taker trade\n // there is some leftover from fee rebate. If maker trade there's the order.\n // and if it failed then we already exited before this line\n mangoAccount.spotOpenOrders[spotMarketIndex] = marketOpenOrdersKey;\n mangoAccount.inMarginBasket[spotMarketIndex] = true;\n }\n else {\n throw new Error('Unable to sign Settle All transaction');\n }\n return txids;\n });\n }\n cancelSpotOrder(mangoGroup, mangoAccount, owner, spotMarket, order) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const transaction = new web3_js_1.Transaction();\n const instruction = (0, instruction_1.makeCancelSpotOrderInstruction)(this.programId, mangoGroup.publicKey, owner.publicKey, mangoAccount.publicKey, spotMarket.programId, spotMarket.publicKey, spotMarket['_decoded'].bids, spotMarket['_decoded'].asks, order.openOrdersAddress, mangoGroup.signerKey, spotMarket['_decoded'].eventQueue, order);\n transaction.add(instruction);\n const dexSigner = yield web3_js_1.PublicKey.createProgramAddress([\n spotMarket.publicKey.toBuffer(),\n spotMarket['_decoded'].vaultSignerNonce.toArrayLike(Buffer, 'le', 8),\n ], spotMarket.programId);\n const marketIndex = mangoGroup.getSpotMarketIndex(spotMarket.publicKey);\n if (!mangoGroup.rootBankAccounts.length) {\n yield mangoGroup.loadRootBanks(this.connection);\n }\n const baseRootBank = mangoGroup.rootBankAccounts[marketIndex];\n const quoteRootBank = mangoGroup.rootBankAccounts[layout_1.QUOTE_INDEX];\n const baseNodeBank = baseRootBank === null || baseRootBank === void 0 ? void 0 : baseRootBank.nodeBankAccounts[0];\n const quoteNodeBank = quoteRootBank === null || quoteRootBank === void 0 ? void 0 : quoteRootBank.nodeBankAccounts[0];\n if (!baseNodeBank || !quoteNodeBank) {\n throw new Error('Invalid or missing node banks');\n }\n const settleFundsInstruction = (0, instruction_1.makeSettleFundsInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, owner.publicKey, mangoAccount.publicKey, spotMarket.programId, spotMarket.publicKey, mangoAccount.spotOpenOrders[marketIndex], mangoGroup.signerKey, spotMarket['_decoded'].baseVault, spotMarket['_decoded'].quoteVault, mangoGroup.tokens[marketIndex].rootBank, baseNodeBank.publicKey, mangoGroup.tokens[layout_1.QUOTE_INDEX].rootBank, quoteNodeBank.publicKey, baseNodeBank.vault, quoteNodeBank.vault, dexSigner);\n transaction.add(settleFundsInstruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, owner, additionalSigners);\n });\n }\n settleFunds(mangoGroup, mangoAccount, owner, spotMarket) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const marketIndex = mangoGroup.getSpotMarketIndex(spotMarket.publicKey);\n const dexSigner = yield web3_js_1.PublicKey.createProgramAddress([\n spotMarket.publicKey.toBuffer(),\n spotMarket['_decoded'].vaultSignerNonce.toArrayLike(Buffer, 'le', 8),\n ], spotMarket.programId);\n if (!mangoGroup.rootBankAccounts.length) {\n yield mangoGroup.loadRootBanks(this.connection);\n }\n const baseRootBank = mangoGroup.rootBankAccounts[marketIndex];\n const quoteRootBank = mangoGroup.rootBankAccounts[layout_1.QUOTE_INDEX];\n const baseNodeBank = baseRootBank === null || baseRootBank === void 0 ? void 0 : baseRootBank.nodeBankAccounts[0];\n const quoteNodeBank = quoteRootBank === null || quoteRootBank === void 0 ? void 0 : quoteRootBank.nodeBankAccounts[0];\n if (!baseNodeBank || !quoteNodeBank) {\n throw new Error('Invalid or missing node banks');\n }\n const instruction = (0, instruction_1.makeSettleFundsInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, owner.publicKey, mangoAccount.publicKey, spotMarket.programId, spotMarket.publicKey, mangoAccount.spotOpenOrders[marketIndex], mangoGroup.signerKey, spotMarket['_decoded'].baseVault, spotMarket['_decoded'].quoteVault, mangoGroup.tokens[marketIndex].rootBank, baseNodeBank.publicKey, mangoGroup.tokens[layout_1.QUOTE_INDEX].rootBank, quoteNodeBank.publicKey, baseNodeBank.vault, quoteNodeBank.vault, dexSigner);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, owner, additionalSigners);\n });\n }\n /**\n * Assumes spotMarkets contains all Markets in MangoGroup in order\n */\n settleAll(mangoGroup, mangoAccount, spotMarkets, owner) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const transactions = [];\n let j = 0;\n for (let i = 0; i < mangoGroup.spotMarkets.length; i++) {\n if (mangoGroup.spotMarkets[i].isEmpty())\n continue;\n const spotMarket = spotMarkets[j];\n j++;\n const transaction = new web3_js_1.Transaction();\n const openOrdersAccount = mangoAccount.spotOpenOrdersAccounts[i];\n if (openOrdersAccount === undefined)\n continue;\n if (openOrdersAccount.quoteTokenFree.toNumber() +\n openOrdersAccount['referrerRebatesAccrued'].toNumber() ===\n 0 &&\n openOrdersAccount.baseTokenFree.toNumber() === 0) {\n continue;\n }\n const dexSigner = yield web3_js_1.PublicKey.createProgramAddress([\n spotMarket.publicKey.toBuffer(),\n spotMarket['_decoded'].vaultSignerNonce.toArrayLike(Buffer, 'le', 8),\n ], spotMarket.programId);\n if (!mangoGroup.rootBankAccounts.length) {\n yield mangoGroup.loadRootBanks(this.connection);\n }\n const baseRootBank = mangoGroup.rootBankAccounts[i];\n const quoteRootBank = mangoGroup.rootBankAccounts[layout_1.QUOTE_INDEX];\n const baseNodeBank = baseRootBank === null || baseRootBank === void 0 ? void 0 : baseRootBank.nodeBankAccounts[0];\n const quoteNodeBank = quoteRootBank === null || quoteRootBank === void 0 ? void 0 : quoteRootBank.nodeBankAccounts[0];\n if (!baseNodeBank || !quoteNodeBank) {\n throw new Error('Invalid or missing node banks');\n }\n const instruction = (0, instruction_1.makeSettleFundsInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, owner.publicKey, mangoAccount.publicKey, spotMarket.programId, spotMarket.publicKey, mangoAccount.spotOpenOrders[i], mangoGroup.signerKey, spotMarket['_decoded'].baseVault, spotMarket['_decoded'].quoteVault, mangoGroup.tokens[i].rootBank, baseNodeBank.publicKey, mangoGroup.tokens[layout_1.QUOTE_INDEX].rootBank, quoteNodeBank.publicKey, baseNodeBank.vault, quoteNodeBank.vault, dexSigner);\n transaction.add(instruction);\n transactions.push(transaction);\n }\n const signers = [];\n const transactionsAndSigners = transactions.map((tx) => ({\n transaction: tx,\n signers,\n }));\n const currentBlockhash = yield this.getCurrentBlockhash();\n const signedTransactions = yield this.signTransactions({\n transactionsAndSigners,\n payer: owner,\n currentBlockhash,\n });\n const txids = [];\n if (signedTransactions) {\n for (const signedTransaction of signedTransactions) {\n if (signedTransaction.instructions.length == 0) {\n continue;\n }\n const txid = yield this.sendSignedTransaction({\n signedTransaction,\n signedAtBlock: currentBlockhash,\n });\n txids.push(txid);\n }\n }\n else {\n throw new Error('Unable to sign Settle All transaction');\n }\n return txids;\n });\n }\n fetchTopPnlAccountsFromRPC(mangoGroup, mangoCache, perpMarket, price, // should be the MangoCache price\n sign, mangoAccounts) {\n return __awaiter(this, void 0, void 0, function* () {\n const marketIndex = mangoGroup.getPerpMarketIndex(perpMarket.publicKey);\n const perpMarketInfo = mangoGroup.perpMarkets[marketIndex];\n if (mangoAccounts === undefined) {\n mangoAccounts = yield this.getAllMangoAccounts(mangoGroup, [], false);\n }\n return mangoAccounts\n .map((m) => ({\n publicKey: m.publicKey,\n pnl: m.perpAccounts[marketIndex].getPnl(perpMarketInfo, mangoCache.perpMarketCache[marketIndex], price),\n }))\n .sort((a, b) => sign * a.pnl.cmp(b.pnl));\n });\n }\n fetchTopPnlAccountsFromDB(mangoGroup, perpMarket, sign) {\n return __awaiter(this, void 0, void 0, function* () {\n const marketIndex = mangoGroup.getPerpMarketIndex(perpMarket.publicKey);\n const order = sign === 1 ? 'ASC' : 'DESC';\n const response = yield (0, cross_fetch_1.default)(`https://mango-transaction-log.herokuapp.com/v3/stats/ranked-pnl?market-index=${marketIndex}&order=${order}&limit=20`);\n const data = yield response.json();\n return data.map((m) => ({\n publicKey: new web3_js_1.PublicKey(m.pubkey),\n pnl: fixednum_1.I80F48.fromNumber(m.pnl),\n }));\n });\n }\n /**\n * Automatically fetch MangoAccounts for this PerpMarket\n * Pick enough MangoAccounts that have opposite sign and send them in to get settled\n */\n settlePnl(mangoGroup, mangoCache, mangoAccount, perpMarket, quoteRootBank, price, // should be the MangoCache price\n owner, mangoAccounts) {\n return __awaiter(this, void 0, void 0, function* () {\n const marketIndex = mangoGroup.getPerpMarketIndex(perpMarket.publicKey);\n const perpMarketInfo = mangoGroup.perpMarkets[marketIndex];\n let pnl = mangoAccount.perpAccounts[marketIndex].getPnl(perpMarketInfo, mangoCache.perpMarketCache[marketIndex], price);\n const transaction = new web3_js_1.Transaction();\n const additionalSigners = [];\n let sign;\n if (pnl.eq(fixednum_1.ZERO_I80F48)) {\n // Can't settle pnl if there is no pnl\n return null;\n }\n else if (pnl.gt(fixednum_1.ZERO_I80F48)) {\n sign = 1;\n }\n else {\n // Can settle fees first against perpmarket\n sign = -1;\n if (!quoteRootBank.nodeBankAccounts) {\n yield quoteRootBank.loadNodeBanks(this.connection);\n }\n const settleFeesInstr = (0, instruction_1.makeSettleFeesInstruction)(this.programId, mangoGroup.publicKey, mangoCache.publicKey, perpMarket.publicKey, mangoAccount.publicKey, quoteRootBank.publicKey, quoteRootBank.nodeBanks[0], quoteRootBank.nodeBankAccounts[0].vault, mangoGroup.feesVault, mangoGroup.signerKey);\n transaction.add(settleFeesInstr);\n pnl = pnl.add(perpMarket.feesAccrued).min(fixednum_1.I80F48.fromString('-0.000001'));\n const remSign = pnl.gt(fixednum_1.ZERO_I80F48) ? 1 : -1;\n if (remSign !== sign) {\n // if pnl has changed sign, then we're done\n return yield this.sendTransaction(transaction, owner, additionalSigners);\n }\n }\n // we don't maintain an off chain service for finding accounts for\n // devnet, so use fetchTopPnlAccountsFromDB only for mainnet\n let accountsWithPnl;\n if (this.isMainnet()) {\n try {\n accountsWithPnl = yield this.fetchTopPnlAccountsFromDB(mangoGroup, perpMarket, sign);\n }\n catch (e) {\n console.error(`fetchTopPnlAccountsFromDB failed, ${e}`);\n }\n }\n // if not set, then always fallback\n if (!accountsWithPnl) {\n accountsWithPnl = yield this.fetchTopPnlAccountsFromRPC(mangoGroup, mangoCache, perpMarket, price, sign, mangoAccounts);\n }\n for (const account of accountsWithPnl) {\n // ignore own account explicitly\n if (account.publicKey.equals(mangoAccount.publicKey)) {\n continue;\n }\n if (((pnl.isPos() && account.pnl.isNeg()) ||\n (pnl.isNeg() && account.pnl.isPos())) &&\n transaction.instructions.length < 10) {\n // Account pnl must have opposite signs\n const instr = (0, instruction_1.makeSettlePnlInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, account.publicKey, mangoGroup.mangoCache, quoteRootBank.publicKey, quoteRootBank.nodeBanks[0], new bn_js_1.default(marketIndex));\n transaction.add(instr);\n pnl = pnl.add(account.pnl);\n // if pnl has changed sign, then we're done\n const remSign = pnl.gt(fixednum_1.ZERO_I80F48) ? 1 : -1;\n if (remSign !== sign) {\n break;\n }\n }\n else {\n // means we ran out of accounts to settle against (shouldn't happen) OR transaction too big\n // TODO - create a multi tx to be signed by user\n continue;\n }\n }\n return yield this.sendTransaction(transaction, owner, additionalSigners);\n // Calculate the profit or loss per market\n });\n }\n /**\n * Settle all perp accounts with positive pnl\n */\n settlePosPnl(mangoGroup, mangoCache, mangoAccount, perpMarkets, quoteRootBank, owner, mangoAccounts) {\n return __awaiter(this, void 0, void 0, function* () {\n // fetch all MangoAccounts filtered for having this perp market in basket\n // only if we didn't fetch them already or have the settlePnl service connected\n if (mangoAccounts === undefined && !this.isMainnet()) {\n mangoAccounts = yield this.getAllMangoAccounts(mangoGroup, [], false);\n }\n const signatures = yield Promise.all(perpMarkets.map((pm) => {\n const marketIndex = mangoGroup.getPerpMarketIndex(pm.publicKey);\n const perpMarketInfo = mangoGroup.perpMarkets[marketIndex];\n const price = mangoCache.getPrice(marketIndex);\n const pnl = mangoAccount.perpAccounts[marketIndex].getPnl(perpMarketInfo, mangoCache.perpMarketCache[marketIndex], price);\n return pnl.isPos()\n ? this.settlePnl(mangoGroup, mangoCache, mangoAccount, pm, quoteRootBank, mangoCache.getPrice(marketIndex), owner, mangoAccounts)\n : (0, utils_1.promiseNull)();\n }));\n function filterNulls(value) {\n if (value === null)\n return false;\n return true;\n }\n const filtered = signatures === null || signatures === void 0 ? void 0 : signatures.filter(filterNulls);\n return (filtered === null || filtered === void 0 ? void 0 : filtered.length) ? filtered : undefined;\n });\n }\n /**\n * Settle all perp accounts with any pnl\n */\n settleAllPerpPnl(mangoGroup, mangoCache, mangoAccount, perpMarkets, quoteRootBank, owner, mangoAccounts) {\n return __awaiter(this, void 0, void 0, function* () {\n // fetch all MangoAccounts filtered for having this perp market in basket\n // only if we didn't fetch them already or have the settlePnl service connected\n if (mangoAccounts === undefined && !this.isMainnet()) {\n mangoAccounts = yield this.getAllMangoAccounts(mangoGroup, [], false);\n }\n return yield Promise.all(perpMarkets.map((pm) => {\n const marketIndex = mangoGroup.getPerpMarketIndex(pm.publicKey);\n const perpMarketInfo = mangoGroup.perpMarkets[marketIndex];\n const price = mangoCache.getPrice(marketIndex);\n const pnl = mangoAccount.perpAccounts[marketIndex].getPnl(perpMarketInfo, mangoCache.perpMarketCache[marketIndex], price);\n return !pnl.isZero()\n ? this.settlePnl(mangoGroup, mangoCache, mangoAccount, pm, quoteRootBank, mangoCache.getPrice(marketIndex), owner, mangoAccounts)\n : (0, utils_1.promiseNull)();\n }));\n });\n }\n getMangoAccountsForOwner(mangoGroup, owner, includeOpenOrders = false) {\n const filters = [\n {\n memcmp: {\n offset: layout_1.MangoAccountLayout.offsetOf('owner'),\n bytes: owner.toBase58(),\n },\n },\n ];\n return this.getAllMangoAccounts(mangoGroup, filters, includeOpenOrders);\n }\n /**\n * Get all MangoAccounts where `delegate` pubkey has authority\n */\n getMangoAccountsForDelegate(mangoGroup, delegate, includeOpenOrders = false) {\n const filters = [\n {\n memcmp: {\n offset: layout_1.MangoAccountLayout.offsetOf('delegate'),\n bytes: delegate.toBase58(),\n },\n },\n ];\n return this.getAllMangoAccounts(mangoGroup, filters, includeOpenOrders);\n }\n getAllMangoAccounts(mangoGroup, filters, includeOpenOrders = true) {\n return __awaiter(this, void 0, void 0, function* () {\n const accountFilters = [\n {\n memcmp: {\n offset: layout_1.MangoAccountLayout.offsetOf('mangoGroup'),\n bytes: mangoGroup.publicKey.toBase58(),\n },\n },\n {\n dataSize: layout_1.MangoAccountLayout.span,\n },\n ];\n if (filters && filters.length) {\n accountFilters.push(...filters);\n }\n const mangoAccounts = yield (0, utils_1.getFilteredProgramAccounts)(this.connection, this.programId, accountFilters).then((accounts) => accounts.map(({ publicKey, accountInfo }) => {\n return new MangoAccount_1.default(publicKey, layout_1.MangoAccountLayout.decode(accountInfo == null ? undefined : accountInfo.data));\n }));\n if (includeOpenOrders) {\n const openOrderPks = mangoAccounts\n .map((ma) => ma.spotOpenOrders.filter((pk) => !pk.equals(utils_1.zeroKey)))\n .flat();\n const openOrderAccountInfos = yield (0, utils_1.getMultipleAccounts)(this.connection, openOrderPks);\n const openOrders = openOrderAccountInfos.map(({ publicKey, accountInfo }) => serum_1.OpenOrders.fromAccountInfo(publicKey, accountInfo, mangoGroup.dexProgramId));\n const pkToOpenOrdersAccount = {};\n openOrders.forEach((openOrdersAccount) => {\n pkToOpenOrdersAccount[openOrdersAccount.publicKey.toBase58()] =\n openOrdersAccount;\n });\n for (const ma of mangoAccounts) {\n for (let i = 0; i < ma.spotOpenOrders.length; i++) {\n if (ma.spotOpenOrders[i].toBase58() in pkToOpenOrdersAccount) {\n ma.spotOpenOrdersAccounts[i] =\n pkToOpenOrdersAccount[ma.spotOpenOrders[i].toBase58()];\n }\n }\n }\n }\n return mangoAccounts;\n });\n }\n addStubOracle(mangoGroupPk, admin) {\n return __awaiter(this, void 0, void 0, function* () {\n const createOracleAccountInstruction = yield (0, utils_1.createAccountInstruction)(this.connection, admin.publicKey, layout_1.StubOracleLayout.span, this.programId);\n const instruction = (0, instruction_1.makeAddOracleInstruction)(this.programId, mangoGroupPk, createOracleAccountInstruction.account.publicKey, admin.publicKey);\n const transaction = new web3_js_1.Transaction();\n transaction.add(createOracleAccountInstruction.instruction);\n transaction.add(instruction);\n const additionalSigners = [createOracleAccountInstruction.account];\n return yield this.sendTransaction(transaction, admin, additionalSigners);\n });\n }\n setStubOracle(mangoGroupPk, oraclePk, admin, price) {\n return __awaiter(this, void 0, void 0, function* () {\n const instruction = (0, instruction_1.makeSetOracleInstruction)(this.programId, mangoGroupPk, oraclePk, admin.publicKey, fixednum_1.I80F48.fromNumber(price));\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, admin, additionalSigners);\n });\n }\n addPerpMarket(mangoGroup, oraclePk, mngoMintPk, admin, maintLeverage, initLeverage, liquidationFee, makerFee, takerFee, baseLotSize, quoteLotSize, maxNumEvents, rate, // liquidity mining params; set rate == 0 if no liq mining\n maxDepthBps, targetPeriodLength, mngoPerPeriod, exp) {\n return __awaiter(this, void 0, void 0, function* () {\n const makePerpMarketAccountInstruction = yield (0, utils_1.createAccountInstruction)(this.connection, admin.publicKey, layout_1.PerpMarketLayout.span, this.programId);\n const makeEventQueueAccountInstruction = yield (0, utils_1.createAccountInstruction)(this.connection, admin.publicKey, layout_1.PerpEventQueueHeaderLayout.span + maxNumEvents * layout_1.PerpEventLayout.span, this.programId);\n const makeBidAccountInstruction = yield (0, utils_1.createAccountInstruction)(this.connection, admin.publicKey, layout_1.BookSideLayout.span, this.programId);\n const makeAskAccountInstruction = yield (0, utils_1.createAccountInstruction)(this.connection, admin.publicKey, layout_1.BookSideLayout.span, this.programId);\n const mngoVaultAccount = new web3_js_1.Keypair();\n const mngoVaultAccountInstructions = yield (0, utils_1.createTokenAccountInstructions)(this.connection, admin.publicKey, mngoVaultAccount.publicKey, mngoMintPk, mangoGroup.signerKey);\n const instruction = yield (0, instruction_1.makeAddPerpMarketInstruction)(this.programId, mangoGroup.publicKey, oraclePk, makePerpMarketAccountInstruction.account.publicKey, makeEventQueueAccountInstruction.account.publicKey, makeBidAccountInstruction.account.publicKey, makeAskAccountInstruction.account.publicKey, mngoVaultAccount.publicKey, admin.publicKey, fixednum_1.I80F48.fromNumber(maintLeverage), fixednum_1.I80F48.fromNumber(initLeverage), fixednum_1.I80F48.fromNumber(liquidationFee), fixednum_1.I80F48.fromNumber(makerFee), fixednum_1.I80F48.fromNumber(takerFee), new bn_js_1.default(baseLotSize), new bn_js_1.default(quoteLotSize), fixednum_1.I80F48.fromNumber(rate), fixednum_1.I80F48.fromNumber(maxDepthBps), new bn_js_1.default(targetPeriodLength), new bn_js_1.default(mngoPerPeriod), new bn_js_1.default(exp));\n const createMngoVaultTransaction = new web3_js_1.Transaction();\n createMngoVaultTransaction.add(...mngoVaultAccountInstructions);\n yield this.sendTransaction(createMngoVaultTransaction, admin, [\n mngoVaultAccount,\n ]);\n const transaction = new web3_js_1.Transaction();\n transaction.add(makePerpMarketAccountInstruction.instruction);\n transaction.add(makeEventQueueAccountInstruction.instruction);\n transaction.add(makeBidAccountInstruction.instruction);\n transaction.add(makeAskAccountInstruction.instruction);\n transaction.add(instruction);\n const additionalSigners = [\n makePerpMarketAccountInstruction.account,\n makeEventQueueAccountInstruction.account,\n makeBidAccountInstruction.account,\n makeAskAccountInstruction.account,\n ];\n return yield this.sendTransaction(transaction, admin, additionalSigners);\n });\n }\n createPerpMarket(mangoGroup, oraclePk, mngoMintPk, admin, maintLeverage, initLeverage, liquidationFee, makerFee, takerFee, baseLotSize, quoteLotSize, maxNumEvents, rate, // liquidity mining params; set rate == 0 if no liq mining\n maxDepthBps, targetPeriodLength, mngoPerPeriod, exp, version, lmSizeShift, baseDecimals) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!admin.publicKey) {\n return;\n }\n const [perpMarketPk] = yield web3_js_1.PublicKey.findProgramAddress([\n mangoGroup.publicKey.toBytes(),\n new Buffer('PerpMarket', 'utf-8'),\n oraclePk.toBytes(),\n ], this.programId);\n const makeEventQueueAccountInstruction = yield (0, utils_1.createAccountInstruction)(this.connection, admin.publicKey, layout_1.PerpEventQueueHeaderLayout.span + maxNumEvents * layout_1.PerpEventLayout.span, this.programId);\n const makeBidAccountInstruction = yield (0, utils_1.createAccountInstruction)(this.connection, admin.publicKey, layout_1.BookSideLayout.span, this.programId);\n const makeAskAccountInstruction = yield (0, utils_1.createAccountInstruction)(this.connection, admin.publicKey, layout_1.BookSideLayout.span, this.programId);\n const [mngoVaultPk] = yield web3_js_1.PublicKey.findProgramAddress([\n perpMarketPk.toBytes(),\n spl_token_1.TOKEN_PROGRAM_ID.toBytes(),\n mngoMintPk.toBytes(),\n ], this.programId);\n const instruction = yield (0, instruction_1.makeCreatePerpMarketInstruction)(this.programId, mangoGroup.publicKey, oraclePk, perpMarketPk, makeEventQueueAccountInstruction.account.publicKey, makeBidAccountInstruction.account.publicKey, makeAskAccountInstruction.account.publicKey, mngoMintPk, mngoVaultPk, admin.publicKey, mangoGroup.signerKey, fixednum_1.I80F48.fromNumber(maintLeverage), fixednum_1.I80F48.fromNumber(initLeverage), fixednum_1.I80F48.fromNumber(liquidationFee), fixednum_1.I80F48.fromNumber(makerFee), fixednum_1.I80F48.fromNumber(takerFee), new bn_js_1.default(baseLotSize), new bn_js_1.default(quoteLotSize), fixednum_1.I80F48.fromNumber(rate), fixednum_1.I80F48.fromNumber(maxDepthBps), new bn_js_1.default(targetPeriodLength), new bn_js_1.default(mngoPerPeriod), new bn_js_1.default(exp), new bn_js_1.default(version), new bn_js_1.default(lmSizeShift), new bn_js_1.default(baseDecimals));\n const transaction = new web3_js_1.Transaction();\n transaction.add(makeEventQueueAccountInstruction.instruction);\n transaction.add(makeBidAccountInstruction.instruction);\n transaction.add(makeAskAccountInstruction.instruction);\n transaction.add(instruction);\n const additionalSigners = [\n makeEventQueueAccountInstruction.account,\n makeBidAccountInstruction.account,\n makeAskAccountInstruction.account,\n ];\n return yield this.sendTransaction(transaction, admin, additionalSigners);\n });\n }\n // Liquidator Functions\n forceCancelSpotOrders(mangoGroup, liqeeMangoAccount, spotMarket, baseRootBank, quoteRootBank, payer, limit) {\n return __awaiter(this, void 0, void 0, function* () {\n const baseNodeBanks = yield baseRootBank.loadNodeBanks(this.connection);\n const quoteNodeBanks = yield quoteRootBank.loadNodeBanks(this.connection);\n const openOrdersKeys = [];\n const spotMarketIndex = mangoGroup.getSpotMarketIndex(spotMarket.publicKey);\n // Only pass in open orders if in margin basket or current market index, and\n // the only writable account should be OpenOrders for current market index\n for (let i = 0; i < liqeeMangoAccount.spotOpenOrders.length; i++) {\n let pubkey = utils_1.zeroKey;\n let isWritable = false;\n if (i === spotMarketIndex) {\n isWritable = true;\n if (liqeeMangoAccount.spotOpenOrders[spotMarketIndex].equals(utils_1.zeroKey)) {\n console.log('missing oo for ', spotMarketIndex);\n // open orders missing for this market; create a new one now\n // const openOrdersSpace = OpenOrders.getLayout(\n // mangoGroup.dexProgramId,\n // ).span;\n // const openOrdersLamports =\n // await this.connection.getMinimumBalanceForRentExemption(\n // openOrdersSpace,\n // 'singleGossip',\n // );\n // const accInstr = await createAccountInstruction(\n // this.connection,\n // owner.publicKey,\n // openOrdersSpace,\n // mangoGroup.dexProgramId,\n // openOrdersLamports,\n // );\n // transaction.add(accInstr.instruction);\n // additionalSigners.push(accInstr.account);\n // pubkey = accInstr.account.publicKey;\n }\n else {\n pubkey = liqeeMangoAccount.spotOpenOrders[i];\n }\n }\n else if (liqeeMangoAccount.inMarginBasket[i]) {\n pubkey = liqeeMangoAccount.spotOpenOrders[i];\n }\n openOrdersKeys.push({ pubkey, isWritable });\n }\n const dexSigner = yield web3_js_1.PublicKey.createProgramAddress([\n spotMarket.publicKey.toBuffer(),\n spotMarket['_decoded'].vaultSignerNonce.toArrayLike(Buffer, 'le', 8),\n ], spotMarket.programId);\n const instruction = (0, instruction_1.makeForceCancelSpotOrdersInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, liqeeMangoAccount.publicKey, baseRootBank.publicKey, baseNodeBanks[0].publicKey, baseNodeBanks[0].vault, quoteRootBank.publicKey, quoteNodeBanks[0].publicKey, quoteNodeBanks[0].vault, spotMarket.publicKey, spotMarket.bidsAddress, spotMarket.asksAddress, mangoGroup.signerKey, spotMarket['_decoded'].eventQueue, spotMarket['_decoded'].baseVault, spotMarket['_decoded'].quoteVault, dexSigner, mangoGroup.dexProgramId, openOrdersKeys, limit);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n return yield this.sendTransaction(transaction, payer, []);\n });\n }\n /**\n * Send multiple instructions to cancel all perp orders in this market\n */\n forceCancelAllPerpOrdersInMarket(mangoGroup, liqee, perpMarket, payer, limitPerInstruction) {\n return __awaiter(this, void 0, void 0, function* () {\n const transaction = new web3_js_1.Transaction();\n const marketIndex = mangoGroup.getPerpMarketIndex(perpMarket.publicKey);\n const instruction = (0, instruction_1.makeForceCancelPerpOrdersInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, perpMarket.publicKey, perpMarket.bids, perpMarket.asks, liqee.publicKey, liqee.spotOpenOrders, new bn_js_1.default(limitPerInstruction));\n transaction.add(instruction);\n let orderCount = 0;\n for (let i = 0; i < liqee.orderMarket.length; i++) {\n if (liqee.orderMarket[i] !== marketIndex) {\n continue;\n }\n orderCount++;\n if (orderCount === limitPerInstruction) {\n orderCount = 0;\n const instruction = (0, instruction_1.makeForceCancelPerpOrdersInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, perpMarket.publicKey, perpMarket.bids, perpMarket.asks, liqee.publicKey, liqee.spotOpenOrders, new bn_js_1.default(limitPerInstruction));\n transaction.add(instruction);\n // TODO - verify how many such instructions can go into one tx\n // right now 10 seems reasonable considering size of 800ish bytes if all spot open orders present\n if (transaction.instructions.length === 10) {\n break;\n }\n }\n }\n return yield this.sendTransaction(transaction, payer, []);\n });\n }\n forceCancelPerpOrders(mangoGroup, liqeeMangoAccount, perpMarket, payer, limit) {\n return __awaiter(this, void 0, void 0, function* () {\n const instruction = (0, instruction_1.makeForceCancelPerpOrdersInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, perpMarket.publicKey, perpMarket.bids, perpMarket.asks, liqeeMangoAccount.publicKey, liqeeMangoAccount.spotOpenOrders, limit);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n return yield this.sendTransaction(transaction, payer, []);\n });\n }\n liquidateTokenAndToken(mangoGroup, liqeeMangoAccount, liqorMangoAccount, assetRootBank, liabRootBank, payer, maxLiabTransfer) {\n return __awaiter(this, void 0, void 0, function* () {\n const instruction = (0, instruction_1.makeLiquidateTokenAndTokenInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, liqeeMangoAccount.publicKey, liqorMangoAccount.publicKey, payer.publicKey, assetRootBank.publicKey, assetRootBank.nodeBanks[0], liabRootBank.publicKey, liabRootBank.nodeBanks[0], liqeeMangoAccount.getOpenOrdersKeysInBasket(), liqorMangoAccount.getOpenOrdersKeysInBasket(), maxLiabTransfer);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n return yield this.sendTransaction(transaction, payer, []);\n });\n }\n liquidateTokenAndPerp(mangoGroup, liqeeMangoAccount, liqorMangoAccount, rootBank, payer, assetType, assetIndex, liabType, liabIndex, maxLiabTransfer) {\n return __awaiter(this, void 0, void 0, function* () {\n const instruction = (0, instruction_1.makeLiquidateTokenAndPerpInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, liqeeMangoAccount.publicKey, liqorMangoAccount.publicKey, payer.publicKey, rootBank.publicKey, rootBank.nodeBanks[0], liqeeMangoAccount.getOpenOrdersKeysInBasket(), liqorMangoAccount.getOpenOrdersKeysInBasket(), assetType, new bn_js_1.default(assetIndex), liabType, new bn_js_1.default(liabIndex), maxLiabTransfer);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n return yield this.sendTransaction(transaction, payer, []);\n });\n }\n liquidatePerpMarket(mangoGroup, liqeeMangoAccount, liqorMangoAccount, perpMarket, payer, baseTransferRequest) {\n return __awaiter(this, void 0, void 0, function* () {\n const instruction = (0, instruction_1.makeLiquidatePerpMarketInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, perpMarket.publicKey, perpMarket.eventQueue, liqeeMangoAccount.publicKey, liqorMangoAccount.publicKey, payer.publicKey, liqeeMangoAccount.getOpenOrdersKeysInBasket(), liqorMangoAccount.getOpenOrdersKeysInBasket(), baseTransferRequest);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n return yield this.sendTransaction(transaction, payer, []);\n });\n }\n settleFees(mangoGroup, mangoAccount, perpMarket, rootBank, payer) {\n return __awaiter(this, void 0, void 0, function* () {\n const nodeBanks = yield rootBank.loadNodeBanks(this.connection);\n const instruction = (0, instruction_1.makeSettleFeesInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, perpMarket.publicKey, mangoAccount.publicKey, rootBank.publicKey, nodeBanks[0].publicKey, nodeBanks[0].vault, mangoGroup.feesVault, mangoGroup.signerKey);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n return yield this.sendTransaction(transaction, payer, []);\n });\n }\n resolvePerpBankruptcy(mangoGroup, liqeeMangoAccount, liqorMangoAccount, perpMarket, rootBank, payer, liabIndex, maxLiabTransfer) {\n return __awaiter(this, void 0, void 0, function* () {\n const nodeBanks = yield rootBank.loadNodeBanks(this.connection);\n const instruction = (0, instruction_1.makeResolvePerpBankruptcyInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, liqeeMangoAccount.publicKey, liqorMangoAccount.publicKey, payer.publicKey, rootBank.publicKey, nodeBanks[0].publicKey, nodeBanks[0].vault, mangoGroup.insuranceVault, mangoGroup.signerKey, perpMarket.publicKey, liqorMangoAccount.spotOpenOrders, new bn_js_1.default(liabIndex), maxLiabTransfer);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n return yield this.sendTransaction(transaction, payer, []);\n });\n }\n resolveTokenBankruptcy(mangoGroup, liqeeMangoAccount, liqorMangoAccount, quoteRootBank, liabRootBank, payer, maxLiabTransfer) {\n return __awaiter(this, void 0, void 0, function* () {\n const quoteNodeBanks = yield quoteRootBank.loadNodeBanks(this.connection);\n const instruction = (0, instruction_1.makeResolveTokenBankruptcyInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, liqeeMangoAccount.publicKey, liqorMangoAccount.publicKey, payer.publicKey, quoteRootBank.publicKey, quoteRootBank.nodeBanks[0], quoteNodeBanks[0].vault, mangoGroup.insuranceVault, mangoGroup.signerKey, liabRootBank.publicKey, liabRootBank.nodeBanks[0], liqorMangoAccount.spotOpenOrders, liabRootBank.nodeBanks, maxLiabTransfer);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n return yield this.sendTransaction(transaction, payer, []);\n });\n }\n redeemMngo(mangoGroup, mangoAccount, perpMarket, payer, mngoRootBank, mngoNodeBank, mngoVault) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!payer.publicKey) {\n return;\n }\n const instruction = (0, instruction_1.makeRedeemMngoInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, mangoAccount.publicKey, payer.publicKey, perpMarket.publicKey, perpMarket.mngoVault, mngoRootBank, mngoNodeBank, mngoVault, mangoGroup.signerKey);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n return yield this.sendTransaction(transaction, payer, []);\n });\n }\n redeemAllMngo(mangoGroup, mangoAccount, payer, mngoRootBank, mngoNodeBank, mngoVault) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!payer.publicKey) {\n return;\n }\n const transactions = [];\n let transaction = new web3_js_1.Transaction();\n const perpMarkets = yield Promise.all(mangoAccount.perpAccounts.map((perpAccount, i) => {\n if (perpAccount.mngoAccrued.eq(utils_1.ZERO_BN)) {\n return (0, utils_1.promiseUndef)();\n }\n else {\n return this.getPerpMarket(mangoGroup.perpMarkets[i].perpMarket, mangoGroup.tokens[i].decimals, mangoGroup.tokens[layout_1.QUOTE_INDEX].decimals);\n }\n }));\n for (let i = 0; i < mangoAccount.perpAccounts.length; i++) {\n const perpMarket = perpMarkets[i];\n if (perpMarket === undefined)\n continue;\n const instruction = (0, instruction_1.makeRedeemMngoInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, mangoAccount.publicKey, payer.publicKey, perpMarket.publicKey, perpMarket.mngoVault, mngoRootBank, mngoNodeBank, mngoVault, mangoGroup.signerKey);\n transaction.add(instruction);\n if (transaction.instructions.length === 9) {\n transactions.push(transaction);\n transaction = new web3_js_1.Transaction();\n }\n }\n if (transaction.instructions.length > 0) {\n transactions.push(transaction);\n // txProms.push(this.sendTransaction(transaction, payer, []));\n }\n const transactionsAndSigners = transactions.map((tx) => ({\n transaction: tx,\n signers: [],\n }));\n if (transactionsAndSigners.length === 0) {\n throw new Error('No MNGO rewards to redeem');\n }\n const currentBlockhash = yield this.getCurrentBlockhash();\n const signedTransactions = yield this.signTransactions({\n transactionsAndSigners,\n payer,\n currentBlockhash,\n });\n if (signedTransactions) {\n const txSigs = yield Promise.all(signedTransactions.map((signedTransaction) => this.sendSignedTransaction({\n signedTransaction,\n signedAtBlock: currentBlockhash,\n })));\n return txSigs;\n }\n else {\n throw new Error('Unable to sign all RedeemMngo transactions');\n }\n });\n }\n addMangoAccountInfo(mangoGroup, mangoAccount, owner, info) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const instruction = (0, instruction_1.makeAddMangoAccountInfoInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, info);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, owner, additionalSigners);\n });\n }\n depositMsrm(mangoGroup, mangoAccount, owner, msrmAccount, quantity) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const instruction = (0, instruction_1.makeDepositMsrmInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, msrmAccount, mangoGroup.msrmVault, new bn_js_1.default(Math.floor(quantity)));\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, owner, additionalSigners);\n });\n }\n withdrawMsrm(mangoGroup, mangoAccount, owner, msrmAccount, quantity) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const instruction = (0, instruction_1.makeWithdrawMsrmInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, msrmAccount, mangoGroup.msrmVault, mangoGroup.signerKey, new bn_js_1.default(Math.floor(quantity)));\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, owner, additionalSigners);\n });\n }\n changePerpMarketParams(mangoGroup, perpMarket, admin, maintLeverage, initLeverage, liquidationFee, makerFee, takerFee, rate, maxDepthBps, targetPeriodLength, mngoPerPeriod, exp) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!admin.publicKey) {\n return;\n }\n const instruction = (0, instruction_1.makeChangePerpMarketParamsInstruction)(this.programId, mangoGroup.publicKey, perpMarket.publicKey, admin.publicKey, fixednum_1.I80F48.fromNumberOrUndef(maintLeverage), fixednum_1.I80F48.fromNumberOrUndef(initLeverage), fixednum_1.I80F48.fromNumberOrUndef(liquidationFee), fixednum_1.I80F48.fromNumberOrUndef(makerFee), fixednum_1.I80F48.fromNumberOrUndef(takerFee), fixednum_1.I80F48.fromNumberOrUndef(rate), fixednum_1.I80F48.fromNumberOrUndef(maxDepthBps), targetPeriodLength !== undefined ? new bn_js_1.default(targetPeriodLength) : undefined, mngoPerPeriod !== undefined ? new bn_js_1.default(mngoPerPeriod) : undefined, exp !== undefined ? new bn_js_1.default(exp) : undefined);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, admin, additionalSigners);\n });\n }\n changePerpMarketParams2(mangoGroup, perpMarket, admin, maintLeverage, initLeverage, liquidationFee, makerFee, takerFee, rate, maxDepthBps, targetPeriodLength, mngoPerPeriod, exp, version, lmSizeShift) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!admin.publicKey) {\n return;\n }\n const instruction = (0, instruction_1.makeChangePerpMarketParams2Instruction)(this.programId, mangoGroup.publicKey, perpMarket.publicKey, admin.publicKey, fixednum_1.I80F48.fromNumberOrUndef(maintLeverage), fixednum_1.I80F48.fromNumberOrUndef(initLeverage), fixednum_1.I80F48.fromNumberOrUndef(liquidationFee), fixednum_1.I80F48.fromNumberOrUndef(makerFee), fixednum_1.I80F48.fromNumberOrUndef(takerFee), fixednum_1.I80F48.fromNumberOrUndef(rate), fixednum_1.I80F48.fromNumberOrUndef(maxDepthBps), targetPeriodLength !== undefined ? new bn_js_1.default(targetPeriodLength) : undefined, mngoPerPeriod !== undefined ? new bn_js_1.default(mngoPerPeriod) : undefined, exp !== undefined ? new bn_js_1.default(exp) : undefined, version !== undefined ? new bn_js_1.default(version) : undefined, lmSizeShift !== undefined ? new bn_js_1.default(lmSizeShift) : undefined);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, admin, additionalSigners);\n });\n }\n setGroupAdmin(mangoGroup, newAdmin, admin) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!admin.publicKey) {\n return;\n }\n const instruction = (0, instruction_1.makeSetGroupAdminInstruction)(this.programId, mangoGroup.publicKey, newAdmin, admin.publicKey);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, admin, additionalSigners);\n });\n }\n /**\n * Add allowance for orders to be cancelled and replaced in a single transaction\n */\n modifySpotOrder(mangoGroup, mangoAccount, mangoCache, spotMarket, owner, order, side, price, size, orderType) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const transaction = new web3_js_1.Transaction();\n const instruction = (0, instruction_1.makeCancelSpotOrderInstruction)(this.programId, mangoGroup.publicKey, owner.publicKey, mangoAccount.publicKey, spotMarket.programId, spotMarket.publicKey, spotMarket['_decoded'].bids, spotMarket['_decoded'].asks, order.openOrdersAddress, mangoGroup.signerKey, spotMarket['_decoded'].eventQueue, order);\n transaction.add(instruction);\n const dexSigner = yield web3_js_1.PublicKey.createProgramAddress([\n spotMarket.publicKey.toBuffer(),\n spotMarket['_decoded'].vaultSignerNonce.toArrayLike(Buffer, 'le', 8),\n ], spotMarket.programId);\n const spotMarketIndex = mangoGroup.getSpotMarketIndex(spotMarket.publicKey);\n if (!mangoGroup.rootBankAccounts.length) {\n yield mangoGroup.loadRootBanks(this.connection);\n }\n const baseRootBank = mangoGroup.rootBankAccounts[spotMarketIndex];\n const baseNodeBank = baseRootBank === null || baseRootBank === void 0 ? void 0 : baseRootBank.nodeBankAccounts[0];\n const quoteRootBank = mangoGroup.rootBankAccounts[layout_1.QUOTE_INDEX];\n const quoteNodeBank = quoteRootBank === null || quoteRootBank === void 0 ? void 0 : quoteRootBank.nodeBankAccounts[0];\n if (!baseNodeBank || !quoteNodeBank) {\n throw new Error('Invalid or missing node banks');\n }\n const settleFundsInstruction = (0, instruction_1.makeSettleFundsInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, owner.publicKey, mangoAccount.publicKey, spotMarket.programId, spotMarket.publicKey, mangoAccount.spotOpenOrders[spotMarketIndex], mangoGroup.signerKey, spotMarket['_decoded'].baseVault, spotMarket['_decoded'].quoteVault, mangoGroup.tokens[spotMarketIndex].rootBank, baseNodeBank.publicKey, mangoGroup.tokens[layout_1.QUOTE_INDEX].rootBank, quoteNodeBank.publicKey, baseNodeBank.vault, quoteNodeBank.vault, dexSigner);\n transaction.add(settleFundsInstruction);\n const additionalSigners = [];\n const limitPrice = spotMarket.priceNumberToLots(price);\n const maxBaseQuantity = spotMarket.baseSizeNumberToLots(size);\n // TODO implement srm vault fee discount\n // const feeTier = getFeeTier(0, nativeToUi(mangoGroup.nativeSrm || 0, SRM_DECIMALS));\n const feeTier = (0, serum_1.getFeeTier)(0, (0, utils_1.nativeToUi)(0, 0));\n const rates = (0, serum_1.getFeeRates)(feeTier);\n const maxQuoteQuantity = new bn_js_1.default(spotMarket['_decoded'].quoteLotSize.toNumber() * (1 + rates.taker)).mul(spotMarket\n .baseSizeNumberToLots(size)\n .mul(spotMarket.priceNumberToLots(price)));\n // Checks already completed as only price modified\n if (maxBaseQuantity.lte(utils_1.ZERO_BN)) {\n throw new Error('size too small');\n }\n if (limitPrice.lte(utils_1.ZERO_BN)) {\n throw new Error('invalid price');\n }\n const selfTradeBehavior = 'decrementTake';\n if (!baseRootBank || !baseNodeBank || !quoteRootBank || !quoteNodeBank) {\n throw new Error('Invalid or missing banks');\n }\n const openOrdersKeys = [];\n // Only pass in open orders if in margin basket or current market index, and\n // the only writable account should be OpenOrders for current market index\n for (let i = 0; i < mangoAccount.spotOpenOrders.length; i++) {\n let pubkey = utils_1.zeroKey;\n let isWritable = false;\n if (i === spotMarketIndex) {\n isWritable = true;\n if (mangoAccount.spotOpenOrders[spotMarketIndex].equals(utils_1.zeroKey)) {\n // open orders missing for this market; create a new one now\n const openOrdersSpace = serum_1.OpenOrders.getLayout(mangoGroup.dexProgramId).span;\n const openOrdersLamports = yield this.connection.getMinimumBalanceForRentExemption(openOrdersSpace, 'processed');\n const accInstr = yield (0, utils_1.createAccountInstruction)(this.connection, owner.publicKey, openOrdersSpace, mangoGroup.dexProgramId, openOrdersLamports);\n const initOpenOrders = (0, instruction_1.makeInitSpotOpenOrdersInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, mangoGroup.dexProgramId, accInstr.account.publicKey, spotMarket.publicKey, mangoGroup.signerKey);\n const initTx = new web3_js_1.Transaction();\n initTx.add(accInstr.instruction);\n initTx.add(initOpenOrders);\n yield this.sendTransaction(initTx, owner, [accInstr.account]);\n pubkey = accInstr.account.publicKey;\n }\n else {\n pubkey = mangoAccount.spotOpenOrders[i];\n }\n }\n else if (mangoAccount.inMarginBasket[i]) {\n pubkey = mangoAccount.spotOpenOrders[i];\n }\n openOrdersKeys.push({ pubkey, isWritable });\n }\n const placeOrderInstruction = (0, instruction_1.makePlaceSpotOrderInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, mangoCache, spotMarket.programId, spotMarket.publicKey, spotMarket['_decoded'].bids, spotMarket['_decoded'].asks, spotMarket['_decoded'].requestQueue, spotMarket['_decoded'].eventQueue, spotMarket['_decoded'].baseVault, spotMarket['_decoded'].quoteVault, baseRootBank.publicKey, baseNodeBank.publicKey, baseNodeBank.vault, quoteRootBank.publicKey, quoteNodeBank.publicKey, quoteNodeBank.vault, mangoGroup.signerKey, dexSigner, mangoGroup.srmVault, // TODO: choose msrm vault if it has any deposits\n openOrdersKeys, side, limitPrice, maxBaseQuantity, maxQuoteQuantity, selfTradeBehavior, orderType, order.clientId);\n transaction.add(placeOrderInstruction);\n if (spotMarketIndex > 0) {\n console.log(spotMarketIndex - 1, mangoAccount.spotOpenOrders[spotMarketIndex - 1].toBase58(), openOrdersKeys[spotMarketIndex - 1].pubkey.toBase58());\n }\n const txid = yield this.sendTransaction(transaction, owner, additionalSigners);\n // update MangoAccount to have new OpenOrders pubkey\n mangoAccount.spotOpenOrders[spotMarketIndex] =\n openOrdersKeys[spotMarketIndex].pubkey;\n mangoAccount.inMarginBasket[spotMarketIndex] = true;\n console.log(spotMarketIndex, mangoAccount.spotOpenOrders[spotMarketIndex].toBase58(), openOrdersKeys[spotMarketIndex].pubkey.toBase58());\n return txid;\n });\n }\n modifyPerpOrder(mangoGroup, mangoAccount, mangoCache, perpMarket, owner, order, side, price, quantity, orderType, clientOrderId, bookSideInfo, // ask if side === bid, bids if side === ask; if this is given; crank instruction is added\n invalidIdOk = false, // Don't throw error if order is invalid\n referrerMangoAccountPk) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const transaction = new web3_js_1.Transaction();\n const additionalSigners = [];\n const cancelInstruction = (0, instruction_1.makeCancelPerpOrderInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, perpMarket.publicKey, perpMarket.bids, perpMarket.asks, order, invalidIdOk);\n transaction.add(cancelInstruction);\n const [nativePrice, nativeQuantity] = perpMarket.uiToNativePriceQuantity(price, quantity);\n const placeInstruction = (0, instruction_1.makePlacePerpOrderInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, mangoCache, perpMarket.publicKey, perpMarket.bids, perpMarket.asks, perpMarket.eventQueue, mangoAccount.spotOpenOrders, nativePrice, nativeQuantity, clientOrderId\n ? new bn_js_1.default(clientOrderId)\n : (_a = order.clientId) !== null && _a !== void 0 ? _a : new bn_js_1.default(Date.now()), side, orderType, false, referrerMangoAccountPk);\n transaction.add(placeInstruction);\n if (bookSideInfo) {\n const bookSide = bookSideInfo.data\n ? new book_1.BookSide(side === 'buy' ? perpMarket.asks : perpMarket.bids, perpMarket, layout_1.BookSideLayout.decode(bookSideInfo.data))\n : [];\n const accounts = new Set();\n accounts.add(mangoAccount.publicKey.toBase58());\n for (const order of bookSide) {\n accounts.add(order.owner.toBase58());\n if (accounts.size >= 10) {\n break;\n }\n }\n const consumeInstruction = (0, instruction_1.makeConsumeEventsInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, perpMarket.publicKey, perpMarket.eventQueue, Array.from(accounts)\n .map((s) => new web3_js_1.PublicKey(s))\n .sort(), new bn_js_1.default(4));\n transaction.add(consumeInstruction);\n }\n return yield this.sendTransaction(transaction, owner, additionalSigners);\n });\n }\n addPerpTriggerOrder(mangoGroup, mangoAccount, perpMarket, owner, orderType, side, price, quantity, triggerCondition, triggerPrice, reduceOnly, clientOrderId) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const transaction = new web3_js_1.Transaction();\n const additionalSigners = [];\n let advancedOrders = mangoAccount.advancedOrdersKey;\n if (mangoAccount.advancedOrdersKey.equals(utils_1.zeroKey)) {\n [advancedOrders] = yield web3_js_1.PublicKey.findProgramAddress([mangoAccount.publicKey.toBytes()], this.programId);\n console.log('AdvancedOrders PDA:', advancedOrders.toBase58());\n transaction.add((0, instruction_1.makeInitAdvancedOrdersInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, advancedOrders));\n }\n const marketIndex = mangoGroup.getPerpMarketIndex(perpMarket.publicKey);\n const baseTokenInfo = mangoGroup.tokens[marketIndex];\n const quoteTokenInfo = mangoGroup.tokens[layout_1.QUOTE_INDEX];\n const baseUnit = Math.pow(10, baseTokenInfo.decimals);\n const quoteUnit = Math.pow(10, quoteTokenInfo.decimals);\n const nativePrice = new bn_js_1.default(price * quoteUnit)\n .mul(perpMarket.baseLotSize)\n .div(perpMarket.quoteLotSize.mul(new bn_js_1.default(baseUnit)));\n const nativeQuantity = new bn_js_1.default(quantity * baseUnit).div(perpMarket.baseLotSize);\n const nativeTriggerPrice = fixednum_1.I80F48.fromNumber(triggerPrice *\n Math.pow(10, perpMarket.quoteDecimals - perpMarket.baseDecimals));\n const openOrders = mangoAccount.spotOpenOrders.filter((pk, i) => mangoAccount.inMarginBasket[i]);\n transaction.add((0, instruction_1.makeAddPerpTriggerOrderInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, advancedOrders, mangoGroup.mangoCache, perpMarket.publicKey, openOrders, orderType, side, nativePrice, nativeQuantity, triggerCondition, nativeTriggerPrice, reduceOnly, new bn_js_1.default(clientOrderId !== null && clientOrderId !== void 0 ? clientOrderId : Date.now())));\n const txid = yield this.sendTransaction(transaction, owner, additionalSigners);\n mangoAccount.advancedOrdersKey = advancedOrders;\n return txid;\n });\n }\n removeAdvancedOrder(mangoGroup, mangoAccount, owner, orderIndex) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey) {\n return;\n }\n const instruction = (0, instruction_1.makeRemoveAdvancedOrderInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, owner.publicKey, mangoAccount.advancedOrdersKey, orderIndex);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, owner, additionalSigners);\n });\n }\n executePerpTriggerOrder(mangoGroup, mangoAccount, mangoCache, perpMarket, payer, orderIndex) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!payer.publicKey) {\n return;\n }\n const openOrders = mangoAccount.spotOpenOrders.filter((pk, i) => mangoAccount.inMarginBasket[i]);\n const instruction = (0, instruction_1.makeExecutePerpTriggerOrderInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, mangoAccount.advancedOrdersKey, payer.publicKey, mangoCache.publicKey, perpMarket.publicKey, perpMarket.bids, perpMarket.asks, perpMarket.eventQueue, openOrders, new bn_js_1.default(orderIndex));\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, payer, additionalSigners);\n });\n }\n closeAdvancedOrders(mangoGroup, mangoAccount, payer) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!payer.publicKey) {\n return;\n }\n const instruction = (0, instruction_1.makeCloseAdvancedOrdersInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, payer.publicKey, mangoAccount.advancedOrdersKey);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, payer, additionalSigners);\n });\n }\n closeSpotOpenOrders(mangoGroup, mangoAccount, payer, marketIndex, ownerIsSigner = true) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!payer.publicKey) {\n return;\n }\n const instruction = (0, instruction_1.makeCloseSpotOpenOrdersInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, ownerIsSigner ? payer.publicKey : mangoAccount.owner, mangoGroup.dexProgramId, mangoAccount.spotOpenOrders[marketIndex], mangoGroup.spotMarkets[marketIndex].spotMarket, mangoGroup.signerKey, ownerIsSigner);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, payer, additionalSigners);\n });\n }\n closeMangoAccount(mangoGroup, mangoAccount, payer) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!payer.publicKey) {\n return;\n }\n const instruction = (0, instruction_1.makeCloseMangoAccountInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, payer.publicKey);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, payer, additionalSigners);\n });\n }\n createDustAccount(mangoGroup, payer) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!payer.publicKey) {\n return;\n }\n const [mangoAccountPk] = yield web3_js_1.PublicKey.findProgramAddress([mangoGroup.publicKey.toBytes(), new Buffer('DustAccount', 'utf-8')], this.programId);\n const instruction = (0, instruction_1.makeCreateDustAccountInstruction)(this.programId, mangoGroup.publicKey, mangoAccountPk, payer.publicKey);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, payer, additionalSigners);\n });\n }\n resolveDust(mangoGroup, mangoAccount, rootBank, mangoCache, payer) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!payer.publicKey) {\n return;\n }\n const [dustAccountPk] = yield web3_js_1.PublicKey.findProgramAddress([mangoGroup.publicKey.toBytes(), new Buffer('DustAccount', 'utf-8')], this.programId);\n const instruction = (0, instruction_1.makeResolveDustInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, payer.publicKey, dustAccountPk, rootBank.publicKey, rootBank.nodeBanks[0], mangoCache.publicKey);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, payer, additionalSigners);\n });\n }\n updateMarginBasket(mangoGroup, mangoAccount, payer) {\n return __awaiter(this, void 0, void 0, function* () {\n const instruction = (0, instruction_1.makeUpdateMarginBasketInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, mangoAccount.spotOpenOrders);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, payer, additionalSigners);\n });\n }\n resolveAllDust(mangoGroup, mangoAccount, mangoCache, payer) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!payer.publicKey) {\n return;\n }\n const transactionsAndSigners = [];\n const [dustAccountPk] = yield web3_js_1.PublicKey.findProgramAddress([mangoGroup.publicKey.toBytes(), new Buffer('DustAccount', 'utf-8')], this.programId);\n for (const rootBank of mangoGroup.rootBankAccounts) {\n const transactionAndSigners = {\n transaction: new web3_js_1.Transaction(),\n signers: [],\n };\n if (rootBank) {\n const tokenIndex = mangoGroup.getRootBankIndex(rootBank === null || rootBank === void 0 ? void 0 : rootBank.publicKey);\n const nativeDeposit = mangoAccount.getNativeDeposit(rootBank, tokenIndex);\n const nativeBorrow = mangoAccount.getNativeBorrow(rootBank, tokenIndex);\n console.log('nativeDeposit', nativeDeposit.toString());\n console.log('nativeBorrow', nativeBorrow.toString());\n console.log('tokenIndex', tokenIndex.toString());\n if ((nativeDeposit.gt(fixednum_1.ZERO_I80F48) && nativeDeposit.lt(fixednum_1.ONE_I80F48)) ||\n (nativeBorrow.gt(fixednum_1.ZERO_I80F48) && nativeBorrow.lt(fixednum_1.ONE_I80F48))) {\n const instruction = (0, instruction_1.makeResolveDustInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, payer.publicKey, dustAccountPk, rootBank.publicKey, rootBank.nodeBanks[0], mangoCache.publicKey);\n transactionAndSigners.transaction.add(instruction);\n }\n }\n transactionsAndSigners.push(transactionAndSigners);\n }\n const currentBlockhash = yield this.getCurrentBlockhash();\n const signedTransactions = yield this.signTransactions({\n transactionsAndSigners,\n payer,\n currentBlockhash,\n });\n if (signedTransactions) {\n for (const signedTransaction of signedTransactions) {\n if (signedTransaction.instructions.length == 0) {\n continue;\n }\n const txid = yield this.sendSignedTransaction({\n signedTransaction,\n signedAtBlock: currentBlockhash,\n });\n console.log(txid);\n }\n }\n else {\n throw new Error('Unable to sign ResolveDust transactions');\n }\n });\n }\n emptyAndCloseMangoAccount(mangoGroup, mangoAccount, mangoCache, mngoIndex, payer) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!payer.publicKey) {\n return;\n }\n const transactionsAndSigners = [];\n const redeemMngoTransaction = {\n transaction: new web3_js_1.Transaction(),\n signers: [],\n };\n const mngoRootBank = mangoGroup.rootBankAccounts[mngoIndex];\n const perpMarkets = yield Promise.all(mangoAccount.perpAccounts.map((perpAccount, i) => {\n if (perpAccount.mngoAccrued.eq(utils_1.ZERO_BN)) {\n return (0, utils_1.promiseUndef)();\n }\n else {\n return this.getPerpMarket(mangoGroup.perpMarkets[i].perpMarket, mangoGroup.tokens[i].decimals, mangoGroup.tokens[layout_1.QUOTE_INDEX].decimals);\n }\n }));\n let redeemedMngo = false;\n for (let i = 0; i < mangoAccount.perpAccounts.length; i++) {\n const perpAccount = mangoAccount.perpAccounts[i];\n if (perpAccount.mngoAccrued.eq(utils_1.ZERO_BN)) {\n continue;\n }\n redeemedMngo = true;\n const perpMarket = perpMarkets[i];\n // this is actually an error state; Means there is mngo accrued but PerpMarket doesn't exist\n if (perpMarket === undefined)\n continue;\n const instruction = (0, instruction_1.makeRedeemMngoInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, mangoAccount.publicKey, payer.publicKey, perpMarket.publicKey, perpMarket.mngoVault, mngoRootBank.publicKey, mngoRootBank.nodeBanks[0], mngoRootBank.nodeBankAccounts[0].vault, mangoGroup.signerKey);\n redeemMngoTransaction.transaction.add(instruction);\n }\n if (redeemMngoTransaction.transaction.instructions.length > 0) {\n transactionsAndSigners.push(redeemMngoTransaction);\n }\n const resolveAllDustTransaction = {\n transaction: new web3_js_1.Transaction(),\n signers: [],\n };\n const [dustAccountPk] = yield web3_js_1.PublicKey.findProgramAddress([mangoGroup.publicKey.toBytes(), new Buffer('DustAccount', 'utf-8')], this.programId);\n for (const rootBank of mangoGroup.rootBankAccounts) {\n if (rootBank) {\n const tokenIndex = mangoGroup.getRootBankIndex(rootBank === null || rootBank === void 0 ? void 0 : rootBank.publicKey);\n const tokenMint = mangoGroup.tokens[tokenIndex].mint;\n const shouldWithdrawMngo = redeemedMngo && tokenIndex === mngoIndex;\n if (mangoAccount.deposits[tokenIndex].isPos() || shouldWithdrawMngo) {\n const withdrawTransaction = {\n transaction: new web3_js_1.Transaction(),\n signers: [],\n };\n let tokenAcc = yield spl_token_1.Token.getAssociatedTokenAddress(spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID, spl_token_1.TOKEN_PROGRAM_ID, tokenMint, payer.publicKey);\n let wrappedSolAccount = null;\n if (tokenMint.equals(token_instructions_1.WRAPPED_SOL_MINT)) {\n wrappedSolAccount = new web3_js_1.Keypair();\n tokenAcc = wrappedSolAccount.publicKey;\n const space = 165;\n const lamports = yield this.connection.getMinimumBalanceForRentExemption(space, 'processed');\n withdrawTransaction.transaction.add(web3_js_1.SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: tokenAcc,\n lamports,\n space,\n programId: spl_token_1.TOKEN_PROGRAM_ID,\n }));\n withdrawTransaction.transaction.add((0, token_instructions_1.initializeAccount)({\n account: tokenAcc,\n mint: token_instructions_1.WRAPPED_SOL_MINT,\n owner: payer.publicKey,\n }));\n withdrawTransaction.signers.push(wrappedSolAccount);\n }\n else {\n const tokenAccExists = yield this.connection.getAccountInfo(tokenAcc, 'processed');\n if (!tokenAccExists) {\n withdrawTransaction.transaction.add(spl_token_1.Token.createAssociatedTokenAccountInstruction(spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID, spl_token_1.TOKEN_PROGRAM_ID, tokenMint, tokenAcc, payer.publicKey, payer.publicKey));\n }\n }\n const instruction = (0, instruction_1.makeWithdrawInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, payer.publicKey, mangoGroup.mangoCache, rootBank.publicKey, rootBank.nodeBanks[0], rootBank.nodeBankAccounts[0].vault, tokenAcc, mangoGroup.signerKey, mangoAccount.spotOpenOrders, utils_1.U64_MAX_BN, false);\n withdrawTransaction.transaction.add(instruction);\n if (wrappedSolAccount) {\n withdrawTransaction.transaction.add((0, token_instructions_1.closeAccount)({\n source: wrappedSolAccount.publicKey,\n destination: payer.publicKey,\n owner: payer.publicKey,\n }));\n }\n transactionsAndSigners.push(withdrawTransaction);\n }\n const nativeBorrow = mangoAccount.getNativeBorrow(mangoCache.rootBankCache[tokenIndex], tokenIndex);\n if (shouldWithdrawMngo ||\n mangoAccount.deposits[tokenIndex].isPos() ||\n (nativeBorrow.gt(fixednum_1.ZERO_I80F48) && nativeBorrow.lt(fixednum_1.ONE_I80F48))) {\n const instruction = (0, instruction_1.makeResolveDustInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, payer.publicKey, dustAccountPk, rootBank.publicKey, rootBank.nodeBanks[0], mangoCache.publicKey);\n resolveAllDustTransaction.transaction.add(instruction);\n }\n }\n }\n transactionsAndSigners.push(resolveAllDustTransaction);\n const closeAccountsTransaction = {\n transaction: new web3_js_1.Transaction(),\n signers: [],\n };\n for (let i = 0; i < mangoAccount.spotOpenOrders.length; i++) {\n const openOrders = mangoAccount.spotOpenOrders[i];\n const spotMarket = mangoGroup.spotMarkets[i].spotMarket;\n if (!openOrders.equals(utils_1.zeroKey)) {\n closeAccountsTransaction.transaction.add((0, instruction_1.makeCloseSpotOpenOrdersInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, payer.publicKey, mangoGroup.dexProgramId, openOrders, spotMarket, mangoGroup.signerKey));\n }\n }\n if (!mangoAccount.advancedOrdersKey.equals(utils_1.zeroKey)) {\n closeAccountsTransaction.transaction.add((0, instruction_1.makeCloseAdvancedOrdersInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, payer.publicKey, mangoAccount.advancedOrdersKey));\n }\n if (mangoAccount.metaData.version == 0) {\n closeAccountsTransaction.transaction.add((0, instruction_1.makeUpgradeMangoAccountV0V1Instruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, payer.publicKey));\n }\n closeAccountsTransaction.transaction.add((0, instruction_1.makeCloseMangoAccountInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, payer.publicKey));\n transactionsAndSigners.push(closeAccountsTransaction);\n const currentBlockhash = yield this.getCurrentBlockhash();\n const signedTransactions = yield this.signTransactions({\n transactionsAndSigners,\n payer,\n currentBlockhash,\n });\n const txids = [];\n if (signedTransactions) {\n for (const signedTransaction of signedTransactions) {\n if (signedTransaction.instructions.length == 0) {\n continue;\n }\n const txid = yield this.sendSignedTransaction({\n signedTransaction,\n signedAtBlock: currentBlockhash,\n });\n txids.push(txid);\n console.log(txid);\n }\n }\n else {\n throw new Error('Unable to sign emptyAndCloseMangoAccount transactions');\n }\n return txids;\n });\n }\n cancelPerpOrderSide(mangoGroup, mangoAccount, perpMarket, payer, side, limit) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!payer.publicKey) {\n return;\n }\n const instruction = (0, instruction_1.makeCancelPerpOrdersSideInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, payer.publicKey, perpMarket.publicKey, perpMarket.bids, perpMarket.asks, side, new bn_js_1.default(limit));\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, payer, additionalSigners);\n });\n }\n setDelegate(mangoGroup, mangoAccount, payer, delegate) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!payer.publicKey) {\n return;\n }\n const instruction = (0, instruction_1.makeSetDelegateInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, payer.publicKey, delegate);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, payer, additionalSigners);\n });\n }\n changeSpotMarketParams(mangoGroup, spotMarket, rootBank, admin, maintLeverage, initLeverage, liquidationFee, optimalUtil, optimalRate, maxRate, version) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!admin.publicKey) {\n return;\n }\n const instruction = (0, instruction_1.makeChangeSpotMarketParamsInstruction)(this.programId, mangoGroup.publicKey, spotMarket.publicKey, rootBank.publicKey, admin.publicKey, fixednum_1.I80F48.fromNumberOrUndef(maintLeverage), fixednum_1.I80F48.fromNumberOrUndef(initLeverage), fixednum_1.I80F48.fromNumberOrUndef(liquidationFee), fixednum_1.I80F48.fromNumberOrUndef(optimalUtil), fixednum_1.I80F48.fromNumberOrUndef(optimalRate), fixednum_1.I80F48.fromNumberOrUndef(maxRate), version !== undefined ? new bn_js_1.default(version) : undefined);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, admin, additionalSigners);\n });\n }\n /**\n * Change the referral fee params\n * @param mangoGroup\n * @param admin\n * @param refSurcharge normal units 0.0001 -> 1 basis point\n * @param refShare\n * @param refMngoRequired ui units -> 1 -> 1_000_000 MNGO\n */\n changeReferralFeeParams(mangoGroup, admin, refSurcharge, refShare, refMngoRequired) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!admin.publicKey) {\n return;\n }\n const instruction = (0, instruction_1.makeChangeReferralFeeParamsInstruction)(this.programId, mangoGroup.publicKey, admin.publicKey, new bn_js_1.default(refSurcharge * layout_1.CENTIBPS_PER_UNIT), new bn_js_1.default(refShare * layout_1.CENTIBPS_PER_UNIT), new bn_js_1.default(refMngoRequired * 1000000));\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, admin, additionalSigners);\n });\n }\n setReferrerMemory(mangoGroup, mangoAccount, payer, // must be also owner of mangoAccount\n referrerMangoAccountPk) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!payer.publicKey) {\n return;\n }\n // Generate the PDA pubkey\n const [referrerMemoryPk] = yield web3_js_1.PublicKey.findProgramAddress([mangoAccount.publicKey.toBytes(), new Buffer('ReferrerMemory', 'utf-8')], this.programId);\n const instruction = (0, instruction_1.makeSetReferrerMemoryInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, payer.publicKey, referrerMemoryPk, referrerMangoAccountPk, payer.publicKey);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, payer, additionalSigners);\n });\n }\n getReferrerPda(mangoGroup, referrerId) {\n return __awaiter(this, void 0, void 0, function* () {\n const encoded = Buffer.from(referrerId, 'utf8');\n if (encoded.length > layout_1.INFO_LEN) {\n throw new Error(`info string too long. Must be less than or equal to ${layout_1.INFO_LEN} bytes`);\n }\n const encodedReferrerId = Buffer.concat([\n encoded,\n Buffer.alloc(layout_1.INFO_LEN - encoded.length, 0),\n ]);\n // Generate the PDA pubkey\n const [referrerIdRecordPk] = yield web3_js_1.PublicKey.findProgramAddress([\n mangoGroup.publicKey.toBytes(),\n new Buffer('ReferrerIdRecord', 'utf-8'),\n encodedReferrerId,\n ], this.programId);\n return { referrerPda: referrerIdRecordPk, encodedReferrerId };\n });\n }\n registerReferrerId(mangoGroup, referrerMangoAccount, payer, // will also owner of referrerMangoAccount\n referrerId) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!payer.publicKey) {\n return;\n }\n const { referrerPda, encodedReferrerId } = yield this.getReferrerPda(mangoGroup, referrerId);\n const instruction = (0, instruction_1.makeRegisterReferrerIdInstruction)(this.programId, mangoGroup.publicKey, referrerMangoAccount.publicKey, referrerPda, payer.publicKey, encodedReferrerId);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n const additionalSigners = [];\n return yield this.sendTransaction(transaction, payer, additionalSigners);\n });\n }\n getReferrerIdsForMangoAccount(mangoAccount) {\n return __awaiter(this, void 0, void 0, function* () {\n const filters = [\n {\n memcmp: {\n offset: layout_2.ReferrerIdRecordLayout.offsetOf('referrerMangoAccount'),\n bytes: mangoAccount.publicKey.toBase58(),\n },\n },\n {\n dataSize: layout_2.ReferrerIdRecordLayout.span,\n },\n ];\n const referrerIds = yield (0, utils_1.getFilteredProgramAccounts)(this.connection, this.programId, filters).then((referrerIds) => {\n return referrerIds.map(({ accountInfo }) => {\n return new layout_2.ReferrerIdRecord(layout_2.ReferrerIdRecordLayout.decode(accountInfo == null ? undefined : accountInfo.data));\n });\n });\n return referrerIds;\n });\n }\n cancelAllSpotOrders(mangoGroup, mangoAccount, spotMarket, owner, limit, ownerIsSigner = true) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!owner.publicKey)\n return;\n const marketIndex = mangoGroup.getSpotMarketIndex(spotMarket.address);\n const baseRootBank = mangoGroup.rootBankAccounts[marketIndex];\n const quoteRootBank = mangoGroup.rootBankAccounts[layout_1.QUOTE_INDEX];\n if (baseRootBank == null || quoteRootBank == null) {\n console.log('A root bank is null');\n return;\n }\n const baseNodeBanks = yield baseRootBank.loadNodeBanks(this.connection);\n const quoteNodeBanks = yield quoteRootBank.loadNodeBanks(this.connection);\n const spotMarketIndex = mangoGroup.getSpotMarketIndex(spotMarket.publicKey);\n const dexSigner = yield web3_js_1.PublicKey.createProgramAddress([\n spotMarket.publicKey.toBuffer(),\n spotMarket['_decoded'].vaultSignerNonce.toArrayLike(Buffer, 'le', 8),\n ], spotMarket.programId);\n const instruction = (0, instruction_1.makeCancelAllSpotOrdersInstruction)(this.programId, mangoGroup.publicKey, mangoGroup.mangoCache, mangoAccount.publicKey, ownerIsSigner ? owner.publicKey : mangoAccount.owner, baseRootBank.publicKey, baseNodeBanks[0].publicKey, baseNodeBanks[0].vault, quoteRootBank.publicKey, quoteNodeBanks[0].publicKey, quoteNodeBanks[0].vault, spotMarket.publicKey, spotMarket.bidsAddress, spotMarket.asksAddress, mangoAccount.spotOpenOrders[spotMarketIndex], mangoGroup.signerKey, spotMarket['_decoded'].eventQueue, spotMarket['_decoded'].baseVault, spotMarket['_decoded'].quoteVault, dexSigner, mangoGroup.dexProgramId, new bn_js_1.default(limit), ownerIsSigner);\n const transaction = new web3_js_1.Transaction();\n transaction.add(instruction);\n return yield this.sendTransaction(transaction, owner, []);\n });\n }\n ensureOpenOrdersAccount(mangoAccount, mangoGroup, payer, spotMarket, spotMarketConfig) {\n return __awaiter(this, void 0, void 0, function* () {\n if (mangoAccount.spotOpenOrdersAccounts[spotMarketConfig.marketIndex]) {\n return;\n }\n const [openOrdersPk] = yield web3_js_1.PublicKey.findProgramAddress([\n mangoAccount.publicKey.toBytes(),\n new bn_js_1.default(spotMarketConfig.marketIndex).toArrayLike(Buffer, 'le', 8),\n new Buffer('OpenOrders', 'utf-8'),\n ], this.programId);\n const createSpotOpenOrdersInstruction = (0, instruction_2.makeCreateSpotOpenOrdersInstruction)(this.programId, mangoGroup.publicKey, mangoAccount.publicKey, payer.publicKey, mangoGroup.dexProgramId, openOrdersPk, spotMarket.publicKey, mangoGroup.signerKey);\n const recentBlockHash = yield this.connection.getLatestBlockhash('finalized');\n const tx = new web3_js_1.Transaction({\n recentBlockhash: recentBlockHash.blockhash,\n feePayer: payer.publicKey,\n });\n tx.add(createSpotOpenOrdersInstruction);\n tx.sign(payer);\n try {\n yield this.sendSignedTransaction({\n signedTransaction: tx,\n signedAtBlock: recentBlockHash,\n });\n }\n catch (e) {\n console.error(e);\n }\n yield mangoAccount.reload(this.connection, mangoGroup.dexProgramId);\n // ^ The newly created open orders account isn't immediately visible in\n // the already fetched Mango account, hence why it needs to be reloaded\n });\n }\n isMainnet() {\n var _a;\n // simplistic way of checking if we are on mainnet\n let rpcUrl = (_a = this.connection['_rpcEndpoint']) === null || _a === void 0 ? void 0 : _a.toLowerCase();\n return (rpcUrl &&\n !rpcUrl.includes('devnet') &&\n !rpcUrl.includes('testnet') &&\n !rpcUrl.includes('localhost'));\n }\n}\nexports.MangoClient = MangoClient;\n//# sourceMappingURL=client.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Config = exports.getTokenBySymbol = exports.getTokenByMint = exports.getMarketByPublicKey = exports.getMarketByBaseSymbolAndKind = exports.getAllMarkets = exports.getSpotMarketByBaseSymbol = exports.getPerpMarketByIndex = exports.getPerpMarketByBaseSymbol = exports.getOracleBySymbol = exports.getMarketIndexBySymbol = exports.getOracleConfig = exports.getTokenConfig = exports.getPerpMarketConfig = exports.getSpotMarketConfig = exports.delistedOracles = exports.delistedTokens = exports.delistedPerpMarkets = exports.delistedSpotMarkets = exports.mngoMints = exports.msrmMints = void 0;\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst ids_json_1 = __importDefault(require(\"./ids.json\"));\nconst utils_1 = require(\"./utils/utils\");\nexports.msrmMints = {\n devnet: new web3_js_1.PublicKey('8DJBo4bF4mHNxobjdax3BL9RMh5o71Jf8UiKsf5C5eVH'),\n mainnet: new web3_js_1.PublicKey('MSRMcoVyrFxnSgo5uXwone5SKcGhT1KEJMFEkMEWf9L'),\n localnet: utils_1.zeroKey,\n testnet: new web3_js_1.PublicKey('3Ho7PN3bYv9bp1JDErBD2FxsRepPkL88vju3oDX9c3Ez'),\n};\nexports.mngoMints = {\n devnet: new web3_js_1.PublicKey('Bb9bsTQa1bGEtQ5KagGkvSHyuLqDWumFUcRqFusFNJWC'),\n mainnet: new web3_js_1.PublicKey('MangoCzJ36AjZyKwVj3VnYU4GTonjfVEnJmvvWaxLac'),\n testnet: new web3_js_1.PublicKey('2hvukwp4UR9tqmCQhRzcsW9S2QBuU5Xcv5JJ5fUMmfvQ'),\n};\nexports.delistedSpotMarkets = [\n { publicKey: new web3_js_1.PublicKey('HBTu8hNaoT3VyiSSzJYa8jwt9sDGKtJviSwFa11iXdmE'), name: 'LUNA/USDC', baseSymbol: 'LUNA', baseDecimals: 6, marketIndex: 13 },\n { publicKey: new web3_js_1.PublicKey('6fc7v3PmjZG9Lk2XTot6BywGyYLkBQuzuFKd4FpCsPxk'), name: 'COPE/USDC', baseSymbol: 'COPE', baseDecimals: 6, marketIndex: 7 },\n { publicKey: new web3_js_1.PublicKey('3zzTxtDCt9PimwzGrgWJEbxZfSLetDMkdYegPanGNpMf'), name: 'BNB/USDC', baseSymbol: 'BNB', baseDecimals: 8, marketIndex: 11 }\n];\nexports.delistedPerpMarkets = [\n { publicKey: new web3_js_1.PublicKey('BCJrpvsB2BJtqiDgKVC4N6gyX1y24Jz96C6wMraYmXss'), name: 'LUNA-PERP', baseSymbol: 'LUNA', baseDecimals: 6, quoteDecimals: 6, marketIndex: 13 },\n];\nexports.delistedTokens = [\n { mintKey: new web3_js_1.PublicKey('F6v4wfAdJB8D8p77bMXZgYt8TDKsYxLYxH5AFhUkYx9W'), symbol: 'LUNA', decimals: 6 },\n { mintKey: new web3_js_1.PublicKey('8HGyAAB1yoM1ttS7pXjHMa3dukTFGQggnFFH3hJZgzQh'), symbol: 'COPE', decimals: 6 },\n];\nexports.delistedOracles = [\n { publicKey: new web3_js_1.PublicKey('5bmWuR1dgP4avtGYMNKLuxumZTVKGgoN2BCMXWDNL9nY'), symbol: 'LUNA', marketIndex: 13 },\n { publicKey: new web3_js_1.PublicKey('9xYBiDWYsh2fHzpsz3aaCnNHCKWBNtfEDLtU6kS4aFD9'), symbol: 'COPE', marketIndex: 7 },\n];\nfunction oracleConfigFromJson(j) {\n return Object.assign(Object.assign({}, j), { publicKey: new web3_js_1.PublicKey(j.publicKey) });\n}\nfunction oracleConfigToJson(o) {\n return Object.assign(Object.assign({}, o), { publicKey: o.publicKey.toBase58() });\n}\nfunction spotMarketConfigFromJson(j) {\n return Object.assign(Object.assign({}, j), { publicKey: new web3_js_1.PublicKey(j.publicKey), bidsKey: new web3_js_1.PublicKey(j.bidsKey), asksKey: new web3_js_1.PublicKey(j.asksKey), eventsKey: new web3_js_1.PublicKey(j.eventsKey) });\n}\nfunction spotMarketConfigToJson(p) {\n return Object.assign(Object.assign({}, p), { publicKey: p.publicKey.toBase58(), bidsKey: p.bidsKey.toBase58(), asksKey: p.asksKey.toBase58(), eventsKey: p.eventsKey.toBase58() });\n}\nfunction perpMarketConfigFromJson(j) {\n return Object.assign(Object.assign({}, j), { publicKey: new web3_js_1.PublicKey(j.publicKey), bidsKey: new web3_js_1.PublicKey(j.bidsKey), asksKey: new web3_js_1.PublicKey(j.asksKey), eventsKey: new web3_js_1.PublicKey(j.eventsKey) });\n}\nfunction perpMarketConfigToJson(p) {\n return Object.assign(Object.assign({}, p), { publicKey: p.publicKey.toBase58(), bidsKey: p.bidsKey.toBase58(), asksKey: p.asksKey.toBase58(), eventsKey: p.eventsKey.toBase58() });\n}\nfunction tokenConfigFromJson(j) {\n return Object.assign(Object.assign({}, j), { mintKey: new web3_js_1.PublicKey(j.mintKey), rootKey: new web3_js_1.PublicKey(j.rootKey), nodeKeys: j.nodeKeys.map((k) => new web3_js_1.PublicKey(k)) });\n}\nfunction tokenConfigToJson(t) {\n return Object.assign(Object.assign({}, t), { mintKey: t.mintKey.toBase58(), rootKey: t.rootKey.toBase58(), nodeKeys: t.nodeKeys.map((k) => k.toBase58()) });\n}\nfunction getSpotMarketConfig(group, predicate) {\n let config = group.spotMarkets.find(predicate);\n if (!config) {\n config = (exports.delistedSpotMarkets.find(predicate));\n }\n return config;\n}\nexports.getSpotMarketConfig = getSpotMarketConfig;\nfunction getPerpMarketConfig(group, predicate) {\n let config = group.perpMarkets.find(predicate);\n if (!config) {\n config = (exports.delistedPerpMarkets.find(predicate));\n }\n return config;\n}\nexports.getPerpMarketConfig = getPerpMarketConfig;\nfunction getTokenConfig(group, predicate) {\n let config = group.tokens.find(predicate);\n if (!config) {\n config = (exports.delistedTokens.find(predicate));\n }\n return config;\n}\nexports.getTokenConfig = getTokenConfig;\nfunction getOracleConfig(group, predicate) {\n let config = group.oracles.find(predicate);\n if (!config) {\n config = (exports.delistedOracles.find(predicate));\n }\n return config;\n}\nexports.getOracleConfig = getOracleConfig;\nfunction getMarketIndexBySymbol(group, symbol) {\n let index = group.oracles.findIndex((o) => o.symbol === symbol);\n if (index === -1) {\n const delistedOracle = getOracleConfig(group, (o) => o.symbol === symbol);\n index = delistedOracle ? delistedOracle['marketIndex'] : -1;\n }\n return index;\n}\nexports.getMarketIndexBySymbol = getMarketIndexBySymbol;\nfunction getOracleBySymbol(group, symbol) {\n return getOracleConfig(group, (o) => o.symbol === symbol);\n}\nexports.getOracleBySymbol = getOracleBySymbol;\nfunction getPerpMarketByBaseSymbol(group, symbol) {\n return getPerpMarketConfig(group, (p) => p.baseSymbol === symbol);\n}\nexports.getPerpMarketByBaseSymbol = getPerpMarketByBaseSymbol;\nfunction getPerpMarketByIndex(group, marketIndex) {\n return getPerpMarketConfig(group, (p) => p.marketIndex === marketIndex);\n}\nexports.getPerpMarketByIndex = getPerpMarketByIndex;\nfunction getSpotMarketByBaseSymbol(group, symbol) {\n return getSpotMarketConfig(group, (p) => p.baseSymbol === symbol);\n}\nexports.getSpotMarketByBaseSymbol = getSpotMarketByBaseSymbol;\nfunction getAllMarkets(group) {\n const spotMarkets = group.spotMarkets.map((m) => (Object.assign({ kind: 'spot' }, m)));\n const perpMarkets = group.perpMarkets.map((m) => (Object.assign({ kind: 'perp' }, m)));\n return spotMarkets.concat(perpMarkets);\n}\nexports.getAllMarkets = getAllMarkets;\nfunction getMarketByBaseSymbolAndKind(group, symbol, kind) {\n const market = kind === 'spot'\n ? getSpotMarketByBaseSymbol(group, symbol)\n : getPerpMarketByBaseSymbol(group, symbol);\n return Object.assign({ kind }, market);\n}\nexports.getMarketByBaseSymbolAndKind = getMarketByBaseSymbolAndKind;\nfunction getMarketByPublicKey(group, key) {\n if (!(key instanceof web3_js_1.PublicKey)) {\n key = new web3_js_1.PublicKey(key);\n }\n const spot = getSpotMarketConfig(group, (m) => m.publicKey.equals(key));\n if (spot) {\n return Object.assign({ kind: 'spot' }, spot);\n }\n const perp = getPerpMarketConfig(group, (m) => m.publicKey.equals(key));\n if (perp) {\n return Object.assign({ kind: 'perp' }, perp);\n }\n}\nexports.getMarketByPublicKey = getMarketByPublicKey;\nfunction getTokenByMint(group, mint) {\n if (!(mint instanceof web3_js_1.PublicKey)) {\n mint = new web3_js_1.PublicKey(mint);\n }\n return getTokenConfig(group, (t) => t.mintKey.equals(mint));\n}\nexports.getTokenByMint = getTokenByMint;\nfunction getTokenBySymbol(group, symbol) {\n const tokenConfig = getTokenConfig(group, (t) => t.symbol === symbol);\n if (tokenConfig === undefined) {\n throw new Error(`Unable to find symbol: ${symbol} in GroupConfig`);\n }\n return tokenConfig;\n}\nexports.getTokenBySymbol = getTokenBySymbol;\n// export function getTokenBySymbol(group: GroupConfig, symbol: string) {\n// return group.tokens.find((t) => t.symbol === symbol);\n// }\nfunction groupConfigFromJson(j) {\n return Object.assign(Object.assign({}, j), { publicKey: new web3_js_1.PublicKey(j.publicKey), mangoProgramId: new web3_js_1.PublicKey(j.mangoProgramId), serumProgramId: new web3_js_1.PublicKey(j.serumProgramId), oracles: j.oracles.map((o) => oracleConfigFromJson(o)), perpMarkets: j.perpMarkets.map((p) => perpMarketConfigFromJson(p)), spotMarkets: j.spotMarkets.map((p) => spotMarketConfigFromJson(p)), tokens: j.tokens.map((t) => tokenConfigFromJson(t)) });\n}\nfunction groupConfigToJson(g) {\n return Object.assign(Object.assign({}, g), { publicKey: g.publicKey.toBase58(), mangoProgramId: g.mangoProgramId.toBase58(), serumProgramId: g.serumProgramId.toBase58(), oracles: g.oracles.map((o) => oracleConfigToJson(o)), perpMarkets: g.perpMarkets.map((p) => perpMarketConfigToJson(p)), spotMarkets: g.spotMarkets.map((p) => spotMarketConfigToJson(p)), tokens: g.tokens.map((t) => tokenConfigToJson(t)) });\n}\nclass Config {\n constructor(json) {\n this.cluster_urls = json.cluster_urls;\n this.groups = json.groups.map((g) => groupConfigFromJson(g));\n }\n static ids() {\n return staticConfig;\n }\n toJson() {\n return Object.assign(Object.assign({}, this), { groups: this.groups.map((g) => groupConfigToJson(g)) });\n }\n getGroup(cluster, name) {\n return this.groups.find((g) => g.cluster === cluster && g.name === name);\n }\n getGroupWithName(name) {\n return this.groups.find((g) => g.name === name);\n }\n storeGroup(group) {\n const _group = this.getGroup(group.cluster, group.name);\n if (_group) {\n Object.assign(_group, group);\n }\n else {\n this.groups.unshift(group);\n }\n }\n}\nexports.Config = Config;\nconst staticConfig = new Config(ids_json_1.default);\n//# sourceMappingURL=config.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.RootBank = exports.PublicKey = exports.PerpMarket = exports.PerpEventQueue = exports.PerpAccount = exports.MangoGroup = exports.MangoAccount = exports.IDS = exports.IDL = exports.BN = void 0;\nconst ids_json_1 = __importDefault(require(\"./ids.json\"));\nexports.IDS = ids_json_1.default;\nconst mango_logs_json_1 = __importDefault(require(\"./mango_logs.json\"));\nexports.IDL = mango_logs_json_1.default;\nconst MangoAccount_1 = __importDefault(require(\"./MangoAccount\"));\nexports.MangoAccount = MangoAccount_1.default;\nconst MangoGroup_1 = __importDefault(require(\"./MangoGroup\"));\nexports.MangoGroup = MangoGroup_1.default;\nconst PerpMarket_1 = __importDefault(require(\"./PerpMarket\"));\nexports.PerpMarket = PerpMarket_1.default;\nconst PerpAccount_1 = __importDefault(require(\"./PerpAccount\"));\nexports.PerpAccount = PerpAccount_1.default;\nconst PerpEventQueue_1 = __importDefault(require(\"./PerpEventQueue\"));\nexports.PerpEventQueue = PerpEventQueue_1.default;\nconst RootBank_1 = __importDefault(require(\"./RootBank\"));\nexports.RootBank = RootBank_1.default;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nexports.BN = bn_js_1.default;\nconst web3_js_1 = require(\"@solana/web3.js\");\nObject.defineProperty(exports, \"PublicKey\", { enumerable: true, get: function () { return web3_js_1.PublicKey; } });\n__exportStar(require(\"./book\"), exports);\n__exportStar(require(\"./client\"), exports);\n__exportStar(require(\"./config\"), exports);\n__exportStar(require(\"./utils/fixednum\"), exports);\n__exportStar(require(\"./instruction\"), exports);\n__exportStar(require(\"./layout\"), exports);\n__exportStar(require(\"./utils/token\"), exports);\n__exportStar(require(\"./utils/types\"), exports);\n__exportStar(require(\"./utils/utils\"), exports);\n__exportStar(require(\"./utils/fixednum\"), exports);\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeCloseAdvancedOrdersInstruction = exports.makeCloseSpotOpenOrdersInstruction = exports.makeCloseMangoAccountInstruction = exports.makeExecutePerpTriggerOrderInstruction = exports.makeAddPerpTriggerOrderInstruction = exports.makeInitAdvancedOrdersInstruction = exports.makeRemoveAdvancedOrderInstruction = exports.makeSetGroupAdminInstruction = exports.makeChangePerpMarketParams2Instruction = exports.makeChangePerpMarketParamsInstruction = exports.makeWithdrawMsrmInstruction = exports.makeDepositMsrmInstruction = exports.makeAddMangoAccountInfoInstruction = exports.makeRedeemMngoInstruction = exports.makeResolveTokenBankruptcyInstruction = exports.makeResolvePerpBankruptcyInstruction = exports.makeSettleFeesInstruction = exports.makeLiquidatePerpMarketInstruction = exports.makeLiquidateTokenAndPerpInstruction = exports.makeLiquidateTokenAndTokenInstruction = exports.makeForceCancelPerpOrdersInstruction = exports.makeForceCancelSpotOrdersInstruction = exports.makeUpdateFundingInstruction = exports.makePlacePerpOrder2Instruction = exports.makePlacePerpOrderInstruction = exports.makeConsumeEventsInstruction = exports.makeSettlePnlInstruction = exports.makeCachePerpMarketsInstruction = exports.makeCreatePerpMarketInstruction = exports.makeAddPerpMarketInstruction = exports.makeSetOracleInstruction = exports.makeAddOracleInstruction = exports.makeUpdateRootBankInstruction = exports.makePlaceSpotOrder2Instruction = exports.makePlaceSpotOrderInstruction = exports.makeCreateSpotOpenOrdersInstruction = exports.makeInitSpotOpenOrdersInstruction = exports.makeAddSpotMarketInstruction = exports.makeCachePerpMarketInstruction = exports.makeCachePricesInstruction = exports.makeCacheRootBankInstruction = exports.makeDepositInstruction = exports.makeCancelAllPerpOrdersInstruction = exports.makeCancelPerpOrderByClientIdInstruction = exports.makeCancelPerpOrderInstruction = exports.makeCancelSpotOrderInstruction = exports.makeSettleFundsInstruction = exports.makeWithdrawInstruction = exports.makeInitMangoAccountInstruction = exports.makeInitMangoGroupInstruction = void 0;\nexports.makeCancelAllSpotOrdersInstruction = exports.makeForceSettlePerpPositionInstruction = exports.makeLiquidateDelistingTokenInstruction = exports.makeRemoveOracleInstruction = exports.makeRemoveSpotMarketInstruction = exports.makeSwapSpotMarketInstruction = exports.makeRemovePerpMarketInstruction = exports.makeSetMarketModeInstruction = exports.makeWithdraw2Instruction = exports.makeRegisterReferrerIdInstruction = exports.makeSetReferrerMemoryInstruction = exports.makeChangeReferralFeeParams2Instruction = exports.makeChangeReferralFeeParamsInstruction = exports.makeChangeSpotMarketParamsInstruction = exports.makeSetDelegateInstruction = exports.makeCancelPerpOrdersSideInstruction = exports.makeChangeMaxMangoAccountsInstruction = exports.makeUpgradeMangoAccountV0V1Instruction = exports.makeCreateMangoAccountInstruction = exports.makeUpdateMarginBasketInstruction = exports.makeResolveDustInstruction = exports.makeCreateDustAccountInstruction = void 0;\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst layout_1 = require(\"./layout\");\nconst spl_token_1 = require(\"@solana/spl-token\");\nconst fixednum_1 = require(\"./utils/fixednum\");\nconst utils_1 = require(\"./utils/utils\");\nfunction makeInitMangoGroupInstruction(programId, mangoGroupPk, signerKey, payerPk, quoteMintPk, quoteVaultPk, quoteNodeBankPk, quoteRootBankPk, insuranceVaultPk, msrmVaultPk, feesVaultPk, mangoCachePk, dexProgramPk, signerNonce, validInterval, quoteOptimalUtil, quoteOptimalRate, quoteMaxRate) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: signerKey },\n { isSigner: true, isWritable: false, pubkey: payerPk },\n { isSigner: false, isWritable: false, pubkey: quoteMintPk },\n { isSigner: false, isWritable: true, pubkey: quoteVaultPk },\n { isSigner: false, isWritable: true, pubkey: quoteNodeBankPk },\n { isSigner: false, isWritable: true, pubkey: quoteRootBankPk },\n { isSigner: false, isWritable: false, pubkey: insuranceVaultPk },\n { isSigner: false, isWritable: false, pubkey: msrmVaultPk },\n { isSigner: false, isWritable: false, pubkey: feesVaultPk },\n { isSigner: false, isWritable: true, pubkey: mangoCachePk },\n { isSigner: false, isWritable: false, pubkey: dexProgramPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n InitMangoGroup: {\n signerNonce,\n validInterval,\n quoteOptimalUtil,\n quoteOptimalRate,\n quoteMaxRate,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId: programId,\n });\n}\nexports.makeInitMangoGroupInstruction = makeInitMangoGroupInstruction;\nfunction makeInitMangoAccountInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({ InitMangoAccount: {} });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeInitMangoAccountInstruction = makeInitMangoAccountInstruction;\nfunction makeWithdrawInstruction(programId, mangoGroupPk, mangoAccountPk, walletPk, mangoCachePk, rootBankPk, nodeBankPk, vaultPk, tokenAccPk, signerKey, openOrders, nativeQuantity, allowBorrow) {\n const withdrawKeys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: walletPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: false, pubkey: rootBankPk },\n { isSigner: false, isWritable: true, pubkey: nodeBankPk },\n { isSigner: false, isWritable: true, pubkey: vaultPk },\n { isSigner: false, isWritable: true, pubkey: tokenAccPk },\n { isSigner: false, isWritable: false, pubkey: signerKey },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n ...openOrders.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ];\n const withdrawData = (0, layout_1.encodeMangoInstruction)({\n Withdraw: { quantity: nativeQuantity, allowBorrow },\n });\n return new web3_js_1.TransactionInstruction({\n keys: withdrawKeys,\n data: withdrawData,\n programId,\n });\n}\nexports.makeWithdrawInstruction = makeWithdrawInstruction;\nfunction makeSettleFundsInstruction(programId, mangoGroupPk, mangoCachePk, ownerPk, mangoAccountPk, dexProgramId, spotMarketPk, openOrdersPk, signerKey, spotMarketBaseVaultPk, spotMarketQuoteVaultPk, baseRootBankPk, baseNodeBankPk, quoteRootBankPk, quoteNodeBankPk, baseVaultPk, quoteVaultPk, dexSignerKey) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: false, isWritable: false, pubkey: dexProgramId },\n { isSigner: false, isWritable: true, pubkey: spotMarketPk },\n { isSigner: false, isWritable: true, pubkey: openOrdersPk },\n { isSigner: false, isWritable: false, pubkey: signerKey },\n { isSigner: false, isWritable: true, pubkey: spotMarketBaseVaultPk },\n { isSigner: false, isWritable: true, pubkey: spotMarketQuoteVaultPk },\n { isSigner: false, isWritable: false, pubkey: baseRootBankPk },\n { isSigner: false, isWritable: true, pubkey: baseNodeBankPk },\n { isSigner: false, isWritable: false, pubkey: quoteRootBankPk },\n { isSigner: false, isWritable: true, pubkey: quoteNodeBankPk },\n { isSigner: false, isWritable: true, pubkey: baseVaultPk },\n { isSigner: false, isWritable: true, pubkey: quoteVaultPk },\n { isSigner: false, isWritable: false, pubkey: dexSignerKey },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({ SettleFunds: {} });\n return new web3_js_1.TransactionInstruction({ keys, data, programId });\n}\nexports.makeSettleFundsInstruction = makeSettleFundsInstruction;\nfunction makeCancelSpotOrderInstruction(programId, mangoGroupPk, ownerPk, mangoAccountPk, dexProgramId, spotMarketPk, bidsPk, asksPk, openOrdersPk, signerKey, eventQueuePk, order) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n { isSigner: false, isWritable: false, pubkey: mangoAccountPk },\n { isSigner: false, isWritable: false, pubkey: dexProgramId },\n { isSigner: false, isWritable: true, pubkey: spotMarketPk },\n { isSigner: false, isWritable: true, pubkey: bidsPk },\n { isSigner: false, isWritable: true, pubkey: asksPk },\n { isSigner: false, isWritable: true, pubkey: openOrdersPk },\n { isSigner: false, isWritable: false, pubkey: signerKey },\n { isSigner: false, isWritable: true, pubkey: eventQueuePk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n CancelSpotOrder: {\n side: order.side,\n orderId: order.orderId,\n },\n });\n return new web3_js_1.TransactionInstruction({ keys, data, programId });\n}\nexports.makeCancelSpotOrderInstruction = makeCancelSpotOrderInstruction;\nfunction makeCancelPerpOrderInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, perpMarketPk, bidsPk, asksPk, order, invalidIdOk) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n { isSigner: false, isWritable: true, pubkey: bidsPk },\n { isSigner: false, isWritable: true, pubkey: asksPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n CancelPerpOrder: {\n orderId: order.orderId,\n invalidIdOk,\n },\n });\n return new web3_js_1.TransactionInstruction({ keys, data, programId });\n}\nexports.makeCancelPerpOrderInstruction = makeCancelPerpOrderInstruction;\nfunction makeCancelPerpOrderByClientIdInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, perpMarketPk, bidsPk, asksPk, clientOrderId, invalidIdOk) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n { isSigner: false, isWritable: true, pubkey: bidsPk },\n { isSigner: false, isWritable: true, pubkey: asksPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n CancelPerpOrderByClientId: {\n clientOrderId,\n invalidIdOk,\n },\n });\n return new web3_js_1.TransactionInstruction({ keys, data, programId });\n}\nexports.makeCancelPerpOrderByClientIdInstruction = makeCancelPerpOrderByClientIdInstruction;\nfunction makeCancelAllPerpOrdersInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, perpMarketPk, bidsPk, asksPk, limit, ownerIsSigner = true) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: ownerIsSigner, isWritable: false, pubkey: ownerPk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n { isSigner: false, isWritable: true, pubkey: bidsPk },\n { isSigner: false, isWritable: true, pubkey: asksPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n CancelAllPerpOrders: {\n limit,\n },\n });\n return new web3_js_1.TransactionInstruction({ keys, data, programId });\n}\nexports.makeCancelAllPerpOrdersInstruction = makeCancelAllPerpOrdersInstruction;\nfunction makeDepositInstruction(programId, mangoGroupPk, ownerPk, merpsCachePk, mangoAccountPk, rootBankPk, nodeBankPk, vaultPk, tokenAccPk, nativeQuantity) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n { isSigner: false, isWritable: true, pubkey: merpsCachePk },\n { isSigner: false, isWritable: true, pubkey: rootBankPk },\n { isSigner: false, isWritable: true, pubkey: nodeBankPk },\n { isSigner: false, isWritable: true, pubkey: vaultPk },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n { isSigner: false, isWritable: true, pubkey: tokenAccPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n Deposit: { quantity: nativeQuantity },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeDepositInstruction = makeDepositInstruction;\nfunction makeCacheRootBankInstruction(programId, mangoGroupPk, mangoCachePk, rootBanks) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoCachePk },\n ...rootBanks.map((pubkey) => ({\n isSigner: false,\n isWritable: true,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n CacheRootBanks: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeCacheRootBankInstruction = makeCacheRootBankInstruction;\nfunction makeCachePricesInstruction(programId, mangoGroupPk, mangoCachePk, oracles) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoCachePk },\n ...oracles.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n CachePrices: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeCachePricesInstruction = makeCachePricesInstruction;\nfunction makeCachePerpMarketInstruction(programId, mangoGroupPk, mangoCachePk, perpMarketPks) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoCachePk },\n ...perpMarketPks.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n CachePerpMarkets: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeCachePerpMarketInstruction = makeCachePerpMarketInstruction;\nfunction makeAddSpotMarketInstruction(programId, mangoGroupPk, oraclePk, spotMarketPk, serumDexPk, mintPk, nodeBankPk, vaultPk, rootBankPk, adminPk, maintLeverage, initLeverage, liquidationFee, optimalUtil, optimalRate, maxRate) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: oraclePk },\n { isSigner: false, isWritable: false, pubkey: spotMarketPk },\n { isSigner: false, isWritable: false, pubkey: serumDexPk },\n { isSigner: false, isWritable: false, pubkey: mintPk },\n { isSigner: false, isWritable: true, pubkey: nodeBankPk },\n { isSigner: false, isWritable: false, pubkey: vaultPk },\n { isSigner: false, isWritable: true, pubkey: rootBankPk },\n { isSigner: true, isWritable: false, pubkey: adminPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n AddSpotMarket: {\n maintLeverage,\n initLeverage,\n liquidationFee,\n optimalUtil,\n optimalRate,\n maxRate,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeAddSpotMarketInstruction = makeAddSpotMarketInstruction;\nfunction makeInitSpotOpenOrdersInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, serumDexPk, openOrdersPk, spotMarketPk, signerPk) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n { isSigner: false, isWritable: false, pubkey: serumDexPk },\n { isSigner: false, isWritable: true, pubkey: openOrdersPk },\n { isSigner: false, isWritable: false, pubkey: spotMarketPk },\n { isSigner: false, isWritable: false, pubkey: signerPk },\n { isSigner: false, isWritable: false, pubkey: web3_js_1.SYSVAR_RENT_PUBKEY },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n InitSpotOpenOrders: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeInitSpotOpenOrdersInstruction = makeInitSpotOpenOrdersInstruction;\nfunction makeCreateSpotOpenOrdersInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, serumDexPk, openOrdersPk, spotMarketPk, signerPk) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: true, pubkey: ownerPk },\n { isSigner: false, isWritable: false, pubkey: serumDexPk },\n { isSigner: false, isWritable: true, pubkey: openOrdersPk },\n { isSigner: false, isWritable: false, pubkey: spotMarketPk },\n { isSigner: false, isWritable: false, pubkey: signerPk },\n { isSigner: false, isWritable: false, pubkey: web3_js_1.SystemProgram.programId },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n CreateSpotOpenOrders: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeCreateSpotOpenOrdersInstruction = makeCreateSpotOpenOrdersInstruction;\nfunction makePlaceSpotOrderInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, mangoCachePk, serumDexPk, spotMarketPk, bidsPk, asksPk, requestQueuePk, eventQueuePk, spotMktBaseVaultPk, spotMktQuoteVaultPk, baseRootBankPk, baseNodeBankPk, baseVaultPk, quoteRootBankPk, quoteNodeBankPk, quoteVaultPk, signerPk, dexSignerPk, msrmOrSrmVaultPk, \n// pass in only openOrders in margin basket, and only the market index one should be writable\nopenOrders, side, limitPrice, maxBaseQuantity, maxQuoteQuantity, selfTradeBehavior, orderType, clientId) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: false, pubkey: serumDexPk },\n { isSigner: false, isWritable: true, pubkey: spotMarketPk },\n { isSigner: false, isWritable: true, pubkey: bidsPk },\n { isSigner: false, isWritable: true, pubkey: asksPk },\n { isSigner: false, isWritable: true, pubkey: requestQueuePk },\n { isSigner: false, isWritable: true, pubkey: eventQueuePk },\n { isSigner: false, isWritable: true, pubkey: spotMktBaseVaultPk },\n { isSigner: false, isWritable: true, pubkey: spotMktQuoteVaultPk },\n { isSigner: false, isWritable: false, pubkey: baseRootBankPk },\n { isSigner: false, isWritable: true, pubkey: baseNodeBankPk },\n { isSigner: false, isWritable: true, pubkey: baseVaultPk },\n { isSigner: false, isWritable: false, pubkey: quoteRootBankPk },\n { isSigner: false, isWritable: true, pubkey: quoteNodeBankPk },\n { isSigner: false, isWritable: true, pubkey: quoteVaultPk },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n { isSigner: false, isWritable: false, pubkey: signerPk },\n { isSigner: false, isWritable: false, pubkey: web3_js_1.SYSVAR_RENT_PUBKEY },\n { isSigner: false, isWritable: false, pubkey: dexSignerPk },\n { isSigner: false, isWritable: false, pubkey: msrmOrSrmVaultPk },\n ...openOrders.map(({ pubkey, isWritable }) => ({\n isSigner: false,\n isWritable,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n PlaceSpotOrder: {\n side,\n limitPrice,\n maxBaseQuantity,\n maxQuoteQuantity,\n selfTradeBehavior,\n orderType,\n clientId,\n limit: 65535,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makePlaceSpotOrderInstruction = makePlaceSpotOrderInstruction;\nfunction makePlaceSpotOrder2Instruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, mangoCachePk, serumDexPk, spotMarketPk, bidsPk, asksPk, requestQueuePk, eventQueuePk, spotMktBaseVaultPk, spotMktQuoteVaultPk, baseRootBankPk, baseNodeBankPk, baseVaultPk, quoteRootBankPk, quoteNodeBankPk, quoteVaultPk, signerPk, dexSignerPk, msrmOrSrmVaultPk, \n// pass in only openOrders in margin basket, and only the market index one should be writable\nopenOrders, side, limitPrice, maxBaseQuantity, maxQuoteQuantity, selfTradeBehavior, orderType, clientOrderId) {\n // TODO - this is wrong, accounts have changed in place spot 2\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: false, pubkey: serumDexPk },\n { isSigner: false, isWritable: true, pubkey: spotMarketPk },\n { isSigner: false, isWritable: true, pubkey: bidsPk },\n { isSigner: false, isWritable: true, pubkey: asksPk },\n { isSigner: false, isWritable: true, pubkey: requestQueuePk },\n { isSigner: false, isWritable: true, pubkey: eventQueuePk },\n { isSigner: false, isWritable: true, pubkey: spotMktBaseVaultPk },\n { isSigner: false, isWritable: true, pubkey: spotMktQuoteVaultPk },\n { isSigner: false, isWritable: false, pubkey: baseRootBankPk },\n { isSigner: false, isWritable: true, pubkey: baseNodeBankPk },\n { isSigner: false, isWritable: true, pubkey: baseVaultPk },\n { isSigner: false, isWritable: false, pubkey: quoteRootBankPk },\n { isSigner: false, isWritable: true, pubkey: quoteNodeBankPk },\n { isSigner: false, isWritable: true, pubkey: quoteVaultPk },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n { isSigner: false, isWritable: false, pubkey: signerPk },\n { isSigner: false, isWritable: false, pubkey: dexSignerPk },\n { isSigner: false, isWritable: false, pubkey: msrmOrSrmVaultPk },\n ...openOrders.map(({ pubkey, isWritable }) => ({\n isSigner: false,\n isWritable,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n PlaceSpotOrder2: {\n side,\n limitPrice,\n maxBaseQuantity,\n maxQuoteQuantity,\n selfTradeBehavior,\n orderType,\n clientOrderId,\n limit: 65535,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makePlaceSpotOrder2Instruction = makePlaceSpotOrder2Instruction;\nfunction makeUpdateRootBankInstruction(programId, mangoGroupPk, mangoCachePk, rootBankPk, nodeBanks) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoCachePk },\n { isSigner: false, isWritable: true, pubkey: rootBankPk },\n ...nodeBanks.map((pubkey) => ({\n isSigner: false,\n isWritable: true,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n UpdateRootBank: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeUpdateRootBankInstruction = makeUpdateRootBankInstruction;\nfunction makeAddOracleInstruction(programId, mangoGroupPk, oraclePk, adminPk) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: oraclePk },\n { isSigner: true, isWritable: false, pubkey: adminPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({ AddOracle: {} });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeAddOracleInstruction = makeAddOracleInstruction;\nfunction makeSetOracleInstruction(programId, mangoGroupPk, oraclePk, adminPk, price) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: oraclePk },\n { isSigner: true, isWritable: false, pubkey: adminPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n SetOracle: { price },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeSetOracleInstruction = makeSetOracleInstruction;\nfunction makeAddPerpMarketInstruction(programId, mangoGroupPk, oraclePk, perpMarketPk, eventQueuePk, bidsPk, asksPk, mngoVaultPk, adminPk, maintLeverage, initLeverage, liquidationFee, makerFee, takerFee, baseLotSize, quoteLotSize, rate, maxDepthBps, targetPeriodLength, mngoPerPeriod, exp) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: oraclePk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n { isSigner: false, isWritable: true, pubkey: eventQueuePk },\n { isSigner: false, isWritable: true, pubkey: bidsPk },\n { isSigner: false, isWritable: true, pubkey: asksPk },\n { isSigner: false, isWritable: false, pubkey: mngoVaultPk },\n { isSigner: true, isWritable: false, pubkey: adminPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n AddPerpMarket: {\n maintLeverage,\n initLeverage,\n liquidationFee,\n makerFee,\n takerFee,\n baseLotSize,\n quoteLotSize,\n rate,\n maxDepthBps,\n targetPeriodLength,\n mngoPerPeriod,\n exp,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeAddPerpMarketInstruction = makeAddPerpMarketInstruction;\nfunction makeCreatePerpMarketInstruction(programId, mangoGroupPk, oraclePk, perpMarketPk, eventQueuePk, bidsPk, asksPk, mngoMintPk, mngoVaultPk, adminPk, signerPk, maintLeverage, initLeverage, liquidationFee, makerFee, takerFee, baseLotSize, quoteLotSize, rate, maxDepthBps, targetPeriodLength, mngoPerPeriod, exp, version, lmSizeShift, baseDecimals) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: oraclePk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n { isSigner: false, isWritable: true, pubkey: eventQueuePk },\n { isSigner: false, isWritable: true, pubkey: bidsPk },\n { isSigner: false, isWritable: true, pubkey: asksPk },\n { isSigner: false, isWritable: false, pubkey: mngoMintPk },\n { isSigner: false, isWritable: true, pubkey: mngoVaultPk },\n { isSigner: true, isWritable: true, pubkey: adminPk },\n { isSigner: false, isWritable: true, pubkey: signerPk },\n { isSigner: false, isWritable: false, pubkey: web3_js_1.SystemProgram.programId },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n { isSigner: false, isWritable: false, pubkey: web3_js_1.SYSVAR_RENT_PUBKEY },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n CreatePerpMarket: {\n maintLeverage,\n initLeverage,\n liquidationFee,\n makerFee,\n takerFee,\n baseLotSize,\n quoteLotSize,\n rate,\n maxDepthBps,\n targetPeriodLength,\n mngoPerPeriod,\n exp,\n version,\n lmSizeShift,\n baseDecimals,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeCreatePerpMarketInstruction = makeCreatePerpMarketInstruction;\nfunction makeCachePerpMarketsInstruction(programId, mangoGroupPk, mangoCachePk, perpMarkets) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoCachePk },\n ...perpMarkets.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n CachePerpMarkets: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeCachePerpMarketsInstruction = makeCachePerpMarketsInstruction;\nfunction makeSettlePnlInstruction(programId, mangoGroupPk, mangoAccountAPk, mangoAccountBPk, mangoCachePk, rootBankPk, nodeBankPk, marketIndex) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountAPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountBPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: false, pubkey: rootBankPk },\n { isSigner: false, isWritable: true, pubkey: nodeBankPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n SettlePnl: {\n marketIndex,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeSettlePnlInstruction = makeSettlePnlInstruction;\nfunction makeConsumeEventsInstruction(programId, mangoGroupPk, mangoCachePk, perpMarketPk, eventQueuePk, mangoAccountPks, limit) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n { isSigner: false, isWritable: true, pubkey: eventQueuePk },\n ...mangoAccountPks.sort().map((pubkey) => ({\n isSigner: false,\n isWritable: true,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n ConsumeEvents: { limit },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeConsumeEventsInstruction = makeConsumeEventsInstruction;\nfunction makePlacePerpOrderInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, mangoCachePk, perpMarketPk, bidsPk, asksPk, eventQueuePk, openOrders, price, quantity, clientOrderId, side, orderType, reduceOnly, referrerMangoAccountPk) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n { isSigner: false, isWritable: true, pubkey: bidsPk },\n { isSigner: false, isWritable: true, pubkey: asksPk },\n { isSigner: false, isWritable: true, pubkey: eventQueuePk },\n ...openOrders.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ];\n if (referrerMangoAccountPk !== undefined) {\n keys.push({\n isSigner: false,\n isWritable: true,\n pubkey: referrerMangoAccountPk,\n });\n }\n const data = (0, layout_1.encodeMangoInstruction)({\n PlacePerpOrder: {\n price,\n quantity,\n clientOrderId,\n side,\n orderType,\n reduceOnly: reduceOnly ? reduceOnly : false,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makePlacePerpOrderInstruction = makePlacePerpOrderInstruction;\nfunction makePlacePerpOrder2Instruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, mangoCachePk, perpMarketPk, bidsPk, asksPk, eventQueuePk, openOrders, // pass in only open orders in margin basket\nprice, maxBaseQuantity, maxQuoteQuantity, clientOrderId, side, limit, // one byte; max 255\norderType, reduceOnly, referrerMangoAccountPk, expiryTimestamp, expiryType) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n { isSigner: false, isWritable: true, pubkey: bidsPk },\n { isSigner: false, isWritable: true, pubkey: asksPk },\n { isSigner: false, isWritable: true, pubkey: eventQueuePk },\n {\n isSigner: false,\n isWritable: true,\n pubkey: referrerMangoAccountPk ? referrerMangoAccountPk : mangoAccountPk,\n },\n ...openOrders.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ];\n if (referrerMangoAccountPk !== undefined) {\n keys.push({\n isSigner: false,\n isWritable: true,\n pubkey: referrerMangoAccountPk,\n });\n }\n const data = (0, layout_1.encodeMangoInstruction)({\n PlacePerpOrder2: {\n price,\n maxBaseQuantity,\n maxQuoteQuantity,\n clientOrderId,\n expiryTimestamp: expiryTimestamp ? expiryTimestamp : utils_1.ZERO_BN,\n side,\n orderType,\n reduceOnly: reduceOnly ? reduceOnly : false,\n limit,\n expiryType,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makePlacePerpOrder2Instruction = makePlacePerpOrder2Instruction;\nfunction makeUpdateFundingInstruction(programId, mangoGroupPk, mangoCachePk, perpMarketPk, bidsPk, asksPk) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoCachePk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n { isSigner: false, isWritable: false, pubkey: bidsPk },\n { isSigner: false, isWritable: false, pubkey: asksPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n UpdateFunding: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeUpdateFundingInstruction = makeUpdateFundingInstruction;\nfunction makeForceCancelSpotOrdersInstruction(programId, mangoGroupPk, mangoCachePk, liqeeMangoAccountPk, baseRootBankPk, baseNodeBankPk, baseVaultPk, quoteRootBankPk, quoteNodeBankPk, quoteVaultPk, spotMarketPk, bidsPk, asksPk, signerPk, dexEventQueuePk, dexBasePk, dexQuotePk, dexSignerPk, dexProgramPk, liqeeOpenOrdersKeys, limit) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: true, pubkey: liqeeMangoAccountPk },\n { isSigner: false, isWritable: false, pubkey: baseRootBankPk },\n { isSigner: false, isWritable: true, pubkey: baseNodeBankPk },\n { isSigner: false, isWritable: true, pubkey: baseVaultPk },\n { isSigner: false, isWritable: false, pubkey: quoteRootBankPk },\n { isSigner: false, isWritable: true, pubkey: quoteNodeBankPk },\n { isSigner: false, isWritable: true, pubkey: quoteVaultPk },\n { isSigner: false, isWritable: true, pubkey: spotMarketPk },\n { isSigner: false, isWritable: true, pubkey: bidsPk },\n { isSigner: false, isWritable: true, pubkey: asksPk },\n { isSigner: false, isWritable: false, pubkey: signerPk },\n { isSigner: false, isWritable: true, pubkey: dexEventQueuePk },\n { isSigner: false, isWritable: true, pubkey: dexBasePk },\n { isSigner: false, isWritable: true, pubkey: dexQuotePk },\n { isSigner: false, isWritable: false, pubkey: dexSignerPk },\n { isSigner: false, isWritable: false, pubkey: dexProgramPk },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n ...liqeeOpenOrdersKeys.map(({ pubkey, isWritable }) => ({\n isSigner: false,\n isWritable,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n ForceCancelSpotOrders: {\n limit,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeForceCancelSpotOrdersInstruction = makeForceCancelSpotOrdersInstruction;\nfunction makeForceCancelPerpOrdersInstruction(programId, mangoGroupPk, mangoCachePk, perpMarketPk, bidsPk, asksPk, liqeeMangoAccountPk, liqorOpenOrdersPks, limit) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: false, pubkey: perpMarketPk },\n { isSigner: false, isWritable: true, pubkey: bidsPk },\n { isSigner: false, isWritable: true, pubkey: asksPk },\n { isSigner: false, isWritable: true, pubkey: liqeeMangoAccountPk },\n ...liqorOpenOrdersPks.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n ForceCancelPerpOrders: {\n limit,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeForceCancelPerpOrdersInstruction = makeForceCancelPerpOrdersInstruction;\nfunction makeLiquidateTokenAndTokenInstruction(programId, mangoGroupPk, mangoCachePk, liqeeMangoAccountPk, liqorMangoAccountPk, liqorAccountPk, assetRootBankPk, assetNodeBankPk, liabRootBankPk, liabNodeBankPk, liqeeOpenOrdersPks, liqorOpenOrdersPks, maxLiabTransfer) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: true, pubkey: liqeeMangoAccountPk },\n { isSigner: false, isWritable: true, pubkey: liqorMangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: liqorAccountPk },\n { isSigner: false, isWritable: false, pubkey: assetRootBankPk },\n { isSigner: false, isWritable: true, pubkey: assetNodeBankPk },\n { isSigner: false, isWritable: false, pubkey: liabRootBankPk },\n { isSigner: false, isWritable: true, pubkey: liabNodeBankPk },\n ...liqeeOpenOrdersPks.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ...liqorOpenOrdersPks.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n LiquidateTokenAndToken: {\n maxLiabTransfer,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeLiquidateTokenAndTokenInstruction = makeLiquidateTokenAndTokenInstruction;\nfunction makeLiquidateTokenAndPerpInstruction(programId, mangoGroupPk, mangoCachePk, liqeeMangoAccountPk, liqorMangoAccountPk, liqorAccountPk, rootBankPk, nodeBankPk, liqeeOpenOrdersPks, liqorOpenOrdersPks, assetType, assetIndex, liabType, liabIndex, maxLiabTransfer) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: true, pubkey: liqeeMangoAccountPk },\n { isSigner: false, isWritable: true, pubkey: liqorMangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: liqorAccountPk },\n { isSigner: false, isWritable: false, pubkey: rootBankPk },\n { isSigner: false, isWritable: true, pubkey: nodeBankPk },\n ...liqeeOpenOrdersPks.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ...liqorOpenOrdersPks.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n LiquidateTokenAndPerp: {\n assetType,\n assetIndex,\n liabType,\n liabIndex,\n maxLiabTransfer,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeLiquidateTokenAndPerpInstruction = makeLiquidateTokenAndPerpInstruction;\nfunction makeLiquidatePerpMarketInstruction(programId, mangoGroupPk, mangoCachePk, perpMarketPk, eventQueuePk, liqeeMangoAccountPk, liqorMangoAccountPk, liqorAccountPk, liqeeOpenOrdersPks, liqorOpenOrdersPks, baseTransferRequest) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n { isSigner: false, isWritable: true, pubkey: eventQueuePk },\n { isSigner: false, isWritable: true, pubkey: liqeeMangoAccountPk },\n { isSigner: false, isWritable: true, pubkey: liqorMangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: liqorAccountPk },\n ...liqeeOpenOrdersPks.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ...liqorOpenOrdersPks.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n LiquidatePerpMarket: {\n baseTransferRequest,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeLiquidatePerpMarketInstruction = makeLiquidatePerpMarketInstruction;\nfunction makeSettleFeesInstruction(programId, mangoGroupPk, mangoCachePk, perpMarketPk, mangoAccountPk, rootBankPk, nodeBankPk, bankVaultPk, feesVaultPk, signerPk) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: false, isWritable: false, pubkey: rootBankPk },\n { isSigner: false, isWritable: true, pubkey: nodeBankPk },\n { isSigner: false, isWritable: true, pubkey: bankVaultPk },\n { isSigner: false, isWritable: true, pubkey: feesVaultPk },\n { isSigner: false, isWritable: false, pubkey: signerPk },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n SettleFees: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeSettleFeesInstruction = makeSettleFeesInstruction;\nfunction makeResolvePerpBankruptcyInstruction(programId, mangoGroupPk, mangoCachePk, liqeeMangoAccountPk, liqorMangoAccountPk, liqorPk, rootBankPk, nodeBankPk, vaultPk, insuranceVaultPk, signerPk, perpMarketPk, liqorOpenOrdersPks, liabIndex, maxLiabTransfer) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoCachePk },\n { isSigner: false, isWritable: true, pubkey: liqeeMangoAccountPk },\n { isSigner: false, isWritable: true, pubkey: liqorMangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: liqorPk },\n { isSigner: false, isWritable: false, pubkey: rootBankPk },\n { isSigner: false, isWritable: true, pubkey: nodeBankPk },\n { isSigner: false, isWritable: true, pubkey: vaultPk },\n { isSigner: false, isWritable: true, pubkey: insuranceVaultPk },\n { isSigner: false, isWritable: false, pubkey: signerPk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n ...liqorOpenOrdersPks.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n ResolvePerpBankruptcy: {\n liabIndex,\n maxLiabTransfer,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeResolvePerpBankruptcyInstruction = makeResolvePerpBankruptcyInstruction;\nfunction makeResolveTokenBankruptcyInstruction(programId, mangoGroupPk, mangoCachePk, liqeeMangoAccountPk, liqorMangoAccountPk, liqorPk, quoteRootBankPk, quoteNodeBankPk, quoteVaultPk, insuranceVaultPk, signerPk, liabRootBankPk, liabNodeBankPk, liqorOpenOrdersPks, liabNodeBankPks, maxLiabTransfer) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoCachePk },\n { isSigner: false, isWritable: true, pubkey: liqeeMangoAccountPk },\n { isSigner: false, isWritable: true, pubkey: liqorMangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: liqorPk },\n { isSigner: false, isWritable: false, pubkey: quoteRootBankPk },\n { isSigner: false, isWritable: true, pubkey: quoteNodeBankPk },\n { isSigner: false, isWritable: true, pubkey: quoteVaultPk },\n { isSigner: false, isWritable: true, pubkey: insuranceVaultPk },\n { isSigner: false, isWritable: false, pubkey: signerPk },\n { isSigner: false, isWritable: true, pubkey: liabRootBankPk },\n { isSigner: false, isWritable: true, pubkey: liabNodeBankPk },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n ...liqorOpenOrdersPks.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ...liabNodeBankPks.map((pubkey) => ({\n isSigner: false,\n isWritable: true,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n ResolveTokenBankruptcy: {\n maxLiabTransfer,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeResolveTokenBankruptcyInstruction = makeResolveTokenBankruptcyInstruction;\nfunction makeRedeemMngoInstruction(programId, mangoGroup, mangoCache, mangoAccount, owner, perpMarket, mngoPerpVault, mngoRootBank, mngoNodeBank, mngoBankVault, signer) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroup },\n { isSigner: false, isWritable: false, pubkey: mangoCache },\n { isSigner: false, isWritable: true, pubkey: mangoAccount },\n { isSigner: true, isWritable: false, pubkey: owner },\n { isSigner: false, isWritable: false, pubkey: perpMarket },\n { isSigner: false, isWritable: true, pubkey: mngoPerpVault },\n { isSigner: false, isWritable: false, pubkey: mngoRootBank },\n { isSigner: false, isWritable: true, pubkey: mngoNodeBank },\n { isSigner: false, isWritable: true, pubkey: mngoBankVault },\n { isSigner: false, isWritable: false, pubkey: signer },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({ RedeemMngo: {} });\n return new web3_js_1.TransactionInstruction({ keys, data, programId });\n}\nexports.makeRedeemMngoInstruction = makeRedeemMngoInstruction;\nfunction makeAddMangoAccountInfoInstruction(programId, mangoGroup, mangoAccount, owner, info) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroup },\n { isSigner: false, isWritable: true, pubkey: mangoAccount },\n { isSigner: true, isWritable: false, pubkey: owner },\n ];\n // TODO convert info into a 32 byte utf encoded byte array\n const encoded = Buffer.from(info);\n if (encoded.length > layout_1.INFO_LEN) {\n throw new Error('info string too long. Must be less than or equal to 32 bytes');\n }\n const infoArray = new Uint8Array(encoded, 0, layout_1.INFO_LEN);\n const data = (0, layout_1.encodeMangoInstruction)({\n AddMangoAccountInfo: { info: infoArray },\n });\n return new web3_js_1.TransactionInstruction({ keys, data, programId });\n}\nexports.makeAddMangoAccountInfoInstruction = makeAddMangoAccountInfoInstruction;\nfunction makeDepositMsrmInstruction(programId, mangoGroup, mangoAccount, owner, msrmAccount, msrmVault, quantity) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroup },\n { isSigner: false, isWritable: true, pubkey: mangoAccount },\n { isSigner: true, isWritable: false, pubkey: owner },\n { isSigner: false, isWritable: true, pubkey: msrmAccount },\n { isSigner: false, isWritable: true, pubkey: msrmVault },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({ DepositMsrm: { quantity } });\n return new web3_js_1.TransactionInstruction({ keys, data, programId });\n}\nexports.makeDepositMsrmInstruction = makeDepositMsrmInstruction;\nfunction makeWithdrawMsrmInstruction(programId, mangoGroup, mangoAccount, owner, msrmAccount, msrmVault, signer, quantity) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroup },\n { isSigner: false, isWritable: true, pubkey: mangoAccount },\n { isSigner: true, isWritable: false, pubkey: owner },\n { isSigner: false, isWritable: true, pubkey: msrmAccount },\n { isSigner: false, isWritable: true, pubkey: msrmVault },\n { isSigner: false, isWritable: false, pubkey: signer },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({ WithdrawMsrm: { quantity } });\n return new web3_js_1.TransactionInstruction({ keys, data, programId });\n}\nexports.makeWithdrawMsrmInstruction = makeWithdrawMsrmInstruction;\nfunction makeChangePerpMarketParamsInstruction(programId, mangoGroupPk, perpMarketPk, adminPk, maintLeverage, initLeverage, liquidationFee, makerFee, takerFee, rate, maxDepthBps, targetPeriodLength, mngoPerPeriod, exp) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n { isSigner: true, isWritable: false, pubkey: adminPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n ChangePerpMarketParams: {\n maintLeverageOption: maintLeverage !== undefined,\n maintLeverage: maintLeverage !== undefined ? maintLeverage : fixednum_1.ZERO_I80F48,\n initLeverageOption: initLeverage !== undefined,\n initLeverage: initLeverage !== undefined ? initLeverage : fixednum_1.ZERO_I80F48,\n liquidationFeeOption: liquidationFee !== undefined,\n liquidationFee: liquidationFee !== undefined ? liquidationFee : fixednum_1.ZERO_I80F48,\n makerFeeOption: makerFee !== undefined,\n makerFee: makerFee !== undefined ? makerFee : fixednum_1.ZERO_I80F48,\n takerFeeOption: takerFee !== undefined,\n takerFee: takerFee !== undefined ? takerFee : fixednum_1.ZERO_I80F48,\n rateOption: rate !== undefined,\n rate: rate !== undefined ? rate : fixednum_1.ZERO_I80F48,\n maxDepthBpsOption: maxDepthBps !== undefined,\n maxDepthBps: maxDepthBps !== undefined ? maxDepthBps : fixednum_1.ZERO_I80F48,\n targetPeriodLengthOption: targetPeriodLength !== undefined,\n targetPeriodLength: targetPeriodLength !== undefined ? targetPeriodLength : utils_1.ZERO_BN,\n mngoPerPeriodOption: mngoPerPeriod !== undefined,\n mngoPerPeriod: mngoPerPeriod !== undefined ? mngoPerPeriod : utils_1.ZERO_BN,\n expOption: exp !== undefined,\n exp: exp !== undefined ? exp : utils_1.ZERO_BN,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeChangePerpMarketParamsInstruction = makeChangePerpMarketParamsInstruction;\nfunction makeChangePerpMarketParams2Instruction(programId, mangoGroupPk, perpMarketPk, adminPk, maintLeverage, initLeverage, liquidationFee, makerFee, takerFee, rate, maxDepthBps, targetPeriodLength, mngoPerPeriod, exp, version, lmSizeShift) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n { isSigner: true, isWritable: false, pubkey: adminPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n ChangePerpMarketParams2: {\n maintLeverageOption: maintLeverage !== undefined,\n maintLeverage: maintLeverage !== undefined ? maintLeverage : fixednum_1.ZERO_I80F48,\n initLeverageOption: initLeverage !== undefined,\n initLeverage: initLeverage !== undefined ? initLeverage : fixednum_1.ZERO_I80F48,\n liquidationFeeOption: liquidationFee !== undefined,\n liquidationFee: liquidationFee !== undefined ? liquidationFee : fixednum_1.ZERO_I80F48,\n makerFeeOption: makerFee !== undefined,\n makerFee: makerFee !== undefined ? makerFee : fixednum_1.ZERO_I80F48,\n takerFeeOption: takerFee !== undefined,\n takerFee: takerFee !== undefined ? takerFee : fixednum_1.ZERO_I80F48,\n rateOption: rate !== undefined,\n rate: rate !== undefined ? rate : fixednum_1.ZERO_I80F48,\n maxDepthBpsOption: maxDepthBps !== undefined,\n maxDepthBps: maxDepthBps !== undefined ? maxDepthBps : fixednum_1.ZERO_I80F48,\n targetPeriodLengthOption: targetPeriodLength !== undefined,\n targetPeriodLength: targetPeriodLength !== undefined ? targetPeriodLength : utils_1.ZERO_BN,\n mngoPerPeriodOption: mngoPerPeriod !== undefined,\n mngoPerPeriod: mngoPerPeriod !== undefined ? mngoPerPeriod : utils_1.ZERO_BN,\n expOption: exp !== undefined,\n exp: exp !== undefined ? exp : utils_1.ZERO_BN,\n versionOption: version !== undefined,\n version: version !== undefined ? version : utils_1.ZERO_BN,\n lmSizeShiftOption: lmSizeShift !== undefined,\n lmSizeShift: lmSizeShift !== undefined ? lmSizeShift : utils_1.ZERO_BN,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeChangePerpMarketParams2Instruction = makeChangePerpMarketParams2Instruction;\nfunction makeSetGroupAdminInstruction(programId, mangoGroupPk, newAdminPk, adminPk) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: newAdminPk },\n { isSigner: true, isWritable: false, pubkey: adminPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n SetGroupAdmin: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeSetGroupAdminInstruction = makeSetGroupAdminInstruction;\nfunction makeRemoveAdvancedOrderInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, advancedOrdersPk, orderIndex) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: true, pubkey: ownerPk },\n { isSigner: false, isWritable: true, pubkey: advancedOrdersPk },\n { isSigner: false, isWritable: false, pubkey: web3_js_1.SystemProgram.programId },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n RemoveAdvancedOrder: { orderIndex },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeRemoveAdvancedOrderInstruction = makeRemoveAdvancedOrderInstruction;\nfunction makeInitAdvancedOrdersInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, advancedOrdersPk) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n { isSigner: false, isWritable: true, pubkey: advancedOrdersPk },\n { isSigner: false, isWritable: false, pubkey: web3_js_1.SystemProgram.programId },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n InitAdvancedOrders: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeInitAdvancedOrdersInstruction = makeInitAdvancedOrdersInstruction;\nfunction makeAddPerpTriggerOrderInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, advancedOrdersPk, mangoCachePk, perpMarketPk, openOrders, orderType, side, price, quantity, triggerCondition, triggerPrice, reduceOnly, clientOrderId) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: true, pubkey: ownerPk },\n { isSigner: false, isWritable: true, pubkey: advancedOrdersPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: false, pubkey: perpMarketPk },\n { isSigner: false, isWritable: false, pubkey: web3_js_1.SystemProgram.programId },\n ...openOrders.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n AddPerpTriggerOrder: {\n price,\n quantity,\n clientOrderId,\n side,\n orderType,\n triggerCondition,\n triggerPrice,\n reduceOnly,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeAddPerpTriggerOrderInstruction = makeAddPerpTriggerOrderInstruction;\nfunction makeExecutePerpTriggerOrderInstruction(programId, mangoGroupPk, mangoAccountPk, advancedOrdersPk, agentPk, mangoCachePk, perpMarketPk, bidsPk, asksPk, eventQueuePk, openOrders, orderIndex) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: false, isWritable: true, pubkey: advancedOrdersPk },\n { isSigner: true, isWritable: true, pubkey: agentPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n { isSigner: false, isWritable: true, pubkey: bidsPk },\n { isSigner: false, isWritable: true, pubkey: asksPk },\n { isSigner: false, isWritable: true, pubkey: eventQueuePk },\n ...openOrders.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n ExecutePerpTriggerOrder: {\n orderIndex,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeExecutePerpTriggerOrderInstruction = makeExecutePerpTriggerOrderInstruction;\nfunction makeCloseMangoAccountInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: true, pubkey: ownerPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n CloseMangoAccount: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeCloseMangoAccountInstruction = makeCloseMangoAccountInstruction;\nfunction makeCloseSpotOpenOrdersInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, dexProgramPk, openOrdersPk, spotMarketPk, signerPk, ownerIsSigner = true) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: ownerIsSigner, isWritable: true, pubkey: ownerPk },\n { isSigner: false, isWritable: false, pubkey: dexProgramPk },\n { isSigner: false, isWritable: true, pubkey: openOrdersPk },\n { isSigner: false, isWritable: false, pubkey: spotMarketPk },\n { isSigner: false, isWritable: false, pubkey: signerPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n CloseSpotOpenOrders: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeCloseSpotOpenOrdersInstruction = makeCloseSpotOpenOrdersInstruction;\nfunction makeCloseAdvancedOrdersInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, advancedOrdersPk) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: true, pubkey: ownerPk },\n { isSigner: false, isWritable: true, pubkey: advancedOrdersPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n CloseAdvancedOrders: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeCloseAdvancedOrdersInstruction = makeCloseAdvancedOrdersInstruction;\nfunction makeCreateDustAccountInstruction(programId, mangoGroupPk, mangoAccountPk, payerPK) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: true, pubkey: payerPK },\n { isSigner: false, isWritable: false, pubkey: web3_js_1.SystemProgram.programId },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n CreateDustAccount: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeCreateDustAccountInstruction = makeCreateDustAccountInstruction;\nfunction makeResolveDustInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, dustAccountPk, rootBankPk, nodeBankPk, mangoCachePk) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n { isSigner: false, isWritable: true, pubkey: dustAccountPk },\n { isSigner: false, isWritable: false, pubkey: rootBankPk },\n { isSigner: false, isWritable: true, pubkey: nodeBankPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n ResolveDust: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeResolveDustInstruction = makeResolveDustInstruction;\nfunction makeUpdateMarginBasketInstruction(programId, mangoGroupPk, mangoAccountPk, openOrdersPks) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n ...openOrdersPks.map((pubkey) => ({\n isSigner: false,\n isWritable: true,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n UpdateMarginBasket: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeUpdateMarginBasketInstruction = makeUpdateMarginBasketInstruction;\nfunction makeCreateMangoAccountInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, accountNum, payer) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n { isSigner: false, isWritable: false, pubkey: web3_js_1.SystemProgram.programId },\n { isSigner: true, isWritable: true, pubkey: payer },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n CreateMangoAccount: {\n accountNum,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeCreateMangoAccountInstruction = makeCreateMangoAccountInstruction;\nfunction makeUpgradeMangoAccountV0V1Instruction(programId, mangoGroupPk, mangoAccountPk, ownerPk) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n UpgradeMangoAccountV0V1: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeUpgradeMangoAccountV0V1Instruction = makeUpgradeMangoAccountV0V1Instruction;\nfunction makeChangeMaxMangoAccountsInstruction(programId, mangoGroupPk, adminPk, maxMangoAccounts) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: true, isWritable: false, pubkey: adminPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n ChangeMaxMangoAccounts: {\n maxMangoAccounts,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeChangeMaxMangoAccountsInstruction = makeChangeMaxMangoAccountsInstruction;\nfunction makeCancelPerpOrdersSideInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, perpMarketPk, bidsPk, asksPk, side, limit) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n { isSigner: false, isWritable: true, pubkey: bidsPk },\n { isSigner: false, isWritable: true, pubkey: asksPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n CancelPerpOrdersSide: {\n side,\n limit,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeCancelPerpOrdersSideInstruction = makeCancelPerpOrdersSideInstruction;\nfunction makeSetDelegateInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, delegatePk) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n { isSigner: false, isWritable: false, pubkey: delegatePk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n SetDelegate: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeSetDelegateInstruction = makeSetDelegateInstruction;\nfunction makeChangeSpotMarketParamsInstruction(programId, mangoGroupPk, spotMarketPk, rootBankPk, adminPk, maintLeverage, initLeverage, liquidationFee, optimalUtil, optimalRate, maxRate, version) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: spotMarketPk },\n { isSigner: false, isWritable: true, pubkey: rootBankPk },\n { isSigner: true, isWritable: false, pubkey: adminPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n ChangeSpotMarketParams: {\n maintLeverageOption: maintLeverage !== undefined,\n maintLeverage: maintLeverage != undefined ? maintLeverage : fixednum_1.ZERO_I80F48,\n initLeverageOption: initLeverage !== undefined,\n initLeverage: initLeverage != undefined ? initLeverage : fixednum_1.ZERO_I80F48,\n liquidationFeeOption: liquidationFee !== undefined,\n liquidationFee: liquidationFee != undefined ? liquidationFee : fixednum_1.ZERO_I80F48,\n optimalUtilOption: optimalUtil !== undefined,\n optimalUtil: optimalUtil != undefined ? optimalUtil : fixednum_1.ZERO_I80F48,\n optimalRateOption: optimalRate !== undefined,\n optimalRate: optimalRate != undefined ? optimalRate : fixednum_1.ZERO_I80F48,\n maxRateOption: maxRate !== undefined,\n maxRate: maxRate != undefined ? maxRate : fixednum_1.ZERO_I80F48,\n versionOption: version !== undefined,\n version: version != undefined ? version : utils_1.ZERO_BN,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeChangeSpotMarketParamsInstruction = makeChangeSpotMarketParamsInstruction;\nfunction makeChangeReferralFeeParamsInstruction(programId, mangoGroupPk, adminPk, refSurchargeCentibps, refShareCentibps, refMngoRequired) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: true, isWritable: false, pubkey: adminPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n ChangeReferralFeeParams: {\n refSurchargeCentibps,\n refShareCentibps,\n refMngoRequired,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeChangeReferralFeeParamsInstruction = makeChangeReferralFeeParamsInstruction;\nfunction makeChangeReferralFeeParams2Instruction(programId, mangoGroupPk, adminPk, refSurchargeCentibpsTier1, refShareCentibpsTier1, refSurchargeCentibpsTier2, refShareCentibpsTier2, refMngoRequired, refMngoTier2Factor) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: true, isWritable: false, pubkey: adminPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n ChangeReferralFeeParams2: {\n refSurchargeCentibpsTier1,\n refShareCentibpsTier1,\n refSurchargeCentibpsTier2,\n refShareCentibpsTier2,\n refMngoRequired,\n refMngoTier2Factor,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeChangeReferralFeeParams2Instruction = makeChangeReferralFeeParams2Instruction;\nfunction makeSetReferrerMemoryInstruction(programId, mangoGroupPk, mangoAccountPk, ownerPk, referrerMemoryPk, referrerMangoAccountPk, payerPk) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: ownerPk },\n { isSigner: false, isWritable: true, pubkey: referrerMemoryPk },\n { isSigner: false, isWritable: false, pubkey: referrerMangoAccountPk },\n { isSigner: true, isWritable: true, pubkey: payerPk },\n { isSigner: false, isWritable: false, pubkey: web3_js_1.SystemProgram.programId },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n SetReferrerMemory: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeSetReferrerMemoryInstruction = makeSetReferrerMemoryInstruction;\nfunction makeRegisterReferrerIdInstruction(programId, mangoGroupPk, referrerMangoAccountPk, referrerIdRecordPk, payerPk, referrerId) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: referrerMangoAccountPk },\n { isSigner: false, isWritable: true, pubkey: referrerIdRecordPk },\n { isSigner: true, isWritable: true, pubkey: payerPk },\n { isSigner: false, isWritable: false, pubkey: web3_js_1.SystemProgram.programId },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n RegisterReferrerId: { referrerId },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeRegisterReferrerIdInstruction = makeRegisterReferrerIdInstruction;\nfunction makeWithdraw2Instruction(programId, mangoGroupPk, mangoAccountPk, walletPk, mangoCachePk, rootBankPk, nodeBankPk, vaultPk, tokenAccPk, signerKey, \n// pass in only openOrders in margin basket\nopenOrders, nativeQuantity, allowBorrow) {\n const withdrawKeys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: walletPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: false, pubkey: rootBankPk },\n { isSigner: false, isWritable: true, pubkey: nodeBankPk },\n { isSigner: false, isWritable: true, pubkey: vaultPk },\n { isSigner: false, isWritable: true, pubkey: tokenAccPk },\n { isSigner: false, isWritable: false, pubkey: signerKey },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n ...openOrders.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ];\n const withdrawData = (0, layout_1.encodeMangoInstruction)({\n Withdraw2: { quantity: nativeQuantity, allowBorrow },\n });\n return new web3_js_1.TransactionInstruction({\n keys: withdrawKeys,\n data: withdrawData,\n programId,\n });\n}\nexports.makeWithdraw2Instruction = makeWithdraw2Instruction;\nfunction makeSetMarketModeInstruction(programId, mangoGroupPk, adminPk, marketIndex, marketMode, marketType) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: true, isWritable: false, pubkey: adminPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n SetMarketMode: { marketIndex, marketMode, marketType },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeSetMarketModeInstruction = makeSetMarketModeInstruction;\nfunction makeRemovePerpMarketInstruction(programId, mangoGroupPk, adminPk, perpMarketPk, eventQueuePk, bidsPk, asksPk, mngoVaultPk, mngoDaoVaultPk, signerPk) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: true, isWritable: true, pubkey: adminPk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n { isSigner: false, isWritable: true, pubkey: eventQueuePk },\n { isSigner: false, isWritable: true, pubkey: bidsPk },\n { isSigner: false, isWritable: true, pubkey: asksPk },\n { isSigner: false, isWritable: true, pubkey: mngoVaultPk },\n { isSigner: false, isWritable: true, pubkey: mngoDaoVaultPk },\n { isSigner: false, isWritable: false, pubkey: signerPk },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n RemovePerpMarket: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeRemovePerpMarketInstruction = makeRemovePerpMarketInstruction;\nfunction makeSwapSpotMarketInstruction(programId, mangoGroupPk, adminPk, newSpotMarketPk, oldSpotMarketPk, dexProgramId) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: true, isWritable: false, pubkey: adminPk },\n { isSigner: false, isWritable: false, pubkey: newSpotMarketPk },\n { isSigner: false, isWritable: false, pubkey: oldSpotMarketPk },\n { isSigner: false, isWritable: false, pubkey: dexProgramId },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n SwapSpotMarket: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeSwapSpotMarketInstruction = makeSwapSpotMarketInstruction;\nfunction makeRemoveSpotMarketInstruction(programId, mangoGroupPk, adminPk, dustAccountPk, rootBankPk, adminVaultPk, signerPk, nodeBanks, vaults) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: true, isWritable: true, pubkey: adminPk },\n { isSigner: false, isWritable: true, pubkey: dustAccountPk },\n { isSigner: false, isWritable: true, pubkey: rootBankPk },\n { isSigner: false, isWritable: true, pubkey: adminVaultPk },\n { isSigner: false, isWritable: false, pubkey: signerPk },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n ...nodeBanks.map((pubkey) => ({\n isSigner: false,\n isWritable: true,\n pubkey,\n })),\n ...vaults.map((pubkey) => ({\n isSigner: false,\n isWritable: true,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n RemoveSpotMarket: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeRemoveSpotMarketInstruction = makeRemoveSpotMarketInstruction;\nfunction makeRemoveOracleInstruction(programId, mangoGroupPk, adminPk, oraclePk) {\n const keys = [\n { isSigner: false, isWritable: true, pubkey: mangoGroupPk },\n { isSigner: true, isWritable: false, pubkey: adminPk },\n { isSigner: false, isWritable: false, pubkey: oraclePk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n RemoveOracle: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeRemoveOracleInstruction = makeRemoveOracleInstruction;\nfunction makeLiquidateDelistingTokenInstruction(programId, mangoGroupPk, mangoCachePk, dustAccountPk, liqeeMangoAccountPk, liqorMangoAccountPk, liqorPk, assetRootBankPk, assetNodeBankPk, liabRootBankPk, liabNodeBankPk, liabVaultPk, liqeeLiabTokenAccountPk, liqorLiabTokenAccountPk, signerPk, liqeeOpenOrdersPks, liqorOpenOrdersPks, maxLiquidateAmount) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: true, pubkey: dustAccountPk },\n { isSigner: false, isWritable: true, pubkey: liqeeMangoAccountPk },\n { isSigner: false, isWritable: true, pubkey: liqorMangoAccountPk },\n { isSigner: true, isWritable: false, pubkey: liqorPk },\n { isSigner: false, isWritable: false, pubkey: assetRootBankPk },\n { isSigner: false, isWritable: true, pubkey: assetNodeBankPk },\n { isSigner: false, isWritable: false, pubkey: liabRootBankPk },\n { isSigner: false, isWritable: true, pubkey: liabNodeBankPk },\n { isSigner: false, isWritable: true, pubkey: liabVaultPk },\n { isSigner: false, isWritable: true, pubkey: liqeeLiabTokenAccountPk },\n { isSigner: false, isWritable: true, pubkey: liqorLiabTokenAccountPk },\n { isSigner: false, isWritable: false, pubkey: signerPk },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n ...liqeeOpenOrdersPks.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ...liqorOpenOrdersPks.map((pubkey) => ({\n isSigner: false,\n isWritable: false,\n pubkey,\n })),\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n LiquidateDelistingToken: { maxLiquidateAmount: maxLiquidateAmount },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeLiquidateDelistingTokenInstruction = makeLiquidateDelistingTokenInstruction;\nfunction makeForceSettlePerpPositionInstruction(programId, mangoGroupPk, mangoAccountAPk, mangoAccountBPk, mangoCachePk, perpMarketPk) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountAPk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountBPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: true, pubkey: perpMarketPk },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n ForceSettlePerpPosition: {},\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeForceSettlePerpPositionInstruction = makeForceSettlePerpPositionInstruction;\nfunction makeCancelAllSpotOrdersInstruction(programId, mangoGroupPk, mangoCachePk, mangoAccountPk, owner, baseRootBankPk, baseNodeBankPk, baseVaultPk, quoteRootBankPk, quoteNodeBankPk, quoteVaultPk, spotMarketPk, bidsPk, asksPk, openOrders, signerPk, dexEventQueuePk, dexBasePk, dexQuotePk, dexSignerPk, dexProgramPk, limit, ownerIsSigner = true) {\n const keys = [\n { isSigner: false, isWritable: false, pubkey: mangoGroupPk },\n { isSigner: false, isWritable: false, pubkey: mangoCachePk },\n { isSigner: false, isWritable: true, pubkey: mangoAccountPk },\n { isSigner: ownerIsSigner, isWritable: false, pubkey: owner },\n { isSigner: false, isWritable: false, pubkey: baseRootBankPk },\n { isSigner: false, isWritable: true, pubkey: baseNodeBankPk },\n { isSigner: false, isWritable: true, pubkey: baseVaultPk },\n { isSigner: false, isWritable: false, pubkey: quoteRootBankPk },\n { isSigner: false, isWritable: true, pubkey: quoteNodeBankPk },\n { isSigner: false, isWritable: true, pubkey: quoteVaultPk },\n { isSigner: false, isWritable: true, pubkey: spotMarketPk },\n { isSigner: false, isWritable: true, pubkey: bidsPk },\n { isSigner: false, isWritable: true, pubkey: asksPk },\n { isSigner: false, isWritable: true, pubkey: openOrders },\n { isSigner: false, isWritable: false, pubkey: signerPk },\n { isSigner: false, isWritable: true, pubkey: dexEventQueuePk },\n { isSigner: false, isWritable: true, pubkey: dexBasePk },\n { isSigner: false, isWritable: true, pubkey: dexQuotePk },\n { isSigner: false, isWritable: false, pubkey: dexSignerPk },\n { isSigner: false, isWritable: false, pubkey: dexProgramPk },\n { isSigner: false, isWritable: false, pubkey: spl_token_1.TOKEN_PROGRAM_ID },\n ];\n const data = (0, layout_1.encodeMangoInstruction)({\n CancelAllSpotOrders: {\n limit,\n },\n });\n return new web3_js_1.TransactionInstruction({\n keys,\n data,\n programId,\n });\n}\nexports.makeCancelAllSpotOrdersInstruction = makeCancelAllSpotOrdersInstruction;\n//# sourceMappingURL=instruction.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.liquidityMiningInfoLayout = exports.LiquidityMiningInfoLayout = exports.StubOracleLayout = exports.NodeBankLayout = exports.RootBankLayout = exports.MangoAccountLayout = exports.MangoGroupLayout = exports.perpAccountLayout = exports.PerpAccountLayout = exports.perpMarketInfoLayout = exports.PerpMarketInfoLayout = exports.PerpMarketInfo = exports.spotMarketInfoLayout = exports.SpotMarketInfoLayout = exports.SpotMarketInfo = exports.tokenInfoLayout = exports.TokenInfoLayout = exports.TokenInfo = exports.metaDataLayout = exports.MetaDataLayout = exports.MetaData = exports.AdvancedOrderType = exports.MarketMode = exports.AssetType = exports.DataType = exports.publicKeyLayout = exports.PublicKeyLayout = exports.encodeMangoInstruction = exports.MangoInstructionLayout = exports.expiryTypeLayout = exports.advancedOrderTypeLayout = exports.triggerConditionLayout = exports.selfTradeBehaviorLayout = exports.orderTypeLayout = exports.sideLayout = exports.bool = exports.i128 = exports.u128 = exports.i64 = exports.u64 = exports.I80F48Layout = exports.CENTIBPS_PER_UNIT = exports.FREE_ORDER_SLOT = exports.MAX_PERP_OPEN_ORDERS = exports.MAX_NUM_IN_MARGIN_BASKET = exports.QUOTE_INDEX = exports.INFO_LEN = exports.MAX_NODE_BANKS = exports.MAX_PAIRS = exports.MAX_TOKENS = void 0;\nexports.ReferrerIdRecordLayout = exports.ReferrerIdRecord = exports.ReferrerMemoryLayout = exports.ReferrerMemory = exports.AdvancedOrdersLayout = exports.TokenAccountLayout = exports.NodeBank = exports.MangoCache = exports.MangoCacheLayout = exports.perpMarketCacheLayout = exports.PerpMarketCacheLayout = exports.PerpMarketCache = exports.rootBankCacheLayout = exports.RootBankCacheLayout = exports.RootBankCache = exports.priceCacheLayout = exports.PriceCacheLayout = exports.PriceCache = exports.BookSideLayout = exports.PerpEventQueueLayout = exports.PerpEventQueueHeaderLayout = exports.PerpEventLayout = exports.PerpMarketLayout = void 0;\nconst buffer_layout_1 = require(\"buffer-layout\");\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst fixednum_1 = require(\"./utils/fixednum\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst utils_1 = require(\"./utils/utils\");\nconst PerpAccount_1 = __importDefault(require(\"./PerpAccount\"));\nexports.MAX_TOKENS = 16;\nexports.MAX_PAIRS = exports.MAX_TOKENS - 1;\nexports.MAX_NODE_BANKS = 8;\nexports.INFO_LEN = 32;\nexports.QUOTE_INDEX = exports.MAX_TOKENS - 1;\nexports.MAX_NUM_IN_MARGIN_BASKET = 9;\nexports.MAX_PERP_OPEN_ORDERS = 64;\nexports.FREE_ORDER_SLOT = 255; // u8::MAX\nexports.CENTIBPS_PER_UNIT = 1000000;\nconst MAX_BOOK_NODES = 1024;\nclass _I80F48Layout extends buffer_layout_1.Blob {\n constructor(property) {\n super(16, property);\n }\n decode(b, offset) {\n let result = new bn_js_1.default(super.decode(b, offset), 10, 'le');\n result = result.fromTwos(8 * this['length']);\n return new fixednum_1.I80F48(result);\n }\n encode(src, b, offset) {\n src = src.toTwos(8 * this['length']);\n return super.encode(src.toArrayLike(Buffer, 'le', this['span']), b, offset);\n }\n}\n/** @internal */\nfunction I80F48Layout(property = '') {\n return new _I80F48Layout(property);\n}\nexports.I80F48Layout = I80F48Layout;\nclass BNLayout extends buffer_layout_1.Blob {\n constructor(number, property, signed = false) {\n super(number, property);\n this.signed = signed;\n // restore prototype chain\n Object.setPrototypeOf(this, new.target.prototype);\n }\n decode(b, offset) {\n let result = new bn_js_1.default(super.decode(b, offset), 10, 'le');\n if (this.signed)\n result = result.fromTwos(8 * this['length']);\n return result;\n }\n encode(src, b, offset) {\n if (this.signed)\n src = src.toTwos(8 * this['length']);\n return super.encode(src.toArrayLike(Buffer, 'le', this['span']), b, offset);\n }\n}\n/** @internal */\nfunction u64(property = '') {\n return new BNLayout(8, property);\n}\nexports.u64 = u64;\n/** @internal */\nfunction i64(property = '') {\n return new BNLayout(8, property, true);\n}\nexports.i64 = i64;\n/** @internal */\nfunction u128(property) {\n return new BNLayout(16, property);\n}\nexports.u128 = u128;\n/** @internal */\nfunction i128(property) {\n return new BNLayout(16, property, true);\n}\nexports.i128 = i128;\nclass WrappedLayout extends buffer_layout_1.Layout {\n constructor(layout, decoder, encoder, property) {\n super(layout.span, property);\n this.layout = layout;\n this.decoder = decoder;\n this.encoder = encoder;\n }\n decode(b, offset) {\n return this.decoder(this.layout.decode(b, offset));\n }\n encode(src, b, offset) {\n return this.layout.encode(this.encoder(src), b, offset);\n }\n getSpan(b, offset) {\n return this.layout.getSpan(b, offset);\n }\n}\n/** @internal */\nfunction bool(property) {\n return new WrappedLayout((0, buffer_layout_1.u8)(), decodeBool, encodeBool, property);\n}\nexports.bool = bool;\nfunction decodeBool(value) {\n // TODO - use commented lines after deprecating devnet.2\n return value !== 0;\n // if (value === 0) {\n // return false;\n // } else if (value === 1) {\n // return true;\n // }\n // throw new Error('Invalid bool: ' + value);\n}\nfunction encodeBool(value) {\n return value ? 1 : 0;\n}\nclass EnumLayout extends buffer_layout_1.UInt {\n constructor(values, span, property) {\n super(span, property);\n this.values = values;\n }\n encode(src, b, offset) {\n if (this.values[src] !== undefined) {\n return super.encode(this.values[src], b, offset);\n }\n throw new Error('Invalid ' + this['property']);\n }\n decode(b, offset) {\n const decodedValue = super.decode(b, offset);\n const entry = Object.entries(this.values).find(([, value]) => value === decodedValue);\n if (entry) {\n return entry[0];\n }\n throw new Error('Invalid ' + this['property']);\n }\n}\n/** @internal */\nfunction sideLayout(span, property) {\n return new EnumLayout({ buy: 0, sell: 1 }, span, property);\n}\nexports.sideLayout = sideLayout;\n/** @internal */\nfunction orderTypeLayout(property, span) {\n return new EnumLayout({ limit: 0, ioc: 1, postOnly: 2, market: 3, postOnlySlide: 4 }, span, property);\n}\nexports.orderTypeLayout = orderTypeLayout;\n/** @internal */\nfunction selfTradeBehaviorLayout(property, span) {\n return new EnumLayout({ decrementTake: 0, cancelProvide: 1, abortTransaction: 2 }, span, property);\n}\nexports.selfTradeBehaviorLayout = selfTradeBehaviorLayout;\nfunction triggerConditionLayout(property, span) {\n return new EnumLayout({ above: 0, below: 1 }, span, property);\n}\nexports.triggerConditionLayout = triggerConditionLayout;\nfunction advancedOrderTypeLayout(property, span) {\n return new EnumLayout({ perpTrigger: 0, spotTrigger: 1 }, span, property);\n}\nexports.advancedOrderTypeLayout = advancedOrderTypeLayout;\nfunction expiryTypeLayout(property, span) {\n return new EnumLayout({ absolute: 0, relative: 1 }, span, property);\n}\nexports.expiryTypeLayout = expiryTypeLayout;\n/**\n * Makes custom modifications to the instruction layouts because valid instructions can be many sizes\n */\n/** @internal */\nclass MangoInstructionsUnion extends buffer_layout_1.Union {\n constructor(discr, defaultLayout, property) {\n super(discr, defaultLayout, property);\n }\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const discr = this['discriminator'].decode(b, offset);\n // Adjust for old instructions that don't have optional bytes added to end\n if ((discr === 11 && b.length === 144) ||\n (discr === 12 && b.length === 30)) {\n b = Buffer.concat([b, Buffer.from([0])]);\n }\n else if (discr === 37 && b.length === 141) {\n b = Buffer.concat([b, Buffer.from([0, 0])]);\n }\n return super.decode(b, offset);\n }\n addVariant(variant, layout, property) {\n return super.addVariant(variant, layout, property);\n }\n}\nexports.MangoInstructionLayout = new MangoInstructionsUnion((0, buffer_layout_1.u32)('instruction'));\nexports.MangoInstructionLayout.addVariant(0, (0, buffer_layout_1.struct)([\n u64('signerNonce'),\n u64('validInterval'),\n I80F48Layout('quoteOptimalUtil'),\n I80F48Layout('quoteOptimalRate'),\n I80F48Layout('quoteMaxRate'),\n]), 'InitMangoGroup');\nexports.MangoInstructionLayout.addVariant(1, (0, buffer_layout_1.struct)([]), 'InitMangoAccount');\nexports.MangoInstructionLayout.addVariant(2, (0, buffer_layout_1.struct)([u64('quantity')]), 'Deposit');\nexports.MangoInstructionLayout.addVariant(3, (0, buffer_layout_1.struct)([u64('quantity'), (0, buffer_layout_1.u8)('allowBorrow')]), 'Withdraw');\nexports.MangoInstructionLayout.addVariant(4, (0, buffer_layout_1.struct)([\n I80F48Layout('maintLeverage'),\n I80F48Layout('initLeverage'),\n I80F48Layout('liquidationFee'),\n I80F48Layout('optimalUtil'),\n I80F48Layout('optimalRate'),\n I80F48Layout('maxRate'),\n]), 'AddSpotMarket');\nexports.MangoInstructionLayout.addVariant(5, (0, buffer_layout_1.struct)([u64('marketIndex')]), 'AddToBasket');\nexports.MangoInstructionLayout.addVariant(6, (0, buffer_layout_1.struct)([u64('quantity')]), 'Borrow');\nexports.MangoInstructionLayout.addVariant(7, (0, buffer_layout_1.struct)([]), 'CachePrices');\nexports.MangoInstructionLayout.addVariant(8, (0, buffer_layout_1.struct)([]), 'CacheRootBanks');\nexports.MangoInstructionLayout.addVariant(9, (0, buffer_layout_1.struct)([\n sideLayout(4, 'side'),\n u64('limitPrice'),\n u64('maxBaseQuantity'),\n u64('maxQuoteQuantity'),\n selfTradeBehaviorLayout('selfTradeBehavior', 4),\n orderTypeLayout('orderType', 4),\n u64('clientId'),\n (0, buffer_layout_1.u16)('limit'),\n]), 'PlaceSpotOrder');\nexports.MangoInstructionLayout.addVariant(10, (0, buffer_layout_1.struct)([]), 'AddOracle');\nexports.MangoInstructionLayout.addVariant(11, (0, buffer_layout_1.struct)([\n I80F48Layout('maintLeverage'),\n I80F48Layout('initLeverage'),\n I80F48Layout('liquidationFee'),\n I80F48Layout('makerFee'),\n I80F48Layout('takerFee'),\n i64('baseLotSize'),\n i64('quoteLotSize'),\n I80F48Layout('rate'),\n I80F48Layout('maxDepthBps'),\n u64('targetPeriodLength'),\n u64('mngoPerPeriod'),\n (0, buffer_layout_1.u8)('exp'),\n]), 'AddPerpMarket');\nexports.MangoInstructionLayout.addVariant(12, (0, buffer_layout_1.struct)([\n i64('price'),\n i64('quantity'),\n u64('clientOrderId'),\n sideLayout(1, 'side'),\n orderTypeLayout('orderType', 1),\n bool('reduceOnly'),\n]), 'PlacePerpOrder');\nexports.MangoInstructionLayout.addVariant(13, (0, buffer_layout_1.struct)([u64('clientOrderId'), bool('invalidIdOk')]), 'CancelPerpOrderByClientId');\nexports.MangoInstructionLayout.addVariant(14, (0, buffer_layout_1.struct)([i128('orderId'), bool('invalidIdOk')]), 'CancelPerpOrder');\nexports.MangoInstructionLayout.addVariant(15, (0, buffer_layout_1.struct)([u64('limit')]), 'ConsumeEvents');\nexports.MangoInstructionLayout.addVariant(16, (0, buffer_layout_1.struct)([]), 'CachePerpMarkets');\nexports.MangoInstructionLayout.addVariant(17, (0, buffer_layout_1.struct)([]), 'UpdateFunding');\nexports.MangoInstructionLayout.addVariant(18, (0, buffer_layout_1.struct)([I80F48Layout('price')]), 'SetOracle');\nexports.MangoInstructionLayout.addVariant(19, (0, buffer_layout_1.struct)([]), 'SettleFunds');\nexports.MangoInstructionLayout.addVariant(20, (0, buffer_layout_1.struct)([sideLayout(4, 'side'), u128('orderId')]), 'CancelSpotOrder');\nexports.MangoInstructionLayout.addVariant(21, (0, buffer_layout_1.struct)([]), 'UpdateRootBank');\nexports.MangoInstructionLayout.addVariant(22, (0, buffer_layout_1.struct)([u64('marketIndex')]), 'SettlePnl');\nexports.MangoInstructionLayout.addVariant(23, (0, buffer_layout_1.struct)([u64('tokenIndex'), u64('quantity')]), 'SettleBorrow');\nexports.MangoInstructionLayout.addVariant(24, (0, buffer_layout_1.struct)([(0, buffer_layout_1.u8)('limit')]), 'ForceCancelSpotOrders');\nexports.MangoInstructionLayout.addVariant(25, (0, buffer_layout_1.struct)([(0, buffer_layout_1.u8)('limit')]), 'ForceCancelPerpOrders');\nexports.MangoInstructionLayout.addVariant(26, (0, buffer_layout_1.struct)([I80F48Layout('maxLiabTransfer')]), 'LiquidateTokenAndToken');\nexports.MangoInstructionLayout.addVariant(27, (0, buffer_layout_1.struct)([\n (0, buffer_layout_1.u8)('assetType'),\n u64('assetIndex'),\n (0, buffer_layout_1.u8)('liabType'),\n u64('liabIndex'),\n I80F48Layout('maxLiabTransfer'),\n]), 'LiquidateTokenAndPerp');\nexports.MangoInstructionLayout.addVariant(28, (0, buffer_layout_1.struct)([i64('baseTransferRequest')]), 'LiquidatePerpMarket');\nexports.MangoInstructionLayout.addVariant(29, (0, buffer_layout_1.struct)([]), 'SettleFees');\nexports.MangoInstructionLayout.addVariant(30, (0, buffer_layout_1.struct)([u64('liabIndex'), I80F48Layout('maxLiabTransfer')]), 'ResolvePerpBankruptcy');\nexports.MangoInstructionLayout.addVariant(31, (0, buffer_layout_1.struct)([I80F48Layout('maxLiabTransfer')]), 'ResolveTokenBankruptcy');\nexports.MangoInstructionLayout.addVariant(32, (0, buffer_layout_1.struct)([]), 'InitSpotOpenOrders');\nexports.MangoInstructionLayout.addVariant(33, (0, buffer_layout_1.struct)([]), 'RedeemMngo');\nexports.MangoInstructionLayout.addVariant(34, (0, buffer_layout_1.struct)([(0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), exports.INFO_LEN, 'info')]), 'AddMangoAccountInfo');\nexports.MangoInstructionLayout.addVariant(35, (0, buffer_layout_1.struct)([u64('quantity')]), 'DepositMsrm');\nexports.MangoInstructionLayout.addVariant(36, (0, buffer_layout_1.struct)([u64('quantity')]), 'WithdrawMsrm');\nexports.MangoInstructionLayout.addVariant(37, (0, buffer_layout_1.struct)([\n bool('maintLeverageOption'),\n I80F48Layout('maintLeverage'),\n bool('initLeverageOption'),\n I80F48Layout('initLeverage'),\n bool('liquidationFeeOption'),\n I80F48Layout('liquidationFee'),\n bool('makerFeeOption'),\n I80F48Layout('makerFee'),\n bool('takerFeeOption'),\n I80F48Layout('takerFee'),\n bool('rateOption'),\n I80F48Layout('rate'),\n bool('maxDepthBpsOption'),\n I80F48Layout('maxDepthBps'),\n bool('targetPeriodLengthOption'),\n u64('targetPeriodLength'),\n bool('mngoPerPeriodOption'),\n u64('mngoPerPeriod'),\n bool('expOption'),\n (0, buffer_layout_1.u8)('exp'),\n]), 'ChangePerpMarketParams');\nexports.MangoInstructionLayout.addVariant(38, (0, buffer_layout_1.struct)([]), 'SetGroupAdmin');\nexports.MangoInstructionLayout.addVariant(39, (0, buffer_layout_1.struct)([(0, buffer_layout_1.u8)('limit')]), 'CancelAllPerpOrders');\nexports.MangoInstructionLayout.addVariant(41, (0, buffer_layout_1.struct)([\n sideLayout(4, 'side'),\n u64('limitPrice'),\n u64('maxBaseQuantity'),\n u64('maxQuoteQuantity'),\n selfTradeBehaviorLayout('selfTradeBehavior', 4),\n orderTypeLayout('orderType', 4),\n u64('clientOrderId'),\n (0, buffer_layout_1.u16)('limit'),\n]), 'PlaceSpotOrder2');\nexports.MangoInstructionLayout.addVariant(42, (0, buffer_layout_1.struct)([]), 'InitAdvancedOrders');\nexports.MangoInstructionLayout.addVariant(43, (0, buffer_layout_1.struct)([\n orderTypeLayout('orderType', 1),\n sideLayout(1, 'side'),\n triggerConditionLayout('triggerCondition', 1),\n bool('reduceOnly'),\n u64('clientOrderId'),\n i64('price'),\n i64('quantity'),\n I80F48Layout('triggerPrice'),\n]), 'AddPerpTriggerOrder');\nexports.MangoInstructionLayout.addVariant(44, (0, buffer_layout_1.struct)([(0, buffer_layout_1.u8)('orderIndex')]), 'RemoveAdvancedOrder');\nexports.MangoInstructionLayout.addVariant(45, (0, buffer_layout_1.struct)([(0, buffer_layout_1.u8)('orderIndex')]), 'ExecutePerpTriggerOrder');\nexports.MangoInstructionLayout.addVariant(46, (0, buffer_layout_1.struct)([\n I80F48Layout('maintLeverage'),\n I80F48Layout('initLeverage'),\n I80F48Layout('liquidationFee'),\n I80F48Layout('makerFee'),\n I80F48Layout('takerFee'),\n i64('baseLotSize'),\n i64('quoteLotSize'),\n I80F48Layout('rate'),\n I80F48Layout('maxDepthBps'),\n u64('targetPeriodLength'),\n u64('mngoPerPeriod'),\n (0, buffer_layout_1.u8)('exp'),\n (0, buffer_layout_1.u8)('version'),\n (0, buffer_layout_1.u8)('lmSizeShift'),\n (0, buffer_layout_1.u8)('baseDecimals'),\n]), 'CreatePerpMarket');\nexports.MangoInstructionLayout.addVariant(47, (0, buffer_layout_1.struct)([\n bool('maintLeverageOption'),\n I80F48Layout('maintLeverage'),\n bool('initLeverageOption'),\n I80F48Layout('initLeverage'),\n bool('liquidationFeeOption'),\n I80F48Layout('liquidationFee'),\n bool('makerFeeOption'),\n I80F48Layout('makerFee'),\n bool('takerFeeOption'),\n I80F48Layout('takerFee'),\n bool('rateOption'),\n I80F48Layout('rate'),\n bool('maxDepthBpsOption'),\n I80F48Layout('maxDepthBps'),\n bool('targetPeriodLengthOption'),\n u64('targetPeriodLength'),\n bool('mngoPerPeriodOption'),\n u64('mngoPerPeriod'),\n bool('expOption'),\n (0, buffer_layout_1.u8)('exp'),\n bool('versionOption'),\n (0, buffer_layout_1.u8)('version'),\n bool('lmSizeShiftOption'),\n (0, buffer_layout_1.u8)('lmSizeShift'),\n]), 'ChangePerpMarketParams2');\nexports.MangoInstructionLayout.addVariant(48, (0, buffer_layout_1.struct)([]), 'UpdateMarginBasket');\nexports.MangoInstructionLayout.addVariant(49, (0, buffer_layout_1.struct)([(0, buffer_layout_1.u32)('maxMangoAccounts')]), 'ChangeMaxMangoAccounts');\nexports.MangoInstructionLayout.addVariant(50, (0, buffer_layout_1.struct)([]), 'CloseMangoAccount');\nexports.MangoInstructionLayout.addVariant(51, (0, buffer_layout_1.struct)([]), 'CloseSpotOpenOrders');\nexports.MangoInstructionLayout.addVariant(52, (0, buffer_layout_1.struct)([]), 'CloseAdvancedOrders');\nexports.MangoInstructionLayout.addVariant(53, (0, buffer_layout_1.struct)([]), 'CreateDustAccount');\nexports.MangoInstructionLayout.addVariant(54, (0, buffer_layout_1.struct)([]), 'ResolveDust');\nexports.MangoInstructionLayout.addVariant(55, (0, buffer_layout_1.struct)([u64('accountNum')]), 'CreateMangoAccount');\nexports.MangoInstructionLayout.addVariant(56, (0, buffer_layout_1.struct)([]), 'UpgradeMangoAccountV0V1');\nexports.MangoInstructionLayout.addVariant(57, (0, buffer_layout_1.struct)([sideLayout(1, 'side'), (0, buffer_layout_1.u8)('limit')]), 'CancelPerpOrdersSide');\nexports.MangoInstructionLayout.addVariant(58, (0, buffer_layout_1.struct)([]), 'SetDelegate');\nexports.MangoInstructionLayout.addVariant(59, (0, buffer_layout_1.struct)([\n bool('maintLeverageOption'),\n I80F48Layout('maintLeverage'),\n bool('initLeverageOption'),\n I80F48Layout('initLeverage'),\n bool('liquidationFeeOption'),\n I80F48Layout('liquidationFee'),\n bool('optimalUtilOption'),\n I80F48Layout('optimalUtil'),\n bool('optimalRateOption'),\n I80F48Layout('optimalRate'),\n bool('maxRateOption'),\n I80F48Layout('maxRate'),\n bool('versionOption'),\n (0, buffer_layout_1.u8)('version'),\n]), 'ChangeSpotMarketParams');\nexports.MangoInstructionLayout.addVariant(60, (0, buffer_layout_1.struct)([]), 'CreateSpotOpenOrders');\nexports.MangoInstructionLayout.addVariant(61, (0, buffer_layout_1.struct)([\n (0, buffer_layout_1.u32)('refSurchargeCentibps'),\n (0, buffer_layout_1.u32)('refShareCentibps'),\n u64('refMngoRequired'),\n]), 'ChangeReferralFeeParams');\nexports.MangoInstructionLayout.addVariant(62, (0, buffer_layout_1.struct)([]), 'SetReferrerMemory');\nexports.MangoInstructionLayout.addVariant(63, (0, buffer_layout_1.struct)([(0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), exports.INFO_LEN, 'referrerId')]), 'RegisterReferrerId');\nexports.MangoInstructionLayout.addVariant(64, (0, buffer_layout_1.struct)([\n i64('price'),\n i64('maxBaseQuantity'),\n i64('maxQuoteQuantity'),\n u64('clientOrderId'),\n u64('expiryTimestamp'),\n sideLayout(1, 'side'),\n orderTypeLayout('orderType', 1),\n bool('reduceOnly'),\n (0, buffer_layout_1.u8)('limit'),\n expiryTypeLayout('expiryType', 1),\n]), 'PlacePerpOrder2');\nexports.MangoInstructionLayout.addVariant(65, (0, buffer_layout_1.struct)([(0, buffer_layout_1.u8)('limit')]), 'CancelAllSpotOrders');\nexports.MangoInstructionLayout.addVariant(66, (0, buffer_layout_1.struct)([u64('quantity'), (0, buffer_layout_1.u8)('allowBorrow')]), 'Withdraw2');\nexports.MangoInstructionLayout.addVariant(67, (0, buffer_layout_1.struct)([u64('marketIndex'), (0, buffer_layout_1.u8)('marketMode'), (0, buffer_layout_1.u8)('marketType')]), 'SetMarketMode');\nexports.MangoInstructionLayout.addVariant(68, (0, buffer_layout_1.struct)([]), 'RemovePerpMarket');\nexports.MangoInstructionLayout.addVariant(69, (0, buffer_layout_1.struct)([]), 'SwapSpotMarket');\nexports.MangoInstructionLayout.addVariant(70, (0, buffer_layout_1.struct)([]), 'RemoveSpotMarket');\nexports.MangoInstructionLayout.addVariant(71, (0, buffer_layout_1.struct)([]), 'RemoveOracle');\nexports.MangoInstructionLayout.addVariant(72, (0, buffer_layout_1.struct)([u64('maxLiquidateAmount')]), 'LiquidateDelistingToken');\nexports.MangoInstructionLayout.addVariant(73, (0, buffer_layout_1.struct)([]), 'ForceSettlePerpPosition');\nexports.MangoInstructionLayout.addVariant(74, (0, buffer_layout_1.struct)([\n (0, buffer_layout_1.u32)('refSurchargeCentibpsTier1'),\n (0, buffer_layout_1.u32)('refShareCentibpsTier1'),\n (0, buffer_layout_1.u16)('refSurchargeCentibpsTier2'),\n (0, buffer_layout_1.u16)('refShareCentibpsTier2'),\n u64('refMngoRequired'),\n (0, buffer_layout_1.u8)('refMngoTier2Factor'),\n]), 'ChangeReferralFeeParams2');\nconst instructionMaxSpan = Math.max(\n// @ts-ignore\n...Object.values(exports.MangoInstructionLayout.registry).map((r) => r.span));\n/** @internal */\nfunction encodeMangoInstruction(data) {\n const b = Buffer.alloc(instructionMaxSpan);\n // @ts-ignore\n const span = exports.MangoInstructionLayout.encode(data, b);\n return b.slice(0, span);\n}\nexports.encodeMangoInstruction = encodeMangoInstruction;\n/** @internal */\nclass PublicKeyLayout extends buffer_layout_1.Blob {\n constructor(property) {\n super(32, property);\n }\n decode(b, offset) {\n return new web3_js_1.PublicKey(super.decode(b, offset));\n }\n encode(src, b, offset) {\n return super.encode(src.toBuffer(), b, offset);\n }\n}\nexports.PublicKeyLayout = PublicKeyLayout;\n/** @internal */\nfunction publicKeyLayout(property = '') {\n return new PublicKeyLayout(property);\n}\nexports.publicKeyLayout = publicKeyLayout;\n/** @internal */\nexports.DataType = {\n MangoGroup: 0,\n MangoAccount: 1,\n RootBank: 2,\n NodeBank: 3,\n PerpMarket: 4,\n Bids: 5,\n Asks: 6,\n MangoCache: 7,\n EventQueue: 8,\n AdvancedOrders: 9,\n ReferrerMemory: 10,\n ReferrerIdRecord: 11,\n};\nvar AssetType;\n(function (AssetType) {\n AssetType[AssetType[\"Token\"] = 0] = \"Token\";\n AssetType[AssetType[\"Perp\"] = 1] = \"Perp\";\n})(AssetType = exports.AssetType || (exports.AssetType = {}));\nvar MarketMode;\n(function (MarketMode) {\n MarketMode[MarketMode[\"Default\"] = 0] = \"Default\";\n MarketMode[MarketMode[\"Active\"] = 1] = \"Active\";\n MarketMode[MarketMode[\"CloseOnly\"] = 2] = \"CloseOnly\";\n MarketMode[MarketMode[\"ForceCloseOnly\"] = 3] = \"ForceCloseOnly\";\n MarketMode[MarketMode[\"Inactive\"] = 4] = \"Inactive\";\n MarketMode[MarketMode[\"SwappingSpotMarket\"] = 5] = \"SwappingSpotMarket\";\n})(MarketMode = exports.MarketMode || (exports.MarketMode = {}));\nvar AdvancedOrderType;\n(function (AdvancedOrderType) {\n AdvancedOrderType[AdvancedOrderType[\"PerpTrigger\"] = 0] = \"PerpTrigger\";\n AdvancedOrderType[AdvancedOrderType[\"SpotTrigger\"] = 1] = \"SpotTrigger\";\n})(AdvancedOrderType = exports.AdvancedOrderType || (exports.AdvancedOrderType = {}));\nclass MetaData {\n constructor(decoded) {\n Object.assign(this, decoded);\n }\n}\nexports.MetaData = MetaData;\n/** @internal */\nclass MetaDataLayout extends buffer_layout_1.Structure {\n constructor(property) {\n super([\n (0, buffer_layout_1.u8)('dataType'),\n (0, buffer_layout_1.u8)('version'),\n (0, buffer_layout_1.u8)('isInitialized'),\n (0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), 5, 'extraInfo'),\n ], property);\n }\n decode(b, offset) {\n return new MetaData(super.decode(b, offset));\n }\n encode(src, b, offset) {\n return super.encode(src.toBuffer(), b, offset);\n }\n}\nexports.MetaDataLayout = MetaDataLayout;\n/** @internal */\nfunction metaDataLayout(property = '') {\n return new MetaDataLayout(property);\n}\nexports.metaDataLayout = metaDataLayout;\n/** @internal */\nclass TokenInfo {\n constructor(decoded) {\n Object.assign(this, decoded);\n }\n isEmpty() {\n return this.mint.equals(utils_1.zeroKey);\n }\n}\nexports.TokenInfo = TokenInfo;\n/** @internal */\nclass TokenInfoLayout extends buffer_layout_1.Structure {\n constructor(property) {\n super([\n publicKeyLayout('mint'),\n publicKeyLayout('rootBank'),\n (0, buffer_layout_1.u8)('decimals'),\n (0, buffer_layout_1.u8)('spotMarketMode'),\n (0, buffer_layout_1.u8)('perpMarketMode'),\n bool('oracleInactive'),\n (0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), 4, 'padding'),\n ], property);\n }\n decode(b, offset) {\n return new TokenInfo(super.decode(b, offset));\n }\n encode(src, b, offset) {\n return super.encode(src.toBuffer(), b, offset);\n }\n}\nexports.TokenInfoLayout = TokenInfoLayout;\n/** @internal */\nfunction tokenInfoLayout(property = '') {\n return new TokenInfoLayout(property);\n}\nexports.tokenInfoLayout = tokenInfoLayout;\nclass SpotMarketInfo {\n constructor(decoded) {\n Object.assign(this, decoded);\n }\n isEmpty() {\n return this.spotMarket.equals(utils_1.zeroKey);\n }\n}\nexports.SpotMarketInfo = SpotMarketInfo;\n/** @internal */\nclass SpotMarketInfoLayout extends buffer_layout_1.Structure {\n constructor(property) {\n super([\n publicKeyLayout('spotMarket'),\n I80F48Layout('maintAssetWeight'),\n I80F48Layout('initAssetWeight'),\n I80F48Layout('maintLiabWeight'),\n I80F48Layout('initLiabWeight'),\n I80F48Layout('liquidationFee'),\n ], property);\n }\n decode(b, offset) {\n return new SpotMarketInfo(super.decode(b, offset));\n }\n encode(src, b, offset) {\n return super.encode(src.toBuffer(), b, offset);\n }\n}\nexports.SpotMarketInfoLayout = SpotMarketInfoLayout;\n/** @internal */\nfunction spotMarketInfoLayout(property = '') {\n return new SpotMarketInfoLayout(property);\n}\nexports.spotMarketInfoLayout = spotMarketInfoLayout;\nclass PerpMarketInfo {\n constructor(decoded) {\n Object.assign(this, decoded);\n }\n isEmpty() {\n return this.perpMarket.equals(utils_1.zeroKey);\n }\n}\nexports.PerpMarketInfo = PerpMarketInfo;\n/** @internal */\nclass PerpMarketInfoLayout extends buffer_layout_1.Structure {\n constructor(property) {\n super([\n publicKeyLayout('perpMarket'),\n I80F48Layout('maintAssetWeight'),\n I80F48Layout('initAssetWeight'),\n I80F48Layout('maintLiabWeight'),\n I80F48Layout('initLiabWeight'),\n I80F48Layout('liquidationFee'),\n I80F48Layout('makerFee'),\n I80F48Layout('takerFee'),\n i64('baseLotSize'),\n i64('quoteLotSize'),\n ], property);\n }\n decode(b, offset) {\n return new PerpMarketInfo(super.decode(b, offset));\n }\n encode(src, b, offset) {\n return super.encode(src.toBuffer(), b, offset);\n }\n}\nexports.PerpMarketInfoLayout = PerpMarketInfoLayout;\n/** @internal */\nfunction perpMarketInfoLayout(property = '') {\n return new PerpMarketInfoLayout(property);\n}\nexports.perpMarketInfoLayout = perpMarketInfoLayout;\n/** @internal */\nclass PerpAccountLayout extends buffer_layout_1.Structure {\n constructor(property) {\n super([\n i64('basePosition'),\n I80F48Layout('quotePosition'),\n I80F48Layout('longSettledFunding'),\n I80F48Layout('shortSettledFunding'),\n i64('bidsQuantity'),\n i64('asksQuantity'),\n i64('takerBase'),\n i64('takerQuote'),\n u64('mngoAccrued'),\n ], property);\n }\n decode(b, offset) {\n return new PerpAccount_1.default(super.decode(b, offset));\n }\n encode(src, b, offset) {\n return super.encode(src.toBuffer(), b, offset);\n }\n}\nexports.PerpAccountLayout = PerpAccountLayout;\n/** @internal */\nfunction perpAccountLayout(property = '') {\n return new PerpAccountLayout(property);\n}\nexports.perpAccountLayout = perpAccountLayout;\n/** @internal */\nexports.MangoGroupLayout = (0, buffer_layout_1.struct)([\n metaDataLayout('metaData'),\n u64('numOracles'),\n (0, buffer_layout_1.seq)(tokenInfoLayout(), exports.MAX_TOKENS, 'tokens'),\n (0, buffer_layout_1.seq)(spotMarketInfoLayout(), exports.MAX_PAIRS, 'spotMarkets'),\n (0, buffer_layout_1.seq)(perpMarketInfoLayout(), exports.MAX_PAIRS, 'perpMarkets'),\n (0, buffer_layout_1.seq)(publicKeyLayout(), exports.MAX_PAIRS, 'oracles'),\n u64('signerNonce'),\n publicKeyLayout('signerKey'),\n publicKeyLayout('admin'),\n publicKeyLayout('dexProgramId'),\n publicKeyLayout('mangoCache'),\n u64('validInterval'),\n publicKeyLayout('insuranceVault'),\n publicKeyLayout('srmVault'),\n publicKeyLayout('msrmVault'),\n publicKeyLayout('feesVault'),\n (0, buffer_layout_1.u32)('maxMangoAccounts'),\n (0, buffer_layout_1.u32)('numMangoAccounts'),\n (0, buffer_layout_1.u32)('refSurchargeCentibpsTier1'),\n (0, buffer_layout_1.u32)('refShareCentibpsTier1'),\n u64('refMngoRequired'),\n (0, buffer_layout_1.u16)('refSurchargeCentibpsTier2'),\n (0, buffer_layout_1.u16)('refShareCentibpsTier2'),\n (0, buffer_layout_1.u8)('refMngoTier2Factor'),\n (0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), 3, 'padding'),\n]);\n/** @internal */\nexports.MangoAccountLayout = (0, buffer_layout_1.struct)([\n metaDataLayout('metaData'),\n publicKeyLayout('mangoGroup'),\n publicKeyLayout('owner'),\n (0, buffer_layout_1.seq)(bool(), exports.MAX_PAIRS, 'inMarginBasket'),\n (0, buffer_layout_1.u8)('numInMarginBasket'),\n (0, buffer_layout_1.seq)(I80F48Layout(), exports.MAX_TOKENS, 'deposits'),\n (0, buffer_layout_1.seq)(I80F48Layout(), exports.MAX_TOKENS, 'borrows'),\n (0, buffer_layout_1.seq)(publicKeyLayout(), exports.MAX_PAIRS, 'spotOpenOrders'),\n (0, buffer_layout_1.seq)(perpAccountLayout(), exports.MAX_PAIRS, 'perpAccounts'),\n (0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), exports.MAX_PERP_OPEN_ORDERS, 'orderMarket'),\n (0, buffer_layout_1.seq)(sideLayout(1), exports.MAX_PERP_OPEN_ORDERS, 'orderSide'),\n (0, buffer_layout_1.seq)(i128(), exports.MAX_PERP_OPEN_ORDERS, 'orders'),\n (0, buffer_layout_1.seq)(u64(), exports.MAX_PERP_OPEN_ORDERS, 'clientOrderIds'),\n u64('msrmAmount'),\n bool('beingLiquidated'),\n bool('isBankrupt'),\n (0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), exports.INFO_LEN, 'info'),\n publicKeyLayout('advancedOrdersKey'),\n bool('notUpgradable'),\n publicKeyLayout('delegate'),\n (0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), 5, 'padding'),\n]);\n/** @internal */\nexports.RootBankLayout = (0, buffer_layout_1.struct)([\n metaDataLayout('metaData'),\n I80F48Layout('optimalUtil'),\n I80F48Layout('optimalRate'),\n I80F48Layout('maxRate'),\n u64('numNodeBanks'),\n (0, buffer_layout_1.seq)(publicKeyLayout(), exports.MAX_NODE_BANKS, 'nodeBanks'),\n I80F48Layout('depositIndex'),\n I80F48Layout('borrowIndex'),\n u64('lastUpdated'),\n (0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), 64, 'padding'),\n]);\n/** @internal */\nexports.NodeBankLayout = (0, buffer_layout_1.struct)([\n metaDataLayout('metaData'),\n I80F48Layout('deposits'),\n I80F48Layout('borrows'),\n publicKeyLayout('vault'),\n]);\n/** @internal */\nexports.StubOracleLayout = (0, buffer_layout_1.struct)([\n (0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), 8),\n I80F48Layout('price'),\n u64('lastUpdate'),\n]);\n/** @internal */\nclass LiquidityMiningInfoLayout extends buffer_layout_1.Structure {\n constructor(property) {\n super([\n I80F48Layout('rate'),\n I80F48Layout('maxDepthBps'),\n u64('periodStart'),\n u64('targetPeriodLength'),\n u64('mngoLeft'),\n u64('mngoPerPeriod'),\n ], property);\n }\n decode(b, offset) {\n return new MetaData(super.decode(b, offset));\n }\n encode(src, b, offset) {\n return super.encode(src.toBuffer(), b, offset);\n }\n}\nexports.LiquidityMiningInfoLayout = LiquidityMiningInfoLayout;\n/** @internal */\nfunction liquidityMiningInfoLayout(property = '') {\n return new LiquidityMiningInfoLayout(property);\n}\nexports.liquidityMiningInfoLayout = liquidityMiningInfoLayout;\n/** @internal */\nexports.PerpMarketLayout = (0, buffer_layout_1.struct)([\n metaDataLayout('metaData'),\n publicKeyLayout('mangoGroup'),\n publicKeyLayout('bids'),\n publicKeyLayout('asks'),\n publicKeyLayout('eventQueue'),\n i64('quoteLotSize'),\n i64('baseLotSize'),\n I80F48Layout('longFunding'),\n I80F48Layout('shortFunding'),\n i64('openInterest'),\n u64('lastUpdated'),\n u64('seqNum'),\n I80F48Layout('feesAccrued'),\n liquidityMiningInfoLayout('liquidityMiningInfo'),\n publicKeyLayout('mngoVault'),\n]);\nconst EVENT_SIZE = 200;\n/** @internal */\nexports.PerpEventLayout = (0, buffer_layout_1.union)((0, buffer_layout_1.u8)('eventType'), (0, buffer_layout_1.blob)(EVENT_SIZE - 1), 'event');\nexports.PerpEventLayout.addVariant(0, (0, buffer_layout_1.struct)([\n sideLayout(1, 'takerSide'),\n (0, buffer_layout_1.u8)('makerSlot'),\n bool('makerOut'),\n (0, buffer_layout_1.u8)('version'),\n (0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), 3),\n u64('timestamp'),\n u64('seqNum'),\n publicKeyLayout('maker'),\n i128('makerOrderId'),\n u64('makerClientOrderId'),\n I80F48Layout('makerFee'),\n i64('bestInitial'),\n u64('makerTimestamp'),\n publicKeyLayout('taker'),\n i128('takerOrderId'),\n u64('takerClientOrderId'),\n I80F48Layout('takerFee'),\n i64('price'),\n i64('quantity'),\n]), 'fill');\nexports.PerpEventLayout.addVariant(1, (0, buffer_layout_1.struct)([\n sideLayout(1, 'side'),\n (0, buffer_layout_1.u8)('slot'),\n (0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), 5),\n u64('timestamp'),\n u64('seqNum'),\n publicKeyLayout('owner'),\n i64('quantity'),\n (0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), EVENT_SIZE - 64, 'padding'),\n]), 'out');\nexports.PerpEventLayout.addVariant(2, (0, buffer_layout_1.struct)([\n (0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), 7),\n u64('timestamp'),\n u64('seqNum'),\n publicKeyLayout('liqee'),\n publicKeyLayout('liqor'),\n I80F48Layout('price'),\n i64('quantity'),\n I80F48Layout('liquidationFee'),\n (0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), EVENT_SIZE - 128, 'padding'),\n]), 'liquidate');\n/** @internal */\nexports.PerpEventQueueHeaderLayout = (0, buffer_layout_1.struct)([\n metaDataLayout('metaData'),\n u64('head'),\n u64('count'),\n u64('seqNum'),\n]);\n/** @internal */\nexports.PerpEventQueueLayout = (0, buffer_layout_1.struct)([\n metaDataLayout('metaData'),\n u64('head'),\n u64('count'),\n u64('seqNum'),\n (0, buffer_layout_1.seq)(exports.PerpEventLayout, (0, buffer_layout_1.greedy)(exports.PerpEventLayout.span), 'events'),\n]);\nconst BOOK_NODE_SIZE = 88;\nconst BOOK_NODE_LAYOUT = (0, buffer_layout_1.union)((0, buffer_layout_1.u32)('tag'), (0, buffer_layout_1.blob)(BOOK_NODE_SIZE - 4), 'node');\nBOOK_NODE_LAYOUT.addVariant(0, (0, buffer_layout_1.struct)([]), 'uninitialized');\nBOOK_NODE_LAYOUT.addVariant(1, (0, buffer_layout_1.struct)([\n // Only the first prefixLen high-order bits of key are meaningful\n (0, buffer_layout_1.u32)('prefixLen'),\n u128('key'),\n (0, buffer_layout_1.seq)((0, buffer_layout_1.u32)(), 2, 'children'),\n]), 'innerNode');\nBOOK_NODE_LAYOUT.addVariant(2, (0, buffer_layout_1.struct)([\n (0, buffer_layout_1.u8)('ownerSlot'),\n orderTypeLayout('orderType', 1),\n (0, buffer_layout_1.u8)('version'),\n (0, buffer_layout_1.u8)('timeInForce'),\n u128('key'),\n publicKeyLayout('owner'),\n u64('quantity'),\n u64('clientOrderId'),\n u64('bestInitial'),\n u64('timestamp'),\n]), 'leafNode');\nBOOK_NODE_LAYOUT.addVariant(3, (0, buffer_layout_1.struct)([(0, buffer_layout_1.u32)('next')]), 'freeNode');\nBOOK_NODE_LAYOUT.addVariant(4, (0, buffer_layout_1.struct)([]), 'lastFreeNode');\n/** @internal */\nexports.BookSideLayout = (0, buffer_layout_1.struct)([\n metaDataLayout('metaData'),\n (0, buffer_layout_1.nu64)('bumpIndex'),\n (0, buffer_layout_1.nu64)('freeListLen'),\n (0, buffer_layout_1.u32)('freeListHead'),\n (0, buffer_layout_1.u32)('rootNode'),\n (0, buffer_layout_1.nu64)('leafCount'),\n (0, buffer_layout_1.seq)(BOOK_NODE_LAYOUT, MAX_BOOK_NODES, 'nodes'),\n]);\nclass PriceCache {\n constructor(decoded) {\n Object.assign(this, decoded);\n }\n}\nexports.PriceCache = PriceCache;\n/** @internal */\nclass PriceCacheLayout extends buffer_layout_1.Structure {\n constructor(property) {\n super([I80F48Layout('price'), u64('lastUpdate')], property);\n }\n decode(b, offset) {\n return new PriceCache(super.decode(b, offset));\n }\n encode(src, b, offset) {\n return super.encode(src.toBuffer(), b, offset);\n }\n}\nexports.PriceCacheLayout = PriceCacheLayout;\n/** @internal */\nfunction priceCacheLayout(property = '') {\n return new PriceCacheLayout(property);\n}\nexports.priceCacheLayout = priceCacheLayout;\nclass RootBankCache {\n constructor(decoded) {\n Object.assign(this, decoded);\n }\n}\nexports.RootBankCache = RootBankCache;\n/** @internal */\nclass RootBankCacheLayout extends buffer_layout_1.Structure {\n constructor(property) {\n super([\n I80F48Layout('depositIndex'),\n I80F48Layout('borrowIndex'),\n u64('lastUpdate'),\n ], property);\n }\n decode(b, offset) {\n return new RootBankCache(super.decode(b, offset));\n }\n encode(src, b, offset) {\n return super.encode(src.toBuffer(), b, offset);\n }\n}\nexports.RootBankCacheLayout = RootBankCacheLayout;\n/** @internal */\nfunction rootBankCacheLayout(property = '') {\n return new RootBankCacheLayout(property);\n}\nexports.rootBankCacheLayout = rootBankCacheLayout;\nclass PerpMarketCache {\n constructor(decoded) {\n Object.assign(this, decoded);\n }\n}\nexports.PerpMarketCache = PerpMarketCache;\n/** @internal */\nclass PerpMarketCacheLayout extends buffer_layout_1.Structure {\n constructor(property) {\n super([\n I80F48Layout('longFunding'),\n I80F48Layout('shortFunding'),\n u64('lastUpdate'),\n ], property);\n }\n decode(b, offset) {\n return new PerpMarketCache(super.decode(b, offset));\n }\n encode(src, b, offset) {\n return super.encode(src.toBuffer(), b, offset);\n }\n}\nexports.PerpMarketCacheLayout = PerpMarketCacheLayout;\n/** @internal */\nfunction perpMarketCacheLayout(property = '') {\n return new PerpMarketCacheLayout(property);\n}\nexports.perpMarketCacheLayout = perpMarketCacheLayout;\n/** @internal */\nexports.MangoCacheLayout = (0, buffer_layout_1.struct)([\n metaDataLayout('metaData'),\n (0, buffer_layout_1.seq)(priceCacheLayout(), exports.MAX_PAIRS, 'priceCache'),\n (0, buffer_layout_1.seq)(rootBankCacheLayout(), exports.MAX_TOKENS, 'rootBankCache'),\n (0, buffer_layout_1.seq)(perpMarketCacheLayout(), exports.MAX_PAIRS, 'perpMarketCache'),\n]);\nclass MangoCache {\n constructor(publicKey, decoded) {\n this.publicKey = publicKey;\n Object.assign(this, decoded);\n }\n getPrice(tokenIndex) {\n return tokenIndex === exports.QUOTE_INDEX\n ? fixednum_1.ONE_I80F48\n : this.priceCache[tokenIndex].price;\n }\n}\nexports.MangoCache = MangoCache;\nclass NodeBank {\n constructor(publicKey, decoded) {\n this.publicKey = publicKey;\n Object.assign(this, decoded);\n }\n}\nexports.NodeBank = NodeBank;\n/** @internal */\nexports.TokenAccountLayout = (0, buffer_layout_1.struct)([\n publicKeyLayout('mint'),\n publicKeyLayout('owner'),\n (0, buffer_layout_1.nu64)('amount'),\n (0, buffer_layout_1.blob)(93),\n]);\nconst ADVANCED_ORDER_SIZE = 80;\nconst ADVANCED_ORDER_LAYOUT = (0, buffer_layout_1.union)((0, buffer_layout_1.u8)('advancedOrderType'), (0, buffer_layout_1.blob)(ADVANCED_ORDER_SIZE - 1), 'advancedOrder');\nADVANCED_ORDER_LAYOUT.addVariant(0, (0, buffer_layout_1.struct)([\n bool('isActive'),\n (0, buffer_layout_1.u8)('marketIndex'),\n orderTypeLayout('orderType', 1),\n sideLayout(1, 'side'),\n triggerConditionLayout('triggerCondition', 1),\n bool('reduceOnly'),\n (0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), 1, 'padding0'),\n u64('clientOrderId'),\n i64('price'),\n i64('quantity'),\n I80F48Layout('triggerPrice'),\n (0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), 32, 'padding1'),\n]), 'perpTrigger');\nconst MAX_ADVANCED_ORDERS = 32;\nexports.AdvancedOrdersLayout = (0, buffer_layout_1.struct)([\n metaDataLayout('metaData'),\n (0, buffer_layout_1.seq)(ADVANCED_ORDER_LAYOUT, MAX_ADVANCED_ORDERS, 'orders'),\n]);\n/** @internal */\nclass ReferrerMemory {\n constructor(decoded) {\n Object.assign(this, decoded);\n }\n}\nexports.ReferrerMemory = ReferrerMemory;\n/** @internal */\nexports.ReferrerMemoryLayout = (0, buffer_layout_1.struct)([\n metaDataLayout('metaData'),\n publicKeyLayout('referrerMangoAccount'),\n]);\n/** @internal */\nclass ReferrerIdRecord {\n constructor(decoded) {\n Object.assign(this, decoded);\n }\n get referrerId() {\n return this.id\n ? String.fromCharCode(...this.id).replace(new RegExp(String.fromCharCode(0), 'g'), '')\n : '';\n }\n}\nexports.ReferrerIdRecord = ReferrerIdRecord;\n/** @internal */\nexports.ReferrerIdRecordLayout = (0, buffer_layout_1.struct)([\n metaDataLayout('metaData'),\n publicKeyLayout('referrerMangoAccount'),\n (0, buffer_layout_1.seq)((0, buffer_layout_1.u8)(), exports.INFO_LEN, 'id'),\n]);\n//# sourceMappingURL=layout.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.adapterHasSignAllTransactions = void 0;\nconst adapterHasSignAllTransactions = (adapter) => {\n if (adapter.signAllTransactions) {\n return true;\n }\n return false;\n};\nexports.adapterHasSignAllTransactions = adapterHasSignAllTransactions;\n//# sourceMappingURL=adapterTypes.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.NEG_ONE_I80F48 = exports.ZERO_I80F48 = exports.ONE_I80F48 = exports.I80F48 = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst big_js_1 = __importDefault(require(\"big.js\"));\nconst toformat_1 = __importDefault(require(\"toformat\"));\n(0, toformat_1.default)(big_js_1.default);\n// TODO - this whole class is inefficient; consider optimizing\nclass I80F48 {\n constructor(data) {\n if (data.lt(I80F48.MIN_BN) || data.gt(I80F48.MAX_BN)) {\n throw new Error('Number out of range');\n }\n this.data = data;\n }\n static fromNumber(x) {\n let int_part = Math.trunc(x);\n let v = new bn_js_1.default(int_part).iushln(48);\n v.iadd(new bn_js_1.default((x - int_part) * I80F48.MULTIPLIER_NUMBER));\n return new I80F48(v);\n }\n static fromNumberOrUndef(x) {\n return x === undefined ? undefined : I80F48.fromNumber(x);\n }\n static fromOptionalString(x) {\n return x ? I80F48.fromString(x) : undefined;\n }\n static fromString(x) {\n const initialValue = new big_js_1.default(x).times(I80F48.MULTIPLIER_BIG);\n const fixedPointValue = new bn_js_1.default(initialValue.round().toFixed());\n return new I80F48(fixedPointValue);\n }\n static fromI64(x) {\n return new I80F48(x.ushln(48));\n }\n static fromU64(x) {\n return new I80F48(x.ushln(48));\n }\n toTwos() {\n return this.data.toTwos(I80F48.MAX_SIZE);\n }\n toString() {\n return this.toBig().toFixed();\n }\n /**\n * The number will be rounded first for UI sensibilities, then toFixed\n */\n toFixed(decimals) {\n return this.toBig().round(14).toFixed(decimals);\n }\n toLocaleString(locales, options) {\n return this.toNumber().toLocaleString(locales, options);\n }\n toFormat(decimals) {\n // @ts-ignore\n return this.toBig().toFormat(decimals);\n }\n toBig() {\n return new big_js_1.default(this.data.toString()).div(I80F48.MULTIPLIER_BIG);\n }\n static fromBig(x) {\n return new I80F48(new bn_js_1.default(x.mul(I80F48.MULTIPLIER_BIG).round().toFixed()));\n }\n toNumber() {\n return this.toBig().toNumber();\n }\n static fromArray(src) {\n if (src.length !== 16) {\n throw new Error('Uint8Array must be of length 16');\n }\n return new I80F48(new bn_js_1.default(src, 'le').fromTwos(I80F48.MAX_SIZE));\n }\n toArray() {\n return new Uint8Array(this.data.toTwos(I80F48.MAX_SIZE).toArray('le', 16));\n }\n toArrayLike(ArrayType, endian, length) {\n return this.data\n .toTwos(I80F48.MAX_SIZE)\n .toArrayLike(ArrayType, endian, length);\n }\n getData() {\n return this.data;\n }\n getBinaryLayout() {\n return this.data\n .toTwos(I80F48.MAX_SIZE)\n .toString(2, I80F48.MAX_SIZE)\n .replace(/-/g, '');\n }\n add(x) {\n return new I80F48(this.data.add(x.getData()));\n }\n sub(x) {\n return new I80F48(this.data.sub(x.getData()));\n }\n iadd(x) {\n this.data.iadd(x.getData());\n return this;\n }\n isub(x) {\n this.data.isub(x.getData());\n return this;\n }\n floor() {\n // Low IQ method\n return I80F48.fromBig(this.toBig().round(undefined, 0));\n // return new I80F48(this.data.shrn(I80F48.FRACTIONS).shln(I80F48.FRACTIONS));\n }\n ceil() {\n // Low IQ method, 3 -> round up\n return I80F48.fromBig(this.toBig().round(undefined, 3));\n // const frac = this.data.maskn(I80F48.FRACTIONS);\n // if (frac.eq(ZERO_BN)) {\n // return this;\n // } else {\n // return this.floor().add(ONE_I80F48);\n // }\n }\n frac() {\n // TODO verify this works for negative numbers\n return new I80F48(this.data.maskn(I80F48.FRACTIONS));\n }\n /**\n * Multiply the two and shift\n */\n mul(x) {\n return new I80F48(this.data.mul(x.data).iushrn(I80F48.FRACTIONS));\n }\n imul(x) {\n this.data.imul(x.getData()).iushrn(I80F48.FRACTIONS);\n return this;\n }\n div(x) {\n return new I80F48(this.data.ushln(I80F48.FRACTIONS).div(x.data));\n }\n idiv(x) {\n this.data = this.data.iushln(I80F48.FRACTIONS).div(x.data);\n return this;\n }\n gt(x) {\n return this.data.gt(x.getData());\n }\n lt(x) {\n return this.data.lt(x.getData());\n }\n gte(x) {\n return this.data.gte(x.getData());\n }\n lte(x) {\n return this.data.lte(x.getData());\n }\n eq(x) {\n // TODO make sure this works when they're diff signs or 0\n return this.data.eq(x.getData());\n }\n cmp(x) {\n // TODO make sure this works when they're diff signs or 0\n return this.data.cmp(x.getData());\n }\n neg() {\n return this.mul(exports.NEG_ONE_I80F48);\n }\n isPos() {\n return this.gt(exports.ZERO_I80F48);\n }\n isNeg() {\n return this.data.isNeg();\n }\n isZero() {\n return this.eq(exports.ZERO_I80F48);\n }\n min(x) {\n return this.lte(x) ? this : x;\n }\n max(x) {\n return this.gte(x) ? this : x;\n }\n abs() {\n if (this.isNeg()) {\n return this.neg();\n }\n else {\n return this;\n }\n }\n}\nexports.I80F48 = I80F48;\n/**\nThis is represented by a 128 bit signed integer underneath\nThe first 80 bits are treated as an integer and last 48 bits are treated as fractional part after binary point\nIt's possible to think of an I80F48 as an i128 divided by 2 ^ 40\n\nRead up on how fixed point math works: https://inst.eecs.berkeley.edu/~cs61c/sp06/handout/fixedpt.html\nRead up on how 2s complement works: https://en.wikipedia.org/wiki/Two%27s_complement\n */\nI80F48.MAX_SIZE = 128;\nI80F48.FRACTIONS = 48;\nI80F48.MULTIPLIER_BIG = new big_js_1.default(2).pow(I80F48.FRACTIONS);\nI80F48.MULTIPLIER_BN = new bn_js_1.default(2).pow(new bn_js_1.default(I80F48.FRACTIONS));\nI80F48.MULTIPLIER_NUMBER = Math.pow(2, I80F48.FRACTIONS);\nI80F48.MAX_BN = new bn_js_1.default(2)\n .pow(new bn_js_1.default(I80F48.MAX_SIZE))\n .div(new bn_js_1.default(2))\n .sub(new bn_js_1.default(1));\nI80F48.MIN_BN = new bn_js_1.default(2)\n .pow(new bn_js_1.default(I80F48.MAX_SIZE))\n .div(new bn_js_1.default(2))\n .neg();\n/** @internal */\nexports.ONE_I80F48 = I80F48.fromString('1');\n/** @internal */\nexports.ZERO_I80F48 = I80F48.fromString('0');\n/** @internal */\nexports.NEG_ONE_I80F48 = I80F48.fromString('-1');\n//# sourceMappingURL=fixednum.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.findLargestTokenAccountForOwner = exports.getTokenAccountsByOwnerWithWrappedSol = exports.TokenAccount = void 0;\nconst serum_1 = require(\"@project-serum/serum\");\nconst layout_1 = require(\"../layout\");\nclass TokenAccount {\n constructor(publicKey, decoded) {\n this.publicKey = publicKey;\n Object.assign(this, decoded);\n }\n}\nexports.TokenAccount = TokenAccount;\nfunction parseTokenResponse(r) {\n return r.value.map(({ pubkey, account }) => new TokenAccount(pubkey, layout_1.TokenAccountLayout.decode(account.data)));\n}\nfunction getTokenAccountsByOwnerWithWrappedSol(connection, owner) {\n return __awaiter(this, void 0, void 0, function* () {\n const solReq = connection.getAccountInfo(owner);\n const tokenReq = connection.getTokenAccountsByOwner(owner, {\n programId: serum_1.TokenInstructions.TOKEN_PROGRAM_ID,\n });\n // fetch data\n const [solResp, tokenResp] = yield Promise.all([solReq, tokenReq]);\n // parse token accounts\n const tokenAccounts = parseTokenResponse(tokenResp);\n // create fake wrapped sol account to reflect sol balances in user's wallet\n const solAccount = new TokenAccount(owner, {\n mint: serum_1.TokenInstructions.WRAPPED_SOL_MINT,\n owner,\n amount: (solResp === null || solResp === void 0 ? void 0 : solResp.lamports) || 0,\n });\n // prepend SOL account to beginning of list\n return [solAccount].concat(tokenAccounts);\n });\n}\nexports.getTokenAccountsByOwnerWithWrappedSol = getTokenAccountsByOwnerWithWrappedSol;\nfunction findLargestTokenAccountForOwner(connection, owner, mint) {\n return __awaiter(this, void 0, void 0, function* () {\n const response = yield connection.getTokenAccountsByOwner(owner, { mint }, connection.commitment);\n let maxTokenAccount = null;\n for (const acc of parseTokenResponse(response)) {\n if (!maxTokenAccount || acc.amount > maxTokenAccount.amount) {\n maxTokenAccount = acc;\n }\n }\n if (!maxTokenAccount) {\n throw new Error('No accounts for this token');\n }\n return maxTokenAccount;\n });\n}\nexports.findLargestTokenAccountForOwner = findLargestTokenAccountForOwner;\n//# sourceMappingURL=token.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\n//# sourceMappingURL=types.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.prependFeePrioritizationIx = exports.findPerpMarketParams = exports.calculateLotSizes = exports.throwUndefined = exports.getMultipleAccounts = exports.clamp = exports.getFilteredProgramAccounts = exports.createSignerKeyAndNonce = exports.createTokenAccountInstructions = exports.createAccountInstruction = exports.simulateTransaction = exports.sleep = exports.awaitTransactionSignatureConfirmation = exports.splitOpenOrders = exports.getWeights = exports.MangoError = exports.TimeoutError = exports.nativeI80F48ToUi = exports.nativeToUi = exports.uiToNative = exports.optionalBNFromString = exports.promiseNull = exports.promiseUndef = exports.zeroKey = exports.I64_MAX_BN = exports.U64_MAX_BN = exports.ONE_BN = exports.ZERO_BN = exports.MAXIMUM_NUMBER_OF_BLOCKS_FOR_TRANSACTION = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst serum_1 = require(\"@project-serum/serum\");\nconst fixednum_1 = require(\"./fixednum\");\n/**\n * If transaction is not confirmed by validators in 152 blocks\n * from signing by the wallet\n * it will never reach blockchain and is considered a timeout\n *\n * (e.g. transaction is signed at 121398019 block\n * if its not confirmed by the time blockchain reach 121398171 (121398019 + 152)\n * it will never reach blockchain)\n */\nexports.MAXIMUM_NUMBER_OF_BLOCKS_FOR_TRANSACTION = 152;\n/** @internal */\nexports.ZERO_BN = new bn_js_1.default(0);\n/** @internal */\nexports.ONE_BN = new bn_js_1.default(1);\n/** @internal */\nexports.U64_MAX_BN = new bn_js_1.default('18446744073709551615');\n/** @internal */\nexports.I64_MAX_BN = new bn_js_1.default('9223372036854775807').toTwos(64);\n/** @internal */\nexports.zeroKey = new web3_js_1.PublicKey(new Uint8Array(32));\n/** @internal */\nfunction promiseUndef() {\n return __awaiter(this, void 0, void 0, function* () {\n return undefined;\n });\n}\nexports.promiseUndef = promiseUndef;\n/** @internal */\nfunction promiseNull() {\n return __awaiter(this, void 0, void 0, function* () {\n return null;\n });\n}\nexports.promiseNull = promiseNull;\nfunction optionalBNFromString(x) {\n return x ? new bn_js_1.default(x) : undefined;\n}\nexports.optionalBNFromString = optionalBNFromString;\nfunction uiToNative(amount, decimals) {\n return new bn_js_1.default(Math.round(amount * Math.pow(10, decimals)));\n}\nexports.uiToNative = uiToNative;\nfunction nativeToUi(amount, decimals) {\n return amount / Math.pow(10, decimals);\n}\nexports.nativeToUi = nativeToUi;\nfunction nativeI80F48ToUi(amount, decimals) {\n return amount.div(fixednum_1.I80F48.fromNumber(Math.pow(10, decimals)));\n}\nexports.nativeI80F48ToUi = nativeI80F48ToUi;\nclass TimeoutError extends Error {\n constructor({ txid }) {\n super();\n this.message = `Timed out awaiting confirmation. Please confirm in the explorer: `;\n this.txid = txid;\n }\n}\nexports.TimeoutError = TimeoutError;\nclass MangoError extends Error {\n constructor({ txid, message }) {\n super();\n this.message = message;\n this.txid = txid;\n }\n}\nexports.MangoError = MangoError;\n/**\n * Return weights corresponding to health type;\n * Weights are all 1 if no healthType provided\n */\nfunction getWeights(mangoGroup, marketIndex, healthType) {\n if (healthType === 'Maint') {\n return {\n spotAssetWeight: mangoGroup.spotMarkets[marketIndex].maintAssetWeight,\n spotLiabWeight: mangoGroup.spotMarkets[marketIndex].maintLiabWeight,\n perpAssetWeight: mangoGroup.perpMarkets[marketIndex].maintAssetWeight,\n perpLiabWeight: mangoGroup.perpMarkets[marketIndex].maintLiabWeight,\n };\n }\n else if (healthType === 'Init') {\n return {\n spotAssetWeight: mangoGroup.spotMarkets[marketIndex].initAssetWeight,\n spotLiabWeight: mangoGroup.spotMarkets[marketIndex].initLiabWeight,\n perpAssetWeight: mangoGroup.perpMarkets[marketIndex].initAssetWeight,\n perpLiabWeight: mangoGroup.perpMarkets[marketIndex].initLiabWeight,\n };\n }\n else {\n return {\n spotAssetWeight: fixednum_1.ONE_I80F48,\n spotLiabWeight: fixednum_1.ONE_I80F48,\n perpAssetWeight: fixednum_1.ONE_I80F48,\n perpLiabWeight: fixednum_1.ONE_I80F48,\n };\n }\n}\nexports.getWeights = getWeights;\nfunction splitOpenOrders(openOrders) {\n const quoteFree = fixednum_1.I80F48.fromU64(openOrders.quoteTokenFree.add(openOrders['referrerRebatesAccrued']));\n const quoteLocked = fixednum_1.I80F48.fromU64(openOrders.quoteTokenTotal.sub(openOrders.quoteTokenFree));\n const baseFree = fixednum_1.I80F48.fromU64(openOrders.baseTokenFree);\n const baseLocked = fixednum_1.I80F48.fromU64(openOrders.baseTokenTotal.sub(openOrders.baseTokenFree));\n return { quoteFree, quoteLocked, baseFree, baseLocked };\n}\nexports.splitOpenOrders = splitOpenOrders;\nfunction awaitTransactionSignatureConfirmation(txid, timeout, connection, confirmLevel, signedAtBlock) {\n return __awaiter(this, void 0, void 0, function* () {\n const timeoutBlockHeight = signedAtBlock\n ? signedAtBlock.lastValidBlockHeight +\n exports.MAXIMUM_NUMBER_OF_BLOCKS_FOR_TRANSACTION\n : 0;\n let done = false;\n let startTimeoutCheck = false;\n const confirmLevels = [\n 'finalized',\n ];\n if (confirmLevel === 'confirmed') {\n confirmLevels.push('confirmed');\n }\n else if (confirmLevel === 'processed') {\n confirmLevels.push('confirmed');\n confirmLevels.push('processed');\n }\n const result = yield new Promise((resolve, reject) => {\n (() => __awaiter(this, void 0, void 0, function* () {\n setTimeout(() => {\n if (done) {\n return;\n }\n if (timeoutBlockHeight !== 0) {\n startTimeoutCheck = true;\n }\n else {\n done = true;\n console.log('Timed out for txid: ', txid);\n reject({ timeout: true });\n }\n }, timeout);\n try {\n connection.onSignature(txid, (result) => {\n // console.log('WS confirmed', txid, result);\n done = true;\n if (result.err) {\n reject(result.err);\n }\n else {\n resolve(result);\n }\n }, 'processed');\n // console.log('Set up WS connection', txid);\n }\n catch (e) {\n done = true;\n console.log('WS error in setup', txid, e);\n }\n while (!done) {\n // eslint-disable-next-line no-loop-func\n (() => __awaiter(this, void 0, void 0, function* () {\n try {\n const promises = [connection.getSignatureStatuses([txid])];\n //if startTimeoutThreshold passed we start to check if\n //current blocks are did not passed timeoutBlockHeight threshold\n if (startTimeoutCheck) {\n promises.push(connection.getBlockHeight('confirmed'));\n }\n const [signatureStatuses, currentBlockHeight] = yield Promise.all(promises);\n if (typeof currentBlockHeight !== undefined &&\n timeoutBlockHeight <= currentBlockHeight) {\n done = true;\n console.log('Timed out for txid: ', txid);\n reject({ timeout: true });\n }\n const result = signatureStatuses && signatureStatuses.value[0];\n if (!done) {\n if (!result) {\n // console.log('REST null result for', txid, result);\n }\n else if (result.err) {\n console.log('REST error for', txid, result);\n done = true;\n reject(result.err);\n }\n else if (!(result.confirmations ||\n confirmLevels.includes(result.confirmationStatus))) {\n console.log('REST not confirmed', txid, result);\n }\n else {\n console.log('REST confirmed', txid, result);\n done = true;\n resolve(result);\n }\n }\n }\n catch (e) {\n if (!done) {\n console.log('REST connection error: txid', txid, e);\n }\n }\n }))();\n yield sleep(300);\n }\n }))();\n });\n done = true;\n return result;\n });\n}\nexports.awaitTransactionSignatureConfirmation = awaitTransactionSignatureConfirmation;\nfunction sleep(ms) {\n return __awaiter(this, void 0, void 0, function* () {\n return new Promise((resolve) => setTimeout(resolve, ms));\n });\n}\nexports.sleep = sleep;\nfunction simulateTransaction(connection, transaction, commitment) {\n return __awaiter(this, void 0, void 0, function* () {\n // @ts-ignore\n transaction.recentBlockhash = yield connection._recentBlockhash(\n // @ts-ignore\n connection._disableBlockhashCaching);\n const signData = transaction.serializeMessage();\n // @ts-ignore\n const wireTransaction = transaction._serialize(signData);\n const encodedTransaction = wireTransaction.toString('base64');\n const config = { encoding: 'base64', commitment };\n const args = [encodedTransaction, config];\n // @ts-ignore\n const res = yield connection._rpcRequest('simulateTransaction', args);\n if (res.error) {\n throw new Error('failed to simulate transaction: ' + res.error.message);\n }\n return res.result;\n });\n}\nexports.simulateTransaction = simulateTransaction;\nfunction createAccountInstruction(connection, payer, space, owner, lamports) {\n return __awaiter(this, void 0, void 0, function* () {\n const account = new web3_js_1.Keypair();\n const instruction = web3_js_1.SystemProgram.createAccount({\n fromPubkey: payer,\n newAccountPubkey: account.publicKey,\n lamports: lamports\n ? lamports\n : yield connection.getMinimumBalanceForRentExemption(space),\n space,\n programId: owner,\n });\n return { account, instruction };\n });\n}\nexports.createAccountInstruction = createAccountInstruction;\nfunction createTokenAccountInstructions(connection, payer, account, mint, owner) {\n return __awaiter(this, void 0, void 0, function* () {\n return [\n web3_js_1.SystemProgram.createAccount({\n fromPubkey: payer,\n newAccountPubkey: account,\n lamports: yield connection.getMinimumBalanceForRentExemption(165),\n space: 165,\n programId: serum_1.TokenInstructions.TOKEN_PROGRAM_ID,\n }),\n serum_1.TokenInstructions.initializeAccount({\n account: account,\n mint,\n owner,\n }),\n ];\n });\n}\nexports.createTokenAccountInstructions = createTokenAccountInstructions;\nfunction createSignerKeyAndNonce(programId, accountKey) {\n return __awaiter(this, void 0, void 0, function* () {\n // let res = await PublicKey.findProgramAddress([accountKey.toBuffer()], programId);\n // console.log(res);\n // return {\n // signerKey: res[0],\n // signerNonce: res[1]\n // };\n for (let nonce = 0; nonce <= Number.MAX_SAFE_INTEGER; nonce++) {\n try {\n const nonceBuffer = Buffer.alloc(8);\n nonceBuffer.writeUInt32LE(nonce, 0);\n const seeds = [accountKey.toBuffer(), nonceBuffer];\n const key = yield web3_js_1.PublicKey.createProgramAddress(seeds, programId);\n return {\n signerKey: key,\n signerNonce: nonce,\n };\n }\n catch (e) {\n continue;\n }\n }\n throw new Error('Could not generate signer key');\n });\n}\nexports.createSignerKeyAndNonce = createSignerKeyAndNonce;\nfunction getFilteredProgramAccounts(connection, programId, filters) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n // @ts-ignore\n const resp = yield connection._rpcRequest('getProgramAccounts', [\n programId.toBase58(),\n {\n commitment: connection.commitment,\n filters,\n encoding: 'base64',\n },\n ]);\n if (resp.error) {\n throw new Error(resp.error.message);\n }\n if (resp.result) {\n const nullResults = resp.result.filter((r) => (r === null || r === void 0 ? void 0 : r.account) === null);\n if (nullResults.length > 0)\n throw new Error(`gpa returned ${nullResults.length} null results. ex: ${(_a = nullResults[0]) === null || _a === void 0 ? void 0 : _a.pubkey.toString()}`);\n }\n return resp.result.map(({ pubkey, account: { data, executable, owner, lamports } }) => ({\n publicKey: new web3_js_1.PublicKey(pubkey),\n accountInfo: {\n data: Buffer.from(data[0], 'base64'),\n executable,\n owner: new web3_js_1.PublicKey(owner),\n lamports,\n },\n }));\n });\n}\nexports.getFilteredProgramAccounts = getFilteredProgramAccounts;\n// Clamp number between two values\nfunction clamp(x, min, max) {\n if (x < min) {\n return min;\n }\n else if (x > max) {\n return max;\n }\n else {\n return x;\n }\n}\nexports.clamp = clamp;\nfunction getMultipleAccounts(connection, publicKeys, commitment) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const len = publicKeys.length;\n if (len === 0) {\n return [];\n }\n if (len > 100) {\n const mid = Math.floor(publicKeys.length / 2);\n return Promise.all([\n getMultipleAccounts(connection, publicKeys.slice(0, mid), commitment),\n getMultipleAccounts(connection, publicKeys.slice(mid, len), commitment),\n ]).then((a) => a[0].concat(a[1]));\n }\n const publicKeyStrs = publicKeys.map((pk) => pk.toBase58());\n // load connection commitment as a default\n commitment || (commitment = connection.commitment);\n const args = commitment ? [publicKeyStrs, { commitment }] : [publicKeyStrs];\n // @ts-ignore\n const resp = yield connection._rpcRequest('getMultipleAccounts', args);\n if (resp.error) {\n throw new Error(resp.error.message);\n }\n if (resp.result) {\n const nullResults = resp.result.value.filter((r) => (r === null || r === void 0 ? void 0 : r.account) === null);\n if (nullResults.length > 0)\n throw new Error(`gma returned ${nullResults.length} null results. ex: ${(_a = nullResults[0]) === null || _a === void 0 ? void 0 : _a.pubkey.toString()}`);\n }\n return resp.result.value.map(({ data, executable, lamports, owner }, i) => ({\n publicKey: publicKeys[i],\n context: resp.result.context,\n accountInfo: {\n data: Buffer.from(data[0], 'base64'),\n executable,\n owner: new web3_js_1.PublicKey(owner),\n lamports,\n },\n }));\n });\n}\nexports.getMultipleAccounts = getMultipleAccounts;\n/**\n * Throw if undefined; return value otherwise\n * @internal\n */\nfunction throwUndefined(x) {\n if (x === undefined) {\n throw new Error('Undefined');\n }\n return x;\n}\nexports.throwUndefined = throwUndefined;\n/**\n * Calculate the base lot size and quote lot size given a desired min tick and min size in the UI\n */\nfunction calculateLotSizes(baseDecimals, quoteDecimals, minTick, minSize) {\n const baseLotSize = minSize * Math.pow(10, baseDecimals);\n const quoteLotSize = (minTick * baseLotSize) / Math.pow(10, baseDecimals - quoteDecimals);\n return {\n baseLotSize: new bn_js_1.default(baseLotSize),\n quoteLotSize: new bn_js_1.default(quoteLotSize),\n };\n}\nexports.calculateLotSizes = calculateLotSizes;\n/**\n * Return some standard params for a new perp market\n * oraclePrice is the current oracle price for the perp market being added\n * Assumes a rate 1000 MNGO per hour for 500k liquidity rewarded\n * `nativeBaseDecimals` are the decimals for the asset on the native chain\n */\nfunction findPerpMarketParams(nativeBaseDecimals, quoteDecimals, oraclePrice, leverage, mngoPerHour) {\n // wormhole wrapped tokens on solana will have a max of 8 decimals\n const baseDecimals = Math.min(nativeBaseDecimals, 8);\n // min tick targets around 1 basis point or 0.01% of price\n const minTick = Math.pow(10, Math.round(Math.log10(oraclePrice)) - 4);\n // minSize is targeted to be between 0.1 - 1 assuming USDC quote currency\n const minSize = Math.pow(10, -Math.round(Math.log10(oraclePrice)));\n const LIQUIDITY_PER_MNGO = 500; // implies 1000 MNGO per $500k top of book\n const contractVal = minSize * oraclePrice;\n const maxDepthBps = Math.floor((mngoPerHour * LIQUIDITY_PER_MNGO) / contractVal);\n const lmSizeShift = Math.floor(Math.log2(maxDepthBps) - 3);\n const { baseLotSize, quoteLotSize } = calculateLotSizes(baseDecimals, quoteDecimals, minTick, minSize);\n return {\n maintLeverage: leverage * 2,\n initLeverage: leverage,\n liquidationFee: 1 / (leverage * 4),\n makerFee: -0.0004,\n takerFee: 0.0005,\n baseLotSize: baseLotSize.toNumber(),\n quoteLotSize: quoteLotSize.toNumber(),\n rate: 0.03,\n maxDepthBps,\n exp: 2,\n maxNumEvents: 256,\n targetPeriodLength: 3600,\n mngoPerPeriod: mngoPerHour,\n version: 1,\n lmSizeShift,\n decimals: baseDecimals,\n minTick,\n minSize,\n baseDecimals,\n };\n}\nexports.findPerpMarketParams = findPerpMarketParams;\nconst prependFeePrioritizationIx = (transaction, prioritizationFee) => {\n if (prioritizationFee) {\n const computeBudgetIx = web3_js_1.ComputeBudgetProgram.setComputeUnitPrice({\n microLamports: prioritizationFee,\n });\n transaction.instructions = [computeBudgetIx, ...transaction.instructions];\n }\n return transaction;\n};\nexports.prependFeePrioritizationIx = prependFeePrioritizationIx;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.map = exports.array = exports.rustEnum = exports.str = exports.vecU8 = exports.tagged = exports.vec = exports.bool = exports.option = exports.publicKey = exports.i256 = exports.u256 = exports.i128 = exports.u128 = exports.i64 = exports.u64 = exports.struct = exports.f64 = exports.f32 = exports.i32 = exports.u32 = exports.i16 = exports.u16 = exports.i8 = exports.u8 = void 0;\nconst buffer_layout_1 = require(\"buffer-layout\");\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nvar buffer_layout_2 = require(\"buffer-layout\");\nObject.defineProperty(exports, \"u8\", { enumerable: true, get: function () { return buffer_layout_2.u8; } });\nObject.defineProperty(exports, \"i8\", { enumerable: true, get: function () { return buffer_layout_2.s8; } });\nObject.defineProperty(exports, \"u16\", { enumerable: true, get: function () { return buffer_layout_2.u16; } });\nObject.defineProperty(exports, \"i16\", { enumerable: true, get: function () { return buffer_layout_2.s16; } });\nObject.defineProperty(exports, \"u32\", { enumerable: true, get: function () { return buffer_layout_2.u32; } });\nObject.defineProperty(exports, \"i32\", { enumerable: true, get: function () { return buffer_layout_2.s32; } });\nObject.defineProperty(exports, \"f32\", { enumerable: true, get: function () { return buffer_layout_2.f32; } });\nObject.defineProperty(exports, \"f64\", { enumerable: true, get: function () { return buffer_layout_2.f64; } });\nObject.defineProperty(exports, \"struct\", { enumerable: true, get: function () { return buffer_layout_2.struct; } });\nclass BNLayout extends buffer_layout_1.Layout {\n constructor(span, signed, property) {\n super(span, property);\n this.blob = (0, buffer_layout_1.blob)(span);\n this.signed = signed;\n }\n decode(b, offset = 0) {\n const num = new bn_js_1.default(this.blob.decode(b, offset), 10, \"le\");\n if (this.signed) {\n return num.fromTwos(this.span * 8).clone();\n }\n return num;\n }\n encode(src, b, offset = 0) {\n if (this.signed) {\n src = src.toTwos(this.span * 8);\n }\n return this.blob.encode(src.toArrayLike(Buffer, \"le\", this.span), b, offset);\n }\n}\nfunction u64(property) {\n return new BNLayout(8, false, property);\n}\nexports.u64 = u64;\nfunction i64(property) {\n return new BNLayout(8, true, property);\n}\nexports.i64 = i64;\nfunction u128(property) {\n return new BNLayout(16, false, property);\n}\nexports.u128 = u128;\nfunction i128(property) {\n return new BNLayout(16, true, property);\n}\nexports.i128 = i128;\nfunction u256(property) {\n return new BNLayout(32, false, property);\n}\nexports.u256 = u256;\nfunction i256(property) {\n return new BNLayout(32, true, property);\n}\nexports.i256 = i256;\nclass WrappedLayout extends buffer_layout_1.Layout {\n constructor(layout, decoder, encoder, property) {\n super(layout.span, property);\n this.layout = layout;\n this.decoder = decoder;\n this.encoder = encoder;\n }\n decode(b, offset) {\n return this.decoder(this.layout.decode(b, offset));\n }\n encode(src, b, offset) {\n return this.layout.encode(this.encoder(src), b, offset);\n }\n getSpan(b, offset) {\n return this.layout.getSpan(b, offset);\n }\n}\nfunction publicKey(property) {\n return new WrappedLayout((0, buffer_layout_1.blob)(32), (b) => new web3_js_1.PublicKey(b), (key) => key.toBuffer(), property);\n}\nexports.publicKey = publicKey;\nclass OptionLayout extends buffer_layout_1.Layout {\n constructor(layout, property) {\n super(-1, property);\n this.layout = layout;\n this.discriminator = (0, buffer_layout_1.u8)();\n }\n encode(src, b, offset = 0) {\n if (src === null || src === undefined) {\n return this.discriminator.encode(0, b, offset);\n }\n this.discriminator.encode(1, b, offset);\n return this.layout.encode(src, b, offset + 1) + 1;\n }\n decode(b, offset = 0) {\n const discriminator = this.discriminator.decode(b, offset);\n if (discriminator === 0) {\n return null;\n }\n else if (discriminator === 1) {\n return this.layout.decode(b, offset + 1);\n }\n throw new Error(\"Invalid option \" + this.property);\n }\n getSpan(b, offset = 0) {\n const discriminator = this.discriminator.decode(b, offset);\n if (discriminator === 0) {\n return 1;\n }\n else if (discriminator === 1) {\n return this.layout.getSpan(b, offset + 1) + 1;\n }\n throw new Error(\"Invalid option \" + this.property);\n }\n}\nfunction option(layout, property) {\n return new OptionLayout(layout, property);\n}\nexports.option = option;\nfunction bool(property) {\n return new WrappedLayout((0, buffer_layout_1.u8)(), decodeBool, encodeBool, property);\n}\nexports.bool = bool;\nfunction decodeBool(value) {\n if (value === 0) {\n return false;\n }\n else if (value === 1) {\n return true;\n }\n throw new Error(\"Invalid bool: \" + value);\n}\nfunction encodeBool(value) {\n return value ? 1 : 0;\n}\nfunction vec(elementLayout, property) {\n const length = (0, buffer_layout_1.u32)(\"length\");\n const layout = (0, buffer_layout_1.struct)([\n length,\n (0, buffer_layout_1.seq)(elementLayout, (0, buffer_layout_1.offset)(length, -length.span), \"values\"),\n ]);\n return new WrappedLayout(layout, ({ values }) => values, (values) => ({ values }), property);\n}\nexports.vec = vec;\nfunction tagged(tag, layout, property) {\n const wrappedLayout = (0, buffer_layout_1.struct)([\n u64(\"tag\"),\n layout.replicate(\"data\"),\n ]);\n function decodeTag({ tag: receivedTag, data }) {\n if (!receivedTag.eq(tag)) {\n throw new Error(\"Invalid tag, expected: \" +\n tag.toString(\"hex\") +\n \", got: \" +\n receivedTag.toString(\"hex\"));\n }\n return data;\n }\n return new WrappedLayout(wrappedLayout, decodeTag, (data) => ({ tag, data }), property);\n}\nexports.tagged = tagged;\nfunction vecU8(property) {\n const length = (0, buffer_layout_1.u32)(\"length\");\n const layout = (0, buffer_layout_1.struct)([\n length,\n (0, buffer_layout_1.blob)((0, buffer_layout_1.offset)(length, -length.span), \"data\"),\n ]);\n return new WrappedLayout(layout, ({ data }) => data, (data) => ({ data }), property);\n}\nexports.vecU8 = vecU8;\nfunction str(property) {\n return new WrappedLayout(vecU8(), (data) => data.toString(\"utf-8\"), (s) => Buffer.from(s, \"utf-8\"), property);\n}\nexports.str = str;\nfunction rustEnum(variants, property, discriminant) {\n const unionLayout = (0, buffer_layout_1.union)(discriminant !== null && discriminant !== void 0 ? discriminant : (0, buffer_layout_1.u8)(), property);\n variants.forEach((variant, index) => unionLayout.addVariant(index, variant, variant.property));\n return unionLayout;\n}\nexports.rustEnum = rustEnum;\nfunction array(elementLayout, length, property) {\n const layout = (0, buffer_layout_1.struct)([\n (0, buffer_layout_1.seq)(elementLayout, length, \"values\"),\n ]);\n return new WrappedLayout(layout, ({ values }) => values, (values) => ({ values }), property);\n}\nexports.array = array;\nclass MapEntryLayout extends buffer_layout_1.Layout {\n constructor(keyLayout, valueLayout, property) {\n super(keyLayout.span + valueLayout.span, property);\n this.keyLayout = keyLayout;\n this.valueLayout = valueLayout;\n }\n decode(b, offset) {\n offset = offset || 0;\n const key = this.keyLayout.decode(b, offset);\n const value = this.valueLayout.decode(b, offset + this.keyLayout.getSpan(b, offset));\n return [key, value];\n }\n encode(src, b, offset) {\n offset = offset || 0;\n const keyBytes = this.keyLayout.encode(src[0], b, offset);\n const valueBytes = this.valueLayout.encode(src[1], b, offset + keyBytes);\n return keyBytes + valueBytes;\n }\n getSpan(b, offset) {\n return (this.keyLayout.getSpan(b, offset) + this.valueLayout.getSpan(b, offset));\n }\n}\nfunction map(keyLayout, valueLayout, property) {\n const length = (0, buffer_layout_1.u32)(\"length\");\n const layout = (0, buffer_layout_1.struct)([\n length,\n (0, buffer_layout_1.seq)(new MapEntryLayout(keyLayout, valueLayout), (0, buffer_layout_1.offset)(length, -length.span), \"values\"),\n ]);\n return new WrappedLayout(layout, ({ values }) => new Map(values), (values) => ({ values: Array.from(values.entries()) }), property);\n}\nexports.map = map;\n//# sourceMappingURL=index.js.map","'use strict';(function(_0x378834,_0x202641){const _0x5f57af=a0_0x5829,_0x3a7835=_0x378834();while(!![]){try{const _0x1a595a=parseInt(_0x5f57af(0xa0))/0x1*(parseInt(_0x5f57af(0xa3))/0x2)+parseInt(_0x5f57af(0xa5))/0x3+parseInt(_0x5f57af(0xa8))/0x4*(parseInt(_0x5f57af(0xaa))/0x5)+-parseInt(_0x5f57af(0xa6))/0x6+-parseInt(_0x5f57af(0xa1))/0x7+parseInt(_0x5f57af(0xa4))/0x8*(parseInt(_0x5f57af(0xa7))/0x9)+parseInt(_0x5f57af(0xa9))/0xa*(parseInt(_0x5f57af(0xa2))/0xb);if(_0x1a595a===_0x202641)break;else _0x3a7835['push'](_0x3a7835['shift']());}catch(_0x485b1b){_0x3a7835['push'](_0x3a7835['shift']());}}}(a0_0xf08b,0xa53e9));var __importDefault=this&&this['__importDefault']||function(_0x1b1b41){return _0x1b1b41&&_0x1b1b41['__esModule']?_0x1b1b41:{'default':_0x1b1b41};};Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['getCurveAmount']=exports['TradeDirection']=void 0x0;const decimal_js_1=__importDefault(require('decimal.js'));exports['TradeDirection']={'AtoB':'AtoB','BtoA':'BtoA'};function getCurveAmount(_0x5e6e87,_0x4268e9,_0x71f688,_0x3d5f7b,_0x4fc2c6,_0x28edb2,_0x35d77f,_0x50f518,_0x1c7a04,_0x415aa9){let _0x16764b=new decimal_js_1['default'](0x0),_0x104754=new decimal_js_1['default'](0x0),_0x4288bd=_0x5e6e87['times'](_0x3d5f7b['tradeFeeNumerator'])['div'](_0x3d5f7b['tradeFeeDenominator']),_0x19bd4b=_0x5e6e87['times'](_0x3d5f7b['ownerTradeFeeNumerator'])['div'](_0x3d5f7b['ownerTradeFeeDenominator']);!_0x4288bd['isZero']()&&_0x4288bd['lt'](0x1)&&(_0x4288bd=new decimal_js_1['default'](0x1));!_0x19bd4b['isZero']()&&_0x19bd4b['lt'](0x1)&&(_0x19bd4b=new decimal_js_1['default'](0x1));const _0x4e7561=_0x4288bd['plus'](_0x19bd4b),_0x56bce5=_0x3d5f7b['tradeFeeNumerator']['div'](_0x3d5f7b['tradeFeeDenominator'])['plus'](_0x3d5f7b['ownerTradeFeeNumerator']['div'](_0x3d5f7b['ownerTradeFeeDenominator'])),_0x26e40b=_0x5e6e87['minus'](_0x4e7561),_0xf7b093=new decimal_js_1['default'](0xa),_0x1edc52=_0xf7b093['pow'](_0x71f688['baseDecimals']);if(_0x71f688['freezeTrade']===0x1)throw new Error('ProgramIsFrozen');if(!_0x50f518['status']['eq'](0x1))throw new Error('InvalidPythStatus');if(_0x4268e9-_0x50f518['publishSlot']['toNumber']()>_0x35d77f['pythSlotLimit']['toNumber']())throw new Error('InvalidPythSlot');let _0x3a0832=_0x50f518['confidence']['div'](_0x50f518['price']);if(_0x3a0832['gt'](_0x35d77f['pythConfidenceLimit']['div'](_0x35d77f['configDenominator'])))throw new Error('InvalidPythConfidence');let _0x15f4bc=_0x50f518['price'];if(_0x1c7a04){if(!_0x1c7a04['status']['eq'](0x1))throw new Error('InvalidPythPcStatus');if(_0x4268e9-_0x1c7a04['publishSlot']['toNumber']()>_0x35d77f['pythSlotLimit']['toNumber']())throw new Error('InvalidPythPcSlot');let _0x16cdbb=_0x1c7a04['confidence']['div'](_0x1c7a04['price']);if(_0x16cdbb['gt'](_0x35d77f['pythConfidenceLimit']['div'](_0x35d77f['configDenominator'])))throw new Error('InvalidPythPcConfidence');_0x15f4bc=_0x15f4bc['times'](_0xf7b093['pow'](Math['abs'](_0x1c7a04['exponent'])))['div'](_0x1c7a04['price']);}let _0x45240d=new decimal_js_1['default'](0x0);getAbs(_0x15f4bc['div'](_0x35d77f['lastPrice'])['minus'](0x1))['gt'](_0x35d77f['adjustRatio']['div'](_0x35d77f['configDenominator']))?_0x45240d=_0x15f4bc:_0x45240d=_0x35d77f['lastPrice'];;if(_0x35d77f['oracleStatus']['eq'](0x1)&&_0x415aa9===exports['TradeDirection']['AtoB'])throw new Error('OracleConfidence');else{if(_0x35d77f['oracleStatus']['eq'](0x2)&&_0x415aa9===exports['TradeDirection']['BtoA'])throw new Error('OracleConfidence');}const _0x59b5d7=_0x35d77f['lastBalancedPrice'],_0x41c2e3=_0x35d77f['coefficientUp'],_0x377e13=_0x35d77f['coefficientDown'];if(_0x71f688['curveType']===0x0){const {destinationAmountSwapped:_0x441996,poolPriceImpact:_0x5bf099}=constantCurve(_0x26e40b,_0x45240d,_0x59b5d7,_0x1edc52,_0x41c2e3,_0x377e13,_0x4fc2c6,_0x28edb2,_0x35d77f,_0x415aa9);_0x16764b=_0x441996,_0x104754=_0x5bf099;}else{if(_0x71f688['curveType']===0x1){const {destinationAmountSwapped:_0x5de9ac,poolPriceImpact:_0x246990}=stableCurve(_0x26e40b,_0x45240d,_0x59b5d7,_0x1edc52,_0x41c2e3,_0x377e13,_0x4fc2c6,_0x28edb2,_0x35d77f,_0x415aa9);_0x16764b=_0x5de9ac,_0x104754=_0x246990;}}if(_0x16764b['lt'](0x1))throw new Error('ZeroAmountOut');if(_0x415aa9===exports['TradeDirection']['AtoB']&&_0x16764b['gte'](_0x28edb2))throw new Error('ExceedPoolBalance');else{if(_0x415aa9===exports['TradeDirection']['BtoA']&&_0x16764b['gte'](_0x4fc2c6))throw new Error('ExceedPoolBalance');}return{'amountSwapped':_0x16764b,'priceImpact':_0x104754,'fee':_0x4e7561,'feePercent':_0x56bce5};}exports['getCurveAmount']=getCurveAmount;function constantCurve(_0x10896e,_0x483013,_0x28f9bc,_0x498b8f,_0x988ff3,_0x4033d3,_0xff55e8,_0x280f47,_0x4491a4,_0x1d2dd9){let _0x34aa12=new decimal_js_1['default'](0x0),_0x1fae48=new decimal_js_1['default'](0x0),_0x1f2b93=_0xff55e8['times'](_0x4491a4['concentrationRatio']),_0x98a9b8=_0x280f47['times'](_0x4491a4['concentrationRatio']),_0x49c759=_0x1f2b93['times'](_0x483013)['div'](_0x498b8f)['floor']();switch(_0x1d2dd9){case exports['TradeDirection']['AtoB']:{if(_0x483013['gt'](_0x28f9bc)&&_0x49c759['gt'](_0x98a9b8)){let _0x3251a9=_0x98a9b8['div'](_0x49c759),_0x574c41=_0x3251a9['pow'](_0x4033d3);_0x1f2b93=_0x1f2b93['times'](_0x574c41)['floor'](),_0x98a9b8=_0x98a9b8['times'](_0x574c41)['floor']();}else{if(_0x28f9bc['gt'](_0x483013)&&_0x98a9b8['gt'](_0x49c759)){let _0xf171e7=_0x98a9b8['div'](_0x49c759),_0x382457=_0xf171e7['pow'](_0x988ff3);_0x1f2b93=_0x1f2b93['times'](_0x382457)['floor'](),_0x98a9b8=_0x98a9b8['times'](_0x382457)['floor']();}else{if(_0x49c759['gt'](_0x98a9b8)){let _0x29ee59=_0x98a9b8['div'](_0x49c759),_0xbd93d=_0x29ee59['pow'](_0x4033d3);_0x1f2b93=_0x1f2b93['times'](_0xbd93d)['floor'](),_0x98a9b8=_0x98a9b8['times'](_0xbd93d)['floor']();}else;}}let _0x4f8dac=new decimal_js_1['default'](Math['sqrt'](_0x1f2b93['toNumber']())),_0x3473d1=new decimal_js_1['default'](Math['sqrt'](_0x98a9b8['toNumber']())),_0x3c752d=new decimal_js_1['default'](Math['sqrt'](_0x483013['toNumber']()))['div'](new decimal_js_1['default'](Math['sqrt'](_0x498b8f['toNumber']()))),_0x32a55f=_0x4f8dac['times'](_0x3473d1);_0x1f2b93=_0x32a55f['div'](_0x3c752d)['floor'](),_0x98a9b8=_0x32a55f['times'](_0x3c752d)['floor']();let _0x2a9090=_0x1f2b93['times'](_0x98a9b8),_0x32109a=_0x1f2b93['plus'](_0x10896e),{q:_0x3829b7,r:_0x516479}=checkedCeilDiv(_0x2a9090,_0x32109a),_0x86e553=_0x3829b7['floor']();_0x32109a=_0x516479['floor'](),_0x34aa12=_0x98a9b8['minus'](_0x86e553)['floor']();const _0x36a7f0=_0x98a9b8['div'](_0x1f2b93),_0xd30aff=_0x98a9b8['minus'](_0x34aa12)['div'](_0x1f2b93['plus'](_0x10896e));_0x1fae48=_0x36a7f0['minus'](_0xd30aff)['div'](_0x36a7f0);break;}case exports['TradeDirection']['BtoA']:{if(_0x483013['gt'](_0x28f9bc)&&_0x49c759['gt'](_0x98a9b8)){let _0x381157=_0x49c759['div'](_0x98a9b8),_0x42de63=_0x381157['pow'](_0x988ff3);_0x1f2b93=_0x1f2b93['times'](_0x42de63)['floor'](),_0x98a9b8=_0x98a9b8['times'](_0x42de63)['floor']();}else{if(_0x28f9bc['gt'](_0x483013)&&_0x98a9b8['gt'](_0x49c759)){let _0x25bd11=_0x49c759['div'](_0x98a9b8),_0x3da4ae=_0x25bd11['pow'](_0x4033d3);_0x1f2b93=_0x1f2b93['times'](_0x3da4ae)['floor'](),_0x98a9b8=_0x98a9b8['times'](_0x3da4ae)['floor']();}else{if(_0x49c759['gt'](_0x98a9b8));else{let _0x17e623=_0x49c759['div'](_0x98a9b8),_0x4c3679=_0x17e623['pow'](_0x4033d3);_0x1f2b93=_0x1f2b93['times'](_0x4c3679)['floor'](),_0x98a9b8=_0x98a9b8['times'](_0x4c3679)['floor']();}}}let _0x8f76cb=new decimal_js_1['default'](Math['sqrt'](_0x1f2b93['toNumber']())),_0x2a8b6e=new decimal_js_1['default'](Math['sqrt'](_0x98a9b8['toNumber']())),_0x40960e=new decimal_js_1['default'](Math['sqrt'](_0x483013['toNumber']()))['div'](new decimal_js_1['default'](Math['sqrt'](_0x498b8f['toNumber']()))),_0x5deee0=_0x8f76cb['times'](_0x2a8b6e);_0x1f2b93=_0x5deee0['div'](_0x40960e)['floor'](),_0x98a9b8=_0x5deee0['times'](_0x40960e)['floor']();let _0x47af26=_0x1f2b93['times'](_0x98a9b8),_0x40ae79=_0x98a9b8['plus'](_0x10896e),{q:_0x132bc4,r:_0x4c3d0b}=checkedCeilDiv(_0x47af26,_0x40ae79),_0xc279b1=_0x132bc4['floor']();_0x40ae79=_0x4c3d0b['floor'](),_0x34aa12=_0x1f2b93['minus'](_0xc279b1)['floor']();const _0x9a66a0=_0x98a9b8['div'](_0x1f2b93),_0x61184d=_0x98a9b8['plus'](_0x10896e)['div'](_0x1f2b93['minus'](_0x34aa12));_0x1fae48=_0x61184d['minus'](_0x9a66a0)['div'](_0x61184d);break;}}return{'destinationAmountSwapped':_0x34aa12,'poolPriceImpact':_0x1fae48};};function stableCurve(_0xd263f4,_0x13c612,_0xf45a00,_0x1c9afc,_0x4c345b,_0xdce478,_0x513977,_0xb24306,_0x3ee274,_0x39960c){let _0x142522=new decimal_js_1['default'](0x0),_0x52272d=new decimal_js_1['default'](0x0),_0x376db6=_0x513977,_0x43533c=_0xb24306,_0xa8895d=_0x376db6['times'](_0x13c612)['div'](_0x1c9afc);switch(_0x39960c){case exports['TradeDirection']['AtoB']:{if(_0x13c612['gt'](_0xf45a00)&&_0xa8895d['gt'](_0x43533c)){let _0x286176=_0x43533c['div'](_0xa8895d),_0x73def7=_0x286176['pow'](_0xdce478);_0x376db6=_0x376db6['times'](_0x73def7),_0x43533c=_0x43533c['times'](_0x73def7);}else{if(_0xf45a00['gt'](_0x13c612)&&_0x43533c['gt'](_0xa8895d)){let _0xfccf8a=_0x43533c['div'](_0xa8895d),_0x4a49af=_0xfccf8a['pow'](_0x4c345b);_0x376db6=_0x376db6['times'](_0x4a49af),_0x43533c=_0x43533c['times'](_0x4a49af);}else{if(_0xa8895d['gt'](_0x43533c)){let _0x29dc76=_0x43533c['div'](_0xa8895d),_0x5f21e3=_0x29dc76['pow'](_0xdce478);_0x376db6=_0x376db6['times'](_0x5f21e3),_0x43533c=_0x43533c['times'](_0x5f21e3);}else;}}_0x376db6=_0x376db6['times'](_0x3ee274['concentrationRatio']),_0x43533c=_0x43533c['times'](_0x3ee274['concentrationRatio']);let _0x5d3a8d=new decimal_js_1['default'](Math['sqrt'](_0x376db6['toNumber']())),_0x4983d3=new decimal_js_1['default'](Math['sqrt'](_0x43533c['toNumber']())),_0x97f5b5=new decimal_js_1['default'](Math['sqrt'](_0x13c612['toNumber']()))['div'](new decimal_js_1['default'](Math['sqrt'](_0x1c9afc['toNumber']()))),_0x50b869=_0x5d3a8d['times'](_0x4983d3);_0x376db6=_0x50b869['div'](_0x97f5b5),_0x43533c=_0x50b869['times'](_0x97f5b5);let _0x57662f=_0x376db6['times'](_0x43533c),_0x2cddcc=_0x376db6['plus'](_0xd263f4),{q:_0x187345,r:_0x31c651}=checkedCeilDiv(_0x57662f,_0x2cddcc),_0x2d1c5a=_0x187345;_0x2cddcc=_0x31c651,_0x142522=_0x43533c['minus'](_0x2d1c5a);const _0x12d57b=_0x43533c['div'](_0x376db6),_0x6cae11=_0x43533c['minus'](_0x142522)['div'](_0x376db6['plus'](_0xd263f4));_0x52272d=_0x12d57b['minus'](_0x6cae11)['div'](_0x6cae11);break;}case exports['TradeDirection']['BtoA']:{if(_0x13c612['gt'](_0xf45a00)&&_0xa8895d['gt'](_0x43533c)){let _0xde88a6=_0xa8895d['div'](_0x43533c),_0x2c22bb=_0xde88a6['pow'](_0x4c345b);_0x376db6=_0x376db6['times'](_0x2c22bb),_0x43533c=_0x43533c['times'](_0x2c22bb);}else{if(_0xf45a00['gt'](_0x13c612)&&_0x43533c['gt'](_0xa8895d)){let _0x1f7440=_0xa8895d['div'](_0x43533c),_0x3581fa=_0x1f7440['pow'](_0xdce478);_0x376db6=_0x376db6['times'](_0x3581fa),_0x43533c=_0x43533c['times'](_0x3581fa);}else{if(_0xa8895d['gt'](_0x43533c));else{let _0x22a80b=_0xa8895d['div'](_0x43533c),_0x419ca3=_0x22a80b['pow'](_0xdce478);_0x376db6=_0x376db6['times'](_0x419ca3),_0x43533c=_0x43533c['times'](_0x419ca3);}}}_0x376db6=_0x376db6['times'](_0x3ee274['concentrationRatio']),_0x43533c=_0x43533c['times'](_0x3ee274['concentrationRatio']);let _0x5e919c=new decimal_js_1['default'](Math['sqrt'](_0x376db6['toNumber']())),_0x597fcc=new decimal_js_1['default'](Math['sqrt'](_0x43533c['toNumber']())),_0x369ad6=new decimal_js_1['default'](Math['sqrt'](_0x13c612['toNumber']()))['div'](new decimal_js_1['default'](Math['sqrt'](_0x1c9afc['toNumber']()))),_0x17606b=_0x5e919c['times'](_0x597fcc);_0x376db6=_0x17606b['div'](_0x369ad6),_0x43533c=_0x17606b['times'](_0x369ad6);let _0x7be47b=_0x376db6['times'](_0x43533c),_0x156299=_0x43533c['plus'](_0xd263f4),{q:_0x2834ab,r:_0x59b857}=checkedCeilDiv(_0x7be47b,_0x156299),_0x3a356d=_0x2834ab;_0x156299=_0x59b857,_0x142522=_0x376db6['minus'](_0x3a356d);const _0x166d8d=_0x43533c['div'](_0x376db6),_0x3906b6=_0x43533c['plus'](_0xd263f4)['div'](_0x376db6['minus'](_0x142522));_0x52272d=_0x3906b6['minus'](_0x166d8d)['div'](_0x166d8d);break;}}return _0x142522=new decimal_js_1['default'](Math['floor'](_0x142522['toNumber']())),{'destinationAmountSwapped':_0x142522,'poolPriceImpact':_0x52272d};}function getAbs(_0x4cceb9){return _0x4cceb9['toNumber']()<0x0?_0x4cceb9['times'](-0x1):_0x4cceb9;};function a0_0x5829(_0x5b1f39,_0x2ac628){const _0xf08bf5=a0_0xf08b();return a0_0x5829=function(_0x582965,_0x10bfa9){_0x582965=_0x582965-0xa0;let _0x171b5b=_0xf08bf5[_0x582965];return _0x171b5b;},a0_0x5829(_0x5b1f39,_0x2ac628);}function a0_0xf08b(){const _0x331772=['6821460xnbaXB','834685plOpLf','697IZStSD','8099637kMyemb','11ZPZkHL','1060VcigxO','328FJIDEQ','1483176RpEDjt','3506280xacanq','8271OAdiqX','20fDUZTB'];a0_0xf08b=function(){return _0x331772;};return a0_0xf08b();}function checkedCeilDiv(_0x288816,_0x4dfa26){let _0x5111f1=_0x4dfa26,_0x3b3acf=_0x288816['div'](_0x5111f1);if(_0x3b3acf['eq'](0x0))return{'q':new decimal_js_1['default'](0x0),'r':new decimal_js_1['default'](0x0)};let _0x13343b=_0x288816['mod'](_0x4dfa26);if(_0x13343b['gt'](0x0)){_0x3b3acf=_0x3b3acf['plus'](0x1),_0x5111f1=_0x288816['div'](_0x3b3acf);let _0x4efcd4=_0x288816['mod'](_0x3b3acf);_0x4efcd4['gt'](0x0)&&(_0x5111f1=_0x5111f1['plus'](0x1));}return{'q':_0x3b3acf,'r':_0x5111f1};}","'use strict';function a0_0x4204(_0x360d11,_0x1525ab){var _0x5c6024=a0_0x5c60();return a0_0x4204=function(_0x4204b0,_0x3c8c2d){_0x4204b0=_0x4204b0-0x1df;var _0x36e619=_0x5c6024[_0x4204b0];return _0x36e619;},a0_0x4204(_0x360d11,_0x1525ab);}function a0_0x5c60(){var _0x3522e6=['1694745jUGEri','4338000umBOti','4WuUdgy','1388090JCCzMZ','51nguveh','95098rfasWN','675828DzkhsZ','416648qcZVQI','6383456mEfFsf','14iZmbFl'];a0_0x5c60=function(){return _0x3522e6;};return a0_0x5c60();}(function(_0x122c7c,_0x3d94f4){var _0x23b585=a0_0x4204,_0x19775c=_0x122c7c();while(!![]){try{var _0x595c62=parseInt(_0x23b585(0x1e2))/0x1+-parseInt(_0x23b585(0x1e0))/0x2*(parseInt(_0x23b585(0x1df))/0x3)+-parseInt(_0x23b585(0x1e7))/0x4*(parseInt(_0x23b585(0x1e5))/0x5)+-parseInt(_0x23b585(0x1e1))/0x6*(parseInt(_0x23b585(0x1e4))/0x7)+parseInt(_0x23b585(0x1e3))/0x8+parseInt(_0x23b585(0x1e6))/0x9+parseInt(_0x23b585(0x1e8))/0xa;if(_0x595c62===_0x3d94f4)break;else _0x19775c['push'](_0x19775c['shift']());}catch(_0x418d21){_0x19775c['push'](_0x19775c['shift']());}}}(a0_0x5c60,0x70fef));Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['IDL']=void 0x0,exports['IDL']={'version':'0.1.0','name':'lifinity_amm','instructions':[{'name':'swap','accounts':[{'name':'authority','isMut':![],'isSigner':![]},{'name':'amm','isMut':![],'isSigner':![]},{'name':'userTransferAuthority','isMut':![],'isSigner':!![]},{'name':'sourceInfo','isMut':!![],'isSigner':![]},{'name':'destinationInfo','isMut':!![],'isSigner':![]},{'name':'swapSource','isMut':!![],'isSigner':![]},{'name':'swapDestination','isMut':!![],'isSigner':![]},{'name':'poolMint','isMut':!![],'isSigner':![]},{'name':'feeAccount','isMut':!![],'isSigner':![]},{'name':'tokenProgram','isMut':![],'isSigner':![]},{'name':'pythAccount','isMut':![],'isSigner':![]},{'name':'pythPcAccount','isMut':![],'isSigner':![]},{'name':'configAccount','isMut':!![],'isSigner':![]}],'args':[{'name':'amountIn','type':'u64'},{'name':'minimumAmountOut','type':'u64'}]}],'accounts':[{'name':'amm','type':{'kind':'struct','fields':[{'name':'initializerKey','type':'publicKey'},{'name':'initializerDepositTokenAccount','type':'publicKey'},{'name':'initializerReceiveTokenAccount','type':'publicKey'},{'name':'initializerAmount','type':'u64'},{'name':'takerAmount','type':'u64'},{'name':'isInitialized','type':'bool'},{'name':'bumpSeed','type':'u8'},{'name':'freezeTrade','type':'u8'},{'name':'freezeDeposit','type':'u8'},{'name':'freezeWithdraw','type':'u8'},{'name':'baseDecimals','type':'u8'},{'name':'tokenProgramId','type':'publicKey'},{'name':'tokenAAccount','type':'publicKey'},{'name':'tokenBAccount','type':'publicKey'},{'name':'poolMint','type':'publicKey'},{'name':'tokenAMint','type':'publicKey'},{'name':'tokenBMint','type':'publicKey'},{'name':'poolFeeAccount','type':'publicKey'},{'name':'pythAccount','type':'publicKey'},{'name':'pythPcAccount','type':'publicKey'},{'name':'configAccount','type':'publicKey'},{'name':'ammTemp1','type':'publicKey'},{'name':'ammTemp2','type':'publicKey'},{'name':'ammTemp3','type':'publicKey'},{'name':'fees','type':{'defined':'FeesInput'}},{'name':'curve','type':{'defined':'CurveInput'}}]}},{'name':'config','type':{'kind':'struct','fields':[{'name':'concentrationRatio','type':'u64'},{'name':'lastPrice','type':'u64'},{'name':'adjustRatio','type':'u64'},{'name':'balanceRatio','type':'u64'},{'name':'lastBalancedPrice','type':'u64'},{'name':'configDenominator','type':'u64'},{'name':'pythConfidenceLimit','type':'u64'},{'name':'pythSlotLimit','type':'u64'},{'name':'volumeX','type':'u64'},{'name':'volumeY','type':'u64'},{'name':'volumeXInY','type':'u64'},{'name':'coefficientUp','type':'u64'},{'name':'coefficientDown','type':'u64'},{'name':'oracleStatus','type':'u64'},{'name':'configTemp1','type':'u64'},{'name':'configTemp2','type':'u64'}]}}],'types':[{'name':'FeesInput','type':{'kind':'struct','fields':[{'name':'tradeFeeNumerator','type':'u64'},{'name':'tradeFeeDenominator','type':'u64'},{'name':'ownerTradeFeeNumerator','type':'u64'},{'name':'ownerTradeFeeDenominator','type':'u64'},{'name':'ownerWithdrawFeeNumerator','type':'u64'},{'name':'ownerWithdrawFeeDenominator','type':'u64'},{'name':'hostFeeNumerator','type':'u64'},{'name':'hostFeeDenominator','type':'u64'}]}},{'name':'CurveInput','type':{'kind':'struct','fields':[{'name':'curveType','type':'u8'},{'name':'curveParameters','type':'u64'}]}},{'name':'ConfigInput','type':{'kind':'struct','fields':[{'name':'concentrationRatio','type':'u64'},{'name':'lastPrice','type':'u64'},{'name':'adjustRatio','type':'u64'},{'name':'balanceRatio','type':'u64'},{'name':'lastBalancedPrice','type':'u64'},{'name':'configDenominator','type':'u64'},{'name':'pythConfidenceLimit','type':'u64'},{'name':'pythSlotLimit','type':'u64'},{'name':'volumeX','type':'u64'},{'name':'volumeY','type':'u64'},{'name':'volumeXInY','type':'u64'},{'name':'coefficientUp','type':'u64'},{'name':'coefficientDown','type':'u64'},{'name':'oracleStatus','type':'u64'},{'name':'configTemp1','type':'u64'},{'name':'configTemp2','type':'u64'}]}},{'name':'CurveFees','type':{'kind':'struct','fields':[{'name':'tradeFeeNumerator','type':'u64'},{'name':'tradeFeeDenominator','type':'u64'},{'name':'ownerTradeFeeNumerator','type':'u64'},{'name':'ownerTradeFeeDenominator','type':'u64'},{'name':'ownerWithdrawFeeNumerator','type':'u64'},{'name':'ownerWithdrawFeeDenominator','type':'u64'},{'name':'hostFeeNumerator','type':'u64'},{'name':'hostFeeDenominator','type':'u64'}]}},{'name':'CurveType','type':{'kind':'enum','variants':[{'name':'ConstantProduct'},{'name':'Stable'}]}},{'name':'TradeDirection','type':{'kind':'enum','variants':[{'name':'AtoB'},{'name':'BtoA'}]}},{'name':'RoundDirection','type':{'kind':'enum','variants':[{'name':'Floor'},{'name':'Ceiling'}]}}],'errors':[{'code':0x1770,'name':'AlreadyInUse','msg':'Swap\\x20account\\x20already\\x20in\\x20use'},{'code':0x1771,'name':'InvalidProgramAddress','msg':'Invalid\\x20program\\x20address\\x20generated\\x20from\\x20bump\\x20seed\\x20and\\x20key'},{'code':0x1772,'name':'InvalidOwner','msg':'Input\\x20account\\x20owner\\x20is\\x20not\\x20the\\x20program\\x20address'},{'code':0x1773,'name':'InvalidOutputOwner','msg':'Output\\x20pool\\x20account\\x20owner\\x20cannot\\x20be\\x20the\\x20program\\x20address'},{'code':0x1774,'name':'ExpectedMint','msg':'Deserialized\\x20account\\x20is\\x20not\\x20an\\x20SPL\\x20Token\\x20mint'},{'code':0x1775,'name':'ExpectedAccount','msg':'Deserialized\\x20account\\x20is\\x20not\\x20an\\x20SPL\\x20Token\\x20account'},{'code':0x1776,'name':'EmptySupply','msg':'Input\\x20token\\x20account\\x20empty'},{'code':0x1777,'name':'InvalidSupply','msg':'Pool\\x20token\\x20mint\\x20has\\x20a\\x20non-zero\\x20supply'},{'code':0x1778,'name':'InvalidDelegate','msg':'Token\\x20account\\x20has\\x20a\\x20delegate'},{'code':0x1779,'name':'InvalidInput','msg':'InvalidInput'},{'code':0x177a,'name':'IncorrectSwapAccount','msg':'Address\\x20of\\x20the\\x20provided\\x20swap\\x20token\\x20account\\x20is\\x20incorrect'},{'code':0x177b,'name':'IncorrectPoolMint','msg':'Address\\x20of\\x20the\\x20provided\\x20pool\\x20token\\x20mint\\x20is\\x20incorrect'},{'code':0x177c,'name':'InvalidOutput','msg':'InvalidOutput'},{'code':0x177d,'name':'CalculationFailure','msg':'General\\x20calculation\\x20failure\\x20due\\x20to\\x20overflow\\x20or\\x20underflow'},{'code':0x177e,'name':'InvalidInstruction','msg':'Invalid\\x20instruction'},{'code':0x177f,'name':'RepeatedMint','msg':'Swap\\x20input\\x20token\\x20accounts\\x20have\\x20the\\x20same\\x20mint'},{'code':0x1780,'name':'ExceededSlippage','msg':'Swap\\x20instruction\\x20exceeds\\x20desired\\x20slippage\\x20limit'},{'code':0x1781,'name':'InvalidCloseAuthority','msg':'Token\\x20account\\x20has\\x20a\\x20close\\x20authority'},{'code':0x1782,'name':'InvalidFreezeAuthority','msg':'Pool\\x20token\\x20mint\\x20has\\x20a\\x20freeze\\x20authority'},{'code':0x1783,'name':'IncorrectFeeAccount','msg':'Pool\\x20fee\\x20token\\x20account\\x20incorrect'},{'code':0x1784,'name':'ZeroTradingTokens','msg':'Given\\x20pool\\x20token\\x20amount\\x20results\\x20in\\x20zero\\x20trading\\x20tokens'},{'code':0x1785,'name':'FeeCalculationFailure','msg':'Fee\\x20calculation\\x20failed\\x20due\\x20to\\x20overflow,\\x20underflow,\\x20or\\x20unexpected\\x200'},{'code':0x1786,'name':'ConversionFailure','msg':'Conversion\\x20to\\x20u64\\x20failed\\x20with\\x20an\\x20overflow\\x20or\\x20underflow'},{'code':0x1787,'name':'InvalidFee','msg':'The\\x20provided\\x20fee\\x20does\\x20not\\x20match\\x20the\\x20program\\x20owner\\x27s\\x20constraints'},{'code':0x1788,'name':'IncorrectTokenProgramId','msg':'The\\x20provided\\x20token\\x20program\\x20does\\x20not\\x20match\\x20the\\x20token\\x20program\\x20expected\\x20by\\x20the\\x20swap'},{'code':0x1789,'name':'IncorrectOracleAccount','msg':'Address\\x20of\\x20the\\x20provided\\x20oracle\\x20account\\x20is\\x20incorrect'},{'code':0x178a,'name':'IncorrectConfigAccount','msg':'Address\\x20of\\x20the\\x20provided\\x20config\\x20account\\x20is\\x20incorrect'},{'code':0x178b,'name':'UnsupportedCurveType','msg':'The\\x20provided\\x20curve\\x20type\\x20is\\x20not\\x20supported\\x20by\\x20the\\x20program\\x20owner'},{'code':0x178c,'name':'InvalidCurve','msg':'The\\x20provided\\x20curve\\x20parameters\\x20are\\x20invalid'},{'code':0x178d,'name':'UnsupportedCurveOperation','msg':'The\\x20operation\\x20cannot\\x20be\\x20performed\\x20on\\x20the\\x20given\\x20curve'},{'code':0x178e,'name':'InvalidPythStatus','msg':'Pyth\\x20oracle\\x20status\\x20is\\x20not\\x20\\x27trading\\x27'},{'code':0x178f,'name':'InvalidPythPrice','msg':'Could\\x20not\\x20retrieve\\x20updated\\x20price\\x20feed\\x20from\\x20the\\x20Pyth\\x20oracle'},{'code':0x1790,'name':'IncorrectSigner','msg':'Address\\x20of\\x20the\\x20provided\\x20signer\\x20account\\x20is\\x20incorrect'},{'code':0x1791,'name':'ProgramIsFrozen','msg':'Program\\x20is\\x20frozen'},{'code':0x1792,'name':'OracleConfidence','msg':'Oracle\\x20confidence\\x20is\\x20too\\x20low'}]};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LIFINITY_AMM_LAYOUT = exports.getSwapTransactionWithAuthority = exports.getSwapInstruction = exports.getCurveAmount = exports.getParsedData = exports.getMultipleAccounts = exports.TradeDirection = exports.getPool = exports.getAmountOut = exports.getPoolList = exports.getProgramAddress = exports.Lifinity = void 0;\nconst lifinity_amm_1 = require(\"./lifinity_amm\");\nObject.defineProperty(exports, \"Lifinity\", { enumerable: true, get: function () { return lifinity_amm_1.Lifinity; } });\nObject.defineProperty(exports, \"getAmountOut\", { enumerable: true, get: function () { return lifinity_amm_1.getAmountOut; } });\nObject.defineProperty(exports, \"getSwapInstruction\", { enumerable: true, get: function () { return lifinity_amm_1.getSwapInstruction; } });\nObject.defineProperty(exports, \"getSwapTransactionWithAuthority\", { enumerable: true, get: function () { return lifinity_amm_1.getSwapTransactionWithAuthority; } });\nconst network_1 = require(\"./network\");\nObject.defineProperty(exports, \"getProgramAddress\", { enumerable: true, get: function () { return network_1.getProgramAddress; } });\nconst pool_1 = require(\"./pool\");\nObject.defineProperty(exports, \"getPoolList\", { enumerable: true, get: function () { return pool_1.getPoolList; } });\nObject.defineProperty(exports, \"getPool\", { enumerable: true, get: function () { return pool_1.getPool; } });\nconst utils_1 = require(\"./utils\");\nObject.defineProperty(exports, \"getMultipleAccounts\", { enumerable: true, get: function () { return utils_1.getMultipleAccounts; } });\nObject.defineProperty(exports, \"getParsedData\", { enumerable: true, get: function () { return utils_1.getParsedData; } });\nconst curve_1 = require(\"./curve\");\nObject.defineProperty(exports, \"getCurveAmount\", { enumerable: true, get: function () { return curve_1.getCurveAmount; } });\nObject.defineProperty(exports, \"TradeDirection\", { enumerable: true, get: function () { return curve_1.TradeDirection; } });\nconst layout_1 = require(\"./layout\");\nObject.defineProperty(exports, \"LIFINITY_AMM_LAYOUT\", { enumerable: true, get: function () { return layout_1.LIFINITY_AMM_LAYOUT; } });\n","'use strict';(function(_0x3e4fa2,_0x18d16c){const _0x1410f1=a0_0xad57,_0x1ace18=_0x3e4fa2();while(!![]){try{const _0x4d2035=-parseInt(_0x1410f1(0x93))/0x1*(-parseInt(_0x1410f1(0x97))/0x2)+-parseInt(_0x1410f1(0x95))/0x3+-parseInt(_0x1410f1(0x96))/0x4+-parseInt(_0x1410f1(0x94))/0x5+parseInt(_0x1410f1(0x92))/0x6+-parseInt(_0x1410f1(0x98))/0x7*(parseInt(_0x1410f1(0x90))/0x8)+parseInt(_0x1410f1(0x91))/0x9;if(_0x4d2035===_0x18d16c)break;else _0x1ace18['push'](_0x1ace18['shift']());}catch(_0x361be5){_0x1ace18['push'](_0x1ace18['shift']());}}}(a0_0x1a6c,0x6eac2));function a0_0xad57(_0x11539c,_0x5b99d6){const _0x1a6c90=a0_0x1a6c();return a0_0xad57=function(_0xad570e,_0x49f824){_0xad570e=_0xad570e-0x90;let _0x541113=_0x1a6c90[_0xad570e];return _0x541113;},a0_0xad57(_0x11539c,_0x5b99d6);}Object['defineProperty'](exports,'__esModule',{'value':!![]}),exports['CONFIG_LAYOUT']=exports['LIFINITY_AMM_LAYOUT']=void 0x0;const borsh_1=require('@project-serum/borsh'),buffer_layout_1=require('buffer-layout');exports['LIFINITY_AMM_LAYOUT']=(0x0,buffer_layout_1['struct'])([(0x0,borsh_1['u64'])('index'),(0x0,borsh_1['publicKey'])('initializerKey'),(0x0,borsh_1['publicKey'])('initializerDepositTokenAccount'),(0x0,borsh_1['publicKey'])('initializerReceiveTokenAccount'),(0x0,borsh_1['u64'])('initializerAmount'),(0x0,borsh_1['u64'])('takerAmount'),(0x0,borsh_1['u8'])('initialized'),(0x0,borsh_1['u8'])('bumpSeed'),(0x0,borsh_1['u8'])('freezeTrade'),(0x0,borsh_1['u8'])('freezeDeposit'),(0x0,borsh_1['u8'])('freezeWithdraw'),(0x0,borsh_1['u8'])('baseDecimals'),(0x0,borsh_1['publicKey'])('tokenProgramId'),(0x0,borsh_1['publicKey'])('tokenAAccount'),(0x0,borsh_1['publicKey'])('tokenBAccount'),(0x0,borsh_1['publicKey'])('poolMint'),(0x0,borsh_1['publicKey'])('tokenAMint'),(0x0,borsh_1['publicKey'])('tokenBMint'),(0x0,borsh_1['publicKey'])('poolFeeAccount'),(0x0,borsh_1['publicKey'])('pythAccount'),(0x0,borsh_1['publicKey'])('pythPcAccount'),(0x0,borsh_1['publicKey'])('configAccount'),(0x0,borsh_1['publicKey'])('ammTemp1'),(0x0,borsh_1['publicKey'])('ammTemp2'),(0x0,borsh_1['publicKey'])('ammTemp3'),(0x0,borsh_1['u64'])('tradeFeeNumerator'),(0x0,borsh_1['u64'])('tradeFeeDenominator'),(0x0,borsh_1['u64'])('ownerTradeFeeNumerator'),(0x0,borsh_1['u64'])('ownerTradeFeeDenominator'),(0x0,borsh_1['u64'])('ownerWithdrawFeeNumerator'),(0x0,borsh_1['u64'])('ownerWithdrawFeeDenominator'),(0x0,borsh_1['u64'])('hostFeeNumerator'),(0x0,borsh_1['u64'])('hostFeeDenominator'),(0x0,borsh_1['u8'])('curveType'),(0x0,borsh_1['u64'])('curveParameters')]),exports['CONFIG_LAYOUT']=(0x0,buffer_layout_1['struct'])([(0x0,borsh_1['u64'])('index'),(0x0,borsh_1['u64'])('concentrationRatio'),(0x0,borsh_1['u64'])('lastPrice'),(0x0,borsh_1['u64'])('adjustRatio'),(0x0,borsh_1['u64'])('balanceRatio'),(0x0,borsh_1['u64'])('lastBalancedPrice'),(0x0,borsh_1['u64'])('configDenominator'),(0x0,borsh_1['u64'])('pythConfidenceLimit'),(0x0,borsh_1['u64'])('pythSlotLimit'),(0x0,borsh_1['u64'])('volumeX'),(0x0,borsh_1['u64'])('volumeY'),(0x0,borsh_1['u64'])('volumeXinY'),(0x0,borsh_1['u64'])('coefficientUp'),(0x0,borsh_1['u64'])('coefficientDown'),(0x0,borsh_1['u64'])('oracleStatus'),(0x0,borsh_1['u64'])('configTemp1'),(0x0,borsh_1['u64'])('configTemp2')]);function a0_0x1a6c(){const _0x4d1984=['16704ezZTzx','16992648ydycGs','1655412BiRZIo','2QLVGnI','3675995Yenkkb','812682EEFDnU','1865020UROZXN','225224xtDHNE','1554cXFVVx'];a0_0x1a6c=function(){return _0x4d1984;};return a0_0x1a6c();}","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getSwapTransactionWithAuthority = exports.getSwapInstruction = exports.getAmountOut = exports.Lifinity = void 0;\n// Copyright © 2022 LIFINITY FOUNDATION All Rights Reserved.\nconst anchor_1 = require(\"@project-serum/anchor\");\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst decimal_js_1 = __importDefault(require(\"decimal.js\"));\nconst lifinity_amm_1 = require(\"./idl/lifinity_amm\");\nconst network_1 = require(\"./network\");\nconst pool_1 = require(\"./pool\");\nconst transaction_1 = require(\"./transaction\");\nconst utils_1 = require(\"./utils\");\nconst curve_1 = require(\"./curve\");\nclass Lifinity {\n constructor(connection, wallet) {\n this.stateAddress = web3_js_1.PublicKey.default;\n this.programAuthority = web3_js_1.PublicKey.default;\n this.connection = connection;\n this.wallet = wallet;\n const programAddress = new web3_js_1.PublicKey((0, network_1.getProgramAddress)());\n const provider = new anchor_1.Provider(connection, wallet, anchor_1.Provider.defaultOptions());\n this.program = new anchor_1.Program(lifinity_amm_1.IDL, programAddress, provider);\n }\n static build(connection, wallet) {\n return __awaiter(this, void 0, void 0, function* () {\n const instance = new Lifinity(connection, wallet);\n return instance;\n });\n }\n swap(amountIn, minimumAmountOut, fromMint, toMint) {\n return __awaiter(this, void 0, void 0, function* () {\n const poolInfo = (0, pool_1.getPool)(fromMint.toString(), toMint.toString());\n try {\n const tx = yield (0, transaction_1.sendSwap)(this.program, poolInfo, fromMint, toMint, amountIn, minimumAmountOut);\n return tx;\n }\n catch (error) {\n console.error(error);\n return \"\";\n }\n });\n }\n}\nexports.Lifinity = Lifinity;\n;\nfunction getAmountOut(connection, amountIn, fromMint, toMint, slippage) {\n return __awaiter(this, void 0, void 0, function* () {\n const poolInfo = (0, pool_1.getPool)(fromMint.toString(), toMint.toString());\n if (poolInfo) {\n let amount = new decimal_js_1.default(amountIn);\n let tradeDirection;\n let inDecimal;\n let outDecimal;\n if (poolInfo.poolCoinMint === fromMint.toString()) {\n amount = amount.times(new decimal_js_1.default(10).pow(poolInfo.poolCoinDecimal));\n inDecimal = poolInfo.poolCoinDecimal;\n outDecimal = poolInfo.poolPcDecimal;\n tradeDirection = curve_1.TradeDirection.AtoB;\n }\n else {\n amount = amount.times(new decimal_js_1.default(10).pow(poolInfo.poolPcDecimal));\n inDecimal = poolInfo.poolPcDecimal;\n outDecimal = poolInfo.poolCoinDecimal;\n tradeDirection = curve_1.TradeDirection.BtoA;\n }\n const publicKeys = [\n new web3_js_1.PublicKey(poolInfo.amm),\n new web3_js_1.PublicKey(poolInfo.poolCoinTokenAccount),\n new web3_js_1.PublicKey(poolInfo.poolPcTokenAccount),\n new web3_js_1.PublicKey(poolInfo.configAccount),\n new web3_js_1.PublicKey(poolInfo.pythAccount),\n ];\n if (poolInfo.pythAccount !== poolInfo.pythPcAccount) {\n publicKeys.push(new web3_js_1.PublicKey(poolInfo.pythPcAccount));\n }\n try {\n const multipleInfo = yield (0, utils_1.getMultipleAccounts)(connection, publicKeys);\n const { amm, fees, coinBalance, pcBalance, config, pyth, pythPc } = (0, utils_1.getParsedData)(multipleInfo, poolInfo);\n const slot = yield connection.getSlot();\n const { amountSwapped, priceImpact, fee, feePercent } = (0, curve_1.getCurveAmount)(amount, slot, amm, fees, coinBalance, pcBalance, config, pyth, pythPc, tradeDirection);\n const slippagePercent = new decimal_js_1.default(slippage).div(100);\n const amountOutWithSlippage = new decimal_js_1.default(Math.floor(amountSwapped.times(new decimal_js_1.default(1).minus(slippagePercent)).toNumber()));\n const amountOutWithSlippageTokenAmount = amountOutWithSlippage.div(new decimal_js_1.default(10).pow(outDecimal)).toNumber();\n const amountOutTokenAmount = amountSwapped.div(new decimal_js_1.default(10).pow(outDecimal)).toNumber();\n const feeTokenAmount = fee.div(new decimal_js_1.default(10).pow(inDecimal)).toNumber();\n return {\n amountIn,\n amountOut: amountOutTokenAmount,\n amountOutWithSlippage: amountOutWithSlippageTokenAmount,\n priceImpact: priceImpact.toNumber(),\n fee: feeTokenAmount,\n feePercent: feePercent.toNumber()\n };\n }\n catch (error) {\n console.error(error);\n return {\n amountIn: 0,\n amountOut: 0,\n amountOutWithSlippage: 0,\n priceImpact: 0,\n fee: 0,\n feePercent: 0\n };\n }\n }\n });\n}\nexports.getAmountOut = getAmountOut;\n;\nfunction getSwapInstruction(connection, ownerAccount, amountIn, minimumOut, fromMint, toMint, fromUserAccount, toTokenAccount, approve = true) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const poolInfo = (0, pool_1.getPool)(fromMint.toString(), toMint.toString());\n let amount = new decimal_js_1.default(amountIn);\n let amountOut = new decimal_js_1.default(minimumOut);\n let fromPoolAccount;\n let toPoolAccount;\n if (fromMint.toString() === poolInfo.poolCoinMint) {\n amount = amount.times(new decimal_js_1.default(10).pow(poolInfo.poolCoinDecimal));\n amountOut = amountOut.times(new decimal_js_1.default(10).pow(poolInfo.poolPcDecimal));\n fromPoolAccount = new web3_js_1.PublicKey(poolInfo.poolCoinTokenAccount);\n toPoolAccount = new web3_js_1.PublicKey(poolInfo.poolPcTokenAccount);\n }\n else {\n amount = amount.times(new decimal_js_1.default(10).pow(poolInfo.poolPcDecimal));\n amountOut = amountOut.times(new decimal_js_1.default(10).pow(poolInfo.poolCoinDecimal));\n fromPoolAccount = new web3_js_1.PublicKey(poolInfo.poolPcTokenAccount);\n toPoolAccount = new web3_js_1.PublicKey(poolInfo.poolCoinTokenAccount);\n }\n // Dummy Wallet\n // @ts-ignore \n let wallet = web3_js_1.Keypair.generate();\n const programAddress = new web3_js_1.PublicKey((0, network_1.getProgramAddress)());\n const provider = new anchor_1.Provider(connection, wallet, anchor_1.Provider.defaultOptions());\n const program = new anchor_1.Program(lifinity_amm_1.IDL, programAddress, provider);\n const { approveInstruction, swapInstruction, signers } = yield (0, transaction_1.getInstruction)(program, poolInfo, amount, amountOut, ownerAccount, fromUserAccount, toTokenAccount, fromPoolAccount, toPoolAccount, approve);\n return { approveInstruction, swapInstruction, signers };\n }\n catch (error) {\n console.warn(error);\n const approveInstruction = null;\n const swapInstruction = null;\n const signers = [];\n return { approveInstruction, swapInstruction, signers };\n }\n });\n}\nexports.getSwapInstruction = getSwapInstruction;\nfunction getSwapTransactionWithAuthority(connection, ownerAccount, amountIn, minimumAmountOut, fromMint, toMint, fromUserAccount, toTokenAccount, authority) {\n const poolInfo = (0, pool_1.getPool)(fromMint.toString(), toMint.toString());\n // Dummy Wallet\n // @ts-ignore \n let wallet = web3_js_1.Keypair.generate();\n const programAddress = new web3_js_1.PublicKey((0, network_1.getProgramAddress)());\n const provider = new anchor_1.Provider(connection, wallet, anchor_1.Provider.defaultOptions());\n const program = new anchor_1.Program(lifinity_amm_1.IDL, programAddress, provider);\n return (0, transaction_1.makeSwapTransactionWithAuthority)(program, amountIn, minimumAmountOut, ownerAccount, fromUserAccount, toTokenAccount, fromMint, poolInfo, authority);\n}\nexports.getSwapTransactionWithAuthority = getSwapTransactionWithAuthority;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getProgramAddress = void 0;\n// Copyright © 2022 LIFINITY FOUNDATION All Rights Reserved.\nconst getProgramAddress = () => {\n return 'EewxydAPCCVuNEyrVN68PuSYdQ7wKn27V9Gjeoi8dy3S';\n};\nexports.getProgramAddress = getProgramAddress;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PoolList = exports.getPool = exports.getPoolList = void 0;\n// Copyright © 2022 LIFINITY FOUNDATION All Rights Reserved.\nfunction getPoolList() {\n return exports.PoolList;\n}\nexports.getPoolList = getPoolList;\n;\nfunction getPool(fromMint, toMint) {\n const pools = Object.values(exports.PoolList).filter(pool => ((pool.poolCoinMint === fromMint && pool.poolPcMint === toMint) || (pool.poolCoinMint === toMint && pool.poolPcMint === fromMint)));\n if (pools.length === 1) {\n return pools[0];\n }\n else {\n return null;\n }\n}\nexports.getPool = getPool;\nexports.PoolList = {\n \"SOL-USDC\": {\n \"amm\": \"amgK1WE8Cvae4mVdj4AhXSsknWsjaGgo1coYicasBnM\",\n \"poolMint\": \"3WzrkFYq4SayCrhBw8BgsPiTVKTDjyV6wRqP7HL9Eyyw\",\n \"feeAccount\": \"AD5DFr1AXMB9h6fw5KFtkEfwf7kYSAiaSueeu4NGrLKY\",\n \"configAccount\": \"2iT9h99mhDqetoZGNj7KKrqBnoDmFvAytGrnFYuR7MwN\",\n \"pythAccount\": \"H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG\",\n \"pythPcAccount\": \"H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG\",\n \"poolCoinTokenAccount\": \"2uySTNgvGT2kwqpfgLiSgeBLR3wQyye1i1A2iQWoPiFr\",\n \"poolCoinMint\": \"So11111111111111111111111111111111111111112\",\n \"poolPcTokenAccount\": \"32SjGNjesiCZgmZb4YxAGgjnym6jAvTWbqihR4CvvXkZ\",\n \"poolPcMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n \"poolCoinDecimal\": 9,\n \"poolPcDecimal\": 6,\n \"poolMintDecimal\": 9,\n \"pythBaseDecimal\": 11,\n },\n \"SOL-USDT\": {\n \"amm\": \"2x8Bmv9wj2a4LxADBWKiLyGRgAosr8yJXuZyvS8adirK\",\n \"poolMint\": \"BRchiwrv9yCr4jAi6xF4epQdtNtmJH93rrerpHpMhK1Z\",\n \"feeAccount\": \"GFj8cNTP4mzWG7ywyJ35Ls2V8CbqDk3p4xNT1pAawoCh\",\n \"configAccount\": \"Hor7j9oYfNH6EJgmnXQRiQSahduR5p4bfKyCZaQUqNKd\",\n \"pythAccount\": \"H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG\",\n \"pythPcAccount\": \"3vxLXJqLqF3JG5TCbYycbKWRBbCJQLxQmBGCkyqEEefL\",\n \"poolCoinTokenAccount\": \"5pH2DBMZg7y5bN4J3oLKRETGXyVYPJpeaCH6AkdAcxqp\",\n \"poolCoinMint\": \"So11111111111111111111111111111111111111112\",\n \"poolPcTokenAccount\": \"7Cct2MJUwruQef5vQrP2bxYCNyVajJ3SiC1GYUmwmjUm\",\n \"poolPcMint\": \"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\",\n \"poolCoinDecimal\": 9,\n \"poolPcDecimal\": 6,\n \"poolMintDecimal\": 9,\n \"pythBaseDecimal\": 11,\n },\n \"SOL-UST\": {\n \"amm\": \"65E23qmpbcq3EynyxzSAk5PmAXv4NYmRb2jJiYDDRCaB\",\n \"poolMint\": \"4aUVFHRR3c3Zyzi4yeT4U38x1hsPWE8VstKWAXkpgE7g\",\n \"feeAccount\": \"Dyr7rzzrZbyHwHmx5YC4xcfzRJpuxDPmWu8BmwNzkAL4\",\n \"configAccount\": \"5CmmN7dYxsmP88dE1eATYJc1SjKQXhZFs1FeDSdq5s2C\",\n \"pythAccount\": \"H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG\",\n \"pythPcAccount\": \"H8DvrfSaRfUyP1Ytse1exGf7VSinLWtmKNNaBhA4as9P\",\n \"poolCoinTokenAccount\": \"AgiA6x7T6vR2J8ZPeBGizWruwhP6HBbpoW3Hg5jh2f2b\",\n \"poolCoinMint\": \"So11111111111111111111111111111111111111112\",\n \"poolPcTokenAccount\": \"3eM8HhW5XQeEmshqSvNSmrPmYuBKZpPXVVfzvqgYvJAv\",\n \"poolPcMint\": \"9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i\",\n \"poolCoinDecimal\": 9,\n \"poolPcDecimal\": 6,\n \"poolMintDecimal\": 9,\n \"pythBaseDecimal\": 11,\n },\n \"BTC-USDC\": {\n \"amm\": \"HeH3s7B3a6nynim1rBGS6TRaYECgSNjt7Kp65mhW9P4k\",\n \"poolMint\": \"BzuTSoWFHrnRQvn4sr5ErPQyMaRB9g2rsbKCruGtcvMa\",\n \"feeAccount\": \"5HpNeHBBpg6x7fzTgbvP9UukQmDmvxbggwqo951BYkba\",\n \"configAccount\": \"HuLmRVTfYjNYYGBpPtJEk7JKkosbbPF4zzBHnf3TfyCn\",\n \"pythAccount\": \"GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU\",\n \"pythPcAccount\": \"GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU\",\n \"poolCoinTokenAccount\": \"FAFShq3gZYXWtk5EkeKPKcwSkz2rjfMDuD1i7KiYwjVM\",\n \"poolCoinMint\": \"9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E\",\n \"poolPcTokenAccount\": \"3ReY1xscSAEV9Qg1NshkU4KRWQs33nu5JMg8AnoU7duG\",\n \"poolPcMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n \"poolCoinDecimal\": 6,\n \"poolPcDecimal\": 6,\n \"poolMintDecimal\": 9,\n \"pythBaseDecimal\": 8,\n },\n \"ETH-USDC\": {\n \"amm\": \"E32Z6DYwJELMTrVJVchN8PWbyhSoC3bRorMb7Cw2R9Xz\",\n \"poolMint\": \"8FxRyaE8X6ENLmNbaBvgS6vMsN1GJ8J7CmKy8K8uN6wM\",\n \"feeAccount\": \"5yXQ399ti5rKMcRMAZvFUqAgKHUP55bvhoYWd9bVrnu9\",\n \"configAccount\": \"5JXrQpWAPNrvVN1R6Mz9MhA1EYUB948kceZjCxRzQzf5\",\n \"pythAccount\": \"JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB\",\n \"pythPcAccount\": \"JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB\",\n \"poolCoinTokenAccount\": \"BRFwAToCofwzP29jVGzb6VZ4AGpw867AE5VsXfMsmEGk\",\n \"poolCoinMint\": \"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs\",\n \"poolPcTokenAccount\": \"FDCjDSbFCVRVBsWkJWfgZ9x3Dizm1MJjtzYw3R2fxXRv\",\n \"poolPcMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n \"poolCoinDecimal\": 8,\n \"poolPcDecimal\": 6,\n \"poolMintDecimal\": 9,\n \"pythBaseDecimal\": 10,\n },\n \"RAY-USDC\": {\n \"amm\": \"FcxHANr1dguexPZ2PoPGBajgiednXFMYHGGx4YMgedkM\",\n \"poolMint\": \"HUpvKUafPCMwhua6QtHXk1V8D6LZYyQmUKYPFZgRiiiX\",\n \"feeAccount\": \"DyR91PiiRopbdcizbjdXejodjxEeVSs4uCkyhL7wCvxw\",\n \"configAccount\": \"2EXv6K3cYDMXXKFfzGjqnjkbngUymnVwBoC4kwrCKwFy\",\n \"pythAccount\": \"AnLf8tVYCM816gmBjiy8n53eXKKEDydT5piYjjQDPgTB\",\n \"pythPcAccount\": \"AnLf8tVYCM816gmBjiy8n53eXKKEDydT5piYjjQDPgTB\",\n \"poolCoinTokenAccount\": \"BhG9r4CkTBRtpLtxA8Hd72vCkikqyVhiq8pFunZNERV8\",\n \"poolCoinMint\": \"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\",\n \"poolPcTokenAccount\": \"8HAVXU7bdS2SEkkrqFBdWPFxFTrWxtu4GTjP46BDzdTc\",\n \"poolPcMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n \"poolCoinDecimal\": 6,\n \"poolPcDecimal\": 6,\n \"poolMintDecimal\": 6,\n \"pythBaseDecimal\": 8,\n },\n \"SRM-USDC\": {\n \"amm\": \"7RM8pzbWmGEYJLFuyS5uDyrkd4phcazHppn1C7Qim5nT\",\n \"poolMint\": \"DKxkNu5PYoBEWiEZzD9hPsbga145AUZFfRCsieJQbGCP\",\n \"feeAccount\": \"7xGiGPPFTiroce8ivKeLgH74WvMbinLqHUTMWwdsSXpp\",\n \"configAccount\": \"CuPQhoTH29d5tP9TE2KQMrXqhrMD9ygNhaWDke1fuU7d\",\n \"pythAccount\": \"3NBReDRTLKMQEKiLD5tGcx4kXbTf88b7f2xLS9UuGjym\",\n \"pythPcAccount\": \"3NBReDRTLKMQEKiLD5tGcx4kXbTf88b7f2xLS9UuGjym\",\n \"poolCoinTokenAccount\": \"2qAG2xw2sroQZfRUu5RhvneFm35p9NEtcpJizoFYMn2w\",\n \"poolCoinMint\": \"SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt\",\n \"poolPcTokenAccount\": \"DTmnsxurn7cFSqPMERogJDMKR5NbFjhrJTtFPJbgkW7e\",\n \"poolPcMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n \"poolCoinDecimal\": 6,\n \"poolPcDecimal\": 6,\n \"poolMintDecimal\": 6,\n \"pythBaseDecimal\": 8,\n },\n \"UXD-USDC\": {\n \"amm\": \"5BJUhcBnysAmCpaU6pABof7FUqxx7ZnCZXbctpP48o3C\",\n \"poolMint\": \"DM2Grhnear76DwNiRUSfeiFMt6jSj2op9GWinQDc7Yqh\",\n \"feeAccount\": \"9pKxj6GTTdJ2biQ6uTyv7CTmVmnjz6cXGCz7rXg7Nm2N\",\n \"configAccount\": \"86MM38X9P5mxzRHFVX8ahtB9dCFKSk8AFhb33f5Zz8VW\",\n \"pythAccount\": \"3vxLXJqLqF3JG5TCbYycbKWRBbCJQLxQmBGCkyqEEefL\",\n \"pythPcAccount\": \"3vxLXJqLqF3JG5TCbYycbKWRBbCJQLxQmBGCkyqEEefL\",\n \"poolCoinTokenAccount\": \"5BUkh9e3JF9yUvSw6P3HHqkdMuujRG942hYNSkAEghFs\",\n \"poolCoinMint\": \"7kbnvuGBxxj8AG9qp8Scn56muWGaRaFqxg1FsRp3PaFT\",\n \"poolPcTokenAccount\": \"BbwCGgAHEUfu7PUEz8hR877aK2snseqorfLbvtcVbjhj\",\n \"poolPcMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n \"poolCoinDecimal\": 6,\n \"poolPcDecimal\": 6,\n \"poolMintDecimal\": 6,\n \"pythBaseDecimal\": 8,\n },\n \"LFNTY-USDC\": {\n \"amm\": \"5m1fnYcDdF1TMRVEBdGuSPXt5Sw8ueb9LTopuNL8SJYc\",\n \"poolMint\": \"AGytAQTdMJ1jYyDFwgqRUJfzuVUfFm4Kjh4ZnraPbTRv\",\n \"feeAccount\": \"7Pa7ssUY264ircqLGXARFvVzENLxGwuXL7ptGJkNinzo\",\n \"configAccount\": \"BhKTRa1uhYuSAMsY2SwAGuj5BnxpLPaPpJwArKxZvjYK\",\n \"pythAccount\": \"GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU\",\n \"pythPcAccount\": \"GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU\",\n \"poolCoinTokenAccount\": \"3T9zHCguVtKfgzaUvdBne4V8LReeiAMAzmRbWwt69gwJ\",\n \"poolCoinMint\": \"LFNTYraetVioAPnGJht4yNg2aUZFXR776cMeN9VMjXp\",\n \"poolPcTokenAccount\": \"F3fuSs91bGysoZFgNDbGrPonEtCBaGRDMpHGMwfgxzsP\",\n \"poolPcMint\": \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n \"poolCoinDecimal\": 6,\n \"poolPcDecimal\": 6,\n \"poolMintDecimal\": 6,\n \"pythBaseDecimal\": 8,\n },\n};\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.WSOL = void 0;\nexports.WSOL = {\n symbol: 'WSOL',\n mintAddress: 'So11111111111111111111111111111111111111112',\n decimals: 9,\n};\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.makeSwapInstructionWithAuthority = exports.makeSwapTransactionWithAuthority = exports.getInstruction = exports.sendSwap = void 0;\n// Copyright © 2022 LIFINITY FOUNDATION All Rights Reserved.\nconst anchor_1 = require(\"@project-serum/anchor\");\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst spl_token_1 = require(\"@solana/spl-token\");\nconst spl_token_2 = require(\"@solana/spl-token\");\nconst token_instructions_1 = require(\"@project-serum/serum/lib/token-instructions\");\nconst tokens_1 = require(\"./tokens\");\nconst utils_1 = require(\"./utils\");\nfunction sendSwap(program, pool, fromTokenMint, toTokenMint, amountIn, minimumAmountOut) {\n return __awaiter(this, void 0, void 0, function* () {\n const { transaction, signers } = yield makeSwapAllInstructions(program, fromTokenMint, toTokenMint, pool, amountIn, minimumAmountOut);\n return yield program.provider.send(transaction, signers);\n });\n}\nexports.sendSwap = sendSwap;\nfunction getInstruction(program, pool, amountIn, minimumOut, ownerAccount, fromUserAccount, toTokenAccount, fromPoolAccount, toPoolAccount, approve = true) {\n return __awaiter(this, void 0, void 0, function* () {\n let approveInstruction = null;\n let signers = [];\n let swapAmountIn = new anchor_1.BN(amountIn.toNumber());\n let swapMinimumAmountOut = new anchor_1.BN(minimumOut.toNumber());\n let userAuthority = null;\n if (approve) {\n userAuthority = web3_js_1.Keypair.generate();\n approveInstruction = yield makeApproveInstruction(ownerAccount, fromUserAccount, userAuthority.publicKey, swapAmountIn);\n signers.push(userAuthority);\n }\n let swapInstruction = yield makeSwapInstruction(program, userAuthority ? userAuthority.publicKey : ownerAccount, fromUserAccount, toTokenAccount, fromPoolAccount, toPoolAccount, swapAmountIn, swapMinimumAmountOut, pool);\n return { approveInstruction, swapInstruction, signers };\n });\n}\nexports.getInstruction = getInstruction;\nfunction makeSwapAllInstructions(program, fromTokenMint, toTokenMint, pool, amountIn, minimumAmountOut) {\n return __awaiter(this, void 0, void 0, function* () {\n let transaction = new web3_js_1.Transaction();\n let signers = [];\n let amountInBN;\n let minimumAmountOutBN;\n let fromPoolAccount;\n let toPoolAccount;\n let base = 10;\n let coinDecimals = Math.pow(base, pool.poolCoinDecimal);\n let pcDecimals = Math.pow(base, pool.poolPcDecimal);\n if (fromTokenMint.toString() === pool.poolCoinMint) {\n amountInBN = new anchor_1.BN(amountIn * coinDecimals);\n minimumAmountOutBN = new anchor_1.BN(minimumAmountOut * pcDecimals);\n fromPoolAccount = new web3_js_1.PublicKey(pool.poolCoinTokenAccount);\n toPoolAccount = new web3_js_1.PublicKey(pool.poolPcTokenAccount);\n }\n else {\n amountInBN = new anchor_1.BN(amountIn * pcDecimals);\n minimumAmountOutBN = new anchor_1.BN(minimumAmountOut * coinDecimals);\n fromPoolAccount = new web3_js_1.PublicKey(pool.poolPcTokenAccount);\n toPoolAccount = new web3_js_1.PublicKey(pool.poolCoinTokenAccount);\n }\n let fromUserAccount = null;\n let toTokenAccount = null;\n if (fromTokenMint.toString() === tokens_1.WSOL.mintAddress) {\n fromUserAccount = yield (0, utils_1.createWSOLAccountIfNotExist)(program, fromUserAccount, amountInBN.toNumber(), transaction, signers);\n }\n else {\n fromUserAccount = yield (0, utils_1.findAssociatedTokenAddress)(program.provider.wallet.publicKey, fromTokenMint);\n }\n if (toTokenMint.toString() === tokens_1.WSOL.mintAddress) {\n toTokenAccount = yield (0, utils_1.createWSOLAccountIfNotExist)(program, toTokenAccount, 0, transaction, signers);\n }\n else {\n toTokenAccount = yield (0, utils_1.createAssociatedTokenAccountIfNotExist)(program, toTokenMint, transaction);\n }\n yield makeLifinityTransaction(program, transaction, signers, fromUserAccount, toTokenAccount, fromPoolAccount, toPoolAccount, amountInBN, minimumAmountOutBN, pool, true);\n if (toTokenMint.toString() === tokens_1.WSOL.mintAddress) {\n transaction.add((0, token_instructions_1.closeAccount)({\n source: toTokenAccount,\n destination: program.provider.wallet.publicKey,\n owner: program.provider.wallet.publicKey\n }));\n }\n return { transaction, signers };\n });\n}\nfunction makeLifinityTransaction(program, transaction, signers, fromUserAccount, toTokenAccount, fromPoolAccount, toPoolAccount, amountIn, minimumOut, pool, approve = true) {\n return __awaiter(this, void 0, void 0, function* () {\n let userTransferAuthority;\n if (approve) {\n userTransferAuthority = web3_js_1.Keypair.generate();\n transaction.add(yield makeApproveInstruction(program.provider.wallet.publicKey, fromUserAccount, userTransferAuthority.publicKey, amountIn));\n signers.push(userTransferAuthority);\n }\n else {\n userTransferAuthority = program.provider.wallet;\n }\n transaction.add(yield makeSwapInstruction(program, userTransferAuthority.publicKey, fromUserAccount, toTokenAccount, fromPoolAccount, toPoolAccount, amountIn, minimumOut, pool));\n });\n}\nfunction makeApproveInstruction(ownerAccount, fromUserAccount, userTransferAuthority, amountIn) {\n return __awaiter(this, void 0, void 0, function* () {\n return (spl_token_1.Token.createApproveInstruction(spl_token_2.TOKEN_PROGRAM_ID, fromUserAccount, userTransferAuthority, ownerAccount, [], amountIn.toNumber()));\n });\n}\nfunction makeSwapInstruction(program, userTransferAuthority, fromUserAccount, toTokenAccount, fromPoolAccount, toPoolAccount, amountIn, minimumOut, pool) {\n return __awaiter(this, void 0, void 0, function* () {\n let { programAuthority } = yield (0, utils_1.getProgramAuthority)(program.programId, new web3_js_1.PublicKey(pool.amm));\n return (program.instruction.swap(amountIn, minimumOut, {\n accounts: {\n authority: programAuthority,\n amm: new web3_js_1.PublicKey(pool.amm),\n userTransferAuthority: userTransferAuthority,\n sourceInfo: fromUserAccount,\n destinationInfo: toTokenAccount,\n swapSource: fromPoolAccount,\n swapDestination: toPoolAccount,\n poolMint: new web3_js_1.PublicKey(pool.poolMint),\n feeAccount: new web3_js_1.PublicKey(pool.feeAccount),\n tokenProgram: spl_token_2.TOKEN_PROGRAM_ID,\n pythPcAccount: new web3_js_1.PublicKey(pool.pythPcAccount),\n pythAccount: new web3_js_1.PublicKey(pool.pythAccount),\n configAccount: new web3_js_1.PublicKey(pool.configAccount),\n }\n }));\n });\n}\nfunction makeSwapTransactionWithAuthority(program, amountIn, minimumAmountOut, ownerAccount, fromUserAccount, toTokenAccount, fromTokenMint, pool, authority) {\n let amountInBN;\n let minimumAmountOutBN;\n let fromPoolAccount;\n let toPoolAccount;\n let base = 10;\n let coinDecimals = Math.pow(base, pool.poolCoinDecimal);\n let pcDecimals = Math.pow(base, pool.poolPcDecimal);\n if (fromTokenMint.toString() === pool.poolCoinMint) {\n amountInBN = new anchor_1.BN(amountIn * coinDecimals);\n minimumAmountOutBN = new anchor_1.BN(minimumAmountOut * pcDecimals);\n fromPoolAccount = new web3_js_1.PublicKey(pool.poolCoinTokenAccount);\n toPoolAccount = new web3_js_1.PublicKey(pool.poolPcTokenAccount);\n }\n else {\n amountInBN = new anchor_1.BN(amountIn * pcDecimals);\n minimumAmountOutBN = new anchor_1.BN(minimumAmountOut * coinDecimals);\n fromPoolAccount = new web3_js_1.PublicKey(pool.poolPcTokenAccount);\n toPoolAccount = new web3_js_1.PublicKey(pool.poolCoinTokenAccount);\n }\n let userTransferAuthority = ownerAccount;\n return makeSwapInstructionWithAuthority(program, userTransferAuthority, fromUserAccount, toTokenAccount, fromPoolAccount, toPoolAccount, amountInBN, minimumAmountOutBN, pool, authority);\n}\nexports.makeSwapTransactionWithAuthority = makeSwapTransactionWithAuthority;\nfunction makeSwapInstructionWithAuthority(program, userTransferAuthority, fromUserAccount, toTokenAccount, fromPoolAccount, toPoolAccount, amountIn, minimumOut, pool, authority) {\n return (program.instruction.swap(amountIn, minimumOut, {\n accounts: {\n authority,\n amm: new web3_js_1.PublicKey(pool.amm),\n userTransferAuthority: userTransferAuthority,\n sourceInfo: fromUserAccount,\n destinationInfo: toTokenAccount,\n swapSource: fromPoolAccount,\n swapDestination: toPoolAccount,\n poolMint: new web3_js_1.PublicKey(pool.poolMint),\n feeAccount: new web3_js_1.PublicKey(pool.feeAccount),\n tokenProgram: spl_token_2.TOKEN_PROGRAM_ID,\n pythPcAccount: new web3_js_1.PublicKey(pool.pythPcAccount),\n pythAccount: new web3_js_1.PublicKey(pool.pythAccount),\n configAccount: new web3_js_1.PublicKey(pool.configAccount),\n }\n }));\n}\nexports.makeSwapInstructionWithAuthority = makeSwapInstructionWithAuthority;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getTokenAccountBalance = exports.getParsedData = exports.getMultipleAccounts = exports.sleep = exports.getProgramAuthority = exports.findProgramAddress = exports.findAssociatedTokenAddress = exports.createAssociatedTokenAccountIfNotExist = exports.createWSOLAccountIfNotExist = void 0;\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst spl_token_1 = require(\"@solana/spl-token\");\nconst token_instructions_1 = require(\"@project-serum/serum/lib/token-instructions\");\nconst spl_token_2 = require(\"@solana/spl-token\");\nconst client_1 = require(\"@pythnetwork/client\");\nconst decimal_js_1 = __importDefault(require(\"decimal.js\"));\nconst tokens_1 = require(\"./tokens\");\nconst layout_1 = require(\"./layout\");\nconst ASSOCIATED_TOKEN_PROGRAM_ID = new web3_js_1.PublicKey(\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\");\nfunction createWSOLAccountIfNotExist(program, account, amountIn, transaction, signer) {\n return __awaiter(this, void 0, void 0, function* () {\n let publicKey;\n if (account) {\n publicKey = account;\n }\n else {\n const owner = program.provider.wallet.publicKey;\n const newAccount = web3_js_1.Keypair.generate();\n publicKey = newAccount.publicKey;\n let lamports = amountIn + (yield program.provider.connection.getMinimumBalanceForRentExemption(spl_token_2.AccountLayout.span));\n transaction.add(web3_js_1.SystemProgram.createAccount({\n fromPubkey: owner,\n newAccountPubkey: publicKey,\n lamports: lamports,\n space: spl_token_2.AccountLayout.span,\n programId: spl_token_2.TOKEN_PROGRAM_ID\n }));\n transaction.add((0, token_instructions_1.initializeAccount)({\n account: publicKey,\n mint: new web3_js_1.PublicKey(tokens_1.WSOL.mintAddress),\n owner\n }));\n signer.push(newAccount);\n }\n return publicKey;\n });\n}\nexports.createWSOLAccountIfNotExist = createWSOLAccountIfNotExist;\nfunction createAssociatedTokenAccountIfNotExist(program, tokenMintAddress, transaction) {\n return __awaiter(this, void 0, void 0, function* () {\n let account = yield findAssociatedTokenAddress(program.provider.wallet.publicKey, tokenMintAddress);\n yield program.provider.connection.getAccountInfo(account).then((info) => __awaiter(this, void 0, void 0, function* () {\n if (!info) {\n account = yield spl_token_1.Token.getAssociatedTokenAddress(ASSOCIATED_TOKEN_PROGRAM_ID, spl_token_2.TOKEN_PROGRAM_ID, tokenMintAddress, program.provider.wallet.publicKey);\n transaction.add(spl_token_1.Token.createAssociatedTokenAccountInstruction(ASSOCIATED_TOKEN_PROGRAM_ID, spl_token_2.TOKEN_PROGRAM_ID, tokenMintAddress, account, program.provider.wallet.publicKey, program.provider.wallet.publicKey));\n }\n }));\n return account;\n });\n}\nexports.createAssociatedTokenAccountIfNotExist = createAssociatedTokenAccountIfNotExist;\nfunction findAssociatedTokenAddress(walletAddress, tokenMintAddress) {\n return __awaiter(this, void 0, void 0, function* () {\n const { publicKey } = yield findProgramAddress([walletAddress.toBuffer(), spl_token_2.TOKEN_PROGRAM_ID.toBuffer(), tokenMintAddress.toBuffer()], ASSOCIATED_TOKEN_PROGRAM_ID);\n return publicKey;\n });\n}\nexports.findAssociatedTokenAddress = findAssociatedTokenAddress;\nfunction findProgramAddress(seeds, programId) {\n return __awaiter(this, void 0, void 0, function* () {\n const [publicKey, nonce] = yield web3_js_1.PublicKey.findProgramAddress(seeds, programId);\n return { publicKey, nonce };\n });\n}\nexports.findProgramAddress = findProgramAddress;\nfunction getProgramAuthority(id, publickey) {\n return __awaiter(this, void 0, void 0, function* () {\n const [programAuthority, nonce] = yield web3_js_1.PublicKey.findProgramAddress([publickey.toBuffer()], id);\n return { programAuthority, nonce };\n });\n}\nexports.getProgramAuthority = getProgramAuthority;\nconst sleep = (ms) => __awaiter(void 0, void 0, void 0, function* () {\n return yield new Promise(resolve => setTimeout(resolve, ms));\n});\nexports.sleep = sleep;\nfunction getMultipleAccounts(connection, publicKeys, commitment) {\n return __awaiter(this, void 0, void 0, function* () {\n const keys = [];\n let tempKeys = [];\n publicKeys.forEach((k) => {\n if (tempKeys.length >= 100) {\n keys.push(tempKeys);\n tempKeys = [];\n }\n tempKeys.push(k);\n });\n if (tempKeys.length > 0) {\n keys.push(tempKeys);\n }\n const accounts = [];\n const resArray = {};\n yield Promise.all(keys.map((key, index) => __awaiter(this, void 0, void 0, function* () {\n const res = yield connection.getMultipleAccountsInfo(key, commitment);\n resArray[index] = res;\n })));\n Object.keys(resArray)\n .sort((a, b) => parseInt(a) - parseInt(b))\n .forEach((itemIndex) => {\n const res = resArray[parseInt(itemIndex)];\n for (const account of res) {\n accounts.push(account);\n }\n });\n return accounts.map((account, idx) => {\n if (account === null) {\n return null;\n }\n return {\n publicKey: publicKeys[idx],\n account\n };\n });\n });\n}\nexports.getMultipleAccounts = getMultipleAccounts;\nfunction getParsedData(multipleInfo, poolInfo) {\n let amm;\n let fees;\n let coinBalance;\n let pcBalance;\n let config;\n let pyth;\n let pythPc;\n for (let i = 0; i < multipleInfo.length; i++) {\n const info = multipleInfo[i];\n if (info) {\n const address = info.publicKey.toBase58();\n const data = Buffer.from(info.account.data);\n const { key } = getAddressForWhat(poolInfo, address);\n switch (key) {\n case 'amm': {\n const parsed = layout_1.LIFINITY_AMM_LAYOUT.decode(data);\n const { freezeTrade, freezeDeposit, freezeWithdraw, baseDecimals, curveType } = parsed;\n amm = {\n freezeTrade: freezeTrade,\n freezeDeposit: freezeDeposit,\n freezeWithdraw: freezeWithdraw,\n baseDecimals: baseDecimals,\n curveType: curveType,\n };\n const { tradeFeeNumerator, tradeFeeDenominator, ownerTradeFeeNumerator, ownerTradeFeeDenominator } = parsed;\n fees = {\n tradeFeeNumerator: new decimal_js_1.default(Number(tradeFeeNumerator)),\n tradeFeeDenominator: new decimal_js_1.default(Number(tradeFeeDenominator)),\n ownerTradeFeeNumerator: new decimal_js_1.default(Number(ownerTradeFeeNumerator)),\n ownerTradeFeeDenominator: new decimal_js_1.default(Number(ownerTradeFeeDenominator)),\n };\n break;\n }\n case 'poolCoinTokenAccount': {\n const parsed = spl_token_2.AccountLayout.decode(data);\n const amount = spl_token_2.u64.fromBuffer(parsed.amount).toNumber();\n coinBalance = new decimal_js_1.default(amount);\n break;\n }\n case 'poolPcTokenAccount': {\n const parsed = spl_token_2.AccountLayout.decode(data);\n const amount = spl_token_2.u64.fromBuffer(parsed.amount).toNumber();\n pcBalance = new decimal_js_1.default(amount);\n break;\n }\n case 'configAccount': {\n const parsed = layout_1.CONFIG_LAYOUT.decode(data);\n const { concentrationRatio, lastPrice, adjustRatio, balanceRatio, lastBalancedPrice, configDenominator, pythConfidenceLimit, pythSlotLimit, volumeX, volumeY, volumeXinY, coefficientUp, coefficientDown, oracleStatus, configTemp1, configTemp2, } = parsed;\n config = {\n concentrationRatio: new decimal_js_1.default(Number(concentrationRatio)),\n lastPrice: new decimal_js_1.default(Number(lastPrice)),\n adjustRatio: new decimal_js_1.default(Number(adjustRatio)),\n balanceRatio: new decimal_js_1.default(Number(balanceRatio)),\n lastBalancedPrice: new decimal_js_1.default(Number(lastBalancedPrice)),\n configDenominator: new decimal_js_1.default(Number(configDenominator)),\n pythConfidenceLimit: new decimal_js_1.default(Number(pythConfidenceLimit)),\n pythSlotLimit: new decimal_js_1.default(Number(pythSlotLimit)),\n volumeX: new decimal_js_1.default(Number(volumeX)),\n volumeY: new decimal_js_1.default(Number(volumeY)),\n volumeXinY: new decimal_js_1.default(Number(volumeXinY)),\n coefficientUp: new decimal_js_1.default(Number(coefficientUp)),\n coefficientDown: new decimal_js_1.default(Number(coefficientDown)),\n oracleStatus: new decimal_js_1.default(Number(oracleStatus)),\n configTemp1: new decimal_js_1.default(Number(configTemp1)),\n configTemp2: new decimal_js_1.default(Number(configTemp2)),\n };\n break;\n }\n case 'pythAccount': {\n const { aggregate, exponent } = (0, client_1.parsePriceData)(data);\n const pythPrice = new decimal_js_1.default(Number(aggregate.priceComponent));\n const pythConfidence = new decimal_js_1.default(Number(aggregate.confidenceComponent));\n const pythStatus = new decimal_js_1.default(Number(aggregate.status));\n const pythPublishSlot = new decimal_js_1.default(Number(aggregate.publishSlot));\n const pythExponent = exponent;\n pyth = {\n price: pythPrice,\n confidence: pythConfidence,\n status: pythStatus,\n publishSlot: pythPublishSlot,\n exponent: pythExponent,\n };\n break;\n }\n case 'pythPcAccount': {\n const { aggregate, exponent } = (0, client_1.parsePriceData)(data);\n const pythPrice = new decimal_js_1.default(Number(aggregate.priceComponent));\n const pythConfidence = new decimal_js_1.default(Number(aggregate.confidenceComponent));\n const pythStatus = new decimal_js_1.default(Number(aggregate.status));\n const pythPublishSlot = new decimal_js_1.default(Number(aggregate.publishSlot));\n const pythExponent = exponent;\n pythPc = {\n price: pythPrice,\n confidence: pythConfidence,\n status: pythStatus,\n publishSlot: pythPublishSlot,\n exponent: pythExponent,\n };\n break;\n }\n }\n }\n }\n return { amm, fees, coinBalance, pcBalance, config, pyth, pythPc };\n}\nexports.getParsedData = getParsedData;\nfunction getAddressForWhat(pool, address) {\n for (const [key, value] of Object.entries(pool)) {\n if (value === address) {\n return { key };\n }\n }\n return {};\n}\nfunction getTokenAccountBalance(connection, tokenAccount) {\n return __awaiter(this, void 0, void 0, function* () {\n // @ts-ignore\n const resp = yield connection._rpcRequest('getTokenAccountBalance', [\n tokenAccount.toBase58()\n ]);\n if (resp.error) {\n throw new Error(resp.error.message);\n }\n return resp.result;\n });\n}\nexports.getTokenAccountBalance = getTokenAccountBalance;\n","import JSBI from 'jsbi';\nimport Decimal from 'decimal.js';\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar ZERO = /*#__PURE__*/JSBI.BigInt(0);\nvar ONE = /*#__PURE__*/JSBI.BigInt(1);\nvar TWO = /*#__PURE__*/JSBI.BigInt(2);\nfunction abs(number) {\n if (JSBI.GE(number, ZERO)) {\n return number;\n }\n\n return JSBI.unaryMinus(number);\n}\nfunction sumArray(numbers) {\n return numbers.reduce(function (prev, curr) {\n return JSBI.add(prev, curr);\n }, ZERO);\n}\nfunction mulArray(numbers) {\n return numbers.reduce(function (prev, curr) {\n return JSBI.multiply(prev, curr);\n }, ONE);\n}\nfunction ceilingDivision(dividend, divisor) {\n var quotient = JSBI.divide(dividend, divisor);\n\n if (JSBI.equal(quotient, ZERO)) {\n return [ZERO, ZERO];\n }\n\n var remainder = JSBI.remainder(dividend, divisor);\n\n if (JSBI.greaterThan(remainder, ZERO)) {\n quotient = JSBI.add(quotient, ONE);\n divisor = JSBI.divide(dividend, quotient);\n remainder = JSBI.remainder(dividend, quotient);\n\n if (JSBI.greaterThan(remainder, ZERO)) {\n divisor = JSBI.add(divisor, ONE);\n }\n }\n\n return [quotient, divisor];\n}\nfunction toDecimal(input, shift) {\n if (shift === void 0) {\n shift = 0;\n }\n\n return new Decimal(input.toString()).div(new Decimal(10).pow(shift));\n}\n\nvar Curve = /*#__PURE__*/function () {\n function Curve(numberOfCurrencies, amplificationFactor, targetPrices) {\n this.numberOfCurrencies = void 0;\n this.amplificationFactor = void 0;\n this.targetPrices = void 0;\n this.numberOfCurrencies = numberOfCurrencies;\n this.amplificationFactor = amplificationFactor;\n this.targetPrices = targetPrices;\n }\n\n var _proto = Curve.prototype;\n\n _proto.exchange = function exchange(tokenAmounts, inputIndex, outputIndex, amount, minusOne) {\n if (minusOne === void 0) {\n minusOne = true;\n }\n\n if (tokenAmounts.length !== JSBI.toNumber(this.numberOfCurrencies)) {\n throw new Error('Number of currencies does not match');\n }\n\n var xp = this.xp(tokenAmounts);\n var dx = JSBI.multiply(amount, this.targetPrices[inputIndex]);\n var x = JSBI.add(xp[inputIndex], dx);\n var y = this.computeY(tokenAmounts, inputIndex, outputIndex, x);\n var dy = JSBI.subtract(xp[outputIndex], y); // This is a special condition on Curve stable algo. For TokenSwap, they don't seem to apply this minus one.\n\n if (minusOne) {\n dy = JSBI.subtract(dy, ONE);\n }\n\n return JSBI.divide(dy, this.targetPrices[outputIndex]);\n };\n\n _proto.computeBaseY = function computeBaseY(tokenAmounts, inputIndex, outputIndex, amount) {\n var d = this.computeD(tokenAmounts);\n var xp = this.xp(tokenAmounts);\n var nn = JSBI.exponentiate(this.numberOfCurrencies, this.numberOfCurrencies);\n var sum = sumArray(xp);\n var product = mulArray(xp);\n var k = JSBI.subtract(JSBI.add(JSBI.multiply(JSBI.multiply(this.amplificationFactor, nn), sum), d), JSBI.multiply(JSBI.multiply(this.amplificationFactor, d), nn));\n var b = JSBI.multiply(JSBI.multiply(JSBI.multiply(this.amplificationFactor, nn), nn), product);\n var c = JSBI.multiply(JSBI.multiply(nn, product), k);\n var numerator = JSBI.add(b, JSBI.divide(c, xp[inputIndex]));\n var denominator = JSBI.add(b, JSBI.divide(c, xp[outputIndex])); // Convert to number since JSBI doesn't support log10\n\n var inputFactor = Math.log10(JSBI.toNumber(this.targetPrices[inputIndex]));\n var outputFactor = Math.log10(JSBI.toNumber(this.targetPrices[outputIndex]));\n var factor = Math.abs(outputFactor - inputFactor);\n\n if (inputFactor >= outputFactor) {\n return JSBI.BigInt(new Decimal(numerator.toString()).mul(new Decimal(amount.toString())).div(new Decimal(denominator.toString())).mul(Math.pow(10, factor)).floor().toString());\n } else {\n return JSBI.BigInt(new Decimal(numerator.toString()).mul(new Decimal(amount.toString())).div(new Decimal(denominator.toString())).div(Math.pow(10, factor)).floor().toString());\n }\n };\n\n _proto.computeY = function computeY(tokenAmounts, inputIndex, outputIndex, newTotalAmount) {\n var d = this.computeD(tokenAmounts);\n var xx = this.xp(tokenAmounts);\n xx[inputIndex] = newTotalAmount;\n xx.splice(outputIndex, 1);\n var ann = JSBI.multiply(this.amplificationFactor, this.numberOfCurrencies);\n var c = d;\n\n for (var _iterator = _createForOfIteratorHelperLoose(xx), _step; !(_step = _iterator()).done;) {\n var _y = _step.value;\n c = JSBI.divide(JSBI.multiply(c, d), JSBI.multiply(_y, this.numberOfCurrencies));\n }\n\n c = JSBI.divide(JSBI.multiply(c, d), JSBI.multiply(this.numberOfCurrencies, ann));\n var b = JSBI.subtract(JSBI.add(sumArray(xx), JSBI.divide(d, ann)), d);\n var yPrev = ZERO;\n var y = d;\n\n while (JSBI.greaterThan(abs(JSBI.subtract(y, yPrev)), ONE)) {\n yPrev = y;\n y = JSBI.divide(JSBI.add(JSBI.exponentiate(y, TWO), c), JSBI.add(JSBI.multiply(TWO, y), b));\n }\n\n return y;\n };\n\n _proto.computeD = function computeD(tokenAmounts) {\n var dPrev = ZERO;\n var xp = this.xp(tokenAmounts);\n var sum = sumArray(xp);\n var d = sum;\n var ann = JSBI.multiply(this.amplificationFactor, this.numberOfCurrencies);\n\n while (JSBI.greaterThan(abs(JSBI.subtract(d, dPrev)), ONE)) {\n var dP = d;\n\n for (var _iterator2 = _createForOfIteratorHelperLoose(xp), _step2; !(_step2 = _iterator2()).done;) {\n var x = _step2.value;\n dP = JSBI.divide(JSBI.multiply(dP, d), JSBI.multiply(this.numberOfCurrencies, x));\n }\n\n dPrev = d;\n var numerator = JSBI.multiply(JSBI.add(JSBI.multiply(ann, sum), JSBI.multiply(dP, this.numberOfCurrencies)), d);\n var denominator = JSBI.add(JSBI.multiply(JSBI.subtract(ann, ONE), d), JSBI.multiply(JSBI.add(this.numberOfCurrencies, ONE), dP));\n d = JSBI.divide(numerator, denominator);\n }\n\n return d;\n };\n\n _proto.xp = function xp(tokenAmounts) {\n var _this = this;\n\n return tokenAmounts.map(function (tokenAmount, index) {\n return JSBI.multiply(tokenAmount, _this.targetPrices[index]);\n });\n };\n\n _proto.setAmplificationFactor = function setAmplificationFactor(amplificationFactor) {\n this.amplificationFactor = amplificationFactor;\n };\n\n return Curve;\n}();\n\nvar Stable = /*#__PURE__*/function () {\n function Stable(numberOfCurrencies, amp, targetPrices, traderFee) {\n this.targetPrices = void 0;\n this.traderFee = void 0;\n this.curve = void 0;\n this.targetPrices = targetPrices;\n this.traderFee = traderFee;\n this.curve = new Curve(numberOfCurrencies, amp, this.targetPrices);\n }\n\n var _proto = Stable.prototype;\n\n _proto.exchange = function exchange(tokenAmounts, inputTradeAmount, inputIndex, outputIndex) {\n var outputAmountWithoutFees = this.getOutputAmount(tokenAmounts, inputTradeAmount, inputIndex, outputIndex);\n var fees = this.getFees(outputAmountWithoutFees);\n var expectedOutputAmount = JSBI.subtract(outputAmountWithoutFees, fees);\n return {\n priceImpact: this.getPriceImpact(tokenAmounts, inputTradeAmount, expectedOutputAmount, inputIndex, outputIndex),\n fees: fees,\n expectedOutputAmount: expectedOutputAmount\n };\n };\n\n _proto.getPriceImpact = function getPriceImpact(tokenAmounts, inputTradeAmountJSBI, expectedOutputAmountJSBI, inputIndex, outputIndex) {\n if (JSBI.equal(inputTradeAmountJSBI, ZERO) || JSBI.equal(tokenAmounts[inputIndex], ZERO) || JSBI.equal(tokenAmounts[outputIndex], ZERO)) {\n return new Decimal(0);\n }\n\n var noSlippageOutputAmount = toDecimal(this.getOutputAmountWithNoSlippage(tokenAmounts, inputTradeAmountJSBI, inputIndex, outputIndex));\n var expectedOutputAmount = toDecimal(expectedOutputAmountJSBI);\n var impact = noSlippageOutputAmount.sub(expectedOutputAmount).div(noSlippageOutputAmount);\n return impact;\n };\n\n _proto.getFees = function getFees(outputAmountWithoutFees) {\n return JSBI.equal(this.traderFee.numerator, ZERO) ? ZERO : JSBI.divide(JSBI.multiply(outputAmountWithoutFees, this.traderFee.numerator), this.traderFee.denominator);\n };\n\n _proto.getOutputAmount = function getOutputAmount(tokenAmounts, inputTradeAmount, inputIndex, outputIndex) {\n return this.curve.exchange(tokenAmounts, inputIndex, outputIndex, inputTradeAmount);\n };\n\n _proto.getOutputAmountWithNoSlippage = function getOutputAmountWithNoSlippage(tokenAmounts, inputTradeAmount, inputIndex, outputIndex) {\n return this.curve.computeBaseY(tokenAmounts, inputIndex, outputIndex, inputTradeAmount);\n };\n\n _proto.setAmp = function setAmp(amp) {\n this.curve.setAmplificationFactor(amp);\n };\n\n return Stable;\n}();\n\n/** calculates fee amount given a fee fraction, returning one when fee is set but amount is zero */\n\nfunction calculateFeeAmount(amount, fee) {\n if (JSBI.equal(fee.numerator, ZERO) || JSBI.equal(amount, ZERO)) {\n return ZERO;\n } else {\n var feeAmount = JSBI.divide(JSBI.multiply(amount, fee.numerator), fee.denominator);\n\n if (JSBI.equal(feeAmount, ZERO)) {\n return ONE;\n }\n\n return feeAmount;\n }\n}\n\nvar TokenSwapStable = /*#__PURE__*/function () {\n function TokenSwapStable(amp, traderFee, ownerFee) {\n this.traderFee = void 0;\n this.ownerFee = void 0;\n this.curve = void 0;\n this.traderFee = traderFee;\n this.ownerFee = ownerFee;\n this.curve = new Curve(TWO, amp, [ONE, ONE]);\n }\n\n var _proto = TokenSwapStable.prototype;\n\n _proto.exchange = function exchange(tokenAmounts, inputTradeAmount, outputIndex) {\n var inputIndex = outputIndex === 0 ? 1 : 0;\n var expectedOutputAmount = this.getExpectedOutputAmount(tokenAmounts, inputTradeAmount, inputIndex, outputIndex);\n return {\n priceImpact: this.getPriceImpact(tokenAmounts, inputTradeAmount, expectedOutputAmount, inputIndex, outputIndex),\n fees: this.getFees(inputTradeAmount),\n expectedOutputAmount: expectedOutputAmount\n };\n };\n\n _proto.getPriceImpact = function getPriceImpact(tokenAmounts, inputTradeAmountJSBI, expectedOutputAmountJSBI, inputIndex, outputIndex) {\n if (JSBI.equal(inputTradeAmountJSBI, ZERO) || JSBI.equal(tokenAmounts[inputIndex], ZERO) || JSBI.equal(tokenAmounts[outputIndex], ZERO)) {\n return new Decimal(0);\n }\n\n var noSlippageOutputAmount = toDecimal(this.getExpectedOutputAmountWithNoSlippage(tokenAmounts, inputTradeAmountJSBI, inputIndex, outputIndex));\n var expectedOutputAmount = toDecimal(expectedOutputAmountJSBI);\n var impact = noSlippageOutputAmount.sub(expectedOutputAmount).div(noSlippageOutputAmount);\n return impact;\n };\n\n _proto.getFees = function getFees(inputTradeAmount) {\n var tradingFee = calculateFeeAmount(inputTradeAmount, this.traderFee);\n var ownerFee = calculateFeeAmount(inputTradeAmount, this.ownerFee);\n return JSBI.add(tradingFee, ownerFee);\n };\n\n _proto.getExpectedOutputAmount = function getExpectedOutputAmount(tokenAmounts, inputTradeAmount, inputIndex, outputIndex) {\n var inputTradeAmountLessFees = this.getInputAmountLessFees(inputTradeAmount);\n return this.getOutputAmount(tokenAmounts, inputTradeAmountLessFees, inputIndex, outputIndex);\n };\n\n _proto.getExpectedOutputAmountWithNoSlippage = function getExpectedOutputAmountWithNoSlippage(tokenAmounts, inputTradeAmount, inputIndex, outputIndex) {\n var inputTradeAmountLessFees = this.getInputAmountLessFees(inputTradeAmount);\n return this.getOutputAmountWithNoSlippage(tokenAmounts, inputTradeAmountLessFees, inputIndex, outputIndex);\n };\n\n _proto.getInputAmountLessFees = function getInputAmountLessFees(inputTradeAmount) {\n return JSBI.subtract(inputTradeAmount, this.getFees(inputTradeAmount));\n };\n\n _proto.getOutputAmount = function getOutputAmount(tokenAmounts, inputTradeAmountLessFees, inputIndex, outputIndex) {\n return this.curve.exchange(tokenAmounts, inputIndex, outputIndex, inputTradeAmountLessFees, false);\n };\n\n _proto.getOutputAmountWithNoSlippage = function getOutputAmountWithNoSlippage(tokenAmounts, inputTradeAmountLessFees, inputIndex, outputIndex) {\n return this.curve.computeBaseY(tokenAmounts, inputIndex, outputIndex, inputTradeAmountLessFees);\n };\n\n return TokenSwapStable;\n}();\n\nvar TokenSwapConstantProduct = /*#__PURE__*/function () {\n function TokenSwapConstantProduct(traderFee, ownerFee, feesOnInput) {\n if (feesOnInput === void 0) {\n feesOnInput = true;\n }\n\n this.traderFee = void 0;\n this.ownerFee = void 0;\n this.feesOnInput = void 0;\n this.traderFee = traderFee;\n this.ownerFee = ownerFee;\n this.feesOnInput = feesOnInput;\n }\n\n var _proto = TokenSwapConstantProduct.prototype;\n\n _proto.exchange = function exchange(tokenAmounts, inputTradeAmount, outputIndex) {\n var inputIndex = outputIndex === 0 ? 1 : 0;\n var newInputTradeAmount = this.feesOnInput ? this.getAmountLessFees(inputTradeAmount) : inputTradeAmount;\n var expectedOutputAmount = this.getExpectedOutputAmount(tokenAmounts, newInputTradeAmount, inputIndex, outputIndex);\n var fees = this.getFees(this.feesOnInput ? inputTradeAmount : expectedOutputAmount);\n\n if (!this.feesOnInput) {\n expectedOutputAmount = this.getAmountLessFees(expectedOutputAmount);\n }\n\n return {\n priceImpact: this.getPriceImpact(tokenAmounts, newInputTradeAmount, expectedOutputAmount, inputIndex, outputIndex),\n fees: fees,\n expectedOutputAmount: expectedOutputAmount\n };\n };\n\n _proto.exchangeForExactOutput = function exchangeForExactOutput(tokenAmounts, outputTradeAmount, outputIndex) {\n var inputIndex = outputIndex === 0 ? 1 : 0;\n var newOutputTradeAmount = this.feesOnInput ? outputTradeAmount : this.getAmountPlusFees(outputTradeAmount);\n var expectedInputAmount = this.getInputAmount(tokenAmounts, newOutputTradeAmount, inputIndex, outputIndex);\n var fees = this.getFees(this.feesOnInput ? expectedInputAmount : outputTradeAmount);\n\n if (this.feesOnInput) {\n expectedInputAmount = this.getAmountPlusFees(expectedInputAmount);\n }\n\n return {\n priceImpact: this.getPriceImpactExactOutput(tokenAmounts, expectedInputAmount, newOutputTradeAmount, inputIndex, outputIndex),\n fees: fees,\n expectedInputAmount: expectedInputAmount\n };\n };\n\n _proto.getPriceImpact = function getPriceImpact(tokenAmounts, inputTradeAmountJSBI, expectedOutputAmountJSBI, inputIndex, outputIndex) {\n if (JSBI.equal(inputTradeAmountJSBI, ZERO) || JSBI.equal(tokenAmounts[inputIndex], ZERO) || JSBI.equal(tokenAmounts[outputIndex], ZERO)) {\n return new Decimal(0);\n }\n\n var noSlippageOutputAmount = toDecimal(this.getExpectedOutputAmountWithNoSlippage(tokenAmounts, inputTradeAmountJSBI, inputIndex, outputIndex));\n var expectedOutputAmount = toDecimal(expectedOutputAmountJSBI);\n var impact = noSlippageOutputAmount.sub(expectedOutputAmount).div(noSlippageOutputAmount);\n return impact;\n };\n\n _proto.getPriceImpactExactOutput = function getPriceImpactExactOutput(tokenAmounts, expectedInputTradeAmountJSBI, outputAmountJSBI, inputIndex, outputIndex) {\n if (JSBI.equal(outputAmountJSBI, ZERO) || JSBI.equal(tokenAmounts[inputIndex], ZERO) || JSBI.equal(tokenAmounts[outputIndex], ZERO)) {\n return new Decimal(0);\n }\n\n var noSlippageInputAmount = toDecimal(this.getExpectedInputAmountWithNoSlippage(tokenAmounts, outputAmountJSBI, inputIndex, outputIndex));\n var expectedInputAmount = toDecimal(expectedInputTradeAmountJSBI);\n var impact = expectedInputAmount.sub(noSlippageInputAmount).div(noSlippageInputAmount);\n return impact;\n };\n\n _proto.getFees = function getFees(tradeAmount) {\n var tradingFee = calculateFeeAmount(tradeAmount, this.traderFee);\n var ownerFee = calculateFeeAmount(tradeAmount, this.ownerFee);\n return JSBI.add(tradingFee, ownerFee);\n };\n\n _proto.getExpectedOutputAmount = function getExpectedOutputAmount(tokenAmounts, inputTradeAmount, inputIndex, outputIndex) {\n return this.getOutputAmount(tokenAmounts, inputTradeAmount, inputIndex, outputIndex);\n };\n\n _proto.getExpectedOutputAmountWithNoSlippage = function getExpectedOutputAmountWithNoSlippage(tokenAmounts, inputTradeAmount, inputIndex, outputIndex) {\n if (JSBI.equal(tokenAmounts[inputIndex], ZERO)) {\n return tokenAmounts[outputIndex];\n }\n\n var expectedOutputAmountWithNoSlippage = JSBI.divide(JSBI.multiply(inputTradeAmount, tokenAmounts[outputIndex]), tokenAmounts[inputIndex]);\n\n if (this.feesOnInput) {\n return expectedOutputAmountWithNoSlippage;\n } else {\n return this.getAmountLessFees(expectedOutputAmountWithNoSlippage);\n }\n };\n\n _proto.getExpectedInputAmountWithNoSlippage = function getExpectedInputAmountWithNoSlippage(tokenAmounts, outputTradeAmount, inputIndex, outputIndex) {\n if (JSBI.equal(tokenAmounts[outputIndex], ZERO)) {\n return tokenAmounts[inputIndex];\n }\n\n var expectedInputAmountWithNoSlippage = JSBI.divide(JSBI.multiply(outputTradeAmount, tokenAmounts[inputIndex]), tokenAmounts[outputIndex]);\n\n if (this.feesOnInput) {\n return this.getAmountPlusFees(expectedInputAmountWithNoSlippage);\n } else {\n return expectedInputAmountWithNoSlippage;\n }\n };\n\n _proto.getAmountLessFees = function getAmountLessFees(tradeAmount) {\n return JSBI.subtract(tradeAmount, this.getFees(tradeAmount));\n };\n\n _proto.getAmountPlusFees = function getAmountPlusFees(tradeAmount) {\n return JSBI.add(tradeAmount, this.getFees(tradeAmount));\n };\n\n _proto.getOutputAmount = function getOutputAmount(tokenAmounts, inputTradeAmount, inputIndex, outputIndex) {\n var _ref = [tokenAmounts[inputIndex], tokenAmounts[outputIndex]],\n poolInputAmount = _ref[0],\n poolOutputAmount = _ref[1];\n var invariant = this.getInvariant(tokenAmounts);\n\n var _ceilingDivision = ceilingDivision(invariant, JSBI.add(poolInputAmount, inputTradeAmount)),\n newPoolOutputAmount = _ceilingDivision[0];\n\n return JSBI.subtract(poolOutputAmount, newPoolOutputAmount);\n };\n\n _proto.getInputAmount = function getInputAmount(tokenAmounts, outputTradeAmount, inputIndex, outputIndex) {\n var _ref2 = [tokenAmounts[inputIndex], tokenAmounts[outputIndex]],\n poolInputAmount = _ref2[0],\n poolOutputAmount = _ref2[1];\n var invariant = this.getInvariant(tokenAmounts);\n\n if (JSBI.greaterThanOrEqual(outputTradeAmount, poolOutputAmount)) {\n throw new Error('Insufficient liquidity to provide outputTradeAmount');\n }\n\n var _ceilingDivision2 = ceilingDivision(invariant, JSBI.subtract(poolOutputAmount, outputTradeAmount)),\n newPoolInputAmount = _ceilingDivision2[0];\n\n return JSBI.subtract(newPoolInputAmount, poolInputAmount);\n };\n\n _proto.getInvariant = function getInvariant(tokenAmounts) {\n return JSBI.multiply(tokenAmounts[0], tokenAmounts[1]);\n };\n\n return TokenSwapConstantProduct;\n}();\n\nvar Fraction = function Fraction(numerator, denominator) {\n this.numerator = void 0;\n this.denominator = void 0;\n this.numerator = numerator;\n this.denominator = denominator;\n};\nvar ZERO_FRACTION = /*#__PURE__*/new Fraction( /*#__PURE__*/JSBI.BigInt(0), /*#__PURE__*/JSBI.BigInt(1));\n\nexport { Fraction, ONE, Stable, TWO, TokenSwapConstantProduct, TokenSwapStable, ZERO, ZERO_FRACTION, abs, calculateFeeAmount, ceilingDivision, mulArray, sumArray, toDecimal };\n//# sourceMappingURL=math.esm.js.map\n","\"use strict\";Object.defineProperty(exports, \"__esModule\", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }var Ir=Object.defineProperty;var Ct=Object.getOwnPropertySymbols;var Or=Object.prototype.hasOwnProperty,Br=Object.prototype.propertyIsEnumerable;var v=Math.pow,Mt=(e,t,r)=>t in e?Ir(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,l=(e,t)=>{for(var r in t||(t={}))Or.call(t,r)&&Mt(e,r,t[r]);if(Ct)for(var r of Ct(t))Br.call(t,r)&&Mt(e,r,t[r]);return e};var w=(e,t,r)=>new Promise((n,o)=>{var a=i=>{try{u(r.next(i))}catch(c){o(c)}},s=i=>{try{u(r.throw(i))}catch(c){o(c)}},u=i=>i.done?n(i.value):Promise.resolve(i.value).then(a,s);u((r=r.apply(e,t)).next())});var _web3js = require('@solana/web3.js'); var We = _interopRequireWildcard(_web3js); var qe = _interopRequireWildcard(_web3js); var Re = _interopRequireWildcard(_web3js); var ve = _interopRequireWildcard(_web3js); var Me = _interopRequireWildcard(_web3js); var ze = _interopRequireWildcard(_web3js); var je = _interopRequireWildcard(_web3js); var Ye = _interopRequireWildcard(_web3js); var He = _interopRequireWildcard(_web3js); var Qe = _interopRequireWildcard(_web3js); var _e = _interopRequireWildcard(_web3js); var et = _interopRequireWildcard(_web3js); var rt = _interopRequireWildcard(_web3js); var nt = _interopRequireWildcard(_web3js); var be = _interopRequireWildcard(_web3js); var at = _interopRequireWildcard(_web3js); var ct = _interopRequireWildcard(_web3js); var lt = _interopRequireWildcard(_web3js);var d=new Map,p=new Map,C= exports.InvalidMarketParametersError =class extends Error{constructor(){super(\"Invalid market parameters error\");this.code=0;this.name=\"InvalidMarketParameters\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,C)}};d.set(0,()=>new C);p.set(\"InvalidMarketParameters\",()=>new C);var M=class extends Error{constructor(){super(\"Invalid exchange authority error\");this.code=1;this.name=\"InvalidMarketAuthority\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,M)}};d.set(1,()=>new M);p.set(\"InvalidMarketAuthority\",()=>new M);var N=class extends Error{constructor(){super(\"Market deserialization error\");this.code=2;this.name=\"FailedToLoadMarketFromAccount\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,N)}};d.set(2,()=>new N);p.set(\"FailedToLoadMarketFromAccount\",()=>new N);var z=class extends Error{constructor(){super(\"Market already initialized error\");this.code=3;this.name=\"MarketAlreadyInitialized\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,z)}};d.set(3,()=>new z);p.set(\"MarketAlreadyInitialized\",()=>new z);var G=class extends Error{constructor(){super(\"Market is not initialized error\");this.code=4;this.name=\"MarketUninitialized\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,G)}};d.set(4,()=>new G);p.set(\"MarketUninitialized\",()=>new G);var j=class extends Error{constructor(){super(\"Invalid state transition error\");this.code=5;this.name=\"InvalidStateTransition\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,j)}};d.set(5,()=>new j);p.set(\"InvalidStateTransition\",()=>new j);var V=class extends Error{constructor(){super(\"Invalid market signer error\");this.code=6;this.name=\"InvalidMarketSigner\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,V)}};d.set(6,()=>new V);p.set(\"InvalidMarketSigner\",()=>new V);var Y=class extends Error{constructor(){super(\"Invalid lot size error\");this.code=7;this.name=\"InvalidLotSize\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Y)}};d.set(7,()=>new Y);p.set(\"InvalidLotSize\",()=>new Y);var Z=class extends Error{constructor(){super(\"Invalid tick size error\");this.code=8;this.name=\"InvalidTickSize\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Z)}};d.set(8,()=>new Z);p.set(\"InvalidTickSize\",()=>new Z);var H=class extends Error{constructor(){super(\"Invalid mint error\");this.code=9;this.name=\"InvalidMint\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,H)}};d.set(9,()=>new H);p.set(\"InvalidMint\",()=>new H);var X=class extends Error{constructor(){super(\"Invalid base vault error\");this.code=10;this.name=\"InvalidBaseVault\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,X)}};d.set(10,()=>new X);p.set(\"InvalidBaseVault\",()=>new X);var Q=class extends Error{constructor(){super(\"Invalid quote vault error\");this.code=11;this.name=\"InvalidQuoteVault\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,Q)}};d.set(11,()=>new Q);p.set(\"InvalidQuoteVault\",()=>new Q);var J=class extends Error{constructor(){super(\"Invalid base account error\");this.code=12;this.name=\"InvalidBaseAccount\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,J)}};d.set(12,()=>new J);p.set(\"InvalidBaseAccount\",()=>new J);var _=class extends Error{constructor(){super(\"Invalid quote account error\");this.code=13;this.name=\"InvalidQuoteAccount\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,_)}};d.set(13,()=>new _);p.set(\"InvalidQuoteAccount\",()=>new _);var $=class extends Error{constructor(){super(\"Too many events error\");this.code=14;this.name=\"TooManyEvents\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,$)}};d.set(14,()=>new $);p.set(\"TooManyEvents\",()=>new $);var ee=class extends Error{constructor(){super(\"New order error\");this.code=15;this.name=\"NewOrderError\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,ee)}};d.set(15,()=>new ee);p.set(\"NewOrderError\",()=>new ee);var te=class extends Error{constructor(){super(\"Reduce order error\");this.code=16;this.name=\"ReduceOrderError\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,te)}};d.set(16,()=>new te);p.set(\"ReduceOrderError\",()=>new te);var re=class extends Error{constructor(){super(\"Cancel multiple orders error\");this.code=17;this.name=\"CancelMultipleOrdersError\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,re)}};d.set(17,()=>new re);p.set(\"CancelMultipleOrdersError\",()=>new re);var ie=class extends Error{constructor(){super(\"Withdraw funds error\");this.code=18;this.name=\"WithdrawFundsError\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,ie)}};d.set(18,()=>new ie);p.set(\"WithdrawFundsError\",()=>new ie);var ne=class extends Error{constructor(){super(\"Remove empty orders error\");this.code=19;this.name=\"RemoveEmptyOrdersError\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,ne)}};d.set(19,()=>new ne);p.set(\"RemoveEmptyOrdersError\",()=>new ne);var oe=class extends Error{constructor(){super(\"Trader not found error\");this.code=20;this.name=\"TraderNotFound\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,oe)}};d.set(20,()=>new oe);p.set(\"TraderNotFound\",()=>new oe);var se=class extends Error{constructor(){super(\"Invalid seat status\");this.code=21;this.name=\"InvalidSeatStatus\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,se)}};d.set(21,()=>new se);p.set(\"InvalidSeatStatus\",()=>new se);var ae=class extends Error{constructor(){super(\"Failed to evict trader\");this.code=22;this.name=\"EvictionError\";typeof Error.captureStackTrace==\"function\"&&Error.captureStackTrace(this,ae)}};d.set(22,()=>new ae);p.set(\"EvictionError\",()=>new ae);function Si(e){let t=d.get(e);return t!=null?t():null}function Ai(e){let t=p.get(e);return t!=null?t():null}var _beet = require('@metaplex-foundation/beet'); var A = _interopRequireWildcard(_beet); var Ie = _interopRequireWildcard(_beet); var ye = _interopRequireWildcard(_beet); var Nt = _interopRequireWildcard(_beet); var h = _interopRequireWildcard(_beet); var fe = _interopRequireWildcard(_beet); var ge = _interopRequireWildcard(_beet); var E = _interopRequireWildcard(_beet); var ue = _interopRequireWildcard(_beet); var T = _interopRequireWildcard(_beet); var B = _interopRequireWildcard(_beet); var g = _interopRequireWildcard(_beet); var ce = _interopRequireWildcard(_beet); var ke = _interopRequireWildcard(_beet); var Yt = _interopRequireWildcard(_beet); var I = _interopRequireWildcard(_beet); var b = _interopRequireWildcard(_beet); var Ht = _interopRequireWildcard(_beet); var Xt = _interopRequireWildcard(_beet); var F = _interopRequireWildcard(_beet); var L = _interopRequireWildcard(_beet); var Te = _interopRequireWildcard(_beet); var U = _interopRequireWildcard(_beet); var Qt = _interopRequireWildcard(_beet); var R = _interopRequireWildcard(_beet); var Ke = _interopRequireWildcard(_beet); var Ee = _interopRequireWildcard(_beet); var Ue = _interopRequireWildcard(_beet); var De = _interopRequireWildcard(_beet); var Ce = _interopRequireWildcard(_beet); var Ne = _interopRequireWildcard(_beet); var Ge = _interopRequireWildcard(_beet); var Ve = _interopRequireWildcard(_beet); var Ze = _interopRequireWildcard(_beet); var Xe = _interopRequireWildcard(_beet); var Je = _interopRequireWildcard(_beet); var $e = _interopRequireWildcard(_beet); var tt = _interopRequireWildcard(_beet); var it = _interopRequireWildcard(_beet); var ot = _interopRequireWildcard(_beet); var st = _interopRequireWildcard(_beet); var ut = _interopRequireWildcard(_beet); var bt = _interopRequireWildcard(_beet); var y = _interopRequireWildcard(_beet);var _beetsolana = require('@metaplex-foundation/beet-solana'); var kt = _interopRequireWildcard(_beetsolana); var Gt = _interopRequireWildcard(_beetsolana); var jt = _interopRequireWildcard(_beetsolana); var Be = _interopRequireWildcard(_beetsolana); var wt = _interopRequireWildcard(_beetsolana); var Bt = _interopRequireWildcard(_beetsolana); var cr = _interopRequireWildcard(_beetsolana);var Ii=new A.BeetArgsStruct([[\"instruction\",A.u8],[\"sequenceNumber\",A.u64],[\"timestamp\",A.i64],[\"slot\",A.u64],[\"market\",kt.publicKey],[\"signer\",kt.publicKey],[\"totalEvents\",A.u16]],\"AuditLogHeader\");var Pt=(r=>(r[r.Bid=0]=\"Bid\",r[r.Ask=1]=\"Ask\",r))(Pt||{}),W= exports.sideBeet =Nt.fixedScalarEnum(Pt);var he=new ye.BeetArgsStruct([[\"side\",W],[\"priceInTicks\",ye.u64],[\"orderSequenceNumber\",ye.u64]],\"CancelOrderParams\");var Ei=new Ie.FixableBeetArgsStruct([[\"orders\",Ie.array(he)]],\"CancelMultipleOrdersByIdParams\");var Oe=new h.FixableBeetArgsStruct([[\"side\",W],[\"tickLimit\",h.coption(h.u64)],[\"numOrdersToSearch\",h.coption(h.u32)],[\"numOrdersToCancel\",h.coption(h.u32)]],\"CancelUpToParams\");var xt=new fe.BeetArgsStruct([[\"priceInTicks\",fe.u64],[\"sizeInBaseLots\",fe.u64]],\"CondensedOrder\");var zt=new ge.BeetArgsStruct([[\"quoteLotsToDeposit\",ge.u64],[\"baseLotsToDeposit\",ge.u64]],\"DepositParams\");var Mi=new E.BeetArgsStruct([[\"index\",E.u16],[\"makerId\",Gt.publicKey],[\"orderSequenceNumber\",E.u64],[\"priceInTicks\",E.u64],[\"baseLotsEvicted\",E.u64]],\"EvictEvent\");var zi=new ue.BeetArgsStruct([[\"index\",ue.u16],[\"feesCollectedInQuoteLots\",ue.u64]],\"FeeEvent\");var ji=new T.BeetArgsStruct([[\"index\",T.u16],[\"makerId\",jt.publicKey],[\"orderSequenceNumber\",T.u64],[\"priceInTicks\",T.u64],[\"baseLotsFilled\",T.u64],[\"baseLotsRemaining\",T.u64]],\"FillEvent\");var Yi=new B.BeetArgsStruct([[\"index\",B.u16],[\"clientOrderId\",B.u128],[\"totalBaseLotsFilled\",B.u64],[\"totalQuoteLotsFilled\",B.u64],[\"totalFeeInQuoteLots\",B.u64]],\"FillSummaryEvent\");var Vt=new ce.BeetArgsStruct([[\"bidsSize\",ce.u64],[\"asksSize\",ce.u64],[\"numSeats\",ce.u64]],\"MarketSizeParams\");var St=new ke.BeetArgsStruct([[\"decimals\",ke.u32],[\"vaultBump\",ke.u32],[\"mintKey\",wt.publicKey],[\"vaultKey\",wt.publicKey]],\"TokenParams\");var At=new g.BeetArgsStruct([[\"discriminant\",g.u64],[\"status\",g.u64],[\"marketSizeParams\",Vt],[\"baseParams\",St],[\"baseLotSize\",g.u64],[\"quoteParams\",St],[\"quoteLotSize\",g.u64],[\"tickSizeInQuoteAtomsPerBaseUnit\",g.u64],[\"authority\",Be.publicKey],[\"feeRecipient\",Be.publicKey],[\"marketSequenceNumber\",g.u64],[\"successor\",Be.publicKey],[\"rawBaseUnitsPerBaseUnit\",g.u32],[\"padding1\",g.u32],[\"padding2\",g.uniformFixedSizeArray(g.u64,32)]],\"MarketHeader\");var Zt=(s=>(s[s.Uninitialized=0]=\"Uninitialized\",s[s.Active=1]=\"Active\",s[s.PostOnly=2]=\"PostOnly\",s[s.Paused=3]=\"Paused\",s[s.Closed=4]=\"Closed\",s[s.Tombstoned=5]=\"Tombstoned\",s))(Zt||{}),tn= exports.marketStatusBeet =Yt.fixedScalarEnum(Zt);var Fe=new I.FixableBeetArgsStruct([[\"bids\",I.array(xt)],[\"asks\",I.array(xt)],[\"clientOrderId\",I.coption(I.u128)],[\"rejectPostOnly\",I.bool]],\"MultipleOrderPacket\");var ht=(n=>(n[n.Abort=0]=\"Abort\",n[n.CancelProvide=1]=\"CancelProvide\",n[n.DecrementTake=2]=\"DecrementTake\",n))(ht||{}),It= exports.selfTradeBehaviorBeet =Ht.fixedScalarEnum(ht);var mn=e=>e.__kind===\"PostOnly\",dn= exports.isOrderPacketLimit =e=>e.__kind===\"Limit\",pn= exports.isOrderPacketImmediateOrCancel =e=>e.__kind===\"ImmediateOrCancel\",q= exports.orderPacketBeet =b.dataEnum([[\"PostOnly\",new b.BeetArgsStruct([[\"side\",W],[\"priceInTicks\",b.u64],[\"numBaseLots\",b.u64],[\"clientOrderId\",b.u128],[\"rejectPostOnly\",b.bool],[\"useOnlyDepositedFunds\",b.bool]],'OrderPacketRecord[\"PostOnly\"]')],[\"Limit\",new b.FixableBeetArgsStruct([[\"side\",W],[\"priceInTicks\",b.u64],[\"numBaseLots\",b.u64],[\"selfTradeBehavior\",It],[\"matchLimit\",b.coption(b.u64)],[\"clientOrderId\",b.u128],[\"useOnlyDepositedFunds\",b.bool]],'OrderPacketRecord[\"Limit\"]')],[\"ImmediateOrCancel\",new b.FixableBeetArgsStruct([[\"side\",W],[\"priceInTicks\",b.coption(b.u64)],[\"numBaseLots\",b.u64],[\"numQuoteLots\",b.u64],[\"minBaseLotsToFill\",b.u64],[\"minQuoteLotsToFill\",b.u64],[\"selfTradeBehavior\",It],[\"matchLimit\",b.coption(b.u64)],[\"clientOrderId\",b.u128],[\"useOnlyDepositedFunds\",b.bool]],'OrderPacketRecord[\"ImmediateOrCancel\"]')]]);var Ot=(i=>(i[i.Uninitialized=0]=\"Uninitialized\",i[i.Header=1]=\"Header\",i[i.Fill=2]=\"Fill\",i[i.Place=3]=\"Place\",i[i.Reduce=4]=\"Reduce\",i[i.Evict=5]=\"Evict\",i[i.FillSummary=6]=\"FillSummary\",i[i.Fee=7]=\"Fee\",i))(Ot||{}),fn= exports.phoenixMarketEventBeet =Xt.fixedScalarEnum(Ot);var kn=new F.BeetArgsStruct([[\"index\",F.u16],[\"orderSequenceNumber\",F.u64],[\"clientOrderId\",F.u128],[\"priceInTicks\",F.u64],[\"baseLotsPlaced\",F.u64]],\"PlaceEvent\");var xn=new L.BeetArgsStruct([[\"index\",L.u16],[\"orderSequenceNumber\",L.u64],[\"priceInTicks\",L.u64],[\"baseLotsRemoved\",L.u64],[\"baseLotsRemaining\",L.u64]],\"ReduceEvent\");var Le=new Te.BeetArgsStruct([[\"baseParams\",he],[\"size\",Te.u64]],\"ReduceOrderParams\");var In=new U.BeetArgsStruct([[\"discriminant\",U.u64],[\"market\",Bt.publicKey],[\"trader\",Bt.publicKey],[\"approvalStatus\",U.u64],[\"padding\",U.uniformFixedSizeArray(U.u64,16)]],\"Seat\");var Jt=(n=>(n[n.NotApproved=0]=\"NotApproved\",n[n.Approved=1]=\"Approved\",n[n.Retired=2]=\"Retired\",n))(Jt||{}),Bn= exports.seatApprovalStatusBeet =Qt.fixedScalarEnum(Jt);var _t=new R.FixableBeetArgsStruct([[\"quoteLotsToWithdraw\",R.coption(R.u64)],[\"baseLotsToWithdraw\",R.coption(R.u64)]],\"WithdrawParams\");var _bnjs = require('bn.js'); var _bnjs2 = _interopRequireDefault(_bnjs);function S(e){let t;return typeof e==\"number\"?t=e:t=e.toNumber(),t}function K(e){return typeof e==\"number\"?new (0, _bnjs2.default)(e):e.clone()}function Tt(e){return e.lt(new (0, _bnjs2.default)(0))?-1:e.gt(new (0, _bnjs2.default)(0))?1:0}var _spltoken = require('@solana/spl-token'); var $t = _interopRequireWildcard(_spltoken); var er = _interopRequireWildcard(_spltoken); var tr = _interopRequireWildcard(_spltoken); var rr = _interopRequireWildcard(_spltoken); var ir = _interopRequireWildcard(_spltoken); var nr = _interopRequireWildcard(_spltoken); var or = _interopRequireWildcard(_spltoken); var sr = _interopRequireWildcard(_spltoken); var ur = _interopRequireWildcard(_spltoken);var Fr=new Ke.BeetArgsStruct([[\"instructionDiscriminator\",Ke.u8]],\"CancelAllOrdersInstructionArgs\"),Tr= exports.cancelAllOrdersInstructionDiscriminator =6;function no(e,t=new We.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){var a;let[r]=Fr.serialize({instructionDiscriminator:Tr}),n=[{pubkey:e.phoenixProgram,isWritable:!1,isSigner:!1},{pubkey:e.logAuthority,isWritable:!1,isSigner:!1},{pubkey:e.market,isWritable:!0,isSigner:!1},{pubkey:e.trader,isWritable:!1,isSigner:!0},{pubkey:e.baseAccount,isWritable:!0,isSigner:!1},{pubkey:e.quoteAccount,isWritable:!0,isSigner:!1},{pubkey:e.baseVault,isWritable:!0,isSigner:!1},{pubkey:e.quoteVault,isWritable:!0,isSigner:!1},{pubkey:(a=e.tokenProgram)!=null?a:$t.TOKEN_PROGRAM_ID,isWritable:!1,isSigner:!1}];return new We.TransactionInstruction({programId:t,keys:n,data:r})}var Lr=new Ee.BeetArgsStruct([[\"instructionDiscriminator\",Ee.u8]],\"CancelAllOrdersWithFreeFundsInstructionArgs\"),Kr= exports.cancelAllOrdersWithFreeFundsInstructionDiscriminator =7;function so(e,t=new qe.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){let[r]=Lr.serialize({instructionDiscriminator:Kr}),n=[{pubkey:e.phoenixProgram,isWritable:!1,isSigner:!1},{pubkey:e.logAuthority,isWritable:!1,isSigner:!1},{pubkey:e.market,isWritable:!0,isSigner:!1},{pubkey:e.trader,isWritable:!1,isSigner:!0}];return new qe.TransactionInstruction({programId:t,keys:n,data:r})}var Wr=new Ue.BeetArgsStruct([[\"instructionDiscriminator\",Ue.u8]],\"CancelMultipleOrdersByIdInstructionArgs\"),Er= exports.cancelMultipleOrdersByIdInstructionDiscriminator =10;function uo(e,t=new Re.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){var a;let[r]=Wr.serialize({instructionDiscriminator:Er}),n=[{pubkey:e.phoenixProgram,isWritable:!1,isSigner:!1},{pubkey:e.logAuthority,isWritable:!1,isSigner:!1},{pubkey:e.market,isWritable:!0,isSigner:!1},{pubkey:e.trader,isWritable:!1,isSigner:!0},{pubkey:e.baseAccount,isWritable:!0,isSigner:!1},{pubkey:e.quoteAccount,isWritable:!0,isSigner:!1},{pubkey:e.baseVault,isWritable:!0,isSigner:!1},{pubkey:e.quoteVault,isWritable:!0,isSigner:!1},{pubkey:(a=e.tokenProgram)!=null?a:er.TOKEN_PROGRAM_ID,isWritable:!1,isSigner:!1}];return new Re.TransactionInstruction({programId:t,keys:n,data:r})}var qr=new De.BeetArgsStruct([[\"instructionDiscriminator\",De.u8]],\"CancelMultipleOrdersByIdWithFreeFundsInstructionArgs\"),Ur= exports.cancelMultipleOrdersByIdWithFreeFundsInstructionDiscriminator =11;function bo(e,t=new ve.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){let[r]=qr.serialize({instructionDiscriminator:Ur}),n=[{pubkey:e.phoenixProgram,isWritable:!1,isSigner:!1},{pubkey:e.logAuthority,isWritable:!1,isSigner:!1},{pubkey:e.market,isWritable:!0,isSigner:!1},{pubkey:e.trader,isWritable:!1,isSigner:!0}];return new ve.TransactionInstruction({programId:t,keys:n,data:r})}var Rr=new Ce.FixableBeetArgsStruct([[\"instructionDiscriminator\",Ce.u8],[\"params\",Oe]],\"CancelUpToInstructionArgs\"),Dr= exports.cancelUpToInstructionDiscriminator =8;function yo(e,t,r=new Me.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){var s;let[n]=Rr.serialize(l({instructionDiscriminator:Dr},t)),o=[{pubkey:e.phoenixProgram,isWritable:!1,isSigner:!1},{pubkey:e.logAuthority,isWritable:!1,isSigner:!1},{pubkey:e.market,isWritable:!0,isSigner:!1},{pubkey:e.trader,isWritable:!1,isSigner:!0},{pubkey:e.baseAccount,isWritable:!0,isSigner:!1},{pubkey:e.quoteAccount,isWritable:!0,isSigner:!1},{pubkey:e.baseVault,isWritable:!0,isSigner:!1},{pubkey:e.quoteVault,isWritable:!0,isSigner:!1},{pubkey:(s=e.tokenProgram)!=null?s:tr.TOKEN_PROGRAM_ID,isWritable:!1,isSigner:!1}];return new Me.TransactionInstruction({programId:r,keys:o,data:n})}var vr=new Ne.FixableBeetArgsStruct([[\"instructionDiscriminator\",Ne.u8],[\"params\",Oe]],\"CancelUpToWithFreeFundsInstructionArgs\"),Cr= exports.cancelUpToWithFreeFundsInstructionDiscriminator =9;function xo(e,t,r=new ze.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){let[n]=vr.serialize(l({instructionDiscriminator:Cr},t)),o=[{pubkey:e.phoenixProgram,isWritable:!1,isSigner:!1},{pubkey:e.logAuthority,isWritable:!1,isSigner:!1},{pubkey:e.market,isWritable:!0,isSigner:!1},{pubkey:e.trader,isWritable:!1,isSigner:!0}];return new ze.TransactionInstruction({programId:r,keys:o,data:n})}var Mr=new Ge.BeetArgsStruct([[\"instructionDiscriminator\",Ge.u8],[\"depositFundsParams\",zt]],\"DepositFundsInstructionArgs\"),Nr= exports.depositFundsInstructionDiscriminator =13;function Io(e,t,r=new je.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){var s;let[n]=Mr.serialize(l({instructionDiscriminator:Nr},t)),o=[{pubkey:e.phoenixProgram,isWritable:!1,isSigner:!1},{pubkey:e.logAuthority,isWritable:!1,isSigner:!1},{pubkey:e.market,isWritable:!0,isSigner:!1},{pubkey:e.trader,isWritable:!1,isSigner:!0},{pubkey:e.seat,isWritable:!1,isSigner:!1},{pubkey:e.baseAccount,isWritable:!0,isSigner:!1},{pubkey:e.quoteAccount,isWritable:!0,isSigner:!1},{pubkey:e.baseVault,isWritable:!0,isSigner:!1},{pubkey:e.quoteVault,isWritable:!0,isSigner:!1},{pubkey:(s=e.tokenProgram)!=null?s:rr.TOKEN_PROGRAM_ID,isWritable:!1,isSigner:!1}];return new je.TransactionInstruction({programId:r,keys:o,data:n})}var zr=new Ve.BeetArgsStruct([[\"instructionDiscriminator\",Ve.u8]],\"LogInstructionArgs\"),Lt= exports.logInstructionDiscriminator =15;function Fo(e,t=new Ye.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){let[r]=zr.serialize({instructionDiscriminator:Lt}),n=[{pubkey:e.logAuthority,isWritable:!1,isSigner:!0}];return new Ye.TransactionInstruction({programId:t,keys:n,data:r})}var Gr=new Ze.FixableBeetArgsStruct([[\"instructionDiscriminator\",Ze.u8],[\"orderPacket\",q]],\"PlaceLimitOrderInstructionArgs\"),jr= exports.placeLimitOrderInstructionDiscriminator =2;function Wo(e,t,r=new He.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){var s;let[n]=Gr.serialize(l({instructionDiscriminator:jr},t)),o=[{pubkey:e.phoenixProgram,isWritable:!1,isSigner:!1},{pubkey:e.logAuthority,isWritable:!1,isSigner:!1},{pubkey:e.market,isWritable:!0,isSigner:!1},{pubkey:e.trader,isWritable:!1,isSigner:!0},{pubkey:e.seat,isWritable:!1,isSigner:!1},{pubkey:e.baseAccount,isWritable:!0,isSigner:!1},{pubkey:e.quoteAccount,isWritable:!0,isSigner:!1},{pubkey:e.baseVault,isWritable:!0,isSigner:!1},{pubkey:e.quoteVault,isWritable:!0,isSigner:!1},{pubkey:(s=e.tokenProgram)!=null?s:ir.TOKEN_PROGRAM_ID,isWritable:!1,isSigner:!1}];return new He.TransactionInstruction({programId:r,keys:o,data:n})}var Vr=new Xe.FixableBeetArgsStruct([[\"instructionDiscriminator\",Xe.u8],[\"orderPacket\",q]],\"PlaceLimitOrderWithFreeFundsInstructionArgs\"),Yr= exports.placeLimitOrderWithFreeFundsInstructionDiscriminator =3;function Do(e,t,r=new Qe.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){let[n]=Vr.serialize(l({instructionDiscriminator:Yr},t)),o=[{pubkey:e.phoenixProgram,isWritable:!1,isSigner:!1},{pubkey:e.logAuthority,isWritable:!1,isSigner:!1},{pubkey:e.market,isWritable:!0,isSigner:!1},{pubkey:e.trader,isWritable:!1,isSigner:!0},{pubkey:e.seat,isWritable:!1,isSigner:!1}];return new Qe.TransactionInstruction({programId:r,keys:o,data:n})}var Zr=new Je.FixableBeetArgsStruct([[\"instructionDiscriminator\",Je.u8],[\"multipleOrderPacket\",Fe]],\"PlaceMultiplePostOnlyOrdersInstructionArgs\"),Hr= exports.placeMultiplePostOnlyOrdersInstructionDiscriminator =16;function zo(e,t,r=new _e.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){var s;let[n]=Zr.serialize(l({instructionDiscriminator:Hr},t)),o=[{pubkey:e.phoenixProgram,isWritable:!1,isSigner:!1},{pubkey:e.logAuthority,isWritable:!1,isSigner:!1},{pubkey:e.market,isWritable:!0,isSigner:!1},{pubkey:e.trader,isWritable:!1,isSigner:!0},{pubkey:e.seat,isWritable:!1,isSigner:!1},{pubkey:e.baseAccount,isWritable:!0,isSigner:!1},{pubkey:e.quoteAccount,isWritable:!0,isSigner:!1},{pubkey:e.baseVault,isWritable:!0,isSigner:!1},{pubkey:e.quoteVault,isWritable:!0,isSigner:!1},{pubkey:(s=e.tokenProgram)!=null?s:nr.TOKEN_PROGRAM_ID,isWritable:!1,isSigner:!1}];return new _e.TransactionInstruction({programId:r,keys:o,data:n})}var Xr=new $e.FixableBeetArgsStruct([[\"instructionDiscriminator\",$e.u8],[\"multipleOrderPacket\",Fe]],\"PlaceMultiplePostOnlyOrdersWithFreeFundsInstructionArgs\"),Qr= exports.placeMultiplePostOnlyOrdersWithFreeFundsInstructionDiscriminator =17;function Zo(e,t,r=new et.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){let[n]=Xr.serialize(l({instructionDiscriminator:Qr},t)),o=[{pubkey:e.phoenixProgram,isWritable:!1,isSigner:!1},{pubkey:e.logAuthority,isWritable:!1,isSigner:!1},{pubkey:e.market,isWritable:!0,isSigner:!1},{pubkey:e.trader,isWritable:!1,isSigner:!0},{pubkey:e.seat,isWritable:!1,isSigner:!1}];return new et.TransactionInstruction({programId:r,keys:o,data:n})}var Jr=new tt.BeetArgsStruct([[\"instructionDiscriminator\",tt.u8],[\"params\",Le]],\"ReduceOrderInstructionArgs\"),_r= exports.reduceOrderInstructionDiscriminator =4;function _o(e,t,r=new rt.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){var s;let[n]=Jr.serialize(l({instructionDiscriminator:_r},t)),o=[{pubkey:e.phoenixProgram,isWritable:!1,isSigner:!1},{pubkey:e.logAuthority,isWritable:!1,isSigner:!1},{pubkey:e.market,isWritable:!0,isSigner:!1},{pubkey:e.trader,isWritable:!1,isSigner:!0},{pubkey:e.baseAccount,isWritable:!0,isSigner:!1},{pubkey:e.quoteAccount,isWritable:!0,isSigner:!1},{pubkey:e.baseVault,isWritable:!0,isSigner:!1},{pubkey:e.quoteVault,isWritable:!0,isSigner:!1},{pubkey:(s=e.tokenProgram)!=null?s:or.TOKEN_PROGRAM_ID,isWritable:!1,isSigner:!1}];return new rt.TransactionInstruction({programId:r,keys:o,data:n})}var $r=new it.BeetArgsStruct([[\"instructionDiscriminator\",it.u8],[\"params\",Le]],\"ReduceOrderWithFreeFundsInstructionArgs\"),ei= exports.reduceOrderWithFreeFundsInstructionDiscriminator =5;function is(e,t,r=new nt.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){let[n]=$r.serialize(l({instructionDiscriminator:ei},t)),o=[{pubkey:e.phoenixProgram,isWritable:!1,isSigner:!1},{pubkey:e.logAuthority,isWritable:!1,isSigner:!1},{pubkey:e.market,isWritable:!0,isSigner:!1},{pubkey:e.trader,isWritable:!0,isSigner:!0}];return new nt.TransactionInstruction({programId:r,keys:o,data:n})}var ti=new ot.BeetArgsStruct([[\"instructionDiscriminator\",ot.u8]],\"RequestSeatInstructionArgs\"),ri= exports.requestSeatInstructionDiscriminator =14;function ss(e,t=new be.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){var a;let[r]=ti.serialize({instructionDiscriminator:ri}),n=[{pubkey:e.phoenixProgram,isWritable:!1,isSigner:!1},{pubkey:e.logAuthority,isWritable:!1,isSigner:!1},{pubkey:e.market,isWritable:!0,isSigner:!1},{pubkey:e.payer,isWritable:!0,isSigner:!0},{pubkey:e.seat,isWritable:!0,isSigner:!1},{pubkey:(a=e.systemProgram)!=null?a:be.SystemProgram.programId,isWritable:!1,isSigner:!1}];return new be.TransactionInstruction({programId:t,keys:n,data:r})}var ii=new st.FixableBeetArgsStruct([[\"instructionDiscriminator\",st.u8],[\"orderPacket\",q]],\"SwapInstructionArgs\"),ni= exports.swapInstructionDiscriminator =0;function ar(e,t,r=new at.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){var s;let[n]=ii.serialize(l({instructionDiscriminator:ni},t)),o=[{pubkey:e.phoenixProgram,isWritable:!1,isSigner:!1},{pubkey:e.logAuthority,isWritable:!1,isSigner:!1},{pubkey:e.market,isWritable:!0,isSigner:!1},{pubkey:e.trader,isWritable:!1,isSigner:!0},{pubkey:e.baseAccount,isWritable:!0,isSigner:!1},{pubkey:e.quoteAccount,isWritable:!0,isSigner:!1},{pubkey:e.baseVault,isWritable:!0,isSigner:!1},{pubkey:e.quoteVault,isWritable:!0,isSigner:!1},{pubkey:(s=e.tokenProgram)!=null?s:sr.TOKEN_PROGRAM_ID,isWritable:!1,isSigner:!1}];return new at.TransactionInstruction({programId:r,keys:o,data:n})}var oi=new ut.FixableBeetArgsStruct([[\"instructionDiscriminator\",ut.u8],[\"orderPacket\",q]],\"SwapWithFreeFundsInstructionArgs\"),si= exports.swapWithFreeFundsInstructionDiscriminator =1;function ps(e,t,r=new ct.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){let[n]=oi.serialize(l({instructionDiscriminator:si},t)),o=[{pubkey:e.phoenixProgram,isWritable:!1,isSigner:!1},{pubkey:e.logAuthority,isWritable:!1,isSigner:!1},{pubkey:e.market,isWritable:!0,isSigner:!1},{pubkey:e.trader,isWritable:!1,isSigner:!0},{pubkey:e.seat,isWritable:!1,isSigner:!1}];return new ct.TransactionInstruction({programId:r,keys:o,data:n})}var ai=new bt.FixableBeetArgsStruct([[\"instructionDiscriminator\",bt.u8],[\"withdrawFundsParams\",_t]],\"WithdrawFundsInstructionArgs\"),ui= exports.withdrawFundsInstructionDiscriminator =12;function Ps(e,t,r=new lt.PublicKey(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\")){var s;let[n]=ai.serialize(l({instructionDiscriminator:ui},t)),o=[{pubkey:e.phoenixProgram,isWritable:!1,isSigner:!1},{pubkey:e.logAuthority,isWritable:!1,isSigner:!1},{pubkey:e.market,isWritable:!0,isSigner:!1},{pubkey:e.trader,isWritable:!1,isSigner:!0},{pubkey:e.baseAccount,isWritable:!0,isSigner:!1},{pubkey:e.quoteAccount,isWritable:!0,isSigner:!1},{pubkey:e.baseVault,isWritable:!0,isSigner:!1},{pubkey:e.quoteVault,isWritable:!0,isSigner:!1},{pubkey:(s=e.tokenProgram)!=null?s:ur.TOKEN_PROGRAM_ID,isWritable:!1,isSigner:!1}];return new lt.TransactionInstruction({programId:r,keys:o,data:n})}var br=new y.BeetArgsStruct([[\"publicKey\",cr.publicKey]],\"PubkeyWrapper\"),Pe=new y.BeetArgsStruct([[\"priceInTicks\",y.u64],[\"orderSequenceNumber\",y.u64]],\"fIFOOrderId\"),xe=new y.BeetArgsStruct([[\"traderIndex\",y.u64],[\"numBaseLots\",y.u64],[\"padding\",y.uniformFixedSizeArray(y.u64,2)]],\"fIFORestingOrder\"),Kt=new y.BeetArgsStruct([[\"quoteLotsLocked\",y.u64],[\"quoteLotsFree\",y.u64],[\"baseLotsLocked\",y.u64],[\"baseLotsFree\",y.u64],[\"padding\",y.uniformFixedSizeArray(y.u64,8)]],\"TraderState\");var pr=10,bi= exports.DEFAULT_MATCH_LIMIT =2048,mt= exports.DEFAULT_SLIPPAGE_PERCENT =.005;function qt(e){let t=At.byteSize,[r]=At.deserialize(e.subarray(0,t)),n=8*32,o=e.subarray(t+n);t=0;let a=Number(o.readBigUInt64LE(t));t+=8;let s=Number(o.readBigUInt64LE(t));t+=8;let u=Number(o.readBigUInt64LE(t));t+=8;let i=Number(o.readBigUInt64LE(t));t+=8;let c=Number(o.readBigUInt64LE(t));t+=8;let m=Number(o.readBigUInt64LE(t));t+=8,o=o.subarray(t);let f=S(r.marketSizeParams.bidsSize),P=S(r.marketSizeParams.asksSize),k=S(r.marketSizeParams.numSeats),x=16+16+(16+Pe.byteSize+xe.byteSize)*f,O=16+16+(16+Pe.byteSize+xe.byteSize)*P,D=16+16+(16+32+Kt.byteSize)*k;t=0;let gt=o.subarray(t,t+x);t+=x;let Ae=o.subarray(t,t+O);t+=O;let xr=o.subarray(t,t+D),wr=Et(gt,Pe,xe),Sr=Et(Ae,Pe,xe),Ar=[...wr].sort((de,pe)=>Tt(K(pe[0].priceInTicks).sub(K(de[0].priceInTicks)))),hr=[...Sr].sort((de,pe)=>Tt(K(de[0].priceInTicks).sub(K(pe[0].priceInTicks)))),vt=new Map;for(let[de,pe]of Et(xr,br,Kt))vt.set(de.publicKey,pe);return{header:r,baseLotsPerBaseUnit:a,quoteLotsPerBaseUnitPerTick:s,sequenceNumber:u,takerFeeBps:i,collectedAdjustedQuoteLotFees:c,unclaimedAdjustedQuoteLotFees:m,bids:Ar,asks:hr,traders:vt}}function Et(e,t,r){let n=new Map,o=0,a=t.byteSize,s=r.byteSize,u=new Array;o+=16,o+=8;let i=e.readInt32LE(o);o+=4;let c=e.readInt32LE(o);o+=4;let m=new Array;for(let x=0;oi)throw new Error(\"Infinite loop detected\");for(let[x,[O,D]]of u.entries())f.has(x)||n.set(O,D);return n}function Ut(e,t=pr){let r=[],n=[];for(let[o,a]of e.bids){let s=K(o.priceInTicks),u=K(a.numBaseLots);if(r.length===0)r.push([s,u]);else{let i=r[r.length-1];if(!i)throw Error;if(s.eq(i[0]))i[1]=i[1].add(u);else{if(r.length===t)break;r.push([s,u])}}}for(let[o,a]of e.asks){let s=K(o.priceInTicks),u=K(a.numBaseLots);if(n.length===0)n.push([s,u]);else{let i=n[n.length-1];if(!i)throw Error;if(s.eq(i[0]))i[1]=i[1].add(u);else{if(n.length===t)break;n.push([s,u])}}}return{asks:n.slice(0,t),bids:r.slice(0,t)}}function dr(e,t,r,n){return[S(t)/n*e.quoteLotsPerBaseUnitPerTick*S(e.header.quoteLotSize),S(r)/e.baseLotsPerBaseUnit]}function Rt(e,t=pr){let r=Ut(e,t),n=v(10,S(e.header.quoteParams.decimals));return{bids:r.bids.map(([o,a])=>dr(e,o,a,n)),asks:r.asks.map(([o,a])=>dr(e,o,a,n))}}function yr(e){let t=e.bids,r=e.asks,o=Math.max(...t.map(s=>s[1]),...r.map(s=>s[1])).toString().length,a=(s,u,i)=>{let c=s.toFixed(3),m=u.toFixed(2).padStart(o,\" \");console.log(c+`\\x1B[3${i===\"green\"?2:1}m`+m+\"\\x1B[0m\")};console.log(\"\\x1B[30mAsks\\x1B[0m\");for(let[s,u]of r.reverse())a(s,u,\"red\");console.log(\"\\x1B[30mBids\\x1B[0m\");for(let[s,u]of t)a(s,u,\"green\")}function fr({marketAddress:e,marketData:t,trader:r,side:n,inAmount:o,slippage:a=mt,clientOrderId:s=0}){let u=_web3js.PublicKey.findProgramAddressSync([r.toBuffer(),_spltoken.TOKEN_PROGRAM_ID.toBuffer(),t.header.baseParams.mintKey.toBuffer()],_spltoken.ASSOCIATED_TOKEN_PROGRAM_ID)[0],i=_web3js.PublicKey.findProgramAddressSync([r.toBuffer(),_spltoken.TOKEN_PROGRAM_ID.toBuffer(),t.header.quoteParams.mintKey.toBuffer()],_spltoken.ASSOCIATED_TOKEN_PROGRAM_ID)[0],c=_web3js.PublicKey.findProgramAddressSync([Buffer.from(\"log\")],we)[0],m={phoenixProgram:we,logAuthority:c,market:e,trader:r,baseAccount:u,quoteAccount:i,quoteVault:t.header.quoteParams.vaultKey,baseVault:t.header.baseParams.vaultKey},f=li({marketData:t,side:n,inAmount:o,slippage:a,clientOrderId:s}),P=ar(m,{orderPacket:l({__kind:\"ImmediateOrCancel\"},f)});return new (0, _web3js.Transaction)().add(P)}function li({marketData:e,side:t,inAmount:r,slippage:n=mt,selfTradeBehavior:o=0,matchLimit:a=bi,clientOrderId:s=0,useOnlyDepositedFunds:u=!1}){let i=Dt({marketData:e,side:t,inAmount:r}),c=v(10,e.header.baseParams.decimals),m=v(10,e.header.quoteParams.decimals),f=1-n,P=0,k=0,x=0,O=0;return t===1?(P=r*c/parseFloat(e.header.baseLotSize.toString()),O=Math.ceil(i*m/parseFloat(e.header.quoteLotSize.toString())*f)):(x=r*m/parseFloat(e.header.quoteLotSize.toString()),k=Math.ceil(i*c/parseFloat(e.header.baseLotSize.toString())*f)),{side:t,priceInTicks:null,numBaseLots:P,minBaseLotsToFill:k,numQuoteLots:x,minQuoteLotsToFill:O,selfTradeBehavior:o,matchLimit:a,clientOrderId:s,useOnlyDepositedFunds:u}}function Dt({marketData:e,side:t,inAmount:r}){let n=S(e.header.marketSizeParams.bidsSize),o=S(e.header.marketSizeParams.asksSize),a=Rt(e,Math.max(n,o)),s=r*(1-e.takerFeeBps/1e4),u=0;if(t===0)for(let[i,c]of a.asks){let m=c*i;if(m>s){u+=s/i,s=0;break}else u+=c,s-=m}else for(let[i,c]of a.bids)if(c>s){u+=s*i,s=0;break}else u+=c*i,s-=c;return u}function dt(e){return e.includes(\"devnet\")?\"devnet\":e.includes(\"local\")||e.includes(\"127.0.0.1\")?\"localhost\":\"mainnet-beta\"}var _borsh = require('borsh');var _bs58 = require('bs58'); var _bs582 = _interopRequireDefault(_bs58);function pt(e){return new (0, _web3js.PublicKey)(e.readFixedArray(32))}function ya(e,t){return w(this,null,function*(){var s;let r=yield e.getParsedTransaction(t,\"confirmed\"),n=(s=r==null?void 0:r.meta)==null?void 0:s.innerInstructions;if(!n||!r||!r.slot)return{instructions:[]};let o=[];for(let u of n)for(let i of u.instructions){if(i.programId.toBase58()!=we.toBase58())continue;let c=_bs582.default.decode(i.data);c[0]==Lt&&o.push(c.slice(1))}let a=new Array;for(let u of o){let i=new (0, _borsh.BinaryReader)(Buffer.from(u));if(i.readU8()!=1)throw new Error(\"early Unexpected event\");let m=new Array,f=new Array,P={instruction:i.readU8(),sequenceNumber:i.readU64(),timestamp:i.readU64(),slot:i.readU64(),market:pt(i),signer:pt(i),totalEvents:i.readU16()};for(;i.offsetk.mint===s.header.baseParams.mintKey.toBase58()),c=u.find(k=>k.mint===s.header.quoteParams.mintKey.toBase58());if(i===void 0)throw new Error(`Base token ${s.header.baseParams.mintKey} not found in config`);if(c===void 0)throw new Error(`Quote token ${s.header.quoteParams.mintKey} not found in config`);let m=new Se({name:i.name,symbol:i.symbol,logoUri:i.logoUri,data:l({},s.header.baseParams)}),f=new Se({name:c.name,symbol:c.symbol,logoUri:c.logoUri,data:l({},s.header.quoteParams)});return new le({name:`${m.symbol}/${f.symbol}`,address:r,baseToken:m,quoteToken:f,data:s})})}refresh(t){return w(this,null,function*(){let r=yield t.getAccountInfo(this.address),n=Buffer.from(r.data),o=qt(n);return this.data=o,this})}getLadder(){return Ut(this.data)}getUiLadder(){return Rt(this.data)}printLadder(){yr(this.getUiLadder())}getSwapTransaction({trader:t,side:r,inAmount:n,slippage:o=mt,clientOrderId:a=0}){return fr({marketAddress:this.address,marketData:this.data,trader:t,side:r,inAmount:n,slippage:o,clientOrderId:a})}getExpectedOutAmount({side:t,inAmount:r}){return Dt({marketData:this.data,side:t,inAmount:r})}getPriceDecimalPlaces(){let t=Math.pow(10,this.data.header.quoteParams.decimals)/S(this.data.header.tickSizeInQuoteAtomsPerBaseUnit),r=0;for(;t%2===0;)t/=2,r+=1;let n=0;for(;t%5===0;)t/=5,n+=1;let o=Math.max(r,n);return Math.max(o,3)+Math.floor(Math.log10(Math.max(this.data.header.rawBaseUnitsPerBaseUnit,1)))}};var me=class{constructor(t){this.pubkey=t,this.tokenBalances={}}static create(o){return w(this,arguments,function*({connection:t,pubkey:r,tokens:n}){let a=new me(r);for(let s of n){let u=yield t.getTokenAccountsByOwner(r,{programId:_spltoken.TOKEN_PROGRAM_ID,mint:s.data.mintKey});if(u.value.length===0)continue;let i=u.value[0];a.tokenBalances[s.data.mintKey.toBase58()]=Pr(i.account.data,s.data.decimals)}return a})}refresh(t){return w(this,null,function*(){return yield Promise.all(Object.keys(this.tokenBalances).map(r=>w(this,null,function*(){let o=(yield t.getTokenAccountsByOwner(this.pubkey,{programId:_spltoken.TOKEN_PROGRAM_ID,mint:new (0, _web3js.PublicKey)(r)})).value[0];this.tokenBalances[r]=Pr(o.account.data,this.tokenBalances[r].decimals)}))),this})}};function Pr(e,t){let n=_spltoken.AccountLayout.decode(e).amount.toString();return{amount:n,decimals:t,uiAmount:parseInt(n)/v(10,t)}}var ft=class{constructor({connection:t,tokens:r,markets:n,trader:o}){this.connection=t,this.tokens=r,this.markets=n,this.trader=o}static create(t,r){return w(this,null,function*(){let n=dt(t.rpcEndpoint),o=[],a=[];return yield Promise.all(yt[n].markets.map(s=>w(this,null,function*(){let u=yield le.load({connection:t,address:new (0, _web3js.PublicKey)(s)});o.push(u);for(let i of[u.baseToken,u.quoteToken]){let c=i.data.mintKey.toBase58();a.find(m=>m.data.mintKey.toBase58()===c)||a.push(i)}}))),new ft({connection:t,tokens:a,markets:o,trader:r?yield me.create({connection:t,pubkey:r,tokens:a}):void 0})})}};var xi=\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\",we= exports.PROGRAM_ID =new (0, _web3js.PublicKey)(xi);exports.CancelAllOrdersStruct = Fr; exports.CancelAllOrdersWithFreeFundsStruct = Lr; exports.CancelMultipleOrdersByIdStruct = Wr; exports.CancelMultipleOrdersByIdWithFreeFundsStruct = qr; exports.CancelMultipleOrdersErrorError = re; exports.CancelUpToStruct = Rr; exports.CancelUpToWithFreeFundsStruct = vr; exports.Client = ft; exports.DEFAULT_LADDER_DEPTH = pr; exports.DEFAULT_MATCH_LIMIT = bi; exports.DEFAULT_SLIPPAGE_PERCENT = mt; exports.DepositFundsStruct = Mr; exports.EvictionErrorError = ae; exports.FailedToLoadMarketFromAccountError = N; exports.InvalidBaseAccountError = J; exports.InvalidBaseVaultError = X; exports.InvalidLotSizeError = Y; exports.InvalidMarketAuthorityError = M; exports.InvalidMarketParametersError = C; exports.InvalidMarketSignerError = V; exports.InvalidMintError = H; exports.InvalidQuoteAccountError = _; exports.InvalidQuoteVaultError = Q; exports.InvalidSeatStatusError = se; exports.InvalidStateTransitionError = j; exports.InvalidTickSizeError = Z; exports.LogStruct = zr; exports.Market = le; exports.MarketAlreadyInitializedError = z; exports.MarketStatus = Zt; exports.MarketUninitializedError = G; exports.NewOrderErrorError = ee; exports.PROGRAM_ADDRESS = xi; exports.PROGRAM_ID = we; exports.PhoenixMarketEvent = Ot; exports.PlaceLimitOrderStruct = Gr; exports.PlaceLimitOrderWithFreeFundsStruct = Vr; exports.PlaceMultiplePostOnlyOrdersStruct = Zr; exports.PlaceMultiplePostOnlyOrdersWithFreeFundsStruct = Xr; exports.ReduceOrderErrorError = te; exports.ReduceOrderStruct = Jr; exports.ReduceOrderWithFreeFundsStruct = $r; exports.RemoveEmptyOrdersErrorError = ne; exports.RequestSeatStruct = ti; exports.SeatApprovalStatus = Jt; exports.SelfTradeBehavior = ht; exports.Side = Pt; exports.SwapStruct = ii; exports.SwapWithFreeFundsStruct = oi; exports.Token = Se; exports.TooManyEventsError = $; exports.Trader = me; exports.TraderNotFoundError = oe; exports.WithdrawFundsErrorError = ie; exports.WithdrawFundsStruct = ai; exports.auditLogHeaderBeet = Ii; exports.cancelAllOrdersInstructionDiscriminator = Tr; exports.cancelAllOrdersWithFreeFundsInstructionDiscriminator = Kr; exports.cancelMultipleOrdersByIdInstructionDiscriminator = Er; exports.cancelMultipleOrdersByIdParamsBeet = Ei; exports.cancelMultipleOrdersByIdWithFreeFundsInstructionDiscriminator = Ur; exports.cancelOrderParamsBeet = he; exports.cancelUpToInstructionDiscriminator = Dr; exports.cancelUpToParamsBeet = Oe; exports.cancelUpToWithFreeFundsInstructionDiscriminator = Cr; exports.condensedOrderBeet = xt; exports.createCancelAllOrdersInstruction = no; exports.createCancelAllOrdersWithFreeFundsInstruction = so; exports.createCancelMultipleOrdersByIdInstruction = uo; exports.createCancelMultipleOrdersByIdWithFreeFundsInstruction = bo; exports.createCancelUpToInstruction = yo; exports.createCancelUpToWithFreeFundsInstruction = xo; exports.createDepositFundsInstruction = Io; exports.createLogInstruction = Fo; exports.createPlaceLimitOrderInstruction = Wo; exports.createPlaceLimitOrderWithFreeFundsInstruction = Do; exports.createPlaceMultiplePostOnlyOrdersInstruction = zo; exports.createPlaceMultiplePostOnlyOrdersWithFreeFundsInstruction = Zo; exports.createReduceOrderInstruction = _o; exports.createReduceOrderWithFreeFundsInstruction = is; exports.createRequestSeatInstruction = ss; exports.createSwapInstruction = ar; exports.createSwapWithFreeFundsInstruction = ps; exports.createWithdrawFundsInstruction = Ps; exports.depositFundsInstructionDiscriminator = Nr; exports.depositParamsBeet = zt; exports.deserializeMarketData = qt; exports.deserializeRedBlackTree = Et; exports.errorFromCode = Si; exports.errorFromName = Ai; exports.evictEventBeet = Mi; exports.feeEventBeet = zi; exports.fillEventBeet = ji; exports.fillSummaryEventBeet = Yi; exports.getClusterFromEndpoint = dt; exports.getEventsFromTransaction = ya; exports.getMarketExpectedOutAmount = Dt; exports.getMarketLadder = Ut; exports.getMarketSwapOrderPacket = li; exports.getMarketSwapTransaction = fr; exports.getMarketUiLadder = Rt; exports.isOrderPacketImmediateOrCancel = pn; exports.isOrderPacketLimit = dn; exports.isOrderPacketPostOnly = mn; exports.logInstructionDiscriminator = Lt; exports.marketHeaderBeet = At; exports.marketSizeParamsBeet = Vt; exports.marketStatusBeet = tn; exports.multipleOrderPacketBeet = Fe; exports.orderPacketBeet = q; exports.phoenixMarketEventBeet = fn; exports.placeEventBeet = kn; exports.placeLimitOrderInstructionDiscriminator = jr; exports.placeLimitOrderWithFreeFundsInstructionDiscriminator = Yr; exports.placeMultiplePostOnlyOrdersInstructionDiscriminator = Hr; exports.placeMultiplePostOnlyOrdersWithFreeFundsInstructionDiscriminator = Qr; exports.printUiLadder = yr; exports.readPublicKey = pt; exports.reduceEventBeet = xn; exports.reduceOrderInstructionDiscriminator = _r; exports.reduceOrderParamsBeet = Le; exports.reduceOrderWithFreeFundsInstructionDiscriminator = ei; exports.requestSeatInstructionDiscriminator = ri; exports.seatApprovalStatusBeet = Bn; exports.seatBeet = In; exports.selfTradeBehaviorBeet = It; exports.sideBeet = W; exports.sign = Tt; exports.swapInstructionDiscriminator = ni; exports.swapWithFreeFundsInstructionDiscriminator = si; exports.toBN = K; exports.toNum = S; exports.tokenParamsBeet = St; exports.withdrawFundsInstructionDiscriminator = ui; exports.withdrawParamsBeet = _t;\n","import * as BufferLayout from \"@solana/buffer-layout\";\nexport const RequestUnitsLayout = BufferLayout.struct([\n BufferLayout.u8(\"instruction\"),\n BufferLayout.u32(\"units\"),\n BufferLayout.u32(\"additionalFee\"),\n]);\nexport const RequestHeapFrameLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\"), BufferLayout.u32(\"bytes\")]);\n//# sourceMappingURL=layouts.js.map","import { PublicKey } from \"@solana/web3.js\";\n/**\n * The compute budget program.\n * Source: https://github.com/solana-labs/solana/blob/master/program-runtime/src/compute_budget.rs#L101\n */\nexport const COMPUTE_BUDGET_PROGRAM = new PublicKey(\"ComputeBudget111111111111111111111111111111\");\nexport * from \"./instructions.js\";\n//# sourceMappingURL=index.js.map","import { PublicKey, TransactionInstruction } from \"@solana/web3.js\";\n/**\n * ID of the memo program.\n */\nexport const MEMO_PROGRAM_ID = new PublicKey(\"MemoSq4gqABAXKb96qnH8TysNcWxMyWCqXgDLGmfcHr\");\n/**\n * Creates a memo program instruction.\n *\n * More info: https://spl.solana.com/memo\n *\n * @param text Text of the memo.\n * @param signers Optional signers to validate.\n * @returns\n */\nexport const createMemoInstruction = (text, signers = []) => {\n return new TransactionInstruction({\n programId: MEMO_PROGRAM_ID,\n keys: signers.map((s) => ({\n pubkey: s,\n isSigner: true,\n isWritable: false,\n })),\n data: Buffer.from(text, \"utf8\"),\n });\n};\n//# sourceMappingURL=instructions.js.map","import { Keypair, SystemProgram } from \"@solana/web3.js\";\nimport { TransactionEnvelope } from \"../index.js\";\n/**\n * Takes in a simulation result of a transaction and prints it in a cool table.\n * ```\n * ┌─────┬───┬───┬───┬───────────┬──────┬─────┬──────┬───┐\n * │index│iso│mar│cum│ programId │quota │used │ left │CPI│\n * ├─────┼───┼───┼───┼───────────┼──────┼─────┼──────┼───┤\n * │ 0 │298│281│464│'ATokenG..'│200000│24270│175730│ 1 │\n * │ 1 │298│ 74│538│'ATokenG..'│178730│21270│157460│ 1 │\n * │ 2 │298│ 74│612│'ATokenG..'│157460│27277│130183│ 1 │\n * │ 3 │298│ 42│686│'ATokenG..'│130183│21270│108913│ 1 │\n * │ 4 │338│265│951│'qExampL..'│108913│76289│ 32624│ 3 │\n * └─────┴───┴───┴───┴───────────┴──────┴─────┴──────┴───┘\n * ```\n *\n * - **index**: the array index of the instruction within the transaction\n * - **iso**: the isolated size of the instruction (marginal cost of only the instruction)\n * - **mar**: the marginal size cost of the instruction (when added to previous)\n * - **cum**: the cumulative size of the instructions up until that instruction\n * - **quota/used/left**: [BPF instruction compute unit info](https://docs.solana.com/developing/programming-model/runtime)\n * - **CPI**: [the maximum depth of CPI](https://docs.solana.com/developing/programming-model/calling-between-programs) (current limit in Solana is 4)\n *\n * Safe for browser usage. Can be conveniently run with txEnvelope.simulateTable()\n */\nexport const printTXTable = (tx, transactionLogs, message) => {\n if (message && message !== \"\") {\n console.log(estimateTransactionSize(tx), message);\n }\n else {\n console.log(\"Transaction size:\", estimateTransactionSize(tx));\n }\n const computeUnitLogStack = [];\n const cpiLogStack = [];\n let currentIndex = -1;\n transactionLogs.forEach((line) => {\n if (line.includes(\" invoke [1]\")) {\n currentIndex++;\n cpiLogStack[currentIndex] = 0;\n }\n const cpiMatch = line.match(/ invoke \\[(\\d)\\]/);\n if (cpiMatch && cpiMatch[1]) {\n const cur = cpiLogStack[currentIndex];\n cpiLogStack[currentIndex] =\n cur === undefined\n ? Number(cpiMatch[1]) - 1\n : Math.max(Number(cpiMatch[1]) - 1, cur);\n }\n const computeMatch = line.match(/consumed \\d* of \\d* compute units/);\n if (computeMatch && computeMatch[0]) {\n computeUnitLogStack[currentIndex] = computeMatch[0];\n }\n });\n const instructionTable = [];\n tx.instructions.forEach((instruction, i) => {\n const computeUnitLog = computeUnitLogStack[i];\n const computeUnitMatch = computeUnitLog === null || computeUnitLog === void 0 ? void 0 : computeUnitLog.match(/consumed (\\d*) of (\\d*)/);\n const [consumed, quota] = (computeUnitMatch === null || computeUnitMatch === void 0 ? void 0 : computeUnitMatch.slice(1, 3).map((num) => parseInt(num, 10))) || [undefined, undefined];\n instructionTable.push({\n iso: isolatedInstructionSize(tx.provider, instruction),\n mar: marginalInstructionSize(tx.provider, tx.instructions.slice(0, i), instruction),\n cum: instructionsSize(tx.provider, tx.instructions.slice(0, i + 1)),\n programId: instruction.programId.toBase58(),\n quota: quota ? quota : i === 0 ? 200000 : undefined,\n used: consumed,\n left: quota && consumed ? quota - consumed : undefined,\n CPI: cpiLogStack[i],\n });\n });\n console.table(instructionTable);\n};\nexport class TXSizeEstimationError extends Error {\n constructor(underlyingError) {\n super(`could not estimate transaction size`);\n this.underlyingError = underlyingError;\n this.name = \"TXSizeEstimationError\";\n }\n}\nexport class EstimatedTXTooBigError extends Error {\n constructor(tx, size) {\n super(`Transaction too large`);\n this.tx = tx;\n this.size = size;\n this.name = \"EstimatedTXTooBigError\";\n }\n}\n/**\n * Builds a transaction and estimates the size in bytes. This number is primrily\n * to be used for checking to see if a transaction is too big and instructions\n * need to be split. It may not be 100% accurate.\n *\n * This is used in expectTXTable and is useful for increasing efficiency in\n * dapps that build large transactions.\n *\n * The max transaction size of a v1 Transaction in Solana is 1232 bytes.\n * For info about Transaction v2: https://docs.solana.com/proposals/transactions-v2\n *\n * Returns 8888 if the transaction was too big.\n * Returns 9999 if the transaction was unable to be built.\n */\nexport const estimateTransactionSize = (txEnvelope) => {\n const result = txEnvelope.estimateSize();\n if (\"size\" in result) {\n return result.size;\n }\n if (result.error instanceof TXSizeEstimationError) {\n console.error(\"Unknown error estimating transaction size\", result.error.underlyingError);\n return 9999;\n }\n return 8888;\n};\n/**\n * A dummy instruction that is probably tiny and has overlap with most instructions\n */\nconst simpleInstruction = () => {\n const fs = getFakeSigner();\n return SystemProgram.transfer({\n fromPubkey: fs.publicKey,\n toPubkey: fs.publicKey,\n lamports: 1,\n });\n};\nconst isolatedInstructionSize = (randomProvider, instruction) => {\n return marginalInstructionSize(randomProvider, [simpleInstruction()], instruction);\n};\nconst marginalInstructionSize = (randomProvider, previousInstructions, instruction) => {\n const previousTxSize = instructionsSize(randomProvider, previousInstructions.length ? previousInstructions : [simpleInstruction()]);\n const biggerTxSize = instructionsSize(randomProvider, [\n ...previousInstructions,\n instruction,\n ]);\n return biggerTxSize - previousTxSize;\n};\nconst instructionsSize = (randomProvider, instructions) => {\n const instructionedTx = new TransactionEnvelope(randomProvider, [\n ...instructions,\n ]);\n return estimateTransactionSize(instructionedTx);\n};\nlet fakeSigner = undefined;\nconst getFakeSigner = () => {\n if (!fakeSigner) {\n fakeSigner = Keypair.generate();\n }\n return fakeSigner;\n};\n//# sourceMappingURL=printTXTable.js.map","import { PublicKey } from \"@solana/web3.js\";\nconst pubkeyCache = {};\n/**\n * PublicKey with a cached base58 value.\n */\nexport class CachedPublicKey extends PublicKey {\n constructor(value) {\n super(value);\n this._base58 = super.toBase58();\n }\n equals(other) {\n if (other instanceof CachedPublicKey) {\n return other._base58 === this._base58;\n }\n return super.equals(other);\n }\n toString() {\n return this._base58;\n }\n toBase58() {\n return this._base58;\n }\n}\nconst getOrCreatePublicKey = (pk) => {\n const cached = pubkeyCache[pk];\n if (!cached) {\n return (pubkeyCache[pk] = new CachedPublicKey(pk));\n }\n return cached;\n};\n/**\n * Gets or parses a PublicKey.\n * @param pk\n * @returns\n */\nexport const getPublicKey = (pk) => {\n if (typeof pk === \"string\") {\n return getOrCreatePublicKey(pk);\n }\n else if (pk instanceof PublicKey) {\n return getOrCreatePublicKey(pk.toString());\n }\n else {\n return getOrCreatePublicKey(new PublicKey(pk).toString());\n }\n};\nconst gpaCache = {};\n/**\n * Concatenates seeds to generate a unique number array.\n * @param seeds\n * @returns\n */\nconst concatSeeds = (seeds) => {\n return Uint8Array.from(seeds.reduce((acc, seed) => [...acc, ...seed], []));\n};\n/**\n * Gets a cached program address for the given seeds.\n * @param seeds\n * @param programId\n * @returns\n */\nexport const getProgramAddress = (seeds, programId) => {\n const normalizedSeeds = concatSeeds(seeds);\n const cacheKey = `${normalizedSeeds.toString()}_${programId.toString()}`;\n const cached = gpaCache[cacheKey];\n if (cached) {\n return cached;\n }\n const [key] = PublicKey.findProgramAddressSync(seeds, programId);\n return (gpaCache[cacheKey] = getPublicKey(key));\n};\n//# sourceMappingURL=pubkeyCache.js.map","export var ExplorerType;\n(function (ExplorerType) {\n ExplorerType[\"SOLANA_EXPLORER\"] = \"solana-explorer\";\n ExplorerType[\"SOLSCAN\"] = \"solscan\";\n})(ExplorerType || (ExplorerType = {}));\nexport function generateTXLink(signature, cluster = \"mainnet-beta\", explorerType = ExplorerType.SOLANA_EXPLORER) {\n switch (explorerType) {\n case ExplorerType.SOLANA_EXPLORER:\n return `https://explorer.solana.com/tx/${signature}?cluster=${cluster}`;\n case ExplorerType.SOLSCAN:\n return `https://solscan.io/tx/${signature}?cluster=${cluster}`;\n default:\n throw new Error(`Explorer type ${explorerType} is not supported.`);\n }\n}\n//# sourceMappingURL=txLink.js.map","import { PublicKey, Transaction } from \"@solana/web3.js\";\nimport { default as invariant } from \"tiny-invariant\";\nimport { requestComputeUnitsInstruction, requestHeapFrameInstruction, } from \"../computeBudget/index.js\";\nimport { createMemoInstruction, EstimatedTXTooBigError, printTXTable, suppressConsoleError, TXSizeEstimationError, } from \"../utils/index.js\";\nimport { calculateTxSizeUnsafe } from \"./txSizer.js\";\nimport { generateInspectLinkFromBase64, RECENT_BLOCKHASH_STUB, } from \"./utils.js\";\nexport const PACKET_DATA_SIZE = 1280 - 40 - 8;\nconst ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey(\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\");\n/**\n * Filters the required signers for a list of instructions.\n * @param ixs\n * @returns\n */\nconst filterRequiredSigners = (ixs, signers) => {\n // filter out the signers required for the transaction\n const requiredSigners = ixs.flatMap((ix) => ix.keys.filter((k) => k.isSigner).map((k) => k.pubkey));\n return signers.filter((s) => requiredSigners.find((rs) => rs.equals(s.publicKey)));\n};\n/**\n * Contains a Transaction that is being built.\n */\nexport class TransactionEnvelope {\n constructor(\n /**\n * Provider that will be sending the transaction as the fee payer.\n */\n provider, \n /**\n * Instructions associated with the transaction.\n */\n instructions, \n /**\n * Optional signers of the transaction.\n */\n signers = []) {\n this.provider = provider;\n this.instructions = instructions;\n this.signers = signers;\n }\n /**\n * Prepends the given {@link TransactionInstruction}s to the {@link TransactionEnvelope}.\n * @param instructions The instructions to prepend.\n * @returns\n */\n prepend(...instructions) {\n this.instructions.unshift(...instructions.filter((ix) => !!ix));\n return this;\n }\n /**\n * Appends the given {@link TransactionInstruction}s to the {@link TransactionEnvelope}.\n * @param instructions The instructions to append.\n * @returns\n */\n append(...instructions) {\n this.instructions.push(...instructions.filter((ix) => !!ix));\n return this;\n }\n /**\n * A the given {@link TransactionInstruction}s to the {@link TransactionEnvelope}.\n * @param instructions The instructions to add.\n * @deprecated Use {@link #append} instead.\n * @returns\n */\n addInstructions(...instructions) {\n return this.append(...instructions);\n }\n /**\n * Adds the given {@link Signer}s to the {@link TransactionEnvelope}.\n * @param signers The signers to add.\n * @returns\n */\n addSigners(...signers) {\n this.signers.push(...signers);\n return this;\n }\n /**\n * Builds a transaction from this envelope.\n * @param feePayer Optional override for the fee payer.\n */\n build(feePayer = this.provider.wallet.publicKey) {\n const tx = new Transaction().add(...this.instructions);\n tx.feePayer = feePayer;\n return tx;\n }\n /**\n * Builds a transaction and estimates the size in bytes.\n * Does not check to see if the transaction is too big.\n *\n * @returns Byte count\n */\n estimateSizeUnsafe() {\n const builtTx = this.build();\n // dummy blockhash that is required for building the transaction\n builtTx.recentBlockhash = \"MaryHadALittLeLambZNdhAUTrsLE1ydg6rmtvFEpKT\";\n return calculateTxSizeUnsafe(builtTx);\n }\n /**\n * Builds a transaction and estimates the size in bytes. This number is primrily\n * to be used for checking to see if a transaction is too big and instructions\n * need to be split. It may not be 100% accurate.\n *\n * This is used in expectTXTable and is useful for increasing efficiency in\n * dapps that build large transactions.\n *\n * The max transaction size of a v1 Transaction in Solana is 1232 bytes.\n * For info about Transaction v2: https://docs.solana.com/proposals/transactions-v2\n */\n estimateSize() {\n return suppressConsoleError(() => {\n try {\n const builtTx = this.build();\n // dummy blockhash that is required for building the transaction\n builtTx.recentBlockhash = \"MaryHadALittLeLambZNdhAUTrsLE1ydg6rmtvFEpKT\";\n const size = calculateTxSizeUnsafe(builtTx);\n if (size > PACKET_DATA_SIZE) {\n return { error: new EstimatedTXTooBigError(builtTx, size) };\n }\n return { size };\n }\n catch (e) {\n return { error: new TXSizeEstimationError(e) };\n }\n });\n }\n /**\n * Partition a large {@link TransactionEnvelope} into smaller, valid {@link Transaction}s.\n * This relies on this envelope already having the correct number of signers.\n *\n * @param feePayer Optional fee payer override.\n * @returns A list of {@link Transaction}s.\n */\n buildPartition(feePayer = this.provider.wallet.publicKey) {\n const partition = this.partition();\n return partition.map((env) => env.build(feePayer));\n }\n /**\n * Partition a large {@link TransactionEnvelope} into smaller, valid transaction envelopes which can be built.\n * This relies on this envelope already having the correct number of signers.\n *\n * @returns\n */\n partition() {\n const estimation = this.estimateSize();\n if (\"size\" in estimation) {\n return [this];\n }\n // empty partition should have no envelopes\n if (this.instructions.length === 0) {\n return [];\n }\n let lastTXEnv = new TransactionEnvelope(this.provider, this.instructions.slice(0, 1), this._filterRequiredSigners(this.instructions.slice(0, 1)));\n let lastEstimation = lastTXEnv.estimateSizeUnsafe();\n const txs = [];\n this.instructions.slice(1).forEach((ix, i) => {\n if (lastEstimation > PACKET_DATA_SIZE) {\n throw new Error(`cannot construct a valid partition: instruction ${i} is too large (${lastEstimation} > ${PACKET_DATA_SIZE})`);\n }\n const nextIXs = [...lastTXEnv.instructions, ix];\n const nextSigners = this._filterRequiredSigners(nextIXs);\n const nextTXEnv = new TransactionEnvelope(this.provider, nextIXs, nextSigners);\n const nextEstimation = nextTXEnv.estimateSizeUnsafe();\n // move to next tx envelope if too big\n if (nextEstimation > PACKET_DATA_SIZE) {\n txs.push(lastTXEnv);\n const nextIXs = [ix];\n lastTXEnv = new TransactionEnvelope(this.provider, nextIXs, this._filterRequiredSigners(nextIXs));\n lastEstimation = lastTXEnv.estimateSizeUnsafe();\n }\n else {\n lastTXEnv = nextTXEnv;\n lastEstimation = nextEstimation;\n }\n });\n txs.push(lastTXEnv);\n return txs;\n }\n /**\n * Filters the required signers for a list of instructions.\n * @param ixs\n * @returns\n */\n _filterRequiredSigners(ixs) {\n return filterRequiredSigners(ixs, this.signers);\n }\n /**\n * Generates a link for inspecting the contents of this {@link TransactionEnvelope}.\n *\n * @returns URL\n */\n generateInspectLink(cluster = \"mainnet-beta\") {\n const t = this.build();\n t.recentBlockhash = RECENT_BLOCKHASH_STUB;\n const str = t.serializeMessage().toString(\"base64\");\n return generateInspectLinkFromBase64(cluster, str);\n }\n /**\n * Simulates the transaction.\n * @param opts\n * @returns\n */\n simulate(opts = {\n verifySigners: true,\n }) {\n return this.provider.simulate(this.build(), opts.verifySigners ? this.signers : undefined, opts);\n }\n /**\n * Simulates the transaction, without validating signers.\n *\n * @deprecated Use {@link TXEnvelope#simulate} instead.\n * @param opts\n * @returns\n */\n simulateUnchecked(opts) {\n return this.simulate({ ...opts, verifySigners: false });\n }\n /**\n * Simulates the transaction and prints a fancy table in the console.\n * ```\n * ┌─────┬───┬───┬───┬───────────┬──────┬─────┬──────┬───┐\n * │index│iso│mar│cum│ programId │quota │used │ left │CPI│\n * ├─────┼───┼───┼───┼───────────┼──────┼─────┼──────┼───┤\n * │ 0 │298│281│464│'ATokenG..'│200000│24270│175730│ 1 │\n * │ 1 │298│ 74│538│'ATokenG..'│178730│21270│157460│ 1 │\n * │ 2 │298│ 74│612│'ATokenG..'│157460│27277│130183│ 1 │\n * │ 3 │298│ 42│686│'ATokenG..'│130183│21270│108913│ 1 │\n * │ 4 │338│265│951│'qExampL..'│108913│76289│ 32624│ 3 │\n * └─────┴───┴───┴───┴───────────┴──────┴─────┴──────┴───┘\n * ```\n *\n * - **index**: the array index of the instruction within the transaction\n * - **iso**: the isolated size of the instruction (marginal cost of only the instruction)\n * - **mar**: the marginal size cost of the instruction (when added to previous)\n * - **cum**: the cumulative size of the instructions up until that instruction\n * - **quota/used/left**: [BPF instruction compute unit info](https://docs.solana.com/developing/programming-model/runtime)\n * - **CPI**: [the maximum depth of CPI](https://docs.solana.com/developing/programming-model/calling-between-programs) (current limit in Solana is 4)\n *\n * @param opts\n * @returns\n */\n simulateTable(opts) {\n return this.simulate(opts).then((simulation) => {\n var _a;\n if ((_a = simulation === null || simulation === void 0 ? void 0 : simulation.value) === null || _a === void 0 ? void 0 : _a.logs) {\n printTXTable(this, simulation.value.logs, \"\");\n }\n return simulation;\n });\n }\n /**\n * Sends the transaction without confirming it.\n * @param opts\n * @returns\n */\n async send(opts) {\n const signed = await this.provider.signer.sign(this.build(), this.signers, opts);\n return this.provider.broadcaster.broadcast(signed, opts);\n }\n /**\n * Sends the transaction and waits for confirmation.\n * @param opts\n */\n async confirm(opts) {\n return (await this.send(opts)).wait();\n }\n /**\n * Combines the instructions/signers of the other envelope to create one large transaction.\n */\n combine(other) {\n return new TransactionEnvelope(this.provider, [...this.instructions, ...other.instructions], [...this.signers, ...other.signers]);\n }\n /**\n * Get a list of all writable accounts, deduped\n * All of these accounts likely need to be updated after the transaction is confirmed.\n */\n get writableKeys() {\n return [\n ...new Set([\n ...this.instructions\n .map((inst) => inst.keys.filter((key) => key.isWritable).map((k) => k.pubkey))\n .reduce((acc, el) => acc.concat(el)),\n ]).values(),\n ];\n }\n /**\n * Gets the instructions in a format that can be serialized easily to JSON.\n */\n get instructionsJSON() {\n return this.instructions.map((instruction) => ({\n programId: instruction.programId.toString(),\n keys: instruction.keys.map((m) => ({\n isSigner: m.isSigner,\n isWritable: m.isWritable,\n publicKey: m.pubkey.toString(),\n })),\n data: instruction.data.toString(\"base64\"),\n }));\n }\n /**\n * Returns a string representation of the {@link TransactionEnvelope}.\n */\n get debugStr() {\n return [\n \"=> Instructions\",\n this.instructions\n .map((ser, i) => {\n return [\n `Instruction ${i}: ${ser.programId.toString()}`,\n ...ser.keys.map((k, i) => ` [${i}] ${k.pubkey.toString()} ${k.isWritable ? \"(mut)\" : \"\"} ${k.isSigner ? \"(signer)\" : \"\"}`),\n ` Data (base64): ${ser.data.toString(\"base64\")}`,\n ].join(\"\\n\");\n })\n .join(\"\\n\"),\n \"=> Signers\",\n this.signers.map((sg) => sg.publicKey.toString()).join(\"\\n\"),\n ].join(\"\\n\");\n }\n /**\n * Creates a new {@link TransactionEnvelope}.\n * @param provider\n * @param instructions\n * @param signers\n * @returns\n */\n static create(provider, instructions, signers = []) {\n const ixs = instructions.filter((ix) => !!ix);\n return new TransactionEnvelope(provider, ixs, signers);\n }\n /**\n * Add a memo to each transaction envelope specified.\n */\n static addMemos(memo, ...txs) {\n return txs.map((tx) => tx.addMemo(memo));\n }\n /**\n * Combines multiple TransactionEnvelopes into one.\n */\n static combineAll(...txs) {\n return txs.reduce((acc, tx) => acc.combine(tx));\n }\n /**\n * Takes a list of {@link TransactionEnvelope}s and combines them if they\n * are able to be combined under the maximum TX size limit.\n *\n * @param txs\n * @returns\n */\n static pack(...txs) {\n if (txs.length === 0) {\n return [];\n }\n const [first, ...rest] = txs;\n invariant(first);\n const { provider } = first;\n let lastTXEnv = first;\n let lastEstimation = lastTXEnv.estimateSizeUnsafe();\n const partition = [];\n rest.forEach((addedTX, i) => {\n if (lastEstimation > PACKET_DATA_SIZE) {\n throw new Error(`cannot construct a valid partition: instruction ${i} is too large (${lastEstimation} > ${PACKET_DATA_SIZE})`);\n }\n const nextIXs = [...lastTXEnv.instructions, ...addedTX.instructions];\n const nextSigners = filterRequiredSigners(nextIXs, [\n ...lastTXEnv.signers,\n ...addedTX.signers,\n ]);\n const nextTXEnv = new TransactionEnvelope(provider, nextIXs, nextSigners);\n const nextEstimation = nextTXEnv.estimateSizeUnsafe();\n // move to next tx envelope if too big\n if (nextEstimation > PACKET_DATA_SIZE) {\n partition.push(lastTXEnv);\n lastTXEnv = addedTX;\n lastEstimation = lastTXEnv.estimateSizeUnsafe();\n }\n else {\n lastTXEnv = nextTXEnv;\n lastEstimation = nextEstimation;\n }\n });\n partition.push(lastTXEnv);\n return partition;\n }\n /**\n * Combines multiple async TransactionEnvelopes into one, serially.\n */\n static async combineAllAsync(firstTX, ...txs) {\n let acc = await firstTX;\n for (const tx of txs) {\n acc = acc.combine(await tx);\n }\n return acc;\n }\n /**\n * Sends all of the envelopes.\n * @returns Pending transactions\n */\n static async sendAll(txs, opts) {\n const firstTX = txs[0];\n if (!firstTX) {\n return [];\n }\n const provider = firstTX.provider;\n return await provider.sendAll(txs.map((tx) => ({ tx: tx.build(), signers: tx.signers })), opts);\n }\n /**\n * Deduplicate ATA instructions inside the transaction envelope.\n */\n dedupeATAIXs() {\n if (this.instructions.length === 0) {\n return this;\n }\n const seenATAs = new Set();\n const instructions = this.instructions\n .map((ix) => {\n var _a;\n const programId = ix.programId;\n if (programId.equals(ASSOCIATED_TOKEN_PROGRAM_ID)) {\n const ataKey = (_a = ix.keys[1]) === null || _a === void 0 ? void 0 : _a.pubkey.toString();\n if (!ataKey) {\n throw new Error(\"ATA key does not exist on ATA instruction\");\n }\n if (seenATAs.has(ataKey)) {\n return null;\n }\n seenATAs.add(ataKey);\n }\n return ix;\n })\n .filter((ix) => !!ix);\n return new TransactionEnvelope(this.provider, instructions, this.signers);\n }\n /**\n * Split out ATA instructions to a separate transaction envelope.\n */\n splitATAIXs() {\n const ataIXs = new TransactionEnvelope(this.provider, [], this.signers);\n const newTx = new TransactionEnvelope(this.provider, [], this.signers);\n for (const ix of this.instructions) {\n if (ix.programId.equals(ASSOCIATED_TOKEN_PROGRAM_ID)) {\n ataIXs.instructions.push(ix);\n }\n else {\n newTx.instructions.push(ix);\n }\n }\n return {\n ataIXs: ataIXs.dedupeATAIXs(),\n tx: newTx,\n };\n }\n /**\n * Get an instruction from the transaction envelope by index.\n */\n getInstruction(index) {\n const ix = this.instructions[index];\n if (!ix) {\n throw new Error(`No instruction found at index ${index}`);\n }\n return ix;\n }\n /**\n * Attach a memo instruction to this transaction.\n */\n addMemo(memo) {\n this.instructions.push(createMemoInstruction(memo));\n return this;\n }\n /**\n * Request for additional compute units before processing this transaction.\n */\n addAdditionalComputeBudget(units, additionalFee) {\n this.instructions.unshift(requestComputeUnitsInstruction(units, additionalFee));\n return this;\n }\n /**\n * Request a specific transaction-wide program heap region size in bytes.\n */\n addAdditionalHeapFrame(bytes) {\n this.instructions.unshift(requestHeapFrameInstruction(bytes));\n return this;\n }\n}\n//# sourceMappingURL=TransactionEnvelope.js.map","import { SystemProgram } from \"@solana/web3.js\";\nimport { default as invariant } from \"tiny-invariant\";\nimport { SingleConnectionBroadcaster } from \"./broadcaster/index.js\";\nimport { PendingTransaction, SignerWallet, TieredBroadcaster, } from \"./index.js\";\nimport { TransactionEnvelope } from \"./transaction/TransactionEnvelope.js\";\nexport const DEFAULT_PROVIDER_OPTIONS = {\n preflightCommitment: \"confirmed\",\n commitment: \"confirmed\",\n};\nexport const DEFAULT_READONLY_PUBLIC_KEY = SystemProgram.programId;\n/**\n * Provider that can only read.\n */\nexport class SolanaReadonlyProvider {\n /**\n * @param connection The cluster connection where the program is deployed.\n * @param opts Transaction confirmation options to use by default.\n * @param publicKey Optional public key of read-only wallet.\n */\n constructor(connection, opts = DEFAULT_PROVIDER_OPTIONS, publicKey = DEFAULT_READONLY_PUBLIC_KEY) {\n this.connection = connection;\n this.opts = opts;\n this.publicKey = publicKey;\n this.wallet = {\n signTransaction: Promise.resolve.bind(Promise),\n signAllTransactions: Promise.resolve.bind(Promise),\n publicKey: DEFAULT_READONLY_PUBLIC_KEY,\n };\n this.wallet = {\n ...this.wallet,\n publicKey,\n };\n }\n /**\n * Gets\n * @param accountId\n * @returns\n */\n async getAccountInfo(accountId) {\n const accountInfo = await this.connection.getAccountInfo(accountId, this.opts.commitment);\n if (!accountInfo) {\n return null;\n }\n return {\n accountId,\n accountInfo,\n };\n }\n}\nexport const doSignAndBroadcastTransaction = async (wallet, transaction, broadcaster, opts) => {\n const tx = await wallet.signTransaction(transaction);\n if ((opts === null || opts === void 0 ? void 0 : opts.signers) && opts.signers.length > 0) {\n tx.sign(...opts.signers);\n }\n return await broadcaster.broadcast(tx, opts);\n};\n/**\n * Signs Solana transactions.\n */\nexport class SolanaTransactionSigner {\n constructor(wallet, broadcaster, preflightCommitment = \"confirmed\") {\n this.wallet = wallet;\n this.broadcaster = broadcaster;\n this.preflightCommitment = preflightCommitment;\n }\n get publicKey() {\n return this.wallet.publicKey;\n }\n async signAndBroadcastTransaction(transaction, opts) {\n return await doSignAndBroadcastTransaction(this.wallet, transaction, this.broadcaster, opts);\n }\n /**\n * Sends the given transaction, paid for and signed by the provider's wallet.\n *\n * @param tx The transaction to send.\n * @param signers The set of signers in addition to the provdier wallet that\n * will sign the transaction.\n * @param opts Transaction confirmation options.\n */\n async sign(tx, signers = [], opts = {\n preflightCommitment: this.preflightCommitment,\n }) {\n const { blockhash, lastValidBlockHeight } = await this.broadcaster.getLatestBlockhash(opts.preflightCommitment);\n tx.feePayer = this.wallet.publicKey;\n tx.lastValidBlockHeight = lastValidBlockHeight;\n tx.recentBlockhash = blockhash;\n await this.wallet.signTransaction(tx);\n signers\n .filter((s) => s !== undefined)\n .forEach((kp) => {\n tx.partialSign(kp);\n });\n return tx;\n }\n /**\n * Similar to `send`, but for an array of transactions and signers.\n */\n async signAll(reqs, opts = {\n preflightCommitment: this.preflightCommitment,\n }) {\n const { blockhash, lastValidBlockHeight } = await this.broadcaster.getLatestBlockhash(opts.preflightCommitment);\n const txs = reqs.map(({ tx, signers = [] }) => {\n tx.feePayer = this.wallet.publicKey;\n tx.lastValidBlockHeight = lastValidBlockHeight;\n tx.recentBlockhash = blockhash;\n signers\n .filter((s) => s !== undefined)\n .forEach((kp) => {\n tx.partialSign(kp);\n });\n return tx;\n });\n const signedTxs = await this.wallet.signAllTransactions(txs);\n return signedTxs;\n }\n}\n/**\n * The network and wallet context used to send transactions paid for and signed\n * by the provider.\n *\n * This implementation was taken from Anchor.\n */\nexport class SolanaProvider extends SolanaReadonlyProvider {\n /**\n * @param connection The cluster connection where the program is deployed.\n * @param sendConnection The connection where transactions are sent to.\n * @param wallet The wallet used to pay for and sign all transactions.\n * @param opts Transaction confirmation options to use by default.\n */\n constructor(connection, broadcaster, wallet, opts = DEFAULT_PROVIDER_OPTIONS, signer = new SolanaTransactionSigner(wallet, broadcaster, opts.preflightCommitment)) {\n super(connection, opts);\n this.connection = connection;\n this.broadcaster = broadcaster;\n this.wallet = wallet;\n this.opts = opts;\n this.signer = signer;\n }\n async signAndBroadcastTransaction(transaction, opts) {\n return await this.signer.signAndBroadcastTransaction(transaction, opts);\n }\n /**\n * Creates a new SolanaProvider.\n * @deprecated use {@link SolanaProvider.init}\n */\n static load({ connection, sendConnection = connection, wallet, opts, }) {\n return new SolanaProvider(connection, new SingleConnectionBroadcaster(sendConnection, opts), wallet, opts);\n }\n /**\n * Initializes a new SolanaProvider.\n */\n static init({ connection, broadcastConnections = [connection], wallet, opts = DEFAULT_PROVIDER_OPTIONS, }) {\n const firstBroadcastConnection = broadcastConnections[0];\n invariant(firstBroadcastConnection, \"must have at least one broadcast connection\");\n return new SolanaProvider(connection, broadcastConnections.length > 1\n ? new TieredBroadcaster(connection, broadcastConnections, opts)\n : new SingleConnectionBroadcaster(firstBroadcastConnection, opts), wallet, opts);\n }\n /**\n * Sends the given transaction, paid for and signed by the provider's wallet.\n *\n * @param tx The transaction to send.\n * @param signers The set of signers in addition to the provider wallet that\n * will sign the transaction.\n * @param opts Transaction confirmation options.\n */\n async send(tx, signers = [], opts = this.opts) {\n const theTx = await this.signer.sign(tx, signers, opts);\n const pending = await this.broadcaster.broadcast(theTx, opts);\n await pending.wait();\n return pending;\n }\n /**\n * Similar to `send`, but for an array of transactions and signers.\n */\n async sendAll(reqs, opts = this.opts) {\n const txs = await this.signer.signAll(reqs, opts);\n return await Promise.all(txs.map(async (tx) => {\n const pending = await this.broadcaster.broadcast(tx, opts);\n await pending.wait();\n return pending;\n }));\n }\n /**\n * Simulates the given transaction, returning emitted logs from execution.\n *\n * @param tx The transaction to send.\n * @param signers The set of signers in addition to the provider wallet that\n * will sign the transaction. If specified, the provider will\n * sign the transaction.\n * @param opts Transaction confirmation options.\n */\n async simulate(tx, signers, opts = this.opts) {\n let simTX = tx;\n if (signers !== undefined) {\n simTX = await this.signer.sign(tx, signers, opts);\n }\n return await this.broadcaster.simulate(simTX, {\n verifySigners: signers !== undefined,\n commitment: opts.commitment,\n });\n }\n}\n/**\n * Wrapper for a Provider containing utility functions.\n */\nexport class SolanaAugmentedProvider {\n constructor(provider) {\n this.provider = provider;\n }\n get walletKey() {\n return this.provider.wallet.publicKey;\n }\n get connection() {\n return this.provider.connection;\n }\n get signer() {\n return this.provider.signer;\n }\n get broadcaster() {\n return this.provider.broadcaster;\n }\n get opts() {\n return this.provider.opts;\n }\n get wallet() {\n return this.provider.wallet;\n }\n signAndBroadcastTransaction(transaction, opts) {\n return this.provider.signAndBroadcastTransaction(transaction, opts);\n }\n send(tx, signers, opts) {\n return this.provider.send(tx, signers, opts);\n }\n sendAll(reqs, opts) {\n return this.provider.sendAll(reqs, opts);\n }\n simulate(tx, signers, opts) {\n return this.provider.simulate(tx, signers, opts);\n }\n getAccountInfo(accountId) {\n return this.provider.getAccountInfo(accountId);\n }\n /**\n * Creates a new transaction using this Provider.\n * @param instructions\n * @param signers\n * @returns\n */\n newTX(instructions = [], signers = []) {\n return TransactionEnvelope.create(this, instructions, signers);\n }\n /**\n * Requests an airdrop of tokens.\n * @param amount\n * @returns\n */\n async requestAirdrop(lamports, to = this.wallet.publicKey) {\n return new PendingTransaction(this.connection, await this.connection.requestAirdrop(to, lamports));\n }\n /**\n * Returns this provider with a different signer.\n * @param signer\n * @returns\n */\n withSigner(signer) {\n return new SolanaAugmentedProvider(new SolanaProvider(this.connection, this.broadcaster, new SignerWallet(signer), this.opts));\n }\n}\n//# sourceMappingURL=provider.js.map","/**\n * Borrowed from explorer.solana.com code written by @jstarry.\n */\n/**\n * Solana error messages built-in.\n */\nexport const BUILTIN_SOLANA_ERROR_MESSAGES = new Map([\n [\"GenericError\", \"generic instruction error\"],\n [\"InvalidArgument\", \"invalid program argument\"],\n [\"InvalidInstructionData\", \"invalid instruction data\"],\n [\"InvalidAccountData\", \"invalid account data for instruction\"],\n [\"AccountDataTooSmall\", \"account data too small for instruction\"],\n [\"InsufficientFunds\", \"insufficient funds for instruction\"],\n [\"IncorrectProgramId\", \"incorrect program id for instruction\"],\n [\"MissingRequiredSignature\", \"missing required signature for instruction\"],\n [\n \"AccountAlreadyInitialized\",\n \"instruction requires an uninitialized account\",\n ],\n [\"UninitializedAccount\", \"instruction requires an initialized account\"],\n [\n \"UnbalancedInstruction\",\n \"sum of account balances before and after instruction do not match\",\n ],\n [\"ModifiedProgramId\", \"instruction modified the program id of an account\"],\n [\n \"ExternalAccountLamportSpend\",\n \"instruction spent from the balance of an account it does not own\",\n ],\n [\n \"ExternalAccountDataModified\",\n \"instruction modified data of an account it does not own\",\n ],\n [\n \"ReadonlyLamportChange\",\n \"instruction changed the balance of a read-only account\",\n ],\n [\"ReadonlyDataModified\", \"instruction modified data of a read-only account\"],\n [\"DuplicateAccountIndex\", \"instruction contains duplicate accounts\"],\n [\"ExecutableModified\", \"instruction changed executable bit of an account\"],\n [\"RentEpochModified\", \"instruction modified rent epoch of an account\"],\n [\"NotEnoughAccountKeys\", \"insufficient account keys for instruction\"],\n [\"AccountDataSizeChanged\", \"non-system instruction changed account size\"],\n [\"AccountNotExecutable\", \"instruction expected an executable account\"],\n [\n \"AccountBorrowFailed\",\n \"instruction tries to borrow reference for an account which is already borrowed\",\n ],\n [\n \"AccountBorrowOutstanding\",\n \"instruction left account with an outstanding borrowed reference\",\n ],\n [\n \"DuplicateAccountOutOfSync\",\n \"instruction modifications of multiply-passed account differ\",\n ],\n [\"Custom\", \"custom program error: {0}\"],\n [\"InvalidError\", \"program returned invalid error code\"],\n [\"ExecutableDataModified\", \"instruction changed executable accounts data\"],\n [\n \"ExecutableLamportChange\",\n \"instruction changed the balance of a executable account\",\n ],\n [\"ExecutableAccountNotRentExempt\", \"executable accounts must be rent exempt\"],\n [\"UnsupportedProgramId\", \"Unsupported program id\"],\n [\"CallDepth\", \"Cross-program invocation call depth too deep\"],\n [\"MissingAccount\", \"An account required by the instruction is missing\"],\n [\n \"ReentrancyNotAllowed\",\n \"Cross-program invocation reentrancy not allowed for this instruction\",\n ],\n [\n \"MaxSeedLengthExceeded\",\n \"Length of the seed is too long for address generation\",\n ],\n [\"InvalidSeeds\", \"Provided seeds do not result in a valid address\"],\n [\"InvalidRealloc\", \"Failed to reallocate account data\"],\n [\"ComputationalBudgetExceeded\", \"Computational budget exceeded\"],\n [\n \"PrivilegeEscalation\",\n \"Cross-program invocation with unauthorized signer or writable account\",\n ],\n [\n \"ProgramEnvironmentSetupFailure\",\n \"Failed to create program execution environment\",\n ],\n [\"ProgramFailedToComplete\", \"Program failed to complete\"],\n [\"ProgramFailedToCompile\", \"Program failed to compile\"],\n [\"Immutable\", \"Account is immutable\"],\n [\"IncorrectAuthority\", \"Incorrect authority provided\"],\n [\"BorshIoError\", \"Failed to serialize or deserialize account data: {0}\"],\n [\n \"AccountNotRentExempt\",\n \"An account does not have enough lamports to be rent-exempt\",\n ],\n [\"InvalidAccountOwner\", \"Invalid account owner\"],\n [\"ArithmeticOverflow\", \"Program arithmetic overflowed\"],\n [\"UnsupportedSysvar\", \"Unsupported sysvar\"],\n [\"IllegalOwner\", \"Provided owner is not allowed\"],\n]);\nexport function getTransactionInstructionError(error) {\n if (!error) {\n return;\n }\n if (typeof error === \"object\" && \"InstructionError\" in error) {\n const innerError = error[\"InstructionError\"];\n const index = innerError[0];\n const instructionError = innerError[1];\n return {\n index,\n message: getInstructionError(instructionError),\n };\n }\n}\nfunction getInstructionError(error) {\n let out;\n let value = null;\n if (typeof error === \"string\") {\n const message = BUILTIN_SOLANA_ERROR_MESSAGES.get(error);\n if (message) {\n return message;\n }\n }\n else if (\"Custom\" in error) {\n out = BUILTIN_SOLANA_ERROR_MESSAGES.get(\"Custom\");\n value = error[\"Custom\"];\n }\n else if (\"BorshIoError\" in error) {\n out = BUILTIN_SOLANA_ERROR_MESSAGES.get(\"BorshIoError\");\n value = error[\"BorshIoError\"];\n }\n if (out && value) {\n return out.replace(\"{0}\", value);\n }\n return \"Unknown instruction error\";\n}\n//# sourceMappingURL=programErr.js.map","import { getProgramAddress } from \"@saberhq/solana-contrib\";\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID, } from \"@solana/spl-token\";\n/**\n * Gets an associated token account address.\n *\n * @deprecated use {@link getATAAddressSync}\n */\nexport const getATAAddress = async ({ mint, owner, }) => {\n return Promise.resolve(getATAAddressSync({ mint, owner }));\n};\n/**\n * Gets an associated token account address synchronously.\n */\nexport const getATAAddressSync = ({ mint, owner, }) => {\n return getProgramAddress([owner.toBuffer(), TOKEN_PROGRAM_ID.toBuffer(), mint.toBuffer()], ASSOCIATED_TOKEN_PROGRAM_ID);\n};\n/**\n * Gets multiple associated token account addresses.\n *\n * @deprecated use {@link getATAAddressesSync}\n */\nexport const getATAAddresses = ({ mints, owner, }) => {\n return Promise.resolve(getATAAddressesSync({ mints, owner }));\n};\n/**\n * Gets multiple associated token account addresses.\n */\nexport const getATAAddressesSync = ({ mints, owner, }) => {\n const result = Object.entries(mints).map((args) => {\n const [name, mint] = args;\n const result = getATAAddressSync({\n mint,\n owner: owner,\n });\n return {\n address: result,\n name,\n mint,\n };\n });\n const deduped = result.reduce((acc, { address, name, mint }) => {\n return {\n accounts: {\n ...acc.accounts,\n [name]: { address, mint },\n },\n };\n }, { accounts: {} });\n return {\n accounts: deduped.accounts,\n };\n};\n//# sourceMappingURL=ata.js.map","import { PublicKey } from \"@saberhq/solana-contrib\";\nimport * as BufferLayout from \"@solana/buffer-layout\";\nimport { AccountLayout, MintLayout as TokenMintLayout, u64, } from \"@solana/spl-token\";\nexport { Layout as TypedLayout, Structure as TypedStructure, } from \"@solana/buffer-layout\";\n/**\n * Typed struct buffer layout\n * @param fields\n * @param property\n * @param decodePrefixes\n * @returns\n */\nexport const structLayout = (fields, property, decodePrefixes) => BufferLayout.struct(fields, property, decodePrefixes);\n/**\n * Layout for a public key\n */\nexport const PublicKeyLayout = (property = \"publicKey\") => {\n return BufferLayout.blob(32, property);\n};\n/**\n * Layout for a 64bit unsigned value\n */\nexport const Uint64Layout = (property = \"uint64\") => {\n return BufferLayout.blob(8, property);\n};\n/**\n * Layout for a TokenAccount.\n */\nexport const TokenAccountLayout = AccountLayout;\n/**\n * Layout for a Mint.\n */\nexport const MintLayout = TokenMintLayout;\n/**\n * Deserializes a token account.\n * @param address\n * @param data\n * @returns\n */\nexport const deserializeAccount = (data) => {\n const accountInfo = TokenAccountLayout.decode(data);\n const mint = new PublicKey(accountInfo.mint);\n const owner = new PublicKey(accountInfo.owner);\n const amount = u64.fromBuffer(accountInfo.amount);\n let delegate;\n let delegatedAmount;\n if (accountInfo.delegateOption === 0) {\n delegate = null;\n delegatedAmount = new u64(0);\n }\n else {\n delegate = new PublicKey(accountInfo.delegate);\n delegatedAmount = u64.fromBuffer(accountInfo.delegatedAmount);\n }\n const isInitialized = accountInfo.state !== 0;\n const isFrozen = accountInfo.state === 2;\n let rentExemptReserve;\n let isNative;\n if (accountInfo.isNativeOption === 1) {\n rentExemptReserve = u64.fromBuffer(accountInfo.isNative);\n isNative = true;\n }\n else {\n rentExemptReserve = null;\n isNative = false;\n }\n let closeAuthority;\n if (accountInfo.closeAuthorityOption === 0) {\n closeAuthority = null;\n }\n else {\n closeAuthority = new PublicKey(accountInfo.closeAuthority);\n }\n return {\n mint,\n owner,\n amount,\n delegate,\n delegatedAmount,\n isInitialized,\n isFrozen,\n rentExemptReserve,\n isNative,\n closeAuthority,\n };\n};\n/**\n * Deserialize a {@link Buffer} into a {@link MintInfo}.\n * @param data\n * @returns\n */\nexport const deserializeMint = (data) => {\n if (data.length !== MintLayout.span) {\n throw new Error(\"Not a valid Mint\");\n }\n const mintInfo = MintLayout.decode(data);\n let mintAuthority;\n if (mintInfo.mintAuthorityOption === 0) {\n mintAuthority = null;\n }\n else {\n mintAuthority = new PublicKey(mintInfo.mintAuthority);\n }\n const supply = u64.fromBuffer(mintInfo.supply);\n const isInitialized = mintInfo.isInitialized !== 0;\n let freezeAuthority;\n if (mintInfo.freezeAuthorityOption === 0) {\n freezeAuthority = null;\n }\n else {\n freezeAuthority = new PublicKey(mintInfo.freezeAuthority);\n }\n return {\n mintAuthority,\n supply,\n decimals: mintInfo.decimals,\n isInitialized,\n freezeAuthority,\n };\n};\n//# sourceMappingURL=layout.js.map","import { default as JSBI } from \"jsbi\";\n/**\n * Zero bigint.\n */\nexport const ZERO = JSBI.BigInt(0);\n/**\n * One bigint.\n */\nexport const ONE = JSBI.BigInt(1);\n/**\n * 10 bigint.\n */\nexport const TEN = JSBI.BigInt(10);\nexport var Rounding;\n(function (Rounding) {\n Rounding[Rounding[\"ROUND_DOWN\"] = 0] = \"ROUND_DOWN\";\n Rounding[Rounding[\"ROUND_HALF_UP\"] = 1] = \"ROUND_HALF_UP\";\n Rounding[Rounding[\"ROUND_UP\"] = 2] = \"ROUND_UP\";\n})(Rounding || (Rounding = {}));\nexport const MAX_U64 = JSBI.BigInt(\"0xffffffffffffffff\");\nexport const MAX_U256 = JSBI.BigInt(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\");\n//# sourceMappingURL=constants.js.map","/*\r\n * big.js v6.2.1\r\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\r\n * Copyright (c) 2022 Michael Mclaughlin\r\n * https://github.com/MikeMcl/big.js/LICENCE.md\r\n */\r\n\r\n\r\n/************************************** EDITABLE DEFAULTS *****************************************/\r\n\r\n\r\n // The default values below must be integers within the stated ranges.\r\n\r\n /*\r\n * The maximum number of decimal places (DP) of the results of operations involving division:\r\n * div and sqrt, and pow with negative exponents.\r\n */\r\nvar DP = 20, // 0 to MAX_DP\r\n\r\n /*\r\n * The rounding mode (RM) used when rounding to the above decimal places.\r\n *\r\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\r\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\r\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\r\n * 3 Away from zero. (ROUND_UP)\r\n */\r\n RM = 1, // 0, 1, 2 or 3\r\n\r\n // The maximum value of DP and Big.DP.\r\n MAX_DP = 1E6, // 0 to 1000000\r\n\r\n // The maximum magnitude of the exponent argument to the pow method.\r\n MAX_POWER = 1E6, // 1 to 1000000\r\n\r\n /*\r\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\r\n * (JavaScript numbers: -7)\r\n * -1000000 is the minimum recommended exponent value of a Big.\r\n */\r\n NE = -7, // 0 to -1000000\r\n\r\n /*\r\n * The positive exponent (PE) at and above which toString returns exponential notation.\r\n * (JavaScript numbers: 21)\r\n * 1000000 is the maximum recommended exponent value of a Big, but this limit is not enforced.\r\n */\r\n PE = 21, // 0 to 1000000\r\n\r\n /*\r\n * When true, an error will be thrown if a primitive number is passed to the Big constructor,\r\n * or if valueOf is called, or if toNumber is called on a Big which cannot be converted to a\r\n * primitive number without a loss of precision.\r\n */\r\n STRICT = false, // true or false\r\n\r\n\r\n/**************************************************************************************************/\r\n\r\n\r\n // Error messages.\r\n NAME = '[big.js] ',\r\n INVALID = NAME + 'Invalid ',\r\n INVALID_DP = INVALID + 'decimal places',\r\n INVALID_RM = INVALID + 'rounding mode',\r\n DIV_BY_ZERO = NAME + 'Division by zero',\r\n\r\n // The shared prototype object.\r\n P = {},\r\n UNDEFINED = void 0,\r\n NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\r\n\r\n\r\n/*\r\n * Create and return a Big constructor.\r\n */\r\nfunction _Big_() {\r\n\r\n /*\r\n * The Big constructor and exported function.\r\n * Create and return a new instance of a Big number object.\r\n *\r\n * n {number|string|Big} A numeric value.\r\n */\r\n function Big(n) {\r\n var x = this;\r\n\r\n // Enable constructor usage without new.\r\n if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n);\r\n\r\n // Duplicate.\r\n if (n instanceof Big) {\r\n x.s = n.s;\r\n x.e = n.e;\r\n x.c = n.c.slice();\r\n } else {\r\n if (typeof n !== 'string') {\r\n if (Big.strict === true && typeof n !== 'bigint') {\r\n throw TypeError(INVALID + 'value');\r\n }\r\n\r\n // Minus zero?\r\n n = n === 0 && 1 / n < 0 ? '-0' : String(n);\r\n }\r\n\r\n parse(x, n);\r\n }\r\n\r\n // Retain a reference to this Big constructor.\r\n // Shadow Big.prototype.constructor which points to Object.\r\n x.constructor = Big;\r\n }\r\n\r\n Big.prototype = P;\r\n Big.DP = DP;\r\n Big.RM = RM;\r\n Big.NE = NE;\r\n Big.PE = PE;\r\n Big.strict = STRICT;\r\n Big.roundDown = 0;\r\n Big.roundHalfUp = 1;\r\n Big.roundHalfEven = 2;\r\n Big.roundUp = 3;\r\n\r\n return Big;\r\n}\r\n\r\n\r\n/*\r\n * Parse the number or string value passed to a Big constructor.\r\n *\r\n * x {Big} A Big number instance.\r\n * n {number|string} A numeric value.\r\n */\r\nfunction parse(x, n) {\r\n var e, i, nl;\r\n\r\n if (!NUMERIC.test(n)) {\r\n throw Error(INVALID + 'number');\r\n }\r\n\r\n // Determine sign.\r\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\r\n\r\n // Decimal point?\r\n if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = n.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +n.slice(i + 1);\r\n n = n.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = n.length;\r\n }\r\n\r\n nl = n.length;\r\n\r\n // Determine leading zeros.\r\n for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\r\n\r\n if (i == nl) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n\r\n // Determine trailing zeros.\r\n for (; nl > 0 && n.charAt(--nl) == '0';);\r\n x.e = e - i - 1;\r\n x.c = [];\r\n\r\n // Convert string to array of digits without leading/trailing zeros.\r\n for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Round Big x to a maximum of sd significant digits using rounding mode rm.\r\n *\r\n * x {Big} The Big to round.\r\n * sd {number} Significant digits: integer, 0 to MAX_DP inclusive.\r\n * rm {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n * [more] {boolean} Whether the result of division was truncated.\r\n */\r\nfunction round(x, sd, rm, more) {\r\n var xc = x.c;\r\n\r\n if (rm === UNDEFINED) rm = x.constructor.RM;\r\n if (rm !== 0 && rm !== 1 && rm !== 2 && rm !== 3) {\r\n throw Error(INVALID_RM);\r\n }\r\n\r\n if (sd < 1) {\r\n more =\r\n rm === 3 && (more || !!xc[0]) || sd === 0 && (\r\n rm === 1 && xc[0] >= 5 ||\r\n rm === 2 && (xc[0] > 5 || xc[0] === 5 && (more || xc[1] !== UNDEFINED))\r\n );\r\n\r\n xc.length = 1;\r\n\r\n if (more) {\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n x.e = x.e - sd + 1;\r\n xc[0] = 1;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n } else if (sd < xc.length) {\r\n\r\n // xc[sd] is the digit after the digit that may be rounded up.\r\n more =\r\n rm === 1 && xc[sd] >= 5 ||\r\n rm === 2 && (xc[sd] > 5 || xc[sd] === 5 &&\r\n (more || xc[sd + 1] !== UNDEFINED || xc[sd - 1] & 1)) ||\r\n rm === 3 && (more || !!xc[0]);\r\n\r\n // Remove any digits after the required precision.\r\n xc.length = sd;\r\n\r\n // Round up?\r\n if (more) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up.\r\n for (; ++xc[--sd] > 9;) {\r\n xc[sd] = 0;\r\n if (sd === 0) {\r\n ++x.e;\r\n xc.unshift(1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (sd = xc.length; !xc[--sd];) xc.pop();\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a string representing the value of Big x in normal or exponential notation.\r\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\r\n */\r\nfunction stringify(x, doExponential, isNonzero) {\r\n var e = x.e,\r\n s = x.c.join(''),\r\n n = s.length;\r\n\r\n // Exponential notation?\r\n if (doExponential) {\r\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\r\n\r\n // Normal notation.\r\n } else if (e < 0) {\r\n for (; ++e;) s = '0' + s;\r\n s = '0.' + s;\r\n } else if (e > 0) {\r\n if (++e > n) {\r\n for (e -= n; e--;) s += '0';\r\n } else if (e < n) {\r\n s = s.slice(0, e) + '.' + s.slice(e);\r\n }\r\n } else if (n > 1) {\r\n s = s.charAt(0) + '.' + s.slice(1);\r\n }\r\n\r\n return x.s < 0 && isNonzero ? '-' + s : s;\r\n}\r\n\r\n\r\n// Prototype/instance methods\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the absolute value of this Big.\r\n */\r\nP.abs = function () {\r\n var x = new this.constructor(this);\r\n x.s = 1;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return 1 if the value of this Big is greater than the value of Big y,\r\n * -1 if the value of this Big is less than the value of Big y, or\r\n * 0 if they have the same value.\r\n */\r\nP.cmp = function (y) {\r\n var isneg,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new x.constructor(y)).c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n isneg = i < 0;\r\n\r\n // Compare exponents.\r\n if (k != l) return k > l ^ isneg ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = -1; ++i < j;) {\r\n if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ isneg ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\r\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\nP.div = function (y) {\r\n var x = this,\r\n Big = x.constructor,\r\n a = x.c, // dividend\r\n b = (y = new Big(y)).c, // divisor\r\n k = x.s == y.s ? 1 : -1,\r\n dp = Big.DP;\r\n\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n\r\n // Divisor is zero?\r\n if (!b[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n // Dividend is 0? Return +-0.\r\n if (!a[0]) {\r\n y.s = k;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n var bl, bt, n, cmp, ri,\r\n bz = b.slice(),\r\n ai = bl = b.length,\r\n al = a.length,\r\n r = a.slice(0, bl), // remainder\r\n rl = r.length,\r\n q = y, // quotient\r\n qc = q.c = [],\r\n qi = 0,\r\n p = dp + (q.e = x.e - y.e) + 1; // precision of the result\r\n\r\n q.s = k;\r\n k = p < 0 ? 0 : p;\r\n\r\n // Create version of divisor with leading zero.\r\n bz.unshift(0);\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; rl++ < bl;) r.push(0);\r\n\r\n do {\r\n\r\n // n is how many times the divisor goes into current remainder.\r\n for (n = 0; n < 10; n++) {\r\n\r\n // Compare divisor and remainder.\r\n if (bl != (rl = r.length)) {\r\n cmp = bl > rl ? 1 : -1;\r\n } else {\r\n for (ri = -1, cmp = 0; ++ri < bl;) {\r\n if (b[ri] != r[ri]) {\r\n cmp = b[ri] > r[ri] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // If divisor < remainder, subtract divisor from remainder.\r\n if (cmp < 0) {\r\n\r\n // Remainder can't be more than 1 digit longer than divisor.\r\n // Equalise lengths using divisor with extra leading zero?\r\n for (bt = rl == bl ? b : bz; rl;) {\r\n if (r[--rl] < bt[rl]) {\r\n ri = rl;\r\n for (; ri && !r[--ri];) r[ri] = 9;\r\n --r[ri];\r\n r[rl] += 10;\r\n }\r\n r[rl] -= bt[rl];\r\n }\r\n\r\n for (; !r[0];) r.shift();\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // Add the digit n to the result array.\r\n qc[qi++] = cmp ? n : ++n;\r\n\r\n // Update the remainder.\r\n if (r[0] && cmp) r[rl] = a[ai] || 0;\r\n else r = [a[ai]];\r\n\r\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\r\n\r\n // Leading zero? Do not remove if result is simply zero (qi == 1).\r\n if (!qc[0] && qi != 1) {\r\n\r\n // There can't be more than one zero.\r\n qc.shift();\r\n q.e--;\r\n p--;\r\n }\r\n\r\n // Round?\r\n if (qi > p) round(q, p, Big.RM, r[0] !== UNDEFINED);\r\n\r\n return q;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\r\n */\r\nP.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\r\n * false.\r\n */\r\nP.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\nP.gte = function (y) {\r\n return this.cmp(y) > -1;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\r\n */\r\nP.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Big is less than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\nP.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big minus the value of Big y.\r\n */\r\nP.minus = P.sub = function (y) {\r\n var i, j, t, xlty,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xc = x.c.slice(),\r\n xe = x.e,\r\n yc = y.c,\r\n ye = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (yc[0]) {\r\n y.s = -b;\r\n } else if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = 1;\r\n }\r\n return y;\r\n }\r\n\r\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\r\n if (a = xe - ye) {\r\n\r\n if (xlty = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n for (b = a; b--;) t.push(0);\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n if (xc[b] != yc[b]) {\r\n xlty = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xlty) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n /*\r\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\r\n * needs to start at yc.length.\r\n */\r\n if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0;\r\n\r\n // Subtract yc from xc.\r\n for (b = i; j > a;) {\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i];) xc[i] = 9;\r\n --xc[i];\r\n xc[j] += 10;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--b] === 0;) xc.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] === 0;) {\r\n xc.shift();\r\n --ye;\r\n }\r\n\r\n if (!xc[0]) {\r\n\r\n // n - n = +0\r\n y.s = 1;\r\n\r\n // Result must be zero.\r\n xc = [ye = 0];\r\n }\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\r\n */\r\nP.mod = function (y) {\r\n var ygtx,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n if (!y.c[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n x.s = y.s = 1;\r\n ygtx = y.cmp(x) == 1;\r\n x.s = a;\r\n y.s = b;\r\n\r\n if (ygtx) return new Big(x);\r\n\r\n a = Big.DP;\r\n b = Big.RM;\r\n Big.DP = Big.RM = 0;\r\n x = x.div(y);\r\n Big.DP = a;\r\n Big.RM = b;\r\n\r\n return this.minus(x.times(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big negated.\r\n */\r\nP.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big plus the value of Big y.\r\n */\r\nP.plus = P.add = function (y) {\r\n var e, k, t,\r\n x = this,\r\n Big = x.constructor;\r\n\r\n y = new Big(y);\r\n\r\n // Signs differ?\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e,\r\n xc = x.c,\r\n ye = y.e,\r\n yc = y.c;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (!yc[0]) {\r\n if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = x.s;\r\n }\r\n }\r\n return y;\r\n }\r\n\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents.\r\n // Note: reverse faster than unshifts.\r\n if (e = xe - ye) {\r\n if (e > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n e = -e;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; e--;) t.push(0);\r\n t.reverse();\r\n }\r\n\r\n // Point xc to the longer array.\r\n if (xc.length - yc.length < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n }\r\n\r\n e = yc.length;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\r\n for (k = 0; e; xc[e] %= 10) k = (xc[--e] = xc[e] + yc[e] + k) / 10 | 0;\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n\r\n if (k) {\r\n xc.unshift(k);\r\n ++ye;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (e = xc.length; xc[--e] === 0;) xc.pop();\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a Big whose value is the value of this Big raised to the power n.\r\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\r\n * mode Big.RM.\r\n *\r\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\r\n */\r\nP.pow = function (n) {\r\n var x = this,\r\n one = new x.constructor('1'),\r\n y = one,\r\n isneg = n < 0;\r\n\r\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) {\r\n throw Error(INVALID + 'exponent');\r\n }\r\n\r\n if (isneg) n = -n;\r\n\r\n for (;;) {\r\n if (n & 1) y = y.times(x);\r\n n >>= 1;\r\n if (!n) break;\r\n x = x.times(x);\r\n }\r\n\r\n return isneg ? one.div(y) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum precision of sd\r\n * significant digits using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.prec = function (sd, rm) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n return round(new this.constructor(this), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum of dp decimal places\r\n * using rounding mode rm, or Big.RM if rm is not specified.\r\n * If dp is negative, round to an integer which is a multiple of 10**-dp.\r\n * If dp is not specified, round to 0 decimal places.\r\n *\r\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.round = function (dp, rm) {\r\n if (dp === UNDEFINED) dp = 0;\r\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n return round(new this.constructor(this), dp + this.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\r\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\nP.sqrt = function () {\r\n var r, c, t,\r\n x = this,\r\n Big = x.constructor,\r\n s = x.s,\r\n e = x.e,\r\n half = new Big('0.5');\r\n\r\n // Zero?\r\n if (!x.c[0]) return new Big(x);\r\n\r\n // Negative?\r\n if (s < 0) {\r\n throw Error(NAME + 'No square root');\r\n }\r\n\r\n // Estimate.\r\n s = Math.sqrt(x + '');\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\r\n if (s === 0 || s === 1 / 0) {\r\n c = x.c.join('');\r\n if (!(c.length + e & 1)) c += '0';\r\n s = Math.sqrt(c);\r\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\r\n r = new Big((s == 1 / 0 ? '5e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\r\n } else {\r\n r = new Big(s + '');\r\n }\r\n\r\n e = r.e + (Big.DP += 4);\r\n\r\n // Newton-Raphson iteration.\r\n do {\r\n t = r;\r\n r = half.times(t.plus(x.div(t)));\r\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\r\n\r\n return round(r, (Big.DP -= 4) + r.e + 1, Big.RM);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Big whose value is the value of this Big times the value of Big y.\r\n */\r\nP.times = P.mul = function (y) {\r\n var c,\r\n x = this,\r\n Big = x.constructor,\r\n xc = x.c,\r\n yc = (y = new Big(y)).c,\r\n a = xc.length,\r\n b = yc.length,\r\n i = x.e,\r\n j = y.e;\r\n\r\n // Determine sign of result.\r\n y.s = x.s == y.s ? 1 : -1;\r\n\r\n // Return signed 0 if either 0.\r\n if (!xc[0] || !yc[0]) {\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // Initialise exponent of result as x.e + y.e.\r\n y.e = i + j;\r\n\r\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\r\n if (a < b) {\r\n c = xc;\r\n xc = yc;\r\n yc = c;\r\n j = a;\r\n a = b;\r\n b = j;\r\n }\r\n\r\n // Initialise coefficient array of result with zeros.\r\n for (c = new Array(j = a + b); j--;) c[j] = 0;\r\n\r\n // Multiply.\r\n\r\n // i is initially xc.length.\r\n for (i = b; i--;) {\r\n b = 0;\r\n\r\n // a is yc.length.\r\n for (j = a + i; j > i;) {\r\n\r\n // Current sum of products at this digit position, plus carry.\r\n b = c[j] + yc[i] * xc[j - i - 1] + b;\r\n c[j--] = b % 10;\r\n\r\n // carry\r\n b = b / 10 | 0;\r\n }\r\n\r\n c[j] = b;\r\n }\r\n\r\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\r\n if (b) ++y.e;\r\n else c.shift();\r\n\r\n // Remove trailing zeros.\r\n for (i = c.length; !c[--i];) c.pop();\r\n y.c = c;\r\n\r\n return y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big in exponential notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), ++dp, rm);\r\n for (; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, true, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big in normal notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), dp + x.e + 1, rm);\r\n\r\n // x.e may have changed if the value is rounded up.\r\n for (dp = dp + x.e + 1; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, false, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Omit the sign for negative zero.\r\n */\r\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toJSON = P.toString = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, !!x.c[0]);\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Big as a primitve number.\r\n */\r\nP.toNumber = function () {\r\n var n = Number(stringify(this, true, true));\r\n if (this.constructor.strict === true && !this.eq(n.toString())) {\r\n throw Error(NAME + 'Imprecise conversion');\r\n }\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big rounded to sd significant digits using\r\n * rounding mode rm, or Big.RM if rm is not specified.\r\n * Use exponential notation if sd is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var x = this,\r\n Big = x.constructor,\r\n n = x.c[0];\r\n\r\n if (sd !== UNDEFINED) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n x = round(new Big(x), sd, rm);\r\n for (; x.c.length < sd;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, sd <= x.e || x.e <= Big.NE || x.e >= Big.PE, !!n);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Include the sign for negative zero.\r\n */\r\nP.valueOf = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n if (Big.strict === true) {\r\n throw Error(NAME + 'valueOf disallowed');\r\n }\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, true);\r\n};\r\n\r\n\r\n// Export\r\n\r\n\r\nexport var Big = _Big_();\r\n\r\n/// \r\nexport default Big;\r\n","var isProduction = process.env.NODE_ENV === 'production';\nvar prefix = 'Invariant failed';\nfunction invariant(condition, message) {\n if (condition) {\n return;\n }\n if (isProduction) {\n throw new Error(prefix);\n }\n var provided = typeof message === 'function' ? message() : message;\n var value = provided ? \"\".concat(prefix, \": \").concat(provided) : prefix;\n throw new Error(value);\n}\n\nexport { invariant as default };\n","/*\n * toFormat v2.0.0\n * Adds a toFormat instance method to big.js or decimal.js\n * Copyright (c) 2017 Michael Mclaughlin\n * MIT Licence\n */\nimport { default as Big } from \"big.js\";\nimport { default as Decimal } from \"decimal.js-light\";\nimport { default as invariant } from \"tiny-invariant\";\nimport { Rounding } from \"./constants.js\";\nexport const toSignificantRounding = {\n [Rounding.ROUND_DOWN]: Decimal.ROUND_DOWN,\n [Rounding.ROUND_HALF_UP]: Decimal.ROUND_HALF_UP,\n [Rounding.ROUND_UP]: Decimal.ROUND_UP,\n};\nconst toFixedRounding = {\n [Rounding.ROUND_DOWN]: Big.roundDown,\n [Rounding.ROUND_HALF_UP]: Big.roundHalfUp,\n [Rounding.ROUND_UP]: Big.roundUp,\n};\n/**\n * Default number format. (no grouping)\n */\nexport const DEFAULT_NUMBER_FORMAT = {\n decimalSeparator: \".\",\n groupSeparator: \"\",\n groupSize: 3,\n rounding: Rounding.ROUND_DOWN,\n};\n/**\n * Default number format display.\n */\nexport const DEFAULT_DISPLAY_NUMBER_FORMAT = {\n ...DEFAULT_NUMBER_FORMAT,\n groupSeparator: \",\",\n};\nconst formatNum = (num, isNegative, roundingMethod, decimalPlaces, { decimalSeparator = DEFAULT_NUMBER_FORMAT.decimalSeparator, groupSeparator = DEFAULT_NUMBER_FORMAT.groupSeparator, groupSize = DEFAULT_NUMBER_FORMAT.groupSize, rounding = DEFAULT_NUMBER_FORMAT.rounding, } = DEFAULT_NUMBER_FORMAT) => {\n const decInternal = num;\n if (!decInternal.e && decInternal.e !== 0) {\n return num.toString(); // Infinity/NaN\n }\n const [integerPart, fractionPart] = num\n .toFixed(decimalPlaces, roundingMethod === \"fixed\"\n ? toFixedRounding[rounding]\n : toSignificantRounding[rounding])\n .split(\".\");\n invariant(integerPart);\n let displayIntegerPart = integerPart;\n if (groupSeparator) {\n // integer digits\n const intd = isNegative ? integerPart.slice(1) : integerPart;\n // number of integer digits\n const nd = intd.length;\n if (groupSize > 0 && nd > 0) {\n let i = nd % groupSize || groupSize;\n displayIntegerPart = intd.slice(0, i);\n for (; i < nd; i += groupSize) {\n displayIntegerPart += groupSeparator + intd.slice(i, i + groupSize);\n }\n if (isNegative) {\n displayIntegerPart = \"-\" + displayIntegerPart;\n }\n }\n }\n if (fractionPart) {\n return displayIntegerPart + (decimalSeparator !== null && decimalSeparator !== void 0 ? decimalSeparator : \"\") + fractionPart;\n }\n else {\n return displayIntegerPart;\n }\n};\n/*\n * Returns a string representing the value of this big number in fixed-point notation to `dp`\n * decimal places using rounding mode `rm`, and formatted according to the properties of the\n * `fmt`, `this.format` and `this.constructor.format` objects, in that order of precedence.\n *\n * Example:\n *\n * x = new Decimal('123456789.987654321')\n *\n * // Add a format object to the constructor...\n * Decimal.format = {\n * decimalSeparator: '.',\n * groupSeparator: ',',\n * groupSize: 3,\n * secondaryGroupSize: 0,\n * fractionGroupSeparator: '', // '\\xA0' non-breaking space\n * fractionGroupSize : 0\n * }\n *\n * x.toFormat(); // 123,456,789.987654321\n * x.toFormat(2, 1); // 123,456,789.98\n *\n * // And/or add a format object to the big number itself...\n * x.format = {\n * decimalSeparator: ',',\n * groupSeparator: '',\n * }\n *\n * x.toFormat(); // 123456789,987654321\n *\n * format = {\n * decimalSeparator: '.',\n * groupSeparator: ' ',\n * groupSize: 3,\n * fractionGroupSeparator: ' ', // '\\xA0' non-breaking space\n * fractionGroupSize : 5\n * }\n * // And/or pass a format object to the method call.\n * x.toFormat(format); // 123 456 789.98765 4321\n * x.toFormat(4, format); // 123 456 789.9877\n * x.toFormat(2, 1, format); // 123 456 789.98\n *\n * [dp] {number} Decimal places. Integer.\n * [rm] {number} Rounding mode. Integer, 0 to 8. (Ignored if using big.js.)\n * [fmt] {Object} A format object.\n *\n */\nexport const formatDecimal = (dec, decimalPlaces, fmt = DEFAULT_NUMBER_FORMAT) => {\n return formatNum(dec, dec.isNegative(), \"significant\", decimalPlaces, fmt);\n};\n/*\n * Returns a string representing the value of this big number in fixed-point notation to `dp`\n * decimal places using rounding mode `rm`, and formatted according to the properties of the\n * `fmt`, `this.format` and `this.constructor.format` objects, in that order of precedence.\n *\n * Example:\n *\n * x = new Decimal('123456789.987654321')\n *\n * // Add a format object to the constructor...\n * Decimal.format = {\n * decimalSeparator: '.',\n * groupSeparator: ',',\n * groupSize: 3,\n * secondaryGroupSize: 0,\n * fractionGroupSeparator: '', // '\\xA0' non-breaking space\n * fractionGroupSize : 0\n * }\n *\n * x.toFormat(); // 123,456,789.987654321\n * x.toFormat(2, 1); // 123,456,789.98\n *\n * // And/or add a format object to the big number itself...\n * x.format = {\n * decimalSeparator: ',',\n * groupSeparator: '',\n * }\n *\n * x.toFormat(); // 123456789,987654321\n *\n * format = {\n * decimalSeparator: '.',\n * groupSeparator: ' ',\n * groupSize: 3,\n * fractionGroupSeparator: ' ', // '\\xA0' non-breaking space\n * fractionGroupSize : 5\n * }\n * // And/or pass a format object to the method call.\n * x.toFormat(format); // 123 456 789.98765 4321\n * x.toFormat(4, format); // 123 456 789.9877\n * x.toFormat(2, 1, format); // 123 456 789.98\n *\n * [dp] {number} Decimal places. Integer.\n * [rm] {number} Rounding mode. Integer, 0 to 8. (Ignored if using big.js.)\n * [fmt] {Object} A format object.\n *\n */\nexport const formatBig = (big, decimalPlaces, fmt = DEFAULT_NUMBER_FORMAT) => {\n return formatNum(big, big.s === -1, \"fixed\", decimalPlaces, fmt);\n};\n//# sourceMappingURL=format.js.map","import { default as JSBI } from \"jsbi\";\nimport { TEN } from \"./constants.js\";\nconst BN_WORD_SIZE = 26;\n/**\n * Checks if an object is a BN.\n */\nexport const isBN = (num) => {\n return (num !== null &&\n typeof num === \"object\" &&\n num.constructor.wordSize === BN_WORD_SIZE &&\n Array.isArray(num.words));\n};\n/**\n * Parses a {@link BigintIsh} into a {@link JSBI}.\n * @param bigintIsh\n * @returns\n */\nexport function parseBigintIsh(bigintIsh) {\n return bigintIsh instanceof JSBI\n ? bigintIsh\n : typeof bigintIsh === \"string\" || typeof bigintIsh === \"number\"\n ? JSBI.BigInt(bigintIsh)\n : typeof bigintIsh === \"bigint\" || isBN(bigintIsh)\n ? JSBI.BigInt(bigintIsh.toString())\n : JSBI.BigInt(bigintIsh);\n}\nconst decimalMultipliersCache = {};\n/**\n * Creates the multiplier for an amount of decimals.\n * @param decimals\n * @returns\n */\nexport const makeDecimalMultiplier = (decimals) => {\n const cached = decimalMultipliersCache[decimals];\n if (cached) {\n return cached;\n }\n if (decimals <= 18) {\n return (decimalMultipliersCache[decimals] = JSBI.BigInt(10 ** decimals));\n }\n return (decimalMultipliersCache[decimals] = JSBI.exponentiate(TEN, JSBI.BigInt(decimals)));\n};\n//# sourceMappingURL=utils.js.map","import { default as Big } from \"big.js\";\nimport { default as Decimal } from \"decimal.js-light\";\nimport { default as JSBI } from \"jsbi\";\nimport { default as invariant } from \"tiny-invariant\";\nimport { ONE, Rounding, ZERO } from \"./constants.js\";\nimport { formatBig, formatDecimal, toSignificantRounding } from \"./format.js\";\nimport { parseBigintIsh } from \"./utils.js\";\n/**\n * Attempts to parse a {@link Fraction}.\n * @param fractionish Fraction or BigintIsh.\n * @returns\n */\nconst tryParseFraction = (fractionish) => {\n if (Fraction.isFraction(fractionish)) {\n return fractionish;\n }\n try {\n return new Fraction(parseBigintIsh(fractionish));\n }\n catch (e) {\n if (e instanceof Error) {\n throw new Error(`Could not parse fraction: ${e.message}`);\n }\n throw new Error(`Could not parse fraction`);\n }\n};\n/**\n * Creates a {@link Fraction} from a {@link FractionObject}.\n * @param param0\n * @returns\n */\nexport const fractionFromObject = ({ numeratorStr, denominatorStr, }) => {\n return new Fraction(numeratorStr, denominatorStr);\n};\n/**\n * Number with an integer numerator and denominator.\n */\nexport class Fraction {\n constructor(numerator, denominator = ONE) {\n this.isFraction = true;\n this.numerator = parseBigintIsh(numerator);\n this.denominator = parseBigintIsh(denominator);\n }\n get numeratorStr() {\n return this.numerator.toString();\n }\n get denominatorStr() {\n return this.numerator.toString();\n }\n /**\n * Ensures the other object is of this {@link Fraction} type.\n * @param other\n * @returns\n */\n static fromObject(other) {\n if (other instanceof Fraction) {\n return other;\n }\n return fractionFromObject(other);\n }\n /**\n * JSON representation of the {@link Fraction}.\n */\n toJSON() {\n return {\n isFraction: true,\n numeratorStr: this.numerator.toString(),\n denominatorStr: this.denominator.toString(),\n };\n }\n /**\n * Returns true if the other object is a {@link Fraction}.\n *\n * @param other\n * @returns\n */\n static isFraction(other) {\n return (typeof other === \"object\" &&\n other !== null &&\n \"numerator\" in other &&\n \"denominator\" in other);\n }\n /**\n * Compares this {@link Fraction} to the other {@link Fraction}.\n */\n compareTo(other) {\n if (this.equalTo(other)) {\n return 0;\n }\n return this.greaterThan(other) ? 1 : -1;\n }\n /**\n * Parses a {@link Fraction} from a float.\n * @param number Number to parse.\n * @param decimals Number of decimals of precision. (default 10)\n * @returns Fraction\n */\n static fromNumber(number, decimals = 10) {\n const multiplier = Math.pow(10, decimals);\n return new Fraction(Math.floor(number * multiplier), multiplier);\n }\n /**\n * Performs floor division.\n */\n get quotient() {\n return JSBI.divide(this.numerator, this.denominator);\n }\n /**\n * Remainder after floor division.\n */\n get remainder() {\n return new Fraction(JSBI.remainder(this.numerator, this.denominator), this.denominator);\n }\n /**\n * Swaps the numerator and denominator of the {@link Fraction}.\n * @returns\n */\n invert() {\n return new Fraction(this.denominator, this.numerator);\n }\n add(other) {\n const otherParsed = tryParseFraction(other);\n if (JSBI.equal(this.denominator, otherParsed.denominator)) {\n return new Fraction(JSBI.add(this.numerator, otherParsed.numerator), this.denominator);\n }\n return new Fraction(JSBI.add(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(otherParsed.numerator, this.denominator)), JSBI.multiply(this.denominator, otherParsed.denominator));\n }\n subtract(other) {\n const otherParsed = tryParseFraction(other);\n if (JSBI.equal(this.denominator, otherParsed.denominator)) {\n return new Fraction(JSBI.subtract(this.numerator, otherParsed.numerator), this.denominator);\n }\n return new Fraction(JSBI.subtract(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(otherParsed.numerator, this.denominator)), JSBI.multiply(this.denominator, otherParsed.denominator));\n }\n lessThan(other) {\n const otherParsed = tryParseFraction(other);\n return JSBI.lessThan(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(otherParsed.numerator, this.denominator));\n }\n equalTo(other) {\n const otherParsed = tryParseFraction(other);\n return JSBI.equal(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(otherParsed.numerator, this.denominator));\n }\n greaterThan(other) {\n const otherParsed = tryParseFraction(other);\n return JSBI.greaterThan(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(otherParsed.numerator, this.denominator));\n }\n multiply(other) {\n const otherParsed = tryParseFraction(other);\n return new Fraction(JSBI.multiply(this.numerator, otherParsed.numerator), JSBI.multiply(this.denominator, otherParsed.denominator));\n }\n /**\n * Divides this {@link Fraction} by another {@link Fraction}.\n */\n divide(other) {\n const otherParsed = tryParseFraction(other);\n return new Fraction(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(this.denominator, otherParsed.numerator));\n }\n /**\n * Converts this {@link Fraction} to a string with the specified significant digits.\n * @param significantDigits\n * @param format\n * @param rounding\n * @returns\n */\n toSignificant(significantDigits, format = { groupSeparator: \"\" }, rounding = Rounding.ROUND_HALF_UP) {\n invariant(Number.isInteger(significantDigits), `${significantDigits} is not an integer.`);\n invariant(significantDigits > 0, `${significantDigits} is not positive.`);\n Decimal.set({\n precision: significantDigits + 1,\n rounding: toSignificantRounding[rounding],\n });\n const quotient = new Decimal(this.numerator.toString())\n .div(this.denominator.toString())\n .toSignificantDigits(significantDigits);\n return formatDecimal(quotient, quotient.decimalPlaces(), {\n ...format,\n rounding,\n });\n }\n toFixed(decimalPlaces, format = { groupSeparator: \"\" }, rounding = Rounding.ROUND_HALF_UP) {\n invariant(Number.isInteger(decimalPlaces), `${decimalPlaces} is not an integer.`);\n invariant(decimalPlaces >= 0, `${decimalPlaces} is negative.`);\n return formatBig(new Big(this.numerator.toString()).div(this.denominator.toString()), decimalPlaces, { ...format, rounding });\n }\n /**\n * Helper method for converting any super class back to a fraction\n */\n get asFraction() {\n return new Fraction(this.numerator, this.denominator);\n }\n /**\n * Gets the value of this {@link Fraction} as a number.\n */\n get asNumber() {\n if (JSBI.equal(this.denominator, ZERO)) {\n return JSBI.greaterThan(this.numerator, ZERO)\n ? Number.POSITIVE_INFINITY\n : JSBI.lessThan(this.numerator, ZERO)\n ? Number.NEGATIVE_INFINITY\n : Number.NaN;\n }\n const result = JSBI.toNumber(this.numerator) / JSBI.toNumber(this.denominator);\n if (!Number.isNaN(result)) {\n return result;\n }\n return parseFloat(this.toFixed(10));\n }\n /**\n * Returns true if this number (the numerator) is equal to zero and the denominator is non-zero.\n * @returns\n */\n isZero() {\n return JSBI.EQ(this.numerator, ZERO) && JSBI.NE(this.denominator, ZERO);\n }\n /**\n * Returns true if this number (the numerator) is not equal to zero.\n * @returns\n */\n isNonZero() {\n return !this.isZero();\n }\n}\nFraction.ZERO = new Fraction(0);\nFraction.ONE = new Fraction(1);\n//# sourceMappingURL=fraction.js.map","import { Fraction } from \"./fraction.js\";\nconst ONE_HUNDRED = new Fraction(100);\n/**\n * Converts a fraction to a percent\n * @param fraction the fraction to convert\n */\nfunction toPercent(fraction) {\n return new Percent(fraction.numerator, fraction.denominator);\n}\nexport class Percent extends Fraction {\n constructor() {\n super(...arguments);\n /**\n * This boolean prevents a fraction from being interpreted as a Percent\n */\n this.isPercent = true;\n }\n /**\n * Parses a {@link Percent} from a float.\n * @param number Number to parse. (100% is 1.00)\n * @param decimals Number of decimals of precision. (default 10)\n * @returns Percent\n */\n static fromNumber(number, decimals = 10) {\n const frac = Fraction.fromNumber(number, decimals);\n return new Percent(frac.numerator, frac.denominator);\n }\n /**\n * Constructs an {@link Percent} from a {@link PercentObject}.\n * @param other\n * @returns\n */\n static fromObject(other) {\n if (other instanceof Percent) {\n return other;\n }\n return toPercent(Fraction.fromObject(other));\n }\n /**\n * JSON representation of the {@link Percent}.\n */\n toJSON() {\n return {\n ...super.toJSON(),\n isPercent: true,\n };\n }\n /**\n * Creates a {@link Percent} from a {@link Fraction}.\n */\n static fromFraction(fraction) {\n return toPercent(fraction);\n }\n /**\n * Parses a {@link Percent} from a given number of bps.\n * @returns Percent\n */\n static fromBPS(bps) {\n return new Percent(bps, 10000);\n }\n add(other) {\n return toPercent(super.add(other));\n }\n subtract(other) {\n return toPercent(super.subtract(other));\n }\n multiply(other) {\n return toPercent(super.multiply(other));\n }\n divide(other) {\n return toPercent(super.divide(other));\n }\n /**\n * Swaps the numerator and denominator of the {@link Percent}.\n * @returns\n */\n invert() {\n return new Percent(this.denominator, this.numerator);\n }\n toSignificant(significantDigits = 5, format, rounding) {\n return super\n .multiply(ONE_HUNDRED)\n .toSignificant(significantDigits, format, rounding);\n }\n toFixed(decimalPlaces = 2, format, rounding) {\n return super.multiply(ONE_HUNDRED).toFixed(decimalPlaces, format, rounding);\n }\n /**\n * Returns true if the other object is a {@link Percent}.\n *\n * @param other\n * @returns\n */\n static isPercent(other) {\n return (Fraction.isFraction(other) &&\n (other === null || other === void 0 ? void 0 : other.isPercent) === true);\n }\n}\n/**\n * Zero percent.\n */\nPercent.ZERO = new Percent(0);\n/**\n * 1%\n */\nPercent.ONE = new Percent(1, 100);\n/**\n * 100% (1/1)\n */\nPercent.ONE_HUNDRED = new Percent(1);\n//# sourceMappingURL=percent.js.map","var _a, _b;\nimport { default as Big } from \"big.js\";\nimport { default as JSBI } from \"jsbi\";\nimport { default as invariant } from \"tiny-invariant\";\nimport { MAX_U64, MAX_U256, Rounding, ZERO } from \"./constants.js\";\nimport { formatBig } from \"./format.js\";\nimport { Fraction } from \"./fraction.js\";\nimport { Percent } from \"./percent.js\";\nimport { makeDecimalMultiplier, parseBigintIsh } from \"./utils.js\";\n/**\n * Gets the separator of the provided locale.\n *\n * Source: {@link https://stackoverflow.com/questions/1074660/with-a-browser-how-do-i-know-which-decimal-separator-does-the-operating-system}\n *\n * @param separatorType\n * @param locale\n * @returns\n */\nexport const getSeparator = (separatorType, locale) => {\n var _a;\n const numberWithDecimalSeparator = 1000.1;\n return (_a = Intl.NumberFormat(locale)\n .formatToParts(numberWithDecimalSeparator)\n .find((part) => part.type === separatorType)) === null || _a === void 0 ? void 0 : _a.value;\n};\n/**\n * Gets the decimal separator of the provided locale.\n *\n * Source: {@link https://stackoverflow.com/questions/1074660/with-a-browser-how-do-i-know-which-decimal-separator-does-the-operating-system}\n *\n * @param locale\n * @returns\n */\nexport const getDecimalSeparator = (locale) => {\n return getSeparator(\"decimal\", locale);\n};\n/**\n * Gets the group separator of the provided locale.\n *\n * Source: {@link https://stackoverflow.com/questions/1074660/with-a-browser-how-do-i-know-which-decimal-separator-does-the-operating-system}\n *\n * @param locale\n * @returns\n */\nexport const getGroupSeparator = (locale) => {\n return getSeparator(\"group\", locale);\n};\n/**\n * The decimal separator of the default locale.\n */\nexport const DEFAULT_LOCALE_DECIMAL_SEPARATOR = (_a = getDecimalSeparator()) !== null && _a !== void 0 ? _a : \".\";\n/**\n * The group separator of the default locale.\n */\nexport const DEFAULT_LOCALE_GROUP_SEPARATOR = (_b = getGroupSeparator()) !== null && _b !== void 0 ? _b : \",\";\n/**\n * The default decimal separator.\n */\nexport const DEFAULT_DECIMAL_SEPARATOR = \".\";\n/**\n * The default group separator.\n */\nexport const DEFAULT_GROUP_SEPARATOR = \",\";\n/**\n * Parses a token amount from a decimal representation.\n * @param token\n * @param uiAmount\n * @returns\n */\nexport const parseAmountFromString = (token, uiAmount, decimalSeparator = DEFAULT_DECIMAL_SEPARATOR, groupSeparator = DEFAULT_GROUP_SEPARATOR) => {\n const parts = uiAmount.split(decimalSeparator);\n if (parts.length === 0) {\n throw new Error(\"empty number\");\n }\n const [wholeRaw, fractionRaw] = parts;\n const whole = wholeRaw\n ? JSBI.BigInt(wholeRaw.split(groupSeparator).join(\"\"))\n : ZERO;\n const fraction = fractionRaw\n ? JSBI.BigInt(fractionRaw.slice(0, token.decimals) +\n Array(token.decimals).fill(\"0\").slice(fractionRaw.length).join(\"\"))\n : ZERO;\n const combined = JSBI.add(JSBI.multiply(whole, makeDecimalMultiplier(token.decimals)), fraction);\n return combined;\n};\n/**\n * Thrown when a token amount overflows.\n */\nexport class TokenAmountOverflow extends RangeError {\n constructor(type, amount) {\n super(`Token amount overflows ${type}: ${amount.toString()}`);\n }\n}\n/**\n * Thrown when a token amount underflows.\n */\nexport class TokenAmountUnderflow extends RangeError {\n constructor(amount) {\n super(`Token amount must be greater than zero: ${amount.toString()}`);\n }\n}\n/**\n * Validates that a number falls within the range of u64.\n * @param value\n */\nexport function validateU64(value) {\n if (!JSBI.greaterThanOrEqual(value, ZERO)) {\n throw new TokenAmountUnderflow(value);\n }\n if (!JSBI.lessThanOrEqual(value, MAX_U64)) {\n throw new TokenAmountOverflow(\"u64\", value);\n }\n}\n/**\n * Validates that a number falls within the range of u256.\n * @param value\n */\nexport function validateU256(value) {\n if (!JSBI.greaterThanOrEqual(value, ZERO)) {\n throw new TokenAmountUnderflow(value);\n }\n if (!JSBI.lessThanOrEqual(value, MAX_U256)) {\n throw new TokenAmountOverflow(\"u256\", value);\n }\n}\nexport const stripTrailingZeroes = (num) => {\n const [head, tail, ...rest] = num.split(\".\");\n if (rest.length > 0 || !head) {\n console.warn(`Invalid number passed to stripTrailingZeroes: ${num}`);\n return num;\n }\n if (!tail) {\n return num;\n }\n const newTail = tail.replace(/0+$/, \"\");\n return newTail === \"\" ? head : `${head}.${newTail}`;\n};\n/**\n * Represents a quantity of tokens.\n */\nexport class TokenAmount extends Fraction {\n /**\n * amount _must_ be raw, i.e. in the native representation\n */\n constructor(token, amount, validate) {\n const parsedAmount = parseBigintIsh(amount);\n validate === null || validate === void 0 ? void 0 : validate(parsedAmount);\n super(parsedAmount, makeDecimalMultiplier(token.decimals));\n this.token = token;\n this.token = token;\n }\n withAmount(amount) {\n return this.new(this.token, amount);\n }\n get raw() {\n return this.numerator;\n }\n toSignificant(significantDigits = 6, format, rounding = Rounding.ROUND_DOWN) {\n return super.toSignificant(significantDigits, format, rounding);\n }\n toFixed(decimalPlaces = this.token.decimals, format, rounding = Rounding.ROUND_DOWN) {\n invariant(decimalPlaces <= this.token.decimals, \"DECIMALS\");\n return super.toFixed(decimalPlaces, format, rounding);\n }\n toExact(format = { groupSeparator: \"\" }) {\n return formatBig(new Big(this.numerator.toString()).div(this.denominator.toString()), this.token.decimals, format);\n }\n add(other) {\n invariant(this.token.equals(other.token), `add token mismatch: ${this.token.toString()} !== ${other.token.toString()}`);\n return this.withAmount(JSBI.add(this.raw, other.raw));\n }\n subtract(other) {\n invariant(this.token.equals(other.token), `subtract token mismatch: ${this.token.toString()} !== ${other.token.toString()}`);\n return this.withAmount(JSBI.subtract(this.raw, other.raw));\n }\n /**\n * Gets this TokenAmount as a percentage of the other TokenAmount.\n * @param other\n * @returns\n */\n percentOf(other) {\n invariant(this.token.equals(other.token), `percentOf token mismatch: ${this.token.toString()} !== ${other.token.toString()}`);\n const frac = this.divide(other);\n return new Percent(frac.numerator, frac.denominator);\n }\n /**\n * Gets this TokenAmount as a percentage of the other TokenAmount.\n * @param other\n * @returns\n */\n divideBy(other) {\n const frac = this.divide(other);\n return new Percent(frac.numerator, frac.denominator);\n }\n /**\n * Multiplies this token amount by a fraction.\n * WARNING: this loses precision\n * @param percent\n * @returns\n */\n scale(fraction) {\n return this.withAmount(fraction.asFraction.multiply(this.raw).toFixed(0));\n }\n /**\n * Reduces this token amount by a percent.\n * WARNING: this loses precision\n * @param percent\n * @returns\n */\n reduceBy(percent) {\n return this.scale(Percent.ONE_HUNDRED.subtract(percent));\n }\n /**\n * Formats the token amount quantity with units.\n *\n * This function is not locale-specific: it hardcodes \"en-US\"-like behavior.\n *\n * @returns\n */\n formatUnits() {\n return `${stripTrailingZeroes(this.toExact({\n groupSeparator: DEFAULT_GROUP_SEPARATOR,\n groupSize: 3,\n decimalSeparator: DEFAULT_DECIMAL_SEPARATOR,\n }))} ${this.token.symbol}`;\n }\n /**\n * Formats this number using Intl.NumberFormatOptions\n * @param param0\n * @returns\n */\n format({ numberFormatOptions, locale } = {}) {\n return `${numberFormatOptions !== undefined\n ? this.asNumber.toLocaleString(locale, numberFormatOptions)\n : stripTrailingZeroes(this.toFixed(this.token.decimals))}`;\n }\n /**\n * Gets the value of this {@link TokenAmount} as a number.\n */\n get asNumber() {\n return parseFloat(this.toExact());\n }\n /**\n * Returns true if the other object is a {@link TokenAmount}.\n *\n * @param other\n * @returns\n */\n static isTokenAmount(other) {\n return (Fraction.isFraction(other) &&\n !!(other === null || other === void 0 ? void 0 : other.token));\n }\n // ----------------------------------------------------------------\n // DEPRECATED FUNCTIONS\n // ----------------------------------------------------------------\n /**\n * Gets this TokenAmount as a percentage of the other TokenAmount.\n * @param other\n * @deprecated use {@link percentOf}\n * @returns\n */\n divideByAmount(other) {\n return this.percentOf(other);\n }\n /**\n * Multiplies this token amount by a fraction.\n * WARNING: this loses precision\n * @param percent\n * @deprecated use {@link scale}\n * @returns\n */\n multiplyBy(fraction) {\n return this.scale(fraction);\n }\n}\n//# sourceMappingURL=tokenAmount.js.map","/**\n * These types all come from the @solana/spl-token-registry package.\n *\n * We re-export them here so we do not have to have a hard dependency on\n * that package, which is massive.\n */\n/**\n * Chain ID.\n */\nexport var ENV;\n(function (ENV) {\n ENV[ENV[\"MainnetBeta\"] = 101] = \"MainnetBeta\";\n ENV[ENV[\"Testnet\"] = 102] = \"Testnet\";\n ENV[ENV[\"Devnet\"] = 103] = \"Devnet\";\n})(ENV || (ENV = {}));\n//# sourceMappingURL=splTokenRegistry.js.map","var _a;\nimport { PublicKey } from \"@saberhq/solana-contrib\";\nimport { NATIVE_MINT } from \"@solana/spl-token\";\nimport { deserializeMint } from \"./layout.js\";\n/**\n * Magic value representing the raw, underlying Solana native asset.\n */\nexport const RAW_SOL_MINT = new PublicKey(\"RawSo11111111111111111111111111111111111112\");\n/**\n * Token information.\n */\nexport class Token {\n constructor(info) {\n var _b;\n this.info = info;\n this._mintAccount = null;\n this.network = (_b = chainIdToNetwork(info.chainId)) !== null && _b !== void 0 ? _b : \"localnet\";\n }\n /**\n * The mint PublicKey of the token.\n *\n * Avoid using this value to print it to a string, as base58\n * strings are relatively slow to create since they require the use\n * of hash functions.\n */\n get mintAccount() {\n if (this._mintAccount) {\n return this._mintAccount;\n }\n this._mintAccount = new PublicKey(this.info.address);\n return this._mintAccount;\n }\n /**\n * If true, this token represents unwrapped, native, \"raw\" SOL.\n */\n get isRawSOL() {\n return this.mintAccount.equals(RAW_SOL_MINT);\n }\n /**\n * The Base58 string representation of the mint address.\n */\n get address() {\n return this.info.address;\n }\n /**\n * The chain ID of the token.\n */\n get chainId() {\n return this.info.chainId;\n }\n /**\n * Number of decimals of the token.\n */\n get decimals() {\n return this.info.decimals;\n }\n /**\n * The name of the token.\n */\n get name() {\n return this.info.name;\n }\n /**\n * The symbol of the token.\n */\n get symbol() {\n return this.info.symbol;\n }\n /**\n * The token's icon to render.\n */\n get icon() {\n return this.info.logoURI;\n }\n equals(other) {\n return tokensEqual(this, other);\n }\n toString() {\n return `Token[mint=${this.address}, decimals=${this.decimals}, network=${this.network}]`;\n }\n toJSON() {\n return this.info;\n }\n /**\n * Returns true if the given tag is present.\n * @param tag The tag to check.\n * @returns\n */\n hasTag(tag) {\n var _b;\n return !!((_b = this.info.tags) === null || _b === void 0 ? void 0 : _b.includes(tag));\n }\n}\n_a = Token;\n/**\n * Loads a token from a Mint.\n * @param mint\n * @param opts\n * @returns\n */\nToken.fromMint = (mint, decimals, opts = {}) => {\n var _b, _c, _d;\n return new Token({\n ...opts,\n // required\n address: mint.toString(),\n decimals,\n // optional\n name: (_b = opts.name) !== null && _b !== void 0 ? _b : `Token ${mint.toString().slice(0, 4)}`,\n symbol: (_c = opts.symbol) !== null && _c !== void 0 ? _c : mint.toString().slice(0, 5),\n chainId: (_d = opts.chainId) !== null && _d !== void 0 ? _d : ChainId.Localnet,\n });\n};\n/**\n * Loads a token from a Connection.\n *\n * @param connection\n * @param mint\n * @param info\n */\nToken.load = async (connection, mint, info = {}) => {\n if (typeof info.decimals === \"number\") {\n return Token.fromMint(mint, info.decimals, info);\n }\n const mintAccountInfo = await connection.getAccountInfo(mint);\n if (!mintAccountInfo) {\n return null;\n }\n const mintInfo = deserializeMint(mintAccountInfo.data);\n return Token.fromMint(mint, mintInfo.decimals, info);\n};\n/**\n * Checks if two tokens are equal.\n * @param a\n * @param b\n * @returns\n */\nexport const tokensEqual = (a, b) => a !== undefined &&\n b !== undefined &&\n a.address === b.address &&\n a.network === b.network;\nconst rawSol = {\n address: RAW_SOL_MINT.toString(),\n name: \"Solana\",\n symbol: \"SOL\",\n decimals: 9,\n logoURI: \"https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png\",\n};\nconst wrappedSol = {\n address: NATIVE_MINT.toString(),\n name: \"Wrapped SOL\",\n symbol: \"SOL\",\n decimals: 9,\n logoURI: \"https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png\",\n};\n/**\n * Creates a Token for all networks.\n */\nexport const makeTokenForAllNetworks = (token) => ({\n \"mainnet-beta\": new Token({ ...token, chainId: ChainId.MainnetBeta }),\n devnet: new Token({ ...token, chainId: ChainId.Devnet }),\n testnet: new Token({ ...token, chainId: ChainId.Testnet }),\n localnet: new Token({ ...token, chainId: ChainId.Localnet }),\n});\n// comes from @solana/spl-token-registry, except we've added localnet\nexport var ChainId;\n(function (ChainId) {\n ChainId[ChainId[\"MainnetBeta\"] = 101] = \"MainnetBeta\";\n ChainId[ChainId[\"Testnet\"] = 102] = \"Testnet\";\n ChainId[ChainId[\"Devnet\"] = 103] = \"Devnet\";\n ChainId[ChainId[\"Localnet\"] = 104] = \"Localnet\";\n})(ChainId || (ChainId = {}));\nexport const NETWORK_TO_CHAIN_ID = {\n \"mainnet-beta\": ChainId.MainnetBeta,\n devnet: ChainId.Devnet,\n testnet: ChainId.Testnet,\n localnet: 104,\n};\nexport const CHAIN_ID_TO_NETWORK = Object.entries(NETWORK_TO_CHAIN_ID).reduce((acc, [network, env]) => ({ ...acc, [env]: network }), {});\n/**\n * Gets the chain id associated with a network.\n * @param network\n * @returns\n */\nexport const networkToChainId = (network) => NETWORK_TO_CHAIN_ID[network];\n/**\n * Gets the Network associated with a chain id.\n * @param network\n * @returns\n */\nexport const chainIdToNetwork = (env) => CHAIN_ID_TO_NETWORK[env];\n/**\n * Raw Solana token.\n *\n * This is a magic value. This is not a real token.\n */\nexport const RAW_SOL = makeTokenForAllNetworks(rawSol);\n/**\n * Wrapped Solana token.\n */\nexport const WRAPPED_SOL = makeTokenForAllNetworks(wrappedSol);\n//# sourceMappingURL=token.js.map","import { u64 } from \"@solana/spl-token\";\nimport { parseAmountFromString, parseBigintIsh, TokenAmount as UTokenAmount, validateU64, } from \"@ubeswap/token-math\";\nimport BN from \"bn.js\";\nexport class TokenAmount extends UTokenAmount {\n // amount _must_ be raw, i.e. in the native representation\n constructor(token, amount) {\n super(token, amount, validateU64);\n }\n new(token, amount) {\n // unsafe but nobody will be extending this anyway probably\n return new TokenAmount(token, amount);\n }\n /**\n * Parses a token amount from a decimal representation.\n * @param token\n * @param uiAmount\n * @returns\n */\n static parse(token, uiAmount) {\n const prev = parseAmountFromString(token, uiAmount, \".\", \",\");\n return new TokenAmount(token, prev);\n }\n /**\n * Divides this TokenAmount by a raw integer.\n * @param other\n * @returns\n */\n divideByInteger(other) {\n return new TokenAmount(this.token, this.toU64().div(new BN(parseBigintIsh(other).toString())));\n }\n /**\n * String representation of this token amount.\n */\n toString() {\n return `TokenAmount[Token=(${this.token.toString()}), amount=${this.toExact()}`;\n }\n /**\n * JSON representation of the token amount.\n */\n toJSON() {\n return {\n ...super.toJSON(),\n _isTA: true,\n mint: this.token.address,\n uiAmount: this.toExact(),\n };\n }\n /**\n * Converts this to the raw u64 used by the SPL library\n * @returns\n */\n toU64() {\n return new u64(this.raw.toString());\n }\n}\n//# sourceMappingURL=tokenAmount.js.map","/**\n * This file is a port of serum-common, which was built for web3.js 0.x.\n */\nimport { Token as SPLToken, TOKEN_PROGRAM_ID } from \"@solana/spl-token\";\nimport { Keypair, PublicKey, SystemProgram, Transaction, } from \"@solana/web3.js\";\nimport { deserializeAccount, deserializeMint, MintLayout, Token, } from \"./index.js\";\nexport * as token from \"./token.js\";\n/**\n * Default number of decimals of a token.\n */\nexport const DEFAULT_TOKEN_DECIMALS = 6;\nexport const SPL_SHARED_MEMORY_ID = new PublicKey(\"shmem4EWT2sPdVGvTZCzXXRAURL9G5vpPxNwSeKhHUL\");\nexport async function createMint(provider, authority, decimals) {\n if (authority === undefined) {\n authority = provider.wallet.publicKey;\n }\n const mint = Keypair.generate();\n const instructions = await createMintInstructions(provider, authority, mint.publicKey, decimals);\n const tx = new Transaction();\n tx.add(...instructions);\n await provider.send(tx, [mint]);\n return mint.publicKey;\n}\n/**\n * Creates a Token.\n *\n * @param provider\n * @param authority The mint authority.\n * @param decimals Number of decimals.\n * @returns\n */\nexport async function createToken(provider, authority, decimals = 6) {\n return Token.fromMint(await createMint(provider, authority, decimals), decimals);\n}\nexport async function createMintInstructions(provider, authority, mint, decimals = 6) {\n const instructions = [\n SystemProgram.createAccount({\n fromPubkey: provider.wallet.publicKey,\n newAccountPubkey: mint,\n space: MintLayout.span,\n lamports: await provider.connection.getMinimumBalanceForRentExemption(MintLayout.span),\n programId: TOKEN_PROGRAM_ID,\n }),\n SPLToken.createInitMintInstruction(TOKEN_PROGRAM_ID, mint, decimals, authority, null),\n ];\n return instructions;\n}\nexport async function createMintAndVault(provider, amount, owner, decimals) {\n if (owner === undefined) {\n owner = provider.wallet.publicKey;\n }\n const mint = Keypair.generate();\n const vault = Keypair.generate();\n const tx = new Transaction();\n tx.add(...(await createMintInstructions(provider, provider.wallet.publicKey, mint.publicKey, decimals)), SystemProgram.createAccount({\n fromPubkey: provider.wallet.publicKey,\n newAccountPubkey: vault.publicKey,\n space: 165,\n lamports: await provider.connection.getMinimumBalanceForRentExemption(165),\n programId: TOKEN_PROGRAM_ID,\n }), SPLToken.createInitAccountInstruction(TOKEN_PROGRAM_ID, mint.publicKey, vault.publicKey, owner), SPLToken.createMintToInstruction(TOKEN_PROGRAM_ID, mint.publicKey, vault.publicKey, provider.wallet.publicKey, [], amount));\n await provider.send(tx, [mint, vault]);\n return [mint.publicKey, vault.publicKey];\n}\nexport async function createTokenAccountInstrs(provider, newAccountPubkey, mint, owner, lamports) {\n if (lamports === undefined) {\n lamports = await provider.connection.getMinimumBalanceForRentExemption(165);\n }\n return [\n SystemProgram.createAccount({\n fromPubkey: provider.wallet.publicKey,\n newAccountPubkey,\n space: 165,\n lamports,\n programId: TOKEN_PROGRAM_ID,\n }),\n SPLToken.createInitAccountInstruction(TOKEN_PROGRAM_ID, mint, newAccountPubkey, owner),\n ];\n}\nexport async function createAccountRentExempt(provider, programId, size) {\n const acc = Keypair.generate();\n const tx = new Transaction();\n tx.add(SystemProgram.createAccount({\n fromPubkey: provider.wallet.publicKey,\n newAccountPubkey: acc.publicKey,\n space: size,\n lamports: await provider.connection.getMinimumBalanceForRentExemption(size),\n programId,\n }));\n await provider.send(tx, [acc]);\n return acc;\n}\nexport async function getMintInfo(provider, addr) {\n const depositorAccInfo = await provider.getAccountInfo(addr);\n if (depositorAccInfo === null) {\n throw new Error(\"Failed to find token mint account\");\n }\n return deserializeMint(depositorAccInfo.accountInfo.data);\n}\nexport async function getTokenAccount(provider, addr) {\n const depositorAccInfo = await provider.getAccountInfo(addr);\n if (depositorAccInfo === null) {\n throw new Error(\"Failed to find token account\");\n }\n return deserializeAccount(depositorAccInfo.accountInfo.data);\n}\nexport function sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n//# sourceMappingURL=common.js.map","import { ONE, ZERO } from \"@saberhq/token-utils\";\nimport JSBI from \"jsbi\";\nconst N_COINS = JSBI.BigInt(2); // n\nconst abs = (a) => {\n if (JSBI.greaterThan(a, ZERO)) {\n return a;\n }\n return JSBI.unaryMinus(a);\n};\n// maximum iterations of newton's method approximation\nconst MAX_ITERS = 20;\n/**\n * Compute the StableSwap invariant\n * @param ampFactor Amplification coefficient (A)\n * @param amountA Swap balance of token A\n * @param amountB Swap balance of token B\n * Reference: https://github.com/curvefi/curve-contract/blob/7116b4a261580813ef057887c5009e22473ddb7d/tests/simulation.py#L31\n */\nexport const computeD = (ampFactor, amountA, amountB) => {\n const Ann = JSBI.multiply(ampFactor, N_COINS); // A*n^n\n const S = JSBI.add(amountA, amountB); // sum(x_i), a.k.a S\n if (JSBI.equal(S, ZERO)) {\n return ZERO;\n }\n let dPrev = ZERO;\n let d = S;\n for (let i = 0; JSBI.greaterThan(abs(JSBI.subtract(d, dPrev)), ONE) && i < MAX_ITERS; i++) {\n dPrev = d;\n let dP = d;\n dP = JSBI.divide(JSBI.multiply(dP, d), JSBI.multiply(amountA, N_COINS));\n dP = JSBI.divide(JSBI.multiply(dP, d), JSBI.multiply(amountB, N_COINS));\n const dNumerator = JSBI.multiply(d, JSBI.add(JSBI.multiply(Ann, S), JSBI.multiply(dP, N_COINS)));\n const dDenominator = JSBI.add(JSBI.multiply(d, JSBI.subtract(Ann, ONE)), JSBI.multiply(dP, JSBI.add(N_COINS, ONE)));\n d = JSBI.divide(dNumerator, dDenominator);\n }\n return d;\n};\n/**\n * Compute Y amount in respect to X on the StableSwap curve\n * @param ampFactor Amplification coefficient (A)\n * @param x The quantity of underlying asset\n * @param d StableSwap invariant\n * Reference: https://github.com/curvefi/curve-contract/blob/7116b4a261580813ef057887c5009e22473ddb7d/tests/simulation.py#L55\n */\nexport const computeY = (ampFactor, x, d) => {\n const Ann = JSBI.multiply(ampFactor, N_COINS); // A*n^n\n // sum' = prod' = x\n const b = JSBI.subtract(JSBI.add(x, JSBI.divide(d, Ann)), d); // b = sum' - (A*n**n - 1) * D / (A * n**n)\n const c = JSBI.divide(JSBI.multiply(JSBI.multiply(d, // c = D ** (n + 1) / (n ** (2 * n) * prod' * A)\n d), d), JSBI.multiply(N_COINS, JSBI.multiply(N_COINS, JSBI.multiply(x, Ann))));\n let yPrev = ZERO;\n let y = d;\n for (let i = 0; i < MAX_ITERS && JSBI.greaterThan(abs(JSBI.subtract(y, yPrev)), ONE); i++) {\n yPrev = y;\n y = JSBI.divide(JSBI.add(JSBI.multiply(y, y), c), JSBI.add(JSBI.multiply(N_COINS, y), b));\n }\n return y;\n};\n//# sourceMappingURL=curve.js.map","import { Fraction, ONE, TokenAmount, ZERO } from \"@saberhq/token-utils\";\nimport JSBI from \"jsbi\";\nimport mapValues from \"lodash.mapvalues\";\nimport { computeD, computeY } from \"./curve\";\n/**\n * Calculates the current virtual price of the exchange.\n * @param exchange\n * @returns\n */\nexport const calculateVirtualPrice = (exchange) => {\n const amount = exchange.lpTotalSupply;\n if (amount === undefined || amount.equalTo(0)) {\n // pool has no tokens\n return null;\n }\n const price = new Fraction(computeD(exchange.ampFactor, exchange.reserves[0].amount.raw, exchange.reserves[1].amount.raw), amount.raw);\n return price;\n};\n/**\n * Calculates the estimated output amount of a swap.\n * @param exchange\n * @param fromAmount\n * @returns\n */\nexport const calculateEstimatedSwapOutputAmount = (exchange, fromAmount) => {\n const [fromReserves, toReserves] = fromAmount.token.equals(exchange.reserves[0].amount.token)\n ? [exchange.reserves[0], exchange.reserves[1]]\n : [exchange.reserves[1], exchange.reserves[0]];\n if (fromAmount.equalTo(0)) {\n const zero = new TokenAmount(toReserves.amount.token, ZERO);\n return {\n outputAmountBeforeFees: zero,\n outputAmount: zero,\n fee: zero,\n lpFee: zero,\n adminFee: zero,\n };\n }\n const amp = exchange.ampFactor;\n const amountBeforeFees = JSBI.subtract(toReserves.amount.raw, computeY(amp, JSBI.add(fromReserves.amount.raw, fromAmount.raw), computeD(amp, fromReserves.amount.raw, toReserves.amount.raw)));\n const outputAmountBeforeFees = new TokenAmount(toReserves.amount.token, amountBeforeFees);\n const fee = new TokenAmount(toReserves.amount.token, exchange.fees.trade.asFraction.multiply(amountBeforeFees).toFixed(0));\n const adminFee = new TokenAmount(toReserves.amount.token, exchange.fees.adminTrade.asFraction.multiply(fee.raw).toFixed(0));\n const lpFee = fee.subtract(adminFee);\n const outputAmount = new TokenAmount(toReserves.amount.token, JSBI.subtract(amountBeforeFees, fee.raw));\n return {\n outputAmountBeforeFees,\n outputAmount,\n fee: fee,\n lpFee,\n adminFee,\n };\n};\nconst N_COINS = JSBI.BigInt(2);\n/**\n * Calculates the amount of tokens withdrawn if only withdrawing one token.\n * @returns\n */\nexport const calculateEstimatedWithdrawOneAmount = ({ exchange, poolTokenAmount, withdrawToken, }) => {\n var _a, _b, _c, _d;\n if (poolTokenAmount.equalTo(0)) {\n // final quantities\n const quantities = {\n withdrawAmount: ZERO,\n withdrawAmountBeforeFees: ZERO,\n swapFee: ZERO,\n withdrawFee: ZERO,\n lpSwapFee: ZERO,\n lpWithdrawFee: ZERO,\n adminSwapFee: ZERO,\n adminWithdrawFee: ZERO,\n };\n return mapValues(quantities, (q) => new TokenAmount(withdrawToken, q));\n }\n const { ampFactor, fees } = exchange;\n const [baseReserves, quoteReserves] = [\n (_b = (_a = exchange.reserves.find((r) => r.amount.token.equals(withdrawToken))) === null || _a === void 0 ? void 0 : _a.amount.raw) !== null && _b !== void 0 ? _b : ZERO,\n (_d = (_c = exchange.reserves.find((r) => !r.amount.token.equals(withdrawToken))) === null || _c === void 0 ? void 0 : _c.amount.raw) !== null && _d !== void 0 ? _d : ZERO,\n ];\n const d_0 = computeD(ampFactor, baseReserves, quoteReserves);\n const d_1 = JSBI.subtract(d_0, JSBI.divide(JSBI.multiply(poolTokenAmount.raw, d_0), exchange.lpTotalSupply.raw));\n const new_y = computeY(ampFactor, quoteReserves, d_1);\n // expected_base_amount = swap_base_amount * d_1 / d_0 - new_y;\n const expected_base_amount = JSBI.subtract(JSBI.divide(JSBI.multiply(baseReserves, d_1), d_0), new_y);\n // expected_quote_amount = swap_quote_amount - swap_quote_amount * d_1 / d_0;\n const expected_quote_amount = JSBI.subtract(quoteReserves, JSBI.divide(JSBI.multiply(quoteReserves, d_1), d_0));\n // new_base_amount = swap_base_amount - expected_base_amount * fee / fee_denominator;\n const new_base_amount = new Fraction(baseReserves.toString(), 1).subtract(normalizedTradeFee(fees, N_COINS, expected_base_amount));\n // new_quote_amount = swap_quote_amount - expected_quote_amount * fee / fee_denominator;\n const new_quote_amount = new Fraction(quoteReserves.toString(), 1).subtract(normalizedTradeFee(fees, N_COINS, expected_quote_amount));\n const dy = new_base_amount.subtract(computeY(ampFactor, JSBI.BigInt(new_quote_amount.toFixed(0)), d_1).toString());\n const dy_0 = JSBI.subtract(baseReserves, new_y);\n // lp fees\n const swapFee = new Fraction(dy_0.toString(), 1).subtract(dy);\n const withdrawFee = dy.multiply(fees.withdraw.asFraction);\n // admin fees\n const adminSwapFee = swapFee.multiply(fees.adminTrade.asFraction);\n const adminWithdrawFee = withdrawFee.multiply(fees.adminWithdraw.asFraction);\n // final LP fees\n const lpSwapFee = swapFee.subtract(adminSwapFee);\n const lpWithdrawFee = withdrawFee.subtract(adminWithdrawFee);\n // final withdraw amount\n const withdrawAmount = dy.subtract(withdrawFee).subtract(swapFee);\n // final quantities\n const quantities = {\n withdrawAmount,\n withdrawAmountBeforeFees: dy,\n swapFee,\n withdrawFee,\n lpSwapFee,\n lpWithdrawFee,\n adminSwapFee,\n adminWithdrawFee,\n };\n return mapValues(quantities, (q) => new TokenAmount(withdrawToken, q.toFixed(0)));\n};\n/**\n * Compute normalized fee for symmetric/asymmetric deposits/withdraws\n */\nexport const normalizedTradeFee = ({ trade }, n_coins, amount) => {\n const adjustedTradeFee = new Fraction(n_coins, JSBI.multiply(JSBI.subtract(n_coins, ONE), JSBI.BigInt(4)));\n return new Fraction(amount, 1).multiply(trade).multiply(adjustedTradeFee);\n};\nexport const calculateEstimatedWithdrawAmount = ({ poolTokenAmount, reserves, fees, lpTotalSupply, }) => {\n if (lpTotalSupply.equalTo(0)) {\n const zero = reserves.map((r) => new TokenAmount(r.amount.token, ZERO));\n return {\n withdrawAmounts: zero,\n withdrawAmountsBeforeFees: zero,\n fees: zero,\n };\n }\n const share = poolTokenAmount.divide(lpTotalSupply);\n const withdrawAmounts = reserves.map(({ amount }) => {\n const baseAmount = share.multiply(amount.raw);\n const fee = baseAmount.multiply(fees.withdraw.asFraction);\n return [\n new TokenAmount(amount.token, JSBI.BigInt(baseAmount.subtract(fee).toFixed(0))),\n {\n beforeFees: JSBI.BigInt(baseAmount.toFixed(0)),\n fee: JSBI.BigInt(fee.toFixed(0)),\n },\n ];\n });\n return {\n withdrawAmountsBeforeFees: withdrawAmounts.map(([amt, { beforeFees }]) => new TokenAmount(amt.token, beforeFees)),\n withdrawAmounts: [withdrawAmounts[0][0], withdrawAmounts[1][0]],\n fees: withdrawAmounts.map(([amt, { fee }]) => new TokenAmount(amt.token, fee)),\n };\n};\n/**\n * Calculate the estimated amount of LP tokens minted after a deposit.\n * @param exchange\n * @param depositAmountA\n * @param depositAmountB\n * @returns\n */\nexport const calculateEstimatedMintAmount = (exchange, depositAmountA, depositAmountB) => {\n if (JSBI.equal(depositAmountA, ZERO) && JSBI.equal(depositAmountB, ZERO)) {\n const zero = new TokenAmount(exchange.lpTotalSupply.token, ZERO);\n return {\n mintAmountBeforeFees: zero,\n mintAmount: zero,\n fees: zero,\n };\n }\n const amp = exchange.ampFactor;\n const [reserveA, reserveB] = exchange.reserves;\n const d0 = computeD(amp, reserveA.amount.raw, reserveB.amount.raw);\n const d1 = computeD(amp, JSBI.add(reserveA.amount.raw, depositAmountA), JSBI.add(reserveB.amount.raw, depositAmountB));\n if (JSBI.lessThan(d1, d0)) {\n throw new Error(\"New D cannot be less than previous D\");\n }\n const oldBalances = exchange.reserves.map((r) => r.amount.raw);\n const newBalances = [\n JSBI.add(reserveA.amount.raw, depositAmountA),\n JSBI.add(reserveB.amount.raw, depositAmountB),\n ];\n const adjustedBalances = newBalances.map((newBalance, i) => {\n const oldBalance = oldBalances[i];\n const idealBalance = new Fraction(d1, d0).multiply(oldBalance);\n const difference = idealBalance.subtract(newBalance);\n const diffAbs = difference.greaterThan(0)\n ? difference\n : difference.multiply(-1);\n const fee = normalizedTradeFee(exchange.fees, N_COINS, JSBI.BigInt(diffAbs.toFixed(0)));\n return JSBI.subtract(newBalance, JSBI.BigInt(fee.toFixed(0)));\n });\n const d2 = computeD(amp, adjustedBalances[0], adjustedBalances[1]);\n const lpSupply = exchange.lpTotalSupply;\n const mintAmountRaw = JSBI.divide(JSBI.multiply(lpSupply.raw, JSBI.subtract(d2, d0)), d0);\n const mintAmount = new TokenAmount(exchange.lpTotalSupply.token, mintAmountRaw);\n const mintAmountRawBeforeFees = JSBI.divide(JSBI.multiply(lpSupply.raw, JSBI.subtract(d1, d0)), d0);\n const fees = new TokenAmount(exchange.lpTotalSupply.token, JSBI.subtract(mintAmountRawBeforeFees, mintAmountRaw));\n const mintAmountBeforeFees = new TokenAmount(exchange.lpTotalSupply.token, mintAmountRawBeforeFees);\n return {\n mintAmount,\n mintAmountBeforeFees,\n fees,\n };\n};\n//# sourceMappingURL=amounts.js.map","import { PublicKey } from \"@solana/web3.js\";\nexport const DEFAULT_TOKEN_DECIMALS = 6;\nexport const ZERO_TS = 0;\nexport const SWAP_PROGRAM_ID = new PublicKey(\"SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ\");\n//# sourceMappingURL=constants.js.map","import { Percent, u64 } from \"@saberhq/token-utils\";\nexport const DEFAULT_FEE = new Percent(0, 10000);\nexport const ZERO_FEES = {\n /**\n * Fee per trade\n */\n trade: DEFAULT_FEE,\n withdraw: DEFAULT_FEE,\n adminTrade: DEFAULT_FEE,\n adminWithdraw: DEFAULT_FEE,\n};\nconst recommendedFeesRaw = {\n adminTradeFeeNumerator: 50,\n adminTradeFeeDenominator: 100,\n adminWithdrawFeeNumerator: 50,\n adminWithdrawFeeDenominator: 100,\n tradeFeeNumerator: 20,\n tradeFeeDenominator: 10000,\n withdrawFeeNumerator: 50,\n withdrawFeeDenominator: 10000,\n};\nexport const RECOMMENDED_FEES = {\n trade: new Percent(recommendedFeesRaw.tradeFeeNumerator, recommendedFeesRaw.tradeFeeDenominator),\n withdraw: new Percent(recommendedFeesRaw.withdrawFeeNumerator, recommendedFeesRaw.withdrawFeeDenominator),\n adminTrade: new Percent(recommendedFeesRaw.adminTradeFeeNumerator, recommendedFeesRaw.adminTradeFeeDenominator),\n adminWithdraw: new Percent(recommendedFeesRaw.adminWithdrawFeeNumerator, recommendedFeesRaw.adminWithdrawFeeDenominator),\n};\nexport const encodeFees = (fees) => ({\n adminTradeFeeNumerator: new u64(fees.adminTrade.numerator.toString()).toBuffer(),\n adminTradeFeeDenominator: new u64(fees.adminTrade.denominator.toString()).toBuffer(),\n adminWithdrawFeeNumerator: new u64(fees.adminWithdraw.numerator.toString()).toBuffer(),\n adminWithdrawFeeDenominator: new u64(fees.adminWithdraw.denominator.toString()).toBuffer(),\n tradeFeeNumerator: new u64(fees.trade.numerator.toString()).toBuffer(),\n tradeFeeDenominator: new u64(fees.trade.denominator.toString()).toBuffer(),\n withdrawFeeNumerator: new u64(fees.withdraw.numerator.toString()).toBuffer(),\n withdrawFeeDenominator: new u64(fees.withdraw.denominator.toString()).toBuffer(),\n});\nexport const decodeFees = (raw) => ({\n adminTrade: new Percent(u64.fromBuffer(Buffer.from(raw.adminTradeFeeNumerator)).toString(), u64.fromBuffer(Buffer.from(raw.adminTradeFeeDenominator)).toString()),\n adminWithdraw: new Percent(u64.fromBuffer(Buffer.from(raw.adminWithdrawFeeNumerator)).toString(), u64.fromBuffer(Buffer.from(raw.adminWithdrawFeeDenominator)).toString()),\n trade: new Percent(u64.fromBuffer(Buffer.from(raw.tradeFeeNumerator)).toString(), u64.fromBuffer(Buffer.from(raw.tradeFeeDenominator)).toString()),\n withdraw: new Percent(u64.fromBuffer(Buffer.from(raw.withdrawFeeNumerator)).toString(), u64.fromBuffer(Buffer.from(raw.withdrawFeeDenominator)).toString()),\n});\n//# sourceMappingURL=fees.js.map","import { TransactionInstruction } from \"@solana/web3.js\";\nexport const buildInstruction = ({ config: { swapProgramID }, keys, data, }) => {\n return new TransactionInstruction({\n keys,\n programId: swapProgramID,\n data,\n });\n};\n//# sourceMappingURL=common.js.map","import * as BufferLayout from \"@solana/buffer-layout\";\nimport { encodeFees, ZERO_FEES } from \"../state/fees\";\nimport { ApplyNewAdminIXLayout, PauseIXLayout, RampAIXLayout, SetFeeAccountIXLayout, SetNewFeesIXLayout, StopRampAIXLayout, UnpauseIXLayout, } from \".\";\nimport { buildInstruction } from \"./common\";\n/**\n * Admin instruction.\n */\nexport var AdminInstruction;\n(function (AdminInstruction) {\n AdminInstruction[AdminInstruction[\"RAMP_A\"] = 100] = \"RAMP_A\";\n AdminInstruction[AdminInstruction[\"STOP_RAMP_A\"] = 101] = \"STOP_RAMP_A\";\n AdminInstruction[AdminInstruction[\"PAUSE\"] = 102] = \"PAUSE\";\n AdminInstruction[AdminInstruction[\"UNPAUSE\"] = 103] = \"UNPAUSE\";\n AdminInstruction[AdminInstruction[\"SET_FEE_ACCOUNT\"] = 104] = \"SET_FEE_ACCOUNT\";\n AdminInstruction[AdminInstruction[\"APPLY_NEW_ADMIN\"] = 105] = \"APPLY_NEW_ADMIN\";\n AdminInstruction[AdminInstruction[\"COMMIT_NEW_ADMIN\"] = 106] = \"COMMIT_NEW_ADMIN\";\n AdminInstruction[AdminInstruction[\"SET_NEW_FEES\"] = 107] = \"SET_NEW_FEES\";\n})(AdminInstruction || (AdminInstruction = {}));\n/**\n * Creates a ramp A instruction.\n */\nexport const createAdminRampAInstruction = ({ config, state: { adminAccount }, targetAmp, stopRamp, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: true },\n { pubkey: adminAccount, isSigner: true, isWritable: false },\n ];\n const data = Buffer.alloc(RampAIXLayout.span);\n RampAIXLayout.encode({\n instruction: AdminInstruction.RAMP_A,\n targetAmp: targetAmp.toBuffer(),\n stopRampTS: Math.floor(stopRamp.getTime() / 1000),\n }, data);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n/**\n * Creates a stop ramp A instruction.\n */\nexport const createAdminStopRampAInstruction = ({ config, state: { adminAccount }, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: true },\n { pubkey: adminAccount, isSigner: true, isWritable: false },\n ];\n let data = Buffer.alloc(StopRampAIXLayout.span);\n const encodeLength = StopRampAIXLayout.encode({\n instruction: AdminInstruction.STOP_RAMP_A,\n }, data);\n data = data.slice(0, encodeLength);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n/**\n * Creates a pause instruction.\n */\nexport const createAdminPauseInstruction = ({ config, state: { adminAccount }, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: true },\n { pubkey: adminAccount, isSigner: true, isWritable: false },\n ];\n const data = Buffer.alloc(PauseIXLayout.span);\n PauseIXLayout.encode({\n instruction: AdminInstruction.PAUSE,\n }, data);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n/**\n * Creates an unpause instruction.\n */\nexport const createAdminUnpauseInstruction = ({ config, state: { adminAccount }, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: true },\n { pubkey: adminAccount, isSigner: true, isWritable: false },\n ];\n const data = Buffer.alloc(UnpauseIXLayout.span);\n UnpauseIXLayout.encode({\n instruction: AdminInstruction.UNPAUSE,\n }, data);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n/**\n * Creates a set fee account instruction.\n */\nexport const createAdminSetFeeAccountInstruction = ({ config, state: { adminAccount }, tokenAccount, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: true },\n { pubkey: adminAccount, isSigner: true, isWritable: false },\n { pubkey: tokenAccount, isSigner: false, isWritable: false },\n ];\n const data = Buffer.alloc(SetFeeAccountIXLayout.span);\n SetFeeAccountIXLayout.encode({\n instruction: AdminInstruction.SET_FEE_ACCOUNT,\n }, data);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n/**\n * Creates a set new fees instruction.\n */\nexport const createAdminApplyNewAdminInstruction = ({ config, state: { adminAccount }, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: true },\n { pubkey: adminAccount, isSigner: true, isWritable: false },\n ];\n const data = Buffer.alloc(ApplyNewAdminIXLayout.span);\n ApplyNewAdminIXLayout.encode({\n instruction: AdminInstruction.APPLY_NEW_ADMIN,\n }, data);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n/**\n * Creates a set new fees instruction.\n */\nexport const createAdminCommitNewAdminInstruction = ({ config, state: { adminAccount }, newAdminAccount, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: true },\n { pubkey: adminAccount, isSigner: true, isWritable: false },\n { pubkey: newAdminAccount, isSigner: false, isWritable: false },\n ];\n const dataLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\")]);\n const data = Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: AdminInstruction.COMMIT_NEW_ADMIN,\n }, data);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n/**\n * Creates a set new fees instruction.\n */\nexport const createAdminSetNewFeesInstruction = ({ config, state: { adminAccount }, fees = ZERO_FEES, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: true },\n { pubkey: adminAccount, isSigner: true, isWritable: false },\n ];\n const data = Buffer.alloc(SetNewFeesIXLayout.span);\n SetNewFeesIXLayout.encode({\n instruction: AdminInstruction.SET_NEW_FEES,\n fees: encodeFees(fees),\n }, data);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n//# sourceMappingURL=admin.js.map","import { PublicKeyLayout, Uint64Layout } from \"@saberhq/token-utils\";\nimport * as BufferLayout from \"@solana/buffer-layout\";\n/**\n * Layout for StableSwap fees\n */\nexport const FeesLayout = BufferLayout.struct([\n Uint64Layout(\"adminTradeFeeNumerator\"),\n Uint64Layout(\"adminTradeFeeDenominator\"),\n Uint64Layout(\"adminWithdrawFeeNumerator\"),\n Uint64Layout(\"adminWithdrawFeeDenominator\"),\n Uint64Layout(\"tradeFeeNumerator\"),\n Uint64Layout(\"tradeFeeDenominator\"),\n Uint64Layout(\"withdrawFeeNumerator\"),\n Uint64Layout(\"withdrawFeeDenominator\"),\n], \"fees\");\n/**\n * Layout for stable swap state\n */\nexport const StableSwapLayout = BufferLayout.struct([\n BufferLayout.u8(\"isInitialized\"),\n BufferLayout.u8(\"isPaused\"),\n BufferLayout.u8(\"nonce\"),\n Uint64Layout(\"initialAmpFactor\"),\n Uint64Layout(\"targetAmpFactor\"),\n BufferLayout.ns64(\"startRampTs\"),\n BufferLayout.ns64(\"stopRampTs\"),\n BufferLayout.ns64(\"futureAdminDeadline\"),\n PublicKeyLayout(\"futureAdminAccount\"),\n PublicKeyLayout(\"adminAccount\"),\n PublicKeyLayout(\"tokenAccountA\"),\n PublicKeyLayout(\"tokenAccountB\"),\n PublicKeyLayout(\"tokenPool\"),\n PublicKeyLayout(\"mintA\"),\n PublicKeyLayout(\"mintB\"),\n PublicKeyLayout(\"adminFeeAccountA\"),\n PublicKeyLayout(\"adminFeeAccountB\"),\n FeesLayout,\n]);\n//# sourceMappingURL=layout.js.map","import { Uint64Layout } from \"@saberhq/token-utils\";\nimport * as BufferLayout from \"@solana/buffer-layout\";\nimport { FeesLayout } from \"../state/layout\";\nexport const InitializeSwapIXLayout = BufferLayout.struct([\n BufferLayout.u8(\"instruction\"),\n BufferLayout.u8(\"nonce\"),\n Uint64Layout(\"ampFactor\"),\n FeesLayout,\n]);\nexport const SwapIXLayout = BufferLayout.struct([\n BufferLayout.u8(\"instruction\"),\n Uint64Layout(\"amountIn\"),\n Uint64Layout(\"minimumAmountOut\"),\n]);\nexport const DepositIXLayout = BufferLayout.struct([\n BufferLayout.u8(\"instruction\"),\n Uint64Layout(\"tokenAmountA\"),\n Uint64Layout(\"tokenAmountB\"),\n Uint64Layout(\"minimumPoolTokenAmount\"),\n]);\nexport const WithdrawIXLayout = BufferLayout.struct([\n BufferLayout.u8(\"instruction\"),\n Uint64Layout(\"poolTokenAmount\"),\n Uint64Layout(\"minimumTokenA\"),\n Uint64Layout(\"minimumTokenB\"),\n]);\nexport const WithdrawOneIXLayout = BufferLayout.struct([\n BufferLayout.u8(\"instruction\"),\n Uint64Layout(\"poolTokenAmount\"),\n Uint64Layout(\"minimumTokenAmount\"),\n]);\nexport const RampAIXLayout = BufferLayout.struct([\n BufferLayout.u8(\"instruction\"),\n Uint64Layout(\"targetAmp\"),\n BufferLayout.ns64(\"stopRampTS\"),\n]);\nexport const StopRampAIXLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\")]);\nexport const PauseIXLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\")]);\nexport const UnpauseIXLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\")]);\nexport const SetFeeAccountIXLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\")]);\nexport const ApplyNewAdminIXLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\")]);\nexport const CommitNewAdminIXLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\")]);\nexport const SetNewFeesIXLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\"), FeesLayout]);\n//# sourceMappingURL=layouts.js.map","import { encodeFees, ZERO_FEES } from \"../state\";\nimport { buildInstruction } from \"./common\";\nimport { DepositIXLayout, InitializeSwapIXLayout, SwapIXLayout, WithdrawIXLayout, WithdrawOneIXLayout, } from \"./layouts\";\n/**\n * Instruction enum.\n */\nexport var StableSwapInstruction;\n(function (StableSwapInstruction) {\n StableSwapInstruction[StableSwapInstruction[\"INITIALIZE\"] = 0] = \"INITIALIZE\";\n StableSwapInstruction[StableSwapInstruction[\"SWAP\"] = 1] = \"SWAP\";\n StableSwapInstruction[StableSwapInstruction[\"DEPOSIT\"] = 2] = \"DEPOSIT\";\n StableSwapInstruction[StableSwapInstruction[\"WITHDRAW\"] = 3] = \"WITHDRAW\";\n StableSwapInstruction[StableSwapInstruction[\"WITHDRAW_ONE\"] = 4] = \"WITHDRAW_ONE\";\n})(StableSwapInstruction || (StableSwapInstruction = {}));\nexport const initializeSwapInstructionRaw = ({ config, adminAccount, tokenA: { adminFeeAccount: adminFeeAccountA, mint: tokenMintA, reserve: tokenAccountA, }, tokenB: { adminFeeAccount: adminFeeAccountB, mint: tokenMintB, reserve: tokenAccountB, }, poolTokenMint, destinationPoolTokenAccount, nonce, ampFactor, fees, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: false },\n { pubkey: config.authority, isSigner: false, isWritable: false },\n { pubkey: adminAccount, isSigner: false, isWritable: false },\n { pubkey: adminFeeAccountA, isSigner: false, isWritable: false },\n { pubkey: adminFeeAccountB, isSigner: false, isWritable: false },\n { pubkey: tokenMintA, isSigner: false, isWritable: false },\n { pubkey: tokenAccountA, isSigner: false, isWritable: false },\n { pubkey: tokenMintB, isSigner: false, isWritable: false },\n { pubkey: tokenAccountB, isSigner: false, isWritable: false },\n { pubkey: poolTokenMint, isSigner: false, isWritable: true },\n { pubkey: destinationPoolTokenAccount, isSigner: false, isWritable: true },\n { pubkey: config.tokenProgramID, isSigner: false, isWritable: false },\n ];\n const data = Buffer.alloc(InitializeSwapIXLayout.span);\n InitializeSwapIXLayout.encode({\n instruction: StableSwapInstruction.INITIALIZE,\n nonce,\n ampFactor: ampFactor.toBuffer(),\n fees,\n }, data);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\nexport const initializeSwapInstruction = ({ fees = ZERO_FEES, ...args }) => {\n return initializeSwapInstructionRaw({ ...args, fees: encodeFees(fees) });\n};\nexport const swapInstruction = ({ config, userAuthority, userSource, poolSource, poolDestination, userDestination, adminDestination, amountIn, minimumAmountOut, }) => {\n const data = Buffer.alloc(SwapIXLayout.span);\n SwapIXLayout.encode({\n instruction: StableSwapInstruction.SWAP,\n amountIn: amountIn.toBuffer(),\n minimumAmountOut: minimumAmountOut.toBuffer(),\n }, data);\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: false },\n { pubkey: config.authority, isSigner: false, isWritable: false },\n { pubkey: userAuthority, isSigner: true, isWritable: false },\n { pubkey: userSource, isSigner: false, isWritable: true },\n { pubkey: poolSource, isSigner: false, isWritable: true },\n { pubkey: poolDestination, isSigner: false, isWritable: true },\n { pubkey: userDestination, isSigner: false, isWritable: true },\n { pubkey: adminDestination, isSigner: false, isWritable: true },\n { pubkey: config.tokenProgramID, isSigner: false, isWritable: false },\n ];\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\nexport const depositInstruction = ({ config, userAuthority, sourceA, sourceB, tokenAccountA, tokenAccountB, poolTokenMint, poolTokenAccount, tokenAmountA, tokenAmountB, minimumPoolTokenAmount, }) => {\n const data = Buffer.alloc(DepositIXLayout.span);\n DepositIXLayout.encode({\n instruction: StableSwapInstruction.DEPOSIT,\n tokenAmountA: tokenAmountA.toBuffer(),\n tokenAmountB: tokenAmountB.toBuffer(),\n minimumPoolTokenAmount: minimumPoolTokenAmount.toBuffer(),\n }, data);\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: false },\n { pubkey: config.authority, isSigner: false, isWritable: false },\n { pubkey: userAuthority, isSigner: true, isWritable: false },\n { pubkey: sourceA, isSigner: false, isWritable: true },\n { pubkey: sourceB, isSigner: false, isWritable: true },\n { pubkey: tokenAccountA, isSigner: false, isWritable: true },\n { pubkey: tokenAccountB, isSigner: false, isWritable: true },\n { pubkey: poolTokenMint, isSigner: false, isWritable: true },\n { pubkey: poolTokenAccount, isSigner: false, isWritable: true },\n { pubkey: config.tokenProgramID, isSigner: false, isWritable: false },\n ];\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\nexport const withdrawInstruction = ({ config, userAuthority, poolMint, sourceAccount, tokenAccountA, tokenAccountB, userAccountA, userAccountB, adminFeeAccountA, adminFeeAccountB, poolTokenAmount, minimumTokenA, minimumTokenB, }) => {\n const data = Buffer.alloc(WithdrawIXLayout.span);\n WithdrawIXLayout.encode({\n instruction: StableSwapInstruction.WITHDRAW,\n poolTokenAmount: poolTokenAmount.toBuffer(),\n minimumTokenA: minimumTokenA.toBuffer(),\n minimumTokenB: minimumTokenB.toBuffer(),\n }, data);\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: false },\n { pubkey: config.authority, isSigner: false, isWritable: false },\n { pubkey: userAuthority, isSigner: true, isWritable: false },\n { pubkey: poolMint, isSigner: false, isWritable: true },\n { pubkey: sourceAccount, isSigner: false, isWritable: true },\n { pubkey: tokenAccountA, isSigner: false, isWritable: true },\n { pubkey: tokenAccountB, isSigner: false, isWritable: true },\n { pubkey: userAccountA, isSigner: false, isWritable: true },\n { pubkey: userAccountB, isSigner: false, isWritable: true },\n { pubkey: adminFeeAccountA, isSigner: false, isWritable: true },\n { pubkey: adminFeeAccountB, isSigner: false, isWritable: true },\n { pubkey: config.tokenProgramID, isSigner: false, isWritable: false },\n ];\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\nexport const withdrawOneInstruction = ({ config, userAuthority, poolMint, sourceAccount, baseTokenAccount, quoteTokenAccount, destinationAccount, adminDestinationAccount, poolTokenAmount, minimumTokenAmount, }) => {\n const data = Buffer.alloc(WithdrawOneIXLayout.span);\n WithdrawOneIXLayout.encode({\n instruction: StableSwapInstruction.WITHDRAW_ONE,\n poolTokenAmount: poolTokenAmount.toBuffer(),\n minimumTokenAmount: minimumTokenAmount.toBuffer(),\n }, data);\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: false },\n { pubkey: config.authority, isSigner: false, isWritable: false },\n { pubkey: userAuthority, isSigner: true, isWritable: false },\n { pubkey: poolMint, isSigner: false, isWritable: true },\n { pubkey: sourceAccount, isSigner: false, isWritable: true },\n { pubkey: baseTokenAccount, isSigner: false, isWritable: true },\n { pubkey: quoteTokenAccount, isSigner: false, isWritable: true },\n { pubkey: destinationAccount, isSigner: false, isWritable: true },\n { pubkey: adminDestinationAccount, isSigner: false, isWritable: true },\n { pubkey: config.tokenProgramID, isSigner: false, isWritable: false },\n ];\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n//# sourceMappingURL=swap.js.map","import { getProgramAddress } from \"@saberhq/solana-contrib\";\nimport { TOKEN_PROGRAM_ID } from \"@saberhq/token-utils\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport { SWAP_PROGRAM_ID } from \"./constants\";\nimport * as instructions from \"./instructions\";\nimport { decodeSwap } from \"./state\";\nimport { StableSwapLayout } from \"./state/layout\";\nimport { loadProgramAccount } from \"./util/account\";\n/**\n * Swap token A for token B\n * @param userSource\n * @param poolSource\n * @param poolDestination\n * @param userDestination\n * @param amountIn\n * @param minimumAmountOut\n */\nexport function createSaberSwapInstruction({ config, state }, args) {\n const adminDestination = args.poolDestination.equals(state.tokenA.reserve)\n ? state.tokenA.adminFeeAccount\n : state.tokenB.adminFeeAccount;\n return instructions.swapInstruction({\n config: config,\n ...args,\n adminDestination,\n });\n}\n/**\n * Deposit tokens into the pool.\n */\nexport function createSaberDepositInstruction({ config, state }, args) {\n return instructions.depositInstruction({\n config: config,\n tokenAccountA: state.tokenA.reserve,\n tokenAccountB: state.tokenB.reserve,\n poolTokenMint: state.poolTokenMint,\n ...args,\n });\n}\n/**\n * Withdraw tokens from the pool\n */\nexport function createSaberWithdrawInstruction({ config, state }, args) {\n return instructions.withdrawInstruction({\n config: config,\n poolMint: state.poolTokenMint,\n tokenAccountA: state.tokenA.reserve,\n tokenAccountB: state.tokenB.reserve,\n adminFeeAccountA: state.tokenA.adminFeeAccount,\n adminFeeAccountB: state.tokenB.adminFeeAccount,\n ...args,\n });\n}\n/**\n * Withdraw tokens from the pool\n */\nexport function createSaberWithdrawOneInstruction({ config, state }, args) {\n const [quoteTokenAccount, adminDestinationAccount] = args.baseTokenAccount.equals(state.tokenA.reserve)\n ? [state.tokenB.reserve, state.tokenA.adminFeeAccount]\n : [state.tokenA.reserve, state.tokenB.adminFeeAccount];\n return instructions.withdrawOneInstruction({\n config: config,\n poolMint: state.poolTokenMint,\n quoteTokenAccount,\n adminDestinationAccount,\n ...args,\n });\n}\nexport class StableSwap {\n /**\n * Constructor for new StableSwap client object.\n * @param config\n * @param state\n */\n constructor(config, state) {\n this.config = config;\n this.state = state;\n }\n /**\n * Get the minimum balance for the token swap account to be rent exempt\n *\n * @return Number of lamports required\n */\n static async getMinBalanceRentForExemptStableSwap(connection) {\n return await connection.getMinimumBalanceForRentExemption(StableSwapLayout.span);\n }\n /**\n * Load an onchain StableSwap program.\n *\n * @param connection A {@link Connection} to use.\n * @param swapAccount The {@link PublicKey} of the swap account to load. You can obtain this pubkey by visiting [app.saber.so](https://app.saber.so/], navigating to the pool you want to load, and getting the \"swap account\" key.\n * @param programID Address of the onchain StableSwap program.\n */\n static async load(connection, swapAccount, programID = SWAP_PROGRAM_ID) {\n const data = await loadProgramAccount(connection, swapAccount, programID);\n const authority = getSwapAuthorityKey(swapAccount, programID);\n return StableSwap.loadWithData(swapAccount, data, authority, programID);\n }\n /**\n * Loads an onchain StableSwap program from an {@link IExchange}.\n *\n * @param connection\n * @param exchange\n * @returns\n */\n static async loadFromExchange(connection, exchange) {\n return StableSwap.load(connection, exchange.swapAccount, exchange.programID);\n }\n /**\n * Loads the swap object from a program account.\n * @param data\n * @returns\n */\n static async fromProgramAccount(data) {\n const [authority] = await findSwapAuthorityKey(data.publicKey);\n return StableSwap.fromProgramAccountWithAuthority(data, authority);\n }\n /**\n * Loads the swap object from a program account.\n * @param data\n * @returns\n */\n static fromData(data) {\n const authority = getSwapAuthorityKey(data.publicKey);\n return StableSwap.fromProgramAccountWithAuthority(data, authority);\n }\n /**\n * Loads the swap object from a program account, with the swap authority loaded.\n * @param data\n * @returns\n */\n static fromProgramAccountWithAuthority(data, authority) {\n return new StableSwap({\n swapAccount: data.publicKey,\n swapProgramID: SWAP_PROGRAM_ID,\n tokenProgramID: TOKEN_PROGRAM_ID,\n authority,\n }, data.account);\n }\n /**\n * Loads a StableSwap instance with data.\n *\n * @param programID The program ID.\n * @param swapAccount The address of the swap.\n * @param swapAccountData The data of the swapAccount.\n * @param authority The swap's authority.\n * @returns\n */\n static loadWithData(swapAccount, swapAccountData, authority, programID = SWAP_PROGRAM_ID) {\n try {\n const state = decodeSwap(swapAccountData);\n if (!state.isInitialized) {\n throw new Error(`Invalid token swap state`);\n }\n return new StableSwap({\n swapAccount: swapAccount,\n swapProgramID: programID,\n tokenProgramID: TOKEN_PROGRAM_ID,\n authority,\n }, state);\n }\n catch (e) {\n throw Error(e);\n }\n }\n /**\n * Swap token A for token B\n * @param userSource\n * @param poolSource\n * @param poolDestination\n * @param userDestination\n * @param amountIn\n * @param minimumAmountOut\n */\n swap(args) {\n return createSaberSwapInstruction(this, args);\n }\n /**\n * Deposit tokens into the pool.\n */\n deposit(args) {\n return createSaberDepositInstruction(this, args);\n }\n /**\n * Withdraw tokens from the pool\n */\n withdraw(args) {\n return createSaberWithdrawInstruction(this, args);\n }\n /**\n * Withdraw tokens from the pool\n */\n withdrawOne(args) {\n return createSaberWithdrawOneInstruction(this, args);\n }\n}\n/**\n * Finds the swap authority address that is used to sign transactions on behalf of the swap.\n *\n * @param swapAccount\n * @param swapProgramID\n * @returns\n */\nexport const findSwapAuthorityKey = (swapAccount, swapProgramID = SWAP_PROGRAM_ID) => PublicKey.findProgramAddress([swapAccount.toBuffer()], swapProgramID);\n/**\n * Finds the swap authority address that is used to sign transactions on behalf of the swap.\n *\n * @param swapAccount\n * @param swapProgramID\n * @returns\n */\nexport const getSwapAuthorityKey = (swapAccount, swapProgramID = SWAP_PROGRAM_ID) => getProgramAddress([swapAccount.toBuffer()], swapProgramID);\n//# sourceMappingURL=stable-swap.js.map","/**\n * Loads the account info of an account owned by a program.\n * @param connection\n * @param address\n * @param programId\n * @returns\n */\nexport const loadProgramAccount = async (connection, address, programId) => {\n const accountInfo = await connection.getAccountInfo(address);\n if (accountInfo === null) {\n throw new Error(\"Failed to find account\");\n }\n if (!accountInfo.owner.equals(programId)) {\n throw new Error(`Invalid owner: expected ${programId.toBase58()}, found ${accountInfo.owner.toBase58()}`);\n }\n return Buffer.from(accountInfo.data);\n};\n//# sourceMappingURL=account.js.map","import { u64 } from \"@saberhq/token-utils\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport { decodeFees } from \"./fees\";\nimport { StableSwapLayout } from \"./layout\";\nexport * from \"./fees\";\nexport * from \"./layout\";\n/**\n * Decodes the Swap account.\n * @param data\n * @returns\n */\nexport const decodeSwap = (data) => {\n const stableSwapData = StableSwapLayout.decode(data);\n if (!stableSwapData.isInitialized) {\n throw new Error(`Invalid token swap state`);\n }\n const adminAccount = new PublicKey(stableSwapData.adminAccount);\n const adminFeeAccountA = new PublicKey(stableSwapData.adminFeeAccountA);\n const adminFeeAccountB = new PublicKey(stableSwapData.adminFeeAccountB);\n const tokenAccountA = new PublicKey(stableSwapData.tokenAccountA);\n const tokenAccountB = new PublicKey(stableSwapData.tokenAccountB);\n const poolTokenMint = new PublicKey(stableSwapData.tokenPool);\n const mintA = new PublicKey(stableSwapData.mintA);\n const mintB = new PublicKey(stableSwapData.mintB);\n const initialAmpFactor = u64.fromBuffer(Buffer.from(stableSwapData.initialAmpFactor));\n const targetAmpFactor = u64.fromBuffer(Buffer.from(stableSwapData.targetAmpFactor));\n const startRampTimestamp = stableSwapData.startRampTs;\n const stopRampTimestamp = stableSwapData.stopRampTs;\n const fees = decodeFees(stableSwapData.fees);\n return {\n isInitialized: !!stableSwapData.isInitialized,\n isPaused: !!stableSwapData.isPaused,\n nonce: stableSwapData.nonce,\n futureAdminDeadline: stableSwapData.futureAdminDeadline,\n futureAdminAccount: new PublicKey(stableSwapData.futureAdminAccount),\n adminAccount,\n tokenA: {\n adminFeeAccount: adminFeeAccountA,\n reserve: tokenAccountA,\n mint: mintA,\n },\n tokenB: {\n adminFeeAccount: adminFeeAccountB,\n reserve: tokenAccountB,\n mint: mintB,\n },\n poolTokenMint,\n initialAmpFactor,\n targetAmpFactor,\n startRampTimestamp,\n stopRampTimestamp,\n fees,\n };\n};\n//# sourceMappingURL=index.js.map","import { deserializeAccount, deserializeMint, parseBigintIsh, Token, TokenAmount, } from \"@saberhq/token-utils\";\nimport BN from \"bn.js\";\nimport invariant from \"tiny-invariant\";\nimport { SWAP_PROGRAM_ID } from \"../constants\";\nimport { StableSwap } from \"../stable-swap\";\nimport { loadProgramAccount } from \"../util/account\";\n/**\n * Calculates the amp factor of a swap.\n * @param state\n * @param now\n * @returns\n */\nexport const calculateAmpFactor = (state, now = Date.now() / 1000) => {\n const { initialAmpFactor, targetAmpFactor, startRampTimestamp, stopRampTimestamp, } = state;\n // The most common case is that there is no ramp in progress.\n if (now >= stopRampTimestamp) {\n return parseBigintIsh(targetAmpFactor);\n }\n // If the ramp is about to start, use the initial amp.\n if (now <= startRampTimestamp) {\n return parseBigintIsh(initialAmpFactor);\n }\n invariant(stopRampTimestamp >= startRampTimestamp, \"stop must be after start\");\n // Calculate how far we are along the ramp curve.\n const percent = now >= stopRampTimestamp\n ? 1\n : now <= startRampTimestamp\n ? 0\n : (now - startRampTimestamp) / (stopRampTimestamp - startRampTimestamp);\n const diff = Math.floor(parseFloat(targetAmpFactor.sub(initialAmpFactor).toString()) * percent);\n return parseBigintIsh(initialAmpFactor.add(new BN(diff)));\n};\n/**\n * Creates an IExchangeInfo from parameters.\n * @returns\n */\nexport const makeExchangeInfo = ({ exchange, swap, accounts, }) => {\n const swapAmountA = deserializeAccount(accounts.reserveA).amount;\n const swapAmountB = deserializeAccount(accounts.reserveB).amount;\n const poolMintSupply = accounts.poolMint\n ? deserializeMint(accounts.poolMint).supply\n : undefined;\n const ampFactor = calculateAmpFactor(swap.state);\n return {\n ampFactor,\n fees: swap.state.fees,\n lpTotalSupply: new TokenAmount(exchange.lpToken, poolMintSupply !== null && poolMintSupply !== void 0 ? poolMintSupply : 0),\n reserves: [\n {\n reserveAccount: swap.state.tokenA.reserve,\n adminFeeAccount: swap.state.tokenA.adminFeeAccount,\n amount: new TokenAmount(exchange.tokens[0], swapAmountA),\n },\n {\n reserveAccount: swap.state.tokenB.reserve,\n adminFeeAccount: swap.state.tokenB.adminFeeAccount,\n amount: new TokenAmount(exchange.tokens[1], swapAmountB),\n },\n ],\n };\n};\n/**\n * Loads exchange info.\n * @param exchange\n * @param swap\n * @returns\n */\nexport const loadExchangeInfo = async (connection, exchange, swap) => {\n if (!exchange.programID.equals(swap.config.swapProgramID)) {\n throw new Error(\"Swap program id mismatch\");\n }\n const reserveA = await loadProgramAccount(connection, swap.state.tokenA.reserve, swap.config.tokenProgramID);\n const reserveB = await loadProgramAccount(connection, swap.state.tokenB.reserve, swap.config.tokenProgramID);\n const poolMint = await loadProgramAccount(connection, swap.state.poolTokenMint, swap.config.tokenProgramID);\n return makeExchangeInfo({\n swap,\n exchange,\n accounts: {\n reserveA,\n reserveB,\n poolMint,\n },\n });\n};\n/**\n * Creates an IExchange from an ExchangeBasic.\n * @param tokenMap\n * @param param1\n * @returns\n */\nexport const makeExchange = ({ swapAccount, lpToken, tokenA, tokenB, }) => {\n const exchange = {\n swapAccount,\n programID: SWAP_PROGRAM_ID,\n lpToken: new Token({\n symbol: \"SLP\",\n name: `${tokenA.symbol}-${tokenB.symbol} Saber LP`,\n logoURI: \"https://app.saber.so/tokens/slp.png\",\n decimals: tokenA.decimals,\n address: lpToken.toString(),\n chainId: tokenA.chainId,\n tags: [\"saber-stableswap-lp\"],\n }),\n tokens: [new Token(tokenA), new Token(tokenB)],\n };\n return exchange;\n};\n/**\n * Get exchange info from just the swap account.\n * @param connection\n * @param swapAccount\n * @param tokenA\n * @param tokenB\n * @returns\n */\nexport const loadExchangeInfoFromSwapAccount = async (connection, swapAccount, tokenA = undefined, tokenB = undefined) => {\n var _a, _b;\n const stableSwap = await StableSwap.load(connection, swapAccount);\n const theTokenA = tokenA !== null && tokenA !== void 0 ? tokenA : (_a = (await Token.load(connection, stableSwap.state.tokenA.mint))) === null || _a === void 0 ? void 0 : _a.info;\n if (!theTokenA) {\n throw new Error(`Token ${stableSwap.state.tokenA.mint.toString()} not found`);\n }\n const theTokenB = tokenB !== null && tokenB !== void 0 ? tokenB : (_b = (await Token.load(connection, stableSwap.state.tokenB.mint))) === null || _b === void 0 ? void 0 : _b.info;\n if (!theTokenB) {\n throw new Error(`Token ${stableSwap.state.tokenB.mint.toString()} not found`);\n }\n const exchange = makeExchange({\n swapAccount,\n lpToken: stableSwap.state.poolTokenMint,\n tokenA: theTokenA,\n tokenB: theTokenB,\n });\n if (exchange === null) {\n return null;\n }\n return await loadExchangeInfo(connection, exchange, stableSwap);\n};\n//# sourceMappingURL=exchange.js.map","// Some numerical data is initialized as -1 even when it doesn't need initialization to help the JIT infer types\n// aliases for shorter compressed code (most minifers don't do this)\nvar ab = ArrayBuffer, u8 = Uint8Array, u16 = Uint16Array, i16 = Int16Array, u32 = Uint32Array, i32 = Int32Array;\nvar slc = function (v, s, e) {\n if (u8.prototype.slice)\n return u8.prototype.slice.call(v, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n var n = new u8(e - s);\n n.set(v.subarray(s, e));\n return n;\n};\nvar fill = function (v, n, s, e) {\n if (u8.prototype.fill)\n return u8.prototype.fill.call(v, n, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n for (; s < e; ++s)\n v[s] = n;\n return v;\n};\nvar cpw = function (v, t, s, e) {\n if (u8.prototype.copyWithin)\n return u8.prototype.copyWithin.call(v, t, s, e);\n if (s == null || s < 0)\n s = 0;\n if (e == null || e > v.length)\n e = v.length;\n while (s < e) {\n v[t++] = v[s++];\n }\n};\n/**\n * Codes for errors generated within this library\n */\nexport var ZstdErrorCode = {\n InvalidData: 0,\n WindowSizeTooLarge: 1,\n InvalidBlockType: 2,\n FSEAccuracyTooHigh: 3,\n DistanceTooFarBack: 4,\n UnexpectedEOF: 5\n};\n// error codes\nvar ec = [\n 'invalid zstd data',\n 'window size too large (>2046MB)',\n 'invalid block type',\n 'FSE accuracy too high',\n 'match distance too far back',\n 'unexpected EOF'\n];\n;\nvar err = function (ind, msg, nt) {\n var e = new Error(msg || ec[ind]);\n e.code = ind;\n if (Error.captureStackTrace)\n Error.captureStackTrace(e, err);\n if (!nt)\n throw e;\n return e;\n};\nvar rb = function (d, b, n) {\n var i = 0, o = 0;\n for (; i < n; ++i)\n o |= d[b++] << (i << 3);\n return o;\n};\nvar b4 = function (d, b) { return (d[b] | (d[b + 1] << 8) | (d[b + 2] << 16) | (d[b + 3] << 24)) >>> 0; };\n// read Zstandard frame header\nvar rzfh = function (dat, w) {\n var n3 = dat[0] | (dat[1] << 8) | (dat[2] << 16);\n if (n3 == 0x2FB528 && dat[3] == 253) {\n // Zstandard\n var flg = dat[4];\n // single segment checksum dict flag frame content flag\n var ss = (flg >> 5) & 1, cc = (flg >> 2) & 1, df = flg & 3, fcf = flg >> 6;\n if (flg & 8)\n err(0);\n // byte\n var bt = 6 - ss;\n // dict bytes\n var db = df == 3 ? 4 : df;\n // dictionary id\n var di = rb(dat, bt, db);\n bt += db;\n // frame size bytes\n var fsb = fcf ? (1 << fcf) : ss;\n // frame source size\n var fss = rb(dat, bt, fsb) + ((fcf == 1) && 256);\n // window size\n var ws = fss;\n if (!ss) {\n // window descriptor\n var wb = 1 << (10 + (dat[5] >> 3));\n ws = wb + (wb >> 3) * (dat[5] & 7);\n }\n if (ws > 2145386496)\n err(1);\n var buf = new u8((w == 1 ? (fss || ws) : w ? 0 : ws) + 12);\n buf[0] = 1, buf[4] = 4, buf[8] = 8;\n return {\n b: bt + fsb,\n y: 0,\n l: 0,\n d: di,\n w: (w && w != 1) ? w : buf.subarray(12),\n e: ws,\n o: new i32(buf.buffer, 0, 3),\n u: fss,\n c: cc,\n m: Math.min(131072, ws)\n };\n }\n else if (((n3 >> 4) | (dat[3] << 20)) == 0x184D2A5) {\n // skippable\n return b4(dat, 4) + 8;\n }\n err(0);\n};\n// most significant bit for nonzero\nvar msb = function (val) {\n var bits = 0;\n for (; (1 << bits) <= val; ++bits)\n ;\n return bits - 1;\n};\n// read finite state entropy\nvar rfse = function (dat, bt, mal) {\n // table pos\n var tpos = (bt << 3) + 4;\n // accuracy log\n var al = (dat[bt] & 15) + 5;\n if (al > mal)\n err(3);\n // size\n var sz = 1 << al;\n // probabilities symbols repeat index high threshold\n var probs = sz, sym = -1, re = -1, i = -1, ht = sz;\n // optimization: single allocation is much faster\n var buf = new ab(512 + (sz << 2));\n var freq = new i16(buf, 0, 256);\n // same view as freq\n var dstate = new u16(buf, 0, 256);\n var nstate = new u16(buf, 512, sz);\n var bb1 = 512 + (sz << 1);\n var syms = new u8(buf, bb1, sz);\n var nbits = new u8(buf, bb1 + sz);\n while (sym < 255 && probs > 0) {\n var bits = msb(probs + 1);\n var cbt = tpos >> 3;\n // mask\n var msk = (1 << (bits + 1)) - 1;\n var val = ((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (tpos & 7)) & msk;\n // mask (1 fewer bit)\n var msk1fb = (1 << bits) - 1;\n // max small value\n var msv = msk - probs - 1;\n // small value\n var sval = val & msk1fb;\n if (sval < msv)\n tpos += bits, val = sval;\n else {\n tpos += bits + 1;\n if (val > msk1fb)\n val -= msv;\n }\n freq[++sym] = --val;\n if (val == -1) {\n probs += val;\n syms[--ht] = sym;\n }\n else\n probs -= val;\n if (!val) {\n do {\n // repeat byte\n var rbt = tpos >> 3;\n re = ((dat[rbt] | (dat[rbt + 1] << 8)) >> (tpos & 7)) & 3;\n tpos += 2;\n sym += re;\n } while (re == 3);\n }\n }\n if (sym > 255 || probs)\n err(0);\n var sympos = 0;\n // sym step (coprime with sz - formula from zstd source)\n var sstep = (sz >> 1) + (sz >> 3) + 3;\n // sym mask\n var smask = sz - 1;\n for (var s = 0; s <= sym; ++s) {\n var sf = freq[s];\n if (sf < 1) {\n dstate[s] = -sf;\n continue;\n }\n // This is split into two loops in zstd to avoid branching, but as JS is higher-level that is unnecessary\n for (i = 0; i < sf; ++i) {\n syms[sympos] = s;\n do {\n sympos = (sympos + sstep) & smask;\n } while (sympos >= ht);\n }\n }\n // After spreading symbols, should be zero again\n if (sympos)\n err(0);\n for (i = 0; i < sz; ++i) {\n // next state\n var ns = dstate[syms[i]]++;\n // num bits\n var nb = nbits[i] = al - msb(ns);\n nstate[i] = (ns << nb) - sz;\n }\n return [(tpos + 7) >> 3, {\n b: al,\n s: syms,\n n: nbits,\n t: nstate\n }];\n};\n// read huffman\nvar rhu = function (dat, bt) {\n // index weight count\n var i = 0, wc = -1;\n // buffer header byte\n var buf = new u8(292), hb = dat[bt];\n // huffman weights\n var hw = buf.subarray(0, 256);\n // rank count\n var rc = buf.subarray(256, 268);\n // rank index\n var ri = new u16(buf.buffer, 268);\n // NOTE: at this point bt is 1 less than expected\n if (hb < 128) {\n // end byte, fse decode table\n var _a = rfse(dat, bt + 1, 6), ebt = _a[0], fdt = _a[1];\n bt += hb;\n var epos = ebt << 3;\n // last byte\n var lb = dat[bt];\n if (!lb)\n err(0);\n // state1 state2 state1 bits state2 bits\n var st1 = 0, st2 = 0, btr1 = fdt.b, btr2 = btr1;\n // fse pos\n // pre-increment to account for original deficit of 1\n var fpos = (++bt << 3) - 8 + msb(lb);\n for (;;) {\n fpos -= btr1;\n if (fpos < epos)\n break;\n var cbt = fpos >> 3;\n st1 += ((dat[cbt] | (dat[cbt + 1] << 8)) >> (fpos & 7)) & ((1 << btr1) - 1);\n hw[++wc] = fdt.s[st1];\n fpos -= btr2;\n if (fpos < epos)\n break;\n cbt = fpos >> 3;\n st2 += ((dat[cbt] | (dat[cbt + 1] << 8)) >> (fpos & 7)) & ((1 << btr2) - 1);\n hw[++wc] = fdt.s[st2];\n btr1 = fdt.n[st1];\n st1 = fdt.t[st1];\n btr2 = fdt.n[st2];\n st2 = fdt.t[st2];\n }\n if (++wc > 255)\n err(0);\n }\n else {\n wc = hb - 127;\n for (; i < wc; i += 2) {\n var byte = dat[++bt];\n hw[i] = byte >> 4;\n hw[i + 1] = byte & 15;\n }\n ++bt;\n }\n // weight exponential sum\n var wes = 0;\n for (i = 0; i < wc; ++i) {\n var wt = hw[i];\n // bits must be at most 11, same as weight\n if (wt > 11)\n err(0);\n wes += wt && (1 << (wt - 1));\n }\n // max bits\n var mb = msb(wes) + 1;\n // table size\n var ts = 1 << mb;\n // remaining sum\n var rem = ts - wes;\n // must be power of 2\n if (rem & (rem - 1))\n err(0);\n hw[wc++] = msb(rem) + 1;\n for (i = 0; i < wc; ++i) {\n var wt = hw[i];\n ++rc[hw[i] = wt && (mb + 1 - wt)];\n }\n // huf buf\n var hbuf = new u8(ts << 1);\n // symbols num bits\n var syms = hbuf.subarray(0, ts), nb = hbuf.subarray(ts);\n ri[mb] = 0;\n for (i = mb; i > 0; --i) {\n var pv = ri[i];\n fill(nb, i, pv, ri[i - 1] = pv + rc[i] * (1 << (mb - i)));\n }\n if (ri[0] != ts)\n err(0);\n for (i = 0; i < wc; ++i) {\n var bits = hw[i];\n if (bits) {\n var code = ri[bits];\n fill(syms, i, code, ri[bits] = code + (1 << (mb - bits)));\n }\n }\n return [bt, {\n n: nb,\n b: mb,\n s: syms\n }];\n};\n// Tables generated using this:\n// https://gist.github.com/101arrowz/a979452d4355992cbf8f257cbffc9edd\n// default literal length table\nvar dllt = /*#__PURE__*/ rfse(/*#__PURE__*/ new u8([\n 81, 16, 99, 140, 49, 198, 24, 99, 12, 33, 196, 24, 99, 102, 102, 134, 70, 146, 4\n]), 0, 6)[1];\n// default match length table\nvar dmlt = /*#__PURE__*/ rfse(/*#__PURE__*/ new u8([\n 33, 20, 196, 24, 99, 140, 33, 132, 16, 66, 8, 33, 132, 16, 66, 8, 33, 68, 68, 68, 68, 68, 68, 68, 68, 36, 9\n]), 0, 6)[1];\n// default offset code table\nvar doct = /*#__PURE__ */ rfse(/*#__PURE__*/ new u8([\n 32, 132, 16, 66, 102, 70, 68, 68, 68, 68, 36, 73, 2\n]), 0, 5)[1];\n// bits to baseline\nvar b2bl = function (b, s) {\n var len = b.length, bl = new i32(len);\n for (var i = 0; i < len; ++i) {\n bl[i] = s;\n s += 1 << b[i];\n }\n return bl;\n};\n// literal length bits\nvar llb = /*#__PURE__ */ new u8(( /*#__PURE__ */new i32([\n 0, 0, 0, 0, 16843009, 50528770, 134678020, 202050057, 269422093\n])).buffer, 0, 36);\n// literal length baseline\nvar llbl = /*#__PURE__ */ b2bl(llb, 0);\n// match length bits\nvar mlb = /*#__PURE__ */ new u8(( /*#__PURE__ */new i32([\n 0, 0, 0, 0, 0, 0, 0, 0, 16843009, 50528770, 117769220, 185207048, 252579084, 16\n])).buffer, 0, 53);\n// match length baseline\nvar mlbl = /*#__PURE__ */ b2bl(mlb, 3);\n// decode huffman stream\nvar dhu = function (dat, out, hu) {\n var len = dat.length, ss = out.length, lb = dat[len - 1], msk = (1 << hu.b) - 1, eb = -hu.b;\n if (!lb)\n err(0);\n var st = 0, btr = hu.b, pos = (len << 3) - 8 + msb(lb) - btr, i = -1;\n for (; pos > eb && i < ss;) {\n var cbt = pos >> 3;\n var val = (dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (pos & 7);\n st = ((st << btr) | val) & msk;\n out[++i] = hu.s[st];\n pos -= (btr = hu.n[st]);\n }\n if (pos != eb || i + 1 != ss)\n err(0);\n};\n// decode huffman stream 4x\n// TODO: use workers to parallelize\nvar dhu4 = function (dat, out, hu) {\n var bt = 6;\n var ss = out.length, sz1 = (ss + 3) >> 2, sz2 = sz1 << 1, sz3 = sz1 + sz2;\n dhu(dat.subarray(bt, bt += dat[0] | (dat[1] << 8)), out.subarray(0, sz1), hu);\n dhu(dat.subarray(bt, bt += dat[2] | (dat[3] << 8)), out.subarray(sz1, sz2), hu);\n dhu(dat.subarray(bt, bt += dat[4] | (dat[5] << 8)), out.subarray(sz2, sz3), hu);\n dhu(dat.subarray(bt), out.subarray(sz3), hu);\n};\n// read Zstandard block\nvar rzb = function (dat, st, out) {\n var _a;\n var bt = st.b;\n // byte 0 block type\n var b0 = dat[bt], btype = (b0 >> 1) & 3;\n st.l = b0 & 1;\n var sz = (b0 >> 3) | (dat[bt + 1] << 5) | (dat[bt + 2] << 13);\n // end byte for block\n var ebt = (bt += 3) + sz;\n if (btype == 1) {\n if (bt >= dat.length)\n return;\n st.b = bt + 1;\n if (out) {\n fill(out, dat[bt], st.y, st.y += sz);\n return out;\n }\n return fill(new u8(sz), dat[bt]);\n }\n if (ebt > dat.length)\n return;\n if (btype == 0) {\n st.b = ebt;\n if (out) {\n out.set(dat.subarray(bt, ebt), st.y);\n st.y += sz;\n return out;\n }\n return slc(dat, bt, ebt);\n }\n if (btype == 2) {\n // byte 3 lit btype size format\n var b3 = dat[bt], lbt = b3 & 3, sf = (b3 >> 2) & 3;\n // lit src size lit cmp sz 4 streams\n var lss = b3 >> 4, lcs = 0, s4 = 0;\n if (lbt < 2) {\n if (sf & 1)\n lss |= (dat[++bt] << 4) | ((sf & 2) && (dat[++bt] << 12));\n else\n lss = b3 >> 3;\n }\n else {\n s4 = sf;\n if (sf < 2)\n lss |= ((dat[++bt] & 63) << 4), lcs = (dat[bt] >> 6) | (dat[++bt] << 2);\n else if (sf == 2)\n lss |= (dat[++bt] << 4) | ((dat[++bt] & 3) << 12), lcs = (dat[bt] >> 2) | (dat[++bt] << 6);\n else\n lss |= (dat[++bt] << 4) | ((dat[++bt] & 63) << 12), lcs = (dat[bt] >> 6) | (dat[++bt] << 2) | (dat[++bt] << 10);\n }\n ++bt;\n // add literals to end - can never overlap with backreferences because unused literals always appended\n var buf = out ? out.subarray(st.y, st.y + st.m) : new u8(st.m);\n // starting point for literals\n var spl = buf.length - lss;\n if (lbt == 0)\n buf.set(dat.subarray(bt, bt += lss), spl);\n else if (lbt == 1)\n fill(buf, dat[bt++], spl);\n else {\n // huffman table\n var hu = st.h;\n if (lbt == 2) {\n var hud = rhu(dat, bt);\n // subtract description length\n lcs += bt - (bt = hud[0]);\n st.h = hu = hud[1];\n }\n else if (!hu)\n err(0);\n (s4 ? dhu4 : dhu)(dat.subarray(bt, bt += lcs), buf.subarray(spl), hu);\n }\n // num sequences\n var ns = dat[bt++];\n if (ns) {\n if (ns == 255)\n ns = (dat[bt++] | (dat[bt++] << 8)) + 0x7F00;\n else if (ns > 127)\n ns = ((ns - 128) << 8) | dat[bt++];\n // symbol compression modes\n var scm = dat[bt++];\n if (scm & 3)\n err(0);\n var dts = [dmlt, doct, dllt];\n for (var i = 2; i > -1; --i) {\n var md = (scm >> ((i << 1) + 2)) & 3;\n if (md == 1) {\n // rle buf\n var rbuf = new u8([0, 0, dat[bt++]]);\n dts[i] = {\n s: rbuf.subarray(2, 3),\n n: rbuf.subarray(0, 1),\n t: new u16(rbuf.buffer, 0, 1),\n b: 0\n };\n }\n else if (md == 2) {\n // accuracy log 8 for offsets, 9 for others\n _a = rfse(dat, bt, 9 - (i & 1)), bt = _a[0], dts[i] = _a[1];\n }\n else if (md == 3) {\n if (!st.t)\n err(0);\n dts[i] = st.t[i];\n }\n }\n var _b = st.t = dts, mlt = _b[0], oct = _b[1], llt = _b[2];\n var lb = dat[ebt - 1];\n if (!lb)\n err(0);\n var spos = (ebt << 3) - 8 + msb(lb) - llt.b, cbt = spos >> 3, oubt = 0;\n var lst = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << llt.b) - 1);\n cbt = (spos -= oct.b) >> 3;\n var ost = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << oct.b) - 1);\n cbt = (spos -= mlt.b) >> 3;\n var mst = ((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << mlt.b) - 1);\n for (++ns; --ns;) {\n var llc = llt.s[lst];\n var lbtr = llt.n[lst];\n var mlc = mlt.s[mst];\n var mbtr = mlt.n[mst];\n var ofc = oct.s[ost];\n var obtr = oct.n[ost];\n cbt = (spos -= ofc) >> 3;\n var ofp = 1 << ofc;\n var off = ofp + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16) | (dat[cbt + 3] << 24)) >>> (spos & 7)) & (ofp - 1));\n cbt = (spos -= mlb[mlc]) >> 3;\n var ml = mlbl[mlc] + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (spos & 7)) & ((1 << mlb[mlc]) - 1));\n cbt = (spos -= llb[llc]) >> 3;\n var ll = llbl[llc] + (((dat[cbt] | (dat[cbt + 1] << 8) | (dat[cbt + 2] << 16)) >> (spos & 7)) & ((1 << llb[llc]) - 1));\n cbt = (spos -= lbtr) >> 3;\n lst = llt.t[lst] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << lbtr) - 1));\n cbt = (spos -= mbtr) >> 3;\n mst = mlt.t[mst] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << mbtr) - 1));\n cbt = (spos -= obtr) >> 3;\n ost = oct.t[ost] + (((dat[cbt] | (dat[cbt + 1] << 8)) >> (spos & 7)) & ((1 << obtr) - 1));\n if (off > 3) {\n st.o[2] = st.o[1];\n st.o[1] = st.o[0];\n st.o[0] = off -= 3;\n }\n else {\n var idx = off - (ll != 0);\n if (idx) {\n off = idx == 3 ? st.o[0] - 1 : st.o[idx];\n if (idx > 1)\n st.o[2] = st.o[1];\n st.o[1] = st.o[0];\n st.o[0] = off;\n }\n else\n off = st.o[0];\n }\n for (var i = 0; i < ll; ++i) {\n buf[oubt + i] = buf[spl + i];\n }\n oubt += ll, spl += ll;\n var stin = oubt - off;\n if (stin < 0) {\n var len = -stin;\n var bs = st.e + stin;\n if (len > ml)\n len = ml;\n for (var i = 0; i < len; ++i) {\n buf[oubt + i] = st.w[bs + i];\n }\n oubt += len, ml -= len, stin = 0;\n }\n for (var i = 0; i < ml; ++i) {\n buf[oubt + i] = buf[stin + i];\n }\n oubt += ml;\n }\n if (oubt != spl) {\n while (spl < buf.length) {\n buf[oubt++] = buf[spl++];\n }\n }\n else\n oubt = buf.length;\n if (out)\n st.y += oubt;\n else\n buf = slc(buf, 0, oubt);\n }\n else {\n if (out) {\n st.y += lss;\n if (spl) {\n for (var i = 0; i < lss; ++i) {\n buf[i] = buf[spl + i];\n }\n }\n }\n else if (spl)\n buf = slc(buf, spl);\n }\n st.b = ebt;\n return buf;\n }\n err(2);\n};\n// concat\nvar cct = function (bufs, ol) {\n if (bufs.length == 1)\n return bufs[0];\n var buf = new u8(ol);\n for (var i = 0, b = 0; i < bufs.length; ++i) {\n var chk = bufs[i];\n buf.set(chk, b);\n b += chk.length;\n }\n return buf;\n};\n/**\n * Decompresses Zstandard data\n * @param dat The input data\n * @param buf The output buffer. If unspecified, the function will allocate\n * exactly enough memory to fit the decompressed data. If your\n * data has multiple frames and you know the output size, specifying\n * it will yield better performance.\n * @returns The decompressed data\n */\nexport function decompress(dat, buf) {\n var bt = 0, bufs = [], nb = +!buf, ol = 0;\n for (; dat.length;) {\n var st = rzfh(dat, nb || buf);\n if (typeof st == 'object') {\n if (nb) {\n buf = null;\n if (st.w.length == st.u) {\n bufs.push(buf = st.w);\n ol += st.u;\n }\n }\n else {\n bufs.push(buf);\n st.e = 0;\n }\n for (; !st.l;) {\n var blk = rzb(dat, st, buf);\n if (!blk)\n err(5);\n if (buf)\n st.e = st.y;\n else {\n bufs.push(blk);\n ol += blk.length;\n cpw(st.w, 0, blk.length);\n st.w.set(blk, st.w.length - blk.length);\n }\n }\n bt = st.b + (st.c * 4);\n }\n else\n bt = st;\n dat = dat.subarray(bt);\n }\n return cct(bufs, ol);\n}\n/**\n * Decompressor for Zstandard streamed data\n */\nvar Decompress = /*#__PURE__*/ (function () {\n /**\n * Creates a Zstandard decompressor\n * @param ondata The handler for stream data\n */\n function Decompress(ondata) {\n this.ondata = ondata;\n this.c = [];\n this.l = 0;\n this.z = 0;\n }\n /**\n * Pushes data to be decompressed\n * @param chunk The chunk of data to push\n * @param final Whether or not this is the last chunk in the stream\n */\n Decompress.prototype.push = function (chunk, final) {\n if (typeof this.s == 'number') {\n var sub = Math.min(chunk.length, this.s);\n chunk = chunk.subarray(sub);\n this.s -= sub;\n }\n var sl = chunk.length;\n var ncs = sl + this.l;\n if (!this.s) {\n if (final) {\n if (!ncs)\n return;\n // min for frame + one block\n if (ncs < 5)\n err(5);\n }\n else if (ncs < 18) {\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n if (this.l) {\n this.c.push(chunk);\n chunk = cct(this.c, ncs);\n this.c = [];\n this.l = 0;\n }\n if (typeof (this.s = rzfh(chunk)) == 'number')\n return this.push(chunk, final);\n }\n if (typeof this.s != 'number') {\n if (ncs < (this.z || 4)) {\n if (final)\n err(5);\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n if (this.l) {\n this.c.push(chunk);\n chunk = cct(this.c, ncs);\n this.c = [];\n this.l = 0;\n }\n if (!this.z && ncs < (this.z = (chunk[this.s.b] & 2) ? 5 : 4 + ((chunk[this.s.b] >> 3) | (chunk[this.s.b + 1] << 5) | (chunk[this.s.b + 2] << 13)))) {\n if (final)\n err(5);\n this.c.push(chunk);\n this.l = ncs;\n return;\n }\n else\n this.z = 0;\n for (;;) {\n var blk = rzb(chunk, this.s);\n if (!blk) {\n if (final)\n err(5);\n var adc = chunk.subarray(this.s.b);\n this.s.b = 0;\n this.c.push(adc), this.l += adc.length;\n return;\n }\n else {\n this.ondata(blk, false);\n cpw(this.s.w, 0, blk.length);\n this.s.w.set(blk, this.s.w.length - blk.length);\n }\n if (this.s.l) {\n var rest = chunk.subarray(this.s.b);\n this.s = this.s.c * 4;\n this.push(rest, final);\n return;\n }\n }\n }\n };\n return Decompress;\n}());\nexport { Decompress };\n","import promiseRetry from 'promise-retry';\nimport { AccountLayout, u64, MintLayout, Token, ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '@solana/spl-token';\nimport { PublicKey, SystemProgram, Transaction } from '@solana/web3.js';\n\nclass TransactionError extends Error {\n constructor(m, txid, code) {\n super(m);\n this.txid = void 0;\n this.code = void 0;\n this.txid = txid;\n this.code = code; // Set the prototype explicitly.\n\n Object.setPrototypeOf(this, Error.prototype);\n }\n\n}\nconst UNKNOWN_ERROR = 'Unknown error, visit the explorer';\nconst SYSTEM_PROGRAM_ID = '11111111111111111111111111111111';\nfunction parseErrorForTransaction(tx) {\n var _tx$meta;\n\n // Easy case, logMessages has an obvious error message. From dapp-scaffold\n const errors = [];\n\n if (tx !== null && tx !== void 0 && tx.meta && tx.meta.logMessages) {\n tx.meta.logMessages.forEach(log => {\n const regex = /Error: (.*)/gm;\n let m;\n\n while ((m = regex.exec(log)) !== null) {\n // This is necessary to avoid infinite loops with zero-width matches\n if (m.index === regex.lastIndex) {\n regex.lastIndex++;\n }\n\n if (m.length > 1) {\n errors.push(m[1]);\n }\n }\n });\n }\n\n if (errors.length > 0) {\n return {\n message: errors.join(',')\n };\n } // Harder case, we need to dig for a custom code\n\n\n const transactionError = tx === null || tx === void 0 ? void 0 : (_tx$meta = tx.meta) === null || _tx$meta === void 0 ? void 0 : _tx$meta.err;\n let errorCode;\n\n if (transactionError && typeof transactionError !== 'string') {\n const instructionError = transactionError.InstructionError;\n const [index, {\n Custom\n }] = instructionError;\n errorCode = Custom !== null && Custom !== void 0 ? Custom : instructionError[1];\n\n if (tx !== null && tx !== void 0 && tx.meta && tx.meta.logMessages) {\n var _tx$meta2;\n\n const failedProgramId = getFailedProgram((_tx$meta2 = tx.meta) === null || _tx$meta2 === void 0 ? void 0 : _tx$meta2.logMessages, errorCode);\n\n if (failedProgramId) {\n if (failedProgramId === SYSTEM_PROGRAM_ID) {\n return getSystemProgramError(instructionError);\n }\n\n return {\n message: UNKNOWN_ERROR,\n programId: failedProgramId,\n code: errorCode\n };\n }\n }\n }\n\n return {\n message: typeof transactionError === 'string' ? transactionError : UNKNOWN_ERROR,\n code: errorCode\n };\n}\n\nfunction getFailedProgram(logMessages, errorCode) {\n for (let i = 0; i < logMessages.length; i++) {\n const log = logMessages[i];\n const found = log.match(new RegExp(`Program ([1-9A-HJ-NP-Za-km-z]{32,44}) failed: custom program error: 0x${errorCode.toString(16)}`));\n\n if (found) {\n return found[1];\n }\n }\n\n return;\n}\n\nfunction getSystemProgramError(instructionError) {\n const code = instructionError[1].Custom;\n let message = '';\n\n switch (code) {\n // https://github.com/solana-labs/solana/blob/22a18a68e3ee68ae013d647e62e12128433d7230/sdk/program/src/system_instruction.rs#L12-L26\n // TODO: Do we need to translate all error codes.\n case 0:\n message = 'An account with the same address already exists';\n\n case 1:\n message = 'The account does not have enough SOL to perform the operation';\n\n default:\n message = UNKNOWN_ERROR;\n }\n\n return {\n code,\n programId: SYSTEM_PROGRAM_ID,\n message\n };\n}\n\nasync function pollForConfirmedTransaction(connection, txid) {\n return promiseRetry(async retry => {\n const response = await connection.getTransaction(txid, {\n commitment: 'confirmed'\n });\n\n if (!response) {\n retry(new TransactionError('Transaction was not confirmed', txid));\n }\n\n return response;\n }, {\n retries: 30,\n minTimeout: 500\n }).catch(() => null);\n}\n\nconst deserializeAccount = data => {\n if (data == undefined || data.length == 0) {\n return undefined;\n }\n\n const accountInfo = AccountLayout.decode(data);\n accountInfo.mint = new PublicKey(accountInfo.mint);\n accountInfo.owner = new PublicKey(accountInfo.owner);\n accountInfo.amount = u64.fromBuffer(accountInfo.amount);\n\n if (accountInfo.delegateOption === 0) {\n accountInfo.delegate = null;\n accountInfo.delegatedAmount = new u64(0);\n } else {\n accountInfo.delegate = new PublicKey(accountInfo.delegate);\n accountInfo.delegatedAmount = u64.fromBuffer(accountInfo.delegatedAmount);\n }\n\n accountInfo.isInitialized = accountInfo.state !== 0;\n accountInfo.isFrozen = accountInfo.state === 2;\n\n if (accountInfo.isNativeOption === 1) {\n accountInfo.rentExemptReserve = u64.fromBuffer(accountInfo.isNative);\n accountInfo.isNative = true;\n } else {\n accountInfo.rentExemptReserve = null;\n accountInfo.isNative = false;\n }\n\n if (accountInfo.closeAuthorityOption === 0) {\n accountInfo.closeAuthority = null;\n } else {\n accountInfo.closeAuthority = new PublicKey(accountInfo.closeAuthority);\n }\n\n return accountInfo;\n};\n\nconst deserializeMint = (data, address) => {\n if (data.length !== MintLayout.span) {\n // This is causing problem with mainnet token\n // throw new Error('Not a valid Mint')\n return;\n }\n\n const mintInfo = MintLayout.decode(data);\n mintInfo.address = address;\n\n if (mintInfo.mintAuthorityOption === 0) {\n mintInfo.mintAuthority = null;\n } else {\n mintInfo.mintAuthority = new PublicKey(mintInfo.mintAuthority);\n }\n\n mintInfo.supply = u64.fromBuffer(mintInfo.supply);\n mintInfo.isInitialized = mintInfo.isInitialized !== 0;\n\n if (mintInfo.freezeAuthorityOption === 0) {\n mintInfo.freezeAuthority = null;\n } else {\n mintInfo.freezeAuthority = new PublicKey(mintInfo.freezeAuthority);\n }\n\n return mintInfo;\n};\n\nconst SOL_MINT = 'So11111111111111111111111111111111111111112';\n\nasync function getWSolATA(connection, publicKey) {\n const wSolAddress = await Token.getAssociatedTokenAddress(ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID, new PublicKey(SOL_MINT), publicKey);\n const accountInfo = await connection.getAccountInfo(wSolAddress);\n return {\n address: wSolAddress,\n accountInfo\n };\n}\n\nasync function createAndTransferWSOLInstructions(connection, publicKey, amountToTransferInLamports) {\n const wSolAccount = await getWSolATA(connection, publicKey);\n const instructions = []; // If no accountInfo, create one\n\n if (!wSolAccount.accountInfo) {\n // Create ATA account\n instructions.push(Token.createAssociatedTokenAccountInstruction(ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID, new PublicKey(SOL_MINT), wSolAccount.address, publicKey, publicKey));\n } // Fund account and sync\n\n\n instructions.push(SystemProgram.transfer({\n fromPubkey: publicKey,\n toPubkey: wSolAccount.address,\n lamports: amountToTransferInLamports\n }));\n instructions.push( // This is not exposed by the types, but indeed it exists\n Token.createSyncNativeInstruction(TOKEN_PROGRAM_ID, wSolAccount.address));\n const {\n blockhash,\n lastValidBlockHeight\n } = await connection.getLatestBlockhash();\n const transaction = new Transaction({\n feePayer: publicKey,\n blockhash,\n lastValidBlockHeight\n });\n transaction.add(...instructions);\n return transaction;\n}\n\nasync function createUnwrapSolInstructions(connection, publicKey) {\n const wSolAccount = await getWSolATA(connection, publicKey);\n const instructions = [];\n\n if (!wSolAccount.accountInfo) {\n return;\n } // Close account\n\n\n instructions.push(Token.createCloseAccountInstruction(TOKEN_PROGRAM_ID, wSolAccount.address, publicKey, publicKey, []));\n const {\n blockhash,\n lastValidBlockHeight\n } = await connection.getLatestBlockhash();\n const transaction = new Transaction({\n feePayer: publicKey,\n blockhash,\n lastValidBlockHeight\n });\n transaction.add(...instructions);\n return transaction;\n}\n\nexport { TransactionError, UNKNOWN_ERROR, createAndTransferWSOLInstructions, createUnwrapSolInstructions, deserializeAccount, deserializeMint, parseErrorForTransaction, pollForConfirmedTransaction };\n//# sourceMappingURL=optimist.esm.js.map\n","import{Buffer as t}from\"buffer\";import{PublicKey as e,Transaction as r,TransactionInstruction as n,SendTransactionError as i,SystemProgram as o,SYSVAR_RENT_PUBKEY as s}from\"@solana/web3.js\";import*as a from\"@solana/web3.js\";export{a as web3};import c from\"bn.js\";export{default as BN}from\"bn.js\";import u from\"bs58\";import*as d from\"base64-js\";import l from\"camelcase\";import{sha256 as h}from\"js-sha256\";import*as f from\"@project-serum/borsh\";import{inflate as p}from\"pako\";import m from\"eventemitter3\";import*as y from\"assert\";var g=Object.freeze({__proto__:null,encode:function(t){return t.reduce(((t,e)=>t+e.toString(16).padStart(2,\"0\")),\"0x\")},decode:function(e){0===e.indexOf(\"0x\")&&(e=e.substr(2)),e.length%2==1&&(e=\"0\"+e);let r=e.match(/.{2}/g);return null===r?t.from([]):t.from(r.map((t=>parseInt(t,16))))}});function w(t){return new TextDecoder(\"utf-8\").decode(t)}function v(t){return(new TextEncoder).encode(t)}var b=Object.freeze({__proto__:null,decode:w,encode:v});function A(t){return u.encode(t)}var _=Object.freeze({__proto__:null,encode:A,decode:function(t){return u.decode(t)}});function E(e){return t.from(d.toByteArray(e))}var S=Object.freeze({__proto__:null,encode:function(t){return d.fromByteArray(t)},decode:E}),I=Object.freeze({__proto__:null,hex:g,utf8:b,bs58:_,base64:S});function k(t){const e=new Map;return t.errors&&t.errors.forEach((t=>{var r;let n=null!==(r=t.msg)&&void 0!==r?r:t.name;e.set(t.code,n)})),e}function x(t,...e){if(t.args.length!=e.length)throw new Error(\"Invalid argument length\");const r={};let n=0;return t.args.forEach((t=>{r[t.name]=e[n],n+=1})),r}function M(t,e={}){t.forEach((t=>{if(\"accounts\"in t)M(t.accounts,e[t.name]);else if(void 0===e[t.name])throw new Error(`Invalid arguments: ${t.name} not provided.`)}))}function P(t){return t instanceof e?t:new e(t)}class T extends TypeError{constructor(t,e){let r;const{message:n,...i}=t,{path:o}=t;super(0===o.length?n:\"At path: \"+o.join(\".\")+\" -- \"+n),Object.assign(this,i),this.name=this.constructor.name,this.failures=()=>{var n;return null!=(n=r)?n:r=[t,...e()]}}}function C(t){return\"object\"==typeof t&&null!=t}function L(t){return\"string\"==typeof t?JSON.stringify(t):\"\"+t}function O(t,e,r,n){if(!0===t)return;!1===t?t={}:\"string\"==typeof t&&(t={message:t});const{path:i,branch:o}=e,{type:s}=r,{refinement:a,message:c=\"Expected a value of type `\"+s+\"`\"+(a?\" with refinement `\"+a+\"`\":\"\")+\", but received: `\"+L(n)+\"`\"}=t;return{value:n,type:s,refinement:a,key:i[i.length-1],path:i,branch:o,...t,message:c}}function*B(t,e,r,n){var i;C(i=t)&&\"function\"==typeof i[Symbol.iterator]||(t=[t]);for(const i of t){const t=O(i,e,r,n);t&&(yield t)}}function*D(t,e,r={}){const{path:n=[],branch:i=[t],coerce:o=!1,mask:s=!1}=r,a={path:n,branch:i};if(o&&(t=e.coercer(t,a),s&&\"type\"!==e.type&&C(e.schema)&&C(t)&&!Array.isArray(t)))for(const r in t)void 0===e.schema[r]&&delete t[r];let c=!0;for(const r of e.validator(t,a))c=!1,yield[r,void 0];for(let[r,u,d]of e.entries(t,a)){const e=D(u,d,{path:void 0===r?n:[...n,r],branch:void 0===r?i:[...i,u],coerce:o,mask:s});for(const n of e)n[0]?(c=!1,yield[n[0],void 0]):o&&(u=n[1],void 0===r?t=u:t instanceof Map?t.set(r,u):t instanceof Set?t.add(u):C(t)&&(t[r]=u))}if(c)for(const r of e.refiner(t,a))c=!1,yield[r,void 0];c&&(yield[void 0,t])}class z{constructor(t){const{type:e,schema:r,validator:n,refiner:i,coercer:o=(t=>t),entries:s=function*(){}}=t;this.type=e,this.schema=r,this.entries=s,this.coercer=o,this.validator=n?(t,e)=>B(n(t,e),e,this,t):()=>[],this.refiner=i?(t,e)=>B(i(t,e),e,this,t):()=>[]}assert(t){return function(t,e){const r=R(t,e);if(r[0])throw r[0]}(t,this)}create(t){return N(t,this)}is(t){return j(t,this)}mask(t){return function(t,e){const r=R(t,e,{coerce:!0,mask:!0});if(r[0])throw r[0];return r[1]}(t,this)}validate(t,e={}){return R(t,this,e)}}function N(t,e){const r=R(t,e,{coerce:!0});if(r[0])throw r[0];return r[1]}function j(t,e){return!R(t,e)[0]}function R(t,e,r={}){const n=D(t,e,r),i=function(t){const{done:e,value:r}=t.next();return e?void 0:r}(n);if(i[0]){return[new T(i[0],(function*(){for(const t of n)t[0]&&(yield t[0])})),void 0]}return[void 0,i[1]]}function U(t,e){return new z({type:t,schema:null,validator:e})}function V(t){return new z({type:\"array\",schema:t,*entries(e){if(t&&Array.isArray(e))for(const[r,n]of e.entries())yield[r,n,t]},coercer:t=>Array.isArray(t)?t.slice():t,validator:t=>Array.isArray(t)||\"Expected an array value, but received: \"+L(t)})}function $(t){const e=L(t),r=typeof t;return new z({type:\"literal\",schema:\"string\"===r||\"number\"===r||\"boolean\"===r?t:null,validator:r=>r===t||\"Expected the literal `\"+e+\"`, but received: \"+L(r)})}function q(t){return new z({...t,validator:(e,r)=>null===e||t.validator(e,r),refiner:(e,r)=>null===e||t.refiner(e,r)})}function K(){return U(\"number\",(t=>\"number\"==typeof t&&!isNaN(t)||\"Expected a number, but received: \"+L(t)))}function F(t){return new z({...t,validator:(e,r)=>void 0===e||t.validator(e,r),refiner:(e,r)=>void 0===e||t.refiner(e,r)})}function W(){return U(\"string\",(t=>\"string\"==typeof t||\"Expected a string, but received: \"+L(t)))}function G(t){const e=Object.keys(t);return new z({type:\"type\",schema:t,*entries(r){if(C(r))for(const n of e)yield[n,r[n],t[n]]},validator:t=>C(t)||\"Expected an object, but received: \"+L(t)})}function H(t){const e=t.map((t=>t.type)).join(\" | \");return new z({type:\"union\",schema:null,validator(r,n){const i=[];for(const e of t){const[...t]=D(r,e,n),[o]=t;if(!o[0])return[];for(const[e]of t)e&&i.push(e)}return[\"Expected the value to satisfy a union of `\"+e+\"`, but received: \"+L(r),...i]}})}function J(){return U(\"unknown\",(()=>!0))}async function Z(t,e,r){if(e.length<=99)return await Q(t,e,r);{const n=function(t,e){return Array.apply(0,new Array(Math.ceil(t.length/e))).map(((r,n)=>t.slice(n*e,(n+1)*e)))}(e,99);return(await Promise.all(n.map((e=>Q(t,e,r))))).flat()}}async function Q(t,e,r){const n=null!=r?r:t.commitment;return(await t.getMultipleAccountsInfo(e,n)).map(((t,r)=>null===t?null:{publicKey:e[r],account:t}))}async function X(t,e,r,n,o){r&&r.length>0&&e.sign(...r);const s=e._compile(),a=s.serialize(),c=e._serialize(a).toString(\"base64\"),u={encoding:\"base64\",commitment:null!=n?n:t.commitment};if(o){const t=(Array.isArray(o)?o:s.nonProgramIds()).map((t=>t.toBase58()));u.accounts={encoding:\"base64\",addresses:t}}r&&(u.sigVerify=!0);const d=[c,u],l=N(await t._rpcRequest(\"simulateTransaction\",d),rt);if(\"error\"in l){let t;if(\"data\"in l.error&&(t=l.error.data.logs,t&&Array.isArray(t))){const e=\"\\n \",r=e+t.join(e);console.error(l.error.message,r)}throw new i(\"failed to simulate transaction: \"+l.error.message,t)}return l.result}function Y(t){return function(t,e,r){return new z({...t,coercer:(n,i)=>j(n,e)?t.coercer(r(n,i),i):t.coercer(n,i)})}(et(t),tt,(e=>\"error\"in e?e:{...e,result:N(e.result,t)}))}const tt=et(J());function et(t){return H([G({jsonrpc:$(\"2.0\"),id:W(),result:t}),G({jsonrpc:$(\"2.0\"),id:W(),error:G({code:J(),message:W(),data:F(U(\"any\",(()=>!0)))})})])}const rt=(nt=G({err:q(H([G({}),W()])),logs:q(V(W())),accounts:F(q(V(q(G({executable:U(\"boolean\",(t=>\"boolean\"==typeof t)),owner:W(),lamports:K(),data:V(W()),rentEpoch:F(K())}))))),unitsConsumed:F(K())}),Y(G({context:G({slot:K()}),value:nt})));var nt,it=Object.freeze({__proto__:null,invoke:async function(t,e,i,o){t=P(t),o||(o=dt());const s=new r;if(s.add(new n({programId:t,keys:null!=e?e:[],data:i})),void 0===o.sendAndConfirm)throw new Error(\"This function requires 'Provider.sendAndConfirm' to be implemented.\");return await o.sendAndConfirm(s,[])},getMultipleAccounts:Z,simulateTransaction:X});class ot{constructor(t,e,r){this.connection=t,this.wallet=e,this.opts=r}static defaultOptions(){return{preflightCommitment:\"processed\",commitment:\"processed\"}}static local(t,e){throw new Error(\"Provider local is not available on browser.\")}static env(){throw new Error(\"Provider env is not available on browser.\")}async sendAndConfirm(t,e,r){var n;void 0===r&&(r=this.opts),t.feePayer=this.wallet.publicKey,t.recentBlockhash=(await this.connection.getRecentBlockhash(r.preflightCommitment)).blockhash,t=await this.wallet.signTransaction(t),(null!=e?e:[]).forEach((e=>{t.partialSign(e)}));const o=t.serialize();try{return await at(this.connection,o,r)}catch(e){if(e instanceof ct){const r=await this.connection.getTransaction(A(t.signature),{commitment:\"confirmed\"});if(r){const t=null===(n=r.meta)||void 0===n?void 0:n.logMessages;throw t?new i(e.message,t):e}throw e}throw e}}async sendAll(t,e){void 0===e&&(e=this.opts);const r=await this.connection.getRecentBlockhash(e.preflightCommitment);let n=t.map((t=>{var e;let n=t.tx,i=null!==(e=t.signers)&&void 0!==e?e:[];return n.feePayer=this.wallet.publicKey,n.recentBlockhash=r.blockhash,i.forEach((t=>{n.partialSign(t)})),n}));const i=await this.wallet.signAllTransactions(n),o=[];for(let t=0;tt.startsWith(\"Program log: AnchorError\")));if(-1===r)return null;const n=t[r],i=[n];let o;if(r+11)return null;n=t[0].match(/([0-9]+)/g)[0]}try{i=parseInt(n)}catch(t){return null}let o=e.get(i);return void 0!==o?new vt(i,o,t.logs):(o=_t.get(i),void 0!==o?new vt(i,o,t.logs):null)}get program(){var t;return null===(t=this._programErrorStack)||void 0===t?void 0:t.stack[this._programErrorStack.stack.length-1]}get programErrorStack(){var t;return null===(t=this._programErrorStack)||void 0===t?void 0:t.stack}toString(){return this.msg}}function bt(t,e){pt(\"debug-logs\")&&console.log(\"Translating error:\",t);const r=wt.parse(t.logs);if(r)return r;const n=vt.parse(t,e);if(n)return n;if(t.logs){const e={get:function(e,r){return\"programErrorStack\"===r?e.programErrorStack.stack:\"program\"===r?e.programErrorStack.stack[t.programErrorStack.stack.length-1]:Reflect.get(...arguments)}};return t.programErrorStack=gt.parse(t.logs),new Proxy(t,e)}return t}const At={InstructionMissing:100,InstructionFallbackNotFound:101,InstructionDidNotDeserialize:102,InstructionDidNotSerialize:103,IdlInstructionStub:1e3,IdlInstructionInvalidProgram:1001,ConstraintMut:2e3,ConstraintHasOne:2001,ConstraintSigner:2002,ConstraintRaw:2003,ConstraintOwner:2004,ConstraintRentExempt:2005,ConstraintSeeds:2006,ConstraintExecutable:2007,ConstraintState:2008,ConstraintAssociated:2009,ConstraintAssociatedInit:2010,ConstraintClose:2011,ConstraintAddress:2012,ConstraintZero:2013,ConstraintTokenMint:2014,ConstraintTokenOwner:2015,ConstraintMintMintAuthority:2016,ConstraintMintFreezeAuthority:2017,ConstraintMintDecimals:2018,ConstraintSpace:2019,RequireViolated:2500,RequireEqViolated:2501,RequireKeysEqViolated:2502,RequireNeqViolated:2503,RequireKeysNeqViolated:2504,RequireGtViolated:2505,RequireGteViolated:2506,AccountDiscriminatorAlreadySet:3e3,AccountDiscriminatorNotFound:3001,AccountDiscriminatorMismatch:3002,AccountDidNotDeserialize:3003,AccountDidNotSerialize:3004,AccountNotEnoughKeys:3005,AccountNotMutable:3006,AccountOwnedByWrongProgram:3007,InvalidProgramId:3008,InvalidProgramExecutable:3009,AccountNotSigner:3010,AccountNotSystemOwned:3011,AccountNotInitialized:3012,AccountNotProgramData:3013,AccountNotAssociatedTokenAccount:3014,AccountSysvarMismatch:3015,StateInvalidAddress:4e3,DeclaredProgramIdMismatch:4100,Deprecated:5e3},_t=new Map([[At.InstructionMissing,\"8 byte instruction identifier not provided\"],[At.InstructionFallbackNotFound,\"Fallback functions are not supported\"],[At.InstructionDidNotDeserialize,\"The program could not deserialize the given instruction\"],[At.InstructionDidNotSerialize,\"The program could not serialize the given instruction\"],[At.IdlInstructionStub,\"The program was compiled without idl instructions\"],[At.IdlInstructionInvalidProgram,\"The transaction was given an invalid program for the IDL instruction\"],[At.ConstraintMut,\"A mut constraint was violated\"],[At.ConstraintHasOne,\"A has_one constraint was violated\"],[At.ConstraintSigner,\"A signer constraint was violated\"],[At.ConstraintRaw,\"A raw constraint was violated\"],[At.ConstraintOwner,\"An owner constraint was violated\"],[At.ConstraintRentExempt,\"A rent exemption constraint was violated\"],[At.ConstraintSeeds,\"A seeds constraint was violated\"],[At.ConstraintExecutable,\"An executable constraint was violated\"],[At.ConstraintState,\"A state constraint was violated\"],[At.ConstraintAssociated,\"An associated constraint was violated\"],[At.ConstraintAssociatedInit,\"An associated init constraint was violated\"],[At.ConstraintClose,\"A close constraint was violated\"],[At.ConstraintAddress,\"An address constraint was violated\"],[At.ConstraintZero,\"Expected zero account discriminant\"],[At.ConstraintTokenMint,\"A token mint constraint was violated\"],[At.ConstraintTokenOwner,\"A token owner constraint was violated\"],[At.ConstraintMintMintAuthority,\"A mint mint authority constraint was violated\"],[At.ConstraintMintFreezeAuthority,\"A mint freeze authority constraint was violated\"],[At.ConstraintMintDecimals,\"A mint decimals constraint was violated\"],[At.ConstraintSpace,\"A space constraint was violated\"],[At.RequireViolated,\"A require expression was violated\"],[At.RequireEqViolated,\"A require_eq expression was violated\"],[At.RequireKeysEqViolated,\"A require_keys_eq expression was violated\"],[At.RequireNeqViolated,\"A require_neq expression was violated\"],[At.RequireKeysNeqViolated,\"A require_keys_neq expression was violated\"],[At.RequireGtViolated,\"A require_gt expression was violated\"],[At.RequireGteViolated,\"A require_gte expression was violated\"],[At.AccountDiscriminatorAlreadySet,\"The account discriminator was already set on this account\"],[At.AccountDiscriminatorNotFound,\"No 8 byte discriminator was found on the account\"],[At.AccountDiscriminatorMismatch,\"8 byte discriminator did not match what was expected\"],[At.AccountDidNotDeserialize,\"Failed to deserialize the account\"],[At.AccountDidNotSerialize,\"Failed to serialize the account\"],[At.AccountNotEnoughKeys,\"Not enough account keys given to the instruction\"],[At.AccountNotMutable,\"The given account is not mutable\"],[At.AccountOwnedByWrongProgram,\"The given account is owned by a different program than expected\"],[At.InvalidProgramId,\"Program ID was not as expected\"],[At.InvalidProgramExecutable,\"Program account is not executable\"],[At.AccountNotSigner,\"The given account did not sign\"],[At.AccountNotSystemOwned,\"The given account is not owned by the system program\"],[At.AccountNotInitialized,\"The program expected this account to be already initialized\"],[At.AccountNotProgramData,\"The given account is not a program data account\"],[At.AccountNotAssociatedTokenAccount,\"The given account is not the associated token account\"],[At.AccountSysvarMismatch,\"The given public key does not match the required sysvar\"],[At.StateInvalidAddress,\"The given state account does not have the correct address\"],[At.DeclaredProgramIdMismatch,\"The declared program id does not match the actual program id\"],[At.Deprecated,\"The API being used is deprecated and should no longer be used\"]]);\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar Et=function(){return Et=Object.assign||function(t){for(var e,r=1,n=arguments.length;rt.name===n));if(1!==i.length)throw new yt(`Type not found: ${JSON.stringify(t)}`);return Pt.typeDefLayout(i[0],e,r)}if(\"array\"in t.type){let n=t.type.array[0],i=t.type.array[1],o=Pt.fieldLayout({name:void 0,type:n},e);return f.array(o,i,r)}throw new Error(`Not yet implemented: ${t}`)}}static typeDefLayout(t,e=[],r){if(\"struct\"===t.type.kind){const n=t.type.fields.map((t=>Pt.fieldLayout(t,e)));return f.struct(n,r)}if(\"enum\"===t.type.kind){let n=t.type.variants.map((t=>{const r=l(t.name);if(void 0===t.fields)return f.struct([],r);const n=t.fields.map((t=>{if(!t.hasOwnProperty(\"name\"))throw new Error(\"Tuple enum variants not yet implemented.\");return Pt.fieldLayout(t,e)}));return f.struct(n,r)}));return void 0!==r?f.rustEnum(n).replicate(r):f.rustEnum(n,r)}throw new Error(`Unknown type kint: ${t}`)}}class Tt{constructor(t){this.idl=t,this.ixLayout=Tt.parseIxLayout(t);const e=new Map;t.instructions.forEach((t=>{const r=Lt(\"global\",t.name);e.set(u.encode(r),{layout:this.ixLayout.get(t.name),name:t.name})})),t.state&&t.state.methods.map((t=>{const r=Lt(\"state\",t.name);e.set(u.encode(r),{layout:this.ixLayout.get(t.name),name:t.name})})),this.sighashLayouts=e}encode(t,e){return this._encode(\"global\",t,e)}encodeState(t,e){return this._encode(\"state\",t,e)}_encode(e,r,n){const i=t.alloc(1e3),o=l(r),s=this.ixLayout.get(o);if(!s)throw new Error(`Unknown method: ${o}`);const a=s.encode(n,i),c=i.slice(0,a);return t.concat([Lt(e,r),c])}static parseIxLayout(t){const e=(t.state?t.state.methods:[]).map((e=>{let r=e.args.map((e=>{var r,n;return Pt.fieldLayout(e,Array.from([...null!==(r=t.accounts)&&void 0!==r?r:[],...null!==(n=t.types)&&void 0!==n?n:[]]))}));const n=l(e.name);return[n,f.struct(r,n)]})).concat(t.instructions.map((e=>{let r=e.args.map((e=>{var r,n;return Pt.fieldLayout(e,Array.from([...null!==(r=t.accounts)&&void 0!==r?r:[],...null!==(n=t.types)&&void 0!==n?n:[]]))}));const n=l(e.name);return[n,f.struct(r,n)]})));return new Map(e)}decode(e,r=\"hex\"){\"string\"==typeof e&&(e=\"hex\"===r?t.from(e,\"hex\"):u.decode(e));let n=u.encode(e.slice(0,8)),i=e.slice(8);const o=this.sighashLayouts.get(n);return o?{data:o.layout.decode(i),name:o.name}:null}format(t,e){return Ct.format(t,e,this.idl)}}class Ct{static format(t,e,r){const n=r.instructions.filter((e=>t.name===e.name))[0];if(void 0===n)return console.error(\"Invalid instruction given\"),null;const i=n.args.map((e=>({name:e.name,type:Ct.formatIdlType(e.type),data:Ct.formatIdlData(e,t.data[e.name],r.types)}))),o=Ct.flattenIdlAccounts(n.accounts);return{args:i,accounts:e.map(((t,e)=>e`;if(\"option\"in t)return`Option<${this.formatIdlType(t.option)}>`;if(\"defined\"in t)return t.defined;if(\"array\"in t)return`Array<${t.array[0]}; ${t.array[1]}>`;throw new Error(`Unknown IDL type: ${t}`)}static formatIdlData(t,e,r){if(\"string\"==typeof t.type)return e.toString();if(t.type.hasOwnProperty(\"vec\"))return\"[\"+e.map((e=>this.formatIdlData({name:\"\",type:t.type.vec},e))).join(\", \")+\"]\";if(t.type.hasOwnProperty(\"option\"))return null===e?\"null\":this.formatIdlData({name:\"\",type:t.type.option},e,r);if(t.type.hasOwnProperty(\"defined\")){if(void 0===r)throw new Error(\"User defined types not provided\");const n=r.filter((e=>e.name===t.type.defined));if(1!==n.length)throw new Error(`Type not found: ${t.type.defined}`);return Ct.formatIdlDataDefined(n[0],e,r)}return\"unknown\"}static formatIdlDataDefined(t,e,r){if(\"struct\"===t.type.kind){const n=t.type;return\"{ \"+Object.keys(e).map((t=>{const i=n.fields.filter((e=>e.name===t))[0];if(void 0===i)throw new Error(\"Unable to find type\");return t+\": \"+Ct.formatIdlData(i,e[t],r)})).join(\", \")+\" }\"}if(0===t.type.variants.length)return\"{}\";if(t.type.variants[0].name){const n=t.type.variants,i=Object.keys(e)[0],o=e[i],s=Object.keys(o).map((t=>{var e;const s=o[t],a=null===(e=n[i])||void 0===e?void 0:e.filter((e=>e.name===t))[0];if(void 0===a)throw new Error(\"Unable to find variant\");return t+\": \"+Ct.formatIdlData(a,s,r)})).join(\", \"),a=l(i,{pascalCase:!0});return 0===s.length?a:`${a} { ${s} }`}return\"Tuple formatting not yet implemented\"}static flattenIdlAccounts(t,e){return t.map((t=>{const r=function(t){const e=t.replace(/([A-Z])/g,\" $1\");return e.charAt(0).toUpperCase()+e.slice(1)}(t.name);if(t.hasOwnProperty(\"accounts\")){const n=e?`${e} > ${r}`:r;return Ct.flattenIdlAccounts(t.accounts,n)}return{...t,name:e?`${e} > ${r}`:r}})).flat()}}function Lt(e,r){var n;let i=`${e}:${void 0===n&&(n={}),Mt(r,Et({delimiter:\"_\"},n))}`;return t.from(h.digest(i)).slice(0,8)}function Ot(t,e){if(\"enum\"===e.type.kind){let r=e.type.variants.map((e=>void 0===e.fields?0:e.fields.map((e=>{if(\"object\"!=typeof e||!(\"name\"in e))throw new Error(\"Tuple enum variants not yet implemented.\");return Bt(t,e.type)})).reduce(((t,e)=>t+e))));return Math.max(...r)+1}return void 0===e.type.fields?0:e.type.fields.map((e=>Bt(t,e.type))).reduce(((t,e)=>t+e),0)}function Bt(t,e){var r,n;switch(e){case\"bool\":case\"u8\":case\"i8\":case\"bytes\":case\"string\":return 1;case\"i16\":case\"u16\":return 2;case\"u32\":case\"i32\":case\"f32\":return 4;case\"u64\":case\"i64\":case\"f64\":return 8;case\"u128\":case\"i128\":return 16;case\"publicKey\":return 32;default:if(\"vec\"in e)return 1;if(\"option\"in e)return 1+Bt(t,e.option);if(\"coption\"in e)return 4+Bt(t,e.coption);if(\"defined\"in e){const i=null!==(n=null===(r=t.types)||void 0===r?void 0:r.filter((t=>t.name===e.defined)))&&void 0!==n?n:[];if(1!==i.length)throw new yt(`Type not found: ${JSON.stringify(e)}`);return Ot(t,i[0])}if(\"array\"in e){let r=e.array[0],n=e.array[1];return Bt(t,r)*n}throw new Error(`Invalid type ${JSON.stringify(e)}`)}}const Dt=8;class zt{constructor(t){if(void 0===t.accounts)return void(this.accountLayouts=new Map);const e=t.accounts.map((e=>[e.name,Pt.typeDefLayout(e,t.types)]));this.accountLayouts=new Map(e),this.idl=t}async encode(e,r){const n=t.alloc(1e3),i=this.accountLayouts.get(e);if(!i)throw new Error(`Unknown account: ${e}`);const o=i.encode(r,n);let s=n.slice(0,o),a=zt.accountDiscriminator(e);return t.concat([a,s])}decode(t,e){if(zt.accountDiscriminator(t).compare(e.slice(0,8)))throw new Error(\"Invalid account discriminator\");return this.decodeUnchecked(t,e)}decodeUnchecked(t,e){const r=e.slice(8),n=this.accountLayouts.get(t);if(!n)throw new Error(`Unknown account: ${t}`);return n.decode(r)}memcmp(e,r){const n=zt.accountDiscriminator(e);return{offset:0,bytes:u.encode(r?t.concat([n,r]):n)}}size(t){var e;return 8+(null!==(e=Ot(this.idl,t))&&void 0!==e?e:0)}static accountDiscriminator(e){return t.from(h.digest(`account:${l(e,{pascalCase:!0})}`)).slice(0,8)}}class Nt{constructor(t){if(void 0===t.events)return void(this.layouts=new Map);const e=t.events.map((e=>{let r={name:e.name,type:{kind:\"struct\",fields:e.fields.map((t=>({name:t.name,type:t.type})))}};return[e.name,Pt.typeDefLayout(r,t.types)]}));this.layouts=new Map(e),this.discriminators=new Map(void 0===t.events?[]:t.events.map((t=>[d.fromByteArray(jt(t.name)),t.name])))}decode(e){let r;try{r=t.from(d.toByteArray(e))}catch(t){return null}const n=d.fromByteArray(r.slice(0,8)),i=this.discriminators.get(n);if(void 0===i)return null;const o=this.layouts.get(i);if(!o)throw new Error(`Unknown event: ${i}`);return{data:o.decode(r.slice(8)),name:i}}}function jt(e){return t.from(h.digest(`event:${e}`)).slice(0,8)}class Rt{constructor(t){if(void 0===t.state)throw new Error(\"Idl state not defined.\");this.layout=Pt.typeDefLayout(t.state.struct,t.types)}async encode(e,r){const n=t.alloc(1e3),i=this.layout.encode(r,n),o=await Ut(e),s=n.slice(0,i);return t.concat([o,s])}decode(t){const e=t.slice(8);return this.layout.decode(e)}}async function Ut(e){let r=pt(\"anchor-deprecated-state\")?\"account\":\"state\";return t.from(h.digest(`${r}:${e}`)).slice(0,8)}class Vt{constructor(t){this.instruction=new Tt(t),this.accounts=new zt(t),this.events=new Nt(t),t.state&&(this.state=new Rt(t))}}var $t=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function qt(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}class Kt{constructor(t,e){if(!Number.isInteger(t))throw new TypeError(\"span must be an integer\");this.span=t,this.property=e}makeDestinationObject(){return{}}decode(t,e){throw new Error(\"Layout is abstract\")}encode(t,e,r){throw new Error(\"Layout is abstract\")}getSpan(t,e){if(0>this.span)throw new RangeError(\"indeterminate span\");return this.span}replicate(t){const e=Object.create(this.constructor.prototype);return Object.assign(e,this),e.property=t,e}fromArray(t){}}var Ft=Kt;class Wt extends Kt{isCount(){throw new Error(\"ExternalLayout is abstract\")}}class Gt extends Wt{constructor(t,e,r){if(!(t instanceof Kt))throw new TypeError(\"layout must be a Layout\");if(void 0===e)e=0;else if(!Number.isInteger(e))throw new TypeError(\"offset must be integer or undefined\");super(t.span,r||t.property),this.layout=t,this.offset=e}isCount(){return this.layout instanceof Ht||this.layout instanceof Jt}decode(t,e){return void 0===e&&(e=0),this.layout.decode(t,e+this.offset)}encode(t,e,r){return void 0===r&&(r=0),this.layout.encode(t,e,r+this.offset)}}class Ht extends Kt{constructor(t,e){if(super(t,e),6t&&e instanceof Kt),!0))throw new TypeError(\"fields must be array of Layout instances\");\"boolean\"==typeof e&&void 0===r&&(r=e,e=void 0);for(const e of t)if(0>e.span&&void 0===e.property)throw new Error(\"fields cannot contain unnamed variable-length layout\");let n=-1;try{n=t.reduce(((t,e)=>t+e.getSpan()),0)}catch(t){}super(n,e),this.fields=t,this.decodePrefixes=!!r}getSpan(t,e){if(0<=this.span)return this.span;void 0===e&&(e=0);let r=0;try{r=this.fields.reduce(((r,n)=>{const i=n.getSpan(t,e);return e+=i,r+i}),0)}catch(t){throw new RangeError(\"indeterminate span\")}return r}decode(t,e){void 0===e&&(e=0);const r=this.makeDestinationObject();for(const n of this.fields)if(void 0!==n.property&&(r[n.property]=n.decode(t,e)),e+=n.getSpan(t,e),this.decodePrefixes&&t.length===e)break;return r}encode(t,e,r){void 0===r&&(r=0);const n=r;let i=0,o=0;for(const n of this.fields){let s=n.span;if(o=0s&&(s=n.getSpan(e,r)))}i=r,r+=s}return i+o-n}fromArray(t){const e=this.makeDestinationObject();for(const r of this.fields)void 0!==r.property&&0r.span?e=-1:0<=e&&(e+=r.span)}}}class Yt{constructor(t){this.property=t}decode(){throw new Error(\"UnionDiscriminator is abstract\")}encode(){throw new Error(\"UnionDiscriminator is abstract\")}}class te extends Yt{constructor(t,e){if(!(t instanceof Wt&&t.isCount()))throw new TypeError(\"layout must be an unsigned integer ExternalLayout\");super(e||t.property||\"variant\"),this.layout=t}decode(t,e){return this.layout.decode(t,e)}encode(t,e,r){return this.layout.encode(t,e,r)}}class ee extends Kt{constructor(t,e,r){const n=t instanceof Ht||t instanceof Jt;if(n)t=new te(new Gt(t));else if(t instanceof Wt&&t.isCount())t=new te(t);else if(!(t instanceof Yt))throw new TypeError(\"discr must be a UnionDiscriminator or an unsigned integer layout\");if(void 0===e&&(e=null),!(null===e||e instanceof Kt))throw new TypeError(\"defaultLayout must be null or a Layout\");if(null!==e){if(0>e.span)throw new Error(\"defaultLayout must have constant span\");void 0===e.property&&(e=e.replicate(\"content\"))}let i=-1;e&&(i=e.span,0<=i&&n&&(i+=t.layout.span)),super(i,r),this.discriminator=t,this.usesPrefixDiscriminator=n,this.defaultLayout=e,this.registry={};let o=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(t){return o(t)},this.configGetSourceVariant=function(t){o=t.bind(this)}}getSpan(t,e){if(0<=this.span)return this.span;void 0===e&&(e=0);const r=this.getVariant(t,e);if(!r)throw new Error(\"unable to determine span for unrecognized variant\");return r.getSpan(t,e)}defaultGetSourceVariant(t){if(t.hasOwnProperty(this.discriminator.property)){if(this.defaultLayout&&t.hasOwnProperty(this.defaultLayout.property))return;const e=this.registry[t[this.discriminator.property]];if(e&&(!e.layout||t.hasOwnProperty(e.property)))return e}else for(const e in this.registry){const r=this.registry[e];if(t.hasOwnProperty(r.property))return r}throw new Error(\"unable to infer src variant\")}decode(t,e){let r;void 0===e&&(e=0);const n=this.discriminator,i=n.decode(t,e);let o=this.registry[i];if(void 0===o){let s=0;o=this.defaultLayout,this.usesPrefixDiscriminator&&(s=n.layout.span),r=this.makeDestinationObject(),r[n.property]=i,r[o.property]=this.defaultLayout.decode(t,e+s)}else r=o.decode(t,e);return r}encode(t,e,r){void 0===r&&(r=0);const n=this.getSourceVariant(t);if(void 0===n){const n=this.discriminator,i=this.defaultLayout;let o=0;return this.usesPrefixDiscriminator&&(o=n.layout.span),n.encode(t[n.property],e,r),o+i.encode(t[i.property],e,r+o)}return n.encode(t,e,r)}addVariant(t,e,r){const n=new re(this,t,e,r);return this.registry[t]=n,n}getVariant(t,e){let r=t;return Buffer.isBuffer(t)&&(void 0===e&&(e=0),r=this.discriminator.decode(t,e)),this.registry[r]}}class re extends Kt{constructor(t,e,r,n){if(!(t instanceof ee))throw new TypeError(\"union must be a Union\");if(!Number.isInteger(e)||0>e)throw new TypeError(\"variant must be a (non-negative) integer\");if(\"string\"==typeof r&&void 0===n&&(n=r,r=null),r){if(!(r instanceof Kt))throw new TypeError(\"layout must be a Layout\");if(null!==t.defaultLayout&&0<=r.span&&r.span>t.defaultLayout.span)throw new Error(\"variant span exceeds span of containing union\");if(\"string\"!=typeof n)throw new TypeError(\"variant must have a String property\")}let i=t.span;0>t.span&&(i=r?r.span:0,0<=i&&t.usesPrefixDiscriminator&&(i+=t.discriminator.layout.span)),super(i,n),this.union=t,this.variant=e,this.layout=r||null}getSpan(t,e){if(0<=this.span)return this.span;void 0===e&&(e=0);let r=0;return this.union.usesPrefixDiscriminator&&(r=this.union.discriminator.layout.span),r+this.layout.getSpan(t,e+r)}decode(t,e){const r=this.makeDestinationObject();if(void 0===e&&(e=0),this!==this.union.getVariant(t,e))throw new Error(\"variant mismatch\");let n=0;return this.union.usesPrefixDiscriminator&&(n=this.union.discriminator.layout.span),this.layout?r[this.property]=this.layout.decode(t,e+n):this.property?r[this.property]=!0:this.union.usesPrefixDiscriminator&&(r[this.union.discriminator.property]=this.variant),r}encode(t,e,r){void 0===r&&(r=0);let n=0;if(this.union.usesPrefixDiscriminator&&(n=this.union.discriminator.layout.span),this.layout&&!t.hasOwnProperty(this.property))throw new TypeError(\"variant lacks property \"+this.property);this.union.discriminator.encode(this.variant,e,r);let i=n;if(this.layout&&(this.layout.encode(t[this.property],e,r+n),i+=this.layout.getSpan(e,r+n),0<=this.union.span&&i>this.union.span))throw new Error(\"encoded variant overruns containing union\");return i}fromArray(t){if(this.layout)return this.layout.fromArray(t)}}class ne extends Kt{constructor(t,e){if(!(t instanceof Wt&&t.isCount()||Number.isInteger(t)&&0<=t))throw new TypeError(\"length must be positive integer or an unsigned integer ExternalLayout\");let r=-1;t instanceof Wt||(r=t),super(r,e),this.length=t}getSpan(t,e){let r=this.span;return 0>r&&(r=this.length.decode(t,e)),r}decode(t,e){void 0===e&&(e=0);let r=this.span;return 0>r&&(r=this.length.decode(t,e)),t.slice(e,e+r)}encode(t,e,r){let n=this.length;if(this.length instanceof Wt&&(n=t.length),!Buffer.isBuffer(t)||n!==t.length)throw new TypeError((i=\"Blob.encode\",((o=this).property?i+\"[\"+o.property+\"]\":i)+\" requires (length \"+n+\") Buffer as src\"));var i,o;if(r+n>e.length)throw new RangeError(\"encoding overruns Buffer\");return e.write(t.toString(\"hex\"),r,n,\"hex\"),this.length instanceof Wt&&this.length.encode(n,e,r),n}}var ie=t=>new Ht(1,t),oe=t=>new Qt(t),se=(t,e,r)=>new Xt(t,e,r),ae=(t,e)=>new ne(t,e);class ce{constructor(t){}encode(t,r){switch(l(t)){case\"initializeMint\":return function({decimals:t,mintAuthority:r,freezeAuthority:n}){return pe({initializeMint:{decimals:t,mintAuthority:r.toBuffer(),freezeAuthorityOption:!!n,freezeAuthority:(n||e.default).toBuffer()}})}(r);case\"initializeAccount\":return pe({initializeAccount:{}});case\"initializeMultisig\":return function({m:t}){return pe({initializeMultisig:{m:t}})}(r);case\"transfer\":return function({amount:t}){return pe({transfer:{amount:t}})}(r);case\"approve\":return function({amount:t}){return pe({approve:{amount:t}})}(r);case\"revoke\":return pe({revoke:{}});case\"setAuthority\":return function({authorityType:t,newAuthority:e}){return pe({setAuthority:{authorityType:t,newAuthority:e}})}(r);case\"mintTo\":return function({amount:t}){return pe({mintTo:{amount:t}})}(r);case\"burn\":return function({amount:t}){return pe({burn:{amount:t}})}(r);case\"closeAccount\":return pe({closeAccount:{}});case\"freezeAccount\":return pe({freezeAccount:{}});case\"thawAccount\":return pe({thawAccount:{}});case\"transferChecked\":return function({amount:t,decimals:e}){return pe({transferChecked:{amount:t,decimals:e}})}(r);case\"approvedChecked\":return function({amount:t,decimals:e}){return pe({approveChecked:{amount:t,decimals:e}})}(r);case\"mintToChecked\":return function({amount:t,decimals:e}){return pe({mintToChecked:{amount:t,decimals:e}})}(r);case\"burnChecked\":return function({amount:t,decimals:e}){return pe({burnChecked:{amount:t,decimals:e}})}(r);case\"intializeAccount2\":return function({authority:t}){return pe({initilaizeAccount2:{authority:t}})}(r);case\"syncNative\":return pe({syncNative:{}});case\"initializeAccount3\":return function({authority:t}){return pe({initializeAccount3:{authority:t}})}(r);case\"initializeMultisig2\":return function({m:t}){return pe({initializeMultisig2:{m:t}})}(r);case\"initializeMint2\":return function({decimals:t,mintAuthority:e,freezeAuthority:r}){return pe({encodeInitializeMint2:{decimals:t,mintAuthority:e,freezeAuthority:r}})}(r);default:throw new Error(`Invalid instruction: ${t}`)}}encodeState(t,e){throw new Error(\"SPL token does not have state\")}}const ue=(de=ie(\"instruction\"),new ee(de,le,he));var de,le,he;function fe(t){return ae(32,t)}function pe(t){let e=Buffer.alloc(me),r=ue.encode(t,e);return e.slice(0,r)}ue.addVariant(0,se([ie(\"decimals\"),ae(32,\"mintAuthority\"),ie(\"freezeAuthorityOption\"),fe(\"freezeAuthority\")]),\"initializeMint\"),ue.addVariant(1,se([]),\"initializeAccount\"),ue.addVariant(2,se([ie(\"m\")]),\"initializeMultisig\"),ue.addVariant(3,se([oe(\"amount\")]),\"transfer\"),ue.addVariant(4,se([oe(\"amount\")]),\"approve\"),ue.addVariant(5,se([]),\"revoke\"),ue.addVariant(6,se([ie(\"authorityType\"),ie(\"newAuthorityOption\"),fe(\"newAuthority\")]),\"setAuthority\"),ue.addVariant(7,se([oe(\"amount\")]),\"mintTo\"),ue.addVariant(8,se([oe(\"amount\")]),\"burn\"),ue.addVariant(9,se([]),\"closeAccount\"),ue.addVariant(10,se([]),\"freezeAccount\"),ue.addVariant(11,se([]),\"thawAccount\"),ue.addVariant(12,se([oe(\"amount\"),ie(\"decimals\")]),\"transferChecked\"),ue.addVariant(13,se([oe(\"amount\"),ie(\"decimals\")]),\"approvedChecked\"),ue.addVariant(14,se([oe(\"amount\"),ie(\"decimals\")]),\"mintToChecked\"),ue.addVariant(15,se([oe(\"amount\"),ie(\"decimals\")]),\"burnedChecked\"),ue.addVariant(16,se([fe(\"authority\")]),\"InitializeAccount2\"),ue.addVariant(17,se([]),\"syncNative\"),ue.addVariant(18,se([fe(\"authority\")]),\"initializeAccount3\"),ue.addVariant(19,se([ie(\"m\")]),\"initializeMultisig2\"),ue.addVariant(20,se([ie(\"decimals\"),fe(\"mintAuthority\"),ie(\"freezeAuthorityOption\"),fe(\"freezeAuthority\")]),\"initializeMint2\");const me=Math.max(...Object.values(ue.registry).map((t=>t.span)));class ye{constructor(t){}encode(t,e){throw new Error(\"SPL token does not have state\")}decode(t){throw new Error(\"SPL token does not have state\")}}function ge(t){return new be(ae(8),(t=>Se.fromBuffer(t)),(t=>t.toBuffer()),t)}function we(t){return new be(ae(32),(t=>new e(t)),(t=>t.toBuffer()),t)}function ve(t,e){return new Ae(t,e)}class be extends Ft{constructor(t,e,r,n){super(t.span,n),this.layout=t,this.decoder=e,this.encoder=r}decode(t,e){return this.decoder(this.layout.decode(t,e))}encode(t,e,r){return this.layout.encode(this.encoder(t),e,r)}getSpan(t,e){return this.layout.getSpan(t,e)}}class Ae extends Ft{constructor(t,e){super(-1,e),this.layout=t,this.discriminator=(t=>new Ht(4,t))()}encode(t,e,r=0){return null==t?this.layout.span+this.discriminator.encode(0,e,r):(this.discriminator.encode(1,e,r),this.layout.encode(t,e,r+4)+4)}decode(t,e=0){const r=this.discriminator.decode(t,e);if(0===r)return null;if(1===r)return this.layout.decode(t,e+4);throw new Error(\"Invalid coption \"+this.layout.property)}getSpan(t,e=0){return this.layout.getSpan(t,e+4)+4}}function _e(t){if(0===t)return!1;if(1===t)return!0;throw new Error(\"Invalid bool: \"+t)}function Ee(t){return t?1:0}class Se extends c{toBuffer(){const t=super.toArray().reverse(),e=Buffer.from(t);if(8===e.length)return e;if(e.length>=8)throw new Error(\"u64 too large\");const r=Buffer.alloc(8);return e.copy(r),r}static fromBuffer(t){if(8!==t.length)throw new Error(`Invalid buffer length: ${t.length}`);return new Se([...t].reverse().map((t=>`00${t.toString(16)}`.slice(-2))).join(\"\"),16)}}class Ie{constructor(t){this.idl=t}async encode(t,e){switch(t){case\"token\":{const t=Buffer.alloc(165),r=xe.encode(e,t);return t.slice(0,r)}case\"mint\":{const t=Buffer.alloc(82),r=ke.encode(e,t);return t.slice(0,r)}default:throw new Error(`Invalid account name: ${t}`)}}decode(t,e){return this.decodeUnchecked(t,e)}decodeUnchecked(t,e){switch(t){case\"token\":return function(t){return xe.decode(t)}(e);case\"mint\":return function(t){return ke.decode(t)}(e);default:throw new Error(`Invalid account name: ${t}`)}}memcmp(t,e){switch(t){case\"token\":return{dataSize:165};case\"mint\":return{dataSize:82};default:throw new Error(`Invalid account name: ${t}`)}}size(t){var e;return null!==(e=Ot(this.idl,t))&&void 0!==e?e:0}}const ke=se([ve(we(),\"mintAuthority\"),ge(\"supply\"),ie(\"decimals\"),function(t){return new be(ie(),_e,Ee,t)}(\"isInitialized\"),ve(we(),\"freezeAuthority\")]),xe=se([we(\"mint\"),we(\"authority\"),ge(\"amount\"),ve(we(),\"delegate\"),ie(\"state\"),ve(ge(),\"isNative\"),ge(\"delegatedAmount\"),ve(we(),\"closeAuthority\")]);class Me{constructor(t){}decode(t){throw new Error(\"SPL token program does not have events\")}}class Pe{constructor(t){this.instruction=new ce(t),this.accounts=new Ie(t),this.events=new Me(t),this.state=new ye(t)}}var Te=Object.freeze({__proto__:null,hash:function(t){return h(t)}});function Ce(r,n,i){const o=t.concat([r.toBuffer(),t.from(n),i.toBuffer()]),s=h.digest(o);return new e(t.from(s))}function Le(r,n){let i=t.alloc(0);r.forEach((function(e){if(e.length>32)throw new TypeError(\"Max seed length exceeded\");i=t.concat([i,Be(e)])})),i=t.concat([i,n.toBuffer(),t.from(\"ProgramDerivedAddress\")]);let o=h(new Uint8Array(i)),s=new c(o,16).toArray(void 0,32);if(e.isOnCurve(new Uint8Array(s)))throw new Error(\"Invalid seeds, address must fall off the curve\");return new e(s)}function Oe(e,r){let n,i=255;for(;0!=i;){try{n=Le(e.concat(t.from([i])),r)}catch(t){if(t instanceof TypeError)throw t;i--;continue}return[n,i]}throw new Error(\"Unable to find a viable program address nonce\")}const Be=e=>e instanceof t?e:e instanceof Uint8Array?t.from(e.buffer,e.byteOffset,e.byteLength):t.from(e);async function De(r,...n){let i=[t.from([97,110,99,104,111,114])];n.forEach((e=>{i.push(e instanceof t?e:P(e).toBuffer())}));const[o]=await e.findProgramAddress(i,P(r));return o}var ze=Object.freeze({__proto__:null,createWithSeedSync:Ce,createProgramAddressSync:Le,findProgramAddressSync:Oe,associated:De});const Ne=new e(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"),je=new e(\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\");var Re=Object.freeze({__proto__:null,TOKEN_PROGRAM_ID:Ne,ASSOCIATED_PROGRAM_ID:je,associatedAddress:async function({mint:t,owner:r}){return(await e.findProgramAddress([r.toBuffer(),Ne.toBuffer(),t.toBuffer()],je))[0]}}),Ue={exports:{}};!function(t,e){var r=\"undefined\"!=typeof self?self:$t,n=function(){function t(){this.fetch=!1,this.DOMException=r.DOMException}return t.prototype=r,new t}();!function(t){!function(e){var r=\"URLSearchParams\"in t,n=\"Symbol\"in t&&\"iterator\"in Symbol,i=\"FileReader\"in t&&\"Blob\"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),o=\"FormData\"in t,s=\"ArrayBuffer\"in t;if(s)var a=[\"[object Int8Array]\",\"[object Uint8Array]\",\"[object Uint8ClampedArray]\",\"[object Int16Array]\",\"[object Uint16Array]\",\"[object Int32Array]\",\"[object Uint32Array]\",\"[object Float32Array]\",\"[object Float64Array]\"],c=ArrayBuffer.isView||function(t){return t&&a.indexOf(Object.prototype.toString.call(t))>-1};function u(t){if(\"string\"!=typeof t&&(t=String(t)),/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError(\"Invalid character in header field name\");return t.toLowerCase()}function d(t){return\"string\"!=typeof t&&(t=String(t)),t}function l(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return n&&(e[Symbol.iterator]=function(){return e}),e}function h(t){this.map={},t instanceof h?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}function f(t){if(t.bodyUsed)return Promise.reject(new TypeError(\"Already read\"));t.bodyUsed=!0}function p(t){return new Promise((function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}}))}function m(t){var e=new FileReader,r=p(e);return e.readAsArrayBuffer(t),r}function y(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function g(){return this.bodyUsed=!1,this._initBody=function(t){var e;this._bodyInit=t,t?\"string\"==typeof t?this._bodyText=t:i&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:o&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:r&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():s&&i&&((e=t)&&DataView.prototype.isPrototypeOf(e))?(this._bodyArrayBuffer=y(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):s&&(ArrayBuffer.prototype.isPrototypeOf(t)||c(t))?this._bodyArrayBuffer=y(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText=\"\",this.headers.get(\"content-type\")||(\"string\"==typeof t?this.headers.set(\"content-type\",\"text/plain;charset=UTF-8\"):this._bodyBlob&&this._bodyBlob.type?this.headers.set(\"content-type\",this._bodyBlob.type):r&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set(\"content-type\",\"application/x-www-form-urlencoded;charset=UTF-8\"))},i&&(this.blob=function(){var t=f(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error(\"could not read FormData body as blob\");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?f(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(m)}),this.text=function(){var t=f(this);if(t)return t;if(this._bodyBlob)return function(t){var e=new FileReader,r=p(e);return e.readAsText(t),r}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),n=0;n-1?n:r),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,(\"GET\"===this.method||\"HEAD\"===this.method)&&i)throw new TypeError(\"Body not allowed for GET or HEAD requests\");this._initBody(i)}function b(t){var e=new FormData;return t.trim().split(\"&\").forEach((function(t){if(t){var r=t.split(\"=\"),n=r.shift().replace(/\\+/g,\" \"),i=r.join(\"=\").replace(/\\+/g,\" \");e.append(decodeURIComponent(n),decodeURIComponent(i))}})),e}function A(t,e){e||(e={}),this.type=\"default\",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText=\"statusText\"in e?e.statusText:\"OK\",this.headers=new h(e.headers),this.url=e.url||\"\",this._initBody(t)}v.prototype.clone=function(){return new v(this,{body:this._bodyInit})},g.call(v.prototype),g.call(A.prototype),A.prototype.clone=function(){return new A(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new h(this.headers),url:this.url})},A.error=function(){var t=new A(null,{status:0,statusText:\"\"});return t.type=\"error\",t};var _=[301,302,303,307,308];A.redirect=function(t,e){if(-1===_.indexOf(e))throw new RangeError(\"Invalid status code\");return new A(null,{status:e,headers:{location:t}})},e.DOMException=t.DOMException;try{new e.DOMException}catch(t){e.DOMException=function(t,e){this.message=t,this.name=e;var r=Error(t);this.stack=r.stack},e.DOMException.prototype=Object.create(Error.prototype),e.DOMException.prototype.constructor=e.DOMException}function E(t,r){return new Promise((function(n,o){var s=new v(t,r);if(s.signal&&s.signal.aborted)return o(new e.DOMException(\"Aborted\",\"AbortError\"));var a=new XMLHttpRequest;function c(){a.abort()}a.onload=function(){var t,e,r={status:a.status,statusText:a.statusText,headers:(t=a.getAllResponseHeaders()||\"\",e=new h,t.replace(/\\r?\\n[\\t ]+/g,\" \").split(/\\r?\\n/).forEach((function(t){var r=t.split(\":\"),n=r.shift().trim();if(n){var i=r.join(\":\").trim();e.append(n,i)}})),e)};r.url=\"responseURL\"in a?a.responseURL:r.headers.get(\"X-Request-URL\");var i=\"response\"in a?a.response:a.responseText;n(new A(i,r))},a.onerror=function(){o(new TypeError(\"Network request failed\"))},a.ontimeout=function(){o(new TypeError(\"Network request failed\"))},a.onabort=function(){o(new e.DOMException(\"Aborted\",\"AbortError\"))},a.open(s.method,s.url,!0),\"include\"===s.credentials?a.withCredentials=!0:\"omit\"===s.credentials&&(a.withCredentials=!1),\"responseType\"in a&&i&&(a.responseType=\"blob\"),s.headers.forEach((function(t,e){a.setRequestHeader(e,t)})),s.signal&&(s.signal.addEventListener(\"abort\",c),a.onreadystatechange=function(){4===a.readyState&&s.signal.removeEventListener(\"abort\",c)}),a.send(void 0===s._bodyInit?null:s._bodyInit)}))}E.polyfill=!0,t.fetch||(t.fetch=E,t.Headers=h,t.Request=v,t.Response=A),e.Headers=h,e.Request=v,e.Response=A,e.fetch=E,Object.defineProperty(e,\"__esModule\",{value:!0})}({})}(n),n.fetch.ponyfill=!0,delete n.fetch.polyfill;var i=n;(e=i.fetch).default=i.fetch,e.fetch=i.fetch,e.Headers=i.Headers,e.Request=i.Request,e.Response=i.Response,t.exports=e}(Ue,Ue.exports);var Ve=qt(Ue.exports);async function $e(t,e){const r=await t.getAccountInfo(e);if(null===r)throw new Error(\"program account not found\");const{program:n}=Ke(r.data),i=await t.getAccountInfo(n.programdataAddress);if(null===i)throw new Error(\"program data account not found\");const{programData:o}=Ke(i.data);return o}const qe=f.rustEnum([f.struct([],\"uninitialized\"),f.struct([f.option(f.publicKey(),\"authorityAddress\")],\"buffer\"),f.struct([f.publicKey(\"programdataAddress\")],\"program\"),f.struct([f.u64(\"slot\"),f.option(f.publicKey(),\"upgradeAuthorityAddress\")],\"programData\")],void 0,f.u32());function Ke(t){return qe.decode(t)}var Fe=Object.freeze({__proto__:null,verifiedBuild:async function(t,e,r=5){const n=`https://anchor.projectserum.com/api/v0/program/${e.toString()}/latest?limit=${r}`,[i,o]=await Promise.all([$e(t,e),Ve(n)]),s=(await o.json()).filter((t=>!t.aborted&&\"Built\"===t.state&&\"Verified\"===t.verified));if(0===s.length)return null;const a=s[0];return i.slot.toNumber()!==a.verified_slot?null:a},fetchData:$e,decodeUpgradeableLoaderState:Ke}),We=Object.freeze({__proto__:null,sha256:Te,rpc:it,publicKey:ze,bytes:I,token:Re,features:mt,registry:Fe});const Ge=f.struct([f.publicKey(\"authority\"),f.vecU8(\"data\")]);function He(t,e){var r,n;let i={};const o=t.args?t.args.length:0;if(e.length>o){if(e.length!==o+1)throw new Error(`provided too many arguments ${e} to instruction ${null==t?void 0:t.name} expecting: ${null!==(n=null===(r=t.args)||void 0===r?void 0:r.map((t=>t.name)))&&void 0!==n?n:[]}`);i=e.pop()}return[e,i]}class Je{static build(t,e,r){if(\"_inner\"===t.name)throw new yt(\"the _inner name is reserved\");const i=(...o)=>{const[s,a]=He(t,[...o]);M(t.accounts,a.accounts);const c=i.accounts(a.accounts);return void 0!==a.remainingAccounts&&c.push(...a.remainingAccounts),pt(\"debug-logs\")&&console.log(\"Outgoing account metas:\",c),new n({keys:c,programId:r,data:e(t.name,x(t,...s))})};return i.accounts=e=>Je.accountsArray(e,t.accounts,t.name),i}static accountsArray(t,e,r){return t?e.map((e=>{if(void 0!==(\"accounts\"in e?e.accounts:void 0)){const n=t[e.name];return Je.accountsArray(n,e.accounts,r).flat()}{const n=e;let i;try{i=P(t[e.name])}catch(t){throw new Error(`Wrong input type for account \"${e.name}\" in the instruction accounts object${void 0!==r?' for instruction \"'+r+'\"':\"\"}. Expected PublicKey or string.`)}return{pubkey:i,isWritable:n.isMut,isSigner:n.isSigner}}})).flat():[]}}class Ze{static build(t,e,r,n){return async(...i)=>{var o;const s=e(...i),[,a]=He(t,[...i]);if(void 0===n.sendAndConfirm)throw new Error(\"This function requires 'Provider.sendAndConfirm' to be implemented.\");try{return await n.sendAndConfirm(s,null!==(o=a.signers)&&void 0!==o?o:[],a.options)}catch(t){throw bt(t,r)}}}}class Qe{static build(t,e){return(...n)=>{var i,o,s;const[,a]=He(t,[...n]),c=new r;if(a.preInstructions&&a.instructions)throw new Error(\"instructions is deprecated, use preInstructions\");return null===(i=a.preInstructions)||void 0===i||i.forEach((t=>c.add(t))),null===(o=a.instructions)||void 0===o||o.forEach((t=>c.add(t))),c.add(e(...n)),null===(s=a.postInstructions)||void 0===s||s.forEach((t=>c.add(t))),c}}}class Xe{constructor(t,e,r=dt(),n=new Vt(t)){this.provider=r,this.coder=n,this._idl=t,this._programId=e,this._address=Ye(e),this._sub=null;const[i,s,a]=(()=>{var i;let s={},a={},c={};return null===(i=t.state)||void 0===i||i.methods.forEach((i=>{const u=Je.build(i,((t,e)=>n.instruction.encodeState(t,e)),e);u.accounts=t=>{const n=function(t,e,r,n){if(\"new\"===r.name){const[r]=Oe([],t);if(void 0===e.wallet)throw new Error(\"This function requires the Provider interface implementor to have a 'wallet' field.\");return[{pubkey:e.wallet.publicKey,isWritable:!1,isSigner:!0},{pubkey:Ye(t),isWritable:!0,isSigner:!1},{pubkey:r,isWritable:!1,isSigner:!1},{pubkey:o.programId,isWritable:!1,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1}]}return M(r.accounts,n),[{pubkey:Ye(t),isWritable:!0,isSigner:!1}]}(e,r,i,t);return n.concat(Je.accountsArray(t,i.accounts,i.name))};const d=Qe.build(i,u),h=Ze.build(i,d,k(t),r),f=l(i.name);s[f]=u,a[f]=d,c[f]=h})),[s,a,c]})();this.instruction=i,this.transaction=s,this.rpc=a}get programId(){return this._programId}async fetch(){const t=this.address(),e=await this.provider.connection.getAccountInfo(t);if(null===e)throw new Error(`Account does not exist ${t.toString()}`);const r=this._idl.state;if(!r)throw new Error(\"State is not specified in IDL.\");if((await Ut(r.struct.name)).compare(e.data.slice(0,8)))throw new Error(\"Invalid account discriminator\");return this.coder.state.decode(e.data)}address(){return this._address}subscribe(t){if(null!==this._sub)return this._sub.ee;const e=new m,r=this.provider.connection.onAccountChange(this.address(),(t=>{const r=this.coder.state.decode(t.data);e.emit(\"change\",r)}),t);return this._sub={ee:e,listener:r},e}unsubscribe(){null!==this._sub&&this.provider.connection.removeAccountChangeListener(this._sub.listener).then((async()=>{this._sub=null})).catch(console.error)}}function Ye(t){let[e]=Oe([],t);return Ce(e,\"unversioned\",t)}class tr{constructor(t,e,r,n,i){this._idlAccount=e,this._programId=r,this._provider=null!=n?n:dt(),this._coder=null!=i?i:new Vt(t),this._size=this._coder.accounts.size(e)}get size(){return this._size}get programId(){return this._programId}get provider(){return this._provider}get coder(){return this._coder}async fetchNullable(t,e){const r=await this.getAccountInfo(t,e);return null===r?null:this._coder.accounts.decode(this._idlAccount.name,r.data)}async fetch(t,e){const r=await this.fetchNullable(t,e);if(null===r)throw new Error(`Account does not exist ${t.toString()}`);return r}async fetchMultiple(t,e){return(await Z(this._provider.connection,t.map((t=>P(t))),e)).map((t=>null==t?null:this._coder.accounts.decode(this._idlAccount.name,null==t?void 0:t.account.data)))}async all(t){return(await this._provider.connection.getProgramAccounts(this._programId,{commitment:this._provider.connection.commitment,filters:[{memcmp:this.coder.accounts.memcmp(this._idlAccount.name,t instanceof Buffer?t:void 0)},...Array.isArray(t)?t:[]]})).map((({pubkey:t,account:e})=>({publicKey:t,account:this._coder.accounts.decode(this._idlAccount.name,e.data)})))}subscribe(t,e){const r=er.get(t.toString());if(r)return r.ee;const n=new m;t=P(t);const i=this._provider.connection.onAccountChange(t,(t=>{const e=this._coder.accounts.decode(this._idlAccount.name,t.data);n.emit(\"change\",e)}),e);return er.set(t.toString(),{ee:n,listener:i}),n}async unsubscribe(t){let e=er.get(t.toString());e?er&&await this._provider.connection.removeAccountChangeListener(e.listener).then((()=>{er.delete(t.toString())})).catch(console.error):console.warn(\"Address is not subscribed\")}async createInstruction(t,e){const r=this.size;if(void 0===this._provider.wallet)throw new Error(\"This function requires the Provider interface implementor to have a 'wallet' field.\");return o.createAccount({fromPubkey:this._provider.wallet.publicKey,newAccountPubkey:t.publicKey,space:null!=e?e:r,lamports:await this._provider.connection.getMinimumBalanceForRentExemption(null!=e?e:r),programId:this._programId})}async associated(...t){const e=await this.associatedAddress(...t);return await this.fetch(e)}async associatedAddress(...t){return await De(this._programId,...t)}async getAccountInfo(t,e){return await this._provider.connection.getAccountInfo(P(t),e)}}const er=new Map,rr=\"Program log: \".length,nr=\"Program data: \".length;class ir{constructor(t,e,r){this._programId=t,this._provider=e,this._eventParser=new or(t,r),this._eventCallbacks=new Map,this._eventListeners=new Map,this._listenerIdCount=0}addEventListener(t,e){var r;let n=this._listenerIdCount;return this._listenerIdCount+=1,t in this._eventCallbacks||this._eventListeners.set(t,[]),this._eventListeners.set(t,(null!==(r=this._eventListeners.get(t))&&void 0!==r?r:[]).concat(n)),this._eventCallbacks.set(n,[t,e]),void 0!==this._onLogsSubscriptionId||(this._onLogsSubscriptionId=this._provider.connection.onLogs(this._programId,((t,e)=>{t.err||this._eventParser.parseLogs(t.logs,(t=>{const r=this._eventListeners.get(t.name);r&&r.forEach((r=>{const n=this._eventCallbacks.get(r);if(n){const[,r]=n;r(t.data,e.slot)}}))}))}))),n}async removeEventListener(t){const e=this._eventCallbacks.get(t);if(!e)throw new Error(`Event listener ${t} doesn't exist!`);const[r]=e;let n=this._eventListeners.get(r);if(!n)throw new Error(`Event listeners don't exist for ${r}!`);this._eventCallbacks.delete(t),n=n.filter((e=>e!==t)),0===n.length&&this._eventListeners.delete(r),0==this._eventCallbacks.size&&(y.ok(0===this._eventListeners.size),void 0!==this._onLogsSubscriptionId&&(await this._provider.connection.removeOnLogsListener(this._onLogsSubscriptionId),this._onLogsSubscriptionId=void 0))}}class or{constructor(t,e){this.coder=e,this.programId=t}parseLogs(t,e){const r=new ar(t),n=new sr;let i=r.next();for(;null!==i;){let[t,o,s]=this.handleLog(n,i);t&&e(t),o&&n.push(o),s&&n.pop(),i=r.next()}}handleLog(t,e){return t.stack.length>0&&t.program()===this.programId.toString()?this.handleProgramLog(e):[null,...this.handleSystemLog(e)]}handleProgramLog(t){if(t.startsWith(\"Program log: \")||t.startsWith(\"Program data: \")){const e=t.startsWith(\"Program log: \")?t.slice(rr):t.slice(nr);return[this.coder.events.decode(e),null,!1]}return[null,...this.handleSystemLog(t)]}handleSystemLog(t){const e=t.split(\":\")[0];return null!==e.match(/^Program (.*) success/g)?[null,!0]:e.startsWith(`Program ${this.programId.toString()} invoke`)?[this.programId.toString(),!1]:e.includes(\"invoke\")?[\"cpi\",!1]:[null,!1]}}class sr{constructor(){this.stack=[]}program(){return y.ok(this.stack.length>0),this.stack[this.stack.length-1]}push(t){this.stack.push(t)}pop(){y.ok(this.stack.length>0),this.stack.pop()}}class ar{constructor(t){this.logs=t}next(){if(0===this.logs.length)return null;let t=this.logs[0];return this.logs=this.logs.slice(1),t}}const cr=new e(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\");function ur(){return new Pe(dr)}const dr={version:\"0.1.0\",name:\"spl_token\",instructions:[{name:\"initializeMint\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"decimals\",type:\"u8\"},{name:\"mintAuthority\",type:\"publicKey\"},{name:\"freezeAuthority\",type:{coption:\"publicKey\"}}]},{name:\"initializeAccount\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[]},{name:\"initializeMultisig\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"m\",type:\"u8\"}]},{name:\"transfer\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"destination\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"}]},{name:\"approve\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"delegate\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"}]},{name:\"revoke\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[]},{name:\"setAuthority\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"authorityType\",type:\"u8\"},{name:\"newAuthority\",type:{coption:\"publicKey\"}}]},{name:\"mintTo\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1},{name:\"to\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"}]},{name:\"burn\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"}]},{name:\"closeAccount\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"destination\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!1}],args:[]},{name:\"freezeAccount\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[]},{name:\"thawAccount\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[]},{name:\"transferChecked\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"destination\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"},{name:\"decimals\",type:\"u8\"}]},{name:\"approveChecked\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"delegate\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"},{name:\"decimals\",type:\"u8\"}]},{name:\"mintToChecked\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1},{name:\"to\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"},{name:\"decimals\",type:\"u8\"}]},{name:\"burnChecked\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"},{name:\"decimals\",type:\"u8\"}]},{name:\"initializeAccount2\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"authority\",type:\"publicKey\"}]},{name:\"syncNative\",accounts:[{name:\"account\",isMut:!0,isSigner:!1}],args:[]},{name:\"initializeAccount3\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1}],args:[{name:\"authority\",type:\"publicKey\"}]},{name:\"initializeMultisig2\",accounts:[{name:\"account\",isMut:!0,isSigner:!1}],args:[{name:\"m\",type:\"u8\"}]},{name:\"initializeMint2\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1}],args:[{name:\"decimals\",type:\"u8\"},{name:\"mintAuthority\",type:\"publicKey\"},{name:\"freezeAuthority\",type:{coption:\"publicKey\"}}]}],accounts:[{name:\"mint\",type:{kind:\"struct\",fields:[{name:\"mintAuthority\",type:{coption:\"publicKey\"}},{name:\"supply\",type:\"u64\"},{name:\"decimals\",type:\"u8\"},{name:\"isInitialized\",type:\"bool\"},{name:\"freezeAuthority\",type:{coption:\"publicKey\"}}]}},{name:\"token\",type:{kind:\"struct\",fields:[{name:\"mint\",type:\"publicKey\"},{name:\"authority\",type:\"publicKey\"},{name:\"amount\",type:\"u64\"},{name:\"delegate\",type:{coption:\"publicKey\"}},{name:\"state\",type:\"u8\"},{name:\"isNative\",type:{coption:\"u64\"}},{name:\"delegatedAmount\",type:\"u64\"},{name:\"closeAuthority\",type:{coption:\"publicKey\"}}]}}]};class lr{constructor(t,e,r,n,i,o){this._args=t,this._accounts=e,this._provider=r,this._programId=n,this._idlIx=i,this._accountStore=new hr(r,o)}async resolve(){for(let t=0;t0&&!this._accounts[r])await this.autoPopulatePda(e);else if(!e.isSigner||this._accounts[r])Reflect.has(lr.CONST_ACCOUNTS,r)&&!this._accounts[r]&&(this._accounts[r]=lr.CONST_ACCOUNTS[r]);else{if(void 0===this._provider.wallet)throw new Error(\"This function requires the Provider interface implementor to have a 'wallet' field.\");this._accounts[r]=this._provider.wallet.publicKey}}}async autoPopulatePda(t){if(!t.pda||!t.pda.seeds)throw new Error(\"Must have seeds\");const r=await Promise.all(t.pda.seeds.map((t=>this.toBuffer(t)))),n=await this.parseProgramId(t),[i]=await e.findProgramAddress(r,n);this._accounts[l(t.name)]=i}async parseProgramId(t){var r;if(!(null===(r=t.pda)||void 0===r?void 0:r.programId))return this._programId;switch(t.pda.programId.kind){case\"const\":return new e(this.toBufferConst(t.pda.programId.value));case\"arg\":return this.argValue(t.pda.programId);case\"account\":return await this.accountValue(t.pda.programId);default:throw new Error(`Unexpected program seed kind: ${t.pda.programId.kind}`)}}async toBuffer(t){switch(t.kind){case\"const\":return this.toBufferConst(t);case\"arg\":return await this.toBufferArg(t);case\"account\":return await this.toBufferAccount(t);default:throw new Error(`Unexpected seed kind: ${t.kind}`)}}toBufferConst(t){return this.toBufferValue(t.type,t.value)}async toBufferArg(t){const e=this.argValue(t);return this.toBufferValue(t.type,e)}argValue(t){const e=l(t.path.split(\".\")[0]),r=this._idlIx.args.findIndex((t=>t.name===e));if(-1===r)throw new Error(`Unable to find argument for seed: ${e}`);return this._args[r]}async toBufferAccount(t){const e=await this.accountValue(t);return this.toBufferValue(t.type,e)}async accountValue(t){const e=t.path.split(\".\"),r=e[0],n=this._accounts[l(r)];if(1===e.length)return n;const i=await this._accountStore.fetchAccount(t.account,n);return this.parseAccountValue(i,e.slice(1))}parseAccountValue(t,e){let r;for(;e.length>0;)r=t[l(e[0])],e=e.slice(1);return r}toBufferValue(t,e){switch(t){case\"u8\":return Buffer.from([e]);case\"u16\":let r=Buffer.alloc(2);return r.writeUInt16LE(e),r;case\"u32\":let n=Buffer.alloc(4);return n.writeUInt32LE(e),n;case\"u64\":let i=Buffer.alloc(8);return i.writeBigUInt64LE(BigInt(e)),i;case\"string\":return Buffer.from(v(e));case\"publicKey\":return e.toBuffer();default:if(t.array)return Buffer.from(e);throw new Error(`Unexpected seed type: ${t}`)}}}lr.CONST_ACCOUNTS={systemProgram:o.programId,tokenProgram:Ne,associatedTokenProgram:je,rent:s};class hr{constructor(t,e){this._provider=t,this._accounts=e,this._cache=new Map}async fetchAccount(t,e){const r=e.toString();if(!this._cache.has(r))if(\"TokenAccount\"===t){const t=await this._provider.connection.getAccountInfo(e);if(null===t)throw new Error(`invalid account info for ${r}`);const n=ur().accounts.decode(\"token\",t.data);this._cache.set(r,n)}else{const n=this._accounts[l(t)].fetch(e);this._cache.set(r,n)}return this._cache.get(r)}}class fr{static build(t,e,r,n,i,o,s,a,c){return(...u)=>new pr(u,n,i,o,s,a,t,e,r,c)}}class pr{constructor(t,e,r,n,i,o,s,a,c,u){this._args=t,this._ixFn=e,this._txFn=r,this._rpcFn=n,this._simulateFn=i,this._viewFn=o,this._accounts={},this._remainingAccounts=[],this._signers=[],this._preInstructions=[],this._postInstructions=[],this._accountsResolver=new lr(t,this._accounts,s,a,c,u)}async pubkeys(){return await this._accountsResolver.resolve(),this._accounts}accounts(t){return Object.assign(this._accounts,t),this}signers(t){return this._signers=this._signers.concat(t),this}remainingAccounts(t){return this._remainingAccounts=this._remainingAccounts.concat(t),this}preInstructions(t){return this._preInstructions=this._preInstructions.concat(t),this}postInstructions(t){return this._postInstructions=this._postInstructions.concat(t),this}async rpc(t){return await this._accountsResolver.resolve(),this._rpcFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:t})}async view(t){if(await this._accountsResolver.resolve(),!this._viewFn)throw new Error(\"Method does not support views\");return this._viewFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:t})}async simulate(t){return await this._accountsResolver.resolve(),this._simulateFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:t})}async instruction(){return await this._accountsResolver.resolve(),this._ixFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions})}async transaction(){return await this._accountsResolver.resolve(),this._txFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions})}}class mr{constructor(t,e,r,n){e=P(e),r||(r=dt()),this._idl=t,this._provider=r,this._programId=e,this._coder=null!=n?n:new Vt(t),this._events=new ir(this._programId,r,this._coder);const[i,o,s,a,c,u,d,h]=class{static build(t,e,r,n){const i={},o={},s={},a={},c={},u={},d=k(t),h=t.accounts?class{static build(t,e,r,n){var i;const o={};return null===(i=t.accounts)||void 0===i||i.forEach((i=>{const s=l(i.name);o[s]=new tr(t,i,r,n,e)})),o}}.build(t,e,r,n):{},f=class{static build(t,e,r,n){if(void 0!==t.state)return new Xe(t,r,n,e)}}.build(t,e,r,n);return t.instructions.forEach((f=>{const p=Je.build(f,((t,r)=>e.instruction.encode(t,r)),r),m=Qe.build(f,p),y=Ze.build(f,m,d,n),g=class{static build(t,e,r,n,i,o,s){return async(...a)=>{var c;const u=e(...a),[,d]=He(t,[...a]);let l;if(void 0===n.simulate)throw new Error(\"This function requires 'Provider.simulate' to be implemented.\");try{l=await n.simulate(u,d.signers,null===(c=d.options)||void 0===c?void 0:c.commitment)}catch(t){throw bt(t,r)}if(void 0===l)throw new Error(\"Unable to simulate transaction\");const h=l.logs;if(!h)throw new Error(\"Simulated logs not found\");const f=[];return s.events&&new or(o,i).parseLogs(h,(t=>{f.push(t)})),{events:f,raw:h}}}}.build(f,m,d,n,e,r,t),w=class{static build(t,e,r,n){const i=e.accounts.find((t=>t.isMut)),o=!!e.returns;if(!i&&o)return async(...i)=>{var o,s;let a=await r(...i);const c=`Program return: ${t} `;let u=a.raw.find((t=>t.startsWith(c)));if(!u)throw new Error(\"View expected return log\");let d=E(u.slice(c.length)),l=e.returns;if(!l)throw new Error(\"View expected return type\");return Pt.fieldLayout({type:l},Array.from([...null!==(o=n.accounts)&&void 0!==o?o:[],...null!==(s=n.types)&&void 0!==s?s:[]])).decode(d)}}}.build(r,f,g,t),v=fr.build(n,r,f,p,m,y,g,w,h),b=l(f.name);o[b]=p,s[b]=m,i[b]=y,a[b]=g,c[b]=v,w&&(u[b]=w)})),[i,o,s,h,a,c,f,u]}}.build(t,this._coder,e,r);this.rpc=i,this.instruction=o,this.transaction=s,this.account=a,this.simulate=c,this.methods=u,this.state=d,this.views=h}get programId(){return this._programId}get idl(){return this._idl}get coder(){return this._coder}get provider(){return this._provider}static async at(t,e){const r=P(t),n=await mr.fetchIdl(r,e);if(!n)throw new Error(`IDL not found for program: ${t.toString()}`);return new mr(n,r,e)}static async fetchIdl(t,r){r=null!=r?r:dt();const n=P(t),i=await async function(t){const r=(await e.findProgramAddress([],t))[0];return await e.createWithSeed(r,\"anchor:idl\",t)}(n),o=await r.connection.getAccountInfo(i);if(!o)return null;let s=(a=o.data.slice(8),Ge.decode(a));var a;const c=p(s.data);return JSON.parse(w(c))}addEventListener(t,e){return this._events.addEventListener(t,e)}async removeEventListener(t){return await this._events.removeEventListener(t)}}class yr{static token(t){return function(t){return new mr(dr,cr,t,ur())}(t)}}export{Dt as ACCOUNT_DISCRIMINATOR_SIZE,tr as AccountClient,wt as AnchorError,ot as AnchorProvider,zt as BorshAccountsCoder,Vt as BorshCoder,Nt as BorshEventCoder,Tt as BorshInstructionCoder,Rt as BorshStateCoder,ir as EventManager,or as EventParser,yt as IdlError,At as LangErrorCode,_t as LangErrorMessage,fr as MethodsBuilderFactory,mr as Program,vt as ProgramError,gt as ProgramErrorStack,yr as Spl,Pe as SplTokenCoder,Xe as StateClient,jt as eventDiscriminator,dt as getProvider,k as parseIdlErrors,ut as setProvider,He as splitArgsAndCtx,Ut as stateDiscriminator,x as toInstruction,P as translateAddress,bt as translateError,We as utils,M as validateAccounts};\n//# sourceMappingURL=index.js.map\n","export function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nexport function bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nexport function bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new TypeError('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new TypeError(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nexport function hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nexport function exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nexport function output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nconst assert = {\n number,\n bool,\n bytes,\n hash,\n exists,\n output,\n};\nexport default assert;\n","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// The import here is via the package name. This is to ensure\n// that exports mapping/resolution does fall into place.\nimport { crypto } from '@noble/hashes/crypto';\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// There is almost no big endian hardware, but js typed arrays uses platform specific endianness.\n// So, just to be sure not to corrupt anything.\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xde, 0xad, 0xbe, 0xef]))\n */\nexport function bytesToHex(uint8a) {\n // pre-caching improves the speed 6x\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Uint8Array expected');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('deadbeef')\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow. However, call to async function will return Promise\n// which will be fullfiled only on next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string') {\n throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);\n }\n return new TextEncoder().encode(str);\n}\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!(data instanceof Uint8Array))\n throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);\n return data;\n}\n/**\n * Concats Uint8Array-s into one; like `Buffer.concat([buf1, buf2])`\n * @example concatBytes(buf1, buf2)\n */\nexport function concatBytes(...arrays) {\n if (!arrays.every((a) => a instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && (typeof opts !== 'object' || !isPlainObject(opts)))\n throw new TypeError('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashConstructor) {\n const hashC = (message) => hashConstructor().update(toBytes(message)).digest();\n const tmp = hashConstructor();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashConstructor();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n return new Uint8Array(crypto.node.randomBytes(bytesLength).buffer);\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n}\n","export const crypto = {\n node: undefined,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\n","import assert from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n assert.exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n assert.exists(this);\n assert.output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n this.get().forEach((v, i) => oview.setUint32(4 * i, v, isLE));\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = wrapConstructor(() => new SHA256());\n","/*!\r\n * decimal.js v10.4.3\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licence\r\n */\r\n\r\n\r\n// ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The maximum exponent magnitude.\r\n // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\r\nvar EXP_LIMIT = 9e15, // 0 to 9e15\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n // Base conversion alphabet.\r\n NUMERALS = '0123456789abcdef',\r\n\r\n // The natural logarithm of 10 (1025 digits).\r\n LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\r\n\r\n // Pi (1025 digits).\r\n PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n DEFAULTS = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed at run-time using the `Decimal.config` method.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used when rounding to `precision`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 The IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\r\n //\r\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\r\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\r\n // be used, but they may not give useful results.\r\n modulo: 1, // 0 to 9\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -EXP_LIMIT\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to EXP_LIMIT\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // JavaScript numbers: -324 (5e-324)\r\n minE: -EXP_LIMIT, // -1 to -EXP_LIMIT\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // JavaScript numbers: 308 (1.7976931348623157e+308)\r\n maxE: EXP_LIMIT, // 1 to EXP_LIMIT\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n crypto: false // true/false\r\n },\r\n\r\n\r\n// ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n inexact, quadrant,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n precisionLimitExceeded = decimalError + 'Precision limit exceeded',\r\n cryptoUnavailable = decimalError + 'crypto unavailable',\r\n tag = '[object Decimal]',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\r\n isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\r\n isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n\r\n LN10_PRECISION = LN10.length - 1,\r\n PI_PRECISION = PI.length - 1,\r\n\r\n // Decimal.prototype object\r\n P = { toStringTag: tag };\r\n\r\n\r\n// Decimal prototype methods\r\n\r\n\r\n/*\r\n * absoluteValue abs\r\n * ceil\r\n * clampedTo clamp\r\n * comparedTo cmp\r\n * cosine cos\r\n * cubeRoot cbrt\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy divToInt\r\n * equals eq\r\n * floor\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * hyperbolicCosine cosh\r\n * hyperbolicSine sinh\r\n * hyperbolicTangent tanh\r\n * inverseCosine acos\r\n * inverseHyperbolicCosine acosh\r\n * inverseHyperbolicSine asinh\r\n * inverseHyperbolicTangent atanh\r\n * inverseSine asin\r\n * inverseTangent atan\r\n * isFinite\r\n * isInteger isInt\r\n * isNaN\r\n * isNegative isNeg\r\n * isPositive isPos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * [maximum] [max]\r\n * [minimum] [min]\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * round\r\n * sine sin\r\n * squareRoot sqrt\r\n * tangent tan\r\n * times mul\r\n * toBinary\r\n * toDecimalPlaces toDP\r\n * toExponential\r\n * toFixed\r\n * toFraction\r\n * toHexadecimal toHex\r\n * toNearest\r\n * toNumber\r\n * toOctal\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits toSD\r\n * toString\r\n * truncated trunc\r\n * valueOf toJSON\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\nP.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s < 0) x.s = 1;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of positive Infinity.\r\n *\r\n */\r\nP.ceil = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal clamped to the range\r\n * delineated by `min` and `max`.\r\n *\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\r\nP.clampedTo = P.clamp = function (min, max) {\r\n var k,\r\n x = this,\r\n Ctor = x.constructor;\r\n min = new Ctor(min);\r\n max = new Ctor(max);\r\n if (!min.s || !max.s) return new Ctor(NaN);\r\n if (min.gt(max)) throw Error(invalidArgument + max);\r\n k = x.cmp(min);\r\n return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x);\r\n};\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value,\r\n * NaN if the value of either Decimal is NaN.\r\n *\r\n */\r\nP.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this,\r\n xd = x.d,\r\n yd = (y = new x.constructor(y)).d,\r\n xs = x.s,\r\n ys = y.s;\r\n\r\n // Either NaN or ±Infinity?\r\n if (!xd || !yd) {\r\n return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Either zero?\r\n if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\r\n\r\n // Signs differ?\r\n if (xs !== ys) return xs;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\r\n\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * cos(0) = 1\r\n * cos(-0) = 1\r\n * cos(Infinity) = NaN\r\n * cos(-Infinity) = NaN\r\n * cos(NaN) = NaN\r\n *\r\n */\r\nP.cosine = P.cos = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.d) return new Ctor(NaN);\r\n\r\n // cos(0) = cos(-0) = 1\r\n if (!x.d[0]) return new Ctor(1);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n *\r\n * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * cbrt(0) = 0\r\n * cbrt(-0) = -0\r\n * cbrt(1) = 1\r\n * cbrt(-1) = -1\r\n * cbrt(N) = N\r\n * cbrt(-I) = -I\r\n * cbrt(I) = I\r\n *\r\n * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n *\r\n */\r\nP.cubeRoot = P.cbrt = function () {\r\n var e, m, n, r, rep, s, sd, t, t3, t3plusx,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = x.s * mathpow(x.s * x, 1 / 3);\r\n\r\n // Math.cbrt underflow/overflow?\r\n // Pass x to Math.pow as integer, then adjust the exponent of the result.\r\n if (!s || Math.abs(s) == 1 / 0) {\r\n n = digitsToString(x.d);\r\n e = x.e;\r\n\r\n // Adjust n exponent so it is a multiple of 3 away from x exponent.\r\n if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00');\r\n s = mathpow(n, 1 / 3);\r\n\r\n // Rarely, e may be one less than the result exponent value.\r\n e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n r.s = x.s;\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Halley's method.\r\n // TODO? Compare Newton's method.\r\n for (;;) {\r\n t = r;\r\n t3 = t.times(t).times(t);\r\n t3plusx = t3.plus(x);\r\n r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\r\n // , i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\nP.decimalPlaces = P.dp = function () {\r\n var w,\r\n d = this.d,\r\n n = NaN;\r\n\r\n if (d) {\r\n w = d.length - 1;\r\n n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) n--;\r\n if (n < 0) n = 0;\r\n }\r\n\r\n return n;\r\n};\r\n\r\n\r\n/*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.dividedToIntegerBy = P.divToInt = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\nP.equals = P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of negative Infinity.\r\n *\r\n */\r\nP.floor = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 3);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\nP.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\nP.greaterThanOrEqualTo = P.gte = function (y) {\r\n var k = this.cmp(y);\r\n return k == 1 || k === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [1, Infinity]\r\n *\r\n * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n *\r\n * cosh(0) = 1\r\n * cosh(-0) = 1\r\n * cosh(Infinity) = Infinity\r\n * cosh(-Infinity) = Infinity\r\n * cosh(NaN) = NaN\r\n *\r\n * x time taken (ms) result\r\n * 1000 9 9.8503555700852349694e+433\r\n * 10000 25 4.4034091128314607936e+4342\r\n * 100000 171 1.4033316802130615897e+43429\r\n * 1000000 3817 1.5166076984010437725e+434294\r\n * 10000000 abandoned after 2 minute wait\r\n *\r\n * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n *\r\n */\r\nP.hyperbolicCosine = P.cosh = function () {\r\n var k, n, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor,\r\n one = new Ctor(1);\r\n\r\n if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\r\n if (x.isZero()) return one;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\r\n // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n // TODO? Estimation reused from cosine() and may not be optimal here.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n n = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n n = '2.3283064365386962890625e-10';\r\n }\r\n\r\n x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\r\n\r\n // Reverse argument reduction\r\n var cosh2_x,\r\n i = k,\r\n d8 = new Ctor(8);\r\n for (; i--;) {\r\n cosh2_x = x.times(x);\r\n x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\r\n }\r\n\r\n return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n *\r\n * sinh(0) = 0\r\n * sinh(-0) = -0\r\n * sinh(Infinity) = Infinity\r\n * sinh(-Infinity) = -Infinity\r\n * sinh(NaN) = NaN\r\n *\r\n * x time taken (ms)\r\n * 10 2 ms\r\n * 100 5 ms\r\n * 1000 14 ms\r\n * 10000 82 ms\r\n * 100000 886 ms 1.4033316802130615897e+43429\r\n * 200000 2613 ms\r\n * 300000 5407 ms\r\n * 400000 8824 ms\r\n * 500000 13026 ms 8.7080643612718084129e+217146\r\n * 1000000 48543 ms\r\n *\r\n * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n *\r\n */\r\nP.hyperbolicSine = P.sinh = function () {\r\n var k, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n } else {\r\n\r\n // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\r\n // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\r\n // 3 multiplications and 1 addition\r\n\r\n // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\r\n // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\r\n // 4 multiplications and 2 additions\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n\r\n // Reverse argument reduction\r\n var sinh2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sinh2_x = x.times(x);\r\n x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\r\n }\r\n }\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * tanh(x) = sinh(x) / cosh(x)\r\n *\r\n * tanh(0) = 0\r\n * tanh(-0) = -0\r\n * tanh(Infinity) = 1\r\n * tanh(-Infinity) = -1\r\n * tanh(NaN) = NaN\r\n *\r\n */\r\nP.hyperbolicTangent = P.tanh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(x.s);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 7;\r\n Ctor.rounding = 1;\r\n\r\n return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n * this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [0, pi]\r\n *\r\n * acos(x) = pi/2 - asin(x)\r\n *\r\n * acos(0) = pi/2\r\n * acos(-0) = pi/2\r\n * acos(1) = 0\r\n * acos(-1) = pi\r\n * acos(1/2) = pi/3\r\n * acos(-1/2) = 2*pi/3\r\n * acos(|x| > 1) = NaN\r\n * acos(NaN) = NaN\r\n *\r\n */\r\nP.inverseCosine = P.acos = function () {\r\n var halfPi,\r\n x = this,\r\n Ctor = x.constructor,\r\n k = x.abs().cmp(1),\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n return k === 0\r\n // |x| is 1\r\n ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\r\n // |x| > 1 or x is NaN\r\n : new Ctor(NaN);\r\n }\r\n\r\n if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.asin();\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return halfPi.minus(x);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [1, Infinity]\r\n * Range: [0, Infinity]\r\n *\r\n * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n *\r\n * acosh(x < 1) = NaN\r\n * acosh(NaN) = NaN\r\n * acosh(Infinity) = Infinity\r\n * acosh(-Infinity) = NaN\r\n * acosh(0) = NaN\r\n * acosh(-0) = NaN\r\n * acosh(1) = 0\r\n * acosh(-1) = NaN\r\n *\r\n */\r\nP.inverseHyperbolicCosine = P.acosh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\r\n if (!x.isFinite()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).minus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n *\r\n * asinh(NaN) = NaN\r\n * asinh(Infinity) = Infinity\r\n * asinh(-Infinity) = -Infinity\r\n * asinh(0) = 0\r\n * asinh(-0) = -0\r\n *\r\n */\r\nP.inverseHyperbolicSine = P.asinh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).plus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n *\r\n * atanh(|x| > 1) = NaN\r\n * atanh(NaN) = NaN\r\n * atanh(Infinity) = NaN\r\n * atanh(-Infinity) = NaN\r\n * atanh(0) = 0\r\n * atanh(-0) = -0\r\n * atanh(1) = Infinity\r\n * atanh(-1) = -Infinity\r\n *\r\n */\r\nP.inverseHyperbolicTangent = P.atanh = function () {\r\n var pr, rm, wpr, xsd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n xsd = x.sd();\r\n\r\n if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\r\n\r\n Ctor.precision = wpr = xsd - x.e;\r\n\r\n x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\r\n\r\n Ctor.precision = pr + 4;\r\n Ctor.rounding = 1;\r\n\r\n x = x.ln();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(0.5);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n *\r\n * asin(0) = 0\r\n * asin(-0) = -0\r\n * asin(1/2) = pi/6\r\n * asin(-1/2) = -pi/6\r\n * asin(1) = pi/2\r\n * asin(-1) = -pi/2\r\n * asin(|x| > 1) = NaN\r\n * asin(NaN) = NaN\r\n *\r\n * TODO? Compare performance of Taylor series.\r\n *\r\n */\r\nP.inverseSine = P.asin = function () {\r\n var halfPi, k,\r\n pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n k = x.abs().cmp(1);\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n\r\n // |x| is 1\r\n if (k === 0) {\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n halfPi.s = x.s;\r\n return halfPi;\r\n }\r\n\r\n // |x| > 1 or x is NaN\r\n return new Ctor(NaN);\r\n }\r\n\r\n // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n *\r\n * atan(0) = 0\r\n * atan(-0) = -0\r\n * atan(1) = pi/4\r\n * atan(-1) = -pi/4\r\n * atan(Infinity) = pi/2\r\n * atan(-Infinity) = -pi/2\r\n * atan(NaN) = NaN\r\n *\r\n */\r\nP.inverseTangent = P.atan = function () {\r\n var i, j, k, n, px, t, r, wpr, x2,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (!x.isFinite()) {\r\n if (!x.s) return new Ctor(NaN);\r\n if (pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.5);\r\n r.s = x.s;\r\n return r;\r\n }\r\n } else if (x.isZero()) {\r\n return new Ctor(x);\r\n } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.25);\r\n r.s = x.s;\r\n return r;\r\n }\r\n\r\n Ctor.precision = wpr = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\r\n\r\n // Argument reduction\r\n // Ensure |x| < 0.42\r\n // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\r\n\r\n k = Math.min(28, wpr / LOG_BASE + 2 | 0);\r\n\r\n for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\r\n\r\n external = false;\r\n\r\n j = Math.ceil(wpr / LOG_BASE);\r\n n = 1;\r\n x2 = x.times(x);\r\n r = new Ctor(x);\r\n px = x;\r\n\r\n // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n for (; i !== -1;) {\r\n px = px.times(x2);\r\n t = r.minus(px.div(n += 2));\r\n\r\n px = px.times(x2);\r\n r = t.plus(px.div(n += 2));\r\n\r\n if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\r\n }\r\n\r\n if (k) r = r.times(2 << (k - 1));\r\n\r\n external = true;\r\n\r\n return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n *\r\n */\r\nP.isFinite = function () {\r\n return !!this.d;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\nP.isInteger = P.isInt = function () {\r\n return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is NaN, otherwise return false.\r\n *\r\n */\r\nP.isNaN = function () {\r\n return !this.s;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\nP.isNegative = P.isNeg = function () {\r\n return this.s < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\nP.isPositive = P.isPos = function () {\r\n return this.s > 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n *\r\n */\r\nP.isZero = function () {\r\n return !!this.d && this.d[0] === 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n};\r\n\r\n\r\n/*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\nP.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n};\r\n\r\n\r\n/*\r\n * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * If no base is specified, return log[10](arg).\r\n *\r\n * log[base](arg) = ln(arg) / ln(base)\r\n *\r\n * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n * otherwise:\r\n *\r\n * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n *\r\n * log[-b](a) = NaN\r\n * log[0](a) = NaN\r\n * log[1](a) = NaN\r\n * log[NaN](a) = NaN\r\n * log[Infinity](a) = NaN\r\n * log[b](0) = -Infinity\r\n * log[b](-0) = -Infinity\r\n * log[b](-a) = NaN\r\n * log[b](1) = 0\r\n * log[b](Infinity) = Infinity\r\n * log[b](NaN) = NaN\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\nP.logarithm = P.log = function (base) {\r\n var isBase10, d, denominator, k, inf, num, sd, r,\r\n arg = this,\r\n Ctor = arg.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding,\r\n guard = 5;\r\n\r\n // Default base is 10.\r\n if (base == null) {\r\n base = new Ctor(10);\r\n isBase10 = true;\r\n } else {\r\n base = new Ctor(base);\r\n d = base.d;\r\n\r\n // Return NaN if base is negative, or non-finite, or is 0 or 1.\r\n if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\r\n\r\n isBase10 = base.eq(10);\r\n }\r\n\r\n d = arg.d;\r\n\r\n // Is arg negative, non-finite, 0 or 1?\r\n if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\r\n return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\r\n }\r\n\r\n // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\r\n // integer power of 10.\r\n if (isBase10) {\r\n if (d.length > 1) {\r\n inf = true;\r\n } else {\r\n for (k = d[0]; k % 10 === 0;) k /= 10;\r\n inf = k !== 1;\r\n }\r\n }\r\n\r\n external = false;\r\n sd = pr + guard;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n\r\n // The result will have 5 rounding digits.\r\n r = divide(num, denominator, sd, 1);\r\n\r\n // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\r\n // calculate 10 further digits.\r\n //\r\n // If the result is known to have an infinite decimal expansion, repeat this until it is clear\r\n // that the result is above or below the boundary. Otherwise, if after calculating the 10\r\n // further digits, the last 14 are nines, round up and assume the result is exact.\r\n // Also assume the result is exact if the last 14 are zero.\r\n //\r\n // Example of a result that will be incorrectly rounded:\r\n // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\r\n // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\r\n // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\r\n // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\r\n // place is still 2.6.\r\n if (checkRoundingDigits(r.d, k = pr, rm)) {\r\n\r\n do {\r\n sd += 10;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n r = divide(num, denominator, sd, 1);\r\n\r\n if (!inf) {\r\n\r\n // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\r\n if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n\r\n break;\r\n }\r\n } while (checkRoundingDigits(r.d, k += 10, rm));\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\nP.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'lt');\r\n};\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\nP.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'gt');\r\n};\r\n */\r\n\r\n\r\n/*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.minus = P.sub = function (y) {\r\n var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return y negated if x is finite and y is ±Infinity.\r\n else if (x.d) y.s = -y.s;\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with different signs.\r\n // Return NaN if both are ±Infinity with the same sign.\r\n else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.plus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return y negated if x is zero and y is non-zero.\r\n if (yd[0]) y.s = -y.s;\r\n\r\n // Return x if y is zero and x is non-zero.\r\n else if (xd[0]) y = new Ctor(x);\r\n\r\n // Return zero if both are zero.\r\n // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\r\n else return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n e = mathfloor(y.e / LOG_BASE);\r\n xe = mathfloor(x.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of\r\n // zeros needing to be prepended, but this can be avoided while still ensuring correct\r\n // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to `xd` if shorter.\r\n // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * The result depends on the modulo mode.\r\n *\r\n */\r\nP.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0.\r\n if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\r\n\r\n // Return x if y is ±Infinity or x is ±0.\r\n if (!y.d || x.d && !x.d[0]) {\r\n return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\r\n }\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n\r\n if (Ctor.modulo == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // result = x - q * y where 0 <= result < abs(y)\r\n q = divide(x, y.abs(), 0, 3, 1);\r\n q.s *= y.s;\r\n } else {\r\n q = divide(x, y, 0, Ctor.modulo, 1);\r\n }\r\n\r\n q = q.times(y);\r\n\r\n external = true;\r\n\r\n return x.minus(q);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalExponential = P.exp = function () {\r\n return naturalExponential(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.naturalLogarithm = P.ln = function () {\r\n return naturalLogarithm(this);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\nP.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return finalise(x);\r\n};\r\n\r\n\r\n/*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.plus = P.add = function (y) {\r\n var carry, d, e, i, k, len, pr, rm, xd, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with the same sign.\r\n // Return NaN if both are ±Infinity with different signs.\r\n // Return y if x is finite and y is ±Infinity.\r\n else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!yd[0]) y = new Ctor(x);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n k = mathfloor(x.e / LOG_BASE);\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\nP.precision = P.sd = function (z) {\r\n var k,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n if (x.d) {\r\n k = getPrecision(x.d);\r\n if (z && x.e + 1 > k) k = x.e + 1;\r\n } else {\r\n k = NaN;\r\n }\r\n\r\n return k;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\nP.round = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n *\r\n * sin(0) = 0\r\n * sin(-0) = -0\r\n * sin(Infinity) = NaN\r\n * sin(-Infinity) = NaN\r\n * sin(NaN) = NaN\r\n *\r\n */\r\nP.sine = P.sin = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = sine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n */\r\nP.squareRoot = P.sqrt = function () {\r\n var m, n, sd, r, rep, t,\r\n x = this,\r\n d = x.d,\r\n e = x.e,\r\n s = x.s,\r\n Ctor = x.constructor;\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !d || !d[0]) {\r\n return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\r\n }\r\n\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(d);\r\n\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * tan(0) = 0\r\n * tan(-0) = -0\r\n * tan(Infinity) = NaN\r\n * tan(-Infinity) = NaN\r\n * tan(NaN) = NaN\r\n *\r\n */\r\nP.tangent = P.tan = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n x = x.sin();\r\n x.s = 1;\r\n x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\r\n};\r\n\r\n\r\n/*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n */\r\nP.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n y.s *= x.s;\r\n\r\n // If either is NaN, ±Infinity or ±0...\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\r\n\r\n // Return NaN if either is NaN.\r\n // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity.\r\n ? NaN\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n // Return ±0 if either is ±0.\r\n : !xd || !yd ? y.s / 0 : y.s * 0);\r\n }\r\n\r\n e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = getBase10Exponent(r, e);\r\n\r\n return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toBinary = function (sd, rm) {\r\n return toStringBinary(this, 2, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toDecimalPlaces = P.toDP = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return finalise(x, dp + x.e + 1, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), dp + 1, rm);\r\n str = finiteToString(x, true, dp + 1);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\nP.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = finalise(new Ctor(x), dp + x.e + 1, rm);\r\n str = finiteToString(y, false, dp + y.e + 1);\r\n }\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n * numerator and an integer denominator.\r\n *\r\n * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n * value necessary to represent the number exactly.\r\n *\r\n * [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\r\nP.toFraction = function (maxD) {\r\n var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r,\r\n x = this,\r\n xd = x.d,\r\n Ctor = x.constructor;\r\n\r\n if (!xd) return new Ctor(x);\r\n\r\n n1 = d0 = new Ctor(1);\r\n d1 = n0 = new Ctor(0);\r\n\r\n d = new Ctor(d1);\r\n e = d.e = getPrecision(xd) - x.e - 1;\r\n k = e % LOG_BASE;\r\n d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\r\n\r\n if (maxD == null) {\r\n\r\n // d is 10**e, the minimum max-denominator needed.\r\n maxD = e > 0 ? d : n1;\r\n } else {\r\n n = new Ctor(maxD);\r\n if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\r\n maxD = n.gt(d) ? (e > 0 ? d : n1) : n;\r\n }\r\n\r\n external = false;\r\n n = new Ctor(digitsToString(xd));\r\n pr = Ctor.precision;\r\n Ctor.precision = e = xd.length * LOG_BASE * 2;\r\n\r\n for (;;) {\r\n q = divide(n, d, 0, 1, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.cmp(maxD) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n d2 = n1;\r\n n1 = n0.plus(q.times(d2));\r\n n0 = d2;\r\n d2 = d;\r\n d = n.minus(q.times(d2));\r\n n = d2;\r\n }\r\n\r\n d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1?\r\n r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1\r\n ? [n1, d1] : [n0, d0];\r\n\r\n Ctor.precision = pr;\r\n external = true;\r\n\r\n return r;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toHexadecimal = P.toHex = function (sd, rm) {\r\n return toStringBinary(this, 16, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n *\r\n * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n * or `y` is NaN, in which case the return value will be also be NaN.\r\n *\r\n * The return value is not affected by the value of `precision`.\r\n *\r\n * y {number|string|Decimal} The magnitude to round to a multiple of.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toNearest() rounding mode not an integer: {rm}'\r\n * 'toNearest() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toNearest = function (y, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n\r\n if (y == null) {\r\n\r\n // If x is not finite, return x.\r\n if (!x.d) return x;\r\n\r\n y = new Ctor(1);\r\n rm = Ctor.rounding;\r\n } else {\r\n y = new Ctor(y);\r\n if (rm === void 0) {\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(rm, 0, 8);\r\n }\r\n\r\n // If x is not finite, return x if y is not NaN, else NaN.\r\n if (!x.d) return y.s ? x : y;\r\n\r\n // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\r\n if (!y.d) {\r\n if (y.s) y.s = x.s;\r\n return y;\r\n }\r\n }\r\n\r\n // If y is not zero, calculate the nearest multiple of y to x.\r\n if (y.d[0]) {\r\n external = false;\r\n x = divide(x, y, 0, rm, 1).times(y);\r\n external = true;\r\n finalise(x);\r\n\r\n // If y is zero, return zero with the sign of x.\r\n } else {\r\n y.s = x.s;\r\n x = y;\r\n }\r\n\r\n return x;\r\n};\r\n\r\n\r\n/*\r\n * Return the value of this Decimal converted to a number primitive.\r\n * Zero keeps its sign.\r\n *\r\n */\r\nP.toNumber = function () {\r\n return +this;\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toOctal = function (sd, rm) {\r\n return toStringBinary(this, 8, sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n * to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * ECMAScript compliant.\r\n *\r\n * pow(x, NaN) = NaN\r\n * pow(x, ±0) = 1\r\n\r\n * pow(NaN, non-zero) = NaN\r\n * pow(abs(x) > 1, +Infinity) = +Infinity\r\n * pow(abs(x) > 1, -Infinity) = +0\r\n * pow(abs(x) == 1, ±Infinity) = NaN\r\n * pow(abs(x) < 1, +Infinity) = +0\r\n * pow(abs(x) < 1, -Infinity) = +Infinity\r\n * pow(+Infinity, y > 0) = +Infinity\r\n * pow(+Infinity, y < 0) = +0\r\n * pow(-Infinity, odd integer > 0) = -Infinity\r\n * pow(-Infinity, even integer > 0) = +Infinity\r\n * pow(-Infinity, odd integer < 0) = -0\r\n * pow(-Infinity, even integer < 0) = +0\r\n * pow(+0, y > 0) = +0\r\n * pow(+0, y < 0) = +Infinity\r\n * pow(-0, odd integer > 0) = -0\r\n * pow(-0, even integer > 0) = +0\r\n * pow(-0, odd integer < 0) = -Infinity\r\n * pow(-0, even integer < 0) = +Infinity\r\n * pow(finite x < 0, finite non-integer) = NaN\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n * probability of an incorrectly rounded result\r\n * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n * i.e. 1 in 250,000,000,000,000\r\n *\r\n * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\nP.toPower = P.pow = function (y) {\r\n var e, k, pr, r, rm, s,\r\n x = this,\r\n Ctor = x.constructor,\r\n yn = +(y = new Ctor(y));\r\n\r\n // Either ±Infinity, NaN or ±0?\r\n if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\r\n\r\n x = new Ctor(x);\r\n\r\n if (x.eq(1)) return x;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (y.eq(1)) return finalise(x, pr, rm);\r\n\r\n // y exponent\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = intPow(Ctor, x, k, pr);\r\n return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\r\n }\r\n\r\n s = x.s;\r\n\r\n // if x is negative\r\n if (s < 0) {\r\n\r\n // if y is not an integer\r\n if (e < y.d.length - 1) return new Ctor(NaN);\r\n\r\n // Result is positive if x is negative and the last digit of integer y is even.\r\n if ((y.d[e] & 1) == 0) s = 1;\r\n\r\n // if x.eq(-1)\r\n if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\r\n x.s = s;\r\n return x;\r\n }\r\n }\r\n\r\n // Estimate result exponent.\r\n // x^y = 10^e, where e = y * log10(x)\r\n // log10(x) = log10(x_significand) + x_exponent\r\n // log10(x_significand) = ln(x_significand) / ln(10)\r\n k = mathpow(+x, yn);\r\n e = k == 0 || !isFinite(k)\r\n ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1))\r\n : new Ctor(k + '').e;\r\n\r\n // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\r\n\r\n // Overflow/underflow?\r\n if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\r\n\r\n external = false;\r\n Ctor.rounding = x.s = 1;\r\n\r\n // Estimate the extra guard digits needed to ensure five correct rounding digits from\r\n // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\r\n // new Decimal(2.32456).pow('2087987436534566.46411')\r\n // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\r\n k = Math.min(12, (e + '').length);\r\n\r\n // r = x^y = exp(y*ln(x))\r\n r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\r\n\r\n // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\r\n if (r.d) {\r\n\r\n // Truncate to the required precision plus five rounding digits.\r\n r = finalise(r, pr + 5, 1);\r\n\r\n // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\r\n // the result.\r\n if (checkRoundingDigits(r.d, pr, rm)) {\r\n e = pr + 10;\r\n\r\n // Truncate to the increased precision plus five rounding digits.\r\n r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\r\n\r\n // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\r\n if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n }\r\n }\r\n\r\n r.s = s;\r\n external = true;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(r, pr, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\nP.toPrecision = function (sd, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), sd, rm);\r\n str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toSD() digits out of range: {sd}'\r\n * 'toSD() digits not an integer: {sd}'\r\n * 'toSD() rounding mode not an integer: {rm}'\r\n * 'toSD() rounding mode out of range: {rm}'\r\n *\r\n */\r\nP.toSignificantDigits = P.toSD = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return finalise(new Ctor(x), sd, rm);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\nP.toString = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n};\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n *\r\n */\r\nP.truncated = P.trunc = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 1);\r\n};\r\n\r\n\r\n/*\r\n * Return a string representing the value of this Decimal.\r\n * Unlike `toString`, negative zero will include the minus sign.\r\n *\r\n */\r\nP.valueOf = P.toJSON = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() ? '-' + str : str;\r\n};\r\n\r\n\r\n// Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n/*\r\n * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n * finiteToString, naturalExponential, naturalLogarithm\r\n * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n * P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n * convertBase toStringBinary, parseOther\r\n * cos P.cos\r\n * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n * taylorSeries, atan2, parseOther\r\n * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n * P.truncated, divide, getLn10, getPi, naturalExponential,\r\n * naturalLogarithm, ceil, floor, round, trunc\r\n * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n * toStringBinary\r\n * getBase10Exponent P.minus, P.plus, P.times, parseOther\r\n * getLn10 P.logarithm, naturalLogarithm\r\n * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n * getPrecision P.precision, P.toFraction\r\n * getZeroString digitsToString, finiteToString\r\n * intPow P.toPower, parseOther\r\n * isOdd toLessThanHalfPi\r\n * maxOrMin max, min\r\n * naturalExponential P.naturalExponential, P.toPower\r\n * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n * P.toPower, naturalExponential\r\n * nonFiniteToString finiteToString, toStringBinary\r\n * parseDecimal Decimal\r\n * parseOther Decimal\r\n * sin P.sin\r\n * taylorSeries P.cosh, P.sinh, cos, sin\r\n * toLessThanHalfPi P.cos, P.sin\r\n * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal\r\n * truncate intPow\r\n *\r\n * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n * naturalLogarithm, config, parseOther, random, Decimal\r\n */\r\n\r\n\r\nfunction digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n}\r\n\r\n\r\nfunction checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n * `repeating == null` if caller is `log` or `pow`,\r\n * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n */\r\nfunction checkRoundingDigits(d, i, rm, repeating) {\r\n var di, k, r, rd;\r\n\r\n // Get the length of the first word of the array d.\r\n for (k = d[0]; k >= 10; k /= 10) --i;\r\n\r\n // Is the rounding digit in the first word of d?\r\n if (--i < 0) {\r\n i += LOG_BASE;\r\n di = 0;\r\n } else {\r\n di = Math.ceil((i + 1) / LOG_BASE);\r\n i %= LOG_BASE;\r\n }\r\n\r\n // i is the index (0 - 6) of the rounding digit.\r\n // E.g. if within the word 3487563 the first rounding digit is 5,\r\n // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\r\n k = mathpow(10, LOG_BASE - i);\r\n rd = d[di] % k | 0;\r\n\r\n if (repeating == null) {\r\n if (i < 3) {\r\n if (i == 0) rd = rd / 100 | 0;\r\n else if (i == 1) rd = rd / 10 | 0;\r\n r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\r\n } else {\r\n r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 ||\r\n (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\r\n }\r\n } else {\r\n if (i < 4) {\r\n if (i == 0) rd = rd / 1000 | 0;\r\n else if (i == 1) rd = rd / 100 | 0;\r\n else if (i == 2) rd = rd / 10 | 0;\r\n r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\r\n } else {\r\n r = ((repeating || rm < 4) && rd + 1 == k ||\r\n (!repeating && rm > 3) && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\r\n }\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n// Convert string of `baseIn` to an array of numbers of `baseOut`.\r\n// Eg. convertBase('255', 10, 16) returns [15, 15].\r\n// Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\nfunction convertBase(str, baseIn, baseOut) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n strL = str.length;\r\n\r\n for (; i < strL;) {\r\n for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\r\n arr[0] += NUMERALS.indexOf(str.charAt(i++));\r\n for (j = 0; j < arr.length; j++) {\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] === void 0) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n}\r\n\r\n\r\n/*\r\n * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction cosine(Ctor, x) {\r\n var k, len, y;\r\n\r\n if (x.isZero()) return x;\r\n\r\n // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\r\n // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n len = x.d.length;\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n y = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n y = '2.3283064365386962890625e-10';\r\n }\r\n\r\n Ctor.precision += k;\r\n\r\n x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\r\n\r\n // Reverse argument reduction\r\n for (var i = k; i--;) {\r\n var cos2x = x.times(x);\r\n x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\r\n }\r\n\r\n Ctor.precision -= k;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Perform division in the specified base.\r\n */\r\nvar divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k, base) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % base | 0;\r\n carry = temp / base | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, rm, dp, base) {\r\n var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0,\r\n yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(// Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\r\n\r\n // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0.\r\n xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\r\n }\r\n\r\n if (base) {\r\n logBase = 1;\r\n e = x.e - y.e;\r\n } else {\r\n base = BASE;\r\n logBase = LOG_BASE;\r\n e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\r\n }\r\n\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n // The digit array of a Decimal from toStringBinary may have trailing zeros.\r\n for (i = 0; yd[i] == (xd[i] || 0); i++);\r\n\r\n if (yd[i] > (xd[i] || 0)) e--;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else if (dp) {\r\n sd = pr + (x.e - y.e) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) {\r\n qd.push(1);\r\n more = true;\r\n } else {\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / logBase + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * base + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n more = k || i < xL;\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= base/2\r\n k = base / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k, base);\r\n xd = multiplyInteger(xd, k, base);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= base / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= base) k = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL, base);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL, base);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n\r\n more = rem[0] !== void 0;\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n }\r\n\r\n // logBase is 1 when divide is being used for base conversion.\r\n if (logBase == 1) {\r\n q.e = e;\r\n inexact = more;\r\n } else {\r\n\r\n // To calculate q.e, first get the number of digits of qd[0].\r\n for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\r\n q.e = i + e * logBase - 1;\r\n\r\n finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\r\n }\r\n\r\n return q;\r\n };\r\n})();\r\n\r\n\r\n/*\r\n * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n * Check for over/under-flow.\r\n */\r\n function finalise(x, sd, rm, isTruncated) {\r\n var digits, i, j, k, rd, roundUp, w, xd, xdi,\r\n Ctor = x.constructor;\r\n\r\n // Don't round if sd is null or undefined.\r\n out: if (sd != null) {\r\n xd = x.d;\r\n\r\n // Infinity/NaN.\r\n if (!xd) return x;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd containing rd, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // digits: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\r\n i = sd - digits;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / mathpow(10, digits - j - 1) % 10 | 0;\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) {\r\n if (isTruncated) {\r\n\r\n // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\r\n for (; k++ <= xdi;) xd.push(0);\r\n w = rd = 0;\r\n digits = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (digits = 1; k >= 10; k /= 10) digits++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - digits.\r\n j = i - LOG_BASE + digits;\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\r\n }\r\n }\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n isTruncated = isTruncated || sd < 0 ||\r\n xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\r\n\r\n // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\r\n // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\r\n // will give 714.\r\n\r\n roundUp = rm < 4\r\n ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xd[0]) {\r\n xd.length = 0;\r\n if (roundUp) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xd[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (roundUp) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n\r\n // i will be the length of xd[0] before k is added.\r\n for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\r\n j = xd[0] += k;\r\n for (k = 1; j >= 10; j /= 10) k++;\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xd[0] == BASE) xd[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n }\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > Ctor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < Ctor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // Ctor.underflow = true;\r\n } // else Ctor.underflow = false;\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\nfunction finiteToString(x, isExp, sd) {\r\n if (!x.isFinite()) return nonFiniteToString(x);\r\n var k,\r\n e = x.e,\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// Calculate the base 10 exponent from the base 1e7 exponent.\r\nfunction getBase10Exponent(digits, e) {\r\n var w = digits[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for ( e *= LOG_BASE; w >= 10; w /= 10) e++;\r\n return e;\r\n}\r\n\r\n\r\nfunction getLn10(Ctor, sd, pr) {\r\n if (sd > LN10_PRECISION) {\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(precisionLimitExceeded);\r\n }\r\n return finalise(new Ctor(LN10), sd, 1, true);\r\n}\r\n\r\n\r\nfunction getPi(Ctor, sd, rm) {\r\n if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\r\n return finalise(new Ctor(PI), sd, rm, true);\r\n}\r\n\r\n\r\nfunction getPrecision(digits) {\r\n var w = digits.length - 1,\r\n len = w * LOG_BASE + 1;\r\n\r\n w = digits[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) len--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = digits[0]; w >= 10; w /= 10) len++;\r\n }\r\n\r\n return len;\r\n}\r\n\r\n\r\nfunction getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n * integer of type number.\r\n *\r\n * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n *\r\n */\r\nfunction intPow(Ctor, x, n, pr) {\r\n var isTruncated,\r\n r = new Ctor(1),\r\n\r\n // Max n of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n k = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (n % 2) {\r\n r = r.times(x);\r\n if (truncate(r.d, k)) isTruncated = true;\r\n }\r\n\r\n n = mathfloor(n / 2);\r\n if (n === 0) {\r\n\r\n // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\r\n n = r.d.length - 1;\r\n if (isTruncated && r.d[n] === 0) ++r.d[n];\r\n break;\r\n }\r\n\r\n x = x.times(x);\r\n truncate(x.d, k);\r\n }\r\n\r\n external = true;\r\n\r\n return r;\r\n}\r\n\r\n\r\nfunction isOdd(n) {\r\n return n.d[n.d.length - 1] & 1;\r\n}\r\n\r\n\r\n/*\r\n * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'.\r\n */\r\nfunction maxOrMin(Ctor, args, ltgt) {\r\n var y,\r\n x = new Ctor(args[0]),\r\n i = 0;\r\n\r\n for (; ++i < args.length;) {\r\n y = new Ctor(args[i]);\r\n if (!y.s) {\r\n x = y;\r\n break;\r\n } else if (x[ltgt](y)) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(Infinity) = Infinity\r\n * exp(-Infinity) = 0\r\n * exp(NaN) = NaN\r\n * exp(±0) = 1\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n * The result will always be correctly rounded.\r\n *\r\n */\r\nfunction naturalExponential(x, sd) {\r\n var denominator, guard, j, pow, sum, t, wpr,\r\n rep = 0,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // 0/NaN/Infinity?\r\n if (!x.d || !x.d[0] || x.e > 17) {\r\n\r\n return new Ctor(x.d\r\n ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0\r\n : x.s ? x.s < 0 ? 0 : x : 0 / 0);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n // while abs(x) >= 0.1\r\n while (x.e > -2) {\r\n\r\n // x = x / 2^5\r\n x = x.times(t);\r\n k += 5;\r\n }\r\n\r\n // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\r\n // necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(1);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = finalise(pow.times(x), wpr, 1);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n j = k;\r\n while (j--) sum = finalise(sum.times(sum), wpr, 1);\r\n\r\n // Check to see if the first 4 rounding digits are [49]999.\r\n // If so, repeat the summation with a higher precision, otherwise\r\n // e.g. with precision: 18, rounding: 1\r\n // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n\r\n if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += 10;\r\n denominator = pow = t = new Ctor(1);\r\n i = 0;\r\n rep++;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n }\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * ln(-n) = NaN\r\n * ln(0) = -Infinity\r\n * ln(-0) = -Infinity\r\n * ln(1) = 0\r\n * ln(Infinity) = Infinity\r\n * ln(-Infinity) = NaN\r\n * ln(NaN) = NaN\r\n *\r\n * ln(n) (n != 1) is non-terminating.\r\n *\r\n */\r\nfunction naturalLogarithm(y, sd) {\r\n var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // Is x negative or Infinity, NaN, 0 or 1?\r\n if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\r\n return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n Ctor.precision = wpr += guard;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n\r\n if (Math.abs(e = x.e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = x.e;\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n Ctor.precision = pr;\r\n\r\n return sd == null ? finalise(x, pr, rm, external = true) : x;\r\n }\r\n\r\n // x1 is x reduced to a value near 1.\r\n x1 = x;\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = finalise(numerator.times(x2), wpr, 1);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\r\n // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr, 1);\r\n\r\n // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\r\n // been repeated previously) and the first 4 rounding digits 9999?\r\n // If so, restart the summation with a higher precision, otherwise\r\n // e.g. with precision: 12, rounding: 1\r\n // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += guard;\r\n t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = rep = 1;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n}\r\n\r\n\r\n// ±Infinity, NaN.\r\nfunction nonFiniteToString(x) {\r\n // Unsigned.\r\n return String(x.s * x.s / 0);\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\nfunction parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n x.e = e = e - i - 1;\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > x.constructor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < x.constructor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // x.constructor.underflow = true;\r\n } // else x.constructor.underflow = false;\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n */\r\nfunction parseOther(x, str) {\r\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n if (str.indexOf('_') > -1) {\r\n str = str.replace(/(\\d)_(?=\\d)/g, '$1');\r\n if (isDecimal.test(str)) return parseDecimal(x, str);\r\n } else if (str === 'Infinity' || str === 'NaN') {\r\n if (!+str) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return x;\r\n }\r\n\r\n if (isHex.test(str)) {\r\n base = 16;\r\n str = str.toLowerCase();\r\n } else if (isBinary.test(str)) {\r\n base = 2;\r\n } else if (isOctal.test(str)) {\r\n base = 8;\r\n } else {\r\n throw Error(invalidArgument + str);\r\n }\r\n\r\n // Is there a binary exponent part?\r\n i = str.search(/p/i);\r\n\r\n if (i > 0) {\r\n p = +str.slice(i + 1);\r\n str = str.substring(2, i);\r\n } else {\r\n str = str.slice(2);\r\n }\r\n\r\n // Convert `str` as an integer then divide the result by `base` raised to a power such that the\r\n // fraction part will be restored.\r\n i = str.indexOf('.');\r\n isFloat = i >= 0;\r\n Ctor = x.constructor;\r\n\r\n if (isFloat) {\r\n str = str.replace('.', '');\r\n len = str.length;\r\n i = len - i;\r\n\r\n // log[10](16) = 1.2041... , log[10](88) = 1.9444....\r\n divisor = intPow(Ctor, new Ctor(base), i, i * 2);\r\n }\r\n\r\n xd = convertBase(str, base, BASE);\r\n xe = xd.length - 1;\r\n\r\n // Remove trailing zeros.\r\n for (i = xe; xd[i] === 0; --i) xd.pop();\r\n if (i < 0) return new Ctor(x.s * 0);\r\n x.e = getBase10Exponent(xd, xe);\r\n x.d = xd;\r\n external = false;\r\n\r\n // At what precision to perform the division to ensure exact conversion?\r\n // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\r\n // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\r\n // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\r\n // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\r\n // Therefore using 4 * the number of digits of str will always be enough.\r\n if (isFloat) x = divide(x, divisor, len * 4);\r\n\r\n // Multiply by the binary exponent part if present.\r\n if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));\r\n external = true;\r\n\r\n return x;\r\n}\r\n\r\n\r\n/*\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\nfunction sine(Ctor, x) {\r\n var k,\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);\r\n }\r\n\r\n // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\r\n // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\r\n // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x);\r\n\r\n // Reverse argument reduction\r\n var sin2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sin2_x = x.times(x);\r\n x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\r\n }\r\n\r\n return x;\r\n}\r\n\r\n\r\n// Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\r\nfunction taylorSeries(Ctor, n, x, y, isHyperbolic) {\r\n var j, t, u, x2,\r\n i = 1,\r\n pr = Ctor.precision,\r\n k = Math.ceil(pr / LOG_BASE);\r\n\r\n external = false;\r\n x2 = x.times(x);\r\n u = new Ctor(y);\r\n\r\n for (;;) {\r\n t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\r\n u = isHyperbolic ? y.plus(t) : y.minus(t);\r\n y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\r\n t = u.plus(y);\r\n\r\n if (t.d[k] !== void 0) {\r\n for (j = k; t.d[j] === u.d[j] && j--;);\r\n if (j == -1) break;\r\n }\r\n\r\n j = u;\r\n u = y;\r\n y = t;\r\n t = j;\r\n i++;\r\n }\r\n\r\n external = true;\r\n t.d.length = k + 1;\r\n\r\n return t;\r\n}\r\n\r\n\r\n// Exponent e must be positive and non-zero.\r\nfunction tinyPow(b, e) {\r\n var n = b;\r\n while (--e) n *= b;\r\n return n;\r\n}\r\n\r\n\r\n// Return the absolute value of `x` reduced to less than or equal to half pi.\r\nfunction toLessThanHalfPi(Ctor, x) {\r\n var t,\r\n isNeg = x.s < 0,\r\n pi = getPi(Ctor, Ctor.precision, 1),\r\n halfPi = pi.times(0.5);\r\n\r\n x = x.abs();\r\n\r\n if (x.lte(halfPi)) {\r\n quadrant = isNeg ? 4 : 1;\r\n return x;\r\n }\r\n\r\n t = x.divToInt(pi);\r\n\r\n if (t.isZero()) {\r\n quadrant = isNeg ? 3 : 2;\r\n } else {\r\n x = x.minus(t.times(pi));\r\n\r\n // 0 <= x < pi\r\n if (x.lte(halfPi)) {\r\n quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1);\r\n return x;\r\n }\r\n\r\n quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2);\r\n }\r\n\r\n return x.minus(pi).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return the value of Decimal `x` as a string in base `baseOut`.\r\n *\r\n * If the optional `sd` argument is present include a binary exponent suffix.\r\n */\r\nfunction toStringBinary(x, baseOut, sd, rm) {\r\n var base, e, i, k, len, roundUp, str, xd, y,\r\n Ctor = x.constructor,\r\n isExp = sd !== void 0;\r\n\r\n if (isExp) {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n } else {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n }\r\n\r\n if (!x.isFinite()) {\r\n str = nonFiniteToString(x);\r\n } else {\r\n str = finiteToString(x);\r\n i = str.indexOf('.');\r\n\r\n // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\r\n // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\r\n // minBinaryExponent = floor(decimalExponent * log[2](10))\r\n // log[2](10) = 3.321928094887362347870319429489390175864\r\n\r\n if (isExp) {\r\n base = 2;\r\n if (baseOut == 16) {\r\n sd = sd * 4 - 3;\r\n } else if (baseOut == 8) {\r\n sd = sd * 3 - 2;\r\n }\r\n } else {\r\n base = baseOut;\r\n }\r\n\r\n // Convert the number as an integer then divide the result by its base raised to a power such\r\n // that the fraction part will be restored.\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n str = str.replace('.', '');\r\n y = new Ctor(1);\r\n y.e = str.length - i;\r\n y.d = convertBase(finiteToString(y), 10, base);\r\n y.e = y.d.length;\r\n }\r\n\r\n xd = convertBase(str, 10, base);\r\n e = len = xd.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] == 0;) xd.pop();\r\n\r\n if (!xd[0]) {\r\n str = isExp ? '0p+0' : '0';\r\n } else {\r\n if (i < 0) {\r\n e--;\r\n } else {\r\n x = new Ctor(x);\r\n x.d = xd;\r\n x.e = e;\r\n x = divide(x, y, sd, rm, 0, base);\r\n xd = x.d;\r\n e = x.e;\r\n roundUp = inexact;\r\n }\r\n\r\n // The rounding digit, i.e. the digit after the digit that may be rounded up.\r\n i = xd[sd];\r\n k = base / 2;\r\n roundUp = roundUp || xd[sd + 1] !== void 0;\r\n\r\n roundUp = rm < 4\r\n ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2))\r\n : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 ||\r\n rm === (x.s < 0 ? 8 : 7));\r\n\r\n xd.length = sd;\r\n\r\n if (roundUp) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (; ++xd[--sd] > base - 1;) {\r\n xd[sd] = 0;\r\n if (!sd) {\r\n ++e;\r\n xd.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n\r\n // Add binary exponent suffix?\r\n if (isExp) {\r\n if (len > 1) {\r\n if (baseOut == 16 || baseOut == 8) {\r\n i = baseOut == 16 ? 4 : 3;\r\n for (--len; len % i; len++) str += '0';\r\n xd = convertBase(str, base, baseOut);\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // xd[0] will always be be 1\r\n for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n } else {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n }\r\n\r\n str = str + (e < 0 ? 'p' : 'p+') + e;\r\n } else if (e < 0) {\r\n for (; ++e;) str = '0' + str;\r\n str = '0.' + str;\r\n } else {\r\n if (++e > len) for (e -= len; e-- ;) str += '0';\r\n else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n}\r\n\r\n\r\n// Does not strip trailing zeros.\r\nfunction truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n}\r\n\r\n\r\n// Decimal methods\r\n\r\n\r\n/*\r\n * abs\r\n * acos\r\n * acosh\r\n * add\r\n * asin\r\n * asinh\r\n * atan\r\n * atanh\r\n * atan2\r\n * cbrt\r\n * ceil\r\n * clamp\r\n * clone\r\n * config\r\n * cos\r\n * cosh\r\n * div\r\n * exp\r\n * floor\r\n * hypot\r\n * ln\r\n * log\r\n * log2\r\n * log10\r\n * max\r\n * min\r\n * mod\r\n * mul\r\n * pow\r\n * random\r\n * round\r\n * set\r\n * sign\r\n * sin\r\n * sinh\r\n * sqrt\r\n * sub\r\n * sum\r\n * tan\r\n * tanh\r\n * trunc\r\n */\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the absolute value of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction abs(x) {\r\n return new this(x).abs();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction acos(x) {\r\n return new this(x).acos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction acosh(x) {\r\n return new this(x).acosh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction add(x, y) {\r\n return new this(x).plus(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction asin(x) {\r\n return new this(x).asin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction asinh(x) {\r\n return new this(x).asinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction atan(x) {\r\n return new this(x).atan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction atanh(x) {\r\n return new this(x).atanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi, pi]\r\n *\r\n * y {number|string|Decimal} The y-coordinate.\r\n * x {number|string|Decimal} The x-coordinate.\r\n *\r\n * atan2(±0, -0) = ±pi\r\n * atan2(±0, +0) = ±0\r\n * atan2(±0, -x) = ±pi for x > 0\r\n * atan2(±0, x) = ±0 for x > 0\r\n * atan2(-y, ±0) = -pi/2 for y > 0\r\n * atan2(y, ±0) = pi/2 for y > 0\r\n * atan2(±y, -Infinity) = ±pi for finite y > 0\r\n * atan2(±y, +Infinity) = ±0 for finite y > 0\r\n * atan2(±Infinity, x) = ±pi/2 for finite x\r\n * atan2(±Infinity, -Infinity) = ±3*pi/4\r\n * atan2(±Infinity, +Infinity) = ±pi/4\r\n * atan2(NaN, x) = NaN\r\n * atan2(y, NaN) = NaN\r\n *\r\n */\r\nfunction atan2(y, x) {\r\n y = new this(y);\r\n x = new this(x);\r\n var r,\r\n pr = this.precision,\r\n rm = this.rounding,\r\n wpr = pr + 4;\r\n\r\n // Either NaN\r\n if (!y.s || !x.s) {\r\n r = new this(NaN);\r\n\r\n // Both ±Infinity\r\n } else if (!y.d && !x.d) {\r\n r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\r\n r.s = y.s;\r\n\r\n // x is ±Infinity or y is ±0\r\n } else if (!x.d || y.isZero()) {\r\n r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\r\n r.s = y.s;\r\n\r\n // y is ±Infinity or x is ±0\r\n } else if (!y.d || x.isZero()) {\r\n r = getPi(this, wpr, 1).times(0.5);\r\n r.s = y.s;\r\n\r\n // Both non-zero and finite\r\n } else if (x.s < 0) {\r\n this.precision = wpr;\r\n this.rounding = 1;\r\n r = this.atan(divide(y, x, wpr, 1));\r\n x = getPi(this, wpr, 1);\r\n this.precision = pr;\r\n this.rounding = rm;\r\n r = y.s < 0 ? r.minus(x) : r.plus(x);\r\n } else {\r\n r = this.atan(divide(y, x, wpr, 1));\r\n }\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction cbrt(x) {\r\n return new this(x).cbrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction ceil(x) {\r\n return finalise(x = new this(x), x.e + 1, 2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`.\r\n *\r\n * x {number|string|Decimal}\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\r\nfunction clamp(x, min, max) {\r\n return new this(x).clamp(min, max);\r\n}\r\n\r\n\r\n/*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n * maxE {number}\r\n * minE {number}\r\n * modulo {number}\r\n * crypto {boolean|number}\r\n * defaults {true}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\nfunction config(obj) {\r\n if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\r\n var i, p, v,\r\n useDefaults = obj.defaults === true,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -EXP_LIMIT, 0,\r\n 'toExpPos', 0, EXP_LIMIT,\r\n 'maxE', 0, EXP_LIMIT,\r\n 'minE', -EXP_LIMIT, 0,\r\n 'modulo', 0, 9\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (v === true || v === false || v === 0 || v === 1) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n this[p] = true;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n } else {\r\n this[p] = false;\r\n }\r\n } else {\r\n throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n return this;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cos(x) {\r\n return new this(x).cos();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction cosh(x) {\r\n return new this(x).cosh();\r\n}\r\n\r\n\r\n/*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\nfunction clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * v {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(v) {\r\n var e, i, t,\r\n x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(v);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (isDecimalInstance(v)) {\r\n x.s = v.s;\r\n\r\n if (external) {\r\n if (!v.d || v.e > Decimal.maxE) {\r\n\r\n // Infinity.\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (v.e < Decimal.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d.slice();\r\n }\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d ? v.d.slice() : v.d;\r\n }\r\n\r\n return;\r\n }\r\n\r\n t = typeof v;\r\n\r\n if (t === 'number') {\r\n if (v === 0) {\r\n x.s = 1 / v < 0 ? -1 : 1;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (v === ~~v && v < 1e7) {\r\n for (e = 0, i = v; i >= 10; i /= 10) e++;\r\n\r\n if (external) {\r\n if (e > Decimal.maxE) {\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (e < Decimal.minE) {\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n\r\n return;\r\n\r\n // Infinity, NaN.\r\n } else if (v * 0 !== 0) {\r\n if (!v) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n\r\n } else if (t !== 'string') {\r\n throw Error(invalidArgument + v);\r\n }\r\n\r\n // Minus sign?\r\n if ((i = v.charCodeAt(0)) === 45) {\r\n v = v.slice(1);\r\n x.s = -1;\r\n } else {\r\n // Plus sign?\r\n if (i === 43) v = v.slice(1);\r\n x.s = 1;\r\n }\r\n\r\n return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n Decimal.EUCLID = 9;\r\n\r\n Decimal.config = Decimal.set = config;\r\n Decimal.clone = clone;\r\n Decimal.isDecimal = isDecimalInstance;\r\n\r\n Decimal.abs = abs;\r\n Decimal.acos = acos;\r\n Decimal.acosh = acosh; // ES6\r\n Decimal.add = add;\r\n Decimal.asin = asin;\r\n Decimal.asinh = asinh; // ES6\r\n Decimal.atan = atan;\r\n Decimal.atanh = atanh; // ES6\r\n Decimal.atan2 = atan2;\r\n Decimal.cbrt = cbrt; // ES6\r\n Decimal.ceil = ceil;\r\n Decimal.clamp = clamp;\r\n Decimal.cos = cos;\r\n Decimal.cosh = cosh; // ES6\r\n Decimal.div = div;\r\n Decimal.exp = exp;\r\n Decimal.floor = floor;\r\n Decimal.hypot = hypot; // ES6\r\n Decimal.ln = ln;\r\n Decimal.log = log;\r\n Decimal.log10 = log10; // ES6\r\n Decimal.log2 = log2; // ES6\r\n Decimal.max = max;\r\n Decimal.min = min;\r\n Decimal.mod = mod;\r\n Decimal.mul = mul;\r\n Decimal.pow = pow;\r\n Decimal.random = random;\r\n Decimal.round = round;\r\n Decimal.sign = sign; // ES6\r\n Decimal.sin = sin;\r\n Decimal.sinh = sinh; // ES6\r\n Decimal.sqrt = sqrt;\r\n Decimal.sub = sub;\r\n Decimal.sum = sum;\r\n Decimal.tan = tan;\r\n Decimal.tanh = tanh; // ES6\r\n Decimal.trunc = trunc; // ES6\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n if (obj.defaults !== true) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction div(x, y) {\r\n return new this(x).div(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\r\nfunction exp(x) {\r\n return new this(x).exp();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction floor(x) {\r\n return finalise(x = new this(x), x.e + 1, 3);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction hypot() {\r\n var i, n,\r\n t = new this(0);\r\n\r\n external = false;\r\n\r\n for (i = 0; i < arguments.length;) {\r\n n = new this(arguments[i++]);\r\n if (!n.d) {\r\n if (n.s) {\r\n external = true;\r\n return new this(1 / 0);\r\n }\r\n t = n;\r\n } else if (t.d) {\r\n t = t.plus(n.times(n));\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return t.sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n * otherwise return false.\r\n *\r\n */\r\nfunction isDecimalInstance(obj) {\r\n return obj instanceof Decimal || obj && obj.toStringTag === tag || false;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction ln(x) {\r\n return new this(x).ln();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * log[y](x)\r\n *\r\n * x {number|string|Decimal} The argument of the logarithm.\r\n * y {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\nfunction log(x, y) {\r\n return new this(x).log(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction log2(x) {\r\n return new this(x).log(2);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction log10(x) {\r\n return new this(x).log(10);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction max() {\r\n return maxOrMin(this, arguments, 'lt');\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction min() {\r\n return maxOrMin(this, arguments, 'gt');\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction mod(x, y) {\r\n return new this(x).mod(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction mul(x, y) {\r\n return new this(x).mul(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The base.\r\n * y {number|string|Decimal} The exponent.\r\n *\r\n */\r\nfunction pow(x, y) {\r\n return new this(x).pow(y);\r\n}\r\n\r\n\r\n/*\r\n * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n * are produced).\r\n *\r\n * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n *\r\n */\r\nfunction random(sd) {\r\n var d, e, k, n,\r\n i = 0,\r\n r = new this(1),\r\n rd = [];\r\n\r\n if (sd === void 0) sd = this.precision;\r\n else checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n k = Math.ceil(sd / LOG_BASE);\r\n\r\n if (!this.crypto) {\r\n for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n } else if (crypto.getRandomValues) {\r\n d = crypto.getRandomValues(new Uint32Array(k));\r\n\r\n for (; i < k;) {\r\n n = d[i];\r\n\r\n // 0 <= n < 4294967296\r\n // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\r\n if (n >= 4.29e9) {\r\n d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\r\n } else {\r\n\r\n // 0 <= n <= 4289999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd[i++] = n % 1e7;\r\n }\r\n }\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n d = crypto.randomBytes(k *= 4);\r\n\r\n for (; i < k;) {\r\n\r\n // 0 <= n < 2147483648\r\n n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\r\n\r\n // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\r\n if (n >= 2.14e9) {\r\n crypto.randomBytes(4).copy(d, i);\r\n } else {\r\n\r\n // 0 <= n <= 2139999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd.push(n % 1e7);\r\n i += 4;\r\n }\r\n }\r\n\r\n i = k / 4;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n\r\n k = rd[--i];\r\n sd %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to sd.\r\n if (k && sd) {\r\n n = mathpow(10, LOG_BASE - sd);\r\n rd[i] = (k / n | 0) * n;\r\n }\r\n\r\n // Remove trailing words which are zero.\r\n for (; rd[i] === 0; i--) rd.pop();\r\n\r\n // Zero?\r\n if (i < 0) {\r\n e = 0;\r\n rd = [0];\r\n } else {\r\n e = -1;\r\n\r\n // Remove leading words which are zero and adjust exponent accordingly.\r\n for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\r\n\r\n // Count the digits of the first word of rd to determine leading zeros.\r\n for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\r\n\r\n // Adjust the exponent for leading zeros of the first word of rd.\r\n if (k < LOG_BASE) e -= LOG_BASE - k;\r\n }\r\n\r\n r.e = e;\r\n r.d = rd;\r\n\r\n return r;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n *\r\n * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction round(x) {\r\n return finalise(x = new this(x), x.e + 1, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return\r\n * 1 if x > 0,\r\n * -1 if x < 0,\r\n * 0 if x is 0,\r\n * -0 if x is -0,\r\n * NaN otherwise\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction sign(x) {\r\n x = new this(x);\r\n return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN;\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sin(x) {\r\n return new this(x).sin();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction sinh(x) {\r\n return new this(x).sinh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction sqrt(x) {\r\n return new this(x).sqrt();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\nfunction sub(x, y) {\r\n return new this(x).sub(y);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the sum of the arguments, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * Only the result is rounded, not the intermediate calculations.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\nfunction sum() {\r\n var i = 0,\r\n args = arguments,\r\n x = new this(args[i]);\r\n\r\n external = false;\r\n for (; x.s && ++i < args.length;) x = x.plus(args[i]);\r\n external = true;\r\n\r\n return finalise(x, this.precision, this.rounding);\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tan(x) {\r\n return new this(x).tan();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\nfunction tanh(x) {\r\n return new this(x).tanh();\r\n}\r\n\r\n\r\n/*\r\n * Return a new Decimal whose value is `x` truncated to an integer.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\nfunction trunc(x) {\r\n return finalise(x = new this(x), x.e + 1, 1);\r\n}\r\n\r\n\r\nP[Symbol.for('nodejs.util.inspect.custom')] = P.toString;\r\nP[Symbol.toStringTag] = 'Decimal';\r\n\r\n// Create and configure initial Decimal constructor.\r\nexport var Decimal = P.constructor = clone(DEFAULTS);\r\n\r\n// Create the internal constants from their string values.\r\nLN10 = new Decimal(LN10);\r\nPI = new Decimal(PI);\r\n\r\nexport default Decimal;\r\n","// src/utils/decimal.ts\nimport Decimal from \"decimal.js\";\nDecimal.config({\n precision: 64,\n rounding: Decimal.ROUND_DOWN,\n toExpNeg: -64,\n toExpPos: 64\n});\nvar decimal_default = Decimal;\n\n// src/types/clmmpool.ts\nvar AccountName = /* @__PURE__ */ ((AccountName2) => {\n AccountName2[\"ClmmConfig\"] = \"ClmmConfig\";\n AccountName2[\"ClmmPool\"] = \"Clmmpool\";\n AccountName2[\"FeeTier\"] = \"FeeTier\";\n AccountName2[\"Partner\"] = \"Partner\";\n AccountName2[\"Position\"] = \"Position\";\n AccountName2[\"TickArrayMap\"] = \"TickArrayMap\";\n AccountName2[\"TickArray\"] = \"TickArray\";\n AccountName2[\"Rewarder\"] = \"Rewarder\";\n return AccountName2;\n})(AccountName || {});\n\n// src/types/constants.ts\nimport { BN } from \"@project-serum/anchor\";\nimport * as anchor from \"@project-serum/anchor\";\nimport { PublicKey } from \"@solana/web3.js\";\nvar CLMMPOOLS_CONFIG = new PublicKey(\n \"2LecshUwdy9xi7meFgHtFJQNSKk4KdTrcpvaB56dP2NQ\"\n);\nvar CLMMPOOL_PROGRAM_ID = new PublicKey(\n \"CLMM9tUoggJu2wagPkkqs9eFG4BWhVBZWkP1qv3Sp7tR\"\n);\nvar MINT_WRAPPER_PROGRAM_ID = new PublicKey(\n \"CMWr5a5feRxAeowwHcm1u5bYwmUvsAjcBbqLRcBshyAR\"\n);\nvar MAX_TICK_INDEX = 443636;\nvar MIN_TICK_INDEX = -443636;\nvar MAX_SQRT_PRICE = \"79226673515401279992447579055\";\nvar MIN_SQRT_PRICE = \"4295048016\";\nvar TICK_ARRAY_SIZE = 64;\nvar METADATA_PROGRAM_ADDRESS = new PublicKey(\n \"metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s\"\n);\nvar PROTOCOL_FEE_RATE_DENOMINATOR = new BN(1e4);\nvar FEE_RATE_DENOMINATOR = new BN(1e6);\nvar TICK_ARRAY_MAP_MAX_BIT_INDEX = 868 * 8 - 1;\nvar TICK_ARRAY_MAP_MIN_BIT_INDEX = 0;\nvar MAX_TICK_ARRAY = 3;\nvar TICK_ARRAY_AMOUNT = 6943;\nvar POSITION_NFT_UPDATE_AUTHORITY = new PublicKey(\n \"5QW9BCx6oZKjSWCVyBZaVU8N4jwtFnged9TsiaXvDj8Q\"\n);\nvar ZERO_BN = new anchor.BN(0);\n\n// src/idls/clmmpool.ts\nvar IDL = {\n \"version\": \"0.1.0\",\n \"name\": \"clmmpool\",\n \"instructions\": [\n {\n \"name\": \"initializeClmmConfig\",\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"protocolAuthority\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"protocolFeeClaimAuthority\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"createPoolAuthority\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"protocolFeeRate\",\n \"type\": \"u16\"\n }\n ]\n },\n {\n \"name\": \"createFeeTier\",\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"feeTier\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"protocolAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"tickSpacing\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"feeRate\",\n \"type\": \"u16\"\n }\n ]\n },\n {\n \"name\": \"updateConfig\",\n \"accounts\": [\n {\n \"name\": \"clmmConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"protocolAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"newProtocolFeeRate\",\n \"type\": {\n \"option\": \"u16\"\n }\n },\n {\n \"name\": \"createPoolAuthority\",\n \"type\": {\n \"option\": \"publicKey\"\n }\n },\n {\n \"name\": \"claimAuthority\",\n \"type\": {\n \"option\": \"publicKey\"\n }\n }\n ]\n },\n {\n \"name\": \"updateFeeRate\",\n \"accounts\": [\n {\n \"name\": \"protocolAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": true,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"newFeeRate\",\n \"type\": \"u16\"\n }\n ]\n },\n {\n \"name\": \"transferProtocolAuthority\",\n \"accounts\": [\n {\n \"name\": \"protocolAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"newAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"acceptProtocolAuthority\",\n \"accounts\": [\n {\n \"name\": \"newAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmConfig\",\n \"isMut\": true,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"createClmmpool\",\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"feeTier\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenA\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenB\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenAVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"associatedTokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"initSqrtPrice\",\n \"type\": \"u128\"\n }\n ]\n },\n {\n \"name\": \"createTickArray\",\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tickArray\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"arrayIndex\",\n \"type\": \"u16\"\n }\n ]\n },\n {\n \"name\": \"createTickArrayMap\",\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tickArrayMap\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"openPosition\",\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"position\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"positionNftMint\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"positionMetadataAccount\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"positionEdition\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"positionAta\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"associatedTokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"metadataProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"tickLowerIndex\",\n \"type\": \"i32\"\n },\n {\n \"name\": \"tickUpperIndex\",\n \"type\": \"i32\"\n }\n ]\n },\n {\n \"name\": \"removePosition\",\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"position\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"positionNftMint\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"positionAta\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"positionMetadataAccount\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"positionEdition\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"metadataProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"increaseLiquidity\",\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"position\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"positionAta\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenAAta\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBAta\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenAVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tickArrayLower\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tickArrayUpper\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tickArrayMap\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"deltaLiquidity\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"tokenAMax\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokenBMax\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"increaseLiquidityWithFixedToken\",\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"position\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"positionAta\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenAAta\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBAta\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenAVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tickArrayLower\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tickArrayUpper\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tickArrayMap\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"tokenA\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokenB\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"isAFixed\",\n \"type\": \"bool\"\n }\n ]\n },\n {\n \"name\": \"decreaseLiquidity\",\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"position\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"positionAta\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenAAta\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBAta\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenAVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tickArrayLower\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tickArrayUpper\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tickArrayMap\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"deltaLiquidity\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"tokenAMin\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokenBMin\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"swap\",\n \"accounts\": [\n {\n \"name\": \"clmmConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenA\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenB\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"accountA\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"accountB\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenAVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tickArrayMap\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"aToB\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"byAmountIn\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"amountLimit\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"sqrtPriceLimit\",\n \"type\": \"u128\"\n }\n ]\n },\n {\n \"name\": \"collectFee\",\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"position\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"positionAta\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenAAta\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBAta\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenAVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tickArrayLower\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tickArrayUpper\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"collectProtocolFee\",\n \"accounts\": [\n {\n \"name\": \"protocolFeeClaimAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenAAta\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBAta\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenAVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"createPartner\",\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"protocolAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"base\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"partner\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"partnerFeeClaimAuthority\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"feeRate\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"startTime\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n }\n ]\n },\n {\n \"name\": \"updatePartner\",\n \"accounts\": [\n {\n \"name\": \"clmmConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"partner\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"authority\",\n \"isMut\": false,\n \"isSigner\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"newFeeRate\",\n \"type\": {\n \"option\": \"u16\"\n }\n },\n {\n \"name\": \"newClaimAuthority\",\n \"type\": {\n \"option\": \"publicKey\"\n }\n },\n {\n \"name\": \"startTime\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"endTime\",\n \"type\": {\n \"option\": \"u64\"\n }\n }\n ]\n },\n {\n \"name\": \"collectPartnerFee\",\n \"accounts\": [\n {\n \"name\": \"partnerFeeClaimAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"partner\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenAAta\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBAta\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenAPartnerFeeVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBPartnerFeeVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"swapWithPartner\",\n \"accounts\": [\n {\n \"name\": \"clmmConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenA\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenB\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"accountA\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"accountB\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenAVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tickArrayMap\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"partner\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"partnerAtaA\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"partnerAtaB\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"aToB\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"byAmountIn\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"amountLimit\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"sqrtPriceLimit\",\n \"type\": \"u128\"\n }\n ]\n },\n {\n \"name\": \"initializeRewarder\",\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"rewarderAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"rewarderTokenMint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"rewarderIndex\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"mintWrapper\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"minter\",\n \"type\": \"publicKey\"\n }\n ]\n },\n {\n \"name\": \"updateRewarderEmission\",\n \"accounts\": [\n {\n \"name\": \"rewarderAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": true,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"rewarderIndex\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"emissionsPerSecond\",\n \"type\": \"u128\"\n }\n ]\n },\n {\n \"name\": \"collectRewarder\",\n \"accounts\": [\n {\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"position\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"positionAta\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rewarderAta\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"mintWrapper\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"minter\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"mintWrapperProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rewardsTokenMint\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tickArrayLower\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tickArrayUpper\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"rewarderIndex\",\n \"type\": \"u8\"\n }\n ]\n },\n {\n \"name\": \"transferPartnerClaimAuthority\",\n \"accounts\": [\n {\n \"name\": \"partnerClaimAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"partner\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"newAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"acceptPartnerClaimAuthority\",\n \"accounts\": [\n {\n \"name\": \"newAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"partner\",\n \"isMut\": true,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"pauseClmmpool\",\n \"accounts\": [\n {\n \"name\": \"clmmConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"protocolAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": true,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"unpauseClmmpool\",\n \"accounts\": [\n {\n \"name\": \"clmmConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"protocolAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": true,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"createClmmpoolMetadata\",\n \"accounts\": [\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"clmmConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"clmmpool\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"clmmpoolMetadata\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"protocolAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"uri\",\n \"type\": \"string\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"clmmConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"protocolAuthority\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"protocolFeeClaimAuthority\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"protocolFeeRate\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"pendingAuthority\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"createPoolAuthority\",\n \"type\": \"publicKey\"\n }\n ]\n }\n },\n {\n \"name\": \"clmmpoolMetadata\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"clmmpool\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"positionNums\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n },\n {\n \"name\": \"symbol\",\n \"type\": \"string\"\n },\n {\n \"name\": \"uri\",\n \"type\": \"string\"\n }\n ]\n }\n },\n {\n \"name\": \"clmmpool\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"clmmConfig\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"tokenA\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"tokenB\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"tokenAVault\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"tokenBVault\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"tickSpacingSeed\",\n \"type\": {\n \"array\": [\n \"u8\",\n 2\n ]\n }\n },\n {\n \"name\": \"feeRate\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"liquidity\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"currentSqrtPrice\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"currentTickIndex\",\n \"type\": \"i32\"\n },\n {\n \"name\": \"feeGrowthGlobalA\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"feeGrowthGlobalB\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"feeProtocolTokenA\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"feeProtocolTokenB\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": {\n \"array\": [\n \"u8\",\n 1\n ]\n }\n },\n {\n \"name\": \"rewarderInfos\",\n \"type\": {\n \"array\": [\n {\n \"defined\": \"Rewarder\"\n },\n 3\n ]\n }\n },\n {\n \"name\": \"rewarderLastUpdatedTime\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"isPause\",\n \"type\": \"bool\"\n }\n ]\n }\n },\n {\n \"name\": \"feeTier\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"feeRate\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"partner\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"partnerFeeClaimAuthority\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"pendingAuthority\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"base\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"feeRate\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"bump\",\n \"type\": {\n \"array\": [\n \"u8\",\n 1\n ]\n }\n },\n {\n \"name\": \"startTime\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"endTime\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"name\",\n \"type\": \"string\"\n }\n ]\n }\n },\n {\n \"name\": \"position\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"clmmpool\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"positionNftMint\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"liquidity\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"tickLowerIndex\",\n \"type\": \"i32\"\n },\n {\n \"name\": \"tickUpperIndex\",\n \"type\": \"i32\"\n },\n {\n \"name\": \"feeGrowthInsideA\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"feeOwedA\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"feeGrowthInsideB\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"feeOwedB\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"rewarderInfos\",\n \"type\": {\n \"array\": [\n {\n \"defined\": \"PositionReward\"\n },\n 3\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"tickArray\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"arrayIndex\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"clmmpool\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"ticks\",\n \"type\": {\n \"array\": [\n {\n \"defined\": \"Tick\"\n },\n 64\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"tickArrayMap\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bitmap\",\n \"type\": {\n \"array\": [\n \"u8\",\n 868\n ]\n }\n }\n ]\n }\n }\n ],\n \"types\": [\n {\n \"name\": \"Rewarder\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"mintWrapper\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"minter\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"mint\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"authority\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"emissionsPerSecond\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"growthGlobal\",\n \"type\": \"u128\"\n }\n ]\n }\n },\n {\n \"name\": \"PositionReward\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"growthInside\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"amountOwed\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"Tick\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"isInitialized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"index\",\n \"type\": \"i32\"\n },\n {\n \"name\": \"sqrtPrice\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"liquidityNet\",\n \"type\": \"i128\"\n },\n {\n \"name\": \"liquidityGross\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"feeGrowthOutsideA\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"feeGrowthOutsideB\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"rewardGrowthOutside\",\n \"type\": {\n \"array\": [\n \"u128\",\n 3\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"ErrorCode\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"LOK\"\n },\n {\n \"name\": \"NumberCastError\"\n },\n {\n \"name\": \"ZeroMintAmount\"\n },\n {\n \"name\": \"IntegerDowncastOverflow\"\n },\n {\n \"name\": \"MultiplicationOverflow\"\n },\n {\n \"name\": \"DivisorIsZero\"\n },\n {\n \"name\": \"TokenAmountMinSubceeded\"\n },\n {\n \"name\": \"TokenAmountMaxExceeded\"\n },\n {\n \"name\": \"SqrtPriceOutOfBounds\"\n },\n {\n \"name\": \"ProtocolFeeRateIllegal\"\n },\n {\n \"name\": \"FeeRateIllegal\"\n },\n {\n \"name\": \"TokenMintPairIllgal\"\n },\n {\n \"name\": \"TickArrayStartIndexIllegal\"\n },\n {\n \"name\": \"InvalidTickSpacing\"\n },\n {\n \"name\": \"InvalidTickIndex\"\n },\n {\n \"name\": \"InvalidTickArrayAccount\"\n },\n {\n \"name\": \"PositionIsNotEmpty\"\n },\n {\n \"name\": \"InvalidTokenAccountOwner\"\n },\n {\n \"name\": \"TickNotFound\"\n },\n {\n \"name\": \"TickNotInArray\"\n },\n {\n \"name\": \"InvalidTokenAccount\"\n },\n {\n \"name\": \"InvalidMint\"\n },\n {\n \"name\": \"InvalidAuthority\"\n },\n {\n \"name\": \"PositionAndClmmpoolNotMatch\"\n },\n {\n \"name\": \"PositionIllegal\"\n },\n {\n \"name\": \"InvalidDeltaLiquidity\"\n },\n {\n \"name\": \"ConfigAndPoolNotMatch\"\n },\n {\n \"name\": \"WrongSqrtPriceLimit\"\n },\n {\n \"name\": \"TickArrayNotFound\"\n },\n {\n \"name\": \"InvalidTickArrayIndex\"\n },\n {\n \"name\": \"NextTickNotFound\"\n },\n {\n \"name\": \"FeeGrowthIllegal\"\n },\n {\n \"name\": \"LiquidityOverflow\"\n },\n {\n \"name\": \"LiquidityUnderflow\"\n },\n {\n \"name\": \"RemainerAmountUnderflow\"\n },\n {\n \"name\": \"SwapAmountInOverflow\"\n },\n {\n \"name\": \"SwapAmountOutOverflow\"\n },\n {\n \"name\": \"SwapFeeAmountOverflow\"\n },\n {\n \"name\": \"InvalidTime\"\n },\n {\n \"name\": \"AmountInAboveMaximumLimit\"\n },\n {\n \"name\": \"AmountOutBelowMaximumLimit\"\n },\n {\n \"name\": \"InvalidFixedTokenType\"\n },\n {\n \"name\": \"InvalidRewarderIndex\"\n },\n {\n \"name\": \"InvalidPartner\"\n },\n {\n \"name\": \"InvalidClmmpoolStatus\"\n },\n {\n \"name\": \"InvalidClmmpoolMetadataAccount\"\n }\n ]\n }\n }\n ],\n \"events\": [\n {\n \"name\": \"AcceptPartnerClaimAuthorityEvent\",\n \"fields\": [\n {\n \"name\": \"newAuthority\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"partner\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"oldAuthority\",\n \"type\": \"publicKey\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"AcceptProtocolAuthorityEvent\",\n \"fields\": [\n {\n \"name\": \"newAuthority\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"config\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"oldAuthority\",\n \"type\": \"publicKey\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"CollectFeeEvent\",\n \"fields\": [\n {\n \"name\": \"pool\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"owner\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"positionNftMint\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"amountA\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"amountB\",\n \"type\": \"u64\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"CollectPartnerFeeEvent\",\n \"fields\": [\n {\n \"name\": \"claimAuthority\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"partner\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"pool\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"amountA\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"amountB\",\n \"type\": \"u64\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"CollectProtocolFeeEvent\",\n \"fields\": [\n {\n \"name\": \"claimAuthority\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"config\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"pool\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"amountA\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"amountB\",\n \"type\": \"u64\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"CollectRewarderEvent\",\n \"fields\": [\n {\n \"name\": \"pool\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"owner\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"positionNftMint\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"rewarderMint\",\n \"type\": \"publicKey\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"CreateClmmPoolEvent\",\n \"fields\": [\n {\n \"name\": \"payer\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"config\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"feeTier\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"pool\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"tokenA\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"tokenB\",\n \"type\": \"publicKey\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"CreateClmmpoolMetadataEvent\",\n \"fields\": [\n {\n \"name\": \"clmmpool\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"clmmpoolMetadata\",\n \"type\": \"publicKey\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"CreateFeeTierEvent\",\n \"fields\": [\n {\n \"name\": \"payer\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"config\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"feeTier\",\n \"type\": \"publicKey\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"CreatePartnerEvent\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"protocolAuthority\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"partner\",\n \"type\": \"publicKey\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"CreateTickArrayEvent\",\n \"fields\": [\n {\n \"name\": \"payer\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"pool\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"tickArray\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"arrayIndex\",\n \"type\": \"u16\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"CreateTickArrayMapEvent\",\n \"fields\": [\n {\n \"name\": \"payer\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"pool\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"tickArrayMap\",\n \"type\": \"publicKey\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"DecreaseLiquidityEvent\",\n \"fields\": [\n {\n \"name\": \"pool\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"owner\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"positionNftMint\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"deltaLiquidity\",\n \"type\": \"u128\",\n \"index\": false\n },\n {\n \"name\": \"amountA\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"amountB\",\n \"type\": \"u64\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"IncreaseLiquidityEvent\",\n \"fields\": [\n {\n \"name\": \"pool\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"owner\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"positionNftMint\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"deltaLiquidity\",\n \"type\": \"u128\",\n \"index\": false\n },\n {\n \"name\": \"amountA\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"amountB\",\n \"type\": \"u64\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"IncreaseLiquidityWithFixedTokenEvent\",\n \"fields\": [\n {\n \"name\": \"pool\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"owner\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"positionNftMint\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"deltaLiquidity\",\n \"type\": \"u128\",\n \"index\": false\n },\n {\n \"name\": \"amountA\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"amountB\",\n \"type\": \"u64\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"InitializeClmmConfigEvent\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"feeAuthority\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"claimAuthority\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"createPoolAuthority\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"feeRate\",\n \"type\": \"u16\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"OpenPositionEvent\",\n \"fields\": [\n {\n \"name\": \"pool\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"owner\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"positionNftMint\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"position\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"tickLowerIndex\",\n \"type\": \"i32\",\n \"index\": false\n },\n {\n \"name\": \"tickUpperIndex\",\n \"type\": \"i32\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"RemovePositionEvent\",\n \"fields\": [\n {\n \"name\": \"pool\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"owner\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"positionNftMint\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"position\",\n \"type\": \"publicKey\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"SwapEvent\",\n \"fields\": [\n {\n \"name\": \"pool\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"owner\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"partner\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"aToB\",\n \"type\": \"bool\",\n \"index\": false\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"amountOut\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"refAmount\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"protocolAmount\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"vaultAAmount\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"vaultBAmount\",\n \"type\": \"u64\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"SwapWithPartnerEvent\",\n \"fields\": [\n {\n \"name\": \"pool\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"owner\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"partner\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"aToB\",\n \"type\": \"bool\",\n \"index\": false\n },\n {\n \"name\": \"amountIn\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"amountOut\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"refAmount\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"feeAmount\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"protocolAmount\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"vaultAAmount\",\n \"type\": \"u64\",\n \"index\": false\n },\n {\n \"name\": \"vaultBAmount\",\n \"type\": \"u64\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"TransferPartnerClaimAuthorityEvent\",\n \"fields\": [\n {\n \"name\": \"newAuthority\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"partner\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"oldAuthority\",\n \"type\": \"publicKey\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"TransferProtocolAuthorityEvent\",\n \"fields\": [\n {\n \"name\": \"newAuthority\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"config\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"oldAuthority\",\n \"type\": \"publicKey\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"UpdateConfigEvent\",\n \"fields\": [\n {\n \"name\": \"config\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"newProtocolFeeRate\",\n \"type\": {\n \"option\": \"u16\"\n },\n \"index\": false\n },\n {\n \"name\": \"createPoolAuthority\",\n \"type\": {\n \"option\": \"publicKey\"\n },\n \"index\": false\n },\n {\n \"name\": \"claimAuthority\",\n \"type\": {\n \"option\": \"publicKey\"\n },\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"UpdateFeeRateEvent\",\n \"fields\": [\n {\n \"name\": \"pool\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"config\",\n \"type\": \"publicKey\",\n \"index\": false\n }\n ]\n },\n {\n \"name\": \"UpdatePartnerEvent\",\n \"fields\": [\n {\n \"name\": \"authority\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"partner\",\n \"type\": \"publicKey\",\n \"index\": false\n },\n {\n \"name\": \"newFeeRate\",\n \"type\": {\n \"option\": \"u16\"\n },\n \"index\": false\n },\n {\n \"name\": \"newClaimAuthority\",\n \"type\": {\n \"option\": \"publicKey\"\n },\n \"index\": false\n }\n ]\n }\n ]\n};\n\n// src/math/address.ts\nimport { translateAddress } from \"@project-serum/anchor\";\nimport { findProgramAddressSync } from \"@project-serum/anchor/dist/cjs/utils/pubkey\";\n\n// src/math/clmm.ts\nimport { u64 } from \"@solana/spl-token\";\nimport BN8 from \"bn.js\";\n\n// src/errors/errors.ts\nvar ClmmpoolsError = class extends Error {\n constructor(message, errorCode) {\n super(message);\n this.message = message;\n this.errorCode = errorCode;\n }\n static isClmmpoolsErrorCode(e, code) {\n return e instanceof ClmmpoolsError && e.errorCode === code;\n }\n};\n\n// src/utils/pda.ts\nimport BN6 from \"bn.js\";\n\n// src/math/tick.ts\nimport { BN as BN4 } from \"@project-serum/anchor\";\nimport invariant from \"tiny-invariant\";\n\n// src/math/utils.ts\nimport BN3 from \"bn.js\";\nvar ZERO = new BN3(0);\nvar ONE = new BN3(1);\nvar TWO = new BN3(2);\nvar U128 = TWO.pow(new BN3(128));\nvar U64_MAX = TWO.pow(new BN3(64)).sub(ONE);\nvar U128_MAX = TWO.pow(new BN3(128)).sub(ONE);\nvar MathUtil = class {\n static toX64_BN(num) {\n return num.mul(new BN3(2).pow(new BN3(64)));\n }\n static toX64_Decimal(num) {\n return num.mul(decimal_default.pow(2, 64));\n }\n static toX64(num) {\n return new BN3(num.mul(decimal_default.pow(2, 64)).floor().toFixed());\n }\n static fromX64(num) {\n return new decimal_default(num.toString()).mul(decimal_default.pow(2, -64));\n }\n static fromX64_Decimal(num) {\n return num.mul(decimal_default.pow(2, -64));\n }\n static fromX64_BN(num) {\n return num.div(new BN3(2).pow(new BN3(64)));\n }\n static shiftRightRoundUp(n) {\n let result = n.shrn(64);\n if (n.mod(U64_MAX).gt(ZERO)) {\n result = result.add(ONE);\n }\n return result;\n }\n static divRoundUp(n0, n1) {\n const hasRemainder = !n0.mod(n1).eq(ZERO);\n if (hasRemainder) {\n return n0.div(n1).add(new BN3(1));\n } else {\n return n0.div(n1);\n }\n }\n static subUnderflowU128(n0, n1) {\n return n0.add(U128).sub(n1).mod(U128);\n }\n static checkUnsignedSub(n0, n1) {\n const n = n0.sub(n1);\n if (n.isNeg()) {\n throw new ClmmpoolsError(\n \"Unsigned integer sub overflow\",\n \"UnsignedIntegerOverflow\" /* UnsignedIntegerOverflow */\n );\n }\n return n;\n }\n static checkMul(n0, n1, limit) {\n const n = n0.mul(n1);\n if (this.isOverflow(n, limit)) {\n throw new ClmmpoolsError(\n \"Multiplication overflow\",\n \"MultiplicationOverflow\" /* MulOverflow */\n );\n }\n return n;\n }\n static checkMulDivFloor(n0, n1, denom, limit) {\n if (denom.eq(ZERO)) {\n throw new ClmmpoolsError(\"Devide by zero\", \"DivideByZero\" /* DivideByZero */);\n }\n const n = n0.mul(n1).div(denom);\n if (this.isOverflow(n, limit)) {\n throw new ClmmpoolsError(\n \"Multiplication div overflow\",\n \"MulDivOverflow\" /* MulDivOverflow */\n );\n }\n return n;\n }\n static checkMulDivCeil(n0, n1, denom, limit) {\n if (denom.eq(ZERO)) {\n throw new ClmmpoolsError(\"Devide by zero\", \"DivideByZero\" /* DivideByZero */);\n }\n const n = n0.mul(n1).add(denom.sub(ONE)).div(denom);\n if (this.isOverflow(n, limit)) {\n throw new ClmmpoolsError(\n \"Multiplication div overflow\",\n \"MulDivOverflow\" /* MulDivOverflow */\n );\n }\n return n;\n }\n static checkMulDivRound(n0, n1, denom, limit) {\n if (denom.eq(ZERO)) {\n throw new ClmmpoolsError(\"Devide by zero\", \"DivideByZero\" /* DivideByZero */);\n }\n const n = n0.mul(n1.add(denom.shrn(1))).div(denom);\n if (this.isOverflow(n, limit)) {\n throw new ClmmpoolsError(\n \"Multiplication div overflow\",\n \"MulDivOverflow\" /* MulDivOverflow */\n );\n }\n return n;\n }\n static checkMulShiftRight(n0, n1, shift, limit) {\n const n = n0.mul(n1).shrn(shift);\n if (this.isOverflow(n, limit)) {\n throw new ClmmpoolsError(\n \"Multiplication shift right overflow\",\n \"MulShiftRightOverflow\" /* MulShiftRightOverflow */\n );\n }\n return n;\n }\n static checkMulShiftRight64RoundUpIf(n0, n1, limit, roundUp) {\n const p = n0.mul(n1);\n const shoudRoundUp = roundUp && p.and(U64_MAX).gt(ZERO);\n const result = shoudRoundUp ? p.shrn(64).add(ONE) : p.shrn(64);\n if (this.isOverflow(result, limit)) {\n throw new ClmmpoolsError(\n \"Multiplication shift right overflow\",\n \"MulShiftRightOverflow\" /* MulShiftRightOverflow */\n );\n }\n return result;\n }\n static checkMulShiftLeft(n0, n1, shift, limit) {\n const n = n0.mul(n1).shln(shift);\n if (this.isOverflow(n, limit)) {\n throw new ClmmpoolsError(\n \"Multiplication shift left overflow\",\n \"MulShiftLeftOverflow\" /* MulShiftLeftOverflow */\n );\n }\n return n;\n }\n static checkDivRoundUpIf(n0, n1, roundUp) {\n if (n1.eq(ZERO)) {\n throw new ClmmpoolsError(\"Devide by zero\", \"DivideByZero\" /* DivideByZero */);\n }\n if (roundUp) {\n return this.divRoundUp(n0, n1);\n }\n return n0.div(n1);\n }\n static isOverflow(n, bit) {\n return n.gte(TWO.pow(new BN3(bit)));\n }\n};\n\n// src/math/tick.ts\nvar BIT_PRECISION = 14;\nvar LOG_B_2_X32 = \"59543866431248\";\nvar LOG_B_P_ERR_MARGIN_LOWER_X64 = \"184467440737095516\";\nvar LOG_B_P_ERR_MARGIN_UPPER_X64 = \"15793534762490258745\";\nvar TickMath = class {\n static priceToSqrtPriceX64(price, decimalsA, decimalsB) {\n return MathUtil.toX64(\n price.mul(decimal_default.pow(10, decimalsB - decimalsA)).sqrt()\n );\n }\n static sqrtPriceX64ToPrice(sqrtPriceX64, decimalsA, decimalsB) {\n return MathUtil.fromX64(sqrtPriceX64).pow(2).mul(decimal_default.pow(10, decimalsA - decimalsB));\n }\n static tickIndexToSqrtPriceX64(tickIndex) {\n if (tickIndex > 0) {\n return new BN4(tickIndexToSqrtPricePositive(tickIndex));\n } else {\n return new BN4(tickIndexToSqrtPriceNegative(tickIndex));\n }\n }\n static sqrtPriceX64ToTickIndex(sqrtPriceX64) {\n if (sqrtPriceX64.gt(new BN4(MAX_SQRT_PRICE)) || sqrtPriceX64.lt(new BN4(MIN_SQRT_PRICE))) {\n throw new Error(\n \"Provided sqrtPrice is not within the supported sqrtPrice range.\"\n );\n }\n const msb = sqrtPriceX64.bitLength() - 1;\n const adjustedMsb = new BN4(msb - 64);\n const log2pIntegerX32 = signedShiftLeft(adjustedMsb, 32, 128);\n let bit = new BN4(\"8000000000000000\", \"hex\");\n let precision = 0;\n let log2pFractionX64 = new BN4(0);\n let r = msb >= 64 ? sqrtPriceX64.shrn(msb - 63) : sqrtPriceX64.shln(63 - msb);\n while (bit.gt(new BN4(0)) && precision < BIT_PRECISION) {\n r = r.mul(r);\n const rMoreThanTwo = r.shrn(127);\n r = r.shrn(63 + rMoreThanTwo.toNumber());\n log2pFractionX64 = log2pFractionX64.add(bit.mul(rMoreThanTwo));\n bit = bit.shrn(1);\n precision += 1;\n }\n const log2pFractionX32 = log2pFractionX64.shrn(32);\n const log2pX32 = log2pIntegerX32.add(log2pFractionX32);\n const logbpX64 = log2pX32.mul(new BN4(LOG_B_2_X32));\n const tickLow = signedShiftRight(\n logbpX64.sub(new BN4(LOG_B_P_ERR_MARGIN_LOWER_X64)),\n 64,\n 128\n ).toNumber();\n const tickHigh = signedShiftRight(\n logbpX64.add(new BN4(LOG_B_P_ERR_MARGIN_UPPER_X64)),\n 64,\n 128\n ).toNumber();\n if (tickLow === tickHigh) {\n return tickLow;\n } else {\n const derivedTickHighSqrtPriceX64 = TickMath.tickIndexToSqrtPriceX64(tickHigh);\n if (derivedTickHighSqrtPriceX64.lte(sqrtPriceX64)) {\n return tickHigh;\n } else {\n return tickLow;\n }\n }\n }\n static tickIndexToPrice(tickIndex, decimalsA, decimalsB) {\n return TickMath.sqrtPriceX64ToPrice(\n TickMath.tickIndexToSqrtPriceX64(tickIndex),\n decimalsA,\n decimalsB\n );\n }\n static priceToTickIndex(price, decimalsA, decimalsB) {\n return TickMath.sqrtPriceX64ToTickIndex(\n TickMath.priceToSqrtPriceX64(price, decimalsA, decimalsB)\n );\n }\n static priceToInitializableTickIndex(price, decimalsA, decimalsB, tickSpacing) {\n return TickMath.getInitializableTickIndex(\n TickMath.priceToTickIndex(price, decimalsA, decimalsB),\n tickSpacing\n );\n }\n static getStartTickIndex(tickIndex, tickSpacing, offset = 0) {\n const realIndex = Math.floor(tickIndex / tickSpacing / TICK_ARRAY_SIZE);\n const startTickIndex = (realIndex + offset) * tickSpacing * TICK_ARRAY_SIZE;\n const ticksInArray = TICK_ARRAY_SIZE * tickSpacing;\n const minTickIndex = MIN_TICK_INDEX - (MIN_TICK_INDEX % ticksInArray + ticksInArray);\n invariant(\n startTickIndex >= minTickIndex,\n `startTickIndex is too small - - ${startTickIndex}`\n );\n invariant(\n startTickIndex <= MAX_TICK_INDEX,\n `startTickIndex is too large - ${startTickIndex}`\n );\n return startTickIndex;\n }\n static getInitializableTickIndex(tickIndex, tickSpacing) {\n return tickIndex - tickIndex % tickSpacing;\n }\n static getNextInitializableTickIndex(tickIndex, tickSpacing) {\n return TickMath.getInitializableTickIndex(tickIndex, tickSpacing) + tickSpacing;\n }\n static getPrevInitializableTickIndex(tickIndex, tickSpacing) {\n return TickMath.getInitializableTickIndex(tickIndex, tickSpacing) - tickSpacing;\n }\n};\nfunction tickIndexToSqrtPricePositive(tick) {\n let ratio;\n if ((tick & 1) !== 0) {\n ratio = new BN4(\"79232123823359799118286999567\");\n } else {\n ratio = new BN4(\"79228162514264337593543950336\");\n }\n if ((tick & 2) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"79236085330515764027303304731\")),\n 96,\n 256\n );\n }\n if ((tick & 4) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"79244008939048815603706035061\")),\n 96,\n 256\n );\n }\n if ((tick & 8) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"79259858533276714757314932305\")),\n 96,\n 256\n );\n }\n if ((tick & 16) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"79291567232598584799939703904\")),\n 96,\n 256\n );\n }\n if ((tick & 32) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"79355022692464371645785046466\")),\n 96,\n 256\n );\n }\n if ((tick & 64) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"79482085999252804386437311141\")),\n 96,\n 256\n );\n }\n if ((tick & 128) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"79736823300114093921829183326\")),\n 96,\n 256\n );\n }\n if ((tick & 256) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"80248749790819932309965073892\")),\n 96,\n 256\n );\n }\n if ((tick & 512) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"81282483887344747381513967011\")),\n 96,\n 256\n );\n }\n if ((tick & 1024) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"83390072131320151908154831281\")),\n 96,\n 256\n );\n }\n if ((tick & 2048) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"87770609709833776024991924138\")),\n 96,\n 256\n );\n }\n if ((tick & 4096) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"97234110755111693312479820773\")),\n 96,\n 256\n );\n }\n if ((tick & 8192) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"119332217159966728226237229890\")),\n 96,\n 256\n );\n }\n if ((tick & 16384) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"179736315981702064433883588727\")),\n 96,\n 256\n );\n }\n if ((tick & 32768) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"407748233172238350107850275304\")),\n 96,\n 256\n );\n }\n if ((tick & 65536) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"2098478828474011932436660412517\")),\n 96,\n 256\n );\n }\n if ((tick & 131072) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"55581415166113811149459800483533\")),\n 96,\n 256\n );\n }\n if ((tick & 262144) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"38992368544603139932233054999993551\")),\n 96,\n 256\n );\n }\n return signedShiftRight(ratio, 32, 256);\n}\nfunction tickIndexToSqrtPriceNegative(tickIndex) {\n const tick = Math.abs(tickIndex);\n let ratio;\n if ((tick & 1) !== 0) {\n ratio = new BN4(\"18445821805675392311\");\n } else {\n ratio = new BN4(\"18446744073709551616\");\n }\n if ((tick & 2) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"18444899583751176498\")),\n 64,\n 256\n );\n }\n if ((tick & 4) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"18443055278223354162\")),\n 64,\n 256\n );\n }\n if ((tick & 8) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"18439367220385604838\")),\n 64,\n 256\n );\n }\n if ((tick & 16) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"18431993317065449817\")),\n 64,\n 256\n );\n }\n if ((tick & 32) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"18417254355718160513\")),\n 64,\n 256\n );\n }\n if ((tick & 64) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"18387811781193591352\")),\n 64,\n 256\n );\n }\n if ((tick & 128) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"18329067761203520168\")),\n 64,\n 256\n );\n }\n if ((tick & 256) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"18212142134806087854\")),\n 64,\n 256\n );\n }\n if ((tick & 512) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"17980523815641551639\")),\n 64,\n 256\n );\n }\n if ((tick & 1024) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"17526086738831147013\")),\n 64,\n 256\n );\n }\n if ((tick & 2048) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"16651378430235024244\")),\n 64,\n 256\n );\n }\n if ((tick & 4096) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"15030750278693429944\")),\n 64,\n 256\n );\n }\n if ((tick & 8192) !== 0) {\n ratio = signedShiftRight(\n ratio.mul(new BN4(\"12247334978882834399\")),\n 64,\n 256\n );\n }\n if ((tick & 16384) !== 0) {\n ratio = signedShiftRight(ratio.mul(new BN4(\"8131365268884726200\")), 64, 256);\n }\n if ((tick & 32768) !== 0) {\n ratio = signedShiftRight(ratio.mul(new BN4(\"3584323654723342297\")), 64, 256);\n }\n if ((tick & 65536) !== 0) {\n ratio = signedShiftRight(ratio.mul(new BN4(\"696457651847595233\")), 64, 256);\n }\n if ((tick & 131072) !== 0) {\n ratio = signedShiftRight(ratio.mul(new BN4(\"26294789957452057\")), 64, 256);\n }\n if ((tick & 262144) !== 0) {\n ratio = signedShiftRight(ratio.mul(new BN4(\"37481735321082\")), 64, 256);\n }\n return ratio;\n}\nfunction signedShiftLeft(n0, shiftBy, bitWidth) {\n const twosN0 = n0.toTwos(bitWidth).shln(shiftBy);\n twosN0.imaskn(bitWidth + 1);\n return twosN0.fromTwos(bitWidth);\n}\nfunction signedShiftRight(n0, shiftBy, bitWidth) {\n const twoN0 = n0.toTwos(bitWidth).shrn(shiftBy);\n twoN0.imaskn(bitWidth - shiftBy + 1);\n return twoN0.fromTwos(bitWidth - shiftBy);\n}\n\n// src/utils/address-util.ts\nimport { translateAddress as translateAddress2, utils } from \"@project-serum/anchor\";\nvar AddressUtil = class {\n static toPubKey(address) {\n return translateAddress2(address);\n }\n static toPubKeys(addresses) {\n return addresses.map((address) => AddressUtil.toPubKey(address));\n }\n static findProgramAddress(seeds, programId) {\n const [publicKey, bump] = utils.publicKey.findProgramAddressSync(\n seeds,\n programId\n );\n return { publicKey, bump };\n }\n};\n\n// src/utils/tick.ts\nimport { BN as BN5 } from \"bn.js\";\nimport invariant2 from \"tiny-invariant\";\nvar TickUtil = class {\n static isTickInitializable(tick, tickSpacing) {\n return tick % tickSpacing === 0;\n }\n static checkTickInBounds(tick) {\n return tick <= MAX_TICK_INDEX && tick >= MIN_TICK_INDEX;\n }\n static checkIsValidTick(tick_index, tick_spacing) {\n const min = this.getMinIndex(tick_spacing);\n const max = this.getMaxIndex(tick_spacing);\n invariant2(tick_index >= min && tick_index <= max, `tick index invalid`);\n invariant2(tick_index % tick_spacing === 0, `tick index invalid`);\n }\n static getMinIndex(tick_spacing) {\n return MIN_TICK_INDEX + Math.abs(MIN_TICK_INDEX) % tick_spacing;\n }\n static getMaxIndex(tick_spacing) {\n return MAX_TICK_INDEX - MAX_TICK_INDEX % tick_spacing;\n }\n static getArrayIndex(tick_index, tick_spacing) {\n const min = this.getMinIndex(tick_spacing);\n const max = this.getMaxIndex(tick_spacing);\n invariant2(tick_index >= min && tick_index <= max, `tick index invalid`);\n const array_spacing = TICK_ARRAY_SIZE * tick_spacing;\n return Math.floor((tick_index - min) / array_spacing);\n }\n static getOffset(tick_index, tick_spacing) {\n const array_index = this.getArrayIndex(tick_index, tick_spacing);\n const start_index = this.getStartTickIndex(array_index, tick_spacing);\n return Math.floor((tick_index - start_index) / tick_spacing);\n }\n static getStartTickIndex(array_index, tick_spacing) {\n const min = this.getMinIndex(tick_spacing);\n const array_spacing = TICK_ARRAY_SIZE * tick_spacing;\n return min + array_spacing * array_index;\n }\n static getEndTickIndex(array_index, tick_spacing) {\n const start_index = this.getStartTickIndex(array_index, tick_spacing);\n return start_index + (TICK_ARRAY_SIZE - 1) * tick_spacing;\n }\n static isMinTickArray(array_index, tick_spacing) {\n return this.getStartTickIndex(array_index, tick_spacing) === this.getMinIndex(tick_spacing);\n }\n static isMaxTickArray(array_index, tick_spacing) {\n return this.getEndTickIndex(array_index, tick_spacing) === this.getMaxIndex(tick_spacing);\n }\n static isInArray(array_index, tick_spacing, tick_index) {\n return tick_index >= this.getStartTickIndex(array_index, tick_spacing) && tick_index <= this.getEndTickIndex(array_index, tick_spacing);\n }\n static crossUpdate(tick, pool, aToB) {\n const liquidity = pool.liquidity;\n const signedLiquidityChange = aToB ? tick.liquidityNet.mul(new BN5(-1)) : tick.liquidityNet;\n const currentLiquidity = signedLiquidityChange.gt(ZERO) ? liquidity.add(signedLiquidityChange) : liquidity.sub(signedLiquidityChange.abs());\n return currentLiquidity;\n }\n static async getTickDataFromIndex(fetcher, clmmpool2, programId, tick_index, tick_spacing) {\n const arrayIndex = this.getArrayIndex(tick_index, tick_spacing);\n const offset = this.getOffset(tick_index, tick_spacing);\n const tickArrayAddress = PDAUtil.getTickArrayPDA(\n programId,\n clmmpool2,\n arrayIndex\n ).publicKey;\n const tickArray = await fetcher.getTickArray(tickArrayAddress, false);\n const tickData = tickArray.ticks[offset];\n return tickData;\n }\n};\n\n// src/utils/pda.ts\nvar CLMM_CONFIG_SEED = \"clmmconfig\";\nvar PDA_CLMMPOOL_SEED = \"clmmpool\";\nvar PDA_POSITION_SEED = \"position\";\nvar PDA_TICK_ARRAY_SEED = \"tick_array\";\nvar PDA_TICK_ARRAY_MAP_SEED = \"tick_array_map\";\nvar PDA_FEE_TIER_SEED = \"fee_tier\";\nvar PDA_PARTNER_SEED = \"partner\";\nvar PDA_METADATA_SEED = \"metadata\";\nvar PDA_CLMMPOOL_METADATA_SEED = \"clmmpool_metadata\";\nvar PDA_EDITION_SEED = \"edition\";\nvar PDAUtil = class {\n static getClmmConfigPDA(programId) {\n return AddressUtil.findProgramAddress(\n [Buffer.from(CLMM_CONFIG_SEED)],\n programId\n );\n }\n static getClmmpoolPDA(programId, clmmConfigKey, tokenMintAKey, tokenMintBKey, tickSpacing) {\n const [mintA, mintB] = tokenMintAKey.toBuffer() < tokenMintBKey.toBuffer() ? [tokenMintAKey, tokenMintBKey] : [tokenMintBKey, tokenMintAKey];\n return AddressUtil.findProgramAddress(\n [\n Buffer.from(PDA_CLMMPOOL_SEED),\n clmmConfigKey.toBuffer(),\n mintA.toBuffer(),\n mintB.toBuffer(),\n new BN6(tickSpacing).toArrayLike(Buffer, \"le\", 2)\n ],\n programId\n );\n }\n static getPositionPDA(programId, positionNFTMintKey) {\n return AddressUtil.findProgramAddress(\n [Buffer.from(PDA_POSITION_SEED), positionNFTMintKey.toBuffer()],\n programId\n );\n }\n static getPositionMetadataPDA(positionMintKey) {\n return AddressUtil.findProgramAddress(\n [\n Buffer.from(PDA_METADATA_SEED),\n METADATA_PROGRAM_ADDRESS.toBuffer(),\n positionMintKey.toBuffer()\n ],\n METADATA_PROGRAM_ADDRESS\n );\n }\n static getPositionEditionPDA(positionMintKey) {\n return AddressUtil.findProgramAddress(\n [\n Buffer.from(PDA_METADATA_SEED),\n METADATA_PROGRAM_ADDRESS.toBuffer(),\n positionMintKey.toBuffer(),\n Buffer.from(PDA_EDITION_SEED)\n ],\n METADATA_PROGRAM_ADDRESS\n );\n }\n static getTickArrayPDA(programId, clmmpoolKey, arrayIndex) {\n return AddressUtil.findProgramAddress(\n [\n Buffer.from(PDA_TICK_ARRAY_SEED),\n clmmpoolKey.toBuffer(),\n new BN6(arrayIndex).toArrayLike(Buffer, \"le\", 2)\n ],\n programId\n );\n }\n static getTickArrayMapPDA(programId, clmmpoolKey) {\n return AddressUtil.findProgramAddress(\n [Buffer.from(PDA_TICK_ARRAY_MAP_SEED), clmmpoolKey.toBuffer()],\n programId\n );\n }\n static getTickArrayFromTickIndexPDA(tickIndex, tickSpacing, clmmpool2, programId) {\n const arrayIndex = TickUtil.getArrayIndex(tickIndex, tickSpacing);\n return PDAUtil.getTickArrayPDA(\n AddressUtil.toPubKey(programId),\n AddressUtil.toPubKey(clmmpool2),\n arrayIndex\n );\n }\n static getTickArrayFromSqrtPricePDA(sqrtPriceX64, tickSpacing, clmmpool2, programId) {\n const tickIndex = TickMath.sqrtPriceX64ToTickIndex(sqrtPriceX64);\n return PDAUtil.getTickArrayFromTickIndexPDA(\n tickIndex,\n tickSpacing,\n clmmpool2,\n programId\n );\n }\n static getFeeTierPDA(programId, clmmConfigKey, tickSpacing) {\n return AddressUtil.findProgramAddress(\n [\n Buffer.from(PDA_FEE_TIER_SEED),\n clmmConfigKey.toBuffer(),\n new BN6(tickSpacing).toArrayLike(Buffer, \"le\", 2)\n ],\n programId\n );\n }\n static getPartnerPDA(programId, baseKey) {\n return AddressUtil.findProgramAddress(\n [Buffer.from(PDA_PARTNER_SEED), baseKey.toBuffer()],\n programId\n );\n }\n static getClmmpoolMetadataPDA(programId, clmmpoolKey) {\n return AddressUtil.findProgramAddress(\n [\n Buffer.from(PDA_CLMMPOOL_METADATA_SEED),\n clmmpoolKey.toBuffer()\n ],\n programId\n );\n }\n};\n\n// src/math/swap.ts\nimport BN7 from \"bn.js\";\nfunction adjustForSlippage(n, { numerator, denominator }, adjustUp) {\n if (adjustUp) {\n return n.mul(denominator.add(numerator)).div(denominator);\n } else {\n return n.mul(denominator).div(denominator.add(numerator));\n }\n}\nvar SwapUtils = class {\n static getDefaultSqrtPriceLimit(a2b) {\n return new BN7(a2b ? MIN_SQRT_PRICE : MAX_SQRT_PRICE);\n }\n static getDefaultOtherAmountThreshold(amountSpecifiedIsInput) {\n return amountSpecifiedIsInput ? ZERO : U64_MAX;\n }\n static getTickArrayPublicKeys(currentTickIndex, tickSpacing, programId, clmmpoolAddress) {\n const tickArrayAddresses = [];\n for (let i = 0; i < TICK_ARRAY_MAP_MAX_BIT_INDEX; i++) {\n let arrayIndex;\n try {\n arrayIndex = TickUtil.getArrayIndex(currentTickIndex, tickSpacing);\n } catch {\n return tickArrayAddresses;\n }\n const pda = PDAUtil.getTickArrayPDA(\n programId,\n clmmpoolAddress,\n arrayIndex\n );\n tickArrayAddresses.push(pda.publicKey);\n }\n return tickArrayAddresses;\n }\n static async getTickArrays(currentTickIndex, tickSpacing, programId, clmmpoolAddress, fetcher, refresh) {\n const addresses = SwapUtils.getTickArrayPublicKeys(\n currentTickIndex,\n tickSpacing,\n programId,\n clmmpoolAddress\n );\n const data = await fetcher.listTickArrays(addresses, refresh);\n return addresses.map((addr, index) => {\n return {\n address: addr,\n data: data[index]\n };\n });\n }\n static calculateSwapAmountsFromQuote(amount, estAmountIn, estAmountOut, slippageTolerance, amountSpecifiedIsInput) {\n if (amountSpecifiedIsInput) {\n return {\n amount,\n amountLimit: adjustForSlippage(estAmountOut, slippageTolerance, false)\n };\n } else {\n return {\n amount,\n amountLimit: adjustForSlippage(estAmountIn, slippageTolerance, true)\n };\n }\n }\n};\n\n// src/math/clmm.ts\nfunction getDeltaA(sqrtPrice0, sqrtPrice1, liquidity, roundUp) {\n const sqrtPriceDiff = sqrtPrice0.gt(sqrtPrice1) ? sqrtPrice0.sub(sqrtPrice1) : sqrtPrice1.sub(sqrtPrice0);\n const numberator = liquidity.mul(sqrtPriceDiff).shln(64);\n const denomminator = sqrtPrice0.mul(sqrtPrice1);\n const quotient = numberator.div(denomminator);\n const remainder = numberator.mod(denomminator);\n const result = roundUp && !remainder.eq(ZERO) ? quotient.add(new BN8(1)) : quotient;\n if (MathUtil.isOverflow(result, 64)) {\n throw new ClmmpoolsError(\n \"Result large than u64 max\",\n \"IntegerDowncastOverflow\" /* IntegerDowncastOverflow */\n );\n }\n return result;\n}\nfunction getDeltaB(sqrtPrice0, sqrtPrice1, liquidity, roundUp) {\n const sqrtPriceDiff = sqrtPrice0.gt(sqrtPrice1) ? sqrtPrice0.sub(sqrtPrice1) : sqrtPrice1.sub(sqrtPrice0);\n if (liquidity.eq(ZERO) || sqrtPriceDiff.eq(ZERO)) {\n return ZERO;\n }\n const p = liquidity.mul(sqrtPriceDiff);\n const shoudRoundUp = roundUp && p.and(U64_MAX).gt(ZERO);\n const result = shoudRoundUp ? p.shrn(64).add(ONE) : p.shrn(64);\n if (MathUtil.isOverflow(result, 64)) {\n throw new ClmmpoolsError(\n \"Result large than u64 max\",\n \"IntegerDowncastOverflow\" /* IntegerDowncastOverflow */\n );\n }\n return result;\n}\nfunction getNextSqrtPriceAUp(sqrtPrice, liquidity, amount, byAmountIn) {\n if (amount.eq(ZERO)) {\n return sqrtPrice;\n }\n const numberator = MathUtil.checkMulShiftLeft(sqrtPrice, liquidity, 64, 256);\n const liquidityShl64 = liquidity.shln(64);\n const product = MathUtil.checkMul(sqrtPrice, amount, 256);\n if (!byAmountIn && liquidityShl64.lte(product)) {\n throw new ClmmpoolsError(\n \"getNextSqrtPriceAUp - Unable to divide liquidityShl64 by product\",\n \"DivideByZero\" /* DivideByZero */\n );\n }\n const nextSqrtPrice = byAmountIn ? MathUtil.checkDivRoundUpIf(numberator, liquidityShl64.add(product), true) : MathUtil.checkDivRoundUpIf(numberator, liquidityShl64.sub(product), true);\n if (nextSqrtPrice.lt(new BN8(MIN_SQRT_PRICE))) {\n throw new ClmmpoolsError(\n \"getNextSqrtPriceAUp - Next sqrt price less than min sqrt price\",\n \"TokenAmountMinSubceeded \" /* TokenAmountMinSubceeded */\n );\n }\n if (nextSqrtPrice.gt(new BN8(MAX_SQRT_PRICE))) {\n throw new ClmmpoolsError(\n \"getNextSqrtPriceAUp - Next sqrt price greater than max sqrt price\",\n \"TokenAmountMaxExceeded\" /* TokenAmountMaxExceeded */\n );\n }\n return nextSqrtPrice;\n}\nfunction getNextSqrtPriceBDown(sqrtPrice, liquidity, amount, byAmountIn) {\n const deltaSqrtPrice = MathUtil.checkDivRoundUpIf(\n amount.shln(64),\n liquidity,\n !byAmountIn\n );\n const nextSqrtPrice = byAmountIn ? sqrtPrice.add(deltaSqrtPrice) : sqrtPrice.sub(deltaSqrtPrice);\n if (nextSqrtPrice.lt(new BN8(MIN_SQRT_PRICE)) || nextSqrtPrice.gt(new BN8(MAX_SQRT_PRICE))) {\n throw new ClmmpoolsError(\n \"getNextSqrtPriceAUp - Next sqrt price out of bounds\",\n \"SqrtPriceOutOfBounds\" /* SqrtPriceOutOfBounds */\n );\n }\n return nextSqrtPrice;\n}\nfunction getNextSqrtPriceFromInput(sqrtPrice, liquidity, amount, aToB) {\n return aToB ? getNextSqrtPriceAUp(sqrtPrice, liquidity, amount, true) : getNextSqrtPriceBDown(sqrtPrice, liquidity, amount, true);\n}\nfunction getNextSqrtPriceFromOutput(sqrtPrice, liquidity, amount, aToB) {\n return aToB ? getNextSqrtPriceBDown(sqrtPrice, liquidity, amount, false) : getNextSqrtPriceAUp(sqrtPrice, liquidity, amount, false);\n}\nfunction getDeltaUpFromInput(currentSqrtPrice, targetSqrtPrice, liquidity, aToB) {\n return aToB ? getDeltaA(targetSqrtPrice, currentSqrtPrice, liquidity, true) : getDeltaB(currentSqrtPrice, targetSqrtPrice, liquidity, true);\n}\nfunction getDeltaDownFromOutput(currentSqrtPrice, targetSqrtPrice, liquidity, aTob) {\n return aTob ? getDeltaB(targetSqrtPrice, currentSqrtPrice, liquidity, false) : getDeltaA(currentSqrtPrice, targetSqrtPrice, liquidity, false);\n}\nfunction computeSwapStep(currentSqrtPrice, targetSqrtPrice, liquidity, amount, feeRate, byAmountIn) {\n if (liquidity === ZERO) {\n return {\n amountIn: ZERO_BN,\n amountOut: ZERO_BN,\n nextSqrtPrice: targetSqrtPrice,\n feeAmount: ZERO_BN\n };\n }\n const aToB = currentSqrtPrice.gte(targetSqrtPrice);\n let amountIn;\n let amountOut;\n let nextSqrtPrice;\n let feeAmount;\n if (byAmountIn) {\n const amountRemain = MathUtil.checkMulDivFloor(\n amount,\n MathUtil.checkUnsignedSub(FEE_RATE_DENOMINATOR, feeRate),\n FEE_RATE_DENOMINATOR,\n 64\n );\n const maxAmountIn = getDeltaUpFromInput(\n currentSqrtPrice,\n targetSqrtPrice,\n liquidity,\n aToB\n );\n if (maxAmountIn.gt(amountRemain)) {\n amountIn = amountRemain;\n feeAmount = MathUtil.checkUnsignedSub(amount, amountRemain);\n nextSqrtPrice = getNextSqrtPriceFromInput(\n currentSqrtPrice,\n liquidity,\n amountRemain,\n aToB\n );\n } else {\n amountIn = maxAmountIn;\n feeAmount = MathUtil.checkMulDivCeil(\n amountIn,\n feeRate,\n FEE_RATE_DENOMINATOR.sub(feeRate),\n 64\n );\n nextSqrtPrice = targetSqrtPrice;\n }\n amountOut = getDeltaDownFromOutput(\n currentSqrtPrice,\n nextSqrtPrice,\n liquidity,\n aToB\n );\n } else {\n const maxAmountOut = getDeltaDownFromOutput(\n currentSqrtPrice,\n targetSqrtPrice,\n liquidity,\n aToB\n );\n if (maxAmountOut.gt(amount)) {\n amountOut = amount;\n nextSqrtPrice = getNextSqrtPriceFromOutput(\n currentSqrtPrice,\n liquidity,\n amount,\n aToB\n );\n } else {\n amountOut = maxAmountOut;\n nextSqrtPrice = targetSqrtPrice;\n }\n amountIn = getDeltaUpFromInput(\n currentSqrtPrice,\n nextSqrtPrice,\n liquidity,\n aToB\n );\n feeAmount = MathUtil.checkMulDivCeil(\n amountIn,\n feeRate,\n FEE_RATE_DENOMINATOR.sub(feeRate),\n 64\n );\n }\n return {\n amountIn,\n amountOut,\n nextSqrtPrice,\n feeAmount\n };\n}\nfunction computeSwap(aToB, byAmountIn, amount, poolData, swapTicks, clmmpool2, tickArrayMap) {\n let remainerAmount = amount;\n let currentLiquidity = poolData.liquidity;\n let currentSqrtPrice = poolData.currentSqrtPrice;\n const swapResult = {\n amountIn: ZERO,\n amountOut: ZERO,\n feeAmount: ZERO,\n refAmount: ZERO,\n nextSqrtPrice: ZERO,\n crossTickNum: 0,\n swapTickArrays: []\n };\n let targetSqrtPrice, signedLiquidityChange;\n const sqrtPriceLimit = SwapUtils.getDefaultSqrtPriceLimit(aToB);\n let firstTickIndex = 0;\n if (aToB) {\n firstTickIndex = poolData.currentTickIndex;\n } else {\n firstTickIndex = poolData.currentTickIndex + 1;\n }\n for (const tick of swapTicks) {\n if (aToB) {\n if (poolData.currentTickIndex < tick.index || tick.sqrtPrice.eq(currentSqrtPrice)) {\n continue;\n }\n } else {\n if (poolData.currentTickIndex >= tick.index) {\n continue;\n }\n }\n if (tick === null) {\n continue;\n }\n if (aToB && sqrtPriceLimit.gt(tick.sqrtPrice) || !aToB && sqrtPriceLimit.lt(tick.sqrtPrice)) {\n targetSqrtPrice = sqrtPriceLimit;\n } else {\n targetSqrtPrice = tick.sqrtPrice;\n }\n const stepResult = computeSwapStep(\n currentSqrtPrice,\n targetSqrtPrice,\n currentLiquidity,\n remainerAmount,\n new BN8(poolData.feeRate),\n byAmountIn\n );\n if (!stepResult.amountIn.eq(ZERO)) {\n remainerAmount = byAmountIn ? remainerAmount.sub(stepResult.amountIn.add(stepResult.feeAmount)) : remainerAmount.sub(stepResult.amountOut);\n }\n swapResult.amountIn = swapResult.amountIn.add(stepResult.amountIn);\n swapResult.amountOut = swapResult.amountOut.add(stepResult.amountOut);\n swapResult.feeAmount = swapResult.feeAmount.add(stepResult.feeAmount);\n if (stepResult.nextSqrtPrice.eq(tick.sqrtPrice)) {\n signedLiquidityChange = aToB ? tick.liquidityNet.mul(new BN8(-1)) : tick.liquidityNet;\n currentLiquidity = signedLiquidityChange.gt(ZERO) ? currentLiquidity.add(signedLiquidityChange) : currentLiquidity.sub(signedLiquidityChange.abs());\n currentSqrtPrice = tick.sqrtPrice;\n } else {\n currentSqrtPrice = stepResult.nextSqrtPrice;\n }\n swapResult.crossTickNum++;\n if (remainerAmount.eq(ZERO)) {\n break;\n }\n }\n swapResult.amountIn = swapResult.amountIn.add(swapResult.feeAmount);\n swapResult.nextSqrtPrice = currentSqrtPrice;\n if (tickArrayMap && clmmpool2) {\n const startArrayIndex = TickUtil.getArrayIndex(\n firstTickIndex,\n poolData.tickSpacing\n );\n const swapTickArrays = getSwapTickArrays(\n clmmpool2,\n aToB,\n startArrayIndex,\n tickArrayMap\n );\n swapResult.swapTickArrays = swapTickArrays;\n }\n return swapResult;\n}\nfunction getSwapTickArrays(clmmpool2, a2b, startArrayIndex, tickArrayMap) {\n let arrayIndexs = [];\n for (let index = 0; index < 868; index++) {\n let word = tickArrayMap.bitmap[index];\n for (let shift = 0; shift < 8; shift++) {\n if ((word >> shift & 1) > 0) {\n arrayIndexs.push(true);\n } else {\n arrayIndexs.push(false);\n }\n }\n }\n const array_count = 3;\n const tickArrays = [];\n if (a2b) {\n for (let index = startArrayIndex; index >= TICK_ARRAY_MAP_MIN_BIT_INDEX; index -= 1) {\n if (arrayIndexs[index]) {\n const tickArray_i = PDAUtil.getTickArrayPDA(\n CLMMPOOL_PROGRAM_ID,\n clmmpool2,\n index\n );\n tickArrays.push(tickArray_i.publicKey);\n }\n if (tickArrays.length >= array_count) {\n break;\n }\n }\n } else {\n for (let index = startArrayIndex; index < TICK_ARRAY_MAP_MAX_BIT_INDEX; index += 1) {\n if (arrayIndexs[index]) {\n const tickArray_i = PDAUtil.getTickArrayPDA(\n CLMMPOOL_PROGRAM_ID,\n clmmpool2,\n index\n );\n tickArrays.push(tickArray_i.publicKey);\n }\n if (tickArrays.length >= array_count) {\n break;\n }\n }\n }\n return tickArrays;\n}\n\n// src/math/percentage.ts\nimport { u64 as u642 } from \"@solana/spl-token\";\n\n// src/index.ts\ndecimal_default.set({ precision: 40, toExpPos: 40, toExpNeg: -20, rounding: 1 });\nexport {\n AccountName,\n CLMMPOOLS_CONFIG,\n CLMMPOOL_PROGRAM_ID,\n FEE_RATE_DENOMINATOR,\n IDL,\n MAX_SQRT_PRICE,\n MAX_TICK_ARRAY,\n MAX_TICK_INDEX,\n METADATA_PROGRAM_ADDRESS,\n MINT_WRAPPER_PROGRAM_ID,\n MIN_SQRT_PRICE,\n MIN_TICK_INDEX,\n PDAUtil,\n POSITION_NFT_UPDATE_AUTHORITY,\n PROTOCOL_FEE_RATE_DENOMINATOR,\n TICK_ARRAY_AMOUNT,\n TICK_ARRAY_MAP_MAX_BIT_INDEX,\n TICK_ARRAY_MAP_MIN_BIT_INDEX,\n TICK_ARRAY_SIZE,\n TickMath,\n TickUtil,\n ZERO_BN,\n computeSwap\n};\n//# sourceMappingURL=index.mjs.map","import{Buffer as t}from\"buffer\";import{sendAndConfirmRawTransaction as e,PublicKey as n,Transaction as r,TransactionInstruction as i,SystemProgram as o,SYSVAR_RENT_PUBKEY as s}from\"@solana/web3.js\";import*as a from\"@solana/web3.js\";export{a as web3};import c from\"bn.js\";export{default as BN}from\"bn.js\";import u from\"bs58\";import d from\"camelcase\";import{sha256 as l}from\"js-sha256\";import*as h from\"@project-serum/borsh\";import*as p from\"base64-js\";import*as f from\"assert\";import m from\"assert\";import{inflate as y}from\"pako\";import g from\"eventemitter3\";class w{constructor(t,e,n){this.connection=t,this.wallet=e,this.opts=n}static defaultOptions(){return{preflightCommitment:\"processed\",commitment:\"processed\"}}static local(t,e){throw new Error(\"Provider local is not available on browser.\")}static env(){throw new Error(\"Provider env is not available on browser.\")}async send(t,n,r){void 0===n&&(n=[]),void 0===r&&(r=this.opts),t.feePayer=this.wallet.publicKey,t.recentBlockhash=(await this.connection.getRecentBlockhash(r.preflightCommitment)).blockhash,await this.wallet.signTransaction(t),n.filter((t=>void 0!==t)).forEach((e=>{t.partialSign(e)}));const i=t.serialize();return await e(this.connection,i,r)}async sendAll(t,n){void 0===n&&(n=this.opts);const r=await this.connection.getRecentBlockhash(n.preflightCommitment);let i=t.map((t=>{let e=t.tx,n=t.signers;return void 0===n&&(n=[]),e.feePayer=this.wallet.publicKey,e.recentBlockhash=r.blockhash,n.filter((t=>void 0!==t)).forEach((t=>{e.partialSign(t)})),e}));const o=await this.wallet.signAllTransactions(i),s=[];for(let t=0;tvoid 0!==t)).forEach((e=>{t.partialSign(e)})),await async function(t,e,n){e.recentBlockhash=await t._recentBlockhash(t._disableBlockhashCaching);const r=e.serializeMessage(),i=e._serialize(r).toString(\"base64\"),o=[i,{encoding:\"base64\",commitment:n}],s=await t._rpcRequest(\"simulateTransaction\",o);if(s.error)throw new Error(\"failed to simulate transaction: \"+s.error.message);return s.result}(this.connection,t,null!==(o=null!==(i=n.commitment)&&void 0!==i?i:this.opts.commitment)&&void 0!==o?o:\"processed\")}}function v(t){_=t}function b(){return null===_?w.local():_}let _=null;class A extends Error{constructor(t){super(t),this.name=\"IdlError\"}}class E extends Error{constructor(t,e,...n){super(...n),this.code=t,this.msg=e}static parse(t,e){const n=t.toString();let r,i;if(n.includes(\"custom program error:\")){let t=n.split(\"custom program error: \");if(2!==t.length)return null;r=t[1]}else{const t=n.match(/\"Custom\":([0-9]+)}/g);if(!t||t.length>1)return null;r=t[0].match(/([0-9]+)/g)[0]}try{i=parseInt(r)}catch(t){return null}let o=e.get(i);return void 0!==o?new E(i,o,i+\": \"+o):(o=I.get(i),void 0!==o?new E(i,o,i+\": \"+o):null)}toString(){return this.msg}}const I=new Map([[100,\"8 byte instruction identifier not provided\"],[101,\"Fallback functions are not supported\"],[102,\"The program could not deserialize the given instruction\"],[103,\"The program could not serialize the given instruction\"],[1e3,\"The program was compiled without idl instructions\"],[1001,\"The transaction was given an invalid program for the IDL instruction\"],[2e3,\"A mut constraint was violated\"],[2001,\"A has_one constraint was violated\"],[2002,\"A signer constraint was violated\"],[2003,\"A raw constraint was violated\"],[2004,\"An owner constraint was violated\"],[2005,\"A rent exempt constraint was violated\"],[2006,\"A seeds constraint was violated\"],[2007,\"An executable constraint was violated\"],[2008,\"A state constraint was violated\"],[2009,\"An associated constraint was violated\"],[2010,\"An associated init constraint was violated\"],[2011,\"A close constraint was violated\"],[2012,\"An address constraint was violated\"],[2013,\"Expected zero account discriminant\"],[2014,\"A token mint constraint was violated\"],[2015,\"A token owner constraint was violated\"],[2016,\"A mint mint authority constraint was violated\"],[2017,\"A mint freeze authority constraint was violated\"],[2018,\"A mint decimals constraint was violated\"],[2019,\"A space constraint was violated\"],[3e3,\"The account discriminator was already set on this account\"],[3001,\"No 8 byte discriminator was found on the account\"],[3002,\"8 byte discriminator did not match what was expected\"],[3003,\"Failed to deserialize the account\"],[3004,\"Failed to serialize the account\"],[3005,\"Not enough account keys given to the instruction\"],[3006,\"The given account is not mutable\"],[3007,\"The given account is owned by a different program than expected\"],[3008,\"Program ID was not as expected\"],[3009,\"Program account is not executable\"],[3010,\"The given account did not sign\"],[3011,\"The given account is not owned by the system program\"],[3012,\"The program expected this account to be already initialized\"],[3013,\"The given account is not a program data account\"],[3014,\"The given account is not the associated token account\"],[4e3,\"The given state account does not have the correct address\"],[4100,\"The declared program id does not match the actual program id\"],[5e3,\"The API being used is deprecated and should no longer be used\"]]);\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar S=function(){return S=Object.assign||function(t){for(var e,n=1,r=arguments.length;nt.name===r));if(1!==i.length)throw new A(`Type not found: ${JSON.stringify(t)}`);return P.typeDefLayout(i[0],e,n)}if(\"array\"in t.type){let r=t.type.array[0],i=t.type.array[1],o=P.fieldLayout({name:void 0,type:r},e);return h.array(o,i,n)}throw new Error(`Not yet implemented: ${t}`)}}static typeDefLayout(t,e=[],n){if(\"struct\"===t.type.kind){const r=t.type.fields.map((t=>P.fieldLayout(t,e)));return h.struct(r,n)}if(\"enum\"===t.type.kind){let r=t.type.variants.map((t=>{const n=d(t.name);if(void 0===t.fields)return h.struct([],n);const r=t.fields.map((t=>{if(!t.hasOwnProperty(\"name\"))throw new Error(\"Tuple enum variants not yet implemented.\");return P.fieldLayout(t,e)}));return h.struct(r,n)}));return void 0!==n?h.rustEnum(r).replicate(n):h.rustEnum(r,n)}throw new Error(`Unknown type kint: ${t}`)}}class O{constructor(t){this.idl=t,this.ixLayout=O.parseIxLayout(t);const e=new Map;t.instructions.forEach((t=>{const n=D(\"global\",t.name);e.set(u.encode(n),{layout:this.ixLayout.get(t.name),name:t.name})})),t.state&&t.state.methods.map((t=>{const n=D(\"state\",t.name);e.set(u.encode(n),{layout:this.ixLayout.get(t.name),name:t.name})})),this.sighashLayouts=e}encode(t,e){return this._encode(\"global\",t,e)}encodeState(t,e){return this._encode(\"state\",t,e)}_encode(e,n,r){const i=t.alloc(1e3),o=d(n),s=this.ixLayout.get(o);if(!s)throw new Error(`Unknown method: ${o}`);const a=s.encode(r,i),c=i.slice(0,a);return t.concat([D(e,n),c])}static parseIxLayout(t){const e=(t.state?t.state.methods:[]).map((e=>{let n=e.args.map((e=>{var n,r;return P.fieldLayout(e,Array.from([...null!==(n=t.accounts)&&void 0!==n?n:[],...null!==(r=t.types)&&void 0!==r?r:[]]))}));const r=d(e.name);return[r,h.struct(n,r)]})).concat(t.instructions.map((e=>{let n=e.args.map((e=>{var n,r;return P.fieldLayout(e,Array.from([...null!==(n=t.accounts)&&void 0!==n?n:[],...null!==(r=t.types)&&void 0!==r?r:[]]))}));const r=d(e.name);return[r,h.struct(n,r)]})));return new Map(e)}decode(e,n=\"hex\"){\"string\"==typeof e&&(e=\"hex\"===n?t.from(e,\"hex\"):u.decode(e));let r=u.encode(e.slice(0,8)),i=e.slice(8);const o=this.sighashLayouts.get(r);return o?{data:o.layout.decode(i),name:o.name}:null}format(t,e){return z.format(t,e,this.idl)}}class z{static format(t,e,n){const r=n.instructions.filter((e=>t.name===e.name))[0];if(void 0===r)return console.error(\"Invalid instruction given\"),null;const i=r.args.map((e=>({name:e.name,type:z.formatIdlType(e.type),data:z.formatIdlData(e,t.data[e.name],n.types)}))),o=z.flattenIdlAccounts(r.accounts);return{args:i,accounts:e.map(((t,e)=>e`;if(\"option\"in t)return`Option<${this.formatIdlType(t.option)}>`;if(\"defined\"in t)return t.defined;if(\"array\"in t)return`Array<${t.array[0]}; ${t.array[1]}>`;throw new Error(`Unknown IDL type: ${t}`)}static formatIdlData(t,e,n){if(\"string\"==typeof t.type)return e.toString();if(t.type.hasOwnProperty(\"vec\"))return\"[\"+e.map((e=>this.formatIdlData({name:\"\",type:t.type.vec},e))).join(\", \")+\"]\";if(t.type.hasOwnProperty(\"option\"))return null===e?\"null\":this.formatIdlData({name:\"\",type:t.type.option},e);if(t.type.hasOwnProperty(\"defined\")){if(void 0===n)throw new Error(\"User defined types not provided\");const r=n.filter((e=>e.name===t.type.defined));if(1!==r.length)throw new Error(`Type not found: ${t.type.defined}`);return z.formatIdlDataDefined(r[0],e,n)}return\"unknown\"}static formatIdlDataDefined(t,e,n){if(\"struct\"===t.type.kind){const r=t.type;return\"{ \"+Object.keys(e).map((t=>{const i=r.fields.filter((e=>e.name===t))[0];if(void 0===i)throw new Error(\"Unable to find type\");return t+\": \"+z.formatIdlData(i,e[t],n)})).join(\", \")+\" }\"}if(0===t.type.variants.length)return\"{}\";if(t.type.variants[0].name){const r=t.type.variants,i=Object.keys(e)[0],o=e[i],s=Object.keys(o).map((t=>{var e;const s=o[t],a=null===(e=r[i])||void 0===e?void 0:e.filter((e=>e.name===t))[0];if(void 0===a)throw new Error(\"Unable to find variant\");return t+\": \"+z.formatIdlData(a,s,n)})).join(\", \"),a=d(i,{pascalCase:!0});return 0===s.length?a:`${a} { ${s} }`}return\"Tuple formatting not yet implemented\"}static flattenIdlAccounts(t,e){return t.map((t=>{const n=function(t){const e=t.replace(/([A-Z])/g,\" $1\");return e.charAt(0).toUpperCase()+e.slice(1)}(t.name);if(t.hasOwnProperty(\"accounts\")){const r=e?`${e} > ${n}`:n;return z.flattenIdlAccounts(t.accounts,r)}return{...t,name:e?`${e} > ${n}`:n}})).flat()}}function D(e,n){var r;let i=`${e}:${void 0===r&&(r={}),B(n,S({delimiter:\"_\"},r))}`;return t.from(l.digest(i)).slice(0,8)}function U(t,e){if(\"enum\"===e.type.kind){let n=e.type.variants.map((e=>void 0===e.fields?0:e.fields.map((e=>{if(\"object\"!=typeof e||!(\"name\"in e))throw new Error(\"Tuple enum variants not yet implemented.\");return j(t,e.type)})).reduce(((t,e)=>t+e))));return Math.max(...n)+1}return void 0===e.type.fields?0:e.type.fields.map((e=>j(t,e.type))).reduce(((t,e)=>t+e),0)}function j(t,e){var n,r;switch(e){case\"bool\":case\"u8\":case\"i8\":case\"bytes\":case\"string\":return 1;case\"i16\":case\"u16\":return 2;case\"u32\":case\"i32\":case\"f32\":return 4;case\"u64\":case\"i64\":case\"f64\":return 8;case\"u128\":case\"i128\":return 16;case\"publicKey\":return 32;default:if(\"vec\"in e)return 1;if(\"option\"in e)return 1+j(t,e.option);if(\"coption\"in e)return 4+j(t,e.coption);if(\"defined\"in e){const i=null!==(r=null===(n=t.types)||void 0===n?void 0:n.filter((t=>t.name===e.defined)))&&void 0!==r?r:[];if(1!==i.length)throw new A(`Type not found: ${JSON.stringify(e)}`);return U(t,i[0])}if(\"array\"in e){let n=e.array[0],r=e.array[1];return j(t,n)*r}throw new Error(`Invalid type ${JSON.stringify(e)}`)}}const C=8;class ${constructor(t){if(void 0===t.accounts)return void(this.accountLayouts=new Map);const e=t.accounts.map((e=>[e.name,P.typeDefLayout(e,t.types)]));this.accountLayouts=new Map(e),this.idl=t}async encode(e,n){const r=t.alloc(1e3),i=this.accountLayouts.get(e);if(!i)throw new Error(`Unknown account: ${e}`);const o=i.encode(n,r);let s=r.slice(0,o),a=$.accountDiscriminator(e);return t.concat([a,s])}decode(t,e){if($.accountDiscriminator(t).compare(e.slice(0,8)))throw new Error(\"Invalid account discriminator\");return this.decodeUnchecked(t,e)}decodeUnchecked(t,e){const n=e.slice(8),r=this.accountLayouts.get(t);if(!r)throw new Error(`Unknown account: ${t}`);return r.decode(n)}memcmp(e,n){const r=$.accountDiscriminator(e);return{offset:0,bytes:u.encode(n?t.concat([r,n]):r)}}size(t){var e;return 8+(null!==(e=U(this.idl,t))&&void 0!==e?e:0)}static accountDiscriminator(e){return t.from(l.digest(`account:${d(e,{pascalCase:!0})}`)).slice(0,8)}}class V{constructor(t){if(void 0===t.events)return void(this.layouts=new Map);const e=t.events.map((e=>{let n={name:e.name,type:{kind:\"struct\",fields:e.fields.map((t=>({name:t.name,type:t.type})))}};return[e.name,P.typeDefLayout(n,t.types)]}));this.layouts=new Map(e),this.discriminators=new Map(void 0===t.events?[]:t.events.map((t=>[p.fromByteArray(R(t.name)),t.name])))}decode(e){let n;try{n=t.from(p.toByteArray(e))}catch(t){return null}const r=p.fromByteArray(n.slice(0,8)),i=this.discriminators.get(r);if(void 0===i)return null;const o=this.layouts.get(i);if(!o)throw new Error(`Unknown event: ${i}`);return{data:o.decode(n.slice(8)),name:i}}}function R(e){return t.from(l.digest(`event:${e}`)).slice(0,8)}const K=new Set([\"anchor-deprecated-state\",\"debug-logs\"]),N=new Map;function F(t){return void 0!==N.get(t)}var W=Object.freeze({__proto__:null,set:function(t){if(!K.has(t))throw new Error(\"Invalid feature\");N.set(t,!0)},isSet:F});class q{constructor(t){if(void 0===t.state)throw new Error(\"Idl state not defined.\");this.layout=P.typeDefLayout(t.state.struct,t.types)}async encode(e,n){const r=t.alloc(1e3),i=this.layout.encode(n,r),o=await G(e),s=r.slice(0,i);return t.concat([o,s])}decode(t){const e=t.slice(8);return this.layout.decode(e)}}async function G(e){let n=F(\"anchor-deprecated-state\")?\"account\":\"state\";return t.from(l.digest(`${n}:${e}`)).slice(0,8)}class H{constructor(t){this.instruction=new O(t),this.accounts=new $(t),this.events=new V(t),t.state&&(this.state=new q(t))}}var J=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function Z(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}class Q{constructor(t,e){if(!Number.isInteger(t))throw new TypeError(\"span must be an integer\");this.span=t,this.property=e}makeDestinationObject(){return{}}decode(t,e){throw new Error(\"Layout is abstract\")}encode(t,e,n){throw new Error(\"Layout is abstract\")}getSpan(t,e){if(0>this.span)throw new RangeError(\"indeterminate span\");return this.span}replicate(t){const e=Object.create(this.constructor.prototype);return Object.assign(e,this),e.property=t,e}fromArray(t){}}var X=Q;class Y extends Q{isCount(){throw new Error(\"ExternalLayout is abstract\")}}class tt extends Y{constructor(t,e,n){if(!(t instanceof Q))throw new TypeError(\"layout must be a Layout\");if(void 0===e)e=0;else if(!Number.isInteger(e))throw new TypeError(\"offset must be integer or undefined\");super(t.span,n||t.property),this.layout=t,this.offset=e}isCount(){return this.layout instanceof et||this.layout instanceof nt}decode(t,e){return void 0===e&&(e=0),this.layout.decode(t,e+this.offset)}encode(t,e,n){return void 0===n&&(n=0),this.layout.encode(t,e,n+this.offset)}}class et extends Q{constructor(t,e){if(super(t,e),6t&&e instanceof Q),!0))throw new TypeError(\"fields must be array of Layout instances\");\"boolean\"==typeof e&&void 0===n&&(n=e,e=void 0);for(const e of t)if(0>e.span&&void 0===e.property)throw new Error(\"fields cannot contain unnamed variable-length layout\");let r=-1;try{r=t.reduce(((t,e)=>t+e.getSpan()),0)}catch(t){}super(r,e),this.fields=t,this.decodePrefixes=!!n}getSpan(t,e){if(0<=this.span)return this.span;void 0===e&&(e=0);let n=0;try{n=this.fields.reduce(((n,r)=>{const i=r.getSpan(t,e);return e+=i,n+i}),0)}catch(t){throw new RangeError(\"indeterminate span\")}return n}decode(t,e){void 0===e&&(e=0);const n=this.makeDestinationObject();for(const r of this.fields)if(void 0!==r.property&&(n[r.property]=r.decode(t,e)),e+=r.getSpan(t,e),this.decodePrefixes&&t.length===e)break;return n}encode(t,e,n){void 0===n&&(n=0);const r=n;let i=0,o=0;for(const r of this.fields){let s=r.span;if(o=0s&&(s=r.getSpan(e,n)))}i=n,n+=s}return i+o-r}fromArray(t){const e=this.makeDestinationObject();for(const n of this.fields)void 0!==n.property&&0n.span?e=-1:0<=e&&(e+=n.span)}}}class st{constructor(t){this.property=t}decode(){throw new Error(\"UnionDiscriminator is abstract\")}encode(){throw new Error(\"UnionDiscriminator is abstract\")}}class at extends st{constructor(t,e){if(!(t instanceof Y&&t.isCount()))throw new TypeError(\"layout must be an unsigned integer ExternalLayout\");super(e||t.property||\"variant\"),this.layout=t}decode(t,e){return this.layout.decode(t,e)}encode(t,e,n){return this.layout.encode(t,e,n)}}class ct extends Q{constructor(t,e,n){const r=t instanceof et||t instanceof nt;if(r)t=new at(new tt(t));else if(t instanceof Y&&t.isCount())t=new at(t);else if(!(t instanceof st))throw new TypeError(\"discr must be a UnionDiscriminator or an unsigned integer layout\");if(void 0===e&&(e=null),!(null===e||e instanceof Q))throw new TypeError(\"defaultLayout must be null or a Layout\");if(null!==e){if(0>e.span)throw new Error(\"defaultLayout must have constant span\");void 0===e.property&&(e=e.replicate(\"content\"))}let i=-1;e&&(i=e.span,0<=i&&r&&(i+=t.layout.span)),super(i,n),this.discriminator=t,this.usesPrefixDiscriminator=r,this.defaultLayout=e,this.registry={};let o=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(t){return o(t)},this.configGetSourceVariant=function(t){o=t.bind(this)}}getSpan(t,e){if(0<=this.span)return this.span;void 0===e&&(e=0);const n=this.getVariant(t,e);if(!n)throw new Error(\"unable to determine span for unrecognized variant\");return n.getSpan(t,e)}defaultGetSourceVariant(t){if(t.hasOwnProperty(this.discriminator.property)){if(this.defaultLayout&&t.hasOwnProperty(this.defaultLayout.property))return;const e=this.registry[t[this.discriminator.property]];if(e&&(!e.layout||t.hasOwnProperty(e.property)))return e}else for(const e in this.registry){const n=this.registry[e];if(t.hasOwnProperty(n.property))return n}throw new Error(\"unable to infer src variant\")}decode(t,e){let n;void 0===e&&(e=0);const r=this.discriminator,i=r.decode(t,e);let o=this.registry[i];if(void 0===o){let s=0;o=this.defaultLayout,this.usesPrefixDiscriminator&&(s=r.layout.span),n=this.makeDestinationObject(),n[r.property]=i,n[o.property]=this.defaultLayout.decode(t,e+s)}else n=o.decode(t,e);return n}encode(t,e,n){void 0===n&&(n=0);const r=this.getSourceVariant(t);if(void 0===r){const r=this.discriminator,i=this.defaultLayout;let o=0;return this.usesPrefixDiscriminator&&(o=r.layout.span),r.encode(t[r.property],e,n),o+i.encode(t[i.property],e,n+o)}return r.encode(t,e,n)}addVariant(t,e,n){const r=new ut(this,t,e,n);return this.registry[t]=r,r}getVariant(t,e){let n=t;return Buffer.isBuffer(t)&&(void 0===e&&(e=0),n=this.discriminator.decode(t,e)),this.registry[n]}}class ut extends Q{constructor(t,e,n,r){if(!(t instanceof ct))throw new TypeError(\"union must be a Union\");if(!Number.isInteger(e)||0>e)throw new TypeError(\"variant must be a (non-negative) integer\");if(\"string\"==typeof n&&void 0===r&&(r=n,n=null),n){if(!(n instanceof Q))throw new TypeError(\"layout must be a Layout\");if(null!==t.defaultLayout&&0<=n.span&&n.span>t.defaultLayout.span)throw new Error(\"variant span exceeds span of containing union\");if(\"string\"!=typeof r)throw new TypeError(\"variant must have a String property\")}let i=t.span;0>t.span&&(i=n?n.span:0,0<=i&&t.usesPrefixDiscriminator&&(i+=t.discriminator.layout.span)),super(i,r),this.union=t,this.variant=e,this.layout=n||null}getSpan(t,e){if(0<=this.span)return this.span;void 0===e&&(e=0);let n=0;return this.union.usesPrefixDiscriminator&&(n=this.union.discriminator.layout.span),n+this.layout.getSpan(t,e+n)}decode(t,e){const n=this.makeDestinationObject();if(void 0===e&&(e=0),this!==this.union.getVariant(t,e))throw new Error(\"variant mismatch\");let r=0;return this.union.usesPrefixDiscriminator&&(r=this.union.discriminator.layout.span),this.layout?n[this.property]=this.layout.decode(t,e+r):this.property?n[this.property]=!0:this.union.usesPrefixDiscriminator&&(n[this.union.discriminator.property]=this.variant),n}encode(t,e,n){void 0===n&&(n=0);let r=0;if(this.union.usesPrefixDiscriminator&&(r=this.union.discriminator.layout.span),this.layout&&!t.hasOwnProperty(this.property))throw new TypeError(\"variant lacks property \"+this.property);this.union.discriminator.encode(this.variant,e,n);let i=r;if(this.layout&&(this.layout.encode(t[this.property],e,n+r),i+=this.layout.getSpan(e,n+r),0<=this.union.span&&i>this.union.span))throw new Error(\"encoded variant overruns containing union\");return i}fromArray(t){if(this.layout)return this.layout.fromArray(t)}}class dt extends Q{constructor(t,e){if(!(t instanceof Y&&t.isCount()||Number.isInteger(t)&&0<=t))throw new TypeError(\"length must be positive integer or an unsigned integer ExternalLayout\");let n=-1;t instanceof Y||(n=t),super(n,e),this.length=t}getSpan(t,e){let n=this.span;return 0>n&&(n=this.length.decode(t,e)),n}decode(t,e){void 0===e&&(e=0);let n=this.span;return 0>n&&(n=this.length.decode(t,e)),t.slice(e,e+n)}encode(t,e,n){let r=this.length;if(this.length instanceof Y&&(r=t.length),!Buffer.isBuffer(t)||r!==t.length)throw new TypeError((i=\"Blob.encode\",((o=this).property?i+\"[\"+o.property+\"]\":i)+\" requires (length \"+r+\") Buffer as src\"));var i,o;if(n+r>e.length)throw new RangeError(\"encoding overruns Buffer\");return e.write(t.toString(\"hex\"),n,r,\"hex\"),this.length instanceof Y&&this.length.encode(r,e,n),r}}var lt=t=>new et(1,t),ht=t=>new it(t),pt=(t,e,n)=>new ot(t,e,n),ft=(t,e)=>new dt(t,e);class mt{constructor(t){}encode(t,e){switch(d(t)){case\"initializeMint\":return function({decimals:t,mintAuthority:e,freezeAuthority:r}){return _t({initializeMint:{decimals:t,mintAuthority:e.toBuffer(),freezeAuthorityOption:!!r,freezeAuthority:(r||n.default).toBuffer()}})}(e);case\"initializeAccount\":return _t({initializeAccount:{}});case\"initializeMultisig\":return function({m:t}){return _t({initializeMultisig:{m:t}})}(e);case\"transfer\":return function({amount:t}){return _t({transfer:{amount:t}})}(e);case\"approve\":return function({amount:t}){return _t({approve:{amount:t}})}(e);case\"revoke\":return _t({revoke:{}});case\"setAuthority\":return function({authorityType:t,newAuthority:e}){return _t({setAuthority:{authorityType:t,newAuthority:e}})}(e);case\"mintTo\":return function({amount:t}){return _t({mintTo:{amount:t}})}(e);case\"burn\":return function({amount:t}){return _t({burn:{amount:t}})}(e);case\"closeAccount\":return _t({closeAccount:{}});case\"freezeAccount\":return _t({freezeAccount:{}});case\"thawAccount\":return _t({thawAccount:{}});case\"transferChecked\":return function({amount:t,decimals:e}){return _t({transferChecked:{amount:t,decimals:e}})}(e);case\"approvedChecked\":return function({amount:t,decimals:e}){return _t({approveChecked:{amount:t,decimals:e}})}(e);case\"mintToChecked\":return function({amount:t,decimals:e}){return _t({mintToChecked:{amount:t,decimals:e}})}(e);case\"burnChecked\":return function({amount:t,decimals:e}){return _t({burnChecked:{amount:t,decimals:e}})}(e);case\"intializeAccount2\":return function({authority:t}){return _t({initilaizeAccount2:{authority:t}})}(e);case\"syncNative\":return _t({syncNative:{}});case\"initializeAccount3\":return function({authority:t}){return _t({initializeAccount3:{authority:t}})}(e);case\"initializeMultisig2\":return function({m:t}){return _t({initializeMultisig2:{m:t}})}(e);case\"initializeMint2\":return function({decimals:t,mintAuthority:e,freezeAuthority:n}){return _t({encodeInitializeMint2:{decimals:t,mintAuthority:e,freezeAuthority:n}})}(e);default:throw new Error(`Invalid instruction: ${t}`)}}encodeState(t,e){throw new Error(\"SPL token does not have state\")}}const yt=(gt=lt(\"instruction\"),new ct(gt,wt,vt));var gt,wt,vt;function bt(t){return ft(32,t)}function _t(t){let e=Buffer.alloc(At),n=yt.encode(t,e);return e.slice(0,n)}yt.addVariant(0,pt([lt(\"decimals\"),ft(32,\"mintAuthority\"),lt(\"freezeAuthorityOption\"),bt(\"freezeAuthority\")]),\"initializeMint\"),yt.addVariant(1,pt([]),\"initializeAccount\"),yt.addVariant(2,pt([lt(\"m\")]),\"initializeMultisig\"),yt.addVariant(3,pt([ht(\"amount\")]),\"transfer\"),yt.addVariant(4,pt([ht(\"amount\")]),\"approve\"),yt.addVariant(5,pt([]),\"revoke\"),yt.addVariant(6,pt([lt(\"authorityType\"),lt(\"newAuthorityOption\"),bt(\"newAuthority\")]),\"setAuthority\"),yt.addVariant(7,pt([ht(\"amount\")]),\"mintTo\"),yt.addVariant(8,pt([ht(\"amount\")]),\"burn\"),yt.addVariant(9,pt([]),\"closeAccount\"),yt.addVariant(10,pt([]),\"freezeAccount\"),yt.addVariant(11,pt([]),\"thawAccount\"),yt.addVariant(12,pt([ht(\"amount\"),lt(\"decimals\")]),\"transferChecked\"),yt.addVariant(13,pt([ht(\"amount\"),lt(\"decimals\")]),\"approvedChecked\"),yt.addVariant(14,pt([ht(\"amount\"),lt(\"decimals\")]),\"mintToChecked\"),yt.addVariant(15,pt([ht(\"amount\"),lt(\"decimals\")]),\"burnedChecked\"),yt.addVariant(16,pt([bt(\"authority\")]),\"InitializeAccount2\"),yt.addVariant(17,pt([]),\"syncNative\"),yt.addVariant(18,pt([bt(\"authority\")]),\"initializeAccount3\"),yt.addVariant(19,pt([lt(\"m\")]),\"initializeMultisig2\"),yt.addVariant(20,pt([lt(\"decimals\"),bt(\"mintAuthority\"),lt(\"freezeAuthorityOption\"),bt(\"freezeAuthority\")]),\"initializeMint2\");const At=Math.max(...Object.values(yt.registry).map((t=>t.span)));class Et{constructor(t){}encode(t,e){throw new Error(\"SPL token does not have state\")}decode(t){throw new Error(\"SPL token does not have state\")}}function It(t){return new kt(ft(8),(t=>Bt.fromBuffer(t)),(t=>t.toBuffer()),t)}function St(t){return new kt(ft(32),(t=>new n(t)),(t=>t.toBuffer()),t)}function xt(t,e){return new Mt(t,e)}class kt extends X{constructor(t,e,n,r){super(t.span,r),this.layout=t,this.decoder=e,this.encoder=n}decode(t,e){return this.decoder(this.layout.decode(t,e))}encode(t,e,n){return this.layout.encode(this.encoder(t),e,n)}getSpan(t,e){return this.layout.getSpan(t,e)}}class Mt extends X{constructor(t,e){super(-1,e),this.layout=t,this.discriminator=(t=>new et(4,t))()}encode(t,e,n=0){return null==t?this.layout.span+this.discriminator.encode(0,e,n):(this.discriminator.encode(1,e,n),this.layout.encode(t,e,n+4)+4)}decode(t,e=0){const n=this.discriminator.decode(t,e);if(0===n)return null;if(1===n)return this.layout.decode(t,e+4);throw new Error(\"Invalid coption \"+this.property)}getSpan(t,e=0){return this.layout.getSpan(t,e+4)+4}}function Lt(t){if(0===t)return!1;if(1===t)return!0;throw new Error(\"Invalid bool: \"+t)}function Tt(t){return t?1:0}class Bt extends c{toBuffer(){const t=super.toArray().reverse(),e=Buffer.from(t);if(8===e.length)return e;if(e.length>=8)throw new Error(\"u64 too large\");const n=Buffer.alloc(8);return e.copy(n),n}static fromBuffer(t){if(8!==t.length)throw new Error(`Invalid buffer length: ${t.length}`);return new Bt([...t].reverse().map((t=>`00${t.toString(16)}`.slice(-2))).join(\"\"),16)}}class Pt{constructor(t){this.idl=t}async encode(t,e){switch(t){case\"Token\":{const t=Buffer.alloc(165),n=zt.encode(e,t);return t.slice(0,n)}case\"Mint\":{const t=Buffer.alloc(82),n=Ot.encode(e,t);return t.slice(0,n)}default:throw new Error(`Invalid account name: ${t}`)}}decode(t,e){return this.decodeUnchecked(t,e)}decodeUnchecked(t,e){switch(t){case\"Token\":return function(t){return zt.decode(t)}(e);case\"Mint\":return function(t){return Ot.decode(t)}(e);default:throw new Error(`Invalid account name: ${t}`)}}memcmp(t,e){switch(t){case\"Token\":return{dataSize:165};case\"Mint\":return{dataSize:82};default:throw new Error(`Invalid account name: ${t}`)}}size(t){var e;return null!==(e=U(this.idl,t))&&void 0!==e?e:0}}const Ot=pt([xt(St(),\"mintAuthority\"),It(\"supply\"),lt(\"decimals\"),function(t){return new kt(lt(),Lt,Tt,t)}(\"isInitialized\"),xt(St(),\"freezeAuthority\")]),zt=pt([St(\"mint\"),St(\"authority\"),It(\"amount\"),xt(St(),\"delegate\"),lt(\"state\"),xt(It(),\"isNative\"),It(\"delegatedAmount\"),xt(St(),\"closeAuthority\")]);class Dt{constructor(t){}decode(t){throw new Error(\"SPL token program does not have events\")}}class Ut{constructor(t){this.instruction=new mt(t),this.accounts=new Pt(t),this.events=new Dt(t),this.state=new Et(t)}}var jt=Object.freeze({__proto__:null,hash:function(t){return l(t)}});function Ct(t){const e=new Map;return t.errors&&t.errors.forEach((t=>{var n;let r=null!==(n=t.msg)&&void 0!==n?n:t.name;e.set(t.code,r)})),e}function $t(t,...e){if(t.args.length!=e.length)throw new Error(\"Invalid argument length\");const n={};let r=0;return t.args.forEach((t=>{n[t.name]=e[r],r+=1})),n}function Vt(t,e={}){t.forEach((t=>{if(\"accounts\"in t)Vt(t.accounts,e[t.name]);else if(void 0===e[t.name])throw new Error(`Invalid arguments: ${t.name} not provided.`)}))}function Rt(t){return t instanceof n?t:new n(t)}async function Kt(t,e,n){if(e.length<=99)return await Nt(t,e,n);{const o=(r=e,i=99,Array.apply(0,new Array(Math.ceil(r.length/i))).map(((t,e)=>r.slice(e*i,(e+1)*i))));return(await Promise.all(o.map((e=>Nt(t,e,n))))).flat()}var r,i}async function Nt(e,r,i){const o=null!=i?i:e.commitment,s=[r.map((t=>t.toBase58()))];o&&s.push({commitment:o});const a=await e._rpcRequest(\"getMultipleAccounts\",s);if(a.error)throw new Error(\"failed to get info about accounts \"+r.map((t=>t.toBase58())).join(\", \")+\": \"+a.error.message);m(void 0!==a.result);const c=[];for(const e of a.result.value){let r=null;if(null!==e){if(a.result.value){const{executable:i,owner:o,lamports:s,data:a}=e;m(\"base64\"===a[1]),r={executable:i,owner:new n(o),lamports:s,data:t.from(a[0],\"base64\")}}if(null===r)throw new Error(\"Invalid response\");c.push(r)}else c.push(null)}return c.map(((t,e)=>null===t?null:{publicKey:r[e],account:t}))}var Ft=Object.freeze({__proto__:null,invoke:async function(t,e,n,o){t=Rt(t),o||(o=b());const s=new r;return s.add(new i({programId:t,keys:null!=e?e:[],data:n})),await o.send(s)},getMultipleAccounts:Kt});function Wt(e,r,i){const o=t.concat([e.toBuffer(),t.from(r),i.toBuffer()]),s=l.digest(o);return new n(t.from(s))}function qt(e,r){let i=t.alloc(0);e.forEach((function(e){if(e.length>32)throw new TypeError(\"Max seed length exceeded\");i=t.concat([i,Ht(e)])})),i=t.concat([i,r.toBuffer(),t.from(\"ProgramDerivedAddress\")]);let o=l(new Uint8Array(i)),s=new c(o,16).toArray(void 0,32);if(n.isOnCurve(new Uint8Array(s)))throw new Error(\"Invalid seeds, address must fall off the curve\");return new n(s)}function Gt(e,n){let r,i=255;for(;0!=i;){try{r=qt(e.concat(t.from([i])),n)}catch(t){if(t instanceof TypeError)throw t;i--;continue}return[r,i]}throw new Error(\"Unable to find a viable program address nonce\")}const Ht=e=>e instanceof t?e:e instanceof Uint8Array?t.from(e.buffer,e.byteOffset,e.byteLength):t.from(e);async function Jt(e,...r){let i=[t.from([97,110,99,104,111,114])];r.forEach((e=>{i.push(e instanceof t?e:Rt(e).toBuffer())}));const[o]=await n.findProgramAddress(i,Rt(e));return o}var Zt=Object.freeze({__proto__:null,createWithSeedSync:Wt,createProgramAddressSync:qt,findProgramAddressSync:Gt,associated:Jt});var Qt=Object.freeze({__proto__:null,encode:function(t){return t.reduce(((t,e)=>t+e.toString(16).padStart(2,\"0\")),\"0x\")},decode:function(e){0===e.indexOf(\"0x\")&&(e=e.substr(2)),e.length%2==1&&(e=\"0\"+e);let n=e.match(/.{2}/g);return null===n?t.from([]):t.from(n.map((t=>parseInt(t,16))))}});function Xt(t){return new TextDecoder(\"utf-8\").decode(t)}function Yt(t){return(new TextEncoder).encode(t)}var te=Object.freeze({__proto__:null,decode:Xt,encode:Yt});var ee=Object.freeze({__proto__:null,encode:function(t){return u.encode(t)},decode:function(t){return u.decode(t)}});var ne=Object.freeze({__proto__:null,encode:function(t){return p.fromByteArray(t)},decode:function(e){return t.from(p.toByteArray(e))}}),re=Object.freeze({__proto__:null,hex:Qt,utf8:te,bs58:ee,base64:ne});const ie=new n(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"),oe=new n(\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\");var se=Object.freeze({__proto__:null,TOKEN_PROGRAM_ID:ie,ASSOCIATED_PROGRAM_ID:oe,associatedAddress:async function({mint:t,owner:e}){return(await n.findProgramAddress([e.toBuffer(),ie.toBuffer(),t.toBuffer()],oe))[0]}}),ae={exports:{}};!function(t,e){var n=\"undefined\"!=typeof self?self:J,r=function(){function t(){this.fetch=!1,this.DOMException=n.DOMException}return t.prototype=n,new t}();!function(t){!function(e){var n=\"URLSearchParams\"in t,r=\"Symbol\"in t&&\"iterator\"in Symbol,i=\"FileReader\"in t&&\"Blob\"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),o=\"FormData\"in t,s=\"ArrayBuffer\"in t;if(s)var a=[\"[object Int8Array]\",\"[object Uint8Array]\",\"[object Uint8ClampedArray]\",\"[object Int16Array]\",\"[object Uint16Array]\",\"[object Int32Array]\",\"[object Uint32Array]\",\"[object Float32Array]\",\"[object Float64Array]\"],c=ArrayBuffer.isView||function(t){return t&&a.indexOf(Object.prototype.toString.call(t))>-1};function u(t){if(\"string\"!=typeof t&&(t=String(t)),/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError(\"Invalid character in header field name\");return t.toLowerCase()}function d(t){return\"string\"!=typeof t&&(t=String(t)),t}function l(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return r&&(e[Symbol.iterator]=function(){return e}),e}function h(t){this.map={},t instanceof h?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}function p(t){if(t.bodyUsed)return Promise.reject(new TypeError(\"Already read\"));t.bodyUsed=!0}function f(t){return new Promise((function(e,n){t.onload=function(){e(t.result)},t.onerror=function(){n(t.error)}}))}function m(t){var e=new FileReader,n=f(e);return e.readAsArrayBuffer(t),n}function y(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function g(){return this.bodyUsed=!1,this._initBody=function(t){var e;this._bodyInit=t,t?\"string\"==typeof t?this._bodyText=t:i&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:o&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:n&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():s&&i&&((e=t)&&DataView.prototype.isPrototypeOf(e))?(this._bodyArrayBuffer=y(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):s&&(ArrayBuffer.prototype.isPrototypeOf(t)||c(t))?this._bodyArrayBuffer=y(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText=\"\",this.headers.get(\"content-type\")||(\"string\"==typeof t?this.headers.set(\"content-type\",\"text/plain;charset=UTF-8\"):this._bodyBlob&&this._bodyBlob.type?this.headers.set(\"content-type\",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set(\"content-type\",\"application/x-www-form-urlencoded;charset=UTF-8\"))},i&&(this.blob=function(){var t=p(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error(\"could not read FormData body as blob\");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?p(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(m)}),this.text=function(){var t=p(this);if(t)return t;if(this._bodyBlob)return function(t){var e=new FileReader,n=f(e);return e.readAsText(t),n}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),n=new Array(e.length),r=0;r-1?r:n),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,(\"GET\"===this.method||\"HEAD\"===this.method)&&i)throw new TypeError(\"Body not allowed for GET or HEAD requests\");this._initBody(i)}function b(t){var e=new FormData;return t.trim().split(\"&\").forEach((function(t){if(t){var n=t.split(\"=\"),r=n.shift().replace(/\\+/g,\" \"),i=n.join(\"=\").replace(/\\+/g,\" \");e.append(decodeURIComponent(r),decodeURIComponent(i))}})),e}function _(t,e){e||(e={}),this.type=\"default\",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText=\"statusText\"in e?e.statusText:\"OK\",this.headers=new h(e.headers),this.url=e.url||\"\",this._initBody(t)}v.prototype.clone=function(){return new v(this,{body:this._bodyInit})},g.call(v.prototype),g.call(_.prototype),_.prototype.clone=function(){return new _(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new h(this.headers),url:this.url})},_.error=function(){var t=new _(null,{status:0,statusText:\"\"});return t.type=\"error\",t};var A=[301,302,303,307,308];_.redirect=function(t,e){if(-1===A.indexOf(e))throw new RangeError(\"Invalid status code\");return new _(null,{status:e,headers:{location:t}})},e.DOMException=t.DOMException;try{new e.DOMException}catch(t){e.DOMException=function(t,e){this.message=t,this.name=e;var n=Error(t);this.stack=n.stack},e.DOMException.prototype=Object.create(Error.prototype),e.DOMException.prototype.constructor=e.DOMException}function E(t,n){return new Promise((function(r,o){var s=new v(t,n);if(s.signal&&s.signal.aborted)return o(new e.DOMException(\"Aborted\",\"AbortError\"));var a=new XMLHttpRequest;function c(){a.abort()}a.onload=function(){var t,e,n={status:a.status,statusText:a.statusText,headers:(t=a.getAllResponseHeaders()||\"\",e=new h,t.replace(/\\r?\\n[\\t ]+/g,\" \").split(/\\r?\\n/).forEach((function(t){var n=t.split(\":\"),r=n.shift().trim();if(r){var i=n.join(\":\").trim();e.append(r,i)}})),e)};n.url=\"responseURL\"in a?a.responseURL:n.headers.get(\"X-Request-URL\");var i=\"response\"in a?a.response:a.responseText;r(new _(i,n))},a.onerror=function(){o(new TypeError(\"Network request failed\"))},a.ontimeout=function(){o(new TypeError(\"Network request failed\"))},a.onabort=function(){o(new e.DOMException(\"Aborted\",\"AbortError\"))},a.open(s.method,s.url,!0),\"include\"===s.credentials?a.withCredentials=!0:\"omit\"===s.credentials&&(a.withCredentials=!1),\"responseType\"in a&&i&&(a.responseType=\"blob\"),s.headers.forEach((function(t,e){a.setRequestHeader(e,t)})),s.signal&&(s.signal.addEventListener(\"abort\",c),a.onreadystatechange=function(){4===a.readyState&&s.signal.removeEventListener(\"abort\",c)}),a.send(void 0===s._bodyInit?null:s._bodyInit)}))}E.polyfill=!0,t.fetch||(t.fetch=E,t.Headers=h,t.Request=v,t.Response=_),e.Headers=h,e.Request=v,e.Response=_,e.fetch=E,Object.defineProperty(e,\"__esModule\",{value:!0})}({})}(r),r.fetch.ponyfill=!0,delete r.fetch.polyfill;var i=r;(e=i.fetch).default=i.fetch,e.fetch=i.fetch,e.Headers=i.Headers,e.Request=i.Request,e.Response=i.Response,t.exports=e}(ae,ae.exports);var ce=Z(ae.exports);async function ue(t,e){const n=await t.getAccountInfo(e);if(null===n)throw new Error(\"program account not found\");const{program:r}=le(n.data),i=await t.getAccountInfo(r.programdataAddress);if(null===i)throw new Error(\"program data account not found\");const{programData:o}=le(i.data);return o}const de=h.rustEnum([h.struct([],\"uninitialized\"),h.struct([h.option(h.publicKey(),\"authorityAddress\")],\"buffer\"),h.struct([h.publicKey(\"programdataAddress\")],\"program\"),h.struct([h.u64(\"slot\"),h.option(h.publicKey(),\"upgradeAuthorityAddress\")],\"programData\")],void 0,h.u32());function le(t){return de.decode(t)}var he=Object.freeze({__proto__:null,verifiedBuild:async function(t,e,n=5){const r=`https://anchor.projectserum.com/api/v0/program/${e.toString()}/latest?limit=${n}`,[i,o]=await Promise.all([ue(t,e),ce(r)]),s=(await o.json()).filter((t=>!t.aborted&&\"Built\"===t.state&&\"Verified\"===t.verified));if(0===s.length)return null;const a=s[0];return i.slot.toNumber()!==a.verified_slot?null:a},fetchData:ue,decodeUpgradeableLoaderState:le}),pe=Object.freeze({__proto__:null,sha256:jt,rpc:Ft,publicKey:Zt,bytes:re,token:se,features:W,registry:he});const fe=h.struct([h.publicKey(\"authority\"),h.vecU8(\"data\")]);function me(t,e){var n,r;let i={};const o=t.args?t.args.length:0;if(e.length>o){if(e.length!==o+1)throw new Error(`provided too many arguments ${e} to instruction ${null==t?void 0:t.name} expecting: ${null!==(r=null===(n=t.args)||void 0===n?void 0:n.map((t=>t.name)))&&void 0!==r?r:[]}`);i=e.pop()}return[e,i]}class ye{static build(t,e,n){if(\"_inner\"===t.name)throw new A(\"the _inner name is reserved\");const r=(...o)=>{const[s,a]=me(t,[...o]);Vt(t.accounts,a.accounts);const c=r.accounts(a.accounts);return void 0!==a.remainingAccounts&&c.push(...a.remainingAccounts),F(\"debug-logs\")&&console.log(\"Outgoing account metas:\",c),new i({keys:c,programId:n,data:e(t.name,$t(t,...s))})};return r.accounts=e=>ye.accountsArray(e,t.accounts,t.name),r}static accountsArray(t,e,n){return t?e.map((e=>{if(void 0!==(\"accounts\"in e?e.accounts:void 0)){const r=t[e.name];return ye.accountsArray(r,e.accounts,n).flat()}{const r=e;let i;try{i=Rt(t[e.name])}catch(t){throw new Error(`Wrong input type for account \"${e.name}\" in the instruction accounts object${void 0!==n?' for instruction \"'+n+'\"':\"\"}. Expected PublicKey or string.`)}return{pubkey:i,isWritable:r.isMut,isSigner:r.isSigner}}})).flat():[]}}class ge{static build(t,e,n,r){return async(...i)=>{const o=e(...i),[,s]=me(t,[...i]);try{return await r.send(o,s.signers,s.options)}catch(t){F(\"debug-logs\")&&console.log(\"Translating error:\",t);let e=E.parse(t,n);if(null===e)throw t;throw e}}}}class we{static build(t,e){return(...n)=>{var i,o,s;const[,a]=me(t,[...n]),c=new r;if(a.preInstructions&&a.instructions)throw new Error(\"instructions is deprecated, use preInstructions\");return null===(i=a.preInstructions)||void 0===i||i.forEach((t=>c.add(t))),null===(o=a.instructions)||void 0===o||o.forEach((t=>c.add(t))),c.add(e(...n)),null===(s=a.postInstructions)||void 0===s||s.forEach((t=>c.add(t))),c}}}class ve{constructor(t,e,n=b(),r=new H(t)){this.provider=n,this.coder=r,this._idl=t,this._programId=e,this._address=be(e),this._sub=null;const[i,s,a]=(()=>{var i;let s={},a={},c={};return null===(i=t.state)||void 0===i||i.methods.forEach((i=>{const u=ye.build(i,((t,e)=>r.instruction.encodeState(t,e)),e);u.accounts=t=>{const r=function(t,e,n,r){if(\"new\"===n.name){const[n]=Gt([],t);return[{pubkey:e.wallet.publicKey,isWritable:!1,isSigner:!0},{pubkey:be(t),isWritable:!0,isSigner:!1},{pubkey:n,isWritable:!1,isSigner:!1},{pubkey:o.programId,isWritable:!1,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1}]}return Vt(n.accounts,r),[{pubkey:be(t),isWritable:!0,isSigner:!1}]}(e,n,i,t);return r.concat(ye.accountsArray(t,i.accounts,i.name))};const l=we.build(i,u),h=ge.build(i,l,Ct(t),n),p=d(i.name);s[p]=u,a[p]=l,c[p]=h})),[s,a,c]})();this.instruction=i,this.transaction=s,this.rpc=a}get programId(){return this._programId}async fetch(){const t=this.address(),e=await this.provider.connection.getAccountInfo(t);if(null===e)throw new Error(`Account does not exist ${t.toString()}`);const n=this._idl.state;if(!n)throw new Error(\"State is not specified in IDL.\");if((await G(n.struct.name)).compare(e.data.slice(0,8)))throw new Error(\"Invalid account discriminator\");return this.coder.state.decode(e.data)}address(){return this._address}subscribe(t){if(null!==this._sub)return this._sub.ee;const e=new g,n=this.provider.connection.onAccountChange(this.address(),(t=>{const n=this.coder.state.decode(t.data);e.emit(\"change\",n)}),t);return this._sub={ee:e,listener:n},e}unsubscribe(){null!==this._sub&&this.provider.connection.removeAccountChangeListener(this._sub.listener).then((async()=>{this._sub=null})).catch(console.error)}}function be(t){let[e]=Gt([],t);return Wt(e,\"unversioned\",t)}class _e{constructor(t,e,n,r,i){this._idlAccount=e,this._programId=n,this._provider=null!=r?r:b(),this._coder=null!=i?i:new H(t),this._size=this._coder.accounts.size(e)}get size(){return this._size}get programId(){return this._programId}get provider(){return this._provider}get coder(){return this._coder}async fetchNullable(t,e){const n=await this.getAccountInfo(t,e);return null===n?null:this._coder.accounts.decode(this._idlAccount.name,n.data)}async fetch(t,e){const n=await this.fetchNullable(t,e);if(null===n)throw new Error(`Account does not exist ${t.toString()}`);return n}async fetchMultiple(t,e){return(await Kt(this._provider.connection,t.map((t=>Rt(t))),e)).map((t=>null==t?null:this._coder.accounts.decode(this._idlAccount.name,null==t?void 0:t.account.data)))}async all(t){return(await this._provider.connection.getProgramAccounts(this._programId,{commitment:this._provider.connection.commitment,filters:[{memcmp:this.coder.accounts.memcmp(this._idlAccount.name,t instanceof Buffer?t:void 0)},...Array.isArray(t)?t:[]]})).map((({pubkey:t,account:e})=>({publicKey:t,account:this._coder.accounts.decode(this._idlAccount.name,e.data)})))}subscribe(t,e){const n=Ae.get(t.toString());if(n)return n.ee;const r=new g;t=Rt(t);const i=this._provider.connection.onAccountChange(t,(t=>{const e=this._coder.accounts.decode(this._idlAccount.name,t.data);r.emit(\"change\",e)}),e);return Ae.set(t.toString(),{ee:r,listener:i}),r}async unsubscribe(t){let e=Ae.get(t.toString());e?Ae&&await this._provider.connection.removeAccountChangeListener(e.listener).then((()=>{Ae.delete(t.toString())})).catch(console.error):console.warn(\"Address is not subscribed\")}async createInstruction(t,e){const n=this.size;return o.createAccount({fromPubkey:this._provider.wallet.publicKey,newAccountPubkey:t.publicKey,space:null!=e?e:n,lamports:await this._provider.connection.getMinimumBalanceForRentExemption(null!=e?e:n),programId:this._programId})}async associated(...t){const e=await this.associatedAddress(...t);return await this.fetch(e)}async associatedAddress(...t){return await Jt(this._programId,...t)}async getAccountInfo(t,e){return await this._provider.connection.getAccountInfo(Rt(t),e)}}const Ae=new Map,Ee=\"Program log: \".length;class Ie{constructor(t,e,n){this._programId=t,this._provider=e,this._eventParser=new Se(t,n),this._eventCallbacks=new Map,this._eventListeners=new Map,this._listenerIdCount=0}addEventListener(t,e){var n;let r=this._listenerIdCount;return this._listenerIdCount+=1,t in this._eventCallbacks||this._eventListeners.set(t,[]),this._eventListeners.set(t,(null!==(n=this._eventListeners.get(t))&&void 0!==n?n:[]).concat(r)),this._eventCallbacks.set(r,[t,e]),void 0!==this._onLogsSubscriptionId||(this._onLogsSubscriptionId=this._provider.connection.onLogs(this._programId,((t,e)=>{t.err||this._eventParser.parseLogs(t.logs,(t=>{const n=this._eventListeners.get(t.name);n&&n.forEach((n=>{const r=this._eventCallbacks.get(n);if(r){const[,n]=r;n(t.data,e.slot)}}))}))}))),r}async removeEventListener(t){const e=this._eventCallbacks.get(t);if(!e)throw new Error(`Event listener ${t} doesn't exist!`);const[n]=e;let r=this._eventListeners.get(n);if(!r)throw new Error(`Event listeners don't exist for ${n}!`);this._eventCallbacks.delete(t),r=r.filter((e=>e!==t)),0===r.length&&this._eventListeners.delete(n),0==this._eventCallbacks.size&&(f.ok(0===this._eventListeners.size),void 0!==this._onLogsSubscriptionId&&(await this._provider.connection.removeOnLogsListener(this._onLogsSubscriptionId),this._onLogsSubscriptionId=void 0))}}class Se{constructor(t,e){this.coder=e,this.programId=t}parseLogs(t,e){const n=new ke(t),r=new xe(n.next());let i=n.next();for(;null!==i;){let[t,o,s]=this.handleLog(r,i);t&&e(t),o&&r.push(o),s&&r.pop(),i=n.next()}}handleLog(t,e){return t.stack.length>0&&t.program()===this.programId.toString()?this.handleProgramLog(e):[null,...this.handleSystemLog(e)]}handleProgramLog(t){if(t.startsWith(\"Program log:\")){const e=t.slice(Ee);return[this.coder.events.decode(e),null,!1]}return[null,...this.handleSystemLog(t)]}handleSystemLog(t){const e=t.split(\":\")[0];return null!==e.match(/^Program (.*) success/g)?[null,!0]:e.startsWith(`Program ${this.programId.toString()} invoke`)?[this.programId.toString(),!1]:e.includes(\"invoke\")?[\"cpi\",!1]:[null,!1]}}class xe{constructor(t){var e;const n=null===(e=/^Program (.*) invoke.*$/g.exec(t))||void 0===e?void 0:e[1];if(!n)throw new Error(\"Could not find program invocation log line\");this.stack=[n]}program(){return f.ok(this.stack.length>0),this.stack[this.stack.length-1]}push(t){this.stack.push(t)}pop(){f.ok(this.stack.length>0),this.stack.pop()}}class ke{constructor(t){this.logs=t}next(){if(0===this.logs.length)return null;let t=this.logs[0];return this.logs=this.logs.slice(1),t}}const Me=new n(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\");function Le(){return new Ut(Te)}const Te={version:\"0.1.0\",name:\"spl_token\",instructions:[{name:\"initializeMint\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"decimals\",type:\"u8\"},{name:\"mintAuthority\",type:\"publicKey\"},{name:\"freezeAuthority\",type:{coption:\"publicKey\"}}]},{name:\"initializeAccount\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[]},{name:\"initializeMultisig\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"m\",type:\"u8\"}]},{name:\"transfer\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"destination\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"}]},{name:\"approve\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"delegate\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"}]},{name:\"revoke\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[]},{name:\"setAuthority\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"authorityType\",type:\"u8\"},{name:\"newAuthority\",type:{coption:\"publicKey\"}}]},{name:\"mintTo\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1},{name:\"to\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"}]},{name:\"burn\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"}]},{name:\"closeAccount\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"destination\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!1}],args:[]},{name:\"freezeAccount\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[]},{name:\"thawAccount\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[]},{name:\"transferChecked\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"destination\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"},{name:\"decimals\",type:\"u8\"}]},{name:\"approveChecked\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"delegate\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"},{name:\"decimals\",type:\"u8\"}]},{name:\"mintToChecked\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1},{name:\"to\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"},{name:\"decimals\",type:\"u8\"}]},{name:\"burnChecked\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"},{name:\"decimals\",type:\"u8\"}]},{name:\"initializeAccount2\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"authority\",type:\"publicKey\"}]},{name:\"syncNative\",accounts:[{name:\"account\",isMut:!0,isSigner:!1}],args:[]},{name:\"initializeAccount3\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1}],args:[{name:\"authority\",type:\"publicKey\"}]},{name:\"initializeMultisig2\",accounts:[{name:\"account\",isMut:!0,isSigner:!1}],args:[{name:\"m\",type:\"u8\"}]},{name:\"initializeMint2\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1}],args:[{name:\"decimals\",type:\"u8\"},{name:\"mintAuthority\",type:\"publicKey\"},{name:\"freezeAuthority\",type:{coption:\"publicKey\"}}]}],accounts:[{name:\"mint\",type:{kind:\"struct\",fields:[{name:\"mintAuthority\",type:{coption:\"publicKey\"}},{name:\"supply\",type:\"u64\"},{name:\"decimals\",type:\"u8\"},{name:\"isInitialized\",type:\"bool\"},{name:\"freezeAuthority\",type:{coption:\"publicKey\"}}]}},{name:\"token\",type:{kind:\"struct\",fields:[{name:\"mint\",type:\"publicKey\"},{name:\"authority\",type:\"publicKey\"},{name:\"amount\",type:\"u64\"},{name:\"delegate\",type:{coption:\"publicKey\"}},{name:\"state\",type:\"u8\"},{name:\"isNative\",type:{coption:\"u64\"}},{name:\"delegatedAmount\",type:\"u64\"},{name:\"closeAuthority\",type:{coption:\"publicKey\"}}]}}]};class Be{constructor(t,e,n,r,i,o){this._args=t,this._accounts=e,this._provider=n,this._programId=r,this._idlIx=i,this._accountStore=new Pe(n,o)}async resolve(){for(let t=0;t0&&void 0===this._accounts[n])await this.autoPopulatePda(e);else if(e.isSigner&&void 0===this._accounts[n])this._accounts[n]=this._provider.wallet.publicKey;else switch(n){case\"systemProgram\":void 0===this._accounts[n]&&(this._accounts[n]=o.programId);case\"rent\":void 0===this._accounts[n]&&(this._accounts[n]=s);case\"tokenProgram\":void 0===this._accounts[n]&&(this._accounts[n]=ie);case\"associatedTokenProgram\":void 0===this._accounts[n]&&(this._accounts[n]=oe)}}}async autoPopulatePda(t){if(!t.pda||!t.pda.seeds)throw new Error(\"Must have seeds\");const e=await Promise.all(t.pda.seeds.map((t=>this.toBuffer(t)))),r=await this.parseProgramId(t),[i]=await n.findProgramAddress(e,r);this._accounts[d(t.name)]=i}async parseProgramId(t){var e;if(!(null===(e=t.pda)||void 0===e?void 0:e.programId))return this._programId;switch(t.pda.programId.kind){case\"const\":return new n(this.toBufferConst(t.pda.programId.value));case\"arg\":return this.argValue(t.pda.programId);case\"account\":return await this.accountValue(t.pda.programId);default:throw new Error(`Unexpected program seed kind: ${t.pda.programId.kind}`)}}async toBuffer(t){switch(t.kind){case\"const\":return this.toBufferConst(t);case\"arg\":return await this.toBufferArg(t);case\"account\":return await this.toBufferAccount(t);default:throw new Error(`Unexpected seed kind: ${t.kind}`)}}toBufferConst(t){return this.toBufferValue(t.type,t.value)}async toBufferArg(t){const e=this.argValue(t);return this.toBufferValue(t.type,e)}argValue(t){const e=d(t.path.split(\".\")[0]),n=this._idlIx.args.findIndex((t=>t.name===e));if(-1===n)throw new Error(`Unable to find argument for seed: ${e}`);return this._args[n]}async toBufferAccount(t){const e=await this.accountValue(t);return this.toBufferValue(t.type,e)}async accountValue(t){const e=t.path.split(\".\"),n=e[0],r=this._accounts[d(n)];if(1===e.length)return r;const i=await this._accountStore.fetchAccount(t.account,r);return this.parseAccountValue(i,e.slice(1))}parseAccountValue(t,e){let n;for(;e.length>0;)n=t[d(e[0])],e=e.slice(1);return n}toBufferValue(t,e){switch(t){case\"u8\":return Buffer.from([e]);case\"u16\":let n=Buffer.alloc(2);return n.writeUInt16LE(e),n;case\"u32\":let r=Buffer.alloc(4);return r.writeUInt32LE(e),r;case\"u64\":let i=Buffer.alloc(8);return i.writeBigUInt64LE(BigInt(e)),i;case\"string\":return Buffer.from(Yt(e));case\"publicKey\":return e.toBuffer();default:if(t.array)return Buffer.from(e);throw new Error(`Unexpected seed type: ${t}`)}}}class Pe{constructor(t,e){this._provider=t,this._accounts=e,this._cache=new Map}async fetchAccount(t,e){const n=e.toString();if(void 0===this._cache.get(n))if(\"TokenAccount\"===t){const t=await this._provider.connection.getAccountInfo(e);if(null===t)throw new Error(`invalid account info for ${n}`);const r=Le().accounts.decode(\"Token\",t.data);this._cache.set(n,r)}else{const r=this._accounts[d(t)].fetch(e);this._cache.set(n,r)}return this._cache.get(n)}}class Oe{static build(t,e,n,r,i,o,s,a){return(...c)=>new ze(c,r,i,o,s,t,e,n,a)}}class ze{constructor(t,e,n,r,i,o,s,a,c){this._args=t,this._ixFn=e,this._txFn=n,this._rpcFn=r,this._simulateFn=i,this._accounts={},this._remainingAccounts=[],this._signers=[],this._preInstructions=[],this._postInstructions=[],this._accountsResolver=new Be(t,this._accounts,o,s,a,c)}accounts(t){return Object.assign(this._accounts,t),this}signers(t){return this._signers=this._signers.concat(t),this}remainingAccounts(t){return this._remainingAccounts=this._remainingAccounts.concat(t),this}preInstructions(t){return this._preInstructions=this._preInstructions.concat(t),this}postInstructions(t){return this._postInstructions=this._postInstructions.concat(t),this}async rpc(t){return await this._accountsResolver.resolve(),this._rpcFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:t})}async simulate(t){return await this._accountsResolver.resolve(),this._simulateFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:t})}async instruction(){return await this._accountsResolver.resolve(),this._ixFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions})}async transaction(){return await this._accountsResolver.resolve(),this._txFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions})}}class De{constructor(t,e,n,r){e=Rt(e),n||(n=b()),this._idl=t,this._provider=n,this._programId=e,this._coder=null!=r?r:new H(t),this._events=new Ie(this._programId,n,this._coder);const[i,o,s,a,c,u,l]=class{static build(t,e,n,r){const i={},o={},s={},a={},c={},u=Ct(t),l=t.accounts?class{static build(t,e,n,r){var i;const o={};return null===(i=t.accounts)||void 0===i||i.forEach((i=>{const s=d(i.name);o[s]=new _e(t,i,n,r,e)})),o}}.build(t,e,n,r):{},h=class{static build(t,e,n,r){if(void 0!==t.state)return new ve(t,n,r,e)}}.build(t,e,n,r);return t.instructions.forEach((h=>{const p=ye.build(h,((t,n)=>e.instruction.encode(t,n)),n),f=we.build(h,p),m=ge.build(h,f,u,r),y=class{static build(t,e,n,r,i,o,s){return async(...a)=>{const c=e(...a),[,u]=me(t,[...a]);let d;try{d=await r.simulate(c,u.signers,u.options)}catch(t){F(\"debug-logs\")&&console.log(\"Translating error:\",t);let e=E.parse(t,n);if(null===e)throw t;throw e}if(void 0===d)throw new Error(\"Unable to simulate transaction\");if(d.value.err)throw new Error(`Simulate error: ${d.value.err.toString()}`);const l=d.value.logs;if(!l)throw new Error(\"Simulated logs not found\");const h=[];return s.events&&new Se(o,i).parseLogs(l,(t=>{h.push(t)})),{events:h,raw:l}}}}.build(h,f,u,r,e,n,t),g=Oe.build(r,n,h,p,f,m,y,l),w=d(h.name);o[w]=p,s[w]=f,i[w]=m,a[w]=y,c[w]=g})),[i,o,s,l,a,c,h]}}.build(t,this._coder,e,n);this.rpc=i,this.instruction=o,this.transaction=s,this.account=a,this.simulate=c,this.methods=u,this.state=l}get programId(){return this._programId}get idl(){return this._idl}get coder(){return this._coder}get provider(){return this._provider}static async at(t,e){const n=Rt(t),r=await De.fetchIdl(n,e);if(!r)throw new Error(`IDL not found for program: ${t.toString()}`);return new De(r,n,e)}static async fetchIdl(t,e){e=null!=e?e:b();const r=Rt(t),i=await async function(t){const e=(await n.findProgramAddress([],t))[0];return await n.createWithSeed(e,\"anchor:idl\",t)}(r),o=await e.connection.getAccountInfo(i);if(!o)return null;let s=(a=o.data.slice(8),fe.decode(a));var a;const c=y(s.data);return JSON.parse(Xt(c))}addEventListener(t,e){return this._events.addEventListener(t,e)}async removeEventListener(t){return await this._events.removeEventListener(t)}}class Ue{static token(){return new De(Te,Me,t,Le());var t}}export{C as ACCOUNT_DISCRIMINATOR_SIZE,_e as AccountClient,$ as BorshAccountsCoder,H as BorshCoder,V as BorshEventCoder,O as BorshInstructionCoder,q as BorshStateCoder,Ie as EventManager,Se as EventParser,A as IdlError,Oe as MethodsBuilderFactory,De as Program,E as ProgramError,w as Provider,Ue as Spl,Ut as SplTokenCoder,ve as StateClient,R as eventDiscriminator,b as getProvider,Ct as parseIdlErrors,v as setProvider,me as splitArgsAndCtx,G as stateDiscriminator,$t as toInstruction,Rt as translateAddress,pe as utils,Vt as validateAccounts};\n//# sourceMappingURL=index.js.map\n","import JSBI from 'jsbi';\nimport invariant from 'tiny-invariant';\nimport _Decimal from 'decimal.js';\nimport _Big from 'big.js';\nimport toFormat from 'toformat';\nimport { BN, web3 } from '@project-serum/anchor';\n\nvar TradeType;\n\n(function (TradeType) {\n TradeType[TradeType[\"EXACT_INPUT\"] = 0] = \"EXACT_INPUT\";\n TradeType[TradeType[\"EXACT_OUTPUT\"] = 1] = \"EXACT_OUTPUT\";\n})(TradeType || (TradeType = {}));\n\nvar Rounding;\n\n(function (Rounding) {\n Rounding[Rounding[\"ROUND_DOWN\"] = 0] = \"ROUND_DOWN\";\n Rounding[Rounding[\"ROUND_HALF_UP\"] = 1] = \"ROUND_HALF_UP\";\n Rounding[Rounding[\"ROUND_UP\"] = 2] = \"ROUND_UP\";\n})(Rounding || (Rounding = {}));\n\nvar MaxUint128 = /*#__PURE__*/JSBI.BigInt('0xffffffffffffffffffffffffffffffff');\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n return Constructor;\n}\n\nfunction _inheritsLoose(subClass, superClass) {\n subClass.prototype = Object.create(superClass.prototype);\n subClass.prototype.constructor = subClass;\n subClass.__proto__ = superClass;\n}\n\nvar _toSignificantRoundin, _toFixedRounding;\nvar Decimal = /*#__PURE__*/toFormat(_Decimal);\nvar Big = /*#__PURE__*/toFormat(_Big);\nvar toSignificantRounding = (_toSignificantRoundin = {}, _toSignificantRoundin[Rounding.ROUND_DOWN] = Decimal.ROUND_DOWN, _toSignificantRoundin[Rounding.ROUND_HALF_UP] = Decimal.ROUND_HALF_UP, _toSignificantRoundin[Rounding.ROUND_UP] = Decimal.ROUND_UP, _toSignificantRoundin);\nvar toFixedRounding = (_toFixedRounding = {}, _toFixedRounding[Rounding.ROUND_DOWN] = 0, _toFixedRounding[Rounding.ROUND_HALF_UP] = 1, _toFixedRounding[Rounding.ROUND_UP] = 3, _toFixedRounding);\nvar Fraction = /*#__PURE__*/function () {\n function Fraction(numerator, denominator) {\n if (denominator === void 0) {\n denominator = JSBI.BigInt(1);\n }\n\n this.numerator = JSBI.BigInt(numerator);\n this.denominator = JSBI.BigInt(denominator);\n }\n\n Fraction.tryParseFraction = function tryParseFraction(fractionish) {\n if (fractionish instanceof JSBI || typeof fractionish === 'number' || typeof fractionish === 'string') return new Fraction(fractionish);\n if ('numerator' in fractionish && 'denominator' in fractionish) return fractionish;\n throw new Error('Could not parse fraction');\n } // performs floor division\n ;\n\n var _proto = Fraction.prototype;\n\n _proto.invert = function invert() {\n return new Fraction(this.denominator, this.numerator);\n };\n\n _proto.add = function add(other) {\n var otherParsed = Fraction.tryParseFraction(other);\n\n if (JSBI.equal(this.denominator, otherParsed.denominator)) {\n return new Fraction(JSBI.add(this.numerator, otherParsed.numerator), this.denominator);\n }\n\n return new Fraction(JSBI.add(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(otherParsed.numerator, this.denominator)), JSBI.multiply(this.denominator, otherParsed.denominator));\n };\n\n _proto.subtract = function subtract(other) {\n var otherParsed = Fraction.tryParseFraction(other);\n\n if (JSBI.equal(this.denominator, otherParsed.denominator)) {\n return new Fraction(JSBI.subtract(this.numerator, otherParsed.numerator), this.denominator);\n }\n\n return new Fraction(JSBI.subtract(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(otherParsed.numerator, this.denominator)), JSBI.multiply(this.denominator, otherParsed.denominator));\n };\n\n _proto.lessThan = function lessThan(other) {\n var otherParsed = Fraction.tryParseFraction(other);\n return JSBI.lessThan(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(otherParsed.numerator, this.denominator));\n };\n\n _proto.equalTo = function equalTo(other) {\n var otherParsed = Fraction.tryParseFraction(other);\n return JSBI.equal(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(otherParsed.numerator, this.denominator));\n };\n\n _proto.greaterThan = function greaterThan(other) {\n var otherParsed = Fraction.tryParseFraction(other);\n return JSBI.greaterThan(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(otherParsed.numerator, this.denominator));\n };\n\n _proto.multiply = function multiply(other) {\n var otherParsed = Fraction.tryParseFraction(other);\n return new Fraction(JSBI.multiply(this.numerator, otherParsed.numerator), JSBI.multiply(this.denominator, otherParsed.denominator));\n };\n\n _proto.divide = function divide(other) {\n var otherParsed = Fraction.tryParseFraction(other);\n return new Fraction(JSBI.multiply(this.numerator, otherParsed.denominator), JSBI.multiply(this.denominator, otherParsed.numerator));\n };\n\n _proto.toSignificant = function toSignificant(significantDigits, format, rounding) {\n if (format === void 0) {\n format = {\n groupSeparator: ''\n };\n }\n\n if (rounding === void 0) {\n rounding = Rounding.ROUND_HALF_UP;\n }\n\n !Number.isInteger(significantDigits) ? process.env.NODE_ENV !== \"production\" ? invariant(false, significantDigits + \" is not an integer.\") : invariant(false) : void 0;\n !(significantDigits > 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, significantDigits + \" is not positive.\") : invariant(false) : void 0;\n Decimal.set({\n precision: significantDigits + 1,\n rounding: toSignificantRounding[rounding]\n });\n var quotient = new Decimal(this.numerator.toString()).div(this.denominator.toString()).toSignificantDigits(significantDigits);\n return quotient.toFormat(quotient.decimalPlaces(), format);\n };\n\n _proto.toFixed = function toFixed(decimalPlaces, format, rounding) {\n if (format === void 0) {\n format = {\n groupSeparator: ''\n };\n }\n\n if (rounding === void 0) {\n rounding = Rounding.ROUND_HALF_UP;\n }\n\n !Number.isInteger(decimalPlaces) ? process.env.NODE_ENV !== \"production\" ? invariant(false, decimalPlaces + \" is not an integer.\") : invariant(false) : void 0;\n !(decimalPlaces >= 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, decimalPlaces + \" is negative.\") : invariant(false) : void 0;\n Big.DP = decimalPlaces;\n Big.RM = toFixedRounding[rounding];\n return new Big(this.numerator.toString()).div(this.denominator.toString()).toFormat(decimalPlaces, format);\n }\n /**\r\n * Helper method for converting any super class back to a fraction\r\n */\n ;\n\n _createClass(Fraction, [{\n key: \"quotient\",\n get: function get() {\n return JSBI.divide(this.numerator, this.denominator);\n } // remainder after floor division\n\n }, {\n key: \"remainder\",\n get: function get() {\n return new Fraction(JSBI.remainder(this.numerator, this.denominator), this.denominator);\n }\n }, {\n key: \"asFraction\",\n get: function get() {\n return new Fraction(this.numerator, this.denominator);\n }\n }]);\n\n return Fraction;\n}();\n\nvar Big$1 = /*#__PURE__*/toFormat(_Big);\nvar CurrencyAmount = /*#__PURE__*/function (_Fraction) {\n _inheritsLoose(CurrencyAmount, _Fraction);\n\n function CurrencyAmount(currency, numerator, denominator) {\n var _this;\n\n _this = _Fraction.call(this, numerator, denominator) || this;\n !JSBI.lessThanOrEqual(_this.quotient, MaxUint128) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'AMOUNT') : invariant(false) : void 0;\n _this.currency = currency;\n _this.decimalScale = JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(currency.decimals));\n return _this;\n }\n /**\r\n * Returns a new currency amount instance from the unitless amount of token, i.e. the raw amount\r\n * @param currency the currency in the amount\r\n * @param rawAmount the raw token or ether amount\r\n */\n\n\n CurrencyAmount.fromRawAmount = function fromRawAmount(currency, rawAmount) {\n return new CurrencyAmount(currency, rawAmount);\n }\n /**\r\n * Construct a currency amount with a denominator that is not equal to 1\r\n * @param currency the currency\r\n * @param numerator the numerator of the fractional token amount\r\n * @param denominator the denominator of the fractional token amount\r\n */\n ;\n\n CurrencyAmount.fromFractionalAmount = function fromFractionalAmount(currency, numerator, denominator) {\n return new CurrencyAmount(currency, numerator, denominator);\n };\n\n var _proto = CurrencyAmount.prototype;\n\n _proto.add = function add(other) {\n !this.currency.equals(other.currency) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'CURRENCY') : invariant(false) : void 0;\n\n var added = _Fraction.prototype.add.call(this, other);\n\n return CurrencyAmount.fromFractionalAmount(this.currency, added.numerator, added.denominator);\n };\n\n _proto.subtract = function subtract(other) {\n !this.currency.equals(other.currency) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'CURRENCY') : invariant(false) : void 0;\n\n var subtracted = _Fraction.prototype.subtract.call(this, other);\n\n return CurrencyAmount.fromFractionalAmount(this.currency, subtracted.numerator, subtracted.denominator);\n };\n\n _proto.multiply = function multiply(other) {\n var multiplied = _Fraction.prototype.multiply.call(this, other);\n\n return CurrencyAmount.fromFractionalAmount(this.currency, multiplied.numerator, multiplied.denominator);\n };\n\n _proto.divide = function divide(other) {\n var divided = _Fraction.prototype.divide.call(this, other);\n\n return CurrencyAmount.fromFractionalAmount(this.currency, divided.numerator, divided.denominator);\n };\n\n _proto.toSignificant = function toSignificant(significantDigits, format, rounding) {\n if (significantDigits === void 0) {\n significantDigits = 6;\n }\n\n if (rounding === void 0) {\n rounding = Rounding.ROUND_DOWN;\n }\n\n return _Fraction.prototype.divide.call(this, this.decimalScale).toSignificant(significantDigits, format, rounding);\n };\n\n _proto.toFixed = function toFixed(decimalPlaces, format, rounding) {\n if (decimalPlaces === void 0) {\n decimalPlaces = this.currency.decimals;\n }\n\n if (rounding === void 0) {\n rounding = Rounding.ROUND_DOWN;\n }\n\n !(decimalPlaces <= this.currency.decimals) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'DECIMALS') : invariant(false) : void 0;\n return _Fraction.prototype.divide.call(this, this.decimalScale).toFixed(decimalPlaces, format, rounding);\n };\n\n _proto.toExact = function toExact(format) {\n if (format === void 0) {\n format = {\n groupSeparator: ''\n };\n }\n\n Big$1.DP = this.currency.decimals;\n return new Big$1(this.quotient.toString()).div(this.decimalScale.toString()).toFormat(format);\n };\n\n _createClass(CurrencyAmount, [{\n key: \"wrapped\",\n get: function get() {\n if (this.currency.isToken) return this;\n return CurrencyAmount.fromFractionalAmount(this.currency.wrapped, this.numerator, this.denominator);\n }\n }]);\n\n return CurrencyAmount;\n}(Fraction);\n\nvar ONE_HUNDRED = /*#__PURE__*/new Fraction( /*#__PURE__*/JSBI.BigInt(100));\n/**\r\n * Converts a fraction to a percent\r\n * @param fraction the fraction to convert\r\n */\n\nfunction toPercent(fraction) {\n return new Percent(fraction.numerator, fraction.denominator);\n}\n\nvar Percent = /*#__PURE__*/function (_Fraction) {\n _inheritsLoose(Percent, _Fraction);\n\n function Percent() {\n var _this;\n\n _this = _Fraction.apply(this, arguments) || this;\n /**\r\n * This boolean prevents a fraction from being interpreted as a Percent\r\n */\n\n _this.isPercent = true;\n return _this;\n }\n\n var _proto = Percent.prototype;\n\n _proto.add = function add(other) {\n return toPercent(_Fraction.prototype.add.call(this, other));\n };\n\n _proto.subtract = function subtract(other) {\n return toPercent(_Fraction.prototype.subtract.call(this, other));\n };\n\n _proto.multiply = function multiply(other) {\n return toPercent(_Fraction.prototype.multiply.call(this, other));\n };\n\n _proto.divide = function divide(other) {\n return toPercent(_Fraction.prototype.divide.call(this, other));\n };\n\n _proto.toSignificant = function toSignificant(significantDigits, format, rounding) {\n if (significantDigits === void 0) {\n significantDigits = 5;\n }\n\n return _Fraction.prototype.multiply.call(this, ONE_HUNDRED).toSignificant(significantDigits, format, rounding);\n };\n\n _proto.toFixed = function toFixed(decimalPlaces, format, rounding) {\n if (decimalPlaces === void 0) {\n decimalPlaces = 2;\n }\n\n return _Fraction.prototype.multiply.call(this, ONE_HUNDRED).toFixed(decimalPlaces, format, rounding);\n };\n\n return Percent;\n}(Fraction);\n\nvar Price = /*#__PURE__*/function (_Fraction) {\n _inheritsLoose(Price, _Fraction);\n\n /**\r\n * Construct a price, either with the base and quote currency amount, or the\r\n * @param args\r\n */\n function Price() {\n var _this;\n\n var baseCurrency, quoteCurrency, denominator, numerator;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (args.length === 4) {\n baseCurrency = args[0];\n quoteCurrency = args[1];\n denominator = args[2];\n numerator = args[3];\n } else {\n var result = args[0].quoteAmount.divide(args[0].baseAmount);\n var _ref = [args[0].baseAmount.currency, args[0].quoteAmount.currency, result.denominator, result.numerator];\n baseCurrency = _ref[0];\n quoteCurrency = _ref[1];\n denominator = _ref[2];\n numerator = _ref[3];\n }\n\n _this = _Fraction.call(this, numerator, denominator) || this;\n _this.baseCurrency = baseCurrency;\n _this.quoteCurrency = quoteCurrency;\n _this.scalar = new Fraction(JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(baseCurrency.decimals)), JSBI.exponentiate(JSBI.BigInt(10), JSBI.BigInt(quoteCurrency.decimals)));\n return _this;\n }\n /**\r\n * Flip the price, switching the base and quote currency\r\n */\n\n\n var _proto = Price.prototype;\n\n _proto.invert = function invert() {\n return new Price(this.quoteCurrency, this.baseCurrency, this.numerator, this.denominator);\n }\n /**\r\n * Multiply the price by another price, returning a new price. The other price must have the same base currency as this price's quote currency\r\n * @param other the other price\r\n */\n ;\n\n _proto.multiply = function multiply(other) {\n !this.quoteCurrency.equals(other.baseCurrency) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'TOKEN') : invariant(false) : void 0;\n\n var fraction = _Fraction.prototype.multiply.call(this, other);\n\n return new Price(this.baseCurrency, other.quoteCurrency, fraction.denominator, fraction.numerator);\n }\n /**\r\n * Return the amount of quote currency corresponding to a given amount of the base currency\r\n * @param currencyAmount the amount of base currency to quote against the price\r\n */\n ;\n\n _proto.quote = function quote(currencyAmount) {\n !currencyAmount.currency.equals(this.baseCurrency) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'TOKEN') : invariant(false) : void 0;\n\n var result = _Fraction.prototype.multiply.call(this, currencyAmount);\n\n return CurrencyAmount.fromFractionalAmount(this.quoteCurrency, result.numerator, result.denominator);\n }\n /**\r\n * Get the value scaled by decimals for formatting\r\n * @private\r\n */\n ;\n\n _proto.toSignificant = function toSignificant(significantDigits, format, rounding) {\n if (significantDigits === void 0) {\n significantDigits = 6;\n }\n\n return this.adjustedForDecimals.toSignificant(significantDigits, format, rounding);\n };\n\n _proto.toFixed = function toFixed(decimalPlaces, format, rounding) {\n if (decimalPlaces === void 0) {\n decimalPlaces = 4;\n }\n\n return this.adjustedForDecimals.toFixed(decimalPlaces, format, rounding);\n };\n\n _createClass(Price, [{\n key: \"adjustedForDecimals\",\n get: function get() {\n return _Fraction.prototype.multiply.call(this, this.scalar);\n }\n }]);\n\n return Price;\n}(Fraction);\n\n/**\r\n * A currency is any fungible financial instrument, including Ether, all ERC20 tokens, and other chain-native currencies\r\n */\n\nvar BaseCurrency =\n/**\r\n * Constructs an instance of the base class `BaseCurrency`.\r\n * @param chainId the chain ID on which this currency resides\r\n * @param decimals decimals of the currency\r\n * @param symbol symbol of the currency\r\n * @param name of the currency\r\n */\nfunction BaseCurrency(chainId, decimals, symbol, name) {\n !Number.isSafeInteger(chainId) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'CHAIN_ID') : invariant(false) : void 0; // SPL can take decimals upto 9\n\n !(decimals >= 0 && decimals < 255 && Number.isInteger(decimals)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'DECIMALS') : invariant(false) : void 0;\n this.chainId = chainId;\n this.decimals = decimals;\n this.symbol = symbol;\n this.name = name;\n};\n\n/**\r\n * Represents the native currency of the chain on which it resides, e.g.\r\n */\n\nvar NativeCurrency = /*#__PURE__*/function (_BaseCurrency) {\n _inheritsLoose(NativeCurrency, _BaseCurrency);\n\n function NativeCurrency() {\n var _this;\n\n _this = _BaseCurrency.apply(this, arguments) || this;\n _this.isNative = true;\n _this.isToken = false;\n return _this;\n }\n\n return NativeCurrency;\n}(BaseCurrency);\n\n/**\r\n * Represents an ERC20 token with a unique address and some metadata.\r\n */\n\nvar Token = /*#__PURE__*/function (_BaseCurrency) {\n _inheritsLoose(Token, _BaseCurrency);\n\n function Token(chainId, address, decimals, symbol, name) {\n var _this;\n\n _this = _BaseCurrency.call(this, chainId, decimals, symbol, name) || this;\n _this.isNative = false;\n _this.isToken = true;\n _this.address = address;\n return _this;\n }\n /**\r\n * Returns true if the two tokens are equivalent, i.e. have the same chainId and address.\r\n * @param other other token to compare\r\n */\n\n\n var _proto = Token.prototype;\n\n _proto.equals = function equals(other) {\n return other.isToken && this.chainId === other.chainId && this.address.equals(other.address);\n }\n /**\r\n * Returns true if the address of this token sorts before the address of the other token\r\n * @param other other token to compare\r\n * @throws if the tokens have the same address\r\n * @throws if the tokens are on different chains\r\n */\n ;\n\n _proto.sortsBefore = function sortsBefore(other) {\n !(this.chainId === other.chainId) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'CHAIN_IDS') : invariant(false) : void 0;\n !(this.address !== other.address) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ADDRESSES') : invariant(false) : void 0;\n var thisKeyAsNumber = new BN(this.address.toBuffer());\n var otherKeyAsNumber = new BN(other.address.toBuffer());\n return thisKeyAsNumber.lt(otherKeyAsNumber);\n }\n /**\r\n * Return this token, which does not need to be wrapped\r\n */\n ;\n\n _createClass(Token, [{\n key: \"wrapped\",\n get: function get() {\n return this;\n }\n }]);\n\n return Token;\n}(BaseCurrency);\n\nvar WSOL = /*#__PURE__*/new Token(101, /*#__PURE__*/new web3.PublicKey('So11111111111111111111111111111111111111112'), 9, 'wSOL', 'Wrapped SOL');\n/**\r\n * Known WSOL implementation addresses, used in our implementation of Solana#wrapped\r\n */\n// export const WSOL: { [chainId: number]: Token } = {\n// // Mainnet\n// [101]: wSolToken,\n// // Testnet\n// [102]: wSolToken,\n// // Devnet\n// [103]: wSolToken,\n// }\n\n/**\r\n * Solana is the main usage of a 'native' currency, i.e. for Solana mainnet, testnet and devnet\r\n */\n\nvar Solana = /*#__PURE__*/function (_NativeCurrency) {\n _inheritsLoose(Solana, _NativeCurrency);\n\n function Solana(chainId) {\n return _NativeCurrency.call(this, chainId, WSOL.decimals, WSOL.symbol, WSOL.name) || this;\n }\n\n Solana.onChain = function onChain(chainId) {\n var _this$_solanaCache$ch;\n\n return (_this$_solanaCache$ch = this._solanaCache[chainId]) != null ? _this$_solanaCache$ch : this._solanaCache[chainId] = new Solana(chainId);\n };\n\n var _proto = Solana.prototype;\n\n _proto.equals = function equals(other) {\n return other.isNative && other.chainId === this.chainId;\n };\n\n _createClass(Solana, [{\n key: \"wrapped\",\n get: function get() {\n !!!WSOL ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'WRAPPED') : invariant(false) : void 0;\n return WSOL;\n }\n }]);\n\n return Solana;\n}(NativeCurrency);\nSolana._solanaCache = {};\n\n/**\r\n * Returns the percent difference between the mid price and the execution price, i.e. price impact.\r\n * @param midPrice mid price before the trade\r\n * @param inputAmount the input amount of the trade\r\n * @param outputAmount the output amount of the trade\r\n */\n\nfunction computePriceImpact(midPrice, inputAmount, outputAmount) {\n var quotedOutputAmount = midPrice.quote(inputAmount); // calculate price impact := (exactQuote - outputAmount) / exactQuote\n\n var priceImpact = quotedOutputAmount.subtract(outputAmount).divide(quotedOutputAmount);\n return new Percent(priceImpact.numerator, priceImpact.denominator);\n}\n\n// `maxSize` by removing the last item\n\nfunction sortedInsert(items, add, maxSize, comparator) {\n !(maxSize > 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'MAX_SIZE_ZERO') : invariant(false) : void 0; // this is an invariant because the interface cannot return multiple removed items if items.length exceeds maxSize\n\n !(items.length <= maxSize) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ITEMS_SIZE') : invariant(false) : void 0; // short circuit first item add\n\n if (items.length === 0) {\n items.push(add);\n return null;\n } else {\n var isFull = items.length === maxSize; // short circuit if full and the additional item does not come before the last item\n\n if (isFull && comparator(items[items.length - 1], add) <= 0) {\n return add;\n }\n\n var lo = 0,\n hi = items.length;\n\n while (lo < hi) {\n var mid = lo + hi >>> 1;\n\n if (comparator(items[mid], add) <= 0) {\n lo = mid + 1;\n } else {\n hi = mid;\n }\n }\n\n items.splice(lo, 0, add);\n return isFull ? items.pop() : null;\n }\n}\n\nvar MAX_SAFE_INTEGER = /*#__PURE__*/JSBI.BigInt(Number.MAX_SAFE_INTEGER);\nvar ZERO = /*#__PURE__*/JSBI.BigInt(0);\nvar ONE = /*#__PURE__*/JSBI.BigInt(1);\nvar TWO = /*#__PURE__*/JSBI.BigInt(2);\n/**\r\n * Computes floor(sqrt(value))\r\n * @param value the value for which to compute the square root, rounded down\r\n */\n\nfunction sqrt(value) {\n !JSBI.greaterThanOrEqual(value, ZERO) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'NEGATIVE') : invariant(false) : void 0; // rely on built in sqrt if possible\n\n if (JSBI.lessThan(value, MAX_SAFE_INTEGER)) {\n return JSBI.BigInt(Math.floor(Math.sqrt(JSBI.toNumber(value))));\n }\n\n var z;\n var x;\n z = value;\n x = JSBI.add(JSBI.divide(value, TWO), ONE);\n\n while (JSBI.lessThan(x, z)) {\n z = x;\n x = JSBI.divide(JSBI.add(JSBI.divide(value, x), x), TWO);\n }\n\n return z;\n}\n\nexport { CurrencyAmount, Fraction, MaxUint128, NativeCurrency, Percent, Price, Rounding, Solana, Token, TradeType, WSOL, computePriceImpact, sortedInsert, sqrt };\n//# sourceMappingURL=cykura-sdk-core.esm.js.map\n","import { MaxUint128, CurrencyAmount, Price, sqrt, Percent, TradeType, Fraction, sortedInsert } from '@cykura/sdk-core';\nimport JSBI from 'jsbi';\nimport invariant from 'tiny-invariant';\nimport { web3, BN } from '@project-serum/anchor';\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nfunction _extends() {\n _extends = Object.assign || function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n\n return target;\n };\n\n return _extends.apply(this, arguments);\n}\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return _arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen);\n}\n\nfunction _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n\n return arr2;\n}\n\nfunction _createForOfIteratorHelperLoose(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n if (it) return (it = it.call(o)).next.bind(it);\n\n if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n return function () {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nvar _TICK_SPACINGS;\nvar FACTORY_ADDRESS = /*#__PURE__*/new web3.PublicKey('cysPXAjehMpVKUapzbMCCnpFxUFFryEWEaLgnb9NrR8');\nvar ADDRESS_ZERO = '0x0000000000000000000000000000000000000000';\n/**\r\n * The default factory enabled fee amounts, denominated in hundredths of bips.\r\n */\n\nvar FeeAmount;\n\n(function (FeeAmount) {\n FeeAmount[FeeAmount[\"SUPER_STABLE\"] = 20] = \"SUPER_STABLE\";\n FeeAmount[FeeAmount[\"TURBO_SPL\"] = 80] = \"TURBO_SPL\";\n FeeAmount[FeeAmount[\"LOW\"] = 500] = \"LOW\";\n FeeAmount[FeeAmount[\"MEDIUM\"] = 3000] = \"MEDIUM\";\n FeeAmount[FeeAmount[\"HIGH\"] = 10000] = \"HIGH\"; // deprecated\n})(FeeAmount || (FeeAmount = {}));\n/**\r\n * The default factory tick spacings by fee amount.\r\n */\n\n\nvar TICK_SPACINGS = (_TICK_SPACINGS = {}, _TICK_SPACINGS[FeeAmount.SUPER_STABLE] = 1, _TICK_SPACINGS[FeeAmount.TURBO_SPL] = 60, _TICK_SPACINGS[FeeAmount.LOW] = 10, _TICK_SPACINGS[FeeAmount.MEDIUM] = 60, _TICK_SPACINGS[FeeAmount.HIGH] = 200, _TICK_SPACINGS);\n\nvar NEGATIVE_ONE = /*#__PURE__*/JSBI.BigInt(-1);\nvar ZERO = /*#__PURE__*/JSBI.BigInt(0);\nvar ONE = /*#__PURE__*/JSBI.BigInt(1); // used in liquidity amount math\n\nvar Q32 = /*#__PURE__*/JSBI.exponentiate( /*#__PURE__*/JSBI.BigInt(2), /*#__PURE__*/JSBI.BigInt(32));\nvar Q64 = /*#__PURE__*/JSBI.exponentiate( /*#__PURE__*/JSBI.BigInt(2), /*#__PURE__*/JSBI.BigInt(64));\nvar MaxUint32 = /*#__PURE__*/JSBI.subtract(Q32, ONE);\nvar MaxUint64 = /*#__PURE__*/JSBI.subtract(Q64, ONE);\nvar U32Resolution = /*#__PURE__*/JSBI.BigInt(32);\n\nvar BITMAP_SEED = /*#__PURE__*/Buffer.from('b');\nvar POOL_SEED = /*#__PURE__*/Buffer.from('p');\nvar POSITION_SEED = /*#__PURE__*/Buffer.from('ps');\nvar OBSERVATION_SEED = /*#__PURE__*/Buffer.from('o');\nvar TICK_SEED = /*#__PURE__*/Buffer.from('t');\nvar FEE_SEED = /*#__PURE__*/Buffer.from('f');\nfunction u16ToSeed(num) {\n var arr = new ArrayBuffer(2);\n var view = new DataView(arr);\n view.setUint16(0, num, false);\n return new Uint8Array(arr);\n}\nfunction i16ToSeed(num) {\n var arr = new ArrayBuffer(2);\n var view = new DataView(arr);\n view.setInt16(0, num, false);\n return new Uint8Array(arr);\n} // Export to commons later?\n// Generate seed buffer from a u32 number\n\nfunction u32ToSeed(num) {\n var arr = new ArrayBuffer(4);\n var view = new DataView(arr);\n view.setUint32(0, num, false);\n return new Uint8Array(arr);\n}\nfunction i32ToSeed(num) {\n var arr = new ArrayBuffer(4);\n var view = new DataView(arr);\n view.setInt32(0, num, false);\n return new Uint8Array(arr);\n}\n\n/**\r\n * Computes a pool address\r\n * @param factoryAddress The Uniswap V3 factory address\r\n * @param tokenA The first token of the pair, irrespective of sort order\r\n * @param tokenB The second token of the pair, irrespective of sort order\r\n * @param fee The fee tier of the pool\r\n * @returns The pool address\r\n */\n\nfunction computePoolAddress(_ref) {\n var factoryAddress = _ref.factoryAddress,\n tokenA = _ref.tokenA,\n tokenB = _ref.tokenB,\n fee = _ref.fee;\n\n var _ref2 = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA],\n token0 = _ref2[0],\n token1 = _ref2[1]; // does safety checks\n\n\n var token0Key = new web3.PublicKey(token0.address);\n var token1Key = new web3.PublicKey(token1.address);\n return web3.PublicKey.findProgramAddress([POOL_SEED, token0Key.toBuffer(), token1Key.toBuffer(), u32ToSeed(fee)], factoryAddress).then(function (_ref3) {\n var poolState = _ref3[0];\n return poolState;\n });\n}\n\nvar LiquidityMath = /*#__PURE__*/function () {\n /**\r\n * Cannot be constructed.\r\n */\n function LiquidityMath() {}\n\n LiquidityMath.addDelta = function addDelta(x, y) {\n var z;\n\n if (JSBI.lessThan(y, ZERO)) {\n z = JSBI.subtract(x, JSBI.multiply(y, NEGATIVE_ONE)); // invariant(z < x, 'LIQUIDITY_SUB')\n } else {\n z = JSBI.add(x, y); // invariant(z >= x, 'LIQUIDITY_ADD')\n }\n\n return z;\n };\n\n return LiquidityMath;\n}();\n\nvar FullMath = /*#__PURE__*/function () {\n /**\r\n * Cannot be constructed.\r\n */\n function FullMath() {}\n\n FullMath.mulDivRoundingUp = function mulDivRoundingUp(a, b, denominator) {\n var product = JSBI.multiply(a, b);\n var result = JSBI.divide(product, denominator);\n if (JSBI.notEqual(JSBI.remainder(product, denominator), ZERO)) result = JSBI.add(result, ONE);\n return result;\n };\n\n FullMath.mulDivFloor = function mulDivFloor(a, b, denominator) {\n !JSBI.notEqual(denominator, ZERO) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'DIVISION_BY_0') : invariant(false) : void 0;\n var product = JSBI.multiply(a, b);\n return JSBI.divide(product, denominator);\n };\n\n FullMath.mulDivCeil = function mulDivCeil(a, b, denominator) {\n !JSBI.notEqual(denominator, ZERO) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'DIVISION_BY_0') : invariant(false) : void 0;\n var product = JSBI.multiply(a, b);\n return JSBI.divide(JSBI.add(product, JSBI.subtract(denominator, ONE)), denominator);\n };\n\n return FullMath;\n}();\n\nfunction multiplyIn128(x, y) {\n var product = JSBI.multiply(x, y);\n return JSBI.bitwiseAnd(product, MaxUint128);\n}\n\nfunction addIn128(x, y) {\n var sum = JSBI.add(x, y);\n return JSBI.bitwiseAnd(sum, MaxUint128);\n}\n\nvar SqrtPriceMath = /*#__PURE__*/function () {\n /**\r\n * Cannot be constructed.\r\n */\n function SqrtPriceMath() {}\n\n SqrtPriceMath.getAmount0Delta = function getAmount0Delta(sqrtRatioAX32, sqrtRatioBX32, liquidity, roundUp) {\n if (JSBI.greaterThan(sqrtRatioAX32, sqrtRatioBX32)) {\n var _ref = [sqrtRatioBX32, sqrtRatioAX32];\n sqrtRatioAX32 = _ref[0];\n sqrtRatioBX32 = _ref[1];\n }\n\n var numerator1 = JSBI.leftShift(liquidity, U32Resolution);\n var numerator2 = JSBI.subtract(sqrtRatioBX32, sqrtRatioAX32);\n !JSBI.greaterThan(sqrtRatioAX32, ZERO) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'SQRTA32_GT_0') : invariant(false) : void 0;\n return roundUp ? FullMath.mulDivRoundingUp(FullMath.mulDivCeil(numerator1, numerator2, sqrtRatioBX32), ONE, sqrtRatioAX32) : JSBI.divide(FullMath.mulDivFloor(numerator1, numerator2, sqrtRatioBX32), sqrtRatioAX32);\n };\n\n SqrtPriceMath.getAmount1Delta = function getAmount1Delta(sqrtRatioAX32, sqrtRatioBX32, liquidity, roundUp) {\n if (JSBI.greaterThan(sqrtRatioAX32, sqrtRatioBX32)) {\n var _ref2 = [sqrtRatioBX32, sqrtRatioAX32];\n sqrtRatioAX32 = _ref2[0];\n sqrtRatioBX32 = _ref2[1];\n }\n\n return roundUp ? FullMath.mulDivCeil(liquidity, JSBI.subtract(sqrtRatioBX32, sqrtRatioAX32), Q32) : FullMath.mulDivFloor(liquidity, JSBI.subtract(sqrtRatioBX32, sqrtRatioAX32), Q32);\n };\n\n SqrtPriceMath.getNextSqrtPriceFromInput = function getNextSqrtPriceFromInput(sqrtPX32, liquidity, amountIn, zeroForOne) {\n !JSBI.greaterThan(sqrtPX32, ZERO) ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n !JSBI.greaterThan(liquidity, ZERO) ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n return zeroForOne ? this.getNextSqrtPriceFromAmount0RoundingUp(sqrtPX32, liquidity, amountIn, true) : this.getNextSqrtPriceFromAmount1RoundingDown(sqrtPX32, liquidity, amountIn, true);\n };\n\n SqrtPriceMath.getNextSqrtPriceFromOutput = function getNextSqrtPriceFromOutput(sqrtPX32, liquidity, amountOut, zeroForOne) {\n !JSBI.greaterThan(sqrtPX32, ZERO) ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n !JSBI.greaterThan(liquidity, ZERO) ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n return zeroForOne ? this.getNextSqrtPriceFromAmount1RoundingDown(sqrtPX32, liquidity, amountOut, false) : this.getNextSqrtPriceFromAmount0RoundingUp(sqrtPX32, liquidity, amountOut, false);\n };\n\n SqrtPriceMath.getNextSqrtPriceFromAmount0RoundingUp = function getNextSqrtPriceFromAmount0RoundingUp(sqrtPX32, liquidity, amount, add) {\n if (JSBI.equal(amount, ZERO)) return sqrtPX32;\n var numerator1 = JSBI.leftShift(liquidity, U32Resolution);\n\n if (add) {\n var product = multiplyIn128(amount, sqrtPX32);\n var denominator = addIn128(numerator1, product);\n\n if (JSBI.greaterThanOrEqual(denominator, numerator1)) {\n return FullMath.mulDivCeil(numerator1, sqrtPX32, denominator);\n }\n\n return FullMath.mulDivRoundingUp(numerator1, ONE, JSBI.add(JSBI.divide(numerator1, sqrtPX32), amount));\n } else {\n var _product = multiplyIn128(amount, sqrtPX32); // invariant(JSBI.equal(JSBI.divide(product, amount), sqrtPX32))\n\n\n !JSBI.greaterThan(numerator1, _product) ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n\n var _denominator = JSBI.subtract(numerator1, _product);\n\n return FullMath.mulDivCeil(numerator1, sqrtPX32, _denominator);\n }\n };\n\n SqrtPriceMath.getNextSqrtPriceFromAmount1RoundingDown = function getNextSqrtPriceFromAmount1RoundingDown(sqrtPX32, liquidity, amount, add) {\n if (add) {\n var quotient = JSBI.lessThanOrEqual(amount, MaxUint32) ? JSBI.divide(JSBI.leftShift(amount, U32Resolution), liquidity) : FullMath.mulDivFloor(amount, Q32, liquidity);\n return JSBI.add(sqrtPX32, quotient);\n } else {\n var _quotient = JSBI.lessThanOrEqual(amount, MaxUint32) ? FullMath.mulDivRoundingUp(JSBI.leftShift(amount, U32Resolution), ONE, liquidity) : FullMath.mulDivCeil(amount, Q32, liquidity);\n\n !JSBI.greaterThan(sqrtPX32, _quotient) ? process.env.NODE_ENV !== \"production\" ? invariant(false) : invariant(false) : void 0;\n return JSBI.subtract(sqrtPX32, _quotient);\n }\n };\n\n return SqrtPriceMath;\n}();\n\nvar MAX_FEE = /*#__PURE__*/JSBI.exponentiate( /*#__PURE__*/JSBI.BigInt(10), /*#__PURE__*/JSBI.BigInt(6));\nvar SwapMath = /*#__PURE__*/function () {\n /**\r\n * Cannot be constructed.\r\n */\n function SwapMath() {}\n\n SwapMath.computeSwapStep = function computeSwapStep(sqrtRatioCurrentX32, sqrtRatioTargetX32, liquidity, amountRemaining, feePips) {\n var swapStep = {};\n var zeroForOne = JSBI.greaterThanOrEqual(sqrtRatioCurrentX32, sqrtRatioTargetX32);\n var exactIn = JSBI.greaterThanOrEqual(amountRemaining, ZERO);\n\n if (exactIn) {\n var amountRemainingLessFee = FullMath.mulDivFloor(amountRemaining, JSBI.subtract(MAX_FEE, JSBI.BigInt(feePips)), MAX_FEE);\n swapStep.amountIn = zeroForOne ? SqrtPriceMath.getAmount0Delta(sqrtRatioTargetX32, sqrtRatioCurrentX32, liquidity, true) : SqrtPriceMath.getAmount1Delta(sqrtRatioCurrentX32, sqrtRatioTargetX32, liquidity, true);\n\n if (JSBI.greaterThanOrEqual(amountRemainingLessFee, swapStep.amountIn)) {\n swapStep.sqrtRatioNextX32 = sqrtRatioTargetX32;\n } else {\n swapStep.sqrtRatioNextX32 = SqrtPriceMath.getNextSqrtPriceFromInput(sqrtRatioCurrentX32, liquidity, amountRemainingLessFee, zeroForOne);\n }\n } else {\n swapStep.amountOut = zeroForOne ? SqrtPriceMath.getAmount1Delta(sqrtRatioTargetX32, sqrtRatioCurrentX32, liquidity, false) : SqrtPriceMath.getAmount0Delta(sqrtRatioCurrentX32, sqrtRatioTargetX32, liquidity, false);\n\n if (JSBI.greaterThanOrEqual(JSBI.multiply(amountRemaining, NEGATIVE_ONE), swapStep.amountOut)) {\n swapStep.sqrtRatioNextX32 = sqrtRatioTargetX32;\n } else {\n swapStep.sqrtRatioNextX32 = SqrtPriceMath.getNextSqrtPriceFromOutput(sqrtRatioCurrentX32, liquidity, JSBI.multiply(amountRemaining, NEGATIVE_ONE), zeroForOne);\n }\n }\n\n var max = JSBI.equal(sqrtRatioTargetX32, swapStep.sqrtRatioNextX32);\n\n if (zeroForOne) {\n swapStep.amountIn = max && exactIn ? swapStep.amountIn : SqrtPriceMath.getAmount0Delta(swapStep.sqrtRatioNextX32, sqrtRatioCurrentX32, liquidity, true);\n swapStep.amountOut = max && !exactIn ? swapStep.amountOut : SqrtPriceMath.getAmount1Delta(swapStep.sqrtRatioNextX32, sqrtRatioCurrentX32, liquidity, false);\n } else {\n swapStep.amountIn = max && exactIn ? swapStep.amountIn : SqrtPriceMath.getAmount1Delta(sqrtRatioCurrentX32, swapStep.sqrtRatioNextX32, liquidity, true);\n swapStep.amountOut = max && !exactIn ? swapStep.amountOut : SqrtPriceMath.getAmount0Delta(sqrtRatioCurrentX32, swapStep.sqrtRatioNextX32, liquidity, false);\n }\n\n if (!exactIn && JSBI.greaterThan(swapStep.amountOut, JSBI.multiply(amountRemaining, NEGATIVE_ONE))) {\n swapStep.amountOut = JSBI.multiply(amountRemaining, NEGATIVE_ONE);\n }\n\n if (exactIn && JSBI.notEqual(swapStep.sqrtRatioNextX32, sqrtRatioTargetX32)) {\n // we didn't reach the target, so take the remainder of the maximum input as fee\n swapStep.feeAmount = JSBI.subtract(amountRemaining, swapStep.amountIn);\n } else {\n swapStep.feeAmount = FullMath.mulDivCeil(swapStep.amountIn, JSBI.BigInt(feePips), JSBI.subtract(MAX_FEE, JSBI.BigInt(feePips)));\n }\n\n return [swapStep.sqrtRatioNextX32, swapStep.amountIn, swapStep.amountOut, swapStep.feeAmount];\n };\n\n return SwapMath;\n}();\n\n/**\r\n * Decodes the 256 bit bitmap stored in a bitmap account\r\n * @param x Bitmap encoded as [u64; 4]\r\n * @returns 256 bit word\r\n */\n\nfunction generateBitmapWord(x) {\n return x[0].add(x[1].shln(64)).add(x[2].shln(128)).add(x[3].shln(192));\n}\n/**\r\n * Returns the most significant non-zero bit in the word\r\n * @param x\r\n * @returns\r\n */\n\nfunction msb(x) {\n return x.bitLength() - 1;\n}\n/**\r\n * Returns the least significant non-zero bit in the word\r\n * @param x\r\n * @returns\r\n */\n\nfunction lsb(x) {\n return x.zeroBits();\n}\n/**\r\n * Returns the bitmap index (0 - 255) for the next initialized tick.\r\n *\r\n * If no initialized tick is available, returns the first bit (index 0) the word in lte case,\r\n * and the last bit in gte case.\r\n * @param word The bitmap word as a u256 number\r\n * @param bitPos The starting bit position\r\n * @param lte Whether to search for the next initialized tick to the left (less than or equal to the starting tick),\r\n * or to the right (greater than or equal to)\r\n * @returns Bit index and whether it is initialized\r\n */\n\nfunction nextInitializedBit(word, bitPos, lte) {\n if (lte) {\n // all the 1s at or to the right of the current bit_pos\n var mask = new BN(1).shln(bitPos).subn(1).add(new BN(1).shln(bitPos));\n var masked = word.and(mask);\n var initialized = !masked.eqn(0);\n var next = initialized ? msb(masked) : 0;\n return {\n next: next,\n initialized: initialized\n };\n } else {\n // all the 1s at or to the left of the bit_pos\n var _mask = new BN(1).shln(bitPos).subn(1).notn(256);\n\n var _masked = word.and(_mask);\n\n var _initialized = !_masked.eqn(0);\n\n var _next = _initialized ? lsb(_masked) : 255;\n\n return {\n next: _next,\n initialized: _initialized\n };\n }\n}\nfunction buildTick(wordPos, nextBit, tickSpacing) {\n return ((wordPos << 8) + nextBit) * tickSpacing;\n}\n\nfunction mulShift(val, mulBy) {\n return JSBI.signedRightShift(JSBI.multiply(val, JSBI.BigInt(mulBy)), JSBI.BigInt(64));\n}\n\nvar Q32$1 = /*#__PURE__*/JSBI.exponentiate( /*#__PURE__*/JSBI.BigInt(2), /*#__PURE__*/JSBI.BigInt(32));\nvar TickMath = /*#__PURE__*/function () {\n /**\r\n * Cannot be constructed.\r\n */\n function TickMath() {}\n /**\r\n * Returns the sqrt ratio as a Q32.32 for the given tick. The sqrt ratio is computed as sqrt(1.0001)^tick\r\n * @param tick the tick for which to compute the sqrt ratio\r\n */\n\n\n TickMath.getSqrtRatioAtTick = function getSqrtRatioAtTick(tick) {\n !(tick >= TickMath.MIN_TICK && tick <= TickMath.MAX_TICK && Number.isInteger(tick)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'TICK') : invariant(false) : void 0;\n var absTick = tick < 0 ? tick * -1 : tick;\n var ratio = (absTick & 0x1) != 0 ? JSBI.BigInt('0xfffcb933bd6fb800') : JSBI.BigInt('0x10000000000000000');\n if ((absTick & 0x2) != 0) ratio = mulShift(ratio, '0xfff97272373d4000');\n if ((absTick & 0x4) != 0) ratio = mulShift(ratio, '0xfff2e50f5f657000');\n if ((absTick & 0x8) != 0) ratio = mulShift(ratio, '0xffe5caca7e10f000');\n if ((absTick & 0x10) != 0) ratio = mulShift(ratio, '0xffcb9843d60f7000');\n if ((absTick & 0x20) != 0) ratio = mulShift(ratio, '0xff973b41fa98e800');\n if ((absTick & 0x40) != 0) ratio = mulShift(ratio, '0xff2ea16466c9b000');\n if ((absTick & 0x80) != 0) ratio = mulShift(ratio, '0xfe5dee046a9a3800');\n if ((absTick & 0x100) != 0) ratio = mulShift(ratio, '0xfcbe86c7900bb000');\n if ((absTick & 0x200) != 0) ratio = mulShift(ratio, '0xf987a7253ac65800');\n if ((absTick & 0x400) != 0) ratio = mulShift(ratio, '0xf3392b0822bb6000');\n if ((absTick & 0x800) != 0) ratio = mulShift(ratio, '0xe7159475a2caf000');\n if ((absTick & 0x1000) != 0) ratio = mulShift(ratio, '0xd097f3bdfd2f2000');\n if ((absTick & 0x2000) != 0) ratio = mulShift(ratio, '0xa9f746462d9f8000');\n if ((absTick & 0x4000) != 0) ratio = mulShift(ratio, '0x70d869a156f31c00');\n if ((absTick & 0x8000) != 0) ratio = mulShift(ratio, '0x31be135f97ed3200');\n if ((absTick & 0x10000) != 0) ratio = mulShift(ratio, '0x9aa508b5b85a500');\n if ((absTick & 0x20000) != 0) ratio = mulShift(ratio, '0x5d6af8dedc582c');\n if (tick > 0) ratio = JSBI.divide(MaxUint128, ratio); // back to Q32\n\n return JSBI.greaterThan(JSBI.remainder(ratio, Q32$1), ZERO) ? JSBI.add(JSBI.divide(ratio, Q32$1), ONE) : JSBI.divide(ratio, Q32$1);\n }\n /**\r\n * Returns the tick corresponding to a given sqrt ratio, s.t. #getSqrtRatioAtTick(tick) <= sqrtRatioX32\r\n * and #getSqrtRatioAtTick(tick + 1) > sqrtRatioX32\r\n * @param sqrtRatioX32 the sqrt ratio as a Q32.32 for which to compute the tick\r\n */\n ;\n\n TickMath.getTickAtSqrtRatio = function getTickAtSqrtRatio(sqrtRatioX32) {\n !(JSBI.greaterThanOrEqual(sqrtRatioX32, TickMath.MIN_SQRT_RATIO) && JSBI.lessThan(sqrtRatioX32, TickMath.MAX_SQRT_RATIO)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'SQRT_RATIO') : invariant(false) : void 0;\n var msb$1 = msb(new BN(sqrtRatioX32.toString()));\n var r;\n\n if (JSBI.greaterThanOrEqual(JSBI.BigInt(msb$1), JSBI.BigInt(32))) {\n r = JSBI.signedRightShift(sqrtRatioX32, JSBI.BigInt(msb$1 - 31));\n } else {\n r = JSBI.leftShift(sqrtRatioX32, JSBI.BigInt(31 - msb$1));\n } // 128,64 changed to 32,16\n\n\n var log_2 = JSBI.leftShift(JSBI.subtract(JSBI.BigInt(msb$1), JSBI.BigInt(32)), JSBI.BigInt(16));\n\n for (var i = 0; i < 14; i++) {\n r = JSBI.signedRightShift(JSBI.multiply(r, r), JSBI.BigInt(31));\n var f = JSBI.signedRightShift(r, JSBI.BigInt(32));\n log_2 = JSBI.bitwiseOr(log_2, JSBI.leftShift(f, JSBI.BigInt(15 - i)));\n r = JSBI.signedRightShift(r, f);\n }\n\n var log_sqrt10001 = JSBI.multiply(log_2, JSBI.BigInt('908567298'));\n var tickLow = JSBI.toNumber(JSBI.signedRightShift(JSBI.subtract(log_sqrt10001, JSBI.BigInt('42949672')), JSBI.BigInt(32)));\n var tickHigh = JSBI.toNumber(JSBI.signedRightShift(JSBI.add(log_sqrt10001, JSBI.BigInt('3677218864')), JSBI.BigInt(32)));\n return tickLow === tickHigh ? tickLow : JSBI.lessThanOrEqual(TickMath.getSqrtRatioAtTick(tickHigh), sqrtRatioX32) ? tickHigh : tickLow;\n };\n\n return TickMath;\n}();\n/**\r\n * The minimum tick that can be used on any pool.\r\n */\n\nTickMath.MIN_TICK = -221818;\n/**\r\n * The maximum tick that can be used on any pool.\r\n */\n\nTickMath.MAX_TICK = -TickMath.MIN_TICK;\n/**\r\n * The sqrt ratio corresponding to the minimum tick that could be used on any pool.\r\n */\n\nTickMath.MIN_SQRT_RATIO = /*#__PURE__*/JSBI.BigInt('65537');\n/**\r\n * The sqrt ratio corresponding to the maximum tick that could be used on any pool.\r\n */\n\nTickMath.MAX_SQRT_RATIO = /*#__PURE__*/JSBI.BigInt('281472331703918');\n\n/**\r\n * This tick data provider does not know how to fetch any tick data. It throws whenever it is required. Useful if you\r\n * do not need to load tick data for your use case.\r\n */\nvar NoTickDataProvider = /*#__PURE__*/function () {\n function NoTickDataProvider() {}\n\n var _proto = NoTickDataProvider.prototype;\n\n _proto.getTickAddress = function getTickAddress(tick) {\n throw new Error('Method not implemented.');\n };\n\n _proto.getTick = function getTick(_tick) {\n throw new Error(NoTickDataProvider.ERROR_MESSAGE);\n };\n\n _proto.nextInitializedTickWithinOneWord = function nextInitializedTickWithinOneWord(_tick, _lte, _tickSpacing) {\n throw new Error(NoTickDataProvider.ERROR_MESSAGE);\n };\n\n return NoTickDataProvider;\n}();\nNoTickDataProvider.ERROR_MESSAGE = 'No tick data provider was given';\n\n/**\r\n * By default, pools will not allow operations that require ticks.\r\n */\n\nvar NO_TICK_DATA_PROVIDER_DEFAULT = /*#__PURE__*/new NoTickDataProvider();\n/**\r\n * Represents a V3 pool\r\n */\n\nvar Pool = /*#__PURE__*/function () {\n /**\r\n * Construct a pool\r\n * @param tokenA One of the tokens in the pool\r\n * @param tokenB The other token in the pool\r\n * @param fee The fee in hundredths of a bips of the input amount of every swap that is collected by the pool\r\n * @param sqrtRatioX32 The sqrt of the current ratio of amounts of token1 to token0\r\n * @param liquidity The current value of in range liquidity\r\n * @param tickCurrent The current tick of the pool\r\n * @param tickDataProvider The current state of the pool ticks or a data provider that can return tick data\r\n */\n function Pool(tokenA, tokenB, fee, sqrtRatioX32, liquidity, tickCurrent, tickDataProvider) {\n if (tickDataProvider === void 0) {\n tickDataProvider = NO_TICK_DATA_PROVIDER_DEFAULT;\n }\n\n !(Number.isInteger(fee) && fee < 1000000) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'FEE') : invariant(false) : void 0;\n var tickCurrentSqrtRatioX32 = TickMath.getSqrtRatioAtTick(tickCurrent);\n var nextTickSqrtRatioX32 = TickMath.getSqrtRatioAtTick(tickCurrent + 1);\n !(JSBI.greaterThanOrEqual(sqrtRatioX32, tickCurrentSqrtRatioX32) && JSBI.lessThanOrEqual(sqrtRatioX32, nextTickSqrtRatioX32)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'PRICE_BOUNDS') : invariant(false) : void 0;\n\n var _ref = tokenA.sortsBefore(tokenB) ? [tokenA, tokenB] : [tokenB, tokenA];\n\n this.token0 = _ref[0];\n this.token1 = _ref[1];\n this.fee = fee;\n this.sqrtRatioX32 = sqrtRatioX32;\n this.liquidity = liquidity;\n this.tickCurrent = tickCurrent;\n this.tickDataProvider = tickDataProvider;\n }\n\n Pool.getAddress = function getAddress(tokenA, tokenB, fee) {\n return computePoolAddress({\n factoryAddress: FACTORY_ADDRESS,\n fee: fee,\n tokenA: tokenA,\n tokenB: tokenB\n });\n }\n /**\r\n * Returns true if the token is either token0 or token1\r\n * @param token The token to check\r\n * @returns True if token is either token0 or token\r\n */\n ;\n\n var _proto = Pool.prototype;\n\n _proto.involvesToken = function involvesToken(token) {\n return token.equals(this.token0) || token.equals(this.token1);\n }\n /**\r\n * Returns the current mid price of the pool in terms of token0, i.e. the ratio of token1 over token0\r\n */\n ;\n\n /**\r\n * Return the price of the given token in terms of the other token in the pool.\r\n * @param token The token to return price of\r\n * @returns The price of the given token, in terms of the other.\r\n */\n _proto.priceOf = function priceOf(token) {\n !this.involvesToken(token) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'TOKEN') : invariant(false) : void 0;\n return token.equals(this.token0) ? this.token0Price : this.token1Price;\n }\n /**\r\n * Returns the chain ID of the tokens in the pool.\r\n */\n ;\n\n /**\r\n * Given an input amount of a token, return the computed output amount, and a pool with state updated after the trade\r\n * @param inputAmount The input amount for which to quote the output amount\r\n * @param sqrtPriceLimitX32 The Q32.32 sqrt price limit\r\n * @returns The output amount and the pool with updated state\r\n */\n _proto.getOutputAmount = function getOutputAmount(inputAmount, sqrtPriceLimitX32) {\n !this.involvesToken(inputAmount.currency) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'TOKEN') : invariant(false) : void 0;\n var zeroForOne = inputAmount.currency.equals(this.token0);\n\n var _this$swap = this.swap(zeroForOne, inputAmount.quotient, sqrtPriceLimitX32),\n outputAmount = _this$swap.amountCalculated,\n sqrtRatioX32 = _this$swap.sqrtRatioX32,\n liquidity = _this$swap.liquidity,\n tickCurrent = _this$swap.tickCurrent,\n accounts = _this$swap.accounts;\n\n var outputToken = zeroForOne ? this.token1 : this.token0;\n return [CurrencyAmount.fromRawAmount(outputToken, JSBI.multiply(outputAmount, NEGATIVE_ONE)), new Pool(this.token0, this.token1, this.fee, sqrtRatioX32, liquidity, tickCurrent, this.tickDataProvider), accounts];\n }\n /**\r\n * Given a desired output amount of a token, return the computed input amount and a pool with state updated after the trade\r\n * @param outputAmount the output amount for which to quote the input amount\r\n * @param sqrtPriceLimitX32 The Q32.32 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\r\n * @returns The input amount and the pool with updated state\r\n */\n ;\n\n _proto.getInputAmount = function getInputAmount(outputAmount, sqrtPriceLimitX32) {\n !(outputAmount.currency.isToken && this.involvesToken(outputAmount.currency)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'TOKEN') : invariant(false) : void 0;\n var zeroForOne = outputAmount.currency.equals(this.token1);\n\n var _this$swap2 = this.swap(zeroForOne, JSBI.multiply(outputAmount.quotient, NEGATIVE_ONE), sqrtPriceLimitX32),\n inputAmount = _this$swap2.amountCalculated,\n sqrtRatioX32 = _this$swap2.sqrtRatioX32,\n liquidity = _this$swap2.liquidity,\n tickCurrent = _this$swap2.tickCurrent;\n\n var inputToken = zeroForOne ? this.token0 : this.token1;\n return [CurrencyAmount.fromRawAmount(inputToken, inputAmount), new Pool(this.token0, this.token1, this.fee, sqrtRatioX32, liquidity, tickCurrent, this.tickDataProvider)];\n }\n /**\r\n * Simulate a swap\r\n * @param zeroForOne Whether the amount in is token0 or token1\r\n * @param amountSpecified The amount of the swap, which implicitly configures the swap as exact input (positive), or exact output (negative)\r\n * @param sqrtPriceLimitX32 The Q32.32 sqrt price limit. If zero for one, the price cannot be less than this value after the swap. If one for zero, the price cannot be greater than this value after the swap\r\n * @returns amountCalculated\r\n * @returns sqrtRatioX32\r\n * @returns liquidity\r\n * @returns tickCurrent\r\n * @returns accounts Tick accounts flipped and bitmaps traversed\r\n */\n ;\n\n _proto.swap = function swap(zeroForOne, amountSpecified, sqrtPriceLimitX32) {\n !JSBI.notEqual(amountSpecified, ZERO) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'AMOUNT_LESS_THAN_0') : invariant(false) : void 0;\n if (!sqrtPriceLimitX32) sqrtPriceLimitX32 = zeroForOne ? JSBI.add(TickMath.MIN_SQRT_RATIO, ONE) : JSBI.subtract(TickMath.MAX_SQRT_RATIO, ONE);\n\n if (zeroForOne) {\n !JSBI.greaterThan(sqrtPriceLimitX32, TickMath.MIN_SQRT_RATIO) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RATIO_MIN') : invariant(false) : void 0;\n !JSBI.lessThan(sqrtPriceLimitX32, this.sqrtRatioX32) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RATIO_CURRENT') : invariant(false) : void 0;\n } else {\n !JSBI.lessThan(sqrtPriceLimitX32, TickMath.MAX_SQRT_RATIO) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RATIO_MAX') : invariant(false) : void 0;\n !JSBI.greaterThan(sqrtPriceLimitX32, this.sqrtRatioX32) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'RATIO_CURRENT') : invariant(false) : void 0;\n }\n\n var exactInput = JSBI.greaterThanOrEqual(amountSpecified, ZERO);\n var state = {\n amountSpecifiedRemaining: amountSpecified,\n amountCalculated: ZERO,\n sqrtPriceX32: this.sqrtRatioX32,\n tick: this.tickCurrent,\n accounts: [],\n liquidity: this.liquidity\n };\n var lastSavedWordPos;\n var loopCount = 0; // loop across ticks until input liquidity is consumed, or the limit price is reached\n\n while (JSBI.notEqual(state.amountSpecifiedRemaining, ZERO) && state.sqrtPriceX32 != sqrtPriceLimitX32 && state.tick < TickMath.MAX_TICK && state.tick > TickMath.MIN_TICK) {\n if (loopCount > 8) {\n throw Error('account limit');\n }\n\n var step = {};\n step.sqrtPriceStartX32 = state.sqrtPriceX32; // save the bitmap, and the tick account if it is initialized\n\n var nextInitTick = this.tickDataProvider.nextInitializedTickWithinOneWord(state.tick, zeroForOne, this.tickSpacing);\n step.tickNext = nextInitTick[0];\n step.initialized = nextInitTick[1];\n var wordPos = nextInitTick[2];\n var bitmapAddress = nextInitTick[4];\n\n if (lastSavedWordPos !== wordPos) {\n state.accounts.push({\n pubkey: bitmapAddress,\n isWritable: false,\n isSigner: false\n });\n lastSavedWordPos = wordPos;\n }\n\n if (step.tickNext < TickMath.MIN_TICK) {\n step.tickNext = TickMath.MIN_TICK;\n } else if (step.tickNext > TickMath.MAX_TICK) {\n step.tickNext = TickMath.MAX_TICK;\n }\n\n step.sqrtPriceNextX32 = TickMath.getSqrtRatioAtTick(step.tickNext);\n\n var _SwapMath$computeSwap = SwapMath.computeSwapStep(state.sqrtPriceX32, (zeroForOne ? JSBI.lessThan(step.sqrtPriceNextX32, sqrtPriceLimitX32) : JSBI.greaterThan(step.sqrtPriceNextX32, sqrtPriceLimitX32)) ? sqrtPriceLimitX32 : step.sqrtPriceNextX32, state.liquidity, state.amountSpecifiedRemaining, this.fee);\n\n state.sqrtPriceX32 = _SwapMath$computeSwap[0];\n step.amountIn = _SwapMath$computeSwap[1];\n step.amountOut = _SwapMath$computeSwap[2];\n step.feeAmount = _SwapMath$computeSwap[3];\n\n if (exactInput) {\n // subtract the input amount. The loop exits if remaining amount becomes 0\n state.amountSpecifiedRemaining = JSBI.subtract(state.amountSpecifiedRemaining, JSBI.add(step.amountIn, step.feeAmount));\n state.amountCalculated = JSBI.subtract(state.amountCalculated, step.amountOut);\n } else {\n state.amountSpecifiedRemaining = JSBI.add(state.amountSpecifiedRemaining, step.amountOut);\n state.amountCalculated = JSBI.add(state.amountCalculated, JSBI.add(step.amountIn, step.feeAmount));\n } // TODO\n\n\n if (JSBI.equal(state.sqrtPriceX32, step.sqrtPriceNextX32)) {\n // if the tick is initialized, run the tick transition\n if (step.initialized) {\n var tickNext = this.tickDataProvider.getTick(step.tickNext); // push the crossed tick to accounts array\n\n state.accounts.push({\n pubkey: tickNext.address,\n isWritable: true,\n isSigner: false\n }); // get the liquidity at this tick\n\n var liquidityNet = tickNext.liquidityNet; // if we're moving leftward, we interpret liquidityNet as the opposite sign\n // safe because liquidityNet cannot be type(int128).min\n\n if (zeroForOne) liquidityNet = JSBI.multiply(liquidityNet, NEGATIVE_ONE);\n state.liquidity = LiquidityMath.addDelta(state.liquidity, liquidityNet);\n }\n\n state.tick = zeroForOne ? step.tickNext - 1 : step.tickNext;\n } else if (state.sqrtPriceX32 != step.sqrtPriceStartX32) {\n // recompute unless we're on a lower tick boundary (i.e. already transitioned ticks), and haven't moved\n state.tick = TickMath.getTickAtSqrtRatio(state.sqrtPriceX32);\n }\n\n ++loopCount;\n }\n\n return {\n amountCalculated: state.amountCalculated,\n sqrtRatioX32: state.sqrtPriceX32,\n liquidity: state.liquidity,\n tickCurrent: state.tick,\n accounts: state.accounts\n };\n };\n\n _createClass(Pool, [{\n key: \"token0Price\",\n get: function get() {\n var _this$_token0Price;\n\n return (_this$_token0Price = this._token0Price) != null ? _this$_token0Price : this._token0Price = new Price(this.token0, this.token1, Q64, JSBI.multiply(this.sqrtRatioX32, this.sqrtRatioX32));\n }\n /**\r\n * Returns the current mid price of the pool in terms of token1, i.e. the ratio of token0 over token1\r\n */\n\n }, {\n key: \"token1Price\",\n get: function get() {\n var _this$_token1Price;\n\n return (_this$_token1Price = this._token1Price) != null ? _this$_token1Price : this._token1Price = new Price(this.token1, this.token0, JSBI.multiply(this.sqrtRatioX32, this.sqrtRatioX32), Q64);\n }\n }, {\n key: \"chainId\",\n get: function get() {\n return this.token0.chainId;\n }\n }, {\n key: \"tickSpacing\",\n get: function get() {\n return TICK_SPACINGS[this.fee];\n }\n }]);\n\n return Pool;\n}();\n\n/**\r\n * Returns an imprecise maximum amount of liquidity received for a given amount of token 0.\r\n * This function is available to accommodate LiquidityAmounts#getLiquidityForAmount0 in the v3 periphery,\r\n * which could be more precise by at least 32 bits by dividing by Q64 instead of Q96 in the intermediate step,\r\n * and shifting the subtracted ratio left by 32 bits. This imprecise calculation will likely be replaced in a future\r\n * v3 router contract.\r\n * @param sqrtRatioAX32 The price at the lower boundary\r\n * @param sqrtRatioBX32 The price at the upper boundary\r\n * @param amount0 The token0 amount\r\n * @returns liquidity for amount0, imprecise\r\n */\n\nfunction maxLiquidityForAmount0Imprecise(sqrtRatioAX32, sqrtRatioBX32, amount0) {\n if (JSBI.greaterThan(sqrtRatioAX32, sqrtRatioBX32)) {\n var _ref = [sqrtRatioBX32, sqrtRatioAX32];\n sqrtRatioAX32 = _ref[0];\n sqrtRatioBX32 = _ref[1];\n }\n\n var intermediate = FullMath.mulDivFloor(sqrtRatioAX32, sqrtRatioBX32, MaxUint32);\n return FullMath.mulDivFloor(JSBI.BigInt(amount0), intermediate, JSBI.subtract(sqrtRatioBX32, sqrtRatioAX32));\n}\n/**\r\n * Computes the maximum amount of liquidity received for a given amount of token1\r\n * @param sqrtRatioAX32 The price at the lower tick boundary\r\n * @param sqrtRatioBX32 The price at the upper tick boundary\r\n * @param amount1 The token1 amount\r\n * @returns liquidity for amount1\r\n */\n\n\nfunction maxLiquidityForAmount1(sqrtRatioAX32, sqrtRatioBX32, amount1) {\n if (JSBI.greaterThan(sqrtRatioAX32, sqrtRatioBX32)) {\n var _ref3 = [sqrtRatioBX32, sqrtRatioAX32];\n sqrtRatioAX32 = _ref3[0];\n sqrtRatioBX32 = _ref3[1];\n }\n\n return FullMath.mulDivFloor(JSBI.BigInt(amount1), MaxUint32, JSBI.subtract(sqrtRatioBX32, sqrtRatioAX32));\n}\n/**\r\n * Computes the maximum amount of liquidity received for a given amount of token0, token1,\r\n * and the prices at the tick boundaries.\r\n * @param sqrtRatioCurrentX32 the current price\r\n * @param sqrtRatioAX32 price at lower boundary\r\n * @param sqrtRatioBX32 price at upper boundary\r\n * @param amount0 token0 amount\r\n * @param amount1 token1 amount\r\n * @param useFullPrecision if false, liquidity will be maximized according to what the router can calculate,\r\n * not what core can theoretically support\r\n */\n\n\nfunction maxLiquidityForAmounts(sqrtRatioCurrentX32, sqrtRatioAX32, sqrtRatioBX32, amount0, amount1, useFullPrecision) {\n if (JSBI.greaterThan(sqrtRatioAX32, sqrtRatioBX32)) {\n var _ref4 = [sqrtRatioBX32, sqrtRatioAX32];\n sqrtRatioAX32 = _ref4[0];\n sqrtRatioBX32 = _ref4[1];\n } // trying this out?\n var maxLiquidityForAmount0 = maxLiquidityForAmount0Imprecise;\n\n if (JSBI.lessThanOrEqual(sqrtRatioCurrentX32, sqrtRatioAX32)) {\n return maxLiquidityForAmount0(sqrtRatioAX32, sqrtRatioBX32, amount0);\n } else if (JSBI.lessThan(sqrtRatioCurrentX32, sqrtRatioBX32)) {\n var liquidity0 = maxLiquidityForAmount0(sqrtRatioCurrentX32, sqrtRatioBX32, amount0);\n var liquidity1 = maxLiquidityForAmount1(sqrtRatioAX32, sqrtRatioCurrentX32, amount1);\n return JSBI.lessThan(liquidity0, liquidity1) ? liquidity0 : liquidity1;\n } else {\n return maxLiquidityForAmount1(sqrtRatioAX32, sqrtRatioBX32, amount1);\n }\n}\n\n/**\r\n * Returns the sqrt ratio as a Q32.32 corresponding to a given ratio of amount1 and amount0\r\n * @param amount1 The numerator amount i.e., the amount of token1\r\n * @param amount0 The denominator amount i.e., the amount of token0\r\n * @returns The sqrt ratio\r\n */\n\nfunction encodeSqrtRatioX32(amount1, amount0) {\n var numerator = JSBI.leftShift(JSBI.BigInt(amount1), JSBI.BigInt(64));\n var denominator = JSBI.BigInt(amount0);\n var ratioX64 = JSBI.divide(numerator, denominator);\n return sqrt(ratioX64);\n}\n\n/**\r\n * Returns a price object corresponding to the input tick and the base/quote token\r\n * Inputs must be tokens because the address order is used to interpret the price represented by the tick\r\n * @param baseToken the base token of the price\r\n * @param quoteToken the quote token of the price\r\n * @param tick the tick for which to return the price\r\n */\n\nfunction tickToPrice(baseToken, quoteToken, tick) {\n var sqrtRatioX32 = TickMath.getSqrtRatioAtTick(tick);\n var ratioX64 = JSBI.multiply(sqrtRatioX32, sqrtRatioX32);\n return baseToken.sortsBefore(quoteToken) ? new Price(baseToken, quoteToken, Q64, ratioX64) : new Price(baseToken, quoteToken, ratioX64, Q64);\n}\n/**\r\n * Returns the first tick for which the given price is greater than or equal to the tick price\r\n * @param price for which to return the closest tick that represents a price less than or equal to the input price,\r\n * i.e. the price of the returned tick is less than or equal to the input price\r\n */\n\nfunction priceToClosestTick(price) {\n var sorted = price.baseCurrency.sortsBefore(price.quoteCurrency);\n var sqrtRatioX96 = sorted ? encodeSqrtRatioX32(price.numerator, price.denominator) : encodeSqrtRatioX32(price.denominator, price.numerator);\n var tick = TickMath.getTickAtSqrtRatio(sqrtRatioX96);\n var nextTickPrice = tickToPrice(price.baseCurrency, price.quoteCurrency, tick + 1);\n\n if (sorted) {\n if (!price.lessThan(nextTickPrice)) {\n tick++;\n }\n } else {\n if (!price.greaterThan(nextTickPrice)) {\n tick++;\n }\n }\n\n return tick;\n}\n\n/**\r\n * Represents a position on a Uniswap V3 Pool\r\n */\n\nvar Position = /*#__PURE__*/function () {\n /**\r\n * Constructs a position for a given pool with the given liquidity\r\n * @param pool For which pool the liquidity is assigned\r\n * @param liquidity The amount of liquidity that is in the position\r\n * @param tickLower The lower tick of the position\r\n * @param tickUpper The upper tick of the position\r\n */\n function Position(_ref) {\n var pool = _ref.pool,\n liquidity = _ref.liquidity,\n tickLower = _ref.tickLower,\n tickUpper = _ref.tickUpper;\n // cached resuts for the getters\n this._token0Amount = null;\n this._token1Amount = null;\n this._mintAmounts = null;\n !(tickLower < tickUpper) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'TICK_ORDER') : invariant(false) : void 0;\n !(tickLower >= TickMath.MIN_TICK && tickLower % pool.tickSpacing === 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'TICK_LOWER') : invariant(false) : void 0;\n !(tickUpper <= TickMath.MAX_TICK && tickUpper % pool.tickSpacing === 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'TICK_UPPER') : invariant(false) : void 0;\n this.pool = pool;\n this.tickLower = tickLower;\n this.tickUpper = tickUpper;\n this.liquidity = JSBI.BigInt(liquidity);\n }\n /**\r\n * Returns the price of token0 at the lower tick\r\n */\n\n\n var _proto = Position.prototype;\n\n /**\r\n * Returns the lower and upper sqrt ratios if the price 'slips' up to slippage tolerance percentage\r\n * @param slippageTolerance The amount by which the price can 'slip' before the transaction will revert\r\n * @returns The sqrt ratios after slippage\r\n */\n _proto.ratiosAfterSlippage = function ratiosAfterSlippage(slippageTolerance) {\n var priceLower = this.pool.token0Price.asFraction.multiply(new Percent(1).subtract(slippageTolerance));\n var priceUpper = this.pool.token0Price.asFraction.multiply(slippageTolerance.add(1));\n var sqrtRatioX32Lower = encodeSqrtRatioX32(priceLower.numerator, priceLower.denominator);\n\n if (JSBI.lessThanOrEqual(sqrtRatioX32Lower, TickMath.MIN_SQRT_RATIO)) {\n sqrtRatioX32Lower = JSBI.add(TickMath.MIN_SQRT_RATIO, JSBI.BigInt(1));\n }\n\n var sqrtRatioX32Upper = encodeSqrtRatioX32(priceUpper.numerator, priceUpper.denominator);\n\n if (JSBI.greaterThanOrEqual(sqrtRatioX32Upper, TickMath.MAX_SQRT_RATIO)) {\n sqrtRatioX32Upper = JSBI.subtract(TickMath.MAX_SQRT_RATIO, JSBI.BigInt(1));\n }\n\n return {\n sqrtRatioX32Lower: sqrtRatioX32Lower,\n sqrtRatioX32Upper: sqrtRatioX32Upper\n };\n }\n /**\r\n * Returns the minimum amounts that must be sent in order to safely mint the amount of liquidity held by the position\r\n * with the given slippage tolerance\r\n * @param slippageTolerance Tolerance of unfavorable slippage from the current price\r\n * @returns The amounts, with slippage\r\n */\n ;\n\n _proto.mintAmountsWithSlippage = function mintAmountsWithSlippage(slippageTolerance) {\n // get lower/upper prices\n var _this$ratiosAfterSlip = this.ratiosAfterSlippage(slippageTolerance),\n sqrtRatioX32Upper = _this$ratiosAfterSlip.sqrtRatioX32Upper,\n sqrtRatioX32Lower = _this$ratiosAfterSlip.sqrtRatioX32Lower; // construct counterfactual pools\n\n\n var poolLower = new Pool(this.pool.token0, this.pool.token1, this.pool.fee, sqrtRatioX32Lower, JSBI.BigInt(0)\n /* liquidity doesn't matter */\n , TickMath.getTickAtSqrtRatio(sqrtRatioX32Lower));\n var poolUpper = new Pool(this.pool.token0, this.pool.token1, this.pool.fee, sqrtRatioX32Upper, JSBI.BigInt(0)\n /* liquidity doesn't matter */\n , TickMath.getTickAtSqrtRatio(sqrtRatioX32Upper)); // because the router is imprecise, we need to calculate the position that will be created (assuming no slippage)\n\n var positionThatWillBeCreated = Position.fromAmounts(_extends({\n pool: this.pool,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper\n }, this.mintAmounts, {\n useFullPrecision: false\n })); // we want the smaller amounts...\n // ...which occurs at the upper price for amount0...\n\n var amount0 = new Position({\n pool: poolUpper,\n liquidity: positionThatWillBeCreated.liquidity,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper\n }).mintAmounts.amount0; // ...and the lower for amount1\n\n var amount1 = new Position({\n pool: poolLower,\n liquidity: positionThatWillBeCreated.liquidity,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper\n }).mintAmounts.amount1;\n return {\n amount0: amount0,\n amount1: amount1\n };\n }\n /**\r\n * Returns the minimum amounts that should be requested in order to safely burn the amount of liquidity held by the\r\n * position with the given slippage tolerance\r\n * @param slippageTolerance tolerance of unfavorable slippage from the current price\r\n * @returns The amounts, with slippage\r\n */\n ;\n\n _proto.burnAmountsWithSlippage = function burnAmountsWithSlippage(slippageTolerance) {\n // get lower/upper prices\n var _this$ratiosAfterSlip2 = this.ratiosAfterSlippage(slippageTolerance),\n sqrtRatioX32Upper = _this$ratiosAfterSlip2.sqrtRatioX32Upper,\n sqrtRatioX32Lower = _this$ratiosAfterSlip2.sqrtRatioX32Lower; // construct counterfactual pools\n\n\n var poolLower = new Pool(this.pool.token0, this.pool.token1, this.pool.fee, sqrtRatioX32Lower, JSBI.BigInt(0)\n /* liquidity doesn't matter */\n , TickMath.getTickAtSqrtRatio(sqrtRatioX32Lower));\n var poolUpper = new Pool(this.pool.token0, this.pool.token1, this.pool.fee, sqrtRatioX32Upper, JSBI.BigInt(0)\n /* liquidity doesn't matter */\n , TickMath.getTickAtSqrtRatio(sqrtRatioX32Upper)); // we want the smaller amounts...\n // ...which occurs at the upper price for amount0...\n\n var amount0 = new Position({\n pool: poolUpper,\n liquidity: this.liquidity,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper\n }).amount0; // ...and the lower for amount1\n\n var amount1 = new Position({\n pool: poolLower,\n liquidity: this.liquidity,\n tickLower: this.tickLower,\n tickUpper: this.tickUpper\n }).amount1;\n return {\n amount0: amount0.quotient,\n amount1: amount1.quotient\n };\n }\n /**\r\n * Returns the minimum amounts that must be sent in order to mint the amount of liquidity held by the position at\r\n * the current price for the pool\r\n */\n ;\n\n /**\r\n * Computes the maximum amount of liquidity received for a given amount of token0, token1,\r\n * and the prices at the tick boundaries.\r\n * @param pool The pool for which the position should be created\r\n * @param tickLower The lower tick of the position\r\n * @param tickUpper The upper tick of the position\r\n * @param amount0 token0 amount\r\n * @param amount1 token1 amount\r\n * @param useFullPrecision If false, liquidity will be maximized according to what the router can calculate,\r\n * not what core can theoretically support\r\n * @returns The amount of liquidity for the position\r\n */\n Position.fromAmounts = function fromAmounts(_ref2) {\n var pool = _ref2.pool,\n tickLower = _ref2.tickLower,\n tickUpper = _ref2.tickUpper,\n amount0 = _ref2.amount0,\n amount1 = _ref2.amount1;\n var sqrtRatioAX32 = TickMath.getSqrtRatioAtTick(tickLower);\n var sqrtRatioBX32 = TickMath.getSqrtRatioAtTick(tickUpper);\n return new Position({\n pool: pool,\n tickLower: tickLower,\n tickUpper: tickUpper,\n liquidity: maxLiquidityForAmounts(pool.sqrtRatioX32, sqrtRatioAX32, sqrtRatioBX32, amount0, amount1)\n });\n }\n /**\r\n * Computes a position with the maximum amount of liquidity received for a given amount of token0, assuming an unlimited amount of token1\r\n * @param pool The pool for which the position is created\r\n * @param tickLower The lower tick\r\n * @param tickUpper The upper tick\r\n * @param amount0 The desired amount of token0\r\n * @param useFullPrecision If true, liquidity will be maximized according to what the router can calculate,\r\n * not what core can theoretically support\r\n * @returns The position\r\n */\n ;\n\n Position.fromAmount0 = function fromAmount0(_ref3) {\n var pool = _ref3.pool,\n tickLower = _ref3.tickLower,\n tickUpper = _ref3.tickUpper,\n amount0 = _ref3.amount0,\n useFullPrecision = _ref3.useFullPrecision;\n return Position.fromAmounts({\n pool: pool,\n tickLower: tickLower,\n tickUpper: tickUpper,\n amount0: amount0,\n amount1: MaxUint64,\n useFullPrecision: useFullPrecision\n });\n }\n /**\r\n * Computes a position with the maximum amount of liquidity received for a given amount of token1, assuming an unlimited amount of token0\r\n * @param pool The pool for which the position is created\r\n * @param tickLower The lower tick\r\n * @param tickUpper The upper tick\r\n * @param amount1 The desired amount of token1\r\n * @returns The position\r\n */\n ;\n\n Position.fromAmount1 = function fromAmount1(_ref4) {\n var pool = _ref4.pool,\n tickLower = _ref4.tickLower,\n tickUpper = _ref4.tickUpper,\n amount1 = _ref4.amount1;\n // this function always uses full precision,\n return Position.fromAmounts({\n pool: pool,\n tickLower: tickLower,\n tickUpper: tickUpper,\n amount0: MaxUint64,\n amount1: amount1,\n useFullPrecision: true\n });\n };\n\n _createClass(Position, [{\n key: \"token0PriceLower\",\n get: function get() {\n return tickToPrice(this.pool.token0, this.pool.token1, this.tickLower);\n }\n /**\r\n * Returns the price of token0 at the upper tick\r\n */\n\n }, {\n key: \"token0PriceUpper\",\n get: function get() {\n return tickToPrice(this.pool.token0, this.pool.token1, this.tickUpper);\n }\n /**\r\n * Returns the amount of token0 that this position's liquidity could be burned for at the current pool price\r\n */\n\n }, {\n key: \"amount0\",\n get: function get() {\n if (this._token0Amount === null) {\n if (this.pool.tickCurrent < this.tickLower) {\n this._token0Amount = CurrencyAmount.fromRawAmount(this.pool.token0, SqrtPriceMath.getAmount0Delta(TickMath.getSqrtRatioAtTick(this.tickLower), TickMath.getSqrtRatioAtTick(this.tickUpper), this.liquidity, false));\n } else if (this.pool.tickCurrent < this.tickUpper) {\n this._token0Amount = CurrencyAmount.fromRawAmount(this.pool.token0, SqrtPriceMath.getAmount0Delta(this.pool.sqrtRatioX32, TickMath.getSqrtRatioAtTick(this.tickUpper), this.liquidity, false));\n } else {\n this._token0Amount = CurrencyAmount.fromRawAmount(this.pool.token0, ZERO);\n }\n }\n\n return this._token0Amount;\n }\n /**\r\n * Returns the amount of token1 that this position's liquidity could be burned for at the current pool price\r\n */\n\n }, {\n key: \"amount1\",\n get: function get() {\n if (this._token1Amount === null) {\n if (this.pool.tickCurrent < this.tickLower) {\n this._token1Amount = CurrencyAmount.fromRawAmount(this.pool.token1, ZERO);\n } else if (this.pool.tickCurrent < this.tickUpper) {\n this._token1Amount = CurrencyAmount.fromRawAmount(this.pool.token1, SqrtPriceMath.getAmount1Delta(TickMath.getSqrtRatioAtTick(this.tickLower), this.pool.sqrtRatioX32, this.liquidity, false));\n } else {\n this._token1Amount = CurrencyAmount.fromRawAmount(this.pool.token1, SqrtPriceMath.getAmount1Delta(TickMath.getSqrtRatioAtTick(this.tickLower), TickMath.getSqrtRatioAtTick(this.tickUpper), this.liquidity, false));\n }\n }\n\n return this._token1Amount;\n }\n }, {\n key: \"mintAmounts\",\n get: function get() {\n if (this._mintAmounts === null) {\n if (this.pool.tickCurrent < this.tickLower) {\n return {\n amount0: SqrtPriceMath.getAmount0Delta(TickMath.getSqrtRatioAtTick(this.tickLower), TickMath.getSqrtRatioAtTick(this.tickUpper), this.liquidity, true),\n amount1: ZERO\n };\n } else if (this.pool.tickCurrent < this.tickUpper) {\n return {\n amount0: SqrtPriceMath.getAmount0Delta(this.pool.sqrtRatioX32, TickMath.getSqrtRatioAtTick(this.tickUpper), this.liquidity, true),\n amount1: SqrtPriceMath.getAmount1Delta(TickMath.getSqrtRatioAtTick(this.tickLower), this.pool.sqrtRatioX32, this.liquidity, true)\n };\n } else {\n return {\n amount0: ZERO,\n amount1: SqrtPriceMath.getAmount1Delta(TickMath.getSqrtRatioAtTick(this.tickLower), TickMath.getSqrtRatioAtTick(this.tickUpper), this.liquidity, true)\n };\n }\n }\n\n return this._mintAmounts;\n }\n }]);\n\n return Position;\n}();\n\n/**\r\n * Represents a list of pools through which a swap can occur\r\n * @template TInput The input token\r\n * @template TOutput The output token\r\n */\n\nvar Route = /*#__PURE__*/function () {\n /**\r\n * Creates an instance of route.\r\n * @param pools An array of `Pool` objects, ordered by the route the swap will take\r\n * @param input The input token\r\n * @param output The output token\r\n */\n function Route(pools, input, output) {\n this._midPrice = null;\n !(pools.length > 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'POOLS') : invariant(false) : void 0;\n var chainId = pools[0].chainId;\n var allOnSameChain = pools.every(function (pool) {\n return pool.chainId === chainId;\n });\n !allOnSameChain ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'CHAIN_IDS') : invariant(false) : void 0;\n var wrappedInput = input.wrapped;\n !pools[0].involvesToken(wrappedInput) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'INPUT') : invariant(false) : void 0;\n !pools[pools.length - 1].involvesToken(output.wrapped) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'OUTPUT') : invariant(false) : void 0;\n /**\r\n * Normalizes token0-token1 order and selects the next token/fee step to add to the path\r\n * */\n\n var tokenPath = [wrappedInput];\n\n for (var _iterator = _createForOfIteratorHelperLoose(pools.entries()), _step; !(_step = _iterator()).done;) {\n var _step$value = _step.value,\n i = _step$value[0],\n pool = _step$value[1];\n var currentInputToken = tokenPath[i];\n !(currentInputToken.equals(pool.token0) || currentInputToken.equals(pool.token1)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'PATH') : invariant(false) : void 0;\n var nextToken = currentInputToken.equals(pool.token0) ? pool.token1 : pool.token0;\n tokenPath.push(nextToken);\n }\n\n this.pools = pools;\n this.tokenPath = tokenPath;\n this.input = input;\n this.output = output != null ? output : tokenPath[tokenPath.length - 1];\n }\n\n _createClass(Route, [{\n key: \"chainId\",\n get: function get() {\n return this.pools[0].chainId;\n }\n /**\r\n * Returns the mid price of the route\r\n */\n\n }, {\n key: \"midPrice\",\n get: function get() {\n if (this._midPrice !== null) return this._midPrice;\n var price = this.pools.slice(1).reduce(function (_ref, pool) {\n var nextInput = _ref.nextInput,\n price = _ref.price;\n return nextInput.equals(pool.token0) ? {\n nextInput: pool.token1,\n price: price.multiply(pool.token0Price)\n } : {\n nextInput: pool.token0,\n price: price.multiply(pool.token1Price)\n };\n }, this.pools[0].token0.equals(this.input.wrapped) ? {\n nextInput: this.pools[0].token1,\n price: this.pools[0].token0Price\n } : {\n nextInput: this.pools[0].token0,\n price: this.pools[0].token1Price\n }).price;\n return this._midPrice = new Price(this.input, this.output, price.denominator, price.numerator);\n }\n }]);\n\n return Route;\n}();\n\n/**\r\n * Converts a big int to a hex string\r\n * @param bigintIsh\r\n * @returns The hex encoded calldata\r\n */\n\nfunction toHex(bigintIsh) {\n var bigInt = JSBI.BigInt(bigintIsh);\n var hex = bigInt.toString(16);\n\n if (hex.length % 2 !== 0) {\n hex = \"0\" + hex;\n }\n\n return \"0x\" + hex;\n}\n\n/**\r\n * Determines if a tick list is sorted\r\n * @param list The tick list\r\n * @param comparator The comparator\r\n * @returns true if sorted\r\n */\nfunction isSorted(list, comparator) {\n for (var i = 0; i < list.length - 1; i++) {\n if (comparator(list[i], list[i + 1]) > 0) {\n return false;\n }\n }\n\n return true;\n}\n\n/**\r\n * Returns the closest tick that is nearest a given tick and usable for the given tick spacing\r\n * @param tick the target tick\r\n * @param tickSpacing the spacing of the pool\r\n */\n\nfunction nearestUsableTick(tick, tickSpacing) {\n !(Number.isInteger(tick) && Number.isInteger(tickSpacing)) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'INTEGERS') : invariant(false) : void 0;\n !(tickSpacing > 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'TICK_SPACING') : invariant(false) : void 0;\n !(tick >= TickMath.MIN_TICK && tick <= TickMath.MAX_TICK) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'TICK_BOUND') : invariant(false) : void 0;\n var rounded = Math.round(tick / tickSpacing) * tickSpacing;\n if (rounded < TickMath.MIN_TICK) return rounded + tickSpacing;else if (rounded > TickMath.MAX_TICK) return rounded - tickSpacing;else return rounded;\n}\n\nfunction tickComparator(a, b) {\n return a.index - b.index;\n}\n/**\r\n * Utility methods for interacting with sorted lists of ticks\r\n */\n\n\nvar TickList = /*#__PURE__*/function () {\n /**\r\n * Cannot be constructed\r\n */\n function TickList() {}\n\n TickList.validateList = function validateList(ticks, tickSpacing) {\n !(tickSpacing > 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'TICK_SPACING_NONZERO') : invariant(false) : void 0; // ensure ticks are spaced appropriately\n\n !ticks.every(function (_ref) {\n var index = _ref.index;\n return index % tickSpacing === 0;\n }) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'TICK_SPACING') : invariant(false) : void 0; // ensure tick liquidity deltas sum to 0\n\n !JSBI.equal(ticks.reduce(function (accumulator, _ref2) {\n var liquidityNet = _ref2.liquidityNet;\n return JSBI.add(accumulator, liquidityNet);\n }, ZERO), ZERO) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'ZERO_NET') : invariant(false) : void 0;\n !isSorted(ticks, tickComparator) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'SORTED') : invariant(false) : void 0;\n };\n\n TickList.isBelowSmallest = function isBelowSmallest(ticks, tick) {\n !(ticks.length > 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'LENGTH') : invariant(false) : void 0;\n return tick < ticks[0].index;\n };\n\n TickList.isAtOrAboveLargest = function isAtOrAboveLargest(ticks, tick) {\n !(ticks.length > 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'LENGTH') : invariant(false) : void 0;\n return tick >= ticks[ticks.length - 1].index;\n };\n\n TickList.getTick = function getTick(ticks, index) {\n var tick = ticks[this.binarySearch(ticks, index)];\n !(tick.index === index) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'NOT_CONTAINED') : invariant(false) : void 0;\n return tick;\n }\n /**\r\n * Finds the largest tick in the list of ticks that is less than or equal to tick\r\n * @param ticks list of ticks\r\n * @param tick tick to find the largest tick that is less than or equal to tick\r\n * @private\r\n */\n ;\n\n TickList.binarySearch = function binarySearch(ticks, tick) {\n !!this.isBelowSmallest(ticks, tick) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'BELOW_SMALLEST') : invariant(false) : void 0;\n var l = 0;\n var r = ticks.length - 1;\n var i;\n\n while (true) {\n i = Math.floor((l + r) / 2);\n\n if (ticks[i].index <= tick && (i === ticks.length - 1 || ticks[i + 1].index > tick)) {\n return i;\n }\n\n if (ticks[i].index < tick) {\n l = i + 1;\n } else {\n r = i - 1;\n }\n }\n };\n\n TickList.nextInitializedTick = function nextInitializedTick(ticks, tick, lte) {\n if (lte) {\n !!TickList.isBelowSmallest(ticks, tick) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'BELOW_SMALLEST') : invariant(false) : void 0;\n\n if (TickList.isAtOrAboveLargest(ticks, tick)) {\n return ticks[ticks.length - 1];\n }\n\n var index = this.binarySearch(ticks, tick);\n return ticks[index];\n } else {\n !!this.isAtOrAboveLargest(ticks, tick) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'AT_OR_ABOVE_LARGEST') : invariant(false) : void 0;\n\n if (this.isBelowSmallest(ticks, tick)) {\n return ticks[0];\n }\n\n var _index = this.binarySearch(ticks, tick);\n\n return ticks[_index + 1];\n }\n };\n\n TickList.nextInitializedTickWithinOneWord = function nextInitializedTickWithinOneWord(ticks, tick, lte, tickSpacing) {\n var compressed = Math.floor(tick / tickSpacing); // matches rounding in the code\n\n if (lte) {\n var wordPos = compressed >> 8;\n var minimum = (wordPos << 8) * tickSpacing;\n\n if (TickList.isBelowSmallest(ticks, tick)) {\n return [minimum, false];\n }\n\n var index = TickList.nextInitializedTick(ticks, tick, lte).index;\n var nextInitializedTick = Math.max(minimum, index);\n return [nextInitializedTick, nextInitializedTick === index];\n } else {\n var _wordPos = compressed + 1 >> 8;\n\n var maximum = (_wordPos + 1 << 8) * tickSpacing - 1;\n\n if (this.isAtOrAboveLargest(ticks, tick)) {\n return [maximum, false];\n }\n\n var _index2 = this.nextInitializedTick(ticks, tick, lte).index;\n\n var _nextInitializedTick = Math.min(maximum, _index2);\n\n return [_nextInitializedTick, _nextInitializedTick === _index2];\n }\n };\n\n return TickList;\n}();\n\nfunction transformObservation(_ref) {\n var observation = _ref.observation,\n blockTimestamp = _ref.blockTimestamp,\n tick = _ref.tick,\n liquidity = _ref.liquidity;\n var delta = blockTimestamp.sub(observation.blockTimestamp);\n return _extends({}, observation, {\n tickCumulative: observation.tickCumulative.add(tick.mul(delta)),\n secondsPerLiquidityCumulativeX32: observation.secondsPerLiquidityCumulativeX32.add(delta.shln(32).div(liquidity.gtn(0) ? liquidity : new BN(1))),\n initialized: true\n });\n}\nfunction snapshotCumulativesInside(_ref2) {\n var poolState = _ref2.poolState,\n tickLower = _ref2.tickLower,\n tickUpper = _ref2.tickUpper,\n latestObservation = _ref2.latestObservation,\n time = _ref2.time;\n\n if (poolState.tick.lt(tickLower.tick)) {\n return {\n tickCumulativeInside: tickLower.tickCumulativeOutside.sub(tickUpper.tickCumulativeOutside),\n secondsPerLiquidityInsideX32: tickLower.secondsPerLiquidityOutsideX32.sub(tickUpper.secondsPerLiquidityOutsideX32),\n secondsInside: tickLower.secondsOutside.sub(tickUpper.secondsOutside)\n };\n } else if (poolState.tick.lt(tickUpper.tick)) {\n var _ref3 = latestObservation.blockTimestamp.eq(time) ? latestObservation : transformObservation({\n observation: latestObservation,\n blockTimestamp: time,\n tick: poolState.tick,\n liquidity: poolState.liquidity\n }),\n tickCumulative = _ref3.tickCumulative,\n secondsPerLiquidityCumulativeX32 = _ref3.secondsPerLiquidityCumulativeX32;\n\n return {\n tickCumulativeInside: tickCumulative.sub(tickLower.tickCumulativeOutside).sub(tickUpper.tickCumulativeOutside),\n secondsPerLiquidityInsideX32: secondsPerLiquidityCumulativeX32.sub(tickLower.secondsPerLiquidityOutsideX32).sub(tickUpper.secondsPerLiquidityOutsideX32),\n secondsInside: time.sub(tickLower.secondsOutside).sub(tickUpper.secondsOutside)\n };\n } else {\n return {\n tickCumulativeInside: tickUpper.tickCumulativeOutside.sub(tickLower.tickCumulativeOutside),\n secondsPerLiquidityInsideX32: tickUpper.secondsPerLiquidityOutsideX32.sub(tickLower.secondsPerLiquidityOutsideX32),\n secondsInside: tickUpper.secondsOutside.sub(tickLower.secondsOutside)\n };\n }\n}\n\nvar Tick = function Tick(_ref) {\n var index = _ref.index,\n liquidityGross = _ref.liquidityGross,\n liquidityNet = _ref.liquidityNet;\n !(index >= TickMath.MIN_TICK && index <= TickMath.MAX_TICK) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'TICK') : invariant(false) : void 0;\n this.index = index;\n this.liquidityGross = JSBI.BigInt(liquidityGross);\n this.liquidityNet = JSBI.BigInt(liquidityNet);\n};\n/**\r\n * Computes the bitmap position for a bit.\r\n * @param tickBySpacing Tick divided by spacing\r\n * @returns the word and bit position for the given tick\r\n */\n\nfunction tickPosition(tickBySpacing) {\n return {\n wordPos: tickBySpacing >> 8,\n bitPos: tickBySpacing % 256 & 255 // mask with 255 to get the output\n\n };\n}\n\nfunction createCommonjsModule(fn, module) {\n\treturn module = { exports: {} }, fn(module, module.exports), module.exports;\n}\n\nvar runtime_1 = createCommonjsModule(function (module) {\n/**\n * Copyright (c) 2014-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nvar runtime = (function (exports) {\n\n var Op = Object.prototype;\n var hasOwn = Op.hasOwnProperty;\n var undefined$1; // More compressible than void 0.\n var $Symbol = typeof Symbol === \"function\" ? Symbol : {};\n var iteratorSymbol = $Symbol.iterator || \"@@iterator\";\n var asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\";\n var toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n return obj[key];\n }\n try {\n // IE 8 has a broken Object.defineProperty that only works on DOM objects.\n define({}, \"\");\n } catch (err) {\n define = function(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;\n var generator = Object.create(protoGenerator.prototype);\n var context = new Context(tryLocsList || []);\n\n // The ._invoke method unifies the implementations of the .next,\n // .throw, and .return methods.\n generator._invoke = makeInvokeMethod(innerFn, self, context);\n\n return generator;\n }\n exports.wrap = wrap;\n\n // Try/catch helper to minimize deoptimizations. Returns a completion\n // record like context.tryEntries[i].completion. This interface could\n // have been (and was previously) designed to take a closure to be\n // invoked without arguments, but in all the cases we care about we\n // already have an existing method we want to call, so there's no need\n // to create a new function object. We can even get away with assuming\n // the method takes exactly one argument, since that happens to be true\n // in every case, so we don't have to touch the arguments object. The\n // only additional allocation required is the completion record, which\n // has a stable shape and so hopefully should be cheap to allocate.\n function tryCatch(fn, obj, arg) {\n try {\n return { type: \"normal\", arg: fn.call(obj, arg) };\n } catch (err) {\n return { type: \"throw\", arg: err };\n }\n }\n\n var GenStateSuspendedStart = \"suspendedStart\";\n var GenStateSuspendedYield = \"suspendedYield\";\n var GenStateExecuting = \"executing\";\n var GenStateCompleted = \"completed\";\n\n // Returning this object from the innerFn has the same effect as\n // breaking out of the dispatch switch statement.\n var ContinueSentinel = {};\n\n // Dummy constructor functions that we use as the .constructor and\n // .constructor.prototype properties for functions that return Generator\n // objects. For full spec compliance, you may wish to configure your\n // minifier not to mangle the names of these two functions.\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n\n // This is a polyfill for %IteratorPrototype% for environments that\n // don't natively support it.\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n\n var getProto = Object.getPrototypeOf;\n var NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n if (NativeIteratorPrototype &&\n NativeIteratorPrototype !== Op &&\n hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {\n // This environment has a native %IteratorPrototype%; use it instead\n // of the polyfill.\n IteratorPrototype = NativeIteratorPrototype;\n }\n\n var Gp = GeneratorFunctionPrototype.prototype =\n Generator.prototype = Object.create(IteratorPrototype);\n GeneratorFunction.prototype = GeneratorFunctionPrototype;\n define(Gp, \"constructor\", GeneratorFunctionPrototype);\n define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction);\n GeneratorFunction.displayName = define(\n GeneratorFunctionPrototype,\n toStringTagSymbol,\n \"GeneratorFunction\"\n );\n\n // Helper for defining the .next, .throw, and .return methods of the\n // Iterator interface in terms of a single ._invoke method.\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function(method) {\n define(prototype, method, function(arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n exports.isGeneratorFunction = function(genFun) {\n var ctor = typeof genFun === \"function\" && genFun.constructor;\n return ctor\n ? ctor === GeneratorFunction ||\n // For the native GeneratorFunction constructor, the best we can\n // do is to check its .name property.\n (ctor.displayName || ctor.name) === \"GeneratorFunction\"\n : false;\n };\n\n exports.mark = function(genFun) {\n if (Object.setPrototypeOf) {\n Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);\n } else {\n genFun.__proto__ = GeneratorFunctionPrototype;\n define(genFun, toStringTagSymbol, \"GeneratorFunction\");\n }\n genFun.prototype = Object.create(Gp);\n return genFun;\n };\n\n // Within the body of any async function, `await x` is transformed to\n // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test\n // `hasOwn.call(value, \"__await\")` to determine if the yielded value is\n // meant to be awaited.\n exports.awrap = function(arg) {\n return { __await: arg };\n };\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (record.type === \"throw\") {\n reject(record.arg);\n } else {\n var result = record.arg;\n var value = result.value;\n if (value &&\n typeof value === \"object\" &&\n hasOwn.call(value, \"__await\")) {\n return PromiseImpl.resolve(value.__await).then(function(value) {\n invoke(\"next\", value, resolve, reject);\n }, function(err) {\n invoke(\"throw\", err, resolve, reject);\n });\n }\n\n return PromiseImpl.resolve(value).then(function(unwrapped) {\n // When a yielded Promise is resolved, its final value becomes\n // the .value of the Promise<{value,done}> result for the\n // current iteration.\n result.value = unwrapped;\n resolve(result);\n }, function(error) {\n // If a rejected Promise was yielded, throw the rejection back\n // into the async generator function so it can be handled there.\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n }\n\n var previousPromise;\n\n function enqueue(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function(resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise =\n // If enqueue has been called before, then we want to wait until\n // all previous Promises have been resolved before calling invoke,\n // so that results are always delivered in the correct order. If\n // enqueue has not been called before, then it is important to\n // call invoke immediately, without waiting on a callback to fire,\n // so that the async generator function has the opportunity to do\n // any necessary setup in a predictable way. This predictability\n // is why the Promise constructor synchronously invokes its\n // executor callback, and why async functions synchronously\n // execute code before the first await. Since we implement simple\n // async functions in terms of async generators, it is especially\n // important to get this right, even though it requires care.\n previousPromise ? previousPromise.then(\n callInvokeWithMethodAndArg,\n // Avoid propagating failures to Promises returned by later\n // invocations of the iterator.\n callInvokeWithMethodAndArg\n ) : callInvokeWithMethodAndArg();\n }\n\n // Define the unified helper method that is used to implement .next,\n // .throw, and .return (see defineIteratorMethods).\n this._invoke = enqueue;\n }\n\n defineIteratorMethods(AsyncIterator.prototype);\n define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n });\n exports.AsyncIterator = AsyncIterator;\n\n // Note that simple async functions are implemented on top of\n // AsyncIterator objects; they just return a Promise for the value of\n // the final result produced by the iterator.\n exports.async = function(innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n if (PromiseImpl === void 0) PromiseImpl = Promise;\n\n var iter = new AsyncIterator(\n wrap(innerFn, outerFn, self, tryLocsList),\n PromiseImpl\n );\n\n return exports.isGeneratorFunction(outerFn)\n ? iter // If outerFn is a generator, return the full iterator.\n : iter.next().then(function(result) {\n return result.done ? result.value : iter.next();\n });\n };\n\n function makeInvokeMethod(innerFn, self, context) {\n var state = GenStateSuspendedStart;\n\n return function invoke(method, arg) {\n if (state === GenStateExecuting) {\n throw new Error(\"Generator is already running\");\n }\n\n if (state === GenStateCompleted) {\n if (method === \"throw\") {\n throw arg;\n }\n\n // Be forgiving, per 25.3.3.3.3 of the spec:\n // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume\n return doneResult();\n }\n\n context.method = method;\n context.arg = arg;\n\n while (true) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (context.method === \"next\") {\n // Setting context._sent for legacy support of Babel's\n // function.sent implementation.\n context.sent = context._sent = context.arg;\n\n } else if (context.method === \"throw\") {\n if (state === GenStateSuspendedStart) {\n state = GenStateCompleted;\n throw context.arg;\n }\n\n context.dispatchException(context.arg);\n\n } else if (context.method === \"return\") {\n context.abrupt(\"return\", context.arg);\n }\n\n state = GenStateExecuting;\n\n var record = tryCatch(innerFn, self, context);\n if (record.type === \"normal\") {\n // If an exception is thrown from innerFn, we leave state ===\n // GenStateExecuting and loop back for another invocation.\n state = context.done\n ? GenStateCompleted\n : GenStateSuspendedYield;\n\n if (record.arg === ContinueSentinel) {\n continue;\n }\n\n return {\n value: record.arg,\n done: context.done\n };\n\n } else if (record.type === \"throw\") {\n state = GenStateCompleted;\n // Dispatch the exception by looping back around to the\n // context.dispatchException(context.arg) call above.\n context.method = \"throw\";\n context.arg = record.arg;\n }\n }\n };\n }\n\n // Call delegate.iterator[context.method](context.arg) and handle the\n // result, either by returning a { value, done } result from the\n // delegate iterator, or by modifying context.method and context.arg,\n // setting context.delegate to null, and returning the ContinueSentinel.\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n if (method === undefined$1) {\n // A .throw or .return when the delegate iterator has no .throw\n // method always terminates the yield* loop.\n context.delegate = null;\n\n if (context.method === \"throw\") {\n // Note: [\"return\"] must be used for ES3 parsing compatibility.\n if (delegate.iterator[\"return\"]) {\n // If the delegate iterator has a return method, give it a\n // chance to clean up.\n context.method = \"return\";\n context.arg = undefined$1;\n maybeInvokeDelegate(delegate, context);\n\n if (context.method === \"throw\") {\n // If maybeInvokeDelegate(context) changed context.method from\n // \"return\" to \"throw\", let that override the TypeError below.\n return ContinueSentinel;\n }\n }\n\n context.method = \"throw\";\n context.arg = new TypeError(\n \"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n\n if (record.type === \"throw\") {\n context.method = \"throw\";\n context.arg = record.arg;\n context.delegate = null;\n return ContinueSentinel;\n }\n\n var info = record.arg;\n\n if (! info) {\n context.method = \"throw\";\n context.arg = new TypeError(\"iterator result is not an object\");\n context.delegate = null;\n return ContinueSentinel;\n }\n\n if (info.done) {\n // Assign the result of the finished delegate to the temporary\n // variable specified by delegate.resultName (see delegateYield).\n context[delegate.resultName] = info.value;\n\n // Resume execution at the desired location (see delegateYield).\n context.next = delegate.nextLoc;\n\n // If context.method was \"throw\" but the delegate handled the\n // exception, let the outer generator proceed normally. If\n // context.method was \"next\", forget context.arg since it has been\n // \"consumed\" by the delegate iterator. If context.method was\n // \"return\", allow the original .return call to continue in the\n // outer generator.\n if (context.method !== \"return\") {\n context.method = \"next\";\n context.arg = undefined$1;\n }\n\n } else {\n // Re-yield the result returned by the delegate method.\n return info;\n }\n\n // The delegate iterator is finished, so forget it and continue with\n // the outer generator.\n context.delegate = null;\n return ContinueSentinel;\n }\n\n // Define Generator.prototype.{next,throw,return} in terms of the\n // unified ._invoke helper method.\n defineIteratorMethods(Gp);\n\n define(Gp, toStringTagSymbol, \"Generator\");\n\n // A Generator should always return itself as the iterator object when the\n // @@iterator function is called on it. Some browsers' implementations of the\n // iterator prototype chain incorrectly implement this, causing the Generator\n // object to not be returned from this call. This ensures that doesn't happen.\n // See https://github.com/facebook/regenerator/issues/274 for more details.\n define(Gp, iteratorSymbol, function() {\n return this;\n });\n\n define(Gp, \"toString\", function() {\n return \"[object Generator]\";\n });\n\n function pushTryEntry(locs) {\n var entry = { tryLoc: locs[0] };\n\n if (1 in locs) {\n entry.catchLoc = locs[1];\n }\n\n if (2 in locs) {\n entry.finallyLoc = locs[2];\n entry.afterLoc = locs[3];\n }\n\n this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\";\n delete record.arg;\n entry.completion = record;\n }\n\n function Context(tryLocsList) {\n // The root entry object (effectively a try statement without a catch\n // or a finally block) gives us a place to store values thrown from\n // locations where there is no enclosing try statement.\n this.tryEntries = [{ tryLoc: \"root\" }];\n tryLocsList.forEach(pushTryEntry, this);\n this.reset(true);\n }\n\n exports.keys = function(object) {\n var keys = [];\n for (var key in object) {\n keys.push(key);\n }\n keys.reverse();\n\n // Rather than returning an object with a next method, we keep\n // things simple and return the next function itself.\n return function next() {\n while (keys.length) {\n var key = keys.pop();\n if (key in object) {\n next.value = key;\n next.done = false;\n return next;\n }\n }\n\n // To avoid creating an additional object, we just hang the .value\n // and .done properties off the next function object itself. This\n // also ensures that the minifier will not anonymize the function.\n next.done = true;\n return next;\n };\n };\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) {\n return iteratorMethod.call(iterable);\n }\n\n if (typeof iterable.next === \"function\") {\n return iterable;\n }\n\n if (!isNaN(iterable.length)) {\n var i = -1, next = function next() {\n while (++i < iterable.length) {\n if (hasOwn.call(iterable, i)) {\n next.value = iterable[i];\n next.done = false;\n return next;\n }\n }\n\n next.value = undefined$1;\n next.done = true;\n\n return next;\n };\n\n return next.next = next;\n }\n }\n\n // Return an iterator with no values.\n return { next: doneResult };\n }\n exports.values = values;\n\n function doneResult() {\n return { value: undefined$1, done: true };\n }\n\n Context.prototype = {\n constructor: Context,\n\n reset: function(skipTempReset) {\n this.prev = 0;\n this.next = 0;\n // Resetting context._sent for legacy support of Babel's\n // function.sent implementation.\n this.sent = this._sent = undefined$1;\n this.done = false;\n this.delegate = null;\n\n this.method = \"next\";\n this.arg = undefined$1;\n\n this.tryEntries.forEach(resetTryEntry);\n\n if (!skipTempReset) {\n for (var name in this) {\n // Not sure about the optimal order of these conditions:\n if (name.charAt(0) === \"t\" &&\n hasOwn.call(this, name) &&\n !isNaN(+name.slice(1))) {\n this[name] = undefined$1;\n }\n }\n }\n },\n\n stop: function() {\n this.done = true;\n\n var rootEntry = this.tryEntries[0];\n var rootRecord = rootEntry.completion;\n if (rootRecord.type === \"throw\") {\n throw rootRecord.arg;\n }\n\n return this.rval;\n },\n\n dispatchException: function(exception) {\n if (this.done) {\n throw exception;\n }\n\n var context = this;\n function handle(loc, caught) {\n record.type = \"throw\";\n record.arg = exception;\n context.next = loc;\n\n if (caught) {\n // If the dispatched exception was caught by a catch block,\n // then let that catch block handle the exception normally.\n context.method = \"next\";\n context.arg = undefined$1;\n }\n\n return !! caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n var record = entry.completion;\n\n if (entry.tryLoc === \"root\") {\n // Exception thrown outside of any try block that could handle\n // it, so set the completion value of the entire function to\n // throw the exception.\n return handle(\"end\");\n }\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\");\n var hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n } else if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) {\n return handle(entry.catchLoc, true);\n }\n\n } else if (hasFinally) {\n if (this.prev < entry.finallyLoc) {\n return handle(entry.finallyLoc);\n }\n\n } else {\n throw new Error(\"try statement without catch or finally\");\n }\n }\n }\n },\n\n abrupt: function(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev &&\n hasOwn.call(entry, \"finallyLoc\") &&\n this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n if (finallyEntry &&\n (type === \"break\" ||\n type === \"continue\") &&\n finallyEntry.tryLoc <= arg &&\n arg <= finallyEntry.finallyLoc) {\n // Ignore the finally entry if control is not jumping to a\n // location outside the try/catch block.\n finallyEntry = null;\n }\n\n var record = finallyEntry ? finallyEntry.completion : {};\n record.type = type;\n record.arg = arg;\n\n if (finallyEntry) {\n this.method = \"next\";\n this.next = finallyEntry.finallyLoc;\n return ContinueSentinel;\n }\n\n return this.complete(record);\n },\n\n complete: function(record, afterLoc) {\n if (record.type === \"throw\") {\n throw record.arg;\n }\n\n if (record.type === \"break\" ||\n record.type === \"continue\") {\n this.next = record.arg;\n } else if (record.type === \"return\") {\n this.rval = this.arg = record.arg;\n this.method = \"return\";\n this.next = \"end\";\n } else if (record.type === \"normal\" && afterLoc) {\n this.next = afterLoc;\n }\n\n return ContinueSentinel;\n },\n\n finish: function(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) {\n this.complete(entry.completion, entry.afterLoc);\n resetTryEntry(entry);\n return ContinueSentinel;\n }\n }\n },\n\n \"catch\": function(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (record.type === \"throw\") {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n\n // The context.catch method must only be called with a location\n // argument that corresponds to a known catch block.\n throw new Error(\"illegal catch attempt\");\n },\n\n delegateYield: function(iterable, resultName, nextLoc) {\n this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n };\n\n if (this.method === \"next\") {\n // Deliberately forget the last sent value so that we don't\n // accidentally pass it on to the delegate.\n this.arg = undefined$1;\n }\n\n return ContinueSentinel;\n }\n };\n\n // Regardless of whether this script is executing as a CommonJS module\n // or not, return the runtime object so that we can declare the variable\n // regeneratorRuntime in the outer scope, which allows this module to be\n // injected easily by `bin/regenerator --include-runtime script.js`.\n return exports;\n\n}(\n // If this script is executing as a CommonJS module, use module.exports\n // as the regeneratorRuntime namespace. Otherwise create a new empty\n // object. Either way, the resulting object will be used to initialize\n // the regeneratorRuntime variable at the top of this file.\n module.exports \n));\n\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n // This module should not be running in strict mode, so the above\n // assignment should always work unless something is misconfigured. Just\n // in case runtime.js accidentally runs in strict mode, in modern engines\n // we can explicitly access globalThis. In older engines we can escape\n // strict mode using a global Function call. This could conceivably fail\n // if a Content Security Policy forbids using Function, but in that case\n // the proper solution is to fix the accidental strict mode problem. If\n // you've misconfigured your bundler to force strict mode and applied a\n // CSP to forbid Function, and you're not willing to fix either of those\n // problems, please detail your unique predicament in a GitHub issue.\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n});\n\n/**\r\n * Trades comparator, an extension of the input output comparator that also considers other dimensions of the trade in ranking them\r\n * @template TInput The input token, either Ether or an ERC-20\r\n * @template TOutput The output token, either Ether or an ERC-20\r\n * @template TTradeType The trade type, either exact input or exact output\r\n * @param a The first trade to compare\r\n * @param b The second trade to compare\r\n * @returns A sorted ordering for two neighboring elements in a trade array\r\n */\n\nfunction tradeComparator(a, b) {\n // must have same input and output token for comparison\n !a.inputAmount.currency.equals(b.inputAmount.currency) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'INPUT_CURRENCY') : invariant(false) : void 0;\n !a.outputAmount.currency.equals(b.outputAmount.currency) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'OUTPUT_CURRENCY') : invariant(false) : void 0;\n\n if (a.outputAmount.equalTo(b.outputAmount)) {\n if (a.inputAmount.equalTo(b.inputAmount)) {\n // consider the number of hops since each hop costs gas\n var aHops = a.swaps.reduce(function (total, cur) {\n return total + cur.route.tokenPath.length;\n }, 0);\n var bHops = b.swaps.reduce(function (total, cur) {\n return total + cur.route.tokenPath.length;\n }, 0);\n return aHops - bHops;\n } // trade A requires less input than trade B, so A should come first\n\n\n if (a.inputAmount.lessThan(b.inputAmount)) {\n return -1;\n } else {\n return 1;\n }\n } else {\n // tradeA has less output than trade B, so should come second\n if (a.outputAmount.lessThan(b.outputAmount)) {\n return 1;\n } else {\n return -1;\n }\n }\n}\n/**\r\n * Represents a trade executed against a set of routes where some percentage of the input is\r\n * split across each route.\r\n *\r\n * Each route has its own set of pools. Pools can not be re-used across routes.\r\n *\r\n * Does not account for slippage, i.e., changes in price environment that can occur between\r\n * the time the trade is submitted and when it is executed.\r\n * @template TInput The input token, either Ether or an ERC-20\r\n * @template TOutput The output token, either Ether or an ERC-20\r\n * @template TTradeType The trade type, either exact input or exact output\r\n */\n\nvar Trade = /*#__PURE__*/function () {\n /**\r\n * Construct a trade by passing in the pre-computed property values\r\n * @param routes The routes through which the trade occurs\r\n * @param tradeType The type of trade, exact input or exact output\r\n */\n function Trade(_ref) {\n var routes = _ref.routes,\n tradeType = _ref.tradeType;\n var inputCurrency = routes[0].inputAmount.currency;\n var outputCurrency = routes[0].outputAmount.currency;\n !routes.every(function (_ref2) {\n var route = _ref2.route;\n return inputCurrency.wrapped.equals(route.input.wrapped);\n }) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'INPUT_CURRENCY_MATCH') : invariant(false) : void 0;\n !routes.every(function (_ref3) {\n var route = _ref3.route;\n return outputCurrency.wrapped.equals(route.output.wrapped);\n }) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'OUTPUT_CURRENCY_MATCH') : invariant(false) : void 0; // Ignoring these checks for now, but will need to add them back later\n // const numPools = routes.map(({ route }) => route.pools.length).reduce((total, cur) => total + cur, 0)\n // const poolAddressSet = new Set()\n // for (const { route } of routes) {\n // for (const pool of route.pools) {\n // Pool.getAddress(pool.token0, pool.token1, pool.fee).then(address => {\n // poolAddressSet.add(address)\n // })\n // }\n // }\n // console.log(numPools, poolAddressSet.size)\n // invariant(numPools == poolAddressSet.size, 'POOLS_DUPLICATED')\n\n this.swaps = routes;\n this.tradeType = tradeType;\n }\n /**\r\n * @deprecated Deprecated in favor of 'swaps' property. If the trade consists of multiple routes\r\n * this will return an error.\r\n *\r\n * When the trade consists of just a single route, this returns the route of the trade,\r\n * i.e. which pools the trade goes through.\r\n */\n\n\n /**\r\n * Constructs an exact in trade with the given amount in and route\r\n * @template TInput The input token, either Ether or an ERC-20\r\n * @template TOutput The output token, either Ether or an ERC-20\r\n * @param route The route of the exact in trade\r\n * @param amountIn The amount being passed in\r\n * @returns The exact in trade\r\n */\n Trade.exactIn =\n /*#__PURE__*/\n function () {\n var _exactIn = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee(route, amountIn) {\n return runtime_1.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n return _context.abrupt(\"return\", Trade.fromRoute(route, amountIn, TradeType.EXACT_INPUT));\n\n case 1:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function exactIn(_x, _x2) {\n return _exactIn.apply(this, arguments);\n }\n\n return exactIn;\n }()\n /**\r\n * Constructs an exact out trade with the given amount out and route\r\n * @template TInput The input token, either Ether or an ERC-20\r\n * @template TOutput The output token, either Ether or an ERC-20\r\n * @param route The route of the exact out trade\r\n * @param amountOut The amount returned by the trade\r\n * @returns The exact out trade\r\n */\n ;\n\n Trade.exactOut =\n /*#__PURE__*/\n function () {\n var _exactOut = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee2(route, amountOut) {\n return runtime_1.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n return _context2.abrupt(\"return\", Trade.fromRoute(route, amountOut, TradeType.EXACT_OUTPUT));\n\n case 1:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n function exactOut(_x3, _x4) {\n return _exactOut.apply(this, arguments);\n }\n\n return exactOut;\n }()\n /**\r\n * Constructs a trade by simulating swaps through the given route\r\n * @template TInput The input token, either Ether or an ERC-20.\r\n * @template TOutput The output token, either Ether or an ERC-20.\r\n * @template TTradeType The type of the trade, either exact in or exact out.\r\n * @param route route to swap through\r\n * @param amount the amount specified, either input or output, depending on tradeType\r\n * @param tradeType whether the trade is an exact input or exact output swap\r\n * @returns The route\r\n */\n ;\n\n Trade.fromRoute =\n /*#__PURE__*/\n function () {\n var _fromRoute = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee3(route, amount, tradeType) {\n var amounts, inputAmount, outputAmount, i, pool, _yield$pool$getOutput, _outputAmount, _i, _pool, _yield$_pool$getInput, _inputAmount;\n\n return runtime_1.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n amounts = new Array(route.tokenPath.length);\n\n if (!(tradeType === TradeType.EXACT_INPUT)) {\n _context3.next = 19;\n break;\n }\n\n !amount.currency.equals(route.input) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'INPUT') : invariant(false) : void 0;\n amounts[0] = amount.wrapped;\n i = 0;\n\n case 5:\n if (!(i < route.tokenPath.length - 1)) {\n _context3.next = 15;\n break;\n }\n\n pool = route.pools[i];\n _context3.next = 9;\n return pool.getOutputAmount(amounts[i]);\n\n case 9:\n _yield$pool$getOutput = _context3.sent;\n _outputAmount = _yield$pool$getOutput[0];\n amounts[i + 1] = _outputAmount;\n\n case 12:\n i++;\n _context3.next = 5;\n break;\n\n case 15:\n inputAmount = CurrencyAmount.fromFractionalAmount(route.input, amount.numerator, amount.denominator);\n outputAmount = CurrencyAmount.fromFractionalAmount(route.output, amounts[amounts.length - 1].numerator, amounts[amounts.length - 1].denominator);\n _context3.next = 34;\n break;\n\n case 19:\n !amount.currency.equals(route.output) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'OUTPUT') : invariant(false) : void 0;\n amounts[amounts.length - 1] = amount.wrapped;\n _i = route.tokenPath.length - 1;\n\n case 22:\n if (!(_i > 0)) {\n _context3.next = 32;\n break;\n }\n\n _pool = route.pools[_i - 1];\n _context3.next = 26;\n return _pool.getInputAmount(amounts[_i]);\n\n case 26:\n _yield$_pool$getInput = _context3.sent;\n _inputAmount = _yield$_pool$getInput[0];\n amounts[_i - 1] = _inputAmount;\n\n case 29:\n _i--;\n _context3.next = 22;\n break;\n\n case 32:\n inputAmount = CurrencyAmount.fromFractionalAmount(route.input, amounts[0].numerator, amounts[0].denominator);\n outputAmount = CurrencyAmount.fromFractionalAmount(route.output, amount.numerator, amount.denominator);\n\n case 34:\n return _context3.abrupt(\"return\", new Trade({\n routes: [{\n inputAmount: inputAmount,\n outputAmount: outputAmount,\n route: route\n }],\n tradeType: tradeType\n }));\n\n case 35:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n function fromRoute(_x5, _x6, _x7) {\n return _fromRoute.apply(this, arguments);\n }\n\n return fromRoute;\n }()\n /**\r\n * Constructs a trade from routes by simulating swaps\r\n *\r\n * @template TInput The input token, either Ether or an ERC-20.\r\n * @template TOutput The output token, either Ether or an ERC-20.\r\n * @template TTradeType The type of the trade, either exact in or exact out.\r\n * @param routes the routes to swap through and how much of the amount should be routed through each\r\n * @param tradeType whether the trade is an exact input or exact output swap\r\n * @returns The trade\r\n */\n ;\n\n Trade.fromRoutes =\n /*#__PURE__*/\n function () {\n var _fromRoutes = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee4(routes, tradeType) {\n var populatedRoutes, _iterator, _step, _step$value, route, amount, amounts, inputAmount, outputAmount, i, pool, _yield$pool$getOutput2, _outputAmount2, _i2, _pool2, _yield$_pool2$getInpu, _inputAmount2;\n\n return runtime_1.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n populatedRoutes = [];\n _iterator = _createForOfIteratorHelperLoose(routes);\n\n case 2:\n if ((_step = _iterator()).done) {\n _context4.next = 43;\n break;\n }\n\n _step$value = _step.value, route = _step$value.route, amount = _step$value.amount;\n amounts = new Array(route.tokenPath.length);\n inputAmount = void 0;\n outputAmount = void 0;\n\n if (!(tradeType === TradeType.EXACT_INPUT)) {\n _context4.next = 25;\n break;\n }\n\n !amount.currency.equals(route.input) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'INPUT') : invariant(false) : void 0;\n inputAmount = CurrencyAmount.fromFractionalAmount(route.input, amount.numerator, amount.denominator);\n amounts[0] = CurrencyAmount.fromFractionalAmount(route.input.wrapped, amount.numerator, amount.denominator);\n i = 0;\n\n case 12:\n if (!(i < route.tokenPath.length - 1)) {\n _context4.next = 22;\n break;\n }\n\n pool = route.pools[i];\n _context4.next = 16;\n return pool.getOutputAmount(amounts[i]);\n\n case 16:\n _yield$pool$getOutput2 = _context4.sent;\n _outputAmount2 = _yield$pool$getOutput2[0];\n amounts[i + 1] = _outputAmount2;\n\n case 19:\n i++;\n _context4.next = 12;\n break;\n\n case 22:\n outputAmount = CurrencyAmount.fromFractionalAmount(route.output, amounts[amounts.length - 1].numerator, amounts[amounts.length - 1].denominator);\n _context4.next = 40;\n break;\n\n case 25:\n !amount.currency.equals(route.output) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'OUTPUT') : invariant(false) : void 0;\n outputAmount = CurrencyAmount.fromFractionalAmount(route.output, amount.numerator, amount.denominator);\n amounts[amounts.length - 1] = CurrencyAmount.fromFractionalAmount(route.output.wrapped, amount.numerator, amount.denominator);\n _i2 = route.tokenPath.length - 1;\n\n case 29:\n if (!(_i2 > 0)) {\n _context4.next = 39;\n break;\n }\n\n _pool2 = route.pools[_i2 - 1];\n _context4.next = 33;\n return _pool2.getInputAmount(amounts[_i2]);\n\n case 33:\n _yield$_pool2$getInpu = _context4.sent;\n _inputAmount2 = _yield$_pool2$getInpu[0];\n amounts[_i2 - 1] = _inputAmount2;\n\n case 36:\n _i2--;\n _context4.next = 29;\n break;\n\n case 39:\n inputAmount = CurrencyAmount.fromFractionalAmount(route.input, amounts[0].numerator, amounts[0].denominator);\n\n case 40:\n populatedRoutes.push({\n route: route,\n inputAmount: inputAmount,\n outputAmount: outputAmount\n });\n\n case 41:\n _context4.next = 2;\n break;\n\n case 43:\n return _context4.abrupt(\"return\", new Trade({\n routes: populatedRoutes,\n tradeType: tradeType\n }));\n\n case 44:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4);\n }));\n\n function fromRoutes(_x8, _x9) {\n return _fromRoutes.apply(this, arguments);\n }\n\n return fromRoutes;\n }()\n /**\r\n * Creates a trade without computing the result of swapping through the route. Useful when you have simulated the trade\r\n * elsewhere and do not have any tick data\r\n * @template TInput The input token, either Ether or an ERC-20\r\n * @template TOutput The output token, either Ether or an ERC-20\r\n * @template TTradeType The type of the trade, either exact in or exact out\r\n * @param constructorArguments The arguments passed to the trade constructor\r\n * @returns The unchecked trade\r\n */\n ;\n\n Trade.createUncheckedTrade = function createUncheckedTrade(constructorArguments) {\n return new Trade(_extends({}, constructorArguments, {\n routes: [{\n inputAmount: constructorArguments.inputAmount,\n outputAmount: constructorArguments.outputAmount,\n route: constructorArguments.route\n }]\n }));\n }\n /**\r\n * Creates a trade without computing the result of swapping through the routes. Useful when you have simulated the trade\r\n * elsewhere and do not have any tick data\r\n * @template TInput The input token, either Ether or an ERC-20\r\n * @template TOutput The output token, either Ether or an ERC-20\r\n * @template TTradeType The type of the trade, either exact in or exact out\r\n * @param constructorArguments The arguments passed to the trade constructor\r\n * @returns The unchecked trade\r\n */\n ;\n\n Trade.createUncheckedTradeWithMultipleRoutes = function createUncheckedTradeWithMultipleRoutes(constructorArguments) {\n return new Trade(constructorArguments);\n }\n /**\r\n * Get the minimum amount that must be received from this trade for the given slippage tolerance\r\n * @param slippageTolerance The tolerance of unfavorable slippage from the execution price of this trade\r\n * @returns The amount out\r\n */\n ;\n\n var _proto = Trade.prototype;\n\n _proto.minimumAmountOut = function minimumAmountOut(slippageTolerance, amountOut) {\n if (amountOut === void 0) {\n amountOut = this.outputAmount;\n }\n\n !!slippageTolerance.lessThan('0') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'SLIPPAGE_TOLERANCE') : invariant(false) : void 0;\n\n if (this.tradeType === TradeType.EXACT_OUTPUT) {\n return amountOut;\n } else {\n var slippageAdjustedAmountOut = new Fraction('1').add(slippageTolerance).invert().multiply(amountOut.quotient).quotient;\n return CurrencyAmount.fromRawAmount(amountOut.currency, slippageAdjustedAmountOut);\n }\n }\n /**\r\n * Get the maximum amount in that can be spent via this trade for the given slippage tolerance\r\n * @param slippageTolerance The tolerance of unfavorable slippage from the execution price of this trade\r\n * @returns The amount in\r\n */\n ;\n\n _proto.maximumAmountIn = function maximumAmountIn(slippageTolerance, amountIn) {\n if (amountIn === void 0) {\n amountIn = this.inputAmount;\n }\n\n !!slippageTolerance.lessThan('0') ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'SLIPPAGE_TOLERANCE') : invariant(false) : void 0;\n\n if (this.tradeType === TradeType.EXACT_INPUT) {\n return amountIn;\n } else {\n var slippageAdjustedAmountIn = new Fraction('1').add(slippageTolerance).multiply(amountIn.quotient).quotient;\n return CurrencyAmount.fromRawAmount(amountIn.currency, slippageAdjustedAmountIn);\n }\n }\n /**\r\n * Return the execution price after accounting for slippage tolerance\r\n * @param slippageTolerance the allowed tolerated slippage\r\n * @returns The execution price\r\n */\n ;\n\n _proto.worstExecutionPrice = function worstExecutionPrice(slippageTolerance) {\n return new Price(this.inputAmount.currency, this.outputAmount.currency, this.maximumAmountIn(slippageTolerance).quotient, this.minimumAmountOut(slippageTolerance).quotient);\n }\n /**\r\n * Given a list of pools, and a fixed amount in, returns the top `maxNumResults` trades that go from an input token\r\n * amount to an output token, making at most `maxHops` hops.\r\n * Note this does not consider aggregation, as routes are linear. It's possible a better route exists by splitting\r\n * the amount in among multiple routes.\r\n * @param pools the pools to consider in finding the best trade\r\n * @param nextAmountIn exact amount of input currency to spend\r\n * @param currencyOut the desired currency out\r\n * @param maxNumResults maximum number of results to return\r\n * @param maxHops maximum number of hops a returned trade can make, e.g. 1 hop goes through a single pool\r\n * @param currentPools used in recursion; the current list of pools\r\n * @param currencyAmountIn used in recursion; the original value of the currencyAmountIn parameter\r\n * @param bestTrades used in recursion; the current list of best trades\r\n * @returns The exact in trade\r\n */\n ;\n\n Trade.bestTradeExactIn =\n /*#__PURE__*/\n function () {\n var _bestTradeExactIn = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee5(pools, currencyAmountIn, currencyOut, _temp, // used in recursion.\n currentPools, nextAmountIn, bestTrades) {\n var _ref4, _ref4$maxNumResults, maxNumResults, _ref4$maxHops, maxHops, amountIn, tokenOut, i, pool, amountOut, _yield$pool$getOutput3, poolsExcludingThisPool;\n\n return runtime_1.wrap(function _callee5$(_context5) {\n while (1) {\n switch (_context5.prev = _context5.next) {\n case 0:\n _ref4 = _temp === void 0 ? {} : _temp, _ref4$maxNumResults = _ref4.maxNumResults, maxNumResults = _ref4$maxNumResults === void 0 ? 3 : _ref4$maxNumResults, _ref4$maxHops = _ref4.maxHops, maxHops = _ref4$maxHops === void 0 ? 3 : _ref4$maxHops;\n\n if (currentPools === void 0) {\n currentPools = [];\n }\n\n if (nextAmountIn === void 0) {\n nextAmountIn = currencyAmountIn;\n }\n\n if (bestTrades === void 0) {\n bestTrades = [];\n }\n\n !(pools.length > 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'POOLS') : invariant(false) : void 0;\n !(maxHops > 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'MAX_HOPS') : invariant(false) : void 0;\n !(currencyAmountIn === nextAmountIn || currentPools.length > 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'INVALID_RECURSION') : invariant(false) : void 0;\n amountIn = nextAmountIn.wrapped;\n tokenOut = currencyOut.wrapped;\n i = 0;\n\n case 10:\n if (!(i < pools.length)) {\n _context5.next = 46;\n break;\n }\n\n pool = pools[i]; // pool irrelevant\n\n if (!(!pool.token0.equals(amountIn.currency) && !pool.token1.equals(amountIn.currency))) {\n _context5.next = 14;\n break;\n }\n\n return _context5.abrupt(\"continue\", 43);\n\n case 14:\n amountOut = void 0;\n _context5.prev = 15;\n _context5.next = 19;\n return pool.getOutputAmount(amountIn);\n\n case 19:\n _yield$pool$getOutput3 = _context5.sent;\n amountOut = _yield$pool$getOutput3[0];\n _context5.next = 28;\n break;\n\n case 23:\n _context5.prev = 23;\n _context5.t0 = _context5[\"catch\"](15);\n\n if (!_context5.t0.isInsufficientInputAmountError) {\n _context5.next = 27;\n break;\n }\n\n return _context5.abrupt(\"continue\", 43);\n\n case 27:\n throw _context5.t0;\n\n case 28:\n if (!(amountOut.currency.isToken && amountOut.currency.equals(tokenOut))) {\n _context5.next = 39;\n break;\n }\n\n _context5.t1 = sortedInsert;\n _context5.t2 = bestTrades;\n _context5.next = 33;\n return Trade.fromRoute(new Route([].concat(currentPools, [pool]), currencyAmountIn.currency, currencyOut), currencyAmountIn, TradeType.EXACT_INPUT);\n\n case 33:\n _context5.t3 = _context5.sent;\n _context5.t4 = maxNumResults;\n _context5.t5 = tradeComparator;\n (0, _context5.t1)(_context5.t2, _context5.t3, _context5.t4, _context5.t5);\n _context5.next = 43;\n break;\n\n case 39:\n if (!(maxHops > 1 && pools.length > 1)) {\n _context5.next = 43;\n break;\n }\n\n poolsExcludingThisPool = pools.slice(0, i).concat(pools.slice(i + 1, pools.length)); // otherwise, consider all the other paths that lead from this token as long as we have not exceeded maxHops\n\n _context5.next = 43;\n return Trade.bestTradeExactIn(poolsExcludingThisPool, currencyAmountIn, currencyOut, {\n maxNumResults: maxNumResults,\n maxHops: maxHops - 1\n }, [].concat(currentPools, [pool]), amountOut, bestTrades);\n\n case 43:\n i++;\n _context5.next = 10;\n break;\n\n case 46:\n return _context5.abrupt(\"return\", bestTrades);\n\n case 47:\n case \"end\":\n return _context5.stop();\n }\n }\n }, _callee5, null, [[15, 23]]);\n }));\n\n function bestTradeExactIn(_x10, _x11, _x12, _x13, _x14, _x15, _x16) {\n return _bestTradeExactIn.apply(this, arguments);\n }\n\n return bestTradeExactIn;\n }()\n /**\r\n * similar to the above method but instead targets a fixed output amount\r\n * given a list of pools, and a fixed amount out, returns the top `maxNumResults` trades that go from an input token\r\n * to an output token amount, making at most `maxHops` hops\r\n * note this does not consider aggregation, as routes are linear. it's possible a better route exists by splitting\r\n * the amount in among multiple routes.\r\n * @param pools the pools to consider in finding the best trade\r\n * @param currencyIn the currency to spend\r\n * @param currencyAmountOut the desired currency amount out\r\n * @param nextAmountOut the exact amount of currency out\r\n * @param maxNumResults maximum number of results to return\r\n * @param maxHops maximum number of hops a returned trade can make, e.g. 1 hop goes through a single pool\r\n * @param currentPools used in recursion; the current list of pools\r\n * @param bestTrades used in recursion; the current list of best trades\r\n * @returns The exact out trade\r\n */\n ;\n\n Trade.bestTradeExactOut =\n /*#__PURE__*/\n function () {\n var _bestTradeExactOut = /*#__PURE__*/_asyncToGenerator( /*#__PURE__*/runtime_1.mark(function _callee6(pools, currencyIn, currencyAmountOut, _temp2, // used in recursion.\n currentPools, nextAmountOut, bestTrades) {\n var _ref5, _ref5$maxNumResults, maxNumResults, _ref5$maxHops, maxHops, amountOut, tokenIn, i, pool, amountIn, _yield$pool$getInputA, poolsExcludingThisPool;\n\n return runtime_1.wrap(function _callee6$(_context6) {\n while (1) {\n switch (_context6.prev = _context6.next) {\n case 0:\n _ref5 = _temp2 === void 0 ? {} : _temp2, _ref5$maxNumResults = _ref5.maxNumResults, maxNumResults = _ref5$maxNumResults === void 0 ? 3 : _ref5$maxNumResults, _ref5$maxHops = _ref5.maxHops, maxHops = _ref5$maxHops === void 0 ? 3 : _ref5$maxHops;\n\n if (currentPools === void 0) {\n currentPools = [];\n }\n\n if (nextAmountOut === void 0) {\n nextAmountOut = currencyAmountOut;\n }\n\n if (bestTrades === void 0) {\n bestTrades = [];\n }\n\n !(pools.length > 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'POOLS') : invariant(false) : void 0;\n !(maxHops > 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'MAX_HOPS') : invariant(false) : void 0;\n !(currencyAmountOut === nextAmountOut || currentPools.length > 0) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'INVALID_RECURSION') : invariant(false) : void 0;\n amountOut = nextAmountOut.wrapped;\n tokenIn = currencyIn.wrapped;\n i = 0;\n\n case 10:\n if (!(i < pools.length)) {\n _context6.next = 46;\n break;\n }\n\n pool = pools[i]; // pool irrelevant\n\n if (!(!pool.token0.equals(amountOut.currency) && !pool.token1.equals(amountOut.currency))) {\n _context6.next = 14;\n break;\n }\n\n return _context6.abrupt(\"continue\", 43);\n\n case 14:\n amountIn = void 0;\n _context6.prev = 15;\n _context6.next = 19;\n return pool.getInputAmount(amountOut);\n\n case 19:\n _yield$pool$getInputA = _context6.sent;\n amountIn = _yield$pool$getInputA[0];\n _context6.next = 28;\n break;\n\n case 23:\n _context6.prev = 23;\n _context6.t0 = _context6[\"catch\"](15);\n\n if (!_context6.t0.isInsufficientReservesError) {\n _context6.next = 27;\n break;\n }\n\n return _context6.abrupt(\"continue\", 43);\n\n case 27:\n throw _context6.t0;\n\n case 28:\n if (!amountIn.currency.equals(tokenIn)) {\n _context6.next = 39;\n break;\n }\n\n _context6.t1 = sortedInsert;\n _context6.t2 = bestTrades;\n _context6.next = 33;\n return Trade.fromRoute(new Route([pool].concat(currentPools), currencyIn, currencyAmountOut.currency), currencyAmountOut, TradeType.EXACT_OUTPUT);\n\n case 33:\n _context6.t3 = _context6.sent;\n _context6.t4 = maxNumResults;\n _context6.t5 = tradeComparator;\n (0, _context6.t1)(_context6.t2, _context6.t3, _context6.t4, _context6.t5);\n _context6.next = 43;\n break;\n\n case 39:\n if (!(maxHops > 1 && pools.length > 1)) {\n _context6.next = 43;\n break;\n }\n\n poolsExcludingThisPool = pools.slice(0, i).concat(pools.slice(i + 1, pools.length)); // otherwise, consider all the other paths that arrive at this token as long as we have not exceeded maxHops\n\n _context6.next = 43;\n return Trade.bestTradeExactOut(poolsExcludingThisPool, currencyIn, currencyAmountOut, {\n maxNumResults: maxNumResults,\n maxHops: maxHops - 1\n }, [pool].concat(currentPools), amountIn, bestTrades);\n\n case 43:\n i++;\n _context6.next = 10;\n break;\n\n case 46:\n return _context6.abrupt(\"return\", bestTrades);\n\n case 47:\n case \"end\":\n return _context6.stop();\n }\n }\n }, _callee6, null, [[15, 23]]);\n }));\n\n function bestTradeExactOut(_x17, _x18, _x19, _x20, _x21, _x22, _x23) {\n return _bestTradeExactOut.apply(this, arguments);\n }\n\n return bestTradeExactOut;\n }();\n\n _createClass(Trade, [{\n key: \"route\",\n get: function get() {\n !(this.swaps.length == 1) ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'MULTIPLE_ROUTES') : invariant(false) : void 0;\n return this.swaps[0].route;\n }\n /**\r\n * The input amount for the trade assuming no slippage.\r\n */\n\n }, {\n key: \"inputAmount\",\n get: function get() {\n if (this._inputAmount) {\n return this._inputAmount;\n }\n\n var inputCurrency = this.swaps[0].inputAmount.currency;\n var totalInputFromRoutes = this.swaps.map(function (_ref6) {\n var inputAmount = _ref6.inputAmount;\n return inputAmount;\n }).reduce(function (total, cur) {\n return total.add(cur);\n }, CurrencyAmount.fromRawAmount(inputCurrency, 0));\n this._inputAmount = totalInputFromRoutes;\n return this._inputAmount;\n }\n /**\r\n * The output amount for the trade assuming no slippage.\r\n */\n\n }, {\n key: \"outputAmount\",\n get: function get() {\n if (this._outputAmount) {\n return this._outputAmount;\n }\n\n var outputCurrency = this.swaps[0].outputAmount.currency;\n var totalOutputFromRoutes = this.swaps.map(function (_ref7) {\n var outputAmount = _ref7.outputAmount;\n return outputAmount;\n }).reduce(function (total, cur) {\n return total.add(cur);\n }, CurrencyAmount.fromRawAmount(outputCurrency, 0));\n this._outputAmount = totalOutputFromRoutes;\n return this._outputAmount;\n }\n /**\r\n * The price expressed in terms of output amount/input amount.\r\n */\n\n }, {\n key: \"executionPrice\",\n get: function get() {\n var _this$_executionPrice;\n\n return (_this$_executionPrice = this._executionPrice) != null ? _this$_executionPrice : this._executionPrice = new Price(this.inputAmount.currency, this.outputAmount.currency, this.inputAmount.quotient, this.outputAmount.quotient);\n }\n /**\r\n * Returns the percent difference between the route's mid price and the price impact\r\n */\n\n }, {\n key: \"priceImpact\",\n get: function get() {\n if (this._priceImpact) {\n return this._priceImpact;\n }\n\n var spotOutputAmount = CurrencyAmount.fromRawAmount(this.outputAmount.currency, 0);\n\n for (var _iterator2 = _createForOfIteratorHelperLoose(this.swaps), _step2; !(_step2 = _iterator2()).done;) {\n var _step2$value = _step2.value,\n route = _step2$value.route,\n inputAmount = _step2$value.inputAmount;\n var midPrice = route.midPrice;\n spotOutputAmount = spotOutputAmount.add(midPrice.quote(inputAmount));\n }\n\n var priceImpact = spotOutputAmount.subtract(this.outputAmount).divide(spotOutputAmount);\n this._priceImpact = new Percent(priceImpact.numerator, priceImpact.denominator);\n return this._priceImpact;\n }\n }]);\n\n return Trade;\n}();\n\nvar IDL = {\n \"version\": \"0.1.6\",\n \"name\": \"cyclos_core\",\n \"instructions\": [{\n \"name\": \"initFactory\",\n \"accounts\": [{\n \"name\": \"owner\",\n \"isMut\": true,\n \"isSigner\": true\n }, {\n \"name\": \"factoryState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": []\n }, {\n \"name\": \"setOwner\",\n \"accounts\": [{\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n }, {\n \"name\": \"newOwner\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"factoryState\",\n \"isMut\": true,\n \"isSigner\": false\n }],\n \"args\": []\n }, {\n \"name\": \"enableFeeAmount\",\n \"accounts\": [{\n \"name\": \"owner\",\n \"isMut\": true,\n \"isSigner\": true\n }, {\n \"name\": \"factoryState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"feeState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"fee\",\n \"type\": \"u32\"\n }, {\n \"name\": \"tickSpacing\",\n \"type\": \"u16\"\n }]\n }, {\n \"name\": \"createAndInitPool\",\n \"accounts\": [{\n \"name\": \"poolCreator\",\n \"isMut\": true,\n \"isSigner\": true\n }, {\n \"name\": \"token0\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"token1\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"feeState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"poolState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"initialObservationState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"sqrtPriceX32\",\n \"type\": \"u64\"\n }]\n }, {\n \"name\": \"increaseObservationCardinalityNext\",\n \"accounts\": [{\n \"name\": \"payer\",\n \"isMut\": false,\n \"isSigner\": true\n }, {\n \"name\": \"poolState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"observationAccountBumps\",\n \"type\": \"bytes\"\n }]\n }, {\n \"name\": \"setFeeProtocol\",\n \"accounts\": [{\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n }, {\n \"name\": \"factoryState\",\n \"isMut\": true,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"feeProtocol\",\n \"type\": \"u8\"\n }]\n }, {\n \"name\": \"collectProtocol\",\n \"accounts\": [{\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n }, {\n \"name\": \"factoryState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"poolState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"vault0\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"vault1\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"recipientWallet0\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"recipientWallet1\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"amount0Requested\",\n \"type\": \"u64\"\n }, {\n \"name\": \"amount1Requested\",\n \"type\": \"u64\"\n }]\n }, {\n \"name\": \"initTickAccount\",\n \"accounts\": [{\n \"name\": \"signer\",\n \"isMut\": true,\n \"isSigner\": true\n }, {\n \"name\": \"poolState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"tickState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"tick\",\n \"type\": \"i32\"\n }]\n }, {\n \"name\": \"closeTickAccount\",\n \"accounts\": [{\n \"name\": \"tickState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"recipient\",\n \"isMut\": true,\n \"isSigner\": false\n }],\n \"args\": []\n }, {\n \"name\": \"initBitmapAccount\",\n \"accounts\": [{\n \"name\": \"signer\",\n \"isMut\": true,\n \"isSigner\": true\n }, {\n \"name\": \"poolState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"bitmapState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"wordPos\",\n \"type\": \"i16\"\n }]\n }, {\n \"name\": \"initPositionAccount\",\n \"accounts\": [{\n \"name\": \"signer\",\n \"isMut\": true,\n \"isSigner\": true\n }, {\n \"name\": \"recipient\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"poolState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"tickLowerState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"tickUpperState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"positionState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": []\n }, {\n \"name\": \"mintCallback\",\n \"accounts\": [{\n \"name\": \"minter\",\n \"isMut\": false,\n \"isSigner\": true\n }, {\n \"name\": \"tokenAccount0\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"tokenAccount1\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"vault0\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"vault1\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"amount0Owed\",\n \"type\": \"u64\"\n }, {\n \"name\": \"amount1Owed\",\n \"type\": \"u64\"\n }]\n }, {\n \"name\": \"swapCallback\",\n \"accounts\": [{\n \"name\": \"signer\",\n \"isMut\": false,\n \"isSigner\": true\n }, {\n \"name\": \"inputTokenAccount\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"outputTokenAccount\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"inputVault\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"outputVault\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"amount0Delta\",\n \"type\": \"i64\"\n }, {\n \"name\": \"amount1Delta\",\n \"type\": \"i64\"\n }]\n }, {\n \"name\": \"mint\",\n \"accounts\": [{\n \"name\": \"minter\",\n \"isMut\": false,\n \"isSigner\": true\n }, {\n \"name\": \"tokenAccount0\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tokenAccount1\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"vault0\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"vault1\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"recipient\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"poolState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tickLowerState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tickUpperState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"bitmapLowerState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"bitmapUpperState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"positionState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"lastObservationState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"callbackHandler\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"amount\",\n \"type\": \"u64\"\n }]\n }, {\n \"name\": \"burn\",\n \"accounts\": [{\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n }, {\n \"name\": \"poolState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tickLowerState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"tickUpperState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"bitmapLowerState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"bitmapUpperState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"positionState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"lastObservationState\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"amount\",\n \"type\": \"u64\"\n }]\n }, {\n \"name\": \"collect\",\n \"accounts\": [{\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n }, {\n \"name\": \"poolState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tickLowerState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"tickUpperState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"positionState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"vault0\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"vault1\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"recipientWallet0\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"recipientWallet1\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"amount0Requested\",\n \"type\": \"u64\"\n }, {\n \"name\": \"amount1Requested\",\n \"type\": \"u64\"\n }]\n }, {\n \"name\": \"swap\",\n \"accounts\": [{\n \"name\": \"signer\",\n \"isMut\": false,\n \"isSigner\": true\n }, {\n \"name\": \"inputTokenAccount\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"outputTokenAccount\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"inputVault\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"outputVault\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"factoryState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"poolState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"lastObservationState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"callbackHandler\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"amountSpecified\",\n \"type\": \"i64\"\n }, {\n \"name\": \"sqrtPriceLimitX32\",\n \"type\": \"u64\"\n }]\n }, {\n \"name\": \"mintTokenizedPosition\",\n \"accounts\": [{\n \"name\": \"minter\",\n \"isMut\": true,\n \"isSigner\": true\n }, {\n \"name\": \"recipient\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"factoryState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"nftMint\",\n \"isMut\": true,\n \"isSigner\": true\n }, {\n \"name\": \"nftAccount\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"poolState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"corePositionState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tickLowerState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tickUpperState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"bitmapLowerState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"bitmapUpperState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tokenizedPositionState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tokenAccount0\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tokenAccount1\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"vault0\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"vault1\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"lastObservationState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"coreProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"associatedTokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"amount0Desired\",\n \"type\": \"u64\"\n }, {\n \"name\": \"amount1Desired\",\n \"type\": \"u64\"\n }, {\n \"name\": \"amount0Min\",\n \"type\": \"u64\"\n }, {\n \"name\": \"amount1Min\",\n \"type\": \"u64\"\n }, {\n \"name\": \"deadline\",\n \"type\": \"i64\"\n }]\n }, {\n \"name\": \"addMetaplexMetadata\",\n \"accounts\": [{\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n }, {\n \"name\": \"factoryState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"nftMint\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tokenizedPositionState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"metadataAccount\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"metadataProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": []\n }, {\n \"name\": \"increaseLiquidity\",\n \"accounts\": [{\n \"name\": \"payer\",\n \"isMut\": false,\n \"isSigner\": true\n }, {\n \"name\": \"factoryState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"tokenizedPositionState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"poolState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"corePositionState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tickLowerState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tickUpperState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"bitmapLowerState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"bitmapUpperState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tokenAccount0\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tokenAccount1\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"vault0\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"vault1\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"lastObservationState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"coreProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"amount0Desired\",\n \"type\": \"u64\"\n }, {\n \"name\": \"amount1Desired\",\n \"type\": \"u64\"\n }, {\n \"name\": \"amount0Min\",\n \"type\": \"u64\"\n }, {\n \"name\": \"amount1Min\",\n \"type\": \"u64\"\n }, {\n \"name\": \"deadline\",\n \"type\": \"i64\"\n }]\n }, {\n \"name\": \"decreaseLiquidity\",\n \"accounts\": [{\n \"name\": \"ownerOrDelegate\",\n \"isMut\": false,\n \"isSigner\": true\n }, {\n \"name\": \"nftAccount\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"tokenizedPositionState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"factoryState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"poolState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"corePositionState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tickLowerState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tickUpperState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"bitmapLowerState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"bitmapUpperState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"lastObservationState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"coreProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"liquidity\",\n \"type\": \"u64\"\n }, {\n \"name\": \"amount0Min\",\n \"type\": \"u64\"\n }, {\n \"name\": \"amount1Min\",\n \"type\": \"u64\"\n }, {\n \"name\": \"deadline\",\n \"type\": \"i64\"\n }]\n }, {\n \"name\": \"collectFromTokenized\",\n \"accounts\": [{\n \"name\": \"ownerOrDelegate\",\n \"isMut\": false,\n \"isSigner\": true\n }, {\n \"name\": \"nftAccount\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"tokenizedPositionState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"factoryState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"poolState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"corePositionState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tickLowerState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"tickUpperState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"bitmapLowerState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"bitmapUpperState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"lastObservationState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"vault0\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"vault1\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"recipientWallet0\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"recipientWallet1\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"coreProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"amount0Max\",\n \"type\": \"u64\"\n }, {\n \"name\": \"amount1Max\",\n \"type\": \"u64\"\n }]\n }, {\n \"name\": \"exactInputSingle\",\n \"accounts\": [{\n \"name\": \"signer\",\n \"isMut\": false,\n \"isSigner\": true\n }, {\n \"name\": \"factoryState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"poolState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"inputTokenAccount\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"outputTokenAccount\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"inputVault\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"outputVault\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"lastObservationState\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"coreProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"deadline\",\n \"type\": \"i64\"\n }, {\n \"name\": \"amountIn\",\n \"type\": \"u64\"\n }, {\n \"name\": \"amountOutMinimum\",\n \"type\": \"u64\"\n }, {\n \"name\": \"sqrtPriceLimitX32\",\n \"type\": \"u64\"\n }]\n }, {\n \"name\": \"exactInput\",\n \"accounts\": [{\n \"name\": \"signer\",\n \"isMut\": false,\n \"isSigner\": true\n }, {\n \"name\": \"factoryState\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"inputTokenAccount\",\n \"isMut\": true,\n \"isSigner\": false\n }, {\n \"name\": \"coreProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }, {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }],\n \"args\": [{\n \"name\": \"deadline\",\n \"type\": \"i64\"\n }, {\n \"name\": \"amountIn\",\n \"type\": \"u64\"\n }, {\n \"name\": \"amountOutMinimum\",\n \"type\": \"u64\"\n }, {\n \"name\": \"additionalAccountsPerPool\",\n \"type\": \"bytes\"\n }]\n }],\n \"accounts\": [{\n \"name\": \"factoryState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [{\n \"name\": \"bump\",\n \"type\": \"u8\"\n }, {\n \"name\": \"owner\",\n \"type\": \"publicKey\"\n }, {\n \"name\": \"feeProtocol\",\n \"type\": \"u8\"\n }]\n }\n }, {\n \"name\": \"feeState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [{\n \"name\": \"bump\",\n \"type\": \"u8\"\n }, {\n \"name\": \"fee\",\n \"type\": \"u32\"\n }, {\n \"name\": \"tickSpacing\",\n \"type\": \"u16\"\n }]\n }\n }, {\n \"name\": \"observationState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [{\n \"name\": \"bump\",\n \"type\": \"u8\"\n }, {\n \"name\": \"index\",\n \"type\": \"u16\"\n }, {\n \"name\": \"blockTimestamp\",\n \"type\": \"u32\"\n }, {\n \"name\": \"tickCumulative\",\n \"type\": \"i64\"\n }, {\n \"name\": \"secondsPerLiquidityCumulativeX32\",\n \"type\": \"u64\"\n }, {\n \"name\": \"initialized\",\n \"type\": \"bool\"\n }]\n }\n }, {\n \"name\": \"poolState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [{\n \"name\": \"bump\",\n \"type\": \"u8\"\n }, {\n \"name\": \"token0\",\n \"type\": \"publicKey\"\n }, {\n \"name\": \"token1\",\n \"type\": \"publicKey\"\n }, {\n \"name\": \"fee\",\n \"type\": \"u32\"\n }, {\n \"name\": \"tickSpacing\",\n \"type\": \"u16\"\n }, {\n \"name\": \"liquidity\",\n \"type\": \"u64\"\n }, {\n \"name\": \"sqrtPriceX32\",\n \"type\": \"u64\"\n }, {\n \"name\": \"tick\",\n \"type\": \"i32\"\n }, {\n \"name\": \"observationIndex\",\n \"type\": \"u16\"\n }, {\n \"name\": \"observationCardinality\",\n \"type\": \"u16\"\n }, {\n \"name\": \"observationCardinalityNext\",\n \"type\": \"u16\"\n }, {\n \"name\": \"feeGrowthGlobal0X32\",\n \"type\": \"u64\"\n }, {\n \"name\": \"feeGrowthGlobal1X32\",\n \"type\": \"u64\"\n }, {\n \"name\": \"protocolFeesToken0\",\n \"type\": \"u64\"\n }, {\n \"name\": \"protocolFeesToken1\",\n \"type\": \"u64\"\n }, {\n \"name\": \"unlocked\",\n \"type\": \"bool\"\n }]\n }\n }, {\n \"name\": \"positionState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [{\n \"name\": \"bump\",\n \"type\": \"u8\"\n }, {\n \"name\": \"liquidity\",\n \"type\": \"u64\"\n }, {\n \"name\": \"feeGrowthInside0LastX32\",\n \"type\": \"u64\"\n }, {\n \"name\": \"feeGrowthInside1LastX32\",\n \"type\": \"u64\"\n }, {\n \"name\": \"tokensOwed0\",\n \"type\": \"u64\"\n }, {\n \"name\": \"tokensOwed1\",\n \"type\": \"u64\"\n }]\n }\n }, {\n \"name\": \"positionManagerState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [{\n \"name\": \"bump\",\n \"type\": \"u8\"\n }]\n }\n }, {\n \"name\": \"swapRouterState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [{\n \"name\": \"bump\",\n \"type\": \"u8\"\n }, {\n \"name\": \"core\",\n \"type\": \"publicKey\"\n }, {\n \"name\": \"amountInCached\",\n \"type\": \"u64\"\n }]\n }\n }, {\n \"name\": \"tickState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [{\n \"name\": \"bump\",\n \"type\": \"u8\"\n }, {\n \"name\": \"tick\",\n \"type\": \"i32\"\n }, {\n \"name\": \"liquidityNet\",\n \"type\": \"i64\"\n }, {\n \"name\": \"liquidityGross\",\n \"type\": \"u64\"\n }, {\n \"name\": \"feeGrowthOutside0X32\",\n \"type\": \"u64\"\n }, {\n \"name\": \"feeGrowthOutside1X32\",\n \"type\": \"u64\"\n }, {\n \"name\": \"tickCumulativeOutside\",\n \"type\": \"i64\"\n }, {\n \"name\": \"secondsPerLiquidityOutsideX32\",\n \"type\": \"u64\"\n }, {\n \"name\": \"secondsOutside\",\n \"type\": \"u32\"\n }]\n }\n }, {\n \"name\": \"tickBitmapState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [{\n \"name\": \"bump\",\n \"type\": \"u8\"\n }, {\n \"name\": \"wordPos\",\n \"type\": \"i16\"\n }, {\n \"name\": \"word\",\n \"type\": {\n \"array\": [\"u64\", 4]\n }\n }]\n }\n }, {\n \"name\": \"tokenizedPositionState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [{\n \"name\": \"bump\",\n \"type\": \"u8\"\n }, {\n \"name\": \"mint\",\n \"type\": \"publicKey\"\n }, {\n \"name\": \"poolId\",\n \"type\": \"publicKey\"\n }, {\n \"name\": \"tickLower\",\n \"type\": \"i32\"\n }, {\n \"name\": \"tickUpper\",\n \"type\": \"i32\"\n }, {\n \"name\": \"liquidity\",\n \"type\": \"u64\"\n }, {\n \"name\": \"feeGrowthInside0LastX32\",\n \"type\": \"u64\"\n }, {\n \"name\": \"feeGrowthInside1LastX32\",\n \"type\": \"u64\"\n }, {\n \"name\": \"tokensOwed0\",\n \"type\": \"u64\"\n }, {\n \"name\": \"tokensOwed1\",\n \"type\": \"u64\"\n }]\n }\n }],\n \"events\": [{\n \"name\": \"OwnerChanged\",\n \"fields\": [{\n \"name\": \"oldOwner\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"newOwner\",\n \"type\": \"publicKey\",\n \"index\": false\n }]\n }, {\n \"name\": \"SetFeeProtocolEvent\",\n \"fields\": [{\n \"name\": \"feeProtocolOld\",\n \"type\": \"u8\",\n \"index\": false\n }, {\n \"name\": \"feeProtocol\",\n \"type\": \"u8\",\n \"index\": false\n }]\n }, {\n \"name\": \"FeeAmountEnabled\",\n \"fields\": [{\n \"name\": \"fee\",\n \"type\": \"u32\",\n \"index\": false\n }, {\n \"name\": \"tickSpacing\",\n \"type\": \"u16\",\n \"index\": false\n }]\n }, {\n \"name\": \"IncreaseObservationCardinalityNext\",\n \"fields\": [{\n \"name\": \"observationCardinalityNextOld\",\n \"type\": \"u16\",\n \"index\": false\n }, {\n \"name\": \"observationCardinalityNextNew\",\n \"type\": \"u16\",\n \"index\": false\n }]\n }, {\n \"name\": \"PoolCreatedAndInitialized\",\n \"fields\": [{\n \"name\": \"token0\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"token1\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"fee\",\n \"type\": \"u32\",\n \"index\": false\n }, {\n \"name\": \"tickSpacing\",\n \"type\": \"u16\",\n \"index\": false\n }, {\n \"name\": \"poolState\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"sqrtPriceX32\",\n \"type\": \"u64\",\n \"index\": false\n }, {\n \"name\": \"tick\",\n \"type\": \"i32\",\n \"index\": false\n }]\n }, {\n \"name\": \"CollectProtocolEvent\",\n \"fields\": [{\n \"name\": \"poolState\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"sender\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"recipientWallet0\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"recipientWallet1\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"amount0\",\n \"type\": \"u64\",\n \"index\": false\n }, {\n \"name\": \"amount1\",\n \"type\": \"u64\",\n \"index\": false\n }]\n }, {\n \"name\": \"SwapEvent\",\n \"fields\": [{\n \"name\": \"poolState\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"sender\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"tokenAccount0\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"tokenAccount1\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"amount0\",\n \"type\": \"i64\",\n \"index\": false\n }, {\n \"name\": \"amount1\",\n \"type\": \"i64\",\n \"index\": false\n }, {\n \"name\": \"sqrtPriceX32\",\n \"type\": \"u64\",\n \"index\": false\n }, {\n \"name\": \"liquidity\",\n \"type\": \"u64\",\n \"index\": false\n }, {\n \"name\": \"tick\",\n \"type\": \"i32\",\n \"index\": false\n }]\n }, {\n \"name\": \"MintEvent\",\n \"fields\": [{\n \"name\": \"poolState\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"sender\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"owner\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"tickLower\",\n \"type\": \"i32\",\n \"index\": false\n }, {\n \"name\": \"tickUpper\",\n \"type\": \"i32\",\n \"index\": false\n }, {\n \"name\": \"amount\",\n \"type\": \"u64\",\n \"index\": false\n }, {\n \"name\": \"amount0\",\n \"type\": \"u64\",\n \"index\": false\n }, {\n \"name\": \"amount1\",\n \"type\": \"u64\",\n \"index\": false\n }]\n }, {\n \"name\": \"BurnEvent\",\n \"fields\": [{\n \"name\": \"poolState\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"owner\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"tickLower\",\n \"type\": \"i32\",\n \"index\": false\n }, {\n \"name\": \"tickUpper\",\n \"type\": \"i32\",\n \"index\": false\n }, {\n \"name\": \"amount\",\n \"type\": \"u64\",\n \"index\": false\n }, {\n \"name\": \"amount0\",\n \"type\": \"u64\",\n \"index\": false\n }, {\n \"name\": \"amount1\",\n \"type\": \"u64\",\n \"index\": false\n }]\n }, {\n \"name\": \"CollectEvent\",\n \"fields\": [{\n \"name\": \"poolState\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"owner\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"tickLower\",\n \"type\": \"i32\",\n \"index\": false\n }, {\n \"name\": \"tickUpper\",\n \"type\": \"i32\",\n \"index\": false\n }, {\n \"name\": \"amount0\",\n \"type\": \"u64\",\n \"index\": false\n }, {\n \"name\": \"amount1\",\n \"type\": \"u64\",\n \"index\": false\n }]\n }, {\n \"name\": \"IncreaseLiquidityEvent\",\n \"fields\": [{\n \"name\": \"tokenId\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"liquidity\",\n \"type\": \"u64\",\n \"index\": false\n }, {\n \"name\": \"amount0\",\n \"type\": \"u64\",\n \"index\": false\n }, {\n \"name\": \"amount1\",\n \"type\": \"u64\",\n \"index\": false\n }]\n }, {\n \"name\": \"DecreaseLiquidityEvent\",\n \"fields\": [{\n \"name\": \"tokenId\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"liquidity\",\n \"type\": \"u64\",\n \"index\": false\n }, {\n \"name\": \"amount0\",\n \"type\": \"u64\",\n \"index\": false\n }, {\n \"name\": \"amount1\",\n \"type\": \"u64\",\n \"index\": false\n }]\n }, {\n \"name\": \"CollectTokenizedEvent\",\n \"fields\": [{\n \"name\": \"tokenId\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"recipientWallet0\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"recipientWallet1\",\n \"type\": \"publicKey\",\n \"index\": false\n }, {\n \"name\": \"amount0\",\n \"type\": \"u64\",\n \"index\": false\n }, {\n \"name\": \"amount1\",\n \"type\": \"u64\",\n \"index\": false\n }]\n }],\n \"errors\": [{\n \"code\": 6000,\n \"name\": \"LOK\",\n \"msg\": \"LOK\"\n }, {\n \"code\": 6001,\n \"name\": \"ZeroMintAmount\",\n \"msg\": \"Minting amount should be greater than 0\"\n }, {\n \"code\": 6002,\n \"name\": \"TLU\",\n \"msg\": \"TLU\"\n }, {\n \"code\": 6003,\n \"name\": \"TMS\",\n \"msg\": \"TMS\"\n }, {\n \"code\": 6004,\n \"name\": \"TLM\",\n \"msg\": \"TLM\"\n }, {\n \"code\": 6005,\n \"name\": \"TUM\",\n \"msg\": \"TUM\"\n }, {\n \"code\": 6006,\n \"name\": \"M0\",\n \"msg\": \"M0\"\n }, {\n \"code\": 6007,\n \"name\": \"M1\",\n \"msg\": \"M1\"\n }, {\n \"code\": 6008,\n \"name\": \"OS\",\n \"msg\": \"OS\"\n }, {\n \"code\": 6009,\n \"name\": \"AS\",\n \"msg\": \"AS\"\n }, {\n \"code\": 6010,\n \"name\": \"SPL\",\n \"msg\": \"SPL\"\n }, {\n \"code\": 6011,\n \"name\": \"IIA\",\n \"msg\": \"IIA\"\n }, {\n \"code\": 6012,\n \"name\": \"NP\",\n \"msg\": \"NP\"\n }, {\n \"code\": 6013,\n \"name\": \"LO\",\n \"msg\": \"LO\"\n }, {\n \"code\": 6014,\n \"name\": \"R\",\n \"msg\": \"R\"\n }, {\n \"code\": 6015,\n \"name\": \"T\",\n \"msg\": \"T\"\n }, {\n \"code\": 6016,\n \"name\": \"LS\",\n \"msg\": \"LS\"\n }, {\n \"code\": 6017,\n \"name\": \"LA\",\n \"msg\": \"LA\"\n }, {\n \"code\": 6018,\n \"name\": \"TransactionTooOld\",\n \"msg\": \"Transaction too old\"\n }, {\n \"code\": 6019,\n \"name\": \"PriceSlippageCheck\",\n \"msg\": \"Price slippage check\"\n }, {\n \"code\": 6020,\n \"name\": \"NotApproved\",\n \"msg\": \"Not approved\"\n }, {\n \"code\": 6021,\n \"name\": \"TooLittleReceived\",\n \"msg\": \"Too little received\"\n }]\n};\n\nexport { ADDRESS_ZERO, BITMAP_SEED, FACTORY_ADDRESS, FEE_SEED, FeeAmount, FullMath, IDL, LiquidityMath, NoTickDataProvider, OBSERVATION_SEED, POOL_SEED, POSITION_SEED, Pool, Position, Route, SqrtPriceMath, SwapMath, TICK_SEED, TICK_SPACINGS, Tick, TickList, TickMath, Trade, buildTick, computePoolAddress, encodeSqrtRatioX32, generateBitmapWord, i16ToSeed, i32ToSeed, isSorted, lsb, maxLiquidityForAmounts, msb, nearestUsableTick, nextInitializedBit, priceToClosestTick, snapshotCumulativesInside, tickPosition, tickToPrice, toHex, tradeComparator, transformObservation, u16ToSeed, u32ToSeed };\n//# sourceMappingURL=cykura-sdk.esm.js.map\n","/*\r\n * bignumber.js v9.1.0\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\nvar\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n/*\r\n * Create and return a BigNumber constructor.\r\n */\r\nfunction clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) t = xc, xc = yc, yc = t, y.s = -y.s;\r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) zc = xc, xc = yc, yc = zc, i = xcL, xcL = ycL, ycL = i;\r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) t = yc, yc = xc, xc = t, b = a;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) i = g1, g1 = g2, g2 = i, len -= i;\r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n P[Symbol.toStringTag] = 'BigNumber';\r\n\r\n // Node.js v10.12.0+\r\n P[Symbol.for('nodejs.util.inspect.custom')] = P.valueOf;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n}\r\n\r\n\r\n// PRIVATE HELPER FUNCTIONS\r\n\r\n// These functions don't need access to variables,\r\n// e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\nfunction bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n}\r\n\r\n\r\n// Return a coefficient array as a string of base 10 digits.\r\nfunction coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n}\r\n\r\n\r\n// Compare the value of BigNumbers x and y.\r\nfunction compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n}\r\n\r\n\r\n/*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\nfunction intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n}\r\n\r\n\r\n// Assumes finite n.\r\nfunction isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n}\r\n\r\n\r\nfunction toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n}\r\n\r\n\r\nfunction toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n}\r\n\r\n\r\n// EXPORT\r\n\r\n\r\nexport var BigNumber = clone();\r\n\r\nexport default BigNumber;\r\n","// src/anchor/idl/deltafi_dex_v2.ts\nvar IDL = {\n \"version\": \"0.1.0\",\n \"name\": \"deltafi_dex_v2\",\n \"instructions\": [\n {\n \"name\": \"createMarketConfig\",\n \"accounts\": [\n {\n \"name\": \"seed\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"marketConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"deltafiMint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"deltafiToken\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"pythProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"serumProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n },\n {\n \"name\": \"createSwap\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"seed\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"mintBase\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"mintQuote\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBase\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenQuote\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"adminFeeTokenBase\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"adminFeeTokenQuote\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"swapType\",\n \"type\": {\n \"defined\": \"SwapType\"\n }\n },\n {\n \"name\": \"swapConfig\",\n \"type\": {\n \"defined\": \"SwapConfig\"\n }\n }\n ]\n },\n {\n \"name\": \"updateSwapConfig\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"swapConfig\",\n \"type\": {\n \"defined\": \"SwapConfig\"\n }\n }\n ]\n },\n {\n \"name\": \"updateFarmConfig\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"farmInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"farmConfig\",\n \"type\": {\n \"defined\": \"FarmConfig\"\n }\n }\n ]\n },\n {\n \"name\": \"initNormalSwap\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"liquidityProvider\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceBase\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceQuote\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"userAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"baseAmount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"quoteAmount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"initStableSwap\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"liquidityProvider\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceBase\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceQuote\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"userAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"baseAmount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"quoteAmount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"initSerumSwap\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"liquidityProvider\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"serumMarket\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"serumBids\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"serumAsks\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"userAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"baseAmount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"quoteAmount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"createLiquidityProviderV2\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"liquidityProvider\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n },\n {\n \"name\": \"depositToNormalSwap\",\n \"accounts\": [\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"liquidityProvider\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceBase\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceQuote\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"userAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"baseAmount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"quoteAmount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minBaseShare\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minQuoteShare\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"depositToStableSwap\",\n \"accounts\": [\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"liquidityProvider\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceBase\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceQuote\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"userAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"baseAmount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"quoteAmount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minBaseShare\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minQuoteShare\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"depositToSerumSwap\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"liquidityProvider\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"serumMarket\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"serumBids\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"serumAsks\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"userAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"baseAmount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"quoteAmount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minBaseShare\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minQuoteShare\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"withdrawFromNormalSwap\",\n \"accounts\": [\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"liquidityProvider\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceBase\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceQuote\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"adminFeeTokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"adminFeeTokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"baseShare\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"quoteShare\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minBaseAmount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minQuoteAmount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"withdrawFromStableSwap\",\n \"accounts\": [\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"liquidityProvider\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceBase\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceQuote\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"adminFeeTokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"adminFeeTokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"baseShare\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"quoteShare\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minBaseAmount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minQuoteAmount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"withdrawFromSerumSwap\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userTokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"liquidityProvider\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"serumMarket\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"serumBids\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"serumAsks\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"adminFeeTokenBase\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"adminFeeTokenQuote\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"baseShare\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"quoteShare\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minBaseAmount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minQuoteAmount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"normalSwap\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userSourceToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapSourceToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"deltafiUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"adminDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceBase\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceQuote\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"userAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"amountIn\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minAmountOut\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"normalSwapWithReferrer\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userSourceToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapSourceToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"deltafiUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"referrer\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"adminDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceBase\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceQuote\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"userAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"amountIn\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minAmountOut\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"normalSwapWithRebate\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userSourceToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapSourceToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"deltafiUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"rebateToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"adminDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceBase\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceQuote\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"userAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"amountIn\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minAmountOut\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"stableSwap\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userSourceToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapSourceToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"deltafiUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"adminDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceBase\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceQuote\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"userAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"amountIn\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minAmountOut\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"stableSwapWithReferrer\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userSourceToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapSourceToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"deltafiUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"referrer\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"adminDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceBase\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceQuote\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"userAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"amountIn\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minAmountOut\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"stableSwapWithRebate\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userSourceToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapSourceToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"deltafiUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"rebateToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"adminDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceBase\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pythPriceQuote\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"userAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"amountIn\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minAmountOut\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"serumSwap\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userSourceToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapSourceToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"deltafiUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"adminDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"serumMarket\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"serumBids\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"serumAsks\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"userAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"amountIn\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minAmountOut\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"serumSwapWithReferrer\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userSourceToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapSourceToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"deltafiUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"referrer\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"adminDestinationToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"serumMarket\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"serumBids\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"serumAsks\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"userAuthority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"amountIn\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minAmountOut\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"createFarm\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"farmInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"seed\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"farmConfig\",\n \"type\": {\n \"defined\": \"FarmConfig\"\n }\n }\n ]\n },\n {\n \"name\": \"depositToFarm\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"farmInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"liquidityProvider\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"farmUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"baseAmount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"quoteAmount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"withdrawFromFarm\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"farmInfo\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"liquidityProvider\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"farmUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n }\n ],\n \"args\": [\n {\n \"name\": \"baseAmount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"quoteAmount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"claimFarmRewards\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"swapInfo\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"farmInfo\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"farmUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userDeltafiToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapDeltafiToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"createDeltafiUser\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"deltafiUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n },\n {\n \"name\": \"createDeltafiUserWithReferrer\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"deltafiUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"referrer\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n },\n {\n \"name\": \"claimSwapRewards\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"deltafiUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userDeltafiToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapDeltafiToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"claimTradeRewards\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"deltafiUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userDeltafiToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapDeltafiToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"claimReferralRewards\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"deltafiUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"userDeltafiToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"swapDeltafiToken\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"createFarmUserV2\",\n \"accounts\": [\n {\n \"name\": \"marketConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"farmInfo\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"farmUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"DeltafiUser\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"configKey\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"referrer\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"owedTradeRewards\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"claimedTradeRewards\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"owedReferralRewards\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"claimedReferralRewards\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"reserved\",\n \"type\": {\n \"array\": [\n \"u64\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"FarmUser\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"configKey\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"farmKey\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"basePosition\",\n \"type\": {\n \"defined\": \"FarmPosition\"\n }\n },\n {\n \"name\": \"quotePosition\",\n \"type\": {\n \"defined\": \"FarmPosition\"\n }\n },\n {\n \"name\": \"reserved\",\n \"type\": {\n \"array\": [\n \"u64\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"FarmInfo\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"seed\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"configKey\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"swapKey\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"stakedBaseShare\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"stakedQuoteShare\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"farmConfig\",\n \"type\": {\n \"defined\": \"FarmConfig\"\n }\n },\n {\n \"name\": \"reserved\",\n \"type\": {\n \"array\": [\n \"u64\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"MarketConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"version\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"seed\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"adminKey\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"deltafiMint\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"deltafiToken\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"pythProgramId\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"serumProgramId\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"reservedU64\",\n \"type\": {\n \"array\": [\n \"u64\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"SwapInfo\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"isInitialized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"seed\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"swapType\",\n \"type\": {\n \"defined\": \"SwapType\"\n }\n },\n {\n \"name\": \"configKey\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"mintBase\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"mintQuote\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"tokenBase\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"tokenQuote\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"adminFeeTokenBase\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"adminFeeTokenQuote\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"mintBaseDecimals\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"mintQuoteDecimals\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"pythPriceBase\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"pythPriceQuote\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"serumMarket\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"serumBids\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"serumAsks\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"poolState\",\n \"type\": {\n \"defined\": \"PoolState\"\n }\n },\n {\n \"name\": \"swapConfig\",\n \"type\": {\n \"defined\": \"SwapConfig\"\n }\n },\n {\n \"name\": \"reservedU64\",\n \"type\": {\n \"array\": [\n \"u64\",\n 24\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"LiquidityProvider\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"configKey\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"swapKey\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"owner\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"baseShare\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"quoteShare\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"stakedBaseShare\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"stakedQuoteShare\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"deprecatedU64\",\n \"type\": {\n \"array\": [\n \"u64\",\n 10\n ]\n }\n },\n {\n \"name\": \"reservedU64\",\n \"type\": {\n \"array\": [\n \"u64\",\n 32\n ]\n }\n }\n ]\n }\n }\n ],\n \"types\": [\n {\n \"name\": \"PoolState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"marketPrice\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"baseReserve\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"quoteReserve\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"targetBaseReserve\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"targetQuoteReserve\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"baseSupply\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"quoteSupply\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"totalTradedBase\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"totalTradedQuote\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"accumulatedTradeReward\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lastUpdateTimestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"marketPriceLastUpdateSlot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lowPrice\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"highPrice\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"currentDayTradedQuote\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lastDayTradedQuote\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"currentWeekTradedQuote\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lastWeekTradedQuote\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"reservedU64\",\n \"type\": {\n \"array\": [\n \"u64\",\n 12\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"FarmPosition\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"depositedAmount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"rewardsOwed\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"cumulativeInterest\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lastUpdateTs\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"nextClaimTs\",\n \"type\": \"i64\"\n },\n {\n \"name\": \"latestDepositSlot\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"FarmConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"baseAprNumerator\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"baseAprDenominator\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"quoteAprNumerator\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"quoteAprDenominator\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"minClaimPeriod\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"isPaused\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"maxStakedBaseShare\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"maxStakedQuoteShare\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"endTimestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"reservedU64\",\n \"type\": {\n \"array\": [\n \"u64\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"SwapConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"isPaused\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"enableConfidenceInterval\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"maxSwapPercentage\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"minReserveLimitPercentage\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"serumMarketTokenRatioLimitPercentage\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"adminTradeFeeNumerator\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"adminTradeFeeDenominator\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"adminWithdrawFeeNumerator\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"adminWithdrawFeeDenominator\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"tradeFeeNumerator\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"tradeFeeDenominator\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"withdrawFeeNumerator\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"withdrawFeeDenominator\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"tradeRewardNumerator\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"tradeRewardDenominator\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"referralRewardNumerator\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"referralRewardDenominator\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"maxStablePriceDiffNumerator\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"maxStablePriceDiffDenominator\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"tradeRewardCap\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tradeRewardMaxReserve\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"slope\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"disableStablePriceDiffCheck\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"disableQuoteTokenPriceCheck\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"rebateNumerator\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"rebateDenominator\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"virtualReservePercentage\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"reservedU8\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"reservedU64\",\n \"type\": {\n \"array\": [\n \"u64\",\n 14\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"SwapDirection\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"SellBase\"\n },\n {\n \"name\": \"SellQuote\"\n }\n ]\n }\n },\n {\n \"name\": \"SwapType\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"NormalSwap\"\n },\n {\n \"name\": \"StableSwap\"\n },\n {\n \"name\": \"SerumSwap\"\n }\n ]\n }\n }\n ],\n \"errors\": [\n {\n \"code\": 6e3,\n \"name\": \"AlreadyInUse\",\n \"msg\": \"Swap account already in use\"\n },\n {\n \"code\": 6001,\n \"name\": \"InvalidAdmin\",\n \"msg\": \"Address of the admin fee account is incorrect\"\n },\n {\n \"code\": 6002,\n \"name\": \"ActiveTransfer\",\n \"msg\": \"Active admin transfer in progress\"\n },\n {\n \"code\": 6003,\n \"name\": \"NoActiveTransfer\",\n \"msg\": \"No active admin transfer in progress\"\n },\n {\n \"code\": 6004,\n \"name\": \"AdminDeadlineExceeded\",\n \"msg\": \"Admin transfer deadline exceeded\"\n },\n {\n \"code\": 6005,\n \"name\": \"Unauthorized\",\n \"msg\": \"Account is not authorized to execute this instruction\"\n },\n {\n \"code\": 6006,\n \"name\": \"InvalidAccountOwner\",\n \"msg\": \"Input account owner is not the program\"\n },\n {\n \"code\": 6007,\n \"name\": \"InvalidOwner\",\n \"msg\": \"Input account owner is not the program address\"\n },\n {\n \"code\": 6008,\n \"name\": \"InvalidSigner\",\n \"msg\": \"Input account must be signer\"\n },\n {\n \"code\": 6009,\n \"name\": \"InvalidOutputOwner\",\n \"msg\": \"Output pool account owner cannot be the program address\"\n },\n {\n \"code\": 6010,\n \"name\": \"IncorrectSwapAccount\",\n \"msg\": \"Address of the provided swap token account is incorrect\"\n },\n {\n \"code\": 6011,\n \"name\": \"InvalidProgramAddress\",\n \"msg\": \"Invalid program address generated from nonce and key\"\n },\n {\n \"code\": 6012,\n \"name\": \"InvalidCloseAuthority\",\n \"msg\": \"Token account has a close authority\"\n },\n {\n \"code\": 6013,\n \"name\": \"InvalidFreezeAuthority\",\n \"msg\": \"Pool token mint has a freeze authority\"\n },\n {\n \"code\": 6014,\n \"name\": \"IncorrectTokenProgramId\",\n \"msg\": \"Incorrect token program ID\"\n },\n {\n \"code\": 6015,\n \"name\": \"IncorrectMint\",\n \"msg\": \"Address of the provided token mint is incorrect\"\n },\n {\n \"code\": 6016,\n \"name\": \"UnexpectedMint\",\n \"msg\": \"Deserialized account is not an SPL Token mint\"\n },\n {\n \"code\": 6017,\n \"name\": \"RepeatedMint\",\n \"msg\": \"Swap input token accounts have the same mint\"\n },\n {\n \"code\": 6018,\n \"name\": \"ExpectedAccount\",\n \"msg\": \"Deserialized account is not an SPL Token account\"\n },\n {\n \"code\": 6019,\n \"name\": \"InvalidInstruction\",\n \"msg\": \"Invalid instruction\"\n },\n {\n \"code\": 6020,\n \"name\": \"InstructionUnpackError\",\n \"msg\": \"Instruction unpack is failed\"\n },\n {\n \"code\": 6021,\n \"name\": \"EmptyPool\",\n \"msg\": \"Pool token supply is 0\"\n },\n {\n \"code\": 6022,\n \"name\": \"EmptySupply\",\n \"msg\": \"Input token account empty\"\n },\n {\n \"code\": 6023,\n \"name\": \"InvalidSupply\",\n \"msg\": \"Pool token mint has a non-zero supply\"\n },\n {\n \"code\": 6024,\n \"name\": \"InvalidDelegate\",\n \"msg\": \"Token account has a delegate\"\n },\n {\n \"code\": 6025,\n \"name\": \"InvalidInput\",\n \"msg\": \"InvalidInput\"\n },\n {\n \"code\": 6026,\n \"name\": \"IsPaused\",\n \"msg\": \"Swap pool is paused\"\n },\n {\n \"code\": 6027,\n \"name\": \"NotRentExempt\",\n \"msg\": \"Lamport balance below rent-exempt threshold\"\n },\n {\n \"code\": 6028,\n \"name\": \"CalculationFailure\",\n \"msg\": \"CalculationFailure\"\n },\n {\n \"code\": 6029,\n \"name\": \"ExceededSlippage\",\n \"msg\": \"Swap instruction exceeds desired slippage limit\"\n },\n {\n \"code\": 6030,\n \"name\": \"MismatchedDecimals\",\n \"msg\": \"Token mints must have same decimals\"\n },\n {\n \"code\": 6031,\n \"name\": \"InvalidPythConfig\",\n \"msg\": \"Input pyth config is invalid\"\n },\n {\n \"code\": 6032,\n \"name\": \"InsufficientLiquidity\",\n \"msg\": \"Insufficient liquidity available\"\n },\n {\n \"code\": 6033,\n \"name\": \"LiquidityPositionEmpty\",\n \"msg\": \"User has no liquidity position\"\n },\n {\n \"code\": 6034,\n \"name\": \"InvalidPositionKey\",\n \"msg\": \"Invalid position key\"\n },\n {\n \"code\": 6035,\n \"name\": \"InvalidClaimTime\",\n \"msg\": \"Invalid claim timestamp\"\n },\n {\n \"code\": 6036,\n \"name\": \"InsufficientClaimAmount\",\n \"msg\": \"Insufficient claim amount\"\n },\n {\n \"code\": 6037,\n \"name\": \"InsufficientFunds\",\n \"msg\": \"Insufficient funds\"\n },\n {\n \"code\": 6038,\n \"name\": \"WithdrawNotEnough\",\n \"msg\": \"Withdraw not enough\"\n },\n {\n \"code\": 6039,\n \"name\": \"TokenInitializeMintFailed\",\n \"msg\": \"Mint initialization failed\"\n },\n {\n \"code\": 6040,\n \"name\": \"InvalidSlope\",\n \"msg\": \"Invalid slope\"\n },\n {\n \"code\": 6041,\n \"name\": \"InvalidAccount\",\n \"msg\": \"Invalid account\"\n },\n {\n \"code\": 6042,\n \"name\": \"TokenTransferFailed\",\n \"msg\": \"Token transfer failed\"\n },\n {\n \"code\": 6043,\n \"name\": \"TokenMintToFailed\",\n \"msg\": \"Token mint to failed\"\n },\n {\n \"code\": 6044,\n \"name\": \"TokenBurnFailed\",\n \"msg\": \"Token burn failed\"\n },\n {\n \"code\": 6045,\n \"name\": \"InvalidPythPrice\",\n \"msg\": \"Invalid pyth price\"\n },\n {\n \"code\": 6046,\n \"name\": \"UnstablePythPrice\",\n \"msg\": \"Unstable pyth price\"\n },\n {\n \"code\": 6047,\n \"name\": \"InconfidentPythPrice\",\n \"msg\": \"Pyth confidence interval is too large\"\n },\n {\n \"code\": 6048,\n \"name\": \"IndexOutOfRange\",\n \"msg\": \"Index of out rage\"\n },\n {\n \"code\": 6049,\n \"name\": \"InvalidMarketConfig\",\n \"msg\": \"Input market config is invalid\"\n },\n {\n \"code\": 6050,\n \"name\": \"InvalidPythProgramId\",\n \"msg\": \"Pyth program id is invalid\"\n },\n {\n \"code\": 6051,\n \"name\": \"PotentialFlashLoanAttack\",\n \"msg\": \"Potential Flash Loan Attack\"\n },\n {\n \"code\": 6052,\n \"name\": \"IncorrectSwapType\",\n \"msg\": \"Incorrect swap type\"\n },\n {\n \"code\": 6053,\n \"name\": \"IncorrectStablePrice\",\n \"msg\": \"Incorrect stable price\"\n },\n {\n \"code\": 6054,\n \"name\": \"InvalidTokenDecimals\",\n \"msg\": \"Invalid token decimals\"\n },\n {\n \"code\": 6055,\n \"name\": \"InconsistentPoolState\",\n \"msg\": \"Inconsistent pool state\"\n },\n {\n \"code\": 6056,\n \"name\": \"InvalidReferrer\",\n \"msg\": \"Invalid referrer address\"\n },\n {\n \"code\": 6057,\n \"name\": \"InconsistentInitialPoolTokenBalance\",\n \"msg\": \"Inconsistent initial pool token balance\"\n },\n {\n \"code\": 6058,\n \"name\": \"ExceededSwapOutAmount\",\n \"msg\": \"Swap out amount exceeds the limit\"\n },\n {\n \"code\": 6059,\n \"name\": \"AlreadyInitialized\",\n \"msg\": \"Already initialized\"\n },\n {\n \"code\": 6060,\n \"name\": \"NotInitialized\",\n \"msg\": \"Not initialized\"\n },\n {\n \"code\": 6061,\n \"name\": \"InvalidSwapConfig\",\n \"msg\": \"Invalid swap config\"\n },\n {\n \"code\": 6062,\n \"name\": \"InvalidFarmConfig\",\n \"msg\": \"Invalid farm config\"\n },\n {\n \"code\": 6063,\n \"name\": \"InsufficientPoolReserve\",\n \"msg\": \"Insufficient pool reserve\"\n },\n {\n \"code\": 6064,\n \"name\": \"StableSwapPriceDiffLimitExceeded\",\n \"msg\": \"stable swap price diff limit exceeded\"\n },\n {\n \"code\": 6065,\n \"name\": \"InvalidTimestamp\",\n \"msg\": \"Invalid timestamp\"\n },\n {\n \"code\": 6066,\n \"name\": \"InvalidSerumData\",\n \"msg\": \"InvalidSerumData\"\n },\n {\n \"code\": 6067,\n \"name\": \"InvalidPythPriceAccount\",\n \"msg\": \"Invalid pyth price account\"\n },\n {\n \"code\": 6068,\n \"name\": \"InvalidSerumMarketTokenRatio\",\n \"msg\": \"InvalidSerumMarketTokenRatio\"\n },\n {\n \"code\": 6069,\n \"name\": \"DepeggedQuotePrice\",\n \"msg\": \"DepeggedQuotePrice\"\n },\n {\n \"code\": 6070,\n \"name\": \"InvalidWithdrawalAmount\",\n \"msg\": \"Invalid withdrawal amount\"\n },\n {\n \"code\": 6071,\n \"name\": \"InvalidStakingAmount\",\n \"msg\": \"Invalid staking amount\"\n },\n {\n \"code\": 6072,\n \"name\": \"RebateNotEnabled\",\n \"msg\": \"Rebate not enabled\"\n }\n ]\n};\n\n// src/anchor/anchor_utils.ts\nimport { PublicKey } from \"@solana/web3.js\";\nimport { Program, AnchorProvider, web3 } from \"@project-serum/anchor\";\nimport { TOKEN_PROGRAM_ID } from \"@solana/spl-token\";\nvar serumProgramId = new web3.PublicKey(\"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\");\nfunction getDeltafiDexV2(programId, provider = null) {\n return new Program(IDL, programId, provider != null ? provider : AnchorProvider.local());\n}\n\n// src/calculations/swapOutAmount.ts\nimport BigNumber6 from \"bignumber.js\";\n\n// src/calculations/calculation.ts\nimport BigNumber4 from \"bignumber.js\";\n\n// src/calculations/utils.ts\nimport { PublicKey as PublicKey2 } from \"@solana/web3.js\";\nimport BigNumber from \"bignumber.js\";\nvar WAD_LENGTH = 18;\nvar WAD = new BigNumber(`1e+${WAD_LENGTH}`);\nfunction BigNumberWithConfig(val, object) {\n const BN2 = BigNumber.clone(object);\n return new BN2(val);\n}\nfunction validate(expression, errMsg) {\n if (expression === false) {\n throw Error(errMsg);\n }\n}\nvar ClonedBignumber = BigNumber.clone({\n FORMAT: {\n decimalSeparator: \".\",\n groupSeparator: \",\",\n groupSize: 3\n }\n});\nfunction exponentiatedBy(num, decimals) {\n const wrap = new ClonedBignumber(num);\n return wrap.div(new ClonedBignumber(`1e+${decimals}`));\n}\nfunction exponentiate(num, decimals) {\n return new BigNumber(num).multipliedBy(new BigNumber(`1e+${decimals}`));\n}\n\n// src/calculations/tokenUtils.ts\nimport { BN } from \"@project-serum/anchor\";\nimport BigNumber2 from \"bignumber.js\";\n\n// src/calculations/approximation.ts\nimport BigNumber3 from \"bignumber.js\";\nfunction approximateOutAmount(currentReserveA, currentReserveB, targetReserveA, targetReserveB, marketPrice, inputAAmount) {\n const impliedOutAmountNumerator = currentReserveB.multipliedBy(inputAAmount).multipliedBy(marketPrice).multipliedBy(targetReserveA);\n const impliedOutAmountDenumerator = targetReserveB.multipliedBy(currentReserveA);\n const impliedOutAmountBigNumber = impliedOutAmountNumerator.dividedBy(\n impliedOutAmountDenumerator\n );\n let expCeil = Math.ceil(\n marketPrice.multipliedBy(targetReserveA).dividedBy(targetReserveB).toNumber()\n );\n validate(expCeil < (1 << 8) - 1, \"exponent is too large\");\n if (currentReserveA.isLessThanOrEqualTo(inputAAmount.multipliedBy(expCeil)) || currentReserveB.isLessThanOrEqualTo(inputAAmount)) {\n return {\n impliedOutAmount: Math.floor(impliedOutAmountBigNumber.toNumber()),\n approximationResult: null\n };\n }\n const kProduct = approximateUpperBoundK(currentReserveA, inputAAmount, expCeil);\n const kMultiplier = kProduct.minus(new BigNumber3(1));\n const kMultiplicand = currentReserveB.minus(impliedOutAmountBigNumber);\n const diffFromImpliedAmount = kMultiplier.multipliedBy(kMultiplicand);\n if (impliedOutAmountBigNumber.abs().isLessThan(diffFromImpliedAmount)) {\n return {\n impliedOutAmount: Math.floor(impliedOutAmountBigNumber.toNumber()),\n approximationResult: null\n };\n }\n const approximationResult = Math.floor(\n impliedOutAmountBigNumber.minus(diffFromImpliedAmount).toNumber()\n );\n const impliedOutAmount = Math.floor(impliedOutAmountBigNumber.toNumber());\n validate(\n approximationResult <= impliedOutAmount,\n \"approximation result should not be larger than the implied out amount\"\n );\n return { impliedOutAmount, approximationResult };\n}\nfunction approximateUpperBoundK(currentReserveA, inputAAmount, expCeil) {\n let coreHigh = BigNumberWithConfig(currentReserveA, {\n ROUNDING_MODE: BigNumber3.ROUND_CEIL\n }).dividedBy(currentReserveA.plus(inputAAmount)).exponentiatedBy(expCeil);\n let coreLow = BigNumberWithConfig(\n currentReserveA.minus(inputAAmount.multipliedBy(expCeil)),\n {\n ROUNDING_MODE: BigNumber3.ROUND_FLOOR\n }\n ).dividedBy(currentReserveA);\n return BigNumberWithConfig(coreHigh, {\n ROUNDING_MODE: BigNumber3.ROUND_CEIL\n }).dividedBy(coreLow);\n}\n\n// src/calculations/calculation.ts\nvar FLOAT_ROUND_UP_ESPSILON = 6e-17;\nfunction calculateOutAmountNormalSwapInternal(marketPrice, targetReserveA, targetReserveB, currentReserveA, currentResreveB, inputAAmount) {\n const coreDenumerator = currentReserveA.plus(inputAAmount);\n if (coreDenumerator.isNegative()) {\n return new BigNumber4(-Infinity);\n }\n let core = BigNumberWithConfig(currentReserveA, {\n ROUNDING_MODE: BigNumber4.ROUND_CEIL\n }).dividedBy(coreDenumerator);\n let exp = BigNumberWithConfig(marketPrice, {\n ROUNDING_MODE: BigNumber4.ROUND_FLOOR\n }).multipliedBy(targetReserveA).dividedBy(targetReserveB);\n let coreNumber = core.toNumber();\n let expNumber = exp.toNumber();\n let coreExpNumber = Math.pow(coreNumber, expNumber) + FLOAT_ROUND_UP_ESPSILON;\n let coreExp = BigNumberWithConfig(currentResreveB.toNumber(), {\n ROUNDING_MODE: BigNumber4.ROUND_CEIL\n }).multipliedBy(new BigNumber4(coreExpNumber));\n return currentResreveB.minus(coreExp);\n}\nfunction calculateOutAmountNormalSwap(marketPrice, targetReserveA, targetReserveB, currentReserveA, currentReserveB, inputAAmount) {\n const { impliedOutAmount, approximationResult } = approximateOutAmount(\n currentReserveA,\n currentReserveB,\n targetReserveA,\n targetReserveB,\n marketPrice,\n inputAAmount\n );\n const calculationResult = Math.floor(\n calculateOutAmountNormalSwapInternal(\n marketPrice,\n targetReserveA,\n targetReserveB,\n currentReserveA,\n currentReserveB,\n inputAAmount\n ).toNumber()\n );\n const outputBAmount = approximationResult === null ? calculationResult : Math.max(approximationResult, calculationResult);\n validate(\n outputBAmount <= impliedOutAmount,\n \"final result for swap out amount should not be larger than the implied out amount\"\n );\n if (inputAAmount.isEqualTo(0)) {\n return { outAmount: new BigNumber4(outputBAmount), priceImpact: new BigNumber4(0) };\n }\n let impliedPrice = marketPrice.multipliedBy(currentReserveB).multipliedBy(targetReserveA).dividedBy(currentReserveA).dividedBy(targetReserveB);\n let actualPrice = new BigNumber4(outputBAmount).dividedBy(inputAAmount);\n let priceImpact = actualPrice.isEqualTo(Infinity) ? new BigNumber4(Infinity) : impliedPrice.minus(actualPrice).dividedBy(actualPrice).abs();\n return { outAmount: new BigNumber4(outputBAmount), priceImpact };\n}\nfunction calculateBalancedReservesStableSwap(stablePrice, currentReserveA, currentResreveB, slope) {\n let coefA = new BigNumber4(2).minus(slope).multipliedBy(stablePrice);\n let coefBNeg = new BigNumber4(1).minus(slope).multipliedBy(currentReserveA.multipliedBy(stablePrice).plus(currentResreveB));\n let coefCNeg = slope.multipliedBy(currentReserveA).multipliedBy(currentResreveB);\n let core = BigNumberWithConfig(\n coefBNeg.multipliedBy(coefBNeg).plus(coefA.multipliedBy(coefCNeg).multipliedBy(new BigNumber4(4))),\n {\n ROUNDING_MODE: BigNumber4.ROUND_CEIL\n }\n ).squareRoot();\n let balancedReserveA = BigNumberWithConfig(coefBNeg.plus(core), {\n ROUNDING_MODE: BigNumber4.ROUND_CEIL\n }).dividedBy(coefA).dividedBy(new BigNumber4(2));\n let balancedReserveB = balancedReserveA.multipliedBy(stablePrice);\n return { balancedReserveA, balancedReserveB };\n}\nfunction calculateOutAmountStableSwapInternal(balancedReserveA, balancedReserveB, currentReserveA, currentResreveB, inputAAmount, slope) {\n let multiplicand = BigNumberWithConfig(\n balancedReserveB.multipliedBy(new BigNumber4(1).minus(slope)),\n {\n ROUNDING_MODE: BigNumber4.ROUND_FLOOR\n }\n ).dividedBy(slope).plus(currentResreveB);\n let coreNumerator = new BigNumber4(1).minus(slope).multipliedBy(balancedReserveA).plus(slope.multipliedBy(currentReserveA));\n let coreDenumerator = new BigNumber4(1).minus(slope).multipliedBy(balancedReserveA).plus(slope.multipliedBy(currentReserveA.plus(inputAAmount)));\n if (coreDenumerator.isLessThanOrEqualTo(0)) {\n return new BigNumber4(-Infinity);\n }\n let multiplier = new BigNumber4(1).minus(\n BigNumberWithConfig(coreNumerator, {\n ROUNDING_MODE: BigNumber4.ROUND_FLOOR\n }).dividedBy(coreDenumerator)\n );\n return multiplicand.multipliedBy(multiplier);\n}\nfunction calculateOutAmountStableSwap(stablePrice, currentReserveA, currentReserveB, inputAAmount, slope) {\n let { balancedReserveA, balancedReserveB } = calculateBalancedReservesStableSwap(\n stablePrice,\n currentReserveA,\n currentReserveB,\n slope\n );\n let outputBAmount = calculateOutAmountStableSwapInternal(\n balancedReserveA,\n balancedReserveB,\n currentReserveA,\n currentReserveB,\n inputAAmount,\n slope\n );\n let impliedPrice = currentReserveB.plus(balancedReserveB.multipliedBy(new BigNumber4(1).minus(slope)).dividedBy(slope)).dividedBy(\n currentReserveA.plus(\n balancedReserveA.multipliedBy(new BigNumber4(1).minus(slope).dividedBy(slope))\n )\n );\n let actualPrice = outputBAmount.dividedBy(inputAAmount);\n let priceImpact = impliedPrice.minus(actualPrice).dividedBy(actualPrice).abs();\n return {\n outAmount: new BigNumber4(outputBAmount.toFixed(0)),\n priceImpact\n };\n}\n\n// src/anchor/pyth_utils.ts\nimport BigNumber5 from \"bignumber.js\";\nimport { PublicKey as PublicKey3 } from \"@solana/web3.js\";\nimport { parsePriceData } from \"@pythnetwork/client\";\n\n// src/calculations/swapOutAmount.ts\nfunction getSwappedAmountsAndPriceImpactFromRawValue(swapInfo, swapDirection, rawAmountIn, marketPrice, marketPriceSellBase, marketPriceSellQuote) {\n if (!(marketPriceSellBase && marketPriceSellQuote) || swapInfo.swapConfig.enableConfidenceInterval === false) {\n marketPriceSellBase = marketPrice;\n marketPriceSellQuote = marketPrice;\n }\n if (swapDirection.sellBase) {\n const normalizedMaketPrice = normalizeMarketPriceWithDecimals(\n marketPriceSellBase,\n swapInfo.mintBaseDecimals,\n swapInfo.mintQuoteDecimals\n );\n const { outAmount: rawAmountOut, priceImpact } = getSwapOutAmountSellBase(\n swapInfo,\n rawAmountIn,\n normalizedMaketPrice\n );\n return {\n amountIn: rawAmountIn,\n amountOut: rawAmountOut,\n priceImpact\n };\n } else if (swapDirection.sellQuote) {\n const normalizedMaketPrice = normalizeMarketPriceWithDecimals(\n marketPriceSellQuote,\n swapInfo.mintBaseDecimals,\n swapInfo.mintQuoteDecimals\n );\n const { outAmount: rawAmountOut, priceImpact } = getSwapOutAmountSellQuote(\n swapInfo,\n rawAmountIn,\n normalizedMaketPrice\n );\n return {\n amountIn: rawAmountIn,\n amountOut: rawAmountOut,\n priceImpact\n };\n }\n throw Error(\"Invalid swap direction: \" + swapDirection);\n}\nfunction getSwapOutAmountSellBase(pool, amountIn, marketPrice) {\n const { virtualBaseReserve, virtualQuoteReserve } = getVirtualReserves(pool, marketPrice);\n if (pool.swapType.normalSwap) {\n return calculateOutAmountNormalSwap(\n marketPrice,\n new BigNumber6(pool.poolState.targetBaseReserve.toString()),\n new BigNumber6(pool.poolState.targetQuoteReserve.toString()),\n new BigNumber6(pool.poolState.baseReserve.toString()).plus(virtualBaseReserve),\n new BigNumber6(pool.poolState.quoteReserve.toString()).plus(virtualQuoteReserve),\n amountIn\n );\n } else if (pool.swapType.stableSwap) {\n return calculateOutAmountStableSwap(\n getStableMarketPrice(pool),\n new BigNumber6(pool.poolState.baseReserve.toString()),\n new BigNumber6(pool.poolState.quoteReserve.toString()),\n amountIn,\n new BigNumber6(pool.swapConfig.slope.toString()).dividedBy(WAD)\n );\n } else {\n throw Error(\"Wrong swaptype: \" + pool.swapType);\n }\n}\nfunction getSwapOutAmountSellQuote(pool, amountIn, marketPrice) {\n const { virtualBaseReserve, virtualQuoteReserve } = getVirtualReserves(pool, marketPrice);\n if (pool.swapType.normalSwap) {\n return calculateOutAmountNormalSwap(\n new BigNumber6(1).dividedBy(marketPrice),\n new BigNumber6(pool.poolState.targetQuoteReserve.toString()),\n new BigNumber6(pool.poolState.targetBaseReserve.toString()),\n new BigNumber6(pool.poolState.quoteReserve.toString()).plus(virtualQuoteReserve),\n new BigNumber6(pool.poolState.baseReserve.toString()).plus(virtualBaseReserve),\n amountIn\n );\n } else if (pool.swapType.stableSwap) {\n return calculateOutAmountStableSwap(\n new BigNumber6(1).dividedBy(getStableMarketPrice(pool)),\n new BigNumber6(pool.poolState.quoteReserve.toString()),\n new BigNumber6(pool.poolState.baseReserve.toString()),\n amountIn,\n new BigNumber6(pool.swapConfig.slope.toString()).dividedBy(WAD)\n );\n } else {\n throw Error(\"Wrong swaptype: \" + pool.swapType);\n }\n}\nfunction normalizeMarketPriceWithDecimals(marketPrice, mintBaseDecimals, mintQuoteDecimals) {\n if (mintBaseDecimals > mintQuoteDecimals) {\n return exponentiatedBy(marketPrice, mintBaseDecimals - mintQuoteDecimals);\n } else if (mintBaseDecimals < mintQuoteDecimals) {\n return exponentiate(marketPrice, mintQuoteDecimals - mintBaseDecimals);\n } else {\n return marketPrice;\n }\n}\nfunction getNormalizedReserves(baseReserve, quoteReserve, targetBaseReserve, targetQuoteReserve, marketPrice) {\n const coefNumberator = baseReserve.multipliedBy(marketPrice).plus(quoteReserve);\n const coefDenumerator = targetBaseReserve.multipliedBy(marketPrice).plus(targetQuoteReserve);\n const coef = coefNumberator.dividedBy(coefDenumerator);\n return {\n normalizedBaseReserve: coef.multipliedBy(targetBaseReserve),\n normalizedQuoteReserve: coef.multipliedBy(targetQuoteReserve)\n };\n}\nfunction getVirtualReserves(swapInfo, marketPrice) {\n const { normalizedBaseReserve, normalizedQuoteReserve } = getNormalizedReserves(\n new BigNumber6(swapInfo.poolState.baseReserve.toString()),\n new BigNumber6(swapInfo.poolState.quoteReserve.toString()),\n new BigNumber6(swapInfo.poolState.targetBaseReserve.toString()),\n new BigNumber6(swapInfo.poolState.targetQuoteReserve.toString()),\n marketPrice\n );\n const virtualReserveRatio = new BigNumber6(swapInfo.swapConfig.virtualReservePercentage).dividedBy(\n 100\n );\n return {\n virtualBaseReserve: normalizedBaseReserve.multipliedBy(virtualReserveRatio),\n virtualQuoteReserve: normalizedQuoteReserve.multipliedBy(virtualReserveRatio)\n };\n}\nfunction checkIfReserveIsSufficient(baseReserve, quoteReserve, normalizedBaseReserve, normalizedQuoteReserve, swapConfig) {\n return baseReserve.gt(\n normalizedBaseReserve.multipliedBy(swapConfig.minReserveLimitPercentage).dividedBy(100)\n ) && quoteReserve.gt(\n normalizedQuoteReserve.multipliedBy(swapConfig.minReserveLimitPercentage).dividedBy(100)\n );\n}\nfunction getStableMarketPrice(swapInfo) {\n return new BigNumber6(10).pow(swapInfo.mintQuoteDecimals - swapInfo.mintBaseDecimals);\n}\nexport {\n checkIfReserveIsSufficient,\n getDeltafiDexV2,\n getSwappedAmountsAndPriceImpactFromRawValue\n};\n","export const encodeDecode = (layout) => {\n const decode = layout.decode.bind(layout);\n const encode = layout.encode.bind(layout);\n return { decode, encode };\n};\n//# sourceMappingURL=base.js.map","import { blob } from '@solana/buffer-layout';\nimport { toBigIntBE, toBigIntLE, toBufferBE, toBufferLE } from 'bigint-buffer';\nimport { encodeDecode } from './base.mjs';\nexport const bigInt = (length) => (property) => {\n const layout = blob(length, property);\n const { encode, decode } = encodeDecode(layout);\n const bigIntLayout = layout;\n bigIntLayout.decode = (buffer, offset) => {\n const src = decode(buffer, offset);\n return toBigIntLE(Buffer.from(src));\n };\n bigIntLayout.encode = (bigInt, buffer, offset) => {\n const src = toBufferLE(bigInt, length);\n return encode(src, buffer, offset);\n };\n return bigIntLayout;\n};\nexport const bigIntBE = (length) => (property) => {\n const layout = blob(length, property);\n const { encode, decode } = encodeDecode(layout);\n const bigIntLayout = layout;\n bigIntLayout.decode = (buffer, offset) => {\n const src = decode(buffer, offset);\n return toBigIntBE(Buffer.from(src));\n };\n bigIntLayout.encode = (bigInt, buffer, offset) => {\n const src = toBufferBE(bigInt, length);\n return encode(src, buffer, offset);\n };\n return bigIntLayout;\n};\nexport const u64 = bigInt(8);\nexport const u64be = bigIntBE(8);\nexport const u128 = bigInt(16);\nexport const u128be = bigIntBE(16);\nexport const u192 = bigInt(24);\nexport const u192be = bigIntBE(24);\nexport const u256 = bigInt(32);\nexport const u256be = bigIntBE(32);\n//# sourceMappingURL=bigint.js.map","import { u8 } from '@solana/buffer-layout';\nimport { encodeDecode } from './base.mjs';\nexport const bool = (property) => {\n const layout = u8(property);\n const { encode, decode } = encodeDecode(layout);\n const boolLayout = layout;\n boolLayout.decode = (buffer, offset) => {\n const src = decode(buffer, offset);\n return !!src;\n };\n boolLayout.encode = (bool, buffer, offset) => {\n const src = Number(bool);\n return encode(src, buffer, offset);\n };\n return boolLayout;\n};\n//# sourceMappingURL=native.js.map","import BigNumber from 'bignumber.js';\nimport { encodeDecode } from './base.mjs';\nimport { u128 } from './bigint.mjs';\nexport const WAD = new BigNumber('1e+18');\nexport const decimal = (property) => {\n const layout = u128(property);\n const { encode, decode } = encodeDecode(layout);\n const decimalLayout = layout;\n decimalLayout.decode = (buffer, offset) => {\n const src = decode(buffer, offset).toString();\n return new BigNumber(src).div(WAD);\n };\n decimalLayout.encode = (decimal, buffer, offset) => {\n const src = BigInt(decimal.times(WAD).integerValue().toString());\n return encode(src, buffer, offset);\n };\n return decimalLayout;\n};\n//# sourceMappingURL=decimal.js.map","import { blob } from '@solana/buffer-layout';\nimport { PublicKey } from '@solana/web3.js';\nimport { encodeDecode } from './base.mjs';\nexport const publicKey = (property) => {\n const layout = blob(32, property);\n const { encode, decode } = encodeDecode(layout);\n const publicKeyLayout = layout;\n publicKeyLayout.decode = (buffer, offset) => {\n const src = decode(buffer, offset);\n return new PublicKey(src);\n };\n publicKeyLayout.encode = (publicKey, buffer, offset) => {\n const src = publicKey.toBuffer();\n return encode(src, buffer, offset);\n };\n return publicKeyLayout;\n};\n//# sourceMappingURL=web3.js.map","var _a;\n/**\n * Returns true if being run inside a web browser,\n * false if in a Node process or electron app.\n */\nexport const isBrowser = typeof window !== \"undefined\" && !((_a = window.process) === null || _a === void 0 ? void 0 : _a.hasOwnProperty(\"type\"));\n/**\n * Splits an array into chunks\n *\n * @param array Array of objects to chunk.\n * @param size The max size of a chunk.\n * @returns A two dimensional array where each T[] length is < the provided size.\n */\nexport function chunks(array, size) {\n return Array.apply(0, new Array(Math.ceil(array.length / size))).map((_, index) => array.slice(index * size, (index + 1) * size));\n}\n//# sourceMappingURL=common.js.map","import { Connection, Keypair, sendAndConfirmRawTransaction, } from \"@solana/web3.js\";\nimport { isBrowser } from \"./utils/common\";\n/**\n * The network and wallet context used to send transactions paid for and signed\n * by the provider.\n */\nexport default class Provider {\n /**\n * @param connection The cluster connection where the program is deployed.\n * @param wallet The wallet used to pay for and sign all transactions.\n * @param opts Transaction confirmation options to use by default.\n */\n constructor(connection, wallet, opts) {\n this.connection = connection;\n this.wallet = wallet;\n this.opts = opts;\n }\n static defaultOptions() {\n return {\n preflightCommitment: \"recent\",\n commitment: \"recent\",\n };\n }\n /**\n * Returns a `Provider` with a wallet read from the local filesystem.\n *\n * @param url The network cluster url.\n * @param opts The default transaction confirmation options.\n *\n * (This api is for Node only.)\n */\n static local(url, opts) {\n opts = opts !== null && opts !== void 0 ? opts : Provider.defaultOptions();\n const connection = new Connection(url !== null && url !== void 0 ? url : \"http://localhost:8899\", opts.preflightCommitment);\n const wallet = NodeWallet.local();\n return new Provider(connection, wallet, opts);\n }\n /**\n * Returns a `Provider` read from the `ANCHOR_PROVIDER_URL` environment\n * variable\n *\n * (This api is for Node only.)\n */\n static env() {\n if (isBrowser) {\n throw new Error(`Provider env is not available on browser.`);\n }\n const process = require(\"process\");\n const url = process.env.ANCHOR_PROVIDER_URL;\n if (url === undefined) {\n throw new Error(\"ANCHOR_PROVIDER_URL is not defined\");\n }\n const options = Provider.defaultOptions();\n const connection = new Connection(url, options.commitment);\n const wallet = NodeWallet.local();\n return new Provider(connection, wallet, options);\n }\n /**\n * Sends the given transaction, paid for and signed by the provider's wallet.\n *\n * @param tx The transaction to send.\n * @param signers The set of signers in addition to the provider wallet that\n * will sign the transaction.\n * @param opts Transaction confirmation options.\n */\n async send(tx, signers, opts) {\n if (signers === undefined) {\n signers = [];\n }\n if (opts === undefined) {\n opts = this.opts;\n }\n tx.feePayer = this.wallet.publicKey;\n tx.recentBlockhash = (await this.connection.getRecentBlockhash(opts.preflightCommitment)).blockhash;\n await this.wallet.signTransaction(tx);\n signers\n .filter((s) => s !== undefined)\n .forEach((kp) => {\n tx.partialSign(kp);\n });\n const rawTx = tx.serialize();\n const txId = await sendAndConfirmRawTransaction(this.connection, rawTx, opts);\n return txId;\n }\n /**\n * Similar to `send`, but for an array of transactions and signers.\n */\n async sendAll(reqs, opts) {\n if (opts === undefined) {\n opts = this.opts;\n }\n const blockhash = await this.connection.getRecentBlockhash(opts.preflightCommitment);\n let txs = reqs.map((r) => {\n let tx = r.tx;\n let signers = r.signers;\n if (signers === undefined) {\n signers = [];\n }\n tx.feePayer = this.wallet.publicKey;\n tx.recentBlockhash = blockhash.blockhash;\n signers\n .filter((s) => s !== undefined)\n .forEach((kp) => {\n tx.partialSign(kp);\n });\n return tx;\n });\n const signedTxs = await this.wallet.signAllTransactions(txs);\n const sigs = [];\n for (let k = 0; k < txs.length; k += 1) {\n const tx = signedTxs[k];\n const rawTx = tx.serialize();\n sigs.push(await sendAndConfirmRawTransaction(this.connection, rawTx, opts));\n }\n return sigs;\n }\n /**\n * Simulates the given transaction, returning emitted logs from execution.\n *\n * @param tx The transaction to send.\n * @param signers The set of signers in addition to the provdier wallet that\n * will sign the transaction.\n * @param opts Transaction confirmation options.\n */\n async simulate(tx, signers, opts = this.opts) {\n var _a, _b, _c;\n if (signers === undefined) {\n signers = [];\n }\n tx.feePayer = this.wallet.publicKey;\n tx.recentBlockhash = (await this.connection.getRecentBlockhash((_a = opts.preflightCommitment) !== null && _a !== void 0 ? _a : this.opts.preflightCommitment)).blockhash;\n await this.wallet.signTransaction(tx);\n signers\n .filter((s) => s !== undefined)\n .forEach((kp) => {\n tx.partialSign(kp);\n });\n return await simulateTransaction(this.connection, tx, (_c = (_b = opts.commitment) !== null && _b !== void 0 ? _b : this.opts.commitment) !== null && _c !== void 0 ? _c : \"recent\");\n }\n}\n/**\n * Node only wallet.\n */\nexport class NodeWallet {\n constructor(payer) {\n this.payer = payer;\n }\n static local() {\n const process = require(\"process\");\n const payer = Keypair.fromSecretKey(Buffer.from(JSON.parse(require(\"fs\").readFileSync(process.env.ANCHOR_WALLET, {\n encoding: \"utf-8\",\n }))));\n return new NodeWallet(payer);\n }\n async signTransaction(tx) {\n tx.partialSign(this.payer);\n return tx;\n }\n async signAllTransactions(txs) {\n return txs.map((t) => {\n t.partialSign(this.payer);\n return t;\n });\n }\n get publicKey() {\n return this.payer.publicKey;\n }\n}\n// Copy of Connection.simulateTransaction that takes a commitment parameter.\nasync function simulateTransaction(connection, transaction, commitment) {\n // @ts-ignore\n transaction.recentBlockhash = await connection._recentBlockhash(\n // @ts-ignore\n connection._disableBlockhashCaching);\n const signData = transaction.serializeMessage();\n // @ts-ignore\n const wireTransaction = transaction._serialize(signData);\n const encodedTransaction = wireTransaction.toString(\"base64\");\n const config = { encoding: \"base64\", commitment };\n const args = [encodedTransaction, config];\n // @ts-ignore\n const res = await connection._rpcRequest(\"simulateTransaction\", args);\n if (res.error) {\n throw new Error(\"failed to simulate transaction: \" + res.error.message);\n }\n return res.result;\n}\n/**\n * Sets the default provider on the client.\n */\nexport function setProvider(provider) {\n _provider = provider;\n}\n/**\n * Returns the default provider being used by the client.\n */\nexport function getProvider() {\n if (_provider === null) {\n return Provider.local();\n }\n return _provider;\n}\n// Global provider used as the default when a provider is not given.\nlet _provider = null;\n//# sourceMappingURL=provider.js.map","export class IdlError extends Error {\n constructor(message) {\n super(message);\n this.name = \"IdlError\";\n }\n}\n// An error from a user defined program.\nexport class ProgramError extends Error {\n constructor(code, msg, ...params) {\n super(...params);\n this.code = code;\n this.msg = msg;\n }\n static parse(err, idlErrors) {\n // TODO: don't rely on the error string. web3.js should preserve the error\n // code information instead of giving us an untyped string.\n let components = err.toString().split(\"custom program error: \");\n if (components.length !== 2) {\n return null;\n }\n let errorCode;\n try {\n errorCode = parseInt(components[1]);\n }\n catch (parseErr) {\n return null;\n }\n // Parse user error.\n let errorMsg = idlErrors.get(errorCode);\n if (errorMsg !== undefined) {\n return new ProgramError(errorCode, errorMsg, errorCode + \": \" + errorMsg);\n }\n // Parse framework internal error.\n errorMsg = LangErrorMessage.get(errorCode);\n if (errorMsg !== undefined) {\n return new ProgramError(errorCode, errorMsg, errorCode + \": \" + errorMsg);\n }\n // Unable to parse the error. Just return the untranslated error.\n return null;\n }\n toString() {\n return this.msg;\n }\n}\nconst LangErrorCode = {\n // Instructions.\n InstructionMissing: 100,\n InstructionFallbackNotFound: 101,\n InstructionDidNotDeserialize: 102,\n InstructionDidNotSerialize: 103,\n // IDL instructions.\n IdlInstructionStub: 120,\n IdlInstructionInvalidProgram: 121,\n // Constraints.\n ConstraintMut: 140,\n ConstraintHasOne: 141,\n ConstraintSigner: 142,\n ConstraintRaw: 143,\n ConstraintOwner: 144,\n ConstraintRentExempt: 145,\n ConstraintSeeds: 146,\n ConstraintExecutable: 147,\n ConstraintState: 148,\n ConstraintAssociated: 149,\n ConstraintAssociatedInit: 150,\n ConstraintClose: 151,\n ConstraintAddress: 152,\n // Accounts.\n AccountDiscriminatorAlreadySet: 160,\n AccountDiscriminatorNotFound: 161,\n AccountDiscriminatorMismatch: 162,\n AccountDidNotDeserialize: 163,\n AccountDidNotSerialize: 164,\n AccountNotEnoughKeys: 165,\n AccountNotMutable: 166,\n AccountNotProgramOwned: 167,\n InvalidProgramId: 168,\n InvalidProgramIdExecutable: 169,\n // State.\n StateInvalidAddress: 180,\n // Used for APIs that shouldn't be used anymore.\n Deprecated: 299,\n};\nconst LangErrorMessage = new Map([\n // Instructions.\n [\n LangErrorCode.InstructionMissing,\n \"8 byte instruction identifier not provided\",\n ],\n [\n LangErrorCode.InstructionFallbackNotFound,\n \"Fallback functions are not supported\",\n ],\n [\n LangErrorCode.InstructionDidNotDeserialize,\n \"The program could not deserialize the given instruction\",\n ],\n [\n LangErrorCode.InstructionDidNotSerialize,\n \"The program could not serialize the given instruction\",\n ],\n // Idl instructions.\n [\n LangErrorCode.IdlInstructionStub,\n \"The program was compiled without idl instructions\",\n ],\n [\n LangErrorCode.IdlInstructionInvalidProgram,\n \"The transaction was given an invalid program for the IDL instruction\",\n ],\n // Constraints.\n [LangErrorCode.ConstraintMut, \"A mut constraint was violated\"],\n [LangErrorCode.ConstraintHasOne, \"A has_one constraint was violated\"],\n [LangErrorCode.ConstraintSigner, \"A signer constraint was violated\"],\n [LangErrorCode.ConstraintRaw, \"A raw constraint was violated\"],\n [LangErrorCode.ConstraintOwner, \"An owner constraint was violated\"],\n [LangErrorCode.ConstraintRentExempt, \"A rent exempt constraint was violated\"],\n [LangErrorCode.ConstraintSeeds, \"A seeds constraint was violated\"],\n [LangErrorCode.ConstraintExecutable, \"An executable constraint was violated\"],\n [LangErrorCode.ConstraintState, \"A state constraint was violated\"],\n [LangErrorCode.ConstraintAssociated, \"An associated constraint was violated\"],\n [\n LangErrorCode.ConstraintAssociatedInit,\n \"An associated init constraint was violated\",\n ],\n [LangErrorCode.ConstraintClose, \"A close constraint was violated\"],\n [LangErrorCode.ConstraintAddress, \"An address constraint was violated\"],\n // Accounts.\n [\n LangErrorCode.AccountDiscriminatorAlreadySet,\n \"The account discriminator was already set on this account\",\n ],\n [\n LangErrorCode.AccountDiscriminatorNotFound,\n \"No 8 byte discriminator was found on the account\",\n ],\n [\n LangErrorCode.AccountDiscriminatorMismatch,\n \"8 byte discriminator did not match what was expected\",\n ],\n [LangErrorCode.AccountDidNotDeserialize, \"Failed to deserialize the account\"],\n [LangErrorCode.AccountDidNotSerialize, \"Failed to serialize the account\"],\n [\n LangErrorCode.AccountNotEnoughKeys,\n \"Not enough account keys given to the instruction\",\n ],\n [LangErrorCode.AccountNotMutable, \"The given account is not mutable\"],\n [\n LangErrorCode.AccountNotProgramOwned,\n \"The given account is not owned by the executing program\",\n ],\n [LangErrorCode.InvalidProgramId, \"Program ID was not as expected\"],\n [\n LangErrorCode.InvalidProgramIdExecutable,\n \"Program account is not executable\",\n ],\n // State.\n [\n LangErrorCode.StateInvalidAddress,\n \"The given state account does not have the correct address\",\n ],\n // Misc.\n [\n LangErrorCode.Deprecated,\n \"The API being used is deprecated and should no longer be used\",\n ],\n]);\n//# sourceMappingURL=error.js.map","import camelCase from \"camelcase\";\nimport * as borsh from \"@project-serum/borsh\";\nimport { IdlError } from \"../error\";\nexport class IdlCoder {\n static fieldLayout(field, types) {\n const fieldName = field.name !== undefined ? camelCase(field.name) : undefined;\n switch (field.type) {\n case \"bool\": {\n return borsh.bool(fieldName);\n }\n case \"u8\": {\n return borsh.u8(fieldName);\n }\n case \"i8\": {\n return borsh.i8(fieldName);\n }\n case \"u16\": {\n return borsh.u16(fieldName);\n }\n case \"i16\": {\n return borsh.i16(fieldName);\n }\n case \"u32\": {\n return borsh.u32(fieldName);\n }\n case \"i32\": {\n return borsh.i32(fieldName);\n }\n case \"u64\": {\n return borsh.u64(fieldName);\n }\n case \"i64\": {\n return borsh.i64(fieldName);\n }\n case \"u128\": {\n return borsh.u128(fieldName);\n }\n case \"i128\": {\n return borsh.i128(fieldName);\n }\n case \"bytes\": {\n return borsh.vecU8(fieldName);\n }\n case \"string\": {\n return borsh.str(fieldName);\n }\n case \"publicKey\": {\n return borsh.publicKey(fieldName);\n }\n default: {\n if (\"vec\" in field.type) {\n return borsh.vec(IdlCoder.fieldLayout({\n name: undefined,\n // @ts-ignore\n type: field.type.vec,\n }, types), fieldName);\n }\n else if (\"option\" in field.type) {\n return borsh.option(IdlCoder.fieldLayout({\n name: undefined,\n type: field.type.option,\n }, types), fieldName);\n }\n else if (\"defined\" in field.type) {\n const defined = field.type.defined;\n // User defined type.\n if (types === undefined) {\n throw new IdlError(\"User defined types not provided\");\n }\n const filtered = types.filter((t) => t.name === defined);\n if (filtered.length !== 1) {\n throw new IdlError(`Type not found: ${JSON.stringify(field)}`);\n }\n return IdlCoder.typeDefLayout(filtered[0], types, fieldName);\n }\n else if (\"array\" in field.type) {\n let arrayTy = field.type.array[0];\n let arrayLen = field.type.array[1];\n let innerLayout = IdlCoder.fieldLayout({\n name: undefined,\n type: arrayTy,\n }, types);\n return borsh.array(innerLayout, arrayLen, fieldName);\n }\n else {\n throw new Error(`Not yet implemented: ${field}`);\n }\n }\n }\n }\n static typeDefLayout(typeDef, types = [], name) {\n if (typeDef.type.kind === \"struct\") {\n const fieldLayouts = typeDef.type.fields.map((field) => {\n const x = IdlCoder.fieldLayout(field, types);\n return x;\n });\n return borsh.struct(fieldLayouts, name);\n }\n else if (typeDef.type.kind === \"enum\") {\n let variants = typeDef.type.variants.map((variant) => {\n const name = camelCase(variant.name);\n if (variant.fields === undefined) {\n return borsh.struct([], name);\n }\n // @ts-ignore\n const fieldLayouts = variant.fields.map((f) => {\n // @ts-ignore\n if (f.name === undefined) {\n throw new Error(\"Tuple enum variants not yet implemented.\");\n }\n // @ts-ignore\n return IdlCoder.fieldLayout(f, types);\n });\n return borsh.struct(fieldLayouts, name);\n });\n if (name !== undefined) {\n // Buffer-layout lib requires the name to be null (on construction)\n // when used as a field.\n return borsh.rustEnum(variants).replicate(name);\n }\n return borsh.rustEnum(variants, name);\n }\n else {\n throw new Error(`Unknown type kint: ${typeDef}`);\n }\n }\n}\n//# sourceMappingURL=idl.js.map","import { snakeCase } from \"snake-case\";\nimport { sha256 } from \"js-sha256\";\nimport { IdlError } from \"../error\";\nexport function accountSize(idl, idlAccount) {\n if (idlAccount.type.kind === \"enum\") {\n let variantSizes = idlAccount.type.variants.map((variant) => {\n if (variant.fields === undefined) {\n return 0;\n }\n return variant.fields\n .map((f) => {\n if (!(typeof f === \"object\" && \"name\" in f)) {\n throw new Error(\"Tuple enum variants not yet implemented.\");\n }\n return typeSize(idl, f.type);\n })\n .reduce((a, b) => a + b);\n });\n return Math.max(...variantSizes) + 1;\n }\n if (idlAccount.type.fields === undefined) {\n return 0;\n }\n return idlAccount.type.fields\n .map((f) => typeSize(idl, f.type))\n .reduce((a, b) => a + b, 0);\n}\n// Returns the size of the type in bytes. For variable length types, just return\n// 1. Users should override this value in such cases.\nfunction typeSize(idl, ty) {\n var _a, _b;\n switch (ty) {\n case \"bool\":\n return 1;\n case \"u8\":\n return 1;\n case \"i8\":\n return 1;\n case \"i16\":\n return 2;\n case \"u16\":\n return 2;\n case \"u32\":\n return 4;\n case \"i32\":\n return 4;\n case \"u64\":\n return 8;\n case \"i64\":\n return 8;\n case \"u128\":\n return 16;\n case \"i128\":\n return 16;\n case \"bytes\":\n return 1;\n case \"string\":\n return 1;\n case \"publicKey\":\n return 32;\n default:\n if (\"vec\" in ty) {\n return 1;\n }\n if (\"option\" in ty) {\n return 1 + typeSize(idl, ty.option);\n }\n if (\"defined\" in ty) {\n const filtered = (_b = (_a = idl.types) === null || _a === void 0 ? void 0 : _a.filter((t) => t.name === ty.defined)) !== null && _b !== void 0 ? _b : [];\n if (filtered.length !== 1) {\n throw new IdlError(`Type not found: ${JSON.stringify(ty)}`);\n }\n let typeDef = filtered[0];\n return accountSize(idl, typeDef);\n }\n if (\"array\" in ty) {\n let arrayTy = ty.array[0];\n let arraySize = ty.array[1];\n return typeSize(idl, arrayTy) * arraySize;\n }\n throw new Error(`Invalid type ${JSON.stringify(ty)}`);\n }\n}\n// Not technically sighash, since we don't include the arguments, as Rust\n// doesn't allow function overloading.\nexport function sighash(nameSpace, ixName) {\n let name = snakeCase(ixName);\n let preimage = `${nameSpace}:${name}`;\n return Buffer.from(sha256.digest(preimage)).slice(0, 8);\n}\n//# sourceMappingURL=common.js.map","import camelCase from \"camelcase\";\nimport * as borsh from \"@project-serum/borsh\";\nimport * as bs58 from \"bs58\";\nimport { IdlCoder } from \"./idl\";\nimport { sighash } from \"./common\";\n/**\n * Namespace for state method function signatures.\n */\nexport const SIGHASH_STATE_NAMESPACE = \"state\";\n/**\n * Namespace for global instruction function signatures (i.e. functions\n * that aren't namespaced by the state or any of its trait implementations).\n */\nexport const SIGHASH_GLOBAL_NAMESPACE = \"global\";\n/**\n * Encodes and decodes program instructions.\n */\nexport class InstructionCoder {\n constructor(idl) {\n this.idl = idl;\n this.ixLayout = InstructionCoder.parseIxLayout(idl);\n const sighashLayouts = new Map();\n idl.instructions.forEach((ix) => {\n const sh = sighash(SIGHASH_GLOBAL_NAMESPACE, ix.name);\n sighashLayouts.set(bs58.encode(sh), {\n layout: this.ixLayout.get(ix.name),\n name: ix.name,\n });\n });\n if (idl.state) {\n idl.state.methods.map((ix) => {\n const sh = sighash(SIGHASH_STATE_NAMESPACE, ix.name);\n sighashLayouts.set(bs58.encode(sh), {\n layout: this.ixLayout.get(ix.name),\n name: ix.name,\n });\n });\n }\n this.sighashLayouts = sighashLayouts;\n }\n /**\n * Encodes a program instruction.\n */\n encode(ixName, ix) {\n return this._encode(SIGHASH_GLOBAL_NAMESPACE, ixName, ix);\n }\n /**\n * Encodes a program state instruction.\n */\n encodeState(ixName, ix) {\n return this._encode(SIGHASH_STATE_NAMESPACE, ixName, ix);\n }\n _encode(nameSpace, ixName, ix) {\n const buffer = Buffer.alloc(1000); // TODO: use a tighter buffer.\n const methodName = camelCase(ixName);\n const layout = this.ixLayout.get(methodName);\n if (!layout) {\n throw new Error(`Unknown method: ${methodName}`);\n }\n const len = layout.encode(ix, buffer);\n const data = buffer.slice(0, len);\n return Buffer.concat([sighash(nameSpace, ixName), data]);\n }\n static parseIxLayout(idl) {\n const stateMethods = idl.state ? idl.state.methods : [];\n const ixLayouts = stateMethods\n .map((m) => {\n let fieldLayouts = m.args.map((arg) => {\n var _a, _b;\n return IdlCoder.fieldLayout(arg, Array.from([...((_a = idl.accounts) !== null && _a !== void 0 ? _a : []), ...((_b = idl.types) !== null && _b !== void 0 ? _b : [])]));\n });\n const name = camelCase(m.name);\n return [name, borsh.struct(fieldLayouts, name)];\n })\n .concat(idl.instructions.map((ix) => {\n let fieldLayouts = ix.args.map((arg) => {\n var _a, _b;\n return IdlCoder.fieldLayout(arg, Array.from([...((_a = idl.accounts) !== null && _a !== void 0 ? _a : []), ...((_b = idl.types) !== null && _b !== void 0 ? _b : [])]));\n });\n const name = camelCase(ix.name);\n return [name, borsh.struct(fieldLayouts, name)];\n }));\n // @ts-ignore\n return new Map(ixLayouts);\n }\n /**\n * Dewcodes a program instruction.\n */\n decode(ix, encoding = \"hex\") {\n if (typeof ix === \"string\") {\n ix = encoding === \"hex\" ? Buffer.from(ix, \"hex\") : bs58.decode(ix);\n }\n let sighash = bs58.encode(ix.slice(0, 8));\n let data = ix.slice(8);\n const decoder = this.sighashLayouts.get(sighash);\n if (!decoder) {\n return null;\n }\n return {\n data: decoder.layout.decode(data),\n name: decoder.name,\n };\n }\n /**\n * Returns a formatted table of all the fields in the given instruction data.\n */\n format(ix, accountMetas) {\n return InstructionFormatter.format(ix, accountMetas, this.idl);\n }\n}\nclass InstructionFormatter {\n static format(ix, accountMetas, idl) {\n const idlIx = idl.instructions.filter((i) => ix.name === i.name)[0];\n if (idlIx === undefined) {\n console.error(\"Invalid instruction given\");\n return null;\n }\n const args = idlIx.args.map((idlField) => {\n return {\n name: idlField.name,\n type: InstructionFormatter.formatIdlType(idlField.type),\n data: InstructionFormatter.formatIdlData(idlField, ix.data[idlField.name], idl.types),\n };\n });\n const flatIdlAccounts = InstructionFormatter.flattenIdlAccounts(idlIx.accounts);\n const accounts = accountMetas.map((meta, idx) => {\n if (idx < flatIdlAccounts.length) {\n return {\n name: flatIdlAccounts[idx].name,\n ...meta,\n };\n }\n // \"Remaining accounts\" are unnamed in Anchor.\n else {\n return {\n name: undefined,\n ...meta,\n };\n }\n });\n return {\n args,\n accounts,\n };\n }\n static formatIdlType(idlType) {\n if (typeof idlType === \"string\") {\n return idlType;\n }\n if (\"vec\" in idlType) {\n return `Vec<${this.formatIdlType(idlType.vec)}>`;\n }\n if (\"option\" in idlType) {\n return `Option<${this.formatIdlType(idlType.option)}>`;\n }\n if (\"defined\" in idlType) {\n return idlType.defined;\n }\n if (\"array\" in idlType) {\n return `Array<${idlType.array[0]}; ${idlType.array[1]}>`;\n }\n throw new Error(`Unknown IDL type: ${idlType}`);\n }\n static formatIdlData(idlField, data, types) {\n if (typeof idlField.type === \"string\") {\n return data.toString();\n }\n // @ts-ignore\n if (idlField.type.vec) {\n // @ts-ignore\n return (\"[\" +\n data\n // @ts-ignore\n .map((d) => this.formatIdlData(\n // @ts-ignore\n { name: \"\", type: idlField.type.vec }, d))\n .join(\", \") +\n \"]\");\n }\n // @ts-ignore\n if (idlField.type.option) {\n // @ts-ignore\n return data === null\n ? \"null\"\n : this.formatIdlData(\n // @ts-ignore\n { name: \"\", type: idlField.type.option }, data);\n }\n // @ts-ignore\n if (idlField.type.defined) {\n if (types === undefined) {\n throw new Error(\"User defined types not provided\");\n }\n // @ts-ignore\n const filtered = types.filter((t) => t.name === idlField.type.defined);\n if (filtered.length !== 1) {\n // @ts-ignore\n throw new Error(`Type not found: ${idlField.type.defined}`);\n }\n return InstructionFormatter.formatIdlDataDefined(filtered[0], data, types);\n }\n return \"unknown\";\n }\n static formatIdlDataDefined(typeDef, data, types) {\n if (typeDef.type.kind === \"struct\") {\n const struct = typeDef.type;\n const fields = Object.keys(data)\n .map((k) => {\n const f = struct.fields.filter((f) => f.name === k)[0];\n if (f === undefined) {\n throw new Error(\"Unable to find type\");\n }\n return (k + \": \" + InstructionFormatter.formatIdlData(f, data[k], types));\n })\n .join(\", \");\n return \"{ \" + fields + \" }\";\n }\n else {\n if (typeDef.type.variants.length === 0) {\n return \"{}\";\n }\n // Struct enum.\n if (typeDef.type.variants[0].name) {\n const variants = typeDef.type.variants;\n const variant = Object.keys(data)[0];\n const enumType = data[variant];\n const namedFields = Object.keys(enumType)\n .map((f) => {\n var _a;\n const fieldData = enumType[f];\n const idlField = (_a = variants[variant]) === null || _a === void 0 ? void 0 : _a.filter((v) => v.name === f)[0];\n if (idlField === undefined) {\n throw new Error(\"Unable to find variant\");\n }\n return (f +\n \": \" +\n InstructionFormatter.formatIdlData(idlField, fieldData, types));\n })\n .join(\", \");\n const variantName = camelCase(variant, { pascalCase: true });\n if (namedFields.length === 0) {\n return variantName;\n }\n return `${variantName} { ${namedFields} }`;\n }\n // Tuple enum.\n else {\n // TODO.\n return \"Tuple formatting not yet implemented\";\n }\n }\n }\n static flattenIdlAccounts(accounts, prefix) {\n // @ts-ignore\n return accounts\n .map((account) => {\n const accName = sentenceCase(account.name);\n // @ts-ignore\n if (account.accounts) {\n const newPrefix = prefix ? `${prefix} > ${accName}` : accName;\n // @ts-ignore\n return InstructionFormatter.flattenIdlAccounts(\n // @ts-ignore\n account.accounts, newPrefix);\n }\n else {\n return {\n ...account,\n name: prefix ? `${prefix} > ${accName}` : accName,\n };\n }\n })\n .flat();\n }\n}\nfunction sentenceCase(field) {\n const result = field.replace(/([A-Z])/g, \" $1\");\n return result.charAt(0).toUpperCase() + result.slice(1);\n}\n//# sourceMappingURL=instruction.js.map","import { IdlCoder } from \"./idl\";\nimport { sha256 } from \"js-sha256\";\n/**\n * Number of bytes of the account discriminator.\n */\nexport const ACCOUNT_DISCRIMINATOR_SIZE = 8;\n/**\n * Encodes and decodes account objects.\n */\nexport class AccountsCoder {\n constructor(idl) {\n if (idl.accounts === undefined) {\n this.accountLayouts = new Map();\n return;\n }\n const layouts = idl.accounts.map((acc) => {\n return [acc.name, IdlCoder.typeDefLayout(acc, idl.types)];\n });\n this.accountLayouts = new Map(layouts);\n }\n async encode(accountName, account) {\n const buffer = Buffer.alloc(1000); // TODO: use a tighter buffer.\n const layout = this.accountLayouts.get(accountName);\n if (!layout) {\n throw new Error(`Unknown account: ${accountName}`);\n }\n const len = layout.encode(account, buffer);\n let accountData = buffer.slice(0, len);\n let discriminator = AccountsCoder.accountDiscriminator(accountName);\n return Buffer.concat([discriminator, accountData]);\n }\n decode(accountName, ix) {\n // Chop off the discriminator before decoding.\n const data = ix.slice(8);\n const layout = this.accountLayouts.get(accountName);\n if (!layout) {\n throw new Error(`Unknown account: ${accountName}`);\n }\n return layout.decode(data);\n }\n /**\n * Calculates and returns a unique 8 byte discriminator prepended to all anchor accounts.\n *\n * @param name The name of the account to calculate the discriminator.\n */\n static accountDiscriminator(name) {\n return Buffer.from(sha256.digest(`account:${name}`)).slice(0, 8);\n }\n}\n//# sourceMappingURL=accounts.js.map","import * as base64 from \"base64-js\";\nimport { sha256 } from \"js-sha256\";\nimport { IdlCoder } from \"./idl\";\nexport class EventCoder {\n constructor(idl) {\n if (idl.events === undefined) {\n this.layouts = new Map();\n return;\n }\n const layouts = idl.events.map((event) => {\n let eventTypeDef = {\n name: event.name,\n type: {\n kind: \"struct\",\n fields: event.fields.map((f) => {\n return { name: f.name, type: f.type };\n }),\n },\n };\n return [event.name, IdlCoder.typeDefLayout(eventTypeDef, idl.types)];\n });\n // @ts-ignore\n this.layouts = new Map(layouts);\n this.discriminators = new Map(idl.events === undefined\n ? []\n : idl.events.map((e) => [\n base64.fromByteArray(eventDiscriminator(e.name)),\n e.name,\n ]));\n }\n decode(log) {\n let logArr;\n // This will throw if log length is not a multiple of 4.\n try {\n logArr = Buffer.from(base64.toByteArray(log));\n }\n catch (e) {\n return null;\n }\n const disc = base64.fromByteArray(logArr.slice(0, 8));\n // Only deserialize if the discriminator implies a proper event.\n const eventName = this.discriminators.get(disc);\n if (eventName === undefined) {\n return null;\n }\n const layout = this.layouts.get(eventName);\n if (!layout) {\n throw new Error(`Unknown event: ${eventName}`);\n }\n const data = layout.decode(logArr.slice(8));\n return { data, name: eventName };\n }\n}\nexport function eventDiscriminator(name) {\n return Buffer.from(sha256.digest(`event:${name}`)).slice(0, 8);\n}\n//# sourceMappingURL=event.js.map","const _AVAILABLE_FEATURES = new Set([\"anchor-deprecated-state\"]);\nconst _FEATURES = new Map();\nexport function set(key) {\n if (!_AVAILABLE_FEATURES.has(key)) {\n throw new Error(\"Invalid feature\");\n }\n _FEATURES.set(key, true);\n}\nexport function isSet(key) {\n return _FEATURES.get(key) !== undefined;\n}\n//# sourceMappingURL=features.js.map","import { sha256 } from \"js-sha256\";\nimport { IdlCoder } from \"./idl\";\nimport * as features from \"../utils/features\";\nexport class StateCoder {\n constructor(idl) {\n if (idl.state === undefined) {\n throw new Error(\"Idl state not defined.\");\n }\n this.layout = IdlCoder.typeDefLayout(idl.state.struct, idl.types);\n }\n async encode(name, account) {\n const buffer = Buffer.alloc(1000); // TODO: use a tighter buffer.\n const len = this.layout.encode(account, buffer);\n const disc = await stateDiscriminator(name);\n const accData = buffer.slice(0, len);\n return Buffer.concat([disc, accData]);\n }\n decode(ix) {\n // Chop off discriminator.\n const data = ix.slice(8);\n return this.layout.decode(data);\n }\n}\n// Calculates unique 8 byte discriminator prepended to all anchor state accounts.\nexport async function stateDiscriminator(name) {\n let ns = features.isSet(\"anchor-deprecated-state\") ? \"account\" : \"state\";\n return Buffer.from(sha256.digest(`${ns}:${name}`)).slice(0, 8);\n}\n//# sourceMappingURL=state.js.map","import { InstructionCoder } from \"./instruction\";\nimport { AccountsCoder } from \"./accounts\";\nimport { EventCoder } from \"./event\";\nimport { StateCoder } from \"./state\";\nimport { sighash } from \"./common\";\nexport { accountSize } from \"./common\";\nexport { InstructionCoder } from \"./instruction\";\nexport { AccountsCoder, ACCOUNT_DISCRIMINATOR_SIZE } from \"./accounts\";\nexport { EventCoder, eventDiscriminator } from \"./event\";\nexport { StateCoder, stateDiscriminator } from \"./state\";\n/**\n * Coder provides a facade for encoding and decoding all IDL related objects.\n */\nexport default class Coder {\n constructor(idl) {\n this.instruction = new InstructionCoder(idl);\n this.accounts = new AccountsCoder(idl);\n this.events = new EventCoder(idl);\n if (idl.state) {\n this.state = new StateCoder(idl);\n }\n }\n sighash(nameSpace, ixName) {\n return sighash(nameSpace, ixName);\n }\n}\n//# sourceMappingURL=index.js.map","import { PublicKey } from \"@solana/web3.js\";\nimport * as borsh from \"@project-serum/borsh\";\n// Deterministic IDL address as a function of the program id.\nexport async function idlAddress(programId) {\n const base = (await PublicKey.findProgramAddress([], programId))[0];\n return await PublicKey.createWithSeed(base, seed(), programId);\n}\n// Seed for generating the idlAddress.\nexport function seed() {\n return \"anchor:idl\";\n}\nconst IDL_ACCOUNT_LAYOUT = borsh.struct([\n borsh.publicKey(\"authority\"),\n borsh.vecU8(\"data\"),\n]);\nexport function decodeIdlAccount(data) {\n return IDL_ACCOUNT_LAYOUT.decode(data);\n}\nexport function encodeIdlAccount(acc) {\n const buffer = Buffer.alloc(1000); // TODO: use a tighter buffer.\n const len = IDL_ACCOUNT_LAYOUT.encode(acc, buffer);\n return buffer.slice(0, len);\n}\n//# sourceMappingURL=idl.js.map","import { PublicKey } from \"@solana/web3.js\";\nexport function parseIdlErrors(idl) {\n const errors = new Map();\n if (idl.errors) {\n idl.errors.forEach((e) => {\n var _a;\n let msg = (_a = e.msg) !== null && _a !== void 0 ? _a : e.name;\n errors.set(e.code, msg);\n });\n }\n return errors;\n}\n// Allow either IdLInstruction or IdlStateMethod since the types share fields.\nexport function toInstruction(idlIx, ...args) {\n if (idlIx.args.length != args.length) {\n throw new Error(\"Invalid argument length\");\n }\n const ix = {};\n let idx = 0;\n idlIx.args.forEach((ixArg) => {\n ix[ixArg.name] = args[idx];\n idx += 1;\n });\n return ix;\n}\n// Throws error if any account required for the `ix` is not given.\nexport function validateAccounts(ixAccounts, accounts = {}) {\n ixAccounts.forEach((acc) => {\n if (\"accounts\" in acc) {\n validateAccounts(acc.accounts, accounts[acc.name]);\n }\n else {\n if (accounts[acc.name] === undefined) {\n throw new Error(`Invalid arguments: ${acc.name} not provided.`);\n }\n }\n });\n}\n// Translates an address to a Pubkey.\nexport function translateAddress(address) {\n if (typeof address === \"string\") {\n const pk = new PublicKey(address);\n return pk;\n }\n else {\n return address;\n }\n}\n//# sourceMappingURL=common.js.map","import BN from \"bn.js\";\nimport { sha256 as sha256Sync } from \"js-sha256\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport { translateAddress } from \"../program/common\";\n// Sync version of web3.PublicKey.createWithSeed.\nexport function createWithSeedSync(fromPublicKey, seed, programId) {\n const buffer = Buffer.concat([\n fromPublicKey.toBuffer(),\n Buffer.from(seed),\n programId.toBuffer(),\n ]);\n const hash = sha256Sync.digest(buffer);\n return new PublicKey(Buffer.from(hash));\n}\n// Sync version of web3.PublicKey.createProgramAddress.\nexport function createProgramAddressSync(seeds, programId) {\n const MAX_SEED_LENGTH = 32;\n let buffer = Buffer.alloc(0);\n seeds.forEach(function (seed) {\n if (seed.length > MAX_SEED_LENGTH) {\n throw new TypeError(`Max seed length exceeded`);\n }\n buffer = Buffer.concat([buffer, toBuffer(seed)]);\n });\n buffer = Buffer.concat([\n buffer,\n programId.toBuffer(),\n Buffer.from(\"ProgramDerivedAddress\"),\n ]);\n let hash = sha256Sync(new Uint8Array(buffer));\n let publicKeyBytes = new BN(hash, 16).toArray(undefined, 32);\n if (PublicKey.isOnCurve(new Uint8Array(publicKeyBytes))) {\n throw new Error(`Invalid seeds, address must fall off the curve`);\n }\n return new PublicKey(publicKeyBytes);\n}\n// Sync version of web3.PublicKey.findProgramAddress.\nexport function findProgramAddressSync(seeds, programId) {\n let nonce = 255;\n let address;\n while (nonce != 0) {\n try {\n const seedsWithNonce = seeds.concat(Buffer.from([nonce]));\n address = createProgramAddressSync(seedsWithNonce, programId);\n }\n catch (err) {\n if (err instanceof TypeError) {\n throw err;\n }\n nonce--;\n continue;\n }\n return [address, nonce];\n }\n throw new Error(`Unable to find a viable program address nonce`);\n}\nconst toBuffer = (arr) => {\n if (arr instanceof Buffer) {\n return arr;\n }\n else if (arr instanceof Uint8Array) {\n return Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength);\n }\n else {\n return Buffer.from(arr);\n }\n};\nexport async function associated(programId, ...args) {\n let seeds = [Buffer.from([97, 110, 99, 104, 111, 114])]; // b\"anchor\".\n args.forEach((arg) => {\n seeds.push(\n // @ts-ignore\n arg.buffer !== undefined ? arg : translateAddress(arg).toBuffer());\n });\n const [assoc] = await PublicKey.findProgramAddress(seeds, translateAddress(programId));\n return assoc;\n}\n//# sourceMappingURL=pubkey.js.map","export function splitArgsAndCtx(idlIx, args) {\n var _a, _b;\n let options = {};\n const inputLen = idlIx.args ? idlIx.args.length : 0;\n if (args.length > inputLen) {\n if (args.length !== inputLen + 1) {\n throw new Error(`provided too many arguments ${args} to instruction ${idlIx === null || idlIx === void 0 ? void 0 : idlIx.name} expecting: ${(_b = (_a = idlIx.args) === null || _a === void 0 ? void 0 : _a.map((a) => a.name)) !== null && _b !== void 0 ? _b : []}`);\n }\n options = args.pop();\n }\n return [args, options];\n}\n//# sourceMappingURL=context.js.map","import { TransactionInstruction, } from \"@solana/web3.js\";\nimport { IdlError } from \"../../error\";\nimport { toInstruction, validateAccounts, translateAddress, } from \"../common\";\nimport { splitArgsAndCtx } from \"../context\";\nexport default class InstructionNamespaceFactory {\n static build(idlIx, encodeFn, programId) {\n if (idlIx.name === \"_inner\") {\n throw new IdlError(\"the _inner name is reserved\");\n }\n const ix = (...args) => {\n const [ixArgs, ctx] = splitArgsAndCtx(idlIx, [...args]);\n validateAccounts(idlIx.accounts, ctx.accounts);\n validateInstruction(idlIx, ...args);\n const keys = ix.accounts(ctx.accounts);\n if (ctx.remainingAccounts !== undefined) {\n keys.push(...ctx.remainingAccounts);\n }\n if (ctx.__private && ctx.__private.logAccounts) {\n console.log(\"Outgoing account metas:\", keys);\n }\n return new TransactionInstruction({\n keys,\n programId,\n data: encodeFn(idlIx.name, toInstruction(idlIx, ...ixArgs)),\n });\n };\n // Utility fn for ordering the accounts for this instruction.\n ix[\"accounts\"] = (accs) => {\n return InstructionNamespaceFactory.accountsArray(accs, idlIx.accounts);\n };\n return ix;\n }\n static accountsArray(ctx, accounts) {\n if (!ctx) {\n return [];\n }\n return accounts\n .map((acc) => {\n // Nested accounts.\n const nestedAccounts = \"accounts\" in acc ? acc.accounts : undefined;\n if (nestedAccounts !== undefined) {\n const rpcAccs = ctx[acc.name];\n return InstructionNamespaceFactory.accountsArray(rpcAccs, acc.accounts).flat();\n }\n else {\n const account = acc;\n return {\n pubkey: translateAddress(ctx[acc.name]),\n isWritable: account.isMut,\n isSigner: account.isSigner,\n };\n }\n })\n .flat();\n }\n}\n// Throws error if any argument required for the `ix` is not given.\nfunction validateInstruction(ix, ...args) {\n // todo\n}\n//# sourceMappingURL=instruction.js.map","import { splitArgsAndCtx } from \"../context\";\nimport { ProgramError } from \"../../error\";\nexport default class RpcFactory {\n static build(idlIx, txFn, idlErrors, provider) {\n const rpc = async (...args) => {\n const tx = txFn(...args);\n const [, ctx] = splitArgsAndCtx(idlIx, [...args]);\n try {\n const txSig = await provider.send(tx, ctx.signers, ctx.options);\n return txSig;\n }\n catch (err) {\n console.log(\"Translating error\", err);\n let translatedErr = ProgramError.parse(err, idlErrors);\n if (translatedErr === null) {\n throw err;\n }\n throw translatedErr;\n }\n };\n return rpc;\n }\n}\n//# sourceMappingURL=rpc.js.map","import { Transaction } from \"@solana/web3.js\";\nimport { splitArgsAndCtx } from \"../context\";\nexport default class TransactionFactory {\n static build(idlIx, ixFn) {\n const txFn = (...args) => {\n var _a;\n const [, ctx] = splitArgsAndCtx(idlIx, [...args]);\n const tx = new Transaction();\n (_a = ctx.instructions) === null || _a === void 0 ? void 0 : _a.forEach((ix) => tx.add(ix));\n tx.add(ixFn(...args));\n return tx;\n };\n return txFn;\n }\n}\n//# sourceMappingURL=transaction.js.map","import EventEmitter from \"eventemitter3\";\nimport camelCase from \"camelcase\";\nimport { SystemProgram, } from \"@solana/web3.js\";\nimport Coder, { stateDiscriminator } from \"../../coder\";\nimport { getProvider } from \"../../\";\nimport { validateAccounts, parseIdlErrors } from \"../common\";\nimport { findProgramAddressSync, createWithSeedSync } from \"../../utils/pubkey\";\nimport InstructionNamespaceFactory from \"./instruction\";\nimport RpcNamespaceFactory from \"./rpc\";\nimport TransactionNamespaceFactory from \"./transaction\";\nexport default class StateFactory {\n static build(idl, coder, programId, provider) {\n if (idl.state === undefined) {\n return undefined;\n }\n return new StateClient(idl, programId, provider, coder);\n }\n}\n/**\n * A client for the program state. Similar to the base [[Program]] client,\n * one can use this to send transactions and read accounts for the state\n * abstraction.\n */\nexport class StateClient {\n constructor(idl, programId, \n /**\n * Returns the client's wallet and network provider.\n */\n provider = getProvider(), \n /**\n * Returns the coder.\n */\n coder = new Coder(idl)) {\n this.provider = provider;\n this.coder = coder;\n this._idl = idl;\n this._programId = programId;\n this._address = programStateAddress(programId);\n this._sub = null;\n // Build namespaces.\n const [instruction, transaction, rpc] = (() => {\n var _a;\n let instruction = {};\n let transaction = {};\n let rpc = {};\n (_a = idl.state) === null || _a === void 0 ? void 0 : _a.methods.forEach((m) => {\n // Build instruction method.\n const ixItem = InstructionNamespaceFactory.build(m, (ixName, ix) => coder.instruction.encodeState(ixName, ix), programId);\n ixItem[\"accounts\"] = (accounts) => {\n const keys = stateInstructionKeys(programId, provider, m, accounts);\n return keys.concat(InstructionNamespaceFactory.accountsArray(accounts, m.accounts));\n };\n // Build transaction method.\n const txItem = TransactionNamespaceFactory.build(m, ixItem);\n // Build RPC method.\n const rpcItem = RpcNamespaceFactory.build(m, txItem, parseIdlErrors(idl), provider);\n // Attach them all to their respective namespaces.\n const name = camelCase(m.name);\n instruction[name] = ixItem;\n transaction[name] = txItem;\n rpc[name] = rpcItem;\n });\n return [\n instruction,\n transaction,\n rpc,\n ];\n })();\n this.instruction = instruction;\n this.transaction = transaction;\n this.rpc = rpc;\n }\n /**\n * Returns the program ID owning the state.\n */\n get programId() {\n return this._programId;\n }\n /**\n * Returns the deserialized state account.\n */\n async fetch() {\n const addr = this.address();\n const accountInfo = await this.provider.connection.getAccountInfo(addr);\n if (accountInfo === null) {\n throw new Error(`Account does not exist ${addr.toString()}`);\n }\n // Assert the account discriminator is correct.\n const state = this._idl.state;\n if (!state) {\n throw new Error(\"State is not specified in IDL.\");\n }\n const expectedDiscriminator = await stateDiscriminator(state.struct.name);\n if (expectedDiscriminator.compare(accountInfo.data.slice(0, 8))) {\n throw new Error(\"Invalid account discriminator\");\n }\n return this.coder.state.decode(accountInfo.data);\n }\n /**\n * Returns the state address.\n */\n address() {\n return this._address;\n }\n /**\n * Returns an `EventEmitter` with a `\"change\"` event that's fired whenever\n * the state account cahnges.\n */\n subscribe(commitment) {\n if (this._sub !== null) {\n return this._sub.ee;\n }\n const ee = new EventEmitter();\n const listener = this.provider.connection.onAccountChange(this.address(), (acc) => {\n const account = this.coder.state.decode(acc.data);\n ee.emit(\"change\", account);\n }, commitment);\n this._sub = {\n ee,\n listener,\n };\n return ee;\n }\n /**\n * Unsubscribes to state changes.\n */\n unsubscribe() {\n if (this._sub !== null) {\n this.provider.connection\n .removeAccountChangeListener(this._sub.listener)\n .then(async () => {\n this._sub = null;\n })\n .catch(console.error);\n }\n }\n}\n// Calculates the deterministic address of the program's \"state\" account.\nfunction programStateAddress(programId) {\n let [registrySigner] = findProgramAddressSync([], programId);\n return createWithSeedSync(registrySigner, \"unversioned\", programId);\n}\n// Returns the common keys that are prepended to all instructions targeting\n// the \"state\" of a program.\nfunction stateInstructionKeys(programId, provider, m, accounts) {\n if (m.name === \"new\") {\n // Ctor `new` method.\n const [programSigner] = findProgramAddressSync([], programId);\n return [\n {\n pubkey: provider.wallet.publicKey,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: programStateAddress(programId),\n isWritable: true,\n isSigner: false,\n },\n { pubkey: programSigner, isWritable: false, isSigner: false },\n {\n pubkey: SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n { pubkey: programId, isWritable: false, isSigner: false },\n ];\n }\n else {\n validateAccounts(m.accounts, accounts);\n return [\n {\n pubkey: programStateAddress(programId),\n isWritable: true,\n isSigner: false,\n },\n ];\n }\n}\n//# sourceMappingURL=state.js.map","import assert from \"assert\";\nimport { PublicKey, Transaction, TransactionInstruction, } from \"@solana/web3.js\";\nimport { chunks } from \"../utils/common\";\nimport { translateAddress } from \"../program/common\";\nimport { getProvider } from \"../provider\";\n/**\n * Sends a transaction to a program with the given accounts and instruction\n * data.\n */\nexport async function invoke(programId, accounts, data, provider) {\n programId = translateAddress(programId);\n if (!provider) {\n provider = getProvider();\n }\n const tx = new Transaction();\n tx.add(new TransactionInstruction({\n programId,\n keys: accounts !== null && accounts !== void 0 ? accounts : [],\n data,\n }));\n return await provider.send(tx);\n}\nconst GET_MULTIPLE_ACCOUNTS_LIMIT = 99;\nexport async function getMultipleAccounts(connection, publicKeys) {\n if (publicKeys.length <= GET_MULTIPLE_ACCOUNTS_LIMIT) {\n return await getMultipleAccountsCore(connection, publicKeys);\n }\n else {\n const batches = chunks(publicKeys, GET_MULTIPLE_ACCOUNTS_LIMIT);\n const results = await Promise.all(batches.map((batch) => getMultipleAccountsCore(connection, batch)));\n return results.flat();\n }\n}\nasync function getMultipleAccountsCore(connection, publicKeys) {\n const args = [publicKeys.map((k) => k.toBase58()), { commitment: \"recent\" }];\n // @ts-ignore\n const res = await connection._rpcRequest(\"getMultipleAccounts\", args);\n if (res.error) {\n throw new Error(\"failed to get info about accounts \" +\n publicKeys.map((k) => k.toBase58()).join(\", \") +\n \": \" +\n res.error.message);\n }\n assert(typeof res.result !== \"undefined\");\n const accounts = [];\n for (const account of res.result.value) {\n let value = null;\n if (account === null) {\n accounts.push(null);\n continue;\n }\n if (res.result.value) {\n const { executable, owner, lamports, data } = account;\n assert(data[1] === \"base64\");\n value = {\n executable,\n owner: new PublicKey(owner),\n lamports,\n data: Buffer.from(data[0], \"base64\"),\n };\n }\n if (value === null) {\n throw new Error(\"Invalid response\");\n }\n accounts.push(value);\n }\n return accounts.map((account, idx) => {\n if (account === null) {\n return null;\n }\n return {\n publicKey: publicKeys[idx],\n account,\n };\n });\n}\n//# sourceMappingURL=rpc.js.map","import camelCase from \"camelcase\";\nimport EventEmitter from \"eventemitter3\";\nimport * as bs58 from \"bs58\";\nimport { SystemProgram, } from \"@solana/web3.js\";\nimport Coder, { ACCOUNT_DISCRIMINATOR_SIZE, accountSize, AccountsCoder, } from \"../../coder\";\nimport { translateAddress } from \"../common\";\nimport { getProvider } from \"../../\";\nimport * as pubkeyUtil from \"../../utils/pubkey\";\nimport * as rpcUtil from \"../../utils/rpc\";\nexport default class AccountFactory {\n static build(idl, coder, programId, provider) {\n var _a;\n const accountFns = {};\n (_a = idl.accounts) === null || _a === void 0 ? void 0 : _a.forEach((idlAccount) => {\n const name = camelCase(idlAccount.name);\n accountFns[name] = new AccountClient(idl, idlAccount, programId, provider, coder);\n });\n return accountFns;\n }\n}\nexport class AccountClient {\n constructor(idl, idlAccount, programId, provider, coder) {\n var _a;\n this._idlAccount = idlAccount;\n this._programId = programId;\n this._provider = provider !== null && provider !== void 0 ? provider : getProvider();\n this._coder = coder !== null && coder !== void 0 ? coder : new Coder(idl);\n this._size =\n ACCOUNT_DISCRIMINATOR_SIZE + ((_a = accountSize(idl, idlAccount)) !== null && _a !== void 0 ? _a : 0);\n }\n /**\n * Returns the number of bytes in this account.\n */\n get size() {\n return this._size;\n }\n /**\n * Returns the program ID owning all accounts.\n */\n get programId() {\n return this._programId;\n }\n /**\n * Returns the client's wallet and network provider.\n */\n get provider() {\n return this._provider;\n }\n /**\n * Returns the coder.\n */\n get coder() {\n return this._coder;\n }\n /**\n * Returns a deserialized account, returning null if it doesn't exist.\n *\n * @param address The address of the account to fetch.\n */\n async fetchNullable(address) {\n const accountInfo = await this._provider.connection.getAccountInfo(translateAddress(address));\n if (accountInfo === null) {\n return null;\n }\n // Assert the account discriminator is correct.\n const discriminator = AccountsCoder.accountDiscriminator(this._idlAccount.name);\n if (discriminator.compare(accountInfo.data.slice(0, 8))) {\n throw new Error(\"Invalid account discriminator\");\n }\n return this._coder.accounts.decode(this._idlAccount.name, accountInfo.data);\n }\n /**\n * Returns a deserialized account.\n *\n * @param address The address of the account to fetch.\n */\n async fetch(address) {\n const data = await this.fetchNullable(address);\n if (data === null) {\n throw new Error(`Account does not exist ${address.toString()}`);\n }\n return data;\n }\n /**\n * Returns multiple deserialized accounts.\n * Accounts not found or with wrong discriminator are returned as null.\n *\n * @param addresses The addresses of the accounts to fetch.\n */\n async fetchMultiple(addresses) {\n const accounts = await rpcUtil.getMultipleAccounts(this._provider.connection, addresses.map((address) => translateAddress(address)));\n const discriminator = AccountsCoder.accountDiscriminator(this._idlAccount.name);\n // Decode accounts where discriminator is correct, null otherwise\n return accounts.map((account) => {\n if (account == null) {\n return null;\n }\n if (discriminator.compare(account === null || account === void 0 ? void 0 : account.account.data.slice(0, 8))) {\n return null;\n }\n return this._coder.accounts.decode(this._idlAccount.name, account === null || account === void 0 ? void 0 : account.account.data);\n });\n }\n /**\n * Returns all instances of this account type for the program.\n *\n * @param filters User-provided filters to narrow the results from `connection.getProgramAccounts`.\n *\n * When filters are not defined this method returns all\n * the account instances.\n *\n * When filters are of type `Buffer`, the filters are appended\n * after the discriminator.\n *\n * When filters are of type `GetProgramAccountsFilter[]`,\n * filters are appended after the discriminator filter.\n */\n async all(filters) {\n const discriminator = AccountsCoder.accountDiscriminator(this._idlAccount.name);\n let resp = await this._provider.connection.getProgramAccounts(this._programId, {\n commitment: this._provider.connection.commitment,\n filters: [\n {\n memcmp: {\n offset: 0,\n bytes: bs58.encode(filters instanceof Buffer\n ? Buffer.concat([discriminator, filters])\n : discriminator),\n },\n },\n ...(Array.isArray(filters) ? filters : []),\n ],\n });\n return resp.map(({ pubkey, account }) => {\n return {\n publicKey: pubkey,\n account: this._coder.accounts.decode(this._idlAccount.name, account.data),\n };\n });\n }\n /**\n * Returns an `EventEmitter` emitting a \"change\" event whenever the account\n * changes.\n */\n subscribe(address, commitment) {\n const sub = subscriptions.get(address.toString());\n if (sub) {\n return sub.ee;\n }\n const ee = new EventEmitter();\n address = translateAddress(address);\n const listener = this._provider.connection.onAccountChange(address, (acc) => {\n const account = this._coder.accounts.decode(this._idlAccount.name, acc.data);\n ee.emit(\"change\", account);\n }, commitment);\n subscriptions.set(address.toString(), {\n ee,\n listener,\n });\n return ee;\n }\n /**\n * Unsubscribes from the account at the given address.\n */\n async unsubscribe(address) {\n let sub = subscriptions.get(address.toString());\n if (!sub) {\n console.warn(\"Address is not subscribed\");\n return;\n }\n if (subscriptions) {\n await this._provider.connection\n .removeAccountChangeListener(sub.listener)\n .then(() => {\n subscriptions.delete(address.toString());\n })\n .catch(console.error);\n }\n }\n /**\n * Returns an instruction for creating this account.\n */\n async createInstruction(signer, sizeOverride) {\n const size = this.size;\n return SystemProgram.createAccount({\n fromPubkey: this._provider.wallet.publicKey,\n newAccountPubkey: signer.publicKey,\n space: sizeOverride !== null && sizeOverride !== void 0 ? sizeOverride : size,\n lamports: await this._provider.connection.getMinimumBalanceForRentExemption(sizeOverride !== null && sizeOverride !== void 0 ? sizeOverride : size),\n programId: this._programId,\n });\n }\n /**\n * @deprecated since version 14.0.\n *\n * Function returning the associated account. Args are keys to associate.\n * Order matters.\n */\n async associated(...args) {\n const addr = await this.associatedAddress(...args);\n return await this.fetch(addr);\n }\n /**\n * @deprecated since version 14.0.\n *\n * Function returning the associated address. Args are keys to associate.\n * Order matters.\n */\n async associatedAddress(...args) {\n return await pubkeyUtil.associated(this._programId, ...args);\n }\n}\n// Tracks all subscriptions.\nconst subscriptions = new Map();\n//# sourceMappingURL=account.js.map","import * as assert from \"assert\";\nconst LOG_START_INDEX = \"Program log: \".length;\nexport class EventManager {\n constructor(programId, provider, coder) {\n this._programId = programId;\n this._provider = provider;\n this._eventParser = new EventParser(programId, coder);\n this._eventCallbacks = new Map();\n this._eventListeners = new Map();\n this._listenerIdCount = 0;\n }\n addEventListener(eventName, callback) {\n var _a;\n let listener = this._listenerIdCount;\n this._listenerIdCount += 1;\n // Store the listener into the event map.\n if (!(eventName in this._eventCallbacks)) {\n this._eventListeners.set(eventName, []);\n }\n this._eventListeners.set(eventName, ((_a = this._eventListeners.get(eventName)) !== null && _a !== void 0 ? _a : []).concat(listener));\n // Store the callback into the listener map.\n this._eventCallbacks.set(listener, [eventName, callback]);\n // Create the subscription singleton, if needed.\n if (this._onLogsSubscriptionId !== undefined) {\n return listener;\n }\n this._onLogsSubscriptionId = this._provider.connection.onLogs(this._programId, (logs, ctx) => {\n if (logs.err) {\n console.error(logs);\n return;\n }\n this._eventParser.parseLogs(logs.logs, (event) => {\n const allListeners = this._eventListeners.get(event.name);\n if (allListeners) {\n allListeners.forEach((listener) => {\n const listenerCb = this._eventCallbacks.get(listener);\n if (listenerCb) {\n const [, callback] = listenerCb;\n callback(event.data, ctx.slot);\n }\n });\n }\n });\n });\n return listener;\n }\n async removeEventListener(listener) {\n // Get the callback.\n const callback = this._eventCallbacks.get(listener);\n if (!callback) {\n throw new Error(`Event listener ${listener} doesn't exist!`);\n }\n const [eventName] = callback;\n // Get the listeners.\n let listeners = this._eventListeners.get(eventName);\n if (!listeners) {\n throw new Error(`Event listeners don't exist for ${eventName}!`);\n }\n // Update both maps.\n this._eventCallbacks.delete(listener);\n listeners = listeners.filter((l) => l !== listener);\n if (listeners.length === 0) {\n this._eventListeners.delete(eventName);\n }\n // Kill the websocket connection if all listeners have been removed.\n if (this._eventCallbacks.size == 0) {\n assert.ok(this._eventListeners.size === 0);\n if (this._onLogsSubscriptionId !== undefined) {\n await this._provider.connection.removeOnLogsListener(this._onLogsSubscriptionId);\n this._onLogsSubscriptionId = undefined;\n }\n }\n }\n}\nexport class EventParser {\n constructor(programId, coder) {\n this.coder = coder;\n this.programId = programId;\n }\n // Each log given, represents an array of messages emitted by\n // a single transaction, which can execute many different programs across\n // CPI boundaries. However, the subscription is only interested in the\n // events emitted by *this* program. In achieving this, we keep track of the\n // program execution context by parsing each log and looking for a CPI\n // `invoke` call. If one exists, we know a new program is executing. So we\n // push the programId onto a stack and switch the program context. This\n // allows us to track, for a given log, which program was executing during\n // its emission, thereby allowing us to know if a given log event was\n // emitted by *this* program. If it was, then we parse the raw string and\n // emit the event if the string matches the event being subscribed to.\n parseLogs(logs, callback) {\n const logScanner = new LogScanner(logs);\n const execution = new ExecutionContext(logScanner.next());\n let log = logScanner.next();\n while (log !== null) {\n let [event, newProgram, didPop] = this.handleLog(execution, log);\n if (event) {\n callback(event);\n }\n if (newProgram) {\n execution.push(newProgram);\n }\n if (didPop) {\n execution.pop();\n }\n log = logScanner.next();\n }\n }\n // Main log handler. Returns a three element array of the event, the\n // next program that was invoked for CPI, and a boolean indicating if\n // a program has completed execution (and thus should be popped off the\n // execution stack).\n handleLog(execution, log) {\n // Executing program is this program.\n if (execution.stack.length > 0 &&\n execution.program() === this.programId.toString()) {\n return this.handleProgramLog(log);\n }\n // Executing program is not this program.\n else {\n return [null, ...this.handleSystemLog(log)];\n }\n }\n // Handles logs from *this* program.\n handleProgramLog(log) {\n // This is a `msg!` log.\n if (log.startsWith(\"Program log:\")) {\n const logStr = log.slice(LOG_START_INDEX);\n const event = this.coder.events.decode(logStr);\n return [event, null, false];\n }\n // System log.\n else {\n return [null, ...this.handleSystemLog(log)];\n }\n }\n // Handles logs when the current program being executing is *not* this.\n handleSystemLog(log) {\n // System component.\n const logStart = log.split(\":\")[0];\n // Did the program finish executing?\n if (logStart.match(/^Program (.*) success/g) !== null) {\n return [null, true];\n // Recursive call.\n }\n else if (logStart.startsWith(`Program ${this.programId.toString()} invoke`)) {\n return [this.programId.toString(), false];\n }\n // CPI call.\n else if (logStart.includes(\"invoke\")) {\n return [\"cpi\", false]; // Any string will do.\n }\n else {\n return [null, false];\n }\n }\n}\n// Stack frame execution context, allowing one to track what program is\n// executing for a given log.\nclass ExecutionContext {\n constructor(log) {\n var _a;\n // Assumes the first log in every transaction is an `invoke` log from the\n // runtime.\n const program = (_a = /^Program (.*) invoke.*$/g.exec(log)) === null || _a === void 0 ? void 0 : _a[1];\n if (!program) {\n throw new Error(`Could not find program invocation log line`);\n }\n this.stack = [program];\n }\n program() {\n assert.ok(this.stack.length > 0);\n return this.stack[this.stack.length - 1];\n }\n push(newProgram) {\n this.stack.push(newProgram);\n }\n pop() {\n assert.ok(this.stack.length > 0);\n this.stack.pop();\n }\n}\nclass LogScanner {\n constructor(logs) {\n this.logs = logs;\n }\n next() {\n if (this.logs.length === 0) {\n return null;\n }\n let l = this.logs[0];\n this.logs = this.logs.slice(1);\n return l;\n }\n}\n//# sourceMappingURL=event.js.map","import { splitArgsAndCtx } from \"../context\";\nimport { EventParser } from \"../event\";\nimport { ProgramError } from \"../../error\";\nexport default class SimulateFactory {\n static build(idlIx, txFn, idlErrors, provider, coder, programId, idl) {\n const simulate = async (...args) => {\n const tx = txFn(...args);\n const [, ctx] = splitArgsAndCtx(idlIx, [...args]);\n let resp = undefined;\n try {\n resp = await provider.simulate(tx, ctx.signers, ctx.options);\n }\n catch (err) {\n console.log(\"Translating error\", err);\n let translatedErr = ProgramError.parse(err, idlErrors);\n if (translatedErr === null) {\n throw err;\n }\n throw translatedErr;\n }\n if (resp === undefined) {\n throw new Error(\"Unable to simulate transaction\");\n }\n if (resp.value.err) {\n throw new Error(`Simulate error: ${resp.value.err.toString()}`);\n }\n const logs = resp.value.logs;\n if (!logs) {\n throw new Error(\"Simulated logs not found\");\n }\n const events = [];\n if (idl.events) {\n let parser = new EventParser(programId, coder);\n parser.parseLogs(logs, (event) => {\n events.push(event);\n });\n }\n return { events, raw: logs };\n };\n return simulate;\n }\n}\n//# sourceMappingURL=simulate.js.map","import camelCase from \"camelcase\";\nimport StateFactory from \"./state\";\nimport InstructionFactory from \"./instruction\";\nimport TransactionFactory from \"./transaction\";\nimport RpcFactory from \"./rpc\";\nimport AccountFactory from \"./account\";\nimport SimulateFactory from \"./simulate\";\nimport { parseIdlErrors } from \"../common\";\n// Re-exports.\nexport { StateClient } from \"./state\";\nexport { AccountClient } from \"./account\";\nexport default class NamespaceFactory {\n /**\n * Generates all namespaces for a given program.\n */\n static build(idl, coder, programId, provider) {\n const rpc = {};\n const instruction = {};\n const transaction = {};\n const simulate = {};\n const idlErrors = parseIdlErrors(idl);\n const state = StateFactory.build(idl, coder, programId, provider);\n idl.instructions.forEach((idlIx) => {\n const ixItem = InstructionFactory.build(idlIx, (ixName, ix) => coder.instruction.encode(ixName, ix), programId);\n const txItem = TransactionFactory.build(idlIx, ixItem);\n const rpcItem = RpcFactory.build(idlIx, txItem, idlErrors, provider);\n const simulateItem = SimulateFactory.build(idlIx, txItem, idlErrors, provider, coder, programId, idl);\n const name = camelCase(idlIx.name);\n instruction[name] = ixItem;\n transaction[name] = txItem;\n rpc[name] = rpcItem;\n simulate[name] = simulateItem;\n });\n const account = idl.accounts\n ? AccountFactory.build(idl, coder, programId, provider)\n : {};\n return [\n rpc,\n instruction,\n transaction,\n account,\n simulate,\n state,\n ];\n }\n}\n//# sourceMappingURL=index.js.map","import { inflate } from \"pako\";\nimport { idlAddress, decodeIdlAccount } from \"../idl\";\nimport Coder from \"../coder\";\nimport NamespaceFactory from \"./namespace\";\nimport { getProvider } from \"../\";\nimport { utf8 } from \"../utils/bytes\";\nimport { EventManager } from \"./event\";\nimport { translateAddress } from \"./common\";\nexport * from \"./common\";\nexport * from \"./context\";\nexport * from \"./event\";\nexport * from \"./namespace\";\n/**\n * ## Program\n *\n * Program provides the IDL deserialized client representation of an Anchor\n * program.\n *\n * This API is the one stop shop for all things related to communicating with\n * on-chain programs. Among other things, one can send transactions, fetch\n * deserialized accounts, decode instruction data, subscribe to account\n * changes, and listen to events.\n *\n * In addition to field accessors and methods, the object provides a set of\n * dynamically generated properties, also known as namespaces, that\n * map one-to-one to program methods and accounts. These namespaces generally\n * can be used as follows:\n *\n * ## Usage\n *\n * ```javascript\n * program..\n * ```\n *\n * API specifics are namespace dependent. The examples used in the documentation\n * below will refer to the two counter examples found\n * [here](https://github.com/project-serum/anchor#examples).\n */\nexport class Program {\n /**\n * @param idl The interface definition.\n * @param programId The on-chain address of the program.\n * @param provider The network and wallet context to use. If not provided\n * then uses [[getProvider]].\n */\n constructor(idl, programId, provider) {\n programId = translateAddress(programId);\n if (!provider) {\n provider = getProvider();\n }\n // Fields.\n this._idl = idl;\n this._provider = provider;\n this._programId = programId;\n this._coder = new Coder(idl);\n this._events = new EventManager(this._programId, provider, this._coder);\n // Dynamic namespaces.\n const [rpc, instruction, transaction, account, simulate, state,] = NamespaceFactory.build(idl, this._coder, programId, provider);\n this.rpc = rpc;\n this.instruction = instruction;\n this.transaction = transaction;\n this.account = account;\n this.simulate = simulate;\n this.state = state;\n }\n /**\n * Address of the program.\n */\n get programId() {\n return this._programId;\n }\n /**\n * IDL defining the program's interface.\n */\n get idl() {\n return this._idl;\n }\n /**\n * Coder for serializing requests.\n */\n get coder() {\n return this._coder;\n }\n /**\n * Wallet and network provider.\n */\n get provider() {\n return this._provider;\n }\n /**\n * Generates a Program client by fetching the IDL from the network.\n *\n * In order to use this method, an IDL must have been previously initialized\n * via the anchor CLI's `anchor idl init` command.\n *\n * @param programId The on-chain address of the program.\n * @param provider The network and wallet context.\n */\n static async at(address, provider) {\n const programId = translateAddress(address);\n const idl = await Program.fetchIdl(programId, provider);\n if (!idl) {\n throw new Error(`IDL not found for program: ${address.toString()}`);\n }\n return new Program(idl, programId, provider);\n }\n /**\n * Fetches an idl from the blockchain.\n *\n * In order to use this method, an IDL must have been previously initialized\n * via the anchor CLI's `anchor idl init` command.\n *\n * @param programId The on-chain address of the program.\n * @param provider The network and wallet context.\n */\n static async fetchIdl(address, provider) {\n provider = provider !== null && provider !== void 0 ? provider : getProvider();\n const programId = translateAddress(address);\n const idlAddr = await idlAddress(programId);\n const accountInfo = await provider.connection.getAccountInfo(idlAddr);\n if (!accountInfo) {\n return null;\n }\n // Chop off account discriminator.\n let idlAccount = decodeIdlAccount(accountInfo.data.slice(8));\n const inflatedIdl = inflate(idlAccount.data);\n return JSON.parse(utf8.decode(inflatedIdl));\n }\n /**\n * Invokes the given callback every time the given event is emitted.\n *\n * @param eventName The PascalCase name of the event, provided by the IDL.\n * @param callback The function to invoke whenever the event is emitted from\n * program logs.\n */\n addEventListener(eventName, callback) {\n return this._events.addEventListener(eventName, callback);\n }\n /**\n * Unsubscribes from the given eventName.\n */\n async removeEventListener(listener) {\n return await this._events.removeEventListener(listener);\n }\n}\n//# sourceMappingURL=index.js.map","export function decode(array) {\n const decoder = typeof TextDecoder === \"undefined\"\n ? new (require(\"util\").TextDecoder)(\"utf-8\") // Node.\n : new TextDecoder(\"utf-8\"); // Browser.\n return decoder.decode(array);\n}\nexport function encode(input) {\n const encoder = typeof TextEncoder === \"undefined\"\n ? new (require(\"util\").TextEncoder)(\"utf-8\") // Node.\n : new TextEncoder(); // Browser.\n return encoder.encode(input);\n}\n//# sourceMappingURL=utf8.js.map","import camelCase from \"camelcase\";\nimport * as toml from \"toml\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport { Program } from \"./program\";\nimport { isBrowser } from \"./utils/common\";\nlet _populatedWorkspace = false;\n/**\n * The `workspace` namespace provides a convenience API to automatically\n * search for and deserialize [[Program]] objects defined by compiled IDLs\n * in an Anchor workspace.\n *\n * This API is for Node only.\n */\nconst workspace = new Proxy({}, {\n get(workspaceCache, programName) {\n if (isBrowser) {\n console.log(\"Workspaces aren't available in the browser\");\n return undefined;\n }\n const fs = require(\"fs\");\n const process = require(\"process\");\n if (!_populatedWorkspace) {\n const path = require(\"path\");\n let projectRoot = process.cwd();\n while (!fs.existsSync(path.join(projectRoot, \"Anchor.toml\"))) {\n const parentDir = path.dirname(projectRoot);\n if (parentDir === projectRoot) {\n projectRoot = undefined;\n }\n projectRoot = parentDir;\n }\n if (projectRoot === undefined) {\n throw new Error(\"Could not find workspace root.\");\n }\n const idlFolder = `${projectRoot}/target/idl`;\n if (!fs.existsSync(idlFolder)) {\n throw new Error(`${idlFolder} doesn't exist. Did you use \"anchor build\"?`);\n }\n const idlMap = new Map();\n fs.readdirSync(idlFolder).forEach((file) => {\n const filePath = `${idlFolder}/${file}`;\n const idlStr = fs.readFileSync(filePath);\n const idl = JSON.parse(idlStr);\n idlMap.set(idl.name, idl);\n const name = camelCase(idl.name, { pascalCase: true });\n if (idl.metadata && idl.metadata.address) {\n workspaceCache[name] = new Program(idl, new PublicKey(idl.metadata.address));\n }\n });\n // Override the workspace programs if the user put them in the config.\n const anchorToml = toml.parse(fs.readFileSync(path.join(projectRoot, \"Anchor.toml\"), \"utf-8\"));\n const clusterId = anchorToml.provider.cluster;\n if (anchorToml.programs && anchorToml.programs[clusterId]) {\n attachWorkspaceOverride(workspaceCache, anchorToml.programs[clusterId], idlMap);\n }\n _populatedWorkspace = true;\n }\n return workspaceCache[programName];\n },\n});\nfunction attachWorkspaceOverride(workspaceCache, overrideConfig, idlMap) {\n Object.keys(overrideConfig).forEach((programName) => {\n const wsProgramName = camelCase(programName, { pascalCase: true });\n const entry = overrideConfig[programName];\n const overrideAddress = new PublicKey(typeof entry === \"string\" ? entry : entry.address);\n let idl = idlMap.get(programName);\n if (typeof entry !== \"string\" && entry.idl) {\n idl = JSON.parse(require(\"fs\").readFileSync(entry.idl, \"utf-8\"));\n }\n if (!idl) {\n throw new Error(`Error loading workspace IDL for ${programName}`);\n }\n workspaceCache[wsProgramName] = new Program(idl, overrideAddress);\n });\n}\nexport default workspace;\n//# sourceMappingURL=workspace.js.map","/** Instructions defined by the program */\nexport var TokenInstruction;\n(function (TokenInstruction) {\n TokenInstruction[TokenInstruction[\"InitializeMint\"] = 0] = \"InitializeMint\";\n TokenInstruction[TokenInstruction[\"InitializeAccount\"] = 1] = \"InitializeAccount\";\n TokenInstruction[TokenInstruction[\"InitializeMultisig\"] = 2] = \"InitializeMultisig\";\n TokenInstruction[TokenInstruction[\"Transfer\"] = 3] = \"Transfer\";\n TokenInstruction[TokenInstruction[\"Approve\"] = 4] = \"Approve\";\n TokenInstruction[TokenInstruction[\"Revoke\"] = 5] = \"Revoke\";\n TokenInstruction[TokenInstruction[\"SetAuthority\"] = 6] = \"SetAuthority\";\n TokenInstruction[TokenInstruction[\"MintTo\"] = 7] = \"MintTo\";\n TokenInstruction[TokenInstruction[\"Burn\"] = 8] = \"Burn\";\n TokenInstruction[TokenInstruction[\"CloseAccount\"] = 9] = \"CloseAccount\";\n TokenInstruction[TokenInstruction[\"FreezeAccount\"] = 10] = \"FreezeAccount\";\n TokenInstruction[TokenInstruction[\"ThawAccount\"] = 11] = \"ThawAccount\";\n TokenInstruction[TokenInstruction[\"TransferChecked\"] = 12] = \"TransferChecked\";\n TokenInstruction[TokenInstruction[\"ApproveChecked\"] = 13] = \"ApproveChecked\";\n TokenInstruction[TokenInstruction[\"MintToChecked\"] = 14] = \"MintToChecked\";\n TokenInstruction[TokenInstruction[\"BurnChecked\"] = 15] = \"BurnChecked\";\n TokenInstruction[TokenInstruction[\"InitializeAccount2\"] = 16] = \"InitializeAccount2\";\n TokenInstruction[TokenInstruction[\"SyncNative\"] = 17] = \"SyncNative\";\n TokenInstruction[TokenInstruction[\"InitializeAccount3\"] = 18] = \"InitializeAccount3\";\n TokenInstruction[TokenInstruction[\"InitializeMultisig2\"] = 19] = \"InitializeMultisig2\";\n TokenInstruction[TokenInstruction[\"InitializeMint2\"] = 20] = \"InitializeMint2\";\n})(TokenInstruction || (TokenInstruction = {}));\n//# sourceMappingURL=types.js.map","import { PublicKey } from \"@solana/web3.js\";\nconst TOKEN_PROGRAM_ID = new PublicKey(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\");\nconst ASSOCIATED_PROGRAM_ID = new PublicKey(\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\");\nexport async function associatedAddress({ mint, owner, }) {\n return (await PublicKey.findProgramAddress([owner.toBuffer(), TOKEN_PROGRAM_ID.toBuffer(), mint.toBuffer()], ASSOCIATED_PROGRAM_ID))[0];\n}\n//# sourceMappingURL=token.js.map","import { PublicKey } from '@solana/web3.js';\n/** Address of the SPL Token program */\nexport const TOKEN_PROGRAM_ID = new PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA');\n/** Address of the SPL Associated Token Account program */\nexport const ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey('ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL');\n/** Address of the special mint for wrapped native SOL */\nexport const NATIVE_MINT = new PublicKey('So11111111111111111111111111111111111111112');\n//# sourceMappingURL=constants.js.map","/** Base class for errors */\nexport class TokenError extends Error {\n constructor(message) {\n super(message);\n }\n}\n/** Thrown if an account is not found at the expected address */\nexport class TokenAccountNotFoundError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenAccountNotFoundError';\n }\n}\n/** Thrown if a program state account is not owned by the expected token program */\nexport class TokenInvalidAccountOwnerError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidAccountOwnerError';\n }\n}\n/** Thrown if the byte length of an program state account doesn't match the expected size */\nexport class TokenInvalidAccountSizeError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidAccountSizeError';\n }\n}\n/** Thrown if the mint of a token account doesn't match the expected mint */\nexport class TokenInvalidMintError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidMintError';\n }\n}\n/** Thrown if the owner of a token account doesn't match the expected owner */\nexport class TokenInvalidOwnerError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidOwnerError';\n }\n}\n/** Thrown if the owner of a token account is a PDA (Program Derived Address) */\nexport class TokenOwnerOffCurveError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenOwnerOffCurveError';\n }\n}\n/** Thrown if an instruction's program is invalid */\nexport class TokenInvalidInstructionProgramError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidInstructionProgramError';\n }\n}\n/** Thrown if an instruction's keys are invalid */\nexport class TokenInvalidInstructionKeysError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidInstructionKeysError';\n }\n}\n/** Thrown if an instruction's data is invalid */\nexport class TokenInvalidInstructionDataError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidInstructionDataError';\n }\n}\n/** Thrown if an instruction's type is invalid */\nexport class TokenInvalidInstructionTypeError extends TokenError {\n constructor() {\n super(...arguments);\n this.name = 'TokenInvalidInstructionTypeError';\n }\n}\n//# sourceMappingURL=errors.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport { PublicKey, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from './../errors.mjs';\nimport { addSigners } from './internal.mjs';\nimport { TokenInstruction } from './types.mjs';\n/** Authority types defined by the program */\nexport var AuthorityType;\n(function (AuthorityType) {\n AuthorityType[AuthorityType[\"MintTokens\"] = 0] = \"MintTokens\";\n AuthorityType[AuthorityType[\"FreezeAccount\"] = 1] = \"FreezeAccount\";\n AuthorityType[AuthorityType[\"AccountOwner\"] = 2] = \"AccountOwner\";\n AuthorityType[AuthorityType[\"CloseAccount\"] = 3] = \"CloseAccount\";\n})(AuthorityType || (AuthorityType = {}));\n/** TODO: docs */\nexport const setAuthorityInstructionData = struct([\n u8('instruction'),\n u8('authorityType'),\n u8('newAuthorityOption'),\n publicKey('newAuthority'),\n]);\n/**\n * Construct a SetAuthority instruction\n *\n * @param account Address of the token account\n * @param currentAuthority Current authority of the specified type\n * @param authorityType Type of authority to set\n * @param newAuthority New authority of the account\n * @param multiSigners Signing accounts if `currentAuthority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createSetAuthorityInstruction(account, currentAuthority, authorityType, newAuthority, multiSigners = [], programId = TOKEN_PROGRAM_ID) {\n const keys = addSigners([{ pubkey: account, isSigner: false, isWritable: true }], currentAuthority, multiSigners);\n const data = Buffer.alloc(setAuthorityInstructionData.span);\n setAuthorityInstructionData.encode({\n instruction: TokenInstruction.SetAuthority,\n authorityType,\n newAuthorityOption: newAuthority ? 1 : 0,\n newAuthority: newAuthority || new PublicKey(0),\n }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n/**\n * Decode a SetAuthority instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeSetAuthorityInstruction(instruction, programId = TOKEN_PROGRAM_ID) {\n if (!instruction.programId.equals(programId))\n throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== setAuthorityInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n const { keys: { account, currentAuthority, multiSigners }, data, } = decodeSetAuthorityInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.SetAuthority)\n throw new TokenInvalidInstructionTypeError();\n if (!account || !currentAuthority)\n throw new TokenInvalidInstructionKeysError();\n // TODO: key checks?\n return {\n programId,\n keys: {\n account,\n currentAuthority,\n multiSigners,\n },\n data,\n };\n}\n/**\n * Decode a SetAuthority instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeSetAuthorityInstructionUnchecked({ programId, keys: [account, currentAuthority, ...multiSigners], data, }) {\n const { instruction, authorityType, newAuthorityOption, newAuthority } = setAuthorityInstructionData.decode(data);\n return {\n programId,\n keys: {\n account,\n currentAuthority,\n multiSigners,\n },\n data: {\n instruction,\n authorityType,\n newAuthority: newAuthorityOption ? newAuthority : null,\n },\n };\n}\n//# sourceMappingURL=setAuthority.js.map","import { struct, u32, u8 } from '@solana/buffer-layout';\nimport { publicKey, u64 } from '@solana/buffer-layout-utils';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenAccountNotFoundError, TokenInvalidAccountOwnerError, TokenInvalidAccountSizeError } from './../errors.mjs';\n/** Token account state as stored by the program */\nexport var AccountState;\n(function (AccountState) {\n AccountState[AccountState[\"Uninitialized\"] = 0] = \"Uninitialized\";\n AccountState[AccountState[\"Initialized\"] = 1] = \"Initialized\";\n AccountState[AccountState[\"Frozen\"] = 2] = \"Frozen\";\n})(AccountState || (AccountState = {}));\n/** Buffer layout for de/serializing a token account */\nexport const AccountLayout = struct([\n publicKey('mint'),\n publicKey('owner'),\n u64('amount'),\n u32('delegateOption'),\n publicKey('delegate'),\n u8('state'),\n u32('isNativeOption'),\n u64('isNative'),\n u64('delegatedAmount'),\n u32('closeAuthorityOption'),\n publicKey('closeAuthority'),\n]);\n/** Byte length of a token account */\nexport const ACCOUNT_SIZE = AccountLayout.span;\n/**\n * Retrieve information about a token account\n *\n * @param connection Connection to use\n * @param address Token account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Token account information\n */\nexport async function getAccount(connection, address, commitment, programId = TOKEN_PROGRAM_ID) {\n const info = await connection.getAccountInfo(address, commitment);\n if (!info)\n throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId))\n throw new TokenInvalidAccountOwnerError();\n if (info.data.length != ACCOUNT_SIZE)\n throw new TokenInvalidAccountSizeError();\n const rawAccount = AccountLayout.decode(info.data);\n return {\n address,\n mint: rawAccount.mint,\n owner: rawAccount.owner,\n amount: rawAccount.amount,\n delegate: rawAccount.delegateOption ? rawAccount.delegate : null,\n delegatedAmount: rawAccount.delegatedAmount,\n isInitialized: rawAccount.state !== AccountState.Uninitialized,\n isFrozen: rawAccount.state === AccountState.Frozen,\n isNative: !!rawAccount.isNativeOption,\n rentExemptReserve: rawAccount.isNativeOption ? rawAccount.isNative : null,\n closeAuthority: rawAccount.closeAuthorityOption ? rawAccount.closeAuthority : null,\n };\n}\n/** Get the minimum lamport balance for a token account to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptAccount(connection, commitment) {\n return await connection.getMinimumBalanceForRentExemption(ACCOUNT_SIZE, commitment);\n}\n//# sourceMappingURL=account.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { publicKey } from '@solana/buffer-layout-utils';\nimport { PublicKey, SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from './../errors.mjs';\nimport { TokenInstruction } from './types.mjs';\n/** TODO: docs */\nexport const initializeMintInstructionData = struct([\n u8('instruction'),\n u8('decimals'),\n publicKey('mintAuthority'),\n u8('freezeAuthorityOption'),\n publicKey('freezeAuthority'),\n]);\n/**\n * Construct an InitializeMint instruction\n *\n * @param mint Token mint account\n * @param decimals Number of decimals in token account amounts\n * @param mintAuthority Minting authority\n * @param freezeAuthority Optional authority that can freeze token accounts\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeMintInstruction(mint, decimals, mintAuthority, freezeAuthority, programId = TOKEN_PROGRAM_ID) {\n const keys = [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n const data = Buffer.alloc(initializeMintInstructionData.span);\n initializeMintInstructionData.encode({\n instruction: TokenInstruction.InitializeMint,\n decimals,\n mintAuthority,\n freezeAuthorityOption: freezeAuthority ? 1 : 0,\n freezeAuthority: freezeAuthority || new PublicKey(0),\n }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n/**\n * Decode an InitializeMint instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeMintInstruction(instruction, programId = TOKEN_PROGRAM_ID) {\n if (!instruction.programId.equals(programId))\n throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeMintInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n const { keys: { mint, rent }, data, } = decodeInitializeMintInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeMint)\n throw new TokenInvalidInstructionTypeError();\n if (!mint || !rent)\n throw new TokenInvalidInstructionKeysError();\n // TODO: key checks?\n return {\n programId,\n keys: {\n mint,\n rent,\n },\n data,\n };\n}\n/**\n * Decode an InitializeMint instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeMintInstructionUnchecked({ programId, keys: [mint, rent], data, }) {\n const { instruction, decimals, mintAuthority, freezeAuthorityOption, freezeAuthority } = initializeMintInstructionData.decode(data);\n return {\n programId,\n keys: {\n mint,\n rent,\n },\n data: {\n instruction,\n decimals,\n mintAuthority,\n freezeAuthority: freezeAuthorityOption ? freezeAuthority : null,\n },\n };\n}\n//# sourceMappingURL=initializeMint.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from './../errors.mjs';\nimport { TokenInstruction } from './types.mjs';\n/** TODO: docs */\nexport const initializeAccountInstructionData = struct([u8('instruction')]);\n/**\n * Construct an InitializeAccount instruction\n *\n * @param account New token account\n * @param mint Mint account\n * @param owner Owner of the new account\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeAccountInstruction(account, mint, owner, programId = TOKEN_PROGRAM_ID) {\n const keys = [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: owner, isSigner: false, isWritable: false },\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n const data = Buffer.alloc(initializeAccountInstructionData.span);\n initializeAccountInstructionData.encode({ instruction: TokenInstruction.InitializeAccount }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n/**\n * Decode an InitializeAccount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeAccountInstruction(instruction, programId = TOKEN_PROGRAM_ID) {\n if (!instruction.programId.equals(programId))\n throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeAccountInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n const { keys: { account, mint, owner, rent }, data, } = decodeInitializeAccountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeAccount)\n throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !owner || !rent)\n throw new TokenInvalidInstructionKeysError();\n // TODO: key checks?\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n rent,\n },\n data,\n };\n}\n/**\n * Decode an InitializeAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeAccountInstructionUnchecked({ programId, keys: [account, mint, owner, rent], data, }) {\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n rent,\n },\n data: initializeAccountInstructionData.decode(data),\n };\n}\n//# sourceMappingURL=initializeAccount.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from './../errors.mjs';\nimport { TokenInstruction } from './types.mjs';\n/** TODO: docs */\nexport const initializeMultisigInstructionData = struct([\n u8('instruction'),\n u8('m'),\n]);\n/**\n * Construct an InitializeMultisig instruction\n *\n * @param account Multisig account\n * @param signers Full set of signers\n * @param m Number of required signatures\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createInitializeMultisigInstruction(account, signers, m, programId = TOKEN_PROGRAM_ID) {\n const keys = [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n for (const signer of signers) {\n keys.push({ pubkey: signer, isSigner: false, isWritable: false });\n }\n const data = Buffer.alloc(initializeMultisigInstructionData.span);\n initializeMultisigInstructionData.encode({\n instruction: TokenInstruction.InitializeMultisig,\n m,\n }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n/**\n * Decode an InitializeMultisig instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeInitializeMultisigInstruction(instruction, programId = TOKEN_PROGRAM_ID) {\n if (!instruction.programId.equals(programId))\n throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== initializeMultisigInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n const { keys: { account, rent, signers }, data, } = decodeInitializeMultisigInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.InitializeMultisig)\n throw new TokenInvalidInstructionTypeError();\n if (!account || !rent || !signers.length)\n throw new TokenInvalidInstructionKeysError();\n // TODO: key checks?\n return {\n programId,\n keys: {\n account,\n rent,\n signers,\n },\n data,\n };\n}\n/**\n * Decode an InitializeMultisig instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeInitializeMultisigInstructionUnchecked({ programId, keys: [account, rent, ...signers], data, }) {\n return {\n programId,\n keys: {\n account,\n rent,\n signers,\n },\n data: initializeMultisigInstructionData.decode(data),\n };\n}\n//# sourceMappingURL=initializeMultisig.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from './../errors.mjs';\nimport { addSigners } from './internal.mjs';\nimport { TokenInstruction } from './types.mjs';\n/** TODO: docs */\nexport const transferInstructionData = struct([u8('instruction'), u64('amount')]);\n/**\n * Construct a Transfer instruction\n *\n * @param source Source account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param amount Number of tokens to transfer\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createTransferInstruction(source, destination, owner, amount, multiSigners = [], programId = TOKEN_PROGRAM_ID) {\n const keys = addSigners([\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ], owner, multiSigners);\n const data = Buffer.alloc(transferInstructionData.span);\n transferInstructionData.encode({\n instruction: TokenInstruction.Transfer,\n amount: BigInt(amount),\n }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n/**\n * Decode a Transfer instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeTransferInstruction(instruction, programId = TOKEN_PROGRAM_ID) {\n if (!instruction.programId.equals(programId))\n throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== transferInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n const { keys: { source, destination, owner, multiSigners }, data, } = decodeTransferInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.Transfer)\n throw new TokenInvalidInstructionTypeError();\n if (!source || !destination || !owner)\n throw new TokenInvalidInstructionKeysError();\n // TODO: key checks?\n return {\n programId,\n keys: {\n source,\n destination,\n owner,\n multiSigners,\n },\n data,\n };\n}\n/**\n * Decode a Transfer instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeTransferInstructionUnchecked({ programId, keys: [source, destination, owner, ...multiSigners], data, }) {\n return {\n programId,\n keys: {\n source,\n destination,\n owner,\n multiSigners,\n },\n data: transferInstructionData.decode(data),\n };\n}\n//# sourceMappingURL=transfer.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from './../errors.mjs';\nimport { addSigners } from './internal.mjs';\nimport { TokenInstruction } from './types.mjs';\n/** TODO: docs */\nexport const approveInstructionData = struct([u8('instruction'), u64('amount')]);\n/**\n * Construct an Approve instruction\n *\n * @param account Account to set the delegate for\n * @param delegate Account authorized to transfer tokens from the account\n * @param owner Owner of the account\n * @param amount Maximum number of tokens the delegate may transfer\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createApproveInstruction(account, delegate, owner, amount, multiSigners = [], programId = TOKEN_PROGRAM_ID) {\n const keys = addSigners([\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: delegate, isSigner: false, isWritable: false },\n ], owner, multiSigners);\n const data = Buffer.alloc(approveInstructionData.span);\n approveInstructionData.encode({\n instruction: TokenInstruction.Approve,\n amount: BigInt(amount),\n }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n/**\n * Decode an Approve instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeApproveInstruction(instruction, programId = TOKEN_PROGRAM_ID) {\n if (!instruction.programId.equals(programId))\n throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== approveInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n const { keys: { account, delegate, owner, multiSigners }, data, } = decodeApproveInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.Approve)\n throw new TokenInvalidInstructionTypeError();\n if (!account || !delegate || !owner)\n throw new TokenInvalidInstructionKeysError();\n // TODO: key checks?\n return {\n programId,\n keys: {\n account,\n delegate,\n owner,\n multiSigners,\n },\n data,\n };\n}\n/**\n * Decode an Approve instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeApproveInstructionUnchecked({ programId, keys: [account, delegate, owner, ...multiSigners], data, }) {\n return {\n programId,\n keys: {\n account,\n delegate,\n owner,\n multiSigners,\n },\n data: approveInstructionData.decode(data),\n };\n}\n//# sourceMappingURL=approve.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from './../errors.mjs';\nimport { addSigners } from './internal.mjs';\nimport { TokenInstruction } from './types.mjs';\n/** TODO: docs */\nexport const revokeInstructionData = struct([u8('instruction')]);\n/**\n * Construct a Revoke instruction\n *\n * @param account Address of the token account\n * @param owner Owner of the account\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createRevokeInstruction(account, owner, multiSigners = [], programId = TOKEN_PROGRAM_ID) {\n const keys = addSigners([{ pubkey: account, isSigner: false, isWritable: true }], owner, multiSigners);\n const data = Buffer.alloc(revokeInstructionData.span);\n revokeInstructionData.encode({ instruction: TokenInstruction.Revoke }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n/**\n * Decode a Revoke instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeRevokeInstruction(instruction, programId = TOKEN_PROGRAM_ID) {\n if (!instruction.programId.equals(programId))\n throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== revokeInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n const { keys: { account, owner, multiSigners }, data, } = decodeRevokeInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.Revoke)\n throw new TokenInvalidInstructionTypeError();\n if (!account || !owner)\n throw new TokenInvalidInstructionKeysError();\n // TODO: key checks?\n return {\n programId,\n keys: {\n account,\n owner,\n multiSigners,\n },\n data,\n };\n}\n/**\n * Decode a Revoke instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeRevokeInstructionUnchecked({ programId, keys: [account, owner, ...multiSigners], data, }) {\n return {\n programId,\n keys: {\n account,\n owner,\n multiSigners,\n },\n data: revokeInstructionData.decode(data),\n };\n}\n//# sourceMappingURL=revoke.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from './../errors.mjs';\nimport { addSigners } from './internal.mjs';\nimport { TokenInstruction } from './types.mjs';\n/** TODO: docs */\nexport const mintToInstructionData = struct([u8('instruction'), u64('amount')]);\n/**\n * Construct a MintTo instruction\n *\n * @param mint Public key of the mint\n * @param destination Address of the token account to mint to\n * @param authority The mint authority\n * @param amount Amount to mint\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createMintToInstruction(mint, destination, authority, amount, multiSigners = [], programId = TOKEN_PROGRAM_ID) {\n const keys = addSigners([\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ], authority, multiSigners);\n const data = Buffer.alloc(mintToInstructionData.span);\n mintToInstructionData.encode({\n instruction: TokenInstruction.MintTo,\n amount: BigInt(amount),\n }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n/**\n * Decode a MintTo instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeMintToInstruction(instruction, programId = TOKEN_PROGRAM_ID) {\n if (!instruction.programId.equals(programId))\n throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== mintToInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n const { keys: { mint, destination, authority, multiSigners }, data, } = decodeMintToInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.MintTo)\n throw new TokenInvalidInstructionTypeError();\n if (!mint || !destination || !authority)\n throw new TokenInvalidInstructionKeysError();\n // TODO: key checks?\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n multiSigners,\n },\n data,\n };\n}\n/**\n * Decode a MintTo instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeMintToInstructionUnchecked({ programId, keys: [mint, destination, authority, ...multiSigners], data, }) {\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n multiSigners,\n },\n data: mintToInstructionData.decode(data),\n };\n}\n//# sourceMappingURL=mintTo.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from './../errors.mjs';\nimport { addSigners } from './internal.mjs';\nimport { TokenInstruction } from './types.mjs';\n/** TODO: docs */\nexport const burnInstructionData = struct([u8('instruction'), u64('amount')]);\n/**\n * Construct a Burn instruction\n *\n * @param account Account to burn tokens from\n * @param mint Mint for the account\n * @param owner Owner of the account\n * @param amount Number of tokens to burn\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createBurnInstruction(account, mint, owner, amount, multiSigners = [], programId = TOKEN_PROGRAM_ID) {\n const keys = addSigners([\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: true },\n ], owner, multiSigners);\n const data = Buffer.alloc(burnInstructionData.span);\n burnInstructionData.encode({\n instruction: TokenInstruction.Burn,\n amount: BigInt(amount),\n }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n/**\n * Decode a Burn instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeBurnInstruction(instruction, programId = TOKEN_PROGRAM_ID) {\n if (!instruction.programId.equals(programId))\n throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== burnInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n const { keys: { account, mint, owner, multiSigners }, data, } = decodeBurnInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.Burn)\n throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !owner)\n throw new TokenInvalidInstructionKeysError();\n // TODO: key checks?\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n multiSigners,\n },\n data,\n };\n}\n/**\n * Decode a Burn instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeBurnInstructionUnchecked({ programId, keys: [account, mint, owner, ...multiSigners], data, }) {\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n multiSigners,\n },\n data: burnInstructionData.decode(data),\n };\n}\n//# sourceMappingURL=burn.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from './../errors.mjs';\nimport { addSigners } from './internal.mjs';\nimport { TokenInstruction } from './types.mjs';\n/** TODO: docs */\nexport const closeAccountInstructionData = struct([u8('instruction')]);\n/**\n * Construct a CloseAccount instruction\n *\n * @param account Account to close\n * @param destination Account to receive the remaining balance of the closed account\n * @param authority Account close authority\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createCloseAccountInstruction(account, destination, authority, multiSigners = [], programId = TOKEN_PROGRAM_ID) {\n const keys = addSigners([\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ], authority, multiSigners);\n const data = Buffer.alloc(closeAccountInstructionData.span);\n closeAccountInstructionData.encode({ instruction: TokenInstruction.CloseAccount }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n/**\n * Decode a CloseAccount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeCloseAccountInstruction(instruction, programId = TOKEN_PROGRAM_ID) {\n if (!instruction.programId.equals(programId))\n throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== closeAccountInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n const { keys: { account, destination, authority, multiSigners }, data, } = decodeCloseAccountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.CloseAccount)\n throw new TokenInvalidInstructionTypeError();\n if (!account || !destination || !authority)\n throw new TokenInvalidInstructionKeysError();\n // TODO: key checks?\n return {\n programId,\n keys: {\n account,\n destination,\n authority,\n multiSigners,\n },\n data,\n };\n}\n/**\n * Decode a CloseAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeCloseAccountInstructionUnchecked({ programId, keys: [account, destination, authority, ...multiSigners], data, }) {\n return {\n programId,\n keys: {\n account,\n destination,\n authority,\n multiSigners,\n },\n data: closeAccountInstructionData.decode(data),\n };\n}\n//# sourceMappingURL=closeAccount.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from './../errors.mjs';\nimport { addSigners } from './internal.mjs';\nimport { TokenInstruction } from './types.mjs';\n/** TODO: docs */\nexport const freezeAccountInstructionData = struct([u8('instruction')]);\n/**\n * Construct a FreezeAccount instruction\n *\n * @param account Account to freeze\n * @param mint Mint account\n * @param authority Mint freeze authority\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createFreezeAccountInstruction(account, mint, authority, multiSigners = [], programId = TOKEN_PROGRAM_ID) {\n const keys = addSigners([\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n ], authority, multiSigners);\n const data = Buffer.alloc(freezeAccountInstructionData.span);\n freezeAccountInstructionData.encode({ instruction: TokenInstruction.FreezeAccount }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n/**\n * Decode a FreezeAccount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeFreezeAccountInstruction(instruction, programId = TOKEN_PROGRAM_ID) {\n if (!instruction.programId.equals(programId))\n throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== freezeAccountInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n const { keys: { account, mint, authority, multiSigners }, data, } = decodeFreezeAccountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.FreezeAccount)\n throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !authority)\n throw new TokenInvalidInstructionKeysError();\n // TODO: key checks?\n return {\n programId,\n keys: {\n account,\n mint,\n authority,\n multiSigners,\n },\n data,\n };\n}\n/**\n * Decode a FreezeAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeFreezeAccountInstructionUnchecked({ programId, keys: [account, mint, authority, ...multiSigners], data, }) {\n return {\n programId,\n keys: {\n account,\n mint,\n authority,\n multiSigners,\n },\n data: freezeAccountInstructionData.decode(data),\n };\n}\n//# sourceMappingURL=freezeAccount.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from './../errors.mjs';\nimport { addSigners } from './internal.mjs';\nimport { TokenInstruction } from './types.mjs';\n/** TODO: docs */\nexport const thawAccountInstructionData = struct([u8('instruction')]);\n/**\n * Construct a ThawAccount instruction\n *\n * @param account Account to thaw\n * @param mint Mint account\n * @param authority Mint freeze authority\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createThawAccountInstruction(account, mint, authority, multiSigners = [], programId = TOKEN_PROGRAM_ID) {\n const keys = addSigners([\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n ], authority, multiSigners);\n const data = Buffer.alloc(thawAccountInstructionData.span);\n thawAccountInstructionData.encode({ instruction: TokenInstruction.ThawAccount }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n/**\n * Decode a ThawAccount instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeThawAccountInstruction(instruction, programId = TOKEN_PROGRAM_ID) {\n if (!instruction.programId.equals(programId))\n throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== thawAccountInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n const { keys: { account, mint, authority, multiSigners }, data, } = decodeThawAccountInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.ThawAccount)\n throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !authority)\n throw new TokenInvalidInstructionKeysError();\n // TODO: key checks?\n return {\n programId,\n keys: {\n account,\n mint,\n authority,\n multiSigners,\n },\n data,\n };\n}\n/**\n * Decode a ThawAccount instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeThawAccountInstructionUnchecked({ programId, keys: [account, mint, authority, ...multiSigners], data, }) {\n return {\n programId,\n keys: {\n account,\n mint,\n authority,\n multiSigners,\n },\n data: thawAccountInstructionData.decode(data),\n };\n}\n//# sourceMappingURL=thawAccount.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from './../errors.mjs';\nimport { addSigners } from './internal.mjs';\nimport { TokenInstruction } from './types.mjs';\n/** TODO: docs */\nexport const transferCheckedInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n u8('decimals'),\n]);\n/**\n * Construct a TransferChecked instruction\n *\n * @param source Source account\n * @param mint Mint account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param amount Number of tokens to transfer\n * @param decimals Number of decimals in transfer amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createTransferCheckedInstruction(source, mint, destination, owner, amount, decimals, multiSigners = [], programId = TOKEN_PROGRAM_ID) {\n const keys = addSigners([\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: destination, isSigner: false, isWritable: true },\n ], owner, multiSigners);\n const data = Buffer.alloc(transferCheckedInstructionData.span);\n transferCheckedInstructionData.encode({\n instruction: TokenInstruction.TransferChecked,\n amount: BigInt(amount),\n decimals,\n }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n/**\n * Decode a TransferChecked instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeTransferCheckedInstruction(instruction, programId = TOKEN_PROGRAM_ID) {\n if (!instruction.programId.equals(programId))\n throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== transferCheckedInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n const { keys: { source, mint, destination, owner, multiSigners }, data, } = decodeTransferCheckedInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.TransferChecked)\n throw new TokenInvalidInstructionTypeError();\n if (!source || !mint || !destination || !owner)\n throw new TokenInvalidInstructionKeysError();\n // TODO: key checks?\n return {\n programId,\n keys: {\n source,\n mint,\n destination,\n owner,\n multiSigners,\n },\n data,\n };\n}\n/**\n * Decode a TransferChecked instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeTransferCheckedInstructionUnchecked({ programId, keys: [source, mint, destination, owner, ...multiSigners], data, }) {\n return {\n programId,\n keys: {\n source,\n mint,\n destination,\n owner,\n multiSigners,\n },\n data: transferCheckedInstructionData.decode(data),\n };\n}\n//# sourceMappingURL=transferChecked.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from './../errors.mjs';\nimport { addSigners } from './internal.mjs';\nimport { TokenInstruction } from './types.mjs';\n/** TODO: docs */\nexport const approveCheckedInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n u8('decimals'),\n]);\n/**\n * Construct an ApproveChecked instruction\n *\n * @param account Account to set the delegate for\n * @param mint Mint account\n * @param delegate Account authorized to transfer of tokens from the account\n * @param owner Owner of the account\n * @param amount Maximum number of tokens the delegate may transfer\n * @param decimals Number of decimals in approve amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createApproveCheckedInstruction(account, mint, delegate, owner, amount, decimals, multiSigners = [], programId = TOKEN_PROGRAM_ID) {\n const keys = addSigners([\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: delegate, isSigner: false, isWritable: false },\n ], owner, multiSigners);\n const data = Buffer.alloc(approveCheckedInstructionData.span);\n approveCheckedInstructionData.encode({\n instruction: TokenInstruction.ApproveChecked,\n amount: BigInt(amount),\n decimals,\n }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n/**\n * Decode an ApproveChecked instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeApproveCheckedInstruction(instruction, programId = TOKEN_PROGRAM_ID) {\n if (!instruction.programId.equals(programId))\n throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== approveCheckedInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n const { keys: { account, mint, delegate, owner, multiSigners }, data, } = decodeApproveCheckedInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.ApproveChecked)\n throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !delegate || !owner)\n throw new TokenInvalidInstructionKeysError();\n // TODO: key checks?\n return {\n programId,\n keys: {\n account,\n mint,\n delegate,\n owner,\n multiSigners,\n },\n data,\n };\n}\n/**\n * Decode an ApproveChecked instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeApproveCheckedInstructionUnchecked({ programId, keys: [account, mint, delegate, owner, ...multiSigners], data, }) {\n return {\n programId,\n keys: {\n account,\n mint,\n delegate,\n owner,\n multiSigners,\n },\n data: approveCheckedInstructionData.decode(data),\n };\n}\n//# sourceMappingURL=approveChecked.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from './../errors.mjs';\nimport { addSigners } from './internal.mjs';\nimport { TokenInstruction } from './types.mjs';\n/** TODO: docs */\nexport const mintToCheckedInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n u8('decimals'),\n]);\n/**\n * Construct a MintToChecked instruction\n *\n * @param mint Public key of the mint\n * @param destination Address of the token account to mint to\n * @param authority The mint authority\n * @param amount Amount to mint\n * @param decimals Number of decimals in amount to mint\n * @param multiSigners Signing accounts if `authority` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createMintToCheckedInstruction(mint, destination, authority, amount, decimals, multiSigners = [], programId = TOKEN_PROGRAM_ID) {\n const keys = addSigners([\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n ], authority, multiSigners);\n const data = Buffer.alloc(mintToCheckedInstructionData.span);\n mintToCheckedInstructionData.encode({\n instruction: TokenInstruction.MintToChecked,\n amount: BigInt(amount),\n decimals,\n }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n/**\n * Decode a MintToChecked instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeMintToCheckedInstruction(instruction, programId = TOKEN_PROGRAM_ID) {\n if (!instruction.programId.equals(programId))\n throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== mintToCheckedInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n const { keys: { mint, destination, authority, multiSigners }, data, } = decodeMintToCheckedInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.MintToChecked)\n throw new TokenInvalidInstructionTypeError();\n if (!mint || !destination || !authority)\n throw new TokenInvalidInstructionKeysError();\n // TODO: key checks?\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n multiSigners,\n },\n data,\n };\n}\n/**\n * Decode a MintToChecked instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeMintToCheckedInstructionUnchecked({ programId, keys: [mint, destination, authority, ...multiSigners], data, }) {\n return {\n programId,\n keys: {\n mint,\n destination,\n authority,\n multiSigners,\n },\n data: mintToCheckedInstructionData.decode(data),\n };\n}\n//# sourceMappingURL=mintToChecked.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { u64 } from '@solana/buffer-layout-utils';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from './../errors.mjs';\nimport { addSigners } from './internal.mjs';\nimport { TokenInstruction } from './types.mjs';\n/** TODO: docs */\nexport const burnCheckedInstructionData = struct([\n u8('instruction'),\n u64('amount'),\n u8('decimals'),\n]);\n/**\n * Construct a BurnChecked instruction\n *\n * @param mint Mint for the account\n * @param account Account to burn tokens from\n * @param owner Owner of the account\n * @param amount Number of tokens to burn\n * @param decimals Number of decimals in burn amount\n * @param multiSigners Signing accounts if `owner` is a multisig\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createBurnCheckedInstruction(account, mint, owner, amount, decimals, multiSigners = [], programId = TOKEN_PROGRAM_ID) {\n const keys = addSigners([\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: true },\n ], owner, multiSigners);\n const data = Buffer.alloc(burnCheckedInstructionData.span);\n burnCheckedInstructionData.encode({\n instruction: TokenInstruction.BurnChecked,\n amount: BigInt(amount),\n decimals,\n }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n/**\n * Decode a BurnChecked instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeBurnCheckedInstruction(instruction, programId = TOKEN_PROGRAM_ID) {\n if (!instruction.programId.equals(programId))\n throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== burnCheckedInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n const { keys: { account, mint, owner, multiSigners }, data, } = decodeBurnCheckedInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.BurnChecked)\n throw new TokenInvalidInstructionTypeError();\n if (!account || !mint || !owner)\n throw new TokenInvalidInstructionKeysError();\n // TODO: key checks?\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n multiSigners,\n },\n data,\n };\n}\n/**\n * Decode a BurnChecked instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeBurnCheckedInstructionUnchecked({ programId, keys: [account, mint, owner, ...multiSigners], data, }) {\n return {\n programId,\n keys: {\n account,\n mint,\n owner,\n multiSigners,\n },\n data: burnCheckedInstructionData.decode(data),\n };\n}\n//# sourceMappingURL=burnChecked.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { TransactionInstruction } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenInvalidInstructionDataError, TokenInvalidInstructionKeysError, TokenInvalidInstructionProgramError, TokenInvalidInstructionTypeError, } from './../errors.mjs';\nimport { TokenInstruction } from './types.mjs';\n/** TODO: docs */\nexport const syncNativeInstructionData = struct([u8('instruction')]);\n/**\n * Construct a SyncNative instruction\n *\n * @param account Native account to sync lamports from\n * @param programId SPL Token program account\n *\n * @return Instruction to add to a transaction\n */\nexport function createSyncNativeInstruction(account, programId = TOKEN_PROGRAM_ID) {\n const keys = [{ pubkey: account, isSigner: false, isWritable: true }];\n const data = Buffer.alloc(syncNativeInstructionData.span);\n syncNativeInstructionData.encode({ instruction: TokenInstruction.SyncNative }, data);\n return new TransactionInstruction({ keys, programId, data });\n}\n/**\n * Decode a SyncNative instruction and validate it\n *\n * @param instruction Transaction instruction to decode\n * @param programId SPL Token program account\n *\n * @return Decoded, valid instruction\n */\nexport function decodeSyncNativeInstruction(instruction, programId = TOKEN_PROGRAM_ID) {\n if (!instruction.programId.equals(programId))\n throw new TokenInvalidInstructionProgramError();\n if (instruction.data.length !== syncNativeInstructionData.span)\n throw new TokenInvalidInstructionDataError();\n const { keys: { account }, data, } = decodeSyncNativeInstructionUnchecked(instruction);\n if (data.instruction !== TokenInstruction.SyncNative)\n throw new TokenInvalidInstructionTypeError();\n if (!account)\n throw new TokenInvalidInstructionKeysError();\n // TODO: key checks?\n return {\n programId,\n keys: {\n account,\n },\n data,\n };\n}\n/**\n * Decode a SyncNative instruction without validating it\n *\n * @param instruction Transaction instruction to decode\n *\n * @return Decoded, non-validated instruction\n */\nexport function decodeSyncNativeInstructionUnchecked({ programId, keys: [account], data, }) {\n return {\n programId,\n keys: {\n account,\n },\n data: syncNativeInstructionData.decode(data),\n };\n}\n//# sourceMappingURL=syncNative.js.map","import { struct, u32, u8 } from '@solana/buffer-layout';\nimport { bool, publicKey, u64 } from '@solana/buffer-layout-utils';\nimport { PublicKey } from '@solana/web3.js';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenAccountNotFoundError, TokenInvalidAccountOwnerError, TokenInvalidAccountSizeError, TokenOwnerOffCurveError, } from './../errors.mjs';\n/** Buffer layout for de/serializing a mint */\nexport const MintLayout = struct([\n u32('mintAuthorityOption'),\n publicKey('mintAuthority'),\n u64('supply'),\n u8('decimals'),\n bool('isInitialized'),\n u32('freezeAuthorityOption'),\n publicKey('freezeAuthority'),\n]);\n/** Byte length of a mint */\nexport const MINT_SIZE = MintLayout.span;\n/**\n * Retrieve information about a mint\n *\n * @param connection Connection to use\n * @param address Mint account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Mint information\n */\nexport async function getMint(connection, address, commitment, programId = TOKEN_PROGRAM_ID) {\n const info = await connection.getAccountInfo(address, commitment);\n if (!info)\n throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId))\n throw new TokenInvalidAccountOwnerError();\n if (info.data.length != MINT_SIZE)\n throw new TokenInvalidAccountSizeError();\n const rawMint = MintLayout.decode(info.data);\n return {\n address,\n mintAuthority: rawMint.mintAuthorityOption ? rawMint.mintAuthority : null,\n supply: rawMint.supply,\n decimals: rawMint.decimals,\n isInitialized: rawMint.isInitialized,\n freezeAuthority: rawMint.freezeAuthorityOption ? rawMint.freezeAuthority : null,\n };\n}\n/** Get the minimum lamport balance for a mint to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptMint(connection, commitment) {\n return await connection.getMinimumBalanceForRentExemption(MINT_SIZE, commitment);\n}\n/**\n * Get the address of the associated token account for a given mint and owner\n *\n * @param mint Token mint account\n * @param owner Owner of the new account\n * @param allowOwnerOffCurve Allow the owner account to be a PDA (Program Derived Address)\n * @param programId SPL Token program account\n * @param associatedTokenProgramId SPL Associated Token program account\n *\n * @return Address of the associated token account\n */\nexport async function getAssociatedTokenAddress(mint, owner, allowOwnerOffCurve = false, programId = TOKEN_PROGRAM_ID, associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID) {\n if (!allowOwnerOffCurve && !PublicKey.isOnCurve(owner.toBuffer()))\n throw new TokenOwnerOffCurveError();\n const [address] = await PublicKey.findProgramAddress([owner.toBuffer(), programId.toBuffer(), mint.toBuffer()], associatedTokenProgramId);\n return address;\n}\n//# sourceMappingURL=mint.js.map","import { struct, u8 } from '@solana/buffer-layout';\nimport { bool, publicKey } from '@solana/buffer-layout-utils';\nimport { TOKEN_PROGRAM_ID } from './../constants.mjs';\nimport { TokenAccountNotFoundError, TokenInvalidAccountOwnerError, TokenInvalidAccountSizeError } from './../errors.mjs';\n/** Buffer layout for de/serializing a multisig */\nexport const MultisigLayout = struct([\n u8('m'),\n u8('n'),\n bool('isInitialized'),\n publicKey('signer1'),\n publicKey('signer2'),\n publicKey('signer3'),\n publicKey('signer4'),\n publicKey('signer5'),\n publicKey('signer6'),\n publicKey('signer7'),\n publicKey('signer8'),\n publicKey('signer9'),\n publicKey('signer10'),\n publicKey('signer11'),\n]);\n/** Byte length of a multisig */\nexport const MULTISIG_SIZE = MultisigLayout.span;\n/**\n * Retrieve information about a multisig\n *\n * @param connection Connection to use\n * @param address Multisig account\n * @param commitment Desired level of commitment for querying the state\n * @param programId SPL Token program account\n *\n * @return Multisig information\n */\nexport async function getMultisig(connection, address, commitment, programId = TOKEN_PROGRAM_ID) {\n const info = await connection.getAccountInfo(address, commitment);\n if (!info)\n throw new TokenAccountNotFoundError();\n if (!info.owner.equals(programId))\n throw new TokenInvalidAccountOwnerError();\n if (info.data.length != MULTISIG_SIZE)\n throw new TokenInvalidAccountSizeError();\n return { address, ...MultisigLayout.decode(info.data) };\n}\n/** Get the minimum lamport balance for a multisig to be rent exempt\n *\n * @param connection Connection to use\n * @param commitment Desired level of commitment for querying the state\n *\n * @return Amount of lamports required\n */\nexport async function getMinimumBalanceForRentExemptMultisig(connection, commitment) {\n return await connection.getMinimumBalanceForRentExemption(MULTISIG_SIZE, commitment);\n}\n//# sourceMappingURL=multisig.js.map","var __defProp = Object.defineProperty;\nvar __export = (target, all) => {\n for (var name3 in all)\n __defProp(target, name3, { get: all[name3], enumerable: true });\n};\n\n// src/layouts/controller.ts\nimport * as lo from \"@solana/buffer-layout\";\nimport { publicKey, u64 } from \"@solana/buffer-layout-utils\";\nvar CONTROLLER_LAYOUT = lo.struct([\n lo.blob(8, \"sighash\"),\n lo.blob(32, \"seed\"),\n lo.u8(\"bump\"),\n publicKey(\"admin\"),\n lo.u8(\"suspended\"),\n lo.u8(\"decimals\"),\n publicKey(\"mint\"),\n lo.blob(5, \"padding\"),\n u64(\"dailyReward\"),\n u64(\"totalStakingShare\"),\n u64(\"stakingBalance\"),\n u64(\"lastDistributionTime\"),\n lo.u16(\"withdrawFee\"),\n lo.blob(254, \"padding\")\n]);\nif (CONTROLLER_LAYOUT.span != 392 + 8) {\n throw new Error(\"CONTROLLER LAYOUT SIZE MISMATCH\");\n}\n\n// src/layouts/liquidityAccount.ts\nimport * as lo2 from \"@solana/buffer-layout\";\nimport { publicKey as publicKey2, u64 as u642 } from \"@solana/buffer-layout-utils\";\nvar LIQUIDITY_ACCOUNT_LAYOUT = lo2.struct([\n lo2.blob(8, \"sighash\"),\n publicKey2(\"mint\"),\n lo2.u8(\"bump\"),\n lo2.blob(7),\n u642(\"share\"),\n u642(\"ptMinted\"),\n u642(\"amountDeposited\"),\n lo2.blob(248, \"padding\")\n]);\nif (LIQUIDITY_ACCOUNT_LAYOUT.span != 312 + 8) {\n throw new Error(\"LIQUIDITY_ACCOUNT LAYOUT SIZE MISMATCH\");\n}\n\n// src/layouts/pair.ts\nimport * as lo3 from \"@solana/buffer-layout\";\nimport { publicKey as publicKey3, u64 as u643, u128, bool } from \"@solana/buffer-layout-utils\";\nvar ORACLE_ELEMENT_LAYOUT = lo3.struct([\n publicKey3(\"address\"),\n bool(\"inverse\")\n]);\nvar ORACLE_LAYOUT = lo3.struct([\n lo3.seq(ORACLE_ELEMENT_LAYOUT, 4, \"elements\"),\n lo3.blob(4, \"padding\"),\n u643(\"n\"),\n lo3.blob(8 * 8)\n]);\nvar PAIR_LAYOUT = lo3.struct([\n lo3.blob(8, \"sighash\"),\n publicKey3(\"controller\"),\n lo3.seq(publicKey3(\"mint\"), 2, \"mints\"),\n lo3.blob(8),\n lo3.seq(ORACLE_LAYOUT, 5, \"oracles\"),\n u643(\"nOracle\"),\n lo3.u8(\"A\"),\n lo3.seq(lo3.u8(), 2, \"feeRates\"),\n lo3.blob(5),\n u643(\"maxDelay\"),\n u643(\"confidence\"),\n publicKey3(\"balancer\"),\n lo3.u16(\"excessiveConfiscateRate\"),\n publicKey3(\"feeCollector\"),\n lo3.seq(lo3.u16(), 2, \"platformFeeRate\"),\n lo3.blob(18),\n lo3.seq(u128(\"volumes\"), 2, \"volumes\"),\n lo3.blob(80),\n bool(\"enableRebalanceSwap\"),\n lo3.blob(151, \"padding\")\n]);\nif (PAIR_LAYOUT.span != 1528 + 8) {\n throw new Error(\"PAIR LAYOUT SIZE MISMATCH\");\n}\n\n// src/layouts/ssl.ts\nimport * as lo4 from \"@solana/buffer-layout\";\nimport { publicKey as publicKey4, u64 as u644, bool as bool2 } from \"@solana/buffer-layout-utils\";\nvar SSL_LAYOUT = lo4.struct([\n lo4.blob(8, \"sighash\"),\n publicKey4(\"controller\"),\n publicKey4(\"mint\"),\n lo4.u8(\"decimals\"),\n lo4.u8(\"bump\"),\n lo4.u8(\"ptBump\"),\n bool2(\"suspended\"),\n publicKey4(\"cranker\"),\n lo4.blob(4),\n u644(\"weight\"),\n lo4.blob(8),\n u644(\"swappedLiabilityNative\"),\n u644(\"totalShare\"),\n lo4.blob(256, \"padding\")\n]);\nif (SSL_LAYOUT.span != 392 + 8) {\n throw new Error(`SSL LAYOUT SIZE MISMATCH\", ${SSL_LAYOUT.span}, ${SSL_LAYOUT.span - 8}`);\n}\n\n// src/layouts/stakingAccount.ts\nimport * as lo5 from \"@solana/buffer-layout\";\nimport { publicKey as publicKey5, u64 as u645 } from \"@solana/buffer-layout-utils\";\nvar STAKING_ACCOUNT_LAYOUT = lo5.struct([\n lo5.blob(8, \"sighash\"),\n publicKey5(\"controller\"),\n lo5.u8(\"bump\"),\n lo5.blob(7),\n u645(\"share\"),\n u645(\"amountStaked\"),\n lo5.blob(256, \"padding\")\n]);\nif (STAKING_ACCOUNT_LAYOUT.span != 312 + 8) {\n throw new Error(\"STAKING_ACCOUNT LAYOUT SIZE MISMATCH\");\n}\n\n// src/public/swap.ts\nimport { Program as Program2, Provider, BN as BN2 } from \"@project-serum/anchor\";\nimport {\n TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID3,\n NATIVE_MINT,\n createAssociatedTokenAccountInstruction\n} from \"@solana/spl-token\";\nimport {\n ComputeBudgetProgram,\n PublicKey as PublicKey4\n} from \"@solana/web3.js\";\nimport { Buffer as Buffer2 } from \"buffer\";\n\n// src/constants/swap.ts\nimport { PublicKey } from \"@solana/web3.js\";\nvar ADDRESSES = {\n MAINNET: {\n CONTROLLER_PROGRAM_ID: new PublicKey(\"8KJx48PYGHVC9fxzRRtYp4x4CM2HyYCm2EjVuAP4vvrx\"),\n SSL_PROGRAM_ID: new PublicKey(\"7WduLbRfYhTJktjLw5FDEyrqoEv61aTTCuGAetgLjzN5\"),\n GFX_CONTROLLER: new PublicKey(\"8CxKnuJeoeQXFwiG6XiGY2akBjvJA5k3bE52BfnuEmNQ\")\n },\n DEVNET: {\n CONTROLLER_PROGRAM_ID: new PublicKey(\"3Gwyhoudx8XgYry8dzKQ2GGsofkUdm7VZUvddHxchL3x\"),\n SSL_PROGRAM_ID: new PublicKey(\"JYe7AcuQ7CqhkGvchJGvSKF8ei41FuDKb1h47qkbFNf\"),\n GFX_CONTROLLER: new PublicKey(\"ApkmzBaTPUAeVj3QuqDcz6iLE6xZSLd29nke4McqrKw5\")\n }\n};\n\n// src/idl/gfx_ssl_idl.json\nvar gfx_ssl_idl_exports = {};\n__export(gfx_ssl_idl_exports, {\n accounts: () => accounts,\n default: () => gfx_ssl_idl_default,\n errors: () => errors,\n instructions: () => instructions,\n name: () => name,\n version: () => version\n});\nvar version = \"0.1.0\";\nvar name = \"contract\";\nvar instructions = [\n {\n name: \"createLiquidityAccount\",\n accounts: [\n {\n name: \"controller\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"ssl\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liquidityAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userWallet\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"deposit\",\n accounts: [\n {\n name: \"controller\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"ssl\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liquidityAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"rtVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userRtAta\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userWallet\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"withdraw\",\n accounts: [\n {\n name: \"controller\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"ssl\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liquidityAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"rtVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userRtAta\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userWallet\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"withdrawPercent\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"mintPt\",\n accounts: [\n {\n name: \"controller\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"ssl\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"rtVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liquidityAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"ptMint\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userPtAta\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userWallet\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"amountToMint\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"burnPt\",\n accounts: [\n {\n name: \"controller\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"ssl\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liquidityAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"ptMint\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userPtAta\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userWallet\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"amountToBurn\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"swap\",\n accounts: [\n {\n name: \"controller\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"pair\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"sslIn\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"sslOut\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liabilityVaultIn\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"swappedLiabilityVaultIn\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liabilityVaultOut\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"swappedLiabilityVaultOut\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userInAta\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userOutAta\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"feeCollectorAta\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userWallet\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"feeCollector\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"amountIn\",\n type: \"u64\"\n },\n {\n name: \"minOut\",\n type: \"u64\"\n }\n ]\n }\n];\nvar accounts = [];\nvar errors = [\n {\n code: 6e3,\n name: \"Suspended\",\n msg: \"[G100] The pool is suspended\"\n },\n {\n code: 6001,\n name: \"NotAdmin\",\n msg: \"[G101] Not admin\"\n },\n {\n code: 6002,\n name: \"MintsNotSorted\",\n msg: \"[G102] Mints are not sorted\"\n },\n {\n code: 6003,\n name: \"WrongRTMint\",\n msg: \"[G103] The risk token mint is wrong\"\n },\n {\n code: 6004,\n name: \"OracleNotPresent\",\n msg: \"[G104] The required oracle is not present\"\n },\n {\n code: 6005,\n name: \"OracleNotHealthyStatus\",\n msg: \"[G105] The oracle is not in a healthy state (status)\"\n },\n {\n code: 6006,\n name: \"OracleNotHealthyDelay\",\n msg: \"[G106] The oracle is not in a healthy state (delay)\"\n },\n {\n code: 6007,\n name: \"OracleNotHealthyConfidence\",\n msg: \"[G107] The oracle is not in a healthy state (confidence)\"\n },\n {\n code: 6008,\n name: \"SlippageTooLarge\",\n msg: \"[G108] SlippageTooLarge\"\n },\n {\n code: 6009,\n name: \"PercentageOutOfRange\",\n msg: \"[G109] Percentage out of range\"\n },\n {\n code: 6010,\n name: \"SwapIXNotInOrder\",\n msg: \"[G110] Swap instruction is not executed in order\"\n },\n {\n code: 6011,\n name: \"MintNotMatchPair\",\n msg: \"[G111] Mint does not match the pair\"\n },\n {\n code: 6012,\n name: \"FeeCollectorIncorrect\",\n msg: \"[G112] Fee collector account incorrect\"\n }\n];\nvar gfx_ssl_idl_default = {\n version,\n name,\n instructions,\n accounts,\n errors\n};\n\n// src/public/utils.ts\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from \"@solana/spl-token\";\nimport { PublicKey as PublicKey2 } from \"@solana/web3.js\";\nfunction findAssociatedTokenAddress(walletAddress, tokenMintAddress) {\n return PublicKey2.findProgramAddressSync(\n [\n walletAddress.toBuffer(),\n TOKEN_PROGRAM_ID.toBuffer(),\n tokenMintAddress.toBuffer()\n ],\n ASSOCIATED_TOKEN_PROGRAM_ID\n )[0];\n}\n\n// src/wasm/gfx_ssl_wasm_data.js\nvar data = \"AGFzbQEAAAABxYOAgAA6YAAAYAABf2ABfwBgAX8Bf2ABfwF+YAF/AXxgAn9/AGACf38Bf2ACf38BfmADf39/AGADf39/AX9gBH9/f38AYAR/f39/AX9gBX9/f39/AGAFf39/f38Bf2AGf39/f39/AGAGf39/f39/AX9gB39/f39/f38AYAd/f39/f39/AX9gCX9/f39/f39/fwBgDX9/f39/f39+fn5+f34AYAd/f39/f39+AGAHf39/f39/fgF/YAl/f39/f39+fn8AYAl/f39/f39+fn4AYAd/f39/f35/AGAIf39/f39+fn8Bf2AFf39/f34AYAZ/f39/fn8Bf2AKf39/f35+fn5/fgBgBH9/f34AYAR/f39+AX9gBn9/f35+fwBgA39/fgBgA39/fgF/YAV/f35+fwF/YAV/f31/fwBgBX9/fH9/AGACf34AYAJ/fgF/YAN/fn8AYAh/fn9+f39/fwBgCX9+f35/f39/fwBgA39+fgBgBH9+fn8AYAR/fn5+AGAFf35+fn4AYAR/fX9/AGACf3wAYAR/fH9/AGAEf3x/fwF/YAN+f38Bf2ACfn4BfmACfn4BfGABfAF/YAF8AXxgAnx/AXxgAnx8AXwCnY2AgAAxA3diZxVfX3diaW5kZ2VuX3N0cmluZ19uZXcABwN3YmcVX193YmdfaW5zdHJ1Y3Rpb25fbmV3AAMDd2JnFV9fd2JpbmRnZW5fbnVtYmVyX25ldwA2A3diZxpfX3diaW5kZ2VuX29iamVjdF9kcm9wX3JlZgACA3diZxVfX3diaW5kZ2VuX3N0cmluZ19nZXQABgN3YmcXX193YmluZGdlbl9pc191bmRlZmluZWQAAwN3YmcVX193YmluZGdlbl9udW1iZXJfZ2V0AAYDd2JnEF9fd2JnX3B1YmtleV9uZXcAAwN3YmccX193YmdfZGVidWdfNzMzOTVjYTU2NjkxMjBhZQACA3diZxxfX3diZ19lcnJvcl8xMTg5YjVkZTZkZDFiODA4AAIDd2JnG19fd2JnX2luZm9fM2YxZDg2MzZiYTU4MTI4ZgACA3diZxpfX3diZ19sb2dfMThmZmRmZTVhNDFiZDc4MQACA3diZxtfX3diZ193YXJuX2RmZmE3NGNhYjc4ZDM1MzEAAgN3YmcaX193YmdfbmV3X2FiZGE3NmU4ODNiYThhNWYAAQN3YmccX193Ymdfc3RhY2tfNjU4Mjc5ZmU0NDU0MWNmNgAGA3diZxxfX3diZ19lcnJvcl9mODUxNjY3YWY3MWJjZmM2AAYDd2JnG19fd2JnX3NlbGZfN2VlZGUxZjQ0ODhiZjM0NgABA3diZx1fX3diZ19jcnlwdG9fYzkwOWZiNDI4ZGNiZGRiNgADA3diZx9fX3diZ19tc0NyeXB0b181MTFlZWZlZmJmYzcwYWU0AAMDd2JnLV9fd2JnX3N0YXRpY19hY2Nlc3Nvcl9NT0RVTEVfZWYzYWEyZWIyNTExNThhNQABA3diZx5fX3diZ19yZXF1aXJlXzkwMGQ1YzM5ODRmZTc3MDMACgN3YmcmX193YmdfZ2V0UmFuZG9tVmFsdWVzXzMwNzA0OTM0NWQwYmQ4OGMAAwN3YmcmX193YmdfZ2V0UmFuZG9tVmFsdWVzX2NkMTc1OTE1NTExZjcwNWUABgN3YmclX193YmdfcmFuZG9tRmlsbFN5bmNfODViM2Y0YzUyYzU2YzMxMwAJA3diZxpfX3diZ19uZXdfYjMzZTFjZTYzOTAwMDY4ZgABA3diZxZfX3diaW5kZ2VuX2lzX2Z1bmN0aW9uAAMDd2JnFF9fd2JpbmRnZW5faXNfb2JqZWN0AAMDd2JnG19fd2JnX25leHRfMGI5NTg1MmRiM2EwZjU2OAADA3diZxtfX3diZ19uZXh0XzMyY2U0NjAzZTE5YTlhZDgAAwN3YmcbX193YmdfZG9uZV9iMmIyM2FkY2FmZDZkMzcyAAMDd2JnHF9fd2JnX3ZhbHVlXzliYzMyNzFmMjU1NmE2MjEAAwN3YmcfX193YmdfaXRlcmF0b3JfN2UwYWM2OTdmYWE4NzJmMwABA3diZxpfX3diZ19nZXRfMDI5OTliYjJjYWVlZmY2MQAHA3diZxtfX3diZ19jYWxsXzg3NWQ0ZWE5YWJiZWM4OGYABwN3YmckX193YmdfbmV3d2l0aGxlbmd0aF84ZmY2OTExOGFiMjMzMTliAAMDd2JnGl9fd2JnX3NldF81ZWFjZGY1NGM5YWFmYmRmAAkDd2JnHl9fd2JnX2lzQXJyYXlfY2Y2ODI5YjFmMjViYTBmMQADA3diZxtfX3diZ19wdXNoXzA5ZWJjYmJkNmZiMjdhZTEABwN3YmcdX193YmdfdmFsdWVzX2EyNjc1NzVmYTdiOTkwNzUAAwN3YmcdX193YmdfYnVmZmVyXzhkYWJjM2E0Y2NhN2UwNjUAAwN3YmcaX193YmdfbmV3XzgxYmRkZGJlMjNhNGM5OTAAAwN3YmcaX193Ymdfc2V0XzU3NzhiMTUyYTdlYzI1OGMACQN3YmcdX193YmdfbGVuZ3RoXzYxZjE5NDlhYTdmNmZkMzkAAwN3YmcsX193YmdfaW5zdGFuY2VvZl9VaW50OEFycmF5XzhhODUzN2Y0NmUwNTY0NzQAAwN3YmckX193YmdfbmV3d2l0aGxlbmd0aF82YjJiMzJlZjViZmM5YTU1AAMDd2JnH19fd2JnX3N1YmFycmF5XzI0NzA5MmU1OWI1NjMzOWEACgN3YmcXX193YmluZGdlbl9kZWJ1Z19zdHJpbmcABgN3YmcQX193YmluZGdlbl90aHJvdwAGA3diZxFfX3diaW5kZ2VuX21lbW9yeQABA7yGgIAAugYJCQsdDQkUCQcGAxMJCQkGBwcNCwkLCw8LKgYHCQkGCQYJBgkLBgsGBwsJDQcCDQsJBgYGBgkLBwkGCQkJCwoKMhAGBg0hLgYMCQkGBw8GCwsLDwYKDzIKBg4HCRsJKQkHDQsXDQoLAw8HBwkJABkHBgY3GwMGBg8JBg0VBgMPBwYCAwcgBgYHBhgJAwcLBgsHCQILCw4HAgYLBwYRNQkeCgoKCgoHFgcaEQYHEgkOBwkLCQkGBgM1DwcKBwoHAgcHBwcKBwcHCgcGBwYGBwYHCgYcCQ4hMwcHBgc3CSMKBh8JCisGBgkGBgIHCQIGBgEGBgkGBwciBwcHBgchBwYKBwMGBwIKBgcJCR8LBgMrBicGCQYICAkHBwYNBwcGAgkHBwYGMAkJAwcGBwYBAwICBwMGBgkGBgkLCQYJBgYJAiwKBwYGBgMHBgYGAwcJBwYHBgYLCwsLCw8LIQYHBwMHBwcGCg0GAgIGBwIJBgYGAwkGCQkLBgIJLgYKCgoHBwMoDQMGLQcHCQYCBgcGLQkHOAIHBgYGCQcHCQYNBgkJBwcHBgcHBwcHBywsBwYGBgkHBwYDAgYGAgoKCQoKAgouLgoKJwoKBwoKCi4HDC0GCQsABgkGBgcGBwYHBwkuBwIJAAYDAgI0AwcHBwcJCQcHBwcHBwsHByYmMDAwMAYGBgICAgkCAgIDJgkNCQsGJgQEBQUFBQMGBwcHBgIDBwEECQEJAgYHCQoBCRAHDSUODQ4NJAYCAgICCwIHAgIGBgoGAwM5BgMGAgcKBzcHBwMHBwcCDAcHAwcHBwIGBwcCAwcGBwcCBwcHByYHBgcGBwMHCQcHBwcCBwcHBgMCAwsHAwMDBgcGBwkHCwkDBwMKCQkJCgMDBgMHBwcJCgoHBwMHBwcGBwcHBwkHCQcHBwcHBwYAAAcHAwMDAwcGBgYGBgYGBgkJCQYGBgoHBwcHCgoKCgcHBwcHBwcHBwICAgICBgYDBwcHBwcDAwIGBgYGBAEGBgYDAwAJAwMDAwM3NwQDAwQDAQcEAQQEAAMBAQMODAoHAwMEBAMCAgICAgICAgICAgICAgICAgYCAAICAgICAgICAgICAgICBIeAgIAAAXAB9gH2AQWDgICAAAEAEgaJgICAAAF/AUGAgMAACweekICAAEsGbWVtb3J5AgAZX193Ymdfb3JhY2xlcmVnaXN0cnlfZnJlZQDoAxJvcmFjbGVyZWdpc3RyeV9uZXcAzwQZb3JhY2xlcmVnaXN0cnlfYWRkX29yYWNsZQCZARVfX3diZ19zd2FwcmVzdWx0X2ZyZWUAsgQeX193YmdfZ2V0X3N3YXByZXN1bHRfYW1vdW50X2luANAEHl9fd2JnX3NldF9zd2FwcmVzdWx0X2Ftb3VudF9pbgC/BB1fX3diZ19nZXRfc3dhcHJlc3VsdF9mZWVfcGFpZADABB1fX3diZ19zZXRfc3dhcHJlc3VsdF9mZWVfcGFpZACoBB9fX3diZ19nZXRfc3dhcHJlc3VsdF9hbW91bnRfb3V0AMEEH19fd2JnX3NldF9zd2FwcmVzdWx0X2Ftb3VudF9vdXQAqQQhX193YmdfZ2V0X3N3YXByZXN1bHRfcHJpY2VfaW1wYWN0AMIEIV9fd2JnX3NldF9zd2FwcmVzdWx0X3ByaWNlX2ltcGFjdACqBB9fX3diZ19nZXRfc3dhcHJlc3VsdF9zd2FwX3ByaWNlAMMEH19fd2JnX3NldF9zd2FwcmVzdWx0X3N3YXBfcHJpY2UAqwQgX193YmdfZ2V0X3N3YXByZXN1bHRfaW5zdGFfcHJpY2UAxAQgX193Ymdfc2V0X3N3YXByZXN1bHRfaW5zdGFfcHJpY2UArAQhX193YmdfZ2V0X3N3YXByZXN1bHRfb3JhY2xlX3ByaWNlAMUEIV9fd2JnX3NldF9zd2FwcmVzdWx0X29yYWNsZV9wcmljZQCtBBlfX3diZ19nZXRfc3dhcHJlc3VsdF9pdGVyAMYEGV9fd2JnX3NldF9zd2FwcmVzdWx0X2l0ZXIArgQEc3dhcAA3Fl9fd2JnX3RyYW5zYWN0aW9uX2ZyZWUAtQIXdHJhbnNhY3Rpb25fY29uc3RydWN0b3IAqAITdHJhbnNhY3Rpb25fbWVzc2FnZQCzARd0cmFuc2FjdGlvbl9tZXNzYWdlRGF0YQD5AhJ0cmFuc2FjdGlvbl92ZXJpZnkA9QIXdHJhbnNhY3Rpb25fcGFydGlhbFNpZ24A5AEUdHJhbnNhY3Rpb25faXNTaWduZWQAvgITdHJhbnNhY3Rpb25fdG9CeXRlcwDLAxV0cmFuc2FjdGlvbl9mcm9tQnl0ZXMA1gISX193Ymdfa2V5cGFpcl9mcmVlAMIDE2tleXBhaXJfY29uc3RydWN0b3IA3QIPa2V5cGFpcl90b0J5dGVzAL0CEWtleXBhaXJfZnJvbUJ5dGVzAMcCDmtleXBhaXJfcHVia2V5AN4CFl9fd2JnX2luc3RydWN0aW9uX2ZyZWUAugMfc3lzdGVtaW5zdHJ1Y3Rpb25fY3JlYXRlQWNjb3VudACOAidzeXN0ZW1pbnN0cnVjdGlvbl9jcmVhdGVBY2NvdW50V2l0aFNlZWQA2QEYc3lzdGVtaW5zdHJ1Y3Rpb25fYXNzaWduAKkCIHN5c3RlbWluc3RydWN0aW9uX2Fzc2lnbldpdGhTZWVkAIUCGnN5c3RlbWluc3RydWN0aW9uX3RyYW5zZmVyAKcCInN5c3RlbWluc3RydWN0aW9uX3RyYW5zZmVyV2l0aFNlZWQA1wEac3lzdGVtaW5zdHJ1Y3Rpb25fYWxsb2NhdGUAwQIic3lzdGVtaW5zdHJ1Y3Rpb25fYWxsb2NhdGVXaXRoU2VlZACDAiRzeXN0ZW1pbnN0cnVjdGlvbl9jcmVhdGVOb25jZUFjY291bnQAuwIlc3lzdGVtaW5zdHJ1Y3Rpb25fYWR2YW5jZU5vbmNlQWNjb3VudACqAiZzeXN0ZW1pbnN0cnVjdGlvbl93aXRoZHJhd05vbmNlQWNjb3VudACRAidzeXN0ZW1pbnN0cnVjdGlvbl9hdXRob3JpemVOb25jZUFjY291bnQAkwISX193YmdfbWVzc2FnZV9mcmVlAM8CIl9fd2JnX2dldF9tZXNzYWdlX3JlY2VudF9ibG9ja2hhc2gA4gIiX193Ymdfc2V0X21lc3NhZ2VfcmVjZW50X2Jsb2NraGFzaACeAhFfX3diZ19wdWJrZXlfZnJlZQC2BBJwdWJrZXlfY29uc3RydWN0b3IAmAIPcHVia2V5X3RvU3RyaW5nAPQCEHB1YmtleV9pc09uQ3VydmUAsAMNcHVia2V5X2VxdWFscwC2Aw5wdWJrZXlfdG9CeXRlcwDOAhVwdWJrZXlfY3JlYXRlV2l0aFNlZWQAqwEbcHVia2V5X2NyZWF0ZVByb2dyYW1BZGRyZXNzAOIBGXB1YmtleV9maW5kUHJvZ3JhbUFkZHJlc3MApQMTc29sYW5hX3Byb2dyYW1faW5pdACCBBBoYXNoX2NvbnN0cnVjdG9yAJkCDWhhc2hfdG9TdHJpbmcA9gILaGFzaF9lcXVhbHMAtwMMaGFzaF90b0J5dGVzAJYDF19fd2JnX2luc3RydWN0aW9uc19mcmVlAPACGGluc3RydWN0aW9uc19jb25zdHJ1Y3RvcgDSBBFpbnN0cnVjdGlvbnNfcHVzaACtAQ9fX3diZ19oYXNoX2ZyZWUAtwQRX193YmluZGdlbl9tYWxsb2MAlAQSX193YmluZGdlbl9yZWFsbG9jANgEH19fd2JpbmRnZW5fYWRkX3RvX3N0YWNrX3BvaW50ZXIA0AUPX193YmluZGdlbl9mcmVlAIwFFF9fd2JpbmRnZW5fZXhuX3N0b3JlAKcFCfCDgIAAAQBBAQv1AckG0QK9AbME4QLKBuYD7gTLBp8GngadBrAErwSwBtIF0wXRBZQFtQTMBpcD1gXIA9cFhgXlBPID8QHXA80G+wSYA4UFmQSbBZAD5gTzA/IBzgbpA+oB0APSAuEDzwbaBZ0F0AbfA94D5wT1A/MBiQSkBqMGogbYBdEGuQXmAtIGjQaQBo4GjwaMBtMG6gPsAdED6AT2A/UB2APUBvcD1QbJAsgCkgazBrQGngWRBpYF8gTOBMoF1gbJBJ8FyATXBqEE+QThBIkD3QTfBNsE8ATpBOIE4ATjBN4E2AaaBNkGtgbaBtsG3AXeBeAFoQXOBd0GiAWbBJwE3wXdBY8EowWMBIAC3gbnA/EE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aikDACInIAQQtQMgCkHAAWpBCGopAwAhBCAKKQPAASEpIApBsAFqQpDOABCaBSAKQaABaiApIAQgCikDsAEiKiAKQbABakEIaikDACIrEPsDIApBkAFqIAopA6ABIApBoAFqQQhqKQMAQgEQ/gMgCkGAAWogCikDkAEgCkGQAWpBCGopAwAgKiArEPADIApB8ABqICggJyAKKQOAASIEIApBgAFqQQhqKQMAIikQ8QMgCikDcCAKQfAAakEIaikDABCXBCEoIApB4ABqIAQgKRCXBBCaBSAKQdAAaiAKKQNgIgQgCkHgAGpBCGopAwAiJyAHELUDIApB0ABqQQhqKQMAIQcgCikDUCEpIApBwABqQpDOABCaBSAKQTBqICkgByAKKQNAIiogCkHAAGpBCGopAwAiKxD7AyAKQSBqIAopAzAgCkEwakEIaikDAEIBEP4DIApBEGogCikDICAKQSBqQQhqKQMAICogKxDwAyAKIAQgJyAKKQMQIgcgCkEQakEIaikDACIpEPEDIAopAwAgCkEIaikDABCXBCEqIAcgKRCXBCErIApBgAVqIB8QuQQCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAooAoAFRQ0AIApBkARqQQhqIApBjAVqKQIANwMAIAogCikChAU3A5AEIApByAZqIApBkARqIAItAEAiEBCRBCAKKALIBkEGRw0BIApBgAVqICAQuQQgCigCgAVFDQIgCkGgBGpBCGogCkGMBWopAgA3AwAgCiAKKQKEBTcDoAQgCkHIBmogCkGgBGogAy0AQCIREJEEIAooAsgGQQZHDQMgCkGwBGogIkIAQQkQ8QIgCkHABGogBkIAQQkQ8QIgCkGYBmpBCGogCkGwBGpBCGopAwA3AwAgCiAKKQOwBDcDmAYgCkGABWogIRC5BCAKKAKABUUNBCAKQagGakEIaiAKQYwFaikCADcDACAKIAopAoQFNwOoBiAKQcgGaiAKQagGaiAQEJEEIAooAsgGQQZHDQUgCkGABWogCkGYBmogCkGoBmoQWyAKKAKABQ0GIApBiAZqQQhqIApBjAVqIgIpAgA3AwAgCiAKKQKEBTcDiAYgCkHIBmpBCGogCkGQBGpBCGopAwA3AwAgCiAKKQOQBDcDyAYgCkGABWog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CGopAwA3AwAgCiAKKQPIBjcDgAVB24rAAEErIApBgAVqQYiLwABBlIzAABCyAwALQbCKwABBK0H4i8AAEIQEAAsgCkGABWpBCGogCkHIBmpBCGopAwA3AwAgCiAKKQPIBjcDgAVB24rAAEErIApBgAVqQYiLwABBlIzAABCyAwALQbCKwABBK0H4i8AAEIQEAAsgCkGABWpBCGogCkHIBmpBCGopAwA3AwAgCiAKKQPIBjcDgAVB24rAAEErIApBgAVqQYiLwABBlIzAABCyAwALQayBwABBGUHIgcAAENEEAAtBsIrAAEErQfiLwAAQhAQACyAKQYAFakEIaiAKQcgGakEIaikDADcDACAKIAopA8gGNwOABUHbisAAQSsgCkGABWpBiIvAAEGUjMAAELIDAAtBrIHAAEEZQciBwAAQ0QQAC0GwisAAQStB+IvAABCEBAALIApBgAVqQQhqIApByAZqQQhqKQMANwMAIAogCikDyAY3A4AFQduKwABBKyAKQYAFakGIi8AAQZSMwAAQsgMAC0GwisAAQStB+IvAABCEBAALIApBgAVqQQhqIApByAZqQQhqKQMANwMAIAogCikDyAY3A4AFQduKwABBKyAKQYAFakGIi8AAQZSMwAAQsgMAC0GwisAAQStB+IvAABCEBAALIApBgAVqQQhqIApByAZqQQhqKQMANwMAIAogCikDyAY3A4AFQduKwABBKyAKQYAFakGIi8AAQZSMwAAQsgMAC0GAgsAAQStByIPAABCEBAALQdiBwABBFkHwgcAAENEEAAtB2IHAAEEWQfCBwAAQ0QQAC0GsgcAAQRlByIHAABDRBAALQdiBwABBFkHwgcAAENEEAAtB2IHAAEEWQfCBwAAQ0QQAC0GsgcAAQRlByIHAABDRBAALIAopAoQFIQcgISEEIC0hBgwBCyAKKQKEBSEHICEhBCAtISALIAenQf8BcUEIRg0AIAdCgH6DIQYMAgsgAEHoAGogDzYCACAAQeAAaiAmNwMAIABB2ABqICU3AwAgAEHQAGogBDcDACAAQcgAaiAkNwMAIABBwABqICE3AwAgAEE4aiAFNwMAIABBMGogIDcDACAAQShqIB83AwAgAEEgaiAGNwMAIABBGGogIjcDACAAQRBqICM3AwAgAEEIaiAJNwMADAMLQgAhBkIDIQcLIAAgB0L/AYMgBoQ3AgQLQQEhDgsgACAONgIAIApB4AZqJAALkykCHn8DfiMAQdAGayIFJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAEpAwAiI1ANACABKQMIIiRQDQEgASkDECIlUA0CICMgJXwgI1QNAyAjICR9ICNWDQQgAS8BGCEBIAUgIz4CDCAFQQhqQQhqQQAgI0IgiKcgI0KAgICAEFQiBhs2AgAgBUEBQQIgBhs2AgggBUEUakEAQZgBEIIGGiAFQbABakEIakEAQZwBEIIGGiAFQoGAgIAQNwOwASABrUIwhkIwhyAjQn98eX1CwprB6AR+QoChzaC0AnxCIIinIgZBEHRBEHUhBwJAAkAgAUEQdEEQdSIIQQBIDQAgBUEIaiABEFkaDAELIAVBsAFqQQAgCGtBEHRBEHUQWRoLAkACQCAHQX9KDQAgBUEIakEAIAdrQRB0QRB1EDkaDAELIAVBsAFqIAZB//8DcRA5GgsgBSgCsAEhCSAFQagFakEEciAFQbABakEEciIKQaABEP8FGiAFIAk2AqgFIAMhCwJAIANBCkkNAAJAIAlBKE0NACAJQSggARD1BQALIAVBqAVqQXxqIQwgAyELIAkhAQNAAkAgAUUNACABQQJ0IQggAUF/akH/////A3EiAUEBaiIGQQFxIQ0CQAJAIAENACAFQagFaiAIakEEaiEBQgAhIwwBCyAGQf7///8HcSEGIAwgCGohAUIAISMDQCABQQRqIgggI0IghiAINQIAhCIjQoCU69wDgCIlPgIAIAEgIyAlQoCU69wDfn1CIIYgATUCAIQiI0KAlOvcA4AiJT4CACAjICVCgJTr3AN+fSEjIAFBeGohASAGQX5qIgYNAAsgAUEIaiEBCyANRQ0AIAFBfGoiASAjQiCGIAE1AgCEQoCU69wDgD4CAAsgC0F3aiILQQlNDQEgBSgCqAUiAUEpSQ0ACyABQSggARD1BQALAkACQAJAAkAgC0ECdEHQ9sEAaigCACIGRQ0AIAUoAqgFIgFBKU8NCQJAIAENAEEAIQEMBAsgAUECdCEIIAFBf2pB/////wNxIgFBAWoiDUEBcSELIAatISMgAQ0BIAVBqAVqIAhqQQRqIQFCACElDAILQYunwgBBG0HEpsIAEIQEAAsgDUH+////B3EhBiAIIAVBqAVqakF8aiEBQgAhJQNAIAFBBGoiCCAlQiCGIAg1AgCEIiUgI4AiJD4CACABICUgJCAjfn1CIIYgATUCAIQiJSAjgCIkPgIAICUgJCAjfn0hJSABQXhqIQEgBkF+aiIGDQALIAFBCGohAQsCQCALRQ0AIAFBfGoiASAlQiCGIAE1AgCEICOAPgIACyAFKAKoBSEBCwJAAkACQAJAIAEgBSgCCCIOIAEgDksbIg9BKEsNAAJAIA8NAEEAIQ8MBAsgD0EBcSEQIA9BAUcNAUEAIQtBACENDAILIA9BKCABEPUFAAsgD0F+cSERIAVBCGpBCGohBiAFQagFakEIaiEBQQAhC0EAIQ0DQCABQXxqIgggCCgCACIMIAZBfGooAgBqIgggC0EBcWoiEjYCACABIAEoAgAiEyAGKAIAaiILIAggDEkgEiAISXJqIgg2AgAgCyATSSAIIAtJciELIAZBCGohBiABQQhqIQEgESANQQJqIg1HDQALCwJAIBBFDQAgBUGoBWogDUECdCIBakEEaiIGIAYoAgAiBiAFQQhqIAFqQQRqKAIAaiIBIAtqIgg2AgAgASAGSSAIIAFJciELCyALQQFxRQ0AIA9BJ0sNByAFQagFaiAPQQJ0akEEakEBNgIAIA9BAWohDwsgBSAPNgKoBSAPIAkgDyAJSxsiBkEpTw0HIAVBsAFqQQRyIQEgBUEIakEEciEQIAZBAnQhBgJAA0ACQCAGDQBBf0EAIAYbIQgMAgsgBUGwAWogBmohCCAFQagFaiAGaiELIAZBfGohBkF/IAsoAgAiCyAIKAIAIghHIAsgCEkbIghFDQALCwJAIAhBAkkNACAOQSlPDQkCQCAODQAgBUEANgIIDAwLIA5Bf2pB/////wNxIgZBAWoiC0EDcSEIAkAgBkEDTw0AQgAhIyAQIQYMCwsgC0H8////B3EhC0IAISMgECEGA0AgBiAGNQIAQgp+ICN8IiM+AgAgBkEEaiINIA01AgBCCn4gI0IgiHwiIz4CACAGQQhqIg0gDTUCAEIKfiAjQiCIfCIjPgIAIAZBDGoiDSANNQIAQgp+ICNCIIh8IiM+AgAgI0IgiCEjIAZBEGohBiALQXxqIgsNAAwLCwsgB0EBaiEHDAoLQf/4wQBBHEH4+8EAEIQEAAtBrPnBAEEdQYj8wQAQhAQAC0Hc+cEAQRxBmPzBABCEBAALQYj6wQBBNkGo/MEAEIQEAAtB0PrBAEE3Qbj8wQAQhAQACyABQSggARD1BQALIA9BKEHEpsIAEMcDAAsgBkEoIAEQ9QUACyAOQSggARD1BQALAkAgCEUNAANAIAYgBjUCAEIKfiAjfCIjPgIAIAZBBGohBiAjQiCIISMgCEF/aiIIDQALCwJAICOnIgZFDQAgDkEnSw0CIAVBCGogDkECdGpBBGogBjYCACAOQQFqIQ4LIAUgDjYCCAtBASEMAkACQCAHQRB0QRB1IgYgBEEQdEEQdSIISA0AIAcgBGtBEHRBEHUgAyAGIAhrIANJGyINDQELQQAhDQwCCyAFQdgCakEEciAKQaABEP8FGiAFIAk2AtgCIAVB2AJqQQEQWSEUIAUoArABIQYgBUGABGpBBHIgCkGgARD/BRogBSAGNgKABCAFQYAEakECEFkhFSAFKAKwASEGIAVBqAVqQQRyIApBoAEQ/wUaIAUgBjYCqAUgBUGwAWpBCGohFiAFQdgCakEIaiEXIAVBgARqQQhqIRggBUGoBWpBCGohGSAFQQhqQQhqIRogBUGoBWpBAxBZIRsgBSgCCCESIAUoArABIQkgBSgC2AIhHCAFKAKABCEdIAUoAqgFIR5BACEfAkACQAJAAkACQANAIB8hCgJAAkACQAJAAkACQAJAIBJBKU8NACAKQQFqIR8gEkECdCEGIBAhCAJAAkACQANAIAZFDQEgBkF8aiEGIAgoAgAhCyAIQQRqIQggC0UNAAsgEiAeIBIgHksbIiBBKU8NBCAgQQJ0IQYCQANAAkAgBg0AQX9BACAGGyEIDAILIAVBqAVqIAZqIQggBUEIaiAGaiELIAZBfGohBkF/IAsoAgAiCyAIKAIAIghHIAsgCEkbIghFDQALC0EAISEgCEECTw0CICBFDQFBASEMICBBAXEhIUEAIRICQCAgQQFGDQAgIEF+cSEOQQAhEkEBIQwgGSEIIBohBgNAIAZBfGoiCyALKAIAIhMgCEF8aigCAEF/c2oiCyAMQQFxaiIRNgIAIAYgBigCACIPIAgoAgBBf3NqIgwgCyATSSARIAtJcmoiCzYCACAMIA9JIAsgDElyIQwgCEEIaiEIIAZBCGohBiAOIBJBAmoiEkcNAAsLAkAgIUUNACAFQQhqIBJBAnQiBmpBBGoiCCAIKAIAIgggGyAGakEEaigCAEF/c2oiBiAMaiILNgIAIAYgCEkgCyAGSXIhDAsgDEEBcQ0BQdSmwgBBGkHEpsIAEIQEAAsgDSAKSQ0EIA0gA0sNBSANIApGDREgAiAKakEwIA0gCmsQggYaDBELIAUgIDYCCEEIISEgICESCyASIB0gEiAdSxsiDkEpTw0EIA5BAnQhBgJAA0ACQCAGDQBBf0EAIAYbIQgMAgsgBUGABGogBmohCCAFQQhqIAZqIQsgBkF8aiEGQX8gCygCACILIAgoAgAiCEcgCyAISRsiCEUNAAsLAkAgCEECSQ0AIBIhDgwHCwJAIA5FDQBBASEMIA5BAXEhIkEAIRICQCAOQQFGDQAgDkF+cSEgQQAhEkEBIQwgGCEIIBohBgNAIAZBfGoiCyALKAIAIhMgCEF8aigCAEF/c2oiCyAMQQFxaiIRNgIAIAYgBigCACIPIAgoAgBBf3NqIgwgCyATSSARIAtJcmoiCzYCACAMIA9JIAsgDElyIQwgCEEIaiEIIAZBCGohBiAgIBJBAmoiEkcNAAsLAkAgIkUNACAFQQhqIBJBAnQiBmpBBGoiCCAIKAIAIgggFSAGakEEaigCAEF/c2oiBiAMaiILNgIAIAYgCEkgCyAGSXIhDAsgDEEBcUUNBgsgBSAONgIIICFBBHIhIQwGCyASQSggARD1BQALICBBKCABEPUFAAsgCiANIAEQ9gUACyANIAMgARD1BQALIA5BKCABEPUFAAtB1KbCAEEaQcSmwgAQhAQACwJAAkACQCAOIBwgDiAcSxsiIEEpTw0AICBBAnQhBgJAA0ACQCAGDQBBf0EAIAYbIQgMAgsgBUHYAmogBmohCCAFQQhqIAZqIQsgBkF8aiEGQX8gCygCACILIAgoAgAiCEcgCyAISRsiCEUNAAsLAkAgCEECSQ0AIA4hIAwDCwJAICBFDQBBASEMICBBAXEhIkEAIRICQCAgQQFGDQAgIEF+cSEOQQAhEkEBIQwgFyEIIBohBgNAIAZBfGoiCyALKAIAIhMgCEF8aigCAEF/c2oiCyAMQQFxaiIRNgIAIAYgBigCACIPIAgoAgBBf3NqIgwgCyATSSARIAtJcmoiCzYCACAMIA9JIAsgDElyIQwgCEEIaiEIIAZBCGohBiAOIBJBAmoiEkcNAAsLAkAgIkUNACAFQQhqIBJBAnQiBmpBBGoiCCAIKAIAIgggFCAGakEEaigCAEF/c2oiBiAMaiILNgIAIAYgCEkgCyAGSXIhDAsgDEEBcUUNAgsgBSAgNgIIICFBAmohIQwCCyAgQSggARD1BQALQdSmwgBBGkHEpsIAEIQEAAsgICAJICAgCUsbIhJBKU8NAiASQQJ0IQYCQANAAkAgBg0AQX9BACAGGyEIDAILIAVBsAFqIAZqIQggBUEIaiAGaiELIAZBfGohBkF/IAsoAgAiCyAIKAIAIghHIAsgCEkbIghFDQALCwJAAkAgCEECSQ0AICAhEgwBCwJAIBJFDQBBASEMIBJBAXEhIkEAIRMCQCASQQFGDQAgEkF+cSEgQQAhE0EBIQwgFiEIIBohBgNAIAZBfGoiCyALKAIAIhEgCEF8aigCAEF/c2oiCyAMQQFxaiIPNgIAIAYgBigCACIOIAgoAgBBf3NqIgwgCyARSSAPIAtJcmoiCzYCACAMIA5JIAsgDElyIQwgCEEIaiEIIAZBCGohBiAgIBNBAmoiE0cNAAsLAkAgIkUNACAFQQhqIBNBAnQiBmpBBGoiCCAIKAIAIgggBUGwAWogBmpBBGooAgBBf3NqIgYgDGoiCzYCACAGIAhJIAsgBklyIQwLIAxBAXFFDQULIAUgEjYCCCAhQQFqISELIAogA0YNASACIApqICFBMGo6AAAgEkEpTw0EAkACQCASDQBBACESDAELIBJBf2pB/////wNxIgtBAWoiDEEDcSEIQgAhIyAQIQYCQCALQQNJDQAgDEH8////B3EhC0IAISMgECEGA0AgBiAGNQIAQgp+ICN8IiM+AgAgBkEEaiIMIAw1AgBCCn4gI0IgiHwiIz4CACAGQQhqIgwgDDUCAEIKfiAjQiCIfCIjPgIAIAZBDGoiDCAMNQIAQgp+ICNCIIh8IiM+AgAgI0IgiCEjIAZBEGohBiALQXxqIgsNAAsLAkAgCEUNAANAIAYgBjUCAEIKfiAjfCIjPgIAIAZBBGohBiAjQiCIISMgCEF/aiIIDQALCyAjpyIGRQ0AIBJBJ0sNBiAFQQhqIBJBAnRqQQRqIAY2AgAgEkEBaiESCyAFIBI2AgggHyANRw0AC0EAIQwMBgsgAyADQcj8wQAQxwMACyASQSggARD1BQALQdSmwgBBGkHEpsIAEIQEAAsgEkEoIAEQ9QUACyASQShBxKbCABDHAwALIA5BKEHEpsIAEMcDAAsCQAJAAkACQAJAAkACQAJAIAlBKU8NAAJAIAkNAEEAIQkMAwsgCUF/akH/////A3EiCEEBaiILQQNxIQYCQCAIQQNPDQBCACEjDAILIAtB/P///wdxIQhCACEjA0AgASABNQIAQgV+ICN8IiM+AgAgAUEEaiILIAs1AgBCBX4gI0IgiHwiIz4CACABQQhqIgsgCzUCAEIFfiAjQiCIfCIjPgIAIAFBDGoiCyALNQIAQgV+ICNCIIh8IiM+AgAgI0IgiCEjIAFBEGohASAIQXxqIggNAAwCCwsgCUEoIAEQ9QUACwJAIAZFDQADQCABIAE1AgBCBX4gI3wiIz4CACABQQRqIQEgI0IgiCEjIAZBf2oiBg0ACwsgI6ciAUUNACAJQSdLDQEgBUGwAWogCUECdGpBBGogATYCACAJQQFqIQkLIAUgCTYCsAEgBSgCCCIBIAkgASAJSxsiAUEpTw0BIAFBAnQhAQJAA0AgAUUNASAFQbABaiABaiEGIAVBCGogAWohCCABQXxqIQFBfyAIKAIAIgggBigCACIGRyAIIAZJGyIGRQ0ACyAGQf8BcUEBRw0FDAQLIAENBCAMDQMgDUF/aiIBIANPDQIgAiABai0AAEEBcQ0DDAQLIAlBKEHEpsIAEMcDAAsgAUEoIAEQ9QUACyABIANB2PzBABDHAwALAkAgDSADSw0AIAIgDWohEkEAIQEgAiEGAkADQCANIAFGDQEgAUEBaiEBIAYgDWohCCAGQX9qIgshBiAIQX9qLQAAQTlGDQALIAsgDWoiBiAGLQAAQQFqOgAAIA0gDSABa0EBak0NAiAGQQFqQTAgAUF/ahCCBhoMAgtBMSEBAkAgDA0AIAJBMToAAEEwIQEgDUEBRg0AQTAhASACQQFqQTAgDUF/ahCCBhoLIAdBEHRBgIAEakEQdSIHIARBEHRBEHVMDQEgDSADTw0BIBIgAToAACANQQFqIQ0MAQsgDSADIAEQ9QUACyANIANNDQAgDSADIAEQ9QUACyAAIAc7AQggACANNgIEIAAgAjYCACAFQdAGaiQAC4UqAgF/In4jAEGACmsiAyQAIANB8AZqIAIpAwAiBEIAIAEpAwAiBUIAEKkDIANBgAdqIAIpAwgiBkIAIAVCABCpAyADQcAHaiABKQMIIgdCACAEQgAQqQMgA0GQB2ogAikDECIIQgAgBUIAEKkDIANBgAhqIAdCACAGQgAQqQMgA0HQB2ogASkDECIJQgAgBEIAEKkDIANBoAdqIAIpAxgiCkIAIAVCABCpAyADQcAIaiAIQgAgB0IAEKkDIANBkAhqIAlCACAGQgAQqQMgA0HgB2ogASkDGCILQgAgBEIAEKkDIANBsAdqIAIpAyAiDEIAIAVCABCpAyADQdAIaiAKQgAgB0IAEKkDIANB8AhqIAlCACAIQgAQqQMgA0GgCGogC0IAIAZCABCpAyADQfAHaiABKQMgIgVCACAEQgAQqQMgA0HgCGogDEIAIAdCABCpAyADQaAJaiAKQgAgCUIAEKkDIANBgAlqIAtCACAIQgAQqQMgA0GwCGogBUIAIAZCABCpAyADQbAJaiAMQgAgCUIAEKkDIANBwAlqIAtCACAKQgAQqQMgA0GQCWogBUIAIAhCABCpAyADQeAJaiAMQgAgC0IAEKkDIANB0AlqIAVCACAKQgAQqQMgA0HwCWogBUIAIAxCABCpAyADQeAGaiADKQPwBiIFQpv80ZKxtMcCfkL/////////B4MiBEIAQu2n1+el45gBQgAQqQMgA0HQBmogBEIAQoHLtc73xfoGQgAQqQMgA0HABmogAykDwAciDSADKQOAB3wiBiADKQPQBnwiByAFIAMpA+AGIgh8IgVCNIggA0HgBmpBCGopAwAgA0HwBmpBCGopAwB8IAUgCFStfCIOQgyGhHwiCEKb/NGSsbTHAn5C/////////weDIgVCAELtp9fnpeOYAUIAEKkDIANBkAZqIARCAEL5vdMAQgAQqQMgA0GwBmogBUIAQoHLtc73xfoGQgAQqQMgA0GABmogAykDkAciDyADKQOACHwiCSADKQPQB3wiCiADKQOQBnwiCyADKQOwBnwiDCADKQPABiIQIAh8IhFCNIggA0HABmpBCGopAwAgA0HAB2pBCGopAwAgA0GAB2pBCGopAwB8IAYgDVStfCADQdAGakEIaikDAHwgByAGVK18IA5CNIh8IAggB1StfHwgESAQVK18IhJCDIaEfCIHQpv80ZKxtMcCfkL/////////B4MiBkIAQu2n1+el45gBQgAQqQMgA0GgBmogBUIAQvm90wBCABCpAyADQfAFaiAGQgBCgcu1zvfF+gZCABCpAyADQeAFaiADKQOQCCITIAMpA8AIfCIIIAMpA6AHfCINIAMpA+AHfCIOIAMpA6AGfCIQIAMpA/AFfCIRIAMpA4AGIhQgB3wiFUI0iCADQYAGakEIaikDACADQZAHakEIaikDACADQYAIakEIaikDAHwgCSAPVK18IANB0AdqQQhqKQMAfCAKIAlUrXwgA0GQBmpBCGopAwB8IAsgClStfCADQbAGakEIaikDAHwgDCALVK18IBJCNIh8IAcgDFStfHwgFSAUVK18IhZCDIaEfCIJQpv80ZKxtMcCfkL/////////B4MiB0IAQu2n1+el45gBQgAQqQMgA0GwBWogBkIAQvm90wBCABCpAyADQdAFaiAHQgBCgcu1zvfF+gZCABCpAyADQaAFaiADKQPQCCIXIAMpA/AIfCIKIARCLIZ8IgsgAykDoAh8IgwgAykDsAd8Ig8gAykD8Ad8IhIgAykDsAV8IhQgAykD0AV8IhUgAykD4AUiGCAJfCIZQjSIIANB4AVqQQhqKQMAIANBkAhqQQhqKQMAIANBwAhqQQhqKQMAfCAIIBNUrXwgA0GgB2pBCGopAwB8IA0gCFStfCADQeAHakEIaikDAHwgDiANVK18IANBoAZqQQhqKQMAfCAQIA5UrXwgA0HwBWpBCGopAwB8IBEgEFStfCAWQjSIfCAJIBFUrXx8IBkgGFStfCIaQgyGhHwiCUKb/NGSsbTHAn5C/////////weDIghCAELtp9fnpeOYAUIAEKkDIANBwAVqIAdCAEL5vdMAQgAQqQMgA0GQBWogCEIAQoHLtc73xfoGQgAQqQMgA0GABWogCEIAQvm90wBCABCpAyADQfAEaiAIQiyGIhsgAykD8Al8Ig0gAykD0AkiHCADKQPgCXwiDiAHQiyGfCIQIAMpA7AJIh0gAykDwAl8IhEgAykDkAl8IhMgBkIshnwiFiADKQOABXwiGCADKQOACSIeIAMpA6AJfCIZIAMpA+AIfCIfIAMpA7AIfCIgIAVCLIZ8IiEgAykDwAV8IiIgAykDkAV8IiMgAykDoAUiJCAJfCIlQjSIIANBoAVqQQhqKQMAIANB0AhqQQhqKQMAIANB8AhqQQhqKQMAfCAKIBdUrXwgBEIUiHwgCyAKVK18IANBoAhqQQhqKQMAfCAMIAtUrXwgA0GwB2pBCGopAwB8IA8gDFStfCADQfAHakEIaikDAHwgEiAPVK18IANBsAVqQQhqKQMAfCAUIBJUrXwgA0HQBWpBCGopAwB8IBUgFFStfCAaQjSIfCAJIBVUrXx8ICUgJFStfCIJQgyGhHwiBEI0iCADQYAJakEIaikDACADQaAJakEIaikDAHwgGSAeVK18IANB4AhqQQhqKQMAfCAfIBlUrXwgA0GwCGpBCGopAwB8ICAgH1StfCAFQhSIfCAhICBUrXwgA0HABWpBCGopAwB8ICIgIVStfCADQZAFakEIaikDAHwgIyAiVK18IAlCNIh8IAQgI1StfCIJQgyGhHwiBUI0iCADQbAJakEIaikDACADQcAJakEIaikDAHwgESAdVK18IANBkAlqQQhqKQMAfCATIBFUrXwgBkIUiHwgFiATVK18IANBgAVqQQhqKQMAfCAYIBZUrXwgCUI0iHwgBSAYVK18IglCDIaEfCIGQjSIIANB0AlqQQhqKQMAIANB4AlqQQhqKQMAfCAOIBxUrXwgB0IUiHwgECAOVK18IAlCNIh8IAYgEFStfCIJQgyGhHwiB0I0iCAIQhSIIANB8AlqQQhqKQMAfCANIBtUrXwgCUI0iHwgByANVK18QgyGhCAGQv////////8HgyAEQv////////8Hg0KT2KiY2pznfnwiBEI/hyAFQv////////8Hg3xC/7TKsYi6hXl8IgVCP4d8QofCrH98IgZCP4cgB0L/////////B4N8IgdCP4d8QoCAgICAgHx8IglCP4ciCELtp9fnpeOYAYMgBEL/////////B4N8IgpC/////////weDIgRCAEK7osvK3sz0BEIAEKkDIANBsARqIARCAEKfzfqt8fjYBkIAEKkDIANB8ANqIAhCgcu1zvfF+gaDIAVC/////////weDfCAKQjSIfCIKQv////////8HgyIFQgBCu6LLyt7M9ARCABCpAyADQaAEaiAEQgBChOyh29zM7wJCABCpAyADQbADaiAFQgBCn836rfH42AZCABCpAyADQfACaiAIQvm90wCDIAZC/////////weDfCAKQjSIfCIKQv////////8HgyIGQgBCu6LLyt7M9ARCABCpAyADQZAEaiAEQgBC/8L0ueyd9wFCABCpAyADQaADaiAFQgBChOyh29zM7wJCABCpAyADQbACaiAGQgBCn836rfH42AZCABCpAyADQfABaiAKQjSIIAdC/////////weDfCIKQv////////8HgyIHQgBCu6LLyt7M9ARCABCpAyADQYAEaiAEQgBCmuHw25GoAkIAEKkDIANBkANqIAVCAEL/wvS57J33AUIAEKkDIANBoAJqIAZCAEKE7KHb3MzvAkIAEKkDIANBsAFqIAdCAEKfzfqt8fjYBkIAEKkDIANB8ABqIAhCgICAgICABIMgCXwgCkI0iHxC/////////weDIgRCAEK7osvK3sz0BEIAEKkDIANBgANqIAVCAEKa4fDbkagCQgAQqQMgA0GQAmogBkIAQv/C9LnsnfcBQgAQqQMgA0GgAWogB0IAQoTsodvczO8CQgAQqQMgA0EwaiAEQgBCn836rfH42AZCABCpAyADQYACaiAGQgBCmuHw25GoAkIAEKkDIANBkAFqIAdCAEL/wvS57J33AUIAEKkDIANBIGogBEIAQoTsodvczO8CQgAQqQMgA0GAAWogB0IAQprh8NuRqAJCABCpAyADQRBqIARCAEL/wvS57J33AUIAEKkDIAMgBEIAQprh8NuRqAJCABCpAyADQeAEaiADKQPwBCIFQpv80ZKxtMcCfkL/////////B4MiBEIAQu2n1+el45gBQgAQqQMgA0HQBGogBEIAQoHLtc73xfoGQgAQqQMgA0HgA2ogAykD8AMiDSADKQOwBHwiBiADKQPQBHwiByAFIAMpA+AEIgh8IgVCNIggA0HgBGpBCGopAwAgA0HwBGpBCGopAwB8IAUgCFStfCIOQgyGhHwiCEKb/NGSsbTHAn5C/////////weDIgVCAELtp9fnpeOYAUIAEKkDIANBwARqIARCAEL5vdMAQgAQqQMgA0HQA2ogBUIAQoHLtc73xfoGQgAQqQMgA0HgAmogAykDsAMiDyADKQOgBHwiCSADKQPwAnwiCiADKQPABHwiCyADKQPQA3wiDCADKQPgAyIQIAh8IhFCNIggA0HgA2pBCGopAwAgA0HwA2pBCGopAwAgA0GwBGpBCGopAwB8IAYgDVStfCADQdAEakEIaikDAHwgByAGVK18IA5CNIh8IAggB1StfHwgESAQVK18IhJCDIaEfCIHQpv80ZKxtMcCfkL/////////B4MiBkIAQu2n1+el45gBQgAQqQMgA0HAA2ogBUIAQvm90wBCABCpAyADQdACaiAGQgBCgcu1zvfF+gZCABCpAyADQeABaiADKQOgAyITIAMpA5AEfCIIIAMpA7ACfCINIAMpA/ABfCIOIAMpA8ADfCIQIAMpA9ACfCIRIAMpA+ACIhQgB3wiFUI0iCADQeACakEIaikDACADQbADakEIaikDACADQaAEakEIaikDAHwgCSAPVK18IANB8AJqQQhqKQMAfCAKIAlUrXwgA0HABGpBCGopAwB8IAsgClStfCADQdADakEIaikDAHwgDCALVK18IBJCNIh8IAcgDFStfHwgFSAUVK18IhZCDIaEfCIJQpv80ZKxtMcCfkL/////////B4MiB0IAQu2n1+el45gBQgAQqQMgA0HAAmogBkIAQvm90wBCABCpAyADQdABaiAHQgBCgcu1zvfF+gZCABCpAyADQeAAaiADKQOQAyIXIAMpA4AEfCIKIAMpA6ACfCILIARCLIZ8IgwgAykDsAF8Ig8gAykDcHwiEiADKQPAAnwiFCADKQPQAXwiFSADKQPgASIYIAl8IhlCNIggA0HgAWpBCGopAwAgA0GgA2pBCGopAwAgA0GQBGpBCGopAwB8IAggE1StfCADQbACakEIaikDAHwgDSAIVK18IANB8AFqQQhqKQMAfCAOIA1UrXwgA0HAA2pBCGopAwB8IBAgDlStfCADQdACakEIaikDAHwgESAQVK18IBZCNIh8IAkgEVStfHwgGSAYVK18IhpCDIaEfCIJQpv80ZKxtMcCfkL/////////B4MiCEIAQu2n1+el45gBQgAQqQMgA0HAAWogB0IAQvm90wBCABCpAyADQdAAaiAIQgBCgcu1zvfF+gZCABCpAyADQcAAaiAIQgBC+b3TAEIAEKkDIAAgCEIshiIbIAMpAwB8Ig0gAykDECIcIAMpA4ABfCIOIAdCLIZ8IhAgAykDkAEiHSADKQOAAnwiESADKQMgfCITIAZCLIZ8IhYgAykDQHwiGCADKQOQAiIeIAMpA4ADfCIZIAMpA6ABfCIfIAMpAzB8IiAgBUIshnwiISADKQPAAXwiIiADKQNQfCIjIAMpA2AiJCAJfCIlQjSIIANB4ABqQQhqKQMAIANBkANqQQhqKQMAIANBgARqQQhqKQMAfCAKIBdUrXwgA0GgAmpBCGopAwB8IAsgClStfCAEQhSIfCAMIAtUrXwgA0GwAWpBCGopAwB8IA8gDFStfCADQfAAakEIaikDAHwgEiAPVK18IANBwAJqQQhqKQMAfCAUIBJUrXwgA0HQAWpBCGopAwB8IBUgFFStfCAaQjSIfCAJIBVUrXx8ICUgJFStfCIJQgyGhHwiBEI0iCADQZACakEIaikDACADQYADakEIaikDAHwgGSAeVK18IANBoAFqQQhqKQMAfCAfIBlUrXwgA0EwakEIaikDAHwgICAfVK18IAVCFIh8ICEgIFStfCADQcABakEIaikDAHwgIiAhVK18IANB0ABqQQhqKQMAfCAjICJUrXwgCUI0iHwgBCAjVK18IglCDIaEfCIFQjSIIANBkAFqQQhqKQMAIANBgAJqQQhqKQMAfCARIB1UrXwgA0EgakEIaikDAHwgEyARVK18IAZCFIh8IBYgE1StfCADQcAAakEIaikDAHwgGCAWVK18IAlCNIh8IAUgGFStfCIJQgyGhHwiBkI0iCADQRBqQQhqKQMAIANBgAFqQQhqKQMAfCAOIBxUrXwgB0IUiHwgECAOVK18IAlCNIh8IAYgEFStfCIJQgyGhHwiB0I0iCAIQhSIIANBCGopAwB8IA0gG1StfCAJQjSIfCAHIA1UrXxCDIaEIAZC/////////weDIARC/////////weDQpPYqJjanOd+fCIGQj+HIAVC/////////weDfEL/tMqxiLqFeXwiBUI/h3xCh8Ksf3wiCEI/hyAHQv////////8Hg3wiB0I/h3xCgICAgICAfHwiCUI/hyIEQu2n1+el45gBgyAGQv////////8Hg3wiBkL/////////B4M3AwAgACAEQoHLtc73xfoGgyAFQv////////8Hg3wgBkI0iHwiBUL/////////B4M3AwggACAEQvm90wCDIAhC/////////weDfCAFQjSIfCIFQv////////8HgzcDECAAIAVCNIggB0L/////////B4N8IgVC/////////weDNwMYIAAgBEKAgICAgIAEgyAJfCAFQjSIfEL/////////B4M3AyAgA0GACmokAAvlKwMIfwR+BHwjAEGQBGsiDSQAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCALRQ0AIAsoAgAiDkF/Rg0BIAsgDkEBajYCAAJAQQAoApC/RkEDRg0AIA1BAToAwAMgDSANQcADajYCcEGQv8YAQQAgDUHw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AiAQIREgAg0ACyAQQiCIpyECDAILA0AgEEJ/fCEQIBEgD3wiEiARVCECIBIhESACRQ0ACwsgEkIgiKchAiAQpyEIIBKnIQULIAMgCDYCRAJAAkACQCACDQBBACEJIAWtQiCGIA5C/////w+DhCIRIA9UDQEgD1ANAiARIA+AIg6nIQkgESAOIA9+fSIOQiCIpyEFDAELIAWtIRECQAJAAkAgAiAPQiCIIhKnTw0AIBEgAq1CIIYgEYQgEoAiECASfn1CIIYgDkL/////D4MgECAPQv////8Pg34iDn18IhEgDkJ/hVYNASARIQ4MAgsgDkL/////D4MgD0Ighn0gEUIghnwhEUEAIQkDQCAJQX9qIQkgESAPfCIOIBFaIQIgDiERIAINAAsgDkIgiKchBQwCCwNAIBBCf3whECARIA98Ig4gEVQhAiAOIREgAkUNAAsLIA5CIIinIQUgEKchCQsgAyAJNgJAIA9C/////w+DIRVCACAPQiCGfSEWIA9CIIgiF6chDEEAIQRBACEGA0ACQAJAAkACQAJAAkACQCAFrSIQQiCGIA5C/////w+DIg6EIhFCAFINACABQX9KDQJBACABayICQQkgAkEJSRshBQwBCwJAAkAgAUEcRg0AIANBKGogA0HAAGogARCSAiADKAIoQQFHDREgAygCLCIFDQELAkAgEUIAUw0AIBFCAYYiDiAPVg0AIA4gD1INDyADLQBAQQFxRQ0PCyADQSBqIANBwABqIAEQ/gIgAygCIA0QIAMoAiQhAQwOCyAFQQlLDQJBASEGIAMoAkghBCADKAJEIQggAygCQCEJCyADIAitIAVBAnRB6M7BAGo1AgAiEX4gCa0gEX4iE0IgiHwiFEIgiCAErSARfnwiEqciBDYCSCASQoCAgIAQWg0OAkAgDiARfiIOQiCIIBEgEH58IhBCIIinIgINAEEAIQIgEEIghiAOQv////8Pg4QiESAPVA0FIA9QDQMgESARIA+AIhIgD359Ig5CIIghECASpyECDAULAkACQCACIAxPDQAgECAQIBeAIhEgF359QiCGIA5C/////w+DIBEgFX4iEH18Ig4gEEJ/hVYNAQwFCyAOQv////8PgyAWhCAQQiCGfCERQQAhAgNAIAJBf2ohAiARIA98Ig4gEVohCCAOIREgCA0ACyAOQiCIIRAMBQsDQCAR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Aw0AQRshAwwBCyALQRtqIgdBJ0sNASANIAdBAnRqIAM2AgBBHCEDCyADIAtqIgMgDiAOIANJGyEOIAohBwwBCwsgB0EoQcSmwgAQxwMACyADQSggAxD1BQALIAVBKEHEpsIAEMcDAAsgAEEEaiANQaABEP8FGiAAIA42AgALIAJBoAFqJAAgAAu7IQIifwp+IwBBgA9rIgIkACACQeANakEIaiABQTBqIgMpAwAiJCABQQhqIgQpAwAiJXw3AwAgAkHgDWpBEGogAUE4aiIFKQMAIiYgAUEQaiIGKQMAIid8NwMAIAJB4A1qQRhqIAFBwABqIgcpAwAiKCABQRhqIggpAwAiKXw3AwAgAkHgDWpBIGogAUHIAGoiCSkDACIqIAFBIGoiCikDACIrfDcDACACQeANakEwaiAkICV9QvD///////8/fCIkQv////////8DgyABKQMoIiUgASkDACIsfULQ/f//////P3wiLUIziHw3AwAgAkHgDWpBOGogJiAnfULw////////P3wiJkL/////////A4MgJEIziHw3AwAgAkHgDWpBwABqICggKX1C8P///////z98IiRC/////////wODICZCM4h8NwMAIAJB4A1qQcgAaiAqICt9QvD///////8/fCImQv////////8DgyAkQjOIfDcDACACICUgLHw3A+ANIAIgJkIziEITfiAtQv////////8Dg3w3A4gOIAJB4A1qQfAAaiABQfAAaiILKQMANwMAIAJB4A1qQegAaiABQegAaiIMKQMANwMAIAJB4A1qQeAAaiABQeAAaiINKQMANwMAIAJB4A1qQdgAaiABQdgAaiIOKQMANwMAIAIgASkDUDcDsA4gAkHgDWpB+ABqIg8gAUH4AGpBqOvAABBQIAIgAkHgDWpBoAEQ/wUiAkGgAWogAkHgDWpBoAEQ/wUhECACQcACaiACQeANakGgARD/BSERIAJB4ANqIAJB4A1qQaABEP8FIRIgAkGABWogAkHgDWpBoAEQ/wUhEyACQaAGaiACQeANakGgARD/BSEUIAJBwAdqIAJB4A1qQaABEP8FIRUgAkHgCGogAkHgDWpBoAEQ/wUhFiACQcAMakEgaiAKKQMANwMAIAJBwAxqQRhqIAgpAwA3AwAgAkHADGpBEGogBikDADcDACACQcAMakEIaiAEKQMANwMAIAJBwAxqQTBqIgYgAykDADcDACACQcAMakE4aiIIIAUpAwA3AwAgAkHADGpBwABqIgUgBykDADcDACACQcAMakHIAGoiByAJKQMANwMAIAIgASkDADcDwAwgAiABKQMoNwPoDCACQcAMakHwAGoiCSALKQMANwMAIAJBwAxqQegAaiIKIAwpAwA3AwAgAkHADGpB4ABqIgsgDSkDADcDACACQcAMakHYAGoiDCAOKQMANwMAIAIgASkDUDcDkA0gAkHgDWogAkHADGoQeCACQYAKaiACQeANaiAPEFAgAkGACmpBKGogAkHgDWpBKGoiASACQeANakHQAGoiAxBQIAJBgApqQdAAaiADIA8QUCACQYAKakH4AGogAkHgDWogARBQIAJB4A1qIAJBgApqIAIQbSACQcAMaiACQeANaiAPEFAgAkHADGpBKGoiDSABIAMQUCACQcAMakHQAGoiDiADIA8QUCACQcAMakH4AGoiBCACQeANaiABEFAgAkGgC2pBCGoiFyAGKQMAIiQgAikDyAwiJXw3AwAgAkGgC2pBEGoiGCAIKQMAIiYgAikD0AwiJ3w3AwAgAkGgC2pBGGoiGSAFKQMAIiggAikD2AwiKXw3AwAgAkGgC2pBIGoiGiAHKQMAIiogAikD4AwiK3w3AwAgAkGgC2pBMGoiGyAkICV9QvD///////8/fCIkQv////////8DgyACKQPoDCIlIAIpA8AMIix9QtD9//////8/fCItQjOIfDcDACACQaALakE4aiIcICYgJ31C8P///////z98IiZC/////////wODICRCM4h8NwMAIAJBoAtqQcAAaiIdICggKX1C8P///////z98IiRC/////////wODICZCM4h8NwMAIAJBoAtqQcgAaiIeICogK31C8P///////z98IiZC/////////wODICRCM4h8NwMAIAIgJSAsfDcDoAsgAiAmQjOIQhN+IC1C/////////wODfDcDyAsgAkGgC2pB8ABqIh8gCSkDADcDACACQaALakHoAGoiICAKKQMANwMAIAJBoAtqQeAAaiIhIAspAwA3AwAgAkGgC2pB2ABqIiIgDCkDADcDACACIAIpA5ANNwPwCyACQaALakH4AGoiIyAEQajrwAAQUCACQeANaiACQYAKaiAQIAJBoAtqQaABEP8FEG0gAkHADGogAkHgDWogDxBQIA0gASADEFAgDiADIA8QUCAEIAJB4A1qIAEQUCAXIAYpAwAiJCACKQPIDCIlfDcDACAYIAgpAwAiJiACKQPQDCInfDcDACAZIAUpAwAiKCACKQPYDCIpfDcDACAaIAcpAwAiKiACKQPgDCIrfDcDACAbICQgJX1C8P///////z98IiRC/////////wODIAIpA+gMIiUgAikDwAwiLH1C0P3//////z98Ii1CM4h8NwMAIBwgJiAnfULw////////P3wiJkL/////////A4MgJEIziHw3AwAgHSAoICl9QvD///////8/fCIkQv////////8DgyAmQjOIfDcDACAeICogK31C8P///////z98IiZC/////////wODICRCM4h8NwMAIAIgJSAsfDcDoAsgAiAmQjOIQhN+IC1C/////////wODfDcDyAsgHyAJKQMANwMAICAgCikDADcDACAhIAspAwA3AwAgIiAMKQMANwMAIAIgAikDkA03A/ALICMgBEGo68AAEFAgAkHgDWogAkGACmogESACQaALakGgARD/BRBtIAJBwAxqIAJB4A1qIA8QUCANIAEgAxBQIA4gAyAPEFAgBCACQeANaiABEFAgFyAGKQMAIiQgAikDyAwiJXw3AwAgGCAIKQMAIiYgAikD0AwiJ3w3AwAgGSAFKQMAIiggAikD2AwiKXw3AwAgGiAHKQMAIiogAikD4AwiK3w3AwAgGyAkICV9QvD///////8/fCIkQv////////8DgyACKQPoDCIlIAIpA8AMIix9QtD9//////8/fCItQjOIfDcDACAcICYgJ31C8P///////z98IiZC/////////wODICRCM4h8NwMAIB0gKCApfULw////////P3wiJEL/////////A4MgJkIziHw3AwAgHiAqICt9QvD///////8/fCImQv////////8DgyAkQjOIfDcDACACICUgLHw3A6ALIAIgJkIziEITfiAtQv////////8Dg3w3A8gLIB8gCSkDADcDACAgIAopAwA3AwAgISALKQMANwMAICIgDCkDADcDACACIAIpA5ANNwPwCyAjIARBqOvAABBQIAJB4A1qIAJBgApqIBIgAkGgC2pBoAEQ/wUQbSACQcAMaiACQeANaiAPEFAgDSABIAMQUCAOIAMgDxBQIAQgAkHgDWogARBQIBcgBikDACIkIAIpA8gMIiV8NwMAIBggCCkDACImIAIpA9AMIid8NwMAIBkgBSkDACIoIAIpA9gMIil8NwMAIBogBykDACIqIAIpA+AMIit8NwMAIBsgJCAlfULw////////P3wiJEL/////////A4MgAikD6AwiJSACKQPADCIsfULQ/f//////P3wiLUIziHw3AwAgHCAmICd9QvD///////8/fCImQv////////8DgyAkQjOIfDcDACAdICggKX1C8P///////z98IiRC/////////wODICZCM4h8NwMAIB4gKiArfULw////////P3wiJkL/////////A4MgJEIziHw3AwAgAiAlICx8NwOgCyACICZCM4hCE34gLUL/////////A4N8NwPICyAfIAkpAwA3AwAgICAKKQMANwMAICEgCykDADcDACAiIAwpAwA3AwAgAiACKQOQDTcD8AsgIyAEQajrwAAQUCACQeANaiACQYAKaiATIAJBoAtqQaABEP8FEG0gAkHADGogAkHgDWogDxBQIA0gASADEFAgDiADIA8QUCAEIAJB4A1qIAEQUCAXIAYpAwAiJCACKQPIDCIlfDcDACAYIAgpAwAiJiACKQPQDCInfDcDACAZIAUpAwAiKCACKQPYDCIpfDcDACAaIAcpAwAiKiACKQPgDCIrfDcDACAbICQgJX1C8P///////z98IiRC/////////wODIAIpA+gMIiUgAikDwAwiLH1C0P3//////z98Ii1CM4h8NwMAIBwgJiAnfULw////////P3wiJkL/////////A4MgJEIziHw3AwAgHSAoICl9QvD///////8/fCIkQv////////8DgyAmQjOIfDcDACAeICogK31C8P///////z98IiZC/////////wODICRCM4h8NwMAIAIgJSAsfDcDoAsgAiAmQjOIQhN+IC1C/////////wODfDcDyAsgHyAJKQMANwMAICAgCikDADcDACAhIAspAwA3AwAgIiAMKQMANwMAIAIgAikDkA03A/ALICMgBEGo68AAEFAgAkHgDWogAkGACmogFCACQaALakGgARD/BRBtIAJBwAxqIAJB4A1qIA8QUCANIAEgAxBQIA4gAyAPEFAgBCACQeANaiABEFAgFyAGKQMAIiQgAikDyAwiJXw3AwAgGCAIKQMAIiYgAikD0AwiJ3w3AwAgGSAFKQMAIiggAikD2AwiKXw3AwAgGiAHKQMAIiogAikD4AwiK3w3AwAgGyAkICV9QvD///////8/fCIkQv////////8DgyACKQPoDCIlIAIpA8AMIix9QtD9//////8/fCItQjOIfDcDACAcICYgJ31C8P///////z98IiZC/////////wODICRCM4h8NwMAIB0gKCApfULw////////P3wiJEL/////////A4MgJkIziHw3AwAgHiAqICt9QvD///////8/fCImQv////////8DgyAkQjOIfDcDACACICUgLHw3A6ALIAIgJkIziEITfiAtQv////////8Dg3w3A8gLIB8gCSkDADcDACAgIAopAwA3AwAgISALKQMANwMAICIgDCkDADcDACACIAIpA5ANNwPwCyAjIARBqOvAABBQIAJB4A1qIAJBgApqIBUgAkGgC2pBoAEQ/wUQbSACQcAMaiACQeANaiAPEFAgDSABIAMQUCAOIAMgDxBQIAQgAkHgDWogARBQIBcgBikDACIkIAIpA8gMIiV8NwMAIBggCCkDACImIAIpA9AMIid8NwMAIBkgBSkDACIoIAIpA9gMIil8NwMAIBogBykDACIqIAIpA+AMIit8NwMAIBsgJCAlfULw////////P3wiJEL/////////A4MgAikD6AwiJSACKQPADCIsfULQ/f//////P3wiLUIziHw3AwAgHCAmICd9QvD///////8/fCImQv////////8DgyAkQjOIfDcDACAdICggKX1C8P///////z98IiRC/////////wODICZCM4h8NwMAIB4gKiArfULw////////P3wiJkL/////////A4MgJEIziHw3AwAgAiAlICx8NwOgCyACICZCM4hCE34gLUL/////////A4N8NwPICyAfIAkpAwA3AwAgICAKKQMANwMAICEgCykDADcDACAiIAwpAwA3AwAgAiACKQOQDTcD8AsgIyAEQajrwAAQUCAWIAJBoAtqQaABEP8FGiAAIAJBgAoQ/wUaIAJBgA9qJAALriACEH8BfiMAQRBrIgEkAAJAAkACQCAAQfUBSQ0AEL4GIQJBACEDIAIgAkEIEIEFQRRBCBCBBWpBEEEIEIEFamtB+P97akF3cUF9aiIC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QbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADAELIAEgBUF+aiIGNgIEIAEgB0ECajYCAAJAAkAgBEUNACAHLQABIQkgAyACQX1qIgQ2AgQgBg0BIANCgcoANwPgASADQeABahC4BCEBIABBAToAACAAQQRqIAE2AgAMAgtBAiADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwBCyABIAVBfWoiBjYCBCABIAdBA2o2AgACQAJAIARFDQAgBy0AAiEEIAMgAkF8ajYCBCAGDQEgA0KBygA3A+ABIANB4AFqELgEIQEgAEEBOgAAIABBBGogATYCAAwCC0EDIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADAELIAEgBUF8ajYCBCABIAdBBGo2AgAgBy0AAyEBIANBCGogAxCTAwJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCADLQAIDQACQCADLQAJDQBBBCADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQAKIQIgA0EQaiADEJMDIAMtABANAQJAIAMtABENAEEFIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtABIhByADQRhqIAMQkwMgAy0AGA0CAkAgAy0AGQ0AQQYgA0HoAWpBtL3GABCwAiEBIABBAToAACAAQQRqIAE2AgAMHAsgAy0AGiEFIANBIGogAxCTAyADLQAgDQMCQCADLQAhDQBBByADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQAiIQYgA0EoaiADEJMDIAMtACgNBAJAIAMtACkNAEEIIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtACohCiADQTBqIAMQkwMgAy0AMA0FAkAgAy0AMQ0AQQkgA0HoAWpBtL3GABCwAiEBIABBAToAACAAQQRqIAE2AgAMHAsgAy0AMiELIANBOGogAxCTAyADLQA4DQYCQCADLQA5DQBBCiADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQA6IQwgA0HAAGogAxCTAyADLQBADQcCQCADLQBBDQBBCyADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQBCIQ0gA0HIAGogAxCTAyADLQBIDQgCQCADLQBJDQBBDCADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQBKIQ4gA0HQAGogAxCTAyADLQBQDQkCQCADLQBRDQBBDSADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQBSIQ8gA0HYAGogAxCTAyADLQBYDQoCQCADLQBZDQBBDiADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQBaIRAgA0HgAGogAxCTAyADLQBgDQsCQCADLQBhDQBBDyADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQBiIREgA0HoAGogAxCTAyADLQBoDQwCQCADLQBpDQBBECADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQBqIRIgA0HwAGogAxCTAyADLQBwDQ0CQCADLQBxDQBBESADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQByIRMgA0H4AGogAxCTAyADLQB4DQ4CQCADLQB5DQBBEiADQegBakG0vcYAELACIQEgAEEBOgAAIABBBGogATYCAAwcCyADLQB6IRQgA0GAAWogAxCTAyADLQCAAQ0PAkAgAy0AgQENAEETIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtAIIBIRUgA0GIAWogAxCTAyADLQCIAQ0QAkAgAy0AiQENAEEUIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtAIoBIRYgA0GQAWogAxCTAyADLQCQAQ0RAkAgAy0AkQENAEEVIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtAJIBIRcgA0GYAWogAxCTAyADLQCYAQ0SAkAgAy0AmQENAEEWIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtAJoBIRggA0GgAWogAxCTAyADLQCgAQ0TAkAgAy0AoQENAEEXIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtAKIBIRkgA0GoAWogAxCTAyADLQCoAQ0UAkAgAy0AqQENAEEYIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtAKoBIRogA0GwAWogAxCTAyADLQCwAQ0VAkAgAy0AsQENAEEZIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtALIBIRsgA0G4AWogAxCTAyADLQC4AQ0WAkAgAy0AuQENAEEaIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtALoBIRwgA0HAAWogAxCTAyADLQDAAQ0XAkAgAy0AwQENAEEbIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtAMIBIR0gA0HIAWogAxCTAyADLQDIAQ0YAkAgAy0AyQENAEEcIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtAMoBIR4gA0HQAWogAxCTAyADLQDQAQ0ZAkAgAy0A0QENAEEdIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtANIBIR8gA0HYAWogAxCTAyADLQDYAQ0aAkAgAy0A2QENAEEeIANB6AFqQbS9xgAQsAIhASAAQQE6AAAgAEEEaiABNgIADBwLIAMtANoBISAgA0HgAWogAxCTAwJAAkACQCADLQDgAQ0AIAMtAOEBDQJBHyADQegBakG0vcYAELACIQEMAQsgAygC5AEhAQsgAEEBOgAAIABBBGogATYCAAwcCyAAIAg6AAEgAEEgaiADLQDiAToAACAAQR9qICA6AAAgAEEeaiAfOgAAIABBHWogHjoAACAAQRxqIB06AAAgAEEbaiAcOgAAIABBGmogGzoAACAAQRlqIBo6AAAgAEEYaiAZOgAAIABBF2ogGDoAACAAQRZqIBc6AAAgAEEVaiAWOgAAIABBFGogFToAACAAQRNqIBQ6AAAgAEESaiATOgAAIABBEWogEjoAACAAQRBqIBE6AAAgAEEPaiAQOgAAIABBDmogDzoAACAAQQ1qIA46AAAgAEEMaiANOgAAIABBC2ogDDoAACAAQQpqIAs6AAAgAEEJaiAKOgAAIABBCGogBjoAACAAQQdqIAU6AAAgAEEGaiAHOgAAIABBBWogAjoAACAAQQRqIAE6AAAgAEEDaiAEOgAAIABBAmogCToAACAAQQA6AAAMGwsgAEEBOgAAIABBBGogAygCDDYCAAwaCyAAQQE6AAAgAEEEaiADKAIUNgIADBkLIABBAToAACAAQQRqIAMoAhw2AgAMGAsgAEEBOgAAIABBBGogAygCJDYCAAwXCyAAQQE6AAAgAEEEaiADKAIsNgIADBYLIABBAToAACAAQQRqIAMoAjQ2AgAMFQsgAEEBOgAAIABBBGogAygCPDYCAAwUCyAAQQE6AAAgAEEEaiADKAJENgIADBMLIABBAToAACAAQQRqIAMoAkw2AgAMEgsgAEEBOgAAIABBBGogAygCVDYCAAwRCyAAQQE6AAAgAEEEaiADKAJcNgIADBALIABBAToAACAAQQRqIAMoAmQ2AgAMDwsgAEEBOgAAIABBBGogAygCbDYCAAwOCyAAQQE6AAAgAEEEaiADKAJ0NgIADA0LIABBAToAACAAQQRqIAMoAnw2AgAMDAsgAEEBOgAAIABBBGogAygChAE2AgAMCwsgAEEBOgAAIABBBGogAygCjAE2AgAMCgsgAEEBOgAAIABBBGogAygClAE2AgAMCQsgAEEBOgAAIABBBGogAygCnAE2AgAMCAsgAEEBOgAAIABBBGogAygCpAE2AgAMBwsgAEEBOgAAIABBBGogAygCrAE2AgAMBgsgAEEBOgAAIABBBGogAygCtAE2AgAMBQsgAEEBOgAAIABBBGogAygCvAE2AgAMBAsgAEEBOgAAIABBBGogAygCxAE2AgAMAwsgAEEBOgAAIABBBGogAygCzAE2AgAMAgsgAEEBOgAAIABBBGogAygC1AE2AgAMAQsgAEEBOgAAIABBBGogAygC3AE2AgALIANB8AFqJAAL+BgCAX8ifiMAQdAFayIDJAAgA0GABWogARD/ASADQagFaiACEP8BIANB8ARqIAMpA8gFIAMpA6AFfCADKQPABSADKQOYBXwgAykDuAUgAykDkAV8IAMpA6gFIAMpA4AFfCIEQjSIIAMpA4gFfCADKQOwBXwiBUI0iHwiBkI0iHwiB0I0iHxC/////////weDIAZC/////////weDIARC/////////weDQpPYqJjanOd+fCIEQj+HIAVC/////////weDfEL/tMqxiLqFeXwiBUI/h3xCh8Ksf3wiBkI/hyAHQv////////8Hg3wiB0I/h3xCgICAgICAfHwiCEI/hyIJQu2n1+el45gBgyAEQv////////8Hg3wiCkL/////////B4MiBEIAQu3Nh7nWl9IHQgAQqQMgA0GwBGogBEIAQtrIn+Pa1u4BQgAQqQMgA0HwA2ogCUKBy7XO98X6BoMgBUL/////////B4N8IApCNIh8IgpC/////////weDIgVCAELtzYe51pfSB0IAEKkDIANBoARqIARCAEKbytfZ/v//B0IAEKkDIANBsANqIAVCAELayJ/j2tbuAUIAEKkDIANB8AJqIAlC+b3TAIMgBkL/////////B4N8IApCNIh8IgpC/////////weDIgZCAELtzYe51pfSB0IAEKkDIANBkARqIARCAEL/////////B0IAEKkDIANBoANqIAVCAEKbytfZ/v//B0IAEKkDIANBsAJqIAZCAELayJ/j2tbuAUIAEKkDIANB8AFqIApCNIggB0L/////////B4N8IgpC/////////weDIgdCAELtzYe51pfSB0IAEKkDIANBgARqIARCAEL///////8DQgAQqQMgA0GQA2ogBUIAQv////////8HQgAQqQMgA0GgAmogBkIAQpvK19n+//8HQgAQqQMgA0GwAWogB0IAQtrIn+Pa1u4BQgAQqQMgA0HwAGogCUKAgICAgIAEgyAIfCAKQjSIfEL/////////B4MiBEIAQu3Nh7nWl9IHQgAQqQMgA0GAA2ogBUIAQv///////wNCABCpAyADQZACaiAGQgBC/////////wdCABCpAyADQaABaiAHQgBCm8rX2f7//wdCABCpAyADQTBqIARCAELayJ/j2tbuAUIAEKkDIANBgAJqIAZCAEL///////8DQgAQqQMgA0GQAWogB0IAQv////////8HQgAQqQMgA0EgaiAEQgBCm8rX2f7//wdCABCpAyADQYABaiAHQgBC////////A0IAEKkDIANBEGogBEIAQv////////8HQgAQqQMgAyAEQgBC////////A0IAEKkDIANB4ARqIAMpA/AEIgVCm/zRkrG0xwJ+Qv////////8HgyIEQgBC7afX56XjmAFCABCpAyADQdAEaiAEQgBCgcu1zvfF+gZCABCpAyADQeADaiADKQPwAyILIAMpA7AEfCIGIAMpA9AEfCIHIAUgAykD4AQiCXwiBUI0iCADQeAEakEIaikDACADQfAEakEIaikDAHwgBSAJVK18IgxCDIaEfCIJQpv80ZKxtMcCfkL/////////B4MiBUIAQu2n1+el45gBQgAQqQMgA0HABGogBEIAQvm90wBCABCpAyADQdADaiAFQgBCgcu1zvfF+gZCABCpAyADQeACaiADKQOwAyINIAMpA6AEfCIIIAMpA/ACfCIKIAMpA8AEfCIOIAMpA9ADfCIPIAMpA+ADIhAgCXwiEUI0iCADQeADakEIaikDACADQfADakEIaikDACADQbAEakEIaikDAHwgBiALVK18IANB0ARqQQhqKQMAfCAHIAZUrXwgDEI0iHwgCSAHVK18fCARIBBUrXwiEkIMhoR8IgdCm/zRkrG0xwJ+Qv////////8HgyIGQgBC7afX56XjmAFCABCpAyADQcADaiAFQgBC+b3TAEIAEKkDIANB0AJqIAZCAEKBy7XO98X6BkIAEKkDIANB4AFqIAMpA6ADIhMgAykDkAR8IgkgAykDsAJ8IgsgAykD8AF8IgwgAykDwAN8IhAgAykD0AJ8IhEgAykD4AIiFCAHfCIVQjSIIANB4AJqQQhqKQMAIANBsANqQQhqKQMAIANBoARqQQhqKQMAfCAIIA1UrXwgA0HwAmpBCGopAwB8IAogCFStfCADQcAEakEIaikDAHwgDiAKVK18IANB0ANqQQhqKQMAfCAPIA5UrXwgEkI0iHwgByAPVK18fCAVIBRUrXwiFkIMhoR8IghCm/zRkrG0xwJ+Qv////////8HgyIHQgBC7afX56XjmAFCABCpAyADQcACaiAGQgBC+b3TAEIAEKkDIANB0AFqIAdCAEKBy7XO98X6BkIAEKkDIANB4ABqIAMpA5ADIhcgAykDgAR8IgogAykDoAJ8Ig4gBEIshnwiDyADKQOwAXwiDSADKQNwfCISIAMpA8ACfCIUIAMpA9ABfCIVIAMpA+ABIhggCHwiGUI0iCADQeABakEIaikDACADQaADakEIaikDACADQZAEakEIaikDAHwgCSATVK18IANBsAJqQQhqKQMAfCALIAlUrXwgA0HwAWpBCGopAwB8IAwgC1StfCADQcADakEIaikDAHwgECAMVK18IANB0AJqQQhqKQMAfCARIBBUrXwgFkI0iHwgCCARVK18fCAZIBhUrXwiGkIMhoR8IghCm/zRkrG0xwJ+Qv////////8HgyIJQgBC7afX56XjmAFCABCpAyADQcABaiAHQgBC+b3TAEIAEKkDIANB0ABqIAlCAEKBy7XO98X6BkIAEKkDIANBwABqIAlCAEL5vdMAQgAQqQMgAyAJQiyGIhsgAykDAHwiCyADKQMQIhwgAykDgAF8IgwgB0IshnwiECADKQOQASIdIAMpA4ACfCIRIAMpAyB8IhMgBkIshnwiFiADKQNAfCIYIAMpA5ACIh4gAykDgAN8IhkgAykDoAF8Ih8gAykDMHwiICAFQiyGfCIhIAMpA8ABfCIiIAMpA1B8IiMgAykDYCIkIAh8IiVCNIggA0HgAGpBCGopAwAgA0GQA2pBCGopAwAgA0GABGpBCGopAwB8IAogF1StfCADQaACakEIaikDAHwgDiAKVK18IARCFIh8IA8gDlStfCADQbABakEIaikDAHwgDSAPVK18IANB8ABqQQhqKQMAfCASIA1UrXwgA0HAAmpBCGopAwB8IBQgElStfCADQdABakEIaikDAHwgFSAUVK18IBpCNIh8IAggFVStfHwgJSAkVK18IghCDIaEfCIEQjSIIANBkAJqQQhqKQMAIANBgANqQQhqKQMAfCAZIB5UrXwgA0GgAWpBCGopAwB8IB8gGVStfCADQTBqQQhqKQMAfCAgIB9UrXwgBUIUiHwgISAgVK18IANBwAFqQQhqKQMAfCAiICFUrXwgA0HQAGpBCGopAwB8ICMgIlStfCAIQjSIfCAEICNUrXwiCEIMhoR8IgVCNIggA0GQAWpBCGopAwAgA0GAAmpBCGopAwB8IBEgHVStfCADQSBqQQhqKQMAfCATIBFUrXwgBkIUiHwgFiATVK18IANBwABqQQhqKQMAfCAYIBZUrXwgCEI0iHwgBSAYVK18IghCDIaEfCIGQjSIIANBEGpBCGopAwAgA0GAAWpBCGopAwB8IAwgHFStfCAHQhSIfCAQIAxUrXwgCEI0iHwgBiAQVK18IghCDIaEfCIHQjSIIAlCFIggA0EIaikDAHwgCyAbVK18IAhCNIh8IAcgC1StfEIMhoQgBkL/////////B4MgBUL/////////B4MgBEL/////////B4NCk9iomNqc5358IgVCP4d8Qv+0yrGIuoV5fCIGQj+HfEKHwqx/fCIJQj+HIAdC/////////weDfCIHQj+HfEKAgICAgIB8fCIIQj+HIgRC7afX56XjmAGDIAVC/////////weDfCIFQv////////8HgzcDqAUgAyAEQoHLtc73xfoGgyAGQv////////8Hg3wgBUI0iHwiBUL/////////B4M3A7AFIAMgBEL5vdMAgyAJQv////////8Hg3wgBUI0iHwiBUL/////////B4M3A7gFIAMgBUI0iCAHQv////////8Hg3wiBUL/////////B4M3A8AFIAMgBEKAgICAgIAEgyAIfCAFQjSIfEL/////////B4M3A8gFIAAgA0GoBWoQ+gEgA0HQBWokAAvUFAIBfyJ+IwBBgAVrIgMkACADQfABaiACKQMAIgRCACABKQMAIgVCABCpAyADQYACaiACKQMIIgZCACAFQgAQqQMgA0HAAmogASkDCCIHQgAgBEIAEKkDIANBkAJqIAIpAxAiCEIAIAVCABCpAyADQYADaiAHQgAgBkIAEKkDIANB0AJqIAEpAxAiCUIAIARCABCpAyADQaACaiACKQMYIgpCACAFQgAQqQMgA0HAA2ogCEIAIAdCABCpAyADQZADaiAJQgAgBkIAEKkDIANB4AJqIAEpAxgiC0IAIARCABCpAyADQbACaiACKQMgIgxCACAFQgAQqQMgA0HQA2ogCkIAIAdCABCpAyADQfADaiAJQgAgCEIAEKkDIANBoANqIAtCACAGQgAQqQMgA0HwAmogASkDICIFQgAgBEIAEKkDIANB4ANqIAxCACAHQgAQqQMgA0GgBGogCkIAIAlCABCpAyADQYAEaiALQgAgCEIAEKkDIANBsANqIAVCACAGQgAQqQMgA0GwBGogDEIAIAlCABCpAyADQcAEaiALQgAgCkIAEKkDIANBkARqIAVCACAIQgAQqQMgA0HgBGogDEIAIAtCABCpAyADQdAEaiAFQgAgCkIAEKkDIANB8ARqIAVCACAMQgAQqQMgA0HgAWogAykD8AEiBUKb/NGSsbTHAn5C/////////weDIgRCAELtp9fnpeOYAUIAEKkDIANB0AFqIARCAEKBy7XO98X6BkIAEKkDIANBwAFqIAMpA8ACIg0gAykDgAJ8IgYgAykD0AF8IgcgBSADKQPgASIIfCIFQjSIIANB4AFqQQhqKQMAIANB8AFqQQhqKQMAfCAFIAhUrXwiDkIMhoR8IghCm/zRkrG0xwJ+Qv////////8HgyIFQgBC7afX56XjmAFCABCpAyADQZABaiAEQgBC+b3TAEIAEKkDIANBsAFqIAVCAEKBy7XO98X6BkIAEKkDIANBgAFqIAMpA5ACIg8gAykDgAN8IgkgAykD0AJ8IgogAykDkAF8IgsgAykDsAF8IgwgAykDwAEiECAIfCIRQjSIIANBwAFqQQhqKQMAIANBwAJqQQhqKQMAIANBgAJqQQhqKQMAfCAGIA1UrXwgA0HQAWpBCGopAwB8IAcgBlStfCAOQjSIfCAIIAdUrXx8IBEgEFStfCISQgyGhHwiB0Kb/NGSsbTHAn5C/////////weDIgZCAELtp9fnpeOYAUIAEKkDIANBoAFqIAVCAEL5vdMAQgAQqQMgA0HwAGogBkIAQoHLtc73xfoGQgAQqQMgA0HgAGogAykDkAMiEyADKQPAA3wiCCADKQOgAnwiDSADKQPgAnwiDiADKQOgAXwiECADKQNwfCIRIAMpA4ABIhQgB3wiFUI0iCADQYABakEIaikDACADQZACakEIaikDACADQYADakEIaikDAHwgCSAPVK18IANB0AJqQQhqKQMAfCAKIAlUrXwgA0GQAWpBCGopAwB8IAsgClStfCADQbABakEIaikDAHwgDCALVK18IBJCNIh8IAcgDFStfHwgFSAUVK18IhZCDIaEfCIJQpv80ZKxtMcCfkL/////////B4MiB0IAQu2n1+el45gBQgAQqQMgA0EwaiAGQgBC+b3TAEIAEKkDIANB0ABqIAdCAEKBy7XO98X6BkIAEKkDIANBIGogAykD0AMiFyADKQPwA3wiCiAEQiyGfCILIAMpA6ADfCIMIAMpA7ACfCIPIAMpA/ACfCISIAMpAzB8IhQgAykDUHwiFSADKQNgIhggCXwiGUI0iCADQeAAakEIaikDACADQZADakEIaikDACADQcADakEIaikDAHwgCCATVK18IANBoAJqQQhqKQMAfCANIAhUrXwgA0HgAmpBCGopAwB8IA4gDVStfCADQaABakEIaikDAHwgECAOVK18IANB8ABqQQhqKQMAfCARIBBUrXwgFkI0iHwgCSARVK18fCAZIBhUrXwiGkIMhoR8IglCm/zRkrG0xwJ+Qv////////8HgyIIQgBC7afX56XjmAFCABCpAyADQcAAaiAHQgBC+b3TAEIAEKkDIANBEGogCEIAQoHLtc73xfoGQgAQqQMgAyAIQgBC+b3TAEIAEKkDIAAgCEIshiIbIAMpA/AEfCINIAMpA9AEIhwgAykD4AR8Ig4gB0IshnwiECADKQOwBCIdIAMpA8AEfCIRIAMpA5AEfCITIAZCLIZ8IhYgAykDAHwiGCADKQOABCIeIAMpA6AEfCIZIAMpA+ADfCIfIAMpA7ADfCIgIAVCLIZ8IiEgAykDQHwiIiADKQMQfCIjIAMpAyAiJCAJfCIlQjSIIANBIGpBCGopAwAgA0HQA2pBCGopAwAgA0HwA2pBCGopAwB8IAogF1StfCAEQhSIfCALIApUrXwgA0GgA2pBCGopAwB8IAwgC1StfCADQbACakEIaikDAHwgDyAMVK18IANB8AJqQQhqKQMAfCASIA9UrXwgA0EwakEIaikDAHwgFCASVK18IANB0ABqQQhqKQMAfCAVIBRUrXwgGkI0iHwgCSAVVK18fCAlICRUrXwiCUIMhoR8IgRCNIggA0GABGpBCGopAwAgA0GgBGpBCGopAwB8IBkgHlStfCADQeADakEIaikDAHwgHyAZVK18IANBsANqQQhqKQMAfCAgIB9UrXwgBUIUiHwgISAgVK18IANBwABqQQhqKQMAfCAiICFUrXwgA0EQakEIaikDAHwgIyAiVK18IAlCNIh8IAQgI1StfCIJQgyGhHwiBUI0iCADQbAEakEIaikDACADQcAEakEIaikDAHwgESAdVK18IANBkARqQQhqKQMAfCATIBFUrXwgBkIUiHwgFiATVK18IANBCGopAwB8IBggFlStfCAJQjSIfCAFIBhUrXwiCUIMhoR8IgZCNIggA0HQBGpBCGopAwAgA0HgBGpBCGopAwB8IA4gHFStfCAHQhSIfCAQIA5UrXwgCUI0iHwgBiAQVK18IglCDIaEfCIHQjSIIAhCFIggA0HwBGpBCGopAwB8IA0gG1StfCAJQjSIfCAHIA1UrXxCDIaEIAZC/////////weDIARC/////////weDQpPYqJjanOd+fCIGQj+HIAVC/////////weDfEL/tMqxiLqFeXwiBUI/h3xCh8Ksf3wiCEI/hyAHQv////////8Hg3wiB0I/h3xCgICAgICAfHwiCUI/hyIEQu2n1+el45gBgyAGQv////////8Hg3wiBkL/////////B4M3AwAgACAEQoHLtc73xfoGgyAFQv////////8Hg3wgBkI0iHwiBUL/////////B4M3AwggACAEQvm90wCDIAhC/////////weDfCAFQjSIfCIFQv////////8HgzcDECAAIAVCNIggB0L/////////B4N8IgVC/////////weDNwMYIAAgBEKAgICAgIAEgyAJfCAFQjSIfEL/////////B4M3AyAgA0GABWokAAuFFgIBfyJ+IwBB0AVrIgIkACACQYAFaiABEP8BIAJB8AFqIAIpA4AFIgNCAELtzYe51pfSB0IAEKkDIAJBgAJqIANCAELayJ/j2tbuAUIAEKkDIAJBwAJqIAIpA4gFIgRCAELtzYe51pfSB0IAEKkDIAJBkAJqIANCAEKbytfZ/v//B0IAEKkDIAJB0AJqIARCAELayJ/j2tbuAUIAEKkDIAJBkANqIAIpA5AFIgVCAELtzYe51pfSB0IAEKkDIAJBoAJqIANCAEL/////////B0IAEKkDIAJB4AJqIARCAEKbytfZ/v//B0IAEKkDIAJBoANqIAVCAELayJ/j2tbuAUIAEKkDIAJB4ANqIAIpA5gFIgZCAELtzYe51pfSB0IAEKkDIAJBsAJqIANCAEL///////8DQgAQqQMgAkHwAmogBEIAQv////////8HQgAQqQMgAkGwA2ogBUIAQpvK19n+//8HQgAQqQMgAkHwA2ogBkIAQtrIn+Pa1u4BQgAQqQMgAkGwBGogAikDoAUiA0IAQu3Nh7nWl9IHQgAQqQMgAkGAA2ogBEIAQv///////wNCABCpAyACQcADaiAFQgBC/////////wdCABCpAyACQYAEaiAGQgBCm8rX2f7//wdCABCpAyACQcAEaiADQgBC2sif49rW7gFCABCpAyACQdADaiAFQgBC////////A0IAEKkDIAJBkARqIAZCAEL/////////B0IAEKkDIAJB0ARqIANCAEKbytfZ/v//B0IAEKkDIAJBoARqIAZCAEL///////8DQgAQqQMgAkHgBGogA0IAQv////////8HQgAQqQMgAkHwBGogA0IAQv///////wNCABCpAyACQeABaiACKQPwASIEQpv80ZKxtMcCfkL/////////B4MiA0IAQu2n1+el45gBQgAQqQMgAkHQAWogA0IAQoHLtc73xfoGQgAQqQMgAkHAAWogAikDwAIiByACKQOAAnwiBSACKQPQAXwiBiAEIAIpA+ABIgh8IgRCNIggAkHgAWpBCGopAwAgAkHwAWpBCGopAwB8IAQgCFStfCIJQgyGhHwiCEKb/NGSsbTHAn5C/////////weDIgRCAELtp9fnpeOYAUIAEKkDIAJBkAFqIANCAEL5vdMAQgAQqQMgAkGwAWogBEIAQoHLtc73xfoGQgAQqQMgAkGAAWogAikD0AIiCiACKQOQAnwiCyACKQOQA3wiDCACKQOQAXwiDSACKQOwAXwiDiACKQPAASIPIAh8IhBCNIggAkHAAWpBCGopAwAgAkHAAmpBCGopAwAgAkGAAmpBCGopAwB8IAUgB1StfCACQdABakEIaikDAHwgBiAFVK18IAlCNIh8IAggBlStfHwgECAPVK18IhFCDIaEfCIGQpv80ZKxtMcCfkL/////////B4MiBUIAQu2n1+el45gBQgAQqQMgAkGgAWogBEIAQvm90wBCABCpAyACQfAAaiAFQgBCgcu1zvfF+gZCABCpAyACQeAAaiACKQPgAiISIAIpA6ACfCIIIAIpA6ADfCIHIAIpA+ADfCIJIAIpA6ABfCIPIAIpA3B8IhAgAikDgAEiEyAGfCIUQjSIIAJBgAFqQQhqKQMAIAJB0AJqQQhqKQMAIAJBkAJqQQhqKQMAfCALIApUrXwgAkGQA2pBCGopAwB8IAwgC1StfCACQZABakEIaikDAHwgDSAMVK18IAJBsAFqQQhqKQMAfCAOIA1UrXwgEUI0iHwgBiAOVK18fCAUIBNUrXwiFUIMhoR8IgtCm/zRkrG0xwJ+Qv////////8HgyIGQgBC7afX56XjmAFCABCpAyACQTBqIAVCAEL5vdMAQgAQqQMgAkHQAGogBkIAQoHLtc73xfoGQgAQqQMgAkEgaiACKQPwAiIWIAIpA7ACfCIMIAIpA7ADfCINIAIpA/ADfCIOIAIpA7AEfCIKIANCLIZ8IhEgAikDMHwiEyACKQNQfCIUIAIpA2AiFyALfCIYQjSIIAJB4ABqQQhqKQMAIAJB4AJqQQhqKQMAIAJBoAJqQQhqKQMAfCAIIBJUrXwgAkGgA2pBCGopAwB8IAcgCFStfCACQeADakEIaikDAHwgCSAHVK18IAJBoAFqQQhqKQMAfCAPIAlUrXwgAkHwAGpBCGopAwB8IBAgD1StfCAVQjSIfCALIBBUrXx8IBggF1StfCIZQgyGhHwiC0Kb/NGSsbTHAn5C/////////weDIghCAELtp9fnpeOYAUIAEKkDIAJBwABqIAZCAEL5vdMAQgAQqQMgAkEQaiAIQgBCgcu1zvfF+gZCABCpAyACIAhCAEL5vdMAQgAQqQMgAiAIQiyGIhogAikD8AR8IgcgAikD4AQiGyACKQOgBHwiCSAGQiyGfCIPIAIpA5AEIhwgAikD0AN8IhAgAikD0AR8IhIgBUIshnwiFSACKQMAfCIXIAIpA8ADIh0gAikDgAN8IhggAikDgAR8Ih4gAikDwAR8Ih8gBEIshnwiICACKQNAfCIhIAIpAxB8IiIgAikDICIjIAt8IiRCNIggAkEgakEIaikDACACQfACakEIaikDACACQbACakEIaikDAHwgDCAWVK18IAJBsANqQQhqKQMAfCANIAxUrXwgAkHwA2pBCGopAwB8IA4gDVStfCACQbAEakEIaikDAHwgCiAOVK18IANCFIh8IBEgClStfCACQTBqQQhqKQMAfCATIBFUrXwgAkHQAGpBCGopAwB8IBQgE1StfCAZQjSIfCALIBRUrXx8ICQgI1StfCILQgyGhHwiA0I0iCACQcADakEIaikDACACQYADakEIaikDAHwgGCAdVK18IAJBgARqQQhqKQMAfCAeIBhUrXwgAkHABGpBCGopAwB8IB8gHlStfCAEQhSIfCAgIB9UrXwgAkHAAGpBCGopAwB8ICEgIFStfCACQRBqQQhqKQMAfCAiICFUrXwgC0I0iHwgAyAiVK18IgtCDIaEfCIEQjSIIAJBkARqQQhqKQMAIAJB0ANqQQhqKQMAfCAQIBxUrXwgAkHQBGpBCGopAwB8IBIgEFStfCAFQhSIfCAVIBJUrXwgAkEIaikDAHwgFyAVVK18IAtCNIh8IAQgF1StfCILQgyGhHwiBUI0iCACQeAEakEIaikDACACQaAEakEIaikDAHwgCSAbVK18IAZCFIh8IA8gCVStfCALQjSIfCAFIA9UrXwiC0IMhoR8IgZCNIggCEIUiCACQfAEakEIaikDAHwgByAaVK18IAtCNIh8IAYgB1StfEIMhoQgBUL/////////B4MgBEL/////////B4MgA0L/////////B4NCk9iomNqc5358IgRCP4d8Qv+0yrGIuoV5fCIFQj+HfEKHwqx/fCIIQj+HIAZC/////////weDfCIGQj+HfEKAgICAgIB8fCILQj+HIgNC7afX56XjmAGDIARC/////////weDfCIEQv////////8HgzcDqAUgAiADQoHLtc73xfoGgyAFQv////////8Hg3wgBEI0iHwiBEL/////////B4M3A7AFIAIgA0L5vdMAgyAIQv////////8Hg3wgBEI0iHwiBEL/////////B4M3A7gFIAIgBEI0iCAGQv////////8Hg3wiBEL/////////B4M3A8AFIAIgA0KAgICAgIAEgyALfCAEQjSIfEL/////////B4M3A8gFIAAgAkGoBWoQ+gEgAkHQBWokAAuVFwEBfyMAQTBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkAgACgCAA40AAECAwQFBgcICQoLDA0ODxAREhMUFRYXGBkaGxwdHh8gISIjJCUmJygpKissLS4vMDEyMwALIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBiMvAADYCGCABIAJBGGoQyQMhAAwzCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQeTKwAA2AhggASACQRhqEMkDIQAMMgsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkHEysAANgIYIAEgAkEYahDJAyEADDELIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBpMrAADYCGCABIAJBGGoQyQMhAAwwCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQfjJwAA2AhggASACQRhqEMkDIQAMLwsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkHIycAANgIYIAEgAkEYahDJAyEADC4LIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBnMnAADYCGCABIAJBGGoQyQMhAAwtCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQfDIwAA2AhggASACQRhqEMkDIQAMLAsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkG8yMAANgIYIAEgAkEYahDJAyEADCsLIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBhMjAADYCGCABIAJBGGoQyQMhAAwqCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQdDHwAA2AhggASACQRhqEMkDIQAMKQsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkGEx8AANgIYIAEgAkEYahDJAyEADCgLIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBwMbAADYCGCABIAJBGGoQyQMhAAwnCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQfjFwAA2AhggASACQRhqEMkDIQAMJgsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkG4xcAANgIYIAEgAkEYahDJAyEADCULIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJB+MTAADYCGCABIAJBGGoQyQMhAAwkCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQcDEwAA2AhggASACQRhqEMkDIQAMIwsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkGQxMAANgIYIAEgAkEYahDJAyEADCILIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJB2MPAADYCGCABIAJBGGoQyQMhAAwhCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQaDDwAA2AhggASACQRhqEMkDIQAMIAsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkHswsAANgIYIAEgAkEYahDJAyEADB8LIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBmMLAADYCGCABIAJBGGoQyQMhAAweCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQeTBwAA2AhggASACQRhqEMkDIQAMHQsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkGMwcAANgIYIAEgAkEYahDJAyEADBwLIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBxMDAADYCGCABIAJBGGoQyQMhAAwbCyACIABBBGo2AhQgAkEsakEBNgIAIAJBJGpBATYCACACQei/wAA2AiAgAkEBNgIcIAJB4L/AADYCGCACQRk2AgwgAiACQQhqNgIoIAIgAkEUajYCCCABIAJBGGoQyQMhAAwaCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQcC/wAA2AhggASACQRhqEMkDIQAMGQsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkGUv8AANgIYIAEgAkEYahDJAyEADBgLIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJB4L7AADYCGCABIAJBGGoQyQMhAAwXCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQaC+wAA2AhggASACQRhqEMkDIQAMFgsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkHwvcAANgIYIAEgAkEYahDJAyEADBULIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJB0L3AADYCGCABIAJBGGoQyQMhAAwUCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQZy9wAA2AhggASACQRhqEMkDIQAMEwsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkHgvMAANgIYIAEgAkEYahDJAyEADBILIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBlLzAADYCGCABIAJBGGoQyQMhAAwRCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQdS7wAA2AhggASACQRhqEMkDIQAMEAsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkGcu8AANgIYIAEgAkEYahDJAyEADA8LIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJB8LrAADYCGCABIAJBGGoQyQMhAAwOCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQci6wAA2AhggASACQRhqEMkDIQAMDQsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkH4ucAANgIYIAEgAkEYahDJAyEADAwLIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBwLnAADYCGCABIAJBGGoQyQMhAAwLCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQZy5wAA2AhggASACQRhqEMkDIQAMCgsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkH4uMAANgIYIAEgAkEYahDJAyEADAkLIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJB3LjAADYCGCABIAJBGGoQyQMhAAwICyACQSxqQQE2AgAgAkIBNwIcIAJBuLjAADYCGCACQRo2AgwgAiAAQQRqNgIUIAIgAkEIajYCKCACIAJBFGo2AgggASACQRhqEMkDIQAMBwsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkH8t8AANgIYIAEgAkEYahDJAyEADAYLIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJBuLfAADYCGCABIAJBGGoQyQMhAAwFCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQZi3wAA2AhggASACQRhqEMkDIQAMBAsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkHwtsAANgIYIAEgAkEYahDJAyEADAMLIAJBLGpBADYCACACQZDLwAA2AiggAkIBNwIcIAJB1LbAADYCGCABIAJBGGoQyQMhAAwCCyACQSxqQQA2AgAgAkGQy8AANgIoIAJCATcCHCACQay2wAA2AhggASACQRhqEMkDIQAMAQsgAkEsakEANgIAIAJBkMvAADYCKCACQgE3AhwgAkHctcAANgIYIAEgAkEYahDJAyEACyACQTBqJAAgAAvREgIHfwF+AkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAAtAAAODQABAgMEBQYHCAkKCwwACwJAIAEoAgAiAkEEaigCACACQQhqIgMoAgAiBGtBA0sNACACIARBBBDlAiADKAIAIQQLIAIoAgAgBGpBADYAACADIAMoAgBBBGo2AgAgAEEoaikDACEJAkAgASgCACIDQQRqKAIAIANBCGooAgAiAmtBCE8NACADIAJBCBDlAiADQQhqKAIAIQILIAMoAgAgAmogCTcAACADQQhqIgMgAygCAEEIajYCACABIAApAzAQ9AMiAw0NIABBAWogARCvAw8LAkAgASgCACICQQRqKAIA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WA0CCyAAQQA2AgAMBAsgAEEANgIADAMLIAAgBjYCBCAAIAI2AgAgAEEIaiAIOwEADAILIAwhDQsCQAJAAkAgGCANWA0AIAZFDQAgDSAZfCIMIBhUDQEgGCANfSAMIBh9Wg0BCwJAIBBCFH4gDVYNACANIBBCWH4gD3xYDQILIABBADYCAAwCCyAAQQA2AgAMAQsgACABNgIEIAAgAjYCACAAQQhqIAg7AQALIARBMGokAAvzEQEGfyMAQaABayIDJAAgA0HIAGpBCGogASgCACIEQQhqKQIANwMAIAMgBCkCADcDSCADQegAaiABKAIEIgVCAhCtAiADQfgAakEIakEAKQL4lUA3AwAgA0EAKQLwlUA3A3ggA0GIAWogA0HoAGogA0H4AGoQwgUCQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAIAMoAogBDQAgA0HYAGpBCGogA0GUAWoiBikCADcDACADIAMpAowBNwNYIANBiAFqIANByABqIANB2ABqEFsgAygCiAENASADQQhqQQhqIAYpAgA3AwAgAyADKQKMATcDCCADQdgAaiAEQgIQrQIgA0HoAGpBCGoiBiACQQhqKQIANwMAIAMgAikCADcDaCADQYgBaiADQdgAaiADQegAahBbIAMoAogBDQIgA0EoakEIaiADQZQBaiIHKQIANwMAIAMgAykCjAE3AyggA0HYAGpBCGogBEEIaikCADcDACADIAQpAgA3A1ggBiAFQQhqKQIANwMAIAMgBSkCADcDaCADQYgBaiADQdgAaiADQegAahBbIAMoAogBDQMgA0HIAGpBCGogBykCADcDACADIAMpAowBNwNIIANB6ABqQQhqIgcgASgCCCIGQQhqKQIANwMAIAMgBikCADcDaCADQYgBaiADQcgAaiADQegAahBbIAMoAogBDQQgA0E4akEIaiADQZQBaiIIKQIANwMAIAMgAykCjAE3AzggA0HYAGpBCGogASgCDCIBQQhqKQIANwMAIAMgASkCADcDWCAHIAJBCGopAgA3AwAgAyACKQIANwNoIANBiAFqIANB2ABqIANB6ABqEMEFIAMoAogBDQUgA0HIAGpBCGogCCkCADcDACADIAMpAowBNwNIIANBiAFqIANBOGogA0HIAGoQWyADKAKIAQ0GIANB6ABqQQhqIANBlAFqIgcpAgA3AwAgAyADKQKMATcDaCADQYgBaiADQShqIANB6ABqEMEFIAMoAogBDQcgA0E4akEIaiAHKQIANwMAIAMgAykCjAE3AzggA0HYAGogBkICEK0CIANB6ABqQQhqIAFBCGopAgA3AwAgAyABKQIANwNoIANBiAFqIANB2ABqIANB6ABqEFsgAygCiAENCCADQcgAakEIaiADQZQBaiIBKQIANwMAIAMgAykCjAE3A0ggA0GIAWogA0E4aiADQcgAahDBBSADKAKIAQ0JIANBGGpBCGogASkCADcDACADIAMpAowBNwMYIANB6ABqIANBGGoQpgMgA0GIAWogA0EIaiADQegAahBbIAMoAogBDQogA0EoakEIaiADQZQBaiIBKQIANwMAIAMgAykCjAE3AyggA0E4akEIaiAEQQhqKQIANwMAIAMgBCkCADcDOCADQdgAakEIaiAFQQhqKQIANwMAIAMgBSkCADcDWCADQegAakEIaiAGQQhqKQIANwMAIAMgBikCADcDaCADQYgBaiADQdgAaiADQegAahBbIAMoAogBDQsgA0HIAGpBCGogASkCADcDACADIAMpAowBNwNIIANBiAFqIANBOGogA0HIAGoQwQUgAygCiAENDCADQdgAakEIaiADQZQBaiIBKQIANwMAIAMgAykCjAE3A1ggA0HoAGogAhCmAyADQYgBaiADQdgAaiADQegAahBbIAMoAogBDQ0gA0HIAGpBCGogASkCADcDACADIAMpAowBNwNIIANBiAFqIANBKGogA0HIAGoQwQUgAygCiAENDiADQQhqQQhqIANBlAFqIgIpAgA3AwAgAyADKQKMATcDCCADQdgAakEIaiAEQQhqKQIANwMAIAMgBCkCADcDWCADQegAakEIaiAFQQhqKQIANwMAIAMgBSkCADcDaCADQYgBaiADQdgAaiADQegAahBbIAMoAogBDQ8gA0HIAGpBCGogAikCADcDACADIAMpAowBNwNIIANB6ABqQQhqIgIgBkEIaiIBKQIANwMAIAMgBikCADcDaCADQYgBaiADQcgAaiADQegAahDBBSADKAKIAQ0QIANBKGpBCGogA0GUAWoiBykCADcDACADIAMpAowBNwMoIANBOGpBCGogBEEIaikCADcDACADIAQpAgA3AzggA0HYAGpBCGog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C0H50MAAQSkgAkHQAGpBwM7AAEGk0cAAELIDAAtBktXAAEEUQajVwAAQywUACwJAIAIoAlAiAUEkSQ0AIAEQAwsCQCACKAKgAUEgRw0AIAIoApgBIQEgAEEAOgAAIAAgASkAADcAASAAQRlqIAFBGGopAAA3AAAgAEERaiABQRBqKQAANwAAIABBCWogAUEIaikAADcAACACKAKcASIARQ0DIAEgAEEBELgFDAMLQfnQwABBKSACQdAAakHAzsAAQaTRwAAQsgMACyACKAKcASIARQ0AIAIoApgBIABBARC4BQsgAigCLCIAQSNNDQIMAQsgAigCLCIAQSNNDQELIAAQAwsgAkGwAWokAA8LQYTNwABBNyACQdAAakGwzsAAQYjOwAAQsgMAC/QOAQF/IwBBwABrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAADiAAAQIDBAUGBwgJCgsMDQ4PEBESExQVFhcYGRobHB0eHwALIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJBtLDGADYCICABIAJBIGoQyQMhAAwfCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQZywxgA2AiAgASACQSBqEMkDIQAMHgsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkGAsMYANgIgIAEgAkEgahDJAyEADB0LIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJBtK/GADYCICABIAJBIGoQyQMhAAwcCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQfyuxgA2AiAgASACQSBqEMkDIQAMGwsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkHYrsYANgIgIAEgAkEgahDJAyEADBoLIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJBnK7GADYCICABIAJBIGoQyQMhAAwZCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQeitxgA2AiAgASACQSBqEMkDIQAMGAsgAkEUakHdATYCACACQTRqQQI2AgAgAiAAQQFqNgIcIAJCAjcCJCACQcStxgA2AiAgAkHeATYCDCACIABBBGo2AjwgAiACQQhqNgIwIAIgAkE8ajYCECACIAJBHGo2AgggASACQSBqEMkDIQAMFwsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkGcrcYANgIgIAEgAkEgahDJAyEADBYLIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJB9KzGADYCICABIAJBIGoQyQMhAAwVCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQbSsxgA2AiAgASACQSBqEMkDIQAMFAsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkH4q8YANgIgIAEgAkEgahDJAyEADBMLIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJBwKvGADYCICABIAJBIGoQyQMhAAwSCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQYCrxgA2AiAgASACQSBqEMkDIQAMEQsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkG8qsYANgIgIAEgAkEgahDJAyEADBALIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJB9KnGADYCICABIAJBIGoQyQMhAAwPCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQZypxgA2AiAgASACQSBqEMkDIQAMDgsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkHkqMYANgIgIAEgAkEgahDJAyEADA0LIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJBuKjGADYCICABIAJBIGoQyQMhAAwMCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQfSnxgA2AiAgASACQSBqEMkDIQAMCwsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkGwp8YANgIgIAEgAkEgahDJAyEADAoLIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJB7KbGADYCICABIAJBIGoQyQMhAAwJCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQcCmxgA2AiAgASACQSBqEMkDIQAMCAsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkH4pcYANgIgIAEgAkEgahDJAyEADAcLIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJBsKXGADYCICABIAJBIGoQyQMhAAwGCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQeykxgA2AiAgASACQSBqEMkDIQAMBQsgAkE0akEANgIAIAJBjKDGADYCMCACQgE3AiQgAkGspMYANgIgIAEgAkEgahDJAyEADAQLIAJBNGpBADYCACACQYygxgA2AjAgAkIBNwIkIAJB2KPGADYCICABIAJBIGoQyQMhAAwDCyACQTRqQQA2AgAgAkGMoMYANgIwIAJCATcCJCACQaSjxgA2AiAgASACQSBqEMkDIQAMAgsgAkE0akEBNgIAIAJCAjcCJCACQeCixgA2AiAgAkHeATYCDCACIABBAWo2AjwgAiACQQhqNgIwIAIgAkE8ajYCCCABIAJBIGoQyQMhAAwBCyACQTRqQQE2AgAgAkICNwIkIAJBjKLGADYCICACQd4BNgIMIAIgAEEBajYCPCACIAJBCGo2AjAgAiACQTxqNgIIIAEgAkEgahDJAyEACyACQcAAaiQAIAAL/gsBDX8jAEGgBWsiAyQAIANBwABqQgA3AwAgA0E4akIANwMAIANBMGpCADcDACADQShqQgA3AwAgA0EgakIANwMAIANBGGpCADcDACADQRBqQgA3AwAgA0IANwMIQQAhBANAIANBCGogBGoiBUEBaiACLQAAIgZBBHY6AAAgBSAGQQ9xOgAAIAVBA2ogAkEBai0AACIGQQR2OgAAIAVBAmogBkEPcToAACACQQJqIQIgBEEEaiIEQcAARw0AC0EAIQIgAy0ACCEFAkADQCADQQhqIAJqIgQgBSAFQQhqIgZB8AFxazoAACAEQQFqIgUgBS0AACAGQRh0QRx1aiIGOgAAIAJBPkYNASAFIAYgBkEIaiIHQfABcWs6AAAgBEECaiIFIAUtAAAgB0EYdEEcdWoiBToAACACQQJqIQIMAAsLIABCADcDACAAQgE3AyggAEIBNwNQIABBIGpCADcDACAAQRhqQgA3AwAgAEEQakIANwMAIABBCGpCADcDACAAQTBqQgA3AwAgAEE4akIANwMAIABBwABqQgA3AwAgAEHIAGpCADcDAEEAIQIgAEHYAGpBAEHIABCCBhogAEHQAGohByAAQShqIQggA0EIakF/aiEJIANB6AFqQfgAaiEKIANB6AFqQdAAaiELIANB6AFqQShqIQwgA0GABGpB0ABqIQ0gA0GABGpBKGohDiADQYAEakH4AGohDwJAA0AgAkHAACACQcAASxshBAJAA0AgBCACRg0BIAJBAXEhBSACQQFqIgYhAiAFRQ0ACyAGQX9qIgJBAXYhBSACQcAATw0CIANByABqIAEgBUHAB2xqIAkgBmotAAAQeyADQYAEaiAAIANByABqEGsgA0HoAWogA0GABGogDxBQIAwgDiANEFAgCyANIA8QUCAKIANBgARqIA4QUCAAIANB6AFqQaABEP8FGiAGIQIMAQsLIANBiANqQSBqIABBIGopAwA3AwAgA0GIA2pBGGogAEEYaikDADcDACADQYgDakEQaiAAQRBqKQMANwMAIANBiANqQQhqIABBCGopAwA3AwAgA0G4A2ogCEEIaikDADcDACADQcADaiAIQRBqKQMANwMAIANByANqIAhBGGopAwA3AwAgA0HQA2ogCEEgaikDADcDACADIAApAwA3A4gDIAMgCCkDADcDsAMgA0H4A2ogB0EgaikDADcDACADQfADaiAHQRhqKQMANwMAIANB6ANqIAdBEGopAwA3AwAgA0HgA2ogB0EIaikDADcDACADIAcpAwA3A9gDIANBgARqIANBiANqEHggA0HoAWogA0GABGpBoAEQ/wUaIANBgARqIANB6AFqIANB6AFqQfgAaiIIEFAgA0GABGpBKGoiBSADQegBakEoaiIOIANB6AFqQdAAaiINEFAgA0GABGpB0ABqIgQgDSAIEFAgA0GIA2ogA0GABGpB+AAQ/wUaIANBgARqIANBiANqEHggA0HoAWogA0GABGpBoAEQ/wUaIANBgARqIANB6AFqIAgQUCAFIA4gDRBQIAQgDSAIEFAgA0GIA2ogA0GABGpB+AAQ/wUaIANBgARqIANBiANqEHggA0HoAWogA0GABGpBoAEQ/wUaIANBgARqIANB6AFqIAgQUCAFIA4gDRBQIAQgDSAIEFAgA0GIA2ogA0GABGpB+AAQ/wUaIANBgARqIANBiANqEHggA0HIAGogA0GABGogA0GABGpB+ABqIgYQUCADQcgAakEoaiAFIAQQUCADQcgAakHQAGogBCAGEFAgA0HIAGpB+ABqIANBgARqIAUQUCAAIANByABqQaABEP8FIQdBACECA0AgA0HIAGogASACIAJBAXFqIgJBAXZBwAdsaiADQQhqIAJqLQAAEHsgA0GABGogByADQcgAahBrIANB6AFqIANBgARqIAYQUCAOIAUgBBBQIA0gBCAGEFAgCCADQYAEaiAFEFAgByADQegBakGgARD/BRpBPyACayACQQFqIgJBAXFLDQALIANBoAVqJAAPCyAFQSBB0OvAABDHAwALjg0CBX8IfiMAQfACayIDJAAgA0GgAmogAkEBEGYgA0EIaiADQaACaiACEFAgA0GgAmogA0EIakEBEGYgA0EwaiADQaACaiACEFAgA0GAAWogASADQQhqEFAgA0HQAWogASADQTBqEFAgA0GgAmogA0HQAWoQuQEgA0H4AWpBIGogA0GgAmpBIGopAwA3AwAgA0H4AWpBGGogA0GgAmpBGGopAwA3AwAgA0H4AWpBEGogA0GgAmpBEGopAwA3AwAgA0H4AWpBCGogA0GgAmpBCGopAwA3AwAgAyADKQOgAjcD+AEgA0GgAmogA0H4AWpBAhBmIANBqAFqIANB0AFqIANBoAJqEFAgA0HYAGogA0GAAWogA0GoAWoQUCADQaACaiADQdgAakEBEGYgA0HQAWogAiADQaACahBQIANB+AFqIANB0AFqEKIBIANBoAJqIAEQogFBACECQQEhBANAIANBoAJqIAJqLQAAIANB+AFqIAJqLQAAcyIFQX9qIAVBf3NxQYABcUEHdhCHBSAEcSEEIAJBAWoiAkEgRw0ACyAEEIcFIQYgA0GgAmpBCGpC8P///////z8gAUEIaikDAH0iCEL/////////A4NC0P3//////z8gASkDAH0iCUIziHw3AwAgA0GgAmpBEGpC8P///////z8gAUEQaikDAH0iCkL/////////A4MgCEIziHw3AwAgA0GgAmpBGGpC8P///////z8gAUEYaikDAH0iCEL/////////A4MgCkIziHw3AwAgA0GgAmpBIGpC8P///////z8gAUEgaikDAH0iCkL/////////A4MgCEIziHw3AwAgAyAKQjOIQhN+IAlC/////////wODfDcDoAIgA0GoAWogA0HQAWoQogEgA0H4AWogA0GgAmoQogFBACECQQEhBANAIANB+AFqIAJqLQAAIANBqAFqIAJqLQAAcyIFQX9qIAVBf3NxQYABcUEHdhCHBSAEcSEEIAJBAWoiAkEgRw0ACyAEEIcFIQcgA0GgAmpBCGpC8P///////z8gAUEIaikDAH0iCEL/////////A4NC0P3//////z8gASkDAH0iCUIziHw3AwAgA0GgAmpBEGpC8P///////z8gAUEQaikDAH0iCkL/////////A4MgCEIziHw3AwAgA0GgAmpBGGpC8P///////z8gAUEYaikDAH0iCEL/////////A4MgCkIziHw3AwAgA0GgAmpBIGpC8P///////z8gAUEgaikDAH0iCkL/////////A4MgCEIziHw3AwAgAyAKQjOIQhN+IAlC/////////wODfDcDoAIgA0H4AWogA0GgAmpB4OvAABBQIANBgAFqIANB0AFqEKIBIANBqAFqIANB+AFqEKIBQQAhAkEBIQQDQCADQagBaiACai0AACADQYABaiACai0AAHMiBUF/aiAFQX9zcUGAAXFBB3YQhwUgBHEhBCACQQFqIgJBIEcNAAsgBBCHBSECIANBoAJqQeDrwAAgA0HYAGoQUCACIAdyEIcFIQQgA0HgAGoiAiACKQMAIgkgAykDqAKFQgAgBK1C/wGDfSIIgyAJhSIJNwMAIANB2ABqQRBqIgQgBCkDACIKIAMpA7AChSAIgyAKhSIKNwMAIANB2ABqQRhqIgUgBSkDACILIAMpA7gChSAIgyALhSILNwMAIANB2ABqQSBqIgEgASkDACIMIAMpA8AChSAIgyAMhSIMNwMAIAMgAykDWCINIAMpA6AChSAIgyANhSINNwNYIANB+AFqIANB2ABqEKIBIAFC8P///////z8gDH0iDkL/////////A4NC8P///////z8gC30iD0IziHwgDIVCACADLQD4AUEBcRCHBa1C/wGDfSIIgyAMhTcDACAFIA9C/////////wODQvD///////8/IAp9IgxCM4h8IAuFIAiDIAuFNwMAIAQgDEL/////////A4NC8P///////z8gCX0iC0IziHwgCoUgCIMgCoU3AwAgAiALQv////////8Dg0LQ/f//////PyANfSIKQjOIfCAJhSAIgyAJhTcDACADIA5CM4hCE34gCkL/////////A4N8IA2FIAiDIA2FNwNYIAAgByAGchCHBToAACAAQShqIAEpAwA3AwAgAEEgaiAFKQMANwMAIABBGGogBCkDADcDACAAQRBqIAIp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QgAgAikDGCIMQhN+Ig1CABCpAyADQdACaiABKQMIIg5CACACKQMgIg9CE34iEEIAEKkDIANB0ABqIA5CACAEQgAQqQMgA0EQaiAFQgAgB0IAEKkDIANBoAFqIAZCACAKQgAQqQMgA0HgAWogCEIAIA1CABCpAyADQaACaiALQgAgEEIAEKkDIANB4ABqIAtCACAEQgAQqQMgA0HgAmogDkIAIAdCABCpAyADQSBqIAVCACAJQgAQqQMgA0GwAWogBkIAIA1CABCpAyADQfABaiAIQgAgEEIAEKkDIANB8ABqIAhCACAEQgAQqQMgA0GwAmogC0IAIAdCABCpAyADQfACaiAOQgAgCUIAEKkDIANBMGogBUIAIAxCABCpAyADQcABaiAGQgAgEEIAEKkDIANBgAFqIAZCACAEQgAQqQMgA0GAAmogCEIAIAdCABCpAyADQcACaiALQgAgCUIAEKkDIANBgANqIA5CACAMQgAQqQMgA0HAAGogBUIAIA9CABCpAyAAIAMpA7ABIg8gAykDIHwiBCADKQPwAXwiBSADKQNgfCIGIAMpA+ACfCIHIAMpA6ABIhEgAykDEHwiCCADKQPgAXwiCyADKQOgAnwiDiADKQNQfCIJIAMpA5ABIhIgAykDAHwiECADKQPQAXwiDCADKQOQAnwiDSADKQPQAnwiCkIziCADQZABakEIaikDACADQQhqKQMAfCAQIBJUrXwgA0HQAWpBCGopAwB8IAwgEFStfCADQZACakEIaikDAHwgDSAMVK18IANB0AJqQQhqKQMAfCAKIA1UrXxCDYaEfCIQQjOIIANBoAFqQQhqKQMAIANBEGpBCGopAwB8IAggEVStfCADQeABakEIaikDAHwgCyAIVK18IANBoAJqQQhqKQMAfCAOIAtUrXwgA0HQAGpBCGopAwB8IAkgDlStfCAQIAlUrXxCDYaEfCIIQv////////8DgzcDECAAIAMpA8ABIg0gAykDMHwiCyADKQNwfCIOIAMpA7ACfCIJIAMpA/ACfCIMIAhCM4ggA0GwAWpBCGopAwAgA0EgakEIaikDAHwgBCAPVK18IANB8AFqQQhqKQMAfCAFIARUrXwgA0HgAGpBCGopAwB8IAYgBVStfCADQeACakEIaikDAHwgByAGVK18IAggB1StfEINhoR8IgRC/////////wODNwMYIAAgAykDgAEiDyADKQNAfCIFIAMpA4ACfCIGIAMpA8ACfCIHIAMpA4ADfCIIIARCM4ggA0HAAWpBCGopAwAgA0EwakEIaikDAHwgCyANVK18IANB8ABqQQhqKQMAfCAOIAtUrXwgA0GwAmpBCGopAwB8IAkgDlStfCADQfACakEIaikDAHwgDCAJVK18IAQgDFStfEINhoR8IgRC/////////wODNwMgIAAgBEIziCADQYABakEIaikDACADQcAAakEIaikDAHwgBSAPVK18IANBgAJqQQhqKQMAfCAGIAVUrXwgA0HAAmpBCGopAwB8IAcgBlStfCADQYADakEIaikDAHwgCCAHVK18IAQgCFStfEINhoRCE34gCkL/////////A4N8IgRC/////////wODNwMAIAAgBEIziCAQQv////////8Dg3w3AwggA0GQA2okAAv1CwIHfwF8IwBBkAFrIgIkACACIAE2AjQgAkEoaiABEAQCQAJAAkACQCACKAIoIgNFDQBBACEEAkACQCACKAIsIgFBLEsNACACQbDLwAA2AogBIAIgATYChAEgAiADNgKAASACQThqIAJBgAFqENwCAkAgAigCOA0AIAJBwABqIgUoAgAhBiACKAI8IQdBACEEAkAgAkHEAGooAgAiCEEgRw0AIAUgB0EJaikAADcDACACQcgAaiAHQRFqKQAANwMAIAJBzwBqIAdBGGopAAA3AAAgAiAHKQABNwM4IActAAAhBAsCQCAGRQ0AIAcgBkEBELgFCyAIQSBHDQEgACAEOgABIABBAmogAikDODcAACAAQQpqIAJBwABqKQMANwAAIABBEmogAkHIAGopAwA3AAAgAEEZaiACQc8AaikAADcAAEEAIQQMAgtBASEECyAAQQRqIARB/wFxQQBHENgCNgIAQQEhBAsgACAEOgAAIAFFDQEgAyABQQEQuAUMAQsCQAJAAkACQAJAAkAgAkE0ahC+BUUNACACQThqIAJBNGoQmQMgAigCQEEgRw0BIAIoAjghASAAQQA6AAAgACABKQAANwABIABBGWogAUEYaikAADcAACAAQRFqIAFBEGopAAA3AAAgAEEJaiABQQhqKQAANwAAIAIoAjwiAEUNBiABIABBARC4BQwGCwJAAkAgAkE0ahC8BUUNACACQQA2AmAgAkIBNwNYIAIg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NwIsIANBuKHAADYCKCADQRg2AmwgA0GUn8AANgJYIANCATcCTCADQdShwAA2AkggAyADQegAajYCOCADIANByABqNgJoIANBKGpB3KHAABCTBAALIAMgBSgCUCIMNgJAIAMgCTYCPCADIAE2AjggAyAJNgI0IANBADYCMCADIAU2AiwgAyAKNgIoAkAgByAMLwEyakEBakEMSQ0AIANBKGpBBSAHaxBqQQAhAUEADQMMBAsgA0HIAGpBGGogA0EoakEYaigCADYCACADQcgAakEQaiADQShqQRBqKQMANwMAIANByABqQQhqIANBKGpBCGopAwA3AwAgAyADKQMoNwNIIANBCGogA0HIAGoQcyADKAIIIQkgAygCDCIBDQIMAwsgBSAMQX9qIg1BAnRqQcwAaigCACEMIAMgATYCQCADIAk2AjwgAyAMNgI4IAMgCTYCNCADIA02AjAgAyAFNgIsIAMgCjYCKAJAIAcgDC8BMmpBAWpBDEkNACADQShqQQUgB2sQiQFBACEBQQANAgwDCyADQcgAakEYaiADQShqQRhqKAIANgIAIANByABqQRBqIANBKGpBEGopAwA3AwAgA0HIAGpBCGogA0EoakEIaikDADcDACADIAMpAyg3A0ggA0EQaiADQcgAahBzIAMoAhAhCSADKAIUIgENAQwCCwsgBw0AIAJBAToAAAsgACAINgIIIABBEGogBjYCACAAQQxqIAQ2AgAgACALQQh2QQFxrUIohiALrUIBg0IghoQgDoQ3AgAgA0HwAGokAAurCgEDfyABKAI0IQICQAJAAkAgAS0AECIDQQRHDQAgAg0BQQAhAQwCCyABQSRqKAIAIQQCQCACDQACQAJAIANBA0cNACAEDQFBACEBDAQLIAFBFGooAgAhAgJAIAQNAAJAAkAgA0ECRw0AIAINAUEAIQEMBgsgASgCACEEAkAgAg0AAkACQCADDQAgBA0BQQAhAQwICwJAIAQNAEEAIQEMCAsgAUEMaigCACABQQhqKAIAa0EFdiEBDAcLIAFBDGooAgAgAUEIaigCAGtBBXYhAQwGCwJAAkACQCADDQAgBA0BQQAhAgwCCwJAIAQNAEEAIQIMAgsgAUEMaigCACABQQhqKAIAa0EFdiECDAELIAFBDGooAgAgAUEIaigCAGtBBXYhAgsgAUEgaigCACABQRxqKAIAa0EFdiACaiEBDAULIAFBIGooAgAgAUEcaigCAGtBBXYhAQwECwJAAkACQCADQQJHDQAgAg0BQQAhAgwCCyABKAIAIQQCQCACDQACQAJAIAMNACAEDQFBACECDAQLAkAgBA0AQQAhAgwECyABQQxqKAIAIAFBCGooAgBrQQV2IQIMAwsgAUEMaigCACABQQhqKAIAa0EFdiECDAILAkACQAJAIAMNACAEDQFBACECDAILAkAgBA0AQQAhAgwCCyABQQxqKAIAIAFBCGooAgBrQQV2IQIMAQsgAUEMaigCACABQQhqKAIAa0EFdiECCyABQSBqKAIAIAFBHGooAgBrQQV2IAJqIQIMAQsgAUEgaigCACABQRxqKAIAa0EFdiECCyABQTBqKAIAIAFBLGooAgBrQQV2IAJqIQEMAwsgAUEwaigCACABQSxqKAIAa0EFdiEBDAILAkACQAJAIANBA0cNACAEDQFBACECDAILIAFBFGooAgAhAgJAIAQNAAJAAkAgA0ECRw0AIAINAUEAIQIMBAsgASgCACEEAkAgAg0AAkACQCADDQAgBA0BQQAhAgwGCwJAIAQNAEEAIQIMBgsgAUEMaigCACABQQhqKAIAa0EFdiECDAULIAFBDGooAgAgAUEIaigCAGtBBXYhAgwECwJAAkACQCADDQAgBA0BQQAhAgwCCwJAIAQNAEEAIQIMAgsgAUEMaigCACABQQhqKAIAa0EFdiECDAELIAFBDGooAgAgAUEIaigCAGtBBXYhAgsgAUEgaigCACABQRxqKAIAa0EFdiACaiECDAMLIAFBIGooAgAgAUEcaigCAGtBBXYhAgwCCwJAAkACQCADQQJHDQAgAg0BQQAhAgwCCyABKAIAIQQCQCACDQACQAJAIAMNACAEDQFBACECDAQLAkAgBA0AQQAhAgwECyABQQxqKAIAIAFBCGooAgBrQQV2IQIMAwsgAUEMaigCACABQQhqKAIAa0EFdiECDAILAkACQAJAIAMNACAEDQFBACECDAILAkAgBA0AQQAhAgwCCyABQQxqKAIAIAFBCGooAgBrQQV2IQIMAQsgAUEMaigCACABQQhqKAIAa0EFdiECCyABQSBqKAIAIAFBHGooAgBrQQV2IAJqIQIMAQsgAUEgaigCACABQRxqKAIAa0EFdiECCyABQTBqKAIAIAFBLGooAgBrQQV2IAJqIQIMAQsgAUEwaigCACABQSxqKAIAa0EFdiECCyABQcAAaigCACABQTxqKAIAa0EFdiACaiEBDAELIAFBwABqKAIAIAFBPGooAgBrQQV2IQELIABBATYCBCAAIAE2AgAgAEEIaiABNgIAC94KAQV/IwBB0ABrIgMkACADQRBqQQhqIAFBCGooAgA2AgAgAyABKQIANwMQIAMgA0EQahDvBCADQRBqIAMoAgAiBCADKAIIIgUgAkEBakEAIAItAAAbEIEEAkACQAJAIAMtACgiBg0AIABCATcCAAwBCyAGQQZ0IgFBARCYBSICRQ0BIAAgBjYCBCAAIAI2AgACQCAGQQJJDQAgBkF/aiIHQQdxIQECQCAGQX5qQQdJDQAgB0F4cSEHA0AgAkIANwAAIAJBOGpCADcAACACQTBqQgA3AAAgAkEoakIANwAAIAJBIGpCADcAACACQRhqQgA3AAAgAkEQakIANwAAIAJBCGpCADcAACACQcAAakIANwAAIAJByABqQgA3AAAgAkHQAGpCADcAACACQdgAakIANwAAIAJB4ABqQgA3AAAgAkHoAGpCADcAACACQfAAakIANwAAIAJB+ABqQgA3AAAgAkGAAWpCADcAACACQYgBakIANwAAIAJBkAFqQgA3AAAgAkGYAWpCADcAACACQaABakIANwAAIAJBqAFqQgA3AAAgAkGwAWpCADcAACACQbgBakIANwAAIAJB+AFqQgA3AAAgAkHwAWpCADcAACACQegBakIANwAAIAJB4AFqQgA3AAAgAkHYAWpCADcAACACQdABakIANwAAIAJByAFqQgA3AAAgAkHAAWpCADcAACACQYACakIANwAAIAJBiAJqQgA3AAAgAkGQAmpCADcAACACQZgCakIANwAAIAJBoAJqQgA3AAAgAkGoAmpCADcAACACQbACakIANwAAIAJBuAJqQgA3AAAgAkHAAmpCADcAACACQcgCakIANwAAIAJB0AJqQgA3AAAgAkHYAmpCADcAACACQeACakIANwAAIAJB6AJqQgA3AAAgAkHwAmpCADcAACACQfgCakIANwAAIAJBuANqQgA3AAAgAkGwA2pCADcAACACQagDakIANwAAIAJBoANqQgA3AAAgAkGYA2pCADcAACACQZADakIANwAAIAJBiANqQgA3AAAgAkGAA2pCADcAACACQfgDakIANwAAIAJB8ANqQgA3AAAgAkHoA2pCADcAACACQeADakIANwAAIAJB2ANqQgA3AAAgAkHQA2pCADcAACACQcgDakIANwAAIAJBwANqQgA3AAAgAkGABGohAiAHQXhqIgcNAAsLIAFFDQADQCACQgA3AAAgAkE4akIANwAAIAJBMGpCADcAACACQShqQgA3AAAgAkEgakIANwAAIAJBGGpCADcAACACQRBqQgA3AAAgAkEIakIANwAAIAJBwABqIQIgAUF/aiIBDQALCyACQgA3AAAgAkE4akIANwAAIAJBMGpCADcAACACQShqQgA3AAAgAkEgakIANwAAIAJBGGpCADcAACACQRBqQgA3AAAgAkEIakIANwAACyAAIAY2AgggACADKQMQNwIMIABBJGogBjoAACAAQSVqIANBKWoiAikAADcAACAAQRRqIANBEGpBCGopAwA3AgAgAEEcaiADQRBqQRBqKQMANwIAIABBLWogAkEIaikAADcAACAAQTVqIAJBEGopAAA3AAAgAEE9aiACQRhqKQAANwAAIABBxABqIAJBH2ooAAA2AAACQCAFRQ0AIAVBOGwhASAEIQIDQAJAIAJBBGooAgAiAEUNACACKAIAIACtQiJ+p0EBELgFCwJAIAJBEGooAgAiAEUNACACQQxqKAIAIABBARC4BQsgAkE4aiECIAFBSGoiAQ0ACwsCQCADKAIEIgJFDQAgBCACrUI4fqdBBBC4BQsgA0HQAGokAA8LIAFBARDvBQALvAoCDH8HfiMAQeAAayIEJAACQAJAAkACQAJAAkBBIEEBEJgFIgVFDQAgBEEIaiACKAIAEJIFIARBMGogBCgCCCAEKAIMEL8DIAVBGGogBEEwakEYaikAADcAACAFQRBqIARBMGpBEGopAAA3AAAgBUEIaiAEQTBqQQhqKQAANwAAIAUgBCkAMDcAAAJAAkAgAUEUaigCACABQSRqLQAAIgZJDQAgASgCDCEHQQhBBBCYBSIIRQ0DIARBEGpBCGoiCUIBNwMAIAQgCDYCFCAEQTBqQQxqIAY2AgAgBCAHNgI4IAQgBUEgajYCNCAEIAU2AjBBACEGIARB0ABqQQhqQQA2AgAgBCAINgJQIAQgBEEQakEMaiIINgJUIARBMGogBEHQAGoQrwIgCSgCACEKIAgoAgAhCyAEKAIUIQggBUEgQQEQuAUgCCALQQN0IgdqIQkDQCAHIAZGDQIgCCAGaiEFIAZBCGohBiAFKAIAQQFGDQALIABBADYCACAKRQ0HIAggCkEDdEEEELgFDAcLIARBCzoAFCAEQRBqQQxqKAIAIQYgBCkCFCEQIABBEGogBEEQakEQaikDADcCACAAQQxqIAY2AgAgACAQNwIEIABBAjYCACAFQSBBARC4BQwGCwJAAkAgCSAIayIMDQBBBCENDAELIAxBAXYiBkEEEJgFIg1FDQMLAkACQCAIIAlHDQBBACELDAELIAtBf2pB/////wFxQQFqIQsgDSEFIAghBgNAIAYoAgBFDQUgBSAGQQRqKAIANgIAIAVBBGohBSAGQQhqIgYgCUcNAAsLIARBMGpBGGogA0EYaiIFKQAANwMAIARBMGpBEGogA0EQaiIHKQAANwMAIARBMGpBCGogA0EIaiIJKQAANwMAIAQgAykAADcDMCAEQTBqIAFBJ2oiBkEgEIEGRQ0EIAYgAykAADcAACAGQRhqIAUpAAA3AAAgBkEQaiAHKQAANwAAIAZBCGogCSkAADcAACABKAIIIgZFDQQgASgCAEEAIAZBBnQQggYaDAQLQSBBARDvBQALQQhBBBDvBQALIAZBBBDvBQALQYygxgBBK0GgocYAEIQEAAsgBEHQAGogAUEMahDdAyAEQRBqIAIgBCgCUCIGIAQoAlgQgAEgBEEQakEMaigCACECIARBEGpBCGooAgAhDiAEKAIUIQ8CQAJAAkACQCAEKAIQDQACQCAEKAJUIgVFDQAgBiAFQQEQuAULAkAgC0UNAEEAIQcgDyEGIA0hCQNAIAIgB0YNBCABKAIIIgMgCSgCACIFTQ0FIAZBCGopAAAhECAGQRBqKQAAIREgBkEYaikAACESIAZBIGopAAAhEyAGQShqKQAAIRQgBkEwaikAACEVIAZBOGopAAAhFiABKAIAIAVBBnRqIgUgBikAADcAACAFQThqIBY3AAAgBUEwaiAVNwAAIAVBKGogFDcAACAFQSBqIBM3AAAgBUEYaiASNwAAIAVBEGogETcAACAFQQhqIBA3AAAgBkHAAGohBiAJQQRqIQkgCyAHQQFqIgdHDQALCyAAQQs2AgAgDkUNASAPIA5BBnRBARC4BQwBCyAAQRRqIARBKGooAgA2AgAgAEEMaiAEQSBqKQMANwIAIABBCGogAjYCACAAIA42AgQgACAPNgIAIAQoAlQiBUUNACAGIAVBARC4BQsCQCAMRQ0AIA0gDEEBdkEEELgFCyAKRQ0CIAggCkEDdEEEELgFDAILIAIgAkHInsYAEMcDAAsgBSADQdiexgAQxwMACyAEQeAAaiQAC/cKAgx/LH4jAEGAAWsiAiQAIAExACYhDiABMQAlIQ8gATEAJCEQIAExACMhESABMQAhIRIgATEAIiETIAExACAhFCABMQAfIRUgATEAHiEWIAExAB0hFyABMQAcIRggATEAGiEZIAExABshGiABMQA/IRsgATEAPiEcIAExAD0hHSABMQA8IR4gATEAOyEfIAE1ADAhICABMQAvISEgATEALiEiIAEzADghIyABMQA6ISQgATEANyElIAExADYhJiABMQA0IScgATEANSEoIAE1AAghKSABMQAMISogATEAByErIAExAAYhLCABNQAAIS0gATEABCEuIAExAAUhLyABMwAYITAgATEAFyExIAExABYhMiABMQAUITMgATEAFSE0IAExACchNSABNQAoITYgATEALCE3IAExAC0hOCACQQhqQRBqIgMgATUAECI5QhiGIAExAA1CKIYgATEADkIwhoQgATEAD0I4hoRCKIiEQv////////8HgzcDACACQTBqQQhqIgQgNSA2IDdCIIaEIDhCKIaEIjZCCIaEQv////////8HgzcDACACQQhqQRhqIgEgMEIkhiA5IDNCIIaEIDRCKIaEIDJCMIaEIDFCOIaEQhyIhDcDACACQQhqQQhqIgUgKSAqQiCGhEIMhiArQjiGIC0gLkIghoQgL0IohoQgLEIwhoQiKYRCNIiENwMAIAJBMGpBGGoiBiAjICRCEIaEIiNCIIYgJ0IghiAoQiiGhCAmQjCGhCAlQjiGhEIgiIRC/////////weDNwMAIAJBMGpBEGoiByAgQhSGICJCMIYgNoQgIUI4hoRCLIiENwMAIAJBMGpBIGoiCCAfQhiGICOEIB5CIIaEIB1CKIaEIBxCMIaEIBtCOIaEQhSINwMAIAJBCGpBIGoiCSAUQjCGIDAgGUIQhoQgGkIYhoQgGEIghoQgF0IohoQgFkIwhoQgFUI4hoRCEIiEQv////////8HgzcDACACIClC/////////weDNwMIIAIgFCASQgiGhCATQhCGhCARQhiGhCAQQiCGhCAPQiiGhCAOQjCGhEIEiEL/////////B4M3AzAgAkHYAGogAkEIakGQqcEAED8gCSACQdgAakEgaiIKKQMANwMAIAEgAkHYAGpBGGoiCykDADcDACADIAJB2ABqQRBqIgwpAwA3AwAgBSACQdgAakEIaiINKQMANwMAIAIgAikDWDcDCCACQdgAaiACQTBqQbipwQAQPyAIIAopAwAiFDcDACAGIAspAwAiMDcDACAHIAwpAwAiDjcDACAEIA0pAwAiDzcDACACIAIpA1giEDcDMCAAIBQgCSkDAHwgMCABKQMAfCAOIAMpAwB8IA8gECACKQMIfCIUQjSIfCAFKQMAfCIwQjSIfCIOQjSIfCIPQjSIfEL/////////B4MgDkL/////////B4MgFEL/////////B4NCk9iomNqc5358Ig5CP4cgMEL/////////B4N8Qv+0yrGIuoV5fCIwQj+HfEKHwqx/fCIQQj+HIA9C/////////weDfCIPQj+HfEKAgICAgIB8fCIRQj+HIhRC7afX56XjmAGDIA5C/////////weDfCIOQv////////8HgzcDACAAIBRCgcu1zvfF+gaDIDBC/////////weDfCAOQjSIfCIwQv////////8HgzcDCCAAIBRC+b3TAIMgEEL/////////B4N8IDBCNIh8IjBC/////////weDNwMQIAAgMEI0iCAPQv////////8Hg3wiMEL/////////B4M3AxggACAUQoCAgICAgASDIBF8IDBCNIh8Qv////////8HgzcDICACQYABaiQAC+0JAQ9/IwBB4ABrIgQkACAEQgA3AgwCQCACQThsIgJFDQAgASACaiEFIARBGGpBFGohBiAEQRhqQRBqIQcgBEEYakEUaiEIIARBGGpBEGohCUEAIQoDQCABQRhqIQsCQAJAAkAgCg0AQQAhDCAEQQA2AiQMAQsgBCgCCCENAkADQCAKLwEyIg5BAnQhD0EAIQJBfyEMAkACQANAAkAgDyACRw0AIA4hDAwCCyAKIAJqIRAgDEEBaiEMIAJBBGohAkF/IAsgEEEEaigCAEEgEIEGIhBBAEcgEEEASBsiEEEBRg0ACyAQQf8BcUUNAQsgDUUNAiANQX9qIQ0gCiAMQQJ0akHMAGooAgAhCgwBCwsgBCAMNgIkIAQgCjYCICAEIA02AhxBASEMIAkhAgwCCyAEIAw2AiggBCAKNgIkQQAhDCAEQQA2AiALIAQgCzYCHCAIIQILIAFBOGohESAEIAw2AhggAiAEQQhqNgIAIARBGGoQrgEaAkAgASgCCCICRQ0AIAEoAgAiASACQSJsaiESA0AgASIPQSJqIQECQAJAAkAgBCgCDCIKDQBBACEMIARBADYCJAwBCyAEKAIIIQ0CQANAIAovATIiDkECdCELQQAhAkF/IQwCQAJAA0ACQCALIAJHDQAgDiEMDAILIAogAmohECAMQQFqIQwgAkEEaiECQX8gDyAQQQRqKAIAQSAQgQYiEEEARyAQQQBIGyIQQQFGDQALIBBB/wFxRQ0BCyANRQ0CIA1Bf2ohDSAKIAxBAnRqQcwAaigCACEKDAELCyAEIAw2AiQgBCAKNgIgIAQgDTYCHEEBIQwgByECDAILIAQgDDYCKCAEIAo2AiRBACEMIARBADYCIAsgBCAPNgIcIAYhAgsgBCAMNgIYIAIgBEEIajYCACAEQRhqEK4BIgIgAi0AACAPLQAgcjoAACACIAItAAEgDy0AIXI6AAEgASASRw0ACwsgESAFRg0BIAQoAgwhCiARIQEMAAsLAkAgAy0AAEUNACAEIARBCGogA0EBahCcAgsgBCgCCCEPIARBGGpBIGogBCgCEEEAIAQoAgwiAhs2AgAgBEEYakEYaiIMIAI2AgAgBEEsaiIQIA82AgAgBEEYakEIaiIKIAI2AgAgBEEYakEQaiACRUEBdCICNgIAIARBxABqIANBCGopAAA3AgAgBEHMAGogA0EQaikAADcCACAEQdQAaiADQRhqKQAANwIAIARB3ABqIANBIGotAAA6AAAgBCAPNgIcIAQgAjYCGCAEIAMpAAA3AjwgACAEQRhqEFggBCgCECELIAQoAgghDyAMIAQoAgwiAjYCACAQIA82AgAgCiACNgIAIAQgC0EAIAIbNgI4IAQgDzYCHCAEIAJFQQF0IgI2AiggBCACNgIYIABBDGogBEEYahBiIAQoAhAhCyAEKAIIIQ8gDCAEKAIMIgI2AgAgECAPNgIAIAogAjYCACAEIAtBACACGzYCOCAEIA82AhwgBCACRUEBdCICNgIoIAQgAjYCGCAAQRhqIARBGGoQYyAEKAIQIQsgBCgCCCEPIAwgBCgCDCICNgIAIBAgDzYCACAKIAI2AgAgBCALQQAgAhs2AjggBCAPNgIcIAQgAkVBAXQiAjYCKCAEIAI2AhggAEEkaiAEQRhqEGUgBEEIahCyASAEQeAAaiQAC64KAQh/IwBB0AFrIgIkACACQRBqIAFByAAQ/wUaAkACQAJAAkACQCACLQA0IgFBAkYNACACQQA6ADQgAQ0BIAJBAjoANAsCQAJAIAIoAhAiAUEDRg0AIAJBMGooAgAiA0UNACACQRBqQQRyIQQDQCACIANBf2o2AjACQAJAIAEOAwABBgELIAIoAhghAwJAIAIoAhQiAUUNACABQX9qIQUCQCABQQdxIgZFDQADQCABQX9qIQEgAygCTCEDIAZBf2oiBg0ACwsgBUEHSQ0AA0AgAygCTCgCTCgCTCgCTCgCTCgCTCgCTCgCTCEDIAFBeGoiAQ0ACwsgAkEANgIcIAIgAzYCGCACQgE3AxALIAJBCGogBBCfAiACKAIIIgNFDQECQCACKAIMIgEtAABFDQAgAUEBai0AAEH/AXENAwsgAigCMCIDRQ0BIAIoAhAhAQwACwsgAEEANgIIIABCATcCAAwECyACQegAakEYaiADKAIAIgFBGGopAAA3AwAgAkHoAGpBEGogAUEQaikAADcDACACQegAakEIaiABQQhqKQAANwMAIAIgASkAADcDaAwCCyACQYABaiACQc0AaikAADcDACACQfgAaiACQcUAaikAADcDACACQfAAaiACQT1qKQAANwMAIAIgAkE1aikAADcDaAwBC0HE2sAAQStBnNzAABCEBAALAkBBgAFBARCYBSIHRQ0AIAcgAikDaDcAACAHQRhqIAJB6ABqQRhqKQMANwAAIAdBEGogAkHoAGpBEGopAwA3AAAgB0EIaiACQegAakEIaikDADcAACACQoSAgIAQNwJcIAIgBzYCWCACQegAaiACQRBqQcgAEP8FGiACQegAakEEciEEIAJBjQFqIQhBASEJA0ACQAJAAkACQCACLQCMASIBQQJGDQAgAkEAOgCMASABDQEgAkECOgCMAQsCQCACKAJoIgNBA0YNACACKAKIASIBRQ0AA0AgAiABQX9qNgKIAQJAAkAgAw4DAAEFAQsgAigCcCEDAkAgAigCbCIBRQ0AIAFBf2ohBQJAIAFBB3EiBkUNAANA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AAtBACEAC0EAIQIgABDpBQ0AQfS/xgAgAEEMaigCAEEBdhDDBkUNACAAKAIEIANJDQBBnMPGACEBA0AgACABENYEDQEgASgCCCIBDQALQfS/xgAgACgCACAAKAIEIgEgASADaxDBBkUNACADRQ0AIAAgACgCBCADazYCBEEAQQAoApTDRiADazYClMNGQQAoAojDRiEBQQAoApDDRiEAQQAgACAAEJkGIgJBCBCBBSACayICEJcGIgA2ApDDRkEAIAEgAyACamsiATYCiMNGIAAgAUEBcjYCBBC+BiICQQgQgQUhBEEUQQgQgQUhBUEQQQgQgQUhBiAAIAEQlwYgBiAFIAQgAmtqajYCBEEAQYCAgAE2AqzDRiADIQILIAJBABCgAmtHDQFBACgCiMNGQQAoAqzDRk0NAUEAQX82AqzDRg8LIAFBgAJJDQEgACABEJUCQQBBACgCtMNGQX9qIgA2ArTDRiAADQAQoAIaDwsPCyABQQN2IgJBA3RB/L/GAGohAQJAAkBBACgC9L9GIgNBASACdCICcUUNACABKAIIIQIMAQtBACADIAJyNgL0v0YgASECCyABIAA2AgggAiAANgIMIAAgATYCDCAAIAI2AggLzggCCH8HfgJAAkACQAJAAkACQAJAIAEpAwAiDVANACANQv//////////H1YNASADRQ0DQaB/IAEvARgiAUFgaiABIA1CgICAgBBUIgUbIgFBcGogASANQiCGIA0gBRsiDUKAgICAgIDAAFQiBRsiAUF4aiABIA1CEIYgDSAFGyINQoCAgICAgICAAVQiBRsiAUF8aiABIA1CCIYgDSAFGyINQoCAgICAgICAEFQiBRsiAUF+aiABIA1CBIYgDSAFGyINQoCAgICAgICAwABUIgUbIA1CAoYgDSAFGyINQj+Hp0F/c2oiBWtBEHRBEHVB0ABsQbCnBWpBzhBtIgFB0QBPDQIgAUEEdCIBQfL8wQBqLwEAIQYCQAJAAkACQCABQej8wQBqKQMAIg5C/////w+DIg8gDSANQn+FQj+IhiINQiCIIhB+IhFCIIggDkIgiCIOIBB+fCAOIA1C/////w+DIg1+Ig5CIIh8IBFC/////w+DIA8gDX5CIIh8IA5C/////w+DfEKAgICACHxCIIh8Ig1BQCAFIAFB8PzBAGovAQBqayIBQT9xrSIQiKci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AEYNAEEoQQQQmAUiAUUNASABQoeAgICACDcCCCABQfiYxgA2AgQgAUECNgIAIAAgATYCBCAAQQE2AgAgAEEIakG4t8IANgIADAMLIAEoAAchAiABKAADIQQgAS0AHyEFIAEtAB4hBiABLQAdIQcgAS0AGyEIIAEtABwhCSABLQAaIQogAS0AGSELIAEtABghDCABLQAXIQ0gAS0AFiEOIAEtABUhDyABLQAUIRAgAS0AEyERIAEtABIhEiABLQARIRMgAS0AECEUIAEtAA8hFSABLQAOIRYgAS0ADSEXIAEtAAwhGCABLQALIRkgAS0AAiEaIAEtAAAhGyADIAEtAAEiHDoALiADIBs6AC8gAyAaOgAtIAMgGToAIyADIBg6ACIgAyAXOgAhIAMgFjoAICADIBU6AB8gAyAUOgAeIAMgEzoAHSADIBI6ABwgAyAROgAbIAMgEDoAGiADIA86ABkgAyAOOgAYIAMgDToAFyADIAw6ABYgAyALOgAVIAMgCjoAFCADIAk6ABIgAyAIOgATIAMgBzoAESADIAY6ABAgAyAFOgAPIAMgBDYCKCADIAI2AiQgA0HIAGoiHSABQThqKQAANwMAIANBwABqIh4gAUEwaikAADcDACADQTBqQQhqIh8gAUEoaikAADcDACADIAEpACA3AzAgA0HwAWogA0EwahB8AkAgAykD8AFCAFINAEEoQQQQmAUiAUUNAiABQQA2AgAgAEEIakG4t8IANgIAIAAgATYCBCAAQQE2AgAgA0EAOgAvIANBADoALiADQQA6AC0gA0EAOgAoIANBADoAKSADQQA6ACogA0EAOgArIANBADoAJCADQQA6ACUgA0EAOgAmIANBADoAJyADQQA6ACMgA0EAOgAiIANBADoAISADQQA6ACAgA0EAOgAfIANBADoAHiADQQA6AB0gA0EAOgAcIANBADoAGyADQQA6ABogA0EAOgAZIANBADoAGCADQQA6ABcgA0EAOgAWIANBADoAFSADQQA6ABQgA0EAOgATIANBADoAEiADQQA6ABEgA0EAOgAQIANBADoADwwDCyADKAL4ASEBIANB1ABqIANB8AFqQQxqQZwBEP8FGiADQaQDaiAdKQMANwIAIANBnANqIB4pAwA3AgAgA0GUA2ogHykDADcCACADIAMpAzA3AowDIANB8AFqIANB1ABq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IAogCVStfEINhoR8IgVCM4ggA0GgAWpBCGopAwAgA0EQakEIaikDAHwgCCANVK18QgGGIAhCP4iEIANBwAFqQQhqKQMAfCAEIA5UrXwgBSAEVK18Qg2GhHwiBEIziCADQZABakEIaikDACADQdAAakEIaikDAHwgBiALVK18QgGGIAZCP4iEIANBCGopAwB8IAcgDFStfCAEIAdUrXxCDYaEQhN+IBdC/////////wODfCIGQv////////8DgyEIIAZCM4ggFUL/////////A4N8IQcgBEL/////////A4MhBCAFQv////////8DgyEFIApC/////////wODIQYgAkF/aiICDQALIAAgBDcDICAAIAU3AxggACAGNwMQIAAgBzcDCCAAIAg3AwAgA0HwAWokAAvOBwEUfwJAAkAgAUEYaigCACIELwEyIgUgAUEQaigCACIGLwEyIgcgAhsgA0kNACAHQQFqIgggBWoiCUELSw0BIAEoAgwhCiABKAIIIQsgASgCACEMIAEoAgQiAS8BMiENIAYgCTsBMkEEIQ4gAUEEaiIPIAtBAnQiEGoiESgCACESIBEgDyALQQFqIhNBAnQiFGogDSALQX9zaiIVQQJ0IhYQgAYaIAZBBGoiDyAHQQJ0aiASNgIAIA8gCEECdGogBEEEaiAFQQJ0IhcQ/wUaIAFBNGoiESALQQF0aiISLwAAIQ8gEiARIBNBAXRqIBVBAXQQgAYaIAZBNGoiESAHQQF0aiISIA9BAXE6AAAgEiAPQQh2QQFxOgABIBEgCEEBdGogBEE0aiAFQQF0EP8FGiABQcwAaiIPIBRqIBAgD2pBCGogFhCABhoCQCATIA1PDQAgDSALa0F+aiEQAkAgFUEDcSIPRQ0AIAtBAnQgAWpB0ABqIQsDQCALKAIAIhUgEzsBMCAVIAE2AgAgC0EEaiELIBNBAWohEyAPQX9qIg8NAAsLIBBBA0kNACATQQNqIQtBACANayEVIBNBAnQgAWpB2ABqIRMDQCATQXRqKAIAIg8gC0F9ajsBMCAPIAE2AgAgE0F4aigCACIPIAtBfmo7ATAgDyABNgIAIBNBfGooAgAiDyALQX9qOwEwIA8gATYCACATKAIAIg8gCzsBMCAPIAE2AgAgE0EQaiETIBUgC0EEaiILakEDRw0ACwsgASABLwEyQX9qOwEyQcwAIQECQCAMQQFNDQBBBCEOIAYgCEECdGpBzABqIARBzABqIBdBBGoQ/wUaQfwAIQEgCSAHTQ0AIAghCwJAIAVBAWpBA3EiE0UNACAGIAdBAnRqQdAAaiEBIAghCwNAIAEoAgAiDyALOwEwIA8gBjYCACABQQRqIQEgC0EBaiELIBNBf2oiEw0ACwtB/AAhASAFQQNJDQAgC0EDaiEBQX4gByAFamshDyALQQJ0IAZqQdgAaiELA0AgC0F0aigCACITIAFBfWo7ATAgEyAGNgIAIAtBeGooAgAiEyABQX5qOwEwIBMgBjYCACALQXxqKAIAIhMgAUF/ajsBMCATIAY2AgAgCygCACITIAE7ATAgEyAGNgIAIAtBEGohC0EEIQ4gDyABQQRqIgFqQQNHDQALQfwAIQELIAQgASAOELgFIAAgCEEAIAIbIANqNgIIIAAgBjYCBCAAIAo2AgAPC0GApsAAQZEBQZSnwAAQhAQAC0Gkp8AAQSpB0KfAABCEBAALmgkBAX8jAEEwayICJAACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAADhIAAQIDBAUGBwgJCgsMDQ4PEBEACyACIAAtAAE6AAggAkEsakEBNgIAIAJCAjcCHCACQZjXwQA2AhggAkGMATYCFCACIAJBEGo2AiggAiACQQhqNgIQIAEgAkEYahDJAyEADBELIAIgAEEIaikDADcDCCACQSxqQQE2AgAgAkICNwIcIAJB/NbBADYCGCACQY0BNgIUIAIgAkEQajYCKCACIAJBCGo2AhAgASACQRhqEMkDIQAMEAsgAiAAQQhqKQMANwMIIAJBLGpBATYCACACQgI3AhwgAkH81sEANgIYIAJBjgE2AhQgAiACQRBqNgIoIAIgAkEIajYCECABIAJBGGoQyQMhAAwPCyACIABBCGorAwA5AwggAkEsakEBNgIAIAJCAjcCHCACQeDWwQA2AhggAkGPATYCFCACIAJBEGo2AiggAiACQQhqNgIQIAEgAkEYahDJAyEADA4LIAIgAEEEaigCADYCCCACQSxqQQE2AgAgAkICNwIcIAJBwNbBADYCGCACQZABNgIUIAIgAkEQajYCKCACIAJBCGo2AhAgASACQRhqEMkDIQAMDQsgAiAAQQRqKQIANwMIIAJBLGpBATYCACACQgE3AhwgAkGs1sEANgIYIAJBkQE2AhQgAiACQRBqNgIoIAIgAkEIajYCECABIAJBGGoQyQMhAAwMCyACQSxqQQA2AgAgAkHM1MEANgIoIAJCATcCHCACQZzWwQA2AhggASACQRhqEMkDIQAMCwsgAkEsakEANgIAIAJBzNTBADYCKCACQgE3AhwgAkGI1sEANgIYIAEgAkEYahDJAyEADAoLIAJBLGpBADYCACACQczUwQA2AiggAkIBNwIcIAJB9NXBADYCGCABIAJBGGoQyQMhAAwJCyACQSxqQQA2AgAgAkHM1MEANgIoIAJCATcCHCACQeDVwQA2AhggASACQRhqEMkDIQAMCAsgAkEsakEANgIAIAJBzNTBADYCKCACQgE3AhwgAkHI1cEANgIYIAEgAkEYahDJAyEADAcLIAJBLGpBADYCACACQczUwQA2AiggAkIBNwIcIAJBuNXBADYCGCABIAJBGGoQyQMhAAwGCyACQSxqQQA2AgAgAkHM1MEANgIoIAJCATcCHCACQazVwQA2AhggASACQRhqEMkDIQAMBQsgAkEsakEANgIAIAJBzNTBADYCKCACQgE3AhwgAkGg1cEANgIYIAEgAkEYahDJAyEADAQLIAJBLGpBADYCACACQczUwQA2AiggAkIBNwIcIAJBjNXBADYCGCABIAJBGGoQyQMhAAwDCyACQSxqQQA2AgAgAkHM1MEANgIoIAJCATcCHCACQfTUwQA2AhggASACQRhqEMkDIQAMAgsgAkEsakEANgIAIAJBzNTBADYCKCACQgE3AhwgAkHc1MEANgIYIAEgAkEYahDJAyEADAELIAEgAEEEaigCACAAQQhqKAIAEPoEIQALIAJBMGokACAAC4sJAgV/C34jAEHQAWsiAyQAIANBCGpBCGogAUEwaiIEKQMAIAEpAwgiCHw3AwAgA0EIakEQaiABQThqIgUpAwAgASkDECIJfDcDACADQQhqQRhqIAFBwABqIgYpAwAgASkDGCIKfDcDACADQQhqQSBqIAFByABqIgcpAwAgASkDICILfDcDACADIAEpAyggASkDACIMfDcDCCADIAcpAwAgC31C8P///////z98IgtC/////////wODIAYpAwAgCn1C8P///////z98IgpCM4h8NwNQIAMgCkL/////////A4MgBSkDACAJfULw////////P3wiCUIziHw3A0ggAyAJQv////////8DgyAEKQMAIAh9QvD///////8/fCIIQjOIfDcDQCADIAhC/////////wODIAEpAyggDH1C0P3//////z98IghCM4h8NwM4IAMgC0IziEITfiAIQv////////8Dg3w3AzAgA0HYAGogA0EIaiACQShqEFAgA0GAAWogA0EwaiACEFAgA0GoAWogAUH4AGogAkHQAGoQUCAAIANB2ABqQSBqIgIpAwAgAykDoAEiCH1C8P///////z98IglC/////////wODIANB2ABqQRhqIgQpAwAgAykDmAEiCn1C8P///////z98IgtCM4h8NwMgIAAgC0L/////////A4MgA0HYAGpBEGoiBSkDACADKQOQASILfULw////////P3wiDEIziHw3AxggACAMQv////////8DgyADQdgAakEIaiIGKQMAIAMpA4gBIgx9QvD///////8/fCINQjOIfDcDECAAIA1C/////////wODIAMpA1ggAykDgAEiDX1C0P3//////z98Ig5CM4h8NwMIIAAgCUIziEITfiAOQv////////8Dg3w3AwAgAUHYAGopAwAhDiABQeAAaikDACEPIAFB6ABqKQMAIRAgAUHwAGopAwAhESABKQNQIRIgACANIAMpA1h8NwMoIABBMGogDCAGKQMAfDcDACAAQThqIAsgBSkDAHw3AwAgAEHAAGogCiAEKQMAfDcDACAAQcgAaiAIIAIpAwB8NwMAIAMpA6gBIQggAykDsAEhCSADKQO4ASEKIAMpA8ABIQsgAEGYAWogEUIBhiIMIAMpA8gBIg18NwMAIABBkAFqIAsgEEIBhiIQfDcDACAAQYgBaiAKIA9CAYYiD3w3AwAgAEGAAWogCSAOQgGGIg58NwMAIAAgCCASQgGGIhF8NwN4IABB8ABqIAwgDX1C8P///////z98IgxC/////////wODIBAgC31C8P///////z98IgtCM4h8NwMAIABB6ABqIAtC/////////wODIA8gCn1C8P///////z98IgpCM4h8NwMAIABB4ABqIApC/////////wODIA4gCX1C8P///////z98IglCM4h8NwMAIABB2ABqIAlC/////////wODIBEgCH1C0P3//////z98IghCM4h8NwMAIAAgDEIziEITfiAIQv////////8Dg3w3A1AgA0HQAWokAAvMBwEPfwJAAkACQAJAIABBEGooAgAiAi8BMiIDIAFqIgRBC0sNACAAQRhqKAIAIgUvATIiBiABSQ0CIAIgBDsBMiAFIAYgAWsiBzsBMiAAQQRqKAIAIgggACgCCCIJQQJ0akEEaiIKKAIAIQsgBUE0aiIMIAFBf2oiDUEBdCIOai8AACEGIAogBUEEaiIPIA1BAnQiEGooAgA2AgAgCCAJQQF0aiIJQTRqIgovAAAhCCAKIAZBAXE6AAAgCUE1aiAGQQh2QQFxOgAAIAJBBGoiCSADQQJ0aiALNgIAIAJBNGoiCiADQQF0aiIGIAhBCHZBAXE6AAEgBiAIQQFxOgAAIA0gBCADQQFqIgZrRw0BIAkgBkECdGogDyAQEP8FGiAKIAZBAXRqIAwgDhD/BRogDyAPIAFBAnRqIAdBAnQQgAYaIAwgDCABQQF0aiAHQQF0EIAGGiAAKAIUIQwCQAJAIAAoAgwNACAMRQ0BDAULIAxFDQQgAiAGQQJ0akHMAGogBUHMAGoiACABQQJ0IgwQ/wUaIAAgACAMaiAHQQJ0QQRqEIAGGgJAIAQgA00NAAJAIAFBA3EiAEUNACADQQJ0IAJqQdAAaiEBA0AgASgCACIDIAY7ATAgAyACNgIAIAFBBGohASAGQQFqIQYgAEF/aiIADQALCyANQQNJDQAgBkEDaiEBQQAgBGshAyAGQQJ0IAJqQdgAaiEGA0AgBkF0aigCACIAIAFBfWo7ATAgACACNgIAIAZBeGooAgAiACABQX5qOwEwIAAgAjYCACAGQXxqKAIAIgAgAUF/ajsBMCAAIAI2AgAgBigCACIAIAE7ATAgACACNgIAIAZBEGohBiADIAFBBGoiAWpBBEcNAAsLIAdBf0YNACAHQQFqIgBBA3EhBkEAIQICQCAHQQNJDQAgBUHMAGohAUEAIABBfHFrIQNBASECA0AgASgCACIAIAJBf2o7ATAgACAFNgIAIAFBBGooAgAiACACOwEwIAAgBTYCACABQQhqKAIAIgAgAkEBajsBMCAAIAU2AgAgAUEMaigCACIAIAJBAmo7ATAgACAFNgIAIAFBEGohASADIAJBBGoiAmpBAUcNAAsgAkF/aiECCyAGRQ0AIAJBAnQgBWpBzABqIQEDQCABKAIAIgAgAjsBMCAAIAU2AgAgAUEEaiEBIAJBAWohAiAGQX9qIgYNAAsLDwtB9KTAAEEyQailwAAQhAQAC0GgosAAQShByKLAABCEBAALQbilwABBKEHgpcAAEIQEAAtBvKTAAEEoQfClwAAQhAQAC4UJAgV/Cn4jAEHQAWsiAyQAIANBCGpBCGogAUEwaiIEKQMAIAEpAwgiCHw3AwAgA0EIakEQaiABQThqIgUpAwAgASkDECIJfDcDACADQQhqQRhqIAFBwABqIgYpAwAgASkDGCIKfDcDACADQQhqQSBqIAFByABqIgcpAwAgASkDICILfDcDACADIAEpAyggASkDACIMfDcDCCADIAcpAwAgC31C8P///////z98IgtC/////////wODIAYpAwAgCn1C8P///////z98IgpCM4h8NwNQIAMgCkL/////////A4MgBSkDACAJfULw////////P3wiCUIziHw3A0ggAyAJQv////////8DgyAEKQMAIAh9QvD///////8/fCIIQjOIfDcDQCADIAhC/////////wODIAEpAyggDH1C0P3//////z98IghCM4h8NwM4IAMgC0IziEITfiAIQv////////8Dg3w3AzAgA0HYAGogA0EIaiACEFAgA0GAAWogA0EwaiACQShqEFAgA0GoAWogAUH4AGogAkHQAGoQUCAAIANB2ABqQSBqIgIpAwAgAykDoAEiCH1C8P///////z98IglC/////////wODIANB2ABqQRhqIgQpAwAgAykDmAEiCn1C8P///////z98IgtCM4h8NwMgIAAgC0L/////////A4MgA0HYAGpBEGoiBSkDACADKQOQASILfULw////////P3wiDEIziHw3AxggACAMQv////////8DgyADQdgAakEIaiIGKQMAIAMpA4gBIgx9QvD///////8/fCINQjOIfDcDECAAIA1C/////////wODIAMpA1ggAykDgAEiDX1C0P3//////z98Ig5CM4h8NwMIIAAgCUIziEITfiAOQv////////8Dg3w3AwAgAUHwAGopAwAhCSABQegAaikDACEOIAFB4ABqKQMAIQ8gAUHYAGopAwAhECABKQNQIREgACANIAMpA1h8NwMoIABBMGogDCAGKQMAfDcDACAAQThqIAsgBSkDAHw3AwAgAEHAAGogCiAEKQMAfDcDACAAQcgAaiAIIAIpAwB8NwMAIAAgEUIBhiIKIAMpA6gBIgt8NwNQIABB2ABqIBBCAYYiDCADKQOwASINfDcDACAAQeAAaiAPQgGGIg8gAykDuAEiEHw3AwAgAEHoAGogDkIBhiIOIAMpA8ABIhF8NwMAIAMpA8gBIQggAEGIAWogDyAQfULw////////P3wiD0L/////////A4MgDCANfULw////////P3wiDEIziHw3AwAgAEGAAWogDEL/////////A4MgCiALfULQ/f//////P3wiCkIziHw3AwAgAEGQAWogDiARfULw////////P3wiC0L/////////A4MgD0IziHw3AwAgAEHwAGogCCAJQgGGIgl8NwMAIABBmAFqIAkgCH1C8P///////z98IghC/////////wODIAtCM4h8NwMAIAAgCEIziEITfiAKQv////////8Dg3w3A3ggA0HQAWokAAuECQIFfwt+IwBB8AFrIgMkACADQQhqIAFBMGoiBCkDACABKQMIIgh8NwMAIANBEGogAUE4aiIFKQMAIAEpAxAiCXw3AwAgA0EYaiABQcAAaiIGKQMAIAEpAxgiCnw3AwAgA0EgaiABQcgAaiIHKQMAIAEpAyAiC3w3AwAgAyABKQMoIAEpAwAiDHw3AwAgAyAHKQMAIAt9QvD///////8/fCILQv////////8DgyAGKQMAIAp9QvD///////8/fCIKQjOIfDcDSCADIApC/////////wODIAUpAwAgCX1C8P///////z98IglCM4h8NwNAIAMgCUL/////////A4MgBCkDACAIfULw////////P3wiCEIziHw3AzggAyAIQv////////8DgyABKQMoIAx9QtD9//////8/fCIIQjOIfDcDMCADIAtCM4hCE34gCEL/////////A4N8NwMoIANB0ABqIAMgAkEoahBQIANB+ABqIANBKGogAhBQIANBoAFqIAFB+ABqIAJB+ABqEFAgA0HIAWogAUHQAGogAkHQAGoQUCAAIANB0ABqQSBqIgEpAwAgAykDmAEiCH1C8P///////z98IglC/////////wODIANB0ABqQRhqIgIpAwAgAykDkAEiCn1C8P///////z98IgtCM4h8NwMgIAAgC0L/////////A4MgA0HQAGpBEGoiBCkDACADKQOIASILfULw////////P3wiDEIziHw3AxggACAMQv////////8DgyADQdAAakEIaiIFKQMAIAMpA4ABIgx9QvD///////8/fCINQjOIfDcDECAAIA1C/////////wODIAMpA1AgAykDeCINfULQ/f//////P3wiDkIziHw3AwggACAJQjOIQhN+IA5C/////////wODfDcDACADKQPIASEOIAMpA9ABIQ8gAykD2AEhECADKQPgASERIAMpA+gBIRIgACANIAMpA1B8NwMoIABBMGogDCAFKQMAfDcDACAAQThqIAsgBCkDAHw3AwAgAEHAAGogCiACKQMAfDcDACAAQcgAaiAIIAEpAwB8NwMAIAMpA6ABIQggAykDqAEhCSADKQOwASEKIAMpA7gBIQsgAEGYAWogEkIBhiIMIAMpA8ABIg18NwMAIABBkAFqIAsgEUIBhiIRfDcDACAAQYgBaiAKIBBCAYYiEHw3AwAgAEGAAWogCSAPQgGGIg98NwMAIAAgCCAOQgGGIg58NwN4IABB8ABqIAwgDX1C8P///////z98IgxC/////////wODIBEgC31C8P///////z98IgtCM4h8NwMAIABB6ABqIAtC/////////wODIBAgCn1C8P///////z98IgpCM4h8NwMAIABB4ABqIApC/////////wODIA8gCX1C8P///////z98IglCM4h8NwMAIABB2ABqIAlC/////////wODIA4gCH1C0P3//////z98IghCM4h8NwMAIAAgDEIziEITfiAIQv////////8Dg3w3A1AgA0HwAWokAAv+CAIFfwp+IwBB8AFrIgMkACADQQhqIAFBMGoiBCkDACABKQMIIgh8NwMAIANBEGogAUE4aiIFKQMAIAEpAxAiCXw3AwAgA0EYaiABQcAAaiIGKQMAIAEpAxgiCnw3AwAgA0EgaiABQcgAaiIHKQMAIAEpAyAiC3w3AwAgAyABKQMoIAEpAwAiDHw3AwAgAyAHKQMAIAt9QvD///////8/fCILQv////////8DgyAGKQMAIAp9QvD///////8/fCIKQjOIfDcDSCADIApC/////////wODIAUpAwAgCX1C8P///////z98IglCM4h8NwNAIAMgCUL/////////A4MgBCkDACAIfULw////////P3wiCEIziHw3AzggAyAIQv////////8DgyABKQMoIAx9QtD9//////8/fCIIQjOIfDcDMCADIAtCM4hCE34gCEL/////////A4N8NwMoIANB0ABqIAMgAhBQIANB+ABqIANBKGogAkEoahBQIANBoAFqIAFB+ABqIAJB+ABqEFAgA0HIAWogAUHQAGogAkHQAGoQUCAAIANB0ABqQSBqIgEpAwAgAykDmAEiCH1C8P///////z98IglC/////////wODIANB0ABqQRhqIgIpAwAgAykDkAEiCn1C8P///////z98IgtCM4h8NwMgIAAgC0L/////////A4MgA0HQAGpBEGoiBCkDACADKQOIASILfULw////////P3wiDEIziHw3AxggACAMQv////////8DgyADQdAAakEIaiIFKQMAIAMpA4ABIgx9QvD///////8/fCINQjOIfDcDECAAIA1C/////////wODIAMpA1AgAykDeCINfULQ/f//////P3wiDkIziHw3AwggACAJQjOIQhN+IA5C/////////wODfDcDACADKQPoASEJIAMpA+ABIQ4gAykD2AEhDyADKQPQASEQIAMpA8gBIREgACANIAMpA1B8NwMoIABBMGogDCAFKQMAfDcDACAAQThqIAsgBCkDAHw3AwAgAEHAAGogCiACKQMAfDcDACAAQcgAaiAIIAEpAwB8NwMAIAAgEUIBhiIKIAMpA6ABIgt8NwNQIABB2ABqIBBCAYYiDCADKQOoASINfDcDACAAQeAAaiAPQgGGIg8gAykDsAEiEHw3AwAgAEHoAGogDkIBhiIOIAMpA7gBIhF8NwMAIAMpA8ABIQggAEGIAWogDyAQfULw////////P3wiD0L/////////A4MgDCANfULw////////P3wiDEIziHw3AwAgAEGAAWogDEL/////////A4MgCiALfULQ/f//////P3wiCkIziHw3AwAgAEGQAWogDiARfULw////////P3wiC0L/////////A4MgD0IziHw3AwAgAEHwAGogCCAJQgGGIgl8NwMAIABBmAFqIAkgCH1C8P///////z98IghC/////////wODIAtCM4h8NwMAIAAgCEIziEITfiAKQv////////8Dg3w3A3ggA0HwAWokAAvUBwILfwV+IwBB0ABrIgQkACAEQShqIAEgASAC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ASkCADcDGCADQShqQQhqIAQpAgA3AwAgAyABKQIANwMoIANBOGogA0EYaiADQShqEFtBACEBAkAgAygCOA0AIAAgAykCPDcCBCAAQQxqIANBOGpBDGopAgA3AgBBASEBCyAAIAE2AgAMAQsgA0EYakEIaiABQQhqIgQpAgA3AwAgAyABKQIANwMYIANBKGpBCGogBCkCADcDACADIAEpAgA3AyggA0E4aiADQRhqIANBKGoQWwJAAkAgAygCOA0AIANBCGpBCGogA0HEAGopAgA3AwAgAyADKQI8NwMIQQEhBQJAAkAgAkIBiKciBg0AQQAhB0EAIQRBACEIDAELQQAhCEEAIQRBACEHA0AgAyAHNgIkIAMgBTYCICADIAQ2AhwgAyAINgIYIANBKGpBCGogA0EIakEIaikDADcDACADIAMpAwg3AyggA0E4aiADQRhqIANBKGoQWyADKAI4DQIgAygCSCEHIAMoAkQhBSADKAJAIQQgAygCPCEIIAZBf2oiBg0ACwsgAkIBg1ANASADQRhqQQhqIAFBCGopAgA3AwAgAyABKQIANwMYIAMgBzYCNCADIAU2AjAgAyAENgIsIAMgCDYCKCADQThqIANBGGogA0EoahBbIAMoAjgNACADQcgAaigCACEHIANBxABqKAIAIQUgA0E4akEIaigCACEEIAMoAjwhCAwBCyAAQQA2AgAMAQsCQAJAIAUNACAHDQBBACEJQQAhCkEAIQFBACEGIARFDQELAkAgCEEQdkH/AXEiBg0AIAchCSAFIQogBCEBIAghBgwBCwJAA0ACQCAEIARBCm4iAUEKbGutQiCGIAethCICIAJCCoAiC0IKfn1CIIYgBa2EIgIgAkIKgCICQgp+fUIAUQ0AIAQhASAHIQkgBSEKDAILIAunIQcgAqchBSABIQQgBkF/aiIGDQALIAunIQkgAqchCkEAIQYLIAZBEHQgCEGAgICAeHFyIQYLIAAgBjYCBCAAQQE2AgAgAEEQaiAJNgIAIABBDGogCjYCACAAQQhqIAE2AgALIANB0ABqJAALsQYCAn8GfiMAQSBrIgUkAAJAAkACQAJAAkACQAJAAkACQCADUA0AIARQDQELQgAhByACUA0FIAEgA1QgAiAEVCACIARRGw0FIAUgAyAEIAR5pyACeadrIgZB/wBxENoDQgEgBkE/ca2GIQggBUEIaikDACEJQgAhByAFKQMAIQoDQCABIAp9IQsCQCACIAl9IAEgClStfSIMQn9XDQAgByAIhCEHIAsgA1ogDCAEWiAMIARRG0UNAyALIQEgDCECCyAKQgGIIAlCP4aEIQogCEIBiCEIIAlCAYghCQwACwsCQAJAIAJQDQAgAiADVA0BIAIgA1ENBCACIAIgA4AiCiADfn0hDCADQoCAgIAQWg0DIAxCIIYgAUIgiIQiCSAJIAOAIgkgA359QiCGIAFC/////w+DhCIBIAEgA4AiDCADfn0hASAJQiCGIAyEIQcgCUIgiCAKhCEKQgAhDAwICyABIAEgA4AiByADfn0hAQwECyAFQRBqIAMgBEHAACACeacgA3mnayIGa0E/IAYbIgZB/wBxENoDQgEgBkE/ca2GIQwgBUEYaikDACEKIAUpAxAhCUIAIQsDQAJAIAIgCn0gASAJVK19IghCf1cNACABIAl9IQEgDCALhCELAkAgCEIAUQ0AIAghAgwBCyABIAOAIgogC4QhByABIAogA359IQEMBQsgCUIBiCAKQj+GhCEJIAxCAYghDCAKQgGIIQoMAAsLQgAhCiALIQEMBQsCQCABIANUIAwgBFQgDCAEURsNACAEQj+GIANCAYiEIQkgA0I/hiEIQoCAgICAgICAgH8hC0IAIQQDQAJAIAwgCX0gASAIVK19IgJCf1cNACABIAh9IQEgCyAEhCEEAkAgAkIAUQ0AIAIhDAwBCyABIAOAIgkgBIQhByABIAkgA359IQFCACEMDAcLIAhCAYggCUI/hoQhCCALQgGIIQsgCUIBiCEJDAALC0IAIQcMBAsgASABIAKAIgcgAn59IQFCACEMQgEhCgwDC0IAIQwMAQsgAiEMC0IAIQoLIAAgATcDECAAIAc3AwAgAEEYaiAMNwMAIAAgCjcDCCAFQSBqJAALhwgCAX8UfiMAQdABayICJAAgAkEIaiABQQEQZiACQTBqIAFBKGpBARBmIAJB2ABqIAFB0ABqQQEQZiACKQNYIQMgAikDYCEEIAIpA2ghBSACKQN4IQYgAikDcCEHIAJBgAFqQQhqIAFBCGopAwAgAUEwaikDAHw3AwAgAkGAAWpBEGogAUEQaikDACABQThqKQMAfDcDACACQYABakEYaiABQRhqKQMAIAFBwABqKQMAfDcDACACQYABakEgaiABQSBqKQMAIAFByABqKQMAfDcDACACIAEpAwAgASkDKHw3A4ABIAJBqAFqIAJBgAFqQQEQZiAAQcgAaiACKQMoIgggAikDUCIJfCIKNwMAIABBwABqIAIpAyAiCyACKQNIIgx8Ig03AwAgAEE4aiACKQMYIg4gAikDQCIPfCIQNwMAIABBMGogAikDECIRIAIpAzgiEnwiEzcDACAAIAIpAwgiFCACKQMwIhV8IhY3AyggAEHwAGogCSAIfULw////////P3wiCEL/////////A4MgDCALfULw////////P3wiCUIziHwiCzcDACAAQegAaiAJQv////////8DgyAPIA59QvD///////8/fCIJQjOIfCIMNwMAIABB4ABqIAlC/////////wODIBIgEX1C8P///////z98IglCM4h8Ig43AwAgAEHYAGogCUL/////////A4MgFSAUfULQ/f//////P3wiCUIziHwiDzcDACAAIAhCM4hCE34gCUL/////////A4N8Igg3A1AgACACKQPIASAKfULw////////P3wiCUL/////////A4MgAikDwAEgDX1C8P///////z98IgpCM4h8NwMgIAAgCkL/////////A4MgAikDuAEgEH1C8P///////z98IgpCM4h8NwMYIAAgCkL/////////A4MgAikDsAEgE31C8P///////z98IgpCM4h8NwMQIAAgCkL/////////A4MgAikDqAEgFn1C0P3//////z98IgpCM4h8NwMIIAAgCUIziEITfiAKQv////////8Dg3w3AwAgAEGYAWogBkIBhiALfULw////////P3wiBkL/////////A4MgB0IBhiAMfULw////////P3wiB0IziHw3AwAgAEGQAWogB0L/////////A4MgBUIBhiAOfULw////////P3wiBUIziHw3AwAgAEGIAWogBUL/////////A4MgBEIBhiAPfULw////////P3wiBEIziHw3AwAgAEGAAWogA0IBhiAIfULQ/f//////P3wiA0IziCAEQv////////8Dg3w3AwAgACAGQjOIQhN+IANC/////////wODfDcDeCACQdABaiQAC54HAQZ/AkACQAJAAkAgAkEJSQ0AIAMgAhDLASICDQFBAA8LEL4GIQFBACECIAEgAUEIEIEFQRRBCBCBBWpBEEEIEIEFamtB+P97akF3cUF9aiIBQQBBEEEIEIEFQQJ0ayIEIAQgAUsbIANNDQFBECADQQRqQRBBCBCBBUF7aiADSxtBCBCBBSEEIAAQmgYhASABIAEQ5wUiBRCXBiEGAkACQAJAAkACQAJAAkACQCABEMUFDQAgBSAETw0BIAZBACgCkMNGRg0CIAZBACgCjMNGRg0DIAYQrAUNByAGEOcFIgcgBWoiBSAESQ0HIAUgBGshCCAHQYACSQ0EIAYQmgIMBQsgARDnBSEFIARBgAJJDQYCQCAFIARBBGpJDQAgBSAEa0GBgAhJDQYLQfS/xgAgASABKAIAIgZrIAUgBmpBEGoiByAEQR9qQfS/xgAQxQYQgQUiBUEBEMAGIgRFDQYgBCAGaiIBIAUgBmsiA0FwaiICNgIEEL0GIQAgASACEJcGIAA2AgQgASADQXRqEJcGQQA2AgRBAEEAKAKUw0YgBSAHa2oiAzYClMNGQQBBACgCsMNGIgIgBCAEIAJLGzYCsMNGQQBBACgCmMNGIgIgAyACIANLGzYCmMNGDAkLIAUgBGsiBUEQQQgQgQVJDQQgASAEEJcGIQYgASAEEMsEIAYgBRDLBCAGIAUQpwEMBAtBACgCiMNGIAVqIgUgBE0NBCABIAQQlwYhBiABIAQQywQgBiAFIARrIgRBAXI2AgRBACAENgKIw0ZBACAGNgKQw0YMAwtBACgChMNGIAVqIgUgBEkNAwJAAkAgBSAEayIGQRBBCBCBBU8NACABIAUQywRBACEGQQAhBQwBCyABIAQQlwYiBSAGEJcGIQcgASAEEMsEIAUgBhD3BCAHEK0FC0EAIAU2AozDRkEAIAY2AoTDRgwCCwJAIAZBDGooAgAiCSAGQQhqKAIAIgZGDQAgBiAJNgIMIAkgBjYCCAwBC0EAQQAoAvS/RkF+IAdBA3Z3cTYC9L9GCwJAIAhBEEEIEIEFSQ0AIAEgBBCXBiEFIAEgBBDLBCAFIAgQywQgBSAIEKcBDAELIAEgBRDLBAsgAQ0DCyADEDsiBEUNASAEIAAgAyABEOcFQXhBfCABEMUFG2oiAiACIANLGxD/BSEDIAAQXiADDwsgAiAAIAMgASABIANLGxD/BRogABBeCyACDwsgARDFBRogARCZBgucBwEPfyMAQfABayIDJAACQAJAAkACQCACRQ0AIANBoAFqIAFBAxCcAQJAIAMvAaABRQ0AIAMoAqQBIQIgAEEBNgIAIAAgAjYCBAwECwJAAkACQCADLwGiASIEDQAgA0EANgIQIAMgBDYCDCADQQE2AggMAQsgBEEGdCIFQQEQmAUiBkUNAyADQQA2AhAgAyAENgIMIAMgBjYCCCADQaABakEIaiEGIAJBf2oiByEFA0AgBUUNAiADQaABaiABQcAAEMIBAkAgAy0AoAFFDQAgAygCpAEhAgwGCyADQeAAakEIaiIIIAZBCGopAgA3AwAgA0HgAGpBEGoiCSAGQRBqKQIANwMAIANB4ABqQRhqIgogBkEYaikCADcDACADQeAAakEgaiILIAZBIGopAgA3AwAgA0HgAGpBKGoiDCAGQShqKQIANwMAIANB4ABqQTBqIg0gBkEwaikCADcDACADQeAAakE4aiIOIAZBOGotAAA6AAAgAyAGKQIANwNgIAMvAKEBIQ8gAy0AowEhECADKAKkASECIANBGGpBCGoiESAIKQMANwMAIANBGGpBEGoiCCAJKQMANwMAIANBGGpBGGoiCSAKKQMANwMAIANBGGpBIGoiCiALKQMANwMAIANBGGpBKGoiCyAMKQMANwMAIANBGGpBMGoiDCANKQMANwMAIANBGGpBOGoiDSAOLQAAOgAAIAMgAykDYDcDGCADIAI2AFkgAyAQOgBYIAJBgICAeHEgAygCWCIOQQh2ciEQAkAgAygCECICIAMoAgxHDQAgA0EIaiACENMCIAMoAhAhAgsgAygCCCACQQZ0aiICIBA2AAMgAiAOOgACIAIgDzsAACACIAMpAxg3AAcgAkEPaiARKQMANwAAIAJBF2ogCCkDADcAACACQR9qIAkpAwA3AAAgAkEnaiAKKQMANwAAIAJBL2ogCykDADcAACACQTdqIAwpAwA3AAAgAkE/aiANLQAAOgAAIAMgAygCEEEBajYCECAFQX9qIQUgBEF/aiIEDQALCyAAIAMpAwg3AgQgAEEANgIAIABBDGogA0EQaigCADYCAAwECyAHIANB6AFqQaC8xgAQsAIhAgwCC0EAIANB6AFqQaC8xgAQsAIhAiAAQQE2AgAgACACNgIEDAILIAVBARDvBQALIABBATYCACAAIAI2AgQgAygCDCICRQ0AIAMoAgggAkEGdEEBELgFCyADQfABaiQAC98GAgZ/DH4gAEIANwMIIABCATcDACAAQgE3AyggAEEQaiIDQgA3AwAgAEEYaiIEQgA3AwAgAEEgaiIFQgA3AwAgAEEwakEAQcgAEIIGIQYgACABIAJBGHQiAkEfdSIHIAJBGHVqIAdzIgJBAXNBf2ogAkF/cyIIcUGAgAJxQQ92EIcFELsBIAAgAUH4AGogAkECc0F/aiAIcUGAgAJxQQ92EIcFELsBIAAgAUHwAWogAkEDc0F/aiAIcUGAgAJxQQ92EIcFELsBIAAgAUHoAmogAkEEc0F/aiAIcUGAgAJxQQ92EIcFELsBIAAgAUHgA2ogAkEFc0F/aiAIcUGAgAJxQQ92EIcFELsBIAAgAUHYBGogAkEGc0F/aiAIcUGAgAJxQQ92EIcFELsBIAAgAUHQBWogAkEHc0F/aiAIcUGAgAJxQQ92EIcFELsBIAAgAUHIBmogAkEIc0F/aiAIcUGAgAJxQQ92EIcFELsBIAdBAXEQhwUhASAAQcgAaiICIAUpAwAiCSACKQMAIgqFQgAgAa1C/wGDfSILgyIMIAqFNwMAIABBwABqIgEgBCkDACIKIAEpAwAiDYUgC4MiDiANhTcDACAAQThqIgEgAykDACINIAEpAwAiD4UgC4MiECAPhTcDACAGIAApAwgiDyAGKQMAIhGFIAuDIhIgEYU3AwAgACAAKQMAIhEgACkDKCIThSALgyIUIBOFNwMoIAUgDCAJhTcDACAEIA4gCoU3AwAgAyAQIA2FNwMAIAAgEiAPhTcDCCAAIBQgEYU3AwAgAEHwAGoiAULw////////PyABKQMAIgl9IgxC/////////wODQvD///////8/IABB6ABqIgEpAwAiCn0iDUIziHwgCYUgC4MgCYU3AwAgASAKIAogDUL/////////A4NC8P///////z8gAEHgAGoiAikDACIJfSINQjOIfIUgC4OFNwMAIAIgCSAJIA1C/////////wODQvD///////8/IABB2ABqIgEpAwAiCn0iDUIziHyFIAuDhTcDACABIAogCiANQv////////8Dg0LQ/f//////PyAAKQNQIgl9Ig1CM4h8hSALg4U3AwAgACAJIAkgDEIziEITfiANQv////////8Dg3yFIAuDhTcDUAu9BwIJfwl+IwBB8AJrIgIkACACQQhqIAEQtwEgAkEwaiACQQhqQQEQZiACIAIpA1BC8P///////z98IgtC/////////wODIAIpA0hC8P///////z98IgxCM4h8NwN4IAIgDEL/////////A4MgAikDQELw////////P3wiDEIziHw3A3AgAiAMQv////////8DgyACKQM4QvD///////8/fCIMQjOIfDcDaCACIAxC/////////wODIAIpAzBCz/3//////z98IgxCM4h8NwNgIAIgC0IziEITfiAMQv////////8Dg3w3A1ggAkGAAWogAkEwakGI6sAAEFBCASELIAIgAikDgAFCAXw3A4ABIAJB0AFqIAJB2ABqIAJBgAFqEE4gAi0A0AEhAyACQagBakEgaiIEIAJB+AFqKQMANwMAIAJBqAFqQRhqIgUgAkHQAWpBIGoiBikDADcDACACQagBakEQaiIHIAJB0AFqQRhqIggpAwA3AwAgAkGoAWpBCGoiCSACQdABakEQaiIKKQMANwMAIAIgAikD2AE3A6gBAkACQCADQQFHDQAgAS0AH0EHdhCHBSEBIARC8P///////z8gBCkDACINfSIOQv////////8Dg0Lw////////PyAFKQMAIg99IhBCM4h8IA2FQgAgAa1C/wGDfSIMgyANhSIRNwMAIAUgDyAPIBBC/////////wODQvD///////8/IAcpAwAiDX0iEEIziHyFIAyDhSISNwMAIAcgDSANIBBC/////////wODQvD///////8/IAkpAwAiD30iEEIziHyFIAyDhSITNwMAIAkgDyAPIBBC/////////wODQtD9//////8/IAIpA6gBIg19IhBCM4h8hSAMg4UiDzcDACACIA0gDSAOQjOIQhN+IBBC/////////wODfIUgDIOFIgw3A6gBIAYgETcDACAIIBI3AwAgCiATNwMAIAJB0AFqQQhqIA83AwAgAkGAAmogAkEIakEIaikDADcDACACQYgCaiACQQhqQRBqKQMANwMAIAJBkAJqIAJBCGpBGGopAwA3AwAgAkGYAmogAkEIakEgaikDADcDACACQcACakIANwMAIAJBuAJqQgA3AwAgAkGwAmpCADcDACACQagCakIANwMAIAIgDDcD0AEgAiACKQMINwP4ASACQgE3A6ACIAJByAJqIAJBqAFqIAJBCGoQUCAAQQhqIAJB0AFqQaABEP8F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AToADCACQTxqQQI2AgAgAkEcakH4ADYCACACQgI3AiwgAkGUusEANgIoIAJB9wA2AhQgAkEeNgIkIAJBz7jBADYCICACIAJBEGo2AjggAiACQQxqNgIYIAIgAkEgajYCECABIAJBKGoQyQMhAAwGCyACQTxqQQE2AgAgAkIBNwIsIAJBiLnBADYCKCACQfcANgIkIAJBETYCFCACQb64wQA2AhAgAiACQSBqNgI4IAIgAkEQajYCICABIAJBKGoQyQMhAAwFCyACIABBBGooAgA2AgwgAkE8akECNgIAIAJBHGpB2wA2AgAgAkICNwIsIAJB6LnBADYCKCACQfcANgIUIAJBGTYCJCACQaW4wQA2AiAgAiACQRBqNgI4IAIgAkEMajYCGCACIAJBIGo2AhAgASACQShqEMkDIQAMBAsgAkE8akEANgIAIAJBtLfBADYCOCACQgE3AiwgAkHYucEANgIoIAEgAkEoahDJAyEADAMLIAJBPGpBATYCACACQgE3AiwgAkGIucEANgIoIAJB9wA2AiQgAkEfNgIUIAJBhrjBADYCECACIAJBIGo2AjggAiACQRBqNgIgIAEgAkEoahDJAyEADAILIAJBPGpBATYCACACQgE3AiwgAkGIucEANgIoIAJB9wA2AiQgAkHSADYCFCACQbS3wQA2AhAgAiACQSBqNgI4IAIgAkEQajYCICABIAJBKGoQyQMhAAwBCyAAQQRqKAIAIABBDGooAgAgARD6BSEACyACQcAAaiQAIAAL/wUCBn8CfgJAIAJFDQBBACACQXlqIgMgAyACSxshBCABQQNqQXxxIAFrIQVBACEDAkACQAJAAkADQAJAAkACQCABIANqLQAAIgZBGHRBGHUiB0EASA0AIAVBf0YNASAFIANrQQNxDQECQCADIARPDQADQCABIANqIgYoAgAgBkEEaigCAHJBgIGChHhxDQEgA0EIaiIDIARJDQALCyADIAJPDQIDQCABIANqLAAAQQBIDQMgAiADQQFqIgNHDQAMCQsLQoCAgICAICEJQoCAgIAQIQoCQAJAAkACQAJAAkACQAJAAkAgBkHslcIAai0AAEF+ag4DAAECDwsgA0EBaiIGIAJJDQZCACEJDA0LQgAhCSADQQFqIgggAk8NDCABIAhqLAAAIQggBkGgfmoODgEDAwMDAwMDAwMDAwMC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AkACQCACDQAgAEEENgIMIABBEGogAjYCAEEAIQMMAQsgAkEcbCIMQQQQmAUiA0UNAiAAIAM2AgwgAEEQaiACNgIAIAJBOGwhDCACQX9qQf////8BcSECA0AgBUHAAGogASAGIAcQxQEgA0EYaiAFQcAAakEYaigCADYCACADQRBqIAVBwABqQRBqKQMANwIAIANBCGogBUHAAGpBCGopAwA3AgAgAyAFKQNANwIAIANBHGohAyABQThqIQEgDEFIaiIMDQALIAJBAWohAwsgACAHNgIIIAAgCDYCBCAAIAY2AgAgACALOgAYIABBFGogAzYCACAAIAQpAAA3ABsgAEEaaiAJOgAAIABBGWogCjoAACAAQSNqIARBCGopAAA3AAAgAEEraiAEQRBqKQAANwAAIABBM2ogBEEYaikAADcAACAFQfAAaiQADwtB0J7AAEEkQfSewAAQywUACyAMQQQQ7wUAC5cFAQp/IwBBMGsiAyQAIANBJGogATYCACADQQM6ACggA0KAgICAgAQ3AwggAyAANgIgQQAhBCADQQA2AhggA0EANgIQAkACQAJAAkAgAigCCCIFDQAgAkEUaigCACIGRQ0BIAIoAgAhASACKAIQIQAgBkF/akH/////AXFBAWoiBCEGA0ACQCABQQRqKAIAIgdFDQAgAygCICABKAIAIAcgAygCJCgCDBEKAA0ECyAAKAIAIANBCGogAEEEaigCABEHAA0DIABBCGohACABQQhqIQEgBkF/aiIGDQAMAgsLIAJBDGooAgAiAEUNACAAQQV0IQggAEF/akH///8/cUEBaiEEIAIoAgAhAUEAIQYDQAJAIAFBBGooAgAiAEUNACADKAIgIAEoAgAgACADKAIkKAIMEQoADQMLIAMgBSAGaiIAQRxqLQAAOgAoIAMgAEEEaikCAEIgiTcDCCAAQRhqKAIAIQkgAigCECEKQQAhC0EAIQcCQAJAAkAgAEEUaigCAA4DAQACAQsgCUEDdCEMQQAhByAKIAxqIgwoAgRBtgFHDQEgDCgCACgCACEJC0EBIQcLIAMgCTYCFCADIAc2AhAgAEEQaigCACEHAkACQAJAIABBDGooAgAOAwEAAgELIAdBA3QhCSAKIAlqIgkoAgRBtgFHDQEgCSgCACgCACEHC0EBIQsLIAMgBzYCHCADIAs2AhggCiAAKAIA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IAYNACADQoHKADcDECADQRBqELgEIQEMBQsgASAFQX5qIgY2AgQgASAHQQJqNgIAIAMgBy0AASAIQQEQvAIgAy8BAA0DIAMvAQQhCCADLwECRQ0AAkAgAkECRw0AQQMhBQwDCwJAIAYNACADQoHKADcDECADQRBqELgEIQEMBQsgASAFQX1qNgIEIAEgB0EDajYCACADIActAAIgCEECELwCIAMvAQANAyADLwECDQEgAy8BBCEICyAAIAg7AQJBACEEDAULIANBGGpBHTYCACADQbi4xgA2AhQgA0EROgAQIABBBGogA0EQakGAucYAQYi5xgAQtgI2AgAMAwsgAEEEaiAFQfi5xgBBiLnGABCwAjYCAAwDCyADQQhqKAIAIQECQAJAAkACQAJAAkAgAygCBA4FBAABAgMECyABQfi5xgBBiLnGABCwAiEBDAQLIANBAToAECADIAGtNwMYIANBEGpB5LnGAEGIucYAELYCIQEMAwsgA0EQakEIakEONgIAIANBmLnGADYCFCADQRE6ABAgA0EQakG8ucYAQYi5xgAQtgIhAQwCCyADQRBqQQhqQR02AgAgA0G4uMYANgIUIANBEToAECADQRBqQYC5xgBBiLnGABC2AiEBDAELIAFBlLrGAEGIucYAELACIQELIABBBGogATYCAAwBCyAAQQRqIAE2AgALQQEhBAsgACAEOwEAIANBIGokAAv1BAELfyMAQZABayIDJAACQAJAAkACQCACRQ0AIANB4ABqIAFBAxCcAQJAIAMvAWBFDQAgAygCZCECIABBATYCACAAIAI2AgQMBAsCQAJAAkAgAy8BYiIEDQAgA0EANgIQIAMgBDYCDCADQQE2AggMAQsgBEEFdCIFQQEQmAUiBkUNAyADQQA2AhAgAyAENgIMIAMgBjYCCCADQeAAakEIaiEGIAJBf2oiByEFA0AgBUUNAiADQeAAaiABQSAQPQJAIAMtAGBFDQAgAygCZCECDAYLIANBGGpBCGoiCCAGQQhqKQIANwMAIANBGGpBEGoiCSAGQRBqKQIANwMAIANBGGpBGGoiCiAGQRhqLQAAOgAAIAMgAygCZCICNgA5IAMgAy0AYzoAOCADIAYpAgA3AxggAkGAgIB4cSADKAI4IgtBCHZyIQwgAy8AYSENAkAgAygCECICIAMoAgxHDQAgA0EIaiACENQCIAMoAhAhAgsgAygCCCACQQV0aiICIAw2AAMgAiALOgACIAIgDTsAACACIAMpAxg3AAcgAkEPaiAIKQMANwAAIAJBF2ogCSkDADcAACACQR9qIAotAAA6AAAgAyADKAIQQQFqNgIQIAVBf2ohBSAEQX9qIgQNAAsLIAAgAykDCDcCBCAAQQA2AgAgAEEMaiADQRBqKAIANgIADAQLIAcgA0GIAWpBoLzGABCwAiECDAILQQAgA0GIAWpBoLzGABCwAiECIABBATYCACAAIAI2AgQMAgsgBUEBEO8FAAsgAEEBNgIAIAAgAjYCBCADKAIMIgJFDQAgAygCCCACQQV0QQEQuAULIANBkAFqJAALpAUBBn8jAEEgayIAJAACQAJAAkACQAJAAkACQAJAQQAoArjDRg0AQQBBfzYCuMNGAkBBACgCvMNGIgENAEEAQQAgARCxAiIBNgK8w0YLIAEgASgCACICQQFqNgIAIAJBf0wNAUEAQQAoArjDRkEBajYCuMNGIAFFDQIgAUEAIAEoAhgiAiACQQJGIgIbNgIYAkAgAg0AIAFBGGoiAi0ABCEDIAJBAToABCAAIANBAXEiAzoABCADDQQgAkEEaiEEQQAhBQJAQQAoAvC/RkH/////B3FFDQAQ2QRBAXMhBQsgBC0AAQ0FIAIgAigCACIDQQEgAxs2AgAgA0UNCCADQQJHDQYgAigCACEDIAJBADYCACAAIAM2AgQgA0ECRw0HAkAgBQ0AQQAoAvC/RkH/////B3FFDQAQ2QQNACAEQQE6AAELIARBADoAAAsgASABKAIAIgJBf2o2AgACQCACQQFHDQAgARDlAwsgAEEgaiQADwtByNjBAEEQIABBCGpBhNnBAEHI5MEAELIDAAsAC0H72cEAQd4AQfjawQAQywUACyAAQRxqQQA2AgAgAEEYakHI2MEANgIAIABCATcCDCAAQfDswQA2AgggAEEEaiAAQQhqEM0DAAsgACAFOgAMIAAgBDYCCEGU2cEAQSsgAEEIakHA2cEAQfTtwQAQsgMACyAAQRxqQQA2AgAgAEHI2MEANgIYIABCATcCDCAAQZzuwQA2AgggAEEIakGk7sEAEJMEAAsgAEEcakEANgIAIABBGGpByNjBADYCACAAQgE3AgwgAEHU7sEANgIIIABBBGogAEEIakHc7sEAEM4DAAsgAEEcakEANgIAIABByNjBADYCGCAAQgE3AgwgAEGA7MEANgIIIABBCGpBwOzBABCTBAAL7wQBBX8jAEGAAWsiByQAQQEhCAJAAkACQAJAQcQAQQEQmAUiCUUNACAJQQE7AEIgCSABKQAANwAAIAkgAikAADcAIiAJQRhqIAFBGGopAAA3AAAgCUEQaiABQRBqKQAANwAAIAlBCGogAUEIaikAADcAACAJQSpqIAJBCGoiASkAADcAACAJQTJqIAJBEGoiCikAADcAACAJQTpqIAJBGGoiCykAADcAACAJQYACOwAgAkAgBEUNACAEQQBIDQIgBEEBEJgFIghFDQMLIAdB0ABqIAQ2AgAgByAINgJMIAggAyAEEP8FGiAHQdQAaiAENgIAIAdB2ABqIAU3AwAgB0EpaiAGKQAANwAAIAdBMWogBkEIaikAADcAACAHQTlqIAZBEGopAAA3AAAgB0HBAGogBkEYaikAADcAACAHQQhqQQlqIAEpAAA3AAAgB0EZaiAKKQAANwAAIAdBIWogCykAADcAACAHIAIpAAA3AAkgB0EJOgAIENwGIAdB6ABqIAdBCGoQtwIgBygCaA0DIAdBCGpBxABqIQQgACAHKQJsNwIMIABBFGogB0H0AGooAgA2AgAgAEEwakIANwIAIABBKGpCADcCACAAQSBqQgA3AgAgAEIANwIYIABCgoCAgCA3AgQgACAJNgIAAkACQAJAIActAAhBfWoOCQECAgICAgEBAAILIAdBLGohBAsgBEEEaigCACIJRQ0AIAQoAgAgCUEBELgFCyAHQYABaiQADwtBxABBARDvBQALEJIEAAsgBEEBEO8FAAsgByAHKAJsNgJ8QciqwABBKyAHQfwAakH0qsAAQeyswAAQsgMAC5EFAQF/IwBBgAFrIgIkAAJAAkACQAJAAkACQAJAIAAoAgAOBgABAgMEBQALIAJB5ABqQQA2AgAgAkHYssIANgJgIAJCATcCVCACQdi1wgA2AlAgASACQdAAahDJAyEADAULIAJB5ABqQQA2AgAgAkHYssIANgJgIAJCATcCVCACQbC1wgA2AlAgASACQdAAahDJAyEADAQLIAIgACkCBDcDKCACIABBDGooAgA2AhggAkHkAGpBAjYCACACQThqQQxqQdsANgIAIAJCAzcCVCACQfS0wgA2AlAgAkHKATYCPCACIAJBOGo2AmAgAiACQRhqNgJAIAIgAkEoajYCOCABIAJB0ABqEMkDIQAMAwsgAkHkAGpBADYCACACQdiywgA2AmAgAkIBNwJUIAJB0LTCADYCUCABIAJB0ABqEMkDIQAMAgsgAiAAKQIENwMIIAIgAEEMaigCADYCFCACIABBEGopAgA3AxggAiAAQRhqKAIANgIkIAIgAEEcaikCADcDKCACIABBJGooAgA2AjQgAkE4akEUakEGNgIAIAJB/ABqQdsANgIAIAJB0ABqQSRqQcoBNgIAIAJB0ABqQRxqQdsANgIAIAJB0ABqQRRqQcoBNgIAIAJB0ABqQQxqQdsANgIAIAJCBzcCPCACQfCzwgA2AjggAkHKATYCVCACIAJB0ABqNgJIIAIgAkE0ajYCeCACIAJBKGo2AnAgAiACQSRqNgJoIAIgAkEYajYCYCACIAJBFGo2AlggAiACQQhqNgJQIAEgAkE4ahDJAyEADAELIAJB5ABqQQA2AgAgAkHYssIANgJgIAJCATcCVCACQZizwgA2AlAgASACQdAAahDJAyEACyACQYABaiQAIAALvwQBDX8jAEHgAGsiAiQAAkACQCABQQhqKAIAIgMgAUEUaigCACIEaiIFIANJDQAgBUH/AUsNACAEQYACTw0AIAFBLGooAgAiBkH/AUsNACABQSBqKAIAIQcgAUEQaigCACEIIAFBHGooAgAhCSABQShqKAIAIQogASgCBCELIAEoAgAhDCABKAIMIQ0gASgCGCEOIAJB2ABqIAEoAiQiASAGQQV0ajYCACACQdQAaiABNgIAIAJB0ABqIAo2AgAgAkEYakEsaiAONgIAIAJBGGpBKGogCTYCACACQTxqIA42AgAgAkEYakEgaiANIARBBXRqNgIAIAJBGGpBHGogDTYCACACQTBqIAg2AgAgAkEsaiANNgIAIAJByABqIA4gB0EFdGo2AgAgAiABNgJMIAJBAToAKCACIAwgA0EFdGo2AiQgAiAMNgIgIAIgCzYCHCACIAw2AhggAkEIaiACQRhqEMwBIAJBIWogAkEIakEIaigCADYAACAAIAY6AAIgACAEOgABIAAgBToAACACIAIpAwg3ABkgACACKQAYNwADIABBCGogAkEYakEFaikAADcAAAwBCyAAQQA2AgQCQCABQQRqKAIAIgBFDQAgASgCACAAQQV0QQEQuAULAkAgAUEQaigCACIARQ0AIAEoAgwgAEEFdEEBELgFCwJAIAFBHGooAgAiAEUNACABKAIYIABBBXRBARC4BQsgAUEoaigCACIARQ0AIAEoAiQgAEEFdEEBELgFCyACQeAAaiQAC8gEAQZ+IAAgASkDICICQjOIQhN+IAEpAwAiA0L/////////A4N8IgRCE3xCM4ggASkDCCIFQv////////8DgyADQjOIfCIDfEIziCABKQMQIgZC/////////wODIAVCM4h8IgV8QjOIIAEpAxgiB0L/////////A4MgBkIziHwiBnxCM4ggAkL/////////A4MgB0IziHwiB3xCM4hCE34gBHwiAjwAACAAIAJCKIg8AAUgACACQiCIPAAEIAAgAkIYiDwAAyAAIAJCEIg8AAIgACACQgiIPAABIAAgAkIziCADfCIEQiWIPAALIAAgBEIdiDwACiAAIARCFYg8AAkgACAEQg2IPAAIIAAgBEIFiDwAByAAIARCM4ggBXwiA0IqiDwAEiAAIANCIog8ABEgACADQhqIPAAQIAAgA0ISiDwADyAAIANCCog8AA4gACADQgKIPAANIAAgBEL/////////A4MiBEIDhiACQjCIQgeDhDwABiAAIANCM4ggBnwiAkIniDwAGCAAIAJCH4g8ABcgACACQheIPAAWIAAgAkIPiDwAFSAAIAJCB4g8ABQgACADQv////////8DgyIFQgaGIARCLYiEPAAMIAAgAkIziCAHfCIDQiSIPAAeIAAgA0IciDwAHSAAIANCFIg8ABwgACADQgyIPAAbIAAgA0IEiDwAGiAAIAJC/////////wODIgJCAYYgBUIyiIQ8ABMgACADQv////////8DgyIDQiyIPAAfIAAgA0IEhiACQi+IhDwAGQvaBQMDfwF+A3wjAEEQayEBIAC9IgRCP4inIQICQAJAAkACQAJAAkACQAJAIARCIIinQf////8HcSIDQarGmIQESw0AIANBwtzY/gNLDQEgA0GAgMDxA00NA0QAAAAAAAAAACEFQQAhAyAAIQYMBgsCQCAAIABhDQAgAA8LIABE7zn6/kIuhkBkDQEgAETSvHrdKyOGwGNFDQMgAUQAAAAAAACgtiAAo7Y4AgQgASoCBBpEAAAAAAAAAAAhByAARFEwLdUQSYfAYw0G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IAUgBGoiCSAHLQAAOgAAIAMgBEEBajYCACAHQQFqIgcgAkYNAiAJQQFqIActAAA6AAAgAyAEQQJqNgIAIAdBAWoiByACRg0DIAlBAmogBy0AADoAACADIARBA2o2AgAgB0EBaiIHIAJGDQEgCUEDaiAHLQAAOgAAIAMgBEEEaiIENgIAIAdBAWohByAJQQRqIAZHDQALIAhBBGohCQwECyAEQQNqIQQMAgsgBEEBaiEEDAELIARBAmohBAsgAiEJCwJAAkACQCAEQcAARw0AIAkgAkYNAQtBACEEDAELIANBiAFqIANBxAAQ/wUaIANBgAFqIANBxAFqKQIAIgo3AwAgA0H4AGogA0G8AWopAgAiCzcDACADQfAAaiADQbQBaikCACIMNwMAIANB6ABqIANBrAFqKQIAIg03AwAgA0HgAGogA0GkAWopAgAiDjcDACADQdgAaiADQZwBaikCACIPNwMAIANB0ABqIANBlAFqKQIAIhA3AwAgAyADKQKMASIRNwNIIABBOWogCjcAACAAQTFqIAs3AAAgAEEpaiAMNwAAIABBIWogDTcAACAAQRlqIA43AAAgAEERaiAPNwAAIABBCWogEDcAACAAIBE3AAFBASEECyAAIAQ6AAAgA0HQAWokAAumBQIEfwV+IAAgASkDKDcDKCAAQTBqIAFBMGopAwA3AwAgAEE4aiABQThqKQMANwMAIABBwABqIAFBwABqKQMANwMAIABByABqIAFByABqKQMANwMAIABBCGpC8P///////z8gAUEIaikDAH0iBkL/////////A4NC0P3//////z8gASkDAH0iB0IziHw3AwAgAEEQakLw////////PyABQRBqKQMAfSIIQv////////8DgyAGQjOIfDcDACAAQRhqQvD///////8/IAFBGGopAwB9IgZC/////////wODIAhCM4h8NwMAIABBIGpC8P///////z8gAUEgaikDAH0iCEL/////////A4MgBkIziHw3AwAgACAIQjOIQhN+IAdC/////////wODfDcDACAAQfAAaiABQfAAaikDADcDACAAQegAaiABQegAaikDADcDACAAQeAAaiABQeAAaikDADcDACAAQdgAaiABQdgAaikDADcDACAAIAEpA1A3A1AgAEGYAWoiAiABQZgBaikDADcDACAAQZABaiIDIAFBkAFqKQMANwMAIABBiAFqIgQgAUGIAWopAwA3AwAgAEGAAWoiBSABQYABaikDADcDACAAIAEpA3g3A3ggBSkDACEGIAQpAwAhByAAKQN4IQggAkLw////////PyACKQMAfSIJQv////////8Dg0Lw////////PyADKQMAfSIKQjOIfDcDACADIApC/////////wODQvD///////8/IAd9IgdCM4h8NwMAIAQgB0L/////////A4NC8P///////z8gBn0iBkIziHw3AwAgBSAGQv////////8Dg0LQ/f//////PyAIfSIGQjOIfDcDACAAIAlCM4hCE34gBkL/////////A4N8NwN4C7AEAQN/IwBB8ABrIgUkAAJAAkACQAJAIAFFDQAgASgCACIGQX9GDQEgASAGQQFqNgIAIARFDQAgBCgCACIGQX9GDQEgBCAGQQFqNgIAIANBIEsNAgJAIARBD2pBtNHAAEEVEIEGRQ0AIAVBNGpBIDYCACAFQSxqIAM2AgAgBSAEQQRqNgIwIAUgAjYCKCAFQSA2AiQgBSABQQRqNgIgIAVByABqQQFyIAVBIGpBAxDhASAFQQA6AEgMBAsgBUGBBDsBSAwDCxDjBQALEOQFAAsgBUEBOwFICyAFQSBqIAVByABqEOYBIAVBHmogBS0AIzoAACAFQQhqIAVBIGpBEGopAwA3AwAgBUEQaiAFQSBqQRhqKQMANwMAIAVBGGogBUHAAGooAgA2AgAgBSAFLwAhOwEcIAUgBUEgakEIaikDADcDACAFLQAgIQcgBSgCJCEGIAQgBCgCAEF/ajYCAAJAIANFDQAgAiADQQEQuAULIAEgASgCAEF/ajYCAAJAAkACQCAHQf8BcUUNAEEBIQEMAQtBJEEEEJgFIgRFDQFBACEBIARBADYCACAEIAUvARw7AAQgBCAGNgAHIAQgBSkDADcACyAEQQZqIAVBHmotAAA6AAAgBEETaiAFQQhqKQMANwAAIARBG2ogBUEQaikDADcAACAEQSNqIAVBGGotAAA6AABBACEGCyAAIAE2AgggACAGNgIEIAAgBDYCACAFQfAAaiQADwtBJEEEEO8FAAvQBAECfyMAQYABayIHJAACQAJAAkACQEHmAEEBEJgFIghFDQAgCCABKQAANwAAIAggAikAADcAIiAIIAUpAAA3AEQgCEEYaiABQRhqKQAANwAAIAhBEGogAUEQaikAADcAACAIQQhqIAFBCGopAAA3AAAgCEEqaiACQQhqKQAANwAAIAhBMmogAkEQaikAADcAACAIQTpqIAJBGGopAAA3AAAgCEHMAGogBUEIaikAADcAACAIQdQAaiAFQRBqKQAANwAAIAhB3ABqIAVBGGopAAA3AAAgCEGAAjsAICAIQYACOwBkIAhBATsAQiAHQQhqQTBqIAY3AwAgB0EhaiAEQRhqKQAANwAAIAdBGWogBEEQaikAADcAACAHQRFqIARBCGopAAA3AAAgB0EsaiIBIAMpAgA3AgAgB0E0aiADQQhqKAIANgIAIAdBCzoACCAHIAQpAAA3AAkQ3AYgB0HoAGogB0EIahC3AiAHKAJoDQEgACAHKQJsNwIMIABBFGogB0H0AGooAgA2AgAgAEEwakIANwIAIABBKGpCADcCACAAQSBqQgA3AgAgAEIANwIYIABCg4CAgDA3AgQgACAINgIAAkACQAJAIActAAhBfWoOCQAGBgYGBgECBQYLIAdBzABqIQEMBAsgB0HMAGohAQwDCyAHQcwAaiEBDAILQeYAQQEQ7wUACyAHIAcoAmw2AnxByKrAAEErIAdB/ABqQfSqwABB7KzAABCyAwALIAFBBGooAgAiCEUNACABKAIAIAhBARC4BQsgB0GAAWokAAubBAEHfyMAQYABayICJAACQAJAIABFDQAgACgCAA0BIABBfzYCACABRQ0AIAEoAgANASABQQA2AgAgAkHAAGpBOGogAUE4aigCADYCACACQcAAakEwaiABQTBqKQIANwMAIAJBwABqQShqIAFBKGopAgA3AwAgAkHAAGpBIGogAUEgaikCADcDACACQcAAakEYaiABQRhqKQIANwMAIAJBwABqQRBqIAFBEGopAgA3AwAgAkHAAGpBCGogAUEIaikCADcDACACIAEpAgA3A0AgAkEIakEwaiIDIAJB9ABqKQIANwMAIAJBCGpBKGoiBCACQewAaikCADcDACACQQhqQSBqIgUgAkHkAGopAgA3AwAgAkEIakEYaiIGIAJB3ABqKQIANwMAIAJBCGpBEGoiByACQdQAaikCADcDACACQQhqQQhqIgggAkHAAGpBDGopAgA3AwAgAiACKQJENwMIIAFBPEEEELgFAkAgAEEMaigCACIBIABB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QQEQuAULIAZBgAFqJAAL3QMDBH8HfgR8IwBB0ABrIgIkAAJAAkACQCABKAIAIgNBEHZB/wFxIgQNAEIAIAEpAggiBn0gBiADQQBIIgUbQgAgATUCBCIHIAZCAFKtfH0gByAFGxDOASENDAELIAE1AgQhCCABKQIIIQkCQAJAIARBAUcNAEIAIQZCCiEHDAELQgohBiAEIQFCACEHQgEhCkIAIQsDQCACQTBqIAZCASABQQFxIgUbIAdCACAFGyAKIAsQqQMgAkHAAGogBiAHIAYgBxCpAyABQQNLIQUgAkHAAGpBCGopAwAhByACQTBqQQhqKQMAIQsgAikDQCEGIAIpAzAhCiABQQF2IQEgBQ0ACyACQSBqIAogCyAGIAcQqQMgAikDICIHIAJBKGopAwAiBoRQDQILIAJBEGogCSAIIAcgBhCOBCACIAIpAxAiCiACQRBqQQhqKQMAIgsgByAGEKkDIAkgAikDACIMfSAIIAJBCGopAwB9IAkgDFStfRDoASENIAcgBhDoASEOIAogCxDoASEPRAAAAAAAACRAIAQQwQMiECAPIA0gDqOgIg2aIA0gA0EASBuiEPwEIBCjIQ0LIAAgDTkDCCAAQgE3AwAgAkHQAGokAA8LQfC/wQBBGUHUv8EAEIQEAAvQAwEafiABMQASIQIgATEAESEDIAExABAhBCABMQAPIQUgATEADSEGIAExAA4hByABMQAfIQggATEAHiEJIAExAB0hCiABMQAcIQsgATEAGyEMIAExABohDSABMQAMIQ4gATEACyEPIAExAAohECABMQAJIREgATEAByESIAExAAghEyABMQAZIRQgATEAGCEVIAExABchFiABMQAWIRcgATEAEyEYIAExABQhGSABMQAVIRogACABNQAAIAExAARCIIaEIAExAAVCKIaEIAExAAYiG0IwhoRC/////////wODNwMAIAAgGCAZQgiGhCAaQhCGhCAXQhiGhCAWQiCGhCAVQiiGhCAUQjCGhEIBiEL/////////A4M3AxggACAbIBJCCIaEIBNCEIaEIBFCGIaEIBBCIIaEIA9CKIaEIA5CMIaEQgOIQv////////8DgzcDCCAAIBUgFEIIhoQgDUIQhoQgDEIYhoQgC0IghoQgCkIohoQgCUIwhoQgCEI4hoRCDIhC/////////wODNwMgIAAg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gyADhTcDACAAQegAaiICIAIpAwAiAyABQegAaikDAIUgBIMgA4U3AwAgAEHwAGoiACAAKQMAIgMgAUHwAGopAwCFIASDIAOFNwMAC78DAQh/IwBBgANrIgEkACABQSBqQgA3AwAgAUEYakIANwMAIAFBEGpCADcDACABQQhqQgA3AwAgAUEwakIANwMAIAFBOGpCADcDACABQcAAakIANwMAIAFByABqQgA3AwAgAUIANwMAIAFCATcDKCABQgE3A1BBACECIAFB2ABqQQBByAAQggYaIAFBoAFqIAAgAUHQAGoiAxBQIAFByAFqIAEgAEHQAGoiBBBQIAFB8AFqIAFBoAFqEKIBIAFBKGohBSABQZgCaiABQcgBahCiAUEBIQYDQCABQZgCaiACai0AACABQfABaiACai0AAHMiB0F/aiAHQX9zcUGAAXFBB3YQhwUgBnEhBiACQQFqIgJBIEcNAAsgBhCHBSEIIAFB8AFqIABBKGogAxBQIAFBmAJqIAUgBBBQIAFBwAJqIAFB8AFqEKIBIAFB4AJqIAFBmAJqEKIBQQAhAkEBIQYDQCABQeACaiACai0AACABQcACaiACai0AAHMiB0F/aiAHQX9zcUGAAXFBB3YQhwUgBnEhBiACQQFqIgJBIEcNAAsgBhCHBSAIcRCHBSECIAFBgANqJAAgAkH/AXFBAUYLgwQBAX8jAEEwayICJAACQAJAAkACQAJAAkACQAJAAkAgAC0AAA4IAAECAwQFBgcACyACQRxqQQA2AgAgAkGAlsAANgIYIAJCATcCDCACQciXwAA2AgggASACQQhqEMkDIQAMBwsgAkEcakEANgIAIAJBgJbAADYCGCACQgE3AgwgAkGol8AANgIIIAEgAkEIahDJAyEADAYLIAJBHGpBADYCACACQYCWwAA2AhggAkIBNwIMIAJBkJfAADYCCCABIAJBCGoQyQMhAAwFCyACQRxqQQA2AgAgAkGAlsAANgIYIAJCATcCDCACQfCWwAA2AgggASACQQhqEMkDIQAMBAsgAkEcakEBNgIAIAJCATcCDCACQcyWwAA2AgggAkEQNgIkIAIgAEEEajYCLCACIAJBIGo2AhggAiACQSxqNgIgIAEgAkEIahDJAyEADAMLIAJBHGpBATYCACACQgE3AgwgAkGclsAANgIIIAJBETYCJCACIABBAWo2AiwgAiACQSBqNgIYIAIgAkEsajYCICABIAJBCGoQyQMhAAwCCyACQRxqQQE2AgAgAkIBNwIMIAJBiJbAADYCCCACQRI2AiQgAiAAQQFqNgIsIAIgAkEgajYCGCACIAJBLGo2AiAgASACQQhqEMkDIQAMAQsgAEEEaiABENUFIQALIAJBMGokACAAC9wDAQd/IwBBwABrIgQkACAEQRBqQQApAuCDQDcDACAEQQApAtiDQDcDCAJAAkACQAJAAkAgAUH4CGooAgBFDQAgAUHwAWooAgAiBUEFTw0BAkAgBUEhbCIFRQ0AIAFB6ABqIgYgBWohByADQSRsIQgDQCAGIglBIWohBiAIIQEgAiEFA0AgAUUNBSABQVxqIQEgCSAFQSAQgQYhAyAFQSRqIgohBSADDQALQQAgCkF8aigCACIBKAIUayIFQX9MDQUgBEEYaiABKQPQASAFELEDAkACQCAJLQAgDQAgBEEoakEIaiAEQRhqQQhqKQMANwMAIAQgBCkDGDcDKCAEQQhqIARBKGoQnwMMAQsgBEEoakEIaiAEQRhqQQhqKQMANwMAIAQgBCkDGDcDKCAEQQhqIARBKGoQgAMLIAYgB0cNAAsLIAAgBCkDCDcCBCAAQQA2AgAgAEEMaiAEQRBqKQMANwIADAQLIARBPGpBADYCACAEQfiJwAA2AjggBEIBNwIsIARBjIrAADYCKCAEQShqQfSDwAAQkwQACyAFQQRBoIrAABD1BQALIABBATYCACAAQgA3AgQMAQtBq4LAAEErIARBKGpB2ILAAEGEhMAAELIDAAsgBEHAAGokAAvRAwEJfyMAQTBrIgIkACACQgM3AxggAiACQShqNgIgAkACQAJAAkACQCABKAIAIgMgASgCCCIEIAJBGGoQqwMiBQ0AIAIgAikDGEIgfDcDGCABKAIMIAFBFGooAgAgAkEYahD0ASIFDQACQAJAIAIoAhgiBQ0AQQEhBgwBCyAFQQBIDQQgBUEBEJgFIgZFDQULIAJBADYCECACIAU2AgwgAiAGNgIIIAIgAkEIajYCGCABQRhqIAJBGGoQ2QIiBQ0BIAMgBCACQRhqENEBIgUNASABQRtqIQcgAigCGCIIQQhqIgkoAgAhBUEAIQMgCEEEaiEKA0AgByADai0AACEGAkACQCAKKAIAIAVGDQAgBSEEDAELIAggBUEBEOUCIAkoAgAhBAsgCSAEQQFqIgU2AgAgCCgCACAEaiAGOgAAIANBAWoiA0EgRw0ACyABKAIMIAEoAhQgAkEYahDSASIFDQEgACACKQMINwIEIABBADYCACAAQQxqIAJBEGooAgA2AgAMAgsgAEEBNgIAIAAgBTYCBAwBCyAAQQE2AgAgACAFNgIEIAIoAgwiAUUNACACKAIIIAFBARC4BQsgAkEwaiQADwsQkgQACyAFQQEQ7wUAC+sDAQJ/IwBBgAFrIgQkAAJAAkACQAJAQcQAQQEQmAUiBUUNACAFQQE7AEIgBSABKQAANwAAIAUgAikAADcAIiAFQRhqIAFBGGopAAA3AAAgBUEQaiABQRBqKQAANwAAIAVBCGogAUEIaikAADcAACAFQSpqIAJBCGopAAA3AAAgBUEyaiACQRBqKQAANwAAIAVBOmogAkEYaikAADcAACAFQYACOwAgIARBIWogA0EYaikAADcAACAEQRlqIANBEGopAAA3AAAgBEERaiADQQhqKQAANwAAIARBBzoACCAEIAMpAAA3AAkQ3AYgBEHoAGogBEEIahC3AiAEKAJoDQEgACAEKQJsNwIMIABBFGogBEH0AGooAgA2AgAgAEEwakIANwIAIABBKGpCADcCACAAQSBqQgA3AgAgAEIANwIYIABCgoCAgCA3AgQgACAFNgIAAkACQAJAAkAgBC0ACEF9ag4JAAcHBwcHAQIDBwsgBEHMAGohBQwFCyAEQcwAaiEFDAQLIARBzABqIQUMAwsgBEEsaiEFDAILQcQAQQEQ7wUACyAEIAQoAmw2AnxByKrAAEErIARB/ABqQfSqwABB7KzAABCyAwALIAVBBGooAgAiAEUNACAFKAIAIABBARC4BQsgBEGAAWokAAvoAwEHfyMAQRBrIgIkAEEBIQMCQCABKAIYIgRBJyABQRxqKAIAKAIQIgURBwANACACIAAoAgBBgQIQ4wEgAkEMai0AACEGIAJBCGooAgAhByACKAIAIQECQAJAAkAgAigCBCIIQYCAxABGDQADQCABIQBB3AAhA0EBIQECQAJAAkACQCAADgQHAQMABwsgBkH/AXEhAEEAIQZBAyEBQf0AIQMCQAJAAkAgAA4GCQUEAAECCQtBAiEGQfsAIQMMBAtBAyEBQfUAIQNBAyEGDAMLQQQhBkHcACEDDAILQQAhASAIIQMMAQtBAkEBIAcbIQZBMEHXACAIIAdBAnR2QQ9xIgNBCkkbIANqIQMgB0F/akEAIAcbIQcLIAQgAyAFEQcARQ0ADAILCwNAIAEhAEHcACEDQQEhAQJAAkAgAA4EBAQBAAQLIAZB/wFxIQBBACEGQQMhAUH9ACEDAkACQAJAAkAgAA4GBwQDAgEABwtBBCEGQdwAIQMMAwtBAyEBQfUAIQNBAyEGDAILQQIhBkH7ACEDDAELQQJBASAHGyEGQYCAxAAgB0ECdHZBAXFBMHIhAyAHQX9qQQAgBxshBwsgBCADIAURBwBFDQALC0EBIQMMAQsgBEEnIAURBwAhAwsgAkEQaiQAIAMLxQMBCH8jAEHQAGsiAyQAIANBOGpCADcDACADQTBqQgA3AwAgA0EoakIANwMAIANBIGpCADcDACADQRhqQgA3AwAgA0EQakIANwMAIANBCGpCADcDACADQgA3AwAgAkF/aiEEQQAhBSABKAIEIgYhBwJAAkACQAJAAkADQCACIAVGDQIgBiAFRg0DIAEgB0F/aiIINgIEIAEgASgCACIJQQFqNgIAIAMgBWoiCiAJLQAAOgAAIAQgBUYNASAIRQ0DIAEgB0F+aiIHNgIEIAEgASgCACIJQQFqNgIAIApBAWogCS0AADoAACAFQQJqIgVBwABHDQALIAAgAykDADcAASAAQQA6AAAgAEE5aiADQThqKQMANwAAIABBMWogA0EwaikDADcAACAAQSlqIANBKGopAwA3AAAgAEEhaiADQSBqKQMANwAAIABBGWogA0EYaikDADcAACAAQRFqIANBEGopAwA3AAAgAEEJaiADQQhqKQMANwAADAQLIAVBAWohBQsgBSADQcgAakGMncYAELACIQUMAQsgA0KBygA3A0AgA0HAAGoQuAQhBQsgAEEBOgAAIABBBGogBTYCAAsgA0HQAGokAAvSAwIEfwJ+IABBEGohASAAQQhqKQMAIQUgACkDACEGAkACQCAAKAJQIgJBgAFGDQAgAkGAAUkNASACQYABQdyvwgAQxwMACyABIABB1ABqQQEQMUEAIQIgAEEANgJQCyAAQdQAaiIDIAJqQYABOgAAIAAgACgCUCIEQQFqIgI2AlACQAJAIAJBgQFPDQAgAEHQAGogAmpBBGpBAEH/ACAEaxCCBhoCQCAAKAJQQY9/akEQTw0AIAEgA0EBEDEgACgCUCICQYEBTw0CIABB1ABqQQAgAhCCBhoLIABBzAFqIAZCOIYgBkIohkKAgICAgIDA/wCDhCAGQhiGQoCAgICA4D+DIAZCCIZCgICAgPAfg4SEIAZCCIhCgICA+A+DIAZCGIhCgID8B4OEIAZCKIhCgP4DgyAGQjiIhISENwIAIABBxAFqIAVCOIYgBUIohkKAgICAgIDA/wCDhCAFQhiGQoCAgICA4D+DIAVCCIZCgICAgPAfg4SEIAVCCIhCgICA+A+DIAVCGIhCgID8B4OEIAVCKIhCgP4DgyAFQjiIhISENwIAIAEgA0EBEDEgAEEANgJQDwsgAkGAAUHsr8IAEPQFAAsgAkGAAUH8r8IAEPUFAAvJAwIFfwF+IwBBMGsiBCQAIARBCGpBCGogASgCACIBQQhqIgUoAgAiBjYCACAFQQA2AgAgASkCACEJIAFCATcCACAEIAk3AwgCQAJAIAYgAkkNACAEKAIIIQYMAQsCQAJAIAQoAgwgBmsgAiAGayIFSQ0AIAYhAgwBCyAEQQhqIAYgBRDlAiAEKAIQIQILIAQoAggiBiACaiEHAkACQCAFQQJJDQAgB0EAIAVBf2oiBRCCBhogBiACIAVqIgJqIQcMAQsgBUUNAQsgB0EAOgAAIAJBAWohAgsgBCADQQRqQSAgBiACIAMoAgAQgwEgBCgCBCEDAkACQAJAIAQoAgANACAEKAIMIQUgBEEYaiAGIAIgAyACIANJGyICEIwBIAQoAhgNAgJAIAFBBGoiBygCACIIRQ0AIAEoAgAgCEEBELgFCyABIAI2AgggASAGNgIAIAcgBTYCAEEAIQIMAQsCQCAEKAIMIgJFDQAgBiACQQEQuAULQQEhAgsgACADNgIEIAAgAjYCACAEQTBqJAAPCyAEIAQpAhw3AiQgBCACNgIgIAQgBTYCHCAEIAY2AhhB0M7AAEErIARBGGpB/M7AAEHkz8AAELIDAAu5AwEKfwJAAkACQAJAAkACQAJAAkAgASgCCCIERQ0AIAEoAgAhBSAEQQEQmAUiBkUNBCADRQ0HIAUgBEEibGohByADQX9qQf///z9xIghBAWohCSAEQX9qQf////8HcUEBaiEKIAYhCwNAIAVBImohDEEAIQ0gAiEDAkADQCADIAVBIBCBBkUNASADQSBqIQMgCSANQQFqIg1HDQAMCgsLIAsgDToAACALQQFqIQsgDCEFIAwgB0cNAAwCCwsgA0UNASADQX9qQf///z9xIQhBACEKQQEhBgsgCEEBaiEFIAFBGGohDUEAIQMDQCACIA1BIBCBBkUNAiACQSBqIQIgBSADQQFqIgNHDQALC0HsnMAAQStBwJ7AABCEBAALIAEoAgwhCQJAAkAgAUEUaigCACINDQBBASEFDAELIA1BAEgNAiANQQEQmAUiBUUNAwsgACAFNgIMIABBEGogDTYCACAFIAkgDRD/BRogACADOgAYIAAgCjYCCCAAIAQ2AgQgACAGNgIAIABBFGogDTYCAA8LIARBARDvBQALEJIEAAsgDUEBEO8FAAtB7JzAAEErQcCewAAQhAQAC5QDAgp/An4gASACQQJ0aiEFAkACQCAERQ0AIARBAWohBiAEQQJ0IQdBACEIQQAhCQNAIAAgCEECdGohCgNAIAghCyAKIQIgASAFRg0DIAJBBGohCiALQQFqIQggASgCACEMIAFBBGoiDSEBIAxFDQALIAtBKCALQShJG0FYaiEOIAytIQ9CACEQQQAhASAHIQwgAyEKAkACQAJAA0AgDiABRg0BIAIgECACNQIAfCAKNQIAIA9+fCIQPgIAIBBCIIghECACQQRqIQIgAUF/aiEBIApBBGohCiAMQXxqIgwNAAsgBCEBIBCnIgINAQwCCyABQX9zIAhqQShBxKbCABDHAwALAkAgCyAEaiIBQSdLDQAgACABQQJ0aiACNgIAIAYhAQwBCyABQShBxKbCABDHAwALIAEgC2oiASAJIAkgAUkbIQkgDSEBDAALC0EAIQlBACECA0AgASAFRg0BIAJBAWohAiABKAIAIQogAUEEaiILIQEgCkUNACACQX9qIgEgCSAJIAFJGyEJIAshAQwACwsgCQv7AwEBfyMAQTBrIgIkAAJAAkACQAJAAkACQCAALQAADgQAAQIDAAsgAiAAQQRqKAIANgIMIAJBEGogAUGU4sEAQQIQvQQgAkEQakGW4sEAQQQgAkEMakGc4sEAEN8BIQAgAkEoOgAfIABB4+HBAEEEIAJBH2pB6OHBABDfASEBQRRBARCYBSIARQ0EIABBEGpBACgA3+tBNgAAIABBCGpBACkA1+tBNwAAIABBACkAz+tBNwAAIAJClICAgMACNwIkIAIgADYCICABQfjhwQBBByACQSBqQaziwQAQ3wEQswMhACACKAIkIgFFDQMgAigCICABQQEQuAUMAwsgAiAALQABOgAQIAJBIGogAUGQ4sEAQQQQpQQgAkEgaiACQRBqQejhwQAQjwIQoAMhAAwCCyAAQQRqKAIAIQAgAkEgaiABQd7hwQBBBRC9BCACQSBqQePhwQBBBCAAQQhqQejhwQAQ3wFB+OHBAEEHIABBgOLBABDfARCzAyEADAELIABBBGooAgAhACACQSBqIAFBoOfBAEEGEL0EIAIgAEEIajYCECACQSBqQePhwQBBBCACQRBqQZDnwQAQ3wEaIAIgADYCECACQSBqQabnwQBBBSACQRBqQaznwQAQ3wEaIAJBIGoQswMhAAsgAkEwaiQAIAAPC0EUQQEQ7wUAC8MDAQd/IwBB0ABrIgEkACABQQA2AhggAUIBNwMQIAFBIGogAUEQakH858AAELwEAkACQCAAIAFBIGoQ8AENAAJAIAEoAhQgASgCGCIAa0EJSw0AIAFBEGogAEEKEOgCIAEoAhghAAsgASgCECAAaiICQQApALjpQDcAACACQQhqQQAvAMDpQDsAACABIABBCmo2AhggAUEIahANIgMQDiABKAIIIQQCQCABKAIUIAEoAhgiAmsgASgCDCIATw0AIAFBEGogAiAAEOgCIAEoAhghAgsgASgCECACaiAEIAAQ/wUaIAEgAiAAaiICNgIYAkAgASgCFCACa0EBSw0AIAFBEGogAkECEOgCIAEoAhghAgsgASgCECACakGKFDsAACABIAJBAmoiAjYCGCABKAIQIQUCQAJAIAEoAhQiBiACSw0AIAUhBwwBCwJAIAINAEEBIQcgBSAGQQEQuAUMAQsgBSAGQQEgAhCEBSIHRQ0CCyAHIAIQDwJAIABFDQAgBCAAQQEQuAULAkAgA0EkSQ0AIAMQAwsgAUHQAGokAA8LQZTowABBNyABQcgAakGo6cAAQZjpwAAQsgMACyACQQEQ7wUAC6IDAQN/IwBB0AFrIgIkACACQYABaiABQdAAahC5ASACQTBqQSBqIAJBgAFqQSBqKQMANwMAIAJBMGpBGGogAkGAAWpBGGopAwA3AwAgAkEwakEQaiIDIAJBgAFqQRBqKQMANwMAIAJBMGpBCGoiBCACQYABakEIaikDADcDACACIAIpA4ABNwMwIAJB2ABqQSBqIAJByAFqKQMANwMAIAJB2ABqQRhqIAJBwAFqKQMANwMAIAJB2ABqQRBqIAJBuAFqKQMANwMAIAJB2ABqQQhqIAJBsAFqKQMANwMAIAIgAikDqAE3A1ggAkGAAWogAkEwakEFEGYgAkEIaiACQYABaiACQdgAahBQIAJB2ABqIAEgAkEIahBQIAJBgAFqIAFBKGogAkEIahBQIAJBMGogAkGAAWoQogEgAEEXaiACQTBqQRdqKQAANwAAIABBEGogAykAADcAACAAQQhqIAQpAAA3AAAgACACKQAwNwAAIAItAE8hASACQTBqIAJB2ABqEKIBIAAgASACLQAwQQFxEIcFQQd0czoAHyACQdABaiQAC60DAQd/IwBBwABrIgQkACAEQf8BOgAHIAJBA3QhBSACQf////8BcSACRyEGIARBGGpBAXIhB0EAIQgCQAJAAkADQEEEIQkCQCACRQ0AIAYNAyAFQQBIDQMgBUEEEJgFIglFDQQLIAQgAjYCDCAEIAk2AgggCSABIAUQ/wUaIAQgAjYCECAEQQhqIAIQygIgBCgCCCAEKAIQQQN0aiIJQQE2AgQgCSAEQQdqNgIAIAQgBCgCEEEBaiIJNgIQIARBGGogBCgCCCAJIAMQYAJAIAQtABgNACAAQQE6AAAgACAHKQAANwABIABBIWogBC0ABzoAACAAQRlqIAdBGGopAAA3AAAgAEERaiAHQRBqKQAANwAAIABBCWogB0EIaikAADcAACAEKAIMIgJFDQIgBCgCCCACQQN0QQQQuAUMAgsgBC0AGSEJAkAgBCgCDCIKRQ0AIAQoAgggCkEDdEEEELgFCwJAIAlB/wFxQQFHDQAgBCAELQAHQX9qOgAHIAhBAWoiCEH/AXFB/wFHDQELCyAAQQA6AAALIARBwABqJAAPCxCSBAALIAVBBBDvBQALmQMBA38CQAJAAkACQAJAIAFBCUkNAEEQQQgQgQUgAUsNAQwCCyAAEDshAgwCC0EQQQgQgQUhAQsQvgYhA0EAIQIgAyADQQgQgQVBFEEIEIEFakEQQQgQgQVqa0H4/3tqQXdxQX1qIgNBAEEQQQgQgQVBAnRrIgQgBCADSxsgAWsgAE0NACABQRAgAEEEakEQQQgQgQVBe2ogAEsbQQgQgQUiBGpBEEEIEIEFakF8ahA7IgNFDQAgAxCaBiEAAkACQCABQX9qIgIgA3ENACAAIQEMAQsgAiADakEAIAFrcRCaBiECQRBBCBCBBSEDIAAQ5wUgAkEAIAEgAiAAayADSxtqIgEgAGsiAmshAwJAIAAQxQUNACABIAMQywQgACACEMsEIAAgAhCnAQwBCyAAKAIAIQAgASADNgIEIAEgACACajYCAAsgARDFBQ0BIAEQ5wUiAEEQQQgQgQUgBGpNDQEgASAEEJcGIQIgASAEEMsEIAIgACAEayIAEMsEIAIgABCnAQwBCyACDwsgARCZBiEAIAEQxQUaIAALvgMBBX8jAEHwAWsiAiQAIAJBCGogAUHEABD/BRogAkHQAGogAkEIahBTQQEhAwJAAkACQCACKAJUQQFHDQACQCACQdAAakEIaigCACIBRQ0AIAFB////P3EgAUcNAiABQQV0IgRBAEgNAiAEQQEQmAUiA0UNAwtBACEEIABBADYCCCAAIAM2AgAgAEEEaiABNgIAIAJB0ABqIAJBCGpBxAAQ/wUaIAJBmAFqIAJB0ABqEFMCQCACKAKcAUEBRw0AIABBCGohBQJAIAEgAkGYAWpBCGooAgAiBk8NACAAQQAgBhDQAiAAKAIIIQQgACgCACEDCyACQZgBaiACQdAAakHEABD/BRogAkHoAWogBDYCACACIAU2AuQBIAIgAyAEQQV0ajYC4AEgAkGYAWogAkHgAWoQZCACQfABaiQADwsgAkGsAWpBADYCACACQbzkwAA2AqgBIAJCATcCnAEgAkG05MAANgKYASACQZgBakGA5sAAEJMEAAsgAkGsAWpBADYCACACQbzkwAA2AqgBIAJCATcCnAEgAkG05MAANgKYASACQZgBakGc5cAAEJMEAAsQkgQACyAEQQEQ7wUAC7YDAQF/AkACQAJAAkACQCACRQ0AIAEtAABBMUkNASAGQQRJDQICQAJAIANBEHRBEHUiB0EBSA0AIAUgATYCBEECIQYgBUECOwEAIANB//8DcSIDIAJPDQEgBUECOwEYIAVBAjsBDCAFIAM2AgggBUEgaiACIANrIgI2AgAgBUEcaiABIANqNgIAIAVBFGpBATYCACAFQRBqQfKLwgA2AgBBAyEGIAIgBE8NBiAEIAJrIQQMBQsgBUECOwEYIAVBADsBDCAFQQI2AgggBUHwi8IANgIEIAVBAjsBACAFQSBqIAI2AgAgBUEcaiABNgIAIAVBEGpBACAHayIBNgIAQQMhBiAEIAJNDQUgBCACayICIAFNDQUgAiAHaiEEDAQLIAVBADsBDCAFIAI2AgggBUEQaiADIAJrNgIAIARFDQQgBUECOwEYIAVBIGpBATYCACAFQRxqQfKLwgA2AgAMAwtBrInCAEEhQfiKwgAQhAQAC0GIi8IAQSFBrIvCABCEBAALQbyLwgBBIkHgi8IAEIQEAAsgBUEAOwEkIAVBKGogBDYCAEEEIQYLIAAgBjYCBCAAIAU2AgALjAMDBH8DfgF8IwBBMGsiAiQAAkACQCAAIAGEUEUNAEQAAAAAAAAAACEJDAELQf8AQgAgASAAQgBSrXx9IAEgAUIAUyIDGyIGeUIAIAB9IAAgAxsiAHlCwAB8IAZCAFIbpyIDayEEAkACQCADQcsASQ0AIAJBIGogACAGIANBNWpB/wBxENoDIAIpAyAhAAwBCwJAAkACQEGAASADayIFQUpqDgIAAgELIAZCAYYgAEI/iIQhBiAAQgGGIQAMAQsgAkEQaiAAIAZByQAgA2tB/wBxENsDIAIgACAGIANBN2pB/wBxENoDIAIpAxAgAikDACACQQhqKQMAhEIAUq2EIQAgAkEQakEIaikDACEGCyAAQgKIQgGDIACEIgdCAXwiAEICQgMgAEKAgICAgICAwACDUCIDGyIIiCAGIAAgB1StfEIBhiAIp0E/c62GhCEAIAQgBSADGyEECyAEQf8Haq1CNIYgAUKAgICAgICAgIB/g4QgAEL/////////B4OEvyEJCyACQTBqJAAgCQu6AwEFfyMAQSBrIgMkAAJAAkACQAJAIAJFDQAgAyABQQMQnAECQCADLwEARQ0AIAMoAgQhASAAQQE2AgAgACABNgIEDAQLAkACQAJAIAMvAQIiBA0AIANBADYCCCADIAQ2AgQgA0EBNgIADAELIARBARCYBSIFRQ0DQQAhBiADQQA2AgggAyAENgIEIAMgBTYCACACQX9qIgchAgNAIAJFDQICQCABKAIEIgUNACADQoHKADcDECADQRBqELgEIQEMBgsgASAFQX9qNgIEIAEgASgCACIFQQFqNgIAIAUtAAAhBQJAIAYgAygCBEcNACADIAYQ7gIgAygCCCEGCyADKAIAIAZqIAU6AAAgAyADKAIIQQFqIgY2AgggAkF/aiECIARBf2oiBA0ACwsgACADKQMANwIEIABBADYCACAAQQxqIANBCGooAgA2AgAMBAsgByADQRhqQaC8xgAQsAIhAQwCC0EAIANBGGpBoLzGABCwAiEBIABBATYCACAAIAE2AgQMAgsgBEEBEO8FAAsgAEEBNgIAIAAgATYCBCADKAIEIgFFDQAgAygCACABQQEQuAULIANBIGokAAu/AwECfyMAQYABayIEJAACQAJAAkACQEHEAEEBEJgFIgVFDQAgBUGAAjsAQiAFIAEpAAA3AAAgBSACKQAANwAiIAVBGGogAUEYaikAADcAACAFQRBqIAFBEGopAAA3AAAgBUEIaiABQQhqKQAANwAAIAVBKmogAkEIaikAADcAACAFQTJqIAJBEGopAAA3AAAgBUE6aiACQRhqKQAANwAAIAVBgQI7ACAgBEEIakEIaiADNwMAIARBAjoACBDcBiAEQegAaiAEQQhqELcCIAQoAmgNASAAIAQpAmw3AgwgAEEUaiAEQfQAaigCADYCACAAQTBqQgA3AgAgAEEoakIANwIAIABBIGpCADcCACAAQgA3AhggAEKCgICAIDcCBCAAIAU2AgACQAJAAkACQCAELQAIQX1qDgkABwcHBwcBAgMHCyAEQcwAaiEFDAULIARBzABqIQUMBAsgBEHMAGohBQwDCyAEQSxqIQUMAgtBxABBARDvBQALIAQgBCgCbDYCfEHIqsAAQSsgBEH8AGpB9KrAAEHsrMAAELIDAAsgBUEEaigCACIARQ0AIAUoAgAgAEEBELgFCyAEQYABaiQAC54DAQd/AkACQCABQf//A0sNAAJAIAFB//8DcUH/AEsNACACKAIAIgNBCGooAgAhBCABIQUMAgsgAigCACIDQQhqIgYoAgAhBCADQQRqIQcgASECA0AgAkGAf3IhBSACQYD/A3EhCAJAAkAgBygCACAERg0AIAQhCQwBCyADIARBARDlAiAGKAIAIQkLIAYgCUEBaiIENgIAIAMoAgAgCWogBToAACACQf//A3EhCSAIQQd2IgUhAiAJQYCAAUkNAgwACwtB6ODAAEEWEP0CDwsCQCADQQRqKAIAIARHDQAgAyAEQQEQ5QIgA0EIaigCACEECyADQQhqIgggBEEBaiIJNgIAIAMoAgAgBGogBToAAAJAIAENAEEADwsgACABQQV0aiEHIANBBGohBgNAQQAhAgNAIAJBAWohBCAAIAJqLQAAIQUCQAJAIAYoAgAgCUYNACAJIQIMAQsgAyAJQQEQ5QIgCCgCACECCyAIIAJBAWoiCTYCACADKAIAIAJqIAU6AAAgBCECIARBIEcNAAsgAEEgaiIAIAdHDQALQQALqQMBCH8CQAJAIAFB//8DSw0AAkAgAUH//wNxQf8ASw0AIAEhAwwCCyACKAIAIgRBCGoiBSgCACEGIARBBGohByABIQgDQCAIQYB/ciEDIAhBgP8DcSEJAkACQCAHKAIAIAZGDQAgBiEKDAELIAQgBkEBEOUCIAUoAgAhCgsgBSAKQQFqIgY2AgAgBCgCACAKaiADOgAAIAhB//8DcSEKIAlBB3YiAyEIIApBgIABSQ0CDAALC0Ho4MAAQRYQ/QIPCwJAIAIoAgAiBkEEaigCACAGQQhqIgooAgAiCEcNACAGIAhBARDlAiAKKAIAIQgLIAogCEEBajYCACAGKAIAIAhqIAM6AAAgAUEcbCEGA0ACQCAGDQBBAA8LIAAtABghCQJAIAIoAgAiCkEEaigCACAKQQhqIgMoAgAiCEcNACAKIAhBARDlAiADKAIAIQgLIAMgCEEBajYCACAKKAIAIAhqIAk6AAACQCAAKAIAIAAoAgggAhDrASIIDQAgBkFkaiEGIAAoAhQhCCAAKAIMIQogAEEcaiEAIAogCCACEOsBIghFDQELCyAIC6ADAQd/AkACQCABQf//A0sNAAJAIAFB//8DcUH/AEsNACACKAIAIgNBCGooAgAhBCABIQUMAgsgAigCACIDQQhqIgYoAgAhBCADQQRqIQcgASECA0AgAkGAf3IhBSACQYD/A3EhCAJAAkAgBygCACAERg0AIAQhCQwBCyADIARBARDvAiAGKAIAIQkLIAYgCUEBaiIENgIAIAMoAgAgCWogBToAACACQf//A3EhCSAIQQd2IgUhAiAJQYCAAUkNAgwACwtBnLrGAEEWEP8CDwsCQCADQQRqKAIAIARHDQAgAyAEQQEQ7wIgA0EIaigCACEECyADQQhqIgggBEEBaiIJNgIAIAMoAgAgBGogBToAAAJAIAENAEEADwsgACABQQZ0aiEHIANBBGohBgNAQQAhAgNAIAJBAWohBCAAIAJqLQAAIQUCQAJAIAYoAgAgCUYNACAJIQIMAQsgAyAJQQEQ7wIgCCgCACECCyAIIAJBAWoiCTYCACADKAIAIAJqIAU6AAAgBCECIARBwABHDQALIABBwABqIgAgB0cNAAtBAAupAwEIfwJAAkAgAUH//wNLDQACQCABQf//A3FB/wBLDQAgASEDDAILIAIoAgAiBEEIaiIFKAIAIQYgBEEEaiEHIAEhCANAIAhBgH9yIQMgCEGA/wNxIQkCQAJAIAcoAgAgBkYNACAGIQoMAQsgBCAGQQEQ7wIgBSgCACEKCyAFIApBAWoiBjYCACAEKAIAIApqIAM6AAAgCEH//wNxIQogCUEHdiIDIQggCkGAgAFJDQIMAAsLQZy6xgBBFhD/Ag8LAkAgAigCACIGQQRqKAIAIAZBCGoiCigCACIIRw0AIAYgCEEBEO8CIAooAgAhCAsgCiAIQQFqNgIAIAYoAgAgCGogAzoAACABQRxsIQYDQAJAIAYNAEEADwsgAC0AGCEJAkAgAigCACIKQQRqKAIAIApBCGoiAygCACIIRw0AIAogCEEBEO8CIAMoAgAhCAsgAyAIQQFqNgIAIAooAgAgCGogCToAAAJAIAAoAgAgACgCCCACEO0BIggNACAGQWRqIQYgACgCFCEIIAAoAgwhCiAAQRxqIQAgCiAIIAIQ7QEiCEUNAQsLIAgLngMBB38CQAJAIAFB//8DSw0AAkAgAUH//wNxQf8ASw0AIAIoAgAiA0EIaigCACEEIAEhBQwCCyACKAIAIgNBCGoiBigCACEEIANBBGohByABIQIDQCACQYB/ciEFIAJBgP8DcSEIAkACQCAHKAIAIARGDQAgBCEJDAELIAMgBEEBEO8CIAYoAgAhCQsgBiAJQQFqIgQ2AgAgAygCACAJaiAFOgAAIAJB//8DcSEJIAhBB3YiBSECIAlBgIABSQ0CDAALC0GcusYAQRYQ/wIPCwJAIANBBGooAgAgBEcNACADIARBARDvAiADQQhqKAIAIQQLIANBCGoiCCAEQQFqIgk2AgAgAygCACAEaiAFOgAAAkAgAQ0AQQAPCyAAIAFBBXRqIQcgA0EEaiEGA0BBACECA0AgAkEBaiEEIAAgAmotAAAhBQJAAkAgBigCACAJRg0AIAkhAgwBCyADIAlBARDvAiAIKAIAIQILIAggAkEBaiIJNgIAIAMoAgAgAmogBToAACAEIQIgBEEgRw0ACyAAQSBqIgAgB0cNAAtBAAviAwEBfyMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkACQAJAAkACQCAAKAIADgsAAQIDBAUGBwgJCgALIAFBrJrGAEEVEPoEIQAMCgsgAUGcmsYAQRAQ+gQhAAwJCyACIAFB+pnGAEEQEKUEIAIgAEEEajYCDCACIAJBDGpBjJrGABCPAhogAhCgAyEADAgLIAIgAUH0mcYAQQYQpQQgAiAAQQRqNgIMIAIgAkEMakGYmcYAEI8CGiACEKADIQAMBwsgAiABQdOZxgBBDhClBCACIABBBGo2AgwgAiACQQxqQeSZxgAQjwIaIAIQoAMhAAwGCyACIAFByZnGAEEKEKUEIAIgAEEEajYCDCACIAJBDGpBmJnGABCPAhogAhCgAyEADAULIAIgAUG9mcYAQQwQpQQgAiAAQQRqNgIMIAIgAkEMakGYmcYAEI8CGiACEKADIQAMBAsgAUGwmcYAQQ0Q+gQhAAwDCyACIAFBqJnGAEEIEKUEIAIgAEEEajYCDCACIAJBDGpBmJnGABCPAhogAhCgAyEADAILIAIgAUGNmcYAQQoQpQQgAiAAQQRqNgIMIAIgAkEMakGYmcYAEI8CGiACEKADIQAMAQsgAUH/mMYAQQ4Q+gQhAAsgAkEQaiQAIAALiAMBAn8jAEHQAGsiByQAAkACQAJAIABFDQAgACgCACIIQX9GDQEgACAIQQFqNgIAIAFFDQAgASgCACIIQX9GDQEgASAIQQFqNgIAIARFDQAgBCgCACIIQX9GDQEgBCAIQQFqNgIAIAVFDQAgBSgCACIIQX9GDQEgBSAIQQFqNgIAIAcgAzYCSCAHIAM2AkQgByACNgJAIAdBCGogAEEEaiABQQRqIAdBwABqIARBBGogBUEEaiAGEKwBIAUgBSgCAEF/ajYCACAEIAQoAgBBf2o2AgAgASABKAIAQX9qNgIAIAAgACgCAEF/ajYCAEE8QQQQmAUiAEUNAiAAQQA2AgAgACAHKQMINwIEIABBDGogB0EQaikDADcCACAAQRRqIAdBGGopAwA3AgAgAEEcaiAHQSBqKQMANwIAIABBJGogB0EoaikDADcCACAAQSxqIAdBMGopAwA3AgAgAEE0aiAHQThqKQMANwIAIAdB0ABqJAAgAA8LEOMFAAsQ5AUAC0E8QQQQ7wUAC4UDAQh/IwBBMGsiAiQAAkACQAJAAkACQAJAAkACQAJAIAEoAggiAyABKAIMIgRyDQAgASgCBCEFIAAoAggiBiAAKAIMIgdyDQIgACgCBCEHIAVFDQMgBw0BDAcLIAAoAggiBiAAKAIMIgdyDQQgACgCBEUNBgtBACEHQQEhCEEAIQYMBAsgBQ0CDAELIAcNAEEAIQEMBAtBf0EBIAAoAgBBAEgbIQEMAwsgB0UhCAsCQAJAIAEoAgAiCSAAKAIAIgVzQQBIDQAgAiAFQR92OgAQIAIgAEEEaigCADYCDCACIAVBEHZB/wFxNgIIIAJCACAHrUIghiAIGyAGrYQ3AwAgAiAJQR92OgAoIAIgCUEQdkH/AXE2AiAgAiAErUIghkIAIAQbIAOthDcDGCACIAFBBGooAgA2AiQgBUF/TA0BIAIgAkEYahC4ASEBDAMLQX9BASAFQQBIGyEBDAILIAJBGGogAhC4ASEBDAELQQFBfyABKAIAQQBIGyEBCyACQTBqJAAgAQuEAwECfyMAQcAAayIIJAACQAJAAkAgAEUNACAAKAIAIglBf0YNASAAIAlBAWo2AgAgAUUNACABKAIAIglBf0YNASABIAlBAWo2AgAgAkUNACACKAIAIglBf0YNASACIAlBAWo2AgAgB0UNACAHKAIAIglBf0YNASAHIAlBAWo2AgAgCEEIaiAAQQRqIAFBBGogAkEEaiADIAQgBSAGIAdBBGoQlAEgByAHKAIAQX9qNgIAAkAgBEUNACADIARBARC4BQsgAiACKAIAQX9qNgIAIAEgASgCAEF/ajYCACAAIAAoAgBBf2o2AgBBPEEEEJgFIgBFDQIgAEEANgIAIAAgCCkDCDcCBCAAQQxqIAhBEGopAwA3AgAgAEEUaiAIQRhqKQMANwIAIABBHGogCEEgaikDADcCACAAQSRqIAhBKGopAwA3AgAgAEEsaiAIQTBqKQMANwIAIABBNGogCEE4aikDADcCACAIQcAAaiQAIAAPCxDjBQALEOQFAAtBPEEEEO8FAAuwAwEBfyMAQfAAayIHJAAgByACNgIMIAcgATYCCCAHIAQ2AhQgByADNgIQAkACQAJAAkAgAEH/AXEOAwABAgALIAdBpY7CADYCGEECIQAMAgsgB0GjjsIANgIYQQIhAAwBCyAHQZyOwgA2AhhBByEACyAHIAA2AhwCQCAFKAIADQAgB0E4akEUakG5ATYCACAHQcQAakG5ATYCACAHQdgAakEUakEDNgIAIAdCBDcCXCAHQYiPwgA2AlggB0GzATYCPCAHIAdBOGo2AmggByAHQRBqNgJIIAcgB0EIajYCQCAHIAdBGGo2AjggB0HYAGogBhCTBAALIAdBIGpBEGogBUEQaikCADcDACAHQSBqQQhqIAVBCGopAgA3AwAgByAFKQIANwMgIAdB2ABqQRRqQQQ2AgAgB0HUAGpBGDYCACAHQThqQRRqQbkBNgIAIAdBxABqQbkBNgIAIAdCBDcCXCAHQeSOwgA2AlggB0GzATYCPCAHIAdBOGo2AmggByAHQSBqNgJQIAcgB0EQajYCSCAHIAdBCGo2AkAgByAHQRhqNgI4IAdB2ABqIAYQkwQAC6EDAgR/An4jAEGQBGsiAiQAIAIQpwMgAiABQSAQowIgAkGwAmpCADcDACACQagCakIANwMAIAJBoAJqQgA3AwAgAkH4AWpBIGpCADcDACACQZACakIANwMAIAJB+AFqQRBqQgA3AwAgAkH4AWpBCGpCADcDACACQgA3A/gBIAJBuAJqIAJB2AEQ/wUaIAJBuAJqIAJB+AFqEH8gAkHuAWoiASACQfgBakEXaikAADcBACACQdgBakEQaiIDIAJB+AFqQRFqKQAANwMAIAJB2AFqQQhqIAJB+AFqQQlqKQAAIgY3AwAgAiACKQD5ASIHNwPYASACQZcCai0AACEEIAItAPgBIQUgAkG4AmpBCWogBjcAACACQbgCakERaiADKQMANwAAIAJBuAJqQRdqIAEpAQA3AAAgAiAFQfgBcToAuAIgAiAHNwC5AiACIARBP3FBwAByOgDXAiACQfgBaiACQbgCahD/AyACQbgCaiACQfgBakHwt8IAENkFIABBoAFqIAJBuAJqEMkBIAAgAkG4AmpBoAEQ/wUaIAJBkARqJAALtgMBAX8jAEHAAGsiAiQAAkACQAJAAkACQAJAIAAtAAAOBAABAgMACyACIABBBGooAgA2AgRBFEEBEJgFIgBFDQQgAEEQakEAKADf60E2AAAgAEEIakEAKQDX60E3AAAgAEEAKQDP60E3AAAgAkKUgICAwAI3AgwgAiAANgIIIAJBKGpBFGpBAjYCACACQSRqQdoANgIAIAJCAzcCLCACQcjiwQA2AiggAkGTATYCHCACIAJBGGo2AjggAiACQQRqNgIgIAIgAkEIajYCGCABIAJBKGoQyQMhACACKAIMIgFFDQMgAigCCCABQQEQuAUMAwsgAC0AASEAIAJBPGpBATYCACACQgE3AiwgAkHo28EANgIoIAJBlAE2AgwgAiAAQSBzQT9xQQJ0IgBBsO/BAGooAgA2AhwgAiAAQbDxwQBqKAIANgIYIAIgAkEIajYCOCACIAJBGGo2AgggASACQShqEMkDIQAMAgsgAEEEaigCACIAKAIAIAAoAgQgARD6BSEADAELIABBBGooAgAiACgCACABIAAoAgQoAhARBwAhAAsgAkHAAGokACAADwtBFEEBEO8FAAv1AgEHf0EBIQcCQAJAIAJFDQAgASACQQF0aiEIIABBgP4DcUEIdiEJQQAhCiAAQf8BcSELAkADQCABQQJqIQwgCiABLQABIgJqIQ0CQCABLQAAIgEgCUYNACABIAlLDQMgDSEKIAwhASAMIAhHDQEMAwsCQCANIApJDQAgDSAESw0CIAMgCmohAQJAA0AgAkUNASACQX9qIQIgAS0AACEKIAFBAWohASAKIAtHDQALQQAhBwwFCyANIQogDCEBIAwgCEcNAQwDCwsgCiANIAIQ9gUACyANIAQgAhD1BQALIAZFDQAgBSAGaiELIABB//8DcSEBQQEhBwJAA0AgBUEBaiEKAkACQCAFLQAAIgJBGHRBGHUiDUEASA0AIAohBQwBCyAKIAtGDQIgDUH/AHFBCHQgBS0AAXIhAiAFQQJqIQULIAEgAmsiAUEASA0CIAdBAXMhByAFIAtHDQAMAgsLQZCNwgBBK0HQmsIAEIQEAAsgB0EBcQuoAwECfyMAQYABayIDJAACQAJAAkACQEEiQQEQmAUiBEUNACAEQYECOwAgIAQgASkAADcAACAEQRhqIAFBGGopAAA3AAAgBEEQaiABQRBqKQAANwAAIARBCGogAUEIaikAADcAACADQSFqIAJBGGopAAA3AAAgA0EZaiACQRBqKQAANwAAIANBEWogAkEIaikAADcAACADQQE6AAggAyACKQAANwAJENwGIANB6ABqIANBCGoQtwIgAygCaA0BIAAgAykCbDcCDCAAQRRqIANB9ABqKAIANgIAIABBMGpCADcCACAAQShqQgA3AgAgAEEgakIANwIAIABCADcCGCAAQoGAgIAQNwIEIAAgBDYCAAJAAkACQAJAIAMtAAhBfWoOCQAHBwcHBwECAwcLIANBzABqIQAMBQsgA0HMAGohAAwECyADQcwAaiEADAMLIANBLGohAAwCC0EiQQEQ7wUACyADIAMoAmw2AnxByKrAAEErIANB/ABqQfSqwABB7KzAABCyAwALIABBBGooAgAiBEUNACAAKAIAIARBARC4BQsgA0GAAWokAAu2AwIFfwJ+IwBBwABrIgUkAEEBIQYCQCAALQAEDQAgAC0ABSEHAkAgACgCACIIKAIAIglBBHENAEEBIQYgCCgCGEHdj8IAQd+PwgAgB0H/AXEiBxtBAkEDIAcbIAhBHGooAgAoAgwRCgANAUEBIQYgCCgCGCABIAIgCCgCHCgCDBEKAA0BQQEhBiAIKAIYQaiPwgBBAiAIKAIcKAIMEQoADQEgAyAIIAQoAgwRBwAhBgwBCwJAIAdB/wFxDQBBASEGIAgoAhhB2I/CAEEDIAhBHGooAgAoAgwRCgANASAIKAIAIQkLQQEhBiAFQQE6ABcgBUE0akG8j8IANgIAIAVBEGogBUEXajYCACAFIAk2AhggBSAIKQIYNwMIIAgpAgghCiAIKQIQIQsgBSAILQAgOgA4IAUgCCgCBDYCHCAFIAs3AyggBSAKNwMgIAUgBUEIajYCMCAFQQhqIAEgAhCFAQ0AIAVBCGpBqI/CAEECEIUBDQAgAyAFQRhqIAQoAgwRBwANACAFKAIwQduPwgBBAiAFKAI0KAIMEQoAIQYLIABBAToABSAAIAY6AAQgBUHAAGokACAAC6cDAgV/AX4jAEEQayICJAACQAJAAkACQAJAQQAgACgCABEDACIDRQ0AAkAgAygCAA0AIANBfzYCACADKAIEIgBBAkcNAyACEO8BIAIoAgQhACACKAIADQQgAkEIaikDACEHIAMoAgQiBEECRg0CIAMoAgghBQJAAkAgBA0AIAVBI00NBAwBCwJAIAVBJEkNACAFEAMLIAMoAgwiBUEkSQ0DCyAFEAMMAgtB3LLBAEEQIAJBqLPBAEGctMEAELIDAAtBtLHBAEHGACACQZizwQBBzLLBABCyAwALIAMgBzcCCCADIAA2AgQgAEECRg0CCwJAAkAgAA0AIAMoAgggASgCACABKAIEEBcMAQsgASgCBCIARQ0AIANBDGohBiABKAIAIQUDQCACIAZBACAAQYACIABBgAJJGyIBEL8FIgQ2AgAgAygCCCAEEBYgAiAFIAEQnAMgACABayEAAkAgAigCACIEQSRJDQAgBBADCyAFIAFqIQUgAA0ACwtBACEACyADIAMoAgBBAWo2AgAgAkEQaiQAIAAPC0HsssEAQStBrLTBABCEBAAL/wIBCH8jAEHgAWsiAyQAIANBKGpBAEHBABCCBiEEIANBEGpBACkD2N9ANwMAIANBGGpBACkD4N9ANwMAIANBIGpBACkD6N9ANwMAIANCADcDACADQQApA9DfQDcDCAJAIAJBA3QiAkUNACABIAJqIQUgA0EIaiEGIANB6ABqLQAAIQcDQCABKAIAIQgCQAJAIAFBBGooAgAiAkHAACAHQf8BcSIJayIKSQ0AAkAgCUUNACAEIAlqIAggChD/BRogAyADKQMAQgF8NwMAIAYgBEEBENsFIAggCmohCCACIAprIQILIAJBP3EhByAIIAJBQHFqIQkCQCACQT9LDQAgBCAJIAcQ/wUaDAILIAMgAykDACACQQZ2IgKtfDcDACAGIAggAhDbBSAEIAkgBxD/BRoMAQsgBCAJaiAIIAIQ/wUaIAcgAmohBwsgAyAHOgBoIAFBCGoiASAFRw0ACwsgA0HwAGogA0HwABD/BRogACADQfAAahCEASADQeABaiQAC/oCAQN/IwBB0ABrIgQkAAJAAkACQCADRQ0AIAMoAgAiBUF/Rg0BQQEhBiADIAVBAWo2AgAgBEEoaiABIAIgA0EEahCTASAEQSZqIAQtACs6AAAgBEEIakEIaiAEQShqQRBqKQMANwMAIARBCGpBEGogBEEoakEYaikDADcDACAEQQhqQRhqIARByABqKAIANgIAIAQgBC8AKTsBJCAEIARBKGpBCGopAwA3AwggBC0AKCECIAQoAiwhASADIAMoAgBBf2o2AgACQAJAIAJFDQAMAQtBJEEEEJgFIgNFDQNBACEGIANBADYCACADIAQvASQ7AAQgAyABNgAHIAMgBCkDCDcACyADQQZqIARBJmotAAA6AAAgA0ETaiAEQRBqKQMANwAAIANBG2ogBEEYaikDADcAACADQSNqIARBIGotAAA6AABBACEBCyAAIAY2AgggACABNgIEIAAgAzYCACAEQdAAaiQADwsQ4wUACxDkBQALQSRBBBDvBQALzAMCAn8BfkEw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AgghBQJAAkAgA0EKTw0AIAIhAQwBCwNAIAIgAkGAlOvcA24iAUGAlOvcA2xrrUIghiAErYQiByAHQoCU69wDgCIHQoCU69wDfn1CIIYgBa2EQoCU69wDgCIIpyEFIAenIQQgASECIANBd2oiA0EJSw0ACyAIpyEFIAenIQQLAkACQCADQQJ0QZy/wQBqKAIAIgIOAgACAQtB0cXBAEEeQfDFwQAQ0wQACyABIAEgAm4iAyACbGutQiCGIASthCIIIAggAq0iB4AiCCAHfn1CIIYgBa2EIAeApyEFIAinIQQgAyEBCyABDQAgBK1CIIYgBa2EIQdCASEGCyAAIAc3AwggACAGNwMAC/kCAQR/IwBB0ABrIgIkACACQSBqIAAgACgCACgCBBEGAEEBIQMgAkHEAGpBATYCACACQRM2AiwgAkIBNwI0IAJB0JfAADYCMCACIAIpAyA3A0ggAiACQcgAajYCKCACIAJBKGo2AkACQCABIAJBMGoQyQMNAEEAIQMgARCxBUUNACACQRhqIAAgACgCACgCBBEGAEEAIQAgAigCHCEEIAIoAhghBQNAAkACQCAAQQFxRQ0AIAUhACAEIQMMAQsCQCAFDQBBACEDDAMLIAJBEGogBSAEKAIYEQYAIAIoAhQhAyACKAIQIQALAkAgAA0AQQAhAwwCCyACQQhqIAAgAygCGBEGACACKAIMIQQgAigCCCEFIAIgAzYCLCACIAA2AiggAkEBNgJEIAJCATcCNCACQdyXwAA2AjAgAkETNgJMIAIgAkHIAGo2AkAgAiACQShqNgJIAkAgASACQTBqEMkDDQBBASEADAELC0EBIQMLIAJB0ABqJAAgAwvOAgETfiABMQAfIQIgATEAHiEDIAExAB0hBCABMQAcIQUgATEAGiEGIAExABshByABNQAIIQggATEADCEJIAExAAchCiABMwAYIQsgATEAFyEMIAExABYhDSABMQAUIQ4gATEAFSEPIAE1ABAhECABMQAPIREgATEADSESIAExAA4hEyAAIAE1AAAgATEABEIghoQgATEABUIohoQgATEABkIwhoQiFEL/////////B4M3AwAgACAQQhiGIBJCKIYgE0IwhoQgEUI4hoRCKIiEQv////////8HgzcDECAAIAtCJIYgECAOQiCGhCAPQiiGhCANQjCGhCAMQjiGhEIc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ACAAQShqQgA3AgAgAEEgakIANwIAIABCADcCGCAAQoOAgIAwNwIEIAAgBDYCACADQSBqJAAPC0HmAEEBEO8FAAsgAyADKAIMNgIcQciqwABBKyADQRxqQfSqwABB7KzAABCyAwAL0wIBAn8jAEHAAGsiBSQAAkACQAJAIABFDQAgACgCACIGQX9GDQEgACAGQQFqNgIAIAFFDQAgASgCACIGQX9GDQEgASAGQQFqNgIAIARFDQAgBCgCACIGQX9GDQEgBCAGQQFqNgIAIAVBCGogAEEEaiABQQRqIAIgAyAEQQRqEKgBIAQgBCgCAEF/ajYCAAJAIANFDQAgAiADQQEQuAULIAEgASgCAEF/ajYCACAAIAAoAgBBf2o2AgBBPEEEEJgFIgBFDQIgAEEANgIAIAAgBSkDCDcCBCAAQQxqIAVBEGopAwA3AgAgAEEUaiAFQRhqKQMANwIAIABBHGogBUEgaikDADcCACAAQSRqIAVBKGopAwA3AgAgAEEsaiAFQTBqKQMANwIAIABBNGogBUE4aikDADcCACAFQcAAaiQAIAAPCxDjBQALEOQFAAtBPEEEEO8FAAv7AgECfyMAQYABayIDJAACQAJAAkACQEEiQQEQmAUiBEUNACAEQYECOwAgIAQgASkAADcAACAEQRhqIAFBGGopAAA3AAAgBEEQaiABQRBqKQAANwAAIARBCGogAUEIaikAADcAACADQQhqQQhqIAI3AwAgA0EIOgAIENwGIANB6ABqIANBCGoQtwIgAygCaA0BIAAgAykCbDcCDCAAQRRqIANB9ABqKAIANgIAIABBMGpCADcCACAAQShqQgA3AgAgAEEgakIANwIAIABCADcCGCAAQoGAgIAQNwIEIAAgBDYCAAJAAkACQAJAIAMtAAhBfWoOCQAHBwcHBwECAwcLIANBzABqIQAMBQsgA0HMAGohAAwECyADQcwAaiEADAMLIANBLGohAAwCC0EiQQEQ7wUACyADIAMoAmw2AnxByKrAAEErIANB/ABqQfSqwABB7KzAABCyAwALIABBBGooAgAiBEUNACAAKAIAIARBARC4BQsgA0GAAWokAAvSAgIFfwF+IwBBMGsiAyQAQSchBAJAAkAgAEKQzgBaDQAgACEIDAELQSchBANAIANBCWogBGoiBUF8aiAAIABCkM4AgCIIQpDOAH59pyIGQf//A3FB5ABuIgdBAXRBj5DCAGovAAA7AAAgBUF+aiAGIAdB5ABsa0H//wNxQQF0QY+QwgBqLwAAOwAAIARBfGohBCAAQv/B1y9WIQUgCCEAIAUNAAsLAkAgCKciBUHjAE0NACADQQlqIARBfmoiBGogCKciBSAFQf//A3FB5ABuIgVB5ABsa0H//wNxQQF0QY+QwgBqLwAAOwAACwJAAkAgBUEKSQ0AIANBCWogBEF+aiIEaiAFQQF0QY+QwgBqLwAAOwAADAELIANBCWogBEF/aiIEaiAFQTBqOgAACyACIAFByPXBAEEAIANBCWogBGpBJyAEaxByIQQgA0EwaiQAIAQLyQIBA38jAEGAAWsiAiQAAkACQAJAAkACQCABKAIAIgNBEHENACADQSBxDQEgADEAAEEBIAEQhwIhAAwECyAALQAAIQNBACEAA0AgAiAAakH/AGpBMEHXACADQQ9xIgRBCkkbIARqOgAAIABBf2ohACADQf8BcSIEQQR2IQMgBEEPSw0ACyAAQYABaiIDQYEBTw0BIAFBAUGNkMIAQQIgAiAAakGAAWpBACAAaxByIQAMAwsgAC0AACEDQQAhAANAIAIgAGpB/wBqQTBBNyADQQ9xIgRBCkkbIARqOgAAIABBf2ohACADQf8BcSIEQQR2IQMgBEEPSw0ACyAAQYABaiIDQYEBTw0BIAFBAUGNkMIAQQIgAiAAakGAAWpBACAAaxByIQAMAgsgA0GAASAAEPQFAAsgA0GAASAAEPQFAAsgAkGAAWokACAAC7sCAQd/IwBB4AFrIgIkACACIAAgAUHQAGoiAxBQIAJBKGogASAAQdAAaiIEEFAgAkHQAGogAhCiASACQfgAaiACQShqEKIBQQAhBUEBIQYDQCACQfgAaiAFai0AACACQdAAaiAFai0AAHMiB0F/aiAHQX9zcUGAAXFBB3YQhwUgBnEhBiAFQQFqIgVBIEcNAAsgBhCHBSEIIAJB0ABqIABBKGogAxBQIAJB+ABqIAFBKGogBBBQIAJBoAFqIAJB0ABqEKIBIAJBwAFqIAJB+ABqEKIBQQAhBUEBIQYDQCACQcABaiAFai0AACACQaABaiAFai0AAHMiB0F/aiAHQX9zcUGAAXFBB3YQhwUgBnEhBiAFQQFqIgVBIEcNAAsgBhCHBSAIcRCHBSEFIAJB4AFqJAAgBUH/AXFBAUYL0QIBBX8jAEEQayICJAAQHyEDIAEoAgAiBCADECAhASACQQhqEMwEIAIoAgwgASACKAIIIgUbIQECQAJAAkACQAJAIAUNACABEBlBAUYNASAAQQA2AgAgAEEIakECOgAAIAFBJEkNAiABEAMMAgsgAEEBNgIAIAAgATYCBAwBCyABIAQQISEFIAIQzAQCQAJAAkACQAJAIAIoAgANACAFEBpBAUcNAyAFEBsiBBAZIQYgBEEkSQ0BIAQQAyAGQQFGDQIMAwsgAigCBCEFIABBATYCACAAIAU2AgQMAwsgBkEBRw0BCyAAIAU2AgQgAEEANgIAIABBCGpBADoAAAJAIAFBJEkNACABEAMLIANBI0sNAwwECyAAQQA2AgAgAEEIakECOgAAIAVBJEkNACAFEAMLIAFBJEkNACABEAMLIANBI00NAQsgAxADCyACQRBqJAALxQIBA38jAEGAAWsiAiQAAkACQAJAAkACQCABKAIAIgNBEHENACADQSBxDQEgADUCAEEBIAEQhwIhAAwECyAAKAIAIQBBACEDA0AgAiADakH/AGpBMEHXACAAQQ9xIgRBCkkbIARqOgAAIANBf2ohAyAAQQ9LIQQgAEEEdiEAIAQNAAsgA0GAAWoiAEGBAU8NASABQQFBjZDCAEECIAIgA2pBgAFqQQAgA2sQciEADAMLIAAoAgAhAEEAIQMDQCACIANqQf8AakEwQTcgAEEPcSIEQQpJGyAEajoAACADQX9qIQMgAEEPSyEEIABBBHYhACAEDQALIANBgAFqIgBBgQFPDQEgAUEBQY2QwgBBAiACIANqQYABakEAIANrEHIhAAwCCyAAQYABIAAQ9AUACyAAQYABIAAQ9AUACyACQYABaiQAIAALpgMDAn8CfgJ8AkACQAJAAkAgAL0iA0IgiKciAUGAgMAASQ0AIANCAFMNACABQf//v/8HSw0CIANC/////w+DIQNBgXghAiABQYCAwP8DRw0BRAAAAAAAAAAAIQAgA0IAUg0BDAILAkAgA0L///////////8Ag0IAUg0ARAAAAAAAAPC/IAAgAKKjDwsgA0IAUw0CIABEAAAAAAAAUEOivSIEQv////8PgyEDIARCIIinIQFBy3chAgsgAUHiviVqIgFBFHYgAmq3IgVEAADg/kIu5j+iIAFB//8/cUGe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AEEBIQQCQCAALQAEDQAgAC0ABSEEAkACQAJAAkAgACgCACIFKAIAIgZBBHENACAEQf8BcQ0BDAMLIARB/wFxDQFBASEEIAUoAhhB+Y/CAEEBIAVBHGooAgAoAgwRCgANAyAFKAIAIQYMAQtBASEEIAUoAhhB3Y/CAEECIAVBHGooAgAoAgwRCgBFDQEMAgtBASEEIANBAToAFyADQTRqQbyPwgA2AgAgA0EQaiADQRdqNgIAIAMgBjYCGCADIAUpAhg3AwggBSkCCCEHIAUpAhAhCCADIAUtACA6ADggAyAFKAIENgIcIAMgCDcDKCADIAc3AyAgAyADQQhqNgIwIAEgA0EYaiACKAIMEQcADQEgAygCMEHbj8IAQQIgAygCNCgCDBEKACEEDAELIAEgBSACKAIMEQcAIQQLIABBAToABSAAIAQ6AAQgA0HAAGokAAu4AgEDfyMAQdAAayICJAAgAkEoaiABEEsgAkEmaiACLQArOgAAIAJBCGpBCGogAkEoakEQaikDADcDACACQQhqQRBqIAJBKGpBGGopAwA3AwAgAkEIakEYaiACQcgAaigCADYCACACIAIvACk7ASQgAiACQShqQQhqKQMANwMIIAIoAiwhAwJAAkACQCACLQAoRQ0AQQEhBAwBC0EkQQQQmAUiAUUNAUEAIQQgAUEANgIAIAEgAi8BJDsABCABIAM2AAcgASACKQMINwALIAFBBmogAkEmai0AADoAACABQRNqIAJBEGopAwA3AAAgAUEbaiACQRhqKQMANwAAIAFBI2ogAkEgai0AADoAAEEAIQMLIAAgBDYCCCAAIAM2AgQgACABNgIAIAJB0ABqJAAPC0EkQQQQ7wUAC7gCAQN/IwBB0ABrIgIkACACQShqIAEQUSACQSZqIAItACs6AAAgAkEIakEIaiACQShqQRBqKQMANwMAIAJBCGpBEGogAkEoakEYaikDADcDACACQQhqQRhqIAJByABqKAIANgIAIAIgAi8AKTsBJCACIAJBKGpBCGopAwA3AwggAigCLCEDAkACQAJAIAItAChFDQBBASEEDAELQSRBBBCYBSIBRQ0BQQAhBCABQQA2AgAgASACLwEkOwAEIAEgAzYAByABIAIpAwg3AAsgAUEGaiACQSZqLQAAOgAAIAFBE2ogAkEQaikDADcAACABQRtqIAJBGGop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AUEQaikAADcCACACQewAaiABQRhqKQAANwIAIAJB+NjAADYCUCACIAEpAAA3AlQgAiACQcAAajYCOCACQQhqIAJBOGpBOCACQdAAahDEAQJAAkAgAigCCA0AIABBATYCACACQTE2AjwgAkIBNwJUIAJB8N/AADYCUCACIAJBwABqNgI4IAIgAkE4ajYCYCACQRBqIAJB0ABqEMkDIQECQCACKAJEIgBFDQAgAigCQCAAQQEQuAULIAENASACQYABaiQADwtB79rAAEErIAJB+ABqQZzbwABBtNrAABCyAwALQbTdwABBNyACQfgAakH03sAAQbjewAAQsgMAC6MCAgR/An4gACAAKQMAIgcgAq1CA4Z8Igg3AwAgAEEIaiIDIAMpAwAgCCAHVK18NwMAAkACQEGAASAAKAJQIgNrIgQgAksNACAAQRBqIQUCQCADRQ0AIANBgQFPDQIgAEHUAGoiBiADaiABIAQQ/wUaIABBADYCUCAFIAZBARAxIAIgBGshAiABIARqIQELIAUgASACQQd2EDEgAEHUAGogASACQYB/cWogAkH/AHEiAhD/BRogACACNgJQDwsCQAJAIAMgAmoiBCADSQ0AIARBgAFLDQEgAEHQAGogA2pBBGogASACEP8FGiAAIAAoAlAgAmo2AlAPCyADIARBjLDCABD2BQALIARBgAFBjLDCABD1BQALIANBgAFBnLDCABD0BQALnwIBA38jAEHAAGsiAiQAQQAhAwJAAkAgASwAH0EASA0AIAJBGGogAUEYaikAADcDACACQRBqIAFBEGopAAA3AwAgAkEIaiABQQhqKQAANwMAIAIgASkAADcDACACIAItAB9B/wBxOgAfIAJBIGogAhBAQQEhAQNAIAJBIGogA2otAAAgAiADai0AAHMiBEF/aiAEQX9zcUGAAXFBB3YQhwUgAXEhASADQQFqIgNBIEcNAAtBACEDAkAgARCHBUH/AXFBAUcNACAAIAIpAwA3AAEgAEEZaiACQRhqKQMANwAAIABBEWogAkEQaikDADcAACAAQQlqIAJBCGopAwA3AABBASEDCyAAIAM6AAAMAQsgAEEAOgAACyACQcAAaiQAC98CAQF/IwBBEGsiAiQAAkACQAJAAkACQAJAAkACQAJAAkACQCAALQAADgkAAQIDBAUGBwgACyACIAFBnLzBAEEC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IAJBEGokACABC4ACAQd/AkACQCAARQ0AIAAoAgANASAAQQA2AgAgACgCBCEBIAAoAgghAiAAKAIQIQMgACgCFCEEIAAoAhwhBSAAKAIgIQYgACgCJCEHIABBzABBBBC4BQJAIAJFDQAgASACQQZ0QQEQuAULAkAgBEUNACADIARBBXRBARC4BQsCQCAHRQ0AIAdBHGwhAiAFIQADQAJAIABBBGooAgAiBEUNACAAKAIAIARBARC4BQsCQCAAQRBqKAIAIgRFDQAgAEEMaigCACAEQQEQuAULIABBHGohACACQWRqIgINAAsLAkAgBkUNACAFIAatQhx+p0EEELgFCw8LEOMFAAsQ5AUAC5YCAQF/IwBBgAFrIgMkACADIAI2AgwgAyABNgIIIANBJGpBAjYCACADQTRqQeIBNgIAIANCAjcCFCADQYi4xgA2AhAgA0HjATYCLCADIAA2AiggAyADQShqNgIgIAMgA0EIajYCMCADQQA2AlAgA0IBNwNIIANB2ABqIANByABqQbC2xgAQvAQCQAJAIANBEGogA0HYAGoQyAMNACADQcMAaiADQcgAakEIaigCADYAACADIAMpA0g3ADtBEEEEEJgFIgBFDQEgAEEIOgAAIAAgAykAODcAASAAQQhqIANBP2opAAA3AAAgA0GAAWokACAADwtByLbGAEE3IANBOGpB3LfGAEHMt8YAELIDAAtBEEEEEO8FAAuCAgEDfyMAQTBrIgIkACACQgA3AxggAiACQShqNgIgAkACQAJAAkACQCABIAJBGGoQpgIiAw0AAkACQCACKAIYIgMNAEEBIQQMAQsgA0EASA0EIANBARCYBSIERQ0FCyACQQA2AhAgAiADNgIMIAIgBDYCCCACIAJBCGo2AhggASACQRhqEEIiAQ0BIABBBGoiASACKQMINwIAIABBADYCACABQQhqIAJBCGpBCGooAgA2AgAMAgsgAEEBNgIAIAAgAzYCBAwBCyAAQQE2AgAgACABNgIEIAIoAgwiAEUNACACKAIIIABBARC4BQsgAkEwaiQADwsQkgQACyADQQEQ7wUAC/QBAQF/IwBBEGsiAiQAIAJBADYCDAJAAkACQAJAIAFBgAFJDQAgAUGAEEkNASABQYCABE8NAiACIAFBP3FBgAFyOgAOIAIgAUEMdkHgAXI6AAwgAiABQQZ2QT9xQYABcjoADUEDIQEMAwsgAiABOgAMQQEhAQwCCyACIAFBP3FBgAFyOgANIAIgAUEGdkHAAXI6AAxBAiEBDAELIAIgAUE/cUGAAXI6AA8gAiABQRJ2QfABcjoADCACIAFBBnZBP3FBgAFyOgAOIAIgAUEMdkE/cUGAAXI6AA1BBCEBCyAAIAJBDGogARCFASEBIAJBEGokACABC/wBAgF/AX4jAEEQayIDJAACQAJAAkAgAkHAAEcNACABLQA/IgJBIEkNAQsgA0EIahCbBiAAQQRqIAMpAwg3AgBBASEBDAELIAAgAS8AADsAASAAQQxqIAEpAAs3AAAgAEEDaiABQQJqLQAAOgAAIABBFGogAUETaikAADcAACAAQRxqIAFBG2opAAA3AAAgAEEkaiABQSNqKQAANwAAIABBLGogAUEraikAADcAACAAQTRqIAFBM2opAAA3AAAgAEE8aiABQTtqKAAANgAAIAEpAAMhBCAAQcAAaiACOgAAIABBBGogBDcAAEEAIQELIAAgAToAACADQRBqJAAL/AECAX8BfiMAQRBrIgMkAAJAAkACQCACQcAARw0AIAEtAD8iAkEgSQ0BCyADQQhqEJsGIABBBGogAykDCDcCAEEBIQEMAQsgACABLwAAOwABIABBDGogASkACzcAACAAQQNqIAFBAmotAAA6AAAgAEEUaiABQRNqKQAANwAAIABBHGogAUEbaikAADcAACAAQSRqIAFBI2opAAA3AAAgAEEsaiABQStqKQAANwAAIABBNGogAUEzaikAADcAACAAQTxqIAFBO2ooAAA2AAAgASkAAyEEIABBwABqIAI6AAAgAEEEaiAENwAAQQAhAQsgACABOgAAIANBEGokAAvyAQEEfyMAQSBrIgQkAAJAAkAgAEUNACAAKAIAIgVBf0YNASAAIAVBAWo2AgAgAUUNACABKAIAIgVBf0YNASABIAVBAWo2AgAgAkUNACACKAIAIgVBf0YNASACIAVBAWo2AgAgBCAAQQRqIAFBBGogAkEEaiADEI0BIAQoAgghBiAEKAIEIQcgBCAEKAIAIgU2AhggBCAHNgIUIAQgBTYCECAEIAUgBkE4bGo2AhwgBEEQahClASEFIAIgAigCAEF/ajYCACABIAEoAgBBf2o2AgAgACAAKAIAQX9qNgIAIARBIGokACAFDwsQ4wUACxDkBQAL9AEBAX8CQAJAAkACQAJAAkACQCABQf8BcQ0AIAMNAQsgA0ECSw0BIAFBgAFxIQQCQCADQQJHDQAgBA0DCyABQf8AcSADQQdsdCACQf//A3FyIgNB//8DSw0DIARFDQQgAEEBOwECIABBBGogAzsBACAAQQA7AQAPCyAAQQRqQQM2AgAMBAsgAEEEakEANgIAIABBCGpBfyADQQFqIgEgASADSRs2AgAgAEEBOwEADwsgAEEEakEENgIADAILIABBCGogAzYCACAAQQRqQQI2AgAMAQsgAEEAOwECIABBBGogAzsBACAAQQA7AQAPCyAAQQE7AQAL+QEBAn8jAEHAAGsiAiQAAkACQAJAIAFFDQAgASgCACIDQX9GDQEgASADQQFqNgIAIAIgAUEIahC0A0HAAEEBEJgFIgNFDQIgAyACKQAANwAAIANBOGogAkE4aikAADcAACADQTBqIAJBMGopAAA3AAAgA0EoaiACQShqKQAANwAAIANBIGogAkEgaikAADcAACADQRhqIAJBGGopAAA3AAAgA0EQaiACQRBqKQAANwAAIANBCGogAkEIaikAADcAACABIAEoAgBBf2o2AgAgAEHAADYCBCAAIAM2AgAgAkHAAGokAA8LEOMFAAsQ5AUAC0HAAEEBEO8FAAvzAQENfyMAQcAAayIBJAACQAJAIABFDQAgACgCACICQX9GDQEgACACQQFqNgIAIABBDGooAgBBBnQhAyAAKAIEIQQgAUE4aiEFIAFBMGohBiABQShqIQcgAUEgaiEIIAFBGGohCSABQRBqIQogAUEIaiELAkADQCADIgxFDQEgBUIANwMAIAZCADcDACAHQgA3AwAgCEIANwMAIAlCADcDACAKQgA3AwAgC0IANwMAIAFCADcDACAMQUBqIQMgBCABQcAAEIEGIQ0gBEHAAGohBCANDQALCyAAIAI2AgAgAUHAAGokACAMRQ8LEOMFAAsQ5AUAC/4BAgF/BH4jAEHwAGsiAyQAIANB4ABqIAEQmgUgA0HQAGogAykDYCIBIANB4ABqQQhqKQMAIgQgAhC1AyADQdAAakEIaikDACECIAMpA1AhBSADQcAAakKQzgAQmgUgA0EwaiAFIAIgAykDQCIGIANBwABqQQhqKQMAIgcQ+wMgA0EgaiADKQMwIANBMGpBCGopAwBCARD+AyADQRBqIAMpAyAgA0EgakEIaikDACAGIAcQ8AMgAyABIAQgAykDECICIANBEGpBCGopAwAiBRDxAyADKQMAIANBCGopAwAQlwQhASAAIAIgBRCXBDcDCCAAIAE3AwAgA0HwAGokAAvdAQIEfwF+IwBBIGsiAiQAAkAgAUEBaiIDIAFJDQAgAEEEaigCACIBQQF0IgQgAyAEIANLGyIDQQEgA0EBSxsiBa1CkBp+IgZCIIinRUEDdCEDIAanIQQCQAJAIAENAEEAIQEMAQsgAiAAKAIANgIQIAIgAa1CkBp+PgIUQQghAQsgAiABNgIYIAIgBCADIAJBEGoQhgMCQCACKAIARQ0AIAJBCGooAgAiAEUNASACKAIEIAAQ7wUACyACKAIEIQEgAEEEaiAFNgIAIAAgATYCACACQSBqJAAPCxCSBAAL5gEBAn8jAEHAAGsiAiQAAkACQAJAIABFDQAgACgCACIDQX9GDQEgACADQQFqNgIAIAJBCGogAEEEaiABEIYCIAAgACgCAEF/ajYCAEE8QQQQmAUiAEUNAiAAQQA2AgAgACACKQMINwIEIABBDGogAkEQaikDADcCACAAQRRqIAJBGGopAwA3AgAgAEEcaiACQSBqKQMANwIAIABBJGogAkEoaikDADcCACAAQSxqIAJBMGopAwA3AgAgAEE0aiACQThqKQMANwIAIAJBwABqJAAgAA8LEOMFAAsQ5AUAC0E8QQQQ7wUAC9sBAgV/AX4jAEEgayICJAACQCABQQFqIgMgAUkNAEEEIQQgAEEEaigCACIBQQF0IgUgAyAFIANLGyIDQQQgA0EESxsiBq1COH4iB0IgiKdFQQJ0IQMgB6chBQJAAkAgAQ0AQQAhBAwBCyACIAAoAgA2AhAgAiABrUI4fj4CFAsgAiAENgIYIAIgBSADIAJBEGoQhwMCQCACKAIARQ0AIAJBCGooAgAiAEUNASACKAIEIAAQ7wUACyACKAIEIQEgAEEEaiAGNgIAIAAgATYCACACQSBqJAAPCxCSBAAL2wECBH8BfiMAQSBrIgMkAAJAIAEgAmoiAiABSQ0AQQQhBCAAQQRqKAIAIgFBAXQiBSACIAUgAksbIgJBBCACQQRLGyIGrUIMfiIHQiCIp0VBAnQhAiAHpyEFAkACQCABDQBBACEEDAELIAMgACgCADYCECADIAGtQgx+PgIUCyADIAQ2AhggAyAFIAIgA0EQahCHAwJAIAMoAgBFDQAgA0EIaigCACIARQ0BIAMoAgQgABDvBQALIAMoAgQhASAAQQRqIAY2AgAgACABNgIAIANBIGokAA8LEJIEAAvbAQIFfwF+IwBBIGsiAiQAAkAgAUEBaiIDIAFJDQBBBCEEIABBBGooAgAiAUEBdCIFIAMgBSADSxsiA0EEIANBBEsbIgatQhx+IgdCIIinRUECdCEDIAenIQUCQAJAIAENAEEAIQQMAQsgAiAAKAIANgIQIAIgAa1CHH4+AhQLIAIgBDYCGCACIAUgAyACQRBqEIoDAkAgAigCAEUNACACQQhqKAIAIgBFDQEgAigCBCAAEO8FAAsgAigCBCEBIABBBGogBjYCACAAIAE2AgAgAkEgaiQADwsQkgQAC/ABAgJ/AX4jAEHAAGsiAiQAIAJBEGpBCGoiAyAAQQhqKQIANwMAIAIgACkCADcDECACQRBqIAFBAWoQpgEgAkEwaiACQRBqIAFBBhBGIAMgAkEwakEIaiIBKQMANwMAIAIgAikDMDcDECACQSBqIAJBEGpBABCRBAJAAkAgAigCIEEGRw0AIAIgAkEQahD9ASACKQMAp0UNASACKQMIIQQgAkHAAGokACAEDwsgASACQSBqQQhqKQMANwMAIAIgAikDIDcDMEGPmMAAQSsgAkEwakG8mMAAQYyZwAAQsgMAC0Hkl8AAQStBnJnAABCEBAAL8AECAn8BfiMAQcAAayICJAAgAkEQakEIaiIDIABBCGopAgA3AwAgAiAAKQIANwMQIAJBEGogAUEBahCmASACQTBqIAJBEGogAUEFEEYgAyACQTBqQQhqIgEpAwA3AwAgAiACKQMwNwMQIAJBIGogAkEQakEAEJEEAkACQCACKAIgQQZHDQAgAiACQRBqEP0BIAIpAwCnRQ0BIAIpAwghBCACQcAAaiQAIAQPCyABIAJBIGpBCGopAwA3AwAgAiACKQMgNwMwQY+YwABBKyACQTBqQbyYwABBrJnAABCyAwALQeSXwABBK0G8mcAAEIQEAAvwAQEEfyMAQdADayIDJAAgA0HoAWogASACEGECQAJAIAMoAugBIgQNACADQfABaigCACEFIANBDGogA0H0AWpB3AEQ/wUaDAELIAMoAuwBIANB8AFqKAIAEPMCIQYLIANB6AFqIANBDGpB3AEQ/wUaAkAgAkUNACABIAJBARC4BQsCQAJAAkAgBEUNAEEBIQEMAQtB6AFBCBCYBSICRQ0BIAIgBTYCCEEAIQYgAkEANgIAIAJBDGogA0HoAWpB3AEQ/wUaQQAhAQsgACABNgIIIAAgBjYCBCAAIAI2AgAgA0HQA2okAA8LQegBQQgQ7wUAC/wBAQF/IwBBIGsiAiQAIAJBCGogAUHOq8EAQQUQvQQCQAJAIAAoAgAiAEEASA0AIAIgADYCECACQQhqQZiswQBBCCACQRBqQaCswQAQ3wEaDAELAkAgAEGAgICAeHMiAUELSw0AIAIgAUECdCIBQdSwwQBqKAIANgIUIAIgAUGksMEAaigCADYCECACIAA2AhwgAkEIakHwq8EAQQ0gAkEcakHgq8EAEN8BGiACQQhqQf2rwQBBCyACQRBqQYiswQAQ3wEaDAELIAIgADYCECACQQhqQdOrwQBBDCACQRBqQeCrwQAQ3wEaCyACQQhqELMDIQAgAkEgaiQAIAAL9QEBAn8jAEEwayICJAACQAJAIAAoAgAiAEEASA0AIAIgADYCLCACQRxqQQE2AgAgAkIBNwIMIAJB1KzBADYCCCACQdoANgIkIAIgAkEgajYCGCACIAJBLGo2AiAgASACQQhqEMkDIQAMAQsCQCAAQYCAgIB4cyIDQQtLDQAgASADQQJ0IgBBhLHBAGooAgAgAEHUsMEAaigCABD6BCEADAELIAJBHGpBATYCACACQgE3AgwgAkHArMEANgIIIAJB2wA2AiQgAiAANgIsIAIgAkEgajYCGCACIAJBLGo2AiAgASACQQhqEMkDIQALIAJBMGokACAAC9kBAQV/IwBBIGsiAiQAAkAgAUEBaiIDIAFJDQBBBCEEIABBBGooAgAiBUEBdCIBIAMgASADSxsiAUEEIAFBBEsbIgFB/////wFxIAFGQQJ0IQMgAUEDdCEGAkACQCAFDQBBACEEDAELIAIgBUEDdDYCFCACIAAoAgA2AhALIAIgBDYCGCACIAYgAyACQRBqEIcDAkAgAigCAEUNACACQQhqKAIAIgBFDQEgAigCBCAAEO8FAAsgAigCBCEDIABBBGogATYCACAAIAM2AgAgAkEgaiQADwsQkgQAC/8BAQN/IwBBIGsiBSQAQQEhBkEAQQAoAvC/RiIHQQFqNgLwv0YCQAJAQQAtAMDDRkUNAEEAKALEw0ZBAWohBgwBC0EAQQE6AMDDRgtBACAGNgLEw0YCQAJAIAdBAEgNACAGQQJLDQAgBSAEOgAYIAUgAzYCFCAFIAI2AhBBACgC5L9GIgdBf0wNAEEAIAdBAWoiBzYC5L9GAkBBACgC7L9GIgJFDQBBACgC6L9GIQcgBSAAIAEoAhARBgAgBSAFKQMANwMIIAcgBUEIaiACKAIUEQYAQQAoAuS/RiEHC0EAIAdBf2o2AuS/RiAGQQFLDQAgBA0BCwALIAAgARDVBAAL7gEBAX8jAEEwayICJAACQAJAIAAtAARFDQAgAiAAQQVqLQAAOgAHIAJBFGpB2wA2AgAgAiAANgIQIAJB+AA2AgwgAUEcaigCACEAIAIgAkEHajYCCCABKAIYIQEgAkEsakECNgIAIAJCAjcCHCACQdyVwgA2AhggAiACQQhqNgIoIAEgACACQRhqEJYBIQAMAQsgAkHbADYCDCACIAA2AgggAUEcaigCACEAIAEoAhghASACQSxqQQE2AgAgAkIBNwIcIAJBqJXCADYCGCACIAJBCGo2AiggASAAIAJBGGoQlgEhAAsgAkEwaiQAIAAL/AEBAn8jAEEQayICJAAgASgCGEH5p8IAQQkgAUEcaigCACgCDBEKACEDIAJBADoABSACIAM6AAQgAiABNgIAIAIgADYCDCACQYKowgBBCyACQQxqQeSnwgAQ3wEhASACIABBBGo2AgwgAUGNqMIAQQkgAkEMakGYqMIAEN8BGiACLQAEIQECQCACLQAFRQ0AIAFB/wFxIQBBASEBIAANAAJAIAIoAgAiAS0AAEEEcQ0AIAEoAhhB84/CAEECIAFBHGooAgAoAgwRCgAhAQwBCyABKAIYQeWPwgBBASABQRxqKAIAKAIMEQoAIQELIAJBEGokACABQf8BcUEARwvhAQEFfyMAQSBrIgIkAAJAAkACQCABRQ0AIAEoAgAiA0F/Rg0BIAEgA0EBajYCACACQRhqIgQgAUEcaikAADcDACACQRBqIgUgAUEUaikAADcDACACQQhqIgYgAUEMaikAADcDACACIAEpAAQ3AwBBIEEBEJgFIgNFDQIgAyACKQMANwAAIANBGGogBCkDADcAACADQRBqIAUpAwA3AAAgA0EIaiAGKQMANwAAIAEgASgCAEF/ajYCACAAQSA2AgQgACADNgIAIAJBIGokAA8LEOMFAAsQ5AUAC0EgQQEQ7wUAC94BAQV/AkACQCAARQ0AIAAoAgANASAAQQA2AgAgACgCBCEBIAAoAgghAiAAKAIQIQMgACgCFCEEIAAoAhghBSAAQcAAQQQQuAUCQCACRQ0AIAEgAkEFdEEBELgFCwJAIAVFDQAgBUEcbCECIAMhAANAAkAgAEEEaigCACIFRQ0AIAAoAgAgBUEBELgFCwJAIABBEGooAgAiBUUNACAAQQxqKAIAIAVBARC4BQsgAEEcaiEAIAJBZGoiAg0ACwsCQCAERQ0AIAMgBK1CHH6nQQQQuAULDwsQ4wUACxDkBQAL1QEBBH8jAEEgayIDJAACQCABIAJqIgIgAUkNAEEBIQQgAEEEaigCACIFQQF0IgEgAiABIAJLGyIBQQQgAUEESxsiAUH///8/cSABRiECIAFBBXQhBgJAAkAgBQ0AQQAhBAwBCyADIAVBBXQ2AhQgAyAAKAIANgIQCyADIAQ2AhggAyAGIAIgA0EQahCHAwJAIAMoAgBFDQAgA0EIaigCACIARQ0BIAMoAgQgABDvBQALIAMoAgQhAiAAQQRqIAE2AgAgACACNgIAIANBIGokAA8LEJIEAAvvAQECfyMAQRBrIgIkACACIAEoAhhBpqfCAEEPIAFBHGooAgAoAgwRCgA6AAggAiABNgIAIAJBADoACSACQQA2AgQgAiAANgIMIAIgAkEMakG4p8IAEI8CGiACLQAIIQECQCACKAIEIgNFDQAgAUH/AXEhAEEBIQEgAA0AIAIoAgAhAAJAIANBAUcNACACLQAJQf8BcUUNACAALQAAQQRxDQBBASEBIAAoAhhB+I/CAEEBIABBHGooAgAoAgwRCgANAQsgACgCGEG0jMIAQQEgAEEcaigCACgCDBEKACEBCyACQRBqJAAgAUH/AXFBAEcL7wEBAn8jAEEQayICJAAgAiABKAIYQcinwgBBESABQRxqKAIAKAIMEQoAOgAIIAIgATYCACACQQA6AAkgAkEANgIEIAIgADYCDCACIAJBDGpBuKfCABCPAhogAi0ACCEBAkAgAigCBCIDRQ0AIAFB/wFxIQBBASEBIAANACACKAIAIQACQCADQQFHDQAgAi0ACUH/AXFFDQAgAC0AAEEEcQ0AQQEhASAAKAIYQfiPwgBBASAAQRxqKAIAKAIMEQoADQELIAAoAhhBtIzCAEEBIABBHGooAgAoAgwRCgAhAQsgAkEQaiQAIAFB/wFxQQBHC9UBAQR/IwBBIGsiAiQAAkAgAUEBaiIDIAFJDQAgAEEEaigCACIEQQF0IgEgAyABIANLGyIBQQQgAUEESxsiAUH///8fcSABRiEDIAFBBnQhBQJAAkAgBA0AQQAhBAwBCyACIARBBnQ2AhQgAiAAKAIANgIQQQEhBAsgAiAENgIYIAIgBSADIAJBEGoQigMCQCACKAIARQ0AIAJBCGooAgAiAEUNASACKAIEIAAQ7wUACyACKAIEIQMgAEEEaiABNgIAIAAgAzYCACACQSBqJAAPCxCSBAAL1QEBBH8jAEEgayICJAACQCABQQFqIgMgAUkNACAAQQRqKAIAIgRBAXQiASADIAEgA0sbIgFBBCABQQRLGyIBQf///z9xIAFGIQMgAUEFdCEFAkACQCAEDQBBACEEDAELIAIgBEEFdDYCFCACIAAoAgA2AhBBASEECyACIAQ2AhggAiAFIAMgAkEQahCKAwJAIAIoAgBFDQAgAkEIaigCACIARQ0BIAIoAgQgABDvBQALIAIoAgQhAyAAQQRqIAE2AgAgACADNgIAIAJBIGokAA8LEJIEAAvvAQIDfwJ+IwBBEGsiAiQAAkACQCABvSIFQv///////////wCDv0QAAAAAAADwf2NFDQAgBUL/////////B4MhBgJAAkACQAJAIAVCNIinQf8PcSIDDQAgBlANAQsgAkEANgIMIAIgBT4CBCACIAZCIIinIgQ2AgggAw0BQc53IQMMAgsgAEEBNgIAIABBCGpCADcCACAAQRBqQQA2AgAgACAFQiCIp0GAgICAeHE2AgQMAwsgAiAEQYCAwAByNgIIIANBzXdqIQMLIAAgAkEEaiADIAVCf1VBAUEBEEgMAQsgAEEANgIACyACQRBqJAAL5QEBA38jAEGgAWsiAyQAENwGIANB0ABqIAEgAhCoAwJAAkAgAygCUCIEDQAgAygCVCEFIANBDGogA0HYAGpBxAAQ/wUaDAELIAMoAlQQsgIhBQsgA0HQAGogA0EMakHEABD/BRoCQCACRQ0AIAEgAkEBELgFCwJAAkACQCAERQ0AQQEhAQwBC0HMAEEEEJgFIgJFDQEgAiAFNgIEQQAhBSACQQA2AgAgAkEIaiADQdAAakHEABD/BRpBACEBCyAAIAE2AgggACAFNgIEIAAgAjYCACADQaABaiQADwtBzABBBBDvBQAL1AECA38DfiACIAFrIgNBkBpuIQQCQAJAAkAgAw0AQQQhAwwBCyAEQSRsIgVBBBCYBSIDRQ0BCyAAIAQ2AgQgACADNgIAQQAhBAJAIAEgAkYNAANAIAFBCGopAgAhBiABQRBqKQIAIQcgASkCACEIIANBGGogAUEYaikCADcCACADQRBqIAc3AgAgA0EIaiAGNwIAIAMgCDcCACADQSBqIAFBIGo2AgAgA0EkaiEDIARBAWohBCABQZAaaiIBIAJHDQALCyAAIAQ2AggPCyAFQQQQ7wUAC/MBAQN/IwBB0ABrIgEkACABQQA2AgggAUIBNwMAIAFBEGogAUHszMAAELwEAkACQAJAIABFDQAgAUHMAGpBADYCACABQcjewAA2AkggAUIBNwI8IAFBoOHAADYCOCABQRBqIAFBOGoQyQNFDQEMAgsgAUHMAGpBADYCACABQcjewAA2AkggAUIBNwI8IAFB0OHAADYCOCABQRBqIAFBOGoQyQMNAQsgASgCBCEAIAEoAgAiAiABKAIIEAAhAwJAIABFDQAgAiAAQQEQuAULIAFB0ABqJAAgAw8LQYTNwABBNyABQThqQbDOwABBiM7AABCyAwAL2gEBBH8gAC0AACECAkAgASgCACIBQQRqIgMoAgAgAUEIaiIEKAIAIgVHDQAgASAFQQEQ5QIgBCgCACEFCyABKAIAIAVqIAI6AAAgBCAFQQFqIgU2AgAgAC0AASEEAkAgAygCACAFRw0AIAEgBUEBEOUCIAFBCGooAgAhBQsgASgCACAFaiAEOgAAIAFBCGoiBCAFQQFqIgU2AgAgAC0AAiEAAkAgAUEEaigCACAFRw0AIAEgBUEBEOUCIAQoAgAhBQsgBCAFQQFqNgIAIAEoAgAgBWogADoAAEEAC88BAQF/IwBBMGsiAiQAAkACQCABRQ0AIAEoAgANASABQQA2AgAgAkEIakEIaiABQQhqKQIANwMAIAJBCGpBEGogAUEQaikCADcDACACQQhqQRhqIAFBGGopAgA3AwAgAkEIakEgaiABQSBqKAIANgIAIAIgASkCADcDCCAAIAIpAgw3AAAgAEEIaiACQRRqKQIANwAAIABBEGogAkEcaikCADcAACAAQRhqIAJBJGopAgA3AAAgAUEkQQQQuAUgAkEwaiQADwsQ4wUACxDkBQAL2gEBBH8gAC0AACECAkAgASgCACIBQQRqIgMoAgAgAUEIaiIEKAIAIgVHDQAgASAFQQEQ7wIgBCgCACEFCyABKAIAIAVqIAI6AAAgBCAFQQFqIgU2AgAgAC0AASEEAkAgAygCACAFRw0AIAEgBUEBEO8CIAFBCGooAgAhBQsgASgCACAFaiAEOgAAIAFBCGoiBCAFQQFqIgU2AgAgAC0AAiEAAkAgAUEEaigCACAFRw0AIAEgBUEBEO8CIAQoAgAhBQsgBCAFQQFqNgIAIAEoAgAgBWogADoAAEEAC9QBAQN/IwBBEGsiAiQAAkACQAJAAkAgAUEEaigCACIDDQBBASEEDAELIANBAEgNASADQQEQmQUiBEUNAgsgAiABKAIAIAMgBCADIAEoAggQfgJAAkAgAigCAA0AIAAgBDYCBCAAQQhqIAM2AgAgAEEMaiADIAIoAgQiASADIAFJGzYCAEEAIQEMAQsgACACKQIENwIEIABBDGogAkEMaigCADYCAEEBIQEgA0UNACAEIANBARC4BQsgACABNgIAIAJBEGokAA8LEJIEAAsgA0EBEO8FAAvfAQEEfyMAQdADayIAJAAgAEH4AWoiAUIANwMAIABB8AFqIgJCADcDACAAQeABakEIaiIDQgA3AwAgAEIANwPgASAAQcgDaiAAQeABakEgEKEDIAAgAEHgAWoQ2wEgAEHYAWogASkDADcDACAAQdABaiACKQMANwMAIABByAFqIAMpAwA3AwAgACAAKQPgATcDwAEgAEHgAWpBBGogAEHgARD/BRoCQEHoAUEIEJgFIgENAEHoAUEIEO8FAAsgAUEANgIAIAFBBGogAEHgAWpB5AEQ/wUaIABB0ANqJAAgAQvEAQECfyMAQdAAayIBJAACQAJAIABFDQAgACgCACICQX9GDQEgACACQQFqNgIAIAFBCGogAEEIahCSBSABQRBqIAEoAgggASgCDBC/AyAAIAAoAgBBf2o2AgAgAUEwakEYaiABQRBqQRhqKQAANwMAIAFBMGpBEGogAUEQakEQaikAADcDACABQTBqQQhqIAFBEGpBCGopAAA3AwAgASABKQAQNwMwIAFBMGoQ5AMhACABQdAAaiQAIAAPCxDjBQALEOQFAAviAQAgAEEAOgAAIABBADoAASAAQQA6AAIgAEEAOgADIABBADoABCAAQQA6AAUgAEEAOgAGIABBADoAByAAQQA6AAggAEEAOgAJIABBADoACiAAQQA6AAsgAEEAOgAMIABBADoADSAAQQA6AA4gAEEAOgAPIABBADoAECAAQQA6ABEgAEEAOgASIABBADoAEyAAQQA6ABQgAEEAOgAVIABBADoAFiAAQQA6ABcgAEEAOgAYIABBADoAGSAAQQA6ABogAEEAOgAbIABBADoAHCAAQQA6AB0gAEEAOgAeIABBADoAHwviAQAgAEEAOgAAIABBADoAASAAQQA6AAIgAEEAOgADIABBADoABCAAQQA6AAUgAEEAOgAGIABBADoAByAAQQA6AAggAEEAOgAJIABBADoACiAAQQA6AAsgAEEAOgAMIABBADoADSAAQQA6AA4gAEEAOgAPIABBADoAECAAQQA6ABEgAEEAOgASIABBADoAEyAAQQA6ABQgAEEAOgAVIABBADoAFiAAQQA6ABcgAEEAOgAYIABBADoAGSAAQQA6ABogAEEAOgAbIABBADoAHCAAQQA6AB0gAEEAOgAeIABBADoAHwvvAQEBfyMAQRBrIgIkAAJAAkACQAJAAkACQAJAAkAgACgCAA4GAAECAwQFAAsgAiABQezKwQBBCxClBCACIABBBGo2AgwgAiACQQxqQfDJwQAQjwIaDAULIAFB0crBAEEbEPoEIQAMBQsgAUG1ysEAQRwQ+gQhAAwECyABQazKwQBBCRD6BCEADAMLIAIgAUGAysEAQRwQpQQgAiAAQQRqNgIMIAIgAkEMakGcysEAEI8CGgwBCyACIAFB5MnBAEEMEKUEIAIgAEEEajYCDCACIAJBDGpB8MnBABCPAhoLIAIQoAMhAAsgAkEQaiQAIAALxgEBBH8jAEEgayIBJAACQAJAAkAgAEUNACAAKAIAQX9GDQEgAUEYaiICIABBN2opAAA3AwAgAUEQaiIDIABBL2opAAA3AwAgAUEIaiIEIABBJ2opAAA3AwAgASAAQR9qKQAANwMAQSRBBBCYBSIARQ0CIABBADYCACAAIAEpAwA3AAQgAEEMaiAEKQMANwAAIABBFGogAykDADcAACAAQRxqIAIpAwA3AAAgAUEgaiQAIAAPCxDjBQALEOQFAAtBJEEEEO8FAAvVAQEDfyMAQTBrIgIkACABKAIMIQMgAkEAOgAHIAJBIGpBCGogAUEIaigCADYCACACIAEpAgA3AyAgAkEIaiACQSBqIAJBB2oQkAEgACACKQMINwIAIAMgAygCCEF/ajYCCAJAAkACQCACLQAHRQ0AIAMoAgQiAUUNASADKAIAIgBFDQIgAyABKAJMIgQ2AgQgAyAAQX9qNgIAIARBADYCACABQfwAQQQQuAULIAJBMGokAA8LQYyqwABBK0H0q8AAEIQEAAtB7KHAAEEhQZCiwAAQhAQAC8ABAQN/IwBBIGsiAiQAAkAgAUEBaiIDIAFJDQAgAEEEaigCACIEQQF0IgEgAyABIANLGyIBQQggAUEISxshAQJAAkAgBA0AQQAhAwwBCyACIAQ2AhQgAiAAKAIANgIQQQEhAwsgAiADNgIYIAIgAUEBIAJBEGoQhwMCQCACKAIARQ0AIAJBCGooAgAiAEUNASACKAIEIAAQ7wUACyACKAIEIQMgAEEEaiABNgIAIAAgAzYCACACQSBqJAAPCxCSBAALwAEBAn8jAEEgayIDJAACQCABIAJqIgIgAUkNACAAQQRqKAIAIgRBAXQiASACIAEgAksbIgFBCCABQQhLGyEBAkACQCAEDQBBACECDAELIAMgBDYCFCADIAAoAgA2AhBBASECCyADIAI2AhggAyABQQEgA0EQahCHAwJAIAMoAgBFDQAgA0EIaigCACIARQ0BIAMoAgQgABDvBQALIAMoAgQhAiAAQQRqIAE2AgAgACACNgIAIANBIGokAA8LEJIEAAvQAQEEfyMAQcAAayICJAACQCABKAIAIgNBACgCuL9GSw0AIAJBLGpBATYCACACQgE3AhwgAkGg58AANgIYIAJBPDYCNCACIAFBDGo2AjwgA0ECdEHM58AAaigCACEDIAIgAkEwajYCKCACIAJBPGo2AjAgAkEIaiACQRhqELEBIAIoAgwhASACKAIIIgQgAigCEBAAIQUCQCABRQ0AIAQgAUEBELgFCyACIAU2AhggAkEYaiADEQIAIAIoAhgiAUEkSQ0AIAEQAwsgAkHAAGokAAvAAQEDfyMAQSBrIgIkAAJAIAFBAWoiAyABSQ0AIABBBGooAgAiBEEBdCIBIAMgASADSxsiAUEIIAFBCEsbIQECQAJAIAQNAEEAIQMMAQsgAiAENgIUIAIgACgCADYCEEEBIQMLIAIgAzYCGCACIAFBASACQRBqEIgDAkAgAigCAEUNACACQQhqKAIAIgBFDQEgAigCBCAAEO8FAAsgAigCBCEDIABBBGogATYCACAAIAM2AgAgAkEgaiQADwsQkgQAC8ABAQJ/IwBBIGsiAyQAAkAgASACaiICIAFJDQAgAEEEaigCACIEQQF0IgEgAiABIAJLGyIBQQggAUEISxshAQJAAkAgBA0AQQAhAgwBCyADIAQ2AhQgAyAAKAIANgIQQQEhAgsgAyACNgIYIAMgAUEBIANBEGoQiAMCQCADKAIARQ0AIANBCGooAgAiAEUNASADKAIEIAAQ7wUACyADKAIEIQIgAEEEaiABNgIAIAAgAjYCACADQSBqJAAPCxCSBAALyQECAn8CfgJAAkAgAkF/aiIEQQBODQBBASECDAELIAFBmbPmzAE2AgggASABNQIEIgZCgICAgOAAhEIKgCIHPgIEIAEgBiAHQnZ+fEIghiABKAIAIgKthEIKgCIGpyIFNgIAAkAgAiAFQXZsaiIFQQVLDQBBACECIAVBBUcNASADDQAgBkIBg1ANAQsgASAGQv////8PgyAHQiCGhEIBfCIHNwIAQQAhAiAHQgBSDQAgAUGas+bMATYCCAsgACAENgIEIAAgAjYCAAvAAQECfyMAQSBrIgMkAAJAIAEgAmoiAiABSQ0AIABBBGooAgAiBEEBdCIBIAIgASACSxsiAUEIIAFBCEsbIQECQAJAIAQNAEEAIQIMAQsgAyAENgIUIAMgACgCADYCEEEBIQILIAMgAjYCGCADIAFBASADQRBqEIQDAkAgAygCAEUNACADQQhqKAIAIgBFDQEgAygCBCAAEO8FAAsgAygCBCECIABBBGogATYCACAAIAI2AgAgA0EgaiQADwsQkgQAC8ABAQN/IwBBIGsiAiQAAkAgAUEBaiIDIAFJDQAgAEEEaigCACIEQQF0IgEgAyABIANLGyIBQQggAUEISxshAQJAAkAgBA0AQQAhAwwBCyACIAQ2AhQgAiAAKAIANgIQQQEhAwsgAiADNgIYIAIgAUEBIAJBEGoQhAMCQCACKAIARQ0AIAJBCGooAgAiAEUNASACKAIEIAAQ7wUACyACKAIEIQMgAEEEaiABNgIAIAAgAzYCACACQSBqJAAPCxCSBAALwAEBAn8jAEEgayIDJAACQCABIAJqIgIgAUkNACAAQQRqKAIAIgRBAXQiASACIAEgAksbIgFBCCABQQhLGyEBAkACQCAEDQBBACECDAELIAMgBDYCFCADIAAoAgA2AhBBASECCyADIAI2AhggAyABQQEgA0EQahCFAwJAIAMoAgBFDQAgA0EIaigCACIARQ0BIAMoAgQgABDvBQALIAMoAgQhAiAAQQRqIAE2AgAgACACNgIAIANBIGokAA8LEJIEAAvAAQEDfyMAQSBrIgIkAAJAIAFBAWoiAyABSQ0AIABBBGooAgAiBEEBdCIBIAMgASADSxsiAUEIIAFBCEsbIQECQAJAIAQNAEEAIQMMAQsgAiAENgIUIAIgACgCADYCEEEBIQMLIAIgAzYCGCACIAFBASACQRBqEIUDAkAgAigCAEUNACACQQhqKAIAIgBFDQEgAigCBCAAEO8FAAsgAigCBCEDIABBBGogATYCACAAIAM2AgAgAkEgaiQADwsQkgQAC8ABAQN/IwBBIGsiAiQAAkAgAUEBaiIDIAFJDQAgAEEEaigCACIEQQF0IgEgAyABIANLGyIBQQggAUEISxshAQJAAkAgBA0AQQAhAwwBCyACIAQ2AhQgAiAAKAIANgIQQQEhAwsgAiADNgIYIAIgAUEBIAJBEGoQigMCQCACKAIARQ0AIAJBCGooAgAiAEUNASACKAIEIAAQ7wUACyACKAIEIQMgAEEEaiABNgIAIAAgAzYCACACQSBqJAAPCxCSBAALwAEBAn8jAEEgayIDJAACQCABIAJqIgIgAUkNACAAQQRqKAIAIgRBAXQiASACIAEgAksbIgFBCCABQQhLGyEBAkACQCAEDQBBACECDAELIAMgBDYCFCADIAAoAgA2AhBBASECCyADIAI2AhggAyABQQEgA0EQahCKAwJAIAMoAgBFDQAgA0EIaigCACIARQ0BIAMoAgQgABDvBQALIAMoAgQhAiAAQQRqIAE2AgAgACACNgIAIANBIGokAA8LEJIEAAvAAQEEfwJAAkAgAEUNACAAKAIADQEgAEEANgIAIAAoAgQhASAAKAIIIQIgACgCDCEDIABBEEEEELgFAkAgA0UNACADQThsIQMgASEAA0ACQCAAQQRqKAIAIgRFDQAgACgCACAErUIifqdBARC4BQsCQCAAQRBqKAIA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BkJ2fiAHfEIghkIKgCAGQiCGfEIBfCIHPgIAIAFBBGogB0IgiD4CAAsgACACNgIEIAAgAzYCAAu5AQEBfyMAQdAAayICJAAgAkEANgIgIAJCATcDGCACQShqIAJBGGpBsLbGABC8BAJAAkAgACABIAJBKGoQ+gUNACACQRNqIAJBGGpBCGooAgA2AAAgAiACKQMYNwALQRBBBBCYBSIARQ0BIABBCDoAACAAIAIpAAg3AAEgAEEIaiACQQ9qKQAANwAAIAJB0ABqJAAgAA8LQci2xgBBNyACQQhqQdy3xgBBzLfGABCyAwALQRBBBBDvBQALuwECAX8BfiMAQcAAayICJAAgAkEIakEIaiAAQQhqKQIANwMAIAIgACkCADcDCCACQRhqQQhqIAFBCGopAgA3AwAgAiABKQIANwMYIAJBKGogAkEIaiACQRhqEDgCQCACKAIoIgFFDQACQAJAIAFBf2oOAgABAAtBtMHBAEETQcjBwQAQ0wQAC0GUwcEAQRBBpMHBABDTBAALIAIpAiwhAyAAIAJBNGopAgA3AgggACADNwIAIAJBwABqJAALxAEBAX8jAEEgayICJAACQAJAAkACQCAALQAADgMAAQIACyACQRxqQQA2AgAgAkHgm8AANgIYIAJCATcCDCACQeScwAA2AgggASACQQhqEMkDIQAMAgsgAkEcakEANgIAIAJB4JvAADYCGCACQgE3AgwgAkGsnMAANgIIIAEgAkEIahDJAyEADAELIAJBHGpBADYCACACQeCbwAA2AhggAkIBNwIMIAJB+JvAADYCCCABIAJBCGoQyQMhAAsgAkEgaiQAIAALrgEBBH8jAEEgayICJAACQAJAIABBBGooAgAiAyABSQ0AAkAgA0UNACAAKAIAIQQCQAJAIAENAEEBIQUgBCADQQEQuAUMAQsgBCADQQEgARCEBSIFRQ0DCyAAIAU2AgAgAEEEaiABNgIACyACQSBqJAAPCyACQRxqQQA2AgAgAkHwp8QANgIYIAJCATcCDCACQeCoxAA2AgggAkEIakHoqMQAEJMEAAsgAUEBEO8FAAu0AQICfwF+IwBBIGsiAiQAENwGIAJBEGogARCCAgJAIAIoAhANACACQQhqIAJBHGooAgAiATYCACACIAIpAhQiBDcDACACQRBqQQhqIAE2AgAgAiAENwMQAkAgAigCFCABTQ0AIAJBEGogARCCAyACKAIYIQELIAIoAhAhAyAAIAE2AgQgACADNgIAIAJBIGokAA8LIAIgAigCFDYCAEHMnMYAQSsgAkG8nMYAQfyfxgAQsgMAC6sBAQJ/AkACQAJAAkACQAJAAkAgAkUNAEEBIQQgAUEASA0BIAMoAghFDQMgAygCBCIFDQIgAQ0EIAIhAwwFCyAAIAE2AgRBASEEC0EAIQEMBAsgAygCACAFIAIgARCEBSEDDAILIAENACACIQMMAQsgASACEJgFIQMLAkAgA0UNACAAIAM2AgRBACEEDAELIAAgATYCBCACIQELIAAgBDYCACAAQQhqIAE2AgALqwEBAn8CQAJAAkACQAJAAkACQCACRQ0AQQEhBCABQQBIDQEgAygCCEUNAyADKAIEIgUNAiABDQQgAiEDDAULIAAgATYCBEEBIQQLQQAhAQwECyADKAIAIAUgAiABEIQFIQMMAgsgAQ0AIAIhAwwBCyABIAIQmAUhAwsCQCADRQ0AIAAgAzYCBEEAIQQMAQsgACABNgIEIAIhAQsgACAENgIAIABBCGogATYCAAupAQECfwJAAkACQAJAAkACQAJAAkACQCACRQ0AQQEhBCABQQBIDQEgAygCCEUNAyADKAIEIgUNAiABDQQMBgsgACABNgIEQQEhBAtBACEBDAYLIAMoAgAgBSACIAEQhAUiA0UNAgwECyABRQ0CCyABIAIQmAUiAw0CCyAAIAE2AgQgAiEBDAILIAIhAwsgACADNgIEQQAhBAsgACAENgIAIABBCGogATYCAAupAQECfwJAAkACQAJAAkACQAJAAkACQCACRQ0AQQEhBCABQQBIDQEgAygCCEUNAyADKAIEIgUNAiABDQQMBgsgACABNgIEQQEhBAtBACEBDAYLIAMoAgAgBSACIAEQhAUiA0UNAgwECyABRQ0CCyABIAIQmAUiAw0CCyAAIAE2AgQgAiEBDAILIAIhAwsgACADNgIEQQAhBAsgACAENgIAIABBCGogATYCAAupAQECfwJAAkACQAJAAkACQAJAAkACQCACRQ0AQQEhBCABQQBIDQEgAygCCEUNAyADKAIEIgUNAiABDQQMBgsgACABNgIEQQEhBAtBACEBDAYLIAMoAgAgBSACIAEQhAUiA0UNAgwECyABRQ0CCyABIAIQmAUiAw0CCyAAIAE2AgQgAiEBDAILIAIhAwsgACADNgIEQQAhBAsgACAENgIAIABBCGogATYCAAukAQEBfyMAQRBrIgYkAAJAIAFFDQAgBiABIAMgBCAFIAIoAhARDQAgBigCACECAkACQCAGKAIEIgMgBigCCCIBSw0AIAIhAwwBCyADQQJ0IQQCQCABQQJ0IgVFDQAgAiAEQQQgBRCEBSIDDQEgBUEEEO8FAAtBBCEDIAIgBEEEELgFCyAAIAE2AgQgACADNgIAIAZBEGokAA8LQbi2wQBBMBDiBQALqQEBAn8CQAJAAkACQAJAAkACQAJAAkAgAkUNAEEBIQQgAUEASA0BIAMoAghFDQMgAygCBCIFDQIgAQ0EDAYLIAAgATYCBEEBIQQLQQAhAQwGCyADKAIAIAUgAiABEIQFIgNFDQIMBAsgAUUNAgsgASACEJgFIgMNAgsgACABNgIEIAIhAQwCCyACIQMLIAAgAzYCBEEAIQQLIAAgBDYCACAAQQhqIAE2AgALqgEBAX8jAEEwayIDJAAgA0EYaiACELkEAkACQCADKAIYRQ0AIAAgAykCHDcCACAAQQhqIANBJGopAgA3AgAgA0EIaiAAIAEtAEAQkQQgAygCCEEGRw0BIANBMGokAA8LQbCKwABBK0H4i8AAEIQEAAsgA0EYakEIaiADQQhqQQhqKQMANwMAIAMgAykDCDcDGEHbisAAQSsgA0EYakGIi8AAQZSMwAAQsgMAC6oBAQF/IwBBMGsiAiQAIAJBGGogASkDaBC5BAJAAkAgAigCGEUNACAAIAIpAhw3AgAgAEEIaiACQSRqKQIANwIAIAJBCGogAEEJEJEEIAIoAghBBkcNASACQTBqJAAPC0GwisAAQStB+IvAABCEBAALIAJBGGpBCGogAkEIakEIaikDADcDACACIAIpAwg3AxhB24rAAEErIAJBGGpBiIvAAEGkjMAAELIDAAuZAQEDfyMAQYABayICJAAgAC0AACEDQQAhAANAIAIgAGpB/wBqQTBB1wAgA0EPcSIEQQpJGyAEajoAACAAQX9qIQAgA0H/AXEiBEEEdiEDIARBD0sNAAsCQCAAQYABaiIDQYEBSQ0AIANBgAEgABD0BQALIAFBAUGNkMIAQQIgAiAAakGAAWpBACAAaxByIQAgAkGAAWokACAAC5gBAQN/IwBBgAFrIgIkACAALQAAIQNBACEAA0AgAiAAakH/AGpBMEE3IANBD3EiBEEKSRsgBGo6AAAgAEF/aiEAIANB/wFxIgRBBHYhAyAEQQ9LDQALAkAgAEGAAWoiA0GBAUkNACADQYABIAAQ9AUACyABQQFBjZDCAEECIAIgAGpBgAFqQQAgAGsQciEAIAJBgAFqJAAgAAufAQEBfwJAQcAAQQQQmAUiAQ0AQcAAQQQQ7wUACyABQQA2AgAgASAAKQIANwIEIAFBDGogAEEIaikCADcCACABQRRqIABBEGopAgA3AgAgAUEcaiAAQRhqKQIANwIAIAFBJGogAEEgaikCADcCACABQSxqIABBKGopAgA3AgAgAUE0aiAAQTBqKQIANwIAIAFBPGogAEE4aigCADYCACABC6gBAQF/IwBBwABrIgIkACAAKAIAIQAgAkIANwM4IAJBOGogABAuIAJBHGpBATYCACACIAIoAjwiADYCMCACIAA2AiwgAiACKAI4NgIoIAJBkgE2AiQgAkICNwIMIAJBtNfBADYCCCACIAJBKGo2AiAgAiACQSBqNgIYIAEgAkEIahDJAyEBAkAgAigCLCIARQ0AIAIoAiggAEEBELgFCyACQcAAaiQAIAELlwEBA38jAEGAAWsiAiQAIAAoAgAhAEEAIQMDQCACIANqQf8AakEwQdcAIABBD3EiBEEKSRsgBGo6AAAgA0F/aiEDIABBD0shBCAAQQR2IQAgBA0ACwJAIANBgAFqIgBBgQFJDQAgAEGAASAAEPQFAAsgAUEBQY2QwgBBAiACIANqQYABakEAIANrEHIhACACQYABaiQAIAALlgEBA38jAEGAAWsiAiQAIAAoAgAhAEEAIQMDQCACIANqQf8AakEwQTcgAEEPcSIEQQpJGyAEajoAACADQX9qIQMgAEEPSyEEIABBBHYhACAEDQALAkAgA0GAAWoiAEGBAUkNACAAQYABIAAQ9AUACyABQQFBjZDCAEECIAIgA2pBgAFqQQAgA2sQciEAIAJBgAFqJAAgAAujAQECfyMAQRBrIgIkAAJAAkAgASgCBCIDDQBBACEBIABBADoAAQwBCyABIANBf2o2AgQCQCABKAIAIgEoAgQiA0UNACAAQQE6AAEgASADQX9qNgIEIAEgASgCACIDQQFqNgIAIABBAmogAy0AADoAAEEAIQEMAQsgAkKBygA3AwggAEEEaiACQQhqELgENgIAQQEhAQsgACABOgAAIAJBEGokAAuaAQIDfwF+IAKtIQYCQCAAKAIAIgBBBGoiAygCACAAQQhqIgQoAgAiBWtBB0sNACAAIAVBCBDlAiAEKAIAIQULIAAoAgAgBWogBjcAACAEIAVBCGoiBTYCAAJAIAMoAgAgBWsgAk8NACAAIAUgAhDlAiAAQQhqKAIAIQULIAAoAgAgBWogASACEP8FGiAAQQhqIAUgAmo2AgBBAAuaAQACQAJAIAQNACADIAMgA0GAgPwHcSACIAFqIgEbIAEgAkkiAhshAwwBCwJAAkAgASACSQ0AIAMgA0GAgPwHcSABIAJrIgEbIQMMAQsgA0GAgICAeHMgA0GAgPwHcSACIAFrIgEbIQMLQQAhAgsgACADNgIEIABBADYCACAAQRBqIAI2AgAgAEEMaiABNgIAIABBCGpBADYCAAuaAQEBfwJAAkACQCABRQ0AIAEoAgAiAkF/Rg0BIAEgAkEBajYCAEEgQQEQmAUiAkUNAiACIAEpAAQ3AAAgAkEYaiABQRxqKQAANwAAIAJBEGogAUEUaikAADcAACACQQhqIAFBDGopAAA3AAAgASABKAIAQX9qNgIAIABBIDYCBCAAIAI2AgAPCxDjBQALEOQFAAtBIEEBEO8FAAufAQEEfwJAIAAoAgAiAS0AACICQX9qQQdJDQACQCACRQ0AIAFBCGooAgAiAkUNASABQQRqKAIAIAJBARC4BQwBCyABQQRqLQAAQQNHDQAgAUEIaigCACICKAIAIAIoAgQoAgARAgACQCACKAIEIgMoAgQiBEUNACACKAIAIAQgAygCCBC4BQsgASgCCEEMQQQQuAULIAAoAgBBEEEEELgFC58BAQR/AkAgACgCACIBLQAAIgJBf2pBB0kNAAJAIAJFDQAgAUEIaigCACICRQ0BIAFBBGooAgAgAkEBELgFDAELIAFBBGotAABBA0cNACABQQhqKAIAIgIoAgAgAigCBCgCABECAAJAIAIoAgQiAygCBCIERQ0AIAIoAgAgBCADKAIIELgFCyABKAIIQQxBBBC4BQsgACgCAEEQQQQQuAULmQEBBH8CQAJAAkACQCABKAIAIgIQKiIBDQBBASEDDAELIAFBAEgNASABQQEQmAUiA0UNAgsgACABNgIEIAAgAzYCABC4BiIEECciBRAoIQECQCAFQSRJDQAgBRADCyABIAIgAxApAkAgAUEkSQ0AIAEQAwsCQCAEQSRJDQAgBBADCyAAIAIQKjYCCA8LEJIEAAsgAUEBEO8FAAumAQECfyMAQTBrIgIkAEEBIQMCQCABQaywwgBBGxD6BA0AAkACQCAAKAIARQ0AIAIgADYCDEEBIQMgAkEkakEBNgIAIAJCAjcCFCACQdSwwgA2AhAgAkHHATYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDJA0UNAQwCCyABQcewwgBBBBD6BA0BCyABQeSwwgBBAhD6BCEDCyACQTBqJAAgAwufAQEEfwJAIAAoAgAiAS0AACICQX9qQQdJDQACQCACRQ0AIAFBCGooAgAiAkUNASABQQRqKAIAIAJBARC4BQwBCyABQQRqLQAAQQNHDQAgAUEIaigCACICKAIAIAIoAgQoAgARAgACQCACKAIEIgMoAgQiBEUNACACKAIAIAQgAygCCBC4BQsgASgCCEEMQQQQuAULIAAoAgBBEEEEELgFC5MBAQN/IwBBIGsiAyQAIAMgACgCACIEECoiADYCACADIAI2AgQCQCAAIAJHDQAQuAYiABAnIgUQKCECAkAgBUEkSQ0AIAUQAwsgAiAEIAEQKQJAIAJBJEkNACACEAMLAkAgAEEkSQ0AIAAQAwsgA0EgaiQADwsgA0EANgIIQQAgAyADQQRqIANBCGpBmLbBABDMAwALnAECAX8BfiMAQcAAayICJAAgAkEIakEIaiAAQQhqKQIANwMAIAIgACkCADcDCCACQRhqQQhqIAFBCGopAgA3AwAgAiABKQIANwMYIAJBKGogAkEIaiACQRhqQQAQlwECQCACKAIoRQ0AQYnAwQBBE0GEwcEAENMEAAsgAikCLCEDIAAgAkE0aikCADcCCCAAIAM3AgAgAkHAAGokAAucAQIBfwF+IwBBwABrIgIkACACQQhqQQhqIABBCGopAgA3AwAgAiAAKQIANwMIIAJBGGpBCGogAUEIaikCADcDACACIAEpAgA3AxggAkEoaiACQQhqIAJBGGpBARCXAQJAIAIoAihFDQBBhMLBAEEWQZzCwQAQ0wQACyACKQIsIQMgACACQTRqKQIANwIIIAAgAzcCACACQcAAaiQAC5kBAgF/AX4jAEHAAGsiAiQAIAJBCGpBCGogAEEIaikCADcDACACIAApAgA3AwggAkEYakEIaiABQQhqKQIANwMAIAIgASkCADcDGCACQShqIAJBCGogAkEYahBbAkAgAigCKEUNAEHYwcEAQRlB9MHBABDTBAALIAIpAiwhAyAAIAJBNGopAgA3AgggACADNwIAIAJBwABqJAALngEBA38gAC0ACCEBAkAgACgCBCICRQ0AIAFB/wFxIQNBASEBAkAgAw0AIAAoAgAhAwJAIAJBAUcNACAALQAJQf8BcUUNACADLQAAQQRxDQBBASEBIAMoAhhB+I/CAEEBIANBHGooAgAoAgwRCgANAQsgAygCGEG0jMIAQQEgA0EcaigCACgCDBEKACEBCyAAIAE6AAgLIAFB/wFxQQBHC5gBAQF/IwBBMGsiAyQAAkACQCABIAIQhwQiAUUNAEEEQQQQmAUiAkUNASACIAE2AgAgA0HwqcEANgIMIAMgAjYCCCADQSRqQQE2AgAgA0IBNwIUIANBpKrBADYCECADQc8ANgIsIAMgA0EoajYCICADIANBCGo2AiggA0EQakGEq8EAEJMEAAsgA0EwaiQADwtBBEEEEO8FAAuTAQEEfyMAQRBrIgIkAAJAAkAgAS0ABEUNAEECIQMMAQsgASgCABAcIQQgAkEIahDMBAJAIAIoAggNAAJAAkAgBBAdDQBBACEDIAQQHiEFDAELIAFBAToABEECIQMLIARBJEkNASAEEAMMAQsgAigCDCEFQQEhAyABQQE6AAQLIAAgBTYCBCAAIAM2AgAgAkEQaiQAC6IBAQJ/IwBBEGsiAyQAIABBFGooAgAhBAJAAkACQAJAIABBBGooAgAOAgABAwsgBA0CQcjYwQAhAEEAIQQMAQsgBA0BIAAoAgAiACgCBCEEIAAoAgAhAAsgAyAENgIEIAMgADYCACADQfDmwQAgARCrBiACIAEQrQYQywIACyADQQA2AgQgAyAANgIAIANB3ObBACABEKsGIAIgARCtBhDLAgALlQEAAkACQAJAAkACQAJAIAJB8BlJDQAgAUEHcQ0EIAEoAgBB1IfLjXpHDQEgASgCBEECRw0CIAEoAghBA0cNAyAAQQRqIAE2AgAgAEEAOgAADwsgAEEAOgABDAQLIABBADoAAQwDCyAAQQE6AAEgAEEBOgAADwsgAEECOgABDAELQdSbwABBCkEAELgDAAsgAEEBOgAAC4YBAQJ/IwBBEGsiBCQAAkACQCADRQ0AIAMoAgAiBUF/Rg0BIAMgBUEBajYCACAEQQhqIAEgAiADQQRqEG4gBCgCDCEBIAQoAgghAiADIAMoAgBBf2o2AgAgACACQQBHNgIIIAAgAUEAIAIbNgIEIAAgATYCACAEQRBqJAAPCxDjBQALEOQFAAuXAQEBfyMAQSBrIgIkACACQQhqIAEQTwJAAkACQCACKAIIDQAgASgCAEEASA0BIAEoAggNAiABKAIMDQIgASgCBA0CQeTDwQBBH0GExMEAENMEAAsgACACKQIMNwIAIABBCGogAkEUaikCADcCACACQSBqJAAPC0Gow8EAQStB1MPBABDTBAALQZTEwQBBLEHAxMEAENMEAAudAQAgAEHUAGpBAEGAARCCBhogAEIANwMIIABCADcDACAAQQA2AlAgAEHIAGpBACkDgOpANwMAIABBwABqQQApA/jpQDcDACAAQThqQQApA/DpQDcDACAAQTBqQQApA+jpQDcDACAAQShqQQApA+DpQDcDACAAQSBqQQApA9jpQDcDACAAQRhqQQApA9DpQDcDACAAQQApA8jpQDcDEAuOAQEBfyMAQeAAayIDJAAgAyABIAIQogUgAyADKQMANwMIIANBEGogA0EIakHonsYAQQtBhJ/GAEECEK8BAkACQCADKAIQDQAgAygCFCEBIABBCGogA0EQakEIakHEABD/BRogACABNgIEQQAhAQwBCyAAIAMoAhQ2AgRBASEBCyAAIAE2AgAgA0HgAGokAAtuAQZ+IAAgA0L/////D4MiBSABQv////8PgyIGfiIHIAUgAUIgiCIIfiIJIANCIIgiCiAGfnwiBUIghnwiBjcDACAAIAogCH4gBSAJVK1CIIYgBUIgiIR8IAYgB1StfCAEIAF+IAMgAn58fDcDCAt8ACAAIAEpAAA3AAAgAEE4aiABQThqKQAANwAAIABBMGogAUEwaikAADcAACAAQShqIAFBKGopAAA3AAAgAEEgaiABQSBqKQAANwAAIABBGGogAUEYaikAADcAACAAQRBqIAFBEGopAAA3AAAgAEEIaiABQQhqKQAANwAAC4EBAgJ/AX4CQCABQf//A0sNACACKQMAIQUCQCABQf//A3FBgAFJDQAgASEDA0AgBUIBfCEFIANB//8DcSIEQQd2IQMgBEGAgAFPDQALCyACIAVCAXw3AwACQCABRQ0AIAIgBSABQQV0QWBqrXxCIXw3AwALQQAPC0Ho4MAAQRYQ/QILggECAn8BfgJAIAFB//8DSw0AIAIpAwAhBQJAIAFB//8DcUGAAUkNACABIQMDQCAFQgF8IQUgA0H//wNxIgRBB3YhAyAEQYCAAU8NAAsLIAIgBUIBfDcDAAJAIAFFDQAgAiAFIAFBBnRBQGqtfELBAHw3AwALQQAPC0GcusYAQRYQ/wILgQECAn8BfgJAIAFB//8DSw0AIAIpAwAhBQJAIAFB//8DcUGAAUkNACABIQMDQCAFQgF8IQUgA0H//wNxIgRBB3YhAyAEQYCAAU8NAAsLIAIgBUIBfDcDAAJAIAFFDQAgAiAFIAFBBXRBYGqtfEIhfDcDAAtBAA8LQZy6xgBBFhD/AguFAQECfyMAQTBrIgIkAEEBIQMCQCABQeawwgBBDxD6BA0AAkAgACgCAA0AQQAhAwwBCyACIAA2AgwgAkEkakEBNgIAIAJCATcCFCACQfiwwgA2AhAgAkHHATYCLCACIAJBKGo2AiAgAiACQQxqNgIoIAEgAkEQahDJAyEDCyACQTBqJAAgAwt6AQZ/IAEoAgAiAkEIaiIDKAIAIQFBACEEIAJBBGohBQNAIAAgBGotAAAhBgJAAkAgBSgCACABRg0AIAEhBwwBCyACIAFBARDlAiADKAIAIQcLIAMgB0EBaiIBNgIAIAIoAgAgB2ogBjoAACAEQQFqIgRBIEcNAAtBAAt4AgJ/AX4jAEHQAWsiASQAAkACQCAARQ0AIAAoAgAiAkF/Rg0BIAAgAkEBajYCACABQbABaiAAQQRqQSAQ6wMgAUEIaiABQbABahB8IAEpAwghAyAAIAAoAgBBf2o2AgAgAUHQAWokACADQgFRDwsQ4wUACxDkBQALegIBfwF+IwBBEGsiAyQAAkAgAkEcSw0AIABBADYCBCAAIAEgAUI/hyIEfCAEhSIEPgIIIAAgAkEQdCICQYCAgIB4ciACIAFCAFMbNgIAIAAgBEIgiD4CDCADQRBqJAAPCyADIAI2AgQgA0EENgIAIANB/L7BABCDBAALgQEBAX8jAEHAAGsiBSQAIAUgATYCDCAFIAA2AgggBSADNgIUIAUgAjYCECAFQSxqQQI2AgAgBUE8akG5ATYCACAFQgI3AhwgBUGsj8IANgIYIAVBswE2AjQgBSAFQTBqNgIoIAUgBUEQajYCOCAFIAVBCGo2AjAgBUEYaiAEEJMEAAuFAQECfyAALQAEIQECQCAALQAFRQ0AIAFB/wFxIQJBASEBAkAgAg0AAkAgACgCACIBLQAAQQRxDQAgASgCGEHzj8IAQQIgAUEcaigCACgCDBEKACEBDAELIAEoAhhB5Y/CAEEBIAFBHGooAgAoAgwRCgAhAQsgACABOgAECyABQf8BcUEARwt+ACAAIAEpAMABNwAAIAAgASkAoAE3ACAgAEEYaiABQdgBaikAADcAACAAQRBqIAFB0AFqKQAANwAAIABBCGogAUHIAWopAAA3AAAgAEEoaiABQagBaikAADcAACAAQTBqIAFBsAFqKQAANwAAIABBOGogAUG4AWopAAA3AAALeAEBfyMAQSBrIgQkACAEIAJCACADQgAQqQMgBEEQaiABQgAgA0IAEKkDAkAgBCkDCEIAUiAEQRhqKQMAIgMgBCkDAHwiASADVHJBAUcNAEHMmcAAQStBtJvAABCEBAALIAAgBCkDEDcDACAAIAE3AwggBEEgaiQAC3EBAn8CQAJAIABFDQAgACgCACICQX9GDQEgACACQQFqNgIAIAFFDQAgASgCACICQX9GDQEgASACQQFqNgIAIABBBGogAUEEakEgEIEGIQMgASACNgIAIAAgACgCAEF/ajYCACADRQ8LEOMFAAsQ5AUAC3EBAn8CQAJAIABFDQAgACgCACICQX9GDQEgACACQQFqNgIAIAFFDQAgASgCACICQX9GDQEgASACQQFqNgIAIABBBGogAUEEakEgEIEGIQMgASACNgIAIAAgACgCAEF/ajYCACADRQ8LEOMFAAsQ5AUAC30BAX8jAEHAAGsiAyQAIAMgATYCDCADIAA2AgggAyACOgAXIANBLGpBAjYCACADQTxqQf8ANgIAIANCAjcCHCADQbS8wQA2AhggA0GAATYCNCADIANBMGo2AiggAyADQRdqNgI4IAMgA0EIajYCMCADQRhqQZy9wQAQkwQAC3MBAX8jAEEQayICJAACQAJAIAFFDQAgASgCAA0BIAFBADYCACACQQhqIAFBCGopAgA3AwAgAiABKQIANwMAIAAgAikCBDcCACAAQQhqIAJBDGooAgA2AgAgAUEQQQQQuAUg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AwggACADIAJBCGoQlgEhASACQSBqJAAgAQtvAQF/IwBBMGsiAyQAIAMgATYCBCADIAA2AgAgA0EcakECNgIAIANBLGpB2wA2AgAgA0IDNwIMIANB5JTCADYCCCADQdsANgIkIAMgA0EgajYCGCADIAM2AiggAyADQQRqNgIgIANBCGogAhCTBAALaAICfwF+IwBBEGsiAiQAAkACQCABRQ0AIAEoAgAiA0F/Rg0BIAEgA0EBajYCACACQQhqIAFBBGoQgwMgAikDCCEEIAEgASgCAEF/ajYCACAAIAQ3AwAgAkEQaiQADwsQ4wUACxDkBQALaQEBfyMAQSBrIgUkACAFIAI2AgQgBSABNgIAIAVBCGpBEGogA0EQaikCADcDACAFQQhqQQhqIANBCGopAgA3AwAgBSADKQIANwMIIAAgBUGotsEAIAVBBGpBqLbBACAFQQhqIAQQ2gEAC28BAX8jAEEgayICJAAgAkHw28EANgIEIAIgADYCACACQQhqQRBqIAFBEGopAgA3AwAgAkEIakEIaiABQQhqKQIANwMAIAIgASkCADcDCEEAIAJB0NnBACACQQRqQdDZwQAgAkEIakGw7cEAENoBAAtsAQF/IwBBIGsiAyQAIANB8OPBADYCBCADIAA2AgAgA0EIakEQaiABQRBqKQIANwMAIANBCGpBCGogAUEIaikCADcDACADIAEpAgA3AwhBACADQeDZwQAgA0EEakHg2cEAIANBCGogAhDaAQALbAEBfyMAQSBrIgMkACADIAE2AgQgAyAANgIAIANBCGpBEGogAkEQaikCADcDACADQQhqQQhqIAJBCGopAgA3AwAgAyACKQIANwMIQQAgA0GMjsIAIANBBGpBjI7CACADQQhqQZj2wQAQ2gEAC2QBAX8jAEEgayICJAAgAiAAKAIANgIEIAJBCGpBEGogAUEQaikCADcDACACQQhqQQhqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBmM7AACACQQhqEJYBIQEgAkEgaiQAIAELZAEBfyMAQSBrIgIkACACIAAoAgA2AgQgAkEIakEQaiABQRBqKQIANwMAIAJBCGpBCGogAUEIaikCADcDACACIAEpAgA3AwggAkEEakHk58AAIAJBCGoQlgEhASACQSBqJAAgAQtkAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQQhqQRBqIAFBEGopAgA3AwAgAkEIakEIaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQbDYwQAgAkEIahCWASEBIAJBIGokACABC20BAX8jAEEwayICJAACQEEALQCIv0ZFDQAgAkEcakEBNgIAIAJCAjcCDCACQfzkwQA2AgggAkHbADYCJCACIAA2AiwgAiACQSBqNgIYIAIgAkEsajYCICACQQhqQaTlwQAQkwQACyACQTBqJAALZAEBfyMAQSBrIgIkACACIAAoAgA2AgQgAkEIakEQaiABQRBqKQIANwMAIAJBCGpBCGogAUEIaikCADcDACACIAEpAgA3AwggAkEEakGw88EAIAJBCGoQlgEhASACQSBqJAAgAQtkAQF/IwBBIGsiAiQAIAIgACgCADYCBCACQQhqQRBqIAFBEGopAgA3AwAgAkEIakEIaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQdiRwgAgAkEIahCWASEBIAJBIGokACABC2QBAX8jAEEgayICJAAgAiAAKAIANgIEIAJBCGpBEGogAUEQaikCADcDACACQQhqQQhqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpBsL7GACACQQhqEJYBIQEgAkEgaiQAIAELYQEBfyMAQSBrIgIkACACIAA2AgQgAkEIakEQaiABQRBqKQIANwMAIAJBCGpBCGogAUEIaikCADcDACACIAEpAgA3AwggAkEEakGYzsAAIAJBCGoQlgEhASACQSBqJAAgAQthAQF/IwBBIGsiAiQAIAIgADYCBCACQQhqQRBqIAFBEGopAgA3AwAgAkEIakEIaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQeTnwAAgAkEIahCWASEBIAJBIGokACABC2EBAX8jAEEgayICJAAgAiAANgIEIAJBCGpBEGogAUEQaikCADcDACACQQhqQQhqIAFBCGopAgA3AwAgAiABKQIANwMIIAJBBGpB2JHCACACQQhqEJYBIQEgAkEgaiQAIAELVwEBfgJAAkAgA0HAAHENACADRQ0BIAIgA0E/ca0iBIYgAUEAIANrQT9xrYiEIQIgASAEhiEBDAELIAEgA0E/ca2GIQJCACEBCyAAIAE3AwAgACACNwMIC1cBAX4CQAJAIANBwABxDQAgA0UNASACQQAgA2tBP3GthiABIANBP3GtIgSIhCEBIAIgBIghAgwBCyACIANBP3GtiCEBQgAhAgsgACABNwMAIAAgAjcDCAthAQF/IwBBIGsiAiQAIAIgADYCBCACQQhqQRBqIAFBEGopAgA3AwAgAkEIakEIaiABQQhqKQIANwMAIAIgASkCADcDCCACQQRqQbC+xgAgAkEIahCWASEBIAJBIGokACABC2oBAX8jAEEgayICJAAQ3AYgAkEIaiABEL8BAkAgAigCCEUNACACIAIoAgw2AhxBl53AAEErIAJBHGpBxJ3AAEGEn8AAELIDAAsgACACKQIMNwIAIABBCGogAkEUaigCADYCACACQSBqJAALcQECfyMAQRBrIgIkACAAKAIAIgAtAAAhAyAAQQA6AAACQAJAIANBAXFFDQBBAUGU48AAEPsCQQMQmAQNASACQRBqJAAPC0HI3sAAQStBjN3AABCEBAALQYTfwABBKyACQQhqQbDfwABBkOTAABCyAwALcQECfyMAQRBrIgIkACAAKAIAIgAtAAAhAyAAQQA6AAACQAJAIANBAXFFDQBBAUGU48AAEPsCQQMQmAQNASACQRBqJAAPC0HI3sAAQStBjN3AABCEBAALQYTfwABBKyACQQhqQbDfwABBkOTAABCyAwALXwACQAJAAkAgAiABQSBqQSAQgQZFDQAgAiABQcAAakEgEIEGRQ0BIABCATcCBCAAQQE2AgAPCyABQYEJaiEBDAELIAFBgglqIQELIABBCGogATEAADcDACAAQQA2AgALagEBfyMAQRBrIgIkACACIAFBuPXBAEENEL0EIAIgADYCDCACQZz1wQBBBSACQQxqQYz1wQAQ3wEaIAIgAEEMajYCDCACQaH1wQBBBSACQQxqQaj1wQAQ3wEaIAIQswMhACACQRBqJAAgAAtgAQF/IwBBMGsiAiQAIAIgADYCDCACQSRqQQE2AgAgAkIBNwIUIAJBrL3BADYCECACQYEBNgIsIAIgAkEoajYCICACIAJBDGo2AiggASACQRBqEMkDIQEgAkEwaiQAIAELXwECf0EAIQJBBCEDAkAgAUEFSQ0AIAEhAwJAAkAgAUF7ag4CAgEACyABQXlqIQFBASECQQYhAwwBC0EAIQFBASECQQUhAwsgACACNgIEIAAgAzYCACAAQQhqIAE2AgALXQEBfwJA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QfS/xgAQxAZFDQAgARCaBhDFBQ0BCyABQQAgABCCBhoLIAELNAAgACgCACEAAkAgARCyBQ0AAkAgARCzBQ0AIAAgARDOBQ8LIAAgARCOAw8LIAAgARCNAws0ACAAIAEoAhggAiADIAFBHGooAgAoAgwRCgA6AAggACABNgIAIAAgA0U6AAkgAEEANgIECzQAIAAoAgAhAAJAIAEQsgUNAAJAIAEQswUNACAAIAEQygUPCyAAIAEQkgMPCyAAIAEQkQMLNAAgACgCACEAAkAgARCyBQ0AAkAgARCzBQ0AIAAgARDOBQ8LIAAgARCOAw8LIAAgARCNAwsuAAJAAkAgAEUNACAAKAIADQEgAEEANgIAIABBEGogATcDAA8LEOMFAAsQ5AUACy4AAkACQCAARQ0AIAAoAgANASAAQQA2AgAgAEEYaiABNwMADwsQ4wUACxDkBQALLgACQAJAIABFDQAgACgCAA0BIABBADYCACAAQSBqIAE5AwAPCxDjBQALEOQFAAsuAAJAAkAgAEUNACAAKAIADQEgAEEANgIAIABBKGogATkDAA8LEOMFAAsQ5AUACy4AAkACQCAARQ0AIAAoAgANASAAQQA2AgAgAEEwaiABOQMADwsQ4wUACxDkBQALLgACQAJAIABFDQAgACgCAA0BIABBADYCACAAQThqIAE5AwAPCxDjBQALEOQFAAsvAAJAAkAgAEUNACAAKAIADQEgAEEANgIAIABBwABqIAE2AgAPCxDjBQALEOQFAAs7AQF/IAAoAgAiAC0AACECIABBADoAAAJAIAJBAXENAEHgjsAAQStB0I7AABCEBAALQQFB2I3AABD7Ags7AQF/IAAoAgAiAC0AACECIABBADoAAAJAIAJBAXENAEHgjsAAQStB0I7AABCEBAALQQFB2I3AABD7Ags5AQF/IAAoAgAhAQJAIAAtAAQNAEEAKALwv0ZB/////wdxRQ0AENkEDQAgAUEBOgABCyABQQA6AAALLgACQAJAIABFDQAgACgCAA0BIABBADYCACAAQcgAQQgQuAUPCxDjBQALEOQFAAstAQF/AkAgACgCAEF/akEESQ0AIABBCGooAgAiAUUNACAAKAIEIAFBARC4BQsLLwEBfyMAQRBrIgMkACADIAE2AgwgAyAANgIIIANBCGpBtIzAAEEAIAJBARDLAgALLQEB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KAIQETEACyQAAkAgAA0AQbi2wQBBMBDiBQALIAAgAiADIAQgASgCEBEMAAskAAJAIAANAEG4tsEAQTAQ4gUACyAAIAIgAyAEIAEoAhARCwALJAACQCAADQBBuLbBAEEwEOIFAAsgACACIAMgBCABKAIQEQwACyQAAkAgAA0AQbi2wQBBMBDiBQALIAAgAiADIAQgASgCEBELAAskAAJAIAANAEG4tsEAQTAQ4gUACyAAIAIgAyAEIAEoAhARLwALHgAgACABQQNyNgIEIAAgAWoiACAAKAIEQQFyNgIECyABAX8CQCAAQQRqKAIAIgFFDQAgACgCACABQQEQuAULCyABAX8CQCAAQQRqKAIAIgFFDQAgACgCACABQQEQuAULCyABAX8CQCAAQQRqKAIAIgFFDQAgACgCACABQQEQuAULCyABAX8CQCAAQQRqKAIAIgFFDQAgACgCACABQQEQuAULCyIAAkAgAA0AQbi2wQBBMBDiBQALIAAgAiADIAEoAhARCQALIAEBfwJAIABBBGooAgAiAUUNACAAKAIAIAFBARC4BQsLIwACQCAALQAADQAgAUG0ksIAQQUQbw8LIAFBsJLCAEEEEG8LIAEBfwJAIABBBGooAgAiAUUNACAAKAIAIAFBARC4BQsLIAEBfwJAIABBBGooAgAiAUUNACAAKAIAIAFBARC4BQsLIQACQCABKAIADQAQuwYACyAAQYyPwAA2AgQgACABNgIACxwAIAAgASkCADcCACAAQQhqIAFBCGooAgA2AgALIAACQCAADQBBuLbBAEEwEOIFAAsgACACIAEoAhARBwALIQACQCABKAIADQAQuwYACyAAQazHwQA2AgQgACABNgIACyUBAX9BpL/GACEBAkBBACgCoL9GDQBBoL/GACAAEKwCIQELIAELHAEBfwJAIAAoAhAiAQ0AIABBFGooAgAhAQsgAQsUACABIAEgACAAIAFjGyAAIABiGwsbAQF/IAAgAUEAKALgv0YiAkGVASACGxEGAAALEgBBAEEZIABBAXZrIABBH0YbCxYAIAAgAUEBcjYCBCAAIAFqIAE2AgALGgAgACgCACAAKAIEIAAoAgggACgCDBCvBQALHAAgASgCGEHAjMIAQQ4gAUEcaigCACgCDBEKAAsZACAAKAIYIAEgAiAAQRxqKAIAKAIMEQoACxwAIAEoAhhB9KfCAEEFIAFBHGooAgAoAgwRCgALIQAgAL1CgICAgICAgICAf4NC/////////+8/hL8gAKCdCxgAIAAoAgAiACgCACAAQQRqKAIAIAEQcAsZACAAKAIAIgAoAgAgASAAKAIEKAIMEQcACxsAAkAgAA0AQdjYwQBBK0Gs5sEAEIQEAAsgAAsYAAJAIAANAEHY2MEAQSsgARCEBAALIAALEAAgACABakF/akEAIAFrcQsZACAAKAIAIgAoAgAgASAAKAIEKAIQEQcACxUAIAAoAgAgACgCBCAAKAIIELQEAAsTAQF/IAAgASACIAMQeSEEIAQPCxUAIAAoAgAiACgCACAAKAIIIAEQcAsWACAAKAIAIgAoAgAgACgCCCABEPoFCxUBAX8jAEEQayIBIAA6AA8gAS0ADwsVACAAKAIAIgAoAgAgACgCCCABEHALFQAgACgCACIAKAIAIAAoAgggARBwCxYAIAAoAgAiACgCACAAKAIIIAEQ+gULFQAgACgCACAAKAIEIAAoAggQugQACxMAAkAgAUUNACAAIAFBBBC4BQsLEwAgACgCACAAQQhqKAIAIAEQcAsUACAAKAIAIABBCGooAgAgARD6BQsVACAAKAIAIAAoAgQgACgCCBCjAwALDwAgAEEBdCIAQQAgAGtyCxUAIAEgACgCACIAKAIAIAAoAgQQbwsUACAAQSA2AgQgACABQaABajYCAAsVACAAKAIAIgAoAgAgACgCCCABEHALFAAgACgCACABIAAoAgQoAhARBwALFAAgACgCACIAIAAoAgAoAgARAgALFAAgACgCACABIAAoAgQoAhARBwALFAAgACgCACABIAAoAgQoAgwRBwALEAEBfyAAIAEQlgYhAiACDwsQAQF/IAAgARCjBCECIAIPCxAAIABCADcDCCAAIAE3AwALEQAgACgCACAAKAIIIAEQ+gULEAAgAEEgNgIEIAAgATYCAAsRACAAKAIAIAAoAgggARD6BQsTACAAQSg2AgQgAEGcq8EANgIACxAAIAAoAgAgACgCBCABEHALDAAgAEEGIABBBkkbCxEAIAAoAgAgACgCBCABEPoFCxAAIAAgAjYCBCAAIAE2AgALEQAgACgCACAAKAIEIAEQ+gULEQAgASAAKAIAIAAoAgQQ+gQLEAAgACgCACAAKAIEIAEQcAsRACAAKAIAIAAoAgggARD6BQsUAEEAIAA2Ati/RkEAQQE6ANS/RgsQACAAKAIAIAAoAgQgARBwCxEAIAAoAgAgACgCBCABEPoFCw8AIAAoAgAgARD7ARpBAAsTACAAQczmwQA2AgQgACABNgIACw0AIAAtAARBAnFBAXYLDwAgACAAKAIEQX5xNgIECw0AIAAoAgRBA3FBAUcLDQAgACABIAIgAxBaAAsQACABIAAoAgAgACgCBBBvCw0AIAAtAABBBHFBAnYLDQAgAC0AAEEQcUEEdgsNACAALQAAQSBxQQV2CxEAIABBwAA2AgQgACABNgIACxEAIAAoAgAgACgCBCABEPoFCxMAIABBKDYCBCAAQbCywgA2AgALEQAgACgCACAAKAIEIAEQwwULDAAgACABIAIQqAYPCw8AIAEoAgBBACgCuL9GTQsMACAAIAEgAiADEEcLDQAgACgCACABIAIQIwsMACAAKAIAECRBAEcLDgAgACgCACABKAIAECULDAAgACgCABArQQBHCw0AIAAoAgAgASACEC0LDAAgACABIAJBABBGCw0AIAAgASACQQAQlwELDQAgACABIAJBARCXAQsOACAAIAIgASgCDBEHAAsKAEEAIABrIABxCwsAIAAtAARBA3FFCwwAIAAgAUEDcjYCBAsNACAAKAIAIAAoAgRqCw4AIAAoAgAgARD8AUEACw0AIAAoAgAaA38MAAsLDgAgADUCAEEBIAEQhwILDAAgACABIAIQ1wQACw0AIAAgASACEJcCIAALDgAgACgCACABIAIQhQELDgAgADEAAEEBIAEQhwILDgAgACkDAEEBIAEQhwILCwAgACMAaiQAIwALDAAgACgCACABEIEDCwwAIAAoAgAgARDKBQsMACAAKAIAIAEQ4gMLCgAgACABEPAFDwsMACAAKAIAIAEQ/gELDAAgACgCACABEKUCCwwAIAAoAgAgARCRAwsMACAAKAIAIAEQyAMLCgAgACACIAEQTQsOACABQby0wQBBDhD6BAsKACAAIAEgAhAyCw0AIAFB6LbBAEECEG8LDAAgACgCACABEJUGCwwAIAAoAgAgARDcAQsMACAAKAIAIAEQzQILDAAgACgCACABEMwCCwwAIAAoAgAgARDKBQsJACAAIAEQLwALDQBBxNfBAEEbEOIFAAsOAEHf18EAQc8AEOIFAAsMACAAKAIAIAEQsAELDAAgACgCACABEOsECwoAIAAoAgRBeHELCgAgACgCBEEBcQsKACAAKAIMQQFxCwoAIAAoAgxBAXYLDAAgACgCACABEM0CCwoAIAAgARDtBQALCgAgACABEO4FAAsKACAAIAEQ1AUACwoAIAAgARDsBQALCgAgACABEPUEAAsKACAAIAEQxAMACwoAIAAgARDFAwALCgAgACABEMYDAAsKACAAIAEQ9wUACwoAIAAgARD5BQALCgAgACABEPgFAAsKACAAIAEQ8QUACwoAIAAgARDyBQALCgAgACABEPMFAAsKACACIAAgARBvCwwAIAAoAgAgARCLAgsNACABQbmSwgBBAhBvCwwAIAAoAgAgARCIAgsMACAAKAIAIAEQtAELCwAgACABIAIQgQILCwAgACABIAIQiAELCwAgACABIAIQ+AMLCwAgACABIAIQ8gILDAAgACgCACABEM4FCw4AIAFB4JvGAEEVEPoECwsAIAAoAgAgARB9CwsAIAAoAgAgARBBCw4AIAFB95zGAEETEPoECw4AIAFBsKHGAEETEPoECwwAIAAoAgAgARCbAQsMACAAKAIAIAEQpQILDgAgAUGAvMYAQR4Q+gQLCQAgACgCABAICwkAIAAoAgAQCQsJACAAKAIAEAoLCQAgACgCABALCwkAIAAoAgAQDAsJACAAQQA2AgALCQAgAEEANgIACwkAIAAoAgAQJgsJACAAIAEQ2AELCQAgACABEMcBCwkAIAAgARDLAQsHACAAIAFqCwcAIAAgAWsLBwAgAEEIagsHACAAQXhqCwkAIABBADYCAAsJACAAQQA2AgALBwAgARDIAQsHACABEMgBCwcAIAEQyAELBwAgACkDAAsIABDcBkHQAAsHACABEMgBCwcAIAEQyAELBwAgARDIAQsGACAAECILBgAgABAsCwYAELsGAAsGACAAEF4LBwAgACgCDAsHACAAKAIICwcAIAAoAggLBwAgACgCDAsHACAALQAQCwcAIAAQowELBwAgABCMAgsNAEKL5OeV8riP17h/CwQAIAALBAAgAAsMAEKXh+Sj16GA5ywLBABBAAsEABAYCwQAQQALDQBCi+TnlfK4j9e4fwsEABAwCwwAQo/05MKc7pTNbwsNAEKL5OeV8riP17h/CwMAAAsDAAALBABBBwsEAEEICwQAIAALBABBAAsEAEEACwQAQQALBABBAAsEAEEBCwYAQYCABAsNAEK0r6rI5Z+Hvu8ACwwAQvrw/IfC1u/qGQsEAEEACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwIACwuXv4aAAAIAQYCAwAAL9L4GRGl2aXNpb24gYnkgemVyby9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ydXN0X2RlY2ltYWwtMS4yMy4xL3NyYy9hcml0aG1ldGljX2ltcGxzLnJzEAAQAGgAAADbAAAALQAAAERpdmlzaW9uIG92ZXJmbG93ZWQAEAAQAGgAAADaAAAALAAAAE11bHRpcGxpY2F0aW9uIG92ZXJmbG93ZWQAAAAQABAAaAAAAOgAAAASAAAAU3VidHJhY3Rpb24gb3ZlcmZsb3dlZAAAEAAQAGgAAAADAQAAEgAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWVjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlAAABAAAAAAAAAAEAAAACAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3J1c3RfZGVjaW1hbC0xLjIzLjEvc3JjL2RlY2ltYWwucnMAaAEQAF8AAAABBwAAAQAAAAAAAAAAAAAAAQAAAAAAAABzcmMvcGFpci5ycwDoARAACwAAAEIAAAAiAAAA6AEQAAsAAABLAAAAWAAAAAAAAAAAAAAAAAAAAAAAAABBZGRpdGlvbiBvdmVyZmxvd2VkL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3J1c3RfZGVjaW1hbC0xLjIzLjEvc3JjL2FyaXRobWV0aWNfaW1wbHMucnMANwIQAGgAAAChAAAAEgAAAERpdmlzaW9uIGJ5IHplcm83AhAAaAAAANsAAAAtAAAARGl2aXNpb24gb3ZlcmZsb3dlZAA3AhAAaAAAANoAAAAsAAAATXVsdGlwbGljYXRpb24gb3ZlcmZsb3dlZAAAADcCEABoAAAA6AAAABIAAABTdWJ0cmFjdGlvbiBvdmVyZmxvd2VkAAA3AhAAaAAAAAMBAAASAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vay0wLjEuNy9zcmMvbGliLnJzAABIAxAAZgAAAJUAAAAOAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZS9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ydXN0X2RlY2ltYWwtMS4yMy4xL3NyYy9kZWNpbWFsLnJzAADrAxAAXwAAAAEHAAABAAAAc3JjL2xpYi5ycwAAXAQQAAoAAABVAAAAKAAAAFwEEAAKAAAAVgAAACkAAABcBBAACgAAAFcAAAAnAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABcBBAACgAAAIgAAAA8AAAAXAQQAAoAAACQAAAANQAAAFwEEAAKAAAAkQAAADcAAABcBBAACgAAAJIAAAAtAAAAaW5kZXggb3V0IG9mIGJvdW5kAAD4BBAAEgAAAHNyYy9zdmVjLnJzABQFEAALAAAANQAAAAoAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAABAAAABAAAAAEAAAABQAAAC9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ydXN0X2RlY2ltYWwtMS4yMy4xL3NyYy9kZWNpbWFsLnJzAJgFEABfAAAABAcAAAEAAABzcmMvc3NsLnJzAAAIBhAACgAAACgAAAArAAAACAYQAAoAAAA2AAAAJgAAAAYAAAAIAAAABAAAAAcAAAAIAAAASAYQAAAAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlL2hvbWUvdWJ1bnR1L3Byb2plY3RzL2dmeC1zc2wvZ2Z4LXNvbGFuYS1jb21tb24vc3JjL2ZlZS5ycwAAAHsGEAA6AAAAHQAAABoAAAB7BhAAOgAAAB8AAAASAAAACQAAAAAAAAABAAAACgAAAAsAAAAMAAAACQAAAAQAAAAEAAAADQAAAA4AAAAvcnVzdGMvYTgzMTRlZjdkMGVjN2I3NWMzMzZhZjJjOTg1N2JmYWY0MzAwMmJmYy9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlLnJzBAcQAEwAAAAUAQAAMgAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUACQAAAAgAAAAEAAAADwAAAEFkZGl0aW9uIG92ZXJmbG93ZWQvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvcnVzdF9kZWNpbWFsLTEuMjMuMS9zcmMvYXJpdGhtZXRpY19pbXBscy5ycwCvBxAAaAAAAKEAAAASAAAARGl2aXNpb24gYnkgemVyb68HEABoAAAA2wAAAC0AAABEaXZpc2lvbiBvdmVyZmxvd2VkAK8HEABoAAAA2gAAACwAAABNdWx0aXBsaWNhdGlvbiBvdmVyZmxvd2VkAAAArwcQAGgAAADoAAAAEgAAAFN1YnRyYWN0aW9uIG92ZXJmbG93ZWQAAK8HEABoAAAAAwEAABIAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlAAAAAAAAAAAAAAAAAAAAAABhc3NlcnRpb24gZmFpbGVkOiB4X2luID4gRGVjaW1hbDo6WkVST3NyYy9tYXRoL2N1cnZlcy5ycyIJEAASAAAAHQAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiB4MCA+IERlY2ltYWw6OlpFUk8iCRAAEgAAAB4AAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogeTAgPiBEZWNpbWFsOjpaRVJPIgkQABIAAAAfAAAABQAAAGFzc2VydGlvbiBmYWlsZWQ6IHd4MCA+IERlY2ltYWw6OlpFUk8AAAAiCRAAEgAAACAAAAAFAAAAYXNzZXJ0aW9uIGZhaWxlZDogd3kwID4gRGVjaW1hbDo6WkVSTwAAACIJEAASAAAAIQAAAAUAAABhc3NlcnRpb24gZmFpbGVkOiBwID4gRGVjaW1hbDo6WkVSTwAiCRAAEgAAACIAAAAFAAAAIgkQABIAAAAkAAAAHQAAACIJEAASAAAAJQAAAB0AAAAiCRAAEgAAACYAAAAZAAAAIgkQABIAAAAoAAAAGQAAACIJEAASAAAAUgAAABsAAAAiCRAAEgAAAFcAAAAZAAAAIgkQABIAAABdAAAAMAAAACIJEAASAAAAewAAACoAAAAiCRAAEgAAAKAAAAArAAAAIgkQABIAAACgAAAAOwAAAAAAAAAAAAAAAQAAAAAAAABweXRoOiAAAAALEAAGAAAAYnl0ZW11Y2s6IAAAEAsQAAoAAABUaGUgbGVuZ3RoIG9mIHRoZSBwdWJrZXkgaXMgbm90IDMyOiBnb3QgJAsQACgAAABUaGVyZSB3YXMgYW4gb3ZlcmZsb3cgZXJyb3IAVAsQABsAAABUaGUgc3dhcCBpcyBzdXNwZW5kZWQAAAB4CxAAFQAAAE9yYWNsZSBub3QgZm91bmSYCxAAEAAAAE1pc3NpbmcgcmVxdWlyZWQgb3JhY2xlALALEAAXAAAA0AsQAAAAAAA6IAAA2AsQAAIAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAAFAAAABAAAAAEAAAABQAAAC9ob21lL3VidW50dS9wcm9qZWN0cy9nZngtc3NsL2dmeC1zb2xhbmEtY29tbW9uL3NyYy9kZWNpbWFsLnJzAABMDBAAPgAAABYAAAAYAAAATAwQAD4AAAAXAAAAFAAAAEwMEAA+AAAAHQAAABgAAABMDBAAPgAAAB4AAAAUAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZWNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAABUAAAAAAAAAAQAAAAIAAAAvaG9tZS91YnVudHUvcHJvamVjdHMvZ2Z4LXNzbC9nZngtc29sYW5hLWNvbW1vbi9zcmMvc2FmZV9tYXRoLnJzNA0QAEAAAAA/AAAAGAAAADQNEABAAAAAUwAAACgAAAA0DRAAQAAAAGsAAAAoAAAANA0QAEAAAABzAAAALgAAADQNEABAAAAAiwAAAC4AAAA0DRAAQAAAAJsAAAAoAAAAZnJvbV9ieXRlcwAASW5jb3JyZWN0IGFjY291bnQgdHlwZQAA4A0QABYAAABJbmNvcnJlY3QgdmVyc2lvbiBudW1iZXIgZm9yIFB5dGggYWNjb3VudAAAAAAOEAApAAAARmFpbGVkIHRvIGNvbnZlcnQgYWNjb3VudCBpbnRvIGEgUHl0aCBhY2NvdW50AAAANA4QAC0AAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAAFgAAAAQAAAAEAAAAFwAAAC9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9zb2xhbmEtcHJvZ3JhbS0xLjEwLjM4L3NyYy9tZXNzYWdlL2xlZ2FjeS5ycwAAANQOEABpAAAAMAAAACgAAABvdmVyZmxvdyB3aGVuIGNvbXBpbGluZyBtZXNzYWdlIGtleXPUDhAAaQAAACgBAAAOAAAA1A4QAGkAAADUAQAAIgAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWVhc3NlcnRpb24gZmFpbGVkOiBpZHggPCBDQVBBQ0lUWS9ydXN0Yy9hODMxNGVmN2QwZWM3Yjc1YzMzNmFmMmM5ODU3YmZhZjQzMDAyYmZjL2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL25vZGUucnNhc3NlcnRpb24gZmFpbGVkOiBlZGdlLmhlaWdodCA9PSBzZWxmLmhlaWdodCAtIDEAAN8PEABbAAAAgAIAAAkAAADfDxAAWwAAAIQCAAAJAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZTogAACMEBAAKgAAAGVtcHR5IGludGVybmFsIG5vZGUAwBAQABMAAADfDxAAWwAAAL8EAAAfAAAAYXNzZXJ0aW9uIGZhaWxlZDogc2VsZi5oZWlnaHQgPiAwAAAA3w8QAFsAAABGAgAACQAAAGFzc2VydGlvbiBmYWlsZWQ6IHNyYy5sZW4oKSA9PSBkc3QubGVuKCnfDxAAWwAAALYGAAAFAAAA3w8QAFsAAABGBAAAFgAAAN8PEABbAAAAgwQAABYAAABhc3NlcnRpb24gZmFpbGVkOiBlZGdlLmhlaWdodCA9PSBzZWxmLm5vZGUuaGVpZ2h0IC0gMQAAAN8PEABbAAAAnwMAAAkAAABhc3NlcnRpb24gZmFpbGVkOiBvbGRfcmlnaHRfbGVuICsgY291bnQgPD0gQ0FQQUNJVFkA3w8QAFsAAABnBQAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IG9sZF9sZWZ0X2xlbiA+PSBjb3VudADfDxAAWwAAAGgFAAANAAAAaW50ZXJuYWwgZXJyb3I6IGVudGVyZWQgdW5yZWFjaGFibGUgY29kZd8PEABbAAAAlwUAABYAAABhc3NlcnRpb24gZmFpbGVkOiBvbGRfbGVmdF9sZW4gKyBjb3VudCA8PSBDQVBBQ0lUWQAA3w8QAFsAAACmBQAADQAAAGFzc2VydGlvbiBmYWlsZWQ6IG9sZF9yaWdodF9sZW4gPj0gY291bnTfDxAAWwAAAKcFAAANAAAA3w8QAFsAAADXBQAAFgAAAGFzc2VydGlvbiBmYWlsZWQ6IG1hdGNoIHRyYWNrX2VkZ2VfaWR4IHtcbiAgICBMZWZ0T3JSaWdodDo6TGVmdChpZHgpID0+IGlkeCA8PSBvbGRfbGVmdF9sZW4sXG4gICAgTGVmdE9yUmlnaHQ6OlJpZ2h0KGlkeCkgPT4gaWR4IDw9IHJpZ2h0X2xlbixcbn0AAADfDxAAWwAAADkFAAAJAAAAYXNzZXJ0aW9uIGZhaWxlZDogbmV3X2xlZnRfbGVuIDw9IENBUEFDSVRZAADfDxAAWwAAAPMEAAAJAAAAL3J1c3RjL2E4MzE0ZWY3ZDBlYzdiNzVjMzM2YWYyYzk4NTdiZmFmNDMwMDJiZmMvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbmF2aWdhdGUucnMA4BMQAF8AAAA/AgAAVgAAAOATEABfAAAA/wEAAC8AAAAbAAAADAAAAAQAAAAcAAAAHQAAAB4AAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L3J1c3RjL2E4MzE0ZWY3ZDBlYzdiNzVjMzM2YWYyYzk4NTdiZmFmNDMwMDJiZmMvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAACvFBAASwAAALEJAAAOAAAAY2FsbGVkIGBPcHRpb246OnVud3JhcCgpYCBvbiBhIGBOb25lYCB2YWx1ZQAfAAAAAAAAAAEAAAAgAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAhAAAABAAAAAQAAAAXAAAAL3J1c3RjL2E4MzE0ZWY3ZDBlYzdiNzVjMzM2YWYyYzk4NTdiZmFmNDMwMDJiZmMvbGlicmFyeS9hbGxvYy9zcmMvY29sbGVjdGlvbnMvYnRyZWUvbWFwL2VudHJ5LnJzhBUQAGAAAABRAQAAMgAAAIQVEABgAAAACwIAACoAAAAvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvc29sYW5hLXByb2dyYW0tMS4xMC4zOC9zcmMvaW5zdHJ1Y3Rpb24ucnMAAAQWEABmAAAAuAEAACQAAABBY3RpdmVWb3RlQWNjb3VudENsb3NlTWF4QWNjb3VudHNEYXRhU2l6ZUV4Y2VlZGVkSWxsZWdhbE93bmVyVW5zdXBwb3J0ZWRTeXN2YXJBcml0aG1ldGljT3ZlcmZsb3dJbnZhbGlkQWNjb3VudE93bmVyQWNjb3VudE5vdFJlbnRFeGVtcHRCb3JzaElvRXJyb3IAHwAAAAQAAAAEAAAAIgAAAEluY29ycmVjdEF1dGhvcml0eUltbXV0YWJsZVByb2dyYW1GYWlsZWRUb0NvbXBpbGVQcm9ncmFtRmFpbGVkVG9Db21wbGV0ZVByb2dyYW1FbnZpcm9ubWVudFNldHVwRmFpbHVyZVByaXZpbGVnZUVzY2FsYXRpb25Db21wdXRhdGlvbmFsQnVkZ2V0RXhjZWVkZWRJbnZhbGlkUmVhbGxvY0ludmFsaWRTZWVkc01heFNlZWRMZW5ndGhFeGNlZWRlZFJlZW50cmFuY3lOb3RBbGxvd2VkTWlzc2luZ0FjY291bnRDYWxsRGVwdGhVbnN1cHBvcnRlZFByb2dyYW1JZEV4ZWN1dGFibGVBY2NvdW50Tm90UmVudEV4ZW1wdEV4ZWN1dGFibGVMYW1wb3J0Q2hhbmdlRXhlY3V0YWJsZURhdGFNb2RpZmllZEludmFsaWRFcnJvckN1c3RvbQAfAAAABAAAAAQAAAAjAAAARHVwbGljYXRlQWNjb3VudE91dE9mU3luY0FjY291bnRCb3Jyb3dPdXRzdGFuZGluZ0FjY291bnRCb3Jyb3dGYWlsZWRBY2NvdW50Tm90RXhlY3V0YWJsZUFjY291bnREYXRhU2l6ZUNoYW5nZWROb3RFbm91Z2hBY2NvdW50S2V5c1JlbnRFcG9jaE1vZGlmaWVkRXhlY3V0YWJsZU1vZGlmaWVkRHVwbGljYXRlQWNjb3VudEluZGV4UmVhZG9ubHlEYXRhTW9kaWZpZWRSZWFkb25seUxhbXBvcnRDaGFuZ2VFeHRlcm5hbEFjY291bnREYXRhTW9kaWZpZWRFeHRlcm5hbEFjY291bnRMYW1wb3J0U3BlbmRNb2RpZmllZFByb2dyYW1JZFVuYmFsYW5jZWRJbnN0cnVjdGlvblVuaW5pdGlhbGl6ZWRBY2NvdW50QWNjb3VudEFscmVhZHlJbml0aWFsaXplZE1pc3NpbmdSZXF1aXJlZFNpZ25hdHVyZUluY29ycmVjdFByb2dyYW1JZEluc3VmZmljaWVudEZ1bmRzQWNjb3VudERhdGFUb29TbWFsbEludmFsaWRBY2NvdW50RGF0YUludmFsaWRJbnN0cnVjdGlvbkRhdGFJbnZhbGlkQXJndW1lbnRHZW5lcmljRXJyb3JDYW5ub3QgY2xvc2Ugdm90ZSBhY2NvdW50IHVubGVzcyBpdCBzdG9wcGVkIHZvdGluZyBhdCBsZWFzdCBvbmUgZnVsbCBlcG9jaCBhZ28AjRoQAE4AAABBY2NvdW50IGRhdGEgYWxsb2NhdGlvbiBleGNlZWRlZCB0aGUgbWF4aW11bSBhY2NvdW50cyBkYXRhIHNpemUgbGltaXQAAADkGhAARQAAAFByb3ZpZGVkIG93bmVyIGlzIG5vdCBhbGxvd2VkAAAANBsQAB0AAABVbnN1cHBvcnRlZCBzeXN2YXIAAFwbEAASAAAAUHJvZ3JhbSBhcml0aG1ldGljIG92ZXJmbG93ZWQAAAB4GxAAHQAAAEludmFsaWQgYWNjb3VudCBvd25lcgAAAKAbEAAVAAAAQW4gYWNjb3VudCBkb2VzIG5vdCBoYXZlIGVub3VnaCBsYW1wb3J0cyB0byBiZSByZW50LWV4ZW1wdAAAwBsQADoAAABGYWlsZWQgdG8gc2VyaWFsaXplIG9yIGRlc2VyaWFsaXplIGFjY291bnQgZGF0YTogAAAABBwQADEAAABJbmNvcnJlY3QgYXV0aG9yaXR5IHByb3ZpZGVkQBwQABwAAABBY2NvdW50IGlzIGltbXV0YWJsZWQcEAAUAAAAUHJvZ3JhbSBmYWlsZWQgdG8gY29tcGlsZQAAAIAcEAAZAAAAUHJvZ3JhbSBmYWlsZWQgdG8gY29tcGxldGUAAKQcEAAaAAAARmFpbGVkIHRvIGNyZWF0ZSBwcm9ncmFtIGV4ZWN1dGlvbiBlbnZpcm9ubWVudAAAyBwQAC4AAABDcm9zcy1wcm9ncmFtIGludm9jYXRpb24gd2l0aCB1bmF1dGhvcml6ZWQgc2lnbmVyIG9yIHdyaXRhYmxlIGFjY291bnQAAAAAHRAARQAAAENvbXB1dGF0aW9uYWwgYnVkZ2V0IGV4Y2VlZGVkAAAAUB0QAB0AAABGYWlsZWQgdG8gcmVhbGxvY2F0ZSBhY2NvdW50IGRhdGEAAAB4HRAAIQAAAFByb3ZpZGVkIHNlZWRzIGRvIG5vdCByZXN1bHQgaW4gYSB2YWxpZCBhZGRyZXNzAKQdEAAvAAAATGVuZ3RoIG9mIHRoZSBzZWVkIGlzIHRvbyBsb25nIGZvciBhZGRyZXNzIGdlbmVyYXRpb24AAADcHRAANQAAAENyb3NzLXByb2dyYW0gaW52b2NhdGlvbiByZWVudHJhbmN5IG5vdCBhbGxvd2VkIGZvciB0aGlzIGluc3RydWN0aW9uHB4QAEQAAABBbiBhY2NvdW50IHJlcXVpcmVkIGJ5IHRoZSBpbnN0cnVjdGlvbiBpcyBtaXNzaW5nAAAAaB4QADEAAABDcm9zcy1wcm9ncmFtIGludm9jYXRpb24gY2FsbCBkZXB0aCB0b28gZGVlcKQeEAAsAAAAVW5zdXBwb3J0ZWQgcHJvZ3JhbSBpZAAA2B4QABYAAABleGVjdXRhYmxlIGFjY291bnRzIG11c3QgYmUgcmVudCBleGVtcHQA+B4QACcAAABpbnN0cnVjdGlvbiBjaGFuZ2VkIHRoZSBiYWxhbmNlIG9mIGEgZXhlY3V0YWJsZSBhY2NvdW50ACgfEAA3AAAAaW5zdHJ1Y3Rpb24gY2hhbmdlZCBleGVjdXRhYmxlIGFjY291bnRzIGRhdGFoHxAALAAAAHByb2dyYW0gcmV0dXJuZWQgaW52YWxpZCBlcnJvciBjb2RlAJwfEAAjAAAAY3VzdG9tIHByb2dyYW0gZXJyb3I6IAAAyB8QABYAAAAAAAAAIAAAAAQAAAACAAAAAAAAAAIAAAAAAAAAAwAAAGluc3RydWN0aW9uIG1vZGlmaWNhdGlvbnMgb2YgbXVsdGlwbHktcGFzc2VkIGFjY291bnQgZGlmZmVyAAggEAA7AAAAaW5zdHJ1Y3Rpb24gbGVmdCBhY2NvdW50IHdpdGggYW4gb3V0c3RhbmRpbmcgYm9ycm93ZWQgcmVmZXJlbmNlAEwgEAA/AAAAaW5zdHJ1Y3Rpb24gdHJpZXMgdG8gYm9ycm93IHJlZmVyZW5jZSBmb3IgYW4gYWNjb3VudCB3aGljaCBpcyBhbHJlYWR5IGJvcnJvd2VkAACUIBAATgAAAGluc3RydWN0aW9uIGV4cGVjdGVkIGFuIGV4ZWN1dGFibGUgYWNjb3VudAAA7CAQACoAAABwcm9ncmFtIG90aGVyIHRoYW4gdGhlIGFjY291bnQncyBvd25lciBjaGFuZ2VkIHRoZSBzaXplIG9mIHRoZSBhY2NvdW50IGRhdGEAICEQAEsAAABpbnN1ZmZpY2llbnQgYWNjb3VudCBrZXlzIGZvciBpbnN0cnVjdGlvbgAAAHQhEAApAAAAaW5zdHJ1Y3Rpb24gbW9kaWZpZWQgcmVudCBlcG9jaCBvZiBhbiBhY2NvdW50AAAAqCEQAC0AAABpbnN0cnVjdGlvbiBjaGFuZ2VkIGV4ZWN1dGFibGUgYml0IG9mIGFuIGFjY291bnTgIRAAMAAAAGluc3RydWN0aW9uIGNvbnRhaW5zIGR1cGxpY2F0ZSBhY2NvdW50cwAYIhAAJwAAAGluc3RydWN0aW9uIG1vZGlmaWVkIGRhdGEgb2YgYSByZWFkLW9ubHkgYWNjb3VudEgiEAAwAAAAaW5zdHJ1Y3Rpb24gY2hhbmdlZCB0aGUgYmFsYW5jZSBvZiBhIHJlYWQtb25seSBhY2NvdW50AACAIhAANgAAAGluc3RydWN0aW9uIG1vZGlmaWVkIGRhdGEgb2YgYW4gYWNjb3VudCBpdCBkb2VzIG5vdCBvd24AwCIQADcAAABpbnN0cnVjdGlvbiBzcGVudCBmcm9tIHRoZSBiYWxhbmNlIG9mIGFuIGFjY291bnQgaXQgZG9lcyBub3Qgb3duACMQAEAAAABpbnN0cnVjdGlvbiBpbGxlZ2FsbHkgbW9kaWZpZWQgdGhlIHByb2dyYW0gaWQgb2YgYW4gYWNjb3VudABIIxAAOwAAAHN1bSBvZiBhY2NvdW50IGJhbGFuY2VzIGJlZm9yZSBhbmQgYWZ0ZXIgaW5zdHJ1Y3Rpb24gZG8gbm90IG1hdGNoAAAAjCMQAEEAAABpbnN0cnVjdGlvbiByZXF1aXJlcyBhbiBpbml0aWFsaXplZCBhY2NvdW50ANgjEAArAAAAaW5zdHJ1Y3Rpb24gcmVxdWlyZXMgYW4gdW5pbml0aWFsaXplZCBhY2NvdW50AAAADCQQAC0AAABtaXNzaW5nIHJlcXVpcmVkIHNpZ25hdHVyZSBmb3IgaW5zdHJ1Y3Rpb24AAEQkEAAqAAAAaW5jb3JyZWN0IHByb2dyYW0gaWQgZm9yIGluc3RydWN0aW9ueCQQACQAAABpbnN1ZmZpY2llbnQgZnVuZHMgZm9yIGluc3RydWN0aW9uAACkJBAAIgAAAGFjY291bnQgZGF0YSB0b28gc21hbGwgZm9yIGluc3RydWN0aW9uAADQJBAAJgAAAGludmFsaWQgYWNjb3VudCBkYXRhIGZvciBpbnN0cnVjdGlvbgAlEAAkAAAAaW52YWxpZCBpbnN0cnVjdGlvbiBkYXRhLCUQABgAAABpbnZhbGlkIHByb2dyYW0gYXJndW1lbnRMJRAAGAAAAGdlbmVyaWMgaW5zdHJ1Y3Rpb24gZXJyb3IAAABsJRAAGQAAAAan1RcZLFxRIYzJTD1K8X9Y2u4Im6H9ROPb2YoAAAAAMTIzNDU2Nzg5QUJDREVGR0hKS0xNTlBRUlNUVVZXWFlaYWJjZGVmZ2hpamttbm9wcXJzdHV2d3h5ev////////////////////////////////////////////////////////////////8AAQIDBAUGBwj/////////CQoLDA0ODxD/ERITFBX/FhcYGRobHB0eHyD///////8hIiMkJSYnKCkqK/8sLS4vMDEyMzQ1Njc4Of//////AAAmAAAADAAAAAQAAAAnAAAAKAAAAB4AAABhIERpc3BsYXkgaW1wbGVtZW50YXRpb24gcmV0dXJuZWQgYW4gZXJyb3IgdW5leHBlY3RlZGx5L3J1c3RjL2E4MzE0ZWY3ZDBlYzdiNzVjMzM2YWYyYzk4NTdiZmFmNDMwMDJiZmMvbGlicmFyeS9hbGxvYy9zcmMvc3RyaW5nLnJzAAC7JhAASwAAALEJAAAOAAAAKQAAAAQAAAAEAAAAKgAAACsAAAAsAAAAKQAAAAAAAAABAAAAIAAAACkAAAAAAAAAAQAAAC0AAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlACYAAAAUAAAABAAAAC4AAAAvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYnM1OC0wLjQuMC9zcmMvZW5jb2RlLnJzAAAAjCcQAFUAAABRAAAAKwAAAAAAAABn5glqha5nu3Lzbjw69U+lf1IOUYxoBZur2YMfGc3gWy9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9zb2xhbmEtcHJvZ3JhbS0xLjEwLjM4L3NyYy9wdWJrZXkucnNTbGljZSBtdXN0IGJlIHRoZSBzYW1lIGxlbmd0aCBhcyBhIFB1YmtleQAAGCgQAGEAAACHAAAAEgAAAFByb2dyYW1EZXJpdmVkQWRkcmVzc1VuYWJsZSB0byBmaW5kIGEgdmlhYmxlIHByb2dyYW0gYWRkcmVzcyBidW1wIHNlZWQAAMkoEAAxAAAAGCgQAGEAAAC0AQAAIAAAADAnEAAAAAAASW52YWxpZCBBcnJheSBvZiBVaW50OEFycmF5c1Byb3ZpZGVkIG93bmVyIGlzIG5vdCBhbGxvd2VkAAAAOCkQAB0AAABQcm92aWRlZCBzZWVkcyBkbyBub3QgcmVzdWx0IGluIGEgdmFsaWQgYWRkcmVzcwBgKRAALwAAAExlbmd0aCBvZiB0aGUgc2VlZCBpcyB0b28gbG9uZyBmb3IgYWRkcmVzcyBnZW5lcmF0aW9uAAAAmCkQADUAAABJbnZhbGlkIEJhc2U1OCBzdHJpbmcAAADYKRAAFQAAAFN0cmluZyBpcyB0aGUgd3Jvbmcgc2l6ZfgpEAAYAAAAVW5zdXBwb3J0ZWQgYXJndW1lbnQvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvc29sYW5hLXByb2dyYW0tMS4xMC4zOC9zcmMvd2FzbS9wdWJrZXkucnNhcnJheSB0byBiZSBpdGVyYWJsZQAALCoQAGYAAAAoAAAAPwAAAEludmFsaWQgYXJyYXkgYXJndW1lbnQ6ILgqEAAYAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3NvbGFuYS1wcm9ncmFtLTEuMTAuMzgvc3JjL3dhc20vbW9kLnJzANgqEABjAAAAEAAAAAoAAAAGp9UXGSxWjuCKhF9z0peIzwNcMUWyGrNE2AYuqUAAAAAAAAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYnM1OC0wLjQuMC9zcmMvZW5jb2RlLnJzAAAA0CsQAFUAAABVAQAAGgAAANArEABVAAAAXgEAAA0AAADQKxAAVQAAAGgBAAAJAAAA0CsQAFUAAABsAQAAFQAAANArEABVAAAAbQEAABAAAAAxMjM0NTY3ODlBQkNERUZHSEpLTE1OUFFSU1RVVldYWVphYmNkZWZnaGlqa21ub3BxcnN0dXZ3eHl6/////////////////////////////////////////////////////////////////wABAgMEBQYHCP////////8JCgsMDQ4PEP8REhMUFf8WFxgZGhscHR4fIP///////yEiIyQlJicoKSor/ywtLi8wMTIzNDU2Nzg5//////8AANArEABVAAAA5gAAACAAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZQAALwAAAAAAAAABAAAAMAAAAC9ydXN0Yy9hODMxNGVmN2QwZWM3Yjc1YzMzNmFmMmM5ODU3YmZhZjQzMDAyYmZjL2xpYnJhcnkvYWxsb2Mvc3JjL2NvbGxlY3Rpb25zL2J0cmVlL25hdmlnYXRlLnJzAKwtEABfAAAAuAAAACcAAACsLRAAXwAAAJQAAAAkAAAAMgAAAAQAAAAEAAAAMwAAADQAAAAvcnVzdGMvYTgzMTRlZjdkMGVjN2I3NWMzMzZhZjJjOTg1N2JmYWY0MzAwMmJmYy9saWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlLnJzQC4QAEwAAAAUAQAAMgAAADUAAAAMAAAABAAAADYAAAA3AAAAHgAAAGEgRGlzcGxheSBpbXBsZW1lbnRhdGlvbiByZXR1cm5lZCBhbiBlcnJvciB1bmV4cGVjdGVkbHkvcnVzdGMvYTgzMTRlZjdkMGVjN2I3NWMzMzZhZjJjOTg1N2JmYWY0MzAwMmJmYy9saWJyYXJ5L2FsbG9jL3NyYy9zdHJpbmcucnMAAOsuEABLAAAAsQkAAA4AAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlADIAAAAAAAAAAQAAACAAAABjYWxsZWQgYFJlc3VsdDo6dW53cmFwKClgIG9uIGFuIGBFcnJgIHZhbHVlADIAAAAAAAAAAQAAADgAAAAyAAAAAAAAAAEAAAAtAAAAZ+YJaoWuZ7ty8248OvVPpX9SDlGMaAWbq9mDHxnN4FtILxAAAAAAAC9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9zb2xhbmEtcHJvZ3JhbS0xLjEwLjM4L3NyYy9oYXNoLnJzAPgvEABfAAAAaAAAADcAAABsZW5ndGggbGFyZ2VyIHRoYW4gdTE2ZmFpbGVkIHRvIGRlY29kZWQgc3RyaW5nIHRvIGhhc2gAAH4wEAAgAAAAc3RyaW5nIGRlY29kZWQgdG8gd3Jvbmcgc2l6ZSBmb3IgaGFzaAAAAKgwEAAlAAAAVW5zdXBwb3J0ZWQgYXJndW1lbnQvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvc29sYW5hLXByb2dyYW0tMS4xMC4zOC9zcmMvd2FzbS9oYXNoLnJzYXJyYXkgdG8gYmUgaXRlcmFibGXsMBAAZAAAABcAAAA/AAAASW52YWxpZCBhcnJheSBhcmd1bWVudDogdDEQABgAAAAyAAAAAAAAAAEAAAA5AAAAOgAAADsAAAAvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvc29sYW5hLXByb2dyYW0tMS4xMC4zOC9zcmMvd2FzbS9tb2QucnMArDEQAGMAAAASAAAAOAAAAGNhcGFjaXR5IG92ZXJmbG93AAAAIDIQABEAAAAvcnVzdGMvYTgzMTRlZjdkMGVjN2I3NWMzMzZhZjJjOTg1N2JmYWY0MzAwMmJmYy9saWJyYXJ5L2FsbG9jL3NyYy92ZWMvc3BlY19mcm9tX2l0ZXJfbmVzdGVkLnJzAAA8MhAAXgAAADsAAAASAAAAL3J1c3RjL2E4MzE0ZWY3ZDBlYzdiNzVjMzM2YWYyYzk4NTdiZmFmNDMwMDJiZmMvbGlicmFyeS9hbGxvYy9zcmMvdmVjL3NwZWNfZXh0ZW5kLnJzrDIQAFQAAAA3AAAADQAAAC9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9sb2ctMC40LjE2L3NyYy9saWIucnMAABAzEABSAAAAWQIAADEAAABjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlAHQzEAAAAAAAPQAAAAAAAAABAAAAPQAAAAAAAAABAAAAqDMQAD4AAAA/AAAAQAAAAEEAAABCAAAAQwAAAEQAAABFAAAARgAAAAQAAAAEAAAARwAAAEgAAABJAAAASgAAAAwAAAAE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2JmlojoIANs8nPpgugoAPFE0oDihBgDsvnM63+gFAICYP5iSGwUAxoAcV5TpAQAbWCtj9E4EAMlk0yEcSQYAerRESaSMBQDuaBddchwAAODsiHqr5wEAX0vEmUgFBwAvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvY3VydmUyNTUxOS1kYWxlay0zLjIuMS9zcmMvd2luZG93LnJzAAAACFQQAGEAAACVAAAACQAAAAhUEABhAAAAwAAAAAkAAAAAAAAA7eYhZ71IDwBa5GestboDABvlNev//w8A////////DwD//////w8AADvRUull0gkAn6a+FcdjDQAEdmjLZb4FAH8hPcfu3AMAmjB8G0EJAABQAAAABAAAAAQAAABRAAAAUAAAAAQAAAAEAAAAUgAAAFEAAADgVBAAUwAAAFQAAABVAAAAVgAAAFcAAABFcnJvcjogABxVEAAHAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3JhbmRfY29yZS0wLjUuMS9zcmMvb3MucnMAACxVEABWAAAAPwAAAA0AAACUVRAAAAAAAGRlc2NyaXB0aW9uKCkgaXMgZGVwcmVjYXRlZDsgdXNlIERpc3BsYXlZAAAAY3J5cHRvRXJyb3J1bmtub3duX2NvZGUAXAAAAAQAAAAEAAAAXQAAAGludGVybmFsX2NvZGVkZXNjcmlwdGlvblwAAAAIAAAABAAAAF4AAABvc19lcnJvclwAAAAEAAAABAAAAF8AAABVbmtub3duIEVycm9yOiAAMFYQAA8AAABPUyBFcnJvcjogAABIVhAACgAAAHJhbmRTZWN1cmU6IHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIG1vZHVsZSBpcyBub3QgaW5pdGlhbGl6ZWRzdGR3ZWI6IGZhaWxlZCB0byBnZXQgcmFuZG9tbmVzc3N0ZHdlYjogbm8gcmFuZG9tbmVzcyBzb3VyY2UgYXZhaWxhYmxld2FzbS1iaW5kZ2VuOiBjcnlwdG8uZ2V0UmFuZG9tVmFsdWVzIGlzIHVuZGVmaW5lZHdhc20tYmluZGdlbjogc2VsZi5jcnlwdG8gaXMgdW5kZWZpbmVkUkRSQU5EOiBpbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkUkRSQU5EOiBmYWlsZWQgbXVsdGlwbGUgdGltZXM6IENQVSBpc3N1ZSBsaWtlbHlSdGxHZW5SYW5kb206IGNhbGwgZmFpbGVkU2VjUmFuZG9tQ29weUJ5dGVzOiBjYWxsIGZhaWxlZFVua25vd24gc3RkOjppbzo6RXJyb3JlcnJubzogZGlkIG5vdCByZXR1cm4gYSBwb3NpdGl2ZSB2YWx1ZWdldHJhbmRvbTogdGhpcyB0YXJnZXQgaXMgbm90IHN1cHBvcnRlZAAAAPpXEADUVxAAvlcQAJ9XEACGVxAAV1cQADZXEAAQVxAA31YQALlWEACZVhAAXFYQACcAAAAmAAAAFgAAAB8AAAAZAAAALwAAACEAAAAmAAAAMQAAACYAAAAgAAAAPQAAAPpXEADUVxAAvlcQAJ9XEACGVxAAV1cQADZXEAAQVxAA31YQALlWEACZVhAAXFYQAGNhbm5vdCBhY2Nlc3MgYSBUaHJlYWQgTG9jYWwgU3RvcmFnZSB2YWx1ZSBkdXJpbmcgb3IgYWZ0ZXIgZGVzdHJ1Y3Rpb24vcnVzdGMvYTgzMTRlZjdkMGVjN2I3NWMzMzZhZjJjOTg1N2JmYWY0MzAwMmJmYy9saWJyYXJ5L3N0ZC9zcmMvdGhyZWFkL2xvY2FsLnJzAAAA+lgQAE8AAAClAQAAGgAAAGFscmVhZHkgYm9ycm93ZWRjYWxsZWQgYE9wdGlvbjo6dW53cmFwKClgIG9uIGEgYE5vbmVgIHZhbHVlAGAAAAAAAAAAAQAAAGEAAABgAAAAAAAAAAEAAABiAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2dldHJhbmRvbS0wLjEuMTYvc3JjL3dhc20zMl9iaW5kZ2VuLnJzALhZEABjAAAAKwAAABwAAAC4WRAAYwAAADAAAAAfAAAAQnVmZmVyVG9vU21hbGwvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvYnM1OC0wLjQuMC9zcmMvZGVjb2RlLnJzAEpaEABVAAAA1AAAABoAAABKWhAAVQAAAOgAAAAFAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2pzLXN5cy0wLjMuNTYvc3JjL2xpYi5ycwAAAMBaEABVAAAAUxYAAAEAAABuAAAABAAAAAQAAABvAAAAY2xvc3VyZSBpbnZva2VkIHJlY3Vyc2l2ZWx5IG9yIGRlc3Ryb3llZCBhbHJlYWR5KCkAAHAAAAAAAAAAAQAAAHAAAAAAAAAAAQAAAGxbEABxAAAAcgAAAHMAAABTZXRMb2dnZXJFcnJvcgAAcAAAAAQAAAAEAAAAdAAAAEJpbmNvZGUgY2FuIG9ubHkgZW5jb2RlIHNlcXVlbmNlcyBhbmQgbWFwcyB0aGF0IGhhdmUgYSBrbm93YWJsZSBzaXplIGFoZWFkIG9mIHRpbWV0aGUgc2l6ZSBsaW1pdCBoYXMgYmVlbiByZWFjaGVkdGFnIGZvciBlbnVtIGlzIG5vdCB2YWxpZGNoYXIgaXMgbm90IHZhbGlkaW52YWxpZCB1OCB3aGlsZSBkZWNvZGluZyBib29sc3RyaW5nIGlzIG5vdCB2YWxpZCB1dGY4AAAAtFsQAAAAAABCaW5jb2RlIGRvZXMgbm90IHN1cHBvcnQgdGhlIHNlcmRlOjpEZXNlcmlhbGl6ZXI6OmRlc2VyaWFsaXplX2FueSBtZXRob2SQXBAASAAAACwgZm91bmQgtFsQAAAAAADgXBAACAAAACwgZXhwZWN0ZWQgMCBvciAxLCBmb3VuZCAAAAC0WxAAAAAAAPhcEAAZAAAAOiAAALRbEAAAAAAAJF0QAAIAAABpbyBlcnJvcjogAAA4XRAACgAAAEN1c3RvbQAAeQAAAAQAAAAEAAAAegAAAFNlcXVlbmNlTXVzdEhhdmVMZW5ndGhTaXplTGltaXREZXNlcmlhbGl6ZUFueU5vdFN1cHBvcnRlZEludmFsaWRUYWdFbmNvZGluZwB5AAAABAAAAAQAAAB7AAAASW52YWxpZENoYXJFbmNvZGluZ0ludmFsaWRCb29sRW5jb2RpbmcAAHkAAAAEAAAABAAAAHwAAABJbnZhbGlkVXRmOEVuY29kaW5nAHkAAAAEAAAABAAAAH0AAABJbwAAeQAAAAQAAAAEAAAAfgAAAD4AAAAwXhAAAAAAADBeEAABAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2J5dGVtdWNrLTEuOC4wL3NyYy9saWIucnMAAEReEABWAAAAeQAAAAMAAAAwXhAAAAAAAEFsaWdubWVudE1pc21hdGNoU2l6ZU1pc21hdGNoT3V0cHV0U2xpY2VXb3VsZEhhdmVTbG9wVGFyZ2V0QWxpZ25tZW50R3JlYXRlckFuZElucHV0Tm90QWxpZ25lZAAAABRfEAAAAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3J1c3RfZGVjaW1hbC0xLjIzLjEvc3JjL2RlY2ltYWwucnMAHF8QAF8AAACDAQAAFwAAABxfEABfAAAAvwEAABcAAAABAAAACgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUAypo7AAAAAAAAAAABAAAAAAAAABxfEABfAAAA6ggAACEAAAAAAAAAAAAAAAAAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvQWRkaXRpb24gb3ZlcmZsb3dlZC9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ydXN0X2RlY2ltYWwtMS4yMy4xL3NyYy9hcml0aG1ldGljX2ltcGxzLnJzHGAQAGgAAAChAAAAEgAAAERpdmlzaW9uIGJ5IHplcm8cYBAAaAAAANsAAAAtAAAARGl2aXNpb24gb3ZlcmZsb3dlZAAcYBAAaAAAANoAAAAsAAAATXVsdGlwbGljYXRpb24gb3ZlcmZsb3dlZAAAABxgEABoAAAA6AAAABIAAABTdWJ0cmFjdGlvbiBvdmVyZmxvd2VkAAAcYBAAaAAAAAMBAAASAAAAL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3J1c3RfZGVjaW1hbC0xLjIzLjEvc3JjL21hdGhzLnJzUG93IG92ZXJmbG93ZWQALGEQAF0AAADKAAAAFQAAAFVuYWJsZSB0byBjYWxjdWxhdGUgbG4gZm9yIG5lZ2F0aXZlIG51bWJlcnMALGEQAF0AAAB2AQAAFQAAAFVuYWJsZSB0byBjYWxjdWxhdGUgbG4gZm9yIHplcm8ALGEQAF0AAAB4AQAAFQAAAENhbGN1bGF0aW9uIG9mIGxuIGZhaWxlZCBmb3IgdW5rbm93biByZWFzb25zLGEQAF0AAAB6AQAAFQAAAAAAHAAEB+MLRtsZjlKsWKoAABwAqxnVV1rteoU13uzrL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3J1c3RfZGVjaW1hbC0xLjIzLjEvc3JjL29wcy9hcnJheS5yc0ludGVybmFsIGVycm9yOiBkaXZpZGUgYnkgemVybwBwYhAAYQAAAN4AAAAJAAAAAQAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFAMqaOy9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ydXN0X2RlY2ltYWwtMS4yMy4xL3NyYy9vcHMvY21wLnJzAChjEABfAAAAUAAAAA0AAACDAAAACAAAAAQAAACEAAAAhQAAAIgAAAAIAAAABAAAAIkAAABFcnJvciB3aGlsZSBjb252ZXJ0aW5nIHRvIAAAvGMQABoAAABTY2FsZSBleGNlZWRzIHRoZSBtYXhpbXVtIHByZWNpc2lvbiBhbGxvd2VkOiAgPiDgYxAALQAAAA1kEAADAAAAHAAAAE51bWJlciBoYXMgYSBoaWdoIHByZWNpc2lvbiB0aGF0IGNhbiBub3QgYmUgcmVwcmVzZW50ZWQuJGQQADgAAABOdW1iZXIgbGVzcyB0aGFuIG1pbmltdW0gdmFsdWUgdGhhdCBjYW4gYmUgcmVwcmVzZW50ZWQuAGRkEAA3AAAATnVtYmVyIGV4Y2VlZHMgbWF4aW11bSB2YWx1ZSB0aGF0IGNhbiBiZSByZXByZXNlbnRlZC4AAACkZBAANQAAAENvbnZlcnNpb25Ub4gAAAAEAAAABAAAAIoAAABTY2FsZUV4Y2VlZHNNYXhpbXVtUHJlY2lzaW9uiAAAAAQAAAAEAAAAiwAAAFVuZGVyZmxvd0xlc3NUaGFuTWluaW11bVBvc3NpYmxlVmFsdWVFeGNlZWRzTWF4aW11bVBvc3NpYmxlVmFsdWVFcnJvclN0cmluZy9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ydXN0X2RlY2ltYWwtMS4yMy4xL3NyYy9vcHMvY29tbW9uLnJzAAAAd2UQAGIAAABpAAAAFQAAAJmZmZmZmZmZmZmZGY/C9Shcj8L1KFyPAg4tsp3vp8ZLN4lBABueXinLEMe6uI0GAM8PI4RHG0esxacAAMe0No3ttaD3xhAAAHp4hfTKqyl/rQEAAD+/cxhhxB3zKgAAAHdlEABiAAAAWQEAAB8AAAABAAAACgAAAGQAAADoAwAAECcAAKCGAQBAQg8AgJaYAADh9QUAypo7d2UQAGIAAABzAQAAHAAAAHdlEABiAAAAdAEAACUAAAAAAAAAAAAAAAAAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3J1c3RfZGVjaW1hbC0xLjIzLjEvc3JjL29wcy9kaXYucnPJZhAAXwAAAB8AAAAXAAAAyWYQAF8AAAAyAAAAHAAAAMlmEABfAAAAXwAAABwAAADJZhAAXwAAAKEAAAAXAAAAAQAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFAMqaOy9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ydXN0X2RlY2ltYWwtMS4yMy4xL3NyYy9vcHMvZGl2LnJzAJBnEABfAAAACgIAAB0AAACQZxAAXwAAAKUBAAAdAAAAkGcQAF8AAAAwAQAAGQAAAJBnEABfAAAAOQEAACYAAABhdHRlbXB0IHRvIGRpdmlkZSBieSB6ZXJvAAAAAQAAAAoAAABkAAAA6AMAABAnAACghgEAQEIPAICWmAAA4fUFAMqaOy9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9ydXN0X2RlY2ltYWwtMS4yMy4xL3NyYy9vcHMvYWRkLnJzAHRoEABfAAAA2QAAAB4AAAB0aBAAXwAAAPsAAAANAAAAdGgQAF8AAAAsAQAADQAAAHRoEABfAAAATAEAABAAAAB0aBAAXwAAAOUAAAARAAAAAAAAAAoAAAAAAAAAZAAAAAAAAADoAwAAAAAAABAnAAAAAAAAoIYBAAAAAABAQg8AAAAAAICWmAAAAAAAAOH1BQAAAAAAypo7AAAAAADkC1QCAAAAAOh2SBcAAAAAEKXU6AAAAACgck4YCQAAAEB6EPNaAAAAgMakfo0DAAAAwW/yhiMAAACKXXhFYwEAAGSns7bgDQAA6IkEI8eKL2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL3J1c3RfZGVjaW1hbC0xLjIzLjEvc3JjL29wcy9tdWwucnMAwGkQAF8AAAAgAAAAGwAAAGF0dGVtcHQgdG8gZGl2aWRlIGJ5IHplcm8AAABzdHJ1Y3QgdmFyaWFudAAATGoQAA4AAAB0dXBsZSB2YXJpYW50AAAAZGoQAA0AAABuZXd0eXBlIHZhcmlhbnQAfGoQAA8AAAB1bml0IHZhcmlhbnSUahAADAAAAGVudW2oahAABAAAAG1hcAC0ahAAAwAAAHNlcXVlbmNlwGoQAAgAAABuZXd0eXBlIHN0cnVjdAAA0GoQAA4AAABPcHRpb24gdmFsdWXoahAADAAAAHVuaXQgdmFsdWUAAPxqEAAKAAAAYnl0ZSBhcnJheQAAEGsQAAoAAABzdHJpbmcgACRrEAAHAAAAY2hhcmFjdGVyIGBgNGsQAAsAAAA/axAAAQAAAGZsb2F0aW5nIHBvaW50IGBQaxAAEAAAAD9rEAABAAAAaW50ZWdlciBgAAAAcGsQAAkAAAA/axAAAQAAAGJvb2xlYW4gYAAAAIxrEAAJAAAAP2sQAAEAAABKc1ZhbHVlKCkAAACoaxAACAAAALBrEAABAAAAbnVsbCBwb2ludGVyIHBhc3NlZCB0byBydXN0cmVjdXJzaXZlIHVzZSBvZiBhbiBvYmplY3QgZGV0ZWN0ZWQgd2hpY2ggd291bGQgbGVhZCB0byB1bnNhZmUgYWxpYXNpbmcgaW4gcnVzdAAAlgAAAAQAAAAEAAAAlwAAAJgAAACZAAAAYWxyZWFkeSBib3Jyb3dlZGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUAlgAAAAAAAAABAAAAYgAAAGNhbGxlZCBgUmVzdWx0Ojp1bndyYXAoKWAgb24gYW4gYEVycmAgdmFsdWUAmgAAAAgAAAAEAAAAmwAAAJYAAAAEAAAABAAAAJwAAACWAAAABAAAAAQAAACdAAAAQWNjZXNzRXJyb3J1c2Ugb2Ygc3RkOjp0aHJlYWQ6OmN1cnJlbnQoKSBpcyBub3QgcG9zc2libGUgYWZ0ZXIgdGhlIHRocmVhZCdzIGxvY2FsIGRhdGEgaGFzIGJlZW4gZGVzdHJveWVkbGlicmFyeS9zdGQvc3JjL3RocmVhZC9tb2QucnMAAFltEAAdAAAApQIAACMAAABmYWlsZWQgdG8gZ2VuZXJhdGUgdW5pcXVlIHRocmVhZCBJRDogYml0c3BhY2UgZXhoYXVzdGVkAIhtEAA3AAAAWW0QAB0AAAATBAAAEQAAAFltEAAdAAAAGQQAACoAAABIbBAAAAAAAAB1bmNhdGVnb3JpemVkIGVycm9yb3RoZXIgZXJyb3JvdXQgb2YgbWVtb3J5dW5leHBlY3RlZCBlbmQgb2YgZmlsZXVuc3VwcG9ydGVkb3BlcmF0aW9uIGludGVycnVwdGVkYXJndW1lbnQgbGlzdCB0b28gbG9uZ2ludmFsaWQgZmlsZW5hbWV0b28gbWFueSBsaW5rc2Nyb3NzLWRldmljZSBsaW5rIG9yIHJlbmFtZWRlYWRsb2NrZXhlY3V0YWJsZSBmaWxlIGJ1c3lyZXNvdXJjZSBidXN5ZmlsZSB0b28gbGFyZ2VmaWxlc3lzdGVtIHF1b3RhIGV4Y2VlZGVkc2VlayBvbiB1bnNlZWthYmxlIGZpbGVubyBzdG9yYWdlIHNwYWNld3JpdGUgemVyb3RpbWVkIG91dGludmFsaWQgZGF0YWludmFsaWQgaW5wdXQgcGFyYW1ldGVyc3RhbGUgbmV0d29yayBmaWxlIGhhbmRsZWZpbGVzeXN0ZW0gbG9vcCBvciBpbmRpcmVjdGlvbiBsaW1pdCAoZS5nLiBzeW1saW5rIGxvb3ApcmVhZC1vbmx5IGZpbGVzeXN0ZW0gb3Igc3RvcmFnZSBtZWRpdW1kaXJlY3Rvcnkgbm90IGVtcHR5aXMgYSBkaXJlY3Rvcnlub3QgYSBkaXJlY3RvcnlvcGVyYXRpb24gd291bGQgYmxvY2tlbnRpdHkgYWxyZWFkeSBleGlzdHNicm9rZW4gcGlwZW5ldHdvcmsgZG93bmFkZHJlc3Mgbm90IGF2YWlsYWJsZWFkZHJlc3MgaW4gdXNlbm90IGNvbm5lY3RlZGNvbm5lY3Rpb24gYWJvcnRlZG5ldHdvcmsgdW5yZWFjaGFibGVob3N0IHVucmVhY2hhYmxlY29ubmVjdGlvbiByZXNldGNvbm5lY3Rpb24gcmVmdXNlZHBlcm1pc3Npb24gZGVuaWVkZW50aXR5IG5vdCBmb3VuZEVycm9ya2luZACWAAAAAQAAAAEAAACeAAAAbWVzc2FnZQCWAAAACAAAAAQAAACfAAAAS2luZE9zY29kZQAAlgAAAAQAAAAEAAAAoAAAAKEAAAAMAAAABAAAAKIAAAAgKG9zIGVycm9yIClIbBAAAAAAADxxEAALAAAAR3EQAAEAAABsaWJyYXJ5L3N0ZC9zcmMvc3luYy9vbmNlLnJzYXNzZXJ0aW9uIGZhaWxlZDogc3RhdGVfYW5kX3F1ZXVlLmFkZHIoKSAmIFNUQVRFX01BU0sgPT0gUlVOTklOR09uY2UgaW5zdGFuY2UgaGFzIHByZXZpb3VzbHkgYmVlbiBwb2lzb25lZAAAvHEQACoAAAACAAAAYHEQABwAAAD/AQAACQAAAGBxEAAcAAAADAIAADUAAABQb2lzb25FcnJvcmxpYnJhcnkvc3RkL3NyYy9zeXNfY29tbW9uL3RocmVhZF9pbmZvLnJzH3IQACkAAAAWAAAAMwAAAG1lbW9yeSBhbGxvY2F0aW9uIG9mICBieXRlcyBmYWlsZWQKAFhyEAAVAAAAbXIQAA4AAABsaWJyYXJ5L3N0ZC9zcmMvYWxsb2MucnOMchAAGAAAAEQBAAAJAAAAY2Fubm90IG1vZGlmeSB0aGUgcGFuaWMgaG9vayBmcm9tIGEgcGFuaWNraW5nIHRocmVhZLRyEAA0AAAAbGlicmFyeS9zdGQvc3JjL3Bhbmlja2luZy5yc/ByEAAcAAAAfQAAAAkAAADwchAAHAAAAEYCAAAfAAAA8HIQABwAAABHAgAAHgAAAKEAAAAMAAAABAAAAKMAAACWAAAACAAAAAQAAACkAAAApQAAABAAAAAEAAAApgAAAKcAAACWAAAACAAAAAQAAACoAAAAqQAAAFVuc3VwcG9ydGVkAJYAAAAEAAAABAAAAKoAAABDdXN0b21lcnJvcgCWAAAABAAAAAQAAACrAAAAVW5jYXRlZ29yaXplZE90aGVyT3V0T2ZNZW1vcnlVbmV4cGVjdGVkRW9mSW50ZXJydXB0ZWRBcmd1bWVudExpc3RUb29Mb25nSW52YWxpZEZpbGVuYW1lVG9vTWFueUxpbmtzQ3Jvc3Nlc0RldmljZXNEZWFkbG9ja0V4ZWN1dGFibGVGaWxlQnVzeVJlc291cmNlQnVzeUZpbGVUb29MYXJnZUZpbGVzeXN0ZW1RdW90YUV4Y2VlZGVkTm90U2Vla2FibGVTdG9yYWdlRnVsbFdyaXRlWmVyb1RpbWVkT3V0SW52YWxpZERhdGFJbnZhbGlkSW5wdXRTdGFsZU5ldHdvcmtGaWxlSGFuZGxlRmlsZXN5c3RlbUxvb3BSZWFkT25seUZpbGVzeXN0ZW1EaXJlY3RvcnlOb3RFbXB0eUlzQURpcmVjdG9yeU5vdEFEaXJlY3RvcnlXb3VsZEJsb2NrQWxyZWFkeUV4aXN0c0Jyb2tlblBpcGVOZXR3b3JrRG93bkFkZHJOb3RBdmFpbGFibGVBZGRySW5Vc2VOb3RDb25uZWN0ZWRDb25uZWN0aW9uQWJvcnRlZE5ldHdvcmtVbnJlYWNoYWJsZUhvc3RVbnJlYWNoYWJsZUNvbm5lY3Rpb25SZXNldENvbm5lY3Rpb25SZWZ1c2VkUGVybWlzc2lvbkRlbmllZE5vdEZvdW5kb3BlcmF0aW9uIHN1Y2Nlc3NmdWxjb25kdmFyIHdhaXQgbm90IHN1cHBvcnRlZAAAAON1EAAaAAAAbGlicmFyeS9zdGQvc3JjL3N5cy93YXNtLy4uL3Vuc3VwcG9ydGVkL2xvY2tzL2NvbmR2YXIucnMIdhAAOAAAABcAAAAJAAAAY2Fubm90IHJlY3Vyc2l2ZWx5IGFjcXVpcmUgbXV0ZXhQdhAAIAAAAGxpYnJhcnkvc3RkL3NyYy9zeXMvd2FzbS8uLi91bnN1cHBvcnRlZC9sb2Nrcy9tdXRleC5ycwAAeHYQADYAAAAXAAAACQAAAGxpYnJhcnkvc3RkL3NyYy9z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VXNlckNhbmNlbADVAAAABAAAAAQAAADWAAAAUHJvdG9jb2xOb0RldmljZUZvdW5kSW52YWxpZElucHV0Q29ubmVjdGlvblByZXNpZ25lckVycm9yAAAA1QAAAAQAAAAEAAAA1wAAAEN1c3RvbVRyYW5zYWN0aW9uRXJyb3IAANUAAAAEAAAABAAAANgAAABOb3RFbm91Z2hTaWduZXJzS2V5cGFpclB1YmtleU1pc21hdGNoUHVibGljS2V5U2xpY2UgbXVzdCBiZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIGFycmF5L2hvbWUvdWJ1bnR1Ly5jYXJnby9yZWdpc3RyeS9zcmMvZ2l0aHViLmNvbS0xZWNjNjI5OWRiOWVjODIzL2dlbmVyaWMtYXJyYXktMC4xNC41L3NyYy9saWIucnN0jREAXAAAAEsCAAAOAAAAYW4gYXJyYXkgb2YgbGVuZ3RoIDMyQ29tcGlsZWRJbnN0cnVjdGlvbnByb2dyYW1JZEluZGV4YWNjb3VudHNkYXRhAAAIjhEADgAAABaOEQAIAAAAHo4RAAQAAADZAAAABAAAAAQAAADaAAAAY2FsbGVkIGBSZXN1bHQ6OnVud3JhcCgpYCBvbiBhbiBgRXJyYCB2YWx1ZXN0cnVjdCBHZW5lcmljQXJyYXkAANsAAAAAAAAAAQAAANwAAAAvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvc29sYW5hLXNkay0xLjEwLjM4L3NyYy90cmFuc2FjdGlvbi9tb2QucnNUcmFuc2FjdGlvbjo6cGFydGlhbF9zaWduIGZhaWxlZCB3aXRoIGVycm9yIAAAAo8RACwAAACcjhEAZgAAAOACAAANAAAAnI4RAGYAAAC6AwAALQAAAJyOEQBmAAAAugMAAA0AAABUcmFuc2FjdGlvbnNpZ25hdHVyZXNtZXNzYWdlc48RAAoAAAB9jxEABwAAAC9ob21lL3VidW50dS8uY2FyZ28vcmVnaXN0cnkvc3JjL2dpdGh1Yi5jb20tMWVjYzYyOTlkYjllYzgyMy9zb2xhbmEtc2RrLTEuMTAuMzgvc3JjL3dhc20vdHJhbnNhY3Rpb24ucnMAlI8RAGcAAAAwAAAAIgAAAGNhbGxlZCBgT3B0aW9uOjp1bndyYXAoKWAgb24gYSBgTm9uZWAgdmFsdWUvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvc29sYW5hLXNkay0xLjEwLjM4L3NyYy90cmFuc2FjdGlvbi9tb2QucnMAAAA3kBEAZgAAAJkDAABEAAAAVmVyaWZpY2F0aW9uRmFpbHVyZVRyYW5zYWN0aW9uIHJlc3VsdHMgaW4gYW4gYWNjb3VudCAoKSB3aXRob3V0IGluc3VmZmljaWVudCBmdW5kcyBmb3IgcmVudADDkBEAIwAAAOaQEQAlAAAAVHJhbnNhY3Rpb24gY29udGFpbnMgYSBkdXBsaWNhdGUgaW5zdHJ1Y3Rpb24gKCkgdGhhdCBpcyBub3QgYWxsb3dlZAAckREALgAAAEqREQAVAAAAVHJhbnNhY3Rpb24gd291bGQgZXhjZWVkIHRvdGFsIGFjY291bnQgZGF0YSBsaW1pdAAAAHCREQAxAAAAVHJhbnNhY3Rpb24gd291bGQgZXhjZWVkIG1heCBWb3RlIENvc3QgTGltaXSskREALAAAAFRyYW5zYWN0aW9uIGxlYXZlcyBhbiBhY2NvdW50IHdpdGggYSBsb3dlciBiYWxhbmNlIHRoYW4gcmVudC1leGVtcHQgbWluaW11bQDgkREASwAAAFRyYW5zYWN0aW9uIGFkZHJlc3MgdGFibGUgbG9va3VwIHVzZXMgYW4gaW52YWxpZCBpbmRleAAANJIRADYAAABUcmFuc2FjdGlvbiBsb2FkcyBhbiBhZGRyZXNzIHRhYmxlIGFjY291bnQgd2l0aCBpbnZhbGlkIGRhdGF0khEAPAAAAFRyYW5zYWN0aW9uIGxvYWRzIGFuIGFkZHJlc3MgdGFibGUgYWNjb3VudCB3aXRoIGFuIGludmFsaWQgb3duZXK4khEAQAAAAFRyYW5zYWN0aW9uIGxvYWRzIGFuIGFkZHJlc3MgdGFibGUgYWNjb3VudCB0aGF0IGRvZXNuJ3QgZXhpc3QAAAAAkxEAPQAAAFRyYW5zYWN0aW9uIGxvY2tlZCB0b28gbWFueSBhY2NvdW50c0iTEQAkAAAAVHJhbnNhY3Rpb24gd291bGQgZXhjZWVkIGFjY291bnQgZGF0YSBsaW1pdCB3aXRoaW4gdGhlIGJsb2NrdJMRADwAAABUcmFuc2FjdGlvbiB3b3VsZCBleGNlZWQgbWF4IGFjY291bnQgbGltaXQgd2l0aGluIHRoZSBibG9jawC4kxEAOwAAAFRyYW5zYWN0aW9uIGxvYWRzIGEgd3JpdGFibGUgYWNjb3VudCB0aGF0IGNhbm5vdCBiZSB3cml0dGVuAPyTEQA7AAAAVHJhbnNhY3Rpb24gdmVyc2lvbiBpcyB1bnN1cHBvcnRlZAAAQJQRACIAAABUcmFuc2FjdGlvbiB3b3VsZCBleGNlZWQgbWF4IEJsb2NrIENvc3QgTGltaXQAAABslBEALQAAAFRyYW5zYWN0aW9uIHByb2Nlc3NpbmcgbGVmdCBhbiBhY2NvdW50IHdpdGggYW4gb3V0c3RhbmRpbmcgYm9ycm93ZWQgcmVmZXJlbmNlAAAApJQRAE0AAABUcmFuc2FjdGlvbnMgYXJlIGN1cnJlbnRseSBkaXNhYmxlZCBkdWUgdG8gY2x1c3RlciBtYWludGVuYW5jZQAA/JQRAD4AAABUcmFuc2FjdGlvbiBmYWlsZWQgdG8gc2FuaXRpemUgYWNjb3VudHMgb2Zmc2V0cyBjb3JyZWN0bHkAAABElREAOQAAAFRoaXMgcHJvZ3JhbSBtYXkgbm90IGJlIHVzZWQgZm9yIGV4ZWN1dGluZyBpbnN0cnVjdGlvbnMAiJURADcAAABUcmFuc2FjdGlvbiBkaWQgbm90IHBhc3Mgc2lnbmF0dXJlIHZlcmlmaWNhdGlvbgDIlREALwAAAFRyYW5zYWN0aW9uIGNvbnRhaW5zIGFuIGludmFsaWQgYWNjb3VudCByZWZlcmVuY2UAAAAAlhEAMQAAAFRyYW5zYWN0aW9uIHJlcXVpcmVzIGEgZmVlIGJ1dCBoYXMgbm8gc2lnbmF0dXJlIHByZXNlbnQAPJYRADcAAABMb2FkZXIgY2FsbCBjaGFpbiBpcyB0b28gZGVlcAAAAHyWEQAdAAAARXJyb3IgcHJvY2Vzc2luZyBJbnN0cnVjdGlvbiA6IACklhEAHQAAAMGWEQACAAAAQmxvY2toYXNoIG5vdCBmb3VuZADUlhEAEwAAAFRoaXMgdHJhbnNhY3Rpb24gaGFzIGFscmVhZHkgYmVlbiBwcm9jZXNzZWQA8JYRACsAAABUaGlzIGFjY291bnQgbWF5IG5vdCBiZSB1c2VkIHRvIHBheSB0cmFuc2FjdGlvbiBmZWVzJJcRADQAAABJbnN1ZmZpY2llbnQgZnVuZHMgZm9yIGZlZQAAYJcRABoAAABBdHRlbXB0IHRvIGxvYWQgYSBwcm9ncmFtIHRoYXQgZG9lcyBub3QgZXhpc3QAAACElxEALQAAAEF0dGVtcHQgdG8gZGViaXQgYW4gYWNjb3VudCBidXQgZm91bmQgbm8gcmVjb3JkIG9mIGEgcHJpb3IgY3JlZGl0LgAAvJcRAEIAAABBY2NvdW50IGxvYWRlZCB0d2ljZQiYEQAUAAAAQWNjb3VudCBpbiB1c2UAACSYEQAOAAAASW5zdWZmaWNpZW50RnVuZHNGb3JSZW50YWNjb3VudF9pbmRleAAAAN8AAAAEAAAABAAAAOAAAABEdXBsaWNhdGVJbnN0cnVjdGlvbldvdWxkRXhjZWVkQWNjb3VudERhdGFUb3RhbExpbWl0V291bGRFeGNlZWRNYXhWb3RlQ29zdExpbWl0SW52YWxpZFJlbnRQYXlpbmdBY2NvdW50SW52YWxpZEFkZHJlc3NMb29rdXBUYWJsZUluZGV4SW52YWxpZEFkZHJlc3NMb29rdXBUYWJsZURhdGFJbnZhbGlkQWRkcmVzc0xvb2t1cFRhYmxlT3duZXJBZGRyZXNzTG9va3VwVGFibGVOb3RGb3VuZFRvb01hbnlBY2NvdW50TG9ja3NXb3VsZEV4Y2VlZEFjY291bnREYXRhQmxvY2tMaW1pdFdvdWxkRXhjZWVkTWF4QWNjb3VudENvc3RMaW1pdEludmFsaWRXcml0YWJsZUFjY291bnRVbnN1cHBvcnRlZFZlcnNpb25Xb3VsZEV4Y2VlZE1heEJsb2NrQ29zdExpbWl0QWNjb3VudEJvcnJvd091dHN0YW5kaW5nQ2x1c3Rlck1haW50ZW5hbmNlU2FuaXRpemVGYWlsdXJlSW52YWxpZFByb2dyYW1Gb3JFeGVjdXRpb25TaWduYXR1cmVGYWlsdXJlSW52YWxpZEFjY291bnRJbmRleE1pc3NpbmdTaWduYXR1cmVGb3JGZWVDYWxsQ2hhaW5Ub29EZWVwSW5zdHJ1Y3Rpb25FcnJvcgDfAAAABAAAAAQAAADhAAAAQmxvY2toYXNoTm90Rm91bmRBbHJlYWR5UHJvY2Vzc2VkSW52YWxpZEFjY291bnRGb3JGZWVJbnN1ZmZpY2llbnRGdW5kc0ZvckZlZVByb2dyYW1BY2NvdW50Tm90Rm91bmRBY2NvdW50Tm90Rm91bmRBY2NvdW50TG9hZGVkVHdpY2VBY2NvdW50SW5Vc2UA5AAAAAwAAAAEAAAA5QAAAOYAAADnAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseS9ydXN0Yy9hODMxNGVmN2QwZWM3Yjc1YzMzNmFmMmM5ODU3YmZhZjQzMDAyYmZjL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAf5sRAEsAAACxCQAADgAAAOgAAAAAAAAAAQAAACAAAABpbnZhbGlkIHZhbHVlOiAsIGV4cGVjdGVkIAAA7JsRAA8AAAD7mxEACwAAAGludmFsaWQgbGVuZ3RoIAAYnBEADwAAAPubEQALAAAAY29udGludWUgc2lnbmFsIG9uIGJ5dGUtdGhyZWVhIHRlcm1pbmFsIHNpZ25hbCBvbiBvciBiZWZvcmUgYnl0ZS10aHJlZQAAVZwRACkAAADpAAAACAAAAAQAAADqAAAAYWxpYXMgZW5jb2RpbmdzdHJpY3QgZm9ybSBlbmNvZGluZwAAppwRABQAAABhIHZhbHVlIGluIHRoZSByYW5nZSBbMCwgNjU1MzVdAMScEQAfAAAAbW9yZSBieXRlcwAA7JwRAAoAAAB0aHJlZSBvciBmZXdlciBieXRlcwCdEQAUAAAAbGVuZ3RoIGxhcmdlciB0aGFuIHUxNgAA6wAAAAwAAAAEAAAA7AAAAO0AAADnAAAAYSBEaXNwbGF5IGltcGxlbWVudGF0aW9uIHJldHVybmVkIGFuIGVycm9yIHVuZXhwZWN0ZWRseS9ydXN0Yy9hODMxNGVmN2QwZWM3Yjc1YzMzNmFmMmM5ODU3YmZhZjQzMDAyYmZjL2xpYnJhcnkvYWxsb2Mvc3JjL3N0cmluZy5ycwAAg50RAEsAAACxCQAADgAAAOkAAAAAAAAAAQAAACAAAADuAAAACAAAAAQAAADJAAAAYSBWZWMgd2l0aCBhIG11bHRpLWJ5dGUgbGVuZ3RoAADpAAAAAAAAAAEAAADvAAAAc2lnbmF0dXJlIG9wZXJhdGlvbiBmYWlsZWQvaG9tZS91YnVudHUvLmNhcmdvL3JlZ2lzdHJ5L3NyYy9naXRodWIuY29tLTFlY2M2Mjk5ZGI5ZWM4MjMvc2lnbmF0dXJlLTEuNi4wL3NyYy9zaWduZXIucnNKnhEAWgAAABAAAAAcAAAA8AAAAAAAAAABAAAA8QAAAPAAAAAIAAAABAAAAOoAAABzdHJ1Y3QgTWVzc2FnZSB3aXRoIDQgZWxlbWVudHMAANSeEQAeAAAAc3RydWN0IENvbXBpbGVkSW5zdHJ1Y3Rpb24gd2l0aCAzIGVsZW1lbnRzAAD8nhEAKgAAAPAAAAAEAAAABAAAAPIAAADzAAAA9AAAAHN0cnVjdCBUcmFuc2FjdGlvbiB3aXRoIDIgZWxlbWVudHMAAEifEQAiAAAAAEH4vsYACxBsWxAAeFsQAAEAAAAAAAAAAIfVg4AABG5hbWUB/NSDgADrBgA2d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX3N0cmluZ19uZXc6OmgzYjk1MjRiNDM3MTllYWEwAasBc29sYW5hX3Byb2dyYW06Omluc3RydWN0aW9uOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPHNvbGFuYV9wcm9ncmFtOjppbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb24+IGZvciB3YXNtX2JpbmRnZW46OkpzVmFsdWU+Ojpmcm9tOjpfX3diZ19pbnN0cnVjdGlvbl9uZXc6OmgwOGIzM2NjZTBlMWMyNTFjAjZ3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5fbnVtYmVyX25ldzo6aDU2YjkxMjBlMTBhMWMyODYDO3dhc21fYmluZGdlbjo6X193YmluZGdlbl9vYmplY3RfZHJvcF9yZWY6OmhlMDYzMTc4ZTZiYTg1YjVkBDZ3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5fc3RyaW5nX2dldDo6aDYxYWJmYzhkYzE2MDYyNWMFOHdhc21fYmluZGdlbjo6X193YmluZGdlbl9pc191bmRlZmluZWQ6OmgwMzlhOGEwMjYzZTQ4MDcwBjZ3YXNtX2JpbmRnZW46Ol9fd2JpbmRnZW5fbnVtYmVyX2dldDo6aDRiNDY1OTk1YzI1Zjk5ZjAHlwFzb2xhbmFfcHJvZ3JhbTo6cHVia2V5Ojo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPHNvbGFuYV9wcm9ncmFtOjpwdWJrZXk6OlB1YmtleT4gZm9yIHdhc21fYmluZGdlbjo6SnNWYWx1ZT46OmZyb206Ol9fd2JnX3B1YmtleV9uZXc6OmhjMjdiYzFmNGEzN2FlODRlCGF3ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX2NvbnNvbGU6OmNvbnNvbGU6OmRlYnVnXzE6Ol9fd2JnX2RlYnVnXzczMzk1Y2E1NjY5MTIwYWU6Omg1MTQxN2RkZWQyMjk2MThlCWF3ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX2NvbnNvbGU6OmNvbnNvbGU6OmVycm9yXzE6Ol9fd2JnX2Vycm9yXzExODliNWRlNmRkMWI4MDg6OmgxYjhkY2M0NjlmNDdkNTE2Cl93ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX2NvbnNvbGU6OmNvbnNvbGU6OmluZm9fMTo6X193YmdfaW5mb18zZjFkODYzNmJhNTgxMjhmOjpoOThkOGE5YTk2MWJhYmI1YQtdd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9jb25zb2xlOjpjb25zb2xlOjpsb2dfMTo6X193YmdfbG9nXzE4ZmZkZmU1YTQxYmQ3ODE6OmhlOTk3NDJiNTAwM2RkMWMzDF93ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX2NvbnNvbGU6OmNvbnNvbGU6Ondhcm5fMTo6X193Ymdfd2Fybl9kZmZhNzRjYWI3OGQzNTMxOjpoYzcyYzViOGJkNmM4OGFmNg1TY29uc29sZV9lcnJvcl9wYW5pY19ob29rOjpFcnJvcjo6bmV3OjpfX3diZ19uZXdfYWJkYTc2ZTg4M2JhOGE1Zjo6aDg3MjJjMmFmNWNiYjVmMTcOV2NvbnNvbGVfZXJyb3JfcGFuaWNfaG9vazo6RXJyb3I6OnN0YWNrOjpfX3diZ19zdGFja182NTgyNzlmZTQ0NTQxY2Y2OjpoZDY4OWM2NTllMjNmM2ZmMg9QY29uc29sZV9lcnJvcl9wYW5pY19ob29rOjplcnJvcjo6X193YmdfZXJyb3JfZjg1MTY2N2FmNzFiY2ZjNjo6aDQ0YTU1Yzc1YzdkODZlZGEQUGdldHJhbmRvbTo6aW1wOjpHbG9iYWw6OmdldF9zZWxmOjpfX3diZ19zZWxmXzdlZWRlMWY0NDg4YmYzNDY6Omg2NWZiODQyMDRmOWJjMGZjEU9nZXRyYW5kb206OmltcDo6U2VsZl86OmNyeXB0bzo6X193YmdfY3J5cHRvX2M5MDlmYjQyOGRjYmRkYjY6Omg0YWNhMDJlMDdlZWYxYjRjElRnZXRyYW5kb206OmltcDo6U2VsZl86Om1zX2NyeXB0bzo6X193YmdfbXNDcnlwdG9fNTExZWVmZWZiZmM3MGFlNDo6aDM4OTE0NjA2NjI2YWZhNDETXmdldHJhbmRvbTo6aW1wOjpNT0RVTEU6OmluaXQ6Ol9fd2JnX3N0YXRpY19hY2Nlc3Nvcl9NT0RVTEVfZWYzYWEyZWIyNTExNThhNTo6aDAxZjAzOGM3MWY2MjA0OWIUVmdldHJhbmRvbTo6aW1wOjpOb2RlTW9kdWxlOjpyZXF1aXJlOjpfX3diZ19yZXF1aXJlXzkwMGQ1YzM5ODRmZTc3MDM6Omg4YzYxMDgxMmYxNjU5MTAzFW5nZXRyYW5kb206OmltcDo6QnJvd3NlckNyeXB0bzo6Z2V0X3JhbmRvbV92YWx1ZXNfZm46Ol9fd2JnX2dldFJhbmRvbVZhbHVlc18zMDcwNDkzNDVkMGJkODhjOjpoOWE0NTM0ZThjNzcxNzk1MxZrZ2V0cmFuZG9tOjppbXA6OkJyb3dzZXJDcnlwdG86OmdldF9yYW5kb21fdmFsdWVzOjpfX3diZ19nZXRSYW5kb21WYWx1ZXNfY2QxNzU5MTU1MTFmNzA1ZTo6aDI5ZDE1ZTYxOWMyYzhmYTcXZmdldHJhbmRvbTo6aW1wOjpOb2RlQ3J5cHRvOjpyYW5kb21fZmlsbF9zeW5jOjpfX3diZ19yYW5kb21GaWxsU3luY184NWIzZjRjNTJjNTZjMzEzOjpoYmU0NjNmOTdhZTc2NWU3MxhBanNfc3lzOjpBcnJheTo6bmV3OjpfX3diZ19uZXdfYjMzZTFjZTYzOTAwMDY4Zjo6aGVmOGJjYTRmYTIzZTk2ZTMZN3dhc21fYmluZGdlbjo6X193YmluZGdlbl9pc19mdW5jdGlvbjo6aDIxYWU4ZmRkOGY4NGY3ZGQaNXdhc21fYmluZGdlbjo6X193YmluZGdlbl9pc19vYmplY3Q6OmgxZmQ5NzljZmQzMjY0MzI3G2pqc19zeXM6Okl0ZXJhdG9yOjpsb29rc19saWtlX2l0ZXJhdG9yOjpNYXliZUl0ZXJhdG9yOjpuZXh0OjpfX3diZ19uZXh0XzBiOTU4NTJkYjNhMGY1Njg6OmhiNWVhMDFhZWZlOWJhNjZhHEZqc19zeXM6Okl0ZXJhdG9yOjpuZXh0OjpfX3diZ19uZXh0XzMyY2U0NjAzZTE5YTlhZDg6OmgyOGRkMjEyNzg1ZGU1MDYzHUpqc19zeXM6Okl0ZXJhdG9yTmV4dDo6ZG9uZTo6X193YmdfZG9uZV9iMmIyM2FkY2FmZDZkMzcyOjpoN2NjNGM5YWQzYWQzMmE2Yx5ManNfc3lzOjpJdGVyYXRvck5leHQ6OnZhbHVlOjpfX3diZ192YWx1ZV85YmMzMjcxZjI1NTZhNjIxOjpoNmVjYWZmMGZiNzg2NWU5NB9ManNfc3lzOjpTeW1ib2w6Oml0ZXJhdG9yOjpfX3diZ19pdGVyYXRvcl83ZTBhYzY5N2ZhYTg3MmYzOjpoZmQ4NzgxNmRmYjdlNDE3OCBDanNfc3lzOjpSZWZsZWN0OjpnZXQ6Ol9fd2JnX2dldF8wMjk5OWJiMmNhZWVmZjYxOjpoMDY1ZTkwZmE3YTM3ODljMyFHanNfc3lzOjpGdW5jdGlvbjo6Y2FsbDA6Ol9fd2JnX2NhbGxfODc1ZDRlYTlhYmJlYzg4Zjo6aGNhYjMyOTc3MmMyZjNjZmYiV2pzX3N5czo6QXJyYXk6Om5ld193aXRoX2xlbmd0aDo6X193YmdfbmV3d2l0aGxlbmd0aF84ZmY2OTExOGFiMjMzMTliOjpoNjYxMGVlZDM3ZTAzNmYwNCNBanNfc3lzOjpBcnJheTo6c2V0OjpfX3diZ19zZXRfNWVhY2RmNTRjOWFhZmJkZjo6aGQ5NTIxYzJhYzRmMjgzMDMkSmpzX3N5czo6QXJyYXk6OmlzX2FycmF5OjpfX3diZ19pc0FycmF5X2NmNjgyOWIxZjI1YmEwZjE6OmhlYzJhZmUzYzE3ZTNjY2UxJUNqc19zeXM6OkFycmF5OjpwdXNoOjpfX3diZ19wdXNoXzA5ZWJjYmJkNmZiMjdhZTE6OmgzZjNmYTZiNmY0ZWIxN2FiJkdqc19zeXM6OkFycmF5Ojp2YWx1ZXM6Ol9fd2JnX3ZhbHVlc19hMjY3NTc1ZmE3Yjk5MDc1OjpoMzA3MWNlMWY2YWFmMjI1NydVanNfc3lzOjpXZWJBc3NlbWJseTo6TWVtb3J5OjpidWZmZXI6Ol9fd2JnX2J1ZmZlcl84ZGFiYzNhNGNjYTdlMDY1OjpoMTQ3ZGU4MmE0MmViZDZiNChGanNfc3lzOjpVaW50OEFycmF5OjpuZXc6Ol9fd2JnX25ld184MWJkZGRiZTIzYTRjOTkwOjpoMjZmMDI5MzAxNTUzMzI0YilGanNfc3lzOjpVaW50OEFycmF5OjpzZXQ6Ol9fd2JnX3NldF81Nzc4YjE1MmE3ZWMyNThjOjpoMzlmNGU0Y2MzNDgwOGE1MCpManNfc3lzOjpVaW50OEFycmF5OjpsZW5ndGg6Ol9fd2JnX2xlbmd0aF82MWYxOTQ5YWE3ZjZmZDM5OjpoYmMxNGZhYmJjYzM1MTQwZCuvAWpzX3N5czo6X193YmdfZ2VuZXJhdGVkX2NvbnN0X1VpbnQ4QXJyYXk6OjxpbXBsIHdhc21fYmluZGdlbjo6Y2FzdDo6SnNDYXN0IGZvciBqc19zeXM6OlVpbnQ4QXJyYXk+OjppbnN0YW5jZW9mOjpfX3diZ19pbnN0YW5jZW9mX1VpbnQ4QXJyYXlfOGE4NTM3ZjQ2ZTA1NjQ3NDo6aGE2NGUzZmMwMzE0MDNhYzgsXGpzX3N5czo6VWludDhBcnJheTo6bmV3X3dpdGhfbGVuZ3RoOjpfX3diZ19uZXd3aXRobGVuZ3RoXzZiMmIzMmVmNWJmYzlhNTU6Omg3MDcyMWM2ZGY4NDZlMWIwLVBqc19zeXM6OlVpbnQ4QXJyYXk6OnN1YmFycmF5OjpfX3diZ19zdWJhcnJheV8yNDcwOTJlNTliNTYzMzlhOjpoNThjODFiYWM1OGE1OWIyZi44d2FzbV9iaW5kZ2VuOjpfX3diaW5kZ2VuX2RlYnVnX3N0cmluZzo6aDVjNzU5MTQzZDg5YzAwMDUvMXdhc21fYmluZGdlbjo6X193YmluZGdlbl90aHJvdzo6aDc4ZWEyMDM3NTEyYmYyMjMwMndhc21fYmluZGdlbjo6X193YmluZGdlbl9tZW1vcnk6Omg5YWFhMDAzNDEwYWE2NzZhMS9zaGEyOjpzaGE1MTI6OnNvZnQ6OmNvbXByZXNzOjpoZTY5YjhiMDQwM2RjZDg0NjIvc2hhMjo6c2hhMjU2Ojpzb2Z0Ojpjb21wcmVzczo6aDYxMDcwZGM4YjkzZWE0MWIzSGNvcmU6Om51bTo6Zmx0MmRlYzo6c3RyYXRlZ3k6OmRyYWdvbjo6Zm9ybWF0X3Nob3J0ZXN0OjpoOGY2YTY2Njk3ZDEzMjU2NTRMZ2Z4X3NzbF93YXNtOjpzd2FwOjo8aW1wbCBnZnhfc3NsX3dhc206OnBhaXI6OlBhaXI+Ojpzd2FwOjpoYWMxNDYzOGQ5NmVlZDMwOTVFY29yZTo6bnVtOjpmbHQyZGVjOjpzdHJhdGVneTo6ZHJhZ29uOjpmb3JtYXRfZXhhY3Q6OmgyN2RjNWE4OThiMTgzNjk3NlBjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OnU2NDo6c2NhbGFyOjpTY2FsYXI1Mjo6bXVsOjpoYTBkZTI5MTgyMjczMGY3ZDcEc3dhcDgzcnVzdF9kZWNpbWFsOjpvcHM6OmRpdjo6ZGl2X2ltcGw6Omg4YmVlNzdjODBlYzA3Y2QxOUJjb3JlOjpudW06OmZsdDJkZWM6OnN0cmF0ZWd5OjpkcmFnb246Om11bF9wb3cxMDo6aDJlYzE4ZTVkNWRlMDUxNTQ6zAE8Y3VydmUyNTUxOV9kYWxlazo6d2luZG93OjpOYWZMb29rdXBUYWJsZTU8Y3VydmUyNTUxOV9kYWxlazo6YmFja2VuZDo6c2VyaWFsOjpjdXJ2ZV9tb2RlbHM6OlByb2plY3RpdmVOaWVsc1BvaW50PiBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPCZjdXJ2ZTI1NTE5X2RhbGVrOjplZHdhcmRzOjpFZHdhcmRzUG9pbnQ+Pjo6ZnJvbTo6aDEzMDM2MjUwZTNiOWJmMzk7OmRsbWFsbG9jOjpkbG1hbGxvYzo6RGxtYWxsb2M8QT46Om1hbGxvYzo6aDI1ZDU4YmI2ZmU5OTk5M2Y8SmdmeF9zc2xfd2FzbTo6bWF0aDo6Y3VydmVzOjpzd2FwX29uY2VfcmVwZWdzd2FwX3Bvb3JtYW46OmhkNGRjMDJjNDc2MzMxZDllPWY8Jm11dCBiaW5jb2RlOjpkZTo6RGVzZXJpYWxpemVyPFIsTz4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV90dXBsZTo6aDZkZGI1OGE2ZjVlNWE5YmU+dzwmY3VydmUyNTUxOV9kYWxlazo6c2NhbGFyOjpTY2FsYXIgYXMgY29yZTo6b3BzOjphcml0aDo6QWRkPCZjdXJ2ZTI1NTE5X2RhbGVrOjpzY2FsYXI6OlNjYWxhcj4+OjphZGQ6Omg0MjJlNjg5ZjY4N2M3N2M2P1tjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OnU2NDo6c2NhbGFyOjpTY2FsYXI1Mjo6bW9udGdvbWVyeV9tdWw6Omg3YTY4YTkzMzBmMDRjMjU2QDtjdXJ2ZTI1NTE5X2RhbGVrOjpzY2FsYXI6OlNjYWxhcjo6cmVkdWNlOjpoY2YwMWI0ODEyY2I1YzlkMEFdPHNvbGFuYV9wcm9ncmFtOjppbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb25FcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzYzE3MzU5NTE5NGQ5ZGJlQpsBc29sYW5hX3Byb2dyYW06OnN5c3RlbV9pbnN0cnVjdGlvbjo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBzb2xhbmFfcHJvZ3JhbTo6c3lzdGVtX2luc3RydWN0aW9uOjpTeXN0ZW1JbnN0cnVjdGlvbj46OnNlcmlhbGl6ZTo6aDRkZjEyM2M0N2Y3OThmYzFDhAJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+OjppbnNlcnRfcmVjdXJzaW5nOjpoYWMwZjBmNDBlODM4NTExZURLY29yZTo6bnVtOjpmbHQyZGVjOjpzdHJhdGVneTo6Z3Jpc3U6OmZvcm1hdF9zaG9ydGVzdF9vcHQ6Omg3NDYxNTM1ZTExYzAxZmE1RVdnZnhfc3NsX3dhc206Om1hdGg6OmN1cnZlczo6c3dhcF9vbmNlX3JlcGVnc3dhcF9wb29ybWFuOjp7e2Nsb3N1cmV9fTo6aDY5ZGJjYzFjOTY5NjU2YjRGSXJ1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbDo6cm91bmRfZHBfd2l0aF9zdHJhdGVneTo6aGU2ODY0MDVlMjk0NTlhZmFHWmN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6c2NhbGFyX211bDo6dmFydGltZV9kb3VibGVfYmFzZTo6bXVsOjpoNWEzZGRkMGJjMGM2Y2Q2YUg6cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpiYXNlMl90b19kZWNpbWFsOjpoZWFjYmRiMWViOWJkOTlhY0lXZ2Z4X3NzbF93YXNtOjptYXRoOjpjdXJ2ZXM6OnN3YXBfb25jZV9yZXBlZ3N3YXBfcG9vcm1hbjo6e3tjbG9zdXJlfX06OmhjN2E4YTc4YzJhOGYzY2M0SjhydXN0X2RlY2ltYWw6Om9wczo6YWRkOjp1bmFsaWduZWRfYWRkOjpoMWY4MDM0NmQ2MjhmNjcxY0tjc29sYW5hX3Byb2dyYW06Ondhc206OnB1YmtleTo6PGltcGwgc29sYW5hX3Byb2dyYW06OnB1YmtleTo6UHVia2V5Pjo6Y29uc3RydWN0b3I6Omg4NWVmODRiMjIwNWVjNGM4TGA8c29sYW5hX3Nkazo6dHJhbnNhY3Rpb246OmVycm9yOjpUcmFuc2FjdGlvbkVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGFjMDhhN2FiZmQxODUxMDZNUmN1cnZlMjU1MTlfZGFsZWs6OmVkd2FyZHM6OkVkd2FyZHNCYXNlcG9pbnRUYWJsZTo6YmFzZXBvaW50X211bDo6aDE4N2VkNzNlN2VlZDg4M2JOfmN1cnZlMjU1MTlfZGFsZWs6OmZpZWxkOjo8aW1wbCBjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OnU2NDo6ZmllbGQ6OkZpZWxkRWxlbWVudDUxPjo6c3FydF9yYXRpb19pOjpoYjMzYzExMzNlYWVhZGMzM09nPHJ1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbCBhcyBydXN0X2RlY2ltYWw6Om1hdGhzOjpNYXRoZW1hdGljYWxPcHM+OjpjaGVja2VkX2xuOjpoMWIyMmM4ODBhODU0YzMyNFCxATwmY3VydmUyNTUxOV9kYWxlazo6YmFja2VuZDo6c2VyaWFsOjp1NjQ6OmZpZWxkOjpGaWVsZEVsZW1lbnQ1MSBhcyBjb3JlOjpvcHM6OmFyaXRoOjpNdWw8JmN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6dTY0OjpmaWVsZDo6RmllbGRFbGVtZW50NTE+Pjo6bXVsOjpoNTRjZjAxZmZhMDkzZmM0MlFdc29sYW5hX3Byb2dyYW06Ondhc206Omhhc2g6OjxpbXBsIHNvbGFuYV9wcm9ncmFtOjpoYXNoOjpIYXNoPjo6Y29uc3RydWN0b3I6OmhlMTcyNTZlZGUyZjM4MWQyUqoCYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6cmVtb3ZlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6Ok11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPj46OnJlbW92ZV9sZWFmX2t2OjpoMTdjMzE2ZDkzZDdjODMwOFNxPGNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpjaGFpbjo6Q2hhaW48QSxCPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46OnNpemVfaGludDo6aDQ1Njc3N2JkM2U1MDNkNzFUanNvbGFuYV9zZGs6Ondhc206OnRyYW5zYWN0aW9uOjo8aW1wbCBzb2xhbmFfc2RrOjp0cmFuc2FjdGlvbjo6VHJhbnNhY3Rpb24+Ojpjb25zdHJ1Y3Rvcjo6aDM2MzUxMDFjNjUxMzcxZGVVSXNvbGFuYV9zZGs6OnRyYW5zYWN0aW9uOjpUcmFuc2FjdGlvbjo6dHJ5X3BhcnRpYWxfc2lnbjo6aGU4MzVhOTZiYjE0OWVjYTVWXGN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6dTY0OjpzY2FsYXI6OlNjYWxhcjUyOjpmcm9tX2J5dGVzX3dpZGU6Omg5YWU1MDY0MTdmNzgxOWU0V1Bzb2xhbmFfcHJvZ3JhbTo6bWVzc2FnZTo6Y29tcGlsZWRfa2V5czo6Q29tcGlsZWRLZXlzOjpjb21waWxlOjpoZDcxOTM0NmJiMjgzZTMwMFhjPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBhbGxvYzo6dmVjOjpzcGVjX2Zyb21faXRlcjo6U3BlY0Zyb21JdGVyPFQsST4+Ojpmcm9tX2l0ZXI6Omg5NTlmODkzNDdlYjAxZWY0WThjb3JlOjpudW06OmJpZ251bTo6QmlnMzJ4NDA6Om11bF9wb3cyOjpoZmRlZTE4YWFlOWNmNDdlMFoxY29yZTo6c3RyOjpzbGljZV9lcnJvcl9mYWlsX3J0OjpoODM2ODg4MmJhODZkYWJkZFszcnVzdF9kZWNpbWFsOjpvcHM6Om11bDo6bXVsX2ltcGw6OmhhMWEzZGZiMGVjNzk0NWIyXEFlZDI1NTE5X2RhbGVrOjpzZWNyZXQ6OkV4cGFuZGVkU2VjcmV0S2V5OjpzaWduOjpoODk2YjQ5YTg4MTY3OGRhMl0zY29yZTo6c3RyOjpjb3VudDo6ZG9fY291bnRfY2hhcnM6OmhiOTIzNDdlZjQzMzgzYzYzXjhkbG1hbGxvYzo6ZGxtYWxsb2M6OkRsbWFsbG9jPEE+OjpmcmVlOjpoYzJhMmM0MThhMzEwNzEwNV9IY29yZTo6bnVtOjpmbHQyZGVjOjpzdHJhdGVneTo6Z3Jpc3U6OmZvcm1hdF9leGFjdF9vcHQ6OmhiYzcwYzI5N2IzMTc4NTQ3YElzb2xhbmFfcHJvZ3JhbTo6cHVia2V5OjpQdWJrZXk6OmNyZWF0ZV9wcm9ncmFtX2FkZHJlc3M6OmhmNTlkYjMwNmRkMjg5NTdkYT5lZDI1NTE5X2RhbGVrOjprZXlwYWlyOjpLZXlwYWlyOjpmcm9tX2J5dGVzOjpoYjEwMmI1N2UwODMyYmJmZWJjPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBhbGxvYzo6dmVjOjpzcGVjX2Zyb21faXRlcjo6U3BlY0Zyb21JdGVyPFQsST4+Ojpmcm9tX2l0ZXI6OmhkMWFmNjFhOGRmMTAzOGU3Y2M8YWxsb2M6OnZlYzo6VmVjPFQ+IGFzIGFsbG9jOjp2ZWM6OnNwZWNfZnJvbV9pdGVyOjpTcGVjRnJvbUl0ZXI8VCxJPj46OmZyb21faXRlcjo6aDJmYTQzZWE3ZmY0MWY1ODNkbDxjb3JlOjppdGVyOjphZGFwdGVyczo6Y2hhaW46OkNoYWluPEEsQj4gYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+Ojpmb2xkOjpoNTRkYTlkODNjN2VjNmJhZWVjPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBhbGxvYzo6dmVjOjpzcGVjX2Zyb21faXRlcjo6U3BlY0Zyb21JdGVyPFQsST4+Ojpmcm9tX2l0ZXI6Omg0ZjdkZTEwNDU3MWRlZDkwZldjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OnU2NDo6ZmllbGQ6OkZpZWxkRWxlbWVudDUxOjpwb3cyazo6aDgwMmQyOTYyZGY3YTI4OTlnZGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6bWVyZ2VfdHJhY2tpbmdfY2hpbGRfZWRnZTo6aGU4MTlmZjYwZjkyOTRhNjJoRTxzZXJkZTo6ZGU6OlVuZXhwZWN0ZWQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNWY4N2QyMTg1ZWQ4YTJhOWnWAWN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6Y3VydmVfbW9kZWxzOjo8aW1wbCBjb3JlOjpvcHM6OmFyaXRoOjpTdWI8JmN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6Y3VydmVfbW9kZWxzOjpBZmZpbmVOaWVsc1BvaW50PiBmb3IgJmN1cnZlMjU1MTlfZGFsZWs6OmVkd2FyZHM6OkVkd2FyZHNQb2ludD46OnN1Yjo6aDIyZDQzM2FkODZjNWU2ZmZqW2FsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6YnVsa19zdGVhbF9yaWdodDo6aDI4M2EwMzg0ZmNjYTMzYjlr1gFjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OmN1cnZlX21vZGVsczo6PGltcGwgY29yZTo6b3BzOjphcml0aDo6QWRkPCZjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OmN1cnZlX21vZGVsczo6QWZmaW5lTmllbHNQb2ludD4gZm9yICZjdXJ2ZTI1NTE5X2RhbGVrOjplZHdhcmRzOjpFZHdhcmRzUG9pbnQ+OjphZGQ6Omg1ZTMyNzliNGMzYjk0ZmY5bNoBY3VydmUyNTUxOV9kYWxlazo6YmFja2VuZDo6c2VyaWFsOjpjdXJ2ZV9tb2RlbHM6OjxpbXBsIGNvcmU6Om9wczo6YXJpdGg6OlN1YjwmY3VydmUyNTUxOV9kYWxlazo6YmFja2VuZDo6c2VyaWFsOjpjdXJ2ZV9tb2RlbHM6OlByb2plY3RpdmVOaWVsc1BvaW50PiBmb3IgJmN1cnZlMjU1MTlfZGFsZWs6OmVkd2FyZHM6OkVkd2FyZHNQb2ludD46OnN1Yjo6aGI0MTc3YzYzMzgwNDQ5NjRt2gFjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OmN1cnZlX21vZGVsczo6PGltcGwgY29yZTo6b3BzOjphcml0aDo6QWRkPCZjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OmN1cnZlX21vZGVsczo6UHJvamVjdGl2ZU5pZWxzUG9pbnQ+IGZvciAmY3VydmUyNTUxOV9kYWxlazo6ZWR3YXJkczo6RWR3YXJkc1BvaW50Pjo6YWRkOjpoM2I1YjJmN2IxMWY2ZDJjZm5qc29sYW5hX3Byb2dyYW06Ondhc206OnB1YmtleTo6PGltcGwgc29sYW5hX3Byb2dyYW06OnB1YmtleTo6UHVia2V5Pjo6ZmluZFByb2dyYW1BZGRyZXNzOjpoMzVlZWIxZDI3MWMwY2YzMG8sY29yZTo6Zm10OjpGb3JtYXR0ZXI6OnBhZDo6aGM3NmVlZjhkNTc3OTQ5ODVwMTxzdHIgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDc1NDE3MDAzNTk5OWY2YjVxQmNvcmU6OmZtdDo6ZmxvYXQ6OmZsb2F0X3RvX2RlY2ltYWxfY29tbW9uX2V4YWN0OjpoMDZkMWM5YjQ2MjE5MjUxNnI1Y29yZTo6Zm10OjpGb3JtYXR0ZXI6OnBhZF9pbnRlZ3JhbDo6aGRmMGEwMWU5YjdmNTQ0NjlzYGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkJhbGFuY2luZ0NvbnRleHQ8SyxWPjo6bWVyZ2VfdHJhY2tpbmdfcGFyZW50OjpoYWNiMzE2OTkxYmRmNWNjZXR5PGVkMjU1MTlfZGFsZWs6OnNpZ25hdHVyZTo6SW50ZXJuYWxTaWduYXR1cmUgYXMgY29yZTo6Y29udmVydDo6VHJ5RnJvbTwmZWQyNTUxOTo6U2lnbmF0dXJlPj46OnRyeV9mcm9tOjpoMDBlZWY4NmU3ZGE1MzJmMHVCZWQyNTUxOV9kYWxlazo6cHVibGljOjpQdWJsaWNLZXk6OnZlcmlmeV9zdHJpY3Q6OmgzZGU0Y2JmNGI0MWIyNTNmdmk8cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpEZWNpbWFsIGFzIHJ1c3RfZGVjaW1hbDo6bWF0aHM6Ok1hdGhlbWF0aWNhbE9wcz46OmNoZWNrZWRfcG93dTo6aDY3ZWJlMWM1YjhjNWI4ZDd3TGNvbXBpbGVyX2J1aWx0aW5zOjppbnQ6OnNwZWNpYWxpemVkX2Rpdl9yZW06OnUxMjhfZGl2X3JlbTo6aGI0Y2YzN2IyMDU5YzMyZGZ4W2N1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6Y3VydmVfbW9kZWxzOjpQcm9qZWN0aXZlUG9pbnQ6OmRvdWJsZTo6aGI4ZjBiZTRjMjMyMmQ3NjN5DV9fcmRsX3JlYWxsb2N6Yzxzb2xhbmFfcHJvZ3JhbTo6c2hvcnRfdmVjOjpTaG9ydFZlY1Zpc2l0b3I8VD4gYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc2VxOjpoYjdkMzM5MWFlMThiOGEyMXtDY3VydmUyNTUxOV9kYWxlazo6d2luZG93OjpMb29rdXBUYWJsZTxUPjo6c2VsZWN0OjpoNDA3Y2ZkNDIyNjU2OTVlMHxMY3VydmUyNTUxOV9kYWxlazo6ZWR3YXJkczo6Q29tcHJlc3NlZEVkd2FyZHNZOjpkZWNvbXByZXNzOjpoOGJkZTVhYjdiMmVmMjVlNH1bPHNvbGFuYV9wcm9ncmFtOjppbnN0cnVjdGlvbjo6SW5zdHJ1Y3Rpb25FcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNTIxYzBmYzQwNTRkMmYyOX4sYnM1ODo6ZGVjb2RlOjpkZWNvZGVfaW50bzo6aDIxMDc3ODA0MGNmZDNjNjJ/YTxzaGEyOjpzaGE1MTI6OlNoYTUxMiBhcyBkaWdlc3Q6OmZpeGVkOjpGaXhlZE91dHB1dERpcnR5Pjo6ZmluYWxpemVfaW50b19kaXJ0eTo6aDgzNzJkYjY4MjBlZTFkMmWAAVY8WyZUOyAxXSBhcyBzb2xhbmFfc2RrOjpzaWduZXI6OnNpZ25lcnM6OlNpZ25lcnM+Ojp0cnlfc2lnbl9tZXNzYWdlOjpoOTVkNmI4OTBkNjIwZTA4ZIEBbzxlZDI1NTE5X2RhbGVrOjprZXlwYWlyOjpLZXlwYWlyIGFzIHNpZ25hdHVyZTo6c2lnbmVyOjpTaWduZXI8ZWQyNTUxOTo6U2lnbmF0dXJlPj46OnRyeV9zaWduOjpoNjk2NDUyYTBkNTgxYjhiNIIBPHJ1c3RfZGVjaW1hbDo6b3BzOjpjb21tb246OkJ1ZjI0OjpyZXNjYWxlOjpoZjBkNDIzM2IyNGViYzQwY4MBLGJzNTg6OmVuY29kZTo6ZW5jb2RlX2ludG86Omg4ZWEwYTA2MDgzMzk5OTNjhAE3c29sYW5hX3Byb2dyYW06Omhhc2g6Okhhc2hlcjo6cmVzdWx0OjpoN2FmMWI5MDQ0NDQzODAxNYUBUzxjb3JlOjpmbXQ6OmJ1aWxkZXJzOjpQYWRBZGFwdGVyIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6OmhkNDdiNTZkZWVkNDQ1NmNjhgFnPCZtdXQgYmluY29kZTo6ZGU6OkRlc2VyaWFsaXplcjxSLE8+IGFzIHNlcmRlOjpkZTo6RGVzZXJpYWxpemVyPjo6ZGVzZXJpYWxpemVfc3RydWN0OjpoNzFhZjZhNDI0NjBjNmM5NYcBRWNvcmU6OmZtdDo6ZmxvYXQ6OmZsb2F0X3RvX2RlY2ltYWxfY29tbW9uX3Nob3J0ZXN0OjpoNzAyZTA2OThlYjg2NTBlMogBMmNvbXBpbGVyX2J1aWx0aW5zOjptZW06Om1lbW1vdmU6OmgxZDE1OGNjNmE4OWEwNmJkiQFaYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6QmFsYW5jaW5nQ29udGV4dDxLLFY+OjpidWxrX3N0ZWFsX2xlZnQ6OmgwZmFjZTIzODQyNWVkNTJhigE7c29sYW5hX3Nkazo6c2lnbmF0dXJlOjpTaWduYXR1cmU6OnZlcmlmeTo6aGUzMDdiNjg0YWU1NTk0NDeLAUk8YmluY29kZTo6ZXJyb3I6OkVycm9yS2luZCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg0ZTY0Mjc3NTQ3ODVkMjk0jAExY29yZTo6c3RyOjpjb252ZXJ0czo6ZnJvbV91dGY4OjpoZjRjZTQzMzhjMDYyYzBiMY0BS3NvbGFuYV9wcm9ncmFtOjpzeXN0ZW1faW5zdHJ1Y3Rpb246OmNyZWF0ZV9ub25jZV9hY2NvdW50OjpoNzVlMDRkOWI2NmE4OGVmM44BYzxzb2xhbmFfcHJvZ3JhbTo6c2hvcnRfdmVjOjpTaG9ydFZlY1Zpc2l0b3I8VD4gYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc2VxOjpoYTgxZDkyYmY3NjFhYmIwM48BNnJ1c3RfZGVjaW1hbDo6b3BzOjphZGQ6OmFsaWduZWRfYWRkOjpoNDg4NjI0NjVjYmRkYmJjNZABuAJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpyZW1vdmU6OjxpbXBsIGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OkhhbmRsZTxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpOb2RlUmVmPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6TXV0LEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWZPckludGVybmFsPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OktWPj46OnJlbW92ZV9rdl90cmFja2luZzo6aDEyZDhjYWE3YzQwYzQ3MzaRAT5jb3JlOjpmbXQ6OkZvcm1hdHRlcjo6d3JpdGVfZm9ybWF0dGVkX3BhcnRzOjpoZDVmNGI2ZDAzNzQyOWZjY5IBNHN0ZDo6c3luYzo6b25jZTo6T25jZTo6Y2FsbF9pbm5lcjo6aGVjYzdjNjZhN2RlN2U5OGWTAWxzb2xhbmFfcHJvZ3JhbTo6d2FzbTo6cHVia2V5Ojo8aW1wbCBzb2xhbmFfcHJvZ3JhbTo6cHVia2V5OjpQdWJrZXk+OjpjcmVhdGVQcm9ncmFtQWRkcmVzczo6aDNmMWFkM2I2YmIwNzkxN2WUAU9zb2xhbmFfcHJvZ3JhbTo6c3lzdGVtX2luc3RydWN0aW9uOjpjcmVhdGVfYWNjb3VudF93aXRoX3NlZWQ6OmgyNWRhYmEwOTM5NzY5ZGI2lQFPc29sYW5hX3Byb2dyYW06Om1lc3NhZ2U6OmxlZ2FjeTo6TWVzc2FnZTo6bmV3X3dpdGhfYmxvY2toYXNoOjpoM2I2NmExOTZjMTU5MGVlNZYBI2NvcmU6OmZtdDo6d3JpdGU6OmhkNjFiYjk2OTM5MGJmZjU2lwE7cnVzdF9kZWNpbWFsOjpvcHM6OmFkZDo6YWRkX3N1Yl9pbnRlcm5hbDo6aGRjMjFmOWU5ODIwYWFhZmOYAUpjdXJ2ZTI1NTE5X2RhbGVrOjplZHdhcmRzOjpFZHdhcmRzUG9pbnQ6OmlzX3NtYWxsX29yZGVyOjpoYmZkMTA3OWUyNzhhNGQ3N5kBGW9yYWNsZXJlZ2lzdHJ5X2FkZF9vcmFjbGWaATxjb3JlOjpmbXQ6OkZvcm1hdHRlcjo6cGFkX2Zvcm1hdHRlZF9wYXJ0czo6aDE1NmFmODdlNTRiMzAxYjGbAV48c29sYW5hX3Nkazo6dHJhbnNhY3Rpb246OmVycm9yOjpUcmFuc2FjdGlvbkVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhiNDE4NzAwZTA4Y2FhMjVhnAFgPHNvbGFuYV9wcm9ncmFtOjpzaG9ydF92ZWM6OlNob3J0VTE2VmlzaXRvciBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zZXE6OmhjZjdjMmZhYzRhZGY0ZWU4nQFjPHNvbGFuYV9wcm9ncmFtOjpzaG9ydF92ZWM6OlNob3J0VmVjVmlzaXRvcjxUPiBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zZXE6Omg2Mzc1MTY0ZWJkY2Y1ZjQyngEkc3RkOjp0aHJlYWQ6OnBhcms6OmgzNDMzMWVkOTk5NGJkOTVjnwFJc29sYW5hX3Byb2dyYW06OnN5c3RlbV9pbnN0cnVjdGlvbjo6YWxsb2NhdGVfd2l0aF9zZWVkOjpoYjk1OWQ5MThkYjJmZTA4MaABVDxlZDI1NTE5X2RhbGVrOjplcnJvcnM6OkludGVybmFsRXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYjM4NGNlNmY2N2U5ZDU5OKEBZHNvbGFuYV9wcm9ncmFtOjptZXNzYWdlOjpjb21waWxlZF9rZXlzOjpDb21waWxlZEtleXM6OnRyeV9pbnRvX21lc3NhZ2VfY29tcG9uZW50czo6aGJiZjg4OWVjMDlhNWI2NDOiAVpjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OnU2NDo6ZmllbGQ6OkZpZWxkRWxlbWVudDUxOjp0b19ieXRlczo6aDRmMGY1YTc2OWVjMWVkODijATpjb21waWxlcl9idWlsdGluczo6bWF0aDo6bGlibTo6ZXhwOjpleHA6OmgyMmI0MWVkOWY5ZGJhMTE3pAFNc29sYW5hX3Byb2dyYW06OnN5c3RlbV9pbnN0cnVjdGlvbjo6d2l0aGRyYXdfbm9uY2VfYWNjb3VudDo6aDQ4M2MxMDJjMjBkNzcyZDilAV08anNfc3lzOjpBcnJheSBhcyBjb3JlOjppdGVyOjp0cmFpdHM6OmNvbGxlY3Q6OkZyb21JdGVyYXRvcjxBPj46OmZyb21faXRlcjo6aGFmNGJmNWU2YjcyZTg4NmOmATpydXN0X2RlY2ltYWw6OmRlY2ltYWw6OkRlY2ltYWw6OnJlc2NhbGU6OmgxMmE4ZjM5YWNhZjJhYTQ3pwFBZGxtYWxsb2M6OmRsbWFsbG9jOjpEbG1hbGxvYzxBPjo6ZGlzcG9zZV9jaHVuazo6aDAwMGZkMTI2ZTQ1NzQyMjKoAUdzb2xhbmFfcHJvZ3JhbTo6c3lzdGVtX2luc3RydWN0aW9uOjphc3NpZ25fd2l0aF9zZWVkOjpoMjQzZTgyYjM5NDgxZWE2OakBRGdlbmVyaWNfYXJyYXk6OkdlbmVyaWNBcnJheTxULE4+Ojpmcm9tX2V4YWN0X2l0ZXI6OmhjMWUzNzRkZWU2NjVjYmRkqgFaPGN1cnZlMjU1MTlfZGFsZWs6OmVkd2FyZHM6OkVkd2FyZHNQb2ludCBhcyBjb3JlOjpvcHM6OmFyaXRoOjpOZWc+OjpuZWc6Omg4YjY3OGVhM2RkYWVjMWZkqwEVcHVia2V5X2NyZWF0ZVdpdGhTZWVkrAFJc29sYW5hX3Byb2dyYW06OnN5c3RlbV9pbnN0cnVjdGlvbjo6dHJhbnNmZXJfd2l0aF9zZWVkOjpoYjBlOTBkNjVhZjk4OTQ5Y60BEWluc3RydWN0aW9uc19wdXNorgFQYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bWFwOjplbnRyeTo6RW50cnk8SyxWPjo6b3JfZGVmYXVsdDo6aGM5MWE4NDk4MmJiNjMyZTKvAWc8Jm11dCBiaW5jb2RlOjpkZTo6RGVzZXJpYWxpemVyPFIsTz4gYXMgc2VyZGU6OmRlOjpEZXNlcmlhbGl6ZXI+OjpkZXNlcmlhbGl6ZV9zdHJ1Y3Q6Omg3NzRhMDY2ZmNhNzQ4MWJmsAFHPHN0ZDo6aW86OmVycm9yOjpFcnJvcktpbmQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGZjMmI3NzhiYmY5NmRmYjaxASVhbGxvYzo6Zm10Ojpmb3JtYXQ6OmhmNjMwNTVkMGU3YWVhNjc0sgFhPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWPiBhcyBjb3JlOjpvcHM6OmRyb3A6OkRyb3A+Ojpkcm9wOjpoMzg1ZDZiOTFjMTBhMzk2MrMBE3RyYW5zYWN0aW9uX21lc3NhZ2W0AUdjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpEZWJ1ZyBmb3IgdTY0Pjo6Zm10OjpoODhmOTY0MjBjNGU4MWJhY7UBRXNvbGFuYV9wcm9ncmFtOjpzeXN0ZW1faW5zdHJ1Y3Rpb246OmNyZWF0ZV9hY2NvdW50OjpoYzcyYWU1MzRjOGJhNjI4ZrYBXDxydXN0X2RlY2ltYWw6OmRlY2ltYWw6OkRlY2ltYWwgYXMgbnVtX3RyYWl0czo6Y2FzdDo6VG9QcmltaXRpdmU+Ojp0b19mNjQ6OmhjYTFjYjJjMDVjNjFmZjQ4twFcY3VydmUyNTUxOV9kYWxlazo6YmFja2VuZDo6c2VyaWFsOjp1NjQ6OmZpZWxkOjpGaWVsZEVsZW1lbnQ1MTo6ZnJvbV9ieXRlczo6aDdkY2MxZDhmOWU2YjEyOTO4ATdydXN0X2RlY2ltYWw6Om9wczo6Y21wOjpjbXBfaW50ZXJuYWw6OmhlZTFiYjM0YTljMzczODQ0uQF6Y3VydmUyNTUxOV9kYWxlazo6ZmllbGQ6OjxpbXBsIGN1cnZlMjU1MTlfZGFsZWs6OmJhY2tlbmQ6OnNlcmlhbDo6dTY0OjpmaWVsZDo6RmllbGRFbGVtZW50NTE+Ojpwb3cyMjUwMTo6aDA4NWM1NDdhOWU1NzMxMzS6AVhjb3JlOjpudW06OmZsdDJkZWM6OnN0cmF0ZWd5OjpncmlzdTo6Zm9ybWF0X2V4YWN0X29wdDo6cG9zc2libHlfcm91bmQ6Omg3ZDJmNDUzNGVkMmYxOTU3uwGNATxjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OmN1cnZlX21vZGVsczo6QWZmaW5lTmllbHNQb2ludCBhcyBzdWJ0bGU6OkNvbmRpdGlvbmFsbHlTZWxlY3RhYmxlPjo6Y29uZGl0aW9uYWxfYXNzaWduOjpoNjRhMGNkZDk1ZjZjN2U5Y7wBSzxUIGFzIGN1cnZlMjU1MTlfZGFsZWs6OnRyYWl0czo6SXNJZGVudGl0eT46OmlzX2lkZW50aXR5OjpoZWI5ZWU1MDUzMjA0ZjFjYb0BTjxnZnhfc3NsX3dhc206OmVycm9yczo6U1NMRXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZGM0ZTk5MmI1YTdkYzE4Nr4BMmdmeF9zc2xfd2FzbTo6cGFpcjo6UGFpcjo6cHJpY2U6OmhiYjVmMjFlZWMyMmJmNTVhvwEvYmluY29kZTo6aW50ZXJuYWw6OnNlcmlhbGl6ZTo6aDE5MDFjMTUyYWE5NzkyNjfAAU5zb2xhbmFfcHJvZ3JhbTo6c3lzdGVtX2luc3RydWN0aW9uOjphdXRob3JpemVfbm9uY2VfYWNjb3VudDo6aDZlNTIxZDQ0YTkyMGQxMTfBATI8Y2hhciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMmU5ZWYyM2NkYjU2OTJmOcIBXzxnZW5lcmljX2FycmF5OjppbXBsX3NlcmRlOjpHQVZpc2l0b3I8VCxOPiBhcyBzZXJkZTo6ZGU6OlZpc2l0b3I+Ojp2aXNpdF9zZXE6OmhjOGE3ZWU0NWYxZjgxYzhjwwEyc2hhMjo6c2hhNTEyOjpFbmdpbmU1MTI6OmZpbmlzaDo6aGI0ZTcwNzE4MDM3YjIxYznEAUY8Jm11dCBUIGFzIGJzNTg6OmVuY29kZTo6RW5jb2RlVGFyZ2V0Pjo6ZW5jb2RlX3dpdGg6OmhjZDI4MDg5MDgxYTU0OTc2xQFHc29sYW5hX3Byb2dyYW06Om1lc3NhZ2U6OmxlZ2FjeTo6Y29tcGlsZV9pbnN0cnVjdGlvbjo6aDUwOWRkNjBlZGJjM2Q0OTDGAUVjb3JlOjpudW06OmJpZ251bTo6QmlnMzJ4NDA6Om11bF9kaWdpdHM6Om11bF9pbm5lcjo6aGNjZWE0OGEzNDljNjgwNmbHAWdzdGQ6OmlvOjplcnJvcjo6PGltcGwgY29yZTo6Zm10OjpEZWJ1ZyBmb3Igc3RkOjppbzo6ZXJyb3I6OnJlcHJfdW5wYWNrZWQ6OlJlcHI+OjpmbXQ6OmhhZDc0NDdkYWNhZDRiZjA2yAExY29uc29sZV9lcnJvcl9wYW5pY19ob29rOjpob29rOjpoZTk0MGJhMTBhYWM0OWNlNMkBRGN1cnZlMjU1MTlfZGFsZWs6OmVkd2FyZHM6OkVkd2FyZHNQb2ludDo6Y29tcHJlc3M6OmhlYjdmY2FmMWNkNWY2YTY2ygFLc29sYW5hX3Byb2dyYW06OnB1YmtleTo6UHVia2V5Ojp0cnlfZmluZF9wcm9ncmFtX2FkZHJlc3M6OmhkYjk2YzQzMTc0NTczMWQzywEwZGxtYWxsb2M6OkRsbWFsbG9jPEE+OjptYWxsb2M6Omg3YmZhZjkzMDFkZWNmOWZizAFjPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBhbGxvYzo6dmVjOjpzcGVjX2Zyb21faXRlcjo6U3BlY0Zyb21JdGVyPFQsST4+Ojpmcm9tX2l0ZXI6Omg5NTVmMWIxY2NkNjAyY2Q0zQE4Y29yZTo6bnVtOjpmbHQyZGVjOjpkaWdpdHNfdG9fZGVjX3N0cjo6aGE3ZWNkM2EyMGNhZmYxNDbOAQtfX2Zsb2F0dGlkZs8BYzxzb2xhbmFfcHJvZ3JhbTo6c2hvcnRfdmVjOjpTaG9ydFZlY1Zpc2l0b3I8VD4gYXMgc2VyZGU6OmRlOjpWaXNpdG9yPjo6dmlzaXRfc2VxOjpoZWFiNjE0NDZjOGJiYzc5N9ABP3NvbGFuYV9wcm9ncmFtOjpzeXN0ZW1faW5zdHJ1Y3Rpb246OnRyYW5zZmVyOjpoZTI4YzRjY2IyNWQyMzQxNtEBN3NvbGFuYV9wcm9ncmFtOjpzaG9ydF92ZWM6OnNlcmlhbGl6ZTo6aGJhODk2YzNjM2RhMzZkYmLSATdzb2xhbmFfcHJvZ3JhbTo6c2hvcnRfdmVjOjpzZXJpYWxpemU6OmhlOGNlNzY5ZDI5NGJiZjhl0wE3c29sYW5hX3Byb2dyYW06OnNob3J0X3ZlYzo6c2VyaWFsaXplOjpoMGRkN2JhOTNkOTIyYWI5MNQBN3NvbGFuYV9wcm9ncmFtOjpzaG9ydF92ZWM6OnNlcmlhbGl6ZTo6aDRjM2I1YzdhNjM0MjRhNDXVATdzb2xhbmFfcHJvZ3JhbTo6c2hvcnRfdmVjOjpzZXJpYWxpemU6OmhhOWU2ODc3NjVkZDZmOTI11gFNPHNvbGFuYV9zZGs6OnNpZ25lcjo6U2lnbmVyRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDYzOGEzMDQwNjU0OGM2NTfXASJzeXN0ZW1pbnN0cnVjdGlvbl90cmFuc2ZlcldpdGhTZWVk2AEzcnVzdF9kZWNpbWFsOjpvcHM6OmNtcDo6Y21wX2ltcGw6Omg0NDBiYmEzYzhmZDAzYzZh2QEnc3lzdGVtaW5zdHJ1Y3Rpb25fY3JlYXRlQWNjb3VudFdpdGhTZWVk2gE3Y29yZTo6cGFuaWNraW5nOjphc3NlcnRfZmFpbGVkX2lubmVyOjpoZjUxNWJlODQ2MzJmZDUyY9sBdTxlZDI1NTE5X2RhbGVrOjpwdWJsaWM6OlB1YmxpY0tleSBhcyBjb3JlOjpjb252ZXJ0OjpGcm9tPCZlZDI1NTE5X2RhbGVrOjpzZWNyZXQ6OlNlY3JldEtleT4+Ojpmcm9tOjpoMTc2NzYwYjE2YWU3OGQzONwBRTxzdGQ6OmlvOjplcnJvcjo6RXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZmFkN2M0NTE0ZjYzODNhN90BMmNvcmU6OnVuaWNvZGU6OnByaW50YWJsZTo6Y2hlY2s6Omg2ZTQ4OWVmMWI1ZGUzYjBk3gE9c29sYW5hX3Byb2dyYW06OnN5c3RlbV9pbnN0cnVjdGlvbjo6YXNzaWduOjpoNzQ3YzY1MjM5M2Y0NjU4Zd8BOmNvcmU6OmZtdDo6YnVpbGRlcnM6OkRlYnVnU3RydWN0OjpmaWVsZDo6aDViYWY4ZTEyZTdhODFlNGTgAThzdGQ6OnRocmVhZDo6bG9jYWw6OkxvY2FsS2V5PFQ+Ojp3aXRoOjpoNmRiYjQ3NDdlN2QxNWVkZuEBLnNvbGFuYV9wcm9ncmFtOjpoYXNoOjpoYXNodjo6aGE4YjAwMmRhZWViN2FjOWPiARtwdWJrZXlfY3JlYXRlUHJvZ3JhbUFkZHJlc3PjAUVjb3JlOjpjaGFyOjptZXRob2RzOjo8aW1wbCBjaGFyPjo6ZXNjYXBlX2RlYnVnX2V4dDo6aDYxNTUxZmU3ZjdmN2I3ZDbkARd0cmFuc2FjdGlvbl9wYXJ0aWFsU2lnbuUBRjxhbGxvYzo6dmVjOjpWZWM8VCxBPiBhcyBjb3JlOjpjbG9uZTo6Q2xvbmU+OjpjbG9uZTo6aGUzZGZlYTY1OWZkYjkwNzHmATVjb3JlOjpyZXN1bHQ6OlJlc3VsdDxULEU+OjptYXBfZXJyOjpoYzE3YzhkOTVhYTlmNjFmMOcBR2NvcmU6OnVuaWNvZGU6OnVuaWNvZGVfZGF0YTo6Z3JhcGhlbWVfZXh0ZW5kOjpsb29rdXA6OmgxZWZmZDEwN2ZhNTI1NTlk6AENX19mbG9hdHVudGlkZukBZzwmbXV0IGJpbmNvZGU6OmRlOjpEZXNlcmlhbGl6ZXI8UixPPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3N0cnVjdDo6aDUwYjM2ZTZiZjUzNTBjNjXqATs8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoMTc2MTZjYjY4NGU3YmUwZusBN3NvbGFuYV9wcm9ncmFtOjpzaG9ydF92ZWM6OnNlcmlhbGl6ZTo6aDdiMmI2YjNmNTQyODNhZWXsATs8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoNDY3MWVhZmNjMTM2M2RhMO0BN3NvbGFuYV9wcm9ncmFtOjpzaG9ydF92ZWM6OnNlcmlhbGl6ZTo6aDI0NTdmMTZhNjAwMzNhMzjuATs8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoZDI5ZWI1OTgzNTY0MmU4Y+8BMWdldHJhbmRvbTo6aW1wOjpnZXRyYW5kb21faW5pdDo6aDIyMzE1YWExY2UxNThiMjnwAVI8Y29yZTo6cGFuaWM6OnBhbmljX2luZm86OlBhbmljSW5mbyBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzOTgyY2UwNmY0MTVjNTBk8QFKPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfY2hhcjo6aDIyNmE2ZmI3NmE1ZWU3NTfyAUo8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoMjI2YTZmYjc2YTVlZTc1N/MBSjxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2NoYXI6OmgyMjZhNmZiNzZhNWVlNzU39AE3c29sYW5hX3Byb2dyYW06OnNob3J0X3ZlYzo6c2VyaWFsaXplOjpoZTY5ZGIyN2EzY2NlOGQ5OPUBSjxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2NoYXI6OmgyMjZhNmZiNzZhNWVlNzU39gFSPGVkMjU1MTlfZGFsZWs6OmVycm9yczo6SW50ZXJuYWxFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNGQ1NzA1ZTgwMmQxMGY2MfcBSjxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2NoYXI6OmgyMjZhNmZiNzZhNWVlNzU3+AE3c29sYW5hX3Byb2dyYW06OnNob3J0X3ZlYzo6c2VyaWFsaXplOjpoZjRlMWUwYzhiMzhmZTI0NPkBSjxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2NoYXI6OmgyMjZhNmZiNzZhNWVlNzU3+gFyY3VydmUyNTUxOV9kYWxlazo6c2NhbGFyOjo8aW1wbCBjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OnU2NDo6c2NhbGFyOjpTY2FsYXI1Mj46OnBhY2s6Omg2Nzg4MDc3NTk4MDM2NTAx+wFKPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfY2hhcjo6aDIyNmE2ZmI3NmE1ZWU3NTf8AS5hbGxvYzo6c3RyaW5nOjpTdHJpbmc6OnB1c2g6OmhmOGJiOThjYTY3ZDYyNDM4/QFcPHJ1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbCBhcyBudW1fdHJhaXRzOjpjYXN0OjpUb1ByaW1pdGl2ZT46OnRvX3U2NDo6aDdiN2NiN2Q5NTMzOTE3MDj+AUhhbnlob3c6OmZtdDo6PGltcGwgYW55aG93OjplcnJvcjo6RXJyb3JJbXBsPjo6ZGlzcGxheTo6aDJkOTZmNTc3Y2U1M2Y5YjL/AVdjdXJ2ZTI1NTE5X2RhbGVrOjpiYWNrZW5kOjpzZXJpYWw6OnU2NDo6c2NhbGFyOjpTY2FsYXI1Mjo6ZnJvbV9ieXRlczo6aGUwYzFmNDE4MmM5ZWM1NmWAAko8cnVzdF9kZWNpbWFsOjplcnJvcjo6RXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoY2IyNGM0OTYyODNjMTQ2MYECMWNvbXBpbGVyX2J1aWx0aW5zOjptZW06Om1lbWNweTo6aDMyNjFlZDViYzk1NzI3MmaCAi9iaW5jb2RlOjppbnRlcm5hbDo6c2VyaWFsaXplOjpoMWYxMDk4MGVkMDI1MmRmOYMCInN5c3RlbWluc3RydWN0aW9uX2FsbG9jYXRlV2l0aFNlZWSEAkxzb2xhbmFfcHJvZ3JhbTo6c3lzdGVtX2luc3RydWN0aW9uOjphZHZhbmNlX25vbmNlX2FjY291bnQ6OmhmOWJiMTVhZWUxMDZiZDlkhQIgc3lzdGVtaW5zdHJ1Y3Rpb25fYXNzaWduV2l0aFNlZWSGAj9zb2xhbmFfcHJvZ3JhbTo6c3lzdGVtX2luc3RydWN0aW9uOjphbGxvY2F0ZTo6aDBjZTQxZDhkYWU3NmRmNjeHAi9jb3JlOjpmbXQ6Om51bTo6aW1wOjpmbXRfdTY0OjpoMmQ0MDQ5OTUwYzAyMzI5OYgCRmNvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6OkRlYnVnIGZvciB1OD46OmZtdDo6aDUyMGJiZjM5YWE3NWY1MzCJAlg8Y3VydmUyNTUxOV9kYWxlazo6ZWR3YXJkczo6RWR3YXJkc1BvaW50IGFzIGNvcmU6OmNtcDo6UGFydGlhbEVxPjo6ZXE6Omg0YTgxNjY3MTZlOWI5Mjc4igIjanNfc3lzOjp0cnlfaXRlcjo6aGI1YTZiMDY1NWIyMTg2MTCLAkdjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpEZWJ1ZyBmb3IgdTMyPjo6Zm10OjpoODIxNGViNTkyNTY2ZjQ0MIwCOmNvbXBpbGVyX2J1aWx0aW5zOjptYXRoOjpsaWJtOjpsb2c6OmxvZzo6aGMxZDY4MTgxYTUwNThmNGGNAmM8YWxsb2M6OnZlYzo6VmVjPFQ+IGFzIGFsbG9jOjp2ZWM6OnNwZWNfZnJvbV9pdGVyOjpTcGVjRnJvbUl0ZXI8VCxJPj46OmZyb21faXRlcjo6aGJmNjUwZDVkZGI1MTllY2GOAh9zeXN0ZW1pbnN0cnVjdGlvbl9jcmVhdGVBY2NvdW50jwI5Y29yZTo6Zm10OjpidWlsZGVyczo6RGVidWdUdXBsZTo6ZmllbGQ6OmhiMzg4NjY1MTM4Mjg0NmQzkAK9AmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5hdmlnYXRlOjo8aW1wbCBhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjpIYW5kbGU8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6Tm9kZVJlZjxhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkR5aW5nLEssVixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkxlYWY+LGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Om1hcmtlcjo6RWRnZT4+OjpkZWFsbG9jYXRpbmdfbmV4dF91bmNoZWNrZWQ6OmgxNGQ3OTVlY2RhYTU5ODBhkQImc3lzdGVtaW5zdHJ1Y3Rpb25fd2l0aGRyYXdOb25jZUFjY291bnSSAj9ydXN0X2RlY2ltYWw6Om9wczo6Y29tbW9uOjpCdWYxMjo6ZmluZF9zY2FsZTo6aGYzZTY2MDk2NzNlNTA5ZTeTAidzeXN0ZW1pbnN0cnVjdGlvbl9hdXRob3JpemVOb25jZUFjY291bnSUAkk8dTY0IGFzIGdmeF9zb2xhbmFfY29tbW9uOjpmZWU6OlNwbGl0RmVlPjo6Y29tYmluZV9mZWU6OmgxOGY0ZDI1OGY3M2VmMzE1lQJGZGxtYWxsb2M6OmRsbWFsbG9jOjpEbG1hbGxvYzxBPjo6aW5zZXJ0X2xhcmdlX2NodW5rOjpoYWE3YTFlZmU0OTE1NGM0MpYCP3NvbGFuYV9zZGs6OnRyYW5zYWN0aW9uOjpUcmFuc2FjdGlvbjo6dmVyaWZ5OjpoNjVhNjliZTMxNWYxZTE2YpcCOWNvcmU6OmZtdDo6YnVpbGRlcnM6OkRlYnVnSW5uZXI6OmVudHJ5OjpoNDJkMTg0YzUzNGVhMzA4MJgCEnB1YmtleV9jb25zdHJ1Y3RvcpkCEGhhc2hfY29uc3RydWN0b3KaAkZkbG1hbGxvYzo6ZGxtYWxsb2M6OkRsbWFsbG9jPEE+Ojp1bmxpbmtfbGFyZ2VfY2h1bms6OmgxMGNlODgyNmE2OWYxOTAzmwI0PGNoYXIgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoY2ZmMGRkNzhhMzQ0Zjc5N5wCSGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6QlRyZWVNYXA8SyxWPjo6cmVtb3ZlOjpoYmRmYmNiN2I1YWM4MTQyOZ0CSnN0ZDo6c3lzX2NvbW1vbjo6dGhyZWFkX3Bhcmtlcjo6Z2VuZXJpYzo6UGFya2VyOjp1bnBhcms6OmhkY2VkNDNhMDdhY2VlYTVhngIiX193Ymdfc2V0X21lc3NhZ2VfcmVjZW50X2Jsb2NraGFzaJ8CsAJhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpuYXZpZ2F0ZTo6PGltcGwgYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6SGFuZGxlPGFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6Ok5vZGVSZWY8YWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpJbW11dCxLLFYsYWxsb2M6OmNvbGxlY3Rpb25zOjpidHJlZTo6bm9kZTo6bWFya2VyOjpMZWFmPixhbGxvYzo6Y29sbGVjdGlvbnM6OmJ0cmVlOjpub2RlOjptYXJrZXI6OkVkZ2U+Pjo6bmV4dF91bmNoZWNrZWQ6Omg2ZWIzNGQ5NGMwM2FmY2MxoAJLZGxtYWxsb2M6OmRsbWFsbG9jOjpEbG1hbGxvYzxBPjo6cmVsZWFzZV91bnVzZWRfc2VnbWVudHM6OmhmYjAyMTc2ZTUwODUyYjc4oQI8PFQgYXMgYWxsb2M6OnN0cmluZzo6VG9TdHJpbmc+Ojp0b19zdHJpbmc6OmhlNGM4NTRiN2Q2N2I4MTI1ogJac29sYW5hX3Byb2dyYW06Ondhc206Omhhc2g6OjxpbXBsIHNvbGFuYV9wcm9ncmFtOjpoYXNoOjpIYXNoPjo6dG9TdHJpbmc6Omg2YThmNWYwOTAyYmFkODNjowIyc2hhMjo6c2hhNTEyOjpFbmdpbmU1MTI6OnVwZGF0ZTo6aDZkZjM5ZWVlZDJlODBmMmGkAkljdXJ2ZTI1NTE5X2RhbGVrOjpzY2FsYXI6OlNjYWxhcjo6ZnJvbV9jYW5vbmljYWxfYnl0ZXM6Omg3ZTAxM2FmZTk2MWQzZTI3pQJHPGJpbmNvZGU6OmVycm9yOjpFcnJvcktpbmQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGQ1NmQxNDE2MmUzZmU5NjGmApsBc29sYW5hX3Byb2dyYW06OnN5c3RlbV9pbnN0cnVjdGlvbjo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBzb2xhbmFfcHJvZ3JhbTo6c3lzdGVtX2luc3RydWN0aW9uOjpTeXN0ZW1JbnN0cnVjdGlvbj46OnNlcmlhbGl6ZTo6aDlkZWJhNTg1ZDU1NzVmZjCnAhpzeXN0ZW1pbnN0cnVjdGlvbl90cmFuc2ZlcqgCF3RyYW5zYWN0aW9uX2NvbnN0cnVjdG9yqQIYc3lzdGVtaW5zdHJ1Y3Rpb25fYXNzaWduqgIlc3lzdGVtaW5zdHJ1Y3Rpb25fYWR2YW5jZU5vbmNlQWNjb3VudKsCaDxzdGQ6OnBhbmlja2luZzo6YmVnaW5fcGFuaWNfaGFuZGxlcjo6UGFuaWNQYXlsb2FkIGFzIGNvcmU6OnBhbmljOjpCb3hNZVVwPjo6dGFrZV9ib3g6OmhmOWUyODNlMzRiYmVmYjY5rAJIc3RkOjp0aHJlYWQ6OmxvY2FsOjpsYXp5OjpMYXp5S2V5SW5uZXI8VD46OmluaXRpYWxpemU6OmhhOGQ4OGEzYTBmODRiMDFmrQJhPHJ1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbCBhcyBydXN0X2RlY2ltYWw6Om1hdGhzOjpNYXRoZW1hdGljYWxPcHM+Ojpwb3dpOjpoOGQ2YWVkNzQxNGRkODVkZK4CMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYmM2NGIxYWVhNGFjZWNjMK8CaDxjb3JlOjppdGVyOjphZGFwdGVyczo6bWFwOjpNYXA8SSxGPiBhcyBjb3JlOjppdGVyOjp0cmFpdHM6Oml0ZXJhdG9yOjpJdGVyYXRvcj46OmZvbGQ6OmhkZWE3ZTRlODkxNDFmNjk3sAIzc2VyZGU6OmRlOjpFcnJvcjo6aW52YWxpZF9sZW5ndGg6OmhmNmEzZjI3YjM0MGRiNzM2sQIrc3RkOjp0aHJlYWQ6OlRocmVhZDo6bmV3OjpoODU2NWJhN2JhYmEwNzJmObICO3NvbGFuYV9wcm9ncmFtOjp3YXNtOjpkaXNwbGF5X3RvX2pzdmFsdWU6Omg4OWQ4MmNhNmVmODY1OWUwswJjPGFsbG9jOjp2ZWM6OlZlYzxUPiBhcyBhbGxvYzo6dmVjOjpzcGVjX2Zyb21faXRlcjo6U3BlY0Zyb21JdGVyPFQsST4+Ojpmcm9tX2l0ZXI6Omg0MzU2ZmJlYTRlNjMxZGUytAI7PCZtdXQgVyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfY2hhcjo6aDg2OWM1ZGZiZGM3ZTM3ZTS1AhZfX3diZ190cmFuc2FjdGlvbl9mcmVltgIyc2VyZGU6OmRlOjpFcnJvcjo6aW52YWxpZF92YWx1ZTo6aGJmNmI3OThhYmYxMzc2ZGW3Ai9iaW5jb2RlOjppbnRlcm5hbDo6c2VyaWFsaXplOjpoN2JlNTM1MjhmN2Q2NWU1NLgCL2NvcmU6OmZtdDo6V3JpdGU6OndyaXRlX2NoYXI6OmhlZjY0MWI1MzRmODU0MTJjuQIxZWQyNTUxOTo6U2lnbmF0dXJlOjpmcm9tX2J5dGVzOjpoMWY2MGQ3YzU5MjJmOGYxZLoCVjxlZDI1NTE5OjpTaWduYXR1cmUgYXMgc2lnbmF0dXJlOjpzaWduYXR1cmU6OlNpZ25hdHVyZT46OmZyb21fYnl0ZXM6Omg5MmNiOTA1ZmFkZjkxYmRmuwIkc3lzdGVtaW5zdHJ1Y3Rpb25fY3JlYXRlTm9uY2VBY2NvdW50vAI4c29sYW5hX3Byb2dyYW06OnNob3J0X3ZlYzo6dmlzaXRfYnl0ZTo6aDRhM2E5NzJkOWUzYmJiNDK9Ag9rZXlwYWlyX3RvQnl0ZXO+AhR0cmFuc2FjdGlvbl9pc1NpZ25lZL8CRzx1NjQgYXMgZ2Z4X3NvbGFuYV9jb21tb246OmZlZTo6U3BsaXRGZWU+OjpzcGxpdF9mZWU6OmhjOTA5MTQ4NWJkMWQ3Y2M2wAJAYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlX2Zvcl9wdXNoOjpoNTU0NTY4YzYxNjhjMTAxNcECGnN5c3RlbWluc3RydWN0aW9uX2FsbG9jYXRlwgJAYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlX2Zvcl9wdXNoOjpoOGM0Y2Y1MWRkNjk3Y2Q0McMCTmFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZTo6ZG9fcmVzZXJ2ZV9hbmRfaGFuZGxlOjpoMDdmMDQ5NTkyMjkzN2Y4ZMQCQGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZV9mb3JfcHVzaDo6aDNmMGVmYTUzMDA4ZDVhMDLFAmk8cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpEZWNpbWFsIGFzIGdmeF9zb2xhbmFfY29tbW9uOjpkZWNpbWFsOjpEZWNpbWFsRXh0Pjo6ZGVzY2FsZV91cDo6aDdmMjNhMGZjODFhOWUxMTnGAms8cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpEZWNpbWFsIGFzIGdmeF9zb2xhbmFfY29tbW9uOjpkZWNpbWFsOjpEZWNpbWFsRXh0Pjo6ZGVzY2FsZV9kb3duOjpoZmQzMDRjMzYyNzFmMjE3N8cCEWtleXBhaXJfZnJvbUJ5dGVzyAJFPGdldHJhbmRvbTo6ZXJyb3I6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhlMjNkM2UyZjdkNWI4OGM2yQJHPGdldHJhbmRvbTo6ZXJyb3I6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDYyMDFmN2M0ZTAzZjE2YzTKAkBhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46OnJlc2VydmVfZm9yX3B1c2g6Omg2NmI4ODY2ZWYzNmMyZjdiywI3c3RkOjpwYW5pY2tpbmc6OnJ1c3RfcGFuaWNfd2l0aF9ob29rOjpoODg4OGJiYzIwMTM4NGQ3YswCSzxjb3JlOjpzdHI6OmVycm9yOjpVdGY4RXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMDFjMWU1MjIzOWQ0MzU5OM0CSTxjb3JlOjpzdHI6OmVycm9yOjpVdGY4RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDIzMmEwMzgyOGUxOTRmYWXOAg5wdWJrZXlfdG9CeXRlc88CEl9fd2JnX21lc3NhZ2VfZnJlZdACTmFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZTo6ZG9fcmVzZXJ2ZV9hbmRfaGFuZGxlOjpoNDdlYjRkOTVhMzI1NGEyOdECTzxjb3JlOjpudW06OmVycm9yOjpUcnlGcm9tSW50RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDE1NGQ1NzQwNmJhNjhjMWHSAkw8Y29yZTo6YXJyYXk6OlRyeUZyb21TbGljZUVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg5MmRjZTI5NTdkMDFhYWI20wJAYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlX2Zvcl9wdXNoOjpoMjIwMGU3ZjhiMDY5MmJhNtQCQGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZV9mb3JfcHVzaDo6aDNkODVmMGZmNTdhOGVmYWHVAmA8cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpEZWNpbWFsIGFzIG51bV90cmFpdHM6OmNhc3Q6OkZyb21QcmltaXRpdmU+Ojpmcm9tX2Y2NDo6aDc0MjZjOWYzOTVmYjQ2MDHWAhV0cmFuc2FjdGlvbl9mcm9tQnl0ZXPXAmM8YWxsb2M6OnZlYzo6VmVjPFQ+IGFzIGFsbG9jOjp2ZWM6OnNwZWNfZnJvbV9pdGVyOjpTcGVjRnJvbUl0ZXI8VCxJPj46OmZyb21faXRlcjo6aGFjYTkyOTMxNGU4NTU4ZmLYAjtzb2xhbmFfcHJvZ3JhbTo6d2FzbTo6ZGlzcGxheV90b19qc3ZhbHVlOjpoZTdiOWNiM2ZkZmQwMmZmZdkCgQFzb2xhbmFfcHJvZ3JhbTo6bWVzc2FnZTo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBzb2xhbmFfcHJvZ3JhbTo6bWVzc2FnZTo6TWVzc2FnZUhlYWRlcj46OnNlcmlhbGl6ZTo6aGRjNDEyYTY0NjgyMjc0ZTTaAms8c29sYW5hX3Byb2dyYW06OnB1YmtleTo6UHVia2V5IGFzIHdhc21fYmluZGdlbjo6Y29udmVydDo6dHJhaXRzOjpGcm9tV2FzbUFiaT46OmZyb21fYWJpOjpoYTcyNzIyNGVjMWM0YTQ2NtsCgQFzb2xhbmFfcHJvZ3JhbTo6bWVzc2FnZTo6Xzo6PGltcGwgc2VyZGU6OnNlcjo6U2VyaWFsaXplIGZvciBzb2xhbmFfcHJvZ3JhbTo6bWVzc2FnZTo6TWVzc2FnZUhlYWRlcj46OnNlcmlhbGl6ZTo6aGJjZWM5YTEwNDgwZGJkY2XcAjticzU4OjpkZWNvZGU6OkRlY29kZUJ1aWxkZXI8ST46OmludG9fdmVjOjpoYjdmNmIyMWY1YTBlNzQyOd0CE2tleXBhaXJfY29uc3RydWN0b3LeAg5rZXlwYWlyX3B1Ymtled8CUjxjdXJ2ZTI1NTE5X2RhbGVrOjpzY2FsYXI6OlNjYWxhciBhcyB6ZXJvaXplOjpaZXJvaXplPjo6emVyb2l6ZTo6aGI1MjA5OTVjYzAwZjljYmbgAo0BZWQyNTUxOV9kYWxlazo6c2VjcmV0OjpfREVSSVZFX0Ryb3BfRk9SX1NlY3JldEtleTo6PGltcGwgY29yZTo6b3BzOjpkcm9wOjpEcm9wIGZvciBlZDI1NTE5X2RhbGVrOjpzZWNyZXQ6OlNlY3JldEtleT46OmRyb3A6OmhlNzUzMmYzMDRmOWMzNDAx4QJIPHJ1c3RfZGVjaW1hbDo6ZXJyb3I6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgxZGM5NWNkN2I2Yzc5OGU34gIiX193YmdfZ2V0X21lc3NhZ2VfcmVjZW50X2Jsb2NraGFzaOMCWmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om1hcDo6ZW50cnk6Ok9jY3VwaWVkRW50cnk8SyxWPjo6cmVtb3ZlX2VudHJ5OjpoZTk3YjQ1NTdhMjMxMDE3M+QCQGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZV9mb3JfcHVzaDo6aGE0MjE2Zjk3M2MxZTliMDDlAk5hbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46OnJlc2VydmU6OmRvX3Jlc2VydmVfYW5kX2hhbmRsZTo6aGUzNTE5MmJlZjUzZTNmMjbmAkM8Y29uc29sZV9sb2c6OldlYkNvbnNvbGVMb2dnZXIgYXMgbG9nOjpMb2c+Ojpsb2c6OmgxZDQ0MDY2ODg0MmQyMTg15wJAYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlX2Zvcl9wdXNoOjpoZTdhYTJiZTZjZjBmNzI0OegCTmFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZTo6ZG9fcmVzZXJ2ZV9hbmRfaGFuZGxlOjpoYTQ4MWU3MGQzOWM3NGE1YekCQHJ1c3RfZGVjaW1hbDo6b3BzOjpkaXY6OnVuc2NhbGVfZnJvbV9vdmVyZmxvdzo6aDllNmZiM2ZmYzBkNTAzMDnqAk5hbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46OnJlc2VydmU6OmRvX3Jlc2VydmVfYW5kX2hhbmRsZTo6aGI2ZWE1MmZkOTBmMzkzYmXrAkBhbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46OnJlc2VydmVfZm9yX3B1c2g6Omg3YzgwM2EwNDFjNzQ1MDFj7AJOYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlOjpkb19yZXNlcnZlX2FuZF9oYW5kbGU6OmhjZmVhYWY1NjFjNDFkODZi7QJAYWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpyZXNlcnZlX2Zvcl9wdXNoOjpoOTg4ZGQ5ZWYxMzZhOWJlYu4CQGFsbG9jOjpyYXdfdmVjOjpSYXdWZWM8VCxBPjo6cmVzZXJ2ZV9mb3JfcHVzaDo6aDhlMzhhMmM2YTI2M2Q1MznvAk5hbGxvYzo6cmF3X3ZlYzo6UmF3VmVjPFQsQT46OnJlc2VydmU6OmRvX3Jlc2VydmVfYW5kX2hhbmRsZTo6aDc4NzU1ZmFiYjBhMjgyODDwAhdfX3diZ19pbnN0cnVjdGlvbnNfZnJlZfECR3J1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbDo6ZnJvbV9pMTI4X3dpdGhfc2NhbGU6Omg5MDU0YjM0NzJkMjM0Yzg28gIxY29tcGlsZXJfYnVpbHRpbnM6Om1lbTo6bWVtc2V0OjpoYjdiYWVhMTk0OGRkZTA5ZvMCO3NvbGFuYV9wcm9ncmFtOjp3YXNtOjpkaXNwbGF5X3RvX2pzdmFsdWU6OmgzM2Y0ZjY1YmNmYjQ4Mzg09AIPcHVia2V5X3RvU3RyaW5n9QISdHJhbnNhY3Rpb25fdmVyaWZ59gINaGFzaF90b1N0cmluZ/cCSmNvcmU6OmZtdDo6YnVpbGRlcnM6OkRlYnVnU3RydWN0OjpmaW5pc2hfbm9uX2V4aGF1c3RpdmU6OmgyZTc1MDQ3ZDRlYTlhZWIw+AKLAXNvbGFuYV9wcm9ncmFtOjptZXNzYWdlOjpsZWdhY3k6Ol86OjxpbXBsIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZSBmb3Igc29sYW5hX3Byb2dyYW06Om1lc3NhZ2U6OmxlZ2FjeTo6TWVzc2FnZT46OnNlcmlhbGl6ZTo6aDUzZTAxZDViZDBlNDFmYjn5Ahd0cmFuc2FjdGlvbl9tZXNzYWdlRGF0YfoCYzxzdGQ6OnBhbmlja2luZzo6YmVnaW5fcGFuaWNfaGFuZGxlcjo6UGFuaWNQYXlsb2FkIGFzIGNvcmU6OnBhbmljOjpCb3hNZVVwPjo6Z2V0OjpoYjU4OTJhZjU0YzFmOGI1M/sCK3N0ZDo6cGFuaWNraW5nOjpzZXRfaG9vazo6aDU5ZjVkMTVlYjMzMDUwOGH8Ajtzb2xhbmFfcHJvZ3JhbTo6d2FzbTo6ZGlzcGxheV90b19qc3ZhbHVlOjpoNmJhNWM4YTNlOTVhZjc1Zv0CdGJpbmNvZGU6OmVycm9yOjo8aW1wbCBzZXJkZTo6c2VyOjpFcnJvciBmb3IgYWxsb2M6OmJveGVkOjpCb3g8YmluY29kZTo6ZXJyb3I6OkVycm9yS2luZD4+OjpjdXN0b206OmgzY2U5MDA1NTU1NzQ2NDdh/gIzcnVzdF9kZWNpbWFsOjpvcHM6OmRpdjo6cm91bmRfdXA6OmhkNzE5MzM1YjVmNTA3YjQ0/wJ0YmluY29kZTo6ZXJyb3I6OjxpbXBsIHNlcmRlOjpzZXI6OkVycm9yIGZvciBhbGxvYzo6Ym94ZWQ6OkJveDxiaW5jb2RlOjplcnJvcjo6RXJyb3JLaW5kPj46OmN1c3RvbTo6aGViM2U2YmExODg0Y2QzZTGAA148cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpEZWNpbWFsIGFzIGNvcmU6Om9wczo6YXJpdGg6OkRpdkFzc2lnbj46OmRpdl9hc3NpZ246OmhiZGE3ODZmMzE0NjZkYTNigQNRPHB5dGhfc2RrX3NvbGFuYTo6ZXJyb3I6OlB5dGhFcnJvciBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgwY2IwZDExNzQ0ZTQzYjI3ggM9YWxsb2M6OnJhd192ZWM6OlJhd1ZlYzxULEE+OjpzaHJpbmtfdG9fZml0OjpoOGVkOGU0N2RjMzcyM2E1ZIMDZnNvbGFuYV9zZGs6Ondhc206OnRyYW5zYWN0aW9uOjo8aW1wbCBzb2xhbmFfc2RrOjp0cmFuc2FjdGlvbjo6VHJhbnNhY3Rpb24+Ojp0b0J5dGVzOjpoZmVlOWRiODdmZDNmYTlkN4QDLmFsbG9jOjpyYXdfdmVjOjpmaW5pc2hfZ3Jvdzo6aDExNTk4YjNjYmY2ZTg4YTeFAy5hbGxvYzo6cmF3X3ZlYzo6ZmluaXNoX2dyb3c6OmhjZWQ4Nzk0NDZmMjdlMjNihgMuYWxsb2M6OnJhd192ZWM6OmZpbmlzaF9ncm93OjpoNDMwYjU0OWUzYWVlOTY5OIcDLmFsbG9jOjpyYXdfdmVjOjpmaW5pc2hfZ3Jvdzo6aDQ5YzQ3YjEyOGQ2MDRkMWWIAy5hbGxvYzo6cmF3X3ZlYzo6ZmluaXNoX2dyb3c6Omg4NWQ2Y2JhZjVlOGQwOTI3iQM/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6OmhiZDdiZDZkYjlhYWMyNjE2igMuYWxsb2M6OnJhd192ZWM6OmZpbmlzaF9ncm93OjpoOTJmZjU1OGEwN2IzZTNlOYsDNWdmeF9zc2xfd2FzbTo6c3NsOjpTU0w6OnRvX2RlY2ltYWw6OmhkNjExMDgyMWQxMTdiMzQxjAMxZ2Z4X3NzbF93YXNtOjpzc2w6OlNTTDo6d2VpZ2h0OjpoYjRkNmU5ZjZkYzZjOGYxZo0DSWNvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6Okxvd2VySGV4IGZvciBpOD46OmZtdDo6aDUzNjBhNGU3ZmM1YTUyNmKOA0ljb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpVcHBlckhleCBmb3IgaTg+OjpmbXQ6Omg5NTc5ODdlOTU4NGRkZDYxjwN1PHNvbGFuYV9wcm9ncmFtOjptZXNzYWdlOjpsZWdhY3k6Ok1lc3NhZ2UgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OkludG9XYXNtQWJpPjo6aW50b19hYmk6Omg3OTUzOGNkNzM5YjU3ZjI5kANDPHdhc21fYmluZGdlbjo6SnNWYWx1ZSBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWE3MDA1N2ExN2U3YzdjZZEDSmNvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6Okxvd2VySGV4IGZvciBpMzI+OjpmbXQ6Omg1NGU1YmNhZTM0ZGE3NDFmkgNKY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6VXBwZXJIZXggZm9yIGkzMj46OmZtdDo6aDA3ZGRmNjNlYTQzNDI1MjWTA6ABPDwmbXV0IGJpbmNvZGU6OmRlOjpEZXNlcmlhbGl6ZXI8UixPPiBhcyBzZXJkZTo6ZGU6OkRlc2VyaWFsaXplcj46OmRlc2VyaWFsaXplX3R1cGxlOjpBY2Nlc3M8UixPPiBhcyBzZXJkZTo6ZGU6OlNlcUFjY2Vzcz46Om5leHRfZWxlbWVudF9zZWVkOjpoZWQ0ZTZmYzRhN2RjNGVkM5QDYDwmbXV0IGJpbmNvZGU6OnNlcjo6U2VyaWFsaXplcjxXLE8+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfc3RyOjpoZTAzOTc5N2IwNWE2M2UwZZUDM3J1c3RfZGVjaW1hbDo6b3BzOjphZGQ6OmZhc3RfYWRkOjpoZjM2NzM2NzRjZGM3ODUyMJYDDGhhc2hfdG9CeXRlc5cDWWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxhbGxvYzo6Ym94ZWQ6OkJveDxiaW5jb2RlOjplcnJvcjo6RXJyb3JLaW5kPj46OmhmNjdlMTBiMzk5NTcxNjQzmANZY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpib3hlZDo6Qm94PGJpbmNvZGU6OmVycm9yOjpFcnJvcktpbmQ+Pjo6aGY2N2UxMGIzOTk1NzE2NDOZAy1qc19zeXM6OlVpbnQ4QXJyYXk6OnRvX3ZlYzo6aDFmNjdlMDEzOTI5M2E4NmaaA0U8c2lnbmF0dXJlOjplcnJvcjo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGY5OWYyOGIzYjMxMDM4MzebA1ljb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8YWxsb2M6OmJveGVkOjpCb3g8YmluY29kZTo6ZXJyb3I6OkVycm9yS2luZD4+OjpoNjY3ZmJkMmQzMDVlMTNiMpwDLmpzX3N5czo6VWludDhBcnJheTo6Y29weV90bzo6aDgwMjJhNTIxNjhiYjJkYjKdA148cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpEZWNpbWFsIGFzIGNvcmU6Om9wczo6YXJpdGg6OkFkZEFzc2lnbj46OmFkZF9hc3NpZ246OmgyNGU1NmQ0ODU2NmE2NjhjngNePHJ1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbCBhcyBjb3JlOjpvcHM6OmFyaXRoOjpTdWJBc3NpZ24+OjpzdWJfYXNzaWduOjpoYWQ3ZDkzYzQ5NmU3ZWMxOZ8DXjxydXN0X2RlY2ltYWw6OmRlY2ltYWw6OkRlY2ltYWwgYXMgY29yZTo6b3BzOjphcml0aDo6TXVsQXNzaWduPjo6bXVsX2Fzc2lnbjo6aDcwNGU0ODhmZmJkNGIyMzegAzpjb3JlOjpmbXQ6OmJ1aWxkZXJzOjpEZWJ1Z1R1cGxlOjpmaW5pc2g6Omg1NWJhYmZlNzBiN2VlZTcwoQNLPHJhbmRfY29yZTo6b3M6Ok9zUm5nIGFzIHJhbmRfY29yZTo6Um5nQ29yZT46OmZpbGxfYnl0ZXM6Omg1NzYxYjljMTc4NjJkYWE5ogNVPGpzX3N5czo6SW50b0l0ZXIgYXMgY29yZTo6aXRlcjo6dHJhaXRzOjppdGVyYXRvcjo6SXRlcmF0b3I+OjpuZXh0OjpoOWY2MWFmMzA2ZWYyYjg2MaMDQ3N0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pY19oYW5kbGVyOjp7e2Nsb3N1cmV9fTo6aGVhMzExZWEyYmQ5MmEyOTOkAz1weXRoX3Nka19zb2xhbmE6OnN0YXRlOjpsb2FkX3ByaWNlX2FjY291bnQ6Omg2ZWNkY2RlNTE2YTdkYTA5pQMZcHVia2V5X2ZpbmRQcm9ncmFtQWRkcmVzc6YDXzxydXN0X2RlY2ltYWw6OmRlY2ltYWw6OkRlY2ltYWwgYXMgcnVzdF9kZWNpbWFsOjptYXRoczo6TWF0aGVtYXRpY2FsT3BzPjo6bG46OmhiODQ0OGNmY2EzMTViNGE3pwNMPHNoYTI6OnNoYTUxMjo6U2hhNTEyIGFzIGNvcmU6OmRlZmF1bHQ6OkRlZmF1bHQ+OjpkZWZhdWx0OjpoYzdhMzRmNGUyNmE2NmRjMagDMWJpbmNvZGU6OmludGVybmFsOjpkZXNlcmlhbGl6ZTo6aDkwMGVhNTNmMzE5NGRkYzWpAwhfX211bHRpM6oDXGVkMjU1MTk6OjxpbXBsIGNvcmU6OmNvbnZlcnQ6OkZyb208ZWQyNTUxOTo6U2lnbmF0dXJlPiBmb3IgW3U4OyBfXT46OmZyb206Omg0MzhhYTQxNjc1YmFlYmRkqwM3c29sYW5hX3Byb2dyYW06OnNob3J0X3ZlYzo6c2VyaWFsaXplOjpoMjM1ZTMzZGYwN2M1OGFhMawDN3NvbGFuYV9wcm9ncmFtOjpzaG9ydF92ZWM6OnNlcmlhbGl6ZTo6aGQ1M2U0YjVjMWIzZjE5ZTetAzdzb2xhbmFfcHJvZ3JhbTo6c2hvcnRfdmVjOjpzZXJpYWxpemU6OmhmZTdmY2IyMzc2Mjg5ZWMxrgNHPHNpZ25hdHVyZTo6ZXJyb3I6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDg3MzIxMDYxN2IyOWI3MGWvA3hzb2xhbmFfcHJvZ3JhbTo6cHVia2V5OjpfOjo8aW1wbCBzZXJkZTo6c2VyOjpTZXJpYWxpemUgZm9yIHNvbGFuYV9wcm9ncmFtOjpwdWJrZXk6OlB1YmtleT46OnNlcmlhbGl6ZTo6aDk5NmFjNDBiNTUzNTYxNmawAxBwdWJrZXlfaXNPbkN1cnZlsQM2cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpEZWNpbWFsOjpuZXc6OmhlNjNkOGRiNWU5ZmVlYTEzsgMuY29yZTo6cmVzdWx0Ojp1bndyYXBfZmFpbGVkOjpoZTg0YjU4ZjZiNDRhN2RmNLMDO2NvcmU6OmZtdDo6YnVpbGRlcnM6OkRlYnVnU3RydWN0OjpmaW5pc2g6OmhhNDZjMTdmM2ViODdhYjQ3tAM8ZWQyNTUxOV9kYWxlazo6a2V5cGFpcjo6S2V5cGFpcjo6dG9fYnl0ZXM6OmhhMWVkZDYzMmUxNGRiOTFhtQNaPGdmeF9zb2xhbmFfY29tbW9uOjpzYWZlX21hdGg6OlUxMjggYXMgY29yZTo6b3BzOjphcml0aDo6TXVsPHU2ND4+OjptdWw6Omg5YjgwZGQ3MTdhYjk3NDcwtgMNcHVia2V5X2VxdWFsc7cDC2hhc2hfZXF1YWxzuAMxYnl0ZW11Y2s6OnNvbWV0aGluZ193ZW50X3dyb25nOjpoZGJiZjNiNmNiMTcyMjhjNLkDfTxzb2xhbmFfcHJvZ3JhbTo6d2FzbTo6aW5zdHJ1Y3Rpb25zOjpJbnN0cnVjdGlvbnMgYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OkZyb21XYXNtQWJpPjo6ZnJvbV9hYmk6OmhhMzU5MWU0ZGQyOTliMjJmugMWX193YmdfaW5zdHJ1Y3Rpb25fZnJlZbsDPGRsbWFsbG9jOjpkbG1hbGxvYzo6RGxtYWxsb2M8QT46OmluaXRfdG9wOjpoMzViNDViZWQ5Y2NjZTk4OLwDSjxjb3JlOjpvcHM6OnJhbmdlOjpSYW5nZTxJZHg+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhjNzMzMzU2YzI2MmI1ODg3vQOMAWVkMjU1MTlfZGFsZWs6OmVycm9yczo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxlZDI1NTE5X2RhbGVrOjplcnJvcnM6OkludGVybmFsRXJyb3I+IGZvciBzaWduYXR1cmU6OmVycm9yOjpFcnJvcj46OmZyb206Omg1NzdmMGFkNDI5MTRjYTg5vgNTPHU2NCBhcyBnZnhfc3NsX3dhc206Om1hdGg6OnNhZmVfbWF0aDo6U2FmZU11bERpdj46OnNhZmVfbXVsX2Rpdjo6aDdlZWQ1NjI4YWZlYTlkMGS/AzZzb2xhbmFfcHJvZ3JhbTo6cHVia2V5OjpQdWJrZXk6Om5ldzo6aDk4YTk4NDEyMjY5MDIyNDTAAzI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZTZmMTA1ZGRjZmM2M2JlZMEDCV9fcG93aWRmMsIDEl9fd2JnX2tleXBhaXJfZnJlZcMDMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMjk3OTVkYTE3ZmE3MTIwZMQDRGNvcmU6OnNsaWNlOjppbmRleDo6c2xpY2Vfc3RhcnRfaW5kZXhfbGVuX2ZhaWxfcnQ6Omg1ZWRlZmZlYzZmNTEzZmI5xQNAY29yZTo6c2xpY2U6OmluZGV4OjpzbGljZV9pbmRleF9vcmRlcl9mYWlsX3J0OjpoOTEwNTQwOGJmZmNmNzlmY8YDQmNvcmU6OnNsaWNlOjppbmRleDo6c2xpY2VfZW5kX2luZGV4X2xlbl9mYWlsX3J0OjpoNTg3YzcyNGY4ZDEzNzMyNMcDNmNvcmU6OnBhbmlja2luZzo6cGFuaWNfYm91bmRzX2NoZWNrOjpoODg0YWY5ZDNiOTM4OWY5M8gDRDxjb3JlOjpmbXQ6OkFyZ3VtZW50cyBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg4ODYzMTE1MjgzYWZjOTFjyQMyY29yZTo6Zm10OjpGb3JtYXR0ZXI6OndyaXRlX2ZtdDo6aGNlNTM4MDgxM2M5MDJkMDjKA05jb3JlOjpzbGljZTo6PGltcGwgW1RdPjo6Y29weV9mcm9tX3NsaWNlOjpsZW5fbWlzbWF0Y2hfZmFpbDo6aGZhODk4MDE1OTg3ZjVmNWLLAxN0cmFuc2FjdGlvbl90b0J5dGVzzAMxY29yZTo6cGFuaWNraW5nOjphc3NlcnRfZmFpbGVkOjpoOGNhYTQ3OTg2ZDUyZjliOc0DMWNvcmU6OnBhbmlja2luZzo6YXNzZXJ0X2ZhaWxlZDo6aDFkMTY5OTczNDZmNjYyODLOAzFjb3JlOjpwYW5pY2tpbmc6OmFzc2VydF9mYWlsZWQ6OmhkZmNmMzExYWQyMjI3NjA1zwMxY29yZTo6cGFuaWNraW5nOjphc3NlcnRfZmFpbGVkOjpoNGI3MGRkMTQ0OTE2NzA1NtADOjwmbXV0IFcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2ZtdDo6aGQ0YWM4YWJjNzljZGM4ZWHRAzo8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9mbXQ6OmgyNjIyYWMwNzRjMWEwNjE20gM6PCZtdXQgVyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfZm10OjpoMmZhZmNkZWQ1MTc5OTA5MtMDN3N0ZDo6YWxsb2M6OmRlZmF1bHRfYWxsb2NfZXJyb3JfaG9vazo6aGY5NGJiMDE5MzQxMGE2ZTLUAzo8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9mbXQ6Omg0MWVlNDE3NzBmMjcwYzUy1QM6PCZtdXQgVyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfZm10OjpoZGUzMGI0NTgwNDkzMDljNdYDOjwmbXV0IFcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX2ZtdDo6aDI1NjQzY2QxZTk4ZTY0N2LXAy5jb3JlOjpmbXQ6OldyaXRlOjp3cml0ZV9mbXQ6OmhlM2Q3ZDllNDEyYzYwOTA52AMuY29yZTo6Zm10OjpXcml0ZTo6d3JpdGVfZm10OjpoNjNjODBiNTRkZjkxNzliM9kDLmNvcmU6OmZtdDo6V3JpdGU6OndyaXRlX2ZtdDo6aGFkY2YwYmE4YmIwMGNhOTPaAwlfX2FzaGx0aTPbAwlfX2xzaHJ0aTPcAy5jb3JlOjpmbXQ6OldyaXRlOjp3cml0ZV9mbXQ6Omg0OTg1OWNlNGY5OGM1YzRj3QNGc29sYW5hX3Byb2dyYW06Om1lc3NhZ2U6OmxlZ2FjeTo6TWVzc2FnZTo6c2VyaWFsaXplOjpoZjRhZGYwZTMyYTIzNThkYd4DQHN0ZDo6c3luYzo6b25jZTo6T25jZTo6Y2FsbF9vbmNlOjp7e2Nsb3N1cmV9fTo6aDQ1NmRlOTVlZTFmZjcxZmXfA0hjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDY2YmVkNjY1NWVhY2U5OWbgAzVnZnhfc3NsX3dhc206OnBhaXI6OlBhaXI6OmZlZV9yYXRlOjpoM2Q1YzQzYzZkZTRiM2ZjZeEDSjxhbGxvYzo6c3RyaW5nOjpGcm9tVXRmOEVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg1NDFjMTBmMWNlNTMwYjZh4gNGPGJ5dGVtdWNrOjpQb2RDYXN0RXJyb3IgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoNjAxZmQ1NDhiNjcwMWM3N+MDPmFsbG9jOjpjb2xsZWN0aW9uczo6YnRyZWU6Om5vZGU6OnNwbGl0cG9pbnQ6Omg5NWI0NzczOWM3ZWNiMGI45ANrPHNvbGFuYV9wcm9ncmFtOjpwdWJrZXk6OlB1YmtleSBhcyB3YXNtX2JpbmRnZW46OmNvbnZlcnQ6OnRyYWl0czo6SW50b1dhc21BYmk+OjppbnRvX2FiaTo6aDk1MjgxZDg3YjM3NDMwNzXlAzFhbGxvYzo6c3luYzo6QXJjPFQ+Ojpkcm9wX3Nsb3c6OmhhMmM1OGIxYjJiYzhiMGNi5gNjPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6UGFuaWNQYXlsb2FkPEE+IGFzIGNvcmU6OnBhbmljOjpCb3hNZVVwPjo6dGFrZV9ib3g6OmgyYTU1Njg0YzY5NDg0MWVj5wNjPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6UGFuaWNQYXlsb2FkPEE+IGFzIGNvcmU6OnBhbmljOjpCb3hNZVVwPjo6dGFrZV9ib3g6Omg2OGQ1OWVhYzY0ZTM2NDgz6AMZX193Ymdfb3JhY2xlcmVnaXN0cnlfZnJlZekDOjwmbXV0IFcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX3N0cjo6aDI4ZGUxYzUwNGMyMTNiMDfqAzo8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6OmhlZGI0ZmZmMDExMjlkMDdh6wNMY3VydmUyNTUxOV9kYWxlazo6ZWR3YXJkczo6Q29tcHJlc3NlZEVkd2FyZHNZOjpmcm9tX3NsaWNlOjpoZmU4ZGI1ZDZiM2Q3YTZjYewDOjwmbXV0IFcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX3N0cjo6aDMyYTNkYjI1N2U1MGZjMzDtAzo8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6OmhhODNjNWZhYzg5MWE4NmU37gNuPGdlbmVyaWNfYXJyYXk6OkdlbmVyaWNBcnJheTxULE4+IGFzIGdlbmVyaWNfYXJyYXk6OnNlcXVlbmNlOjpHZW5lcmljU2VxdWVuY2U8VD4+OjpnZW5lcmF0ZTo6aDU2ZDIwZjc3OWVlMGU4NTDvAzo8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6Omg5M2VmZjE1ZmRjNjljMzA08ANVPGdmeF9zb2xhbmFfY29tbW9uOjpzYWZlX21hdGg6OlUxMjggYXMgY29yZTo6b3BzOjphcml0aDo6RGl2Pjo6ZGl2OjpoMWM3ZDNlMmFjNDY2MmM1M/EDVTxnZnhfc29sYW5hX2NvbW1vbjo6c2FmZV9tYXRoOjpVMTI4IGFzIGNvcmU6Om9wczo6YXJpdGg6OlN1Yj46OnN1Yjo6aGRhMTQ4YTdiZjE5MDZiMzDyA0k8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6OmhjMDkyMTZiYWRmZmQ4ZTFj8wNJPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfc3RyOjpoYzA5MjE2YmFkZmZkOGUxY/QDYDwmbXV0IGJpbmNvZGU6OnNlcjo6U2VyaWFsaXplcjxXLE8+IGFzIHNlcmRlOjpzZXI6OlNlcmlhbGl6ZXI+OjpzZXJpYWxpemVfaTY0OjpoOWYxMTEzY2Y0Y2RmYjJkNfUDSTxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX3N0cjo6aGMwOTIxNmJhZGZmZDhlMWP2A0k8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9zdHI6OmhjMDkyMTZiYWRmZmQ4ZTFj9wNHPHJhbmRfY29yZTo6ZXJyb3I6OkVycm9yIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDI4NzI2N2VlYjc3OGJjY2b4AzFjb21waWxlcl9idWlsdGluczo6bWVtOjptZW1jbXA6Omg0YmVlYzc4YzllMGExOWEw+QNJPGFsbG9jOjpzdHJpbmc6OlN0cmluZyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfc3RyOjpoYzA5MjE2YmFkZmZkOGUxY/oDSTxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpXcml0ZT46OndyaXRlX3N0cjo6aGMwOTIxNmJhZGZmZDhlMWP7A1U8Z2Z4X3NvbGFuYV9jb21tb246OnNhZmVfbWF0aDo6VTEyOCBhcyBjb3JlOjpvcHM6OmFyaXRoOjpBZGQ+OjphZGQ6OmgzZWIxYzcyZjY0MTZkN2E2/AMibG9nOjpzZXRfbG9nZ2VyOjpoOWNlODk1Y2E0M2MxNTI4Mv0DQ2NvcmU6OmZtdDo6Rm9ybWF0dGVyOjpwYWRfaW50ZWdyYWw6OndyaXRlX3ByZWZpeDo6aDkzMmZiYjVhNWNhOWNkMjX+A1o8Z2Z4X3NvbGFuYV9jb21tb246OnNhZmVfbWF0aDo6VTEyOCBhcyBjb3JlOjpvcHM6OmFyaXRoOjpTdWI8dTY0Pj46OnN1Yjo6aGUzYTczYzg4M2RkMDNiMjb/Az5jdXJ2ZTI1NTE5X2RhbGVrOjpzY2FsYXI6OlNjYWxhcjo6ZnJvbV9iaXRzOjpoYmUyZjJmZTc1NTY0Mjk5YYAEdzwmY3VydmUyNTUxOV9kYWxlazo6c2NhbGFyOjpTY2FsYXIgYXMgY29yZTo6b3BzOjphcml0aDo6TXVsPCZjdXJ2ZTI1NTE5X2RhbGVrOjpzY2FsYXI6OlNjYWxhcj4+OjptdWw6OmgzNzFkYWI0M2U4MjllMjQ3gQRAc29sYW5hX3Byb2dyYW06Om1lc3NhZ2U6OmxlZ2FjeTo6TWVzc2FnZTo6bmV3OjpoMzg4ZWMwNjEwYTBmODY3ZIIEPHNvbGFuYV9wcm9ncmFtOjp3YXNtOjpzb2xhbmFfcHJvZ3JhbV9pbml0OjpoM2JjMWJiZDdlMzFhMjE1NoMEMWNvcmU6OnBhbmlja2luZzo6cGFuaWNfZGlzcGxheTo6aDI2OWI1ODkzNjU4YjllZTSEBCljb3JlOjpwYW5pY2tpbmc6OnBhbmljOjpoMDIwN2IyNDQ4MTFmZWY4YoUEMWNvcmU6OnBhbmlja2luZzo6cGFuaWNfZGlzcGxheTo6aDY4OWE2YTljZDE3NDEzOWGGBG48c29sYW5hX3Byb2dyYW06Omhhc2g6Okhhc2ggYXMgd2FzbV9iaW5kZ2VuOjpjb252ZXJ0Ojp0cmFpdHM6OlJlZkZyb21XYXNtQWJpPjo6cmVmX2Zyb21fYWJpOjpoM2ZlODQ3NzZiY2QwOTU0OYcEJ2dldHJhbmRvbTo6Z2V0cmFuZG9tOjpoYzEyNzI3NDQ0MTk5M2U0M4gEQXNvbGFuYV9wcm9ncmFtOjpwdWJrZXk6OlB1YmtleTo6bmV3X2Zyb21fYXJyYXk6OmgwOGJjMzU5ZmI4ODg4ZGFiiQRBPGxvZzo6U2V0TG9nZ2VyRXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDZiZTdmNmYzNTk0Mjk3NDGKBGs8c3RkOjpwYW5pY2tpbmc6OmJlZ2luX3BhbmljX2hhbmRsZXI6OlN0clBhbmljUGF5bG9hZCBhcyBjb3JlOjpwYW5pYzo6Qm94TWVVcD46OnRha2VfYm94OjpoZmYyZDAyZTJjYWUzMmFkMIsES2NvcmU6OmZtdDo6ZmxvYXQ6OjxpbXBsIGNvcmU6OmZtdDo6RGlzcGxheSBmb3IgZjY0Pjo6Zm10OjpoNGIwNGY3Y2U3MGZjYTUwNIwEMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOGI2YmEwNmI1YjNkMzkyYo0ESDxkbG1hbGxvYzo6c3lzOjpTeXN0ZW0gYXMgZGxtYWxsb2M6OkFsbG9jYXRvcj46OmFsbG9jOjpoYTQyZGI4NTBjMjVmYTViM44ECV9fdWRpdnRpM48ERDxieXRlbXVjazo6UG9kQ2FzdEVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2Y2RkZTA4MGFmOGRmMzE1kAQRcnVzdF9iZWdpbl91bndpbmSRBDxydXN0X2RlY2ltYWw6OmRlY2ltYWw6OkRlY2ltYWw6OnNldF9zY2FsZTo6aDkzNjNlYzZmOWUyOTUzNWSSBDRhbGxvYzo6cmF3X3ZlYzo6Y2FwYWNpdHlfb3ZlcmZsb3c6Omg2MjMwYTRkNWZiMmY1YjkzkwQtY29yZTo6cGFuaWNraW5nOjpwYW5pY19mbXQ6OmgxOGIxNWJlMjgzNDExYzY1lAQRX193YmluZGdlbl9tYWxsb2OVBERjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c2lnbmF0dXJlOjplcnJvcjo6RXJyb3I+OjpoYzRkNzgyMGQwMWVmNjc2OZYERGNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzaWduYXR1cmU6OmVycm9yOjpFcnJvcj46Omg3MWFhY2JiZmUxYmU2ZTY3lwR9Z2Z4X3NvbGFuYV9jb21tb246OnNhZmVfbWF0aDo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxnZnhfc29sYW5hX2NvbW1vbjo6c2FmZV9tYXRoOjpVMTI4PiBmb3IgdTY0Pjo6ZnJvbTo6aGQ4MjcwZGIxMDFiODEwOTSYBC9jb25zb2xlX2xvZzo6aW5pdF93aXRoX2xldmVsOjpoYzQ4ZTA0MDBlMDU4NzVlM5kEMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMWQ2MTc4ZDQzMTM3MDdhY5oEMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYmRmYzcxOTdmOGM5NmNiZZsEMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjM3M2M0N2FmOTdhYTU1M5wEMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjgwYjY5NWE3MjFjN2M4Yp0ENnJ1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbDo6bWF4OjpoMDZlMmNlMWExNzdhMGU2NJ4ENnJ1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbDo6bWluOjpoMWNiZjUyNGIyZTQ2Y2EwMp8EMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMzZiNWQzNzYyNTUwMmVjMaAEMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzdhMjkzZTMxOTZkZWNlOaEETTxzdGQ6OnRocmVhZDo6bG9jYWw6OkFjY2Vzc0Vycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhNmMyNjllNGVhM2ZkNmU2ogRPPHN0ZDo6c3luYzo6cG9pc29uOjpQb2lzb25FcnJvcjxUPiBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMWU2ZjY1MDQyNTY1ZTZkYaMEEl9fcmRsX2FsbG9jX3plcm9lZKQEMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOTRjNWVkZGYxNTVkOGZkNKUENGNvcmU6OmZtdDo6Rm9ybWF0dGVyOjpkZWJ1Z190dXBsZTo6aGQ5MDViZGQ3N2M0N2FiYmOmBDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDMwNmFjZWRjNTdiMWY2YjGnBDA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDE3OWRmYTg2YmUzNDJlYTmoBB1fX3diZ19zZXRfc3dhcHJlc3VsdF9mZWVfcGFpZKkEH19fd2JnX3NldF9zd2FwcmVzdWx0X2Ftb3VudF9vdXSqBCFfX3diZ19zZXRfc3dhcHJlc3VsdF9wcmljZV9pbXBhY3SrBB9fX3diZ19zZXRfc3dhcHJlc3VsdF9zd2FwX3ByaWNlrAQgX193Ymdfc2V0X3N3YXByZXN1bHRfaW5zdGFfcHJpY2WtBCFfX3diZ19zZXRfc3dhcHJlc3VsdF9vcmFjbGVfcHJpY2WuBBlfX3diZ19zZXRfc3dhcHJlc3VsdF9pdGVyrwRAc3RkOjpzeW5jOjpvbmNlOjpPbmNlOjpjYWxsX29uY2U6Ont7Y2xvc3VyZX19OjpoZWQ3ZDVkMDBmZDI1MzhlNLAESGNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNle3t2dGFibGUuc2hpbX19OjpoZjQ4NzZiMzNlMzgzMmE5Y7EEbWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzdGQ6OnN5bmM6OnBvaXNvbjo6UG9pc29uRXJyb3I8c3RkOjpzeW5jOjptdXRleDo6TXV0ZXhHdWFyZDwoKT4+Pjo6aDNkMDU2MmU0YWQ0OWQ1YTSyBBVfX3diZ19zd2FwcmVzdWx0X2ZyZWWzBEdjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8cnVzdF9kZWNpbWFsOjplcnJvcjo6RXJyb3I+OjpoMTk4MWRhMGJmODQ4NzlhNbQEO3N0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6e3tjbG9zdXJlfX06OmhjZmQ3ZTFmODlmNWY2MGI3tQRHY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHJ1c3RfZGVjaW1hbDo6ZXJyb3I6OkVycm9yPjo6aGQ0ZTA4YWMyN2U3ZThlZWW2BBFfX3diZ19wdWJrZXlfZnJlZbcED19fd2JnX2hhc2hfZnJlZbgEiwFiaW5jb2RlOjplcnJvcjo6PGltcGwgY29yZTo6Y29udmVydDo6RnJvbTxzdGQ6OmlvOjplcnJvcjo6RXJyb3I+IGZvciBhbGxvYzo6Ym94ZWQ6OkJveDxiaW5jb2RlOjplcnJvcjo6RXJyb3JLaW5kPj46OmZyb206OmgyYWNiNWNkZDc3MDYwY2JhuQRgPHJ1c3RfZGVjaW1hbDo6ZGVjaW1hbDo6RGVjaW1hbCBhcyBudW1fdHJhaXRzOjpjYXN0OjpGcm9tUHJpbWl0aXZlPjo6ZnJvbV91NjQ6OmhjZGU0YTUyNDE4NzFkM2E4ugQ7c3RkOjpwYW5pY2tpbmc6OmJlZ2luX3BhbmljOjp7e2Nsb3N1cmV9fTo6aGIwYjI3ODRlMzVhNWMxZDW7BC5jb3JlOjpzdHI6OnNsaWNlX2Vycm9yX2ZhaWw6OmgzMzUxZTVmYjFkNTFkNWU2vAQsY29yZTo6Zm10OjpGb3JtYXR0ZXI6Om5ldzo6aGM0MjY4NWNlMzkwZjVkM2a9BDVjb3JlOjpmbXQ6OkZvcm1hdHRlcjo6ZGVidWdfc3RydWN0OjpoNTcwM2E0MzYxZDBkYzcyNr4EM2NvcmU6OmZtdDo6Rm9ybWF0dGVyOjpkZWJ1Z19saXN0OjpoNDIyMWUzMDM2NTZhZDlhZb8EHl9fd2JnX3NldF9zd2FwcmVzdWx0X2Ftb3VudF9pbsAEHV9fd2JnX2dldF9zd2FwcmVzdWx0X2ZlZV9wYWlkwQQfX193YmdfZ2V0X3N3YXByZXN1bHRfYW1vdW50X291dMIEIV9fd2JnX2dldF9zd2FwcmVzdWx0X3ByaWNlX2ltcGFjdMMEH19fd2JnX2dldF9zd2FwcmVzdWx0X3N3YXBfcHJpY2XEBCBfX3diZ19nZXRfc3dhcHJlc3VsdF9pbnN0YV9wcmljZcUEIV9fd2JnX2dldF9zd2FwcmVzdWx0X29yYWNsZV9wcmljZcYEGV9fd2JnX2dldF9zd2FwcmVzdWx0X2l0ZXLHBE5jdXJ2ZTI1NTE5X2RhbGVrOjpzY2FsYXI6OlNjYWxhcjo6ZnJvbV9ieXRlc19tb2Rfb3JkZXJfd2lkZTo6aDUyMDM0MGRiNmRhZThlNDbIBEdjb3JlOjpmbXQ6Om51bTo6PGltcGwgY29yZTo6Zm10OjpEZWJ1ZyBmb3IgaTMyPjo6Zm10OjpoMWMxYzhlYjVmNzNmMTMzMMkER2NvcmU6OmZtdDo6bnVtOjo8aW1wbCBjb3JlOjpmbXQ6OkRlYnVnIGZvciB1MzI+OjpmbXQ6Omg4MjE0ZWI1OTI1NjZmNDQwygRHY29yZTo6Zm10OjpudW06OjxpbXBsIGNvcmU6OmZtdDo6RGVidWcgZm9yIGkzMj46OmZtdDo6aDFjMWM4ZWI1ZjczZjEzMzDLBDdkbG1hbGxvYzo6ZGxtYWxsb2M6OkNodW5rOjpzZXRfaW51c2U6OmgxYjRkYzAwMmYzMTc5MzBlzAQ6d2FzbV9iaW5kZ2VuOjpfX3J0Ojp0YWtlX2xhc3RfZXhjZXB0aW9uOjpoNjkyOGEwMmY4NzlkZWFmZc0EOWNvcmU6OmZtdDo6YnVpbGRlcnM6OkRlYnVnTGlzdDo6ZmluaXNoOjpoODZkYTU3ZTQ1NTliMmQzMM4ETmNvcmU6OmZtdDo6bnVtOjppbXA6OjxpbXBsIGNvcmU6OmZtdDo6RGlzcGxheSBmb3IgaTMyPjo6Zm10OjpoMWRlZGExYzQwZjNjNmFlY88EEm9yYWNsZXJlZ2lzdHJ5X25ld9AEHl9fd2JnX2dldF9zd2FwcmVzdWx0X2Ftb3VudF9pbtEELnN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6aGEwZDI3MTM4YTFiZWIyYmPSBBhpbnN0cnVjdGlvbnNfY29uc3RydWN0b3LTBC5zdGQ6OnBhbmlja2luZzo6YmVnaW5fcGFuaWM6Omg2Njc4Y2E1NTY0ZGI1ZWRm1AReY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pY19oYW5kbGVyOjpQYW5pY1BheWxvYWQ+OjpoMWY1MjdlY2RhMDU0ODRkNtUECnJ1c3RfcGFuaWPWBDVkbG1hbGxvYzo6ZGxtYWxsb2M6OlNlZ21lbnQ6OmhvbGRzOjpoNWFjNTIyMDRlMzM3NDdmMNcELWNvcmU6OnBhbmlja2luZzo6cGFuaWNfc3RyOjpoM2U5Zjc2MzY1YmIyYjRkMdgEEl9fd2JpbmRnZW5fcmVhbGxvY9kEQXN0ZDo6cGFuaWNraW5nOjpwYW5pY19jb3VudDo6aXNfemVyb19zbG93X3BhdGg6Omg1YjE2YjlmMWQwMzMwOGE32gRCZGxtYWxsb2M6OmRsbWFsbG9jOjpDaHVuazo6c2V0X2ZyZWVfd2l0aF9waW51c2U6OmhmNTc0YjZlZDU4MTVlZGYx2wQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlNF9tdXQ6OmgwMzA4M2MyYWVlMTk5NzBl3AROY29yZTo6Zm10OjpudW06OmltcDo6PGltcGwgY29yZTo6Zm10OjpEaXNwbGF5IGZvciBpNjQ+OjpmbXQ6OmhjMmVjMTM1ZGE1MWEzOTE03QQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6OmgxMGIxZWFkYmE0YWYzOTkx3gQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6OmgyYTQwNzA5OTEwNDYyMzY53wQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6OmgzMjg5YmZmZjlhNTMyODU54AQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6OmgzZThkNmJhNDNjMDM0OWIw4QQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6Omg1YTczMDM1ZWJhMzA3NWZh4gQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6Omg4NGRhMmYzY2UzMzQxNWZm4wQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlM19tdXQ6OmhkZDc2YmEzZDAxZmFmMWE15ARCZGxtYWxsb2M6OmRsbWFsbG9jOjpDaHVuazo6c2V0X2ludXNlX2FuZF9waW51c2U6Omg2NTUxNTBiMzVjMjIxYWNj5QRCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OmhlNTQ0ODQwMjQ5ZTc0YWRl5gRCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OmhlNTQ0ODQwMjQ5ZTc0YWRl5wRCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OmhlNTQ0ODQwMjQ5ZTc0YWRl6ARCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OmhlNTUwMWUyYzBlZjgzMTk26QQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlMl9tdXQ6OmgwZTRmMmQ2OWY2ZjQ0NGM36gTQAWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxzdGQ6OmVycm9yOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPGFsbG9jOjpzdHJpbmc6OlN0cmluZz4gZm9yIGFsbG9jOjpib3hlZDo6Qm94PGR5biBzdGQ6OmVycm9yOjpFcnJvcitjb3JlOjptYXJrZXI6OlN5bmMrY29yZTo6bWFya2VyOjpTZW5kPj46OmZyb206OlN0cmluZ0Vycm9yPjo6aDI1MGQ5YzdlMTM5NGQwYWHrBDQ8Ym9vbCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhiYjM1MzI1ODM0ODMwMGRj7ARCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OmgwMTgyZjVkOTc1ZWRiZmM07QRCY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGFsbG9jOjpzdHJpbmc6OlN0cmluZz46OmgwMTgyZjVkOTc1ZWRiZmM07gRePHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6UGFuaWNQYXlsb2FkPEE+IGFzIGNvcmU6OnBhbmljOjpCb3hNZVVwPjo6Z2V0OjpoZDE2ZDZmNGZjMjExODcyZO8ExwFzb2xhbmFfcHJvZ3JhbTo6d2FzbTo6aW5zdHJ1Y3Rpb25zOjo8aW1wbCBjb3JlOjpjb252ZXJ0OjpGcm9tPHNvbGFuYV9wcm9ncmFtOjp3YXNtOjppbnN0cnVjdGlvbnM6Okluc3RydWN0aW9ucz4gZm9yIGFsbG9jOjp2ZWM6OlZlYzxzb2xhbmFfcHJvZ3JhbTo6aW5zdHJ1Y3Rpb246Okluc3RydWN0aW9uPj46OmZyb206OmgyNWVmNmQ2MTQyNmJkNzY28AQ/d2FzbV9iaW5kZ2VuOjpjb252ZXJ0OjpjbG9zdXJlczo6aW52b2tlMV9tdXQ6Omg1MGRiZGM1YTU2NGVhMDVm8QRePHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6UGFuaWNQYXlsb2FkPEE+IGFzIGNvcmU6OnBhbmljOjpCb3hNZVVwPjo6Z2V0OjpoMzRjNzY5MDFmMDJmNjRiYvIENmdldHJhbmRvbTo6aW1wOjpSTkdfU09VUkNFOjpfX2dldGl0OjpoN2E4OWY3NGU1Y2JlZDU1N/MEQGRsbWFsbG9jOjpkbG1hbGxvYzo6VHJlZUNodW5rOjpsZWZ0bW9zdF9jaGlsZDo6aDlkZmVkM2Y1NmU0ZmU3ODj0BARmbWF49QQIcnVzdF9vb232BD9kbG1hbGxvYzo6ZGxtYWxsb2M6OmxlZnRzaGlmdF9mb3JfdHJlZV9pbmRleDo6aDc2ZjNjNmIzYjI0NWQ1ZGb3BE9kbG1hbGxvYzo6ZGxtYWxsb2M6OkNodW5rOjpzZXRfc2l6ZV9hbmRfcGludXNlX29mX2ZyZWVfY2h1bms6Omg2ZmRiNDk0ZWY1YTJhNTdk+AQ2Y29yZTo6aW50cmluc2ljczo6Y29uc3RfZXZhbF9zZWxlY3Q6OmhiNmI3MTAyYjMxNjk3ZGNi+QRIPGNvcmU6OmNlbGw6OkJvcnJvd011dEVycm9yIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhkY2ZiYTEyNmU2OWI5NTc2+gQyY29yZTo6Zm10OjpGb3JtYXR0ZXI6OndyaXRlX3N0cjo6aDRlZjQ3NGQzZDUzMDgyMjf7BD48Y29yZTo6Zm10OjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYTgwZGQ1M2ZmNWQxZWZhMfwEBXJvdW5k/QQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg1MjYwNmQyOWFjNWE0YzI0/gQwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwNTg5M2IxM2U1MTdjMWM0/wQyY29yZTo6b3B0aW9uOjpPcHRpb248VD46OnVud3JhcDo6aDM5ZmExNDgxM2NhZTBmODSABTJjb3JlOjpvcHRpb246Ok9wdGlvbjxUPjo6dW53cmFwOjpoOWEzNzE2MWUzZjk1NzMzZIEFL2RsbWFsbG9jOjpkbG1hbGxvYzo6YWxpZ25fdXA6Omg3Nzc2ZDU2NmNmNWMwNmNlggUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGIzYmMxZDIzODg1MDkyNjiDBUlzdGQ6OnN5c19jb21tb246OmJhY2t0cmFjZTo6X19ydXN0X2VuZF9zaG9ydF9iYWNrdHJhY2U6Omg1ODdhMDZlZjYzMjkyNDU2hAUOX19ydXN0X3JlYWxsb2OFBTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDgzYzBhYWNjOTY3ZGMwMzeGBTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYjE0MTI0MjIxMGRkZDMzY4cFJHN1YnRsZTo6YmxhY2tfYm94OjpoNGNmYmQ4NWIxNDNkZWE1ZYgFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZGM5NmYxYmMxMWI5M2U2MYkFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoY2UyZTUzZTY4YThhZTc2ZYoFMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg2YWM0ZWY0Yzg0NDM5MWVjiwVJc3RkOjpzeXNfY29tbW9uOjpiYWNrdHJhY2U6Ol9fcnVzdF9lbmRfc2hvcnRfYmFja3RyYWNlOjpoNDllYjI5MTcwOTIzYWY4NowFD19fd2JpbmRnZW5fZnJlZY0FQzxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aGMzOTc4ZTg5ZDAxY2YwOWSOBUU8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGI4YjY0ZTgxMGFmZWEwZDWPBUlzdGQ6OnN5c19jb21tb246OmJhY2t0cmFjZTo6X19ydXN0X2VuZF9zaG9ydF9iYWNrdHJhY2U6Omg3ZGY2YzFhNGI4OTQ5NjQ1kAUwZGxtYWxsb2M6OmRsbWFsbG9jOjpsZWZ0X2JpdHM6Omg4N2NiMzBmYWQ1NWJmMGVjkQUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGU5YzBlYTZlZDU5ZjhmM2GSBVs8ZWQyNTUxOV9kYWxlazo6cHVibGljOjpQdWJsaWNLZXkgYXMgY29yZTo6Y29udmVydDo6QXNSZWY8W3U4XT4+Ojphc19yZWY6OmhmZjdmNzZiYjNlNzMwNWU5kwUwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhhMmQyMGVmMDQ4YjY2MGYxlAUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDUyZGNkMzI4MmJlMzA0MWSVBVZhbnlob3c6OmVycm9yOjo8aW1wbCBjb3JlOjpvcHM6OmRyb3A6OkRyb3AgZm9yIGFueWhvdzo6RXJyb3I+Ojpkcm9wOjpoODdiNDNhNzA5YjJmOGU3YpYFRjxhbGxvYzo6Ym94ZWQ6OkJveDxULEE+IGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDliYzQzNDY0YjY2NzQ0ZWaXBTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDY1ZTA1YTM4YTI5NTlkNDaYBQxfX3J1c3RfYWxsb2OZBRNfX3J1c3RfYWxsb2NfemVyb2VkmgV3PGdmeF9zb2xhbmFfY29tbW9uOjpzYWZlX21hdGg6OlUxMjggYXMgY29yZTo6Y29udmVydDo6RnJvbTxnZnhfc29sYW5hX2NvbW1vbjo6c2FmZV9tYXRoOjpVNjQ+Pjo6ZnJvbTo6aGZmNzY3YTg4ODUwMWZmYTObBUU8YWxsb2M6OnN0cmluZzo6U3RyaW5nIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGI4YjY0ZTgxMGFmZWEwZDWcBVk8c29sYW5hX3Byb2dyYW06OnB1YmtleTo6UHVia2V5IGFzIGNvcmU6OmNvbnZlcnQ6OkFzUmVmPFt1OF0+Pjo6YXNfcmVmOjpoYTczMmZkZGJiMGIxYzUzM50FRTxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYjhiNjRlODEwYWZlYTBkNZ4FMXN0ZDo6ZXJyb3I6OkVycm9yOjpkZXNjcmlwdGlvbjo6aGZhZjE3YWVlMjQ0ZTM4ZTCfBTA8JlQgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDk4OGU2NDE3ZWIxMjgyZGKgBS9sb2c6OkxldmVsRmlsdGVyOjpmcm9tX3VzaXplOjpoZTVjMTI2YjJjZDdmOTZkMqEFMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhjM2JhMzIxMDA5YzlmOTUwogU2YmluY29kZTo6ZGU6OnJlYWQ6OlNsaWNlUmVhZGVyOjpuZXc6Omg5N2Y5YWNmMjg0NWFiYTU1owUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDk4OGI4ZjU0ODUwODM5MGGkBTU8JnN0ciBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoNTI3NGUwYzlhNzZkZDUzZKUFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOGFmMGExMmFjNzQwNzI5Y6YFRTxhbGxvYzo6c3RyaW5nOjpTdHJpbmcgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoYjhiNjRlODEwYWZlYTBkNacFFF9fd2JpbmRnZW5fZXhuX3N0b3JlqAUwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg2MTBjZjk0NjdiNmM3YjAwqQUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGY0YzExYTc5YjU1YThlN2SqBTs8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoYzA1MThhOGU2MjRiN2E2ZKsFZjxzdGQ6OnBhbmlja2luZzo6YmVnaW5fcGFuaWNfaGFuZGxlcjo6U3RyUGFuaWNQYXlsb2FkIGFzIGNvcmU6OnBhbmljOjpCb3hNZVVwPjo6Z2V0OjpoZWJkZTU0MWRmMWQ5YmRlZawFNGRsbWFsbG9jOjpkbG1hbGxvYzo6Q2h1bms6OmNpbnVzZTo6aDY3YjVmODI2YWMwNjQxOGOtBTpkbG1hbGxvYzo6ZGxtYWxsb2M6OkNodW5rOjpjbGVhcl9waW51c2U6OmhkZDk1NjMzYzUwZDQ0YWRkrgUzZGxtYWxsb2M6OmRsbWFsbG9jOjpDaHVuazo6aW51c2U6Omg5YTBjZjkxMjY0YWU1YjM3rwU5Y29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpjYWxsX29uY2U6OmgyNGEzMjEzZmVlYjE5YjQwsAUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDUyZjNlNzliZThkMTk0NTexBTJjb3JlOjpmbXQ6OkZvcm1hdHRlcjo6YWx0ZXJuYXRlOjpoZGU1NjBlMmM4MWYyMDJhMbIFOGNvcmU6OmZtdDo6Rm9ybWF0dGVyOjpkZWJ1Z19sb3dlcl9oZXg6OmgzMzBkZWFlNTc3N2JkYmE2swU4Y29yZTo6Zm10OjpGb3JtYXR0ZXI6OmRlYnVnX3VwcGVyX2hleDo6aDcxOTBiZDE4NDU3YWRmMTK0BU08ZWQyNTUxOTo6U2lnbmF0dXJlIGFzIGNvcmU6OmNvbnZlcnQ6OkFzUmVmPFt1OF0+Pjo6YXNfcmVmOjpoZDI0MDFiMjY0Y2FiNzRjZLUFMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgzMjMwY2NmODlkZjM2MmM4tgUxc3RkOjplcnJvcjo6RXJyb3I6OmRlc2NyaXB0aW9uOjpoMmNhNTU5MWNmZGYzM2M3YbcFMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6Omg0NTgzOWE1MDBiNjQ5ODIxuAUOX19ydXN0X2RlYWxsb2O5BUc8Y29uc29sZV9sb2c6OldlYkNvbnNvbGVMb2dnZXIgYXMgbG9nOjpMb2c+OjplbmFibGVkOjpoNDhkNGY3MzEwNjNlMmEwMboFX2N1cnZlMjU1MTlfZGFsZWs6OmVkd2FyZHM6OkVkd2FyZHNQb2ludDo6dmFydGltZV9kb3VibGVfc2NhbGFyX211bF9iYXNlcG9pbnQ6Omg2NTEwY2U5ODg5MTlmNTQwuwUlanNfc3lzOjpBcnJheTo6c2V0OjpoMTQ3YjhhMDU1ZTVjMDEwNLwFKmpzX3N5czo6QXJyYXk6OmlzX2FycmF5OjpoNTdlYmZhZjViNjQxNTMzOb0FJmpzX3N5czo6QXJyYXk6OnB1c2g6OmgwZDFjOTVlZjdhYmY2NjhivgWBAWpzX3N5czo6X193YmdfZ2VuZXJhdGVkX2NvbnN0X1VpbnQ4QXJyYXk6OjxpbXBsIHdhc21fYmluZGdlbjo6Y2FzdDo6SnNDYXN0IGZvciBqc19zeXM6OlVpbnQ4QXJyYXk+OjppbnN0YW5jZW9mOjpoODM4OGI4ZWE4Y2IwY2I5Yr8FL2pzX3N5czo6VWludDhBcnJheTo6c3ViYXJyYXk6Omg3YTU4OTZlNjYzNzIyZmViwAU7cnVzdF9kZWNpbWFsOjpkZWNpbWFsOjpEZWNpbWFsOjpyb3VuZF9kcDo6aDIxOTBkNzI5NzU5OWNmMWXBBTNydXN0X2RlY2ltYWw6Om9wczo6YWRkOjphZGRfaW1wbDo6aDM1NDk1ZjIyYzgwZDhmZGXCBTNydXN0X2RlY2ltYWw6Om9wczo6YWRkOjpzdWJfaW1wbDo6aGZiMDE1NDRhZjUwYjA1ZDDDBUc8ZHluIHNlcmRlOjpkZTo6RXhwZWN0ZWQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOTRjNGQ1YjNlYWY4MTgyNMQFMGRsbWFsbG9jOjpkbG1hbGxvYzo6bGVhc3RfYml0OjpoYjJkZDZlODI2MTZjZDQ4ZsUFNWRsbWFsbG9jOjpkbG1hbGxvYzo6Q2h1bms6Om1tYXBwZWQ6Omg0NDY5OWRkYzE0NDYzN2FjxgVQZGxtYWxsb2M6OmRsbWFsbG9jOjpDaHVuazo6c2V0X3NpemVfYW5kX3BpbnVzZV9vZl9pbnVzZV9jaHVuazo6aGNmOTc1MjgwOGZlNzUxNGXHBTNkbG1hbGxvYzo6ZGxtYWxsb2M6OlNlZ21lbnQ6OnRvcDo6aDEwZWFkNGQ5NWZkYTY0MmTIBTs8Jm11dCBXIGFzIGNvcmU6OmZtdDo6V3JpdGU+Ojp3cml0ZV9jaGFyOjpoMzhkZDRmYmQ1Yzk5MGU5NMkFOWNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNlOjpoNTRkYWVmOGUzMTk0ODNmN8oFTmNvcmU6OmZtdDo6bnVtOjppbXA6OjxpbXBsIGNvcmU6OmZtdDo6RGlzcGxheSBmb3IgdTMyPjo6Zm10OjpoNWI3ZWE5ZjUxN2EwN2IzOcsFLmNvcmU6Om9wdGlvbjo6ZXhwZWN0X2ZhaWxlZDo6aDcxMDM2M2NiMzkxYTQxOTTMBTdjb3JlOjpmbXQ6OmJ1aWxkZXJzOjpEZWJ1Z1NldDo6ZW50cnk6OmhhYTRmYTcxOTU5MTUwYTMxzQU6PCZtdXQgVyBhcyBjb3JlOjpmbXQ6OldyaXRlPjo6d3JpdGVfc3RyOjpoOGNjMjRmM2Q3YThlOGI1Zc4FTWNvcmU6OmZtdDo6bnVtOjppbXA6OjxpbXBsIGNvcmU6OmZtdDo6RGlzcGxheSBmb3IgdTg+OjpmbXQ6Omg4MGMxYzQ5M2I5ODkwMjJizwVOY29yZTo6Zm10OjpudW06OmltcDo6PGltcGwgY29yZTo6Zm10OjpEaXNwbGF5IGZvciB1NjQ+OjpmbXQ6OmhiNzQ5YjlmMGQzNzEwMDYx0AUfX193YmluZGdlbl9hZGRfdG9fc3RhY2tfcG9pbnRlctEFMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmhhOGNkNTZkMDg5N2U3ZjNi0gUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDkyMDVlOGZlNmUwMTVkOTXTBTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoOTI2YzU3ZDI0MTMzYWE3M9QFGl9fcnVzdF9hbGxvY19lcnJvcl9oYW5kbGVy1QVSYW55aG93OjplcnJvcjo6PGltcGwgY29yZTo6Zm10OjpEaXNwbGF5IGZvciBhbnlob3c6OkVycm9yPjo6Zm10OjpoZWYwNjA2NTAyMzYwMTM0YdYFRDxhbGxvYzo6Ym94ZWQ6OkJveDxULEE+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0ZTI2NDA4YTg2MDNiMzM51wUzPCZUIGFzIGNvcmU6OmZtdDo6TG93ZXJIZXg+OjpmbXQ6OmhkZTRlYTM3YjUwZWUxY2Fj2AUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDg2ZDc3ZmRmM2Y1Y2QzNjPZBagBY3VydmUyNTUxOV9kYWxlazo6ZWR3YXJkczo6PGltcGwgY29yZTo6b3BzOjphcml0aDo6TXVsPCZjdXJ2ZTI1NTE5X2RhbGVrOjplZHdhcmRzOjpFZHdhcmRzQmFzZXBvaW50VGFibGU+IGZvciAmY3VydmUyNTUxOV9kYWxlazo6c2NhbGFyOjpTY2FsYXI+OjptdWw6OmgwYWFlMWQ3Mzg4ZGZkM2U42gVBPGJzNTg6OmVuY29kZTo6RXJyb3IgYXMgY29yZTo6Zm10OjpEZWJ1Zz46OmZtdDo6aDI2MTVhYzI4ODVlYjVjNDPbBSxzaGEyOjpzaGEyNTY6OmNvbXByZXNzMjU2OjpoMTM3ODJhNTE4YzlkYmFjONwFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZjVhZWIxMTM4MDM2Njk1N90FMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoOWQzMWRmOGFlYWY3OTk3ON4FMjwmVCBhcyBjb3JlOjpmbXQ6OkRpc3BsYXk+OjpmbXQ6OmgyY2ZkNzVhMTlkZWU4Yzdi3wUwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmhkYjE1NGE1NzE0NzVjZDg44AUyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aDJhYTU5ZWU3MDEyZTE4ZmThBTI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoZjk5ODM5ZjExZDMzZDYyOOIFKndhc21fYmluZGdlbjo6dGhyb3dfc3RyOjpoNDIyOTgxNWViMGFlM2FkMuMFMXdhc21fYmluZGdlbjo6X19ydDo6dGhyb3dfbnVsbDo6aDU4Y2Y5MmZhM2MwNDhkNjLkBTJ3YXNtX2JpbmRnZW46Ol9fcnQ6OmJvcnJvd19mYWlsOjpoZGQzMGRmYzg4MzY0MWFmMeUFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzQ3ODE2MWU4NTFlYTc5NOYFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTlkMjRmNmQ2NWEwYWJhZecFMmRsbWFsbG9jOjpkbG1hbGxvYzo6Q2h1bms6OnNpemU6Omg1Y2U4ODE3ODBjOWQ2Zjgz6AU0ZGxtYWxsb2M6OmRsbWFsbG9jOjpDaHVuazo6cGludXNlOjpoMjgxYTA0MTk4MDM3ZjllOOkFOWRsbWFsbG9jOjpkbG1hbGxvYzo6U2VnbWVudDo6aXNfZXh0ZXJuOjpoOTU5ZDlhMWNhNmU5Mjc3MOoFOWRsbWFsbG9jOjpkbG1hbGxvYzo6U2VnbWVudDo6c3lzX2ZsYWdzOjpoZTVjYzEzNWRjNzQ5ODExNusFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZTJhOTM4MTQ2OTU3ZDJkOOwFNmNvcmU6OmludHJpbnNpY3M6OmNvbnN0X2V2YWxfc2VsZWN0OjpoMDBjOTJkZDQxMjNjMmQ0Nu0FOWNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNlOjpoZTFhNmVhNDI4NThmN2RiOO4FPWFsbG9jOjphbGxvYzo6aGFuZGxlX2FsbG9jX2Vycm9yOjpydF9lcnJvcjo6aDBhYmIxNGUyZjFiY2Y1MmLvBTNhbGxvYzo6YWxsb2M6OmhhbmRsZV9hbGxvY19lcnJvcjo6aGY1ODEyYmIwOGEzNmFhZDbwBQhfX3JnX29vbfEFOWNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNlOjpoMGMxNmUxNGI4M2Y4ODUyY/IFOWNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNlOjpoMWNlMDY4MDgxZjlmNmFhYfMFOWNvcmU6Om9wczo6ZnVuY3Rpb246OkZuT25jZTo6Y2FsbF9vbmNlOjpoY2I4NTRhNGI2NzM5NDdkN/QFQWNvcmU6OnNsaWNlOjppbmRleDo6c2xpY2Vfc3RhcnRfaW5kZXhfbGVuX2ZhaWw6OmhmZTJiZjhlOThkOTMzYWNl9QU/Y29yZTo6c2xpY2U6OmluZGV4OjpzbGljZV9lbmRfaW5kZXhfbGVuX2ZhaWw6Omg4Mzc0ZGI1MzJlMTdhMjc39gU9Y29yZTo6c2xpY2U6OmluZGV4OjpzbGljZV9pbmRleF9vcmRlcl9mYWlsOjpoYzkxNjk0ZTZkNmE0MzFkZfcFNmNvcmU6OmludHJpbnNpY3M6OmNvbnN0X2V2YWxfc2VsZWN0OjpoNGQzZmZjMGM3NzI2M2M0NvgFNmNvcmU6OmludHJpbnNpY3M6OmNvbnN0X2V2YWxfc2VsZWN0OjpoNTkzOWU2YjczMTgxM2Q5N/kFNmNvcmU6OmludHJpbnNpY3M6OmNvbnN0X2V2YWxfc2VsZWN0OjpoZmFjMTczM2QzMGNiYzA2OPoFMzxzdHIgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMmY0ZjU1NDkyYzZhZDY5YvsFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMDc5OTY2Nzg1MzdhM2M2NvwFMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoMWZjMTcwMTY2NzY2MTk2Yf0FMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNDdiYjJmZWNhMzEyYTkzNv4FMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNzMzYTc0MGJlOGZhNzUzOP8FBm1lbWNweYAGB21lbW1vdmWBBgZtZW1jbXCCBgZtZW1zZXSDBjI8JlQgYXMgY29yZTo6Zm10OjpEaXNwbGF5Pjo6Zm10OjpoMTc0MzJhYzA1ZDQwOTgwN4QGMjxUIGFzIHNlcmRlOjpkZTo6RXhwZWN0ZWQ+OjpmbXQ6OmgyN2VkMjk1NDFiM2RmM2QzhQYwPCZUIGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6OmgwYjI0YjlhYzc0NTViYWI4hgYyPCZUIGFzIGNvcmU6OmZtdDo6RGlzcGxheT46OmZtdDo6aGJlZmI3Y2QxYTdiZDNlODOHBjI8VCBhcyBzZXJkZTo6ZGU6OkV4cGVjdGVkPjo6Zm10OjpoNDNkZGMyNmRmNjZhZTUzZogGMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoNjYxMDZiOTgxMWM1MWUwNokGMDwmVCBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoYzA5OGIzZmIxOGUxNTdjOYoGRDxhbGxvYzo6Ym94ZWQ6OkJveDxULEE+IGFzIGNvcmU6OmZtdDo6RGVidWc+OjpmbXQ6Omg0ZWE3M2QwMzhhZGZlYzVliwYyPFQgYXMgc2VyZGU6OmRlOjpFeHBlY3RlZD46OmZtdDo6aDE5MjQwYWYzNmZkMmQyMWSMBkN3ZWJfc3lzOjpmZWF0dXJlczo6Z2VuX2NvbnNvbGU6OmNvbnNvbGU6OmRlYnVnXzE6OmhmZjQ5ODlkMGFhZGM3YzVhjQZDd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9jb25zb2xlOjpjb25zb2xlOjplcnJvcl8xOjpoOTIzZDNjODFjY2RlZWJlYo4GQndlYl9zeXM6OmZlYXR1cmVzOjpnZW5fY29uc29sZTo6Y29uc29sZTo6aW5mb18xOjpoMGQxMWUyNjI1MjI2Y2JiYY8GQXdlYl9zeXM6OmZlYXR1cmVzOjpnZW5fY29uc29sZTo6Y29uc29sZTo6bG9nXzE6Omg5NTc3ZDcxNzRmODg0ZDc1kAZCd2ViX3N5czo6ZmVhdHVyZXM6Omdlbl9jb25zb2xlOjpjb25zb2xlOjp3YXJuXzE6OmgzNTcwYzQ3YTgzMTE3MDZkkQYrc3RkOjplcnJvcjo6RXJyb3I6OmNhdXNlOjpoYmQ1NTMxYTVhMmJmMjI1NJIGLHN0ZDo6ZXJyb3I6OkVycm9yOjpzb3VyY2U6OmhhM2FhNzg5MDkxMzgyMTk4kwYoanNfc3lzOjpBcnJheTo6dmFsdWVzOjpoNjEyM2U5ZmJkOTkwMGI3ZJQGSjxydXN0X2RlY2ltYWw6OmRlY2ltYWw6OkRlY2ltYWwgYXMgY29yZTo6Y21wOjpPcmQ+OjpjbXA6Omg2M2Q2MTUzYzM0YzY1ODI4lQZDPHN0ZDo6aW86OmVycm9yOjpFcnJvciBhcyBjb3JlOjpmbXQ6OkRlYnVnPjo6Zm10OjpoZjMzYWRkMzUxOTNhYTVjN5YGC19fcmRsX2FsbG9jlwY5ZGxtYWxsb2M6OmRsbWFsbG9jOjpDaHVuazo6cGx1c19vZmZzZXQ6Omg2YjFhYmU2Y2Q5Yzg1MTkzmAY6ZGxtYWxsb2M6OmRsbWFsbG9jOjpDaHVuazo6bWludXNfb2Zmc2V0OjpoZjkzNzRjNDNlMTE2ZDJmMpkGNGRsbWFsbG9jOjpkbG1hbGxvYzo6Q2h1bms6OnRvX21lbTo6aDk4ODcwZGZkN2UzMGIzNTGaBjZkbG1hbGxvYzo6ZGxtYWxsb2M6OkNodW5rOjpmcm9tX21lbTo6aDBjYTFlM2VlOWIzMjU0MDWbBi9zaWduYXR1cmU6OmVycm9yOjpFcnJvcjo6bmV3OjpoYzVlOTU4ZTliZjhjZWJmMpwGK3N0ZDo6ZXJyb3I6OkVycm9yOjpjYXVzZTo6aGE4ZDk1MGQzYjY0M2NhYzKdBjBjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbjo6Y2FsbDo6aDJjZjdiODBlNDE2YWZjNzeeBjdjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk11dDo6Y2FsbF9tdXQ6Omg0ZGM1Y2I4OWJhYmMzZjFknwZIY29yZTo6b3BzOjpmdW5jdGlvbjo6Rm5PbmNlOjpjYWxsX29uY2V7e3Z0YWJsZS5zaGltfX06OmgxOGUwOGYwZDI0YmJjYmFmoAZDPHU2NCBhcyBnZnhfc29sYW5hX2NvbW1vbjo6dmF1bHQ6OlZhdWx0Pjo6YW1vdW50OjpoNzIyM2Y1ZGNlZWE3M2IxNaEGRXNvbGFuYV9wcm9ncmFtOjpub25jZTo6c3RhdGU6OmN1cnJlbnQ6OlN0YXRlOjpzaXplOjpoYjA5MGY3M2NjZTcwOWJkOKIGMGNvcmU6Om9wczo6ZnVuY3Rpb246OkZuOjpjYWxsOjpoYzZhM2U2ODRhMjUyZjlkMaMGN2NvcmU6Om9wczo6ZnVuY3Rpb246OkZuTXV0OjpjYWxsX211dDo6aGU4OGNmYjBhZjBkMzY5OWGkBkhjb3JlOjpvcHM6OmZ1bmN0aW9uOjpGbk9uY2U6OmNhbGxfb25jZXt7dnRhYmxlLnNoaW19fTo6aDUwODRmNmY3ZTYwYjY0YWSlBjFqc19zeXM6OkFycmF5OjpuZXdfd2l0aF9sZW5ndGg6Omg5ZDM3YmJiZWE0ZjBlNDdhpgY2anNfc3lzOjpVaW50OEFycmF5OjpuZXdfd2l0aF9sZW5ndGg6Omg5MjAwOTk3NmQwYzQyNjY0pwY1d2FzbV9iaW5kZ2VuOjpfX3J0OjptYWxsb2NfZmFpbHVyZTo6aDliYWU5N2U1YjEzYzllY2aoBg1fX3JkbF9kZWFsbG9jqQY2ZGxtYWxsb2M6OmRsbWFsbG9jOjpUcmVlQ2h1bms6Om5leHQ6OmhlMTA0ZTFkZTI5NjM0NjMzqgY2ZGxtYWxsb2M6OmRsbWFsbG9jOjpUcmVlQ2h1bms6OnByZXY6Omg2Y2UxZTRlOTJjZmUwZTM3qwY+Y29yZTo6cGFuaWM6OnBhbmljX2luZm86OlBhbmljSW5mbzo6bWVzc2FnZTo6aDcyOTNlYTNlNzVhMTdiN2asBj9jb3JlOjpwYW5pYzo6cGFuaWNfaW5mbzo6UGFuaWNJbmZvOjpsb2NhdGlvbjo6aDQ3NDlhYTYzZDAzNDBmNTOtBkFjb3JlOjpwYW5pYzo6cGFuaWNfaW5mbzo6UGFuaWNJbmZvOjpjYW5fdW53aW5kOjpoYWJlZmVlOWMyOGYzZWE5ZK4GA2V4cK8GA2xvZ7AGMTxUIGFzIGNvcmU6OmFueTo6QW55Pjo6dHlwZV9pZDo6aDhiZThkNGFjMjM4NGZmN2axBkpjdXJ2ZTI1NTE5X2RhbGVrOjplZHdhcmRzOjpDb21wcmVzc2VkRWR3YXJkc1k6OmFzX2J5dGVzOjpoZTdhNGY2MDRmOWVjNjU5OLIGPWN1cnZlMjU1MTlfZGFsZWs6OnNjYWxhcjo6U2NhbGFyOjphc19ieXRlczo6aGNhZDYxMGRlMWVjMGYzMzazBi1zdGQ6OmVycm9yOjpFcnJvcjo6dHlwZV9pZDo6aDBlMzkxNjZiMzM0Y2Q1MDC0Bi9zdGQ6OmVycm9yOjpFcnJvcjo6YmFja3RyYWNlOjpoYjFiMTg2OTM2N2JlNjdmYbUGRTxqc19zeXM6OkFycmF5IGFzIGNvcmU6OmRlZmF1bHQ6OkRlZmF1bHQ+OjpkZWZhdWx0OjpoZWM3NTFkMGZhNmI0MWUyZrYGODxsb2c6Ok5vcExvZ2dlciBhcyBsb2c6OkxvZz46OmVuYWJsZWQ6OmhiYmNmYTdiNmI4OGUwZDRjtwYxPFQgYXMgY29yZTo6YW55OjpBbnk+Ojp0eXBlX2lkOjpoMjE3NzY4MmNiMzhkNjc4ZbgGJ3dhc21fYmluZGdlbjo6bWVtb3J5OjpoMDU2MDk0OWFmOGZmMzZiMbkGMTxUIGFzIGNvcmU6OmFueTo6QW55Pjo6dHlwZV9pZDo6aDZkYjE4ZDVjNWFmNjgyMDG6BjE8VCBhcyBjb3JlOjphbnk6OkFueT46OnR5cGVfaWQ6Omg3ZGFmYmFjNGVjOThmMjFhuwYmc3RkOjpwcm9jZXNzOjphYm9ydDo6aDc4NDdhMTMxMGJkZTUyNTO8BhJfX3J1c3Rfc3RhcnRfcGFuaWO9BjxkbG1hbGxvYzo6ZGxtYWxsb2M6OkNodW5rOjpmZW5jZXBvc3RfaGVhZDo6aDM0NDRhNzc0NTNkYWRlMzW+BjhkbG1hbGxvYzo6ZGxtYWxsb2M6OkNodW5rOjptZW1fb2Zmc2V0OjpoNmFkY2YyNmI5MWY2YTMwZL8GN2RsbWFsbG9jOjpkbG1hbGxvYzo6VHJlZUNodW5rOjpjaHVuazo6aDQ5Mzc5ZDdlMTc3OGI4ZGbABkg8ZGxtYWxsb2M6OnN5czo6U3lzdGVtIGFzIGRsbWFsbG9jOjpBbGxvY2F0b3I+OjpyZW1hcDo6aDY5MTFjNDkwZjc2NmJlNTHBBkw8ZGxtYWxsb2M6OnN5czo6U3lzdGVtIGFzIGRsbWFsbG9jOjpBbGxvY2F0b3I+OjpmcmVlX3BhcnQ6OmhlMjQyNDQ2OTA1ODg3NDQxwgZHPGRsbWFsbG9jOjpzeXM6OlN5c3RlbSBhcyBkbG1hbGxvYzo6QWxsb2NhdG9yPjo6ZnJlZTo6aDhhNWY4NjgwY2EzMzRhN2bDBlM8ZGxtYWxsb2M6OnN5czo6U3lzdGVtIGFzIGRsbWFsbG9jOjpBbGxvY2F0b3I+OjpjYW5fcmVsZWFzZV9wYXJ0OjpoNzA5ODM1NTc4ZTc5NGU5OcQGUjxkbG1hbGxvYzo6c3lzOjpTeXN0ZW0gYXMgZGxtYWxsb2M6OkFsbG9jYXRvcj46OmFsbG9jYXRlc196ZXJvczo6aDUxMzAyNWRhZWNjMjc4NTTFBkw8ZGxtYWxsb2M6OnN5czo6U3lzdGVtIGFzIGRsbWFsbG9jOjpBbGxvY2F0b3I+OjpwYWdlX3NpemU6OmgwNDdkNzc4MDMxNTc4NzdkxgYxPFQgYXMgY29yZTo6YW55OjpBbnk+Ojp0eXBlX2lkOjpoMTZkZTM5MGY5MjlkZmQ3NMcGLXN0ZDo6ZXJyb3I6OkVycm9yOjp0eXBlX2lkOjpoOWRkNDM5ZGFjMjY4NGE1NcgGL3N0ZDo6ZXJyb3I6OkVycm9yOjpiYWNrdHJhY2U6OmgxNmE5MGQ3ZTI0ZGUwNThhyQZOY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6Om51bTo6ZXJyb3I6OlRyeUZyb21JbnRFcnJvcj46Omg4NGMxMzFmZTRkODNiMzg5ygZcY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6cGFuaWNraW5nOjpiZWdpbl9wYW5pYzo6UGFuaWNQYXlsb2FkPCZzdHI+Pjo6aDg5ZjgzODc1M2E3ZmU4MDPLBosBY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPHN0ZDo6c3luYzo6b25jZTo6T25jZTo6Y2FsbF9vbmNlPGNvbnNvbGVfZXJyb3JfcGFuaWNfaG9vazo6c2V0X29uY2U6Ont7Y2xvc3VyZX19Pjo6e3tjbG9zdXJlfX0+OjpoYWE2OGJmMTUzMGM0Zjc3McwGTmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpudW06OmVycm9yOjpUcnlGcm9tSW50RXJyb3I+OjpoZDQyMDRjZTE0NmYyNmU2N80GPWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpmbXQ6OkVycm9yPjo6aDJkMTNkYzBlMjI5NmFhOWTOBj1jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6Zm10OjpFcnJvcj46OmgyZDEzZGMwZTIyOTZhYTlkzwZAY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGJzNTg6OmVuY29kZTo6RXJyb3I+OjpoNGY5NGM1MDIxNjk0MmY1ZNAGkgFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c3RkOjpzeW5jOjpvbmNlOjpPbmNlOjpjYWxsX29uY2U8c29sYW5hX3Byb2dyYW06Ondhc206OnNvbGFuYV9wcm9ncmFtX2luaXQ6Ont7Y2xvc3VyZX19Pjo6e3tjbG9zdXJlfX0+OjpoNmFhNTYyOTJkMjkwZDlmNtEGSmNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb25zb2xlX2xvZzo6V2ViQ29uc29sZUxvZ2dlcj46Omg1OTA2NDg4YWIyNGJkODk30gZFPGNvbnNvbGVfbG9nOjpXZWJDb25zb2xlTG9nZ2VyIGFzIGxvZzo6TG9nPjo6Zmx1c2g6OmhlZTY3MWJhZGU4ODI0NTg20wZHY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPCZtdXQgYWxsb2M6OnN0cmluZzo6U3RyaW5nPjo6aGQ4NGE2ZTY1OTJhN2UxYjbUBj1jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Y29yZTo6Zm10OjpFcnJvcj46OmgwMjY4Y2E0NmM2YmI4ZTNk1QZEY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGdldHJhbmRvbTo6ZXJyb3I6OkVycm9yPjo6aDA4ODAxNzc0YzJjNjc2MjDWBjBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8aTMyPjo6aGFmMzdlMmVjMjU4MmIzYjfXBkxjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8c3RkOjp0aHJlYWQ6OmxvY2FsOjpBY2Nlc3NFcnJvcj46OmgxMDZlYmE4NDVlOGE0N2Fj2AYzY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPCZ1c2l6ZT46Omg1NmI0MzBhZjAyYWJlMDZh2QYyY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPCYmc3RyPjo6aDFhYjk3MmEzMDE3MTgxYjHaBjQ8bG9nOjpOb3BMb2dnZXIgYXMgbG9nOjpMb2c+Ojpsb2c6OmgyNjI3Y2Q0OWI0MDBiYzBi2wY2PGxvZzo6Tm9wTG9nZ2VyIGFzIGxvZzo6TG9nPjo6Zmx1c2g6Omg2OTk5MTExMjNjYTY2ZWVh3AZXPGJpbmNvZGU6OmNvbmZpZzo6RGVmYXVsdE9wdGlvbnMgYXMgY29yZTo6ZGVmYXVsdDo6RGVmYXVsdD46OmRlZmF1bHQ6OmhhZTBjYWY1Zjc0MTYyZTBj3QYwY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPCZ1OD46Omg5M2I3NWI4MDJjZjJkNDVh3gYxY29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPCZ1MzI+OjpoMmZkZDJiM2RmYzM3ZjA2NN8GMWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTwmc3RyPjo6aDc3ZmYxOTc2ZWY3NzQ4NzLgBmljb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8Jm11dCBzdGQ6OmlvOjpXcml0ZTo6d3JpdGVfZm10OjpBZGFwdGVyPGFsbG9jOjp2ZWM6OlZlYzx1OD4+Pjo6aDk4NzdkZTE4OTY1MzRiOWHhBjBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8JnU4Pjo6aDBlZmQ5YzIzMTk3ZGJjNDTiBm9jb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8JmNvcmU6Oml0ZXI6OmFkYXB0ZXJzOjpjb3BpZWQ6OkNvcGllZDxjb3JlOjpzbGljZTo6aXRlcjo6SXRlcjx1OD4+Pjo6aGU2ZmI0OTkwNTVkZWExMmTjBjNjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8JnVzaXplPjo6aDQ2MWMzYmQyYzU5ODlmN2PkBlFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8ZWQyNTUxOV9kYWxlazo6ZXJyb3JzOjpJbnRlcm5hbEVycm9yPjo6aDJhZGQ0NDQzZjQ0NWMzZDnlBkJjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8JmNvcmU6OnRpbWU6OkR1cmF0aW9uPjo6aDNkMjBmYTU3NDk3MzkwZDnmBjBjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8dTY0Pjo6aGM1NDEyYTk2NjYyMmM5ZmHnBjFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8JnN0cj46OmgxNTVlMzQ1ODcxNmVjM2E36AY9Y29yZTo6cHRyOjpkcm9wX2luX3BsYWNlPGNvcmU6OmZtdDo6RXJyb3I+OjpoNTI3MTEwMzkxNjNmOTdjNOkGPWNvcmU6OnB0cjo6ZHJvcF9pbl9wbGFjZTxjb3JlOjpmbXQ6OkVycm9yPjo6aDUyNzExMDM5MTYzZjk3YzTqBjFjb3JlOjpwdHI6OmRyb3BfaW5fcGxhY2U8JnN0cj46OmgxNTVlMzQ1ODcxNmVjM2E3AO+AgIAACXByb2R1Y2VycwIIbGFuZ3VhZ2UBBFJ1c3QADHByb2Nlc3NlZC1ieQMFcnVzdGMdMS42Mi4wIChhODMxNGVmN2QgMjAyMi0wNi0yNykGd2FscnVzBjAuMTkuMAx3YXNtLWJpbmRnZW4GMC4yLjgz\";\nvar gfx_ssl_wasm_data_default = data;\n\n// src/wasm/gfx_ssl_wasm.js\nvar gfx_ssl_wasm_exports = {};\n__export(gfx_ssl_wasm_exports, {\n Hash: () => Hash,\n Instruction: () => Instruction,\n Instructions: () => Instructions,\n Keypair: () => Keypair,\n Message: () => Message,\n OracleRegistry: () => OracleRegistry,\n Pubkey: () => Pubkey,\n SwapResult: () => SwapResult,\n SystemInstruction: () => SystemInstruction,\n Transaction: () => Transaction,\n default: () => gfx_ssl_wasm_default,\n initSync: () => initSync,\n solana_program_init: () => solana_program_init,\n swap: () => swap\n});\nvar wasm;\nvar cachedTextDecoder = new TextDecoder(\"utf-8\", { ignoreBOM: true, fatal: true });\ncachedTextDecoder.decode();\nvar cachedUint8Memory0 = new Uint8Array();\nfunction getUint8Memory0() {\n if (cachedUint8Memory0.byteLength === 0) {\n cachedUint8Memory0 = new Uint8Array(wasm.memory.buffer);\n }\n return cachedUint8Memory0;\n}\nfunction getStringFromWasm0(ptr, len) {\n return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));\n}\nvar heap = new Array(32).fill(void 0);\nheap.push(void 0, null, true, false);\nvar heap_next = heap.length;\nfunction addHeapObject(obj) {\n if (heap_next === heap.length)\n heap.push(heap.length + 1);\n const idx = heap_next;\n heap_next = heap[idx];\n heap[idx] = obj;\n return idx;\n}\nfunction getObject(idx) {\n return heap[idx];\n}\nfunction dropObject(idx) {\n if (idx < 36)\n return;\n heap[idx] = heap_next;\n heap_next = idx;\n}\nfunction takeObject(idx) {\n const ret = getObject(idx);\n dropObject(idx);\n return ret;\n}\nvar WASM_VECTOR_LEN = 0;\nvar cachedTextEncoder = new TextEncoder(\"utf-8\");\nvar encodeString = typeof cachedTextEncoder.encodeInto === \"function\" ? function(arg, view) {\n return cachedTextEncoder.encodeInto(arg, view);\n} : function(arg, view) {\n const buf = cachedTextEncoder.encode(arg);\n view.set(buf);\n return {\n read: arg.length,\n written: buf.length\n };\n};\nfunction passStringToWasm0(arg, malloc, realloc) {\n if (realloc === void 0) {\n const buf = cachedTextEncoder.encode(arg);\n const ptr2 = malloc(buf.length);\n getUint8Memory0().subarray(ptr2, ptr2 + buf.length).set(buf);\n WASM_VECTOR_LEN = buf.length;\n return ptr2;\n }\n let len = arg.length;\n let ptr = malloc(len);\n const mem = getUint8Memory0();\n let offset = 0;\n for (; offset < len; offset++) {\n const code = arg.charCodeAt(offset);\n if (code > 127)\n break;\n mem[ptr + offset] = code;\n }\n if (offset !== len) {\n if (offset !== 0) {\n arg = arg.slice(offset);\n }\n ptr = realloc(ptr, len, len = offset + arg.length * 3);\n const view = getUint8Memory0().subarray(ptr + offset, ptr + len);\n const ret = encodeString(arg, view);\n offset += ret.written;\n }\n WASM_VECTOR_LEN = offset;\n return ptr;\n}\nfunction isLikeNone(x) {\n return x === void 0 || x === null;\n}\nvar cachedInt32Memory0 = new Int32Array();\nfunction getInt32Memory0() {\n if (cachedInt32Memory0.byteLength === 0) {\n cachedInt32Memory0 = new Int32Array(wasm.memory.buffer);\n }\n return cachedInt32Memory0;\n}\nvar cachedFloat64Memory0 = new Float64Array();\nfunction getFloat64Memory0() {\n if (cachedFloat64Memory0.byteLength === 0) {\n cachedFloat64Memory0 = new Float64Array(wasm.memory.buffer);\n }\n return cachedFloat64Memory0;\n}\nfunction debugString(val) {\n const type = typeof val;\n if (type == \"number\" || type == \"boolean\" || val == null) {\n return `${val}`;\n }\n if (type == \"string\") {\n return `\"${val}\"`;\n }\n if (type == \"symbol\") {\n const description = val.description;\n if (description == null) {\n return \"Symbol\";\n } else {\n return `Symbol(${description})`;\n }\n }\n if (type == \"function\") {\n const name3 = val.name;\n if (typeof name3 == \"string\" && name3.length > 0) {\n return `Function(${name3})`;\n } else {\n return \"Function\";\n }\n }\n if (Array.isArray(val)) {\n const length = val.length;\n let debug = \"[\";\n if (length > 0) {\n debug += debugString(val[0]);\n }\n for (let i = 1; i < length; i++) {\n debug += \", \" + debugString(val[i]);\n }\n debug += \"]\";\n return debug;\n }\n const builtInMatches = /\\[object ([^\\]]+)\\]/.exec(toString.call(val));\n let className;\n if (builtInMatches.length > 1) {\n className = builtInMatches[1];\n } else {\n return toString.call(val);\n }\n if (className == \"Object\") {\n try {\n return \"Object(\" + JSON.stringify(val) + \")\";\n } catch (_) {\n return \"Object\";\n }\n }\n if (val instanceof Error) {\n return `${val.name}: ${val.message}\n${val.stack}`;\n }\n return className;\n}\nfunction passArray8ToWasm0(arg, malloc) {\n const ptr = malloc(arg.length * 1);\n getUint8Memory0().set(arg, ptr / 1);\n WASM_VECTOR_LEN = arg.length;\n return ptr;\n}\nfunction _assertClass(instance, klass) {\n if (!(instance instanceof klass)) {\n throw new Error(`expected instance of ${klass.name}`);\n }\n return instance.ptr;\n}\nfunction swap(ssl_in, ssl_out, pair, liability_in, liability_out, swapped_liability_in, swapped_liability_out, oracles, amount_in) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(ssl_in, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray8ToWasm0(ssl_out, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n const ptr2 = passArray8ToWasm0(pair, wasm.__wbindgen_malloc);\n const len2 = WASM_VECTOR_LEN;\n _assertClass(oracles, OracleRegistry);\n wasm.swap(retptr, ptr0, len0, ptr1, len1, ptr2, len2, liability_in, liability_out, swapped_liability_in, swapped_liability_out, oracles.ptr, amount_in);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return SwapResult.__wrap(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n}\nfunction getArrayU8FromWasm0(ptr, len) {\n return getUint8Memory0().subarray(ptr / 1, ptr / 1 + len);\n}\nvar cachedUint32Memory0 = new Uint32Array();\nfunction getUint32Memory0() {\n if (cachedUint32Memory0.byteLength === 0) {\n cachedUint32Memory0 = new Uint32Array(wasm.memory.buffer);\n }\n return cachedUint32Memory0;\n}\nfunction passArrayJsValueToWasm0(array, malloc) {\n const ptr = malloc(array.length * 4);\n const mem = getUint32Memory0();\n for (let i = 0; i < array.length; i++) {\n mem[ptr / 4 + i] = addHeapObject(array[i]);\n }\n WASM_VECTOR_LEN = array.length;\n return ptr;\n}\nfunction solana_program_init() {\n wasm.solana_program_init();\n}\nfunction handleError(f, args) {\n try {\n return f.apply(this, args);\n } catch (e) {\n wasm.__wbindgen_exn_store(addHeapObject(e));\n }\n}\nvar Hash = class {\n static __wrap(ptr) {\n const obj = Object.create(Hash.prototype);\n obj.ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_hash_free(ptr);\n }\n constructor(value) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hash_constructor(retptr, addHeapObject(value));\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return Hash.__wrap(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n toString() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hash_toString(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n }\n equals(other) {\n _assertClass(other, Hash);\n const ret = wasm.hash_equals(this.ptr, other.ptr);\n return ret !== 0;\n }\n toBytes() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.hash_toBytes(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n};\nvar Instruction = class {\n static __wrap(ptr) {\n const obj = Object.create(Instruction.prototype);\n obj.ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_instruction_free(ptr);\n }\n};\nvar Instructions = class {\n static __wrap(ptr) {\n const obj = Object.create(Instructions.prototype);\n obj.ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_instructions_free(ptr);\n }\n constructor() {\n const ret = wasm.instructions_constructor();\n return Instructions.__wrap(ret);\n }\n push(instruction) {\n _assertClass(instruction, Instruction);\n var ptr0 = instruction.ptr;\n instruction.ptr = 0;\n wasm.instructions_push(this.ptr, ptr0);\n }\n};\nvar Keypair = class {\n static __wrap(ptr) {\n const obj = Object.create(Keypair.prototype);\n obj.ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_keypair_free(ptr);\n }\n constructor() {\n const ret = wasm.keypair_constructor();\n return Keypair.__wrap(ret);\n }\n toBytes() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.keypair_toBytes(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n static fromBytes(bytes) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.keypair_fromBytes(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return Keypair.__wrap(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n pubkey() {\n const ret = wasm.keypair_pubkey(this.ptr);\n return Pubkey.__wrap(ret);\n }\n};\nvar Message = class {\n static __wrap(ptr) {\n const obj = Object.create(Message.prototype);\n obj.ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_message_free(ptr);\n }\n get recent_blockhash() {\n const ret = wasm.__wbg_get_message_recent_blockhash(this.ptr);\n return Hash.__wrap(ret);\n }\n set recent_blockhash(arg0) {\n _assertClass(arg0, Hash);\n var ptr0 = arg0.ptr;\n arg0.ptr = 0;\n wasm.__wbg_set_message_recent_blockhash(this.ptr, ptr0);\n }\n};\nvar OracleRegistry = class {\n static __wrap(ptr) {\n const obj = Object.create(OracleRegistry.prototype);\n obj.ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_oracleregistry_free(ptr);\n }\n constructor() {\n const ret = wasm.oracleregistry_new();\n return OracleRegistry.__wrap(ret);\n }\n add_oracle(key, data2) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(key, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n const ptr1 = passArray8ToWasm0(data2, wasm.__wbindgen_malloc);\n const len1 = WASM_VECTOR_LEN;\n wasm.oracleregistry_add_oracle(retptr, this.ptr, ptr0, len0, ptr1, len1);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n};\nvar Pubkey = class {\n static __wrap(ptr) {\n const obj = Object.create(Pubkey.prototype);\n obj.ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_pubkey_free(ptr);\n }\n constructor(value) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.pubkey_constructor(retptr, addHeapObject(value));\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return Pubkey.__wrap(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n toString() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.pubkey_toString(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n return getStringFromWasm0(r0, r1);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n wasm.__wbindgen_free(r0, r1);\n }\n }\n isOnCurve() {\n const ret = wasm.pubkey_isOnCurve(this.ptr);\n return ret !== 0;\n }\n equals(other) {\n _assertClass(other, Pubkey);\n const ret = wasm.pubkey_equals(this.ptr, other.ptr);\n return ret !== 0;\n }\n toBytes() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.pubkey_toBytes(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n static createWithSeed(base, seed, owner) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n _assertClass(base, Pubkey);\n const ptr0 = passStringToWasm0(seed, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(owner, Pubkey);\n wasm.pubkey_createWithSeed(retptr, base.ptr, ptr0, len0, owner.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return Pubkey.__wrap(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n static createProgramAddress(seeds, program_id) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(seeds, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(program_id, Pubkey);\n wasm.pubkey_createProgramAddress(retptr, ptr0, len0, program_id.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return Pubkey.__wrap(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n static findProgramAddress(seeds, program_id) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArrayJsValueToWasm0(seeds, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(program_id, Pubkey);\n wasm.pubkey_findProgramAddress(retptr, ptr0, len0, program_id.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return takeObject(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n};\nvar SwapResult = class {\n static __wrap(ptr) {\n const obj = Object.create(SwapResult.prototype);\n obj.ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_swapresult_free(ptr);\n }\n get amount_in() {\n const ret = wasm.__wbg_get_swapresult_amount_in(this.ptr);\n return BigInt.asUintN(64, ret);\n }\n set amount_in(arg0) {\n wasm.__wbg_set_swapresult_amount_in(this.ptr, arg0);\n }\n get fee_paid() {\n const ret = wasm.__wbg_get_swapresult_fee_paid(this.ptr);\n return BigInt.asUintN(64, ret);\n }\n set fee_paid(arg0) {\n wasm.__wbg_set_swapresult_fee_paid(this.ptr, arg0);\n }\n get amount_out() {\n const ret = wasm.__wbg_get_swapresult_amount_out(this.ptr);\n return BigInt.asUintN(64, ret);\n }\n set amount_out(arg0) {\n wasm.__wbg_set_swapresult_amount_out(this.ptr, arg0);\n }\n get price_impact() {\n const ret = wasm.__wbg_get_swapresult_price_impact(this.ptr);\n return ret;\n }\n set price_impact(arg0) {\n wasm.__wbg_set_swapresult_price_impact(this.ptr, arg0);\n }\n get swap_price() {\n const ret = wasm.__wbg_get_swapresult_swap_price(this.ptr);\n return ret;\n }\n set swap_price(arg0) {\n wasm.__wbg_set_swapresult_swap_price(this.ptr, arg0);\n }\n get insta_price() {\n const ret = wasm.__wbg_get_swapresult_insta_price(this.ptr);\n return ret;\n }\n set insta_price(arg0) {\n wasm.__wbg_set_swapresult_insta_price(this.ptr, arg0);\n }\n get oracle_price() {\n const ret = wasm.__wbg_get_swapresult_oracle_price(this.ptr);\n return ret;\n }\n set oracle_price(arg0) {\n wasm.__wbg_set_swapresult_oracle_price(this.ptr, arg0);\n }\n get iter() {\n const ret = wasm.__wbg_get_swapresult_iter(this.ptr);\n return ret >>> 0;\n }\n set iter(arg0) {\n wasm.__wbg_set_swapresult_iter(this.ptr, arg0);\n }\n};\nvar SystemInstruction = class {\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_systeminstruction_free(ptr);\n }\n static createAccount(from_pubkey, to_pubkey, lamports, space, owner) {\n _assertClass(from_pubkey, Pubkey);\n _assertClass(to_pubkey, Pubkey);\n _assertClass(owner, Pubkey);\n const ret = wasm.systeminstruction_createAccount(from_pubkey.ptr, to_pubkey.ptr, lamports, space, owner.ptr);\n return Instruction.__wrap(ret);\n }\n static createAccountWithSeed(from_pubkey, to_pubkey, base, seed, lamports, space, owner) {\n _assertClass(from_pubkey, Pubkey);\n _assertClass(to_pubkey, Pubkey);\n _assertClass(base, Pubkey);\n const ptr0 = passStringToWasm0(seed, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(owner, Pubkey);\n const ret = wasm.systeminstruction_createAccountWithSeed(from_pubkey.ptr, to_pubkey.ptr, base.ptr, ptr0, len0, lamports, space, owner.ptr);\n return Instruction.__wrap(ret);\n }\n static assign(pubkey, owner) {\n _assertClass(pubkey, Pubkey);\n _assertClass(owner, Pubkey);\n const ret = wasm.systeminstruction_assign(pubkey.ptr, owner.ptr);\n return Instruction.__wrap(ret);\n }\n static assignWithSeed(pubkey, base, seed, owner) {\n _assertClass(pubkey, Pubkey);\n _assertClass(base, Pubkey);\n const ptr0 = passStringToWasm0(seed, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(owner, Pubkey);\n const ret = wasm.systeminstruction_assignWithSeed(pubkey.ptr, base.ptr, ptr0, len0, owner.ptr);\n return Instruction.__wrap(ret);\n }\n static transfer(from_pubkey, to_pubkey, lamports) {\n _assertClass(from_pubkey, Pubkey);\n _assertClass(to_pubkey, Pubkey);\n const ret = wasm.systeminstruction_transfer(from_pubkey.ptr, to_pubkey.ptr, lamports);\n return Instruction.__wrap(ret);\n }\n static transferWithSeed(from_pubkey, from_base, from_seed, from_owner, to_pubkey, lamports) {\n _assertClass(from_pubkey, Pubkey);\n _assertClass(from_base, Pubkey);\n const ptr0 = passStringToWasm0(from_seed, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(from_owner, Pubkey);\n _assertClass(to_pubkey, Pubkey);\n const ret = wasm.systeminstruction_transferWithSeed(from_pubkey.ptr, from_base.ptr, ptr0, len0, from_owner.ptr, to_pubkey.ptr, lamports);\n return Instruction.__wrap(ret);\n }\n static allocate(pubkey, space) {\n _assertClass(pubkey, Pubkey);\n const ret = wasm.systeminstruction_allocate(pubkey.ptr, space);\n return Instruction.__wrap(ret);\n }\n static allocateWithSeed(address, base, seed, space, owner) {\n _assertClass(address, Pubkey);\n _assertClass(base, Pubkey);\n const ptr0 = passStringToWasm0(seed, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n _assertClass(owner, Pubkey);\n const ret = wasm.systeminstruction_allocateWithSeed(address.ptr, base.ptr, ptr0, len0, space, owner.ptr);\n return Instruction.__wrap(ret);\n }\n static createNonceAccount(from_pubkey, nonce_pubkey, authority, lamports) {\n _assertClass(from_pubkey, Pubkey);\n _assertClass(nonce_pubkey, Pubkey);\n _assertClass(authority, Pubkey);\n const ret = wasm.systeminstruction_createNonceAccount(from_pubkey.ptr, nonce_pubkey.ptr, authority.ptr, lamports);\n return takeObject(ret);\n }\n static advanceNonceAccount(nonce_pubkey, authorized_pubkey) {\n _assertClass(nonce_pubkey, Pubkey);\n _assertClass(authorized_pubkey, Pubkey);\n const ret = wasm.systeminstruction_advanceNonceAccount(nonce_pubkey.ptr, authorized_pubkey.ptr);\n return Instruction.__wrap(ret);\n }\n static withdrawNonceAccount(nonce_pubkey, authorized_pubkey, to_pubkey, lamports) {\n _assertClass(nonce_pubkey, Pubkey);\n _assertClass(authorized_pubkey, Pubkey);\n _assertClass(to_pubkey, Pubkey);\n const ret = wasm.systeminstruction_withdrawNonceAccount(nonce_pubkey.ptr, authorized_pubkey.ptr, to_pubkey.ptr, lamports);\n return Instruction.__wrap(ret);\n }\n static authorizeNonceAccount(nonce_pubkey, authorized_pubkey, new_authority) {\n _assertClass(nonce_pubkey, Pubkey);\n _assertClass(authorized_pubkey, Pubkey);\n _assertClass(new_authority, Pubkey);\n const ret = wasm.systeminstruction_authorizeNonceAccount(nonce_pubkey.ptr, authorized_pubkey.ptr, new_authority.ptr);\n return Instruction.__wrap(ret);\n }\n};\nvar Transaction = class {\n static __wrap(ptr) {\n const obj = Object.create(Transaction.prototype);\n obj.ptr = ptr;\n return obj;\n }\n __destroy_into_raw() {\n const ptr = this.ptr;\n this.ptr = 0;\n return ptr;\n }\n free() {\n const ptr = this.__destroy_into_raw();\n wasm.__wbg_transaction_free(ptr);\n }\n constructor(instructions3, payer) {\n _assertClass(instructions3, Instructions);\n var ptr0 = instructions3.ptr;\n instructions3.ptr = 0;\n let ptr1 = 0;\n if (!isLikeNone(payer)) {\n _assertClass(payer, Pubkey);\n ptr1 = payer.ptr;\n payer.ptr = 0;\n }\n const ret = wasm.transaction_constructor(ptr0, ptr1);\n return Transaction.__wrap(ret);\n }\n message() {\n const ret = wasm.transaction_message(this.ptr);\n return Message.__wrap(ret);\n }\n messageData() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.transaction_messageData(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n verify() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.transaction_verify(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n if (r1) {\n throw takeObject(r0);\n }\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n partialSign(keypair, recent_blockhash) {\n _assertClass(keypair, Keypair);\n _assertClass(recent_blockhash, Hash);\n wasm.transaction_partialSign(this.ptr, keypair.ptr, recent_blockhash.ptr);\n }\n isSigned() {\n const ret = wasm.transaction_isSigned(this.ptr);\n return ret !== 0;\n }\n toBytes() {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n wasm.transaction_toBytes(retptr, this.ptr);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var v0 = getArrayU8FromWasm0(r0, r1).slice();\n wasm.__wbindgen_free(r0, r1 * 1);\n return v0;\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n static fromBytes(bytes) {\n try {\n const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);\n const ptr0 = passArray8ToWasm0(bytes, wasm.__wbindgen_malloc);\n const len0 = WASM_VECTOR_LEN;\n wasm.transaction_fromBytes(retptr, ptr0, len0);\n var r0 = getInt32Memory0()[retptr / 4 + 0];\n var r1 = getInt32Memory0()[retptr / 4 + 1];\n var r2 = getInt32Memory0()[retptr / 4 + 2];\n if (r2) {\n throw takeObject(r1);\n }\n return Transaction.__wrap(r0);\n } finally {\n wasm.__wbindgen_add_to_stack_pointer(16);\n }\n }\n};\nasync function load(module2, imports) {\n if (typeof Response === \"function\" && module2 instanceof Response) {\n if (typeof WebAssembly.instantiateStreaming === \"function\") {\n try {\n return await WebAssembly.instantiateStreaming(module2, imports);\n } catch (e) {\n if (module2.headers.get(\"Content-Type\") != \"application/wasm\") {\n console.warn(\"`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\\n\", e);\n } else {\n throw e;\n }\n }\n }\n const bytes = await module2.arrayBuffer();\n return await WebAssembly.instantiate(bytes, imports);\n } else {\n const instance = await WebAssembly.instantiate(module2, imports);\n if (instance instanceof WebAssembly.Instance) {\n return { instance, module: module2 };\n } else {\n return instance;\n }\n }\n}\nfunction getImports() {\n const imports = {};\n imports.wbg = {};\n imports.wbg.__wbindgen_string_new = function(arg0, arg1) {\n const ret = getStringFromWasm0(arg0, arg1);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_instruction_new = function(arg0) {\n const ret = Instruction.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_number_new = function(arg0) {\n const ret = arg0;\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_object_drop_ref = function(arg0) {\n takeObject(arg0);\n };\n imports.wbg.__wbindgen_string_get = function(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof obj === \"string\" ? obj : void 0;\n var ptr0 = isLikeNone(ret) ? 0 : passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n var len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbindgen_is_undefined = function(arg0) {\n const ret = getObject(arg0) === void 0;\n return ret;\n };\n imports.wbg.__wbindgen_number_get = function(arg0, arg1) {\n const obj = getObject(arg1);\n const ret = typeof obj === \"number\" ? obj : void 0;\n getFloat64Memory0()[arg0 / 8 + 1] = isLikeNone(ret) ? 0 : ret;\n getInt32Memory0()[arg0 / 4 + 0] = !isLikeNone(ret);\n };\n imports.wbg.__wbg_pubkey_new = function(arg0) {\n const ret = Pubkey.__wrap(arg0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_debug_73395ca5669120ae = function(arg0) {\n console.debug(getObject(arg0));\n };\n imports.wbg.__wbg_error_1189b5de6dd1b808 = function(arg0) {\n console.error(getObject(arg0));\n };\n imports.wbg.__wbg_info_3f1d8636ba58128f = function(arg0) {\n console.info(getObject(arg0));\n };\n imports.wbg.__wbg_log_18ffdfe5a41bd781 = function(arg0) {\n console.log(getObject(arg0));\n };\n imports.wbg.__wbg_warn_dffa74cab78d3531 = function(arg0) {\n console.warn(getObject(arg0));\n };\n imports.wbg.__wbg_new_abda76e883ba8a5f = function() {\n const ret = new Error();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_stack_658279fe44541cf6 = function(arg0, arg1) {\n const ret = getObject(arg1).stack;\n const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbg_error_f851667af71bcfc6 = function(arg0, arg1) {\n try {\n console.error(getStringFromWasm0(arg0, arg1));\n } finally {\n wasm.__wbindgen_free(arg0, arg1);\n }\n };\n imports.wbg.__wbg_self_7eede1f4488bf346 = function() {\n return handleError(function() {\n const ret = self.self;\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_crypto_c909fb428dcbddb6 = function(arg0) {\n const ret = getObject(arg0).crypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_msCrypto_511eefefbfc70ae4 = function(arg0) {\n const ret = getObject(arg0).msCrypto;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_static_accessor_MODULE_ef3aa2eb251158a5 = function() {\n const ret = module;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_require_900d5c3984fe7703 = function(arg0, arg1, arg2) {\n const ret = getObject(arg0).require(getStringFromWasm0(arg1, arg2));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getRandomValues_307049345d0bd88c = function(arg0) {\n const ret = getObject(arg0).getRandomValues;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_getRandomValues_cd175915511f705e = function(arg0, arg1) {\n getObject(arg0).getRandomValues(getObject(arg1));\n };\n imports.wbg.__wbg_randomFillSync_85b3f4c52c56c313 = function(arg0, arg1, arg2) {\n getObject(arg0).randomFillSync(getArrayU8FromWasm0(arg1, arg2));\n };\n imports.wbg.__wbg_new_b33e1ce63900068f = function() {\n const ret = new Array();\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_is_function = function(arg0) {\n const ret = typeof getObject(arg0) === \"function\";\n return ret;\n };\n imports.wbg.__wbindgen_is_object = function(arg0) {\n const val = getObject(arg0);\n const ret = typeof val === \"object\" && val !== null;\n return ret;\n };\n imports.wbg.__wbg_next_0b95852db3a0f568 = function(arg0) {\n const ret = getObject(arg0).next;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_next_32ce4603e19a9ad8 = function() {\n return handleError(function(arg0) {\n const ret = getObject(arg0).next();\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_done_b2b23adcafd6d372 = function(arg0) {\n const ret = getObject(arg0).done;\n return ret;\n };\n imports.wbg.__wbg_value_9bc3271f2556a621 = function(arg0) {\n const ret = getObject(arg0).value;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_iterator_7e0ac697faa872f3 = function() {\n const ret = Symbol.iterator;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_get_02999bb2caeeff61 = function() {\n return handleError(function(arg0, arg1) {\n const ret = Reflect.get(getObject(arg0), getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_call_875d4ea9abbec88f = function() {\n return handleError(function(arg0, arg1) {\n const ret = getObject(arg0).call(getObject(arg1));\n return addHeapObject(ret);\n }, arguments);\n };\n imports.wbg.__wbg_newwithlength_8ff69118ab23319b = function(arg0) {\n const ret = new Array(arg0 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_set_5eacdf54c9aafbdf = function(arg0, arg1, arg2) {\n getObject(arg0)[arg1 >>> 0] = takeObject(arg2);\n };\n imports.wbg.__wbg_isArray_cf6829b1f25ba0f1 = function(arg0) {\n const ret = Array.isArray(getObject(arg0));\n return ret;\n };\n imports.wbg.__wbg_push_09ebcbbd6fb27ae1 = function(arg0, arg1) {\n const ret = getObject(arg0).push(getObject(arg1));\n return ret;\n };\n imports.wbg.__wbg_values_a267575fa7b99075 = function(arg0) {\n const ret = getObject(arg0).values();\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_buffer_8dabc3a4cca7e065 = function(arg0) {\n const ret = getObject(arg0).buffer;\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_new_81bdddbe23a4c990 = function(arg0) {\n const ret = new Uint8Array(getObject(arg0));\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_set_5778b152a7ec258c = function(arg0, arg1, arg2) {\n getObject(arg0).set(getObject(arg1), arg2 >>> 0);\n };\n imports.wbg.__wbg_length_61f1949aa7f6fd39 = function(arg0) {\n const ret = getObject(arg0).length;\n return ret;\n };\n imports.wbg.__wbg_instanceof_Uint8Array_8a8537f46e056474 = function(arg0) {\n let result;\n try {\n result = getObject(arg0) instanceof Uint8Array;\n } catch {\n result = false;\n }\n const ret = result;\n return ret;\n };\n imports.wbg.__wbg_newwithlength_6b2b32ef5bfc9a55 = function(arg0) {\n const ret = new Uint8Array(arg0 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbg_subarray_247092e59b56339a = function(arg0, arg1, arg2) {\n const ret = getObject(arg0).subarray(arg1 >>> 0, arg2 >>> 0);\n return addHeapObject(ret);\n };\n imports.wbg.__wbindgen_debug_string = function(arg0, arg1) {\n const ret = debugString(getObject(arg1));\n const ptr0 = passStringToWasm0(ret, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);\n const len0 = WASM_VECTOR_LEN;\n getInt32Memory0()[arg0 / 4 + 1] = len0;\n getInt32Memory0()[arg0 / 4 + 0] = ptr0;\n };\n imports.wbg.__wbindgen_throw = function(arg0, arg1) {\n throw new Error(getStringFromWasm0(arg0, arg1));\n };\n imports.wbg.__wbindgen_memory = function() {\n const ret = wasm.memory;\n return addHeapObject(ret);\n };\n return imports;\n}\nfunction initMemory(imports, maybe_memory) {\n}\nfunction finalizeInit(instance, module2) {\n wasm = instance.exports;\n init.__wbindgen_wasm_module = module2;\n cachedFloat64Memory0 = new Float64Array();\n cachedInt32Memory0 = new Int32Array();\n cachedUint32Memory0 = new Uint32Array();\n cachedUint8Memory0 = new Uint8Array();\n return wasm;\n}\nfunction initSync(module2) {\n const imports = getImports();\n initMemory(imports);\n if (!(module2 instanceof WebAssembly.Module)) {\n module2 = new WebAssembly.Module(module2);\n }\n const instance = new WebAssembly.Instance(module2, imports);\n return finalizeInit(instance, module2);\n}\nasync function init(input) {\n const imports = getImports();\n if (typeof input === \"string\" || typeof Request === \"function\" && input instanceof Request || typeof URL === \"function\" && input instanceof URL) {\n input = fetch(input);\n }\n initMemory(imports);\n const { instance, module: module2 } = await load(await input, imports);\n return finalizeInit(instance, module2);\n}\nvar gfx_ssl_wasm_default = init;\n\n// src/public/swap.ts\nimport { getAccount as getAccount2 } from \"@solana/spl-token\";\n\n// src/public/ssl.ts\nimport { BN } from \"@project-serum/anchor\";\nimport { getAccount, TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID2 } from \"@solana/spl-token\";\nimport { PublicKey as PublicKey3 } from \"@solana/web3.js\";\nvar SSL = class {\n static async loadByMint(connection, controller, mint, programId = ADDRESSES[\"MAINNET\"].SSL_PROGRAM_ID) {\n return await SSL.loadByAddress(connection, SSL.findAddress(controller, mint, programId));\n }\n static async loadByAddress(connection, address, programId = ADDRESSES[\"MAINNET\"].SSL_PROGRAM_ID) {\n let ai = await connection.getAccountInfo(address);\n if (ai === void 0) {\n return void 0;\n }\n let ssl = new SSL(ai, programId);\n return ssl;\n }\n static async liabilityVault(connection, controller, mint, otherMint, programId = ADDRESSES[\"MAINNET\"].SSL_PROGRAM_ID) {\n if (otherMint === void 0) {\n otherMint = mint;\n }\n let address = findAssociatedTokenAddress(SSL.findAddress(controller, mint, programId), otherMint);\n let account = await getAccount(connection, address);\n return account;\n }\n static findAddress(controller, mint, programId = ADDRESSES[\"MAINNET\"].SSL_PROGRAM_ID) {\n return PublicKey3.findProgramAddressSync(\n [\n Buffer.from(\"GFX-SSL\", \"utf-8\"),\n controller.toBuffer(),\n mint.toBuffer()\n ],\n programId\n )[0];\n }\n constructor(ai, programId = ADDRESSES[\"MAINNET\"].SSL_PROGRAM_ID) {\n this.inner = SSL_LAYOUT.decode(ai.data);\n this.address = SSL.findAddress(this.controller, this.mint, programId);\n }\n isSuspended() {\n return this.inner.suspended;\n }\n async deposit(program, controller, wallet, amount, programId = ADDRESSES[\"MAINNET\"].SSL_PROGRAM_ID) {\n const inst = program.instruction;\n const accounts3 = {\n controller,\n ssl: this.address,\n liquidityAccount: SSL.getLiquidityAccountAddress(controller, this.mint, wallet, programId),\n rtVault: findAssociatedTokenAddress(this.address, this.mint),\n userRtAta: findAssociatedTokenAddress(wallet, this.mint),\n userWallet: wallet,\n tokenProgram: TOKEN_PROGRAM_ID2\n };\n return await inst.deposit(\n new BN(amount.toString()),\n { accounts: accounts3 }\n );\n }\n static getLiquidityAccountAddress(controller, mint, wallet, programId) {\n return PublicKey3.findProgramAddressSync(\n [\n Buffer.from(\"GFX-LIQUIDITYACCOUNT\", \"utf-8\"),\n controller.toBuffer(),\n mint.toBuffer(),\n wallet.toBuffer()\n ],\n programId\n )[0];\n }\n get controller() {\n return this.inner.controller;\n }\n get mint() {\n return this.inner.mint;\n }\n get decimals() {\n return this.inner.decimals;\n }\n poolTokenMint(programId = ADDRESSES[\"MAINNET\"].SSL_PROGRAM_ID) {\n return PublicKey3.findProgramAddressSync(\n [\n Buffer.from(\"GFX-SSL-PTMINT\", \"utf-8\"),\n this.controller.toBuffer(),\n this.mint.toBuffer()\n ],\n programId\n )[0];\n }\n get suspended() {\n return this.inner.suspended;\n }\n get weight() {\n return this.inner.weight;\n }\n get swappedLiabilityNative() {\n return this.inner.swappedLiabilityNative;\n }\n get totalShare() {\n return this.inner.totalShare;\n }\n};\n\n// src/public/swap.ts\nimport { parsePriceData } from \"@pythnetwork/client\";\nvar wasmInited = false;\nvar SyncSwap = class {\n constructor(controller = ADDRESSES[\"MAINNET\"].GFX_CONTROLLER, programId = ADDRESSES[\"MAINNET\"].SSL_PROGRAM_ID) {\n this.controller = controller;\n this.programId = programId;\n this.getPairAddress = (tokenA, tokenB) => {\n const addresses = [tokenA.toBuffer(), tokenB.toBuffer()].sort(\n Buffer2.compare\n );\n const pairArr = PublicKey4.findProgramAddressSync(\n [\n Buffer2.from(\"GFX-SSL-Pair\", \"utf-8\"),\n this.controller.toBuffer(),\n addresses[0],\n addresses[1]\n ],\n this.programId\n );\n return pairArr[0];\n };\n }\n getSyncQuoter(tokenIn, tokenOut) {\n const quoter = new SyncQuoter(\n this.programId,\n this.controller,\n tokenIn,\n tokenOut\n );\n return quoter;\n }\n};\nvar Swap = class extends SyncSwap {\n constructor(connection, controller = ADDRESSES[\"MAINNET\"].GFX_CONTROLLER, programId = ADDRESSES[\"MAINNET\"].SSL_PROGRAM_ID) {\n super(controller, programId);\n this.connection = connection;\n this.createAssociatedTokenAccountIx = (mint, associatedAccount, owner) => createAssociatedTokenAccountInstruction(\n owner,\n associatedAccount,\n owner,\n mint\n );\n this.getQuoter = async (tokenIn, tokenOut) => {\n let wasm2 = await this.getWasm();\n return new Quoter(\n this.connection,\n this.programId,\n this.controller,\n tokenIn,\n tokenOut,\n wasm2\n );\n };\n this.getQuote = async (tokenIn, tokenOut, inTokenAmount) => {\n const quoter = await this.getQuoter(tokenIn, tokenOut);\n await quoter.prepare();\n return quoter.quote(inTokenAmount);\n };\n this.getMinimumQuote = async (tokenA, tokenB, inTokenAmount, slippage) => {\n const result = await this.getQuote(tokenA, tokenB, inTokenAmount);\n const minAmountOut = result.out * (10000n - BigInt(slippage * 1e4)) / 10000n;\n return minAmountOut;\n };\n this.createSwapIx = async (tokenA, tokenB, inTokenAmount, minOut, wallet, referrerTokenAccount) => {\n let ixs = [];\n const addedComputeBudgetIX = ComputeBudgetProgram.requestUnits({\n units: 1e6,\n additionalFee: 0\n });\n ixs.push(addedComputeBudgetIX);\n const program = new Program2(\n gfx_ssl_idl_exports,\n this.programId.toBase58(),\n new Provider(this.connection, wallet, {\n commitment: \"processed\"\n })\n );\n const inst = program.instruction;\n const pair = this.getPairAddress(tokenA, tokenB);\n const [inTokenAtaUser, outTokenAtaUser] = [\n findAssociatedTokenAddress(wallet, tokenA),\n findAssociatedTokenAddress(wallet, tokenB)\n ];\n const sslIn = SSL.findAddress(this.controller, tokenA, this.programId);\n const sslOut = SSL.findAddress(this.controller, tokenB, this.programId);\n if (!await this.connection.getAccountInfo(outTokenAtaUser)) {\n ixs.push(\n this.createAssociatedTokenAccountIx(tokenB, outTokenAtaUser, wallet)\n );\n }\n const pairData = await this.connection.getAccountInfo(pair);\n if (!pairData || !pairData.data)\n throw new Error(\"Token Pair do not exist yet.\");\n const tokenAccountB = findAssociatedTokenAddress(wallet, tokenB);\n if (tokenB.toBase58() !== NATIVE_MINT.toBase58() && !(await this.connection.getParsedAccountInfo(tokenAccountB)).value) {\n ixs.push(\n this.createAssociatedTokenAccountIx(tokenB, tokenAccountB, wallet)\n );\n }\n const decoded = PAIR_LAYOUT.decode(pairData.data);\n const { oracles, nOracle, feeCollector } = decoded;\n const n = Number(nOracle.toString());\n const remainingAccounts = [];\n if (referrerTokenAccount !== void 0) {\n remainingAccounts.push({\n isSigner: false,\n isWritable: true,\n pubkey: referrerTokenAccount\n });\n }\n for (const oracle of oracles.slice(0, n)) {\n for (const elem of oracle.elements.slice(0, Number(oracle.n))) {\n remainingAccounts.push({\n isSigner: false,\n isWritable: false,\n pubkey: elem.address\n });\n }\n }\n const accounts3 = {\n controller: this.controller,\n pair,\n sslIn,\n sslOut,\n liabilityVaultIn: findAssociatedTokenAddress(sslIn, tokenA),\n liabilityVaultOut: findAssociatedTokenAddress(sslOut, tokenB),\n swappedLiabilityVaultIn: findAssociatedTokenAddress(sslIn, tokenB),\n swappedLiabilityVaultOut: findAssociatedTokenAddress(sslOut, tokenA),\n userInAta: inTokenAtaUser,\n userOutAta: outTokenAtaUser,\n feeCollectorAta: findAssociatedTokenAddress(feeCollector, tokenA),\n userWallet: wallet,\n feeCollector,\n tokenProgram: TOKEN_PROGRAM_ID3\n };\n ixs.push(\n await inst.swap(\n new BN2(inTokenAmount.toString()),\n new BN2(minOut.toString()),\n { accounts: accounts3, remainingAccounts }\n )\n );\n return ixs;\n };\n }\n async getWasm() {\n if (!wasmInited) {\n await loadWasm();\n }\n return gfx_ssl_wasm_exports;\n }\n};\nvar loadWasm = async () => {\n await gfx_ssl_wasm_default(Buffer2.from(gfx_ssl_wasm_data_default, \"base64\"));\n wasmInited = true;\n};\nvar SyncQuoter = class {\n constructor(programId, controller, tokenIn, tokenOut) {\n this.programId = programId;\n this.controller = controller;\n this.tokenIn = tokenIn;\n this.tokenOut = tokenOut;\n this.getPairAddress = (tokenA, tokenB) => {\n const addresses = [tokenA.toBuffer(), tokenB.toBuffer()].sort(\n Buffer2.compare\n );\n const pairArr = PublicKey4.findProgramAddressSync(\n [\n Buffer2.from(\"GFX-SSL-Pair\", \"utf-8\"),\n this.controller.toBuffer(),\n addresses[0],\n addresses[1]\n ],\n this.programId\n );\n return pairArr[0];\n };\n }\n getAccounts() {\n const pairAddress = this.getPairAddress(this.tokenIn, this.tokenOut);\n const sslIn = SSL.findAddress(\n this.controller,\n this.tokenIn,\n this.programId\n );\n const sslOut = SSL.findAddress(\n this.controller,\n this.tokenOut,\n this.programId\n );\n const liabilityVaultIn = findAssociatedTokenAddress(sslIn, this.tokenIn);\n const swappedLiabilityVaultIn = findAssociatedTokenAddress(\n sslIn,\n this.tokenOut\n );\n const liabilityVaultOut = findAssociatedTokenAddress(sslOut, this.tokenOut);\n const swappedLiabilityVaultOut = findAssociatedTokenAddress(\n sslOut,\n this.tokenIn\n );\n return {\n pairAddress,\n sslIn,\n sslOut,\n liabilityVaultIn,\n liabilityVaultOut,\n swappedLiabilityVaultIn,\n swappedLiabilityVaultOut\n };\n }\n getQuote(inTokenAmount, prepared, silent) {\n const swapWASM = swap;\n if (inTokenAmount === 0n)\n return {\n amountIn: 0n,\n fee: 0n,\n amountOut: 0n,\n impact: 0,\n swapPrice: 0,\n instantPrice: 0,\n oraclePrice: 0\n };\n let out;\n try {\n out = swapWASM(\n prepared.sslInData.slice(),\n prepared.sslOutData.slice(),\n prepared.pairData.slice(),\n prepared.liabilityIn,\n prepared.liabilityOut,\n prepared.swappedLiabilityIn,\n prepared.swappedLiabilityOut,\n prepared.registry,\n inTokenAmount\n );\n } catch (e) {\n if (silent) {\n return {\n amountIn: inTokenAmount,\n fee: 0n,\n amountOut: 0n,\n impact: 1,\n swapPrice: 0,\n instantPrice: 0,\n oraclePrice: 0\n };\n } else {\n throw e;\n }\n }\n return {\n amountIn: out.amount_in,\n fee: out.fee_paid,\n amountOut: out.amount_out,\n impact: out.price_impact,\n swapPrice: out.swap_price,\n instantPrice: out.insta_price,\n oraclePrice: out.oracle_price\n };\n }\n};\nvar Quoter = class extends SyncQuoter {\n constructor(connection, programId, controller, tokenIn, tokenOut, wasm2) {\n super(programId, controller, tokenIn, tokenOut);\n this.connection = connection;\n this.wasm = wasm2;\n this.prepared = void 0;\n }\n async prepare() {\n const pair = this.getPairAddress(this.tokenIn, this.tokenOut);\n const pairData = await this.connection.getAccountInfo(pair);\n if (!pairData)\n throw \"Cannot get Pair\";\n const sslIn = SSL.findAddress(\n this.controller,\n this.tokenIn,\n this.programId\n );\n const sslInData = await this.connection.getAccountInfo(sslIn);\n if (!sslInData)\n throw \"Cannot get SSL for tokenIn\";\n const sslOut = SSL.findAddress(\n this.controller,\n this.tokenOut,\n this.programId\n );\n const sslOutData = await this.connection.getAccountInfo(sslOut);\n if (!sslOutData)\n throw \"Cannot get SSL for tokenOut\";\n const liabilityVaultIn = await getAccount2(\n this.connection,\n findAssociatedTokenAddress(sslIn, this.tokenIn)\n );\n const swappedLiabilityVaultIn = await getAccount2(\n this.connection,\n findAssociatedTokenAddress(sslIn, this.tokenOut)\n );\n const liabilityVaultOut = await getAccount2(\n this.connection,\n findAssociatedTokenAddress(sslOut, this.tokenOut)\n );\n const swappedLiabilityVaultOut = await getAccount2(\n this.connection,\n findAssociatedTokenAddress(sslOut, this.tokenIn)\n );\n const OracleRegistry2 = OracleRegistry;\n const decoded = PAIR_LAYOUT.decode(pairData.data);\n const { maxDelay, oracles, nOracle } = decoded;\n const n = Number(nOracle.toString());\n let publishedSlots = [];\n const registry = new OracleRegistry2();\n for (const oracle of oracles.slice(0, n)) {\n const n2 = Number(oracle.n);\n for (const elem of oracle.elements.slice(0, n2)) {\n const acctInfo = await this.connection.getAccountInfo(elem.address);\n if (acctInfo == null ? void 0 : acctInfo.data) {\n registry.add_oracle(elem.address.toBuffer(), acctInfo.data);\n publishedSlots.push(parsePriceData(acctInfo.data).aggregate.publishSlot);\n }\n }\n }\n this.prepared = {\n pairData: pairData.data,\n sslInData: sslInData.data,\n sslOutData: sslOutData.data,\n liabilityIn: liabilityVaultIn.amount,\n swappedLiabilityIn: swappedLiabilityVaultIn.amount,\n liabilityOut: liabilityVaultOut.amount,\n swappedLiabilityOut: swappedLiabilityVaultOut.amount,\n registry,\n suspended: new SSL(sslInData).isSuspended() || new SSL(sslOutData).isSuspended(),\n publishedSlots: publishedSlots.map((val) => BigInt(val)),\n maxDelay\n };\n }\n isSuspended(currentSlot) {\n if (this.prepared === void 0)\n throw \"Run prepare first\";\n let suspended = this.prepared.suspended;\n if (currentSlot !== void 0) {\n for (const pubSlot of this.prepared.publishedSlots) {\n suspended || (suspended = pubSlot + this.prepared.maxDelay <= currentSlot);\n }\n }\n return suspended;\n }\n quote(inTokenAmount, silent = true) {\n const swapWASM = swap;\n if (inTokenAmount === 0n)\n return {\n amountIn: 0n,\n fee: 0n,\n amountOut: 0n,\n impact: 0,\n swapPrice: 0,\n instantPrice: 0,\n oraclePrice: 0\n };\n if (this.prepared === void 0)\n throw \"Run prepare first\";\n const prepared = this.prepared;\n return this.getQuote(inTokenAmount, prepared, silent);\n }\n};\n\n// src/idl/gfx_controller_idl.json\nvar gfx_controller_idl_exports = {};\n__export(gfx_controller_idl_exports, {\n accounts: () => accounts2,\n default: () => gfx_controller_idl_default,\n errors: () => errors2,\n instructions: () => instructions2,\n name: () => name2,\n version: () => version2\n});\nvar version2 = \"0.1.0\";\nvar name2 = \"contract\";\nvar instructions2 = [\n {\n name: \"createStakingAccount\",\n accounts: [\n {\n name: \"controller\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"stakingAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userWallet\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"stake\",\n accounts: [\n {\n name: \"controller\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"stakingAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"vault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userAta\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userWallet\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"unstake\",\n accounts: [\n {\n name: \"controller\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"stakingAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"vault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userAta\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"feeCollectorAta\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userWallet\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"unstakePercent\",\n type: \"u64\"\n }\n ]\n }\n];\nvar accounts2 = [];\nvar errors2 = [\n {\n code: 6e3,\n name: \"Suspended\",\n msg: \"[G000] The pool is suspended\"\n },\n {\n code: 6001,\n name: \"NotAdmin\",\n msg: \"[G001] Not admin\"\n },\n {\n code: 6002,\n name: \"PercentageOutOfRange\",\n msg: \"[G002] Percentage out of range\"\n },\n {\n code: 6003,\n name: \"NotEnoughRewardReserve\",\n msg: \"[G003] Not enough reward reserve\"\n }\n];\nvar gfx_controller_idl_default = {\n version: version2,\n name: name2,\n instructions: instructions2,\n accounts: accounts2,\n errors: errors2\n};\nexport {\n ADDRESSES,\n gfx_controller_idl_exports as CONTROLLER_IDL,\n CONTROLLER_LAYOUT,\n LIQUIDITY_ACCOUNT_LAYOUT,\n ORACLE_ELEMENT_LAYOUT,\n ORACLE_LAYOUT,\n PAIR_LAYOUT,\n SSL,\n gfx_ssl_idl_exports as SSL_IDL,\n SSL_LAYOUT,\n STAKING_ACCOUNT_LAYOUT,\n Swap,\n SyncSwap,\n loadWasm,\n gfx_ssl_wasm_exports as wasm\n};\n//# sourceMappingURL=index.mjs.map","// src/market.ts\nimport { BN as BN4, Program, utils as utils2, AnchorProvider as AnchorProvider2 } from \"@project-serum/anchor\";\nimport { TOKEN_PROGRAM_ID } from \"@solana/spl-token\";\nimport {\n Keypair as Keypair2,\n PublicKey as PublicKey2,\n SystemProgram,\n SYSVAR_RENT_PUBKEY,\n Transaction as Transaction2\n} from \"@solana/web3.js\";\n\n// src/math.ts\nimport { BN as BN3 } from \"@project-serum/anchor\";\nimport invariant2 from \"invariant\";\n\n// src/utils.ts\nimport { AnchorProvider, BN as BN2, utils } from \"@project-serum/anchor\";\nimport {\n PublicKey,\n sendAndConfirmRawTransaction,\n TransactionInstruction\n} from \"@solana/web3.js\";\n\n// src/tick.ts\nimport invariant from \"invariant\";\nvar getTickFromPrice = (currentTick, tickSpacing, price, xToY) => {\n invariant(currentTick % tickSpacing === 0, \"tick not on tick spacing\");\n if (xToY) {\n return priceToTickInRange(\n price,\n Math.max(-TICK_LIMIT, currentTick - TICK_SEARCH_RANGE),\n currentTick,\n tickSpacing\n );\n } else {\n return priceToTickInRange(\n price,\n currentTick,\n Math.min(TICK_LIMIT, currentTick + TICK_SEARCH_RANGE),\n tickSpacing\n );\n }\n};\nvar priceToTickInRange = (price, low, high, step) => {\n invariant(step !== 0, \"step must be non-zero\");\n low = Math.floor(low / step);\n high = Math.floor(high / step);\n const targetValue = price;\n while (high - low > 1) {\n const mid = Math.floor((high - low) / 2) + low;\n const val = calculatePriceSqrt(mid * step);\n if (val.v.eq(targetValue.v)) {\n return mid * step;\n }\n if (val.v.lt(targetValue.v)) {\n low = mid;\n }\n if (val.v.gt(targetValue.v)) {\n high = mid;\n }\n }\n return low * step;\n};\n\n// src/tickmap.ts\nimport { BN } from \"@project-serum/anchor\";\nvar getSearchLimit = (currentTickIndex, tickSpacing, up) => {\n const index = currentTickIndex.div(tickSpacing);\n let limit = new BN(0);\n if (up) {\n const arrayLimit = new BN(TICK_LIMIT).subn(1);\n const rangeLimit = index.add(new BN(TICK_SEARCH_RANGE));\n const priceLimit = new BN(MAX_TICK).div(tickSpacing);\n limit = BN.min(BN.min(arrayLimit, rangeLimit), priceLimit);\n } else {\n const arrayLimit = new BN(-TICK_LIMIT).addn(1);\n const rangeLimit = index.sub(new BN(TICK_SEARCH_RANGE));\n const priceLimit = new BN(-MAX_TICK).div(tickSpacing);\n limit = BN.max(BN.max(arrayLimit, rangeLimit), priceLimit);\n }\n return limit.mul(tickSpacing);\n};\nvar getPreviousTick = (tickmap, currentTickIndex, tickSpacing) => {\n const limit = getSearchLimit(new BN(currentTickIndex), new BN(tickSpacing), false);\n let { byte, bit } = tickToPosition(new BN(currentTickIndex), new BN(tickSpacing));\n const { byte: limitingByte, bit: limitingBit } = tickToPosition(limit, new BN(tickSpacing));\n while (byte > limitingByte || byte === limitingByte && bit >= limitingBit) {\n let mask = 1 << bit;\n const value = tickmap.bitmap[byte];\n if (value % (mask << 1) > 0) {\n while ((value & mask) === 0) {\n mask >>= 1;\n bit -= 1;\n }\n if (byte > limitingByte || byte === limitingByte && bit >= limitingBit) {\n const index = byte * 8 + bit;\n return (index - TICK_LIMIT) * tickSpacing;\n } else {\n return null;\n }\n }\n byte -= 1;\n bit = 7;\n }\n return null;\n};\nvar getNextTick = (tickmap, currentTickIndex, tickSpacing) => {\n const limit = getSearchLimit(new BN(currentTickIndex), new BN(tickSpacing), true);\n let { byte, bit } = tickToPosition(new BN(currentTickIndex + tickSpacing), new BN(tickSpacing));\n const { byte: limitingByte, bit: limitingBit } = tickToPosition(\n new BN(limit),\n new BN(tickSpacing)\n );\n while (byte < limitingByte || byte === limitingByte && bit <= limitingBit) {\n let shifted = tickmap.bitmap[byte] >> bit;\n if (shifted !== 0) {\n while (shifted % 2 === 0) {\n shifted >>= 1;\n bit += 1;\n }\n if (byte < limitingByte || byte === limitingByte && bit <= limitingBit) {\n const index = byte * 8 + bit;\n return (index - TICK_LIMIT) * tickSpacing;\n } else {\n return null;\n }\n }\n byte += 1;\n bit = 0;\n }\n return null;\n};\nvar tickToPosition = (tick, tickSpacing) => {\n if (!tick.mod(tickSpacing).eqn(0)) {\n throw new Error(\"Tick not divisible by spacing\");\n }\n const bitmapIndex = tick.div(tickSpacing).addn(TICK_LIMIT);\n const byte = bitmapIndex.divn(8).toNumber();\n const bit = Math.abs(bitmapIndex.modn(8));\n return { byte, bit };\n};\nvar findTickmapChanges = (currentTickmap, nextTickmap, tickSpacing = 1, offset = -TICK_LIMIT) => {\n if (currentTickmap.length !== nextTickmap.length) {\n throw new Error(\"bitmap length mismatch\");\n }\n let tickmapChanges = {};\n for (let i = 0; i < currentTickmap.length; i++) {\n if (currentTickmap[i] !== nextTickmap[i]) {\n const xor = currentTickmap[i] ^ nextTickmap[i];\n for (let bit = 0; bit < 8; bit++) {\n if ((xor & 1 << bit) !== 0) {\n const added = (nextTickmap[i] & 1 << bit) !== 0;\n tickmapChanges = {\n ...tickmapChanges,\n [(i * 8 + bit + offset) * tickSpacing]: added ? \"added\" : \"removed\"\n };\n }\n }\n }\n }\n return tickmapChanges;\n};\n\n// src/utils.ts\nimport { struct, u32, u8 } from \"@solana/buffer-layout\";\nimport { u64 } from \"@solana/spl-token\";\nimport { TokenListProvider } from \"@solana/spl-token-registry\";\nvar SEED = \"Invariant\";\nvar DECIMAL = 12;\nvar LIQUIDITY_SCALE = 6;\nvar GROWTH_SCALE = 24;\nvar PRICE_SCALE = 24;\nvar FEE_DECIMAL = 5;\nvar DENOMINATOR = new BN2(10).pow(new BN2(DECIMAL));\nvar LIQUIDITY_DENOMINATOR = new BN2(10).pow(new BN2(LIQUIDITY_SCALE));\nvar PRICE_DENOMINATOR = new BN2(10).pow(new BN2(PRICE_SCALE));\nvar GROWTH_DENOMINATOR = new BN2(10).pow(new BN2(GROWTH_SCALE));\nvar FEE_OFFSET = new BN2(10).pow(new BN2(DECIMAL - FEE_DECIMAL));\nvar FEE_DENOMINATOR = 10 ** FEE_DECIMAL;\nvar U128MAX = new BN2(\"340282366920938463463374607431768211455\");\nvar INVARIANT_ERRORS = /* @__PURE__ */ ((INVARIANT_ERRORS2) => {\n INVARIANT_ERRORS2[\"ZERO_AMOUNT\"] = \"0x1770\";\n INVARIANT_ERRORS2[\"ZERO_OUTPUT\"] = \"0x1771\";\n INVARIANT_ERRORS2[\"WRONG_TICK\"] = \"0x1772\";\n INVARIANT_ERRORS2[\"WRONG_LIMIT\"] = \"0x1773\";\n INVARIANT_ERRORS2[\"INVALID_TICK_INDEX\"] = \"0x1774\";\n INVARIANT_ERRORS2[\"INVALID_TICK_INTERVAL\"] = \"0x1775\";\n INVARIANT_ERRORS2[\"NO_MORE_TICKS\"] = \"0x1776\";\n INVARIANT_ERRORS2[\"TICK_NOT_FOUND\"] = \"0x1777\";\n INVARIANT_ERRORS2[\"PRICE_LIMIT_REACHED\"] = \"0x1778\";\n INVARIANT_ERRORS2[\"INVALID_TICK_LIQUIDITY\"] = \"0x1779\";\n INVARIANT_ERRORS2[\"EMPTY_POSITION_POKES\"] = \"0x177a\";\n INVARIANT_ERRORS2[\"INVALID_POSITION_LIQUIDITY\"] = \"0x177b\";\n INVARIANT_ERRORS2[\"INVALID_POOL_LIQUIDITY\"] = \"0x177c\";\n INVARIANT_ERRORS2[\"INVALID_POSITION_INDEX\"] = \"0x177d\";\n INVARIANT_ERRORS2[\"POSITION_WITHOUT_LIQUIDITY\"] = \"0x177e\";\n INVARIANT_ERRORS2[\"INVALID_POOL_TOKEN_ADDRESSES\"] = \"0x1780\";\n INVARIANT_ERRORS2[\"NO_GAIN_SWAP\"] = \"0x1785\";\n INVARIANT_ERRORS2[\"INVALID_TOKEN_ACCOUNT\"] = \"0x1786\";\n INVARIANT_ERRORS2[\"INVALID_ADMIN\"] = \"0x1787\";\n INVARIANT_ERRORS2[\"INVALID_AUTHORITY\"] = \"0x1788\";\n INVARIANT_ERRORS2[\"INVALID_OWNER\"] = \"0x1789\";\n INVARIANT_ERRORS2[\"INVALID_MINT\"] = \"0x178a\";\n INVARIANT_ERRORS2[\"INVALID_TICKMAP\"] = \"0x178b\";\n INVARIANT_ERRORS2[\"INVALID_TICKMAP_OWNER\"] = \"0x178c\";\n INVARIANT_ERRORS2[\"INVALID_LIST_OWNER\"] = \"0x178d\";\n INVARIANT_ERRORS2[\"INVALID_TICK_SPACING\"] = \"0x178e\";\n return INVARIANT_ERRORS2;\n})(INVARIANT_ERRORS || {});\nvar computeUnitsInstruction = (units, wallet) => {\n const program = new PublicKey(\"ComputeBudget111111111111111111111111111111\");\n const params = { instruction: 0, units, additional_fee: 0 };\n const layout = struct([u8(\"instruction\"), u32(\"units\"), u32(\"additional_fee\")]);\n const data = Buffer.alloc(layout.span);\n layout.encode(params, data);\n const keys = [{ pubkey: wallet, isSigner: false, isWritable: false }];\n const unitsIx = new TransactionInstruction({\n keys,\n programId: program,\n data\n });\n return unitsIx;\n};\nvar signAndSend = async (tx, signers, connection, opts) => {\n tx.setSigners(...signers.map((s) => s.publicKey));\n const blockhash = await connection.getRecentBlockhash(\n (opts == null ? void 0 : opts.commitment) ?? AnchorProvider.defaultOptions().commitment\n );\n tx.recentBlockhash = blockhash.blockhash;\n tx.partialSign(...signers);\n const rawTx = tx.serialize();\n return await sendAndConfirmRawTransaction(\n connection,\n rawTx,\n opts ?? AnchorProvider.defaultOptions()\n );\n};\nvar sleep = async (ms) => {\n return await new Promise((resolve) => setTimeout(resolve, ms));\n};\nvar fromFee = (fee) => {\n return fee.mul(FEE_OFFSET);\n};\nvar feeToTickSpacing = (fee) => {\n if (fee.lte(fromFee(new BN2(10)))) {\n return 1;\n }\n const FEE_TO_SPACING_OFFSET = new BN2(10).pow(new BN2(DECIMAL - 4));\n return fee.div(FEE_TO_SPACING_OFFSET).toNumber();\n};\nvar FEE_TIERS = [\n { fee: fromFee(new BN2(1)) },\n { fee: fromFee(new BN2(10)) },\n { fee: fromFee(new BN2(50)) },\n { fee: fromFee(new BN2(100)) },\n { fee: fromFee(new BN2(300)) },\n { fee: fromFee(new BN2(1e3)) }\n];\nvar getFeeTierAddress = async ({ fee, tickSpacing }, programId) => {\n const ts = tickSpacing ?? feeToTickSpacing(fee);\n const [address, bump] = await PublicKey.findProgramAddress(\n [\n Buffer.from(utils.bytes.utf8.encode(FEE_TIER)),\n programId.toBuffer(),\n bigNumberToBuffer(fee, 128),\n bigNumberToBuffer(new BN2(ts), 16)\n ],\n programId\n );\n return {\n address,\n bump\n };\n};\nvar toDecimal = (x, decimals = 0) => {\n return { v: DENOMINATOR.muln(x).div(new BN2(10).pow(new BN2(decimals))) };\n};\nvar getCloserLimit = (closerLimit) => {\n const { sqrtPriceLimit, xToY, currentTick, tickSpacing, tickmap } = closerLimit;\n let index = xToY ? getPreviousTick(tickmap, currentTick, tickSpacing) : getNextTick(tickmap, currentTick, tickSpacing);\n let sqrtPrice;\n let init;\n if (index !== null) {\n sqrtPrice = calculatePriceSqrt(index);\n init = true;\n } else {\n index = getSearchLimit(new BN2(currentTick), new BN2(tickSpacing), !xToY).toNumber();\n sqrtPrice = calculatePriceSqrt(index);\n init = false;\n }\n if (xToY && sqrtPrice.v.gt(sqrtPriceLimit.v) && index !== null) {\n return { swapLimit: sqrtPrice, limitingTick: { index, initialized: init } };\n } else if (!xToY && sqrtPrice.v.lt(sqrtPriceLimit.v) && index !== null) {\n return { swapLimit: sqrtPrice, limitingTick: { index, initialized: init } };\n } else {\n return { swapLimit: sqrtPriceLimit, limitingTick: null };\n }\n};\nvar simulateSwap = (swapParameters) => {\n const { xToY, byAmountIn, swapAmount, slippage, ticks, tickmap, priceLimit, pool } = swapParameters;\n let { currentTickIndex, tickSpacing, liquidity, sqrtPrice, fee } = pool;\n const startingSqrtPrice = sqrtPrice.v;\n let previousTickIndex = MAX_TICK + 1;\n const amountPerTick = [];\n const crossedTicks = [];\n let accumulatedAmount = new BN2(0);\n let accumulatedAmountOut = new BN2(0);\n let accumulatedAmountIn = new BN2(0);\n let accumulatedFee = new BN2(0);\n const priceLimitAfterSlippage = calculatePriceAfterSlippage(priceLimit, slippage, !xToY);\n if (xToY) {\n if (sqrtPrice.v.lt(priceLimitAfterSlippage.v)) {\n throw new Error(\"Price limit is on the wrong side of price\" /* WrongLimit */);\n }\n } else {\n if (sqrtPrice.v.gt(priceLimitAfterSlippage.v)) {\n throw new Error(\"Price limit is on the wrong side of price\" /* WrongLimit */);\n }\n }\n let remainingAmount = swapAmount;\n let status = 0 /* Ok */;\n while (!remainingAmount.lte(new BN2(0))) {\n const closerLimit = {\n sqrtPriceLimit: priceLimitAfterSlippage,\n xToY,\n currentTick: currentTickIndex,\n tickSpacing,\n tickmap\n };\n const { swapLimit, limitingTick } = getCloserLimit(closerLimit);\n const result = calculateSwapStep(\n sqrtPrice,\n swapLimit,\n liquidity,\n remainingAmount,\n byAmountIn,\n fee\n );\n accumulatedAmountIn = accumulatedAmountIn.add(result.amountIn);\n accumulatedAmountOut = accumulatedAmountOut.add(result.amountOut);\n accumulatedFee = accumulatedFee.add(result.feeAmount);\n let amountDiff;\n if (byAmountIn) {\n amountDiff = result.amountIn.add(result.feeAmount);\n } else {\n amountDiff = result.amountOut;\n }\n remainingAmount = remainingAmount.sub(amountDiff);\n sqrtPrice = result.nextPrice;\n if (sqrtPrice.v.eq(priceLimitAfterSlippage.v) && remainingAmount.gt(new BN2(0))) {\n status = \"Price would cross swap limit\" /* PriceLimitReached */;\n break;\n }\n if (result.nextPrice.v.eq(swapLimit.v) && limitingTick != null) {\n const tickIndex = limitingTick.index;\n const initialized = limitingTick.initialized;\n const isEnoughAmountToCross = isEnoughAmountToPushPrice(\n remainingAmount,\n result.nextPrice,\n pool.liquidity,\n pool.fee,\n byAmountIn,\n xToY\n );\n if (initialized) {\n if (!ticks.has(tickIndex)) {\n throw new Error(\"tick crossed but not passed to simulation\" /* TickNotFound */);\n }\n const tick = ticks.get(tickIndex);\n if (!xToY || isEnoughAmountToCross) {\n if (currentTickIndex >= tick.index !== tick.sign) {\n liquidity = { v: liquidity.v.add(tick.liquidityChange.v) };\n } else {\n liquidity = { v: liquidity.v.sub(tick.liquidityChange.v) };\n }\n crossedTicks.push(tickIndex);\n } else if (!remainingAmount.eqn(0)) {\n if (byAmountIn) {\n accumulatedAmountIn = accumulatedAmountIn.add(remainingAmount);\n }\n remainingAmount = new BN2(0);\n }\n }\n if (xToY && isEnoughAmountToCross) {\n currentTickIndex = tickIndex - tickSpacing;\n } else {\n currentTickIndex = tickIndex;\n }\n } else {\n currentTickIndex = getTickFromPrice(currentTickIndex, tickSpacing, result.nextPrice, xToY);\n }\n accumulatedAmount = accumulatedAmount.add(amountDiff);\n const isTickInitialized = limitingTick !== null && limitingTick.initialized;\n if (isTickInitialized || remainingAmount.eqn(0)) {\n amountPerTick.push(accumulatedAmount);\n accumulatedAmount = new BN2(0);\n }\n if (!isTickInitialized && liquidity.v.eqn(0)) {\n status = \"Too large liquidity gap\" /* TooLargeGap */;\n break;\n }\n if (currentTickIndex === previousTickIndex && !remainingAmount.eqn(0)) {\n status = \"At the end of price range\" /* LimitReached */;\n break;\n } else {\n previousTickIndex = currentTickIndex;\n }\n }\n if (accumulatedAmountOut.isZero() && status === 0 /* Ok */) {\n status = \"Amount out is zero\" /* NoGainSwap */;\n }\n const priceAfterSwap = sqrtPrice.v;\n const priceImpact = calculatePriceImpact(startingSqrtPrice, priceAfterSwap);\n let minReceived;\n if (byAmountIn) {\n const endingPriceAfterSlippage = calculatePriceAfterSlippage(\n { v: priceAfterSwap },\n slippage,\n !xToY\n ).v;\n minReceived = calculateMinReceivedTokensByAmountIn(\n endingPriceAfterSlippage,\n xToY,\n accumulatedAmountIn,\n pool.fee.v\n );\n } else {\n minReceived = accumulatedAmountOut;\n }\n return {\n status,\n amountPerTick,\n crossedTicks,\n accumulatedAmountIn,\n accumulatedAmountOut,\n accumulatedFee,\n priceAfterSwap,\n priceImpact,\n minReceived\n };\n};\nvar parseLiquidityOnTicks = (ticks) => {\n let currentLiquidity = new BN2(0);\n return ticks.map((tick) => {\n currentLiquidity = currentLiquidity.add(tick.liquidityChange.v.muln(tick.sign ? 1 : -1));\n return {\n liquidity: currentLiquidity,\n index: tick.index\n };\n });\n};\nvar calculateFeeGrowthInside = ({\n tickLower,\n tickUpper,\n tickCurrent,\n feeGrowthGlobalX,\n feeGrowthGlobalY\n}) => {\n const currentAboveLower = tickCurrent >= tickLower.index;\n const currentBelowUpper = tickCurrent < tickUpper.index;\n let feeGrowthBelowX;\n let feeGrowthBelowY;\n let feeGrowthAboveX;\n let feeGrowthAboveY;\n if (currentAboveLower) {\n feeGrowthBelowX = tickLower.feeGrowthOutsideX.v;\n feeGrowthBelowY = tickLower.feeGrowthOutsideY.v;\n } else {\n feeGrowthBelowX = feeGrowthGlobalX.v.sub(tickLower.feeGrowthOutsideX.v);\n feeGrowthBelowY = feeGrowthGlobalY.v.sub(tickLower.feeGrowthOutsideY.v);\n }\n if (currentBelowUpper) {\n feeGrowthAboveX = tickUpper.feeGrowthOutsideX.v;\n feeGrowthAboveY = tickUpper.feeGrowthOutsideY.v;\n } else {\n feeGrowthAboveX = feeGrowthGlobalX.v.sub(tickUpper.feeGrowthOutsideX.v);\n feeGrowthAboveY = feeGrowthGlobalY.v.sub(tickUpper.feeGrowthOutsideY.v);\n }\n let feeGrowthInsideX = feeGrowthGlobalX.v.sub(feeGrowthBelowX).sub(feeGrowthAboveX);\n let feeGrowthInsideY = feeGrowthGlobalY.v.sub(feeGrowthBelowY).sub(feeGrowthAboveY);\n if (feeGrowthInsideX.lt(new BN2(0))) {\n feeGrowthInsideX = U128MAX.sub(feeGrowthInsideX.abs()).addn(1);\n }\n if (feeGrowthInsideY.lt(new BN2(0))) {\n feeGrowthInsideY = U128MAX.sub(feeGrowthInsideY.abs()).addn(1);\n }\n return [feeGrowthInsideX, feeGrowthInsideY];\n};\nvar calculateTokensOwed = ({\n position,\n feeGrowthInsideX,\n feeGrowthInsideY\n}) => {\n let tokensOwedX;\n let tokensOwedY;\n if (feeGrowthInsideX.lt(position.feeGrowthInsideX.v)) {\n tokensOwedX = position.liquidity.v.mul(feeGrowthInsideX.add(U128MAX.sub(position.feeGrowthInsideX.v))).div(new BN2(10).pow(new BN2(DECIMAL + LIQUIDITY_SCALE)));\n } else {\n tokensOwedX = position.liquidity.v.mul(feeGrowthInsideX.sub(position.feeGrowthInsideX.v)).div(new BN2(10).pow(new BN2(DECIMAL + LIQUIDITY_SCALE)));\n }\n if (feeGrowthInsideY.lt(position.feeGrowthInsideY.v)) {\n tokensOwedY = position.liquidity.v.mul(feeGrowthInsideY.add(U128MAX.sub(position.feeGrowthInsideY.v))).div(new BN2(10).pow(new BN2(DECIMAL + LIQUIDITY_SCALE)));\n } else {\n tokensOwedY = position.liquidity.v.mul(feeGrowthInsideY.sub(position.feeGrowthInsideY.v)).div(new BN2(10).pow(new BN2(DECIMAL + LIQUIDITY_SCALE)));\n }\n const tokensOwedXTotal = position.tokensOwedX.v.add(tokensOwedX).div(DENOMINATOR);\n const tokensOwedYTotal = position.tokensOwedY.v.add(tokensOwedY).div(DENOMINATOR);\n return [tokensOwedXTotal, tokensOwedYTotal];\n};\nvar calculateClaimAmount = ({\n position,\n tickLower,\n tickUpper,\n tickCurrent,\n feeGrowthGlobalX,\n feeGrowthGlobalY\n}) => {\n const feeGrowthParams = {\n tickLower,\n tickUpper,\n tickCurrent,\n feeGrowthGlobalX,\n feeGrowthGlobalY\n };\n const [feeGrowthInsideX, feeGrowthInsideY] = calculateFeeGrowthInside(feeGrowthParams);\n const tokensOwedParams = {\n position,\n feeGrowthInsideX,\n feeGrowthInsideY\n };\n const [tokensOwedXTotal, tokensOwedYTotal] = calculateTokensOwed(tokensOwedParams);\n return [tokensOwedXTotal, tokensOwedYTotal];\n};\nvar bigNumberToBuffer = (n, size) => {\n const chunk = new BN2(2).pow(new BN2(16));\n const buffer = Buffer.alloc(size / 8);\n let offset = 0;\n while (n.gt(new BN2(0))) {\n buffer.writeUInt16LE(n.mod(chunk).toNumber(), offset);\n n = n.div(chunk);\n offset += 2;\n }\n return buffer;\n};\nvar getMaxTick = (tickSpacing) => {\n const limitedByPrice = MAX_TICK - MAX_TICK % tickSpacing;\n const limitedByTickmap = TICK_LIMIT * tickSpacing - tickSpacing;\n return Math.min(limitedByPrice, limitedByTickmap);\n};\nvar getMinTick = (tickSpacing) => {\n const limitedByPrice = -MAX_TICK + MAX_TICK % tickSpacing;\n const limitedByTickmap = -TICK_LIMIT * tickSpacing;\n return Math.max(limitedByPrice, limitedByTickmap);\n};\nvar getTokens = (liquidity, lowerTickIndex, upperTickIndex) => {\n const lowerSqrtPrice = calculatePriceSqrt(lowerTickIndex);\n const upperSqrtPrice = calculatePriceSqrt(upperTickIndex);\n return getXfromLiquidity(liquidity, upperSqrtPrice.v, lowerSqrtPrice.v);\n};\nvar isActive = (lowerIndex, upperIndex, currentIndex) => {\n return lowerIndex <= currentIndex && upperIndex > currentIndex;\n};\nvar coingeckoIdOverwrites = {\n \"9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i\": \"terrausd\",\n \"7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj\": \"lido-staked-sol\",\n NRVwhjBQiUPYtfDT5zRBVJajzFQHaBUNtC7SNVvqRFa: \"nirvana-nirv\"\n};\nvar getTokensData = async () => {\n const tokens = await new TokenListProvider().resolve();\n const tokenList = tokens.filterByClusterSlug(\"mainnet-beta\").getList().filter((token) => token.chainId === 101);\n const tokensObj = {};\n tokenList.forEach((token) => {\n var _a;\n tokensObj[token.address.toString()] = {\n id: (coingeckoIdOverwrites == null ? void 0 : coingeckoIdOverwrites[token.address.toString()]) ?? ((_a = token.extensions) == null ? void 0 : _a.coingeckoId),\n decimals: token.decimals,\n ticker: token.symbol\n };\n });\n return tokensObj;\n};\nvar getPrice = (sqrtPrice, decimalDiff) => {\n const price = sqrtPrice.v.pow(new BN2(2));\n const priceWithCorrectPrecision = price.div(new BN2(10).pow(new BN2(40)));\n if (decimalDiff > 0) {\n return { v: priceWithCorrectPrecision.mul(new BN2(10).pow(new BN2(decimalDiff))) };\n }\n if (decimalDiff < 0) {\n return { v: priceWithCorrectPrecision.div(new BN2(10).pow(new BN2(Math.abs(decimalDiff)))) };\n }\n return { v: priceWithCorrectPrecision };\n};\n\n// src/math.ts\nvar TICK_LIMIT = 44364;\nvar MAX_TICK = 221818;\nvar MIN_TICK = -MAX_TICK;\nvar TICK_SEARCH_RANGE = 256;\nvar U64_MAX = new BN3(\"18446744073709551615\");\nvar isInitialized = (tickmap, index, tickSpacing) => {\n if (index % tickSpacing !== 0) {\n throw Error(\"invalid arguments can't check tick\");\n }\n const toIndex = Math.floor(index / tickSpacing) + TICK_LIMIT;\n const byte = Math.floor(toIndex / 8);\n const bit = Math.floor(toIndex % 8);\n const value = tickmap.bitmap[byte] & 1 << bit;\n return value !== 0;\n};\nvar fromInteger = (integer) => {\n return { v: new BN3(integer).mul(DENOMINATOR) };\n};\nvar calculatePriceSqrt = (tickIndex) => {\n const tick = Math.abs(tickIndex);\n if (tick > MAX_TICK) {\n throw Error(\"tick over bounds\");\n }\n let price = new BN3(DENOMINATOR);\n if ((tick & 1) !== 0)\n price = price.mul(new BN3(\"1000049998750\")).div(DENOMINATOR);\n if ((tick & 2) !== 0)\n price = price.mul(new BN3(\"1000100000000\")).div(DENOMINATOR);\n if ((tick & 4) !== 0)\n price = price.mul(new BN3(\"1000200010000\")).div(DENOMINATOR);\n if ((tick & 8) !== 0)\n price = price.mul(new BN3(\"1000400060004\")).div(DENOMINATOR);\n if ((tick & 16) !== 0)\n price = price.mul(new BN3(\"1000800280056\")).div(DENOMINATOR);\n if ((tick & 32) !== 0)\n price = price.mul(new BN3(\"1001601200560\")).div(DENOMINATOR);\n if ((tick & 64) !== 0)\n price = price.mul(new BN3(\"1003204964963\")).div(DENOMINATOR);\n if ((tick & 128) !== 0)\n price = price.mul(new BN3(\"1006420201726\")).div(DENOMINATOR);\n if ((tick & 256) !== 0)\n price = price.mul(new BN3(\"1012881622442\")).div(DENOMINATOR);\n if ((tick & 512) !== 0)\n price = price.mul(new BN3(\"1025929181080\")).div(DENOMINATOR);\n if ((tick & 1024) !== 0)\n price = price.mul(new BN3(\"1052530684591\")).div(DENOMINATOR);\n if ((tick & 2048) !== 0)\n price = price.mul(new BN3(\"1107820842005\")).div(DENOMINATOR);\n if ((tick & 4096) !== 0)\n price = price.mul(new BN3(\"1227267017980\")).div(DENOMINATOR);\n if ((tick & 8192) !== 0)\n price = price.mul(new BN3(\"1506184333421\")).div(DENOMINATOR);\n if ((tick & 16384) !== 0)\n price = price.mul(new BN3(\"2268591246242\")).div(DENOMINATOR);\n if ((tick & 32768) !== 0)\n price = price.mul(new BN3(\"5146506242525\")).div(DENOMINATOR);\n if ((tick & 65536) !== 0)\n price = price.mul(new BN3(\"26486526504348\")).div(DENOMINATOR);\n if ((tick & 131072) !== 0)\n price = price.mul(new BN3(\"701536086265529\")).div(DENOMINATOR);\n if (tickIndex < 0) {\n return {\n v: DENOMINATOR.mul(DENOMINATOR).div(price).mul(new BN3(10).pow(new BN3(PRICE_SCALE - DECIMAL)))\n };\n }\n return { v: price.mul(new BN3(10).pow(new BN3(PRICE_SCALE - DECIMAL))) };\n};\nvar sqrt = (num) => {\n if (num.lt(new BN3(0))) {\n throw new Error(\"Sqrt only works on non-negative inputs\");\n }\n if (num.lt(new BN3(2))) {\n return num;\n }\n const smallCand = sqrt(num.shrn(2)).shln(1);\n const largeCand = smallCand.add(new BN3(1));\n if (largeCand.mul(largeCand).gt(num)) {\n return smallCand;\n } else {\n return largeCand;\n }\n};\nvar calculatePriceAfterSlippage = (priceSqrt, slippage, up) => {\n const multiplier = up ? slippage.v.add(DENOMINATOR) : DENOMINATOR.sub(slippage.v);\n const slippageSqrt = sqrt(multiplier.mul(DENOMINATOR));\n return { v: priceSqrt.v.mul(slippageSqrt).div(DENOMINATOR) };\n};\nvar calculateSwapStep = (currentPrice, targetPrice, liquidity, amount, byAmountIn, fee) => {\n if (liquidity.v.eqn(0)) {\n return {\n nextPrice: targetPrice,\n amountIn: new BN3(0),\n amountOut: new BN3(0),\n feeAmount: new BN3(0)\n };\n }\n const aToB = currentPrice.v.gte(targetPrice.v);\n let nextPrice = { v: new BN3(0) };\n let amountIn = new BN3(0);\n let amountOut = new BN3(0);\n let feeAmount = new BN3(0);\n if (byAmountIn) {\n const amountAfterFee = fromInteger(1).v.sub(fee.v).mul(amount).div(DENOMINATOR);\n if (aToB) {\n amountIn = getDeltaX(targetPrice, currentPrice, liquidity, true) ?? U64_MAX;\n } else {\n amountIn = getDeltaY(targetPrice, currentPrice, liquidity, true) ?? U64_MAX;\n }\n if (amountAfterFee.gte(amountIn)) {\n nextPrice = targetPrice;\n } else {\n nextPrice = getNextPriceFromInput(currentPrice, liquidity, amountAfterFee, aToB);\n }\n } else {\n if (aToB) {\n amountOut = getDeltaY(targetPrice, currentPrice, liquidity, false) ?? U64_MAX;\n } else {\n amountOut = getDeltaX(currentPrice, targetPrice, liquidity, false) ?? U64_MAX;\n }\n if (amount.gte(amountOut)) {\n nextPrice = targetPrice;\n } else {\n nextPrice = getNextPriceFromOutput(currentPrice, liquidity, amount, aToB);\n }\n }\n const max = targetPrice.v.eq(nextPrice.v);\n if (aToB) {\n if (!(max && byAmountIn)) {\n amountIn = getDeltaX(nextPrice, currentPrice, liquidity, true);\n }\n if (!(max && !byAmountIn)) {\n amountOut = getDeltaY(nextPrice, currentPrice, liquidity, false);\n }\n } else {\n if (!(max && byAmountIn)) {\n amountIn = getDeltaY(currentPrice, nextPrice, liquidity, true);\n }\n if (!(max && !byAmountIn)) {\n amountOut = getDeltaX(currentPrice, nextPrice, liquidity, false);\n }\n }\n if (amountIn === null || amountOut === null)\n throw new Error(\"Amount would be greater than u64\");\n if (!byAmountIn && amountOut.gt(amount)) {\n amountOut = amount;\n }\n if (byAmountIn && !nextPrice.v.eq(targetPrice.v)) {\n feeAmount = amount.sub(amountIn);\n } else {\n feeAmount = amountIn.mul(fee.v).add(DENOMINATOR.subn(1)).div(DENOMINATOR);\n }\n return {\n nextPrice,\n amountIn,\n amountOut,\n feeAmount\n };\n};\nvar getDeltaX = (priceA, priceB, liquidity, up) => {\n let deltaPrice;\n if (priceA.v.gt(priceB.v)) {\n deltaPrice = { v: priceA.v.sub(priceB.v) };\n } else {\n deltaPrice = { v: priceB.v.sub(priceA.v) };\n }\n const nominator = liquidity.v.mul(deltaPrice.v).div(LIQUIDITY_DENOMINATOR);\n if (up) {\n const denominatorUp = priceA.v.mul(priceB.v).div(PRICE_DENOMINATOR);\n const result = nominator.mul(PRICE_DENOMINATOR).add(denominatorUp.subn(1)).div(denominatorUp).add(PRICE_DENOMINATOR.subn(1)).div(PRICE_DENOMINATOR);\n return result.lte(U64_MAX) ? result : null;\n } else {\n const denominatorDown = priceA.v.mul(priceB.v).add(PRICE_DENOMINATOR.subn(1)).div(PRICE_DENOMINATOR);\n const result = nominator.mul(PRICE_DENOMINATOR).div(denominatorDown).div(PRICE_DENOMINATOR);\n return result.lte(U64_MAX) ? result : null;\n }\n};\nvar getDeltaY = (priceA, priceB, liquidity, up) => {\n let deltaPrice;\n if (priceA.v.gt(priceB.v)) {\n deltaPrice = { v: priceA.v.sub(priceB.v) };\n } else {\n deltaPrice = { v: priceB.v.sub(priceA.v) };\n }\n if (up) {\n const result = deltaPrice.v.mul(liquidity.v).add(LIQUIDITY_DENOMINATOR.subn(1)).div(LIQUIDITY_DENOMINATOR).add(PRICE_DENOMINATOR.subn(1)).div(PRICE_DENOMINATOR);\n return result.lte(U64_MAX) ? result : null;\n } else {\n const result = deltaPrice.v.mul(liquidity.v).div(LIQUIDITY_DENOMINATOR).div(PRICE_DENOMINATOR);\n return result.lte(U64_MAX) ? result : null;\n }\n};\nvar getNextPriceFromInput = (price, liquidity, amount, aToB) => {\n invariant2(price.v.gt(new BN3(0)), \"prive should be gt 0\");\n invariant2(liquidity.v.gt(new BN3(0)), \"liquidity should be gt 0\");\n if (aToB) {\n return getNextPriceXUp(price, liquidity, amount, true);\n } else {\n return getNextPriceYDown(price, liquidity, amount, true);\n }\n};\nvar getNextPriceFromOutput = (price, liquidity, amount, aToB) => {\n invariant2(price.v.gt(new BN3(0)), \"prive should be gt 0\");\n invariant2(liquidity.v.gt(new BN3(0)), \"liquidity should be gt 0\");\n if (aToB) {\n return getNextPriceYDown(price, liquidity, amount, false);\n } else {\n return getNextPriceXUp(price, liquidity, amount, false);\n }\n};\nvar getNextPriceXUp = (price, liquidity, amount, add) => {\n if (amount.eqn(0)) {\n return price;\n }\n const bigLiquidity = liquidity.v.mul(new BN3(10).pow(new BN3(PRICE_SCALE - LIQUIDITY_SCALE)));\n const priceMulAmount = price.v.mul(amount);\n let denominator;\n if (add) {\n denominator = bigLiquidity.add(priceMulAmount);\n } else {\n denominator = bigLiquidity.sub(priceMulAmount);\n }\n const nominator = price.v.mul(liquidity.v).add(LIQUIDITY_DENOMINATOR.subn(1)).div(LIQUIDITY_DENOMINATOR);\n return {\n v: nominator.mul(PRICE_DENOMINATOR).add(denominator.subn(1)).div(denominator)\n };\n};\nvar getNextPriceYDown = (price, liquidity, amount, add) => {\n let quotient;\n if (add) {\n quotient = amount.mul(PRICE_DENOMINATOR).mul(PRICE_DENOMINATOR).div(liquidity.v.mul(new BN3(10).pow(new BN3(PRICE_SCALE - LIQUIDITY_SCALE))));\n return {\n v: price.v.add(quotient)\n };\n } else {\n quotient = amount.mul(PRICE_DENOMINATOR).mul(PRICE_DENOMINATOR).add(liquidity.v.mul(new BN3(10).pow(new BN3(PRICE_SCALE - LIQUIDITY_SCALE))).subn(1)).div(liquidity.v.mul(new BN3(10).pow(new BN3(PRICE_SCALE - LIQUIDITY_SCALE))));\n return { v: price.v.sub(quotient) };\n }\n};\nvar findClosestTicks = (ticks, current, tickSpacing, limit, maxRange = Infinity, oneWay = void 0) => {\n if (current % tickSpacing !== 0) {\n throw Error(\"invalid arguments can't find initialized ticks\");\n }\n const currentIndex = Math.floor(current / tickSpacing) + TICK_LIMIT;\n let above = currentIndex + 1;\n let below = currentIndex;\n const found = [];\n let reachedTop = oneWay === \"down\";\n let reachedBottom = oneWay === \"up\";\n while (found.length < limit && above - below < maxRange * 2) {\n if (!reachedTop) {\n const valueAbove = ticks[Math.floor(above / 8)] & 1 << above % 8;\n if (valueAbove)\n found.push(above);\n reachedTop = above >= 2 * TICK_LIMIT;\n above++;\n }\n if (!reachedBottom) {\n const valueBelow = ticks[Math.floor(below / 8)] & 1 << below % 8;\n if (valueBelow)\n found.unshift(below);\n reachedBottom = below < 0;\n below--;\n }\n if (reachedTop && reachedBottom) {\n break;\n }\n }\n if (found.length > limit)\n found.pop();\n return found.map((i) => (i - TICK_LIMIT) * tickSpacing);\n};\nvar getX = (liquidity, upperSqrtPrice, currentSqrtPrice, lowerSqrtPrice) => {\n if (upperSqrtPrice.lte(new BN3(0)) || currentSqrtPrice.lte(new BN3(0)) || lowerSqrtPrice.lte(new BN3(0))) {\n throw new Error(\"Price cannot be lower or equal 0\");\n }\n let denominator;\n let nominator;\n if (currentSqrtPrice.gte(upperSqrtPrice)) {\n return new BN3(0);\n } else if (currentSqrtPrice.lt(lowerSqrtPrice)) {\n denominator = lowerSqrtPrice.mul(upperSqrtPrice).div(PRICE_DENOMINATOR);\n nominator = upperSqrtPrice.sub(lowerSqrtPrice);\n } else {\n denominator = upperSqrtPrice.mul(currentSqrtPrice).div(PRICE_DENOMINATOR);\n nominator = upperSqrtPrice.sub(currentSqrtPrice);\n }\n return liquidity.mul(nominator).div(denominator).div(LIQUIDITY_DENOMINATOR);\n};\nvar getXfromLiquidity = (liquidity, upperSqrtPrice, lowerSqrtPrice) => {\n if (upperSqrtPrice.lte(new BN3(0)) || lowerSqrtPrice.lte(new BN3(0))) {\n throw new Error(\"Price cannot be lower or equal 0\");\n }\n const denominator = lowerSqrtPrice.mul(upperSqrtPrice).div(PRICE_DENOMINATOR);\n const nominator = upperSqrtPrice.sub(lowerSqrtPrice);\n return liquidity.mul(nominator).div(denominator).div(LIQUIDITY_DENOMINATOR);\n};\nvar getY = (liquidity, upperSqrtPrice, currentSqrtPrice, lowerSqrtPrice) => {\n if (lowerSqrtPrice.lte(new BN3(0)) || currentSqrtPrice.lte(new BN3(0)) || upperSqrtPrice.lte(new BN3(0))) {\n throw new Error(\"Price cannot be 0\");\n }\n let difference;\n if (currentSqrtPrice.lt(lowerSqrtPrice)) {\n return new BN3(0);\n } else if (currentSqrtPrice.gte(upperSqrtPrice)) {\n difference = upperSqrtPrice.sub(lowerSqrtPrice);\n } else {\n difference = currentSqrtPrice.sub(lowerSqrtPrice);\n }\n return liquidity.mul(difference).div(PRICE_DENOMINATOR).div(LIQUIDITY_DENOMINATOR);\n};\nvar isEnoughAmountToPushPrice = (amount, currentPriceSqrt, liquidity, fee, byAmountIn, aToB) => {\n if (liquidity.v.eqn(0)) {\n return true;\n }\n let nextSqrtPrice;\n if (byAmountIn) {\n const amountAfterFee = fromInteger(1).v.sub(fee.v).mul(amount).div(DENOMINATOR);\n nextSqrtPrice = getNextPriceFromInput(currentPriceSqrt, liquidity, amountAfterFee, aToB);\n } else {\n nextSqrtPrice = getNextPriceFromOutput(currentPriceSqrt, liquidity, amount, aToB);\n }\n return !currentPriceSqrt.v.eq(nextSqrtPrice.v);\n};\nvar calculatePriceImpact = (startingSqrtPrice, endingSqrtPrice) => {\n const startingPrice = startingSqrtPrice.mul(startingSqrtPrice);\n const endingPrice = endingSqrtPrice.mul(endingSqrtPrice);\n let priceQuotient;\n if (endingPrice.gte(startingPrice)) {\n priceQuotient = DENOMINATOR.mul(startingPrice).div(endingPrice);\n } else {\n priceQuotient = DENOMINATOR.mul(endingPrice).div(startingPrice);\n }\n return DENOMINATOR.sub(priceQuotient);\n};\nvar calculateMinReceivedTokensByAmountIn = (targetSqrtPrice, xToY, amountIn, fee) => {\n const targetPrice = targetSqrtPrice.mul(targetSqrtPrice);\n let amountOut;\n if (xToY) {\n amountOut = amountIn.mul(targetPrice).div(PRICE_DENOMINATOR).div(PRICE_DENOMINATOR);\n } else {\n amountOut = amountIn.mul(PRICE_DENOMINATOR).mul(PRICE_DENOMINATOR).div(targetPrice);\n }\n return DENOMINATOR.sub(fee).mul(amountOut).div(DENOMINATOR);\n};\n\n// src/idl/invariant.ts\nvar IDL = {\n \"version\": \"0.1.0\",\n \"name\": \"invariant\",\n \"instructions\": [\n {\n \"name\": \"createState\",\n \"accounts\": [\n {\n \"name\": \"state\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"admin\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"programAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"nonce\",\n \"type\": \"u8\"\n }\n ]\n },\n {\n \"name\": \"createFeeTier\",\n \"accounts\": [\n {\n \"name\": \"feeTier\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"state\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"admin\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"fee\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"u16\"\n }\n ]\n },\n {\n \"name\": \"createPool\",\n \"accounts\": [\n {\n \"name\": \"state\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"feeTier\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tickmap\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenX\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenY\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenXReserve\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenYReserve\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"authority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"initTick\",\n \"type\": \"i32\"\n }\n ]\n },\n {\n \"name\": \"swap\",\n \"accounts\": [\n {\n \"name\": \"state\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tickmap\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"accountX\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"accountY\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"reserveX\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"reserveY\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"programAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"xToY\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"byAmountIn\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"sqrtPriceLimit\",\n \"type\": \"u128\"\n }\n ]\n },\n {\n \"name\": \"initializeOracle\",\n \"accounts\": [\n {\n \"name\": \"pool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"oracle\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenX\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenY\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"payer\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"createTick\",\n \"accounts\": [\n {\n \"name\": \"tick\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pool\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tickmap\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenX\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenY\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"index\",\n \"type\": \"i32\"\n }\n ]\n },\n {\n \"name\": \"createPositionList\",\n \"accounts\": [\n {\n \"name\": \"positionList\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"signer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"createPosition\",\n \"accounts\": [\n {\n \"name\": \"state\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"position\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"positionList\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"payer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"lowerTick\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"upperTick\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tickmap\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenX\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenY\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"accountX\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"accountY\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"reserveX\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"reserveY\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"programAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"lowerTickIndex\",\n \"type\": \"i32\"\n },\n {\n \"name\": \"upperTickIndex\",\n \"type\": \"i32\"\n },\n {\n \"name\": \"liquidityDelta\",\n \"type\": {\n \"defined\": \"Liquidity\"\n }\n },\n {\n \"name\": \"slippageLimitLower\",\n \"type\": {\n \"defined\": \"Price\"\n }\n },\n {\n \"name\": \"slippageLimitUpper\",\n \"type\": {\n \"defined\": \"Price\"\n }\n }\n ]\n },\n {\n \"name\": \"removePosition\",\n \"accounts\": [\n {\n \"name\": \"state\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"removedPosition\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"positionList\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"lastPosition\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"pool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tickmap\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"lowerTick\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"upperTick\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenX\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenY\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"accountX\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"accountY\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"reserveX\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"reserveY\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"programAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"lowerTickIndex\",\n \"type\": \"i32\"\n },\n {\n \"name\": \"upperTickIndex\",\n \"type\": \"i32\"\n }\n ]\n },\n {\n \"name\": \"transferPositionOwnership\",\n \"accounts\": [\n {\n \"name\": \"ownerList\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"recipientList\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"newPosition\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"removedPosition\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"lastPosition\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"recipient\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"index\",\n \"type\": \"u32\"\n }\n ]\n },\n {\n \"name\": \"claimFee\",\n \"accounts\": [\n {\n \"name\": \"state\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"position\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"lowerTick\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"upperTick\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"tokenX\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenY\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"accountX\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"accountY\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"reserveX\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"reserveY\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"programAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"index\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"lowerTickIndex\",\n \"type\": \"i32\"\n },\n {\n \"name\": \"upperTickIndex\",\n \"type\": \"i32\"\n }\n ]\n },\n {\n \"name\": \"updateSecondsPerLiquidity\",\n \"accounts\": [\n {\n \"name\": \"pool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"lowerTick\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"upperTick\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"position\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenX\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenY\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"owner\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"signer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"lowerTickIndex\",\n \"type\": \"i32\"\n },\n {\n \"name\": \"upperTickIndex\",\n \"type\": \"i32\"\n },\n {\n \"name\": \"index\",\n \"type\": \"i32\"\n }\n ]\n },\n {\n \"name\": \"withdrawProtocolFee\",\n \"accounts\": [\n {\n \"name\": \"state\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenX\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenY\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"accountX\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"accountY\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"reserveX\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"reserveY\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"authority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"programAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"changeProtocolFee\",\n \"accounts\": [\n {\n \"name\": \"state\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenX\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenY\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"programAuthority\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"protocolFee\",\n \"type\": {\n \"defined\": \"FixedPoint\"\n }\n }\n ]\n },\n {\n \"name\": \"changeFeeReceiver\",\n \"accounts\": [\n {\n \"name\": \"state\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"pool\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenX\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenY\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"admin\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"feeReceiver\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n }\n ],\n \"accounts\": [\n {\n \"name\": \"feeTier\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fee\",\n \"type\": {\n \"defined\": \"FixedPoint\"\n }\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"oracle\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"data\",\n \"type\": {\n \"array\": [\n {\n \"defined\": \"Record\"\n },\n 256\n ]\n }\n },\n {\n \"name\": \"head\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"size\",\n \"type\": \"u16\"\n }\n ]\n }\n },\n {\n \"name\": \"pool\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"tokenX\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"tokenY\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"tokenXReserve\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"tokenYReserve\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"positionIterator\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"tickSpacing\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"fee\",\n \"type\": {\n \"defined\": \"FixedPoint\"\n }\n },\n {\n \"name\": \"protocolFee\",\n \"type\": {\n \"defined\": \"FixedPoint\"\n }\n },\n {\n \"name\": \"liquidity\",\n \"type\": {\n \"defined\": \"Liquidity\"\n }\n },\n {\n \"name\": \"sqrtPrice\",\n \"type\": {\n \"defined\": \"Price\"\n }\n },\n {\n \"name\": \"currentTickIndex\",\n \"type\": \"i32\"\n },\n {\n \"name\": \"tickmap\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"feeGrowthGlobalX\",\n \"type\": {\n \"defined\": \"FeeGrowth\"\n }\n },\n {\n \"name\": \"feeGrowthGlobalY\",\n \"type\": {\n \"defined\": \"FeeGrowth\"\n }\n },\n {\n \"name\": \"feeProtocolTokenX\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"feeProtocolTokenY\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"secondsPerLiquidityGlobal\",\n \"type\": {\n \"defined\": \"FixedPoint\"\n }\n },\n {\n \"name\": \"startTimestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"lastTimestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"feeReceiver\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"oracleAddress\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"oracleInitialized\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"position\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"owner\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"pool\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"id\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"liquidity\",\n \"type\": {\n \"defined\": \"Liquidity\"\n }\n },\n {\n \"name\": \"lowerTickIndex\",\n \"type\": \"i32\"\n },\n {\n \"name\": \"upperTickIndex\",\n \"type\": \"i32\"\n },\n {\n \"name\": \"feeGrowthInsideX\",\n \"type\": {\n \"defined\": \"FeeGrowth\"\n }\n },\n {\n \"name\": \"feeGrowthInsideY\",\n \"type\": {\n \"defined\": \"FeeGrowth\"\n }\n },\n {\n \"name\": \"secondsPerLiquidityInside\",\n \"type\": {\n \"defined\": \"FixedPoint\"\n }\n },\n {\n \"name\": \"lastSlot\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokensOwedX\",\n \"type\": {\n \"defined\": \"FixedPoint\"\n }\n },\n {\n \"name\": \"tokensOwedY\",\n \"type\": {\n \"defined\": \"FixedPoint\"\n }\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"positionList\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"head\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"state\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"admin\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"nonce\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"authority\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"tick\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"pool\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"index\",\n \"type\": \"i32\"\n },\n {\n \"name\": \"sign\",\n \"type\": \"bool\"\n },\n {\n \"name\": \"liquidityChange\",\n \"type\": {\n \"defined\": \"Liquidity\"\n }\n },\n {\n \"name\": \"liquidityGross\",\n \"type\": {\n \"defined\": \"Liquidity\"\n }\n },\n {\n \"name\": \"sqrtPrice\",\n \"type\": {\n \"defined\": \"Price\"\n }\n },\n {\n \"name\": \"feeGrowthOutsideX\",\n \"type\": {\n \"defined\": \"FeeGrowth\"\n }\n },\n {\n \"name\": \"feeGrowthOutsideY\",\n \"type\": {\n \"defined\": \"FeeGrowth\"\n }\n },\n {\n \"name\": \"secondsPerLiquidityOutside\",\n \"type\": {\n \"defined\": \"FixedPoint\"\n }\n },\n {\n \"name\": \"secondsOutside\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"bump\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"tickmap\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bitmap\",\n \"type\": {\n \"array\": [\n \"u8\",\n 11091\n ]\n }\n }\n ]\n }\n }\n ],\n \"types\": [\n {\n \"name\": \"Price\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"v\",\n \"type\": \"u128\"\n }\n ]\n }\n },\n {\n \"name\": \"Liquidity\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"v\",\n \"type\": \"u128\"\n }\n ]\n }\n },\n {\n \"name\": \"FeeGrowth\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"v\",\n \"type\": \"u128\"\n }\n ]\n }\n },\n {\n \"name\": \"FixedPoint\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"v\",\n \"type\": \"u128\"\n }\n ]\n }\n },\n {\n \"name\": \"Record\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"timestamp\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"price\",\n \"type\": {\n \"defined\": \"Price\"\n }\n }\n ]\n }\n }\n ],\n \"errors\": [\n {\n \"code\": 6e3,\n \"name\": \"ZeroAmount\",\n \"msg\": \"Amount is zero\"\n },\n {\n \"code\": 6001,\n \"name\": \"ZeroOutput\",\n \"msg\": \"Output would be zero\"\n },\n {\n \"code\": 6002,\n \"name\": \"WrongTick\",\n \"msg\": \"Not the expected tick\"\n },\n {\n \"code\": 6003,\n \"name\": \"WrongLimit\",\n \"msg\": \"Price limit is on the wrong side of price\"\n },\n {\n \"code\": 6004,\n \"name\": \"InvalidTickIndex\",\n \"msg\": \"Tick index not divisible by spacing or over limit\"\n },\n {\n \"code\": 6005,\n \"name\": \"InvalidTickInterval\",\n \"msg\": \"Invalid tick_lower or tick_upper\"\n },\n {\n \"code\": 6006,\n \"name\": \"NoMoreTicks\",\n \"msg\": \"There is no more tick in that direction\"\n },\n {\n \"code\": 6007,\n \"name\": \"TickNotFound\",\n \"msg\": \"Correct tick not found in context\"\n },\n {\n \"code\": 6008,\n \"name\": \"PriceLimitReached\",\n \"msg\": \"Price would cross swap limit\"\n },\n {\n \"code\": 6009,\n \"name\": \"InvalidTickLiquidity\",\n \"msg\": \"Invalid tick liquidity\"\n },\n {\n \"code\": 6010,\n \"name\": \"EmptyPositionPokes\",\n \"msg\": \"Disable empty position pokes\"\n },\n {\n \"code\": 6011,\n \"name\": \"InvalidPositionLiquidity\",\n \"msg\": \"Invalid tick liquidity\"\n },\n {\n \"code\": 6012,\n \"name\": \"InvalidPoolLiquidity\",\n \"msg\": \"Invalid pool liquidity\"\n },\n {\n \"code\": 6013,\n \"name\": \"InvalidPositionIndex\",\n \"msg\": \"Invalid position index\"\n },\n {\n \"code\": 6014,\n \"name\": \"PositionWithoutLiquidity\",\n \"msg\": \"Position liquidity would be zero\"\n },\n {\n \"code\": 6015,\n \"name\": \"Unauthorized\",\n \"msg\": \"You are not admin\"\n },\n {\n \"code\": 6016,\n \"name\": \"InvalidPoolTokenAddresses\",\n \"msg\": \"Invalid pool token addresses\"\n },\n {\n \"code\": 6017,\n \"name\": \"NegativeTime\",\n \"msg\": \"Time cannot be negative\"\n },\n {\n \"code\": 6018,\n \"name\": \"OracleAlreadyInitialized\",\n \"msg\": \"Oracle is already initialized\"\n },\n {\n \"code\": 6019,\n \"name\": \"LimitReached\",\n \"msg\": \"Absolute price limit was reached\"\n },\n {\n \"code\": 6020,\n \"name\": \"InvalidProtocolFee\",\n \"msg\": \"Invalid protocol fee\"\n },\n {\n \"code\": 6021,\n \"name\": \"NoGainSwap\",\n \"msg\": \"Swap amount out is 0\"\n },\n {\n \"code\": 6022,\n \"name\": \"InvalidTokenAccount\",\n \"msg\": \"Provided token account is different than expected\"\n },\n {\n \"code\": 6023,\n \"name\": \"InvalidAdmin\",\n \"msg\": \"Admin address is different than expected\"\n },\n {\n \"code\": 6024,\n \"name\": \"InvalidAuthority\",\n \"msg\": \"Provided authority is different than expected\"\n },\n {\n \"code\": 6025,\n \"name\": \"InvalidOwner\",\n \"msg\": \"Provided token owner is different than expected\"\n },\n {\n \"code\": 6026,\n \"name\": \"InvalidMint\",\n \"msg\": \"Provided token account mint is different than expected mint token\"\n },\n {\n \"code\": 6027,\n \"name\": \"InvalidTickmap\",\n \"msg\": \"Provided tickmap is different than expected\"\n },\n {\n \"code\": 6028,\n \"name\": \"InvalidTickmapOwner\",\n \"msg\": \"Provided tickmap owner is different than program ID\"\n },\n {\n \"code\": 6029,\n \"name\": \"InvalidListOwner\",\n \"msg\": \"Recipient list address and owner list address should be different\"\n },\n {\n \"code\": 6030,\n \"name\": \"InvalidTickSpacing\",\n \"msg\": \"Invalid tick spacing\"\n }\n ]\n};\n\n// src/network.ts\nvar Network = /* @__PURE__ */ ((Network3) => {\n Network3[Network3[\"LOCAL\"] = 0] = \"LOCAL\";\n Network3[Network3[\"DEV\"] = 1] = \"DEV\";\n Network3[Network3[\"MAIN\"] = 2] = \"MAIN\";\n return Network3;\n})(Network || {});\nvar getMarketAddress = (network) => {\n switch (network) {\n case 0 /* LOCAL */:\n return \"HyaB3W9q6XdA5xwpU4XnSZV94htfmbmqJXZcEbRaJutt\";\n case 1 /* DEV */:\n return \"9aiirQKPZ2peE9QrXYmsbTtR7wSDJi2HkQdHuaMpTpei\";\n case 2 /* MAIN */:\n return \"HyaB3W9q6XdA5xwpU4XnSZV94htfmbmqJXZcEbRaJutt\";\n default:\n throw new Error(\"Unknown network\");\n }\n};\nvar MOCK_TOKENS = {\n USDC: \"5ihkgQGjKvWvmMtywTgLdwokZ6hqFv5AgxSyYoCNufQW\",\n USDT: \"4cZv7KgYNgmr3NZSDhT5bhXGGttXKTndqyXeeC1cB6Xm\",\n SOL: \"BJVjNqQzM1fywLWzzKbQEZ2Jsx9AVyhSLWzko3yF68PH\",\n MSOL: \"4r8WDEvBntEr3dT69p7ua1rsaWcpTSHnKpY5JugDkcPQ\",\n WSOL: \"So11111111111111111111111111111111111111112\",\n BTC: \"4gGKgUYvGkCT62Cu1zfPspuR7VPNPYrigXFmF9KTPji8\",\n REN_DOGE: \"ArjgPxuQgaGXU16XSdBPDsCit7nxjAKR5Gvtvb2oFZUZ\",\n USDH: \"41dDByBv1Z6mCHCp4FJeZNP8MPiviUpFz2AdzJYRszzv\",\n HBB: \"EBuKgNDiUonDYML2CZXCRQKnE982hnt6AhaxXVZZoCyo\"\n};\n\n// src/market.ts\nimport { bs58 } from \"@project-serum/anchor/dist/cjs/utils/bytes\";\nvar POSITION_SEED = \"positionv1\";\nvar TICK_SEED = \"tickv1\";\nvar POSITION_LIST_SEED = \"positionlistv1\";\nvar STATE_SEED = \"statev1\";\nvar TICK_CROSSES_PER_IX = 19;\nvar FEE_TIER = \"feetierv1\";\nvar DEFAULT_PUBLIC_KEY = new PublicKey2(0);\nvar Market2 = class {\n constructor(network, wallet, connection, programId) {\n this.stateAddress = PublicKey2.default;\n this.programAuthority = PublicKey2.default;\n this.connection = connection;\n this.wallet = wallet;\n const programAddress = new PublicKey2(getMarketAddress(network));\n const provider = new AnchorProvider2(connection, wallet, AnchorProvider2.defaultOptions());\n this.network = network;\n this.program = new Program(IDL, programAddress, provider);\n }\n static async build(network, wallet, connection, programId) {\n const instance = new Market2(network, wallet, connection, programId);\n instance.stateAddress = (await instance.getStateAddress()).address;\n instance.programAuthority = (await instance.getProgramAuthority()).programAuthority;\n return instance;\n }\n async createPool(createPool) {\n const { transaction, signers } = await this.createPoolTx(createPool);\n await signAndSend(transaction, [createPool.payer, ...signers], this.connection);\n }\n async createPoolTx({ pair, payer, initTick }) {\n const payerPubkey = (payer == null ? void 0 : payer.publicKey) ?? this.wallet.publicKey;\n const bitmapKeypair = Keypair2.generate();\n const tokenXReserve = Keypair2.generate();\n const tokenYReserve = Keypair2.generate();\n const tick = initTick ?? 0;\n const { address: stateAddress } = await this.getStateAddress();\n const [poolAddress] = await pair.getAddressAndBump(this.program.programId);\n const { address: feeTierAddress } = await this.getFeeTierAddress(pair.feeTier);\n const createIx = this.program.instruction.createPool(tick, {\n accounts: {\n state: stateAddress,\n pool: poolAddress,\n feeTier: feeTierAddress,\n tickmap: bitmapKeypair.publicKey,\n tokenX: pair.tokenX,\n tokenY: pair.tokenY,\n tokenXReserve: tokenXReserve.publicKey,\n tokenYReserve: tokenYReserve.publicKey,\n authority: this.programAuthority,\n tokenProgram: TOKEN_PROGRAM_ID,\n payer: payerPubkey,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId\n }\n });\n const transaction = new Transaction2({\n feePayer: payerPubkey\n }).add(\n SystemProgram.createAccount({\n fromPubkey: payerPubkey,\n newAccountPubkey: bitmapKeypair.publicKey,\n space: this.program.account.tickmap.size,\n lamports: await this.connection.getMinimumBalanceForRentExemption(\n this.program.account.tickmap.size\n ),\n programId: this.program.programId\n })\n ).add(createIx);\n return {\n transaction,\n signers: [bitmapKeypair, tokenXReserve, tokenYReserve]\n };\n }\n async getProgramAuthority() {\n const [programAuthority, nonce] = await PublicKey2.findProgramAddress(\n [Buffer.from(SEED)],\n this.program.programId\n );\n return {\n programAuthority,\n nonce\n };\n }\n async getFeeTier(feeTier) {\n const { address } = await this.getFeeTierAddress(feeTier);\n return await this.program.account.feeTier.fetch(address);\n }\n async getPool(pair) {\n const address = await pair.getAddress(this.program.programId);\n return await this.program.account.pool.fetch(address);\n }\n async getPoolByAddress(address) {\n return await this.program.account.pool.fetch(address);\n }\n async onPoolChange(tokenX, tokenY, feeTier, fn) {\n const poolAddress = await new Pair(tokenX, tokenY, feeTier).getAddress(this.program.programId);\n this.program.account.pool.subscribe(poolAddress, \"singleGossip\").on(\"change\", (poolStructure) => {\n fn(poolStructure);\n });\n }\n async onTickChange(pair, index, fn) {\n const { tickAddress } = await this.getTickAddress(pair, index);\n this.program.account.tick.subscribe(tickAddress, \"singleGossip\").on(\"change\", (poolStructure) => {\n fn(poolStructure);\n });\n }\n async unsubscribeTick(pair, index) {\n const { tickAddress } = await this.getTickAddress(pair, index);\n return await this.program.account.tick.unsubscribe(tickAddress);\n }\n async onTickmapChange(tickmap, fn) {\n this.program.account.tickmap.subscribe(tickmap, \"singleGossip\").on(\"change\", (tickmapStructure) => {\n fn(tickmapStructure);\n });\n }\n async getFeeTierAddress(feeTier) {\n return await getFeeTierAddress(feeTier, this.program.programId);\n }\n async getTickmap(pair) {\n const state = await this.getPool(pair);\n const tickmap = await this.program.account.tickmap.fetch(state.tickmap);\n return tickmap;\n }\n async isInitialized(pair, index) {\n const state = await this.getPool(pair);\n const tickmap = await this.getTickmap(pair);\n return isInitialized(tickmap, index, state.tickSpacing);\n }\n async getTick(pair, index) {\n const { tickAddress } = await this.getTickAddress(pair, index);\n return await this.program.account.tick.fetch(tickAddress);\n }\n async getTickByPool(poolAddress, index) {\n const { tickAddress } = await this.getTickAddressByPool(poolAddress, index);\n return await this.program.account.tick.fetch(tickAddress);\n }\n async getClosestTicks(pair, limit, maxRange, oneWay) {\n const state = await this.getPool(pair);\n const tickmap = await this.getTickmap(pair);\n const indexes = findClosestTicks(\n tickmap.bitmap,\n state.currentTickIndex,\n state.tickSpacing,\n limit,\n maxRange,\n oneWay\n );\n const ticksArray = (await Promise.all(indexes.map((index) => this.getTickAddress(pair, index)))).map((a) => a.tickAddress);\n return await this.program.account.tick.fetchMultiple(ticksArray);\n }\n async getAllTicks(pair) {\n const poolPublicKey = await pair.getAddress(this.program.programId);\n return (await this.program.account.tick.all([\n {\n memcmp: { bytes: bs58.encode(poolPublicKey.toBuffer()), offset: 8 }\n }\n ])).map((a) => a.account);\n }\n async getAllPoolLiquidityInTokens(poolAddress) {\n return (await this.program.account.position.all()).map(({ account }) => account).filter((account) => account.pool.equals(poolAddress)).reduce(\n (tokens, { liquidity, lowerTickIndex, upperTickIndex }) => tokens.add(getTokens(liquidity.v, lowerTickIndex, upperTickIndex)),\n new BN4(0)\n );\n }\n async getActiveLiquidityInTokens(poolAddress, currentTickIndex) {\n return (await this.program.account.position.all()).map(({ account }) => account).filter((account) => account.pool.equals(poolAddress)).filter((account) => isActive(account.lowerTickIndex, account.upperTickIndex, currentTickIndex)).reduce(\n (tokens, { liquidity, lowerTickIndex, upperTickIndex }) => tokens.add(getTokens(liquidity.v, lowerTickIndex, upperTickIndex)),\n new BN4(0)\n );\n }\n async getAllPositions(owner) {\n return (await this.program.account.position.all()).map(({ account }) => account);\n }\n async getAllUserPositions(owner) {\n const positionStructs = [];\n const positions = (await this.program.account.position.all([\n {\n memcmp: { bytes: bs58.encode(owner.toBuffer()), offset: 8 }\n }\n ])).map(({ account }) => account);\n for (const position of positions) {\n const {\n pool: poolAddress,\n lowerTickIndex,\n upperTickIndex,\n tokensOwedX,\n tokensOwedY,\n liquidity,\n feeGrowthInsideX,\n feeGrowthInsideY\n } = position;\n const {\n fee,\n tickSpacing,\n tokenX,\n tokenY,\n currentTickIndex,\n feeGrowthGlobalX,\n feeGrowthGlobalY\n } = await this.getPoolByAddress(poolAddress);\n const tokenData = await getTokensData();\n const dataTokenX = tokenData[tokenX.toString()];\n const dataTokenY = tokenData[tokenY.toString()];\n const decimalDiff = dataTokenX.decimals - dataTokenY.decimals;\n const currentSqrtPrice = calculatePriceSqrt(currentTickIndex);\n const lowerSqrtPrice = calculatePriceSqrt(lowerTickIndex);\n const upperSqrtPrice = calculatePriceSqrt(upperTickIndex);\n const lowerPrice = getPrice(lowerSqrtPrice, decimalDiff);\n const upperPrice = getPrice(upperSqrtPrice, decimalDiff);\n const feeTier = { fee: fee.v, tickSpacing };\n const amountTokenX = getX(\n liquidity.v,\n upperSqrtPrice.v,\n currentSqrtPrice.v,\n lowerSqrtPrice.v\n );\n const amountTokenY = getY(\n liquidity.v,\n upperSqrtPrice.v,\n currentSqrtPrice.v,\n lowerSqrtPrice.v\n );\n const positionData = {\n liquidity,\n feeGrowthInsideX,\n feeGrowthInsideY,\n tokensOwedX,\n tokensOwedY\n };\n const claim = {\n position: positionData,\n tickLower: await this.getTickByPool(poolAddress, lowerTickIndex),\n tickUpper: await this.getTickByPool(poolAddress, upperTickIndex),\n tickCurrent: currentTickIndex,\n feeGrowthGlobalX,\n feeGrowthGlobalY\n };\n const [unclaimedFeesX, unclaimedFeesY] = calculateClaimAmount(claim);\n const positionStruct = {\n tokenX,\n tokenY,\n feeTier,\n amountTokenX,\n amountTokenY,\n lowerPrice,\n upperPrice,\n unclaimedFeesX,\n unclaimedFeesY\n };\n positionStructs.push(positionStruct);\n }\n return positionStructs;\n }\n async getLiquidityOnTicks(pair) {\n const ticks = await this.getClosestTicks(pair, Infinity);\n return parseLiquidityOnTicks(ticks);\n }\n async getPositionList(owner) {\n const { positionListAddress } = await this.getPositionListAddress(owner);\n return await this.program.account.positionList.fetch(positionListAddress);\n }\n async getPosition(owner, index) {\n const { positionAddress } = await this.getPositionAddress(owner, index);\n return await this.program.account.position.fetch(positionAddress);\n }\n async getPositionsFromIndexes(owner, indexes) {\n const positionPromises = indexes.map(async (i) => {\n return await this.getPosition(owner, i);\n });\n return await Promise.all(positionPromises);\n }\n async getPositionsFromRange(owner, lowerIndex, upperIndex) {\n try {\n await this.getPositionList(owner);\n return await this.getPositionsFromIndexes(\n owner,\n Array.from({ length: upperIndex - lowerIndex + 1 }, (_, i) => i + lowerIndex)\n );\n } catch (e) {\n return [];\n }\n }\n async getTickAddress(pair, index) {\n const poolAddress = await pair.getAddress(this.program.programId);\n const indexBuffer = Buffer.alloc(4);\n indexBuffer.writeInt32LE(index);\n const [tickAddress, tickBump] = await PublicKey2.findProgramAddress(\n [Buffer.from(utils2.bytes.utf8.encode(TICK_SEED)), poolAddress.toBuffer(), indexBuffer],\n this.program.programId\n );\n return {\n tickAddress,\n tickBump\n };\n }\n async getTickAddressByPool(poolAddress, index) {\n const indexBuffer = Buffer.alloc(4);\n indexBuffer.writeInt32LE(index);\n const [tickAddress, tickBump] = await PublicKey2.findProgramAddress(\n [Buffer.from(utils2.bytes.utf8.encode(TICK_SEED)), poolAddress.toBuffer(), indexBuffer],\n this.program.programId\n );\n return {\n tickAddress,\n tickBump\n };\n }\n async getPositionListAddress(owner) {\n const [positionListAddress, positionListBump] = await PublicKey2.findProgramAddress(\n [Buffer.from(utils2.bytes.utf8.encode(POSITION_LIST_SEED)), owner.toBuffer()],\n this.program.programId\n );\n return {\n positionListAddress,\n positionListBump\n };\n }\n async getPositionAddress(owner, index) {\n const indexBuffer = Buffer.alloc(4);\n indexBuffer.writeInt32LE(index);\n const [positionAddress, positionBump] = await PublicKey2.findProgramAddress(\n [Buffer.from(utils2.bytes.utf8.encode(POSITION_SEED)), owner.toBuffer(), indexBuffer],\n this.program.programId\n );\n return {\n positionAddress,\n positionBump\n };\n }\n async getNewPositionAddress(owner) {\n const positionList = await this.getPositionList(owner);\n return await this.getPositionAddress(owner, positionList.head);\n }\n async getPositionsForPool(pool) {\n return (await this.program.account.position.all([\n {\n memcmp: { bytes: bs58.encode(pool.toBuffer()), offset: 40 }\n }\n ])).map(({ account, publicKey }) => ({\n ...account,\n address: publicKey\n }));\n }\n async createFeeTierInstruction({ feeTier, admin }) {\n admin = admin ?? this.wallet.publicKey;\n const { fee, tickSpacing } = feeTier;\n const { address } = await this.getFeeTierAddress(feeTier);\n const ts = tickSpacing ?? feeToTickSpacing(fee);\n return this.program.instruction.createFeeTier(fee, ts, {\n accounts: {\n state: this.stateAddress,\n feeTier: address,\n admin,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId\n }\n });\n }\n async createFeeTierTransaction(createFeeTier) {\n const ix = await this.createFeeTierInstruction(createFeeTier);\n return new Transaction2().add(ix);\n }\n async createFeeTier(createFeeTier, signer) {\n const tx = await this.createFeeTierTransaction(createFeeTier);\n await signAndSend(tx, [signer], this.connection);\n }\n async createStateInstruction(admin) {\n admin = admin ?? this.wallet.publicKey;\n const { programAuthority, nonce } = await this.getProgramAuthority();\n const { address } = await this.getStateAddress();\n return this.program.instruction.createState(nonce, {\n accounts: {\n state: address,\n admin,\n programAuthority,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId\n }\n });\n }\n async createStateTransaction(admin) {\n const ix = await this.createStateInstruction(admin);\n return new Transaction2().add(ix);\n }\n async createState(admin, signer) {\n const tx = await this.createStateTransaction(admin);\n await signAndSend(tx, [signer], this.connection);\n }\n async getStateAddress() {\n const [address, bump] = await PublicKey2.findProgramAddress(\n [Buffer.from(utils2.bytes.utf8.encode(STATE_SEED))],\n this.program.programId\n );\n return {\n address,\n bump\n };\n }\n async getState() {\n const address = (await this.getStateAddress()).address;\n return await this.program.account.state.fetch(address);\n }\n async createTickInstruction({ pair, index, payer }) {\n payer = payer ?? this.wallet.publicKey;\n const state = await this.getPool(pair);\n const { tickAddress } = await this.getTickAddress(pair, index);\n return this.program.instruction.createTick(index, {\n accounts: {\n tick: tickAddress,\n pool: await pair.getAddress(this.program.programId),\n tickmap: state.tickmap,\n payer,\n tokenX: state.tokenX,\n tokenY: state.tokenY,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId\n }\n });\n }\n async createTickTransaction(createTick) {\n const ix = await this.createTickInstruction(createTick);\n return new Transaction2().add(ix);\n }\n async createTick(createTick, signer) {\n const tx = await this.createTickTransaction(createTick);\n await signAndSend(tx, [signer], this.connection);\n }\n async createPositionListInstruction(owner) {\n owner = owner ?? this.wallet.publicKey;\n const { positionListAddress } = await this.getPositionListAddress(owner);\n return this.program.instruction.createPositionList({\n accounts: {\n positionList: positionListAddress,\n owner,\n signer: owner,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId\n }\n });\n }\n async createPositionListTransaction(owner) {\n const ix = await this.createPositionListInstruction(owner);\n return new Transaction2().add(ix);\n }\n async createPositionList(owner, signer) {\n const tx = await this.createPositionListTransaction(owner);\n await signAndSend(tx, [signer], this.connection);\n }\n async initPositionInstruction({\n pair,\n owner,\n userTokenX,\n userTokenY,\n lowerTick,\n upperTick,\n liquidityDelta,\n knownPrice,\n slippage\n }, assumeFirstPosition = false) {\n const state = await this.getPool(pair);\n owner = owner ?? this.wallet.publicKey;\n const slippageLimitLower = calculatePriceAfterSlippage(knownPrice, slippage, false);\n const slippageLimitUpper = calculatePriceAfterSlippage(knownPrice, slippage, true);\n const upperTickIndex = upperTick !== Infinity ? upperTick : getMaxTick(pair.tickSpacing);\n const lowerTickIndex = lowerTick !== -Infinity ? lowerTick : getMinTick(pair.tickSpacing);\n const { tickAddress: lowerTickAddress } = await this.getTickAddress(pair, lowerTickIndex);\n const { tickAddress: upperTickAddress } = await this.getTickAddress(pair, upperTickIndex);\n const { positionAddress } = await this.getPositionAddress(\n owner,\n assumeFirstPosition ? 0 : (await this.getPositionList(owner)).head\n );\n const { positionListAddress } = await this.getPositionListAddress(owner);\n const poolAddress = await pair.getAddress(this.program.programId);\n return this.program.instruction.createPosition(\n lowerTickIndex,\n upperTickIndex,\n liquidityDelta,\n slippageLimitLower,\n slippageLimitUpper,\n {\n accounts: {\n state: this.stateAddress,\n pool: poolAddress,\n positionList: positionListAddress,\n position: positionAddress,\n tickmap: state.tickmap,\n owner,\n payer: owner,\n lowerTick: lowerTickAddress,\n upperTick: upperTickAddress,\n tokenX: pair.tokenX,\n tokenY: pair.tokenY,\n accountX: userTokenX,\n accountY: userTokenY,\n reserveX: state.tokenXReserve,\n reserveY: state.tokenYReserve,\n programAuthority: this.programAuthority,\n tokenProgram: TOKEN_PROGRAM_ID,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId\n }\n }\n );\n }\n async initPositionTx(initPosition) {\n const { pair, lowerTick: lowerIndex, upperTick: upperIndex } = initPosition;\n const payer = initPosition.owner ?? this.wallet.publicKey;\n const lowerTick = lowerIndex === -Infinity ? getMinTick(pair.tickSpacing) : lowerIndex;\n const upperTick = upperIndex === Infinity ? getMaxTick(pair.tickSpacing) : upperIndex;\n let lowerInstruction;\n let upperInstruction;\n let listInstruction;\n let positionInstruction;\n const tx = new Transaction2();\n let lowerExists = true;\n try {\n await this.getTick(pair, lowerTick);\n } catch (e) {\n lowerExists = false;\n lowerInstruction = await this.createTickInstruction({ pair, index: lowerTick, payer });\n }\n let upperExists = true;\n try {\n await this.getTick(pair, upperTick);\n } catch (e) {\n upperExists = false;\n upperInstruction = await this.createTickInstruction({ pair, index: upperTick, payer });\n }\n const { positionListAddress } = await this.getPositionListAddress(payer);\n const account = await this.connection.getAccountInfo(positionListAddress);\n let listExists = true;\n if (account === null) {\n listExists = false;\n listInstruction = await this.createPositionListInstruction(payer);\n positionInstruction = await this.initPositionInstruction(initPosition, true);\n } else {\n positionInstruction = await this.initPositionInstruction(initPosition, false);\n }\n if (!lowerExists && lowerInstruction) {\n tx.add(lowerInstruction);\n }\n if (!upperExists && upperInstruction) {\n tx.add(upperInstruction);\n }\n if (!listExists && listInstruction) {\n tx.add(listInstruction);\n }\n return tx.add(positionInstruction);\n }\n async initPosition(initPosition, signer) {\n const tx = await this.initPositionTx(initPosition);\n await signAndSend(tx, [signer], this.connection);\n }\n async initPoolAndPositionTx({\n pair,\n owner,\n userTokenX,\n userTokenY,\n lowerTick,\n upperTick,\n liquidityDelta,\n initTick,\n knownPrice,\n slippage\n }, payer) {\n const payerPubkey = (payer == null ? void 0 : payer.publicKey) ?? this.wallet.publicKey;\n const bitmapKeypair = Keypair2.generate();\n const tokenXReserve = Keypair2.generate();\n const tokenYReserve = Keypair2.generate();\n const tick = initTick ?? 0;\n const setCuIx = computeUnitsInstruction(14e5, payerPubkey);\n const { address: stateAddress } = await this.getStateAddress();\n const [poolAddress] = await pair.getAddressAndBump(this.program.programId);\n const { address: feeTierAddress } = await this.getFeeTierAddress(pair.feeTier);\n const { positionListAddress } = await this.getPositionListAddress(payerPubkey);\n const { tickAddress } = await this.getTickAddress(pair, lowerTick);\n const { tickAddress: tickAddressUpper } = await this.getTickAddress(pair, upperTick);\n const listExists = await this.connection.getAccountInfo(positionListAddress) !== null;\n const head = listExists ? (await this.getPositionList(payerPubkey)).head : 0;\n const { positionAddress } = await this.getPositionAddress(payerPubkey, head);\n const transaction = new Transaction2({\n feePayer: payerPubkey\n });\n transaction.add(setCuIx).add(\n SystemProgram.createAccount({\n fromPubkey: payerPubkey,\n newAccountPubkey: bitmapKeypair.publicKey,\n space: this.program.account.tickmap.size,\n lamports: await this.connection.getMinimumBalanceForRentExemption(\n this.program.account.tickmap.size\n ),\n programId: this.program.programId\n })\n ).add(\n this.program.instruction.createPool(tick, {\n accounts: {\n state: stateAddress,\n pool: poolAddress,\n feeTier: feeTierAddress,\n tickmap: bitmapKeypair.publicKey,\n tokenX: pair.tokenX,\n tokenY: pair.tokenY,\n tokenXReserve: tokenXReserve.publicKey,\n tokenYReserve: tokenYReserve.publicKey,\n authority: this.programAuthority,\n tokenProgram: TOKEN_PROGRAM_ID,\n payer: payerPubkey,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId\n }\n })\n ).add(\n this.program.instruction.createTick(lowerTick, {\n accounts: {\n tick: tickAddress,\n pool: poolAddress,\n tickmap: bitmapKeypair.publicKey,\n payer: payerPubkey,\n tokenX: pair.tokenX,\n tokenY: pair.tokenY,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId\n }\n })\n ).add(\n this.program.instruction.createTick(upperTick, {\n accounts: {\n tick: tickAddressUpper,\n pool: poolAddress,\n tickmap: bitmapKeypair.publicKey,\n payer: payerPubkey,\n tokenX: pair.tokenX,\n tokenY: pair.tokenY,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId\n }\n })\n );\n if (!listExists)\n transaction.add(await this.createPositionListInstruction(payerPubkey));\n const slippageLimitLower = calculatePriceAfterSlippage(knownPrice, slippage, false);\n const slippageLimitUpper = calculatePriceAfterSlippage(knownPrice, slippage, true);\n transaction.add(\n this.program.instruction.createPosition(\n lowerTick,\n upperTick,\n liquidityDelta,\n slippageLimitLower,\n slippageLimitUpper,\n {\n accounts: {\n state: this.stateAddress,\n pool: poolAddress,\n positionList: positionListAddress,\n position: positionAddress,\n tickmap: bitmapKeypair.publicKey,\n owner: payerPubkey,\n payer: payerPubkey,\n lowerTick: tickAddress,\n upperTick: tickAddressUpper,\n tokenX: pair.tokenX,\n tokenY: pair.tokenY,\n accountX: userTokenX,\n accountY: userTokenY,\n reserveX: tokenXReserve.publicKey,\n reserveY: tokenYReserve.publicKey,\n programAuthority: this.programAuthority,\n tokenProgram: TOKEN_PROGRAM_ID,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId\n }\n }\n )\n );\n return {\n transaction,\n signers: [bitmapKeypair, tokenXReserve, tokenYReserve]\n };\n }\n async initPoolAndPosition(createPool, signer) {\n const { transaction, signers } = await this.initPoolAndPositionTx(createPool, signer);\n await signAndSend(transaction, [signer, ...signers], this.connection);\n }\n async swapInstruction(swap) {\n const {\n pair,\n xToY,\n amount,\n estimatedPriceAfterSwap,\n slippage,\n accountX,\n accountY,\n byAmountIn,\n referralAccount\n } = swap;\n const owner = swap.owner ?? this.wallet.publicKey;\n const [pool, tickmap, poolAddress] = await Promise.all([\n this.getPool(pair),\n this.getTickmap(pair),\n pair.getAddress(this.program.programId)\n ]);\n const priceLimit = calculatePriceAfterSlippage(estimatedPriceAfterSwap, slippage, !xToY).v;\n const indexesInDirection = findClosestTicks(\n tickmap.bitmap,\n pool.currentTickIndex,\n pool.tickSpacing,\n referralAccount ? TICK_CROSSES_PER_IX - 1 : TICK_CROSSES_PER_IX,\n Infinity,\n xToY ? \"down\" : \"up\"\n );\n const indexesInReverse = findClosestTicks(\n tickmap.bitmap,\n pool.currentTickIndex,\n pool.tickSpacing,\n 1,\n Infinity,\n xToY ? \"up\" : \"down\"\n );\n const remainingAccounts = await Promise.all(\n indexesInDirection.concat(indexesInReverse).map(async (index) => {\n const { tickAddress } = await this.getTickAddress(pair, index);\n return tickAddress;\n })\n );\n if (referralAccount) {\n remainingAccounts.unshift(referralAccount);\n }\n const ra = remainingAccounts.map((pubkey) => {\n return { pubkey, isWritable: true, isSigner: false };\n });\n const tx = new Transaction2();\n const swapIx = this.program.instruction.swap(xToY, amount, byAmountIn, priceLimit, {\n remainingAccounts: ra,\n accounts: {\n state: this.stateAddress,\n pool: poolAddress,\n tickmap: pool.tickmap,\n reserveX: pool.tokenXReserve,\n reserveY: pool.tokenYReserve,\n owner,\n accountX,\n accountY,\n programAuthority: this.programAuthority,\n tokenProgram: TOKEN_PROGRAM_ID\n }\n });\n tx.add(swapIx);\n return tx;\n }\n async swapTransaction(swap) {\n const setCuIx = computeUnitsInstruction(14e5, swap.owner ?? this.wallet.publicKey);\n const swapIx = await this.swapInstruction(swap);\n return new Transaction2().add(setCuIx).add(swapIx);\n }\n async swap(swap, signer) {\n const tx = await this.swapTransaction(swap);\n return await signAndSend(tx, [signer], this.connection);\n }\n async getReserveBalances(pair, tokenX, tokenY) {\n const state = await this.getPool(pair);\n const accounts = await Promise.all([\n tokenX.getAccountInfo(state.tokenXReserve),\n tokenY.getAccountInfo(state.tokenYReserve)\n ]);\n return { x: accounts[0].amount, y: accounts[1].amount };\n }\n async claimFeeInstruction(claimFee) {\n const { pair, userTokenX, userTokenY, index } = claimFee;\n const owner = claimFee.owner ?? this.wallet.publicKey;\n const state = await this.getPool(pair);\n const { positionAddress } = await this.getPositionAddress(owner, index);\n const position = await this.getPosition(owner, index);\n const { tickAddress: lowerTickAddress } = await this.getTickAddress(\n pair,\n position.lowerTickIndex\n );\n const { tickAddress: upperTickAddress } = await this.getTickAddress(\n pair,\n position.upperTickIndex\n );\n return this.program.instruction.claimFee(\n index,\n position.lowerTickIndex,\n position.upperTickIndex,\n {\n accounts: {\n state: this.stateAddress,\n pool: await pair.getAddress(this.program.programId),\n position: positionAddress,\n lowerTick: lowerTickAddress,\n upperTick: upperTickAddress,\n owner,\n tokenX: pair.tokenX,\n tokenY: pair.tokenY,\n accountX: userTokenX,\n accountY: userTokenY,\n reserveX: state.tokenXReserve,\n reserveY: state.tokenYReserve,\n programAuthority: this.programAuthority,\n tokenProgram: TOKEN_PROGRAM_ID\n }\n }\n );\n }\n async claimFeeTransaction(claimFee) {\n const ix = await this.claimFeeInstruction(claimFee);\n return new Transaction2().add(ix);\n }\n async claimFee(claimFee, signer) {\n const tx = await this.claimFeeTransaction(claimFee);\n await signAndSend(tx, [signer], this.connection);\n }\n async withdrawProtocolFeeInstruction(withdrawProtocolFee) {\n const { pair, accountX, accountY } = withdrawProtocolFee;\n const admin = withdrawProtocolFee.admin ?? this.wallet.publicKey;\n const pool = await this.getPool(pair);\n return this.program.instruction.withdrawProtocolFee({\n accounts: {\n state: this.stateAddress,\n pool: await pair.getAddress(this.program.programId),\n tokenX: pool.tokenX,\n tokenY: pool.tokenY,\n reserveX: pool.tokenXReserve,\n reserveY: pool.tokenYReserve,\n accountX,\n accountY,\n authority: admin,\n programAuthority: this.programAuthority,\n tokenProgram: TOKEN_PROGRAM_ID\n }\n });\n }\n async withdrawProtocolFeeTransaction(withdrawProtocolFee) {\n const ix = await this.withdrawProtocolFeeInstruction(withdrawProtocolFee);\n return new Transaction2().add(ix);\n }\n async withdrawProtocolFee(withdrawProtocolFee, signer) {\n const tx = await this.withdrawProtocolFeeTransaction(withdrawProtocolFee);\n await signAndSend(tx, [signer], this.connection);\n }\n async removePositionInstruction(removePosition) {\n const { pair, index, userTokenX, userTokenY } = removePosition;\n const owner = removePosition.owner ?? this.wallet.publicKey;\n const positionList = await this.getPositionList(owner);\n const { positionListAddress } = await this.getPositionListAddress(owner);\n const { positionAddress: removedPositionAddress } = await this.getPositionAddress(owner, index);\n const { positionAddress: lastPositionAddress } = await this.getPositionAddress(\n owner,\n positionList.head - 1\n );\n const state = await this.getPool(pair);\n const position = await this.getPosition(owner, index);\n const { tickAddress: lowerTickAddress } = await this.getTickAddress(\n pair,\n position.lowerTickIndex\n );\n const { tickAddress: upperTickAddress } = await this.getTickAddress(\n pair,\n position.upperTickIndex\n );\n return this.program.instruction.removePosition(\n index,\n position.lowerTickIndex,\n position.upperTickIndex,\n {\n accounts: {\n state: this.stateAddress,\n owner,\n removedPosition: removedPositionAddress,\n positionList: positionListAddress,\n lastPosition: lastPositionAddress,\n pool: await pair.getAddress(this.program.programId),\n tickmap: state.tickmap,\n lowerTick: lowerTickAddress,\n upperTick: upperTickAddress,\n tokenX: pair.tokenX,\n tokenY: pair.tokenY,\n accountX: userTokenX,\n accountY: userTokenY,\n reserveX: state.tokenXReserve,\n reserveY: state.tokenYReserve,\n programAuthority: this.programAuthority,\n tokenProgram: TOKEN_PROGRAM_ID\n }\n }\n );\n }\n async removePositionTransaction(removePosition) {\n const ix = await this.removePositionInstruction(removePosition);\n return new Transaction2().add(ix);\n }\n async removePosition(removePosition, signer) {\n const tx = await this.removePositionTransaction(removePosition);\n await signAndSend(tx, [signer], this.connection);\n }\n async transferPositionOwnershipInstruction(transferPositionOwnership) {\n const { index } = transferPositionOwnership;\n const owner = transferPositionOwnership.owner ?? this.wallet.publicKey;\n const recipient = transferPositionOwnership.recipient ?? this.wallet.publicKey;\n const { positionListAddress: ownerList } = await this.getPositionListAddress(owner);\n const { positionListAddress: recipientList } = await this.getPositionListAddress(recipient);\n const ownerPositionList = await this.getPositionList(owner);\n const { positionAddress: removedPosition } = await this.getPositionAddress(owner, index);\n const { positionAddress: lastPosition } = await this.getPositionAddress(\n owner,\n ownerPositionList.head - 1\n );\n const { positionAddress: newPosition } = await this.getNewPositionAddress(recipient);\n return this.program.instruction.transferPositionOwnership(index, {\n accounts: {\n owner,\n recipient,\n ownerList,\n recipientList,\n lastPosition,\n removedPosition,\n newPosition,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId\n }\n });\n }\n async transferPositionOwnershipTransaction(transferPositionOwnership) {\n const ix = await this.transferPositionOwnershipInstruction(transferPositionOwnership);\n return new Transaction2().add(ix);\n }\n async transferPositionOwnership(transferPositionOwnership, signer) {\n const tx = await this.transferPositionOwnershipTransaction(transferPositionOwnership);\n await signAndSend(tx, [signer], this.connection);\n }\n async updateSecondsPerLiquidityInstruction(updateSecondsPerLiquidity) {\n const { pair, signer, lowerTickIndex, upperTickIndex, index } = updateSecondsPerLiquidity;\n const owner = updateSecondsPerLiquidity.owner ?? this.wallet.publicKey;\n const { tickAddress: lowerTickAddress } = await this.getTickAddress(pair, lowerTickIndex);\n const { tickAddress: upperTickAddress } = await this.getTickAddress(pair, upperTickIndex);\n const poolAddress = await pair.getAddress(this.program.programId);\n const { positionAddress } = await this.getPositionAddress(owner, index);\n return this.program.instruction.updateSecondsPerLiquidity(\n lowerTickIndex,\n upperTickIndex,\n index,\n {\n accounts: {\n pool: poolAddress,\n lowerTick: lowerTickAddress,\n upperTick: upperTickAddress,\n position: positionAddress,\n tokenX: pair.tokenX,\n tokenY: pair.tokenY,\n owner,\n signer: signer ?? owner,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId\n }\n }\n );\n }\n async updateSecondsPerLiquidityTransaction(updateSecondsPerLiquidity) {\n const ix = await this.updateSecondsPerLiquidityInstruction(updateSecondsPerLiquidity);\n return new Transaction2().add(ix);\n }\n async updateSecondsPerLiquidity(updateSecondsPerLiquidity, signer) {\n const tx = await this.updateSecondsPerLiquidityTransaction(updateSecondsPerLiquidity);\n await signAndSend(tx, [signer], this.connection);\n }\n async initializeOracle({ pair, payer }) {\n const oracleKeypair = Keypair2.generate();\n const poolAddress = await pair.getAddress(this.program.programId);\n return await this.program.rpc.initializeOracle({\n accounts: {\n pool: poolAddress,\n oracle: oracleKeypair.publicKey,\n tokenX: pair.tokenX,\n tokenY: pair.tokenY,\n payer: payer.publicKey,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId\n },\n signers: [payer, oracleKeypair],\n instructions: [await this.program.account.oracle.createInstruction(oracleKeypair)]\n });\n }\n async getOracle(pair) {\n const pool = await this.getPool(pair);\n return await this.program.account.oracle.fetch(pool.oracleAddress);\n }\n async changeProtocolFeeInstruction(changeProtocolFee) {\n let { pair, admin, protocolFee } = changeProtocolFee;\n admin = admin ?? this.wallet.publicKey;\n const { address: stateAddress } = await this.getStateAddress();\n const poolAddress = await pair.getAddress(this.program.programId);\n return this.program.instruction.changeProtocolFee(protocolFee, {\n accounts: {\n state: stateAddress,\n pool: poolAddress,\n tokenX: pair.tokenX,\n tokenY: pair.tokenY,\n admin,\n programAuthority: this.programAuthority\n }\n });\n }\n async changeProtocolFeeTransaction(changeProtocolFee) {\n const ix = await this.changeProtocolFeeInstruction(changeProtocolFee);\n return new Transaction2().add(ix);\n }\n async changeProtocolFee(changeProtocolFee, signer) {\n const tx = await this.changeProtocolFeeTransaction(changeProtocolFee);\n await signAndSend(tx, [signer], this.connection);\n }\n async changeFeeReceiverInstruction(changeFeeReceiver) {\n const { pair, feeReceiver } = changeFeeReceiver;\n const adminPubkey = changeFeeReceiver.admin ?? this.wallet.publicKey;\n const { address: stateAddress } = await this.getStateAddress();\n const poolAddress = await pair.getAddress(this.program.programId);\n return this.program.instruction.changeFeeReceiver({\n accounts: {\n state: stateAddress,\n pool: poolAddress,\n tokenX: pair.tokenX,\n tokenY: pair.tokenY,\n admin: adminPubkey,\n feeReceiver\n }\n });\n }\n async changeFeeReceiverTransaction(changeFeeReceiver) {\n const ix = await this.changeFeeReceiverInstruction(changeFeeReceiver);\n return new Transaction2().add(ix);\n }\n async changeFeeReceiver(changeFeeReceiver, signer) {\n const tx = await this.changeFeeReceiverTransaction(changeFeeReceiver);\n await signAndSend(tx, [signer], this.connection);\n }\n async getWholeLiquidity(pair) {\n const poolPublicKey = await pair.getAddress(this.program.programId);\n const positions = (await this.program.account.position.all([\n {\n memcmp: { bytes: bs58.encode(poolPublicKey.toBuffer()), offset: 40 }\n }\n ])).map((a) => a.account);\n let liquidity = new BN4(0);\n for (const position of positions) {\n liquidity = liquidity.add(position.liquidity.v);\n }\n return liquidity;\n }\n async getGlobalFee(pair) {\n const pool = await this.getPool(pair);\n const { feeProtocolTokenX, feeProtocolTokenY, protocolFee } = pool;\n const feeX = feeProtocolTokenX.mul(DENOMINATOR).div(protocolFee.v);\n const feeY = feeProtocolTokenY.mul(DENOMINATOR).div(protocolFee.v);\n return { feeX, feeY };\n }\n async getVolume(pair) {\n const pool = await this.getPool(pair);\n const { feeProtocolTokenX, feeProtocolTokenY, protocolFee, fee } = pool;\n const feeDenominator = protocolFee.v.mul(fee.v).div(DENOMINATOR);\n const volumeX = feeProtocolTokenX.mul(DENOMINATOR).div(feeDenominator);\n const volumeY = feeProtocolTokenY.mul(DENOMINATOR).div(feeDenominator);\n return { volumeX, volumeY };\n }\n async getAllPools() {\n return (await this.program.account.pool.all([])).map(\n ({ account }) => account\n );\n }\n async getPairLiquidityValues(pair) {\n const pool = await this.getPool(pair);\n const poolPublicKey = await pair.getAddress(this.program.programId);\n const positions = (await this.program.account.position.all([\n {\n memcmp: { bytes: bs58.encode(poolPublicKey.toBuffer()), offset: 40 }\n }\n ])).map(({ account }) => account);\n let liquidityX = new BN4(0);\n let liquidityY = new BN4(0);\n for (const position of positions) {\n let xVal, yVal;\n try {\n xVal = getX(\n position.liquidity.v,\n calculatePriceSqrt(position.upperTickIndex).v,\n pool.sqrtPrice.v,\n calculatePriceSqrt(position.lowerTickIndex).v\n );\n } catch (error) {\n xVal = new BN4(0);\n }\n try {\n yVal = getY(\n position.liquidity.v,\n calculatePriceSqrt(position.upperTickIndex).v,\n pool.sqrtPrice.v,\n calculatePriceSqrt(position.lowerTickIndex).v\n );\n } catch (error) {\n yVal = new BN4(0);\n }\n liquidityX = liquidityX.add(xVal);\n liquidityY = liquidityY.add(yVal);\n }\n return { liquidityX, liquidityY };\n }\n};\n\n// src/pair.ts\nimport { PublicKey as PublicKey3 } from \"@solana/web3.js\";\nimport { utils as utils3, BN as BN5 } from \"@project-serum/anchor\";\nvar POOL_SEED = \"poolv1\";\nvar Pair = class {\n constructor(first, second, feeTier) {\n if (first.equals(second)) {\n throw new Error(\"Pair must contain two unique public keys\");\n }\n if (first.toString() < second.toString()) {\n this.tokenX = first;\n this.tokenY = second;\n } else {\n this.tokenX = second;\n this.tokenY = first;\n }\n this.tickSpacing = feeTier.tickSpacing ?? feeToTickSpacing(feeTier.fee);\n this.feeTier = {\n fee: feeTier.fee,\n tickSpacing: this.tickSpacing\n };\n this.feeTierAddress = null;\n if (this.feeTier.tickSpacing == null) {\n this.feeTier.tickSpacing = feeToTickSpacing(this.feeTier.fee);\n }\n }\n async getAddressAndBump(programId) {\n return await PublicKey3.findProgramAddress(\n [\n Buffer.from(utils3.bytes.utf8.encode(POOL_SEED)),\n this.tokenX.toBuffer(),\n this.tokenY.toBuffer(),\n bigNumberToBuffer(this.feeTier.fee, 128),\n bigNumberToBuffer(new BN5(this.feeTier.tickSpacing), 16)\n ],\n programId\n );\n }\n async getAddress(programId) {\n return await this.getAddressAndBump(programId).then(([address, _]) => address);\n }\n async getFeeTierAddress(programId) {\n if (this.feeTierAddress == null) {\n const { address: feeTierAddress } = await getFeeTierAddress(this.feeTier, programId);\n this.feeTierAddress = feeTierAddress;\n }\n return this.feeTierAddress;\n }\n};\nexport {\n DENOMINATOR,\n FEE_TIER,\n IDL,\n INVARIANT_ERRORS,\n LIQUIDITY_DENOMINATOR,\n MAX_TICK,\n MIN_TICK,\n MOCK_TOKENS,\n Market2 as Market,\n Network,\n PRICE_DENOMINATOR,\n Pair,\n SEED,\n TICK_CROSSES_PER_IX,\n TICK_LIMIT,\n TICK_SEARCH_RANGE,\n calculatePriceSqrt,\n computeUnitsInstruction,\n findClosestTicks,\n findTickmapChanges,\n fromInteger,\n getMarketAddress,\n signAndSend,\n simulateSwap,\n sleep,\n toDecimal\n};\n//# sourceMappingURL=index.mjs.map","var M=Math.pow;var A=(i,n,e)=>new Promise((o,c)=>{var u=m=>{try{a(e.next(m))}catch(r){c(r)}},t=m=>{try{a(e.throw(m))}catch(r){c(r)}},a=m=>m.done?o(m.value):Promise.resolve(m.value).then(u,t);a((e=e.apply(i,n)).next())});import{Program as X,AnchorProvider as E}from\"@project-serum/anchor\";import{Keypair as $,PublicKey as I}from\"@solana/web3.js\";import T from\"decimal.js\";var z={version:\"0.1.1\",name:\"lifinity_amm_v2\",instructions:[{name:\"initialize\",accounts:[{name:\"authority\",isMut:!1,isSigner:!1},{name:\"amm\",isMut:!0,isSigner:!0},{name:\"poolMint\",isMut:!0,isSigner:!1},{name:\"tokenA\",isMut:!0,isSigner:!1},{name:\"tokenB\",isMut:!0,isSigner:!1},{name:\"feeAccount\",isMut:!0,isSigner:!1},{name:\"destination\",isMut:!0,isSigner:!1},{name:\"oracleMainAccount\",isMut:!1,isSigner:!1},{name:\"oracleSubAccount\",isMut:!1,isSigner:!1},{name:\"oraclePcAccount\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[{name:\"baseDecimals\",type:\"u8\"},{name:\"ammFees\",type:{defined:\"AmmFees\"}},{name:\"ammCurve\",type:{defined:\"AmmCurve\"}},{name:\"ammConfig\",type:{defined:\"AmmConfig\"}}]},{name:\"swap\",accounts:[{name:\"authority\",isMut:!1,isSigner:!1},{name:\"amm\",isMut:!0,isSigner:!1},{name:\"userTransferAuthority\",isMut:!1,isSigner:!0},{name:\"sourceInfo\",isMut:!0,isSigner:!1},{name:\"destinationInfo\",isMut:!0,isSigner:!1},{name:\"swapSource\",isMut:!0,isSigner:!1},{name:\"swapDestination\",isMut:!0,isSigner:!1},{name:\"poolMint\",isMut:!0,isSigner:!1},{name:\"feeAccount\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"oracleMainAccount\",isMut:!1,isSigner:!1},{name:\"oracleSubAccount\",isMut:!1,isSigner:!1},{name:\"oraclePcAccount\",isMut:!1,isSigner:!1}],args:[{name:\"amountIn\",type:\"u64\"},{name:\"minimumAmountOut\",type:\"u64\"}]},{name:\"depositAllTokenTypes\",accounts:[{name:\"amm\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!1},{name:\"userTransferAuthorityInfo\",isMut:!1,isSigner:!0},{name:\"sourceAInfo\",isMut:!0,isSigner:!1},{name:\"sourceBInfo\",isMut:!0,isSigner:!1},{name:\"tokenA\",isMut:!0,isSigner:!1},{name:\"tokenB\",isMut:!0,isSigner:!1},{name:\"poolMint\",isMut:!0,isSigner:!1},{name:\"destination\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[{name:\"poolTokenAmount\",type:\"u64\"},{name:\"maximumTokenAAmount\",type:\"u64\"},{name:\"maximumTokenBAmount\",type:\"u64\"}]},{name:\"withdrawAllTokenTypes\",accounts:[{name:\"amm\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!1},{name:\"userTransferAuthorityInfo\",isMut:!1,isSigner:!0},{name:\"sourceInfo\",isMut:!0,isSigner:!1},{name:\"tokenA\",isMut:!0,isSigner:!1},{name:\"tokenB\",isMut:!0,isSigner:!1},{name:\"poolMint\",isMut:!0,isSigner:!1},{name:\"destTokenAInfo\",isMut:!0,isSigner:!1},{name:\"destTokenBInfo\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[{name:\"poolTokenAmount\",type:\"u64\"},{name:\"minimumTokenAAmount\",type:\"u64\"},{name:\"minimumTokenBAmount\",type:\"u64\"}]},{name:\"ammOracleStatusUpdate\",accounts:[{name:\"amm\",isMut:!0,isSigner:!0}],args:[{name:\"oracleStatus\",type:\"u64\"}]},{name:\"ammFreezeUpdate\",accounts:[{name:\"amm\",isMut:!0,isSigner:!0}],args:[{name:\"freezeTrade\",type:\"u8\"},{name:\"freezeDeposit\",type:\"u8\"},{name:\"freezeWithdraw\",type:\"u8\"},{name:\"baseDecimals\",type:\"u8\"}]},{name:\"ammFeeCurveConfigUpdate\",accounts:[{name:\"amm\",isMut:!0,isSigner:!0}],args:[{name:\"ammFees\",type:{defined:\"AmmFees\"}},{name:\"ammCurve\",type:{defined:\"AmmCurve\"}},{name:\"ammConfig\",type:{defined:\"AmmConfig\"}}]},{name:\"ammLastPriceUpdate\",accounts:[{name:\"amm\",isMut:!0,isSigner:!0}],args:[{name:\"lastPrice\",type:\"u64\"}]},{name:\"ammRegressionTargetUpdate\",accounts:[{name:\"amm\",isMut:!1,isSigner:!1},{name:\"ammOwner\",isMut:!1,isSigner:!0}],args:[{name:\"targetAmount\",type:\"u64\"}]}],accounts:[{name:\"amm\",type:{kind:\"struct\",fields:[{name:\"initializerKey\",type:\"publicKey\"},{name:\"initializerDepositTokenAccount\",type:\"publicKey\"},{name:\"initializerReceiveTokenAccount\",type:\"publicKey\"},{name:\"initializerAmount\",type:\"u64\"},{name:\"takerAmount\",type:\"u64\"},{name:\"isInitialized\",type:\"bool\"},{name:\"bumpSeed\",type:\"u8\"},{name:\"freezeTrade\",type:\"u8\"},{name:\"freezeDeposit\",type:\"u8\"},{name:\"freezeWithdraw\",type:\"u8\"},{name:\"baseDecimals\",type:\"u8\"},{name:\"tokenProgramId\",type:\"publicKey\"},{name:\"tokenAAccount\",type:\"publicKey\"},{name:\"tokenBAccount\",type:\"publicKey\"},{name:\"poolMint\",type:\"publicKey\"},{name:\"tokenAMint\",type:\"publicKey\"},{name:\"tokenBMint\",type:\"publicKey\"},{name:\"feeAccount\",type:\"publicKey\"},{name:\"oracleMainAccount\",type:\"publicKey\"},{name:\"oracleSubAccount\",type:\"publicKey\"},{name:\"oraclePcAccount\",type:\"publicKey\"},{name:\"fees\",type:{defined:\"AmmFees\"}},{name:\"curve\",type:{defined:\"AmmCurve\"}},{name:\"config\",type:{defined:\"AmmConfig\"}},{name:\"ammPTemp1\",type:\"publicKey\"},{name:\"ammPTemp2\",type:\"publicKey\"},{name:\"ammPTemp3\",type:\"publicKey\"},{name:\"ammPTemp4\",type:\"publicKey\"},{name:\"ammPTemp5\",type:\"publicKey\"}]}}],types:[{name:\"AmmFees\",type:{kind:\"struct\",fields:[{name:\"tradeFeeNumerator\",type:\"u64\"},{name:\"tradeFeeDenominator\",type:\"u64\"},{name:\"ownerTradeFeeNumerator\",type:\"u64\"},{name:\"ownerTradeFeeDenominator\",type:\"u64\"},{name:\"ownerWithdrawFeeNumerator\",type:\"u64\"},{name:\"ownerWithdrawFeeDenominator\",type:\"u64\"},{name:\"hostFeeNumerator\",type:\"u64\"},{name:\"hostFeeDenominator\",type:\"u64\"}]}},{name:\"AmmCurve\",type:{kind:\"struct\",fields:[{name:\"curveType\",type:\"u8\"},{name:\"curveParameters\",type:\"u64\"}]}},{name:\"AmmConfig\",type:{kind:\"struct\",fields:[{name:\"lastPrice\",type:\"u64\"},{name:\"lastBalancedPrice\",type:\"u64\"},{name:\"configDenominator\",type:\"u64\"},{name:\"volumeX\",type:\"u64\"},{name:\"volumeY\",type:\"u64\"},{name:\"volumeXInY\",type:\"u64\"},{name:\"depositCap\",type:\"u64\"},{name:\"regressionTarget\",type:\"u64\"},{name:\"oracleType\",type:\"u64\"},{name:\"oracleStatus\",type:\"u64\"},{name:\"oracleMainSlotLimit\",type:\"u64\"},{name:\"oracleSubConfidenceLimit\",type:\"u64\"},{name:\"oracleSubSlotLimit\",type:\"u64\"},{name:\"oraclePcConfidenceLimit\",type:\"u64\"},{name:\"oraclePcSlotLimit\",type:\"u64\"},{name:\"stdSpread\",type:\"u64\"},{name:\"stdSpreadBuffer\",type:\"u64\"},{name:\"spreadCoefficient\",type:\"u64\"},{name:\"priceBufferCoin\",type:\"i64\"},{name:\"priceBufferPc\",type:\"i64\"},{name:\"rebalanceRatio\",type:\"u64\"},{name:\"feeTrade\",type:\"u64\"},{name:\"feePlatform\",type:\"u64\"},{name:\"configTemp3\",type:\"u64\"},{name:\"configTemp4\",type:\"u64\"},{name:\"configTemp5\",type:\"u64\"},{name:\"configTemp6\",type:\"u64\"},{name:\"configTemp7\",type:\"u64\"},{name:\"configTemp8\",type:\"u64\"}]}},{name:\"CurveType\",type:{kind:\"enum\",variants:[{name:\"Standard\"},{name:\"ConstantProduct\"}]}},{name:\"TradeDirection\",type:{kind:\"enum\",variants:[{name:\"AtoB\"},{name:\"BtoA\"}]}},{name:\"RoundDirection\",type:{kind:\"enum\",variants:[{name:\"Floor\"},{name:\"Ceiling\"}]}}],errors:[{code:6e3,name:\"AlreadyInUse\",msg:\"Swap account already in use\"},{code:6001,name:\"InvalidProgramAddress\",msg:\"Invalid program address generated from bump seed and key\"},{code:6002,name:\"InvalidOwner\",msg:\"Input account owner is not the program address\"},{code:6003,name:\"InvalidOutputOwner\",msg:\"Output pool account owner cannot be the program address\"},{code:6004,name:\"ExpectedMint\",msg:\"Deserialized account is not an SPL Token mint\"},{code:6005,name:\"ExpectedAccount\",msg:\"Deserialized account is not an SPL Token account\"},{code:6006,name:\"EmptySupply\",msg:\"Input token account empty\"},{code:6007,name:\"InvalidSupply\",msg:\"Pool token mint has a non-zero supply\"},{code:6008,name:\"InvalidDelegate\",msg:\"Token account has a delegate\"},{code:6009,name:\"InvalidInput\",msg:\"InvalidInput\"},{code:6010,name:\"IncorrectSwapAccount\",msg:\"Address of the provided swap token account is incorrect\"},{code:6011,name:\"IncorrectPoolMint\",msg:\"Address of the provided pool token mint is incorrect\"},{code:6012,name:\"InvalidOutput\",msg:\"InvalidOutput\"},{code:6013,name:\"CalculationFailure\",msg:\"General calculation failure due to overflow or underflow\"},{code:6014,name:\"InvalidInstruction\",msg:\"Invalid instruction\"},{code:6015,name:\"RepeatedMint\",msg:\"Swap input token accounts have the same mint\"},{code:6016,name:\"ExceededSlippage\",msg:\"Swap instruction exceeds desired slippage limit\"},{code:6017,name:\"InvalidCloseAuthority\",msg:\"Token account has a close authority\"},{code:6018,name:\"InvalidFreezeAuthority\",msg:\"Pool token mint has a freeze authority\"},{code:6019,name:\"IncorrectFeeAccount\",msg:\"Pool fee token account incorrect\"},{code:6020,name:\"ZeroTradingTokens\",msg:\"Given pool token amount results in zero trading tokens\"},{code:6021,name:\"FeeCalculationFailure\",msg:\"Fee calculation failed due to overflow, underflow, or unexpected 0\"},{code:6022,name:\"ConversionFailure\",msg:\"Conversion to u64 failed with an overflow or underflow\"},{code:6023,name:\"InvalidFee\",msg:\"The provided fee does not match the program owner's constraints\"},{code:6024,name:\"IncorrectTokenProgramId\",msg:\"The provided token program does not match the token program expected by the swap\"},{code:6025,name:\"IncorrectOracleAccount\",msg:\"Address of the provided oracle account is incorrect\"},{code:6026,name:\"IncorrectConfigAccount\",msg:\"Address of the provided config account is incorrect\"},{code:6027,name:\"UnsupportedCurveType\",msg:\"The provided curve type is not supported by the program owner\"},{code:6028,name:\"InvalidCurve\",msg:\"The provided curve parameters are invalid\"},{code:6029,name:\"UnsupportedCurveOperation\",msg:\"The operation cannot be performed on the given curve\"},{code:6030,name:\"InvalidPythStatus\",msg:\"Pyth oracle status is not 'trading'\"},{code:6031,name:\"InvalidPythPrice\",msg:\"Could not retrieve updated price feed from the Pyth oracle\"},{code:6032,name:\"IncorrectSigner\",msg:\"Address of the provided signer account is incorrect\"},{code:6033,name:\"ExceedPoolBalance\",msg:\"Swap amount exceeds pool balance\"},{code:6034,name:\"ProgramIsFrozen\",msg:\"Program is frozen\"},{code:6035,name:\"OracleConfidence\",msg:\"Oracle confidence is too low\"},{code:6036,name:\"OverCapAmount\",msg:\"Over Pool Cap Amount\"},{code:6037,name:\"InvalidUpdateAccount\",msg:\"Invalid update wallet address\"}]};var R=()=>\"2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c\";function Ce(){return ce}function B(i,n){let e=Object.values(ce).filter(o=>o.poolCoinMint===i&&o.poolPcMint===n||o.poolCoinMint===n&&o.poolPcMint===i);return e.length===1?e[0]:null}var ce={\"SOL-USDC\":{amm:\"86eq4kdBkUCHGdCC2SfcqGHRCBGhp2M89aCmuvvxaXsm\",poolMint:\"FbQYjLEq1vNCszmxmxZDoFiy9fgyfdPxzt9Fu5zk5jJ4\",feeAccount:\"FX5PBDb4nVTs4f9dSkUsj55rEYrCkBs9e7xZpDHqDeVM\",oracleMainAccount:\"EPBJUVCmzvwkGPGcEuwKmXomfGt78Aozy6pj44x9xxDB\",oracleSubAccount:\"H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG\",oraclePcAccount:\"CdgEC82BZAxFAJFpVPZ1RtnDr9AyH8KP9KygYhCb39eJ\",poolCoinTokenAccount:\"6Nij2pGdpgd6EutLAtdRwQoHaKKxhdNBi4zoLgd9Yuaq\",poolCoinMint:\"So11111111111111111111111111111111111111112\",poolPcTokenAccount:\"ELFYDkPYWBopH5Msm2cbA2ueByCXEKpzKWanv1kZC9L2\",poolPcMint:\"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",poolCoinDecimal:9,poolPcDecimal:6,poolMintDecimal:9,pythBaseDecimal:11},\"SOL-USDT\":{amm:\"EiEAydLqSKFqRPpuwYoVxEJ6h9UZh9tsTaHgs4f8b8Z5\",poolMint:\"2e6NAJy1qaKMq8PaswP2uzimMDvbr71Tbw38G6q9SNZ2\",feeAccount:\"2EVZT2cFMvbqE9nSVidYVkrSouKfudcKG6R8AKiXoSY9\",oracleMainAccount:\"EPBJUVCmzvwkGPGcEuwKmXomfGt78Aozy6pj44x9xxDB\",oracleSubAccount:\"H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG\",oraclePcAccount:\"3ZDBff7jeQaksmGvmkRix36rU159EBDjYiPThvV8QVZM\",poolCoinTokenAccount:\"GUicRosQyLJCYG8hjYcbiGKAVAmT1puQTVmJjFxJmdMK\",poolCoinMint:\"So11111111111111111111111111111111111111112\",poolPcTokenAccount:\"D8F3PPxSuykAgyPPKwQdXDGGoRnUXzxowaheVJw5ATDC\",poolPcMint:\"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\",poolCoinDecimal:9,poolPcDecimal:6,poolMintDecimal:9,pythBaseDecimal:11}};import{BN as F}from\"@project-serum/anchor\";import{Keypair as le,PublicKey as h,Transaction as Ee}from\"@solana/web3.js\";import{Token as ze}from\"@solana/spl-token\";import{TOKEN_PROGRAM_ID as ae}from\"@solana/spl-token\";import{closeAccount as We}from\"@project-serum/serum/lib/token-instructions\";var k={symbol:\"WSOL\",mintAddress:\"So11111111111111111111111111111111111111112\",decimals:9};import{BorshAccountsCoder as Ne}from\"@project-serum/anchor\";import{Keypair as Be,PublicKey as J,SystemProgram as xe}from\"@solana/web3.js\";import{Token as ue}from\"@solana/spl-token\";import{initializeAccount as Le}from\"@project-serum/serum/lib/token-instructions\";import{AccountLayout as _,TOKEN_PROGRAM_ID as H,u64 as me}from\"@solana/spl-token\";import{parsePriceData as ee}from\"@pythnetwork/client\";import P from\"decimal.js\";var ne=new J(\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\");function W(i,n,e,o,c,u){return A(this,null,function*(){let t;if(e)t=e;else{let a=n.wallet.publicKey,m=Be.generate();t=m.publicKey;let r=o+(yield i.provider.connection.getMinimumBalanceForRentExemption(_.span));c.add(xe.createAccount({fromPubkey:a,newAccountPubkey:t,lamports:r,space:_.span,programId:H})),c.add(Le({account:t,mint:new J(k.mintAddress),owner:a})),u.push(m)}return t})}function U(i,n,e,o){return A(this,null,function*(){let c=yield q(n.wallet.publicKey,e);return yield i.provider.connection.getAccountInfo(c).then(u=>A(this,null,function*(){u||(c=yield ue.getAssociatedTokenAddress(ne,H,e,n.wallet.publicKey),o.add(ue.createAssociatedTokenAccountInstruction(ne,H,e,c,n.wallet.publicKey,n.wallet.publicKey)))})),c})}function q(i,n){return A(this,null,function*(){let{publicKey:e}=yield Oe([i.toBuffer(),H.toBuffer(),n.toBuffer()],ne);return e})}function Oe(i,n){return A(this,null,function*(){let[e,o]=yield J.findProgramAddress(i,n);return{publicKey:e,nonce:o}})}function V(i,n){return A(this,null,function*(){let[e,o]=yield J.findProgramAddress([n.toBuffer()],i);return{programAuthority:e,nonce:o}})}function te(i,n,e){return A(this,null,function*(){let o=[],c=[];n.forEach(a=>{c.length>=100&&(o.push(c),c=[]),c.push(a)}),c.length>0&&o.push(c);let u=[],t={};return yield Promise.all(o.map((a,m)=>A(this,null,function*(){let r=yield i.getMultipleAccountsInfo(a,e);t[m]=r}))),Object.keys(t).sort((a,m)=>parseInt(a)-parseInt(m)).forEach(a=>{let m=t[parseInt(a)];for(let r of m)u.push(r)}),u.map((a,m)=>a===null?null:{publicKey:n[m],account:a})})}function oe(i,n){let e,o,c,u,t,a,m,r;for(let s=0;st.oracleMainSlotLimit.toNumber())if(m&&a.address!=m.address)O=!0;else throw new Error(\"InvalidPythMainSlot\");if(D=a.price,N=a.confidence,O){if(N=new K(0),!m.status.eq(1))throw new Error(\"InvalidPythSubStatus\");if(n-m.publishSlot.toNumber()>t.oracleSubSlotLimit.toNumber())throw new Error(\"InvalidPythSubSlot\");if(m.confidence.div(m.price).gt(t.oracleSubConfidenceLimit.div(t.configDenominator)))throw new Error(\"InvalidPythSubConfidence\");D=m.price}}else{if(N=new K(0),!m.status.eq(1))throw new Error(\"InvalidPythSubStatus\");if(n-m.publishSlot.toNumber()>t.oracleSubSlotLimit.toNumber())throw new Error(\"InvalidPythSubSlot\");if(m.confidence.div(m.price).gt(t.oracleSubConfidenceLimit.div(t.configDenominator)))throw new Error(\"InvalidPythSubConfidence\");D=m.price}if(r){if(!r.status.eq(1))throw new Error(\"InvalidPythPcStatus\");if(n-r.publishSlot.toNumber()>t.oraclePcSlotLimit.toNumber())throw new Error(\"InvalidPythPcSlot\");if(r.confidence.div(r.price).gt(t.oraclePcConfidenceLimit.div(t.configDenominator)))throw new Error(\"InvalidPythPcConfidence\");D=D.times(S.pow(Math.abs(r.exponent))).div(r.price)}let Z=D;if(t.oracleStatus.eq(1)&&s===x.AtoB)throw new Error(\"OracleConfidence\");if(t.oracleStatus.eq(2)&&s===x.BtoA)throw new Error(\"OracleConfidence\");if(e.curveType===0){let{destinationAmountSwapped:O,poolPriceImpact:G}=Ue(p,Z,v,N,c,u,t,s);d=O,f=G}else if(e.curveType===1){let{destinationAmountSwapped:O,poolPriceImpact:G}=Ve(p,Z,v,c,u,t,s);d=O,f=G}if(d.lt(1))throw new Error(\"ZeroAmountOut\");if(s===x.AtoB&&d.gte(u))throw new Error(\"ExceedPoolBalance\");if(s===x.BtoA&&d.gte(c))throw new Error(\"ExceedPoolBalance\");return{amountSwapped:d,priceImpact:f,fee:y,feePercent:w}}function Ue(i,n,e,o,c,u,t,a){let m=new K(0),r=new K(0);switch(a){case x.AtoB:{let s=n.times(t.priceBufferCoin.div(t.configDenominator).add(1)),f=c.plus(i).div(t.regressionTarget).minus(1),l=0;f.lt(0)?l=0:l=f.pow(t.spreadCoefficient.div(t.configDenominator)).times(t.stdSpread.div(t.configDenominator)).plus(t.stdSpreadBuffer.div(t.configDenominator)).toNumber(),l>1&&(l=.99);let g=s.times(1-l).minus(o).floor();m=i.times(g.div(e)).floor();let y=m.div(i).mul(e).floor();r=s.minus(y).div(s);break}case x.BtoA:{let s=n.times(t.priceBufferPc.div(t.configDenominator).add(1)),d=c,l=t.regressionTarget.times(2).minus(d).times(s).div(e).plus(i).div(t.regressionTarget.times(s).div(e)).minus(1),g=0;l.lt(0)?g=0:g=l.pow(t.spreadCoefficient.div(t.configDenominator)).times(t.stdSpread.div(t.configDenominator)).plus(t.stdSpreadBuffer.div(t.configDenominator)).toNumber(),g>1&&(g=.99);let y=s.times(1+g).plus(o).floor();m=i.div(y.div(e)).floor(),r=i.div(m).mul(e).floor().minus(s).div(s);break}}return{destinationAmountSwapped:m,poolPriceImpact:r}}function Ve(i,n,e,o,c,u,t){let a=new K(0),m=new K(0);switch(t){case x.AtoB:{let r=o,s=c,d=r.times(s),f=r.plus(i),{q:l,r:g}=ge(d,f),y=l.floor();f=g.floor(),a=s.minus(y).floor();let w=s.div(r),p=s.minus(a).div(r.plus(i));m=w.minus(p).div(w);break}case x.BtoA:{let r=o,s=c,d=r.times(s),f=s.plus(i),{q:l,r:g}=ge(d,f),y=l.floor();f=g.floor(),a=r.minus(y).floor();let w=s.div(r),p=s.plus(i).div(r.minus(a));m=p.minus(w).div(p);break}}return{destinationAmountSwapped:a,poolPriceImpact:m}}function ge(i,n){let e=n,o=i.div(e);return o.eq(0)?{q:new K(0),r:new K(0)}:(i.mod(n).gt(0)&&(o=o.plus(1),e=i.div(o),i.mod(o).gt(0)&&(e=e.plus(1))),{q:o,r:e})}import{PublicKey as b,Transaction as Pe}from\"@solana/web3.js\";import{BN as L}from\"@project-serum/anchor\";import{TOKEN_PROGRAM_ID as j}from\"@solana/spl-token\";import C from\"decimal.js\";import{closeAccount as Q}from\"@project-serum/serum/lib/token-instructions\";function be(i,n,e,o,c,u){return A(this,null,function*(){if(!e)return console.log(\"Pool Not Found\"),\"\";let{transaction:t,signers:a}=yield Ye(i,n,e,o,c,u);return yield n.sendAndConfirm(t,a)})}function Ye(i,n,e,o,c,u){return A(this,null,function*(){let t=new Pe,a=[],m=10,r=Math.pow(m,e.poolCoinDecimal),s=Math.pow(m,e.poolPcDecimal),d=Math.pow(m,e.poolMintDecimal),f=new L(o*r),l=new L(c*s),g=new L(u*d),y=yield U(i,n,new b(e.poolMint),t),w=null,p=null;e.poolCoinMint===k.mintAddress?w=yield W(i,n,w,f.toNumber(),t,a):w=yield q(n.wallet.publicKey,new b(e.poolCoinMint)),e.poolPcMint===k.mintAddress?p=yield W(i,n,p,0,t,a):p=yield q(n.wallet.publicKey,new b(e.poolPcMint));let S=n.wallet.publicKey,{programAuthority:v}=yield V(i.programId,new b(e.amm));return t.add(yield i.methods.depositAllTokenTypes(g,f,l).accounts({amm:new b(e.amm),authority:v,userTransferAuthorityInfo:S,sourceAInfo:w,sourceBInfo:p,tokenA:new b(e.poolCoinTokenAccount),tokenB:new b(e.poolPcTokenAccount),poolMint:new b(e.poolMint),destination:y,tokenProgram:j}).instruction()),e.poolCoinMint===k.mintAddress&&t.add(Q({source:w,destination:n.wallet.publicKey,owner:n.wallet.publicKey})),e.poolPcMint===k.mintAddress&&t.add(Q({source:p,destination:n.wallet.publicKey,owner:n.wallet.publicKey})),{transaction:t,signers:a}})}function Se(i,n,e,o,c){return A(this,null,function*(){let u=yield se(i,new b(o.poolMint)),t=new C(u.value.amount),a=yield ie(i,new b(o.poolCoinTokenAccount)),m=new C(a.value.amount),r=yield ie(i,new b(o.poolPcTokenAccount)),s=new C(r.value.amount),d=o.poolCoinMint,f=o.poolPcMint,l=(100-c)/100,g=new C(0),y=new C(0),w=new C(0),p=new C(0);if(!n.isZero()){let S=Ae(o,n.times(M(10,o.poolCoinDecimal)),d,f,m,s);g=n.times(M(10,o.poolCoinDecimal)).div(m).times(t).times(l).floor().div(M(10,o.poolMintDecimal)),y=S.div(M(10,o.poolPcDecimal))}if(!e.isZero()){let S=Ae(o,e.times(M(10,o.poolPcDecimal)),f,d,m,s);w=e.times(M(10,o.poolPcDecimal)).div(s).times(t).times(l).floor().div(M(10,o.poolMintDecimal)),p=S.div(M(10,o.poolCoinDecimal))}return e.isZero()?{coinIn:n.toNumber(),pcIn:y.toNumber(),lpRecive:g.toNumber()}:n.isZero()?{coinIn:p.toNumber(),pcIn:e.toNumber(),lpRecive:w.toNumber()}:n.lt(p)?{coinIn:n.toNumber(),pcIn:y.toNumber(),lpRecive:g.toNumber()}:{coinIn:p.toNumber(),pcIn:e.toNumber(),lpRecive:w.toNumber()}})}function Ae(i,n,e,o,c,u){let t=u.div(c),a=new C(0);return!c||!u||(e===i.poolCoinMint&&o===i.poolPcMint?a=n.times(t).floor():e===i.poolPcMint&&o===i.poolCoinMint&&(a=n.div(t).floor())),a}function he(i,n,e,o,c,u,t,a,m){return A(this,null,function*(){let r=u,s=new L(e*M(10,n.poolCoinDecimal)),d=new L(o*M(10,n.poolPcDecimal)),f=new L(c*M(10,n.poolMintDecimal)),[l]=yield b.findProgramAddress([new b(n.amm).toBuffer()],i.programId);return yield i.methods.depositAllTokenTypes(f,s,d).accounts({amm:new b(n.amm),authority:l,userTransferAuthorityInfo:r,sourceAInfo:t,sourceBInfo:a,tokenA:new b(n.poolCoinTokenAccount),tokenB:new b(n.poolPcTokenAccount),poolMint:new b(n.poolMint),destination:m,tokenProgram:j}).instruction()})}function Ie(i,n,e,o,c,u){return A(this,null,function*(){if(!e)return console.log(\"Pool Not Found\"),\"\";let{transaction:t,signers:a}=yield Xe(i,n,e,o,c,u);return yield n.sendAndConfirm(t,a)})}function Xe(i,n,e,o,c,u){return A(this,null,function*(){let t=new Pe,a=[],m=10,r=Math.pow(m,e.poolCoinDecimal),s=Math.pow(m,e.poolPcDecimal),d=Math.pow(m,e.poolMintDecimal),f=new L(c*r),l=new L(u*s),g=new L(o*d),y=yield q(n.wallet.publicKey,new b(e.poolMint)),w=null,p=null;e.poolCoinMint===k.mintAddress?w=yield W(i,n,w,1e7,t,a):w=yield U(i,n,new b(e.poolCoinMint),t),e.poolPcMint===k.mintAddress?p=yield W(i,n,p,1e7,t,a):p=yield U(i,n,new b(e.poolPcMint),t);let{programAuthority:S}=yield V(i.programId,new b(e.amm));return t.add(yield i.methods.withdrawAllTokenTypes(g,f,l).accounts({amm:new b(e.amm),authority:S,userTransferAuthorityInfo:n.wallet.publicKey,sourceInfo:y,tokenA:new b(e.poolCoinTokenAccount),tokenB:new b(e.poolPcTokenAccount),poolMint:new b(e.poolMint),destTokenAInfo:w,destTokenBInfo:p,tokenProgram:j}).instruction()),e.poolCoinMint===k.mintAddress&&t.add(Q({source:w,destination:n.wallet.publicKey,owner:n.wallet.publicKey})),e.poolPcMint===k.mintAddress&&t.add(Q({source:p,destination:n.wallet.publicKey,owner:n.wallet.publicKey})),{transaction:t,signers:a}})}function Te(i,n,e,o){return A(this,null,function*(){let c=n.times(Math.pow(10,e.poolMintDecimal)),u=yield i.getTokenSupply(new b(e.poolMint)),t=new C(u.value.amount),a=yield i.getTokenAccountBalance(new b(e.poolCoinTokenAccount)),m=new C(a.value.amount),r=yield i.getTokenAccountBalance(new b(e.poolPcTokenAccount)),s=new C(r.value.amount),d=new C(100).plus(o).dividedBy(100),f=c.div(d),l=m.times(f).div(t).floor().div(M(10,e.poolCoinDecimal)).toNumber(),g=s.times(f).div(t).floor().div(M(10,e.poolPcDecimal)).toNumber();return{coinOut:l,pcOut:g}})}function ve(i,n,e,o,c,u,t,a,m){return A(this,null,function*(){let r=new C(e).times(Math.pow(10,n.poolMintDecimal)),s=new L(r.toNumber()),d=new L(o*Math.pow(10,n.poolCoinDecimal)),f=new L(c*Math.pow(10,n.poolPcDecimal)),[l]=yield b.findProgramAddress([new b(n.amm).toBuffer()],i.programId);return yield i.methods.withdrawAllTokenTypes(s,d,f).accounts({amm:new b(n.amm),authority:l,userTransferAuthorityInfo:u,sourceInfo:m,tokenA:new b(n.poolCoinTokenAccount),tokenB:new b(n.poolPcTokenAccount),poolMint:new b(n.poolMint),destTokenAInfo:t,destTokenBInfo:a,tokenProgram:j}).instruction()})}var Y=class{constructor(n,e){this.stateAddress=I.default;this.programAuthority=I.default;this.connection=n,this.wallet=e;let o=new I(R());this.provider=new E(n,e,E.defaultOptions()),this.program=new X(z,o,this.provider)}static build(n,e){return A(this,null,function*(){return new Y(n,e)})}swap(n,e,o,c){return A(this,null,function*(){let u=B(o.toString(),c.toString());try{return yield pe(this.program,this.provider,u,o,c,n,e)}catch(t){return console.error(t),\"\"}})}deposit(n,e,o,c,u){return A(this,null,function*(){let t=B(c.toString(),u.toString());try{return yield be(this.program,this.provider,t,n,e,o)}catch(a){return console.error(a),\"\"}})}withdraw(n,e,o,c,u){return A(this,null,function*(){let t=B(c.toString(),u.toString());try{return yield Ie(this.program,this.provider,t,n,e,o)}catch(a){return console.error(a),\"\"}})}};function Ze(i,n,e,o,c){return A(this,null,function*(){let u=B(e.toString(),o.toString());if(u){let t=new T(n),a,m,r;u.poolCoinMint===e.toString()?(t=t.times(new T(10).pow(u.poolCoinDecimal)),m=u.poolCoinDecimal,r=u.poolPcDecimal,a=x.AtoB):(t=t.times(new T(10).pow(u.poolPcDecimal)),m=u.poolPcDecimal,r=u.poolCoinDecimal,a=x.BtoA);let s=[new I(u.amm),new I(u.poolCoinTokenAccount),new I(u.poolPcTokenAccount)];u.oracleMainAccount!==u.oracleSubAccount?(s.push(new I(u.oracleMainAccount)),s.push(new I(u.oracleSubAccount))):s.push(new I(u.oracleMainAccount)),u.oracleSubAccount!==u.oraclePcAccount&&s.push(new I(u.oraclePcAccount));try{let d=yield te(i,s),{amm:f,fees:l,coinBalance:g,pcBalance:y,config:w,oracleMain:p,oracleSub:S,oraclePc:v}=oe(d,u),D=yield i.getSlot(),{amountSwapped:N,priceImpact:Z,fee:O,feePercent:G}=re(t,D,f,l,g,y,w,p,S,v,a),De=new T(c).div(100),ke=new T(Math.floor(N.times(new T(1).minus(De)).toNumber())).div(new T(10).pow(r)).toNumber(),Me=N.div(new T(10).pow(r)).toNumber(),Ke=O.div(new T(10).pow(m)).toNumber();return{amountIn:n,amountOut:Me,amountOutWithSlippage:ke,priceImpact:Z.toNumber(),fee:Ke,feePercent:G.toNumber()}}catch(d){return console.error(d),{amountIn:0,amountOut:0,amountOutWithSlippage:0,priceImpact:0,fee:0,feePercent:0}}}})}function _e(i,n,e,o,c,u,t,a,m=!0){return A(this,null,function*(){try{let r=B(c.toString(),u.toString()),s=new T(e),d=new T(o),f,l,g=new I(r.feeAccount);c.toString()===r.poolCoinMint?(s=s.times(new T(10).pow(r.poolCoinDecimal)),d=d.times(new T(10).pow(r.poolPcDecimal)),f=new I(r.poolCoinTokenAccount),l=new I(r.poolPcTokenAccount)):(s=s.times(new T(10).pow(r.poolPcDecimal)),d=d.times(new T(10).pow(r.poolCoinDecimal)),f=new I(r.poolPcTokenAccount),l=new I(r.poolCoinTokenAccount));let y=$.generate(),w=new I(R()),p=new E(i,y,E.defaultOptions()),S=new X(z,w,p),{approveInstruction:v,swapInstruction:D,signers:N}=yield de(S,r,s,d,n,t,a,f,l,g,m);return{approveInstruction:v,swapInstruction:D,signers:N}}catch(r){return console.warn(r),{approveInstruction:null,swapInstruction:null,signers:[]}}})}function He(i,n,e,o,c,u,t,a,m){return A(this,null,function*(){let r=B(c.toString(),u.toString()),s=$.generate(),d=new I(R()),f=new E(i,s,E.defaultOptions()),l=new X(z,d,f);return yield we(l,e,o,n,t,a,c,r,m)})}function Je(i,n,e,o,c,u){return A(this,null,function*(){let t=B(o.toString(),c.toString());if(t){let a=new T(n),m=new T(e),r=yield Se(i,a,m,t,u);return{coinMaximumIn:r.coinIn,pcMaximumIn:r.pcIn,lpRecive:r.lpRecive}}})}function Qe(i,n,e,o,c,u,t,a,m,r){return A(this,null,function*(){let s=B(u.toString(),t.toString()),d=$.generate(),f=new I(R()),l=new E(i,d,E.defaultOptions()),g=new X(z,f,l);if(s)return yield he(g,s,e,o,c,n,a,m,r)})}function je(i,n,e,o,c){return A(this,null,function*(){let u=B(e.toString(),o.toString());if(u){let t=new T(n),a=yield Te(i,t,u,c);return{lpAmountIn:n,coinMinimumOut:a.coinOut,pcMinimumOut:a.pcOut}}})}function $e(i,n,e,o,c,u,t,a,m,r){return A(this,null,function*(){let s=B(u.toString(),t.toString()),d=$.generate(),f=new I(R()),l=new E(i,d,E.defaultOptions()),g=new X(z,f,l);if(s)return yield ve(g,s,e,o,c,n,a,m,r)})}export{z as IDL,Y as Lifinity,x as TradeDirection,Ze as getAmountOut,re as getCurveAmount,Je as getDepositAmountOut,Qe as getDepositInstruction,te as getMultipleAccounts,oe as getParsedData,B as getPool,Ce as getPoolList,R as getProgramAddress,_e as getSwapInstruction,He as getSwapTransactionWithAuthority,je as getWithdrawAmountOut,$e as getWithdrawInstruction};\n","import { PublicKey } from '@solana/web3.js';\nimport { BN } from '@project-serum/anchor';\nexport const PROGRAM_ID = '24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi';\nexport const AFFILIATE_PROGRAM_ID = 'GacY9YuN16HNRTy7ZWwULPccwvfFSBeNLuAQP7y38Du3';\nexport const REWARDER = 'GuHrjvzqDvLTB27ebd9iFKwceCxKvSswzTByDQUTsvdm';\n// Mainnet addresses\nexport const SOL_MINT = new PublicKey('So11111111111111111111111111111111111111112');\nexport const USDC_MINT = new PublicKey('EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v');\nexport const USDT_MINT = new PublicKey('Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB');\nexport const VAULT_BASE_KEY = new PublicKey('HWzXGcGHy4tcpYfaRDCyLNzXqBTv3E6BttpCH2vJxArv');\nexport const SEEDS = Object.freeze({\n VAULT_PREFIX: 'vault',\n TOKEN_VAULT_PREFIX: 'token_vault',\n LP_MINT_PREFIX: 'lp_mint',\n COLLATERAL_VAULT_PREFIX: 'collateral_vault',\n OBLIGATION_PREFIX: 'obligation',\n OBLIGATION_OWNER_PREFIX: 'obligation_owner',\n STAKING_PREFIX: 'staking',\n MINER: 'Miner',\n QUARRY: 'Quarry',\n APRICOT_USER_INFO_SIGNER_PREFIX: 'apricot_user_info_signer',\n FRAKT: 'frakt',\n DEPOSIT: 'deposit',\n FRAKT_LENDING: 'nftlendingv2',\n CYPHER: 'cypher',\n});\nexport const StrategyProgram = {\n testnet: {\n solend: new PublicKey('ALend7Ketfx5bxh6ghsCDXAoDrhvEmsXT3cynB6aPLgx'),\n portFinance: new PublicKey('pdQ2rQQU5zH2rDgZ7xH2azMBJegUzUyunJ5Jd637hC4'),\n },\n devnet: {\n solend: new PublicKey('ALend7Ketfx5bxh6ghsCDXAoDrhvEmsXT3cynB6aPLgx'),\n portFinance: new PublicKey('pdQ2rQQU5zH2rDgZ7xH2azMBJegUzUyunJ5Jd637hC4'),\n },\n 'mainnet-beta': {\n solend: new PublicKey('So1endDq2YkqhipRh3WViPa8hdiSpxWy6z3Z6tMCpAo'),\n portFinance: new PublicKey('Port7uDYB3wk6GJAw4KT1WpTeMtSu9bTcChBHkX2LfR'),\n },\n};\nexport const KEEPER_URL = {\n testnet: 'https://staging-keeper.raccoons.dev',\n devnet: 'https://dev-keeper.raccoons.dev',\n 'mainnet-beta': 'https://merv2-api.mercurial.finance',\n};\nexport const VAULT_STRATEGY_ADDRESS = '11111111111111111111111111111111';\nexport const LOCKED_PROFIT_DEGRADATION_DENOMINATOR = new BN(1000000000000);\n//# sourceMappingURL=constants.js.map","// src/addresses.ts\nimport { PublicKey as PublicKey2 } from \"@solana/web3.js\";\nimport { TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID2 } from \"@solana/spl-token\";\n\n// src/constants/commands.ts\nvar CMD_REFRESH_USER = 10;\nvar CMD_ADD_USER_AND_DEPOSIT = 16;\nvar CMD_DEPOSIT = 17;\nvar CMD_WITHDRAW = 18;\nvar CMD_BORROW = 19;\nvar CMD_REPAY = 20;\nvar CMD_EXTERN_LIQUIDATE = 21;\nvar CMD_UPDATE_USER_CONFIG = 23;\nvar CMD_MARGIN_SWAP = 24;\nvar CMD_UPDATE_USER_ASSET_CONFIG = 25;\nvar CMD_WITHDRAW_AND_REMOVE_USER = 26;\nvar CMD_LP_CREATE = 29;\nvar CMD_LP_REDEEM = 30;\nvar CMD_LP_OP_CHECK = 33;\nvar CMD_LP_OP_ENDCHECK = 34;\nvar CMD_LP_STAKE = 35;\nvar CMD_LP_UNSTAKE = 36;\nvar CMD_CLAIM_APT_LM_REWARD = 41;\nvar CMD_MAKE_LM_REWARD_AVAILABLE = 42;\nvar CMD_LP_STAKE_SECOND = 129;\nvar CMD_LP_UNSTAKE_SECOND = 130;\nvar SWAP_FAKE = 0;\nvar SWAP_SERUM = 1;\nvar SWAP_RAYDIUM = 2;\nvar SWAP_SABER = 3;\nvar SWAP_MERCURIAL = 4;\nvar SWAP_ORCA = 5;\nvar INVALID_PAGE = 65535;\nvar AMOUNT_MULTIPLIER = 16777216;\nvar MAX_ASSIST_ACTIONS = 6;\nvar ASSIST_MODE_STABLE_ONLY = 2;\n\n// src/constants/configs.ts\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, Token, TOKEN_PROGRAM_ID } from \"@solana/spl-token\";\nimport { PublicKey, SystemProgram, SYSVAR_CLOCK_PUBKEY } from \"@solana/web3.js\";\nimport invariant2 from \"tiny-invariant\";\n\n// src/types.ts\nimport invariant from \"tiny-invariant\";\nvar TokenID = /* @__PURE__ */ ((TokenID2) => {\n TokenID2[\"APT\"] = \"APT\";\n TokenID2[\"BTC\"] = \"BTC\";\n TokenID2[\"ETH\"] = \"ETH\";\n TokenID2[\"USDT\"] = \"USDT\";\n TokenID2[\"USDC\"] = \"USDC\";\n TokenID2[\"UST\"] = \"UST\";\n TokenID2[\"SOL\"] = \"SOL\";\n TokenID2[\"SBR\"] = \"SBR\";\n TokenID2[\"ORCA\"] = \"ORCA\";\n TokenID2[\"RAY\"] = \"RAY\";\n TokenID2[\"MERC\"] = \"MERC\";\n TokenID2[\"MNDE\"] = \"MNDE\";\n TokenID2[\"mSOL\"] = \"mSOL\";\n TokenID2[\"USTv2\"] = \"USTv2\";\n TokenID2[\"FTT\"] = \"FTT\";\n TokenID2[\"SRM\"] = \"SRM\";\n TokenID2[\"stSOL\"] = \"stSOL\";\n TokenID2[\"whETH\"] = \"whETH\";\n TokenID2[\"wLDO\"] = \"wLDO\";\n TokenID2[\"scnSOL\"] = \"scnSOL\";\n TokenID2[\"SOCN\"] = \"SOCN\";\n TokenID2[\"wLUNA\"] = \"wLUNA\";\n TokenID2[\"USDT_USDC_SABER\"] = \"USDT_USDC_SABER\";\n TokenID2[\"USTv2_USDC_SABER\"] = \"USTv2_USDC_SABER\";\n TokenID2[\"UST_USDC_SABER\"] = \"UST_USDC_SABER\";\n TokenID2[\"mSOL_SOL_SABER\"] = \"mSOL_SOL_SABER\";\n TokenID2[\"stSOL_SOL_SABER\"] = \"stSOL_SOL_SABER\";\n TokenID2[\"SOL_USDC_RAYDIUM\"] = \"SOL_USDC_RAYDIUM\";\n TokenID2[\"RAY_USDC_RAYDIUM\"] = \"RAY_USDC_RAYDIUM\";\n TokenID2[\"SOL_USDT_RAYDIUM\"] = \"SOL_USDT_RAYDIUM\";\n TokenID2[\"mSOL_SOL_RAYDIUM\"] = \"mSOL_SOL_RAYDIUM\";\n TokenID2[\"RAY_USDT_RAYDIUM\"] = \"RAY_USDT_RAYDIUM\";\n TokenID2[\"RAY_ETH_RAYDIUM\"] = \"RAY_ETH_RAYDIUM\";\n TokenID2[\"RAY_SOL_RAYDIUM\"] = \"RAY_SOL_RAYDIUM\";\n TokenID2[\"SRM_USDC_RAYDIUM\"] = \"SRM_USDC_RAYDIUM\";\n TokenID2[\"USDC_USDT_ORCA\"] = \"USDC_USDT_ORCA\";\n TokenID2[\"SOL_USDC_ORCA\"] = \"SOL_USDC_ORCA\";\n TokenID2[\"mSOL_SOL_ORCA\"] = \"mSOL_SOL_ORCA\";\n TokenID2[\"ORCA_USDC_ORCA\"] = \"ORCA_USDC_ORCA\";\n TokenID2[\"ORCA_SOL_ORCA\"] = \"ORCA_SOL_ORCA\";\n TokenID2[\"ETH_USDC_ORCA\"] = \"ETH_USDC_ORCA\";\n TokenID2[\"SOL_USDT_ORCA\"] = \"SOL_USDT_ORCA\";\n TokenID2[\"ETH_SOL_ORCA\"] = \"ETH_SOL_ORCA\";\n TokenID2[\"BTC_mSOL_ORCA\"] = \"BTC_mSOL_ORCA\";\n TokenID2[\"mSOL_USDC_ORCA\"] = \"mSOL_USDC_ORCA\";\n TokenID2[\"APT_USDC_ORCA\"] = \"APT_USDC_ORCA\";\n TokenID2[\"stSOL_USTv2_ORCA\"] = \"stSOL_USTv2_ORCA\";\n TokenID2[\"ORCA_whETH_ORCA\"] = \"ORCA_whETH_ORCA\";\n return TokenID2;\n})(TokenID || {});\nvar TokenCategory = /* @__PURE__ */ ((TokenCategory2) => {\n TokenCategory2[\"Volatile\"] = \"volatile\";\n TokenCategory2[\"Stable\"] = \"stable\";\n TokenCategory2[\"Lp\"] = \"lp\";\n return TokenCategory2;\n})(TokenCategory || {});\nvar PoolFlag = /* @__PURE__ */ ((PoolFlag2) => {\n PoolFlag2[PoolFlag2[\"AllowBorrow\"] = 1] = \"AllowBorrow\";\n PoolFlag2[PoolFlag2[\"IsLp\"] = 2] = \"IsLp\";\n PoolFlag2[PoolFlag2[\"IsStable\"] = 4] = \"IsStable\";\n return PoolFlag2;\n})(PoolFlag || {});\nvar Dex = /* @__PURE__ */ ((Dex2) => {\n Dex2[Dex2[\"Serum\"] = 0] = \"Serum\";\n Dex2[Dex2[\"Raydium\"] = 1] = \"Raydium\";\n Dex2[Dex2[\"Saber\"] = 2] = \"Saber\";\n Dex2[Dex2[\"Mercurial\"] = 3] = \"Mercurial\";\n Dex2[Dex2[\"Orca\"] = 4] = \"Orca\";\n return Dex2;\n})(Dex || {});\nvar PoolConfig = class {\n constructor(tokenId, poolId, ltv, mint, liquidationDiscount, tokenCategory, lpLeftRightTokenId, lpLeftRightPoolId, lpDex, lpTargetSwap, lpSwapKeyInfo, lpNeedSndStake, interestRate, reserveRatio) {\n this.tokenId = tokenId;\n this.poolId = poolId;\n this.ltv = ltv;\n this.mint = mint;\n this.liquidationDiscount = liquidationDiscount;\n this.tokenCategory = tokenCategory;\n this.lpLeftRightTokenId = lpLeftRightTokenId;\n this.lpLeftRightPoolId = lpLeftRightPoolId;\n this.lpDex = lpDex;\n this.lpTargetSwap = lpTargetSwap;\n this.lpSwapKeyInfo = lpSwapKeyInfo;\n this.lpNeedSndStake = lpNeedSndStake;\n this.interestRate = interestRate;\n this.reserveRatio = reserveRatio;\n invariant(tokenId);\n invariant(poolId >= 0);\n invariant(ltv >= 0);\n invariant(mint);\n invariant(liquidationDiscount >= 0);\n invariant(reserveRatio >= 0);\n invariant(reserveRatio <= 0.2);\n if (tokenCategory === \"lp\" /* Lp */) {\n invariant(lpLeftRightTokenId !== null && lpLeftRightTokenId !== void 0);\n invariant(lpLeftRightPoolId !== null && lpLeftRightPoolId !== void 0);\n invariant(lpDex !== null && lpDex !== void 0);\n invariant(lpTargetSwap !== null && lpTargetSwap !== void 0);\n const [lTokId, rTokId] = lpLeftRightTokenId;\n const [lPoolId, rPoolId] = lpLeftRightPoolId;\n invariant(lTokId, `${tokenId} missing lTokId`);\n invariant(rTokId, `${tokenId} missing rTokId`);\n invariant(lPoolId >= 0, `${tokenId} missing lPoolId`);\n invariant(rPoolId >= 0, `${tokenId} missing rPoolId`);\n invariant(lpSwapKeyInfo, `${tokenId} is missing lpSwapKeyInfo`);\n invariant(\n lpNeedSndStake === true || lpNeedSndStake === false,\n `${tokenId} missing lpNeedSndStake`\n );\n } else {\n invariant(interestRate);\n }\n }\n isStable() {\n return this.tokenCategory === \"stable\" /* Stable */;\n }\n isLp() {\n return this.tokenCategory === \"lp\" /* Lp */;\n }\n isVolatile() {\n return this.tokenCategory === \"volatile\" /* Volatile */;\n }\n};\nfunction getLpLRPoolIds(tokId, lpToLR, tokenIdToPoolId) {\n const [leftTokId, rightTokId] = lpToLR[tokId];\n return [tokenIdToPoolId[leftTokId], tokenIdToPoolId[rightTokId]];\n}\nvar AppConfig = class {\n constructor(programPubkey, adminPubkey, farmerPubkey, assistKey, refresherKey, retroAptVault, lmAptVault, mints, decimalMults, categories, tokenIdToPoolId, discounts, ltvs, lpToLR, lpToDex, lpToTargetSwap, lpToNeedSndStake, switchboardPriceKeys, pythPriceKeys, interestRates, fees, lpSwapInfo, firebaseConfig) {\n this.programPubkey = programPubkey;\n this.adminPubkey = adminPubkey;\n this.farmerPubkey = farmerPubkey;\n this.assistKey = assistKey;\n this.refresherKey = refresherKey;\n this.retroAptVault = retroAptVault;\n this.lmAptVault = lmAptVault;\n this.mints = mints;\n this.decimalMults = decimalMults;\n this.categories = categories;\n this.tokenIdToPoolId = tokenIdToPoolId;\n this.discounts = discounts;\n this.ltvs = ltvs;\n this.lpToLR = lpToLR;\n this.lpToDex = lpToDex;\n this.lpToTargetSwap = lpToTargetSwap;\n this.lpToNeedSndStake = lpToNeedSndStake;\n this.switchboardPriceKeys = switchboardPriceKeys;\n this.pythPriceKeys = pythPriceKeys;\n this.interestRates = interestRates;\n this.fees = fees;\n this.lpSwapInfo = lpSwapInfo;\n this.firebaseConfig = firebaseConfig;\n this.mints = mints;\n this.tokenIdToPoolId = tokenIdToPoolId;\n const poolIds = Object.values(tokenIdToPoolId);\n const idSet = new Set(poolIds);\n invariant(\n poolIds.length === idSet.size,\n `poolIds length: ${poolIds.length} != idSet.size: ${idSet.size}`\n );\n this.poolConfigs = {};\n for (const tokenId in tokenIdToPoolId) {\n const tokId = tokenId;\n this.poolConfigs[tokId] = new PoolConfig(\n tokId,\n tokenIdToPoolId[tokId],\n ltvs[tokId],\n mints[tokId],\n discounts[tokId],\n categories[tokId],\n categories[tokId] === \"lp\" /* Lp */ ? lpToLR[tokId] : null,\n categories[tokId] === \"lp\" /* Lp */ ? getLpLRPoolIds(tokId, lpToLR, tokenIdToPoolId) : null,\n categories[tokId] === \"lp\" /* Lp */ ? lpToDex[tokId] : null,\n categories[tokId] === \"lp\" /* Lp */ ? lpToTargetSwap[tokId] : null,\n lpSwapInfo[tokId],\n categories[tokId] === \"lp\" /* Lp */ ? lpToNeedSndStake[tokId] : null,\n categories[tokId] === \"lp\" /* Lp */ ? null : interestRates[tokId],\n fees[tokId]\n );\n }\n }\n mintKeyStrToPoolId(mint_key_str) {\n for (const [tokenType, pubkey] of Object.entries(this.mints)) {\n if (pubkey.toString() === mint_key_str) {\n const result = this.tokenIdToPoolId[tokenType];\n invariant(result !== void 0);\n return result;\n }\n }\n invariant(false);\n }\n getPoolIdList() {\n return Object.values(this.tokenIdToPoolId);\n }\n getTokenIdByPoolId(targetPoolId) {\n for (const [tokenId, poolId] of Object.entries(this.tokenIdToPoolId)) {\n if (poolId === targetPoolId)\n return tokenId;\n }\n throw new Error(`poolId ${targetPoolId} not valid`);\n }\n getLtvByPoolId(poolId) {\n const tokenId = this.getTokenIdByPoolId(poolId);\n return this.ltvs[tokenId];\n }\n getDecimalMultByPoolId(poolId) {\n const tokenId = this.getTokenIdByPoolId(poolId);\n return this.decimalMults[tokenId];\n }\n getMintByPoolId(poolId) {\n const tokenId = this.getTokenIdByPoolId(poolId);\n return this.mints[tokenId];\n }\n getPoolConfigList() {\n return Object.values(this.poolConfigs);\n }\n getPoolConfigByPoolId(poolId) {\n const tokenId = this.getTokenIdByPoolId(poolId);\n return this.poolConfigs[tokenId];\n }\n};\nvar RPC = /* @__PURE__ */ ((RPC2) => {\n RPC2[\"GenesysGo\"] = \"GenesysGo\";\n RPC2[\"Triton\"] = \"Triton\";\n RPC2[\"Serum\"] = \"Serum\";\n return RPC2;\n})(RPC || {});\n\n// src/constants/configs.ts\nimport { Decimal } from \"decimal.js\";\nvar FAKE_KEY = SystemProgram.programId;\nvar SAFE_LIMIT = new Decimal(0.9);\nvar FORCE_ASSIST_LIMIT = new Decimal(1);\nvar LIQUIDATION_LIMIT = new Decimal(1.01);\nvar MINTS = {\n [\"APT\" /* APT */]: new PublicKey(\"APTtJyaRX5yGTsJU522N4VYWg3vCvSb65eam5GrPT5Rt\"),\n [\"BTC\" /* BTC */]: new PublicKey(\"9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E\"),\n [\"ETH\" /* ETH */]: new PublicKey(\"2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk\"),\n [\"SOL\" /* SOL */]: new PublicKey(\"So11111111111111111111111111111111111111112\"),\n [\"mSOL\" /* mSOL */]: new PublicKey(\"mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So\"),\n [\"stSOL\" /* stSOL */]: new PublicKey(\"7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj\"),\n [\"whETH\" /* whETH */]: new PublicKey(\"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs\"),\n [\"scnSOL\" /* scnSOL */]: new PublicKey(\"5oVNBeEEQvYi1cX3ir8Dx5n1P7pdxydbGF2X4TxVusJm\"),\n [\"RAY\" /* RAY */]: new PublicKey(\"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\"),\n [\"ORCA\" /* ORCA */]: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n [\"SBR\" /* SBR */]: new PublicKey(\"Saber2gLauYim4Mvftnrasomsv6NvAuncvMEZwcLpD1\"),\n [\"MERC\" /* MERC */]: new PublicKey(\"MERt85fc5boKw3BW1eYdxonEuJNvXbiMbs6hvheau5K\"),\n [\"MNDE\" /* MNDE */]: new PublicKey(\"MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey\"),\n [\"FTT\" /* FTT */]: new PublicKey(\"AGFEad2et2ZJif9jaGpdMixQqvW5i81aBdvKe7PHNfz3\"),\n [\"SRM\" /* SRM */]: new PublicKey(\"SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt\"),\n [\"wLDO\" /* wLDO */]: new PublicKey(\"HZRCwxP2Vq9PCpPXooayhJ2bxTpo5xfpQrwB1svh332p\"),\n [\"SOCN\" /* SOCN */]: new PublicKey(\"11111111111111111111111111111111\"),\n [\"wLUNA\" /* wLUNA */]: new PublicKey(\"F6v4wfAdJB8D8p77bMXZgYt8TDKsYxLYxH5AFhUkYx9W\"),\n [\"USDT\" /* USDT */]: new PublicKey(\"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\"),\n [\"USDC\" /* USDC */]: new PublicKey(\"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"),\n [\"UST\" /* UST */]: new PublicKey(\"CXLBjMMcwkc17GfJtBos6rQCo1ypeH6eDbB82Kby4MRm\"),\n [\"USTv2\" /* USTv2 */]: new PublicKey(\"9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i\"),\n [\"USDT_USDC_SABER\" /* USDT_USDC_SABER */]: new PublicKey(\"2poo1w1DL6yd2WNTCnNTzDqkC6MBXq7axo77P16yrBuf\"),\n [\"mSOL_SOL_SABER\" /* mSOL_SOL_SABER */]: new PublicKey(\"SoLEao8wTzSfqhuou8rcYsVoLjthVmiXuEjzdNPMnCz\"),\n [\"stSOL_SOL_SABER\" /* stSOL_SOL_SABER */]: new PublicKey(\"stSjCmjQ96BiGhTk8gkU22j1739R8YBQVMq7KXWTqUV\"),\n [\"USDC_USDT_ORCA\" /* USDC_USDT_ORCA */]: new PublicKey(\"H2uzgruPvonVpCRhwwdukcpXK8TG17swFNzYFr2rtPxy\"),\n [\"UST_USDC_SABER\" /* UST_USDC_SABER */]: new PublicKey(\"UST32f2JtPGocLzsL41B3VBBoJzTm1mK1j3rwyM3Wgc\"),\n [\"SOL_USDC_RAYDIUM\" /* SOL_USDC_RAYDIUM */]: new PublicKey(\"8HoQnePLqPj4M7PUDzfw8e3Ymdwgc7NLGnaTUapubyvu\"),\n [\"RAY_USDC_RAYDIUM\" /* RAY_USDC_RAYDIUM */]: new PublicKey(\"FbC6K13MzHvN42bXrtGaWsvZY9fxrackRSZcBGfjPc7m\"),\n [\"SOL_USDT_RAYDIUM\" /* SOL_USDT_RAYDIUM */]: new PublicKey(\"Epm4KfTj4DMrvqn6Bwg2Tr2N8vhQuNbuK8bESFp4k33K\"),\n [\"SOL_USDC_ORCA\" /* SOL_USDC_ORCA */]: new PublicKey(\"APDFRM3HMr8CAGXwKHiu2f5ePSpaiEJhaURwhsRrUUt9\"),\n [\"mSOL_SOL_ORCA\" /* mSOL_SOL_ORCA */]: new PublicKey(\"29cdoMgu6MS2VXpcMo1sqRdWEzdUR9tjvoh8fcK8Z87R\"),\n [\"ORCA_USDC_ORCA\" /* ORCA_USDC_ORCA */]: new PublicKey(\"n8Mpu28RjeYD7oUX3LG1tPxzhRZh3YYLRSHcHRdS3Zx\"),\n [\"ORCA_SOL_ORCA\" /* ORCA_SOL_ORCA */]: new PublicKey(\"2uVjAuRXavpM6h1scGQaxqb6HVaNRn6T2X7HHXTabz25\"),\n [\"ETH_USDC_ORCA\" /* ETH_USDC_ORCA */]: new PublicKey(\"3e1W6Aqcbuk2DfHUwRiRcyzpyYRRjg6yhZZcyEARydUX\"),\n [\"SOL_USDT_ORCA\" /* SOL_USDT_ORCA */]: new PublicKey(\"FZthQCuYHhcfiDma7QrX7buDHwrZEd7vL8SjS6LQa3Tx\"),\n [\"mSOL_SOL_RAYDIUM\" /* mSOL_SOL_RAYDIUM */]: new PublicKey(\"5ijRoAHVgd5T5CNtK5KDRUBZ7Bffb69nktMj5n6ks6m4\"),\n [\"ETH_SOL_ORCA\" /* ETH_SOL_ORCA */]: new PublicKey(\"71FymgN2ZUf7VvVTLE8jYEnjP3jSK1Frp2XT1nHs8Hob\"),\n [\"BTC_mSOL_ORCA\" /* BTC_mSOL_ORCA */]: new PublicKey(\"8nKJ4z9FSw6wrVZKASqBiS9DS1CiNsRnqwCCKVQjqdkB\"),\n [\"mSOL_USDC_ORCA\" /* mSOL_USDC_ORCA */]: new PublicKey(\"8PSfyiTVwPb6Rr2iZ8F3kNpbg65BCfJM9v8LfB916r44\"),\n [\"USTv2_USDC_SABER\" /* USTv2_USDC_SABER */]: new PublicKey(\"USTCmQpbUGj5iTsXdnTYHZupY1QpftDZhLokSVk6UWi\"),\n [\"APT_USDC_ORCA\" /* APT_USDC_ORCA */]: new PublicKey(\"HNrYngS1eoqkjWro9D3Y5Z9sWBDzPNK2tX4rfV2Up177\"),\n [\"RAY_USDT_RAYDIUM\" /* RAY_USDT_RAYDIUM */]: new PublicKey(\"C3sT1R3nsw4AVdepvLTLKr5Gvszr7jufyBWUCvy4TUvT\"),\n [\"RAY_ETH_RAYDIUM\" /* RAY_ETH_RAYDIUM */]: new PublicKey(\"mjQH33MqZv5aKAbKHi8dG3g3qXeRQqq1GFcXceZkNSr\"),\n [\"RAY_SOL_RAYDIUM\" /* RAY_SOL_RAYDIUM */]: new PublicKey(\"89ZKE4aoyfLBe2RuV6jM3JGNhaV18Nxh8eNtjRcndBip\"),\n [\"SRM_USDC_RAYDIUM\" /* SRM_USDC_RAYDIUM */]: new PublicKey(\"9XnZd82j34KxNLgQfz29jGbYdxsYznTWRpvZE3SRE7JG\"),\n [\"stSOL_USTv2_ORCA\" /* stSOL_USTv2_ORCA */]: new PublicKey(\"HTZd53fYwYQRyAjiaPsZy9Gf41gobFdqkF4oKe3XLi95\"),\n [\"ORCA_whETH_ORCA\" /* ORCA_whETH_ORCA */]: new PublicKey(\"GsfyYHkSgC3Ta6aWR9MjB2sxoBrkGGeR2tAwXbpphf3\")\n};\nvar DECIMAL_MULT = {\n [\"APT\" /* APT */]: 1e6,\n [\"BTC\" /* BTC */]: 1e6,\n [\"ETH\" /* ETH */]: 1e6,\n [\"SOL\" /* SOL */]: 1e9,\n [\"mSOL\" /* mSOL */]: 1e9,\n [\"stSOL\" /* stSOL */]: 1e9,\n [\"whETH\" /* whETH */]: 1e8,\n [\"scnSOL\" /* scnSOL */]: 1e9,\n [\"RAY\" /* RAY */]: 1e6,\n [\"ORCA\" /* ORCA */]: 1e6,\n [\"SBR\" /* SBR */]: 1e6,\n [\"MERC\" /* MERC */]: 1e6,\n [\"MNDE\" /* MNDE */]: 1e9,\n [\"FTT\" /* FTT */]: 1e6,\n [\"SRM\" /* SRM */]: 1e6,\n [\"wLDO\" /* wLDO */]: 1e8,\n [\"SOCN\" /* SOCN */]: 1e9,\n [\"wLUNA\" /* wLUNA */]: 1e6,\n [\"USDT\" /* USDT */]: 1e6,\n [\"USDC\" /* USDC */]: 1e6,\n [\"UST\" /* UST */]: 1e9,\n [\"USTv2\" /* USTv2 */]: 1e6,\n [\"USDT_USDC_SABER\" /* USDT_USDC_SABER */]: 1e6,\n [\"mSOL_SOL_SABER\" /* mSOL_SOL_SABER */]: 1e9,\n [\"stSOL_SOL_SABER\" /* stSOL_SOL_SABER */]: 1e9,\n [\"USDC_USDT_ORCA\" /* USDC_USDT_ORCA */]: 1e6,\n [\"UST_USDC_SABER\" /* UST_USDC_SABER */]: 1e9,\n [\"SOL_USDC_RAYDIUM\" /* SOL_USDC_RAYDIUM */]: 1e9,\n [\"RAY_USDC_RAYDIUM\" /* RAY_USDC_RAYDIUM */]: 1e6,\n [\"SOL_USDT_RAYDIUM\" /* SOL_USDT_RAYDIUM */]: 1e9,\n [\"SOL_USDC_ORCA\" /* SOL_USDC_ORCA */]: 1e6,\n [\"mSOL_SOL_ORCA\" /* mSOL_SOL_ORCA */]: 1e6,\n [\"ORCA_USDC_ORCA\" /* ORCA_USDC_ORCA */]: 1e6,\n [\"ORCA_SOL_ORCA\" /* ORCA_SOL_ORCA */]: 1e6,\n [\"ETH_USDC_ORCA\" /* ETH_USDC_ORCA */]: 1e6,\n [\"SOL_USDT_ORCA\" /* SOL_USDT_ORCA */]: 1e6,\n [\"mSOL_SOL_RAYDIUM\" /* mSOL_SOL_RAYDIUM */]: 1e9,\n [\"ETH_SOL_ORCA\" /* ETH_SOL_ORCA */]: 1e6,\n [\"BTC_mSOL_ORCA\" /* BTC_mSOL_ORCA */]: 1e6,\n [\"mSOL_USDC_ORCA\" /* mSOL_USDC_ORCA */]: 1e6,\n [\"USTv2_USDC_SABER\" /* USTv2_USDC_SABER */]: 1e6,\n [\"APT_USDC_ORCA\" /* APT_USDC_ORCA */]: 1e6,\n [\"RAY_USDT_RAYDIUM\" /* RAY_USDT_RAYDIUM */]: 1e6,\n [\"RAY_ETH_RAYDIUM\" /* RAY_ETH_RAYDIUM */]: 1e6,\n [\"RAY_SOL_RAYDIUM\" /* RAY_SOL_RAYDIUM */]: 1e6,\n [\"SRM_USDC_RAYDIUM\" /* SRM_USDC_RAYDIUM */]: 1e6,\n [\"stSOL_USTv2_ORCA\" /* stSOL_USTv2_ORCA */]: 1e6,\n [\"ORCA_whETH_ORCA\" /* ORCA_whETH_ORCA */]: 1e6\n};\nvar POOL_IDS = {\n [\"BTC\" /* BTC */]: 0,\n [\"ETH\" /* ETH */]: 1,\n [\"USDT\" /* USDT */]: 2,\n [\"USDC\" /* USDC */]: 3,\n [\"SOL\" /* SOL */]: 4,\n [\"USDT_USDC_SABER\" /* USDT_USDC_SABER */]: 5,\n [\"UST\" /* UST */]: 6,\n [\"USDC_USDT_ORCA\" /* USDC_USDT_ORCA */]: 8,\n [\"SOL_USDC_RAYDIUM\" /* SOL_USDC_RAYDIUM */]: 9,\n [\"RAY_USDC_RAYDIUM\" /* RAY_USDC_RAYDIUM */]: 10,\n [\"RAY\" /* RAY */]: 11,\n [\"mSOL\" /* mSOL */]: 12,\n [\"ORCA\" /* ORCA */]: 13,\n [\"SOL_USDT_RAYDIUM\" /* SOL_USDT_RAYDIUM */]: 14,\n [\"SOL_USDC_ORCA\" /* SOL_USDC_ORCA */]: 15,\n [\"mSOL_SOL_ORCA\" /* mSOL_SOL_ORCA */]: 16,\n [\"ORCA_USDC_ORCA\" /* ORCA_USDC_ORCA */]: 17,\n [\"ORCA_SOL_ORCA\" /* ORCA_SOL_ORCA */]: 18,\n [\"ETH_USDC_ORCA\" /* ETH_USDC_ORCA */]: 19,\n [\"SOL_USDT_ORCA\" /* SOL_USDT_ORCA */]: 20,\n [\"USTv2\" /* USTv2 */]: 21,\n [\"mSOL_SOL_RAYDIUM\" /* mSOL_SOL_RAYDIUM */]: 22,\n [\"ETH_SOL_ORCA\" /* ETH_SOL_ORCA */]: 23,\n [\"BTC_mSOL_ORCA\" /* BTC_mSOL_ORCA */]: 24,\n [\"mSOL_USDC_ORCA\" /* mSOL_USDC_ORCA */]: 25,\n [\"USTv2_USDC_SABER\" /* USTv2_USDC_SABER */]: 26,\n [\"APT\" /* APT */]: 27,\n [\"APT_USDC_ORCA\" /* APT_USDC_ORCA */]: 28,\n [\"FTT\" /* FTT */]: 29,\n [\"SRM\" /* SRM */]: 30,\n [\"RAY_USDT_RAYDIUM\" /* RAY_USDT_RAYDIUM */]: 31,\n [\"RAY_ETH_RAYDIUM\" /* RAY_ETH_RAYDIUM */]: 32,\n [\"RAY_SOL_RAYDIUM\" /* RAY_SOL_RAYDIUM */]: 33,\n [\"SRM_USDC_RAYDIUM\" /* SRM_USDC_RAYDIUM */]: 34,\n [\"stSOL\" /* stSOL */]: 35,\n [\"whETH\" /* whETH */]: 36,\n [\"scnSOL\" /* scnSOL */]: 37,\n [\"stSOL_USTv2_ORCA\" /* stSOL_USTv2_ORCA */]: 38,\n [\"ORCA_whETH_ORCA\" /* ORCA_whETH_ORCA */]: 39,\n [\"mSOL_SOL_SABER\" /* mSOL_SOL_SABER */]: 40,\n [\"stSOL_SOL_SABER\" /* stSOL_SOL_SABER */]: 41\n};\nvar LTVS = {\n [\"APT\" /* APT */]: 0,\n [\"BTC\" /* BTC */]: 0.85,\n [\"ETH\" /* ETH */]: 0.85,\n [\"mSOL\" /* mSOL */]: 0.8,\n [\"SOL\" /* SOL */]: 0.8,\n [\"stSOL\" /* stSOL */]: 0.8,\n [\"whETH\" /* whETH */]: 0.85,\n [\"scnSOL\" /* scnSOL */]: 0.8,\n [\"RAY\" /* RAY */]: 0.8,\n [\"ORCA\" /* ORCA */]: 0.8,\n [\"FTT\" /* FTT */]: 0.8,\n [\"SRM\" /* SRM */]: 0.8,\n [\"USDT\" /* USDT */]: 0.9,\n [\"USDC\" /* USDC */]: 0.9,\n [\"UST\" /* UST */]: 0.01,\n [\"USTv2\" /* USTv2 */]: 0.01,\n [\"USDT_USDC_SABER\" /* USDT_USDC_SABER */]: 0.8,\n [\"mSOL_SOL_SABER\" /* mSOL_SOL_SABER */]: 0.8,\n [\"stSOL_SOL_SABER\" /* stSOL_SOL_SABER */]: 0.8,\n [\"USDC_USDT_ORCA\" /* USDC_USDT_ORCA */]: 0.8,\n [\"SOL_USDC_RAYDIUM\" /* SOL_USDC_RAYDIUM */]: 0.8,\n [\"RAY_USDC_RAYDIUM\" /* RAY_USDC_RAYDIUM */]: 0.8,\n [\"SOL_USDT_RAYDIUM\" /* SOL_USDT_RAYDIUM */]: 0.8,\n [\"SOL_USDC_ORCA\" /* SOL_USDC_ORCA */]: 0.8,\n [\"mSOL_SOL_ORCA\" /* mSOL_SOL_ORCA */]: 0.8,\n [\"ORCA_USDC_ORCA\" /* ORCA_USDC_ORCA */]: 0.8,\n [\"ORCA_SOL_ORCA\" /* ORCA_SOL_ORCA */]: 0.8,\n [\"ETH_USDC_ORCA\" /* ETH_USDC_ORCA */]: 0.8,\n [\"SOL_USDT_ORCA\" /* SOL_USDT_ORCA */]: 0.8,\n [\"mSOL_SOL_RAYDIUM\" /* mSOL_SOL_RAYDIUM */]: 0.8,\n [\"ETH_SOL_ORCA\" /* ETH_SOL_ORCA */]: 0.8,\n [\"BTC_mSOL_ORCA\" /* BTC_mSOL_ORCA */]: 0.8,\n [\"mSOL_USDC_ORCA\" /* mSOL_USDC_ORCA */]: 0.8,\n [\"USTv2_USDC_SABER\" /* USTv2_USDC_SABER */]: 0.8,\n [\"APT_USDC_ORCA\" /* APT_USDC_ORCA */]: 0.4,\n [\"RAY_USDT_RAYDIUM\" /* RAY_USDT_RAYDIUM */]: 0.8,\n [\"RAY_ETH_RAYDIUM\" /* RAY_ETH_RAYDIUM */]: 0.8,\n [\"RAY_SOL_RAYDIUM\" /* RAY_SOL_RAYDIUM */]: 0.8,\n [\"SRM_USDC_RAYDIUM\" /* SRM_USDC_RAYDIUM */]: 0.8,\n [\"stSOL_USTv2_ORCA\" /* stSOL_USTv2_ORCA */]: 0.8,\n [\"ORCA_whETH_ORCA\" /* ORCA_whETH_ORCA */]: 0.8\n};\nvar InterestRate = class {\n constructor(baseRate, kink, kinkRate, fullRate) {\n this.baseRate = baseRate;\n this.kink = kink;\n this.kinkRate = kinkRate;\n this.fullRate = fullRate;\n invariant2(baseRate >= 0);\n invariant2(kink > 0);\n invariant2(kink < 1);\n invariant2(kinkRate > 0);\n invariant2(fullRate > kinkRate);\n this.multiplier = (kinkRate - baseRate) / kink;\n this.jumpMultiplier = (fullRate - kinkRate) / (1 - kink);\n }\n};\nvar INTEREST_RATES = {\n [\"BTC\" /* BTC */]: new InterestRate(0.02, 0.85, 0.2, 2),\n [\"ETH\" /* ETH */]: new InterestRate(0.02, 0.85, 0.2, 2),\n [\"SOL\" /* SOL */]: new InterestRate(0.02, 0.85, 0.2, 2),\n [\"mSOL\" /* mSOL */]: new InterestRate(0.02, 0.85, 0.2, 2),\n [\"stSOL\" /* stSOL */]: new InterestRate(0.02, 0.85, 0.2, 2),\n [\"whETH\" /* whETH */]: new InterestRate(0.02, 0.85, 0.2, 2),\n [\"scnSOL\" /* scnSOL */]: new InterestRate(0.02, 0.85, 0.2, 2),\n [\"APT\" /* APT */]: new InterestRate(0.02, 0.85, 0.2, 2),\n [\"RAY\" /* RAY */]: new InterestRate(0.02, 0.85, 0.2, 2),\n [\"ORCA\" /* ORCA */]: new InterestRate(0.02, 0.85, 0.2, 2),\n [\"SBR\" /* SBR */]: new InterestRate(0.02, 0.85, 0.2, 2),\n [\"FTT\" /* FTT */]: new InterestRate(0.02, 0.85, 0.2, 2),\n [\"SRM\" /* SRM */]: new InterestRate(0.02, 0.85, 0.2, 2),\n [\"USDT\" /* USDT */]: new InterestRate(0.01, 0.85, 0.08, 1),\n [\"USDC\" /* USDC */]: new InterestRate(0.01, 0.85, 0.08, 1),\n [\"UST\" /* UST */]: new InterestRate(0.01, 0.85, 0.2, 30),\n [\"USTv2\" /* USTv2 */]: new InterestRate(0.01, 0.9, 0.2, 30)\n};\nvar FEES = {\n [\"BTC\" /* BTC */]: 0.2,\n [\"ETH\" /* ETH */]: 0.2,\n [\"mSOL\" /* mSOL */]: 0.2,\n [\"SOL\" /* SOL */]: 0.2,\n [\"stSOL\" /* stSOL */]: 0.2,\n [\"whETH\" /* whETH */]: 0.2,\n [\"scnSOL\" /* scnSOL */]: 0.2,\n [\"APT\" /* APT */]: 0.2,\n [\"RAY\" /* RAY */]: 0.2,\n [\"ORCA\" /* ORCA */]: 0.2,\n [\"FTT\" /* FTT */]: 0.2,\n [\"SRM\" /* SRM */]: 0.2,\n [\"USDT\" /* USDT */]: 0.2,\n [\"USDC\" /* USDC */]: 0.2,\n [\"UST\" /* UST */]: 0.2,\n [\"USTv2\" /* USTv2 */]: 0.2,\n [\"USDT_USDC_SABER\" /* USDT_USDC_SABER */]: 0,\n [\"mSOL_SOL_SABER\" /* mSOL_SOL_SABER */]: 0,\n [\"stSOL_SOL_SABER\" /* stSOL_SOL_SABER */]: 0,\n [\"USDC_USDT_ORCA\" /* USDC_USDT_ORCA */]: 0.2,\n [\"SOL_USDC_RAYDIUM\" /* SOL_USDC_RAYDIUM */]: 0.2,\n [\"RAY_USDC_RAYDIUM\" /* RAY_USDC_RAYDIUM */]: 0.2,\n [\"SOL_USDT_RAYDIUM\" /* SOL_USDT_RAYDIUM */]: 0.2,\n [\"SOL_USDC_ORCA\" /* SOL_USDC_ORCA */]: 0.2,\n [\"mSOL_SOL_ORCA\" /* mSOL_SOL_ORCA */]: 0.2,\n [\"ORCA_USDC_ORCA\" /* ORCA_USDC_ORCA */]: 0.2,\n [\"ORCA_SOL_ORCA\" /* ORCA_SOL_ORCA */]: 0.2,\n [\"ETH_USDC_ORCA\" /* ETH_USDC_ORCA */]: 0.2,\n [\"SOL_USDT_ORCA\" /* SOL_USDT_ORCA */]: 0.2,\n [\"mSOL_SOL_RAYDIUM\" /* mSOL_SOL_RAYDIUM */]: 0,\n [\"ETH_SOL_ORCA\" /* ETH_SOL_ORCA */]: 0.2,\n [\"BTC_mSOL_ORCA\" /* BTC_mSOL_ORCA */]: 0.2,\n [\"mSOL_USDC_ORCA\" /* mSOL_USDC_ORCA */]: 0.2,\n [\"USTv2_USDC_SABER\" /* USTv2_USDC_SABER */]: 0.2,\n [\"APT_USDC_ORCA\" /* APT_USDC_ORCA */]: 0.2,\n [\"RAY_USDT_RAYDIUM\" /* RAY_USDT_RAYDIUM */]: 0.2,\n [\"RAY_ETH_RAYDIUM\" /* RAY_ETH_RAYDIUM */]: 0.2,\n [\"RAY_SOL_RAYDIUM\" /* RAY_SOL_RAYDIUM */]: 0.2,\n [\"SRM_USDC_RAYDIUM\" /* SRM_USDC_RAYDIUM */]: 0.2,\n [\"stSOL_USTv2_ORCA\" /* stSOL_USTv2_ORCA */]: 0.2,\n [\"ORCA_whETH_ORCA\" /* ORCA_whETH_ORCA */]: 0.2\n};\nvar CATEGORY = {\n [\"BTC\" /* BTC */]: \"volatile\" /* Volatile */,\n [\"ETH\" /* ETH */]: \"volatile\" /* Volatile */,\n [\"SOL\" /* SOL */]: \"volatile\" /* Volatile */,\n [\"mSOL\" /* mSOL */]: \"volatile\" /* Volatile */,\n [\"stSOL\" /* stSOL */]: \"volatile\" /* Volatile */,\n [\"whETH\" /* whETH */]: \"volatile\" /* Volatile */,\n [\"scnSOL\" /* scnSOL */]: \"volatile\" /* Volatile */,\n [\"APT\" /* APT */]: \"volatile\" /* Volatile */,\n [\"RAY\" /* RAY */]: \"volatile\" /* Volatile */,\n [\"ORCA\" /* ORCA */]: \"volatile\" /* Volatile */,\n [\"SBR\" /* SBR */]: \"volatile\" /* Volatile */,\n [\"MERC\" /* MERC */]: \"volatile\" /* Volatile */,\n [\"MNDE\" /* MNDE */]: \"volatile\" /* Volatile */,\n [\"FTT\" /* FTT */]: \"volatile\" /* Volatile */,\n [\"SRM\" /* SRM */]: \"volatile\" /* Volatile */,\n [\"wLDO\" /* wLDO */]: \"volatile\" /* Volatile */,\n [\"SOCN\" /* SOCN */]: \"volatile\" /* Volatile */,\n [\"wLUNA\" /* wLUNA */]: \"volatile\" /* Volatile */,\n [\"USDT\" /* USDT */]: \"stable\" /* Stable */,\n [\"USDC\" /* USDC */]: \"stable\" /* Stable */,\n [\"UST\" /* UST */]: \"stable\" /* Stable */,\n [\"USTv2\" /* USTv2 */]: \"stable\" /* Stable */,\n [\"USDT_USDC_SABER\" /* USDT_USDC_SABER */]: \"lp\" /* Lp */,\n [\"mSOL_SOL_SABER\" /* mSOL_SOL_SABER */]: \"lp\" /* Lp */,\n [\"stSOL_SOL_SABER\" /* stSOL_SOL_SABER */]: \"lp\" /* Lp */,\n [\"USDC_USDT_ORCA\" /* USDC_USDT_ORCA */]: \"lp\" /* Lp */,\n [\"UST_USDC_SABER\" /* UST_USDC_SABER */]: \"lp\" /* Lp */,\n [\"SOL_USDC_RAYDIUM\" /* SOL_USDC_RAYDIUM */]: \"lp\" /* Lp */,\n [\"RAY_USDC_RAYDIUM\" /* RAY_USDC_RAYDIUM */]: \"lp\" /* Lp */,\n [\"SOL_USDT_RAYDIUM\" /* SOL_USDT_RAYDIUM */]: \"lp\" /* Lp */,\n [\"SOL_USDC_ORCA\" /* SOL_USDC_ORCA */]: \"lp\" /* Lp */,\n [\"mSOL_SOL_ORCA\" /* mSOL_SOL_ORCA */]: \"lp\" /* Lp */,\n [\"ORCA_USDC_ORCA\" /* ORCA_USDC_ORCA */]: \"lp\" /* Lp */,\n [\"ORCA_SOL_ORCA\" /* ORCA_SOL_ORCA */]: \"lp\" /* Lp */,\n [\"ETH_USDC_ORCA\" /* ETH_USDC_ORCA */]: \"lp\" /* Lp */,\n [\"SOL_USDT_ORCA\" /* SOL_USDT_ORCA */]: \"lp\" /* Lp */,\n [\"mSOL_SOL_RAYDIUM\" /* mSOL_SOL_RAYDIUM */]: \"lp\" /* Lp */,\n [\"ETH_SOL_ORCA\" /* ETH_SOL_ORCA */]: \"lp\" /* Lp */,\n [\"BTC_mSOL_ORCA\" /* BTC_mSOL_ORCA */]: \"lp\" /* Lp */,\n [\"mSOL_USDC_ORCA\" /* mSOL_USDC_ORCA */]: \"lp\" /* Lp */,\n [\"USTv2_USDC_SABER\" /* USTv2_USDC_SABER */]: \"lp\" /* Lp */,\n [\"APT_USDC_ORCA\" /* APT_USDC_ORCA */]: \"lp\" /* Lp */,\n [\"RAY_USDT_RAYDIUM\" /* RAY_USDT_RAYDIUM */]: \"lp\" /* Lp */,\n [\"RAY_ETH_RAYDIUM\" /* RAY_ETH_RAYDIUM */]: \"lp\" /* Lp */,\n [\"RAY_SOL_RAYDIUM\" /* RAY_SOL_RAYDIUM */]: \"lp\" /* Lp */,\n [\"SRM_USDC_RAYDIUM\" /* SRM_USDC_RAYDIUM */]: \"lp\" /* Lp */,\n [\"stSOL_USTv2_ORCA\" /* stSOL_USTv2_ORCA */]: \"lp\" /* Lp */,\n [\"ORCA_whETH_ORCA\" /* ORCA_whETH_ORCA */]: \"lp\" /* Lp */\n};\nvar LIQUIDATION_DISCOUNT = {\n [\"BTC\" /* BTC */]: 0.04,\n [\"ETH\" /* ETH */]: 0.04,\n [\"SOL\" /* SOL */]: 0.04,\n [\"mSOL\" /* mSOL */]: 0.04,\n [\"stSOL\" /* stSOL */]: 0.04,\n [\"whETH\" /* whETH */]: 0.04,\n [\"scnSOL\" /* scnSOL */]: 0.04,\n [\"RAY\" /* RAY */]: 0.04,\n [\"APT\" /* APT */]: 0,\n [\"ORCA\" /* ORCA */]: 0.04,\n [\"FTT\" /* FTT */]: 0.04,\n [\"SRM\" /* SRM */]: 0.04,\n [\"USDT\" /* USDT */]: 0.04,\n [\"USDC\" /* USDC */]: 0.04,\n [\"UST\" /* UST */]: 0.04,\n [\"USTv2\" /* USTv2 */]: 0.04,\n [\"USDT_USDC_SABER\" /* USDT_USDC_SABER */]: 0,\n [\"mSOL_SOL_SABER\" /* mSOL_SOL_SABER */]: 0,\n [\"stSOL_SOL_SABER\" /* stSOL_SOL_SABER */]: 0,\n [\"USDC_USDT_ORCA\" /* USDC_USDT_ORCA */]: 0,\n [\"UST_USDC_SABER\" /* UST_USDC_SABER */]: 0,\n [\"SOL_USDC_RAYDIUM\" /* SOL_USDC_RAYDIUM */]: 0,\n [\"RAY_USDC_RAYDIUM\" /* RAY_USDC_RAYDIUM */]: 0,\n [\"SOL_USDT_RAYDIUM\" /* SOL_USDT_RAYDIUM */]: 0,\n [\"SOL_USDC_ORCA\" /* SOL_USDC_ORCA */]: 0,\n [\"mSOL_SOL_ORCA\" /* mSOL_SOL_ORCA */]: 0,\n [\"ORCA_USDC_ORCA\" /* ORCA_USDC_ORCA */]: 0,\n [\"ORCA_SOL_ORCA\" /* ORCA_SOL_ORCA */]: 0,\n [\"ETH_USDC_ORCA\" /* ETH_USDC_ORCA */]: 0,\n [\"SOL_USDT_ORCA\" /* SOL_USDT_ORCA */]: 0,\n [\"mSOL_SOL_RAYDIUM\" /* mSOL_SOL_RAYDIUM */]: 0,\n [\"ETH_SOL_ORCA\" /* ETH_SOL_ORCA */]: 0,\n [\"BTC_mSOL_ORCA\" /* BTC_mSOL_ORCA */]: 0,\n [\"mSOL_USDC_ORCA\" /* mSOL_USDC_ORCA */]: 0,\n [\"USTv2_USDC_SABER\" /* USTv2_USDC_SABER */]: 0,\n [\"APT_USDC_ORCA\" /* APT_USDC_ORCA */]: 0,\n [\"RAY_USDT_RAYDIUM\" /* RAY_USDT_RAYDIUM */]: 0,\n [\"RAY_ETH_RAYDIUM\" /* RAY_ETH_RAYDIUM */]: 0,\n [\"RAY_SOL_RAYDIUM\" /* RAY_SOL_RAYDIUM */]: 0,\n [\"SRM_USDC_RAYDIUM\" /* SRM_USDC_RAYDIUM */]: 0,\n [\"stSOL_USTv2_ORCA\" /* stSOL_USTv2_ORCA */]: 0,\n [\"ORCA_whETH_ORCA\" /* ORCA_whETH_ORCA */]: 0\n};\nvar LP_TO_LR = {\n [\"USDT_USDC_SABER\" /* USDT_USDC_SABER */]: [\"USDT\" /* USDT */, \"USDC\" /* USDC */],\n [\"mSOL_SOL_SABER\" /* mSOL_SOL_SABER */]: [\"mSOL\" /* mSOL */, \"SOL\" /* SOL */],\n [\"stSOL_SOL_SABER\" /* stSOL_SOL_SABER */]: [\"stSOL\" /* stSOL */, \"SOL\" /* SOL */],\n [\"USDC_USDT_ORCA\" /* USDC_USDT_ORCA */]: [\"USDC\" /* USDC */, \"USDT\" /* USDT */],\n [\"UST_USDC_SABER\" /* UST_USDC_SABER */]: [\"UST\" /* UST */, \"USDC\" /* USDC */],\n [\"SOL_USDC_RAYDIUM\" /* SOL_USDC_RAYDIUM */]: [\"SOL\" /* SOL */, \"USDC\" /* USDC */],\n [\"RAY_USDC_RAYDIUM\" /* RAY_USDC_RAYDIUM */]: [\"RAY\" /* RAY */, \"USDC\" /* USDC */],\n [\"SOL_USDT_RAYDIUM\" /* SOL_USDT_RAYDIUM */]: [\"SOL\" /* SOL */, \"USDT\" /* USDT */],\n [\"SOL_USDC_ORCA\" /* SOL_USDC_ORCA */]: [\"SOL\" /* SOL */, \"USDC\" /* USDC */],\n [\"mSOL_SOL_ORCA\" /* mSOL_SOL_ORCA */]: [\"mSOL\" /* mSOL */, \"SOL\" /* SOL */],\n [\"ORCA_USDC_ORCA\" /* ORCA_USDC_ORCA */]: [\"ORCA\" /* ORCA */, \"USDC\" /* USDC */],\n [\"ORCA_SOL_ORCA\" /* ORCA_SOL_ORCA */]: [\"ORCA\" /* ORCA */, \"SOL\" /* SOL */],\n [\"ETH_USDC_ORCA\" /* ETH_USDC_ORCA */]: [\"ETH\" /* ETH */, \"USDC\" /* USDC */],\n [\"SOL_USDT_ORCA\" /* SOL_USDT_ORCA */]: [\"SOL\" /* SOL */, \"USDT\" /* USDT */],\n [\"mSOL_SOL_RAYDIUM\" /* mSOL_SOL_RAYDIUM */]: [\"mSOL\" /* mSOL */, \"SOL\" /* SOL */],\n [\"ETH_SOL_ORCA\" /* ETH_SOL_ORCA */]: [\"ETH\" /* ETH */, \"SOL\" /* SOL */],\n [\"BTC_mSOL_ORCA\" /* BTC_mSOL_ORCA */]: [\"BTC\" /* BTC */, \"mSOL\" /* mSOL */],\n [\"mSOL_USDC_ORCA\" /* mSOL_USDC_ORCA */]: [\"mSOL\" /* mSOL */, \"USDC\" /* USDC */],\n [\"USTv2_USDC_SABER\" /* USTv2_USDC_SABER */]: [\"USTv2\" /* USTv2 */, \"USDC\" /* USDC */],\n [\"APT_USDC_ORCA\" /* APT_USDC_ORCA */]: [\"APT\" /* APT */, \"USDC\" /* USDC */],\n [\"RAY_USDT_RAYDIUM\" /* RAY_USDT_RAYDIUM */]: [\"RAY\" /* RAY */, \"USDT\" /* USDT */],\n [\"RAY_ETH_RAYDIUM\" /* RAY_ETH_RAYDIUM */]: [\"RAY\" /* RAY */, \"ETH\" /* ETH */],\n [\"RAY_SOL_RAYDIUM\" /* RAY_SOL_RAYDIUM */]: [\"RAY\" /* RAY */, \"SOL\" /* SOL */],\n [\"SRM_USDC_RAYDIUM\" /* SRM_USDC_RAYDIUM */]: [\"SRM\" /* SRM */, \"USDC\" /* USDC */],\n [\"stSOL_USTv2_ORCA\" /* stSOL_USTv2_ORCA */]: [\"stSOL\" /* stSOL */, \"USTv2\" /* USTv2 */],\n [\"ORCA_whETH_ORCA\" /* ORCA_whETH_ORCA */]: [\"ORCA\" /* ORCA */, \"whETH\" /* whETH */]\n};\nvar LP_TO_TARGET_SWAP = {\n [\"USDT_USDC_SABER\" /* USDT_USDC_SABER */]: SWAP_SABER,\n [\"mSOL_SOL_SABER\" /* mSOL_SOL_SABER */]: SWAP_SABER,\n [\"stSOL_SOL_SABER\" /* stSOL_SOL_SABER */]: SWAP_SABER,\n [\"USDC_USDT_ORCA\" /* USDC_USDT_ORCA */]: SWAP_ORCA,\n [\"UST_USDC_SABER\" /* UST_USDC_SABER */]: SWAP_SABER,\n [\"SOL_USDC_RAYDIUM\" /* SOL_USDC_RAYDIUM */]: SWAP_RAYDIUM,\n [\"RAY_USDC_RAYDIUM\" /* RAY_USDC_RAYDIUM */]: SWAP_RAYDIUM,\n [\"SOL_USDT_RAYDIUM\" /* SOL_USDT_RAYDIUM */]: SWAP_RAYDIUM,\n [\"SOL_USDC_ORCA\" /* SOL_USDC_ORCA */]: SWAP_ORCA,\n [\"mSOL_SOL_ORCA\" /* mSOL_SOL_ORCA */]: SWAP_ORCA,\n [\"ORCA_USDC_ORCA\" /* ORCA_USDC_ORCA */]: SWAP_ORCA,\n [\"ORCA_SOL_ORCA\" /* ORCA_SOL_ORCA */]: SWAP_ORCA,\n [\"ETH_USDC_ORCA\" /* ETH_USDC_ORCA */]: SWAP_ORCA,\n [\"SOL_USDT_ORCA\" /* SOL_USDT_ORCA */]: SWAP_ORCA,\n [\"mSOL_SOL_RAYDIUM\" /* mSOL_SOL_RAYDIUM */]: SWAP_RAYDIUM,\n [\"ETH_SOL_ORCA\" /* ETH_SOL_ORCA */]: SWAP_ORCA,\n [\"BTC_mSOL_ORCA\" /* BTC_mSOL_ORCA */]: SWAP_ORCA,\n [\"mSOL_USDC_ORCA\" /* mSOL_USDC_ORCA */]: SWAP_ORCA,\n [\"USTv2_USDC_SABER\" /* USTv2_USDC_SABER */]: SWAP_SABER,\n [\"APT_USDC_ORCA\" /* APT_USDC_ORCA */]: SWAP_ORCA,\n [\"RAY_USDT_RAYDIUM\" /* RAY_USDT_RAYDIUM */]: SWAP_RAYDIUM,\n [\"RAY_ETH_RAYDIUM\" /* RAY_ETH_RAYDIUM */]: SWAP_RAYDIUM,\n [\"RAY_SOL_RAYDIUM\" /* RAY_SOL_RAYDIUM */]: SWAP_RAYDIUM,\n [\"SRM_USDC_RAYDIUM\" /* SRM_USDC_RAYDIUM */]: SWAP_RAYDIUM,\n [\"stSOL_USTv2_ORCA\" /* stSOL_USTv2_ORCA */]: SWAP_ORCA,\n [\"ORCA_whETH_ORCA\" /* ORCA_whETH_ORCA */]: SWAP_ORCA\n};\nvar LP_TO_DEX = {\n [\"USDT_USDC_SABER\" /* USDT_USDC_SABER */]: 2 /* Saber */,\n [\"mSOL_SOL_SABER\" /* mSOL_SOL_SABER */]: 2 /* Saber */,\n [\"stSOL_SOL_SABER\" /* stSOL_SOL_SABER */]: 2 /* Saber */,\n [\"USDC_USDT_ORCA\" /* USDC_USDT_ORCA */]: 4 /* Orca */,\n [\"UST_USDC_SABER\" /* UST_USDC_SABER */]: 2 /* Saber */,\n [\"SOL_USDC_RAYDIUM\" /* SOL_USDC_RAYDIUM */]: 1 /* Raydium */,\n [\"RAY_USDC_RAYDIUM\" /* RAY_USDC_RAYDIUM */]: 1 /* Raydium */,\n [\"SOL_USDT_RAYDIUM\" /* SOL_USDT_RAYDIUM */]: 1 /* Raydium */,\n [\"SOL_USDC_ORCA\" /* SOL_USDC_ORCA */]: 4 /* Orca */,\n [\"mSOL_SOL_ORCA\" /* mSOL_SOL_ORCA */]: 4 /* Orca */,\n [\"ORCA_USDC_ORCA\" /* ORCA_USDC_ORCA */]: 4 /* Orca */,\n [\"ORCA_SOL_ORCA\" /* ORCA_SOL_ORCA */]: 4 /* Orca */,\n [\"ETH_USDC_ORCA\" /* ETH_USDC_ORCA */]: 4 /* Orca */,\n [\"SOL_USDT_ORCA\" /* SOL_USDT_ORCA */]: 4 /* Orca */,\n [\"mSOL_SOL_RAYDIUM\" /* mSOL_SOL_RAYDIUM */]: 1 /* Raydium */,\n [\"ETH_SOL_ORCA\" /* ETH_SOL_ORCA */]: 4 /* Orca */,\n [\"BTC_mSOL_ORCA\" /* BTC_mSOL_ORCA */]: 4 /* Orca */,\n [\"mSOL_USDC_ORCA\" /* mSOL_USDC_ORCA */]: 4 /* Orca */,\n [\"USTv2_USDC_SABER\" /* USTv2_USDC_SABER */]: 2 /* Saber */,\n [\"APT_USDC_ORCA\" /* APT_USDC_ORCA */]: 4 /* Orca */,\n [\"RAY_USDT_RAYDIUM\" /* RAY_USDT_RAYDIUM */]: 1 /* Raydium */,\n [\"RAY_ETH_RAYDIUM\" /* RAY_ETH_RAYDIUM */]: 1 /* Raydium */,\n [\"RAY_SOL_RAYDIUM\" /* RAY_SOL_RAYDIUM */]: 1 /* Raydium */,\n [\"SRM_USDC_RAYDIUM\" /* SRM_USDC_RAYDIUM */]: 1 /* Raydium */,\n [\"stSOL_USTv2_ORCA\" /* stSOL_USTv2_ORCA */]: 4 /* Orca */,\n [\"ORCA_whETH_ORCA\" /* ORCA_whETH_ORCA */]: 4 /* Orca */\n};\nvar LP_TO_NEED_2ND_STAKE = {\n [\"USDT_USDC_SABER\" /* USDT_USDC_SABER */]: false,\n [\"mSOL_SOL_SABER\" /* mSOL_SOL_SABER */]: false,\n [\"stSOL_SOL_SABER\" /* stSOL_SOL_SABER */]: false,\n [\"USDC_USDT_ORCA\" /* USDC_USDT_ORCA */]: false,\n [\"UST_USDC_SABER\" /* UST_USDC_SABER */]: false,\n [\"SOL_USDC_RAYDIUM\" /* SOL_USDC_RAYDIUM */]: true,\n [\"RAY_USDC_RAYDIUM\" /* RAY_USDC_RAYDIUM */]: true,\n [\"SOL_USDT_RAYDIUM\" /* SOL_USDT_RAYDIUM */]: true,\n [\"SOL_USDC_ORCA\" /* SOL_USDC_ORCA */]: false,\n [\"mSOL_SOL_ORCA\" /* mSOL_SOL_ORCA */]: true,\n [\"ORCA_USDC_ORCA\" /* ORCA_USDC_ORCA */]: false,\n [\"ORCA_SOL_ORCA\" /* ORCA_SOL_ORCA */]: false,\n [\"ETH_USDC_ORCA\" /* ETH_USDC_ORCA */]: false,\n [\"SOL_USDT_ORCA\" /* SOL_USDT_ORCA */]: false,\n [\"mSOL_SOL_RAYDIUM\" /* mSOL_SOL_RAYDIUM */]: false,\n [\"ETH_SOL_ORCA\" /* ETH_SOL_ORCA */]: false,\n [\"BTC_mSOL_ORCA\" /* BTC_mSOL_ORCA */]: true,\n [\"mSOL_USDC_ORCA\" /* mSOL_USDC_ORCA */]: true,\n [\"USTv2_USDC_SABER\" /* USTv2_USDC_SABER */]: false,\n [\"APT_USDC_ORCA\" /* APT_USDC_ORCA */]: false,\n [\"RAY_USDT_RAYDIUM\" /* RAY_USDT_RAYDIUM */]: true,\n [\"RAY_ETH_RAYDIUM\" /* RAY_ETH_RAYDIUM */]: true,\n [\"RAY_SOL_RAYDIUM\" /* RAY_SOL_RAYDIUM */]: true,\n [\"SRM_USDC_RAYDIUM\" /* SRM_USDC_RAYDIUM */]: true,\n [\"stSOL_USTv2_ORCA\" /* stSOL_USTv2_ORCA */]: false,\n [\"ORCA_whETH_ORCA\" /* ORCA_whETH_ORCA */]: false\n};\nvar SWAP_METAS = {\n [SWAP_SABER]: {\n stake_program: new PublicKey(\"QMNeHCGYnLVDn1icRAfQZpjPLBNkfGbSKRB83G5d8KB\"),\n deposit_program: new PublicKey(\"SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ\"),\n redeem_program: new PublicKey(\"RDM23yr8pr1kEAmhnFpaabPny6C9UVcEcok3Py5v86X\")\n },\n [SWAP_ORCA]: {\n depositProgramPubkey: new PublicKey(\"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\"),\n farmProgramPubkey: new PublicKey(\"82yxjeMsvaURa4MbZZ7WZZHfobirZYkH1zF8fmeGtyaQ\")\n },\n [SWAP_RAYDIUM]: {\n depositProgramPubkey: new PublicKey(\"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\"),\n stakeProgramPubkey: new PublicKey(\"EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q\"),\n stakeProgramV5Pubkey: new PublicKey(\"9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z\")\n }\n};\nvar isPublicOrAlpha = (ownerKey) => {\n const isPublic = ownerKey.toString() === \"7Ne6h2w3LpTNTa7CNYcUs7UkjeJT3oW7jcrXWfVScTXW\";\n const isAlpha = ownerKey.toString() === \"GipxmFXdiJaSevu6StymY2aphKVxgYmAmf2dT3fTEASc\";\n if (!isAlpha && !isPublic) {\n throw new Error(`Unknown ownerKey: ${ownerKey.toString()}`);\n }\n return { isPublic, isAlpha };\n};\nvar DUAL_REWARD_CONFIGS = {\n [\"mSOL\" /* mSOL */]: { tokenId: \"MNDE\" /* MNDE */, multiplier: new Decimal(0.195) },\n [\"stSOL\" /* stSOL */]: { tokenId: \"wLDO\" /* wLDO */, multiplier: new Decimal(10 / 250) },\n [\"scnSOL\" /* scnSOL */]: { tokenId: \"SOCN\" /* SOCN */, multiplier: new Decimal(65 / 125) },\n [\"USTv2\" /* USTv2 */]: { tokenId: \"wLUNA\" /* wLUNA */, multiplier: new Decimal(1.1 / 250) }\n};\nvar SaberLpSwapInfo = class {\n constructor(args) {\n this.swap = args.swap;\n this.swapAuthority = args.swapAuthority;\n this.tokenAVault = args.tokenAVault;\n this.tokenBVault = args.tokenBVault;\n this.tokenAfees = args.tokenAfees;\n this.tokenBfees = args.tokenBfees;\n this.quarry = args.quarry;\n this.rewarder = args.rewarder;\n this.mint = args.mint;\n }\n async getMinerKey(ownerKey) {\n const [key, bump] = await PublicKey.findProgramAddress(\n [Buffer.from(\"Miner\"), this.quarry.toBuffer(), ownerKey.toBuffer()],\n SWAP_METAS[SWAP_SABER].stake_program\n );\n return [key, bump];\n }\n async getMinerVault(ownerKey) {\n const [minerKey] = await this.getMinerKey(ownerKey);\n return await Token.getAssociatedTokenAddress(\n ASSOCIATED_TOKEN_PROGRAM_ID,\n TOKEN_PROGRAM_ID,\n this.mint,\n minerKey,\n true\n );\n }\n async getLpDepositKeys(_ownerKey) {\n const smeta = SWAP_METAS[SWAP_SABER];\n return [\n { pubkey: smeta.deposit_program, isSigner: false, isWritable: false },\n { pubkey: this.swap, isSigner: false, isWritable: false },\n { pubkey: this.swapAuthority, isSigner: false, isWritable: false },\n { pubkey: this.tokenAVault, isSigner: false, isWritable: true },\n { pubkey: this.tokenBVault, isSigner: false, isWritable: true },\n { pubkey: this.mint, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false }\n ];\n }\n async getLpWithdrawKeys() {\n const smeta = SWAP_METAS[SWAP_SABER];\n return [\n { pubkey: smeta.deposit_program, isSigner: false, isWritable: false },\n { pubkey: this.swap, isSigner: false, isWritable: false },\n { pubkey: this.swapAuthority, isSigner: false, isWritable: false },\n { pubkey: this.mint, isSigner: false, isWritable: true },\n { pubkey: this.tokenAVault, isSigner: false, isWritable: true },\n { pubkey: this.tokenBVault, isSigner: false, isWritable: true },\n { pubkey: this.tokenAfees, isSigner: false, isWritable: true },\n { pubkey: this.tokenBfees, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false }\n ];\n }\n async getLpStakeKeys(ownerKey) {\n const smeta = SWAP_METAS[SWAP_SABER];\n const [minerKey, _minerBump] = await this.getMinerKey(ownerKey);\n const minerVault = await this.getMinerVault(ownerKey);\n return [\n { pubkey: smeta.stake_program, isSigner: false, isWritable: false },\n { pubkey: minerKey, isSigner: false, isWritable: true },\n { pubkey: this.quarry, isSigner: false, isWritable: true },\n { pubkey: minerVault, isSigner: false, isWritable: true },\n { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: this.rewarder, isSigner: false, isWritable: false },\n { pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false }\n ];\n }\n getLRVaults() {\n const isUSDT_USDC = this.mint.toString() === MINTS.USDT_USDC_SABER.toString();\n if (isUSDT_USDC) {\n return [this.tokenBVault, this.tokenAVault];\n } else {\n return [this.tokenAVault, this.tokenBVault];\n }\n }\n};\nvar OrcaLpSwapInfo = class {\n constructor(args) {\n this.isDoubleDipSupported = false;\n this.lpMintPubkey = args.lpMintPubkey;\n this.swapPubkey = args.swapPubkey;\n this.swapAuthority = args.swapAuthority;\n this.swapTokenAAccount = args.swapTokenAAccount;\n this.swapTokenBAccount = args.swapTokenBAccount;\n this.globalLpVault = args.globalLpVault;\n this.farmTokenMint = args.farmTokenMint;\n this.globalFarmState = args.globalFarmState;\n this.globalRewardTokenVault = args.globalRewardTokenVault;\n this.rewardTokenAuthority = args.rewardTokenAuthority;\n this.feeAccount = args.feeAccount;\n this.publicRewardTokAcc = args.publicRewardTokAcc;\n this.alphaRewardTokAcc = args.alphaRewardTokAcc;\n this.isDoubleDipSupported = !!args.isDoubleDipSupported;\n this.globalLp3Vault = args.globalLp3Vault;\n this.farmTokenLp3Mint = args.farmTokenLp3Mint;\n this.globalDoubleDipFarmState = args.globalDoubleDipFarmState;\n this.globalDoubleDipRewardTokenVault = args.globalDoubleDipRewardTokenVault;\n this.doubleDipRewardTokenAuthority = args.doubleDipRewardTokenAuthority;\n this.publicDoubleDipRewardAcc = args.publicDoubleDipRewardAcc;\n this.alphaDoubleDipRewardAcc = args.alphaDoubleDipRewardAcc;\n this.doubleDipRewardMint = args.doubleDipRewardMint;\n if (this.isDoubleDipSupported) {\n invariant2(\n this.globalLp3Vault && this.farmTokenLp3Mint && this.globalDoubleDipFarmState && this.globalDoubleDipRewardTokenVault && this.doubleDipRewardTokenAuthority && this.publicDoubleDipRewardAcc && this.alphaDoubleDipRewardAcc && this.doubleDipRewardMint\n );\n }\n }\n async getPdaKeys(ownerKey) {\n const smeta = SWAP_METAS[SWAP_ORCA];\n let pdaRewardTokenAccount;\n const { isPublic } = isPublicOrAlpha(ownerKey);\n if (isPublic) {\n pdaRewardTokenAccount = this.publicRewardTokAcc;\n } else {\n pdaRewardTokenAccount = this.alphaRewardTokAcc;\n }\n const pdaFarmTokenAccount = await getAssociatedTokenPubkey(ownerKey, this.farmTokenMint, true);\n const pdaFarmState = (await PublicKey.findProgramAddress(\n [this.globalFarmState.toBuffer(), ownerKey.toBuffer(), TOKEN_PROGRAM_ID.toBuffer()],\n smeta.farmProgramPubkey\n ))[0];\n return {\n pdaFarmTokenAccount,\n pdaRewardTokenAccount,\n pdaFarmState\n };\n }\n async getPdaDoubleDipKeys(ownerKey) {\n if (!this.isDoubleDipSupported) {\n throw new Error(\"Double dip not supported for getting pda keys\");\n }\n const smeta = SWAP_METAS[SWAP_ORCA];\n let pdaDoubleDipRewardTokenAccount;\n const { isPublic } = isPublicOrAlpha(ownerKey);\n if (isPublic) {\n pdaDoubleDipRewardTokenAccount = this.publicDoubleDipRewardAcc;\n } else {\n pdaDoubleDipRewardTokenAccount = this.alphaDoubleDipRewardAcc;\n }\n const pdaDoubleDipFarmTokenAccount = await getAssociatedTokenPubkey(\n ownerKey,\n this.farmTokenLp3Mint,\n true\n );\n const pdaDoubleDipFarmState = (await PublicKey.findProgramAddress(\n [\n this.globalDoubleDipFarmState.toBuffer(),\n ownerKey.toBuffer(),\n TOKEN_PROGRAM_ID.toBuffer()\n ],\n smeta.farmProgramPubkey\n ))[0];\n return {\n pdaDoubleDipFarmTokenAccount,\n pdaDoubleDipRewardTokenAccount,\n pdaDoubleDipFarmState\n };\n }\n async getLpDepositKeys(_ownerKey) {\n const smeta = SWAP_METAS[SWAP_ORCA];\n return [\n { pubkey: smeta.depositProgramPubkey, isSigner: false, isWritable: false },\n { pubkey: this.swapPubkey, isSigner: false, isWritable: false },\n { pubkey: this.swapAuthority, isSigner: false, isWritable: false },\n { pubkey: this.swapTokenAAccount, isSigner: false, isWritable: true },\n { pubkey: this.swapTokenBAccount, isSigner: false, isWritable: true },\n { pubkey: this.lpMintPubkey, isSigner: false, isWritable: true }\n ];\n }\n async getLpWithdrawKeys(_ownerKey) {\n const smeta = SWAP_METAS[SWAP_ORCA];\n return [\n { pubkey: smeta.depositProgramPubkey, isSigner: false, isWritable: false },\n { pubkey: this.swapPubkey, isSigner: false, isWritable: false },\n { pubkey: this.swapAuthority, isSigner: false, isWritable: false },\n { pubkey: this.lpMintPubkey, isSigner: false, isWritable: true },\n { pubkey: this.swapTokenAAccount, isSigner: false, isWritable: true },\n { pubkey: this.swapTokenBAccount, isSigner: false, isWritable: true },\n { pubkey: this.feeAccount, isSigner: false, isWritable: true }\n ];\n }\n async getLpStakeKeys(ownerKey) {\n if (this.isDoubleDipSupported) {\n return [];\n }\n return await this.getFirstStakeKeys(ownerKey);\n }\n async getFirstStakeKeys(ownerKey) {\n const smeta = SWAP_METAS[SWAP_ORCA];\n const pdaKeys = await this.getPdaKeys(ownerKey);\n return [\n { pubkey: smeta.farmProgramPubkey, isSigner: false, isWritable: false },\n { pubkey: this.globalLpVault, isSigner: false, isWritable: true },\n { pubkey: this.farmTokenMint, isSigner: false, isWritable: true },\n { pubkey: pdaKeys.pdaFarmTokenAccount, isSigner: false, isWritable: true },\n { pubkey: this.globalFarmState, isSigner: false, isWritable: true },\n { pubkey: pdaKeys.pdaFarmState, isSigner: false, isWritable: true },\n { pubkey: this.globalRewardTokenVault, isSigner: false, isWritable: true },\n { pubkey: pdaKeys.pdaRewardTokenAccount, isSigner: false, isWritable: true },\n { pubkey: this.rewardTokenAuthority, isSigner: false, isWritable: false },\n { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }\n ];\n }\n async getSecondStakeKeys(ownerKey) {\n const smeta = SWAP_METAS[SWAP_ORCA];\n const pdaKeys = await this.getPdaDoubleDipKeys(ownerKey);\n return [\n { pubkey: smeta.farmProgramPubkey, isSigner: false, isWritable: false },\n { pubkey: this.globalLp3Vault, isSigner: false, isWritable: true },\n { pubkey: this.farmTokenLp3Mint, isSigner: false, isWritable: true },\n { pubkey: pdaKeys.pdaDoubleDipFarmTokenAccount, isSigner: false, isWritable: true },\n { pubkey: this.globalDoubleDipFarmState, isSigner: false, isWritable: true },\n { pubkey: pdaKeys.pdaDoubleDipFarmState, isSigner: false, isWritable: true },\n { pubkey: this.globalDoubleDipRewardTokenVault, isSigner: false, isWritable: true },\n { pubkey: pdaKeys.pdaDoubleDipRewardTokenAccount, isSigner: false, isWritable: true },\n { pubkey: this.doubleDipRewardTokenAuthority, isSigner: false, isWritable: false },\n { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }\n ];\n }\n getLRVaults() {\n return [this.swapTokenAAccount, this.swapTokenBAccount];\n }\n};\nvar RaydiumLpSwapInfo = class {\n constructor(args) {\n this.lpMintPubkey = args.lpMintPubkey;\n this.ammIdPubkey = args.ammIdPubkey;\n this.ammAuthPubkey = args.ammAuthPubkey;\n this.ammOpenOrdersPubkey = args.ammOpenOrdersPubkey;\n this.ammTargetOrderPubkey = args.ammTargetOrderPubkey;\n this.poolCoinTokenPubkey = args.poolCoinTokenPubkey;\n this.poolPcTokenPubkey = args.poolPcTokenPubkey;\n this.poolWithdrawQueue = args.poolWithdrawQueue;\n this.poolTempLpTokenAccount = args.poolTempLpTokenAccount;\n this.serumProgramId = args.serumProgramId;\n this.serumMarketPubkey = args.serumMarketPubkey;\n this.serumCoinVaultAccount = args.serumCoinVaultAccount;\n this.serumPcVaultAccount = args.serumPcVaultAccount;\n this.serumVaultSigner = args.serumVaultSigner;\n this.rewardAccounts = args.rewardAccounts;\n this.stakeKeys = args.stakeKeys;\n this.stakeProgram = args.stakeProgram || SWAP_METAS[SWAP_RAYDIUM].stakeProgramV5Pubkey;\n this.serumEventQueueAccount = args.serumEventQueueAccount;\n this.serumBidsAccount = args.serumBidsAccount;\n this.serumAsksAccount = args.serumAsksAccount;\n }\n async getLpDepositKeys(_ownerKey) {\n const smeta = SWAP_METAS[SWAP_RAYDIUM];\n return [\n { pubkey: smeta.depositProgramPubkey, isSigner: false, isWritable: false },\n { pubkey: this.ammIdPubkey, isSigner: false, isWritable: true },\n { pubkey: this.ammAuthPubkey, isSigner: false, isWritable: false },\n { pubkey: this.ammOpenOrdersPubkey, isSigner: false, isWritable: false },\n { pubkey: this.ammTargetOrderPubkey, isSigner: false, isWritable: true },\n { pubkey: this.lpMintPubkey, isSigner: false, isWritable: true },\n { pubkey: this.poolCoinTokenPubkey, isSigner: false, isWritable: true },\n { pubkey: this.poolPcTokenPubkey, isSigner: false, isWritable: true },\n { pubkey: this.serumMarketPubkey, isSigner: false, isWritable: false }\n ];\n }\n async getLpWithdrawKeys(_ownerKey) {\n const smeta = SWAP_METAS[SWAP_RAYDIUM];\n return [\n { pubkey: smeta.depositProgramPubkey, isSigner: false, isWritable: false },\n { pubkey: this.ammIdPubkey, isSigner: false, isWritable: true },\n { pubkey: this.ammAuthPubkey, isSigner: false, isWritable: false },\n { pubkey: this.ammOpenOrdersPubkey, isSigner: false, isWritable: true },\n { pubkey: this.ammTargetOrderPubkey, isSigner: false, isWritable: true },\n { pubkey: this.lpMintPubkey, isSigner: false, isWritable: true },\n { pubkey: this.poolCoinTokenPubkey, isSigner: false, isWritable: true },\n { pubkey: this.poolPcTokenPubkey, isSigner: false, isWritable: true },\n { pubkey: this.poolWithdrawQueue, isSigner: false, isWritable: true },\n { pubkey: this.poolTempLpTokenAccount, isSigner: false, isWritable: true },\n { pubkey: this.serumProgramId, isSigner: false, isWritable: false },\n { pubkey: this.serumMarketPubkey, isSigner: false, isWritable: true },\n { pubkey: this.serumCoinVaultAccount, isSigner: false, isWritable: true },\n { pubkey: this.serumPcVaultAccount, isSigner: false, isWritable: true },\n { pubkey: this.serumVaultSigner, isSigner: false, isWritable: false },\n ...this.serumEventQueueAccount ? [\n { pubkey: this.serumEventQueueAccount, isSigner: false, isWritable: true },\n { pubkey: this.serumBidsAccount, isSigner: false, isWritable: true },\n { pubkey: this.serumAsksAccount, isSigner: false, isWritable: true }\n ] : []\n ];\n }\n async getLpStakeKeys(ownerKey) {\n if (!this.stakeKeys) {\n return [];\n } else {\n invariant2(this.rewardAccounts);\n const stkeys = this.stakeKeys;\n const userLedger = await this.getAssociatedLedger(ownerKey);\n console.log(`user ledger: ${userLedger.toBase58()}`);\n const { isPublic } = isPublicOrAlpha(ownerKey);\n const userRewardFirstAccount = isPublic ? this.rewardAccounts[0].userRewardPublicAccountPubkey : this.rewardAccounts[0].userRewardAlphaAccountPubkey;\n const keys = [\n { pubkey: this.stakeProgram, isSigner: false, isWritable: false },\n { pubkey: stkeys.poolIdPubkey, isSigner: false, isWritable: true },\n { pubkey: stkeys.poolAuthorityPubkey, isSigner: false, isWritable: false },\n { pubkey: userLedger, isSigner: false, isWritable: true },\n { pubkey: stkeys.poolLPVault, isSigner: false, isWritable: true },\n { pubkey: userRewardFirstAccount, isSigner: false, isWritable: true },\n { pubkey: this.rewardAccounts[0].rewardVault, isSigner: false, isWritable: true },\n { pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false },\n { pubkey: TOKEN_PROGRAM_ID, isSigner: false, isWritable: false }\n ];\n if (this.rewardAccounts.length > 1) {\n for (let i = 1; i < this.rewardAccounts.length; i++) {\n const userRewardAccount = isPublic ? this.rewardAccounts[i].userRewardPublicAccountPubkey : this.rewardAccounts[i].userRewardAlphaAccountPubkey;\n keys.push(\n ...[\n { pubkey: userRewardAccount, isSigner: false, isWritable: true },\n { pubkey: this.rewardAccounts[i].rewardVault, isSigner: false, isWritable: true }\n ]\n );\n }\n }\n return keys;\n }\n }\n async getUserRewardAccountsToClaim(ownerKey) {\n const { isPublic } = isPublicOrAlpha(ownerKey);\n return this.rewardAccounts.reduce((pre, cur) => {\n pre[cur.rewardToken] = isPublic ? cur.userRewardPublicAccountPubkey : cur.userRewardAlphaAccountPubkey;\n return pre;\n }, {});\n }\n getLRVaults() {\n return [this.poolCoinTokenPubkey, this.poolPcTokenPubkey];\n }\n async getAssociatedLedger(owner) {\n const poolId = this.stakeKeys?.poolIdPubkey;\n invariant2(poolId);\n const [publicKey] = await PublicKey.findProgramAddress(\n [poolId.toBuffer(), owner.toBuffer(), Buffer.from(\"staker_info_v2_associated_seed\", \"utf-8\")],\n this.stakeProgram\n );\n return publicKey;\n }\n};\nvar SABER_LP_METAS = {\n [\"USDT_USDC_SABER\" /* USDT_USDC_SABER */]: new SaberLpSwapInfo({\n swap: new PublicKey(\"YAkoNb6HKmSxQN9L8hiBE5tPJRsniSSMzND1boHmZxe\"),\n swapAuthority: new PublicKey(\"5C1k9yV7y4CjMnKv8eGYDgWND8P89Pdfj79Trk2qmfGo\"),\n tokenAVault: new PublicKey(\"CfWX7o2TswwbxusJ4hCaPobu2jLCb1hfXuXJQjVq3jQF\"),\n tokenBVault: new PublicKey(\"EnTrdMMpdhugeH6Ban6gYZWXughWxKtVGfCwFn78ZmY3\"),\n tokenAfees: new PublicKey(\"XZuQG7CQrAA6y6tHM9CLrDjDUWwuUU2SBoV7pLaGDQT\"),\n tokenBfees: new PublicKey(\"63aJYYuZddSnCGyE8FNrCVQWnXhjh6CQSRwcDeSMhdVC\"),\n quarry: new PublicKey(\"Hs1X5YtXwZACueUtS9azZyXFDWVxAMLvm3tttubpK7ph\"),\n rewarder: new PublicKey(\"rXhAofQCT7NN9TUqigyEAUzV1uLL4boeD8CRkNBSkYk\"),\n mint: new PublicKey(MINTS[\"USDT_USDC_SABER\" /* USDT_USDC_SABER */])\n }),\n [\"mSOL_SOL_SABER\" /* mSOL_SOL_SABER */]: new SaberLpSwapInfo({\n swap: new PublicKey(\"Lee1XZJfJ9Hm2K1qTyeCz1LXNc1YBZaKZszvNY4KCDw\"),\n swapAuthority: new PublicKey(\"2Sj4MZvmLhud4uRmGHJvDxq612nmF4JJsU1R4ZjNNGMS\"),\n tokenAVault: new PublicKey(\"9DgFSWkPDGijNKcLGbr3p5xoJbHsPgXUTr6QvGBJ5vGN\"),\n tokenBVault: new PublicKey(\"2hNHZg7XBhuhHVZ3JDEi4buq2fPQwuWBdQ9xkH7t1GQX\"),\n tokenAfees: new PublicKey(\"HzZRDMiJSqS5oxzfu17c35DChnkx58LZtas16Pgmuunn\"),\n tokenBfees: new PublicKey(\"3oebZVvPqba2egfdcbNXa1uS13SfSebxMaNVE82FMk7R\"),\n quarry: new PublicKey(\"7193EeecxsPPv9TMoQATTN8i1eTqEUSNU8aDLuFCQy68\"),\n rewarder: new PublicKey(\"rXhAofQCT7NN9TUqigyEAUzV1uLL4boeD8CRkNBSkYk\"),\n mint: new PublicKey(MINTS[\"mSOL_SOL_SABER\" /* mSOL_SOL_SABER */])\n }),\n [\"stSOL_SOL_SABER\" /* stSOL_SOL_SABER */]: new SaberLpSwapInfo({\n swap: new PublicKey(\"Lid8SLUxQ9RmF7XMqUA8c24RitTwzja8VSKngJxRcUa\"),\n swapAuthority: new PublicKey(\"8eyi347MTDeH5F6eVv2qjPxVnU685FFZLDGcj5QWHZ6y\"),\n tokenAVault: new PublicKey(\"4PgzyzLtds9bKZ2to9PMnKqJzKEUpjvNUaeN23phegax\"),\n tokenBVault: new PublicKey(\"AtymwxoVN9peZo7EXTcDz9jKVc4vRmisJKKrNfe3ewBa\"),\n tokenAfees: new PublicKey(\"2AbLYRQa7PV6gG6XgMjaey18RtPh85sXFmMmP4HsDdQK\"),\n tokenBfees: new PublicKey(\"Cv3YNq8iY1ttMS3iDgwBxd7QxnMC2pwcXUomtR7CTD8W\"),\n quarry: new PublicKey(\"2isVhcqVVpsAeZ94d1DGVErCQ7uZQNSJ85xikN8awHeC\"),\n rewarder: new PublicKey(\"rXhAofQCT7NN9TUqigyEAUzV1uLL4boeD8CRkNBSkYk\"),\n mint: new PublicKey(MINTS[\"stSOL_SOL_SABER\" /* stSOL_SOL_SABER */])\n }),\n [\"USTv2_USDC_SABER\" /* USTv2_USDC_SABER */]: new SaberLpSwapInfo({\n swap: new PublicKey(\"KwnjUuZhTMTSGAaavkLEmSyfobY16JNH4poL9oeeEvE\"),\n swapAuthority: new PublicKey(\"9osV5a7FXEjuMujxZJGBRXVAyQ5fJfBFNkyAf6fSz9kw\"),\n tokenAVault: new PublicKey(\"J63v6qEZmQpDqCD8bd4PXu2Pq5ZbyXrFcSa3Xt1HdAPQ\"),\n tokenBVault: new PublicKey(\"BnKQtTdLw9qPCDgZkWX3sURkBAoKCUYL1yahh6Mw7mRK\"),\n tokenAfees: new PublicKey(\"BYgyVxdrGa3XNj1cx1XHAVyRG8qYhBnv1DS59Bsvmg5h\"),\n tokenBfees: new PublicKey(\"G9nt2GazsDj3Ey3KdA49Sfaq9K95Dc72Ejps4NKTP2SR\"),\n quarry: new PublicKey(\"BYEUtsLjYAVHRiRR3Avjqnd2RQLRL8n933N52p9kSX2y\"),\n rewarder: new PublicKey(\"rXhAofQCT7NN9TUqigyEAUzV1uLL4boeD8CRkNBSkYk\"),\n mint: new PublicKey(MINTS[\"USTv2_USDC_SABER\" /* USTv2_USDC_SABER */])\n })\n};\nvar ORCA_LP_METAS = {\n [\"USDC_USDT_ORCA\" /* USDC_USDT_ORCA */]: new OrcaLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"USDC_USDT_ORCA\" /* USDC_USDT_ORCA */]),\n swapPubkey: new PublicKey(\"F13xvvx45jVGd84ynK3c8T89UejQVxjCLtmHfPmAXAHP\"),\n swapAuthority: new PublicKey(\"3cGHDS8uWhdxQj14vTmFtYHX3NMouPpE4o9MjQ43Bbf4\"),\n swapTokenAAccount: new PublicKey(\"6uUn2okWk5v4x9Gc4n2LLGHtWoa9tmizHq1363dW7t9W\"),\n swapTokenBAccount: new PublicKey(\"AiwmnLy7xPT28dqZpkRm6i1ZGwELUCzCsuN92v4JkSeU\"),\n globalLpVault: new PublicKey(\"9hPRfmQmZYiL4ZtuvGBk5SjMzmFCQ2h9a4GKoM82BR84\"),\n farmTokenMint: new PublicKey(\"GjpXgKwn4VW4J2pZdS3dovM58hiXWLJtopTfqG83zY2f\"),\n globalFarmState: new PublicKey(\"5psKJrxWnPmoAbCxk3An2CGh7wHAX2cWddf5vZuYbbVw\"),\n globalRewardTokenVault: new PublicKey(\"AYbtHmuJxXpo91m988UdyTtzC6J72WvMAW7XkXqFhAbz\"),\n rewardTokenAuthority: new PublicKey(\"5YGvg6mfuvJtHdVWDXTs4sYy6GwQAUduK8qurDcL111S\"),\n feeAccount: new PublicKey(\"B4RNxMJGRzKFQyTq2Uwkmpyjtew13n7KtdqZy6qgENTu\"),\n publicRewardTokAcc: new PublicKey(\"FSQWYCVXiGXRfKd1NmchusEa9wADez9eQGt5RY5eDjiy\"),\n alphaRewardTokAcc: new PublicKey(\"GUFm5nznu9B8Anfg3pZDxSofs8pUMjQZdVYnhbdvnkeV\")\n }),\n [\"SOL_USDC_ORCA\" /* SOL_USDC_ORCA */]: new OrcaLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"SOL_USDC_ORCA\" /* SOL_USDC_ORCA */]),\n swapPubkey: new PublicKey(\"EGZ7tiLeH62TPV1gL8WwbXGzEPa9zmcpVnnkPKKnrE2U\"),\n swapAuthority: new PublicKey(\"JU8kmKzDHF9sXWsnoznaFDFezLsE5uomX2JkRMbmsQP\"),\n swapTokenAAccount: new PublicKey(\"ANP74VNsHwSrq9uUSjiSNyNWvf6ZPrKTmE4gHoNd13Lg\"),\n swapTokenBAccount: new PublicKey(\"75HgnSvXbWKZBpZHveX68ZzAhDqMzNDS29X6BGLtxMo1\"),\n globalLpVault: new PublicKey(\"7ipefo5V3QEJWeuT2PohFSEUaranZxMSeWQo2rcNigr3\"),\n farmTokenMint: new PublicKey(\"FFdjrSvNALfdgxANNpt3x85WpeVMdQSH5SEP2poM8fcK\"),\n globalFarmState: new PublicKey(\"85HrPbJtrN82aeB74WTwoFxcNgmf5aDNP2ENngbDpd5G\"),\n globalRewardTokenVault: new PublicKey(\"kjjFC8RAF7GuBQ9iYgyTcPmvsRafJ2Ec2AmoS6DjakJ\"),\n rewardTokenAuthority: new PublicKey(\"MDcWkwPqr5HrA91g4GGax7bVP1NDDetnR12nGhoAdYj\"),\n feeAccount: new PublicKey(\"8JnSiuvQq3BVuCU3n4DrSTw9chBSPvEMswrhtifVkr1o\"),\n publicRewardTokAcc: new PublicKey(\"Hr5yQGW35HBP8fJLKfranRbbKzfSPHrhKFf1ZP68LmVp\"),\n alphaRewardTokAcc: new PublicKey(\"85hb3QUq7M8W3dMxCdxQ9vnezV7fRPBUGbq24XTEaLcg\")\n }),\n [\"mSOL_SOL_ORCA\" /* mSOL_SOL_ORCA */]: new OrcaLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"mSOL_SOL_ORCA\" /* mSOL_SOL_ORCA */]),\n swapPubkey: new PublicKey(\"9EQMEzJdE2LDAY1hw1RytpufdwAXzatYfQ3M2UuT9b88\"),\n swapAuthority: new PublicKey(\"6cwehd4xhKkJ2s7iGh4CaDb7KhMgqczSBnyNJieUYbHn\"),\n swapTokenAAccount: new PublicKey(\"6xmki5RtGNHrfhTiHFfp9k3RQ9t8qgL1cYP2YCG2h179\"),\n swapTokenBAccount: new PublicKey(\"Ew2coQtVGLeca31vqB2ssHntjzZgUy1ad9VuuAX8yw7p\"),\n globalLpVault: new PublicKey(\"DuTZUmTRydVc3EN78brdYFUfskn6s93zH4WhY3Fo53AJ\"),\n farmTokenMint: new PublicKey(\"3RTGL7gPF4V1ns1AeGFApT7cBEGVDfmJ77DqQi9AC6uG\"),\n globalFarmState: new PublicKey(\"JADWjBW1Xs8WhW8kj3GTCRQn3LR4gwvbFTEMwv9ZNxQh\"),\n globalRewardTokenVault: new PublicKey(\"7dpUACKvEiuq5kyoGtgiA131hYwdxfFhEeD5TMT4mnzG\"),\n rewardTokenAuthority: new PublicKey(\"CtXKDXJ4wzgto48QQFANestEgtov5dJRrs9qpRw7BV1h\"),\n feeAccount: new PublicKey(\"6j2tt2UVYMQwqG3hRtyydW3odzBFwy3pN33tyB3xCKQ6\"),\n publicRewardTokAcc: new PublicKey(\"CA59mFikUhJYLesKAxx8j8unHrxTfXSEPjzoXFyrG9M1\"),\n alphaRewardTokAcc: new PublicKey(\"3XNau9dqDSjAARS3cvTjzUv2nRU2FEzaGJd31f6NApUU\"),\n isDoubleDipSupported: LP_TO_NEED_2ND_STAKE[\"mSOL_SOL_ORCA\" /* mSOL_SOL_ORCA */],\n globalLp3Vault: new PublicKey(\"AEZpFdJ5hA7MwVS7AReBbS9pMhoYRhLXgDyc1GWbSoXc\"),\n farmTokenLp3Mint: new PublicKey(\"576ABEdvLG1iFU3bLC8AMJ3mo5LhfgPPhMtTeVAGG6u7\"),\n globalDoubleDipFarmState: new PublicKey(\"2SciNw7cEsKJc1PMRDzWCcEzvuScmEaUgmrJXCi9UFxY\"),\n globalDoubleDipRewardTokenVault: new PublicKey(\"DCHpFt1bCk9mTudj6VsKbADvUPT3tAJvJ2rcBZQry8Wz\"),\n doubleDipRewardTokenAuthority: new PublicKey(\"5uk8F4MaFSu1pF9Q7k8xcyWgqyo9q2dqr3Kb4Esvd1n3\"),\n publicDoubleDipRewardAcc: new PublicKey(\"5U5uowAVYyggB6DvVZE12cLZE7EjxkdKGt8VpvbsNbAy\"),\n alphaDoubleDipRewardAcc: new PublicKey(\"GfSzQknESVecnF5z9G1gpEtcaxZkcT742uUdbhJoU5Ap\"),\n doubleDipRewardMint: new PublicKey(\"MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey\")\n }),\n [\"ORCA_USDC_ORCA\" /* ORCA_USDC_ORCA */]: new OrcaLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"ORCA_USDC_ORCA\" /* ORCA_USDC_ORCA */]),\n swapPubkey: new PublicKey(\"2p7nYbtPBgtmY69NsE8DAW6szpRJn7tQvDnqvoEWQvjY\"),\n swapAuthority: new PublicKey(\"3fr1AhdiAmWLeNrS24CMoAu9pPgbzVhwLtJ6QUPmw2ob\"),\n swapTokenAAccount: new PublicKey(\"9vYWHBPz817wJdQpE8u3h8UoY3sZ16ZXdCcvLB7jY4Dj\"),\n swapTokenBAccount: new PublicKey(\"6UczejMUv1tzdvUzKpULKHxrK9sqLm8edR1v9jinVWm9\"),\n globalLpVault: new PublicKey(\"45BAAQCZYd2kP3Z3WvRwdtfUhvuW4FvpqVK4m8qrR5x1\"),\n farmTokenMint: new PublicKey(\"Gc7W5U66iuHQcC1cQyeX9hxkPF2QUVJPTf1NWbW8fNrt\"),\n globalFarmState: new PublicKey(\"9S1BsxbDNQXQccjFamVEGgxiYQHTeudvhEYwFr4oWeaf\"),\n globalRewardTokenVault: new PublicKey(\"DEiqe2Ta9TRMRtWdBqiFV13dhVrqCeG8MMmVwywvXvJo\"),\n rewardTokenAuthority: new PublicKey(\"66xaEjFoYfRcspc18oDj61mXDyznr9zam6tFNeqvs2jK\"),\n feeAccount: new PublicKey(\"7CXZED4jfRp3qdHB9Py3up6v1C4UhHofFvfT6RXbJLRN\"),\n publicRewardTokAcc: new PublicKey(\"G8cPgn6tiQQAQcTQupEi8fTBfo1RpqTii1hW65L4poTY\"),\n alphaRewardTokAcc: new PublicKey(\"8fFHftEm6PJBahCQukV6J27b7xzDeVPFdedjV1f4T36x\")\n }),\n [\"ORCA_SOL_ORCA\" /* ORCA_SOL_ORCA */]: new OrcaLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"ORCA_SOL_ORCA\" /* ORCA_SOL_ORCA */]),\n swapPubkey: new PublicKey(\"2ZnVuidTHpi5WWKUwFXauYGhvdT9jRKYv5MDahtbwtYr\"),\n swapAuthority: new PublicKey(\"2PH1quJj9MHQXATCmNZ6qQ2gZqM8R236DpKaz99ggVpm\"),\n swapTokenAAccount: new PublicKey(\"AioST8HKQJRqjE1mknk4Rydc8wVADhdQwRJmAAYX1T6Z\"),\n swapTokenBAccount: new PublicKey(\"73zdy95DynZP4exdpuXTDsexcrWbDJX9TFi2E6CDzXh4\"),\n globalLpVault: new PublicKey(\"7N7zxoDMMV1sCDiVEzinTyQxS2GoN388QprMCQX38BeT\"),\n farmTokenMint: new PublicKey(\"B5waaKnsmtqFawPspUwcuy1cRjAC7u2LrHSwxPSxK4sZ\"),\n globalFarmState: new PublicKey(\"F6pi7SyXWx56fP96mYQ4Yfh4yZ7oGNtDjwSYHT5Mz7Ld\"),\n globalRewardTokenVault: new PublicKey(\"CSbYA7Cd65Vis2oqX797zmnWmpgENmqrPdmPbTbRPykd\"),\n rewardTokenAuthority: new PublicKey(\"98RAHBKRTTC87nNwug1GEAnLVgouk9nRaa3u14jrp6Zz\"),\n feeAccount: new PublicKey(\"4Zc4kQZhRQeGztihvcGSWezJE1k44kKEgPCAkdeBfras\"),\n publicRewardTokAcc: new PublicKey(\"2G7ZWG9z6WtKJ5k5B32RTmLFB7hLVEnC5RmYD7gvCpG3\"),\n alphaRewardTokAcc: new PublicKey(\"8htfap3Gej5t4araQRHioggu2acsG3tQAc38PMtBhBhD\")\n }),\n [\"ETH_USDC_ORCA\" /* ETH_USDC_ORCA */]: new OrcaLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"ETH_USDC_ORCA\" /* ETH_USDC_ORCA */]),\n swapPubkey: new PublicKey(\"FgZut2qVQEyPBibaTJbbX2PxaMZvT1vjDebiVaDp5BWP\"),\n swapAuthority: new PublicKey(\"4dfCZR32xXhoTgMRhnViNaTFwiKP9A34TDjHCR3xM5rg\"),\n swapTokenAAccount: new PublicKey(\"H9h5yTBfCHcb4eRP87fXczzXgNaMzKihr7bf1sjw7iuZ\"),\n swapTokenBAccount: new PublicKey(\"JA98RXv2VdxQD8pRQq4dzJ1Bp4nH8nokCGmxvPWKJ3hx\"),\n globalLpVault: new PublicKey(\"6zoYTvgLd4UAhKSPwirEU9VNNNkpezwq8AM4jXW1Qop9\"),\n farmTokenMint: new PublicKey(\"HDP2AYFmvLz6sWpoSuNS62JjvW4HjMKp7doXucqpWN56\"),\n globalFarmState: new PublicKey(\"FpezTR76RRjgpBb9HhR6ap8BgQfkHyNMQSqJDcoXpjAb\"),\n globalRewardTokenVault: new PublicKey(\"9MWJmWVAGQ9C9SxwWKidStAA8HjDHpnZ7KfKgVJdrNtj\"),\n rewardTokenAuthority: new PublicKey(\"DFTLJrgsn7cLNX9hbqiUwM8C1y6f7AfyvEmbsFSkjQNR\"),\n feeAccount: new PublicKey(\"DLWewB12jzGn4wXJmFCddWDeof1Ma4cZYNRv9CP5hTvX\"),\n publicRewardTokAcc: new PublicKey(\"CtVJtQHSAcSQ3b4FD3A3Zk8vb2PaC4wn1oTnHtUMS8rf\"),\n alphaRewardTokAcc: new PublicKey(\"BSpFLmCAzJp5XMSfVXC2rq4LjJ2NSs2jqFS8agcENAkH\")\n }),\n [\"SOL_USDT_ORCA\" /* SOL_USDT_ORCA */]: new OrcaLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"SOL_USDT_ORCA\" /* SOL_USDT_ORCA */]),\n swapPubkey: new PublicKey(\"Dqk7mHQBx2ZWExmyrR2S8X6UG75CrbbpK2FSBZsNYsw6\"),\n swapAuthority: new PublicKey(\"2sxKY7hxVFrY5oNE2DgaPAJFamMzsmFLM2DgVcjK5yTy\"),\n swapTokenAAccount: new PublicKey(\"DTb8NKsfhEJGY1TrA7RXN6MBiTrjnkdMAfjPEjtmTT3M\"),\n swapTokenBAccount: new PublicKey(\"E8erPjPEorykpPjFV9yUYMYigEWKQUxuGfL2rJKLJ3KU\"),\n globalLpVault: new PublicKey(\"EXxH5tKDHLy68nWXS8w1BRUsiDEHMbKACLUmFWv8Q9tu\"),\n farmTokenMint: new PublicKey(\"71vZ7Jvu8fTyFzpX399dmoSovoz24rVbipLrRn2wBNzW\"),\n globalFarmState: new PublicKey(\"4RRRJkscV2DmwJUxTQgRdYock75GfwYJn7LTxy9rGTmY\"),\n globalRewardTokenVault: new PublicKey(\"H3ozvCeEwnsqnM2naCnXVxLLwH2XPC5kU8BH97XDpDwS\"),\n rewardTokenAuthority: new PublicKey(\"EavNUagNtD7DEdV4atcm3dEBXafARKCNJyNkyfz426m6\"),\n feeAccount: new PublicKey(\"BBKgw75FivTYXj85D2AWyVdaTdTWuSuHVXRm1Xu7fipb\"),\n publicRewardTokAcc: new PublicKey(\"9AfsnfPwRrJLjcCAasUcaYeVunpmxgev6yCVa6HiLkp7\"),\n alphaRewardTokAcc: new PublicKey(\"93xUo4bmSXdGxCNSDvk2xYH7YAY6KqDZ4mPMbwBuiyfm\")\n }),\n [\"ETH_SOL_ORCA\" /* ETH_SOL_ORCA */]: new OrcaLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"ETH_SOL_ORCA\" /* ETH_SOL_ORCA */]),\n swapPubkey: new PublicKey(\"EuK3xDa4rWuHeMQCBsHf1ETZNiEQb5C476oE9u9kp8Ji\"),\n swapAuthority: new PublicKey(\"DffrDbzPiswDJaiicBBo9CjqztKgFLrqXGwNJH4XQefZ\"),\n swapTokenAAccount: new PublicKey(\"7F2cLdio3i6CCJaypj9VfNDPW2DwT3vkDmZJDEfmxu6A\"),\n swapTokenBAccount: new PublicKey(\"5pUTGvN2AA2BEzBDU4CNDh3LHER15WS6J8oJf5XeZFD8\"),\n globalLpVault: new PublicKey(\"6ckhPnn6tCr88aq9SxhWaAA5G7izuXNKhVk1Xa62zhFD\"),\n farmTokenMint: new PublicKey(\"CGFTRh4jKLPbS9r4hZtbDfaRuC7qcA8rZpbLnVTzJBer\"),\n globalFarmState: new PublicKey(\"3ARgavt1NhqLmJWj3wAJy6XBarG6pJbEKRv1wzzRbbaN\"),\n globalRewardTokenVault: new PublicKey(\"FYTTVMqWPzbnhTsukgiWmPiNJam4yLTxHM9mpzdan2zo\"),\n rewardTokenAuthority: new PublicKey(\"HXY2Vvj2XyqiPNXV3PhM9YYKgfjqzXUX4tUFRnvqihdY\"),\n feeAccount: new PublicKey(\"unxKgWEc71ZiHwMqZs3VLqjcjmZhfTZEg94ZLGvjdMP\"),\n publicRewardTokAcc: new PublicKey(\"2NYnAKhCwCMoe5unHuaEQEYL1ugLypK8Hrx4Qp5ugSUf\"),\n alphaRewardTokAcc: new PublicKey(\"6uupGx988A2yiPEhZEayNSewkp45owfbQVrJcbcKoiC6\")\n }),\n [\"BTC_mSOL_ORCA\" /* BTC_mSOL_ORCA */]: new OrcaLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"BTC_mSOL_ORCA\" /* BTC_mSOL_ORCA */]),\n swapPubkey: new PublicKey(\"8DRw5wQE1pyg6RB1UwypGNFgb2Pzp2hpyDDNwo76Lcc8\"),\n swapAuthority: new PublicKey(\"3X1aLdyvcQNc8TvBMPiucMsRCnGMBnGsjJHpZEyCf3pn\"),\n swapTokenAAccount: new PublicKey(\"6D3sxC6yEe84FUnF5Kpbgx6gN57N9poJCKAtrCeCWdJo\"),\n swapTokenBAccount: new PublicKey(\"EPoVJLhi9QtVPVo8n31M5k5Knvb48j8zbYyRrUbrHwC5\"),\n globalLpVault: new PublicKey(\"75gpvckCXk49zTUwG8QrzUSP4NpWh3JXdyELBrnAhimL\"),\n farmTokenMint: new PublicKey(\"DzpLz78wuwyFsQToin8iDv6YK6aBEymRqQq82swiFh7r\"),\n globalFarmState: new PublicKey(\"GBrpFtiTabs14mc4Hi1RX9YiQY7res6JxrVfMTADfcQV\"),\n globalRewardTokenVault: new PublicKey(\"CNe5S831UP4YkumU7UsusTkf7uxJnAVdmPe6jhF51k4y\"),\n rewardTokenAuthority: new PublicKey(\"8sVCTztvytajkdczYEZVkSmuoRLjnMezwpT46L5w4RWR\"),\n feeAccount: new PublicKey(\"AqiLHbUAy4UWWKGVVgbHsaUVCMg1zemNkgsYBPSirT92\"),\n publicRewardTokAcc: new PublicKey(\"7Sfy525w1dpCQqXb2sEKuacV57333VCSCKGuubsxXvCc\"),\n alphaRewardTokAcc: new PublicKey(\"Bag2RfLUzSXYbnsnVAFeYYzfG6M4EGseUJsmJnC64Vrn\"),\n isDoubleDipSupported: LP_TO_NEED_2ND_STAKE[\"BTC_mSOL_ORCA\" /* BTC_mSOL_ORCA */],\n globalLp3Vault: new PublicKey(\"DuyHVLzsqg6SZeFNbpUWfJf67kvAXPWUdUGJYWJK5vTu\"),\n farmTokenLp3Mint: new PublicKey(\"6uA1ADUJbvwYJZpzUn9z9LuyKoRVngBKcQTKdXsSivA8\"),\n globalDoubleDipFarmState: new PublicKey(\"Cn7QNyosNQ8DyKEeMDPmtg66R7vKMXigcQ561kTkFD8E\"),\n globalDoubleDipRewardTokenVault: new PublicKey(\"Ea3FYh9RMJxwsyu3xS7BesLMtpX32DURohiEigG2iJCx\"),\n doubleDipRewardTokenAuthority: new PublicKey(\"9Lg5wBjcYDgY8S2ZAEqjtXAQ4UdHuw65aP1WmmWss4QX\"),\n doubleDipRewardMint: new PublicKey(\"MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey\"),\n alphaDoubleDipRewardAcc: new PublicKey(\"J5cxhkPf25Ff4NT7WfWhLQzp58dksfhBT1vqprxBY7D3\"),\n publicDoubleDipRewardAcc: new PublicKey(\"AoeNmMDdDBS7xyvXjtG79pCa8Duf4qFALs4KY49okdx2\")\n }),\n [\"mSOL_USDC_ORCA\" /* mSOL_USDC_ORCA */]: new OrcaLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"mSOL_USDC_ORCA\" /* mSOL_USDC_ORCA */]),\n swapPubkey: new PublicKey(\"Hme4Jnqhdz2jAPUMnS7jGE5zv6Y1ynqrUEhmUAWkXmzn\"),\n swapAuthority: new PublicKey(\"9Z7E42k46kxnBjAh8YGXDw3rRGwwxQUBYM7Ccrmwg6ZP\"),\n swapTokenAAccount: new PublicKey(\"GBa7G5f1FqAXEgByuHXsqsEdpyMjRgT9SNxZwmmnEJAY\"),\n swapTokenBAccount: new PublicKey(\"7hFgNawzzmpDM8TTVCKm8jykBrym8C3TQdb8TDAfAVkD\"),\n globalLpVault: new PublicKey(\"8F6NCo1PiakW7m3eeEZvdxsjXF5bkLD3QZsTxaNg9jvv\"),\n farmTokenMint: new PublicKey(\"5r3vDsNTGXXb9cGQfqyNuYD2bjhRPymGJBfDmKosR9Ev\"),\n globalFarmState: new PublicKey(\"EvtMzreDMq1U8ytV5fEmfoWNfPhrjZ87za835GuRvZCc\"),\n globalRewardTokenVault: new PublicKey(\"A1enLcj9XmuVeYCQScEruwnfAz7ksQhbuGFUgvgeS1a6\"),\n rewardTokenAuthority: new PublicKey(\"9czgZkSxLFtxmvWSb1PEHmUyBuNpAUxj9XAcHKikYnzt\"),\n feeAccount: new PublicKey(\"3W3Skj2vQsNEMhGRQprFXQy3Q8ZbM6ojdgiDCokVPWno\"),\n publicRewardTokAcc: new PublicKey(\"B16JMAgpR84Dr6rucq4GYLZV7pdk1uPF533P9KVwNUq4\"),\n alphaRewardTokAcc: new PublicKey(\"C7L8DS3ytgueAkcFojeshc2SEtePDPDXjv6gajyinGyL\"),\n isDoubleDipSupported: LP_TO_NEED_2ND_STAKE[\"mSOL_USDC_ORCA\" /* mSOL_USDC_ORCA */],\n globalLp3Vault: new PublicKey(\"CdbgqE5B9oADrSAWc51Mgw6c3B6nvYJ4c431rftpoVqZ\"),\n farmTokenLp3Mint: new PublicKey(\"9y3QYM5mcaB8tU7oXRzAQnzHVa75P8riDuPievLp64cY\"),\n globalDoubleDipFarmState: new PublicKey(\"5fhDMuGKRDPWVWXf7BBEwifRFrp6XwXctDQoG7UHGVt6\"),\n globalDoubleDipRewardTokenVault: new PublicKey(\"XbkV9HZpLdv3CjMUfoq4t8nkxR6UguHb4oP8aAKBGV2\"),\n doubleDipRewardTokenAuthority: new PublicKey(\"FvXa954NiCqE2jAthxV5oVcuuPAJCggwYtAihYDRhVUw\"),\n doubleDipRewardMint: new PublicKey(\"MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey\"),\n alphaDoubleDipRewardAcc: new PublicKey(\"H6pK9gb58SxvyCRZzgCj4kuX758sjYAcqPJpY1aBJzLv\"),\n publicDoubleDipRewardAcc: new PublicKey(\"3QaNhP4vT6PG3eoQwg2DRbH9ecmy7pR2f1PBPWCwDBYd\")\n }),\n [\"APT_USDC_ORCA\" /* APT_USDC_ORCA */]: new OrcaLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"APT_USDC_ORCA\" /* APT_USDC_ORCA */]),\n swapPubkey: new PublicKey(\"Fg3UabVqnfycMtkiTVoaia9eNafehtT9Y4TicH2iBtvK\"),\n swapAuthority: new PublicKey(\"JDEYn1JsacdxoB4v4mbctFSVrSUPttacX3gxWphFHJKZ\"),\n swapTokenAAccount: new PublicKey(\"636crNdZTf46gFUKuedaBCZDBMLahf7KGud2LyTMskU5\"),\n swapTokenBAccount: new PublicKey(\"DGEYFkEHyiuHWtHeCGiQGn1JbkGHqYrNwaP44miRbgxu\"),\n globalLpVault: new PublicKey(\"Ha7NSMkfjQt2pWF8JY5p89T38NpKdm5da4FR3sYednin\"),\n farmTokenMint: new PublicKey(\"Dx7DYSuaBufhXyQG7155ePkLmHyn6w7WeKKtQB9zscZV\"),\n globalFarmState: new PublicKey(\"3YZ5GYL625vWibn7d8hMdrMBawy9HGUyeTe4AoXoME1Q\"),\n globalRewardTokenVault: new PublicKey(\"HyCJbQkccvMwC5FHAYBMjQCKXEjDo9fbhBa5pj8sc2v5\"),\n rewardTokenAuthority: new PublicKey(\"53y344S5Cv32ViwajrHxnsgcmam7Mw2nydcRgJEkqdGd\"),\n feeAccount: new PublicKey(\"41H5mWwsZKewJeV4wWiNjQ3U4VYBnwqCpzvAWt86baHd\"),\n publicRewardTokAcc: new PublicKey(\"EgFva9mEFCV31AkhoZb6rN6zvbNGE1xdaRYAkKTtdNjN\"),\n alphaRewardTokAcc: new PublicKey(\"Cd5ijQFj1V7V5VwuoSkG6pEaPyeX2D9ZmqS7pE1RVdFX\")\n }),\n [\"stSOL_USTv2_ORCA\" /* stSOL_USTv2_ORCA */]: new OrcaLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"stSOL_USTv2_ORCA\" /* stSOL_USTv2_ORCA */]),\n swapPubkey: new PublicKey(\"9F3J6RY7PTkDb3SUUpg725uXyCceBGCpZrtmYGJwgMwF\"),\n swapAuthority: new PublicKey(\"wJydc21tAMxYDif8uvy5rWNGWDFNZnPPmqCvegyZRod\"),\n swapTokenAAccount: new PublicKey(\"GFso9SAGakm8ZFa3rmuonuerbcQ8ZbACNZN7idkKR5nw\"),\n swapTokenBAccount: new PublicKey(\"EZ7pJskN2a4pDknrdkLzGDHpzjbfgdBj3Tt594K9HZbL\"),\n globalLpVault: new PublicKey(\"EQBy5YqWkLxr1xx1CZh2dDdX57XR9Ata4jNJebtuR61h\"),\n farmTokenMint: new PublicKey(\"3Q44iV4URXdbS4Tk1PGs5VdWQoCxHB7zdcdMnemo8jfH\"),\n globalFarmState: new PublicKey(\"GxhewC22S6wsXT156yC9SARvDnijoc3YEYyLVcQFDUCx\"),\n globalRewardTokenVault: new PublicKey(\"FFjuVr4FYdRGkPwaQREVQWHsBFGwQ1LH6VkmVSJL5Vva\"),\n rewardTokenAuthority: new PublicKey(\"8za7LwVuYbP2PivS3KbeohpUkSmRqLdTDxhrVzsHyFZf\"),\n feeAccount: new PublicKey(\"5rCbmppxMBHwBjCkLUP6fireQ12cL8LRa26QRUimoxN6\"),\n publicRewardTokAcc: new PublicKey(\"6P4frmXufUBsT2s39zbQ5k5UDrzSpFcNKmZAgWZLHgMv\"),\n alphaRewardTokAcc: new PublicKey(\"DpBG9h4UWMfwRKXUzN1zo3jEkJLGE5RVz5Zt6Qr4Xt7c\")\n }),\n [\"ORCA_whETH_ORCA\" /* ORCA_whETH_ORCA */]: new OrcaLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"ORCA_whETH_ORCA\" /* ORCA_whETH_ORCA */]),\n swapPubkey: new PublicKey(\"D67u6UEuFp9Q4Fu2gnu5thxBoVj2eRgDDDirdWsMVsgm\"),\n swapAuthority: new PublicKey(\"4kwchkCnCaZPkBdnk85j9bJ9F1P883rwjbvsXGV7H5rM\"),\n swapTokenAAccount: new PublicKey(\"EMxDw1NjdddQjPk9gCUN4iDMy8HJ5siKYMVjGbjuUCrh\"),\n swapTokenBAccount: new PublicKey(\"DQyhcuEvE1K9DSd51agcNLg4CDrgthnKMVhU7q6R55LV\"),\n globalLpVault: new PublicKey(\"CYSwKVGEaPazRXUcCo2Ve9wyovK44E9ftLNSsvVqRuf1\"),\n farmTokenMint: new PublicKey(\"A7EAHvFEWzW8qSTFNLrEHN894GAZWZesNiebttEwtUGJ\"),\n globalFarmState: new PublicKey(\"AgWH92f8cPAuURyqehF6A9wFgupEsnDX3VP5eHyytabA\"),\n globalRewardTokenVault: new PublicKey(\"DoaerVHonB3FYpzKtqADug9UtrPLzgY1gbzZm6cRuymi\"),\n rewardTokenAuthority: new PublicKey(\"B1pahxFpN3GX4TKsw7fEDLw5MuuzmHNUbVcPZ6bp7KBM\"),\n feeAccount: new PublicKey(\"GdHXLai5M8FKedXUsECSzrV72nb1RTCCooFyTWT8WYmT\"),\n publicRewardTokAcc: new PublicKey(\"9jJVuB2UhzcGED6h476kieHwTVPmhY7EJsQyud38Q4r1\"),\n alphaRewardTokAcc: new PublicKey(\"HqTUasro97QUByk1LEbXGJCh672Bu1b5gnj31tLbbJfi\")\n })\n};\nvar RAYDIUM_LP_METAS = {\n [\"SOL_USDC_RAYDIUM\" /* SOL_USDC_RAYDIUM */]: new RaydiumLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"SOL_USDC_RAYDIUM\" /* SOL_USDC_RAYDIUM */]),\n ammIdPubkey: new PublicKey(\"58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2\"),\n ammAuthPubkey: new PublicKey(\"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\"),\n ammOpenOrdersPubkey: new PublicKey(\"HRk9CMrpq7Jn9sh7mzxE8CChHG8dneX9p475QKz4Fsfc\"),\n ammTargetOrderPubkey: new PublicKey(\n \"CZza3Ej4Mc58MnxWA385itCC9jCo3L1D7zc3LKy1bZMR\"\n ),\n poolCoinTokenPubkey: new PublicKey(\"DQyrAcCrDXQ7NeoqGgDCZwBvWDcYmFCjSb9JtteuvPpz\"),\n poolPcTokenPubkey: new PublicKey(\"HLmqeL62xR1QoZ1HKKbXRrdN1p3phKpxRMb2VVopvBBz\"),\n poolWithdrawQueue: new PublicKey(\"G7xeGGLevkRwB5f44QNgQtrPKBdMfkT6ZZwpS9xcC97n\"),\n poolTempLpTokenAccount: new PublicKey(\n \"Awpt6N7ZYPBa4vG4BQNFhFxDj4sxExAA9rpBAoBw2uok\"\n ),\n serumProgramId: new PublicKey(\"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\"),\n serumMarketPubkey: new PublicKey(\"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusDBzvT\"),\n serumCoinVaultAccount: new PublicKey(\n \"36c6YqAwyGKQG66XEp2dJc5JqjaBNv7sVghEtJv4c7u6\"\n ),\n serumPcVaultAccount: new PublicKey(\"8CFo8bL8mZQK8abbFyypFMwEDd8tVJjHTTojMLgQTUSZ\"),\n serumVaultSigner: new PublicKey(\"F8Vyqk3unwxkXukZFQeYyGmFfTG3CAX4v24iyrjEYBJV\"),\n serumEventQueueAccount: new PublicKey(\"5KKsLVU6TcbVDK4BS6K1DGDxnh4Q9xjYJ8XaDCG5t8ht\"),\n serumBidsAccount: new PublicKey(\"14ivtgssEBoBjuZJtSAPKYgpUK7DmnSwuPMqJoVTSgKJ\"),\n serumAsksAccount: new PublicKey(\"CEQdAFKdycHugujQg9k2wbmxjcpdYZyVLfV9WerTnafJ\"),\n rewardAccounts: [\n {\n rewardToken: \"RAY\" /* RAY */,\n userRewardAlphaAccountPubkey: new PublicKey(\"3ycsskwZL584nSTikjMR9DhVKRHFpYUbbx4m93kn6Djx\"),\n userRewardPublicAccountPubkey: new PublicKey(\"44tSF4Sisrsy7YXmtSYnFLzQnZeVvwgd5PTMzRvAqtq4\"),\n rewardVault: new PublicKey(\"38YS2N7VUb856QDsXHS1h8zv5556YgEy9zKbbL2mefjf\")\n },\n {\n rewardToken: \"SRM\" /* SRM */,\n userRewardAlphaAccountPubkey: new PublicKey(\"21rySZr2pQCaoGjdJy6gPx31vi5igVsKFAMRtqhgPgVX\"),\n userRewardPublicAccountPubkey: new PublicKey(\"BzqrcDc7wpciqtsSj7MsDajDdjHuS7XBdqaprSm8GaiB\"),\n rewardVault: new PublicKey(\"ANDJUfDryy3jY6DngwGRXVyxCJBT5JfojLDXwZYSpnEL\")\n }\n ],\n stakeKeys: {\n poolIdPubkey: new PublicKey(\"GUzaohfNuFbBqQTnPgPSNciv3aUvriXYjQduRE3ZkqFw\"),\n poolAuthorityPubkey: new PublicKey(\"DgbCWnbXg43nmeiAveMCkUUPEpAr3rZo3iop3TyP6S63\"),\n poolLPVault: new PublicKey(\"J6ECnRDZEXcxuruvErXDWsPZn9czowKynUr9eDSQ4QeN\")\n }\n }),\n [\"RAY_USDC_RAYDIUM\" /* RAY_USDC_RAYDIUM */]: new RaydiumLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"RAY_USDC_RAYDIUM\" /* RAY_USDC_RAYDIUM */]),\n ammIdPubkey: new PublicKey(\"6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg\"),\n ammAuthPubkey: new PublicKey(\"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\"),\n ammOpenOrdersPubkey: new PublicKey(\"J8u8nTHYtvudyqwLrXZboziN95LpaHFHpd97Jm5vtbkW\"),\n ammTargetOrderPubkey: new PublicKey(\n \"3cji8XW5uhtsA757vELVFAeJpskyHwbnTSceMFY5GjVT\"\n ),\n poolCoinTokenPubkey: new PublicKey(\"FdmKUE4UMiJYFK5ogCngHzShuVKrFXBamPWcewDr31th\"),\n poolPcTokenPubkey: new PublicKey(\"Eqrhxd7bDUCH3MepKmdVkgwazXRzY6iHhEoBpY7yAohk\"),\n poolWithdrawQueue: new PublicKey(\"ERiPLHrxvjsoMuaWDWSTLdCMzRkQSo8SkLBLYEmSokyr\"),\n poolTempLpTokenAccount: new PublicKey(\n \"D1V5GMf3N26owUFcbz2qR5N4G81qPKQvS2Vc4SM73XGB\"\n ),\n serumProgramId: new PublicKey(\"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\"),\n serumMarketPubkey: new PublicKey(\"2xiv8A5xrJ7RnGdxXB42uFEkYHJjszEhaJyKKt4WaLep\"),\n serumCoinVaultAccount: new PublicKey(\n \"GGcdamvNDYFhAXr93DWyJ8QmwawUHLCyRqWL3KngtLRa\"\n ),\n serumPcVaultAccount: new PublicKey(\"22jHt5WmosAykp3LPGSAKgY45p7VGh4DFWSwp21SWBVe\"),\n serumVaultSigner: new PublicKey(\"FmhXe9uG6zun49p222xt3nG1rBAkWvzVz7dxERQ6ouGw\"),\n serumEventQueueAccount: new PublicKey(\"H9dZt8kvz1Fe5FyRisb77KcYTaN8LEbuVAfJSnAaEABz\"),\n serumBidsAccount: new PublicKey(\"Hf84mYadE1VqSvVWAvCWc9wqLXak4RwXiPb4A91EAUn5\"),\n serumAsksAccount: new PublicKey(\"DC1HsWWRCXVg3wk2NndS5LTbce3axwUwUZH1RgnV4oDN\"),\n rewardAccounts: [\n {\n rewardToken: \"RAY\" /* RAY */,\n userRewardAlphaAccountPubkey: new PublicKey(\"496NG3Ym9UAmDoYe1YdJMnEhAGJhfrY4Wz2Poc85VcMZ\"),\n userRewardPublicAccountPubkey: new PublicKey(\"49i8NSa6z2DcWxBnnsZjyxKvLxEqXGZ833B4jUDNmxnT\"),\n rewardVault: new PublicKey(\"DpRueBHHhrQNvrjZX7CwGitJDJ8eZc3AHcyFMG4LqCQR\")\n }\n ],\n stakeKeys: {\n poolIdPubkey: new PublicKey(\"CHYrUBX2RKX8iBg7gYTkccoGNBzP44LdaazMHCLcdEgS\"),\n poolAuthorityPubkey: new PublicKey(\"5KQFnDd33J5NaMC9hQ64P5XzaaSz8Pt7NBCkZFYn1po\"),\n poolLPVault: new PublicKey(\"BNnXLFGva3K8ACruAc1gaP49NCbLkyE6xWhGV4G2HLrs\")\n },\n stakeProgram: SWAP_METAS[SWAP_RAYDIUM].stakeProgramPubkey\n }),\n [\"SOL_USDT_RAYDIUM\" /* SOL_USDT_RAYDIUM */]: new RaydiumLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"SOL_USDT_RAYDIUM\" /* SOL_USDT_RAYDIUM */]),\n ammIdPubkey: new PublicKey(\"7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX\"),\n ammAuthPubkey: new PublicKey(\"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\"),\n ammOpenOrdersPubkey: new PublicKey(\"4NJVwEAoudfSvU5kdxKm5DsQe4AAqG6XxpZcNdQVinS4\"),\n ammTargetOrderPubkey: new PublicKey(\n \"9x4knb3nuNAzxsV7YFuGLgnYqKArGemY54r2vFExM1dp\"\n ),\n poolCoinTokenPubkey: new PublicKey(\"876Z9waBygfzUrwwKFfnRcc7cfY4EQf6Kz1w7GRgbVYW\"),\n poolPcTokenPubkey: new PublicKey(\"CB86HtaqpXbNWbq67L18y5x2RhqoJ6smb7xHUcyWdQAQ\"),\n poolWithdrawQueue: new PublicKey(\"52AfgxYPTGruUA9XyE8eF46hdR6gMQiA6ShVoMMsC6jQ\"),\n poolTempLpTokenAccount: new PublicKey(\n \"2JKZRQc92TaH3fgTcUZyxfD7k7V7BMqhF24eussPtkwh\"\n ),\n serumProgramId: new PublicKey(\"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\"),\n serumMarketPubkey: new PublicKey(\"HWHvQhFmJB3NUcu1aihKmrKegfVxBEHzwVX6yZCKEsi1\"),\n serumCoinVaultAccount: new PublicKey(\n \"29cTsXahEoEBwbHwVc59jToybFpagbBMV6Lh45pWEmiK\"\n ),\n serumPcVaultAccount: new PublicKey(\"EJwyNJJPbHH4pboWQf1NxegoypuY48umbfkhyfPew4E\"),\n serumVaultSigner: new PublicKey(\"CzZAjoEqA6sjqtaiZiPqDkmxG6UuZWxwRWCenbBMc8Xz\"),\n serumEventQueueAccount: new PublicKey(\"GR363LDmwe25NZQMGtD2uvsiX66FzYByeQLcNFr596FK\"),\n serumBidsAccount: new PublicKey(\"2juozaawVqhQHfYZ9HNcs66sPatFHSHeKG5LsTbrS2Dn\"),\n serumAsksAccount: new PublicKey(\"ANXcuziKhxusxtthGxPxywY7FLRtmmCwFWDmU5eBDLdH\"),\n rewardAccounts: [\n {\n rewardToken: \"RAY\" /* RAY */,\n userRewardAlphaAccountPubkey: new PublicKey(\"BrDvLLjYtTPyaBN2kDxRCSDzoNPdYiozPfggcgEJt3Pd\"),\n userRewardPublicAccountPubkey: new PublicKey(\"4aryP8pemzEuJjMteEPHFbM1SJdgoahx4AG1ZpdCvJZQ\"),\n rewardVault: new PublicKey(\"Bgj3meVYds8ficJc9xntbjmMBPVUuyn6CvDUm1AD39yq\")\n },\n {\n rewardToken: \"SRM\" /* SRM */,\n userRewardAlphaAccountPubkey: new PublicKey(\"6Cp9hLDQpbmiXZopk9oJMqGj8nSUbQpGLqm9VxYmZbFB\"),\n userRewardPublicAccountPubkey: new PublicKey(\"HBrRwtFzrL7CyngExF4N3LrKzSEf1ViFRLHJcVEwmphw\"),\n rewardVault: new PublicKey(\"DJifNDjNt7iHbkNHs9V6Wm5pdiuddtF9w3o4WEiraKrP\")\n }\n ],\n stakeKeys: {\n poolIdPubkey: new PublicKey(\"5r878BSWPtoXgnqaeFJi7BCycKZ5CodBB2vS9SeiV8q\"),\n poolAuthorityPubkey: new PublicKey(\"DimG1WK9N7NdbhddweGTDDBRaBdCmcbPtoWZJ4Fi4rn4\"),\n poolLPVault: new PublicKey(\"jfhZy3B6sqeu95z71GukkxpkDtfHXJiFAMULM6STWxb\")\n }\n }),\n [\"mSOL_SOL_RAYDIUM\" /* mSOL_SOL_RAYDIUM */]: new RaydiumLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"mSOL_SOL_RAYDIUM\" /* mSOL_SOL_RAYDIUM */]),\n ammIdPubkey: new PublicKey(\"EGyhb2uLAsRUbRx9dNFBjMVYnFaASWMvD6RE1aEf2LxL\"),\n ammAuthPubkey: new PublicKey(\"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\"),\n ammOpenOrdersPubkey: new PublicKey(\"6c1u1cNEELKPmuH352WPNNEPdfTyVPHsei39DUPemC42\"),\n ammTargetOrderPubkey: new PublicKey(\n \"CLuMpSesLPqdxewQTxfiLdifQfDfRsxkFhPgiChmdGfk\"\n ),\n poolCoinTokenPubkey: new PublicKey(\"85SxT7AdDQvJg6pZLoDf7vPiuXLj5UYZLVVNWD1NjnFK\"),\n poolPcTokenPubkey: new PublicKey(\"BtGUR6y7uwJ6UGXNMcY3gCLm7dM3WaBdmgtKVgGnE1TJ\"),\n poolWithdrawQueue: new PublicKey(\"7vvoHxA6di9EvzJKL6bmojbZnH3YaRXu2LitufrQhM21\"),\n poolTempLpTokenAccount: new PublicKey(\n \"ACn8TZ27fQ85kgdPKUfkETB4dS5JPFoq53z7uCgtHDai\"\n ),\n serumProgramId: new PublicKey(\"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\"),\n serumMarketPubkey: new PublicKey(\"5cLrMai1DsLRYc1Nio9qMTicsWtvzjzZfJPXyAoF4t1Z\"),\n serumCoinVaultAccount: new PublicKey(\n \"2qmHPJn3URkrboLiJkQ5tBB4bmYWdb6MyhQzZ6ms7wf9\"\n ),\n serumPcVaultAccount: new PublicKey(\"A6eEM36Vpyti2PoHK8h8Dqk5zu7YTaSRTQb7XXL8tcrV\"),\n serumVaultSigner: new PublicKey(\"EHMK3DdPiPBd9aBjeRU4aZjD7z568rmwHCSAAxRooPq6\"),\n stakeKeys: null\n }),\n [\"RAY_USDT_RAYDIUM\" /* RAY_USDT_RAYDIUM */]: new RaydiumLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"RAY_USDT_RAYDIUM\" /* RAY_USDT_RAYDIUM */]),\n ammIdPubkey: new PublicKey(\"DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut\"),\n ammAuthPubkey: new PublicKey(\"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\"),\n ammOpenOrdersPubkey: new PublicKey(\"7UF3m8hDGZ6bNnHzaT2YHrhp7A7n9qFfBj6QEpHPv5S8\"),\n ammTargetOrderPubkey: new PublicKey(\n \"3K2uLkKwVVPvZuMhcQAPLF8hw95somMeNwJS7vgWYrsJ\"\n ),\n poolCoinTokenPubkey: new PublicKey(\"3wqhzSB9avepM9xMteiZnbJw75zmTBDVmPFLTQAGcSMN\"),\n poolPcTokenPubkey: new PublicKey(\"5GtSbKJEPaoumrDzNj4kGkgZtfDyUceKaHrPziazALC1\"),\n poolWithdrawQueue: new PublicKey(\"8VuvrSWfQP8vdbuMAP9AkfgLxU9hbRR6BmTJ8Gfas9aK\"),\n poolTempLpTokenAccount: new PublicKey(\n \"FBzqDD1cBgkZ1h6tiZNFpkh4sZyg6AG8K5P9DSuJoS5F\"\n ),\n serumProgramId: new PublicKey(\"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\"),\n serumMarketPubkey: new PublicKey(\"teE55QrL4a4QSfydR9dnHF97jgCfptpuigbb53Lo95g\"),\n serumCoinVaultAccount: new PublicKey(\n \"2kVNVEgHicvfwiyhT2T51YiQGMPFWLMSp8qXc1hHzkpU\"\n ),\n serumPcVaultAccount: new PublicKey(\"5AXZV7XfR7Ctr6yjQ9m9dbgycKeUXWnWqHwBTZT6mqC7\"),\n serumVaultSigner: new PublicKey(\"HzWpBN6ucpsA9wcfmhLAFYqEUmHjE9n2cGHwunG5avpL\"),\n serumEventQueueAccount: new PublicKey(\"58KcficuUqPDcMittSddhT8LzsPJoH46YP4uURoMo5EB\"),\n serumBidsAccount: new PublicKey(\"AvKStCiY8LTp3oDFrMkiHHxxhxk4sQUWnGVcetm4kRpy\"),\n serumAsksAccount: new PublicKey(\"Hj9kckvMX96mQokfMBzNCYEYMLEBYKQ9WwSc1GxasW11\"),\n rewardAccounts: [\n {\n rewardToken: \"RAY\" /* RAY */,\n userRewardAlphaAccountPubkey: new PublicKey(\"Bq2M2YHcMVB9RDBjJsra4nP81qvJaAapY6fdCFoDNY61\"),\n userRewardPublicAccountPubkey: new PublicKey(\"3YUuGZJSF5Jdy3mXBXgWh86t2msj4d2WvNGawSsDZbHC\"),\n rewardVault: new PublicKey(\"HCHNuGzkqSnw9TbwpPv1gTnoqnqYepcojHw9DAToBrUj\")\n }\n ],\n stakeKeys: {\n poolIdPubkey: new PublicKey(\"AvbVWpBi2e4C9HPmZgShGdPoNydG4Yw8GJvG9HUcLgce\"),\n poolAuthorityPubkey: new PublicKey(\"8JYVFy3pYsPSpPRsqf43KSJFnJzn83nnRLQgG88XKB8q\"),\n poolLPVault: new PublicKey(\"4u4AnMBHXehdpP5tbD6qzB5Q4iZmvKKR5aUr2gavG7aw\")\n },\n stakeProgram: SWAP_METAS[SWAP_RAYDIUM].stakeProgramPubkey\n }),\n [\"RAY_ETH_RAYDIUM\" /* RAY_ETH_RAYDIUM */]: new RaydiumLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"RAY_ETH_RAYDIUM\" /* RAY_ETH_RAYDIUM */]),\n ammIdPubkey: new PublicKey(\"8iQFhWyceGREsWnLM8NkG9GC8DvZunGZyMzuyUScgkMK\"),\n ammAuthPubkey: new PublicKey(\"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\"),\n ammOpenOrdersPubkey: new PublicKey(\"7iztHknuo7FAXVrrpAjsHBEEjRTaNH4b3hecVApQnSwN\"),\n ammTargetOrderPubkey: new PublicKey(\n \"JChSqhn6yyEWqD95t8UR5DaZZtEZ1RGGjdwgMc8S6UUt\"\n ),\n poolCoinTokenPubkey: new PublicKey(\"G3Szi8fUqxfZjZoNx17kQbxeMTyXt2ieRvju4f3eJt9j\"),\n poolPcTokenPubkey: new PublicKey(\"7MgaPPNa7ySdu5XV7ik29Xoav4qcDk4wznXZ2Muq9MnT\"),\n poolWithdrawQueue: new PublicKey(\"C9aijsE3tLbVyYaXXHi45qneDL5jfyN8befuJh8zzpou\"),\n poolTempLpTokenAccount: new PublicKey(\n \"3CDnyBsNnexdvfvo6ASde5Q4e72jzMQFHRRkSQr49vEG\"\n ),\n serumProgramId: new PublicKey(\"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\"),\n serumMarketPubkey: new PublicKey(\"6jx6aoNFbmorwyncVP5V5ESKfuFc9oUYebob1iF6tgN4\"),\n serumCoinVaultAccount: new PublicKey(\n \"EVVtYo4AeCbmn2dYS1UnhtfjpzCXCcN26G1HmuHwMo7w\"\n ),\n serumPcVaultAccount: new PublicKey(\"6ZT6KwvjLnJLpFdVfiRD9ifVUo4gv4MUie7VvPTuk69v\"),\n serumVaultSigner: new PublicKey(\"HXbRDLcX2FyqWJY95apnsTgBoRHyp7SWYXcMYod6EBrQ\"),\n serumEventQueueAccount: new PublicKey(\"EgcugBBSwM2FxqLQx5S6zAiU9x9qRS8qMVRMDFFU4Zty\"),\n serumBidsAccount: new PublicKey(\"Hdvh4ZGL9MkiQApNqfZtdmd4jM6Sz8e9akCUuxxkYhb8\"),\n serumAsksAccount: new PublicKey(\"7vWmTv9Mh8XbAxcduEqed2dLtro4N7hFroqch6mMxYKM\"),\n rewardAccounts: [\n {\n rewardToken: \"RAY\" /* RAY */,\n userRewardAlphaAccountPubkey: new PublicKey(\"B2LykyWkPGVcqwRgozr4WRst5x9s5pCHhT9CA4NLwtui\"),\n userRewardPublicAccountPubkey: new PublicKey(\"5PzDUuUYWmkymdNznZmvWAj5nn89xwFbD844rMJveHY3\"),\n rewardVault: new PublicKey(\"7YfTgYQFGEJ4kb8jCF8cBrrUwEFskLin3EbvE1crqiQh\")\n }\n ],\n stakeKeys: {\n poolIdPubkey: new PublicKey(\"B6fbnZZ7sbKHR18ffEDD5Nncgp54iKN1GbCgjTRdqhS1\"),\n poolAuthorityPubkey: new PublicKey(\"6amoZ7YBbsz3uUUbkeEH4vDTNwjvgjxTiu6nGi9z1JGe\"),\n poolLPVault: new PublicKey(\"BjAfXpHTHz2kipraNddS6WwQvGGtbvyobn7MxLEEYfrH\")\n },\n stakeProgram: SWAP_METAS[SWAP_RAYDIUM].stakeProgramPubkey\n }),\n [\"RAY_SOL_RAYDIUM\" /* RAY_SOL_RAYDIUM */]: new RaydiumLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"RAY_SOL_RAYDIUM\" /* RAY_SOL_RAYDIUM */]),\n ammIdPubkey: new PublicKey(\"AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA\"),\n ammAuthPubkey: new PublicKey(\"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\"),\n ammOpenOrdersPubkey: new PublicKey(\"6Su6Ea97dBxecd5W92KcVvv6SzCurE2BXGgFe9LNGMpE\"),\n ammTargetOrderPubkey: new PublicKey(\n \"5hATcCfvhVwAjNExvrg8rRkXmYyksHhVajWLa46iRsmE\"\n ),\n poolCoinTokenPubkey: new PublicKey(\"Em6rHi68trYgBFyJ5261A2nhwuQWfLcirgzZZYoRcrkX\"),\n poolPcTokenPubkey: new PublicKey(\"3mEFzHsJyu2Cpjrz6zPmTzP7uoLFj9SbbecGVzzkL1mJ\"),\n poolWithdrawQueue: new PublicKey(\"FSHqX232PHE4ev9Dpdzrg9h2Tn1byChnX4tuoPUyjjdV\"),\n poolTempLpTokenAccount: new PublicKey(\n \"87CCkBfthmyqwPuCDwFmyqKWJfjYqPFhm5btkNyoALYZ\"\n ),\n serumProgramId: new PublicKey(\"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\"),\n serumMarketPubkey: new PublicKey(\"C6tp2RVZnxBPFbnAsfTjis8BN9tycESAT4SgDQgbbrsA\"),\n serumCoinVaultAccount: new PublicKey(\n \"6U6U59zmFWrPSzm9sLX7kVkaK78Kz7XJYkrhP1DjF3uF\"\n ),\n serumPcVaultAccount: new PublicKey(\"4YEx21yeUAZxUL9Fs7YU9Gm3u45GWoPFs8vcJiHga2eQ\"),\n serumVaultSigner: new PublicKey(\"7SdieGqwPJo5rMmSQM9JmntSEMoimM4dQn7NkGbNFcrd\"),\n serumEventQueueAccount: new PublicKey(\"4HGvdannxvmAhszVVig9auH6HsqVH17qoavDiNcnm9nj\"),\n serumBidsAccount: new PublicKey(\"C1nEbACFaHMUiKAUsXVYPWZsuxunJeBkqXHPFr8QgSj9\"),\n serumAsksAccount: new PublicKey(\"4DNBdnTw6wmrK4NmdSTTxs1kEz47yjqLGuoqsMeHvkMF\"),\n rewardAccounts: [\n {\n rewardToken: \"RAY\" /* RAY */,\n userRewardAlphaAccountPubkey: new PublicKey(\"B7ewVyAG7YMDemDGKQNBxyGAuoN94w4J5K8NZa72A4BM\"),\n userRewardPublicAccountPubkey: new PublicKey(\"ChJUMQNtVNznGWaFUeNAqKD95hd1gmz9CRHobw3aMRbm\"),\n rewardVault: new PublicKey(\"6zA5RAQYgazm4dniS8AigjGFtRi4xneqjL7ehrSqCmhr\")\n }\n ],\n stakeKeys: {\n poolIdPubkey: new PublicKey(\"HUDr9BDaAGqi37xbQHzxCyXvfMCKPTPNF8g9c9bPu1Fu\"),\n poolAuthorityPubkey: new PublicKey(\"9VbmvaaPeNAke2MAL3h2Fw82VubH1tBCzwBzaWybGKiG\"),\n poolLPVault: new PublicKey(\"A4xQv2BQPB1WxsjiCC7tcMH7zUq255uCBkevFj8qSCyJ\")\n },\n stakeProgram: SWAP_METAS[SWAP_RAYDIUM].stakeProgramPubkey\n }),\n [\"SRM_USDC_RAYDIUM\" /* SRM_USDC_RAYDIUM */]: new RaydiumLpSwapInfo({\n lpMintPubkey: new PublicKey(MINTS[\"SRM_USDC_RAYDIUM\" /* SRM_USDC_RAYDIUM */]),\n ammIdPubkey: new PublicKey(\"8tzS7SkUZyHPQY7gLqsMCXZ5EDCgjESUHcB17tiR1h3Z\"),\n ammAuthPubkey: new PublicKey(\"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\"),\n ammOpenOrdersPubkey: new PublicKey(\"GJwrRrNeeQKY2eGzuXGc3KBrBftYbidCYhmA6AZj2Zur\"),\n ammTargetOrderPubkey: new PublicKey(\n \"26LLpo8rscCpMxyAnJsqhqESPnzjMGiFdmXA4eF2Jrk5\"\n ),\n poolCoinTokenPubkey: new PublicKey(\"zuLDJ5SEe76L3bpFp2Sm9qTTe5vpJL3gdQFT5At5xXG\"),\n poolPcTokenPubkey: new PublicKey(\"4usvfgPDwXBX2ySX11ubTvJ3pvJHbGEW2ytpDGCSv5cw\"),\n poolWithdrawQueue: new PublicKey(\"7c1VbXTB7Xqx5eQQeUxAu5o6GHPq3P1ByhDsnRRUWYxB\"),\n poolTempLpTokenAccount: new PublicKey(\n \"2sozAi6zXDUCCkpgG3usphzeCDm4e2jTFngbm5atSdC9\"\n ),\n serumProgramId: new PublicKey(\"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\"),\n serumMarketPubkey: new PublicKey(\"ByRys5tuUWDgL73G8JBAEfkdFf8JWBzPBDHsBVQ5vbQA\"),\n serumCoinVaultAccount: new PublicKey(\n \"Ecfy8et9Mft9Dkavnuh4mzHMa2KWYUbBTA5oDZNoWu84\"\n ),\n serumPcVaultAccount: new PublicKey(\"hUgoKy5wjeFbZrXDW4ecr42T4F5Z1Tos31g68s5EHbP\"),\n serumVaultSigner: new PublicKey(\"GVV4ZT9pccwy9d17STafFDuiSqFbXuRTdvKQ1zJX6ttX\"),\n rewardAccounts: [\n {\n rewardToken: \"RAY\" /* RAY */,\n userRewardAlphaAccountPubkey: new PublicKey(\"4jnfVscrBTf77bjkR2JSHQT6q7N7BWFyufG6YdZCR8re\"),\n userRewardPublicAccountPubkey: new PublicKey(\"2qgtUtNopD3ZCrQCbVsvYd1BrPeWxn4TcrXjwvTzLCYi\"),\n rewardVault: new PublicKey(\"9gs6XnKs3RMMSSQAZm3VCbRpoNmPMrGaQQGMmRKjPeSU\")\n },\n {\n rewardToken: \"SRM\" /* SRM */,\n userRewardAlphaAccountPubkey: new PublicKey(\"6E4seHTUoufVwALGE8XBYEMh5n7t4irwYXD6jtqgqzeM\"),\n userRewardPublicAccountPubkey: new PublicKey(\"2iy54EuEMgUVFMaRzxusiMSawgcHUgR34SZWaKkMosMc\"),\n rewardVault: new PublicKey(\"BsuQ3XCCapopam8byEzHzazyxcRn5dCT3UX9kUzozhw\")\n }\n ],\n stakeKeys: {\n poolIdPubkey: new PublicKey(\"27bysJaX5eu5Urb5kftR66otiVc6DKK7TnifKwnpNzYu\"),\n poolAuthorityPubkey: new PublicKey(\"HAWwtFc4MFNSXFyQbUZd2GefSwZLntCiumt1D6XM8jfk\"),\n poolLPVault: new PublicKey(\"HVEm5BG4jMHtwgrUtuiC9K17bjp9CjFpgqmzVABmzLxr\")\n }\n })\n};\nvar LP_SWAP_METAS = {};\nfor (const key in ORCA_LP_METAS) {\n const tokId = key;\n invariant2(tokId in TokenID, `Invalid tokId: ${key}`);\n invariant2(!(tokId in LP_SWAP_METAS), `${tokId} is duplicated`);\n const value = ORCA_LP_METAS[tokId];\n invariant2(value);\n LP_SWAP_METAS[tokId] = value;\n}\nfor (const key in SABER_LP_METAS) {\n const tokId = key;\n invariant2(tokId in TokenID, `Invalid tokId: ${key}`);\n invariant2(!(tokId in LP_SWAP_METAS), `${tokId} is duplicated`);\n const value = SABER_LP_METAS[tokId];\n invariant2(value);\n LP_SWAP_METAS[tokId] = value;\n}\nfor (const key in RAYDIUM_LP_METAS) {\n const tokId = key;\n invariant2(tokId in TokenID, `Invalid tokId: ${key}`);\n invariant2(!(tokId in LP_SWAP_METAS), `${tokId} is duplicated`);\n const value = RAYDIUM_LP_METAS[tokId];\n invariant2(value);\n LP_SWAP_METAS[tokId] = value;\n}\nvar SWITCHBOARD_PRICE = {\n [\"BTC\" /* BTC */]: new PublicKey(\"74YzQPGUT9VnjrBz8MuyDLKgKpbDqGot5xZJvTtMi6Ng\"),\n [\"ETH\" /* ETH */]: new PublicKey(\"QJc2HgGhdtW4e7zjvLB1TGRuwEpTre2agU5Lap2UqYz\"),\n [\"SOL\" /* SOL */]: new PublicKey(\"AdtRGGhmqvom3Jemp5YNrxd9q9unX36BZk1pujkkXijL\"),\n [\"mSOL\" /* mSOL */]: new PublicKey(\"CEPVH2t11KS4CaL3w4YxT9tRiijoGA4VEbnQ97cEpDmQ\"),\n [\"stSOL\" /* stSOL */]: new PublicKey(\"9r2p6vyF8Wp5YB2DASK95yuXEakQth6wmUmV2DpH91WX\"),\n [\"whETH\" /* whETH */]: new PublicKey(\"QJc2HgGhdtW4e7zjvLB1TGRuwEpTre2agU5Lap2UqYz\"),\n [\"scnSOL\" /* scnSOL */]: new PublicKey(\"DpzEKDSszosuzRUdRYzEcEbt6iZ4xhVEANQSRAYDYw8h\"),\n [\"APT\" /* APT */]: new PublicKey(\"CvLZbNUPLkbMuVK9YPqhvLu4UkXmrJbF98odXtPL6VRu\"),\n [\"RAY\" /* RAY */]: new PublicKey(\"CppyF6264uKZkGua1brTUa2fSVdMFSCszwzDs76HCuzU\"),\n [\"ORCA\" /* ORCA */]: new PublicKey(\"EHwSRkm2ErRjWxCxrTxrmC7sT2kGb5jJcsiindUHAX7W\"),\n [\"SBR\" /* SBR */]: new PublicKey(\"Lp3VNoRQi699VZe6u59TV8J38ELEUzxkaisoWsDuJgB\"),\n [\"FTT\" /* FTT */]: new PublicKey(\"6SqRewrr5f4ycWy7NvLmNgpXJbhwXrtTc1erL9aq2gP3\"),\n [\"SRM\" /* SRM */]: new PublicKey(\"BAoygKcKN7wk8yKzLD6sxzUQUqLvhBV1rjMA4UJqfZuH\"),\n [\"USDT\" /* USDT */]: new PublicKey(\"5mp8kbkTYwWWCsKSte8rURjTuyinsqBpJ9xAQsewPDD\"),\n [\"USDC\" /* USDC */]: new PublicKey(\"CZx29wKMUxaJDq6aLVQTdViPL754tTR64NAgQBUGxxHb\"),\n [\"UST\" /* UST */]: new PublicKey(\"8o8gN6VnW45R8pPfQzUJUwJi2adFmsWwfGcFNmicWt61\"),\n [\"USTv2\" /* USTv2 */]: new PublicKey(\"8o8gN6VnW45R8pPfQzUJUwJi2adFmsWwfGcFNmicWt61\")\n};\nvar PYTH_PRICE = {\n [\"BTC\" /* BTC */]: new PublicKey(\"GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU\"),\n [\"ETH\" /* ETH */]: new PublicKey(\"JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB\"),\n [\"SOL\" /* SOL */]: new PublicKey(\"H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG\"),\n [\"mSOL\" /* mSOL */]: new PublicKey(\"E4v1BBgoso9s64TQvmyownAVJbhbEPGyzA3qn4n46qj9\"),\n [\"stSOL\" /* stSOL */]: new PublicKey(\"Bt1hEbY62aMriY1SyQqbeZbm8VmSbQVGBFzSzMuVNWzN\"),\n [\"whETH\" /* whETH */]: new PublicKey(\"JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB\"),\n [\"RAY\" /* RAY */]: new PublicKey(\"AnLf8tVYCM816gmBjiy8n53eXKKEDydT5piYjjQDPgTB\"),\n [\"SBR\" /* SBR */]: new PublicKey(\"8Td9VML1nHxQK6M8VVyzsHo32D7VBk72jSpa9U861z2A\"),\n [\"FTT\" /* FTT */]: new PublicKey(\"8JPJJkmDScpcNmBRKGZuPuG2GYAveQgP3t5gFuMymwvF\"),\n [\"SRM\" /* SRM */]: new PublicKey(\"3NBReDRTLKMQEKiLD5tGcx4kXbTf88b7f2xLS9UuGjym\"),\n [\"USDT\" /* USDT */]: new PublicKey(\"3vxLXJqLqF3JG5TCbYycbKWRBbCJQLxQmBGCkyqEEefL\"),\n [\"USDC\" /* USDC */]: new PublicKey(\"Gnt27xtC473ZT2Mw5u8wZ68Z3gULkSTb5DuxJy7eJotD\"),\n [\"UST\" /* UST */]: new PublicKey(\"H8DvrfSaRfUyP1Ytse1exGf7VSinLWtmKNNaBhA4as9P\"),\n [\"USTv2\" /* USTv2 */]: new PublicKey(\"H8DvrfSaRfUyP1Ytse1exGf7VSinLWtmKNNaBhA4as9P\")\n};\nvar COINGECKO_PRICE_ID = {\n [\"MNDE\" /* MNDE */]: \"marinade\",\n [\"wLDO\" /* wLDO */]: \"lido-dao\",\n [\"wLUNA\" /* wLUNA */]: \"terra-luna\",\n [\"SOCN\" /* SOCN */]: \"temp-socn\"\n};\nvar FIREBASE_READER_CONFIG = {\n alpha: {\n apiKey: \"AIzaSyDWBTlo8oeJGnpV0CnQEBpeloMbHgN6xY8\",\n authDomain: \"apricot-website-96904.firebaseapp.com\",\n projectId: \"apricot-website-96904\",\n storageBucket: \"apricot-website-96904.appspot.com\",\n messagingSenderId: \"181748660172\",\n appId: \"1:181748660172:web:fea7b301ef6a09c3d60f69\",\n measurementId: \"G-W2RX0BF87Q\"\n },\n public: {\n apiKey: \"AIzaSyAGpQxt6PUaLf1vhfhxL5hzWcP1QDIeOSc\",\n authDomain: \"apricot-public.firebaseapp.com\",\n projectId: \"apricot-public\",\n storageBucket: \"apricot-public.appspot.com\",\n messagingSenderId: \"735163506624\",\n appId: \"1:735163506624:web:e6406687d889d993e93225\",\n measurementId: \"G-VBTE0406R3\"\n }\n};\nvar ALPHA_CONFIG = new AppConfig(\n new PublicKey(\"5dtKmAzoJu4qDxMjjK7gWY2pPe6NWAX6HWQk5QUHaKQZ\"),\n new PublicKey(\"EFo9V7mFQgxz7xPMrJ6qLyrjfGXPgsEFEfGEtVQx2xKt\"),\n new PublicKey(\"3cWR2VDrVhQ43VX8B43MwTazfx66naioXurUh8vrkidt\"),\n new PublicKey(\"4DUvqxvab2BiJEYR7YHi3nM5tfyLNXFBQbJuExQPK9rf\"),\n new PublicKey(\"Ff9WeFriS8DoJkiZPEZRpmiFu5jzYx3xZzoGNpwWMp5J\"),\n new PublicKey(\"EQWujCg9fTnj2wi2oVWWkWsJmtRU2tpEUMhhiVSMtHCH\"),\n new PublicKey(\"Cuf4Hbuv9RDZ1vzuUE833MKzjeX7odsBeewEjhmVwVRk\"),\n MINTS,\n DECIMAL_MULT,\n CATEGORY,\n POOL_IDS,\n LIQUIDATION_DISCOUNT,\n LTVS,\n LP_TO_LR,\n LP_TO_DEX,\n LP_TO_TARGET_SWAP,\n LP_TO_NEED_2ND_STAKE,\n SWITCHBOARD_PRICE,\n PYTH_PRICE,\n INTEREST_RATES,\n FEES,\n LP_SWAP_METAS,\n FIREBASE_READER_CONFIG.alpha\n);\nvar PUBLIC_CONFIG = new AppConfig(\n new PublicKey(\"6UeJYTLU1adaoHWeApWsoj1xNEDbWA2RhM2DLc8CrDDi\"),\n new PublicKey(\"6L2QoTpr8WUd76eLAGnvow8i3WQzRP36C1qdUna9iwMn\"),\n new PublicKey(\"F5m8gNjC6pjynywcbw9kK1miSNJMw1nQGeviWykfCCXd\"),\n new PublicKey(\"FsSq4dqugLgZbsyLNt7bngtBkDApXaHUFXVQ6od5TeQ3\"),\n new PublicKey(\"GttyqdmooMEcgWqZPrb8FcdwjgaTLweLzuvVpnCMq5q1\"),\n new PublicKey(\"4aWV85p4o115qVo5p9sgbAGqYXmh34838xFpwuN1nxEP\"),\n new PublicKey(\"C1k4CehboSgUkmL3BJfw32Xj9HPs9NKTzhT5WXsYwWh4\"),\n MINTS,\n DECIMAL_MULT,\n CATEGORY,\n POOL_IDS,\n LIQUIDATION_DISCOUNT,\n LTVS,\n LP_TO_LR,\n LP_TO_DEX,\n LP_TO_TARGET_SWAP,\n LP_TO_NEED_2ND_STAKE,\n SWITCHBOARD_PRICE,\n PYTH_PRICE,\n INTEREST_RATES,\n FEES,\n LP_SWAP_METAS,\n FIREBASE_READER_CONFIG.public\n);\n\n// src/addresses.ts\nimport invariant3 from \"tiny-invariant\";\nvar _Addresses = class {\n constructor(config) {\n this.POOL_SUMMARIES_SEED = \"PoolSummaries\";\n this.config = config;\n }\n getProgramKey() {\n return this.config.programPubkey;\n }\n getAdminKey() {\n return this.config.adminPubkey;\n }\n mintKeyStrToPoolId(mintKeyStr) {\n return this.config.mintKeyStrToPoolId(mintKeyStr);\n }\n getBasePda() {\n return PublicKey2.findProgramAddress([Buffer.from(\"2\")], this.config.programPubkey);\n }\n getPricePda() {\n return PublicKey2.findProgramAddress([Buffer.from(\"PRICE\")], this.config.programPubkey);\n }\n getPoolListKey(basePda) {\n return PublicKey2.createWithSeed(basePda, \"PoolList\", this.config.programPubkey);\n }\n getPoolSummariesKey() {\n return PublicKey2.createWithSeed(this.config.adminPubkey, this.POOL_SUMMARIES_SEED, this.config.programPubkey);\n }\n getPriceSummariesKey(basePda) {\n return PublicKey2.createWithSeed(basePda, \"PriceSummaries\", this.config.programPubkey);\n }\n getUserPagesStatsKey() {\n return PublicKey2.createWithSeed(this.config.adminPubkey, _Addresses.USER_STATS_SEED, this.config.programPubkey);\n }\n getUsersPageKey(basePda, page_id) {\n return PublicKey2.createWithSeed(basePda, \"UsersPage_\" + page_id, this.config.programPubkey);\n }\n getLmAptVault() {\n return this.config.lmAptVault;\n }\n getAssetPoolKey(basePda, mintKeyStr) {\n const poolSeedStr = this.mintKeyStrToPoolSeedStr(mintKeyStr);\n return PublicKey2.createWithSeed(basePda, poolSeedStr, this.config.programPubkey);\n }\n getAssetPriceKey(pricePda, mintKeyStr) {\n const poolSeedStr = this.mintKeyStrToPoolSeedStr(mintKeyStr);\n return PublicKey2.createWithSeed(pricePda, poolSeedStr, this.config.programPubkey);\n }\n getAssetPoolSplKey(basePda, mintKeyStr) {\n const poolSeedStr = this.mintKeyStrToPoolSeedStr(mintKeyStr);\n return PublicKey2.createWithSeed(basePda, poolSeedStr, TOKEN_PROGRAM_ID2);\n }\n async getAssetPoolStakeTableKey(mintKeyStr) {\n const [basePda] = await this.getBasePda();\n const stakeSeedStr = this.mintKeyStrToStakeTableSeedStr(mintKeyStr);\n return PublicKey2.createWithSeed(basePda, stakeSeedStr, this.config.programPubkey);\n }\n getUserInfoKey(walletKey) {\n return PublicKey2.createWithSeed(walletKey, \"UserInfo\", this.config.programPubkey);\n }\n poolIdToSeedStr(pool_id) {\n const char1 = String.fromCharCode(pool_id / 16 + \"a\".charCodeAt(0));\n const char2 = String.fromCharCode(pool_id % 16 + \"a\".charCodeAt(0));\n return \"POOL__\" + char1 + char2;\n }\n poolIdToStakeTableSeedStr(pool_id) {\n const char1 = String.fromCharCode(pool_id / 16 + \"a\".charCodeAt(0));\n const char2 = String.fromCharCode(pool_id % 16 + \"a\".charCodeAt(0));\n return \"STAK__\" + char1 + char2;\n }\n mintKeyStrToPoolSeedStr(mintKeyStr) {\n const poolId = this.config.mintKeyStrToPoolId(mintKeyStr);\n return this.poolIdToSeedStr(poolId);\n }\n mintKeyStrToStakeTableSeedStr(mintKeyStr) {\n const poolId = this.config.mintKeyStrToPoolId(mintKeyStr);\n return this.poolIdToStakeTableSeedStr(poolId);\n }\n getLpTargetSwap(tokenId) {\n return LP_TO_TARGET_SWAP[tokenId];\n }\n async getLpDepositKeys(tokenId) {\n const [ownerKey, _bump] = await this.getBasePda();\n const lpSwapInfo = LP_SWAP_METAS[tokenId];\n invariant3(lpSwapInfo);\n return await lpSwapInfo.getLpDepositKeys(ownerKey);\n }\n async getLpWithdrawKeys(tokenId) {\n const [ownerKey, _bump] = await this.getBasePda();\n const lpSwapInfo = LP_SWAP_METAS[tokenId];\n invariant3(lpSwapInfo);\n return await lpSwapInfo.getLpWithdrawKeys(ownerKey);\n }\n async getLpStakeKeys(tokenId) {\n const [ownerKey, _bump] = await this.getBasePda();\n const lpSwapInfo = LP_SWAP_METAS[tokenId];\n invariant3(lpSwapInfo);\n const keys = await lpSwapInfo.getLpStakeKeys(ownerKey);\n return keys;\n }\n async getLpFirstStakeKeys(tokenId) {\n const [ownerKey, _bump] = await this.getBasePda();\n const lpSwapInfo = LP_SWAP_METAS[tokenId];\n invariant3(lpSwapInfo);\n invariant3(lpSwapInfo.isDoubleDipSupported);\n return await lpSwapInfo.getFirstStakeKeys(ownerKey);\n }\n async getLpSecondStakeKeys(tokenId) {\n const [ownerKey, _bump] = await this.getBasePda();\n const lpSwapInfo = LP_SWAP_METAS[tokenId];\n invariant3(lpSwapInfo);\n invariant3(lpSwapInfo.isDoubleDipSupported);\n return await lpSwapInfo.getSecondStakeKeys(ownerKey);\n }\n async getFloatingLpTokenAccount(tokenId) {\n const lpSwapInfo = LP_SWAP_METAS[tokenId];\n invariant3(lpSwapInfo instanceof OrcaLpSwapInfo);\n const [ownerKey] = await this.getBasePda();\n const { pdaFarmTokenAccount: floatingLpSplKey } = await lpSwapInfo.getPdaKeys(ownerKey);\n return floatingLpSplKey;\n }\n};\nvar Addresses = _Addresses;\nAddresses.USER_STATS_SEED = \"UserPagesStats\";\n\n// src/utils/index.ts\nimport { ASSOCIATED_TOKEN_PROGRAM_ID as ASSOCIATED_TOKEN_PROGRAM_ID2, Token as Token2, TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID3 } from \"@solana/spl-token\";\nimport { PublicKey as PublicKey3 } from \"@solana/web3.js\";\nfunction assert(cond, msg) {\n if (!cond) {\n throw new Error(msg);\n }\n}\nvar getAssociatedTokenPubkey = async (ownerPubkey, mintPubkey, allowOwnerOffCurve = false) => {\n let address;\n if (allowOwnerOffCurve) {\n [address] = await PublicKey3.findProgramAddress(\n [ownerPubkey.toBuffer(), TOKEN_PROGRAM_ID3.toBuffer(), mintPubkey.toBuffer()],\n ASSOCIATED_TOKEN_PROGRAM_ID2\n );\n } else {\n address = await Token2.getAssociatedTokenAddress(\n ASSOCIATED_TOKEN_PROGRAM_ID2,\n TOKEN_PROGRAM_ID3,\n mintPubkey,\n ownerPubkey,\n allowOwnerOffCurve\n );\n }\n return address;\n};\nvar delay = async (ms) => {\n return new Promise((resolve) => {\n setTimeout(resolve, ms);\n });\n};\nexport {\n ALPHA_CONFIG,\n AMOUNT_MULTIPLIER,\n ASSIST_MODE_STABLE_ONLY,\n Addresses,\n AppConfig,\n CATEGORY,\n CMD_ADD_USER_AND_DEPOSIT,\n CMD_BORROW,\n CMD_CLAIM_APT_LM_REWARD,\n CMD_DEPOSIT,\n CMD_EXTERN_LIQUIDATE,\n CMD_LP_CREATE,\n CMD_LP_OP_CHECK,\n CMD_LP_OP_ENDCHECK,\n CMD_LP_REDEEM,\n CMD_LP_STAKE,\n CMD_LP_STAKE_SECOND,\n CMD_LP_UNSTAKE,\n CMD_LP_UNSTAKE_SECOND,\n CMD_MAKE_LM_REWARD_AVAILABLE,\n CMD_MARGIN_SWAP,\n CMD_REFRESH_USER,\n CMD_REPAY,\n CMD_UPDATE_USER_ASSET_CONFIG,\n CMD_UPDATE_USER_CONFIG,\n CMD_WITHDRAW,\n CMD_WITHDRAW_AND_REMOVE_USER,\n COINGECKO_PRICE_ID,\n DECIMAL_MULT,\n DUAL_REWARD_CONFIGS,\n Dex,\n FAKE_KEY,\n FORCE_ASSIST_LIMIT,\n INVALID_PAGE,\n InterestRate,\n LIQUIDATION_DISCOUNT,\n LIQUIDATION_LIMIT,\n LP_SWAP_METAS,\n LP_TO_DEX,\n LP_TO_LR,\n LP_TO_NEED_2ND_STAKE,\n LP_TO_TARGET_SWAP,\n MAX_ASSIST_ACTIONS,\n MINTS,\n ORCA_LP_METAS,\n OrcaLpSwapInfo,\n PUBLIC_CONFIG,\n PYTH_PRICE,\n PoolConfig,\n PoolFlag,\n RAYDIUM_LP_METAS,\n RPC,\n RaydiumLpSwapInfo,\n SABER_LP_METAS,\n SAFE_LIMIT,\n SWAP_FAKE,\n SWAP_MERCURIAL,\n SWAP_METAS,\n SWAP_ORCA,\n SWAP_RAYDIUM,\n SWAP_SABER,\n SWAP_SERUM,\n SWITCHBOARD_PRICE,\n SaberLpSwapInfo,\n TokenCategory,\n TokenID,\n assert,\n delay,\n getAssociatedTokenPubkey\n};\n//# sourceMappingURL=index.mjs.map","// src/constants/lend/pools.ts\nimport { NATIVE_MINT as NATIVE_MINT2 } from \"@solana/spl-token\";\nimport { PublicKey as PublicKey2 } from \"@solana/web3.js\";\n\n// src/constants/tokens/index.ts\nimport { NATIVE_MINT } from \"@solana/spl-token\";\nimport { PublicKey } from \"@solana/web3.js\";\nvar TOKENS = {\n SOL: {\n symbol: \"SOL\",\n name: \"solana\",\n mintAddress: NATIVE_MINT,\n decimals: 9\n },\n WSOL: {\n symbol: \"WSOL\",\n name: \"Wrapped Solana\",\n mintAddress: new PublicKey(\"So11111111111111111111111111111111111111112\"),\n decimals: 9\n },\n BTC: {\n symbol: \"BTC\",\n name: \"bitcoin\",\n mintAddress: new PublicKey(\"9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E\"),\n decimals: 6\n },\n ETH: {\n symbol: \"ETH\",\n name: \"ethereum\",\n mintAddress: new PublicKey(\"2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk\"),\n decimals: 6\n },\n USDT: {\n symbol: \"USDT\",\n name: \"USDT\",\n mintAddress: new PublicKey(\"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\"),\n decimals: 6\n },\n WUSDT: {\n symbol: \"WUSDT\",\n name: \"Wrapped USDT\",\n mintAddress: new PublicKey(\"BQcdHdAQW1hczDbBi9hiegXAR7A98Q9jx3X3iBBBDiq4\"),\n decimals: 6\n },\n USDC: {\n symbol: \"USDC\",\n name: \"USDC\",\n mintAddress: new PublicKey(\"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"),\n decimals: 6\n },\n WUSDC: {\n symbol: \"WUSDC\",\n name: \"Wrapped USDC\",\n mintAddress: new PublicKey(\"BXXkv6z8ykpG1yuvUDPgh732wzVHB69RnB9YgSYh3itW\"),\n decimals: 6\n },\n YFI: {\n symbol: \"YFI\",\n name: \"Wrapped YFI\",\n mintAddress: new PublicKey(\"3JSf5tPeuscJGtaCp5giEiDhv51gQ4v3zWg8DGgyLfAB\"),\n decimals: 6\n },\n LINK: {\n symbol: \"LINK\",\n name: \"Wrapped Chainlink\",\n mintAddress: new PublicKey(\"CWE8jPTUYhdCTZYWPTe1o5DFqfdjzWKc9WKz6rSjQUdG\"),\n decimals: 6\n },\n ALEPH: {\n symbol: \"ALEPH\",\n name: \"Wrapped ALEPH\",\n mintAddress: new PublicKey(\"CsZ5LZkDS7h9TDKjrbL7VAwQZ9nsRu8vJLhRYfmGaN8K\"),\n decimals: 6\n },\n SXP: {\n symbol: \"SXP\",\n name: \"Wrapped SXP\",\n mintAddress: new PublicKey(\"SF3oTvfWzEP3DTwGSvUXRrGTvr75pdZNnBLAH9bzMuX\"),\n decimals: 6\n },\n HGET: {\n symbol: \"HGET\",\n name: \"Wrapped HGET\",\n mintAddress: new PublicKey(\"BtZQfWqDGbk9Wf2rXEiWyQBdBY1etnUUn6zEphvVS7yN\"),\n decimals: 6\n },\n CREAM: {\n symbol: \"CREAM\",\n name: \"Wrapped CREAM\",\n mintAddress: new PublicKey(\"5Fu5UUgbjpUvdBveb3a1JTNirL8rXtiYeSMWvKjtUNQv\"),\n decimals: 6\n },\n UBXT: {\n symbol: \"UBXT\",\n name: \"Wrapped UBXT\",\n mintAddress: new PublicKey(\"873KLxCbz7s9Kc4ZzgYRtNmhfkQrhfyWGZJBmyCbC3ei\"),\n decimals: 6\n },\n HNT: {\n symbol: \"HNT\",\n name: \"Wrapped HNT\",\n mintAddress: new PublicKey(\"HqB7uswoVg4suaQiDP3wjxob1G5WdZ144zhdStwMCq7e\"),\n decimals: 6\n },\n FRONT: {\n symbol: \"FRONT\",\n name: \"Wrapped FRONT\",\n mintAddress: new PublicKey(\"9S4t2NEAiJVMvPdRYKVrfJpBafPBLtvbvyS3DecojQHw\"),\n decimals: 6\n },\n AKRO: {\n symbol: \"AKRO\",\n name: \"Wrapped AKRO\",\n mintAddress: new PublicKey(\"6WNVCuxCGJzNjmMZoKyhZJwvJ5tYpsLyAtagzYASqBoF\"),\n decimals: 6\n },\n HXRO: {\n symbol: \"HXRO\",\n name: \"Wrapped HXRO\",\n mintAddress: new PublicKey(\"DJafV9qemGp7mLMEn5wrfqaFwxsbLgUsGVS16zKRk9kc\"),\n decimals: 6\n },\n UNI: {\n symbol: \"UNI\",\n name: \"Wrapped UNI\",\n mintAddress: new PublicKey(\"DEhAasscXF4kEGxFgJ3bq4PpVGp5wyUxMRvn6TzGVHaw\"),\n decimals: 6\n },\n SRM: {\n symbol: \"SRM\",\n name: \"serum\",\n mintAddress: new PublicKey(\"SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt\"),\n decimals: 6\n },\n FTT: {\n symbol: \"FTT\",\n name: \"Wrapped FTT\",\n mintAddress: new PublicKey(\"AGFEad2et2ZJif9jaGpdMixQqvW5i81aBdvKe7PHNfz3\"),\n decimals: 6\n },\n TOMO: {\n symbol: \"TOMO\",\n name: \"Wrapped TOMO\",\n mintAddress: new PublicKey(\"GXMvfY2jpQctDqZ9RoU3oWPhufKiCcFEfchvYumtX7jd\"),\n decimals: 6\n },\n KARMA: {\n symbol: \"KARMA\",\n name: \"Wrapped KARMA\",\n mintAddress: new PublicKey(\"EcqExpGNFBve2i1cMJUTR4bPXj4ZoqmDD2rTkeCcaTFX\"),\n decimals: 4\n },\n LUA: {\n symbol: \"LUA\",\n name: \"Wrapped LUA\",\n mintAddress: new PublicKey(\"EqWCKXfs3x47uVosDpTRgFniThL9Y8iCztJaapxbEaVX\"),\n decimals: 6\n },\n MATH: {\n symbol: \"MATH\",\n name: \"Wrapped MATH\",\n mintAddress: new PublicKey(\"GeDS162t9yGJuLEHPWXXGrb1zwkzinCgRwnT8vHYjKza\"),\n decimals: 6\n },\n KEEP: {\n symbol: \"KEEP\",\n name: \"Wrapped KEEP\",\n mintAddress: new PublicKey(\"GUohe4DJUA5FKPWo3joiPgsB7yzer7LpDmt1Vhzy3Zht\"),\n decimals: 6\n },\n SWAG: {\n symbol: \"SWAG\",\n name: \"Wrapped SWAG\",\n mintAddress: new PublicKey(\"9F9fNTT6qwjsu4X4yWYKZpsbw5qT7o6yR2i57JF2jagy\"),\n decimals: 6\n },\n FIDA: {\n symbol: \"FIDA\",\n name: \"Bonfida\",\n mintAddress: new PublicKey(\"EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp\"),\n decimals: 6\n },\n KIN: {\n symbol: \"KIN\",\n name: \"KIN\",\n mintAddress: new PublicKey(\"kinXdEcpDQeHPEuQnqmUgtYykqKGVFq6CeVX5iAHJq6\"),\n decimals: 5\n },\n MAPS: {\n symbol: \"MAPS\",\n name: \"MAPS\",\n mintAddress: new PublicKey(\"MAPS41MDahZ9QdKXhVa4dWB9RuyfV4XqhyAZ8XcYepb\"),\n decimals: 6\n },\n OXY: {\n symbol: \"OXY\",\n name: \"OXY\",\n mintAddress: new PublicKey(\"z3dn17yLaGMKffVogeFHQ9zWVcXgqgf3PQnDsNs2g6M\"),\n decimals: 6\n },\n RAY: {\n symbol: \"RAY\",\n name: \"raydium\",\n mintAddress: new PublicKey(\"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\"),\n decimals: 6\n },\n COPE: {\n symbol: \"COPE\",\n name: \"cope\",\n mintAddress: new PublicKey(\"8HGyAAB1yoM1ttS7pXjHMa3dukTFGQggnFFH3hJZgzQh\"),\n decimals: 6\n },\n STEP: {\n symbol: \"STEP\",\n name: \"step-finance\",\n mintAddress: new PublicKey(\"StepAscQoEioFxxWGnh2sLBDFp9d8rvKz2Yp39iDpyT\"),\n decimals: 9\n },\n MEDIA: {\n symbol: \"MEDIA\",\n name: \"media-network\",\n mintAddress: new PublicKey(\"ETAtLmCmsoiEEKfNrHKJ2kYy3MoABhU6NQvpSfij5tDs\"),\n decimals: 6\n },\n ROPE: {\n symbol: \"ROPE\",\n name: \"ROPE\",\n mintAddress: new PublicKey(\"8PMHT4swUMtBzgHnh5U564N5sjPSiUz2cjEQzFnnP1Fo\"),\n decimals: 9\n },\n MER: {\n symbol: \"MER\",\n name: \"Mercurial\",\n mintAddress: new PublicKey(\"MERt85fc5boKw3BW1eYdxonEuJNvXbiMbs6hvheau5K\"),\n decimals: 6\n },\n LIKE: {\n symbol: \"LIKE\",\n name: \"only1\",\n mintAddress: new PublicKey(\"3bRTivrVsitbmCTGtqwp7hxXPsybkjn4XLNtPsHqa3zR\"),\n decimals: 9\n },\n ATLAS: {\n symbol: \"ATLAS\",\n name: \"star-atlas\",\n decimals: 8,\n mintAddress: new PublicKey(\"ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx\")\n },\n POLIS: {\n symbol: \"POLIS\",\n name: \"star-atlas-dao\",\n decimals: 8,\n mintAddress: new PublicKey(\"poLisWXnNRwC6oBu1vHiuKQzFjGL4XDSu4g9qjz9qVk\")\n },\n ORCA: {\n symbol: \"ORCA\",\n name: \"orca\",\n decimals: 6,\n mintAddress: new PublicKey(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\")\n },\n mSOL: {\n symbol: \"mSOL\",\n name: \"msol\",\n decimals: 9,\n mintAddress: new PublicKey(\"mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So\")\n },\n MNDE: {\n symbol: \"MNDE\",\n name: \"marinade\",\n decimals: 9,\n mintAddress: new PublicKey(\"MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey\")\n },\n NINJA: {\n symbol: \"NINJA\",\n name: \"ninja-protocol\",\n decimals: 6,\n mintAddress: new PublicKey(\"FgX1WD9WzMU3yLwXaFSarPfkgzjLb2DZCqmkx9ExpuvJ\")\n },\n whETH: {\n symbol: \"whETH\",\n name: \"ethereum\",\n mintAddress: new PublicKey(\"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs\"),\n decimals: 8\n },\n SBR: {\n symbol: \"SBR\",\n name: \"saber\",\n mintAddress: new PublicKey(\"Saber2gLauYim4Mvftnrasomsv6NvAuncvMEZwcLpD1\"),\n decimals: 6\n },\n LIQ: {\n symbol: \"LIQ\",\n name: \"liq-protocol\",\n mintAddress: new PublicKey(\"4wjPQJ6PrkC4dHhYghwJzGBVP78DkBzA2U3kHoFNBuhj\"),\n decimals: 6\n },\n PORT: {\n symbol: \"PORT\",\n name: \"port-finance\",\n mintAddress: new PublicKey(\"PoRTjZMPXb9T7dyU7tpLEZRQj7e6ssfAE62j2oQuc6y\"),\n decimals: 6\n },\n SAMO: {\n symbol: \"SAMO\",\n name: \"samoyedcoin\",\n mintAddress: new PublicKey(\"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU\"),\n decimals: 9\n },\n ABR: {\n symbol: \"ABR\",\n name: \"allbridge\",\n mintAddress: new PublicKey(\"a11bdAAuV8iB2fu7X6AxAvDTo1QZ8FXB3kk5eecdasp\"),\n decimals: 9\n },\n weSUSHI: {\n symbol: \"weSUSHI\",\n name: \"allbridge\",\n mintAddress: new PublicKey(\"ChVzxWRmrTeSgwd3Ui3UumcN8KX7VK3WaD4KGeSKpypj\"),\n decimals: 8\n },\n weUNI: {\n symbol: \"weUNI\",\n name: \"allbridge\",\n mintAddress: new PublicKey(\"8FU95xFJhUUkyyCLU13HSzDLs7oC4QZdXQHL6SCeab36\"),\n decimals: 8\n },\n STARS: {\n symbol: \"STARS\",\n name: \"starlaunch\",\n mintAddress: new PublicKey(\"HCgybxq5Upy8Mccihrp7EsmwwFqYZtrHrsmsKwtGXLgW\"),\n decimals: 6\n },\n weDYDX: {\n symbol: \"weDYDX\",\n name: \"dydx\",\n mintAddress: new PublicKey(\"4Hx6Bj56eGyw8EJrrheM6LBQAvVYRikYCWsALeTrwyRU\"),\n decimals: 8\n },\n weAXS: {\n symbol: \"weAXS\",\n name: \"axie-infinity\",\n mintAddress: new PublicKey(\"HysWcbHiYY9888pHbaqhwLYZQeZrcQMXKQWRqS7zcPK5\"),\n decimals: 8\n },\n weSHIB: {\n symbol: \"weSHIB\",\n name: \"shiba-inu\",\n mintAddress: new PublicKey(\"CiKu4eHsVrc1eueVQeHn7qhXTcVu95gSQmBpX4utjL9z\"),\n decimals: 8\n },\n SLND: {\n symbol: \"SLND\",\n name: \"solend\",\n mintAddress: new PublicKey(\"SLNDpmoWTVADgEdndyvWzroNL7zSi1dF9PC3xHGtPwp\"),\n decimals: 6\n },\n weMANA: {\n symbol: \"weMANA\",\n name: \"decentraland\",\n mintAddress: new PublicKey(\"7dgHoN8wBZCc5wbnQ2C47TDnBMAxG4Q5L3KjP67z8kNi\"),\n decimals: 8\n },\n weSAND: {\n symbol: \"weSAND\",\n name: \"the-sandbox\",\n mintAddress: new PublicKey(\"49c7WuCZkQgc3M4qH8WuEUNXfgwupZf1xqWkDQ7gjRGt\"),\n decimals: 8\n },\n CAVE: {\n symbol: \"CAVE\",\n name: \"cave\",\n mintAddress: new PublicKey(\"4SZjjNABoqhbd4hnapbvoEPEqT8mnNkfbEoAwALf1V8t\"),\n decimals: 6\n },\n GENE: {\n symbol: \"GENE\",\n name: \"genopets\",\n mintAddress: new PublicKey(\"GENEtH5amGSi8kHAtQoezp1XEXwZJ8vcuePYnXdKrMYz\"),\n decimals: 9\n },\n SONAR: {\n symbol: \"SONAR\",\n name: \"sonarwatch\",\n mintAddress: new PublicKey(\"sonarX4VtVkQemriJeLm6CKeW3GDMyiBnnAEMw1MRAE\"),\n decimals: 9\n },\n DFL: {\n symbol: \"DFL\",\n name: \"defi-land\",\n mintAddress: new PublicKey(\"DFL1zNkaGPWm1BqAVqRjCZvHmwTFrEaJtbzJWgseoNJh\"),\n decimals: 9\n },\n wbWBNB: {\n symbol: \"wbWBNB\",\n name: \"binancecoin\",\n mintAddress: new PublicKey(\"9gP2kCy3wA1ctvYWQk75guqXuHfrEomqydHLtcTCqiLa\"),\n decimals: 8\n },\n REAL: {\n symbol: \"REAL\",\n name: \"realy-metaverse\",\n mintAddress: new PublicKey(\"AD27ov5fVU2XzwsbvnFvb1JpCBaCB5dRXrczV9CqSVGb\"),\n decimals: 9\n },\n MBS: {\n symbol: \"MBS\",\n name: \"monkeyball\",\n mintAddress: new PublicKey(\"Fm9rHUTF5v3hwMLbStjZXqNBBoZyGriQaFM6sTFz3K8A\"),\n decimals: 6\n },\n stSOL: {\n symbol: \"stSOL\",\n name: \"lido-staked-sol\",\n mintAddress: new PublicKey(\"7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj\"),\n decimals: 9\n },\n wLDO: {\n symbol: \"wLDO\",\n name: \"lido-dao\",\n mintAddress: new PublicKey(\"HZRCwxP2Vq9PCpPXooayhJ2bxTpo5xfpQrwB1svh332p\"),\n decimals: 8\n },\n PRISM: {\n symbol: \"PRISM\",\n name: \"prism\",\n mintAddress: new PublicKey(\"PRSMNsEPqhGVCH1TtWiJqPjJyh2cKrLostPZTNy1o5x\"),\n decimals: 6\n },\n SHDW: {\n symbol: \"SHDW\",\n name: \"genesysgo-shadow\",\n mintAddress: new PublicKey(\"SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y\"),\n decimals: 9\n },\n BASIS: {\n symbol: \"BASIS\",\n name: \"basis-markets\",\n mintAddress: new PublicKey(\"Basis9oJw9j8cw53oMV7iqsgo6ihi9ALw4QR31rcjUJa\"),\n decimals: 6\n },\n GRAPE: {\n symbol: \"GRAPE\",\n name: \"grape-2\",\n mintAddress: new PublicKey(\"8upjSpvjcdpuzhfR1zriwg5NXkwDruejqNE9WNbPRtyA\"),\n decimals: 6\n },\n wUST: {\n symbol: \"wUST\",\n name: \"wUST\",\n mintAddress: new PublicKey(\"9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i\"),\n decimals: 6\n },\n wLUNA: {\n symbol: \"wLUNA\",\n name: \"terra-luna\",\n mintAddress: new PublicKey(\"F6v4wfAdJB8D8p77bMXZgYt8TDKsYxLYxH5AFhUkYx9W\"),\n decimals: 6\n },\n SLC: {\n symbol: \"SLC\",\n name: \"solice\",\n mintAddress: new PublicKey(\"METAmTMXwdb8gYzyCPfXXFmZZw4rUsXX58PNsDg7zjL\"),\n decimals: 6\n },\n MEAN: {\n symbol: \"MEAN\",\n name: \"meanfi\",\n mintAddress: new PublicKey(\"MEANeD3XDdUmNMsRGjASkSWdC8prLYsoRJ61pPeHctD\"),\n decimals: 6\n },\n ZBC: {\n symbol: \"ZBC\",\n name: \"zebec-protocol\",\n mintAddress: new PublicKey(\"zebeczgi5fSEtbpfQKVZKCJ3WgYXxjkMUkNNx7fLKAF\"),\n decimals: 9\n },\n ATS: {\n symbol: \"ATS\",\n name: \"atlas-dex\",\n mintAddress: new PublicKey(\"HJbNXx2YMRxgfUJ6K4qeWtjatMK5KYQT1QnsCdDWywNv\"),\n decimals: 9\n },\n GST: {\n symbol: \"GST\",\n name: \"green-satoshi-token\",\n mintAddress: new PublicKey(\"AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB\"),\n decimals: 9\n },\n GMT: {\n symbol: \"GMT\",\n name: \"stepn\",\n mintAddress: new PublicKey(\"7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx\"),\n decimals: 9\n },\n prANA: {\n symbol: \"prANA\",\n name: \"nirvana-ana\",\n mintAddress: new PublicKey(\"PRAxfbouRoJ9yZqhyejEAH6RvjJ86Y82vfiZTBSM3xG\"),\n decimals: 6\n },\n RATIO: {\n symbol: \"RATIO\",\n name: \"ratio-finance\",\n mintAddress: new PublicKey(\"ratioMVg27rSZbSvBopUvsdrGUzeALUfFma61mpxc8J\"),\n decimals: 6\n },\n TTT: {\n symbol: \"TTT\",\n name: \"tabtrader\",\n mintAddress: new PublicKey(\"FNFKRV3V8DtA3gVJN6UshMiLGYA8izxFwkNWmJbFjmRj\"),\n decimals: 6\n },\n RUN: {\n symbol: \"RUN\",\n name: \"run\",\n mintAddress: new PublicKey(\"6F9XriABHfWhit6zmMUYAQBSy6XK5VF1cHXuW5LDpRtC\"),\n decimals: 9\n },\n SLCL: {\n symbol: \"SLCL\",\n name: \"solcial\",\n mintAddress: new PublicKey(\"SLCLww7nc1PD2gQPQdGayHviVVcpMthnqUz2iWKhNQV\"),\n decimals: 9\n }\n};\n\n// src/constants/lend/pools.ts\nvar lendProgramId = new PublicKey2(\n \"FC81tbGt6JWRXidaWYFXxGnTk4VgobhJHATvTRVMqgWj\"\n);\nvar lendingPools = {\n USDC: {\n lookupTableAddress: new PublicKey2(\n \"8zkUc4NeXDoFp8UBDQ3sPVKbBAHNHdvNbeRm1tupEHS9\"\n ),\n programId: lendProgramId,\n tokenMint: new PublicKey2(\"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"),\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingPoolInfoAccount: new PublicKey2(\n \"Hx6LbkMHe69DYawhPyVNs8Apa6tyfogfzQV6a7XkwBUU\"\n ),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"CFp9kt8z3Epb1QSiEp3xA44KbSwuJxhFR3wQoerFqYS9\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"CugsLyJk1Jghc7LkgvnFuUwshJhz1FE9mpkF7Z4acAMU\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"62fDf5daUJ9jBz8Xtj6Bmw1bh1DvHn8AG4L9hMmxCzpu\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"Gyc1V1xbA9NjzuURE662ATw6W4AdhwvsL26yUnSGhbkz\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"CZ2s85dnuAVyGbRWBNauHZwj9oTV2i9xTvFwc1Cedr7E\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"Bd71jEvypKFs8N5gByyhD2149tSqLy4PVAzFFShCTJTB\"\n )\n },\n PAI: {\n lookupTableAddress: new PublicKey2(\n \"2E8tZ5SLctXECt74ooLxDf4Wz5dwngpoKwc6z7Mn987S\"\n ),\n programId: lendProgramId,\n tokenMint: new PublicKey2(\"Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS\"),\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingPoolInfoAccount: new PublicKey2(\n \"EzofB5BK23PHDfEAThk5oJANb9FWTXzezrafiTDzcBBA\"\n ),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"4Kvd1ULAy45k2EQt1pdePa82UBz9tW6N1rLJWb3EAJgQ\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"sKmPL3zkAf7777bhXnMaSfTU1jg1keNHNPz38wBTNd5\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"HDvD8a4VWbkHNG7hb4CBumNhn41DyKL51qVYBNH73o23\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"9tk9XwzJt1J2DoNcBtBmGMsnbnwvMUAoJF1pjdcfJe2E\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"HkMze549cFMdLMRDsJyfH8n6EE5jjTuVZr9re4WRYuk9\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"7h8YziEXSZgyzqDb5c6PP3uUztQR7hQHwqyWWe9BTqY3\"\n )\n },\n RAY: {\n lookupTableAddress: new PublicKey2(\n \"Fe8sni23YSFGqZTLpTia6y6fUmbyzao22wJy1hBqGSx\"\n ),\n programId: lendProgramId,\n tokenMint: new PublicKey2(\"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\"),\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingPoolInfoAccount: new PublicKey2(\n \"ENZ7vdrvNGdAfVa8DoGpT2GrfoSFUtWKRoesf2dvqpuq\"\n ),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"BUK8XbZeEqVULYRxGp4Va2R1BRqrYzXDrCVnWt6B7TZf\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"C2HJD7r6NYCCVoXPPExxYEQ73LZJ3qmb5H13GnwMZfwa\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"5uZERkJVyhCABEdocEssPZyMXYa8GJpLhngi95yXr9jc\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"GrVpvHCRkTHESGwyaj4gtNLn95NAdkBSnZbKusoFumup\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"GZqhoJhN1bz5Frq9GCaUSJ2nimnizXzHwsH12Qgh4YmR\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"6EZzqDqfTfdoFF4KD1gmki3btEHfULK4SjNcuJMTEDUt\"\n )\n },\n USDT: {\n lookupTableAddress: new PublicKey2(\n \"8T9RNbWAWuPgKXgV5EaQV8kvo9fbGjmLmt4XzwFimn1c\"\n ),\n programId: lendProgramId,\n tokenMint: new PublicKey2(\"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\"),\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingPoolInfoAccount: new PublicKey2(\n \"EyqWUeme2B1dhuwJvJVi2coYPcGWmWrakcpsSFeikrhb\"\n ),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"Acx3Ky9pk8CyYftA9HYF31EbVhBDi21EqJsFtMW2XxXW\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"7gAN5Y4hGAG2A9vyr9dURGosjmo4Rwiaqz4iKZGNenE1\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"8TtsTZQ6mU4YSW5jw4sDjSDEG1CW8QLpK7C9g5TVgBvn\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"EfLgyXRGFi9MUCMgrsFBuAJ7pMPXBceKhD6x4PgdvLLc\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"CoheXVD8cAdVaKznfay22dBpfML5Fbz5g4j67syKgRg4\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"EAQxDXsA6RXxWtA1PwZNnTnj2MapHBtMzvUmfuGPJCPX\"\n )\n },\n SRM: {\n lookupTableAddress: new PublicKey2(\n \"E7Rf4v3DroXQ4Q2Aon5FsqtDvduNuXEXqCcoKoD8UYoj\"\n ),\n programId: lendProgramId,\n tokenMint: new PublicKey2(\"SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt\"),\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingPoolInfoAccount: new PublicKey2(\n \"B1zB1EuTjnFPLdwySeBYhzeAf3h9buWLbDoG7AHcUTMF\"\n ),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"FLQtBThLEVvhXdKqq2CREL8sFt8jAFS8szm4HaMYqmJk\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"FdSBYwMEfy21H3k64cvYdir3mxzmnZotiYUsC5iPPoxM\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"6CZhCFwA7hbqDEoVUQdFpHaCGQU7fSSwhaJWdG4DmsQ6\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"C3EjtH3hVuLrU3j1y5ArMFRbAhxFf5hXNfk3b9SU91qN\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"DqKuxgMxLPDCXtoQzLG1p85S2i3tP3EaeUVDAw7P8Nt4\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"Ednqn9Zo5HpDX2DRmCWu6x46ZXnHNmTmrq9G8hrTuBnz\"\n )\n },\n ETH: {\n lookupTableAddress: new PublicKey2(\n \"5M7vfgfzqT4F5QJyb7w9YqGPrVXBLhQa7sqVRfmd5NE7\"\n ),\n programId: lendProgramId,\n tokenMint: new PublicKey2(\"2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk\"),\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingPoolInfoAccount: new PublicKey2(\n \"CKMQxUz1nkn3NS5B9AUD1uyWNL8iN2piG9LVt1RvWXzj\"\n ),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"9MH38iiDX4Pk37U6TXLqz2783RspNhwBTYwBNHp8WUzP\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"8UPe7Fcm2f1QEFQh2YNr1jg2vgQmj4CXhLYEWgStHd8B\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"B8QXcUv5FFwyHH5V88g6PhYBc8fQvwSpza4C9PsiRpQD\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"C5X2Q2K2jQtwpuqHKnLVJ1ZsvL9BMRwddMgqaQ5UGNkC\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"BKKbCDggM83SPLFd1jRPu1ZsCv9nXkwZVne11N9FEs9w\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"9A3KAmmv1VyqNqVGBM6T9b1dp9Ax9xxdeXEgedo8U7Gh\"\n )\n },\n SOL: {\n lookupTableAddress: new PublicKey2(\n \"4DoNrJQqMB2kG31bzKxVdgKWqB4rrCNt3bVbAzUd4Tmg\"\n ),\n programId: lendProgramId,\n tokenMint: NATIVE_MINT2,\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingPoolInfoAccount: new PublicKey2(\n \"EnZC8MB6QLTxwN1LNqCXYC7XMpvXqitnYQPf5y5AcQRn\"\n ),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"GiJwrxQW5NQWWAva4rnDMXwHxfrhyUzwMX5to1pmCCgF\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"2BDZqoVKAX3PJKeZJytjk7oEpbUu3jvdgdi6tA8VusnY\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"92Zst3rEoJsyZUW2yNc2811GtkBwFrm3tqgxMTtFWuSB\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"Hyi1jMgc9MMEZyaG9ziL2PvT7zbeRNKhb5K1kj9bxz4x\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"7x61NrCzeekHwgW5Nk4afMg2sxjMK6RyMkx8tCzzX4qG\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"WuPCgCuyLSXatdjyWqkGjCPSQFgKLwcfsNR9fDq3hVL\"\n )\n },\n ORCA: {\n lookupTableAddress: new PublicKey2(\n \"2iiSgXsQv5Ej6m68KkP7uU1jCZwy2Py1RhwLkG91PBt4\"\n ),\n programId: lendProgramId,\n tokenMint: new PublicKey2(\"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\"),\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingPoolInfoAccount: new PublicKey2(\n \"9bo5JunUhp4XD7TDeeS9ARvWTYGBYtuQKUHGUb7RRvkf\"\n ),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"F3EhkuRuZaYNY2bLTosjv6V7QXiZ8db9nXTZeLnmHC7V\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"F3EhkuRuZaYNY2bLTosjv6V7QXiZ8db9nXTZeLnmHC7V\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"DKoKBD7YheCGZjWp5CaHDPtheAcUveRSMvWkaivbNzWh\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"AMUE9EgiEiTP1YVBicwTVGtumBypR5thjTgbsXZM2PPG\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"CJNd1LZZxZr243dpNN9DtEavXn65kstrg251MPb8vmwW\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"74m1zyzV8x9d8kZLEaVaNWRsnx8pH47tfX8cquot11ef\"\n )\n },\n mSOL: {\n lookupTableAddress: new PublicKey2(\n \"A9L7C5QMNG5yBjntCxjo4tkxmu2AHiNP5ev9uBtLUMfE\"\n ),\n programId: lendProgramId,\n tokenMint: new PublicKey2(\"mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So\"),\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolInfoAccount: new PublicKey2(\n \"492Hr5QDQyrsLcyXqMZ7A5osjmqwtn4cdKNQLDBYBzvy\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"ADW9ZJuRQ9xbzTtWCwX1Th24Vxq7GWHWwYtctrbyjSr1\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"ADW9ZJuRQ9xbzTtWCwX1Th24Vxq7GWHWwYtctrbyjSr1\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"4mntRxKJWib1YTWNV4aLfszF6FeziBHdwnNAwGSfKKMX\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"EbWWhmDLKXDdq2guubVJCdSztuUaN6XhtwVMy9TMMwtV\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"Fdu3QfaQ9VL4GF85NrkpzhKRAJECv9cx7gchHca5MsRt\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"HdTwUP1U3WQ1EnYPP8c8mx8sqHhXYQ9zwKVsLGxWi7W1\"\n )\n },\n BTC: {\n lookupTableAddress: new PublicKey2(\n \"HUT8P5M4buU38F361SC8Zzp5VPAHfMbmL4aAzoyLdVp6\"\n ),\n programId: lendProgramId,\n tokenMint: new PublicKey2(\"9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E\"),\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolInfoAccount: new PublicKey2(\n \"DxAuEAxKYXsKMYG5Ma4TM8AsrAo7LQBSnbEGicU7i1ek\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"2MN34BxuLVrjZpKYKHmW1c6ZGeQs4aWQRrEvmrYfZdtG\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"2MN34BxuLVrjZpKYKHmW1c6ZGeQs4aWQRrEvmrYfZdtG\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"2G9iwy9zfLaXB2bFiqSA7YbKEvtAEXVmdvGTF28jQVgg\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"HGejymLhai1TDvRA4vBEbS5VRbKP1u74ZdzZcv8Y2o1M\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"6WzqPd81AqsCwbXp33A6ro87axfD9je32hn3JE4KsnGi\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"E7HkZYeY8mqrtC45kusWiArqLNpGnV5Foioj6yEPHB1y\"\n )\n },\n whETH: {\n lookupTableAddress: new PublicKey2(\n \"9YyTJSjV9YK4GgW4oKETJQcEJyHTCCDU1TwVFZu41Cjs\"\n ),\n programId: lendProgramId,\n tokenMint: new PublicKey2(\"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs\"),\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolInfoAccount: new PublicKey2(\n \"EEokU6r9bBdTz1umHjGhkjgfikARsJzJBXhYxnTmN4Xk\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"9Mq6KEyW1nF24TcGrdLLfnK2pE5VdMxbY2SZtcP84R5X\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"9Mq6KEyW1nF24TcGrdLLfnK2pE5VdMxbY2SZtcP84R5X\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"Hk8b6i2C7PxFBPdd1TCrGssuZpCDEg4fh8yFuyHNJuJe\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"FNG4A4GWF1EsQVEjNrQMRT9Dr3H28TycQabtnsQF1MiD\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"7f7mU3tQvxD9t3f5ckhxcGSdwqoHHdWrJg43HXiUFWri\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"7LvrwstXyshwVn7BPDgjR8Cndersy9GzbbGhyHwQcX3W\"\n )\n },\n weSUSHI: {\n lookupTableAddress: new PublicKey2(\n \"5vnSYw9FpCWYf6NB1VxNhC9ouv7d1xLz9Cx17S2f46aW\"\n ),\n programId: lendProgramId,\n tokenMint: TOKENS.weSUSHI.mintAddress,\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolInfoAccount: new PublicKey2(\n \"2oTEVdMpSRsamFeNYzqn3wifsPHRomA8TShgbTnDtTgN\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"4VAyWCoRbW5YXiV5Rz7pZy7miYBJLjfZYsykDuTnWyqj\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"4VAyWCoRbW5YXiV5Rz7pZy7miYBJLjfZYsykDuTnWyqj\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"EEhiV55jAt5JDpeH3GF4VGrStiPn5gCeWmqffyTp9B4E\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"5SDoskkCcV8NBJcP97g9CS7BEGLqXT5q2F6Ve2W3VN71\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"E2ocWnUUuBpUDLRSxB5VdUqr635DMPiWuV4PYDtiyGbi\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"L9idBQvg4SKzdtHPgZijpJGkDT4WVbhnA7KmTVPT477\"\n )\n },\n weUNI: {\n lookupTableAddress: new PublicKey2(\n \"Hb4ZHgHCyyzJWfksKyr8mRB7ydvH2SG76AC5pXkv6j9G\"\n ),\n programId: lendProgramId,\n tokenMint: TOKENS.weUNI.mintAddress,\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolInfoAccount: new PublicKey2(\n \"H4uTQ8CCFJYVQYZ8c2bH7hHGrrok6k4pWDhk5NQt9KR8\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"E3fN9Wqesn2NbYGPjybFo5HTMpcyLPnWNHovQpQqqw8G\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"E3fN9Wqesn2NbYGPjybFo5HTMpcyLPnWNHovQpQqqw8G\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"CGj7e1g4ojW1RhSocF8AKWxHFaqCQjK8kBsbHqNB4BxP\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"8BtR6Dzg4fLmLv4ZZdX1x22WYiPHvp8AtvRFgSMQwxdw\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"74WmdEZG9rjvcAX2yczd5h54QeXnq62sVNLMz1DU2Abh\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"8kLAk9EiLV6qePNEtjnDLyWbRsySgMPSTihdWAEEv9H9\"\n )\n },\n SAMO: {\n lookupTableAddress: new PublicKey2(\n \"FUdXgKTfisX642gKDZReFtaRee8WdHiw4nrz4Y4y7JpP\"\n ),\n programId: lendProgramId,\n tokenMint: TOKENS.SAMO.mintAddress,\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolInfoAccount: new PublicKey2(\n \"HJLkovTpxof1z9tVMuX1pWp1ePDx1zgmnGYfFMxFRAd\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"J198uwytk8CPejCyNM9TMPJcLPCky6pZwGwP3n1CUfto\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"J198uwytk8CPejCyNM9TMPJcLPCky6pZwGwP3n1CUfto\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"A9H3fAqkWmRnnFzXXzydZHzyLQdzK5o9dMejCL27tqq8\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"HP3sKy5xqLkoNnbuHRCPuFaQUtYskNnockBPcYo5PZut\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"E5ejPudazVxEdQUsS37g8yUn5HD22FBHsGEKWkGRDR3F\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"23tLfFHXZR1tAimzVyEAdN7HWJWiqvjepaX5qBHkgQvT\"\n )\n },\n POLIS: {\n lookupTableAddress: new PublicKey2(\n \"8GNhPXDU4UGascdfKGmu3ZBJsEbYoxe4w2BRixXH8ZNK\"\n ),\n programId: lendProgramId,\n tokenMint: TOKENS.POLIS.mintAddress,\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolInfoAccount: new PublicKey2(\n \"BWJkfNQnYt817V6sKxEJ3sFcivcXZgfKGCe8Z9f4LcVj\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"7Ad6djoPLzigyBnnWjoLh2gQ6Tbw2s6kAdsaVUBq6L8N\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"7Ad6djoPLzigyBnnWjoLh2gQ6Tbw2s6kAdsaVUBq6L8N\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"FenVvq6s6S3McD1BCm76Ktz1EvRNCB4qYKGFU76fB7Fj\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"GKTqMGVCgXJaDzjYfPdgMbVfnzCKDj6KqRpykauw19do\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"EkKFNt7PBRdWy8EpmZAbAZdvXZpSKvdwMfo8eotN1PEr\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"FGKikDsnBPQ5m7jgbNNbHaR1gh1T8GYJ5sPYWoYdoE4p\"\n )\n },\n ATLAS: {\n lookupTableAddress: new PublicKey2(\n \"7jmphqSz19pSyYDAoNbBnAdpSPjCDMhuGowvZL4MVPya\"\n ),\n programId: lendProgramId,\n tokenMint: TOKENS.ATLAS.mintAddress,\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolInfoAccount: new PublicKey2(\n \"FnkmnUqazYmSm791rSTSXYbAzDzsuHJBgySgNZeCHGDJ\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"E5ovYitzudRyUy7AS4U52eFgrq1rjr773rRGpYax1nmD\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"E5ovYitzudRyUy7AS4U52eFgrq1rjr773rRGpYax1nmD\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"4mygt5bFQrbXH9gNg75j1KVTrKGhvcYiQjir6FJ8afYH\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"Eb4Ai2PXmRX3V9TX6awjNdBXZKGRyCgTmQu6Pni9NnTb\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"3nAgm2XrSi3RNDWz4wCvUWwQW3QQE7s5i7MxNz8r8mGZ\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"3PwecBTLVt8zqKadSFDjeKH7Swzt1GxvU27urj66L89P\"\n )\n },\n GENE: {\n lookupTableAddress: new PublicKey2(\n \"HFKYALQcRFkM5S35fjXz3aCoyPDwKeGJtXzs5yMkjUFw\"\n ),\n programId: lendProgramId,\n tokenMint: TOKENS.GENE.mintAddress,\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolInfoAccount: new PublicKey2(\n \"FrgyPPEPNC25ihob4ZobP3eYjh8uBoxLiobdMDX2EsMc\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"A4UMfr97y35AvCaakKRAE5UBsb4UuvRQ2JiT23dyzDFu\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"A4UMfr97y35AvCaakKRAE5UBsb4UuvRQ2JiT23dyzDFu\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"9z3eDHueAMdUtym9Q2ku3hi5YXHTYjpFLp1YEEnxUHPV\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"58teG2GNEoeYQUBa3VxQe5ZH5SPCZ6nUsrCuN5akbaQS\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"2KR5Q6zCik6kFyiWPMMVCKC5HDAP6joGNhKhbEv6nFdY\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"7LBnkdaCZsM82t7G5MYKBoYAZetcnsqfU1cABxnPoquw\"\n )\n },\n SONAR: {\n lookupTableAddress: new PublicKey2(\n \"CUcpP2uUw77Ftvhdppy2SpcRsDQ9kgW4qeG6iWNKeiC1\"\n ),\n programId: lendProgramId,\n tokenMint: TOKENS.SONAR.mintAddress,\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolInfoAccount: new PublicKey2(\n \"3USSy3sAZSCnUiCZJaTFt5hCHWSw87kg8tNPaEZh1p9D\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"2F2yrLZQa3av7PxW7vdqiYBV4AwTbkCdswgN2BYGgtvs\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"2F2yrLZQa3av7PxW7vdqiYBV4AwTbkCdswgN2BYGgtvs\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"FvHrhBTTgo7q8uDX7gN5f7YzSXMrf3mwYtkay5NvkJzg\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"DPMixAHcMsryStgytYBhvvtR2WbvyRxkMwG147NmXEPS\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"HsKN1EC5zcArg1yoq1tMg7JKfxPW9m644mqCphrbLMC\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"7zqtZ8LhBYUUXoDCwDFcdLgNkYo8tZZqTdoFJqAL5ie8\"\n )\n },\n DFL: {\n lookupTableAddress: new PublicKey2(\n \"2Q144LX9XXacpEwNMFMESnuZhCNpPrABYun3AZJxnYHB\"\n ),\n programId: lendProgramId,\n tokenMint: TOKENS.DFL.mintAddress,\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolInfoAccount: new PublicKey2(\n \"74fWq2xnHBP1W6QhLDazCZAuZvp9XY3ck1PGNJg9hfhi\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"5QNHLaujxMgFKYaJM55uYb3jyMGgvspizg7S5eVAD3d8\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"5QNHLaujxMgFKYaJM55uYb3jyMGgvspizg7S5eVAD3d8\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"CGhMaGeVLxxQGJh6Y2bEYfLazumuFyEXpxF1UgrcMRJi\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"EHUF88xvJZyXzosAQ7Jzx5ozdvxCfZuwppSEo5b9pe2S\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"26Eo8VcgDuNZSn8x5infdYxDKs7mYZj4JKxLUCkKP3DV\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"GYZgKQmYZBosdS3PsSRv83CdPFAtTRXRZaqdFVUnumiw\"\n )\n },\n wbWBNB: {\n lookupTableAddress: new PublicKey2(\n \"AJMcPqmPMnPonDKCUHMyTF8sVCkGaHxMzQdEPKtY3QbK\"\n ),\n programId: lendProgramId,\n tokenMint: TOKENS.wbWBNB.mintAddress,\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolInfoAccount: new PublicKey2(\n \"6RnKftFywvw8sceeWUM623BYyMeW216276G4atZ23CrF\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"F7SQgbgunwx7PKc9i5zXJfSNsjU9xM5P8Sb18FCUBKyf\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"F7SQgbgunwx7PKc9i5zXJfSNsjU9xM5P8Sb18FCUBKyf\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"8EzbLKBQ8Rest1SWUtZR6zFvYTo4cCaQ73ni8sF9vtjA\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"DgBnJvW9iQT5sP5YyVHeNbRjG8Xd2d53f19a2451eXkV\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"6bMAnnzp3pim8wd8XypLGuqVFQ3LMuY3vkRRse1DkZ7o\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"CFsjid6WFmsyZozJkj43ssA5rRmYa97mzvfs8eRYqBeZ\"\n )\n },\n stSOL: {\n lookupTableAddress: new PublicKey2(\n \"kTJ8hWwRV6vmj7feyD1ppNk7rxiuPMmhrjoSmHJ75M9\"\n ),\n programId: lendProgramId,\n tokenMint: TOKENS.stSOL.mintAddress,\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolInfoAccount: new PublicKey2(\n \"9ogtxmnUF94KaPn3dB3unT5yyu7rpzSwc5igysgqFxrU\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"85pJTrAVdjHNvgCcUtefwkSe9RDKnHueyvs2uTocWmWs\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"85pJTrAVdjHNvgCcUtefwkSe9RDKnHueyvs2uTocWmWs\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"HyxfDg47HKS1rQUXWvJH2XQhwEJM3AqrHU7sK9bSNt5h\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"3H64RCjRcHEJAJK9mZ3q1mBZJ2hWuv3tUvXVY7XgFL5L\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"Hhh5mQQMuWjmyUNyYFDtuXKFp9wptPuLYvH9x98FSDq8\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"CRorEh6T7aXamCsjggckCMgF1ewVavo6CfXTPNkipson\"\n )\n },\n SHDW: {\n lookupTableAddress: new PublicKey2(\n \"37Fuw9zCDDaohHxY12cw6viNJ4J4qZysRYQynQ75Fo9F\"\n ),\n programId: lendProgramId,\n tokenMint: TOKENS.SHDW.mintAddress,\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingPoolInfoAccount: new PublicKey2(\n \"8NvPwUxtBohPg45bAmzzB45qLajpfptMVgqgu5vmCNgi\"\n ),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"EoVqoTtczavGmATCagSQU11c74MkL8enp96fGkQz6uqK\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"AJu1s738dGsZ8mV2XKTqjuMiAiqNGaRsixTR4Czx4mJ2\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"48YJFjo3zLGSkUDXpa8mte3EMFNSPvy6pE9wUhoPSLnH\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"3fu3y5yGbBPqDpwKjN1PsVurm4af6uQnpkkuSo5SxZQa\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"2zxQFrSGMSWbHMzMjxDN8ceqgbJVUyyEEwR75R5zzh4M\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"3H3QXT9oEG5DaoWfQ727jgJdhVewgrTNc8jsGgBsXvQE\"\n )\n },\n BASIS: {\n lookupTableAddress: new PublicKey2(\n \"CweY4HW2y4mQQmduqQNBPRHLNcsLmNV3aUNSE4EHumhe\"\n ),\n programId: lendProgramId,\n tokenMint: TOKENS.BASIS.mintAddress,\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingPoolInfoAccount: new PublicKey2(\n \"499SnZR7dFzLU6BF9v9obfSCsmgui3FBtYtFDakD89zQ\"\n ),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"E85Eyi4NmBp2Der1ntoNNx3AH5FHmjp4gGoUPW7qYVJ8\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"9s2iRZBzSNCNTUtuzSRHcv3q4Q9SaFFhSFZVnFXGtHUp\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"5phQAZCwdfbYqj1tsv4xYWREpLZuxhqnMaZ126RAfVNb\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"AVRoCxDDfx525L1XJJ5JbKrPPbuHs1JL6Z17vWS3HpKc\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"FeMzBdYfGJtqeRAadiC4fStY13cjxe6GutTyFCFsP1vL\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"CtdMN3hrU9yq2GJpojbU1oQZbMXJyuVZYMfNkAPbgaZN\"\n )\n },\n wUST: {\n lookupTableAddress: new PublicKey2(\n \"HbSUXs2y1nMm1rpWfxeD25ZsfXEk19PuvWTZhdzvwUvo\"\n ),\n programId: lendProgramId,\n tokenMint: TOKENS.wUST.mintAddress,\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingPoolInfoAccount: new PublicKey2(\n \"G1PYcFc56DQHDjSyt8zRKcnxbBrKJq4Vehurzrt2KUzs\"\n ),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"DKYpvhtPyU9yWkGZx5VM4fA1isLwpcmQ8ttqhPJgMMrJ\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"FPnFwW1ASFLBReVz1EPWVGkbrsnrekVkEcQnrBRkvDXS\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"MeLTPseZyHm2aWSk9Gda9d6xWM8DS5QySFKBS3Vyzsv\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"AbPJaMzRetUebzRV3mtoXtyPDVwEBEHif3EibVKhfcTs\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"mYi2FARcy26GxkDuTneTybM75izMAR7swioxUMvyPRa\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"5wTjKzJyEJHbjw4fsZM51fKBDwiq5JSA3bSzzRE2PXob\"\n )\n },\n GST: {\n lookupTableAddress: new PublicKey2(\n \"GBAgJPNhEmt3JwubXVgd66zoJZP8XBGD7FwsYzo8WRkh\"\n ),\n programId: lendProgramId,\n tokenMint: TOKENS.GST.mintAddress,\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n lendingPoolInfoAccount: new PublicKey2(\n \"93zxnt1gPepvUjWYPP32uANnhAK6NNphGD6A2yQFhk4s\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"4Y7VyaAWEDaQSkeYXbXRf1d82ZPViVRZ7Dt4fjHKgotL\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"4GDuSZwHUQvL6zga2UNdjgXSqXjcWaUYc4S36N9q4567\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"GjmnPLwAAA5aZCfN5sCwcbartonu8iyVMPqSnfkyvtC9\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"8Nq8YV7BYoe3dqdTX996TRDB2iYryAHbzZTXntt2A3Uo\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"8dzJgZxp7rBEbKhvFYXTMXKLmkqscn9UXwzcGA14fEgN\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"ERyCAJh59hn8187Kn6wiKpeXdnGw4hptrbn55vh9YJQ1\"\n )\n },\n GMT: {\n lookupTableAddress: new PublicKey2(\n \"3KzviRz2snQevukX9FWt5n72XQFX48czkWJPsAiGoJZz\"\n ),\n programId: lendProgramId,\n tokenMint: TOKENS.GMT.mintAddress,\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingPoolInfoAccount: new PublicKey2(\n \"9b5QWW2SqjmhRxtYTHXj6LFkmUkahrLAMQer3rEurd1k\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"7ZosDG7JWwXFnzhQ2aQ1ghCSQ9mrQzvH3ZhduhRPHgJB\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"9R6toP3xTFBWoqwBY8bfjUj6Tyd5hyR192jY4NeMmkNg\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"BPPtMXgGkpo5HuDbiFyQWiA5r4BfxRWfwUA8XoKPixb7\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"B1yWMWp7nvSV2upJxFUxpUkDiZAVD2MabnRgaBtR14Dm\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"6NvFHm9p6oSK8DJ9jurTMkC8KBo2hCk8UQm19Nub7R6X\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"ejLn4fFkVS29aYksC87TQYwcu8wy1tvc2AySpfHGabQ\"\n )\n },\n ZBC: {\n lookupTableAddress: new PublicKey2(\n \"FNVsWfdmEcAjdxUZtRC9165RUt8zQh3k3mANCQL4sRAu\"\n ),\n programId: lendProgramId,\n tokenMint: TOKENS.ZBC.mintAddress,\n marketInfoAccount: new PublicKey2(\n \"4XNif294wbrxj6tJ8K5Rg7SuaEACnu9s2L27i28MQB6E\"\n ),\n lendingMarketAuthority: new PublicKey2(\n \"sCDiYj7X7JmXg5fVq2nqED2q1Wqjo7PnqMgH3casMem\"\n ),\n marketOwner: new PublicKey2(\"7MBLg6oV5phip11YBbJPuq7u38kdzSi9PM3BifKSpLaR\"),\n lendingPoolInfoAccount: new PublicKey2(\n \"6uPerEUyomCC5qn4z9xF3fbVa7SCytcKoCVannPDez5R\"\n ),\n lendingPoolTknAccount: new PublicKey2(\n \"7quTFi1N9EZfz7jUx7ui9wx9rk1rb3F1Enjbh8Me2tSs\"\n ),\n lendingPoolShareMint: new PublicKey2(\n \"HUry6RSbDasMfU7LXZ5QR42YajkbMuLBQkyV742xgFKx\"\n ),\n lendingPoolShareAccount: new PublicKey2(\n \"BHuVdzrDTssFdWTqt15fsdJzJuHESQrMhSnc3jsJ8X2Y\"\n ),\n lendingPoolCreditMint: new PublicKey2(\n \"ADWAgFjannL985LDKQsQ9B833BFDMj4q8qQappe2F3X9\"\n ),\n lendingPoolCreditAccount: new PublicKey2(\n \"5xqkszmojpTFy3wGQTXFB7XoLyWXxw7ymmHN9iNYVdUK\"\n ),\n lendingPoolFeeAccount: new PublicKey2(\n \"qt8KMibr5UcB1WZGVdgyFNGvmzEtp3faUqfcKDytLzq\"\n )\n }\n};\n\n// src/index.ts\nvar LENDING_CONFIG = lendingPools;\nexport {\n LENDING_CONFIG\n};\n//# sourceMappingURL=index.mjs.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport * as mango from '@blockworks-foundation/mango-client';\nimport * as anchor from '@project-serum/anchor';\nimport { TOKEN_PROGRAM_ID } from '@solana/spl-token';\nimport { PublicKey } from '@solana/web3.js';\nimport { SEEDS } from '../constants';\nexport default class MangoHandler {\n withdraw(walletPubKey, program, strategy, vault, tokenVault, vaultState, userToken, userLp, amount, preInstructions, postInstructions, opt) {\n return __awaiter(this, void 0, void 0, function* () {\n const [mangoAccountPK] = yield PublicKey.findProgramAddress([MangoHandler.MangoGrouPK.toBuffer(), vault.toBuffer(), Buffer.from([0, 0, 0, 0, 0, 0, 0, 0])], MangoHandler.MangoProgramId);\n const mangoClient = new mango.MangoClient(program.provider.connection, MangoHandler.MangoProgramId);\n const rootBankPK = strategy.state.reserve;\n const mangoGroupState = yield mangoClient.getMangoGroup(MangoHandler.MangoGrouPK);\n yield mangoGroupState.loadRootBanks(program.provider.connection);\n const rootBankIdx = mangoGroupState.getRootBankIndex(new PublicKey(rootBankPK));\n const rootBankState = mangoGroupState.rootBankAccounts[rootBankIdx];\n if (!rootBankState)\n throw new Error('Root bank state not found');\n const nodeBankPK = rootBankState.nodeBanks[0];\n const nodeBankState = rootBankState.nodeBankAccounts.find((t) => t.publicKey.toBase58() === nodeBankPK.toBase58());\n if (!nodeBankState)\n throw new Error('Node bank state not found');\n const accountData = [\n { pubkey: MangoHandler.MangoGrouPK, isWritable: true },\n { pubkey: mangoAccountPK, isWritable: true },\n { pubkey: mangoGroupState.mangoCache, isWritable: true },\n { pubkey: nodeBankPK, isWritable: true },\n { pubkey: nodeBankState.vault, isWritable: true },\n { pubkey: mangoGroupState.signerKey, isWritable: true },\n { pubkey: PublicKey.default },\n ];\n const remainingAccounts = [];\n for (const account of accountData) {\n remainingAccounts.push({\n pubkey: account.pubkey,\n isWritable: !!account.isWritable,\n isSigner: false,\n });\n }\n const [collateralVault] = yield PublicKey.findProgramAddress([Buffer.from(SEEDS.COLLATERAL_VAULT_PREFIX), new PublicKey(strategy.pubkey).toBuffer()], program.programId);\n const txAccounts = {\n vault,\n strategy: strategy.pubkey,\n reserve: strategy.state.reserve,\n strategyProgram: MangoHandler.MangoProgramId,\n collateralVault,\n feeVault: vaultState.feeVault,\n tokenVault,\n userToken,\n userLp,\n tokenProgram: TOKEN_PROGRAM_ID,\n };\n if (opt === null || opt === void 0 ? void 0 : opt.affiliate) {\n const tx = yield opt.affiliate.affiliateProgram.methods\n .withdrawDirectlyFromStrategy(amount, new anchor.BN(0))\n .preInstructions(preInstructions)\n .postInstructions(postInstructions)\n .remainingAccounts(remainingAccounts)\n .accounts(Object.assign(Object.assign({}, txAccounts), { partner: opt.affiliate.partner, user: opt.affiliate.user, vaultProgram: program.programId, vaultLpMint: vaultState.lpMint, owner: walletPubKey }))\n .transaction();\n return tx;\n }\n const tx = yield program.methods\n .withdrawDirectlyFromStrategy(amount, new anchor.BN(0))\n .preInstructions(preInstructions)\n .postInstructions(postInstructions)\n .remainingAccounts(remainingAccounts)\n .accounts(Object.assign(Object.assign({}, txAccounts), { lpMint: vaultState.lpMint, user: walletPubKey }))\n .transaction();\n return tx;\n });\n }\n}\nMangoHandler.MangoProgramId = new PublicKey('mv3ekLzLbnVPNxjSKvqBpU3ZeZXPQdEC3bp5MDEBG68');\nMangoHandler.MangoGrouPK = new PublicKey('98pjRuQjK3qA6gXts96PqZT4Ze5QmnCmt3QYjhbUSPue');\n//# sourceMappingURL=mango.js.map","// src/constants/lending_info.json\nvar lending_info_default = {\n http_rpc_url: \"https://api.mainnet-beta.solana.com\",\n ws_rpc_url: \"ws://api.mainnet-beta.solana.com\",\n key_path: \"/tmp/id.json\",\n db_url: \"postgres://postgres:password123@postgres/liquidator\",\n log_file: \"liquidator.log\",\n analytics_api: \"http://192.168.254.6:6969\",\n programs: {\n pyth: {\n id: \"5JQ8Mhdp2wv3HWcfjq9Ts8kwzCAeBADFBDAgBznzRsE4\",\n idl_path: \"\"\n },\n farm: {\n id: \"Bt2WPMmbwHPk36i4CRucNDyLcmoGdC7xEdrVuxgJaNE6\",\n idl_path: \"\"\n },\n solfarm_v1: {\n id: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n idl_path: \"\"\n },\n solfarm_orca: {\n id: \"FoNqK2xudK7TfKjPFxpzAcTaU2Wwyt81znT4RjJBLFQp\",\n idl_path: \"\"\n },\n lending: {\n id: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n idl_path: \"\"\n },\n serum_dex: {\n id: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n idl_path: \"\"\n }\n },\n pyth: {\n initialized: true,\n global_account: \"7kk2e1cWNQFVchRtY9sQP4pGYd5VZdaxhVjCqLuJ3aKE\",\n price_feeds: [\n {\n name: \"ETH\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"DiMhTRseCyqwmfUb98iC4NbLd91FLBMsLkbxusETiPmR\",\n product_account: \"CVGXpd1t7WdbvdjGbqM5GJjttTaeDZYr8mStz1M8oVix\"\n },\n {\n name: \"RAY-ETH\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"4wSczHy1tDRLJa515w2Euq7braB3UnsqduA1hegwiy8s\",\n product_account: \"HzziBj5riBjVHUc7DJbT1X5xWz7vpCStCEbbrPuD8snX\"\n },\n {\n name: \"TULIP\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"5RHxy1NbUR15y34uktDbN1a2SWbhgHwkCZ75yK2RJ1FC\",\n product_account: \"D9rh3o8WBH5Wi3EaSSb5gM22DcJPQtj1PqJSgc6j6UJP\"\n },\n {\n name: \"TULIP-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"CaniiUKD52wmuqGhpobvsF4HkbScosw93ycioVZ8v3FT\",\n product_account: \"FeNm31FiXP4Z4gts17AqG1xGevqHrvUgpctXi9aWLN2B\"\n },\n {\n name: \"SLRS\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"EWaZxLPbCtdua9JLRp2o4qY7wr1A8fsJsJnbB9n5kb3u\",\n product_account: \"AiDAeL5W1BhrUhLnLZuDH9geavsAWqynqHzjc9XjdMRk\"\n },\n {\n name: \"SLRS-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"2rpnhvDfSQq2hsCsvUazEvcyaz2143SisvTR58Tt3Hms\",\n product_account: \"FmDLe9HBouQRuGyZaz8oR1QLyMuPiMLXCS923EEnPrQY\"\n },\n {\n name: \"ALEPH\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"ALZYjXU1TWXDVMv2UT5W1ZqBCcxbuxLk2BQDjpfsKFrq\",\n product_account: \"8FgZRcgFuGFJRLoRs7ehP5cfpq3WP5dMEk9Z6sD8g5D4\"\n },\n {\n name: \"ALEPH-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"CqFwumFTRVohSaMxz3NZw2q7gNmUu3pyu5rfHnJZ53kE\",\n product_account: \"5iLKRgv2wY7WybpiubrZHVA1YrTE7wJgLaMjrJHefJBJ\"\n },\n {\n name: \"STEP\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"4JCwkMDA3isKYV5togYtEVQZP5zugeTYExZiASjT4ri3\",\n product_account: \"DWGWfqyRLWxLzjWTFAXzFFWzQnBGPYkxKdoVq5vox8Td\"\n },\n {\n name: \"STEP-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"3ZHX6xoD32BQe7aqaijP4CvfPbJE9N95L7c8fkSZ2bUa\",\n product_account: \"bsRRTScziLBZAgYt38rHR3xY7veU1cXmNX2rRa6BRp5\"\n },\n {\n name: \"COPE\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"AxY4cbvquLMFJcTz5jPquLoJ7h7zuEd4jPc33MD9wRbc\",\n product_account: \"8B6ELHPaJGkfuGFQm1XQY7cQXHKQX8g19xySzrj6wkGB\"\n },\n {\n name: \"COPE-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"E3TcTmqnBE6SPjTbwcLijxCvAbQ4rxWrFTVCjWhpjymG\",\n product_account: \"FodBP5YkAsUKV8ZknBjizxnKXNm9hvFhoFpNeHxN8iLT\"\n },\n {\n name: \"ROPE\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"9yUhkiM52gjgwv7uXVKj4fg3hSErRFfd6i5a95MrQDBp\",\n product_account: \"Bpqb5ri1EmsSbU1JKZonaFxqZaYJAuJcrVG4K5hymSXo\"\n },\n {\n name: \"ROPE-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"CmX44rkAymWbqyaXgMVoq7tZSkvaxS49PHjLTachCCUC\",\n product_account: \"4TKQTeZynKeJoFi1TesjiCqJJHZKaGsThzoCM7avqdkN\"\n },\n {\n name: \"SNY\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"7LzDxV6YHvxt3BUXJzXWA8jgPtEU947ASdFRNXHyJQDs\",\n product_account: \"5Hc8GHSWue2CqdKduAMyPVgGLD7Vvqp2BiwbJGA7LUZo\"\n },\n {\n name: \"SNY-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"9QjjinWXkGqe9s8DTnqguJqBwomhxWEhuA2d1hdg4JHK\",\n product_account: \"6HC2HTGbHButs8RzQDUAnoBBDEb2oPftyXF45TeCejPs\"\n },\n {\n name: \"MER\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"5Y9mG4X9eCDdThhbbMtKedKp5BESXYthkhpSoEx7qnXD\",\n product_account: \"7UiYEzinezGUsfAaxiV8eVqdaTrf9ckmWyaDfNckVL4H\"\n },\n {\n name: \"MEDIA\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"9U5PzyBQNo9hgu8zRpmsBLZtmHKVWBJNgveqPc8WQFkd\",\n product_account: \"2FsDFxpj33XbVUKnXA5CeZoKr3LPt8583e67cxAShXHF\"\n },\n {\n name: \"SRM\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"9wrKnvGNaSB3ppbpEYcvWfvtTZq7AAW5J4HYfEEciUVT\",\n product_account: \"Erevngkh2feHgAtKDst9iasdASiiVd63sGGRDmgSfuNd\"\n },\n {\n name: \"USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"ExzpbWgczTgd8J58BrnESndmzBkRVfc6PhFjSGiQXgAB\",\n product_account: \"897c9JQNbYRR7RaDew7mqiZzFF3TXB67gSmk27XNn9vZ\"\n },\n {\n name: \"USDT\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"uo3MK2mD9KogjNLxTWVaB5XqA9Hg4mx4QuRm9SRtKdE\",\n product_account: \"FCY7DvwAJ3XMuMfCX9zwYUGNcAnbTtAW2PkxVkup3Bva\"\n },\n {\n name: \"RAY\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"83fYH17UZaTCpr6GNcPcS5pZkfxwR1CaEVhYKfkqE8YF\",\n product_account: \"D5XMqgzEv3bHTxuhmG4wjzfvVhEkbBSTxND4b6cAnexS\"\n },\n {\n name: \"SOL\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"DQAcms41gjYzidRooXRE9GQM1jAauPXDcEpMbVh4FEc7\",\n product_account: \"9GDrNBJE2hDbtrCJQJQ9WuspV3W7FZiAbbS3zDtEgd7q\"\n },\n {\n name: \"RAY-SOL\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"CVBKQwkTXZ7MAjv5iZQzdmQiJ8TBukRPsYPapKFeW5mu\",\n product_account: \"15N9LAgaJPfQa4wuTpiH8zQD8ZfYDNshX33ShnevWe5\"\n },\n {\n name: \"RAY-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"AV5GeH126btrRE9uq36tZWjdgCuLc1DdzKEatdjmoNex\",\n product_account: \"FFwunam3M376LdmjcXxx9dEjJPpJDtFEco9jvDLWyuRo\"\n },\n {\n name: \"RAY-USDT\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"8m4XxNbrpFLRahQrbkDcdudPQsmUk3rotgkY9yNR4uA6\",\n product_account: \"8sXHhyvKJ41MZgJWiQdyfFnPryJVCNDvXTAu6pSTMEjU\"\n },\n {\n name: \"RAY-SRM\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"EksgiG3ZB1JaCeWuYmAueZHLKnxaAfYgsJzJvUy8g3aM\",\n product_account: \"AoyAXq2fLVGrfNcU1Ecp2ddHtn2sUsMuEZqRMkLGuHoW\"\n },\n {\n name: \"MER-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"Bq6CpB9reokyJVU7aH4uMR6mCFKNSFuJDWsZaXwnVYGb\",\n product_account: \"CiqkVcAZa5qZAPMTt7b3VvFdHafskM7BzBZFUvYas6iZ\"\n },\n {\n name: \"MEDIA-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"47DiHkfcDG8ymhVQ6hJka4KoGzNJD71TwhE2b4yVNd52\",\n product_account: \"FDQdjPcs3fY3xmCniQqZv2s3DipaVRGQNCGGGJRGqNhM\"\n },\n {\n name: \"LIKE\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"FPTAtYnysQPmjsb9cg5cNC24xp7By5tSaHVdFcQwxLG9\",\n product_account: \"Dazda2XGTiXzYGk1MoEr92GYajfRPUq1R7uAp85UpJRm\"\n },\n {\n name: \"LIKE-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"HmkBS3kMyqxRkpbWeUHFMD3kv2CZ5ZaVkhFqCF4eCcxS\",\n product_account: \"5vLqF8KGCzmHqYG2vjsqTHivum652NUTEHkn4toJuTV6\"\n },\n {\n name: \"ATLAS\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"5nio88m9awxVwiCQ2JDMveN58VKzJVsqSACigUaC3udi\",\n product_account: \"Ff98ZNQMPwjXqVi85vXyXsyCPMvZu36nPF6mtpjK3J1Q\"\n },\n {\n name: \"POLIS\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"A3TJJS3L3saX7U19iAyBj5iPkXEZqNPXZgeXTX4shChn\",\n product_account: \"7uXQTjh7Y9mEsevCtFRSrfGi8zyfk1ozSAuWT3e8PU6S\"\n },\n {\n name: \"ATLAS-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"5hQ87hFUyXaXRk96NrcdAibCvqrUy3NbaeEhtiiSVcj4\",\n product_account: \"3TucykAHv3zmMjJcH7gAYATmqEpaRJ48hJN84Eb45y1C\"\n },\n {\n name: \"POLIS-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"9rsvokKBe32DfEVkVwVRZiQWAiPuanNd8tdBkGWUfpFH\",\n product_account: \"CFcD2MiFbwoSg5kQKFYFSXTtY53Lofd8mp8Nzzufyisq\"\n },\n {\n name: \"POLIS-RAY\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"4c4jtekbQe3hwgKEYSRng3Bidfn4VjX6CV2p63xecsd6\",\n product_account: \"3wbf2VyXofE6eVDwHSyXwaj3XP7JrwmZWg6ChpKW6QPX\"\n },\n {\n name: \"ATLAS-RAY\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"AxFxUd2RYTneb4hgD5d3eVQsc91h9ePuXMLgGpdneUAk\",\n product_account: \"3c4BMixHS5FUQNw5embq3R1wwPc8zdhviDjPPXPK217w\"\n },\n {\n name: \"ORCA\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"ELHiqZR2cYkN2MerbfMSWGy3nwdPuHYiXbiKsQG7Uy9p\",\n product_account: \"3EbvZohacPWPty6bh4ZQUnUuzuHhs8xRh6SAi72kNctk\"\n },\n {\n name: \"ORCA-SOL\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"HWPZBt7phA1D14q2ETjEnLfdHSocnXxS9E36WGGRXTTE\",\n product_account: \"Hpb25ZWyGAcikLJHmEZdpHi9CWjLFWC6LNN7iyZZuoLi\"\n },\n {\n name: \"ORCA-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"8VAsQbfX5jPGTPWqAdK6qm42erK299oe86jHM3dnDVtp\",\n product_account: \"HxR2mMe3EBgG5emsHt1Sfcww26pwZgEFAY3aP8ymjqxK\"\n },\n {\n name: \"SOL-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"65o7xgZAbsgFG5SNcBtiinVHkcVx2ZgFuxQH4bwr7oiH\",\n product_account: \"eoc6uQ6pMdSLzNHMDrQxxYVttDR8SC44snYcDZACRJg\"\n },\n {\n name: \"SOL-USDT\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"BAvZuNLwumMQuPbZAd5ekeDMoyocj1m3AYatwUwAfwgG\",\n product_account: \"4QSkN9Acxug583vGKzGvhrgHd9HMAbL1vkRYEftpDVeu\"\n },\n {\n name: \"ETH-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"GuL7zgUmPPvcn1f4feSivhcuE1Pe6PWc4EoNHbsXSJuq\",\n product_account: \"7vxzccpo4zgikstYr2VokKSxSb4LvZo8mmabNnr6jnu\"\n },\n {\n name: \"ETH-SOL\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"CyjS4BEvmAv7gquos2tRTDoJRUAv5Uqm3yBUXhroA2Mf\",\n product_account: \"HSgvmGJH1KgLjiu5nsiN9RjdtaRUeKDB3WUznovyz4LE\"\n },\n {\n name: \"WHETH-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"2CoFaT8uA8sDH8tB2oPumUFaxCf9cTb8DgyezDPXidYV\",\n product_account: \"8C9smgucZBM2C1d92Wdqz8vvEzde8bqwuiUfCGWdSLtG\"\n },\n {\n name: \"WHETH-SOL\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"TWikPe8wf3rcgArXcHfdQa9yAN7timeKobdsf8BFkpa\",\n product_account: \"5dAFTe22RhuQkBx86WrriMm4ADpcsucY4eJysJAkU2TJ\"\n },\n {\n name: \"whETH\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"5gmFU9vd4hgqYE6vja4T41gZmdUweZwxy3f6GeUQoqCA\",\n product_account: \"7WCdfko8icLcRqMRPCdqLpGMqxky8ZbMpeB7HPxPtzdR\"\n },\n {\n name: \"BTC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"5HtZVJNr4GnQuvcbjj6nVX4EQZod8ptazaKSfFvZgRzC\",\n product_account: \"7FvCyXPUUqg7HCR8L4R8odzeMHX3ahVCC77RWn97upeU\"\n },\n {\n name: \"mSOL\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"7FQME1uNK5VVV3f6p3BRPAgMTzaAy2zSMKAvmEyqjQjQ\",\n product_account: \"J2vWw7hKio4aSA1hPFepbfQ3xcrPmRhhhjfKoUJxcovC\"\n },\n {\n name: \"BTC-mSOL\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"7geJaT8oHqh3fFM9vMwUbwzuHLtmRqZTzW9QMbtMxtMf\",\n product_account: \"CAkgwqvyK6XW2APVGRa2x2LMCz5W89CsQ724ReidU18x\"\n },\n {\n name: \"ETH-mSOL\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"HcGehN9ptsLKb5XMy4n7nBgMGsxF7NuwTrsBxmGypji6\",\n product_account: \"4uPeLhdmDEi1JZsFd9F2hdfNzWdx3ys2STvk64DsFTPf\"\n },\n {\n name: \"mSOL-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"5z6jT6oxzYZQjVz3cg5tT9sreVuZrdRmGHYWorBQeqkE\",\n product_account: \"5fRwnW7cTASEwcyu5sNMcUDhamGCsBfYguhZ4rdTXQkA\"\n },\n {\n name: \"mSOL-USDT\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"5dNkoQ4DTWWZF82biff9Dk4q5zNopBFo9DryBJXma6Zm\",\n product_account: \"HJsA3VU7aQ38xKJLQgMtNTfypPVmU9rBiyAhcA46bFBP\"\n },\n {\n name: \"mSOL-RAY\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"EQ5fQ1xxL9vF9heXu4N8JHQMQHpUDJDkDwam6hgJpjHU\",\n product_account: \"44XLgGRFz6ogTPdMPjmKfA8mWyofwnBrdQcGMJwA6j1N\"\n },\n {\n name: \"ATLAS-USDC-ORCA\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"PVMV5RhEY2Kjy3tErDkXNutg4gsKQrLN6nzL5jZB3N4\",\n product_account: \"GUNkcpxrJJyG9sdJHF1GhVmrG8Zp3PD97a5eJLAkvg9\"\n },\n {\n name: \"POLIS-USDC-ORCA\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"2ubGw8eo7dvjLscxfAxtwURS9SYc7i2K4zzCbayhwYnC\",\n product_account: \"4um2h9k6fGfLHFwBNUFvMqFm3f6qYjM6Gajpngqbu2mb\"\n },\n {\n name: \"SAMO\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"GgiFHoSyQ66GLg2kPrkmYLkgXvNf6ECa2pKvaWAAH3RY\",\n product_account: \"25y1dH6RW64zJKnwTA3A7k24fmF7tyBQpd9NWg1vRx1W\"\n },\n {\n name: \"SAMO-RAY\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"HZ3esqqgys3TkLdYwGvtKWjsQvhHxRfNCLvNYePnB8m6\",\n product_account: \"ArMKkVaTWWm53JhgeR74iZBjfxAyrasAgMmVEuXy9Uf6\"\n },\n {\n name: \"SAMO-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"JBnheGUTMPSFu4BHJ22ECnKx4ARSN2UKkbMyafY2rbYS\",\n product_account: \"8yie5deaVk7HxYaVW4eL6DwqikZZ7o1NR2QwuMMuoNH7\"\n },\n {\n name: \"SRM-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"Acpxh7Wy23DoXNyGxYp5rAWSVTzY7yiKYGh7m1WxUd3s\",\n product_account: \"J7SfybxZm2YgW8a4pmDcQ3stoVWXjrFk2rdMSywXGsay\"\n },\n {\n name: \"whETH-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"CptknTHkDw8r48RD4a3CFUCcdft2yjxEToq9g3JdsHWS\",\n product_account: \"6FouWdD9BZNyZqAFvBE595E9uh9uUyz7xCj1DxS6Z2PG\"\n },\n {\n name: \"whETH-SOL\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"8TS6x4FVjPBq4ZsJJaJPdeHVXqQwigkoG9fbAq8iPjLU\",\n product_account: \"31isMEExVX2AQCRo3sodTJcFz98BCttspsURiEdQQfVr\"\n },\n {\n name: \"STARS\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"4e8wevJomuCB3rfFSNyiGpT1BchkXLkbHn8JSPjnFEcf\",\n product_account: \"58wfiaEur4aPDkePERK2FBy9dowmBxhgfky4aApPToM5\"\n },\n {\n name: \"weSUSHI\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"Bbw3hWUktf1LQbBkdrVQgZArSvyZmuXFwuv29qLQFcrm\",\n product_account: \"B52bxETJY4BAj15TFgyp56M6mNAH1LapyggncNwZgqkh\"\n },\n {\n name: \"weUNI\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"GUYA6y3ikf97w74bYjRdsarQXEp7S58Nwgq3Kp53jF2w\",\n product_account: \"H4dN7Wegvwo8AdLz8pdx6Yaj3Qssu8Gy8C4dHtGRkeuQ\"\n },\n {\n name: \"STARS-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"9q65KqfiFESFBxz4Q9TmptEYp1pFHGRtcg4oAoC3BRZW\",\n product_account: \"DDX6zkqJku6hJUbEk2ftYMAWFrNi8w36yWxFzKPiw27L\"\n },\n {\n name: \"weSUSHI-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"EfRxcyLy8QCYnqAX3gTEz57UEq5oX71XME5exKYvTunU\",\n product_account: \"5uxoKo3fD6EciWMoEykmseXyHZyWKBTNe9pn7SZcS1CA\"\n },\n {\n name: \"weUNI-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"6QdgQgA77c4UX8gkTMFnttuG1FRtzRJvopK4UGovSqfm\",\n product_account: \"5Q4w7dk6hSTtNriewD73w7XX5NLTeLrR4pB1QvkkyC47\"\n },\n {\n name: \"weDYDX\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"Bg8HNSjDwCPi7BSoboifA1h3sEsjnaqNoFdUwzCDwfrU\",\n product_account: \"AWCKmMNN8MNAb77PFtPA46gr51AAftbFULgDVAHStEc8\"\n },\n {\n name: \"weDYDX-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"H4gTQF56Ugy38W9tnxKwSpZa7PM5ykU27bb1UvfsZHmz\",\n product_account: \"29nnzui1yD1VDonRWvDQSQdZDJqSpF2vqNStd5HKvny4\"\n },\n {\n name: \"GENE\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"VVRfsnyaY35mDjtbgk3DPCMaWCrNf6hjQEzXU69cEzW\",\n product_account: \"CbkArftkShL7vBh4TMVU7aseHzre7ErB816cTcX3XDmi\"\n },\n {\n name: \"GENE-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"HL7EFyHoyK9sPma7J5qzCyiCkJcEACZdUgkvZ2RdSJDw\",\n product_account: \"GWFwRP1pAK3vVp6QxSBCQzUm5Yb2fp3j13AqqEvCvoHj\"\n },\n {\n name: \"GENE-RAY\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"5fNkcQdjiT7kse4LehVKQTGXb4hRhMG8uhh5UWdYzahx\",\n product_account: \"3Fzm3J7NP31EfCuS3rv6wj9eB33CXMgQBC2HxYcSNs2X\"\n },\n {\n name: \"DFL\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"7xHk2cgACwAUeTdwqpCp2hT1svQu137GsWQZCTueSv4B\",\n product_account: \"7jLXrfK2tsWVwE48J3jchYxrGntqzxBTAb5bwfWxTPzs\"\n },\n {\n name: \"DFL-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"CHo8sNjUj2b2Ly8uzWhaTXknkXHyqU8FXcwavAPANBrr\",\n product_account: \"F5EGbuWKJ7UKafVxDbH6dkQA41nxdhkj32WoVBmaHLio\"\n },\n {\n name: \"CAVE\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"BV1wT5q5rH4yYprUBnWpLdBKVpUVKfBB1xdCFqxwGXbF\",\n product_account: \"8XG8ahPS6KLcSrqNAsXUjYG1njyT1u12Mse8eYrM7AB\"\n },\n {\n name: \"wbWBNB\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"Dqbw77hVv3qb5AYR9PgGpNTYEyJE7oypKbpD24J3Zhfv\",\n product_account: \"8fZHyP74qE71J3763m8nQcjv22LU9dvh4Awq57gwgD6G\"\n },\n {\n name: \"CAVE-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"6VwXeEZfQPBMLQU5t83hy4k7xNjugwhXwDogkASY7Hb1\",\n product_account: \"CK2YTbNtnsY6bZsu4H88YTcGsefQvvSifhx7MyLXe8Zb\"\n },\n {\n name: \"wbWBNB-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"EFFLewQF76JdvBt8tD87g7EFo5yGmKKLEMBNyBoj2rXo\",\n product_account: \"HGtomV6GHcxEMLWTnZ4ZTzHzneZvCmmeJAT83VzTHD6R\"\n },\n {\n name: \"SOL-USDC-RAY\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"jnNMpLbMMLDCYJmxJa2RuArEsLrtLKN1c1yjMuvjFsE\",\n product_account: \"7mNWSrNhRQWSBxuhhayc5W8oR65kL6CNcgfxiwPJ9QLa\"\n },\n {\n name: \"SOL-USDT-RAY\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"27MpsdkcBp99qdZxp3SXySpTVgSM33EtDiyTAEFQx4pm\",\n product_account: \"4rhvCXntD9y24VUKYN4hSCXgJhhDoRGTBWyhstZkttRC\"\n },\n {\n name: \"REAL\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"B6HuBKXZpb7k8XGsgJaAntHUZNsovtdAC82Tx1cpz6zy\",\n product_account: \"82K9B6ZhVYhS6eJ6EJzc9msM44Cjhr8Qx2412zSetxzb\"\n },\n {\n name: \"REAL-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"qQiZe51s5bSHnMhQN7TMbs6isVBVA3kKdmeb6rMuVWd\",\n product_account: \"DUMoPG3tvfyqAb37yd9nGrqpnaQNE9ifhSfvtu63BEs7\"\n },\n {\n name: \"MBS\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"GArMkJcLeGkaAMMAF9ZgRC7zLfB7SR5nRpFqRZ98LXC2\",\n product_account: \"GhTVjhQrrwpyqqkWC3Xrd2rpdfXEPkLWtbscosZmQeAu\"\n },\n {\n name: \"MBS-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"AEnteuBpraU4QRTeSHrua34Rau93nvXQiVDwk3Edonxw\",\n product_account: \"4rDsy2F8dATwdm5cUPvTVzJYXEdQnRXXGGxgUL9T8Drx\"\n },\n {\n name: \"SHDW\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"Gek9Nk7F1SLZXDQXJ36BRM9QCwkuRG4PA2fSbQnZLsZ4\",\n product_account: \"4N52mGUdqPYqhcJgiQuc4a6nNRsv9Tfnf6k6RaGq8W9G\"\n },\n {\n name: \"SHDW-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"7FdrEEVrc4ub9Pfwqza3tyfKd3W8gBPuvfNPW9KanVkX\",\n product_account: \"Cq1L8tSUxJct5rqgYYXsiz9oDvwKi2n9MG2oLWJ8sqvT\"\n },\n {\n name: \"SHDW-SOL\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"8oqVi2oxj3fDhiYNaYJKX2e6b7bCgJdAWSiFMgNrDR4d\",\n product_account: \"p5a78X4pihJst9U4BmyErgN1ixcVo6h7ridp9ypzN5V\"\n },\n {\n name: \"BASIS\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"DGVp9vPzKgBxVbUg1kmUZwRKUYsAGpt8mKRAWwM1p9Hc\",\n product_account: \"6j2ZcTgxoUbjRaaJEnEqiJBYR6BBpWGXhXiPLQ35FFHq\"\n },\n {\n name: \"BASIS-USDC\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n exponent: -6,\n init_price: 1,\n price_account: \"HkW4JvfJjkPiARFHeKoE3KA5e7hvwSVns4CwDgyeb4jd\",\n product_account: \"HdNGoi6giAxUyvWqhZr5rFqe4zUcKZJ9z4Hk5YSyPWZw\"\n }\n ]\n },\n farm: {\n initialized: true,\n global_account: \"HLuVf6p3SqgEKy8poYA6g26CDGuQddcbETmf8VdJKqjF\",\n farms: [\n {\n name: \"RAY-SRM\",\n account: \"5NvAB6MzoVBPVC2BgzL7ZkyRZjvZjpy5kYax1pGtrfdi\",\n account_nonce: 255,\n serum_market: \"Cm4MmknScg7qbKqytb1mM92xgDxv3TNXos4tKbBqTDy7\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"8nd4pSGRFepzj4KRCVpwxdMGNUJVUoa8NcHYEnt99NEn\",\n serum_event_queue: \"4afBYfMNsNpLQxFFt72atZsSF4erfU28XvugpX6ugvr1\",\n serum_market_bids: \"G65a5G6xHpc9zV8tGhVSKJtz7AcAJ8Q3hbMqnDJQgMkz\",\n serum_market_asks: \"7bKEjcZEqVAWsiRGDnxXvTnNwhZLt2SH6cHi5hpcg5de\",\n serum_coin_vault_account: \"5QDTh4Bpz4wruWMfayMSjUxRgDvMzvS2ifkarhYtjS1B\",\n serum_pc_vault_account: \"76CofnHCvo5wEKtxNWfLa2jLDz4quwwSHFMne6BWWqx\",\n serum_fee_recipient: \"F5u9eKddWdRyRbK9fDKB1AMCQJKsx8GGAoXSL6LEvA6n\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"7P5Thr9Egi2rvMmEuQkLn8x8e8Qro7u2U7yLD2tU2Hbe\",\n raydium_amm_id: \"GaqgfieVmnmY4ZsZHHA6L5RSVzCGL3sKx4UgHBaYNy8m\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"7XWbMpdyGM5Aesaedh6V653wPYpEswA864sBvodGgWDp\",\n raydium_amm_quantities_or_target_orders: \"9u8bbHv7DnEbVRXmptz3LxrJsryY1xHqGvXLpgm9s5Ng\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"3FqQ8p72N85USJStyttaohu1EBsTsEZQ9tVqwcPWcuSz\",\n raydium_pc_token_account: \"384kWWf2Km56EReGvmtCKVo1BBmmt2SwiEizjhwpCmrN\",\n raydium_pool_temp_token_account: \"8jqpuijsM2ne5dkwLyjQxa9oCbYEjM6bE1uBaFXmC3TE\",\n raydium_pool_withdraw_queue: \"58z15NsT3JJyfywFbdYzn2GVeDDC444WHyUrssZ5tCm7\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\",\n quote_token_mint: \"SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt\",\n farm_key: 3,\n vault_account: \"EkePqacuxaubJJxCYW9RxqyXc1r4LzLJTRfF4bW64UQv\",\n vault_info_account: \"8RGsvBeGytCzpf8jfFSbLygvSSLsb4tPgqqQqvyrXfKx\",\n old_vault_info_account: \"36ckujxHmZLyqvzfT5wE94tHEgYfMkChPKAhkGUyGkYW\",\n coin_reserve_liquidity_fee_receiver: \"4bRQL2hLqfinNJTsiQW6odhYtYjKXH7zsPc2tafadgoj\",\n pc_reserve_liquidity_fee_receiver: \"EMwowECdn8hdGf89RuyGL8cbygwa14BN9tLbYDXgMckr\",\n farm_open_orders: \"J1HDghAEkThP8Xn9KhkRPCABHCdPPJT9YF4hpHm8skYX\",\n farm_base_token_account: \"kVLZnvKQS7951uDqoDn6eSsJ8aj4WTFB2hP3dq4GTqm\",\n farm_quote_token_account: \"CCE919uwcutmQZBxEzYRfTKYwmufaYWhzXeawEZyjPPD\",\n only_pc_borrow: false\n },\n {\n name: \"RAY-USDT\",\n account: \"7cWB89JJst8covE6KgXWqWwzUM61NzKDr2arsAPXT654\",\n account_nonce: 254,\n serum_market: \"teE55QrL4a4QSfydR9dnHF97jgCfptpuigbb53Lo95g\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"8RrrYN9WtASWGv9KfC5maF6AKxT6GSCikZ8SkSaimGZa\",\n serum_event_queue: \"58KcficuUqPDcMittSddhT8LzsPJoH46YP4uURoMo5EB\",\n serum_market_bids: \"AvKStCiY8LTp3oDFrMkiHHxxhxk4sQUWnGVcetm4kRpy\",\n serum_market_asks: \"Hj9kckvMX96mQokfMBzNCYEYMLEBYKQ9WwSc1GxasW11\",\n serum_coin_vault_account: \"2kVNVEgHicvfwiyhT2T51YiQGMPFWLMSp8qXc1hHzkpU\",\n serum_pc_vault_account: \"5AXZV7XfR7Ctr6yjQ9m9dbgycKeUXWnWqHwBTZT6mqC7\",\n serum_fee_recipient: \"F2szJdBzeiYNb45Ysd8ufsjdh8csEbXv1HaTrG4Tyv2R\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"C3sT1R3nsw4AVdepvLTLKr5Gvszr7jufyBWUCvy4TUvT\",\n raydium_amm_id: \"DVa7Qmb5ct9RCpaU7UTpSaf3GVMYz17vNVU67XpdCRut\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"7UF3m8hDGZ6bNnHzaT2YHrhp7A7n9qFfBj6QEpHPv5S8\",\n raydium_amm_quantities_or_target_orders: \"3K2uLkKwVVPvZuMhcQAPLF8hw95somMeNwJS7vgWYrsJ\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"3wqhzSB9avepM9xMteiZnbJw75zmTBDVmPFLTQAGcSMN\",\n raydium_pc_token_account: \"5GtSbKJEPaoumrDzNj4kGkgZtfDyUceKaHrPziazALC1\",\n raydium_pool_temp_token_account: \"FBzqDD1cBgkZ1h6tiZNFpkh4sZyg6AG8K5P9DSuJoS5F\",\n raydium_pool_withdraw_queue: \"8VuvrSWfQP8vdbuMAP9AkfgLxU9hbRR6BmTJ8Gfas9aK\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\",\n quote_token_mint: \"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\",\n farm_key: 2,\n vault_account: \"1ZpdBUTiDLTUe3izSdYfRXSf93fpJPmoKtA5bFjGesS\",\n vault_info_account: \"Bo8xiDzWWJgGgjG1YMriLT6hNkQX7NzeeemjkmXiwJmp\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"4bRQL2hLqfinNJTsiQW6odhYtYjKXH7zsPc2tafadgoj\",\n pc_reserve_liquidity_fee_receiver: \"3VQV6yjMUXaTcR6KCvZSAgEKkvZUVEQnNdyEREPbjj31\",\n farm_open_orders: \"DhCYkD7AhiH6zUmmFc4PVXTw6eKxh2bbTWs1t7BgAA2P\",\n farm_base_token_account: \"2BADq6FU8HpaLp3deEsrP4ErnUjiCyMpfszccNQUjT1v\",\n farm_quote_token_account: \"9JDCPWh1YrUKXJonTgdpagB9CHfs3kHdvec5nAKP2vU6\",\n only_pc_borrow: false\n },\n {\n name: \"RAY-USDC\",\n account: \"84ayseJgpJavzfeESgRdyfMoDo2bs4J2YUBjMT4iTs66\",\n account_nonce: 255,\n serum_market: \"2xiv8A5xrJ7RnGdxXB42uFEkYHJjszEhaJyKKt4WaLep\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"39mE6bYktM1XAKKmB6WN971X3Sa1yGkHxtCTWMkVrwN2\",\n serum_event_queue: \"H9dZt8kvz1Fe5FyRisb77KcYTaN8LEbuVAfJSnAaEABz\",\n serum_market_bids: \"Hf84mYadE1VqSvVWAvCWc9wqLXak4RwXiPb4A91EAUn5\",\n serum_market_asks: \"DC1HsWWRCXVg3wk2NndS5LTbce3axwUwUZH1RgnV4oDN\",\n serum_coin_vault_account: \"GGcdamvNDYFhAXr93DWyJ8QmwawUHLCyRqWL3KngtLRa\",\n serum_pc_vault_account: \"22jHt5WmosAykp3LPGSAKgY45p7VGh4DFWSwp21SWBVe\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"FbC6K13MzHvN42bXrtGaWsvZY9fxrackRSZcBGfjPc7m\",\n raydium_amm_id: \"6UmmUiYoBjSrhakAobJw8BvkmJtDVxaeBtbt7rxWo1mg\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"J8u8nTHYtvudyqwLrXZboziN95LpaHFHpd97Jm5vtbkW\",\n raydium_amm_quantities_or_target_orders: \"3cji8XW5uhtsA757vELVFAeJpskyHwbnTSceMFY5GjVT\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"FdmKUE4UMiJYFK5ogCngHzShuVKrFXBamPWcewDr31th\",\n raydium_pc_token_account: \"Eqrhxd7bDUCH3MepKmdVkgwazXRzY6iHhEoBpY7yAohk\",\n raydium_pool_temp_token_account: \"D1V5GMf3N26owUFcbz2qR5N4G81qPKQvS2Vc4SM73XGB\",\n raydium_pool_withdraw_queue: \"ERiPLHrxvjsoMuaWDWSTLdCMzRkQSo8SkLBLYEmSokyr\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 0,\n vault_account: \"HvNpbHuQUqGG748ZzgzcH5216wdQdTc283CEyFMc3RdG\",\n vault_info_account: \"Gf38RxSF3FguiBVYfsB8AmpPyNkGCrNDE7LNvr6U8n7C\",\n old_vault_info_account: \"8vnMSWpzW2RVdAeMaqXKGbQ3r11ijf6vrCm28Ks1bXRA\",\n coin_reserve_liquidity_fee_receiver: \"4bRQL2hLqfinNJTsiQW6odhYtYjKXH7zsPc2tafadgoj\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"CAjCs8wTVXg28ViAxsECxAa7WiwZU53rnWLiNikBeXG3\",\n farm_base_token_account: \"9k3gGV5WCWug8BNCemv3McAC12p8Tqhxb6GN5hBkmfDE\",\n farm_quote_token_account: \"2nHaWRW4PkutKbpDGvVwJ2JkcW1dKA6gMgLv4rPAmqLk\",\n only_pc_borrow: false\n },\n {\n name: \"RAY-ETH\",\n account: \"B418X2E2SvGZd2PnFf6Wx8RkjFC1qkYnSyGkezNCnHbK\",\n account_nonce: 253,\n serum_market: \"6jx6aoNFbmorwyncVP5V5ESKfuFc9oUYebob1iF6tgN4\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"HWmTmimJc1rRzAD88Aw8e8LM75LsxyWYpA9u9c9TXjp\",\n serum_event_queue: \"EgcugBBSwM2FxqLQx5S6zAiU9x9qRS8qMVRMDFFU4Zty\",\n serum_market_bids: \"Hdvh4ZGL9MkiQApNqfZtdmd4jM6Sz8e9akCUuxxkYhb8\",\n serum_market_asks: \"7vWmTv9Mh8XbAxcduEqed2dLtro4N7hFroqch6mMxYKM\",\n serum_coin_vault_account: \"EVVtYo4AeCbmn2dYS1UnhtfjpzCXCcN26G1HmuHwMo7w\",\n serum_pc_vault_account: \"6ZT6KwvjLnJLpFdVfiRD9ifVUo4gv4MUie7VvPTuk69v\",\n serum_fee_recipient: \"DWn4EbAUh43vpQeJjKyBQBG15WMyNuQ27s7fbcHTNzsp\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"mjQH33MqZv5aKAbKHi8dG3g3qXeRQqq1GFcXceZkNSr\",\n raydium_amm_id: \"8iQFhWyceGREsWnLM8NkG9GC8DvZunGZyMzuyUScgkMK\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"7iztHknuo7FAXVrrpAjsHBEEjRTaNH4b3hecVApQnSwN\",\n raydium_amm_quantities_or_target_orders: \"JChSqhn6yyEWqD95t8UR5DaZZtEZ1RGGjdwgMc8S6UUt\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"G3Szi8fUqxfZjZoNx17kQbxeMTyXt2ieRvju4f3eJt9j\",\n raydium_pc_token_account: \"7MgaPPNa7ySdu5XV7ik29Xoav4qcDk4wznXZ2Muq9MnT\",\n raydium_pool_temp_token_account: \"3CDnyBsNnexdvfvo6ASde5Q4e72jzMQFHRRkSQr49vEG\",\n raydium_pool_withdraw_queue: \"C9aijsE3tLbVyYaXXHi45qneDL5jfyN8befuJh8zzpou\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\",\n quote_token_mint: \"2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk\",\n farm_key: 7,\n vault_account: \"9LgYiX3nio9NhNTyxysr9Y4auApnmK3tw5XodTnM7ur4\",\n vault_info_account: \"CU34bCFZzb1nUENrJwKN7xVLMuQmK8wRMfhHCCWmZnvo\",\n old_vault_info_account: \"7D1uQL18Uy9KRb6dkEmVXYPtLJJPSxxrLgVDXQ9X6aff\",\n coin_reserve_liquidity_fee_receiver: \"4bRQL2hLqfinNJTsiQW6odhYtYjKXH7zsPc2tafadgoj\",\n pc_reserve_liquidity_fee_receiver: \"4oVF2swaCseP9HxsmUrzxbEzxgHPYpyRMwGM8VUfaBiC\",\n farm_open_orders: \"HT1yL3mNEjW2pJ3rK1KuDE5Pw5oReLG9TbHgssqEXqa1\",\n farm_base_token_account: \"5asrvkZr8s85DQscPkxKZBrAffVxbo9N6QHFttft2SbK\",\n farm_quote_token_account: \"8ntUNMnVw7p1XZAhDsohPE89ECGx9TQ3EAK6yR4DA1dv\",\n only_pc_borrow: false\n },\n {\n name: \"RAY-SOL\",\n account: \"4QXfE7TDgJA3Hzs5uawcBgqYH6N8yesLiFKjQbGvQo8j\",\n account_nonce: 255,\n serum_market: \"C6tp2RVZnxBPFbnAsfTjis8BN9tycESAT4SgDQgbbrsA\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"5RvwcchZSYCYTUxA8kgbAWwZ9RsFGzVRELyHEQK9YwYz\",\n serum_event_queue: \"4HGvdannxvmAhszVVig9auH6HsqVH17qoavDiNcnm9nj\",\n serum_market_bids: \"C1nEbACFaHMUiKAUsXVYPWZsuxunJeBkqXHPFr8QgSj9\",\n serum_market_asks: \"4DNBdnTw6wmrK4NmdSTTxs1kEz47yjqLGuoqsMeHvkMF\",\n serum_coin_vault_account: \"6U6U59zmFWrPSzm9sLX7kVkaK78Kz7XJYkrhP1DjF3uF\",\n serum_pc_vault_account: \"4YEx21yeUAZxUL9Fs7YU9Gm3u45GWoPFs8vcJiHga2eQ\",\n serum_fee_recipient: \"CzDdbXDWQnv9KbgWVm1Viq45ELveqn97UjHKHkWuW43x\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"89ZKE4aoyfLBe2RuV6jM3JGNhaV18Nxh8eNtjRcndBip\",\n raydium_amm_id: \"AVs9TA4nWDzfPJE9gGVNJMVhcQy3V9PGazuz33BfG2RA\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"6Su6Ea97dBxecd5W92KcVvv6SzCurE2BXGgFe9LNGMpE\",\n raydium_amm_quantities_or_target_orders: \"5hATcCfvhVwAjNExvrg8rRkXmYyksHhVajWLa46iRsmE\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"Em6rHi68trYgBFyJ5261A2nhwuQWfLcirgzZZYoRcrkX\",\n raydium_pc_token_account: \"3mEFzHsJyu2Cpjrz6zPmTzP7uoLFj9SbbecGVzzkL1mJ\",\n raydium_pool_temp_token_account: \"87CCkBfthmyqwPuCDwFmyqKWJfjYqPFhm5btkNyoALYZ\",\n raydium_pool_withdraw_queue: \"FSHqX232PHE4ev9Dpdzrg9h2Tn1byChnX4tuoPUyjjdV\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\",\n quote_token_mint: \"So11111111111111111111111111111111111111112\",\n farm_key: 1,\n vault_account: \"HbLCyHdEK2btVvYny87as5xx9ap7RdMdXAMujSE5Ukw1\",\n vault_info_account: \"4YgYjNXjdTG16v39AYippLxF3jv7ERUZZNLuqWtYqWh2\",\n old_vault_info_account: \"Hdp4Dk9xXDV5ezofS61Y8Q8iQ6EXU9TMwVSWm5Gk8eYu\",\n coin_reserve_liquidity_fee_receiver: \"4bRQL2hLqfinNJTsiQW6odhYtYjKXH7zsPc2tafadgoj\",\n pc_reserve_liquidity_fee_receiver: \"E4LvDoyg4VUwv9osrrejvSHUspTqkbK9RobLf5XWc2ho\",\n farm_open_orders: \"J3Yf9qEyhv828AoAtUnt6Cvi9o9N8mbZ4gGUPYKfGzPx\",\n farm_base_token_account: \"2YbFMQgXaXdNBCttzdHQJoULxjqgwf1xUdcNrzN7xgHS\",\n farm_quote_token_account: \"DJLjZ2noeUm1dnyfFDDqxQFvohN2vvjzQyXwxDCrL7yd\",\n only_pc_borrow: false\n },\n {\n name: \"TULIP-USDC\",\n account: \"6JUBhQxMcXcSPGHvXZSBfY6v8bNnFJevpd38zqHazJTu\",\n account_nonce: 251,\n serum_market: \"8GufnKq7YnXKhnB3WNhgy5PzU9uvHbaaRrZWQK6ixPxW\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"DAntkL9MxXEKad58DMmDsjwPgztFmkgPeucuNCCjUBb1\",\n serum_event_queue: \"ExbLY71YpFaAGKuHjJKXSsWLA8hf1hGLoUYHNtzvbpGJ\",\n serum_market_bids: \"69W6zLetZ7FgXPXgHRp4i4wNd422tXeZzDuBzdkjgoBW\",\n serum_market_asks: \"42RcphsKYsVWDhaqJRETmx74RHXtHJDjZLFeeDrEL2F9\",\n serum_coin_vault_account: \"6qH3FNTSGKw34SEEj7GXbQ6kMQXHwuyGsAAeV5hLPhJc\",\n serum_pc_vault_account: \"6AdJbeH76BBSJ34DeQ6LLdauF6W8fZRrMKEfLt3YcMcT\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"2doeZGLJyACtaG9DCUyqMLtswesfje1hjNA11hMdj6YU\",\n raydium_amm_id: \"96hPvuJ3SRT82m7BAc7G1AUVPVcoj8DABAa5gT7wjgzX\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"6GtSWZfdUFtT47RPk2oSxoB6RbNkp9aM6yP77jB4XmZB\",\n raydium_amm_quantities_or_target_orders: \"9mB928abAihkhqM6AKLMW4cZkHBXFn2TmcxEKhTqs6Yr\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"s9Xp7GV1jGvixdSfY6wPgivsTd3c4TzjW1eJGyojwV4\",\n raydium_pc_token_account: \"wcyW58QFNfppgm4Wi7cKhSftdVNfpLdn67YvvCNMWrt\",\n raydium_pool_temp_token_account: \"71oLQgsHknJVHGJDCaBVUnb6udGepK7kwkHXGy47u2i4\",\n raydium_pool_withdraw_queue: \"59NA3khShyZk4dhDjFN564nScNdEi3UR4wrCnLN6rRgX\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"TuLipcqtGVXP9XR62wM8WWCm6a9vhLs7T1uoWBk6FDs\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 11,\n vault_account: \"BX7otwshaKGXm3BKzyvy3dPz9wmqAK4Jn3t4kGBJEfKy\",\n vault_info_account: \"9A2hWEUYb2bihcjioGxJohjy7ZFEBDcUbxkhKb8WzuNd\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"HyPhJfWDoXbsu6AaNmJzc7hwnMG59XcnQPXU1dDE1mJg\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"D3Cpz1pRo4eC4g7WLf3E7KMJ5UmYwKksGDhTyenX5khh\",\n farm_base_token_account: \"Ji4oCPDrJ5pm3qRBYnNiivL61W2YpTjtUXWds4gtxD4\",\n farm_quote_token_account: \"9kEtjGs4uBPMyXki7JNienwhFLRnWPt8ZZVuXXEukfbG\",\n only_pc_borrow: false\n },\n {\n name: \"LIKE-USDC\",\n account: \"DkqAkajoGzMzfBhtTE79FVPynVe1F6m4hokCN3duQTC9\",\n account_nonce: 254,\n serum_market: \"3WptgZZu34aiDrLMUiPntTYZGNZ72yT1yxHYxSdbTArX\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"D1KVQjXuv6p6MjLBGhLMPyL1sUYpMT9cYuGcRjbKEMox\",\n serum_event_queue: \"CUMDMV9KtE22RUZECUNHxiq7FmUiRusyKa1rHUJfRptq\",\n serum_market_bids: \"GzHpnQSfS7KdqLKgiEEP7pkYnwEBz9zaE7De2CjmCrNV\",\n serum_market_asks: \"FpEBAT9qP1so4ASUTiEWxyXH2SJvgoBYUiZ1AbPimcS7\",\n serum_coin_vault_account: \"Dd9F1fugQj2xtduyNvFS5TtxP9vKnuxVMcrPsHFnLyqp\",\n serum_pc_vault_account: \"BnXXu8kLUXrwg3MpcVRVPLZw9bpX2mLd95qtCMnSUtu7\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"cjZmbt8sJgaoyWYUttomAu5LJYU44ZrcKTbzTSEPDVw\",\n raydium_amm_id: \"GmaDNMWsTYWjaXVBjJTHNmCWAKU6cn5hhtWWYEZt4odo\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"Crn5beRFeyj4Xw13E2wdJ9YkkLLEZzKYmtTV4LFDx3MN\",\n raydium_amm_quantities_or_target_orders: \"7XjS6MrvBRi9JeFWBMAYPaKhKgR3b7xnVdYDBkFb4CXR\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"8LoHX6f6bMdQVs4mThoH2KwX2dQDSkqVFADi4ZjDQv9T\",\n raydium_pc_token_account: \"2Fwm8M8vuPXEXxvKz98VdawDxsK9W8uRuJyJhvtRdhid\",\n raydium_pool_temp_token_account: \"FVHsnC1nhwMcrAzFwcK4dgUtDdYFM1VrTJ8Rp8Mb1LkY\",\n raydium_pool_withdraw_queue: \"CW9zJ2JbBekkdd5SdvPapPcbziR8d1UHBzW7nNn1W3ga\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"3bRTivrVsitbmCTGtqwp7hxXPsybkjn4XLNtPsHqa3zR\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 16,\n vault_account: \"C3grzmHJTK5spXnuYYZvpQzz2pC9ZAWBj7nciy3aegWW\",\n vault_info_account: \"48mvZpVhJwpHLePFB2Aa2CMqBYgzwUAmB59hCSUDVfev\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"GYUAka5Ps7b1yTLBdU7Ct91662Q8sacm4GpWCjfYoRaD\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"FF39WiDXQ5AtRiKP7EinVxtPMLknxnCsSzsjLq8YS8ZW\",\n farm_base_token_account: \"8Rju5qUiCmKBfGr2i2TugDtwMBSfnuRfBdKrAvtQm9gW\",\n farm_quote_token_account: \"7cUPrND4ByxroRUKLp8Wtfij9ADxvaphFfUgaoq2jMKa\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"SLRS-USDC\",\n account: \"FUa4dMEyK5kNhPc4c4bLpCMowLZZY8sgxBo3847VNc69\",\n account_nonce: 254,\n serum_market: \"2Gx3UfV831BAh8uQv1FKSPKS9yajfeeD8GJ4ZNb2o2YP\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"6benY1UYT8tF5u7v1d9HV4pZKHn6YbkPMN2qbXQLAVK\",\n serum_event_queue: \"66Go3JcjNJaDHHvJyaFaV8rh8GAciLzvM8WzN7fRE3HM\",\n serum_market_bids: \"6kMW5vafM4mWZJdBNpH4EsVjFSuSTUokx5meYoVY8GTw\",\n serum_market_asks: \"D5asu2BVatxtgGFugwmNubdknAsLSJDZcqRHvkaS8UBd\",\n serum_coin_vault_account: \"6B527pfkvbvbLRDgjASLGygdaQ1fFLwmmqyFCgTacsKH\",\n serum_pc_vault_account: \"Bsa11vdveUhSouxAXSYCE4yXToUP58N9EEeM1P8qbtp3\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"2Xxbm1hdv5wPeen5ponDSMT3VqhGMTQ7mH9stNXm9shU\",\n raydium_amm_id: \"7XXKU8oGDbeGrkPyK5yHKzdsrMJtB7J2TMugjbrXEhB5\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"3wNRVMaot3R2piZkzmKsAqewcZ5ABktqrJZrc4Vz3uWs\",\n raydium_amm_quantities_or_target_orders: \"BwSmQF7nxRqzzVdfaynxM98dNbXFi94cemDDtxMfV3SB\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"6vjnbp6vhw4RxNqN3e2tfE3VnkbCx8RCLt8RBmHZvuoC\",\n raydium_pc_token_account: \"2anKifuiizorX69zWQddupMqawGfk3TMPGZs4t7ZZk43\",\n raydium_pool_temp_token_account: \"9oiniKrJ7r1cHw97gv4XPxTFS9i61vSa7PkpRcm8qGeK\",\n raydium_pool_withdraw_queue: \"Fh5WTfP9jCbkLPzsspCs4WCSPGqE5GYE8v7kqFXijMSA\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"SLRSSpSLUTP7okbCUBYStWCo1vUgyt775faPqz8HUMr\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 14,\n vault_account: \"26Tp4c1V1pAJzYyTDoZhSHwDSQ8gcZvuaVeztMFUSJgp\",\n vault_info_account: \"CKDyjAKvTSXYymdHJR8m9oTFLxbxnfojoYhB6Zu3JxJ2\",\n old_vault_info_account: \"CKDyjAKvTSXYymdHJR8m9oTFLxbxnfojoYhB6Zu3JxJ2\",\n coin_reserve_liquidity_fee_receiver: \"CTnTSgQqYbu8vMoKuoCjzu6SCyERNKx9pHqj7icqvTDq\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"G8zNqfrEXhWKzMhyU1wsj7TWWCGuLUUQBSV3Kk7P4P9k\",\n farm_base_token_account: \"9swSrXPVh9dxxgfzfuyYqpYk2F4XFZrg1fjxm5GjCPmn\",\n farm_quote_token_account: \"DXkPK1wTAi5ReduGQQfRtRvSY1yrQpG5Kk3V7SkFGuJ4\",\n only_pc_borrow: false\n },\n {\n name: \"COPE-USDC\",\n account: \"7PuKsARcmY3KhfCu2XTJgoQDREYBf9XhBZ88HSBvRALV\",\n account_nonce: 250,\n serum_market: \"6fc7v3PmjZG9Lk2XTot6BywGyYLkBQuzuFKd4FpCsPxk\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"DsCFDtzHPFCwqUfe3aarTTYyQCF4iJHyfXQUgo4a2DfU\",\n serum_event_queue: \"2dQ1Spgc7rGSuE1t3Fb9RL7zvGc7F7pH9XwJ46u3QiJr\",\n serum_market_bids: \"FLjCjU5wLUsqF6FeYJaH5JtTTFSTZzTCingxN1uyr9zn\",\n serum_market_asks: \"7TcstD7AdWqjuFoRVK24zFv66v1qyMYDNDT1V5RNWKRz\",\n serum_coin_vault_account: \"2ShBow4Bof4dkLjx8VTRjLXXvUydiBNF7bHzDaxPjpKq\",\n serum_pc_vault_account: \"EFdqJhawpCReiK2DcrbbUUWWc6cd8mqgZm5MSbQ3TR33\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"Cz1kUvHw98imKkrqqu95GQB9h1frY8RikxPojMwWKGXf\",\n raydium_amm_id: \"DiWxV1SPXPNJRCt5Ao1mJRAxjw97hJVyj8qGzZwFbAFb\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"jg8ayFZLH2cEUJULUirWy7wNggN1eyRnTMt6EjbJUun\",\n raydium_amm_quantities_or_target_orders: \"8pE4fzFzRT6aje7B3hYHXrZakeEqNF2kFmJtxkrxUK9b\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"FhjBg8vpVgsiW9oCUxujqoWWSPSRvnWNXucEF1G1F39Z\",\n raydium_pc_token_account: \"Dv95skm7AUr33x1p2Bu5EgvE3usB1TxgZoxjBe2rpfm6\",\n raydium_pool_temp_token_account: \"57hiWKd47VHVD7y8BenqnakSdgQNBvyUrkSpf9BDP6UQ\",\n raydium_pool_withdraw_queue: \"4An6jy1JocXGUjayXqVTx1jvs79o8LgsRk3VvmRgXxaq\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"8HGyAAB1yoM1ttS7pXjHMa3dukTFGQggnFFH3hJZgzQh\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 6,\n vault_account: \"ETMQJtMT4nhXy2j3bQZPcyjaBjg9t5CcJvGCC1UMCMqC\",\n vault_info_account: \"mChdJpShDkQsELuBAd5dyN1wyKaAojpMx7pZeDgHLKU\",\n old_vault_info_account: \"mChdJpShDkQsELuBAd5dyN1wyKaAojpMx7pZeDgHLKU\",\n coin_reserve_liquidity_fee_receiver: \"6pFsWsCurqJ3Qzv6yUvXTcvR1p9Zb2TwSPiPAsVJ6pWd\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"4idRNrLX3eaesZkSCsyLTdBajUgwQ9c5L24dReLQAw5n\",\n farm_base_token_account: \"9PQJTecWosnmnTUZcWyG988r3cvAr67xPURUVw8apgb4\",\n farm_quote_token_account: \"C2jb3rLzgdy7JayY6cMULq7EGXwYXzJ8vgLRkrfWnduy\",\n only_pc_borrow: false\n },\n {\n name: \"SNY-USDC\",\n account: \"DyD8vsNzdzGonTZbTBHU2Ug2d32x4AbUFVFq5QX4Xbha\",\n account_nonce: 251,\n serum_market: \"DPfj2jYwPaezkCmUNm5SSYfkrkz8WFqwGLcxDDUsN3gA\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"2tCL8PbP2B35CsbbyUUXR59ioPZVeUhrESDDyd1af1fj\",\n serum_event_queue: \"H6UE5r8zMsaHW9fha6Xm7bsWrYbyaL8WbBjhbqbZYPQM\",\n serum_market_bids: \"CFFoYkeUJaAEh6kQyVEbAgkWfABnH7c8Lynr2hk8ycJT\",\n serum_market_asks: \"AVQEVeftGzTV6Yj2jEPFGgWHyTYs5uyT3ZFFyTaLgTAP\",\n serum_coin_vault_account: \"CddTJJj2tDWUk6Kteh3KSBJJh4HvkoWMXcQjZuXaaAzP\",\n serum_pc_vault_account: \"BGr1LWgHKaekkmScogSU1SYSRUaJBBPFeBAEBvuwf7CE\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"G8qcfeFqxwbCqpxv5LpLWxUCd1PyMB5nWb5e5YyxLMKg\",\n raydium_amm_id: \"5TgJXpv6H3KJhHCuP7KoDLSCmi8sM8nABizP7CmYAKm1\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"2Nr82a2ZxqsQYwBbpeLWQedy1s9kAi2U2AbeuMKjgFzw\",\n raydium_amm_quantities_or_target_orders: \"Cts3uDVAgUSaXAHMEfLPnQWF4W5TpGdiB7WhYDAaQbSy\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"FaUYbopmMVdNRe3rLnqGPBA2KB96nLHudKaEgAUcvHXn\",\n raydium_pc_token_account: \"9YiW8N9QdEsAdTQN8asjebwwEmDXAHRnb1E3nvz64vjg\",\n raydium_pool_temp_token_account: \"7QAVG74PVZntmFqvnGYwYySRBjB13HSeSNABwMPtfAPR\",\n raydium_pool_withdraw_queue: \"HpWzYHXNeQkmW9oxFjHFozyy6sVxetqJBZdhNSTwcNid\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"4dmKkXNHdgYsXqBHCuMikNQWwVomZURhYvkkX5c4pQ7y\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 12,\n vault_account: \"7uy6iA1i7JRUm4gZCd6njZddDPbudPqhvw5vrZ8FNiWM\",\n vault_info_account: \"9F84NCL736ig9Bke8Fdc6pqVc5zbuJzN7q9BGVPzYrVt\",\n old_vault_info_account: \"9F84NCL736ig9Bke8Fdc6pqVc5zbuJzN7q9BGVPzYrVt\",\n coin_reserve_liquidity_fee_receiver: \"FEfvNVCPXDpBuyx6kdRixxMPJGnqNfAXbRA29KQfsYiU\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"9neevwy86YX6YRCrrD84QjvhXKJ9svX8AmFhfPkvUThH\",\n farm_base_token_account: \"Hn4uEsjMnbwM9D2VqiZ7BEKURLeSaH2f2oyK7g4fc5cE\",\n farm_quote_token_account: \"6ixsKMHkme8dkMkqAE5ntU7mREct6rp4DPvwTTGrXJTs\",\n only_pc_borrow: false\n },\n {\n name: \"MEDIA-USDC\",\n account: \"4mbdWUxtPMAGNrA27bgUZMDNdgF2aDVj8eXZswKCGZ6S\",\n account_nonce: 255,\n serum_market: \"FfiqqvJcVL7oCCu8WQUMHLUC2dnHQPAPjTdSzsERFWjb\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"5PmwfCyTcrxXa8YhBDFQD3Yda4AC8MRDGLE78z4RFHgG\",\n serum_event_queue: \"HomZxFZNGmH2XedBavMsrXgLnWFpMLT95QV8nCYtKszd\",\n serum_market_bids: \"GmqbTDL5QSAhWL7UsE8MriTHSnodWM1HyGR8Cn8GzZV5\",\n serum_market_asks: \"CrTBp7ThkRRYJBL4tprke2VbKYj2wSxJp3Q1LDoHcQwP\",\n serum_coin_vault_account: \"D8ToFvpVWmNnfJzjHuumRJ4eoJc39hsWWcLtFZQpzQTt\",\n serum_pc_vault_account: \"6RSpnBYaegSKisXaJxeP36mkdVPe9SP3p2kDERz8Ahhi\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"A5zanvgtioZGiJMdEyaKN4XQmJsp1p7uVxaq2696REvQ\",\n raydium_amm_id: \"94CQopiGxxUXf2avyMZhAFaBdNatd62ttYGoTVQBRGdi\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"EdS5vqjihxRbRujPkqqzHYwBqcTP9QPbrBc9CDtnBDwo\",\n raydium_amm_quantities_or_target_orders: \"6Rfew8qvNp97PVN14C9Wg8ybqRdF9HUEUhuqqZBWcAUW\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"7zfTWDFmMi3Tzbbd3FZ2vZDdBm1w7whiZq1DrCxAHwMj\",\n raydium_pc_token_account: \"FWUnfg1hHuanU8LxJv31TAfEWSvuWWffeMmHpcZ9BYVr\",\n raydium_pool_temp_token_account: \"7oX2VcPYwEV6EUUyMUoTKVVxAPAvGQZcGiGzotX43wNM\",\n raydium_pool_withdraw_queue: \"F7MUnGrShtQqSvi9DoWyBNRo7FUpRiYPsS9aw77auhiS\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"ETAtLmCmsoiEEKfNrHKJ2kYy3MoABhU6NQvpSfij5tDs\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 5,\n vault_account: \"8KHfDLXWxUPqYaqxXMN6K24ViTVPci6LogDrUxu3BXC3\",\n vault_info_account: \"E3Tt83FDPYNdXHXB6x3tJAAMoYUBn4X9FdxDShbauYV3\",\n old_vault_info_account: \"E3Tt83FDPYNdXHXB6x3tJAAMoYUBn4X9FdxDShbauYV3\",\n coin_reserve_liquidity_fee_receiver: \"CCEi57RYB3APLho4pv4fqDXqxezkvVwkMnZhKPCWJHCK\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"Gmou5Y77SbPvFTtGyeqqq9FL8jjTKx3xuCtVjUUq9PEu\",\n farm_base_token_account: \"Bqcv4FLnNQXhjhbqSTYWnPfW6mCH61iD8TdCDREEN4tB\",\n farm_quote_token_account: \"GC8215x6cDu7GQv1oarvnCUdTq5wMiugcNK6ZwEn4GF6\",\n only_pc_borrow: false\n },\n {\n name: \"ALEPH-USDC\",\n account: \"4j5zNXAX2vqrKn4LNXuxAhgzqPtAhiteMNL4MF7rE99H\",\n account_nonce: 253,\n serum_market: \"GcoKtAmTy5QyuijXSmJKBtFdt99e6Buza18Js7j9AJ6e\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"5LYffQCvXvJncA5akx8ZD3jtQaBGGrN8pY2rPGHqj4mm\",\n serum_event_queue: \"99Cd6D9QnFfTdKpcwtoF3zAZdQAuZQi5NsPMERresj1r\",\n serum_market_bids: \"HmpcmzzajDvhFSXb4pmJo5mb23zW8Cj9FEeB3hVT78jV\",\n serum_market_asks: \"8sfGm6jsFTAcb4oLuqMKr1xNEBd5CXuNPAKZEdbeezA\",\n serum_coin_vault_account: \"EBRqW7DaUGFBHRbfgRagpSf9jTSS3yp9MAi3RvabdBGz\",\n serum_pc_vault_account: \"9QTMfdkgPWqLriB9J7FcYvroUEqfw6zW2VCi1dAabdUt\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"iUDasAP2nXm5wvTukAHEKSdSXn8vQkRtaiShs9ceGB7\",\n raydium_amm_id: \"GDHXjn9wF2zxW35DBkCegWQdoTfFBC9LXt7D5ovJxQ5B\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"AtUeUK7MZayoDktjrRSJAFsyPiPwPsbAeTsunM5pSnnK\",\n raydium_amm_quantities_or_target_orders: \"FMYSGYEL1CPYz8cpgAor5jV2HqeEQRDLMEggoz6wAiFV\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"BT3QMKHrha4fhqpisnYKaPDsv42XeHU2Aovhdu5Bazru\",\n raydium_pc_token_account: \"9L4tXPyuwuLhmtmX4yaRTK6TB7tYFNHupeENoCdPceq\",\n raydium_pool_temp_token_account: \"9JdpGvmo6aPZYf4hkiZNUjceXgd2RtR1fJgvjuoAuhsM\",\n raydium_pool_withdraw_queue: \"4nRbmEUp7DQroG71jXv6cJjrhnh91ePdPhzmBSjinwB8\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"CsZ5LZkDS7h9TDKjrbL7VAwQZ9nsRu8vJLhRYfmGaN8K\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 10,\n vault_account: \"J8tCBKFagSAg1FG425pzLmyyP7xgoRN5bL1W1ztGLHir\",\n vault_info_account: \"3DSDfQQJKfyq3zyod6eApZRUyEwXeUnCtbdamGNAxe9k\",\n old_vault_info_account: \"3DSDfQQJKfyq3zyod6eApZRUyEwXeUnCtbdamGNAxe9k\",\n coin_reserve_liquidity_fee_receiver: \"132bKdc6DwnxATSPR2BVZAWtL67327JiVoHzpbNJs7np\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"3oEtKXW4Zw7XSkPpDgkwdoyJKT8GzmbmtuwjhRoAk1xq\",\n farm_base_token_account: \"2AnFyKf81VBsTy2qHe9E9a49x1bdQw4kdczHLKyRJeFa\",\n farm_quote_token_account: \"BCgxPebTp1HZ3LaZ7QZS1MWhaCfdYfEGVvqwMA7edWcs\",\n only_pc_borrow: false\n },\n {\n name: \"ATLAS-USDC\",\n account: \"F5bcg9CEoydbd15GRDE3eDDaPu25TRF2MFugZHTLU5uF\",\n account_nonce: 255,\n serum_market: \"Di66GTLsV64JgCCYGVcY21RZ173BHkjJVgPyezNN7P1K\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"FcAGCEpXTSarcyBhN4nor8aR7p2yR9YF99vcocs5rqtd\",\n serum_event_queue: \"EYU32k5waRUxF521k2KFSuhEj11HQvg4MbQ9tFXuixLi\",\n serum_market_bids: \"2UabAccF1AFPcNqv9D46JgyGnErnaYAJuCwyaT5dCkHc\",\n serum_market_asks: \"9umNLTbks7S51TEB8XF4jeCxwyq3qmdHrFDMFB8cT1gv\",\n serum_coin_vault_account: \"22a8dDQwHmmnW4M4WuSXHC9NdQAufZ2V8at3EtPzBqFj\",\n serum_pc_vault_account: \"5Wu76Qx7EoiR79zVVV49cZDYZ5csZaKFiHKYtCjF9FNU\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"9shGU9f1EsxAbiR567MYZ78WUiS6ZNCYbHe53WUULQ7n\",\n raydium_amm_id: \"2bnZ1edbvK3CK3LTNZ5jH9anvXYCmzPR4W2HQ6Ngsv5K\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"EzYB1U93e8E1KGJdUzmnwgNBFMP9E1XAuyosmiPGLAvD\",\n raydium_amm_quantities_or_target_orders: \"DVxJDo3E9zfGgvSkC2DYS5fsv5AyXA7gXpcs1fHFrP3y\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"FpFV46UVvRtcrRvYtKYgJpJtP1tZkvssjhrLUfoj8Cvo\",\n raydium_pc_token_account: \"GzwX68f1ZF4dKnAJ58RdET8sPvvnYktbDEHmjoGw7Umk\",\n raydium_pool_temp_token_account: \"HcoA8ucDBjEUVMjvURaS9CZgdEUbq8jRieGabq48mCL8\",\n raydium_pool_withdraw_queue: \"26SuCukyzbYo5kzeufaSoMjRPStAwqfVzTXb4QGynTit\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 19,\n vault_account: \"CyLryeeJRgqDzAbKS66kEg9tXD9JQAo4Airp24KTQiSH\",\n vault_info_account: \"A9LZbz7DhhYRbxzuLw9CCa5B5d63e7SVGiSCGVwnAjkx\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"GUCRZ7sESTRV5WP9k4w1yVHjNCUrD72iSTx9veSjukzk\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"H1c8VNmQfigDBkPJnuAQMja8CfFyzVvr5cPgExy5ZXR4\",\n farm_base_token_account: \"h8X3RHy3F5hQjN73vbpE4d58joGpxTwtWyLNsm6kFZh\",\n farm_quote_token_account: \"HqBn967cVoUi5sCCTE6QHQtfVGpQ5RMzgpZoM8eHRv6Q\",\n only_pc_borrow: true,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"POLIS-USDC\",\n account: \"7jAZ1twMUntf39xMshTgShTfhSvWeS8hUQbmQjXfEAhK\",\n account_nonce: 253,\n serum_market: \"HxFLKUAmAMLz1jtT3hbvCMELwH5H9tpM2QugP8sKyfhW\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"88HGNyFaHEcNLfSbGQE4knRQ8gnjC3jo6YvPRAv477Uw\",\n serum_event_queue: \"qeQC4u5vpo5QMC17V5UMkQfK67vu3DHtBYVT1hFSGCK\",\n serum_market_bids: \"Bc5wovapX1tRjZfyZVpsGH73Gq5LGN4ANsj8kaEhfY7c\",\n serum_market_asks: \"4EHg2ANFFEKLFkpLxgiyinJ1UDWsG2p8rVoAjFfjMDKc\",\n serum_coin_vault_account: \"5XQ7xYE3ujVA21HGbvFGVG4pLgqVHSfR9anz2EfmZ3nA\",\n serum_pc_vault_account: \"ArUDWPwzGQFfa7t7nSdkp1Dj6tYA3icXEq8K7goz9WoG\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"8MbKSBpyXs8fVneKgt71jfHrn5SWtX8n4wMLpiVfF9So\",\n raydium_amm_id: \"9xyCzsHi1wUWva7t5Z8eAvZDRmUCVhRrbaFfm3VbU4Mf\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"12A4SGay36i2cSwA4JSdvg7rWSmCz8JzhsoDqMM8Yns7\",\n raydium_amm_quantities_or_target_orders: \"6bszsB6zxw2YowrEm26XYhh57HKQEVMRx5YMvPSSVQNh\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"7HgvC7GdmUt7kMivdLMovLStW25avFsW9GDXgNr525Uy\",\n raydium_pc_token_account: \"9FknRLGpWBqYg7fXQaBDyWWdu1v2RwUM6zRV6CiPjWBD\",\n raydium_pool_temp_token_account: \"FJV66MrqZW8VYGmTuAupstwYtqfF6ULLPP9voYtnc8DS\",\n raydium_pool_withdraw_queue: \"6uN62R1i31QVoy9cmQAeDrfLccMZDjQ2gmwv2D4iBTJT\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"poLisWXnNRwC6oBu1vHiuKQzFjGL4XDSu4g9qjz9qVk\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 21,\n vault_account: \"99YLQuPAUwrja8Datay1TxHsuFCJ6YwMAo4m7sB4LrnM\",\n vault_info_account: \"31G5RkPXqFY1J1PF7geH1sT7fwi618ndTS7oie4USd31\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"64bogB1G4Km8Toequs4bcwmrPb9evrzof2CugFpL8SNN\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"JAWV86Cu4b9o1Dntb3Mbh9XWukUKg6oe6xzgobphfbBm\",\n farm_base_token_account: \"8FCLt8vzfnjogvVtDQo46ZkMrKuwxScF3P1XEDezC2nW\",\n farm_quote_token_account: \"Fs79UGKTsrFcPghoKP7eDGhVy1URXkYuZhftTiWJSJZn\",\n only_pc_borrow: true,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"ATLAS-RAY\",\n account: \"YhnTj36tfg5AEUajcQHzrk8CAcWgsHTT3Z9vRhsLEaX\",\n account_nonce: 255,\n serum_market: \"Bn7n597jMxU4KjBPUo3QwJhbqr5145cHy31p6EPwPHwL\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"3oK6EMubnQdykMzL4juaLhKeoUwZ3WGy2KNvKBMU7mxY\",\n serum_event_queue: \"75iVJf9QKovBdsvgxcCFfwn2N4QyxEXyKxQdBvZTdzjr\",\n serum_market_bids: \"9zAgdk4Na8fBKLiTWzsqZwgYQETuHBDjPe2GYqHy17L\",\n serum_market_asks: \"Fv6MY3w7PP7A54cuPQHevQNuwekGy8yksXWioBsyVd42\",\n serum_coin_vault_account: \"9tBagdm862GCoxZNFvXv7HFjLUFmypxPYxfiT3j9S3h3\",\n serum_pc_vault_account: \"4oc1kGhKByyxRnh3oXupjTn5P6JwWPnoxwvLxjZzi2vE\",\n serum_fee_recipient: \"GHiS8bELXS3wGnUM4WcptkstCBrji85k68G2dyGdxjcE\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"418MFhkaYQtbn529wmjLLqL6uKxDz7j4eZBaV1cobkyd\",\n raydium_amm_id: \"F73euqPynBwrgcZn3fNSEneSnYasDQohPM5aZazW9hp2\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"2CbuxnkjsBvaQoAubc5MAmbeZSMn36z8sZnfMvZWH1vb\",\n raydium_amm_quantities_or_target_orders: \"6GZrucFa9hAQW7yHiPt3oZj9GkL6oBipngyY1Hw3zMx\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"33UaaUmmySzxK7q3yhmQiXMrW1tQrwqojyD6ZEFgM6FZ\",\n raydium_pc_token_account: \"9SYRTwYE5UV2cxEuRz8iiJcV8gMbMnJUYFC8zgDAsUwB\",\n raydium_pool_temp_token_account: \"FnmoaJqFYHotLTG2Ur84jSUmVUACVWrBvBvRHdPzhqvb\",\n raydium_pool_withdraw_queue: \"6bznLHPLPA3axnRfjh3sFzkxeMUQDLWhDuaHzjGL1EE6\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx\",\n quote_token_mint: \"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\",\n farm_key: 20,\n vault_account: \"62Y31eYBcxinJRaMqDd7mMmrtC8mxNbVnLfqQSmE8KRd\",\n vault_info_account: \"6KVDKLj38SyFL4QwxpiUptqZ13ZcEkFgKU4ydfn79XGy\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"GUCRZ7sESTRV5WP9k4w1yVHjNCUrD72iSTx9veSjukzk\",\n pc_reserve_liquidity_fee_receiver: \"4bRQL2hLqfinNJTsiQW6odhYtYjKXH7zsPc2tafadgoj\",\n farm_open_orders: \"3zvcsNxZV6tHFQjv5ybFVzYawgsy5oBcrsxSim85rEbs\",\n farm_base_token_account: \"GDVrpYfHScrHvnspFwc2YMoEWG8JhnTQ2D6yYcn8xwHt\",\n farm_quote_token_account: \"9423A36Bq7TvLutiqzXrH4tqQKmv8fh8K6BP37j1AUJm\",\n only_pc_borrow: true,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"POLIS-RAY\",\n account: \"3sbGaLYdSeuJFAScRGNkJmFQi1mA7aXwDEUA6geUbMtc\",\n account_nonce: 255,\n serum_market: \"3UP5PuGN6db7NhWf4Q76FLnR4AguVFN14GvgDbDj1u7h\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"DHrQdTg2TtPjRNGPtJZ1sQxuX2xKEZSTijY2KiTrVP1i\",\n serum_event_queue: \"5DX4tJ8jZt91XzM7JUUPhu6CL4o6UDGnfjLJZtkmEfVT\",\n serum_market_bids: \"4tAuffNhWeF2MDWjMDgrRoR8X8Jg3BLvUAaerXzLsFpG\",\n serum_market_asks: \"9W133475h1LZ2ZzY7aJtbJajLDSCn5hNnKcsu6gXgE2G\",\n serum_coin_vault_account: \"pLD9GMk4LACBXDJAWJSgbT1batbHgunBVyy8BaVBazG\",\n serum_pc_vault_account: \"Ah3JVyTAGLbH63XPWDDnJUwV1xYwHhFX2J81CDHomkLk\",\n serum_fee_recipient: \"GHiS8bELXS3wGnUM4WcptkstCBrji85k68G2dyGdxjcE\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"9ysGKUH6WqzjQEUT4dxqYCUaFNVK9QFEa24pGzjFq8xg\",\n raydium_amm_id: \"5tho4By9RsqTF1rbm9Akiepik3kZBT7ffUzGg8bL1mD\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"UBa61sKev8gr19nqVyN3BZbW2jG7eAGjbjeZvpU4wu8\",\n raydium_amm_quantities_or_target_orders: \"FgMtC8pDrSQJUovmnrDiRWgLGVrVSq9kui98re6uRz5i\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"Ah9T12tzwnTXWrWVWzLmCrwCEmVHS7HMdWKG4qLUDzJP\",\n raydium_pc_token_account: \"J7kjQkrpafcLjL7cCpmMamxLAFnCkGApLTC2QrbHe2NQ\",\n raydium_pool_temp_token_account: \"TYw7qQDt6sqpwUFSRfNBaLHEA1SUxbEWtmZxtZQhojk\",\n raydium_pool_withdraw_queue: \"EgZgi8skDug7YecbFuCFxXx3SPFPhbGSVrGiNzLHErkj\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"poLisWXnNRwC6oBu1vHiuKQzFjGL4XDSu4g9qjz9qVk\",\n quote_token_mint: \"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\",\n farm_key: 22,\n vault_account: \"BXhcM86zbyrnbG5sdaQTwuueCUHwFVFC61TXwKhSqCvc\",\n vault_info_account: \"zKoZafMwd1WFNKZYGKCF8pK95V9MRWfxLYf1CKxoAKz\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"64bogB1G4Km8Toequs4bcwmrPb9evrzof2CugFpL8SNN\",\n pc_reserve_liquidity_fee_receiver: \"4bRQL2hLqfinNJTsiQW6odhYtYjKXH7zsPc2tafadgoj\",\n farm_open_orders: \"6TgoAxudHaMvGyPSHqkyM2KcURLhB1ZVbtJA59B9tFBa\",\n farm_base_token_account: \"42YhuhfD3shSsRGRkbUDaTEgFY89hPqeGUVMPZ8VHrvN\",\n farm_quote_token_account: \"H8LDiPwjyHdUb1mfFfuJLi5cVj8zBptUGuaCwEtHoZSm\",\n only_pc_borrow: true\n },\n {\n name: \"ORCA-USDC\",\n account: \"5o3EsLS1NTciKHXVsGNYqQQ8iBBK3dBfSPwCH7wsdtRT\",\n account_nonce: 255,\n serum_market: \"2p7nYbtPBgtmY69NsE8DAW6szpRJn7tQvDnqvoEWQvjY\",\n solfarm_vault_program: \"FoNqK2xudK7TfKjPFxpzAcTaU2Wwyt81znT4RjJBLFQp\",\n serum_request_queue: \"11111111111111111111111111111111\",\n serum_event_queue: \"11111111111111111111111111111111\",\n serum_market_bids: \"11111111111111111111111111111111\",\n serum_market_asks: \"11111111111111111111111111111111\",\n serum_coin_vault_account: \"9vYWHBPz817wJdQpE8u3h8UoY3sZ16ZXdCcvLB7jY4Dj\",\n serum_pc_vault_account: \"6UczejMUv1tzdvUzKpULKHxrK9sqLm8edR1v9jinVWm9\",\n serum_fee_recipient: \"7CXZED4jfRp3qdHB9Py3up6v1C4UhHofFvfT6RXbJLRN\",\n serum_dex_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_lp_mint_address: \"n8Mpu28RjeYD7oUX3LG1tPxzhRZh3YYLRSHcHRdS3Zx\",\n raydium_amm_id: \"2p7nYbtPBgtmY69NsE8DAW6szpRJn7tQvDnqvoEWQvjY\",\n raydium_amm_authority: \"3fr1AhdiAmWLeNrS24CMoAu9pPgbzVhwLtJ6QUPmw2ob\",\n raydium_amm_open_orders: \"11111111111111111111111111111111\",\n raydium_amm_quantities_or_target_orders: \"11111111111111111111111111111111\",\n raydium_liquidity_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_coin_token_account: \"9vYWHBPz817wJdQpE8u3h8UoY3sZ16ZXdCcvLB7jY4Dj\",\n raydium_pc_token_account: \"6UczejMUv1tzdvUzKpULKHxrK9sqLm8edR1v9jinVWm9\",\n raydium_pool_temp_token_account: \"11111111111111111111111111111111\",\n raydium_pool_withdraw_queue: \"11111111111111111111111111111111\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 17,\n vault_account: \"2Dts63SfTz2yivx57izMcVfDMAdpxuBgqM99ChWeJXun\",\n vault_info_account: \"11111111111111111111111111111111\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"ADz1SJ28TH2TnLzA9FG7DqiW41CKeLfRvbvDckK1dvFv\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"11111111111111111111111111111111\",\n farm_base_token_account: \"HGkRMx91bZzzcbvJVyzWgDAswHA7Rhn11tuox9GYTB5c\",\n farm_quote_token_account: \"E68tCFxPPFZa6VWb6d6Txe7ugzF977TZvoVF59W951gv\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"ORCA-SOL\",\n account: \"7H4ipEXv9TV69in6BJrLiGfC6o9yG1H8JgpHEXpkAdf6\",\n account_nonce: 255,\n serum_market: \"2ZnVuidTHpi5WWKUwFXauYGhvdT9jRKYv5MDahtbwtYr\",\n solfarm_vault_program: \"FoNqK2xudK7TfKjPFxpzAcTaU2Wwyt81znT4RjJBLFQp\",\n serum_request_queue: \"11111111111111111111111111111111\",\n serum_event_queue: \"11111111111111111111111111111111\",\n serum_market_bids: \"11111111111111111111111111111111\",\n serum_market_asks: \"11111111111111111111111111111111\",\n serum_coin_vault_account: \"AioST8HKQJRqjE1mknk4Rydc8wVADhdQwRJmAAYX1T6Z\",\n serum_pc_vault_account: \"73zdy95DynZP4exdpuXTDsexcrWbDJX9TFi2E6CDzXh4\",\n serum_fee_recipient: \"4Zc4kQZhRQeGztihvcGSWezJE1k44kKEgPCAkdeBfras\",\n serum_dex_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_lp_mint_address: \"2uVjAuRXavpM6h1scGQaxqb6HVaNRn6T2X7HHXTabz25\",\n raydium_amm_id: \"2ZnVuidTHpi5WWKUwFXauYGhvdT9jRKYv5MDahtbwtYr\",\n raydium_amm_authority: \"2PH1quJj9MHQXATCmNZ6qQ2gZqM8R236DpKaz99ggVpm\",\n raydium_amm_open_orders: \"11111111111111111111111111111111\",\n raydium_amm_quantities_or_target_orders: \"11111111111111111111111111111111\",\n raydium_liquidity_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_coin_token_account: \"AioST8HKQJRqjE1mknk4Rydc8wVADhdQwRJmAAYX1T6Z\",\n raydium_pc_token_account: \"73zdy95DynZP4exdpuXTDsexcrWbDJX9TFi2E6CDzXh4\",\n raydium_pool_temp_token_account: \"11111111111111111111111111111111\",\n raydium_pool_withdraw_queue: \"11111111111111111111111111111111\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\",\n quote_token_mint: \"So11111111111111111111111111111111111111112\",\n farm_key: 18,\n vault_account: \"CsmpHw2kxqYJGvrk1DXASAEosM1nTWgDiytqa64YSSon\",\n vault_info_account: \"11111111111111111111111111111111\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"ADz1SJ28TH2TnLzA9FG7DqiW41CKeLfRvbvDckK1dvFv\",\n pc_reserve_liquidity_fee_receiver: \"9GfaYar1r2HrGANq5qNiQnx88HJ7GULQqxXxt2B4U3Zy\",\n farm_open_orders: \"11111111111111111111111111111111\",\n farm_base_token_account: \"5KwyYyEby2eA5gsndoarQBkc5epyN4qbATMvy8UGvmrM\",\n farm_quote_token_account: \"8m4d9Ef58SqYjz8x67ZNZfFaq4neRoNb57fZxyruZgVW\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"ATLAS-USDC-ORCA\",\n account: \"6optCgFDRYwfR9Gs5nwT6yAQd1VLQZQ36vV58okq6rD8\",\n account_nonce: 252,\n serum_market: \"3V5sjXj1mrWjjB1Xt6Xwp554QwHE5fppGSxbk4GzAtEW\",\n solfarm_vault_program: \"FoNqK2xudK7TfKjPFxpzAcTaU2Wwyt81znT4RjJBLFQp\",\n serum_request_queue: \"11111111111111111111111111111111\",\n serum_event_queue: \"11111111111111111111111111111111\",\n serum_market_bids: \"11111111111111111111111111111111\",\n serum_market_asks: \"11111111111111111111111111111111\",\n serum_coin_vault_account: \"xotXsNCx4tBhnwhrajGTaVgKq1sfuMkeYHc77ZegCqE\",\n serum_pc_vault_account: \"8YswVYsTi66umBF2Bnkh4LB2VWMKPssDpe54VAgiuJZQ\",\n serum_fee_recipient: \"CFN4DQ2p3qroX92pPNy3mov3Dw1aCNGLrU5AXHpHxbko\",\n serum_dex_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_lp_mint_address: \"FZ8x1LCRSPDeHBDoAc3Gc6Y7ETCynuHEr5q5YWV7uRCJ\",\n raydium_amm_id: \"3V5sjXj1mrWjjB1Xt6Xwp554QwHE5fppGSxbk4GzAtEW\",\n raydium_amm_authority: \"8UYN675AJn5htWydDs724xqintBZ4XzsCWqMozUSDU8m\",\n raydium_amm_open_orders: \"11111111111111111111111111111111\",\n raydium_amm_quantities_or_target_orders: \"11111111111111111111111111111111\",\n raydium_liquidity_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_coin_token_account: \"xotXsNCx4tBhnwhrajGTaVgKq1sfuMkeYHc77ZegCqE\",\n raydium_pc_token_account: \"8YswVYsTi66umBF2Bnkh4LB2VWMKPssDpe54VAgiuJZQ\",\n raydium_pool_temp_token_account: \"11111111111111111111111111111111\",\n raydium_pool_withdraw_queue: \"11111111111111111111111111111111\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 27,\n vault_account: \"HDKmRtHdod3Yag3Bc2R4BwzZ6kaVFpG9q8bUHeKcfsqH\",\n vault_info_account: \"11111111111111111111111111111111\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"GUCRZ7sESTRV5WP9k4w1yVHjNCUrD72iSTx9veSjukzk\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"11111111111111111111111111111111\",\n farm_base_token_account: \"6ojDB3sWYWUeS1CPTh9wYFWFYviE1cWRFnREKB37SsGe\",\n farm_quote_token_account: \"GT3GZvrso8xUuWjQ9azCbixW2zDJiMukiXDcksWEiXJr\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"POLIS-USDC-ORCA\",\n account: \"G8o2sgg1LM1qAVZcS8N2gg6XybxgPTL1P2EQMg1J6zt3\",\n account_nonce: 254,\n serum_market: \"CdKPtCb5fBRaGFS4bJgytfReeHuFyhpe9YUyWHPnEWZG\",\n solfarm_vault_program: \"FoNqK2xudK7TfKjPFxpzAcTaU2Wwyt81znT4RjJBLFQp\",\n serum_request_queue: \"11111111111111111111111111111111\",\n serum_event_queue: \"11111111111111111111111111111111\",\n serum_market_bids: \"11111111111111111111111111111111\",\n serum_market_asks: \"11111111111111111111111111111111\",\n serum_coin_vault_account: \"EbXNEUiKxSU1vwwhrbVNVk3qX4o1yU3p75SQUUMfc1zH\",\n serum_pc_vault_account: \"CLCj9b1vdPutrkvZS8ACTM5q42SXB2Q7khnMLVxDMGEK\",\n serum_fee_recipient: \"3gZQ2YnrXbnRwJj5poffLirF7CwacatvtfGCNRFrbJdr\",\n serum_dex_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_lp_mint_address: \"GteBdo9sqE7T41G8AJsaG9WHW48uXBwsLLznmu2TBdgy\",\n raydium_amm_id: \"CdKPtCb5fBRaGFS4bJgytfReeHuFyhpe9YUyWHPnEWZG\",\n raydium_amm_authority: \"8XB9V3VuHtPBzHqvxzcmpkpaoXNXjZMD8VBHC79SxcEL\",\n raydium_amm_open_orders: \"11111111111111111111111111111111\",\n raydium_amm_quantities_or_target_orders: \"11111111111111111111111111111111\",\n raydium_liquidity_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_coin_token_account: \"EbXNEUiKxSU1vwwhrbVNVk3qX4o1yU3p75SQUUMfc1zH\",\n raydium_pc_token_account: \"CLCj9b1vdPutrkvZS8ACTM5q42SXB2Q7khnMLVxDMGEK\",\n raydium_pool_temp_token_account: \"11111111111111111111111111111111\",\n raydium_pool_withdraw_queue: \"11111111111111111111111111111111\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"poLisWXnNRwC6oBu1vHiuKQzFjGL4XDSu4g9qjz9qVk\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 28,\n vault_account: \"8SpU3XBQPgxivEsqq3m8LdXyPRXonhtKZkfr6uGviLAa\",\n vault_info_account: \"11111111111111111111111111111111\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"64bogB1G4Km8Toequs4bcwmrPb9evrzof2CugFpL8SNN\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"11111111111111111111111111111111\",\n farm_base_token_account: \"BW3GRhfaqurSVmbTkyN4igqQ1Fra5e777SBfwB1ETkTn\",\n farm_quote_token_account: \"9DcRstFiim3XjF2i4joArL2dLYxDPTaboczGHteYfC4P\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"ETH-USDC\",\n account: \"2VXHzuBSCdFof9pjdfP1vcyMpt5E9cEHddjBBx6UjG9w\",\n account_nonce: 254,\n serum_market: \"FgZut2qVQEyPBibaTJbbX2PxaMZvT1vjDebiVaDp5BWP\",\n solfarm_vault_program: \"FoNqK2xudK7TfKjPFxpzAcTaU2Wwyt81znT4RjJBLFQp\",\n serum_request_queue: \"11111111111111111111111111111111\",\n serum_event_queue: \"11111111111111111111111111111111\",\n serum_market_bids: \"11111111111111111111111111111111\",\n serum_market_asks: \"11111111111111111111111111111111\",\n serum_coin_vault_account: \"H9h5yTBfCHcb4eRP87fXczzXgNaMzKihr7bf1sjw7iuZ\",\n serum_pc_vault_account: \"JA98RXv2VdxQD8pRQq4dzJ1Bp4nH8nokCGmxvPWKJ3hx\",\n serum_fee_recipient: \"DLWewB12jzGn4wXJmFCddWDeof1Ma4cZYNRv9CP5hTvX\",\n serum_dex_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_lp_mint_address: \"3e1W6Aqcbuk2DfHUwRiRcyzpyYRRjg6yhZZcyEARydUX\",\n raydium_amm_id: \"FgZut2qVQEyPBibaTJbbX2PxaMZvT1vjDebiVaDp5BWP\",\n raydium_amm_authority: \"4dfCZR32xXhoTgMRhnViNaTFwiKP9A34TDjHCR3xM5rg\",\n raydium_amm_open_orders: \"11111111111111111111111111111111\",\n raydium_amm_quantities_or_target_orders: \"11111111111111111111111111111111\",\n raydium_liquidity_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_coin_token_account: \"H9h5yTBfCHcb4eRP87fXczzXgNaMzKihr7bf1sjw7iuZ\",\n raydium_pc_token_account: \"JA98RXv2VdxQD8pRQq4dzJ1Bp4nH8nokCGmxvPWKJ3hx\",\n raydium_pool_temp_token_account: \"11111111111111111111111111111111\",\n raydium_pool_withdraw_queue: \"11111111111111111111111111111111\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 23,\n vault_account: \"7uqa33AAUmsXKduwrv2ck8o6t9WPFGHmKn7DMSWUg6GM\",\n vault_info_account: \"11111111111111111111111111111111\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"4oVF2swaCseP9HxsmUrzxbEzxgHPYpyRMwGM8VUfaBiC\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"11111111111111111111111111111111\",\n farm_base_token_account: \"CvCLVRKqS3tcEQpH1et2fCx5uoZReARYm1n1UmGCM8CX\",\n farm_quote_token_account: \"CCeZ3WX11GYt8MjXRBZ1PzzD99BJTip1QMTxdnKyJPYk\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"WHETH-USDC\",\n account: \"EUaGw6dGjVwfG4Wm1unuA6mUJhnZVqHmp6NCvkG4dqBd\",\n account_nonce: 254,\n serum_market: \"4reGGLbesqpAeAZdAJv9hhgA2tgj45oGcyRuEvhATdMm\",\n solfarm_vault_program: \"FoNqK2xudK7TfKjPFxpzAcTaU2Wwyt81znT4RjJBLFQp\",\n serum_request_queue: \"11111111111111111111111111111111\",\n serum_event_queue: \"11111111111111111111111111111111\",\n serum_market_bids: \"11111111111111111111111111111111\",\n serum_market_asks: \"11111111111111111111111111111111\",\n serum_coin_vault_account: \"9KpjcpKwhoFPbixvKDfcAhBQcVXk1CSBTGsJdzojDPRv\",\n serum_pc_vault_account: \"5HaG31FQS4McBVcHxVfwaKaWXE3VCGqvJ1ZDkTxs94cQ\",\n serum_fee_recipient: \"AVw52spXtzFh4bb5ghhpJaDbLx3XWuY85eQNDEo3X1yN\",\n serum_dex_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_lp_mint_address: \"7NPtjjAP7vhp4t5NCLyY4DY5rurvyc8cgZ2a2rYabRia\",\n raydium_amm_id: \"4reGGLbesqpAeAZdAJv9hhgA2tgj45oGcyRuEvhATdMm\",\n raydium_amm_authority: \"8uLtzZ1iTLTCPsm3b4QttRmDXcFjhVHRuMS9VTVEwo7E\",\n raydium_amm_open_orders: \"11111111111111111111111111111111\",\n raydium_amm_quantities_or_target_orders: \"11111111111111111111111111111111\",\n raydium_liquidity_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_coin_token_account: \"9KpjcpKwhoFPbixvKDfcAhBQcVXk1CSBTGsJdzojDPRv\",\n raydium_pc_token_account: \"5HaG31FQS4McBVcHxVfwaKaWXE3VCGqvJ1ZDkTxs94cQ\",\n raydium_pool_temp_token_account: \"11111111111111111111111111111111\",\n raydium_pool_withdraw_queue: \"11111111111111111111111111111111\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 29,\n vault_account: \"Gp8L3oFuwQccXnKrtuScL9btgk7WGFdVZty1bkj8YrUZ\",\n vault_info_account: \"11111111111111111111111111111111\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"A4RG7kMBBhCUqu7Mge79m7X4ZYHMQ2CTtv8RzF2PLNMu\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"11111111111111111111111111111111\",\n farm_base_token_account: \"A828yW6JsSUfGYP8HH6dwLaHJAfAtH36N96Gi5hpzJsc\",\n farm_quote_token_account: \"GQQZ3L7TRXt8D5CZ89ZQWMmunf44nhziUffWjMG2XcjY\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"WHETH-SOL\",\n account: \"9iMA6A783aF4zpLiXbVyeGhQ3ZUZxQogMJNeJvev2n18\",\n account_nonce: 254,\n serum_market: \"FcEro2uFpHcb7Z785CBs6q12KMJqUJKa8VTXPi4TTBMf\",\n solfarm_vault_program: \"FoNqK2xudK7TfKjPFxpzAcTaU2Wwyt81znT4RjJBLFQp\",\n serum_request_queue: \"11111111111111111111111111111111\",\n serum_event_queue: \"11111111111111111111111111111111\",\n serum_market_bids: \"11111111111111111111111111111111\",\n serum_market_asks: \"11111111111111111111111111111111\",\n serum_coin_vault_account: \"3uQytDKNd5H6XK8FhTei4wCUmj2eTbLTbiLAtWk2SmbA\",\n serum_pc_vault_account: \"GR3g8Wej3jmv92hYM1t22kaXog2xjkGjQ7V1XzLd1efT\",\n serum_fee_recipient: \"YCVJDKdHNi1mhJtWz7QGbBRreMmw1soeipz7wZbQKEK\",\n serum_dex_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_lp_mint_address: \"7aYnrdmdCRodDy2Czn6keUquUhjF1jPEmfwZPh488z8U\",\n raydium_amm_id: \"FcEro2uFpHcb7Z785CBs6q12KMJqUJKa8VTXPi4TTBMf\",\n raydium_amm_authority: \"HMxZz8fv2uR9suzAPRbJGNB3wZL1eT3eKL3cpYWUbM8K\",\n raydium_amm_open_orders: \"11111111111111111111111111111111\",\n raydium_amm_quantities_or_target_orders: \"11111111111111111111111111111111\",\n raydium_liquidity_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_coin_token_account: \"3uQytDKNd5H6XK8FhTei4wCUmj2eTbLTbiLAtWk2SmbA\",\n raydium_pc_token_account: \"GR3g8Wej3jmv92hYM1t22kaXog2xjkGjQ7V1XzLd1efT\",\n raydium_pool_temp_token_account: \"11111111111111111111111111111111\",\n raydium_pool_withdraw_queue: \"11111111111111111111111111111111\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs\",\n quote_token_mint: \"So11111111111111111111111111111111111111112\",\n farm_key: 30,\n vault_account: \"6GLMd139W3oZH22M1maqgda44QLXjjcsethsKMQqntWV\",\n vault_info_account: \"11111111111111111111111111111111\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"A4RG7kMBBhCUqu7Mge79m7X4ZYHMQ2CTtv8RzF2PLNMu\",\n pc_reserve_liquidity_fee_receiver: \"9GfaYar1r2HrGANq5qNiQnx88HJ7GULQqxXxt2B4U3Zy\",\n farm_open_orders: \"11111111111111111111111111111111\",\n farm_base_token_account: \"CHMPXhXwUVspFRNYtM38RaLyH7gpq19bgJ69UYLGcLQX\",\n farm_quote_token_account: \"Cz95mPqppLWKasRaH7V31DgrLZKv9LosvUa9m4MDrzNr\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"ETH-SOL\",\n account: \"7SBKYGHeBV123xusuz8xbzaqbdZMHJmNv2L1NJurfPkb\",\n account_nonce: 255,\n serum_market: \"EuK3xDa4rWuHeMQCBsHf1ETZNiEQb5C476oE9u9kp8Ji\",\n solfarm_vault_program: \"FoNqK2xudK7TfKjPFxpzAcTaU2Wwyt81znT4RjJBLFQp\",\n serum_request_queue: \"11111111111111111111111111111111\",\n serum_event_queue: \"11111111111111111111111111111111\",\n serum_market_bids: \"11111111111111111111111111111111\",\n serum_market_asks: \"11111111111111111111111111111111\",\n serum_coin_vault_account: \"7F2cLdio3i6CCJaypj9VfNDPW2DwT3vkDmZJDEfmxu6A\",\n serum_pc_vault_account: \"5pUTGvN2AA2BEzBDU4CNDh3LHER15WS6J8oJf5XeZFD8\",\n serum_fee_recipient: \"unxKgWEc71ZiHwMqZs3VLqjcjmZhfTZEg94ZLGvjdMP\",\n serum_dex_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_lp_mint_address: \"71FymgN2ZUf7VvVTLE8jYEnjP3jSK1Frp2XT1nHs8Hob\",\n raydium_amm_id: \"EuK3xDa4rWuHeMQCBsHf1ETZNiEQb5C476oE9u9kp8Ji\",\n raydium_amm_authority: \"DffrDbzPiswDJaiicBBo9CjqztKgFLrqXGwNJH4XQefZ\",\n raydium_amm_open_orders: \"11111111111111111111111111111111\",\n raydium_amm_quantities_or_target_orders: \"11111111111111111111111111111111\",\n raydium_liquidity_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_coin_token_account: \"7F2cLdio3i6CCJaypj9VfNDPW2DwT3vkDmZJDEfmxu6A\",\n raydium_pc_token_account: \"5pUTGvN2AA2BEzBDU4CNDh3LHER15WS6J8oJf5XeZFD8\",\n raydium_pool_temp_token_account: \"11111111111111111111111111111111\",\n raydium_pool_withdraw_queue: \"11111111111111111111111111111111\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk\",\n quote_token_mint: \"So11111111111111111111111111111111111111112\",\n farm_key: 26,\n vault_account: \"8xxkkN1Vez555i98wMUBKRWTgXUgsdXMMZppw6cPD4q6\",\n vault_info_account: \"11111111111111111111111111111111\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"4oVF2swaCseP9HxsmUrzxbEzxgHPYpyRMwGM8VUfaBiC\",\n pc_reserve_liquidity_fee_receiver: \"9GfaYar1r2HrGANq5qNiQnx88HJ7GULQqxXxt2B4U3Zy\",\n farm_open_orders: \"11111111111111111111111111111111\",\n farm_base_token_account: \"2k1QyvZAGcj7T9QcGVjCPMB4z6fPMNpvmGn1HQkFpRSf\",\n farm_quote_token_account: \"iB9ygDVkKn4eYDmQZxBpTxDT8PuUCzmGuxDZaxRFj6f\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"SOL-USDC\",\n account: \"7qbZN6UrMhBMoVeowmiVvaAUSodueY8edxRtYWzZAnsN\",\n account_nonce: 254,\n serum_market: \"EGZ7tiLeH62TPV1gL8WwbXGzEPa9zmcpVnnkPKKnrE2U\",\n solfarm_vault_program: \"FoNqK2xudK7TfKjPFxpzAcTaU2Wwyt81znT4RjJBLFQp\",\n serum_request_queue: \"11111111111111111111111111111111\",\n serum_event_queue: \"11111111111111111111111111111111\",\n serum_market_bids: \"11111111111111111111111111111111\",\n serum_market_asks: \"11111111111111111111111111111111\",\n serum_coin_vault_account: \"ANP74VNsHwSrq9uUSjiSNyNWvf6ZPrKTmE4gHoNd13Lg\",\n serum_pc_vault_account: \"75HgnSvXbWKZBpZHveX68ZzAhDqMzNDS29X6BGLtxMo1\",\n serum_fee_recipient: \"8JnSiuvQq3BVuCU3n4DrSTw9chBSPvEMswrhtifVkr1o\",\n serum_dex_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_lp_mint_address: \"APDFRM3HMr8CAGXwKHiu2f5ePSpaiEJhaURwhsRrUUt9\",\n raydium_amm_id: \"EGZ7tiLeH62TPV1gL8WwbXGzEPa9zmcpVnnkPKKnrE2U\",\n raydium_amm_authority: \"JU8kmKzDHF9sXWsnoznaFDFezLsE5uomX2JkRMbmsQP\",\n raydium_amm_open_orders: \"11111111111111111111111111111111\",\n raydium_amm_quantities_or_target_orders: \"11111111111111111111111111111111\",\n raydium_liquidity_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_coin_token_account: \"ANP74VNsHwSrq9uUSjiSNyNWvf6ZPrKTmE4gHoNd13Lg\",\n raydium_pc_token_account: \"75HgnSvXbWKZBpZHveX68ZzAhDqMzNDS29X6BGLtxMo1\",\n raydium_pool_temp_token_account: \"11111111111111111111111111111111\",\n raydium_pool_withdraw_queue: \"11111111111111111111111111111111\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"So11111111111111111111111111111111111111112\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 24,\n vault_account: \"5Qk3dT58AmbGvgADpauiUaUccb4EPSUxvJaVHcUzVUT3\",\n vault_info_account: \"11111111111111111111111111111111\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"9GfaYar1r2HrGANq5qNiQnx88HJ7GULQqxXxt2B4U3Zy\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"11111111111111111111111111111111\",\n farm_base_token_account: \"HzNmo2P1rzaf41Zzk5kYu2JbwA8zzsuRmjvowDc4hRHK\",\n farm_quote_token_account: \"EwKjz1cpRQAT6tf19hb7U1NeFjTjYKGGuLv1G2BoV5ZU\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"SOL-USDT\",\n account: \"5gCJSKnqjMTm5S9cWGxM2BwEPfSrLub5yPZt1nUoTC2C\",\n account_nonce: 255,\n serum_market: \"Dqk7mHQBx2ZWExmyrR2S8X6UG75CrbbpK2FSBZsNYsw6\",\n solfarm_vault_program: \"FoNqK2xudK7TfKjPFxpzAcTaU2Wwyt81znT4RjJBLFQp\",\n serum_request_queue: \"11111111111111111111111111111111\",\n serum_event_queue: \"11111111111111111111111111111111\",\n serum_market_bids: \"11111111111111111111111111111111\",\n serum_market_asks: \"11111111111111111111111111111111\",\n serum_coin_vault_account: \"DTb8NKsfhEJGY1TrA7RXN6MBiTrjnkdMAfjPEjtmTT3M\",\n serum_pc_vault_account: \"E8erPjPEorykpPjFV9yUYMYigEWKQUxuGfL2rJKLJ3KU\",\n serum_fee_recipient: \"BBKgw75FivTYXj85D2AWyVdaTdTWuSuHVXRm1Xu7fipb\",\n serum_dex_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_lp_mint_address: \"FZthQCuYHhcfiDma7QrX7buDHwrZEd7vL8SjS6LQa3Tx\",\n raydium_amm_id: \"Dqk7mHQBx2ZWExmyrR2S8X6UG75CrbbpK2FSBZsNYsw6\",\n raydium_amm_authority: \"2sxKY7hxVFrY5oNE2DgaPAJFamMzsmFLM2DgVcjK5yTy\",\n raydium_amm_open_orders: \"11111111111111111111111111111111\",\n raydium_amm_quantities_or_target_orders: \"11111111111111111111111111111111\",\n raydium_liquidity_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_coin_token_account: \"DTb8NKsfhEJGY1TrA7RXN6MBiTrjnkdMAfjPEjtmTT3M\",\n raydium_pc_token_account: \"E8erPjPEorykpPjFV9yUYMYigEWKQUxuGfL2rJKLJ3KU\",\n raydium_pool_temp_token_account: \"11111111111111111111111111111111\",\n raydium_pool_withdraw_queue: \"11111111111111111111111111111111\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"So11111111111111111111111111111111111111112\",\n quote_token_mint: \"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\",\n farm_key: 25,\n vault_account: \"2Y9RbhbBKBvErq8DDQeD9tQuUaHS8vMAp7cKgqoDLy4a\",\n vault_info_account: \"11111111111111111111111111111111\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"9GfaYar1r2HrGANq5qNiQnx88HJ7GULQqxXxt2B4U3Zy\",\n pc_reserve_liquidity_fee_receiver: \"3VQV6yjMUXaTcR6KCvZSAgEKkvZUVEQnNdyEREPbjj31\",\n farm_open_orders: \"11111111111111111111111111111111\",\n farm_base_token_account: \"Dnovf4Krmtfrupj1FxLBVY9prKeM7bbeqgefJcZZh1jy\",\n farm_quote_token_account: \"4kvUbeGvWCVj4Q8N4ZBtuAh6kHCPTYWupvH2tj7s19JR\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"BTC-mSOL\",\n account: \"4mByCBXLDmE6s8tahigH4727XGc52MWNNNxFipsPiCb4\",\n account_nonce: 255,\n serum_market: \"HvanEnuruBXBPJymSLr9EmsFUnZcbY97B7RBwZAmfcax\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"4tr2JgkKt4XqSb9r6pnLojoMZ4vVwJrsTBVAF9a83DnT\",\n serum_event_queue: \"D4bcCmeFca5rF8KC1JDJkJTiRLLBmoQAdNS2x7zTaqF4\",\n serum_market_bids: \"UPgp2Apw1weBoAVyozcc4WuAJrCJPf6ckSZa9psCe63\",\n serum_market_asks: \"HQyMusq5noGcSz2VoPqvztZyEAy8K1Mx6F37bN5ppH35\",\n serum_coin_vault_account: \"DxXBH5NCTENPh6zsfMstyHhoBtdaVnYSzHgaa6GyVbfY\",\n serum_pc_vault_account: \"9XqpiagW7bnAbMwpc85M2hfrcqxtvfgZucyrYPAPkcvq\",\n serum_fee_recipient: \"GYBx8Z1VhPMB3VBrGfrpXsoo2gZqrGqLvEYkUtDPo5cy\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"92bcERNtUmuaJ6mwLSxYHZYSph37jdKxRdoYNxpcYNPp\",\n raydium_amm_id: \"ynV2H2b7FcRBho2TvE25Zc4gDeuu2N45rUw9DuJYjJ9\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"FD7fCGepsCf3bBWF4EmPHuKCNuE9UmqqTHVsAsQSKv6b\",\n raydium_amm_quantities_or_target_orders: \"HBpTcRToBmQKWTwCHgziFhoRkzzEdXEyAAqHoTLpyMXg\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"CXmwnKYkXebSbiFdNa2AVF34iRQPaf6jecyLWkEra6Dd\",\n raydium_pc_token_account: \"GtdKqFoUtHC8vH1rMZvW2eVqqFa3vRphqkNCviog4LAK\",\n raydium_pool_temp_token_account: \"5TrJppACzkDAra1MUgZ1rCm4pvYZ2gVYWBAXPt7pMQDt\",\n raydium_pool_withdraw_queue: \"3gctDYUqCgeinnxecj3iifkopbG88Ars14QhAf6UoCwY\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E\",\n quote_token_mint: \"mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So\",\n farm_key: 34,\n vault_account: \"2FdRTD49aPBtvVERvV4VUxD6At7jRNvSfezT3A8tPy2M\",\n vault_info_account: \"2xvpDszS5AFLYU5kC4v5VUGxddwHH4tgXizqrMd8MU7q\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"5BYymW3BYr63xrYMojL6qWMPmpicTXPPnuUykUmAmKnj\",\n pc_reserve_liquidity_fee_receiver: \"6j2mHKx1rSWe4seQbqfD2WksXRg7CaWU2DngNc2Wni8P\",\n farm_open_orders: \"Aq4UWYVvKmRvcmhYE966iBRLZwC43HCsh5xboZM7VTsG\",\n farm_base_token_account: \"G3evRipaDuKb4qAUct7M8jMyGCFQnjqZaYJoKarZhcB4\",\n farm_quote_token_account: \"HhpDra1FNJozsNoxeRsgPSsrTZZxRjHdCXsMLu8Jqpow\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"ETH-mSOL\",\n account: \"Bdz1mTRS7ng9bDPQYrP8ABkaBms6xLCeF4ajt12ZYJ2Q\",\n account_nonce: 255,\n serum_market: \"3KLNtqA8H4Em36tifoTHNqTZM6wiwbprYkTDyVJbrBuu\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"5ce5sA61UZ1tFjPi5t3bgf3iDbJd7g7UmALs8ayAiGwy\",\n serum_event_queue: \"12kgGbCNQjcKWnezanmCfPodE2kkoWTojgmGkt47HhCH\",\n serum_market_bids: \"GaGvreFFZ89SKsRMxn1MbDXwEvLKH7nd2EbykAEzvaRn\",\n serum_market_asks: \"CmktYGnATPGCus9rypT2q2GmEtXx6jv14Hz5v59iN9Em\",\n serum_coin_vault_account: \"DPdJZDKtTiaaqd52LPCvqyMPPNnJE3dSGAKVnZbsUSNm\",\n serum_pc_vault_account: \"5fpAmGMAqtkueG5w2doNDeBncFUvh4zgBsYoCwpGBkMA\",\n serum_fee_recipient: \"GYBx8Z1VhPMB3VBrGfrpXsoo2gZqrGqLvEYkUtDPo5cy\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"HYv3grQfi8QbV7nG7EFgNK1aJSrsJ7HynXJKJVPLL2Uh\",\n raydium_amm_id: \"Ghj3v2qYbSp6XqmH4NV4KRu4Rrgqoh2Ra7L9jEdsbNzF\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"ABPcKmxjrGqSCQCvTBtjpRwLD7DJNmfhXsr6ADhjiLDZ\",\n raydium_amm_quantities_or_target_orders: \"7ATMf6E5StLSAtPYMoLTgZoAzmmXmii5CC6f5HYCjdKn\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"8jRAjkPkVLeBwA4BgTvS43irS8HPmBKXmqU6WonpdkxT\",\n raydium_pc_token_account: \"EiuYikutCLtq1WDsinnZfXREM1vchgH5ruRJTNDYHA7b\",\n raydium_pool_temp_token_account: \"DZxRzxsztb5u3TFQaZd3ce8aNUbAikLAH79x2MMNdH86\",\n raydium_pool_withdraw_queue: \"GVDZeTpSkseFrsooLNpeZzpzL3WkYo7cSVMLRHCKqbcQ\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk\",\n quote_token_mint: \"mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So\",\n farm_key: 33,\n vault_account: \"9igj1xB4qW18WPQpNY7AGwcJQniT4XxKy4hptUkBJ52T\",\n vault_info_account: \"3qQA2g9d26TuEnH5fAWzgY92PA9jM77DcSJpXE5GoiYM\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"4oVF2swaCseP9HxsmUrzxbEzxgHPYpyRMwGM8VUfaBiC\",\n pc_reserve_liquidity_fee_receiver: \"6j2mHKx1rSWe4seQbqfD2WksXRg7CaWU2DngNc2Wni8P\",\n farm_open_orders: \"B2y1bbfqykfuMzAwCB8r872pZ1zBqJCUqDmdfiQzB4Q\",\n farm_base_token_account: \"9Cz4pTsRctVd5LxY2fTZte1mLBwKMicEzki65RmFTJWm\",\n farm_quote_token_account: \"3X4ESZR5moxLXhdf8xRZ5qwCSxEABqPzECZibLtKwB8P\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"mSOL-USDC\",\n account: \"9ebfozu3jRfuRsN2S4Suo93xWGVTmFPDmZmk4mjW4a3J\",\n account_nonce: 252,\n serum_market: \"6oGsL2puUgySccKzn9XA9afqF217LfxP5ocq4B3LWsjy\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"EHUoDPVVKR5Udp4EZPb4bsHZte5EEHc1PPTPXBgJEPEK\",\n serum_event_queue: \"BC8Tdzz7rwvuYkJWKnPnyguva27PQP5DTxosHVQrEzg9\",\n serum_market_bids: \"8qyWhEcpuvEsdCmY1kvEnkTfgGeWHmi73Mta5jgWDTuT\",\n serum_market_asks: \"PPnJy6No31U45SVSjWTr45R8Q73X6bNHfxdFqr2vMq3\",\n serum_coin_vault_account: \"2y3BtF5oRBpLwdoaGjLkfmT3FY3YbZCKPbA9zvvx8Pz7\",\n serum_pc_vault_account: \"6w5hF2hceQRZbaxjPJutiWSPAFWDkp3YbY2Aq3RpCSKe\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"4xTpJ4p76bAeggXoYywpCCNKfJspbuRzZ79R7pRhbqSf\",\n raydium_amm_id: \"ZfvDXXUhZDzDVsapffUyXHj9ByCoPjP4thL6YXcZ9ix\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"4zoatXFjMSirW2niUNhekxqeEZujjC1oioKCEJQMLeWF\",\n raydium_amm_quantities_or_target_orders: \"Kq9Vgb8ntBzZy5doEER2p4Zpt8SqW2GqJgY5BgWRjDn\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"8JUjWjAyXTMB4ZXcV7nk3p6Gg1fWAAoSck7xekuyADKL\",\n raydium_pc_token_account: \"DaXyxj42ZDrp3mjrL9pYjPNyBp5P8A2f37am4Kd4EyrK\",\n raydium_pool_temp_token_account: \"3EdqPYv3hLJFXC3U9LH7yA7HX6Z7gRxT7vGQQJrxScDH\",\n raydium_pool_withdraw_queue: \"CfjpUvQAoU4hadb9nReTCAqBFFP7MpJyBW97ezbiWgsQ\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 31,\n vault_account: \"GfM1JxpucDcgoWgSbU5usgAAuQF8wddkpZZNoF4mjXpk\",\n vault_info_account: \"BZR7uNzz3LuLv7eSjaWJrN4ZYZapTV8eYyCqfEZScmTE\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"6j2mHKx1rSWe4seQbqfD2WksXRg7CaWU2DngNc2Wni8P\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"DxMF3XVw4x7QmeTCgUvTD7d4HAPfCahCkcyLHWE2Bw5v\",\n farm_base_token_account: \"DPBMwQW6yjspLsLj2pWKv5frEwppvfvdpdZEHYsLdgSs\",\n farm_quote_token_account: \"HWsjaPkT33VgbZ2cMA1cE3GCa2Cztw4QHp9K1BTkZE3D\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"mSOL-USDT\",\n account: \"DCjroKCQZZLBoUmuaq98VSTQSJzghbkYRcQCEorLZuEg\",\n account_nonce: 255,\n serum_market: \"HxkQdUnrPdHwXP5T9kewEXs3ApgvbufuTfdw9v1nApFd\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"GZK8HwmovgJs7NTVKftf6SGrwa9muf7ZUXKHZVA5aA88\",\n serum_event_queue: \"Ee9UPY9CH2jHx2LLW2daLyc9VS5Bnp4yTykw4aveeXLX\",\n serum_market_bids: \"wNv6YZ31PX5hS42XCijwgd7SuMAu63aPvDWjMNTM2UP\",\n serum_market_asks: \"7g28QYJPPNypyPvoAdir8WzPT2Me78u78jufiG7M3wym\",\n serum_coin_vault_account: \"FgVVda2Wnp2PuDpuh23B341qZx2cnArqVNSgxsU877Y\",\n serum_pc_vault_account: \"2PtdrUGJd7aYoMKXpQ5d19r5Aa1z8dkRj6NNRCNGTE3D\",\n serum_fee_recipient: \"F2szJdBzeiYNb45Ysd8ufsjdh8csEbXv1HaTrG4Tyv2R\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"69NCmEW9mGpiWLjAcAWHq51k4ionJZmzgRfRT3wQaCCf\",\n raydium_amm_id: \"BhuMVCzwFVZMSuc1kBbdcAnXwFg9p4HJp7A9ddwYjsaF\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"67xxC7oyzGFMVX8AaAHqcT3UWpPt4fMsHuoHrHvauhog\",\n raydium_amm_quantities_or_target_orders: \"HrNUwbZF4NPRSdZ9hwD7EWV1cwQoJ9Yhu9Jf7ybXALpe\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"FaoMKkKzMDQaURce1VLewT6K38F6FQS5UQXD1mTXJ2Cb\",\n raydium_pc_token_account: \"GE8m3rHHejrNf4jE96n5gzMmLbxTfPPcmv9Ppaw24FZa\",\n raydium_pool_temp_token_account: \"7WCk8sFJiUnpGbzHpFF9FsV5oJQgKs5iBERysFDyywnq\",\n raydium_pool_withdraw_queue: \"4J45miDrQ5UdqpLzunHAYUqTg8A78CHKeBwa6a1TvFeF\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So\",\n quote_token_mint: \"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\",\n farm_key: 32,\n vault_account: \"BKo8Pj1hWa264e49ji18mPrxPLgDgZGU4bsUdTEwC1TA\",\n vault_info_account: \"2572yGjYEyxyWLGFZ1G7Cq26uQVnzN8ufa83QkwjifxM\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"6j2mHKx1rSWe4seQbqfD2WksXRg7CaWU2DngNc2Wni8P\",\n pc_reserve_liquidity_fee_receiver: \"3VQV6yjMUXaTcR6KCvZSAgEKkvZUVEQnNdyEREPbjj31\",\n farm_open_orders: \"4KVQJ6Fpscvdd6J8mLnJzKeq63GU6xX3JT9fMomT7y4w\",\n farm_base_token_account: \"3zrjL9JKLJ5CwLX3SnCam7yfxUrLTe25KW4daJSbLkeC\",\n farm_quote_token_account: \"8hrfqX6Rf157vyTgRfVqBgjqCaezQ5rKTg4NmY52aVLS\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"mSOL-RAY\",\n account: \"4Y17xhHkenc7HCg4bfmf5VVqwgVipSvBsat6xeGTuvKA\",\n account_nonce: 255,\n serum_market: \"HVFpsSP4QsC8gFfsFWwYcdmvt3FepDRB6xdFK2pSQtMr\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"71brfPmEfNVhjirHtXsdNACz7WAEwQDJymptB8pSqDiF\",\n serum_event_queue: \"Gucy2LXDFjWBZEFX4gyrqr6xEb2AWRf4VVgqX33ZXkWu\",\n serum_market_bids: \"7ZCucutxHFwJjfUmxD1Pae8vYg9HB1WQ6DhRkueNyJqF\",\n serum_market_asks: \"6cM5rqTHhngGtifjK7pUwved3CdHKZgFj7nnP3LsP325\",\n serum_coin_vault_account: \"GPksxJSxy5pEigdtSLBBZuRQEuGPJRT2ah3J1HwMeKm5\",\n serum_pc_vault_account: \"TACxu78UJHz2Vzg2HwGa2w9mvLw2mY5mL7Q3ho9W6J9\",\n serum_fee_recipient: \"GHiS8bELXS3wGnUM4WcptkstCBrji85k68G2dyGdxjcE\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"De2EHBAdkgfc72DpShqDGG42cV3iDWh8wvvZdPsiEcqP\",\n raydium_amm_id: \"6gpZ9JkLoYvpA5cwdyPZFsDw6tkbPyyXM5FqRqHxMCny\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"HDsF9Mp9w3Pc8ZqQJw3NBvtC795NuWENPmTed1YVz5a3\",\n raydium_amm_quantities_or_target_orders: \"68g1uhKVVLFG1Aua1BKtCx3uiwPixue1qqbKDJAc32Uo\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"BusJVbHEkJeYRpHkqCrt85d1LALS1EVcKRjqRFZtBSty\",\n raydium_pc_token_account: \"GM1CjxKixFkKpakxx5Lg9u3zYjXAK2Gr2pzoy1G88Td5\",\n raydium_pool_temp_token_account: \"EdLjP9p2AA7zKWwRPxKx8SKFCJ9awfSxnsPgURX6HuuJ\",\n raydium_pool_withdraw_queue: \"GDZx8SZSYsRKc1WfWfbqR9JaTdBEwHwAMcJuYk2rBm74\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So\",\n quote_token_mint: \"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\",\n farm_key: 35,\n vault_account: \"HubM6Fa48GAy1K1jdW1iRribDGLHzLwNrNUVKWjdP5FU\",\n vault_info_account: \"8sBb3tdVd3X3THPU4mKjkxFoUSAhCV6oyKio6DrqBjQ6\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"6j2mHKx1rSWe4seQbqfD2WksXRg7CaWU2DngNc2Wni8P\",\n pc_reserve_liquidity_fee_receiver: \"4bRQL2hLqfinNJTsiQW6odhYtYjKXH7zsPc2tafadgoj\",\n farm_open_orders: \"FyY8hGm8xEcBMzCbSQtkq1LHsuP2Li5QmY6CQZq4z5gv\",\n farm_base_token_account: \"J6pbJm1nHoB7oubWXzQSKQy8oAf7iCfxNbb7Cngdkmgy\",\n farm_quote_token_account: \"Ako6jjXcsh6qWDJQE9NuyJny2SDQtrDjrSGsgqhTauYE\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"SAMO-RAY\",\n account: \"92JNDv9ZVEizPUn5HHVguc6Gr9t99Eq1VD9TyHzzdZhp\",\n account_nonce: 255,\n serum_market: \"AAfgwhNU5LMjHojes1SFmENNjihQBDKdDDT1jog4NV8w\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"FRtJ6ay36aXdH8SxuqdgojDnHyqk3NegoNGS1mQniPmD\",\n serum_event_queue: \"CFtHmFydRBtw1qsoPZ4LufbdX39LKT9Aw5HzUib9JpiL\",\n serum_market_bids: \"AYEeLrFWhGDRgX9L428SqBU56iVzDSyP3A6Db4VekcjE\",\n serum_market_asks: \"CctHQdpAtxugQNFU7PA4ebb2T5K1ZkwDTvoFrsYrxifY\",\n serum_coin_vault_account: \"BpHuL7HNTJDDGiw4ELpnYQdhTNNgZ53ennhtkQjGawGS\",\n serum_pc_vault_account: \"BzsbZPiwLMJHhSFNVdtGqi9MWKhYijgq34Z6YjYkQJUr\",\n serum_fee_recipient: \"GHiS8bELXS3wGnUM4WcptkstCBrji85k68G2dyGdxjcE\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"HwzkXyX8B45LsaHXwY8su92NoRBS5GQC32HzjQRDqPnr\",\n raydium_amm_id: \"EyDgEU9BdG7m6ZK4bYERxbN4NCJ129WzPtv23dBkfsLg\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"45TD9SmkGoq4hBxBnsQQD2V7pyWK53HkEXz7uNNHpezG\",\n raydium_amm_quantities_or_target_orders: \"Ave8ozwW9iBGL4SpK1tM1RfrQi8CsLUFj4UGdFkWRPRp\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"9RFqA8EbTTqH3ct1fTGiGgqFAg2hziUdtyGgg1w69LJP\",\n raydium_pc_token_account: \"ArAyYYib2X8BTcURYNXKhfoUww2DWkzk67PRPGVpFAuJ\",\n raydium_pool_temp_token_account: \"2pu8zUYpwa9UEPvKkQvZHQUbbTdMg6N2mXi2Vv4DaEJV\",\n raydium_pool_withdraw_queue: \"ASeXk7dri8jz466wCtkCVUYheHFEznX55EMuGivL5WPL\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU\",\n quote_token_mint: \"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\",\n farm_key: 36,\n vault_account: \"AgtFUci2zTkG2pf36Do6kiq6xfyn7jDy7GYhqg2GrVw7\",\n vault_info_account: \"58VWSh3Hh8F6wqSDW7SzXqCFWXaib1NtKR6DXdGE8Qbb\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"HWpe5DkaKfKvzYvGPTg79qMLSoeMWbAQ39ZwcjXWgqVf\",\n pc_reserve_liquidity_fee_receiver: \"4bRQL2hLqfinNJTsiQW6odhYtYjKXH7zsPc2tafadgoj\",\n farm_open_orders: \"EzVHhKq1FAEHr9gyQG1yxFLTRaGSfTd9Wfbrcy4ZXs2Y\",\n farm_base_token_account: \"7TcyghiuC1tCWjsy8Q995WPHqT8AeDdadqjLeBUnCNps\",\n farm_quote_token_account: \"BidarcggyFL9mdDfrFKte4SiiPmuRwsBqTicabhHQF6D\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"SAMO-USDC\",\n account: \"9Ydm2wdKdbKnE3ipp1CxRUAyZQUmLymkeJ6TZh2tWsLS\",\n account_nonce: 254,\n serum_market: \"Epvp7qMYAF21VVjacdB3VfKn6nnXQSF4rGYu8sD6Bkow\",\n solfarm_vault_program: \"FoNqK2xudK7TfKjPFxpzAcTaU2Wwyt81znT4RjJBLFQp\",\n serum_request_queue: \"11111111111111111111111111111111\",\n serum_event_queue: \"11111111111111111111111111111111\",\n serum_market_bids: \"11111111111111111111111111111111\",\n serum_market_asks: \"11111111111111111111111111111111\",\n serum_coin_vault_account: \"7jwHW4Lw3nVaSJXskN5pUoKU6YB9RBVfZtGBp3VbR43U\",\n serum_pc_vault_account: \"G7Gqjxk9EaJMeFfoFTSy9WfH8uurgQkbNQCREWAc56DZ\",\n serum_fee_recipient: \"9U8UF7d8kBvsS25XoZnjmVQ9vGkP4BUnHJgfc615BvG1\",\n serum_dex_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_lp_mint_address: \"6VK1ksrmYGMBWUUZfygGF8tHRGpNxQEWv8pfvzQHdyyc\",\n raydium_amm_id: \"Epvp7qMYAF21VVjacdB3VfKn6nnXQSF4rGYu8sD6Bkow\",\n raydium_amm_authority: \"AB4rTE2JiKFhnfynUQCovbW75CUxT9LxcJX2SDTbY9gy\",\n raydium_amm_open_orders: \"11111111111111111111111111111111\",\n raydium_amm_quantities_or_target_orders: \"11111111111111111111111111111111\",\n raydium_liquidity_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_coin_token_account: \"7jwHW4Lw3nVaSJXskN5pUoKU6YB9RBVfZtGBp3VbR43U\",\n raydium_pc_token_account: \"G7Gqjxk9EaJMeFfoFTSy9WfH8uurgQkbNQCREWAc56DZ\",\n raydium_pool_temp_token_account: \"11111111111111111111111111111111\",\n raydium_pool_withdraw_queue: \"11111111111111111111111111111111\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU\",\n quote_token_mint: \"So11111111111111111111111111111111111111112\",\n farm_key: 37,\n vault_account: \"ECDzEfUgtDKq9dAvdeiiSiW2m4H4AaG5unSJ25dmFgij\",\n vault_info_account: \"11111111111111111111111111111111\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"HWpe5DkaKfKvzYvGPTg79qMLSoeMWbAQ39ZwcjXWgqVf\",\n pc_reserve_liquidity_fee_receiver: \"9GfaYar1r2HrGANq5qNiQnx88HJ7GULQqxXxt2B4U3Zy\",\n farm_open_orders: \"11111111111111111111111111111111\",\n farm_base_token_account: \"DC8qfTA9RrmcNSZiAH9MXXZ9GptgEnSj2frY7EJ1PQDG\",\n farm_quote_token_account: \"HhGNsAMRGNCvPtGARE9F1Kedpz8A5AC6EpP4Tg2Wn42D\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"SRM-USDC\",\n account: \"\",\n account_nonce: 0,\n serum_market: \"ByRys5tuUWDgL73G8JBAEfkdFf8JWBzPBDHsBVQ5vbQA\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"Hr8Z93aWe4hhJbC5i7YTsPaSToziVh3vyMfv9GRqKFCh\",\n serum_event_queue: \"6o44a9xdzKKDNY7Ff2Qb129mktWbsCT4vKJcg2uk41uy\",\n serum_market_bids: \"AuL9JzRJ55MdqzubK4EutJgAumtkuFcRVuPUvTX39pN8\",\n serum_market_asks: \"8Lx9U9wdE3afdqih1mCAXy3unJDfzSaXFqAvoLMjhwoD\",\n serum_coin_vault_account: \"Ecfy8et9Mft9Dkavnuh4mzHMa2KWYUbBTA5oDZNoWu84\",\n serum_pc_vault_account: \"hUgoKy5wjeFbZrXDW4ecr42T4F5Z1Tos31g68s5EHbP\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"9XnZd82j34KxNLgQfz29jGbYdxsYznTWRpvZE3SRE7JG\",\n raydium_amm_id: \"8tzS7SkUZyHPQY7gLqsMCXZ5EDCgjESUHcB17tiR1h3Z\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"GJwrRrNeeQKY2eGzuXGc3KBrBftYbidCYhmA6AZj2Zur\",\n raydium_amm_quantities_or_target_orders: \"26LLpo8rscCpMxyAnJsqhqESPnzjMGiFdmXA4eF2Jrk5\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"zuLDJ5SEe76L3bpFp2Sm9qTTe5vpJL3gdQFT5At5xXG\",\n raydium_pc_token_account: \"4usvfgPDwXBX2ySX11ubTvJ3pvJHbGEW2ytpDGCSv5cw\",\n raydium_pool_temp_token_account: \"2sozAi6zXDUCCkpgG3usphzeCDm4e2jTFngbm5atSdC9\",\n raydium_pool_withdraw_queue: \"7c1VbXTB7Xqx5eQQeUxAu5o6GHPq3P1ByhDsnRRUWYxB\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 38,\n vault_account: \"sEboBJkciTicDmqsGzdhyd7WpMZzXzk7wNnkLMTcVGc\",\n vault_info_account: \"BMKgW73bCdrJ8MiyMBqbvUDipZeouiQLkfCcqu3HVDqu\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"EMwowECdn8hdGf89RuyGL8cbygwa14BN9tLbYDXgMckr\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"BvqhM49iUrKdHo5R5zX3gaG8qz7kidKPBvjDyZGaW9oF\",\n farm_base_token_account: \"A2sAidjZ7m2dnCDLnu4DmPSxzvwjtD7megu2SqdNyfgn\",\n farm_quote_token_account: \"GBTJpXrY8yHH5FgQcLHmfpN7e3t2xTXUiQQ6Z198Mjdq\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"whETH-USDC\",\n account: \"Az18s75gAvj2EuqkcTf8fPJ2vLrSEDrAptKxx4cHVRCi\",\n account_nonce: 251,\n serum_market: \"8Gmi2HhZmwQPVdCwzS7CM66MGstMXPcTVHA7jF19cLZz\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"3ZSxZjD8o8JjPX1HVmQ59ED89R3uKNviRDCEmxCgv9dp\",\n serum_event_queue: \"3z4QQPFdgNSxazqEAzmZD5C5tJWepczimVqWak2ZPY8v\",\n serum_market_bids: \"3nXzH1gYKM1FKdSLHM7GCRG76mhKwyDjwinJxAg8jjx6\",\n serum_market_asks: \"b3L5dvehk48X4mDoKzZUZKA4nXGpPAMFkYxHZmsZ98n\",\n serum_coin_vault_account: \"8cCoWNtgCL7pMapGZ6XQ6NSyD1KC9cosUEs4QgeVq49d\",\n serum_pc_vault_account: \"C7KrymKrLWhCsSjFaUquXU3SYRmgYLRmMjQ4dyQeFiGE\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"3529SBnMCDW3S3xQ52aABbRHo7PcHvpQA4no8J12L5eK\",\n raydium_amm_id: \"EoNrn8iUhwgJySD1pHu8Qxm5gSQqLK3za4m8xzD2RuEb\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"6iwDsRGaQucEcfXX8TgDW1eyTfxLAGrypxdMJ5uqoYcp\",\n raydium_amm_quantities_or_target_orders: \"EGZL5PtEnSHrNmeoQF64wXG6b5oqiTArDvAQuSRyomX5\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"DVWRhoXKCoRbvC5QUeTECRNyUSU1gwUM48dBMDSZ88U\",\n raydium_pc_token_account: \"HftKFJJcUTu6xYcS75cDkm3y8HEkGgutcbGsdREDWdMr\",\n raydium_pool_temp_token_account: \"jYvXX2z6USGtBSgJiPYWM9XZTBoiHJGPRGeQ9AUX98T\",\n raydium_pool_withdraw_queue: \"A443y1KRAvKdK8yLJ9H29mgwuY56FAq1KvJmkcPCn47B\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 39,\n vault_account: \"7Yh9GX2bXjxFjJrGvPCh1YbNuLQXoSDPHLtVBCy3o9ka\",\n vault_info_account: \"Eg57xeD9Fgy7npthsnAx4dtJALzvH7AkK5C88eBhE1ah\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"A4RG7kMBBhCUqu7Mge79m7X4ZYHMQ2CTtv8RzF2PLNMu\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"3NWrbPp9SD8k1GRpdBWcddDBSQKsFetCJ6r2MWPhJ95s\",\n farm_base_token_account: \"6kXbm7yXLn2zfkW2tKQkYRW9sXRNfApKWeWNSx82oDxV\",\n farm_quote_token_account: \"3xzVdxZiQz1gkXXH83ciDitKoxJEGastbuwcGchVWAFw\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"whETH-SOL\",\n account: \"6NdvnCnKANrPsKNT942W7TPBpfKkpDxjbMMALR9KrH7a\",\n account_nonce: 255,\n serum_market: \"7gtMZphDnZre32WfedWnDLhYYWJ2av1CCn1RES5g8QUf\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"ASeQt3EZmBfFNLEHhqBXwkofdoxaLf41ZZZTbioro9oG\",\n serum_event_queue: \"4tMSdiQWSGJbaz4UCdHQpqczxCJfLvBNWtskGbAnFgBz\",\n serum_market_bids: \"4Z6iBaVyCusvALJShz39yDY98jwPn6T1SsKaiLE3k5du\",\n serum_market_asks: \"J6ULjQv2xpifRQQAKNYAtEGapgAsAA7vNhhRU57Law6m\",\n serum_coin_vault_account: \"5F5W8nkQpXnb5ewS2GiUCuWAiamZpzGEMBciwaZ72frr\",\n serum_pc_vault_account: \"CdWhLReMv1A4BJQkogvMwxVVop6agSW22YzQBzKUCS1y\",\n serum_fee_recipient: \"CzDdbXDWQnv9KbgWVm1Viq45ELveqn97UjHKHkWuW43x\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"3hbozt2Por7bcrGod8N7kEeJNMocFFjCJrQR16TQGBrE\",\n raydium_amm_id: \"4yrHms7ekgTBgJg77zJ33TsWrraqHsCXDtuSZqUsuGHb\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"FBU5FSjYeEZTbbLAjPCfkcDKJpAKtHVQUwL6zDgnNGRF\",\n raydium_amm_quantities_or_target_orders: \"2KjKkci5zpGa6orKCu3ov4eFSB2aLR2ZdAYvVnaJxJjd\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"5ushog8nHpHmYVJVfEs3NXqPJpne21sVZNuK3vqm8Gdg\",\n raydium_pc_token_account: \"CWGyCCMC7xmWJZgAynhfAG7vSdYoJcmh27FMwVPsGuq5\",\n raydium_pool_temp_token_account: \"Dfvj9bmde56ZWgxDsrADywZhctejEG2WTbnYa7P5SAhk\",\n raydium_pool_withdraw_queue: \"BzTWSVgYaqHvUcuPZKD4yKTDR2xCDtZFb1bqkwfoPHZJ\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs\",\n quote_token_mint: \"So11111111111111111111111111111111111111112\",\n farm_key: 40,\n vault_account: \"Cut9wFgJTADDuNdyqi6Nbahtjvg1Yh8T1asEYvTQgTtu\",\n vault_info_account: \"4jCYTLg2nxQB979MF1ByEfEqnPivmN8kYTmANm6zuEU5\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"A4RG7kMBBhCUqu7Mge79m7X4ZYHMQ2CTtv8RzF2PLNMu\",\n pc_reserve_liquidity_fee_receiver: \"9GfaYar1r2HrGANq5qNiQnx88HJ7GULQqxXxt2B4U3Zy\",\n farm_open_orders: \"AeBRSfrczdj7qQkdwALsxE3rLjLqFfN5J6kaj38q4Qkq\",\n farm_base_token_account: \"9QGfsk8NybAxtSHR6cVUeqVhRwgsK9QLePfUKC7r1aRh\",\n farm_quote_token_account: \"FFqCHUK1pUjB23GmqrQhzQMbqAciMiQYWnsKVmiA7XJs\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"weUNI-USDC\",\n account: \"GJDeWVQbUeJ2ExQe5ZMVuzNChmrTGZEN6AmSj3pVwcKq\",\n account_nonce: 254,\n serum_market: \"B7b5rjQuqQCuGqmUBWmcCTqaL3Z1462mo4NArqty6QFR\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"6UEf4X2URDQLRZTZF1dztZKbiCgUV4zY5ivoA4Uh9T5d\",\n serum_event_queue: \"CTZuXPjhrLb4PSNSqdsc7xUn8eiRAByfQXoi4HXkPVUe\",\n serum_market_bids: \"2FafQRbcuh7sE9iPgWU7ccs5WNsSyih9rXCTZn4Bv3t2\",\n serum_market_asks: \"HJMohwcR3WUVFj9whhogSpBYzqKBjHyLcXHecArwgUEN\",\n serum_coin_vault_account: \"4c4EMg5rPDx4quJdo3tL1uvQVpnoLLPKzMDn224NtER7\",\n serum_pc_vault_account: \"8MCzvWSskaoJpcXNVMui9GfzYMaMBQKPvE9GpqVZWtxq\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"EEC4QnT41py39QaYnzQnoYQEtDUDNa6Se8SBDgfPSN2a\",\n raydium_amm_id: \"8J5fa8WBGaDSv8AUpgtqdh9HM5AZuSf2ijvSkKoaCXCi\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"4s8QacM13Z9Vf9en2DyM3EhKbekwnmYQTvd2RDjWAsee\",\n raydium_amm_quantities_or_target_orders: \"FDNvqhZiUkWwo95Q21gNimdqFQDJb5nqqttPT5uCUmBe\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"B5S6r6DBFgB8nxa8P7FnTwps7NAiTsFbiM6Xo7KrGtxP\",\n raydium_pc_token_account: \"DBd8RZyBi3rdrpbXxXdcmWuTTrfkA5vfPh9HDLo1cHS\",\n raydium_pool_temp_token_account: \"9qHe2MC69BTwZY2GBJusz1rgMARsJAd6WvRu7cCYczjg\",\n raydium_pool_withdraw_queue: \"CsPmj2rcDNQF85Q1bvWbieNkymtEHqyo7aXHmwHNiEKQ\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"8FU95xFJhUUkyyCLU13HSzDLs7oC4QZdXQHL6SCeab36\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 42,\n vault_account: \"NDwLeteyAbtijvc8eRNijpHuvyzTR4Dg167Y2bScyp4\",\n vault_info_account: \"DPud8kUTXqNSehqc3UQVWpNWYs6gDABCrQDm5b7jZhrR\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"GzSqPWwjXyssJ7wVtMgxX6NvYKJJkjf589KQJwQz2BRb\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"DLjL9uG3Kfc3xQrRxymhk8rhRTWWmdVS44PD82CdtBTx\",\n farm_base_token_account: \"2nv4icQSr8ox364UbigBdstJqjUc9WrG1YsNa94E7Vbv\",\n farm_quote_token_account: \"aokmJDHBNF5xnsfPQCkyGZt1WDsQvkwwckBPvCuTepm\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"weSUSHI-USDC\",\n account: \"3bDBhYVKxDkpu4ETvQRZyGKFqVEa4PgoiBL7U1gk4jM1\",\n account_nonce: 254,\n serum_market: \"3uWVMWu7cwMnYMAAdtsZNwaaqeeeZHARGZwcExnQiFay\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"HAFHeu9rSMPhELsNjAPNiGUWfiVRYzpqwPSCVJEZbrW6\",\n serum_event_queue: \"EiA2FLSrSJkJEGZg79eJkrAz7wtaB3jHDiXvQ4v5hZyA\",\n serum_market_bids: \"HtAQ6zXqg53WKTHoPNz6Y6nfy2vpRvaFFif13y9wWQzo\",\n serum_market_asks: \"CyMeznxwdK1vVLB8yrq1MpwZpmQ43UipnqhahrwHNj5r\",\n serum_coin_vault_account: \"2DiofKbhznosm6ngnVXZY9r6j3WypkK6PXZu4XVhrUwS\",\n serum_pc_vault_account: \"FwRAP48S9kwXFgiBDHU4NvuGkFnqctXEurgLFZFqdt2Z\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"3wVrtQZsiDNp5yTPyfEzQHPU6iuJoMmpnWg6CTt4V8sR\",\n raydium_amm_id: \"9SWy6nbSVZ44XuixEvHpona663pZPpVgzXQ3N7muG4ou\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"4dDzSb5sVQuQU7JpiELNLukEUVYoTNyhwrfTd59L3HTK\",\n raydium_amm_quantities_or_target_orders: \"4soQgpB1MhYjnD2cbo3aRinZh9muAAgBhTk6gLYSG4hM\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"CTTAtNw3TPxMhZVcrxHPjbyqEfYS7ShAf6KafC4xeJj\",\n raydium_pc_token_account: \"EPav47MmuNRnHdiRSNpRZq9fPAvpvGb81mWfQ4TMc4VQ\",\n raydium_pool_temp_token_account: \"EwFVC9RA6WRBpqPjTxRmw6iYVtCGd7JoSi5MECvc3vE9\",\n raydium_pool_withdraw_queue: \"4DwCSyerQnxtiHc2koWWxpz31KjQdmLFe8ywWwrVkwEq\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"ChVzxWRmrTeSgwd3Ui3UumcN8KX7VK3WaD4KGeSKpypj\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 41,\n vault_account: \"D1AHVWKFRZBEt7jWjx13xAgTA2wxQ7CXieUVjAE6f2ML\",\n vault_info_account: \"2EeboYUWzhbpxKAo2ym7UhfVL5BX9hAYTwFMhraSkfUd\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"7DgrGVCFVLoNVqQXwYhHfR5uA8TS6TiHcKNEXPdG1re8\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"4tseB6nrbz7XtqqTBeAqWxDFDxGt742SQCcRP6N9H8bM\",\n farm_base_token_account: \"3MDxDfanRYL9JNu18bsbwdMgHqQAqxyPqYGqbHE5JkzV\",\n farm_quote_token_account: \"Aqz1KZqYnyqHq4RFyWGiX7cfsLwLDYBSPXgJvxAtC544\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"STARS-USDC\",\n account: \"5KjKe4DdNadbYB3vf2fsQcnWoS7Avu9bCeJ89wA6ALnX\",\n account_nonce: 253,\n serum_market: \"DvLrUbE8THQytBCe3xrpbYadNRUfUT7SVCm677Nhrmby\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"2m3DtEfhyiTvQ3H8aoFmo24SvGUy4f8K8GJzhnu6ek9h\",\n serum_event_queue: \"D1hpxetuGzfz2mSf3US6F7QHjmmA3A5Q1EUJ3Qk5E1ZG\",\n serum_market_bids: \"9Nvw43fQ4vNfdJgajMC4JUpLGGTiia1vGYEM7SbfaWei\",\n serum_market_asks: \"CnVNbSQcVNQjGA4fdBtSrzDyFNXAHuBhcMnZsQBpEHo5\",\n serum_coin_vault_account: \"AzhvXGjqJtDW4ieSYVje3zxL14TP1pGJv6uULR2F86uR\",\n serum_pc_vault_account: \"8SrtqysGeiKkXWMGMgee9frWbGdhXZr9gWHh2VKRnvkZ\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"FJ68q7NChhETcGVdinMbM2FF1Cy79dpmUi6HC83K55Hv\",\n raydium_amm_id: \"CWQVga1qUbpZXjrWQRj6U6tmL3HhrFiAT11VYnB8d3CF\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"D3bJNYcUhza55mdGFTAUi4CLE12f54qzMcPmawoBCNLc\",\n raydium_amm_quantities_or_target_orders: \"FNjcSQ7VB7ULoSU7BDTotiRDmqiQj7CvVxHALnYC5JGP\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"5NtsnqVNXGmxs6zEU73W2RaFh4e58gqdWrxMvzcqNxGk\",\n raydium_pc_token_account: \"MZihwPviJgm5WjHDmh6c5pq1tTipuZnHFN3KBg63Mtj\",\n raydium_pool_temp_token_account: \"8vLEHvkCEdAj4YPGbfrcTKHccaEJQwuY32WunJWzyuZx\",\n raydium_pool_withdraw_queue: \"5NRhJQS8m4pgc8Lgo1kuqHJrU8JAeToriPvpJ4LY88uH\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"HCgybxq5Upy8Mccihrp7EsmwwFqYZtrHrsmsKwtGXLgW\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 43,\n vault_account: \"54mVgifTiS2yfRSn4LQGHMcqXrHYx6SXPsCcHb2M4txo\",\n vault_info_account: \"7i2dVZAEQ5ZgcZ3uyoFZqFac7XGuNAmB5bZV8RzH45Qt\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"E6RNDzy4FauDxr1p9Dsg7NFLv1jGkPNEKkTGvEYX8hi9\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"CVVwrEM7ew8m4rwdXi49WbGTpkQYWur3EMRyfrCHpn7V\",\n farm_base_token_account: \"69qD3KQKeFM6DuuHUGzokLqF5f1my6hFteHJkAChtoof\",\n farm_quote_token_account: \"CrvedzmDazyV6arYRDfk2ZfTwNjWfv827aSfaLWEsypL\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"weDYDX-USDC\",\n account: \"2ABHnnbRRNvyrzukV4dtbQhwJnYbAX5MJvpXNGQ8qgJq\",\n account_nonce: 255,\n serum_market: \"GNmTGd6iQvQApXgsyvHepDpCnvdRPiWzRr8kzFEMMNKN\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"FfakdzqCSWo6scYREF3rSm4uqQaFAVoA6M22D3fuaAXZ\",\n serum_event_queue: \"4GX63nbB8SHwDeDpuSKacfch1ANTLp4zn8ivkcTjCnEn\",\n serum_market_bids: \"89Ux1PrzAVv5tejtCQhfs5tqEfQdb3WQsfY6f7BzQtsN\",\n serum_market_asks: \"36eRuVT8kyWq1UbZeYf66q5EhUpNP2Kq8TgffyVbHEzF\",\n serum_coin_vault_account: \"CXxN6hGatd5nK7uPwxvxHYmqvM4b88eKb9fcHapRhtda\",\n serum_pc_vault_account: \"NMWKX4jfzkKvRBYkcvurus8aofaHZ8MwMNYqudztWZh\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"BjkkMZnnzmgLqzGErzDbkk15ozv48iVKQuunpeM2Hqnk\",\n raydium_amm_id: \"CbGQojcizFEHn3woL7NPu3P9BLL1SWz5a8zkL9gks24q\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"75hTsLMn57111C8JwG9uqrkw6iZsFtyU8CYQYSzM2CY8\",\n raydium_amm_quantities_or_target_orders: \"3pbY7NyETK3UBG1yvaFjqeYPLXMd2wHgcZVJi9LZVdx1\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"45pPLPHYUJ7ainr9eqPzdKcWJSbGuoUwcMcMamAXgcCX\",\n raydium_pc_token_account: \"7aE4zihDvU58Uua8W82Q2u915rKqzpmpWPxZSDdeXrwu\",\n raydium_pool_temp_token_account: \"DBmenZarP1WQx9uvrKQQj3pNfhmNanZ9ns5tpMYpDcyJ\",\n raydium_pool_withdraw_queue: \"2r8yHQGdydgngeTXdqsM2P2ZWVmwRAe3Kq3MLTCQPpHD\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"4Hx6Bj56eGyw8EJrrheM6LBQAvVYRikYCWsALeTrwyRU\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 44,\n vault_account: \"HoVq5LcHv3TMVCEVJQrobgAQSWwyH5btZAJsR8fU1rCH\",\n vault_info_account: \"H7S55FY5QWEy68wpuRPjwK1L7dB65mGwYhKz4rP9EmWu\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"UsNuAp58e48ohXynJyVF7EBbaZyzgCfzrgknHoAGbRL\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"8xFrrDVHEZ4mLkSSzmr7FpdnVYyFmYwJKa58hCLow7u5\",\n farm_base_token_account: \"CfvMiVWmTp4nwRjzWVr3GooCWj6qryoo8C1nXhzhH7kp\",\n farm_quote_token_account: \"BMdFMo7fqwUty5HuBHyXnpZprUrNyun6m1FHXdqpnfsP\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"GENE-USDC\",\n account: \"EK8mfHEbdtXcaN23Qa5GnZfEkVFrGvpzKHVF6ykMnNyj\",\n account_nonce: 254,\n serum_market: \"FwZ2GLyNNrFqXrmR8Sdkm9DQ61YnQmxS6oobeH3rrLUM\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"27Fx6qBKTHefLfDdTPG8hYqsGnZ1ktxVpaZcv1Y2mhQ1\",\n serum_event_queue: \"7MQzBut5taNSxbusoBnuuLB6Bmnfo6wm1Ukze5B13Uxd\",\n serum_market_bids: \"CQvBaGPpjn9aSM5VJYmXSxjrqG79aqF8wPAbuCSWhPtz\",\n serum_market_asks: \"5R4k5QNxtN1zcAiCHR4h1FmmBdpajvF6EeR3kuoMYbu9\",\n serum_coin_vault_account: \"AjKhS74QWgcatcJvHDS3fdCJq8BdAsrHxzcoNyT738Hy\",\n serum_pc_vault_account: \"3xtHLByKqJzyvu3TbtDW8cnzJTbdRLKRjihWo1fVM5Fp\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"7GKvfHEXenNiWYbJBKae89mdaMPr5gGMYwZmyC8gBNVG\",\n raydium_amm_id: \"Enq8vJucRbkzKA1i1PahJNhMyUTzoVL5Cs8n5rC3NLGn\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"7dcfFNqaGnHrUB1bg1mEbvJsvsvfn7oamkpjDdt7ykUm\",\n raydium_amm_quantities_or_target_orders: \"FrJ5aM3Vi1DyxNfSbqq4vPYX3S9kH9foWMjqHjHGQq3E\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"6yxszHV62pCjHtGijwgroqRXGVLuoiHUFhcEoHQepB91\",\n raydium_pc_token_account: \"6AovHvG7UovcavaJW6rEef728JtFV5adZ9MaNRBcX2nH\",\n raydium_pool_temp_token_account: \"7uNG8iCJNjN7xRDXAvb1afGAvd6GQitQ7K7chhTy43w5\",\n raydium_pool_withdraw_queue: \"J6YMSZfmy68QLH4R5gv5wasyF3pTVBF5CgkY6WaNwaBD\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"GENEtH5amGSi8kHAtQoezp1XEXwZJ8vcuePYnXdKrMYz\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 45,\n vault_account: \"Gky9Y8F5rgF4pcBypwX6Aoe8Zrw9hiRWGDrDhg2zaUu2\",\n vault_info_account: \"BowkGmh5oZcNCBVeYbnKxwfamBBd7iHMUdPWYaPNWke\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"8wvpmoz7qQTVt9FUCdDKqmqwvrEZcK1AXr2VjaXW9FRB\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"HHymfsJUQoHD1JYkBU3NCbJwgdfqot9RWMWdJUFb9tgQ\",\n farm_base_token_account: \"4vxLYn7xkwM7Fhc2FSmqnYMretVcnuerDvtK35rUC8ur\",\n farm_quote_token_account: \"5vYcdw5Esfz8kZPR1Hmp3YCKffgMGeKe7gJ9WqtASray\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"GENE-RAY\",\n account: \"7b49cBuDS5JSyrtYWzpscRJ8BdX5jyq41cAfPdTXFwCV\",\n account_nonce: 255,\n serum_market: \"DpFKTy69uZv2G6KW7b117axwQRSztH5g4gUtBPZ9fCS7\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"5EcPMXpbx1Gmph8Y7e3bVc1xcfj8pbVoyJvJKBdXjFU7\",\n serum_event_queue: \"CTe9iXRYZJ35xss1KsiFXJHS9w8638H7RKwt9WUdtznq\",\n serum_market_bids: \"DntegVqu4W73GAywDMnNNZv1RhzMnvg2ZG1SpEXiZCjb\",\n serum_market_asks: \"CfTMiXZnDvVEyBAoXrNhf2mNBRJ5WCQh4JEwHXMoxh7o\",\n serum_coin_vault_account: \"53zLrENukPYyMTgHtgLaPaSVUB15YphguocAC4b5nFbK\",\n serum_pc_vault_account: \"4ZTZ5khpqH4jBELchj4g8kcDZUcpuyWmMkj6ajycwGRu\",\n serum_fee_recipient: \"GHiS8bELXS3wGnUM4WcptkstCBrji85k68G2dyGdxjcE\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"3HzXnc1qZ8mGqun18Ck3KA616XnZNqF1RWbgYE2nGRMA\",\n raydium_amm_id: \"8FrCybrh7UFznP1hVHg8kXZ8bhii37c7BGzmjkdcsGJp\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"3qTqthYwuZKNQKruWJRGnubfXHU4MyGnvmoJcCbhELmn\",\n raydium_amm_quantities_or_target_orders: \"HwwQ3v5x3AdLopGFdQYZmwK7D5YURpFoDJcrbuZDsMHm\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"FMxYRoHA3Xn4Su62GCwofmdALGdn4s16S5ZA4C91ULbX\",\n raydium_pc_token_account: \"3h7PhXbCAGvtQHqwTS2V3Mhc3fK8E5Hs8EbgCVHkQFwd\",\n raydium_pool_temp_token_account: \"CJbRPzdxPXEbyfM4YKinhojgmJv6yjcwaWpgvFYL4umz\",\n raydium_pool_withdraw_queue: \"HW7QPs33Fzw9uME7gqs8DRuvbdP24WFc8jfpBQaqdi5C\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"GENEtH5amGSi8kHAtQoezp1XEXwZJ8vcuePYnXdKrMYz\",\n quote_token_mint: \"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\",\n farm_key: 46,\n vault_account: \"6yZxgmyVVxshjGzPsLScnAdEL6P6j4NG6qzPp4jqRofy\",\n vault_info_account: \"37ddXWj99mYCtrMNmH1tZjuw4RwpYahjCDPYgqFsAYuU\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"8wvpmoz7qQTVt9FUCdDKqmqwvrEZcK1AXr2VjaXW9FRB\",\n pc_reserve_liquidity_fee_receiver: \"4bRQL2hLqfinNJTsiQW6odhYtYjKXH7zsPc2tafadgoj\",\n farm_open_orders: \"tEHXPUnHEUb8eB5AocwvgmSNEkSrf6h1SKPV1Ny323X\",\n farm_base_token_account: \"ApzcrgbVE7mE91UmCqtWpnt7AR8424C2wzLu1AZSUivC\",\n farm_quote_token_account: \"EJhxC4FvmMmcDtVBENDpY4xRJ7bAuwPgakvu5UmSZJCg\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"DFL-USDC\",\n account: \"49efTLy2k6RMGUPiCVzvCwcZSTypjdzgNt9oZPKTNV1d\",\n account_nonce: 255,\n serum_market: \"9UBuWgKN8ZYXcZWN67Spfp3Yp67DKBq1t31WLrVrPjTR\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"AoQgK28c92fR5SQuzYK8gmCB3MJRRYngYnVe4dQqFD1i\",\n serum_event_queue: \"9U9u5GLjbNNYaqECQATcMAuETbnh2QGjpJJVGoFxjLfm\",\n serum_market_bids: \"xNgA2EugkNq9M9yZeshGSbP7Epy85p8NHhrwkffYyAY\",\n serum_market_asks: \"CcCDWuH5zW9577wtoMVUZU6PXoT5ZhiL5dadDo4124c5\",\n serum_coin_vault_account: \"CvCsGEAe3Lxwo7zQ5Acqd34jjpS1iFWKp9h9Vt2KExpj\",\n serum_pc_vault_account: \"EGiCYaiiL65yx8uHkQKAmCv8U1fuDN4su6pSdsL3tQqB\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"Fffijd6UVJdQeLVXhenS8YcsnMUdWJqpbBeH42LFkXgS\",\n raydium_amm_id: \"8GJdzPuEBPP3BHJpcspBcfpRZV4moZMFwhTAuXebaPL8\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"zZgp9gm6MCFSvub491ncJQ78zRF4WymJErhy2cR7nnU\",\n raydium_amm_quantities_or_target_orders: \"GKo4P3uofE47wug87QE6QGSRHa8wBLDEiW4nXEWeDUb4\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"GteHVo2oJUJC2tFYe1QHS7MyasCVooPJdHfxwdF6hPZ2\",\n raydium_pc_token_account: \"FHqPtKCB2w9C94oupinMgykxuzjF6pQRVaBVNzqemXc7\",\n raydium_pool_temp_token_account: \"6eXLVRMNEVFF7adfkbAQni537VrbPpR8LE3PEXbWxS67\",\n raydium_pool_withdraw_queue: \"495s2Vr8PPXofHsJtkvazG77qNUHrhEpS86XkiFrTQgp\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"DFL1zNkaGPWm1BqAVqRjCZvHmwTFrEaJtbzJWgseoNJh\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 47,\n vault_account: \"5TvsqP5DQEJPqP3atsw337uPDcrGJnTLC3vsxTADQGgi\",\n vault_info_account: \"9gGRzRg9PGr5VhGuphufjM5mvkpT8NnUiaZy9bDVk67G\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"ECR33vhDDerYAb4vU8FF5P4G55oAPLNnh6YPp3zmk77w\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"Dgt8HZpEVZ21udQuAgie4AF2pYZKfAXQjBV2tbMqQ3pr\",\n farm_base_token_account: \"EkqPru29MherbKdK1YHvf69wTy9qV64pAoQrrm4ErLGR\",\n farm_quote_token_account: \"EYnM55iT94pNjC7qaVD3xYmZHhWUccYLk2Crz2Xa19rg\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"CAVE-USDC\",\n account: \"CxJsm8wkX7Hz3UyS7oop63kQndTTFkPMroaseY6qup7c\",\n account_nonce: 253,\n serum_market: \"KrGK6ZHyE7Nt35D7GqAKJYAYUPUysGtVBgTXsJuAxMT\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"2j25oABaFdH96AxBhhCEcJtrd7Swr2B6rtWw3ZHfn5B7\",\n serum_event_queue: \"D6PsDqCb5BbAhXfaLA9AtYz8SHLCUtdQSmozu7T4JGJe\",\n serum_market_bids: \"73yb9Y8cZfxX8KV96dMXVp5tTfu4FVjPc9LchtrzEdUu\",\n serum_market_asks: \"3sYKt1KYtB2Ycnf6jzNvnji8wUCWbsu9ZcA4DboiU1FH\",\n serum_coin_vault_account: \"2ZzE1FQixLYqw94htVYn99kSH1LE35De3d8XeWPnypte\",\n serum_pc_vault_account: \"8oVmJ6vT6kMfWyRETDjuo4nAZZZC3KSNZBjsHzEDQDLD\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"5Gba1k3fU7Vh7UtAiBmie9vhQNNq1JfEwgn1DPGZ7NKQ\",\n raydium_amm_id: \"2PfKnjEfoUoVDbDS1YwvZ8HuPGBCpN831mnTuqTAJZjH\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"ECG1LTHELj27wyKVz4DPCKdFB8mthqEwbnPeuUzkgz2H\",\n raydium_amm_quantities_or_target_orders: \"H4vuXiWxuKLec3TLrZk3QgJMsLH4Y2L6E9LosnefFMyR\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"B1SCcyk4AqQcn6RY7Qjqj8rE53DDZ7N2eiqtMNcmfZxa\",\n raydium_pc_token_account: \"2HUjTaYw3mmU6kRA3ZfC4MGSzUhr2H6ZUQCWWdrfwUB6\",\n raydium_pool_temp_token_account: \"BNfk8c5CYcA7Cyg6iRNTBRwhEuhKARLD8toBzdxtmRJt\",\n raydium_pool_withdraw_queue: \"83z9iqzrGv3ZF1aQ14i4cfLGLJ2yH2uBByMQe2347EjB\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"4SZjjNABoqhbd4hnapbvoEPEqT8mnNkfbEoAwALf1V8t\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 48,\n vault_account: \"ApzURY9RNAanfBszeGH3PEGW2Dg3WRfysKEt7xVe2Xx\",\n vault_info_account: \"3JMUsWwauTP5obAiUy36e9u1Q4YmfJcWpP8SXuay6AVe\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"AbdiCWj6Di7b9AWSwxTJUMs8BnFUuvnRZEtuUarUMix\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"6BA5yHNVUpmpakExvrzzYcVd5G3SokKDCc98i1x3JSaE\",\n farm_base_token_account: \"9p6iSJRbdNQ8qUWURddg7xPo5rhoUP96YQSqEyVaHpNm\",\n farm_quote_token_account: \"Ai4jXBycowjU7Jyx3WUjWY2Ynuj4X7XMeTbgKitEUYzM\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"wbWBNB-USDC\",\n account: \"2QVbavLx6uFDS7sRDDCtixM4pLFjJ1j4QQRD9XNgRmby\",\n account_nonce: 254,\n serum_market: \"3zzTxtDCt9PimwzGrgWJEbxZfSLetDMkdYegPanGNpMf\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"C48QoRNkgqR11WaKUPycpF9XYqJSHQLRvcZNt3VGCiBX\",\n serum_event_queue: \"ZYhSiaFWkuNTBzRFM9UPJXwHPyTGbujCKvPXhbssYPG\",\n serum_market_bids: \"8JJrdQEzMSoekpzy7qcYDs1hVJyWoRcfTHR2pGDgd7wy\",\n serum_market_asks: \"A3TmGhemkp8u8d5HCLMyiBByvwDtp7khv9Vt3p1cqH8c\",\n serum_coin_vault_account: \"D77WaGjvSLwk6d3xdK9aEU3R7G5UKvqHrNAXmkHxjgh4\",\n serum_pc_vault_account: \"BwT7GkbKaQQqSCGwUjhtktYf6kjLvKLJsQA2j11jEAni\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"FEsEfEJJSfiMQcshUgZ5UigfytfGRQ3z5puyF6DXDp9C\",\n raydium_amm_id: \"Fb1WR1kYvG1tHu4pwAxXQpdKT8Grh9i7ES9rZusLg7D6\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"3AoL7SCi9ZKBAGoCdRvHwH3DMKD3WAv2Dpev4BkX3dYj\",\n raydium_amm_quantities_or_target_orders: \"Hh1zHYam85KshQPkMf3YSDy7bD6fDuEa5WWjp7P35dqu\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"2WtQHGAMAhMsj3mR2wSPcUR7yZhYhuNwRZBxVPKcrCyb\",\n raydium_pc_token_account: \"4vrVEysPFSoS5YcZQwRUam8CbVgZehQdBVQ8yYbmkQSw\",\n raydium_pool_temp_token_account: \"J9dA4g4JXprDMgqhC6vWyCk8pTPoYQtECK6krratyHpz\",\n raydium_pool_withdraw_queue: \"C8PrYX1SCwgpZQbDyUtGPYcSHkvJmxTB3QpHPjih4JRX\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"9gP2kCy3wA1ctvYWQk75guqXuHfrEomqydHLtcTCqiLa\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 49,\n vault_account: \"9iYjLDq45RgbxCkiGtHJvmvQtjdsibotukT3wcB1eqm7\",\n vault_info_account: \"4Tdvsx3UK1YRLK5gcZSW7oy68Cj6HWggA9y5PXgdUYW7\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"HBw1tn17wUEDf1EXztKWg3bhaan4TsFaY6Quh4gCKxQZ\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"7PDxduQfRJ8TmDG5w6q1mr74otNbYMFaeTaLwLRS7yMW\",\n farm_base_token_account: \"5EF1LWNrBJ5PEfRByJdkRNhbAfKP8tcB51XnnejAdjys\",\n farm_quote_token_account: \"Buvny4A8bgWRpAPFg5zUca57HbFwWJbBew56wXztANU1\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"SOL-USDC-RAY\",\n account: \"EpAAqa5Q8uYkP6jpREPvwGPsdPh8rmKvZyJKNq7YiMYA\",\n account_nonce: 255,\n serum_market: \"9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusDBzvT\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"AZG3tFCFtiCqEwyardENBQNpHqxgzbMw8uKeZEw2nRG5\",\n serum_event_queue: \"5KKsLVU6TcbVDK4BS6K1DGDxnh4Q9xjYJ8XaDCG5t8ht\",\n serum_market_bids: \"14ivtgssEBoBjuZJtSAPKYgpUK7DmnSwuPMqJoVTSgKJ\",\n serum_market_asks: \"CEQdAFKdycHugujQg9k2wbmxjcpdYZyVLfV9WerTnafJ\",\n serum_coin_vault_account: \"36c6YqAwyGKQG66XEp2dJc5JqjaBNv7sVghEtJv4c7u6\",\n serum_pc_vault_account: \"8CFo8bL8mZQK8abbFyypFMwEDd8tVJjHTTojMLgQTUSZ\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"8HoQnePLqPj4M7PUDzfw8e3Ymdwgc7NLGnaTUapubyvu\",\n raydium_amm_id: \"58oQChx4yWmvKdwLLZzBi4ChoCc2fqCUWBkwMihLYQo2\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"HRk9CMrpq7Jn9sh7mzxE8CChHG8dneX9p475QKz4Fsfc\",\n raydium_amm_quantities_or_target_orders: \"CZza3Ej4Mc58MnxWA385itCC9jCo3L1D7zc3LKy1bZMR\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"DQyrAcCrDXQ7NeoqGgDCZwBvWDcYmFCjSb9JtteuvPpz\",\n raydium_pc_token_account: \"HLmqeL62xR1QoZ1HKKbXRrdN1p3phKpxRMb2VVopvBBz\",\n raydium_pool_temp_token_account: \"Awpt6N7ZYPBa4vG4BQNFhFxDj4sxExAA9rpBAoBw2uok\",\n raydium_pool_withdraw_queue: \"G7xeGGLevkRwB5f44QNgQtrPKBdMfkT6ZZwpS9xcC97n\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"So11111111111111111111111111111111111111112\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 50,\n vault_account: \"91M42pKURwf4VQHACzx1VFZ8PGZgW2RDwPkwbBk8peGU\",\n vault_info_account: \"HB1FUY2CkPC9W4xrc8FLEbzTwqo23ErBRGuLwoaoAdYW\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"9GfaYar1r2HrGANq5qNiQnx88HJ7GULQqxXxt2B4U3Zy\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"5XAxLutApKRQ9WTtRNPpRq2btQkqF94Ezsh2mAQ7uqhR\",\n farm_base_token_account: \"3HHbo1CWtnrLVjcnEhGPjhguG7D2p91pxKAf12WeTj8t\",\n farm_quote_token_account: \"52AXPLa2k2eDL9i4mwhPFdEC765HsJFKDGJKhYTCRxWj\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"SOL-USDT-RAY\",\n account: \"GUsLxD2hPorjDsoRNBip38rwfcVqSNbicz6XBi7Gnc3L\",\n account_nonce: 255,\n serum_market: \"HWHvQhFmJB3NUcu1aihKmrKegfVxBEHzwVX6yZCKEsi1\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"GKrA1P2XVfpfZbpXaFcd2LNp7PfpnXZCbUusuFXQjfE9\",\n serum_event_queue: \"GR363LDmwe25NZQMGtD2uvsiX66FzYByeQLcNFr596FK\",\n serum_market_bids: \"2juozaawVqhQHfYZ9HNcs66sPatFHSHeKG5LsTbrS2Dn\",\n serum_market_asks: \"ANXcuziKhxusxtthGxPxywY7FLRtmmCwFWDmU5eBDLdH\",\n serum_coin_vault_account: \"29cTsXahEoEBwbHwVc59jToybFpagbBMV6Lh45pWEmiK\",\n serum_pc_vault_account: \"EJwyNJJPbHH4pboWQf1NxegoypuY48umbfkhyfPew4E\",\n serum_fee_recipient: \"F2szJdBzeiYNb45Ysd8ufsjdh8csEbXv1HaTrG4Tyv2R\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"Epm4KfTj4DMrvqn6Bwg2Tr2N8vhQuNbuK8bESFp4k33K\",\n raydium_amm_id: \"7XawhbbxtsRcQA8KTkHT9f9nc6d69UwqCDh6U5EEbEmX\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"4NJVwEAoudfSvU5kdxKm5DsQe4AAqG6XxpZcNdQVinS4\",\n raydium_amm_quantities_or_target_orders: \"9x4knb3nuNAzxsV7YFuGLgnYqKArGemY54r2vFExM1dp\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"876Z9waBygfzUrwwKFfnRcc7cfY4EQf6Kz1w7GRgbVYW\",\n raydium_pc_token_account: \"CB86HtaqpXbNWbq67L18y5x2RhqoJ6smb7xHUcyWdQAQ\",\n raydium_pool_temp_token_account: \"2JKZRQc92TaH3fgTcUZyxfD7k7V7BMqhF24eussPtkwh\",\n raydium_pool_withdraw_queue: \"52AfgxYPTGruUA9XyE8eF46hdR6gMQiA6ShVoMMsC6jQ\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"So11111111111111111111111111111111111111112\",\n quote_token_mint: \"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\",\n farm_key: 51,\n vault_account: \"CuGdRkbBbHrHEMt7b8RSqTyuW8wkXqMtLGdmopdmWENm\",\n vault_info_account: \"GUkBo8tR5CZL64jasRo4PzugvQLRdPLvsjrV8peqPLZR\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"9GfaYar1r2HrGANq5qNiQnx88HJ7GULQqxXxt2B4U3Zy\",\n pc_reserve_liquidity_fee_receiver: \"3VQV6yjMUXaTcR6KCvZSAgEKkvZUVEQnNdyEREPbjj31\",\n farm_open_orders: \"AzpP8yffTvuh79mwXGosPWXaiwFm3SmEs6mo87kTYeub\",\n farm_base_token_account: \"2CcvsyRQiALZ3VD2mWCRQrdEbv8diNWuYJN2QhhfkpN2\",\n farm_quote_token_account: \"5svZqB7SMYP6xguAMkEyzi9QKewpZfn8vxVU4beAJYTs\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"REAL-USDC\",\n account: \"DvXuMzKDR1MV8gV2VYxNP16HDJHvdAtf6DsvAUYvQTUX\",\n account_nonce: 255,\n serum_market: \"AU8VGwd4NGRbcMz9LT6Fu2LP69LPAbWUJ6gEfEgeYM33\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"6nfSAdhiuGjr4eeYbHnA6tCVG6DupwhNMmJh861mtPQB\",\n serum_event_queue: \"Bii4W3FfohnHhGUDa1mA8TH82FMEQeYk48BB3zJNcfSQ\",\n serum_market_bids: \"G1K2p1C3S4SgwnFw4A4fEbmFoshAHtLmpQCdFz7BiYaD\",\n serum_market_asks: \"ESw6KKnLP3nRGtF1sgwc6EdoY5wWawkTWwa5zEjgDkHu\",\n serum_coin_vault_account: \"3VnrHq1JWSD4DRdT1TAW4qG7nBVUFSh8mVRnkCtzV4Ry\",\n serum_pc_vault_account: \"6mSGzi7P2mM4tE6hkEsjXfZ4zR2LjctrNA3DwBvULrJU\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"EN43tp8xdkcM8RYSJ4msFHMPTJRXKhUteVYBDJLwTvr3\",\n raydium_amm_id: \"A7ZxDrK9LSkVXhfRTu2pRCinwYfdxW2kK6DaJk12jRWw\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"E1sVmUNF4iHXLLz4yQqYufzrmzvm9aCF6NPR5C328Dzo\",\n raydium_amm_quantities_or_target_orders: \"9zHNsBf6kySxnPuX75muu6gm8STUWkyGjZ4od5HPmJBd\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"ByU8cczVRmBw3TxdKD8WUHNZgpwDPZ9ZgHTdreeTV5oX\",\n raydium_pc_token_account: \"7GYr4FqaDsC6vUoL4nN8EfRUe1aoxbdv22jr4diurJ8C\",\n raydium_pool_temp_token_account: \"7JWNRx2fhWthFePZtfSx3v2eDYb2xuqGDGg8ZabjPtAw\",\n raydium_pool_withdraw_queue: \"F5fCEgeh9zCKkQgN6jKnxgeMXMoSWuLhX1HW9nUmZw9Y\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"AD27ov5fVU2XzwsbvnFvb1JpCBaCB5dRXrczV9CqSVGb\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 52,\n vault_account: \"654eafNDAWhaaKe9kZ6SvHQSwBvMuSAC63wPoEzxaziQ\",\n vault_info_account: \"rPuJpc5iaZs91JUc5isSaq9XZVxVsXbf7WYgJ9GJuDx\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"FN1nJSWYMf2Gzjy4KtjBQLzPe9xnScNdXgH8H9BBGtu3\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"CERTY5trAPdFEcK1QnB98aXcpEQJsCCnhnPdkve7BEnK\",\n farm_base_token_account: \"De1euW5FVjV1DkA3KTipopFtC23BzPNPPHstsvKV8ApK\",\n farm_quote_token_account: \"DrHhKkcVv4UB1Nn4d3iHS4FUnzEii6qYK42aA4Nt6Tf2\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"MBS-USDC\",\n account: \"3bQrePoZL5z4viPHojwSTJyqmef8pPfdVxTPJLuPMsha\",\n account_nonce: 255,\n serum_market: \"9sUSmgx78tt692hzwiRdBdfwjxPF6nsYeJfPCrTz6vxm\",\n solfarm_vault_program: \"7vxeyaXGLqcp66fFShqUdHxdacp4k4kwUpRSSeoZLCZ4\",\n serum_request_queue: \"5PEZsi4q8hazEKEA9WP1egHE2vhuEqTobRjRCZbbGs61\",\n serum_event_queue: \"8ZwrnG4dyPwVLh4MBL2CAfptQQsR9BY6pcHHpYAsUuEH\",\n serum_market_bids: \"BQfvcMGzSApw8BAdwiWGJDTWQCXqaHwmGrFdLjM4CAgv\",\n serum_market_asks: \"9rNcJYeyVMSqYLA4tYv8r9K9PTMwcnLFgknbtcWhLcKS\",\n serum_coin_vault_account: \"H8WFSuFwvjWFdvojecKym6UJVSk3ZLukEjeSBbzbXKYX\",\n serum_pc_vault_account: \"DDr2SB8aM3xPCoQoLFZTXGvpAz6aFWaTR34EcbG9vWhK\",\n serum_fee_recipient: \"PgjTxGVTmFGQjGX8DrETmT68hRt6Jyps4SFTnxJcf3S\",\n serum_dex_program: \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\",\n raydium_lp_mint_address: \"BAgSWaPZpsQKyZJdvB5KyvmCNj6hzczzentt5FhDCVHb\",\n raydium_amm_id: \"6eRECBcCVP82AvAd6Di4rZApa2btLf8RDUqrTigt4hS4\",\n raydium_amm_authority: \"5Q544fKrFoe6tsEbD7S8EmxGTJYAKtTVhAW5Q5pge4j1\",\n raydium_amm_open_orders: \"CiLegtV4wfcZ7V6RJKvesnguRpz9VRQgNNBjTxXjMkWA\",\n raydium_amm_quantities_or_target_orders: \"5VbiaMEzVspC3Lq4aAWmZmjP3TRccoZnK1tZY4sUkXQw\",\n raydium_liquidity_program: \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\",\n raydium_coin_token_account: \"ApC5piXBR1JCJnVxBrMUtbWxFXc8EZ3TmKw9no4tnZSA\",\n raydium_pc_token_account: \"3bWNBbLQZrz3TnfNdSRodqgwQHy3XaWbknT7BA9d7pec\",\n raydium_pool_temp_token_account: \"GCdY8Qc2zQVp1XiDyBGxstvD5P7RsSDXbprtkn1DoF4k\",\n raydium_pool_withdraw_queue: \"Cs9139e2htmeZEscdCNBZGufmomzsExhAZN8p3g7W6gW\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"Fm9rHUTF5v3hwMLbStjZXqNBBoZyGriQaFM6sTFz3K8A\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 54,\n vault_account: \"DpvWmk7t5FzQVGSt3QbjzYA4mSXvHXB1Nt9dikBEC4JE\",\n vault_info_account: \"d4PY6JcwDAACAg3SniCfYNF44zD14LqYMwwKZmSCcTi\",\n old_vault_info_account: \"\",\n coin_reserve_liquidity_fee_receiver: \"6VYRBnLsY2UXjs4SNWBG9XnWuRtAhvMPBiUz4pcCRwCn\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"AW4udetREKakFJzBfCSK8PqK4bPtQpPcuS55aSvkZcHJ\",\n farm_base_token_account: \"2w7EWL6h2PGQbhnqb9Vf6JQmZASZd6yyCmPGVfhKTr77\",\n farm_quote_token_account: \"2HFErJExNW4WG9UdioDwyXhPzCEhSnbtiY3dL8BKevHd\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"BASIS-USDC\",\n account: \"7dKmQgDoXJ5gBeugwzwXHHE15ypVMBfqffmbJXqnvmcH\",\n account_nonce: 255,\n serum_market: \"9wb29L97MmPp7Nw8oaqiAGkXceETGNQurhySiUNLv5wh\",\n solfarm_vault_program: \"FoNqK2xudK7TfKjPFxpzAcTaU2Wwyt81znT4RjJBLFQp\",\n serum_request_queue: \"11111111111111111111111111111111\",\n serum_event_queue: \"11111111111111111111111111111111\",\n serum_market_bids: \"11111111111111111111111111111111\",\n serum_market_asks: \"11111111111111111111111111111111\",\n serum_coin_vault_account: \"7QM71YvJm86bN9RLFoEvyDX8dBgLh2xjnabcHf4d1Q1y\",\n serum_pc_vault_account: \"AmP22dYrTsG2LrkQX9cLg79jUrzDJcmWqGEWmM3Mdn46\",\n serum_fee_recipient: \"4FjEd37W9FExXq85nLeuNWuhUaTwkFdnqewt3E3qoYAh\",\n serum_dex_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_lp_mint_address: \"GoaAiajubRgeCFEz9L6mLnSmT2QFegoJDH5tpLfivpj\",\n raydium_amm_id: \"9wb29L97MmPp7Nw8oaqiAGkXceETGNQurhySiUNLv5wh\",\n raydium_amm_authority: \"786ezhfHqkmJUBmjrWYGpzPnVWR8zhy2V71qNws7D89z\",\n raydium_amm_open_orders: \"11111111111111111111111111111111\",\n raydium_amm_quantities_or_target_orders: \"11111111111111111111111111111111\",\n raydium_liquidity_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_coin_token_account: \"7QM71YvJm86bN9RLFoEvyDX8dBgLh2xjnabcHf4d1Q1y\",\n raydium_pc_token_account: \"AmP22dYrTsG2LrkQX9cLg79jUrzDJcmWqGEWmM3Mdn46\",\n raydium_pool_temp_token_account: \"11111111111111111111111111111111\",\n raydium_pool_withdraw_queue: \"11111111111111111111111111111111\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"Basis9oJw9j8cw53oMV7iqsgo6ihi9ALw4QR31rcjUJa\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 57,\n vault_account: \"E5dMKcCDK3K2FKMv9WWXByk8bzeVossBK5DWA9fAM1xN\",\n vault_info_account: \"E5dMKcCDK3K2FKMv9WWXByk8bzeVossBK5DWA9fAM1xN\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"35miYa87bpPqXnaCLzjjzDLUHQ7bXMGvq1N5xazbFs8n\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"11111111111111111111111111111111\",\n farm_base_token_account: \"EYbPQJbbxnh13FQnWq4mkodLKbNw2tSTEoHSALRNmYFi\",\n farm_quote_token_account: \"BAqMVuRsNTMpa9DXvHsh2LHQnoMxwzBnes4sqdfmvpiA\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"SHDW-USDC\",\n account: \"3eDnyxwzk7weWKkMonmMtLAP1Qh5LqzoRh4eo6XLfgLK\",\n account_nonce: 255,\n serum_market: \"25bQ6UzZpgFgnU7MqZdqM9Axi6oJunytRL2LgXruDWZB\",\n solfarm_vault_program: \"FoNqK2xudK7TfKjPFxpzAcTaU2Wwyt81znT4RjJBLFQp\",\n serum_request_queue: \"11111111111111111111111111111111\",\n serum_event_queue: \"11111111111111111111111111111111\",\n serum_market_bids: \"11111111111111111111111111111111\",\n serum_market_asks: \"11111111111111111111111111111111\",\n serum_coin_vault_account: \"8ZVaNyNZQkcMzF7esuZoRgRo7Rc9eKEN18v4zw7Ng8JZ\",\n serum_pc_vault_account: \"H8A2xivBXr1RMCYmuhJ7dyEXJqPxaGDyQaaim8WucU7c\",\n serum_fee_recipient: \"9wmHbXURZ4zTPSj1KqoRSCdBRGUF7jrURzf7BB39cxM4\",\n serum_dex_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_lp_mint_address: \"DJqqvzSuPaWThfzwMjXx7H2ZmHDdwxza6NtFudtuXcpc\",\n raydium_amm_id: \"25bQ6UzZpgFgnU7MqZdqM9Axi6oJunytRL2LgXruDWZB\",\n raydium_amm_authority: \"BjnfpyU3Verx99dKcEJZpL1AqLTPrkAUcd44LpXcXVvn\",\n raydium_amm_open_orders: \"11111111111111111111111111111111\",\n raydium_amm_quantities_or_target_orders: \"11111111111111111111111111111111\",\n raydium_liquidity_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_coin_token_account: \"8ZVaNyNZQkcMzF7esuZoRgRo7Rc9eKEN18v4zw7Ng8JZ\",\n raydium_pc_token_account: \"H8A2xivBXr1RMCYmuhJ7dyEXJqPxaGDyQaaim8WucU7c\",\n raydium_pool_temp_token_account: \"11111111111111111111111111111111\",\n raydium_pool_withdraw_queue: \"11111111111111111111111111111111\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n farm_key: 55,\n vault_account: \"EGyBubbg46tJQEE7si2Dj12zizDvy6RoJwZRVS3K8e7W\",\n vault_info_account: \"11111111111111111111111111111111\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"F7VXhf6dtnepxA8CirghhfSdt1Lu55BTp8VcT6XYY3qN\",\n pc_reserve_liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n farm_open_orders: \"11111111111111111111111111111111\",\n farm_base_token_account: \"5SHA8uyXtbDpjHYn9Uvkcs7ZcjdqNjFkqqRfRXqpq4yd\",\n farm_quote_token_account: \"HDB4XxEYEzR1RkpZDcxXF6G4mFUV2xFEtmKbqkMUNBkJ\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n },\n {\n name: \"SHDW-SOL\",\n account: \"5xYXb93fY1vQaQq1dhmrVv8WkQuURunN487nrPHeZmKL\",\n account_nonce: 255,\n serum_market: \"E3fxkJGNNAWf5xXDfMdq5qofBVkQtLKxkP7gG6Up21Ts\",\n solfarm_vault_program: \"FoNqK2xudK7TfKjPFxpzAcTaU2Wwyt81znT4RjJBLFQp\",\n serum_request_queue: \"11111111111111111111111111111111\",\n serum_event_queue: \"11111111111111111111111111111111\",\n serum_market_bids: \"11111111111111111111111111111111\",\n serum_market_asks: \"11111111111111111111111111111111\",\n serum_coin_vault_account: \"9LQEB2SZQJxtLQStgXVNzgWU3LVkc4szK22iDHcSr4K9\",\n serum_pc_vault_account: \"F2qtMkEy3L78wpw64bckvRx5M4w12Zi7bimuPBnYzto1\",\n serum_fee_recipient: \"G9HR4sFJufdUovMGn4qc97r7fhgJCkTDnn4BT2wPWYar\",\n serum_dex_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_lp_mint_address: \"2ws7g3LBPdctfKn42Di9qxzQtUJ8ZL1aEAX2rGEQMNqh\",\n raydium_amm_id: \"E3fxkJGNNAWf5xXDfMdq5qofBVkQtLKxkP7gG6Up21Ts\",\n raydium_amm_authority: \"ByC5idkRdo2XdU5U6tSoSQmfq6spztUYMaSs2rrcJRPh\",\n raydium_amm_open_orders: \"11111111111111111111111111111111\",\n raydium_amm_quantities_or_target_orders: \"11111111111111111111111111111111\",\n raydium_liquidity_program: \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\",\n raydium_coin_token_account: \"9LQEB2SZQJxtLQStgXVNzgWU3LVkc4szK22iDHcSr4K9\",\n raydium_pc_token_account: \"F2qtMkEy3L78wpw64bckvRx5M4w12Zi7bimuPBnYzto1\",\n raydium_pool_temp_token_account: \"11111111111111111111111111111111\",\n raydium_pool_withdraw_queue: \"11111111111111111111111111111111\",\n lending_market: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n lending_program: \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\",\n base_token_mint: \"SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y\",\n quote_token_mint: \"So11111111111111111111111111111111111111112\",\n farm_key: 56,\n vault_account: \"DyqYFtTQYJTbv6zH1exzviECk6eBRDZh7MNHQkTq1Tau\",\n vault_info_account: \"11111111111111111111111111111111\",\n old_vault_info_account: \"11111111111111111111111111111111\",\n coin_reserve_liquidity_fee_receiver: \"F7VXhf6dtnepxA8CirghhfSdt1Lu55BTp8VcT6XYY3qN\",\n pc_reserve_liquidity_fee_receiver: \"9GfaYar1r2HrGANq5qNiQnx88HJ7GULQqxXxt2B4U3Zy\",\n farm_open_orders: \"11111111111111111111111111111111\",\n farm_base_token_account: \"6JDsHB4q7zJypxJXZYiW6xnA331rT72C2C1yEwyaECGU\",\n farm_quote_token_account: \"8ZyrMT97rtCJw41jXt1LzriBo9hVtZdSeTEioLJgj1D1\",\n only_pc_borrow: false,\n buy_slip: 1008,\n sell_slip: 992\n }\n ]\n },\n lending: {\n lending_market_account: \"D1cqtVThyebK9KXKGXrCEuiqaNf5L4UfM1vHgCqiJxym\",\n quote_currency_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n reserves: [\n {\n name: \"USDC\",\n account: \"FTkSmGsJ3ZqDSHdcnY7ejN1pWV3Ej7i88MYpZyyaqgGt\",\n liquidity_supply_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n liquidity_supply_token_account: \"64QJd6MYXUjCBvCaZKaqxiKmaMkPUdNonE1KuY1YoGGb\",\n liquidity_fee_receiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n collateral_token_mint: \"Amig8TisuLpzun8XyGfC5HJHHGUQEscjLgoTWsCCKihg\",\n collateral_token_supply: \"GkhrquZah6wrGvM5GntLPWaG5TDdCk6n3QPvohHxWpak\",\n destination_collateral_token_account: \"4s4fdm8fsnFdbEnujgASXwDFZ43afVnSzmk7MDA9Lqhn\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 60,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 17,\n max_borrow_rate: 100,\n degen_borrow_rate: 24,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"wUST\",\n account: \"8s5Gc63C8zUYRHXxjqyyNwXzK4fqQidcjx5a43Rmf54v\",\n liquidity_supply_token_mint: \"9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i\",\n liquidity_supply_token_account: \"9GYdZbvYw7tcJPEmi1yDPGV9vdxfGpAPsZa84aA7XAop\",\n liquidity_fee_receiver: \"4sGKGh6R8oyTGbim6xWjQCdAmnqFn2J93DXd6dAqaQEB\",\n collateral_token_mint: \"4pgVP6LAbRDaSnR3jfDSBBkUPFxYgWYNhn2L4YRKpgcW\",\n collateral_token_supply: \"8cRq7PTqrruNyBqF5JkWjkTxQdXhNYTbTRHxLv11QH9g\",\n destination_collateral_token_account: \"A1DvMBGvbzcbEDXg1WfAndDvMAwGYLgKRjpgZ8J7dCDv\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"USDT\",\n account: \"Csn3exasdhDzxYApmnci3d8Khb629VmgK4NQqdeyZBNt\",\n liquidity_supply_token_mint: \"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\",\n liquidity_supply_token_account: \"124J21csiR1FdDywteXa8LhAmeqBXZRvozhoE7zq9znc\",\n liquidity_fee_receiver: \"3VQV6yjMUXaTcR6KCvZSAgEKkvZUVEQnNdyEREPbjj31\",\n collateral_token_mint: \"gLhY2arqFpmVGkpbBbTi3TeWbsWevA8dqrwbKacK3vJ\",\n collateral_token_supply: \"CSeQwrb7NHGDJkThJjMPVsQ6Rwb7wMgyFJPDS9gfjxAM\",\n destination_collateral_token_account: \"7t3cWUB6XjwGhqreuK3uxv1BKP5Luczq4VqLSEB4Q9AJ\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 60,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 17,\n max_borrow_rate: 100,\n degen_borrow_rate: 24,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"RAY\",\n account: \"9Bm8d2izGsf9eT6Wr79DTnXBkW2LHYVQa57QzeoTbsAF\",\n liquidity_supply_token_mint: \"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\",\n liquidity_supply_token_account: \"9SG6E3jBTTHLNgpV6ueUYypMYMkm4K5zyS9tk9Rsjm8Y\",\n liquidity_fee_receiver: \"4bRQL2hLqfinNJTsiQW6odhYtYjKXH7zsPc2tafadgoj\",\n collateral_token_mint: \"8Lg7TowFuMQoGiTsLE6qV9x3czRgDmVy8f8Vv8KS4uW\",\n collateral_token_supply: \"2ESAmYeYCW7ee9tcMUdFeW912Sjn8wjeD8odmrvJkeiN\",\n destination_collateral_token_account: \"DAKrpC5HmQrUzbcqKPKE5hK5xfdXdFdf8sxZqhTct4ug\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 55,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 15,\n max_borrow_rate: 100,\n degen_borrow_rate: 35,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"SOL\",\n account: \"FzbfXR7sopQL29Ubu312tkqWMxSre4dYSrFyYAjUYiC4\",\n liquidity_supply_token_mint: \"So11111111111111111111111111111111111111112\",\n liquidity_supply_token_account: \"CPs1jJ5XAjhcAJsmTToWksAiPEqoLwKMbb1Z83rzaaaU\",\n liquidity_fee_receiver: \"9GfaYar1r2HrGANq5qNiQnx88HJ7GULQqxXxt2B4U3Zy\",\n collateral_token_mint: \"H4Q3hDbuMUw8Bu72Ph8oV2xMQ7BFNbekpfQZKS2xF7jW\",\n collateral_token_supply: \"8sVTGPsSYkAXFS4tfW5k5z9FvcWhvBqYdMyiiWbbuT7g\",\n destination_collateral_token_account: \"77QZQaxe6Gyn3zw2rnHYR2NmG5KaEGbmqPYmjuC4qguB\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 60,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 17,\n max_borrow_rate: 100,\n degen_borrow_rate: 24,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"GST\",\n account: \"9CwVAjhpKqkPA27GsikXHxQQgG3oJiiF1ybkcC1pZtGf\",\n liquidity_supply_token_mint: \"AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB\",\n liquidity_supply_token_account: \"9eJaphdrHyowLgU4sf5LQTJcvF5CGUfctvUHdNZ1PJU1\",\n liquidity_fee_receiver: \"HyuzaKbBbzzmnjTi9aQw8a1s1WoDpVnMLYaCZwC7WmUH\",\n collateral_token_mint: \"Ghvf8bVnDjv1nbi9b3PjSw9iBWFy2ApmdCUgzmPFmNVi\",\n collateral_token_supply: \"H49GEYPQusg7evSc2VtpTiYA5GWbpQ7ejpq8TikiwRQN\",\n destination_collateral_token_account: \"5UPnzJVwwgffmnLGs424wBa6e4n9ggRKNe6jHrfDmeUf\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"GMT\",\n account: \"EPm5gyRafEZMHijXuyoA5imPFoEir8KsJ9fd2cyEFrPU\",\n liquidity_supply_token_mint: \"7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx\",\n liquidity_supply_token_account: \"FAwuWLXEEtixroNbi1YC6MbREdaGkuqMaseZkSTbdxFN\",\n liquidity_fee_receiver: \"85zBAdS1P3T1UMUKQn9G51xNF9ZwDzeA2HPbHSf7qja1\",\n collateral_token_mint: \"CEGSnMwZmF512Uva5rTiF1Gx1byMDNdT7UpD8vNXuTQJ\",\n collateral_token_supply: \"ixT3knkW7ybW4W29BWH84kSg55jgbHsLuyZbxCtcsUi\",\n destination_collateral_token_account: \"8v5hr3iXfRTEByShHbSo2yZSLNdACfMJb3aZaJF413NY\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"SRM\",\n account: \"9AiGVt7Qtap2ijvim4JSudDYgTrSWhwaZmKv8BWGFms9\",\n liquidity_supply_token_mint: \"SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt\",\n liquidity_supply_token_account: \"93JKmnXMYHQ9KPkKRRJ5Mb7bqSv4newhDFvz9QE2suRG\",\n liquidity_fee_receiver: \"EMwowECdn8hdGf89RuyGL8cbygwa14BN9tLbYDXgMckr\",\n collateral_token_mint: \"4QSK13NTKxTBExbMjHFsj3QfHBn4Hfp3DGLSba8GvFvh\",\n collateral_token_supply: \"9KJNRpfHcdBZH5tTCBsxdUQXrJitpQpmU9T7GxQTQpYK\",\n destination_collateral_token_account: \"4R4V2LatVjWUMpNj5XtfgG4rhPWMwk2ouVyN8gXXbYME\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"MER\",\n account: \"9wFUsWXt9vc69mU1jcjgPziLSYy6dLu7Dy9idNjo33vy\",\n liquidity_supply_token_mint: \"MERt85fc5boKw3BW1eYdxonEuJNvXbiMbs6hvheau5K\",\n liquidity_supply_token_account: \"H6f1VHo42kKqyJEAdPqiMsNAEDQef399Bi4Kr7otBj7P\",\n liquidity_fee_receiver: \"DBHnQJrew9pG4ox48wmrn4K7pbwaZ45DFrV2CmySF82p\",\n collateral_token_mint: \"CxrmAHxU2twx8EEe8f4hPKmq9tvD3xidpovs1idrQ2ie\",\n collateral_token_supply: \"EEQHLXxgdETwYnBYRsgLeJjDNWB9Zrizt9nbrhJ6FVGA\",\n destination_collateral_token_account: \"6scTzo1q2dMc5LJJdqmUjLtCBykar44SgfuWupDSpZg\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"BASIS\",\n account: \"7wAiwRyM66qfDrDBZD9xLii95tX47xzRPAfQiomrqrsN\",\n liquidity_supply_token_mint: \"Basis9oJw9j8cw53oMV7iqsgo6ihi9ALw4QR31rcjUJa\",\n liquidity_supply_token_account: \"CtpeTmX4BKHZJA1DVJNy9FhwNb575epA3pmBM65K4UU2\",\n liquidity_fee_receiver: \"35miYa87bpPqXnaCLzjjzDLUHQ7bXMGvq1N5xazbFs8n\",\n collateral_token_mint: \"GNjwMCt8GmPwQHy45UDzeprHkSTsNQHddsWXADz1HE6H\",\n collateral_token_supply: \"HbnyViMZsu5W1Y1xhbTaDM5BGqNVZ81jeYFHMMRgktw5\",\n destination_collateral_token_account: \"CgTN1Ng2fzgQZxi1u6sEP8XKJ3GqCyJbmc9G6HACwJBZ\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"stSOL\",\n account: \"BsCdKC2ncgS3VnuibTiA5Etx6MZGRnUL2w88iDee3A6Z\",\n liquidity_supply_token_mint: \"7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj\",\n liquidity_supply_token_account: \"87YN1wkWLKnWANkPAkhSq3T2xwmj3qbjudKaanCAiZNt\",\n liquidity_fee_receiver: \"2NNqnU8baUcxDT3Sx2anjMGxhtHheK176FkSdCnKteDg\",\n collateral_token_mint: \"27CaAiuFW3EwLcTCaiBnexqm5pxht845AHgSuq36byKX\",\n collateral_token_supply: \"7GsWR5WbuLPQTQib3pExcRrL3Jjv3xhiTTchUEYBrhfj\",\n destination_collateral_token_account: \"7z5ZGStFQ9ijCXxqCtU4ZV64AiC11d22L1wKecvUNs4s\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"MEDIA\",\n account: \"4YUqefxqtfa8PwFynQKJjDC74cJzPtR69uP1UqZKQLZQ\",\n liquidity_supply_token_mint: \"ETAtLmCmsoiEEKfNrHKJ2kYy3MoABhU6NQvpSfij5tDs\",\n liquidity_supply_token_account: \"5QWDi7dBdbAXPcVUbxzz93p6ptQAi3AbHQem2CFquX6k\",\n liquidity_fee_receiver: \"CCEi57RYB3APLho4pv4fqDXqxezkvVwkMnZhKPCWJHCK\",\n collateral_token_mint: \"6fGTc455JK3bsiSrvyLkEymQasPDXdrw2jJR16UkPnT5\",\n collateral_token_supply: \"7WMg5Y5JANsucf5noBMDVJ4kAqu5Y27KGpDdsc6xqukT\",\n destination_collateral_token_account: \"DAxvxAb2K6aFadQqn1rsJphirCS6AFM7mJrApPLSgELo\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"TULIP\",\n account: \"DdFHZu9n41MuH2dNJMgXpnnmuefxDMdUbCp4iizPfz1o\",\n liquidity_supply_token_mint: \"TuLipcqtGVXP9XR62wM8WWCm6a9vhLs7T1uoWBk6FDs\",\n liquidity_supply_token_account: \"CTY1eFRYza4nr7Hw4aFXoWwvcAmF99UtgSyTFWWUdJTf\",\n liquidity_fee_receiver: \"HyPhJfWDoXbsu6AaNmJzc7hwnMG59XcnQPXU1dDE1mJg\",\n collateral_token_mint: \"Am2kxXzFH84biqbswGWq2zieWqsX2ANnFDyiZr9Fh7zc\",\n collateral_token_supply: \"7ffRNyEMYoHZ4eZNHhDPDQTVVXa5dtgoLCwWWkiprCdG\",\n destination_collateral_token_account: \"CQMNF7T32Tg6oryUVSptFiKb4SA4j8f48GenUC8CPcei\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"SLRS\",\n account: \"3YzfgFtos1cq1PGWABSYXj3txhwAnWjVZxacPafMPwZH\",\n liquidity_supply_token_mint: \"SLRSSpSLUTP7okbCUBYStWCo1vUgyt775faPqz8HUMr\",\n liquidity_supply_token_account: \"ARioqrJfVAP8AFT1xaiEFqiajY6Nhq2CS17mMi6A8Urz\",\n liquidity_fee_receiver: \"CTnTSgQqYbu8vMoKuoCjzu6SCyERNKx9pHqj7icqvTDq\",\n collateral_token_mint: \"GtFtWCcLYtWQT8NLRwEfUqc9sgVnq4SbuSnMCpwcutNk\",\n collateral_token_supply: \"FYNSmQBv6WxJETxDzrpwPpda1sohzMX8xbEdkquMoysr\",\n destination_collateral_token_account: \"GfWjrthTwB9DHwNQirS1XfGiFcRm9Q6KrjJdGyTATjCd\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"LIKE\",\n account: \"BQk6St4EmdBUo6jx4XCM9bobwV7wwcc4L7QwZHgN3GwL\",\n liquidity_supply_token_mint: \"3bRTivrVsitbmCTGtqwp7hxXPsybkjn4XLNtPsHqa3zR\",\n liquidity_supply_token_account: \"8W8i2jbRYiw8BQ3aQUv7k7cvQztAidjR263y5aWyHRbE\",\n liquidity_fee_receiver: \"GYUAka5Ps7b1yTLBdU7Ct91662Q8sacm4GpWCjfYoRaD\",\n collateral_token_mint: \"DRu91PV94sb6kX6HwMGnGM8TuHrjycS4FmJNRWEgyw6n\",\n collateral_token_supply: \"2NfkjMBcVTjMx4adV6LQsLjm3amB1HFXoo8wEjktRgTx\",\n destination_collateral_token_account: \"3raVVLvK8V8UhxAWKdeFBPLBj8vBU3cyuJ6MpuY4Gdm1\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"ALEPH\",\n account: \"5nestDtwfXxCHbJ7BcWgucBmSp7ApxUtW9cDwDa3apED\",\n liquidity_supply_token_mint: \"CsZ5LZkDS7h9TDKjrbL7VAwQZ9nsRu8vJLhRYfmGaN8K\",\n liquidity_supply_token_account: \"4NaiudHa6ApXqgfLBDvZqQLrabLvMCKtw1vieHfVZpo4\",\n liquidity_fee_receiver: \"132bKdc6DwnxATSPR2BVZAWtL67327JiVoHzpbNJs7np\",\n collateral_token_mint: \"FJtaAZd6tXNCFGTq7ifRHt9AWoVdads6gWNc4SXCPw1k\",\n collateral_token_supply: \"35jP1V7JQby5wLo3yutNa6dZ2nwWUoVUKiyc63Wr2dB4\",\n destination_collateral_token_account: \"DKfXtqJFy5YCD4r4Uxyjampf7p6ahmS7FuAmkRzP6QbW\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"ROPE\",\n account: \"BAkQnFTVBHE9XGo7rEidRMEhrFyXXxKPchW2KXtkPKzG\",\n liquidity_supply_token_mint: \"8PMHT4swUMtBzgHnh5U564N5sjPSiUz2cjEQzFnnP1Fo\",\n liquidity_supply_token_account: \"6t6M4y22fKEY2RbtKKdrtxQMJKwDrmQLX24KjthbEwdB\",\n liquidity_fee_receiver: \"8FYkBrPaN9Lk7nRAWNRx9UVtzcPUg1Rm7YVFPvFpc9MZ\",\n collateral_token_mint: \"9oYxGZP4PWFLm9CFJb9YG6LiZZNz2StPW2yx5oK9k7df\",\n collateral_token_supply: \"7k9tKTzMdCuxm9ocGEFUkDnZTw5K4acAzawyV1narjQ1\",\n destination_collateral_token_account: \"HdxLdWVJHha1BZVw9gp8WnKgLR4q9tPgyMRim16H8U88\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"PRISM\",\n account: \"5ZETtVZiqomusvAKLtCJvfKdhotc1HornaL5VF1Z2L71\",\n liquidity_supply_token_mint: \"PRSMNsEPqhGVCH1TtWiJqPjJyh2cKrLostPZTNy1o5x\",\n liquidity_supply_token_account: \"3eEA9oaSmUkZTxMtN8BU6RnkxdKRaApQCDQknJasL98N\",\n liquidity_fee_receiver: \"8nK9FJ6PPRYb7KEfpRukB8iWhW5Krw2feaFGvPdxowSe\",\n collateral_token_mint: \"5dBFWbVzh8ez9W96krGeN2xkhuvqr6wYUfekKRydw3Jm\",\n collateral_token_supply: \"GQRtAv3U75ftyBxY4U2WY5FfQh1xoWQ4tAhzWVTpA4u1\",\n destination_collateral_token_account: \"DDBxVLAVVmNBkocJ8JN24n5aQz7wpyCFZhQ3MJgUvWLn\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"sRLY\",\n account: \"6jNicvm4rToeRe3MbkFXNmNfg8iVtZuySGJqqijsZ6j2\",\n liquidity_supply_token_mint: \"RLYv2ubRMDLcGG2UyvPmnPmkfuQTsMbg4Jtygc7dmnq\",\n liquidity_supply_token_account: \"6gkCQRT8PaMjemqWEGdMxNHNfpAhhCSva959AiVxUGRa\",\n liquidity_fee_receiver: \"41Qbc6RGJ2zsbAXkQoy7gXNDPmuSo9Z9PkUbALtyCuPU\",\n collateral_token_mint: \"Hjaio12SUVKzCsd7BVmTN8vz1U8CMLhY6GubhKLA5ptN\",\n collateral_token_supply: \"2ynimffX3RgGkinkHRaAxrs4yt8hj2UDxHxULmWczzyn\",\n destination_collateral_token_account: \"GXVMXjDPJmJXBKz594RhBaLSW7zcxJHtzXBWAiKcWKc9\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"COPE\",\n account: \"DrYZA2Q6eBwFD7d2x8mmsLWNcQJGVEX6ntF9nMmNpPBe\",\n liquidity_supply_token_mint: \"8HGyAAB1yoM1ttS7pXjHMa3dukTFGQggnFFH3hJZgzQh\",\n liquidity_supply_token_account: \"7v1EmKhBa4deAtMia21CpZ1uUqgFg8oGiXt314x6qpq2\",\n liquidity_fee_receiver: \"6pFsWsCurqJ3Qzv6yUvXTcvR1p9Zb2TwSPiPAsVJ6pWd\",\n collateral_token_mint: \"8cm7UrBiDQ4C1ntQSCZfHSWKUizdW31ddTQGNY6Lym3B\",\n collateral_token_supply: \"EfFKjzmFtoPPBoz1V78cgvQegoFFE3AKanBh2AT7p1kz\",\n destination_collateral_token_account: \"LX7xER7JXiy8KrK1NnnRN44fN7LFJay6iUqH4cXBLKu\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"SNY\",\n account: \"DiC9QF1MLQgzVNRDUdLaDgmAQ5JA8ksd8AaaYrJbEHnD\",\n liquidity_supply_token_mint: \"4dmKkXNHdgYsXqBHCuMikNQWwVomZURhYvkkX5c4pQ7y\",\n liquidity_supply_token_account: \"HpRAzc4ioizof1ndfJmYKJMvcLP9s9NhVWRXVnMiSV5A\",\n liquidity_fee_receiver: \"FEfvNVCPXDpBuyx6kdRixxMPJGnqNfAXbRA29KQfsYiU\",\n collateral_token_mint: \"2yQJdxJy4tGeeXK2u8Lwdy9oY6Ks5shVH9gYtRH9zdDw\",\n collateral_token_supply: \"Doia9pBqHjtcRZCVaFoENfRYc6G5TaTmAJpeoeMPVbab\",\n destination_collateral_token_account: \"9HNaGXfNef3iCeZUKCUDmuVrpoCCf3n4MbdqrbRuUxZ\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"STEP\",\n account: \"HpYGGceBPSWhemfsUtdAXjDJpTiWa6MppMr8LaCfkwyX\",\n liquidity_supply_token_mint: \"StepAscQoEioFxxWGnh2sLBDFp9d8rvKz2Yp39iDpyT\",\n liquidity_supply_token_account: \"ArUwRwHqhg9nYxaJ4643coVggWmnAK9WhkpkR6CZiVSS\",\n liquidity_fee_receiver: \"8EQyWbvZjb5En3JRY6bmSYkcsWt6poUdBBC2gi3UL43a\",\n collateral_token_mint: \"2Zg22gUjtS1V3k8ER8VoNVsf49YHKGddUULY4ZUwaRW5\",\n collateral_token_supply: \"7QJw944wtodBV2bVfd2ajHxeAv99Zopo39QyvF3anHMb\",\n destination_collateral_token_account: \"FKctxJ52noZmRN9uofXJi2gJy4Fk7A8d87bdaiCYi7Qu\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"whETH\",\n account: \"7n9bDFUxehuw7yAHnK9eWKSfMx5u6NYWPVLKYnz93fzj\",\n liquidity_supply_token_mint: \"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs\",\n liquidity_supply_token_account: \"EWhUcqPMNVetwrJLJhQSkpzE5sU8nAVtRmJJV2EpgD3g\",\n liquidity_fee_receiver: \"A4RG7kMBBhCUqu7Mge79m7X4ZYHMQ2CTtv8RzF2PLNMu\",\n collateral_token_mint: \"85SyKDLXZPC1sqdFqasywQojutGhDCobbPHM6zczD1Li\",\n collateral_token_supply: \"Ft59j4mGN3JwD9rixqpepFJoAR2VjDyoESH6qApFQtw7\",\n destination_collateral_token_account: \"5E2FmPnj2Yrn7ZbiGLYtesHQHuUiy4hUKacr7sywcsTv\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"ETH\",\n account: \"FxH3A2Bw9q3MDivXuWtr8zxiN3S7dGTEkK4Mm95NR2yB\",\n liquidity_supply_token_mint: \"2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk\",\n liquidity_supply_token_account: \"GfPzHMkxRWwM3i2a17ENLo5iRRFdb4iNQAGjTAEGkxJY\",\n liquidity_fee_receiver: \"4oVF2swaCseP9HxsmUrzxbEzxgHPYpyRMwGM8VUfaBiC\",\n collateral_token_mint: \"C1gwRSpKFu4Vjrg9MhNfRjg65SV4CNLsb3C6d7kWFEyV\",\n collateral_token_supply: \"HnqohLynuMh1JZdKUgbS8v6K1sG2QpVEUQqahdtqKXP6\",\n destination_collateral_token_account: \"3UWp5EuVFpeTpgRRGBudDfYJtiaQWcDYVRJ7scQL4hyo\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"ATLAS\",\n account: \"41Pgp5bSZtNgLiWuwi16Nhf6o75cKzbkKULUd53EFdcU\",\n liquidity_supply_token_mint: \"ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx\",\n liquidity_supply_token_account: \"4U6C1Ym7aBfMNPGMrZqJBVDknhGYmqNM7a2SpcMJreCP\",\n liquidity_fee_receiver: \"GUCRZ7sESTRV5WP9k4w1yVHjNCUrD72iSTx9veSjukzk\",\n collateral_token_mint: \"9eGNc4BZCAgpTSEjbu7ACCLjpnZh1WSdts3y4nMik4e7\",\n collateral_token_supply: \"9uv5bScpye91V22KU5bgVebQGx1yg98MHWUNfDeYoynJ\",\n destination_collateral_token_account: \"5LrfV4Bnj1uioSKAHTbL5hTh8JTKDLBKxGFxcSDeE2se\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"POLIS\",\n account: \"7hxTjiLvBuZcUQnztSRhtvthcsVdu7Na5WWXocwBWA8y\",\n liquidity_supply_token_mint: \"poLisWXnNRwC6oBu1vHiuKQzFjGL4XDSu4g9qjz9qVk\",\n liquidity_supply_token_account: \"5XHT644Lbgn7HCY93JSu8Vp8QjfmrEz8ZvD5QyB3EieE\",\n liquidity_fee_receiver: \"64bogB1G4Km8Toequs4bcwmrPb9evrzof2CugFpL8SNN\",\n collateral_token_mint: \"658FZo9B4HgKxsKsM7cUHN7jfNFgC7YftusWWYWc4piD\",\n collateral_token_supply: \"3AH6WZBW5yYbS6shZAvQTB4iW5d4Shb1EBMMPThGzyQP\",\n destination_collateral_token_account: \"3x5ZLLUwreSHmdPqegC3dt8jH6TXzmqSTxc9iFnt8Y9e\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"ORCA\",\n account: \"6sJg8f3zcAjrd38QhSA3C34n8MzLq1XVTiQr4msozAuv\",\n liquidity_supply_token_mint: \"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\",\n liquidity_supply_token_account: \"4LqykQes5scGz4bZLNaNm1bmgMutCCGqQZVni4VJjWhZ\",\n liquidity_fee_receiver: \"ADz1SJ28TH2TnLzA9FG7DqiW41CKeLfRvbvDckK1dvFv\",\n collateral_token_mint: \"HRYfSMc1gYEvxo9zsh14jYHKxAcfJfoVakKtRtJEomb8\",\n collateral_token_supply: \"HY3edUqqoHFXDTYkFpsv6hHzH81Qiiq3DqCgRH37uP2c\",\n destination_collateral_token_account: \"5hGH1JPeQzzAZv7DrZNiTyvMj8GEEVQDWR4bqAFzXieu\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"mSOL\",\n account: \"5LKgrsUF72MityTntAHWLcXivBGxnxapikFArtKUULwX\",\n liquidity_supply_token_mint: \"mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So\",\n liquidity_supply_token_account: \"GppNJmvMn2YRSU6gpqJEkUgic76iFjDU17145q8WF27n\",\n liquidity_fee_receiver: \"6j2mHKx1rSWe4seQbqfD2WksXRg7CaWU2DngNc2Wni8P\",\n collateral_token_mint: \"8cn7JcYVjDZesLa3RTt3NXne4WcDw9PdUneQWuByehwW\",\n collateral_token_supply: \"MDFmkdjJ92y94DDjKCFjDYoU95e2pPefrDEB4gfP53w\",\n destination_collateral_token_account: \"4GbtgR99acKG27cn9j5yHGsAnfduWqaRCX5s4oeze42C\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"BTC\",\n account: \"5CXZ2xKG1i2w3fBXsCEC6zhpK5j164gxJ3bzhyoRB3ZP\",\n liquidity_supply_token_mint: \"9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E\",\n liquidity_supply_token_account: \"dW1q2V7uooHkYBVQ5a6zdKiZVJ4qNWrRqEYy5NmyLoW\",\n liquidity_fee_receiver: \"5BYymW3BYr63xrYMojL6qWMPmpicTXPPnuUykUmAmKnj\",\n collateral_token_mint: \"G5V7t3ZHTUGi6xGfk5nc42P1iRkNN3JhaFwFXkvyDmz5\",\n collateral_token_supply: \"CpfUmNBXwJwqETF61YMYqHzyXjpraJmQtBT9ZBjzDxWL\",\n destination_collateral_token_account: \"HwTx1mewMgWb6Hkk8eRTbE8WgmNPyk5PZwRoeEjsRfXB\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"SAMO\",\n account: \"6nVuFQdDEPsh7yhPuHR3WbsYYEHHDjetEhvy3hrzbUBb\",\n liquidity_supply_token_mint: \"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU\",\n liquidity_supply_token_account: \"F7jTRpp57TjrkCF4kfgiCfUVAQ8jQMn4MTYbHQ6qC2cV\",\n liquidity_fee_receiver: \"HWpe5DkaKfKvzYvGPTg79qMLSoeMWbAQ39ZwcjXWgqVf\",\n collateral_token_mint: \"CEqYVZCL7sHQ8gChh1yL3uajc2UDs6DXuYjPZyRox6MC\",\n collateral_token_supply: \"z4VJb6aA1gbJHNU7L6R4n48fpckFCvim15xgq7F2jDY\",\n destination_collateral_token_account: \"CCnBMpVNBuL42QtxP2CtQc1pUbEGSYhx6VJ3dwWqq8GF\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"ZBC\",\n account: \"F9pwMLPQy1MJv14EE3XWdncUaJbPZdaqgfuHmfwxcWzc\",\n liquidity_supply_token_mint: \"zebeczgi5fSEtbpfQKVZKCJ3WgYXxjkMUkNNx7fLKAF\",\n liquidity_supply_token_account: \"9HB2NbeaYYkSgZM96Hwy81QRqC8Q8AZQh9mXDt8We7bW\",\n liquidity_fee_receiver: \"FmsaBBbU8BXowoayFPvPFHBDrqU7znLPQbajbjwEYGHZ\",\n collateral_token_mint: \"64HvdMMAVS3o6mnU7xBAdWogmD3ZwHMNY3fUeiD5Wksz\",\n collateral_token_supply: \"E2rH6yFk2MnTB4USXanW9zgu3LrpqBxukMohft56DwGC\",\n destination_collateral_token_account: \"5ca5gEA6g1gfZgJk4dGLagMWUo71P5vmeM3aJNHSnr6s\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"wALEPH\",\n account: \"7MicHAbktN1AmuuBxUGpdmb4iqeiD9GqduejMAX9g415\",\n liquidity_supply_token_mint: \"3UCMiSnkcnkPE1pgQ5ggPCBv6dXgVUy16TmMUe1WpG9x\",\n liquidity_supply_token_account: \"6MBECW2vo7wPHHngJDRveiYHHLehwr75iZTYteehciGe\",\n liquidity_fee_receiver: \"81gtUx2z7bFThDrqa4maEj9jYKVQWr1iHxEGkCBYkpmR\",\n collateral_token_mint: \"A2AZDzmyVMkskC4DfnxwP6hbAj3D1LdSLJrpgruWEcBs\",\n collateral_token_supply: \"9bJmVy8GW9Gv8jsamAKBLQah4aVBFjvekq5nXp4dJs1U\",\n destination_collateral_token_account: \"GTrU2d9bdXFi5hij46vVrLHPnkTHhP4BkEuSyrgqcXvw\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"SLCL\",\n account: \"3PP7T3RGf6UKG6BvAsQudyZg7qzPLcpmo5eeqoxENvKB\",\n liquidity_supply_token_mint: \"SLCLww7nc1PD2gQPQdGayHviVVcpMthnqUz2iWKhNQV\",\n liquidity_supply_token_account: \"54HakR2HCPLPihKGj2DSGr2Kjfg6h35RyEyQeC4gMRjD\",\n liquidity_fee_receiver: \"8YJ2enWhcRnWymBiokzosTw3zDohJPF6g5QmipF22mV5\",\n collateral_token_mint: \"HRPqE6u5MXAcf1VwYzqYujVYTzf3raanUGu8Dt7bBEHE\",\n collateral_token_supply: \"52F94wWztPYUedByDHCa29HFnZW6nfcX5fDcEfBPEBJH\",\n destination_collateral_token_account: \"9MBbdLSWZzCxoDVWdxSbpUPoVqsK9XYDGECe5ZYN6hoq\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 50,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 15,\n max_borrow_rate: 150,\n degen_borrow_rate: 25,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"STARS\",\n account: \"HJDm6bso3CXHjUZRLRnV3VLupgeNbeYD4SGXEiaqrDEh\",\n liquidity_supply_token_mint: \"HCgybxq5Upy8Mccihrp7EsmwwFqYZtrHrsmsKwtGXLgW\",\n liquidity_supply_token_account: \"7A7fQ79poA8voKjeD1XgMnKZecHL65bscvGnf9xk3Gmy\",\n liquidity_fee_receiver: \"E6RNDzy4FauDxr1p9Dsg7NFLv1jGkPNEKkTGvEYX8hi9\",\n collateral_token_mint: \"F4K5EJe7wHxjDBHs4fGmoztpqS6XGZo1z7PL8gxAfcQo\",\n collateral_token_supply: \"36282GgQ2WwXonxWAHxuSbXGSwbY98LWTaEVz8oXrmCf\",\n destination_collateral_token_account: \"4kjiXc45iZazVUtwcywgQD7GVM4K4XGqodWNzVxajgkA\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"weUNI\",\n account: \"F3y6c19hcn91RRkqZc6BN6d2B5F9etkNks9BzUxvqc2M\",\n liquidity_supply_token_mint: \"8FU95xFJhUUkyyCLU13HSzDLs7oC4QZdXQHL6SCeab36\",\n liquidity_supply_token_account: \"2V9F8ywuGbbMG3oqcixR1upAvXin6bijK3qbSHnALEof\",\n liquidity_fee_receiver: \"GzSqPWwjXyssJ7wVtMgxX6NvYKJJkjf589KQJwQz2BRb\",\n collateral_token_mint: \"5ece7fjw86KL8yRFCrb1SmqyvXwwy5y6wcC8G6aquodx\",\n collateral_token_supply: \"DAmpNbLFGWZrNqsBLF7dmYMM9QMbxktQ2Y8dfx88ZVTe\",\n destination_collateral_token_account: \"HKxr5BdAnYc6oUMra1kyEdeqMMcNsmkDnAmwUa1gi2HP\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"weSUSHI\",\n account: \"FEDEBKAtZzod5oXv1UkSzEeDZGsFe3DK9Wq23o6B4QVN\",\n liquidity_supply_token_mint: \"ChVzxWRmrTeSgwd3Ui3UumcN8KX7VK3WaD4KGeSKpypj\",\n liquidity_supply_token_account: \"Fcj2wrSKfQYQ4JhF9x36DE8W6uKDrjSDqfTYFZ7Lvq6H\",\n liquidity_fee_receiver: \"7DgrGVCFVLoNVqQXwYhHfR5uA8TS6TiHcKNEXPdG1re8\",\n collateral_token_mint: \"7iQwV8krcZRqDicFXMh7rCgExXHrZ3WQKsTJrtA4yV9M\",\n collateral_token_supply: \"8n7bsURa8dQr5TDbjvz2yUQzzLYF9B6X97HJ4x6omniY\",\n destination_collateral_token_account: \"4bYUHj4cvyw3cjF3b4L6HcG7EiRRvfH7adiJFnHbKAYS\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"weDYDX\",\n account: \"2vzY9tJNqutsGnUwPmka3LmAEjDXJ2qKeV9fAztD7Sbo\",\n liquidity_supply_token_mint: \"4Hx6Bj56eGyw8EJrrheM6LBQAvVYRikYCWsALeTrwyRU\",\n liquidity_supply_token_account: \"BmG6AWHdf68MkooJ7D43irLcdkzB9x1CuHPwG8uxvoAc\",\n liquidity_fee_receiver: \"UsNuAp58e48ohXynJyVF7EBbaZyzgCfzrgknHoAGbRL\",\n collateral_token_mint: \"8gKgXXcixZm1Qtn8D4t6FDUKZRjoc51AjffFCNXTc7EV\",\n collateral_token_supply: \"2H4cED2cKubaBUHmCHS779uyMUKpfkGAFpB52VsFS7C6\",\n destination_collateral_token_account: \"4h7vBXc8t7HVUzYV5fyhTVX6ULngxwNVMbRUUcGDXDd7\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"GENE\",\n account: \"3gmxqqfQhMtqAnQWuFNiTqgLkAok54SGuvdncPYEAq2i\",\n liquidity_supply_token_mint: \"GENEtH5amGSi8kHAtQoezp1XEXwZJ8vcuePYnXdKrMYz\",\n liquidity_supply_token_account: \"7VrZiv3Qmt4ZJwFWaDQ1FqjCW85XUeJYq66eGGiVBo5R\",\n liquidity_fee_receiver: \"8wvpmoz7qQTVt9FUCdDKqmqwvrEZcK1AXr2VjaXW9FRB\",\n collateral_token_mint: \"DxTDysdSXAvZeUt87XagVDbStKUttSrwahot5vnUN6YH\",\n collateral_token_supply: \"3dF8iELN9DHDT4D2oMwb7LjuDZDn3Rxx3VtZKVTApWqo\",\n destination_collateral_token_account: \"CJ21ub2pk4VwKK2JU97hR6krbfEmvcANkBNgGAbwgvDX\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"DFL\",\n account: \"9z3qY3jfoPVGAfCqr1w95q5RW29tSNvyitLL67o4E6Lk\",\n liquidity_supply_token_mint: \"DFL1zNkaGPWm1BqAVqRjCZvHmwTFrEaJtbzJWgseoNJh\",\n liquidity_supply_token_account: \"BauZ6hiW6Mhffc4CnBh7hox4BxC2kDiHARBXs6xTZ9Zq\",\n liquidity_fee_receiver: \"ECR33vhDDerYAb4vU8FF5P4G55oAPLNnh6YPp3zmk77w\",\n collateral_token_mint: \"47cP8Q9x6EpA3AL3brKnPohMSmmjsn9dAvuCKaeFZu1H\",\n collateral_token_supply: \"L5FGnzwtpzRisovasyggpAYkZFnSrwLwHWxQ3j1efiV\",\n destination_collateral_token_account: \"3CpSwf5Ait6YGD9XgmGqNqj6jqEBX3PWkxYumt8fzY7L\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"CAVE\",\n account: \"4eEZmrgcBnQ6XrtzVkZB3Ae9zvWF3AaDio8Xem4qZ5cb\",\n liquidity_supply_token_mint: \"4SZjjNABoqhbd4hnapbvoEPEqT8mnNkfbEoAwALf1V8t\",\n liquidity_supply_token_account: \"9yY8BabAtpP2dvNHwPjfF2kss1dZhqbQMcFfmWq17pmo\",\n liquidity_fee_receiver: \"AbdiCWj6Di7b9AWSwxTJUMs8BnFUuvnRZEtuUarUMix\",\n collateral_token_mint: \"9nhjZPZcSWjSVEfgGAhzfPYUVtnHkcRkURYTweT3jKhC\",\n collateral_token_supply: \"8RzwCmJJAhL7CZogq19qrdHCHmjBpm8Mqg9G5LjDhpWj\",\n destination_collateral_token_account: \"CdeNCwuYtrVPT4v8FVj2BYfUnZ7cnnuGjqgw5vNqFrvj\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"wbWBNB\",\n account: \"Fbe9bgforFZfK1Zf14R4S2EasUimk64JRUi1hgJZXf26\",\n liquidity_supply_token_mint: \"9gP2kCy3wA1ctvYWQk75guqXuHfrEomqydHLtcTCqiLa\",\n liquidity_supply_token_account: \"4umrjG5sMTNS9S88madNNnzLARavZJR2AJJkiMZUyxUW\",\n liquidity_fee_receiver: \"HBw1tn17wUEDf1EXztKWg3bhaan4TsFaY6Quh4gCKxQZ\",\n collateral_token_mint: \"FWvJZ2nfiRsU2jhFbWRFzwcLWUV8Uc1MuctPwPQ94YB3\",\n collateral_token_supply: \"Fni5miRAQ9GH4cYC2fFD6m8cxMcpgVCif9EDBb9SbAfB\",\n destination_collateral_token_account: \"GzxVcw54D5ghyHSkCNbKRYBo5seUGA2fADVrQcDMBixD\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"REAL\",\n account: \"3PBWn8kyNhvjzbjBPtgsukuw6jLv6YJ6gicxi7fo26Mj\",\n liquidity_supply_token_mint: \"AD27ov5fVU2XzwsbvnFvb1JpCBaCB5dRXrczV9CqSVGb\",\n liquidity_supply_token_account: \"3KXcAXbzFWfVdTp12HXYB8tP6hG94tHq2n4SW1WQbVzr\",\n liquidity_fee_receiver: \"FN1nJSWYMf2Gzjy4KtjBQLzPe9xnScNdXgH8H9BBGtu3\",\n collateral_token_mint: \"8TcRqrTtVXinqfpC8A6h3k6SKrsPhftfXawtWPzroRDD\",\n collateral_token_supply: \"E1Cn1CjZuSx2SSGptbHqmvrb2nNsDCJdTroTZGRN4cXV\",\n destination_collateral_token_account: \"GKG693ER7e9pjB2E9DFyLZGLaoAYPhAKq7WiWCbYbxic\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"MBS\",\n account: \"H6GW9vVsGoibZMQkt5MaUrEmmqzPrTFgvVdAQssEytpv\",\n liquidity_supply_token_mint: \"Fm9rHUTF5v3hwMLbStjZXqNBBoZyGriQaFM6sTFz3K8A\",\n liquidity_supply_token_account: \"34Y8WipZoPapJ15VogEDnrdtqPn7zbA4S6trxTqW9hCB\",\n liquidity_fee_receiver: \"6VYRBnLsY2UXjs4SNWBG9XnWuRtAhvMPBiUz4pcCRwCn\",\n collateral_token_mint: \"7j5vyzADQffz7WEoCaFv3d8r13EFRVqnzv6NxLJfL5bA\",\n collateral_token_supply: \"G9xtwwdJzZmneH5q9Tsq728gLuNEg7NtAWRWYuD58eCj\",\n destination_collateral_token_account: \"Aowk2m6NCpH39oane6F2z6jf9ffVnDRqHizpYCzgoDzy\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n },\n {\n name: \"SHDW\",\n account: \"E22L7J4KmTLFoARUmfKtdG59jP8sUderp8CJoNvM4gk5\",\n liquidity_supply_token_mint: \"SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y\",\n liquidity_supply_token_account: \"3FnPAerK36FzuHEmFmutgPg9axtE1r2uBWTShFELF4Ng\",\n liquidity_fee_receiver: \"F7VXhf6dtnepxA8CirghhfSdt1Lu55BTp8VcT6XYY3qN\",\n collateral_token_mint: \"E8oV8JywpgPxEzaugAzW4bapoN3krEFX9mCoPgvrdTXH\",\n collateral_token_supply: \"28eVN2FP7mfZHBkfZRA6GMKWwWXzkkgAShQxHVoQLvYs\",\n destination_collateral_token_account: \"7AEQ9jGB4G7F3xx6Asg2GKTLuSYeJRywif5WfEi8uRUV\",\n quote_token_mint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n platform_fees: 10,\n config: {\n optimal_utilization_rate: 80,\n loan_to_value_ratio: 100,\n liquidation_bonus: 5,\n liquidation_threshold: 85,\n min_borrow_rate: 0,\n optimal_borrow_rate: 20,\n max_borrow_rate: 150,\n degen_borrow_rate: 50,\n degen_utilization_rate: 90,\n fees: {\n borrow_fee_wad: 0,\n flash_loan_fee_wad: 1e16,\n host_fee_percentage: 0\n }\n }\n }\n ]\n },\n liquidator: {\n farms: [\n {\n name: \"RAY-USDT\",\n base_token_account: \"Cw2k62vkWWRAReakUWZchMPpdadG2ufP2EPmqKnEBw1f\",\n quote_token_account: \"Byg2DUxjs3ThugBtrqbbENG7mpUix36pRpJ885kSGKoi\",\n lp_token_account: \"55LDo6jaMm9A4GVpgiQG7B3CgShwLXCb5SqwkoQk3xcG\"\n },\n {\n name: \"MER-USDC\",\n base_token_account: \"749tAthKQUhNGJ6wowRRDjSpMg5Wef5A698xrawrGv7F\",\n quote_token_account: \"27yz5D8NhQCgnYAPh8fW3D3NgGDgN5HuLkWQiPrZZcJB\",\n lp_token_account: \"2DPQ5pwd9z8mDDLreTHrSQFnRpgS7c2pe9TZLTD3kzN4\"\n },\n {\n name: \"TULIP-USDC\",\n base_token_account: \"2Exze6yKAdSf4LVps9A4kXwrA6wJ5jZgdgsYcxFfAezk\",\n quote_token_account: \"27yz5D8NhQCgnYAPh8fW3D3NgGDgN5HuLkWQiPrZZcJB\",\n lp_token_account: \"BoDnzdqk3XGByDtgoDsaEmgW7tk6jsRTbtWJnQqUfu2s\"\n },\n {\n name: \"SLRS-USDC\",\n base_token_account: \"95DBY4c2MzTqkE4QDg29WhZcttzpo9JWucXdkdaCanK2\",\n quote_token_account: \"27yz5D8NhQCgnYAPh8fW3D3NgGDgN5HuLkWQiPrZZcJB\",\n lp_token_account: \"9zhRDeBxPCUU7izK8K17hbypU6RPV2qMtEsiys6i79TW\"\n },\n {\n name: \"COPE-USDC\",\n base_token_account: \"22FipoZH1nh4FZpuGfcHCvDFUA9R65rfdHZLhMK1Fdwn\",\n quote_token_account: \"27yz5D8NhQCgnYAPh8fW3D3NgGDgN5HuLkWQiPrZZcJB\",\n lp_token_account: \"CHuCFWHETrGi78rdxrDpsrLyTGTRpfY7Qtvh6HTpbjzv\"\n },\n {\n name: \"ROPE-USDC\",\n base_token_account: \"6z8yofEyCaZDBMM4YZaW349HbTDhB8EStohEWpKFNhX9\",\n quote_token_account: \"27yz5D8NhQCgnYAPh8fW3D3NgGDgN5HuLkWQiPrZZcJB\",\n lp_token_account: \"H6Cg8rc4nrAgrwUeugSsbZFkR1TzhfT5MFvxZZWroqTZ\"\n },\n {\n name: \"SNY-USDC\",\n base_token_account: \"32Mpx6ZS2AryK85qi7ctSJoPUjSykQPxC7kEbW6ziPdc\",\n quote_token_account: \"27yz5D8NhQCgnYAPh8fW3D3NgGDgN5HuLkWQiPrZZcJB\",\n lp_token_account: \"e3m8nNuy1H4f3zS8hrZyXbgWJPMfehzhjJhY8D3WZzj\"\n },\n {\n name: \"STEP-USDC\",\n base_token_account: \"FRhvJ75SQAwuWo79iMXt4MGiAc72YxVQhtzX7iSZPNKd\",\n quote_token_account: \"27yz5D8NhQCgnYAPh8fW3D3NgGDgN5HuLkWQiPrZZcJB\",\n lp_token_account: \"HU23yoFNeSH9SaugcX15my7XENU2a5WTyZpcrAE98Dm2\"\n },\n {\n name: \"MEDIA-USDC\",\n base_token_account: \"6XKcMMFwFNv65mCttGLnganXeBCbLhvZ7XKpcfJHgLVA\",\n quote_token_account: \"27yz5D8NhQCgnYAPh8fW3D3NgGDgN5HuLkWQiPrZZcJB\",\n lp_token_account: \"2J3XRzYjHbJF99KVLTZ2HTSKpTyspLT2qUfeN2LfvPaz\"\n },\n {\n name: \"RAY-SRM\",\n base_token_account: \"Cw2k62vkWWRAReakUWZchMPpdadG2ufP2EPmqKnEBw1f\",\n quote_token_account: \"81DG5PenmAPDndUA7arhvU7CW6LcTR3Um3kCrwxoxspW\",\n lp_token_account: \"2gAoct9Y5qPCx4wyT9dasH9BbrwoDAzfvR1pnnTnJ2jZ\"\n },\n {\n name: \"RAY-USDC\",\n base_token_account: \"Cw2k62vkWWRAReakUWZchMPpdadG2ufP2EPmqKnEBw1f\",\n quote_token_account: \"27yz5D8NhQCgnYAPh8fW3D3NgGDgN5HuLkWQiPrZZcJB\",\n lp_token_account: \"Cat4sAXF9RvN7RQQoi83iLxpXnAH1FJecLE5qfA9afNZ\"\n },\n {\n name: \"RAY-SOL\",\n base_token_account: \"Cw2k62vkWWRAReakUWZchMPpdadG2ufP2EPmqKnEBw1f\",\n quote_token_account: \"BVyEvDR9ze5f1rt2q1ZjgmrEMVrJ6ir2QTvifnttuQEx\",\n lp_token_account: \"GegDe2y5wRtzrL3wfPbDa9zTmDyDqQEUQoqEXE6oTdSg\"\n }\n ]\n }\n};\n\n// src/constants/ids.ts\nimport * as anchor from \"@project-serum/anchor\";\nvar TOKEN_PROGRAM_ID = new anchor.web3.PublicKey(\n \"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"\n);\nvar MEMO_PROGRAM_ID = new anchor.web3.PublicKey(\n \"Memo1UhkJRfHyvLMcVucJwxXeuD728EqVDDwQDxFMNo\"\n);\nvar SERUM_PROGRAM_ID_V2 = \"EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o\";\nvar SERUM_PROGRAM_ID_V3 = \"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\";\nvar LIQUIDITY_POOL_PROGRAM_ID_V2 = \"RVKd61ztZW9GUwhRbbLoYVRE5Xf1B2tVscKqwZqXgEr\";\nvar LIQUIDITY_POOL_PROGRAM_ID_V3 = \"27haf8L6oxUeXrHrgEgsexjSY5hbVUWEmvv9Nyxg8vQv\";\nvar LIQUIDITY_POOL_PROGRAM_ID_V4 = \"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\";\nvar STAKE_PROGRAM_ID = \"EhhTKczWMGQt46ynNeRX1WfeagwwJd7ufHvCDjRxjo5Q\";\nvar STAKE_PROGRAM_ID_V4 = \"CBuCnLe26faBpcBP2fktp4rp8abpcAnTWft6ZrP5Q4T\";\nvar STAKE_PROGRAM_ID_V5 = \"9KEPoZmtHUrBbhWN1v1KWLMkkvwY6WLtAVUCPRtRjP4z\";\nvar LENDING_PROGRAM_ID = new anchor.web3.PublicKey(\n \"4bcFeLv4nydFrsZqV5CgwCVrPhkQKsXtzfy2KyMz7ozM\"\n);\nvar QUARRY_MINE_PROGRAM = new anchor.web3.PublicKey(\n \"QMNeHCGYnLVDn1icRAfQZpjPLBNkfGbSKRB83G5d8KB\"\n);\nvar SUNNY_QUARRY_PROGRAM = new anchor.web3.PublicKey(\n \"SPQR4kT3q2oUKEJes2L6NNSBCiPW9SfuhkuqC9bp6Sx\"\n);\nvar AQUAFARM_PROGRAM_ID = new anchor.web3.PublicKey(\n \"82yxjeMsvaURa4MbZZ7WZZHfobirZYkH1zF8fmeGtyaQ\"\n);\nvar ORCA_SWAP_PROGRAM_ID = new anchor.web3.PublicKey(\n \"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\"\n);\nvar DEFAULT_PUBLIC_KEY = \"11111111111111111111111111111111\";\n\n// src/constants/tokens.ts\nvar NATIVE_SOL = {\n symbol: \"SOL\",\n name: \"Native Solana\",\n mintAddress: \"11111111111111111111111111111111\",\n decimals: 9\n};\nvar TOKENS = {\n SOL: NATIVE_SOL,\n RUN: {\n symbol: \"RUN\",\n name: \"RUN\",\n mintAddress: \"6F9XriABHfWhit6zmMUYAQBSy6XK5VF1cHXuW5LDpRtC\",\n decimals: 9\n },\n REAL: {\n symbol: \"REAL\",\n name: \"REAL\",\n mintAddress: \"AD27ov5fVU2XzwsbvnFvb1JpCBaCB5dRXrczV9CqSVGb\",\n decimals: 9\n },\n CRWNY: {\n symbol: \"CRWNY\",\n name: \"CRWNY\",\n mintAddress: \"CRWNYkqdgvhGGae9CKfNka58j6QQkaD5bLhKXvUYqnc1\",\n decimals: 6,\n tags: [\"raydium\"]\n },\n XTAG: {\n symbol: \"XTAG\",\n name: \"XTAG\",\n mintAddress: \"5gs8nf4wojB5EXgDUWNLwXpknzgV2YWDhveAeBZpVLbp\",\n decimals: 6,\n tags: [\"raydium\"]\n },\n TTT: {\n symbol: \"TTT\",\n name: \"TabTrader\",\n mintAddress: \"FNFKRV3V8DtA3gVJN6UshMiLGYA8izxFwkNWmJbFjmRj\",\n decimals: 6\n },\n FRKT: {\n symbol: \"FRKT\",\n name: \"FRKT\",\n mintAddress: \"ErGB9xa24Szxbk1M28u2Tx8rKPqzL6BroNkkzk5rG4zj\",\n decimals: 8,\n tags: [\"raydium\"]\n },\n WSOL: {\n symbol: \"SOL\",\n name: \"Wrapped Solana\",\n mintAddress: \"So11111111111111111111111111111111111111112\",\n decimals: 9,\n referrer: \"HTcarLHe7WRxBQCWvhVB8AP56pnEtJUV2jDGvcpY3xo5\"\n },\n MSOL: {\n symbol: \"mSOL\",\n name: \"Marinade Solana\",\n mintAddress: \"So11111111111111111111111111111111111111112\",\n decimals: 9,\n referrer: \"HTcarLHe7WRxBQCWvhVB8AP56pnEtJUV2jDGvcpY3xo5\"\n },\n daoSOL: {\n symbol: \"daoSOL\",\n name: \"daoSOL Token\",\n mintAddress: \"GEJpt3Wjmr628FqXxTgxMce1pLntcPV4uFi8ksxMyPQh\",\n decimals: 9\n },\n MSOLRAYDIUM: {\n symbol: \"mSOL\",\n name: \"Marinade staked SOL (mSOL)\",\n mintAddress: \"mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So\",\n decimals: 9,\n referrer: \"7h5bckf8P29RdviNoKjDyH3Ky3uwdrBiPgYuSCD4asV5\",\n tags: [\"raydium\"]\n },\n MSOLORCA: {\n symbol: \"mSOL\",\n name: \"Marinade Solana\",\n mintAddress: \"mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So\",\n decimals: 9,\n referrer: \"HTcarLHe7WRxBQCWvhVB8AP56pnEtJUV2jDGvcpY3xo5\"\n },\n BTC: {\n symbol: \"BTC\",\n name: \"Wrapped Bitcoin\",\n mintAddress: \"9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E\",\n decimals: 6,\n referrer: \"GZpS8cY8Nt8HuqxzJh6PXTdSxc38vFUjBmi7eEUkkQtG\"\n },\n saberBTC: {\n symbol: \"BTC\",\n name: \"Bitcoin\",\n mintAddress: \"SBTCB6pWqeDo6zGi9WVRMLCsKsN6JiR1RMUqvLtgSRv\",\n decimals: 8,\n referrer: \"GZpS8cY8Nt8HuqxzJh6PXTdSxc38vFUjBmi7eEUkkQtG\"\n },\n renBTC: {\n symbol: \"renBTC\",\n name: \"renBTC\",\n mintAddress: \"CDJWUqTcYTVAKXAVXoQZFes5JUFc7owSeq7eMQcDSbo5\",\n decimals: 8,\n referrer: \"7rr64uygy3o5RKVeNv12JGDUFMXVdr2YHvA3NTxzbZT6\"\n },\n ETH: {\n symbol: \"ETH\",\n name: \"Wrapped Ethereum\",\n mintAddress: \"2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk\",\n decimals: 6,\n referrer: \"CXPTcSxxh4AT38gtv3SPbLS7oZVgXzLbMb83o4ziXjjN\"\n },\n whETH: {\n symbol: \"whETH\",\n name: \"Wormhole Ethereum\",\n mintAddress: \"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs\",\n decimals: 8,\n referrer: \"CXPTcSxxh4AT38gtv3SPbLS7oZVgXzLbMb83o4ziXjjN\"\n },\n LIQ: {\n symbol: \"LIQ\",\n name: \"LIQ\",\n mintAddress: \"4wjPQJ6PrkC4dHhYghwJzGBVP78DkBzA2U3kHoFNBuhj\",\n decimals: 6,\n tags: [\"raydium\"]\n },\n USDT: {\n symbol: \"USDT\",\n name: \"USDT\",\n mintAddress: \"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\",\n decimals: 6,\n referrer: \"8DwwDNagph8SdwMUdcXS5L9YAyutTyDJmK6cTKrmNFk3\"\n },\n UST: {\n symbol: \"UST\",\n name: \"UST\",\n mintAddress: \"CXLBjMMcwkc17GfJtBos6rQCo1ypeH6eDbB82Kby4MRm\",\n decimals: 9,\n referrer: \"\"\n },\n saberUSDC: {\n symbol: \"USDC\",\n name: \"USDC\",\n mintAddress: \"JEFFSQ3s8T3wKsvp4tnRAsUBW7Cqgnf8ukBZC4C8XBm1\",\n decimals: 9,\n referrer: \"\"\n },\n wHUSD: {\n symbol: \"HUSD\",\n name: \"HUSD\",\n mintAddress: \"BybpSTBoZHsmKnfxYG47GDhVPKrnEKX31CScShbrzUhX\",\n decimals: 8,\n referrer: \"\"\n },\n SYP: {\n symbol: \"SYP\",\n name: \"SYP\",\n mintAddress: \"FnKE9n6aGjQoNWRBZXy4RW6LZVao7qwBonUbiD7edUmZ\",\n decimals: 9,\n tags: [\"raydium\"]\n },\n apUSDC: {\n symbol: \"apUSDC\",\n name: \"apUSDC\",\n mintAddress: \"eqKJTf1Do4MDPyKisMYqVaUFpkEFAs3riGF3ceDH2Ca\",\n decimals: 6,\n referrer: \"\"\n },\n apUSDT: {\n symbol: \"apUSDT\",\n name: \"apUSDT\",\n mintAddress: \"DNhZkUaxHXYvpxZ7LNnHtss8sQgdAfd1ZYS1fB7LKWUZ\",\n decimals: 6,\n referrer: \"\"\n },\n prtSOL: {\n symbol: \"prtSOL\",\n name: \"prtSOL\",\n mintAddress: \"BdZPG9xWrG3uFrx2KrUW1jT4tZ9VKPDWknYihzoPRJS3\",\n decimals: 9,\n referrer: \"\"\n },\n ZBC: {\n symbol: \"ZBC\",\n name: \"ZBC\",\n mintAddress: \"zebeczgi5fSEtbpfQKVZKCJ3WgYXxjkMUkNNx7fLKAF\",\n decimals: 9,\n referrer: \"\"\n },\n wALEPH: {\n symbol: \"wALEPH\",\n name: \"wALEPH\",\n mintAddress: \"3UCMiSnkcnkPE1pgQ5ggPCBv6dXgVUy16TmMUe1WpG9x\",\n decimals: 8,\n referrer: \"\"\n },\n SLCL: {\n symbol: \"SLCL\",\n name: \"SLCL\",\n mintAddress: \"SLCLww7nc1PD2gQPQdGayHviVVcpMthnqUz2iWKhNQV\",\n decimals: 9,\n referrer: \"\"\n },\n stSOL: {\n symbol: \"stSOL\",\n name: \"stSOL\",\n mintAddress: \"7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj\",\n decimals: 9,\n referrer: \"\"\n },\n socn: {\n symbol: \"SOCN\",\n name: \"SOCN\",\n mintAddress: \"5oVNBeEEQvYi1cX3ir8Dx5n1P7pdxydbGF2X4TxVusJm\",\n decimals: 9,\n referrer: \"\"\n },\n MAI: {\n symbol: \"MAI\",\n name: \"MAI\",\n mintAddress: \"9mWRABuz2x6koTPCWiCPM49WUbcrNqGTHBV9T9k7y1o7\",\n decimals: 9,\n referrer: \"\"\n },\n acUSDC: {\n symbol: \"acUSDC\",\n name: \"acUSDC\",\n mintAddress: \"EwxNF8g9UfmsJVcZFTpL9Hx5MCkoQFoJi6XNWzKf1j8e\",\n decimals: 9,\n referrer: \"\"\n },\n abBUSD: {\n symbol: \"abBUSD\",\n name: \"abBUSD\",\n mintAddress: \"6nuaX3ogrr2CaoAPjtaKHAoBNWok32BMcRozuf32s2QF\",\n decimals: 9,\n referrer: \"\"\n },\n saberWUSDC: {\n symbol: \"HUSD\",\n name: \"HUSD\",\n mintAddress: \"88881Hu2jGMfCs9tMu5Rr7Ah7WBNBuXqde4nR5ZmKYYy\",\n decimals: 8,\n referrer: \"\"\n },\n USDK: {\n symbol: \"USDK\",\n name: \"USDK\",\n mintAddress: \"2kycGCD8tJbrjJJqWN2Qz5ysN9iB4Bth3Uic4mSB7uak\",\n decimals: 9,\n referrer: \"8DwwDNagph8SdwMUdcXS5L9YAyutTyDJmK6cTKrmNFk3\"\n },\n saberDAI: {\n symbol: \"DAI\",\n name: \"DAI\",\n mintAddress: \"FYpdBuyAHSbdaAyD1sKkxyLWbAP8uUW9h6uvdhK74ij1\",\n decimals: 9,\n referrer: \"8DwwDNagph8SdwMUdcXS5L9YAyutTyDJmK6cTKrmNFk3\"\n },\n saberBUSD: {\n symbol: \"wBUSD\",\n name: \"BUSD\",\n mintAddress: \"AJ1W9A9N9dEMdVyoDiam2rV44gnBm2csrPDP7xqcapgX\",\n decimals: 9,\n referrer: \"8DwwDNagph8SdwMUdcXS5L9YAyutTyDJmK6cTKrmNFk3\"\n },\n saberFRAX: {\n symbol: \"FRAX\",\n name: \"FRAX\",\n mintAddress: \"8L8pDf3jutdpdr4m3np68CL9ZroLActrqwxi6s9Ah5xU\",\n decimals: 9,\n referrer: \"8DwwDNagph8SdwMUdcXS5L9YAyutTyDJmK6cTKrmNFk3\"\n },\n WUSDT: {\n symbol: \"WUSDT\",\n name: \"Wrapped USDT\",\n mintAddress: \"BQcdHdAQW1hczDbBi9hiegXAR7A98Q9jx3X3iBBBDiq4\",\n decimals: 6,\n referrer: \"CA98hYunCLKgBuD6N8MJSgq1GbW9CXdksLf5mw736tS3\"\n },\n USDC: {\n symbol: \"USDC\",\n name: \"USDC\",\n mintAddress: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: 6,\n referrer: \"92vdtNjEg6Zth3UU1MgPgTVFjSEzTHx66aCdqWdcRkrg\"\n },\n CASH: {\n symbol: \"CASH\",\n name: \"CASH\",\n mintAddress: \"CASHVDm2wsJXfhj6VWxb7GiMdoLc17Du7paH4bNr5woT\",\n decimals: 6,\n referrer: \"\"\n },\n WUSDC: {\n symbol: \"WUSDC\",\n name: \"Wrapped USDC\",\n mintAddress: \"BXXkv6z8ykpG1yuvUDPgh732wzVHB69RnB9YgSYh3itW\",\n decimals: 6\n },\n weUNI: {\n symbol: \"weUNI\",\n name: \"weUNI\",\n mintAddress: \"8FU95xFJhUUkyyCLU13HSzDLs7oC4QZdXQHL6SCeab36\",\n decimals: 8,\n tags: [\"raydium\"]\n },\n weSUSHI: {\n symbol: \"weSUSHI\",\n name: \"weSUSHI\",\n mintAddress: \"ChVzxWRmrTeSgwd3Ui3UumcN8KX7VK3WaD4KGeSKpypj\",\n decimals: 8,\n tags: [\"raydium\"]\n },\n weAXS: {\n symbol: \"weAXS\",\n name: \"weAXS\",\n mintAddress: \"HysWcbHiYY9888pHbaqhwLYZQeZrcQMXKQWRqS7zcPK5\",\n decimals: 8,\n tags: [\"raydium\"]\n },\n weSHIB: {\n symbol: \"weSHIB\",\n name: \"weSHIB\",\n mintAddress: \"CiKu4eHsVrc1eueVQeHn7qhXTcVu95gSQmBpX4utjL9z\",\n decimals: 8,\n tags: [\"raydium\"]\n },\n weDYDX: {\n symbol: \"weDYDX\",\n name: \"weDYDX\",\n mintAddress: \"4Hx6Bj56eGyw8EJrrheM6LBQAvVYRikYCWsALeTrwyRU\",\n decimals: 8,\n tags: [\"raydium\"]\n },\n weSAND: {\n symbol: \"weSAND\",\n name: \"weSAND\",\n mintAddress: \"49c7WuCZkQgc3M4qH8WuEUNXfgwupZf1xqWkDQ7gjRGt\",\n decimals: 8,\n tags: [\"raydium\"]\n },\n weMANA: {\n symbol: \"weMANA\",\n name: \"weMANA\",\n mintAddress: \"7dgHoN8wBZCc5wbnQ2C47TDnBMAxG4Q5L3KjP67z8kNi\",\n decimals: 8,\n tags: [\"raydium\"]\n },\n CAVE: {\n symbol: \"CAVE\",\n name: \"CAVE\",\n mintAddress: \"4SZjjNABoqhbd4hnapbvoEPEqT8mnNkfbEoAwALf1V8t\",\n decimals: 6,\n tags: [\"raydium\"]\n },\n BLOCK: {\n symbol: \"BLOCK\",\n name: \"BLOCK\",\n mintAddress: \"NFTUkR4u7wKxy9QLaX2TGvd9oZSWoMo4jqSJqdMb7Nk\",\n decimals: 6,\n tags: [\"raydium\"]\n },\n SOLAR: {\n symbol: \"SOLAR\",\n name: \"SOLAR\",\n mintAddress: \"2wmKXX1xsxLfrvjEPrt2UHiqj8Gbzwxvffr9qmNjsw8g\",\n decimals: 9,\n tags: [\"raydium\"]\n },\n BASIS: {\n symbol: \"BASIS\",\n name: \"BASIS\",\n mintAddress: \"Basis9oJw9j8cw53oMV7iqsgo6ihi9ALw4QR31rcjUJa\",\n decimals: 6,\n tags: [\"raydium\"]\n },\n SOLX: {\n symbol: \"SOLX\",\n name: \"SOLX\",\n mintAddress: \"CH74tuRLTYcxG7qNJCsV9rghfLXJCQJbsu7i52a8F1Gn\",\n decimals: 9,\n tags: [\"raydium\"]\n },\n CHICKS: {\n symbol: \"CHICKS\",\n name: \"CHICKS\",\n mintAddress: \"cxxShYRVcepDudXhe7U62QHvw8uBJoKFifmzggGKVC2\",\n decimals: 9,\n tags: [\"raydium\"]\n },\n GST: {\n symbol: \"GST\",\n name: \"GST\",\n mintAddress: \"AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB\",\n decimals: 9,\n tags: [\"orca\"]\n },\n GMT: {\n symbol: \"GMT\",\n name: \"GMT\",\n mintAddress: \"7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx\",\n decimals: 9,\n tags: [\"orca\"]\n },\n sRLY: {\n symbol: \"sRLY\",\n name: \"sRLY\",\n mintAddress: \"RLYv2ubRMDLcGG2UyvPmnPmkfuQTsMbg4Jtygc7dmnq\",\n decimals: 9,\n tags: [\"orca\"]\n },\n MEAN: {\n symbol: \"MEAN\",\n name: \"MEAN\",\n mintAddress: \"MEANeD3XDdUmNMsRGjASkSWdC8prLYsoRJ61pPeHctD\",\n decimals: 6,\n tags: [\"raydium\"]\n },\n MBS: {\n symbol: \"MBS\",\n name: \"MBS\",\n mintAddress: \"Fm9rHUTF5v3hwMLbStjZXqNBBoZyGriQaFM6sTFz3K8A\",\n decimals: 6,\n tags: [\"raydium\"]\n },\n SVT: {\n symbol: \"SVT\",\n name: \"SVT\",\n mintAddress: \"svtMpL5eQzdmB3uqK9NXaQkq8prGZoKQFNVJghdWCkV\",\n decimals: 6,\n tags: [\"raydium\"]\n },\n SLC: {\n symbol: \"SLC\",\n name: \"SLC\",\n mintAddress: \"METAmTMXwdb8gYzyCPfXXFmZZw4rUsXX58PNsDg7zjL\",\n decimals: 6,\n tags: [\"raydium\"]\n },\n PRISM: {\n symbol: \"PRISM\",\n name: \"PRISM\",\n mintAddress: \"PRSMNsEPqhGVCH1TtWiJqPjJyh2cKrLostPZTNy1o5x\",\n decimals: 6,\n tags: [\"raydium\"]\n },\n YFI: {\n symbol: \"YFI\",\n name: \"Wrapped YFI\",\n mintAddress: \"3JSf5tPeuscJGtaCp5giEiDhv51gQ4v3zWg8DGgyLfAB\",\n decimals: 6,\n referrer: \"DZjgzKfYzZBBSTo5vytMYvGdNF933DvuX8TftDMrThrb\"\n },\n LINK: {\n symbol: \"LINK\",\n name: \"Wrapped Chainlink\",\n mintAddress: \"CWE8jPTUYhdCTZYWPTe1o5DFqfdjzWKc9WKz6rSjQUdG\",\n decimals: 6,\n referrer: \"DRSKKsYZaPEFkRgGywo7KWBGZikf71R9aDr8tjtpr41V\"\n },\n XRP: {\n symbol: \"XRP\",\n name: \"Wrapped XRP\",\n mintAddress: \"Ga2AXHpfAF6mv2ekZwcsJFqu7wB4NV331qNH7fW9Nst8\",\n decimals: 6,\n referrer: \"6NeHPXG142tAE2Ej3gHgT2N66i1KH6PFR6PBZw6RyrwH\"\n },\n SUSHI: {\n symbol: \"SUSHI\",\n name: \"Wrapped SUSHI\",\n mintAddress: \"AR1Mtgh7zAtxuxGd2XPovXPVjcSdY3i4rQYisNadjfKy\",\n decimals: 6,\n referrer: \"59QxHeHgb28tDc3gStnrW8FNKC9qWuRmRZHBaAqCerJX\"\n },\n ALEPH: {\n symbol: \"ALEPH\",\n name: \"Wrapped ALEPH\",\n mintAddress: \"CsZ5LZkDS7h9TDKjrbL7VAwQZ9nsRu8vJLhRYfmGaN8K\",\n decimals: 6,\n referrer: \"8FKAKrenJMDd7V6cxnM5BsymHTjqxgodtHbLwZReMnWW\"\n },\n SNY: {\n symbol: \"SNY\",\n name: \"SNY\",\n mintAddress: \"4dmKkXNHdgYsXqBHCuMikNQWwVomZURhYvkkX5c4pQ7y\",\n decimals: 6,\n referrer: \"G7gyaTNn2hgjF67SWs4Ee9PEaFU2xadhtXL8HmkJ2cNL\"\n },\n SLRS: {\n symbol: \"SLRS\",\n name: \"SLRS\",\n mintAddress: \"SLRSSpSLUTP7okbCUBYStWCo1vUgyt775faPqz8HUMr\",\n decimals: 6,\n referrer: \"AmqeHgTdm6kBzy5ewZFKuMAfbynZmhve1GQxbJzQFLbP\"\n },\n MNGO: {\n symbol: \"MNGO\",\n name: \"Mango\",\n mintAddress: \"MangoCzJ36AjZyKwVj3VnYU4GTonjfVEnJmvvWaxLac\",\n decimals: 6,\n referrer: \"CijuvE6qDpxZ5WqdEQEe7mS11fXEKiiHc7RR8wRiGzjY\"\n },\n LIKE: {\n symbol: \"LIKE\",\n name: \"LIKE\",\n mintAddress: \"3bRTivrVsitbmCTGtqwp7hxXPsybkjn4XLNtPsHqa3zR\",\n decimals: 9,\n referrer: \"2rnVeVGfM88XqyNyBzGWEb7JViYKqncFzjWq5h1ujS9A\"\n },\n ORCA: {\n symbol: \"ORCA\",\n name: \"ORCA\",\n mintAddress: \"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\",\n decimals: 6,\n referrer: \"\"\n },\n SHDW: {\n symbol: \"SHDW\",\n name: \"SHDW\",\n mintAddress: \"SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y\",\n decimals: 9,\n referrer: \"\"\n },\n BOP: {\n symbol: \"BOP\",\n name: \"Boring Protocol\",\n mintAddress: \"BLwTnYKqf7u4qjgZrrsKeNs2EzWkMLqVCu6j8iHyrNA3\",\n decimals: 8,\n referrer: \"FWxBZmNsvNckx8DnaL2NuyMtiQmT1x529WwV4e1UWiGk\"\n },\n SAMO: {\n symbol: \"SAMO\",\n name: \"Samoyed Coin\",\n mintAddress: \"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU\",\n decimals: 9,\n referrer: \"FnMDNFL9t8EpbADSU3hLWBtx7SuwRBB6NM84U3PzSkUu\"\n },\n SXP: {\n symbol: \"SXP\",\n name: \"Wrapped SXP\",\n mintAddress: \"SF3oTvfWzEP3DTwGSvUXRrGTvr75pdZNnBLAH9bzMuX\",\n decimals: 6,\n referrer: \"97Vyotr284UM2Fyq9gbfQ3azMYtgf7cjnsf8pN1PFfY9\"\n },\n HGET: {\n symbol: \"HGET\",\n name: \"Wrapped HGET\",\n mintAddress: \"BtZQfWqDGbk9Wf2rXEiWyQBdBY1etnUUn6zEphvVS7yN\",\n decimals: 6,\n referrer: \"AGY2wy1ANzLM2jJLSkVxPUYAY5iAYXYsLMQkoQsAhucj\"\n },\n CREAM: {\n symbol: \"CREAM\",\n name: \"Wrapped CREAM\",\n mintAddress: \"5Fu5UUgbjpUvdBveb3a1JTNirL8rXtiYeSMWvKjtUNQv\",\n decimals: 6,\n referrer: \"7WPzEiozJ69MQe8bfbss1t2unR6bHR4S7FimiUVRgu7P\"\n },\n UBXT: {\n symbol: \"UBXT\",\n name: \"Wrapped UBXT\",\n mintAddress: \"873KLxCbz7s9Kc4ZzgYRtNmhfkQrhfyWGZJBmyCbC3ei\",\n decimals: 6,\n referrer: \"9aocFzNkSVj9TCS6cJk2uYyuzEpXPWT7xoBBF9JcZ879\"\n },\n HNT: {\n symbol: \"HNT\",\n name: \"Wrapped HNT\",\n mintAddress: \"HqB7uswoVg4suaQiDP3wjxob1G5WdZ144zhdStwMCq7e\",\n decimals: 6,\n referrer: \"B61oHrGCFh8P75Z2cRDiw2nbEwbMyhVfZhMWiwxU2qCV\"\n },\n FRONT: {\n symbol: \"FRONT\",\n name: \"Wrapped FRONT\",\n mintAddress: \"9S4t2NEAiJVMvPdRYKVrfJpBafPBLtvbvyS3DecojQHw\",\n decimals: 6,\n referrer: \"FnasnCc7c43hd2nanSmRjh9Sf9Cgz6aEvNj6wpDznS5h\"\n },\n AKRO: {\n symbol: \"AKRO\",\n name: \"Wrapped AKRO\",\n mintAddress: \"6WNVCuxCGJzNjmMZoKyhZJwvJ5tYpsLyAtagzYASqBoF\",\n decimals: 6,\n referrer: \"FihBmWJbiLSEvq4QZpPPdjokdMgxqq6pESZ7oMkE1qJH\"\n },\n HXRO: {\n symbol: \"HXRO\",\n name: \"Wrapped HXRO\",\n mintAddress: \"DJafV9qemGp7mLMEn5wrfqaFwxsbLgUsGVS16zKRk9kc\",\n decimals: 6,\n referrer: \"4NgrGZDRCzyqiwYvKPEePTKfQXtWzKmSDBoZJjRw6wNC\"\n },\n CWAR: {\n symbol: \"CWAR\",\n name: \"CWAR\",\n mintAddress: \"HfYFjMKNZygfMC8LsQ8LtpPsPxEJoXJx4M6tqi75Hajo\",\n decimals: 9,\n tags: [\"raydium\"]\n },\n SONAR: {\n symbol: \"SONAR\",\n name: \"SONAR\",\n mintAddress: \"sonarX4VtVkQemriJeLm6CKeW3GDMyiBnnAEMw1MRAE\",\n decimals: 9,\n tags: [\"raydium\"]\n },\n BOKU: {\n symbol: \"BOKU\",\n name: \"BOKU\",\n mintAddress: \"CN7qFa5iYkHz99PTctvT4xXUHnxwjQ5MHxCuTJtPN5uS\",\n decimals: 9,\n tags: [\"raydium\"]\n },\n MIMO: {\n symbol: \"MIMO\",\n name: \"MIMO\",\n mintAddress: \"9TE7ebz1dsFo1uQ2T4oYAKSm39Y6fWuHrd6Uk6XaiD16\",\n decimals: 9,\n tags: [\"raydium\"]\n },\n wbWBNB: {\n symbol: \"wbWBNB\",\n name: \"wbWBNB\",\n mintAddress: \"9gP2kCy3wA1ctvYWQk75guqXuHfrEomqydHLtcTCqiLa\",\n decimals: 8,\n tags: [\"raydium\"]\n },\n wePEOPLE: {\n symbol: \"wePEOPLE\",\n name: \"wePEOPLE\",\n mintAddress: \"CobcsUrt3p91FwvULYKorQejgsm5HoQdv5T8RUZ6PnLA\",\n decimals: 8,\n tags: [\"raydium\"]\n },\n DFL: {\n symbol: \"DFL\",\n name: \"DeFi Land\",\n mintAddress: \"DFL1zNkaGPWm1BqAVqRjCZvHmwTFrEaJtbzJWgseoNJh\",\n decimals: 9,\n detailLink: \"https://raydium.medium.com/defi-land-is-launching-on-acceleraytor-8aa06caecc3c\",\n docs: {\n website: \"https://defiland.app/\"\n },\n socials: {\n Discord: \"https://discord.gg/defiland\",\n Medium: \"https://defiland.medium.com/\",\n Twitter: \"https://twitter.com/DeFi_Land\",\n Telegram: \"https://t.me/defiland_official\"\n },\n tags: [\"raydium\"]\n },\n SHILL: {\n symbol: \"SHILL\",\n name: \"SHILL\",\n mintAddress: \"6cVgJUqo4nmvQpbgrDZwyfd6RwWw5bfnCamS3M9N1fd\",\n decimals: 6,\n tags: [\"raydium\"]\n },\n APT: {\n symbol: \"APT\",\n name: \"APT\",\n mintAddress: \"APTtJyaRX5yGTsJU522N4VYWg3vCvSb65eam5GrPT5Rt\",\n decimals: 6,\n tags: [\"raydium\"]\n },\n UNI: {\n symbol: \"UNI\",\n name: \"Wrapped UNI\",\n mintAddress: \"DEhAasscXF4kEGxFgJ3bq4PpVGp5wyUxMRvn6TzGVHaw\",\n decimals: 6,\n referrer: \"4ntxDv95ajBbXfZyGy3UhcQDx8xmH1yJ6eKvuNNH466x\"\n },\n SRM: {\n symbol: \"SRM\",\n name: \"Serum\",\n mintAddress: \"SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt\",\n decimals: 6,\n referrer: \"HYxa4Ea1dz7ya17Cx18rEGUA1WbCvKjXjFKrnu8CwugH\"\n },\n GENE: {\n symbol: \"GENE\",\n name: \"Genopets\",\n mintAddress: \"GENEtH5amGSi8kHAtQoezp1XEXwZJ8vcuePYnXdKrMYz\",\n decimals: 9,\n referrer: \"HYxa4Ea1dz7ya17Cx18rEGUA1WbCvKjXjFKrnu8CwugH\"\n },\n FTT: {\n symbol: \"FTT\",\n name: \"Wrapped FTT\",\n mintAddress: \"FTT9rBBrYwcHam4qLvkzzzhrsihYMbZ3k6wJbdoahxAt\",\n decimals: 9,\n referrer: \"CafpgSh8KGL2GPTjdXfctD3vXngNZDJ3Q92FTfV71Hmt\"\n },\n wFTT: {\n symbol: \"wFTT\",\n name: \"Wormhole FTT\",\n mintAddress: \"FTT9rBBrYwcHam4qLvkzzzhrsihYMbZ3k6wJbdoahxAt\",\n decimals: 9,\n referrer: \"CafpgSh8KGL2GPTjdXfctD3vXngNZDJ3Q92FTfV71Hmt\"\n },\n MSRM: {\n symbol: \"MSRM\",\n name: \"MegaSerum\",\n mintAddress: \"MSRMcoVyrFxnSgo5uXwone5SKcGhT1KEJMFEkMEWf9L\",\n decimals: 0,\n referrer: \"Ge5q9x8gDUNYqqLA1MdnCzWNJGsbj3M15Yxse2cDbw9z\"\n },\n TOMO: {\n symbol: \"TOMO\",\n name: \"Wrapped TOMO\",\n mintAddress: \"GXMvfY2jpQctDqZ9RoU3oWPhufKiCcFEfchvYumtX7jd\",\n decimals: 6,\n referrer: \"9fexfN3eZomF5gfenG5L9ydbKRQkPhq6x74rb5iLrvXP\"\n },\n KARMA: {\n symbol: \"KARMA\",\n name: \"Wrapped KARMA\",\n mintAddress: \"EcqExpGNFBve2i1cMJUTR4bPXj4ZoqmDD2rTkeCcaTFX\",\n decimals: 4\n },\n LUA: {\n symbol: \"LUA\",\n name: \"Wrapped LUA\",\n mintAddress: \"EqWCKXfs3x47uVosDpTRgFniThL9Y8iCztJaapxbEaVX\",\n decimals: 6,\n referrer: \"HuZwNApjVFuFSDgrwZA8GP2JD7WMby4qt6rkWDnaMo7j\"\n },\n MATH: {\n symbol: \"MATH\",\n name: \"Wrapped MATH\",\n mintAddress: \"GeDS162t9yGJuLEHPWXXGrb1zwkzinCgRwnT8vHYjKza\",\n decimals: 6,\n referrer: \"C9K1M8sJX8WMdsnFT7DuzdiHHunEj79EsLuz4DixQYGm\"\n },\n KEEP: {\n symbol: \"KEEP\",\n name: \"Wrapped KEEP\",\n mintAddress: \"GUohe4DJUA5FKPWo3joiPgsB7yzer7LpDmt1Vhzy3Zht\",\n decimals: 6\n },\n SWAG: {\n symbol: \"SWAG\",\n name: \"Wrapped SWAG\",\n mintAddress: \"9F9fNTT6qwjsu4X4yWYKZpsbw5qT7o6yR2i57JF2jagy\",\n decimals: 6\n },\n FIDA: {\n symbol: \"FIDA\",\n name: \"Bonfida\",\n mintAddress: \"EchesyfXePKdLtoiZSL8pBe8Myagyy8ZRqsACNCFGnvp\",\n decimals: 6,\n referrer: \"AeAsG75UmyPDB271c6NHonHxXAPXfkvhcf2xjfJhReS8\"\n },\n KIN: {\n symbol: \"KIN\",\n name: \"KIN\",\n mintAddress: \"kinXdEcpDQeHPEuQnqmUgtYykqKGVFq6CeVX5iAHJq6\",\n decimals: 5,\n referrer: \"AevFXmApVxN2yk1iemSxXc6Wy7Z1udUEfST11kuYKmr9\"\n },\n MAPS: {\n symbol: \"MAPS\",\n name: \"MAPS\",\n mintAddress: \"MAPS41MDahZ9QdKXhVa4dWB9RuyfV4XqhyAZ8XcYepb\",\n decimals: 6\n },\n OXY: {\n symbol: \"OXY\",\n name: \"OXY\",\n mintAddress: \"z3dn17yLaGMKffVogeFHQ9zWVcXgqgf3PQnDsNs2g6M\",\n decimals: 6\n },\n RAY: {\n symbol: \"RAY\",\n name: \"Raydium\",\n mintAddress: \"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\",\n decimals: 6,\n referrer: \"33XpMmMQRf6tSPpmYyzpwU4uXpZHkFwCZsusD9dMYkjy\"\n },\n MNDE: {\n symbol: \"MNDE\",\n name: \"MNDE\",\n mintAddress: \"MNDEFzGvMt87ueuHvVU9VcTqsAP5b3fTGPsHuuPA5ey\",\n decimals: 9,\n tags: [\"raydium\"]\n },\n PAI: {\n symbol: \"PAI\",\n name: \"Pai\",\n mintAddress: \"Ea5SjE2Y6yvCeW5dYTn7PYMuW5ikXkvbGdcmSnXeaLjS\",\n decimals: 6,\n referrer: \"\"\n },\n SBR: {\n symbol: \"SBR\",\n name: \"Saber\",\n mintAddress: \"Saber2gLauYim4Mvftnrasomsv6NvAuncvMEZwcLpD1\",\n decimals: 6,\n referrer: \"\"\n },\n COPE: {\n symbol: \"COPE\",\n name: \"COPE\",\n mintAddress: \"8HGyAAB1yoM1ttS7pXjHMa3dukTFGQggnFFH3hJZgzQh\",\n decimals: 6,\n referrer: \"G7UYwWhkmgeL57SUKFF45K663V9TdXZw6Ho6ZLQ7p4p\"\n },\n STEP: {\n symbol: \"STEP\",\n name: \"STEP\",\n mintAddress: \"StepAscQoEioFxxWGnh2sLBDFp9d8rvKz2Yp39iDpyT\",\n decimals: 9,\n referrer: \"EFQVX1S6dFroDDhJDAnMTX4fCfjt4fJXHdk1eEtJ2uRY\"\n },\n MEDIA: {\n symbol: \"MEDIA\",\n name: \"MEDIA\",\n mintAddress: \"ETAtLmCmsoiEEKfNrHKJ2kYy3MoABhU6NQvpSfij5tDs\",\n decimals: 6,\n referrer: \"DiLuXdZ5TbQ1jUNEF6tNstHNqXJ3mTCrsVrM6DeX18Mh\"\n },\n MER: {\n symbol: \"MER\",\n name: \"Mercurial\",\n mintAddress: \"MERt85fc5boKw3BW1eYdxonEuJNvXbiMbs6hvheau5K\",\n decimals: 6,\n referrer: \"36F4ryvqaNW2yKQsAry4ZHCZ3j7tz3gtEz7NEwv7pSRu\"\n },\n ROPE: {\n symbol: \"ROPE\",\n name: \"ROPE\",\n mintAddress: \"8PMHT4swUMtBzgHnh5U564N5sjPSiUz2cjEQzFnnP1Fo\",\n decimals: 9,\n referrer: \"5sGVVniBSPLTwRHDETShovq7STRH2rJwbvdvvH3NcVTF\"\n },\n TULIP: {\n symbol: \"TULIP\",\n name: \"Tulip\",\n mintAddress: \"TuLipcqtGVXP9XR62wM8WWCm6a9vhLs7T1uoWBk6FDs\",\n decimals: 6\n },\n ATLAS: {\n symbol: \"ATLAS\",\n name: \"Atlas\",\n mintAddress: \"ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx\",\n decimals: 8\n },\n POLIS: {\n symbol: \"POLIS\",\n name: \"Polis\",\n mintAddress: \"poLisWXnNRwC6oBu1vHiuKQzFjGL4XDSu4g9qjz9qVk\",\n decimals: 8\n },\n GRAPE: {\n symbol: \"GRAPE\",\n name: \"Grape\",\n mintAddress: \"8upjSpvjcdpuzhfR1zriwg5NXkwDruejqNE9WNbPRtyA\",\n decimals: 6\n },\n LARIX: {\n symbol: \"LARIX\",\n name: \"Larix\",\n mintAddress: \"Lrxqnh6ZHKbGy3dcrCED43nsoLkM1LTzU2jRfWe8qUC\",\n decimals: 6\n },\n WOOF: {\n symbol: \"WOOF\",\n name: \"WOOF\",\n mintAddress: \"9nEqaUcb16sQ3Tn1psbkWqyhPdLmfHWjKGymREjsAgTE\",\n decimals: 6,\n tags: [\"raydium\"]\n },\n SLND: {\n symbol: \"SLND\",\n name: \"SLND\",\n mintAddress: \"SLNDpmoWTVADgEdndyvWzroNL7zSi1dF9PC3xHGtPwp\",\n decimals: 6,\n tags: [\"raydium\"]\n },\n STARS: {\n symbol: \"STARS\",\n name: \"STARS\",\n mintAddress: \"HCgybxq5Upy8Mccihrp7EsmwwFqYZtrHrsmsKwtGXLgW\",\n decimals: 6,\n tags: [\"raydium\"]\n },\n wLDO: {\n symbol: \"wLDO\",\n name: \"Wormhole-wrapped Lido DAO Token\",\n mintAddress: \"HZRCwxP2Vq9PCpPXooayhJ2bxTpo5xfpQrwB1svh332p\",\n decimals: 8\n },\n wUST: {\n symbol: \"wUST\",\n name: \"UST (Wormhole)\",\n mintAddress: \"9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i\",\n decimals: 6\n },\n wLUNA: {\n symbol: \"wLUNA\",\n name: \"LUNA (Wormhole)\",\n mintAddress: \"F6v4wfAdJB8D8p77bMXZgYt8TDKsYxLYxH5AFhUkYx9W\",\n decimals: 6\n },\n CMFI: {\n symbol: \"CMFI\",\n name: \"Compendium.Fi\",\n mintAddress: \"5Wsd311hY8NXQhkt9cWHwTnqafk7BGEbLu8Py3DSnPAr\",\n decimals: 6\n },\n PSY: {\n symbol: \"PSY\",\n name: \"PsyOptions\",\n mintAddres: \"PsyFiqqjiv41G7o5SMRzDJCu4psptThNR2GtfeGHfSq\",\n decimals: 6\n },\n UXD: {\n symbol: \"UXD\",\n name: \"UXD Stablecoin\",\n mintAddres: \"7kbnvuGBxxj8AG9qp8Scn56muWGaRaFqxg1FsRp3PaFT\",\n decimals: 6\n },\n SUNNY: {\n symbol: \"SUNNY\",\n name: \"Sunny Governance Token\",\n mintAddres: \"SUNNYWgPQmFxe9wTZzNK7iPnJ3vYDrkgnxJRJm1s3ag\",\n decimals: 6\n },\n USDCet: {\n symbol: \"USDCet\",\n name: \"USD Coin (Wormhole from Ethereum)\",\n mintAddress: \"A9mUU4qviSctJVPJdBJWkb28deg915LYJKrzQ19ji3FM\",\n decimals: 6\n }\n};\nvar LP_TOKENS = {\n \"RAY-WUSDT\": {\n symbol: \"RAY-WUSDT\",\n name: \"RAY-WUSDT V2 LP\",\n coin: { ...TOKENS.RAY },\n pc: { ...TOKENS.WUSDT },\n mintAddress: \"CzPDyvotTcxNqtPne32yUiEVQ6jk42HZi1Y3hUu7qf7f\",\n decimals: TOKENS.RAY.decimals\n },\n \"RAY-SOL\": {\n symbol: \"RAY-SOL\",\n name: \"RAY-SOL LP\",\n coin: { ...TOKENS.RAY },\n pc: { ...NATIVE_SOL },\n mintAddress: \"134Cct3CSdRCbYgq5SkwmHgfwjJ7EM5cG9PzqffWqECx\",\n decimals: TOKENS.RAY.decimals\n },\n \"LINK-WUSDT\": {\n symbol: \"LINK-WUSDT\",\n name: \"LINK-WUSDT LP\",\n coin: { ...TOKENS.LINK },\n pc: { ...TOKENS.WUSDT },\n mintAddress: \"EVDmwajM5U73PD34bYPugwiA4Eqqbrej4mLXXv15Z5qR\",\n decimals: TOKENS.LINK.decimals\n },\n \"ETH-WUSDT\": {\n symbol: \"ETH-WUSDT\",\n name: \"ETH-WUSDT LP\",\n coin: { ...TOKENS.ETH },\n pc: { ...TOKENS.WUSDT },\n mintAddress: \"KY4XvwHy7JPzbWYAbk23jQvEb4qWJ8aCqYWREmk1Q7K\",\n decimals: TOKENS.ETH.decimals\n },\n \"RAY-USDC\": {\n symbol: \"RAY-USDC\",\n name: \"RAY-USDC LP\",\n coin: { ...TOKENS.RAY },\n pc: { ...TOKENS.USDC },\n mintAddress: \"FgmBnsF5Qrnv8X9bomQfEtQTQjNNiBCWRKGpzPnE5BDg\",\n decimals: TOKENS.RAY.decimals\n },\n \"RAY-SRM\": {\n symbol: \"RAY-SRM\",\n name: \"RAY-SRM LP\",\n coin: { ...TOKENS.RAY },\n pc: { ...TOKENS.SRM },\n mintAddress: \"5QXBMXuCL7zfAk39jEVVEvcrz1AvBGgT9wAhLLHLyyUJ\",\n decimals: TOKENS.RAY.decimals\n },\n \"RAY-WUSDT-V3\": {\n symbol: \"RAY-WUSDT\",\n name: \"RAY-WUSDT V3 LP\",\n coin: { ...TOKENS.RAY },\n pc: { ...TOKENS.WUSDT },\n mintAddress: \"FdhKXYjCou2jQfgKWcNY7jb8F2DPLU1teTTTRfLBD2v1\",\n decimals: TOKENS.RAY.decimals\n },\n \"RAY-USDC-V3\": {\n symbol: \"RAY-USDC\",\n name: \"RAY-USDC LP\",\n coin: { ...TOKENS.RAY },\n pc: { ...TOKENS.USDC },\n mintAddress: \"BZFGfXMrjG2sS7QT2eiCDEevPFnkYYF7kzJpWfYxPbcx\",\n decimals: TOKENS.RAY.decimals\n },\n \"RAY-SRM-V3\": {\n symbol: \"RAY-SRM\",\n name: \"RAY-SRM LP\",\n coin: { ...TOKENS.RAY },\n pc: { ...TOKENS.SRM },\n mintAddress: \"DSX5E21RE9FB9hM8Nh8xcXQfPK6SzRaJiywemHBSsfup\",\n decimals: TOKENS.RAY.decimals\n },\n \"RAY-SOL-V3\": {\n symbol: \"RAY-SOL\",\n name: \"RAY-SOL LP\",\n coin: { ...TOKENS.RAY },\n pc: { ...NATIVE_SOL },\n mintAddress: \"F5PPQHGcznZ2FxD9JaxJMXaf7XkaFFJ6zzTBcW8osQjw\",\n decimals: TOKENS.RAY.decimals\n },\n \"RAY-ETH-V3\": {\n symbol: \"RAY-ETH\",\n name: \"RAY-ETH LP\",\n coin: { ...TOKENS.RAY },\n pc: { ...TOKENS.ETH },\n mintAddress: \"8Q6MKy5Yxb9vG1mWzppMtMb2nrhNuCRNUkJTeiE3fuwD\",\n decimals: TOKENS.RAY.decimals\n },\n \"FIDA-RAY-V4\": {\n symbol: \"FIDA-RAY\",\n name: \"FIDA-RAY LP\",\n coin: { ...TOKENS.FIDA },\n pc: { ...TOKENS.RAY },\n mintAddress: \"DsBuznXRTmzvEdb36Dx3aVLVo1XmH7r1PRZUFugLPTFv\",\n decimals: TOKENS.FIDA.decimals\n },\n \"OXY-RAY-V4\": {\n symbol: \"OXY-RAY\",\n name: \"OXY-RAY LP\",\n coin: { ...TOKENS.OXY },\n pc: { ...TOKENS.RAY },\n mintAddress: \"FwaX9W7iThTZH5MFeasxdLpxTVxRcM7ZHieTCnYog8Yb\",\n decimals: TOKENS.OXY.decimals\n },\n \"MAPS-RAY-V4\": {\n symbol: \"MAPS-RAY\",\n name: \"MAPS-RAY LP\",\n coin: { ...TOKENS.MAPS },\n pc: { ...TOKENS.RAY },\n mintAddress: \"CcKK8srfVdTSsFGV3VLBb2YDbzF4T4NM2C3UEjC39RLP\",\n decimals: TOKENS.MAPS.decimals\n },\n \"KIN-RAY-V4\": {\n symbol: \"KIN-RAY\",\n name: \"KIN-RAY LP\",\n coin: { ...TOKENS.KIN },\n pc: { ...TOKENS.RAY },\n mintAddress: \"CHT8sft3h3gpLYbCcZ9o27mT5s3Z6VifBVbUiDvprHPW\",\n decimals: 6\n },\n \"RAY-USDT-V4\": {\n symbol: \"RAY-USDT\",\n name: \"RAY-USDT LP\",\n coin: { ...TOKENS.RAY },\n pc: { ...TOKENS.USDT },\n mintAddress: \"C3sT1R3nsw4AVdepvLTLKr5Gvszr7jufyBWUCvy4TUvT\",\n decimals: TOKENS.RAY.decimals\n },\n \"SOL-USDC-V4\": {\n symbol: \"SOL-USDC\",\n name: \"SOL-USDC LP\",\n coin: { ...NATIVE_SOL },\n pc: { ...TOKENS.USDC },\n mintAddress: \"8HoQnePLqPj4M7PUDzfw8e3Ymdwgc7NLGnaTUapubyvu\",\n decimals: NATIVE_SOL.decimals\n },\n \"YFI-USDC-V4\": {\n symbol: \"YFI-USDC\",\n name: \"YFI-USDC LP\",\n coin: { ...TOKENS.YFI },\n pc: { ...TOKENS.USDC },\n mintAddress: \"865j7iMmRRycSYUXzJ33ZcvLiX9JHvaLidasCyUyKaRE\",\n decimals: TOKENS.YFI.decimals\n },\n \"SRM-USDC-V4\": {\n symbol: \"SRM-USDC\",\n name: \"SRM-USDC LP\",\n coin: { ...TOKENS.SRM },\n pc: { ...TOKENS.USDC },\n mintAddress: \"9XnZd82j34KxNLgQfz29jGbYdxsYznTWRpvZE3SRE7JG\",\n decimals: TOKENS.SRM.decimals\n },\n \"FTT-USDC-V4\": {\n symbol: \"FTT-USDC\",\n name: \"FTT-USDC LP\",\n coin: { ...TOKENS.FTT },\n pc: { ...TOKENS.USDC },\n mintAddress: \"75dCoKfUHLUuZ4qEh46ovsxfgWhB4icc3SintzWRedT9\",\n decimals: TOKENS.FTT.decimals\n },\n \"BTC-USDC-V4\": {\n symbol: \"BTC-USDC\",\n name: \"BTC-USDC LP\",\n coin: { ...TOKENS.BTC },\n pc: { ...TOKENS.USDC },\n mintAddress: \"2hMdRdVWZqetQsaHG8kQjdZinEMBz75vsoWTCob1ijXu\",\n decimals: TOKENS.BTC.decimals\n },\n \"SUSHI-USDC-V4\": {\n symbol: \"SUSHI-USDC\",\n name: \"SUSHI-USDC LP\",\n coin: { ...TOKENS.SUSHI },\n pc: { ...TOKENS.USDC },\n mintAddress: \"2QVjeR9d2PbSf8em8NE8zWd8RYHjFtucDUdDgdbDD2h2\",\n decimals: TOKENS.SUSHI.decimals\n },\n \"TOMO-USDC-V4\": {\n symbol: \"TOMO-USDC\",\n name: \"TOMO-USDC LP\",\n coin: { ...TOKENS.TOMO },\n pc: { ...TOKENS.USDC },\n mintAddress: \"CHyUpQFeW456zcr5XEh4RZiibH8Dzocs6Wbgz9aWpXnQ\",\n decimals: TOKENS.TOMO.decimals\n },\n \"LINK-USDC-V4\": {\n symbol: \"LINK-USDC\",\n name: \"LINK-USDC LP\",\n coin: { ...TOKENS.LINK },\n pc: { ...TOKENS.USDC },\n mintAddress: \"BqjoYjqKrXtfBKXeaWeAT5sYCy7wsAYf3XjgDWsHSBRs\",\n decimals: TOKENS.LINK.decimals\n },\n \"ETH-USDC-V4\": {\n symbol: \"ETH-USDC\",\n name: \"ETH-USDC LP\",\n coin: { ...TOKENS.ETH },\n pc: { ...TOKENS.USDC },\n mintAddress: \"13PoKid6cZop4sj2GfoBeujnGfthUbTERdE5tpLCDLEY\",\n decimals: TOKENS.ETH.decimals\n },\n \"COPE-USDC-V4\": {\n symbol: \"COPE-USDC\",\n name: \"COPE-USDC LP\",\n coin: { ...TOKENS.COPE },\n pc: { ...TOKENS.USDC },\n mintAddress: \"2Vyyeuyd15Gp8aH6uKE72c4hxc8TVSLibxDP9vzspQWG\",\n decimals: TOKENS.COPE.decimals\n },\n \"SOL-USDT-V4\": {\n symbol: \"SOL-USDT\",\n name: \"SOL-USDT LP\",\n coin: { ...NATIVE_SOL },\n pc: { ...TOKENS.USDT },\n mintAddress: \"Epm4KfTj4DMrvqn6Bwg2Tr2N8vhQuNbuK8bESFp4k33K\",\n decimals: NATIVE_SOL.decimals\n },\n \"YFI-USDT-V4\": {\n symbol: \"YFI-USDT\",\n name: \"YFI-USDT LP\",\n coin: { ...TOKENS.YFI },\n pc: { ...TOKENS.USDT },\n mintAddress: \"FA1i7fej1pAbQbnY8NbyYUsTrWcasTyipKreDgy1Mgku\",\n decimals: TOKENS.YFI.decimals\n },\n \"SRM-USDT-V4\": {\n symbol: \"SRM-USDT\",\n name: \"SRM-USDT LP\",\n coin: { ...TOKENS.SRM },\n pc: { ...TOKENS.USDT },\n mintAddress: \"HYSAu42BFejBS77jZAZdNAWa3iVcbSRJSzp3wtqCbWwv\",\n decimals: TOKENS.SRM.decimals\n },\n \"FTT-USDT-V4\": {\n symbol: \"FTT-USDT\",\n name: \"FTT-USDT LP\",\n coin: { ...TOKENS.FTT },\n pc: { ...TOKENS.USDT },\n mintAddress: \"2cTCiUnect5Lap2sk19xLby7aajNDYseFhC9Pigou11z\",\n decimals: TOKENS.FTT.decimals\n },\n \"BTC-USDT-V4\": {\n symbol: \"BTC-USDT\",\n name: \"BTC-USDT LP\",\n coin: { ...TOKENS.BTC },\n pc: { ...TOKENS.USDT },\n mintAddress: \"DgGuvR9GSHimopo3Gc7gfkbKamLKrdyzWkq5yqA6LqYS\",\n decimals: TOKENS.BTC.decimals\n },\n \"SUSHI-USDT-V4\": {\n symbol: \"SUSHI-USDT\",\n name: \"SUSHI-USDT LP\",\n coin: { ...TOKENS.SUSHI },\n pc: { ...TOKENS.USDT },\n mintAddress: \"Ba26poEYDy6P2o95AJUsewXgZ8DM9BCsmnU9hmC9i4Ki\",\n decimals: TOKENS.SUSHI.decimals\n },\n \"TOMO-USDT-V4\": {\n symbol: \"TOMO-USDT\",\n name: \"TOMO-USDT LP\",\n coin: { ...TOKENS.TOMO },\n pc: { ...TOKENS.USDT },\n mintAddress: \"D3iGro1vn6PWJXo9QAPj3dfta6dKkHHnmiiym2EfsAmi\",\n decimals: TOKENS.TOMO.decimals\n },\n \"LINK-USDT-V4\": {\n symbol: \"LINK-USDT\",\n name: \"LINK-USDT LP\",\n coin: { ...TOKENS.LINK },\n pc: { ...TOKENS.USDT },\n mintAddress: \"Dr12Sgt9gkY8WU5tRkgZf1TkVWJbvjYuPAhR3aDCwiiX\",\n decimals: TOKENS.LINK.decimals\n },\n \"ETH-USDT-V4\": {\n symbol: \"ETH-USDT\",\n name: \"ETH-USDT LP\",\n coin: { ...TOKENS.ETH },\n pc: { ...TOKENS.USDT },\n mintAddress: \"nPrB78ETY8661fUgohpuVusNCZnedYCgghzRJzxWnVb\",\n decimals: TOKENS.ETH.decimals\n },\n \"YFI-SRM-V4\": {\n symbol: \"YFI-SRM\",\n name: \"YFI-SRM LP\",\n coin: { ...TOKENS.YFI },\n pc: { ...TOKENS.SRM },\n mintAddress: \"EGJht91R7dKpCj8wzALkjmNdUUUcQgodqWCYweyKcRcV\",\n decimals: TOKENS.YFI.decimals\n },\n \"FTT-SRM-V4\": {\n symbol: \"FTT-SRM\",\n name: \"FTT-SRM LP\",\n coin: { ...TOKENS.FTT },\n pc: { ...TOKENS.SRM },\n mintAddress: \"AsDuPg9MgPtt3jfoyctUCUgsvwqAN6RZPftqoeiPDefM\",\n decimals: TOKENS.FTT.decimals\n },\n \"BTC-SRM-V4\": {\n symbol: \"BTC-SRM\",\n name: \"BTC-SRM LP\",\n coin: { ...TOKENS.BTC },\n pc: { ...TOKENS.SRM },\n mintAddress: \"AGHQxXb3GSzeiLTcLtXMS2D5GGDZxsB2fZYZxSB5weqB\",\n decimals: TOKENS.BTC.decimals\n },\n \"SUSHI-SRM-V4\": {\n symbol: \"SUSHI-SRM\",\n name: \"SUSHI-SRM LP\",\n coin: { ...TOKENS.SUSHI },\n pc: { ...TOKENS.SRM },\n mintAddress: \"3HYhUnUdV67j1vn8fu7ExuVGy5dJozHEyWvqEstDbWwE\",\n decimals: TOKENS.SUSHI.decimals\n },\n \"TOMO-SRM-V4\": {\n symbol: \"TOMO-SRM\",\n name: \"TOMO-SRM LP\",\n coin: { ...TOKENS.TOMO },\n pc: { ...TOKENS.SRM },\n mintAddress: \"GgH9RnKrQpaMQeqmdbMvs5oo1A24hERQ9wuY2pSkeG7x\",\n decimals: TOKENS.TOMO.decimals\n },\n \"LINK-SRM-V4\": {\n symbol: \"LINK-SRM\",\n name: \"LINK-SRM LP\",\n coin: { ...TOKENS.LINK },\n pc: { ...TOKENS.SRM },\n mintAddress: \"GXN6yJv12o18skTmJXaeFXZVY1iqR18CHsmCT8VVCmDD\",\n decimals: TOKENS.LINK.decimals\n },\n \"ETH-SRM-V4\": {\n symbol: \"ETH-SRM\",\n name: \"ETH-SRM LP\",\n coin: { ...TOKENS.ETH },\n pc: { ...TOKENS.SRM },\n mintAddress: \"9VoY3VERETuc2FoadMSYYizF26mJinY514ZpEzkHMtwG\",\n decimals: TOKENS.ETH.decimals\n },\n \"SRM-SOL-V4\": {\n symbol: \"SRM-SOL\",\n name: \"SRM-SOL LP\",\n coin: { ...TOKENS.SRM },\n pc: { ...NATIVE_SOL },\n mintAddress: \"AKJHspCwDhABucCxNLXUSfEzb7Ny62RqFtC9uNjJi4fq\",\n decimals: TOKENS.SRM.decimals\n }\n};\n\n// src/constants/lendingReserves.ts\nvar LENDING_RESERVES = [\n {\n name: \"USDC\",\n account: \"FTkSmGsJ3ZqDSHdcnY7ejN1pWV3Ej7i88MYpZyyaqgGt\",\n mintAddress: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n liquiditySupplyTokenAccount: \"64QJd6MYXUjCBvCaZKaqxiKmaMkPUdNonE1KuY1YoGGb\",\n liquidityFeeReceiver: \"GPf4tD3q71BzPU79YCadYB2NnLciXAVmYuxfgbKKzUdU\",\n collateralTokenMint: \"Amig8TisuLpzun8XyGfC5HJHHGUQEscjLgoTWsCCKihg\",\n collateralTokenSupply: \"GkhrquZah6wrGvM5GntLPWaG5TDdCk6n3QPvohHxWpak\",\n destinationCollateralTokenAccount: \"4s4fdm8fsnFdbEnujgASXwDFZ43afVnSzmk7MDA9Lqhn\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.USDC.decimals,\n visible: true\n },\n {\n name: \"USDT\",\n account: \"Csn3exasdhDzxYApmnci3d8Khb629VmgK4NQqdeyZBNt\",\n mintAddress: \"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB\",\n liquiditySupplyTokenAccount: \"124J21csiR1FdDywteXa8LhAmeqBXZRvozhoE7zq9znc\",\n liquidityFeeReceiver: \"3VQV6yjMUXaTcR6KCvZSAgEKkvZUVEQnNdyEREPbjj31\",\n collateralTokenMint: \"gLhY2arqFpmVGkpbBbTi3TeWbsWevA8dqrwbKacK3vJ\",\n collateralTokenSupply: \"CSeQwrb7NHGDJkThJjMPVsQ6Rwb7wMgyFJPDS9gfjxAM\",\n destinationCollateralTokenAccount: \"7t3cWUB6XjwGhqreuK3uxv1BKP5Luczq4VqLSEB4Q9AJ\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.USDT.decimals,\n visible: true\n },\n {\n name: \"SHDW\",\n account: \"E22L7J4KmTLFoARUmfKtdG59jP8sUderp8CJoNvM4gk5\",\n mintAddress: \"SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y\",\n liquiditySupplyTokenAccount: \"3FnPAerK36FzuHEmFmutgPg9axtE1r2uBWTShFELF4Ng\",\n liquidityFeeReceiver: \"F7VXhf6dtnepxA8CirghhfSdt1Lu55BTp8VcT6XYY3qN\",\n collateralTokenMint: \"E8oV8JywpgPxEzaugAzW4bapoN3krEFX9mCoPgvrdTXH\",\n collateralTokenSupply: \"28eVN2FP7mfZHBkfZRA6GMKWwWXzkkgAShQxHVoQLvYs\",\n destinationCollateralTokenAccount: \"7AEQ9jGB4G7F3xx6Asg2GKTLuSYeJRywif5WfEi8uRUV\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.SHDW.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"BASIS\",\n account: \"7wAiwRyM66qfDrDBZD9xLii95tX47xzRPAfQiomrqrsN\",\n mintAddress: \"Basis9oJw9j8cw53oMV7iqsgo6ihi9ALw4QR31rcjUJa\",\n liquiditySupplyTokenAccount: \"CtpeTmX4BKHZJA1DVJNy9FhwNb575epA3pmBM65K4UU2\",\n liquidityFeeReceiver: \"35miYa87bpPqXnaCLzjjzDLUHQ7bXMGvq1N5xazbFs8n\",\n collateralTokenMint: \"GNjwMCt8GmPwQHy45UDzeprHkSTsNQHddsWXADz1HE6H\",\n collateralTokenSupply: \"HbnyViMZsu5W1Y1xhbTaDM5BGqNVZ81jeYFHMMRgktw5\",\n destinationCollateralTokenAccount: \"CgTN1Ng2fzgQZxi1u6sEP8XKJ3GqCyJbmc9G6HACwJBZ\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.BASIS.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"RAY\",\n account: \"9Bm8d2izGsf9eT6Wr79DTnXBkW2LHYVQa57QzeoTbsAF\",\n mintAddress: \"4k3Dyjzvzp8eMZWUXbBCjEvwSkkk59S5iCNLY3QrkX6R\",\n liquiditySupplyTokenAccount: \"9SG6E3jBTTHLNgpV6ueUYypMYMkm4K5zyS9tk9Rsjm8Y\",\n liquidityFeeReceiver: \"4bRQL2hLqfinNJTsiQW6odhYtYjKXH7zsPc2tafadgoj\",\n collateralTokenMint: \"8Lg7TowFuMQoGiTsLE6qV9x3czRgDmVy8f8Vv8KS4uW\",\n collateralTokenSupply: \"2ESAmYeYCW7ee9tcMUdFeW912Sjn8wjeD8odmrvJkeiN\",\n destinationCollateralTokenAccount: \"DAKrpC5HmQrUzbcqKPKE5hK5xfdXdFdf8sxZqhTct4ug\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.RAY.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"SOL\",\n account: \"FzbfXR7sopQL29Ubu312tkqWMxSre4dYSrFyYAjUYiC4\",\n mintAddress: \"11111111111111111111111111111111\",\n liquiditySupplyTokenAccount: \"CPs1jJ5XAjhcAJsmTToWksAiPEqoLwKMbb1Z83rzaaaU\",\n liquidityFeeReceiver: \"9GfaYar1r2HrGANq5qNiQnx88HJ7GULQqxXxt2B4U3Zy\",\n collateralTokenMint: \"H4Q3hDbuMUw8Bu72Ph8oV2xMQ7BFNbekpfQZKS2xF7jW\",\n collateralTokenSupply: \"8sVTGPsSYkAXFS4tfW5k5z9FvcWhvBqYdMyiiWbbuT7g\",\n destinationCollateralTokenAccount: \"77QZQaxe6Gyn3zw2rnHYR2NmG5KaEGbmqPYmjuC4qguB\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: NATIVE_SOL.decimals,\n visible: true\n },\n {\n name: \"mSOL\",\n account: \"5LKgrsUF72MityTntAHWLcXivBGxnxapikFArtKUULwX\",\n mintAddress: \"mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So\",\n liquiditySupplyTokenAccount: \"GppNJmvMn2YRSU6gpqJEkUgic76iFjDU17145q8WF27n\",\n liquidityFeeReceiver: \"6j2mHKx1rSWe4seQbqfD2WksXRg7CaWU2DngNc2Wni8P\",\n collateralTokenMint: \"8cn7JcYVjDZesLa3RTt3NXne4WcDw9PdUneQWuByehwW\",\n collateralTokenSupply: \"MDFmkdjJ92y94DDjKCFjDYoU95e2pPefrDEB4gfP53w\",\n destinationCollateralTokenAccount: \"4GbtgR99acKG27cn9j5yHGsAnfduWqaRCX5s4oeze42C\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.MSOLRAYDIUM.decimals,\n visible: true\n },\n {\n name: \"GMT\",\n account: \"EPm5gyRafEZMHijXuyoA5imPFoEir8KsJ9fd2cyEFrPU\",\n mintAddress: \"7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx\",\n liquiditySupplyTokenAccount: \"FAwuWLXEEtixroNbi1YC6MbREdaGkuqMaseZkSTbdxFN\",\n liquidityFeeReceiver: \"85zBAdS1P3T1UMUKQn9G51xNF9ZwDzeA2HPbHSf7qja1\",\n collateralTokenMint: \"CEGSnMwZmF512Uva5rTiF1Gx1byMDNdT7UpD8vNXuTQJ\",\n collateralTokenSupply: \"ixT3knkW7ybW4W29BWH84kSg55jgbHsLuyZbxCtcsUi\",\n destinationCollateralTokenAccount: \"8v5hr3iXfRTEByShHbSo2yZSLNdACfMJb3aZaJF413NY\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.GMT.decimals,\n visible: true\n },\n {\n name: \"GST\",\n account: \"9CwVAjhpKqkPA27GsikXHxQQgG3oJiiF1ybkcC1pZtGf\",\n mintAddress: \"AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB\",\n liquiditySupplyTokenAccount: \"9eJaphdrHyowLgU4sf5LQTJcvF5CGUfctvUHdNZ1PJU1\",\n liquidityFeeReceiver: \"HyuzaKbBbzzmnjTi9aQw8a1s1WoDpVnMLYaCZwC7WmUH\",\n collateralTokenMint: \"Ghvf8bVnDjv1nbi9b3PjSw9iBWFy2ApmdCUgzmPFmNVi\",\n collateralTokenSupply: \"H49GEYPQusg7evSc2VtpTiYA5GWbpQ7ejpq8TikiwRQN\",\n destinationCollateralTokenAccount: \"5UPnzJVwwgffmnLGs424wBa6e4n9ggRKNe6jHrfDmeUf\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.GST.decimals,\n visible: true\n },\n {\n name: \"PRISM\",\n account: \"5ZETtVZiqomusvAKLtCJvfKdhotc1HornaL5VF1Z2L71\",\n mintAddress: \"PRSMNsEPqhGVCH1TtWiJqPjJyh2cKrLostPZTNy1o5x\",\n liquiditySupplyTokenAccount: \"3eEA9oaSmUkZTxMtN8BU6RnkxdKRaApQCDQknJasL98N\",\n liquidityFeeReceiver: \"8nK9FJ6PPRYb7KEfpRukB8iWhW5Krw2feaFGvPdxowSe\",\n collateralTokenMint: \"5dBFWbVzh8ez9W96krGeN2xkhuvqr6wYUfekKRydw3Jm\",\n collateralTokenSupply: \"GQRtAv3U75ftyBxY4U2WY5FfQh1xoWQ4tAhzWVTpA4u1\",\n destinationCollateralTokenAccount: \"DDBxVLAVVmNBkocJ8JN24n5aQz7wpyCFZhQ3MJgUvWLn\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.PRISM.decimals,\n visible: true\n },\n {\n name: \"sRLY\",\n account: \"6jNicvm4rToeRe3MbkFXNmNfg8iVtZuySGJqqijsZ6j2\",\n mintAddress: \"RLYv2ubRMDLcGG2UyvPmnPmkfuQTsMbg4Jtygc7dmnq\",\n liquiditySupplyTokenAccount: \"6gkCQRT8PaMjemqWEGdMxNHNfpAhhCSva959AiVxUGRa\",\n liquidityFeeReceiver: \"41Qbc6RGJ2zsbAXkQoy7gXNDPmuSo9Z9PkUbALtyCuPU\",\n collateralTokenMint: \"Hjaio12SUVKzCsd7BVmTN8vz1U8CMLhY6GubhKLA5ptN\",\n collateralTokenSupply: \"2ynimffX3RgGkinkHRaAxrs4yt8hj2UDxHxULmWczzyn\",\n destinationCollateralTokenAccount: \"GXVMXjDPJmJXBKz594RhBaLSW7zcxJHtzXBWAiKcWKc9\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.sRLY.decimals,\n visible: true\n },\n {\n name: \"wALEPH\",\n account: \"7MicHAbktN1AmuuBxUGpdmb4iqeiD9GqduejMAX9g415\",\n mintAddress: \"3UCMiSnkcnkPE1pgQ5ggPCBv6dXgVUy16TmMUe1WpG9x\",\n liquiditySupplyTokenAccount: \"6MBECW2vo7wPHHngJDRveiYHHLehwr75iZTYteehciGe\",\n liquidityFeeReceiver: \"81gtUx2z7bFThDrqa4maEj9jYKVQWr1iHxEGkCBYkpmR\",\n collateralTokenMint: \"A2AZDzmyVMkskC4DfnxwP6hbAj3D1LdSLJrpgruWEcBs\",\n collateralTokenSupply: \"9bJmVy8GW9Gv8jsamAKBLQah4aVBFjvekq5nXp4dJs1U\",\n destinationCollateralTokenAccount: \"GTrU2d9bdXFi5hij46vVrLHPnkTHhP4BkEuSyrgqcXvw\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.wALEPH.decimals,\n visible: true\n },\n {\n name: \"SLCL\",\n account: \"3PP7T3RGf6UKG6BvAsQudyZg7qzPLcpmo5eeqoxENvKB\",\n mintAddress: \"SLCLww7nc1PD2gQPQdGayHviVVcpMthnqUz2iWKhNQV\",\n liquiditySupplyTokenAccount: \"54HakR2HCPLPihKGj2DSGr2Kjfg6h35RyEyQeC4gMRjD\",\n liquidityFeeReceiver: \"8YJ2enWhcRnWymBiokzosTw3zDohJPF6g5QmipF22mV5\",\n collateralTokenMint: \"HRPqE6u5MXAcf1VwYzqYujVYTzf3raanUGu8Dt7bBEHE\",\n collateralTokenSupply: \"52F94wWztPYUedByDHCa29HFnZW6nfcX5fDcEfBPEBJH\",\n destinationCollateralTokenAccount: \"9MBbdLSWZzCxoDVWdxSbpUPoVqsK9XYDGECe5ZYN6hoq\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.SLCL.decimals,\n visible: true\n },\n {\n name: \"stSOL\",\n account: \"BsCdKC2ncgS3VnuibTiA5Etx6MZGRnUL2w88iDee3A6Z\",\n mintAddress: \"7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj\",\n liquiditySupplyTokenAccount: \"87YN1wkWLKnWANkPAkhSq3T2xwmj3qbjudKaanCAiZNt\",\n liquidityFeeReceiver: \"2NNqnU8baUcxDT3Sx2anjMGxhtHheK176FkSdCnKteDg\",\n collateralTokenMint: \"27CaAiuFW3EwLcTCaiBnexqm5pxht845AHgSuq36byKX\",\n collateralTokenSupply: \"7GsWR5WbuLPQTQib3pExcRrL3Jjv3xhiTTchUEYBrhfj\",\n destinationCollateralTokenAccount: \"7z5ZGStFQ9ijCXxqCtU4ZV64AiC11d22L1wKecvUNs4s\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.stSOL.decimals,\n visible: true\n },\n {\n name: \"SRM\",\n account: \"9AiGVt7Qtap2ijvim4JSudDYgTrSWhwaZmKv8BWGFms9\",\n mintAddress: \"SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt\",\n liquiditySupplyTokenAccount: \"93JKmnXMYHQ9KPkKRRJ5Mb7bqSv4newhDFvz9QE2suRG\",\n liquidityFeeReceiver: \"EMwowECdn8hdGf89RuyGL8cbygwa14BN9tLbYDXgMckr\",\n collateralTokenMint: \"4QSK13NTKxTBExbMjHFsj3QfHBn4Hfp3DGLSba8GvFvh\",\n collateralTokenSupply: \"9KJNRpfHcdBZH5tTCBsxdUQXrJitpQpmU9T7GxQTQpYK\",\n destinationCollateralTokenAccount: \"4R4V2LatVjWUMpNj5XtfgG4rhPWMwk2ouVyN8gXXbYME\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.SRM.decimals,\n visible: true\n },\n {\n name: \"BTC\",\n account: \"5CXZ2xKG1i2w3fBXsCEC6zhpK5j164gxJ3bzhyoRB3ZP\",\n mintAddress: \"9n4nbM75f5Ui33ZbPYXn59EwSgE8CGsHtAeTH5YFeJ9E\",\n liquiditySupplyTokenAccount: \"dW1q2V7uooHkYBVQ5a6zdKiZVJ4qNWrRqEYy5NmyLoW\",\n liquidityFeeReceiver: \"5BYymW3BYr63xrYMojL6qWMPmpicTXPPnuUykUmAmKnj\",\n collateralTokenMint: \"G5V7t3ZHTUGi6xGfk5nc42P1iRkNN3JhaFwFXkvyDmz5\",\n collateralTokenSupply: \"CpfUmNBXwJwqETF61YMYqHzyXjpraJmQtBT9ZBjzDxWL\",\n destinationCollateralTokenAccount: \"HwTx1mewMgWb6Hkk8eRTbE8WgmNPyk5PZwRoeEjsRfXB\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.BTC.decimals,\n visible: true\n },\n {\n name: \"whETH\",\n account: \"7n9bDFUxehuw7yAHnK9eWKSfMx5u6NYWPVLKYnz93fzj\",\n mintAddress: \"7vfCXTUXx5WJV5JADk17DUJ4ksgau7utNKj4b963voxs\",\n liquiditySupplyTokenAccount: \"EWhUcqPMNVetwrJLJhQSkpzE5sU8nAVtRmJJV2EpgD3g\",\n liquidityFeeReceiver: \"A4RG7kMBBhCUqu7Mge79m7X4ZYHMQ2CTtv8RzF2PLNMu\",\n collateralTokenMint: \"85SyKDLXZPC1sqdFqasywQojutGhDCobbPHM6zczD1Li\",\n collateralTokenSupply: \"Ft59j4mGN3JwD9rixqpepFJoAR2VjDyoESH6qApFQtw7\",\n destinationCollateralTokenAccount: \"5E2FmPnj2Yrn7ZbiGLYtesHQHuUiy4hUKacr7sywcsTv\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.whETH.decimals,\n visible: true\n },\n {\n name: \"ETH\",\n account: \"FxH3A2Bw9q3MDivXuWtr8zxiN3S7dGTEkK4Mm95NR2yB\",\n mintAddress: \"2FPyTwcZLUg1MDrwsyoP4D6s1tM7hAkHYRjkNb5w6Pxk\",\n liquiditySupplyTokenAccount: \"GfPzHMkxRWwM3i2a17ENLo5iRRFdb4iNQAGjTAEGkxJY\",\n liquidityFeeReceiver: \"4oVF2swaCseP9HxsmUrzxbEzxgHPYpyRMwGM8VUfaBiC\",\n collateralTokenMint: \"C1gwRSpKFu4Vjrg9MhNfRjg65SV4CNLsb3C6d7kWFEyV\",\n collateralTokenSupply: \"HnqohLynuMh1JZdKUgbS8v6K1sG2QpVEUQqahdtqKXP6\",\n destinationCollateralTokenAccount: \"3UWp5EuVFpeTpgRRGBudDfYJtiaQWcDYVRJ7scQL4hyo\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.ETH.decimals,\n visible: true\n },\n {\n name: \"GMT\",\n account: \"EPm5gyRafEZMHijXuyoA5imPFoEir8KsJ9fd2cyEFrPU\",\n mintAddress: \"7i5KKsX2weiTkry7jA4ZwSuXGhs5eJBEjY8vVxR4pfRx\",\n liquiditySupplyTokenAccount: \"FAwuWLXEEtixroNbi1YC6MbREdaGkuqMaseZkSTbdxFN\",\n liquidityFeeReceiver: \"85zBAdS1P3T1UMUKQn9G51xNF9ZwDzeA2HPbHSf7qja1\",\n collateralTokenMint: \"CEGSnMwZmF512Uva5rTiF1Gx1byMDNdT7UpD8vNXuTQJ\",\n collateralTokenSupply: \"ixT3knkW7ybW4W29BWH84kSg55jgbHsLuyZbxCtcsUi\",\n destinationCollateralTokenAccount: \"8v5hr3iXfRTEByShHbSo2yZSLNdACfMJb3aZaJF413NY\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.GMT.decimals,\n visible: true\n },\n {\n name: \"GST\",\n account: \"9CwVAjhpKqkPA27GsikXHxQQgG3oJiiF1ybkcC1pZtGf\",\n mintAddress: \"AFbX8oGjGpmVFywbVouvhQSRmiW2aR1mohfahi4Y2AdB\",\n liquiditySupplyTokenAccount: \"9eJaphdrHyowLgU4sf5LQTJcvF5CGUfctvUHdNZ1PJU1\",\n liquidityFeeReceiver: \"HyuzaKbBbzzmnjTi9aQw8a1s1WoDpVnMLYaCZwC7WmUH\",\n collateralTokenMint: \"Ghvf8bVnDjv1nbi9b3PjSw9iBWFy2ApmdCUgzmPFmNVi\",\n collateralTokenSupply: \"H49GEYPQusg7evSc2VtpTiYA5GWbpQ7ejpq8TikiwRQN\",\n destinationCollateralTokenAccount: \"5UPnzJVwwgffmnLGs424wBa6e4n9ggRKNe6jHrfDmeUf\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.GST.decimals,\n visible: true\n },\n {\n name: \"SHDW\",\n account: \"E22L7J4KmTLFoARUmfKtdG59jP8sUderp8CJoNvM4gk5\",\n mintAddress: \"SHDWyBxihqiCj6YekG2GUr7wqKLeLAMK1gHZck9pL6y\",\n liquiditySupplyTokenAccount: \"3FnPAerK36FzuHEmFmutgPg9axtE1r2uBWTShFELF4Ng\",\n liquidityFeeReceiver: \"F7VXhf6dtnepxA8CirghhfSdt1Lu55BTp8VcT6XYY3qN\",\n collateralTokenMint: \"E8oV8JywpgPxEzaugAzW4bapoN3krEFX9mCoPgvrdTXH\",\n collateralTokenSupply: \"28eVN2FP7mfZHBkfZRA6GMKWwWXzkkgAShQxHVoQLvYs\",\n destinationCollateralTokenAccount: \"7AEQ9jGB4G7F3xx6Asg2GKTLuSYeJRywif5WfEi8uRUV\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.SHDW.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"BASIS\",\n account: \"7wAiwRyM66qfDrDBZD9xLii95tX47xzRPAfQiomrqrsN\",\n mintAddress: \"Basis9oJw9j8cw53oMV7iqsgo6ihi9ALw4QR31rcjUJa\",\n liquiditySupplyTokenAccount: \"CtpeTmX4BKHZJA1DVJNy9FhwNb575epA3pmBM65K4UU2\",\n liquidityFeeReceiver: \"35miYa87bpPqXnaCLzjjzDLUHQ7bXMGvq1N5xazbFs8n\",\n collateralTokenMint: \"GNjwMCt8GmPwQHy45UDzeprHkSTsNQHddsWXADz1HE6H\",\n collateralTokenSupply: \"HbnyViMZsu5W1Y1xhbTaDM5BGqNVZ81jeYFHMMRgktw5\",\n destinationCollateralTokenAccount: \"CgTN1Ng2fzgQZxi1u6sEP8XKJ3GqCyJbmc9G6HACwJBZ\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.BASIS.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"PRISM\",\n account: \"5ZETtVZiqomusvAKLtCJvfKdhotc1HornaL5VF1Z2L71\",\n mintAddress: \"PRSMNsEPqhGVCH1TtWiJqPjJyh2cKrLostPZTNy1o5x\",\n liquiditySupplyTokenAccount: \"3eEA9oaSmUkZTxMtN8BU6RnkxdKRaApQCDQknJasL98N\",\n liquidityFeeReceiver: \"8nK9FJ6PPRYb7KEfpRukB8iWhW5Krw2feaFGvPdxowSe\",\n collateralTokenMint: \"5dBFWbVzh8ez9W96krGeN2xkhuvqr6wYUfekKRydw3Jm\",\n collateralTokenSupply: \"GQRtAv3U75ftyBxY4U2WY5FfQh1xoWQ4tAhzWVTpA4u1\",\n destinationCollateralTokenAccount: \"DDBxVLAVVmNBkocJ8JN24n5aQz7wpyCFZhQ3MJgUvWLn\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.PRISM.decimals,\n visible: true\n },\n {\n name: \"wALEPH\",\n account: \"7MicHAbktN1AmuuBxUGpdmb4iqeiD9GqduejMAX9g415\",\n mintAddress: \"3UCMiSnkcnkPE1pgQ5ggPCBv6dXgVUy16TmMUe1WpG9x\",\n liquiditySupplyTokenAccount: \"6MBECW2vo7wPHHngJDRveiYHHLehwr75iZTYteehciGe\",\n liquidityFeeReceiver: \"81gtUx2z7bFThDrqa4maEj9jYKVQWr1iHxEGkCBYkpmR\",\n collateralTokenMint: \"A2AZDzmyVMkskC4DfnxwP6hbAj3D1LdSLJrpgruWEcBs\",\n collateralTokenSupply: \"9bJmVy8GW9Gv8jsamAKBLQah4aVBFjvekq5nXp4dJs1U\",\n destinationCollateralTokenAccount: \"GTrU2d9bdXFi5hij46vVrLHPnkTHhP4BkEuSyrgqcXvw\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.wALEPH.decimals,\n visible: true\n },\n {\n name: \"SLCL\",\n account: \"3PP7T3RGf6UKG6BvAsQudyZg7qzPLcpmo5eeqoxENvKB\",\n mintAddress: \"SLCLww7nc1PD2gQPQdGayHviVVcpMthnqUz2iWKhNQV\",\n liquiditySupplyTokenAccount: \"54HakR2HCPLPihKGj2DSGr2Kjfg6h35RyEyQeC4gMRjD\",\n liquidityFeeReceiver: \"8YJ2enWhcRnWymBiokzosTw3zDohJPF6g5QmipF22mV5\",\n collateralTokenMint: \"HRPqE6u5MXAcf1VwYzqYujVYTzf3raanUGu8Dt7bBEHE\",\n collateralTokenSupply: \"52F94wWztPYUedByDHCa29HFnZW6nfcX5fDcEfBPEBJH\",\n destinationCollateralTokenAccount: \"9MBbdLSWZzCxoDVWdxSbpUPoVqsK9XYDGECe5ZYN6hoq\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.SLCL.decimals,\n visible: true\n },\n {\n name: \"stSOL\",\n account: \"BsCdKC2ncgS3VnuibTiA5Etx6MZGRnUL2w88iDee3A6Z\",\n mintAddress: \"7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj\",\n liquiditySupplyTokenAccount: \"87YN1wkWLKnWANkPAkhSq3T2xwmj3qbjudKaanCAiZNt\",\n liquidityFeeReceiver: \"2NNqnU8baUcxDT3Sx2anjMGxhtHheK176FkSdCnKteDg\",\n collateralTokenMint: \"27CaAiuFW3EwLcTCaiBnexqm5pxht845AHgSuq36byKX\",\n collateralTokenSupply: \"7GsWR5WbuLPQTQib3pExcRrL3Jjv3xhiTTchUEYBrhfj\",\n destinationCollateralTokenAccount: \"7z5ZGStFQ9ijCXxqCtU4ZV64AiC11d22L1wKecvUNs4s\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.stSOL.decimals,\n visible: true\n },\n {\n name: \"SRM\",\n account: \"9AiGVt7Qtap2ijvim4JSudDYgTrSWhwaZmKv8BWGFms9\",\n mintAddress: \"SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt\",\n liquiditySupplyTokenAccount: \"93JKmnXMYHQ9KPkKRRJ5Mb7bqSv4newhDFvz9QE2suRG\",\n liquidityFeeReceiver: \"EMwowECdn8hdGf89RuyGL8cbygwa14BN9tLbYDXgMckr\",\n collateralTokenMint: \"4QSK13NTKxTBExbMjHFsj3QfHBn4Hfp3DGLSba8GvFvh\",\n collateralTokenSupply: \"9KJNRpfHcdBZH5tTCBsxdUQXrJitpQpmU9T7GxQTQpYK\",\n destinationCollateralTokenAccount: \"4R4V2LatVjWUMpNj5XtfgG4rhPWMwk2ouVyN8gXXbYME\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.SRM.decimals,\n visible: true\n },\n {\n name: \"DFL\",\n account: \"9z3qY3jfoPVGAfCqr1w95q5RW29tSNvyitLL67o4E6Lk\",\n mintAddress: \"DFL1zNkaGPWm1BqAVqRjCZvHmwTFrEaJtbzJWgseoNJh\",\n liquiditySupplyTokenAccount: \"BauZ6hiW6Mhffc4CnBh7hox4BxC2kDiHARBXs6xTZ9Zq\",\n liquidityFeeReceiver: \"ECR33vhDDerYAb4vU8FF5P4G55oAPLNnh6YPp3zmk77w\",\n collateralTokenMint: \"47cP8Q9x6EpA3AL3brKnPohMSmmjsn9dAvuCKaeFZu1H\",\n collateralTokenSupply: \"L5FGnzwtpzRisovasyggpAYkZFnSrwLwHWxQ3j1efiV\",\n destinationCollateralTokenAccount: \"3CpSwf5Ait6YGD9XgmGqNqj6jqEBX3PWkxYumt8fzY7L\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.DFL.decimals,\n visible: true\n },\n {\n name: \"ATLAS\",\n account: \"41Pgp5bSZtNgLiWuwi16Nhf6o75cKzbkKULUd53EFdcU\",\n mintAddress: \"ATLASXmbPQxBUYbxPsV97usA3fPQYEqzQBUHgiFCUsXx\",\n liquiditySupplyTokenAccount: \"4U6C1Ym7aBfMNPGMrZqJBVDknhGYmqNM7a2SpcMJreCP\",\n liquidityFeeReceiver: \"GUCRZ7sESTRV5WP9k4w1yVHjNCUrD72iSTx9veSjukzk\",\n collateralTokenMint: \"9eGNc4BZCAgpTSEjbu7ACCLjpnZh1WSdts3y4nMik4e7\",\n collateralTokenSupply: \"9uv5bScpye91V22KU5bgVebQGx1yg98MHWUNfDeYoynJ\",\n destinationCollateralTokenAccount: \"5LrfV4Bnj1uioSKAHTbL5hTh8JTKDLBKxGFxcSDeE2se\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.ATLAS.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"POLIS\",\n account: \"7hxTjiLvBuZcUQnztSRhtvthcsVdu7Na5WWXocwBWA8y\",\n mintAddress: \"poLisWXnNRwC6oBu1vHiuKQzFjGL4XDSu4g9qjz9qVk\",\n liquiditySupplyTokenAccount: \"5XHT644Lbgn7HCY93JSu8Vp8QjfmrEz8ZvD5QyB3EieE\",\n liquidityFeeReceiver: \"64bogB1G4Km8Toequs4bcwmrPb9evrzof2CugFpL8SNN\",\n collateralTokenMint: \"658FZo9B4HgKxsKsM7cUHN7jfNFgC7YftusWWYWc4piD\",\n collateralTokenSupply: \"3AH6WZBW5yYbS6shZAvQTB4iW5d4Shb1EBMMPThGzyQP\",\n destinationCollateralTokenAccount: \"3x5ZLLUwreSHmdPqegC3dt8jH6TXzmqSTxc9iFnt8Y9e\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.POLIS.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"TULIP\",\n account: \"DdFHZu9n41MuH2dNJMgXpnnmuefxDMdUbCp4iizPfz1o\",\n mintAddress: \"TuLipcqtGVXP9XR62wM8WWCm6a9vhLs7T1uoWBk6FDs\",\n liquiditySupplyTokenAccount: \"CTY1eFRYza4nr7Hw4aFXoWwvcAmF99UtgSyTFWWUdJTf\",\n liquidityFeeReceiver: \"HyPhJfWDoXbsu6AaNmJzc7hwnMG59XcnQPXU1dDE1mJg\",\n collateralTokenMint: \"Am2kxXzFH84biqbswGWq2zieWqsX2ANnFDyiZr9Fh7zc\",\n collateralTokenSupply: \"7ffRNyEMYoHZ4eZNHhDPDQTVVXa5dtgoLCwWWkiprCdG\",\n destinationCollateralTokenAccount: \"CQMNF7T32Tg6oryUVSptFiKb4SA4j8f48GenUC8CPcei\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.TULIP.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"wbWBNB\",\n account: \"Fbe9bgforFZfK1Zf14R4S2EasUimk64JRUi1hgJZXf26\",\n mintAddress: \"9gP2kCy3wA1ctvYWQk75guqXuHfrEomqydHLtcTCqiLa\",\n liquiditySupplyTokenAccount: \"4umrjG5sMTNS9S88madNNnzLARavZJR2AJJkiMZUyxUW\",\n liquidityFeeReceiver: \"HBw1tn17wUEDf1EXztKWg3bhaan4TsFaY6Quh4gCKxQZ\",\n collateralTokenMint: \"FWvJZ2nfiRsU2jhFbWRFzwcLWUV8Uc1MuctPwPQ94YB3\",\n collateralTokenSupply: \"Fni5miRAQ9GH4cYC2fFD6m8cxMcpgVCif9EDBb9SbAfB\",\n destinationCollateralTokenAccount: \"GzxVcw54D5ghyHSkCNbKRYBo5seUGA2fADVrQcDMBixD\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.wbWBNB.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"REAL\",\n account: \"3PBWn8kyNhvjzbjBPtgsukuw6jLv6YJ6gicxi7fo26Mj\",\n mintAddress: \"AD27ov5fVU2XzwsbvnFvb1JpCBaCB5dRXrczV9CqSVGb\",\n liquiditySupplyTokenAccount: \"3KXcAXbzFWfVdTp12HXYB8tP6hG94tHq2n4SW1WQbVzr\",\n liquidityFeeReceiver: \"FN1nJSWYMf2Gzjy4KtjBQLzPe9xnScNdXgH8H9BBGtu3\",\n collateralTokenMint: \"8TcRqrTtVXinqfpC8A6h3k6SKrsPhftfXawtWPzroRDD\",\n collateralTokenSupply: \"E1Cn1CjZuSx2SSGptbHqmvrb2nNsDCJdTroTZGRN4cXV\",\n destinationCollateralTokenAccount: \"GKG693ER7e9pjB2E9DFyLZGLaoAYPhAKq7WiWCbYbxic\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.REAL.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"CAVE\",\n account: \"4eEZmrgcBnQ6XrtzVkZB3Ae9zvWF3AaDio8Xem4qZ5cb\",\n mintAddress: \"4SZjjNABoqhbd4hnapbvoEPEqT8mnNkfbEoAwALf1V8t\",\n liquiditySupplyTokenAccount: \"9yY8BabAtpP2dvNHwPjfF2kss1dZhqbQMcFfmWq17pmo\",\n liquidityFeeReceiver: \"AbdiCWj6Di7b9AWSwxTJUMs8BnFUuvnRZEtuUarUMix\",\n collateralTokenMint: \"9nhjZPZcSWjSVEfgGAhzfPYUVtnHkcRkURYTweT3jKhC\",\n collateralTokenSupply: \"8RzwCmJJAhL7CZogq19qrdHCHmjBpm8Mqg9G5LjDhpWj\",\n destinationCollateralTokenAccount: \"CdeNCwuYtrVPT4v8FVj2BYfUnZ7cnnuGjqgw5vNqFrvj\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.CAVE.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"SAMO\",\n account: \"6nVuFQdDEPsh7yhPuHR3WbsYYEHHDjetEhvy3hrzbUBb\",\n mintAddress: \"7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU\",\n liquiditySupplyTokenAccount: \"F7jTRpp57TjrkCF4kfgiCfUVAQ8jQMn4MTYbHQ6qC2cV\",\n liquidityFeeReceiver: \"HWpe5DkaKfKvzYvGPTg79qMLSoeMWbAQ39ZwcjXWgqVf\",\n collateralTokenMint: \"CEqYVZCL7sHQ8gChh1yL3uajc2UDs6DXuYjPZyRox6MC\",\n collateralTokenSupply: \"z4VJb6aA1gbJHNU7L6R4n48fpckFCvim15xgq7F2jDY\",\n destinationCollateralTokenAccount: \"CCnBMpVNBuL42QtxP2CtQc1pUbEGSYhx6VJ3dwWqq8GF\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.SAMO.decimals,\n visible: true\n },\n {\n name: \"STEP\",\n account: \"HpYGGceBPSWhemfsUtdAXjDJpTiWa6MppMr8LaCfkwyX\",\n mintAddress: \"StepAscQoEioFxxWGnh2sLBDFp9d8rvKz2Yp39iDpyT\",\n liquiditySupplyTokenAccount: \"ArUwRwHqhg9nYxaJ4643coVggWmnAK9WhkpkR6CZiVSS\",\n liquidityFeeReceiver: \"8EQyWbvZjb5En3JRY6bmSYkcsWt6poUdBBC2gi3UL43a\",\n collateralTokenMint: \"36sf6j9N4zSv4BVP1nNPZfSxmuCDxv3Ay9Kq6qy37PXv\",\n collateralTokenSupply: \"7QJw944wtodBV2bVfd2ajHxeAv99Zopo39QyvF3anHMb\",\n destinationCollateralTokenAccount: \"FKctxJ52noZmRN9uofXJi2gJy4Fk7A8d87bdaiCYi7Qu\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.STEP.decimals,\n visible: false\n },\n {\n name: \"ORCA\",\n account: \"6sJg8f3zcAjrd38QhSA3C34n8MzLq1XVTiQr4msozAuv\",\n mintAddress: \"orcaEKTdK7LKz57vaAYr9QeNsVEPfiu6QeMU1kektZE\",\n liquiditySupplyTokenAccount: \"4LqykQes5scGz4bZLNaNm1bmgMutCCGqQZVni4VJjWhZ\",\n liquidityFeeReceiver: \"ADz1SJ28TH2TnLzA9FG7DqiW41CKeLfRvbvDckK1dvFv\",\n collateralTokenMint: \"HRYfSMc1gYEvxo9zsh14jYHKxAcfJfoVakKtRtJEomb8\",\n collateralTokenSupply: \"HY3edUqqoHFXDTYkFpsv6hHzH81Qiiq3DqCgRH37uP2c\",\n destinationCollateralTokenAccount: \"5hGH1JPeQzzAZv7DrZNiTyvMj8GEEVQDWR4bqAFzXieu\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.ORCA.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"GENE\",\n account: \"3gmxqqfQhMtqAnQWuFNiTqgLkAok54SGuvdncPYEAq2i\",\n mintAddress: \"GENEtH5amGSi8kHAtQoezp1XEXwZJ8vcuePYnXdKrMYz\",\n liquiditySupplyTokenAccount: \"7VrZiv3Qmt4ZJwFWaDQ1FqjCW85XUeJYq66eGGiVBo5R\",\n liquidityFeeReceiver: \"8wvpmoz7qQTVt9FUCdDKqmqwvrEZcK1AXr2VjaXW9FRB\",\n collateralTokenMint: \"DxTDysdSXAvZeUt87XagVDbStKUttSrwahot5vnUN6YH\",\n collateralTokenSupply: \"3dF8iELN9DHDT4D2oMwb7LjuDZDn3Rxx3VtZKVTApWqo\",\n destinationCollateralTokenAccount: \"CJ21ub2pk4VwKK2JU97hR6krbfEmvcANkBNgGAbwgvDX\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.GENE.decimals,\n visible: true\n },\n {\n name: \"MBS\",\n account: \"H6GW9vVsGoibZMQkt5MaUrEmmqzPrTFgvVdAQssEytpv\",\n mintAddress: \"Fm9rHUTF5v3hwMLbStjZXqNBBoZyGriQaFM6sTFz3K8A\",\n liquiditySupplyTokenAccount: \"34Y8WipZoPapJ15VogEDnrdtqPn7zbA4S6trxTqW9hCB\",\n liquidityFeeReceiver: \"6VYRBnLsY2UXjs4SNWBG9XnWuRtAhvMPBiUz4pcCRwCn\",\n collateralTokenMint: \"7j5vyzADQffz7WEoCaFv3d8r13EFRVqnzv6NxLJfL5bA\",\n collateralTokenSupply: \"G9xtwwdJzZmneH5q9Tsq728gLuNEg7NtAWRWYuD58eCj\",\n destinationCollateralTokenAccount: \"Aowk2m6NCpH39oane6F2z6jf9ffVnDRqHizpYCzgoDzy\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.MBS.decimals,\n visible: true\n },\n {\n name: \"sRLY\",\n account: \"6jNicvm4rToeRe3MbkFXNmNfg8iVtZuySGJqqijsZ6j2\",\n mintAddress: \"RLYv2ubRMDLcGG2UyvPmnPmkfuQTsMbg4Jtygc7dmnq\",\n liquiditySupplyTokenAccount: \"6gkCQRT8PaMjemqWEGdMxNHNfpAhhCSva959AiVxUGRa\",\n liquidityFeeReceiver: \"41Qbc6RGJ2zsbAXkQoy7gXNDPmuSo9Z9PkUbALtyCuPU\",\n collateralTokenMint: \"Hjaio12SUVKzCsd7BVmTN8vz1U8CMLhY6GubhKLA5ptN\",\n collateralTokenSupply: \"2ynimffX3RgGkinkHRaAxrs4yt8hj2UDxHxULmWczzyn\",\n destinationCollateralTokenAccount: \"GXVMXjDPJmJXBKz594RhBaLSW7zcxJHtzXBWAiKcWKc9\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.sRLY.decimals,\n visible: true\n },\n {\n name: \"SNY\",\n account: \"DiC9QF1MLQgzVNRDUdLaDgmAQ5JA8ksd8AaaYrJbEHnD\",\n mintAddress: \"4dmKkXNHdgYsXqBHCuMikNQWwVomZURhYvkkX5c4pQ7y\",\n liquiditySupplyTokenAccount: \"HpRAzc4ioizof1ndfJmYKJMvcLP9s9NhVWRXVnMiSV5A\",\n liquidityFeeReceiver: \"FEfvNVCPXDpBuyx6kdRixxMPJGnqNfAXbRA29KQfsYiU\",\n collateralTokenMint: \"2yQJdxJy4tGeeXK2u8Lwdy9oY6Ks5shVH9gYtRH9zdDw\",\n collateralTokenSupply: \"Doia9pBqHjtcRZCVaFoENfRYc6G5TaTmAJpeoeMPVbab\",\n destinationCollateralTokenAccount: \"9HNaGXfNef3iCeZUKCUDmuVrpoCCf3n4MbdqrbRuUxZ\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.SNY.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"ROPE\",\n account: \"BAkQnFTVBHE9XGo7rEidRMEhrFyXXxKPchW2KXtkPKzG\",\n mintAddress: \"8PMHT4swUMtBzgHnh5U564N5sjPSiUz2cjEQzFnnP1Fo\",\n liquiditySupplyTokenAccount: \"6t6M4y22fKEY2RbtKKdrtxQMJKwDrmQLX24KjthbEwdB\",\n liquidityFeeReceiver: \"8FYkBrPaN9Lk7nRAWNRx9UVtzcPUg1Rm7YVFPvFpc9MZ\",\n collateralTokenMint: \"9oYxGZP4PWFLm9CFJb9YG6LiZZNz2StPW2yx5oK9k7df\",\n collateralTokenSupply: \"7k9tKTzMdCuxm9ocGEFUkDnZTw5K4acAzawyV1narjQ1\",\n destinationCollateralTokenAccount: \"HdxLdWVJHha1BZVw9gp8WnKgLR4q9tPgyMRim16H8U88\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.ROPE.decimals,\n visible: false\n },\n {\n name: \"COPE\",\n account: \"DrYZA2Q6eBwFD7d2x8mmsLWNcQJGVEX6ntF9nMmNpPBe\",\n mintAddress: \"8HGyAAB1yoM1ttS7pXjHMa3dukTFGQggnFFH3hJZgzQh\",\n liquiditySupplyTokenAccount: \"7v1EmKhBa4deAtMia21CpZ1uUqgFg8oGiXt314x6qpq2\",\n liquidityFeeReceiver: \"6pFsWsCurqJ3Qzv6yUvXTcvR1p9Zb2TwSPiPAsVJ6pWd\",\n collateralTokenMint: \"8cm7UrBiDQ4C1ntQSCZfHSWKUizdW31ddTQGNY6Lym3B\",\n collateralTokenSupply: \"EfFKjzmFtoPPBoz1V78cgvQegoFFE3AKanBh2AT7p1kz\",\n destinationCollateralTokenAccount: \"LX7xER7JXiy8KrK1NnnRN44fN7LFJay6iUqH4cXBLKu\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.COPE.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"ALEPH\",\n account: \"5nestDtwfXxCHbJ7BcWgucBmSp7ApxUtW9cDwDa3apED\",\n mintAddress: \"CsZ5LZkDS7h9TDKjrbL7VAwQZ9nsRu8vJLhRYfmGaN8K\",\n liquiditySupplyTokenAccount: \"4NaiudHa6ApXqgfLBDvZqQLrabLvMCKtw1vieHfVZpo4\",\n liquidityFeeReceiver: \"132bKdc6DwnxATSPR2BVZAWtL67327JiVoHzpbNJs7np\",\n collateralTokenMint: \"FJtaAZd6tXNCFGTq7ifRHt9AWoVdads6gWNc4SXCPw1k\",\n collateralTokenSupply: \"35jP1V7JQby5wLo3yutNa6dZ2nwWUoVUKiyc63Wr2dB4\",\n destinationCollateralTokenAccount: \"DKfXtqJFy5YCD4r4Uxyjampf7p6ahmS7FuAmkRzP6QbW\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.ALEPH.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"MEDIA\",\n account: \"4YUqefxqtfa8PwFynQKJjDC74cJzPtR69uP1UqZKQLZQ\",\n mintAddress: \"ETAtLmCmsoiEEKfNrHKJ2kYy3MoABhU6NQvpSfij5tDs\",\n liquiditySupplyTokenAccount: \"5QWDi7dBdbAXPcVUbxzz93p6ptQAi3AbHQem2CFquX6k\",\n liquidityFeeReceiver: \"CCEi57RYB3APLho4pv4fqDXqxezkvVwkMnZhKPCWJHCK\",\n collateralTokenMint: \"6fGTc455JK3bsiSrvyLkEymQasPDXdrw2jJR16UkPnT5\",\n collateralTokenSupply: \"7WMg5Y5JANsucf5noBMDVJ4kAqu5Y27KGpDdsc6xqukT\",\n destinationCollateralTokenAccount: \"DAxvxAb2K6aFadQqn1rsJphirCS6AFM7mJrApPLSgELo\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.MEDIA.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"SLRS\",\n account: \"3YzfgFtos1cq1PGWABSYXj3txhwAnWjVZxacPafMPwZH\",\n mintAddress: \"SLRSSpSLUTP7okbCUBYStWCo1vUgyt775faPqz8HUMr\",\n liquiditySupplyTokenAccount: \"ARioqrJfVAP8AFT1xaiEFqiajY6Nhq2CS17mMi6A8Urz\",\n liquidityFeeReceiver: \"CTnTSgQqYbu8vMoKuoCjzu6SCyERNKx9pHqj7icqvTDq\",\n collateralTokenMint: \"GtFtWCcLYtWQT8NLRwEfUqc9sgVnq4SbuSnMCpwcutNk\",\n collateralTokenSupply: \"FYNSmQBv6WxJETxDzrpwPpda1sohzMX8xbEdkquMoysr\",\n destinationCollateralTokenAccount: \"GfWjrthTwB9DHwNQirS1XfGiFcRm9Q6KrjJdGyTATjCd\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.SLRS.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"LIKE\",\n account: \"BQk6St4EmdBUo6jx4XCM9bobwV7wwcc4L7QwZHgN3GwL\",\n mintAddress: \"3bRTivrVsitbmCTGtqwp7hxXPsybkjn4XLNtPsHqa3zR\",\n liquiditySupplyTokenAccount: \"8W8i2jbRYiw8BQ3aQUv7k7cvQztAidjR263y5aWyHRbE\",\n liquidityFeeReceiver: \"GYUAka5Ps7b1yTLBdU7Ct91662Q8sacm4GpWCjfYoRaD\",\n collateralTokenMint: \"DRu91PV94sb6kX6HwMGnGM8TuHrjycS4FmJNRWEgyw6n\",\n collateralTokenSupply: \"2NfkjMBcVTjMx4adV6LQsLjm3amB1HFXoo8wEjktRgTx\",\n destinationCollateralTokenAccount: \"3raVVLvK8V8UhxAWKdeFBPLBj8vBU3cyuJ6MpuY4Gdm1\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.LIKE.decimals,\n visible: true,\n borrowDisabled: true\n },\n {\n name: \"STARS\",\n account: \"HJDm6bso3CXHjUZRLRnV3VLupgeNbeYD4SGXEiaqrDEh\",\n mintAddress: \"HCgybxq5Upy8Mccihrp7EsmwwFqYZtrHrsmsKwtGXLgW\",\n liquiditySupplyTokenAccount: \"7A7fQ79poA8voKjeD1XgMnKZecHL65bscvGnf9xk3Gmy\",\n liquidityFeeReceiver: \"E6RNDzy4FauDxr1p9Dsg7NFLv1jGkPNEKkTGvEYX8hi9\",\n collateralTokenMint: \"F4K5EJe7wHxjDBHs4fGmoztpqS6XGZo1z7PL8gxAfcQo\",\n collateralTokenSupply: \"36282GgQ2WwXonxWAHxuSbXGSwbY98LWTaEVz8oXrmCf\",\n destinationCollateralTokenAccount: \"4kjiXc45iZazVUtwcywgQD7GVM4K4XGqodWNzVxajgkA\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.STARS.decimals,\n visible: false\n },\n {\n name: \"weUNI\",\n account: \"F3y6c19hcn91RRkqZc6BN6d2B5F9etkNks9BzUxvqc2M\",\n mintAddress: \"8FU95xFJhUUkyyCLU13HSzDLs7oC4QZdXQHL6SCeab36\",\n liquiditySupplyTokenAccount: \"2V9F8ywuGbbMG3oqcixR1upAvXin6bijK3qbSHnALEof\",\n liquidityFeeReceiver: \"GzSqPWwjXyssJ7wVtMgxX6NvYKJJkjf589KQJwQz2BRb\",\n collateralTokenMint: \"5ece7fjw86KL8yRFCrb1SmqyvXwwy5y6wcC8G6aquodx\",\n collateralTokenSupply: \"DAmpNbLFGWZrNqsBLF7dmYMM9QMbxktQ2Y8dfx88ZVTe\",\n destinationCollateralTokenAccount: \"HKxr5BdAnYc6oUMra1kyEdeqMMcNsmkDnAmwUa1gi2HP\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.weUNI.decimals,\n visible: false\n },\n {\n name: \"weSUSHI\",\n account: \"FEDEBKAtZzod5oXv1UkSzEeDZGsFe3DK9Wq23o6B4QVN\",\n mintAddress: \"ChVzxWRmrTeSgwd3Ui3UumcN8KX7VK3WaD4KGeSKpypj\",\n liquiditySupplyTokenAccount: \"Fcj2wrSKfQYQ4JhF9x36DE8W6uKDrjSDqfTYFZ7Lvq6H\",\n liquidityFeeReceiver: \"7DgrGVCFVLoNVqQXwYhHfR5uA8TS6TiHcKNEXPdG1re8\",\n collateralTokenMint: \"7iQwV8krcZRqDicFXMh7rCgExXHrZ3WQKsTJrtA4yV9M\",\n collateralTokenSupply: \"8n7bsURa8dQr5TDbjvz2yUQzzLYF9B6X97HJ4x6omniY\",\n destinationCollateralTokenAccount: \"4bYUHj4cvyw3cjF3b4L6HcG7EiRRvfH7adiJFnHbKAYS\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.weSUSHI.decimals,\n visible: false\n },\n {\n name: \"weDYDX\",\n account: \"2vzY9tJNqutsGnUwPmka3LmAEjDXJ2qKeV9fAztD7Sbo\",\n mintAddress: \"4Hx6Bj56eGyw8EJrrheM6LBQAvVYRikYCWsALeTrwyRU\",\n liquiditySupplyTokenAccount: \"BmG6AWHdf68MkooJ7D43irLcdkzB9x1CuHPwG8uxvoAc\",\n liquidityFeeReceiver: \"UsNuAp58e48ohXynJyVF7EBbaZyzgCfzrgknHoAGbRL\",\n collateralTokenMint: \"8gKgXXcixZm1Qtn8D4t6FDUKZRjoc51AjffFCNXTc7EV\",\n collateralTokenSupply: \"2H4cED2cKubaBUHmCHS779uyMUKpfkGAFpB52VsFS7C6\",\n destinationCollateralTokenAccount: \"4bYUHj4cvyw3cjF3b4L6HcG7EiRRvfH7adiJFnHbKAYS\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.weDYDX.decimals,\n visible: false\n },\n {\n name: \"wUST\",\n account: \"8s5Gc63C8zUYRHXxjqyyNwXzK4fqQidcjx5a43Rmf54v\",\n mintAddress: \"9vMJfxuKxXBoEa7rM12mYLMwTacLMLDJqHozw96WQL8i\",\n liquiditySupplyTokenAccount: \"9GYdZbvYw7tcJPEmi1yDPGV9vdxfGpAPsZa84aA7XAop\",\n liquidityFeeReceiver: \"4sGKGh6R8oyTGbim6xWjQCdAmnqFn2J93DXd6dAqaQEB\",\n collateralTokenMint: \"4pgVP6LAbRDaSnR3jfDSBBkUPFxYgWYNhn2L4YRKpgcW\",\n collateralTokenSupply: \"8cRq7PTqrruNyBqF5JkWjkTxQdXhNYTbTRHxLv11QH9g\",\n destinationCollateralTokenAccount: \"A1DvMBGvbzcbEDXg1WfAndDvMAwGYLgKRjpgZ8J7dCDv\",\n quoteTokenMint: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n decimals: TOKENS.wUST.decimals,\n visible: true,\n borrowDisabled: true\n }\n];\n\n// src/utils/config.ts\nimport { find } from \"lodash\";\nvar getLendingMarketAccount = () => {\n return lending_info_default.lending.lending_market_account;\n};\nvar getPriceFeedsForReserve = (name) => {\n return find(lending_info_default.pyth.price_feeds, (priceFeed) => {\n return priceFeed.name === name;\n });\n};\n\n// src/services/LendingService.ts\nimport { SYSVAR_CLOCK_PUBKEY, TransactionInstruction } from \"@solana/web3.js\";\nimport * as BufferLayout from \"buffer-layout\";\nvar LendingInstruction = {\n InitLendingMarket: 0,\n SetLendingMarketOwner: 1,\n InitReserve: 2,\n RefreshReserve: 3,\n DepositReserveLiquidity: 4,\n RedeemReserveCollateral: 5,\n InitObligation: 6,\n RefreshObligation: 7,\n DepositObligationCollateral: 8,\n WithdrawObligationCollateral: 9,\n BorrowObligationLiquidity: 10,\n RepayObligationLiquidity: 11,\n LiquidateObligation: 12,\n FlashLoan: 13,\n UpdatePseudoDeposits: 14\n};\nvar refreshReserve = ({ reserveAccount, priceAccount }) => {\n const dataLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\")]);\n const data = Buffer.alloc(dataLayout.span);\n dataLayout.encode(\n {\n instruction: LendingInstruction.RefreshReserve\n },\n data\n );\n const keys = [\n { pubkey: reserveAccount, isSigner: false, isWritable: true },\n { pubkey: priceAccount, isSigner: false, isWritable: false },\n { pubkey: SYSVAR_CLOCK_PUBKEY, isSigner: false, isWritable: false }\n ];\n return new TransactionInstruction({\n keys,\n programId: LENDING_PROGRAM_ID,\n data\n });\n};\nexport {\n AQUAFARM_PROGRAM_ID,\n DEFAULT_PUBLIC_KEY,\n LENDING_PROGRAM_ID,\n LENDING_RESERVES,\n LIQUIDITY_POOL_PROGRAM_ID_V2,\n LIQUIDITY_POOL_PROGRAM_ID_V3,\n LIQUIDITY_POOL_PROGRAM_ID_V4,\n LP_TOKENS,\n MEMO_PROGRAM_ID,\n NATIVE_SOL,\n ORCA_SWAP_PROGRAM_ID,\n QUARRY_MINE_PROGRAM,\n SERUM_PROGRAM_ID_V2,\n SERUM_PROGRAM_ID_V3,\n STAKE_PROGRAM_ID,\n STAKE_PROGRAM_ID_V4,\n STAKE_PROGRAM_ID_V5,\n SUNNY_QUARRY_PROGRAM,\n TOKENS,\n TOKEN_PROGRAM_ID,\n getLendingMarketAccount,\n getPriceFeedsForReserve,\n lending_info_default as lending_info,\n refreshReserve\n};\n//# sourceMappingURL=index.mjs.map","import{Buffer as t}from\"buffer\";import{PublicKey as e,Transaction as n,TransactionInstruction as r,SendTransactionError as i,NONCE_ACCOUNT_LENGTH as o,SystemProgram as s,SYSVAR_RENT_PUBKEY as a}from\"@solana/web3.js\";import*as c from\"@solana/web3.js\";export{c as web3};import u from\"bn.js\";export{default as BN}from\"bn.js\";import d from\"bs58\";import*as l from\"base64-js\";import h from\"camelcase\";import{sha256 as p}from\"js-sha256\";import*as f from\"@project-serum/borsh\";import{inflate as m}from\"pako\";import y from\"eventemitter3\";import*as g from\"assert\";var w=Object.freeze({__proto__:null,encode:function(t){return t.reduce(((t,e)=>t+e.toString(16).padStart(2,\"0\")),\"0x\")},decode:function(e){0===e.indexOf(\"0x\")&&(e=e.substr(2)),e.length%2==1&&(e=\"0\"+e);let n=e.match(/.{2}/g);return null===n?t.from([]):t.from(n.map((t=>parseInt(t,16))))}});function v(t){return new TextDecoder(\"utf-8\").decode(t)}function b(t){return(new TextEncoder).encode(t)}var A=Object.freeze({__proto__:null,decode:v,encode:b});function _(t){return d.encode(t)}var S=Object.freeze({__proto__:null,encode:_,decode:function(t){return d.decode(t)}});function E(e){return t.from(l.toByteArray(e))}var I=Object.freeze({__proto__:null,encode:function(t){return l.fromByteArray(t)},decode:E}),k=Object.freeze({__proto__:null,hex:w,utf8:A,bs58:S,base64:I});function x(t){const e=new Map;return t.errors&&t.errors.forEach((t=>{var n;let r=null!==(n=t.msg)&&void 0!==n?n:t.name;e.set(t.code,r)})),e}function M(t,...e){if(t.args.length!=e.length)throw new Error(\"Invalid argument length\");const n={};let r=0;return t.args.forEach((t=>{n[t.name]=e[r],r+=1})),n}function P(t,e={}){t.forEach((t=>{if(\"accounts\"in t)P(t.accounts,e[t.name]);else if(void 0===e[t.name])throw new Error(`Invalid arguments: ${t.name} not provided.`)}))}function T(t){return t instanceof e?t:new e(t)}class C extends TypeError{constructor(t,e){let n;const{message:r,...i}=t,{path:o}=t;super(0===o.length?r:\"At path: \"+o.join(\".\")+\" -- \"+r),this.value=void 0,this.key=void 0,this.type=void 0,this.refinement=void 0,this.path=void 0,this.branch=void 0,this.failures=void 0,Object.assign(this,i),this.name=this.constructor.name,this.failures=()=>{var r;return null!=(r=n)?r:n=[t,...e()]}}}function z(t){return\"object\"==typeof t&&null!=t}function B(t){return\"string\"==typeof t?JSON.stringify(t):\"\"+t}function L(t,e,n,r){if(!0===t)return;!1===t?t={}:\"string\"==typeof t&&(t={message:t});const{path:i,branch:o}=e,{type:s}=n,{refinement:a,message:c=\"Expected a value of type `\"+s+\"`\"+(a?\" with refinement `\"+a+\"`\":\"\")+\", but received: `\"+B(r)+\"`\"}=t;return{value:r,type:s,refinement:a,key:i[i.length-1],path:i,branch:o,...t,message:c}}function*O(t,e,n,r){var i;z(i=t)&&\"function\"==typeof i[Symbol.iterator]||(t=[t]);for(const i of t){const t=L(i,e,n,r);t&&(yield t)}}function*D(t,e,n={}){const{path:r=[],branch:i=[t],coerce:o=!1,mask:s=!1}=n,a={path:r,branch:i};if(o&&(t=e.coercer(t,a),s&&\"type\"!==e.type&&z(e.schema)&&z(t)&&!Array.isArray(t)))for(const n in t)void 0===e.schema[n]&&delete t[n];let c=!0;for(const n of e.validator(t,a))c=!1,yield[n,void 0];for(let[n,u,d]of e.entries(t,a)){const e=D(u,d,{path:void 0===n?r:[...r,n],branch:void 0===n?i:[...i,u],coerce:o,mask:s});for(const r of e)r[0]?(c=!1,yield[r[0],void 0]):o&&(u=r[1],void 0===n?t=u:t instanceof Map?t.set(n,u):t instanceof Set?t.add(u):z(t)&&(t[n]=u))}if(c)for(const n of e.refiner(t,a))c=!1,yield[n,void 0];c&&(yield[void 0,t])}class N{constructor(t){this.TYPE=void 0,this.type=void 0,this.schema=void 0,this.coercer=void 0,this.validator=void 0,this.refiner=void 0,this.entries=void 0;const{type:e,schema:n,validator:r,refiner:i,coercer:o=(t=>t),entries:s=function*(){}}=t;this.type=e,this.schema=n,this.entries=s,this.coercer=o,this.validator=r?(t,e)=>O(r(t,e),e,this,t):()=>[],this.refiner=i?(t,e)=>O(i(t,e),e,this,t):()=>[]}assert(t){return function(t,e){const n=j(t,e);if(n[0])throw n[0]}(t,this)}create(t){return V(t,this)}is(t){return U(t,this)}mask(t){return function(t,e){const n=j(t,e,{coerce:!0,mask:!0});if(n[0])throw n[0];return n[1]}(t,this)}validate(t,e={}){return j(t,this,e)}}function V(t,e){const n=j(t,e,{coerce:!0});if(n[0])throw n[0];return n[1]}function U(t,e){return!j(t,e)[0]}function j(t,e,n={}){const r=D(t,e,n),i=function(t){const{done:e,value:n}=t.next();return e?void 0:n}(r);if(i[0]){return[new C(i[0],(function*(){for(const t of r)t[0]&&(yield t[0])})),void 0]}return[void 0,i[1]]}function R(t,e){return new N({type:t,schema:null,validator:e})}function $(t){return new N({type:\"array\",schema:t,*entries(e){if(t&&Array.isArray(e))for(const[n,r]of e.entries())yield[n,r,t]},coercer:t=>Array.isArray(t)?t.slice():t,validator:t=>Array.isArray(t)||\"Expected an array value, but received: \"+B(t)})}function K(t){const e=B(t),n=typeof t;return new N({type:\"literal\",schema:\"string\"===n||\"number\"===n||\"boolean\"===n?t:null,validator:n=>n===t||\"Expected the literal `\"+e+\"`, but received: \"+B(n)})}function q(t){return new N({...t,validator:(e,n)=>null===e||t.validator(e,n),refiner:(e,n)=>null===e||t.refiner(e,n)})}function F(){return R(\"number\",(t=>\"number\"==typeof t&&!isNaN(t)||\"Expected a number, but received: \"+B(t)))}function W(t){return new N({...t,validator:(e,n)=>void 0===e||t.validator(e,n),refiner:(e,n)=>void 0===e||t.refiner(e,n)})}function G(){return R(\"string\",(t=>\"string\"==typeof t||\"Expected a string, but received: \"+B(t)))}function H(t){const e=Object.keys(t);return new N({type:\"type\",schema:t,*entries(n){if(z(n))for(const r of e)yield[r,n[r],t[r]]},validator:t=>z(t)||\"Expected an object, but received: \"+B(t)})}function J(t){const e=t.map((t=>t.type)).join(\" | \");return new N({type:\"union\",schema:null,coercer:(e,n)=>(t.find((t=>{const[n]=t.validate(e,{coerce:!0});return!n}))||Z()).coercer(e,n),validator(n,r){const i=[];for(const e of t){const[...t]=D(n,e,r),[o]=t;if(!o[0])return[];for(const[e]of t)e&&i.push(e)}return[\"Expected the value to satisfy a union of `\"+e+\"`, but received: \"+B(n),...i]}})}function Z(){return R(\"unknown\",(()=>!0))}async function Q(t,e,n){if(e.length<=99)return await X(t,e,n);{const r=function(t,e){return Array.apply(0,new Array(Math.ceil(t.length/e))).map(((n,r)=>t.slice(r*e,(r+1)*e)))}(e,99);return(await Promise.all(r.map((e=>X(t,e,n))))).flat()}}async function X(t,e,n){const r=null!=n?n:t.commitment;return(await t.getMultipleAccountsInfo(e,r)).map(((t,n)=>null===t?null:{publicKey:e[n],account:t}))}async function Y(t,e,n,r,o){n&&n.length>0&&e.sign(...n);const s=e._compile(),a=s.serialize(),c=e._serialize(a).toString(\"base64\"),u={encoding:\"base64\",commitment:null!=r?r:t.commitment};if(o){const t=(Array.isArray(o)?o:s.nonProgramIds()).map((t=>t.toBase58()));u.accounts={encoding:\"base64\",addresses:t}}n&&(u.sigVerify=!0);const d=[c,u],l=V(await t._rpcRequest(\"simulateTransaction\",d),rt);if(\"error\"in l){let t;if(\"data\"in l.error&&(t=l.error.data.logs,t&&Array.isArray(t))){const e=\"\\n \",n=e+t.join(e);console.error(l.error.message,n)}throw new i(\"failed to simulate transaction: \"+l.error.message,t)}return l.result}function tt(t){return function(t,e,n){return new N({...t,coercer:(r,i)=>U(r,e)?t.coercer(n(r,i),i):t.coercer(r,i)})}(nt(t),et,(e=>\"error\"in e?e:{...e,result:V(e.result,t)}))}const et=nt(Z());function nt(t){return J([H({jsonrpc:K(\"2.0\"),id:G(),result:t}),H({jsonrpc:K(\"2.0\"),id:G(),error:H({code:Z(),message:G(),data:W(R(\"any\",(()=>!0)))})})])}const rt=(it=H({err:q(J([H({}),G()])),logs:q($(G())),accounts:W(q($(q(H({executable:R(\"boolean\",(t=>\"boolean\"==typeof t)),owner:G(),lamports:F(),data:$(G()),rentEpoch:W(F())}))))),unitsConsumed:W(F())}),tt(H({context:H({slot:F()}),value:it})));var it,ot=Object.freeze({__proto__:null,invoke:async function(t,e,i,o){t=T(t),o||(o=lt());const s=new n;if(s.add(new r({programId:t,keys:null!=e?e:[],data:i})),void 0===o.sendAndConfirm)throw new Error(\"This function requires 'Provider.sendAndConfirm' to be implemented.\");return await o.sendAndConfirm(s,[])},getMultipleAccounts:Q,simulateTransaction:Y});class st{constructor(t,e,n){this.connection=t,this.wallet=e,this.opts=n,this.publicKey=e.publicKey}static defaultOptions(){return{preflightCommitment:\"processed\",commitment:\"processed\"}}static local(t,e){throw new Error(\"Provider local is not available on browser.\")}static env(){throw new Error(\"Provider env is not available on browser.\")}async sendAndConfirm(t,e,n){var r;void 0===n&&(n=this.opts),t.feePayer=this.wallet.publicKey,t.recentBlockhash=(await this.connection.getRecentBlockhash(n.preflightCommitment)).blockhash,t=await this.wallet.signTransaction(t),(null!=e?e:[]).forEach((e=>{t.partialSign(e)}));const o=t.serialize();try{return await ct(this.connection,o,n)}catch(e){if(e instanceof ut){const n=await this.connection.getTransaction(_(t.signature),{commitment:\"confirmed\"});if(n){const t=null===(r=n.meta)||void 0===r?void 0:r.logMessages;throw t?new i(e.message,t):e}throw e}throw e}}async sendAll(t,e){void 0===e&&(e=this.opts);const n=await this.connection.getRecentBlockhash(e.preflightCommitment);let r=t.map((t=>{var e;let r=t.tx,i=null!==(e=t.signers)&&void 0!==e?e:[];return r.feePayer=this.wallet.publicKey,r.recentBlockhash=n.blockhash,i.forEach((t=>{r.partialSign(t)})),r}));const i=await this.wallet.signAllTransactions(r),o=[];for(let t=0;tt.startsWith(\"Program log: AnchorError\")));if(-1===n)return null;const r=t[n],i=[r];let o;if(n+11)return null;r=t[0].match(/([0-9]+)/g)[0]}try{i=parseInt(r)}catch(t){return null}let o=e.get(i);return void 0!==o?new bt(i,o,t.logs):(o=St.get(i),void 0!==o?new bt(i,o,t.logs):null)}get program(){var t;return null===(t=this._programErrorStack)||void 0===t?void 0:t.stack[this._programErrorStack.stack.length-1]}get programErrorStack(){var t;return null===(t=this._programErrorStack)||void 0===t?void 0:t.stack}toString(){return this.msg}}function At(t,e){mt(\"debug-logs\")&&console.log(\"Translating error:\",t);const n=vt.parse(t.logs);if(n)return n;const r=bt.parse(t,e);if(r)return r;if(t.logs){const e={get:function(e,n){return\"programErrorStack\"===n?e.programErrorStack.stack:\"program\"===n?e.programErrorStack.stack[t.programErrorStack.stack.length-1]:Reflect.get(...arguments)}};return t.programErrorStack=wt.parse(t.logs),new Proxy(t,e)}return t}const _t={InstructionMissing:100,InstructionFallbackNotFound:101,InstructionDidNotDeserialize:102,InstructionDidNotSerialize:103,IdlInstructionStub:1e3,IdlInstructionInvalidProgram:1001,ConstraintMut:2e3,ConstraintHasOne:2001,ConstraintSigner:2002,ConstraintRaw:2003,ConstraintOwner:2004,ConstraintRentExempt:2005,ConstraintSeeds:2006,ConstraintExecutable:2007,ConstraintState:2008,ConstraintAssociated:2009,ConstraintAssociatedInit:2010,ConstraintClose:2011,ConstraintAddress:2012,ConstraintZero:2013,ConstraintTokenMint:2014,ConstraintTokenOwner:2015,ConstraintMintMintAuthority:2016,ConstraintMintFreezeAuthority:2017,ConstraintMintDecimals:2018,ConstraintSpace:2019,RequireViolated:2500,RequireEqViolated:2501,RequireKeysEqViolated:2502,RequireNeqViolated:2503,RequireKeysNeqViolated:2504,RequireGtViolated:2505,RequireGteViolated:2506,AccountDiscriminatorAlreadySet:3e3,AccountDiscriminatorNotFound:3001,AccountDiscriminatorMismatch:3002,AccountDidNotDeserialize:3003,AccountDidNotSerialize:3004,AccountNotEnoughKeys:3005,AccountNotMutable:3006,AccountOwnedByWrongProgram:3007,InvalidProgramId:3008,InvalidProgramExecutable:3009,AccountNotSigner:3010,AccountNotSystemOwned:3011,AccountNotInitialized:3012,AccountNotProgramData:3013,AccountNotAssociatedTokenAccount:3014,AccountSysvarMismatch:3015,StateInvalidAddress:4e3,DeclaredProgramIdMismatch:4100,Deprecated:5e3},St=new Map([[_t.InstructionMissing,\"8 byte instruction identifier not provided\"],[_t.InstructionFallbackNotFound,\"Fallback functions are not supported\"],[_t.InstructionDidNotDeserialize,\"The program could not deserialize the given instruction\"],[_t.InstructionDidNotSerialize,\"The program could not serialize the given instruction\"],[_t.IdlInstructionStub,\"The program was compiled without idl instructions\"],[_t.IdlInstructionInvalidProgram,\"The transaction was given an invalid program for the IDL instruction\"],[_t.ConstraintMut,\"A mut constraint was violated\"],[_t.ConstraintHasOne,\"A has_one constraint was violated\"],[_t.ConstraintSigner,\"A signer constraint was violated\"],[_t.ConstraintRaw,\"A raw constraint was violated\"],[_t.ConstraintOwner,\"An owner constraint was violated\"],[_t.ConstraintRentExempt,\"A rent exemption constraint was violated\"],[_t.ConstraintSeeds,\"A seeds constraint was violated\"],[_t.ConstraintExecutable,\"An executable constraint was violated\"],[_t.ConstraintState,\"A state constraint was violated\"],[_t.ConstraintAssociated,\"An associated constraint was violated\"],[_t.ConstraintAssociatedInit,\"An associated init constraint was violated\"],[_t.ConstraintClose,\"A close constraint was violated\"],[_t.ConstraintAddress,\"An address constraint was violated\"],[_t.ConstraintZero,\"Expected zero account discriminant\"],[_t.ConstraintTokenMint,\"A token mint constraint was violated\"],[_t.ConstraintTokenOwner,\"A token owner constraint was violated\"],[_t.ConstraintMintMintAuthority,\"A mint mint authority constraint was violated\"],[_t.ConstraintMintFreezeAuthority,\"A mint freeze authority constraint was violated\"],[_t.ConstraintMintDecimals,\"A mint decimals constraint was violated\"],[_t.ConstraintSpace,\"A space constraint was violated\"],[_t.RequireViolated,\"A require expression was violated\"],[_t.RequireEqViolated,\"A require_eq expression was violated\"],[_t.RequireKeysEqViolated,\"A require_keys_eq expression was violated\"],[_t.RequireNeqViolated,\"A require_neq expression was violated\"],[_t.RequireKeysNeqViolated,\"A require_keys_neq expression was violated\"],[_t.RequireGtViolated,\"A require_gt expression was violated\"],[_t.RequireGteViolated,\"A require_gte expression was violated\"],[_t.AccountDiscriminatorAlreadySet,\"The account discriminator was already set on this account\"],[_t.AccountDiscriminatorNotFound,\"No 8 byte discriminator was found on the account\"],[_t.AccountDiscriminatorMismatch,\"8 byte discriminator did not match what was expected\"],[_t.AccountDidNotDeserialize,\"Failed to deserialize the account\"],[_t.AccountDidNotSerialize,\"Failed to serialize the account\"],[_t.AccountNotEnoughKeys,\"Not enough account keys given to the instruction\"],[_t.AccountNotMutable,\"The given account is not mutable\"],[_t.AccountOwnedByWrongProgram,\"The given account is owned by a different program than expected\"],[_t.InvalidProgramId,\"Program ID was not as expected\"],[_t.InvalidProgramExecutable,\"Program account is not executable\"],[_t.AccountNotSigner,\"The given account did not sign\"],[_t.AccountNotSystemOwned,\"The given account is not owned by the system program\"],[_t.AccountNotInitialized,\"The program expected this account to be already initialized\"],[_t.AccountNotProgramData,\"The given account is not a program data account\"],[_t.AccountNotAssociatedTokenAccount,\"The given account is not the associated token account\"],[_t.AccountSysvarMismatch,\"The given public key does not match the required sysvar\"],[_t.StateInvalidAddress,\"The given state account does not have the correct address\"],[_t.DeclaredProgramIdMismatch,\"The declared program id does not match the actual program id\"],[_t.Deprecated,\"The API being used is deprecated and should no longer be used\"]]);\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar Et=function(){return Et=Object.assign||function(t){for(var e,n=1,r=arguments.length;nt.name===r));if(1!==i.length)throw new gt(`Type not found: ${JSON.stringify(t)}`);return Tt.typeDefLayout(i[0],e,n)}if(\"array\"in t.type){let r=t.type.array[0],i=t.type.array[1],o=Tt.fieldLayout({name:void 0,type:r},e);return f.array(o,i,n)}throw new Error(`Not yet implemented: ${t}`)}}static typeDefLayout(t,e=[],n){if(\"struct\"===t.type.kind){const r=t.type.fields.map((t=>Tt.fieldLayout(t,e)));return f.struct(r,n)}if(\"enum\"===t.type.kind){let r=t.type.variants.map((t=>{const n=h(t.name);if(void 0===t.fields)return f.struct([],n);const r=t.fields.map((t=>{if(!t.hasOwnProperty(\"name\"))throw new Error(\"Tuple enum variants not yet implemented.\");return Tt.fieldLayout(t,e)}));return f.struct(r,n)}));return void 0!==n?f.rustEnum(r).replicate(n):f.rustEnum(r,n)}throw new Error(`Unknown type kint: ${t}`)}}class Ct{constructor(t){this.idl=t,this.ixLayout=Ct.parseIxLayout(t);const e=new Map;t.instructions.forEach((t=>{const n=Bt(\"global\",t.name);e.set(d.encode(n),{layout:this.ixLayout.get(t.name),name:t.name})})),t.state&&t.state.methods.map((t=>{const n=Bt(\"state\",t.name);e.set(d.encode(n),{layout:this.ixLayout.get(t.name),name:t.name})})),this.sighashLayouts=e}encode(t,e){return this._encode(\"global\",t,e)}encodeState(t,e){return this._encode(\"state\",t,e)}_encode(e,n,r){const i=t.alloc(1e3),o=h(n),s=this.ixLayout.get(o);if(!s)throw new Error(`Unknown method: ${o}`);const a=s.encode(r,i),c=i.slice(0,a);return t.concat([Bt(e,n),c])}static parseIxLayout(t){const e=(t.state?t.state.methods:[]).map((e=>{let n=e.args.map((e=>{var n,r;return Tt.fieldLayout(e,Array.from([...null!==(n=t.accounts)&&void 0!==n?n:[],...null!==(r=t.types)&&void 0!==r?r:[]]))}));const r=h(e.name);return[r,f.struct(n,r)]})).concat(t.instructions.map((e=>{let n=e.args.map((e=>{var n,r;return Tt.fieldLayout(e,Array.from([...null!==(n=t.accounts)&&void 0!==n?n:[],...null!==(r=t.types)&&void 0!==r?r:[]]))}));const r=h(e.name);return[r,f.struct(n,r)]})));return new Map(e)}decode(e,n=\"hex\"){\"string\"==typeof e&&(e=\"hex\"===n?t.from(e,\"hex\"):d.decode(e));let r=d.encode(e.slice(0,8)),i=e.slice(8);const o=this.sighashLayouts.get(r);return o?{data:o.layout.decode(i),name:o.name}:null}format(t,e){return zt.format(t,e,this.idl)}}class zt{static format(t,e,n){const r=n.instructions.filter((e=>t.name===e.name))[0];if(void 0===r)return console.error(\"Invalid instruction given\"),null;const i=r.args.map((e=>({name:e.name,type:zt.formatIdlType(e.type),data:zt.formatIdlData(e,t.data[e.name],n.types)}))),o=zt.flattenIdlAccounts(r.accounts);return{args:i,accounts:e.map(((t,e)=>e`;if(\"option\"in t)return`Option<${this.formatIdlType(t.option)}>`;if(\"defined\"in t)return t.defined;if(\"array\"in t)return`Array<${t.array[0]}; ${t.array[1]}>`;throw new Error(`Unknown IDL type: ${t}`)}static formatIdlData(t,e,n){if(\"string\"==typeof t.type)return e.toString();if(t.type.hasOwnProperty(\"vec\"))return\"[\"+e.map((e=>this.formatIdlData({name:\"\",type:t.type.vec},e))).join(\", \")+\"]\";if(t.type.hasOwnProperty(\"option\"))return null===e?\"null\":this.formatIdlData({name:\"\",type:t.type.option},e,n);if(t.type.hasOwnProperty(\"defined\")){if(void 0===n)throw new Error(\"User defined types not provided\");const r=n.filter((e=>e.name===t.type.defined));if(1!==r.length)throw new Error(`Type not found: ${t.type.defined}`);return zt.formatIdlDataDefined(r[0],e,n)}return\"unknown\"}static formatIdlDataDefined(t,e,n){if(\"struct\"===t.type.kind){const r=t.type;return\"{ \"+Object.keys(e).map((t=>{const i=r.fields.filter((e=>e.name===t))[0];if(void 0===i)throw new Error(\"Unable to find type\");return t+\": \"+zt.formatIdlData(i,e[t],n)})).join(\", \")+\" }\"}if(0===t.type.variants.length)return\"{}\";if(t.type.variants[0].name){const r=t.type.variants,i=Object.keys(e)[0],o=e[i],s=Object.keys(o).map((t=>{var e;const s=o[t],a=null===(e=r[i])||void 0===e?void 0:e.filter((e=>e.name===t))[0];if(void 0===a)throw new Error(\"Unable to find variant\");return t+\": \"+zt.formatIdlData(a,s,n)})).join(\", \"),a=h(i,{pascalCase:!0});return 0===s.length?a:`${a} { ${s} }`}return\"Tuple formatting not yet implemented\"}static flattenIdlAccounts(t,e){return t.map((t=>{const n=function(t){const e=t.replace(/([A-Z])/g,\" $1\");return e.charAt(0).toUpperCase()+e.slice(1)}(t.name);if(t.hasOwnProperty(\"accounts\")){const r=e?`${e} > ${n}`:n;return zt.flattenIdlAccounts(t.accounts,r)}return{...t,name:e?`${e} > ${n}`:n}})).flat()}}function Bt(e,n){var r;let i=`${e}:${void 0===r&&(r={}),Pt(n,Et({delimiter:\"_\"},r))}`;return t.from(p.digest(i)).slice(0,8)}function Lt(t,e){if(\"enum\"===e.type.kind){let n=e.type.variants.map((e=>void 0===e.fields?0:e.fields.map((e=>{if(\"object\"!=typeof e||!(\"name\"in e))throw new Error(\"Tuple enum variants not yet implemented.\");return Ot(t,e.type)})).reduce(((t,e)=>t+e))));return Math.max(...n)+1}return void 0===e.type.fields?0:e.type.fields.map((e=>Ot(t,e.type))).reduce(((t,e)=>t+e),0)}function Ot(t,e){var n,r;switch(e){case\"bool\":case\"u8\":case\"i8\":case\"bytes\":case\"string\":return 1;case\"i16\":case\"u16\":return 2;case\"u32\":case\"i32\":case\"f32\":return 4;case\"u64\":case\"i64\":case\"f64\":return 8;case\"u128\":case\"i128\":return 16;case\"publicKey\":return 32;default:if(\"vec\"in e)return 1;if(\"option\"in e)return 1+Ot(t,e.option);if(\"coption\"in e)return 4+Ot(t,e.coption);if(\"defined\"in e){const i=null!==(r=null===(n=t.types)||void 0===n?void 0:n.filter((t=>t.name===e.defined)))&&void 0!==r?r:[];if(1!==i.length)throw new gt(`Type not found: ${JSON.stringify(e)}`);return Lt(t,i[0])}if(\"array\"in e){let n=e.array[0],r=e.array[1];return Ot(t,n)*r}throw new Error(`Invalid type ${JSON.stringify(e)}`)}}const Dt=8;class Nt{constructor(t){if(void 0===t.accounts)return void(this.accountLayouts=new Map);const e=t.accounts.map((e=>[e.name,Tt.typeDefLayout(e,t.types)]));this.accountLayouts=new Map(e),this.idl=t}async encode(e,n){const r=t.alloc(1e3),i=this.accountLayouts.get(e);if(!i)throw new Error(`Unknown account: ${e}`);const o=i.encode(n,r);let s=r.slice(0,o),a=Nt.accountDiscriminator(e);return t.concat([a,s])}decode(t,e){if(Nt.accountDiscriminator(t).compare(e.slice(0,8)))throw new Error(\"Invalid account discriminator\");return this.decodeUnchecked(t,e)}decodeUnchecked(t,e){const n=e.slice(8),r=this.accountLayouts.get(t);if(!r)throw new Error(`Unknown account: ${t}`);return r.decode(n)}memcmp(e,n){const r=Nt.accountDiscriminator(e);return{offset:0,bytes:d.encode(n?t.concat([r,n]):r)}}size(t){var e;return 8+(null!==(e=Lt(this.idl,t))&&void 0!==e?e:0)}static accountDiscriminator(e){return t.from(p.digest(`account:${h(e,{pascalCase:!0})}`)).slice(0,8)}}class Vt{constructor(t){if(void 0===t.events)return void(this.layouts=new Map);const e=t.events.map((e=>{let n={name:e.name,type:{kind:\"struct\",fields:e.fields.map((t=>({name:t.name,type:t.type})))}};return[e.name,Tt.typeDefLayout(n,t.types)]}));this.layouts=new Map(e),this.discriminators=new Map(void 0===t.events?[]:t.events.map((t=>[l.fromByteArray(Ut(t.name)),t.name])))}decode(e){let n;try{n=t.from(l.toByteArray(e))}catch(t){return null}const r=l.fromByteArray(n.slice(0,8)),i=this.discriminators.get(r);if(void 0===i)return null;const o=this.layouts.get(i);if(!o)throw new Error(`Unknown event: ${i}`);return{data:o.decode(n.slice(8)),name:i}}}function Ut(e){return t.from(p.digest(`event:${e}`)).slice(0,8)}class jt{constructor(t){if(void 0===t.state)throw new Error(\"Idl state not defined.\");this.layout=Tt.typeDefLayout(t.state.struct,t.types)}async encode(e,n){const r=t.alloc(1e3),i=this.layout.encode(n,r),o=await Rt(e),s=r.slice(0,i);return t.concat([o,s])}decode(t){const e=t.slice(8);return this.layout.decode(e)}}async function Rt(e){let n=mt(\"anchor-deprecated-state\")?\"account\":\"state\";return t.from(p.digest(`${n}:${e}`)).slice(0,8)}class $t{constructor(t){this.instruction=new Ct(t),this.accounts=new Nt(t),this.events=new Vt(t),t.state&&(this.state=new jt(t))}}var Kt=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function qt(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}class Ft{constructor(t,e){if(!Number.isInteger(t))throw new TypeError(\"span must be an integer\");this.span=t,this.property=e}makeDestinationObject(){return{}}decode(t,e){throw new Error(\"Layout is abstract\")}encode(t,e,n){throw new Error(\"Layout is abstract\")}getSpan(t,e){if(0>this.span)throw new RangeError(\"indeterminate span\");return this.span}replicate(t){const e=Object.create(this.constructor.prototype);return Object.assign(e,this),e.property=t,e}fromArray(t){}}var Wt=Ft;class Gt extends Ft{isCount(){throw new Error(\"ExternalLayout is abstract\")}}class Ht extends Gt{constructor(t,e,n){if(!(t instanceof Ft))throw new TypeError(\"layout must be a Layout\");if(void 0===e)e=0;else if(!Number.isInteger(e))throw new TypeError(\"offset must be integer or undefined\");super(t.span,n||t.property),this.layout=t,this.offset=e}isCount(){return this.layout instanceof Jt||this.layout instanceof Zt}decode(t,e){return void 0===e&&(e=0),this.layout.decode(t,e+this.offset)}encode(t,e,n){return void 0===n&&(n=0),this.layout.encode(t,e,n+this.offset)}}class Jt extends Ft{constructor(t,e){if(super(t,e),6t&&e instanceof Ft),!0))throw new TypeError(\"fields must be array of Layout instances\");\"boolean\"==typeof e&&void 0===n&&(n=e,e=void 0);for(const e of t)if(0>e.span&&void 0===e.property)throw new Error(\"fields cannot contain unnamed variable-length layout\");let r=-1;try{r=t.reduce(((t,e)=>t+e.getSpan()),0)}catch(t){}super(r,e),this.fields=t,this.decodePrefixes=!!n}getSpan(t,e){if(0<=this.span)return this.span;void 0===e&&(e=0);let n=0;try{n=this.fields.reduce(((n,r)=>{const i=r.getSpan(t,e);return e+=i,n+i}),0)}catch(t){throw new RangeError(\"indeterminate span\")}return n}decode(t,e){void 0===e&&(e=0);const n=this.makeDestinationObject();for(const r of this.fields)if(void 0!==r.property&&(n[r.property]=r.decode(t,e)),e+=r.getSpan(t,e),this.decodePrefixes&&t.length===e)break;return n}encode(t,e,n){void 0===n&&(n=0);const r=n;let i=0,o=0;for(const r of this.fields){let s=r.span;if(o=0s&&(s=r.getSpan(e,n)))}i=n,n+=s}return i+o-r}fromArray(t){const e=this.makeDestinationObject();for(const n of this.fields)void 0!==n.property&&0n.span?e=-1:0<=e&&(e+=n.span)}}}class re{constructor(t){this.property=t}decode(){throw new Error(\"UnionDiscriminator is abstract\")}encode(){throw new Error(\"UnionDiscriminator is abstract\")}}class ie extends re{constructor(t,e){if(!(t instanceof Gt&&t.isCount()))throw new TypeError(\"layout must be an unsigned integer ExternalLayout\");super(e||t.property||\"variant\"),this.layout=t}decode(t,e){return this.layout.decode(t,e)}encode(t,e,n){return this.layout.encode(t,e,n)}}class oe extends Ft{constructor(t,e,n){const r=t instanceof Jt||t instanceof Zt;if(r)t=new ie(new Ht(t));else if(t instanceof Gt&&t.isCount())t=new ie(t);else if(!(t instanceof re))throw new TypeError(\"discr must be a UnionDiscriminator or an unsigned integer layout\");if(void 0===e&&(e=null),!(null===e||e instanceof Ft))throw new TypeError(\"defaultLayout must be null or a Layout\");if(null!==e){if(0>e.span)throw new Error(\"defaultLayout must have constant span\");void 0===e.property&&(e=e.replicate(\"content\"))}let i=-1;e&&(i=e.span,0<=i&&r&&(i+=t.layout.span)),super(i,n),this.discriminator=t,this.usesPrefixDiscriminator=r,this.defaultLayout=e,this.registry={};let o=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(t){return o(t)},this.configGetSourceVariant=function(t){o=t.bind(this)}}getSpan(t,e){if(0<=this.span)return this.span;void 0===e&&(e=0);const n=this.getVariant(t,e);if(!n)throw new Error(\"unable to determine span for unrecognized variant\");return n.getSpan(t,e)}defaultGetSourceVariant(t){if(t.hasOwnProperty(this.discriminator.property)){if(this.defaultLayout&&t.hasOwnProperty(this.defaultLayout.property))return;const e=this.registry[t[this.discriminator.property]];if(e&&(!e.layout||t.hasOwnProperty(e.property)))return e}else for(const e in this.registry){const n=this.registry[e];if(t.hasOwnProperty(n.property))return n}throw new Error(\"unable to infer src variant\")}decode(t,e){let n;void 0===e&&(e=0);const r=this.discriminator,i=r.decode(t,e);let o=this.registry[i];if(void 0===o){let s=0;o=this.defaultLayout,this.usesPrefixDiscriminator&&(s=r.layout.span),n=this.makeDestinationObject(),n[r.property]=i,n[o.property]=this.defaultLayout.decode(t,e+s)}else n=o.decode(t,e);return n}encode(t,e,n){void 0===n&&(n=0);const r=this.getSourceVariant(t);if(void 0===r){const r=this.discriminator,i=this.defaultLayout;let o=0;return this.usesPrefixDiscriminator&&(o=r.layout.span),r.encode(t[r.property],e,n),o+i.encode(t[i.property],e,n+o)}return r.encode(t,e,n)}addVariant(t,e,n){const r=new se(this,t,e,n);return this.registry[t]=r,r}getVariant(t,e){let n=t;return Buffer.isBuffer(t)&&(void 0===e&&(e=0),n=this.discriminator.decode(t,e)),this.registry[n]}}class se extends Ft{constructor(t,e,n,r){if(!(t instanceof oe))throw new TypeError(\"union must be a Union\");if(!Number.isInteger(e)||0>e)throw new TypeError(\"variant must be a (non-negative) integer\");if(\"string\"==typeof n&&void 0===r&&(r=n,n=null),n){if(!(n instanceof Ft))throw new TypeError(\"layout must be a Layout\");if(null!==t.defaultLayout&&0<=n.span&&n.span>t.defaultLayout.span)throw new Error(\"variant span exceeds span of containing union\");if(\"string\"!=typeof r)throw new TypeError(\"variant must have a String property\")}let i=t.span;0>t.span&&(i=n?n.span:0,0<=i&&t.usesPrefixDiscriminator&&(i+=t.discriminator.layout.span)),super(i,r),this.union=t,this.variant=e,this.layout=n||null}getSpan(t,e){if(0<=this.span)return this.span;void 0===e&&(e=0);let n=0;return this.union.usesPrefixDiscriminator&&(n=this.union.discriminator.layout.span),n+this.layout.getSpan(t,e+n)}decode(t,e){const n=this.makeDestinationObject();if(void 0===e&&(e=0),this!==this.union.getVariant(t,e))throw new Error(\"variant mismatch\");let r=0;return this.union.usesPrefixDiscriminator&&(r=this.union.discriminator.layout.span),this.layout?n[this.property]=this.layout.decode(t,e+r):this.property?n[this.property]=!0:this.union.usesPrefixDiscriminator&&(n[this.union.discriminator.property]=this.variant),n}encode(t,e,n){void 0===n&&(n=0);let r=0;if(this.union.usesPrefixDiscriminator&&(r=this.union.discriminator.layout.span),this.layout&&!t.hasOwnProperty(this.property))throw new TypeError(\"variant lacks property \"+this.property);this.union.discriminator.encode(this.variant,e,n);let i=r;if(this.layout&&(this.layout.encode(t[this.property],e,n+r),i+=this.layout.getSpan(e,n+r),0<=this.union.span&&i>this.union.span))throw new Error(\"encoded variant overruns containing union\");return i}fromArray(t){if(this.layout)return this.layout.fromArray(t)}}class ae extends Ft{constructor(t,e){if(!(t instanceof Gt&&t.isCount()||Number.isInteger(t)&&0<=t))throw new TypeError(\"length must be positive integer or an unsigned integer ExternalLayout\");let n=-1;t instanceof Gt||(n=t),super(n,e),this.length=t}getSpan(t,e){let n=this.span;return 0>n&&(n=this.length.decode(t,e)),n}decode(t,e){void 0===e&&(e=0);let n=this.span;return 0>n&&(n=this.length.decode(t,e)),t.slice(e,e+n)}encode(t,e,n){let r=this.length;if(this.length instanceof Gt&&(r=t.length),!Buffer.isBuffer(t)||r!==t.length)throw new TypeError((i=\"Blob.encode\",((o=this).property?i+\"[\"+o.property+\"]\":i)+\" requires (length \"+r+\") Buffer as src\"));var i,o;if(n+r>e.length)throw new RangeError(\"encoding overruns Buffer\");return e.write(t.toString(\"hex\"),n,r,\"hex\"),this.length instanceof Gt&&this.length.encode(r,e,n),r}}var ce=(t,e,n)=>new Ht(t,e,n),ue=t=>new Jt(1,t),de=t=>new Jt(4,t),le=t=>new te(t),he=t=>new ee(t),pe=(t,e,n)=>new ne(t,e,n),fe=(t,e,n)=>new oe(t,e,n),me=(t,e)=>new ae(t,e);class ye{constructor(t){}encode(t,n){switch(h(t)){case\"initializeMint\":return function({decimals:t,mintAuthority:n,freezeAuthority:r}){return ve({initializeMint:{decimals:t,mintAuthority:n.toBuffer(),freezeAuthorityOption:!!r,freezeAuthority:(r||e.default).toBuffer()}})}(n);case\"initializeAccount\":return ve({initializeAccount:{}});case\"initializeMultisig\":return function({m:t}){return ve({initializeMultisig:{m:t}})}(n);case\"transfer\":return function({amount:t}){return ve({transfer:{amount:t}})}(n);case\"approve\":return function({amount:t}){return ve({approve:{amount:t}})}(n);case\"revoke\":return ve({revoke:{}});case\"setAuthority\":return function({authorityType:t,newAuthority:e}){return ve({setAuthority:{authorityType:t,newAuthority:e}})}(n);case\"mintTo\":return function({amount:t}){return ve({mintTo:{amount:t}})}(n);case\"burn\":return function({amount:t}){return ve({burn:{amount:t}})}(n);case\"closeAccount\":return ve({closeAccount:{}});case\"freezeAccount\":return ve({freezeAccount:{}});case\"thawAccount\":return ve({thawAccount:{}});case\"transferChecked\":return function({amount:t,decimals:e}){return ve({transferChecked:{amount:t,decimals:e}})}(n);case\"approvedChecked\":return function({amount:t,decimals:e}){return ve({approveChecked:{amount:t,decimals:e}})}(n);case\"mintToChecked\":return function({amount:t,decimals:e}){return ve({mintToChecked:{amount:t,decimals:e}})}(n);case\"burnChecked\":return function({amount:t,decimals:e}){return ve({burnChecked:{amount:t,decimals:e}})}(n);case\"intializeAccount2\":return function({authority:t}){return ve({initilaizeAccount2:{authority:t}})}(n);case\"syncNative\":return ve({syncNative:{}});case\"initializeAccount3\":return function({authority:t}){return ve({initializeAccount3:{authority:t}})}(n);case\"initializeMultisig2\":return function({m:t}){return ve({initializeMultisig2:{m:t}})}(n);case\"initializeMint2\":return function({decimals:t,mintAuthority:e,freezeAuthority:n}){return ve({encodeInitializeMint2:{decimals:t,mintAuthority:e,freezeAuthority:n}})}(n);default:throw new Error(`Invalid instruction: ${t}`)}}encodeState(t,e){throw new Error(\"SPL token does not have state\")}}const ge=fe(ue(\"instruction\"));function we(t){return me(32,t)}function ve(t){let e=Buffer.alloc(be),n=ge.encode(t,e);return e.slice(0,n)}ge.addVariant(0,pe([ue(\"decimals\"),me(32,\"mintAuthority\"),ue(\"freezeAuthorityOption\"),we(\"freezeAuthority\")]),\"initializeMint\"),ge.addVariant(1,pe([]),\"initializeAccount\"),ge.addVariant(2,pe([ue(\"m\")]),\"initializeMultisig\"),ge.addVariant(3,pe([le(\"amount\")]),\"transfer\"),ge.addVariant(4,pe([le(\"amount\")]),\"approve\"),ge.addVariant(5,pe([]),\"revoke\"),ge.addVariant(6,pe([ue(\"authorityType\"),ue(\"newAuthorityOption\"),we(\"newAuthority\")]),\"setAuthority\"),ge.addVariant(7,pe([le(\"amount\")]),\"mintTo\"),ge.addVariant(8,pe([le(\"amount\")]),\"burn\"),ge.addVariant(9,pe([]),\"closeAccount\"),ge.addVariant(10,pe([]),\"freezeAccount\"),ge.addVariant(11,pe([]),\"thawAccount\"),ge.addVariant(12,pe([le(\"amount\"),ue(\"decimals\")]),\"transferChecked\"),ge.addVariant(13,pe([le(\"amount\"),ue(\"decimals\")]),\"approvedChecked\"),ge.addVariant(14,pe([le(\"amount\"),ue(\"decimals\")]),\"mintToChecked\"),ge.addVariant(15,pe([le(\"amount\"),ue(\"decimals\")]),\"burnedChecked\"),ge.addVariant(16,pe([we(\"authority\")]),\"InitializeAccount2\"),ge.addVariant(17,pe([]),\"syncNative\"),ge.addVariant(18,pe([we(\"authority\")]),\"initializeAccount3\"),ge.addVariant(19,pe([ue(\"m\")]),\"initializeMultisig2\"),ge.addVariant(20,pe([ue(\"decimals\"),we(\"mintAuthority\"),ue(\"freezeAuthorityOption\"),we(\"freezeAuthority\")]),\"initializeMint2\");const be=Math.max(...Object.values(ge.registry).map((t=>t.span)));class Ae{constructor(t){}encode(t,e){throw new Error(\"SPL token does not have state\")}decode(t){throw new Error(\"SPL token does not have state\")}}function _e(t){return new Ie(me(8),(t=>Pe.fromBuffer(t)),(t=>t.toBuffer()),t)}function Se(t){return new Ie(me(32),(t=>new e(t)),(t=>t.toBuffer()),t)}function Ee(t,e){return new ke(t,e)}class Ie extends Wt{constructor(t,e,n,r){super(t.span,r),this.layout=t,this.decoder=e,this.encoder=n}decode(t,e){return this.decoder(this.layout.decode(t,e))}encode(t,e,n){return this.layout.encode(this.encoder(t),e,n)}getSpan(t,e){return this.layout.getSpan(t,e)}}class ke extends Wt{constructor(t,e){super(-1,e),this.layout=t,this.discriminator=de()}encode(t,e,n=0){return null==t?this.layout.span+this.discriminator.encode(0,e,n):(this.discriminator.encode(1,e,n),this.layout.encode(t,e,n+4)+4)}decode(t,e=0){const n=this.discriminator.decode(t,e);if(0===n)return null;if(1===n)return this.layout.decode(t,e+4);throw new Error(\"Invalid coption \"+this.layout.property)}getSpan(t,e=0){return this.layout.getSpan(t,e+4)+4}}function xe(t){if(0===t)return!1;if(1===t)return!0;throw new Error(\"Invalid bool: \"+t)}function Me(t){return t?1:0}class Pe extends u{toBuffer(){const t=super.toArray().reverse(),e=Buffer.from(t);if(8===e.length)return e;if(e.length>=8)throw new Error(\"u64 too large\");const n=Buffer.alloc(8);return e.copy(n),n}static fromBuffer(t){if(8!==t.length)throw new Error(`Invalid buffer length: ${t.length}`);return new Pe([...t].reverse().map((t=>`00${t.toString(16)}`.slice(-2))).join(\"\"),16)}}class Te{constructor(t){this.idl=t}async encode(t,e){switch(t){case\"token\":{const t=Buffer.alloc(165),n=Be.encode(e,t);return t.slice(0,n)}case\"mint\":{const t=Buffer.alloc(82),n=Ce.encode(e,t);return t.slice(0,n)}default:throw new Error(`Invalid account name: ${t}`)}}decode(t,e){return this.decodeUnchecked(t,e)}decodeUnchecked(t,e){switch(t){case\"token\":return function(t){return Be.decode(t)}(e);case\"mint\":return function(t){return Ce.decode(t)}(e);default:throw new Error(`Invalid account name: ${t}`)}}memcmp(t,e){switch(t){case\"token\":return{dataSize:165};case\"mint\":return{dataSize:82};default:throw new Error(`Invalid account name: ${t}`)}}size(t){var e;return null!==(e=Lt(this.idl,t))&&void 0!==e?e:0}}const Ce=pe([Ee(Se(),\"mintAuthority\"),_e(\"supply\"),ue(\"decimals\"),(ze=\"isInitialized\",new Ie(ue(),xe,Me,ze)),Ee(Se(),\"freezeAuthority\")]);var ze;const Be=pe([Se(\"mint\"),Se(\"authority\"),_e(\"amount\"),Ee(Se(),\"delegate\"),ue(\"state\"),Ee(_e(),\"isNative\"),_e(\"delegatedAmount\"),Ee(Se(),\"closeAuthority\")]);class Le{constructor(t){}decode(t){throw new Error(\"SPL token program does not have events\")}}class Oe{constructor(t){this.instruction=new ye(t),this.accounts=new Te(t),this.events=new Le(t),this.state=new Ae(t)}}class De{constructor(t){}encode(t,e){switch(h(t)){case\"createAccount\":return function({lamports:t,space:e,owner:n}){return Re({createAccount:{lamports:t,space:e,owner:n.toBuffer()}})}(e);case\"assign\":return function({owner:t}){return Re({assign:{owner:t.toBuffer()}})}(e);case\"transfer\":return function({lamports:t}){return Re({transfer:{lamports:t}})}(e);case\"createAccountWithSeed\":return function({base:t,seed:e,lamports:n,space:r,owner:i}){return Re({createAccountWithSeed:{base:t.toBuffer(),seed:e,lamports:n,space:r,owner:i.toBuffer()}},je.getVariant(3).span+e.length)}(e);case\"advanceNonceAccount\":return function({authorized:t}){return Re({advanceNonceAccount:{authorized:t.toBuffer()}})}(e);case\"withdrawNonceAccount\":return function({lamports:t}){return Re({withdrawNonceAccount:{lamports:t}})}(e);case\"initializeNonceAccount\":return function({authorized:t}){return Re({initializeNonceAccount:{authorized:t.toBuffer()}})}(e);case\"authorizeNonceAccount\":return function({authorized:t}){return Re({authorizeNonceAccount:{authorized:t.toBuffer()}})}(e);case\"allocate\":return function({space:t}){return Re({allocate:{space:t}})}(e);case\"allocateWithSeed\":return function({base:t,seed:e,space:n,owner:r}){return Re({allocateWithSeed:{base:t.toBuffer(),seed:e,space:n,owner:r.toBuffer()}},je.getVariant(9).span+e.length)}(e);case\"assignWithSeed\":return function({base:t,seed:e,owner:n}){return Re({assignWithSeed:{base:t.toBuffer(),seed:e,owner:n.toBuffer()}},je.getVariant(10).span+e.length)}(e);case\"transferWithSeed\":return function({lamports:t,seed:e,owner:n}){return Re({transferWithSeed:{lamports:t,seed:e,owner:n.toBuffer()}},je.getVariant(11).span+e.length)}(e);default:throw new Error(`Invalid instruction: ${t}`)}}encodeState(t,e){throw new Error(\"System does not have state\")}}class Ne extends Wt{constructor(t){super(-1,t),this.property=t,this.layout=pe([de(\"length\"),de(\"lengthPadding\"),me(ce(de(),-8),\"chars\")],this.property)}encode(t,e,n=0){if(null==t)return this.layout.span;const r={chars:Buffer.from(t,\"utf8\")};return this.layout.encode(r,e,n)}decode(t,e=0){return this.layout.decode(t,e).chars.toString()}getSpan(t,e=0){return de().span+de().span+new u(new Uint8Array(t).slice(e,e+4),10,\"le\").toNumber()}}function Ve(t){return new Ne(t)}function Ue(t){return me(32,t)}const je=fe(de(\"instruction\"));function Re(t,e){const n=Buffer.alloc(null!=e?e:$e),r=je.encode(t,n);return void 0===e?n.slice(0,r):n}je.addVariant(0,pe([he(\"lamports\"),he(\"space\"),Ue(\"owner\")]),\"createAccount\"),je.addVariant(1,pe([Ue(\"owner\")]),\"assign\"),je.addVariant(2,pe([he(\"lamports\")]),\"transfer\"),je.addVariant(3,pe([Ue(\"base\"),Ve(\"seed\"),he(\"lamports\"),he(\"space\"),Ue(\"owner\")]),\"createAccountWithSeed\"),je.addVariant(4,pe([Ue(\"authorized\")]),\"advanceNonceAccount\"),je.addVariant(5,pe([he(\"lamports\")]),\"withdrawNonceAccount\"),je.addVariant(6,pe([Ue(\"authorized\")]),\"initializeNonceAccount\"),je.addVariant(7,pe([Ue(\"authorized\")]),\"authorizeNonceAccount\"),je.addVariant(8,pe([he(\"space\")]),\"allocate\"),je.addVariant(9,pe([Ue(\"base\"),Ve(\"seed\"),he(\"space\"),Ue(\"owner\")]),\"allocateWithSeed\"),je.addVariant(10,pe([Ue(\"base\"),Ve(\"seed\"),Ue(\"owner\")]),\"assignWithSeed\"),je.addVariant(11,pe([he(\"lamports\"),Ve(\"seed\"),Ue(\"owner\")]),\"transferWithSeed\");const $e=Math.max(...Object.values(je.registry).map((t=>t.span)));class Ke{constructor(t){}encode(t,e){throw new Error(\"System does not have state\")}decode(t){throw new Error(\"System does not have state\")}}class qe{constructor(t){this.idl=t}async encode(t,e){if(\"nonce\"===t){const t=Buffer.alloc(o),n=Ge.encode(e,t);return t.slice(0,n)}throw new Error(`Invalid account name: ${t}`)}decode(t,e){return this.decodeUnchecked(t,e)}decodeUnchecked(t,e){if(\"nonce\"===t)return function(t){return Ge.decode(t)}(e);throw new Error(`Invalid account name: ${t}`)}memcmp(t,e){if(\"nonce\"===t)return{dataSize:o};throw new Error(`Invalid account name: ${t}`)}size(t){var e;return null!==(e=Lt(this.idl,t))&&void 0!==e?e:0}}class Fe extends Wt{constructor(t,e,n,r){super(t.span,r),this.layout=t,this.decoder=e,this.encoder=n}decode(t,e){return this.decoder(this.layout.decode(t,e))}encode(t,e,n){return this.layout.encode(this.encoder(t),e,n)}getSpan(t,e){return this.layout.getSpan(t,e)}}function We(t){return new Fe(me(32),(t=>new e(t)),(t=>t.toBuffer()),t)}const Ge=pe([de(\"version\"),de(\"state\"),We(\"authorizedPubkey\"),We(\"nonce\"),pe([le(\"lamportsPerSignature\")],\"feeCalculator\")]);class He{constructor(t){}decode(t){throw new Error(\"System program does not have events\")}}class Je{constructor(t){this.instruction=new De(t),this.accounts=new qe(t),this.events=new He(t),this.state=new Ke(t)}}var Ze=Object.freeze({__proto__:null,hash:function(t){return p(t)}});function Qe(n,r,i){const o=t.concat([n.toBuffer(),t.from(r),i.toBuffer()]),s=p.digest(o);return new e(t.from(s))}function Xe(n,r){let i=t.alloc(0);n.forEach((function(e){if(e.length>32)throw new TypeError(\"Max seed length exceeded\");i=t.concat([i,tn(e)])})),i=t.concat([i,r.toBuffer(),t.from(\"ProgramDerivedAddress\")]);let o=p(new Uint8Array(i)),s=new u(o,16).toArray(void 0,32);if(e.isOnCurve(new Uint8Array(s)))throw new Error(\"Invalid seeds, address must fall off the curve\");return new e(s)}function Ye(e,n){let r,i=255;for(;0!=i;){try{r=Xe(e.concat(t.from([i])),n)}catch(t){if(t instanceof TypeError)throw t;i--;continue}return[r,i]}throw new Error(\"Unable to find a viable program address nonce\")}const tn=e=>e instanceof t?e:e instanceof Uint8Array?t.from(e.buffer,e.byteOffset,e.byteLength):t.from(e);async function en(n,...r){let i=[t.from([97,110,99,104,111,114])];r.forEach((e=>{i.push(e instanceof t?e:T(e).toBuffer())}));const[o]=await e.findProgramAddress(i,T(n));return o}var nn=Object.freeze({__proto__:null,createWithSeedSync:Qe,createProgramAddressSync:Xe,findProgramAddressSync:Ye,associated:en});const rn=new e(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"),on=new e(\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\");var sn=Object.freeze({__proto__:null,TOKEN_PROGRAM_ID:rn,ASSOCIATED_PROGRAM_ID:on,associatedAddress:async function({mint:t,owner:n}){return(await e.findProgramAddress([n.toBuffer(),rn.toBuffer(),t.toBuffer()],on))[0]}}),an={exports:{}};!function(t,e){var n=\"undefined\"!=typeof self?self:Kt,r=function(){function t(){this.fetch=!1,this.DOMException=n.DOMException}return t.prototype=n,new t}();!function(t){!function(e){var n=\"URLSearchParams\"in t,r=\"Symbol\"in t&&\"iterator\"in Symbol,i=\"FileReader\"in t&&\"Blob\"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),o=\"FormData\"in t,s=\"ArrayBuffer\"in t;if(s)var a=[\"[object Int8Array]\",\"[object Uint8Array]\",\"[object Uint8ClampedArray]\",\"[object Int16Array]\",\"[object Uint16Array]\",\"[object Int32Array]\",\"[object Uint32Array]\",\"[object Float32Array]\",\"[object Float64Array]\"],c=ArrayBuffer.isView||function(t){return t&&a.indexOf(Object.prototype.toString.call(t))>-1};function u(t){if(\"string\"!=typeof t&&(t=String(t)),/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError(\"Invalid character in header field name\");return t.toLowerCase()}function d(t){return\"string\"!=typeof t&&(t=String(t)),t}function l(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return r&&(e[Symbol.iterator]=function(){return e}),e}function h(t){this.map={},t instanceof h?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}function p(t){if(t.bodyUsed)return Promise.reject(new TypeError(\"Already read\"));t.bodyUsed=!0}function f(t){return new Promise((function(e,n){t.onload=function(){e(t.result)},t.onerror=function(){n(t.error)}}))}function m(t){var e=new FileReader,n=f(e);return e.readAsArrayBuffer(t),n}function y(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function g(){return this.bodyUsed=!1,this._initBody=function(t){var e;this._bodyInit=t,t?\"string\"==typeof t?this._bodyText=t:i&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:o&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:n&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():s&&i&&((e=t)&&DataView.prototype.isPrototypeOf(e))?(this._bodyArrayBuffer=y(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):s&&(ArrayBuffer.prototype.isPrototypeOf(t)||c(t))?this._bodyArrayBuffer=y(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText=\"\",this.headers.get(\"content-type\")||(\"string\"==typeof t?this.headers.set(\"content-type\",\"text/plain;charset=UTF-8\"):this._bodyBlob&&this._bodyBlob.type?this.headers.set(\"content-type\",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set(\"content-type\",\"application/x-www-form-urlencoded;charset=UTF-8\"))},i&&(this.blob=function(){var t=p(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error(\"could not read FormData body as blob\");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?p(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(m)}),this.text=function(){var t=p(this);if(t)return t;if(this._bodyBlob)return function(t){var e=new FileReader,n=f(e);return e.readAsText(t),n}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),n=new Array(e.length),r=0;r-1?r:n),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,(\"GET\"===this.method||\"HEAD\"===this.method)&&i)throw new TypeError(\"Body not allowed for GET or HEAD requests\");this._initBody(i)}function b(t){var e=new FormData;return t.trim().split(\"&\").forEach((function(t){if(t){var n=t.split(\"=\"),r=n.shift().replace(/\\+/g,\" \"),i=n.join(\"=\").replace(/\\+/g,\" \");e.append(decodeURIComponent(r),decodeURIComponent(i))}})),e}function A(t,e){e||(e={}),this.type=\"default\",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText=\"statusText\"in e?e.statusText:\"OK\",this.headers=new h(e.headers),this.url=e.url||\"\",this._initBody(t)}v.prototype.clone=function(){return new v(this,{body:this._bodyInit})},g.call(v.prototype),g.call(A.prototype),A.prototype.clone=function(){return new A(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new h(this.headers),url:this.url})},A.error=function(){var t=new A(null,{status:0,statusText:\"\"});return t.type=\"error\",t};var _=[301,302,303,307,308];A.redirect=function(t,e){if(-1===_.indexOf(e))throw new RangeError(\"Invalid status code\");return new A(null,{status:e,headers:{location:t}})},e.DOMException=t.DOMException;try{new e.DOMException}catch(t){e.DOMException=function(t,e){this.message=t,this.name=e;var n=Error(t);this.stack=n.stack},e.DOMException.prototype=Object.create(Error.prototype),e.DOMException.prototype.constructor=e.DOMException}function S(t,n){return new Promise((function(r,o){var s=new v(t,n);if(s.signal&&s.signal.aborted)return o(new e.DOMException(\"Aborted\",\"AbortError\"));var a=new XMLHttpRequest;function c(){a.abort()}a.onload=function(){var t,e,n={status:a.status,statusText:a.statusText,headers:(t=a.getAllResponseHeaders()||\"\",e=new h,t.replace(/\\r?\\n[\\t ]+/g,\" \").split(/\\r?\\n/).forEach((function(t){var n=t.split(\":\"),r=n.shift().trim();if(r){var i=n.join(\":\").trim();e.append(r,i)}})),e)};n.url=\"responseURL\"in a?a.responseURL:n.headers.get(\"X-Request-URL\");var i=\"response\"in a?a.response:a.responseText;r(new A(i,n))},a.onerror=function(){o(new TypeError(\"Network request failed\"))},a.ontimeout=function(){o(new TypeError(\"Network request failed\"))},a.onabort=function(){o(new e.DOMException(\"Aborted\",\"AbortError\"))},a.open(s.method,s.url,!0),\"include\"===s.credentials?a.withCredentials=!0:\"omit\"===s.credentials&&(a.withCredentials=!1),\"responseType\"in a&&i&&(a.responseType=\"blob\"),s.headers.forEach((function(t,e){a.setRequestHeader(e,t)})),s.signal&&(s.signal.addEventListener(\"abort\",c),a.onreadystatechange=function(){4===a.readyState&&s.signal.removeEventListener(\"abort\",c)}),a.send(void 0===s._bodyInit?null:s._bodyInit)}))}S.polyfill=!0,t.fetch||(t.fetch=S,t.Headers=h,t.Request=v,t.Response=A),e.Headers=h,e.Request=v,e.Response=A,e.fetch=S,Object.defineProperty(e,\"__esModule\",{value:!0})}({})}(r),r.fetch.ponyfill=!0,delete r.fetch.polyfill;var i=r;(e=i.fetch).default=i.fetch,e.fetch=i.fetch,e.Headers=i.Headers,e.Request=i.Request,e.Response=i.Response,t.exports=e}(an,an.exports);var cn=qt(an.exports);async function un(t,e){const n=await t.getAccountInfo(e);if(null===n)throw new Error(\"program account not found\");const{program:r}=ln(n.data),i=await t.getAccountInfo(r.programdataAddress);if(null===i)throw new Error(\"program data account not found\");const{programData:o}=ln(i.data);return o}const dn=f.rustEnum([f.struct([],\"uninitialized\"),f.struct([f.option(f.publicKey(),\"authorityAddress\")],\"buffer\"),f.struct([f.publicKey(\"programdataAddress\")],\"program\"),f.struct([f.u64(\"slot\"),f.option(f.publicKey(),\"upgradeAuthorityAddress\")],\"programData\")],void 0,f.u32());function ln(t){return dn.decode(t)}var hn=Object.freeze({__proto__:null,verifiedBuild:async function(t,e,n=5){const r=`https://anchor.projectserum.com/api/v0/program/${e.toString()}/latest?limit=${n}`,[i,o]=await Promise.all([un(t,e),cn(r)]),s=(await o.json()).filter((t=>!t.aborted&&\"Built\"===t.state&&\"Verified\"===t.verified));if(0===s.length)return null;const a=s[0];return i.slot.toNumber()!==a.verified_slot?null:a},fetchData:un,decodeUpgradeableLoaderState:ln}),pn=Object.freeze({__proto__:null,sha256:Ze,rpc:ot,publicKey:nn,bytes:k,token:sn,features:yt,registry:hn});const fn=f.struct([f.publicKey(\"authority\"),f.vecU8(\"data\")]);function mn(t,e){var n,r;let i={};const o=t.args?t.args.length:0;if(e.length>o){if(e.length!==o+1)throw new Error(`provided too many arguments ${e} to instruction ${null==t?void 0:t.name} expecting: ${null!==(r=null===(n=t.args)||void 0===n?void 0:n.map((t=>t.name)))&&void 0!==r?r:[]}`);i=e.pop()}return[e,i]}class yn{static build(t,e,n){if(\"_inner\"===t.name)throw new gt(\"the _inner name is reserved\");const i=(...o)=>{const[s,a]=mn(t,[...o]);P(t.accounts,a.accounts);const c=i.accounts(a.accounts);return void 0!==a.remainingAccounts&&c.push(...a.remainingAccounts),mt(\"debug-logs\")&&console.log(\"Outgoing account metas:\",c),new r({keys:c,programId:n,data:e(t.name,M(t,...s))})};return i.accounts=e=>yn.accountsArray(e,t.accounts,t.name),i}static accountsArray(t,e,n){return t?e.map((e=>{if(void 0!==(\"accounts\"in e?e.accounts:void 0)){const r=t[e.name];return yn.accountsArray(r,e.accounts,n).flat()}{const r=e;let i;try{i=T(t[e.name])}catch(t){throw new Error(`Wrong input type for account \"${e.name}\" in the instruction accounts object${void 0!==n?' for instruction \"'+n+'\"':\"\"}. Expected PublicKey or string.`)}return{pubkey:i,isWritable:r.isMut,isSigner:r.isSigner}}})).flat():[]}}class gn{static build(t,e,n,r){return async(...i)=>{var o;const s=e(...i),[,a]=mn(t,[...i]);if(void 0===r.sendAndConfirm)throw new Error(\"This function requires 'Provider.sendAndConfirm' to be implemented.\");try{return await r.sendAndConfirm(s,null!==(o=a.signers)&&void 0!==o?o:[],a.options)}catch(t){throw At(t,n)}}}}class wn{static build(t,e){return(...r)=>{var i,o,s;const[,a]=mn(t,[...r]),c=new n;if(a.preInstructions&&a.instructions)throw new Error(\"instructions is deprecated, use preInstructions\");return null===(i=a.preInstructions)||void 0===i||i.forEach((t=>c.add(t))),null===(o=a.instructions)||void 0===o||o.forEach((t=>c.add(t))),c.add(e(...r)),null===(s=a.postInstructions)||void 0===s||s.forEach((t=>c.add(t))),c}}}class vn{constructor(t,e,n=lt(),r=new $t(t)){this.provider=n,this.coder=r,this._idl=t,this._programId=e,this._address=bn(e),this._sub=null;const[i,o,a]=(()=>{var i;let o={},a={},c={};return null===(i=t.state)||void 0===i||i.methods.forEach((i=>{const u=yn.build(i,((t,e)=>r.instruction.encodeState(t,e)),e);u.accounts=t=>{const r=function(t,e,n,r){if(\"new\"===n.name){const[n]=Ye([],t);if(void 0===e.wallet)throw new Error(\"This function requires the Provider interface implementor to have a 'wallet' field.\");return[{pubkey:e.wallet.publicKey,isWritable:!1,isSigner:!0},{pubkey:bn(t),isWritable:!0,isSigner:!1},{pubkey:n,isWritable:!1,isSigner:!1},{pubkey:s.programId,isWritable:!1,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1}]}return P(n.accounts,r),[{pubkey:bn(t),isWritable:!0,isSigner:!1}]}(e,n,i,t);return r.concat(yn.accountsArray(t,i.accounts,i.name))};const d=wn.build(i,u),l=gn.build(i,d,x(t),n),p=h(i.name);o[p]=u,a[p]=d,c[p]=l})),[o,a,c]})();this.instruction=i,this.transaction=o,this.rpc=a}get programId(){return this._programId}async fetch(){const t=this.address(),e=await this.provider.connection.getAccountInfo(t);if(null===e)throw new Error(`Account does not exist ${t.toString()}`);const n=this._idl.state;if(!n)throw new Error(\"State is not specified in IDL.\");if((await Rt(n.struct.name)).compare(e.data.slice(0,8)))throw new Error(\"Invalid account discriminator\");return this.coder.state.decode(e.data)}address(){return this._address}subscribe(t){if(null!==this._sub)return this._sub.ee;const e=new y,n=this.provider.connection.onAccountChange(this.address(),(t=>{const n=this.coder.state.decode(t.data);e.emit(\"change\",n)}),t);return this._sub={ee:e,listener:n},e}unsubscribe(){null!==this._sub&&this.provider.connection.removeAccountChangeListener(this._sub.listener).then((async()=>{this._sub=null})).catch(console.error)}}function bn(t){let[e]=Ye([],t);return Qe(e,\"unversioned\",t)}class An{constructor(t,e,n,r,i){this._idlAccount=e,this._programId=n,this._provider=null!=r?r:lt(),this._coder=null!=i?i:new $t(t),this._size=this._coder.accounts.size(e)}get size(){return this._size}get programId(){return this._programId}get provider(){return this._provider}get coder(){return this._coder}async fetchNullable(t,e){const n=await this.getAccountInfo(t,e);return null===n?null:this._coder.accounts.decode(this._idlAccount.name,n.data)}async fetch(t,e){const n=await this.fetchNullable(t,e);if(null===n)throw new Error(`Account does not exist ${t.toString()}`);return n}async fetchMultiple(t,e){return(await Q(this._provider.connection,t.map((t=>T(t))),e)).map((t=>null==t?null:this._coder.accounts.decode(this._idlAccount.name,null==t?void 0:t.account.data)))}async all(t){return(await this._provider.connection.getProgramAccounts(this._programId,{commitment:this._provider.connection.commitment,filters:[{memcmp:this.coder.accounts.memcmp(this._idlAccount.name,t instanceof Buffer?t:void 0)},...Array.isArray(t)?t:[]]})).map((({pubkey:t,account:e})=>({publicKey:t,account:this._coder.accounts.decode(this._idlAccount.name,e.data)})))}subscribe(t,e){const n=_n.get(t.toString());if(n)return n.ee;const r=new y;t=T(t);const i=this._provider.connection.onAccountChange(t,(t=>{const e=this._coder.accounts.decode(this._idlAccount.name,t.data);r.emit(\"change\",e)}),e);return _n.set(t.toString(),{ee:r,listener:i}),r}async unsubscribe(t){let e=_n.get(t.toString());e?_n&&await this._provider.connection.removeAccountChangeListener(e.listener).then((()=>{_n.delete(t.toString())})).catch(console.error):console.warn(\"Address is not subscribed\")}async createInstruction(t,e){const n=this.size;if(void 0===this._provider.wallet)throw new Error(\"This function requires the Provider interface implementor to have a 'wallet' field.\");return s.createAccount({fromPubkey:this._provider.wallet.publicKey,newAccountPubkey:t.publicKey,space:null!=e?e:n,lamports:await this._provider.connection.getMinimumBalanceForRentExemption(null!=e?e:n),programId:this._programId})}async associated(...t){const e=await this.associatedAddress(...t);return await this.fetch(e)}async associatedAddress(...t){return await en(this._programId,...t)}async getAccountInfo(t,e){return await this._provider.connection.getAccountInfo(T(t),e)}}const _n=new Map,Sn=\"Program log: \".length,En=\"Program data: \".length;class In{constructor(t,e,n){this._programId=t,this._provider=e,this._eventParser=new kn(t,n),this._eventCallbacks=new Map,this._eventListeners=new Map,this._listenerIdCount=0}addEventListener(t,e){var n;let r=this._listenerIdCount;return this._listenerIdCount+=1,t in this._eventCallbacks||this._eventListeners.set(t,[]),this._eventListeners.set(t,(null!==(n=this._eventListeners.get(t))&&void 0!==n?n:[]).concat(r)),this._eventCallbacks.set(r,[t,e]),void 0!==this._onLogsSubscriptionId||(this._onLogsSubscriptionId=this._provider.connection.onLogs(this._programId,((t,e)=>{t.err||this._eventParser.parseLogs(t.logs,(n=>{const r=this._eventListeners.get(n.name);r&&r.forEach((r=>{const i=this._eventCallbacks.get(r);if(i){const[,r]=i;r(n.data,e.slot,t.signature)}}))}))}))),r}async removeEventListener(t){const e=this._eventCallbacks.get(t);if(!e)throw new Error(`Event listener ${t} doesn't exist!`);const[n]=e;let r=this._eventListeners.get(n);if(!r)throw new Error(`Event listeners don't exist for ${n}!`);this._eventCallbacks.delete(t),r=r.filter((e=>e!==t)),0===r.length&&this._eventListeners.delete(n),0==this._eventCallbacks.size&&(g.ok(0===this._eventListeners.size),void 0!==this._onLogsSubscriptionId&&(await this._provider.connection.removeOnLogsListener(this._onLogsSubscriptionId),this._onLogsSubscriptionId=void 0))}}class kn{constructor(t,e){this.coder=e,this.programId=t}parseLogs(t,e){const n=new Mn(t),r=new xn;let i=n.next();for(;null!==i;){let[t,o,s]=this.handleLog(r,i);t&&e(t),o&&r.push(o),s&&r.pop(),i=n.next()}}handleLog(t,e){return t.stack.length>0&&t.program()===this.programId.toString()?this.handleProgramLog(e):[null,...this.handleSystemLog(e)]}handleProgramLog(t){if(t.startsWith(\"Program log: \")||t.startsWith(\"Program data: \")){const e=t.startsWith(\"Program log: \")?t.slice(Sn):t.slice(En);return[this.coder.events.decode(e),null,!1]}return[null,...this.handleSystemLog(t)]}handleSystemLog(t){const e=t.split(\":\")[0];return null!==e.match(/^Program (.*) success/g)?[null,!0]:e.startsWith(`Program ${this.programId.toString()} invoke`)?[this.programId.toString(),!1]:e.includes(\"invoke\")?[\"cpi\",!1]:[null,!1]}}class xn{constructor(){this.stack=[]}program(){return g.ok(this.stack.length>0),this.stack[this.stack.length-1]}push(t){this.stack.push(t)}pop(){g.ok(this.stack.length>0),this.stack.pop()}}class Mn{constructor(t){this.logs=t}next(){if(0===this.logs.length)return null;let t=this.logs[0];return this.logs=this.logs.slice(1),t}}const Pn=new e(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\");function Tn(){return new Oe(Cn)}const Cn={version:\"0.1.0\",name:\"spl_token\",instructions:[{name:\"initializeMint\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"decimals\",type:\"u8\"},{name:\"mintAuthority\",type:\"publicKey\"},{name:\"freezeAuthority\",type:{coption:\"publicKey\"}}]},{name:\"initializeAccount\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[]},{name:\"initializeMultisig\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"m\",type:\"u8\"}]},{name:\"transfer\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"destination\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"}]},{name:\"approve\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"delegate\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"}]},{name:\"revoke\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[]},{name:\"setAuthority\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"authorityType\",type:\"u8\"},{name:\"newAuthority\",type:{coption:\"publicKey\"}}]},{name:\"mintTo\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1},{name:\"to\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"}]},{name:\"burn\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"}]},{name:\"closeAccount\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"destination\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!1}],args:[]},{name:\"freezeAccount\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[]},{name:\"thawAccount\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[]},{name:\"transferChecked\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"destination\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"},{name:\"decimals\",type:\"u8\"}]},{name:\"approveChecked\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"delegate\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"},{name:\"decimals\",type:\"u8\"}]},{name:\"mintToChecked\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1},{name:\"to\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"},{name:\"decimals\",type:\"u8\"}]},{name:\"burnChecked\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"},{name:\"decimals\",type:\"u8\"}]},{name:\"initializeAccount2\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"authority\",type:\"publicKey\"}]},{name:\"syncNative\",accounts:[{name:\"account\",isMut:!0,isSigner:!1}],args:[]},{name:\"initializeAccount3\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1}],args:[{name:\"authority\",type:\"publicKey\"}]},{name:\"initializeMultisig2\",accounts:[{name:\"account\",isMut:!0,isSigner:!1}],args:[{name:\"m\",type:\"u8\"}]},{name:\"initializeMint2\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1}],args:[{name:\"decimals\",type:\"u8\"},{name:\"mintAuthority\",type:\"publicKey\"},{name:\"freezeAuthority\",type:{coption:\"publicKey\"}}]}],accounts:[{name:\"mint\",type:{kind:\"struct\",fields:[{name:\"mintAuthority\",type:{coption:\"publicKey\"}},{name:\"supply\",type:\"u64\"},{name:\"decimals\",type:\"u8\"},{name:\"isInitialized\",type:\"bool\"},{name:\"freezeAuthority\",type:{coption:\"publicKey\"}}]}},{name:\"token\",type:{kind:\"struct\",fields:[{name:\"mint\",type:\"publicKey\"},{name:\"authority\",type:\"publicKey\"},{name:\"amount\",type:\"u64\"},{name:\"delegate\",type:{coption:\"publicKey\"}},{name:\"state\",type:\"u8\"},{name:\"isNative\",type:{coption:\"u64\"}},{name:\"delegatedAmount\",type:\"u64\"},{name:\"closeAuthority\",type:{coption:\"publicKey\"}}]}}]};class zn{constructor(t,e,n,r,i,o){this._args=t,this._accounts=e,this._provider=n,this._programId=r,this._idlIx=i,this._accountStore=new Bn(n,o)}async resolve(){for(let t=0;t0&&!this._accounts[n]&&await this.autoPopulatePda(e)}}async autoPopulatePda(t){if(!t.pda||!t.pda.seeds)throw new Error(\"Must have seeds\");const n=await Promise.all(t.pda.seeds.map((t=>this.toBuffer(t)))),r=await this.parseProgramId(t),[i]=await e.findProgramAddress(n,r);this._accounts[h(t.name)]=i}async parseProgramId(t){var n;if(!(null===(n=t.pda)||void 0===n?void 0:n.programId))return this._programId;switch(t.pda.programId.kind){case\"const\":return new e(this.toBufferConst(t.pda.programId.value));case\"arg\":return this.argValue(t.pda.programId);case\"account\":return await this.accountValue(t.pda.programId);default:throw new Error(`Unexpected program seed kind: ${t.pda.programId.kind}`)}}async toBuffer(t){switch(t.kind){case\"const\":return this.toBufferConst(t);case\"arg\":return await this.toBufferArg(t);case\"account\":return await this.toBufferAccount(t);default:throw new Error(`Unexpected seed kind: ${t.kind}`)}}toBufferConst(t){return this.toBufferValue(t.type,t.value)}async toBufferArg(t){const e=this.argValue(t);return this.toBufferValue(t.type,e)}argValue(t){const e=h(t.path.split(\".\")[0]),n=this._idlIx.args.findIndex((t=>t.name===e));if(-1===n)throw new Error(`Unable to find argument for seed: ${e}`);return this._args[n]}async toBufferAccount(t){const e=await this.accountValue(t);return this.toBufferValue(t.type,e)}async accountValue(t){const e=t.path.split(\".\"),n=e[0],r=this._accounts[h(n)];if(1===e.length)return r;const i=await this._accountStore.fetchAccount(t.account,r);return this.parseAccountValue(i,e.slice(1))}parseAccountValue(t,e){let n;for(;e.length>0;)n=t[h(e[0])],e=e.slice(1);return n}toBufferValue(t,e){switch(t){case\"u8\":return Buffer.from([e]);case\"u16\":let n=Buffer.alloc(2);return n.writeUInt16LE(e),n;case\"u32\":let r=Buffer.alloc(4);return r.writeUInt32LE(e),r;case\"u64\":let i=Buffer.alloc(8);return i.writeBigUInt64LE(BigInt(e)),i;case\"string\":return Buffer.from(b(e));case\"publicKey\":return e.toBuffer();default:if(t.array)return Buffer.from(e);throw new Error(`Unexpected seed type: ${t}`)}}}zn.CONST_ACCOUNTS={systemProgram:s.programId,tokenProgram:rn,associatedTokenProgram:on,rent:a};class Bn{constructor(t,e){this._provider=t,this._accounts=e,this._cache=new Map}async fetchAccount(t,e){const n=e.toString();if(!this._cache.has(n))if(\"TokenAccount\"===t){const t=await this._provider.connection.getAccountInfo(e);if(null===t)throw new Error(`invalid account info for ${n}`);const r=Tn().accounts.decode(\"token\",t.data);this._cache.set(n,r)}else{const r=this._accounts[h(t)].fetch(e);this._cache.set(n,r)}return this._cache.get(n)}}class Ln{static build(t,e,n,r,i,o,s,a,c){return(...u)=>new On(u,r,i,o,s,a,t,e,n,c)}}class On{constructor(t,e,n,r,i,o,s,a,c,u){this._args=t,this._ixFn=e,this._txFn=n,this._rpcFn=r,this._simulateFn=i,this._viewFn=o,this._accounts={},this._remainingAccounts=[],this._signers=[],this._preInstructions=[],this._postInstructions=[],this._accountsResolver=new zn(t,this._accounts,s,a,c,u)}async pubkeys(){return await this._accountsResolver.resolve(),this._accounts}accounts(t){return Object.assign(this._accounts,t),this}signers(t){return this._signers=this._signers.concat(t),this}remainingAccounts(t){return this._remainingAccounts=this._remainingAccounts.concat(t),this}preInstructions(t){return this._preInstructions=this._preInstructions.concat(t),this}postInstructions(t){return this._postInstructions=this._postInstructions.concat(t),this}async rpc(t){return await this._accountsResolver.resolve(),this._rpcFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:t})}async view(t){if(await this._accountsResolver.resolve(),!this._viewFn)throw new Error(\"Method does not support views\");return this._viewFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:t})}async simulate(t){return await this._accountsResolver.resolve(),this._simulateFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:t})}async instruction(){return await this._accountsResolver.resolve(),this._ixFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions})}async transaction(){return await this._accountsResolver.resolve(),this._txFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions})}}class Dn{constructor(t,e,n,r){e=T(e),n||(n=lt()),this._idl=t,this._provider=n,this._programId=e,this._coder=null!=r?r:new $t(t),this._events=new In(this._programId,n,this._coder);const[i,o,s,a,c,u,d,l]=class{static build(t,e,n,r){const i={},o={},s={},a={},c={},u={},d=x(t),l=t.accounts?class{static build(t,e,n,r){var i;const o={};return null===(i=t.accounts)||void 0===i||i.forEach((i=>{const s=h(i.name);o[s]=new An(t,i,n,r,e)})),o}}.build(t,e,n,r):{},p=class{static build(t,e,n,r){if(void 0!==t.state)return new vn(t,n,r,e)}}.build(t,e,n,r);return t.instructions.forEach((p=>{const f=yn.build(p,((t,n)=>e.instruction.encode(t,n)),n),m=wn.build(p,f),y=gn.build(p,m,d,r),g=class{static build(t,e,n,r,i,o,s){return async(...a)=>{var c;const u=e(...a),[,d]=mn(t,[...a]);let l;if(void 0===r.simulate)throw new Error(\"This function requires 'Provider.simulate' to be implemented.\");try{l=await r.simulate(u,d.signers,null===(c=d.options)||void 0===c?void 0:c.commitment)}catch(t){throw At(t,n)}if(void 0===l)throw new Error(\"Unable to simulate transaction\");const h=l.logs;if(!h)throw new Error(\"Simulated logs not found\");const p=[];return s.events&&new kn(o,i).parseLogs(h,(t=>{p.push(t)})),{events:p,raw:h}}}}.build(p,m,d,r,e,n,t),w=class{static build(t,e,n,r){const i=e.accounts.find((t=>t.isMut)),o=!!e.returns;if(!i&&o)return async(...i)=>{var o,s;let a=await n(...i);const c=`Program return: ${t} `;let u=a.raw.find((t=>t.startsWith(c)));if(!u)throw new Error(\"View expected return log\");let d=E(u.slice(c.length)),l=e.returns;if(!l)throw new Error(\"View expected return type\");return Tt.fieldLayout({type:l},Array.from([...null!==(o=r.accounts)&&void 0!==o?o:[],...null!==(s=r.types)&&void 0!==s?s:[]])).decode(d)}}}.build(n,p,g,t),v=Ln.build(r,n,p,f,m,y,g,w,l),b=h(p.name);o[b]=f,s[b]=m,i[b]=y,a[b]=g,c[b]=v,w&&(u[b]=w)})),[i,o,s,l,a,c,p,u]}}.build(t,this._coder,e,n);this.rpc=i,this.instruction=o,this.transaction=s,this.account=a,this.simulate=c,this.methods=u,this.state=d,this.views=l}get programId(){return this._programId}get idl(){return this._idl}get coder(){return this._coder}get provider(){return this._provider}static async at(t,e){const n=T(t),r=await Dn.fetchIdl(n,e);if(!r)throw new Error(`IDL not found for program: ${t.toString()}`);return new Dn(r,n,e)}static async fetchIdl(t,n){n=null!=n?n:lt();const r=T(t),i=await async function(t){const n=(await e.findProgramAddress([],t))[0];return await e.createWithSeed(n,\"anchor:idl\",t)}(r),o=await n.connection.getAccountInfo(i);if(!o)return null;let s=(a=o.data.slice(8),fn.decode(a));var a;const c=m(s.data);return JSON.parse(v(c))}addEventListener(t,e){return this._events.addEventListener(t,e)}async removeEventListener(t){return await this._events.removeEventListener(t)}}class Nn{static token(t){return function(t){return new Dn(Cn,Pn,t,Tn())}(t)}}const Vn=new e(\"11111111111111111111111111111111\");function Un(t){return new Dn(jn,Vn,t,new Je(jn))}const jn={version:\"0.1.0\",name:\"system_program\",instructions:[{name:\"createAccount\",accounts:[{name:\"from\",isMut:!0,isSigner:!0},{name:\"to\",isMut:!0,isSigner:!0}],args:[{name:\"lamports\",type:\"u64\"},{name:\"space\",type:\"u64\"},{name:\"owner\",type:\"publicKey\"}]},{name:\"assign\",accounts:[{name:\"pubkey\",isMut:!0,isSigner:!0}],args:[{name:\"owner\",type:\"publicKey\"}]},{name:\"transfer\",accounts:[{name:\"from\",isMut:!0,isSigner:!0},{name:\"to\",isMut:!0,isSigner:!1}],args:[{name:\"lamports\",type:\"u64\"}]},{name:\"createAccountWithSeed\",accounts:[{name:\"from\",isMut:!0,isSigner:!0},{name:\"to\",isMut:!0,isSigner:!1},{name:\"base\",isMut:!1,isSigner:!0}],args:[{name:\"base\",type:\"publicKey\"},{name:\"seed\",type:\"string\"},{name:\"lamports\",type:\"u64\"},{name:\"space\",type:\"u64\"},{name:\"owner\",type:\"publicKey\"}]},{name:\"advanceNonceAccount\",accounts:[{name:\"nonce\",isMut:!0,isSigner:!1},{name:\"recentBlockhashes\",isMut:!1,isSigner:!1},{name:\"authorized\",isMut:!1,isSigner:!0}],args:[{name:\"authorized\",type:\"publicKey\"}]},{name:\"withdrawNonceAccount\",accounts:[{name:\"nonce\",isMut:!0,isSigner:!1},{name:\"to\",isMut:!0,isSigner:!1},{name:\"recentBlockhashes\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1},{name:\"authorized\",isMut:!1,isSigner:!0}],args:[{name:\"lamports\",type:\"u64\"}]},{name:\"initializeNonceAccount\",accounts:[{name:\"nonce\",isMut:!0,isSigner:!0},{name:\"recentBlockhashes\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"authorized\",type:\"publicKey\"}]},{name:\"authorizeNonceAccount\",accounts:[{name:\"nonce\",isMut:!0,isSigner:!1},{name:\"authorized\",isMut:!1,isSigner:!0}],args:[{name:\"authorized\",type:\"publicKey\"}]},{name:\"allocate\",accounts:[{name:\"pubkey\",isMut:!0,isSigner:!0}],args:[{name:\"space\",type:\"u64\"}]},{name:\"allocateWithSeed\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"base\",isMut:!1,isSigner:!0}],args:[{name:\"base\",type:\"publicKey\"},{name:\"seed\",type:\"string\"},{name:\"space\",type:\"u64\"},{name:\"owner\",type:\"publicKey\"}]},{name:\"assignWithSeed\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"base\",isMut:!1,isSigner:!0}],args:[{name:\"base\",type:\"publicKey\"},{name:\"seed\",type:\"string\"},{name:\"owner\",type:\"publicKey\"}]},{name:\"transferWithSeed\",accounts:[{name:\"from\",isMut:!0,isSigner:!1},{name:\"base\",isMut:!1,isSigner:!0},{name:\"to\",isMut:!0,isSigner:!1}],args:[{name:\"lamports\",type:\"u64\"},{name:\"seed\",type:\"string\"},{name:\"owner\",type:\"publicKey\"}]}],accounts:[{name:\"nonce\",type:{kind:\"struct\",fields:[{name:\"version\",type:\"u32\"},{name:\"state\",type:\"u32\"},{name:\"authorizedPubkey\",type:\"publicKey\"},{name:\"nonce\",type:\"publicKey\"},{name:\"feeCalculator\",type:{defined:\"FeeCalculator\"}}]}}],types:[{name:\"FeeCalculator\",type:{kind:\"struct\",fields:[{name:\"lamportsPerSignature\",type:\"u64\"}]}}]};class Rn{static system(t){return Un(t)}}export{Dt as ACCOUNT_DISCRIMINATOR_SIZE,An as AccountClient,vt as AnchorError,st as AnchorProvider,Nt as BorshAccountsCoder,$t as BorshCoder,Vt as BorshEventCoder,Ct as BorshInstructionCoder,jt as BorshStateCoder,In as EventManager,kn as EventParser,gt as IdlError,_t as LangErrorCode,St as LangErrorMessage,Ln as MethodsBuilderFactory,Rn as Native,Dn as Program,bt as ProgramError,wt as ProgramErrorStack,Nn as Spl,Oe as SplTokenCoder,vn as StateClient,Je as SystemCoder,Ut as eventDiscriminator,lt as getProvider,x as parseIdlErrors,dt as setProvider,mn as splitArgsAndCtx,Rt as stateDiscriminator,M as toInstruction,T as translateAddress,At as translateError,pn as utils,P as validateAccounts};\n//# sourceMappingURL=index.js.map\n","// src/index.ts\nimport { BN } from \"@project-serum/anchor\";\nimport { PublicKey as PublicKey14 } from \"@solana/web3.js\";\nimport pyth from \"@pythnetwork/client\";\n\n// src/tokenFaucet.ts\nimport * as anchor from \"@project-serum/anchor\";\nimport { AnchorProvider, Program } from \"@project-serum/anchor\";\nimport {\n ASSOCIATED_TOKEN_PROGRAM_ID,\n Token,\n TOKEN_PROGRAM_ID\n} from \"@solana/spl-token\";\nimport {\n SYSVAR_RENT_PUBKEY,\n Transaction\n} from \"@solana/web3.js\";\n\n// src/idl/token_faucet.json\nvar token_faucet_default = {\n version: \"0.1.0\",\n name: \"token_faucet\",\n instructions: [\n {\n name: \"initialize\",\n accounts: [\n {\n name: \"faucetConfig\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"admin\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"mintAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"mintToUser\",\n accounts: [\n {\n name: \"faucetConfig\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"mintAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userTokenAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"mintAuthority\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"transferMintAuthority\",\n accounts: [\n {\n name: \"faucetConfig\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"admin\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"mintAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"mintAuthority\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n }\n ],\n accounts: [\n {\n name: \"FaucetConfig\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"admin\",\n type: \"publicKey\"\n },\n {\n name: \"mint\",\n type: \"publicKey\"\n },\n {\n name: \"mintAuthority\",\n type: \"publicKey\"\n },\n {\n name: \"mintAuthorityNonce\",\n type: \"u8\"\n }\n ]\n }\n }\n ],\n errors: [\n {\n code: 6e3,\n name: \"InvalidMintAccountAuthority\",\n msg: \"Program not mint authority\"\n }\n ]\n};\n\n// src/tokenFaucet.ts\nvar TokenFaucet = class {\n constructor(connection, wallet, programId, mint, opts) {\n this.connection = connection;\n this.wallet = wallet;\n this.opts = opts || AnchorProvider.defaultOptions();\n const provider = new AnchorProvider(connection, wallet, this.opts);\n this.provider = provider;\n this.program = new Program(token_faucet_default, programId, provider);\n this.mint = mint;\n }\n async getFaucetConfigPublicKeyAndNonce() {\n return anchor.web3.PublicKey.findProgramAddress(\n [\n Buffer.from(anchor.utils.bytes.utf8.encode(\"faucet_config\")),\n this.mint.toBuffer()\n ],\n this.program.programId\n );\n }\n async getMintAuthority() {\n return (await anchor.web3.PublicKey.findProgramAddress(\n [\n Buffer.from(anchor.utils.bytes.utf8.encode(\"mint_authority\")),\n this.mint.toBuffer()\n ],\n this.program.programId\n ))[0];\n }\n async getFaucetConfigPublicKey() {\n return (await this.getFaucetConfigPublicKeyAndNonce())[0];\n }\n async initialize() {\n const [faucetConfigPublicKey] = await this.getFaucetConfigPublicKeyAndNonce();\n return await this.program.rpc.initialize({\n accounts: {\n faucetConfig: faucetConfigPublicKey,\n admin: this.wallet.publicKey,\n mintAccount: this.mint,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: anchor.web3.SystemProgram.programId,\n tokenProgram: TOKEN_PROGRAM_ID\n }\n });\n }\n async fetchState() {\n return await this.program.account.faucetConfig.fetch(\n await this.getFaucetConfigPublicKey()\n );\n }\n async mintToUserIx(userTokenAccount, amount) {\n return this.program.instruction.mintToUser(amount, {\n accounts: {\n faucetConfig: await this.getFaucetConfigPublicKey(),\n mintAccount: this.mint,\n userTokenAccount,\n mintAuthority: await this.getMintAuthority(),\n tokenProgram: TOKEN_PROGRAM_ID\n }\n });\n }\n async mintToUser(userTokenAccount, amount) {\n const mintIx = await this.mintToUserIx(userTokenAccount, amount);\n const tx = new Transaction().add(mintIx);\n const txSig = await this.program.provider.sendAndConfirm(tx, [], this.opts);\n return txSig;\n }\n async transferMintAuthority() {\n return await this.program.rpc.transferMintAuthority({\n accounts: {\n faucetConfig: await this.getFaucetConfigPublicKey(),\n mintAccount: this.mint,\n mintAuthority: await this.getMintAuthority(),\n tokenProgram: TOKEN_PROGRAM_ID,\n admin: this.wallet.publicKey\n }\n });\n }\n async createAssociatedTokenAccountAndMintTo(userPublicKey, amount) {\n const tx = new Transaction();\n const [associatedTokenPublicKey, createAssociatedAccountIx, mintToTx] = await this.createAssociatedTokenAccountAndMintToInstructions(\n userPublicKey,\n amount\n );\n let associatedTokenAccountExists = false;\n try {\n const assosciatedTokenAccount = await this.connection.getAccountInfo(\n associatedTokenPublicKey\n );\n associatedTokenAccountExists = !!assosciatedTokenAccount;\n } catch (e) {\n associatedTokenAccountExists = false;\n }\n const skipAccountCreation = associatedTokenAccountExists;\n if (!skipAccountCreation)\n tx.add(createAssociatedAccountIx);\n tx.add(mintToTx);\n const txSig = await this.program.provider.sendAndConfirm(tx, [], this.opts);\n return [associatedTokenPublicKey, txSig];\n }\n async createAssociatedTokenAccountAndMintToInstructions(userPublicKey, amount) {\n const state = await this.fetchState();\n const associateTokenPublicKey = await this.getAssosciatedMockUSDMintAddress(\n { userPubKey: userPublicKey }\n );\n const createAssociatedAccountIx = Token.createAssociatedTokenAccountInstruction(\n ASSOCIATED_TOKEN_PROGRAM_ID,\n TOKEN_PROGRAM_ID,\n state.mint,\n associateTokenPublicKey,\n userPublicKey,\n this.wallet.publicKey\n );\n const mintToIx = await this.mintToUserIx(associateTokenPublicKey, amount);\n return [associateTokenPublicKey, createAssociatedAccountIx, mintToIx];\n }\n async getAssosciatedMockUSDMintAddress(props) {\n const state = await this.fetchState();\n return Token.getAssociatedTokenAddress(\n ASSOCIATED_TOKEN_PROGRAM_ID,\n TOKEN_PROGRAM_ID,\n state.mint,\n props.userPubKey\n );\n }\n async getTokenAccountInfo(props) {\n const assosciatedKey = await this.getAssosciatedMockUSDMintAddress(props);\n const state = await this.fetchState();\n const token = new Token(\n this.connection,\n state.mint,\n TOKEN_PROGRAM_ID,\n this.provider.payer\n );\n return await token.getAccountInfo(assosciatedKey);\n }\n async subscribeToTokenAccount(props) {\n try {\n const tokenAccountKey = await this.getAssosciatedMockUSDMintAddress(\n props\n );\n props.callback(await this.getTokenAccountInfo(props));\n this.connection.onAccountChange(\n tokenAccountKey,\n async (_accountInfo) => {\n props.callback(await this.getTokenAccountInfo(props));\n }\n );\n return true;\n } catch (e) {\n return false;\n }\n }\n};\n\n// src/oracles/pythClient.ts\nimport { parsePriceData } from \"@pythnetwork/client\";\nimport { BN as BN2 } from \"@project-serum/anchor\";\n\n// src/constants/numericConstants.ts\nimport { LAMPORTS_PER_SOL } from \"@solana/web3.js\";\nvar ZERO = new BN(0);\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar THREE = new BN(3);\nvar FOUR = new BN(4);\nvar FIVE = new BN(5);\nvar SIX = new BN(6);\nvar SEVEN = new BN(7);\nvar EIGHT = new BN(8);\nvar NINE = new BN(9);\nvar TEN = new BN(10);\nvar TEN_THOUSAND = new BN(1e4);\nvar BN_MAX = new BN(Number.MAX_SAFE_INTEGER);\nvar TEN_MILLION = TEN_THOUSAND.mul(TEN_THOUSAND);\nvar MAX_LEVERAGE = new BN(5);\nvar PERCENTAGE_PRECISION_EXP = new BN(6);\nvar PERCENTAGE_PRECISION = new BN(10).pow(PERCENTAGE_PRECISION_EXP);\nvar CONCENTRATION_PRECISION = PERCENTAGE_PRECISION;\nvar QUOTE_PRECISION_EXP = new BN(6);\nvar FUNDING_RATE_BUFFER_PRECISION_EXP = new BN(3);\nvar PRICE_PRECISION_EXP = new BN(6);\nvar FUNDING_RATE_PRECISION_EXP = PRICE_PRECISION_EXP.add(\n FUNDING_RATE_BUFFER_PRECISION_EXP\n);\nvar PEG_PRECISION_EXP = new BN(6);\nvar AMM_RESERVE_PRECISION_EXP = new BN(9);\nvar SPOT_MARKET_RATE_PRECISION_EXP = new BN(6);\nvar SPOT_MARKET_RATE_PRECISION = new BN(10).pow(\n SPOT_MARKET_RATE_PRECISION_EXP\n);\nvar SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP = new BN(10);\nvar SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION = new BN(10).pow(\n SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP\n);\nvar SPOT_MARKET_UTILIZATION_PRECISION_EXP = new BN(6);\nvar SPOT_MARKET_UTILIZATION_PRECISION = new BN(10).pow(\n SPOT_MARKET_UTILIZATION_PRECISION_EXP\n);\nvar SPOT_MARKET_WEIGHT_PRECISION = new BN(1e4);\nvar SPOT_MARKET_BALANCE_PRECISION_EXP = new BN(9);\nvar SPOT_MARKET_BALANCE_PRECISION = new BN(10).pow(\n SPOT_MARKET_BALANCE_PRECISION_EXP\n);\nvar SPOT_MARKET_IMF_PRECISION_EXP = new BN(6);\nvar SPOT_MARKET_IMF_PRECISION = new BN(10).pow(\n SPOT_MARKET_IMF_PRECISION_EXP\n);\nvar LIQUIDATION_FEE_PRECISION = new BN(1e6);\nvar QUOTE_PRECISION = new BN(10).pow(QUOTE_PRECISION_EXP);\nvar PRICE_PRECISION = new BN(10).pow(PRICE_PRECISION_EXP);\nvar FUNDING_RATE_PRECISION = new BN(10).pow(\n FUNDING_RATE_PRECISION_EXP\n);\nvar FUNDING_RATE_BUFFER_PRECISION = new BN(10).pow(\n FUNDING_RATE_BUFFER_PRECISION_EXP\n);\nvar PEG_PRECISION = new BN(10).pow(PEG_PRECISION_EXP);\nvar AMM_RESERVE_PRECISION = new BN(10).pow(AMM_RESERVE_PRECISION_EXP);\nvar BASE_PRECISION = AMM_RESERVE_PRECISION;\nvar BASE_PRECISION_EXP = AMM_RESERVE_PRECISION_EXP;\nvar AMM_TO_QUOTE_PRECISION_RATIO = AMM_RESERVE_PRECISION.div(QUOTE_PRECISION);\nvar PRICE_DIV_PEG = PRICE_PRECISION.div(PEG_PRECISION);\nvar PRICE_TO_QUOTE_PRECISION = PRICE_PRECISION.div(QUOTE_PRECISION);\nvar AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO = AMM_RESERVE_PRECISION.mul(PEG_PRECISION).div(QUOTE_PRECISION);\nvar MARGIN_PRECISION = TEN_THOUSAND;\nvar BID_ASK_SPREAD_PRECISION = new BN(1e6);\nvar LIQUIDATION_PCT_PRECISION = TEN_THOUSAND;\nvar ONE_YEAR = new BN(31536e3);\nvar QUOTE_SPOT_MARKET_INDEX = 0;\nvar LAMPORTS_PRECISION = new BN(LAMPORTS_PER_SOL);\nvar LAMPORTS_EXP = new BN(Math.log10(LAMPORTS_PER_SOL));\nvar OPEN_ORDER_MARGIN_REQUIREMENT = QUOTE_PRECISION.div(new BN(100));\nvar DEFAULT_REVENUE_SINCE_LAST_FUNDING_SPREAD_RETREAT = new BN(\n -25\n).mul(QUOTE_PRECISION);\n\n// src/oracles/pythClient.ts\nvar PythClient = class {\n constructor(connection) {\n this.connection = connection;\n }\n async getOraclePriceData(pricePublicKey) {\n const accountInfo = await this.connection.getAccountInfo(pricePublicKey);\n return this.getOraclePriceDataFromBuffer(accountInfo.data);\n }\n getOraclePriceDataFromBuffer(buffer) {\n const priceData = parsePriceData(buffer);\n return {\n price: convertPythPrice(priceData.aggregate.price, priceData.exponent),\n slot: new BN2(priceData.lastSlot.toString()),\n confidence: convertPythPrice(priceData.confidence, priceData.exponent),\n twap: convertPythPrice(priceData.twap.value, priceData.exponent),\n twapConfidence: convertPythPrice(\n priceData.twac.value,\n priceData.exponent\n ),\n hasSufficientNumberOfDataPoints: true\n };\n }\n};\nfunction convertPythPrice(price, exponent) {\n exponent = Math.abs(exponent);\n const pythPrecision = TEN.pow(new BN2(exponent).abs());\n return new BN2(price * Math.pow(10, exponent)).mul(PRICE_PRECISION).div(pythPrecision);\n}\n\n// src/oracles/switchboardClient.ts\nimport { Keypair, PublicKey as PublicKey2 } from \"@solana/web3.js\";\nimport { BN as BN3, Program as Program2, AnchorProvider as AnchorProvider2 } from \"@project-serum/anchor\";\n\n// src/wallet.ts\nvar Wallet = class {\n constructor(payer) {\n this.payer = payer;\n }\n async signTransaction(tx) {\n tx.partialSign(this.payer);\n return tx;\n }\n async signAllTransactions(txs) {\n return txs.map((t) => {\n t.partialSign(this.payer);\n return t;\n });\n }\n get publicKey() {\n return this.payer.publicKey;\n }\n};\n\n// src/idl/switchboard_v2.json\nvar switchboard_v2_default = {\n version: \"0.1.0\",\n name: \"switchboard_v2\",\n instructions: [\n {\n name: \"vaultTransfer\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"to\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"vault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"VaultTransferParams\"\n }\n }\n ]\n },\n {\n name: \"programInit\",\n accounts: [\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenMint\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"vault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"ProgramInitParams\"\n }\n }\n ]\n },\n {\n name: \"programConfig\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"programState\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"ProgramConfigParams\"\n }\n }\n ]\n },\n {\n name: \"aggregatorInit\",\n accounts: [\n {\n name: \"aggregator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"queue\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authorWallet\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"programState\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"AggregatorInitParams\"\n }\n }\n ]\n },\n {\n name: \"aggregatorLock\",\n accounts: [\n {\n name: \"aggregator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"AggregatorLockParams\"\n }\n }\n ]\n },\n {\n name: \"aggregatorSetAuthority\",\n accounts: [\n {\n name: \"aggregator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"newAuthority\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"AggregatorSetAuthorityParams\"\n }\n }\n ]\n },\n {\n name: \"aggregatorSetBatchSize\",\n accounts: [\n {\n name: \"aggregator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"AggregatorSetBatchSizeParams\"\n }\n }\n ]\n },\n {\n name: \"aggregatorSetMinJobs\",\n accounts: [\n {\n name: \"aggregator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"AggregatorSetMinJobsParams\"\n }\n }\n ]\n },\n {\n name: \"aggregatorSetMinOracles\",\n accounts: [\n {\n name: \"aggregator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"AggregatorSetMinOraclesParams\"\n }\n }\n ]\n },\n {\n name: \"aggregatorSetVarianceThreshold\",\n accounts: [\n {\n name: \"aggregator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"AggregatorSetVarianceThresholdParams\"\n }\n }\n ]\n },\n {\n name: \"aggregatorSetHistoryBuffer\",\n accounts: [\n {\n name: \"aggregator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"buffer\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"AggregatorSetHistoryBufferParams\"\n }\n }\n ]\n },\n {\n name: \"aggregatorSetQueue\",\n accounts: [\n {\n name: \"aggregator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"queue\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"AggregatorSetQueueParams\"\n }\n }\n ]\n },\n {\n name: \"aggregatorAddJob\",\n accounts: [\n {\n name: \"aggregator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"job\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"AggregatorAddJobParams\"\n }\n }\n ]\n },\n {\n name: \"aggregatorRemoveJob\",\n accounts: [\n {\n name: \"aggregator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"job\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"AggregatorRemoveJobParams\"\n }\n }\n ]\n },\n {\n name: \"aggregatorOpenRound\",\n accounts: [\n {\n name: \"aggregator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"lease\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"queueAuthority\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"permission\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"escrow\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"programState\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"payoutWallet\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"dataBuffer\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"AggregatorOpenRoundParams\"\n }\n }\n ]\n },\n {\n name: \"aggregatorSaveResult\",\n accounts: [\n {\n name: \"aggregator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracle\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"oracleQueue\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"queueAuthority\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"feedPermission\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oraclePermission\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"lease\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"escrow\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"programState\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"historyBuffer\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"AggregatorSaveResultParams\"\n }\n }\n ]\n },\n {\n name: \"jobInit\",\n accounts: [\n {\n name: \"job\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authorWallet\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"programState\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"JobInitParams\"\n }\n }\n ]\n },\n {\n name: \"permissionInit\",\n accounts: [\n {\n name: \"permission\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"granter\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"grantee\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"PermissionInitParams\"\n }\n }\n ]\n },\n {\n name: \"permissionSet\",\n accounts: [\n {\n name: \"permission\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"PermissionSetParams\"\n }\n }\n ]\n },\n {\n name: \"oracleQueueInit\",\n accounts: [\n {\n name: \"oracleQueue\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"buffer\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"OracleQueueInitParams\"\n }\n }\n ]\n },\n {\n name: \"oracleQueueSetRewards\",\n accounts: [\n {\n name: \"queue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"OracleQueueSetRewardsParams\"\n }\n }\n ]\n },\n {\n name: \"oracleQueueVrfConfig\",\n accounts: [\n {\n name: \"queue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"OracleQueueSetVrfSettingsParams\"\n }\n }\n ]\n },\n {\n name: \"oracleInit\",\n accounts: [\n {\n name: \"oracle\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleAuthority\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"wallet\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"programState\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"queue\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"OracleInitParams\"\n }\n }\n ]\n },\n {\n name: \"oracleHeartbeat\",\n accounts: [\n {\n name: \"oracle\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"tokenAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"gcOracle\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"permission\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"dataBuffer\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"OracleHeartbeatParams\"\n }\n }\n ]\n },\n {\n name: \"oracleWithdraw\",\n accounts: [\n {\n name: \"oracle\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"tokenAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"withdrawAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"permission\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"programState\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"OracleWithdrawParams\"\n }\n }\n ]\n },\n {\n name: \"leaseInit\",\n accounts: [\n {\n name: \"lease\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"queue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"aggregator\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"funder\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"owner\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"escrow\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"programState\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"LeaseInitParams\"\n }\n }\n ]\n },\n {\n name: \"leaseExtend\",\n accounts: [\n {\n name: \"lease\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"aggregator\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"queue\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"funder\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"owner\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"escrow\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"programState\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"LeaseExtendParams\"\n }\n }\n ]\n },\n {\n name: \"leaseWithdraw\",\n accounts: [\n {\n name: \"lease\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"escrow\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"aggregator\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"queue\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"withdrawAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"withdrawAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"programState\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"LeaseWithdrawParams\"\n }\n }\n ]\n },\n {\n name: \"crankInit\",\n accounts: [\n {\n name: \"crank\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"queue\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"buffer\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"CrankInitParams\"\n }\n }\n ]\n },\n {\n name: \"crankPush\",\n accounts: [\n {\n name: \"crank\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"aggregator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"queueAuthority\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"permission\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"lease\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"escrow\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"programState\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"dataBuffer\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"CrankPushParams\"\n }\n }\n ]\n },\n {\n name: \"crankPop\",\n accounts: [\n {\n name: \"crank\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"queueAuthority\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"programState\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"payoutWallet\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"crankDataBuffer\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"queueDataBuffer\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"CrankPopParams\"\n }\n }\n ]\n },\n {\n name: \"vrfInit\",\n accounts: [\n {\n name: \"vrf\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"oracleQueue\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"escrow\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"programState\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"VrfInitParams\"\n }\n }\n ]\n },\n {\n name: \"vrfRequestRandomness\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"vrf\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"queueAuthority\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"dataBuffer\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"permission\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"escrow\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"payerWallet\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"payerAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"recentBlockhashes\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"programState\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"VrfRequestRandomnessParams\"\n }\n }\n ]\n },\n {\n name: \"vrfProve\",\n accounts: [\n {\n name: \"vrf\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracle\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"randomnessProducer\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"VrfProveParams\"\n }\n }\n ]\n },\n {\n name: \"vrfProveAndVerify\",\n accounts: [\n {\n name: \"vrf\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"callbackPid\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"escrow\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"programState\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"oracle\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"oracleAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"oracleWallet\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"instructionsSysvar\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"VrfProveAndVerifyParams\"\n }\n }\n ]\n },\n {\n name: \"vrfVerify\",\n accounts: [\n {\n name: \"vrf\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"callbackPid\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"escrow\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"programState\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"oracle\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"oracleAuthority\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"oracleWallet\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"instructionsSysvar\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"VrfVerifyParams\"\n }\n }\n ]\n }\n ],\n accounts: [\n {\n name: \"SbState\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"authority\",\n type: \"publicKey\"\n },\n {\n name: \"tokenMint\",\n type: \"publicKey\"\n },\n {\n name: \"tokenVault\",\n type: \"publicKey\"\n },\n {\n name: \"ebuf\",\n type: {\n array: [\n \"u8\",\n 1024\n ]\n }\n }\n ]\n }\n },\n {\n name: \"AggregatorAccountData\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"metadata\",\n type: {\n array: [\n \"u8\",\n 128\n ]\n }\n },\n {\n name: \"authorWallet\",\n type: \"publicKey\"\n },\n {\n name: \"queuePubkey\",\n type: \"publicKey\"\n },\n {\n name: \"oracleRequestBatchSize\",\n type: \"u32\"\n },\n {\n name: \"minOracleResults\",\n type: \"u32\"\n },\n {\n name: \"minJobResults\",\n type: \"u32\"\n },\n {\n name: \"minUpdateDelaySeconds\",\n type: \"u32\"\n },\n {\n name: \"startAfter\",\n type: \"i64\"\n },\n {\n name: \"varianceThreshold\",\n type: {\n defined: \"SwitchboardDecimal\"\n }\n },\n {\n name: \"forceReportPeriod\",\n type: \"i64\"\n },\n {\n name: \"expiration\",\n type: \"i64\"\n },\n {\n name: \"consecutiveFailureCount\",\n type: \"u64\"\n },\n {\n name: \"nextAllowedUpdateTime\",\n type: \"i64\"\n },\n {\n name: \"isLocked\",\n type: \"bool\"\n },\n {\n name: \"crankPubkey\",\n type: \"publicKey\"\n },\n {\n name: \"latestConfirmedRound\",\n type: {\n defined: \"AggregatorRound\"\n }\n },\n {\n name: \"currentRound\",\n type: {\n defined: \"AggregatorRound\"\n }\n },\n {\n name: \"jobPubkeysData\",\n type: {\n array: [\n \"publicKey\",\n 16\n ]\n }\n },\n {\n name: \"jobHashes\",\n type: {\n array: [\n {\n defined: \"Hash\"\n },\n 16\n ]\n }\n },\n {\n name: \"jobPubkeysSize\",\n type: \"u32\"\n },\n {\n name: \"jobsChecksum\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"authority\",\n type: \"publicKey\"\n },\n {\n name: \"historyBuffer\",\n type: \"publicKey\"\n },\n {\n name: \"ebuf\",\n type: {\n array: [\n \"u8\",\n 192\n ]\n }\n }\n ]\n }\n },\n {\n name: \"PermissionAccountData\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"authority\",\n type: \"publicKey\"\n },\n {\n name: \"permissions\",\n type: \"u32\"\n },\n {\n name: \"granter\",\n type: \"publicKey\"\n },\n {\n name: \"grantee\",\n type: \"publicKey\"\n },\n {\n name: \"expiration\",\n type: \"i64\"\n },\n {\n name: \"ebuf\",\n type: {\n array: [\n \"u8\",\n 256\n ]\n }\n }\n ]\n }\n },\n {\n name: \"LeaseAccountData\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"escrow\",\n type: \"publicKey\"\n },\n {\n name: \"queue\",\n type: \"publicKey\"\n },\n {\n name: \"aggregator\",\n type: \"publicKey\"\n },\n {\n name: \"tokenProgram\",\n type: \"publicKey\"\n },\n {\n name: \"isActive\",\n type: \"bool\"\n },\n {\n name: \"crankRowCount\",\n type: \"u32\"\n },\n {\n name: \"createdAt\",\n type: \"i64\"\n },\n {\n name: \"updateCount\",\n type: \"u128\"\n },\n {\n name: \"withdrawAuthority\",\n type: \"publicKey\"\n },\n {\n name: \"ebuf\",\n type: {\n array: [\n \"u8\",\n 256\n ]\n }\n }\n ]\n }\n },\n {\n name: \"OracleQueueAccountData\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"metadata\",\n type: {\n array: [\n \"u8\",\n 64\n ]\n }\n },\n {\n name: \"authority\",\n type: \"publicKey\"\n },\n {\n name: \"oracleTimeout\",\n type: \"u32\"\n },\n {\n name: \"reward\",\n type: \"u64\"\n },\n {\n name: \"minStake\",\n type: \"u64\"\n },\n {\n name: \"slashingEnabled\",\n type: \"bool\"\n },\n {\n name: \"varianceToleranceMultiplier\",\n type: {\n defined: \"SwitchboardDecimal\"\n }\n },\n {\n name: \"feedProbationPeriod\",\n type: \"u32\"\n },\n {\n name: \"currIdx\",\n type: \"u32\"\n },\n {\n name: \"size\",\n type: \"u32\"\n },\n {\n name: \"gcIdx\",\n type: \"u32\"\n },\n {\n name: \"consecutiveFeedFailureLimit\",\n type: \"u64\"\n },\n {\n name: \"consecutiveOracleFailureLimit\",\n type: \"u64\"\n },\n {\n name: \"unpermissionedFeedsEnabled\",\n type: \"bool\"\n },\n {\n name: \"unpermissionedVrfEnabled\",\n type: \"bool\"\n },\n {\n name: \"ebuf\",\n type: {\n array: [\n \"u8\",\n 1022\n ]\n }\n },\n {\n name: \"maxSize\",\n type: \"u32\"\n },\n {\n name: \"dataBuffer\",\n type: \"publicKey\"\n }\n ]\n }\n },\n {\n name: \"CrankAccountData\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"metadata\",\n type: {\n array: [\n \"u8\",\n 64\n ]\n }\n },\n {\n name: \"queuePubkey\",\n type: \"publicKey\"\n },\n {\n name: \"pqSize\",\n type: \"u32\"\n },\n {\n name: \"maxRows\",\n type: \"u32\"\n },\n {\n name: \"jitterModifier\",\n type: \"u8\"\n },\n {\n name: \"ebuf\",\n type: {\n array: [\n \"u8\",\n 255\n ]\n }\n },\n {\n name: \"dataBuffer\",\n type: \"publicKey\"\n }\n ]\n }\n },\n {\n name: \"OracleAccountData\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"metadata\",\n type: {\n array: [\n \"u8\",\n 128\n ]\n }\n },\n {\n name: \"oracleAuthority\",\n type: \"publicKey\"\n },\n {\n name: \"lastHeartbeat\",\n type: \"i64\"\n },\n {\n name: \"numInUse\",\n type: \"u32\"\n },\n {\n name: \"tokenAccount\",\n type: \"publicKey\"\n },\n {\n name: \"queuePubkey\",\n type: \"publicKey\"\n },\n {\n name: \"metrics\",\n type: {\n defined: \"OracleMetrics\"\n }\n },\n {\n name: \"ebuf\",\n type: {\n array: [\n \"u8\",\n 256\n ]\n }\n }\n ]\n }\n },\n {\n name: \"JobAccountData\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"metadata\",\n type: {\n array: [\n \"u8\",\n 64\n ]\n }\n },\n {\n name: \"authorWallet\",\n type: \"publicKey\"\n },\n {\n name: \"expiration\",\n type: \"i64\"\n },\n {\n name: \"hash\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"data\",\n type: \"bytes\"\n },\n {\n name: \"referenceCount\",\n type: \"u32\"\n }\n ]\n }\n },\n {\n name: \"VrfAccountData\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"status\",\n type: {\n defined: \"VrfStatus\"\n }\n },\n {\n name: \"counter\",\n type: \"u128\"\n },\n {\n name: \"authority\",\n type: \"publicKey\"\n },\n {\n name: \"oracleQueue\",\n type: \"publicKey\"\n },\n {\n name: \"escrow\",\n type: \"publicKey\"\n },\n {\n name: \"callback\",\n type: {\n defined: \"CallbackZC\"\n }\n },\n {\n name: \"batchSize\",\n type: \"u32\"\n },\n {\n name: \"builders\",\n type: {\n array: [\n {\n defined: \"VrfBuilder\"\n },\n 8\n ]\n }\n },\n {\n name: \"buildersLen\",\n type: \"u32\"\n },\n {\n name: \"testMode\",\n type: \"bool\"\n },\n {\n name: \"currentRound\",\n type: {\n defined: \"VrfRound\"\n }\n },\n {\n name: \"ebuf\",\n type: {\n array: [\n \"u8\",\n 1024\n ]\n }\n }\n ]\n }\n }\n ],\n types: [\n {\n name: \"AggregatorAddJobParams\",\n type: {\n kind: \"struct\",\n fields: []\n }\n },\n {\n name: \"AggregatorInitParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"metadata\",\n type: {\n array: [\n \"u8\",\n 128\n ]\n }\n },\n {\n name: \"batchSize\",\n type: \"u32\"\n },\n {\n name: \"minOracleResults\",\n type: \"u32\"\n },\n {\n name: \"minJobResults\",\n type: \"u32\"\n },\n {\n name: \"minUpdateDelaySeconds\",\n type: \"u32\"\n },\n {\n name: \"startAfter\",\n type: \"i64\"\n },\n {\n name: \"varianceThreshold\",\n type: {\n defined: \"BorshDecimal\"\n }\n },\n {\n name: \"forceReportPeriod\",\n type: \"i64\"\n },\n {\n name: \"expiration\",\n type: \"i64\"\n },\n {\n name: \"stateBump\",\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"AggregatorLockParams\",\n type: {\n kind: \"struct\",\n fields: []\n }\n },\n {\n name: \"AggregatorOpenRoundParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"stateBump\",\n type: \"u8\"\n },\n {\n name: \"leaseBump\",\n type: \"u8\"\n },\n {\n name: \"permissionBump\",\n type: \"u8\"\n },\n {\n name: \"jitter\",\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"AggregatorRemoveJobParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"jobIdx\",\n type: \"u32\"\n }\n ]\n }\n },\n {\n name: \"AggregatorSaveResultParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"oracleIdx\",\n type: \"u32\"\n },\n {\n name: \"error\",\n type: \"bool\"\n },\n {\n name: \"value\",\n type: {\n defined: \"BorshDecimal\"\n }\n },\n {\n name: \"jobsChecksum\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"minResponse\",\n type: {\n defined: \"BorshDecimal\"\n }\n },\n {\n name: \"maxResponse\",\n type: {\n defined: \"BorshDecimal\"\n }\n },\n {\n name: \"feedPermissionBump\",\n type: \"u8\"\n },\n {\n name: \"oraclePermissionBump\",\n type: \"u8\"\n },\n {\n name: \"leaseBump\",\n type: \"u8\"\n },\n {\n name: \"stateBump\",\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"AggregatorSetAuthorityParams\",\n type: {\n kind: \"struct\",\n fields: []\n }\n },\n {\n name: \"AggregatorSetBatchSizeParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"batchSize\",\n type: \"u32\"\n }\n ]\n }\n },\n {\n name: \"AggregatorSetHistoryBufferParams\",\n type: {\n kind: \"struct\",\n fields: []\n }\n },\n {\n name: \"AggregatorSetMinJobsParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"minJobResults\",\n type: \"u32\"\n }\n ]\n }\n },\n {\n name: \"AggregatorSetMinOraclesParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"minOracleResults\",\n type: \"u32\"\n }\n ]\n }\n },\n {\n name: \"AggregatorSetQueueParams\",\n type: {\n kind: \"struct\",\n fields: []\n }\n },\n {\n name: \"AggregatorSetVarianceThresholdParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"varianceThreshold\",\n type: {\n defined: \"BorshDecimal\"\n }\n }\n ]\n }\n },\n {\n name: \"CrankInitParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"name\",\n type: \"bytes\"\n },\n {\n name: \"metadata\",\n type: \"bytes\"\n },\n {\n name: \"crankSize\",\n type: \"u32\"\n }\n ]\n }\n },\n {\n name: \"CrankPopParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"stateBump\",\n type: \"u8\"\n },\n {\n name: \"leaseBumps\",\n type: \"bytes\"\n },\n {\n name: \"permissionBumps\",\n type: \"bytes\"\n },\n {\n name: \"nonce\",\n type: {\n option: \"u32\"\n }\n },\n {\n name: \"failOpenOnAccountMismatch\",\n type: {\n option: \"bool\"\n }\n }\n ]\n }\n },\n {\n name: \"CrankPushParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"stateBump\",\n type: \"u8\"\n },\n {\n name: \"permissionBump\",\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"JobInitParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"expiration\",\n type: \"i64\"\n },\n {\n name: \"stateBump\",\n type: \"u8\"\n },\n {\n name: \"data\",\n type: \"bytes\"\n }\n ]\n }\n },\n {\n name: \"LeaseExtendParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"loadAmount\",\n type: \"u64\"\n },\n {\n name: \"leaseBump\",\n type: \"u8\"\n },\n {\n name: \"stateBump\",\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"LeaseInitParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"loadAmount\",\n type: \"u64\"\n },\n {\n name: \"withdrawAuthority\",\n type: \"publicKey\"\n },\n {\n name: \"leaseBump\",\n type: \"u8\"\n },\n {\n name: \"stateBump\",\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"LeaseWithdrawParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"stateBump\",\n type: \"u8\"\n },\n {\n name: \"leaseBump\",\n type: \"u8\"\n },\n {\n name: \"amount\",\n type: \"u64\"\n }\n ]\n }\n },\n {\n name: \"OracleHeartbeatParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"permissionBump\",\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"OracleInitParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"name\",\n type: \"bytes\"\n },\n {\n name: \"metadata\",\n type: \"bytes\"\n },\n {\n name: \"stateBump\",\n type: \"u8\"\n },\n {\n name: \"oracleBump\",\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"OracleQueueInitParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"metadata\",\n type: {\n array: [\n \"u8\",\n 64\n ]\n }\n },\n {\n name: \"reward\",\n type: \"u64\"\n },\n {\n name: \"minStake\",\n type: \"u64\"\n },\n {\n name: \"feedProbationPeriod\",\n type: \"u32\"\n },\n {\n name: \"oracleTimeout\",\n type: \"u32\"\n },\n {\n name: \"slashingEnabled\",\n type: \"bool\"\n },\n {\n name: \"varianceToleranceMultiplier\",\n type: {\n defined: \"BorshDecimal\"\n }\n },\n {\n name: \"consecutiveFeedFailureLimit\",\n type: \"u64\"\n },\n {\n name: \"consecutiveOracleFailureLimit\",\n type: \"u64\"\n },\n {\n name: \"queueSize\",\n type: \"u32\"\n },\n {\n name: \"unpermissionedFeeds\",\n type: \"bool\"\n },\n {\n name: \"unpermissionedVrf\",\n type: \"bool\"\n }\n ]\n }\n },\n {\n name: \"OracleQueueSetRewardsParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"rewards\",\n type: \"u64\"\n }\n ]\n }\n },\n {\n name: \"OracleQueueSetVrfSettingsParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"unpermissionedVrfEnabled\",\n type: \"bool\"\n }\n ]\n }\n },\n {\n name: \"OracleWithdrawParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"stateBump\",\n type: \"u8\"\n },\n {\n name: \"permissionBump\",\n type: \"u8\"\n },\n {\n name: \"amount\",\n type: \"u64\"\n }\n ]\n }\n },\n {\n name: \"PermissionInitParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"permissionBump\",\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"PermissionSetParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"permission\",\n type: {\n defined: \"SwitchboardPermission\"\n }\n },\n {\n name: \"enable\",\n type: \"bool\"\n }\n ]\n }\n },\n {\n name: \"ProgramConfigParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"token\",\n type: \"publicKey\"\n },\n {\n name: \"bump\",\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"ProgramInitParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"stateBump\",\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"VaultTransferParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"stateBump\",\n type: \"u8\"\n },\n {\n name: \"amount\",\n type: \"u64\"\n }\n ]\n }\n },\n {\n name: \"VrfInitParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"callback\",\n type: {\n defined: \"Callback\"\n }\n },\n {\n name: \"stateBump\",\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"VrfProveParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"proof\",\n type: \"bytes\"\n },\n {\n name: \"idx\",\n type: \"u32\"\n }\n ]\n }\n },\n {\n name: \"VrfProveAndVerifyParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"nonce\",\n type: {\n option: \"u32\"\n }\n },\n {\n name: \"stateBump\",\n type: \"u8\"\n },\n {\n name: \"idx\",\n type: \"u32\"\n },\n {\n name: \"proof\",\n type: \"bytes\"\n }\n ]\n }\n },\n {\n name: \"VrfRequestRandomnessParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"permissionBump\",\n type: \"u8\"\n },\n {\n name: \"stateBump\",\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"VrfVerifyParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"nonce\",\n type: {\n option: \"u32\"\n }\n },\n {\n name: \"stateBump\",\n type: \"u8\"\n },\n {\n name: \"idx\",\n type: \"u32\"\n }\n ]\n }\n },\n {\n name: \"Hash\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"data\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n name: \"AggregatorRound\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"numSuccess\",\n type: \"u32\"\n },\n {\n name: \"numError\",\n type: \"u32\"\n },\n {\n name: \"isClosed\",\n type: \"bool\"\n },\n {\n name: \"roundOpenSlot\",\n type: \"u64\"\n },\n {\n name: \"roundOpenTimestamp\",\n type: \"i64\"\n },\n {\n name: \"result\",\n type: {\n defined: \"SwitchboardDecimal\"\n }\n },\n {\n name: \"stdDeviation\",\n type: {\n defined: \"SwitchboardDecimal\"\n }\n },\n {\n name: \"minResponse\",\n type: {\n defined: \"SwitchboardDecimal\"\n }\n },\n {\n name: \"maxResponse\",\n type: {\n defined: \"SwitchboardDecimal\"\n }\n },\n {\n name: \"oraclePubkeysData\",\n type: {\n array: [\n \"publicKey\",\n 16\n ]\n }\n },\n {\n name: \"mediansData\",\n type: {\n array: [\n {\n defined: \"SwitchboardDecimal\"\n },\n 16\n ]\n }\n },\n {\n name: \"currentPayout\",\n type: {\n array: [\n \"i64\",\n 16\n ]\n }\n },\n {\n name: \"mediansFulfilled\",\n type: {\n array: [\n \"bool\",\n 16\n ]\n }\n },\n {\n name: \"errorsFulfilled\",\n type: {\n array: [\n \"bool\",\n 16\n ]\n }\n }\n ]\n }\n },\n {\n name: \"AggregatorHistoryRow\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"timestamp\",\n type: \"i64\"\n },\n {\n name: \"value\",\n type: {\n defined: \"SwitchboardDecimal\"\n }\n }\n ]\n }\n },\n {\n name: \"SwitchboardDecimal\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"mantissa\",\n type: \"i128\"\n },\n {\n name: \"scale\",\n type: \"u32\"\n }\n ]\n }\n },\n {\n name: \"CrankRow\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"pubkey\",\n type: \"publicKey\"\n },\n {\n name: \"nextTimestamp\",\n type: \"i64\"\n }\n ]\n }\n },\n {\n name: \"OracleMetrics\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"consecutiveSuccess\",\n type: \"u64\"\n },\n {\n name: \"consecutiveError\",\n type: \"u64\"\n },\n {\n name: \"consecutiveDisagreement\",\n type: \"u64\"\n },\n {\n name: \"consecutiveLateResponse\",\n type: \"u64\"\n },\n {\n name: \"consecutiveFailure\",\n type: \"u64\"\n },\n {\n name: \"totalSuccess\",\n type: \"u128\"\n },\n {\n name: \"totalError\",\n type: \"u128\"\n },\n {\n name: \"totalDisagreement\",\n type: \"u128\"\n },\n {\n name: \"totalLateResponse\",\n type: \"u128\"\n }\n ]\n }\n },\n {\n name: \"BorshDecimal\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"mantissa\",\n type: \"i128\"\n },\n {\n name: \"scale\",\n type: \"u32\"\n }\n ]\n }\n },\n {\n name: \"EcvrfProofZC\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"gamma\",\n type: {\n defined: \"EdwardsPointZC\"\n }\n },\n {\n name: \"c\",\n type: {\n defined: \"Scalar\"\n }\n },\n {\n name: \"s\",\n type: {\n defined: \"Scalar\"\n }\n }\n ]\n }\n },\n {\n name: \"Scalar\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"bytes\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n name: \"FieldElementZC\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"bytes\",\n type: {\n array: [\n \"u64\",\n 5\n ]\n }\n }\n ]\n }\n },\n {\n name: \"CompletedPointZC\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"x\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"y\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"z\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"t\",\n type: {\n defined: \"FieldElementZC\"\n }\n }\n ]\n }\n },\n {\n name: \"EdwardsPointZC\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"x\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"y\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"z\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"t\",\n type: {\n defined: \"FieldElementZC\"\n }\n }\n ]\n }\n },\n {\n name: \"ProjectivePointZC\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"x\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"y\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"z\",\n type: {\n defined: \"FieldElementZC\"\n }\n }\n ]\n }\n },\n {\n name: \"EcvrfIntermediate\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"r\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"nS\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"d\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"t13\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"t15\",\n type: {\n defined: \"FieldElementZC\"\n }\n }\n ]\n }\n },\n {\n name: \"VrfBuilder\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"producer\",\n type: \"publicKey\"\n },\n {\n name: \"status\",\n type: {\n defined: \"VrfStatus\"\n }\n },\n {\n name: \"reprProof\",\n type: {\n array: [\n \"u8\",\n 80\n ]\n }\n },\n {\n name: \"proof\",\n type: {\n defined: \"EcvrfProofZC\"\n }\n },\n {\n name: \"yPoint\",\n type: \"publicKey\"\n },\n {\n name: \"stage\",\n type: \"u32\"\n },\n {\n name: \"stage1Out\",\n type: {\n defined: \"EcvrfIntermediate\"\n }\n },\n {\n name: \"r1\",\n type: {\n defined: \"EdwardsPointZC\"\n }\n },\n {\n name: \"r2\",\n type: {\n defined: \"EdwardsPointZC\"\n }\n },\n {\n name: \"stage3Out\",\n type: {\n defined: \"EcvrfIntermediate\"\n }\n },\n {\n name: \"hPoint\",\n type: {\n defined: \"EdwardsPointZC\"\n }\n },\n {\n name: \"sReduced\",\n type: {\n defined: \"Scalar\"\n }\n },\n {\n name: \"yPointBuilder\",\n type: {\n array: [\n {\n defined: \"FieldElementZC\"\n },\n 3\n ]\n }\n },\n {\n name: \"yRistrettoPoint\",\n type: {\n defined: \"EdwardsPointZC\"\n }\n },\n {\n name: \"mulRound\",\n type: \"u8\"\n },\n {\n name: \"hashPointsRound\",\n type: \"u8\"\n },\n {\n name: \"mulTmp1\",\n type: {\n defined: \"CompletedPointZC\"\n }\n },\n {\n name: \"uPoint1\",\n type: {\n defined: \"EdwardsPointZC\"\n }\n },\n {\n name: \"uPoint2\",\n type: {\n defined: \"EdwardsPointZC\"\n }\n },\n {\n name: \"vPoint1\",\n type: {\n defined: \"EdwardsPointZC\"\n }\n },\n {\n name: \"vPoint2\",\n type: {\n defined: \"EdwardsPointZC\"\n }\n },\n {\n name: \"uPoint\",\n type: {\n defined: \"EdwardsPointZC\"\n }\n },\n {\n name: \"vPoint\",\n type: {\n defined: \"EdwardsPointZC\"\n }\n },\n {\n name: \"u1\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"u2\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"invertee\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"y\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"z\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"p1Bytes\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"p2Bytes\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"p3Bytes\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"p4Bytes\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"cPrimeHashbuf\",\n type: {\n array: [\n \"u8\",\n 16\n ]\n }\n },\n {\n name: \"m1\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"m2\",\n type: {\n defined: \"FieldElementZC\"\n }\n },\n {\n name: \"txRemaining\",\n type: \"u32\"\n },\n {\n name: \"verified\",\n type: \"bool\"\n },\n {\n name: \"result\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n name: \"AccountMetaZC\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"pubkey\",\n type: \"publicKey\"\n },\n {\n name: \"isSigner\",\n type: \"bool\"\n },\n {\n name: \"isWritable\",\n type: \"bool\"\n }\n ]\n }\n },\n {\n name: \"AccountMetaBorsh\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"pubkey\",\n type: \"publicKey\"\n },\n {\n name: \"isSigner\",\n type: \"bool\"\n },\n {\n name: \"isWritable\",\n type: \"bool\"\n }\n ]\n }\n },\n {\n name: \"CallbackZC\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"programId\",\n type: \"publicKey\"\n },\n {\n name: \"accounts\",\n type: {\n array: [\n {\n defined: \"AccountMetaZC\"\n },\n 32\n ]\n }\n },\n {\n name: \"accountsLen\",\n type: \"u32\"\n },\n {\n name: \"ixData\",\n type: {\n array: [\n \"u8\",\n 1024\n ]\n }\n },\n {\n name: \"ixDataLen\",\n type: \"u32\"\n }\n ]\n }\n },\n {\n name: \"Callback\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"programId\",\n type: \"publicKey\"\n },\n {\n name: \"accounts\",\n type: {\n vec: {\n defined: \"AccountMetaBorsh\"\n }\n }\n },\n {\n name: \"ixData\",\n type: \"bytes\"\n }\n ]\n }\n },\n {\n name: \"VrfRound\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"alpha\",\n type: {\n array: [\n \"u8\",\n 256\n ]\n }\n },\n {\n name: \"alphaLen\",\n type: \"u32\"\n },\n {\n name: \"requestSlot\",\n type: \"u64\"\n },\n {\n name: \"requestTimestamp\",\n type: \"i64\"\n },\n {\n name: \"result\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"numVerified\",\n type: \"u32\"\n },\n {\n name: \"ebuf\",\n type: {\n array: [\n \"u8\",\n 256\n ]\n }\n }\n ]\n }\n },\n {\n name: \"Lanes\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"C\"\n },\n {\n name: \"D\"\n },\n {\n name: \"AB\"\n },\n {\n name: \"AC\"\n },\n {\n name: \"CD\"\n },\n {\n name: \"AD\"\n },\n {\n name: \"BC\"\n },\n {\n name: \"ABCD\"\n }\n ]\n }\n },\n {\n name: \"Shuffle\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"AAAA\"\n },\n {\n name: \"BBBB\"\n },\n {\n name: \"CACA\"\n },\n {\n name: \"DBBD\"\n },\n {\n name: \"ADDA\"\n },\n {\n name: \"CBCB\"\n },\n {\n name: \"ABAB\"\n },\n {\n name: \"BADC\"\n },\n {\n name: \"BACD\"\n },\n {\n name: \"ABDC\"\n }\n ]\n }\n },\n {\n name: \"Shuffle\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"AAAA\"\n },\n {\n name: \"BBBB\"\n },\n {\n name: \"BADC\"\n },\n {\n name: \"BACD\"\n },\n {\n name: \"ADDA\"\n },\n {\n name: \"CBCB\"\n },\n {\n name: \"ABDC\"\n },\n {\n name: \"ABAB\"\n },\n {\n name: \"DBBD\"\n },\n {\n name: \"CACA\"\n }\n ]\n }\n },\n {\n name: \"Lanes\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"D\"\n },\n {\n name: \"C\"\n },\n {\n name: \"AB\"\n },\n {\n name: \"AC\"\n },\n {\n name: \"AD\"\n },\n {\n name: \"BCD\"\n }\n ]\n }\n },\n {\n name: \"Error\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"InvalidPublicKey\"\n },\n {\n name: \"SerializationError\",\n fields: [\n {\n defined: \"bincode::Error\"\n }\n ]\n },\n {\n name: \"DeserializationError\",\n fields: [\n {\n defined: \"bincode::Error\"\n }\n ]\n },\n {\n name: \"InvalidDataError\"\n }\n ]\n }\n },\n {\n name: \"SwitchboardPermission\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"PermitOracleHeartbeat\"\n },\n {\n name: \"PermitOracleQueueUsage\"\n },\n {\n name: \"PermitVrfRequests\"\n }\n ]\n }\n },\n {\n name: \"OracleResponseType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"TypeSuccess\"\n },\n {\n name: \"TypeError\"\n },\n {\n name: \"TypeDisagreement\"\n },\n {\n name: \"TypeNoResponse\"\n }\n ]\n }\n },\n {\n name: \"VrfStatus\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"StatusNone\"\n },\n {\n name: \"StatusRequesting\"\n },\n {\n name: \"StatusVerifying\"\n },\n {\n name: \"StatusVerified\"\n },\n {\n name: \"StatusCallbackSuccess\"\n },\n {\n name: \"StatusVerifyFailure\"\n }\n ]\n }\n }\n ],\n events: [\n {\n name: \"AggregatorInitEvent\",\n fields: [\n {\n name: \"feedPubkey\",\n type: \"publicKey\",\n index: false\n }\n ]\n },\n {\n name: \"VrfRequestRandomnessEvent\",\n fields: [\n {\n name: \"vrfPubkey\",\n type: \"publicKey\",\n index: true\n },\n {\n name: \"oraclePubkeys\",\n type: {\n vec: \"publicKey\"\n },\n index: false\n },\n {\n name: \"loadAmount\",\n type: \"u64\",\n index: false\n },\n {\n name: \"existingAmount\",\n type: \"u64\",\n index: false\n }\n ]\n },\n {\n name: \"VrfRequestEvent\",\n fields: [\n {\n name: \"vrfPubkey\",\n type: \"publicKey\",\n index: true\n },\n {\n name: \"oraclePubkeys\",\n type: {\n vec: \"publicKey\"\n },\n index: false\n }\n ]\n },\n {\n name: \"VrfProveEvent\",\n fields: [\n {\n name: \"vrfPubkey\",\n type: \"publicKey\",\n index: true\n },\n {\n name: \"oraclePubkey\",\n type: \"publicKey\",\n index: true\n },\n {\n name: \"authorityPubkey\",\n type: \"publicKey\",\n index: false\n }\n ]\n },\n {\n name: \"VrfVerifyEvent\",\n fields: [\n {\n name: \"vrfPubkey\",\n type: \"publicKey\",\n index: true\n },\n {\n name: \"oraclePubkey\",\n type: \"publicKey\",\n index: true\n },\n {\n name: \"authorityPubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false\n }\n ]\n },\n {\n name: \"VrfCallbackPerformedEvent\",\n fields: [\n {\n name: \"vrfPubkey\",\n type: \"publicKey\",\n index: true\n },\n {\n name: \"oraclePubkey\",\n type: \"publicKey\",\n index: true\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false\n }\n ]\n },\n {\n name: \"AggregatorOpenRoundEvent\",\n fields: [\n {\n name: \"feedPubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"oraclePubkeys\",\n type: {\n vec: \"publicKey\"\n },\n index: false\n },\n {\n name: \"jobPubkeys\",\n type: {\n vec: \"publicKey\"\n },\n index: false\n },\n {\n name: \"remainingFunds\",\n type: \"u64\",\n index: false\n },\n {\n name: \"queueAuthority\",\n type: \"publicKey\",\n index: false\n }\n ]\n },\n {\n name: \"AggregatorValueUpdateEvent\",\n fields: [\n {\n name: \"feedPubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"value\",\n type: {\n defined: \"BorshDecimal\"\n },\n index: false\n },\n {\n name: \"slot\",\n type: \"u64\",\n index: false\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false\n },\n {\n name: \"oraclePubkeys\",\n type: {\n vec: \"publicKey\"\n },\n index: false\n },\n {\n name: \"oracleValues\",\n type: {\n vec: {\n defined: \"BorshDecimal\"\n }\n },\n index: false\n }\n ]\n },\n {\n name: \"OracleRewardEvent\",\n fields: [\n {\n name: \"feedPubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"leasePubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"oraclePubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"walletPubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false\n },\n {\n name: \"roundSlot\",\n type: \"u64\",\n index: false\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false\n }\n ]\n },\n {\n name: \"OracleWithdrawEvent\",\n fields: [\n {\n name: \"oraclePubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"walletPubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"destinationWallet\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"previousAmount\",\n type: \"u64\",\n index: false\n },\n {\n name: \"newAmount\",\n type: \"u64\",\n index: false\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false\n }\n ]\n },\n {\n name: \"LeaseWithdrawEvent\",\n fields: [\n {\n name: \"leasePubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"walletPubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"previousAmount\",\n type: \"u64\",\n index: false\n },\n {\n name: \"newAmount\",\n type: \"u64\",\n index: false\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false\n }\n ]\n },\n {\n name: \"OracleSlashEvent\",\n fields: [\n {\n name: \"feedPubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"leasePubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"oraclePubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"walletPubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false\n },\n {\n name: \"roundSlot\",\n type: \"u64\",\n index: false\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false\n }\n ]\n },\n {\n name: \"LeaseFundEvent\",\n fields: [\n {\n name: \"leasePubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"funder\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false\n }\n ]\n },\n {\n name: \"ProbationBrokenEvent\",\n fields: [\n {\n name: \"feedPubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"queuePubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false\n }\n ]\n },\n {\n name: \"FeedPermissionRevokedEvent\",\n fields: [\n {\n name: \"feedPubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false\n }\n ]\n },\n {\n name: \"GarbageCollectFailureEvent\",\n fields: [\n {\n name: \"queuePubkey\",\n type: \"publicKey\",\n index: false\n }\n ]\n },\n {\n name: \"OracleBootedEvent\",\n fields: [\n {\n name: \"queuePubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"oraclePubkey\",\n type: \"publicKey\",\n index: false\n }\n ]\n },\n {\n name: \"CrankLeaseInsufficientFundsEvent\",\n fields: [\n {\n name: \"feedPubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"leasePubkey\",\n type: \"publicKey\",\n index: false\n }\n ]\n },\n {\n name: \"CrankPopExpectedFailureEvent\",\n fields: [\n {\n name: \"feedPubkey\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"leasePubkey\",\n type: \"publicKey\",\n index: false\n }\n ]\n }\n ],\n errors: [\n {\n code: 6e3,\n name: \"ArrayOperationError\",\n msg: \"Illegal operation on a Switchboard array.\"\n },\n {\n code: 6001,\n name: \"QueueOperationError\",\n msg: \"Illegal operation on a Switchboard queue.\"\n },\n {\n code: 6002,\n name: \"IncorrectProgramOwnerError\",\n msg: \"An account required to be owned by the program has a different owner.\"\n },\n {\n code: 6003,\n name: \"InvalidAggregatorRound\",\n msg: \"Aggregator is not currently populated with a valid round.\"\n },\n {\n code: 6004,\n name: \"TooManyAggregatorJobs\",\n msg: \"Aggregator cannot fit any more jobs.\"\n },\n {\n code: 6005,\n name: \"AggregatorCurrentRoundClosed\",\n msg: \"Aggregator's current round is closed. No results are being accepted.\"\n },\n {\n code: 6006,\n name: \"AggregatorInvalidSaveResult\",\n msg: \"Aggregator received an invalid save result instruction.\"\n },\n {\n code: 6007,\n name: \"InvalidStrDecimalConversion\",\n msg: \"Failed to convert string to decimal format.\"\n },\n {\n code: 6008,\n name: \"AccountLoaderMissingSignature\",\n msg: \"AccountLoader account is missing a required signature.\"\n },\n {\n code: 6009,\n name: \"MissingRequiredSignature\",\n msg: \"Account is missing a required signature.\"\n },\n {\n code: 6010,\n name: \"ArrayOverflowError\",\n msg: \"The attempted action will overflow a zero-copy account array.\"\n },\n {\n code: 6011,\n name: \"ArrayUnderflowError\",\n msg: \"The attempted action will underflow a zero-copy account array.\"\n },\n {\n code: 6012,\n name: \"PubkeyNotFoundError\",\n msg: \"The queried public key was not found.\"\n },\n {\n code: 6013,\n name: \"AggregatorIllegalRoundOpenCall\",\n msg: \"Aggregator round open called too early.\"\n },\n {\n code: 6014,\n name: \"AggregatorIllegalRoundCloseCall\",\n msg: \"Aggregator round close called too early.\"\n },\n {\n code: 6015,\n name: \"AggregatorClosedError\",\n msg: \"Aggregator is closed. Illegal action.\"\n },\n {\n code: 6016,\n name: \"IllegalOracleIdxError\",\n msg: \"Illegal oracle index.\"\n },\n {\n code: 6017,\n name: \"OracleAlreadyRespondedError\",\n msg: \"The provided oracle has already responded this round.\"\n },\n {\n code: 6018,\n name: \"ProtoDeserializeError\",\n msg: \"Failed to deserialize protocol buffer.\"\n },\n {\n code: 6019,\n name: \"UnauthorizedStateUpdateError\",\n msg: \"Unauthorized program state modification attempted.\"\n },\n {\n code: 6020,\n name: \"MissingOracleAccountsError\",\n msg: \"Not enough oracle accounts provided to closeRounds.\"\n },\n {\n code: 6021,\n name: \"OracleMismatchError\",\n msg: \"An unexpected oracle account was provided for the transaction.\"\n },\n {\n code: 6022,\n name: \"CrankMaxCapacityError\",\n msg: \"Attempted to push to a Crank that's at capacity\"\n },\n {\n code: 6023,\n name: \"AggregatorLeaseInsufficientFunds\",\n msg: \"Aggregator update call attempted but attached lease has insufficient funds.\"\n },\n {\n code: 6024,\n name: \"IncorrectTokenAccountMint\",\n msg: \"The provided token account does not point to the Switchboard token mint.\"\n },\n {\n code: 6025,\n name: \"InvalidEscrowAccount\",\n msg: \"An invalid escrow account was provided.\"\n },\n {\n code: 6026,\n name: \"CrankEmptyError\",\n msg: \"Crank empty. Pop failed.\"\n },\n {\n code: 6027,\n name: \"PdaDeriveError\",\n msg: \"Failed to derive a PDA from the provided seed.\"\n },\n {\n code: 6028,\n name: \"AggregatorAccountNotFound\",\n msg: \"Aggregator account missing from provided account list.\"\n },\n {\n code: 6029,\n name: \"PermissionAccountNotFound\",\n msg: \"Permission account missing from provided account list.\"\n },\n {\n code: 6030,\n name: \"LeaseAccountDeriveFailure\",\n msg: \"Failed to derive a lease account.\"\n },\n {\n code: 6031,\n name: \"PermissionAccountDeriveFailure\",\n msg: \"Failed to derive a permission account.\"\n },\n {\n code: 6032,\n name: \"EscrowAccountNotFound\",\n msg: \"Escrow account missing from provided account list.\"\n },\n {\n code: 6033,\n name: \"LeaseAccountNotFound\",\n msg: \"Lease account missing from provided account list.\"\n },\n {\n code: 6034,\n name: \"DecimalConversionError\",\n msg: \"Decimal conversion method failed.\"\n },\n {\n code: 6035,\n name: \"PermissionDenied\",\n msg: \"Permission account is missing required flags for the given action.\"\n },\n {\n code: 6036,\n name: \"QueueAtCapacity\",\n msg: \"Oracle queue is at lease capacity.\"\n },\n {\n code: 6037,\n name: \"ExcessiveCrankRowsError\",\n msg: \"Data feed is already pushed on a crank.\"\n },\n {\n code: 6038,\n name: \"AggregatorLockedError\",\n msg: \"Aggregator is locked, no setting modifications or job additions allowed.\"\n },\n {\n code: 6039,\n name: \"AggregatorInvalidBatchSizeError\",\n msg: \"Aggregator invalid batch size.\"\n },\n {\n code: 6040,\n name: \"AggregatorJobChecksumMismatch\",\n msg: \"Oracle provided an incorrect aggregator job checksum.\"\n },\n {\n code: 6041,\n name: \"IntegerOverflowError\",\n msg: \"An integer overflow occurred.\"\n },\n {\n code: 6042,\n name: \"InvalidUpdatePeriodError\",\n msg: \"Minimum update period is 5 seconds.\"\n },\n {\n code: 6043,\n name: \"NoResultsError\",\n msg: \"Aggregator round evaluation attempted with no results.\"\n },\n {\n code: 6044,\n name: \"InvalidExpirationError\",\n msg: \"An expiration constraint was broken.\"\n },\n {\n code: 6045,\n name: \"InsufficientStakeError\",\n msg: \"An account provided insufficient stake for action.\"\n },\n {\n code: 6046,\n name: \"LeaseInactiveError\",\n msg: \"The provided lease account is not active.\"\n },\n {\n code: 6047,\n name: \"NoAggregatorJobsFound\",\n msg: \"No jobs are currently included in the aggregator.\"\n },\n {\n code: 6048,\n name: \"IntegerUnderflowError\",\n msg: \"An integer underflow occurred.\"\n },\n {\n code: 6049,\n name: \"OracleQueueMismatch\",\n msg: \"An invalid oracle queue account was provided.\"\n },\n {\n code: 6050,\n name: \"OracleWalletMismatchError\",\n msg: \"An unexpected oracle wallet account was provided for the transaction.\"\n },\n {\n code: 6051,\n name: \"InvalidBufferAccountError\",\n msg: \"An invalid buffer account was provided.\"\n },\n {\n code: 6052,\n name: \"InsufficientOracleQueueError\",\n msg: \"Insufficient oracle queue size.\"\n },\n {\n code: 6053,\n name: \"InvalidAuthorityError\",\n msg: \"Invalid authority account provided.\"\n },\n {\n code: 6054,\n name: \"InvalidTokenAccountMintError\",\n msg: \"A provided token wallet is associated with an incorrect mint.\"\n },\n {\n code: 6055,\n name: \"ExcessiveLeaseWithdrawlError\",\n msg: \"You must leave enough funds to perform at least 1 update in the lease.\"\n },\n {\n code: 6056,\n name: \"InvalideHistoryAccountError\",\n msg: \"Invalid history account provided.\"\n },\n {\n code: 6057,\n name: \"InvalidLeaseAccountEscrowError\",\n msg: \"Invalid lease account escrow.\"\n },\n {\n code: 6058,\n name: \"InvalidCrankAccountError\",\n msg: \"Invalid crank provided.\"\n },\n {\n code: 6059,\n name: \"CrankNoElementsReadyError\",\n msg: \"No elements ready to be popped.\"\n },\n {\n code: 6060,\n name: \"IndexOutOfBoundsError\",\n msg: \"Index out of bounds\"\n },\n {\n code: 6061,\n name: \"VrfInvalidRequestError\",\n msg: \"Invalid vrf request params\"\n },\n {\n code: 6062,\n name: \"VrfInvalidProofSubmissionError\",\n msg: \"Vrf proof failed to verify\"\n },\n {\n code: 6063,\n name: \"VrfVerifyError\",\n msg: \"Error in verifying vrf proof.\"\n },\n {\n code: 6064,\n name: \"VrfCallbackError\",\n msg: \"Vrf callback function failed.\"\n },\n {\n code: 6065,\n name: \"VrfCallbackParamsError\",\n msg: \"Invalid vrf callback params provided.\"\n },\n {\n code: 6066,\n name: \"VrfCallbackAlreadyCalledError\",\n msg: \"Vrf callback has already been triggered.\"\n },\n {\n code: 6067,\n name: \"VrfInvalidPubkeyError\",\n msg: \"The provided pubkey is invalid to use in ecvrf proofs\"\n },\n {\n code: 6068,\n name: \"VrfTooManyVerifyCallsError\",\n msg: \"Number of required verify calls exceeded\"\n },\n {\n code: 6069,\n name: \"VrfRequestAlreadyLaunchedError\",\n msg: \"Vrf request is already pending\"\n },\n {\n code: 6070,\n name: \"VrfInsufficientVerificationError\",\n msg: \"Insufficient amount of proofs collected for VRF callback\"\n },\n {\n code: 6071,\n name: \"InvalidVrfProducerError\",\n msg: \"An incorrect oracle attempted to submit a proof\"\n }\n ]\n};\n\n// src/oracles/switchboardClient.ts\nvar program;\nvar SwitchboardClient = class {\n constructor(connection) {\n this.connection = connection;\n }\n async getOraclePriceData(pricePublicKey) {\n const accountInfo = await this.connection.getAccountInfo(pricePublicKey);\n return this.getOraclePriceDataFromBuffer(accountInfo.data);\n }\n getOraclePriceDataFromBuffer(buffer) {\n const program2 = this.getProgram();\n const aggregatorAccountData = program2.account.aggregatorAccountData.coder.accounts.decode(\n \"AggregatorAccountData\",\n buffer\n );\n const price = convertSwitchboardDecimal(\n aggregatorAccountData.latestConfirmedRound.result\n );\n const confidence = convertSwitchboardDecimal(\n aggregatorAccountData.latestConfirmedRound.stdDeviation\n );\n const hasSufficientNumberOfDataPoints = aggregatorAccountData.latestConfirmedRound.numSuccess >= aggregatorAccountData.minOracleResults;\n const slot = aggregatorAccountData.latestConfirmedRound.roundOpenSlot;\n return {\n price,\n slot,\n confidence,\n hasSufficientNumberOfDataPoints\n };\n }\n getProgram() {\n if (program) {\n return program;\n }\n program = getSwitchboardProgram(this.connection);\n return program;\n }\n};\nfunction getSwitchboardProgram(connection) {\n const DEFAULT_KEYPAIR = Keypair.fromSeed(new Uint8Array(32).fill(1));\n const programId = PublicKey2.default;\n const wallet = new Wallet(DEFAULT_KEYPAIR);\n const provider = new AnchorProvider2(connection, wallet, {});\n return new Program2(switchboard_v2_default, programId, provider);\n}\nfunction convertSwitchboardDecimal(switchboardDecimal) {\n const switchboardPrecision = TEN.pow(new BN3(switchboardDecimal.scale));\n return switchboardDecimal.mantissa.mul(PRICE_PRECISION).div(switchboardPrecision);\n}\n\n// src/types.ts\nvar ExchangeStatus = class {\n};\nExchangeStatus.ACTIVE = { active: {} };\nExchangeStatus.FUNDING_PAUSED = { fundingPaused: {} };\nExchangeStatus.AMM_PAUSED = { ammPaused: {} };\nExchangeStatus.FILL_PAUSED = { fillPaused: {} };\nExchangeStatus.LIQ_PAUSED = { liqPaused: {} };\nExchangeStatus.WITHDRAW_PAUSED = { withdrawPaused: {} };\nExchangeStatus.PAUSED = { paused: {} };\nvar MarketStatus = class {\n};\nMarketStatus.INITIALIZED = { initialized: {} };\nMarketStatus.ACTIVE = { active: {} };\nMarketStatus.FUNDING_PAUSED = { fundingPaused: {} };\nMarketStatus.AMM_PAUSED = { ammPaused: {} };\nMarketStatus.FILL_PAUSED = { fillPaused: {} };\nMarketStatus.WITHDRAW_PAUSED = { withdrawPaused: {} };\nMarketStatus.REDUCE_ONLY = { reduceOnly: {} };\nMarketStatus.SETTLEMENT = { settlement: {} };\nMarketStatus.DELISTED = { delisted: {} };\nvar UserStatus = class {\n};\nUserStatus.ACTIVE = { active: {} };\nUserStatus.BEING_LIQUIDATED = { beingLiquidated: {} };\nUserStatus.BANKRUPT = { bankrupt: {} };\nvar ContractType = class {\n};\nContractType.PERPETUAL = { perpetual: {} };\nContractType.FUTURE = { future: {} };\nvar ContractTier = class {\n};\nContractTier.A = { a: {} };\nContractTier.B = { b: {} };\nContractTier.C = { c: {} };\nContractTier.SPECULATIVE = { speculative: {} };\nContractTier.ISOLATED = { isolated: {} };\nvar AssetTier = class {\n};\nAssetTier.COLLATERAL = { collateral: {} };\nAssetTier.PROTECTED = { protected: {} };\nAssetTier.CROSS = { cross: {} };\nAssetTier.ISOLATED = { isolated: {} };\nAssetTier.UNLISTED = { unlisted: {} };\nvar SwapDirection = class {\n};\nSwapDirection.ADD = { add: {} };\nSwapDirection.REMOVE = { remove: {} };\nvar SpotBalanceType = class {\n};\nSpotBalanceType.DEPOSIT = { deposit: {} };\nSpotBalanceType.BORROW = { borrow: {} };\nvar PositionDirection = class {\n};\nPositionDirection.LONG = { long: {} };\nPositionDirection.SHORT = { short: {} };\nvar DepositDirection = class {\n};\nDepositDirection.DEPOSIT = { deposit: {} };\nDepositDirection.WITHDRAW = { withdraw: {} };\nvar OracleSource = class {\n};\nOracleSource.PYTH = { pyth: {} };\nOracleSource.SWITCHBOARD = { switchboard: {} };\nOracleSource.QUOTE_ASSET = { quoteAsset: {} };\nvar OrderType = class {\n};\nOrderType.LIMIT = { limit: {} };\nOrderType.TRIGGER_MARKET = { triggerMarket: {} };\nOrderType.TRIGGER_LIMIT = { triggerLimit: {} };\nOrderType.MARKET = { market: {} };\nOrderType.ORACLE = { oracle: {} };\nvar MarketType = class {\n};\nMarketType.SPOT = { spot: {} };\nMarketType.PERP = { perp: {} };\nvar OrderStatus = class {\n};\nOrderStatus.INIT = { init: {} };\nOrderStatus.OPEN = { open: {} };\nvar OrderAction = class {\n};\nOrderAction.PLACE = { place: {} };\nOrderAction.CANCEL = { cancel: {} };\nOrderAction.EXPIRE = { expire: {} };\nOrderAction.FILL = { fill: {} };\nOrderAction.TRIGGER = { trigger: {} };\nvar OrderActionExplanation = class {\n};\nOrderActionExplanation.NONE = { none: {} };\nOrderActionExplanation.INSUFFICIENT_FREE_COLLATERAL = {\n insufficientFreeCollateral: {}\n};\nOrderActionExplanation.ORACLE_PRICE_BREACHED_LIMIT_PRICE = {\n oraclePriceBreachedLimitPrice: {}\n};\nOrderActionExplanation.MARKET_ORDER_FILLED_TO_LIMIT_PRICE = {\n marketOrderFilledToLimitPrice: {}\n};\nOrderActionExplanation.ORDER_EXPIRED = {\n orderExpired: {}\n};\nOrderActionExplanation.LIQUIDATION = {\n liquidation: {}\n};\nOrderActionExplanation.ORDER_FILLED_WITH_AMM = {\n orderFilledWithAmm: {}\n};\nOrderActionExplanation.ORDER_FILLED_WITH_AMM_JIT = {\n orderFilledWithAmmJit: {}\n};\nOrderActionExplanation.ORDER_FILLED_WITH_MATCH = {\n orderFilledWithMatch: {}\n};\nOrderActionExplanation.ORDER_FILLED_WITH_MATCH_JIT = {\n orderFilledWithMatchJit: {}\n};\nOrderActionExplanation.MARKET_EXPIRED = {\n marketExpired: {}\n};\nOrderActionExplanation.RISK_INCREASING_ORDER = {\n riskingIncreasingOrder: {}\n};\nOrderActionExplanation.ORDER_FILLED_WITH_SERUM = {\n orderFillWithSerum: {}\n};\nOrderActionExplanation.REDUCE_ONLY_ORDER_INCREASED_POSITION = {\n reduceOnlyOrderIncreasedPosition: {}\n};\nvar OrderTriggerCondition = class {\n};\nOrderTriggerCondition.ABOVE = { above: {} };\nOrderTriggerCondition.BELOW = { below: {} };\nOrderTriggerCondition.TRIGGERED_ABOVE = { triggeredAbove: {} };\nOrderTriggerCondition.TRIGGERED_BELOW = { triggeredBelow: {} };\nvar SpotFulfillmentType = class {\n};\nSpotFulfillmentType.SERUM_v3 = { serumV3: {} };\nvar SpotFulfillmentStatus = class {\n};\nSpotFulfillmentStatus.ENABLED = { enabled: {} };\nSpotFulfillmentStatus.DISABLED = { disabled: {} };\nvar DepositExplanation = class {\n};\nDepositExplanation.NONE = { none: {} };\nDepositExplanation.TRANSFER = { transfer: {} };\nvar SettlePnlExplanation = class {\n};\nSettlePnlExplanation.NONE = { none: {} };\nSettlePnlExplanation.EXPIRED_POSITION = { expiredPosition: {} };\nvar SpotFulfillmentConfigStatus = class {\n};\nSpotFulfillmentConfigStatus.ENABLED = { enabled: {} };\nSpotFulfillmentConfigStatus.DISABLED = { disabled: {} };\nvar StakeAction = class {\n};\nStakeAction.STAKE = { stake: {} };\nStakeAction.UNSTAKE_REQUEST = { unstakeRequest: {} };\nStakeAction.UNSTAKE_CANCEL_REQUEST = { unstakeCancelRequest: {} };\nStakeAction.UNSTAKE = { unstake: {} };\nfunction isVariant(object, type) {\n return object.hasOwnProperty(type);\n}\nfunction isOneOfVariant(object, types) {\n return types.reduce((result, type) => {\n return result || object.hasOwnProperty(type);\n }, false);\n}\nfunction getVariant(object) {\n return Object.keys(object)[0];\n}\nvar TradeSide = /* @__PURE__ */ ((TradeSide2) => {\n TradeSide2[TradeSide2[\"None\"] = 0] = \"None\";\n TradeSide2[TradeSide2[\"Buy\"] = 1] = \"Buy\";\n TradeSide2[TradeSide2[\"Sell\"] = 2] = \"Sell\";\n return TradeSide2;\n})(TradeSide || {});\nvar LPAction = class {\n};\nLPAction.ADD_LIQUIDITY = { addLiquidity: {} };\nLPAction.REMOVE_LIQUIDITY = { removeLiquidity: {} };\nLPAction.SETTLE_LIQUIDITY = { settleLiquidity: {} };\nvar LiquidationType = class {\n};\nLiquidationType.LIQUIDATE_PERP = { liquidatePerp: {} };\nLiquidationType.LIQUIDATE_BORROW_FOR_PERP_PNL = {\n liquidateBorrowForPerpPnl: {}\n};\nLiquidationType.LIQUIDATE_PERP_PNL_FOR_DEPOSIT = {\n liquidatePerpPnlForDeposit: {}\n};\nLiquidationType.PERP_BANKRUPTCY = {\n perpBankruptcy: {}\n};\nLiquidationType.BORROW_BANKRUPTCY = {\n borrowBankruptcy: {}\n};\nLiquidationType.LIQUIDATE_SPOT = {\n liquidateSpot: {}\n};\nvar DefaultOrderParams = {\n orderType: OrderType.MARKET,\n marketType: MarketType.PERP,\n userOrderId: 0,\n direction: PositionDirection.LONG,\n baseAssetAmount: ZERO,\n price: ZERO,\n marketIndex: 0,\n reduceOnly: false,\n postOnly: false,\n immediateOrCancel: false,\n triggerPrice: null,\n triggerCondition: OrderTriggerCondition.ABOVE,\n positionLimit: ZERO,\n oraclePriceOffset: null,\n auctionDuration: null,\n maxTs: null,\n auctionStartPrice: null,\n auctionEndPrice: null\n};\n\n// src/constants/perpMarkets.ts\nimport { PublicKey as PublicKey3 } from \"@solana/web3.js\";\nvar DevnetPerpMarkets = [\n {\n fullName: \"Solana\",\n category: [\"L1\", \"Infra\"],\n symbol: \"SOL-PERP\",\n baseAssetSymbol: \"SOL\",\n marketIndex: 0,\n oracle: new PublicKey3(\"J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix\"),\n launchTs: 1655751353e3,\n oracleSource: OracleSource.PYTH\n },\n {\n fullName: \"Bitcoin\",\n category: [\"L1\", \"Payment\"],\n symbol: \"BTC-PERP\",\n baseAssetSymbol: \"BTC\",\n marketIndex: 1,\n oracle: new PublicKey3(\"HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J\"),\n launchTs: 1655751353e3,\n oracleSource: OracleSource.PYTH\n },\n {\n fullName: \"Ethereum\",\n category: [\"L1\", \"Infra\"],\n symbol: \"ETH-PERP\",\n baseAssetSymbol: \"ETH\",\n marketIndex: 2,\n oracle: new PublicKey3(\"EdVCmQ9FSPcVe5YySXDPCRmc8aDQLKJ9xvYBMZPie1Vw\"),\n launchTs: 1637691133472,\n oracleSource: OracleSource.PYTH\n }\n];\nvar MainnetPerpMarkets = [\n {\n fullName: \"Solana\",\n category: [\"L1\", \"Infra\"],\n symbol: \"SOL-PERP\",\n baseAssetSymbol: \"SOL\",\n marketIndex: 0,\n oracle: new PublicKey3(\"H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG\"),\n launchTs: 1667560505e3,\n oracleSource: OracleSource.PYTH\n },\n {\n fullName: \"Bitcoin\",\n category: [\"L1\", \"Payment\"],\n symbol: \"BTC-PERP\",\n baseAssetSymbol: \"BTC\",\n marketIndex: 1,\n oracle: new PublicKey3(\"GVXRSBjFk6e6J3NbVPXohDJetcTjaeeuykUpbQF8UoMU\"),\n launchTs: 1670347281e3,\n oracleSource: OracleSource.PYTH\n },\n {\n fullName: \"Ethereum\",\n category: [\"L1\", \"Infra\"],\n symbol: \"ETH-PERP\",\n baseAssetSymbol: \"ETH\",\n marketIndex: 2,\n oracle: new PublicKey3(\"JBu1AL4obBcCMqKBBxhpWCNUt136ijcuMZLFvTP7iWdB\"),\n launchTs: 1670347281e3,\n oracleSource: OracleSource.PYTH\n }\n];\nvar PerpMarkets = {\n devnet: DevnetPerpMarkets,\n \"mainnet-beta\": MainnetPerpMarkets\n};\n\n// src/addresses/pda.ts\nimport { PublicKey as PublicKey4 } from \"@solana/web3.js\";\nimport * as anchor2 from \"@project-serum/anchor\";\nasync function getDriftStateAccountPublicKeyAndNonce(programId) {\n return PublicKey4.findProgramAddress(\n [Buffer.from(anchor2.utils.bytes.utf8.encode(\"drift_state\"))],\n programId\n );\n}\nasync function getDriftStateAccountPublicKey(programId) {\n return (await getDriftStateAccountPublicKeyAndNonce(programId))[0];\n}\nasync function getUserAccountPublicKeyAndNonce(programId, authority, subAccountId = 0) {\n return PublicKey4.findProgramAddress(\n [\n Buffer.from(anchor2.utils.bytes.utf8.encode(\"user\")),\n authority.toBuffer(),\n new anchor2.BN(subAccountId).toArrayLike(Buffer, \"le\", 2)\n ],\n programId\n );\n}\nasync function getUserAccountPublicKey(programId, authority, subAccountId = 0) {\n return (await getUserAccountPublicKeyAndNonce(programId, authority, subAccountId))[0];\n}\nfunction getUserAccountPublicKeySync(programId, authority, subAccountId = 0) {\n return PublicKey4.findProgramAddressSync(\n [\n Buffer.from(anchor2.utils.bytes.utf8.encode(\"user\")),\n authority.toBuffer(),\n new anchor2.BN(subAccountId).toArrayLike(Buffer, \"le\", 2)\n ],\n programId\n )[0];\n}\nfunction getUserStatsAccountPublicKey(programId, authority) {\n return PublicKey4.findProgramAddressSync(\n [\n Buffer.from(anchor2.utils.bytes.utf8.encode(\"user_stats\")),\n authority.toBuffer()\n ],\n programId\n )[0];\n}\nasync function getPerpMarketPublicKey(programId, marketIndex) {\n return (await PublicKey4.findProgramAddress(\n [\n Buffer.from(anchor2.utils.bytes.utf8.encode(\"perp_market\")),\n new anchor2.BN(marketIndex).toArrayLike(Buffer, \"le\", 2)\n ],\n programId\n ))[0];\n}\nasync function getSpotMarketPublicKey(programId, marketIndex) {\n return (await PublicKey4.findProgramAddress(\n [\n Buffer.from(anchor2.utils.bytes.utf8.encode(\"spot_market\")),\n new anchor2.BN(marketIndex).toArrayLike(Buffer, \"le\", 2)\n ],\n programId\n ))[0];\n}\nasync function getSpotMarketVaultPublicKey(programId, marketIndex) {\n return (await PublicKey4.findProgramAddress(\n [\n Buffer.from(anchor2.utils.bytes.utf8.encode(\"spot_market_vault\")),\n new anchor2.BN(marketIndex).toArrayLike(Buffer, \"le\", 2)\n ],\n programId\n ))[0];\n}\nasync function getInsuranceFundVaultPublicKey(programId, marketIndex) {\n return (await PublicKey4.findProgramAddress(\n [\n Buffer.from(anchor2.utils.bytes.utf8.encode(\"insurance_fund_vault\")),\n new anchor2.BN(marketIndex).toArrayLike(Buffer, \"le\", 2)\n ],\n programId\n ))[0];\n}\nfunction getInsuranceFundStakeAccountPublicKey(programId, authority, marketIndex) {\n return PublicKey4.findProgramAddressSync(\n [\n Buffer.from(anchor2.utils.bytes.utf8.encode(\"insurance_fund_stake\")),\n authority.toBuffer(),\n new anchor2.BN(marketIndex).toArrayLike(Buffer, \"le\", 2)\n ],\n programId\n )[0];\n}\nfunction getDriftSignerPublicKey(programId) {\n return PublicKey4.findProgramAddressSync(\n [Buffer.from(anchor2.utils.bytes.utf8.encode(\"drift_signer\"))],\n programId\n )[0];\n}\nfunction getSerumOpenOrdersPublicKey(programId, market) {\n return PublicKey4.findProgramAddressSync(\n [\n Buffer.from(anchor2.utils.bytes.utf8.encode(\"serum_open_orders\")),\n market.toBuffer()\n ],\n programId\n )[0];\n}\nfunction getSerumSignerPublicKey(programId, market, nonce) {\n return anchor2.web3.PublicKey.createProgramAddressSync(\n [market.toBuffer(), nonce.toArrayLike(Buffer, \"le\", 8)],\n programId\n );\n}\nfunction getSerumFulfillmentConfigPublicKey(programId, market) {\n return PublicKey4.findProgramAddressSync(\n [\n Buffer.from(anchor2.utils.bytes.utf8.encode(\"serum_fulfillment_config\")),\n market.toBuffer()\n ],\n programId\n )[0];\n}\n\n// src/accounts/fetch.ts\nasync function fetchUserAccounts(connection, program2, authority, limit = 8) {\n const userAccountPublicKeys = new Array();\n for (let i = 0; i < limit; i++) {\n userAccountPublicKeys.push(\n await getUserAccountPublicKey(program2.programId, authority, i)\n );\n }\n const accountInfos = await connection.getMultipleAccountsInfo(\n userAccountPublicKeys,\n \"confirmed\"\n );\n return accountInfos.map((accountInfo) => {\n if (!accountInfo) {\n return void 0;\n }\n return program2.account.user.coder.accounts.decode(\n \"User\",\n accountInfo.data\n );\n });\n}\nasync function fetchUserStatsAccount(connection, program2, authority) {\n const userStatsPublicKey = getUserStatsAccountPublicKey(\n program2.programId,\n authority\n );\n const accountInfo = await connection.getAccountInfo(\n userStatsPublicKey,\n \"confirmed\"\n );\n return accountInfo ? program2.account.user.coder.accounts.decode(\n \"UserStats\",\n accountInfo.data\n ) : void 0;\n}\n\n// src/accounts/types.ts\nvar NotSubscribedError = class extends Error {\n constructor() {\n super(...arguments);\n this.name = \"NotSubscribedError\";\n }\n};\n\n// src/accounts/webSocketDriftClientAccountSubscriber.ts\nimport { EventEmitter } from \"events\";\n\n// src/accounts/utils.ts\nfunction capitalize(value) {\n return value[0].toUpperCase() + value.slice(1);\n}\n\n// src/accounts/webSocketAccountSubscriber.ts\nvar WebSocketAccountSubscriber = class {\n constructor(accountName, program2, accountPublicKey, decodeBuffer) {\n this.accountName = accountName;\n this.program = program2;\n this.accountPublicKey = accountPublicKey;\n this.decodeBufferFn = decodeBuffer;\n }\n async subscribe(onChange) {\n if (this.listenerId) {\n return;\n }\n this.onChange = onChange;\n await this.fetch();\n this.listenerId = this.program.provider.connection.onAccountChange(\n this.accountPublicKey,\n (accountInfo, context) => {\n this.handleRpcResponse(context, accountInfo);\n },\n this.program.provider.opts.commitment\n );\n }\n async fetch() {\n const rpcResponse = await this.program.provider.connection.getAccountInfoAndContext(\n this.accountPublicKey,\n this.program.provider.opts.commitment\n );\n this.handleRpcResponse(rpcResponse.context, rpcResponse == null ? void 0 : rpcResponse.value);\n }\n handleRpcResponse(context, accountInfo) {\n const newSlot = context.slot;\n let newBuffer = void 0;\n if (accountInfo) {\n newBuffer = accountInfo.data;\n }\n if (!this.bufferAndSlot) {\n this.bufferAndSlot = {\n buffer: newBuffer,\n slot: newSlot\n };\n if (newBuffer) {\n const account = this.decodeBuffer(newBuffer);\n this.dataAndSlot = {\n data: account,\n slot: newSlot\n };\n this.onChange(account);\n }\n return;\n }\n if (newSlot <= this.bufferAndSlot.slot) {\n return;\n }\n const oldBuffer = this.bufferAndSlot.buffer;\n if (newBuffer && (!oldBuffer || !newBuffer.equals(oldBuffer))) {\n this.bufferAndSlot = {\n buffer: newBuffer,\n slot: newSlot\n };\n const account = this.decodeBuffer(newBuffer);\n this.dataAndSlot = {\n data: account,\n slot: newSlot\n };\n this.onChange(account);\n }\n }\n decodeBuffer(buffer) {\n if (this.decodeBufferFn) {\n return this.decodeBufferFn(buffer);\n } else {\n return this.program.account[this.accountName].coder.accounts.decode(\n capitalize(this.accountName),\n buffer\n );\n }\n }\n unsubscribe() {\n if (this.listenerId) {\n const promise = this.program.provider.connection.removeAccountChangeListener(\n this.listenerId\n );\n this.listenerId = void 0;\n return promise;\n }\n }\n};\n\n// src/accounts/webSocketDriftClientAccountSubscriber.ts\nimport { PublicKey as PublicKey5 } from \"@solana/web3.js\";\n\n// src/oracles/quoteAssetOracleClient.ts\nimport { BN as BN6 } from \"@project-serum/anchor\";\nvar QUOTE_ORACLE_PRICE_DATA = {\n price: PRICE_PRECISION,\n slot: new BN6(0),\n confidence: new BN6(1),\n hasSufficientNumberOfDataPoints: true\n};\nvar QuoteAssetOracleClient = class {\n constructor() {\n }\n async getOraclePriceData(_pricePublicKey) {\n return Promise.resolve(QUOTE_ORACLE_PRICE_DATA);\n }\n getOraclePriceDataFromBuffer(_buffer) {\n return QUOTE_ORACLE_PRICE_DATA;\n }\n};\n\n// src/factory/oracleClient.ts\nfunction getOracleClient(oracleSource, connection) {\n if (isVariant(oracleSource, \"pyth\")) {\n return new PythClient(connection);\n }\n if (isVariant(oracleSource, \"switchboard\")) {\n return new SwitchboardClient(connection);\n }\n if (isVariant(oracleSource, \"quoteAsset\")) {\n return new QuoteAssetOracleClient();\n }\n throw new Error(`Unknown oracle source ${oracleSource}`);\n}\n\n// src/oracles/oracleClientCache.ts\nvar OracleClientCache = class {\n constructor() {\n this.cache = /* @__PURE__ */ new Map();\n }\n get(oracleSource, connection) {\n const key = Object.keys(oracleSource)[0];\n if (this.cache.has(key)) {\n return this.cache.get(key);\n }\n const client = getOracleClient(oracleSource, connection);\n this.cache.set(key, client);\n return client;\n }\n};\n\n// src/accounts/webSocketDriftClientAccountSubscriber.ts\nvar WebSocketDriftClientAccountSubscriber = class {\n constructor(program2, perpMarketIndexes, spotMarketIndexes, oracleInfos) {\n this.oracleClientCache = new OracleClientCache();\n this.perpMarketAccountSubscribers = /* @__PURE__ */ new Map();\n this.spotMarketAccountSubscribers = /* @__PURE__ */ new Map();\n this.oracleSubscribers = /* @__PURE__ */ new Map();\n this.isSubscribing = false;\n this.isSubscribed = false;\n this.program = program2;\n this.eventEmitter = new EventEmitter();\n this.perpMarketIndexes = perpMarketIndexes;\n this.spotMarketIndexes = spotMarketIndexes;\n this.oracleInfos = oracleInfos;\n }\n async subscribe() {\n if (this.isSubscribed) {\n return true;\n }\n if (this.isSubscribing) {\n return await this.subscriptionPromise;\n }\n this.isSubscribing = true;\n this.subscriptionPromise = new Promise((res) => {\n this.subscriptionPromiseResolver = res;\n });\n const statePublicKey = await getDriftStateAccountPublicKey(\n this.program.programId\n );\n this.stateAccountSubscriber = new WebSocketAccountSubscriber(\n \"state\",\n this.program,\n statePublicKey\n );\n await this.stateAccountSubscriber.subscribe((data) => {\n this.eventEmitter.emit(\"stateAccountUpdate\", data);\n this.eventEmitter.emit(\"update\");\n });\n await this.subscribeToPerpMarketAccounts();\n await this.subscribeToSpotMarketAccounts();\n await this.subscribeToOracles();\n this.eventEmitter.emit(\"update\");\n this.isSubscribing = false;\n this.isSubscribed = true;\n this.subscriptionPromiseResolver(true);\n return true;\n }\n async subscribeToPerpMarketAccounts() {\n for (const marketIndex of this.perpMarketIndexes) {\n await this.subscribeToPerpMarketAccount(marketIndex);\n }\n return true;\n }\n async subscribeToPerpMarketAccount(marketIndex) {\n const perpMarketPublicKey = await getPerpMarketPublicKey(\n this.program.programId,\n marketIndex\n );\n const accountSubscriber = new WebSocketAccountSubscriber(\n \"perpMarket\",\n this.program,\n perpMarketPublicKey\n );\n await accountSubscriber.subscribe((data) => {\n this.eventEmitter.emit(\"perpMarketAccountUpdate\", data);\n this.eventEmitter.emit(\"update\");\n });\n this.perpMarketAccountSubscribers.set(marketIndex, accountSubscriber);\n return true;\n }\n async subscribeToSpotMarketAccounts() {\n for (const marketIndex of this.spotMarketIndexes) {\n await this.subscribeToSpotMarketAccount(marketIndex);\n }\n return true;\n }\n async subscribeToSpotMarketAccount(marketIndex) {\n const marketPublicKey = await getSpotMarketPublicKey(\n this.program.programId,\n marketIndex\n );\n const accountSubscriber = new WebSocketAccountSubscriber(\n \"spotMarket\",\n this.program,\n marketPublicKey\n );\n await accountSubscriber.subscribe((data) => {\n this.eventEmitter.emit(\"spotMarketAccountUpdate\", data);\n this.eventEmitter.emit(\"update\");\n });\n this.spotMarketAccountSubscribers.set(marketIndex, accountSubscriber);\n return true;\n }\n async subscribeToOracles() {\n for (const oracleInfo of this.oracleInfos) {\n if (!oracleInfo.publicKey.equals(PublicKey5.default)) {\n await this.subscribeToOracle(oracleInfo);\n }\n }\n return true;\n }\n async subscribeToOracle(oracleInfo) {\n const client = this.oracleClientCache.get(\n oracleInfo.source,\n this.program.provider.connection\n );\n const accountSubscriber = new WebSocketAccountSubscriber(\n \"oracle\",\n this.program,\n oracleInfo.publicKey,\n (buffer) => {\n return client.getOraclePriceDataFromBuffer(buffer);\n }\n );\n await accountSubscriber.subscribe((data) => {\n this.eventEmitter.emit(\"oraclePriceUpdate\", oracleInfo.publicKey, data);\n this.eventEmitter.emit(\"update\");\n });\n this.oracleSubscribers.set(\n oracleInfo.publicKey.toString(),\n accountSubscriber\n );\n return true;\n }\n async unsubscribeFromMarketAccounts() {\n for (const accountSubscriber of this.perpMarketAccountSubscribers.values()) {\n await accountSubscriber.unsubscribe();\n }\n }\n async unsubscribeFromSpotMarketAccounts() {\n for (const accountSubscriber of this.spotMarketAccountSubscribers.values()) {\n await accountSubscriber.unsubscribe();\n }\n }\n async unsubscribeFromOracles() {\n for (const accountSubscriber of this.oracleSubscribers.values()) {\n await accountSubscriber.unsubscribe();\n }\n }\n async fetch() {\n if (!this.isSubscribed) {\n return;\n }\n const promises = [this.stateAccountSubscriber.fetch()].concat(\n Array.from(this.perpMarketAccountSubscribers.values()).map(\n (subscriber) => subscriber.fetch()\n )\n ).concat(\n Array.from(this.spotMarketAccountSubscribers.values()).map(\n (subscriber) => subscriber.fetch()\n )\n );\n await Promise.all(promises);\n }\n async unsubscribe() {\n if (!this.isSubscribed) {\n return;\n }\n await this.stateAccountSubscriber.unsubscribe();\n await this.unsubscribeFromMarketAccounts();\n await this.unsubscribeFromSpotMarketAccounts();\n await this.unsubscribeFromOracles();\n this.isSubscribed = false;\n }\n async addSpotMarket(marketIndex) {\n if (this.spotMarketAccountSubscribers.has(marketIndex)) {\n return true;\n }\n return this.subscribeToSpotMarketAccount(marketIndex);\n }\n async addPerpMarket(marketIndex) {\n if (this.perpMarketAccountSubscribers.has(marketIndex)) {\n return true;\n }\n return this.subscribeToPerpMarketAccount(marketIndex);\n }\n async addOracle(oracleInfo) {\n if (this.oracleSubscribers.has(oracleInfo.publicKey.toString())) {\n return true;\n }\n if (oracleInfo.publicKey.equals(PublicKey5.default)) {\n return true;\n }\n return this.subscribeToOracle(oracleInfo);\n }\n assertIsSubscribed() {\n if (!this.isSubscribed) {\n throw new NotSubscribedError(\n \"You must call `subscribe` before using this function\"\n );\n }\n }\n getStateAccountAndSlot() {\n this.assertIsSubscribed();\n return this.stateAccountSubscriber.dataAndSlot;\n }\n getMarketAccountAndSlot(marketIndex) {\n this.assertIsSubscribed();\n return this.perpMarketAccountSubscribers.get(marketIndex).dataAndSlot;\n }\n getMarketAccountsAndSlots() {\n return Array.from(this.perpMarketAccountSubscribers.values()).map(\n (subscriber) => subscriber.dataAndSlot\n );\n }\n getSpotMarketAccountAndSlot(marketIndex) {\n this.assertIsSubscribed();\n return this.spotMarketAccountSubscribers.get(marketIndex).dataAndSlot;\n }\n getSpotMarketAccountsAndSlots() {\n return Array.from(this.spotMarketAccountSubscribers.values()).map(\n (subscriber) => subscriber.dataAndSlot\n );\n }\n getOraclePriceDataAndSlot(oraclePublicKey) {\n this.assertIsSubscribed();\n if (oraclePublicKey.equals(PublicKey5.default)) {\n return {\n data: QUOTE_ORACLE_PRICE_DATA,\n slot: 0\n };\n }\n return this.oracleSubscribers.get(oraclePublicKey.toString()).dataAndSlot;\n }\n};\n\n// src/accounts/bulkAccountLoader.ts\nimport { v4 as uuidv4 } from \"uuid\";\n\n// src/util/promiseTimeout.ts\nfunction promiseTimeout(promise, timeoutMs) {\n let timeoutId;\n const timeoutPromise = new Promise((resolve) => {\n timeoutId = setTimeout(() => resolve(null), timeoutMs);\n });\n return Promise.race([promise, timeoutPromise]).then((result) => {\n clearTimeout(timeoutId);\n return result;\n });\n}\n\n// src/accounts/bulkAccountLoader.ts\nvar GET_MULTIPLE_ACCOUNTS_CHUNK_SIZE = 99;\nvar oneMinute = 60 * 1e3;\nvar BulkAccountLoader = class {\n constructor(connection, commitment, pollingFrequency) {\n this.accountsToLoad = /* @__PURE__ */ new Map();\n this.bufferAndSlotMap = /* @__PURE__ */ new Map();\n this.errorCallbacks = /* @__PURE__ */ new Map();\n this.lastTimeLoadingPromiseCleared = Date.now();\n this.mostRecentSlot = 0;\n this.connection = connection;\n this.commitment = commitment;\n this.pollingFrequency = pollingFrequency;\n }\n async addAccount(publicKey, callback) {\n const existingSize = this.accountsToLoad.size;\n const callbackId = uuidv4();\n const existingAccountToLoad = this.accountsToLoad.get(publicKey.toString());\n if (existingAccountToLoad) {\n existingAccountToLoad.callbacks.set(callbackId, callback);\n } else {\n const callbacks = /* @__PURE__ */ new Map();\n callbacks.set(callbackId, callback);\n const newAccountToLoad = {\n publicKey,\n callbacks\n };\n this.accountsToLoad.set(publicKey.toString(), newAccountToLoad);\n }\n if (existingSize === 0) {\n this.startPolling();\n }\n await this.loadPromise;\n return callbackId;\n }\n removeAccount(publicKey, callbackId) {\n const existingAccountToLoad = this.accountsToLoad.get(publicKey.toString());\n if (existingAccountToLoad) {\n existingAccountToLoad.callbacks.delete(callbackId);\n if (existingAccountToLoad.callbacks.size === 0) {\n this.accountsToLoad.delete(existingAccountToLoad.publicKey.toString());\n }\n }\n if (this.accountsToLoad.size === 0) {\n this.stopPolling();\n }\n }\n addErrorCallbacks(callback) {\n const callbackId = uuidv4();\n this.errorCallbacks.set(callbackId, callback);\n return callbackId;\n }\n removeErrorCallbacks(callbackId) {\n this.errorCallbacks.delete(callbackId);\n }\n chunks(array, size) {\n return new Array(Math.ceil(array.length / size)).fill(null).map((_, index) => index * size).map((begin) => array.slice(begin, begin + size));\n }\n async load() {\n if (this.loadPromise) {\n const now = Date.now();\n if (now - this.lastTimeLoadingPromiseCleared > oneMinute) {\n this.loadPromise = void 0;\n } else {\n return this.loadPromise;\n }\n }\n this.loadPromise = new Promise((resolver) => {\n this.loadPromiseResolver = resolver;\n });\n this.lastTimeLoadingPromiseCleared = Date.now();\n try {\n const chunks = this.chunks(\n Array.from(this.accountsToLoad.values()),\n GET_MULTIPLE_ACCOUNTS_CHUNK_SIZE\n );\n await Promise.all(\n chunks.map((chunk2) => {\n return this.loadChunk(chunk2);\n })\n );\n } catch (e) {\n console.error(`Error in bulkAccountLoader.load()`);\n console.error(e);\n for (const [_, callback] of this.errorCallbacks) {\n callback(e);\n }\n } finally {\n this.loadPromiseResolver();\n this.loadPromise = void 0;\n }\n }\n async loadChunk(accountsToLoad) {\n if (accountsToLoad.length === 0) {\n return;\n }\n const args = [\n accountsToLoad.map((accountToLoad) => {\n return accountToLoad.publicKey.toBase58();\n }),\n { commitment: this.commitment }\n ];\n const rpcResponse = await promiseTimeout(\n this.connection._rpcRequest(\"getMultipleAccounts\", args),\n 10 * 1e3\n );\n if (rpcResponse === null) {\n this.log(\"request to rpc timed out\");\n return;\n }\n const newSlot = rpcResponse.result.context.slot;\n if (newSlot > this.mostRecentSlot) {\n this.mostRecentSlot = newSlot;\n }\n for (const i in accountsToLoad) {\n const accountToLoad = accountsToLoad[i];\n const key = accountToLoad.publicKey.toString();\n const oldRPCResponse = this.bufferAndSlotMap.get(key);\n let newBuffer = void 0;\n if (rpcResponse.result.value[i]) {\n const raw = rpcResponse.result.value[i].data[0];\n const dataType = rpcResponse.result.value[i].data[1];\n newBuffer = Buffer.from(raw, dataType);\n }\n if (!oldRPCResponse) {\n this.bufferAndSlotMap.set(key, {\n slot: newSlot,\n buffer: newBuffer\n });\n this.handleAccountCallbacks(accountToLoad, newBuffer, newSlot);\n continue;\n }\n if (newSlot <= oldRPCResponse.slot) {\n continue;\n }\n const oldBuffer = oldRPCResponse.buffer;\n if (newBuffer && (!oldBuffer || !newBuffer.equals(oldBuffer))) {\n this.bufferAndSlotMap.set(key, {\n slot: newSlot,\n buffer: newBuffer\n });\n this.handleAccountCallbacks(accountToLoad, newBuffer, newSlot);\n }\n }\n }\n handleAccountCallbacks(accountToLoad, buffer, slot) {\n for (const [_, callback] of accountToLoad.callbacks) {\n callback(buffer, slot);\n }\n }\n getBufferAndSlot(publicKey) {\n return this.bufferAndSlotMap.get(publicKey.toString());\n }\n startPolling() {\n if (this.intervalId) {\n return;\n }\n if (this.pollingFrequency !== 0)\n this.intervalId = setInterval(\n this.load.bind(this),\n this.pollingFrequency\n );\n }\n stopPolling() {\n if (this.intervalId) {\n clearInterval(this.intervalId);\n this.intervalId = void 0;\n }\n }\n log(msg) {\n console.log(msg);\n }\n updatePollingFrequency(pollingFrequency) {\n this.stopPolling();\n this.pollingFrequency = pollingFrequency;\n if (this.accountsToLoad.size > 0) {\n this.startPolling();\n }\n }\n};\n\n// src/accounts/bulkUserSubscription.ts\nasync function bulkPollingUserSubscribe(users, accountLoader) {\n if (users.length === 0) {\n await accountLoader.load();\n return;\n }\n await Promise.all(\n users.map((user) => {\n return user.accountSubscriber.addToAccountLoader();\n })\n );\n await accountLoader.load();\n await Promise.all(\n users.map(async (user) => {\n return user.subscribe();\n })\n );\n}\n\n// src/accounts/bulkUserStatsSubscription.ts\nasync function bulkPollingUserStatsSubscribe(userStats, accountLoader) {\n if (userStats.length === 0) {\n await accountLoader.load();\n return;\n }\n await Promise.all(\n userStats.map((userStat) => {\n return userStat.accountSubscriber.addToAccountLoader();\n })\n );\n await accountLoader.load();\n await Promise.all(\n userStats.map(async (userStat) => {\n return userStat.subscribe();\n })\n );\n}\n\n// src/accounts/pollingDriftClientAccountSubscriber.ts\nimport { EventEmitter as EventEmitter2 } from \"events\";\nimport { PublicKey as PublicKey6 } from \"@solana/web3.js\";\nvar PollingDriftClientAccountSubscriber = class {\n constructor(program2, accountLoader, perpMarketIndexes, spotMarketIndexes, oracleInfos) {\n this.oracleClientCache = new OracleClientCache();\n this.accountsToPoll = /* @__PURE__ */ new Map();\n this.oraclesToPoll = /* @__PURE__ */ new Map();\n this.perpMarket = /* @__PURE__ */ new Map();\n this.spotMarket = /* @__PURE__ */ new Map();\n this.oracles = /* @__PURE__ */ new Map();\n this.isSubscribing = false;\n this.isSubscribed = false;\n this.program = program2;\n this.eventEmitter = new EventEmitter2();\n this.accountLoader = accountLoader;\n this.perpMarketIndexes = perpMarketIndexes;\n this.spotMarketIndexes = spotMarketIndexes;\n this.oracleInfos = oracleInfos;\n }\n async subscribe() {\n if (this.isSubscribed) {\n return true;\n }\n if (this.isSubscribing) {\n return await this.subscriptionPromise;\n }\n this.isSubscribing = true;\n this.subscriptionPromise = new Promise((res) => {\n this.subscriptionPromiseResolver = res;\n });\n await this.updateAccountsToPoll();\n await this.updateOraclesToPoll();\n await this.addToAccountLoader();\n let subscriptionSucceeded = false;\n let retries = 0;\n while (!subscriptionSucceeded && retries < 5) {\n await this.fetch();\n subscriptionSucceeded = this.didSubscriptionSucceed();\n retries++;\n }\n if (subscriptionSucceeded) {\n this.eventEmitter.emit(\"update\");\n }\n this.isSubscribing = false;\n this.isSubscribed = subscriptionSucceeded;\n this.subscriptionPromiseResolver(subscriptionSucceeded);\n return subscriptionSucceeded;\n }\n async updateAccountsToPoll() {\n if (this.accountsToPoll.size > 0) {\n return;\n }\n const statePublicKey = await getDriftStateAccountPublicKey(\n this.program.programId\n );\n this.accountsToPoll.set(statePublicKey.toString(), {\n key: \"state\",\n publicKey: statePublicKey,\n eventType: \"stateAccountUpdate\"\n });\n await this.updatePerpMarketAccountsToPoll();\n await this.updateSpotMarketAccountsToPoll();\n }\n async updatePerpMarketAccountsToPoll() {\n for (const marketIndex of this.perpMarketIndexes) {\n await this.addPerpMarketAccountToPoll(marketIndex);\n }\n return true;\n }\n async addPerpMarketAccountToPoll(marketIndex) {\n const perpMarketPublicKey = await getPerpMarketPublicKey(\n this.program.programId,\n marketIndex\n );\n this.accountsToPoll.set(perpMarketPublicKey.toString(), {\n key: \"perpMarket\",\n publicKey: perpMarketPublicKey,\n eventType: \"perpMarketAccountUpdate\",\n mapKey: marketIndex\n });\n return true;\n }\n async updateSpotMarketAccountsToPoll() {\n for (const marketIndex of this.spotMarketIndexes) {\n await this.addSpotMarketAccountToPoll(marketIndex);\n }\n return true;\n }\n async addSpotMarketAccountToPoll(marketIndex) {\n const marketPublicKey = await getSpotMarketPublicKey(\n this.program.programId,\n marketIndex\n );\n this.accountsToPoll.set(marketPublicKey.toString(), {\n key: \"spotMarket\",\n publicKey: marketPublicKey,\n eventType: \"spotMarketAccountUpdate\",\n mapKey: marketIndex\n });\n return true;\n }\n updateOraclesToPoll() {\n for (const oracleInfo of this.oracleInfos) {\n if (!oracleInfo.publicKey.equals(PublicKey6.default)) {\n this.addOracleToPoll(oracleInfo);\n }\n }\n return true;\n }\n addOracleToPoll(oracleInfo) {\n this.oraclesToPoll.set(oracleInfo.publicKey.toString(), {\n publicKey: oracleInfo.publicKey,\n source: oracleInfo.source\n });\n return true;\n }\n async addToAccountLoader() {\n for (const [_, accountToPoll] of this.accountsToPoll) {\n await this.addAccountToAccountLoader(accountToPoll);\n }\n for (const [_, oracleToPoll] of this.oraclesToPoll) {\n await this.addOracleToAccountLoader(oracleToPoll);\n }\n this.errorCallbackId = this.accountLoader.addErrorCallbacks((error) => {\n this.eventEmitter.emit(\"error\", error);\n });\n }\n async addAccountToAccountLoader(accountToPoll) {\n accountToPoll.callbackId = await this.accountLoader.addAccount(\n accountToPoll.publicKey,\n (buffer, slot) => {\n if (!buffer)\n return;\n const account = this.program.account[accountToPoll.key].coder.accounts.decode(capitalize(accountToPoll.key), buffer);\n const dataAndSlot = {\n data: account,\n slot\n };\n if (accountToPoll.mapKey != void 0) {\n this[accountToPoll.key].set(accountToPoll.mapKey, dataAndSlot);\n } else {\n this[accountToPoll.key] = dataAndSlot;\n }\n this.eventEmitter.emit(accountToPoll.eventType, account);\n this.eventEmitter.emit(\"update\");\n if (!this.isSubscribed) {\n this.isSubscribed = this.didSubscriptionSucceed();\n }\n }\n );\n }\n async addOracleToAccountLoader(oracleToPoll) {\n const oracleClient = this.oracleClientCache.get(\n oracleToPoll.source,\n this.program.provider.connection\n );\n oracleToPoll.callbackId = await this.accountLoader.addAccount(\n oracleToPoll.publicKey,\n (buffer, slot) => {\n if (!buffer)\n return;\n const oraclePriceData = oracleClient.getOraclePriceDataFromBuffer(buffer);\n const dataAndSlot = {\n data: oraclePriceData,\n slot\n };\n this.oracles.set(oracleToPoll.publicKey.toString(), dataAndSlot);\n this.eventEmitter.emit(\n \"oraclePriceUpdate\",\n oracleToPoll.publicKey,\n oraclePriceData\n );\n this.eventEmitter.emit(\"update\");\n }\n );\n }\n async fetch() {\n await this.accountLoader.load();\n for (const [_, accountToPoll] of this.accountsToPoll) {\n const { buffer, slot } = this.accountLoader.getBufferAndSlot(\n accountToPoll.publicKey\n );\n if (buffer) {\n const account = this.program.account[accountToPoll.key].coder.accounts.decode(capitalize(accountToPoll.key), buffer);\n if (accountToPoll.mapKey != void 0) {\n this[accountToPoll.key].set(accountToPoll.mapKey, {\n data: account,\n slot\n });\n } else {\n this[accountToPoll.key] = {\n data: account,\n slot\n };\n }\n }\n }\n for (const [_, oracleToPoll] of this.oraclesToPoll) {\n const { buffer, slot } = this.accountLoader.getBufferAndSlot(\n oracleToPoll.publicKey\n );\n if (buffer) {\n const oracleClient = this.oracleClientCache.get(\n oracleToPoll.source,\n this.program.provider.connection\n );\n const oraclePriceData = oracleClient.getOraclePriceDataFromBuffer(buffer);\n this.oracles.set(oracleToPoll.publicKey.toString(), {\n data: oraclePriceData,\n slot\n });\n }\n }\n }\n didSubscriptionSucceed() {\n if (this.state)\n return true;\n return false;\n }\n async unsubscribe() {\n for (const [_, accountToPoll] of this.accountsToPoll) {\n this.accountLoader.removeAccount(\n accountToPoll.publicKey,\n accountToPoll.callbackId\n );\n }\n for (const [_, oracleToPoll] of this.oraclesToPoll) {\n this.accountLoader.removeAccount(\n oracleToPoll.publicKey,\n oracleToPoll.callbackId\n );\n }\n this.accountLoader.removeErrorCallbacks(this.errorCallbackId);\n this.errorCallbackId = void 0;\n this.accountsToPoll.clear();\n this.oraclesToPoll.clear();\n this.isSubscribed = false;\n }\n async addSpotMarket(marketIndex) {\n await this.addSpotMarketAccountToPoll(marketIndex);\n const accountToPoll = this.accountsToPoll.get(marketIndex.toString());\n await this.addAccountToAccountLoader(accountToPoll);\n return true;\n }\n async addPerpMarket(marketIndex) {\n await this.addPerpMarketAccountToPoll(marketIndex);\n const accountToPoll = this.accountsToPoll.get(marketIndex.toString());\n await this.addAccountToAccountLoader(accountToPoll);\n return true;\n }\n async addOracle(oracleInfo) {\n if (oracleInfo.publicKey.equals(PublicKey6.default)) {\n return true;\n }\n this.addOracleToPoll(oracleInfo);\n const oracleToPoll = this.oraclesToPoll.get(\n oracleInfo.publicKey.toString()\n );\n await this.addOracleToAccountLoader(oracleToPoll);\n return true;\n }\n assertIsSubscribed() {\n if (!this.isSubscribed) {\n throw new NotSubscribedError(\n \"You must call `subscribe` before using this function\"\n );\n }\n }\n getStateAccountAndSlot() {\n this.assertIsSubscribed();\n return this.state;\n }\n getMarketAccountAndSlot(marketIndex) {\n return this.perpMarket.get(marketIndex);\n }\n getMarketAccountsAndSlots() {\n return Array.from(this.perpMarket.values());\n }\n getSpotMarketAccountAndSlot(marketIndex) {\n return this.spotMarket.get(marketIndex);\n }\n getSpotMarketAccountsAndSlots() {\n return Array.from(this.spotMarket.values());\n }\n getOraclePriceDataAndSlot(oraclePublicKey) {\n this.assertIsSubscribed();\n if (oraclePublicKey.equals(PublicKey6.default)) {\n return {\n data: QUOTE_ORACLE_PRICE_DATA,\n slot: 0\n };\n }\n return this.oracles.get(oraclePublicKey.toString());\n }\n};\n\n// src/accounts/pollingOracleAccountSubscriber.ts\nimport { EventEmitter as EventEmitter3 } from \"events\";\nvar PollingOracleAccountSubscriber = class {\n constructor(publicKey, oracleClient, accountLoader) {\n this.isSubscribed = false;\n this.publicKey = publicKey;\n this.oracleClient = oracleClient;\n this.accountLoader = accountLoader;\n this.eventEmitter = new EventEmitter3();\n }\n async subscribe() {\n if (this.isSubscribed) {\n return true;\n }\n await this.addToAccountLoader();\n let subscriptionSucceeded = false;\n let retries = 0;\n while (!subscriptionSucceeded && retries < 5) {\n await this.fetch();\n subscriptionSucceeded = this.didSubscriptionSucceed();\n retries++;\n }\n if (subscriptionSucceeded) {\n this.eventEmitter.emit(\"update\");\n }\n this.isSubscribed = subscriptionSucceeded;\n return subscriptionSucceeded;\n }\n async addToAccountLoader() {\n if (this.callbackId) {\n return;\n }\n this.callbackId = await this.accountLoader.addAccount(\n this.publicKey,\n async (buffer, slot) => {\n const oraclePriceData = await this.oracleClient.getOraclePriceDataFromBuffer(buffer);\n this.oraclePriceData = { data: oraclePriceData, slot };\n this.eventEmitter.emit(\"oracleUpdate\", oraclePriceData);\n this.eventEmitter.emit(\"update\");\n }\n );\n this.errorCallbackId = this.accountLoader.addErrorCallbacks((error) => {\n this.eventEmitter.emit(\"error\", error);\n });\n }\n async fetch() {\n await this.accountLoader.load();\n const { buffer, slot } = this.accountLoader.getBufferAndSlot(\n this.publicKey\n );\n this.oraclePriceData = {\n data: await this.oracleClient.getOraclePriceDataFromBuffer(buffer),\n slot\n };\n }\n async unsubscribe() {\n if (!this.isSubscribed) {\n return;\n }\n this.accountLoader.removeAccount(this.publicKey, this.callbackId);\n this.callbackId = void 0;\n this.accountLoader.removeErrorCallbacks(this.errorCallbackId);\n this.errorCallbackId = void 0;\n this.isSubscribed = false;\n }\n assertIsSubscribed() {\n if (!this.isSubscribed) {\n throw new NotSubscribedError(\n \"You must call `subscribe` before using this function\"\n );\n }\n }\n getOraclePriceData() {\n this.assertIsSubscribed();\n return this.oraclePriceData;\n }\n didSubscriptionSucceed() {\n return !!this.oraclePriceData;\n }\n};\n\n// src/accounts/pollingTokenAccountSubscriber.ts\nimport { EventEmitter as EventEmitter4 } from \"events\";\n\n// src/token/index.ts\nimport { AccountLayout, u64 } from \"@solana/spl-token\";\nimport { PublicKey as PublicKey7 } from \"@solana/web3.js\";\nfunction parseTokenAccount(data) {\n const accountInfo = AccountLayout.decode(data);\n accountInfo.mint = new PublicKey7(accountInfo.mint);\n accountInfo.owner = new PublicKey7(accountInfo.owner);\n accountInfo.amount = u64.fromBuffer(accountInfo.amount);\n if (accountInfo.delegateOption === 0) {\n accountInfo.delegate = null;\n accountInfo.delegatedAmount = new u64(0);\n } else {\n accountInfo.delegate = new PublicKey7(accountInfo.delegate);\n accountInfo.delegatedAmount = u64.fromBuffer(accountInfo.delegatedAmount);\n }\n accountInfo.isInitialized = accountInfo.state !== 0;\n accountInfo.isFrozen = accountInfo.state === 2;\n if (accountInfo.isNativeOption === 1) {\n accountInfo.rentExemptReserve = u64.fromBuffer(accountInfo.isNative);\n accountInfo.isNative = true;\n } else {\n accountInfo.rentExemptReserve = null;\n accountInfo.isNative = false;\n }\n if (accountInfo.closeAuthorityOption === 0) {\n accountInfo.closeAuthority = null;\n } else {\n accountInfo.closeAuthority = new PublicKey7(accountInfo.closeAuthority);\n }\n return accountInfo;\n}\n\n// src/accounts/pollingTokenAccountSubscriber.ts\nvar PollingTokenAccountSubscriber = class {\n constructor(publicKey, accountLoader) {\n this.isSubscribed = false;\n this.publicKey = publicKey;\n this.accountLoader = accountLoader;\n this.eventEmitter = new EventEmitter4();\n }\n async subscribe() {\n if (this.isSubscribed) {\n return true;\n }\n await this.addToAccountLoader();\n let subscriptionSucceeded = false;\n let retries = 0;\n while (!subscriptionSucceeded && retries < 5) {\n await this.fetch();\n subscriptionSucceeded = this.didSubscriptionSucceed();\n retries++;\n }\n if (subscriptionSucceeded) {\n this.eventEmitter.emit(\"update\");\n }\n this.isSubscribed = subscriptionSucceeded;\n return subscriptionSucceeded;\n }\n async addToAccountLoader() {\n if (this.callbackId) {\n return;\n }\n this.callbackId = await this.accountLoader.addAccount(\n this.publicKey,\n (buffer, slot) => {\n const tokenAccount = parseTokenAccount(buffer);\n this.tokenAccountAndSlot = { data: tokenAccount, slot };\n this.eventEmitter.emit(\"tokenAccountUpdate\", tokenAccount);\n this.eventEmitter.emit(\"update\");\n }\n );\n this.errorCallbackId = this.accountLoader.addErrorCallbacks((error) => {\n this.eventEmitter.emit(\"error\", error);\n });\n }\n async fetch() {\n await this.accountLoader.load();\n const { buffer, slot } = this.accountLoader.getBufferAndSlot(\n this.publicKey\n );\n this.tokenAccountAndSlot = { data: parseTokenAccount(buffer), slot };\n }\n async unsubscribe() {\n if (!this.isSubscribed) {\n return;\n }\n this.accountLoader.removeAccount(this.publicKey, this.callbackId);\n this.callbackId = void 0;\n this.accountLoader.removeErrorCallbacks(this.errorCallbackId);\n this.errorCallbackId = void 0;\n this.isSubscribed = false;\n }\n assertIsSubscribed() {\n if (!this.isSubscribed) {\n throw new NotSubscribedError(\n \"You must call `subscribe` before using this function\"\n );\n }\n }\n getTokenAccountAndSlot() {\n this.assertIsSubscribed();\n return this.tokenAccountAndSlot;\n }\n didSubscriptionSucceed() {\n return !!this.tokenAccountAndSlot;\n }\n};\n\n// src/accounts/pollingUserAccountSubscriber.ts\nimport { EventEmitter as EventEmitter5 } from \"events\";\nvar PollingUserAccountSubscriber = class {\n constructor(program2, userAccountPublicKey, accountLoader) {\n this.accountsToPoll = /* @__PURE__ */ new Map();\n this.isSubscribed = false;\n this.program = program2;\n this.accountLoader = accountLoader;\n this.eventEmitter = new EventEmitter5();\n this.userAccountPublicKey = userAccountPublicKey;\n }\n async subscribe() {\n if (this.isSubscribed) {\n return true;\n }\n await this.addToAccountLoader();\n await this.fetchIfUnloaded();\n if (this.doAccountsExist()) {\n this.eventEmitter.emit(\"update\");\n }\n this.isSubscribed = true;\n return true;\n }\n async addToAccountLoader() {\n if (this.accountsToPoll.size > 0) {\n return;\n }\n this.accountsToPoll.set(this.userAccountPublicKey.toString(), {\n key: \"user\",\n publicKey: this.userAccountPublicKey,\n eventType: \"userAccountUpdate\"\n });\n for (const [_, accountToPoll] of this.accountsToPoll) {\n accountToPoll.callbackId = await this.accountLoader.addAccount(\n accountToPoll.publicKey,\n (buffer, slot) => {\n if (!buffer) {\n return;\n }\n const account = this.program.account[accountToPoll.key].coder.accounts.decode(capitalize(accountToPoll.key), buffer);\n this[accountToPoll.key] = { data: account, slot };\n this.eventEmitter.emit(accountToPoll.eventType, account);\n this.eventEmitter.emit(\"update\");\n }\n );\n }\n this.errorCallbackId = this.accountLoader.addErrorCallbacks((error) => {\n this.eventEmitter.emit(\"error\", error);\n });\n }\n async fetchIfUnloaded() {\n let shouldFetch = false;\n for (const [_, accountToPoll] of this.accountsToPoll) {\n if (this[accountToPoll.key] === void 0) {\n shouldFetch = true;\n break;\n }\n }\n if (shouldFetch) {\n await this.fetch();\n }\n }\n async fetch() {\n await this.accountLoader.load();\n for (const [_, accountToPoll] of this.accountsToPoll) {\n const { buffer, slot } = this.accountLoader.getBufferAndSlot(\n accountToPoll.publicKey\n );\n if (buffer) {\n const account = this.program.account[accountToPoll.key].coder.accounts.decode(capitalize(accountToPoll.key), buffer);\n this[accountToPoll.key] = { data: account, slot };\n }\n }\n }\n doAccountsExist() {\n let success = true;\n for (const [_, accountToPoll] of this.accountsToPoll) {\n if (!this[accountToPoll.key]) {\n success = false;\n break;\n }\n }\n return success;\n }\n async unsubscribe() {\n if (!this.isSubscribed) {\n return;\n }\n for (const [_, accountToPoll] of this.accountsToPoll) {\n this.accountLoader.removeAccount(\n accountToPoll.publicKey,\n accountToPoll.callbackId\n );\n }\n this.accountLoader.removeErrorCallbacks(this.errorCallbackId);\n this.errorCallbackId = void 0;\n this.accountsToPoll.clear();\n this.isSubscribed = false;\n }\n assertIsSubscribed() {\n if (!this.isSubscribed) {\n throw new NotSubscribedError(\n \"You must call `subscribe` before using this function\"\n );\n }\n }\n getUserAccountAndSlot() {\n this.assertIsSubscribed();\n return this.user;\n }\n};\n\n// src/accounts/pollingUserStatsAccountSubscriber.ts\nimport { EventEmitter as EventEmitter6 } from \"events\";\nvar PollingUserStatsAccountSubscriber = class {\n constructor(program2, userStatsAccountPublicKey, accountLoader) {\n this.accountsToPoll = /* @__PURE__ */ new Map();\n this.isSubscribed = false;\n this.program = program2;\n this.accountLoader = accountLoader;\n this.eventEmitter = new EventEmitter6();\n this.userStatsAccountPublicKey = userStatsAccountPublicKey;\n }\n async subscribe() {\n if (this.isSubscribed) {\n return true;\n }\n await this.addToAccountLoader();\n await this.fetchIfUnloaded();\n if (this.doAccountsExist()) {\n this.eventEmitter.emit(\"update\");\n }\n this.isSubscribed = true;\n return true;\n }\n async addToAccountLoader() {\n if (this.accountsToPoll.size > 0) {\n return;\n }\n this.accountsToPoll.set(this.userStatsAccountPublicKey.toString(), {\n key: \"userStats\",\n publicKey: this.userStatsAccountPublicKey,\n eventType: \"userStatsAccountUpdate\"\n });\n for (const [_, accountToPoll] of this.accountsToPoll) {\n accountToPoll.callbackId = await this.accountLoader.addAccount(\n accountToPoll.publicKey,\n (buffer, slot) => {\n if (!buffer) {\n return;\n }\n const account = this.program.account[accountToPoll.key].coder.accounts.decode(capitalize(accountToPoll.key), buffer);\n this[accountToPoll.key] = { data: account, slot };\n this.eventEmitter.emit(accountToPoll.eventType, account);\n this.eventEmitter.emit(\"update\");\n }\n );\n }\n this.errorCallbackId = this.accountLoader.addErrorCallbacks((error) => {\n this.eventEmitter.emit(\"error\", error);\n });\n }\n async fetchIfUnloaded() {\n let shouldFetch = false;\n for (const [_, accountToPoll] of this.accountsToPoll) {\n if (this[accountToPoll.key] === void 0) {\n shouldFetch = true;\n break;\n }\n }\n if (shouldFetch) {\n await this.fetch();\n }\n }\n async fetch() {\n await this.accountLoader.load();\n for (const [_, accountToPoll] of this.accountsToPoll) {\n const { buffer, slot } = this.accountLoader.getBufferAndSlot(\n accountToPoll.publicKey\n );\n if (buffer) {\n const account = this.program.account[accountToPoll.key].coder.accounts.decode(capitalize(accountToPoll.key), buffer);\n this[accountToPoll.key] = { data: account, slot };\n }\n }\n }\n doAccountsExist() {\n let success = true;\n for (const [_, accountToPoll] of this.accountsToPoll) {\n if (!this[accountToPoll.key]) {\n success = false;\n break;\n }\n }\n return success;\n }\n async unsubscribe() {\n for (const [_, accountToPoll] of this.accountsToPoll) {\n this.accountLoader.removeAccount(\n accountToPoll.publicKey,\n accountToPoll.callbackId\n );\n }\n this.accountLoader.removeErrorCallbacks(this.errorCallbackId);\n this.errorCallbackId = void 0;\n this.accountsToPoll.clear();\n this.isSubscribed = false;\n }\n assertIsSubscribed() {\n if (!this.isSubscribed) {\n throw new NotSubscribedError(\n \"You must call `subscribe` before using this function\"\n );\n }\n }\n getUserStatsAccountAndSlot() {\n this.assertIsSubscribed();\n return this.userStats;\n }\n};\n\n// src/adminClient.ts\nimport {\n SYSVAR_RENT_PUBKEY as SYSVAR_RENT_PUBKEY2\n} from \"@solana/web3.js\";\n\n// src/userName.ts\nvar MAX_NAME_LENGTH = 32;\nvar DEFAULT_USER_NAME = \"Main Account\";\nvar DEFAULT_MARKET_NAME = \"Default Market Name\";\nfunction encodeName(name) {\n if (name.length > MAX_NAME_LENGTH) {\n throw Error(`Name (${name}) longer than 32 characters`);\n }\n const buffer = Buffer.alloc(32);\n buffer.fill(name);\n buffer.fill(\" \", name.length);\n return Array(...buffer);\n}\n\n// src/adminClient.ts\nimport { BN as BN14 } from \"@project-serum/anchor\";\nimport * as anchor4 from \"@project-serum/anchor\";\n\n// src/math/utils.ts\nfunction clampBN(x, min, max) {\n return BN.max(min, BN.min(x, max));\n}\nvar squareRootBN = (n, closeness = new BN(1)) => {\n let x = n;\n let root;\n let count = 0;\n const TWO2 = new BN(2);\n while (count < Number.MAX_SAFE_INTEGER) {\n count++;\n root = x.add(n.div(x)).div(TWO2);\n if (x.sub(root).abs().lte(closeness))\n break;\n x = root;\n }\n return root;\n};\n\n// src/adminClient.ts\nimport { TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID3 } from \"@solana/spl-token\";\n\n// src/driftClient.ts\nimport { AnchorProvider as AnchorProvider3, BN as BN12, Program as Program3 } from \"@project-serum/anchor\";\nimport bs582 from \"bs58\";\nimport {\n ASSOCIATED_TOKEN_PROGRAM_ID as ASSOCIATED_TOKEN_PROGRAM_ID2,\n Token as Token2,\n TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID2\n} from \"@solana/spl-token\";\nimport * as anchor3 from \"@project-serum/anchor\";\n\n// src/idl/drift.json\nvar drift_default = {\n version: \"2.8.0-beta.2\",\n name: \"drift\",\n instructions: [\n {\n name: \"initializeUser\",\n accounts: [\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"subAccountId\",\n type: \"u16\"\n },\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n name: \"initializeUserStats\",\n accounts: [\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"deposit\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"spotMarketVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userTokenAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"amount\",\n type: \"u64\"\n },\n {\n name: \"reduceOnly\",\n type: \"bool\"\n }\n ]\n },\n {\n name: \"withdraw\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"spotMarketVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"driftSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"userTokenAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"amount\",\n type: \"u64\"\n },\n {\n name: \"reduceOnly\",\n type: \"bool\"\n }\n ]\n },\n {\n name: \"transferDeposit\",\n accounts: [\n {\n name: \"fromUser\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"toUser\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarketVault\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"amount\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"placePerpOrder\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"OrderParams\"\n }\n }\n ]\n },\n {\n name: \"cancelOrder\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"orderId\",\n type: {\n option: \"u32\"\n }\n }\n ]\n },\n {\n name: \"cancelOrderByUserId\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"userOrderId\",\n type: \"u8\"\n }\n ]\n },\n {\n name: \"cancelOrders\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"marketType\",\n type: {\n option: {\n defined: \"MarketType\"\n }\n }\n },\n {\n name: \"marketIndex\",\n type: {\n option: \"u16\"\n }\n },\n {\n name: \"direction\",\n type: {\n option: {\n defined: \"PositionDirection\"\n }\n }\n }\n ]\n },\n {\n name: \"placeAndTakePerpOrder\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"OrderParams\"\n }\n },\n {\n name: \"makerOrderId\",\n type: {\n option: \"u32\"\n }\n }\n ]\n },\n {\n name: \"placeAndMakePerpOrder\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"taker\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"takerStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"OrderParams\"\n }\n },\n {\n name: \"takerOrderId\",\n type: \"u32\"\n }\n ]\n },\n {\n name: \"placeSpotOrder\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"OrderParams\"\n }\n }\n ]\n },\n {\n name: \"placeAndTakeSpotOrder\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"OrderParams\"\n }\n },\n {\n name: \"fulfillmentType\",\n type: {\n option: {\n defined: \"SpotFulfillmentType\"\n }\n }\n },\n {\n name: \"makerOrderId\",\n type: {\n option: \"u32\"\n }\n }\n ]\n },\n {\n name: \"placeAndMakeSpotOrder\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"taker\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"takerStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"params\",\n type: {\n defined: \"OrderParams\"\n }\n },\n {\n name: \"takerOrderId\",\n type: \"u32\"\n },\n {\n name: \"fulfillmentType\",\n type: {\n option: {\n defined: \"SpotFulfillmentType\"\n }\n }\n }\n ]\n },\n {\n name: \"addPerpLpShares\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"nShares\",\n type: \"u64\"\n },\n {\n name: \"marketIndex\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"removePerpLpShares\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"sharesToBurn\",\n type: \"u64\"\n },\n {\n name: \"marketIndex\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"removePerpLpSharesInExpiringMarket\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"sharesToBurn\",\n type: \"u64\"\n },\n {\n name: \"marketIndex\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"updateUserName\",\n accounts: [\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"subAccountId\",\n type: \"u16\"\n },\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n name: \"updateUserCustomMarginRatio\",\n accounts: [\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"subAccountId\",\n type: \"u16\"\n },\n {\n name: \"marginRatio\",\n type: \"u32\"\n }\n ]\n },\n {\n name: \"updateUserMarginTradingEnabled\",\n accounts: [\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"subAccountId\",\n type: \"u16\"\n },\n {\n name: \"marginTradingEnabled\",\n type: \"bool\"\n }\n ]\n },\n {\n name: \"updateUserDelegate\",\n accounts: [\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"subAccountId\",\n type: \"u16\"\n },\n {\n name: \"delegate\",\n type: \"publicKey\"\n }\n ]\n },\n {\n name: \"deleteUser\",\n accounts: [\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: []\n },\n {\n name: \"fillPerpOrder\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"filler\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"fillerStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"orderId\",\n type: {\n option: \"u32\"\n }\n },\n {\n name: \"makerOrderId\",\n type: {\n option: \"u32\"\n }\n }\n ]\n },\n {\n name: \"fillSpotOrder\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"filler\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"fillerStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"orderId\",\n type: {\n option: \"u32\"\n }\n },\n {\n name: \"fulfillmentType\",\n type: {\n option: {\n defined: \"SpotFulfillmentType\"\n }\n }\n },\n {\n name: \"makerOrderId\",\n type: {\n option: \"u32\"\n }\n }\n ]\n },\n {\n name: \"triggerOrder\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"filler\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"orderId\",\n type: \"u32\"\n }\n ]\n },\n {\n name: \"forceCancelOrders\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"filler\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"settlePnl\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"spotMarketVault\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"settleFundingPayment\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"settleLp\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"settleExpiredMarket\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"liquidatePerp\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"liquidator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liquidatorStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"liquidatorMaxBaseAssetAmount\",\n type: \"u64\"\n },\n {\n name: \"limitPrice\",\n type: {\n option: \"u64\"\n }\n }\n ]\n },\n {\n name: \"liquidateSpot\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"liquidator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liquidatorStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"assetMarketIndex\",\n type: \"u16\"\n },\n {\n name: \"liabilityMarketIndex\",\n type: \"u16\"\n },\n {\n name: \"liquidatorMaxLiabilityTransfer\",\n type: \"u128\"\n },\n {\n name: \"limitPrice\",\n type: {\n option: \"u64\"\n }\n }\n ]\n },\n {\n name: \"liquidateBorrowForPerpPnl\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"liquidator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liquidatorStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"perpMarketIndex\",\n type: \"u16\"\n },\n {\n name: \"spotMarketIndex\",\n type: \"u16\"\n },\n {\n name: \"liquidatorMaxLiabilityTransfer\",\n type: \"u128\"\n },\n {\n name: \"limitPrice\",\n type: {\n option: \"u64\"\n }\n }\n ]\n },\n {\n name: \"liquidatePerpPnlForDeposit\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"liquidator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liquidatorStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"perpMarketIndex\",\n type: \"u16\"\n },\n {\n name: \"spotMarketIndex\",\n type: \"u16\"\n },\n {\n name: \"liquidatorMaxPnlTransfer\",\n type: \"u128\"\n },\n {\n name: \"limitPrice\",\n type: {\n option: \"u64\"\n }\n }\n ]\n },\n {\n name: \"resolvePerpPnlDeficit\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"spotMarketVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"insuranceFundVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"driftSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"spotMarketIndex\",\n type: \"u16\"\n },\n {\n name: \"perpMarketIndex\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"resolvePerpBankruptcy\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"liquidator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liquidatorStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"spotMarketVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"insuranceFundVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"driftSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"quoteSpotMarketIndex\",\n type: \"u16\"\n },\n {\n name: \"marketIndex\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"resolveSpotBankruptcy\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"liquidator\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liquidatorStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"user\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"spotMarketVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"insuranceFundVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"driftSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"settleRevenueToInsuranceFund\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"spotMarketVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"driftSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"insuranceFundVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"spotMarketIndex\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"updateFundingRate\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracle\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"updateSpotMarketCumulativeInterest\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracle\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"updateAmms\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"marketIndexes\",\n type: {\n array: [\n \"u16\",\n 5\n ]\n }\n }\n ]\n },\n {\n name: \"updateSpotMarketExpiry\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"expiryTs\",\n type: \"i64\"\n }\n ]\n },\n {\n name: \"updateUserQuoteAssetInsuranceStake\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"insuranceFundStake\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"insuranceFundVault\",\n isMut: true,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"initializeInsuranceFundStake\",\n accounts: [\n {\n name: \"spotMarket\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"insuranceFundStake\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"addInsuranceFundStake\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"insuranceFundStake\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"spotMarketVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"insuranceFundVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"driftSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"userTokenAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"amount\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"requestRemoveInsuranceFundStake\",\n accounts: [\n {\n name: \"spotMarket\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"insuranceFundStake\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"insuranceFundVault\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"amount\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"cancelRequestRemoveInsuranceFundStake\",\n accounts: [\n {\n name: \"spotMarket\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"insuranceFundStake\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"insuranceFundVault\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"removeInsuranceFundStake\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"insuranceFundStake\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"userStats\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"insuranceFundVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"driftSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"userTokenAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"initialize\",\n accounts: [\n {\n name: \"admin\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quoteAssetMint\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"driftSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"initializeSpotMarket\",\n accounts: [\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"spotMarketMint\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarketVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"insuranceFundVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"driftSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracle\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"admin\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"optimalUtilization\",\n type: \"u32\"\n },\n {\n name: \"optimalBorrowRate\",\n type: \"u32\"\n },\n {\n name: \"maxBorrowRate\",\n type: \"u32\"\n },\n {\n name: \"oracleSource\",\n type: {\n defined: \"OracleSource\"\n }\n },\n {\n name: \"initialAssetWeight\",\n type: \"u32\"\n },\n {\n name: \"maintenanceAssetWeight\",\n type: \"u32\"\n },\n {\n name: \"initialLiabilityWeight\",\n type: \"u32\"\n },\n {\n name: \"maintenanceLiabilityWeight\",\n type: \"u32\"\n },\n {\n name: \"imfFactor\",\n type: \"u32\"\n },\n {\n name: \"liquidatorFee\",\n type: \"u32\"\n },\n {\n name: \"activeStatus\",\n type: \"bool\"\n },\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n name: \"initializeSerumFulfillmentConfig\",\n accounts: [\n {\n name: \"baseSpotMarket\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"quoteSpotMarket\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"serumProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"serumMarket\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"serumOpenOrders\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"driftSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"serumFulfillmentConfig\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"admin\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"updateSerumFulfillmentConfigStatus\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"serumFulfillmentConfig\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"admin\",\n isMut: true,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"status\",\n type: {\n defined: \"SpotFulfillmentConfigStatus\"\n }\n }\n ]\n },\n {\n name: \"updateSerumVault\",\n accounts: [\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"admin\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"srmVault\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"initializePerpMarket\",\n accounts: [\n {\n name: \"admin\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracle\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"ammBaseAssetReserve\",\n type: \"u128\"\n },\n {\n name: \"ammQuoteAssetReserve\",\n type: \"u128\"\n },\n {\n name: \"ammPeriodicity\",\n type: \"i64\"\n },\n {\n name: \"ammPegMultiplier\",\n type: \"u128\"\n },\n {\n name: \"oracleSource\",\n type: {\n defined: \"OracleSource\"\n }\n },\n {\n name: \"marginRatioInitial\",\n type: \"u32\"\n },\n {\n name: \"marginRatioMaintenance\",\n type: \"u32\"\n },\n {\n name: \"liquidatorFee\",\n type: \"u32\"\n },\n {\n name: \"activeStatus\",\n type: \"bool\"\n },\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n name: \"moveAmmPrice\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"baseAssetReserve\",\n type: \"u128\"\n },\n {\n name: \"quoteAssetReserve\",\n type: \"u128\"\n },\n {\n name: \"sqrtK\",\n type: \"u128\"\n }\n ]\n },\n {\n name: \"updatePerpMarketExpiry\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"expiryTs\",\n type: \"i64\"\n }\n ]\n },\n {\n name: \"settleExpiredMarketPoolsToRevenuePool\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"depositIntoPerpMarketFeePool\",\n accounts: [\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"sourceVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"driftSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"quoteSpotMarket\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"spotMarketVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"repegAmmCurve\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracle\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"newPegCandidate\",\n type: \"u128\"\n }\n ]\n },\n {\n name: \"updatePerpMarketAmmOracleTwap\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracle\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n }\n ],\n args: []\n },\n {\n name: \"resetPerpMarketAmmOracleTwap\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracle\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n }\n ],\n args: []\n },\n {\n name: \"updateK\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracle\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"sqrtK\",\n type: \"u128\"\n }\n ]\n },\n {\n name: \"updatePerpMarketMarginRatio\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"marginRatioInitial\",\n type: \"u32\"\n },\n {\n name: \"marginRatioMaintenance\",\n type: \"u32\"\n }\n ]\n },\n {\n name: \"updatePerpMarketMaxImbalances\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"unrealizedMaxImbalance\",\n type: \"u64\"\n },\n {\n name: \"maxRevenueWithdrawPerPeriod\",\n type: \"u64\"\n },\n {\n name: \"quoteMaxInsurance\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"updatePerpMarketLiquidationFee\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"liquidatorFee\",\n type: \"u32\"\n },\n {\n name: \"ifLiquidationFee\",\n type: \"u32\"\n }\n ]\n },\n {\n name: \"updateInsuranceFundUnstakingPeriod\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"insuranceFundUnstakingPeriod\",\n type: \"i64\"\n }\n ]\n },\n {\n name: \"updateSpotMarketLiquidationFee\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"liquidatorFee\",\n type: \"u32\"\n },\n {\n name: \"ifLiquidationFee\",\n type: \"u32\"\n }\n ]\n },\n {\n name: \"updateWithdrawGuardThreshold\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"withdrawGuardThreshold\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"updateSpotMarketIfFactor\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"spotMarketIndex\",\n type: \"u16\"\n },\n {\n name: \"userIfFactor\",\n type: \"u32\"\n },\n {\n name: \"totalIfFactor\",\n type: \"u32\"\n }\n ]\n },\n {\n name: \"updateSpotMarketRevenueSettlePeriod\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"revenueSettlePeriod\",\n type: \"i64\"\n }\n ]\n },\n {\n name: \"updateSpotMarketStatus\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"status\",\n type: {\n defined: \"MarketStatus\"\n }\n }\n ]\n },\n {\n name: \"updateSpotMarketAssetTier\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"assetTier\",\n type: {\n defined: \"AssetTier\"\n }\n }\n ]\n },\n {\n name: \"updateSpotMarketMarginWeights\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"initialAssetWeight\",\n type: \"u32\"\n },\n {\n name: \"maintenanceAssetWeight\",\n type: \"u32\"\n },\n {\n name: \"initialLiabilityWeight\",\n type: \"u32\"\n },\n {\n name: \"maintenanceLiabilityWeight\",\n type: \"u32\"\n },\n {\n name: \"imfFactor\",\n type: \"u32\"\n }\n ]\n },\n {\n name: \"updateSpotMarketBorrowRate\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"optimalUtilization\",\n type: \"u32\"\n },\n {\n name: \"optimalBorrowRate\",\n type: \"u32\"\n },\n {\n name: \"maxBorrowRate\",\n type: \"u32\"\n }\n ]\n },\n {\n name: \"updateSpotMarketMaxTokenDeposits\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"maxTokenDeposits\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"updateSpotMarketOracle\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracle\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"oracle\",\n type: \"publicKey\"\n },\n {\n name: \"oracleSource\",\n type: {\n defined: \"OracleSource\"\n }\n }\n ]\n },\n {\n name: \"updateSpotMarketStepSizeAndTickSize\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"stepSize\",\n type: \"u64\"\n },\n {\n name: \"tickSize\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"updateSpotMarketMinOrderSize\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"orderSize\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"updateSpotMarketOrdersEnabled\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"ordersEnabled\",\n type: \"bool\"\n }\n ]\n },\n {\n name: \"updateSpotMarketName\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n name: \"updatePerpMarketStatus\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"status\",\n type: {\n defined: \"MarketStatus\"\n }\n }\n ]\n },\n {\n name: \"updatePerpMarketContractTier\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"contractTier\",\n type: {\n defined: \"ContractTier\"\n }\n }\n ]\n },\n {\n name: \"updatePerpMarketImfFactor\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"imfFactor\",\n type: \"u32\"\n },\n {\n name: \"unrealizedPnlImfFactor\",\n type: \"u32\"\n }\n ]\n },\n {\n name: \"updatePerpMarketUnrealizedAssetWeight\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"unrealizedInitialAssetWeight\",\n type: \"u32\"\n },\n {\n name: \"unrealizedMaintenanceAssetWeight\",\n type: \"u32\"\n }\n ]\n },\n {\n name: \"updatePerpMarketConcentrationCoef\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"concentrationScale\",\n type: \"u128\"\n }\n ]\n },\n {\n name: \"updatePerpMarketCurveUpdateIntensity\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"curveUpdateIntensity\",\n type: \"u8\"\n }\n ]\n },\n {\n name: \"updateLpCooldownTime\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"lpCooldownTime\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"updatePerpFeeStructure\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"feeStructure\",\n type: {\n defined: \"FeeStructure\"\n }\n }\n ]\n },\n {\n name: \"updateSpotFeeStructure\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"feeStructure\",\n type: {\n defined: \"FeeStructure\"\n }\n }\n ]\n },\n {\n name: \"updateInitialPctToLiquidate\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"initialPctToLiquidate\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"updateLiquidationDuration\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"liquidationDuration\",\n type: \"u8\"\n }\n ]\n },\n {\n name: \"updateOracleGuardRails\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"oracleGuardRails\",\n type: {\n defined: \"OracleGuardRails\"\n }\n }\n ]\n },\n {\n name: \"updateStateSettlementDuration\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"settlementDuration\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"updatePerpMarketOracle\",\n accounts: [\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracle\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"oracle\",\n type: \"publicKey\"\n },\n {\n name: \"oracleSource\",\n type: {\n defined: \"OracleSource\"\n }\n }\n ]\n },\n {\n name: \"updatePerpMarketBaseSpread\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"baseSpread\",\n type: \"u32\"\n }\n ]\n },\n {\n name: \"updateAmmJitIntensity\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"ammJitIntensity\",\n type: \"u8\"\n }\n ]\n },\n {\n name: \"updatePerpMarketMaxSpread\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"maxSpread\",\n type: \"u32\"\n }\n ]\n },\n {\n name: \"updatePerpMarketStepSizeAndTickSize\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"stepSize\",\n type: \"u64\"\n },\n {\n name: \"tickSize\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"updatePerpMarketName\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n name: \"updatePerpMarketMinOrderSize\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"orderSize\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"updatePerpMarketMaxSlippageRatio\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"maxSlippageRatio\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"updatePerpMarketMaxFillReserveFraction\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"maxFillReserveFraction\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"updatePerpMarketMaxOpenInterest\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"perpMarket\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"maxOpenInterest\",\n type: \"u128\"\n }\n ]\n },\n {\n name: \"updateAdmin\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"admin\",\n type: \"publicKey\"\n }\n ]\n },\n {\n name: \"updateWhitelistMint\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"whitelistMint\",\n type: \"publicKey\"\n }\n ]\n },\n {\n name: \"updateDiscountMint\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"discountMint\",\n type: \"publicKey\"\n }\n ]\n },\n {\n name: \"updateExchangeStatus\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"exchangeStatus\",\n type: {\n defined: \"ExchangeStatus\"\n }\n }\n ]\n },\n {\n name: \"updatePerpAuctionDuration\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"minPerpAuctionDuration\",\n type: \"u8\"\n }\n ]\n },\n {\n name: \"updateSpotAuctionDuration\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"defaultSpotAuctionDuration\",\n type: \"u8\"\n }\n ]\n },\n {\n name: \"adminRemoveInsuranceFundStake\",\n accounts: [\n {\n name: \"admin\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"state\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"spotMarket\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"insuranceFundVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"driftSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"adminTokenAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"amount\",\n type: \"u64\"\n }\n ]\n }\n ],\n accounts: [\n {\n name: \"InsuranceFundStake\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"authority\",\n type: \"publicKey\"\n },\n {\n name: \"ifShares\",\n type: \"u128\"\n },\n {\n name: \"lastWithdrawRequestShares\",\n type: \"u128\"\n },\n {\n name: \"ifBase\",\n type: \"u128\"\n },\n {\n name: \"lastValidTs\",\n type: \"i64\"\n },\n {\n name: \"lastWithdrawRequestValue\",\n type: \"u64\"\n },\n {\n name: \"lastWithdrawRequestTs\",\n type: \"i64\"\n },\n {\n name: \"costBasis\",\n type: \"i64\"\n },\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 14\n ]\n }\n }\n ]\n }\n },\n {\n name: \"PerpMarket\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"pubkey\",\n type: \"publicKey\"\n },\n {\n name: \"amm\",\n type: {\n defined: \"AMM\"\n }\n },\n {\n name: \"pnlPool\",\n type: {\n defined: \"PoolBalance\"\n }\n },\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"insuranceClaim\",\n type: {\n defined: \"InsuranceClaim\"\n }\n },\n {\n name: \"unrealizedPnlMaxImbalance\",\n type: \"u64\"\n },\n {\n name: \"expiryTs\",\n type: \"i64\"\n },\n {\n name: \"expiryPrice\",\n type: \"i64\"\n },\n {\n name: \"nextFillRecordId\",\n type: \"u64\"\n },\n {\n name: \"nextFundingRateRecordId\",\n type: \"u64\"\n },\n {\n name: \"nextCurveRecordId\",\n type: \"u64\"\n },\n {\n name: \"imfFactor\",\n type: \"u32\"\n },\n {\n name: \"unrealizedPnlImfFactor\",\n type: \"u32\"\n },\n {\n name: \"liquidatorFee\",\n type: \"u32\"\n },\n {\n name: \"ifLiquidationFee\",\n type: \"u32\"\n },\n {\n name: \"marginRatioInitial\",\n type: \"u32\"\n },\n {\n name: \"marginRatioMaintenance\",\n type: \"u32\"\n },\n {\n name: \"unrealizedPnlInitialAssetWeight\",\n type: \"u32\"\n },\n {\n name: \"unrealizedPnlMaintenanceAssetWeight\",\n type: \"u32\"\n },\n {\n name: \"numberOfUsersWithBase\",\n type: \"u32\"\n },\n {\n name: \"numberOfUsers\",\n type: \"u32\"\n },\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"status\",\n type: {\n defined: \"MarketStatus\"\n }\n },\n {\n name: \"contractType\",\n type: {\n defined: \"ContractType\"\n }\n },\n {\n name: \"contractTier\",\n type: {\n defined: \"ContractTier\"\n }\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 51\n ]\n }\n }\n ]\n }\n },\n {\n name: \"SpotMarket\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"pubkey\",\n type: \"publicKey\"\n },\n {\n name: \"oracle\",\n type: \"publicKey\"\n },\n {\n name: \"mint\",\n type: \"publicKey\"\n },\n {\n name: \"vault\",\n type: \"publicKey\"\n },\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"historicalOracleData\",\n type: {\n defined: \"HistoricalOracleData\"\n }\n },\n {\n name: \"historicalIndexData\",\n type: {\n defined: \"HistoricalIndexData\"\n }\n },\n {\n name: \"revenuePool\",\n type: {\n defined: \"PoolBalance\"\n }\n },\n {\n name: \"spotFeePool\",\n type: {\n defined: \"PoolBalance\"\n }\n },\n {\n name: \"insuranceFund\",\n type: {\n defined: \"InsuranceFund\"\n }\n },\n {\n name: \"totalSpotFee\",\n type: \"u128\"\n },\n {\n name: \"depositBalance\",\n type: \"u128\"\n },\n {\n name: \"borrowBalance\",\n type: \"u128\"\n },\n {\n name: \"cumulativeDepositInterest\",\n type: \"u128\"\n },\n {\n name: \"cumulativeBorrowInterest\",\n type: \"u128\"\n },\n {\n name: \"totalSocialLoss\",\n type: \"u128\"\n },\n {\n name: \"totalQuoteSocialLoss\",\n type: \"u128\"\n },\n {\n name: \"withdrawGuardThreshold\",\n type: \"u64\"\n },\n {\n name: \"maxTokenDeposits\",\n type: \"u64\"\n },\n {\n name: \"depositTokenTwap\",\n type: \"u64\"\n },\n {\n name: \"borrowTokenTwap\",\n type: \"u64\"\n },\n {\n name: \"utilizationTwap\",\n type: \"u64\"\n },\n {\n name: \"lastInterestTs\",\n type: \"u64\"\n },\n {\n name: \"lastTwapTs\",\n type: \"u64\"\n },\n {\n name: \"expiryTs\",\n type: \"i64\"\n },\n {\n name: \"orderStepSize\",\n type: \"u64\"\n },\n {\n name: \"orderTickSize\",\n type: \"u64\"\n },\n {\n name: \"minOrderSize\",\n type: \"u64\"\n },\n {\n name: \"maxPositionSize\",\n type: \"u64\"\n },\n {\n name: \"nextFillRecordId\",\n type: \"u64\"\n },\n {\n name: \"nextDepositRecordId\",\n type: \"u64\"\n },\n {\n name: \"initialAssetWeight\",\n type: \"u32\"\n },\n {\n name: \"maintenanceAssetWeight\",\n type: \"u32\"\n },\n {\n name: \"initialLiabilityWeight\",\n type: \"u32\"\n },\n {\n name: \"maintenanceLiabilityWeight\",\n type: \"u32\"\n },\n {\n name: \"imfFactor\",\n type: \"u32\"\n },\n {\n name: \"liquidatorFee\",\n type: \"u32\"\n },\n {\n name: \"ifLiquidationFee\",\n type: \"u32\"\n },\n {\n name: \"optimalUtilization\",\n type: \"u32\"\n },\n {\n name: \"optimalBorrowRate\",\n type: \"u32\"\n },\n {\n name: \"maxBorrowRate\",\n type: \"u32\"\n },\n {\n name: \"decimals\",\n type: \"u32\"\n },\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"ordersEnabled\",\n type: \"bool\"\n },\n {\n name: \"oracleSource\",\n type: {\n defined: \"OracleSource\"\n }\n },\n {\n name: \"status\",\n type: {\n defined: \"MarketStatus\"\n }\n },\n {\n name: \"assetTier\",\n type: {\n defined: \"AssetTier\"\n }\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 86\n ]\n }\n }\n ]\n }\n },\n {\n name: \"SerumV3FulfillmentConfig\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"pubkey\",\n type: \"publicKey\"\n },\n {\n name: \"serumProgramId\",\n type: \"publicKey\"\n },\n {\n name: \"serumMarket\",\n type: \"publicKey\"\n },\n {\n name: \"serumRequestQueue\",\n type: \"publicKey\"\n },\n {\n name: \"serumEventQueue\",\n type: \"publicKey\"\n },\n {\n name: \"serumBids\",\n type: \"publicKey\"\n },\n {\n name: \"serumAsks\",\n type: \"publicKey\"\n },\n {\n name: \"serumBaseVault\",\n type: \"publicKey\"\n },\n {\n name: \"serumQuoteVault\",\n type: \"publicKey\"\n },\n {\n name: \"serumOpenOrders\",\n type: \"publicKey\"\n },\n {\n name: \"serumSignerNonce\",\n type: \"u64\"\n },\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"fulfillmentType\",\n type: {\n defined: \"SpotFulfillmentType\"\n }\n },\n {\n name: \"status\",\n type: {\n defined: \"SpotFulfillmentConfigStatus\"\n }\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 4\n ]\n }\n }\n ]\n }\n },\n {\n name: \"State\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"admin\",\n type: \"publicKey\"\n },\n {\n name: \"whitelistMint\",\n type: \"publicKey\"\n },\n {\n name: \"discountMint\",\n type: \"publicKey\"\n },\n {\n name: \"signer\",\n type: \"publicKey\"\n },\n {\n name: \"srmVault\",\n type: \"publicKey\"\n },\n {\n name: \"perpFeeStructure\",\n type: {\n defined: \"FeeStructure\"\n }\n },\n {\n name: \"spotFeeStructure\",\n type: {\n defined: \"FeeStructure\"\n }\n },\n {\n name: \"oracleGuardRails\",\n type: {\n defined: \"OracleGuardRails\"\n }\n },\n {\n name: \"numberOfAuthorities\",\n type: \"u64\"\n },\n {\n name: \"numberOfSubAccounts\",\n type: \"u64\"\n },\n {\n name: \"lpCooldownTime\",\n type: \"u64\"\n },\n {\n name: \"liquidationMarginBufferRatio\",\n type: \"u32\"\n },\n {\n name: \"settlementDuration\",\n type: \"u16\"\n },\n {\n name: \"numberOfMarkets\",\n type: \"u16\"\n },\n {\n name: \"numberOfSpotMarkets\",\n type: \"u16\"\n },\n {\n name: \"signerNonce\",\n type: \"u8\"\n },\n {\n name: \"minPerpAuctionDuration\",\n type: \"u8\"\n },\n {\n name: \"defaultMarketOrderTimeInForce\",\n type: \"u8\"\n },\n {\n name: \"defaultSpotAuctionDuration\",\n type: \"u8\"\n },\n {\n name: \"exchangeStatus\",\n type: {\n defined: \"ExchangeStatus\"\n }\n },\n {\n name: \"liquidationDuration\",\n type: \"u8\"\n },\n {\n name: \"initialPctToLiquidate\",\n type: \"u16\"\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 14\n ]\n }\n }\n ]\n }\n },\n {\n name: \"User\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"authority\",\n type: \"publicKey\"\n },\n {\n name: \"delegate\",\n type: \"publicKey\"\n },\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"spotPositions\",\n type: {\n array: [\n {\n defined: \"SpotPosition\"\n },\n 8\n ]\n }\n },\n {\n name: \"perpPositions\",\n type: {\n array: [\n {\n defined: \"PerpPosition\"\n },\n 8\n ]\n }\n },\n {\n name: \"orders\",\n type: {\n array: [\n {\n defined: \"Order\"\n },\n 32\n ]\n }\n },\n {\n name: \"lastAddPerpLpSharesTs\",\n type: \"i64\"\n },\n {\n name: \"totalDeposits\",\n type: \"u64\"\n },\n {\n name: \"totalWithdraws\",\n type: \"u64\"\n },\n {\n name: \"totalSocialLoss\",\n type: \"u64\"\n },\n {\n name: \"settledPerpPnl\",\n type: \"i64\"\n },\n {\n name: \"cumulativeSpotFees\",\n type: \"i64\"\n },\n {\n name: \"cumulativePerpFunding\",\n type: \"i64\"\n },\n {\n name: \"liquidationMarginFreed\",\n type: \"u64\"\n },\n {\n name: \"liquidationStartSlot\",\n type: \"u64\"\n },\n {\n name: \"nextOrderId\",\n type: \"u32\"\n },\n {\n name: \"maxMarginRatio\",\n type: \"u32\"\n },\n {\n name: \"nextLiquidationId\",\n type: \"u16\"\n },\n {\n name: \"subAccountId\",\n type: \"u16\"\n },\n {\n name: \"status\",\n type: {\n defined: \"UserStatus\"\n }\n },\n {\n name: \"isMarginTradingEnabled\",\n type: \"bool\"\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 26\n ]\n }\n }\n ]\n }\n },\n {\n name: \"UserStats\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"authority\",\n type: \"publicKey\"\n },\n {\n name: \"referrer\",\n type: \"publicKey\"\n },\n {\n name: \"fees\",\n type: {\n defined: \"UserFees\"\n }\n },\n {\n name: \"nextEpochTs\",\n type: \"i64\"\n },\n {\n name: \"makerVolume30d\",\n type: \"u64\"\n },\n {\n name: \"takerVolume30d\",\n type: \"u64\"\n },\n {\n name: \"fillerVolume30d\",\n type: \"u64\"\n },\n {\n name: \"lastMakerVolume30dTs\",\n type: \"i64\"\n },\n {\n name: \"lastTakerVolume30dTs\",\n type: \"i64\"\n },\n {\n name: \"lastFillerVolume30dTs\",\n type: \"i64\"\n },\n {\n name: \"ifStakedQuoteAssetAmount\",\n type: \"u64\"\n },\n {\n name: \"numberOfSubAccounts\",\n type: \"u16\"\n },\n {\n name: \"numberOfSubAccountsCreated\",\n type: \"u16\"\n },\n {\n name: \"isReferrer\",\n type: \"bool\"\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 51\n ]\n }\n }\n ]\n }\n }\n ],\n types: [\n {\n name: \"OrderParams\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"orderType\",\n type: {\n defined: \"OrderType\"\n }\n },\n {\n name: \"marketType\",\n type: {\n defined: \"MarketType\"\n }\n },\n {\n name: \"direction\",\n type: {\n defined: \"PositionDirection\"\n }\n },\n {\n name: \"userOrderId\",\n type: \"u8\"\n },\n {\n name: \"baseAssetAmount\",\n type: \"u64\"\n },\n {\n name: \"price\",\n type: \"u64\"\n },\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"reduceOnly\",\n type: \"bool\"\n },\n {\n name: \"postOnly\",\n type: \"bool\"\n },\n {\n name: \"immediateOrCancel\",\n type: \"bool\"\n },\n {\n name: \"maxTs\",\n type: {\n option: \"i64\"\n }\n },\n {\n name: \"triggerPrice\",\n type: {\n option: \"u64\"\n }\n },\n {\n name: \"triggerCondition\",\n type: {\n defined: \"OrderTriggerCondition\"\n }\n },\n {\n name: \"oraclePriceOffset\",\n type: {\n option: \"i32\"\n }\n },\n {\n name: \"auctionDuration\",\n type: {\n option: \"u8\"\n }\n },\n {\n name: \"auctionStartPrice\",\n type: {\n option: \"i64\"\n }\n },\n {\n name: \"auctionEndPrice\",\n type: {\n option: \"i64\"\n }\n }\n ]\n }\n },\n {\n name: \"LiquidatePerpRecord\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"oraclePrice\",\n type: \"i64\"\n },\n {\n name: \"baseAssetAmount\",\n type: \"i64\"\n },\n {\n name: \"quoteAssetAmount\",\n type: \"i64\"\n },\n {\n name: \"lpShares\",\n type: \"u64\"\n },\n {\n name: \"fillRecordId\",\n type: \"u64\"\n },\n {\n name: \"userOrderId\",\n type: \"u32\"\n },\n {\n name: \"liquidatorOrderId\",\n type: \"u32\"\n },\n {\n name: \"liquidatorFee\",\n type: \"u64\"\n },\n {\n name: \"ifFee\",\n type: \"u64\"\n }\n ]\n }\n },\n {\n name: \"LiquidateSpotRecord\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"assetMarketIndex\",\n type: \"u16\"\n },\n {\n name: \"assetPrice\",\n type: \"i64\"\n },\n {\n name: \"assetTransfer\",\n type: \"u128\"\n },\n {\n name: \"liabilityMarketIndex\",\n type: \"u16\"\n },\n {\n name: \"liabilityPrice\",\n type: \"i64\"\n },\n {\n name: \"liabilityTransfer\",\n type: \"u128\"\n },\n {\n name: \"ifFee\",\n type: \"u64\"\n }\n ]\n }\n },\n {\n name: \"LiquidateBorrowForPerpPnlRecord\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"perpMarketIndex\",\n type: \"u16\"\n },\n {\n name: \"marketOraclePrice\",\n type: \"i64\"\n },\n {\n name: \"pnlTransfer\",\n type: \"u128\"\n },\n {\n name: \"liabilityMarketIndex\",\n type: \"u16\"\n },\n {\n name: \"liabilityPrice\",\n type: \"i64\"\n },\n {\n name: \"liabilityTransfer\",\n type: \"u128\"\n }\n ]\n }\n },\n {\n name: \"LiquidatePerpPnlForDepositRecord\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"perpMarketIndex\",\n type: \"u16\"\n },\n {\n name: \"marketOraclePrice\",\n type: \"i64\"\n },\n {\n name: \"pnlTransfer\",\n type: \"u128\"\n },\n {\n name: \"assetMarketIndex\",\n type: \"u16\"\n },\n {\n name: \"assetPrice\",\n type: \"i64\"\n },\n {\n name: \"assetTransfer\",\n type: \"u128\"\n }\n ]\n }\n },\n {\n name: \"PerpBankruptcyRecord\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"pnl\",\n type: \"i128\"\n },\n {\n name: \"ifPayment\",\n type: \"u128\"\n },\n {\n name: \"clawbackUser\",\n type: {\n option: \"publicKey\"\n }\n },\n {\n name: \"clawbackUserPayment\",\n type: {\n option: \"u128\"\n }\n },\n {\n name: \"cumulativeFundingRateDelta\",\n type: \"i128\"\n }\n ]\n }\n },\n {\n name: \"SpotBankruptcyRecord\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"borrowAmount\",\n type: \"u128\"\n },\n {\n name: \"ifPayment\",\n type: \"u128\"\n },\n {\n name: \"cumulativeDepositInterestDelta\",\n type: \"u128\"\n }\n ]\n }\n },\n {\n name: \"HistoricalOracleData\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"lastOraclePrice\",\n type: \"i64\"\n },\n {\n name: \"lastOracleConf\",\n type: \"u64\"\n },\n {\n name: \"lastOracleDelay\",\n type: \"i64\"\n },\n {\n name: \"lastOraclePriceTwap\",\n type: \"i64\"\n },\n {\n name: \"lastOraclePriceTwap5min\",\n type: \"i64\"\n },\n {\n name: \"lastOraclePriceTwapTs\",\n type: \"i64\"\n }\n ]\n }\n },\n {\n name: \"HistoricalIndexData\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"lastIndexBidPrice\",\n type: \"u64\"\n },\n {\n name: \"lastIndexAskPrice\",\n type: \"u64\"\n },\n {\n name: \"lastIndexPriceTwap\",\n type: \"u64\"\n },\n {\n name: \"lastIndexPriceTwap5min\",\n type: \"u64\"\n },\n {\n name: \"lastIndexPriceTwapTs\",\n type: \"i64\"\n }\n ]\n }\n },\n {\n name: \"InsuranceClaim\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"revenueWithdrawSinceLastSettle\",\n type: \"u64\"\n },\n {\n name: \"maxRevenueWithdrawPerPeriod\",\n type: \"u64\"\n },\n {\n name: \"quoteMaxInsurance\",\n type: \"u64\"\n },\n {\n name: \"quoteSettledInsurance\",\n type: \"u64\"\n },\n {\n name: \"lastRevenueWithdrawTs\",\n type: \"i64\"\n }\n ]\n }\n },\n {\n name: \"PoolBalance\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"scaledBalance\",\n type: \"u128\"\n },\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 6\n ]\n }\n }\n ]\n }\n },\n {\n name: \"AMM\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"oracle\",\n type: \"publicKey\"\n },\n {\n name: \"historicalOracleData\",\n type: {\n defined: \"HistoricalOracleData\"\n }\n },\n {\n name: \"baseAssetAmountPerLp\",\n type: \"i128\"\n },\n {\n name: \"quoteAssetAmountPerLp\",\n type: \"i128\"\n },\n {\n name: \"feePool\",\n type: {\n defined: \"PoolBalance\"\n }\n },\n {\n name: \"baseAssetReserve\",\n type: \"u128\"\n },\n {\n name: \"quoteAssetReserve\",\n type: \"u128\"\n },\n {\n name: \"concentrationCoef\",\n type: \"u128\"\n },\n {\n name: \"minBaseAssetReserve\",\n type: \"u128\"\n },\n {\n name: \"maxBaseAssetReserve\",\n type: \"u128\"\n },\n {\n name: \"sqrtK\",\n type: \"u128\"\n },\n {\n name: \"pegMultiplier\",\n type: \"u128\"\n },\n {\n name: \"terminalQuoteAssetReserve\",\n type: \"u128\"\n },\n {\n name: \"baseAssetAmountLong\",\n type: \"i128\"\n },\n {\n name: \"baseAssetAmountShort\",\n type: \"i128\"\n },\n {\n name: \"baseAssetAmountWithAmm\",\n type: \"i128\"\n },\n {\n name: \"baseAssetAmountWithUnsettledLp\",\n type: \"i128\"\n },\n {\n name: \"maxOpenInterest\",\n type: \"u128\"\n },\n {\n name: \"quoteAssetAmount\",\n type: \"i128\"\n },\n {\n name: \"quoteEntryAmountLong\",\n type: \"i128\"\n },\n {\n name: \"quoteEntryAmountShort\",\n type: \"i128\"\n },\n {\n name: \"quoteBreakEvenAmountLong\",\n type: \"i128\"\n },\n {\n name: \"quoteBreakEvenAmountShort\",\n type: \"i128\"\n },\n {\n name: \"userLpShares\",\n type: \"u128\"\n },\n {\n name: \"lastFundingRate\",\n type: \"i64\"\n },\n {\n name: \"lastFundingRateLong\",\n type: \"i64\"\n },\n {\n name: \"lastFundingRateShort\",\n type: \"i64\"\n },\n {\n name: \"last24hAvgFundingRate\",\n type: \"i64\"\n },\n {\n name: \"totalFee\",\n type: \"i128\"\n },\n {\n name: \"totalMmFee\",\n type: \"i128\"\n },\n {\n name: \"totalExchangeFee\",\n type: \"u128\"\n },\n {\n name: \"totalFeeMinusDistributions\",\n type: \"i128\"\n },\n {\n name: \"totalFeeWithdrawn\",\n type: \"u128\"\n },\n {\n name: \"totalLiquidationFee\",\n type: \"u128\"\n },\n {\n name: \"cumulativeFundingRateLong\",\n type: \"i128\"\n },\n {\n name: \"cumulativeFundingRateShort\",\n type: \"i128\"\n },\n {\n name: \"totalSocialLoss\",\n type: \"u128\"\n },\n {\n name: \"askBaseAssetReserve\",\n type: \"u128\"\n },\n {\n name: \"askQuoteAssetReserve\",\n type: \"u128\"\n },\n {\n name: \"bidBaseAssetReserve\",\n type: \"u128\"\n },\n {\n name: \"bidQuoteAssetReserve\",\n type: \"u128\"\n },\n {\n name: \"lastOracleNormalisedPrice\",\n type: \"i64\"\n },\n {\n name: \"lastOracleReservePriceSpreadPct\",\n type: \"i64\"\n },\n {\n name: \"lastBidPriceTwap\",\n type: \"u64\"\n },\n {\n name: \"lastAskPriceTwap\",\n type: \"u64\"\n },\n {\n name: \"lastMarkPriceTwap\",\n type: \"u64\"\n },\n {\n name: \"lastMarkPriceTwap5min\",\n type: \"u64\"\n },\n {\n name: \"lastUpdateSlot\",\n type: \"u64\"\n },\n {\n name: \"lastOracleConfPct\",\n type: \"u64\"\n },\n {\n name: \"netRevenueSinceLastFunding\",\n type: \"i64\"\n },\n {\n name: \"lastFundingRateTs\",\n type: \"i64\"\n },\n {\n name: \"fundingPeriod\",\n type: \"i64\"\n },\n {\n name: \"orderStepSize\",\n type: \"u64\"\n },\n {\n name: \"orderTickSize\",\n type: \"u64\"\n },\n {\n name: \"minOrderSize\",\n type: \"u64\"\n },\n {\n name: \"maxPositionSize\",\n type: \"u64\"\n },\n {\n name: \"volume24h\",\n type: \"u64\"\n },\n {\n name: \"longIntensityVolume\",\n type: \"u64\"\n },\n {\n name: \"shortIntensityVolume\",\n type: \"u64\"\n },\n {\n name: \"lastTradeTs\",\n type: \"i64\"\n },\n {\n name: \"markStd\",\n type: \"u64\"\n },\n {\n name: \"oracleStd\",\n type: \"u64\"\n },\n {\n name: \"lastMarkPriceTwapTs\",\n type: \"i64\"\n },\n {\n name: \"baseSpread\",\n type: \"u32\"\n },\n {\n name: \"maxSpread\",\n type: \"u32\"\n },\n {\n name: \"longSpread\",\n type: \"u32\"\n },\n {\n name: \"shortSpread\",\n type: \"u32\"\n },\n {\n name: \"longIntensityCount\",\n type: \"u32\"\n },\n {\n name: \"shortIntensityCount\",\n type: \"u32\"\n },\n {\n name: \"maxFillReserveFraction\",\n type: \"u16\"\n },\n {\n name: \"maxSlippageRatio\",\n type: \"u16\"\n },\n {\n name: \"curveUpdateIntensity\",\n type: \"u8\"\n },\n {\n name: \"ammJitIntensity\",\n type: \"u8\"\n },\n {\n name: \"oracleSource\",\n type: {\n defined: \"OracleSource\"\n }\n },\n {\n name: \"lastOracleValid\",\n type: \"bool\"\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 48\n ]\n }\n }\n ]\n }\n },\n {\n name: \"InsuranceFund\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"vault\",\n type: \"publicKey\"\n },\n {\n name: \"totalShares\",\n type: \"u128\"\n },\n {\n name: \"userShares\",\n type: \"u128\"\n },\n {\n name: \"sharesBase\",\n type: \"u128\"\n },\n {\n name: \"unstakingPeriod\",\n type: \"i64\"\n },\n {\n name: \"lastRevenueSettleTs\",\n type: \"i64\"\n },\n {\n name: \"revenueSettlePeriod\",\n type: \"i64\"\n },\n {\n name: \"totalFactor\",\n type: \"u32\"\n },\n {\n name: \"userFactor\",\n type: \"u32\"\n }\n ]\n }\n },\n {\n name: \"OracleGuardRails\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"priceDivergence\",\n type: {\n defined: \"PriceDivergenceGuardRails\"\n }\n },\n {\n name: \"validity\",\n type: {\n defined: \"ValidityGuardRails\"\n }\n }\n ]\n }\n },\n {\n name: \"PriceDivergenceGuardRails\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"markOracleDivergenceNumerator\",\n type: \"u64\"\n },\n {\n name: \"markOracleDivergenceDenominator\",\n type: \"u64\"\n }\n ]\n }\n },\n {\n name: \"ValidityGuardRails\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"slotsBeforeStaleForAmm\",\n type: \"i64\"\n },\n {\n name: \"slotsBeforeStaleForMargin\",\n type: \"i64\"\n },\n {\n name: \"confidenceIntervalMaxSize\",\n type: \"u64\"\n },\n {\n name: \"tooVolatileRatio\",\n type: \"i64\"\n }\n ]\n }\n },\n {\n name: \"FeeStructure\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"feeTiers\",\n type: {\n array: [\n {\n defined: \"FeeTier\"\n },\n 10\n ]\n }\n },\n {\n name: \"fillerRewardStructure\",\n type: {\n defined: \"OrderFillerRewardStructure\"\n }\n },\n {\n name: \"referrerRewardEpochUpperBound\",\n type: \"u64\"\n },\n {\n name: \"flatFillerFee\",\n type: \"u64\"\n }\n ]\n }\n },\n {\n name: \"FeeTier\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"feeNumerator\",\n type: \"u32\"\n },\n {\n name: \"feeDenominator\",\n type: \"u32\"\n },\n {\n name: \"makerRebateNumerator\",\n type: \"u32\"\n },\n {\n name: \"makerRebateDenominator\",\n type: \"u32\"\n },\n {\n name: \"referrerRewardNumerator\",\n type: \"u32\"\n },\n {\n name: \"referrerRewardDenominator\",\n type: \"u32\"\n },\n {\n name: \"refereeFeeNumerator\",\n type: \"u32\"\n },\n {\n name: \"refereeFeeDenominator\",\n type: \"u32\"\n }\n ]\n }\n },\n {\n name: \"OrderFillerRewardStructure\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"rewardNumerator\",\n type: \"u32\"\n },\n {\n name: \"rewardDenominator\",\n type: \"u32\"\n },\n {\n name: \"timeBasedRewardLowerBound\",\n type: \"u128\"\n }\n ]\n }\n },\n {\n name: \"UserFees\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"totalFeePaid\",\n type: \"u64\"\n },\n {\n name: \"totalFeeRebate\",\n type: \"u64\"\n },\n {\n name: \"totalTokenDiscount\",\n type: \"u64\"\n },\n {\n name: \"totalRefereeDiscount\",\n type: \"u64\"\n },\n {\n name: \"totalReferrerReward\",\n type: \"u64\"\n },\n {\n name: \"currentEpochReferrerReward\",\n type: \"u64\"\n }\n ]\n }\n },\n {\n name: \"SpotPosition\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"scaledBalance\",\n type: \"u64\"\n },\n {\n name: \"openBids\",\n type: \"i64\"\n },\n {\n name: \"openAsks\",\n type: \"i64\"\n },\n {\n name: \"cumulativeDeposits\",\n type: \"i64\"\n },\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"balanceType\",\n type: {\n defined: \"SpotBalanceType\"\n }\n },\n {\n name: \"openOrders\",\n type: \"u8\"\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 4\n ]\n }\n }\n ]\n }\n },\n {\n name: \"PerpPosition\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"lastCumulativeFundingRate\",\n type: \"i64\"\n },\n {\n name: \"baseAssetAmount\",\n type: \"i64\"\n },\n {\n name: \"quoteAssetAmount\",\n type: \"i64\"\n },\n {\n name: \"quoteBreakEvenAmount\",\n type: \"i64\"\n },\n {\n name: \"quoteEntryAmount\",\n type: \"i64\"\n },\n {\n name: \"openBids\",\n type: \"i64\"\n },\n {\n name: \"openAsks\",\n type: \"i64\"\n },\n {\n name: \"settledPnl\",\n type: \"i64\"\n },\n {\n name: \"lpShares\",\n type: \"u64\"\n },\n {\n name: \"lastBaseAssetAmountPerLp\",\n type: \"i64\"\n },\n {\n name: \"lastQuoteAssetAmountPerLp\",\n type: \"i64\"\n },\n {\n name: \"remainderBaseAssetAmount\",\n type: \"i32\"\n },\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"openOrders\",\n type: \"u8\"\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 1\n ]\n }\n }\n ]\n }\n },\n {\n name: \"Order\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"slot\",\n type: \"u64\"\n },\n {\n name: \"price\",\n type: \"u64\"\n },\n {\n name: \"baseAssetAmount\",\n type: \"u64\"\n },\n {\n name: \"baseAssetAmountFilled\",\n type: \"u64\"\n },\n {\n name: \"quoteAssetAmountFilled\",\n type: \"u64\"\n },\n {\n name: \"triggerPrice\",\n type: \"u64\"\n },\n {\n name: \"auctionStartPrice\",\n type: \"i64\"\n },\n {\n name: \"auctionEndPrice\",\n type: \"i64\"\n },\n {\n name: \"maxTs\",\n type: \"i64\"\n },\n {\n name: \"oraclePriceOffset\",\n type: \"i32\"\n },\n {\n name: \"orderId\",\n type: \"u32\"\n },\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"status\",\n type: {\n defined: \"OrderStatus\"\n }\n },\n {\n name: \"orderType\",\n type: {\n defined: \"OrderType\"\n }\n },\n {\n name: \"marketType\",\n type: {\n defined: \"MarketType\"\n }\n },\n {\n name: \"userOrderId\",\n type: \"u8\"\n },\n {\n name: \"existingPositionDirection\",\n type: {\n defined: \"PositionDirection\"\n }\n },\n {\n name: \"direction\",\n type: {\n defined: \"PositionDirection\"\n }\n },\n {\n name: \"reduceOnly\",\n type: \"bool\"\n },\n {\n name: \"postOnly\",\n type: \"bool\"\n },\n {\n name: \"immediateOrCancel\",\n type: \"bool\"\n },\n {\n name: \"triggerCondition\",\n type: {\n defined: \"OrderTriggerCondition\"\n }\n },\n {\n name: \"auctionDuration\",\n type: \"u8\"\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 3\n ]\n }\n }\n ]\n }\n },\n {\n name: \"SwapDirection\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Add\"\n },\n {\n name: \"Remove\"\n }\n ]\n }\n },\n {\n name: \"PositionDirection\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Long\"\n },\n {\n name: \"Short\"\n }\n ]\n }\n },\n {\n name: \"SpotFulfillmentType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"SerumV3\"\n },\n {\n name: \"None\"\n }\n ]\n }\n },\n {\n name: \"TwapPeriod\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"FundingPeriod\"\n },\n {\n name: \"FiveMin\"\n }\n ]\n }\n },\n {\n name: \"LiquidationMultiplierType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Discount\"\n },\n {\n name: \"Premium\"\n }\n ]\n }\n },\n {\n name: \"MarginRequirementType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Initial\"\n },\n {\n name: \"Maintenance\"\n }\n ]\n }\n },\n {\n name: \"OracleValidity\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Invalid\"\n },\n {\n name: \"TooVolatile\"\n },\n {\n name: \"TooUncertain\"\n },\n {\n name: \"StaleForMargin\"\n },\n {\n name: \"InsufficientDataPoints\"\n },\n {\n name: \"StaleForAMM\"\n },\n {\n name: \"Valid\"\n }\n ]\n }\n },\n {\n name: \"DriftAction\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"UpdateFunding\"\n },\n {\n name: \"SettlePnl\"\n },\n {\n name: \"TriggerOrder\"\n },\n {\n name: \"FillOrderMatch\"\n },\n {\n name: \"FillOrderAmm\"\n },\n {\n name: \"Liquidate\"\n },\n {\n name: \"MarginCalc\"\n },\n {\n name: \"UpdateTwap\"\n },\n {\n name: \"UpdateAMMCurve\"\n }\n ]\n }\n },\n {\n name: \"PositionUpdateType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Open\"\n },\n {\n name: \"Increase\"\n },\n {\n name: \"Reduce\"\n },\n {\n name: \"Close\"\n },\n {\n name: \"Flip\"\n }\n ]\n }\n },\n {\n name: \"DepositExplanation\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"None\"\n },\n {\n name: \"Transfer\"\n }\n ]\n }\n },\n {\n name: \"DepositDirection\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Deposit\"\n },\n {\n name: \"Withdraw\"\n }\n ]\n }\n },\n {\n name: \"OrderAction\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Place\"\n },\n {\n name: \"Cancel\"\n },\n {\n name: \"Fill\"\n },\n {\n name: \"Trigger\"\n },\n {\n name: \"Expire\"\n }\n ]\n }\n },\n {\n name: \"OrderActionExplanation\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"None\"\n },\n {\n name: \"InsufficientFreeCollateral\"\n },\n {\n name: \"OraclePriceBreachedLimitPrice\"\n },\n {\n name: \"MarketOrderFilledToLimitPrice\"\n },\n {\n name: \"OrderExpired\"\n },\n {\n name: \"Liquidation\"\n },\n {\n name: \"OrderFilledWithAMM\"\n },\n {\n name: \"OrderFilledWithAMMJit\"\n },\n {\n name: \"OrderFilledWithMatch\"\n },\n {\n name: \"OrderFilledWithMatchJit\"\n },\n {\n name: \"MarketExpired\"\n },\n {\n name: \"RiskingIncreasingOrder\"\n },\n {\n name: \"ReduceOnlyOrderIncreasedPosition\"\n },\n {\n name: \"OrderFillWithSerum\"\n },\n {\n name: \"NoBorrowLiquidity\"\n }\n ]\n }\n },\n {\n name: \"LPAction\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"AddLiquidity\"\n },\n {\n name: \"RemoveLiquidity\"\n },\n {\n name: \"SettleLiquidity\"\n }\n ]\n }\n },\n {\n name: \"LiquidationType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"LiquidatePerp\"\n },\n {\n name: \"LiquidateSpot\"\n },\n {\n name: \"LiquidateBorrowForPerpPnl\"\n },\n {\n name: \"LiquidatePerpPnlForDeposit\"\n },\n {\n name: \"PerpBankruptcy\"\n },\n {\n name: \"SpotBankruptcy\"\n }\n ]\n }\n },\n {\n name: \"SettlePnlExplanation\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"None\"\n },\n {\n name: \"ExpiredPosition\"\n }\n ]\n }\n },\n {\n name: \"StakeAction\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Stake\"\n },\n {\n name: \"UnstakeRequest\"\n },\n {\n name: \"UnstakeCancelRequest\"\n },\n {\n name: \"Unstake\"\n }\n ]\n }\n },\n {\n name: \"PerpFulfillmentMethod\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"AMM\",\n fields: [\n {\n option: \"u64\"\n }\n ]\n },\n {\n name: \"Match\"\n }\n ]\n }\n },\n {\n name: \"SpotFulfillmentMethod\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"SerumV3\"\n },\n {\n name: \"Match\"\n }\n ]\n }\n },\n {\n name: \"OracleSource\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Pyth\"\n },\n {\n name: \"Switchboard\"\n },\n {\n name: \"QuoteAsset\"\n }\n ]\n }\n },\n {\n name: \"MarketStatus\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Initialized\"\n },\n {\n name: \"Active\"\n },\n {\n name: \"FundingPaused\"\n },\n {\n name: \"AmmPaused\"\n },\n {\n name: \"FillPaused\"\n },\n {\n name: \"WithdrawPaused\"\n },\n {\n name: \"ReduceOnly\"\n },\n {\n name: \"Settlement\"\n },\n {\n name: \"Delisted\"\n }\n ]\n }\n },\n {\n name: \"ContractType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Perpetual\"\n },\n {\n name: \"Future\"\n }\n ]\n }\n },\n {\n name: \"ContractTier\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"A\"\n },\n {\n name: \"B\"\n },\n {\n name: \"C\"\n },\n {\n name: \"Speculative\"\n },\n {\n name: \"Isolated\"\n }\n ]\n }\n },\n {\n name: \"SpotBalanceType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Deposit\"\n },\n {\n name: \"Borrow\"\n }\n ]\n }\n },\n {\n name: \"SpotFulfillmentConfigStatus\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Enabled\"\n },\n {\n name: \"Disabled\"\n }\n ]\n }\n },\n {\n name: \"AssetTier\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Collateral\"\n },\n {\n name: \"Protected\"\n },\n {\n name: \"Cross\"\n },\n {\n name: \"Isolated\"\n },\n {\n name: \"Unlisted\"\n }\n ]\n }\n },\n {\n name: \"ExchangeStatus\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Active\"\n },\n {\n name: \"FundingPaused\"\n },\n {\n name: \"AmmPaused\"\n },\n {\n name: \"FillPaused\"\n },\n {\n name: \"LiqPaused\"\n },\n {\n name: \"WithdrawPaused\"\n },\n {\n name: \"Paused\"\n }\n ]\n }\n },\n {\n name: \"UserStatus\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Active\"\n },\n {\n name: \"BeingLiquidated\"\n },\n {\n name: \"Bankrupt\"\n }\n ]\n }\n },\n {\n name: \"AssetType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Base\"\n },\n {\n name: \"Quote\"\n }\n ]\n }\n },\n {\n name: \"OrderStatus\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Init\"\n },\n {\n name: \"Open\"\n },\n {\n name: \"Filled\"\n },\n {\n name: \"Canceled\"\n }\n ]\n }\n },\n {\n name: \"OrderType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Market\"\n },\n {\n name: \"Limit\"\n },\n {\n name: \"TriggerMarket\"\n },\n {\n name: \"TriggerLimit\"\n },\n {\n name: \"Oracle\"\n }\n ]\n }\n },\n {\n name: \"OrderTriggerCondition\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Above\"\n },\n {\n name: \"Below\"\n },\n {\n name: \"TriggeredAbove\"\n },\n {\n name: \"TriggeredBelow\"\n }\n ]\n }\n },\n {\n name: \"MarketType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Spot\"\n },\n {\n name: \"Perp\"\n }\n ]\n }\n }\n ],\n events: [\n {\n name: \"NewUserRecord\",\n fields: [\n {\n name: \"ts\",\n type: \"i64\",\n index: false\n },\n {\n name: \"userAuthority\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"user\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"subAccountId\",\n type: \"u16\",\n index: false\n },\n {\n name: \"name\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n },\n index: false\n },\n {\n name: \"referrer\",\n type: \"publicKey\",\n index: false\n }\n ]\n },\n {\n name: \"DepositRecord\",\n fields: [\n {\n name: \"ts\",\n type: \"i64\",\n index: false\n },\n {\n name: \"userAuthority\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"user\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"direction\",\n type: {\n defined: \"DepositDirection\"\n },\n index: false\n },\n {\n name: \"depositRecordId\",\n type: \"u64\",\n index: false\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false\n },\n {\n name: \"marketIndex\",\n type: \"u16\",\n index: false\n },\n {\n name: \"oraclePrice\",\n type: \"i64\",\n index: false\n },\n {\n name: \"marketDepositBalance\",\n type: \"u128\",\n index: false\n },\n {\n name: \"marketWithdrawBalance\",\n type: \"u128\",\n index: false\n },\n {\n name: \"marketCumulativeDepositInterest\",\n type: \"u128\",\n index: false\n },\n {\n name: \"marketCumulativeBorrowInterest\",\n type: \"u128\",\n index: false\n },\n {\n name: \"totalDepositsAfter\",\n type: \"u64\",\n index: false\n },\n {\n name: \"totalWithdrawsAfter\",\n type: \"u64\",\n index: false\n },\n {\n name: \"explanation\",\n type: {\n defined: \"DepositExplanation\"\n },\n index: false\n },\n {\n name: \"transferUser\",\n type: {\n option: \"publicKey\"\n },\n index: false\n }\n ]\n },\n {\n name: \"SpotInterestRecord\",\n fields: [\n {\n name: \"ts\",\n type: \"i64\",\n index: false\n },\n {\n name: \"marketIndex\",\n type: \"u16\",\n index: false\n },\n {\n name: \"depositBalance\",\n type: \"u128\",\n index: false\n },\n {\n name: \"cumulativeDepositInterest\",\n type: \"u128\",\n index: false\n },\n {\n name: \"borrowBalance\",\n type: \"u128\",\n index: false\n },\n {\n name: \"cumulativeBorrowInterest\",\n type: \"u128\",\n index: false\n },\n {\n name: \"optimalUtilization\",\n type: \"u32\",\n index: false\n },\n {\n name: \"optimalBorrowRate\",\n type: \"u32\",\n index: false\n },\n {\n name: \"maxBorrowRate\",\n type: \"u32\",\n index: false\n }\n ]\n },\n {\n name: \"FundingPaymentRecord\",\n fields: [\n {\n name: \"ts\",\n type: \"i64\",\n index: false\n },\n {\n name: \"userAuthority\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"user\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"marketIndex\",\n type: \"u16\",\n index: false\n },\n {\n name: \"fundingPayment\",\n type: \"i64\",\n index: false\n },\n {\n name: \"baseAssetAmount\",\n type: \"i64\",\n index: false\n },\n {\n name: \"userLastCumulativeFunding\",\n type: \"i64\",\n index: false\n },\n {\n name: \"ammCumulativeFundingLong\",\n type: \"i128\",\n index: false\n },\n {\n name: \"ammCumulativeFundingShort\",\n type: \"i128\",\n index: false\n }\n ]\n },\n {\n name: \"FundingRateRecord\",\n fields: [\n {\n name: \"ts\",\n type: \"i64\",\n index: false\n },\n {\n name: \"recordId\",\n type: \"u64\",\n index: false\n },\n {\n name: \"marketIndex\",\n type: \"u16\",\n index: false\n },\n {\n name: \"fundingRate\",\n type: \"i64\",\n index: false\n },\n {\n name: \"fundingRateLong\",\n type: \"i128\",\n index: false\n },\n {\n name: \"fundingRateShort\",\n type: \"i128\",\n index: false\n },\n {\n name: \"cumulativeFundingRateLong\",\n type: \"i128\",\n index: false\n },\n {\n name: \"cumulativeFundingRateShort\",\n type: \"i128\",\n index: false\n },\n {\n name: \"oraclePriceTwap\",\n type: \"i64\",\n index: false\n },\n {\n name: \"markPriceTwap\",\n type: \"u64\",\n index: false\n },\n {\n name: \"periodRevenue\",\n type: \"i64\",\n index: false\n },\n {\n name: \"baseAssetAmountWithAmm\",\n type: \"i128\",\n index: false\n },\n {\n name: \"baseAssetAmountWithUnsettledLp\",\n type: \"i128\",\n index: false\n }\n ]\n },\n {\n name: \"CurveRecord\",\n fields: [\n {\n name: \"ts\",\n type: \"i64\",\n index: false\n },\n {\n name: \"recordId\",\n type: \"u64\",\n index: false\n },\n {\n name: \"pegMultiplierBefore\",\n type: \"u128\",\n index: false\n },\n {\n name: \"baseAssetReserveBefore\",\n type: \"u128\",\n index: false\n },\n {\n name: \"quoteAssetReserveBefore\",\n type: \"u128\",\n index: false\n },\n {\n name: \"sqrtKBefore\",\n type: \"u128\",\n index: false\n },\n {\n name: \"pegMultiplierAfter\",\n type: \"u128\",\n index: false\n },\n {\n name: \"baseAssetReserveAfter\",\n type: \"u128\",\n index: false\n },\n {\n name: \"quoteAssetReserveAfter\",\n type: \"u128\",\n index: false\n },\n {\n name: \"sqrtKAfter\",\n type: \"u128\",\n index: false\n },\n {\n name: \"baseAssetAmountLong\",\n type: \"u128\",\n index: false\n },\n {\n name: \"baseAssetAmountShort\",\n type: \"u128\",\n index: false\n },\n {\n name: \"baseAssetAmountWithAmm\",\n type: \"i128\",\n index: false\n },\n {\n name: \"totalFee\",\n type: \"i128\",\n index: false\n },\n {\n name: \"totalFeeMinusDistributions\",\n type: \"i128\",\n index: false\n },\n {\n name: \"adjustmentCost\",\n type: \"i128\",\n index: false\n },\n {\n name: \"oraclePrice\",\n type: \"i64\",\n index: false\n },\n {\n name: \"fillRecord\",\n type: \"u128\",\n index: false\n },\n {\n name: \"numberOfUsers\",\n type: \"u32\",\n index: false\n },\n {\n name: \"marketIndex\",\n type: \"u16\",\n index: false\n }\n ]\n },\n {\n name: \"OrderRecord\",\n fields: [\n {\n name: \"ts\",\n type: \"i64\",\n index: false\n },\n {\n name: \"user\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"order\",\n type: {\n defined: \"Order\"\n },\n index: false\n }\n ]\n },\n {\n name: \"OrderActionRecord\",\n fields: [\n {\n name: \"ts\",\n type: \"i64\",\n index: false\n },\n {\n name: \"action\",\n type: {\n defined: \"OrderAction\"\n },\n index: false\n },\n {\n name: \"actionExplanation\",\n type: {\n defined: \"OrderActionExplanation\"\n },\n index: false\n },\n {\n name: \"marketIndex\",\n type: \"u16\",\n index: false\n },\n {\n name: \"marketType\",\n type: {\n defined: \"MarketType\"\n },\n index: false\n },\n {\n name: \"filler\",\n type: {\n option: \"publicKey\"\n },\n index: false\n },\n {\n name: \"fillerReward\",\n type: {\n option: \"u64\"\n },\n index: false\n },\n {\n name: \"fillRecordId\",\n type: {\n option: \"u64\"\n },\n index: false\n },\n {\n name: \"baseAssetAmountFilled\",\n type: {\n option: \"u64\"\n },\n index: false\n },\n {\n name: \"quoteAssetAmountFilled\",\n type: {\n option: \"u64\"\n },\n index: false\n },\n {\n name: \"takerFee\",\n type: {\n option: \"u64\"\n },\n index: false\n },\n {\n name: \"makerFee\",\n type: {\n option: \"i64\"\n },\n index: false\n },\n {\n name: \"referrerReward\",\n type: {\n option: \"u32\"\n },\n index: false\n },\n {\n name: \"quoteAssetAmountSurplus\",\n type: {\n option: \"i64\"\n },\n index: false\n },\n {\n name: \"spotFulfillmentMethodFee\",\n type: {\n option: \"u64\"\n },\n index: false\n },\n {\n name: \"taker\",\n type: {\n option: \"publicKey\"\n },\n index: false\n },\n {\n name: \"takerOrderId\",\n type: {\n option: \"u32\"\n },\n index: false\n },\n {\n name: \"takerOrderDirection\",\n type: {\n option: {\n defined: \"PositionDirection\"\n }\n },\n index: false\n },\n {\n name: \"takerOrderBaseAssetAmount\",\n type: {\n option: \"u64\"\n },\n index: false\n },\n {\n name: \"takerOrderCumulativeBaseAssetAmountFilled\",\n type: {\n option: \"u64\"\n },\n index: false\n },\n {\n name: \"takerOrderCumulativeQuoteAssetAmountFilled\",\n type: {\n option: \"u64\"\n },\n index: false\n },\n {\n name: \"maker\",\n type: {\n option: \"publicKey\"\n },\n index: false\n },\n {\n name: \"makerOrderId\",\n type: {\n option: \"u32\"\n },\n index: false\n },\n {\n name: \"makerOrderDirection\",\n type: {\n option: {\n defined: \"PositionDirection\"\n }\n },\n index: false\n },\n {\n name: \"makerOrderBaseAssetAmount\",\n type: {\n option: \"u64\"\n },\n index: false\n },\n {\n name: \"makerOrderCumulativeBaseAssetAmountFilled\",\n type: {\n option: \"u64\"\n },\n index: false\n },\n {\n name: \"makerOrderCumulativeQuoteAssetAmountFilled\",\n type: {\n option: \"u64\"\n },\n index: false\n },\n {\n name: \"oraclePrice\",\n type: \"i64\",\n index: false\n }\n ]\n },\n {\n name: \"LPRecord\",\n fields: [\n {\n name: \"ts\",\n type: \"i64\",\n index: false\n },\n {\n name: \"user\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"action\",\n type: {\n defined: \"LPAction\"\n },\n index: false\n },\n {\n name: \"nShares\",\n type: \"u64\",\n index: false\n },\n {\n name: \"marketIndex\",\n type: \"u16\",\n index: false\n },\n {\n name: \"deltaBaseAssetAmount\",\n type: \"i64\",\n index: false\n },\n {\n name: \"deltaQuoteAssetAmount\",\n type: \"i64\",\n index: false\n },\n {\n name: \"pnl\",\n type: \"i64\",\n index: false\n }\n ]\n },\n {\n name: \"LiquidationRecord\",\n fields: [\n {\n name: \"ts\",\n type: \"i64\",\n index: false\n },\n {\n name: \"liquidationType\",\n type: {\n defined: \"LiquidationType\"\n },\n index: false\n },\n {\n name: \"user\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"liquidator\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"marginRequirement\",\n type: \"u128\",\n index: false\n },\n {\n name: \"totalCollateral\",\n type: \"i128\",\n index: false\n },\n {\n name: \"marginFreed\",\n type: \"u64\",\n index: false\n },\n {\n name: \"liquidationId\",\n type: \"u16\",\n index: false\n },\n {\n name: \"bankrupt\",\n type: \"bool\",\n index: false\n },\n {\n name: \"canceledOrderIds\",\n type: {\n vec: \"u32\"\n },\n index: false\n },\n {\n name: \"liquidatePerp\",\n type: {\n defined: \"LiquidatePerpRecord\"\n },\n index: false\n },\n {\n name: \"liquidateSpot\",\n type: {\n defined: \"LiquidateSpotRecord\"\n },\n index: false\n },\n {\n name: \"liquidateBorrowForPerpPnl\",\n type: {\n defined: \"LiquidateBorrowForPerpPnlRecord\"\n },\n index: false\n },\n {\n name: \"liquidatePerpPnlForDeposit\",\n type: {\n defined: \"LiquidatePerpPnlForDepositRecord\"\n },\n index: false\n },\n {\n name: \"perpBankruptcy\",\n type: {\n defined: \"PerpBankruptcyRecord\"\n },\n index: false\n },\n {\n name: \"spotBankruptcy\",\n type: {\n defined: \"SpotBankruptcyRecord\"\n },\n index: false\n }\n ]\n },\n {\n name: \"SettlePnlRecord\",\n fields: [\n {\n name: \"ts\",\n type: \"i64\",\n index: false\n },\n {\n name: \"user\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"marketIndex\",\n type: \"u16\",\n index: false\n },\n {\n name: \"pnl\",\n type: \"i128\",\n index: false\n },\n {\n name: \"baseAssetAmount\",\n type: \"i64\",\n index: false\n },\n {\n name: \"quoteAssetAmountAfter\",\n type: \"i64\",\n index: false\n },\n {\n name: \"quoteEntryAmount\",\n type: \"i64\",\n index: false\n },\n {\n name: \"settlePrice\",\n type: \"i64\",\n index: false\n },\n {\n name: \"explanation\",\n type: {\n defined: \"SettlePnlExplanation\"\n },\n index: false\n }\n ]\n },\n {\n name: \"InsuranceFundRecord\",\n fields: [\n {\n name: \"ts\",\n type: \"i64\",\n index: false\n },\n {\n name: \"spotMarketIndex\",\n type: \"u16\",\n index: false\n },\n {\n name: \"perpMarketIndex\",\n type: \"u16\",\n index: false\n },\n {\n name: \"userIfFactor\",\n type: \"u32\",\n index: false\n },\n {\n name: \"totalIfFactor\",\n type: \"u32\",\n index: false\n },\n {\n name: \"vaultAmountBefore\",\n type: \"u64\",\n index: false\n },\n {\n name: \"insuranceVaultAmountBefore\",\n type: \"u64\",\n index: false\n },\n {\n name: \"totalIfSharesBefore\",\n type: \"u128\",\n index: false\n },\n {\n name: \"totalIfSharesAfter\",\n type: \"u128\",\n index: false\n },\n {\n name: \"amount\",\n type: \"i64\",\n index: false\n }\n ]\n },\n {\n name: \"InsuranceFundStakeRecord\",\n fields: [\n {\n name: \"ts\",\n type: \"i64\",\n index: false\n },\n {\n name: \"userAuthority\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"action\",\n type: {\n defined: \"StakeAction\"\n },\n index: false\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false\n },\n {\n name: \"marketIndex\",\n type: \"u16\",\n index: false\n },\n {\n name: \"insuranceVaultAmountBefore\",\n type: \"u64\",\n index: false\n },\n {\n name: \"ifSharesBefore\",\n type: \"u128\",\n index: false\n },\n {\n name: \"userIfSharesBefore\",\n type: \"u128\",\n index: false\n },\n {\n name: \"totalIfSharesBefore\",\n type: \"u128\",\n index: false\n },\n {\n name: \"ifSharesAfter\",\n type: \"u128\",\n index: false\n },\n {\n name: \"userIfSharesAfter\",\n type: \"u128\",\n index: false\n },\n {\n name: \"totalIfSharesAfter\",\n type: \"u128\",\n index: false\n }\n ]\n }\n ],\n errors: [\n {\n code: 6e3,\n name: \"InvalidSpotMarketAuthority\",\n msg: \"Invalid Spot Market Authority\"\n },\n {\n code: 6001,\n name: \"InvalidInsuranceFundAuthority\",\n msg: \"Clearing house not insurance fund authority\"\n },\n {\n code: 6002,\n name: \"InsufficientDeposit\",\n msg: \"Insufficient deposit\"\n },\n {\n code: 6003,\n name: \"InsufficientCollateral\",\n msg: \"Insufficient collateral\"\n },\n {\n code: 6004,\n name: \"SufficientCollateral\",\n msg: \"Sufficient collateral\"\n },\n {\n code: 6005,\n name: \"MaxNumberOfPositions\",\n msg: \"Max number of positions taken\"\n },\n {\n code: 6006,\n name: \"AdminControlsPricesDisabled\",\n msg: \"Admin Controls Prices Disabled\"\n },\n {\n code: 6007,\n name: \"MarketDelisted\",\n msg: \"Market Delisted\"\n },\n {\n code: 6008,\n name: \"MarketIndexAlreadyInitialized\",\n msg: \"Market Index Already Initialized\"\n },\n {\n code: 6009,\n name: \"UserAccountAndUserPositionsAccountMismatch\",\n msg: \"User Account And User Positions Account Mismatch\"\n },\n {\n code: 6010,\n name: \"UserHasNoPositionInMarket\",\n msg: \"User Has No Position In Market\"\n },\n {\n code: 6011,\n name: \"InvalidInitialPeg\",\n msg: \"Invalid Initial Peg\"\n },\n {\n code: 6012,\n name: \"InvalidRepegRedundant\",\n msg: \"AMM repeg already configured with amt given\"\n },\n {\n code: 6013,\n name: \"InvalidRepegDirection\",\n msg: \"AMM repeg incorrect repeg direction\"\n },\n {\n code: 6014,\n name: \"InvalidRepegProfitability\",\n msg: \"AMM repeg out of bounds pnl\"\n },\n {\n code: 6015,\n name: \"SlippageOutsideLimit\",\n msg: \"Slippage Outside Limit Price\"\n },\n {\n code: 6016,\n name: \"OrderSizeTooSmall\",\n msg: \"Order Size Too Small\"\n },\n {\n code: 6017,\n name: \"InvalidUpdateK\",\n msg: \"Price change too large when updating K\"\n },\n {\n code: 6018,\n name: \"AdminWithdrawTooLarge\",\n msg: \"Admin tried to withdraw amount larger than fees collected\"\n },\n {\n code: 6019,\n name: \"MathError\",\n msg: \"Math Error\"\n },\n {\n code: 6020,\n name: \"BnConversionError\",\n msg: \"Conversion to u128/u64 failed with an overflow or underflow\"\n },\n {\n code: 6021,\n name: \"ClockUnavailable\",\n msg: \"Clock unavailable\"\n },\n {\n code: 6022,\n name: \"UnableToLoadOracle\",\n msg: \"Unable To Load Oracles\"\n },\n {\n code: 6023,\n name: \"PriceBandsBreached\",\n msg: \"Price Bands Breached\"\n },\n {\n code: 6024,\n name: \"ExchangePaused\",\n msg: \"Exchange is paused\"\n },\n {\n code: 6025,\n name: \"InvalidWhitelistToken\",\n msg: \"Invalid whitelist token\"\n },\n {\n code: 6026,\n name: \"WhitelistTokenNotFound\",\n msg: \"Whitelist token not found\"\n },\n {\n code: 6027,\n name: \"InvalidDiscountToken\",\n msg: \"Invalid discount token\"\n },\n {\n code: 6028,\n name: \"DiscountTokenNotFound\",\n msg: \"Discount token not found\"\n },\n {\n code: 6029,\n name: \"ReferrerNotFound\",\n msg: \"Referrer not found\"\n },\n {\n code: 6030,\n name: \"ReferrerStatsNotFound\",\n msg: \"ReferrerNotFound\"\n },\n {\n code: 6031,\n name: \"ReferrerMustBeWritable\",\n msg: \"ReferrerMustBeWritable\"\n },\n {\n code: 6032,\n name: \"ReferrerStatsMustBeWritable\",\n msg: \"ReferrerMustBeWritable\"\n },\n {\n code: 6033,\n name: \"ReferrerAndReferrerStatsAuthorityUnequal\",\n msg: \"ReferrerAndReferrerStatsAuthorityUnequal\"\n },\n {\n code: 6034,\n name: \"InvalidReferrer\",\n msg: \"InvalidReferrer\"\n },\n {\n code: 6035,\n name: \"InvalidOracle\",\n msg: \"InvalidOracle\"\n },\n {\n code: 6036,\n name: \"OracleNotFound\",\n msg: \"OracleNotFound\"\n },\n {\n code: 6037,\n name: \"LiquidationsBlockedByOracle\",\n msg: \"Liquidations Blocked By Oracle\"\n },\n {\n code: 6038,\n name: \"MaxDeposit\",\n msg: \"Can not deposit more than max deposit\"\n },\n {\n code: 6039,\n name: \"CantDeleteUserWithCollateral\",\n msg: \"Can not delete user that still has collateral\"\n },\n {\n code: 6040,\n name: \"InvalidFundingProfitability\",\n msg: \"AMM funding out of bounds pnl\"\n },\n {\n code: 6041,\n name: \"CastingFailure\",\n msg: \"Casting Failure\"\n },\n {\n code: 6042,\n name: \"InvalidOrder\",\n msg: \"InvalidOrder\"\n },\n {\n code: 6043,\n name: \"InvalidOrderMaxTs\",\n msg: \"InvalidOrderMaxTs\"\n },\n {\n code: 6044,\n name: \"InvalidOrderMarketType\",\n msg: \"InvalidOrderMarketType\"\n },\n {\n code: 6045,\n name: \"InvalidOrderForInitialMarginReq\",\n msg: \"InvalidOrderForInitialMarginReq\"\n },\n {\n code: 6046,\n name: \"InvalidOrderNotRiskReducing\",\n msg: \"InvalidOrderNotRiskReducing\"\n },\n {\n code: 6047,\n name: \"InvalidOrderSizeTooSmall\",\n msg: \"InvalidOrderSizeTooSmall\"\n },\n {\n code: 6048,\n name: \"InvalidOrderNotStepSizeMultiple\",\n msg: \"InvalidOrderNotStepSizeMultiple\"\n },\n {\n code: 6049,\n name: \"InvalidOrderBaseQuoteAsset\",\n msg: \"InvalidOrderBaseQuoteAsset\"\n },\n {\n code: 6050,\n name: \"InvalidOrderIOC\",\n msg: \"InvalidOrderIOC\"\n },\n {\n code: 6051,\n name: \"InvalidOrderPostOnly\",\n msg: \"InvalidOrderPostOnly\"\n },\n {\n code: 6052,\n name: \"InvalidOrderIOCPostOnly\",\n msg: \"InvalidOrderIOCPostOnly\"\n },\n {\n code: 6053,\n name: \"InvalidOrderTrigger\",\n msg: \"InvalidOrderTrigger\"\n },\n {\n code: 6054,\n name: \"InvalidOrderAuction\",\n msg: \"InvalidOrderAuction\"\n },\n {\n code: 6055,\n name: \"InvalidOrderOracleOffset\",\n msg: \"InvalidOrderOracleOffset\"\n },\n {\n code: 6056,\n name: \"InvalidOrderMinOrderSize\",\n msg: \"InvalidOrderMinOrderSize\"\n },\n {\n code: 6057,\n name: \"PlacePostOnlyLimitFailure\",\n msg: \"Failed to Place Post-Only Limit Order\"\n },\n {\n code: 6058,\n name: \"UserHasNoOrder\",\n msg: \"User has no order\"\n },\n {\n code: 6059,\n name: \"OrderAmountTooSmall\",\n msg: \"Order Amount Too Small\"\n },\n {\n code: 6060,\n name: \"MaxNumberOfOrders\",\n msg: \"Max number of orders taken\"\n },\n {\n code: 6061,\n name: \"OrderDoesNotExist\",\n msg: \"Order does not exist\"\n },\n {\n code: 6062,\n name: \"OrderNotOpen\",\n msg: \"Order not open\"\n },\n {\n code: 6063,\n name: \"FillOrderDidNotUpdateState\",\n msg: \"FillOrderDidNotUpdateState\"\n },\n {\n code: 6064,\n name: \"ReduceOnlyOrderIncreasedRisk\",\n msg: \"Reduce only order increased risk\"\n },\n {\n code: 6065,\n name: \"UnableToLoadAccountLoader\",\n msg: \"Unable to load AccountLoader\"\n },\n {\n code: 6066,\n name: \"TradeSizeTooLarge\",\n msg: \"Trade Size Too Large\"\n },\n {\n code: 6067,\n name: \"UserCantReferThemselves\",\n msg: \"User cant refer themselves\"\n },\n {\n code: 6068,\n name: \"DidNotReceiveExpectedReferrer\",\n msg: \"Did not receive expected referrer\"\n },\n {\n code: 6069,\n name: \"CouldNotDeserializeReferrer\",\n msg: \"Could not deserialize referrer\"\n },\n {\n code: 6070,\n name: \"CouldNotDeserializeReferrerStats\",\n msg: \"Could not deserialize referrer stats\"\n },\n {\n code: 6071,\n name: \"UserOrderIdAlreadyInUse\",\n msg: \"User Order Id Already In Use\"\n },\n {\n code: 6072,\n name: \"NoPositionsLiquidatable\",\n msg: \"No positions liquidatable\"\n },\n {\n code: 6073,\n name: \"InvalidMarginRatio\",\n msg: \"Invalid Margin Ratio\"\n },\n {\n code: 6074,\n name: \"CantCancelPostOnlyOrder\",\n msg: \"Cant Cancel Post Only Order\"\n },\n {\n code: 6075,\n name: \"InvalidOracleOffset\",\n msg: \"InvalidOracleOffset\"\n },\n {\n code: 6076,\n name: \"CantExpireOrders\",\n msg: \"CantExpireOrders\"\n },\n {\n code: 6077,\n name: \"CouldNotLoadMarketData\",\n msg: \"CouldNotLoadMarketData\"\n },\n {\n code: 6078,\n name: \"PerpMarketNotFound\",\n msg: \"PerpMarketNotFound\"\n },\n {\n code: 6079,\n name: \"InvalidMarketAccount\",\n msg: \"InvalidMarketAccount\"\n },\n {\n code: 6080,\n name: \"UnableToLoadPerpMarketAccount\",\n msg: \"UnableToLoadMarketAccount\"\n },\n {\n code: 6081,\n name: \"MarketWrongMutability\",\n msg: \"MarketWrongMutability\"\n },\n {\n code: 6082,\n name: \"UnableToCastUnixTime\",\n msg: \"UnableToCastUnixTime\"\n },\n {\n code: 6083,\n name: \"CouldNotFindSpotPosition\",\n msg: \"CouldNotFindSpotPosition\"\n },\n {\n code: 6084,\n name: \"NoSpotPositionAvailable\",\n msg: \"NoSpotPositionAvailable\"\n },\n {\n code: 6085,\n name: \"InvalidSpotMarketInitialization\",\n msg: \"InvalidSpotMarketInitialization\"\n },\n {\n code: 6086,\n name: \"CouldNotLoadSpotMarketData\",\n msg: \"CouldNotLoadSpotMarketData\"\n },\n {\n code: 6087,\n name: \"SpotMarketNotFound\",\n msg: \"SpotMarketNotFound\"\n },\n {\n code: 6088,\n name: \"InvalidSpotMarketAccount\",\n msg: \"InvalidSpotMarketAccount\"\n },\n {\n code: 6089,\n name: \"UnableToLoadSpotMarketAccount\",\n msg: \"UnableToLoadSpotMarketAccount\"\n },\n {\n code: 6090,\n name: \"SpotMarketWrongMutability\",\n msg: \"SpotMarketWrongMutability\"\n },\n {\n code: 6091,\n name: \"SpotMarketInterestNotUpToDate\",\n msg: \"SpotInterestNotUpToDate\"\n },\n {\n code: 6092,\n name: \"SpotMarketInsufficientDeposits\",\n msg: \"SpotMarketInsufficientDeposits\"\n },\n {\n code: 6093,\n name: \"UserMustSettleTheirOwnPositiveUnsettledPNL\",\n msg: \"UserMustSettleTheirOwnPositiveUnsettledPNL\"\n },\n {\n code: 6094,\n name: \"CantUpdatePoolBalanceType\",\n msg: \"CantUpdatePoolBalanceType\"\n },\n {\n code: 6095,\n name: \"InsufficientCollateralForSettlingPNL\",\n msg: \"InsufficientCollateralForSettlingPNL\"\n },\n {\n code: 6096,\n name: \"AMMNotUpdatedInSameSlot\",\n msg: \"AMMNotUpdatedInSameSlot\"\n },\n {\n code: 6097,\n name: \"AuctionNotComplete\",\n msg: \"AuctionNotComplete\"\n },\n {\n code: 6098,\n name: \"MakerNotFound\",\n msg: \"MakerNotFound\"\n },\n {\n code: 6099,\n name: \"MakerStatsNotFound\",\n msg: \"MakerNotFound\"\n },\n {\n code: 6100,\n name: \"MakerMustBeWritable\",\n msg: \"MakerMustBeWritable\"\n },\n {\n code: 6101,\n name: \"MakerStatsMustBeWritable\",\n msg: \"MakerMustBeWritable\"\n },\n {\n code: 6102,\n name: \"MakerOrderNotFound\",\n msg: \"MakerOrderNotFound\"\n },\n {\n code: 6103,\n name: \"CouldNotDeserializeMaker\",\n msg: \"CouldNotDeserializeMaker\"\n },\n {\n code: 6104,\n name: \"CouldNotDeserializeMakerStats\",\n msg: \"CouldNotDeserializeMaker\"\n },\n {\n code: 6105,\n name: \"AuctionPriceDoesNotSatisfyMaker\",\n msg: \"AuctionPriceDoesNotSatisfyMaker\"\n },\n {\n code: 6106,\n name: \"MakerCantFulfillOwnOrder\",\n msg: \"MakerCantFulfillOwnOrder\"\n },\n {\n code: 6107,\n name: \"MakerOrderMustBePostOnly\",\n msg: \"MakerOrderMustBePostOnly\"\n },\n {\n code: 6108,\n name: \"CantMatchTwoPostOnlys\",\n msg: \"CantMatchTwoPostOnlys\"\n },\n {\n code: 6109,\n name: \"OrderBreachesOraclePriceLimits\",\n msg: \"OrderBreachesOraclePriceLimits\"\n },\n {\n code: 6110,\n name: \"OrderMustBeTriggeredFirst\",\n msg: \"OrderMustBeTriggeredFirst\"\n },\n {\n code: 6111,\n name: \"OrderNotTriggerable\",\n msg: \"OrderNotTriggerable\"\n },\n {\n code: 6112,\n name: \"OrderDidNotSatisfyTriggerCondition\",\n msg: \"OrderDidNotSatisfyTriggerCondition\"\n },\n {\n code: 6113,\n name: \"PositionAlreadyBeingLiquidated\",\n msg: \"PositionAlreadyBeingLiquidated\"\n },\n {\n code: 6114,\n name: \"PositionDoesntHaveOpenPositionOrOrders\",\n msg: \"PositionDoesntHaveOpenPositionOrOrders\"\n },\n {\n code: 6115,\n name: \"AllOrdersAreAlreadyLiquidations\",\n msg: \"AllOrdersAreAlreadyLiquidations\"\n },\n {\n code: 6116,\n name: \"CantCancelLiquidationOrder\",\n msg: \"CantCancelLiquidationOrder\"\n },\n {\n code: 6117,\n name: \"UserIsBeingLiquidated\",\n msg: \"UserIsBeingLiquidated\"\n },\n {\n code: 6118,\n name: \"LiquidationsOngoing\",\n msg: \"LiquidationsOngoing\"\n },\n {\n code: 6119,\n name: \"WrongSpotBalanceType\",\n msg: \"WrongSpotBalanceType\"\n },\n {\n code: 6120,\n name: \"UserCantLiquidateThemself\",\n msg: \"UserCantLiquidateThemself\"\n },\n {\n code: 6121,\n name: \"InvalidPerpPositionToLiquidate\",\n msg: \"InvalidPerpPositionToLiquidate\"\n },\n {\n code: 6122,\n name: \"InvalidBaseAssetAmountForLiquidatePerp\",\n msg: \"InvalidBaseAssetAmountForLiquidatePerp\"\n },\n {\n code: 6123,\n name: \"InvalidPositionLastFundingRate\",\n msg: \"InvalidPositionLastFundingRate\"\n },\n {\n code: 6124,\n name: \"InvalidPositionDelta\",\n msg: \"InvalidPositionDelta\"\n },\n {\n code: 6125,\n name: \"UserBankrupt\",\n msg: \"UserBankrupt\"\n },\n {\n code: 6126,\n name: \"UserNotBankrupt\",\n msg: \"UserNotBankrupt\"\n },\n {\n code: 6127,\n name: \"UserHasInvalidBorrow\",\n msg: \"UserHasInvalidBorrow\"\n },\n {\n code: 6128,\n name: \"DailyWithdrawLimit\",\n msg: \"DailyWithdrawLimit\"\n },\n {\n code: 6129,\n name: \"DefaultError\",\n msg: \"DefaultError\"\n },\n {\n code: 6130,\n name: \"InsufficientLPTokens\",\n msg: \"Insufficient LP tokens\"\n },\n {\n code: 6131,\n name: \"CantLPWithPerpPosition\",\n msg: \"Cant LP with a market position\"\n },\n {\n code: 6132,\n name: \"UnableToBurnLPTokens\",\n msg: \"Unable to burn LP tokens\"\n },\n {\n code: 6133,\n name: \"TryingToRemoveLiquidityTooFast\",\n msg: \"Trying to remove liqudity too fast after adding it\"\n },\n {\n code: 6134,\n name: \"InvalidSpotMarketVault\",\n msg: \"Invalid Spot Market Vault\"\n },\n {\n code: 6135,\n name: \"InvalidSpotMarketState\",\n msg: \"Invalid Spot Market State\"\n },\n {\n code: 6136,\n name: \"InvalidSerumProgram\",\n msg: \"InvalidSerumProgram\"\n },\n {\n code: 6137,\n name: \"InvalidSerumMarket\",\n msg: \"InvalidSerumMarket\"\n },\n {\n code: 6138,\n name: \"InvalidSerumBids\",\n msg: \"InvalidSerumBids\"\n },\n {\n code: 6139,\n name: \"InvalidSerumAsks\",\n msg: \"InvalidSerumAsks\"\n },\n {\n code: 6140,\n name: \"InvalidSerumOpenOrders\",\n msg: \"InvalidSerumOpenOrders\"\n },\n {\n code: 6141,\n name: \"FailedSerumCPI\",\n msg: \"FailedSerumCPI\"\n },\n {\n code: 6142,\n name: \"FailedToFillOnSerum\",\n msg: \"FailedToFillOnSerum\"\n },\n {\n code: 6143,\n name: \"InvalidSerumFulfillmentConfig\",\n msg: \"InvalidSerumFulfillmentConfig\"\n },\n {\n code: 6144,\n name: \"InvalidFeeStructure\",\n msg: \"InvalidFeeStructure\"\n },\n {\n code: 6145,\n name: \"InsufficientIFShares\",\n msg: \"Insufficient IF shares\"\n },\n {\n code: 6146,\n name: \"MarketActionPaused\",\n msg: \"the Market has paused this action\"\n },\n {\n code: 6147,\n name: \"MarketPlaceOrderPaused\",\n msg: \"the Market status doesnt allow placing orders\"\n },\n {\n code: 6148,\n name: \"MarketFillOrderPaused\",\n msg: \"the Market status doesnt allow filling orders\"\n },\n {\n code: 6149,\n name: \"MarketWithdrawPaused\",\n msg: \"the Market status doesnt allow withdraws\"\n },\n {\n code: 6150,\n name: \"ProtectedAssetTierViolation\",\n msg: \"Action violates the Protected Asset Tier rules\"\n },\n {\n code: 6151,\n name: \"IsolatedAssetTierViolation\",\n msg: \"Action violates the Isolated Asset Tier rules\"\n },\n {\n code: 6152,\n name: \"UserCantBeDeleted\",\n msg: \"User Cant Be Deleted\"\n },\n {\n code: 6153,\n name: \"ReduceOnlyWithdrawIncreasedRisk\",\n msg: \"Reduce Only Withdraw Increased Risk\"\n },\n {\n code: 6154,\n name: \"MaxOpenInterest\",\n msg: \"Max Open Interest\"\n },\n {\n code: 6155,\n name: \"CantResolvePerpBankruptcy\",\n msg: \"Cant Resolve Perp Bankruptcy\"\n },\n {\n code: 6156,\n name: \"LiquidationDoesntSatisfyLimitPrice\",\n msg: \"Liquidation Doesnt Satisfy Limit Price\"\n },\n {\n code: 6157,\n name: \"MarginTradingDisabled\",\n msg: \"Margin Trading Disabled\"\n },\n {\n code: 6158,\n name: \"InvalidMarketStatusToSettlePnl\",\n msg: \"Invalid Market Status to Settle Perp Pnl\"\n },\n {\n code: 6159,\n name: \"PerpMarketNotInSettlement\",\n msg: \"PerpMarketNotInSettlement\"\n },\n {\n code: 6160,\n name: \"PerpMarketNotInReduceOnly\",\n msg: \"PerpMarketNotInReduceOnly\"\n },\n {\n code: 6161,\n name: \"PerpMarketSettlementBufferNotReached\",\n msg: \"PerpMarketSettlementBufferNotReached\"\n },\n {\n code: 6162,\n name: \"PerpMarketSettlementUserHasOpenOrders\",\n msg: \"PerpMarketSettlementUserHasOpenOrders\"\n },\n {\n code: 6163,\n name: \"PerpMarketSettlementUserHasActiveLP\",\n msg: \"PerpMarketSettlementUserHasActiveLP\"\n },\n {\n code: 6164,\n name: \"UnableToSettleExpiredUserPosition\",\n msg: \"UnableToSettleExpiredUserPosition\"\n },\n {\n code: 6165,\n name: \"UnequalMarketIndexForSpotTransfer\",\n msg: \"UnequalMarketIndexForSpotTransfer\"\n },\n {\n code: 6166,\n name: \"InvalidPerpPositionDetected\",\n msg: \"InvalidPerpPositionDetected\"\n },\n {\n code: 6167,\n name: \"InvalidSpotPositionDetected\",\n msg: \"InvalidSpotPositionDetected\"\n },\n {\n code: 6168,\n name: \"InvalidAmmDetected\",\n msg: \"InvalidAmmDetected\"\n },\n {\n code: 6169,\n name: \"InvalidAmmForFillDetected\",\n msg: \"InvalidAmmForFillDetected\"\n },\n {\n code: 6170,\n name: \"InvalidAmmLimitPriceOverride\",\n msg: \"InvalidAmmLimitPriceOverride\"\n },\n {\n code: 6171,\n name: \"InvalidOrderFillPrice\",\n msg: \"InvalidOrderFillPrice\"\n },\n {\n code: 6172,\n name: \"SpotMarketBalanceInvariantViolated\",\n msg: \"SpotMarketBalanceInvariantViolated\"\n },\n {\n code: 6173,\n name: \"SpotMarketVaultInvariantViolated\",\n msg: \"SpotMarketVaultInvariantViolated\"\n },\n {\n code: 6174,\n name: \"InvalidPDA\",\n msg: \"InvalidPDA\"\n },\n {\n code: 6175,\n name: \"InvalidPDASigner\",\n msg: \"InvalidPDASigner\"\n },\n {\n code: 6176,\n name: \"RevenueSettingsCannotSettleToIF\",\n msg: \"RevenueSettingsCannotSettleToIF\"\n },\n {\n code: 6177,\n name: \"NoRevenueToSettleToIF\",\n msg: \"NoRevenueToSettleToIF\"\n },\n {\n code: 6178,\n name: \"NoAmmPerpPnlDeficit\",\n msg: \"NoAmmPerpPnlDeficit\"\n },\n {\n code: 6179,\n name: \"SufficientPerpPnlPool\",\n msg: \"SufficientPerpPnlPool\"\n },\n {\n code: 6180,\n name: \"InsufficientPerpPnlPool\",\n msg: \"InsufficientPerpPnlPool\"\n },\n {\n code: 6181,\n name: \"PerpPnlDeficitBelowThreshold\",\n msg: \"PerpPnlDeficitBelowThreshold\"\n },\n {\n code: 6182,\n name: \"MaxRevenueWithdrawPerPeriodReached\",\n msg: \"MaxRevenueWithdrawPerPeriodReached\"\n },\n {\n code: 6183,\n name: \"MaxIFWithdrawReached\",\n msg: \"InvalidSpotPositionDetected\"\n },\n {\n code: 6184,\n name: \"NoIFWithdrawAvailable\",\n msg: \"NoIFWithdrawAvailable\"\n },\n {\n code: 6185,\n name: \"InvalidIFUnstake\",\n msg: \"InvalidIFUnstake\"\n },\n {\n code: 6186,\n name: \"InvalidIFUnstakeSize\",\n msg: \"InvalidIFUnstakeSize\"\n },\n {\n code: 6187,\n name: \"InvalidIFUnstakeCancel\",\n msg: \"InvalidIFUnstakeCancel\"\n },\n {\n code: 6188,\n name: \"InvalidIFForNewStakes\",\n msg: \"InvalidIFForNewStakes\"\n },\n {\n code: 6189,\n name: \"InvalidIFRebase\",\n msg: \"InvalidIFRebase\"\n },\n {\n code: 6190,\n name: \"InvalidInsuranceUnstakeSize\",\n msg: \"InvalidInsuranceUnstakeSize\"\n },\n {\n code: 6191,\n name: \"InvalidOrderLimitPrice\",\n msg: \"InvalidOrderLimitPrice\"\n },\n {\n code: 6192,\n name: \"InvalidIFDetected\",\n msg: \"InvalidIFDetected\"\n },\n {\n code: 6193,\n name: \"InvalidAmmMaxSpreadDetected\",\n msg: \"InvalidAmmMaxSpreadDetected\"\n },\n {\n code: 6194,\n name: \"InvalidConcentrationCoef\",\n msg: \"InvalidConcentrationCoef\"\n },\n {\n code: 6195,\n name: \"InvalidSrmVault\",\n msg: \"InvalidSrmVault\"\n },\n {\n code: 6196,\n name: \"InvalidVaultOwner\",\n msg: \"InvalidVaultOwner\"\n },\n {\n code: 6197,\n name: \"InvalidMarketStatusForFills\",\n msg: \"InvalidMarketStatusForFills\"\n },\n {\n code: 6198,\n name: \"IFWithdrawRequestInProgress\",\n msg: \"IFWithdrawRequestInProgress\"\n },\n {\n code: 6199,\n name: \"NoIFWithdrawRequestInProgress\",\n msg: \"NoIFWithdrawRequestInProgress\"\n },\n {\n code: 6200,\n name: \"IFWithdrawRequestTooSmall\",\n msg: \"IFWithdrawRequestTooSmall\"\n },\n {\n code: 6201,\n name: \"IncorrectSpotMarketAccountPassed\",\n msg: \"IncorrectSpotMarketAccountPassed\"\n },\n {\n code: 6202,\n name: \"BlockchainClockInconsistency\",\n msg: \"BlockchainClockInconsistency\"\n },\n {\n code: 6203,\n name: \"InvalidIFSharesDetected\",\n msg: \"InvalidIFSharesDetected\"\n },\n {\n code: 6204,\n name: \"NewLPSizeTooSmall\",\n msg: \"NewLPSizeTooSmall\"\n },\n {\n code: 6205,\n name: \"MarketStatusInvalidForNewLP\",\n msg: \"MarketStatusInvalidForNewLP\"\n },\n {\n code: 6206,\n name: \"InvalidMarkTwapUpdateDetected\",\n msg: \"InvalidMarkTwapUpdateDetected\"\n },\n {\n code: 6207,\n name: \"MarketSettlementAttemptOnActiveMarket\",\n msg: \"MarketSettlementAttemptOnActiveMarket\"\n },\n {\n code: 6208,\n name: \"MarketSettlementRequiresSettledLP\",\n msg: \"MarketSettlementRequiresSettledLP\"\n },\n {\n code: 6209,\n name: \"MarketSettlementAttemptTooEarly\",\n msg: \"MarketSettlementAttemptTooEarly\"\n },\n {\n code: 6210,\n name: \"MarketSettlementTargetPriceInvalid\",\n msg: \"MarketSettlementTargetPriceInvalid\"\n },\n {\n code: 6211,\n name: \"UnsupportedSpotMarket\",\n msg: \"UnsupportedSpotMarket\"\n },\n {\n code: 6212,\n name: \"SpotOrdersDisabled\",\n msg: \"SpotOrdersDisabled\"\n },\n {\n code: 6213,\n name: \"MarketBeingInitialized\",\n msg: \"Market Being Initialized\"\n },\n {\n code: 6214,\n name: \"InvalidUserSubAccountId\",\n msg: \"Invalid Sub Account Id\"\n },\n {\n code: 6215,\n name: \"InvalidTriggerOrderCondition\",\n msg: \"Invalid Trigger Order Condition\"\n },\n {\n code: 6216,\n name: \"InvalidSpotPosition\",\n msg: \"Invalid Spot Position\"\n },\n {\n code: 6217,\n name: \"CantTransferBetweenSameUserAccount\",\n msg: \"Cant transfer between same user account\"\n },\n {\n code: 6218,\n name: \"InvalidPerpPosition\",\n msg: \"Invalid Perp Position\"\n },\n {\n code: 6219,\n name: \"UnableToGetLimitPrice\",\n msg: \"Unable To Get Limit Price\"\n },\n {\n code: 6220,\n name: \"InvalidLiquidation\",\n msg: \"Invalid Liquidation\"\n },\n {\n code: 6221,\n name: \"SpotFulfillmentConfigDisabled\",\n msg: \"Spot Fulfullment Config Disabled\"\n },\n {\n code: 6222,\n name: \"InvalidMaker\",\n msg: \"Invalid Maker\"\n }\n ]\n};\n\n// src/driftClient.ts\nimport {\n PublicKey as PublicKey10,\n Transaction as Transaction3,\n Keypair as Keypair2,\n LAMPORTS_PER_SOL as LAMPORTS_PER_SOL2,\n SystemProgram,\n ComputeBudgetProgram as ComputeBudgetProgram2\n} from \"@solana/web3.js\";\n\n// src/tx/utils.ts\nimport {\n Transaction as Transaction2,\n ComputeBudgetProgram\n} from \"@solana/web3.js\";\nvar COMPUTE_UNITS_DEFAULT = 2e5;\nfunction wrapInTx(instruction, computeUnits = 6e5) {\n const tx = new Transaction2();\n if (computeUnits != COMPUTE_UNITS_DEFAULT) {\n tx.add(\n ComputeBudgetProgram.requestUnits({\n units: computeUnits,\n additionalFee: 0\n })\n );\n }\n return tx.add(instruction);\n}\n\n// src/math/amm.ts\nimport { BN as BN8 } from \"@project-serum/anchor\";\n\n// src/assert/assert.ts\nfunction assert(condition, error) {\n if (!condition) {\n throw new Error(error || \"Unspecified AssertionError\");\n }\n}\n\n// src/math/repeg.ts\nimport { BN as BN7 } from \"@project-serum/anchor\";\nfunction calculateAdjustKCost(amm, numerator, denomenator) {\n const x = amm.baseAssetReserve;\n const y = amm.quoteAssetReserve;\n const d = amm.baseAssetAmountWithAmm;\n const Q = amm.pegMultiplier;\n const quoteScale = y.mul(d).mul(Q);\n const p = numerator.mul(PRICE_PRECISION).div(denomenator);\n const cost = quoteScale.div(x.add(d)).sub(\n quoteScale.mul(p).div(PRICE_PRECISION).div(x.mul(p).div(PRICE_PRECISION).add(d))\n ).div(AMM_TO_QUOTE_PRECISION_RATIO).div(PEG_PRECISION);\n return cost.mul(new BN7(-1));\n}\nfunction calculateRepegCost(amm, newPeg) {\n const dqar = amm.quoteAssetReserve.sub(amm.terminalQuoteAssetReserve);\n const cost = dqar.mul(newPeg.sub(amm.pegMultiplier)).div(AMM_TO_QUOTE_PRECISION_RATIO).div(PEG_PRECISION);\n return cost;\n}\nfunction calculateBudgetedKBN(x, y, budget, Q, d) {\n assert(Q.gt(new BN7(0)));\n const C = budget.mul(new BN7(-1));\n let dSign = new BN7(1);\n if (d.lt(new BN7(0))) {\n dSign = new BN7(-1);\n }\n const pegged_y_d_d = y.mul(d).mul(d).mul(Q).div(AMM_RESERVE_PRECISION).div(AMM_RESERVE_PRECISION).div(PEG_PRECISION);\n const numer1 = pegged_y_d_d;\n const numer2 = C.mul(d).div(QUOTE_PRECISION).mul(x.add(d)).div(AMM_RESERVE_PRECISION).mul(dSign);\n const denom1 = C.mul(x).mul(x.add(d)).div(AMM_RESERVE_PRECISION).div(QUOTE_PRECISION);\n const denom2 = pegged_y_d_d;\n if (C.lt(ZERO)) {\n if (denom1.abs().gt(denom2.abs())) {\n console.log(\"denom1 > denom2\", denom1.toString(), denom2.toString());\n console.log(\"budget cost exceeds stable K solution\");\n return [new BN7(1e4), new BN7(1)];\n }\n }\n const numerator = numer1.sub(numer2).div(AMM_TO_QUOTE_PRECISION_RATIO);\n const denominator = denom1.add(denom2).div(AMM_TO_QUOTE_PRECISION_RATIO);\n return [numerator, denominator];\n}\nfunction calculateBudgetedK(amm, cost) {\n const x = amm.baseAssetReserve;\n const y = amm.quoteAssetReserve;\n const d = amm.baseAssetAmountWithAmm;\n const Q = amm.pegMultiplier;\n const [numerator, denominator] = calculateBudgetedKBN(x, y, cost, Q, d);\n return [numerator, denominator];\n}\nfunction calculateBudgetedPeg(amm, cost, targetPrice) {\n const targetPeg = targetPrice.mul(amm.baseAssetReserve).div(amm.quoteAssetReserve).div(PRICE_DIV_PEG);\n const k = amm.sqrtK.mul(amm.sqrtK);\n const x = amm.baseAssetReserve;\n const y = amm.quoteAssetReserve;\n const d = amm.baseAssetAmountWithAmm;\n const Q = amm.pegMultiplier;\n const C = cost.mul(new BN7(-1));\n const deltaQuoteAssetReserves = y.sub(k.div(x.add(d)));\n const pegChangeDirection = targetPeg.sub(Q);\n const useTargetPeg = deltaQuoteAssetReserves.lt(ZERO) && pegChangeDirection.gt(ZERO) || deltaQuoteAssetReserves.gt(ZERO) && pegChangeDirection.lt(ZERO);\n if (deltaQuoteAssetReserves.eq(ZERO) || useTargetPeg) {\n return targetPeg;\n }\n const deltaPegMultiplier = C.mul(PRICE_PRECISION).div(\n deltaQuoteAssetReserves.div(AMM_TO_QUOTE_PRECISION_RATIO)\n );\n const newPeg = Q.sub(\n deltaPegMultiplier.mul(PEG_PRECISION).div(PRICE_PRECISION)\n );\n return newPeg;\n}\n\n// src/math/oracles.ts\nfunction oraclePriceBands(market, oraclePriceData) {\n const maxPercentDiff = market.marginRatioInitial - market.marginRatioMaintenance;\n const offset = oraclePriceData.price.mul(new BN(maxPercentDiff)).div(MARGIN_PRECISION);\n assert(offset.gt(ZERO));\n return [oraclePriceData.price.sub(offset), oraclePriceData.price.add(offset)];\n}\nfunction isOracleValid(amm, oraclePriceData, oracleGuardRails, slot) {\n const isOraclePriceNonPositive = oraclePriceData.price.lte(ZERO);\n const isOraclePriceTooVolatile = oraclePriceData.price.div(BN.max(ONE, amm.historicalOracleData.lastOraclePriceTwap)).gt(oracleGuardRails.validity.tooVolatileRatio) || amm.historicalOracleData.lastOraclePriceTwap.div(BN.max(ONE, oraclePriceData.price)).gt(oracleGuardRails.validity.tooVolatileRatio);\n const isConfidenceTooLarge = new BN(amm.baseSpread).add(BN.max(ONE, oraclePriceData.confidence)).mul(BID_ASK_SPREAD_PRECISION).div(oraclePriceData.price).gt(new BN(amm.maxSpread));\n const oracleIsStale = oraclePriceData.slot.sub(new BN(slot)).gt(oracleGuardRails.validity.slotsBeforeStaleForAmm);\n return !(!oraclePriceData.hasSufficientNumberOfDataPoints || oracleIsStale || isOraclePriceNonPositive || isOraclePriceTooVolatile || isConfidenceTooLarge);\n}\nfunction isOracleTooDivergent(amm, oraclePriceData, oracleGuardRails, now) {\n const sinceLastUpdate = now.sub(\n amm.historicalOracleData.lastOraclePriceTwapTs\n );\n const sinceStart = BN.max(ZERO, new BN(60 * 5).sub(sinceLastUpdate));\n const oracleTwap5min = amm.historicalOracleData.lastOraclePriceTwap5Min.mul(sinceStart).add(oraclePriceData.price).mul(sinceLastUpdate).div(sinceStart.add(sinceLastUpdate));\n const oracleSpread = oracleTwap5min.sub(oraclePriceData.price);\n const oracleSpreadPct = oracleSpread.mul(PRICE_PRECISION).div(oracleTwap5min);\n const tooDivergent = oracleSpreadPct.abs().gte(\n BID_ASK_SPREAD_PRECISION.mul(\n oracleGuardRails.priceDivergence.markOracleDivergenceNumerator\n ).div(oracleGuardRails.priceDivergence.markOracleDivergenceDenominator)\n );\n return tooDivergent;\n}\nfunction calculateLiveOracleTwap(amm, oraclePriceData, now) {\n const sinceLastUpdate = now.sub(\n amm.historicalOracleData.lastOraclePriceTwapTs\n );\n const sinceStart = BN.max(ZERO, amm.fundingPeriod.sub(sinceLastUpdate));\n const clampRange = amm.historicalOracleData.lastOraclePriceTwap.div(\n new BN(3)\n );\n const clampedOraclePrice = BN.min(\n amm.historicalOracleData.lastOraclePriceTwap.add(clampRange),\n BN.max(\n oraclePriceData.price,\n amm.historicalOracleData.lastOraclePriceTwap.sub(clampRange)\n )\n );\n const newOracleTwap = amm.historicalOracleData.lastOraclePriceTwap.mul(sinceStart).add(clampedOraclePrice.mul(sinceLastUpdate)).div(sinceStart.add(sinceLastUpdate));\n return newOracleTwap;\n}\nfunction calculateLiveOracleStd(amm, oraclePriceData, now) {\n const sinceLastUpdate = now.sub(\n amm.historicalOracleData.lastOraclePriceTwapTs\n );\n const sinceStart = BN.max(ZERO, amm.fundingPeriod.sub(sinceLastUpdate));\n const liveOracleTwap = calculateLiveOracleTwap(amm, oraclePriceData, now);\n const priceDeltaVsTwap = oraclePriceData.price.sub(liveOracleTwap).abs();\n const oracleStd = priceDeltaVsTwap.add(\n amm.oracleStd.mul(sinceStart).div(sinceStart.add(sinceLastUpdate))\n );\n return oracleStd;\n}\n\n// src/math/amm.ts\nfunction calculatePegFromTargetPrice(targetPrice, baseAssetReserve, quoteAssetReserve) {\n return BN8.max(\n targetPrice.mul(baseAssetReserve).div(quoteAssetReserve).add(PRICE_DIV_PEG.div(new BN8(2))).div(PRICE_DIV_PEG),\n ONE\n );\n}\nfunction calculateOptimalPegAndBudget(amm, oraclePriceData) {\n const reservePriceBefore = calculatePrice(\n amm.baseAssetReserve,\n amm.quoteAssetReserve,\n amm.pegMultiplier\n );\n const targetPrice = oraclePriceData.price;\n const newPeg = calculatePegFromTargetPrice(\n targetPrice,\n amm.baseAssetReserve,\n amm.quoteAssetReserve\n );\n const prePegCost = calculateRepegCost(amm, newPeg);\n const totalFeeLB = amm.totalExchangeFee.div(new BN8(2));\n const budget = BN8.max(ZERO, amm.totalFeeMinusDistributions.sub(totalFeeLB));\n if (budget.lt(prePegCost)) {\n const halfMaxPriceSpread = new BN8(amm.maxSpread).div(new BN8(2)).mul(targetPrice).div(BID_ASK_SPREAD_PRECISION);\n let newTargetPrice;\n let newOptimalPeg;\n let newBudget;\n const targetPriceGap = reservePriceBefore.sub(targetPrice);\n if (targetPriceGap.abs().gt(halfMaxPriceSpread)) {\n const markAdj = targetPriceGap.abs().sub(halfMaxPriceSpread);\n if (targetPriceGap.lt(new BN8(0))) {\n newTargetPrice = reservePriceBefore.add(markAdj);\n } else {\n newTargetPrice = reservePriceBefore.sub(markAdj);\n }\n newOptimalPeg = calculatePegFromTargetPrice(\n newTargetPrice,\n amm.baseAssetReserve,\n amm.quoteAssetReserve\n );\n newBudget = calculateRepegCost(amm, newOptimalPeg);\n return [newTargetPrice, newOptimalPeg, newBudget, false];\n }\n }\n return [targetPrice, newPeg, budget, true];\n}\nfunction calculateNewAmm(amm, oraclePriceData) {\n let pKNumer = new BN8(1);\n let pKDenom = new BN8(1);\n const [targetPrice, _newPeg, budget, checkLowerBound] = calculateOptimalPegAndBudget(amm, oraclePriceData);\n let prePegCost = calculateRepegCost(amm, _newPeg);\n let newPeg = _newPeg;\n if (prePegCost.gt(budget) && checkLowerBound) {\n [pKNumer, pKDenom] = [new BN8(999), new BN8(1e3)];\n const deficitMadeup = calculateAdjustKCost(amm, pKNumer, pKDenom);\n assert(deficitMadeup.lte(new BN8(0)));\n prePegCost = budget.add(deficitMadeup.abs());\n const newAmm = Object.assign({}, amm);\n newAmm.baseAssetReserve = newAmm.baseAssetReserve.mul(pKNumer).div(pKDenom);\n newAmm.sqrtK = newAmm.sqrtK.mul(pKNumer).div(pKDenom);\n const invariant = newAmm.sqrtK.mul(newAmm.sqrtK);\n newAmm.quoteAssetReserve = invariant.div(newAmm.baseAssetReserve);\n const directionToClose = amm.baseAssetAmountWithAmm.gt(ZERO) ? PositionDirection.SHORT : PositionDirection.LONG;\n const [newQuoteAssetReserve, _newBaseAssetReserve] = calculateAmmReservesAfterSwap(\n newAmm,\n \"base\",\n amm.baseAssetAmountWithAmm.abs(),\n getSwapDirection(\"base\", directionToClose)\n );\n newAmm.terminalQuoteAssetReserve = newQuoteAssetReserve;\n newPeg = calculateBudgetedPeg(newAmm, prePegCost, targetPrice);\n prePegCost = calculateRepegCost(newAmm, newPeg);\n }\n return [prePegCost, pKNumer, pKDenom, newPeg];\n}\nfunction calculateUpdatedAMM(amm, oraclePriceData) {\n if (amm.curveUpdateIntensity == 0) {\n return amm;\n }\n const newAmm = Object.assign({}, amm);\n const [prepegCost, pKNumer, pKDenom, newPeg] = calculateNewAmm(\n amm,\n oraclePriceData\n );\n newAmm.baseAssetReserve = newAmm.baseAssetReserve.mul(pKNumer).div(pKDenom);\n newAmm.sqrtK = newAmm.sqrtK.mul(pKNumer).div(pKDenom);\n const invariant = newAmm.sqrtK.mul(newAmm.sqrtK);\n newAmm.quoteAssetReserve = invariant.div(newAmm.baseAssetReserve);\n newAmm.pegMultiplier = newPeg;\n const directionToClose = amm.baseAssetAmountWithAmm.gt(ZERO) ? PositionDirection.SHORT : PositionDirection.LONG;\n const [newQuoteAssetReserve, _newBaseAssetReserve] = calculateAmmReservesAfterSwap(\n newAmm,\n \"base\",\n amm.baseAssetAmountWithAmm.abs(),\n getSwapDirection(\"base\", directionToClose)\n );\n newAmm.terminalQuoteAssetReserve = newQuoteAssetReserve;\n newAmm.totalFeeMinusDistributions = newAmm.totalFeeMinusDistributions.sub(prepegCost);\n newAmm.netRevenueSinceLastFunding = newAmm.netRevenueSinceLastFunding.sub(prepegCost);\n return newAmm;\n}\nfunction calculateUpdatedAMMSpreadReserves(amm, direction, oraclePriceData) {\n const newAmm = calculateUpdatedAMM(amm, oraclePriceData);\n const [shortReserves, longReserves] = calculateSpreadReserves(\n newAmm,\n oraclePriceData\n );\n const dirReserves = isVariant(direction, \"long\") ? longReserves : shortReserves;\n const result = {\n baseAssetReserve: dirReserves.baseAssetReserve,\n quoteAssetReserve: dirReserves.quoteAssetReserve,\n sqrtK: newAmm.sqrtK,\n newPeg: newAmm.pegMultiplier\n };\n return result;\n}\nfunction calculateBidAskPrice(amm, oraclePriceData, withUpdate = true) {\n let newAmm;\n if (withUpdate) {\n newAmm = calculateUpdatedAMM(amm, oraclePriceData);\n } else {\n newAmm = amm;\n }\n const [bidReserves, askReserves] = calculateSpreadReserves(\n newAmm,\n oraclePriceData\n );\n const askPrice = calculatePrice(\n askReserves.baseAssetReserve,\n askReserves.quoteAssetReserve,\n newAmm.pegMultiplier\n );\n const bidPrice = calculatePrice(\n bidReserves.baseAssetReserve,\n bidReserves.quoteAssetReserve,\n newAmm.pegMultiplier\n );\n return [bidPrice, askPrice];\n}\nfunction calculatePrice(baseAssetReserves, quoteAssetReserves, pegMultiplier) {\n if (baseAssetReserves.abs().lte(ZERO)) {\n return new BN8(0);\n }\n return quoteAssetReserves.mul(PRICE_PRECISION).mul(pegMultiplier).div(PEG_PRECISION).div(baseAssetReserves);\n}\nfunction calculateAmmReservesAfterSwap(amm, inputAssetType, swapAmount, swapDirection) {\n assert(swapAmount.gte(ZERO), \"swapAmount must be greater than 0\");\n let newQuoteAssetReserve;\n let newBaseAssetReserve;\n if (inputAssetType === \"quote\") {\n swapAmount = swapAmount.mul(AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO).div(amm.pegMultiplier);\n [newQuoteAssetReserve, newBaseAssetReserve] = calculateSwapOutput(\n amm.quoteAssetReserve,\n swapAmount,\n swapDirection,\n amm.sqrtK.mul(amm.sqrtK)\n );\n } else {\n [newBaseAssetReserve, newQuoteAssetReserve] = calculateSwapOutput(\n amm.baseAssetReserve,\n swapAmount,\n swapDirection,\n amm.sqrtK.mul(amm.sqrtK)\n );\n }\n return [newQuoteAssetReserve, newBaseAssetReserve];\n}\nfunction calculateMarketOpenBidAsk(baseAssetReserve, minBaseAssetReserve, maxBaseAssetReserve) {\n let openAsks;\n if (maxBaseAssetReserve.gt(baseAssetReserve)) {\n openAsks = maxBaseAssetReserve.sub(baseAssetReserve).mul(new BN8(-1));\n } else {\n openAsks = ZERO;\n }\n let openBids;\n if (minBaseAssetReserve.lt(baseAssetReserve)) {\n openBids = baseAssetReserve.sub(minBaseAssetReserve);\n } else {\n openBids = ZERO;\n }\n return [openBids, openAsks];\n}\nfunction calculateInventoryScale(baseAssetAmountWithAmm, baseAssetReserve, minBaseAssetReserve, maxBaseAssetReserve, directionalSpread, maxSpread) {\n if (baseAssetAmountWithAmm.eq(ZERO)) {\n return 0;\n }\n const defaultLargeBidAskFactor = BID_ASK_SPREAD_PRECISION.mul(new BN8(10));\n const [openBids, openAsks] = calculateMarketOpenBidAsk(\n baseAssetReserve,\n minBaseAssetReserve,\n maxBaseAssetReserve\n );\n const minSideLiquidity = BN8.max(\n new BN8(1),\n BN8.min(openBids.abs(), openAsks.abs())\n );\n const inventoryScaleMaxBN = BN8.max(\n defaultLargeBidAskFactor,\n new BN8(maxSpread / 2).mul(BID_ASK_SPREAD_PRECISION).div(new BN8(Math.max(directionalSpread, 1)))\n );\n const inventoryScaleBN = baseAssetAmountWithAmm.mul(BN8.max(baseAssetAmountWithAmm.abs(), BASE_PRECISION)).div(BASE_PRECISION).mul(defaultLargeBidAskFactor).div(minSideLiquidity).abs();\n const inventoryScale = BN8.min(inventoryScaleMaxBN, inventoryScaleBN).toNumber() / BID_ASK_SPREAD_PRECISION.toNumber();\n const inventoryScaleMax = inventoryScaleMaxBN.toNumber() / BID_ASK_SPREAD_PRECISION.toNumber();\n const inventorySpreadScale = Math.min(inventoryScaleMax, 1 + inventoryScale);\n return inventorySpreadScale;\n}\nfunction calculateEffectiveLeverage(baseSpread, quoteAssetReserve, terminalQuoteAssetReserve, pegMultiplier, netBaseAssetAmount, reservePrice, totalFeeMinusDistributions) {\n const netBaseAssetValue = quoteAssetReserve.sub(terminalQuoteAssetReserve).mul(pegMultiplier).div(AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO);\n const localBaseAssetValue = netBaseAssetAmount.mul(reservePrice).div(AMM_TO_QUOTE_PRECISION_RATIO.mul(PRICE_PRECISION));\n const effectiveGap = Math.max(\n 0,\n localBaseAssetValue.sub(netBaseAssetValue).toNumber()\n );\n const effectiveLeverage = effectiveGap / (Math.max(0, totalFeeMinusDistributions.toNumber()) + 1) + 1 / QUOTE_PRECISION.toNumber();\n return effectiveLeverage;\n}\nfunction calculateMaxSpread(marginRatioInitial) {\n const maxTargetSpread = new BN8(marginRatioInitial).mul(BID_ASK_SPREAD_PRECISION.div(MARGIN_PRECISION)).toNumber();\n return maxTargetSpread;\n}\nfunction calculateVolSpreadBN(lastOracleConfPct, reservePrice, markStd, oracleStd, longIntensity, shortIntensity, volume24H) {\n const marketAvgStdPct = markStd.add(oracleStd).mul(PERCENTAGE_PRECISION).div(reservePrice).div(new BN8(2));\n const volSpread = BN8.max(lastOracleConfPct, marketAvgStdPct.div(new BN8(2)));\n const clampMin = PERCENTAGE_PRECISION.div(new BN8(100));\n const clampMax = PERCENTAGE_PRECISION.mul(new BN8(16)).div(new BN8(10));\n const longVolSpreadFactor = clampBN(\n longIntensity.mul(PERCENTAGE_PRECISION).div(BN8.max(ONE, volume24H)),\n clampMin,\n clampMax\n );\n const shortVolSpreadFactor = clampBN(\n shortIntensity.mul(PERCENTAGE_PRECISION).div(BN8.max(ONE, volume24H)),\n clampMin,\n clampMax\n );\n const longVolSpread = BN8.max(\n lastOracleConfPct,\n volSpread.mul(longVolSpreadFactor).div(PERCENTAGE_PRECISION)\n );\n const shortVolSpread = BN8.max(\n lastOracleConfPct,\n volSpread.mul(shortVolSpreadFactor).div(PERCENTAGE_PRECISION)\n );\n return [longVolSpread, shortVolSpread];\n}\nfunction calculateSpreadBN(baseSpread, lastOracleReservePriceSpreadPct, lastOracleConfPct, maxSpread, quoteAssetReserve, terminalQuoteAssetReserve, pegMultiplier, baseAssetAmountWithAmm, reservePrice, totalFeeMinusDistributions, netRevenueSinceLastFunding, baseAssetReserve, minBaseAssetReserve, maxBaseAssetReserve, markStd, oracleStd, longIntensity, shortIntensity, volume24H, returnTerms = false) {\n assert(Number.isInteger(baseSpread));\n assert(Number.isInteger(maxSpread));\n const spreadTerms = {\n longVolSpread: 0,\n shortVolSpread: 0,\n longSpreadwPS: 0,\n shortSpreadwPS: 0,\n maxTargetSpread: 0,\n inventorySpreadScale: 0,\n longSpreadwInvScale: 0,\n shortSpreadwInvScale: 0,\n effectiveLeverage: 0,\n effectiveLeverageCapped: 0,\n longSpreadwEL: 0,\n shortSpreadwEL: 0,\n revenueRetreatAmount: 0,\n halfRevenueRetreatAmount: 0,\n longSpreadwRevRetreat: 0,\n shortSpreadwRevRetreat: 0,\n totalSpread: 0,\n longSpread: 0,\n shortSpread: 0\n };\n const [longVolSpread, shortVolSpread] = calculateVolSpreadBN(\n lastOracleConfPct,\n reservePrice,\n markStd,\n oracleStd,\n longIntensity,\n shortIntensity,\n volume24H\n );\n spreadTerms.longVolSpread = longVolSpread.toNumber();\n spreadTerms.shortVolSpread = shortVolSpread.toNumber();\n let longSpread = Math.max(baseSpread / 2, longVolSpread.toNumber());\n let shortSpread = Math.max(baseSpread / 2, shortVolSpread.toNumber());\n if (lastOracleReservePriceSpreadPct.gt(ZERO)) {\n shortSpread = Math.max(\n shortSpread,\n lastOracleReservePriceSpreadPct.abs().toNumber() + shortVolSpread.toNumber()\n );\n } else if (lastOracleReservePriceSpreadPct.lt(ZERO)) {\n longSpread = Math.max(\n longSpread,\n lastOracleReservePriceSpreadPct.abs().toNumber() + longVolSpread.toNumber()\n );\n }\n spreadTerms.longSpreadwPS = longSpread;\n spreadTerms.shortSpreadwPS = shortSpread;\n const maxTargetSpread = Math.floor(\n Math.max(maxSpread, lastOracleReservePriceSpreadPct.abs().toNumber())\n );\n const inventorySpreadScale = calculateInventoryScale(\n baseAssetAmountWithAmm,\n baseAssetReserve,\n minBaseAssetReserve,\n maxBaseAssetReserve,\n baseAssetAmountWithAmm.gt(ZERO) ? longSpread : shortSpread,\n maxTargetSpread\n );\n if (baseAssetAmountWithAmm.gt(ZERO)) {\n longSpread *= inventorySpreadScale;\n } else if (baseAssetAmountWithAmm.lt(ZERO)) {\n shortSpread *= inventorySpreadScale;\n }\n spreadTerms.maxTargetSpread = maxTargetSpread;\n spreadTerms.inventorySpreadScale = inventorySpreadScale;\n spreadTerms.longSpreadwInvScale = longSpread;\n spreadTerms.shortSpreadwInvScale = shortSpread;\n const MAX_SPREAD_SCALE = 10;\n if (totalFeeMinusDistributions.gt(ZERO)) {\n const effectiveLeverage = calculateEffectiveLeverage(\n baseSpread,\n quoteAssetReserve,\n terminalQuoteAssetReserve,\n pegMultiplier,\n baseAssetAmountWithAmm,\n reservePrice,\n totalFeeMinusDistributions\n );\n spreadTerms.effectiveLeverage = effectiveLeverage;\n const spreadScale = Math.min(MAX_SPREAD_SCALE, 1 + effectiveLeverage);\n spreadTerms.effectiveLeverageCapped = spreadScale;\n if (baseAssetAmountWithAmm.gt(ZERO)) {\n longSpread *= spreadScale;\n longSpread = Math.floor(longSpread);\n } else {\n shortSpread *= spreadScale;\n shortSpread = Math.floor(shortSpread);\n }\n } else {\n longSpread *= MAX_SPREAD_SCALE;\n shortSpread *= MAX_SPREAD_SCALE;\n }\n spreadTerms.longSpreadwEL = longSpread;\n spreadTerms.shortSpreadwEL = shortSpread;\n if (netRevenueSinceLastFunding.lt(\n DEFAULT_REVENUE_SINCE_LAST_FUNDING_SPREAD_RETREAT\n )) {\n const revenueRetreatAmount = Math.min(\n maxTargetSpread / 10,\n Math.floor(\n baseSpread * netRevenueSinceLastFunding.abs().toNumber() / DEFAULT_REVENUE_SINCE_LAST_FUNDING_SPREAD_RETREAT.abs().toNumber()\n )\n );\n const halfRevenueRetreatAmount = Math.floor(revenueRetreatAmount / 2);\n spreadTerms.revenueRetreatAmount = revenueRetreatAmount;\n spreadTerms.halfRevenueRetreatAmount = halfRevenueRetreatAmount;\n if (baseAssetAmountWithAmm.gt(ZERO)) {\n longSpread += revenueRetreatAmount;\n shortSpread += halfRevenueRetreatAmount;\n } else if (baseAssetAmountWithAmm.lt(ZERO)) {\n longSpread += halfRevenueRetreatAmount;\n shortSpread += revenueRetreatAmount;\n } else {\n longSpread += halfRevenueRetreatAmount;\n shortSpread += halfRevenueRetreatAmount;\n }\n }\n spreadTerms.longSpreadwRevRetreat = longSpread;\n spreadTerms.shortSpreadwRevRetreat = shortSpread;\n const totalSpread = longSpread + shortSpread;\n if (totalSpread > maxTargetSpread) {\n if (longSpread > shortSpread) {\n longSpread = Math.ceil(longSpread * maxTargetSpread / totalSpread);\n shortSpread = Math.floor(maxTargetSpread - longSpread);\n } else {\n shortSpread = Math.ceil(shortSpread * maxTargetSpread / totalSpread);\n longSpread = Math.floor(maxTargetSpread - shortSpread);\n }\n }\n spreadTerms.totalSpread = totalSpread;\n spreadTerms.longSpread = longSpread;\n spreadTerms.shortSpread = shortSpread;\n if (returnTerms) {\n return spreadTerms;\n }\n return [longSpread, shortSpread];\n}\nfunction calculateSpread(amm, oraclePriceData, now) {\n if (amm.baseSpread == 0 || amm.curveUpdateIntensity == 0) {\n return [amm.baseSpread / 2, amm.baseSpread / 2];\n }\n const reservePrice = calculatePrice(\n amm.baseAssetReserve,\n amm.quoteAssetReserve,\n amm.pegMultiplier\n );\n const targetPrice = (oraclePriceData == null ? void 0 : oraclePriceData.price) || reservePrice;\n const confInterval = oraclePriceData.confidence || ZERO;\n const targetMarkSpreadPct = reservePrice.sub(targetPrice).mul(BID_ASK_SPREAD_PRECISION).div(reservePrice);\n const confIntervalPct = confInterval.mul(BID_ASK_SPREAD_PRECISION).div(reservePrice);\n now = now || new BN8(new Date().getTime() / 1e3);\n const liveOracleStd = calculateLiveOracleStd(amm, oraclePriceData, now);\n const spreads = calculateSpreadBN(\n amm.baseSpread,\n targetMarkSpreadPct,\n confIntervalPct,\n amm.maxSpread,\n amm.quoteAssetReserve,\n amm.terminalQuoteAssetReserve,\n amm.pegMultiplier,\n amm.baseAssetAmountWithAmm,\n reservePrice,\n amm.totalFeeMinusDistributions,\n amm.netRevenueSinceLastFunding,\n amm.baseAssetReserve,\n amm.minBaseAssetReserve,\n amm.maxBaseAssetReserve,\n amm.markStd,\n liveOracleStd,\n amm.longIntensityVolume,\n amm.shortIntensityVolume,\n amm.volume24H\n );\n const longSpread = spreads[0];\n const shortSpread = spreads[1];\n return [longSpread, shortSpread];\n}\nfunction calculateSpreadReserves(amm, oraclePriceData, now) {\n function calculateSpreadReserve(spread, direction, amm2) {\n if (spread === 0) {\n return {\n baseAssetReserve: amm2.baseAssetReserve,\n quoteAssetReserve: amm2.quoteAssetReserve\n };\n }\n const quoteAssetReserveDelta = amm2.quoteAssetReserve.div(\n BID_ASK_SPREAD_PRECISION.div(new BN8(spread / 2))\n );\n let quoteAssetReserve;\n if (isVariant(direction, \"long\")) {\n quoteAssetReserve = amm2.quoteAssetReserve.add(quoteAssetReserveDelta);\n } else {\n quoteAssetReserve = amm2.quoteAssetReserve.sub(quoteAssetReserveDelta);\n }\n const baseAssetReserve = amm2.sqrtK.mul(amm2.sqrtK).div(quoteAssetReserve);\n return {\n baseAssetReserve,\n quoteAssetReserve\n };\n }\n const [longSpread, shortSpread] = calculateSpread(amm, oraclePriceData, now);\n const askReserves = calculateSpreadReserve(\n longSpread,\n PositionDirection.LONG,\n amm\n );\n const bidReserves = calculateSpreadReserve(\n shortSpread,\n PositionDirection.SHORT,\n amm\n );\n return [bidReserves, askReserves];\n}\nfunction calculateSwapOutput(inputAssetReserve, swapAmount, swapDirection, invariant) {\n let newInputAssetReserve;\n if (swapDirection === SwapDirection.ADD) {\n newInputAssetReserve = inputAssetReserve.add(swapAmount);\n } else {\n newInputAssetReserve = inputAssetReserve.sub(swapAmount);\n }\n const newOutputAssetReserve = invariant.div(newInputAssetReserve);\n return [newInputAssetReserve, newOutputAssetReserve];\n}\nfunction getSwapDirection(inputAssetType, positionDirection) {\n if (isVariant(positionDirection, \"long\") && inputAssetType === \"base\") {\n return SwapDirection.REMOVE;\n }\n if (isVariant(positionDirection, \"short\") && inputAssetType === \"quote\") {\n return SwapDirection.REMOVE;\n }\n return SwapDirection.ADD;\n}\nfunction calculateTerminalPrice(market) {\n const directionToClose = market.amm.baseAssetAmountWithAmm.gt(ZERO) ? PositionDirection.SHORT : PositionDirection.LONG;\n const [newQuoteAssetReserve, newBaseAssetReserve] = calculateAmmReservesAfterSwap(\n market.amm,\n \"base\",\n market.amm.baseAssetAmountWithAmm.abs(),\n getSwapDirection(\"base\", directionToClose)\n );\n const terminalPrice = newQuoteAssetReserve.mul(PRICE_PRECISION).mul(market.amm.pegMultiplier).div(PEG_PRECISION).div(newBaseAssetReserve);\n return terminalPrice;\n}\nfunction calculateMaxBaseAssetAmountToTrade(amm, limit_price, direction, oraclePriceData, now) {\n const invariant = amm.sqrtK.mul(amm.sqrtK);\n const newBaseAssetReserveSquared = invariant.mul(PRICE_PRECISION).mul(amm.pegMultiplier).div(limit_price).div(PEG_PRECISION);\n const newBaseAssetReserve = squareRootBN(newBaseAssetReserveSquared);\n const [shortSpreadReserves, longSpreadReserves] = calculateSpreadReserves(\n amm,\n oraclePriceData,\n now\n );\n const baseAssetReserveBefore = isVariant(direction, \"long\") ? longSpreadReserves.baseAssetReserve : shortSpreadReserves.baseAssetReserve;\n if (newBaseAssetReserve.gt(baseAssetReserveBefore)) {\n return [\n newBaseAssetReserve.sub(baseAssetReserveBefore),\n PositionDirection.SHORT\n ];\n } else if (newBaseAssetReserve.lt(baseAssetReserveBefore)) {\n return [\n baseAssetReserveBefore.sub(newBaseAssetReserve),\n PositionDirection.LONG\n ];\n } else {\n console.log(\"tradeSize Too Small\");\n return [new BN8(0), PositionDirection.LONG];\n }\n}\nfunction calculateQuoteAssetAmountSwapped(quoteAssetReserves, pegMultiplier, swapDirection) {\n if (isVariant(swapDirection, \"remove\")) {\n quoteAssetReserves = quoteAssetReserves.add(ONE);\n }\n let quoteAssetAmount = quoteAssetReserves.mul(pegMultiplier).div(AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO);\n if (isVariant(swapDirection, \"remove\")) {\n quoteAssetAmount = quoteAssetAmount.add(ONE);\n }\n return quoteAssetAmount;\n}\nfunction calculateMaxBaseAssetAmountFillable(amm, orderDirection) {\n const maxFillSize = amm.baseAssetReserve.div(\n new BN8(amm.maxFillReserveFraction)\n );\n let maxBaseAssetAmountOnSide;\n if (isVariant(orderDirection, \"long\")) {\n maxBaseAssetAmountOnSide = BN8.max(\n ZERO,\n amm.baseAssetReserve.sub(amm.minBaseAssetReserve)\n );\n } else {\n maxBaseAssetAmountOnSide = BN8.max(\n ZERO,\n amm.maxBaseAssetReserve.sub(amm.baseAssetReserve)\n );\n }\n return standardizeBaseAssetAmount(\n BN8.min(maxFillSize, maxBaseAssetAmountOnSide),\n amm.orderStepSize\n );\n}\n\n// src/math/margin.ts\nimport { BN as BN9 } from \"@project-serum/anchor\";\nfunction calculateSizePremiumLiabilityWeight(size, imfFactor, liabilityWeight, precision) {\n if (imfFactor.eq(ZERO)) {\n return liabilityWeight;\n }\n const sizeSqrt = squareRootBN(size.mul(new BN9(10)).add(new BN9(1)));\n const denom0 = BN9.max(new BN9(1), SPOT_MARKET_IMF_PRECISION.div(imfFactor));\n assert(denom0.gt(ZERO));\n const liabilityWeightNumerator = liabilityWeight.sub(\n liabilityWeight.div(\n BN9.max(new BN9(1), SPOT_MARKET_IMF_PRECISION.div(imfFactor))\n )\n );\n const denom = new BN9(1e5).mul(SPOT_MARKET_IMF_PRECISION).div(precision);\n assert(denom.gt(ZERO));\n const sizePremiumLiabilityWeight = liabilityWeightNumerator.add(\n sizeSqrt.mul(imfFactor).div(denom)\n );\n const maxLiabilityWeight = BN9.max(\n liabilityWeight,\n sizePremiumLiabilityWeight\n );\n return maxLiabilityWeight;\n}\nfunction calculateSizeDiscountAssetWeight(size, imfFactor, assetWeight) {\n if (imfFactor.eq(ZERO)) {\n return assetWeight;\n }\n const sizeSqrt = squareRootBN(size.mul(new BN9(10)).add(new BN9(1)));\n const imfNumerator = SPOT_MARKET_IMF_PRECISION.add(\n SPOT_MARKET_IMF_PRECISION.div(new BN9(10))\n );\n const sizeDiscountAssetWeight = imfNumerator.mul(SPOT_MARKET_WEIGHT_PRECISION).div(\n SPOT_MARKET_IMF_PRECISION.add(\n sizeSqrt.mul(imfFactor).div(new BN9(1e5))\n )\n );\n const minAssetWeight = BN9.min(assetWeight, sizeDiscountAssetWeight);\n return minAssetWeight;\n}\nfunction calculateOraclePriceForPerpMargin(perpPosition, market, oraclePriceData) {\n const oraclePriceOffset = BN9.min(\n new BN9(market.amm.maxSpread).mul(oraclePriceData.price).div(BID_ASK_SPREAD_PRECISION),\n oraclePriceData.confidence.add(\n new BN9(market.amm.baseSpread).mul(oraclePriceData.price).div(BID_ASK_SPREAD_PRECISION)\n )\n );\n let marginPrice;\n if (perpPosition.baseAssetAmount.gt(ZERO)) {\n marginPrice = oraclePriceData.price.sub(oraclePriceOffset);\n } else {\n marginPrice = oraclePriceData.price.add(oraclePriceOffset);\n }\n return marginPrice;\n}\nfunction calculateBaseAssetValueWithOracle(market, perpPosition, oraclePriceData) {\n let price = oraclePriceData.price;\n if (isVariant(market.status, \"settlement\")) {\n price = market.expiryPrice;\n }\n return perpPosition.baseAssetAmount.abs().mul(price).div(AMM_RESERVE_PRECISION);\n}\nfunction calculateWorstCaseBaseAssetAmount(perpPosition) {\n const allBids = perpPosition.baseAssetAmount.add(perpPosition.openBids);\n const allAsks = perpPosition.baseAssetAmount.add(perpPosition.openAsks);\n if (allBids.abs().gt(allAsks.abs())) {\n return allBids;\n } else {\n return allAsks;\n }\n}\n\n// src/math/market.ts\nimport { BN as BN11 } from \"@project-serum/anchor\";\n\n// src/math/spotBalance.ts\nimport { BN as BN10 } from \"@project-serum/anchor\";\nfunction getBalance(tokenAmount, spotMarket, balanceType) {\n const precisionIncrease = TEN.pow(new BN10(19 - spotMarket.decimals));\n const cumulativeInterest = isVariant(balanceType, \"deposit\") ? spotMarket.cumulativeDepositInterest : spotMarket.cumulativeBorrowInterest;\n let balance = tokenAmount.mul(precisionIncrease).div(cumulativeInterest);\n if (!balance.eq(ZERO) && isVariant(balanceType, \"borrow\")) {\n balance = balance.add(ONE);\n }\n return balance;\n}\nfunction getTokenAmount(balanceAmount, spotMarket, balanceType) {\n const precisionDecrease = TEN.pow(new BN10(19 - spotMarket.decimals));\n const cumulativeInterest = isVariant(balanceType, \"deposit\") ? spotMarket.cumulativeDepositInterest : spotMarket.cumulativeBorrowInterest;\n return balanceAmount.mul(cumulativeInterest).div(precisionDecrease);\n}\nfunction getSignedTokenAmount(tokenAmount, balanceType) {\n if (isVariant(balanceType, \"deposit\")) {\n return tokenAmount;\n } else {\n return tokenAmount.abs().neg();\n }\n}\nfunction getTokenValue(tokenAmount, spotDecimals, oraclePriceData) {\n if (tokenAmount.eq(ZERO)) {\n return ZERO;\n }\n const precisionDecrease = TEN.pow(new BN10(spotDecimals));\n return tokenAmount.mul(oraclePriceData.price).div(precisionDecrease);\n}\nfunction calculateAssetWeight(balanceAmount, spotMarket, marginCategory) {\n const sizePrecision = TEN.pow(new BN10(spotMarket.decimals));\n let sizeInAmmReservePrecision;\n if (sizePrecision.gt(AMM_RESERVE_PRECISION)) {\n sizeInAmmReservePrecision = balanceAmount.div(\n sizePrecision.div(AMM_RESERVE_PRECISION)\n );\n } else {\n sizeInAmmReservePrecision = balanceAmount.mul(AMM_RESERVE_PRECISION).div(sizePrecision);\n }\n let assetWeight;\n switch (marginCategory) {\n case \"Initial\":\n assetWeight = calculateSizeDiscountAssetWeight(\n sizeInAmmReservePrecision,\n new BN10(spotMarket.imfFactor),\n new BN10(spotMarket.initialAssetWeight)\n );\n break;\n case \"Maintenance\":\n assetWeight = calculateSizeDiscountAssetWeight(\n sizeInAmmReservePrecision,\n new BN10(spotMarket.imfFactor),\n new BN10(spotMarket.maintenanceAssetWeight)\n );\n break;\n default:\n assetWeight = new BN10(spotMarket.initialAssetWeight);\n break;\n }\n return assetWeight;\n}\nfunction calculateLiabilityWeight(balanceAmount, spotMarket, marginCategory) {\n const sizePrecision = TEN.pow(new BN10(spotMarket.decimals));\n let sizeInAmmReservePrecision;\n if (sizePrecision.gt(AMM_RESERVE_PRECISION)) {\n sizeInAmmReservePrecision = balanceAmount.div(\n sizePrecision.div(AMM_RESERVE_PRECISION)\n );\n } else {\n sizeInAmmReservePrecision = balanceAmount.mul(AMM_RESERVE_PRECISION).div(sizePrecision);\n }\n let assetWeight;\n switch (marginCategory) {\n case \"Initial\":\n assetWeight = calculateSizePremiumLiabilityWeight(\n sizeInAmmReservePrecision,\n new BN10(spotMarket.imfFactor),\n new BN10(spotMarket.initialLiabilityWeight),\n SPOT_MARKET_WEIGHT_PRECISION\n );\n break;\n case \"Maintenance\":\n assetWeight = calculateSizePremiumLiabilityWeight(\n sizeInAmmReservePrecision,\n new BN10(spotMarket.imfFactor),\n new BN10(spotMarket.maintenanceLiabilityWeight),\n SPOT_MARKET_WEIGHT_PRECISION\n );\n break;\n default:\n assetWeight = spotMarket.initialLiabilityWeight;\n break;\n }\n return assetWeight;\n}\nfunction calculateUtilization(bank) {\n const tokenDepositAmount = getTokenAmount(\n bank.depositBalance,\n bank,\n SpotBalanceType.DEPOSIT\n );\n const tokenBorrowAmount = getTokenAmount(\n bank.borrowBalance,\n bank,\n SpotBalanceType.BORROW\n );\n let utilization;\n if (tokenBorrowAmount.eq(ZERO) && tokenDepositAmount.eq(ZERO)) {\n utilization = ZERO;\n } else if (tokenDepositAmount.eq(ZERO)) {\n utilization = SPOT_MARKET_UTILIZATION_PRECISION;\n } else {\n utilization = tokenBorrowAmount.mul(SPOT_MARKET_UTILIZATION_PRECISION).div(tokenDepositAmount);\n }\n return utilization;\n}\nfunction calculateInterestRate(bank) {\n const utilization = calculateUtilization(bank);\n let interestRate;\n if (utilization.gt(new BN10(bank.optimalUtilization))) {\n const surplusUtilization = utilization.sub(new BN10(bank.optimalUtilization));\n const borrowRateSlope = new BN10(bank.maxBorrowRate - bank.optimalBorrowRate).mul(SPOT_MARKET_UTILIZATION_PRECISION).div(\n SPOT_MARKET_UTILIZATION_PRECISION.sub(new BN10(bank.optimalUtilization))\n );\n interestRate = new BN10(bank.optimalBorrowRate).add(\n surplusUtilization.mul(borrowRateSlope).div(SPOT_MARKET_UTILIZATION_PRECISION)\n );\n } else {\n const borrowRateSlope = new BN10(bank.optimalBorrowRate).mul(SPOT_MARKET_UTILIZATION_PRECISION).div(\n SPOT_MARKET_UTILIZATION_PRECISION.sub(new BN10(bank.optimalUtilization))\n );\n interestRate = utilization.mul(borrowRateSlope).div(SPOT_MARKET_UTILIZATION_PRECISION);\n }\n return interestRate;\n}\nfunction calculateDepositRate(bank) {\n const utilization = calculateUtilization(bank);\n const borrowRate = calculateBorrowRate(bank);\n const depositRate = borrowRate.mul(PERCENTAGE_PRECISION.sub(new BN10(bank.insuranceFund.totalFactor))).mul(utilization).div(SPOT_MARKET_UTILIZATION_PRECISION).div(PERCENTAGE_PRECISION);\n return depositRate;\n}\nfunction calculateBorrowRate(bank) {\n return calculateInterestRate(bank);\n}\nfunction calculateInterestAccumulated(bank, now) {\n const interestRate = calculateInterestRate(bank);\n const timeSinceLastUpdate = now.sub(bank.lastInterestTs);\n const modifiedBorrowRate = interestRate.mul(timeSinceLastUpdate);\n const utilization = calculateUtilization(bank);\n const modifiedDepositRate = modifiedBorrowRate.mul(utilization).div(SPOT_MARKET_UTILIZATION_PRECISION);\n const borrowInterest = bank.cumulativeBorrowInterest.mul(modifiedBorrowRate).div(ONE_YEAR).div(SPOT_MARKET_RATE_PRECISION).add(ONE);\n const depositInterest = bank.cumulativeDepositInterest.mul(modifiedDepositRate).div(ONE_YEAR).div(SPOT_MARKET_RATE_PRECISION);\n return { borrowInterest, depositInterest };\n}\nfunction calculateWithdrawLimit(spotMarket, now) {\n const marketDepositTokenAmount = getTokenAmount(\n spotMarket.depositBalance,\n spotMarket,\n SpotBalanceType.DEPOSIT\n );\n const marketBorrowTokenAmount = getTokenAmount(\n spotMarket.borrowBalance,\n spotMarket,\n SpotBalanceType.BORROW\n );\n const twentyFourHours = new BN10(60 * 60 * 24);\n const sinceLast = now.sub(spotMarket.lastTwapTs);\n const sinceStart = BN10.max(ZERO, twentyFourHours.sub(sinceLast));\n const borrowTokenTwapLive = spotMarket.borrowTokenTwap.mul(sinceStart).add(marketBorrowTokenAmount.mul(sinceLast)).div(sinceLast.add(sinceStart));\n const depositTokenTwapLive = spotMarket.depositTokenTwap.mul(sinceStart).add(marketDepositTokenAmount.mul(sinceLast)).div(sinceLast.add(sinceStart));\n const maxBorrowTokens = BN10.min(\n BN10.max(\n marketDepositTokenAmount.div(new BN10(6)),\n borrowTokenTwapLive.add(borrowTokenTwapLive.div(new BN10(5)))\n ),\n marketDepositTokenAmount.sub(marketDepositTokenAmount.div(new BN10(5)))\n );\n const minDepositTokens = depositTokenTwapLive.sub(\n BN10.min(\n BN10.max(\n depositTokenTwapLive.div(new BN10(5)),\n spotMarket.withdrawGuardThreshold\n ),\n depositTokenTwapLive\n )\n );\n return {\n borrowLimit: maxBorrowTokens.sub(marketBorrowTokenAmount),\n withdrawLimit: marketDepositTokenAmount.sub(minDepositTokens)\n };\n}\n\n// src/math/market.ts\nfunction calculateReservePrice(market, oraclePriceData) {\n const newAmm = calculateUpdatedAMM(market.amm, oraclePriceData);\n return calculatePrice(\n newAmm.baseAssetReserve,\n newAmm.quoteAssetReserve,\n newAmm.pegMultiplier\n );\n}\nfunction calculateBidPrice(market, oraclePriceData) {\n const { baseAssetReserve, quoteAssetReserve, newPeg } = calculateUpdatedAMMSpreadReserves(\n market.amm,\n PositionDirection.SHORT,\n oraclePriceData\n );\n return calculatePrice(baseAssetReserve, quoteAssetReserve, newPeg);\n}\nfunction calculateAskPrice(market, oraclePriceData) {\n const { baseAssetReserve, quoteAssetReserve, newPeg } = calculateUpdatedAMMSpreadReserves(\n market.amm,\n PositionDirection.LONG,\n oraclePriceData\n );\n return calculatePrice(baseAssetReserve, quoteAssetReserve, newPeg);\n}\nfunction calculateNewMarketAfterTrade(baseAssetAmount, direction, market) {\n const [newQuoteAssetReserve, newBaseAssetReserve] = calculateAmmReservesAfterSwap(\n market.amm,\n \"base\",\n baseAssetAmount.abs(),\n getSwapDirection(\"base\", direction)\n );\n const newAmm = Object.assign({}, market.amm);\n const newMarket = Object.assign({}, market);\n newMarket.amm = newAmm;\n newMarket.amm.quoteAssetReserve = newQuoteAssetReserve;\n newMarket.amm.baseAssetReserve = newBaseAssetReserve;\n return newMarket;\n}\nfunction calculateOracleReserveSpread(market, oraclePriceData) {\n const reservePrice = calculateReservePrice(market, oraclePriceData);\n return calculateOracleSpread(reservePrice, oraclePriceData);\n}\nfunction calculateOracleSpread(price, oraclePriceData) {\n return price.sub(oraclePriceData.price);\n}\nfunction calculateMarketMarginRatio(market, size, marginCategory) {\n let marginRatio;\n switch (marginCategory) {\n case \"Initial\":\n marginRatio = calculateSizePremiumLiabilityWeight(\n size,\n new BN11(market.imfFactor),\n new BN11(market.marginRatioInitial),\n MARGIN_PRECISION\n ).toNumber();\n break;\n case \"Maintenance\":\n marginRatio = calculateSizePremiumLiabilityWeight(\n size,\n new BN11(market.imfFactor),\n new BN11(market.marginRatioMaintenance),\n MARGIN_PRECISION\n ).toNumber();\n break;\n }\n return marginRatio;\n}\nfunction calculateUnrealizedAssetWeight(market, quoteSpotMarket, unrealizedPnl, marginCategory, oraclePriceData) {\n let assetWeight;\n switch (marginCategory) {\n case \"Initial\":\n assetWeight = new BN11(market.unrealizedPnlInitialAssetWeight);\n if (market.unrealizedPnlMaxImbalance.gt(ZERO)) {\n const netUnsettledPnl = calculateNetUserPnlImbalance(\n market,\n quoteSpotMarket,\n oraclePriceData\n );\n if (netUnsettledPnl.gt(market.unrealizedPnlMaxImbalance)) {\n assetWeight = assetWeight.mul(market.unrealizedPnlMaxImbalance).div(netUnsettledPnl);\n }\n }\n assetWeight = calculateSizeDiscountAssetWeight(\n unrealizedPnl,\n new BN11(market.unrealizedPnlImfFactor),\n assetWeight\n );\n break;\n case \"Maintenance\":\n assetWeight = new BN11(market.unrealizedPnlMaintenanceAssetWeight);\n break;\n }\n return assetWeight;\n}\nfunction calculateMarketAvailablePNL(perpMarket, spotMarket) {\n return getTokenAmount(\n perpMarket.pnlPool.scaledBalance,\n spotMarket,\n SpotBalanceType.DEPOSIT\n );\n}\nfunction calculateNetUserPnl(perpMarket, oraclePriceData) {\n const netUserPositionValue = perpMarket.amm.baseAssetAmountWithAmm.mul(oraclePriceData.price).div(BASE_PRECISION).div(PRICE_TO_QUOTE_PRECISION);\n const netUserCostBasis = perpMarket.amm.quoteAssetAmount;\n const netUserPnl = netUserPositionValue.add(netUserCostBasis);\n return netUserPnl;\n}\nfunction calculateNetUserPnlImbalance(perpMarket, spotMarket, oraclePriceData) {\n const netUserPnl = calculateNetUserPnl(perpMarket, oraclePriceData);\n const pnlPool = getTokenAmount(\n perpMarket.pnlPool.scaledBalance,\n spotMarket,\n SpotBalanceType.DEPOSIT\n );\n const imbalance = netUserPnl.sub(pnlPool);\n return imbalance;\n}\n\n// src/math/position.ts\nfunction calculateBaseAssetValue(market, userPosition, oraclePriceData, useSpread = true, skipUpdate = false) {\n if (userPosition.baseAssetAmount.eq(ZERO)) {\n return ZERO;\n }\n const directionToClose = findDirectionToClose(userPosition);\n let prepegAmm;\n if (!skipUpdate) {\n if (market.amm.baseSpread > 0 && useSpread) {\n const { baseAssetReserve, quoteAssetReserve, sqrtK, newPeg } = calculateUpdatedAMMSpreadReserves(\n market.amm,\n directionToClose,\n oraclePriceData\n );\n prepegAmm = {\n baseAssetReserve,\n quoteAssetReserve,\n sqrtK,\n pegMultiplier: newPeg\n };\n } else {\n prepegAmm = calculateUpdatedAMM(market.amm, oraclePriceData);\n }\n } else {\n prepegAmm = market.amm;\n }\n const [newQuoteAssetReserve, _] = calculateAmmReservesAfterSwap(\n prepegAmm,\n \"base\",\n userPosition.baseAssetAmount.abs(),\n getSwapDirection(\"base\", directionToClose)\n );\n switch (directionToClose) {\n case PositionDirection.SHORT:\n return prepegAmm.quoteAssetReserve.sub(newQuoteAssetReserve).mul(prepegAmm.pegMultiplier).div(AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO);\n case PositionDirection.LONG:\n return newQuoteAssetReserve.sub(prepegAmm.quoteAssetReserve).mul(prepegAmm.pegMultiplier).div(AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO).add(ONE);\n }\n}\nfunction calculatePositionPNL(market, perpPosition, withFunding = false, oraclePriceData) {\n if (perpPosition.baseAssetAmount.eq(ZERO)) {\n return perpPosition.quoteAssetAmount;\n }\n const baseAssetValue = calculateBaseAssetValueWithOracle(\n market,\n perpPosition,\n oraclePriceData\n );\n const baseAssetValueSign = perpPosition.baseAssetAmount.isNeg() ? new BN(-1) : new BN(1);\n let pnl = baseAssetValue.mul(baseAssetValueSign).add(perpPosition.quoteAssetAmount);\n if (withFunding) {\n const fundingRatePnL = calculatePositionFundingPNL(market, perpPosition);\n pnl = pnl.add(fundingRatePnL);\n }\n return pnl;\n}\nfunction calculateClaimablePnl(market, spotMarket, perpPosition, oraclePriceData) {\n const unrealizedPnl = calculatePositionPNL(\n market,\n perpPosition,\n true,\n oraclePriceData\n );\n const fundingPnL = calculatePositionFundingPNL(market, perpPosition);\n let unsettledPnl = unrealizedPnl.add(fundingPnL);\n if (unrealizedPnl.gt(ZERO)) {\n const excessPnlPool = BN.max(\n ZERO,\n calculateNetUserPnlImbalance(market, spotMarket, oraclePriceData).mul(\n new BN(-1)\n )\n );\n const maxPositivePnl = BN.max(\n perpPosition.quoteAssetAmount.sub(perpPosition.quoteEntryAmount),\n ZERO\n ).add(excessPnlPool);\n unsettledPnl = BN.min(maxPositivePnl, unrealizedPnl);\n }\n return unsettledPnl;\n}\nfunction calculatePositionFundingPNL(market, perpPosition) {\n if (perpPosition.baseAssetAmount.eq(ZERO)) {\n return ZERO;\n }\n let ammCumulativeFundingRate;\n if (perpPosition.baseAssetAmount.gt(ZERO)) {\n ammCumulativeFundingRate = market.amm.cumulativeFundingRateLong;\n } else {\n ammCumulativeFundingRate = market.amm.cumulativeFundingRateShort;\n }\n const perPositionFundingRate = ammCumulativeFundingRate.sub(perpPosition.lastCumulativeFundingRate).mul(perpPosition.baseAssetAmount).div(AMM_RESERVE_PRECISION).div(FUNDING_RATE_BUFFER_PRECISION).mul(new BN(-1));\n return perPositionFundingRate;\n}\nfunction positionIsAvailable(position) {\n return position.baseAssetAmount.eq(ZERO) && position.openOrders === 0 && position.quoteAssetAmount.eq(ZERO) && position.lpShares.eq(ZERO);\n}\nfunction calculateBreakEvenPrice(userPosition) {\n if (userPosition.baseAssetAmount.eq(ZERO)) {\n return ZERO;\n }\n return userPosition.quoteBreakEvenAmount.mul(PRICE_PRECISION).mul(AMM_TO_QUOTE_PRECISION_RATIO).div(userPosition.baseAssetAmount).abs();\n}\nfunction calculateEntryPrice(userPosition) {\n if (userPosition.baseAssetAmount.eq(ZERO)) {\n return ZERO;\n }\n return userPosition.quoteEntryAmount.mul(PRICE_PRECISION).mul(AMM_TO_QUOTE_PRECISION_RATIO).div(userPosition.baseAssetAmount).abs();\n}\nfunction calculateCostBasis(userPosition) {\n if (userPosition.baseAssetAmount.eq(ZERO)) {\n return ZERO;\n }\n return userPosition.quoteAssetAmount.mul(PRICE_PRECISION).mul(AMM_TO_QUOTE_PRECISION_RATIO).div(userPosition.baseAssetAmount).abs();\n}\nfunction findDirectionToClose(userPosition) {\n return userPosition.baseAssetAmount.gt(ZERO) ? PositionDirection.SHORT : PositionDirection.LONG;\n}\nfunction positionCurrentDirection(userPosition) {\n return userPosition.baseAssetAmount.gte(ZERO) ? PositionDirection.LONG : PositionDirection.SHORT;\n}\nfunction isEmptyPosition(userPosition) {\n return userPosition.baseAssetAmount.eq(ZERO) && userPosition.openOrders === 0;\n}\n\n// src/tx/retryTxSender.ts\nimport assert2 from \"assert\";\nimport bs58 from \"bs58\";\nvar DEFAULT_TIMEOUT = 35e3;\nvar DEFAULT_RETRY = 8e3;\nvar RetryTxSender = class {\n constructor(provider, timeout, retrySleep, additionalConnections = new Array()) {\n this.provider = provider;\n this.timeout = timeout != null ? timeout : DEFAULT_TIMEOUT;\n this.retrySleep = retrySleep != null ? retrySleep : DEFAULT_RETRY;\n this.additionalConnections = additionalConnections;\n }\n async send(tx, additionalSigners, opts, preSigned) {\n if (additionalSigners === void 0) {\n additionalSigners = [];\n }\n if (opts === void 0) {\n opts = this.provider.opts;\n }\n if (!preSigned) {\n await this.prepareTx(tx, additionalSigners, opts);\n }\n const rawTransaction = tx.serialize();\n const startTime = this.getTimestamp();\n let txid;\n try {\n txid = await this.provider.connection.sendRawTransaction(\n rawTransaction,\n opts\n );\n this.sendToAdditionalConnections(rawTransaction, opts);\n } catch (e) {\n console.error(e);\n throw e;\n }\n let done = false;\n const resolveReference = {\n resolve: void 0\n };\n const stopWaiting = () => {\n done = true;\n if (resolveReference.resolve) {\n resolveReference.resolve();\n }\n };\n (async () => {\n while (!done && this.getTimestamp() - startTime < this.timeout) {\n await this.sleep(resolveReference);\n if (!done) {\n this.provider.connection.sendRawTransaction(rawTransaction, opts).catch((e) => {\n console.error(e);\n stopWaiting();\n });\n this.sendToAdditionalConnections(rawTransaction, opts);\n }\n }\n })();\n let slot;\n try {\n const result = await this.confirmTransaction(txid, opts.commitment);\n slot = result.context.slot;\n } catch (e) {\n console.error(e);\n throw e;\n } finally {\n stopWaiting();\n }\n return { txSig: txid, slot };\n }\n async prepareTx(tx, additionalSigners, opts) {\n tx.feePayer = this.provider.wallet.publicKey;\n tx.recentBlockhash = (await this.provider.connection.getRecentBlockhash(\n opts.preflightCommitment\n )).blockhash;\n await this.provider.wallet.signTransaction(tx);\n additionalSigners.filter((s) => s !== void 0).forEach((kp) => {\n tx.partialSign(kp);\n });\n return tx;\n }\n async confirmTransaction(signature, commitment) {\n let decodedSignature;\n try {\n decodedSignature = bs58.decode(signature);\n } catch (err) {\n throw new Error(\"signature must be base58 encoded: \" + signature);\n }\n assert2(decodedSignature.length === 64, \"signature has invalid length\");\n const start = Date.now();\n const subscriptionCommitment = commitment || this.provider.opts.commitment;\n const subscriptionIds = new Array();\n const connections = [\n this.provider.connection,\n ...this.additionalConnections\n ];\n let response = null;\n const promises = connections.map((connection, i) => {\n let subscriptionId;\n const confirmPromise = new Promise((resolve, reject) => {\n try {\n subscriptionId = connection.onSignature(\n signature,\n (result, context) => {\n subscriptionIds[i] = void 0;\n response = {\n context,\n value: result\n };\n resolve(null);\n },\n subscriptionCommitment\n );\n } catch (err) {\n reject(err);\n }\n });\n subscriptionIds.push(subscriptionId);\n return confirmPromise;\n });\n try {\n await this.promiseTimeout(promises, this.timeout);\n } finally {\n for (const [i, subscriptionId] of subscriptionIds.entries()) {\n if (subscriptionId) {\n connections[i].removeSignatureListener(subscriptionId);\n }\n }\n }\n if (response === null) {\n const duration = (Date.now() - start) / 1e3;\n throw new Error(\n `Transaction was not confirmed in ${duration.toFixed(\n 2\n )} seconds. It is unknown if it succeeded or failed. Check signature ${signature} using the Solana Explorer or CLI tools.`\n );\n }\n return response;\n }\n getTimestamp() {\n return new Date().getTime();\n }\n async sleep(reference) {\n return new Promise((resolve) => {\n reference.resolve = resolve;\n setTimeout(resolve, this.retrySleep);\n });\n }\n promiseTimeout(promises, timeoutMs) {\n let timeoutId;\n const timeoutPromise = new Promise((resolve) => {\n timeoutId = setTimeout(() => resolve(null), timeoutMs);\n });\n return Promise.race([...promises, timeoutPromise]).then(\n (result) => {\n clearTimeout(timeoutId);\n return result;\n }\n );\n }\n sendToAdditionalConnections(rawTx, opts) {\n this.additionalConnections.map((connection) => {\n connection.sendRawTransaction(rawTx, opts).catch((e) => {\n console.error(\n `error sending tx to additional connection ${connection._rpcEndpoint}`\n );\n console.error(e);\n });\n });\n }\n addAdditionalConnection(newConnection) {\n const alreadyUsingConnection = this.additionalConnections.filter((connection) => {\n return connection._rpcEndpoint === newConnection.rpcEndpoint;\n }).length > 0;\n if (!alreadyUsingConnection) {\n this.additionalConnections.push(newConnection);\n }\n }\n};\n\n// src/accounts/webSocketUserAccountSubscriber.ts\nimport { EventEmitter as EventEmitter7 } from \"events\";\nvar WebSocketUserAccountSubscriber = class {\n constructor(program2, userAccountPublicKey) {\n this.isSubscribed = false;\n this.program = program2;\n this.userAccountPublicKey = userAccountPublicKey;\n this.eventEmitter = new EventEmitter7();\n }\n async subscribe() {\n if (this.isSubscribed) {\n return true;\n }\n this.userDataAccountSubscriber = new WebSocketAccountSubscriber(\n \"user\",\n this.program,\n this.userAccountPublicKey\n );\n await this.userDataAccountSubscriber.subscribe((data) => {\n this.eventEmitter.emit(\"userAccountUpdate\", data);\n this.eventEmitter.emit(\"update\");\n });\n this.eventEmitter.emit(\"update\");\n this.isSubscribed = true;\n return true;\n }\n async fetch() {\n await Promise.all([this.userDataAccountSubscriber.fetch()]);\n }\n async unsubscribe() {\n if (!this.isSubscribed) {\n return;\n }\n await Promise.all([this.userDataAccountSubscriber.unsubscribe()]);\n this.isSubscribed = false;\n }\n assertIsSubscribed() {\n if (!this.isSubscribed) {\n throw new NotSubscribedError(\n \"You must call `subscribe` before using this function\"\n );\n }\n }\n getUserAccountAndSlot() {\n this.assertIsSubscribed();\n return this.userDataAccountSubscriber.dataAndSlot;\n }\n};\n\n// src/math/spotPosition.ts\nfunction isSpotPositionAvailable(position) {\n return position.scaledBalance.eq(ZERO) && position.openOrders === 0;\n}\nfunction getWorstCaseTokenAmounts(spotPosition, spotMarketAccount, oraclePriceData) {\n const tokenAmount = getSignedTokenAmount(\n getTokenAmount(\n spotPosition.scaledBalance,\n spotMarketAccount,\n spotPosition.balanceType\n ),\n spotPosition.balanceType\n );\n const tokenAmountAllBidsFill = tokenAmount.add(spotPosition.openBids);\n const tokenAmountAllAsksFill = tokenAmount.add(spotPosition.openAsks);\n if (tokenAmountAllAsksFill.abs().gt(tokenAmountAllBidsFill.abs())) {\n const worstCaseQuoteTokenAmount = getTokenValue(\n spotPosition.openAsks.neg(),\n spotMarketAccount.decimals,\n oraclePriceData\n );\n return [tokenAmountAllBidsFill, worstCaseQuoteTokenAmount];\n } else {\n const worstCaseQuoteTokenAmount = getTokenValue(\n spotPosition.openBids.neg(),\n spotMarketAccount.decimals,\n oraclePriceData\n );\n return [tokenAmountAllAsksFill, worstCaseQuoteTokenAmount];\n }\n}\n\n// src/user.ts\nvar User = class {\n constructor(config) {\n this._isSubscribed = false;\n var _a;\n this.driftClient = config.driftClient;\n this.userAccountPublicKey = config.userAccountPublicKey;\n if (((_a = config.accountSubscription) == null ? void 0 : _a.type) === \"polling\") {\n this.accountSubscriber = new PollingUserAccountSubscriber(\n config.driftClient.program,\n config.userAccountPublicKey,\n config.accountSubscription.accountLoader\n );\n } else {\n this.accountSubscriber = new WebSocketUserAccountSubscriber(\n config.driftClient.program,\n config.userAccountPublicKey\n );\n }\n this.eventEmitter = this.accountSubscriber.eventEmitter;\n }\n get isSubscribed() {\n return this._isSubscribed && this.accountSubscriber.isSubscribed;\n }\n set isSubscribed(val) {\n this._isSubscribed = val;\n }\n async subscribe() {\n this.isSubscribed = await this.accountSubscriber.subscribe();\n return this.isSubscribed;\n }\n async fetchAccounts() {\n await this.accountSubscriber.fetch();\n }\n async unsubscribe() {\n await this.accountSubscriber.unsubscribe();\n this.isSubscribed = false;\n }\n getUserAccount() {\n return this.accountSubscriber.getUserAccountAndSlot().data;\n }\n getUserAccountAndSlot() {\n return this.accountSubscriber.getUserAccountAndSlot();\n }\n getPerpPosition(marketIndex) {\n return this.getUserAccount().perpPositions.find(\n (position) => position.marketIndex === marketIndex\n );\n }\n getSpotPosition(marketIndex) {\n return this.getUserAccount().spotPositions.find(\n (position) => position.marketIndex === marketIndex\n );\n }\n getEmptyPosition(marketIndex) {\n return {\n baseAssetAmount: ZERO,\n remainderBaseAssetAmount: 0,\n lastCumulativeFundingRate: ZERO,\n marketIndex,\n quoteAssetAmount: ZERO,\n quoteEntryAmount: ZERO,\n quoteBreakEvenAmount: ZERO,\n openOrders: 0,\n openBids: ZERO,\n openAsks: ZERO,\n settledPnl: ZERO,\n lpShares: ZERO,\n lastBaseAssetAmountPerLp: ZERO,\n lastQuoteAssetAmountPerLp: ZERO\n };\n }\n getClonedPosition(position) {\n const clonedPosition = Object.assign({}, position);\n return clonedPosition;\n }\n getOrder(orderId) {\n return this.getUserAccount().orders.find(\n (order) => order.orderId === orderId\n );\n }\n getOrderByUserOrderId(userOrderId) {\n return this.getUserAccount().orders.find(\n (order) => order.userOrderId === userOrderId\n );\n }\n getUserAccountPublicKey() {\n return this.userAccountPublicKey;\n }\n async exists() {\n const userAccountRPCResponse = await this.driftClient.connection.getParsedAccountInfo(\n this.userAccountPublicKey\n );\n return userAccountRPCResponse.value !== null;\n }\n getPerpBidAsks(marketIndex) {\n const position = this.getPerpPosition(marketIndex);\n const [lpOpenBids, lpOpenAsks] = this.getLPBidAsks(marketIndex);\n const totalOpenBids = lpOpenBids.add(position.openBids);\n const totalOpenAsks = lpOpenAsks.add(position.openAsks);\n return [totalOpenBids, totalOpenAsks];\n }\n getLPBidAsks(marketIndex) {\n const position = this.getPerpPosition(marketIndex);\n if (position === void 0 || position.lpShares.eq(ZERO)) {\n return [ZERO, ZERO];\n }\n const market = this.driftClient.getPerpMarketAccount(marketIndex);\n const [marketOpenBids, marketOpenAsks] = calculateMarketOpenBidAsk(\n market.amm.baseAssetReserve,\n market.amm.minBaseAssetReserve,\n market.amm.maxBaseAssetReserve\n );\n const lpOpenBids = marketOpenBids.mul(position.lpShares).div(market.amm.sqrtK);\n const lpOpenAsks = marketOpenAsks.mul(position.lpShares).div(market.amm.sqrtK);\n return [lpOpenBids, lpOpenAsks];\n }\n getSettledLPPosition(marketIndex) {\n const _position = this.getPerpPosition(marketIndex);\n const position = this.getClonedPosition(_position);\n if (position.lpShares.eq(ZERO)) {\n return [position, ZERO, ZERO];\n }\n const market = this.driftClient.getPerpMarketAccount(position.marketIndex);\n const nShares = position.lpShares;\n const deltaBaa = market.amm.baseAssetAmountPerLp.sub(position.lastBaseAssetAmountPerLp).mul(nShares).div(AMM_RESERVE_PRECISION);\n const deltaQaa = market.amm.quoteAssetAmountPerLp.sub(position.lastQuoteAssetAmountPerLp).mul(nShares).div(AMM_RESERVE_PRECISION);\n function sign(v) {\n const sign2 = { true: new BN(1), false: new BN(-1) }[v.gte(ZERO).toString()];\n return sign2;\n }\n function standardize(amount, stepsize) {\n const remainder = amount.abs().mod(stepsize).mul(sign(amount));\n const standardizedAmount = amount.sub(remainder);\n return [standardizedAmount, remainder];\n }\n const [standardizedBaa, remainderBaa] = standardize(\n deltaBaa,\n market.amm.orderStepSize\n );\n position.remainderBaseAssetAmount += remainderBaa.toNumber();\n if (Math.abs(position.remainderBaseAssetAmount) > market.amm.orderStepSize.toNumber()) {\n const [newStandardizedBaa, newRemainderBaa] = standardize(\n new BN(position.remainderBaseAssetAmount),\n market.amm.orderStepSize\n );\n position.baseAssetAmount = position.baseAssetAmount.add(newStandardizedBaa);\n position.remainderBaseAssetAmount = newRemainderBaa.toNumber();\n }\n let updateType;\n if (position.baseAssetAmount.eq(ZERO)) {\n updateType = \"open\";\n } else if (sign(position.baseAssetAmount).eq(sign(deltaBaa))) {\n updateType = \"increase\";\n } else if (position.baseAssetAmount.abs().gt(deltaBaa.abs())) {\n updateType = \"reduce\";\n } else if (position.baseAssetAmount.abs().eq(deltaBaa.abs())) {\n updateType = \"close\";\n } else {\n updateType = \"flip\";\n }\n let newQuoteEntry;\n let pnl;\n if (updateType == \"open\" || updateType == \"increase\") {\n newQuoteEntry = position.quoteEntryAmount.add(deltaQaa);\n pnl = 0;\n } else if (updateType == \"reduce\" || updateType == \"close\") {\n newQuoteEntry = position.quoteEntryAmount.sub(\n position.quoteEntryAmount.mul(deltaBaa.abs()).div(position.baseAssetAmount.abs())\n );\n pnl = position.quoteEntryAmount.sub(newQuoteEntry).add(deltaQaa);\n } else {\n newQuoteEntry = deltaQaa.sub(\n deltaQaa.mul(position.baseAssetAmount.abs()).div(deltaBaa.abs())\n );\n pnl = position.quoteEntryAmount.add(deltaQaa.sub(newQuoteEntry));\n }\n position.quoteEntryAmount = newQuoteEntry;\n position.baseAssetAmount = position.baseAssetAmount.add(standardizedBaa);\n position.quoteAssetAmount = position.quoteAssetAmount.add(deltaQaa);\n if (position.baseAssetAmount.gt(ZERO)) {\n position.lastCumulativeFundingRate = market.amm.cumulativeFundingRateLong;\n } else if (position.baseAssetAmount.lt(ZERO)) {\n position.lastCumulativeFundingRate = market.amm.cumulativeFundingRateShort;\n } else {\n position.lastCumulativeFundingRate = ZERO;\n }\n return [position, remainderBaa, pnl];\n }\n getBuyingPower(marketIndex) {\n return this.getFreeCollateral().mul(this.getMaxLeverage(marketIndex, \"Initial\")).div(TEN_THOUSAND);\n }\n getFreeCollateral() {\n const totalCollateral = this.getTotalCollateral();\n const initialMarginRequirement = this.getInitialMarginRequirement();\n const freeCollateral = totalCollateral.sub(initialMarginRequirement);\n return freeCollateral.gte(ZERO) ? freeCollateral : ZERO;\n }\n getMarginRequirement(marginCategory, liquidationBuffer) {\n return this.getTotalPerpPositionValue(\n marginCategory,\n liquidationBuffer,\n true\n ).add(\n this.getSpotMarketLiabilityValue(\n void 0,\n marginCategory,\n liquidationBuffer,\n true\n )\n );\n }\n getInitialMarginRequirement() {\n return this.getMarginRequirement(\"Initial\");\n }\n getMaintenanceMarginRequirement(liquidationBuffer) {\n return this.getMarginRequirement(\"Maintenance\", liquidationBuffer);\n }\n getActivePerpPositions() {\n return this.getUserAccount().perpPositions.filter(\n (pos) => !pos.baseAssetAmount.eq(ZERO) || !pos.quoteAssetAmount.eq(ZERO) || !(pos.openOrders == 0) || !pos.lpShares.eq(ZERO)\n );\n }\n getUnrealizedPNL(withFunding, marketIndex, withWeightMarginCategory) {\n const quoteSpotMarket = this.driftClient.getQuoteSpotMarketAccount();\n return this.getActivePerpPositions().filter((pos) => marketIndex ? pos.marketIndex === marketIndex : true).reduce((unrealizedPnl, perpPosition) => {\n const market = this.driftClient.getPerpMarketAccount(\n perpPosition.marketIndex\n );\n const oraclePriceData = this.getOracleDataForPerpMarket(\n market.marketIndex\n );\n let positionUnrealizedPnl = calculatePositionPNL(\n market,\n perpPosition,\n withFunding,\n oraclePriceData\n );\n if (withWeightMarginCategory !== void 0) {\n if (positionUnrealizedPnl.gt(ZERO)) {\n positionUnrealizedPnl = positionUnrealizedPnl.mul(\n calculateUnrealizedAssetWeight(\n market,\n quoteSpotMarket,\n positionUnrealizedPnl,\n withWeightMarginCategory,\n oraclePriceData\n )\n ).div(new BN(SPOT_MARKET_WEIGHT_PRECISION));\n }\n }\n return unrealizedPnl.add(positionUnrealizedPnl);\n }, ZERO);\n }\n getUnrealizedFundingPNL(marketIndex) {\n return this.getUserAccount().perpPositions.filter(\n (pos) => marketIndex ? pos.marketIndex === marketIndex : true\n ).reduce((pnl, perpPosition) => {\n const market = this.driftClient.getPerpMarketAccount(\n perpPosition.marketIndex\n );\n return pnl.add(calculatePositionFundingPNL(market, perpPosition));\n }, ZERO);\n }\n getSpotMarketLiabilityValue(marketIndex, marginCategory, liquidationBuffer, includeOpenOrders) {\n return this.getUserAccount().spotPositions.reduce(\n (totalLiabilityValue, spotPosition) => {\n if (isSpotPositionAvailable(spotPosition) || marketIndex !== void 0 && spotPosition.marketIndex !== marketIndex) {\n return totalLiabilityValue;\n }\n const spotMarketAccount = this.driftClient.getSpotMarketAccount(spotPosition.marketIndex);\n if (spotPosition.marketIndex === QUOTE_SPOT_MARKET_INDEX) {\n if (isVariant(spotPosition.balanceType, \"borrow\")) {\n const tokenAmount = getTokenAmount(\n spotPosition.scaledBalance,\n spotMarketAccount,\n spotPosition.balanceType\n );\n let weight = SPOT_MARKET_WEIGHT_PRECISION;\n if (marginCategory === \"Initial\") {\n weight = BN.max(\n weight,\n new BN(this.getUserAccount().maxMarginRatio)\n );\n }\n const weightedTokenValue = tokenAmount.mul(weight).div(SPOT_MARKET_WEIGHT_PRECISION);\n return totalLiabilityValue.add(weightedTokenValue);\n } else {\n return totalLiabilityValue;\n }\n }\n const oraclePriceData = this.getOracleDataForSpotMarket(\n spotPosition.marketIndex\n );\n if (!includeOpenOrders) {\n if (isVariant(spotPosition.balanceType, \"borrow\")) {\n const tokenAmount = getTokenAmount(\n spotPosition.scaledBalance,\n spotMarketAccount,\n spotPosition.balanceType\n );\n const liabilityValue = this.getSpotLiabilityValue(\n tokenAmount,\n oraclePriceData,\n spotMarketAccount,\n marginCategory,\n liquidationBuffer\n );\n return totalLiabilityValue.add(liabilityValue);\n } else {\n return totalLiabilityValue;\n }\n }\n const [worstCaseTokenAmount, worstCaseQuoteTokenAmount] = getWorstCaseTokenAmounts(\n spotPosition,\n spotMarketAccount,\n this.getOracleDataForSpotMarket(spotPosition.marketIndex)\n );\n let newTotalLiabilityValue = totalLiabilityValue;\n if (worstCaseTokenAmount.lt(ZERO)) {\n const baseLiabilityValue = this.getSpotLiabilityValue(\n worstCaseTokenAmount.abs(),\n oraclePriceData,\n spotMarketAccount,\n marginCategory,\n liquidationBuffer\n );\n newTotalLiabilityValue = newTotalLiabilityValue.add(baseLiabilityValue);\n }\n if (worstCaseQuoteTokenAmount.lt(ZERO)) {\n let weight = SPOT_MARKET_WEIGHT_PRECISION;\n if (marginCategory === \"Initial\") {\n weight = BN.max(\n weight,\n new BN(this.getUserAccount().maxMarginRatio)\n );\n }\n const weightedTokenValue = worstCaseQuoteTokenAmount.abs().mul(weight).div(SPOT_MARKET_WEIGHT_PRECISION);\n newTotalLiabilityValue = newTotalLiabilityValue.add(weightedTokenValue);\n }\n newTotalLiabilityValue = newTotalLiabilityValue.add(\n new BN(spotPosition.openOrders).mul(OPEN_ORDER_MARGIN_REQUIREMENT)\n );\n return newTotalLiabilityValue;\n },\n ZERO\n );\n }\n getSpotLiabilityValue(tokenAmount, oraclePriceData, spotMarketAccount, marginCategory, liquidationBuffer) {\n let liabilityValue = getTokenValue(\n tokenAmount,\n spotMarketAccount.decimals,\n oraclePriceData\n );\n if (marginCategory !== void 0) {\n let weight = calculateLiabilityWeight(\n tokenAmount,\n spotMarketAccount,\n marginCategory\n );\n if (marginCategory === \"Initial\") {\n weight = BN.max(weight, new BN(this.getUserAccount().maxMarginRatio));\n }\n if (liquidationBuffer !== void 0) {\n weight = weight.add(liquidationBuffer);\n }\n liabilityValue = liabilityValue.mul(weight).div(SPOT_MARKET_WEIGHT_PRECISION);\n }\n return liabilityValue;\n }\n getSpotMarketAssetValue(marketIndex, marginCategory, includeOpenOrders) {\n return this.getUserAccount().spotPositions.reduce(\n (totalAssetValue, spotPosition) => {\n if (isSpotPositionAvailable(spotPosition) || marketIndex !== void 0 && spotPosition.marketIndex !== marketIndex) {\n return totalAssetValue;\n }\n const spotMarketAccount = this.driftClient.getSpotMarketAccount(spotPosition.marketIndex);\n if (spotPosition.marketIndex === QUOTE_SPOT_MARKET_INDEX) {\n if (isVariant(spotPosition.balanceType, \"deposit\")) {\n const tokenAmount = getTokenAmount(\n spotPosition.scaledBalance,\n spotMarketAccount,\n spotPosition.balanceType\n );\n return totalAssetValue.add(tokenAmount);\n } else {\n return totalAssetValue;\n }\n }\n const oraclePriceData = this.getOracleDataForSpotMarket(\n spotPosition.marketIndex\n );\n if (!includeOpenOrders) {\n if (isVariant(spotPosition.balanceType, \"deposit\")) {\n const tokenAmount = getTokenAmount(\n spotPosition.scaledBalance,\n spotMarketAccount,\n spotPosition.balanceType\n );\n const assetValue = this.getSpotAssetValue(\n tokenAmount,\n oraclePriceData,\n spotMarketAccount,\n marginCategory\n );\n return totalAssetValue.add(assetValue);\n } else {\n return totalAssetValue;\n }\n }\n const [worstCaseTokenAmount, worstCaseQuoteTokenAmount] = getWorstCaseTokenAmounts(\n spotPosition,\n spotMarketAccount,\n this.getOracleDataForSpotMarket(spotPosition.marketIndex)\n );\n let newTotalAssetValue = totalAssetValue;\n if (worstCaseTokenAmount.gt(ZERO)) {\n const baseAssetValue = this.getSpotAssetValue(\n worstCaseTokenAmount,\n oraclePriceData,\n spotMarketAccount,\n marginCategory\n );\n newTotalAssetValue = newTotalAssetValue.add(baseAssetValue);\n }\n if (worstCaseQuoteTokenAmount.gt(ZERO)) {\n newTotalAssetValue = newTotalAssetValue.add(\n worstCaseQuoteTokenAmount\n );\n }\n return newTotalAssetValue;\n },\n ZERO\n );\n }\n getSpotAssetValue(tokenAmount, oraclePriceData, spotMarketAccount, marginCategory) {\n let assetValue = getTokenValue(\n tokenAmount,\n spotMarketAccount.decimals,\n oraclePriceData\n );\n if (marginCategory !== void 0) {\n const weight = calculateAssetWeight(\n tokenAmount,\n spotMarketAccount,\n marginCategory\n );\n assetValue = assetValue.mul(weight).div(SPOT_MARKET_WEIGHT_PRECISION);\n }\n return assetValue;\n }\n getNetSpotMarketValue(withWeightMarginCategory) {\n return this.getSpotMarketAssetValue(\n void 0,\n withWeightMarginCategory\n ).sub(\n this.getSpotMarketLiabilityValue(void 0, withWeightMarginCategory)\n );\n }\n getTotalCollateral(marginCategory = \"Initial\") {\n return this.getSpotMarketAssetValue(void 0, marginCategory, true).add(\n this.getUnrealizedPNL(true, void 0, marginCategory)\n );\n }\n getHealth() {\n const userAccount = this.getUserAccount();\n if (isVariant(userAccount.status, \"beingLiquidated\") || isVariant(userAccount.status, \"bankrupt\")) {\n return 0;\n }\n const totalCollateral = this.getTotalCollateral(\"Maintenance\");\n const maintenanceMarginReq = this.getMaintenanceMarginRequirement();\n let health;\n if (maintenanceMarginReq.eq(ZERO) && totalCollateral.gte(ZERO)) {\n health = 100;\n } else if (totalCollateral.lte(ZERO)) {\n health = 0;\n } else {\n const marginRatio = this.getMarginRatio().toNumber() / MARGIN_PRECISION.toNumber();\n const maintenanceRatio = maintenanceMarginReq.toNumber() / totalCollateral.toNumber() * marginRatio;\n const healthP1 = Math.max(0, (marginRatio - maintenanceRatio) * 100) + 1;\n health = Math.min(1, Math.log(healthP1) / Math.log(100)) * 100;\n if (health > 1) {\n health = Math.round(health);\n } else {\n health = Math.round(health * 100) / 100;\n }\n }\n return health;\n }\n getTotalPerpPositionValue(marginCategory, liquidationBuffer, includeOpenOrders) {\n return this.getActivePerpPositions().reduce(\n (totalPerpValue, perpPosition) => {\n const market = this.driftClient.getPerpMarketAccount(\n perpPosition.marketIndex\n );\n if (perpPosition.lpShares.gt(ZERO)) {\n perpPosition = this.getClonedPosition(perpPosition);\n const [settledPosition, dustBaa, _] = this.getSettledLPPosition(\n market.marketIndex\n );\n perpPosition.baseAssetAmount = settledPosition.baseAssetAmount.add(dustBaa);\n perpPosition.quoteAssetAmount = settledPosition.quoteAssetAmount;\n const [totalOpenBids, totalOpenAsks] = this.getPerpBidAsks(\n market.marketIndex\n );\n perpPosition.openAsks = totalOpenAsks;\n perpPosition.openBids = totalOpenBids;\n }\n let valuationPrice = this.getOracleDataForPerpMarket(\n market.marketIndex\n ).price;\n if (isVariant(market.status, \"settlement\")) {\n valuationPrice = market.expiryPrice;\n }\n const baseAssetAmount = includeOpenOrders ? calculateWorstCaseBaseAssetAmount(perpPosition) : perpPosition.baseAssetAmount;\n let baseAssetValue = baseAssetAmount.abs().mul(valuationPrice).div(AMM_TO_QUOTE_PRECISION_RATIO.mul(PRICE_PRECISION));\n if (marginCategory) {\n let marginRatio = new BN(\n calculateMarketMarginRatio(\n market,\n baseAssetAmount.abs(),\n marginCategory\n )\n );\n if (marginCategory === \"Initial\") {\n marginRatio = BN.max(\n marginRatio,\n new BN(this.getUserAccount().maxMarginRatio)\n );\n }\n if (liquidationBuffer !== void 0) {\n marginRatio = marginRatio.add(liquidationBuffer);\n }\n if (isVariant(market.status, \"settlement\")) {\n marginRatio = ZERO;\n }\n baseAssetValue = baseAssetValue.mul(marginRatio).div(MARGIN_PRECISION);\n if (includeOpenOrders) {\n baseAssetValue = baseAssetValue.add(\n new BN(perpPosition.openOrders).mul(OPEN_ORDER_MARGIN_REQUIREMENT)\n );\n }\n }\n return totalPerpValue.add(baseAssetValue);\n },\n ZERO\n );\n }\n getPerpPositionValue(marketIndex, oraclePriceData) {\n const userPosition = this.getPerpPosition(marketIndex) || this.getEmptyPosition(marketIndex);\n const market = this.driftClient.getPerpMarketAccount(\n userPosition.marketIndex\n );\n return calculateBaseAssetValueWithOracle(\n market,\n userPosition,\n oraclePriceData\n );\n }\n getPositionSide(currentPosition) {\n if (currentPosition.baseAssetAmount.gt(ZERO)) {\n return PositionDirection.LONG;\n } else if (currentPosition.baseAssetAmount.lt(ZERO)) {\n return PositionDirection.SHORT;\n } else {\n return void 0;\n }\n }\n getPositionEstimatedExitPriceAndPnl(position, amountToClose, useAMMClose = false) {\n const market = this.driftClient.getPerpMarketAccount(position.marketIndex);\n const entryPrice = calculateEntryPrice(position);\n const oraclePriceData = this.getOracleDataForPerpMarket(\n position.marketIndex\n );\n if (amountToClose) {\n if (amountToClose.eq(ZERO)) {\n return [calculateReservePrice(market, oraclePriceData), ZERO];\n }\n position = {\n baseAssetAmount: amountToClose,\n lastCumulativeFundingRate: position.lastCumulativeFundingRate,\n marketIndex: position.marketIndex,\n quoteAssetAmount: position.quoteAssetAmount\n };\n }\n let baseAssetValue;\n if (useAMMClose) {\n baseAssetValue = calculateBaseAssetValue(\n market,\n position,\n oraclePriceData\n );\n } else {\n baseAssetValue = calculateBaseAssetValueWithOracle(\n market,\n position,\n oraclePriceData\n );\n }\n if (position.baseAssetAmount.eq(ZERO)) {\n return [ZERO, ZERO];\n }\n const exitPrice = baseAssetValue.mul(AMM_TO_QUOTE_PRECISION_RATIO).mul(PRICE_PRECISION).div(position.baseAssetAmount.abs());\n const pnlPerBase = exitPrice.sub(entryPrice);\n const pnl = pnlPerBase.mul(position.baseAssetAmount).div(PRICE_PRECISION).div(AMM_TO_QUOTE_PRECISION_RATIO);\n return [exitPrice, pnl];\n }\n getLeverage() {\n const totalLiabilityValue = this.getTotalLiabilityValue();\n const totalAssetValue = this.getTotalAssetValue();\n if (totalAssetValue.eq(ZERO) && totalLiabilityValue.eq(ZERO)) {\n return ZERO;\n }\n return totalLiabilityValue.mul(TEN_THOUSAND).div(totalAssetValue);\n }\n getTotalLiabilityValue(marginCategory) {\n return this.getTotalPerpPositionValue(marginCategory, void 0, true).add(\n this.getSpotMarketLiabilityValue(\n void 0,\n marginCategory,\n void 0,\n true\n )\n );\n }\n getTotalAssetValue(marginCategory) {\n return this.getSpotMarketAssetValue(void 0, marginCategory, true).add(\n this.getUnrealizedPNL(true, void 0, marginCategory)\n );\n }\n getMaxLeverage(marketIndex, category = \"Initial\") {\n const market = this.driftClient.getPerpMarketAccount(marketIndex);\n const totalAssetValue = this.getTotalAssetValue();\n if (totalAssetValue.eq(ZERO)) {\n return ZERO;\n }\n const totalLiabilityValue = this.getTotalLiabilityValue();\n const marginRatio = calculateMarketMarginRatio(\n market,\n ZERO,\n category\n );\n const freeCollateral = this.getFreeCollateral();\n const additionalLiabilities = freeCollateral.mul(MARGIN_PRECISION).div(new BN(marginRatio));\n return totalLiabilityValue.add(additionalLiabilities).mul(TEN_THOUSAND).div(totalAssetValue);\n }\n getMarginRatio(marginCategory) {\n const totalLiabilityValue = this.getTotalLiabilityValue(marginCategory);\n if (totalLiabilityValue.eq(ZERO)) {\n return BN_MAX;\n }\n const totalAssetValue = this.getTotalAssetValue(marginCategory);\n return totalAssetValue.mul(TEN_THOUSAND).div(totalLiabilityValue);\n }\n canBeLiquidated() {\n const totalCollateral = this.getTotalCollateral(\"Maintenance\");\n let liquidationBuffer = void 0;\n const isBeingLiquidated = isVariant(\n this.getUserAccount().status,\n \"beingLiquidated\"\n );\n if (isBeingLiquidated) {\n liquidationBuffer = new BN(\n this.driftClient.getStateAccount().liquidationMarginBufferRatio\n );\n }\n const maintenanceRequirement = this.getMaintenanceMarginRequirement(liquidationBuffer);\n return totalCollateral.lt(maintenanceRequirement);\n }\n isBeingLiquidated() {\n return isOneOfVariant(this.getUserAccount().status, [\n \"beingLiquidated\",\n \"bankrupt\"\n ]);\n }\n isBankrupt() {\n return isVariant(this.getUserAccount().status, \"bankrupt\");\n }\n needsToSettleFundingPayment() {\n for (const userPosition of this.getUserAccount().perpPositions) {\n if (userPosition.baseAssetAmount.eq(ZERO)) {\n continue;\n }\n const market = this.driftClient.getPerpMarketAccount(\n userPosition.marketIndex\n );\n if (market.amm.cumulativeFundingRateLong.eq(\n userPosition.lastCumulativeFundingRate\n ) || market.amm.cumulativeFundingRateShort.eq(\n userPosition.lastCumulativeFundingRate\n )) {\n continue;\n }\n return true;\n }\n return false;\n }\n spotLiquidationPrice(spotPosition) {\n const currentSpotPosition = this.getSpotPosition(spotPosition.marketIndex);\n const mtc = this.getTotalCollateral(\"Maintenance\");\n const mmr = this.getMaintenanceMarginRequirement();\n const deltaValueToLiq = mtc.sub(mmr);\n const currentSpotMarket = this.driftClient.getSpotMarketAccount(\n spotPosition.marketIndex\n );\n const tokenAmount = getTokenAmount(\n currentSpotPosition.scaledBalance,\n currentSpotMarket,\n currentSpotPosition.balanceType\n );\n const tokenAmountQP = tokenAmount.mul(QUOTE_PRECISION).div(new BN(10 ** currentSpotMarket.decimals));\n if (tokenAmountQP.abs().eq(ZERO)) {\n return new BN(-1);\n }\n let liqPriceDelta;\n if (isVariant(currentSpotPosition.balanceType, \"borrow\")) {\n liqPriceDelta = deltaValueToLiq.mul(PRICE_PRECISION).mul(SPOT_MARKET_WEIGHT_PRECISION).div(tokenAmountQP).div(new BN(currentSpotMarket.maintenanceLiabilityWeight));\n } else {\n liqPriceDelta = deltaValueToLiq.mul(PRICE_PRECISION).mul(SPOT_MARKET_WEIGHT_PRECISION).div(tokenAmountQP).div(new BN(currentSpotMarket.maintenanceAssetWeight)).mul(new BN(-1));\n }\n const currentPrice = this.driftClient.getOracleDataForSpotMarket(\n spotPosition.marketIndex\n ).price;\n const liqPrice = currentPrice.add(liqPriceDelta);\n return liqPrice;\n }\n liquidationPrice(perpPosition, positionBaseSizeChange = ZERO) {\n const totalCollateral = this.getTotalCollateral();\n const totalPositionValueExcludingTargetMarket = this.getTotalPerpPositionValueExcludingMarket(perpPosition.marketIndex);\n const currentPerpPosition = this.getPerpPosition(perpPosition.marketIndex) || this.getEmptyPosition(perpPosition.marketIndex);\n const currentPerpPositionBaseSize = currentPerpPosition.baseAssetAmount;\n const proposedBaseAssetAmount = currentPerpPositionBaseSize.add(\n positionBaseSizeChange\n );\n const proposedPerpPosition = {\n marketIndex: perpPosition.marketIndex,\n baseAssetAmount: proposedBaseAssetAmount,\n remainderBaseAssetAmount: 0,\n quoteAssetAmount: new BN(0),\n lastCumulativeFundingRate: ZERO,\n quoteBreakEvenAmount: new BN(0),\n quoteEntryAmount: new BN(0),\n openOrders: 0,\n openBids: new BN(0),\n openAsks: new BN(0),\n settledPnl: ZERO,\n lpShares: ZERO,\n lastBaseAssetAmountPerLp: ZERO,\n lastQuoteAssetAmountPerLp: ZERO\n };\n if (proposedBaseAssetAmount.eq(ZERO))\n return new BN(-1);\n const market = this.driftClient.getPerpMarketAccount(\n proposedPerpPosition.marketIndex\n );\n const proposedPerpPositionValue = calculateBaseAssetValueWithOracle(\n market,\n proposedPerpPosition,\n this.getOracleDataForPerpMarket(market.marketIndex)\n );\n const totalPositionValueAfterTrade = totalPositionValueExcludingTargetMarket.add(proposedPerpPositionValue);\n const marginRequirementExcludingTargetMarket = this.getUserAccount().perpPositions.reduce(\n (totalMarginRequirement, position) => {\n if (position.marketIndex !== perpPosition.marketIndex) {\n const market2 = this.driftClient.getPerpMarketAccount(\n position.marketIndex\n );\n const positionValue = calculateBaseAssetValueWithOracle(\n market2,\n position,\n this.getOracleDataForPerpMarket(market2.marketIndex)\n );\n const marketMarginRequirement = positionValue.mul(\n new BN(\n calculateMarketMarginRatio(\n market2,\n position.baseAssetAmount.abs(),\n \"Maintenance\"\n )\n )\n ).div(MARGIN_PRECISION);\n totalMarginRequirement = totalMarginRequirement.add(\n marketMarginRequirement\n );\n }\n return totalMarginRequirement;\n },\n ZERO\n );\n const freeCollateralExcludingTargetMarket = totalCollateral.sub(\n marginRequirementExcludingTargetMarket\n );\n if (totalPositionValueAfterTrade.lte(freeCollateralExcludingTargetMarket) && proposedPerpPosition.baseAssetAmount.abs().gt(ZERO)) {\n return new BN(-1);\n }\n const marginRequirementAfterTrade = marginRequirementExcludingTargetMarket.add(\n proposedPerpPositionValue.mul(\n new BN(\n calculateMarketMarginRatio(\n market,\n proposedPerpPosition.baseAssetAmount.abs(),\n \"Maintenance\"\n )\n )\n ).div(MARGIN_PRECISION)\n );\n const freeCollateralAfterTrade = totalCollateral.sub(\n marginRequirementAfterTrade\n );\n const marketMaxLeverage = this.getMaxLeverage(\n proposedPerpPosition.marketIndex,\n \"Maintenance\"\n );\n let priceDelta;\n if (proposedBaseAssetAmount.lt(ZERO)) {\n priceDelta = freeCollateralAfterTrade.mul(marketMaxLeverage).div(marketMaxLeverage.add(TEN_THOUSAND)).mul(PRICE_TO_QUOTE_PRECISION).mul(AMM_RESERVE_PRECISION).div(proposedBaseAssetAmount);\n } else {\n priceDelta = freeCollateralAfterTrade.mul(marketMaxLeverage).div(marketMaxLeverage.sub(TEN_THOUSAND)).mul(PRICE_TO_QUOTE_PRECISION).mul(AMM_RESERVE_PRECISION).div(proposedBaseAssetAmount);\n }\n let markPriceAfterTrade;\n if (positionBaseSizeChange.eq(ZERO)) {\n markPriceAfterTrade = calculateReservePrice(\n this.driftClient.getPerpMarketAccount(perpPosition.marketIndex),\n this.getOracleDataForPerpMarket(perpPosition.marketIndex)\n );\n } else {\n const direction = positionBaseSizeChange.gt(ZERO) ? PositionDirection.LONG : PositionDirection.SHORT;\n markPriceAfterTrade = calculateTradeSlippage(\n direction,\n positionBaseSizeChange.abs(),\n this.driftClient.getPerpMarketAccount(perpPosition.marketIndex),\n \"base\",\n this.getOracleDataForPerpMarket(perpPosition.marketIndex)\n )[3];\n }\n if (priceDelta.gt(markPriceAfterTrade)) {\n return new BN(-1);\n }\n return markPriceAfterTrade.sub(priceDelta);\n }\n liquidationPriceAfterClose(positionMarketIndex, closeQuoteAmount) {\n const currentPosition = this.getPerpPosition(positionMarketIndex) || this.getEmptyPosition(positionMarketIndex);\n const closeBaseAmount = currentPosition.baseAssetAmount.mul(closeQuoteAmount).div(currentPosition.quoteAssetAmount.abs()).add(\n currentPosition.baseAssetAmount.mul(closeQuoteAmount).mod(currentPosition.quoteAssetAmount.abs())\n ).neg();\n return this.liquidationPrice(\n {\n marketIndex: positionMarketIndex\n },\n closeBaseAmount\n );\n }\n getMaxTradeSizeUSDC(targetMarketIndex, tradeSide) {\n const currentPosition = this.getPerpPosition(targetMarketIndex) || this.getEmptyPosition(targetMarketIndex);\n const targetSide = isVariant(tradeSide, \"short\") ? \"short\" : \"long\";\n const currentPositionSide = (currentPosition == null ? void 0 : currentPosition.baseAssetAmount.isNeg()) ? \"short\" : \"long\";\n const targetingSameSide = !currentPosition ? true : targetSide === currentPositionSide;\n const oracleData = this.getOracleDataForPerpMarket(targetMarketIndex);\n const oppositeSizeValueUSDC = targetingSameSide ? ZERO : this.getPerpPositionValue(targetMarketIndex, oracleData);\n let maxPositionSize = this.getBuyingPower(targetMarketIndex);\n if (maxPositionSize.gte(ZERO)) {\n if (oppositeSizeValueUSDC.eq(ZERO)) {\n } else {\n maxPositionSize = maxPositionSize.add(\n oppositeSizeValueUSDC.mul(new BN(2))\n );\n }\n } else {\n if (!targetingSameSide) {\n const market = this.driftClient.getPerpMarketAccount(targetMarketIndex);\n const perpPositionValue = this.getPerpPositionValue(\n targetMarketIndex,\n oracleData\n );\n const totalCollateral = this.getTotalCollateral();\n const marginRequirement = this.getInitialMarginRequirement();\n const marginFreedByClosing = perpPositionValue.mul(new BN(market.marginRatioInitial)).div(MARGIN_PRECISION);\n const marginRequirementAfterClosing = marginRequirement.sub(marginFreedByClosing);\n if (marginRequirementAfterClosing.gt(totalCollateral)) {\n maxPositionSize = perpPositionValue;\n } else {\n const freeCollateralAfterClose = totalCollateral.sub(\n marginRequirementAfterClosing\n );\n const buyingPowerAfterClose = freeCollateralAfterClose.mul(this.getMaxLeverage(targetMarketIndex)).div(TEN_THOUSAND);\n maxPositionSize = perpPositionValue.add(buyingPowerAfterClose);\n }\n } else {\n }\n }\n const oneMilli = maxPositionSize.div(QUOTE_PRECISION);\n return maxPositionSize.sub(oneMilli);\n }\n accountLeverageRatioAfterTrade(targetMarketIndex, tradeQuoteAmount, tradeSide, includeOpenOrders = true) {\n const currentPosition = this.getPerpPosition(targetMarketIndex) || this.getEmptyPosition(targetMarketIndex);\n const oracleData = this.getOracleDataForPerpMarket(targetMarketIndex);\n let currentPositionQuoteAmount = this.getPerpPositionValue(\n targetMarketIndex,\n oracleData\n );\n const currentSide = currentPosition && currentPosition.baseAssetAmount.isNeg() ? PositionDirection.SHORT : PositionDirection.LONG;\n if (currentSide === PositionDirection.SHORT)\n currentPositionQuoteAmount = currentPositionQuoteAmount.neg();\n if (tradeSide === PositionDirection.SHORT)\n tradeQuoteAmount = tradeQuoteAmount.neg();\n const currentPerpPositionAfterTrade = currentPositionQuoteAmount.add(tradeQuoteAmount).abs();\n const totalPositionAfterTradeExcludingTargetMarket = this.getTotalPerpPositionValueExcludingMarket(\n targetMarketIndex,\n void 0,\n void 0,\n includeOpenOrders\n );\n const totalAssetValue = this.getTotalAssetValue();\n const totalPerpPositionValue = currentPerpPositionAfterTrade.add(totalPositionAfterTradeExcludingTargetMarket).abs();\n const totalLiabilitiesAfterTrade = totalPerpPositionValue.add(\n this.getSpotMarketLiabilityValue(void 0, void 0, void 0, false)\n );\n if (totalAssetValue.eq(ZERO) && totalLiabilitiesAfterTrade.eq(ZERO)) {\n return ZERO;\n }\n const newLeverage = totalLiabilitiesAfterTrade.mul(TEN_THOUSAND).div(totalAssetValue);\n return newLeverage;\n }\n calculateFeeForQuoteAmount(quoteAmount) {\n const feeTier = this.driftClient.getStateAccount().perpFeeStructure.feeTiers[0];\n return quoteAmount.mul(new BN(feeTier.feeNumerator)).div(new BN(feeTier.feeDenominator));\n }\n getWithdrawalLimit(marketIndex, reduceOnly) {\n const nowTs = new BN(Math.floor(Date.now() / 1e3));\n const spotMarket = this.driftClient.getSpotMarketAccount(marketIndex);\n const { borrowLimit, withdrawLimit } = calculateWithdrawLimit(\n spotMarket,\n nowTs\n );\n const freeCollateral = this.getFreeCollateral();\n const oracleData = this.getOracleDataForSpotMarket(marketIndex);\n const precisionIncrease = TEN.pow(new BN(spotMarket.decimals - 6));\n const amountWithdrawable = freeCollateral.mul(MARGIN_PRECISION).div(new BN(spotMarket.initialAssetWeight)).mul(PRICE_PRECISION).div(oracleData.price).mul(precisionIncrease);\n const userSpotPosition = this.getUserAccount().spotPositions.find(\n (spotPosition) => isVariant(spotPosition.balanceType, \"deposit\") && spotPosition.marketIndex == marketIndex\n );\n const userSpotBalance = userSpotPosition ? getTokenAmount(\n userSpotPosition.scaledBalance,\n this.driftClient.getSpotMarketAccount(marketIndex),\n SpotBalanceType.DEPOSIT\n ) : ZERO;\n const maxWithdrawValue = BN.min(\n BN.min(amountWithdrawable, userSpotBalance),\n withdrawLimit.abs()\n );\n if (reduceOnly) {\n return BN.max(maxWithdrawValue, ZERO);\n } else {\n const weightedAssetValue = this.getSpotMarketAssetValue(\n marketIndex,\n \"Initial\",\n false\n );\n const freeCollatAfterWithdraw = userSpotBalance.gt(ZERO) ? freeCollateral.sub(weightedAssetValue) : freeCollateral;\n const maxLiabilityAllowed = freeCollatAfterWithdraw.mul(MARGIN_PRECISION).div(new BN(spotMarket.initialLiabilityWeight)).mul(PRICE_PRECISION).div(oracleData.price).mul(precisionIncrease);\n const maxBorrowValue = BN.min(\n maxWithdrawValue.add(maxLiabilityAllowed),\n borrowLimit.abs()\n );\n return BN.max(maxBorrowValue, ZERO);\n }\n }\n getTotalPerpPositionValueExcludingMarket(marketToIgnore, marginCategory, liquidationBuffer, includeOpenOrders) {\n const currentPerpPosition = this.getPerpPosition(marketToIgnore) || this.getEmptyPosition(marketToIgnore);\n const oracleData = this.getOracleDataForPerpMarket(marketToIgnore);\n let currentPerpPositionValueUSDC = ZERO;\n if (currentPerpPosition) {\n currentPerpPositionValueUSDC = this.getPerpPositionValue(\n marketToIgnore,\n oracleData\n );\n }\n return this.getTotalPerpPositionValue(\n marginCategory,\n liquidationBuffer,\n includeOpenOrders\n ).sub(currentPerpPositionValueUSDC);\n }\n getOracleDataForPerpMarket(marketIndex) {\n const oracleKey = this.driftClient.getPerpMarketAccount(marketIndex).amm.oracle;\n const oracleData = this.driftClient.getOraclePriceDataAndSlot(oracleKey).data;\n return oracleData;\n }\n getOracleDataForSpotMarket(marketIndex) {\n const oracleKey = this.driftClient.getSpotMarketAccount(marketIndex).oracle;\n const oracleData = this.driftClient.getOraclePriceDataAndSlot(oracleKey).data;\n return oracleData;\n }\n};\n\n// src/constants/spotMarkets.ts\nimport { PublicKey as PublicKey8 } from \"@solana/web3.js\";\nvar WRAPPED_SOL_MINT = new PublicKey8(\n \"So11111111111111111111111111111111111111112\"\n);\nvar DevnetSpotMarkets = [\n {\n symbol: \"USDC\",\n marketIndex: 0,\n oracle: PublicKey8.default,\n oracleSource: OracleSource.QUOTE_ASSET,\n mint: new PublicKey8(\"8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2\"),\n precision: new BN(10).pow(SIX),\n precisionExp: SIX\n },\n {\n symbol: \"SOL\",\n marketIndex: 1,\n oracle: new PublicKey8(\"J83w4HKfqxwcq3BEMMkPFSppX3gqekLyLJBexebFVkix\"),\n oracleSource: OracleSource.PYTH,\n mint: new PublicKey8(WRAPPED_SOL_MINT),\n precision: LAMPORTS_PRECISION,\n precisionExp: LAMPORTS_EXP,\n serumMarket: new PublicKey8(\"8N37SsnTu8RYxtjrV9SStjkkwVhmU8aCWhLvwduAPEKW\")\n },\n {\n symbol: \"BTC\",\n marketIndex: 2,\n oracle: new PublicKey8(\"HovQMDrbAgAYPCmHVSrezcSmkMtXSSUsLDFANExrZh2J\"),\n oracleSource: OracleSource.PYTH,\n mint: new PublicKey8(\"3BZPwbcqB5kKScF3TEXxwNfx5ipV13kbRVDvfVp5c6fv\"),\n precision: new BN(10).pow(SIX),\n precisionExp: SIX,\n serumMarket: new PublicKey8(\"AGsmbVu3MS9u68GEYABWosQQCZwmLcBHu4pWEuBYH7Za\")\n }\n];\nvar MainnetSpotMarkets = [\n {\n symbol: \"USDC\",\n marketIndex: 0,\n oracle: PublicKey8.default,\n oracleSource: OracleSource.QUOTE_ASSET,\n mint: new PublicKey8(\"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"),\n precision: QUOTE_PRECISION,\n precisionExp: QUOTE_PRECISION_EXP\n },\n {\n symbol: \"SOL\",\n marketIndex: 1,\n oracle: new PublicKey8(\"H6ARHf6YXhGYeQfUzQNGk6rDNnLBQKrenN712K4AQJEG\"),\n oracleSource: OracleSource.PYTH,\n mint: new PublicKey8(WRAPPED_SOL_MINT),\n precision: LAMPORTS_PRECISION,\n precisionExp: LAMPORTS_EXP,\n serumMarket: new PublicKey8(\"8BnEgHoWFysVcuFFX7QztDmzuH8r5ZFvyP3sYwn1XTh6\")\n }\n];\nvar SpotMarkets = {\n devnet: DevnetSpotMarkets,\n \"mainnet-beta\": MainnetSpotMarkets\n};\n\n// src/config.ts\nvar configs = {\n devnet: {\n ENV: \"devnet\",\n PYTH_ORACLE_MAPPING_ADDRESS: \"BmA9Z6FjioHJPpjT39QazZyhDRUdZy2ezwx4GiDdE2u2\",\n DRIFT_PROGRAM_ID: \"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH\",\n USDC_MINT_ADDRESS: \"8zGuJQqwhZafTah7Uc7Z4tXRnguqkn5KLFAP8oV6PHe2\",\n SERUM_V3: \"DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY\",\n V2_ALPHA_TICKET_MINT_ADDRESS: \"DeEiGWfCMP9psnLGkxGrBBMEAW5Jv8bBGMN8DCtFRCyB\",\n PERP_MARKETS: DevnetPerpMarkets,\n SPOT_MARKETS: DevnetSpotMarkets\n },\n \"mainnet-beta\": {\n ENV: \"mainnet-beta\",\n PYTH_ORACLE_MAPPING_ADDRESS: \"AHtgzX45WTKfkPG53L6WYhGEXwQkN1BVknET3sVsLL8J\",\n DRIFT_PROGRAM_ID: \"dRiftyHA39MWEi3m9aunc5MzRF1JYuBsbn6VPcn33UH\",\n USDC_MINT_ADDRESS: \"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\",\n SERUM_V3: \"srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX\",\n V2_ALPHA_TICKET_MINT_ADDRESS: \"Cmvhycb6LQvvzaShGw4iDHRLzeSSryioAsU98DSSkMNa\",\n PERP_MARKETS: MainnetPerpMarkets,\n SPOT_MARKETS: MainnetSpotMarkets\n }\n};\nvar currentConfig = configs.devnet;\nvar getConfig = () => currentConfig;\nvar initialize = (props) => {\n var _a, _b;\n if (props.env === \"master\")\n return { ...configs[\"devnet\"], ...(_a = props.overrideEnv) != null ? _a : {} };\n currentConfig = { ...configs[props.env], ...(_b = props.overrideEnv) != null ? _b : {} };\n return currentConfig;\n};\nfunction getMarketsAndOraclesForSubscription(env) {\n const perpMarketIndexes = [];\n const spotMarketIndexes = [];\n const oracleInfos = /* @__PURE__ */ new Map();\n for (const market of PerpMarkets[env]) {\n perpMarketIndexes.push(market.marketIndex);\n oracleInfos.set(market.oracle.toString(), {\n publicKey: market.oracle,\n source: market.oracleSource\n });\n }\n for (const spotMarket of SpotMarkets[env]) {\n spotMarketIndexes.push(spotMarket.marketIndex);\n oracleInfos.set(spotMarket.oracle.toString(), {\n publicKey: spotMarket.oracle,\n source: spotMarket.oracleSource\n });\n }\n return {\n perpMarketIndexes,\n spotMarketIndexes,\n oracleInfos: Array.from(oracleInfos.values())\n };\n}\n\n// src/userStats.ts\nimport { PublicKey as PublicKey9 } from \"@solana/web3.js\";\n\n// src/accounts/webSocketUserStatsAccountSubsriber.ts\nimport { EventEmitter as EventEmitter8 } from \"events\";\nvar WebSocketUserStatsAccountSubscriber = class {\n constructor(program2, userStatsAccountPublicKey) {\n this.isSubscribed = false;\n this.program = program2;\n this.userStatsAccountPublicKey = userStatsAccountPublicKey;\n this.eventEmitter = new EventEmitter8();\n }\n async subscribe() {\n if (this.isSubscribed) {\n return true;\n }\n this.userStatsAccountSubscriber = new WebSocketAccountSubscriber(\n \"userStats\",\n this.program,\n this.userStatsAccountPublicKey\n );\n await this.userStatsAccountSubscriber.subscribe(\n (data) => {\n this.eventEmitter.emit(\"userStatsAccountUpdate\", data);\n this.eventEmitter.emit(\"update\");\n }\n );\n this.eventEmitter.emit(\"update\");\n this.isSubscribed = true;\n return true;\n }\n async fetch() {\n await Promise.all([this.userStatsAccountSubscriber.fetch()]);\n }\n async unsubscribe() {\n if (!this.isSubscribed) {\n return;\n }\n await Promise.all([this.userStatsAccountSubscriber.unsubscribe()]);\n this.isSubscribed = false;\n }\n assertIsSubscribed() {\n if (!this.isSubscribed) {\n throw new NotSubscribedError(\n \"You must call `subscribe` before using this function\"\n );\n }\n }\n getUserStatsAccountAndSlot() {\n this.assertIsSubscribed();\n return this.userStatsAccountSubscriber.dataAndSlot;\n }\n};\n\n// src/userStats.ts\nvar UserStats = class {\n constructor(config) {\n var _a;\n this.driftClient = config.driftClient;\n this.userStatsAccountPublicKey = config.userStatsAccountPublicKey;\n if (((_a = config.accountSubscription) == null ? void 0 : _a.type) === \"polling\") {\n this.accountSubscriber = new PollingUserStatsAccountSubscriber(\n config.driftClient.program,\n config.userStatsAccountPublicKey,\n config.accountSubscription.accountLoader\n );\n } else {\n this.accountSubscriber = new WebSocketUserStatsAccountSubscriber(\n config.driftClient.program,\n config.userStatsAccountPublicKey\n );\n }\n }\n async subscribe() {\n this.isSubscribed = await this.accountSubscriber.subscribe();\n return this.isSubscribed;\n }\n async fetchAccounts() {\n await this.accountSubscriber.fetch();\n }\n async unsubscribe() {\n await this.accountSubscriber.unsubscribe();\n this.isSubscribed = false;\n }\n getAccountAndSlot() {\n return this.accountSubscriber.getUserStatsAccountAndSlot();\n }\n getAccount() {\n return this.accountSubscriber.getUserStatsAccountAndSlot().data;\n }\n getReferrerInfo() {\n if (this.getAccount().referrer.equals(PublicKey9.default)) {\n return void 0;\n } else {\n return {\n referrer: getUserAccountPublicKeySync(\n this.driftClient.program.programId,\n this.getAccount().referrer,\n 0\n ),\n referrerStats: getUserStatsAccountPublicKey(\n this.driftClient.program.programId,\n this.getAccount().referrer\n )\n };\n }\n }\n};\n\n// src/driftClient.ts\nvar DriftClient = class {\n constructor(config) {\n this.users = /* @__PURE__ */ new Map();\n this._isSubscribed = false;\n this.perpMarketLastSlotCache = /* @__PURE__ */ new Map();\n this.spotMarketLastSlotCache = /* @__PURE__ */ new Map();\n var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j, _k;\n this.connection = config.connection;\n this.wallet = config.wallet;\n this.opts = config.opts || AnchorProvider3.defaultOptions();\n this.provider = new AnchorProvider3(\n config.connection,\n config.wallet,\n this.opts\n );\n this.program = new Program3(\n drift_default,\n config.programID,\n this.provider\n );\n this.authority = (_a = config.authority) != null ? _a : this.wallet.publicKey;\n const subAccountIds = (_b = config.subAccountIds) != null ? _b : [0];\n this.activeSubAccountId = (_c = config.activeSubAccountId) != null ? _c : subAccountIds[0];\n this.userAccountSubscriptionConfig = ((_d = config.accountSubscription) == null ? void 0 : _d.type) === \"polling\" ? {\n type: \"polling\",\n accountLoader: config.accountSubscription.accountLoader\n } : {\n type: \"websocket\"\n };\n this.createUsers(subAccountIds, this.userAccountSubscriptionConfig);\n if (config.userStats) {\n this.userStats = new UserStats({\n driftClient: this,\n userStatsAccountPublicKey: getUserStatsAccountPublicKey(\n this.program.programId,\n this.authority\n ),\n accountSubscription: this.userAccountSubscriptionConfig\n });\n }\n let perpMarketIndexes = config.perpMarketIndexes;\n let spotMarketIndexes = config.spotMarketIndexes;\n let oracleInfos = config.oracleInfos;\n if (config.env) {\n const {\n perpMarketIndexes: envPerpMarketIndexes,\n spotMarketIndexes: envSpotMarketIndexes,\n oracleInfos: envOralceInfos\n } = getMarketsAndOraclesForSubscription(config.env);\n perpMarketIndexes = perpMarketIndexes ? perpMarketIndexes : envPerpMarketIndexes;\n spotMarketIndexes = spotMarketIndexes ? spotMarketIndexes : envSpotMarketIndexes;\n oracleInfos = oracleInfos ? oracleInfos : envOralceInfos;\n }\n if (((_e = config.accountSubscription) == null ? void 0 : _e.type) === \"polling\") {\n this.accountSubscriber = new PollingDriftClientAccountSubscriber(\n this.program,\n config.accountSubscription.accountLoader,\n perpMarketIndexes != null ? perpMarketIndexes : [],\n spotMarketIndexes != null ? spotMarketIndexes : [],\n oracleInfos != null ? oracleInfos : []\n );\n } else {\n this.accountSubscriber = new WebSocketDriftClientAccountSubscriber(\n this.program,\n (_f = config.perpMarketIndexes) != null ? _f : [],\n (_g = config.spotMarketIndexes) != null ? _g : [],\n (_h = config.oracleInfos) != null ? _h : []\n );\n }\n this.eventEmitter = this.accountSubscriber.eventEmitter;\n this.txSender = new RetryTxSender(\n this.provider,\n (_i = config.txSenderConfig) == null ? void 0 : _i.timeout,\n (_j = config.txSenderConfig) == null ? void 0 : _j.retrySleep,\n (_k = config.txSenderConfig) == null ? void 0 : _k.additionalConnections\n );\n }\n get isSubscribed() {\n return this._isSubscribed && this.accountSubscriber.isSubscribed;\n }\n set isSubscribed(val) {\n this._isSubscribed = val;\n }\n createUsers(subAccountIds, accountSubscriptionConfig) {\n for (const subAccountId of subAccountIds) {\n const user = this.createUser(subAccountId, accountSubscriptionConfig);\n this.users.set(subAccountId, user);\n }\n }\n createUser(subAccountId, accountSubscriptionConfig) {\n const userAccountPublicKey = getUserAccountPublicKeySync(\n this.program.programId,\n this.authority,\n subAccountId\n );\n return new User({\n driftClient: this,\n userAccountPublicKey,\n accountSubscription: accountSubscriptionConfig\n });\n }\n async subscribe() {\n let subscribePromises = this.subscribeUsers().concat(\n this.accountSubscriber.subscribe()\n );\n if (this.userStats !== void 0) {\n subscribePromises = subscribePromises.concat(this.userStats.subscribe());\n }\n this.isSubscribed = (await Promise.all(subscribePromises)).reduce(\n (success, prevSuccess) => success && prevSuccess\n );\n return this.isSubscribed;\n }\n subscribeUsers() {\n return [...this.users.values()].map((user) => user.subscribe());\n }\n async fetchAccounts() {\n let promises = [...this.users.values()].map((user) => user.fetchAccounts()).concat(this.accountSubscriber.fetch());\n if (this.userStats) {\n promises = promises.concat(this.userStats.fetchAccounts());\n }\n await Promise.all(promises);\n }\n async unsubscribe() {\n let unsubscribePromises = this.unsubscribeUsers().concat(\n this.accountSubscriber.unsubscribe()\n );\n if (this.userStats !== void 0) {\n unsubscribePromises = unsubscribePromises.concat(\n this.userStats.unsubscribe()\n );\n }\n await Promise.all(unsubscribePromises);\n this.isSubscribed = false;\n }\n unsubscribeUsers() {\n return [...this.users.values()].map((user) => user.unsubscribe());\n }\n async getStatePublicKey() {\n if (this.statePublicKey) {\n return this.statePublicKey;\n }\n this.statePublicKey = await getDriftStateAccountPublicKey(\n this.program.programId\n );\n return this.statePublicKey;\n }\n getSignerPublicKey() {\n if (this.signerPublicKey) {\n return this.signerPublicKey;\n }\n this.signerPublicKey = getDriftSignerPublicKey(this.program.programId);\n return this.signerPublicKey;\n }\n getStateAccount() {\n return this.accountSubscriber.getStateAccountAndSlot().data;\n }\n async forceGetStateAccount() {\n await this.accountSubscriber.fetch();\n return this.accountSubscriber.getStateAccountAndSlot().data;\n }\n getPerpMarketAccount(marketIndex) {\n var _a;\n return (_a = this.accountSubscriber.getMarketAccountAndSlot(marketIndex)) == null ? void 0 : _a.data;\n }\n async forceGetPerpMarketAccount(marketIndex) {\n var _a;\n await this.accountSubscriber.fetch();\n return (_a = this.accountSubscriber.getMarketAccountAndSlot(marketIndex)) == null ? void 0 : _a.data;\n }\n getPerpMarketAccounts() {\n return this.accountSubscriber.getMarketAccountsAndSlots().map((value) => value.data);\n }\n getSpotMarketAccount(marketIndex) {\n return this.accountSubscriber.getSpotMarketAccountAndSlot(marketIndex).data;\n }\n async forceGetSpotMarketAccount(marketIndex) {\n await this.accountSubscriber.fetch();\n return this.accountSubscriber.getSpotMarketAccountAndSlot(marketIndex).data;\n }\n getSpotMarketAccounts() {\n return this.accountSubscriber.getSpotMarketAccountsAndSlots().map((value) => value.data);\n }\n getQuoteSpotMarketAccount() {\n return this.accountSubscriber.getSpotMarketAccountAndSlot(\n QUOTE_SPOT_MARKET_INDEX\n ).data;\n }\n getOraclePriceDataAndSlot(oraclePublicKey) {\n return this.accountSubscriber.getOraclePriceDataAndSlot(oraclePublicKey);\n }\n async getSerumV3FulfillmentConfig(serumMarket) {\n const address = await getSerumFulfillmentConfigPublicKey(\n this.program.programId,\n serumMarket\n );\n return await this.program.account.serumV3FulfillmentConfig.fetch(\n address\n );\n }\n async updateWallet(newWallet, subAccountIds = [0], activeSubAccountId = 0) {\n const newProvider = new AnchorProvider3(\n this.connection,\n newWallet,\n this.opts\n );\n const newProgram = new Program3(\n drift_default,\n this.program.programId,\n newProvider\n );\n this.txSender.provider = newProvider;\n this.wallet = newWallet;\n this.provider = newProvider;\n this.program = newProgram;\n this.authority = newWallet.publicKey;\n if (this.isSubscribed) {\n await Promise.all(this.unsubscribeUsers());\n if (this.userStats) {\n await this.userStats.unsubscribe();\n this.userStats = new UserStats({\n driftClient: this,\n userStatsAccountPublicKey: getUserStatsAccountPublicKey(\n this.program.programId,\n this.authority\n ),\n accountSubscription: this.userAccountSubscriptionConfig\n });\n }\n }\n this.users.clear();\n this.createUsers(subAccountIds, this.userAccountSubscriptionConfig);\n if (this.isSubscribed) {\n await Promise.all(this.subscribeUsers());\n if (this.userStats) {\n await this.userStats.subscribe();\n }\n }\n this.activeSubAccountId = activeSubAccountId;\n this.userStatsAccountPublicKey = void 0;\n }\n async switchActiveUser(subAccountId) {\n this.activeSubAccountId = subAccountId;\n }\n async addUser(subAccountId) {\n if (this.users.has(subAccountId)) {\n return;\n }\n const user = this.createUser(\n subAccountId,\n this.userAccountSubscriptionConfig\n );\n await user.subscribe();\n this.users.set(subAccountId, user);\n }\n async initializeUserAccount(subAccountId = 0, name = DEFAULT_USER_NAME, referrerInfo) {\n const [userAccountPublicKey, initializeUserAccountIx] = await this.getInitializeUserInstructions(\n subAccountId,\n name,\n referrerInfo\n );\n const tx = new Transaction3();\n if (subAccountId === 0) {\n if (!await this.checkIfAccountExists(this.getUserStatsAccountPublicKey())) {\n tx.add(await this.getInitializeUserStatsIx());\n }\n }\n tx.add(initializeUserAccountIx);\n const { txSig } = await this.txSender.send(tx, [], this.opts);\n return [txSig, userAccountPublicKey];\n }\n async getInitializeUserInstructions(subAccountId = 0, name = DEFAULT_USER_NAME, referrerInfo) {\n const userAccountPublicKey = await getUserAccountPublicKey(\n this.program.programId,\n this.wallet.publicKey,\n subAccountId\n );\n const remainingAccounts = new Array();\n if (referrerInfo !== void 0) {\n remainingAccounts.push({\n pubkey: referrerInfo.referrer,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: referrerInfo.referrerStats,\n isWritable: true,\n isSigner: false\n });\n }\n const state = this.getStateAccount();\n if (!state.whitelistMint.equals(PublicKey10.default)) {\n const associatedTokenPublicKey = await Token2.getAssociatedTokenAddress(\n ASSOCIATED_TOKEN_PROGRAM_ID2,\n TOKEN_PROGRAM_ID2,\n state.whitelistMint,\n this.wallet.publicKey\n );\n remainingAccounts.push({\n pubkey: associatedTokenPublicKey,\n isWritable: false,\n isSigner: false\n });\n }\n const nameBuffer = encodeName(name);\n const initializeUserAccountIx = await this.program.instruction.initializeUser(subAccountId, nameBuffer, {\n accounts: {\n user: userAccountPublicKey,\n userStats: this.getUserStatsAccountPublicKey(),\n authority: this.wallet.publicKey,\n payer: this.wallet.publicKey,\n rent: anchor3.web3.SYSVAR_RENT_PUBKEY,\n systemProgram: anchor3.web3.SystemProgram.programId,\n state: await this.getStatePublicKey()\n },\n remainingAccounts\n });\n return [userAccountPublicKey, initializeUserAccountIx];\n }\n async getInitializeUserStatsIx() {\n return await this.program.instruction.initializeUserStats({\n accounts: {\n userStats: this.getUserStatsAccountPublicKey(),\n authority: this.wallet.publicKey,\n payer: this.wallet.publicKey,\n rent: anchor3.web3.SYSVAR_RENT_PUBKEY,\n systemProgram: anchor3.web3.SystemProgram.programId,\n state: await this.getStatePublicKey()\n }\n });\n }\n async updateUserName(name, subAccountId = 0) {\n const userAccountPublicKey = getUserAccountPublicKeySync(\n this.program.programId,\n this.wallet.publicKey,\n subAccountId\n );\n const nameBuffer = encodeName(name);\n return await this.program.rpc.updateUserName(subAccountId, nameBuffer, {\n accounts: {\n user: userAccountPublicKey,\n authority: this.wallet.publicKey\n }\n });\n }\n async updateUserCustomMarginRatio(marginRatio, subAccountId = 0) {\n return await this.program.rpc.updateUserCustomMarginRatio(\n subAccountId,\n marginRatio,\n {\n accounts: {\n user: await this.getUserAccountPublicKey(),\n authority: this.wallet.publicKey\n }\n }\n );\n }\n async updateUserMarginTradingEnabled(marginTradingEnabled, subAccountId = 0) {\n const userAccountPublicKey = getUserAccountPublicKeySync(\n this.program.programId,\n this.wallet.publicKey,\n subAccountId\n );\n return await this.program.rpc.updateUserMarginTradingEnabled(\n subAccountId,\n marginTradingEnabled,\n {\n accounts: {\n user: userAccountPublicKey,\n authority: this.wallet.publicKey\n }\n }\n );\n }\n async updateUserDelegate(delegate, subAccountId = 0) {\n return await this.program.rpc.updateUserDelegate(subAccountId, delegate, {\n accounts: {\n user: await this.getUserAccountPublicKey(),\n authority: this.wallet.publicKey\n }\n });\n }\n async getUserAccountsForDelegate(delegate) {\n const programAccounts = await this.program.account.user.all([\n {\n memcmp: {\n offset: 40,\n bytes: bs582.encode(delegate.toBuffer())\n }\n }\n ]);\n return programAccounts.map(\n (programAccount) => programAccount.account\n );\n }\n async getUserAccountsForAuthority(authority) {\n const programAccounts = await this.program.account.user.all([\n {\n memcmp: {\n offset: 8,\n bytes: bs582.encode(authority.toBuffer())\n }\n }\n ]);\n return programAccounts.map(\n (programAccount) => programAccount.account\n );\n }\n async deleteUser(subAccountId = 0) {\n var _a;\n const userAccountPublicKey = getUserAccountPublicKeySync(\n this.program.programId,\n this.wallet.publicKey,\n subAccountId\n );\n const txSig = await this.program.rpc.deleteUser({\n accounts: {\n user: userAccountPublicKey,\n userStats: this.getUserStatsAccountPublicKey(),\n authority: this.wallet.publicKey,\n state: await this.getStatePublicKey()\n }\n });\n await ((_a = this.users.get(subAccountId)) == null ? void 0 : _a.unsubscribe());\n this.users.delete(subAccountId);\n return txSig;\n }\n getUser(subAccountId) {\n subAccountId = subAccountId != null ? subAccountId : this.activeSubAccountId;\n if (!this.users.has(subAccountId)) {\n throw new Error(`Clearing House has no user for user id ${subAccountId}`);\n }\n return this.users.get(subAccountId);\n }\n getUsers() {\n return [...this.users.values()];\n }\n getUserStats() {\n return this.userStats;\n }\n getUserStatsAccountPublicKey() {\n if (this.userStatsAccountPublicKey) {\n return this.userStatsAccountPublicKey;\n }\n this.userStatsAccountPublicKey = getUserStatsAccountPublicKey(\n this.program.programId,\n this.authority\n );\n return this.userStatsAccountPublicKey;\n }\n async getUserAccountPublicKey() {\n return this.getUser().userAccountPublicKey;\n }\n getUserAccount(subAccountId) {\n return this.getUser(subAccountId).getUserAccount();\n }\n async forceGetUserAccount(subAccountId) {\n await this.getUser(subAccountId).fetchAccounts();\n return this.getUser(subAccountId).getUserAccount();\n }\n getUserAccountAndSlot(subAccountId) {\n return this.getUser(subAccountId).getUserAccountAndSlot();\n }\n getSpotPosition(marketIndex) {\n return this.getUserAccount().spotPositions.find(\n (spotPosition) => spotPosition.marketIndex === marketIndex\n );\n }\n getQuoteAssetTokenAmount() {\n const spotMarket = this.getSpotMarketAccount(QUOTE_SPOT_MARKET_INDEX);\n const spotPosition = this.getSpotPosition(QUOTE_SPOT_MARKET_INDEX);\n return getTokenAmount(\n spotPosition.scaledBalance,\n spotMarket,\n spotPosition.balanceType\n );\n }\n getTokenAmount(marketIndex) {\n const spotPosition = this.getSpotPosition(marketIndex);\n if (spotPosition === void 0) {\n return ZERO;\n }\n const spotMarket = this.getSpotMarketAccount(marketIndex);\n return getTokenAmount(\n spotPosition.scaledBalance,\n spotMarket,\n spotPosition.balanceType\n );\n }\n getRemainingAccounts(params) {\n var _a;\n const { oracleAccountMap, spotMarketAccountMap, perpMarketAccountMap } = this.getRemainingAccountMapsForUsers(params.userAccounts);\n if (params.useMarketLastSlotCache) {\n const lastUserSlot = (_a = this.getUserAccountAndSlot()) == null ? void 0 : _a.slot;\n for (const [\n marketIndex,\n slot\n ] of this.perpMarketLastSlotCache.entries()) {\n if (slot > lastUserSlot) {\n const marketAccount = this.getPerpMarketAccount(marketIndex);\n perpMarketAccountMap.set(marketIndex, {\n pubkey: marketAccount.pubkey,\n isSigner: false,\n isWritable: false\n });\n oracleAccountMap.set(marketAccount.amm.oracle.toString(), {\n pubkey: marketAccount.amm.oracle,\n isSigner: false,\n isWritable: false\n });\n } else {\n this.perpMarketLastSlotCache.delete(marketIndex);\n }\n }\n for (const [\n marketIndex,\n slot\n ] of this.spotMarketLastSlotCache.entries()) {\n if (slot > lastUserSlot) {\n const marketAccount = this.getSpotMarketAccount(marketIndex);\n spotMarketAccountMap.set(marketIndex, {\n pubkey: marketAccount.pubkey,\n isSigner: false,\n isWritable: false\n });\n if (!marketAccount.oracle.equals(PublicKey10.default)) {\n oracleAccountMap.set(marketAccount.oracle.toString(), {\n pubkey: marketAccount.oracle,\n isSigner: false,\n isWritable: false\n });\n }\n } else {\n this.spotMarketLastSlotCache.delete(marketIndex);\n }\n }\n }\n if (params.readablePerpMarketIndex !== void 0) {\n const marketAccount = this.getPerpMarketAccount(\n params.readablePerpMarketIndex\n );\n perpMarketAccountMap.set(params.readablePerpMarketIndex, {\n pubkey: marketAccount.pubkey,\n isSigner: false,\n isWritable: false\n });\n oracleAccountMap.set(marketAccount.amm.oracle.toString(), {\n pubkey: marketAccount.amm.oracle,\n isSigner: false,\n isWritable: false\n });\n }\n if (params.writablePerpMarketIndexes !== void 0) {\n for (const writablePerpMarketIndex of params.writablePerpMarketIndexes) {\n const marketAccount = this.getPerpMarketAccount(\n writablePerpMarketIndex\n );\n perpMarketAccountMap.set(writablePerpMarketIndex, {\n pubkey: marketAccount.pubkey,\n isSigner: false,\n isWritable: true\n });\n oracleAccountMap.set(marketAccount.amm.oracle.toString(), {\n pubkey: marketAccount.amm.oracle,\n isSigner: false,\n isWritable: false\n });\n }\n }\n if (params.readableSpotMarketIndexes !== void 0) {\n for (const readableSpotMarketIndex of params.readableSpotMarketIndexes) {\n const spotMarketAccount = this.getSpotMarketAccount(\n readableSpotMarketIndex\n );\n spotMarketAccountMap.set(readableSpotMarketIndex, {\n pubkey: spotMarketAccount.pubkey,\n isSigner: false,\n isWritable: false\n });\n if (spotMarketAccount.marketIndex !== 0) {\n oracleAccountMap.set(spotMarketAccount.oracle.toString(), {\n pubkey: spotMarketAccount.oracle,\n isSigner: false,\n isWritable: false\n });\n }\n }\n }\n if (params.writableSpotMarketIndexes !== void 0) {\n for (const writableSpotMarketIndex of params.writableSpotMarketIndexes) {\n const spotMarketAccount = this.getSpotMarketAccount(\n writableSpotMarketIndex\n );\n spotMarketAccountMap.set(spotMarketAccount.marketIndex, {\n pubkey: spotMarketAccount.pubkey,\n isSigner: false,\n isWritable: true\n });\n if (!spotMarketAccount.oracle.equals(PublicKey10.default)) {\n oracleAccountMap.set(spotMarketAccount.oracle.toString(), {\n pubkey: spotMarketAccount.oracle,\n isSigner: false,\n isWritable: false\n });\n }\n }\n }\n return [\n ...oracleAccountMap.values(),\n ...spotMarketAccountMap.values(),\n ...perpMarketAccountMap.values()\n ];\n }\n getRemainingAccountMapsForUsers(userAccounts) {\n const oracleAccountMap = /* @__PURE__ */ new Map();\n const spotMarketAccountMap = /* @__PURE__ */ new Map();\n const perpMarketAccountMap = /* @__PURE__ */ new Map();\n for (const userAccount of userAccounts) {\n for (const spotPosition of userAccount.spotPositions) {\n if (!isSpotPositionAvailable(spotPosition)) {\n const spotMarket = this.getSpotMarketAccount(\n spotPosition.marketIndex\n );\n spotMarketAccountMap.set(spotPosition.marketIndex, {\n pubkey: spotMarket.pubkey,\n isSigner: false,\n isWritable: false\n });\n if (!spotMarket.oracle.equals(PublicKey10.default)) {\n oracleAccountMap.set(spotMarket.oracle.toString(), {\n pubkey: spotMarket.oracle,\n isSigner: false,\n isWritable: false\n });\n }\n if (!spotPosition.openAsks.eq(ZERO) || !spotPosition.openBids.eq(ZERO)) {\n spotMarketAccountMap.set(QUOTE_SPOT_MARKET_INDEX, {\n pubkey: this.getQuoteSpotMarketAccount().pubkey,\n isSigner: false,\n isWritable: false\n });\n }\n }\n }\n for (const position of userAccount.perpPositions) {\n if (!positionIsAvailable(position)) {\n const market = this.getPerpMarketAccount(position.marketIndex);\n perpMarketAccountMap.set(position.marketIndex, {\n pubkey: market.pubkey,\n isWritable: false,\n isSigner: false\n });\n oracleAccountMap.set(market.amm.oracle.toString(), {\n pubkey: market.amm.oracle,\n isWritable: false,\n isSigner: false\n });\n }\n }\n }\n return {\n oracleAccountMap,\n spotMarketAccountMap,\n perpMarketAccountMap\n };\n }\n getOrder(orderId) {\n var _a;\n return (_a = this.getUserAccount()) == null ? void 0 : _a.orders.find(\n (order) => order.orderId === orderId\n );\n }\n getOrderByUserId(userOrderId) {\n var _a;\n return (_a = this.getUserAccount()) == null ? void 0 : _a.orders.find(\n (order) => order.userOrderId === userOrderId\n );\n }\n async deposit(amount, marketIndex, collateralAccountPublicKey, subAccountId, reduceOnly = false) {\n const tx = new Transaction3();\n tx.add(\n ComputeBudgetProgram2.requestUnits({\n units: 6e5,\n additionalFee: 0\n })\n );\n const additionalSigners = [];\n const spotMarketAccount = this.getSpotMarketAccount(marketIndex);\n const isSolMarket = spotMarketAccount.mint.equals(WRAPPED_SOL_MINT);\n const authority = this.authority;\n const createWSOLTokenAccount = isSolMarket && collateralAccountPublicKey.equals(authority);\n if (createWSOLTokenAccount) {\n const { ixs, signers, pubkey } = await this.getWrappedSolAccountCreationIxs(amount, true);\n collateralAccountPublicKey = pubkey;\n ixs.forEach((ix) => {\n tx.add(ix);\n });\n signers.forEach((signer) => additionalSigners.push(signer));\n }\n const depositCollateralIx = await this.getDepositInstruction(\n amount,\n marketIndex,\n collateralAccountPublicKey,\n subAccountId,\n reduceOnly,\n true\n );\n tx.add(depositCollateralIx);\n if (createWSOLTokenAccount) {\n tx.add(\n Token2.createCloseAccountInstruction(\n TOKEN_PROGRAM_ID2,\n collateralAccountPublicKey,\n authority,\n authority,\n []\n )\n );\n }\n const { txSig, slot } = await this.txSender.send(\n tx,\n additionalSigners,\n this.opts\n );\n this.spotMarketLastSlotCache.set(marketIndex, slot);\n return txSig;\n }\n async getDepositInstruction(amount, marketIndex, userTokenAccount, subAccountId, reduceOnly = false, userInitialized = true) {\n const userAccountPublicKey = subAccountId ? await getUserAccountPublicKey(\n this.program.programId,\n this.authority,\n subAccountId\n ) : await this.getUserAccountPublicKey();\n let remainingAccounts = [];\n if (userInitialized) {\n remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount()],\n useMarketLastSlotCache: true,\n writableSpotMarketIndexes: [marketIndex]\n });\n } else {\n remainingAccounts = this.getRemainingAccounts({\n userAccounts: [],\n writableSpotMarketIndexes: [marketIndex]\n });\n }\n const spotMarketAccount = this.getSpotMarketAccount(marketIndex);\n return await this.program.instruction.deposit(\n marketIndex,\n amount,\n reduceOnly,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n spotMarket: spotMarketAccount.pubkey,\n spotMarketVault: spotMarketAccount.vault,\n user: userAccountPublicKey,\n userStats: this.getUserStatsAccountPublicKey(),\n userTokenAccount,\n authority: this.wallet.publicKey,\n tokenProgram: TOKEN_PROGRAM_ID2\n },\n remainingAccounts\n }\n );\n }\n async checkIfAccountExists(account) {\n try {\n const accountInfo = await this.connection.getAccountInfo(account);\n return accountInfo != null;\n } catch (e) {\n return false;\n }\n }\n async getWrappedSolAccountCreationIxs(amount, isDeposit) {\n const wrappedSolAccount = new Keypair2();\n const result = {\n ixs: [],\n signers: [],\n pubkey: wrappedSolAccount.publicKey\n };\n const rentSpaceLamports = new BN12(LAMPORTS_PER_SOL2 / 100);\n const lamports = isDeposit ? amount.add(rentSpaceLamports) : rentSpaceLamports;\n const authority = this.wallet.publicKey;\n result.ixs.push(\n SystemProgram.createAccount({\n fromPubkey: authority,\n newAccountPubkey: wrappedSolAccount.publicKey,\n lamports: lamports.toNumber(),\n space: 165,\n programId: TOKEN_PROGRAM_ID2\n })\n );\n result.ixs.push(\n Token2.createInitAccountInstruction(\n TOKEN_PROGRAM_ID2,\n WRAPPED_SOL_MINT,\n wrappedSolAccount.publicKey,\n authority\n )\n );\n result.signers.push(wrappedSolAccount);\n return result;\n }\n getAssociatedTokenAccountCreationIx(tokenMintAddress, associatedTokenAddress) {\n const createAssociatedAccountIx = Token2.createAssociatedTokenAccountInstruction(\n ASSOCIATED_TOKEN_PROGRAM_ID2,\n TOKEN_PROGRAM_ID2,\n tokenMintAddress,\n associatedTokenAddress,\n this.wallet.publicKey,\n this.wallet.publicKey\n );\n return createAssociatedAccountIx;\n }\n async initializeUserAccountAndDepositCollateral(amount, userTokenAccount, marketIndex = 0, subAccountId = 0, name = DEFAULT_USER_NAME, fromSubAccountId, referrerInfo) {\n const [userAccountPublicKey, initializeUserAccountIx] = await this.getInitializeUserInstructions(\n subAccountId,\n name,\n referrerInfo\n );\n const additionalSigners = [];\n const spotMarket = this.getSpotMarketAccount(marketIndex);\n const isSolMarket = spotMarket.mint.equals(WRAPPED_SOL_MINT);\n const tx = new Transaction3();\n const authority = this.wallet.publicKey;\n const createWSOLTokenAccount = isSolMarket && userTokenAccount.equals(authority);\n if (createWSOLTokenAccount) {\n const {\n ixs: startIxs,\n signers,\n pubkey\n } = await this.getWrappedSolAccountCreationIxs(amount, true);\n userTokenAccount = pubkey;\n startIxs.forEach((ix) => {\n tx.add(ix);\n });\n signers.forEach((signer) => additionalSigners.push(signer));\n }\n const depositCollateralIx = fromSubAccountId != null ? await this.getTransferDepositIx(\n amount,\n marketIndex,\n fromSubAccountId,\n subAccountId\n ) : await this.getDepositInstruction(\n amount,\n marketIndex,\n userTokenAccount,\n subAccountId,\n false,\n false\n );\n if (subAccountId === 0) {\n if (!await this.checkIfAccountExists(this.getUserStatsAccountPublicKey())) {\n tx.add(await this.getInitializeUserStatsIx());\n }\n }\n tx.add(initializeUserAccountIx).add(depositCollateralIx);\n if (createWSOLTokenAccount) {\n tx.add(\n Token2.createCloseAccountInstruction(\n TOKEN_PROGRAM_ID2,\n userTokenAccount,\n authority,\n authority,\n []\n )\n );\n }\n const { txSig, slot } = await this.txSender.send(\n tx,\n additionalSigners,\n this.opts\n );\n this.spotMarketLastSlotCache.set(marketIndex, slot);\n return [txSig, userAccountPublicKey];\n }\n async initializeUserAccountForDevnet(subAccountId = 0, name = DEFAULT_USER_NAME, marketIndex, tokenFaucet, amount, referrerInfo) {\n const [associateTokenPublicKey, createAssociatedAccountIx, mintToIx] = await tokenFaucet.createAssociatedTokenAccountAndMintToInstructions(\n this.wallet.publicKey,\n amount\n );\n const [userAccountPublicKey, initializeUserAccountIx] = await this.getInitializeUserInstructions(\n subAccountId,\n name,\n referrerInfo\n );\n const depositCollateralIx = await this.getDepositInstruction(\n amount,\n marketIndex,\n associateTokenPublicKey,\n subAccountId,\n false,\n false\n );\n const tx = new Transaction3().add(createAssociatedAccountIx).add(mintToIx);\n if (subAccountId === 0) {\n if (!await this.checkIfAccountExists(this.getUserStatsAccountPublicKey())) {\n tx.add(await this.getInitializeUserStatsIx());\n }\n }\n tx.add(initializeUserAccountIx).add(depositCollateralIx);\n const txSig = await this.program.provider.sendAndConfirm(tx, []);\n return [txSig, userAccountPublicKey];\n }\n async withdraw(amount, marketIndex, userTokenAccount, reduceOnly = false) {\n const tx = new Transaction3();\n tx.add(\n ComputeBudgetProgram2.requestUnits({\n units: 6e5,\n additionalFee: 0\n })\n );\n const additionalSigners = [];\n const spotMarketAccount = this.getSpotMarketAccount(marketIndex);\n const isSolMarket = spotMarketAccount.mint.equals(WRAPPED_SOL_MINT);\n const authority = this.wallet.publicKey;\n const createWSOLTokenAccount = isSolMarket && userTokenAccount.equals(authority);\n if (createWSOLTokenAccount) {\n const { ixs, signers, pubkey } = await this.getWrappedSolAccountCreationIxs(amount, false);\n userTokenAccount = pubkey;\n ixs.forEach((ix) => {\n tx.add(ix);\n });\n signers.forEach((signer) => additionalSigners.push(signer));\n } else {\n const accountExists = await this.checkIfAccountExists(userTokenAccount);\n if (!accountExists) {\n const createAssociatedTokenAccountIx = this.getAssociatedTokenAccountCreationIx(\n spotMarketAccount.mint,\n userTokenAccount\n );\n tx.add(createAssociatedTokenAccountIx);\n }\n }\n const withdrawCollateral = await this.getWithdrawIx(\n amount,\n spotMarketAccount.marketIndex,\n userTokenAccount,\n reduceOnly\n );\n tx.add(withdrawCollateral);\n if (createWSOLTokenAccount) {\n tx.add(\n Token2.createCloseAccountInstruction(\n TOKEN_PROGRAM_ID2,\n userTokenAccount,\n authority,\n authority,\n []\n )\n );\n }\n const { txSig, slot } = await this.txSender.send(\n tx,\n additionalSigners,\n this.opts\n );\n this.spotMarketLastSlotCache.set(marketIndex, slot);\n return txSig;\n }\n async getWithdrawIx(amount, marketIndex, userTokenAccount, reduceOnly = false) {\n const userAccountPublicKey = await this.getUserAccountPublicKey();\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount()],\n useMarketLastSlotCache: true,\n writableSpotMarketIndexes: [marketIndex],\n readableSpotMarketIndexes: [QUOTE_SPOT_MARKET_INDEX]\n });\n const spotMarketAccount = this.getSpotMarketAccount(marketIndex);\n return await this.program.instruction.withdraw(\n marketIndex,\n amount,\n reduceOnly,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n spotMarket: spotMarketAccount.pubkey,\n spotMarketVault: spotMarketAccount.vault,\n driftSigner: this.getSignerPublicKey(),\n user: userAccountPublicKey,\n userStats: this.getUserStatsAccountPublicKey(),\n userTokenAccount,\n authority: this.wallet.publicKey,\n tokenProgram: TOKEN_PROGRAM_ID2\n },\n remainingAccounts\n }\n );\n }\n async transferDeposit(amount, marketIndex, fromSubAccountId, toSubAccountId) {\n const { txSig, slot } = await this.txSender.send(\n wrapInTx(\n await this.getTransferDepositIx(\n amount,\n marketIndex,\n fromSubAccountId,\n toSubAccountId\n )\n ),\n [],\n this.opts\n );\n if (fromSubAccountId === this.activeSubAccountId || toSubAccountId === this.activeSubAccountId) {\n this.spotMarketLastSlotCache.set(marketIndex, slot);\n }\n return txSig;\n }\n async getTransferDepositIx(amount, marketIndex, fromSubAccountId, toSubAccountId) {\n const fromUser = await getUserAccountPublicKey(\n this.program.programId,\n this.wallet.publicKey,\n fromSubAccountId\n );\n const toUser = await getUserAccountPublicKey(\n this.program.programId,\n this.wallet.publicKey,\n toSubAccountId\n );\n let remainingAccounts;\n if (this.users.has(fromSubAccountId)) {\n remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.users.get(fromSubAccountId).getUserAccount()],\n useMarketLastSlotCache: true,\n writableSpotMarketIndexes: [marketIndex]\n });\n } else {\n const userAccountPublicKey = getUserAccountPublicKeySync(\n this.program.programId,\n this.authority,\n fromSubAccountId\n );\n const fromUserAccount = await this.program.account.user.fetch(\n userAccountPublicKey\n );\n remainingAccounts = this.getRemainingAccounts({\n userAccounts: [fromUserAccount],\n useMarketLastSlotCache: true,\n writableSpotMarketIndexes: [marketIndex]\n });\n }\n return await this.program.instruction.transferDeposit(marketIndex, amount, {\n accounts: {\n authority: this.wallet.publicKey,\n fromUser,\n toUser,\n userStats: this.getUserStatsAccountPublicKey(),\n state: await this.getStatePublicKey(),\n spotMarketVault: this.getSpotMarketAccount(marketIndex).vault\n },\n remainingAccounts\n });\n }\n async updateSpotMarketCumulativeInterest(marketIndex) {\n const { txSig } = await this.txSender.send(\n wrapInTx(await this.updateSpotMarketCumulativeInterestIx(marketIndex)),\n [],\n this.opts\n );\n return txSig;\n }\n async updateSpotMarketCumulativeInterestIx(marketIndex) {\n const spotMarket = this.getSpotMarketAccount(marketIndex);\n return await this.program.instruction.updateSpotMarketCumulativeInterest({\n accounts: {\n state: await this.getStatePublicKey(),\n spotMarket: spotMarket.pubkey,\n oracle: spotMarket.oracle\n }\n });\n }\n async settleLP(settleeUserAccountPublicKey, marketIndex) {\n const { txSig } = await this.txSender.send(\n wrapInTx(await this.settleLPIx(settleeUserAccountPublicKey, marketIndex)),\n [],\n this.opts\n );\n return txSig;\n }\n async settleLPIx(settleeUserAccountPublicKey, marketIndex) {\n const settleeUserAccount = await this.program.account.user.fetch(\n settleeUserAccountPublicKey\n );\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [settleeUserAccount],\n writablePerpMarketIndexes: [marketIndex]\n });\n return this.program.instruction.settleLp(marketIndex, {\n accounts: {\n state: await this.getStatePublicKey(),\n user: settleeUserAccountPublicKey\n },\n remainingAccounts\n });\n }\n async removePerpLpShares(marketIndex, sharesToBurn) {\n const { txSig } = await this.txSender.send(\n wrapInTx(await this.getRemovePerpLpSharesIx(marketIndex, sharesToBurn)),\n [],\n this.opts\n );\n return txSig;\n }\n async removePerpLpSharesInExpiringMarket(marketIndex, userAccountPublicKey, sharesToBurn) {\n const { txSig } = await this.txSender.send(\n wrapInTx(\n await this.getRemovePerpLpSharesInExpiringMarket(\n marketIndex,\n userAccountPublicKey,\n sharesToBurn\n )\n ),\n [],\n this.opts\n );\n return txSig;\n }\n async getRemovePerpLpSharesInExpiringMarket(marketIndex, userAccountPublicKey, sharesToBurn) {\n const userAccount = await this.program.account.user.fetch(\n userAccountPublicKey\n );\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [userAccount],\n useMarketLastSlotCache: true,\n writablePerpMarketIndexes: [marketIndex]\n });\n if (sharesToBurn == void 0) {\n const perpPosition = userAccount.perpPositions.filter(\n (position) => position.marketIndex === marketIndex\n )[0];\n sharesToBurn = perpPosition.lpShares;\n console.log(\"burning lp shares:\", sharesToBurn.toString());\n }\n return this.program.instruction.removePerpLpSharesInExpiringMarket(\n sharesToBurn,\n marketIndex,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n user: userAccountPublicKey\n },\n remainingAccounts\n }\n );\n }\n async getRemovePerpLpSharesIx(marketIndex, sharesToBurn) {\n const userAccountPublicKey = await this.getUserAccountPublicKey();\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount()],\n useMarketLastSlotCache: true,\n writablePerpMarketIndexes: [marketIndex]\n });\n if (sharesToBurn == void 0) {\n const userAccount = this.getUserAccount();\n const perpPosition = userAccount.perpPositions.filter(\n (position) => position.marketIndex === marketIndex\n )[0];\n sharesToBurn = perpPosition.lpShares;\n console.log(\"burning lp shares:\", sharesToBurn.toString());\n }\n return this.program.instruction.removePerpLpShares(\n sharesToBurn,\n marketIndex,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n user: userAccountPublicKey,\n authority: this.wallet.publicKey\n },\n remainingAccounts\n }\n );\n }\n async addPerpLpShares(amount, marketIndex) {\n const { txSig, slot } = await this.txSender.send(\n wrapInTx(await this.getAddPerpLpSharesIx(amount, marketIndex)),\n [],\n this.opts\n );\n this.perpMarketLastSlotCache.set(marketIndex, slot);\n return txSig;\n }\n async getAddPerpLpSharesIx(amount, marketIndex) {\n const userAccountPublicKey = await this.getUserAccountPublicKey();\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount()],\n useMarketLastSlotCache: true,\n writablePerpMarketIndexes: [marketIndex]\n });\n return this.program.instruction.addPerpLpShares(amount, marketIndex, {\n accounts: {\n state: await this.getStatePublicKey(),\n user: userAccountPublicKey,\n authority: this.wallet.publicKey\n },\n remainingAccounts\n });\n }\n async openPosition(direction, amount, marketIndex, limitPrice) {\n return await this.placeAndTakePerpOrder({\n orderType: OrderType.MARKET,\n marketIndex,\n direction,\n baseAssetAmount: amount,\n price: limitPrice\n });\n }\n async sendSignedTx(tx) {\n const { txSig } = await this.txSender.send(tx, void 0, this.opts, true);\n return txSig;\n }\n async sendMarketOrderAndGetSignedFillTx(orderParams, userAccountPublicKey, userAccount, makerInfo) {\n const marketIndex = orderParams.marketIndex;\n const orderId = userAccount.nextOrderId;\n const marketOrderTx = wrapInTx(await this.getPlacePerpOrderIx(orderParams));\n const fillTx = wrapInTx(\n await this.getFillPerpOrderIx(\n userAccountPublicKey,\n userAccount,\n {\n orderId,\n marketIndex\n },\n makerInfo\n )\n );\n const currentBlockHash = (await this.connection.getLatestBlockhash(\"finalized\")).blockhash;\n marketOrderTx.recentBlockhash = currentBlockHash;\n fillTx.recentBlockhash = currentBlockHash;\n marketOrderTx.feePayer = userAccount.authority;\n fillTx.feePayer = userAccount.authority;\n const [signedMarketOrderTx, signedFillTx] = await this.provider.wallet.signAllTransactions([marketOrderTx, fillTx]);\n const { txSig, slot } = await this.txSender.send(\n signedMarketOrderTx,\n [],\n this.opts,\n true\n );\n this.perpMarketLastSlotCache.set(orderParams.marketIndex, slot);\n return { txSig, signedFillTx };\n }\n async placePerpOrder(orderParams) {\n const { txSig, slot } = await this.txSender.send(\n wrapInTx(await this.getPlacePerpOrderIx(orderParams)),\n [],\n this.opts\n );\n this.perpMarketLastSlotCache.set(orderParams.marketIndex, slot);\n return txSig;\n }\n getOrderParams(optionalOrderParams, marketType) {\n return Object.assign({}, DefaultOrderParams, optionalOrderParams, {\n marketType\n });\n }\n async getPlacePerpOrderIx(orderParams) {\n orderParams = this.getOrderParams(orderParams, MarketType.PERP);\n const userAccountPublicKey = await this.getUserAccountPublicKey();\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount()],\n useMarketLastSlotCache: true,\n readablePerpMarketIndex: orderParams.marketIndex\n });\n return await this.program.instruction.placePerpOrder(orderParams, {\n accounts: {\n state: await this.getStatePublicKey(),\n user: userAccountPublicKey,\n userStats: this.getUserStatsAccountPublicKey(),\n authority: this.wallet.publicKey\n },\n remainingAccounts\n });\n }\n async updateAMMs(marketIndexes) {\n const { txSig } = await this.txSender.send(\n wrapInTx(await this.getUpdateAMMsIx(marketIndexes)),\n [],\n this.opts\n );\n return txSig;\n }\n async getUpdateAMMsIx(marketIndexes) {\n for (let i = marketIndexes.length; i < 5; i++) {\n marketIndexes.push(100);\n }\n const marketAccountInfos = [];\n const oracleAccountInfos = [];\n for (const marketIndex of marketIndexes) {\n if (marketIndex !== 100) {\n const market = this.getPerpMarketAccount(marketIndex);\n marketAccountInfos.push({\n pubkey: market.pubkey,\n isWritable: true,\n isSigner: false\n });\n oracleAccountInfos.push({\n pubkey: market.amm.oracle,\n isWritable: false,\n isSigner: false\n });\n }\n }\n const remainingAccounts = oracleAccountInfos.concat(marketAccountInfos);\n return await this.program.instruction.updateAmms(marketIndexes, {\n accounts: {\n state: await this.getStatePublicKey(),\n authority: this.wallet.publicKey\n },\n remainingAccounts\n });\n }\n async settleExpiredMarket(marketIndex) {\n const { txSig } = await this.txSender.send(\n wrapInTx(await this.getSettleExpiredMarketIx(marketIndex)),\n [],\n this.opts\n );\n return txSig;\n }\n async getSettleExpiredMarketIx(marketIndex) {\n const marketAccountInfos = [];\n const oracleAccountInfos = [];\n const spotMarketAccountInfos = [];\n const market = this.getPerpMarketAccount(marketIndex);\n marketAccountInfos.push({\n pubkey: market.pubkey,\n isWritable: true,\n isSigner: false\n });\n oracleAccountInfos.push({\n pubkey: market.amm.oracle,\n isWritable: false,\n isSigner: false\n });\n spotMarketAccountInfos.push({\n pubkey: this.getSpotMarketAccount(QUOTE_SPOT_MARKET_INDEX).pubkey,\n isSigner: false,\n isWritable: true\n });\n const remainingAccounts = oracleAccountInfos.concat(spotMarketAccountInfos).concat(marketAccountInfos);\n return await this.program.instruction.settleExpiredMarket(marketIndex, {\n accounts: {\n state: await this.getStatePublicKey(),\n authority: this.wallet.publicKey\n },\n remainingAccounts\n });\n }\n async settleExpiredMarketPoolsToRevenuePool(perpMarketIndex) {\n const perpMarketPublicKey = await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n );\n const spotMarketPublicKey = await getSpotMarketPublicKey(\n this.program.programId,\n QUOTE_SPOT_MARKET_INDEX\n );\n const ix = await this.program.instruction.settleExpiredMarketPoolsToRevenuePool({\n accounts: {\n state: await this.getStatePublicKey(),\n admin: this.wallet.publicKey,\n spotMarket: spotMarketPublicKey,\n perpMarket: perpMarketPublicKey\n }\n });\n const { txSig } = await this.txSender.send(wrapInTx(ix), [], this.opts);\n return txSig;\n }\n async cancelOrder(orderId) {\n const { txSig } = await this.txSender.send(\n wrapInTx(await this.getCancelOrderIx(orderId)),\n [],\n this.opts\n );\n return txSig;\n }\n async getCancelOrderIx(orderId) {\n const userAccountPublicKey = await this.getUserAccountPublicKey();\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount()],\n useMarketLastSlotCache: true\n });\n return await this.program.instruction.cancelOrder(orderId != null ? orderId : null, {\n accounts: {\n state: await this.getStatePublicKey(),\n user: userAccountPublicKey,\n authority: this.wallet.publicKey\n },\n remainingAccounts\n });\n }\n async cancelOrderByUserId(userOrderId) {\n const { txSig } = await this.txSender.send(\n wrapInTx(await this.getCancelOrderByUserIdIx(userOrderId)),\n [],\n this.opts\n );\n return txSig;\n }\n async getCancelOrderByUserIdIx(userOrderId) {\n const userAccountPublicKey = await this.getUserAccountPublicKey();\n const order = this.getOrderByUserId(userOrderId);\n const oracle = this.getPerpMarketAccount(order.marketIndex).amm.oracle;\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount()],\n useMarketLastSlotCache: true\n });\n return await this.program.instruction.cancelOrderByUserId(userOrderId, {\n accounts: {\n state: await this.getStatePublicKey(),\n user: userAccountPublicKey,\n authority: this.wallet.publicKey,\n oracle\n },\n remainingAccounts\n });\n }\n async cancelOrders(marketType, marketIndex, direction) {\n const { txSig } = await this.txSender.send(\n wrapInTx(\n await this.getCancelOrdersIx(marketType, marketIndex, direction)\n ),\n [],\n this.opts\n );\n return txSig;\n }\n async getCancelOrdersIx(marketType, marketIndex, direction) {\n const userAccountPublicKey = await this.getUserAccountPublicKey();\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount()],\n useMarketLastSlotCache: true\n });\n return await this.program.instruction.cancelOrders(\n marketType != null ? marketType : null,\n marketIndex != null ? marketIndex : null,\n direction != null ? direction : null,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n user: userAccountPublicKey,\n authority: this.wallet.publicKey\n },\n remainingAccounts\n }\n );\n }\n async fillPerpOrder(userAccountPublicKey, user, order, makerInfo, referrerInfo) {\n const { txSig } = await this.txSender.send(\n wrapInTx(\n await this.getFillPerpOrderIx(\n userAccountPublicKey,\n user,\n order,\n makerInfo,\n referrerInfo\n )\n ),\n [],\n this.opts\n );\n return txSig;\n }\n async getFillPerpOrderIx(userAccountPublicKey, userAccount, order, makerInfo, referrerInfo) {\n const userStatsPublicKey = getUserStatsAccountPublicKey(\n this.program.programId,\n userAccount.authority\n );\n const fillerPublicKey = await this.getUserAccountPublicKey();\n const fillerStatsPublicKey = this.getUserStatsAccountPublicKey();\n const marketIndex = order ? order.marketIndex : userAccount.orders.find(\n (order2) => order2.orderId === userAccount.nextOrderId - 1\n ).marketIndex;\n const userAccounts = [userAccount];\n if (makerInfo !== void 0) {\n userAccounts.push(makerInfo.makerUserAccount);\n }\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts,\n writablePerpMarketIndexes: [marketIndex]\n });\n if (makerInfo) {\n remainingAccounts.push({\n pubkey: makerInfo.maker,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: makerInfo.makerStats,\n isWritable: true,\n isSigner: false\n });\n }\n if (referrerInfo) {\n remainingAccounts.push({\n pubkey: referrerInfo.referrer,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: referrerInfo.referrerStats,\n isWritable: true,\n isSigner: false\n });\n }\n const orderId = order.orderId;\n const makerOrderId = makerInfo ? makerInfo.order.orderId : null;\n return await this.program.instruction.fillPerpOrder(orderId, makerOrderId, {\n accounts: {\n state: await this.getStatePublicKey(),\n filler: fillerPublicKey,\n fillerStats: fillerStatsPublicKey,\n user: userAccountPublicKey,\n userStats: userStatsPublicKey,\n authority: this.wallet.publicKey\n },\n remainingAccounts\n });\n }\n async placeSpotOrder(orderParams) {\n const { txSig, slot } = await this.txSender.send(\n wrapInTx(await this.getPlaceSpotOrderIx(orderParams)),\n [],\n this.opts\n );\n this.spotMarketLastSlotCache.set(orderParams.marketIndex, slot);\n this.spotMarketLastSlotCache.set(QUOTE_SPOT_MARKET_INDEX, slot);\n return txSig;\n }\n async getPlaceSpotOrderIx(orderParams) {\n orderParams = this.getOrderParams(orderParams, MarketType.SPOT);\n const userAccountPublicKey = await this.getUserAccountPublicKey();\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount()],\n useMarketLastSlotCache: true,\n readableSpotMarketIndexes: [\n orderParams.marketIndex,\n QUOTE_SPOT_MARKET_INDEX\n ]\n });\n return await this.program.instruction.placeSpotOrder(orderParams, {\n accounts: {\n state: await this.getStatePublicKey(),\n user: userAccountPublicKey,\n userStats: this.getUserStatsAccountPublicKey(),\n authority: this.wallet.publicKey\n },\n remainingAccounts\n });\n }\n async fillSpotOrder(userAccountPublicKey, user, order, fulfillmentConfig, makerInfo, referrerInfo) {\n const { txSig } = await this.txSender.send(\n wrapInTx(\n await this.getFillSpotOrderIx(\n userAccountPublicKey,\n user,\n order,\n fulfillmentConfig,\n makerInfo,\n referrerInfo\n )\n ),\n [],\n this.opts\n );\n return txSig;\n }\n async getFillSpotOrderIx(userAccountPublicKey, userAccount, order, fulfillmentConfig, makerInfo, referrerInfo) {\n const userStatsPublicKey = getUserStatsAccountPublicKey(\n this.program.programId,\n userAccount.authority\n );\n const fillerPublicKey = await this.getUserAccountPublicKey();\n const fillerStatsPublicKey = this.getUserStatsAccountPublicKey();\n const marketIndex = order ? order.marketIndex : userAccount.orders.find(\n (order2) => order2.orderId === userAccount.nextOrderId - 1\n ).marketIndex;\n const userAccounts = [userAccount];\n if (makerInfo !== void 0) {\n userAccounts.push(makerInfo.makerUserAccount);\n }\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts,\n writableSpotMarketIndexes: [marketIndex, QUOTE_SPOT_MARKET_INDEX]\n });\n if (makerInfo) {\n remainingAccounts.push({\n pubkey: makerInfo.maker,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: makerInfo.makerStats,\n isWritable: true,\n isSigner: false\n });\n }\n if (referrerInfo) {\n remainingAccounts.push({\n pubkey: referrerInfo.referrer,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: referrerInfo.referrerStats,\n isWritable: true,\n isSigner: false\n });\n }\n const orderId = order.orderId;\n const makerOrderId = makerInfo ? makerInfo.order.orderId : null;\n this.addSpotFulfillmentAccounts(\n marketIndex,\n remainingAccounts,\n fulfillmentConfig\n );\n return await this.program.instruction.fillSpotOrder(\n orderId,\n fulfillmentConfig ? fulfillmentConfig.fulfillmentType : null,\n makerOrderId,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n filler: fillerPublicKey,\n fillerStats: fillerStatsPublicKey,\n user: userAccountPublicKey,\n userStats: userStatsPublicKey,\n authority: this.wallet.publicKey\n },\n remainingAccounts\n }\n );\n }\n addSpotFulfillmentAccounts(marketIndex, remainingAccounts, fulfillmentConfig) {\n if (fulfillmentConfig) {\n this.addSerumRemainingAccounts(\n marketIndex,\n remainingAccounts,\n fulfillmentConfig\n );\n } else {\n remainingAccounts.push({\n pubkey: this.getSpotMarketAccount(marketIndex).vault,\n isWritable: false,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: this.getQuoteSpotMarketAccount().vault,\n isWritable: false,\n isSigner: false\n });\n }\n }\n addSerumRemainingAccounts(marketIndex, remainingAccounts, fulfillmentConfig) {\n remainingAccounts.push({\n pubkey: fulfillmentConfig.pubkey,\n isWritable: false,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: fulfillmentConfig.serumProgramId,\n isWritable: false,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: fulfillmentConfig.serumMarket,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: fulfillmentConfig.serumRequestQueue,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: fulfillmentConfig.serumEventQueue,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: fulfillmentConfig.serumBids,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: fulfillmentConfig.serumAsks,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: fulfillmentConfig.serumBaseVault,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: fulfillmentConfig.serumQuoteVault,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: fulfillmentConfig.serumOpenOrders,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: getSerumSignerPublicKey(\n fulfillmentConfig.serumProgramId,\n fulfillmentConfig.serumMarket,\n fulfillmentConfig.serumSignerNonce\n ),\n isWritable: false,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: this.getSignerPublicKey(),\n isWritable: false,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: TOKEN_PROGRAM_ID2,\n isWritable: false,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: this.getSpotMarketAccount(marketIndex).vault,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: this.getQuoteSpotMarketAccount().vault,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: this.getStateAccount().srmVault,\n isWritable: false,\n isSigner: false\n });\n }\n async triggerOrder(userAccountPublicKey, user, order) {\n const { txSig } = await this.txSender.send(\n wrapInTx(await this.getTriggerOrderIx(userAccountPublicKey, user, order)),\n [],\n this.opts\n );\n return txSig;\n }\n async getTriggerOrderIx(userAccountPublicKey, userAccount, order) {\n const fillerPublicKey = await this.getUserAccountPublicKey();\n let remainingAccountsParams;\n if (isVariant(order.marketType, \"perp\")) {\n remainingAccountsParams = {\n userAccounts: [userAccount],\n writablePerpMarketIndexes: [order.marketIndex]\n };\n } else {\n remainingAccountsParams = {\n userAccounts: [userAccount],\n writableSpotMarketIndexes: [order.marketIndex, QUOTE_SPOT_MARKET_INDEX]\n };\n }\n const remainingAccounts = this.getRemainingAccounts(\n remainingAccountsParams\n );\n const orderId = order.orderId;\n return await this.program.instruction.triggerOrder(orderId, {\n accounts: {\n state: await this.getStatePublicKey(),\n filler: fillerPublicKey,\n user: userAccountPublicKey,\n authority: this.wallet.publicKey\n },\n remainingAccounts\n });\n }\n async forceCancelOrders(userAccountPublicKey, user) {\n const { txSig } = await this.txSender.send(\n wrapInTx(await this.getForceCancelOrdersIx(userAccountPublicKey, user)),\n [],\n this.opts\n );\n return txSig;\n }\n async getForceCancelOrdersIx(userAccountPublicKey, userAccount) {\n const fillerPublicKey = await this.getUserAccountPublicKey();\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [userAccount],\n writableSpotMarketIndexes: [QUOTE_SPOT_MARKET_INDEX]\n });\n return await this.program.instruction.forceCancelOrders({\n accounts: {\n state: await this.getStatePublicKey(),\n filler: fillerPublicKey,\n user: userAccountPublicKey,\n authority: this.wallet.publicKey\n },\n remainingAccounts\n });\n }\n async placeAndTakePerpOrder(orderParams, makerInfo, referrerInfo) {\n const { txSig, slot } = await this.txSender.send(\n wrapInTx(\n await this.getPlaceAndTakePerpOrderIx(\n orderParams,\n makerInfo,\n referrerInfo\n )\n ),\n [],\n this.opts\n );\n this.perpMarketLastSlotCache.set(orderParams.marketIndex, slot);\n return txSig;\n }\n async getPlaceAndTakePerpOrderIx(orderParams, makerInfo, referrerInfo) {\n orderParams = this.getOrderParams(orderParams, MarketType.PERP);\n const userStatsPublicKey = await this.getUserStatsAccountPublicKey();\n const userAccountPublicKey = await this.getUserAccountPublicKey();\n const userAccounts = [this.getUserAccount()];\n if (makerInfo !== void 0) {\n userAccounts.push(makerInfo.makerUserAccount);\n }\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts,\n useMarketLastSlotCache: true,\n writablePerpMarketIndexes: [orderParams.marketIndex]\n });\n let makerOrderId = null;\n if (makerInfo) {\n makerOrderId = makerInfo.order.orderId;\n remainingAccounts.push({\n pubkey: makerInfo.maker,\n isSigner: false,\n isWritable: true\n });\n remainingAccounts.push({\n pubkey: makerInfo.makerStats,\n isSigner: false,\n isWritable: true\n });\n }\n if (referrerInfo) {\n remainingAccounts.push({\n pubkey: referrerInfo.referrer,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: referrerInfo.referrerStats,\n isWritable: true,\n isSigner: false\n });\n }\n return await this.program.instruction.placeAndTakePerpOrder(\n orderParams,\n makerOrderId,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n user: userAccountPublicKey,\n userStats: userStatsPublicKey,\n authority: this.wallet.publicKey\n },\n remainingAccounts\n }\n );\n }\n async placeAndMakePerpOrder(orderParams, takerInfo, referrerInfo) {\n const { txSig, slot } = await this.txSender.send(\n wrapInTx(\n await this.getPlaceAndMakePerpOrderIx(\n orderParams,\n takerInfo,\n referrerInfo\n )\n ),\n [],\n this.opts\n );\n this.perpMarketLastSlotCache.set(orderParams.marketIndex, slot);\n return txSig;\n }\n async getPlaceAndMakePerpOrderIx(orderParams, takerInfo, referrerInfo) {\n orderParams = this.getOrderParams(orderParams, MarketType.PERP);\n const userStatsPublicKey = this.getUserStatsAccountPublicKey();\n const userAccountPublicKey = await this.getUserAccountPublicKey();\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount(), takerInfo.takerUserAccount],\n useMarketLastSlotCache: true,\n writablePerpMarketIndexes: [orderParams.marketIndex]\n });\n if (referrerInfo) {\n remainingAccounts.push({\n pubkey: referrerInfo.referrer,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: referrerInfo.referrerStats,\n isWritable: true,\n isSigner: false\n });\n }\n const takerOrderId = takerInfo.order.orderId;\n return await this.program.instruction.placeAndMakePerpOrder(\n orderParams,\n takerOrderId,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n user: userAccountPublicKey,\n userStats: userStatsPublicKey,\n taker: takerInfo.taker,\n takerStats: takerInfo.takerStats,\n authority: this.wallet.publicKey\n },\n remainingAccounts\n }\n );\n }\n async placeAndTakeSpotOrder(orderParams, fulfillmentConfig, makerInfo, referrerInfo) {\n const { txSig, slot } = await this.txSender.send(\n wrapInTx(\n await this.getPlaceAndTakeSpotOrderIx(\n orderParams,\n fulfillmentConfig,\n makerInfo,\n referrerInfo\n )\n ),\n [],\n this.opts\n );\n this.spotMarketLastSlotCache.set(orderParams.marketIndex, slot);\n this.spotMarketLastSlotCache.set(QUOTE_SPOT_MARKET_INDEX, slot);\n return txSig;\n }\n async getPlaceAndTakeSpotOrderIx(orderParams, fulfillmentConfig, makerInfo, referrerInfo) {\n orderParams = this.getOrderParams(orderParams, MarketType.SPOT);\n const userStatsPublicKey = await this.getUserStatsAccountPublicKey();\n const userAccountPublicKey = await this.getUserAccountPublicKey();\n const userAccounts = [this.getUserAccount()];\n if (makerInfo !== void 0) {\n userAccounts.push(makerInfo.makerUserAccount);\n }\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts,\n useMarketLastSlotCache: true,\n writableSpotMarketIndexes: [\n orderParams.marketIndex,\n QUOTE_SPOT_MARKET_INDEX\n ]\n });\n let makerOrderId = null;\n if (makerInfo) {\n makerOrderId = makerInfo.order.orderId;\n remainingAccounts.push({\n pubkey: makerInfo.maker,\n isSigner: false,\n isWritable: true\n });\n remainingAccounts.push({\n pubkey: makerInfo.makerStats,\n isSigner: false,\n isWritable: true\n });\n }\n if (referrerInfo) {\n remainingAccounts.push({\n pubkey: referrerInfo.referrer,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: referrerInfo.referrerStats,\n isWritable: true,\n isSigner: false\n });\n }\n this.addSpotFulfillmentAccounts(\n orderParams.marketIndex,\n remainingAccounts,\n fulfillmentConfig\n );\n return await this.program.instruction.placeAndTakeSpotOrder(\n orderParams,\n fulfillmentConfig ? fulfillmentConfig.fulfillmentType : null,\n makerOrderId,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n user: userAccountPublicKey,\n userStats: userStatsPublicKey,\n authority: this.wallet.publicKey\n },\n remainingAccounts\n }\n );\n }\n async placeAndMakeSpotOrder(orderParams, takerInfo, fulfillmentConfig, referrerInfo) {\n const { txSig, slot } = await this.txSender.send(\n wrapInTx(\n await this.getPlaceAndMakeSpotOrderIx(\n orderParams,\n takerInfo,\n fulfillmentConfig,\n referrerInfo\n )\n ),\n [],\n this.opts\n );\n this.spotMarketLastSlotCache.set(orderParams.marketIndex, slot);\n this.spotMarketLastSlotCache.set(QUOTE_SPOT_MARKET_INDEX, slot);\n return txSig;\n }\n async getPlaceAndMakeSpotOrderIx(orderParams, takerInfo, fulfillmentConfig, referrerInfo) {\n orderParams = this.getOrderParams(orderParams, MarketType.SPOT);\n const userStatsPublicKey = this.getUserStatsAccountPublicKey();\n const userAccountPublicKey = await this.getUserAccountPublicKey();\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount(), takerInfo.takerUserAccount],\n useMarketLastSlotCache: true,\n writableSpotMarketIndexes: [\n orderParams.marketIndex,\n QUOTE_SPOT_MARKET_INDEX\n ]\n });\n if (referrerInfo) {\n remainingAccounts.push({\n pubkey: referrerInfo.referrer,\n isWritable: true,\n isSigner: false\n });\n remainingAccounts.push({\n pubkey: referrerInfo.referrerStats,\n isWritable: true,\n isSigner: false\n });\n }\n this.addSpotFulfillmentAccounts(\n orderParams.marketIndex,\n remainingAccounts,\n fulfillmentConfig\n );\n const takerOrderId = takerInfo.order.orderId;\n return await this.program.instruction.placeAndMakeSpotOrder(\n orderParams,\n takerOrderId,\n fulfillmentConfig ? fulfillmentConfig.fulfillmentType : null,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n user: userAccountPublicKey,\n userStats: userStatsPublicKey,\n taker: takerInfo.taker,\n takerStats: takerInfo.takerStats,\n authority: this.wallet.publicKey\n },\n remainingAccounts\n }\n );\n }\n async closePosition(marketIndex, limitPrice) {\n const userPosition = this.getUser().getPerpPosition(marketIndex);\n if (!userPosition) {\n throw Error(`No position in market ${marketIndex.toString()}`);\n }\n return await this.placeAndTakePerpOrder({\n orderType: OrderType.MARKET,\n marketIndex,\n direction: findDirectionToClose(userPosition),\n baseAssetAmount: userPosition.baseAssetAmount.abs(),\n reduceOnly: true,\n price: limitPrice\n });\n }\n async modifyPerpOrder(orderId, newBaseAmount, newLimitPrice, newOraclePriceOffset) {\n if (!newBaseAmount && !newLimitPrice && !newOraclePriceOffset) {\n throw new Error(\n `Must provide newBaseAmount or newLimitPrice or newOraclePriceOffset to modify order`\n );\n }\n const openOrder = this.getUser().getOrder(orderId);\n if (!openOrder) {\n throw new Error(`No open order with id ${orderId.toString()}`);\n }\n const cancelOrderIx = await this.getCancelOrderIx(orderId);\n const newOrderParams = {\n orderType: openOrder.orderType,\n marketType: openOrder.marketType,\n direction: openOrder.direction,\n baseAssetAmount: newBaseAmount || openOrder.baseAssetAmount,\n price: newLimitPrice || openOrder.price,\n marketIndex: openOrder.marketIndex,\n reduceOnly: openOrder.reduceOnly,\n postOnly: openOrder.postOnly,\n immediateOrCancel: openOrder.immediateOrCancel,\n triggerPrice: openOrder.triggerPrice,\n triggerCondition: openOrder.triggerCondition,\n oraclePriceOffset: newOraclePriceOffset || openOrder.oraclePriceOffset,\n auctionDuration: openOrder.auctionDuration,\n maxTs: openOrder.maxTs,\n auctionStartPrice: openOrder.auctionStartPrice,\n auctionEndPrice: openOrder.auctionEndPrice\n };\n const placeOrderIx = await this.getPlacePerpOrderIx(newOrderParams);\n const tx = new Transaction3();\n tx.add(\n ComputeBudgetProgram2.requestUnits({\n units: 1e6,\n additionalFee: 0\n })\n );\n tx.add(cancelOrderIx);\n tx.add(placeOrderIx);\n const { txSig, slot } = await this.txSender.send(tx, [], this.opts);\n this.perpMarketLastSlotCache.set(newOrderParams.marketIndex, slot);\n return txSig;\n }\n async settlePNLs(users, marketIndex) {\n const ixs = [];\n for (const { settleeUserAccountPublicKey, settleeUserAccount } of users) {\n ixs.push(\n await this.settlePNLIx(\n settleeUserAccountPublicKey,\n settleeUserAccount,\n marketIndex\n )\n );\n }\n const tx = new Transaction3().add(\n ComputeBudgetProgram2.requestUnits({\n units: 1e6,\n additionalFee: 0\n })\n ).add(...ixs);\n const { txSig } = await this.txSender.send(tx, [], this.opts);\n return txSig;\n }\n async settlePNL(settleeUserAccountPublicKey, settleeUserAccount, marketIndex) {\n const { txSig } = await this.txSender.send(\n wrapInTx(\n await this.settlePNLIx(\n settleeUserAccountPublicKey,\n settleeUserAccount,\n marketIndex\n )\n ),\n [],\n this.opts\n );\n return txSig;\n }\n async settlePNLIx(settleeUserAccountPublicKey, settleeUserAccount, marketIndex) {\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [settleeUserAccount],\n writablePerpMarketIndexes: [marketIndex],\n writableSpotMarketIndexes: [QUOTE_SPOT_MARKET_INDEX]\n });\n return await this.program.instruction.settlePnl(marketIndex, {\n accounts: {\n state: await this.getStatePublicKey(),\n authority: this.wallet.publicKey,\n user: settleeUserAccountPublicKey,\n spotMarketVault: this.getQuoteSpotMarketAccount().vault\n },\n remainingAccounts\n });\n }\n async liquidatePerp(userAccountPublicKey, userAccount, marketIndex, maxBaseAssetAmount, limitPrice) {\n const { txSig, slot } = await this.txSender.send(\n wrapInTx(\n await this.getLiquidatePerpIx(\n userAccountPublicKey,\n userAccount,\n marketIndex,\n maxBaseAssetAmount,\n limitPrice\n )\n ),\n [],\n this.opts\n );\n this.perpMarketLastSlotCache.set(marketIndex, slot);\n return txSig;\n }\n async getLiquidatePerpIx(userAccountPublicKey, userAccount, marketIndex, maxBaseAssetAmount, limitPrice) {\n const userStatsPublicKey = getUserStatsAccountPublicKey(\n this.program.programId,\n userAccount.authority\n );\n const liquidatorPublicKey = await this.getUserAccountPublicKey();\n const liquidatorStatsPublicKey = this.getUserStatsAccountPublicKey();\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount(), userAccount],\n useMarketLastSlotCache: true,\n writablePerpMarketIndexes: [marketIndex]\n });\n return await this.program.instruction.liquidatePerp(\n marketIndex,\n maxBaseAssetAmount,\n limitPrice != null ? limitPrice : null,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n authority: this.wallet.publicKey,\n user: userAccountPublicKey,\n userStats: userStatsPublicKey,\n liquidator: liquidatorPublicKey,\n liquidatorStats: liquidatorStatsPublicKey\n },\n remainingAccounts\n }\n );\n }\n async liquidateSpot(userAccountPublicKey, userAccount, assetMarketIndex, liabilityMarketIndex, maxLiabilityTransfer, limitPrice) {\n const { txSig, slot } = await this.txSender.send(\n wrapInTx(\n await this.getLiquidateSpotIx(\n userAccountPublicKey,\n userAccount,\n assetMarketIndex,\n liabilityMarketIndex,\n maxLiabilityTransfer,\n limitPrice\n )\n ),\n [],\n this.opts\n );\n this.spotMarketLastSlotCache.set(assetMarketIndex, slot);\n this.spotMarketLastSlotCache.set(liabilityMarketIndex, slot);\n return txSig;\n }\n async getLiquidateSpotIx(userAccountPublicKey, userAccount, assetMarketIndex, liabilityMarketIndex, maxLiabilityTransfer, limitPrice) {\n const userStatsPublicKey = getUserStatsAccountPublicKey(\n this.program.programId,\n userAccount.authority\n );\n const liquidatorPublicKey = await this.getUserAccountPublicKey();\n const liquidatorStatsPublicKey = await this.getUserStatsAccountPublicKey();\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount(), userAccount],\n useMarketLastSlotCache: true,\n writableSpotMarketIndexes: [liabilityMarketIndex, assetMarketIndex]\n });\n return await this.program.instruction.liquidateSpot(\n assetMarketIndex,\n liabilityMarketIndex,\n maxLiabilityTransfer,\n limitPrice || null,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n authority: this.wallet.publicKey,\n user: userAccountPublicKey,\n userStats: userStatsPublicKey,\n liquidator: liquidatorPublicKey,\n liquidatorStats: liquidatorStatsPublicKey\n },\n remainingAccounts\n }\n );\n }\n async liquidateBorrowForPerpPnl(userAccountPublicKey, userAccount, perpMarketIndex, liabilityMarketIndex, maxLiabilityTransfer, limitPrice) {\n const { txSig, slot } = await this.txSender.send(\n wrapInTx(\n await this.getLiquidateBorrowForPerpPnlIx(\n userAccountPublicKey,\n userAccount,\n perpMarketIndex,\n liabilityMarketIndex,\n maxLiabilityTransfer,\n limitPrice\n )\n ),\n [],\n this.opts\n );\n this.perpMarketLastSlotCache.set(perpMarketIndex, slot);\n this.spotMarketLastSlotCache.set(liabilityMarketIndex, slot);\n return txSig;\n }\n async getLiquidateBorrowForPerpPnlIx(userAccountPublicKey, userAccount, perpMarketIndex, liabilityMarketIndex, maxLiabilityTransfer, limitPrice) {\n const userStatsPublicKey = getUserStatsAccountPublicKey(\n this.program.programId,\n userAccount.authority\n );\n const liquidatorPublicKey = await this.getUserAccountPublicKey();\n const liquidatorStatsPublicKey = await this.getUserStatsAccountPublicKey();\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount(), userAccount],\n writablePerpMarketIndexes: [perpMarketIndex],\n writableSpotMarketIndexes: [liabilityMarketIndex]\n });\n return await this.program.instruction.liquidateBorrowForPerpPnl(\n perpMarketIndex,\n liabilityMarketIndex,\n maxLiabilityTransfer,\n limitPrice || null,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n authority: this.wallet.publicKey,\n user: userAccountPublicKey,\n userStats: userStatsPublicKey,\n liquidator: liquidatorPublicKey,\n liquidatorStats: liquidatorStatsPublicKey\n },\n remainingAccounts\n }\n );\n }\n async liquidatePerpPnlForDeposit(userAccountPublicKey, userAccount, perpMarketIndex, assetMarketIndex, maxPnlTransfer, limitPrice) {\n const { txSig, slot } = await this.txSender.send(\n wrapInTx(\n await this.getLiquidatePerpPnlForDepositIx(\n userAccountPublicKey,\n userAccount,\n perpMarketIndex,\n assetMarketIndex,\n maxPnlTransfer,\n limitPrice\n )\n ),\n [],\n this.opts\n );\n this.perpMarketLastSlotCache.set(perpMarketIndex, slot);\n this.spotMarketLastSlotCache.set(assetMarketIndex, slot);\n return txSig;\n }\n async getLiquidatePerpPnlForDepositIx(userAccountPublicKey, userAccount, perpMarketIndex, assetMarketIndex, maxPnlTransfer, limitPrice) {\n const userStatsPublicKey = getUserStatsAccountPublicKey(\n this.program.programId,\n userAccount.authority\n );\n const liquidatorPublicKey = await this.getUserAccountPublicKey();\n const liquidatorStatsPublicKey = await this.getUserStatsAccountPublicKey();\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount(), userAccount],\n writablePerpMarketIndexes: [perpMarketIndex],\n writableSpotMarketIndexes: [assetMarketIndex]\n });\n return await this.program.instruction.liquidatePerpPnlForDeposit(\n perpMarketIndex,\n assetMarketIndex,\n maxPnlTransfer,\n limitPrice || null,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n authority: this.wallet.publicKey,\n user: userAccountPublicKey,\n userStats: userStatsPublicKey,\n liquidator: liquidatorPublicKey,\n liquidatorStats: liquidatorStatsPublicKey\n },\n remainingAccounts\n }\n );\n }\n async resolvePerpBankruptcy(userAccountPublicKey, userAccount, marketIndex) {\n const { txSig } = await this.txSender.send(\n wrapInTx(\n await this.getResolvePerpBankruptcyIx(\n userAccountPublicKey,\n userAccount,\n marketIndex\n )\n ),\n [],\n this.opts\n );\n return txSig;\n }\n async getResolvePerpBankruptcyIx(userAccountPublicKey, userAccount, marketIndex) {\n const userStatsPublicKey = getUserStatsAccountPublicKey(\n this.program.programId,\n userAccount.authority\n );\n const liquidatorPublicKey = await this.getUserAccountPublicKey();\n const liquidatorStatsPublicKey = await this.getUserStatsAccountPublicKey();\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount(), userAccount],\n writablePerpMarketIndexes: [marketIndex],\n writableSpotMarketIndexes: [QUOTE_SPOT_MARKET_INDEX]\n });\n const spotMarket = this.getSpotMarketAccount(marketIndex);\n return await this.program.instruction.resolvePerpBankruptcy(\n QUOTE_SPOT_MARKET_INDEX,\n marketIndex,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n authority: this.wallet.publicKey,\n user: userAccountPublicKey,\n userStats: userStatsPublicKey,\n liquidator: liquidatorPublicKey,\n liquidatorStats: liquidatorStatsPublicKey,\n spotMarketVault: spotMarket.vault,\n insuranceFundVault: spotMarket.insuranceFund.vault,\n driftSigner: this.getSignerPublicKey(),\n tokenProgram: TOKEN_PROGRAM_ID2\n },\n remainingAccounts\n }\n );\n }\n async resolveSpotBankruptcy(userAccountPublicKey, userAccount, marketIndex) {\n const { txSig } = await this.txSender.send(\n wrapInTx(\n await this.getResolveSpotBankruptcyIx(\n userAccountPublicKey,\n userAccount,\n marketIndex\n )\n ),\n [],\n this.opts\n );\n return txSig;\n }\n async getResolveSpotBankruptcyIx(userAccountPublicKey, userAccount, marketIndex) {\n const userStatsPublicKey = getUserStatsAccountPublicKey(\n this.program.programId,\n userAccount.authority\n );\n const liquidatorPublicKey = await this.getUserAccountPublicKey();\n const liquidatorStatsPublicKey = await this.getUserStatsAccountPublicKey();\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount(), userAccount],\n writableSpotMarketIndexes: [marketIndex]\n });\n const spotMarket = this.getSpotMarketAccount(marketIndex);\n return await this.program.instruction.resolveSpotBankruptcy(marketIndex, {\n accounts: {\n state: await this.getStatePublicKey(),\n authority: this.wallet.publicKey,\n user: userAccountPublicKey,\n userStats: userStatsPublicKey,\n liquidatorStats: liquidatorStatsPublicKey,\n liquidator: liquidatorPublicKey,\n spotMarketVault: spotMarket.vault,\n insuranceFundVault: spotMarket.insuranceFund.vault,\n driftSigner: this.getSignerPublicKey(),\n tokenProgram: TOKEN_PROGRAM_ID2\n },\n remainingAccounts\n });\n }\n async updateFundingRate(perpMarketIndex, oracle) {\n const { txSig } = await this.txSender.send(\n wrapInTx(await this.getUpdateFundingRateIx(perpMarketIndex, oracle)),\n [],\n this.opts\n );\n return txSig;\n }\n async getUpdateFundingRateIx(perpMarketIndex, oracle) {\n const perpMarketPublicKey = await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n );\n return await this.program.instruction.updateFundingRate(perpMarketIndex, {\n accounts: {\n state: await this.getStatePublicKey(),\n perpMarket: perpMarketPublicKey,\n oracle\n }\n });\n }\n async settleFundingPayment(userAccountPublicKey) {\n const { txSig } = await this.txSender.send(\n wrapInTx(await this.getSettleFundingPaymentIx(userAccountPublicKey)),\n [],\n this.opts\n );\n return txSig;\n }\n async getSettleFundingPaymentIx(userAccountPublicKey) {\n const userAccount = await this.program.account.user.fetch(\n userAccountPublicKey\n );\n const writablePerpMarketIndexes = [];\n for (const position of userAccount.perpPositions) {\n if (!positionIsAvailable(position)) {\n writablePerpMarketIndexes.push(position.marketIndex);\n }\n }\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [userAccount],\n writablePerpMarketIndexes\n });\n return await this.program.instruction.settleFundingPayment({\n accounts: {\n state: await this.getStatePublicKey(),\n user: userAccountPublicKey\n },\n remainingAccounts\n });\n }\n triggerEvent(eventName, data) {\n this.eventEmitter.emit(eventName, data);\n }\n getOracleDataForPerpMarket(marketIndex) {\n const oracleKey = this.getPerpMarketAccount(marketIndex).amm.oracle;\n const oracleData = this.getOraclePriceDataAndSlot(oracleKey).data;\n return oracleData;\n }\n getOracleDataForSpotMarket(marketIndex) {\n const oracleKey = this.getSpotMarketAccount(marketIndex).oracle;\n const oracleData = this.getOraclePriceDataAndSlot(oracleKey).data;\n return oracleData;\n }\n async initializeInsuranceFundStake(marketIndex) {\n const { txSig } = await this.txSender.send(\n wrapInTx(await this.getInitializeInsuranceFundStakeIx(marketIndex)),\n [],\n this.opts\n );\n return txSig;\n }\n async getInitializeInsuranceFundStakeIx(marketIndex) {\n const ifStakeAccountPublicKey = getInsuranceFundStakeAccountPublicKey(\n this.program.programId,\n this.wallet.publicKey,\n marketIndex\n );\n return await this.program.instruction.initializeInsuranceFundStake(\n marketIndex,\n {\n accounts: {\n insuranceFundStake: ifStakeAccountPublicKey,\n spotMarket: this.getSpotMarketAccount(marketIndex).pubkey,\n userStats: this.getUserStatsAccountPublicKey(),\n authority: this.wallet.publicKey,\n payer: this.wallet.publicKey,\n rent: anchor3.web3.SYSVAR_RENT_PUBKEY,\n systemProgram: anchor3.web3.SystemProgram.programId,\n state: await this.getStatePublicKey()\n }\n }\n );\n }\n async addInsuranceFundStake(marketIndex, amount, collateralAccountPublicKey) {\n const spotMarket = this.getSpotMarketAccount(marketIndex);\n const ifStakeAccountPublicKey = getInsuranceFundStakeAccountPublicKey(\n this.program.programId,\n this.wallet.publicKey,\n marketIndex\n );\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount()],\n useMarketLastSlotCache: true,\n writableSpotMarketIndexes: [marketIndex]\n });\n return await this.program.rpc.addInsuranceFundStake(marketIndex, amount, {\n accounts: {\n state: await this.getStatePublicKey(),\n spotMarket: spotMarket.pubkey,\n insuranceFundStake: ifStakeAccountPublicKey,\n userStats: this.getUserStatsAccountPublicKey(),\n authority: this.wallet.publicKey,\n spotMarketVault: spotMarket.vault,\n insuranceFundVault: spotMarket.insuranceFund.vault,\n driftSigner: this.getSignerPublicKey(),\n userTokenAccount: collateralAccountPublicKey,\n tokenProgram: TOKEN_PROGRAM_ID2\n },\n remainingAccounts\n });\n }\n async requestRemoveInsuranceFundStake(marketIndex, amount) {\n const spotMarketAccount = this.getSpotMarketAccount(marketIndex);\n const ifStakeAccountPublicKey = getInsuranceFundStakeAccountPublicKey(\n this.program.programId,\n this.wallet.publicKey,\n marketIndex\n );\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount()],\n useMarketLastSlotCache: true,\n writableSpotMarketIndexes: [marketIndex]\n });\n return await this.program.rpc.requestRemoveInsuranceFundStake(\n marketIndex,\n amount,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n spotMarket: spotMarketAccount.pubkey,\n insuranceFundStake: ifStakeAccountPublicKey,\n userStats: this.getUserStatsAccountPublicKey(),\n authority: this.wallet.publicKey,\n insuranceFundVault: spotMarketAccount.insuranceFund.vault\n },\n remainingAccounts\n }\n );\n }\n async cancelRequestRemoveInsuranceFundStake(marketIndex) {\n const spotMarketAccount = this.getSpotMarketAccount(marketIndex);\n const ifStakeAccountPublicKey = getInsuranceFundStakeAccountPublicKey(\n this.program.programId,\n this.wallet.publicKey,\n marketIndex\n );\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount()],\n useMarketLastSlotCache: true,\n writableSpotMarketIndexes: [marketIndex]\n });\n return await this.program.rpc.cancelRequestRemoveInsuranceFundStake(\n marketIndex,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n spotMarket: spotMarketAccount.pubkey,\n insuranceFundStake: ifStakeAccountPublicKey,\n userStats: this.getUserStatsAccountPublicKey(),\n authority: this.wallet.publicKey,\n insuranceFundVault: spotMarketAccount.insuranceFund.vault\n },\n remainingAccounts\n }\n );\n }\n async removeInsuranceFundStake(marketIndex, collateralAccountPublicKey) {\n const spotMarketAccount = this.getSpotMarketAccount(marketIndex);\n const ifStakeAccountPublicKey = getInsuranceFundStakeAccountPublicKey(\n this.program.programId,\n this.wallet.publicKey,\n marketIndex\n );\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount()],\n useMarketLastSlotCache: true,\n writableSpotMarketIndexes: [marketIndex]\n });\n return await this.program.rpc.removeInsuranceFundStake(marketIndex, {\n accounts: {\n state: await this.getStatePublicKey(),\n spotMarket: spotMarketAccount.pubkey,\n insuranceFundStake: ifStakeAccountPublicKey,\n userStats: this.getUserStatsAccountPublicKey(),\n authority: this.wallet.publicKey,\n insuranceFundVault: spotMarketAccount.insuranceFund.vault,\n driftSigner: this.getSignerPublicKey(),\n userTokenAccount: collateralAccountPublicKey,\n tokenProgram: TOKEN_PROGRAM_ID2\n },\n remainingAccounts\n });\n }\n async settleRevenueToInsuranceFund(marketIndex) {\n const spotMarketAccount = this.getSpotMarketAccount(marketIndex);\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount()],\n useMarketLastSlotCache: true,\n writableSpotMarketIndexes: [marketIndex]\n });\n return await this.program.rpc.settleRevenueToInsuranceFund(marketIndex, {\n accounts: {\n state: await this.getStatePublicKey(),\n spotMarket: spotMarketAccount.pubkey,\n spotMarketVault: spotMarketAccount.vault,\n driftSigner: this.getSignerPublicKey(),\n insuranceFundVault: spotMarketAccount.insuranceFund.vault,\n tokenProgram: TOKEN_PROGRAM_ID2\n },\n remainingAccounts\n });\n }\n async resolvePerpPnlDeficit(spotMarketIndex, perpMarketIndex) {\n const { txSig } = await this.txSender.send(\n wrapInTx(\n await this.getResolvePerpPnlDeficitIx(spotMarketIndex, perpMarketIndex)\n ),\n [],\n this.opts\n );\n return txSig;\n }\n async getResolvePerpPnlDeficitIx(spotMarketIndex, perpMarketIndex) {\n const remainingAccounts = this.getRemainingAccounts({\n userAccounts: [this.getUserAccount()],\n useMarketLastSlotCache: true,\n writablePerpMarketIndexes: [perpMarketIndex],\n writableSpotMarketIndexes: [spotMarketIndex]\n });\n const spotMarket = this.getSpotMarketAccount(spotMarketIndex);\n return await this.program.instruction.resolvePerpPnlDeficit(\n spotMarketIndex,\n perpMarketIndex,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n authority: this.wallet.publicKey,\n spotMarketVault: spotMarket.vault,\n insuranceFundVault: spotMarket.insuranceFund.vault,\n driftSigner: this.getSignerPublicKey(),\n tokenProgram: TOKEN_PROGRAM_ID2\n },\n remainingAccounts\n }\n );\n }\n};\n\n// src/math/trade.ts\nimport { BN as BN13 } from \"@project-serum/anchor\";\nvar MAXPCT = new BN13(1e3);\nfunction calculateTradeSlippage(direction, amount, market, inputAssetType = \"quote\", oraclePriceData, useSpread = true) {\n let oldPrice;\n if (useSpread && market.amm.baseSpread > 0) {\n if (isVariant(direction, \"long\")) {\n oldPrice = calculateAskPrice(market, oraclePriceData);\n } else {\n oldPrice = calculateBidPrice(market, oraclePriceData);\n }\n } else {\n oldPrice = calculateReservePrice(market, oraclePriceData);\n }\n if (amount.eq(ZERO)) {\n return [ZERO, ZERO, oldPrice, oldPrice];\n }\n const [acquiredBaseReserve, acquiredQuoteReserve, acquiredQuoteAssetAmount] = calculateTradeAcquiredAmounts(\n direction,\n amount,\n market,\n inputAssetType,\n oraclePriceData,\n useSpread\n );\n const entryPrice = acquiredQuoteAssetAmount.mul(AMM_TO_QUOTE_PRECISION_RATIO).mul(PRICE_PRECISION).div(acquiredBaseReserve.abs());\n let amm;\n if (useSpread && market.amm.baseSpread > 0) {\n const { baseAssetReserve, quoteAssetReserve, sqrtK, newPeg } = calculateUpdatedAMMSpreadReserves(market.amm, direction, oraclePriceData);\n amm = {\n baseAssetReserve,\n quoteAssetReserve,\n sqrtK,\n pegMultiplier: newPeg\n };\n } else {\n amm = market.amm;\n }\n const newPrice = calculatePrice(\n amm.baseAssetReserve.sub(acquiredBaseReserve),\n amm.quoteAssetReserve.sub(acquiredQuoteReserve),\n amm.pegMultiplier\n );\n if (direction == PositionDirection.SHORT) {\n assert(newPrice.lte(oldPrice));\n } else {\n assert(oldPrice.lte(newPrice));\n }\n const pctMaxSlippage = newPrice.sub(oldPrice).mul(PRICE_PRECISION).div(oldPrice).abs();\n const pctAvgSlippage = entryPrice.sub(oldPrice).mul(PRICE_PRECISION).div(oldPrice).abs();\n return [pctAvgSlippage, pctMaxSlippage, entryPrice, newPrice];\n}\nfunction calculateTradeAcquiredAmounts(direction, amount, market, inputAssetType = \"quote\", oraclePriceData, useSpread = true) {\n if (amount.eq(ZERO)) {\n return [ZERO, ZERO, ZERO];\n }\n const swapDirection = getSwapDirection(inputAssetType, direction);\n let amm;\n if (useSpread && market.amm.baseSpread > 0) {\n const { baseAssetReserve, quoteAssetReserve, sqrtK, newPeg } = calculateUpdatedAMMSpreadReserves(market.amm, direction, oraclePriceData);\n amm = {\n baseAssetReserve,\n quoteAssetReserve,\n sqrtK,\n pegMultiplier: newPeg\n };\n } else {\n amm = market.amm;\n }\n const [newQuoteAssetReserve, newBaseAssetReserve] = calculateAmmReservesAfterSwap(amm, inputAssetType, amount, swapDirection);\n const acquiredBase = amm.baseAssetReserve.sub(newBaseAssetReserve);\n const acquiredQuote = amm.quoteAssetReserve.sub(newQuoteAssetReserve);\n const acquiredQuoteAssetAmount = calculateQuoteAssetAmountSwapped(\n acquiredQuote.abs(),\n amm.pegMultiplier,\n swapDirection\n );\n return [acquiredBase, acquiredQuote, acquiredQuoteAssetAmount];\n}\nfunction calculateTargetPriceTrade(market, targetPrice, pct = MAXPCT, outputAssetType = \"quote\", oraclePriceData, useSpread = true) {\n assert(market.amm.baseAssetReserve.gt(ZERO));\n assert(targetPrice.gt(ZERO));\n assert(pct.lte(MAXPCT) && pct.gt(ZERO));\n const reservePriceBefore = calculateReservePrice(market, oraclePriceData);\n const bidPriceBefore = calculateBidPrice(market, oraclePriceData);\n const askPriceBefore = calculateAskPrice(market, oraclePriceData);\n let direction;\n if (targetPrice.gt(reservePriceBefore)) {\n const priceGap = targetPrice.sub(reservePriceBefore);\n const priceGapScaled = priceGap.mul(pct).div(MAXPCT);\n targetPrice = reservePriceBefore.add(priceGapScaled);\n direction = PositionDirection.LONG;\n } else {\n const priceGap = reservePriceBefore.sub(targetPrice);\n const priceGapScaled = priceGap.mul(pct).div(MAXPCT);\n targetPrice = reservePriceBefore.sub(priceGapScaled);\n direction = PositionDirection.SHORT;\n }\n let tradeSize;\n let baseSize;\n let baseAssetReserveBefore;\n let quoteAssetReserveBefore;\n let peg = market.amm.pegMultiplier;\n if (useSpread && market.amm.baseSpread > 0) {\n const { baseAssetReserve, quoteAssetReserve, newPeg } = calculateUpdatedAMMSpreadReserves(market.amm, direction, oraclePriceData);\n baseAssetReserveBefore = baseAssetReserve;\n quoteAssetReserveBefore = quoteAssetReserve;\n peg = newPeg;\n } else {\n baseAssetReserveBefore = market.amm.baseAssetReserve;\n quoteAssetReserveBefore = market.amm.quoteAssetReserve;\n }\n const invariant = market.amm.sqrtK.mul(market.amm.sqrtK);\n const k = invariant.mul(PRICE_PRECISION);\n let baseAssetReserveAfter;\n let quoteAssetReserveAfter;\n const biasModifier = new BN13(1);\n let markPriceAfter;\n if (useSpread && targetPrice.lt(askPriceBefore) && targetPrice.gt(bidPriceBefore)) {\n if (reservePriceBefore.gt(targetPrice)) {\n direction = PositionDirection.SHORT;\n } else {\n direction = PositionDirection.LONG;\n }\n tradeSize = ZERO;\n return [direction, tradeSize, targetPrice, targetPrice];\n } else if (reservePriceBefore.gt(targetPrice)) {\n baseAssetReserveAfter = squareRootBN(\n k.div(targetPrice).mul(peg).div(PEG_PRECISION).sub(biasModifier)\n ).sub(new BN13(1));\n quoteAssetReserveAfter = k.div(PRICE_PRECISION).div(baseAssetReserveAfter);\n markPriceAfter = calculatePrice(\n baseAssetReserveAfter,\n quoteAssetReserveAfter,\n peg\n );\n direction = PositionDirection.SHORT;\n tradeSize = quoteAssetReserveBefore.sub(quoteAssetReserveAfter).mul(peg).div(PEG_PRECISION).div(AMM_TO_QUOTE_PRECISION_RATIO);\n baseSize = baseAssetReserveAfter.sub(baseAssetReserveBefore);\n } else if (reservePriceBefore.lt(targetPrice)) {\n baseAssetReserveAfter = squareRootBN(\n k.div(targetPrice).mul(peg).div(PEG_PRECISION).add(biasModifier)\n ).add(new BN13(1));\n quoteAssetReserveAfter = k.div(PRICE_PRECISION).div(baseAssetReserveAfter);\n markPriceAfter = calculatePrice(\n baseAssetReserveAfter,\n quoteAssetReserveAfter,\n peg\n );\n direction = PositionDirection.LONG;\n tradeSize = quoteAssetReserveAfter.sub(quoteAssetReserveBefore).mul(peg).div(PEG_PRECISION).div(AMM_TO_QUOTE_PRECISION_RATIO);\n baseSize = baseAssetReserveBefore.sub(baseAssetReserveAfter);\n } else {\n direction = PositionDirection.LONG;\n tradeSize = ZERO;\n return [direction, tradeSize, targetPrice, targetPrice];\n }\n let tp1 = targetPrice;\n let tp2 = markPriceAfter;\n let originalDiff = targetPrice.sub(reservePriceBefore);\n if (direction == PositionDirection.SHORT) {\n tp1 = markPriceAfter;\n tp2 = targetPrice;\n originalDiff = reservePriceBefore.sub(targetPrice);\n }\n const entryPrice = tradeSize.mul(AMM_TO_QUOTE_PRECISION_RATIO).mul(PRICE_PRECISION).div(baseSize.abs());\n assert(tp1.sub(tp2).lte(originalDiff), \"Target Price Calculation incorrect\");\n assert(\n tp2.lte(tp1) || tp2.sub(tp1).abs() < 1e5,\n \"Target Price Calculation incorrect\" + tp2.toString() + \">=\" + tp1.toString() + \"err: \" + tp2.sub(tp1).abs().toString()\n );\n if (outputAssetType == \"quote\") {\n return [direction, tradeSize, entryPrice, targetPrice];\n } else {\n return [direction, baseSize, entryPrice, targetPrice];\n }\n}\n\n// src/adminClient.ts\nvar AdminClient = class extends DriftClient {\n async initialize(usdcMint, _adminControlsPrices) {\n const stateAccountRPCResponse = await this.connection.getParsedAccountInfo(\n await this.getStatePublicKey()\n );\n if (stateAccountRPCResponse.value !== null) {\n throw new Error(\"Clearing house already initialized\");\n }\n const [driftStatePublicKey] = await getDriftStateAccountPublicKeyAndNonce(\n this.program.programId\n );\n const initializeTx = await this.program.transaction.initialize({\n accounts: {\n admin: this.wallet.publicKey,\n state: driftStatePublicKey,\n quoteAssetMint: usdcMint,\n rent: SYSVAR_RENT_PUBKEY2,\n driftSigner: this.getSignerPublicKey(),\n systemProgram: anchor4.web3.SystemProgram.programId,\n tokenProgram: TOKEN_PROGRAM_ID3\n }\n });\n const { txSig: initializeTxSig } = await this.txSender.send(\n initializeTx,\n [],\n this.opts\n );\n return [initializeTxSig];\n }\n async initializeSpotMarket(mint, optimalUtilization, optimalRate, maxRate, oracle, oracleSource, initialAssetWeight, maintenanceAssetWeight, initialLiabilityWeight, maintenanceLiabilityWeight, imfFactor = 0, liquidatorFee = 0, activeStatus = true, name = DEFAULT_MARKET_NAME) {\n const spotMarketIndex = this.getStateAccount().numberOfSpotMarkets;\n const spotMarket = await getSpotMarketPublicKey(\n this.program.programId,\n spotMarketIndex\n );\n const spotMarketVault = await getSpotMarketVaultPublicKey(\n this.program.programId,\n spotMarketIndex\n );\n const insuranceFundVault = await getInsuranceFundVaultPublicKey(\n this.program.programId,\n spotMarketIndex\n );\n const nameBuffer = encodeName(name);\n const initializeTx = await this.program.transaction.initializeSpotMarket(\n optimalUtilization,\n optimalRate,\n maxRate,\n oracleSource,\n initialAssetWeight,\n maintenanceAssetWeight,\n initialLiabilityWeight,\n maintenanceLiabilityWeight,\n imfFactor,\n liquidatorFee,\n activeStatus,\n nameBuffer,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n spotMarket,\n spotMarketVault,\n insuranceFundVault,\n driftSigner: this.getSignerPublicKey(),\n spotMarketMint: mint,\n oracle,\n rent: SYSVAR_RENT_PUBKEY2,\n systemProgram: anchor4.web3.SystemProgram.programId,\n tokenProgram: TOKEN_PROGRAM_ID3\n }\n }\n );\n const { txSig } = await this.txSender.send(initializeTx, [], this.opts);\n await this.accountSubscriber.addSpotMarket(spotMarketIndex);\n await this.accountSubscriber.addOracle({\n source: oracleSource,\n publicKey: oracle\n });\n return txSig;\n }\n async initializeSerumFulfillmentConfig(marketIndex, serumMarket, serumProgram) {\n const serumOpenOrders = getSerumOpenOrdersPublicKey(\n this.program.programId,\n serumMarket\n );\n const serumFulfillmentConfig = getSerumFulfillmentConfigPublicKey(\n this.program.programId,\n serumMarket\n );\n return await this.program.rpc.initializeSerumFulfillmentConfig(\n marketIndex,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n baseSpotMarket: this.getSpotMarketAccount(marketIndex).pubkey,\n quoteSpotMarket: this.getQuoteSpotMarketAccount().pubkey,\n driftSigner: this.getSignerPublicKey(),\n serumProgram,\n serumMarket,\n serumOpenOrders,\n rent: SYSVAR_RENT_PUBKEY2,\n systemProgram: anchor4.web3.SystemProgram.programId,\n serumFulfillmentConfig\n }\n }\n );\n }\n async initializePerpMarket(priceOracle, baseAssetReserve, quoteAssetReserve, periodicity, pegMultiplier = PEG_PRECISION, oracleSource = OracleSource.PYTH, marginRatioInitial = 2e3, marginRatioMaintenance = 500, liquidatorFee = 0, activeStatus = true, name = DEFAULT_MARKET_NAME) {\n const perpMarketPublicKey = await getPerpMarketPublicKey(\n this.program.programId,\n this.getStateAccount().numberOfMarkets\n );\n const nameBuffer = encodeName(name);\n const initializeMarketTx = await this.program.transaction.initializePerpMarket(\n baseAssetReserve,\n quoteAssetReserve,\n periodicity,\n pegMultiplier,\n oracleSource,\n marginRatioInitial,\n marginRatioMaintenance,\n liquidatorFee,\n activeStatus,\n nameBuffer,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n admin: this.wallet.publicKey,\n oracle: priceOracle,\n perpMarket: perpMarketPublicKey,\n rent: SYSVAR_RENT_PUBKEY2,\n systemProgram: anchor4.web3.SystemProgram.programId\n }\n }\n );\n const { txSig } = await this.txSender.send(\n initializeMarketTx,\n [],\n this.opts\n );\n await this.accountSubscriber.addPerpMarket(\n this.getStateAccount().numberOfMarkets\n );\n await this.accountSubscriber.addOracle({\n source: oracleSource,\n publicKey: priceOracle\n });\n return txSig;\n }\n async moveAmmPrice(perpMarketIndex, baseAssetReserve, quoteAssetReserve, sqrtK) {\n const marketPublicKey = await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n );\n if (sqrtK == void 0) {\n sqrtK = squareRootBN(baseAssetReserve.mul(quoteAssetReserve));\n }\n return await this.program.rpc.moveAmmPrice(\n baseAssetReserve,\n quoteAssetReserve,\n sqrtK,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n admin: this.wallet.publicKey,\n perpMarket: marketPublicKey\n }\n }\n );\n }\n async updateK(perpMarketIndex, sqrtK) {\n return await this.program.rpc.updateK(sqrtK, {\n accounts: {\n state: await this.getStatePublicKey(),\n admin: this.wallet.publicKey,\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n ),\n oracle: this.getPerpMarketAccount(perpMarketIndex).amm.oracle\n }\n });\n }\n async updatePerpMarketConcentrationScale(perpMarketIndex, concentrationScale) {\n return await this.program.rpc.updatePerpMarketConcentrationCoef(\n concentrationScale,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n admin: this.wallet.publicKey,\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n )\n }\n }\n );\n }\n async moveAmmToPrice(perpMarketIndex, targetPrice) {\n const perpMarket = this.getPerpMarketAccount(perpMarketIndex);\n const [direction, tradeSize, _] = calculateTargetPriceTrade(\n perpMarket,\n targetPrice,\n new BN14(1e3),\n \"quote\",\n void 0\n );\n const [newQuoteAssetAmount, newBaseAssetAmount] = calculateAmmReservesAfterSwap(\n perpMarket.amm,\n \"quote\",\n tradeSize,\n getSwapDirection(\"quote\", direction)\n );\n const perpMarketPublicKey = await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n );\n return await this.program.rpc.moveAmmPrice(\n newBaseAssetAmount,\n newQuoteAssetAmount,\n perpMarket.amm.sqrtK,\n {\n accounts: {\n state: await this.getStatePublicKey(),\n admin: this.wallet.publicKey,\n perpMarket: perpMarketPublicKey\n }\n }\n );\n }\n async repegAmmCurve(newPeg, perpMarketIndex) {\n const perpMarketPublicKey = await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n );\n const ammData = this.getPerpMarketAccount(perpMarketIndex).amm;\n return await this.program.rpc.repegAmmCurve(newPeg, {\n accounts: {\n state: await this.getStatePublicKey(),\n admin: this.wallet.publicKey,\n oracle: ammData.oracle,\n perpMarket: perpMarketPublicKey\n }\n });\n }\n async updatePerpMarketAmmOracleTwap(perpMarketIndex) {\n const ammData = this.getPerpMarketAccount(perpMarketIndex).amm;\n const perpMarketPublicKey = await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n );\n return await this.program.rpc.updatePerpMarketAmmOracleTwap({\n accounts: {\n state: await this.getStatePublicKey(),\n admin: this.wallet.publicKey,\n oracle: ammData.oracle,\n perpMarket: perpMarketPublicKey\n }\n });\n }\n async resetPerpMarketAmmOracleTwap(perpMarketIndex) {\n const ammData = this.getPerpMarketAccount(perpMarketIndex).amm;\n const perpMarketPublicKey = await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n );\n return await this.program.rpc.resetPerpMarketAmmOracleTwap({\n accounts: {\n state: await this.getStatePublicKey(),\n admin: this.wallet.publicKey,\n oracle: ammData.oracle,\n perpMarket: perpMarketPublicKey\n }\n });\n }\n async depositIntoPerpMarketFeePool(perpMarketIndex, amount, sourceVault) {\n const spotMarket = this.getQuoteSpotMarketAccount();\n return await this.program.rpc.depositIntoPerpMarketFeePool(amount, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n ),\n sourceVault,\n driftSigner: this.getSignerPublicKey(),\n quoteSpotMarket: spotMarket.pubkey,\n spotMarketVault: spotMarket.vault,\n tokenProgram: TOKEN_PROGRAM_ID3\n }\n });\n }\n async updateAdmin(admin) {\n return await this.program.rpc.updateAdmin(admin, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey()\n }\n });\n }\n async updatePerpMarketCurveUpdateIntensity(perpMarketIndex, curveUpdateIntensity) {\n return await this.program.rpc.updatePerpMarketCurveUpdateIntensity(\n curveUpdateIntensity,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n )\n }\n }\n );\n }\n async updatePerpMarketMarginRatio(perpMarketIndex, marginRatioInitial, marginRatioMaintenance) {\n return await this.program.rpc.updatePerpMarketMarginRatio(\n marginRatioInitial,\n marginRatioMaintenance,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n )\n }\n }\n );\n }\n async updatePerpMarketImfFactor(perpMarketIndex, imfFactor, unrealizedPnlImfFactor) {\n return await this.program.rpc.updatePerpMarketImfFactor(\n imfFactor,\n unrealizedPnlImfFactor,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n )\n }\n }\n );\n }\n async updatePerpMarketBaseSpread(perpMarketIndex, baseSpread) {\n return await this.program.rpc.updatePerpMarketBaseSpread(baseSpread, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n )\n }\n });\n }\n async updateAmmJitIntensity(perpMarketIndex, ammJitIntensity) {\n return await this.program.rpc.updateAmmJitIntensity(ammJitIntensity, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n )\n }\n });\n }\n async updatePerpMarketName(perpMarketIndex, name) {\n const nameBuffer = encodeName(name);\n return await this.program.rpc.updatePerpMarketName(nameBuffer, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n )\n }\n });\n }\n async updateSpotMarketName(spotMarketIndex, name) {\n const nameBuffer = encodeName(name);\n return await this.program.rpc.updateSpotMarketName(nameBuffer, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n spotMarket: await getSpotMarketPublicKey(\n this.program.programId,\n spotMarketIndex\n )\n }\n });\n }\n async updatePerpMarketMaxSpread(perpMarketIndex, maxSpread) {\n const perpMarketPublicKey = await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n );\n return await this.program.rpc.updatePerpMarketMaxSpread(maxSpread, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: perpMarketPublicKey\n }\n });\n }\n async updatePerpFeeStructure(feeStructure) {\n return await this.program.rpc.updatePerpFeeStructure(feeStructure, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey()\n }\n });\n }\n async updateSpotFeeStructure(feeStructure) {\n return await this.program.rpc.updateSpotFeeStructure(feeStructure, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey()\n }\n });\n }\n async updateInitialPctToLiquidate(initialPctToLiquidate) {\n return await this.program.rpc.updateInitialPctToLiquidate(\n initialPctToLiquidate,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey()\n }\n }\n );\n }\n async updateLiquidationDuration(liquidationDuration) {\n return await this.program.rpc.updateLiquidationDuration(\n liquidationDuration,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey()\n }\n }\n );\n }\n async updateOracleGuardRails(oracleGuardRails) {\n return await this.program.rpc.updateOracleGuardRails(oracleGuardRails, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey()\n }\n });\n }\n async updateStateSettlementDuration(settlementDuration) {\n return await this.program.rpc.updateStateSettlementDuration(\n settlementDuration,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey()\n }\n }\n );\n }\n async updateWithdrawGuardThreshold(spotMarketIndex, withdrawGuardThreshold) {\n return await this.program.rpc.updateWithdrawGuardThreshold(\n withdrawGuardThreshold,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n spotMarket: await getSpotMarketPublicKey(\n this.program.programId,\n spotMarketIndex\n )\n }\n }\n );\n }\n async updateSpotMarketIfFactor(spotMarketIndex, userIfFactor, totalIfFactor) {\n return await this.program.rpc.updateSpotMarketIfFactor(\n spotMarketIndex,\n userIfFactor,\n totalIfFactor,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n spotMarket: await getSpotMarketPublicKey(\n this.program.programId,\n spotMarketIndex\n )\n }\n }\n );\n }\n async updateSpotMarketRevenueSettlePeriod(spotMarketIndex, revenueSettlePeriod) {\n return await this.program.rpc.updateSpotMarketRevenueSettlePeriod(\n revenueSettlePeriod,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n spotMarket: await getSpotMarketPublicKey(\n this.program.programId,\n spotMarketIndex\n )\n }\n }\n );\n }\n async updateSpotMarketMaxTokenDeposits(spotMarketIndex, maxTokenDeposits) {\n return await this.program.rpc.updateSpotMarketMaxTokenDeposits(\n maxTokenDeposits,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n spotMarket: await getSpotMarketPublicKey(\n this.program.programId,\n spotMarketIndex\n )\n }\n }\n );\n }\n async updateInsuranceFundUnstakingPeriod(spotMarketIndex, insuranceWithdrawEscrowPeriod) {\n return await this.program.rpc.updateInsuranceFundUnstakingPeriod(\n insuranceWithdrawEscrowPeriod,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n spotMarket: await getSpotMarketPublicKey(\n this.program.programId,\n spotMarketIndex\n )\n }\n }\n );\n }\n async updateLpCooldownTime(cooldownTime) {\n return await this.program.rpc.updateLpCooldownTime(cooldownTime, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey()\n }\n });\n }\n async updatePerpMarketOracle(perpMarketIndex, oracle, oracleSource) {\n return await this.program.rpc.updatePerpMarketOracle(oracle, oracleSource, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n ),\n oracle\n }\n });\n }\n async updatePerpMarketStepSizeAndTickSize(perpMarketIndex, stepSize, tickSize) {\n return await this.program.rpc.updatePerpMarketStepSizeAndTickSize(\n stepSize,\n tickSize,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n )\n }\n }\n );\n }\n async updatePerpMarketMinOrderSize(perpMarketIndex, orderSize) {\n return await this.program.rpc.updatePerpMarketMinOrderSize(orderSize, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n )\n }\n });\n }\n async updateSpotMarketStepSizeAndTickSize(spotMarketIndex, stepSize, tickSize) {\n return await this.program.rpc.updateSpotMarketStepSizeAndTickSize(\n stepSize,\n tickSize,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n spotMarket: await getSpotMarketPublicKey(\n this.program.programId,\n spotMarketIndex\n )\n }\n }\n );\n }\n async updateSpotMarketMinOrderSize(spotMarketIndex, orderSize) {\n return await this.program.rpc.updateSpotMarketMinOrderSize(orderSize, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n spotMarket: await getSpotMarketPublicKey(\n this.program.programId,\n spotMarketIndex\n )\n }\n });\n }\n async updatePerpMarketExpiry(perpMarketIndex, expiryTs) {\n return await this.program.rpc.updatePerpMarketExpiry(expiryTs, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n )\n }\n });\n }\n async updateSpotMarketOracle(spotMarketIndex, oracle, oracleSource) {\n return await this.program.rpc.updateSpotMarketOracle(oracle, oracleSource, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n spotMarket: await getSpotMarketPublicKey(\n this.program.programId,\n spotMarketIndex\n ),\n oracle\n }\n });\n }\n async updateSpotMarketOrdersEnabled(spotMarketIndex, ordersEnabled) {\n return await this.program.rpc.updateSpotMarketOrdersEnabled(ordersEnabled, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n spotMarket: await getSpotMarketPublicKey(\n this.program.programId,\n spotMarketIndex\n )\n }\n });\n }\n async updateSerumFulfillmentConfigStatus(serumFulfillmentConfig, status) {\n return await this.program.rpc.updateSerumFulfillmentConfigStatus(status, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n serumFulfillmentConfig\n }\n });\n }\n async updateSpotMarketExpiry(spotMarketIndex, expiryTs) {\n return await this.program.rpc.updateSpotMarketExpiry(expiryTs, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n spotMarket: await getSpotMarketPublicKey(\n this.program.programId,\n spotMarketIndex\n )\n }\n });\n }\n async updateWhitelistMint(whitelistMint) {\n return await this.program.rpc.updateWhitelistMint(whitelistMint, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey()\n }\n });\n }\n async updateDiscountMint(discountMint) {\n return await this.program.rpc.updateDiscountMint(discountMint, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey()\n }\n });\n }\n async updateSpotMarketMarginWeights(spotMarketIndex, initialAssetWeight, maintenanceAssetWeight, initialLiabilityWeight, maintenanceLiabilityWeight, imfFactor = 0) {\n return await this.program.rpc.updateSpotMarketMarginWeights(\n initialAssetWeight,\n maintenanceAssetWeight,\n initialLiabilityWeight,\n maintenanceLiabilityWeight,\n imfFactor,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n spotMarket: await getSpotMarketPublicKey(\n this.program.programId,\n spotMarketIndex\n )\n }\n }\n );\n }\n async updateSpotMarketBorrowRate(spotMarketIndex, optimalUtilization, optimalBorrowRate, optimalMaxRate) {\n return await this.program.rpc.updateSpotMarketBorrowRate(\n optimalUtilization,\n optimalBorrowRate,\n optimalMaxRate,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n spotMarket: await getSpotMarketPublicKey(\n this.program.programId,\n spotMarketIndex\n )\n }\n }\n );\n }\n async updateSpotMarketAssetTier(spotMarketIndex, assetTier) {\n return await this.program.rpc.updateSpotMarketAssetTier(assetTier, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n spotMarket: await getSpotMarketPublicKey(\n this.program.programId,\n spotMarketIndex\n )\n }\n });\n }\n async updateSpotMarketStatus(spotMarketIndex, marketStatus) {\n return await this.program.rpc.updateSpotMarketStatus(marketStatus, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n spotMarket: await getSpotMarketPublicKey(\n this.program.programId,\n spotMarketIndex\n )\n }\n });\n }\n async updatePerpMarketStatus(perpMarketIndex, marketStatus) {\n return await this.program.rpc.updatePerpMarketStatus(marketStatus, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n )\n }\n });\n }\n async updatePerpMarketContractTier(perpMarketIndex, contractTier) {\n return await this.program.rpc.updatePerpMarketContractTier(contractTier, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n )\n }\n });\n }\n async updateExchangeStatus(exchangeStatus) {\n return await this.program.rpc.updateExchangeStatus(exchangeStatus, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey()\n }\n });\n }\n async updatePerpAuctionDuration(minDuration) {\n return await this.program.rpc.updatePerpAuctionDuration(\n typeof minDuration === \"number\" ? minDuration : minDuration.toNumber(),\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey()\n }\n }\n );\n }\n async updateSpotAuctionDuration(defaultAuctionDuration) {\n return await this.program.rpc.updateSpotAuctionDuration(\n defaultAuctionDuration,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey()\n }\n }\n );\n }\n async updatePerpMarketMaxFillReserveFraction(perpMarketIndex, maxBaseAssetAmountRatio) {\n return await this.program.rpc.updatePerpMarketMaxFillReserveFraction(\n maxBaseAssetAmountRatio,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n )\n }\n }\n );\n }\n async updateMaxSlippageRatio(perpMarketIndex, maxSlippageRatio) {\n return await this.program.rpc.updateMaxSlippageRatio(maxSlippageRatio, {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: this.getPerpMarketAccount(perpMarketIndex).pubkey\n }\n });\n }\n async updatePerpMarketUnrealizedAssetWeight(perpMarketIndex, unrealizedInitialAssetWeight, unrealizedMaintenanceAssetWeight) {\n return await this.program.rpc.updatePerpMarketUnrealizedAssetWeight(\n unrealizedInitialAssetWeight,\n unrealizedMaintenanceAssetWeight,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n )\n }\n }\n );\n }\n async updatePerpMarketMaxImbalances(perpMarketIndex, unrealizedMaxImbalance, maxRevenueWithdrawPerPeriod, quoteMaxInsurance) {\n return await this.program.rpc.updatePerpMarketMaxImbalances(\n unrealizedMaxImbalance,\n maxRevenueWithdrawPerPeriod,\n quoteMaxInsurance,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n )\n }\n }\n );\n }\n async updatePerpMarketMaxOpenInterest(perpMarketIndex, maxOpenInterest) {\n return await this.program.rpc.updatePerpMarketMaxOpenInterest(\n maxOpenInterest,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n )\n }\n }\n );\n }\n async updateSerumVault(srmVault) {\n return await this.program.rpc.updateSerumVault({\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n srmVault\n }\n });\n }\n async updatePerpMarketLiquidationFee(perpMarketIndex, liquidatorFee, ifLiquidationFee) {\n return await this.program.rpc.updatePerpMarketLiquidationFee(\n liquidatorFee,\n ifLiquidationFee,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n perpMarket: await getPerpMarketPublicKey(\n this.program.programId,\n perpMarketIndex\n )\n }\n }\n );\n }\n async updateSpotMarketLiquidationFee(spotMarketIndex, liquidatorFee, ifLiquidationFee) {\n return await this.program.rpc.updateSpotMarketLiquidationFee(\n liquidatorFee,\n ifLiquidationFee,\n {\n accounts: {\n admin: this.wallet.publicKey,\n state: await this.getStatePublicKey(),\n spotMarket: await getSpotMarketPublicKey(\n this.program.programId,\n spotMarketIndex\n )\n }\n }\n );\n }\n};\n\n// src/factory/bigNum.ts\nimport { BN as BN15 } from \"@project-serum/anchor\";\nvar _BigNum = class {\n constructor(val, precisionVal = new BN15(0)) {\n this.toString = (base, length) => this.val.toString(base, length);\n this.val = new BN15(val);\n this.precision = new BN15(precisionVal);\n }\n static setLocale(locale) {\n _BigNum.delim = 1.1 .toLocaleString(locale).slice(1, 2) || \".\";\n _BigNum.spacer = 1e3 .toLocaleString(locale).slice(1, 2) || \",\";\n }\n bigNumFromParam(bn) {\n return BN15.isBN(bn) ? _BigNum.from(bn) : bn;\n }\n add(bn) {\n assert(bn.precision.eq(this.precision), \"Adding unequal precisions\");\n return _BigNum.from(this.val.add(bn.val), this.precision);\n }\n sub(bn) {\n assert(bn.precision.eq(this.precision), \"Subtracting unequal precisions\");\n return _BigNum.from(this.val.sub(bn.val), this.precision);\n }\n mul(bn) {\n const mulVal = this.bigNumFromParam(bn);\n return _BigNum.from(\n this.val.mul(mulVal.val),\n this.precision.add(mulVal.precision)\n );\n }\n scalarMul(bn) {\n if (BN15.isBN(bn))\n return _BigNum.from(this.val.mul(bn), this.precision);\n return _BigNum.from(\n this.val.mul(bn.val),\n this.precision.add(bn.precision)\n ).shift(bn.precision.neg());\n }\n div(bn) {\n if (BN15.isBN(bn))\n return _BigNum.from(this.val.div(bn), this.precision);\n return _BigNum.from(this.val.div(bn.val), this.precision.sub(bn.precision));\n }\n shift(exponent, skipAdjustingPrecision = false) {\n const shiftVal = typeof exponent === \"number\" ? new BN15(exponent) : exponent;\n return _BigNum.from(\n shiftVal.isNeg() ? this.val.div(new BN15(10).pow(shiftVal)) : this.val.mul(new BN15(10).pow(shiftVal)),\n skipAdjustingPrecision ? this.precision : this.precision.add(shiftVal)\n );\n }\n shiftTo(targetPrecision) {\n return this.shift(targetPrecision.sub(this.precision));\n }\n scale(numerator, denominator) {\n return this.mul(_BigNum.from(new BN15(numerator))).div(new BN15(denominator));\n }\n toPercentage(denominator, precision) {\n return this.shift(precision).shift(2, true).div(denominator).toPrecision(precision);\n }\n gt(bn, ignorePrecision) {\n const comparisonVal = this.bigNumFromParam(bn);\n if (!ignorePrecision && !comparisonVal.eq(ZERO)) {\n assert(\n comparisonVal.precision.eq(this.precision),\n \"Trying to compare numbers with different precision. Yo can opt to ignore precision using the ignorePrecision parameter\"\n );\n }\n return this.val.gt(comparisonVal.val);\n }\n lt(bn, ignorePrecision) {\n const comparisonVal = this.bigNumFromParam(bn);\n if (!ignorePrecision && !comparisonVal.val.eq(ZERO)) {\n assert(\n comparisonVal.precision.eq(this.precision),\n \"Trying to compare numbers with different precision. Yo can opt to ignore precision using the ignorePrecision parameter\"\n );\n }\n return this.val.lt(comparisonVal.val);\n }\n gte(bn, ignorePrecision) {\n const comparisonVal = this.bigNumFromParam(bn);\n if (!ignorePrecision && !comparisonVal.val.eq(ZERO)) {\n assert(\n comparisonVal.precision.eq(this.precision),\n \"Trying to compare numbers with different precision. Yo can opt to ignore precision using the ignorePrecision parameter\"\n );\n }\n return this.val.gte(comparisonVal.val);\n }\n lte(bn, ignorePrecision) {\n const comparisonVal = this.bigNumFromParam(bn);\n if (!ignorePrecision && !comparisonVal.val.eq(ZERO)) {\n assert(\n comparisonVal.precision.eq(this.precision),\n \"Trying to compare numbers with different precision. Yo can opt to ignore precision using the ignorePrecision parameter\"\n );\n }\n return this.val.lte(comparisonVal.val);\n }\n eq(bn, ignorePrecision) {\n const comparisonVal = this.bigNumFromParam(bn);\n if (!ignorePrecision && !comparisonVal.val.eq(ZERO)) {\n assert(\n comparisonVal.precision.eq(this.precision),\n \"Trying to compare numbers with different precision. Yo can opt to ignore precision using the ignorePrecision parameter\"\n );\n }\n return this.val.eq(comparisonVal.val);\n }\n eqZero() {\n return this.val.eq(ZERO);\n }\n gtZero() {\n return this.val.gt(ZERO);\n }\n ltZero() {\n return this.val.lt(ZERO);\n }\n gteZero() {\n return this.val.gte(ZERO);\n }\n lteZero() {\n return this.val.lte(ZERO);\n }\n abs() {\n return new _BigNum(this.val.abs(), this.precision);\n }\n neg() {\n return new _BigNum(this.val.neg(), this.precision);\n }\n print() {\n assert(\n this.precision.gte(ZERO),\n \"Tried to print a BN with precision lower than zero\"\n );\n const isNeg = this.isNeg();\n const plainString = this.abs().toString();\n const precisionNum = this.precision.toNumber();\n let printString = [\n ...Array(this.precision.toNumber()).fill(0),\n ...plainString.split(\"\")\n ].join(\"\");\n printString = printString.substring(0, printString.length - precisionNum) + _BigNum.delim + printString.substring(printString.length - precisionNum);\n printString = printString.replace(/^0+/, \"\");\n if (printString[0] === _BigNum.delim)\n printString = `0${printString}`;\n if (isNeg)\n printString = `-${printString}`;\n if (printString[printString.length - 1] === _BigNum.delim)\n printString = printString.slice(0, printString.length - 1);\n return printString;\n }\n prettyPrint(useTradePrecision, precisionOverride) {\n const [leftSide, rightSide] = this.printShort(\n useTradePrecision,\n precisionOverride\n ).split(_BigNum.delim);\n let formattedLeftSide = leftSide;\n const isNeg = formattedLeftSide.includes(\"-\");\n if (isNeg) {\n formattedLeftSide = formattedLeftSide.replace(\"-\", \"\");\n }\n let index = formattedLeftSide.length - 3;\n while (index >= 1) {\n const formattedLeftSideArray = formattedLeftSide.split(\"\");\n formattedLeftSideArray.splice(index, 0, _BigNum.spacer);\n formattedLeftSide = formattedLeftSideArray.join(\"\");\n index -= 3;\n }\n return `${isNeg ? \"-\" : \"\"}${formattedLeftSide}${rightSide ? `${_BigNum.delim}${rightSide}` : \"\"}`;\n }\n printShort(useTradePrecision, precisionOverride) {\n const printVal = precisionOverride ? this.toPrecision(precisionOverride) : useTradePrecision ? this.toTradePrecision() : this.print();\n if (!printVal.includes(_BigNum.delim))\n return printVal;\n return printVal.replace(/0+$/g, \"\").replace(/\\.$/, \"\").replace(/,$/, \"\");\n }\n debug() {\n console.log(\n `${this.toString()} | ${this.print()} | ${this.precision.toString()}`\n );\n }\n toFixed(fixedPrecision, rounded = false) {\n if (rounded) {\n return this.toRounded(fixedPrecision).toFixed(fixedPrecision);\n }\n const printString = this.print();\n const [leftSide, rightSide] = printString.split(_BigNum.delim);\n const filledRightSide = [\n ...(rightSide != null ? rightSide : \"\").slice(0, fixedPrecision),\n ...Array(fixedPrecision).fill(\"0\")\n ].slice(0, fixedPrecision).join(\"\");\n return `${leftSide}${_BigNum.delim}${filledRightSide}`;\n }\n getZeroes(count) {\n return new Array(Math.max(count, 0)).fill(\"0\").join(\"\");\n }\n toRounded(roundingPrecision) {\n const printString = this.toString();\n let shouldRoundUp = false;\n const roundingDigitChar = printString[roundingPrecision];\n if (roundingDigitChar) {\n const roundingDigitVal = Number(roundingDigitChar);\n if (roundingDigitVal >= 5)\n shouldRoundUp = true;\n }\n if (shouldRoundUp) {\n const valueWithRoundedPrecisionAdded = this.add(\n _BigNum.from(\n new BN15(10).pow(new BN15(printString.length - roundingPrecision)),\n this.precision\n )\n );\n const roundedUpPrintString = valueWithRoundedPrecisionAdded.toString().slice(0, roundingPrecision) + this.getZeroes(printString.length - roundingPrecision);\n return _BigNum.from(roundedUpPrintString, this.precision);\n } else {\n const roundedDownPrintString = printString.slice(0, roundingPrecision) + this.getZeroes(printString.length - roundingPrecision);\n return _BigNum.from(roundedDownPrintString, this.precision);\n }\n }\n toPrecision(fixedPrecision, trailingZeroes = false, rounded = false) {\n if (rounded) {\n return this.toRounded(fixedPrecision).toPrecision(\n fixedPrecision,\n trailingZeroes\n );\n }\n const isNeg = this.isNeg();\n const printString = this.abs().print();\n const thisString = this.abs().toString();\n let precisionPrintString = printString.slice(0, fixedPrecision + 1);\n if (!printString.includes(_BigNum.delim) && thisString.length < fixedPrecision) {\n const precisionMismatch = fixedPrecision - thisString.length;\n return _BigNum.from(\n (isNeg ? \"-\" : \"\") + thisString + this.getZeroes(precisionMismatch),\n precisionMismatch\n ).toPrecision(fixedPrecision, trailingZeroes);\n }\n if (!precisionPrintString.includes(_BigNum.delim) || precisionPrintString[precisionPrintString.length - 1] === _BigNum.delim) {\n precisionPrintString = printString.slice(0, fixedPrecision);\n }\n const pointsOfPrecision = precisionPrintString.replace(\n _BigNum.delim,\n \"\"\n ).length;\n if (pointsOfPrecision < fixedPrecision) {\n precisionPrintString = [\n ...precisionPrintString.split(\"\"),\n ...Array(fixedPrecision - pointsOfPrecision).fill(\"0\")\n ].join(\"\");\n }\n if (!precisionPrintString.includes(_BigNum.delim)) {\n const delimFullStringLocation = printString.indexOf(_BigNum.delim);\n let skipExponent = false;\n if (delimFullStringLocation === -1) {\n skipExponent = true;\n }\n if (precisionPrintString[precisionPrintString.length - 1] === _BigNum.delim) {\n skipExponent = true;\n }\n if (printString.indexOf(_BigNum.delim) === fixedPrecision) {\n skipExponent = true;\n }\n if (!skipExponent) {\n const exponent = delimFullStringLocation - fixedPrecision;\n if (trailingZeroes) {\n precisionPrintString = `${precisionPrintString}${Array(exponent).fill(\"0\").join(\"\")}`;\n } else {\n precisionPrintString = `${precisionPrintString}e${exponent}`;\n }\n }\n }\n return `${isNeg ? \"-\" : \"\"}${precisionPrintString}`;\n }\n toTradePrecision(rounded = false) {\n return this.toPrecision(6, true, rounded);\n }\n toNotional(useTradePrecision, precisionOverride) {\n var _a;\n const prefix = `${this.lt(_BigNum.zero()) ? `-` : ``}$`;\n const usingCustomPrecision = useTradePrecision || precisionOverride;\n let val = usingCustomPrecision ? this.prettyPrint(useTradePrecision, precisionOverride) : _BigNum.fromPrint(this.toFixed(2), new BN15(2)).prettyPrint();\n if (!usingCustomPrecision) {\n const [_, rightSide] = val.split(_BigNum.delim);\n const trailingLength = (_a = rightSide == null ? void 0 : rightSide.length) != null ? _a : 0;\n if (trailingLength === 0) {\n val = `${val}${_BigNum.delim}00`;\n } else if (trailingLength === 1) {\n val = `${val}0`;\n }\n }\n return `${prefix}${val.replace(\"-\", \"\")}`;\n }\n toMillified(precision = 3, rounded = false) {\n if (rounded) {\n return this.toRounded(precision).toMillified(precision);\n }\n const isNeg = this.isNeg();\n const stringVal = this.abs().print();\n const [leftSide] = stringVal.split(_BigNum.delim);\n if (!leftSide) {\n return this.shift(new BN15(precision)).toPrecision(precision, true);\n }\n if (leftSide.length <= precision) {\n return this.toPrecision(precision);\n }\n if (leftSide.length <= 3) {\n return this.shift(new BN15(precision)).toPrecision(precision, true);\n }\n const unitTicks = [\"\", \"K\", \"M\", \"G\", \"T\", \"P\", \"E\", \"Z\", \"Y\"];\n const unitNumber = Math.floor((leftSide.length - 1) / 3);\n const unit = unitTicks[unitNumber];\n let leadDigits = leftSide.slice(0, precision);\n if (leadDigits.length < precision) {\n leadDigits = [\n ...leadDigits.split(\"\"),\n ...Array(precision - leadDigits.length).fill(\"0\")\n ].join(\"\");\n }\n const decimalLocation = leftSide.length - 3 * unitNumber;\n let leadString = \"\";\n if (decimalLocation >= precision) {\n leadString = `${leadDigits}`;\n } else {\n leadString = `${leadDigits.slice(0, decimalLocation)}${_BigNum.delim}${leadDigits.slice(decimalLocation)}`;\n }\n return `${isNeg ? \"-\" : \"\"}${leadString}${unit}`;\n }\n toJSON() {\n return {\n val: this.val.toString(),\n precision: this.precision.toString()\n };\n }\n isNeg() {\n return this.lt(ZERO, true);\n }\n isPos() {\n return !this.isNeg();\n }\n toNum() {\n let printedValue = this.print();\n if (_BigNum.delim !== \".\" || _BigNum.spacer !== \",\") {\n printedValue = printedValue.split(\"\").map((char) => {\n if (char === _BigNum.delim)\n return \".\";\n if (char === _BigNum.spacer)\n return \",\";\n return char;\n }).join(\"\");\n }\n return parseFloat(printedValue);\n }\n static fromJSON(json) {\n return _BigNum.from(new BN15(json.val), new BN15(json.precision));\n }\n static from(val = ZERO, precision) {\n assert(\n new BN15(precision).lt(new BN15(100)),\n \"Tried to create a bignum with precision higher than 10^100\"\n );\n return new _BigNum(val, precision);\n }\n static fromPrint(val, precisionShift) {\n var _a;\n if (!val)\n return _BigNum.from(ZERO, precisionShift);\n if (!val.replace(_BigNum.delim, \"\")) {\n return _BigNum.from(ZERO, precisionShift);\n }\n const sides = val.split(_BigNum.delim);\n const rightSide = sides[1];\n const leftSide = sides[0].replace(/\\s/g, \"\");\n const bnInput = `${leftSide != null ? leftSide : \"\"}${rightSide != null ? rightSide : \"\"}`;\n const rawBn = new BN15(bnInput);\n const rightSideLength = (_a = rightSide == null ? void 0 : rightSide.length) != null ? _a : 0;\n const totalShift = precisionShift ? precisionShift.sub(new BN15(rightSideLength)) : ZERO;\n return _BigNum.from(rawBn, precisionShift).shift(totalShift, true);\n }\n static max(a, b) {\n return a.gt(b) ? a : b;\n }\n static min(a, b) {\n return a.lt(b) ? a : b;\n }\n static zero(precision) {\n return _BigNum.from(0, precision);\n }\n};\nvar BigNum = _BigNum;\nBigNum.delim = \".\";\nBigNum.spacer = \",\";\n\n// src/events/types.ts\nvar DefaultEventSubscriptionOptions = {\n eventTypes: [\n \"DepositRecord\",\n \"FundingPaymentRecord\",\n \"LiquidationRecord\",\n \"OrderRecord\",\n \"OrderActionRecord\",\n \"FundingRateRecord\",\n \"NewUserRecord\",\n \"SettlePnlRecord\",\n \"LPRecord\",\n \"InsuranceFundRecord\",\n \"SpotInterestRecord\",\n \"InsuranceFundStakeRecord\",\n \"CurveRecord\"\n ],\n maxEventsPerType: 4096,\n orderBy: \"blockchain\",\n orderDir: \"asc\",\n commitment: \"confirmed\",\n maxTx: 4096,\n logProviderConfig: {\n type: \"websocket\"\n }\n};\n\n// src/events/txEventCache.ts\nvar Node = class {\n constructor(key, value, next, prev) {\n this.key = key;\n this.value = value;\n this.next = next;\n this.prev = prev;\n }\n};\nvar TxEventCache = class {\n constructor(maxTx = 1024) {\n this.maxTx = maxTx;\n this.size = 0;\n this.cacheMap = {};\n }\n add(key, events) {\n const existingNode = this.cacheMap[key];\n if (existingNode) {\n this.detach(existingNode);\n this.size--;\n } else if (this.size === this.maxTx) {\n delete this.cacheMap[this.tail.key];\n this.detach(this.tail);\n this.size--;\n }\n if (!this.head) {\n this.head = this.tail = new Node(key, events);\n } else {\n const node = new Node(key, events, this.head);\n this.head.prev = node;\n this.head = node;\n }\n this.cacheMap[key] = this.head;\n this.size++;\n }\n has(key) {\n return this.cacheMap.hasOwnProperty(key);\n }\n get(key) {\n var _a;\n return (_a = this.cacheMap[key]) == null ? void 0 : _a.value;\n }\n detach(node) {\n if (node.prev !== void 0) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next !== void 0) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n }\n clear() {\n this.head = void 0;\n this.tail = void 0;\n this.size = 0;\n this.cacheMap = {};\n }\n};\n\n// src/events/eventList.ts\nvar Node2 = class {\n constructor(event, next, prev) {\n this.event = event;\n this.next = next;\n this.prev = prev;\n }\n};\nvar EventList = class {\n constructor(eventType, maxSize, sortFn, orderDirection) {\n this.eventType = eventType;\n this.maxSize = maxSize;\n this.sortFn = sortFn;\n this.orderDirection = orderDirection;\n this.size = 0;\n }\n insert(event) {\n this.size++;\n const newNode = new Node2(event);\n if (this.head === void 0) {\n this.head = this.tail = newNode;\n return;\n }\n if (this.sortFn(this.head.event, newNode.event) === (this.orderDirection === \"asc\" ? \"less than\" : \"greater than\")) {\n this.head.prev = newNode;\n newNode.next = this.head;\n this.head = newNode;\n } else {\n let currentNode = this.head;\n while (currentNode.next !== void 0 && this.sortFn(currentNode.next.event, newNode.event) !== (this.orderDirection === \"asc\" ? \"less than\" : \"greater than\")) {\n currentNode = currentNode.next;\n }\n newNode.next = currentNode.next;\n if (currentNode.next !== void 0) {\n newNode.next.prev = newNode;\n } else {\n this.tail = newNode;\n }\n currentNode.next = newNode;\n newNode.prev = currentNode;\n }\n if (this.size > this.maxSize) {\n this.detach();\n }\n }\n detach() {\n const node = this.tail;\n if (node.prev !== void 0) {\n node.prev.next = node.next;\n } else {\n this.head = node.next;\n }\n if (node.next !== void 0) {\n node.next.prev = node.prev;\n } else {\n this.tail = node.prev;\n }\n this.size--;\n }\n toArray() {\n return Array.from(this);\n }\n *[Symbol.iterator]() {\n let node = this.head;\n while (node) {\n yield node.event;\n node = node.next;\n }\n }\n};\n\n// src/events/fetchLogs.ts\nfunction mapTransactionResponseToLog(transaction) {\n return {\n txSig: transaction.transaction.signatures[0],\n slot: transaction.slot,\n logs: transaction.meta.logMessages\n };\n}\nasync function fetchLogs(connection, programId, finality, beforeTx, untilTx, limit) {\n const signatures = await connection.getSignaturesForAddress(\n programId,\n {\n before: beforeTx,\n until: untilTx,\n limit\n },\n finality\n );\n const sortedSignatures = signatures.sort(\n (a, b) => a.slot === b.slot ? 0 : a.slot < b.slot ? -1 : 1\n );\n const filteredSignatures = sortedSignatures.filter(\n (signature) => !signature.err\n );\n if (filteredSignatures.length === 0) {\n return void 0;\n }\n const chunkedSignatures = chunk(filteredSignatures, 100);\n const transactionLogs = (await Promise.all(\n chunkedSignatures.map(async (chunk2) => {\n const transactions = await connection.getTransactions(\n chunk2.map((confirmedSignature) => confirmedSignature.signature),\n finality\n );\n return transactions.reduce((logs, transaction) => {\n if (transaction) {\n logs.push(mapTransactionResponseToLog(transaction));\n }\n return logs;\n }, new Array());\n })\n )).flat();\n const earliest = filteredSignatures[0];\n const mostRecent = filteredSignatures[filteredSignatures.length - 1];\n return {\n transactionLogs,\n earliestTx: earliest.signature,\n mostRecentTx: mostRecent.signature,\n earliestSlot: earliest.slot,\n mostRecentSlot: mostRecent.slot,\n mostRecentBlockTime: mostRecent.blockTime\n };\n}\nfunction chunk(array, size) {\n return new Array(Math.ceil(array.length / size)).fill(null).map((_, index) => index * size).map((begin) => array.slice(begin, begin + size));\n}\nvar LogParser = class {\n constructor(program2) {\n this.program = program2;\n }\n parseEventsFromTransaction(transaction) {\n const transactionLogObject = mapTransactionResponseToLog(transaction);\n return this.parseEventsFromLogs(transactionLogObject);\n }\n parseEventsFromLogs(event) {\n const records = [];\n this.program._events._eventParser.parseLogs(event.logs, (eventLog) => {\n eventLog.data.txSig = event.txSig;\n eventLog.data.slot = event.slot;\n eventLog.data.eventType = eventLog.name;\n records.push(eventLog.data);\n });\n return records;\n }\n};\n\n// src/events/pollingLogProvider.ts\nvar PollingLogProvider = class {\n constructor(connection, programId, commitment, frequency = 15 * 1e3) {\n this.connection = connection;\n this.programId = programId;\n this.frequency = frequency;\n this.firstFetch = true;\n this.finality = commitment === \"finalized\" ? \"finalized\" : \"confirmed\";\n }\n subscribe(callback, skipHistory) {\n if (this.intervalId) {\n return true;\n }\n this.intervalId = setInterval(async () => {\n if (this.mutex === 1) {\n return;\n }\n this.mutex = 1;\n try {\n const response = await fetchLogs(\n this.connection,\n this.programId,\n this.finality,\n void 0,\n this.mostRecentSeenTx,\n skipHistory && this.firstFetch ? 1 : void 0\n );\n if (response === void 0) {\n return;\n }\n this.firstFetch = false;\n const { mostRecentTx, transactionLogs } = response;\n for (const { txSig, slot, logs } of transactionLogs) {\n callback(txSig, slot, logs, response.mostRecentBlockTime);\n }\n this.mostRecentSeenTx = mostRecentTx;\n } catch (e) {\n console.error(\"PollingLogProvider threw an Error\");\n console.error(e);\n } finally {\n this.mutex = 0;\n }\n }, this.frequency);\n return true;\n }\n isSubscribed() {\n return this.intervalId !== void 0;\n }\n async unsubscribe() {\n if (this.intervalId !== void 0) {\n clearInterval(this.intervalId);\n this.intervalId = void 0;\n }\n return true;\n }\n};\n\n// src/events/webSocketLogProvider.ts\nvar WebSocketLogProvider = class {\n constructor(connection, programId, commitment) {\n this.connection = connection;\n this.programId = programId;\n this.commitment = commitment;\n }\n subscribe(callback) {\n if (this.subscriptionId) {\n return true;\n }\n this.subscriptionId = this.connection.onLogs(\n this.programId,\n (logs, ctx) => {\n callback(logs.signature, ctx.slot, logs.logs, void 0);\n },\n this.commitment\n );\n return true;\n }\n isSubscribed() {\n return this.subscriptionId !== void 0;\n }\n async unsubscribe() {\n if (this.subscriptionId !== void 0) {\n await this.connection.removeOnLogsListener(this.subscriptionId);\n this.subscriptionId = void 0;\n }\n return true;\n }\n};\n\n// src/events/eventSubscriber.ts\nimport { EventEmitter as EventEmitter9 } from \"events\";\n\n// src/events/sort.ts\nfunction clientSortAscFn() {\n return \"less than\";\n}\nfunction clientSortDescFn() {\n return \"greater than\";\n}\nfunction defaultBlockchainSortFn(currentEvent, newEvent) {\n return currentEvent.slot <= newEvent.slot ? \"less than\" : \"greater than\";\n}\nfunction orderActionRecordSortFn(currentEvent, newEvent) {\n var _a, _b;\n const currentEventMarketIndex = currentEvent.marketIndex;\n const newEventMarketIndex = newEvent.marketIndex;\n if (currentEventMarketIndex !== newEventMarketIndex) {\n return currentEvent.ts.lte(newEvent.ts) ? \"less than\" : \"greater than\";\n }\n if (((_a = currentEvent.fillRecordId) == null ? void 0 : _a.gt(ZERO)) && ((_b = newEvent.fillRecordId) == null ? void 0 : _b.gt(ZERO))) {\n return currentEvent.fillRecordId.lte(newEvent.fillRecordId) ? \"less than\" : \"greater than\";\n } else {\n return currentEvent.ts.lte(newEvent.ts) ? \"less than\" : \"greater than\";\n }\n}\nfunction getSortFn(orderBy, orderDir, eventType) {\n if (orderBy === \"client\") {\n return orderDir === \"asc\" ? clientSortAscFn : clientSortDescFn;\n }\n switch (eventType) {\n case \"OrderActionRecord\":\n return orderActionRecordSortFn;\n default:\n return defaultBlockchainSortFn;\n }\n}\n\n// src/events/eventSubscriber.ts\nvar EventSubscriber = class {\n constructor(connection, program2, options = DefaultEventSubscriptionOptions) {\n this.connection = connection;\n this.program = program2;\n this.options = options;\n this.awaitTxPromises = /* @__PURE__ */ new Map();\n this.awaitTxResolver = /* @__PURE__ */ new Map();\n this.options = Object.assign({}, DefaultEventSubscriptionOptions, options);\n this.txEventCache = new TxEventCache(this.options.maxTx);\n this.eventListMap = /* @__PURE__ */ new Map();\n for (const eventType of this.options.eventTypes) {\n this.eventListMap.set(\n eventType,\n new EventList(\n eventType,\n this.options.maxEventsPerType,\n getSortFn(this.options.orderBy, this.options.orderDir, eventType),\n this.options.orderDir\n )\n );\n }\n this.eventEmitter = new EventEmitter9();\n if (this.options.logProviderConfig.type === \"websocket\") {\n this.logProvider = new WebSocketLogProvider(\n this.connection,\n this.program.programId,\n this.options.commitment\n );\n } else {\n this.logProvider = new PollingLogProvider(\n this.connection,\n this.program.programId,\n options.commitment,\n this.options.logProviderConfig.frequency\n );\n }\n }\n async subscribe() {\n try {\n if (this.logProvider.isSubscribed()) {\n return true;\n }\n this.logProvider.subscribe((txSig, slot, logs, mostRecentBlockTime) => {\n this.handleTxLogs(txSig, slot, logs, mostRecentBlockTime);\n }, true);\n return true;\n } catch (e) {\n console.error(\"Error fetching previous txs in event subscriber\");\n console.error(e);\n return false;\n }\n }\n handleTxLogs(txSig, slot, logs, mostRecentBlockTime) {\n if (this.txEventCache.has(txSig)) {\n return;\n }\n const wrappedEvents = this.parseEventsFromLogs(txSig, slot, logs);\n for (const wrappedEvent of wrappedEvents) {\n this.eventListMap.get(wrappedEvent.eventType).insert(wrappedEvent);\n }\n for (const wrappedEvent of wrappedEvents) {\n this.eventEmitter.emit(\"newEvent\", wrappedEvent);\n }\n if (this.awaitTxPromises.has(txSig)) {\n this.awaitTxPromises.delete(txSig);\n this.awaitTxResolver.get(txSig)();\n this.awaitTxResolver.delete(txSig);\n }\n if (!this.lastSeenSlot || slot > this.lastSeenSlot) {\n this.lastSeenTxSig = txSig;\n }\n if (this.lastSeenBlockTime === void 0 || mostRecentBlockTime > this.lastSeenBlockTime) {\n this.lastSeenBlockTime = mostRecentBlockTime;\n }\n this.txEventCache.add(txSig, wrappedEvents);\n }\n async fetchPreviousTx(fetchMax) {\n if (!this.options.untilTx && !fetchMax) {\n return;\n }\n let txFetched = 0;\n let beforeTx = void 0;\n const untilTx = this.options.untilTx;\n while (txFetched < this.options.maxTx) {\n const response = await fetchLogs(\n this.connection,\n this.program.programId,\n this.options.commitment === \"finalized\" ? \"finalized\" : \"confirmed\",\n beforeTx,\n untilTx\n );\n if (response === void 0) {\n break;\n }\n txFetched += response.transactionLogs.length;\n beforeTx = response.earliestTx;\n for (const { txSig, slot, logs } of response.transactionLogs) {\n this.handleTxLogs(txSig, slot, logs, response.mostRecentBlockTime);\n }\n }\n }\n async unsubscribe() {\n return await this.logProvider.unsubscribe();\n }\n parseEventsFromLogs(txSig, slot, logs) {\n const records = [];\n this.program._events._eventParser.parseLogs(logs, (event) => {\n const expectRecordType = this.eventListMap.has(event.name);\n if (expectRecordType) {\n event.data.txSig = txSig;\n event.data.slot = slot;\n event.data.eventType = event.name;\n records.push(event.data);\n }\n });\n return records;\n }\n awaitTx(txSig) {\n if (this.awaitTxPromises.has(txSig)) {\n return this.awaitTxPromises.get(txSig);\n }\n if (this.txEventCache.has(txSig)) {\n return Promise.resolve();\n }\n const promise = new Promise((resolve) => {\n this.awaitTxResolver.set(txSig, resolve);\n });\n this.awaitTxPromises.set(txSig, promise);\n return promise;\n }\n getEventList(eventType) {\n return this.eventListMap.get(eventType);\n }\n getEventsArray(eventType) {\n return this.eventListMap.get(eventType).toArray();\n }\n getEventsByTx(txSig) {\n return this.txEventCache.get(txSig);\n }\n};\n\n// src/math/auction.ts\nfunction isAuctionComplete(order, slot) {\n if (order.auctionDuration === 0) {\n return true;\n }\n return new BN(slot).sub(order.slot).gt(new BN(order.auctionDuration));\n}\nfunction getAuctionPrice(order, slot, oraclePrice) {\n if (isOneOfVariant(order.orderType, [\"market\", \"triggerMarket\"])) {\n return getAuctionPriceForFixedAuction(order, slot);\n } else if (isVariant(order.orderType, \"oracle\")) {\n return getAuctionPriceForOracleOffsetAuction(order, slot, oraclePrice);\n } else {\n throw Error(`Cant get auction price for order type ${order.orderType}`);\n }\n}\nfunction getAuctionPriceForFixedAuction(order, slot) {\n const slotsElapsed = new BN(slot).sub(order.slot);\n const deltaDenominator = new BN(order.auctionDuration);\n const deltaNumerator = BN.min(slotsElapsed, deltaDenominator);\n if (deltaDenominator.eq(ZERO)) {\n return order.auctionEndPrice;\n }\n let priceDelta;\n if (isVariant(order.direction, \"long\")) {\n priceDelta = order.auctionEndPrice.sub(order.auctionStartPrice).mul(deltaNumerator).div(deltaDenominator);\n } else {\n priceDelta = order.auctionStartPrice.sub(order.auctionEndPrice).mul(deltaNumerator).div(deltaDenominator);\n }\n let price;\n if (isVariant(order.direction, \"long\")) {\n price = order.auctionStartPrice.add(priceDelta);\n } else {\n price = order.auctionStartPrice.sub(priceDelta);\n }\n return price;\n}\nfunction getAuctionPriceForOracleOffsetAuction(order, slot, oraclePrice) {\n const slotsElapsed = new BN(slot).sub(order.slot);\n const deltaDenominator = new BN(order.auctionDuration);\n const deltaNumerator = BN.min(slotsElapsed, deltaDenominator);\n if (deltaDenominator.eq(ZERO)) {\n return order.auctionEndPrice.add(order.auctionEndPrice);\n }\n let priceOffsetDelta;\n if (isVariant(order.direction, \"long\")) {\n priceOffsetDelta = order.auctionEndPrice.sub(order.auctionStartPrice).mul(deltaNumerator).div(deltaDenominator);\n } else {\n priceOffsetDelta = order.auctionStartPrice.sub(order.auctionEndPrice).mul(deltaNumerator).div(deltaDenominator);\n }\n let priceOffset;\n if (isVariant(order.direction, \"long\")) {\n priceOffset = order.auctionStartPrice.add(priceOffsetDelta);\n } else {\n priceOffset = order.auctionStartPrice.sub(priceOffsetDelta);\n }\n return oraclePrice.add(priceOffset);\n}\n\n// src/math/spotMarket.ts\nimport { BN as BN16 } from \"@project-serum/anchor\";\nfunction castNumberToSpotPrecision(value, spotMarket) {\n return new BN16(value * Math.pow(10, spotMarket.decimals));\n}\n\n// src/math/conversion.ts\nvar convertToNumber = (bigNumber, precision = PRICE_PRECISION) => {\n if (!bigNumber)\n return 0;\n return bigNumber.div(precision).toNumber() + bigNumber.mod(precision).toNumber() / precision.toNumber();\n};\n\n// src/math/exchangeStatus.ts\nfunction exchangePaused(state) {\n return isVariant(state.exchangeStatus, \"paused\");\n}\nfunction fillPaused(state, market) {\n return isOneOfVariant(state.exchangeStatus, [\"paused\", \"fillPaused\"]) || isOneOfVariant(market.status, [\"paused\", \"fillPaused\"]);\n}\nfunction ammPaused(state, market) {\n return isOneOfVariant(state.exchangeStatus, [\"paused\", \"ammPaused\"]) || isOneOfVariant(market.status, [\"paused\", \"ammPaused\"]);\n}\n\n// src/math/funding.ts\nimport { BN as BN17 } from \"@project-serum/anchor\";\nasync function calculateAllEstimatedFundingRate(market, oraclePriceData, periodAdjustment = new BN17(1)) {\n const secondsInHour = new BN17(3600);\n const hoursInDay = new BN17(24);\n const ONE2 = new BN17(1);\n if (isVariant(market.status, \"uninitialized\")) {\n return [ZERO, ZERO, ZERO, ZERO, ZERO];\n }\n const payFreq = new BN17(market.amm.fundingPeriod);\n const now = new BN17((Date.now() / 1e3).toFixed(0));\n const timeSinceLastUpdate = now.sub(market.amm.lastFundingRateTs);\n const lastMarkTwapWithMantissa = market.amm.lastMarkPriceTwap;\n const lastMarkPriceTwapTs = market.amm.lastMarkPriceTwapTs;\n const timeSinceLastMarkChange = now.sub(lastMarkPriceTwapTs);\n const markTwapTimeSinceLastUpdate = BN17.max(\n secondsInHour,\n BN17.max(ZERO, secondsInHour.sub(timeSinceLastMarkChange))\n );\n const [bid, ask] = calculateBidAskPrice(market.amm, oraclePriceData);\n const baseAssetPriceWithMantissa = bid.add(ask).div(new BN17(2));\n const markTwapWithMantissa = markTwapTimeSinceLastUpdate.mul(lastMarkTwapWithMantissa).add(timeSinceLastMarkChange.mul(baseAssetPriceWithMantissa)).div(timeSinceLastMarkChange.add(markTwapTimeSinceLastUpdate));\n const lastOracleTwapWithMantissa = market.amm.historicalOracleData.lastOraclePriceTwap;\n const lastOraclePriceTwapTs = market.amm.historicalOracleData.lastOraclePriceTwapTs;\n const oracleInvalidDuration = BN17.max(\n ZERO,\n lastMarkPriceTwapTs.sub(lastOraclePriceTwapTs)\n );\n const timeSinceLastOracleTwapUpdate = now.sub(lastOraclePriceTwapTs);\n const oracleTwapTimeSinceLastUpdate = BN17.max(\n ONE2,\n BN17.min(\n secondsInHour,\n BN17.max(ONE2, secondsInHour.sub(timeSinceLastOracleTwapUpdate))\n )\n );\n let oracleTwapWithMantissa = lastOracleTwapWithMantissa;\n if (oraclePriceData) {\n const oraclePrice = oraclePriceData.price;\n const oracleLiveVsTwap = oraclePrice.sub(lastOracleTwapWithMantissa).abs().mul(PRICE_PRECISION).mul(new BN17(100)).div(lastOracleTwapWithMantissa);\n if (oracleLiveVsTwap.lte(PRICE_PRECISION.mul(new BN17(10)))) {\n oracleTwapWithMantissa = oracleTwapTimeSinceLastUpdate.mul(lastOracleTwapWithMantissa).add(timeSinceLastMarkChange.mul(oraclePrice)).div(timeSinceLastMarkChange.add(oracleTwapTimeSinceLastUpdate));\n }\n }\n const shrunkLastOracleTwapwithMantissa = oracleTwapTimeSinceLastUpdate.mul(lastOracleTwapWithMantissa).add(oracleInvalidDuration.mul(lastMarkTwapWithMantissa)).div(oracleTwapTimeSinceLastUpdate.add(oracleInvalidDuration));\n const twapSpread = lastMarkTwapWithMantissa.sub(\n shrunkLastOracleTwapwithMantissa\n );\n const twapSpreadPct = twapSpread.mul(PRICE_PRECISION).mul(new BN17(100)).div(shrunkLastOracleTwapwithMantissa);\n const lowerboundEst = twapSpreadPct.mul(payFreq).mul(BN17.min(secondsInHour, timeSinceLastUpdate)).mul(periodAdjustment).div(secondsInHour).div(secondsInHour).div(hoursInDay);\n const interpEst = twapSpreadPct.mul(periodAdjustment).div(hoursInDay);\n const interpRateQuote = twapSpreadPct.mul(periodAdjustment).div(hoursInDay).div(PRICE_PRECISION.div(QUOTE_PRECISION));\n let feePoolSize = calculateFundingPool(market);\n if (interpRateQuote.lt(new BN17(0))) {\n feePoolSize = feePoolSize.mul(new BN17(-1));\n }\n let cappedAltEst;\n let largerSide;\n let smallerSide;\n if (market.amm.baseAssetAmountLong.gt(market.amm.baseAssetAmountShort.abs())) {\n largerSide = market.amm.baseAssetAmountLong.abs();\n smallerSide = market.amm.baseAssetAmountShort.abs();\n if (twapSpread.gt(new BN17(0))) {\n return [\n markTwapWithMantissa,\n oracleTwapWithMantissa,\n lowerboundEst,\n interpEst,\n interpEst\n ];\n }\n } else if (market.amm.baseAssetAmountLong.lt(market.amm.baseAssetAmountShort.abs())) {\n largerSide = market.amm.baseAssetAmountShort.abs();\n smallerSide = market.amm.baseAssetAmountLong.abs();\n if (twapSpread.lt(new BN17(0))) {\n return [\n markTwapWithMantissa,\n oracleTwapWithMantissa,\n lowerboundEst,\n interpEst,\n interpEst\n ];\n }\n } else {\n return [\n markTwapWithMantissa,\n oracleTwapWithMantissa,\n lowerboundEst,\n interpEst,\n interpEst\n ];\n }\n if (largerSide.gt(ZERO)) {\n cappedAltEst = smallerSide.mul(twapSpread).div(hoursInDay);\n const feePoolTopOff = feePoolSize.mul(PRICE_PRECISION.div(QUOTE_PRECISION)).mul(AMM_RESERVE_PRECISION);\n cappedAltEst = cappedAltEst.add(feePoolTopOff).div(largerSide);\n cappedAltEst = cappedAltEst.mul(PRICE_PRECISION).mul(new BN17(100)).div(oracleTwapWithMantissa).mul(periodAdjustment);\n if (cappedAltEst.abs().gte(interpEst.abs())) {\n cappedAltEst = interpEst;\n }\n } else {\n cappedAltEst = interpEst;\n }\n return [\n markTwapWithMantissa,\n oracleTwapWithMantissa,\n lowerboundEst,\n cappedAltEst,\n interpEst\n ];\n}\nasync function calculateEstimatedFundingRate(market, oraclePriceData, periodAdjustment = new BN17(1), estimationMethod) {\n const [_1, _2, lowerboundEst, cappedAltEst, interpEst] = await calculateAllEstimatedFundingRate(\n market,\n oraclePriceData,\n periodAdjustment\n );\n if (estimationMethod == \"lowerbound\") {\n return lowerboundEst;\n } else if (estimationMethod == \"capped\") {\n return cappedAltEst;\n } else {\n return interpEst;\n }\n}\nasync function calculateLongShortFundingRate(market, oraclePriceData, periodAdjustment = new BN17(1)) {\n const [_1, _2, _, cappedAltEst, interpEst] = await calculateAllEstimatedFundingRate(\n market,\n oraclePriceData,\n periodAdjustment\n );\n if (market.amm.baseAssetAmountLong.gt(market.amm.baseAssetAmountShort)) {\n return [cappedAltEst, interpEst];\n } else if (market.amm.baseAssetAmountLong.lt(market.amm.baseAssetAmountShort)) {\n return [interpEst, cappedAltEst];\n } else {\n return [interpEst, interpEst];\n }\n}\nasync function calculateLongShortFundingRateAndLiveTwaps(market, oraclePriceData, periodAdjustment = new BN17(1)) {\n const [markTwapLive, oracleTwapLive, _2, cappedAltEst, interpEst] = await calculateAllEstimatedFundingRate(\n market,\n oraclePriceData,\n periodAdjustment\n );\n if (market.amm.baseAssetAmountLong.gt(market.amm.baseAssetAmountShort.abs())) {\n return [markTwapLive, oracleTwapLive, cappedAltEst, interpEst];\n } else if (market.amm.baseAssetAmountLong.lt(market.amm.baseAssetAmountShort.abs())) {\n return [markTwapLive, oracleTwapLive, interpEst, cappedAltEst];\n } else {\n return [markTwapLive, oracleTwapLive, interpEst, interpEst];\n }\n}\nfunction calculateFundingPool(market) {\n const totalFeeLB = market.amm.totalExchangeFee.div(new BN17(2));\n const feePool = BN17.max(\n ZERO,\n market.amm.totalFeeMinusDistributions.sub(totalFeeLB).mul(new BN17(1)).div(new BN17(3))\n );\n return feePool;\n}\n\n// src/math/orders.ts\nimport { BN as BN18 } from \"@project-serum/anchor\";\nfunction isOrderRiskIncreasing(user, order) {\n if (isVariant(order.status, \"init\")) {\n return false;\n }\n const position = user.getPerpPosition(order.marketIndex) || user.getEmptyPosition(order.marketIndex);\n if (position.baseAssetAmount.eq(ZERO)) {\n return true;\n }\n if (position.baseAssetAmount.gt(ZERO) && isVariant(order.direction, \"long\")) {\n return true;\n }\n if (position.baseAssetAmount.lt(ZERO) && isVariant(order.direction, \"short\")) {\n return true;\n }\n const baseAssetAmountToFill = order.baseAssetAmount.sub(\n order.baseAssetAmountFilled\n );\n if (baseAssetAmountToFill.gt(position.baseAssetAmount.abs().mul(TWO))) {\n return true;\n }\n return false;\n}\nfunction isOrderRiskIncreasingInSameDirection(user, order) {\n if (isVariant(order.status, \"init\")) {\n return false;\n }\n const position = user.getPerpPosition(order.marketIndex) || user.getEmptyPosition(order.marketIndex);\n if (position.baseAssetAmount.eq(ZERO)) {\n return true;\n }\n if (position.baseAssetAmount.gt(ZERO) && isVariant(order.direction, \"long\")) {\n return true;\n }\n if (position.baseAssetAmount.lt(ZERO) && isVariant(order.direction, \"short\")) {\n return true;\n }\n return false;\n}\nfunction isOrderReduceOnly(user, order) {\n if (isVariant(order.status, \"init\")) {\n return false;\n }\n const position = user.getPerpPosition(order.marketIndex) || user.getEmptyPosition(order.marketIndex);\n if (position.baseAssetAmount.gte(ZERO) && isVariant(order.direction, \"long\")) {\n return false;\n }\n if (position.baseAssetAmount.lte(ZERO) && isVariant(order.direction, \"short\")) {\n return false;\n }\n return true;\n}\nfunction standardizeBaseAssetAmount(baseAssetAmount, stepSize) {\n const remainder = baseAssetAmount.mod(stepSize);\n return baseAssetAmount.sub(remainder);\n}\nfunction getLimitPrice(order, oraclePriceData, slot, fallbackPrice) {\n let limitPrice;\n if (hasAuctionPrice(order, slot)) {\n limitPrice = getAuctionPrice(order, slot, oraclePriceData.price);\n } else if (order.oraclePriceOffset !== 0) {\n limitPrice = oraclePriceData.price.add(new BN18(order.oraclePriceOffset));\n } else if (order.price.eq(ZERO)) {\n limitPrice = fallbackPrice;\n } else {\n limitPrice = order.price;\n }\n return limitPrice;\n}\nfunction hasLimitPrice(order, slot) {\n return order.price.gt(ZERO) || order.oraclePriceOffset != 0 || !isAuctionComplete(order, slot);\n}\nfunction hasAuctionPrice(order, slot) {\n return isMarketOrder(order) && !isAuctionComplete(order, slot);\n}\nfunction isFillableByVAMM(order, market, oraclePriceData, slot, ts) {\n return isAuctionComplete(order, slot) && !calculateBaseAssetAmountForAmmToFulfill(\n order,\n market,\n oraclePriceData,\n slot\n ).eq(ZERO) || isOrderExpired(order, ts);\n}\nfunction calculateBaseAssetAmountForAmmToFulfill(order, market, oraclePriceData, slot) {\n if (mustBeTriggered(order) && !isTriggered(order)) {\n return ZERO;\n }\n const limitPrice = getLimitPrice(order, oraclePriceData, slot);\n let baseAssetAmount;\n const updatedAMM = calculateUpdatedAMM(market.amm, oraclePriceData);\n if (limitPrice !== void 0) {\n baseAssetAmount = calculateBaseAssetAmountToFillUpToLimitPrice(\n order,\n updatedAMM,\n limitPrice,\n oraclePriceData\n );\n } else {\n baseAssetAmount = order.baseAssetAmount.sub(order.baseAssetAmountFilled);\n }\n const maxBaseAssetAmount = calculateMaxBaseAssetAmountFillable(\n updatedAMM,\n order.direction\n );\n return BN18.min(maxBaseAssetAmount, baseAssetAmount);\n}\nfunction calculateBaseAssetAmountToFillUpToLimitPrice(order, amm, limitPrice, oraclePriceData) {\n const [maxAmountToTrade, direction] = calculateMaxBaseAssetAmountToTrade(\n amm,\n limitPrice,\n order.direction,\n oraclePriceData\n );\n const baseAssetAmount = standardizeBaseAssetAmount(\n maxAmountToTrade,\n amm.orderStepSize\n );\n const sameDirection = isSameDirection(direction, order.direction);\n if (!sameDirection) {\n return ZERO;\n }\n const baseAssetAmountUnfilled = order.baseAssetAmount.sub(\n order.baseAssetAmountFilled\n );\n return baseAssetAmount.gt(baseAssetAmountUnfilled) ? baseAssetAmountUnfilled : baseAssetAmount;\n}\nfunction isSameDirection(firstDirection, secondDirection) {\n return isVariant(firstDirection, \"long\") && isVariant(secondDirection, \"long\") || isVariant(firstDirection, \"short\") && isVariant(secondDirection, \"short\");\n}\nfunction isOrderExpired(order, ts) {\n if (mustBeTriggered(order) || !isVariant(order.status, \"open\") || order.maxTs.eq(ZERO)) {\n return false;\n }\n return new BN18(ts).gt(order.maxTs);\n}\nfunction isMarketOrder(order) {\n return isOneOfVariant(order.orderType, [\"market\", \"triggerMarket\", \"oracle\"]);\n}\nfunction isLimitOrder(order) {\n return isOneOfVariant(order.orderType, [\"limit\", \"triggerLimit\"]);\n}\nfunction mustBeTriggered(order) {\n return isOneOfVariant(order.orderType, [\"triggerMarket\", \"triggerLimit\"]);\n}\nfunction isTriggered(order) {\n return isOneOfVariant(order.triggerCondition, [\n \"triggeredAbove\",\n \"triggeredBelow\"\n ]);\n}\n\n// src/math/insurance.ts\nfunction stakeAmountToShares(amount, totalIfShares, insuranceFundVaultBalance) {\n let nShares;\n if (insuranceFundVaultBalance.gt(ZERO)) {\n nShares = amount.mul(totalIfShares).div(insuranceFundVaultBalance);\n } else {\n nShares = amount;\n }\n return nShares;\n}\nfunction unstakeSharesToAmount(nShares, totalIfShares, insuranceFundVaultBalance) {\n let amount;\n if (totalIfShares.gt(ZERO)) {\n amount = BN.max(\n ZERO,\n nShares.mul(insuranceFundVaultBalance).div(totalIfShares)\n );\n } else {\n amount = ZERO;\n }\n return amount;\n}\n\n// src/orderParams.ts\nfunction getLimitOrderParams(params) {\n return Object.assign({}, params, {\n orderType: OrderType.LIMIT\n });\n}\nfunction getTriggerMarketOrderParams(params) {\n return Object.assign({}, params, {\n orderType: OrderType.TRIGGER_MARKET\n });\n}\nfunction getTriggerLimitOrderParams(params) {\n return Object.assign({}, params, {\n orderType: OrderType.TRIGGER_LIMIT\n });\n}\nfunction getMarketOrderParams(params) {\n return Object.assign({}, params, {\n orderType: OrderType.MARKET\n });\n}\n\n// src/slot/SlotSubscriber.ts\nimport { EventEmitter as EventEmitter10 } from \"events\";\nvar SlotSubscriber = class {\n constructor(connection, _config) {\n this.connection = connection;\n this.eventEmitter = new EventEmitter10();\n }\n async subscribe() {\n this.currentSlot = await this.connection.getSlot(\"confirmed\");\n this.subscriptionId = this.connection.onSlotChange((slotInfo) => {\n this.currentSlot = slotInfo.slot;\n this.eventEmitter.emit(\"newSlot\", slotInfo.slot);\n });\n }\n getSlot() {\n return this.currentSlot;\n }\n async unsubscribe() {\n if (this.subscriptionId) {\n await this.connection.removeSlotChangeListener(this.subscriptionId);\n }\n }\n};\n\n// src/serum/serumSubscriber.ts\nimport { Market, Orderbook } from \"@project-serum/serum\";\nimport { BN as BN19 } from \"@project-serum/anchor\";\nvar SerumSubscriber = class {\n constructor(config) {\n this.connection = config.connection;\n this.programId = config.programId;\n this.marketAddress = config.marketAddress;\n this.accountLoader = config.accountSubscription.accountLoader;\n }\n async subscribe() {\n if (this.subscribed) {\n return;\n }\n this.market = await Market.load(\n this.connection,\n this.marketAddress,\n void 0,\n this.programId\n );\n this.asksAddress = this.market.asksAddress;\n this.asks = await this.market.loadAsks(this.connection);\n this.asksCallbackId = await this.accountLoader.addAccount(\n this.asksAddress,\n (buffer, slot) => {\n this.lastAsksSlot = slot;\n this.asks = Orderbook.decode(this.market, buffer);\n }\n );\n this.bidsAddress = this.market.bidsAddress;\n this.bids = await this.market.loadBids(this.connection);\n this.bidsCallbackId = await this.accountLoader.addAccount(\n this.bidsAddress,\n (buffer, slot) => {\n this.lastBidsSlot = slot;\n this.bids = Orderbook.decode(this.market, buffer);\n }\n );\n this.subscribed = true;\n }\n getBestBid() {\n const bestBid = this.bids.getL2(1)[0];\n if (!bestBid) {\n return void 0;\n }\n return new BN19(bestBid[0] * PRICE_PRECISION.toNumber());\n }\n getBestAsk() {\n const bestAsk = this.asks.getL2(1)[0];\n if (!bestAsk) {\n return void 0;\n }\n return new BN19(bestAsk[0] * PRICE_PRECISION.toNumber());\n }\n async unsubscribe() {\n if (!this.subscribed) {\n return;\n }\n this.accountLoader.removeAccount(this.asksAddress, this.asksCallbackId);\n this.accountLoader.removeAccount(this.bidsAddress, this.bidsCallbackId);\n this.subscribed = false;\n }\n};\n\n// src/serum/serumFulfillmentConfigMap.ts\nvar SerumFulfillmentConfigMap = class {\n constructor(driftClient) {\n this.map = /* @__PURE__ */ new Map();\n this.driftClient = driftClient;\n }\n async add(marketIndex, serumMarketAddress) {\n const account = await this.driftClient.getSerumV3FulfillmentConfig(\n serumMarketAddress\n );\n this.map.set(marketIndex, account);\n }\n get(marketIndex) {\n return this.map.get(marketIndex);\n }\n};\n\n// src/util/computeUnits.ts\nasync function findComputeUnitConsumption(programId, connection, txSignature, commitment = \"confirmed\") {\n const tx = await connection.getTransaction(txSignature, { commitment });\n const computeUnits = [];\n const regex = new RegExp(\n `Program ${programId.toString()} consumed ([0-9]{0,6}) of ([0-9]{0,7}) compute units`\n );\n tx.meta.logMessages.forEach((logMessage) => {\n const match = logMessage.match(regex);\n if (match && match[1]) {\n computeUnits.push(match[1]);\n }\n });\n return computeUnits;\n}\n\n// src/util/tps.ts\nasync function estimateTps(programId, connection, failed) {\n let signatures = await connection.getSignaturesForAddress(\n programId,\n void 0,\n \"finalized\"\n );\n if (failed) {\n signatures = signatures.filter((signature) => signature.err);\n }\n const numberOfSignatures = signatures.length;\n if (numberOfSignatures === 0) {\n return 0;\n }\n return numberOfSignatures / (signatures[0].blockTime - signatures[numberOfSignatures - 1].blockTime);\n}\n\n// src/dlob/DLOBNode.ts\nvar OrderNode = class {\n constructor(order, userAccount) {\n this.haveFilled = false;\n this.haveTrigger = false;\n this.order = { ...order };\n this.userAccount = userAccount;\n this.sortValue = this.getSortValue(order);\n }\n getLabel() {\n let msg = `Order ${getOrderSignature(\n this.order.orderId,\n this.userAccount\n )}`;\n msg += ` ${isVariant(this.order.direction, \"long\") ? \"LONG\" : \"SHORT\"} `;\n msg += `${convertToNumber(\n this.order.baseAssetAmount,\n AMM_RESERVE_PRECISION\n ).toFixed(3)}`;\n if (this.order.price.gt(ZERO)) {\n msg += ` @ ${convertToNumber(this.order.price, PRICE_PRECISION).toFixed(\n 3\n )}`;\n }\n if (this.order.triggerPrice.gt(ZERO)) {\n msg += ` ${isVariant(this.order.triggerCondition, \"below\") ? \"BELOW\" : \"ABOVE\"}`;\n msg += ` ${convertToNumber(\n this.order.triggerPrice,\n PRICE_PRECISION\n ).toFixed(3)}`;\n }\n return msg;\n }\n getPrice(oraclePriceData, slot) {\n return getLimitPrice(this.order, oraclePriceData, slot);\n }\n isBaseFilled() {\n return this.order.baseAssetAmountFilled.eq(this.order.baseAssetAmount);\n }\n isVammNode() {\n return false;\n }\n};\nvar LimitOrderNode = class extends OrderNode {\n getSortValue(order) {\n return order.price;\n }\n};\nvar FloatingLimitOrderNode = class extends OrderNode {\n getSortValue(order) {\n return new BN(order.oraclePriceOffset);\n }\n};\nvar MarketOrderNode = class extends OrderNode {\n getSortValue(order) {\n return order.slot;\n }\n};\nvar TriggerOrderNode = class extends OrderNode {\n getSortValue(order) {\n return order.triggerPrice;\n }\n};\nfunction createNode(nodeType, order, userAccount) {\n switch (nodeType) {\n case \"floatingLimit\":\n return new FloatingLimitOrderNode(order, userAccount);\n case \"limit\":\n return new LimitOrderNode(order, userAccount);\n case \"market\":\n return new MarketOrderNode(order, userAccount);\n case \"trigger\":\n return new TriggerOrderNode(order, userAccount);\n default:\n throw Error(`Unknown DLOBNode type ${nodeType}`);\n }\n}\n\n// src/dlob/NodeList.ts\nfunction getOrderSignature(orderId, userAccount) {\n return `${userAccount.toString()}-${orderId.toString()}`;\n}\nvar NodeList = class {\n constructor(nodeType, sortDirection) {\n this.nodeType = nodeType;\n this.sortDirection = sortDirection;\n this.length = 0;\n this.nodeMap = /* @__PURE__ */ new Map();\n }\n clear() {\n this.head = void 0;\n this.length = 0;\n this.nodeMap.clear();\n }\n insert(order, marketType, userAccount) {\n if (isVariant(order.status, \"init\")) {\n return;\n }\n const newNode = createNode(this.nodeType, order, userAccount);\n const orderSignature = getOrderSignature(order.orderId, userAccount);\n if (this.nodeMap.has(orderSignature)) {\n return;\n }\n this.nodeMap.set(orderSignature, newNode);\n this.length += 1;\n if (this.head === void 0) {\n this.head = newNode;\n return;\n }\n if (this.prependNode(this.head, newNode)) {\n this.head.previous = newNode;\n newNode.next = this.head;\n this.head = newNode;\n return;\n }\n let currentNode = this.head;\n while (currentNode.next !== void 0 && !this.prependNode(currentNode.next, newNode)) {\n currentNode = currentNode.next;\n }\n newNode.next = currentNode.next;\n if (currentNode.next !== void 0) {\n newNode.next.previous = newNode;\n }\n currentNode.next = newNode;\n newNode.previous = currentNode;\n }\n prependNode(currentNode, newNode) {\n const currentOrder = currentNode.order;\n const newOrder = newNode.order;\n const currentOrderSortPrice = currentNode.sortValue;\n const newOrderSortPrice = newNode.sortValue;\n if (newOrderSortPrice.eq(currentOrderSortPrice)) {\n return newOrder.slot.lt(currentOrder.slot);\n }\n if (this.sortDirection === \"asc\") {\n return newOrderSortPrice.lt(currentOrderSortPrice);\n } else {\n return newOrderSortPrice.gt(currentOrderSortPrice);\n }\n }\n update(order, userAccount) {\n const orderId = getOrderSignature(order.orderId, userAccount);\n if (this.nodeMap.has(orderId)) {\n const node = this.nodeMap.get(orderId);\n Object.assign(node.order, order);\n node.haveFilled = false;\n }\n }\n remove(order, userAccount) {\n const orderId = getOrderSignature(order.orderId, userAccount);\n if (this.nodeMap.has(orderId)) {\n const node = this.nodeMap.get(orderId);\n if (node.next) {\n node.next.previous = node.previous;\n }\n if (node.previous) {\n node.previous.next = node.next;\n }\n if (this.head && node.order.orderId === this.head.order.orderId) {\n this.head = node.next;\n }\n node.previous = void 0;\n node.next = void 0;\n this.nodeMap.delete(orderId);\n this.length--;\n }\n }\n *getGenerator() {\n let node = this.head;\n while (node !== void 0) {\n yield node;\n node = node.next;\n }\n }\n has(order, userAccount) {\n return this.nodeMap.has(getOrderSignature(order.orderId, userAccount));\n }\n get(orderId, userAccount) {\n return this.nodeMap.get(getOrderSignature(orderId, userAccount));\n }\n print() {\n let currentNode = this.head;\n while (currentNode !== void 0) {\n console.log(currentNode.getLabel());\n currentNode = currentNode.next;\n }\n }\n printTop() {\n if (this.head) {\n console.log(this.sortDirection.toUpperCase(), this.head.getLabel());\n } else {\n console.log(\"---\");\n }\n }\n};\nfunction* getVammNodeGenerator(price) {\n if (!price) {\n return;\n }\n yield {\n getPrice: () => price,\n isVammNode: () => true,\n order: void 0,\n userAccount: void 0,\n isBaseFilled: () => false,\n haveFilled: false\n };\n}\n\n// src/dlob/DLOB.ts\nvar SUPPORTED_ORDER_TYPES = [\n \"market\",\n \"limit\",\n \"triggerMarket\",\n \"triggerLimit\",\n \"oracle\"\n];\nvar DLOB = class {\n constructor() {\n this.openOrders = /* @__PURE__ */ new Map();\n this.orderLists = /* @__PURE__ */ new Map();\n this.initialized = false;\n this.init();\n }\n init() {\n this.openOrders.set(\"perp\", /* @__PURE__ */ new Set());\n this.openOrders.set(\"spot\", /* @__PURE__ */ new Set());\n this.orderLists.set(\"perp\", /* @__PURE__ */ new Map());\n this.orderLists.set(\"spot\", /* @__PURE__ */ new Map());\n }\n clear() {\n for (const marketType of this.openOrders.keys()) {\n this.openOrders.get(marketType).clear();\n }\n this.openOrders.clear();\n for (const marketType of this.orderLists.keys()) {\n for (const marketIndex of this.orderLists.get(marketType).keys()) {\n const marketNodeLists = this.orderLists.get(marketType).get(marketIndex);\n for (const side of Object.keys(marketNodeLists)) {\n for (const orderType of Object.keys(marketNodeLists[side])) {\n marketNodeLists[side][orderType].clear();\n }\n }\n }\n }\n this.orderLists.clear();\n this.init();\n }\n async initFromUserMap(userMap) {\n if (this.initialized) {\n return false;\n }\n for (const user of userMap.values()) {\n const userAccount = user.getUserAccount();\n const userAccountPubkey = user.getUserAccountPublicKey();\n for (const order of userAccount.orders) {\n this.insertOrder(order, userAccountPubkey);\n }\n }\n this.initialized = true;\n return true;\n }\n initFromOrders(dlobOrders) {\n if (this.initialized) {\n return false;\n }\n for (const { user, order } of dlobOrders) {\n this.insertOrder(order, user);\n }\n this.initialized = true;\n return true;\n }\n handleOrderRecord(record) {\n this.insertOrder(record.order, record.user);\n }\n handleOrderActionRecord(record) {\n if (isOneOfVariant(record.action, [\"place\", \"expire\"])) {\n return;\n }\n if (isVariant(record.action, \"trigger\")) {\n if (record.taker !== null) {\n const takerOrder = this.getOrder(record.takerOrderId, record.taker);\n if (takerOrder) {\n this.trigger(takerOrder, record.taker);\n }\n }\n if (record.maker !== null) {\n const makerOrder = this.getOrder(record.makerOrderId, record.maker);\n if (makerOrder) {\n this.trigger(makerOrder, record.maker);\n }\n }\n } else if (isVariant(record.action, \"fill\")) {\n if (record.taker !== null) {\n const takerOrder = this.getOrder(record.takerOrderId, record.taker);\n if (takerOrder) {\n this.updateOrder(\n takerOrder,\n record.taker,\n record.takerOrderCumulativeBaseAssetAmountFilled\n );\n }\n }\n if (record.maker !== null) {\n const makerOrder = this.getOrder(record.makerOrderId, record.maker);\n if (makerOrder) {\n this.updateOrder(\n makerOrder,\n record.maker,\n record.makerOrderCumulativeBaseAssetAmountFilled\n );\n }\n }\n } else if (isVariant(record.action, \"cancel\")) {\n if (record.taker !== null) {\n const takerOrder = this.getOrder(record.takerOrderId, record.taker);\n if (takerOrder) {\n this.delete(takerOrder, record.taker);\n }\n }\n if (record.maker !== null) {\n const makerOrder = this.getOrder(record.makerOrderId, record.maker);\n if (makerOrder) {\n this.delete(makerOrder, record.maker);\n }\n }\n }\n }\n insertOrder(order, userAccount, onInsert) {\n var _a;\n if (isVariant(order.status, \"init\")) {\n return;\n }\n if (!isOneOfVariant(order.orderType, SUPPORTED_ORDER_TYPES)) {\n return;\n }\n const marketType = getVariant(order.marketType);\n if (!this.orderLists.get(marketType).has(order.marketIndex)) {\n this.addOrderList(marketType, order.marketIndex);\n }\n if (isVariant(order.status, \"open\")) {\n this.openOrders.get(marketType).add(getOrderSignature(order.orderId, userAccount));\n }\n (_a = this.getListForOrder(order)) == null ? void 0 : _a.insert(order, marketType, userAccount);\n if (onInsert) {\n onInsert();\n }\n }\n addOrderList(marketType, marketIndex) {\n this.orderLists.get(marketType).set(marketIndex, {\n limit: {\n ask: new NodeList(\"limit\", \"asc\"),\n bid: new NodeList(\"limit\", \"desc\")\n },\n floatingLimit: {\n ask: new NodeList(\"floatingLimit\", \"asc\"),\n bid: new NodeList(\"floatingLimit\", \"desc\")\n },\n market: {\n ask: new NodeList(\"market\", \"asc\"),\n bid: new NodeList(\"market\", \"asc\")\n },\n trigger: {\n above: new NodeList(\"trigger\", \"asc\"),\n below: new NodeList(\"trigger\", \"desc\")\n }\n });\n }\n updateOrder(order, userAccount, cumulativeBaseAssetAmountFilled, onUpdate) {\n var _a;\n if (order.baseAssetAmount.eq(cumulativeBaseAssetAmountFilled)) {\n this.delete(order, userAccount);\n return;\n }\n if (order.baseAssetAmountFilled.eq(cumulativeBaseAssetAmountFilled)) {\n return;\n }\n const newOrder = {\n ...order\n };\n newOrder.baseAssetAmountFilled = cumulativeBaseAssetAmountFilled;\n (_a = this.getListForOrder(order)) == null ? void 0 : _a.update(newOrder, userAccount);\n if (onUpdate) {\n onUpdate();\n }\n }\n trigger(order, userAccount, onTrigger) {\n var _a;\n if (isVariant(order.status, \"init\")) {\n return;\n }\n if (isTriggered(order)) {\n return;\n }\n const marketType = getVariant(order.marketType);\n const triggerList = this.orderLists.get(marketType).get(order.marketIndex).trigger[isVariant(order.triggerCondition, \"above\") ? \"above\" : \"below\"];\n triggerList.remove(order, userAccount);\n (_a = this.getListForOrder(order)) == null ? void 0 : _a.insert(order, marketType, userAccount);\n if (onTrigger) {\n onTrigger();\n }\n }\n delete(order, userAccount, onDelete) {\n var _a;\n if (isVariant(order.status, \"init\")) {\n return;\n }\n (_a = this.getListForOrder(order)) == null ? void 0 : _a.remove(order, userAccount);\n if (onDelete) {\n onDelete();\n }\n }\n getListForOrder(order) {\n const isInactiveTriggerOrder = mustBeTriggered(order) && !isTriggered(order);\n let type;\n if (isInactiveTriggerOrder) {\n type = \"trigger\";\n } else if (isOneOfVariant(order.orderType, [\"market\", \"triggerMarket\", \"oracle\"])) {\n type = \"market\";\n } else if (order.oraclePriceOffset !== 0) {\n type = \"floatingLimit\";\n } else {\n type = \"limit\";\n }\n let subType;\n if (isInactiveTriggerOrder) {\n subType = isVariant(order.triggerCondition, \"above\") ? \"above\" : \"below\";\n } else {\n subType = isVariant(order.direction, \"long\") ? \"bid\" : \"ask\";\n }\n const marketType = getVariant(order.marketType);\n if (!this.orderLists.has(marketType)) {\n return void 0;\n }\n return this.orderLists.get(marketType).get(order.marketIndex)[type][subType];\n }\n getOrder(orderId, userAccount) {\n for (const nodeList of this.getNodeLists()) {\n const node = nodeList.get(orderId, userAccount);\n if (node) {\n return node.order;\n }\n }\n return void 0;\n }\n findNodesToFill(marketIndex, fallbackBid, fallbackAsk, slot, ts, marketType, oraclePriceData, stateAccount, marketAccount) {\n if (fillPaused(stateAccount, marketAccount)) {\n return [];\n }\n const isAmmPaused = ammPaused(stateAccount, marketAccount);\n const marketOrderNodesToFill = this.findMarketNodesToFill(\n marketIndex,\n slot,\n marketType,\n oraclePriceData,\n isAmmPaused,\n fallbackAsk,\n fallbackBid\n );\n const limitOrderNodesToFill = this.findLimitOrderNodesToFill(\n marketIndex,\n slot,\n marketType,\n oraclePriceData,\n isAmmPaused,\n fallbackAsk,\n fallbackBid\n );\n const expiredNodesToFill = this.findExpiredNodesToFill(\n marketIndex,\n ts,\n marketType\n );\n return marketOrderNodesToFill.concat(\n limitOrderNodesToFill,\n expiredNodesToFill\n );\n }\n findLimitOrderNodesToFill(marketIndex, slot, marketType, oraclePriceData, isAmmPaused, fallbackAsk, fallbackBid) {\n const nodesToFill = new Array();\n const crossingNodes = this.findCrossingLimitOrders(\n marketIndex,\n slot,\n marketType,\n oraclePriceData\n );\n for (const crossingNode of crossingNodes) {\n nodesToFill.push(crossingNode);\n }\n if (fallbackBid && !isAmmPaused) {\n const askGenerator = this.getLimitAsks(\n marketIndex,\n slot,\n marketType,\n oraclePriceData\n );\n const asksCrossingFallback = this.findNodesCrossingFallbackLiquidity(\n marketType,\n slot,\n oraclePriceData,\n askGenerator,\n fallbackBid,\n (askPrice, fallbackPrice) => {\n return askPrice.lte(fallbackPrice);\n }\n );\n for (const askCrossingFallback of asksCrossingFallback) {\n nodesToFill.push(askCrossingFallback);\n }\n }\n if (fallbackAsk && !isAmmPaused) {\n const bidGenerator = this.getLimitBids(\n marketIndex,\n slot,\n marketType,\n oraclePriceData\n );\n const bidsCrossingFallback = this.findNodesCrossingFallbackLiquidity(\n marketType,\n slot,\n oraclePriceData,\n bidGenerator,\n fallbackAsk,\n (bidPrice, fallbackPrice) => {\n return bidPrice.gte(fallbackPrice);\n }\n );\n for (const bidCrossingFallback of bidsCrossingFallback) {\n nodesToFill.push(bidCrossingFallback);\n }\n }\n return nodesToFill;\n }\n findMarketNodesToFill(marketIndex, slot, marketType, oraclePriceData, isAmmPaused, fallbackAsk, fallbackBid) {\n const nodesToFill = new Array();\n let marketOrderGenerator = this.getMarketAsks(marketIndex, marketType);\n const marketAsksCrossingBids = this.findMarketNodesCrossingLimitNodes(\n marketIndex,\n slot,\n marketType,\n oraclePriceData,\n marketOrderGenerator,\n this.getLimitBids.bind(this),\n (takerPrice, makerPrice) => {\n return takerPrice === void 0 || takerPrice.lte(makerPrice);\n }\n );\n for (const marketAskCrossingBid of marketAsksCrossingBids) {\n nodesToFill.push(marketAskCrossingBid);\n }\n if (fallbackBid && !isAmmPaused) {\n marketOrderGenerator = this.getMarketAsks(marketIndex, marketType);\n const marketAsksCrossingFallback = this.findNodesCrossingFallbackLiquidity(\n marketType,\n slot,\n oraclePriceData,\n marketOrderGenerator,\n fallbackBid,\n (takerPrice, fallbackPrice) => {\n return takerPrice === void 0 || takerPrice.lte(fallbackPrice);\n }\n );\n for (const marketAskCrossingFallback of marketAsksCrossingFallback) {\n nodesToFill.push(marketAskCrossingFallback);\n }\n }\n marketOrderGenerator = this.getMarketBids(marketIndex, marketType);\n const marketBidsToFill = this.findMarketNodesCrossingLimitNodes(\n marketIndex,\n slot,\n marketType,\n oraclePriceData,\n marketOrderGenerator,\n this.getLimitAsks.bind(this),\n (takerPrice, fallbackPrice) => {\n return takerPrice === void 0 || takerPrice.gte(fallbackPrice);\n }\n );\n for (const marketBidToFill of marketBidsToFill) {\n nodesToFill.push(marketBidToFill);\n }\n if (fallbackAsk && !isAmmPaused) {\n marketOrderGenerator = this.getMarketBids(marketIndex, marketType);\n const marketBidsCrossingFallback = this.findNodesCrossingFallbackLiquidity(\n marketType,\n slot,\n oraclePriceData,\n marketOrderGenerator,\n fallbackAsk,\n (takerPrice, fallbackPrice) => {\n return takerPrice === void 0 || takerPrice.gte(fallbackPrice);\n }\n );\n for (const marketBidCrossingFallback of marketBidsCrossingFallback) {\n nodesToFill.push(marketBidCrossingFallback);\n }\n }\n return nodesToFill;\n }\n findMarketNodesCrossingLimitNodes(marketIndex, slot, marketType, oraclePriceData, takerNodeGenerator, makerNodeGeneratorFn, doesCross) {\n const nodesToFill = new Array();\n for (const takerNode of takerNodeGenerator) {\n const makerNodeGenerator = makerNodeGeneratorFn(\n marketIndex,\n slot,\n marketType,\n oraclePriceData\n );\n for (const makerNode of makerNodeGenerator) {\n const sameUser = takerNode.userAccount.equals(makerNode.userAccount);\n if (sameUser) {\n continue;\n }\n const makerPrice = makerNode.getPrice(oraclePriceData, slot);\n const takerPrice = takerNode.getPrice(oraclePriceData, slot);\n const ordersCross = doesCross(takerPrice, makerPrice);\n if (!ordersCross) {\n break;\n }\n nodesToFill.push({\n node: takerNode,\n makerNode\n });\n const makerOrder = makerNode.order;\n const takerOrder = takerNode.order;\n const makerBaseRemaining = makerOrder.baseAssetAmount.sub(\n makerOrder.baseAssetAmountFilled\n );\n const takerBaseRemaining = takerOrder.baseAssetAmount.sub(\n takerOrder.baseAssetAmountFilled\n );\n const baseFilled = BN.min(makerBaseRemaining, takerBaseRemaining);\n const newMakerOrder = { ...makerOrder };\n newMakerOrder.baseAssetAmountFilled = makerOrder.baseAssetAmountFilled.add(baseFilled);\n this.getListForOrder(newMakerOrder).update(\n newMakerOrder,\n makerNode.userAccount\n );\n const newTakerOrder = { ...takerOrder };\n newTakerOrder.baseAssetAmountFilled = takerOrder.baseAssetAmountFilled.add(baseFilled);\n this.getListForOrder(newTakerOrder).update(\n newTakerOrder,\n takerNode.userAccount\n );\n if (newTakerOrder.baseAssetAmountFilled.eq(takerOrder.baseAssetAmount)) {\n break;\n }\n }\n }\n return nodesToFill;\n }\n findNodesCrossingFallbackLiquidity(marketType, slot, oraclePriceData, nodeGenerator, fallbackPrice, doesCross) {\n var _a;\n const nodesToFill = new Array();\n let nextNode = nodeGenerator.next();\n while (!nextNode.done) {\n const node = nextNode.value;\n if (isVariant(marketType, \"spot\") && ((_a = node.order) == null ? void 0 : _a.postOnly)) {\n nextNode = nodeGenerator.next();\n continue;\n }\n const nodePrice = getLimitPrice(node.order, oraclePriceData, slot);\n const crosses = doesCross(nodePrice, fallbackPrice);\n const fallbackAvailable = isVariant(marketType, \"spot\") || isAuctionComplete(node.order, slot);\n if (crosses && fallbackAvailable) {\n nodesToFill.push({\n node,\n makerNode: void 0\n });\n }\n nextNode = nodeGenerator.next();\n }\n return nodesToFill;\n }\n findExpiredNodesToFill(marketIndex, ts, marketType) {\n const nodesToFill = new Array();\n const marketTypeStr = getVariant(marketType);\n const nodeLists = this.orderLists.get(marketTypeStr).get(marketIndex);\n if (!nodeLists) {\n return nodesToFill;\n }\n const bidGenerators = [\n nodeLists.limit.bid.getGenerator(),\n nodeLists.floatingLimit.bid.getGenerator(),\n nodeLists.market.bid.getGenerator()\n ];\n const askGenerators = [\n nodeLists.limit.ask.getGenerator(),\n nodeLists.floatingLimit.ask.getGenerator(),\n nodeLists.market.ask.getGenerator()\n ];\n for (const bidGenerator of bidGenerators) {\n for (const bid of bidGenerator) {\n if (isOrderExpired(bid.order, ts)) {\n nodesToFill.push({\n node: bid\n });\n }\n }\n }\n for (const askGenerator of askGenerators) {\n for (const ask of askGenerator) {\n if (isOrderExpired(ask.order, ts)) {\n nodesToFill.push({\n node: ask\n });\n }\n }\n }\n return nodesToFill;\n }\n findJitAuctionNodesToFill(marketIndex, slot, marketType) {\n const nodesToFill = new Array();\n for (const marketBid of this.getMarketBids(marketIndex, marketType)) {\n if (!isAuctionComplete(marketBid.order, slot)) {\n nodesToFill.push({\n node: marketBid\n });\n }\n }\n for (const marketAsk of this.getMarketAsks(marketIndex, marketType)) {\n if (!isAuctionComplete(marketAsk.order, slot)) {\n nodesToFill.push({\n node: marketAsk\n });\n }\n }\n return nodesToFill;\n }\n *getMarketBids(marketIndex, marketType) {\n const marketTypeStr = getVariant(marketType);\n const orderLists = this.orderLists.get(marketTypeStr).get(marketIndex);\n if (!orderLists) {\n return;\n }\n const generator = orderLists.market.bid.getGenerator();\n for (const marketBidNode of generator) {\n if (marketBidNode.isBaseFilled()) {\n continue;\n }\n yield marketBidNode;\n }\n }\n *getMarketAsks(marketIndex, marketType) {\n const marketTypeStr = getVariant(marketType);\n const orderLists = this.orderLists.get(marketTypeStr).get(marketIndex);\n if (!orderLists) {\n return;\n }\n const generator = orderLists.market.ask.getGenerator();\n for (const marketAskNode of generator) {\n if (marketAskNode.isBaseFilled()) {\n continue;\n }\n yield marketAskNode;\n }\n }\n *getBestNode(generatorList, oraclePriceData, slot, compareFcn) {\n const generators = generatorList.map((generator) => {\n return {\n next: generator.next(),\n generator\n };\n });\n let sideExhausted = false;\n while (!sideExhausted) {\n const bestGenerator = generators.reduce(\n (bestGenerator2, currentGenerator) => {\n if (currentGenerator.next.done) {\n return bestGenerator2;\n }\n if (bestGenerator2.next.done) {\n return currentGenerator;\n }\n const bestValue = bestGenerator2.next.value;\n const currentValue = currentGenerator.next.value;\n if (bestValue.order && isMarketOrder(bestValue.order)) {\n return bestGenerator2;\n }\n if (currentValue.order && isMarketOrder(currentValue.order)) {\n return currentGenerator;\n }\n const bestPrice = bestValue.getPrice(oraclePriceData, slot);\n const currentPrice = currentValue.getPrice(oraclePriceData, slot);\n return compareFcn(bestPrice, currentPrice) ? bestGenerator2 : currentGenerator;\n }\n );\n if (!bestGenerator.next.done) {\n if (bestGenerator.next.value.isBaseFilled()) {\n bestGenerator.next = bestGenerator.generator.next();\n continue;\n }\n yield bestGenerator.next.value;\n bestGenerator.next = bestGenerator.generator.next();\n } else {\n sideExhausted = true;\n }\n }\n }\n *getLimitAsks(marketIndex, slot, marketType, oraclePriceData) {\n if (isVariant(marketType, \"spot\") && !oraclePriceData) {\n throw new Error(\"Must provide OraclePriceData to get spot asks\");\n }\n const marketTypeStr = getVariant(marketType);\n const nodeLists = this.orderLists.get(marketTypeStr).get(marketIndex);\n if (!nodeLists) {\n return;\n }\n const generatorList = [\n nodeLists.limit.ask.getGenerator(),\n nodeLists.floatingLimit.ask.getGenerator()\n ];\n yield* this.getBestNode(\n generatorList,\n oraclePriceData,\n slot,\n (bestPrice, currentPrice) => {\n return bestPrice.lt(currentPrice);\n }\n );\n }\n *getLimitBids(marketIndex, slot, marketType, oraclePriceData) {\n if (isVariant(marketType, \"spot\") && !oraclePriceData) {\n throw new Error(\"Must provide OraclePriceData to get spot bids\");\n }\n const marketTypeStr = getVariant(marketType);\n const nodeLists = this.orderLists.get(marketTypeStr).get(marketIndex);\n if (!nodeLists) {\n return;\n }\n const generatorList = [\n nodeLists.limit.bid.getGenerator(),\n nodeLists.floatingLimit.bid.getGenerator()\n ];\n yield* this.getBestNode(\n generatorList,\n oraclePriceData,\n slot,\n (bestPrice, currentPrice) => {\n return bestPrice.gt(currentPrice);\n }\n );\n }\n *getAsks(marketIndex, fallbackAsk, slot, marketType, oraclePriceData) {\n if (isVariant(marketType, \"spot\") && !oraclePriceData) {\n throw new Error(\"Must provide OraclePriceData to get spot asks\");\n }\n const generatorList = [\n this.getMarketAsks(marketIndex, marketType),\n this.getLimitAsks(marketIndex, slot, marketType, oraclePriceData)\n ];\n const marketTypeStr = getVariant(marketType);\n if (marketTypeStr === \"perp\" && fallbackAsk) {\n generatorList.push(getVammNodeGenerator(fallbackAsk));\n }\n yield* this.getBestNode(\n generatorList,\n oraclePriceData,\n slot,\n (bestPrice, currentPrice) => {\n return bestPrice.lt(currentPrice);\n }\n );\n }\n *getBids(marketIndex, fallbackBid, slot, marketType, oraclePriceData) {\n if (isVariant(marketType, \"spot\") && !oraclePriceData) {\n throw new Error(\"Must provide OraclePriceData to get spot bids\");\n }\n const generatorList = [\n this.getMarketBids(marketIndex, marketType),\n this.getLimitBids(marketIndex, slot, marketType, oraclePriceData)\n ];\n const marketTypeStr = getVariant(marketType);\n if (marketTypeStr === \"perp\" && fallbackBid) {\n generatorList.push(getVammNodeGenerator(fallbackBid));\n }\n yield* this.getBestNode(\n generatorList,\n oraclePriceData,\n slot,\n (bestPrice, currentPrice) => {\n return bestPrice.gt(currentPrice);\n }\n );\n }\n findCrossingLimitOrders(marketIndex, slot, marketType, oraclePriceData) {\n const nodesToFill = new Array();\n for (const askNode of this.getLimitAsks(\n marketIndex,\n slot,\n marketType,\n oraclePriceData\n )) {\n for (const bidNode of this.getLimitBids(\n marketIndex,\n slot,\n marketType,\n oraclePriceData\n )) {\n const bidPrice = bidNode.getPrice(oraclePriceData, slot);\n const askPrice = askNode.getPrice(oraclePriceData, slot);\n if (bidPrice.lt(askPrice)) {\n return nodesToFill;\n }\n const bidOrder = bidNode.order;\n const askOrder = askNode.order;\n const sameUser = bidNode.userAccount.equals(askNode.userAccount);\n if (sameUser || bidOrder.postOnly && askOrder.postOnly) {\n continue;\n }\n const { takerNode, makerNode } = this.determineMakerAndTaker(\n askNode,\n bidNode\n );\n const bidBaseRemaining = bidOrder.baseAssetAmount.sub(\n bidOrder.baseAssetAmountFilled\n );\n const askBaseRemaining = askOrder.baseAssetAmount.sub(\n askOrder.baseAssetAmountFilled\n );\n const baseFilled = BN.min(bidBaseRemaining, askBaseRemaining);\n const newBidOrder = { ...bidOrder };\n newBidOrder.baseAssetAmountFilled = bidOrder.baseAssetAmountFilled.add(baseFilled);\n this.getListForOrder(newBidOrder).update(\n newBidOrder,\n bidNode.userAccount\n );\n const newAskOrder = { ...askOrder };\n newAskOrder.baseAssetAmountFilled = askOrder.baseAssetAmountFilled.add(baseFilled);\n this.getListForOrder(newAskOrder).update(\n newAskOrder,\n askNode.userAccount\n );\n nodesToFill.push({\n node: takerNode,\n makerNode\n });\n if (newAskOrder.baseAssetAmount.eq(newAskOrder.baseAssetAmountFilled)) {\n break;\n }\n }\n }\n return nodesToFill;\n }\n determineMakerAndTaker(askNode, bidNode) {\n if (bidNode.order.postOnly) {\n return {\n takerNode: askNode,\n makerNode: bidNode\n };\n } else if (askNode.order.postOnly) {\n return {\n takerNode: bidNode,\n makerNode: askNode\n };\n } else if (askNode.order.slot.lt(bidNode.order.slot)) {\n return {\n takerNode: bidNode,\n makerNode: askNode\n };\n } else {\n return {\n takerNode: askNode,\n makerNode: bidNode\n };\n }\n }\n getBestAsk(marketIndex, fallbackAsk, slot, marketType, oraclePriceData) {\n return this.getAsks(\n marketIndex,\n fallbackAsk,\n slot,\n marketType,\n oraclePriceData\n ).next().value.getPrice(oraclePriceData, slot);\n }\n getBestBid(marketIndex, fallbackBid, slot, marketType, oraclePriceData) {\n return this.getBids(\n marketIndex,\n fallbackBid,\n slot,\n marketType,\n oraclePriceData\n ).next().value.getPrice(oraclePriceData, slot);\n }\n findNodesToTrigger(marketIndex, slot, oraclePrice, marketType, stateAccount) {\n if (exchangePaused(stateAccount)) {\n return [];\n }\n const nodesToTrigger = [];\n const marketTypeStr = getVariant(marketType);\n const marketNodeLists = this.orderLists.get(marketTypeStr).get(marketIndex);\n const triggerAboveList = marketNodeLists ? marketNodeLists.trigger.above : void 0;\n if (triggerAboveList) {\n for (const node of triggerAboveList.getGenerator()) {\n if (oraclePrice.gt(node.order.triggerPrice)) {\n if (isAuctionComplete(node.order, slot)) {\n nodesToTrigger.push({\n node\n });\n }\n } else {\n break;\n }\n }\n }\n const triggerBelowList = marketNodeLists ? marketNodeLists.trigger.below : void 0;\n if (triggerBelowList) {\n for (const node of triggerBelowList.getGenerator()) {\n if (oraclePrice.lt(node.order.triggerPrice)) {\n if (isAuctionComplete(node.order, slot)) {\n nodesToTrigger.push({\n node\n });\n }\n } else {\n break;\n }\n }\n }\n return nodesToTrigger;\n }\n printTopOfOrderLists(sdkConfig, driftClient, slotSubscriber, marketIndex, marketType) {\n if (isVariant(marketType, \"perp\")) {\n const market = driftClient.getPerpMarketAccount(marketIndex);\n const slot = slotSubscriber.getSlot();\n const oraclePriceData = driftClient.getOracleDataForPerpMarket(marketIndex);\n const fallbackAsk = calculateAskPrice(market, oraclePriceData);\n const fallbackBid = calculateBidPrice(market, oraclePriceData);\n const bestAsk = this.getBestAsk(\n marketIndex,\n fallbackAsk,\n slot,\n marketType,\n oraclePriceData\n );\n const bestBid = this.getBestBid(\n marketIndex,\n fallbackBid,\n slot,\n marketType,\n oraclePriceData\n );\n const mid = bestAsk.add(bestBid).div(new BN(2));\n const bidSpread = (convertToNumber(bestBid, PRICE_PRECISION) / convertToNumber(oraclePriceData.price, PRICE_PRECISION) - 1) * 100;\n const askSpread = (convertToNumber(bestAsk, PRICE_PRECISION) / convertToNumber(oraclePriceData.price, PRICE_PRECISION) - 1) * 100;\n console.log(`Market ${sdkConfig.MARKETS[marketIndex].symbol} Orders`);\n console.log(\n ` Ask`,\n convertToNumber(bestAsk, PRICE_PRECISION).toFixed(3),\n `(${askSpread.toFixed(4)}%)`\n );\n console.log(` Mid`, convertToNumber(mid, PRICE_PRECISION).toFixed(3));\n console.log(\n ` Bid`,\n convertToNumber(bestBid, PRICE_PRECISION).toFixed(3),\n `(${bidSpread.toFixed(4)}%)`\n );\n } else if (isVariant(marketType, \"spot\")) {\n const slot = slotSubscriber.getSlot();\n const oraclePriceData = driftClient.getOracleDataForPerpMarket(marketIndex);\n const bestAsk = this.getBestAsk(\n marketIndex,\n void 0,\n slot,\n marketType,\n oraclePriceData\n );\n const bestBid = this.getBestBid(\n marketIndex,\n void 0,\n slot,\n marketType,\n oraclePriceData\n );\n const mid = bestAsk.add(bestBid).div(new BN(2));\n const bidSpread = (convertToNumber(bestBid, PRICE_PRECISION) / convertToNumber(oraclePriceData.price, PRICE_PRECISION) - 1) * 100;\n const askSpread = (convertToNumber(bestAsk, PRICE_PRECISION) / convertToNumber(oraclePriceData.price, PRICE_PRECISION) - 1) * 100;\n console.log(`Market ${sdkConfig.MARKETS[marketIndex].symbol} Orders`);\n console.log(\n ` Ask`,\n convertToNumber(bestAsk, PRICE_PRECISION).toFixed(3),\n `(${askSpread.toFixed(4)}%)`\n );\n console.log(` Mid`, convertToNumber(mid, PRICE_PRECISION).toFixed(3));\n console.log(\n ` Bid`,\n convertToNumber(bestBid, PRICE_PRECISION).toFixed(3),\n `(${bidSpread.toFixed(4)}%)`\n );\n }\n }\n getDLOBOrders() {\n const dlobOrders = [];\n for (const nodeList of this.getNodeLists()) {\n for (const node of nodeList.getGenerator()) {\n dlobOrders.push({\n user: node.userAccount,\n order: node.order\n });\n }\n }\n return dlobOrders;\n }\n *getNodeLists() {\n for (const [_, nodeLists] of this.orderLists.get(\"perp\")) {\n yield nodeLists.limit.bid;\n yield nodeLists.limit.ask;\n yield nodeLists.market.bid;\n yield nodeLists.market.ask;\n yield nodeLists.floatingLimit.bid;\n yield nodeLists.floatingLimit.ask;\n yield nodeLists.trigger.above;\n yield nodeLists.trigger.below;\n }\n for (const [_, nodeLists] of this.orderLists.get(\"spot\")) {\n yield nodeLists.limit.bid;\n yield nodeLists.limit.ask;\n yield nodeLists.market.bid;\n yield nodeLists.market.ask;\n yield nodeLists.floatingLimit.bid;\n yield nodeLists.floatingLimit.ask;\n yield nodeLists.trigger.above;\n yield nodeLists.trigger.below;\n }\n }\n};\n\n// src/dlob/DLOBOrders.ts\nimport { IdlCoder } from \"@project-serum/anchor/dist/cjs/coder/borsh/idl\";\n\n// src/dlob/dlobIdl.json\nvar dlobIdl_default = {\n version: \"2.0.0\",\n name: \"dlob\",\n instructions: [],\n accounts: [],\n types: [\n {\n name: \"DLOBOrders\",\n type: {\n vec: {\n defined: \"DLOBOrder\"\n }\n }\n },\n {\n name: \"DLOBOrder\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"user\",\n type: \"publicKey\"\n },\n {\n name: \"order\",\n type: {\n defined: \"Order\"\n }\n }\n ]\n }\n },\n {\n name: \"Order\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"slot\",\n type: \"u64\"\n },\n {\n name: \"price\",\n type: \"u64\"\n },\n {\n name: \"baseAssetAmount\",\n type: \"u64\"\n },\n {\n name: \"baseAssetAmountFilled\",\n type: \"u64\"\n },\n {\n name: \"quoteAssetAmountFilled\",\n type: \"u64\"\n },\n {\n name: \"triggerPrice\",\n type: \"u64\"\n },\n {\n name: \"auctionStartPrice\",\n type: \"u64\"\n },\n {\n name: \"auctionEndPrice\",\n type: \"u64\"\n },\n {\n name: \"maxTs\",\n type: \"i64\"\n },\n {\n name: \"oraclePriceOffset\",\n type: \"i32\"\n },\n {\n name: \"orderId\",\n type: \"u32\"\n },\n {\n name: \"marketIndex\",\n type: \"u16\"\n },\n {\n name: \"status\",\n type: {\n defined: \"OrderStatus\"\n }\n },\n {\n name: \"orderType\",\n type: {\n defined: \"OrderType\"\n }\n },\n {\n name: \"marketType\",\n type: {\n defined: \"MarketType\"\n }\n },\n {\n name: \"userOrderId\",\n type: \"u8\"\n },\n {\n name: \"existingPositionDirection\",\n type: {\n defined: \"PositionDirection\"\n }\n },\n {\n name: \"direction\",\n type: {\n defined: \"PositionDirection\"\n }\n },\n {\n name: \"reduceOnly\",\n type: \"bool\"\n },\n {\n name: \"postOnly\",\n type: \"bool\"\n },\n {\n name: \"immediateOrCancel\",\n type: \"bool\"\n },\n {\n name: \"triggerCondition\",\n type: {\n defined: \"OrderTriggerCondition\"\n }\n },\n {\n name: \"auctionDuration\",\n type: \"u8\"\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 3\n ]\n }\n }\n ]\n }\n },\n {\n name: \"OrderStatus\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Init\"\n },\n {\n name: \"Open\"\n },\n {\n name: \"Filled\"\n },\n {\n name: \"Canceled\"\n }\n ]\n }\n },\n {\n name: \"OrderType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Market\"\n },\n {\n name: \"Limit\"\n },\n {\n name: \"TriggerMarket\"\n },\n {\n name: \"TriggerLimit\"\n },\n {\n name: \"Oracle\"\n }\n ]\n }\n },\n {\n name: \"OrderTriggerCondition\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Above\"\n },\n {\n name: \"Below\"\n },\n {\n name: \"TriggeredAbove\"\n },\n {\n name: \"TriggeredBelow\"\n }\n ]\n }\n },\n {\n name: \"MarketType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Spot\"\n },\n {\n name: \"Perp\"\n }\n ]\n }\n },\n {\n name: \"PositionDirection\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Long\"\n },\n {\n name: \"Short\"\n }\n ]\n }\n }\n ],\n events: [],\n errors: []\n};\n\n// src/dlob/DLOBOrders.ts\nvar DLOBOrdersCoder = class {\n constructor(idl) {\n this.idl = idl;\n }\n static create() {\n return new DLOBOrdersCoder(dlobIdl_default);\n }\n encode(dlobOrders) {\n const layout = IdlCoder.fieldLayout(\n {\n type: {\n vec: {\n defined: \"DLOBOrder\"\n }\n }\n },\n this.idl.types\n );\n const size = 150 * dlobOrders.length;\n const buffer = Buffer.alloc(size);\n const len = layout.encode(dlobOrders, buffer);\n return buffer.slice(0, len);\n }\n decode(buffer) {\n const layout = IdlCoder.fieldLayout(\n {\n type: {\n vec: {\n defined: \"DLOBOrder\"\n }\n }\n },\n this.idl.types\n );\n return layout.decode(buffer);\n }\n};\n\n// src/userMap/userMap.ts\nimport { PublicKey as PublicKey12 } from \"@solana/web3.js\";\nvar UserMap2 = class {\n constructor(driftClient, accountSubscription) {\n this.userMap = /* @__PURE__ */ new Map();\n this.driftClient = driftClient;\n this.accountSubscription = accountSubscription;\n }\n async fetchAllUsers() {\n const userArray = [];\n const programUserAccounts = await this.driftClient.program.account.user.all();\n for (const programUserAccount of programUserAccounts) {\n if (this.userMap.has(programUserAccount.publicKey.toString())) {\n continue;\n }\n const user = new User({\n driftClient: this.driftClient,\n userAccountPublicKey: programUserAccount.publicKey,\n accountSubscription: this.accountSubscription\n });\n userArray.push(user);\n }\n if (this.accountSubscription.type === \"polling\") {\n await bulkPollingUserSubscribe(\n userArray,\n this.accountSubscription.accountLoader\n );\n }\n for (const user of userArray) {\n this.userMap.set(user.getUserAccountPublicKey().toString(), user);\n }\n }\n async addPubkey(userAccountPublicKey) {\n const user = new User({\n driftClient: this.driftClient,\n userAccountPublicKey,\n accountSubscription: this.accountSubscription\n });\n await user.subscribe();\n this.userMap.set(userAccountPublicKey.toString(), user);\n }\n has(key) {\n return this.userMap.has(key);\n }\n get(key) {\n return this.userMap.get(key);\n }\n async mustGet(key) {\n if (!this.has(key)) {\n await this.addPubkey(new PublicKey12(key));\n }\n const user = this.userMap.get(key);\n await user.fetchAccounts();\n return user;\n }\n getUserAuthority(key) {\n const chUser = this.userMap.get(key);\n if (!chUser) {\n return void 0;\n }\n return chUser.getUserAccount().authority;\n }\n async updateWithOrderRecord(record) {\n if (!this.has(record.user.toString())) {\n await this.addPubkey(record.user);\n }\n }\n async updateWithEventRecord(record) {\n if (record.eventType === \"DepositRecord\") {\n const depositRecord = record;\n await this.mustGet(depositRecord.user.toString());\n } else if (record.eventType === \"FundingPaymentRecord\") {\n const fundingPaymentRecord = record;\n await this.mustGet(fundingPaymentRecord.user.toString());\n } else if (record.eventType === \"LiquidationRecord\") {\n const liqRecord = record;\n await this.mustGet(liqRecord.user.toString());\n await this.mustGet(liqRecord.liquidator.toString());\n } else if (record.eventType === \"OrderRecord\") {\n const orderRecord = record;\n await this.updateWithOrderRecord(orderRecord);\n } else if (record.eventType === \"OrderActionRecord\") {\n const actionRecord = record;\n if (actionRecord.taker) {\n await this.mustGet(actionRecord.taker.toString());\n }\n if (actionRecord.maker) {\n await this.mustGet(actionRecord.maker.toString());\n }\n } else if (record.eventType === \"SettlePnlRecord\") {\n const settlePnlRecord = record;\n await this.mustGet(settlePnlRecord.user.toString());\n } else if (record.eventType === \"NewUserRecord\") {\n const newUserRecord = record;\n await this.mustGet(newUserRecord.user.toString());\n } else if (record.eventType === \"LPRecord\") {\n const lpRecord = record;\n await this.mustGet(lpRecord.user.toString());\n }\n }\n values() {\n return this.userMap.values();\n }\n size() {\n return this.userMap.size;\n }\n};\n\n// src/userMap/userStatsMap.ts\nimport { PublicKey as PublicKey13 } from \"@solana/web3.js\";\nvar UserStatsMap = class {\n constructor(driftClient, accountSubscription) {\n this.userStatsMap = /* @__PURE__ */ new Map();\n this.driftClient = driftClient;\n this.accountSubscription = accountSubscription;\n }\n async fetchAllUserStats() {\n const userStatArray = [];\n const programUserAccounts = await this.driftClient.program.account.userStats.all();\n for (const programUserAccount of programUserAccounts) {\n const userStat = programUserAccount.account;\n if (this.userStatsMap.has(userStat.authority.toString())) {\n continue;\n }\n const chUserStat = new UserStats({\n driftClient: this.driftClient,\n userStatsAccountPublicKey: getUserStatsAccountPublicKey(\n this.driftClient.program.programId,\n userStat.authority\n ),\n accountSubscription: this.accountSubscription\n });\n userStatArray.push(chUserStat);\n }\n if (this.accountSubscription.type === \"polling\") {\n await bulkPollingUserStatsSubscribe(\n userStatArray,\n this.accountSubscription.accountLoader\n );\n }\n for (const userStat of userStatArray) {\n this.userStatsMap.set(\n userStat.getAccount().authority.toString(),\n userStat\n );\n }\n }\n async addUserStat(authority) {\n const userStat = new UserStats({\n driftClient: this.driftClient,\n userStatsAccountPublicKey: getUserStatsAccountPublicKey(\n this.driftClient.program.programId,\n authority\n ),\n accountSubscription: this.accountSubscription\n });\n await userStat.subscribe();\n this.userStatsMap.set(authority.toString(), userStat);\n }\n async updateWithOrderRecord(record, userMap) {\n const user = await userMap.mustGet(record.user.toString());\n if (!this.has(user.getUserAccount().authority.toString())) {\n this.addUserStat(user.getUserAccount().authority);\n }\n }\n async updateWithEventRecord(record, userMap) {\n if (record.eventType === \"DepositRecord\") {\n const depositRecord = record;\n await this.mustGet(depositRecord.userAuthority.toString());\n } else if (record.eventType === \"FundingPaymentRecord\") {\n const fundingPaymentRecord = record;\n await this.mustGet(fundingPaymentRecord.userAuthority.toString());\n } else if (record.eventType === \"LiquidationRecord\") {\n if (!userMap) {\n return;\n }\n const liqRecord = record;\n const user = await userMap.mustGet(liqRecord.user.toString());\n await this.mustGet(user.getUserAccount().authority.toString());\n const liquidatorUser = await userMap.mustGet(\n liqRecord.liquidator.toString()\n );\n await this.mustGet(liquidatorUser.getUserAccount().authority.toString());\n } else if (record.eventType === \"OrderRecord\") {\n if (!userMap) {\n return;\n }\n const orderRecord = record;\n await userMap.updateWithOrderRecord(orderRecord);\n } else if (record.eventType === \"OrderActionRecord\") {\n if (!userMap) {\n return;\n }\n const actionRecord = record;\n if (actionRecord.taker) {\n const taker = await userMap.mustGet(actionRecord.taker.toString());\n await this.mustGet(taker.getUserAccount().authority.toString());\n }\n if (actionRecord.maker) {\n const maker = await userMap.mustGet(actionRecord.maker.toString());\n await this.mustGet(maker.getUserAccount().authority.toString());\n }\n } else if (record.eventType === \"SettlePnlRecord\") {\n if (!userMap) {\n return;\n }\n const settlePnlRecord = record;\n const user = await userMap.mustGet(settlePnlRecord.user.toString());\n await this.mustGet(user.getUserAccount().authority.toString());\n } else if (record.eventType === \"NewUserRecord\") {\n const newUserRecord = record;\n await this.mustGet(newUserRecord.userAuthority.toString());\n } else if (record.eventType === \"LPRecord\") {\n if (!userMap) {\n return;\n }\n const lpRecord = record;\n const user = await userMap.mustGet(lpRecord.user.toString());\n await this.mustGet(user.getUserAccount().authority.toString());\n } else if (record.eventType === \"InsuranceFundStakeRecord\") {\n const ifStakeRecord = record;\n await this.mustGet(ifStakeRecord.userAuthority.toString());\n }\n }\n has(authorityPublicKey) {\n return this.userStatsMap.has(authorityPublicKey);\n }\n get(authorityPublicKey) {\n return this.userStatsMap.get(authorityPublicKey);\n }\n async mustGet(authorityPublicKey) {\n if (!this.has(authorityPublicKey)) {\n await this.addUserStat(new PublicKey13(authorityPublicKey));\n }\n return this.get(authorityPublicKey);\n }\n values() {\n return this.userStatsMap.values();\n }\n size() {\n return this.userStatsMap.size;\n }\n};\nexport {\n AMM_RESERVE_PRECISION,\n AMM_RESERVE_PRECISION_EXP,\n AMM_TIMES_PEG_TO_QUOTE_PRECISION_RATIO,\n AMM_TO_QUOTE_PRECISION_RATIO,\n AdminClient,\n AssetTier,\n BASE_PRECISION,\n BASE_PRECISION_EXP,\n BID_ASK_SPREAD_PRECISION,\n BN,\n BN_MAX,\n BigNum,\n BulkAccountLoader,\n CONCENTRATION_PRECISION,\n ContractTier,\n ContractType,\n DEFAULT_REVENUE_SINCE_LAST_FUNDING_SPREAD_RETREAT,\n DLOB,\n DLOBOrdersCoder,\n DefaultEventSubscriptionOptions,\n DefaultOrderParams,\n DepositDirection,\n DepositExplanation,\n DevnetPerpMarkets,\n DevnetSpotMarkets,\n DriftClient,\n EIGHT,\n EventSubscriber,\n ExchangeStatus,\n FIVE,\n FOUR,\n FUNDING_RATE_BUFFER_PRECISION,\n FUNDING_RATE_BUFFER_PRECISION_EXP,\n FUNDING_RATE_PRECISION,\n FUNDING_RATE_PRECISION_EXP,\n FloatingLimitOrderNode,\n LAMPORTS_EXP,\n LAMPORTS_PRECISION,\n LIQUIDATION_FEE_PRECISION,\n LIQUIDATION_PCT_PRECISION,\n LPAction,\n LimitOrderNode,\n LiquidationType,\n LogParser,\n MARGIN_PRECISION,\n MAX_LEVERAGE,\n MainnetPerpMarkets,\n MainnetSpotMarkets,\n MarketOrderNode,\n MarketStatus,\n MarketType,\n NINE,\n NodeList,\n NotSubscribedError,\n ONE,\n ONE_YEAR,\n OPEN_ORDER_MARGIN_REQUIREMENT,\n OracleSource,\n OrderAction,\n OrderActionExplanation,\n OrderNode,\n OrderStatus,\n OrderTriggerCondition,\n OrderType,\n PEG_PRECISION,\n PEG_PRECISION_EXP,\n PERCENTAGE_PRECISION,\n PERCENTAGE_PRECISION_EXP,\n PRICE_DIV_PEG,\n PRICE_PRECISION,\n PRICE_PRECISION_EXP,\n PRICE_TO_QUOTE_PRECISION,\n PerpMarkets,\n PollingDriftClientAccountSubscriber,\n PollingOracleAccountSubscriber,\n PollingTokenAccountSubscriber,\n PollingUserAccountSubscriber,\n PollingUserStatsAccountSubscriber,\n PositionDirection,\n PublicKey14 as PublicKey,\n PythClient,\n QUOTE_PRECISION,\n QUOTE_PRECISION_EXP,\n QUOTE_SPOT_MARKET_INDEX,\n RetryTxSender,\n SEVEN,\n SIX,\n SPOT_MARKET_BALANCE_PRECISION,\n SPOT_MARKET_BALANCE_PRECISION_EXP,\n SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION,\n SPOT_MARKET_CUMULATIVE_INTEREST_PRECISION_EXP,\n SPOT_MARKET_IMF_PRECISION,\n SPOT_MARKET_IMF_PRECISION_EXP,\n SPOT_MARKET_RATE_PRECISION,\n SPOT_MARKET_RATE_PRECISION_EXP,\n SPOT_MARKET_UTILIZATION_PRECISION,\n SPOT_MARKET_UTILIZATION_PRECISION_EXP,\n SPOT_MARKET_WEIGHT_PRECISION,\n SerumFulfillmentConfigMap,\n SerumSubscriber,\n SettlePnlExplanation,\n SlotSubscriber,\n SpotBalanceType,\n SpotFulfillmentConfigStatus,\n SpotFulfillmentStatus,\n SpotFulfillmentType,\n SpotMarkets,\n StakeAction,\n SwapDirection,\n SwitchboardClient,\n TEN,\n TEN_MILLION,\n TEN_THOUSAND,\n THREE,\n TWO,\n TokenFaucet,\n TradeSide,\n TriggerOrderNode,\n User,\n UserMap2 as UserMap,\n UserStats,\n UserStatsMap,\n UserStatus,\n WRAPPED_SOL_MINT,\n Wallet,\n WebSocketDriftClientAccountSubscriber,\n ZERO,\n ammPaused,\n bulkPollingUserStatsSubscribe,\n bulkPollingUserSubscribe,\n calculateAdjustKCost,\n calculateAllEstimatedFundingRate,\n calculateAmmReservesAfterSwap,\n calculateAskPrice,\n calculateAssetWeight,\n calculateBaseAssetAmountForAmmToFulfill,\n calculateBaseAssetAmountToFillUpToLimitPrice,\n calculateBaseAssetValue,\n calculateBaseAssetValueWithOracle,\n calculateBidAskPrice,\n calculateBidPrice,\n calculateBorrowRate,\n calculateBreakEvenPrice,\n calculateBudgetedK,\n calculateBudgetedKBN,\n calculateBudgetedPeg,\n calculateClaimablePnl,\n calculateCostBasis,\n calculateDepositRate,\n calculateEffectiveLeverage,\n calculateEntryPrice,\n calculateEstimatedFundingRate,\n calculateFundingPool,\n calculateInterestAccumulated,\n calculateInterestRate,\n calculateInventoryScale,\n calculateLiabilityWeight,\n calculateLiveOracleStd,\n calculateLiveOracleTwap,\n calculateLongShortFundingRate,\n calculateLongShortFundingRateAndLiveTwaps,\n calculateMarketAvailablePNL,\n calculateMarketMarginRatio,\n calculateMarketOpenBidAsk,\n calculateMaxBaseAssetAmountFillable,\n calculateMaxBaseAssetAmountToTrade,\n calculateMaxSpread,\n calculateNetUserPnl,\n calculateNetUserPnlImbalance,\n calculateNewAmm,\n calculateNewMarketAfterTrade,\n calculateOptimalPegAndBudget,\n calculateOraclePriceForPerpMargin,\n calculateOracleReserveSpread,\n calculateOracleSpread,\n calculatePegFromTargetPrice,\n calculatePositionFundingPNL,\n calculatePositionPNL,\n calculatePrice,\n calculateQuoteAssetAmountSwapped,\n calculateRepegCost,\n calculateReservePrice,\n calculateSizeDiscountAssetWeight,\n calculateSizePremiumLiabilityWeight,\n calculateSpread,\n calculateSpreadBN,\n calculateSpreadReserves,\n calculateSwapOutput,\n calculateTargetPriceTrade,\n calculateTerminalPrice,\n calculateTradeAcquiredAmounts,\n calculateTradeSlippage,\n calculateUnrealizedAssetWeight,\n calculateUpdatedAMM,\n calculateUpdatedAMMSpreadReserves,\n calculateUtilization,\n calculateVolSpreadBN,\n calculateWithdrawLimit,\n calculateWorstCaseBaseAssetAmount,\n castNumberToSpotPrecision,\n clampBN,\n configs,\n convertPythPrice,\n convertToNumber,\n createNode,\n estimateTps,\n exchangePaused,\n fetchLogs,\n fetchUserAccounts,\n fetchUserStatsAccount,\n fillPaused,\n findComputeUnitConsumption,\n findDirectionToClose,\n getAuctionPrice,\n getAuctionPriceForFixedAuction,\n getAuctionPriceForOracleOffsetAuction,\n getBalance,\n getConfig,\n getDriftSignerPublicKey,\n getDriftStateAccountPublicKey,\n getDriftStateAccountPublicKeyAndNonce,\n getInsuranceFundStakeAccountPublicKey,\n getInsuranceFundVaultPublicKey,\n getLimitOrderParams,\n getLimitPrice,\n getMarketOrderParams,\n getMarketsAndOraclesForSubscription,\n getOracleClient,\n getOrderSignature,\n getPerpMarketPublicKey,\n getSerumFulfillmentConfigPublicKey,\n getSerumOpenOrdersPublicKey,\n getSerumSignerPublicKey,\n getSignedTokenAmount,\n getSpotMarketPublicKey,\n getSpotMarketVaultPublicKey,\n getSwapDirection,\n getTokenAmount,\n getTokenValue,\n getTriggerLimitOrderParams,\n getTriggerMarketOrderParams,\n getUserAccountPublicKey,\n getUserAccountPublicKeyAndNonce,\n getUserAccountPublicKeySync,\n getUserStatsAccountPublicKey,\n getVammNodeGenerator,\n getVariant,\n hasAuctionPrice,\n hasLimitPrice,\n initialize,\n isAuctionComplete,\n isEmptyPosition,\n isFillableByVAMM,\n isLimitOrder,\n isMarketOrder,\n isOneOfVariant,\n isOracleTooDivergent,\n isOracleValid,\n isOrderExpired,\n isOrderReduceOnly,\n isOrderRiskIncreasing,\n isOrderRiskIncreasingInSameDirection,\n isTriggered,\n isVariant,\n mustBeTriggered,\n oraclePriceBands,\n positionCurrentDirection,\n positionIsAvailable,\n promiseTimeout,\n pyth,\n squareRootBN,\n stakeAmountToShares,\n standardizeBaseAssetAmount,\n unstakeSharesToAmount\n};\n//# sourceMappingURL=index.mjs.map","/**\n * Generates the error mapping\n * @param idl\n * @returns\n */\nexport const generateErrorMap = (idl) => {\n var _a, _b;\n return ((_b = (_a = idl.errors) === null || _a === void 0 ? void 0 : _a.reduce((acc, err) => {\n return {\n ...acc,\n [err.name]: err,\n };\n }, {})) !== null && _b !== void 0 ? _b : {});\n};\n/**\n * Returns a RegExp which matches the message of a program error.\n * @param err\n * @returns\n */\nexport const matchError = (err) => matchErrorCode(err.code);\n/**\n * Returns a RegExp which matches the code of a custom program error.\n * @param err\n * @returns\n */\nexport const matchErrorCode = (code) => new RegExp(`custom program error: 0x${code.toString(16)}`);\n//# sourceMappingURL=errors.js.map","import { BorshAccountsCoder } from \"@project-serum/anchor\";\nimport camelCase from \"lodash.camelcase\";\n/**\n * Generates the metadata of accounts.\n *\n * This is intended to be called once at initialization.\n */\nexport const generateAnchorAccounts = (programID, accounts, coder) => {\n const parsers = {};\n accounts.forEach((account) => {\n parsers[camelCase(account.name)] = {\n programID,\n name: account.name,\n encode: (value) => coder.encode(account.name, value),\n parse: (data) => coder.decode(account.name, data),\n idl: account,\n size: coder.size(account),\n discriminator: BorshAccountsCoder.accountDiscriminator(account.name),\n };\n });\n return parsers;\n};\n//# sourceMappingURL=accounts.js.map","import * as anchor from \"@project-serum/anchor\";\nimport { SolanaProvider, SolanaReadonlyProvider, } from \"@saberhq/solana-contrib\";\nconst anchorModule = anchor;\n/**\n * Class used to create new {@link AnchorProvider}s.\n */\nexport const AnchorProviderClass = \"AnchorProvider\" in anchorModule\n ? anchorModule.AnchorProvider\n : anchorModule.Provider;\n/**\n * Create a new Anchor provider.\n *\n * @param connection\n * @param wallet\n * @param opts\n * @returns\n */\nexport const buildAnchorProvider = (connection, wallet, opts) => {\n return new AnchorProviderClass(connection, wallet, opts);\n};\n/**\n * Creates a readonly Saber Provider from an Anchor provider.\n * @param anchorProvider The Anchor provider.\n * @returns\n */\nexport const makeReadonlySaberProvider = (anchorProvider) => {\n return new SolanaReadonlyProvider(anchorProvider.connection);\n};\n/**\n * Creates a Saber Provider from an Anchor provider.\n * @param anchorProvider The Anchor provider.\n * @returns\n */\nexport const makeSaberProvider = (anchorProvider) => {\n return SolanaProvider.init({\n connection: anchorProvider.connection,\n wallet: anchorProvider.wallet,\n opts: anchorProvider.opts,\n });\n};\n/**\n * Creates an Anchor Provider from a Saber provider.\n * @param saberProvider\n * @returns\n */\nexport const makeAnchorProvider = (saberProvider) => {\n return buildAnchorProvider(saberProvider.connection, saberProvider.wallet, saberProvider.opts);\n};\n//# sourceMappingURL=provider.js.map","import { Program } from \"@project-serum/anchor\";\nimport mapValues from \"lodash.mapvalues\";\nimport { makeAnchorProvider } from \"./provider.js\";\n/**\n * Builds a program from its IDL.\n *\n * @param idl\n * @param address\n * @param provider\n * @returns\n */\nexport const newProgram = (idl, address, provider) => {\n return new Program(idl, address.toString(), makeAnchorProvider(provider));\n};\n/**\n * Builds a map of programs from their IDLs and addresses.\n *\n * @param provider\n * @param programs\n * @returns\n */\nexport const newProgramMap = (provider, idls, addresses) => {\n return mapValues(idls, (idl, k) => newProgram(idl, addresses[k], provider));\n};\n//# sourceMappingURL=programs.js.map","import { BorshCoder, EventParser, utils } from \"@project-serum/anchor\";\nimport { default as InstructionNamespaceFactory } from \"@project-serum/anchor/dist/cjs/program/namespace/instruction.js\";\nimport { TransactionInstruction } from \"@solana/web3.js\";\nimport mapValues from \"lodash.mapvalues\";\nimport { generateErrorMap } from \"../errors.js\";\nimport { generateAccountParsersFromCoder } from \"../generateAccountParsers.js\";\nimport { generateAnchorAccounts } from \"./accounts.js\";\nimport { newProgram } from \"./programs.js\";\n/**\n * Coder wrapper.\n *\n * Allows interacting with a program without a provider.\n */\nexport class SuperCoder {\n /**\n * Constructor.\n * @param address\n * @param idl\n */\n constructor(\n /**\n * Program address.\n */\n address, \n /**\n * Program IDL.\n */\n idl) {\n var _a, _b;\n this.address = address;\n this.idl = idl;\n this.coder = new BorshCoder(idl);\n this.eventParser = new EventParser(address, this.coder);\n this.accounts = generateAnchorAccounts(address, (_a = idl.accounts) !== null && _a !== void 0 ? _a : [], this.coder.accounts);\n this.errorMap = generateErrorMap(idl);\n const accountsList = Object.values(this.accounts);\n const accountTypeDefs = {};\n accountsList.forEach((account) => {\n accountTypeDefs[account.name] = account.idl;\n });\n this.accountParsers = generateAccountParsersFromCoder((_b = idl.accounts) === null || _b === void 0 ? void 0 : _b.map((acc) => acc.name), this.coder.accounts);\n this.accountTypeDefs = accountTypeDefs;\n this.discriminators = accountsList.reduce((acc, el) => ({ ...acc, [el.discriminator.toString(\"hex\")]: el.name }), {});\n this.discriminatorsByAccount = accountsList.reduce((acc, el) => ({ ...acc, [el.name]: el.discriminator }), {});\n }\n /**\n * Creates a {@link GetProgramAccountsFilter} for the given account.\n */\n makeGPAFilter(account, ...filters) {\n return [\n {\n memcmp: {\n offset: 0,\n bytes: utils.bytes.bs58.encode(this.discriminatorsByAccount[account]),\n },\n },\n ...filters,\n ];\n }\n /**\n * Parses events in the program log.\n * @param logs\n * @returns\n */\n parseProgramLogEvents(logs) {\n if (!logs) {\n return [];\n }\n const events = [];\n const parsedLogsIter = this.eventParser.parseLogs(logs !== null && logs !== void 0 ? logs : []);\n let parsedEvent = parsedLogsIter.next();\n while (!parsedEvent.done) {\n events.push(parsedEvent.value);\n parsedEvent = parsedLogsIter.next();\n }\n return events;\n }\n /**\n * Encodes a {@link TransactionInstruction}.\n * @returns\n */\n encodeIX(name, args, accounts) {\n const idlIx = this.idl.instructions.find((ix) => ix.name === name);\n if (!idlIx) {\n throw new Error(`could not find ix: ${name}`);\n }\n const encoded = this.coder.instruction.encode(name, args);\n const keys = InstructionNamespaceFactory.accountsArray(accounts, idlIx.accounts, name);\n return new TransactionInstruction({\n programId: this.address,\n keys,\n data: encoded,\n });\n }\n /**\n * Parses a {@link TransactionInstruction}.\n * @returns\n */\n parseInstruction(txInstruction) {\n const decoded = this.coder.instruction.decode(txInstruction.data);\n if (!decoded) {\n throw new Error(\"could not decode ix data\");\n }\n const fmt = this.coder.instruction.format(decoded, txInstruction.keys);\n if (!fmt) {\n throw new Error(\"invalid instruction\");\n }\n return { ...fmt, name: decoded.name };\n }\n /**\n * Gets a {@link Program} from a provider.\n * @param provider\n * @returns\n */\n getProgram(provider) {\n return newProgram(this.idl, this.address, provider);\n }\n}\n/**\n * Builds a map of coders from their IDLs and addresses.\n *\n * @param provider\n * @param programs\n * @returns\n */\nexport const buildCoderMap = (idls, addresses) => {\n return mapValues(idls, (idl, k) => new SuperCoder(addresses[k], idl));\n};\n//# sourceMappingURL=coder.js.map","import { BorshAccountsCoder } from \"@project-serum/anchor\";\nimport camelCase from \"lodash.camelcase\";\n/**\n * Creates parsers for accounts.\n *\n * This is intended to be called once at initialization.\n *\n * @param idl The IDL.\n */\nexport const generateAccountParsers = (idl) => {\n var _a;\n const coder = new BorshAccountsCoder(idl);\n return generateAccountParsersFromCoder((_a = idl.accounts) === null || _a === void 0 ? void 0 : _a.map((a) => a.name), coder);\n};\n/**\n * Creates parsers for accounts.\n *\n * This is intended to be called once at initialization.\n *\n * @param idl The IDL.\n */\nexport const generateAccountParsersFromCoder = (accountNames, coder) => {\n return (accountNames !== null && accountNames !== void 0 ? accountNames : []).reduce((parsers, account) => {\n parsers[camelCase(account)] = (data) => coder.decode(account, data);\n return parsers;\n }, {});\n};\n//# sourceMappingURL=generateAccountParsers.js.map","import { generateErrorMap } from \"@saberhq/anchor-contrib\";\nexport const AnchorQuarryMineIDL = {\n version: \"5.0.2\",\n name: \"quarry_mine\",\n instructions: [\n {\n name: \"newRewarder\",\n accounts: [\n {\n name: \"base\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Rewarder\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"base\",\n },\n ],\n },\n },\n {\n name: \"initialAuthority\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"unusedAccount\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mintWrapper\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rewardsTokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"claimFeeTokenAccount\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"newRewarderV2\",\n accounts: [\n {\n name: \"base\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Rewarder\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"base\",\n },\n ],\n },\n },\n {\n name: \"initialAuthority\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mintWrapper\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rewardsTokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"claimFeeTokenAccount\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"setPauseAuthority\",\n accounts: [\n {\n name: \"auth\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: \"newPauseAuthority\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"pause\",\n accounts: [\n {\n name: \"pauseAuthority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"unpause\",\n accounts: [\n {\n name: \"pauseAuthority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"transferAuthority\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"newAuthority\",\n type: \"publicKey\",\n },\n ],\n },\n {\n name: \"acceptAuthority\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"setAnnualRewards\",\n accounts: [\n {\n name: \"auth\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n },\n ],\n args: [\n {\n name: \"newRate\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"createQuarry\",\n accounts: [\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Quarry\",\n },\n {\n kind: \"account\",\n type: {\n defined: \"Account<'info,Rewarder>\",\n },\n account: \"MutableRewarderWithAuthority\",\n path: \"auth.rewarder\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Mint\",\n path: \"token_mint\",\n },\n ],\n },\n },\n {\n name: \"auth\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"unusedAccount\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"createQuarryV2\",\n accounts: [\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Quarry\",\n },\n {\n kind: \"account\",\n type: {\n defined: \"Account<'info,Rewarder>\",\n },\n account: \"MutableRewarderWithAuthority\",\n path: \"auth.rewarder\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Mint\",\n path: \"token_mint\",\n },\n ],\n },\n },\n {\n name: \"auth\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"setRewardsShare\",\n accounts: [\n {\n name: \"auth\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"newShare\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"setFamine\",\n accounts: [\n {\n name: \"auth\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"famineTs\",\n type: \"i64\",\n },\n ],\n },\n {\n name: \"updateQuarryRewards\",\n accounts: [\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"createMiner\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Miner\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Quarry\",\n path: \"quarry\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"authority\",\n },\n ],\n },\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"createMinerV2\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Miner\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Quarry\",\n path: \"quarry\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"authority\",\n },\n ],\n },\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"claimRewards\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"mintWrapperProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minter\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewardsTokenMint\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewardsTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"claimFeeTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"claim\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"unusedMinerVault\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"unusedTokenAccount\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [],\n },\n {\n name: \"claimRewardsV2\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"mintWrapperProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minter\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewardsTokenMint\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewardsTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"claimFeeTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"claim\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [],\n },\n {\n name: \"stakeTokens\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"withdrawTokens\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"rescueTokens\",\n accounts: [\n {\n name: \"miner\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"minerTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"destinationTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"extractFees\",\n accounts: [\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"claimFeeTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"feeToTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n ],\n accounts: [\n {\n name: \"rewarder\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"base\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"authority\",\n type: \"publicKey\",\n },\n {\n name: \"pendingAuthority\",\n type: \"publicKey\",\n },\n {\n name: \"numQuarries\",\n type: \"u16\",\n },\n {\n name: \"annualRewardsRate\",\n type: \"u64\",\n },\n {\n name: \"totalRewardsShares\",\n type: \"u64\",\n },\n {\n name: \"mintWrapper\",\n type: \"publicKey\",\n },\n {\n name: \"rewardsTokenMint\",\n type: \"publicKey\",\n },\n {\n name: \"claimFeeTokenAccount\",\n type: \"publicKey\",\n },\n {\n name: \"maxClaimFeeMillibps\",\n type: \"u64\",\n },\n {\n name: \"pauseAuthority\",\n type: \"publicKey\",\n },\n {\n name: \"isPaused\",\n type: \"bool\",\n },\n ],\n },\n },\n {\n name: \"quarry\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"rewarder\",\n type: \"publicKey\",\n },\n {\n name: \"tokenMintKey\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"index\",\n type: \"u16\",\n },\n {\n name: \"tokenMintDecimals\",\n type: \"u8\",\n },\n {\n name: \"famineTs\",\n type: \"i64\",\n },\n {\n name: \"lastUpdateTs\",\n type: \"i64\",\n },\n {\n name: \"rewardsPerTokenStored\",\n type: \"u128\",\n },\n {\n name: \"annualRewardsRate\",\n type: \"u64\",\n },\n {\n name: \"rewardsShare\",\n type: \"u64\",\n },\n {\n name: \"totalTokensDeposited\",\n type: \"u64\",\n },\n {\n name: \"numMiners\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"miner\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"quarry\",\n type: \"publicKey\",\n },\n {\n name: \"authority\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"tokenVaultKey\",\n type: \"publicKey\",\n },\n {\n name: \"rewardsEarned\",\n type: \"u64\",\n },\n {\n name: \"rewardsPerTokenPaid\",\n type: \"u128\",\n },\n {\n name: \"balance\",\n type: \"u64\",\n },\n {\n name: \"index\",\n type: \"u64\",\n },\n ],\n },\n },\n ],\n types: [\n {\n name: \"StakeAction\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Stake\",\n },\n {\n name: \"Withdraw\",\n },\n ],\n },\n },\n ],\n events: [\n {\n name: \"MinerCreateEvent\",\n fields: [\n {\n name: \"authority\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"quarry\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"miner\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"NewRewarderEvent\",\n fields: [\n {\n name: \"authority\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false,\n },\n ],\n },\n {\n name: \"ClaimEvent\",\n fields: [\n {\n name: \"authority\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"stakedToken\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"rewardsToken\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"fees\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false,\n },\n ],\n },\n {\n name: \"StakeEvent\",\n fields: [\n {\n name: \"authority\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"token\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false,\n },\n ],\n },\n {\n name: \"WithdrawEvent\",\n fields: [\n {\n name: \"authority\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"token\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false,\n },\n ],\n },\n {\n name: \"RewarderAnnualRewardsUpdateEvent\",\n fields: [\n {\n name: \"previousRate\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"newRate\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false,\n },\n ],\n },\n {\n name: \"QuarryCreateEvent\",\n fields: [\n {\n name: \"tokenMint\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false,\n },\n ],\n },\n {\n name: \"QuarryRewardsUpdateEvent\",\n fields: [\n {\n name: \"tokenMint\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"annualRewardsRate\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"rewardsShare\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false,\n },\n ],\n },\n ],\n errors: [\n {\n code: 6000,\n name: \"Unauthorized\",\n msg: \"You are not authorized to perform this action.\",\n },\n {\n code: 6001,\n name: \"InsufficientBalance\",\n msg: \"Insufficient staked balance for withdraw request.\",\n },\n {\n code: 6002,\n name: \"PendingAuthorityNotSet\",\n msg: \"Pending authority not set\",\n },\n {\n code: 6003,\n name: \"InvalidRewardsShare\",\n msg: \"Invalid quarry rewards share\",\n },\n {\n code: 6004,\n name: \"InsufficientAllowance\",\n msg: \"Insufficient allowance.\",\n },\n {\n code: 6005,\n name: \"NewVaultNotEmpty\",\n msg: \"New vault not empty.\",\n },\n {\n code: 6006,\n name: \"NotEnoughTokens\",\n msg: \"Not enough tokens.\",\n },\n {\n code: 6007,\n name: \"InvalidTimestamp\",\n msg: \"Invalid timestamp.\",\n },\n {\n code: 6008,\n name: \"InvalidMaxClaimFee\",\n msg: \"Invalid max claim fee.\",\n },\n {\n code: 6009,\n name: \"MaxAnnualRewardsRateExceeded\",\n msg: \"Max annual rewards rate exceeded.\",\n },\n {\n code: 6010,\n name: \"Paused\",\n msg: \"Rewarder is paused.\",\n },\n {\n code: 6011,\n name: \"UpperboundExceeded\",\n msg: \"Rewards earned exceeded quarry's upper bound.\",\n },\n ],\n};\nexport const QuarryMineJSON = {\n version: \"5.0.2\",\n name: \"quarry_mine\",\n instructions: [\n {\n name: \"newRewarder\",\n accounts: [\n {\n name: \"base\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Rewarder\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"base\",\n },\n ],\n },\n },\n {\n name: \"initialAuthority\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"unusedAccount\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mintWrapper\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rewardsTokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"claimFeeTokenAccount\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"newRewarderV2\",\n accounts: [\n {\n name: \"base\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Rewarder\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"base\",\n },\n ],\n },\n },\n {\n name: \"initialAuthority\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mintWrapper\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rewardsTokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"claimFeeTokenAccount\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"setPauseAuthority\",\n accounts: [\n {\n name: \"auth\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: \"newPauseAuthority\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"pause\",\n accounts: [\n {\n name: \"pauseAuthority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"unpause\",\n accounts: [\n {\n name: \"pauseAuthority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"transferAuthority\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"newAuthority\",\n type: \"publicKey\",\n },\n ],\n },\n {\n name: \"acceptAuthority\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"setAnnualRewards\",\n accounts: [\n {\n name: \"auth\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n },\n ],\n args: [\n {\n name: \"newRate\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"createQuarry\",\n accounts: [\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Quarry\",\n },\n {\n kind: \"account\",\n type: {\n defined: \"Account<'info,Rewarder>\",\n },\n account: \"MutableRewarderWithAuthority\",\n path: \"auth.rewarder\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Mint\",\n path: \"token_mint\",\n },\n ],\n },\n },\n {\n name: \"auth\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"unusedAccount\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"createQuarryV2\",\n accounts: [\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Quarry\",\n },\n {\n kind: \"account\",\n type: {\n defined: \"Account<'info,Rewarder>\",\n },\n account: \"MutableRewarderWithAuthority\",\n path: \"auth.rewarder\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Mint\",\n path: \"token_mint\",\n },\n ],\n },\n },\n {\n name: \"auth\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"setRewardsShare\",\n accounts: [\n {\n name: \"auth\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n ],\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"newShare\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"setFamine\",\n accounts: [\n {\n name: \"auth\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"famineTs\",\n type: \"i64\",\n },\n ],\n },\n {\n name: \"updateQuarryRewards\",\n accounts: [\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"createMiner\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Miner\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Quarry\",\n path: \"quarry\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"authority\",\n },\n ],\n },\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"createMinerV2\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Miner\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Quarry\",\n path: \"quarry\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"authority\",\n },\n ],\n },\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"claimRewards\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"mintWrapperProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minter\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewardsTokenMint\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewardsTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"claimFeeTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"claim\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"unusedMinerVault\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"unusedTokenAccount\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [],\n },\n {\n name: \"claimRewardsV2\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"mintWrapperProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minter\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewardsTokenMint\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewardsTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"claimFeeTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"claim\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [],\n },\n {\n name: \"stakeTokens\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"withdrawTokens\",\n accounts: [\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"rescueTokens\",\n accounts: [\n {\n name: \"miner\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"minerTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"destinationTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"extractFees\",\n accounts: [\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"claimFeeTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"feeToTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n ],\n accounts: [\n {\n name: \"Rewarder\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"base\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"authority\",\n type: \"publicKey\",\n },\n {\n name: \"pendingAuthority\",\n type: \"publicKey\",\n },\n {\n name: \"numQuarries\",\n type: \"u16\",\n },\n {\n name: \"annualRewardsRate\",\n type: \"u64\",\n },\n {\n name: \"totalRewardsShares\",\n type: \"u64\",\n },\n {\n name: \"mintWrapper\",\n type: \"publicKey\",\n },\n {\n name: \"rewardsTokenMint\",\n type: \"publicKey\",\n },\n {\n name: \"claimFeeTokenAccount\",\n type: \"publicKey\",\n },\n {\n name: \"maxClaimFeeMillibps\",\n type: \"u64\",\n },\n {\n name: \"pauseAuthority\",\n type: \"publicKey\",\n },\n {\n name: \"isPaused\",\n type: \"bool\",\n },\n ],\n },\n },\n {\n name: \"Quarry\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"rewarder\",\n type: \"publicKey\",\n },\n {\n name: \"tokenMintKey\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"index\",\n type: \"u16\",\n },\n {\n name: \"tokenMintDecimals\",\n type: \"u8\",\n },\n {\n name: \"famineTs\",\n type: \"i64\",\n },\n {\n name: \"lastUpdateTs\",\n type: \"i64\",\n },\n {\n name: \"rewardsPerTokenStored\",\n type: \"u128\",\n },\n {\n name: \"annualRewardsRate\",\n type: \"u64\",\n },\n {\n name: \"rewardsShare\",\n type: \"u64\",\n },\n {\n name: \"totalTokensDeposited\",\n type: \"u64\",\n },\n {\n name: \"numMiners\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"Miner\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"quarry\",\n type: \"publicKey\",\n },\n {\n name: \"authority\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"tokenVaultKey\",\n type: \"publicKey\",\n },\n {\n name: \"rewardsEarned\",\n type: \"u64\",\n },\n {\n name: \"rewardsPerTokenPaid\",\n type: \"u128\",\n },\n {\n name: \"balance\",\n type: \"u64\",\n },\n {\n name: \"index\",\n type: \"u64\",\n },\n ],\n },\n },\n ],\n types: [\n {\n name: \"StakeAction\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Stake\",\n },\n {\n name: \"Withdraw\",\n },\n ],\n },\n },\n ],\n events: [\n {\n name: \"MinerCreateEvent\",\n fields: [\n {\n name: \"authority\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"quarry\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"miner\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"NewRewarderEvent\",\n fields: [\n {\n name: \"authority\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false,\n },\n ],\n },\n {\n name: \"ClaimEvent\",\n fields: [\n {\n name: \"authority\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"stakedToken\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"rewardsToken\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"fees\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false,\n },\n ],\n },\n {\n name: \"StakeEvent\",\n fields: [\n {\n name: \"authority\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"token\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false,\n },\n ],\n },\n {\n name: \"WithdrawEvent\",\n fields: [\n {\n name: \"authority\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"token\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false,\n },\n ],\n },\n {\n name: \"RewarderAnnualRewardsUpdateEvent\",\n fields: [\n {\n name: \"previousRate\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"newRate\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false,\n },\n ],\n },\n {\n name: \"QuarryCreateEvent\",\n fields: [\n {\n name: \"tokenMint\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false,\n },\n ],\n },\n {\n name: \"QuarryRewardsUpdateEvent\",\n fields: [\n {\n name: \"tokenMint\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"annualRewardsRate\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"rewardsShare\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false,\n },\n ],\n },\n ],\n errors: [\n {\n code: 6000,\n name: \"Unauthorized\",\n msg: \"You are not authorized to perform this action.\",\n },\n {\n code: 6001,\n name: \"InsufficientBalance\",\n msg: \"Insufficient staked balance for withdraw request.\",\n },\n {\n code: 6002,\n name: \"PendingAuthorityNotSet\",\n msg: \"Pending authority not set\",\n },\n {\n code: 6003,\n name: \"InvalidRewardsShare\",\n msg: \"Invalid quarry rewards share\",\n },\n {\n code: 6004,\n name: \"InsufficientAllowance\",\n msg: \"Insufficient allowance.\",\n },\n {\n code: 6005,\n name: \"NewVaultNotEmpty\",\n msg: \"New vault not empty.\",\n },\n {\n code: 6006,\n name: \"NotEnoughTokens\",\n msg: \"Not enough tokens.\",\n },\n {\n code: 6007,\n name: \"InvalidTimestamp\",\n msg: \"Invalid timestamp.\",\n },\n {\n code: 6008,\n name: \"InvalidMaxClaimFee\",\n msg: \"Invalid max claim fee.\",\n },\n {\n code: 6009,\n name: \"MaxAnnualRewardsRateExceeded\",\n msg: \"Max annual rewards rate exceeded.\",\n },\n {\n code: 6010,\n name: \"Paused\",\n msg: \"Rewarder is paused.\",\n },\n {\n code: 6011,\n name: \"UpperboundExceeded\",\n msg: \"Rewards earned exceeded quarry's upper bound.\",\n },\n ],\n};\nexport const QuarryMineErrors = generateErrorMap(QuarryMineJSON);\n//# sourceMappingURL=quarry_mine.js.map","import { generateErrorMap } from \"@saberhq/anchor-contrib\";\nexport const AnchorQuarryMintWrapperIDL = {\n version: \"5.0.2\",\n name: \"quarry_mint_wrapper\",\n instructions: [\n {\n name: \"newWrapper\",\n accounts: [\n {\n name: \"base\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"MintWrapper\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"base\",\n },\n ],\n },\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"hardCap\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"newWrapperV2\",\n accounts: [\n {\n name: \"base\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"MintWrapper\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"base\",\n },\n ],\n },\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"hardCap\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"transferAdmin\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"nextAdmin\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"acceptAdmin\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"pendingAdmin\",\n isMut: false,\n isSigner: true,\n },\n ],\n args: [],\n },\n {\n name: \"newMinter\",\n accounts: [\n {\n name: \"auth\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n ],\n },\n {\n name: \"newMinterAuthority\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minter\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"MintWrapperMinter\",\n },\n {\n kind: \"account\",\n type: {\n defined: \"Account<'info,MintWrapper>\",\n },\n account: \"OnlyAdmin\",\n path: \"auth.mint_wrapper\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"new_minter_authority\",\n },\n ],\n },\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"newMinterV2\",\n accounts: [\n {\n name: \"auth\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n ],\n },\n {\n name: \"newMinterAuthority\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minter\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"MintWrapperMinter\",\n },\n {\n kind: \"account\",\n type: {\n defined: \"Account<'info,MintWrapper>\",\n },\n account: \"OnlyAdmin\",\n path: \"auth.mint_wrapper\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"new_minter_authority\",\n },\n ],\n },\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"minterUpdate\",\n accounts: [\n {\n name: \"auth\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n ],\n },\n {\n name: \"minter\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"allowance\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"performMint\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minterAuthority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"tokenMint\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"destination\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minter\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\",\n },\n ],\n },\n ],\n accounts: [\n {\n name: \"mintWrapper\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"base\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"hardCap\",\n type: \"u64\",\n },\n {\n name: \"admin\",\n type: \"publicKey\",\n },\n {\n name: \"pendingAdmin\",\n type: \"publicKey\",\n },\n {\n name: \"tokenMint\",\n type: \"publicKey\",\n },\n {\n name: \"numMinters\",\n type: \"u64\",\n },\n {\n name: \"totalAllowance\",\n type: \"u64\",\n },\n {\n name: \"totalMinted\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"minter\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"mintWrapper\",\n type: \"publicKey\",\n },\n {\n name: \"minterAuthority\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"index\",\n type: \"u64\",\n },\n {\n name: \"allowance\",\n type: \"u64\",\n },\n {\n name: \"totalMinted\",\n type: \"u64\",\n },\n ],\n },\n },\n ],\n events: [\n {\n name: \"NewMintWrapperEvent\",\n fields: [\n {\n name: \"mintWrapper\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"hardCap\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"admin\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"tokenMint\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"MintWrapperAdminProposeEvent\",\n fields: [\n {\n name: \"mintWrapper\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"currentAdmin\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"pendingAdmin\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"MintWrapperAdminUpdateEvent\",\n fields: [\n {\n name: \"mintWrapper\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"previousAdmin\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"admin\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"NewMinterEvent\",\n fields: [\n {\n name: \"mintWrapper\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"minter\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"index\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"minterAuthority\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"MinterAllowanceUpdateEvent\",\n fields: [\n {\n name: \"mintWrapper\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"minter\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"previousAllowance\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"allowance\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"MinterMintEvent\",\n fields: [\n {\n name: \"mintWrapper\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"minter\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"destination\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n ],\n errors: [\n {\n code: 6000,\n name: \"Unauthorized\",\n msg: \"You are not authorized to perform this action.\",\n },\n {\n code: 6001,\n name: \"HardcapExceeded\",\n msg: \"Cannot mint over hard cap.\",\n },\n {\n code: 6002,\n name: \"MinterAllowanceExceeded\",\n msg: \"Minter allowance exceeded.\",\n },\n ],\n};\nexport const QuarryMintWrapperJSON = {\n version: \"5.0.2\",\n name: \"quarry_mint_wrapper\",\n instructions: [\n {\n name: \"newWrapper\",\n accounts: [\n {\n name: \"base\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"MintWrapper\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"base\",\n },\n ],\n },\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"hardCap\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"newWrapperV2\",\n accounts: [\n {\n name: \"base\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"MintWrapper\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"base\",\n },\n ],\n },\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"hardCap\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"transferAdmin\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"nextAdmin\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"acceptAdmin\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"pendingAdmin\",\n isMut: false,\n isSigner: true,\n },\n ],\n args: [],\n },\n {\n name: \"newMinter\",\n accounts: [\n {\n name: \"auth\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n ],\n },\n {\n name: \"newMinterAuthority\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minter\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"MintWrapperMinter\",\n },\n {\n kind: \"account\",\n type: {\n defined: \"Account<'info,MintWrapper>\",\n },\n account: \"OnlyAdmin\",\n path: \"auth.mint_wrapper\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"new_minter_authority\",\n },\n ],\n },\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"newMinterV2\",\n accounts: [\n {\n name: \"auth\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n ],\n },\n {\n name: \"newMinterAuthority\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minter\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"MintWrapperMinter\",\n },\n {\n kind: \"account\",\n type: {\n defined: \"Account<'info,MintWrapper>\",\n },\n account: \"OnlyAdmin\",\n path: \"auth.mint_wrapper\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"new_minter_authority\",\n },\n ],\n },\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"minterUpdate\",\n accounts: [\n {\n name: \"auth\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n ],\n },\n {\n name: \"minter\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"allowance\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"performMint\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minterAuthority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"tokenMint\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"destination\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minter\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\",\n },\n ],\n },\n ],\n accounts: [\n {\n name: \"MintWrapper\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"base\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"hardCap\",\n type: \"u64\",\n },\n {\n name: \"admin\",\n type: \"publicKey\",\n },\n {\n name: \"pendingAdmin\",\n type: \"publicKey\",\n },\n {\n name: \"tokenMint\",\n type: \"publicKey\",\n },\n {\n name: \"numMinters\",\n type: \"u64\",\n },\n {\n name: \"totalAllowance\",\n type: \"u64\",\n },\n {\n name: \"totalMinted\",\n type: \"u64\",\n },\n ],\n },\n },\n {\n name: \"Minter\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"mintWrapper\",\n type: \"publicKey\",\n },\n {\n name: \"minterAuthority\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"index\",\n type: \"u64\",\n },\n {\n name: \"allowance\",\n type: \"u64\",\n },\n {\n name: \"totalMinted\",\n type: \"u64\",\n },\n ],\n },\n },\n ],\n events: [\n {\n name: \"NewMintWrapperEvent\",\n fields: [\n {\n name: \"mintWrapper\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"hardCap\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"admin\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"tokenMint\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"MintWrapperAdminProposeEvent\",\n fields: [\n {\n name: \"mintWrapper\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"currentAdmin\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"pendingAdmin\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"MintWrapperAdminUpdateEvent\",\n fields: [\n {\n name: \"mintWrapper\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"previousAdmin\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"admin\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"NewMinterEvent\",\n fields: [\n {\n name: \"mintWrapper\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"minter\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"index\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"minterAuthority\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"MinterAllowanceUpdateEvent\",\n fields: [\n {\n name: \"mintWrapper\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"minter\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"previousAllowance\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"allowance\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"MinterMintEvent\",\n fields: [\n {\n name: \"mintWrapper\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"minter\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"destination\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n ],\n errors: [\n {\n code: 6000,\n name: \"Unauthorized\",\n msg: \"You are not authorized to perform this action.\",\n },\n {\n code: 6001,\n name: \"HardcapExceeded\",\n msg: \"Cannot mint over hard cap.\",\n },\n {\n code: 6002,\n name: \"MinterAllowanceExceeded\",\n msg: \"Minter allowance exceeded.\",\n },\n ],\n};\nexport const QuarryMintWrapperErrors = generateErrorMap(QuarryMintWrapperJSON);\n//# sourceMappingURL=quarry_mint_wrapper.js.map","import { generateErrorMap } from \"@saberhq/anchor-contrib\";\nexport const AnchorQuarryRedeemerIDL = {\n version: \"5.0.2\",\n name: \"quarry_redeemer\",\n instructions: [\n {\n name: \"createRedeemer\",\n accounts: [\n {\n name: \"redeemer\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Redeemer\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Mint\",\n path: \"iou_mint\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Mint\",\n path: \"redemption_mint\",\n },\n ],\n },\n },\n {\n name: \"iouMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"redemptionMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"redeemTokens\",\n accounts: [\n {\n name: \"redeemer\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"sourceAuthority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"iouMint\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"iouSource\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"redemptionVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"redemptionDestination\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"redeemAllTokens\",\n accounts: [\n {\n name: \"redeemer\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"sourceAuthority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"iouMint\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"iouSource\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"redemptionVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"redemptionDestination\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n ],\n accounts: [\n {\n name: \"redeemer\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"iouMint\",\n type: \"publicKey\",\n },\n {\n name: \"redemptionMint\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"totalTokensRedeemed\",\n type: \"u64\",\n },\n ],\n },\n },\n ],\n events: [\n {\n name: \"RedeemTokensEvent\",\n fields: [\n {\n name: \"user\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"iouMint\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"redemptionMint\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false,\n },\n ],\n },\n ],\n errors: [\n {\n code: 6000,\n name: \"Unauthorized\",\n msg: \"Unauthorized.\",\n },\n ],\n};\nexport const QuarryRedeemerJSON = {\n version: \"5.0.2\",\n name: \"quarry_redeemer\",\n instructions: [\n {\n name: \"createRedeemer\",\n accounts: [\n {\n name: \"redeemer\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Redeemer\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Mint\",\n path: \"iou_mint\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Mint\",\n path: \"redemption_mint\",\n },\n ],\n },\n },\n {\n name: \"iouMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"redemptionMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"redeemTokens\",\n accounts: [\n {\n name: \"redeemer\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"sourceAuthority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"iouMint\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"iouSource\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"redemptionVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"redemptionDestination\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"redeemAllTokens\",\n accounts: [\n {\n name: \"redeemer\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"sourceAuthority\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"iouMint\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"iouSource\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"redemptionVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"redemptionDestination\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n ],\n accounts: [\n {\n name: \"Redeemer\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"iouMint\",\n type: \"publicKey\",\n },\n {\n name: \"redemptionMint\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"totalTokensRedeemed\",\n type: \"u64\",\n },\n ],\n },\n },\n ],\n events: [\n {\n name: \"RedeemTokensEvent\",\n fields: [\n {\n name: \"user\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"iouMint\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"redemptionMint\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"timestamp\",\n type: \"i64\",\n index: false,\n },\n ],\n },\n ],\n errors: [\n {\n code: 6000,\n name: \"Unauthorized\",\n msg: \"Unauthorized.\",\n },\n ],\n};\nexport const QuarryRedeemerErrors = generateErrorMap(QuarryRedeemerJSON);\n//# sourceMappingURL=quarry_redeemer.js.map","import { generateErrorMap } from \"@saberhq/anchor-contrib\";\nexport const AnchorQuarryOperatorIDL = {\n version: \"5.0.2\",\n name: \"quarry_operator\",\n instructions: [\n {\n name: \"createOperator\",\n accounts: [\n {\n name: \"base\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Operator\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"base\",\n },\n ],\n },\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"quarryMineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"createOperatorV2\",\n accounts: [\n {\n name: \"base\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Operator\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"base\",\n },\n ],\n },\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"quarryMineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"setAdmin\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"setRateSetter\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"setQuarryCreator\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"setShareAllocator\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"delegateSetAnnualRewards\",\n accounts: [\n {\n name: \"withDelegate\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarryMineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [\n {\n name: \"newRate\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"delegateCreateQuarry\",\n accounts: [\n {\n name: \"withDelegate\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarryMineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"unusedAccount\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"delegateCreateQuarryV2\",\n accounts: [\n {\n name: \"withDelegate\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarryMineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"delegateSetRewardsShare\",\n accounts: [\n {\n name: \"withDelegate\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarryMineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"newShare\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"delegateSetFamine\",\n accounts: [\n {\n name: \"withDelegate\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarryMineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"famineTs\",\n type: \"i64\",\n },\n ],\n },\n ],\n accounts: [\n {\n name: \"operator\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"base\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"rewarder\",\n type: \"publicKey\",\n },\n {\n name: \"admin\",\n type: \"publicKey\",\n },\n {\n name: \"rateSetter\",\n type: \"publicKey\",\n },\n {\n name: \"quarryCreator\",\n type: \"publicKey\",\n },\n {\n name: \"shareAllocator\",\n type: \"publicKey\",\n },\n {\n name: \"lastModifiedTs\",\n type: \"i64\",\n },\n {\n name: \"generation\",\n type: \"u64\",\n },\n ],\n },\n },\n ],\n errors: [\n {\n code: 6000,\n name: \"Unauthorized\",\n msg: \"Signer is not authorized to perform this action.\",\n },\n {\n code: 6001,\n name: \"PendingAuthorityNotSet\",\n msg: \"Pending authority must be set to the created operator.\",\n },\n {\n code: 6002,\n name: \"OperatorNotRewarderAuthority\",\n msg: \"Operator is not the Rewarder authority.\",\n },\n ],\n};\nexport const QuarryOperatorJSON = {\n version: \"5.0.2\",\n name: \"quarry_operator\",\n instructions: [\n {\n name: \"createOperator\",\n accounts: [\n {\n name: \"base\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Operator\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"base\",\n },\n ],\n },\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"quarryMineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"createOperatorV2\",\n accounts: [\n {\n name: \"base\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"Operator\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"base\",\n },\n ],\n },\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"quarryMineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"setAdmin\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"setRateSetter\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"setQuarryCreator\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"setShareAllocator\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"admin\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"delegateSetAnnualRewards\",\n accounts: [\n {\n name: \"withDelegate\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarryMineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [\n {\n name: \"newRate\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"delegateCreateQuarry\",\n accounts: [\n {\n name: \"withDelegate\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarryMineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"unusedAccount\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"delegateCreateQuarryV2\",\n accounts: [\n {\n name: \"withDelegate\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarryMineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"delegateSetRewardsShare\",\n accounts: [\n {\n name: \"withDelegate\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarryMineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"newShare\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"delegateSetFamine\",\n accounts: [\n {\n name: \"withDelegate\",\n accounts: [\n {\n name: \"operator\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"rewarder\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarryMineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"famineTs\",\n type: \"i64\",\n },\n ],\n },\n ],\n accounts: [\n {\n name: \"Operator\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"base\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"rewarder\",\n type: \"publicKey\",\n },\n {\n name: \"admin\",\n type: \"publicKey\",\n },\n {\n name: \"rateSetter\",\n type: \"publicKey\",\n },\n {\n name: \"quarryCreator\",\n type: \"publicKey\",\n },\n {\n name: \"shareAllocator\",\n type: \"publicKey\",\n },\n {\n name: \"lastModifiedTs\",\n type: \"i64\",\n },\n {\n name: \"generation\",\n type: \"u64\",\n },\n ],\n },\n },\n ],\n errors: [\n {\n code: 6000,\n name: \"Unauthorized\",\n msg: \"Signer is not authorized to perform this action.\",\n },\n {\n code: 6001,\n name: \"PendingAuthorityNotSet\",\n msg: \"Pending authority must be set to the created operator.\",\n },\n {\n code: 6002,\n name: \"OperatorNotRewarderAuthority\",\n msg: \"Operator is not the Rewarder authority.\",\n },\n ],\n};\nexport const QuarryOperatorErrors = generateErrorMap(QuarryOperatorJSON);\n//# sourceMappingURL=quarry_operator.js.map","import { generateErrorMap } from \"@saberhq/anchor-contrib\";\nexport const AnchorQuarryMergeMineIDL = {\n version: \"5.0.2\",\n name: \"quarry_merge_mine\",\n instructions: [\n {\n name: \"newPool\",\n accounts: [\n {\n name: \"pool\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"MergePool\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Mint\",\n path: \"primary_mint\",\n },\n ],\n },\n },\n {\n name: \"primaryMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"replicaMint\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"ReplicaMint\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"MergePool\",\n path: \"pool\",\n },\n ],\n },\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"mintBump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"newPoolV2\",\n accounts: [\n {\n name: \"pool\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"MergePool\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Mint\",\n path: \"primary_mint\",\n },\n ],\n },\n },\n {\n name: \"primaryMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"replicaMint\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"ReplicaMint\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"MergePool\",\n path: \"pool\",\n },\n ],\n },\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"initMergeMiner\",\n accounts: [\n {\n name: \"pool\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"owner\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"MergeMiner\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"MergePool\",\n path: \"pool\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"owner\",\n },\n ],\n },\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"initMergeMinerV2\",\n accounts: [\n {\n name: \"pool\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"owner\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"MergeMiner\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"MergePool\",\n path: \"pool\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"owner\",\n },\n ],\n },\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"initMiner\",\n accounts: [\n {\n name: \"pool\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"mineProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"initMinerV2\",\n accounts: [\n {\n name: \"pool\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"mineProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"stakePrimaryMiner\",\n accounts: [\n {\n name: \"mmOwner\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"mmPrimaryTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"stake\",\n accounts: [\n {\n name: \"pool\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [],\n },\n {\n name: \"stakeReplicaMiner\",\n accounts: [\n {\n name: \"mmOwner\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"replicaMint\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"replicaMintTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"stake\",\n accounts: [\n {\n name: \"pool\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [],\n },\n {\n name: \"unstakePrimaryMiner\",\n accounts: [\n {\n name: \"mmOwner\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"mmPrimaryTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"stake\",\n accounts: [\n {\n name: \"pool\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"unstakeAllReplicaMiner\",\n accounts: [\n {\n name: \"mmOwner\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"replicaMint\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"replicaMintTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"stake\",\n accounts: [\n {\n name: \"pool\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [],\n },\n {\n name: \"withdrawTokens\",\n accounts: [\n {\n name: \"owner\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"pool\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"withdrawMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mmTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenDestination\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"rescueTokens\",\n accounts: [\n {\n name: \"mmOwner\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"mergePool\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"miner\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minerTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"destinationTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarryMineProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"claimRewards\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"mintWrapperProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minter\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewardsTokenMint\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewardsTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"claimFeeTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"stakeTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"stake\",\n accounts: [\n {\n name: \"pool\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [],\n },\n ],\n accounts: [\n {\n name: \"mergePool\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"primaryMint\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"replicaMint\",\n type: \"publicKey\",\n },\n {\n name: \"mmCount\",\n type: \"u64\",\n },\n {\n name: \"totalPrimaryBalance\",\n type: \"u64\",\n },\n {\n name: \"totalReplicaBalance\",\n type: \"u64\",\n },\n {\n name: \"reserved\",\n type: {\n array: [\"u64\", 16],\n },\n },\n ],\n },\n },\n {\n name: \"mergeMiner\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"index\",\n type: \"u64\",\n },\n {\n name: \"primaryBalance\",\n type: \"u64\",\n },\n {\n name: \"replicaBalance\",\n type: \"u64\",\n },\n ],\n },\n },\n ],\n events: [\n {\n name: \"NewMergePoolEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"primaryMint\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"InitMergeMinerEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mm\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"primaryMint\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"InitMinerEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mm\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"miner\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"StakePrimaryEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mm\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"miner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"StakeReplicaEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mm\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"miner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"UnstakePrimaryEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mm\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"miner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"UnstakeReplicaEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mm\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"miner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"WithdrawTokensEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mm\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mint\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"ClaimEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mm\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mint\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"initialBalance\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"endBalance\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n ],\n errors: [\n {\n code: 6000,\n name: \"Unauthorized\",\n msg: \"Unauthorized.\",\n },\n {\n code: 6001,\n name: \"InsufficientBalance\",\n msg: \"Insufficient balance.\",\n },\n {\n code: 6002,\n name: \"InvalidMiner\",\n msg: \"Invalid miner for the given quarry.\",\n },\n {\n code: 6003,\n name: \"CannotWithdrawReplicaMint\",\n msg: \"Cannot withdraw a replica mint.\",\n },\n {\n code: 6004,\n name: \"OutstandingReplicaTokens\",\n msg: \"User must first withdraw from all replica quarries.\",\n },\n {\n code: 6005,\n name: \"ReplicaDecimalsMismatch\",\n msg: \"The replica mint must have the same number of decimals as the primary mint.\",\n },\n {\n code: 6006,\n name: \"ReplicaNonZeroSupply\",\n msg: \"The replica mint must have zero supply.\",\n },\n ],\n};\nexport const QuarryMergeMineJSON = {\n version: \"5.0.2\",\n name: \"quarry_merge_mine\",\n instructions: [\n {\n name: \"newPool\",\n accounts: [\n {\n name: \"pool\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"MergePool\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Mint\",\n path: \"primary_mint\",\n },\n ],\n },\n },\n {\n name: \"primaryMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"replicaMint\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"ReplicaMint\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"MergePool\",\n path: \"pool\",\n },\n ],\n },\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"mintBump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"newPoolV2\",\n accounts: [\n {\n name: \"pool\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"MergePool\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Mint\",\n path: \"primary_mint\",\n },\n ],\n },\n },\n {\n name: \"primaryMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"replicaMint\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"ReplicaMint\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"MergePool\",\n path: \"pool\",\n },\n ],\n },\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"initMergeMiner\",\n accounts: [\n {\n name: \"pool\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"owner\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"MergeMiner\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"MergePool\",\n path: \"pool\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"owner\",\n },\n ],\n },\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"initMergeMinerV2\",\n accounts: [\n {\n name: \"pool\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"owner\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"MergeMiner\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"MergePool\",\n path: \"pool\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n path: \"owner\",\n },\n ],\n },\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"initMiner\",\n accounts: [\n {\n name: \"pool\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"mineProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"initMinerV2\",\n accounts: [\n {\n name: \"pool\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"mineProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"stakePrimaryMiner\",\n accounts: [\n {\n name: \"mmOwner\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"mmPrimaryTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"stake\",\n accounts: [\n {\n name: \"pool\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [],\n },\n {\n name: \"stakeReplicaMiner\",\n accounts: [\n {\n name: \"mmOwner\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"replicaMint\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"replicaMintTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"stake\",\n accounts: [\n {\n name: \"pool\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [],\n },\n {\n name: \"unstakePrimaryMiner\",\n accounts: [\n {\n name: \"mmOwner\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"mmPrimaryTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"stake\",\n accounts: [\n {\n name: \"pool\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"unstakeAllReplicaMiner\",\n accounts: [\n {\n name: \"mmOwner\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"replicaMint\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"replicaMintTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"stake\",\n accounts: [\n {\n name: \"pool\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [],\n },\n {\n name: \"withdrawTokens\",\n accounts: [\n {\n name: \"owner\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"pool\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"withdrawMint\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mmTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenDestination\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"rescueTokens\",\n accounts: [\n {\n name: \"mmOwner\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"mergePool\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"miner\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minerTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"destinationTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"quarryMineProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: \"claimRewards\",\n accounts: [\n {\n name: \"mintWrapper\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"mintWrapperProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"minter\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewardsTokenMint\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewardsTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"claimFeeTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"stakeTokenAccount\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"stake\",\n accounts: [\n {\n name: \"pool\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"mm\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"quarry\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"miner\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"minerVault\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"mineProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n },\n ],\n args: [],\n },\n ],\n accounts: [\n {\n name: \"MergePool\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"primaryMint\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"replicaMint\",\n type: \"publicKey\",\n },\n {\n name: \"mmCount\",\n type: \"u64\",\n },\n {\n name: \"totalPrimaryBalance\",\n type: \"u64\",\n },\n {\n name: \"totalReplicaBalance\",\n type: \"u64\",\n },\n {\n name: \"reserved\",\n type: {\n array: [\"u64\", 16],\n },\n },\n ],\n },\n },\n {\n name: \"MergeMiner\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"index\",\n type: \"u64\",\n },\n {\n name: \"primaryBalance\",\n type: \"u64\",\n },\n {\n name: \"replicaBalance\",\n type: \"u64\",\n },\n ],\n },\n },\n ],\n events: [\n {\n name: \"NewMergePoolEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"primaryMint\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"InitMergeMinerEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mm\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"primaryMint\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"InitMinerEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mm\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"miner\",\n type: \"publicKey\",\n index: false,\n },\n ],\n },\n {\n name: \"StakePrimaryEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mm\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"miner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"StakeReplicaEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mm\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"miner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"UnstakePrimaryEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mm\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"miner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"UnstakeReplicaEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mm\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"miner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"WithdrawTokensEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mm\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mint\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n {\n name: \"ClaimEvent\",\n fields: [\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mm\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"mint\",\n type: \"publicKey\",\n index: false,\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"initialBalance\",\n type: \"u64\",\n index: false,\n },\n {\n name: \"endBalance\",\n type: \"u64\",\n index: false,\n },\n ],\n },\n ],\n errors: [\n {\n code: 6000,\n name: \"Unauthorized\",\n msg: \"Unauthorized.\",\n },\n {\n code: 6001,\n name: \"InsufficientBalance\",\n msg: \"Insufficient balance.\",\n },\n {\n code: 6002,\n name: \"InvalidMiner\",\n msg: \"Invalid miner for the given quarry.\",\n },\n {\n code: 6003,\n name: \"CannotWithdrawReplicaMint\",\n msg: \"Cannot withdraw a replica mint.\",\n },\n {\n code: 6004,\n name: \"OutstandingReplicaTokens\",\n msg: \"User must first withdraw from all replica quarries.\",\n },\n {\n code: 6005,\n name: \"ReplicaDecimalsMismatch\",\n msg: \"The replica mint must have the same number of decimals as the primary mint.\",\n },\n {\n code: 6006,\n name: \"ReplicaNonZeroSupply\",\n msg: \"The replica mint must have zero supply.\",\n },\n ],\n};\nexport const QuarryMergeMineErrors = generateErrorMap(QuarryMergeMineJSON);\n//# sourceMappingURL=quarry_merge_mine.js.map","import { generateErrorMap } from \"@saberhq/anchor-contrib\";\nexport const AnchorQuarryRegistryIDL = {\n version: \"5.0.2\",\n name: \"quarry_registry\",\n instructions: [\n {\n name: \"newRegistry\",\n accounts: [\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"registry\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"AnchorQuarryRegistry\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Rewarder\",\n path: \"rewarder\",\n },\n ],\n },\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"maxQuarries\",\n type: \"u16\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"syncQuarry\",\n accounts: [\n {\n name: \"quarry\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"registry\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [],\n },\n ],\n accounts: [\n {\n name: \"registry\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"rewarder\",\n type: \"publicKey\",\n },\n {\n name: \"tokens\",\n type: {\n vec: \"publicKey\",\n },\n },\n ],\n },\n },\n ],\n};\nexport const QuarryRegistryJSON = {\n version: \"5.0.2\",\n name: \"quarry_registry\",\n instructions: [\n {\n name: \"newRegistry\",\n accounts: [\n {\n name: \"rewarder\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"registry\",\n isMut: true,\n isSigner: false,\n pda: {\n seeds: [\n {\n kind: \"const\",\n type: \"string\",\n value: \"QuarryRegistry\",\n },\n {\n kind: \"account\",\n type: \"publicKey\",\n account: \"Rewarder\",\n path: \"rewarder\",\n },\n ],\n },\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"maxQuarries\",\n type: \"u16\",\n },\n {\n name: \"bump\",\n type: \"u8\",\n },\n ],\n },\n {\n name: \"syncQuarry\",\n accounts: [\n {\n name: \"quarry\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"registry\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [],\n },\n ],\n accounts: [\n {\n name: \"Registry\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"bump\",\n type: \"u8\",\n },\n {\n name: \"rewarder\",\n type: \"publicKey\",\n },\n {\n name: \"tokens\",\n type: {\n vec: \"publicKey\",\n },\n },\n ],\n },\n },\n ],\n};\nexport const QuarryRegistryErrors = generateErrorMap(QuarryRegistryJSON);\n//# sourceMappingURL=quarry_registry.js.map","import { buildCoderMap } from \"@saberhq/anchor-contrib\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport { QuarryMineJSON } from \"./idls/quarry_mine\";\nimport { QuarryMintWrapperJSON } from \"./idls/quarry_mint_wrapper\";\nimport { QuarryRedeemerJSON } from \"./idls/quarry_redeemer\";\nimport { QuarryMergeMineJSON, QuarryOperatorJSON } from \"./programs\";\nimport { QuarryRegistryJSON } from \"./programs/registry\";\n/**\n * Quarry program addresses.\n */\nexport const QUARRY_ADDRESSES = {\n MergeMine: new PublicKey(\"QMMD16kjauP5knBwxNUJRZ1Z5o3deBuFrqVjBVmmqto\"),\n Mine: new PublicKey(\"QMNeHCGYnLVDn1icRAfQZpjPLBNkfGbSKRB83G5d8KB\"),\n MintWrapper: new PublicKey(\"QMWoBmAyJLAsA1Lh9ugMTw2gciTihncciphzdNzdZYV\"),\n Operator: new PublicKey(\"QoP6NfrQbaGnccXQrMLUkog2tQZ4C1RFgJcwDnT8Kmz\"),\n Redeemer: new PublicKey(\"QRDxhMw1P2NEfiw5mYXG79bwfgHTdasY2xNP76XSea9\"),\n Registry: new PublicKey(\"QREGBnEj9Sa5uR91AV8u3FxThgP5ZCvdZUW2bHAkfNc\"),\n};\n/**\n * Quarry program IDLs.\n */\nexport const QUARRY_IDLS = {\n MergeMine: QuarryMergeMineJSON,\n Mine: QuarryMineJSON,\n MintWrapper: QuarryMintWrapperJSON,\n Operator: QuarryOperatorJSON,\n Redeemer: QuarryRedeemerJSON,\n Registry: QuarryRegistryJSON,\n};\n/**\n * Quarry program IDLs.\n */\nexport const QUARRY_CODERS = buildCoderMap(QUARRY_IDLS, QUARRY_ADDRESSES);\n/**\n * Recipient of protocol fees.\n */\nexport const QUARRY_FEE_TO = new PublicKey(\"4MMZH3ih1aSty2nx4MC3kSR94Zb55XsXnqb5jfEcyHWQ\");\n/**\n * Sets the protocol fees.\n */\nexport const QUARRY_FEE_SETTER = new PublicKey(\"4MMZH3ih1aSty2nx4MC3kSR94Zb55XsXnqb5jfEcyHWQ\");\n//# sourceMappingURL=constants.js.map","import { PublicKey } from \"@saberhq/solana-contrib\";\nimport * as BufferLayout from \"@solana/buffer-layout\";\nimport { AccountLayout, MintLayout as TokenMintLayout, u64, } from \"@solana/spl-token\";\nexport { Layout as TypedLayout, Structure as TypedStructure, } from \"@solana/buffer-layout\";\n/**\n * Typed struct buffer layout\n * @param fields\n * @param property\n * @param decodePrefixes\n * @returns\n */\nexport const structLayout = (fields, property, decodePrefixes) => BufferLayout.struct(fields, property, decodePrefixes);\n/**\n * Layout for a public key\n */\nexport const PublicKeyLayout = (property = \"publicKey\") => {\n return BufferLayout.blob(32, property);\n};\n/**\n * Layout for a 64bit unsigned value\n */\nexport const Uint64Layout = (property = \"uint64\") => {\n return BufferLayout.blob(8, property);\n};\n/**\n * Layout for a TokenAccount.\n */\nexport const TokenAccountLayout = AccountLayout;\n/**\n * Layout for a Mint.\n */\nexport const MintLayout = TokenMintLayout;\n/**\n * Deserializes a token account.\n * @param address\n * @param data\n * @returns\n */\nexport const deserializeAccount = (data) => {\n const accountInfo = TokenAccountLayout.decode(data);\n const mint = new PublicKey(accountInfo.mint);\n const owner = new PublicKey(accountInfo.owner);\n const amount = u64.fromBuffer(accountInfo.amount);\n let delegate;\n let delegatedAmount;\n if (accountInfo.delegateOption === 0) {\n delegate = null;\n delegatedAmount = new u64(0);\n }\n else {\n delegate = new PublicKey(accountInfo.delegate);\n delegatedAmount = u64.fromBuffer(accountInfo.delegatedAmount);\n }\n const isInitialized = accountInfo.state !== 0;\n const isFrozen = accountInfo.state === 2;\n let rentExemptReserve;\n let isNative;\n if (accountInfo.isNativeOption === 1) {\n rentExemptReserve = u64.fromBuffer(accountInfo.isNative);\n isNative = true;\n }\n else {\n rentExemptReserve = null;\n isNative = false;\n }\n let closeAuthority;\n if (accountInfo.closeAuthorityOption === 0) {\n closeAuthority = null;\n }\n else {\n closeAuthority = new PublicKey(accountInfo.closeAuthority);\n }\n return {\n mint,\n owner,\n amount,\n delegate,\n delegatedAmount,\n isInitialized,\n isFrozen,\n rentExemptReserve,\n isNative,\n closeAuthority,\n };\n};\n/**\n * Deserialize a {@link Buffer} into a {@link MintInfo}.\n * @param data\n * @returns\n */\nexport const deserializeMint = (data) => {\n if (data.length !== MintLayout.span) {\n throw new Error(\"Not a valid Mint\");\n }\n const mintInfo = MintLayout.decode(data);\n let mintAuthority;\n if (mintInfo.mintAuthorityOption === 0) {\n mintAuthority = null;\n }\n else {\n mintAuthority = new PublicKey(mintInfo.mintAuthority);\n }\n const supply = u64.fromBuffer(mintInfo.supply);\n const isInitialized = mintInfo.isInitialized !== 0;\n let freezeAuthority;\n if (mintInfo.freezeAuthorityOption === 0) {\n freezeAuthority = null;\n }\n else {\n freezeAuthority = new PublicKey(mintInfo.freezeAuthority);\n }\n return {\n mintAuthority,\n supply,\n decimals: mintInfo.decimals,\n isInitialized,\n freezeAuthority,\n };\n};\n//# sourceMappingURL=layout.js.map","/**\n * These types all come from the @solana/spl-token-registry package.\n *\n * We re-export them here so we do not have to have a hard dependency on\n * that package, which is massive.\n */\n/**\n * Chain ID.\n */\nexport var ENV;\n(function (ENV) {\n ENV[ENV[\"MainnetBeta\"] = 101] = \"MainnetBeta\";\n ENV[ENV[\"Testnet\"] = 102] = \"Testnet\";\n ENV[ENV[\"Devnet\"] = 103] = \"Devnet\";\n})(ENV || (ENV = {}));\n//# sourceMappingURL=splTokenRegistry.js.map","var _a;\nimport { PublicKey } from \"@saberhq/solana-contrib\";\nimport { NATIVE_MINT } from \"@solana/spl-token\";\nimport { deserializeMint } from \"./layout.js\";\n/**\n * Magic value representing the raw, underlying Solana native asset.\n */\nexport const RAW_SOL_MINT = new PublicKey(\"RawSo11111111111111111111111111111111111112\");\n/**\n * Token information.\n */\nexport class Token {\n constructor(info) {\n var _b;\n this.info = info;\n this._mintAccount = null;\n this.network = (_b = chainIdToNetwork(info.chainId)) !== null && _b !== void 0 ? _b : \"localnet\";\n }\n /**\n * The mint PublicKey of the token.\n *\n * Avoid using this value to print it to a string, as base58\n * strings are relatively slow to create since they require the use\n * of hash functions.\n */\n get mintAccount() {\n if (this._mintAccount) {\n return this._mintAccount;\n }\n this._mintAccount = new PublicKey(this.info.address);\n return this._mintAccount;\n }\n /**\n * If true, this token represents unwrapped, native, \"raw\" SOL.\n */\n get isRawSOL() {\n return this.mintAccount.equals(RAW_SOL_MINT);\n }\n /**\n * The Base58 string representation of the mint address.\n */\n get address() {\n return this.info.address;\n }\n /**\n * The chain ID of the token.\n */\n get chainId() {\n return this.info.chainId;\n }\n /**\n * Number of decimals of the token.\n */\n get decimals() {\n return this.info.decimals;\n }\n /**\n * The name of the token.\n */\n get name() {\n return this.info.name;\n }\n /**\n * The symbol of the token.\n */\n get symbol() {\n return this.info.symbol;\n }\n /**\n * The token's icon to render.\n */\n get icon() {\n return this.info.logoURI;\n }\n equals(other) {\n return tokensEqual(this, other);\n }\n toString() {\n return `Token[mint=${this.address}, decimals=${this.decimals}, network=${this.network}]`;\n }\n toJSON() {\n return this.info;\n }\n /**\n * Returns true if the given tag is present.\n * @param tag The tag to check.\n * @returns\n */\n hasTag(tag) {\n var _b;\n return !!((_b = this.info.tags) === null || _b === void 0 ? void 0 : _b.includes(tag));\n }\n}\n_a = Token;\n/**\n * Loads a token from a Mint.\n * @param mint\n * @param opts\n * @returns\n */\nToken.fromMint = (mint, decimals, opts = {}) => {\n var _b, _c, _d;\n return new Token({\n ...opts,\n // required\n address: mint.toString(),\n decimals,\n // optional\n name: (_b = opts.name) !== null && _b !== void 0 ? _b : `Token ${mint.toString().slice(0, 4)}`,\n symbol: (_c = opts.symbol) !== null && _c !== void 0 ? _c : mint.toString().slice(0, 5),\n chainId: (_d = opts.chainId) !== null && _d !== void 0 ? _d : ChainId.Localnet,\n });\n};\n/**\n * Loads a token from a Connection.\n *\n * @param connection\n * @param mint\n * @param info\n */\nToken.load = async (connection, mint, info = {}) => {\n if (typeof info.decimals === \"number\") {\n return Token.fromMint(mint, info.decimals, info);\n }\n const mintAccountInfo = await connection.getAccountInfo(mint);\n if (!mintAccountInfo) {\n return null;\n }\n const mintInfo = deserializeMint(mintAccountInfo.data);\n return Token.fromMint(mint, mintInfo.decimals, info);\n};\n/**\n * Checks if two tokens are equal.\n * @param a\n * @param b\n * @returns\n */\nexport const tokensEqual = (a, b) => a !== undefined &&\n b !== undefined &&\n a.address === b.address &&\n a.network === b.network;\nconst rawSol = {\n address: RAW_SOL_MINT.toString(),\n name: \"Solana\",\n symbol: \"SOL\",\n decimals: 9,\n logoURI: \"https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png\",\n};\nconst wrappedSol = {\n address: NATIVE_MINT.toString(),\n name: \"Wrapped SOL\",\n symbol: \"SOL\",\n decimals: 9,\n logoURI: \"https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png\",\n};\n/**\n * Creates a Token for all networks.\n */\nexport const makeTokenForAllNetworks = (token) => ({\n \"mainnet-beta\": new Token({ ...token, chainId: ChainId.MainnetBeta }),\n devnet: new Token({ ...token, chainId: ChainId.Devnet }),\n testnet: new Token({ ...token, chainId: ChainId.Testnet }),\n localnet: new Token({ ...token, chainId: ChainId.Localnet }),\n});\n// comes from @solana/spl-token-registry, except we've added localnet\nexport var ChainId;\n(function (ChainId) {\n ChainId[ChainId[\"MainnetBeta\"] = 101] = \"MainnetBeta\";\n ChainId[ChainId[\"Testnet\"] = 102] = \"Testnet\";\n ChainId[ChainId[\"Devnet\"] = 103] = \"Devnet\";\n ChainId[ChainId[\"Localnet\"] = 104] = \"Localnet\";\n})(ChainId || (ChainId = {}));\nexport const NETWORK_TO_CHAIN_ID = {\n \"mainnet-beta\": ChainId.MainnetBeta,\n devnet: ChainId.Devnet,\n testnet: ChainId.Testnet,\n localnet: 104,\n};\nexport const CHAIN_ID_TO_NETWORK = Object.entries(NETWORK_TO_CHAIN_ID).reduce((acc, [network, env]) => ({ ...acc, [env]: network }), {});\n/**\n * Gets the chain id associated with a network.\n * @param network\n * @returns\n */\nexport const networkToChainId = (network) => NETWORK_TO_CHAIN_ID[network];\n/**\n * Gets the Network associated with a chain id.\n * @param network\n * @returns\n */\nexport const chainIdToNetwork = (env) => CHAIN_ID_TO_NETWORK[env];\n/**\n * Raw Solana token.\n *\n * This is a magic value. This is not a real token.\n */\nexport const RAW_SOL = makeTokenForAllNetworks(rawSol);\n/**\n * Wrapped Solana token.\n */\nexport const WRAPPED_SOL = makeTokenForAllNetworks(wrappedSol);\n//# sourceMappingURL=token.js.map","import { u64 } from \"@solana/spl-token\";\nimport { parseAmountFromString, parseBigintIsh, TokenAmount as UTokenAmount, validateU64, } from \"@ubeswap/token-math\";\nimport BN from \"bn.js\";\nexport class TokenAmount extends UTokenAmount {\n // amount _must_ be raw, i.e. in the native representation\n constructor(token, amount) {\n super(token, amount, validateU64);\n }\n new(token, amount) {\n // unsafe but nobody will be extending this anyway probably\n return new TokenAmount(token, amount);\n }\n /**\n * Parses a token amount from a decimal representation.\n * @param token\n * @param uiAmount\n * @returns\n */\n static parse(token, uiAmount) {\n const prev = parseAmountFromString(token, uiAmount, \".\", \",\");\n return new TokenAmount(token, prev);\n }\n /**\n * Divides this TokenAmount by a raw integer.\n * @param other\n * @returns\n */\n divideByInteger(other) {\n return new TokenAmount(this.token, this.toU64().div(new BN(parseBigintIsh(other).toString())));\n }\n /**\n * String representation of this token amount.\n */\n toString() {\n return `TokenAmount[Token=(${this.token.toString()}), amount=${this.toExact()}`;\n }\n /**\n * JSON representation of the token amount.\n */\n toJSON() {\n return {\n ...super.toJSON(),\n _isTA: true,\n mint: this.token.address,\n uiAmount: this.toExact(),\n };\n }\n /**\n * Converts this to the raw u64 used by the SPL library\n * @returns\n */\n toU64() {\n return new u64(this.raw.toString());\n }\n}\n//# sourceMappingURL=tokenAmount.js.map","/**\n * This file is a port of serum-common, which was built for web3.js 0.x.\n */\nimport { Token as SPLToken, TOKEN_PROGRAM_ID } from \"@solana/spl-token\";\nimport { Keypair, PublicKey, SystemProgram, Transaction, } from \"@solana/web3.js\";\nimport { deserializeAccount, deserializeMint, MintLayout, Token, } from \"./index.js\";\nexport * as token from \"./token.js\";\n/**\n * Default number of decimals of a token.\n */\nexport const DEFAULT_TOKEN_DECIMALS = 6;\nexport const SPL_SHARED_MEMORY_ID = new PublicKey(\"shmem4EWT2sPdVGvTZCzXXRAURL9G5vpPxNwSeKhHUL\");\nexport async function createMint(provider, authority, decimals) {\n if (authority === undefined) {\n authority = provider.wallet.publicKey;\n }\n const mint = Keypair.generate();\n const instructions = await createMintInstructions(provider, authority, mint.publicKey, decimals);\n const tx = new Transaction();\n tx.add(...instructions);\n await provider.send(tx, [mint]);\n return mint.publicKey;\n}\n/**\n * Creates a Token.\n *\n * @param provider\n * @param authority The mint authority.\n * @param decimals Number of decimals.\n * @returns\n */\nexport async function createToken(provider, authority, decimals = 6) {\n return Token.fromMint(await createMint(provider, authority, decimals), decimals);\n}\nexport async function createMintInstructions(provider, authority, mint, decimals = 6) {\n const instructions = [\n SystemProgram.createAccount({\n fromPubkey: provider.wallet.publicKey,\n newAccountPubkey: mint,\n space: MintLayout.span,\n lamports: await provider.connection.getMinimumBalanceForRentExemption(MintLayout.span),\n programId: TOKEN_PROGRAM_ID,\n }),\n SPLToken.createInitMintInstruction(TOKEN_PROGRAM_ID, mint, decimals, authority, null),\n ];\n return instructions;\n}\nexport async function createMintAndVault(provider, amount, owner, decimals) {\n if (owner === undefined) {\n owner = provider.wallet.publicKey;\n }\n const mint = Keypair.generate();\n const vault = Keypair.generate();\n const tx = new Transaction();\n tx.add(...(await createMintInstructions(provider, provider.wallet.publicKey, mint.publicKey, decimals)), SystemProgram.createAccount({\n fromPubkey: provider.wallet.publicKey,\n newAccountPubkey: vault.publicKey,\n space: 165,\n lamports: await provider.connection.getMinimumBalanceForRentExemption(165),\n programId: TOKEN_PROGRAM_ID,\n }), SPLToken.createInitAccountInstruction(TOKEN_PROGRAM_ID, mint.publicKey, vault.publicKey, owner), SPLToken.createMintToInstruction(TOKEN_PROGRAM_ID, mint.publicKey, vault.publicKey, provider.wallet.publicKey, [], amount));\n await provider.send(tx, [mint, vault]);\n return [mint.publicKey, vault.publicKey];\n}\nexport async function createTokenAccountInstrs(provider, newAccountPubkey, mint, owner, lamports) {\n if (lamports === undefined) {\n lamports = await provider.connection.getMinimumBalanceForRentExemption(165);\n }\n return [\n SystemProgram.createAccount({\n fromPubkey: provider.wallet.publicKey,\n newAccountPubkey,\n space: 165,\n lamports,\n programId: TOKEN_PROGRAM_ID,\n }),\n SPLToken.createInitAccountInstruction(TOKEN_PROGRAM_ID, mint, newAccountPubkey, owner),\n ];\n}\nexport async function createAccountRentExempt(provider, programId, size) {\n const acc = Keypair.generate();\n const tx = new Transaction();\n tx.add(SystemProgram.createAccount({\n fromPubkey: provider.wallet.publicKey,\n newAccountPubkey: acc.publicKey,\n space: size,\n lamports: await provider.connection.getMinimumBalanceForRentExemption(size),\n programId,\n }));\n await provider.send(tx, [acc]);\n return acc;\n}\nexport async function getMintInfo(provider, addr) {\n const depositorAccInfo = await provider.getAccountInfo(addr);\n if (depositorAccInfo === null) {\n throw new Error(\"Failed to find token mint account\");\n }\n return deserializeMint(depositorAccInfo.accountInfo.data);\n}\nexport async function getTokenAccount(provider, addr) {\n const depositorAccInfo = await provider.getAccountInfo(addr);\n if (depositorAccInfo === null) {\n throw new Error(\"Failed to find token account\");\n }\n return deserializeAccount(depositorAccInfo.accountInfo.data);\n}\nexport function sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n//# sourceMappingURL=common.js.map","import { MAX_U64 } from \"@saberhq/token-utils\";\nimport BN from \"bn.js\";\nexport const ZERO = new BN(0);\nexport const BASE_TEN = new BN(10);\nexport const MAX_U64_BN = new BN(MAX_U64.toString());\nexport const SECONDS_PER_YEAR = new BN(365 * 86400);\nexport class Payroll {\n constructor(famineTs, lastCheckpointTs, annualRewardsRate, rewardsPerTokenStored, totalTokensDeposited) {\n this.famineTs = famineTs;\n this.lastCheckpointTs = lastCheckpointTs;\n this.annualRewardsRate = annualRewardsRate;\n this.rewardsPerTokenStored = rewardsPerTokenStored;\n this.totalTokensDeposited = totalTokensDeposited;\n }\n /**\n * Calculates the amount of tokens that this user can receive.\n * @param currentTs\n * @returns\n */\n calculateRewardPerToken(currentTs) {\n if (this.totalTokensDeposited.isZero()) {\n return this.rewardsPerTokenStored;\n }\n const lastTimeRewardsApplicable = BN.min(currentTs, this.famineTs);\n const timeWorked = BN.max(ZERO, lastTimeRewardsApplicable.sub(this.lastCheckpointTs));\n const reward = timeWorked\n .mul(MAX_U64_BN)\n .mul(this.annualRewardsRate)\n .div(SECONDS_PER_YEAR)\n .div(this.totalTokensDeposited);\n return this.rewardsPerTokenStored.add(reward);\n }\n /**\n * Calculates the amount of tokens that this user can claim.\n * @param currentTs\n * @param tokensDeposited\n * @param rewardsPerTokenPaid\n * @param rewardsEarned\n * @returns\n */\n calculateRewardsEarned(currentTs, tokensDeposited, rewardsPerTokenPaid, rewardsEarned) {\n const netNewRewards = this.calculateRewardPerToken(currentTs).sub(rewardsPerTokenPaid);\n const earnedRewards = tokensDeposited.mul(netNewRewards).div(MAX_U64_BN);\n return earnedRewards.add(rewardsEarned);\n }\n}\n//# sourceMappingURL=payroll.js.map","// src/instructions/lending/borrowObligationLiquidity.ts\nimport {\n SYSVAR_CLOCK_PUBKEY,\n TransactionInstruction\n} from \"@solana/web3.js\";\nimport { TOKEN_PROGRAM_ID } from \"@solana/spl-token\";\nimport * as BufferLayout2 from \"@solana/buffer-layout\";\n\n// src/serialization/layout.ts\nimport { PublicKey } from \"@solana/web3.js\";\nimport * as BufferLayout from \"@solana/buffer-layout\";\nimport BN from \"bn.js\";\nvar publicKey = (property) => {\n const publicKeyLayout = BufferLayout.blob(\n 32,\n property\n );\n const _decode = publicKeyLayout.decode.bind(publicKeyLayout);\n const _encode = publicKeyLayout.encode.bind(publicKeyLayout);\n publicKeyLayout.decode = (buffer, offset) => {\n const data = _decode(buffer, offset);\n return new PublicKey(data);\n };\n publicKeyLayout.encode = (key, buffer, offset) => {\n return _encode(key.toBuffer(), buffer, offset);\n };\n return publicKeyLayout;\n};\nvar uint64 = (property = \"uint64\") => {\n return _uint(8, property);\n};\nvar uint128 = (property = \"uint128\") => {\n return _uint(16, property);\n};\nvar _uint = (length, property) => {\n const layout = BufferLayout.blob(length, property);\n const _decode = layout.decode.bind(layout);\n const _encode = layout.encode.bind(layout);\n layout.decode = (buffer, offset) => {\n const data = _decode(buffer, offset);\n return new BN(\n [...data].reverse().map((i) => `00${i.toString(16)}`.slice(-2)).join(\"\"),\n 16\n );\n };\n layout.encode = (num, buffer, offset) => {\n const a = num.toArray().reverse();\n let b = Buffer.from(a);\n if (b.length !== length) {\n const zeroPad = Buffer.alloc(length);\n b.copy(zeroPad);\n b = zeroPad;\n }\n return _encode(b, buffer, offset);\n };\n return layout;\n};\n\n// src/utils/Instructions.ts\nfunction getAccess(key, type) {\n switch (type) {\n case 1 /* READ */:\n return { pubkey: key, isSigner: false, isWritable: false };\n case 2 /* WRITE */:\n return { pubkey: key, isSigner: false, isWritable: true };\n case 3 /* SIGNER */:\n return { pubkey: key, isSigner: true, isWritable: false };\n default:\n throw new Error(`Unknown access type ${type}`);\n }\n}\n\n// src/instructions/lending/borrowObligationLiquidity.ts\nimport BN2 from \"bn.js\";\n\n// src/constants.ts\nimport { PublicKey as PublicKey2 } from \"@solana/web3.js\";\n\n// src/models/QuantityContext.ts\nimport Big from \"big.js\";\nvar QuantityContext = class {\n constructor(decimals, increment) {\n this.decimals = decimals;\n this.multiplier = increment;\n }\n static fromDecimals(decimals) {\n console.assert(Number.isInteger(decimals));\n console.assert(decimals >= 0);\n return new QuantityContext(decimals, new Big(10).pow(decimals));\n }\n};\n\n// src/constants.ts\nvar PORT_LENDING = new PublicKey2(\n \"Port7uDYB3wk6GJAw4KT1WpTeMtSu9bTcChBHkX2LfR\"\n);\nvar PORT_STAKING = new PublicKey2(\n \"stkarvwmSzv2BygN5e2LeTwimTczLWHCKPKGC2zVLiq\"\n);\nvar DEFAULT_PORT_LENDING_MARKET = new PublicKey2(\n \"6T4XxKerq744sSuj3jaoV6QiZ8acirf4TrPwQzHAoSy5\"\n);\nvar PORT_QUANTITY_CONTEXT = QuantityContext.fromDecimals(6);\nvar MARKET_MAP = {\n H27Quk3DSbu55T4dCr1NddTTSAezXwHU67FPCZVKLhSW: \"dev market\",\n \"6T4XxKerq744sSuj3jaoV6QiZ8acirf4TrPwQzHAoSy5\": \"prod market\"\n};\n\n// src/instructions/lending/borrowObligationLiquidity.ts\nvar borrowObligationLiquidityInstruction = (liquidityAmount, srcLiquidityPubkey, dstLiquidityPubkey, borrowReservePubkey, borrowReserveFeeReceiverPubkey, obligationPubkey, lendingMarketPubkey, marketAuthorityPubkey, obligationOwner, lendingProgramId = PORT_LENDING) => {\n const dataLayout = BufferLayout2.struct([\n BufferLayout2.u8(\"instruction\"),\n uint64(\"liquidityAmount\")\n ]);\n const data = Buffer.alloc(dataLayout.span);\n dataLayout.encode(\n {\n instruction: 10 /* BorrowObligationLiquidity */,\n liquidityAmount: new BN2(liquidityAmount)\n },\n data\n );\n const keys = [\n getAccess(srcLiquidityPubkey, 2 /* WRITE */),\n getAccess(dstLiquidityPubkey, 2 /* WRITE */),\n getAccess(borrowReservePubkey, 2 /* WRITE */),\n getAccess(borrowReserveFeeReceiverPubkey, 2 /* WRITE */),\n getAccess(obligationPubkey, 2 /* WRITE */),\n getAccess(lendingMarketPubkey, 1 /* READ */),\n getAccess(marketAuthorityPubkey, 1 /* READ */),\n getAccess(obligationOwner, 3 /* SIGNER */),\n getAccess(SYSVAR_CLOCK_PUBKEY, 1 /* READ */),\n getAccess(TOKEN_PROGRAM_ID, 1 /* READ */)\n ];\n return new TransactionInstruction({\n keys,\n programId: lendingProgramId,\n data\n });\n};\n\n// src/instructions/lending/depositObligationCollateral.ts\nimport {\n SYSVAR_CLOCK_PUBKEY as SYSVAR_CLOCK_PUBKEY2,\n TransactionInstruction as TransactionInstruction2\n} from \"@solana/web3.js\";\nimport { TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID2 } from \"@solana/spl-token\";\nimport * as BufferLayout3 from \"@solana/buffer-layout\";\nimport BN3 from \"bn.js\";\nvar depositObligationCollateralInstruction = (collateralAmount, srcCollateralPubkey, dstCollateralPubkey, depositReservePubkey, obligationPubkey, lendingMarketPubkey, marketAuthorityPubkey, obligationOwnerPubkey, transferAuthorityPubkey, lendingProgramId = PORT_LENDING, stakeAccountPubkey, stakingPoolPubkey) => {\n const dataLayout = BufferLayout3.struct([\n BufferLayout3.u8(\"instruction\"),\n uint64(\"collateralAmount\")\n ]);\n const data = Buffer.alloc(dataLayout.span);\n dataLayout.encode(\n {\n instruction: 8 /* DepositObligationCollateral */,\n collateralAmount: new BN3(collateralAmount)\n },\n data\n );\n const keys = [\n getAccess(srcCollateralPubkey, 2 /* WRITE */),\n getAccess(dstCollateralPubkey, 2 /* WRITE */),\n getAccess(depositReservePubkey, 1 /* READ */),\n getAccess(obligationPubkey, 2 /* WRITE */),\n getAccess(lendingMarketPubkey, 1 /* READ */),\n getAccess(marketAuthorityPubkey, 1 /* READ */),\n getAccess(obligationOwnerPubkey, 3 /* SIGNER */),\n getAccess(transferAuthorityPubkey, 3 /* SIGNER */),\n getAccess(SYSVAR_CLOCK_PUBKEY2, 1 /* READ */),\n getAccess(TOKEN_PROGRAM_ID2, 1 /* READ */)\n ];\n if (stakeAccountPubkey && stakingPoolPubkey) {\n keys.push(\n getAccess(stakeAccountPubkey, 2 /* WRITE */),\n getAccess(stakingPoolPubkey, 2 /* WRITE */),\n getAccess(PORT_STAKING, 1 /* READ */)\n );\n }\n return new TransactionInstruction2({\n keys,\n programId: lendingProgramId,\n data\n });\n};\n\n// src/instructions/lending/depositReserveLiquidity.ts\nimport {\n SYSVAR_CLOCK_PUBKEY as SYSVAR_CLOCK_PUBKEY3,\n TransactionInstruction as TransactionInstruction3\n} from \"@solana/web3.js\";\nimport * as BufferLayout4 from \"@solana/buffer-layout\";\nimport { TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID3 } from \"@solana/spl-token\";\nimport BN4 from \"bn.js\";\nvar depositReserveLiquidityInstruction = (liquidityAmount, srcLiquidityPubkey, dstCollateralPubkey, reservePubkey, reserveLiquiditySupplyPubkey, reserveCollateralMintPubkey, lendingMarketPubkey, lendingMarketAuthorityPubkey, transferAuthorityPubkey, lendingProgramId = PORT_LENDING) => {\n const dataLayout = BufferLayout4.struct([\n BufferLayout4.u8(\"instruction\"),\n uint64(\"liquidityAmount\")\n ]);\n const data = Buffer.alloc(dataLayout.span);\n dataLayout.encode(\n {\n instruction: 4 /* DepositReserveLiquidity */,\n liquidityAmount: new BN4(liquidityAmount)\n },\n data\n );\n const keys = [\n getAccess(srcLiquidityPubkey, 2 /* WRITE */),\n getAccess(dstCollateralPubkey, 2 /* WRITE */),\n getAccess(reservePubkey, 2 /* WRITE */),\n getAccess(reserveLiquiditySupplyPubkey, 2 /* WRITE */),\n getAccess(reserveCollateralMintPubkey, 2 /* WRITE */),\n getAccess(lendingMarketPubkey, 1 /* READ */),\n getAccess(lendingMarketAuthorityPubkey, 1 /* READ */),\n getAccess(transferAuthorityPubkey, 3 /* SIGNER */),\n getAccess(SYSVAR_CLOCK_PUBKEY3, 1 /* READ */),\n getAccess(TOKEN_PROGRAM_ID3, 1 /* READ */)\n ];\n return new TransactionInstruction3({\n keys,\n programId: lendingProgramId,\n data\n });\n};\n\n// src/instructions/lending/redeemReserveCollateral.ts\nimport {\n SYSVAR_CLOCK_PUBKEY as SYSVAR_CLOCK_PUBKEY4,\n TransactionInstruction as TransactionInstruction4\n} from \"@solana/web3.js\";\nimport BN5 from \"bn.js\";\nimport * as BufferLayout5 from \"@solana/buffer-layout\";\nimport { TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID4 } from \"@solana/spl-token\";\nvar redeemReserveCollateralInstruction = (collateralAmount, sourceCollateral, destinationLiquidity, reserve, reserveCollateralMint, reserveLiquiditySupply, lendingMarket, lendingMarketAuthority, transferAuthority, lendingProgramId = PORT_LENDING) => {\n const dataLayout = BufferLayout5.struct([\n BufferLayout5.u8(\"instruction\"),\n uint64(\"collateralAmount\")\n ]);\n const data = Buffer.alloc(dataLayout.span);\n dataLayout.encode(\n {\n instruction: 5 /* RedeemReserveCollateral */,\n collateralAmount: new BN5(collateralAmount)\n },\n data\n );\n const keys = [\n getAccess(sourceCollateral, 2 /* WRITE */),\n getAccess(destinationLiquidity, 2 /* WRITE */),\n getAccess(reserve, 2 /* WRITE */),\n getAccess(reserveCollateralMint, 2 /* WRITE */),\n getAccess(reserveLiquiditySupply, 2 /* WRITE */),\n getAccess(lendingMarket, 1 /* READ */),\n getAccess(lendingMarketAuthority, 1 /* READ */),\n getAccess(transferAuthority, 3 /* SIGNER */),\n getAccess(SYSVAR_CLOCK_PUBKEY4, 1 /* READ */),\n getAccess(TOKEN_PROGRAM_ID4, 1 /* READ */)\n ];\n return new TransactionInstruction4({\n keys,\n programId: lendingProgramId,\n data\n });\n};\n\n// src/instructions/lending/refreshReserve.ts\nimport {\n SYSVAR_CLOCK_PUBKEY as SYSVAR_CLOCK_PUBKEY5,\n TransactionInstruction as TransactionInstruction5\n} from \"@solana/web3.js\";\nimport * as BufferLayout6 from \"@solana/buffer-layout\";\nvar DataLayout = BufferLayout6.struct([BufferLayout6.u8(\"instruction\")]);\nvar refreshReserveInstruction = (reserve, oracle, lendingProgramId = PORT_LENDING) => {\n const data = Buffer.alloc(DataLayout.span);\n DataLayout.encode({ instruction: 3 /* RefreshReserve */ }, data);\n const keys = [\n getAccess(reserve, 2 /* WRITE */),\n getAccess(SYSVAR_CLOCK_PUBKEY5, 1 /* READ */)\n ];\n if (oracle) {\n keys.push(getAccess(oracle, 1 /* READ */));\n }\n return new TransactionInstruction5({\n keys,\n programId: lendingProgramId,\n data\n });\n};\n\n// src/models/basic/Comparable.ts\nvar Comparable = class {\n eq(that) {\n if (!that) {\n return false;\n }\n return this.checkAndCompare(that) === 0;\n }\n lt(that) {\n if (!that) {\n return false;\n }\n return this.checkAndCompare(that) < 0;\n }\n lte(that) {\n if (!that) {\n return false;\n }\n return this.checkAndCompare(that) <= 0;\n }\n gt(that) {\n if (!that) {\n return false;\n }\n return this.checkAndCompare(that) > 0;\n }\n gte(that) {\n if (!that) {\n return false;\n }\n return this.checkAndCompare(that) >= 0;\n }\n checkCompatible(that) {\n console.assert(this.isCompatibleWith(that));\n }\n checkAndCompare(that) {\n this.checkCompatible(that);\n return this.compare(that);\n }\n};\n\n// src/models/basic/Decimal.ts\nimport Big4 from \"big.js\";\n\n// src/serialization/Field.ts\nimport * as BufferLayout7 from \"@solana/buffer-layout\";\nvar Field = class extends BufferLayout7.Layout {\n};\n\n// src/serialization/BigField.ts\nimport Big2 from \"big.js\";\nvar BigField = class extends Field {\n constructor(type, property) {\n super(type.getBytes(), property);\n this.type = type;\n }\n static forType(type, property) {\n return new BigField(type, property);\n }\n decode(b, offset) {\n const bn = this.type.getLayout().decode(b, offset);\n const big = new Big2(bn.toString());\n const multiplier = this.type.getMultiplier();\n if (!multiplier) {\n return big;\n }\n return big.div(multiplier);\n }\n};\n\n// src/models/basic/Numerical.ts\nimport Big3 from \"big.js\";\nvar _Numerical = class extends Comparable {\n constructor() {\n super();\n }\n static sum(a, b) {\n return a.add(b);\n }\n min(that) {\n this.checkCompatible(that);\n if (this.getRaw().lte(that.getRaw())) {\n return this.replaceWithValue(this.getRaw());\n }\n return this.replaceWithValue(that.getRaw());\n }\n max(that) {\n this.checkCompatible(that);\n if (this.getRaw().gte(that.getRaw())) {\n return this.replaceWithValue(this.getRaw());\n }\n return this.replaceWithValue(that.getRaw());\n }\n add(that) {\n this.checkCompatible(that);\n return this.replaceWithValue(this.getRaw().add(that.getRaw()));\n }\n subtract(that) {\n this.checkCompatible(that);\n return this.replaceWithValue(this.getRaw().sub(that.getRaw()));\n }\n multiply(pct) {\n return this.replaceWithValue(this.getRaw().mul(pct));\n }\n divide(pct) {\n return this.replaceWithValue(this.getRaw().div(pct));\n }\n compare(that) {\n return this.compareRaw(that.getRaw());\n }\n isZero() {\n return this.getSignum() === 0;\n }\n isPositive() {\n return this.getSignum() > 0;\n }\n isNegative() {\n return this.getSignum() < 0;\n }\n getSignum() {\n return this.compareRaw(_Numerical.BIG_ZERO);\n }\n compareRaw(raw) {\n return this.getRaw().cmp(raw);\n }\n};\nvar Numerical = _Numerical;\nNumerical.BIG_ZERO = new Big3(0);\n\n// src/models/basic/Decimal.ts\nvar Decimal = class extends Numerical {\n constructor(raw) {\n super();\n this.raw = new Big4(raw);\n }\n getRaw() {\n return this.raw;\n }\n isCompatibleWith(that) {\n return true;\n }\n};\nvar DecimalField = class extends Field {\n constructor(type, property) {\n super(type.getBytes(), property);\n this.delegate = BigField.forType(type, property);\n }\n decode(b, offset) {\n return this.fromBig(this.delegate.decode(b, offset));\n }\n};\n\n// src/models/basic/Id.ts\nimport { PublicKey as PublicKey8 } from \"@solana/web3.js\";\nvar Id = class extends PublicKey8 {\n getAccess(type) {\n return getAccess(this, type);\n }\n};\n\n// src/models/basic/Lamport.ts\nimport { u64 } from \"@solana/spl-token\";\nvar _Lamport = class extends Decimal {\n constructor(raw) {\n super(raw);\n }\n static zero() {\n return _Lamport.ZERO;\n }\n static max() {\n return _Lamport.MAX;\n }\n static of(raw) {\n return new _Lamport(raw);\n }\n static field(type, property) {\n return new LamportField(type, property);\n }\n isTrivial() {\n return this.lt(_Lamport.ONE);\n }\n isMax() {\n return this.eq(_Lamport.MAX);\n }\n toU64() {\n return new u64(this.raw.toFixed(0, 0));\n }\n replaceWithValue(value) {\n return _Lamport.of(value);\n }\n};\nvar Lamport = _Lamport;\nLamport.ZERO = new _Lamport(0);\nLamport.ONE = new _Lamport(1);\nLamport.MAX = new _Lamport(\"18446744073709551615\");\nvar LamportField = class extends DecimalField {\n constructor(type, property) {\n super(type, property);\n }\n fromBig(big) {\n return Lamport.of(big);\n }\n};\n\n// src/models/basic/Percentage.ts\nimport Big6 from \"big.js\";\n\n// src/serialization/BigType.ts\nimport Big5 from \"big.js\";\nimport * as BufferLayout9 from \"@solana/buffer-layout\";\n\n// src/serialization/BlobField.ts\nimport * as BufferLayout8 from \"@solana/buffer-layout\";\nvar BlobField = class extends Field {\n constructor(span, property) {\n super(span, property);\n this.delegate = new BufferLayout8.Blob(span, property);\n }\n decode(b, offset) {\n const blob4 = this.delegate.decode(b, offset);\n return this.fromBuffer(blob4);\n }\n};\n\n// src/serialization/UIntField.ts\nimport BN6 from \"bn.js\";\nvar UintField = class extends BlobField {\n constructor(bytes, property) {\n super(bytes, property);\n }\n fromBuffer(buffer) {\n return new BN6(\n [...buffer].reverse().map((i) => `00${i.toString(16)}`.slice(-2)).join(\"\"),\n 16\n );\n }\n};\n\n// src/serialization/BigType.ts\nvar _BigType = class {\n constructor(bytes, multiplier) {\n this.bytes = bytes;\n this.multiplier = multiplier;\n }\n getLayout() {\n if (this.bytes === 1) {\n return BufferLayout9.u8();\n }\n if (this.bytes === 2) {\n return BufferLayout9.u16();\n }\n if (this.bytes === 3) {\n return BufferLayout9.u24();\n }\n if (this.bytes === 4) {\n return BufferLayout9.u32();\n }\n return new UintField(this.bytes);\n }\n getBytes() {\n return this.bytes;\n }\n getMultiplier() {\n return this.multiplier;\n }\n};\nvar BigType = _BigType;\nBigType.WAD = new Big5(10).pow(18);\nBigType.U8 = new _BigType(1);\nBigType.U16 = new _BigType(2);\nBigType.U32 = new _BigType(4);\nBigType.U64 = new _BigType(8);\nBigType.U128 = new _BigType(16);\nBigType.D64 = new _BigType(8, _BigType.WAD);\nBigType.D128 = new _BigType(16, _BigType.WAD);\n\n// src/models/basic/Percentage.ts\nvar _Percentage = class extends Decimal {\n constructor(value) {\n super(value);\n }\n static zero() {\n return _Percentage.PCT_ZERO;\n }\n static hundred() {\n return _Percentage.PCT_HUNDRED;\n }\n static fromOneBased(oneBased) {\n return _Percentage.fromRaw(oneBased, false);\n }\n static fromHundredBased(hundredBased) {\n return _Percentage.fromRaw(hundredBased, true);\n }\n static fromRaw(raw, isHundredBased) {\n const big = new Big6(raw);\n if (!isHundredBased) {\n return new _Percentage(big);\n }\n return new _Percentage(big.div(100));\n }\n static field(property) {\n return new PercentageField(true, property);\n }\n isTrivial() {\n return this.lt(_Percentage.PCT_BIP);\n }\n isHundredPct() {\n return this.eq(_Percentage.PCT_HUNDRED);\n }\n toOneBasedNumber(dp) {\n return this.raw.round(dp).toNumber();\n }\n toHundredBasedNumber(dp) {\n return this.raw.mul(100).round(dp, 0).toNumber();\n }\n print() {\n if (this.gt(_Percentage.PCT_THOUSAND)) {\n return this.raw.round(1, 1).toString() + \"x\";\n }\n return this.raw.mul(100).round(2, 1).toString() + \"%\";\n }\n replaceWithValue(value) {\n return new _Percentage(value);\n }\n};\nvar Percentage = _Percentage;\nPercentage.PCT_BIP = new _Percentage(1e-4);\nPercentage.PCT_ZERO = new _Percentage(0);\nPercentage.PCT_HUNDRED = new _Percentage(1);\nPercentage.PCT_THOUSAND = new _Percentage(10);\nvar PercentageField = class extends DecimalField {\n constructor(isHundredBased, property) {\n super(BigType.U8, property);\n this.isHundredBased = isHundredBased;\n }\n fromBig(big) {\n return Percentage.fromRaw(big, this.isHundredBased);\n }\n};\n\n// src/models/basic/Ratio.ts\nvar Ratio = class extends Comparable {\n constructor(pct) {\n super();\n this.pct = pct;\n }\n isTrivial() {\n const pct = this.getPct();\n return !pct || pct.isTrivial();\n }\n isPresent() {\n return !!this.pct;\n }\n isPositive() {\n return !!this.getPct()?.isPositive();\n }\n isNegative() {\n return !!this.getPct()?.isNegative();\n }\n getUnchecked() {\n if (!this.pct) {\n throw new Error(\"No value available\");\n }\n return this.pct.getRaw();\n }\n getPct() {\n return this.pct;\n }\n print() {\n return !this.pct ? \"--\" : this.pct.print();\n }\n compare(that) {\n const thisPct = this.getPct();\n const thatPct = that.getPct();\n if (!thisPct || !thatPct) {\n return 0;\n }\n return thisPct.compare(thatPct);\n }\n toString() {\n return this.print();\n }\n};\n\n// src/models/basic/WrappedDecimal.ts\nvar WrappedDecimal = class extends Numerical {\n constructor(wrapped) {\n super();\n this.wrapped = wrapped;\n }\n getRaw() {\n return this.getWrapped().getRaw();\n }\n getWrapped() {\n return this.wrapped;\n }\n replaceWithValue(value) {\n return this.wrap(this.getWrapped().replaceWithValue(value));\n }\n};\n\n// src/models/basic/WrappedLamport.ts\nvar WrappedLamport = class extends WrappedDecimal {\n isMax() {\n return this.getWrapped().isMax();\n }\n toU64() {\n return this.getAmount().toU64();\n }\n getAmount() {\n return this.getWrapped();\n }\n};\n\n// src/models/basic/Token.ts\nvar Token = class extends WrappedLamport {\n constructor(mintId, lamport) {\n super(lamport);\n this.mintId = mintId;\n }\n isNative() {\n return this.getMintId().isNative();\n }\n getMintId() {\n return this.mintId;\n }\n isCompatibleWith(that) {\n return this.mintId.equals(that.mintId);\n }\n};\n\n// src/models/staking/StakingPoolId.ts\nimport { PublicKey as PublicKey10 } from \"@solana/web3.js\";\n\n// src/serialization/PublicKeyField.ts\nimport { MAX_SEED_LENGTH, PublicKey as PublicKey9 } from \"@solana/web3.js\";\nvar PublicKeyField = class extends BlobField {\n constructor(property) {\n super(MAX_SEED_LENGTH, property);\n }\n fromBuffer(buffer) {\n return this.fromPublicKey(new PublicKey9(buffer));\n }\n};\n\n// src/models/staking/StakingPoolId.ts\nvar StakingPoolId = class extends Id {\n constructor(key) {\n super(key);\n }\n static fromBase58(base58) {\n return StakingPoolId.of(new PublicKey10(base58));\n }\n static of(key) {\n return new StakingPoolId(key);\n }\n static field(property) {\n return new StakingPoolIdField(property);\n }\n};\nvar StakingPoolIdField = class extends PublicKeyField {\n constructor(property) {\n super(property);\n }\n fromPublicKey(pubKey) {\n return StakingPoolId.of(pubKey);\n }\n};\n\n// src/models/AdditionalReward.ts\nvar AdditionalReward = class {\n constructor(reserveId, apy, accurate, mintId) {\n this.reserveId = reserveId;\n this.apy = apy;\n this.accurate = !!accurate;\n this.mintId = mintId;\n }\n getReserveId() {\n return this.reserveId;\n }\n getApy() {\n return this.apy;\n }\n getAccurate() {\n return this.accurate;\n }\n getMintId() {\n return this.mintId;\n }\n};\n\n// src/models/Apy.ts\nvar _Apy = class extends Ratio {\n constructor(pct) {\n super(pct);\n }\n static na() {\n return _Apy.APY_NA;\n }\n static of(raw) {\n return new _Apy(Percentage.fromOneBased(raw));\n }\n isCompatibleWith(that) {\n return true;\n }\n};\nvar Apy = _Apy;\nApy.APY_NA = new _Apy();\n\n// src/models/Asset.ts\nimport Big7 from \"big.js\";\n\n// src/models/Value.ts\nvar _Value = class extends Decimal {\n constructor(raw) {\n super(raw);\n }\n toAsset(price, context) {\n const lamport = Lamport.of(\n this.raw.div(price.getRaw()).mul(context.multiplier)\n );\n return Asset.of(price.getMintId(), lamport);\n }\n toNumber() {\n return this.raw.round(2, 0).toNumber();\n }\n print() {\n return _Value.FORMATTER.format(this.toNumber());\n }\n toString() {\n return this.print();\n }\n};\nvar Value = _Value;\nValue.FORMATTER = Intl.NumberFormat(\"en-US\", {\n style: \"currency\",\n currency: \"USD\"\n});\n\n// src/models/ValueRatio.ts\nvar _ValueRatio = class extends Ratio {\n constructor(pct) {\n super(pct);\n }\n static of(pct) {\n if (!pct) {\n return _ValueRatio.na();\n }\n return new _ValueRatio(pct);\n }\n static na() {\n return _ValueRatio.VALUE_RATIO_NA;\n }\n isCompatibleWith(that) {\n return true;\n }\n};\nvar ValueRatio = _ValueRatio;\nValueRatio.VALUE_RATIO_NA = new _ValueRatio();\n\n// src/models/MarginRatio.ts\nvar _MarginRatio = class extends Ratio {\n constructor(pct) {\n super(pct);\n }\n static of(pct) {\n if (!pct) {\n return _MarginRatio.na();\n }\n return new _MarginRatio(pct);\n }\n static na() {\n return _MarginRatio.MARGIN_RATIO_NA;\n }\n isCompatibleWith(that) {\n return true;\n }\n};\nvar MarginRatio = _MarginRatio;\nMarginRatio.MARGIN_RATIO_NA = new _MarginRatio();\n\n// src/models/Margin.ts\nvar _Margin = class extends Value {\n constructor(value) {\n super(value);\n }\n static of(raw) {\n return new _Margin(raw);\n }\n static zero() {\n return _Margin.MARGIN_ZERO;\n }\n static field(property) {\n return new MarginField(property);\n }\n toCollateralValue(loanToValue) {\n return QuoteValue.of(this.getRaw().div(loanToValue.getRaw()));\n }\n toRatioAgainst(threshold) {\n if (threshold.isZero()) {\n return MarginRatio.na();\n }\n return MarginRatio.of(\n Percentage.fromOneBased(this.getRaw().div(threshold.raw))\n );\n }\n replaceWithValue(value) {\n return new _Margin(value);\n }\n};\nvar Margin = _Margin;\nMargin.MARGIN_ZERO = new _Margin(0);\nvar MarginField = class extends DecimalField {\n constructor(property) {\n super(BigType.D128, property);\n }\n fromBig(big) {\n return Margin.of(big);\n }\n};\n\n// src/models/QuoteValue.ts\nvar _QuoteValue = class extends Value {\n constructor(raw) {\n super(raw);\n }\n static of(raw) {\n const result = new _QuoteValue(raw);\n if (result.isZero()) {\n return _QuoteValue.zero();\n }\n return result;\n }\n static zero() {\n return _QuoteValue.QUOTE_VALUE_ZERO;\n }\n static field(property) {\n return new QuoteValueField(property);\n }\n toCollateralMargin(loanToValue) {\n return Margin.of(this.getRaw().mul(loanToValue.getRaw()));\n }\n toLoanMargin() {\n return Margin.of(this.getRaw());\n }\n toRatioAgainst(threshold) {\n if (threshold.isZero()) {\n return ValueRatio.na();\n }\n const pct = Percentage.fromOneBased(this.getRaw().div(threshold.raw));\n return ValueRatio.of(pct);\n }\n replaceWithValue(value) {\n return new _QuoteValue(value);\n }\n};\nvar QuoteValue = _QuoteValue;\nQuoteValue.QUOTE_VALUE_ZERO = new _QuoteValue(0);\nvar QuoteValueField = class extends DecimalField {\n constructor(property) {\n super(BigType.D128, property);\n }\n fromBig(big) {\n return QuoteValue.of(big);\n }\n};\n\n// src/models/Share.ts\nvar Share = class extends Token {\n constructor(mintId, lamport) {\n super(mintId, lamport);\n }\n static zero(mintId) {\n return Share.of(mintId, Lamport.zero());\n }\n static max(mintId) {\n return Share.of(mintId, Lamport.max());\n }\n static fromTokenAccount(account) {\n return Share.of(account.getMintId(), account.getAmount());\n }\n static of(mintId, lamport) {\n return new Share(mintId, lamport);\n }\n toAsset(exchangeRatio) {\n console.assert(this.getMintId().equals(exchangeRatio.getShareMintId()));\n if (!exchangeRatio.isPresent()) {\n return Asset.zero(exchangeRatio.getAssetMintId());\n }\n const pct = exchangeRatio.getUnchecked();\n const lamport = Lamport.of(this.getRaw().div(pct).round(0));\n return Asset.of(exchangeRatio.getAssetMintId(), lamport);\n }\n wrap(value) {\n return Share.of(this.getMintId(), value);\n }\n};\n\n// src/models/MintId.ts\nimport { PublicKey as PublicKey11 } from \"@solana/web3.js\";\nimport { NATIVE_MINT } from \"@solana/spl-token\";\nvar MintId = class extends Id {\n constructor(key) {\n super(key);\n }\n static native() {\n return MintId.of(NATIVE_MINT);\n }\n static fromBase58(base58) {\n return MintId.of(new PublicKey11(base58));\n }\n static of(key) {\n return new MintId(key);\n }\n static field(property) {\n return new MintIdField(property);\n }\n isNative() {\n return this.equals(NATIVE_MINT);\n }\n};\nvar MintIdField = class extends PublicKeyField {\n constructor(property) {\n super(property);\n }\n fromPublicKey(pubKey) {\n return MintId.of(pubKey);\n }\n};\n\n// src/models/Asset.ts\nvar _Asset = class extends Token {\n constructor(mintId, lamport) {\n super(mintId, lamport);\n }\n static fromString(str, mintId, context) {\n const increment = context.multiplier;\n const lamport = Lamport.of(new Big7(str).mul(increment).round(0, 0));\n return new _Asset(mintId, lamport);\n }\n static zero(mintId) {\n return _Asset.of(mintId);\n }\n static max(mintId) {\n return _Asset.of(mintId, Lamport.max());\n }\n static native(lamport) {\n return _Asset.of(MintId.native(), lamport);\n }\n static fromTokenAccount(account) {\n return _Asset.of(account.getMintId(), account.getAmount());\n }\n static of(mintId, lamport) {\n return new _Asset(mintId, lamport || Lamport.zero());\n }\n isNative() {\n return this.getMintId().isNative();\n }\n toValue(price, quantityContext) {\n console.assert(\n this.getMintId().equals(price.getMintId()),\n `asset id: ${this.getMintId()} price id: ${price.getMintId()}`\n );\n if (!price) {\n return QuoteValue.zero();\n }\n const increment = quantityContext.multiplier;\n const value = this.getRaw().div(increment).mul(price.getRaw());\n return QuoteValue.of(value);\n }\n toInterest(supplyApy) {\n if (!supplyApy.isPresent()) {\n return _Asset.zero(this.getMintId());\n }\n const lamport = Lamport.of(this.getRaw().mul(supplyApy.getUnchecked()));\n return _Asset.of(this.getMintId(), lamport);\n }\n toShare(exchangeRatio) {\n console.assert(this.getMintId().equals(exchangeRatio.getAssetMintId()));\n if (!exchangeRatio.isPresent()) {\n return Share.zero(exchangeRatio.getShareMintId());\n }\n const lamport = Lamport.of(\n this.getRaw().mul(exchangeRatio.getUnchecked()).round(0)\n );\n return Share.of(exchangeRatio.getShareMintId(), lamport);\n }\n addFee(pct) {\n return this.multiply(new Big7(1).add(pct.getRaw()));\n }\n toNumber(context) {\n const multiplier = context.multiplier;\n const decimals = context.decimals;\n return this.getRaw().div(multiplier).round(decimals, 0).toNumber();\n }\n plain(context) {\n return this.toLimitRoundNumber(context).toString();\n }\n toLimitRoundNumber(context) {\n const multiplier = context.multiplier;\n const decimals = context.decimals;\n return this.getRaw().div(multiplier).round(Math.min(decimals, 6), 0).toNumber();\n }\n print(context, symbol) {\n if (!context) {\n return \"--\";\n }\n const num = this.toLimitRoundNumber(context);\n const formatted = num > _Asset.LARGE_THRESHOLD ? _Asset.FORMATTER_LARGE.format(num) : _Asset.FORMATTER_NORMAL.format(num);\n if (!symbol) {\n return formatted;\n }\n return formatted + \" \" + symbol;\n }\n wrap(value) {\n return _Asset.of(this.getMintId(), value);\n }\n};\nvar Asset = _Asset;\nAsset.MIN_NATIVE_LAMPORT = _Asset.native(\n Lamport.of(5e6)\n);\nAsset.SIGNIFICANT_DIGITS = 6;\nAsset.LARGE_THRESHOLD = new Big7(10).pow(6).toNumber();\nAsset.FORMATTER_NORMAL = new Intl.NumberFormat(\"en-US\", {\n style: \"decimal\",\n maximumSignificantDigits: _Asset.SIGNIFICANT_DIGITS\n});\nAsset.FORMATTER_LARGE = new Intl.NumberFormat(\"en-US\", {\n style: \"decimal\",\n maximumFractionDigits: 0\n});\n\n// src/models/AssetConfig.ts\nvar AssetConfig = class {\n constructor(mintId, display, price, deposit, isDefault) {\n this.mintId = mintId;\n this.display = display;\n this.price = price;\n this.deposit = deposit;\n this.isDefault = isDefault ?? false;\n }\n checkIsDefault() {\n return this.isDefault;\n }\n getMintId() {\n return this.mintId;\n }\n getName() {\n return this.getDisplayConfig().getName();\n }\n getSymbol() {\n return this.getDisplayConfig().getSymbol();\n }\n getColor() {\n return this.getDisplayConfig().getColor();\n }\n getDisplayConfig() {\n return this.display;\n }\n getPriceDecimals() {\n return this.getPriceConfig().getDecimals();\n }\n getPriceConfig() {\n return this.price;\n }\n getReserveId() {\n return this.getDepositConfig()?.getReserveId();\n }\n getMaxDeposit() {\n const raw = this.getDepositConfig()?.getMax();\n return raw ? Asset.of(this.mintId, Lamport.of(raw)) : void 0;\n }\n getMinDeposit() {\n const raw = this.getDepositConfig()?.getMin();\n return raw ? Asset.of(this.mintId, Lamport.of(raw)) : void 0;\n }\n getRemainAsset() {\n const raw = this.getDepositConfig()?.getRemain();\n return raw ? Asset.of(this.mintId, Lamport.of(raw)) : void 0;\n }\n getDepositConfig() {\n return this.deposit;\n }\n};\n\n// src/models/AssetDisplayConfig.ts\nvar AssetDisplayConfig = class {\n constructor(name, symbol, color) {\n this.name = name;\n this.symbol = symbol;\n this.color = color;\n }\n getName() {\n return this.name;\n }\n getSymbol() {\n return this.symbol;\n }\n getColor() {\n return this.color;\n }\n};\n\n// src/models/AssetPriceConfig.ts\nimport Big8 from \"big.js\";\nvar AssetPriceConfig = class {\n constructor(decimals, increment) {\n this.decimals = decimals;\n this.increment = increment;\n }\n static fromDecimals(decimals) {\n console.assert(Number.isInteger(decimals));\n console.assert(decimals >= 0);\n return new AssetPriceConfig(decimals, new Big8(10).pow(decimals));\n }\n getDecimals() {\n return this.decimals;\n }\n getIncrement() {\n return this.increment;\n }\n};\n\n// src/utils/defaultAssetConfig.ts\nvar DEFAULT_ASSET_CONFIG = new AssetConfig(\n MintId.fromBase58(\"So11111111111111111111111111111111111111112\"),\n new AssetDisplayConfig(\"Default Token\", \"Default\"),\n AssetPriceConfig.fromDecimals(3)\n);\n\n// src/models/AssetContext.ts\nvar AssetContext = class {\n constructor(cache, bySymbol, byReserveId) {\n this.cache = cache;\n this.bySymbol = bySymbol;\n this.byReserveId = byReserveId;\n }\n static index(configs) {\n const cache = /* @__PURE__ */ new Map();\n configs.forEach(\n (config) => cache.set(config.getMintId().toString(), config)\n );\n const bySymbol = /* @__PURE__ */ new Map();\n configs.forEach((config) => bySymbol.set(config.getSymbol(), config));\n const byReserveId = /* @__PURE__ */ new Map();\n for (const config of configs) {\n const reserveId = config.getReserveId();\n if (reserveId) {\n byReserveId.set(reserveId.toBase58(), config);\n }\n }\n return new AssetContext(cache, bySymbol, byReserveId);\n }\n getAllConfigs() {\n return Array.from(this.cache.values());\n }\n findConfig(mintId) {\n const key = mintId.toString();\n return this.cache.get(key) ?? DEFAULT_ASSET_CONFIG;\n }\n findConfigBySymbol(symbol) {\n return this.bySymbol.get(symbol) ?? DEFAULT_ASSET_CONFIG;\n }\n findConfigByReserveId(reserveId) {\n return this.byReserveId.get(reserveId.toBase58()) ?? DEFAULT_ASSET_CONFIG;\n }\n};\n\n// src/models/AssetDepositConfig.ts\nimport Big9 from \"big.js\";\nvar AssetDepositConfig = class {\n constructor(reserveId, args) {\n this.reserveId = reserveId;\n this.min = args?.min ? new Big9(args.min) : void 0;\n this.max = args?.max ? new Big9(args.max) : void 0;\n this.remain = args?.remain ? new Big9(args.remain) : void 0;\n }\n getReserveId() {\n return this.reserveId;\n }\n getMin() {\n return this.min;\n }\n getMax() {\n return this.max;\n }\n getRemain() {\n return this.remain;\n }\n};\n\n// src/models/AssetExchangeRate.ts\nvar AssetExchangeRate = class extends Ratio {\n constructor(shareMintId, assetMintId, pct) {\n super(pct);\n this.shareMintId = shareMintId;\n this.assetMintId = assetMintId;\n }\n getShareMintId() {\n return this.shareMintId;\n }\n getAssetMintId() {\n return this.assetMintId;\n }\n isCompatibleWith(that) {\n return this.shareMintId.equals(that.shareMintId) && this.assetMintId.equals(that.assetMintId);\n }\n};\n\n// src/models/AssetPrice.ts\nimport Big10 from \"big.js\";\nvar AssetPrice = class extends Decimal {\n constructor(mintId, value) {\n super(value);\n this.mintId = mintId;\n }\n static of(mintId, value) {\n return new AssetPrice(mintId, value);\n }\n getMintId() {\n return this.mintId;\n }\n addFee(pct) {\n return this.multiply(new Big10(1).add(pct.getRaw()));\n }\n print(config) {\n const decimals = config.getPriceDecimals();\n return \"$\" + this.raw.round(decimals, 1).toFixed(decimals);\n }\n replaceWithValue(value) {\n return new AssetPrice(this.getMintId(), value);\n }\n isCompatibleWith(that) {\n return this.getMintId().equals(that.getMintId());\n }\n};\n\n// src/models/AssetValue.ts\nvar AssetValue = class {\n constructor(asset, value) {\n this.asset = asset;\n this.value = value;\n }\n static zero(mintId) {\n return new AssetValue(Asset.zero(mintId), QuoteValue.zero());\n }\n getMintId() {\n return this.getAsset().getMintId();\n }\n getAsset() {\n return this.asset;\n }\n getValue() {\n return this.value;\n }\n};\n\n// src/models/AuthorityId.ts\nimport { PublicKey as PublicKey12 } from \"@solana/web3.js\";\nvar AuthorityId = class extends Id {\n constructor(pubKey) {\n super(pubKey);\n }\n static fromBase58(base58) {\n return AuthorityId.of(new PublicKey12(base58));\n }\n static of(pubKey) {\n return new AuthorityId(pubKey);\n }\n static field(property) {\n return new AuthorityIdField(property);\n }\n};\nvar AuthorityIdField = class extends PublicKeyField {\n constructor(property) {\n super(property);\n }\n fromPublicKey(pubKey) {\n return AuthorityId.of(pubKey);\n }\n};\n\n// src/models/ProfileEntry.ts\nvar ProfileEntry = class extends WrappedLamport {\n constructor(reserveId, amount) {\n super(amount);\n this.reserveId = reserveId;\n }\n getReserveId() {\n return this.reserveId;\n }\n isCompatibleWith(that) {\n return this.getReserveId().equals(that.getReserveId());\n }\n};\n\n// src/models/Collateral.ts\nvar Collateral = class extends ProfileEntry {\n constructor(reserveId, amount) {\n super(reserveId, amount);\n }\n static zero(reserveId) {\n return new Collateral(reserveId, Lamport.zero());\n }\n wrap(value) {\n return new Collateral(this.getReserveId(), value);\n }\n};\n\n// src/models/ExchangeRate.ts\nvar _ExchangeRate = class extends Decimal {\n constructor(value) {\n super(value);\n }\n static zero() {\n return _ExchangeRate.ZERO;\n }\n static of(raw) {\n return new _ExchangeRate(raw);\n }\n static field(type, property) {\n return new ExchangeRateField(type, property);\n }\n replaceWithValue(value) {\n return _ExchangeRate.of(value);\n }\n};\nvar ExchangeRate = _ExchangeRate;\nExchangeRate.ZERO = _ExchangeRate.of(0);\nvar ExchangeRateField = class extends DecimalField {\n constructor(type, property) {\n super(type, property);\n }\n fromBig(big) {\n return ExchangeRate.of(big);\n }\n};\n\n// src/models/Loan.ts\nvar Loan = class extends ProfileEntry {\n constructor(reserveId, amount, cumulativeBorrowRate) {\n super(reserveId, amount);\n this.cumulativeBorrowRate = cumulativeBorrowRate;\n }\n static zero(reserve) {\n return new Loan(\n reserve.getReserveId(),\n Lamport.zero(),\n reserve.asset.getCumulativeBorrowRate()\n );\n }\n accrueInterest(newCumulativeBorrowRate) {\n const compoundedInterestRate = newCumulativeBorrowRate.divide(\n this.cumulativeBorrowRate.getRaw()\n );\n const newAmount = this.getAmount().multiply(\n compoundedInterestRate.getRaw()\n );\n return new Loan(this.getReserveId(), newAmount, newCumulativeBorrowRate);\n }\n getCumulativeBorrowRate() {\n return this.cumulativeBorrowRate;\n }\n wrap(value) {\n return new Loan(this.getReserveId(), value, this.cumulativeBorrowRate);\n }\n};\n\n// src/models/MarketId.ts\nimport { PublicKey as PublicKey13 } from \"@solana/web3.js\";\nvar MarketId = class extends Id {\n constructor(key) {\n super(key);\n }\n static fromBase58(base58) {\n return MarketId.of(new PublicKey13(base58));\n }\n static of(key) {\n return new MarketId(key);\n }\n static field(property) {\n return new MarketIdField(property);\n }\n getName() {\n return MARKET_MAP[this.toBase58()] ?? \"unknown\";\n }\n};\nvar MarketIdField = class extends PublicKeyField {\n constructor(property) {\n super(property);\n }\n fromPublicKey(pubKey) {\n return MarketId.of(pubKey);\n }\n};\n\n// src/models/OracleId.ts\nimport { PublicKey as PublicKey14 } from \"@solana/web3.js\";\nvar OracleId = class extends Id {\n static fromBase58(base58) {\n return new OracleId(new PublicKey14(base58));\n }\n};\n\n// src/models/PortProfileId.ts\nimport { PublicKey as PublicKey15 } from \"@solana/web3.js\";\nvar PortProfileId = class extends Id {\n constructor(key) {\n super(key);\n }\n static of(pubKey) {\n return new PortProfileId(pubKey);\n }\n static fromBase58(base58) {\n return PortProfileId.of(new PublicKey15(base58));\n }\n static field(property) {\n return new PortProfileIdField(property);\n }\n};\nvar PortProfileIdField = class extends PublicKeyField {\n constructor(property) {\n super(property);\n }\n fromPublicKey(pubKey) {\n return PortProfileId.of(pubKey);\n }\n};\n\n// src/models/ReserveId.ts\nimport { PublicKey as PublicKey16 } from \"@solana/web3.js\";\nvar ReserveId = class extends Id {\n constructor(key) {\n super(key);\n }\n static fromBase58(base58) {\n return ReserveId.of(new PublicKey16(base58));\n }\n static of(pubKey) {\n return new ReserveId(pubKey);\n }\n static field(property) {\n return new ReserveIdField(property);\n }\n};\nvar ReserveIdField = class extends PublicKeyField {\n constructor(property) {\n super(property);\n }\n fromPublicKey(pubKey) {\n return ReserveId.of(pubKey);\n }\n};\n\n// src/models/PortProfile.ts\nimport * as BufferLayout14 from \"@solana/buffer-layout\";\n\n// src/structs/ReserveData.ts\nimport * as BufferLayout12 from \"@solana/buffer-layout\";\n\n// src/models/TokenAccountId.ts\nvar TokenAccountId = class extends Id {\n constructor(key) {\n super(key);\n }\n static native(walletId) {\n return TokenAccountId.of(walletId);\n }\n static of(pubKey) {\n return new TokenAccountId(pubKey);\n }\n static field(property) {\n return new SplAccountIdField(property);\n }\n};\nvar SplAccountIdField = class extends PublicKeyField {\n constructor(property) {\n super(property);\n }\n fromPublicKey(pubKey) {\n return TokenAccountId.of(pubKey);\n }\n};\n\n// src/serialization/Optional.ts\nimport * as BufferLayout10 from \"@solana/buffer-layout\";\nvar Optional = class extends Field {\n constructor(field) {\n super(field.span + 1, field.property);\n this.delegate = field;\n }\n static of(field) {\n return new Optional(field);\n }\n decode(b, offset) {\n const flag = BufferLayout10.u8().decode(b, offset);\n if (!flag) {\n return void 0;\n }\n return this.delegate.decode(b, (offset || 0) + 1);\n }\n};\n\n// src/structs/SlotInfo.ts\nimport * as BufferLayout11 from \"@solana/buffer-layout\";\nvar SlotInfoLayout = (property) => BufferLayout11.struct(\n [uint64(\"slot\"), BufferLayout11.u8(\"stale\")],\n property\n);\n\n// src/structs/ReserveData.ts\nvar ReserveConfigProtoLayout = (property) => BufferLayout12.struct(\n [\n BufferLayout12.u8(\"optimalUtilizationRate\"),\n BufferLayout12.u8(\"loanToValueRatio\"),\n BufferLayout12.u8(\"liquidationBonus\"),\n BufferLayout12.u8(\"liquidationThreshold\"),\n BufferLayout12.u8(\"minBorrowRate\"),\n BufferLayout12.u8(\"optimalBorrowRate\"),\n BufferLayout12.u8(\"maxBorrowRate\"),\n ReserveFeesProtoLayout(\"fees\"),\n BufferLayout12.u8(\"stakingPoolOption\"),\n publicKey(\"stakingPool\")\n ],\n property\n);\nvar ReserveFeesProtoLayout = (property) => BufferLayout12.struct(\n [\n uint64(\"borrowFeeWad\"),\n uint64(\"flashLoanFeeWad\"),\n BufferLayout12.u8(\"hostFeePercentage\")\n ],\n property\n);\nvar ReserveLiquidityLayout = (property) => BufferLayout12.struct(\n [\n MintId.field(\"mintPubkey\"),\n BufferLayout12.u8(\"mintDecimals\"),\n TokenAccountId.field(\"supplyPubkey\"),\n TokenAccountId.field(\"feeReceiver\"),\n BufferLayout12.u32(\"oracleOption\"),\n publicKey(\"oraclePubkey\"),\n Lamport.field(BigType.U64, \"availableAmount\"),\n Lamport.field(BigType.D128, \"borrowedAmountWads\"),\n ExchangeRate.field(BigType.D128, \"cumulativeBorrowRateWads\"),\n BigField.forType(BigType.D128, \"marketPrice\")\n ],\n property\n);\nvar ReserveCollateralLayout = (property) => BufferLayout12.struct(\n [\n MintId.field(\"mintPubkey\"),\n Lamport.field(BigType.U64, \"mintTotalSupply\"),\n TokenAccountId.field(\"supplyPubkey\")\n ],\n property\n);\nvar ReserveFeesLayout = (property) => BufferLayout12.struct(\n [\n BigField.forType(BigType.D64, \"borrowFeeWad\"),\n BigField.forType(BigType.D64, \"flashLoanFeeWad\"),\n BufferLayout12.u8(\"hostFeePercentage\")\n ],\n property\n);\nvar ReserveConfigLayout = (property) => BufferLayout12.struct(\n [\n Percentage.field(\"optimalUtilizationRate\"),\n Percentage.field(\"loanToValueRatio\"),\n Percentage.field(\"liquidationBonus\"),\n Percentage.field(\"liquidationThreshold\"),\n Percentage.field(\"minBorrowRate\"),\n Percentage.field(\"optimalBorrowRate\"),\n Percentage.field(\"maxBorrowRate\"),\n ReserveFeesLayout(\"fees\"),\n Optional.of(StakingPoolId.field(\"stakingPoolId\"))\n ],\n property\n);\nvar ReserveLayout = BufferLayout12.struct([\n BufferLayout12.u8(\"version\"),\n SlotInfoLayout(\"lastUpdate\"),\n publicKey(\"lendingMarket\"),\n ReserveLiquidityLayout(\"liquidity\"),\n ReserveCollateralLayout(\"collateral\"),\n ReserveConfigLayout(\"config\"),\n BufferLayout12.blob(215, \"padding2\")\n]);\nvar isReserve = (info) => {\n return info.data.length === ReserveLayout.span;\n};\nvar RESERVE_DATA_SIZE = ReserveLayout.span;\n\n// src/models/WalletId.ts\nimport { PublicKey as PublicKey17 } from \"@solana/web3.js\";\nvar WalletId = class extends Id {\n constructor(key) {\n super(key);\n }\n static fromBase58(base58) {\n return WalletId.of(new PublicKey17(base58));\n }\n static of(key) {\n return new WalletId(key);\n }\n static field(property) {\n return new WalletIdField(property);\n }\n};\nvar WalletIdField = class extends PublicKeyField {\n constructor(property) {\n super(property);\n }\n fromPublicKey(pubKey) {\n return WalletId.of(pubKey);\n }\n};\n\n// src/structs/PortProfileData.ts\nimport * as BufferLayout13 from \"@solana/buffer-layout\";\nvar ObligationLayout = BufferLayout13.struct([\n BufferLayout13.u8(\"version\"),\n SlotInfoLayout(\"lastUpdate\"),\n publicKey(\"lendingMarket\"),\n WalletId.field(\"owner\"),\n QuoteValue.field(\"depositedValue\"),\n Margin.field(\"borrowedValue\"),\n Margin.field(\"allowedBorrowValue\"),\n Margin.field(\"unhealthyBorrowValue\"),\n BufferLayout13.u8(\"depositsLen\"),\n BufferLayout13.u8(\"borrowsLen\"),\n BufferLayout13.blob(776, \"dataFlat\")\n]);\nvar ObligationCollateralLayout = BufferLayout13.struct([\n ReserveId.field(\"depositReserve\"),\n Lamport.field(BigType.U64, \"depositedAmount\"),\n QuoteValue.field(\"marketValue\")\n]);\nvar ObligationLiquidityLayout = BufferLayout13.struct([\n ReserveId.field(\"borrowReserve\"),\n ExchangeRate.field(BigType.D128, \"cumulativeBorrowRateWads\"),\n Lamport.field(BigType.D128, \"borrowedAmountWads\"),\n QuoteValue.field(\"marketValue\")\n]);\nvar PORT_PROFILE_DATA_SIZE = ObligationLayout.span;\n\n// src/models/PortProfile.ts\nvar PortProfile = class {\n constructor(profileId, collaterals, loans, loanMargin, initialMargin, maintenanceMargin, owner, depositedValue) {\n this.profileId = profileId;\n this.collaterals = collaterals;\n this.loans = loans;\n this.loanMargin = loanMargin;\n this.initialMargin = initialMargin;\n this.maintenanceMargin = maintenanceMargin;\n this.owner = owner;\n this.depositedValue = depositedValue;\n }\n static newAccount(profileId) {\n return new PortProfile(\n profileId,\n [],\n [],\n Margin.zero(),\n Margin.zero(),\n Margin.zero()\n );\n }\n static fromRaw(raw) {\n const profileId = PortProfileId.of(raw.pubkey);\n const proto = PortProfileParser(raw.account.data);\n const collaterals = proto.deposits.map(\n (c) => new Collateral(ReserveId.of(c.depositReserve), c.depositedAmount)\n );\n const loans = proto.borrows.map(\n (l) => new Loan(\n l.borrowReserve,\n l.borrowedAmountWads,\n l.cumulativeBorrowRateWads\n )\n );\n const loanMargin = proto.borrowedValue;\n const initialMargin = proto.allowedBorrowValue;\n const maintenanceMargin = proto.unhealthyBorrowValue;\n const depositedValue = proto.depositedValue;\n const owner = proto.owner;\n return new PortProfile(\n profileId,\n collaterals,\n loans,\n loanMargin,\n initialMargin,\n maintenanceMargin,\n owner,\n depositedValue\n );\n }\n getDepositedValue() {\n return this.depositedValue;\n }\n getOwner() {\n return this.owner;\n }\n getId() {\n return this.getProfileId();\n }\n getProfileId() {\n return this.profileId;\n }\n getCollateral(reserveId) {\n return this.getCollaterals().find(\n (c) => c.getReserveId().equals(reserveId)\n );\n }\n getCollateralReserveIds() {\n return this.getCollaterals().map((c) => c.getReserveId());\n }\n getCollaterals() {\n return this.collaterals;\n }\n getLoan(reserveId) {\n return this.getLoans().find((l) => l.getReserveId().equals(reserveId));\n }\n getLoanReserveIds() {\n return this.getLoans().map((l) => l.getReserveId());\n }\n getLoans() {\n return this.loans;\n }\n getLoanMargin() {\n return this.loanMargin;\n }\n getInitialMargin() {\n return this.initialMargin;\n }\n getMaintenanceMargin() {\n return this.maintenanceMargin;\n }\n getRiskFactor() {\n return this.getLoanMargin().toRatioAgainst(this.getMaintenanceMargin());\n }\n getLoanToValue() {\n return this.getLoanMargin().toRatioAgainst(this.getInitialMargin());\n }\n};\nvar PortProfileParser = (buffer) => {\n const {\n version,\n lastUpdate,\n lendingMarket,\n owner,\n depositedValue,\n borrowedValue,\n allowedBorrowValue,\n unhealthyBorrowValue,\n depositsLen,\n borrowsLen,\n dataFlat\n } = ObligationLayout.decode(buffer);\n const depositsBuffer = dataFlat.slice(\n 0,\n depositsLen * ObligationCollateralLayout.span\n );\n const deposits = BufferLayout14.seq(\n ObligationCollateralLayout,\n depositsLen\n ).decode(depositsBuffer);\n const borrowsBuffer = dataFlat.slice(\n depositsBuffer.length,\n depositsBuffer.length + borrowsLen * ObligationLiquidityLayout.span\n );\n const borrows = BufferLayout14.seq(\n ObligationLiquidityLayout,\n borrowsLen\n ).decode(borrowsBuffer);\n return {\n version,\n lastUpdate,\n lendingMarket,\n owner,\n depositedValue,\n borrowedValue,\n allowedBorrowValue,\n unhealthyBorrowValue,\n deposits,\n borrows\n };\n};\n\n// src/models/PortProfileContext.ts\nvar PortProfileContext = class {\n constructor(selectedProfile, allProfiles) {\n this.selectedProfile = selectedProfile;\n this.allProfiles = allProfiles;\n }\n static index(profiles, whitelist) {\n profiles = profiles.sort(byCollateralAndLoanCountDesc);\n let selected = whitelist ? profiles.find((p) => p.getProfileId().equals(whitelist)) : void 0;\n if (!selected && profiles.length) {\n selected = profiles[0];\n }\n return new PortProfileContext(selected, profiles);\n }\n getSelectedProfile() {\n return this.selectedProfile;\n }\n getAllProfiles() {\n return this.allProfiles;\n }\n};\nfunction byCollateralAndLoanCountDesc(a, b) {\n const aCount = a.getCollaterals().length + a.getLoans().length;\n const bCount = b.getCollaterals().length + b.getLoans().length;\n return bCount - aCount;\n}\n\n// src/models/PriceOracle.ts\nvar PriceOracle = class {\n constructor(cache) {\n this.cache = cache;\n }\n static index(prices) {\n const cache = /* @__PURE__ */ new Map();\n prices.forEach((price) => cache.set(price.getMintId().toString(), price));\n return new PriceOracle(cache);\n }\n getPrice(mintId) {\n const key = mintId.toString();\n return this.cache.get(key);\n }\n};\n\n// src/models/ProgramId.ts\nimport { PublicKey as PublicKey18 } from \"@solana/web3.js\";\nvar ProgramId = class extends Id {\n constructor(key) {\n super(key);\n }\n static fromBase58(base58) {\n return ProgramId.of(new PublicKey18(base58));\n }\n static of(key) {\n return new ProgramId(key);\n }\n};\n\n// src/models/ProposedAction.ts\nvar ProposedAction = class {\n constructor(assets, shares, collaterals, loans) {\n this.assets = assets;\n this.shares = shares;\n this.collaterals = collaterals;\n this.loans = loans;\n }\n static newProposal(args) {\n const assets = [];\n const shares = [];\n const collaterals = [];\n const loans = [];\n if (args.newAsset) {\n assets.push(args.newAsset);\n }\n if (args.newShare) {\n shares.push(args.newShare);\n }\n if (args.newCollateral) {\n collaterals.push(args.newCollateral);\n }\n if (args.newLoan) {\n loans.push(args.newLoan);\n }\n return new ProposedAction(assets, shares, collaterals, loans);\n }\n getUpdatedAsset(assetMintId) {\n return this.assets.find((a) => a.getMintId().equals(assetMintId));\n }\n getUpdatedShare(shareMintId) {\n return this.shares.find((s) => s.getMintId().equals(shareMintId));\n }\n getUpdatedCollateral(reserveId) {\n return this.collaterals.find((c) => c.getReserveId().equals(reserveId));\n }\n getUpdatedLoan(reserveId) {\n return this.loans.find((l) => l.getReserveId().equals(reserveId));\n }\n getUpdatedCollaterals(collaterals) {\n return ProposedAction.proposal(collaterals, this.collaterals);\n }\n getUpdatedLoans(loans) {\n return ProposedAction.proposal(loans, this.loans);\n }\n static proposal(entries, proposal) {\n if (!proposal.length) {\n return entries;\n }\n const map = /* @__PURE__ */ new Map();\n for (const e of entries) {\n map.set(e.getReserveId().toBase58(), e);\n }\n for (const e of proposal) {\n map.set(e.getReserveId().toBase58(), e);\n }\n return Array.from(map.values());\n }\n};\n\n// src/models/ReserveBorrowRate.ts\nvar ReserveBorrowRate = class extends Ratio {\n constructor(mintId, pct) {\n super(pct);\n this.mintId = mintId;\n }\n static na(mintId) {\n return new ReserveBorrowRate(mintId);\n }\n getMintId() {\n return this.mintId;\n }\n isCompatibleWith(that) {\n return this.mintId.equals(that.mintId);\n }\n};\n\n// src/models/ReserveContext.ts\nvar _ReserveContext = class {\n constructor(reserves, byReserveId, byAssetMintId, byShareMintId, byStakingPoolId) {\n this.reserves = reserves;\n this.byReserveId = byReserveId;\n this.byAssetMintId = byAssetMintId;\n this.byShareMintId = byShareMintId;\n this.byStakingPoolId = byStakingPoolId;\n }\n static empty() {\n return _ReserveContext.RESERVE_CONTEXT_EMPTY;\n }\n static index(reserves, tokenMap) {\n if (!reserves.length) {\n return _ReserveContext.empty();\n }\n const readyToSortReserves = tokenMap ? reserves.filter((r) => {\n return tokenMap.has(r.getAssetMintId().toString());\n }) : reserves;\n const sorted = readyToSortReserves.sort(\n (a, b) => -a.getMarketCap().getValue().compare(b.getMarketCap().getValue())\n );\n const byReserveId = /* @__PURE__ */ new Map();\n const byAssetMintId = /* @__PURE__ */ new Map();\n const byShareMintId = /* @__PURE__ */ new Map();\n const byStakingPoolId = /* @__PURE__ */ new Map();\n sorted.forEach(\n (reserve) => byReserveId.set(reserve.getReserveId().toString(), reserve)\n );\n sorted.forEach(\n (reserve) => byAssetMintId.set(reserve.getAssetMintId().toString(), reserve)\n );\n sorted.forEach(\n (reserve) => byShareMintId.set(reserve.getShareMintId().toString(), reserve)\n );\n sorted.forEach((reserve) => {\n const stakingPoolId = reserve.getStakingPoolId();\n if (stakingPoolId) {\n byStakingPoolId.set(stakingPoolId.toString(), reserve);\n }\n });\n return new _ReserveContext(\n sorted,\n byReserveId,\n byAssetMintId,\n byShareMintId,\n byStakingPoolId\n );\n }\n isReady() {\n return this.reserves.length > 0;\n }\n getAllReserves() {\n return this.reserves;\n }\n getAllReservesPricePubKey() {\n return this.reserves.map((r) => r.getOracleId());\n }\n getReserve(reserveId) {\n const result = this.findReserve(reserveId);\n if (!result) {\n throw new Error(`No reserve for ${reserveId}`);\n }\n return result;\n }\n getByAssetMintId(mintId) {\n const result = this.findByAssetMintId(mintId);\n if (!result) {\n throw new Error(`No reserve for asset mint ${mintId}`);\n }\n return result;\n }\n getByShareMintId(mintId) {\n const result = this.findByShareMintId(mintId);\n if (!result) {\n throw new Error(`No reserve for share mint ${mintId}`);\n }\n return result;\n }\n findReserve(reserveId) {\n const key = reserveId.toString();\n return this.byReserveId.get(key);\n }\n findByAssetMintId(mintId) {\n const key = mintId.toString();\n return this.byAssetMintId.get(key);\n }\n findByShareMintId(mintId) {\n const key = mintId.toString();\n return this.byShareMintId.get(key);\n }\n findByStakingPoolId(stakingPoolId) {\n if (!stakingPoolId) {\n return void 0;\n }\n const key = stakingPoolId.toString();\n return this.byStakingPoolId.get(key);\n }\n};\nvar ReserveContext = _ReserveContext;\nReserveContext.RESERVE_CONTEXT_EMPTY = new _ReserveContext(\n [],\n /* @__PURE__ */ new Map(),\n /* @__PURE__ */ new Map(),\n /* @__PURE__ */ new Map(),\n /* @__PURE__ */ new Map()\n);\n\n// src/models/ReserveUtilizationRatio.ts\nvar ReserveUtilizationRatio = class extends Ratio {\n constructor(mintId, pct) {\n super(pct);\n this.mintId = mintId;\n }\n static na(mintId) {\n return new ReserveUtilizationRatio(mintId);\n }\n getMintId() {\n return this.mintId;\n }\n isCompatibleWith(that) {\n return this.mintId.equals(that.mintId);\n }\n};\n\n// src/models/ReserveInfo.ts\nimport Big11 from \"big.js\";\nimport { PublicKey as PublicKey19 } from \"@solana/web3.js\";\nvar ReserveInfo = class {\n constructor(reserveId, marketId, asset, share, params, stakingPoolId, proto) {\n this.reserveId = reserveId;\n this.marketId = marketId;\n this.asset = asset;\n this.share = share;\n this.params = params;\n this.stakingPoolId = stakingPoolId;\n this.proto = proto;\n }\n static fromRaw(raw) {\n const buffer = raw.account.data;\n const proto = ReserveLayout.decode(buffer);\n const marketId = MarketId.of(proto.lendingMarket);\n const asset = ReserveAssetInfo.fromRaw(proto.liquidity);\n const token = ReserveTokenInfo.fromRaw(proto.collateral);\n const params = ReserveParams.fromRaw(asset.getMintId(), proto.config);\n const stakingPoolId = proto.config.stakingPoolId;\n return new ReserveInfo(\n ReserveId.of(raw.pubkey),\n marketId,\n asset,\n token,\n params,\n stakingPoolId,\n proto\n );\n }\n getProto() {\n return this.proto;\n }\n getId() {\n return this.getReserveId();\n }\n getReserveId() {\n return this.reserveId;\n }\n getMarketId() {\n return this.marketId;\n }\n getAssetMintId() {\n return this.asset.getMintId();\n }\n getAssetBalanceId() {\n return this.asset.getSplAccountId();\n }\n getShareMintId() {\n return this.share.getMintId();\n }\n getShareBalanceId() {\n return this.share.getSplAccountId();\n }\n getOracleId() {\n return this.asset.getOracleId();\n }\n getFeeBalanceId() {\n return this.asset.getFeeAccountId();\n }\n getMarketCap(price) {\n const asset = this.getTotalAsset();\n return new AssetValue(\n asset,\n asset.toValue(price ?? this.getMarkPrice(), this.getQuantityContext())\n );\n }\n getTotalAsset() {\n return this.getAvailableAsset().add(this.getBorrowedAsset());\n }\n getAvailableAssetValue(price) {\n const asset = this.getAvailableAsset();\n return new AssetValue(\n asset,\n asset.toValue(price ?? this.getMarkPrice(), this.getQuantityContext())\n );\n }\n getAvailableAsset() {\n return this.asset.getAvailableAsset();\n }\n getBorrowedAssetValue(price) {\n const asset = this.getBorrowedAsset();\n return new AssetValue(\n asset,\n asset.toValue(price ?? this.getMarkPrice(), this.getQuantityContext())\n );\n }\n getBorrowedAsset() {\n return this.asset.getBorrowedAsset();\n }\n getQuantityContext() {\n return this.asset.getQuantityContext();\n }\n getMarkPrice() {\n return this.asset.getMarkPrice();\n }\n getExchangeRatio() {\n const asset = this.getTotalAsset();\n const share = this.share.getIssuedShare();\n const assetMintId = asset.getMintId();\n const shareMintId = share.getMintId();\n if (asset.isZero()) {\n return new AssetExchangeRate(shareMintId, assetMintId);\n }\n const ratio = Percentage.fromOneBased(share.getRaw().div(asset.getRaw()));\n return new AssetExchangeRate(shareMintId, assetMintId, ratio);\n }\n getUtilizationRatio() {\n const total = this.getTotalAsset();\n if (total.isZero()) {\n return ReserveUtilizationRatio.na(total.getMintId());\n }\n const pct = Percentage.fromOneBased(\n this.getBorrowedAsset().getRaw().div(total.getRaw())\n );\n return new ReserveUtilizationRatio(total.getMintId(), pct);\n }\n getSupplyApy() {\n const utilizationRatio = this.getUtilizationRatio();\n const borrowApy = this.getBorrowApy();\n if (!utilizationRatio.isPresent() || !borrowApy.isPresent()) {\n return Apy.na();\n }\n const utilizationRatioRaw = utilizationRatio.getUnchecked();\n const borrowApyRaw = borrowApy.getUnchecked();\n return Apy.of(utilizationRatioRaw.mul(borrowApyRaw));\n }\n getBorrowApy() {\n const params = this.params;\n const utilizationRatio = this.getUtilizationRatio();\n const optimalUtilizationRatio = params.optimalUtilizationRatio;\n const optimalBorrowRate = params.optimalBorrowRate;\n if (!utilizationRatio.isPresent() || !optimalUtilizationRatio.isPresent() || !optimalBorrowRate.isPresent()) {\n return Apy.na();\n }\n const utilizationRatioRaw = utilizationRatio.getUnchecked();\n const optimalUtilizationRatioRaw = optimalUtilizationRatio.getUnchecked();\n const optimalBorrowRateRaw = optimalBorrowRate.getUnchecked();\n if (optimalUtilizationRatioRaw.eq(1) || utilizationRatioRaw.lt(optimalUtilizationRatioRaw)) {\n const minBorrowRate = params.minBorrowRate;\n if (!minBorrowRate.isPresent()) {\n return Apy.na();\n }\n const minBorrowRateRaw = minBorrowRate.getUnchecked();\n const normalizedFactor2 = utilizationRatioRaw.div(\n optimalUtilizationRatioRaw\n );\n const borrowRateDiff2 = optimalBorrowRateRaw.sub(minBorrowRateRaw);\n return Apy.of(normalizedFactor2.mul(borrowRateDiff2).add(minBorrowRateRaw));\n }\n const maxBorrowRate = params.maxBorrowRate;\n if (!maxBorrowRate.isPresent()) {\n return Apy.na();\n }\n const maxBorrowRateRaw = maxBorrowRate.getUnchecked();\n const normalizedFactor = utilizationRatioRaw.sub(optimalUtilizationRatioRaw).div(new Big11(1).sub(optimalUtilizationRatioRaw));\n const borrowRateDiff = maxBorrowRateRaw.sub(optimalBorrowRateRaw);\n return Apy.of(\n normalizedFactor.mul(borrowRateDiff).add(optimalBorrowRateRaw)\n );\n }\n getStakingPoolId() {\n return this.stakingPoolId;\n }\n async getMarketAuthority() {\n return await PublicKey19.findProgramAddress(\n [this.getMarketId().toBuffer()],\n PORT_LENDING\n );\n }\n async depositReserve({\n amount,\n userLiquidityWallet,\n destinationCollateralWallet,\n userTransferAuthority\n }) {\n const [authority] = await this.getMarketAuthority();\n const ixs = [];\n ixs.push(\n refreshReserveInstruction(\n this.getReserveId(),\n this.getOracleId() ?? null\n ),\n depositReserveLiquidityInstruction(\n amount,\n userLiquidityWallet,\n destinationCollateralWallet,\n this.getReserveId(),\n this.getAssetBalanceId(),\n this.getShareMintId(),\n this.getMarketId(),\n authority,\n userTransferAuthority\n )\n );\n return ixs;\n }\n async depositObligationCollateral({\n amount,\n userCollateralWallet,\n obligation,\n obligationOwner,\n userTransferAuthority\n }) {\n const [authority] = await this.getMarketAuthority();\n const ixs = [];\n ixs.push(\n refreshReserveInstruction(\n this.getReserveId(),\n this.getOracleId() ?? null\n ),\n depositObligationCollateralInstruction(\n amount,\n userCollateralWallet,\n this.getShareBalanceId(),\n this.getReserveId(),\n obligation,\n this.getMarketId(),\n authority,\n obligationOwner,\n userTransferAuthority\n )\n );\n return ixs;\n }\n async borrowObligationLiquidity({\n amount,\n userWallet,\n owner,\n obligation\n }) {\n const [authority] = await this.getMarketAuthority();\n const ixs = [];\n ixs.push(\n borrowObligationLiquidityInstruction(\n amount,\n this.getAssetBalanceId(),\n userWallet,\n this.getReserveId(),\n this.getFeeBalanceId(),\n obligation,\n this.getMarketId(),\n authority,\n owner\n )\n );\n return ixs;\n }\n async redeemCollateral({\n amount,\n userCollateralWallet,\n destinationLiquidityWallet,\n userTransferAuthority\n }) {\n const [authority] = await this.getMarketAuthority();\n const ixs = [];\n ixs.push(\n redeemReserveCollateralInstruction(\n amount,\n userCollateralWallet,\n destinationLiquidityWallet,\n this.getReserveId(),\n this.getShareMintId(),\n this.getAssetBalanceId(),\n this.getMarketId(),\n authority,\n userTransferAuthority\n )\n );\n return ixs;\n }\n};\nvar ReserveAssetInfo = class {\n constructor(mintId, oracleId, feeBalanceId, supplyAccountId, available, borrowed, markPrice, cumulativeBorrowRate, quantityContext) {\n this.mintId = mintId;\n this.oracleId = oracleId;\n this.feeAccountId = feeBalanceId;\n this.supplyAccountId = supplyAccountId;\n this.available = available;\n this.borrowed = borrowed;\n this.markPrice = markPrice;\n this.cumulativeBorrowRate = cumulativeBorrowRate;\n this.quantityContext = quantityContext;\n }\n static fromRaw(raw) {\n const mintId = raw.mintPubkey;\n const oracleId = raw.oracleOption === 1 ? MintId.of(raw.oraclePubkey) : null;\n const feeAccountId = raw.feeReceiver;\n const supplyBalanceId = raw.supplyPubkey;\n const available = Asset.of(mintId, raw.availableAmount);\n const borrowed = Asset.of(mintId, raw.borrowedAmountWads);\n const markPrice = AssetPrice.of(mintId, raw.marketPrice);\n const cumulativeBorrowRate = raw.cumulativeBorrowRateWads;\n const quantityContext = QuantityContext.fromDecimals(raw.mintDecimals);\n return new ReserveAssetInfo(\n mintId,\n oracleId,\n feeAccountId,\n supplyBalanceId,\n available,\n borrowed,\n markPrice,\n cumulativeBorrowRate,\n quantityContext\n );\n }\n getMintId() {\n return this.mintId;\n }\n getOracleId() {\n return this.oracleId;\n }\n getFeeAccountId() {\n return this.feeAccountId;\n }\n getSplAccountId() {\n return this.supplyAccountId;\n }\n getAvailableAsset() {\n return this.available;\n }\n getBorrowedAsset() {\n return this.borrowed;\n }\n getMarkPrice() {\n return this.markPrice;\n }\n getCumulativeBorrowRate() {\n return this.cumulativeBorrowRate;\n }\n getQuantityContext() {\n return this.quantityContext;\n }\n};\nvar ReserveTokenInfo = class {\n constructor(mintId, splAccount, issuedShare) {\n this.mintId = mintId;\n this.splAccountId = splAccount;\n this.issuedShare = issuedShare;\n }\n static fromRaw(raw) {\n const mintId = raw.mintPubkey;\n const splAccountId = raw.supplyPubkey;\n const issuedShare = Share.of(mintId, raw.mintTotalSupply);\n return new ReserveTokenInfo(mintId, splAccountId, issuedShare);\n }\n getMintId() {\n return this.mintId;\n }\n getSplAccountId() {\n return this.splAccountId;\n }\n getIssuedShare() {\n return this.issuedShare;\n }\n};\nvar ReserveParams = class {\n constructor(loanToValueRatio, optimalUtilizationRatio, optimalBorrowRate, minBorrowRate, maxBorrowRate, liquidationThreshold, liquidationPenalty, borrowFee) {\n this.loanToValueRatio = loanToValueRatio;\n this.optimalUtilizationRatio = optimalUtilizationRatio;\n this.optimalBorrowRate = optimalBorrowRate;\n this.minBorrowRate = minBorrowRate;\n this.maxBorrowRate = maxBorrowRate;\n this.liquidationThreshold = liquidationThreshold;\n this.liquidationPenalty = liquidationPenalty;\n this.borrowFee = borrowFee;\n }\n static fromRaw(mintId, config) {\n const loanToValueRatio = config.loanToValueRatio;\n const optimalUtilizationRatio = new ReserveUtilizationRatio(\n mintId,\n config.optimalUtilizationRate\n );\n const optimalBorrowRate = new ReserveBorrowRate(\n mintId,\n config.optimalBorrowRate\n );\n const minBorrowRate = new ReserveBorrowRate(mintId, config.minBorrowRate);\n const maxBorrowRate = new ReserveBorrowRate(mintId, config.maxBorrowRate);\n const liquidationThreshold = config.liquidationThreshold;\n const liquidationPenalty = config.liquidationBonus;\n const borrowFee = Percentage.fromOneBased(config.fees.borrowFeeWad);\n return new ReserveParams(\n loanToValueRatio,\n optimalUtilizationRatio,\n optimalBorrowRate,\n minBorrowRate,\n maxBorrowRate,\n liquidationThreshold,\n liquidationPenalty,\n borrowFee\n );\n }\n};\n\n// src/models/Slot.ts\nvar _Slot = class extends Decimal {\n constructor(value) {\n super(value);\n }\n static zero() {\n return _Slot.SLOT_ZERO;\n }\n static of(raw) {\n return new _Slot(raw);\n }\n static field(property) {\n return new SlotField(property);\n }\n replaceWithValue(value) {\n return _Slot.of(value);\n }\n};\nvar Slot = _Slot;\nSlot.SLOT_ZERO = _Slot.of(0);\nvar SlotField = class extends DecimalField {\n constructor(property) {\n super(BigType.U64, property);\n }\n fromBig(big) {\n return Slot.of(big);\n }\n};\n\n// src/models/TokenAccount.ts\nimport { AccountLayout, u64 as u642 } from \"@solana/spl-token\";\nimport { PublicKey as PublicKey20 } from \"@solana/web3.js\";\nvar TokenAccount = class {\n constructor(balanceId, walletId, mintId, amount) {\n this.splAccountId = balanceId;\n this.walletId = walletId;\n this.mintId = mintId;\n this.amount = amount;\n }\n static forNative(raw) {\n return new TokenAccount(\n TokenAccountId.of(raw.pubkey),\n WalletId.of(raw.pubkey),\n MintId.native(),\n Lamport.of(raw.account.lamports)\n );\n }\n static fromRaw(raw) {\n const buffer = Buffer.from(raw.account.data);\n const accountInfo = AccountLayout.decode(buffer);\n accountInfo.mint = new PublicKey20(accountInfo.mint);\n accountInfo.owner = new PublicKey20(accountInfo.owner);\n accountInfo.amount = u642.fromBuffer(accountInfo.amount);\n return new TokenAccount(\n TokenAccountId.of(raw.pubkey),\n WalletId.of(accountInfo.owner),\n MintId.of(accountInfo.mint),\n Lamport.of(accountInfo.amount)\n );\n }\n getId() {\n return this.getSplAccountId();\n }\n getSplAccountId() {\n return this.splAccountId;\n }\n getWalletId() {\n return this.walletId;\n }\n isNative() {\n return this.getMintId().isNative();\n }\n getMintId() {\n return this.mintId;\n }\n isPositive() {\n return this.amount.isPositive();\n }\n getAmount() {\n return this.amount;\n }\n};\n\n// src/models/TokenAccountContext.ts\nvar _TokenAccountContext = class {\n constructor(accounts, bySplAccountId) {\n this.accounts = accounts;\n this.bySplAccountId = bySplAccountId;\n }\n static empty() {\n return _TokenAccountContext.SPL_ACCOUNT_CONTEXT_EMPTY;\n }\n static index(accounts) {\n const bySplAccountId = /* @__PURE__ */ new Map();\n accounts.forEach(\n (a) => bySplAccountId.set(a.getSplAccountId().toString(), a)\n );\n return new _TokenAccountContext(accounts, bySplAccountId);\n }\n isReady() {\n return this.accounts.length > 0;\n }\n getAllTokenAccounts() {\n return this.accounts;\n }\n getSplAccount(splAccountId) {\n const result = this.findSplAccount(splAccountId);\n if (!result) {\n throw new Error(`No account for ${splAccountId}`);\n }\n return result;\n }\n findSplAccount(splAccountId) {\n const key = splAccountId.toString();\n return this.bySplAccountId.get(key);\n }\n getSplAccountByMintId(mintId) {\n const result = this.findSplAccountByMintId(mintId);\n if (!result) {\n throw new Error(`No account for mint ${mintId}`);\n }\n return result;\n }\n findSplAccountByMintId(mintId) {\n const accounts = this.accounts.filter((account) => account.getMintId().equals(mintId)).sort((a, b) => -a.getAmount().compare(b.getAmount()));\n return accounts[0];\n }\n};\nvar TokenAccountContext = _TokenAccountContext;\nTokenAccountContext.SPL_ACCOUNT_CONTEXT_EMPTY = _TokenAccountContext.index(\n []\n);\nexport {\n AdditionalReward,\n Apy,\n Asset,\n AssetConfig,\n AssetContext,\n AssetDepositConfig,\n AssetDisplayConfig,\n AssetExchangeRate,\n AssetPrice,\n AssetPriceConfig,\n AssetValue,\n AuthorityId,\n BigField,\n BigType,\n BlobField,\n Collateral,\n Comparable,\n DEFAULT_PORT_LENDING_MARKET,\n Decimal,\n DecimalField,\n ExchangeRate,\n Field,\n Id,\n Lamport,\n Loan,\n MARKET_MAP,\n Margin,\n MarginRatio,\n MarketId,\n MintId,\n Numerical,\n ObligationCollateralLayout,\n ObligationLayout,\n ObligationLiquidityLayout,\n Optional,\n OracleId,\n PORT_LENDING,\n PORT_PROFILE_DATA_SIZE,\n PORT_QUANTITY_CONTEXT,\n PORT_STAKING,\n Percentage,\n PortProfile,\n PortProfileContext,\n PortProfileId,\n PriceOracle,\n ProfileEntry,\n ProgramId,\n ProposedAction,\n PublicKeyField,\n QuantityContext,\n QuoteValue,\n RESERVE_DATA_SIZE,\n Ratio,\n ReserveAssetInfo,\n ReserveBorrowRate,\n ReserveCollateralLayout,\n ReserveConfigLayout,\n ReserveConfigProtoLayout,\n ReserveContext,\n ReserveFeesLayout,\n ReserveId,\n ReserveInfo,\n ReserveLayout,\n ReserveLiquidityLayout,\n ReserveParams,\n ReserveTokenInfo,\n ReserveUtilizationRatio,\n Share,\n Slot,\n SlotInfoLayout,\n StakingPoolId,\n Token,\n TokenAccount,\n TokenAccountContext,\n TokenAccountId,\n UintField,\n Value,\n ValueRatio,\n WalletId,\n WrappedDecimal,\n WrappedLamport,\n borrowObligationLiquidityInstruction,\n depositObligationCollateralInstruction,\n depositReserveLiquidityInstruction,\n isReserve,\n publicKey,\n redeemReserveCollateralInstruction,\n refreshReserveInstruction,\n uint128,\n uint64\n};\n//# sourceMappingURL=index.mjs.map","// src/instructions/refreshReserve.ts\nimport { TransactionInstruction } from \"@solana/web3.js\";\nimport * as BufferLayout from \"buffer-layout\";\nvar refreshReserveInstruction = (reserve, solendProgramAddress, oracle, switchboardFeedAddress) => {\n const dataLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\")]);\n const data = Buffer.alloc(dataLayout.span);\n dataLayout.encode({ instruction: 3 /* RefreshReserve */ }, data);\n const keys = [{ pubkey: reserve, isSigner: false, isWritable: true }];\n if (oracle) {\n keys.push({ pubkey: oracle, isSigner: false, isWritable: false });\n }\n if (switchboardFeedAddress) {\n keys.push({\n pubkey: switchboardFeedAddress,\n isSigner: false,\n isWritable: false\n });\n }\n return new TransactionInstruction({\n keys,\n programId: solendProgramAddress,\n data\n });\n};\n\n// src/state/lastUpdate.ts\nimport * as BufferLayout3 from \"buffer-layout\";\n\n// src/utils/layout.ts\nimport { PublicKey as PublicKey2 } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\nimport * as BufferLayout2 from \"buffer-layout\";\nvar publicKey = (property = \"publicKey\") => {\n const publicKeyLayout = BufferLayout2.blob(32, property);\n const _decode = publicKeyLayout.decode.bind(publicKeyLayout);\n const _encode = publicKeyLayout.encode.bind(publicKeyLayout);\n publicKeyLayout.decode = (buffer, offset2) => {\n const data = _decode(buffer, offset2);\n return new PublicKey2(data);\n };\n publicKeyLayout.encode = (key, buffer, offset2) => _encode(key.toBuffer(), buffer, offset2);\n return publicKeyLayout;\n};\nvar uint64 = (property = \"uint64\") => {\n const layout = BufferLayout2.blob(8, property);\n const _decode = layout.decode.bind(layout);\n const _encode = layout.encode.bind(layout);\n layout.decode = (buffer, offset2) => {\n const data = _decode(buffer, offset2);\n return new BN(\n [...data].reverse().map((i) => `00${i.toString(16)}`.slice(-2)).join(\"\"),\n 16\n );\n };\n layout.encode = (num, buffer, offset2) => {\n const a = num.toArray().reverse();\n let b = Buffer.from(a);\n if (b.length !== 8) {\n const zeroPad = Buffer.alloc(8);\n b.copy(zeroPad);\n b = zeroPad;\n }\n return _encode(b, buffer, offset2);\n };\n return layout;\n};\nvar uint128 = (property = \"uint128\") => {\n const layout = BufferLayout2.blob(16, property);\n const _decode = layout.decode.bind(layout);\n const _encode = layout.encode.bind(layout);\n layout.decode = (buffer, offset2) => {\n const data = _decode(buffer, offset2);\n return new BN(\n [...data].reverse().map((i) => `00${i.toString(16)}`.slice(-2)).join(\"\"),\n 16\n );\n };\n layout.encode = (num, buffer, offset2) => {\n const a = num.toArray().reverse();\n let b = Buffer.from(a);\n if (b.length !== 16) {\n const zeroPad = Buffer.alloc(16);\n b.copy(zeroPad);\n b = zeroPad;\n }\n return _encode(b, buffer, offset2);\n };\n return layout;\n};\n\n// src/state/lastUpdate.ts\nvar LastUpdateLayout = BufferLayout3.struct(\n [uint64(\"slot\"), BufferLayout3.u8(\"stale\")],\n \"lastUpdate\"\n);\n\n// src/state/lendingMarket.ts\nimport * as BufferLayout4 from \"buffer-layout\";\nvar LendingMarketLayout = BufferLayout4.struct([\n BufferLayout4.u8(\"version\"),\n BufferLayout4.u8(\"bumpSeed\"),\n publicKey(\"owner\"),\n publicKey(\"quoteTokenMint\"),\n publicKey(\"tokenProgramId\"),\n publicKey(\"oracleProgramId\"),\n publicKey(\"switchboardOracleProgramId\"),\n BufferLayout4.blob(128, \"padding\")\n]);\nvar LENDING_MARKET_SIZE = LendingMarketLayout.span;\nvar isLendingMarket = (info) => info.data.length === LendingMarketLayout.span;\nvar parseLendingMarket = (pubkey, info) => {\n const buffer = Buffer.from(info.data);\n const lendingMarket = LendingMarketLayout.decode(buffer);\n const details = {\n pubkey,\n account: {\n ...info\n },\n info: lendingMarket\n };\n return details;\n};\n\n// src/state/reserve.ts\nimport * as BufferLayout5 from \"buffer-layout\";\nimport { Buffer as Buffer2 } from \"buffer\";\nvar ReserveConfigLayout = BufferLayout5.struct(\n [\n BufferLayout5.u8(\"optimalUtilizationRate\"),\n BufferLayout5.u8(\"loanToValueRatio\"),\n BufferLayout5.u8(\"liquidationBonus\"),\n BufferLayout5.u8(\"liquidationThreshold\"),\n BufferLayout5.u8(\"minBorrowRate\"),\n BufferLayout5.u8(\"optimalBorrowRate\"),\n BufferLayout5.u8(\"maxBorrowRate\"),\n BufferLayout5.struct(\n [\n uint64(\"borrowFeeWad\"),\n uint64(\"flashLoanFeeWad\"),\n BufferLayout5.u8(\"hostFeePercentage\")\n ],\n \"fees\"\n ),\n uint64(\"depositLimit\"),\n uint64(\"borrowLimit\"),\n publicKey(\"feeReceiver\"),\n BufferLayout5.u8(\"protocolLiquidationFee\"),\n BufferLayout5.u8(\"protocolTakeRate\")\n ],\n \"config\"\n);\nvar ReserveLayout = BufferLayout5.struct(\n [\n BufferLayout5.u8(\"version\"),\n LastUpdateLayout,\n publicKey(\"lendingMarket\"),\n BufferLayout5.struct(\n [\n publicKey(\"mintPubkey\"),\n BufferLayout5.u8(\"mintDecimals\"),\n publicKey(\"supplyPubkey\"),\n publicKey(\"pythOracle\"),\n publicKey(\"switchboardOracle\"),\n uint64(\"availableAmount\"),\n uint128(\"borrowedAmountWads\"),\n uint128(\"cumulativeBorrowRateWads\"),\n uint128(\"marketPrice\")\n ],\n \"liquidity\"\n ),\n BufferLayout5.struct(\n [\n publicKey(\"mintPubkey\"),\n uint64(\"mintTotalSupply\"),\n publicKey(\"supplyPubkey\")\n ],\n \"collateral\"\n ),\n ReserveConfigLayout,\n BufferLayout5.blob(247, \"padding\")\n ]\n);\nvar RESERVE_SIZE = ReserveLayout.span;\nvar isReserve = (info) => info.data.length === ReserveLayout.span;\nvar parseReserve = (pubkey, info) => {\n const { data } = info;\n const buffer = Buffer2.from(data);\n const reserve = ReserveLayout.decode(buffer);\n if (reserve.lastUpdate.slot.isZero()) {\n return null;\n }\n const details = {\n pubkey,\n account: {\n ...info\n },\n info: reserve\n };\n return details;\n};\nfunction reserveToString(reserve) {\n return JSON.stringify(\n reserve,\n (key, value) => {\n if (key === \"padding\") {\n return null;\n }\n switch (value.constructor.name) {\n case \"PublicKey\":\n return value.toBase58();\n case \"BN\":\n return value.toString();\n default:\n return value;\n }\n },\n 2\n );\n}\n\n// src/state/obligation.ts\nimport BN2 from \"bn.js\";\nimport * as BufferLayout6 from \"buffer-layout\";\nBN2.prototype.toJSON = void 0;\nfunction obligationToString(obligation) {\n return JSON.stringify(\n obligation,\n (key, value) => {\n if (key === \"padding\") {\n return null;\n }\n switch (value.constructor.name) {\n case \"PublicKey\":\n return value.toBase58();\n case \"BN\":\n return value.toString();\n default:\n return value;\n }\n },\n 2\n );\n}\nvar ObligationLayout = BufferLayout6.struct([\n BufferLayout6.u8(\"version\"),\n LastUpdateLayout,\n publicKey(\"lendingMarket\"),\n publicKey(\"owner\"),\n uint128(\"depositedValue\"),\n uint128(\"borrowedValue\"),\n uint128(\"allowedBorrowValue\"),\n uint128(\"unhealthyBorrowValue\"),\n BufferLayout6.blob(64, \"_padding\"),\n BufferLayout6.u8(\"depositsLen\"),\n BufferLayout6.u8(\"borrowsLen\"),\n BufferLayout6.blob(1096, \"dataFlat\")\n]);\nvar ObligationCollateralLayout = BufferLayout6.struct([\n publicKey(\"depositReserve\"),\n uint64(\"depositedAmount\"),\n uint128(\"marketValue\"),\n BufferLayout6.blob(32, \"padding\")\n]);\nvar ObligationLiquidityLayout = BufferLayout6.struct([\n publicKey(\"borrowReserve\"),\n uint128(\"cumulativeBorrowRateWads\"),\n uint128(\"borrowedAmountWads\"),\n uint128(\"marketValue\"),\n BufferLayout6.blob(32, \"padding\")\n]);\nvar OBLIGATION_SIZE = ObligationLayout.span;\nvar isObligation = (info) => info.data.length === ObligationLayout.span;\nvar parseObligation = (pubkey, info) => {\n const { data } = info;\n const buffer = Buffer.from(data);\n const {\n version,\n lastUpdate,\n lendingMarket,\n owner,\n depositedValue,\n borrowedValue,\n allowedBorrowValue,\n unhealthyBorrowValue,\n depositsLen,\n borrowsLen,\n dataFlat\n } = ObligationLayout.decode(buffer);\n if (lastUpdate.slot.isZero()) {\n return null;\n }\n const depositsBuffer = dataFlat.slice(\n 0,\n depositsLen * ObligationCollateralLayout.span\n );\n const deposits = BufferLayout6.seq(\n ObligationCollateralLayout,\n depositsLen\n ).decode(depositsBuffer);\n const borrowsBuffer = dataFlat.slice(\n depositsBuffer.length,\n depositsLen * ObligationCollateralLayout.span + borrowsLen * ObligationLiquidityLayout.span\n );\n const borrows = BufferLayout6.seq(\n ObligationLiquidityLayout,\n borrowsLen\n ).decode(borrowsBuffer);\n const obligation = {\n version,\n lastUpdate,\n lendingMarket,\n owner,\n depositedValue,\n borrowedValue,\n allowedBorrowValue,\n unhealthyBorrowValue,\n deposits,\n borrows\n };\n const details = {\n pubkey,\n account: {\n ...info\n },\n info: obligation\n };\n return details;\n};\nexport {\n LENDING_MARKET_SIZE,\n LastUpdateLayout,\n LendingMarketLayout,\n OBLIGATION_SIZE,\n ObligationCollateralLayout,\n ObligationLayout,\n ObligationLiquidityLayout,\n RESERVE_SIZE,\n ReserveConfigLayout,\n ReserveLayout,\n isLendingMarket,\n isObligation,\n isReserve,\n obligationToString,\n parseLendingMarket,\n parseObligation,\n parseReserve,\n refreshReserveInstruction,\n reserveToString\n};\n//# sourceMappingURL=index.mjs.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { PublicKey, SYSVAR_CLOCK_PUBKEY, SystemProgram, } from '@solana/web3.js';\nimport { TOKEN_PROGRAM_ID } from '@solana/spl-token';\nimport BN from 'bn.js';\nimport { SEEDS, SOL_MINT } from '../constants';\nimport { getOrCreateATAInstruction } from '../utils';\nconst FRAKT_PROGRAM_ID = new PublicKey('A66HabVL3DzNzeJgcHYtRRNW1ZRMKwBfrdSR4kLsZ9DJ');\nconst FRAKT_ADMIN_FEE_PUBKEY = new PublicKey('9aTtUqAnuSMndCpjcPosRNf3fCkrTQAV8C8GERf3tZi3');\nexport default class FraktHandler {\n constructor(program) {\n this.connection = program.provider.connection;\n }\n withdraw(walletPubKey, program, strategy, vault, tokenVault, vaultState, userToken, userLp, amount, preInstructions, postInstructions, opt) {\n return __awaiter(this, void 0, void 0, function* () {\n if (!walletPubKey)\n throw new Error('No user wallet public key');\n const [liqOwner] = yield PublicKey.findProgramAddress([Buffer.from(SEEDS.FRAKT_LENDING), strategy.state.reserve.toBuffer()], FRAKT_PROGRAM_ID);\n const strategyBuffer = new PublicKey(strategy.pubkey).toBuffer();\n const strategyReserveBuffer = new PublicKey(strategy.state.reserve).toBuffer();\n const [collateralVault] = yield PublicKey.findProgramAddress([Buffer.from(SEEDS.COLLATERAL_VAULT_PREFIX), strategyBuffer], program.programId);\n const [strategyOwner] = yield PublicKey.findProgramAddress([Buffer.from(SEEDS.FRAKT), strategyBuffer], program.programId);\n const [tokenAccount, createTokenAccountIx] = yield getOrCreateATAInstruction(SOL_MINT, strategyOwner, this.connection, {\n payer: walletPubKey,\n });\n createTokenAccountIx && preInstructions.push(createTokenAccountIx);\n const [deposit] = yield PublicKey.findProgramAddress([Buffer.from(SEEDS.DEPOSIT), strategyReserveBuffer, new PublicKey(strategyOwner).toBuffer()], FRAKT_PROGRAM_ID);\n const accounts = [\n { pubkey: strategyOwner, isWritable: true },\n { pubkey: tokenAccount, isWritable: true },\n { pubkey: liqOwner, isWritable: true },\n { pubkey: deposit, isWritable: true },\n { pubkey: FRAKT_ADMIN_FEE_PUBKEY, isWritable: true },\n { pubkey: SystemProgram.programId },\n { pubkey: SYSVAR_CLOCK_PUBKEY },\n ];\n const remainingAccounts = [];\n for (const account of accounts) {\n remainingAccounts.push({\n pubkey: account.pubkey,\n isWritable: !!account.isWritable,\n isSigner: false,\n });\n }\n // prevent duplicate as spot market account pubkey will be add on program side\n const remainingAccountsWithoutReserve = remainingAccounts.filter(({ pubkey }) => !pubkey.equals(strategy.state.reserve));\n const txAccounts = {\n vault,\n strategy: new PublicKey(strategy.pubkey),\n reserve: new PublicKey(strategy.state.reserve),\n strategyProgram: FRAKT_PROGRAM_ID,\n collateralVault,\n feeVault: vaultState.feeVault,\n tokenVault,\n userToken,\n userLp,\n tokenProgram: TOKEN_PROGRAM_ID,\n };\n if (opt === null || opt === void 0 ? void 0 : opt.affiliate) {\n const tx = yield opt.affiliate.affiliateProgram.methods\n .withdrawDirectlyFromStrategy(new BN(amount), new BN(0))\n .accounts(Object.assign(Object.assign({}, txAccounts), { partner: opt.affiliate.partner, user: opt.affiliate.user, vaultProgram: program.programId, vaultLpMint: vaultState.lpMint, owner: walletPubKey }))\n .remainingAccounts(remainingAccountsWithoutReserve)\n .preInstructions(preInstructions)\n .postInstructions(postInstructions)\n .transaction();\n return tx;\n }\n const tx = yield program.methods\n .withdrawDirectlyFromStrategy(new BN(amount), new BN(0))\n .accounts(Object.assign(Object.assign({}, txAccounts), { lpMint: vaultState.lpMint, user: walletPubKey }))\n .remainingAccounts(remainingAccountsWithoutReserve)\n .preInstructions(preInstructions)\n .postInstructions(postInstructions)\n .transaction();\n return tx;\n });\n }\n}\n//# sourceMappingURL=frakt.js.map","import { Buffer as Buffer$1 } from 'buffer';\nimport { PublicKey, Transaction, TransactionInstruction, SendTransactionError, NONCE_ACCOUNT_LENGTH, SystemProgram, SYSVAR_RENT_PUBKEY, SYSVAR_CLOCK_PUBKEY } from '@solana/web3.js';\nimport * as web3_js from '@solana/web3.js';\nexport { web3_js as web3 };\nimport BN from 'bn.js';\nexport { default as BN } from 'bn.js';\nimport bs58$1 from 'bs58';\nimport * as base64$1 from 'base64-js';\nimport camelCase from 'camelcase';\nimport { sha256 as sha256$1 } from 'js-sha256';\nimport * as borsh from '@coral-xyz/borsh';\nimport { inflate } from 'pako';\nimport EventEmitter from 'eventemitter3';\nimport * as assert$1 from 'assert';\n\n/**\n * Splits an array into chunks\n *\n * @param array Array of objects to chunk.\n * @param size The max size of a chunk.\n * @returns A two dimensional array where each T[] length is < the provided size.\n */\nfunction chunks(array, size) {\n return Array.apply(0, new Array(Math.ceil(array.length / size))).map((_, index) => array.slice(index * size, (index + 1) * size));\n}\n\nfunction encode$3(data) {\n return data.reduce((str, byte) => str + byte.toString(16).padStart(2, \"0\"), \"0x\");\n}\nfunction decode$3(data) {\n if (data.indexOf(\"0x\") === 0) {\n data = data.substr(2);\n }\n if (data.length % 2 === 1) {\n data = \"0\" + data;\n }\n let key = data.match(/.{2}/g);\n if (key === null) {\n return Buffer$1.from([]);\n }\n return Buffer$1.from(key.map((byte) => parseInt(byte, 16)));\n}\n\nvar hex = /*#__PURE__*/Object.freeze({\n __proto__: null,\n encode: encode$3,\n decode: decode$3\n});\n\nfunction decode$2(array) {\n const decoder = new TextDecoder(\"utf-8\") // Browser https://caniuse.com/textencoder.\n ; // Node.\n return decoder.decode(array);\n}\nfunction encode$2(input) {\n const encoder = new TextEncoder() // Browser.\n ; // Node.\n return encoder.encode(input);\n}\n\nvar utf8 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n decode: decode$2,\n encode: encode$2\n});\n\nfunction encode$1(data) {\n return bs58$1.encode(data);\n}\nfunction decode$1(data) {\n return bs58$1.decode(data);\n}\n\nvar bs58 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n encode: encode$1,\n decode: decode$1\n});\n\nfunction encode(data) {\n return base64$1.fromByteArray(data);\n}\nfunction decode(data) {\n return Buffer$1.from(base64$1.toByteArray(data));\n}\n\nvar base64 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n encode: encode,\n decode: decode\n});\n\nvar index$1 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n hex: hex,\n utf8: utf8,\n bs58: bs58,\n base64: base64\n});\n\nfunction parseIdlErrors(idl) {\n const errors = new Map();\n if (idl.errors) {\n idl.errors.forEach((e) => {\n var _a;\n let msg = (_a = e.msg) !== null && _a !== void 0 ? _a : e.name;\n errors.set(e.code, msg);\n });\n }\n return errors;\n}\n// Allow either IdLInstruction or IdlStateMethod since the types share fields.\nfunction toInstruction(idlIx, ...args) {\n if (idlIx.args.length != args.length) {\n throw new Error(\"Invalid argument length\");\n }\n const ix = {};\n let idx = 0;\n idlIx.args.forEach((ixArg) => {\n ix[ixArg.name] = args[idx];\n idx += 1;\n });\n return ix;\n}\n// Throws error if any account required for the `ix` is not given.\nfunction validateAccounts(ixAccounts, accounts = {}) {\n ixAccounts.forEach((acc) => {\n if (\"accounts\" in acc) {\n validateAccounts(acc.accounts, accounts[acc.name]);\n }\n else {\n if (accounts[acc.name] === undefined) {\n throw new Error(`Invalid arguments: ${acc.name} not provided.`);\n }\n }\n });\n}\n// Translates an address to a Pubkey.\nfunction translateAddress(address) {\n return address instanceof PublicKey ? address : new PublicKey(address);\n}\n\n/**\n * A `StructFailure` represents a single specific failure in validation.\n */\n\n/**\n * `StructError` objects are thrown (or returned) when validation fails.\n *\n * Validation logic is design to exit early for maximum performance. The error\n * represents the first error encountered during validation. For more detail,\n * the `error.failures` property is a generator function that can be run to\n * continue validation and receive all the failures in the data.\n */\nclass StructError extends TypeError {\n constructor(failure, failures) {\n let cached;\n const {\n message,\n ...rest\n } = failure;\n const {\n path\n } = failure;\n const msg = path.length === 0 ? message : \"At path: \" + path.join('.') + \" -- \" + message;\n super(msg);\n this.value = void 0;\n this.key = void 0;\n this.type = void 0;\n this.refinement = void 0;\n this.path = void 0;\n this.branch = void 0;\n this.failures = void 0;\n Object.assign(this, rest);\n this.name = this.constructor.name;\n\n this.failures = () => {\n var _cached;\n\n return (_cached = cached) != null ? _cached : cached = [failure, ...failures()];\n };\n }\n\n}\n\n/**\n * Check if a value is an iterator.\n */\nfunction isIterable(x) {\n return isObject(x) && typeof x[Symbol.iterator] === 'function';\n}\n/**\n * Check if a value is a plain object.\n */\n\n\nfunction isObject(x) {\n return typeof x === 'object' && x != null;\n}\n/**\n * Return a value as a printable string.\n */\n\nfunction print(value) {\n return typeof value === 'string' ? JSON.stringify(value) : \"\" + value;\n}\n/**\n * Shifts (removes and returns) the first value from the `input` iterator.\n * Like `Array.prototype.shift()` but for an `Iterator`.\n */\n\nfunction shiftIterator(input) {\n const {\n done,\n value\n } = input.next();\n return done ? undefined : value;\n}\n/**\n * Convert a single validation result to a failure.\n */\n\nfunction toFailure(result, context, struct, value) {\n if (result === true) {\n return;\n } else if (result === false) {\n result = {};\n } else if (typeof result === 'string') {\n result = {\n message: result\n };\n }\n\n const {\n path,\n branch\n } = context;\n const {\n type\n } = struct;\n const {\n refinement,\n message = \"Expected a value of type `\" + type + \"`\" + (refinement ? \" with refinement `\" + refinement + \"`\" : '') + \", but received: `\" + print(value) + \"`\"\n } = result;\n return {\n value,\n type,\n refinement,\n key: path[path.length - 1],\n path,\n branch,\n ...result,\n message\n };\n}\n/**\n * Convert a validation result to an iterable of failures.\n */\n\nfunction* toFailures(result, context, struct, value) {\n if (!isIterable(result)) {\n result = [result];\n }\n\n for (const r of result) {\n const failure = toFailure(r, context, struct, value);\n\n if (failure) {\n yield failure;\n }\n }\n}\n/**\n * Check a value against a struct, traversing deeply into nested values, and\n * returning an iterator of failures or success.\n */\n\nfunction* run(value, struct, options) {\n if (options === void 0) {\n options = {};\n }\n\n const {\n path = [],\n branch = [value],\n coerce = false,\n mask = false\n } = options;\n const ctx = {\n path,\n branch\n };\n\n if (coerce) {\n value = struct.coercer(value, ctx);\n\n if (mask && struct.type !== 'type' && isObject(struct.schema) && isObject(value) && !Array.isArray(value)) {\n for (const key in value) {\n if (struct.schema[key] === undefined) {\n delete value[key];\n }\n }\n }\n }\n\n let valid = true;\n\n for (const failure of struct.validator(value, ctx)) {\n valid = false;\n yield [failure, undefined];\n }\n\n for (let [k, v, s] of struct.entries(value, ctx)) {\n const ts = run(v, s, {\n path: k === undefined ? path : [...path, k],\n branch: k === undefined ? branch : [...branch, v],\n coerce,\n mask\n });\n\n for (const t of ts) {\n if (t[0]) {\n valid = false;\n yield [t[0], undefined];\n } else if (coerce) {\n v = t[1];\n\n if (k === undefined) {\n value = v;\n } else if (value instanceof Map) {\n value.set(k, v);\n } else if (value instanceof Set) {\n value.add(v);\n } else if (isObject(value)) {\n value[k] = v;\n }\n }\n }\n }\n\n if (valid) {\n for (const failure of struct.refiner(value, ctx)) {\n valid = false;\n yield [failure, undefined];\n }\n }\n\n if (valid) {\n yield [undefined, value];\n }\n}\n\n/**\n * `Struct` objects encapsulate the validation logic for a specific type of\n * values. Once constructed, you use the `assert`, `is` or `validate` helpers to\n * validate unknown input data against the struct.\n */\n\nclass Struct {\n constructor(props) {\n this.TYPE = void 0;\n this.type = void 0;\n this.schema = void 0;\n this.coercer = void 0;\n this.validator = void 0;\n this.refiner = void 0;\n this.entries = void 0;\n const {\n type,\n schema,\n validator,\n refiner,\n coercer = value => value,\n entries = function* () {}\n } = props;\n this.type = type;\n this.schema = schema;\n this.entries = entries;\n this.coercer = coercer;\n\n if (validator) {\n this.validator = (value, context) => {\n const result = validator(value, context);\n return toFailures(result, context, this, value);\n };\n } else {\n this.validator = () => [];\n }\n\n if (refiner) {\n this.refiner = (value, context) => {\n const result = refiner(value, context);\n return toFailures(result, context, this, value);\n };\n } else {\n this.refiner = () => [];\n }\n }\n /**\n * Assert that a value passes the struct's validation, throwing if it doesn't.\n */\n\n\n assert(value) {\n return assert(value, this);\n }\n /**\n * Create a value with the struct's coercion logic, then validate it.\n */\n\n\n create(value) {\n return create(value, this);\n }\n /**\n * Check if a value passes the struct's validation.\n */\n\n\n is(value) {\n return is(value, this);\n }\n /**\n * Mask a value, coercing and validating it, but returning only the subset of\n * properties defined by the struct's schema.\n */\n\n\n mask(value) {\n return mask(value, this);\n }\n /**\n * Validate a value with the struct's validation logic, returning a tuple\n * representing the result.\n *\n * You may optionally pass `true` for the `withCoercion` argument to coerce\n * the value before attempting to validate it. If you do, the result will\n * contain the coerced result when successful.\n */\n\n\n validate(value, options) {\n if (options === void 0) {\n options = {};\n }\n\n return validate(value, this, options);\n }\n\n}\n/**\n * Assert that a value passes a struct, throwing if it doesn't.\n */\n\nfunction assert(value, struct) {\n const result = validate(value, struct);\n\n if (result[0]) {\n throw result[0];\n }\n}\n/**\n * Create a value with the coercion logic of struct and validate it.\n */\n\nfunction create(value, struct) {\n const result = validate(value, struct, {\n coerce: true\n });\n\n if (result[0]) {\n throw result[0];\n } else {\n return result[1];\n }\n}\n/**\n * Mask a value, returning only the subset of properties defined by a struct.\n */\n\nfunction mask(value, struct) {\n const result = validate(value, struct, {\n coerce: true,\n mask: true\n });\n\n if (result[0]) {\n throw result[0];\n } else {\n return result[1];\n }\n}\n/**\n * Check if a value passes a struct.\n */\n\nfunction is(value, struct) {\n const result = validate(value, struct);\n return !result[0];\n}\n/**\n * Validate a value against a struct, returning an error if invalid, or the\n * value (with potential coercion) if valid.\n */\n\nfunction validate(value, struct, options) {\n if (options === void 0) {\n options = {};\n }\n\n const tuples = run(value, struct, options);\n const tuple = shiftIterator(tuples);\n\n if (tuple[0]) {\n const error = new StructError(tuple[0], function* () {\n for (const t of tuples) {\n if (t[0]) {\n yield t[0];\n }\n }\n });\n return [error, undefined];\n } else {\n const v = tuple[1];\n return [undefined, v];\n }\n}\n/**\n * Define a new struct type with a custom validation function.\n */\n\nfunction define(name, validator) {\n return new Struct({\n type: name,\n schema: null,\n validator\n });\n}\n\n/**\n * Ensure that any value passes validation.\n */\n\nfunction any() {\n return define('any', () => true);\n}\nfunction array(Element) {\n return new Struct({\n type: 'array',\n schema: Element,\n\n *entries(value) {\n if (Element && Array.isArray(value)) {\n for (const [i, v] of value.entries()) {\n yield [i, v, Element];\n }\n }\n },\n\n coercer(value) {\n return Array.isArray(value) ? value.slice() : value;\n },\n\n validator(value) {\n return Array.isArray(value) || \"Expected an array value, but received: \" + print(value);\n }\n\n });\n}\n/**\n * Ensure that a value is a boolean.\n */\n\nfunction boolean() {\n return define('boolean', value => {\n return typeof value === 'boolean';\n });\n}\nfunction literal(constant) {\n const description = print(constant);\n const t = typeof constant;\n return new Struct({\n type: 'literal',\n schema: t === 'string' || t === 'number' || t === 'boolean' ? constant : null,\n\n validator(value) {\n return value === constant || \"Expected the literal `\" + description + \"`, but received: \" + print(value);\n }\n\n });\n}\n/**\n * Augment an existing struct to allow `null` values.\n */\n\nfunction nullable(struct) {\n return new Struct({ ...struct,\n validator: (value, ctx) => value === null || struct.validator(value, ctx),\n refiner: (value, ctx) => value === null || struct.refiner(value, ctx)\n });\n}\n/**\n * Ensure that a value is a number.\n */\n\nfunction number() {\n return define('number', value => {\n return typeof value === 'number' && !isNaN(value) || \"Expected a number, but received: \" + print(value);\n });\n}\n/**\n * Augment a struct to allow `undefined` values.\n */\n\nfunction optional(struct) {\n return new Struct({ ...struct,\n validator: (value, ctx) => value === undefined || struct.validator(value, ctx),\n refiner: (value, ctx) => value === undefined || struct.refiner(value, ctx)\n });\n}\n/**\n * Ensure that a value is a string.\n */\n\nfunction string() {\n return define('string', value => {\n return typeof value === 'string' || \"Expected a string, but received: \" + print(value);\n });\n}\n/**\n * Ensure that a value has a set of known properties of specific types.\n *\n * Note: Unrecognized properties are allowed and untouched. This is similar to\n * how TypeScript's structural typing works.\n */\n\nfunction type(schema) {\n const keys = Object.keys(schema);\n return new Struct({\n type: 'type',\n schema,\n\n *entries(value) {\n if (isObject(value)) {\n for (const k of keys) {\n yield [k, value[k], schema[k]];\n }\n }\n },\n\n validator(value) {\n return isObject(value) || \"Expected an object, but received: \" + print(value);\n }\n\n });\n}\n/**\n * Ensure that a value matches one of a set of types.\n */\n\nfunction union$1(Structs) {\n const description = Structs.map(s => s.type).join(' | ');\n return new Struct({\n type: 'union',\n schema: null,\n\n coercer(value, ctx) {\n const firstMatch = Structs.find(s => {\n const [e] = s.validate(value, {\n coerce: true\n });\n return !e;\n }) || unknown();\n return firstMatch.coercer(value, ctx);\n },\n\n validator(value, ctx) {\n const failures = [];\n\n for (const S of Structs) {\n const [...tuples] = run(value, S, ctx);\n const [first] = tuples;\n\n if (!first[0]) {\n return [];\n } else {\n for (const [failure] of tuples) {\n if (failure) {\n failures.push(failure);\n }\n }\n }\n }\n\n return [\"Expected the value to satisfy a union of `\" + description + \"`, but received: \" + print(value), ...failures];\n }\n\n });\n}\n/**\n * Ensure that any value passes validation, without widening its type to `any`.\n */\n\nfunction unknown() {\n return define('unknown', () => true);\n}\n\n/**\n * Augment a `Struct` to add an additional coercion step to its input.\n *\n * This allows you to transform input data before validating it, to increase the\n * likelihood that it passes validation—for example for default values, parsing\n * different formats, etc.\n *\n * Note: You must use `create(value, Struct)` on the value to have the coercion\n * take effect! Using simply `assert()` or `is()` will not use coercion.\n */\n\nfunction coerce(struct, condition, coercer) {\n return new Struct({ ...struct,\n coercer: (value, ctx) => {\n return is(value, condition) ? struct.coercer(coercer(value, ctx), ctx) : struct.coercer(value, ctx);\n }\n });\n}\n\n/**\n * Sends a transaction to a program with the given accounts and instruction\n * data.\n */\nasync function invoke(programId, accounts, data, provider) {\n programId = translateAddress(programId);\n if (!provider) {\n provider = getProvider();\n }\n const tx = new Transaction();\n tx.add(new TransactionInstruction({\n programId,\n keys: accounts !== null && accounts !== void 0 ? accounts : [],\n data,\n }));\n if (provider.sendAndConfirm === undefined) {\n throw new Error(\"This function requires 'Provider.sendAndConfirm' to be implemented.\");\n }\n return await provider.sendAndConfirm(tx, []);\n}\nconst GET_MULTIPLE_ACCOUNTS_LIMIT = 99;\nasync function getMultipleAccounts(connection, publicKeys, commitment) {\n const results = await getMultipleAccountsAndContext(connection, publicKeys, commitment);\n return results.map((result) => {\n return result\n ? { publicKey: result.publicKey, account: result.account }\n : null;\n });\n}\nasync function getMultipleAccountsAndContext(connection, publicKeys, commitment) {\n if (publicKeys.length <= GET_MULTIPLE_ACCOUNTS_LIMIT) {\n return await getMultipleAccountsAndContextCore(connection, publicKeys, commitment);\n }\n else {\n const batches = chunks(publicKeys, GET_MULTIPLE_ACCOUNTS_LIMIT);\n const results = await Promise.all(batches.map((batch) => getMultipleAccountsAndContextCore(connection, batch, commitment)));\n return results.flat();\n }\n}\nasync function getMultipleAccountsAndContextCore(connection, publicKeys, commitmentOverride) {\n const commitment = commitmentOverride !== null && commitmentOverride !== void 0 ? commitmentOverride : connection.commitment;\n const { value: accountInfos, context } = await connection.getMultipleAccountsInfoAndContext(publicKeys, commitment);\n const accounts = accountInfos.map((account, idx) => {\n if (account === null) {\n return null;\n }\n return {\n publicKey: publicKeys[idx],\n account,\n context,\n };\n });\n return accounts;\n}\n// copy from @solana/web3.js that has a commitment param\nasync function simulateTransaction(connection, transaction, signers, commitment, includeAccounts) {\n if (signers && signers.length > 0) {\n transaction.sign(...signers);\n }\n // @ts-expect-error\n const message = transaction._compile();\n const signData = message.serialize();\n // @ts-expect-error\n const wireTransaction = transaction._serialize(signData);\n const encodedTransaction = wireTransaction.toString(\"base64\");\n const config = {\n encoding: \"base64\",\n commitment: commitment !== null && commitment !== void 0 ? commitment : connection.commitment,\n };\n if (includeAccounts) {\n const addresses = (Array.isArray(includeAccounts) ? includeAccounts : message.nonProgramIds()).map((key) => key.toBase58());\n config[\"accounts\"] = {\n encoding: \"base64\",\n addresses,\n };\n }\n if (signers) {\n config.sigVerify = true;\n }\n const args = [encodedTransaction, config];\n // @ts-expect-error\n const unsafeRes = await connection._rpcRequest(\"simulateTransaction\", args);\n const res = create(unsafeRes, SimulatedTransactionResponseStruct);\n if (\"error\" in res) {\n let logs;\n if (\"data\" in res.error) {\n logs = res.error.data.logs;\n if (logs && Array.isArray(logs)) {\n const traceIndent = \"\\n \";\n const logTrace = traceIndent + logs.join(traceIndent);\n console.error(res.error.message, logTrace);\n }\n }\n throw new SendTransactionError(\"failed to simulate transaction: \" + res.error.message, logs);\n }\n return res.result;\n}\n// copy from @solana/web3.js\nfunction jsonRpcResult(schema) {\n return coerce(createRpcResult(schema), UnknownRpcResult, (value) => {\n if (\"error\" in value) {\n return value;\n }\n else {\n return {\n ...value,\n result: create(value.result, schema),\n };\n }\n });\n}\n// copy from @solana/web3.js\nconst UnknownRpcResult = createRpcResult(unknown());\n// copy from @solana/web3.js\nfunction createRpcResult(result) {\n return union$1([\n type({\n jsonrpc: literal(\"2.0\"),\n id: string(),\n result,\n }),\n type({\n jsonrpc: literal(\"2.0\"),\n id: string(),\n error: type({\n code: unknown(),\n message: string(),\n data: optional(any()),\n }),\n }),\n ]);\n}\n// copy from @solana/web3.js\nfunction jsonRpcResultAndContext(value) {\n return jsonRpcResult(type({\n context: type({\n slot: number(),\n }),\n value,\n }));\n}\n// copy from @solana/web3.js\nconst SimulatedTransactionResponseStruct = jsonRpcResultAndContext(type({\n err: nullable(union$1([type({}), string()])),\n logs: nullable(array(string())),\n accounts: optional(nullable(array(nullable(type({\n executable: boolean(),\n owner: string(),\n lamports: number(),\n data: array(string()),\n rentEpoch: optional(number()),\n }))))),\n unitsConsumed: optional(number()),\n}));\n\nvar rpc = /*#__PURE__*/Object.freeze({\n __proto__: null,\n invoke: invoke,\n getMultipleAccounts: getMultipleAccounts,\n getMultipleAccountsAndContext: getMultipleAccountsAndContext,\n simulateTransaction: simulateTransaction\n});\n\n/**\n * The network and wallet context used to send transactions paid for and signed\n * by the provider.\n */\nclass AnchorProvider {\n /**\n * @param connection The cluster connection where the program is deployed.\n * @param wallet The wallet used to pay for and sign all transactions.\n * @param opts Transaction confirmation options to use by default.\n */\n constructor(connection, wallet, opts) {\n this.connection = connection;\n this.wallet = wallet;\n this.opts = opts;\n this.publicKey = wallet === null || wallet === void 0 ? void 0 : wallet.publicKey;\n }\n static defaultOptions() {\n return {\n preflightCommitment: \"processed\",\n commitment: \"processed\",\n };\n }\n /**\n * Returns a `Provider` with a wallet read from the local filesystem.\n *\n * @param url The network cluster url.\n * @param opts The default transaction confirmation options.\n *\n * (This api is for Node only.)\n */\n static local(url, opts) {\n {\n throw new Error(`Provider local is not available on browser.`);\n }\n }\n /**\n * Returns a `Provider` read from the `ANCHOR_PROVIDER_URL` environment\n * variable\n *\n * (This api is for Node only.)\n */\n static env() {\n {\n throw new Error(`Provider env is not available on browser.`);\n }\n }\n /**\n * Sends the given transaction, paid for and signed by the provider's wallet.\n *\n * @param tx The transaction to send.\n * @param signers The signers of the transaction.\n * @param opts Transaction confirmation options.\n */\n async sendAndConfirm(tx, signers, opts) {\n var _a;\n if (opts === undefined) {\n opts = this.opts;\n }\n tx.feePayer = tx.feePayer || this.wallet.publicKey;\n tx.recentBlockhash = (await this.connection.getLatestBlockhash(opts.preflightCommitment)).blockhash;\n tx = await this.wallet.signTransaction(tx);\n (signers !== null && signers !== void 0 ? signers : []).forEach((kp) => {\n tx.partialSign(kp);\n });\n const rawTx = tx.serialize();\n try {\n return await sendAndConfirmRawTransaction(this.connection, rawTx, opts);\n }\n catch (err) {\n // thrown if the underlying 'confirmTransaction' encounters a failed tx\n // the 'confirmTransaction' error does not return logs so we make another rpc call to get them\n if (err instanceof ConfirmError) {\n // choose the shortest available commitment for 'getTransaction'\n // (the json RPC does not support any shorter than \"confirmed\" for 'getTransaction')\n // because that will see the tx sent with `sendAndConfirmRawTransaction` no matter which\n // commitment `sendAndConfirmRawTransaction` used\n const failedTx = await this.connection.getTransaction(encode$1(tx.signature), { commitment: \"confirmed\" });\n if (!failedTx) {\n throw err;\n }\n else {\n const logs = (_a = failedTx.meta) === null || _a === void 0 ? void 0 : _a.logMessages;\n throw !logs ? err : new SendTransactionError(err.message, logs);\n }\n }\n else {\n throw err;\n }\n }\n }\n /**\n * Similar to `send`, but for an array of transactions and signers.\n *\n * @param txWithSigners Array of transactions and signers.\n * @param opts Transaction confirmation options.\n */\n async sendAll(txWithSigners, opts) {\n var _a;\n if (opts === undefined) {\n opts = this.opts;\n }\n const blockhash = await this.connection.getLatestBlockhash(opts.preflightCommitment);\n let txs = txWithSigners.map((r) => {\n var _a;\n let tx = r.tx;\n let signers = (_a = r.signers) !== null && _a !== void 0 ? _a : [];\n tx.feePayer = tx.feePayer || this.wallet.publicKey;\n tx.recentBlockhash = blockhash.blockhash;\n signers.forEach((kp) => {\n tx.partialSign(kp);\n });\n return tx;\n });\n const signedTxs = await this.wallet.signAllTransactions(txs);\n const sigs = [];\n for (let k = 0; k < txs.length; k += 1) {\n const tx = signedTxs[k];\n const rawTx = tx.serialize();\n try {\n sigs.push(await sendAndConfirmRawTransaction(this.connection, rawTx, opts));\n }\n catch (err) {\n // thrown if the underlying 'confirmTransaction' encounters a failed tx\n // the 'confirmTransaction' error does not return logs so we make another rpc call to get them\n if (err instanceof ConfirmError) {\n // choose the shortest available commitment for 'getTransaction'\n // (the json RPC does not support any shorter than \"confirmed\" for 'getTransaction')\n // because that will see the tx sent with `sendAndConfirmRawTransaction` no matter which\n // commitment `sendAndConfirmRawTransaction` used\n const failedTx = await this.connection.getTransaction(encode$1(tx.signature), { commitment: \"confirmed\" });\n if (!failedTx) {\n throw err;\n }\n else {\n const logs = (_a = failedTx.meta) === null || _a === void 0 ? void 0 : _a.logMessages;\n throw !logs ? err : new SendTransactionError(err.message, logs);\n }\n }\n else {\n throw err;\n }\n }\n }\n return sigs;\n }\n /**\n * Simulates the given transaction, returning emitted logs from execution.\n *\n * @param tx The transaction to send.\n * @param signers The signers of the transaction.\n * @param opts Transaction confirmation options.\n */\n async simulate(tx, signers, commitment, includeAccounts) {\n tx.feePayer = tx.feePayer || this.wallet.publicKey;\n tx.recentBlockhash = (await this.connection.getLatestBlockhash(commitment !== null && commitment !== void 0 ? commitment : this.connection.commitment)).blockhash;\n tx = await this.wallet.signTransaction(tx);\n const result = await simulateTransaction(this.connection, tx, signers, commitment, includeAccounts);\n if (result.value.err) {\n throw new SimulateError(result.value);\n }\n return result.value;\n }\n}\nclass SimulateError extends Error {\n constructor(simulationResponse, message) {\n super(message);\n this.simulationResponse = simulationResponse;\n }\n}\n// Copy of Connection.sendAndConfirmRawTransaction that throws\n// a better error if 'confirmTransaction` returns an error status\nasync function sendAndConfirmRawTransaction(connection, rawTransaction, options) {\n const sendOptions = options && {\n skipPreflight: options.skipPreflight,\n preflightCommitment: options.preflightCommitment || options.commitment,\n };\n const signature = await connection.sendRawTransaction(rawTransaction, sendOptions);\n const status = (await connection.confirmTransaction(signature, options && options.commitment)).value;\n if (status.err) {\n throw new ConfirmError(`Raw transaction ${signature} failed (${JSON.stringify(status)})`);\n }\n return signature;\n}\nclass ConfirmError extends Error {\n constructor(message) {\n super(message);\n }\n}\n/**\n * Sets the default provider on the client.\n */\nfunction setProvider(provider) {\n _provider = provider;\n}\n/**\n * Returns the default provider being used by the client.\n */\nfunction getProvider() {\n if (_provider === null) {\n return AnchorProvider.local();\n }\n return _provider;\n}\n// Global provider used as the default when a provider is not given.\nlet _provider = null;\n\nconst _AVAILABLE_FEATURES = new Set([\"anchor-deprecated-state\", \"debug-logs\"]);\nconst _FEATURES = new Map();\nfunction set(key) {\n if (!_AVAILABLE_FEATURES.has(key)) {\n throw new Error(\"Invalid feature\");\n }\n _FEATURES.set(key, true);\n}\nfunction isSet(key) {\n return _FEATURES.get(key) !== undefined;\n}\n\nvar features = /*#__PURE__*/Object.freeze({\n __proto__: null,\n set: set,\n isSet: isSet\n});\n\nclass IdlError extends Error {\n constructor(message) {\n super(message);\n this.name = \"IdlError\";\n }\n}\nclass ProgramErrorStack {\n constructor(stack) {\n this.stack = stack;\n }\n static parse(logs) {\n var _a;\n const programKeyRegex = /^Program (\\w*) invoke/;\n const successRegex = /^Program \\w* success/;\n const programStack = [];\n for (let i = 0; i < logs.length; i++) {\n if (successRegex.exec(logs[i])) {\n programStack.pop();\n continue;\n }\n const programKey = (_a = programKeyRegex.exec(logs[i])) === null || _a === void 0 ? void 0 : _a[1];\n if (!programKey) {\n continue;\n }\n programStack.push(new PublicKey(programKey));\n }\n return new ProgramErrorStack(programStack);\n }\n}\nclass AnchorError extends Error {\n constructor(errorCode, errorMessage, errorLogs, logs, origin, comparedValues) {\n super(errorLogs.join(\"\\n\").replace(\"Program log: \", \"\"));\n this.errorLogs = errorLogs;\n this.logs = logs;\n this.error = { errorCode, errorMessage, comparedValues, origin };\n this._programErrorStack = ProgramErrorStack.parse(logs);\n }\n static parse(logs) {\n if (!logs) {\n return null;\n }\n const anchorErrorLogIndex = logs.findIndex((log) => log.startsWith(\"Program log: AnchorError\"));\n if (anchorErrorLogIndex === -1) {\n return null;\n }\n const anchorErrorLog = logs[anchorErrorLogIndex];\n const errorLogs = [anchorErrorLog];\n let comparedValues;\n if (anchorErrorLogIndex + 1 < logs.length) {\n // This catches the comparedValues where the following is logged\n // \n // Left:\n // \n // Right:\n // \n if (logs[anchorErrorLogIndex + 1] === \"Program log: Left:\") {\n const pubkeyRegex = /^Program log: (.*)$/;\n const leftPubkey = pubkeyRegex.exec(logs[anchorErrorLogIndex + 2])[1];\n const rightPubkey = pubkeyRegex.exec(logs[anchorErrorLogIndex + 4])[1];\n comparedValues = [\n new PublicKey(leftPubkey),\n new PublicKey(rightPubkey),\n ];\n errorLogs.push(...logs.slice(anchorErrorLogIndex + 1, anchorErrorLogIndex + 5));\n }\n // This catches the comparedValues where the following is logged\n // \n // Left: \n // Right: \n else if (logs[anchorErrorLogIndex + 1].startsWith(\"Program log: Left:\")) {\n const valueRegex = /^Program log: (Left|Right): (.*)$/;\n const leftValue = valueRegex.exec(logs[anchorErrorLogIndex + 1])[2];\n const rightValue = valueRegex.exec(logs[anchorErrorLogIndex + 2])[2];\n errorLogs.push(...logs.slice(anchorErrorLogIndex + 1, anchorErrorLogIndex + 3));\n comparedValues = [leftValue, rightValue];\n }\n }\n const regexNoInfo = /^Program log: AnchorError occurred\\. Error Code: (.*)\\. Error Number: (\\d*)\\. Error Message: (.*)\\./;\n const noInfoAnchorErrorLog = regexNoInfo.exec(anchorErrorLog);\n const regexFileLine = /^Program log: AnchorError thrown in (.*):(\\d*)\\. Error Code: (.*)\\. Error Number: (\\d*)\\. Error Message: (.*)\\./;\n const fileLineAnchorErrorLog = regexFileLine.exec(anchorErrorLog);\n const regexAccountName = /^Program log: AnchorError caused by account: (.*)\\. Error Code: (.*)\\. Error Number: (\\d*)\\. Error Message: (.*)\\./;\n const accountNameAnchorErrorLog = regexAccountName.exec(anchorErrorLog);\n if (noInfoAnchorErrorLog) {\n const [errorCodeString, errorNumber, errorMessage] = noInfoAnchorErrorLog.slice(1, 4);\n const errorCode = {\n code: errorCodeString,\n number: parseInt(errorNumber),\n };\n return new AnchorError(errorCode, errorMessage, errorLogs, logs, undefined, comparedValues);\n }\n else if (fileLineAnchorErrorLog) {\n const [file, line, errorCodeString, errorNumber, errorMessage] = fileLineAnchorErrorLog.slice(1, 6);\n const errorCode = {\n code: errorCodeString,\n number: parseInt(errorNumber),\n };\n const fileLine = { file, line: parseInt(line) };\n return new AnchorError(errorCode, errorMessage, errorLogs, logs, fileLine, comparedValues);\n }\n else if (accountNameAnchorErrorLog) {\n const [accountName, errorCodeString, errorNumber, errorMessage] = accountNameAnchorErrorLog.slice(1, 5);\n const origin = accountName;\n const errorCode = {\n code: errorCodeString,\n number: parseInt(errorNumber),\n };\n return new AnchorError(errorCode, errorMessage, errorLogs, logs, origin, comparedValues);\n }\n else {\n return null;\n }\n }\n get program() {\n return this._programErrorStack.stack[this._programErrorStack.stack.length - 1];\n }\n get programErrorStack() {\n return this._programErrorStack.stack;\n }\n toString() {\n return this.message;\n }\n}\n// An error from a user defined program.\nclass ProgramError extends Error {\n constructor(code, msg, logs) {\n super();\n this.code = code;\n this.msg = msg;\n this.logs = logs;\n if (logs) {\n this._programErrorStack = ProgramErrorStack.parse(logs);\n }\n }\n static parse(err, idlErrors) {\n const errString = err.toString();\n // TODO: don't rely on the error string. web3.js should preserve the error\n // code information instead of giving us an untyped string.\n let unparsedErrorCode;\n if (errString.includes(\"custom program error:\")) {\n let components = errString.split(\"custom program error: \");\n if (components.length !== 2) {\n return null;\n }\n else {\n unparsedErrorCode = components[1];\n }\n }\n else {\n const matches = errString.match(/\"Custom\":([0-9]+)}/g);\n if (!matches || matches.length > 1) {\n return null;\n }\n unparsedErrorCode = matches[0].match(/([0-9]+)/g)[0];\n }\n let errorCode;\n try {\n errorCode = parseInt(unparsedErrorCode);\n }\n catch (parseErr) {\n return null;\n }\n // Parse user error.\n let errorMsg = idlErrors.get(errorCode);\n if (errorMsg !== undefined) {\n return new ProgramError(errorCode, errorMsg, err.logs);\n }\n // Parse framework internal error.\n errorMsg = LangErrorMessage.get(errorCode);\n if (errorMsg !== undefined) {\n return new ProgramError(errorCode, errorMsg, err.logs);\n }\n // Unable to parse the error. Just return the untranslated error.\n return null;\n }\n get program() {\n var _a;\n return (_a = this._programErrorStack) === null || _a === void 0 ? void 0 : _a.stack[this._programErrorStack.stack.length - 1];\n }\n get programErrorStack() {\n var _a;\n return (_a = this._programErrorStack) === null || _a === void 0 ? void 0 : _a.stack;\n }\n toString() {\n return this.msg;\n }\n}\nfunction translateError(err, idlErrors) {\n if (isSet(\"debug-logs\")) {\n console.log(\"Translating error:\", err);\n }\n const anchorError = AnchorError.parse(err.logs);\n if (anchorError) {\n return anchorError;\n }\n const programError = ProgramError.parse(err, idlErrors);\n if (programError) {\n return programError;\n }\n if (err.logs) {\n const handler = {\n get: function (target, prop) {\n if (prop === \"programErrorStack\") {\n return target.programErrorStack.stack;\n }\n else if (prop === \"program\") {\n return target.programErrorStack.stack[err.programErrorStack.stack.length - 1];\n }\n else {\n // this is the normal way to return all other props\n // without modifying them.\n // @ts-expect-error\n return Reflect.get(...arguments);\n }\n },\n };\n err.programErrorStack = ProgramErrorStack.parse(err.logs);\n return new Proxy(err, handler);\n }\n return err;\n}\nconst LangErrorCode = {\n // Instructions.\n InstructionMissing: 100,\n InstructionFallbackNotFound: 101,\n InstructionDidNotDeserialize: 102,\n InstructionDidNotSerialize: 103,\n // IDL instructions.\n IdlInstructionStub: 1000,\n IdlInstructionInvalidProgram: 1001,\n // Constraints.\n ConstraintMut: 2000,\n ConstraintHasOne: 2001,\n ConstraintSigner: 2002,\n ConstraintRaw: 2003,\n ConstraintOwner: 2004,\n ConstraintRentExempt: 2005,\n ConstraintSeeds: 2006,\n ConstraintExecutable: 2007,\n ConstraintState: 2008,\n ConstraintAssociated: 2009,\n ConstraintAssociatedInit: 2010,\n ConstraintClose: 2011,\n ConstraintAddress: 2012,\n ConstraintZero: 2013,\n ConstraintTokenMint: 2014,\n ConstraintTokenOwner: 2015,\n ConstraintMintMintAuthority: 2016,\n ConstraintMintFreezeAuthority: 2017,\n ConstraintMintDecimals: 2018,\n ConstraintSpace: 2019,\n ConstraintAccountIsNone: 2020,\n // Require.\n RequireViolated: 2500,\n RequireEqViolated: 2501,\n RequireKeysEqViolated: 2502,\n RequireNeqViolated: 2503,\n RequireKeysNeqViolated: 2504,\n RequireGtViolated: 2505,\n RequireGteViolated: 2506,\n // Accounts.\n AccountDiscriminatorAlreadySet: 3000,\n AccountDiscriminatorNotFound: 3001,\n AccountDiscriminatorMismatch: 3002,\n AccountDidNotDeserialize: 3003,\n AccountDidNotSerialize: 3004,\n AccountNotEnoughKeys: 3005,\n AccountNotMutable: 3006,\n AccountOwnedByWrongProgram: 3007,\n InvalidProgramId: 3008,\n InvalidProgramExecutable: 3009,\n AccountNotSigner: 3010,\n AccountNotSystemOwned: 3011,\n AccountNotInitialized: 3012,\n AccountNotProgramData: 3013,\n AccountNotAssociatedTokenAccount: 3014,\n AccountSysvarMismatch: 3015,\n AccountReallocExceedsLimit: 3016,\n AccountDuplicateReallocs: 3017,\n // State.\n StateInvalidAddress: 4000,\n // Miscellaneous\n DeclaredProgramIdMismatch: 4100,\n // Used for APIs that shouldn't be used anymore.\n Deprecated: 5000,\n};\nconst LangErrorMessage = new Map([\n // Instructions.\n [\n LangErrorCode.InstructionMissing,\n \"8 byte instruction identifier not provided\",\n ],\n [\n LangErrorCode.InstructionFallbackNotFound,\n \"Fallback functions are not supported\",\n ],\n [\n LangErrorCode.InstructionDidNotDeserialize,\n \"The program could not deserialize the given instruction\",\n ],\n [\n LangErrorCode.InstructionDidNotSerialize,\n \"The program could not serialize the given instruction\",\n ],\n // Idl instructions.\n [\n LangErrorCode.IdlInstructionStub,\n \"The program was compiled without idl instructions\",\n ],\n [\n LangErrorCode.IdlInstructionInvalidProgram,\n \"The transaction was given an invalid program for the IDL instruction\",\n ],\n // Constraints.\n [LangErrorCode.ConstraintMut, \"A mut constraint was violated\"],\n [LangErrorCode.ConstraintHasOne, \"A has one constraint was violated\"],\n [LangErrorCode.ConstraintSigner, \"A signer constraint was violated\"],\n [LangErrorCode.ConstraintRaw, \"A raw constraint was violated\"],\n [LangErrorCode.ConstraintOwner, \"An owner constraint was violated\"],\n [\n LangErrorCode.ConstraintRentExempt,\n \"A rent exemption constraint was violated\",\n ],\n [LangErrorCode.ConstraintSeeds, \"A seeds constraint was violated\"],\n [LangErrorCode.ConstraintExecutable, \"An executable constraint was violated\"],\n [LangErrorCode.ConstraintState, \"A state constraint was violated\"],\n [LangErrorCode.ConstraintAssociated, \"An associated constraint was violated\"],\n [\n LangErrorCode.ConstraintAssociatedInit,\n \"An associated init constraint was violated\",\n ],\n [LangErrorCode.ConstraintClose, \"A close constraint was violated\"],\n [LangErrorCode.ConstraintAddress, \"An address constraint was violated\"],\n [LangErrorCode.ConstraintZero, \"Expected zero account discriminant\"],\n [LangErrorCode.ConstraintTokenMint, \"A token mint constraint was violated\"],\n [LangErrorCode.ConstraintTokenOwner, \"A token owner constraint was violated\"],\n [\n LangErrorCode.ConstraintMintMintAuthority,\n \"A mint mint authority constraint was violated\",\n ],\n [\n LangErrorCode.ConstraintMintFreezeAuthority,\n \"A mint freeze authority constraint was violated\",\n ],\n [\n LangErrorCode.ConstraintMintDecimals,\n \"A mint decimals constraint was violated\",\n ],\n [LangErrorCode.ConstraintSpace, \"A space constraint was violated\"],\n [\n LangErrorCode.ConstraintAccountIsNone,\n \"A required account for the constraint is None\",\n ],\n // Require.\n [LangErrorCode.RequireViolated, \"A require expression was violated\"],\n [LangErrorCode.RequireEqViolated, \"A require_eq expression was violated\"],\n [\n LangErrorCode.RequireKeysEqViolated,\n \"A require_keys_eq expression was violated\",\n ],\n [LangErrorCode.RequireNeqViolated, \"A require_neq expression was violated\"],\n [\n LangErrorCode.RequireKeysNeqViolated,\n \"A require_keys_neq expression was violated\",\n ],\n [LangErrorCode.RequireGtViolated, \"A require_gt expression was violated\"],\n [LangErrorCode.RequireGteViolated, \"A require_gte expression was violated\"],\n // Accounts.\n [\n LangErrorCode.AccountDiscriminatorAlreadySet,\n \"The account discriminator was already set on this account\",\n ],\n [\n LangErrorCode.AccountDiscriminatorNotFound,\n \"No 8 byte discriminator was found on the account\",\n ],\n [\n LangErrorCode.AccountDiscriminatorMismatch,\n \"8 byte discriminator did not match what was expected\",\n ],\n [LangErrorCode.AccountDidNotDeserialize, \"Failed to deserialize the account\"],\n [LangErrorCode.AccountDidNotSerialize, \"Failed to serialize the account\"],\n [\n LangErrorCode.AccountNotEnoughKeys,\n \"Not enough account keys given to the instruction\",\n ],\n [LangErrorCode.AccountNotMutable, \"The given account is not mutable\"],\n [\n LangErrorCode.AccountOwnedByWrongProgram,\n \"The given account is owned by a different program than expected\",\n ],\n [LangErrorCode.InvalidProgramId, \"Program ID was not as expected\"],\n [LangErrorCode.InvalidProgramExecutable, \"Program account is not executable\"],\n [LangErrorCode.AccountNotSigner, \"The given account did not sign\"],\n [\n LangErrorCode.AccountNotSystemOwned,\n \"The given account is not owned by the system program\",\n ],\n [\n LangErrorCode.AccountNotInitialized,\n \"The program expected this account to be already initialized\",\n ],\n [\n LangErrorCode.AccountNotProgramData,\n \"The given account is not a program data account\",\n ],\n [\n LangErrorCode.AccountNotAssociatedTokenAccount,\n \"The given account is not the associated token account\",\n ],\n [\n LangErrorCode.AccountSysvarMismatch,\n \"The given public key does not match the required sysvar\",\n ],\n [\n LangErrorCode.AccountReallocExceedsLimit,\n \"The account reallocation exceeds the MAX_PERMITTED_DATA_INCREASE limit\",\n ],\n [\n LangErrorCode.AccountDuplicateReallocs,\n \"The account was duplicated for more than one reallocation\",\n ],\n // State.\n [\n LangErrorCode.StateInvalidAddress,\n \"The given state account does not have the correct address\",\n ],\n // Miscellaneous\n [\n LangErrorCode.DeclaredProgramIdMismatch,\n \"The declared program id does not match the actual program id\",\n ],\n // Deprecated\n [\n LangErrorCode.Deprecated,\n \"The API being used is deprecated and should no longer be used\",\n ],\n]);\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign$1 = function() {\r\n __assign$1 = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign$1.apply(this, arguments);\r\n};\n\n/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n\r\nvar __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n };\r\n return __assign.apply(this, arguments);\r\n};\n\n/**\n * Source: ftp://ftp.unicode.org/Public/UCD/latest/ucd/SpecialCasing.txt\n */\n/**\n * Lower case as a function.\n */\nfunction lowerCase(str) {\n return str.toLowerCase();\n}\n\n// Support camel case (\"camelCase\" -> \"camel Case\" and \"CAMELCase\" -> \"CAMEL Case\").\nvar DEFAULT_SPLIT_REGEXP = [/([a-z0-9])([A-Z])/g, /([A-Z])([A-Z][a-z])/g];\n// Remove all non-word characters.\nvar DEFAULT_STRIP_REGEXP = /[^A-Z0-9]+/gi;\n/**\n * Normalize the string into something other libraries can manipulate easier.\n */\nfunction noCase(input, options) {\n if (options === void 0) { options = {}; }\n var _a = options.splitRegexp, splitRegexp = _a === void 0 ? DEFAULT_SPLIT_REGEXP : _a, _b = options.stripRegexp, stripRegexp = _b === void 0 ? DEFAULT_STRIP_REGEXP : _b, _c = options.transform, transform = _c === void 0 ? lowerCase : _c, _d = options.delimiter, delimiter = _d === void 0 ? \" \" : _d;\n var result = replace(replace(input, splitRegexp, \"$1\\0$2\"), stripRegexp, \"\\0\");\n var start = 0;\n var end = result.length;\n // Trim the delimiter from around the output string.\n while (result.charAt(start) === \"\\0\")\n start++;\n while (result.charAt(end - 1) === \"\\0\")\n end--;\n // Transform each token independently.\n return result.slice(start, end).split(\"\\0\").map(transform).join(delimiter);\n}\n/**\n * Replace `re` in the input string with the replacement value.\n */\nfunction replace(input, re, value) {\n if (re instanceof RegExp)\n return input.replace(re, value);\n return re.reduce(function (input, re) { return input.replace(re, value); }, input);\n}\n\nfunction dotCase(input, options) {\n if (options === void 0) { options = {}; }\n return noCase(input, __assign({ delimiter: \".\" }, options));\n}\n\nfunction snakeCase(input, options) {\n if (options === void 0) { options = {}; }\n return dotCase(input, __assign$1({ delimiter: \"_\" }, options));\n}\n\nclass IdlCoder {\n static fieldLayout(field, types) {\n const fieldName = field.name !== undefined ? camelCase(field.name) : undefined;\n switch (field.type) {\n case \"bool\": {\n return borsh.bool(fieldName);\n }\n case \"u8\": {\n return borsh.u8(fieldName);\n }\n case \"i8\": {\n return borsh.i8(fieldName);\n }\n case \"u16\": {\n return borsh.u16(fieldName);\n }\n case \"i16\": {\n return borsh.i16(fieldName);\n }\n case \"u32\": {\n return borsh.u32(fieldName);\n }\n case \"i32\": {\n return borsh.i32(fieldName);\n }\n case \"f32\": {\n return borsh.f32(fieldName);\n }\n case \"u64\": {\n return borsh.u64(fieldName);\n }\n case \"i64\": {\n return borsh.i64(fieldName);\n }\n case \"f64\": {\n return borsh.f64(fieldName);\n }\n case \"u128\": {\n return borsh.u128(fieldName);\n }\n case \"i128\": {\n return borsh.i128(fieldName);\n }\n case \"u256\": {\n return borsh.u256(fieldName);\n }\n case \"i256\": {\n return borsh.i256(fieldName);\n }\n case \"bytes\": {\n return borsh.vecU8(fieldName);\n }\n case \"string\": {\n return borsh.str(fieldName);\n }\n case \"publicKey\": {\n return borsh.publicKey(fieldName);\n }\n default: {\n if (\"vec\" in field.type) {\n return borsh.vec(IdlCoder.fieldLayout({\n name: undefined,\n type: field.type.vec,\n }, types), fieldName);\n }\n else if (\"option\" in field.type) {\n return borsh.option(IdlCoder.fieldLayout({\n name: undefined,\n type: field.type.option,\n }, types), fieldName);\n }\n else if (\"defined\" in field.type) {\n const defined = field.type.defined;\n // User defined type.\n if (types === undefined) {\n throw new IdlError(\"User defined types not provided\");\n }\n const filtered = types.filter((t) => t.name === defined);\n if (filtered.length !== 1) {\n throw new IdlError(`Type not found: ${JSON.stringify(field)}`);\n }\n return IdlCoder.typeDefLayout(filtered[0], types, fieldName);\n }\n else if (\"array\" in field.type) {\n let arrayTy = field.type.array[0];\n let arrayLen = field.type.array[1];\n let innerLayout = IdlCoder.fieldLayout({\n name: undefined,\n type: arrayTy,\n }, types);\n return borsh.array(innerLayout, arrayLen, fieldName);\n }\n else {\n throw new Error(`Not yet implemented: ${field}`);\n }\n }\n }\n }\n static typeDefLayout(typeDef, types = [], name) {\n if (typeDef.type.kind === \"struct\") {\n const fieldLayouts = typeDef.type.fields.map((field) => {\n const x = IdlCoder.fieldLayout(field, types);\n return x;\n });\n return borsh.struct(fieldLayouts, name);\n }\n else if (typeDef.type.kind === \"enum\") {\n let variants = typeDef.type.variants.map((variant) => {\n const name = camelCase(variant.name);\n if (variant.fields === undefined) {\n return borsh.struct([], name);\n }\n const fieldLayouts = variant.fields.map((f, i) => {\n if (!f.hasOwnProperty(\"name\")) {\n return IdlCoder.fieldLayout({ type: f, name: i.toString() }, types);\n }\n // this typescript conversion is ok\n // because if f were of type IdlType\n // (that does not have a name property)\n // the check before would've errored\n return IdlCoder.fieldLayout(f, types);\n });\n return borsh.struct(fieldLayouts, name);\n });\n if (name !== undefined) {\n // Buffer-layout lib requires the name to be null (on construction)\n // when used as a field.\n return borsh.rustEnum(variants).replicate(name);\n }\n return borsh.rustEnum(variants, name);\n }\n else {\n throw new Error(`Unknown type kint: ${typeDef}`);\n }\n }\n}\n\n/**\n * Namespace for state method function signatures.\n */\nconst SIGHASH_STATE_NAMESPACE = \"state\";\n/**\n * Namespace for global instruction function signatures (i.e. functions\n * that aren't namespaced by the state or any of its trait implementations).\n */\nconst SIGHASH_GLOBAL_NAMESPACE = \"global\";\n/**\n * Encodes and decodes program instructions.\n */\nclass BorshInstructionCoder {\n constructor(idl) {\n this.idl = idl;\n this.ixLayout = BorshInstructionCoder.parseIxLayout(idl);\n const sighashLayouts = new Map();\n idl.instructions.forEach((ix) => {\n const sh = sighash(SIGHASH_GLOBAL_NAMESPACE, ix.name);\n sighashLayouts.set(bs58$1.encode(sh), {\n layout: this.ixLayout.get(ix.name),\n name: ix.name,\n });\n });\n if (idl.state) {\n idl.state.methods.map((ix) => {\n const sh = sighash(SIGHASH_STATE_NAMESPACE, ix.name);\n sighashLayouts.set(bs58$1.encode(sh), {\n layout: this.ixLayout.get(ix.name),\n name: ix.name,\n });\n });\n }\n this.sighashLayouts = sighashLayouts;\n }\n /**\n * Encodes a program instruction.\n */\n encode(ixName, ix) {\n return this._encode(SIGHASH_GLOBAL_NAMESPACE, ixName, ix);\n }\n /**\n * Encodes a program state instruction.\n */\n encodeState(ixName, ix) {\n return this._encode(SIGHASH_STATE_NAMESPACE, ixName, ix);\n }\n _encode(nameSpace, ixName, ix) {\n const buffer = Buffer$1.alloc(1000); // TODO: use a tighter buffer.\n const methodName = camelCase(ixName);\n const layout = this.ixLayout.get(methodName);\n if (!layout) {\n throw new Error(`Unknown method: ${methodName}`);\n }\n const len = layout.encode(ix, buffer);\n const data = buffer.slice(0, len);\n return Buffer$1.concat([sighash(nameSpace, ixName), data]);\n }\n static parseIxLayout(idl) {\n const stateMethods = idl.state ? idl.state.methods : [];\n const ixLayouts = stateMethods\n .map((m) => {\n let fieldLayouts = m.args.map((arg) => {\n var _a, _b;\n return IdlCoder.fieldLayout(arg, Array.from([...((_a = idl.accounts) !== null && _a !== void 0 ? _a : []), ...((_b = idl.types) !== null && _b !== void 0 ? _b : [])]));\n });\n const name = camelCase(m.name);\n return [name, borsh.struct(fieldLayouts, name)];\n })\n .concat(idl.instructions.map((ix) => {\n let fieldLayouts = ix.args.map((arg) => {\n var _a, _b;\n return IdlCoder.fieldLayout(arg, Array.from([...((_a = idl.accounts) !== null && _a !== void 0 ? _a : []), ...((_b = idl.types) !== null && _b !== void 0 ? _b : [])]));\n });\n const name = camelCase(ix.name);\n return [name, borsh.struct(fieldLayouts, name)];\n }));\n return new Map(ixLayouts);\n }\n /**\n * Decodes a program instruction.\n */\n decode(ix, encoding = \"hex\") {\n if (typeof ix === \"string\") {\n ix = encoding === \"hex\" ? Buffer$1.from(ix, \"hex\") : bs58$1.decode(ix);\n }\n let sighash = bs58$1.encode(ix.slice(0, 8));\n let data = ix.slice(8);\n const decoder = this.sighashLayouts.get(sighash);\n if (!decoder) {\n return null;\n }\n return {\n data: decoder.layout.decode(data),\n name: decoder.name,\n };\n }\n /**\n * Returns a formatted table of all the fields in the given instruction data.\n */\n format(ix, accountMetas) {\n return InstructionFormatter.format(ix, accountMetas, this.idl);\n }\n}\nclass InstructionFormatter {\n static format(ix, accountMetas, idl) {\n const idlIx = idl.instructions.filter((i) => ix.name === i.name)[0];\n if (idlIx === undefined) {\n console.error(\"Invalid instruction given\");\n return null;\n }\n const args = idlIx.args.map((idlField) => {\n return {\n name: idlField.name,\n type: InstructionFormatter.formatIdlType(idlField.type),\n data: InstructionFormatter.formatIdlData(idlField, ix.data[idlField.name], idl.types),\n };\n });\n const flatIdlAccounts = InstructionFormatter.flattenIdlAccounts(idlIx.accounts);\n const accounts = accountMetas.map((meta, idx) => {\n if (idx < flatIdlAccounts.length) {\n return {\n name: flatIdlAccounts[idx].name,\n ...meta,\n };\n }\n // \"Remaining accounts\" are unnamed in Anchor.\n else {\n return {\n name: undefined,\n ...meta,\n };\n }\n });\n return {\n args,\n accounts,\n };\n }\n static formatIdlType(idlType) {\n if (typeof idlType === \"string\") {\n return idlType;\n }\n if (\"vec\" in idlType) {\n return `Vec<${this.formatIdlType(idlType.vec)}>`;\n }\n if (\"option\" in idlType) {\n return `Option<${this.formatIdlType(idlType.option)}>`;\n }\n if (\"defined\" in idlType) {\n return idlType.defined;\n }\n if (\"array\" in idlType) {\n return `Array<${idlType.array[0]}; ${idlType.array[1]}>`;\n }\n throw new Error(`Unknown IDL type: ${idlType}`);\n }\n static formatIdlData(idlField, data, types) {\n if (typeof idlField.type === \"string\") {\n return data.toString();\n }\n if (idlField.type.hasOwnProperty(\"vec\")) {\n return (\"[\" +\n data\n .map((d) => this.formatIdlData({ name: \"\", type: idlField.type.vec }, d))\n .join(\", \") +\n \"]\");\n }\n if (idlField.type.hasOwnProperty(\"option\")) {\n return data === null\n ? \"null\"\n : this.formatIdlData({ name: \"\", type: idlField.type.option }, data, types);\n }\n if (idlField.type.hasOwnProperty(\"defined\")) {\n if (types === undefined) {\n throw new Error(\"User defined types not provided\");\n }\n const filtered = types.filter((t) => t.name === idlField.type.defined);\n if (filtered.length !== 1) {\n throw new Error(`Type not found: ${idlField.type.defined}`);\n }\n return InstructionFormatter.formatIdlDataDefined(filtered[0], data, types);\n }\n return \"unknown\";\n }\n static formatIdlDataDefined(typeDef, data, types) {\n if (typeDef.type.kind === \"struct\") {\n const struct = typeDef.type;\n const fields = Object.keys(data)\n .map((k) => {\n const f = struct.fields.filter((f) => f.name === k)[0];\n if (f === undefined) {\n throw new Error(\"Unable to find type\");\n }\n return (k + \": \" + InstructionFormatter.formatIdlData(f, data[k], types));\n })\n .join(\", \");\n return \"{ \" + fields + \" }\";\n }\n else {\n if (typeDef.type.variants.length === 0) {\n return \"{}\";\n }\n // Struct enum.\n if (typeDef.type.variants[0].name) {\n const variants = typeDef.type.variants;\n const variant = Object.keys(data)[0];\n const enumType = data[variant];\n const namedFields = Object.keys(enumType)\n .map((f) => {\n var _a;\n const fieldData = enumType[f];\n const idlField = (_a = variants[variant]) === null || _a === void 0 ? void 0 : _a.filter((v) => v.name === f)[0];\n if (idlField === undefined) {\n throw new Error(\"Unable to find variant\");\n }\n return (f +\n \": \" +\n InstructionFormatter.formatIdlData(idlField, fieldData, types));\n })\n .join(\", \");\n const variantName = camelCase(variant, { pascalCase: true });\n if (namedFields.length === 0) {\n return variantName;\n }\n return `${variantName} { ${namedFields} }`;\n }\n // Tuple enum.\n else {\n // TODO.\n return \"Tuple formatting not yet implemented\";\n }\n }\n }\n static flattenIdlAccounts(accounts, prefix) {\n return accounts\n .map((account) => {\n const accName = sentenceCase(account.name);\n if (account.hasOwnProperty(\"accounts\")) {\n const newPrefix = prefix ? `${prefix} > ${accName}` : accName;\n return InstructionFormatter.flattenIdlAccounts(account.accounts, newPrefix);\n }\n else {\n return {\n ...account,\n name: prefix ? `${prefix} > ${accName}` : accName,\n };\n }\n })\n .flat();\n }\n}\nfunction sentenceCase(field) {\n const result = field.replace(/([A-Z])/g, \" $1\");\n return result.charAt(0).toUpperCase() + result.slice(1);\n}\n// Not technically sighash, since we don't include the arguments, as Rust\n// doesn't allow function overloading.\nfunction sighash(nameSpace, ixName) {\n let name = snakeCase(ixName);\n let preimage = `${nameSpace}:${name}`;\n return Buffer$1.from(sha256$1.digest(preimage)).slice(0, 8);\n}\n\nfunction accountSize(idl, idlAccount) {\n if (idlAccount.type.kind === \"enum\") {\n let variantSizes = idlAccount.type.variants.map((variant) => {\n if (variant.fields === undefined) {\n return 0;\n }\n return variant.fields\n .map((f) => {\n if (!(typeof f === \"object\" && \"name\" in f)) {\n throw new Error(\"Tuple enum variants not yet implemented.\");\n }\n return typeSize(idl, f.type);\n })\n .reduce((a, b) => a + b);\n });\n return Math.max(...variantSizes) + 1;\n }\n if (idlAccount.type.fields === undefined) {\n return 0;\n }\n return idlAccount.type.fields\n .map((f) => typeSize(idl, f.type))\n .reduce((a, b) => a + b, 0);\n}\n// Returns the size of the type in bytes. For variable length types, just return\n// 1. Users should override this value in such cases.\nfunction typeSize(idl, ty) {\n var _a, _b;\n switch (ty) {\n case \"bool\":\n return 1;\n case \"u8\":\n return 1;\n case \"i8\":\n return 1;\n case \"i16\":\n return 2;\n case \"u16\":\n return 2;\n case \"u32\":\n return 4;\n case \"i32\":\n return 4;\n case \"f32\":\n return 4;\n case \"u64\":\n return 8;\n case \"i64\":\n return 8;\n case \"f64\":\n return 8;\n case \"u128\":\n return 16;\n case \"i128\":\n return 16;\n case \"u256\":\n return 32;\n case \"i256\":\n return 32;\n case \"bytes\":\n return 1;\n case \"string\":\n return 1;\n case \"publicKey\":\n return 32;\n default:\n if (\"vec\" in ty) {\n return 1;\n }\n if (\"option\" in ty) {\n return 1 + typeSize(idl, ty.option);\n }\n if (\"coption\" in ty) {\n return 4 + typeSize(idl, ty.coption);\n }\n if (\"defined\" in ty) {\n const filtered = (_b = (_a = idl.types) === null || _a === void 0 ? void 0 : _a.filter((t) => t.name === ty.defined)) !== null && _b !== void 0 ? _b : [];\n if (filtered.length !== 1) {\n throw new IdlError(`Type not found: ${JSON.stringify(ty)}`);\n }\n let typeDef = filtered[0];\n return accountSize(idl, typeDef);\n }\n if (\"array\" in ty) {\n let arrayTy = ty.array[0];\n let arraySize = ty.array[1];\n return typeSize(idl, arrayTy) * arraySize;\n }\n throw new Error(`Invalid type ${JSON.stringify(ty)}`);\n }\n}\n\n/**\n * Number of bytes of the account discriminator.\n */\nconst ACCOUNT_DISCRIMINATOR_SIZE = 8;\n/**\n * Encodes and decodes account objects.\n */\nclass BorshAccountsCoder {\n constructor(idl) {\n if (idl.accounts === undefined) {\n this.accountLayouts = new Map();\n return;\n }\n const layouts = idl.accounts.map((acc) => {\n return [acc.name, IdlCoder.typeDefLayout(acc, idl.types)];\n });\n this.accountLayouts = new Map(layouts);\n this.idl = idl;\n }\n async encode(accountName, account) {\n const buffer = Buffer$1.alloc(1000); // TODO: use a tighter buffer.\n const layout = this.accountLayouts.get(accountName);\n if (!layout) {\n throw new Error(`Unknown account: ${accountName}`);\n }\n const len = layout.encode(account, buffer);\n let accountData = buffer.slice(0, len);\n let discriminator = BorshAccountsCoder.accountDiscriminator(accountName);\n return Buffer$1.concat([discriminator, accountData]);\n }\n decode(accountName, data) {\n // Assert the account discriminator is correct.\n const discriminator = BorshAccountsCoder.accountDiscriminator(accountName);\n if (discriminator.compare(data.slice(0, 8))) {\n throw new Error(\"Invalid account discriminator\");\n }\n return this.decodeUnchecked(accountName, data);\n }\n decodeAny(data) {\n const accountDescriminator = data.slice(0, 8);\n const accountName = Array.from(this.accountLayouts.keys()).find((key) => BorshAccountsCoder.accountDiscriminator(key).equals(accountDescriminator));\n if (!accountName) {\n throw new Error(\"Account descriminator not found\");\n }\n return this.decodeUnchecked(accountName, data);\n }\n decodeUnchecked(accountName, ix) {\n // Chop off the discriminator before decoding.\n const data = ix.slice(ACCOUNT_DISCRIMINATOR_SIZE);\n const layout = this.accountLayouts.get(accountName);\n if (!layout) {\n throw new Error(`Unknown account: ${accountName}`);\n }\n return layout.decode(data);\n }\n memcmp(accountName, appendData) {\n const discriminator = BorshAccountsCoder.accountDiscriminator(accountName);\n return {\n offset: 0,\n bytes: bs58$1.encode(appendData ? Buffer$1.concat([discriminator, appendData]) : discriminator),\n };\n }\n size(idlAccount) {\n var _a;\n return (ACCOUNT_DISCRIMINATOR_SIZE + ((_a = accountSize(this.idl, idlAccount)) !== null && _a !== void 0 ? _a : 0));\n }\n /**\n * Calculates and returns a unique 8 byte discriminator prepended to all anchor accounts.\n *\n * @param name The name of the account to calculate the discriminator.\n */\n static accountDiscriminator(name) {\n return Buffer$1.from(sha256$1.digest(`account:${camelCase(name, {\n pascalCase: true,\n preserveConsecutiveUppercase: true,\n })}`)).slice(0, ACCOUNT_DISCRIMINATOR_SIZE);\n }\n}\n\nclass BorshEventCoder {\n constructor(idl) {\n if (idl.events === undefined) {\n this.layouts = new Map();\n return;\n }\n const layouts = idl.events.map((event) => {\n let eventTypeDef = {\n name: event.name,\n type: {\n kind: \"struct\",\n fields: event.fields.map((f) => {\n return { name: f.name, type: f.type };\n }),\n },\n };\n return [event.name, IdlCoder.typeDefLayout(eventTypeDef, idl.types)];\n });\n this.layouts = new Map(layouts);\n this.discriminators = new Map(idl.events === undefined\n ? []\n : idl.events.map((e) => [\n base64$1.fromByteArray(eventDiscriminator(e.name)),\n e.name,\n ]));\n }\n decode(log) {\n let logArr;\n // This will throw if log length is not a multiple of 4.\n try {\n logArr = Buffer$1.from(base64$1.toByteArray(log));\n }\n catch (e) {\n return null;\n }\n const disc = base64$1.fromByteArray(logArr.slice(0, 8));\n // Only deserialize if the discriminator implies a proper event.\n const eventName = this.discriminators.get(disc);\n if (eventName === undefined) {\n return null;\n }\n const layout = this.layouts.get(eventName);\n if (!layout) {\n throw new Error(`Unknown event: ${eventName}`);\n }\n const data = layout.decode(logArr.slice(8));\n return { data, name: eventName };\n }\n}\nfunction eventDiscriminator(name) {\n return Buffer$1.from(sha256$1.digest(`event:${name}`)).slice(0, 8);\n}\n\nclass BorshStateCoder {\n constructor(idl) {\n if (idl.state === undefined) {\n throw new Error(\"Idl state not defined.\");\n }\n this.layout = IdlCoder.typeDefLayout(idl.state.struct, idl.types);\n }\n async encode(name, account) {\n const buffer = Buffer$1.alloc(1000); // TODO: use a tighter buffer.\n const len = this.layout.encode(account, buffer);\n const disc = await stateDiscriminator(name);\n const accData = buffer.slice(0, len);\n return Buffer$1.concat([disc, accData]);\n }\n decode(ix) {\n // Chop off discriminator.\n const data = ix.slice(8);\n return this.layout.decode(data);\n }\n}\n// Calculates unique 8 byte discriminator prepended to all anchor state accounts.\nasync function stateDiscriminator(name) {\n let ns = isSet(\"anchor-deprecated-state\") ? \"account\" : \"state\";\n return Buffer$1.from(sha256$1.digest(`${ns}:${name}`)).slice(0, 8);\n}\n\n/**\n * Encodes and decodes user-defined types.\n */\nclass BorshTypesCoder {\n constructor(idl) {\n if (idl.types === undefined) {\n this.typeLayouts = new Map();\n return;\n }\n const layouts = idl.types.map((acc) => {\n return [acc.name, IdlCoder.typeDefLayout(acc, idl.types)];\n });\n this.typeLayouts = new Map(layouts);\n this.idl = idl;\n }\n encode(typeName, type) {\n const buffer = Buffer$1.alloc(1000); // TODO: use a tighter buffer.\n const layout = this.typeLayouts.get(typeName);\n if (!layout) {\n throw new Error(`Unknown type: ${typeName}`);\n }\n const len = layout.encode(type, buffer);\n return buffer.slice(0, len);\n }\n decode(typeName, typeData) {\n const layout = this.typeLayouts.get(typeName);\n if (!layout) {\n throw new Error(`Unknown type: ${typeName}`);\n }\n return layout.decode(typeData);\n }\n}\n\n/**\n * BorshCoder is the default Coder for Anchor programs implementing the\n * borsh based serialization interface.\n */\nclass BorshCoder {\n constructor(idl) {\n this.instruction = new BorshInstructionCoder(idl);\n this.accounts = new BorshAccountsCoder(idl);\n this.events = new BorshEventCoder(idl);\n if (idl.state) {\n this.state = new BorshStateCoder(idl);\n }\n this.types = new BorshTypesCoder(idl);\n }\n}\n\nvar commonjsGlobal = typeof globalThis !== 'undefined' ? globalThis : typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : {};\n\nfunction getDefaultExportFromCjs (x) {\n\treturn x && x.__esModule && Object.prototype.hasOwnProperty.call(x, 'default') ? x['default'] : x;\n}\n\n/* The MIT License (MIT)\n *\n * Copyright 2015-2018 Peter A. Bigot\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * Base class for layout objects.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support the {@link\n * Layout#encode|encode} or {@link Layout#decode|decode} functions.\n *\n * @param {Number} span - Initializer for {@link Layout#span|span}. The\n * parameter must be an integer; a negative value signifies that the\n * span is {@link Layout#getSpan|value-specific}.\n *\n * @param {string} [property] - Initializer for {@link\n * Layout#property|property}.\n *\n * @abstract\n */\nclass Layout {\n constructor(span, property) {\n if (!Number.isInteger(span)) {\n throw new TypeError('span must be an integer');\n }\n\n /** The span of the layout in bytes.\n *\n * Positive values are generally expected.\n *\n * Zero will only appear in {@link Constant}s and in {@link\n * Sequence}s where the {@link Sequence#count|count} is zero.\n *\n * A negative value indicates that the span is value-specific, and\n * must be obtained using {@link Layout#getSpan|getSpan}. */\n this.span = span;\n\n /** The property name used when this layout is represented in an\n * Object.\n *\n * Used only for layouts that {@link Layout#decode|decode} to Object\n * instances. If left undefined the span of the unnamed layout will\n * be treated as padding: it will not be mutated by {@link\n * Layout#encode|encode} nor represented as a property in the\n * decoded Object. */\n this.property = property;\n }\n\n /** Function to create an Object into which decoded properties will\n * be written.\n *\n * Used only for layouts that {@link Layout#decode|decode} to Object\n * instances, which means:\n * * {@link Structure}\n * * {@link Union}\n * * {@link VariantLayout}\n * * {@link BitStructure}\n *\n * If left undefined the JavaScript representation of these layouts\n * will be Object instances.\n *\n * See {@link bindConstructorLayout}.\n */\n makeDestinationObject() {\n return {};\n }\n\n /**\n * Decode from a Buffer into an JavaScript value.\n *\n * @param {Buffer} b - the buffer from which encoded data is read.\n *\n * @param {Number} [offset] - the offset at which the encoded data\n * starts. If absent a zero offset is inferred.\n *\n * @returns {(Number|Array|Object)} - the value of the decoded data.\n *\n * @abstract\n */\n decode(b, offset) {\n throw new Error('Layout is abstract');\n }\n\n /**\n * Encode a JavaScript value into a Buffer.\n *\n * @param {(Number|Array|Object)} src - the value to be encoded into\n * the buffer. The type accepted depends on the (sub-)type of {@link\n * Layout}.\n *\n * @param {Buffer} b - the buffer into which encoded data will be\n * written.\n *\n * @param {Number} [offset] - the offset at which the encoded data\n * starts. If absent a zero offset is inferred.\n *\n * @returns {Number} - the number of bytes encoded, including the\n * space skipped for internal padding, but excluding data such as\n * {@link Sequence#count|lengths} when stored {@link\n * ExternalLayout|externally}. This is the adjustment to `offset`\n * producing the offset where data for the next layout would be\n * written.\n *\n * @abstract\n */\n encode(src, b, offset) {\n throw new Error('Layout is abstract');\n }\n\n /**\n * Calculate the span of a specific instance of a layout.\n *\n * @param {Buffer} b - the buffer that contains an encoded instance.\n *\n * @param {Number} [offset] - the offset at which the encoded instance\n * starts. If absent a zero offset is inferred.\n *\n * @return {Number} - the number of bytes covered by the layout\n * instance. If this method is not overridden in a subclass the\n * definition-time constant {@link Layout#span|span} will be\n * returned.\n *\n * @throws {RangeError} - if the length of the value cannot be\n * determined.\n */\n getSpan(b, offset) {\n if (0 > this.span) {\n throw new RangeError('indeterminate span');\n }\n return this.span;\n }\n\n /**\n * Replicate the layout using a new property.\n *\n * This function must be used to get a structurally-equivalent layout\n * with a different name since all {@link Layout} instances are\n * immutable.\n *\n * **NOTE** This is a shallow copy. All fields except {@link\n * Layout#property|property} are strictly equal to the origin layout.\n *\n * @param {String} property - the value for {@link\n * Layout#property|property} in the replica.\n *\n * @returns {Layout} - the copy with {@link Layout#property|property}\n * set to `property`.\n */\n replicate(property) {\n const rv = Object.create(this.constructor.prototype);\n Object.assign(rv, this);\n rv.property = property;\n return rv;\n }\n\n /**\n * Create an object from layout properties and an array of values.\n *\n * **NOTE** This function returns `undefined` if invoked on a layout\n * that does not return its value as an Object. Objects are\n * returned for things that are a {@link Structure}, which includes\n * {@link VariantLayout|variant layouts} if they are structures, and\n * excludes {@link Union}s. If you want this feature for a union\n * you must use {@link Union.getVariant|getVariant} to select the\n * desired layout.\n *\n * @param {Array} values - an array of values that correspond to the\n * default order for properties. As with {@link Layout#decode|decode}\n * layout elements that have no property name are skipped when\n * iterating over the array values. Only the top-level properties are\n * assigned; arguments are not assigned to properties of contained\n * layouts. Any unused values are ignored.\n *\n * @return {(Object|undefined)}\n */\n fromArray(values) {\n return undefined;\n }\n}\nvar Layout_2 = Layout;\n\n/* Provide text that carries a name (such as for a function that will\n * be throwing an error) annotated with the property of a given layout\n * (such as one for which the value was unacceptable).\n *\n * @ignore */\nfunction nameWithProperty(name, lo) {\n if (lo.property) {\n return name + '[' + lo.property + ']';\n }\n return name;\n}\n\n/**\n * An object that behaves like a layout but does not consume space\n * within its containing layout.\n *\n * This is primarily used to obtain metadata about a member, such as a\n * {@link OffsetLayout} that can provide data about a {@link\n * Layout#getSpan|value-specific span}.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support {@link\n * ExternalLayout#isCount|isCount} or other {@link Layout} functions.\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @abstract\n * @augments {Layout}\n */\nclass ExternalLayout extends Layout {\n /**\n * Return `true` iff the external layout decodes to an unsigned\n * integer layout.\n *\n * In that case it can be used as the source of {@link\n * Sequence#count|Sequence counts}, {@link Blob#length|Blob lengths},\n * or as {@link UnionLayoutDiscriminator#layout|external union\n * discriminators}.\n *\n * @abstract\n */\n isCount() {\n throw new Error('ExternalLayout is abstract');\n }\n}\n\n/**\n * An {@link ExternalLayout} that supports accessing a {@link Layout}\n * at a fixed offset from the start of another Layout. The offset may\n * be before, within, or after the base layout.\n *\n * *Factory*: {@link module:Layout.offset|offset}\n *\n * @param {Layout} layout - initializer for {@link\n * OffsetLayout#layout|layout}, modulo `property`.\n *\n * @param {Number} [offset] - Initializes {@link\n * OffsetLayout#offset|offset}. Defaults to zero.\n *\n * @param {string} [property] - Optional new property name for a\n * {@link Layout#replicate| replica} of `layout` to be used as {@link\n * OffsetLayout#layout|layout}. If not provided the `layout` is used\n * unchanged.\n *\n * @augments {Layout}\n */\nclass OffsetLayout extends ExternalLayout {\n constructor(layout, offset, property) {\n if (!(layout instanceof Layout)) {\n throw new TypeError('layout must be a Layout');\n }\n\n if (undefined === offset) {\n offset = 0;\n } else if (!Number.isInteger(offset)) {\n throw new TypeError('offset must be integer or undefined');\n }\n\n super(layout.span, property || layout.property);\n\n /** The subordinated layout. */\n this.layout = layout;\n\n /** The location of {@link OffsetLayout#layout} relative to the\n * start of another layout.\n *\n * The value may be positive or negative, but an error will thrown\n * if at the point of use it goes outside the span of the Buffer\n * being accessed. */\n this.offset = offset;\n }\n\n /** @override */\n isCount() {\n return ((this.layout instanceof UInt)\n || (this.layout instanceof UIntBE));\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return this.layout.decode(b, offset + this.offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return this.layout.encode(src, b, offset + this.offset);\n }\n}\n\n/**\n * Represent an unsigned integer in little-endian format.\n *\n * *Factory*: {@link module:Layout.u8|u8}, {@link\n * module:Layout.u16|u16}, {@link module:Layout.u24|u24}, {@link\n * module:Layout.u32|u32}, {@link module:Layout.u40|u40}, {@link\n * module:Layout.u48|u48}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UInt extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readUIntLE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeUIntLE(src, offset, this.span);\n return this.span;\n }\n}\n\n/**\n * Represent an unsigned integer in big-endian format.\n *\n * *Factory*: {@link module:Layout.u8be|u8be}, {@link\n * module:Layout.u16be|u16be}, {@link module:Layout.u24be|u24be},\n * {@link module:Layout.u32be|u32be}, {@link\n * module:Layout.u40be|u40be}, {@link module:Layout.u48be|u48be}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UIntBE extends Layout {\n constructor(span, property) {\n super( span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readUIntBE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeUIntBE(src, offset, this.span);\n return this.span;\n }\n}\n\nconst V2E32 = Math.pow(2, 32);\n\n/* True modulus high and low 32-bit words, where low word is always\n * non-negative. */\nfunction divmodInt64(src) {\n const hi32 = Math.floor(src / V2E32);\n const lo32 = src - (hi32 * V2E32);\n return {hi32, lo32};\n}\n/* Reconstruct Number from quotient and non-negative remainder */\nfunction roundedInt64(hi32, lo32) {\n return hi32 * V2E32 + lo32;\n}\n\n/**\n * Represent an unsigned 64-bit integer in little-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.nu64|nu64}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearUInt64 extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const lo32 = b.readUInt32LE(offset);\n const hi32 = b.readUInt32LE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeUInt32LE(split.lo32, offset);\n b.writeUInt32LE(split.hi32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent a signed 64-bit integer in little-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.ns64|ns64}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearInt64 extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const lo32 = b.readUInt32LE(offset);\n const hi32 = b.readInt32LE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeUInt32LE(split.lo32, offset);\n b.writeInt32LE(split.hi32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent a contiguous sequence of arbitrary layout elements as an\n * Object.\n *\n * *Factory*: {@link module:Layout.struct|struct}\n *\n * **NOTE** The {@link Layout#span|span} of the structure is variable\n * if any layout in {@link Structure#fields|fields} has a variable\n * span. When {@link Layout#encode|encoding} we must have a value for\n * all variable-length fields, or we wouldn't be able to figure out\n * how much space to use for storage. We can only identify the value\n * for a field when it has a {@link Layout#property|property}. As\n * such, although a structure may contain both unnamed fields and\n * variable-length fields, it cannot contain an unnamed\n * variable-length field.\n *\n * @param {Layout[]} fields - initializer for {@link\n * Structure#fields|fields}. An error is raised if this contains a\n * variable-length field for which a {@link Layout#property|property}\n * is not defined.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @param {Boolean} [decodePrefixes] - initializer for {@link\n * Structure#decodePrefixes|property}.\n *\n * @throws {Error} - if `fields` contains an unnamed variable-length\n * layout.\n *\n * @augments {Layout}\n */\nclass Structure extends Layout {\n constructor(fields, property, decodePrefixes) {\n if (!(Array.isArray(fields)\n && fields.reduce((acc, v) => acc && (v instanceof Layout), true))) {\n throw new TypeError('fields must be array of Layout instances');\n }\n if (('boolean' === typeof property)\n && (undefined === decodePrefixes)) {\n decodePrefixes = property;\n property = undefined;\n }\n\n /* Verify absence of unnamed variable-length fields. */\n for (const fd of fields) {\n if ((0 > fd.span)\n && (undefined === fd.property)) {\n throw new Error('fields cannot contain unnamed variable-length layout');\n }\n }\n\n let span = -1;\n try {\n span = fields.reduce((span, fd) => span + fd.getSpan(), 0);\n } catch (e) {\n }\n super(span, property);\n\n /** The sequence of {@link Layout} values that comprise the\n * structure.\n *\n * The individual elements need not be the same type, and may be\n * either scalar or aggregate layouts. If a member layout leaves\n * its {@link Layout#property|property} undefined the\n * corresponding region of the buffer associated with the element\n * will not be mutated.\n *\n * @type {Layout[]} */\n this.fields = fields;\n\n /** Control behavior of {@link Layout#decode|decode()} given short\n * buffers.\n *\n * In some situations a structure many be extended with additional\n * fields over time, with older installations providing only a\n * prefix of the full structure. If this property is `true`\n * decoding will accept those buffers and leave subsequent fields\n * undefined, as long as the buffer ends at a field boundary.\n * Defaults to `false`. */\n this.decodePrefixes = !!decodePrefixes;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n let span = 0;\n try {\n span = this.fields.reduce((span, fd) => {\n const fsp = fd.getSpan(b, offset);\n offset += fsp;\n return span + fsp;\n }, 0);\n } catch (e) {\n throw new RangeError('indeterminate span');\n }\n return span;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const dest = this.makeDestinationObject();\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n dest[fd.property] = fd.decode(b, offset);\n }\n offset += fd.getSpan(b, offset);\n if (this.decodePrefixes\n && (b.length === offset)) {\n break;\n }\n }\n return dest;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Structure}.\n *\n * If `src` is missing a property for a member with a defined {@link\n * Layout#property|property} the corresponding region of the buffer is\n * left unmodified. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const firstOffset = offset;\n let lastOffset = 0;\n let lastWrote = 0;\n for (const fd of this.fields) {\n let span = fd.span;\n lastWrote = (0 < span) ? span : 0;\n if (undefined !== fd.property) {\n const fv = src[fd.property];\n if (undefined !== fv) {\n lastWrote = fd.encode(fv, b, offset);\n if (0 > span) {\n /* Read the as-encoded span, which is not necessarily the\n * same as what we wrote. */\n span = fd.getSpan(b, offset);\n }\n }\n }\n lastOffset = offset;\n offset += span;\n }\n /* Use (lastOffset + lastWrote) instead of offset because the last\n * item may have had a dynamic length and we don't want to include\n * the padding between it and the end of the space reserved for\n * it. */\n return (lastOffset + lastWrote) - firstOffset;\n }\n\n /** @override */\n fromArray(values) {\n const dest = this.makeDestinationObject();\n for (const fd of this.fields) {\n if ((undefined !== fd.property)\n && (0 < values.length)) {\n dest[fd.property] = values.shift();\n }\n }\n return dest;\n }\n\n /**\n * Get access to the layout of a given property.\n *\n * @param {String} property - the structure member of interest.\n *\n * @return {Layout} - the layout associated with `property`, or\n * undefined if there is no such property.\n */\n layoutFor(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n for (const fd of this.fields) {\n if (fd.property === property) {\n return fd;\n }\n }\n }\n\n /**\n * Get the offset of a structure member.\n *\n * @param {String} property - the structure member of interest.\n *\n * @return {Number} - the offset in bytes to the start of `property`\n * within the structure, or undefined if `property` is not a field\n * within the structure. If the property is a member but follows a\n * variable-length structure member a negative number will be\n * returned.\n */\n offsetOf(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n let offset = 0;\n for (const fd of this.fields) {\n if (fd.property === property) {\n return offset;\n }\n if (0 > fd.span) {\n offset = -1;\n } else if (0 <= offset) {\n offset += fd.span;\n }\n }\n }\n}\n\n/**\n * An object that can provide a {@link\n * Union#discriminator|discriminator} API for {@link Union}.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support the {@link\n * UnionDiscriminator#encode|encode} or {@link\n * UnionDiscriminator#decode|decode} functions.\n *\n * @param {string} [property] - Default for {@link\n * UnionDiscriminator#property|property}.\n *\n * @abstract\n */\nclass UnionDiscriminator {\n constructor(property) {\n /** The {@link Layout#property|property} to be used when the\n * discriminator is referenced in isolation (generally when {@link\n * Union#decode|Union decode} cannot delegate to a specific\n * variant). */\n this.property = property;\n }\n\n /** Analog to {@link Layout#decode|Layout decode} for union discriminators.\n *\n * The implementation of this method need not reference the buffer if\n * variant information is available through other means. */\n decode() {\n throw new Error('UnionDiscriminator is abstract');\n }\n\n /** Analog to {@link Layout#decode|Layout encode} for union discriminators.\n *\n * The implementation of this method need not store the value if\n * variant information is maintained through other means. */\n encode() {\n throw new Error('UnionDiscriminator is abstract');\n }\n}\n\n/**\n * An object that can provide a {@link\n * UnionDiscriminator|discriminator API} for {@link Union} using an\n * unsigned integral {@link Layout} instance located either inside or\n * outside the union.\n *\n * @param {ExternalLayout} layout - initializes {@link\n * UnionLayoutDiscriminator#layout|layout}. Must satisfy {@link\n * ExternalLayout#isCount|isCount()}.\n *\n * @param {string} [property] - Default for {@link\n * UnionDiscriminator#property|property}, superseding the property\n * from `layout`, but defaulting to `variant` if neither `property`\n * nor layout provide a property name.\n *\n * @augments {UnionDiscriminator}\n */\nclass UnionLayoutDiscriminator extends UnionDiscriminator {\n constructor(layout, property) {\n if (!((layout instanceof ExternalLayout)\n && layout.isCount())) {\n throw new TypeError('layout must be an unsigned integer ExternalLayout');\n }\n\n super(property || layout.property || 'variant');\n\n /** The {@link ExternalLayout} used to access the discriminator\n * value. */\n this.layout = layout;\n }\n\n /** Delegate decoding to {@link UnionLayoutDiscriminator#layout|layout}. */\n decode(b, offset) {\n return this.layout.decode(b, offset);\n }\n\n /** Delegate encoding to {@link UnionLayoutDiscriminator#layout|layout}. */\n encode(src, b, offset) {\n return this.layout.encode(src, b, offset);\n }\n}\n\n/**\n * Represent any number of span-compatible layouts.\n *\n * *Factory*: {@link module:Layout.union|union}\n *\n * If the union has a {@link Union#defaultLayout|default layout} that\n * layout must have a non-negative {@link Layout#span|span}. The span\n * of a fixed-span union includes its {@link\n * Union#discriminator|discriminator} if the variant is a {@link\n * Union#usesPrefixDiscriminator|prefix of the union}, plus the span\n * of its {@link Union#defaultLayout|default layout}.\n *\n * If the union does not have a default layout then the encoded span\n * of the union depends on the encoded span of its variant (which may\n * be fixed or variable).\n *\n * {@link VariantLayout#layout|Variant layout}s are added through\n * {@link Union#addVariant|addVariant}. If the union has a default\n * layout, the span of the {@link VariantLayout#layout|layout\n * contained by the variant} must not exceed the span of the {@link\n * Union#defaultLayout|default layout} (minus the span of a {@link\n * Union#usesPrefixDiscriminator|prefix disriminator}, if used). The\n * span of the variant will equal the span of the union itself.\n *\n * The variant for a buffer can only be identified from the {@link\n * Union#discriminator|discriminator} {@link\n * UnionDiscriminator#property|property} (in the case of the {@link\n * Union#defaultLayout|default layout}), or by using {@link\n * Union#getVariant|getVariant} and examining the resulting {@link\n * VariantLayout} instance.\n *\n * A variant compatible with a JavaScript object can be identified\n * using {@link Union#getSourceVariant|getSourceVariant}.\n *\n * @param {(UnionDiscriminator|ExternalLayout|Layout)} discr - How to\n * identify the layout used to interpret the union contents. The\n * parameter must be an instance of {@link UnionDiscriminator}, an\n * {@link ExternalLayout} that satisfies {@link\n * ExternalLayout#isCount|isCount()}, or {@link UInt} (or {@link\n * UIntBE}). When a non-external layout element is passed the layout\n * appears at the start of the union. In all cases the (synthesized)\n * {@link UnionDiscriminator} instance is recorded as {@link\n * Union#discriminator|discriminator}.\n *\n * @param {(Layout|null)} defaultLayout - initializer for {@link\n * Union#defaultLayout|defaultLayout}. If absent defaults to `null`.\n * If `null` there is no default layout: the union has data-dependent\n * length and attempts to decode or encode unrecognized variants will\n * throw an exception. A {@link Layout} instance must have a\n * non-negative {@link Layout#span|span}, and if it lacks a {@link\n * Layout#property|property} the {@link\n * Union#defaultLayout|defaultLayout} will be a {@link\n * Layout#replicate|replica} with property `content`.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Union extends Layout {\n constructor(discr, defaultLayout, property) {\n const upv = ((discr instanceof UInt)\n || (discr instanceof UIntBE));\n if (upv) {\n discr = new UnionLayoutDiscriminator(new OffsetLayout(discr));\n } else if ((discr instanceof ExternalLayout)\n && discr.isCount()) {\n discr = new UnionLayoutDiscriminator(discr);\n } else if (!(discr instanceof UnionDiscriminator)) {\n throw new TypeError('discr must be a UnionDiscriminator '\n + 'or an unsigned integer layout');\n }\n if (undefined === defaultLayout) {\n defaultLayout = null;\n }\n if (!((null === defaultLayout)\n || (defaultLayout instanceof Layout))) {\n throw new TypeError('defaultLayout must be null or a Layout');\n }\n if (null !== defaultLayout) {\n if (0 > defaultLayout.span) {\n throw new Error('defaultLayout must have constant span');\n }\n if (undefined === defaultLayout.property) {\n defaultLayout = defaultLayout.replicate('content');\n }\n }\n\n /* The union span can be estimated only if there's a default\n * layout. The union spans its default layout, plus any prefix\n * variant layout. By construction both layouts, if present, have\n * non-negative span. */\n let span = -1;\n if (defaultLayout) {\n span = defaultLayout.span;\n if ((0 <= span) && upv) {\n span += discr.layout.span;\n }\n }\n super(span, property);\n\n /** The interface for the discriminator value in isolation.\n *\n * This a {@link UnionDiscriminator} either passed to the\n * constructor or synthesized from the `discr` constructor\n * argument. {@link\n * Union#usesPrefixDiscriminator|usesPrefixDiscriminator} will be\n * `true` iff the `discr` parameter was a non-offset {@link\n * Layout} instance. */\n this.discriminator = discr;\n\n /** `true` if the {@link Union#discriminator|discriminator} is the\n * first field in the union.\n *\n * If `false` the discriminator is obtained from somewhere\n * else. */\n this.usesPrefixDiscriminator = upv;\n\n /** The layout for non-discriminator content when the value of the\n * discriminator is not recognized.\n *\n * This is the value passed to the constructor. It is\n * structurally equivalent to the second component of {@link\n * Union#layout|layout} but may have a different property\n * name. */\n this.defaultLayout = defaultLayout;\n\n /** A registry of allowed variants.\n *\n * The keys are unsigned integers which should be compatible with\n * {@link Union.discriminator|discriminator}. The property value\n * is the corresponding {@link VariantLayout} instances assigned\n * to this union by {@link Union#addVariant|addVariant}.\n *\n * **NOTE** The registry remains mutable so that variants can be\n * {@link Union#addVariant|added} at any time. Users should not\n * manipulate the content of this property. */\n this.registry = {};\n\n /* Private variable used when invoking getSourceVariant */\n let boundGetSourceVariant = this.defaultGetSourceVariant.bind(this);\n\n /** Function to infer the variant selected by a source object.\n *\n * Defaults to {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant} but may\n * be overridden using {@link\n * Union#configGetSourceVariant|configGetSourceVariant}.\n *\n * @param {Object} src - as with {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant}.\n *\n * @returns {(undefined|VariantLayout)} The default variant\n * (`undefined`) or first registered variant that uses a property\n * available in `src`. */\n this.getSourceVariant = function(src) {\n return boundGetSourceVariant(src);\n };\n\n /** Function to override the implementation of {@link\n * Union#getSourceVariant|getSourceVariant}.\n *\n * Use this if the desired variant cannot be identified using the\n * algorithm of {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant}.\n *\n * **NOTE** The provided function will be invoked bound to this\n * Union instance, providing local access to {@link\n * Union#registry|registry}.\n *\n * @param {Function} gsv - a function that follows the API of\n * {@link Union#defaultGetSourceVariant|defaultGetSourceVariant}. */\n this.configGetSourceVariant = function(gsv) {\n boundGetSourceVariant = gsv.bind(this);\n };\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n /* Default layouts always have non-negative span, so we don't have\n * one and we have to recognize the variant which will in turn\n * determine the span. */\n const vlo = this.getVariant(b, offset);\n if (!vlo) {\n throw new Error('unable to determine span for unrecognized variant');\n }\n return vlo.getSpan(b, offset);\n }\n\n /**\n * Method to infer a registered Union variant compatible with `src`.\n *\n * The first satisified rule in the following sequence defines the\n * return value:\n * * If `src` has properties matching the Union discriminator and\n * the default layout, `undefined` is returned regardless of the\n * value of the discriminator property (this ensures the default\n * layout will be used);\n * * If `src` has a property matching the Union discriminator, the\n * value of the discriminator identifies a registered variant, and\n * either (a) the variant has no layout, or (b) `src` has the\n * variant's property, then the variant is returned (because the\n * source satisfies the constraints of the variant it identifies);\n * * If `src` does not have a property matching the Union\n * discriminator, but does have a property matching a registered\n * variant, then the variant is returned (because the source\n * matches a variant without an explicit conflict);\n * * An error is thrown (because we either can't identify a variant,\n * or we were explicitly told the variant but can't satisfy it).\n *\n * @param {Object} src - an object presumed to be compatible with\n * the content of the Union.\n *\n * @return {(undefined|VariantLayout)} - as described above.\n *\n * @throws {Error} - if `src` cannot be associated with a default or\n * registered variant.\n */\n defaultGetSourceVariant(src) {\n if (src.hasOwnProperty(this.discriminator.property)) {\n if (this.defaultLayout\n && src.hasOwnProperty(this.defaultLayout.property)) {\n return undefined;\n }\n const vlo = this.registry[src[this.discriminator.property]];\n if (vlo\n && ((!vlo.layout)\n || src.hasOwnProperty(vlo.property))) {\n return vlo;\n }\n } else {\n for (const tag in this.registry) {\n const vlo = this.registry[tag];\n if (src.hasOwnProperty(vlo.property)) {\n return vlo;\n }\n }\n }\n throw new Error('unable to infer src variant');\n }\n\n /** Implement {@link Layout#decode|decode} for {@link Union}.\n *\n * If the variant is {@link Union#addVariant|registered} the return\n * value is an instance of that variant, with no explicit\n * discriminator. Otherwise the {@link Union#defaultLayout|default\n * layout} is used to decode the content. */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n let dest;\n const dlo = this.discriminator;\n const discr = dlo.decode(b, offset);\n let clo = this.registry[discr];\n if (undefined === clo) {\n let contentOffset = 0;\n clo = this.defaultLayout;\n if (this.usesPrefixDiscriminator) {\n contentOffset = dlo.layout.span;\n }\n dest = this.makeDestinationObject();\n dest[dlo.property] = discr;\n dest[clo.property] = this.defaultLayout.decode(b, offset + contentOffset);\n } else {\n dest = clo.decode(b, offset);\n }\n return dest;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Union}.\n *\n * This API assumes the `src` object is consistent with the union's\n * {@link Union#defaultLayout|default layout}. To encode variants\n * use the appropriate variant-specific {@link VariantLayout#encode}\n * method. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const vlo = this.getSourceVariant(src);\n if (undefined === vlo) {\n const dlo = this.discriminator;\n const clo = this.defaultLayout;\n let contentOffset = 0;\n if (this.usesPrefixDiscriminator) {\n contentOffset = dlo.layout.span;\n }\n dlo.encode(src[dlo.property], b, offset);\n return contentOffset + clo.encode(src[clo.property], b,\n offset + contentOffset);\n }\n return vlo.encode(src, b, offset);\n }\n\n /** Register a new variant structure within a union. The newly\n * created variant is returned.\n *\n * @param {Number} variant - initializer for {@link\n * VariantLayout#variant|variant}.\n *\n * @param {Layout} layout - initializer for {@link\n * VariantLayout#layout|layout}.\n *\n * @param {String} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {VariantLayout} */\n addVariant(variant, layout, property) {\n const rv = new VariantLayout(this, variant, layout, property);\n this.registry[variant] = rv;\n return rv;\n }\n\n /**\n * Get the layout associated with a registered variant.\n *\n * If `vb` does not produce a registered variant the function returns\n * `undefined`.\n *\n * @param {(Number|Buffer)} vb - either the variant number, or a\n * buffer from which the discriminator is to be read.\n *\n * @param {Number} offset - offset into `vb` for the start of the\n * union. Used only when `vb` is an instance of {Buffer}.\n *\n * @return {({VariantLayout}|undefined)}\n */\n getVariant(vb, offset) {\n let variant = vb;\n if (Buffer.isBuffer(vb)) {\n if (undefined === offset) {\n offset = 0;\n }\n variant = this.discriminator.decode(vb, offset);\n }\n return this.registry[variant];\n }\n}\n\n/**\n * Represent a specific variant within a containing union.\n *\n * **NOTE** The {@link Layout#span|span} of the variant may include\n * the span of the {@link Union#discriminator|discriminator} used to\n * identify it, but values read and written using the variant strictly\n * conform to the content of {@link VariantLayout#layout|layout}.\n *\n * **NOTE** User code should not invoke this constructor directly. Use\n * the union {@link Union#addVariant|addVariant} helper method.\n *\n * @param {Union} union - initializer for {@link\n * VariantLayout#union|union}.\n *\n * @param {Number} variant - initializer for {@link\n * VariantLayout#variant|variant}.\n *\n * @param {Layout} [layout] - initializer for {@link\n * VariantLayout#layout|layout}. If absent the variant carries no\n * data.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}. Unlike many other layouts, variant\n * layouts normally include a property name so they can be identified\n * within their containing {@link Union}. The property identifier may\n * be absent only if `layout` is is absent.\n *\n * @augments {Layout}\n */\nclass VariantLayout extends Layout {\n constructor(union, variant, layout, property) {\n if (!(union instanceof Union)) {\n throw new TypeError('union must be a Union');\n }\n if ((!Number.isInteger(variant)) || (0 > variant)) {\n throw new TypeError('variant must be a (non-negative) integer');\n }\n if (('string' === typeof layout)\n && (undefined === property)) {\n property = layout;\n layout = null;\n }\n if (layout) {\n if (!(layout instanceof Layout)) {\n throw new TypeError('layout must be a Layout');\n }\n if ((null !== union.defaultLayout)\n && (0 <= layout.span)\n && (layout.span > union.defaultLayout.span)) {\n throw new Error('variant span exceeds span of containing union');\n }\n if ('string' !== typeof property) {\n throw new TypeError('variant must have a String property');\n }\n }\n let span = union.span;\n if (0 > union.span) {\n span = layout ? layout.span : 0;\n if ((0 <= span) && union.usesPrefixDiscriminator) {\n span += union.discriminator.layout.span;\n }\n }\n super(span, property);\n\n /** The {@link Union} to which this variant belongs. */\n this.union = union;\n\n /** The unsigned integral value identifying this variant within\n * the {@link Union#discriminator|discriminator} of the containing\n * union. */\n this.variant = variant;\n\n /** The {@link Layout} to be used when reading/writing the\n * non-discriminator part of the {@link\n * VariantLayout#union|union}. If `null` the variant carries no\n * data. */\n this.layout = layout || null;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n /* Will be equal to the containing union span if that is not\n * variable. */\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n /* Span is defined solely by the variant (and prefix discriminator) */\n return contentOffset + this.layout.getSpan(b, offset + contentOffset);\n }\n\n /** @override */\n decode(b, offset) {\n const dest = this.makeDestinationObject();\n if (undefined === offset) {\n offset = 0;\n }\n if (this !== this.union.getVariant(b, offset)) {\n throw new Error('variant mismatch');\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n if (this.layout) {\n dest[this.property] = this.layout.decode(b, offset + contentOffset);\n } else if (this.property) {\n dest[this.property] = true;\n } else if (this.union.usesPrefixDiscriminator) {\n dest[this.union.discriminator.property] = this.variant;\n }\n return dest;\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n if (this.layout\n && (!src.hasOwnProperty(this.property))) {\n throw new TypeError('variant lacks property ' + this.property);\n }\n this.union.discriminator.encode(this.variant, b, offset);\n let span = contentOffset;\n if (this.layout) {\n this.layout.encode(src[this.property], b, offset + contentOffset);\n span += this.layout.getSpan(b, offset + contentOffset);\n if ((0 <= this.union.span)\n && (span > this.union.span)) {\n throw new Error('encoded variant overruns containing union');\n }\n }\n return span;\n }\n\n /** Delegate {@link Layout#fromArray|fromArray} to {@link\n * VariantLayout#layout|layout}. */\n fromArray(values) {\n if (this.layout) {\n return this.layout.fromArray(values);\n }\n }\n}\n/* eslint-enable no-extend-native */\n\n/**\n * Contain a fixed-length block of arbitrary data, represented as a\n * Buffer.\n *\n * *Factory*: {@link module:Layout.blob|blob}\n *\n * @param {(Number|ExternalLayout)} length - initializes {@link\n * Blob#length|length}.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Blob$1 extends Layout {\n constructor(length, property) {\n if (!(((length instanceof ExternalLayout) && length.isCount())\n || (Number.isInteger(length) && (0 <= length)))) {\n throw new TypeError('length must be positive integer '\n + 'or an unsigned integer ExternalLayout');\n }\n\n let span = -1;\n if (!(length instanceof ExternalLayout)) {\n span = length;\n }\n super(span, property);\n\n /** The number of bytes in the blob.\n *\n * This may be a non-negative integer, or an instance of {@link\n * ExternalLayout} that satisfies {@link\n * ExternalLayout#isCount|isCount()}. */\n this.length = length;\n }\n\n /** @override */\n getSpan(b, offset) {\n let span = this.span;\n if (0 > span) {\n span = this.length.decode(b, offset);\n }\n return span;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n let span = this.span;\n if (0 > span) {\n span = this.length.decode(b, offset);\n }\n return b.slice(offset, offset + span);\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Blob}.\n *\n * **NOTE** If {@link Layout#count|count} is an instance of {@link\n * ExternalLayout} then the length of `src` will be encoded as the\n * count after `src` is encoded. */\n encode(src, b, offset) {\n let span = this.length;\n if (this.length instanceof ExternalLayout) {\n span = src.length;\n }\n if (!(Buffer.isBuffer(src)\n && (span === src.length))) {\n throw new TypeError(nameWithProperty('Blob.encode', this)\n + ' requires (length ' + span + ') Buffer as src');\n }\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n b.write(src.toString('hex'), offset, span, 'hex');\n if (this.length instanceof ExternalLayout) {\n this.length.encode(span, b, offset);\n }\n return span;\n }\n}\n\n/** Factory for {@link OffsetLayout}. */\nvar offset = ((layout, offset, property) => new OffsetLayout(layout, offset, property));\n\n/** Factory for {@link UInt|unsigned int layouts} spanning one\n * byte. */\nvar u8 = (property => new UInt(1, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning four bytes. */\nvar u32 = (property => new UInt(4, property));\n\n/** Factory for {@link NearUInt64|little-endian unsigned int\n * layouts} interpreted as Numbers. */\nvar nu64 = (property => new NearUInt64(property));\n\n/** Factory for {@link NearInt64|little-endian signed int layouts}\n * interpreted as Numbers. */\nvar ns64 = (property => new NearInt64(property));\n\n/** Factory for {@link Structure} values. */\nvar struct = ((fields, property, decodePrefixes) => new Structure(fields, property, decodePrefixes));\n\n/** Factory for {@link Union} values. */\nvar union = ((discr, defaultLayout, property) => new Union(discr, defaultLayout, property));\n\n/** Factory for {@link Blob} values. */\nvar blob = ((length, property) => new Blob$1(length, property));\n\nclass SystemInstructionCoder {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n constructor(_) { }\n encode(ixName, ix) {\n switch (camelCase(ixName)) {\n case \"createAccount\": {\n return encodeCreateAccount(ix);\n }\n case \"assign\": {\n return encodeAssign(ix);\n }\n case \"transfer\": {\n return encodeTransfer(ix);\n }\n case \"createAccountWithSeed\": {\n return encodeCreateAccountWithSeed(ix);\n }\n case \"advanceNonceAccount\": {\n return encodeAdvanceNonceAccount(ix);\n }\n case \"withdrawNonceAccount\": {\n return encodeWithdrawNonceAccount(ix);\n }\n case \"initializeNonceAccount\": {\n return encodeInitializeNonceAccount(ix);\n }\n case \"authorizeNonceAccount\": {\n return encodeAuthorizeNonceAccount(ix);\n }\n case \"allocate\": {\n return encodeAllocate(ix);\n }\n case \"allocateWithSeed\": {\n return encodeAllocateWithSeed(ix);\n }\n case \"assignWithSeed\": {\n return encodeAssignWithSeed(ix);\n }\n case \"transferWithSeed\": {\n return encodeTransferWithSeed(ix);\n }\n default: {\n throw new Error(`Invalid instruction: ${ixName}`);\n }\n }\n }\n encodeState(_ixName, _ix) {\n throw new Error(\"System does not have state\");\n }\n}\nclass RustStringLayout extends Layout_2 {\n constructor(property) {\n super(-1, property);\n this.property = property;\n this.layout = struct([\n u32(\"length\"),\n u32(\"lengthPadding\"),\n blob(offset(u32(), -8), \"chars\"),\n ], this.property);\n }\n encode(src, b, offset = 0) {\n if (src === null || src === undefined) {\n return this.layout.span;\n }\n const data = {\n chars: Buffer.from(src, \"utf8\"),\n };\n return this.layout.encode(data, b, offset);\n }\n decode(b, offset = 0) {\n const data = this.layout.decode(b, offset);\n return data[\"chars\"].toString();\n }\n getSpan(b, offset = 0) {\n return (u32().span +\n u32().span +\n new BN(new Uint8Array(b).slice(offset, offset + 4), 10, \"le\").toNumber());\n }\n}\nfunction rustStringLayout(property) {\n return new RustStringLayout(property);\n}\nfunction publicKey$2(property) {\n return blob(32, property);\n}\nfunction encodeCreateAccount({ lamports, space, owner }) {\n return encodeData({\n createAccount: { lamports, space, owner: owner.toBuffer() },\n });\n}\nfunction encodeAssign({ owner }) {\n return encodeData({\n assign: { owner: owner.toBuffer() },\n });\n}\nfunction encodeTransfer({ lamports }) {\n return encodeData({\n transfer: { lamports },\n });\n}\nfunction encodeCreateAccountWithSeed({ base, seed, lamports, space, owner, }) {\n return encodeData({\n createAccountWithSeed: {\n base: base.toBuffer(),\n seed,\n lamports,\n space,\n owner: owner.toBuffer(),\n },\n }, LAYOUT.getVariant(3).span + seed.length);\n}\nfunction encodeInitializeNonceAccount({ authorized }) {\n return encodeData({\n initializeNonceAccount: { authorized: authorized.toBuffer() },\n });\n}\nfunction encodeAdvanceNonceAccount({ authorized }) {\n return encodeData({\n advanceNonceAccount: { authorized: authorized.toBuffer() },\n });\n}\nfunction encodeWithdrawNonceAccount({ lamports }) {\n return encodeData({\n withdrawNonceAccount: { lamports },\n });\n}\nfunction encodeAuthorizeNonceAccount({ authorized }) {\n return encodeData({\n authorizeNonceAccount: { authorized: authorized.toBuffer() },\n });\n}\nfunction encodeAllocate({ space }) {\n return encodeData({\n allocate: { space },\n });\n}\nfunction encodeAllocateWithSeed({ base, seed, space, owner }) {\n return encodeData({\n allocateWithSeed: {\n base: base.toBuffer(),\n seed,\n space,\n owner: owner.toBuffer(),\n },\n }, LAYOUT.getVariant(9).span + seed.length);\n}\nfunction encodeAssignWithSeed({ base, seed, owner }) {\n return encodeData({\n assignWithSeed: {\n base: base.toBuffer(),\n seed,\n owner: owner.toBuffer(),\n },\n }, LAYOUT.getVariant(10).span + seed.length);\n}\nfunction encodeTransferWithSeed({ lamports, seed, owner }) {\n return encodeData({\n transferWithSeed: {\n lamports,\n seed,\n owner: owner.toBuffer(),\n },\n }, LAYOUT.getVariant(11).span + seed.length);\n}\nconst LAYOUT = union(u32(\"instruction\"));\nLAYOUT.addVariant(0, struct([\n ns64(\"lamports\"),\n ns64(\"space\"),\n publicKey$2(\"owner\"),\n]), \"createAccount\");\nLAYOUT.addVariant(1, struct([publicKey$2(\"owner\")]), \"assign\");\nLAYOUT.addVariant(2, struct([ns64(\"lamports\")]), \"transfer\");\nLAYOUT.addVariant(3, struct([\n publicKey$2(\"base\"),\n rustStringLayout(\"seed\"),\n ns64(\"lamports\"),\n ns64(\"space\"),\n publicKey$2(\"owner\"),\n]), \"createAccountWithSeed\");\nLAYOUT.addVariant(4, struct([publicKey$2(\"authorized\")]), \"advanceNonceAccount\");\nLAYOUT.addVariant(5, struct([ns64(\"lamports\")]), \"withdrawNonceAccount\");\nLAYOUT.addVariant(6, struct([publicKey$2(\"authorized\")]), \"initializeNonceAccount\");\nLAYOUT.addVariant(7, struct([publicKey$2(\"authorized\")]), \"authorizeNonceAccount\");\nLAYOUT.addVariant(8, struct([ns64(\"space\")]), \"allocate\");\nLAYOUT.addVariant(9, struct([\n publicKey$2(\"base\"),\n rustStringLayout(\"seed\"),\n ns64(\"space\"),\n publicKey$2(\"owner\"),\n]), \"allocateWithSeed\");\nLAYOUT.addVariant(10, struct([\n publicKey$2(\"base\"),\n rustStringLayout(\"seed\"),\n publicKey$2(\"owner\"),\n]), \"assignWithSeed\");\nLAYOUT.addVariant(11, struct([\n ns64(\"lamports\"),\n rustStringLayout(\"seed\"),\n publicKey$2(\"owner\"),\n]), \"transferWithSeed\");\nfunction encodeData(instruction, maxSpan) {\n const b = Buffer.alloc(maxSpan !== null && maxSpan !== void 0 ? maxSpan : instructionMaxSpan);\n const span = LAYOUT.encode(instruction, b);\n if (maxSpan === undefined) {\n return b.slice(0, span);\n }\n return b;\n}\nconst instructionMaxSpan = Math.max(...Object.values(LAYOUT.registry).map((r) => r.span));\n\nclass SystemStateCoder {\n // eslint-disable-next-line @typescript-eslint/no-empty-function\n constructor(_idl) { }\n encode(_name, _account) {\n throw new Error(\"System does not have state\");\n }\n decode(_ix) {\n throw new Error(\"System does not have state\");\n }\n}\n\nclass SystemAccountsCoder {\n constructor(idl) {\n this.idl = idl;\n }\n async encode(accountName, account) {\n switch (accountName) {\n case \"nonce\": {\n const buffer = Buffer.alloc(NONCE_ACCOUNT_LENGTH);\n const len = NONCE_ACCOUNT_LAYOUT.encode(account, buffer);\n return buffer.slice(0, len);\n }\n default: {\n throw new Error(`Invalid account name: ${accountName}`);\n }\n }\n }\n decode(accountName, ix) {\n return this.decodeUnchecked(accountName, ix);\n }\n decodeUnchecked(accountName, ix) {\n switch (accountName) {\n case \"nonce\": {\n return decodeNonceAccount(ix);\n }\n default: {\n throw new Error(`Invalid account name: ${accountName}`);\n }\n }\n }\n // TODO: this won't use the appendData.\n memcmp(accountName, _appendData) {\n switch (accountName) {\n case \"nonce\": {\n return {\n dataSize: NONCE_ACCOUNT_LENGTH,\n };\n }\n default: {\n throw new Error(`Invalid account name: ${accountName}`);\n }\n }\n }\n size(idlAccount) {\n var _a;\n return (_a = accountSize(this.idl, idlAccount)) !== null && _a !== void 0 ? _a : 0;\n }\n}\nfunction decodeNonceAccount(ix) {\n return NONCE_ACCOUNT_LAYOUT.decode(ix);\n}\nclass WrappedLayout$1 extends Layout_2 {\n constructor(layout, decoder, encoder, property) {\n super(layout.span, property);\n this.layout = layout;\n this.decoder = decoder;\n this.encoder = encoder;\n }\n decode(b, offset) {\n return this.decoder(this.layout.decode(b, offset));\n }\n encode(src, b, offset) {\n return this.layout.encode(this.encoder(src), b, offset);\n }\n getSpan(b, offset) {\n return this.layout.getSpan(b, offset);\n }\n}\nfunction publicKey$1(property) {\n return new WrappedLayout$1(blob(32), (b) => new PublicKey(b), (key) => key.toBuffer(), property);\n}\nconst NONCE_ACCOUNT_LAYOUT = struct([\n u32(\"version\"),\n u32(\"state\"),\n publicKey$1(\"authorizedPubkey\"),\n publicKey$1(\"nonce\"),\n struct([nu64(\"lamportsPerSignature\")], \"feeCalculator\"),\n]);\n\nclass SystemEventsCoder {\n constructor(_idl) { }\n decode(_log) {\n throw new Error(\"System program does not have events\");\n }\n}\n\nclass SystemTypesCoder {\n constructor(_idl) { }\n encode(_name, _type) {\n throw new Error(\"System does not have user-defined types\");\n }\n decode(_name, _typeData) {\n throw new Error(\"System does not have user-defined types\");\n }\n}\n\n/**\n * Coder for the System program.\n */\nclass SystemCoder {\n constructor(idl) {\n this.instruction = new SystemInstructionCoder(idl);\n this.accounts = new SystemAccountsCoder(idl);\n this.events = new SystemEventsCoder(idl);\n this.state = new SystemStateCoder(idl);\n this.types = new SystemTypesCoder(idl);\n }\n}\n\nfunction hash(data) {\n return sha256$1(data);\n}\n\nvar sha256 = /*#__PURE__*/Object.freeze({\n __proto__: null,\n hash: hash\n});\n\n// Sync version of web3.PublicKey.createWithSeed.\nfunction createWithSeedSync(fromPublicKey, seed, programId) {\n const buffer = Buffer$1.concat([\n fromPublicKey.toBuffer(),\n Buffer$1.from(seed),\n programId.toBuffer(),\n ]);\n const hash = sha256$1.digest(buffer);\n return new PublicKey(Buffer$1.from(hash));\n}\n// Sync version of web3.PublicKey.createProgramAddress.\nfunction createProgramAddressSync(seeds, programId) {\n const MAX_SEED_LENGTH = 32;\n let buffer = Buffer$1.alloc(0);\n seeds.forEach(function (seed) {\n if (seed.length > MAX_SEED_LENGTH) {\n throw new TypeError(`Max seed length exceeded`);\n }\n buffer = Buffer$1.concat([buffer, toBuffer(seed)]);\n });\n buffer = Buffer$1.concat([\n buffer,\n programId.toBuffer(),\n Buffer$1.from(\"ProgramDerivedAddress\"),\n ]);\n let hash = sha256$1(new Uint8Array(buffer));\n let publicKeyBytes = new BN(hash, 16).toArray(undefined, 32);\n if (PublicKey.isOnCurve(new Uint8Array(publicKeyBytes))) {\n throw new Error(`Invalid seeds, address must fall off the curve`);\n }\n return new PublicKey(publicKeyBytes);\n}\n// Sync version of web3.PublicKey.findProgramAddress.\nfunction findProgramAddressSync(seeds, programId) {\n let nonce = 255;\n let address;\n while (nonce != 0) {\n try {\n const seedsWithNonce = seeds.concat(Buffer$1.from([nonce]));\n address = createProgramAddressSync(seedsWithNonce, programId);\n }\n catch (err) {\n if (err instanceof TypeError) {\n throw err;\n }\n nonce--;\n continue;\n }\n return [address, nonce];\n }\n throw new Error(`Unable to find a viable program address nonce`);\n}\nconst toBuffer = (arr) => {\n if (arr instanceof Buffer$1) {\n return arr;\n }\n else if (arr instanceof Uint8Array) {\n return Buffer$1.from(arr.buffer, arr.byteOffset, arr.byteLength);\n }\n else {\n return Buffer$1.from(arr);\n }\n};\nasync function associated(programId, ...args) {\n let seeds = [Buffer$1.from([97, 110, 99, 104, 111, 114])]; // b\"anchor\".\n args.forEach((arg) => {\n seeds.push(arg instanceof Buffer$1 ? arg : translateAddress(arg).toBuffer());\n });\n const [assoc] = await PublicKey.findProgramAddress(seeds, translateAddress(programId));\n return assoc;\n}\n\nvar pubkey = /*#__PURE__*/Object.freeze({\n __proto__: null,\n createWithSeedSync: createWithSeedSync,\n createProgramAddressSync: createProgramAddressSync,\n findProgramAddressSync: findProgramAddressSync,\n associated: associated\n});\n\nconst TOKEN_PROGRAM_ID = new PublicKey(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\");\nconst ASSOCIATED_PROGRAM_ID = new PublicKey(\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\");\nasync function associatedAddress({ mint, owner, }) {\n return (await PublicKey.findProgramAddress([owner.toBuffer(), TOKEN_PROGRAM_ID.toBuffer(), mint.toBuffer()], ASSOCIATED_PROGRAM_ID))[0];\n}\n\nvar token = /*#__PURE__*/Object.freeze({\n __proto__: null,\n TOKEN_PROGRAM_ID: TOKEN_PROGRAM_ID,\n ASSOCIATED_PROGRAM_ID: ASSOCIATED_PROGRAM_ID,\n associatedAddress: associatedAddress\n});\n\nvar browserPonyfill = {exports: {}};\n\n(function (module, exports) {\nvar global = typeof self !== 'undefined' ? self : commonjsGlobal;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException;\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\n((function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n}))({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch; // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch; // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch; // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers;\nexports.Request = ctx.Request;\nexports.Response = ctx.Response;\nmodule.exports = exports;\n}(browserPonyfill, browserPonyfill.exports));\n\nvar fetch = /*@__PURE__*/getDefaultExportFromCjs(browserPonyfill.exports);\n\n/**\n * Returns a verified build from the anchor registry. null if no such\n * verified build exists, e.g., if the program has been upgraded since the\n * last verified build.\n */\nasync function verifiedBuild(connection, programId, limit = 5) {\n const url = `https://api.apr.dev/api/v0/program/${programId.toString()}/latest?limit=${limit}`;\n const [programData, latestBuildsResp] = await Promise.all([\n fetchData(connection, programId),\n fetch(url),\n ]);\n // Filter out all non successful builds.\n const latestBuilds = (await latestBuildsResp.json()).filter((b) => !b.aborted && b.state === \"Built\" && b.verified === \"Verified\");\n if (latestBuilds.length === 0) {\n return null;\n }\n // Get the latest build.\n const build = latestBuilds[0];\n // Has the program been upgraded since the last build?\n if (programData.slot.toNumber() !== build.verified_slot) {\n return null;\n }\n // Success.\n return build;\n}\n/**\n * Returns the program data account for this program, containing the\n * metadata for this program, e.g., the upgrade authority.\n */\nasync function fetchData(connection, programId) {\n const accountInfo = await connection.getAccountInfo(programId);\n if (accountInfo === null) {\n throw new Error(\"program account not found\");\n }\n const { program } = decodeUpgradeableLoaderState(accountInfo.data);\n const programdataAccountInfo = await connection.getAccountInfo(program.programdataAddress);\n if (programdataAccountInfo === null) {\n throw new Error(\"program data account not found\");\n }\n const { programData } = decodeUpgradeableLoaderState(programdataAccountInfo.data);\n return programData;\n}\nconst UPGRADEABLE_LOADER_STATE_LAYOUT = borsh.rustEnum([\n borsh.struct([], \"uninitialized\"),\n borsh.struct([borsh.option(borsh.publicKey(), \"authorityAddress\")], \"buffer\"),\n borsh.struct([borsh.publicKey(\"programdataAddress\")], \"program\"),\n borsh.struct([\n borsh.u64(\"slot\"),\n borsh.option(borsh.publicKey(), \"upgradeAuthorityAddress\"),\n ], \"programData\"),\n], undefined, borsh.u32());\nfunction decodeUpgradeableLoaderState(data) {\n return UPGRADEABLE_LOADER_STATE_LAYOUT.decode(data);\n}\n\nvar registry = /*#__PURE__*/Object.freeze({\n __proto__: null,\n verifiedBuild: verifiedBuild,\n fetchData: fetchData,\n decodeUpgradeableLoaderState: decodeUpgradeableLoaderState\n});\n\nvar index = /*#__PURE__*/Object.freeze({\n __proto__: null,\n sha256: sha256,\n rpc: rpc,\n publicKey: pubkey,\n bytes: index$1,\n token: token,\n features: features,\n registry: registry\n});\n\nfunction isIdlAccounts(accountItem) {\n return \"accounts\" in accountItem;\n}\n// Deterministic IDL address as a function of the program id.\nasync function idlAddress(programId) {\n const base = (await PublicKey.findProgramAddress([], programId))[0];\n return await PublicKey.createWithSeed(base, seed(), programId);\n}\n// Seed for generating the idlAddress.\nfunction seed() {\n return \"anchor:idl\";\n}\nconst IDL_ACCOUNT_LAYOUT = borsh.struct([\n borsh.publicKey(\"authority\"),\n borsh.vecU8(\"data\"),\n]);\nfunction decodeIdlAccount(data) {\n return IDL_ACCOUNT_LAYOUT.decode(data);\n}\n\nfunction splitArgsAndCtx(idlIx, args) {\n var _a, _b;\n let options = {};\n const inputLen = idlIx.args ? idlIx.args.length : 0;\n if (args.length > inputLen) {\n if (args.length !== inputLen + 1) {\n throw new Error(`provided too many arguments ${args} to instruction ${idlIx === null || idlIx === void 0 ? void 0 : idlIx.name} expecting: ${(_b = (_a = idlIx.args) === null || _a === void 0 ? void 0 : _a.map((a) => a.name)) !== null && _b !== void 0 ? _b : []}`);\n }\n options = args.pop();\n }\n return [args, options];\n}\n\nclass InstructionNamespaceFactory {\n static build(idlIx, encodeFn, programId) {\n if (idlIx.name === \"_inner\") {\n throw new IdlError(\"the _inner name is reserved\");\n }\n const ix = (...args) => {\n const [ixArgs, ctx] = splitArgsAndCtx(idlIx, [...args]);\n validateAccounts(idlIx.accounts, ctx.accounts);\n validateInstruction(idlIx, ...args);\n const keys = ix.accounts(ctx.accounts);\n if (ctx.remainingAccounts !== undefined) {\n keys.push(...ctx.remainingAccounts);\n }\n if (isSet(\"debug-logs\")) {\n console.log(\"Outgoing account metas:\", keys);\n }\n return new TransactionInstruction({\n keys,\n programId,\n data: encodeFn(idlIx.name, toInstruction(idlIx, ...ixArgs)),\n });\n };\n // Utility fn for ordering the accounts for this instruction.\n ix[\"accounts\"] = (accs) => {\n return InstructionNamespaceFactory.accountsArray(accs, idlIx.accounts, programId, idlIx.name);\n };\n return ix;\n }\n static accountsArray(ctx, accounts, programId, ixName) {\n if (!ctx) {\n return [];\n }\n return accounts\n .map((acc) => {\n // Nested accounts.\n const nestedAccounts = \"accounts\" in acc ? acc.accounts : undefined;\n if (nestedAccounts !== undefined) {\n const rpcAccs = ctx[acc.name];\n return InstructionNamespaceFactory.accountsArray(rpcAccs, acc.accounts, programId, ixName).flat();\n }\n else {\n const account = acc;\n let pubkey;\n try {\n pubkey = translateAddress(ctx[acc.name]);\n }\n catch (err) {\n throw new Error(`Wrong input type for account \"${acc.name}\" in the instruction accounts object${ixName !== undefined ? ' for instruction \"' + ixName + '\"' : \"\"}. Expected PublicKey or string.`);\n }\n const optional = account.isOptional && pubkey.equals(programId);\n const isWritable = account.isMut && !optional;\n const isSigner = account.isSigner && !optional;\n return {\n pubkey,\n isWritable,\n isSigner,\n };\n }\n })\n .flat();\n }\n}\n// Throws error if any argument required for the `ix` is not given.\nfunction validateInstruction(ix, ...args) {\n // todo\n}\n\nclass RpcFactory {\n static build(idlIx, txFn, idlErrors, provider) {\n const rpc = async (...args) => {\n var _a;\n const tx = txFn(...args);\n const [, ctx] = splitArgsAndCtx(idlIx, [...args]);\n if (provider.sendAndConfirm === undefined) {\n throw new Error(\"This function requires 'Provider.sendAndConfirm' to be implemented.\");\n }\n try {\n return await provider.sendAndConfirm(tx, (_a = ctx.signers) !== null && _a !== void 0 ? _a : [], ctx.options);\n }\n catch (err) {\n throw translateError(err, idlErrors);\n }\n };\n return rpc;\n }\n}\n\nclass TransactionFactory {\n static build(idlIx, ixFn) {\n const txFn = (...args) => {\n var _a, _b, _c;\n const [, ctx] = splitArgsAndCtx(idlIx, [...args]);\n const tx = new Transaction();\n if (ctx.preInstructions && ctx.instructions) {\n throw new Error(\"instructions is deprecated, use preInstructions\");\n }\n (_a = ctx.preInstructions) === null || _a === void 0 ? void 0 : _a.forEach((ix) => tx.add(ix));\n (_b = ctx.instructions) === null || _b === void 0 ? void 0 : _b.forEach((ix) => tx.add(ix));\n tx.add(ixFn(...args));\n (_c = ctx.postInstructions) === null || _c === void 0 ? void 0 : _c.forEach((ix) => tx.add(ix));\n return tx;\n };\n return txFn;\n }\n}\n\nclass StateFactory {\n static build(idl, coder, programId, provider) {\n if (idl.state === undefined) {\n return undefined;\n }\n return new StateClient(idl, programId, provider, coder);\n }\n}\n/**\n * A client for the program state. Similar to the base [[Program]] client,\n * one can use this to send transactions and read accounts for the state\n * abstraction.\n */\nclass StateClient {\n /**\n * Returns the program ID owning the state.\n */\n get programId() {\n return this._programId;\n }\n constructor(idl, programId, \n /**\n * Returns the client's wallet and network provider.\n */\n provider = getProvider(), \n /**\n * Returns the coder.\n */\n coder = new BorshCoder(idl)) {\n this.provider = provider;\n this.coder = coder;\n this._idl = idl;\n this._programId = programId;\n this._address = programStateAddress(programId);\n this._sub = null;\n // Build namespaces.\n const [instruction, transaction, rpc] = (() => {\n var _a;\n let instruction = {};\n let transaction = {};\n let rpc = {};\n (_a = idl.state) === null || _a === void 0 ? void 0 : _a.methods.forEach((m) => {\n // Build instruction method.\n const ixItem = InstructionNamespaceFactory.build(m, (ixName, ix) => coder.instruction.encodeState(ixName, ix), programId);\n ixItem[\"accounts\"] = (accounts) => {\n const keys = stateInstructionKeys(programId, provider, m, accounts);\n return keys.concat(InstructionNamespaceFactory.accountsArray(accounts, m.accounts, programId, m.name));\n };\n // Build transaction method.\n const txItem = TransactionFactory.build(m, ixItem);\n // Build RPC method.\n const rpcItem = RpcFactory.build(m, txItem, parseIdlErrors(idl), provider);\n // Attach them all to their respective namespaces.\n const name = camelCase(m.name);\n instruction[name] = ixItem;\n transaction[name] = txItem;\n rpc[name] = rpcItem;\n });\n return [\n instruction,\n transaction,\n rpc,\n ];\n })();\n this.instruction = instruction;\n this.transaction = transaction;\n this.rpc = rpc;\n }\n /**\n * Returns the deserialized state account.\n */\n async fetch() {\n const addr = this.address();\n const accountInfo = await this.provider.connection.getAccountInfo(addr);\n if (accountInfo === null) {\n throw new Error(`Account does not exist ${addr.toString()}`);\n }\n // Assert the account discriminator is correct.\n const state = this._idl.state;\n if (!state) {\n throw new Error(\"State is not specified in IDL.\");\n }\n const expectedDiscriminator = await stateDiscriminator(state.struct.name);\n if (expectedDiscriminator.compare(accountInfo.data.slice(0, 8))) {\n throw new Error(\"Invalid account discriminator\");\n }\n return this.coder.state.decode(accountInfo.data);\n }\n /**\n * Returns the state address.\n */\n address() {\n return this._address;\n }\n /**\n * Returns an `EventEmitter` with a `\"change\"` event that's fired whenever\n * the state account cahnges.\n */\n subscribe(commitment) {\n if (this._sub !== null) {\n return this._sub.ee;\n }\n const ee = new EventEmitter();\n const listener = this.provider.connection.onAccountChange(this.address(), (acc) => {\n const account = this.coder.state.decode(acc.data);\n ee.emit(\"change\", account);\n }, commitment);\n this._sub = {\n ee,\n listener,\n };\n return ee;\n }\n /**\n * Unsubscribes to state changes.\n */\n unsubscribe() {\n if (this._sub !== null) {\n this.provider.connection\n .removeAccountChangeListener(this._sub.listener)\n .then(async () => {\n this._sub = null;\n })\n .catch(console.error);\n }\n }\n}\n// Calculates the deterministic address of the program's \"state\" account.\nfunction programStateAddress(programId) {\n let [registrySigner] = findProgramAddressSync([], programId);\n return createWithSeedSync(registrySigner, \"unversioned\", programId);\n}\n// Returns the common keys that are prepended to all instructions targeting\n// the \"state\" of a program.\nfunction stateInstructionKeys(programId, provider, m, accounts) {\n if (m.name === \"new\") {\n // Ctor `new` method.\n const [programSigner] = findProgramAddressSync([], programId);\n // @ts-expect-error\n if (provider.wallet === undefined) {\n throw new Error(\"This function requires the Provider interface implementor to have a 'wallet' field.\");\n }\n return [\n {\n // @ts-expect-error\n pubkey: provider.wallet.publicKey,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: programStateAddress(programId),\n isWritable: true,\n isSigner: false,\n },\n { pubkey: programSigner, isWritable: false, isSigner: false },\n {\n pubkey: SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n { pubkey: programId, isWritable: false, isSigner: false },\n ];\n }\n else {\n validateAccounts(m.accounts, accounts);\n return [\n {\n pubkey: programStateAddress(programId),\n isWritable: true,\n isSigner: false,\n },\n ];\n }\n}\n\nclass AccountFactory {\n static build(idl, coder, programId, provider) {\n var _a;\n const accountFns = {};\n (_a = idl.accounts) === null || _a === void 0 ? void 0 : _a.forEach((idlAccount) => {\n const name = camelCase(idlAccount.name);\n accountFns[name] = new AccountClient(idl, idlAccount, programId, provider, coder);\n });\n return accountFns;\n }\n}\nclass AccountClient {\n /**\n * Returns the number of bytes in this account.\n */\n get size() {\n return this._size;\n }\n /**\n * Returns the program ID owning all accounts.\n */\n get programId() {\n return this._programId;\n }\n /**\n * Returns the client's wallet and network provider.\n */\n get provider() {\n return this._provider;\n }\n /**\n * Returns the coder.\n */\n get coder() {\n return this._coder;\n }\n constructor(idl, idlAccount, programId, provider, coder) {\n this._idlAccount = idlAccount;\n this._programId = programId;\n this._provider = provider !== null && provider !== void 0 ? provider : getProvider();\n this._coder = coder !== null && coder !== void 0 ? coder : new BorshCoder(idl);\n this._size = this._coder.accounts.size(idlAccount);\n }\n /**\n * Returns a deserialized account, returning null if it doesn't exist.\n *\n * @param address The address of the account to fetch.\n */\n async fetchNullable(address, commitment) {\n const { data } = await this.fetchNullableAndContext(address, commitment);\n return data;\n }\n /**\n * Returns a deserialized account along with the associated rpc response context, returning null if it doesn't exist.\n *\n * @param address The address of the account to fetch.\n */\n async fetchNullableAndContext(address, commitment) {\n const accountInfo = await this.getAccountInfoAndContext(address, commitment);\n const { value, context } = accountInfo;\n return {\n data: value && value.data.length !== 0\n ? this._coder.accounts.decode(this._idlAccount.name, value.data)\n : null,\n context,\n };\n }\n /**\n * Returns a deserialized account.\n *\n * @param address The address of the account to fetch.\n */\n async fetch(address, commitment) {\n const { data } = await this.fetchNullableAndContext(address, commitment);\n if (data === null) {\n throw new Error(`Account does not exist or has no data ${address.toString()}`);\n }\n return data;\n }\n /**\n * Returns a deserialized account along with the associated rpc response context.\n *\n * @param address The address of the account to fetch.\n */\n async fetchAndContext(address, commitment) {\n const { data, context } = await this.fetchNullableAndContext(address, commitment);\n if (data === null) {\n throw new Error(`Account does not exist ${address.toString()}`);\n }\n return { data, context };\n }\n /**\n * Returns multiple deserialized accounts.\n * Accounts not found or with wrong discriminator are returned as null.\n *\n * @param addresses The addresses of the accounts to fetch.\n */\n async fetchMultiple(addresses, commitment) {\n const accounts = await this.fetchMultipleAndContext(addresses, commitment);\n return accounts.map((account) => (account ? account.data : null));\n }\n /**\n * Returns multiple deserialized accounts.\n * Accounts not found or with wrong discriminator are returned as null.\n *\n * @param addresses The addresses of the accounts to fetch.\n */\n async fetchMultipleAndContext(addresses, commitment) {\n const accounts = await getMultipleAccountsAndContext(this._provider.connection, addresses.map((address) => translateAddress(address)), commitment);\n // Decode accounts where discriminator is correct, null otherwise\n return accounts.map((result) => {\n if (result == null) {\n return null;\n }\n const { account, context } = result;\n return {\n data: this._coder.accounts.decode(this._idlAccount.name, account.data),\n context,\n };\n });\n }\n /**\n * Returns all instances of this account type for the program.\n *\n * @param filters User-provided filters to narrow the results from `connection.getProgramAccounts`.\n *\n * When filters are not defined this method returns all\n * the account instances.\n *\n * When filters are of type `Buffer`, the filters are appended\n * after the discriminator.\n *\n * When filters are of type `GetProgramAccountsFilter[]`,\n * filters are appended after the discriminator filter.\n */\n async all(filters) {\n const filter = this.coder.accounts.memcmp(this._idlAccount.name, filters instanceof Buffer ? filters : undefined);\n const coderFilters = [];\n if ((filter === null || filter === void 0 ? void 0 : filter.offset) != undefined && (filter === null || filter === void 0 ? void 0 : filter.bytes) != undefined) {\n coderFilters.push({\n memcmp: { offset: filter.offset, bytes: filter.bytes },\n });\n }\n if ((filter === null || filter === void 0 ? void 0 : filter.dataSize) != undefined) {\n coderFilters.push({ dataSize: filter.dataSize });\n }\n let resp = await this._provider.connection.getProgramAccounts(this._programId, {\n commitment: this._provider.connection.commitment,\n filters: [...coderFilters, ...(Array.isArray(filters) ? filters : [])],\n });\n return resp.map(({ pubkey, account }) => {\n return {\n publicKey: pubkey,\n account: this._coder.accounts.decode(this._idlAccount.name, account.data),\n };\n });\n }\n /**\n * Returns an `EventEmitter` emitting a \"change\" event whenever the account\n * changes.\n */\n subscribe(address, commitment) {\n const sub = subscriptions.get(address.toString());\n if (sub) {\n return sub.ee;\n }\n const ee = new EventEmitter();\n address = translateAddress(address);\n const listener = this._provider.connection.onAccountChange(address, (acc) => {\n const account = this._coder.accounts.decode(this._idlAccount.name, acc.data);\n ee.emit(\"change\", account);\n }, commitment);\n subscriptions.set(address.toString(), {\n ee,\n listener,\n });\n return ee;\n }\n /**\n * Unsubscribes from the account at the given address.\n */\n async unsubscribe(address) {\n let sub = subscriptions.get(address.toString());\n if (!sub) {\n console.warn(\"Address is not subscribed\");\n return;\n }\n if (subscriptions) {\n await this._provider.connection\n .removeAccountChangeListener(sub.listener)\n .then(() => {\n subscriptions.delete(address.toString());\n })\n .catch(console.error);\n }\n }\n /**\n * Returns an instruction for creating this account.\n */\n async createInstruction(signer, sizeOverride) {\n const size = this.size;\n if (this._provider.publicKey === undefined) {\n throw new Error(\"This function requires the Provider interface implementor to have a 'publicKey' field.\");\n }\n return SystemProgram.createAccount({\n fromPubkey: this._provider.publicKey,\n newAccountPubkey: signer.publicKey,\n space: sizeOverride !== null && sizeOverride !== void 0 ? sizeOverride : size,\n lamports: await this._provider.connection.getMinimumBalanceForRentExemption(sizeOverride !== null && sizeOverride !== void 0 ? sizeOverride : size),\n programId: this._programId,\n });\n }\n /**\n * @deprecated since version 14.0.\n *\n * Function returning the associated account. Args are keys to associate.\n * Order matters.\n */\n async associated(...args) {\n const addr = await this.associatedAddress(...args);\n return await this.fetch(addr);\n }\n /**\n * @deprecated since version 14.0.\n *\n * Function returning the associated address. Args are keys to associate.\n * Order matters.\n */\n async associatedAddress(...args) {\n return await associated(this._programId, ...args);\n }\n async getAccountInfo(address, commitment) {\n return await this._provider.connection.getAccountInfo(translateAddress(address), commitment);\n }\n async getAccountInfoAndContext(address, commitment) {\n return await this._provider.connection.getAccountInfoAndContext(translateAddress(address), commitment);\n }\n}\n// Tracks all subscriptions.\nconst subscriptions = new Map();\n\nconst PROGRAM_LOG = \"Program log: \";\nconst PROGRAM_DATA = \"Program data: \";\nconst PROGRAM_LOG_START_INDEX = PROGRAM_LOG.length;\nconst PROGRAM_DATA_START_INDEX = PROGRAM_DATA.length;\nclass EventManager {\n constructor(programId, provider, coder) {\n this._programId = programId;\n this._provider = provider;\n this._eventParser = new EventParser(programId, coder);\n this._eventCallbacks = new Map();\n this._eventListeners = new Map();\n this._listenerIdCount = 0;\n }\n addEventListener(eventName, callback) {\n var _a;\n let listener = this._listenerIdCount;\n this._listenerIdCount += 1;\n // Store the listener into the event map.\n if (!this._eventListeners.has(eventName)) {\n this._eventListeners.set(eventName, []);\n }\n this._eventListeners.set(eventName, ((_a = this._eventListeners.get(eventName)) !== null && _a !== void 0 ? _a : []).concat(listener));\n // Store the callback into the listener map.\n this._eventCallbacks.set(listener, [eventName, callback]);\n // Create the subscription singleton, if needed.\n if (this._onLogsSubscriptionId !== undefined) {\n return listener;\n }\n this._onLogsSubscriptionId = this._provider.connection.onLogs(this._programId, (logs, ctx) => {\n if (logs.err) {\n return;\n }\n for (const event of this._eventParser.parseLogs(logs.logs)) {\n const allListeners = this._eventListeners.get(event.name);\n if (allListeners) {\n allListeners.forEach((listener) => {\n const listenerCb = this._eventCallbacks.get(listener);\n if (listenerCb) {\n const [, callback] = listenerCb;\n callback(event.data, ctx.slot, logs.signature);\n }\n });\n }\n }\n });\n return listener;\n }\n async removeEventListener(listener) {\n // Get the callback.\n const callback = this._eventCallbacks.get(listener);\n if (!callback) {\n throw new Error(`Event listener ${listener} doesn't exist!`);\n }\n const [eventName] = callback;\n // Get the listeners.\n let listeners = this._eventListeners.get(eventName);\n if (!listeners) {\n throw new Error(`Event listeners don't exist for ${eventName}!`);\n }\n // Update both maps.\n this._eventCallbacks.delete(listener);\n listeners = listeners.filter((l) => l !== listener);\n this._eventListeners.set(eventName, listeners);\n if (listeners.length === 0) {\n this._eventListeners.delete(eventName);\n }\n // Kill the websocket connection if all listeners have been removed.\n if (this._eventCallbacks.size == 0) {\n assert$1.ok(this._eventListeners.size === 0);\n if (this._onLogsSubscriptionId !== undefined) {\n await this._provider.connection.removeOnLogsListener(this._onLogsSubscriptionId);\n this._onLogsSubscriptionId = undefined;\n }\n }\n }\n}\nclass EventParser {\n constructor(programId, coder) {\n this.coder = coder;\n this.programId = programId;\n }\n // Each log given, represents an array of messages emitted by\n // a single transaction, which can execute many different programs across\n // CPI boundaries. However, the subscription is only interested in the\n // events emitted by *this* program. In achieving this, we keep track of the\n // program execution context by parsing each log and looking for a CPI\n // `invoke` call. If one exists, we know a new program is executing. So we\n // push the programId onto a stack and switch the program context. This\n // allows us to track, for a given log, which program was executing during\n // its emission, thereby allowing us to know if a given log event was\n // emitted by *this* program. If it was, then we parse the raw string and\n // emit the event if the string matches the event being subscribed to.\n *parseLogs(logs, errorOnDecodeFailure = false) {\n const logScanner = new LogScanner(logs);\n const execution = new ExecutionContext();\n let log = logScanner.next();\n while (log !== null) {\n let [event, newProgram, didPop] = this.handleLog(execution, log, errorOnDecodeFailure);\n if (event) {\n yield event;\n }\n if (newProgram) {\n execution.push(newProgram);\n }\n if (didPop) {\n execution.pop();\n }\n log = logScanner.next();\n }\n }\n // Main log handler. Returns a three element array of the event, the\n // next program that was invoked for CPI, and a boolean indicating if\n // a program has completed execution (and thus should be popped off the\n // execution stack).\n handleLog(execution, log, errorOnDecodeFailure) {\n // Executing program is this program.\n if (execution.stack.length > 0 &&\n execution.program() === this.programId.toString()) {\n return this.handleProgramLog(log, errorOnDecodeFailure);\n }\n // Executing program is not this program.\n else {\n return [null, ...this.handleSystemLog(log)];\n }\n }\n // Handles logs from *this* program.\n handleProgramLog(log, errorOnDecodeFailure) {\n // This is a `msg!` log or a `sol_log_data` log.\n if (log.startsWith(PROGRAM_LOG) || log.startsWith(PROGRAM_DATA)) {\n const logStr = log.startsWith(PROGRAM_LOG)\n ? log.slice(PROGRAM_LOG_START_INDEX)\n : log.slice(PROGRAM_DATA_START_INDEX);\n const event = this.coder.events.decode(logStr);\n if (errorOnDecodeFailure && event === null) {\n throw new Error(`Unable to decode event ${logStr}`);\n }\n return [event, null, false];\n }\n // System log.\n else {\n return [null, ...this.handleSystemLog(log)];\n }\n }\n // Handles logs when the current program being executing is *not* this.\n handleSystemLog(log) {\n // System component.\n const logStart = log.split(\":\")[0];\n // Did the program finish executing?\n if (logStart.match(/^Program (.*) success/g) !== null) {\n return [null, true];\n // Recursive call.\n }\n else if (logStart.startsWith(`Program ${this.programId.toString()} invoke`)) {\n return [this.programId.toString(), false];\n }\n // CPI call.\n else if (logStart.includes(\"invoke\")) {\n return [\"cpi\", false]; // Any string will do.\n }\n else {\n return [null, false];\n }\n }\n}\n// Stack frame execution context, allowing one to track what program is\n// executing for a given log.\nclass ExecutionContext {\n constructor() {\n this.stack = [];\n }\n program() {\n assert$1.ok(this.stack.length > 0);\n return this.stack[this.stack.length - 1];\n }\n push(newProgram) {\n this.stack.push(newProgram);\n }\n pop() {\n assert$1.ok(this.stack.length > 0);\n this.stack.pop();\n }\n}\nclass LogScanner {\n constructor(logs) {\n this.logs = logs;\n }\n next() {\n if (this.logs.length === 0) {\n return null;\n }\n let l = this.logs[0];\n this.logs = this.logs.slice(1);\n return l;\n }\n}\n\nclass SimulateFactory {\n static build(idlIx, txFn, idlErrors, provider, coder, programId, idl) {\n const simulate = async (...args) => {\n var _a;\n const tx = txFn(...args);\n const [, ctx] = splitArgsAndCtx(idlIx, [...args]);\n let resp = undefined;\n if (provider.simulate === undefined) {\n throw new Error(\"This function requires 'Provider.simulate' to be implemented.\");\n }\n try {\n resp = await provider.simulate(tx, ctx.signers, (_a = ctx.options) === null || _a === void 0 ? void 0 : _a.commitment);\n }\n catch (err) {\n throw translateError(err, idlErrors);\n }\n if (resp === undefined) {\n throw new Error(\"Unable to simulate transaction\");\n }\n const logs = resp.logs;\n if (!logs) {\n throw new Error(\"Simulated logs not found\");\n }\n const events = [];\n if (idl.events) {\n let parser = new EventParser(programId, coder);\n for (const event of parser.parseLogs(logs)) {\n events.push(event);\n }\n }\n return { events, raw: logs };\n };\n return simulate;\n }\n}\n\nfunction uint64(property) {\n return new WrappedLayout(blob(8), (b) => u64.fromBuffer(b), (n) => n.toBuffer(), property);\n}\nfunction publicKey(property) {\n return new WrappedLayout(blob(32), (b) => new PublicKey(b), (key) => key.toBuffer(), property);\n}\nfunction coption(layout, property) {\n return new COptionLayout(layout, property);\n}\nclass WrappedLayout extends Layout_2 {\n constructor(layout, decoder, encoder, property) {\n super(layout.span, property);\n this.layout = layout;\n this.decoder = decoder;\n this.encoder = encoder;\n }\n decode(b, offset) {\n return this.decoder(this.layout.decode(b, offset));\n }\n encode(src, b, offset) {\n return this.layout.encode(this.encoder(src), b, offset);\n }\n getSpan(b, offset) {\n return this.layout.getSpan(b, offset);\n }\n}\nclass COptionLayout extends Layout_2 {\n constructor(layout, property) {\n super(-1, property);\n this.layout = layout;\n this.discriminator = u32();\n }\n encode(src, b, offset = 0) {\n if (src === null || src === undefined) {\n return this.layout.span + this.discriminator.encode(0, b, offset);\n }\n this.discriminator.encode(1, b, offset);\n return this.layout.encode(src, b, offset + 4) + 4;\n }\n decode(b, offset = 0) {\n const discriminator = this.discriminator.decode(b, offset);\n if (discriminator === 0) {\n return null;\n }\n else if (discriminator === 1) {\n return this.layout.decode(b, offset + 4);\n }\n throw new Error(\"Invalid coption \" + this.layout.property);\n }\n getSpan(b, offset = 0) {\n return this.layout.getSpan(b, offset + 4) + 4;\n }\n}\nclass u64 extends BN {\n /**\n * Convert to Buffer representation\n */\n toBuffer() {\n const a = super.toArray().reverse();\n const b = Buffer.from(a);\n if (b.length === 8) {\n return b;\n }\n if (b.length >= 8) {\n throw new Error(\"u64 too large\");\n }\n const zeroPad = Buffer.alloc(8);\n b.copy(zeroPad);\n return zeroPad;\n }\n /**\n * Construct a u64 from Buffer representation\n */\n static fromBuffer(buffer) {\n if (buffer.length !== 8) {\n throw new Error(`Invalid buffer length: ${buffer.length}`);\n }\n return new u64([...buffer]\n .reverse()\n .map((i) => `00${i.toString(16)}`.slice(-2))\n .join(\"\"), 16);\n }\n}\nconst TOKEN_ACCOUNT_LAYOUT = struct([\n publicKey(\"mint\"),\n publicKey(\"owner\"),\n uint64(\"amount\"),\n coption(publicKey(), \"delegate\"),\n ((p) => {\n const U = union(u8(\"discriminator\"), null, p);\n U.addVariant(0, struct([]), \"uninitialized\");\n U.addVariant(1, struct([]), \"initialized\");\n U.addVariant(2, struct([]), \"frozen\");\n return U;\n })(\"state\"),\n coption(uint64(), \"isNative\"),\n uint64(\"delegatedAmount\"),\n coption(publicKey(), \"closeAuthority\"),\n]);\nfunction decodeTokenAccount(b) {\n return TOKEN_ACCOUNT_LAYOUT.decode(b);\n}\n\n// Populates a given accounts context with PDAs and common missing accounts.\nclass AccountsResolver {\n constructor(_args, _accounts, _provider, _programId, _idlIx, _accountNamespace, _idlTypes, _customResolver) {\n this._accounts = _accounts;\n this._provider = _provider;\n this._programId = _programId;\n this._idlIx = _idlIx;\n this._idlTypes = _idlTypes;\n this._customResolver = _customResolver;\n this._args = _args;\n this._accountStore = new AccountStore(_provider, _accountNamespace, this._programId);\n }\n args(_args) {\n this._args = _args;\n }\n // Note: We serially resolve PDAs one by one rather than doing them\n // in parallel because there can be dependencies between\n // addresses. That is, one PDA can be used as a seed in another.\n async resolve() {\n await this.resolveConst(this._idlIx.accounts);\n // Auto populate pdas and relations until we stop finding new accounts\n while ((await this.resolvePdas(this._idlIx.accounts)) +\n (await this.resolveRelations(this._idlIx.accounts)) +\n (await this.resolveCustom()) >\n 0) { }\n }\n async resolveCustom() {\n if (this._customResolver) {\n const { accounts, resolved } = await this._customResolver({\n args: this._args,\n accounts: this._accounts,\n provider: this._provider,\n programId: this._programId,\n idlIx: this._idlIx,\n });\n this._accounts = accounts;\n return resolved;\n }\n return 0;\n }\n resolveOptionalsHelper(partialAccounts, accountItems) {\n const nestedAccountsGeneric = {};\n // Looping through accountItem array instead of on partialAccounts, so\n // we only traverse array once\n for (const accountItem of accountItems) {\n const accountName = accountItem.name;\n const partialAccount = partialAccounts[accountName];\n // Skip if the account isn't included (thus would be undefined)\n if (partialAccount === undefined)\n continue;\n if (isPartialAccounts(partialAccount)) {\n // is compound accounts, recurse one level deeper\n if (isIdlAccounts(accountItem)) {\n nestedAccountsGeneric[accountName] = this.resolveOptionalsHelper(partialAccount, accountItem[\"accounts\"]);\n }\n else {\n // Here we try our best to recover gracefully. If there are optionals we can't check, we will fail then.\n nestedAccountsGeneric[accountName] = flattenPartialAccounts(partialAccount, true);\n }\n }\n else {\n // if not compound accounts, do null/optional check and proceed\n if (partialAccount !== null) {\n nestedAccountsGeneric[accountName] = translateAddress(partialAccount);\n }\n else if (accountItem[\"isOptional\"]) {\n nestedAccountsGeneric[accountName] = this._programId;\n }\n }\n }\n return nestedAccountsGeneric;\n }\n resolveOptionals(accounts) {\n Object.assign(this._accounts, this.resolveOptionalsHelper(accounts, this._idlIx.accounts));\n }\n get(path) {\n // Only return if pubkey\n const ret = path.reduce((acc, subPath) => acc && acc[subPath], this._accounts);\n if (ret && ret.toBase58) {\n return ret;\n }\n }\n set(path, value) {\n let curr = this._accounts;\n path.forEach((p, idx) => {\n const isLast = idx == path.length - 1;\n if (isLast) {\n curr[p] = value;\n }\n curr[p] = curr[p] || {};\n curr = curr[p];\n });\n }\n async resolveConst(accounts, path = []) {\n for (let k = 0; k < accounts.length; k += 1) {\n const accountDescOrAccounts = accounts[k];\n const subAccounts = accountDescOrAccounts.accounts;\n if (subAccounts) {\n await this.resolveConst(subAccounts, [\n ...path,\n camelCase(accountDescOrAccounts.name),\n ]);\n }\n const accountDesc = accountDescOrAccounts;\n const accountDescName = camelCase(accountDescOrAccounts.name);\n // Signers default to the provider.\n if (accountDesc.isSigner && !this.get([...path, accountDescName])) {\n // @ts-expect-error\n if (this._provider.wallet === undefined) {\n throw new Error(\"This function requires the Provider interface implementor to have a 'wallet' field.\");\n }\n // @ts-expect-error\n this.set([...path, accountDescName], this._provider.wallet.publicKey);\n }\n // Common accounts are auto populated with magic names by convention.\n if (Reflect.has(AccountsResolver.CONST_ACCOUNTS, accountDescName) &&\n !this.get([...path, accountDescName])) {\n this.set([...path, accountDescName], AccountsResolver.CONST_ACCOUNTS[accountDescName]);\n }\n }\n }\n async resolvePdas(accounts, path = []) {\n let found = 0;\n for (let k = 0; k < accounts.length; k += 1) {\n const accountDesc = accounts[k];\n const subAccounts = accountDesc.accounts;\n if (subAccounts) {\n found += await this.resolvePdas(subAccounts, [\n ...path,\n camelCase(accountDesc.name),\n ]);\n }\n const accountDescCasted = accountDesc;\n const accountDescName = camelCase(accountDesc.name);\n // PDA derived from IDL seeds.\n if (accountDescCasted.pda &&\n accountDescCasted.pda.seeds.length > 0 &&\n !this.get([...path, accountDescName])) {\n if (Boolean(await this.autoPopulatePda(accountDescCasted, path))) {\n found += 1;\n }\n }\n }\n return found;\n }\n async resolveRelations(accounts, path = []) {\n let found = 0;\n for (let k = 0; k < accounts.length; k += 1) {\n const accountDesc = accounts[k];\n const subAccounts = accountDesc.accounts;\n if (subAccounts) {\n found += await this.resolveRelations(subAccounts, [\n ...path,\n camelCase(accountDesc.name),\n ]);\n }\n const relations = accountDesc.relations || [];\n const accountDescName = camelCase(accountDesc.name);\n const newPath = [...path, accountDescName];\n // If we have this account and there's some missing accounts that are relations to this account, fetch them\n const accountKey = this.get(newPath);\n if (accountKey) {\n const matching = relations.filter((rel) => !this.get([...path, camelCase(rel)]));\n found += matching.length;\n if (matching.length > 0) {\n const account = await this._accountStore.fetchAccount({\n publicKey: accountKey,\n });\n await Promise.all(matching.map(async (rel) => {\n const relName = camelCase(rel);\n this.set([...path, relName], account[relName]);\n return account[relName];\n }));\n }\n }\n }\n return found;\n }\n async autoPopulatePda(accountDesc, path = []) {\n if (!accountDesc.pda || !accountDesc.pda.seeds)\n throw new Error(\"Must have seeds\");\n const seeds = await Promise.all(accountDesc.pda.seeds.map((seedDesc) => this.toBuffer(seedDesc, path)));\n if (seeds.some((seed) => typeof seed == \"undefined\")) {\n return;\n }\n const programId = await this.parseProgramId(accountDesc, path);\n if (!programId) {\n return;\n }\n const [pubkey] = await PublicKey.findProgramAddress(seeds, programId);\n this.set([...path, camelCase(accountDesc.name)], pubkey);\n }\n async parseProgramId(accountDesc, path = []) {\n var _a;\n if (!((_a = accountDesc.pda) === null || _a === void 0 ? void 0 : _a.programId)) {\n return this._programId;\n }\n switch (accountDesc.pda.programId.kind) {\n case \"const\":\n return new PublicKey(this.toBufferConst(accountDesc.pda.programId.value));\n case \"arg\":\n return this.argValue(accountDesc.pda.programId);\n case \"account\":\n return await this.accountValue(accountDesc.pda.programId, path);\n default:\n throw new Error(`Unexpected program seed kind: ${accountDesc.pda.programId.kind}`);\n }\n }\n async toBuffer(seedDesc, path = []) {\n switch (seedDesc.kind) {\n case \"const\":\n return this.toBufferConst(seedDesc);\n case \"arg\":\n return await this.toBufferArg(seedDesc);\n case \"account\":\n return await this.toBufferAccount(seedDesc, path);\n default:\n throw new Error(`Unexpected seed kind: ${seedDesc.kind}`);\n }\n }\n /**\n * Recursively get the type at some path of either a primitive or a user defined struct.\n */\n getType(type, path = []) {\n if (path.length > 0 && type.defined) {\n const subType = this._idlTypes.find((t) => t.name === type.defined);\n if (!subType) {\n throw new Error(`Cannot find type ${type.defined}`);\n }\n const structType = subType.type; // enum not supported yet\n const field = structType.fields.find((field) => field.name === path[0]);\n return this.getType(field.type, path.slice(1));\n }\n return type;\n }\n toBufferConst(seedDesc) {\n return this.toBufferValue(this.getType(seedDesc.type, (seedDesc.path || \"\").split(\".\").slice(1)), seedDesc.value);\n }\n async toBufferArg(seedDesc) {\n const argValue = this.argValue(seedDesc);\n if (typeof argValue === \"undefined\") {\n return;\n }\n return this.toBufferValue(this.getType(seedDesc.type, (seedDesc.path || \"\").split(\".\").slice(1)), argValue);\n }\n argValue(seedDesc) {\n const split = seedDesc.path.split(\".\");\n const seedArgName = camelCase(split[0]);\n const idlArgPosition = this._idlIx.args.findIndex((argDesc) => argDesc.name === seedArgName);\n if (idlArgPosition === -1) {\n throw new Error(`Unable to find argument for seed: ${seedArgName}`);\n }\n return split\n .slice(1)\n .reduce((curr, path) => (curr || {})[path], this._args[idlArgPosition]);\n }\n async toBufferAccount(seedDesc, path = []) {\n const accountValue = await this.accountValue(seedDesc, path);\n if (!accountValue) {\n return;\n }\n return this.toBufferValue(seedDesc.type, accountValue);\n }\n async accountValue(seedDesc, path = []) {\n const pathComponents = seedDesc.path.split(\".\");\n const fieldName = pathComponents[0];\n const fieldPubkey = this.get([...path, camelCase(fieldName)]);\n if (fieldPubkey === null) {\n throw new Error(`fieldPubkey is null`);\n }\n // The seed is a pubkey of the account.\n if (pathComponents.length === 1) {\n return fieldPubkey;\n }\n // The key is account data.\n //\n // Fetch and deserialize it.\n const account = await this._accountStore.fetchAccount({\n publicKey: fieldPubkey,\n name: seedDesc.account,\n });\n // Dereference all fields in the path to get the field value\n // used in the seed.\n const fieldValue = this.parseAccountValue(account, pathComponents.slice(1));\n return fieldValue;\n }\n parseAccountValue(account, path) {\n let accountField;\n while (path.length > 0) {\n accountField = account[camelCase(path[0])];\n path = path.slice(1);\n }\n return accountField;\n }\n // Converts the given idl valaue into a Buffer. The values here must be\n // primitives. E.g. no structs.\n //\n // TODO: add more types here as needed.\n toBufferValue(type, value) {\n switch (type) {\n case \"u8\":\n return Buffer.from([value]);\n case \"u16\":\n let b = Buffer.alloc(2);\n b.writeUInt16LE(value);\n return b;\n case \"u32\":\n let buf = Buffer.alloc(4);\n buf.writeUInt32LE(value);\n return buf;\n case \"u64\":\n let bU64 = Buffer.alloc(8);\n bU64.writeBigUInt64LE(BigInt(value));\n return bU64;\n case \"string\":\n return Buffer.from(encode$2(value));\n case \"publicKey\":\n return value.toBuffer();\n default:\n if (type.array) {\n return Buffer.from(value);\n }\n throw new Error(`Unexpected seed type: ${type}`);\n }\n }\n}\nAccountsResolver.CONST_ACCOUNTS = {\n associatedTokenProgram: ASSOCIATED_PROGRAM_ID,\n rent: SYSVAR_RENT_PUBKEY,\n systemProgram: SystemProgram.programId,\n tokenProgram: TOKEN_PROGRAM_ID,\n clock: SYSVAR_CLOCK_PUBKEY,\n};\n// TODO: this should be configureable to avoid unnecessary requests.\nclass AccountStore {\n // todo: don't use the progrma use the account namespace.\n constructor(_provider, _accounts, _programId) {\n this._provider = _provider;\n this._programId = _programId;\n this._cache = new Map();\n this._idls = {};\n this._idls[_programId.toBase58()] = _accounts;\n }\n async ensureIdl(programId) {\n if (!this._idls[programId.toBase58()]) {\n const idl = await Program.fetchIdl(programId, this._provider);\n if (idl) {\n const program = new Program(idl, programId, this._provider);\n this._idls[programId.toBase58()] = program.account;\n }\n }\n return this._idls[programId.toBase58()];\n }\n async fetchAccount({ publicKey, name, programId = this._programId, }) {\n const address = publicKey.toString();\n if (!this._cache.has(address)) {\n if (name === \"TokenAccount\") {\n const accountInfo = await this._provider.connection.getAccountInfo(publicKey);\n if (accountInfo === null) {\n throw new Error(`invalid account info for ${address}`);\n }\n const data = decodeTokenAccount(accountInfo.data);\n this._cache.set(address, data);\n }\n else if (name) {\n const accounts = await this.ensureIdl(programId);\n if (accounts) {\n const accountFetcher = accounts[camelCase(name)];\n if (accountFetcher) {\n const account = await accountFetcher.fetch(publicKey);\n this._cache.set(address, account);\n }\n }\n }\n else {\n const account = await this._provider.connection.getAccountInfo(publicKey);\n if (account === null) {\n throw new Error(`invalid account info for ${address}`);\n }\n const data = account.data;\n const accounts = await this.ensureIdl(account.owner);\n if (accounts) {\n const firstAccountLayout = Object.values(accounts)[0];\n if (!firstAccountLayout) {\n throw new Error(\"No accounts for this program\");\n }\n const result = firstAccountLayout.coder.accounts.decodeAny(data);\n this._cache.set(address, result);\n }\n }\n }\n return this._cache.get(address);\n }\n}\n\nclass MethodsBuilderFactory {\n static build(provider, programId, idlIx, ixFn, txFn, rpcFn, simulateFn, viewFn, accountNamespace, idlTypes, customResolver) {\n return (...args) => new MethodsBuilder(args, ixFn, txFn, rpcFn, simulateFn, viewFn, provider, programId, idlIx, accountNamespace, idlTypes, customResolver);\n }\n}\nfunction isPartialAccounts(partialAccount) {\n return (typeof partialAccount === \"object\" &&\n partialAccount !== null &&\n !(\"_bn\" in partialAccount) // Ensures not a pubkey\n );\n}\nfunction flattenPartialAccounts(partialAccounts, throwOnNull) {\n const toReturn = {};\n for (const accountName in partialAccounts) {\n const account = partialAccounts[accountName];\n if (account === null) {\n if (throwOnNull)\n throw new Error(\"Failed to resolve optionals due to IDL type mismatch with input accounts!\");\n continue;\n }\n toReturn[accountName] = isPartialAccounts(account)\n ? flattenPartialAccounts(account, true)\n : translateAddress(account);\n }\n return toReturn;\n}\nclass MethodsBuilder {\n constructor(_args, _ixFn, _txFn, _rpcFn, _simulateFn, _viewFn, _provider, _programId, _idlIx, _accountNamespace, _idlTypes, _customResolver) {\n this._ixFn = _ixFn;\n this._txFn = _txFn;\n this._rpcFn = _rpcFn;\n this._simulateFn = _simulateFn;\n this._viewFn = _viewFn;\n this._programId = _programId;\n this._accounts = {};\n this._remainingAccounts = [];\n this._signers = [];\n this._preInstructions = [];\n this._postInstructions = [];\n this._autoResolveAccounts = true;\n this._args = _args;\n this._accountsResolver = new AccountsResolver(_args, this._accounts, _provider, _programId, _idlIx, _accountNamespace, _idlTypes, _customResolver);\n }\n args(_args) {\n this._args = _args;\n this._accountsResolver.args(_args);\n }\n async pubkeys() {\n if (this._autoResolveAccounts) {\n await this._accountsResolver.resolve();\n }\n return this._accounts;\n }\n accounts(accounts) {\n this._autoResolveAccounts = true;\n this._accountsResolver.resolveOptionals(accounts);\n return this;\n }\n accountsStrict(accounts) {\n this._autoResolveAccounts = false;\n this._accountsResolver.resolveOptionals(accounts);\n return this;\n }\n signers(signers) {\n this._signers = this._signers.concat(signers);\n return this;\n }\n remainingAccounts(accounts) {\n this._remainingAccounts = this._remainingAccounts.concat(accounts);\n return this;\n }\n preInstructions(ixs) {\n this._preInstructions = this._preInstructions.concat(ixs);\n return this;\n }\n postInstructions(ixs) {\n this._postInstructions = this._postInstructions.concat(ixs);\n return this;\n }\n async rpc(options) {\n if (this._autoResolveAccounts) {\n await this._accountsResolver.resolve();\n }\n // @ts-ignore\n return this._rpcFn(...this._args, {\n accounts: this._accounts,\n signers: this._signers,\n remainingAccounts: this._remainingAccounts,\n preInstructions: this._preInstructions,\n postInstructions: this._postInstructions,\n options: options,\n });\n }\n async rpcAndKeys(options) {\n const pubkeys = await this.pubkeys();\n return {\n pubkeys,\n signature: await this.rpc(options),\n };\n }\n async view(options) {\n if (this._autoResolveAccounts) {\n await this._accountsResolver.resolve();\n }\n if (!this._viewFn) {\n throw new Error(\"Method does not support views\");\n }\n // @ts-ignore\n return this._viewFn(...this._args, {\n accounts: this._accounts,\n signers: this._signers,\n remainingAccounts: this._remainingAccounts,\n preInstructions: this._preInstructions,\n postInstructions: this._postInstructions,\n options: options,\n });\n }\n async simulate(options) {\n if (this._autoResolveAccounts) {\n await this._accountsResolver.resolve();\n }\n // @ts-ignore\n return this._simulateFn(...this._args, {\n accounts: this._accounts,\n signers: this._signers,\n remainingAccounts: this._remainingAccounts,\n preInstructions: this._preInstructions,\n postInstructions: this._postInstructions,\n options: options,\n });\n }\n async instruction() {\n if (this._autoResolveAccounts) {\n await this._accountsResolver.resolve();\n }\n // @ts-ignore\n return this._ixFn(...this._args, {\n accounts: this._accounts,\n signers: this._signers,\n remainingAccounts: this._remainingAccounts,\n preInstructions: this._preInstructions,\n postInstructions: this._postInstructions,\n });\n }\n /**\n * Convenient shortcut to get instructions and pubkeys via\n * const { pubkeys, instructions } = await prepare();\n */\n async prepare() {\n return {\n instruction: await this.instruction(),\n pubkeys: await this.pubkeys(),\n signers: await this._signers,\n };\n }\n async transaction() {\n if (this._autoResolveAccounts) {\n await this._accountsResolver.resolve();\n }\n // @ts-ignore\n return this._txFn(...this._args, {\n accounts: this._accounts,\n signers: this._signers,\n remainingAccounts: this._remainingAccounts,\n preInstructions: this._preInstructions,\n postInstructions: this._postInstructions,\n });\n }\n}\n\nclass ViewFactory {\n static build(programId, idlIx, simulateFn, idl) {\n const isMut = idlIx.accounts.find((a) => a.isMut);\n const hasReturn = !!idlIx.returns;\n if (isMut || !hasReturn)\n return;\n const view = async (...args) => {\n var _a, _b;\n let simulationResult = await simulateFn(...args);\n const returnPrefix = `Program return: ${programId} `;\n let returnLog = simulationResult.raw.find((l) => l.startsWith(returnPrefix));\n if (!returnLog) {\n throw new Error(\"View expected return log\");\n }\n let returnData = decode(returnLog.slice(returnPrefix.length));\n let returnType = idlIx.returns;\n if (!returnType) {\n throw new Error(\"View expected return type\");\n }\n const coder = IdlCoder.fieldLayout({ type: returnType }, Array.from([...((_a = idl.accounts) !== null && _a !== void 0 ? _a : []), ...((_b = idl.types) !== null && _b !== void 0 ? _b : [])]));\n return coder.decode(returnData);\n };\n return view;\n }\n}\n\nclass NamespaceFactory {\n /**\n * Generates all namespaces for a given program.\n */\n static build(idl, coder, programId, provider, getCustomResolver) {\n const rpc = {};\n const instruction = {};\n const transaction = {};\n const simulate = {};\n const methods = {};\n const view = {};\n const idlErrors = parseIdlErrors(idl);\n const account = idl.accounts\n ? AccountFactory.build(idl, coder, programId, provider)\n : {};\n const state = StateFactory.build(idl, coder, programId, provider);\n idl.instructions.forEach((idlIx) => {\n const ixItem = InstructionNamespaceFactory.build(idlIx, (ixName, ix) => coder.instruction.encode(ixName, ix), programId);\n const txItem = TransactionFactory.build(idlIx, ixItem);\n const rpcItem = RpcFactory.build(idlIx, txItem, idlErrors, provider);\n const simulateItem = SimulateFactory.build(idlIx, txItem, idlErrors, provider, coder, programId, idl);\n const viewItem = ViewFactory.build(programId, idlIx, simulateItem, idl);\n const methodItem = MethodsBuilderFactory.build(provider, programId, idlIx, ixItem, txItem, rpcItem, simulateItem, viewItem, account, idl.types || [], getCustomResolver && getCustomResolver(idlIx));\n const name = camelCase(idlIx.name);\n instruction[name] = ixItem;\n transaction[name] = txItem;\n rpc[name] = rpcItem;\n simulate[name] = simulateItem;\n methods[name] = methodItem;\n if (viewItem) {\n view[name] = viewItem;\n }\n });\n return [\n rpc,\n instruction,\n transaction,\n account,\n simulate,\n methods,\n state,\n view,\n ];\n }\n}\n\n/**\n * ## Program\n *\n * Program provides the IDL deserialized client representation of an Anchor\n * program.\n *\n * This API is the one stop shop for all things related to communicating with\n * on-chain programs. Among other things, one can send transactions, fetch\n * deserialized accounts, decode instruction data, subscribe to account\n * changes, and listen to events.\n *\n * In addition to field accessors and methods, the object provides a set of\n * dynamically generated properties, also known as namespaces, that\n * map one-to-one to program methods and accounts. These namespaces generally\n * can be used as follows:\n *\n * ## Usage\n *\n * ```javascript\n * program..\n * ```\n *\n * API specifics are namespace dependent. The examples used in the documentation\n * below will refer to the two counter examples found\n * [here](https://github.com/coral-xyz/anchor#examples).\n */\nclass Program {\n /**\n * Address of the program.\n */\n get programId() {\n return this._programId;\n }\n /**\n * IDL defining the program's interface.\n */\n get idl() {\n return this._idl;\n }\n /**\n * Coder for serializing requests.\n */\n get coder() {\n return this._coder;\n }\n /**\n * Wallet and network provider.\n */\n get provider() {\n return this._provider;\n }\n /**\n * @param idl The interface definition.\n * @param programId The on-chain address of the program.\n * @param provider The network and wallet context to use. If not provided\n * then uses [[getProvider]].\n * @param getCustomResolver A function that returns a custom account resolver\n * for the given instruction. This is useful for resolving\n * public keys of missing accounts when building instructions\n */\n constructor(idl, programId, provider, coder, getCustomResolver) {\n programId = translateAddress(programId);\n if (!provider) {\n provider = getProvider();\n }\n // Fields.\n this._idl = idl;\n this._provider = provider;\n this._programId = programId;\n this._coder = coder !== null && coder !== void 0 ? coder : new BorshCoder(idl);\n this._events = new EventManager(this._programId, provider, this._coder);\n // Dynamic namespaces.\n const [rpc, instruction, transaction, account, simulate, methods, state, views,] = NamespaceFactory.build(idl, this._coder, programId, provider, getCustomResolver !== null && getCustomResolver !== void 0 ? getCustomResolver : (() => undefined));\n this.rpc = rpc;\n this.instruction = instruction;\n this.transaction = transaction;\n this.account = account;\n this.simulate = simulate;\n this.methods = methods;\n this.state = state;\n this.views = views;\n }\n /**\n * Generates a Program client by fetching the IDL from the network.\n *\n * In order to use this method, an IDL must have been previously initialized\n * via the anchor CLI's `anchor idl init` command.\n *\n * @param programId The on-chain address of the program.\n * @param provider The network and wallet context.\n */\n static async at(address, provider) {\n const programId = translateAddress(address);\n const idl = await Program.fetchIdl(programId, provider);\n if (!idl) {\n throw new Error(`IDL not found for program: ${address.toString()}`);\n }\n return new Program(idl, programId, provider);\n }\n /**\n * Fetches an idl from the blockchain.\n *\n * In order to use this method, an IDL must have been previously initialized\n * via the anchor CLI's `anchor idl init` command.\n *\n * @param programId The on-chain address of the program.\n * @param provider The network and wallet context.\n */\n static async fetchIdl(address, provider) {\n provider = provider !== null && provider !== void 0 ? provider : getProvider();\n const programId = translateAddress(address);\n const idlAddr = await idlAddress(programId);\n const accountInfo = await provider.connection.getAccountInfo(idlAddr);\n if (!accountInfo) {\n return null;\n }\n // Chop off account discriminator.\n let idlAccount = decodeIdlAccount(accountInfo.data.slice(8));\n const inflatedIdl = inflate(idlAccount.data);\n return JSON.parse(decode$2(inflatedIdl));\n }\n /**\n * Invokes the given callback every time the given event is emitted.\n *\n * @param eventName The PascalCase name of the event, provided by the IDL.\n * @param callback The function to invoke whenever the event is emitted from\n * program logs.\n */\n addEventListener(eventName, callback) {\n return this._events.addEventListener(eventName, callback);\n }\n /**\n * Unsubscribes from the given eventName.\n */\n async removeEventListener(listener) {\n return await this._events.removeEventListener(listener);\n }\n}\n\nconst SYSTEM_PROGRAM_ID = new PublicKey(\"11111111111111111111111111111111\");\nfunction program(provider) {\n return new Program(IDL, SYSTEM_PROGRAM_ID, provider, coder());\n}\nfunction coder() {\n return new SystemCoder(IDL);\n}\nconst IDL = {\n version: \"0.1.0\",\n name: \"system_program\",\n instructions: [\n {\n name: \"createAccount\",\n accounts: [\n {\n name: \"from\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"to\",\n isMut: true,\n isSigner: true,\n },\n ],\n args: [\n {\n name: \"lamports\",\n type: \"u64\",\n },\n {\n name: \"space\",\n type: \"u64\",\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n },\n ],\n },\n {\n name: \"assign\",\n accounts: [\n {\n name: \"pubkey\",\n isMut: true,\n isSigner: true,\n },\n ],\n args: [\n {\n name: \"owner\",\n type: \"publicKey\",\n },\n ],\n },\n {\n name: \"transfer\",\n accounts: [\n {\n name: \"from\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"to\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"lamports\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"createAccountWithSeed\",\n accounts: [\n {\n name: \"from\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"to\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"base\",\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: \"base\",\n type: \"publicKey\",\n },\n {\n name: \"seed\",\n type: \"string\",\n },\n {\n name: \"lamports\",\n type: \"u64\",\n },\n {\n name: \"space\",\n type: \"u64\",\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n },\n ],\n },\n {\n name: \"advanceNonceAccount\",\n accounts: [\n {\n name: \"nonce\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"recentBlockhashes\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"authorized\",\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: \"authorized\",\n type: \"publicKey\",\n },\n ],\n },\n {\n name: \"withdrawNonceAccount\",\n accounts: [\n {\n name: \"nonce\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"to\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"recentBlockhashes\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"authorized\",\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: \"lamports\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"initializeNonceAccount\",\n accounts: [\n {\n name: \"nonce\",\n isMut: true,\n isSigner: true,\n },\n {\n name: \"recentBlockhashes\",\n isMut: false,\n isSigner: false,\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"authorized\",\n type: \"publicKey\",\n },\n ],\n },\n {\n name: \"authorizeNonceAccount\",\n accounts: [\n {\n name: \"nonce\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"authorized\",\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: \"authorized\",\n type: \"publicKey\",\n },\n ],\n },\n {\n name: \"allocate\",\n accounts: [\n {\n name: \"pubkey\",\n isMut: true,\n isSigner: true,\n },\n ],\n args: [\n {\n name: \"space\",\n type: \"u64\",\n },\n ],\n },\n {\n name: \"allocateWithSeed\",\n accounts: [\n {\n name: \"account\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"base\",\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: \"base\",\n type: \"publicKey\",\n },\n {\n name: \"seed\",\n type: \"string\",\n },\n {\n name: \"space\",\n type: \"u64\",\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n },\n ],\n },\n {\n name: \"assignWithSeed\",\n accounts: [\n {\n name: \"account\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"base\",\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: \"base\",\n type: \"publicKey\",\n },\n {\n name: \"seed\",\n type: \"string\",\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n },\n ],\n },\n {\n name: \"transferWithSeed\",\n accounts: [\n {\n name: \"from\",\n isMut: true,\n isSigner: false,\n },\n {\n name: \"base\",\n isMut: false,\n isSigner: true,\n },\n {\n name: \"to\",\n isMut: true,\n isSigner: false,\n },\n ],\n args: [\n {\n name: \"lamports\",\n type: \"u64\",\n },\n {\n name: \"seed\",\n type: \"string\",\n },\n {\n name: \"owner\",\n type: \"publicKey\",\n },\n ],\n },\n ],\n accounts: [\n {\n name: \"nonce\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"version\",\n type: \"u32\",\n },\n {\n name: \"state\",\n type: \"u32\",\n },\n {\n name: \"authorizedPubkey\",\n type: \"publicKey\",\n },\n {\n name: \"nonce\",\n type: \"publicKey\",\n },\n {\n name: \"feeCalculator\",\n type: {\n defined: \"FeeCalculator\",\n },\n },\n ],\n },\n },\n ],\n types: [\n {\n name: \"FeeCalculator\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"lamportsPerSignature\",\n type: \"u64\",\n },\n ],\n },\n },\n ],\n};\n\nclass Native {\n static system(provider) {\n return program(provider);\n }\n}\n\nexport { ACCOUNT_DISCRIMINATOR_SIZE, AccountClient, AnchorError, AnchorProvider, BorshAccountsCoder, BorshCoder, BorshEventCoder, BorshInstructionCoder, BorshStateCoder, EventManager, EventParser, IdlError, LangErrorCode, LangErrorMessage, MethodsBuilderFactory, Native, Program, ProgramError, ProgramErrorStack, StateClient, SystemCoder, eventDiscriminator, getProvider, parseIdlErrors, setProvider, splitArgsAndCtx, stateDiscriminator, toInstruction, translateAddress, translateError, index as utils, validateAccounts };\n//# sourceMappingURL=index.js.map\n","// src/client/index.ts\nimport {\n Transaction,\n Connection\n} from \"@solana/web3.js\";\nimport {\n AnchorProvider,\n Program\n} from \"@project-serum/anchor\";\n\n// src/constants/shared.ts\nimport { PublicKey } from \"@solana/web3.js\";\nvar CALLBACK_INFO_LEN = 34;\nvar BPS_100_PERCENT = 1e4;\nvar QUOTE_TOKEN_DECIMALS = 6;\nvar CONFIGS = {\n localnet: {\n CYPHER_PID: new PublicKey(\"E2hQJAedG6bX2w3rbPQ5XrBnPvC7u3mAorKLvU6XPxwe\"),\n PYTH_PID: new PublicKey(\"gSbePebfvPy7tRqimPoVecS2UsBvYv46ynrzWocc92s\"),\n DEX_PID: new PublicKey(\"EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj\"),\n FAUCET_PID: new PublicKey(\"2gCkR5aaUiTVRiKDB79EWXm5PAVDWtNTnp9mGuu4ZKdY\"),\n QUOTE_MINT: new PublicKey(\"GE2GoxjfHo9uPJGDxwVifPFomBybhsh4m5SMqaw7vPBw\"),\n PYTH_QUOTE_PRODUCT: new PublicKey(\n \"6NpdXrQEpmDZ3jZKmM2rhdmkd3H6QAk23j2x8bkXcHKA\"\n ),\n CACHE: new PublicKey(\"DV1umVB5KzBkPuav7JbDNNKUzaDk9v2zAUNudR3kKRmZ\"),\n HISTORY_API_GRAPHQL: \"http://localhost:8081/v1/graphql\",\n HISTORY_API_REST: \"http://localhost:8081/api/rest\"\n },\n devnet: {\n CYPHER_PID: new PublicKey(\"E2hQJAedG6bX2w3rbPQ5XrBnPvC7u3mAorKLvU6XPxwe\"),\n PYTH_PID: new PublicKey(\"gSbePebfvPy7tRqimPoVecS2UsBvYv46ynrzWocc92s\"),\n DEX_PID: new PublicKey(\"EoTcMgcDRTJVZDMZWBoU6rhYHZfkNTVEAfz3uUJRcYGj\"),\n FAUCET_PID: new PublicKey(\"2gCkR5aaUiTVRiKDB79EWXm5PAVDWtNTnp9mGuu4ZKdY\"),\n QUOTE_MINT: new PublicKey(\"GE2GoxjfHo9uPJGDxwVifPFomBybhsh4m5SMqaw7vPBw\"),\n PYTH_QUOTE_PRODUCT: new PublicKey(\n \"6NpdXrQEpmDZ3jZKmM2rhdmkd3H6QAk23j2x8bkXcHKA\"\n ),\n CACHE: new PublicKey(\"DV1umVB5KzBkPuav7JbDNNKUzaDk9v2zAUNudR3kKRmZ\"),\n HISTORY_API_GRAPHQL: \"devnet-v3.cypher-history.com/v1/graphql\",\n HISTORY_API_REST: \"devnet-v3.cypher-history.com/api/rest\"\n },\n \"mainnet-beta\": {\n CYPHER_PID: new PublicKey(\"CYPH3o83JX6jY6NkbproSpdmQ5VWJtxjfJ5P8veyYVu3\"),\n PYTH_PID: new PublicKey(\"FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH\"),\n DEX_PID: new PublicKey(\"srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX\"),\n QUOTE_MINT: new PublicKey(\"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v\"),\n PYTH_QUOTE_PRODUCT: new PublicKey(\n \"8GWTTbNiXdmyZREXbjsZBmCRuzdPrW55dnZGDkTRjWvb\"\n ),\n CACHE: new PublicKey(\"6x5U4c41tfUYGEbTXofFiHcfyx3rqJZsT4emrLisNGGL\"),\n HISTORY_API_GRAPHQL: \"https://mainnet-v3.cypher-history.com/v1/graphql\",\n HISTORY_API_REST: \"https://mainnet-v3.cypher-history.com/api/rest\"\n }\n};\n\n// src/generated/idl/cypher.json\nvar cypher_default = {\n version: \"3.0.0\",\n name: \"cypher\",\n instructions: [\n {\n name: \"cacheOraclePrices\",\n accounts: [\n {\n name: \"cacheAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleProducts\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"cacheIndex\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"claimIdoProceeds\",\n accounts: [\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quoteVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"destinationTokenAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"idoAuthority\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"vaultSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"claimLiquidityMiningRewards\",\n accounts: [\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quoteVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"destinationTokenAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"idoAuthority\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"vaultSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"closeAccount\",\n accounts: [\n {\n name: \"account\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"rentDestination\",\n isMut: true,\n isSigner: true\n }\n ],\n args: []\n },\n {\n name: \"closeCacheAccount\",\n accounts: [\n {\n name: \"cacheAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"rentDestination\",\n isMut: true,\n isSigner: true\n }\n ],\n args: []\n },\n {\n name: \"closeClearing\",\n accounts: [\n {\n name: \"clearing\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"rentDestination\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: []\n },\n {\n name: \"closeFuturesMarket\",\n accounts: [\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"orderbook\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"bids\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"asks\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"eventQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleProducts\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"priceHistory\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"rentDestination\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: []\n },\n {\n name: \"closeOracleProducts\",\n accounts: [\n {\n name: \"cacheAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleProducts\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"rentDestination\",\n isMut: true,\n isSigner: true\n }\n ],\n args: []\n },\n {\n name: \"closeOrdersAccount\",\n accounts: [\n {\n name: \"masterAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"openOrders\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n }\n ],\n args: []\n },\n {\n name: \"closePerpMarket\",\n accounts: [\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"orderbook\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"bids\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"asks\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"eventQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleProducts\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"rentDestination\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: []\n },\n {\n name: \"closePool\",\n accounts: [\n {\n name: \"pool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleProducts\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"rentDestination\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"closePoolNode\",\n accounts: [\n {\n name: \"pool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"poolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"vaultSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"rentDestination\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"closeSubAccount\",\n accounts: [\n {\n name: \"account\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"rentDestination\",\n isMut: true,\n isSigner: true\n }\n ],\n args: []\n },\n {\n name: \"createAccount\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"accountNumber\",\n type: \"u8\"\n },\n {\n name: \"accountBump\",\n type: \"u8\"\n }\n ]\n },\n {\n name: \"createPublicClearing\",\n accounts: [\n {\n name: \"clearing\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"args\",\n type: {\n defined: \"CreateClearingArgs\"\n }\n }\n ]\n },\n {\n name: \"createPrivateClearing\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"privateClearing\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"args\",\n type: {\n defined: \"CreateClearingArgs\"\n }\n }\n ]\n },\n {\n name: \"createOracleStub\",\n accounts: [\n {\n name: \"oracleStub\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"symbol\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n name: \"createOrdersAccount\",\n accounts: [\n {\n name: \"masterAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"openOrders\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"createFuturesMarket\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"priceHistory\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleProducts\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePool\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"orderbook\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"bids\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"asks\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"eventQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"args\",\n type: {\n defined: \"CreateFuturesMarketArgs\"\n }\n }\n ]\n },\n {\n name: \"createPerpMarket\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleProducts\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePool\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"orderbook\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"bids\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"asks\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"eventQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"args\",\n type: {\n defined: \"CreatePerpetualMarketArgs\"\n }\n }\n ]\n },\n {\n name: \"createPool\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"pool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"poolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"vaultSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"oracleProducts\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"dexMarket\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"args\",\n type: {\n defined: \"CreatePoolArgs\"\n }\n }\n ]\n },\n {\n name: \"createPoolNode\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"pool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"poolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"vaultSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"vaultSignerBump\",\n type: \"u8\"\n },\n {\n name: \"nodeNumber\",\n type: \"u8\"\n }\n ]\n },\n {\n name: \"createSubAccount\",\n accounts: [\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"subAccountNumber\",\n type: \"u8\"\n },\n {\n name: \"subAccountBump\",\n type: \"u8\"\n },\n {\n name: \"subAccountAlias\",\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n }\n ]\n },\n {\n name: \"createWhitelist\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"whitelist\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"accountOwner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"createWhitelistedAccount\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"whitelist\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"accountNumber\",\n type: \"u8\"\n },\n {\n name: \"accountBump\",\n type: \"u8\"\n }\n ]\n },\n {\n name: \"depositDeliverable\",\n accounts: [\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"pool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"poolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"sourceTokenAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"depositFunds\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"pool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"poolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"sourceTokenAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"editSubAccountMargining\",\n accounts: [\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"marginingType\",\n type: {\n defined: \"SubAccountMargining\"\n }\n }\n ]\n },\n {\n name: \"createOracleProducts\",\n accounts: [\n {\n name: \"cacheAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracleProducts\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"args\",\n type: {\n defined: \"CreateOracleProductsArgs\"\n }\n }\n ]\n },\n {\n name: \"initCacheAccount\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: []\n },\n {\n name: \"liquidateFuturesPosition\",\n accounts: [\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"liqorClearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"liqorAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liqorSubAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liqeeClearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"liqeeAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liqeeSubAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"asset\",\n type: \"publicKey\"\n },\n {\n name: \"liability\",\n type: \"publicKey\"\n }\n ]\n },\n {\n name: \"liquidatePerpPosition\",\n accounts: [\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"liqorClearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"liqorAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liqorSubAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liqeeClearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"liqeeAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liqeeSubAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"asset\",\n type: \"publicKey\"\n },\n {\n name: \"liability\",\n type: \"publicKey\"\n }\n ]\n },\n {\n name: \"liquidateSpotPosition\",\n accounts: [\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"liqorClearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"liqorAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liqorSubAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liqeeClearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"liqeeAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liqeeSubAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"assetMint\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"assetPoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liabilityMint\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"liabilityPool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"liabilityPoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n }\n ],\n args: []\n },\n {\n name: \"rollMarketExpiry\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"expirationTs\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"setAccountDelegate\",\n accounts: [\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"setAccountFeeTier\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"tier\",\n type: \"u8\"\n }\n ]\n },\n {\n name: \"setClearingAuthority\",\n accounts: [\n {\n name: \"clearing\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"newAuthority\",\n type: \"publicKey\"\n }\n ]\n },\n {\n name: \"setClearingFeeTiers\",\n accounts: [\n {\n name: \"clearing\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"feeTiers\",\n type: {\n vec: {\n defined: \"FeeTierArgs\"\n }\n }\n }\n ]\n },\n {\n name: \"setClearingFeeMint\",\n accounts: [\n {\n name: \"clearing\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"feeMint\",\n type: \"publicKey\"\n }\n ]\n },\n {\n name: \"setFuturesMarketAuthority\",\n accounts: [\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"newAuthority\",\n type: \"publicKey\"\n }\n ]\n },\n {\n name: \"setFuturesMarketLiquidityMiningInfo\",\n accounts: [\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"args\",\n type: {\n defined: \"LiquidityMiningArgs\"\n }\n }\n ]\n },\n {\n name: \"setFuturesMarketParams\",\n accounts: [\n {\n name: \"cache\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"maxBaseOrderSize\",\n type: {\n option: \"u64\"\n }\n },\n {\n name: \"maxQuoteOrderSize\",\n type: {\n option: \"u64\"\n }\n },\n {\n name: \"initAssetWeight\",\n type: {\n option: \"u8\"\n }\n },\n {\n name: \"maintAssetWeight\",\n type: {\n option: \"u8\"\n }\n },\n {\n name: \"initLiabWeight\",\n type: {\n option: \"u8\"\n }\n },\n {\n name: \"maintLiabWeight\",\n type: {\n option: \"u8\"\n }\n }\n ]\n },\n {\n name: \"setFuturesMarketStatus\",\n accounts: [\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"status\",\n type: {\n defined: \"OperatingStatus\"\n }\n }\n ]\n },\n {\n name: \"setPerpetualMarketAuthority\",\n accounts: [\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"newAuthority\",\n type: \"publicKey\"\n }\n ]\n },\n {\n name: \"setPerpetualMarketLiquidityMiningInfo\",\n accounts: [\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"args\",\n type: {\n defined: \"LiquidityMiningArgs\"\n }\n }\n ]\n },\n {\n name: \"setPerpetualMarketParams\",\n accounts: [\n {\n name: \"cache\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"impactQuantity\",\n type: {\n option: \"u64\"\n }\n },\n {\n name: \"maxBaseOrderSize\",\n type: {\n option: \"u64\"\n }\n },\n {\n name: \"maxQuoteOrderSize\",\n type: {\n option: \"u64\"\n }\n },\n {\n name: \"initAssetWeight\",\n type: {\n option: \"u8\"\n }\n },\n {\n name: \"maintAssetWeight\",\n type: {\n option: \"u8\"\n }\n },\n {\n name: \"initLiabWeight\",\n type: {\n option: \"u8\"\n }\n },\n {\n name: \"maintLiabWeight\",\n type: {\n option: \"u8\"\n }\n }\n ]\n },\n {\n name: \"setPerpetualMarketStatus\",\n accounts: [\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"status\",\n type: {\n defined: \"OperatingStatus\"\n }\n }\n ]\n },\n {\n name: \"setPoolNodeStatus\",\n accounts: [\n {\n name: \"poolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"status\",\n type: {\n defined: \"OperatingStatus\"\n }\n }\n ]\n },\n {\n name: \"setPoolStatus\",\n accounts: [\n {\n name: \"pool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"status\",\n type: {\n defined: \"OperatingStatus\"\n }\n }\n ]\n },\n {\n name: \"setOracleProducts\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"oracleProducts\",\n isMut: true,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"setOracleStubPrice\",\n accounts: [\n {\n name: \"oracleStub\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"price\",\n type: \"i128\"\n }\n ]\n },\n {\n name: \"setSubAccountDelegate\",\n accounts: [\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"delegate\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"setPoolDexMarket\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"pool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"dexMarket\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: []\n },\n {\n name: \"settlePositionWithDelivery\",\n accounts: [\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"underlyingPoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"settlePosition\",\n accounts: [\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"sweepMarketFees\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quoteVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"destinationTokenAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"vaultSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"sweepPoolFees\",\n accounts: [\n {\n name: \"tokenPool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quoteVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"destinationTokenAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"vaultSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"transferBetweenSubAccounts\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"fromSubAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"toSubAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"assetMint\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"assetPoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"updateAccountMargin\",\n accounts: [\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"signer\",\n isMut: true,\n isSigner: true\n }\n ],\n args: []\n },\n {\n name: \"updateFundingRate\",\n accounts: [\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"orderbook\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"bids\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"asks\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"updateMarketExpiration\",\n accounts: [\n {\n name: \"clearing\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"expirationTs\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"updateTokenIndex\",\n accounts: [\n {\n name: \"cacheAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"pool\",\n isMut: true,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"withdrawFunds\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"pool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"poolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"destinationTokenAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"vaultSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"cancelSpotOrder\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"assetPoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"assetMint\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"assetVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quoteVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"dex\",\n accounts: [\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"openOrders\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"eventQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"bids\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"asks\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"coinVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"pcVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"vaultSigner\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"dexProgram\",\n isMut: false,\n isSigner: false\n }\n ]\n }\n ],\n args: [\n {\n name: \"args\",\n type: {\n defined: \"CancelOrderArgs\"\n }\n }\n ]\n },\n {\n name: \"closeSpotOpenOrders\",\n accounts: [\n {\n name: \"masterAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"assetPool\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"dexMarket\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"openOrders\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"dexProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"initSpotOpenOrders\",\n accounts: [\n {\n name: \"masterAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"pool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenMint\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"dexMarket\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"openOrders\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"payer\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"dexProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"newSpotOrder\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"assetPoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"assetMint\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"assetVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quoteVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"vaultSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"dex\",\n accounts: [\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"openOrders\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"eventQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"requestQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"bids\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"asks\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"coinVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"pcVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"vaultSigner\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"dexProgram\",\n isMut: false,\n isSigner: false\n }\n ]\n }\n ],\n args: [\n {\n name: \"args\",\n type: {\n defined: \"NewSpotOrderArgs\"\n }\n }\n ]\n },\n {\n name: \"settleSpotFunds\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"assetPoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"assetMint\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"assetVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quoteVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"dex\",\n accounts: [\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"openOrders\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"coinVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"pcVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"vaultSigner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"dexProgram\",\n isMut: false,\n isSigner: false\n }\n ]\n }\n ],\n args: []\n },\n {\n name: \"cancelFuturesOrder\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"openOrders\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"orderbook\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"eventQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"bids\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"asks\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"args\",\n type: {\n defined: \"CancelOrderArgs\"\n }\n }\n ]\n },\n {\n name: \"consumeFuturesEvents\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"orderbook\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"eventQueue\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"limit\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"newFuturesOrder\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"openOrders\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"priceHistory\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"orderbook\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"eventQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"bids\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"asks\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"args\",\n type: {\n defined: \"NewDerivativeOrderArgs\"\n }\n }\n ]\n },\n {\n name: \"pruneFuturesOrders\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"openOrders\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"orderbook\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"eventQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"bids\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"asks\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"limit\",\n type: \"u8\"\n }\n ]\n },\n {\n name: \"settleFuturesFunds\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"openOrders\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n }\n ],\n args: []\n },\n {\n name: \"cancelPerpOrder\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"openOrders\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"orderbook\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"eventQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"bids\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"asks\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"args\",\n type: {\n defined: \"CancelOrderArgs\"\n }\n }\n ]\n },\n {\n name: \"consumePerpEvents\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"orderbook\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"eventQueue\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"limit\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"newPerpOrder\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"openOrders\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"orderbook\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"eventQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"bids\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"asks\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"args\",\n type: {\n defined: \"NewDerivativeOrderArgs\"\n }\n }\n ]\n },\n {\n name: \"prunePerpOrders\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"openOrders\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"orderbook\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"eventQueue\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"bids\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"asks\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"authority\",\n isMut: true,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"limit\",\n type: \"u8\"\n }\n ]\n },\n {\n name: \"settlePerpFunds\",\n accounts: [\n {\n name: \"clearing\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"openOrders\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"settleFunding\",\n accounts: [\n {\n name: \"cacheAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"masterAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"subAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"openOrders\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"market\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"quotePoolNode\",\n isMut: true,\n isSigner: false\n }\n ],\n args: []\n }\n ],\n accounts: [\n {\n name: \"CacheAccount\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"authority\",\n docs: [\n \"the authority of the cache\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"caches\",\n docs: [\n \"the price caches, we have enough space here for more oracle maps than ever needed\",\n \"assuming that oracle products accounts actually get reused\"\n ],\n type: {\n array: [\n {\n defined: \"Cache\"\n },\n 512\n ]\n }\n }\n ]\n }\n },\n {\n name: \"Clearing\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"bumpSeed\",\n type: {\n array: [\n \"u8\",\n 1\n ]\n }\n },\n {\n name: \"clearingType\",\n docs: [\n \"the type of the clearing\"\n ],\n type: {\n defined: \"ClearingType\"\n }\n },\n {\n name: \"padding1\",\n type: {\n array: [\n \"u8\",\n 6\n ]\n }\n },\n {\n name: \"clearingNumberSeed\",\n type: {\n array: [\n \"u8\",\n 1\n ]\n }\n },\n {\n name: \"padding2\",\n type: {\n array: [\n \"u8\",\n 7\n ]\n }\n },\n {\n name: \"authority\",\n docs: [\n \"the clearing's authority\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"feeMint\",\n docs: [\n \"the mint of the token used to calculate fee tiers\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"padding3\",\n type: {\n array: [\n \"u64\",\n 4\n ]\n }\n },\n {\n name: \"feeTiers\",\n docs: [\n \"the fee tiers\"\n ],\n type: {\n array: [\n {\n defined: \"FeeTier\"\n },\n 10\n ]\n }\n },\n {\n name: \"config\",\n docs: [\n \"the config of the clearing\"\n ],\n type: {\n defined: \"ClearingConfig\"\n }\n }\n ]\n }\n },\n {\n name: \"Whitelist\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"clearing\",\n docs: [\n \"the corresponding clearing\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"authority\",\n docs: [\n \"the clearing's authority\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"accountOwner\",\n docs: [\n \"the account owner\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"account\",\n docs: [\n \"the actual cypher account\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"status\",\n docs: [\n \"whitelist status\",\n \"i.e, when a whitelist status is revoked, the authority of the clearing should be able\",\n \"to suspend a cypher account\"\n ],\n type: {\n defined: \"WhitelistStatus\"\n }\n },\n {\n name: \"padding1\",\n type: {\n array: [\n \"u8\",\n 7\n ]\n }\n }\n ]\n }\n },\n {\n name: \"FuturesMarket\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"inner\",\n docs: [\n \"the inner structure which contains all relevant agnostic orderbook related public keys and fields\"\n ],\n type: {\n defined: \"AgnosticMarket\"\n }\n },\n {\n name: \"idoAuthority\",\n docs: [\n \"the ido authority of the market, if applicable\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"underlyingMint\",\n docs: [\n \"the mint of the underlying token this derivative market may physically deliver\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"padding1\",\n type: {\n array: [\n \"u64\",\n 8\n ]\n }\n },\n {\n name: \"tokenSupply\",\n docs: [\n \"the supply of the derivative token\",\n \"i.e in the case of a market being for physical delivery of the underlying asset\",\n \"the token supply should be equal to the amount of tokens available for delivery\"\n ],\n type: \"u64\"\n },\n {\n name: \"activatesAt\",\n docs: [\n \"timestamp at which the market becomes active\"\n ],\n type: \"u64\"\n },\n {\n name: \"expiresAt\",\n docs: [\n \"timestamp at which the market expires\"\n ],\n type: \"u64\"\n },\n {\n name: \"positionsCount\",\n docs: [\n \"number of open positions in this market\"\n ],\n type: \"u64\"\n },\n {\n name: \"marketPrice\",\n docs: [\n \"the twap price\"\n ],\n type: \"i128\"\n },\n {\n name: \"totalBorrows\",\n docs: [\n \"the total amount of borrows of the derivative\"\n ],\n type: \"u64\"\n },\n {\n name: \"totalPurchased\",\n docs: [\n \"the total amount of purchased tokens in the case of a pre-ido market\"\n ],\n type: \"u64\"\n },\n {\n name: \"padding2\",\n type: {\n array: [\n \"u64\",\n 2\n ]\n }\n },\n {\n name: \"totalRaised\",\n docs: [\n \"the total amount of quote token that is available for the pre-ido token project's team to be collected\"\n ],\n type: \"i128\"\n }\n ]\n }\n },\n {\n name: \"PerpetualMarket\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"inner\",\n docs: [\n \"the inner structure which contains all relevant agnostic orderbook related public keys and fields\"\n ],\n type: {\n defined: \"AgnosticMarket\"\n }\n },\n {\n name: \"longFunding\",\n docs: [\n \"the long funding\"\n ],\n type: \"i128\"\n },\n {\n name: \"shortFunding\",\n docs: [\n \"the short funding\"\n ],\n type: \"i128\"\n },\n {\n name: \"lastFundingUpdate\",\n docs: [\n \"the timestamp of the last funding update\"\n ],\n type: \"u64\"\n },\n {\n name: \"impactQuantity\",\n docs: [\n \"the impact quantity used when getting bids and asks to calculate book mid price\"\n ],\n type: \"u64\"\n },\n {\n name: \"padding1\",\n type: {\n array: [\n \"u64\",\n 10\n ]\n }\n },\n {\n name: \"minFunding\",\n docs: [\n \"the minimum funding rate for this market, in percentage\"\n ],\n type: \"i8\"\n },\n {\n name: \"maxFunding\",\n docs: [\n \"the maximum funding rate for this market, in percentage\"\n ],\n type: \"i8\"\n },\n {\n name: \"padding2\",\n type: {\n array: [\n \"u8\",\n 6\n ]\n }\n }\n ]\n }\n },\n {\n name: \"OracleProducts\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"productsType\",\n docs: [\n \"the products type\"\n ],\n type: {\n defined: \"ProductsType\"\n }\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 7\n ]\n }\n },\n {\n name: \"symbol\",\n docs: [\n \"the symbol of the underlying token that this oracle products account is responsible for\",\n \"\",\n \"this is used as a PDA for the oracle products account to more easily derive this account and see if it exists so it is properly reused\"\n ],\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"maxConfidenceInterval\",\n docs: [\n \"the maximum confidence interval for the oracle price\"\n ],\n type: \"f64\"\n },\n {\n name: \"futuresMarket\",\n docs: [\n \"the futures market associated with this oracle products account\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"perpMarket\",\n docs: [\n \"the perp market associated with this oracle products account\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"tokenMint\",\n docs: [\n \"the token mint associated with this oracle products account\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"products\",\n docs: [\n \"the product accounts\"\n ],\n type: {\n vec: {\n array: [\n \"u8\",\n 32\n ]\n }\n }\n },\n {\n name: \"weights\",\n docs: [\n \"the weights of the products\"\n ],\n type: {\n vec: \"u16\"\n }\n }\n ]\n }\n },\n {\n name: \"OracleStub\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"symbol\",\n docs: [\n \"the symbol of the underlying token that this oracle stub provides a feed for\"\n ],\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"price\",\n docs: [\n \"The oracle price\"\n ],\n type: \"i128\"\n }\n ]\n }\n },\n {\n name: \"OrdersAccount\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"orderCount\",\n docs: [\n \"number of orders\"\n ],\n type: \"u8\"\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 7\n ]\n }\n },\n {\n name: \"authority\",\n docs: [\n \"the account's authority\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"market\",\n docs: [\n \"the account's authority\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"masterAccount\",\n docs: [\n \"the master account pubkey\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"makerBaseVolume\",\n docs: [\n \"the accumulated maker base token volume\"\n ],\n type: \"u64\"\n },\n {\n name: \"makerQuoteVolume\",\n docs: [\n \"the accumulated maker quote token volume\"\n ],\n type: \"u64\"\n },\n {\n name: \"takerBaseVolume\",\n docs: [\n \"the accumulated taker base token volume\"\n ],\n type: \"u64\"\n },\n {\n name: \"takerQuoteVolume\",\n docs: [\n \"the accumulated taker quote token volume\"\n ],\n type: \"u64\"\n },\n {\n name: \"baseTokenFree\",\n docs: [\n \"the amount of base token free\"\n ],\n type: {\n array: [\n \"u64\",\n 24\n ]\n }\n },\n {\n name: \"baseTokenLocked\",\n docs: [\n \"the amount of base token locked\"\n ],\n type: {\n array: [\n \"u64\",\n 24\n ]\n }\n },\n {\n name: \"quoteTokenFree\",\n docs: [\n \"the amount of quote token free\"\n ],\n type: {\n array: [\n \"u64\",\n 24\n ]\n }\n },\n {\n name: \"quoteTokenLocked\",\n docs: [\n \"the amount of quote token locked in orders\"\n ],\n type: {\n array: [\n \"u64\",\n 24\n ]\n }\n },\n {\n name: \"openOrders\",\n docs: [\n \"the open orders in this account\"\n ],\n type: {\n array: [\n {\n defined: \"OpenOrder\"\n },\n 128\n ]\n }\n }\n ]\n }\n },\n {\n name: \"PoolNode\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"cacheIndex\",\n docs: [\n \"the index of the cache for the pool that this node belongs to\"\n ],\n type: \"u16\"\n },\n {\n name: \"vaultSignerSeed\",\n docs: [\n \"the bump seed\"\n ],\n type: {\n array: [\n \"u8\",\n 1\n ]\n }\n },\n {\n name: \"nodeNumber\",\n docs: [\n \"the number of the node, also used as a seed for the pool node pda\"\n ],\n type: \"u8\"\n },\n {\n name: \"operatingStatus\",\n type: {\n defined: \"OperatingStatus\"\n }\n },\n {\n name: \"padding1\",\n type: {\n array: [\n \"u8\",\n 11\n ]\n }\n },\n {\n name: \"selfAddress\",\n docs: [\n \"the pool node's address, used as a seed for the vault signer\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"authority\",\n docs: [\n \"the authority over this account\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"cache\",\n docs: [\n \"the cache account\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"pool\",\n docs: [\n \"the pool this node belongs to\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"tokenMint\",\n docs: [\n \"the node's token mint\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"tokenVault\",\n docs: [\n \"the node's token vault\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"vaultSigner\",\n docs: [\n \"the node's vault signer\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"deposits\",\n docs: [\n \"the amount of deposits\"\n ],\n type: \"i128\"\n },\n {\n name: \"borrows\",\n docs: [\n \"the amount of borrows\"\n ],\n type: \"i128\"\n },\n {\n name: \"accumBorrows\",\n docs: [\n \"accumulated borrows\"\n ],\n type: \"i128\"\n },\n {\n name: \"accumRepays\",\n docs: [\n \"accumulated repays\"\n ],\n type: \"i128\"\n },\n {\n name: \"protocolFees\",\n docs: [\n \"protocol fees accumulated so far\"\n ],\n type: \"u64\"\n },\n {\n name: \"padding2\",\n type: {\n array: [\n \"u64\",\n 1\n ]\n }\n }\n ]\n }\n },\n {\n name: \"Pool\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"bumpSeed\",\n docs: [\n \"the bump seed\"\n ],\n type: {\n array: [\n \"u8\",\n 1\n ]\n }\n },\n {\n name: \"operatingStatus\",\n docs: [\n \"the pool's operating status\"\n ],\n type: {\n defined: \"OperatingStatus\"\n }\n },\n {\n name: \"padding1\",\n type: {\n array: [\n \"u8\",\n 14\n ]\n }\n },\n {\n name: \"poolName\",\n docs: [\n \"the name of the pool, which is also used as a seed\"\n ],\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"config\",\n docs: [\n \"the pool config\"\n ],\n type: {\n defined: \"PoolConfig\"\n }\n },\n {\n name: \"authority\",\n docs: [\n \"the authority over this account\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"tokenMint\",\n docs: [\n \"the address of the token mint this pool represents\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"padding2\",\n type: {\n array: [\n \"u64\",\n 4\n ]\n }\n },\n {\n name: \"oracleProducts\",\n docs: [\n \"the oracle products account\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"dexMarket\",\n docs: [\n \"the dex market for this pool\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"cache\",\n docs: [\n \"the price cache account\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"padding3\",\n type: {\n array: [\n \"u64\",\n 8\n ]\n }\n },\n {\n name: \"deposits\",\n docs: [\n \"the amount of deposits across all nodes\"\n ],\n type: \"i128\"\n },\n {\n name: \"borrows\",\n docs: [\n \"the amount of borrows across all nodes\"\n ],\n type: \"i128\"\n },\n {\n name: \"depositIndex\",\n docs: [\n \"the deposit index\"\n ],\n type: \"i128\"\n },\n {\n name: \"borrowIndex\",\n docs: [\n \"the borrow index\"\n ],\n type: \"i128\"\n },\n {\n name: \"accumDepositInterestPayment\",\n docs: [\n \"accumulated deposit interest payments denominated in quote currency\"\n ],\n type: \"i128\"\n },\n {\n name: \"accumBorrowInterestPayment\",\n docs: [\n \"accumulated borrow interest payments denominated in quote currency\"\n ],\n type: \"i128\"\n },\n {\n name: \"indexUpdatedAt\",\n docs: [\n \"timestamp of the last index update\"\n ],\n type: \"u64\"\n },\n {\n name: \"protocolFees\",\n docs: [\n \"protocol fees accumulated so far\"\n ],\n type: \"u64\"\n },\n {\n name: \"insuranceFund\",\n docs: [\n \"the insurance fund for this pool\"\n ],\n type: \"u64\"\n },\n {\n name: \"padding4\",\n type: {\n array: [\n \"u64\",\n 12\n ]\n }\n },\n {\n name: \"nodes\",\n type: {\n array: [\n {\n defined: \"NodeInfo\"\n },\n 24\n ]\n }\n }\n ]\n }\n },\n {\n name: \"PriceHistory\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"market\",\n docs: [\n \"market this price history is for\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"data\",\n docs: [\n \"array of price infos.\"\n ],\n type: {\n array: [\n {\n defined: \"PriceWithTs\"\n },\n 14400\n ]\n }\n },\n {\n name: \"config\",\n type: {\n defined: \"PriceHistoryConfig\"\n }\n },\n {\n name: \"longerHead\",\n docs: [\n \"head of prices for longer time horizon.\"\n ],\n type: \"u16\"\n },\n {\n name: \"shorterHead\",\n docs: [\n \"head of prices for shorter time horizon.\"\n ],\n type: \"u16\"\n },\n {\n name: \"tail\",\n docs: [\n \"tail of prices(most recently added price).\"\n ],\n type: \"u16\"\n },\n {\n name: \"padding1\",\n type: \"u16\"\n },\n {\n name: \"padding2\",\n type: {\n array: [\n \"u64\",\n 8\n ]\n }\n }\n ]\n }\n },\n {\n name: \"CypherAccount\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"bumpSeed\",\n docs: [\n \"the bump seed\"\n ],\n type: {\n array: [\n \"u8\",\n 1\n ]\n }\n },\n {\n name: \"accountNumberSeed\",\n docs: [\n \"the account number seed\"\n ],\n type: {\n array: [\n \"u8\",\n 1\n ]\n }\n },\n {\n name: \"accountType\",\n docs: [\n \"the account type\"\n ],\n type: {\n defined: \"AccountType\"\n }\n },\n {\n name: \"feeTier\",\n docs: [\n \"the fee tier of this account\"\n ],\n type: \"u8\"\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 12\n ]\n }\n },\n {\n name: \"clearing\",\n docs: [\n \"the clearing this account belongs to\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"authority\",\n docs: [\n \"the account's authority, should match sub accounts authority\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"delegate\",\n docs: [\n \"the account's delegate\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"subAccountCaches\",\n docs: [\n \"the sub account cache\"\n ],\n type: {\n array: [\n {\n defined: \"SubAccountCache\"\n },\n 24\n ]\n }\n },\n {\n name: \"updatedAt\",\n docs: [\n \"slot of the last account update\"\n ],\n type: \"u64\"\n },\n {\n name: \"padding2\",\n type: {\n array: [\n \"u8\",\n 8\n ]\n }\n }\n ]\n }\n },\n {\n name: \"CypherSubAccount\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"bumpSeed\",\n docs: [\n \"the bump seed\"\n ],\n type: {\n array: [\n \"u8\",\n 1\n ]\n }\n },\n {\n name: \"accountNumberSeed\",\n docs: [\n \"the account number seed\"\n ],\n type: {\n array: [\n \"u8\",\n 1\n ]\n }\n },\n {\n name: \"marginingType\",\n docs: [\n \"the margining type of this account\"\n ],\n type: {\n defined: \"SubAccountMargining\"\n }\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 13\n ]\n }\n },\n {\n name: \"accountAlias\",\n docs: [\n \"the alias of the account\"\n ],\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"clearing\",\n docs: [\n \"the associated clearing\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"masterAccount\",\n docs: [\n \"the master account\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"authority\",\n docs: [\n \"the authority\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"delegate\",\n docs: [\n \"the delegate\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"updatedAt\",\n docs: [\n \"the slot of the last update of this account\"\n ],\n type: \"u64\"\n },\n {\n name: \"claimableRewards\",\n docs: [\n \"the amount of claimable liquidity mining rewards\"\n ],\n type: \"u64\"\n },\n {\n name: \"padding2\",\n type: {\n array: [\n \"u64\",\n 7\n ]\n }\n },\n {\n name: \"padding3\",\n type: {\n array: [\n \"u8\",\n 8\n ]\n }\n },\n {\n name: \"positions\",\n docs: [\n \"the positions of this sub account\"\n ],\n type: {\n array: [\n {\n defined: \"PositionSlot\"\n },\n 24\n ]\n }\n }\n ]\n }\n }\n ],\n types: [\n {\n name: \"LiquidityMiningArgs\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"rate\",\n docs: [\n \"the rate that is used to convert liquidity points to the LM reward token\"\n ],\n type: \"i128\"\n },\n {\n name: \"maxDepthBps\",\n docs: [\n \"max depth on the book in bps\"\n ],\n type: \"i128\"\n },\n {\n name: \"periodStart\",\n docs: [\n \"timestamp of the start of the liquidity mining incentive period\"\n ],\n type: \"u64\"\n },\n {\n name: \"targetPeriodLength\",\n docs: [\n \"target time length for a liquidity mining period\"\n ],\n type: \"u64\"\n },\n {\n name: \"tokensLeft\",\n docs: [\n \"tokens left for this period.\"\n ],\n type: \"u64\"\n },\n {\n name: \"tokensPerPeriod\",\n docs: [\n \"total amount of tokens allocated for a given period\"\n ],\n type: \"u64\"\n },\n {\n name: \"tokenMint\",\n docs: [\n \"the token mint of the token being used for rewards\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"minRateAdj\",\n docs: [\n \"the minimum rate adjustment\"\n ],\n type: \"u64\"\n },\n {\n name: \"maxRateAdj\",\n docs: [\n \"the maximum rate adjusment\"\n ],\n type: \"u64\"\n },\n {\n name: \"sizeCutoff\",\n docs: [\n \"the size cut off for rewards\"\n ],\n type: \"u64\"\n },\n {\n name: \"tokenDecimals\",\n docs: [\n \"the decimals of the token being rewarded\"\n ],\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"FeeTierArgs\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"balance\",\n docs: [\n \"the token balance necessary for this tier\"\n ],\n type: \"u64\"\n },\n {\n name: \"tier\",\n docs: [\n \"the tier identifier, should start at 1 up to 10\"\n ],\n type: \"u8\"\n },\n {\n name: \"makerBps\",\n docs: [\n \"the maker fee in bps\",\n \"i.e, if this value is not zero, the rebate bps field can't be positive\"\n ],\n type: \"u8\"\n },\n {\n name: \"takerBps\",\n docs: [\n \"the taker fee in bps\"\n ],\n type: \"u8\"\n },\n {\n name: \"rebateBps\",\n docs: [\n \"the maker rebate in bps\",\n \"i.e, if this value is positive then the maker bps field should be zero\"\n ],\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"CreateOracleProductsArgs\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"productsType\",\n docs: [\n \"the products type\"\n ],\n type: {\n defined: \"ProductsType\"\n }\n },\n {\n name: \"numProducts\",\n docs: [\n \"the number of products that compose the oracle price feed\"\n ],\n type: \"u8\"\n },\n {\n name: \"maxConfidenceInterval\",\n docs: [\n \"the maxmimum confidence interval\"\n ],\n type: \"f64\"\n },\n {\n name: \"weights\",\n docs: [\n \"the weights of those products\"\n ],\n type: {\n vec: \"u16\"\n }\n },\n {\n name: \"symbol\",\n docs: [\n 'the symbol of this asset, i.e \"SOL\"'\n ],\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n name: \"CreateClearingArgs\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"clearingNumber\",\n docs: [\n \"the clearing number, which is also a seed for the clearing to be a signer\"\n ],\n type: \"u8\"\n },\n {\n name: \"bump\",\n docs: [\n \"the bump of the clearing's program derived address\"\n ],\n type: \"u8\"\n },\n {\n name: \"maintMargin\",\n docs: [\n \"the maintenance margin\"\n ],\n type: \"u8\"\n },\n {\n name: \"initMargin\",\n docs: [\n \"the initialization margin\"\n ],\n type: \"u8\"\n },\n {\n name: \"targetMargin\",\n docs: [\n \"the target margin used by liquidators\"\n ],\n type: \"u8\"\n },\n {\n name: \"liqLiqorFee\",\n docs: [\n \"the liquidation fee bonus for the liquidator\"\n ],\n type: \"u8\"\n },\n {\n name: \"liqInsuranceFee\",\n docs: [\n \"the liquidation fee for the insurance fund\"\n ],\n type: \"u8\"\n },\n {\n name: \"feeMint\",\n docs: [\n \"the fee mint\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"clearingType\",\n docs: [\n \"the clearing type\"\n ],\n type: {\n defined: \"ClearingType\"\n }\n },\n {\n name: \"feeTiers\",\n docs: [\n \"fee tier config\"\n ],\n type: {\n vec: {\n defined: \"FeeTierArgs\"\n }\n }\n }\n ]\n }\n },\n {\n name: \"CreatePerpetualMarketArgs\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"marketType\",\n docs: [\n \"the type of the market\"\n ],\n type: {\n defined: \"MarketType\"\n }\n },\n {\n name: \"marketBump\",\n docs: [\n \"the market's bump\"\n ],\n type: \"u8\"\n },\n {\n name: \"initAssetWeight\",\n docs: [\n \"the weight of this market's positions as an asset for initialization purposes\"\n ],\n type: \"u8\"\n },\n {\n name: \"initLiabWeight\",\n docs: [\n \"the weight of this market's positions as a liability for initialization purposes\"\n ],\n type: \"u8\"\n },\n {\n name: \"maintAssetWeight\",\n docs: [\n \"the weight of this market's positions as an asset for maintenance purposes\"\n ],\n type: \"u8\"\n },\n {\n name: \"maintLiabWeight\",\n docs: [\n \"the weight of this market's positions as a liability for maintenance purposes\"\n ],\n type: \"u8\"\n },\n {\n name: \"minBaseOrderSize\",\n docs: [\n \"the minimum order size in the base token\"\n ],\n type: \"u64\"\n },\n {\n name: \"tickSize\",\n docs: [\n \"the tick size of the market\"\n ],\n type: \"u64\"\n },\n {\n name: \"baseMultiplier\",\n docs: [\n \"the base multiplier for the market\"\n ],\n type: \"u64\"\n },\n {\n name: \"quoteMultiplier\",\n docs: [\n \"the quote multiplier for the market\"\n ],\n type: \"u64\"\n },\n {\n name: \"impactQuantity\",\n docs: [\n \"the impact quantity used when getting bids and asks to calculate book mid price\"\n ],\n type: \"u64\"\n },\n {\n name: \"minFunding\",\n docs: [\n \"the minimum funding rate for this market, in percentage\"\n ],\n type: \"i8\"\n },\n {\n name: \"maxFunding\",\n docs: [\n \"the maximum funding rate for this market, in percentage\"\n ],\n type: \"i8\"\n },\n {\n name: \"maxBaseOrderSize\",\n docs: [\n \"the maximum order base size for non-postOnly orders\"\n ],\n type: \"u64\"\n },\n {\n name: \"maxQuoteOrderSize\",\n docs: [\n \"the maximum order quote size for non-postOnly orders\"\n ],\n type: \"u64\"\n },\n {\n name: \"decimals\",\n docs: [\n \"the decimals used for the derivative asset positions\"\n ],\n type: \"u8\"\n },\n {\n name: \"marketName\",\n docs: [\n `the market's ticker/name, i.e \"SOL-PERP\"`\n ],\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n name: \"CreateFuturesMarketArgs\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"marketType\",\n docs: [\n \"the type of the market\"\n ],\n type: {\n defined: \"MarketType\"\n }\n },\n {\n name: \"deliveryType\",\n docs: [\n \"the type of settlement\"\n ],\n type: {\n defined: \"SettlementType\"\n }\n },\n {\n name: \"expiresAt\",\n docs: [\n \"the timestamp at which the market expires\"\n ],\n type: \"u64\"\n },\n {\n name: \"activatesAt\",\n docs: [\n \"the timestamp at which the market activates\"\n ],\n type: \"u64\"\n },\n {\n name: \"tokenSupply\",\n docs: [\n \"the token supply of the derivative asset\"\n ],\n type: \"u64\"\n },\n {\n name: \"marketBump\",\n docs: [\n \"the market's bump\"\n ],\n type: \"u8\"\n },\n {\n name: \"initAssetWeight\",\n docs: [\n \"the weight of this market's positions as an asset for initialization purposes\"\n ],\n type: \"u8\"\n },\n {\n name: \"initLiabWeight\",\n docs: [\n \"the weight of this market's positions as a liability for initialization purposes\"\n ],\n type: \"u8\"\n },\n {\n name: \"maintAssetWeight\",\n docs: [\n \"the weight of this market's positions as an asset for maintenance purposes\"\n ],\n type: \"u8\"\n },\n {\n name: \"maintLiabWeight\",\n docs: [\n \"the weight of this market's positions as a liability for maintenance purposes\"\n ],\n type: \"u8\"\n },\n {\n name: \"twapLongerTimeHorizon\",\n docs: [\n \"the twap's longer time horizon\"\n ],\n type: \"u64\"\n },\n {\n name: \"twapShorterTimeHorizon\",\n docs: [\n \"the twap's shorter time horizon\"\n ],\n type: \"u64\"\n },\n {\n name: \"twapPriceCollectionTick\",\n docs: [\n \"the twap price collection tick\"\n ],\n type: \"u64\"\n },\n {\n name: \"minBaseOrderSize\",\n docs: [\n \"the minimum order size in the base token\"\n ],\n type: \"u64\"\n },\n {\n name: \"tickSize\",\n docs: [\n \"the tick size of the market\"\n ],\n type: \"u64\"\n },\n {\n name: \"baseMultiplier\",\n docs: [\n \"the base multiplier for the market\"\n ],\n type: \"u64\"\n },\n {\n name: \"quoteMultiplier\",\n docs: [\n \"the quote multiplier for the market\"\n ],\n type: \"u64\"\n },\n {\n name: \"maxBaseOrderSize\",\n docs: [\n \"the maximum order base size for non-postOnly orders\"\n ],\n type: \"u64\"\n },\n {\n name: \"maxQuoteOrderSize\",\n docs: [\n \"the maximum order quote size for non-postOnly orders\"\n ],\n type: \"u64\"\n },\n {\n name: \"decimals\",\n docs: [\n \"the decimals used for the derivative asset positions\"\n ],\n type: \"u8\"\n },\n {\n name: \"marketName\",\n docs: [\n `the market's ticker/name, i.e \"SOL-09/30/22\" for a sept expiry dated future`\n ],\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n name: \"CreatePoolArgs\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"vaultSignerBump\",\n docs: [\n \"the vault signer bump\"\n ],\n type: \"u8\"\n },\n {\n name: \"poolBump\",\n docs: [\n \"the pool bump\"\n ],\n type: \"u8\"\n },\n {\n name: \"optimalApr\",\n docs: [\n \"the optimal apr ratio for the pool\"\n ],\n type: \"u16\"\n },\n {\n name: \"optimalUtil\",\n docs: [\n \"the optimal utilization for the pool\"\n ],\n type: \"u16\"\n },\n {\n name: \"maxApr\",\n docs: [\n \"the max apr for the pool\"\n ],\n type: \"u16\"\n },\n {\n name: \"decimals\",\n docs: [\n \"the decimals of the spl token mint associated with the pool\"\n ],\n type: \"u8\"\n },\n {\n name: \"initAssetWeight\",\n docs: [\n \"the weight of this token as an asset for initialization purposes\"\n ],\n type: \"u8\"\n },\n {\n name: \"initLiabWeight\",\n docs: [\n \"the weight of this token as a liability for initialization purposes\"\n ],\n type: \"u8\"\n },\n {\n name: \"maintAssetWeight\",\n docs: [\n \"the weight of this token as an asset for maintenance purposes\"\n ],\n type: \"u8\"\n },\n {\n name: \"maintLiabWeight\",\n docs: [\n \"the weight of this token as a liability for maintenance purposes\"\n ],\n type: \"u8\"\n },\n {\n name: \"poolName\",\n docs: [\n `the pool's ticker/name, i.e \"SOL\"`\n ],\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n name: \"NewSpotOrderArgs\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"side\",\n docs: [\n \"the side of the order\"\n ],\n type: {\n defined: \"Side\"\n }\n },\n {\n name: \"limitPrice\",\n docs: [\n \"the limit price for the order\"\n ],\n type: \"u64\"\n },\n {\n name: \"maxCoinQty\",\n docs: [\n \"the base quantity to buy or sell\"\n ],\n type: \"u64\"\n },\n {\n name: \"maxNativePcQtyIncludingFees\",\n docs: [\n \"the max quote quanity to receive or pay\"\n ],\n type: \"u64\"\n },\n {\n name: \"orderType\",\n docs: [\n \"the order type\"\n ],\n type: {\n defined: \"OrderType\"\n }\n },\n {\n name: \"selfTradeBehavior\",\n docs: [\n \"the self trade behavior\"\n ],\n type: {\n defined: \"SelfTradeBehavior\"\n }\n },\n {\n name: \"clientOrderId\",\n docs: [\n \"the client order id\"\n ],\n type: \"u64\"\n },\n {\n name: \"limit\",\n docs: [\n \"the maximum number of orders to be matched against\"\n ],\n type: \"u16\"\n }\n ]\n }\n },\n {\n name: \"NewDerivativeOrderArgs\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"side\",\n docs: [\n \"the side of the order\"\n ],\n type: {\n defined: \"Side\"\n }\n },\n {\n name: \"limitPrice\",\n docs: [\n \"the limit price for the order (as FP32)\"\n ],\n type: \"u64\"\n },\n {\n name: \"maxBaseQty\",\n docs: [\n \"the base quantity to buy or sell\"\n ],\n type: \"u64\"\n },\n {\n name: \"maxQuoteQty\",\n docs: [\n \"the max quote quanity to receive or pay\"\n ],\n type: \"u64\"\n },\n {\n name: \"orderType\",\n docs: [\n \"the order type\"\n ],\n type: {\n defined: \"DerivativeOrderType\"\n }\n },\n {\n name: \"clientOrderId\",\n docs: [\n \"the client order id\"\n ],\n type: \"u64\"\n },\n {\n name: \"limit\",\n docs: [\n \"the maximum number of orders to be matched against\"\n ],\n type: \"u16\"\n },\n {\n name: \"maxTs\",\n docs: [\n \"the time in force timestamp for this order\"\n ],\n type: \"u64\"\n }\n ]\n }\n },\n {\n name: \"CancelOrderArgs\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"orderId\",\n docs: [\n \"the order id\"\n ],\n type: \"u128\"\n },\n {\n name: \"side\",\n docs: [\n \"the side of the order\"\n ],\n type: {\n defined: \"Side\"\n }\n },\n {\n name: \"isClientId\",\n docs: [\n \"whether the given order id is a a client id\"\n ],\n type: \"bool\"\n }\n ]\n }\n },\n {\n name: \"Cache\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"oracleProducts\",\n docs: [\n \"the oracle products account that is used to derive this price feed\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"oraclePrice\",\n docs: [\n \"the latest price\"\n ],\n type: \"i128\"\n },\n {\n name: \"marketPrice\",\n docs: [\n \"the twap price for the futures market\"\n ],\n type: \"i128\"\n },\n {\n name: \"updatedAt\",\n docs: [\n \"the slot at which this cache was last updated\"\n ],\n type: \"u64\"\n },\n {\n name: \"padding1\",\n type: {\n array: [\n \"u8\",\n 8\n ]\n }\n },\n {\n name: \"depositIndex\",\n docs: [\n \"the deposit index of the spot token\"\n ],\n type: \"i128\"\n },\n {\n name: \"borrowIndex\",\n docs: [\n \"the borrow index of the spot token\"\n ],\n type: \"i128\"\n },\n {\n name: \"spotInitAssetWeight\",\n docs: [\n \"the init asset weight of the spot token\"\n ],\n type: \"u8\"\n },\n {\n name: \"spotMaintAssetWeight\",\n docs: [\n \"the maint asset weight of the spot token\"\n ],\n type: \"u8\"\n },\n {\n name: \"spotInitLiabWeight\",\n docs: [\n \"the init liab weight of the spot token\"\n ],\n type: \"u8\"\n },\n {\n name: \"spotMaintLiabWeight\",\n docs: [\n \"the maint liab weight of the spot token\"\n ],\n type: \"u8\"\n },\n {\n name: \"futuresInitAssetWeight\",\n docs: [\n \"the init asset weight of the futures position\"\n ],\n type: \"u8\"\n },\n {\n name: \"futuresMaintAssetWeight\",\n docs: [\n \"the maint asset weight of the futures position\"\n ],\n type: \"u8\"\n },\n {\n name: \"futuresInitLiabWeight\",\n docs: [\n \"the init liab weight of the futures position\"\n ],\n type: \"u8\"\n },\n {\n name: \"futuresMaintLiabWeight\",\n docs: [\n \"the maint liab weight of the futures position\"\n ],\n type: \"u8\"\n },\n {\n name: \"perpInitAssetWeight\",\n docs: [\n \"the init asset weight of the perp position\"\n ],\n type: \"u8\"\n },\n {\n name: \"perpMaintAssetWeight\",\n docs: [\n \"the maint asset weight of the perp position\"\n ],\n type: \"u8\"\n },\n {\n name: \"perpInitLiabWeight\",\n docs: [\n \"the init liab weight of the perp position\"\n ],\n type: \"u8\"\n },\n {\n name: \"perpMaintLiabWeight\",\n docs: [\n \"the maint liab weight of the perp position\"\n ],\n type: \"u8\"\n },\n {\n name: \"decimals\",\n docs: [\n \"the decimals of the spl token traded on the spot market and available for deposit\"\n ],\n type: \"u8\"\n },\n {\n name: \"futuresDecimals\",\n docs: [\n \"the decimals of derivative asset for futures markets\"\n ],\n type: \"u8\"\n },\n {\n name: \"perpDecimals\",\n docs: [\n \"the decimals of derivative asset for perpetual markets\"\n ],\n type: \"u8\"\n },\n {\n name: \"padding2\",\n type: {\n array: [\n \"u8\",\n 1\n ]\n }\n }\n ]\n }\n },\n {\n name: \"FeeTier\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"balance\",\n docs: [\n \"the balance necessary\"\n ],\n type: \"u64\"\n },\n {\n name: \"makerBps\",\n docs: [\n \"the maker fee in bps\",\n \"i.e, this value should be zero whenever the maker rebate is supposed to be positive\"\n ],\n type: \"u8\"\n },\n {\n name: \"takerBps\",\n docs: [\n \"the taker fee in bps\"\n ],\n type: \"u8\"\n },\n {\n name: \"rebateBps\",\n docs: [\n \"the maker rebate in bps\",\n \"i.e this value should only be positive whenever the maker rate itself is zero\"\n ],\n type: \"u8\"\n },\n {\n name: \"tier\",\n docs: [\n \"the tier identifier, should start at 1\"\n ],\n type: \"u8\"\n },\n {\n name: \"padding1\",\n type: {\n array: [\n \"u8\",\n 4\n ]\n }\n }\n ]\n }\n },\n {\n name: \"ClearingConfig\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"maintMargin\",\n docs: [\n \"the maintenance margin\"\n ],\n type: \"u8\"\n },\n {\n name: \"initMargin\",\n docs: [\n \"the initialization margin\"\n ],\n type: \"u8\"\n },\n {\n name: \"targetMargin\",\n docs: [\n \"the target margin used by liquidators\"\n ],\n type: \"u8\"\n },\n {\n name: \"liqLiqorFee\",\n docs: [\n \"the liquidation fee bonus for the liquidator\"\n ],\n type: \"u8\"\n },\n {\n name: \"liqInsuranceFee\",\n docs: [\n \"the liquidation fee for the insurance fund\"\n ],\n type: \"u8\"\n },\n {\n name: \"padding1\",\n type: {\n array: [\n \"u8\",\n 3\n ]\n }\n }\n ]\n }\n },\n {\n name: \"MarketConfig\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"signerSeeds\",\n docs: [\n \"the signer seeds for this account\"\n ],\n type: {\n array: [\n \"u8\",\n 1\n ]\n }\n },\n {\n name: \"marketType\",\n docs: [\n \"the type of this market\"\n ],\n type: {\n defined: \"MarketType\"\n }\n },\n {\n name: \"settlementType\",\n docs: [\n \"the type of delivery for this market in case it is a futures market\"\n ],\n type: {\n defined: \"SettlementType\"\n }\n },\n {\n name: \"isActive\",\n docs: [\n \"whether the market is active\",\n \"i.e, in the case of a market being for physical delivery of the underlying asset\",\n \"the market cannot become active until the vault of the underlying asset being delivered has\",\n \"a balance equivalent to the token supply of the derivative asset\"\n ],\n type: \"bool\"\n },\n {\n name: \"cacheIndex\",\n docs: [\n \"the cache index for this market\"\n ],\n type: \"u16\"\n },\n {\n name: \"initAssetWeight\",\n docs: [\n \"the init asset weight of the pool's positions for margin calculations\"\n ],\n type: \"u8\"\n },\n {\n name: \"initLiabWeight\",\n docs: [\n \"the init liability weight of the pool's positions for margin calculations\"\n ],\n type: \"u8\"\n },\n {\n name: \"maintAssetWeight\",\n docs: [\n \"the maint asset weight of the pool's positions for margin calculations\"\n ],\n type: \"u8\"\n },\n {\n name: \"maintLiabWeight\",\n docs: [\n \"the maint liability weight of the pool's positions for margin calculations\"\n ],\n type: \"u8\"\n },\n {\n name: \"decimals\",\n docs: [\n \"the decimals used for the target oracle price of this pool's asset\"\n ],\n type: \"u8\"\n },\n {\n name: \"operatingStatus\",\n docs: [\n \"the operating status of the market\"\n ],\n type: {\n defined: \"OperatingStatus\"\n }\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 4\n ]\n }\n }\n ]\n }\n },\n {\n name: \"LiquidityMiningInfo\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"tokenMint\",\n docs: [\n \"the token mint of the token being used for rewards\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"rate\",\n docs: [\n \"the rate that is used to convert liquidity points to the LM reward token\"\n ],\n type: \"i128\"\n },\n {\n name: \"maxDepthBps\",\n docs: [\n \"max depth on the book in bps\"\n ],\n type: \"i128\"\n },\n {\n name: \"periodStart\",\n docs: [\n \"timestamp of the start of the liquidity mining incentive period\"\n ],\n type: \"u64\"\n },\n {\n name: \"targetPeriodLength\",\n docs: [\n \"target time length for a liquidity mining period\"\n ],\n type: \"u64\"\n },\n {\n name: \"tokensLeft\",\n docs: [\n \"tokens left for this period.\"\n ],\n type: \"u64\"\n },\n {\n name: \"tokensPerPeriod\",\n docs: [\n \"total amount of tokens allocated for a given period\"\n ],\n type: \"u64\"\n },\n {\n name: \"minRateAdj\",\n docs: [\n \"the minimum rate adjustment\"\n ],\n type: \"u64\"\n },\n {\n name: \"maxRateAdj\",\n docs: [\n \"the maximum rate adjusment\"\n ],\n type: \"u64\"\n },\n {\n name: \"sizeCutoff\",\n docs: [\n \"the size cut off for rewards\"\n ],\n type: \"u64\"\n },\n {\n name: \"tokenDecimals\",\n docs: [\n \"the decimals of the token being rewarded\"\n ],\n type: \"u8\"\n },\n {\n name: \"padding1\",\n type: {\n array: [\n \"u8\",\n 7\n ]\n }\n }\n ]\n }\n },\n {\n name: \"AgnosticMarket\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"config\",\n docs: [\n \"the config of the market\"\n ],\n type: {\n defined: \"MarketConfig\"\n }\n },\n {\n name: \"marketName\",\n docs: [\n \"the name of the market, which is also used as a seed\"\n ],\n type: {\n array: [\n \"u8\",\n 32\n ]\n }\n },\n {\n name: \"orderbook\",\n docs: [\n \"the order book for this market\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"bids\",\n docs: [\n \"the bids account for this market\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"asks\",\n docs: [\n \"the asks account for this market\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"eventQueue\",\n docs: [\n \"the asks account for this market\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"authority\",\n docs: [\n \"the authority of the market\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"priceHistory\",\n docs: [\n \"the price history account for on-chain twap\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"oracleProducts\",\n docs: [\n \"the oracle products account\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"padding1\",\n type: {\n array: [\n \"u64\",\n 8\n ]\n }\n },\n {\n name: \"cache\",\n docs: [\n \"the cache account\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"quotePool\",\n docs: [\n \"the quote pool\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"padding2\",\n type: {\n array: [\n \"u64\",\n 8\n ]\n }\n },\n {\n name: \"padding3\",\n type: {\n array: [\n \"u64\",\n 2\n ]\n }\n },\n {\n name: \"baseVolume\",\n docs: [\n \"the market's total historical volume in base token\"\n ],\n type: \"u64\"\n },\n {\n name: \"quoteVolume\",\n docs: [\n \"the market's total historical volume in quote token\"\n ],\n type: \"u64\"\n },\n {\n name: \"liquidityMiningInfo\",\n docs: [\n \"the current liquidity mining parameters\"\n ],\n type: {\n defined: \"LiquidityMiningInfo\"\n }\n },\n {\n name: \"minBaseOrderSize\",\n docs: [\n \"the market's minimum allowed order size in base token amount\"\n ],\n type: \"u64\"\n },\n {\n name: \"tickSize\",\n docs: [\n \"the tick size of the market\"\n ],\n type: \"u64\"\n },\n {\n name: \"baseMultiplier\",\n docs: [\n \"the base currency multiplier\"\n ],\n type: \"u64\"\n },\n {\n name: \"quoteMultiplier\",\n docs: [\n \"the quote currency multiplier\"\n ],\n type: \"u64\"\n },\n {\n name: \"protocolFees\",\n docs: [\n \"the currently accumulated trading fees\"\n ],\n type: \"u64\"\n },\n {\n name: \"insuranceFund\",\n docs: [\n \"the curently accumulated insurance fund for this market\"\n ],\n type: \"u64\"\n },\n {\n name: \"maxBaseOrderSize\",\n docs: [\n \"the maximum order base size for non-postOnly orders\"\n ],\n type: \"u64\"\n },\n {\n name: \"maxQuoteOrderSize\",\n docs: [\n \"the maximum order quote size for non-postOnly orders\"\n ],\n type: \"u64\"\n },\n {\n name: \"padding4\",\n type: {\n array: [\n \"u64\",\n 8\n ]\n }\n }\n ]\n }\n },\n {\n name: \"OpenOrder\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"side\",\n docs: [\n \"the side of the order\"\n ],\n type: {\n defined: \"Side\"\n }\n },\n {\n name: \"subAccountIdx\",\n docs: [\n \"the sub account idx\"\n ],\n type: \"u8\"\n },\n {\n name: \"orderType\",\n docs: [\n \"the type of the order\"\n ],\n type: {\n defined: \"DerivativeOrderType\"\n }\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 5\n ]\n }\n },\n {\n name: \"timestamp\",\n docs: [\n \"the timestamp that the order was posted\"\n ],\n type: \"u64\"\n },\n {\n name: \"clientOrderId\",\n docs: [\n \"the client's order id\"\n ],\n type: \"u64\"\n },\n {\n name: \"orderId\",\n docs: [\n \"the order id after being posted on the book\"\n ],\n type: \"u128\"\n }\n ]\n }\n },\n {\n name: \"NodeInfo\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"poolNode\",\n docs: [\n \"the node's pubkey\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"nodeVault\",\n docs: [\n \"the node's vault pubkey\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"deposits\",\n docs: [\n \"the deposits in the node\"\n ],\n type: \"i128\"\n },\n {\n name: \"borrows\",\n docs: [\n \"the borrows in the node\"\n ],\n type: \"i128\"\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u64\",\n 4\n ]\n }\n }\n ]\n }\n },\n {\n name: \"PoolConfig\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"optimalUtil\",\n docs: [\n \"optimal utilization ratio for this token\"\n ],\n type: \"u16\"\n },\n {\n name: \"optimalApr\",\n docs: [\n \"optimal apr for this token\"\n ],\n type: \"u16\"\n },\n {\n name: \"maxApr\",\n docs: [\n \"maximum apr for this token\"\n ],\n type: \"u16\"\n },\n {\n name: \"cacheIndex\",\n docs: [\n \"the index of this pool in the cache\"\n ],\n type: \"u16\"\n },\n {\n name: \"decimals\",\n docs: [\n \"the decimals of the spl token mint associated with the pool\"\n ],\n type: \"u8\"\n },\n {\n name: \"initAssetWeight\",\n docs: [\n \"the init asset weight of the pool's positions for margin calculations\"\n ],\n type: \"u8\"\n },\n {\n name: \"initLiabWeight\",\n docs: [\n \"the init liability weight of the pool's positions for margin calculations\"\n ],\n type: \"u8\"\n },\n {\n name: \"maintAssetWeight\",\n docs: [\n \"the maint asset weight of the pool's positions for margin calculations\"\n ],\n type: \"u8\"\n },\n {\n name: \"maintLiabWeight\",\n docs: [\n \"the maint liability weight of the pool's positions for margin calculations\"\n ],\n type: \"u8\"\n },\n {\n name: \"padding2\",\n type: {\n array: [\n \"u8\",\n 3\n ]\n }\n },\n {\n name: \"padding3\",\n type: {\n array: [\n \"u64\",\n 2\n ]\n }\n }\n ]\n }\n },\n {\n name: \"PriceHistoryConfig\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"longerTimeHorizon\",\n type: \"u64\"\n },\n {\n name: \"shorterTimeHorizon\",\n type: \"u64\"\n },\n {\n name: \"priceCollectionTick\",\n type: \"u64\"\n }\n ]\n }\n },\n {\n name: \"PriceWithTs\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"price\",\n type: \"i128\"\n },\n {\n name: \"timestamp\",\n type: \"u64\"\n }\n ]\n }\n },\n {\n name: \"SubAccountCache\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"assetsValue\",\n docs: [\n \"the value of the assets of this account\"\n ],\n type: \"i128\"\n },\n {\n name: \"liabilitiesValue\",\n docs: [\n \"the value of the liabilities of this account\"\n ],\n type: \"i128\"\n },\n {\n name: \"cRatio\",\n docs: [\n \"the margin c-ratio of this sub account\"\n ],\n type: \"i128\"\n },\n {\n name: \"updatedAt\",\n docs: [\n \"slot of the last cache update\"\n ],\n type: \"u64\"\n },\n {\n name: \"margining\",\n docs: [\n \"the sub account margining\"\n ],\n type: {\n defined: \"SubAccountMargining\"\n }\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 7\n ]\n }\n },\n {\n name: \"subAccount\",\n docs: [\n \"the sub account\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"padding2\",\n type: {\n array: [\n \"u64\",\n 4\n ]\n }\n }\n ]\n }\n },\n {\n name: \"PositionSlot\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"spot\",\n docs: [\n \"the spot position\"\n ],\n type: {\n defined: \"SpotPosition\"\n }\n },\n {\n name: \"derivative\",\n docs: [\n \"the derivative position\"\n ],\n type: {\n defined: \"DerivativePosition\"\n }\n }\n ]\n }\n },\n {\n name: \"SpotPosition\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"tokenMint\",\n docs: [\n \"the token mint that this position pertains to\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"position\",\n docs: [\n \"the position denominated in the base token\",\n \"if this value is negative then the outstanding position is a short, otherwise it's a long\"\n ],\n type: \"i128\"\n },\n {\n name: \"openOrdersCache\",\n docs: [\n \"the open orders cache\"\n ],\n type: {\n defined: \"OpenOrdersCache\"\n }\n },\n {\n name: \"cacheIndex\",\n docs: [\n \"the index of this position in the cache\"\n ],\n type: \"u16\"\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 6\n ]\n }\n }\n ]\n }\n },\n {\n name: \"DerivativePosition\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"market\",\n docs: [\n \"the public key of the market that this position pertains to\"\n ],\n type: \"publicKey\"\n },\n {\n name: \"basePosition\",\n docs: [\n \"the position denominated in the base token\",\n \"if this value is negative then the outstanding position is a short, otherwise it's a long\"\n ],\n type: \"i128\"\n },\n {\n name: \"openOrdersCache\",\n docs: [\n \"the open orders cache\"\n ],\n type: {\n defined: \"OpenOrdersCache\"\n }\n },\n {\n name: \"longFundingSettled\",\n docs: [\n \"the long funding that has been settled for this position\"\n ],\n type: \"i128\"\n },\n {\n name: \"shortFundingSettled\",\n docs: [\n \"the short funding that has been settled for this position\"\n ],\n type: \"i128\"\n },\n {\n name: \"cacheIndex\",\n docs: [\n \"the index of this position in the cache\"\n ],\n type: \"u16\"\n },\n {\n name: \"marketType\",\n docs: [\n \"the type of market of this position\",\n \"\",\n \"this is necessary in order to fetch the appropriate weights\"\n ],\n type: {\n defined: \"MarketType\"\n }\n },\n {\n name: \"padding\",\n type: {\n array: [\n \"u8\",\n 5\n ]\n }\n }\n ]\n }\n },\n {\n name: \"OpenOrdersCache\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"coinTotal\",\n docs: [\n \"total amount of native base tokens in the open orders account, includes locked and free tokens\"\n ],\n type: \"u64\"\n },\n {\n name: \"coinFree\",\n docs: [\n \"amount of free native base tokens in the open orders account\"\n ],\n type: \"u64\"\n },\n {\n name: \"pcTotal\",\n docs: [\n \"total amount of native quote tokens in the open orders account, includes locked and free tokens\"\n ],\n type: \"u64\"\n },\n {\n name: \"pcFree\",\n docs: [\n \"amount of free native quote tokens in the open orders account\"\n ],\n type: \"u64\"\n },\n {\n name: \"referrerRebatesAccrued\",\n docs: [\n \"the amount of referrer rebates accrued, in native quote token\"\n ],\n type: \"u64\"\n }\n ]\n }\n },\n {\n name: \"OrderType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Limit\"\n },\n {\n name: \"ImmediateOrCancel\"\n },\n {\n name: \"PostOnly\"\n }\n ]\n }\n },\n {\n name: \"DerivativeOrderType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Limit\"\n },\n {\n name: \"ImmediateOrCancel\"\n },\n {\n name: \"FillOrKill\"\n },\n {\n name: \"PostOnly\"\n }\n ]\n }\n },\n {\n name: \"Side\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Bid\"\n },\n {\n name: \"Ask\"\n }\n ]\n }\n },\n {\n name: \"SelfTradeBehavior\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"DecrementTake\"\n },\n {\n name: \"AbortTransaction\"\n },\n {\n name: \"CancelProvide\"\n }\n ]\n }\n },\n {\n name: \"AccountAction\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Create\"\n },\n {\n name: \"Close\"\n },\n {\n name: \"SetDelegate\"\n }\n ]\n }\n },\n {\n name: \"SubAccountAction\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Create\"\n },\n {\n name: \"Close\"\n },\n {\n name: \"ChangeMarginingType\"\n }\n ]\n }\n },\n {\n name: \"ClearingAction\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Create\"\n },\n {\n name: \"Close\"\n },\n {\n name: \"SweepFee\"\n }\n ]\n }\n },\n {\n name: \"MarketAction\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Create\"\n },\n {\n name: \"Close\"\n },\n {\n name: \"StatusChange\"\n }\n ]\n }\n },\n {\n name: \"PoolAction\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Create\"\n },\n {\n name: \"AddNode\"\n },\n {\n name: \"RemoveNode\"\n },\n {\n name: \"StatusChange\"\n },\n {\n name: \"Close\"\n }\n ]\n }\n },\n {\n name: \"OrdersAccountAction\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Create\"\n },\n {\n name: \"Close\"\n }\n ]\n }\n },\n {\n name: \"ClearingType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Public\"\n },\n {\n name: \"Private\"\n }\n ]\n }\n },\n {\n name: \"WhitelistStatus\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Pending\"\n },\n {\n name: \"Active\"\n },\n {\n name: \"Revoked\"\n }\n ]\n }\n },\n {\n name: \"MarketType\",\n docs: [\n \"market types\"\n ],\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Default\"\n },\n {\n name: \"PairFuture\"\n },\n {\n name: \"PerpetualFuture\"\n },\n {\n name: \"PreIDO\"\n },\n {\n name: \"IndexFuture\"\n }\n ]\n }\n },\n {\n name: \"SettlementType\",\n docs: [\n \"settlement types for futures markets\"\n ],\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"CashSettled\"\n },\n {\n name: \"PhysicalDelivery\"\n }\n ]\n }\n },\n {\n name: \"ProductsType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Stub\"\n },\n {\n name: \"Pyth\"\n },\n {\n name: \"Switchboard\"\n }\n ]\n }\n },\n {\n name: \"MarginCollateralRatioType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Initialization\"\n },\n {\n name: \"Maintenance\"\n }\n ]\n }\n },\n {\n name: \"SubAccountMargining\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Cross\"\n },\n {\n name: \"Isolated\"\n }\n ]\n }\n },\n {\n name: \"AccountType\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Regular\"\n },\n {\n name: \"Whitelisted\"\n }\n ]\n }\n },\n {\n name: \"OperatingStatus\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Active\"\n },\n {\n name: \"ReduceOnly\"\n },\n {\n name: \"CancelOnly\"\n },\n {\n name: \"Halted\"\n }\n ]\n }\n }\n ],\n events: [\n {\n name: \"AccountActionLog\",\n fields: [\n {\n name: \"account\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"authority\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"delegate\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"action\",\n type: {\n defined: \"AccountAction\"\n },\n index: false\n }\n ]\n },\n {\n name: \"SubAccountActionLog\",\n fields: [\n {\n name: \"masterAccount\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"subAccount\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"authority\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"delegate\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"marginingType\",\n type: {\n defined: \"SubAccountMargining\"\n },\n index: false\n },\n {\n name: \"action\",\n type: {\n defined: \"SubAccountAction\"\n },\n index: false\n }\n ]\n },\n {\n name: \"ClearingActionLog\",\n fields: [\n {\n name: \"clearing\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"authority\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"feeMint\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"action\",\n type: {\n defined: \"ClearingAction\"\n },\n index: false\n }\n ]\n },\n {\n name: \"MarketActionLog\",\n fields: [\n {\n name: \"name\",\n type: \"bytes\",\n index: false\n },\n {\n name: \"market\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"orderbook\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"bids\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"asks\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"quotePool\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"marketType\",\n type: {\n defined: \"MarketType\"\n },\n index: false\n },\n {\n name: \"settlementType\",\n type: {\n defined: \"SettlementType\"\n },\n index: false\n },\n {\n name: \"tokenSupply\",\n type: \"u64\",\n index: false\n },\n {\n name: \"activatesAt\",\n type: \"u64\",\n index: false\n },\n {\n name: \"expiresAt\",\n type: \"u64\",\n index: false\n },\n {\n name: \"minBaseOrderSize\",\n type: \"u64\",\n index: false\n },\n {\n name: \"tickSize\",\n type: \"u64\",\n index: false\n },\n {\n name: \"decimals\",\n type: \"u8\",\n index: false\n },\n {\n name: \"action\",\n type: {\n defined: \"MarketAction\"\n },\n index: false\n }\n ]\n },\n {\n name: \"PoolActionLog\",\n fields: [\n {\n name: \"name\",\n type: \"bytes\",\n index: false\n },\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"poolNode\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"tokenMint\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"tokenVault\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"oracleProducts\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"dexMarket\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"optimalUtil\",\n type: \"u16\",\n index: false\n },\n {\n name: \"optimalApr\",\n type: \"u16\",\n index: false\n },\n {\n name: \"maxApr\",\n type: \"u16\",\n index: false\n },\n {\n name: \"decimals\",\n type: \"u8\",\n index: false\n },\n {\n name: \"action\",\n type: {\n defined: \"PoolAction\"\n },\n index: false\n }\n ]\n },\n {\n name: \"WhitelistCreationLog\",\n fields: [\n {\n name: \"clearing\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"whitelist\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"whitelisted\",\n type: \"publicKey\",\n index: false\n }\n ]\n },\n {\n name: \"OrdersAccountActionLog\",\n fields: [\n {\n name: \"openOrders\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"account\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"authority\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"action\",\n type: {\n defined: \"OrdersAccountAction\"\n },\n index: false\n }\n ]\n },\n {\n name: \"SettlePositionLog\",\n fields: [\n {\n name: \"masterAccount\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"subAccount\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"market\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"basePosition\",\n type: \"i128\",\n index: false\n },\n {\n name: \"settlementPrice\",\n type: \"i128\",\n index: false\n }\n ]\n },\n {\n name: \"LiquidatePositionLog\",\n fields: [\n {\n name: \"liqeeMasterAccount\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"liqeeSubAccount\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"liqorMasterAccount\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"liqorSubAccount\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"asset\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"liability\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"assetPrice\",\n type: \"i128\",\n index: false\n },\n {\n name: \"liabilityPrice\",\n type: \"i128\",\n index: false\n },\n {\n name: \"preAssetPosition\",\n type: \"i128\",\n index: false\n },\n {\n name: \"preLiabPosition\",\n type: \"i128\",\n index: false\n },\n {\n name: \"postAssetPosition\",\n type: \"i128\",\n index: false\n },\n {\n name: \"postLiabPosition\",\n type: \"i128\",\n index: false\n }\n ]\n },\n {\n name: \"DepositOrWithdrawLog\",\n fields: [\n {\n name: \"masterAccount\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"subAccount\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"pool\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"poolNode\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"tokenMint\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"tokenVault\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"amount\",\n type: \"u64\",\n index: false\n },\n {\n name: \"isDeposit\",\n type: \"bool\",\n index: false\n }\n ]\n },\n {\n name: \"OrderFillLog\",\n fields: [\n {\n name: \"market\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"maker\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"taker\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"subAccountIdx\",\n type: \"u8\",\n index: false\n },\n {\n name: \"coinQty\",\n type: \"u64\",\n index: false\n },\n {\n name: \"pcQty\",\n type: \"u64\",\n index: false\n },\n {\n name: \"side\",\n type: {\n defined: \"Side\"\n },\n index: false\n }\n ]\n },\n {\n name: \"FundingPaymentLog\",\n fields: [\n {\n name: \"market\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"account\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"subAccount\",\n type: \"publicKey\",\n index: false\n },\n {\n name: \"amount\",\n type: \"i128\",\n index: false\n }\n ]\n }\n ],\n errors: [\n {\n code: 6e3,\n name: \"InvalidSigner\",\n msg: \"invalid signer provided\"\n },\n {\n code: 6001,\n name: \"InvalidAuthority\",\n msg: \"the provided authority is invalid\"\n },\n {\n code: 6002,\n name: \"InvalidFuturesOrdersAccountAuthority\",\n msg: \"the provided futures orders account authority does not match\"\n },\n {\n code: 6003,\n name: \"InvalidArgument\",\n msg: \"invalid argument provided\"\n },\n {\n code: 6004,\n name: \"InvalidOracle\",\n msg: \"invalid oracle account provided\"\n },\n {\n code: 6005,\n name: \"InvalidOracleProducts\",\n msg: \"invalid oracle products account provided\"\n },\n {\n code: 6006,\n name: \"InvalidDepositAmountForDelivery\",\n msg: \"given deposit amount does not equal desired derivative token supply\"\n },\n {\n code: 6007,\n name: \"InvalidDexMarketForQuotePool\",\n msg: \"the provided dex market is not valid for the quote pool\"\n },\n {\n code: 6008,\n name: \"InvalidBaseMintForDexMarket\",\n msg: \"the provided dex market does not have a valid base mint\"\n },\n {\n code: 6009,\n name: \"InvalidQuoteMintForDexMarket\",\n msg: \"the provivded dex market does not have a valid quote mint\"\n },\n {\n code: 6010,\n name: \"InvalidEventQueueForMarket\",\n msg: \"the provided event queue account does not belong to the given market\"\n },\n {\n code: 6011,\n name: \"InvalidOrderBookForMarket\",\n msg: \"the provided order book account does not belong to the given market\"\n },\n {\n code: 6012,\n name: \"InvalidSlabAccount\",\n msg: \"the provided slab account is invalid\"\n },\n {\n code: 6013,\n name: \"InvalidOrderIndex\",\n msg: \"the provided order index is not valid\"\n },\n {\n code: 6014,\n name: \"InvalidFeeTier\",\n msg: \"the provided fee tier is not valid\"\n },\n {\n code: 6015,\n name: \"InvalidFeeDiscountAccountMint\",\n msg: \"the provided discount token account does not have a valid mint\"\n },\n {\n code: 6016,\n name: \"InvalidFeeDiscountAccountOwner\",\n msg: \"the provided discount token account does not have a valid owner\"\n },\n {\n code: 6017,\n name: \"InvalidMarketType\",\n msg: \"the provided market has an invalid market type\"\n },\n {\n code: 6018,\n name: \"InvalidSettlementType\",\n msg: \"the provided market has an invalid settlement type\"\n },\n {\n code: 6019,\n name: \"InvalidClearing\",\n msg: \"the provided clearing account is not valid for the given user\"\n },\n {\n code: 6020,\n name: \"InvalidMasterAccount\",\n msg: \"the provided master account is not valid for the given sub account\"\n },\n {\n code: 6021,\n name: \"InvalidOrdersAccount\",\n msg: \"the provided orders account is not valid for the given market\"\n },\n {\n code: 6022,\n name: \"InvalidPriceHistory\",\n msg: \"the provided price history account is not valid for the given market\"\n },\n {\n code: 6023,\n name: \"InvalidAssetMint\",\n msg: \"the provided asset mint is not valid for the given market\"\n },\n {\n code: 6024,\n name: \"InvalidMarketForLiquidation\",\n msg: \"the provided market is not valid for liquidation\"\n },\n {\n code: 6025,\n name: \"InvalidQuotePool\",\n msg: \"the provided quote pool does not have the correct token mint\"\n },\n {\n code: 6026,\n name: \"InvalidLiquidation\",\n msg: \"tried to liquidate a healthy account\"\n },\n {\n code: 6027,\n name: \"InvalidCacheAccount\",\n msg: \"the provided cache account is invalid\"\n },\n {\n code: 6028,\n name: \"InvalidPool\",\n msg: \"the provided pool is not valig for the given mint\"\n },\n {\n code: 6029,\n name: \"InvalidPoolNode\",\n msg: \"the provided pool node is not valid for the given mint\"\n },\n {\n code: 6030,\n name: \"InvalidPoolNodeVault\",\n msg: \"the provided pool node vault is not valid\"\n },\n {\n code: 6031,\n name: \"InvalidVaultSigner\",\n msg: \"the provided vault signer is invalid\"\n },\n {\n code: 6032,\n name: \"OrderNotFound\",\n msg: \"the provided order id could not be found\"\n },\n {\n code: 6033,\n name: \"InvalidOrderSide\",\n msg: \"the provided order side is invalid\"\n },\n {\n code: 6034,\n name: \"OracleProductsCacheNotFound\",\n msg: \"the cache corresponding to the given oracle products wasn't found\"\n },\n {\n code: 6035,\n name: \"CacheAccountFull\",\n msg: \"the cache account is full\"\n },\n {\n code: 6036,\n name: \"PoolAccountFull\",\n msg: \"the pool account is full\"\n },\n {\n code: 6037,\n name: \"PoolNodeNotFound\",\n msg: \"pool node not found\"\n },\n {\n code: 6038,\n name: \"CacheAccountWithOracleProducts\",\n msg: \"the cache account has initialized oracle products\"\n },\n {\n code: 6039,\n name: \"OracleProductsWithTokenMint\",\n msg: \"the oracle products account has an initialized token mint\"\n },\n {\n code: 6040,\n name: \"OracleProductsWithFuturesMarket\",\n msg: \"the oracle products account has an initialized futuresmarket\"\n },\n {\n code: 6041,\n name: \"OracleProductsWithPerpetualMarket\",\n msg: \"the oracle products account has an initialized perp market\"\n },\n {\n code: 6042,\n name: \"OrdersAccountFull\",\n msg: \"the orders account is full\"\n },\n {\n code: 6043,\n name: \"OrdersAccountMustBeEmpty\",\n msg: \"attempted to close an orders account with remaining orders\"\n },\n {\n code: 6044,\n name: \"PoolDexMarketAlreadyInitialized\",\n msg: \"the provided pool already has an initialized dex market\"\n },\n {\n code: 6045,\n name: \"OracleProductsAlreadyInitialized\",\n msg: \"the given oracle products account has already been initialized\"\n },\n {\n code: 6046,\n name: \"StaleAccountCache\",\n msg: \"the given account has stale cached positions\"\n },\n {\n code: 6047,\n name: \"StaleOracleCache\",\n msg: \"the given oracle products account has a stale cache\"\n },\n {\n code: 6048,\n name: \"PrivateClearing\",\n msg: \"attempted to create account in a private clearing\"\n },\n {\n code: 6049,\n name: \"PublicClearing\",\n msg: \"attempted to create whitelisted account in a public clearing\"\n },\n {\n code: 6050,\n name: \"MarketInactive\",\n msg: \"provided market is inactive\"\n },\n {\n code: 6051,\n name: \"MarketAlreadyActive\",\n msg: \"provided market is already active\"\n },\n {\n code: 6052,\n name: \"MarketWithOpenInterestCannotBeclosed\",\n msg: \"perpetual market with exisitng open interest cannot be closed\"\n },\n {\n code: 6053,\n name: \"ActiveMarketCannotSettlePosition\",\n msg: \"active market cannot settle position\"\n },\n {\n code: 6054,\n name: \"ActiveMarketCannotSweepFees\",\n msg: \"active market cannot sweep fees\"\n },\n {\n code: 6055,\n name: \"ActiveMarketCannotClaimIdoProceeds\",\n msg: \"active market cannot claim IDO proceeds\"\n },\n {\n code: 6056,\n name: \"ActiveMarketCannotBeClosed\",\n msg: \"active market cannot be closed\"\n },\n {\n code: 6057,\n name: \"ActivePoolCannotBeClosed\",\n msg: \"active pool cannot be closed\"\n },\n {\n code: 6058,\n name: \"MarketNotForPhysicalDelivery\",\n msg: \"provided market was not created for physical delivery\"\n },\n {\n code: 6059,\n name: \"SubAccountAliasTooLong\",\n msg: \"the provided sub account alias is too long\"\n },\n {\n code: 6060,\n name: \"UnableToFindPosition\",\n msg: \"unable to find position\"\n },\n {\n code: 6061,\n name: \"UnableToFindOrderByOrderId\",\n msg: \"unable to find order with given order id\"\n },\n {\n code: 6062,\n name: \"UnableToFindOrderByClientId\",\n msg: \"unable to find order with given client order id\"\n },\n {\n code: 6063,\n name: \"UnableToPostOrder\",\n msg: \"unable to post order\"\n },\n {\n code: 6064,\n name: \"SpotOpenOrdersHasUnsettledFunds\",\n msg: \"the provided spot open orders account has unsettled funds\"\n },\n {\n code: 6065,\n name: \"RemainingAccountNotWritable\",\n msg: \"specified sub account is not writable\"\n },\n {\n code: 6066,\n name: \"RemainingAccountWithInvalidOwner\",\n msg: \"specified sub account is not writable\"\n },\n {\n code: 6067,\n name: \"RemainingAccountWithInvalidAuthority\",\n msg: \"specified sub account is not owned by the same authority\"\n },\n {\n code: 6068,\n name: \"RemainingAccountWithInvalidMasterAccount\",\n msg: \"specified sub account does not belong to the specified master account\"\n },\n {\n code: 6069,\n name: \"RemainingUserAccountMissing\",\n msg: \"remaining user account missing\"\n },\n {\n code: 6070,\n name: \"RemainingAccountsMissing\",\n msg: \"there are remaining accounts missing from the instruction\"\n },\n {\n code: 6071,\n name: \"SubAccountCRatioBelowOptimal\",\n msg: \"sub account c-ratio is below optimal\"\n },\n {\n code: 6072,\n name: \"MasterAccountCRatioBelowOptimal\",\n msg: \"master account c-ratio is below optimal\"\n },\n {\n code: 6073,\n name: \"TotalBorrowsGreaterThanDeposits\",\n msg: \"pool total borrows amount are greater than total deposits\"\n },\n {\n code: 6074,\n name: \"MarketTotalBorrowsGreaterThanTokenSupply\",\n msg: \"market total borrows amount are greater than total token supply\"\n },\n {\n code: 6075,\n name: \"OrderAmountExceedsVaultBalance\",\n msg: \"attempted to submit an order with greater amount than is available in the vault\"\n },\n {\n code: 6076,\n name: \"TransactionAborted\",\n msg: \"the transaction has been aborted due to predetermined functionality\"\n },\n {\n code: 6077,\n name: \"AccountWithSubAccounts\",\n msg: \"the provided account has initialized sub accounts\"\n },\n {\n code: 6078,\n name: \"SubAccountWithPositions\",\n msg: \"the provided sub account has existing position\"\n },\n {\n code: 6079,\n name: \"BaseSizeExceedsMarketLimit\",\n msg: \"the order's base size exceeds the market's limit for non-postOnly orders\"\n },\n {\n code: 6080,\n name: \"QuoteSizeExceedsMarketLimit\",\n msg: \"the order's quote size exceeds the market's limit for non-postOnly orders\"\n },\n {\n code: 6081,\n name: \"StaleOracleFeed\",\n msg: \"the given oracle feed account is stale\"\n },\n {\n code: 6082,\n name: \"PythPriceStatusNotTrading\",\n msg: \"the given pyth price feed is not trading\"\n },\n {\n code: 6083,\n name: \"ConfidenceIntervalExceeded\",\n msg: \"the confidence interval for the oracle price feed has been exceeded\"\n },\n {\n code: 6084,\n name: \"ReduceOnlyMode\",\n msg: \"the given instrument is in reduce only mode\"\n },\n {\n code: 6085,\n name: \"CancelOnlyMode\",\n msg: \"the given instrument is in cancel only mode\"\n },\n {\n code: 6086,\n name: \"HaltedMode\",\n msg: \"the given instrument has been halted\"\n },\n {\n code: 6087,\n name: \"Default\",\n msg: \"Default\"\n }\n ]\n};\n\n// src/client/index.ts\nvar CypherClient = class {\n constructor(cluster, rpcEndpoint, wallet, confirmOpts = AnchorProvider.defaultOptions()) {\n this.cluster = cluster;\n const provider = {\n connection: new Connection(rpcEndpoint, confirmOpts.commitment)\n };\n this._program = new Program(\n cypher_default,\n CONFIGS[this.cluster].CYPHER_PID,\n provider\n );\n if (wallet) {\n this.connectWallet(wallet, confirmOpts);\n }\n }\n connectWallet(wallet, confirmOpts = AnchorProvider.defaultOptions()) {\n const provider = new AnchorProvider(this.connection, wallet, confirmOpts);\n this._program = new Program(\n cypher_default,\n CONFIGS[this.cluster].CYPHER_PID,\n provider\n );\n }\n get _provider() {\n return this._program.provider;\n }\n get anchorProvider() {\n const provider = this._program.provider;\n if (provider.wallet) {\n return provider;\n }\n }\n get connection() {\n return this._provider.connection;\n }\n get methods() {\n return this._program.methods;\n }\n get accounts() {\n return this._program.account;\n }\n get isWalletConnected() {\n return !!this.anchorProvider;\n }\n get walletPubkey() {\n return this.anchorProvider?.wallet.publicKey;\n }\n get cypherPID() {\n return CONFIGS[this.cluster].CYPHER_PID;\n }\n get dexPID() {\n return CONFIGS[this.cluster].DEX_PID;\n }\n get quoteMint() {\n return CONFIGS[this.cluster].QUOTE_MINT;\n }\n addEventListener(eventName, callback) {\n return this._program.addEventListener(eventName, callback);\n }\n async removeEventListener(listener) {\n return await this._program.removeEventListener(listener);\n }\n async sendAndConfirm(tx, signers, opts) {\n return this.anchorProvider?.sendAndConfirm(tx, signers, opts);\n }\n async sendAndConfirmIxs(ixs, signers, opts) {\n const tx = new Transaction();\n tx.add(...ixs);\n return this.sendAndConfirm(tx, signers, opts);\n }\n};\n\n// src/utils/pda.ts\nimport { PublicKey as PublicKey2 } from \"@solana/web3.js\";\nimport { utils as anchorUtils } from \"@project-serum/anchor\";\nvar getDexVaultSigner = (dexMarket, vaultSignerNonce, dexPID) => {\n return PublicKey2.createProgramAddressSync(\n [dexMarket.toBuffer(), vaultSignerNonce.toArrayLike(Buffer, \"le\", 8)],\n dexPID\n );\n};\nvar derivePublicClearingAddress = (cypherPID) => {\n const B_CLEARING = anchorUtils.bytes.utf8.encode(\"CYPHER_CLEARING\");\n return anchorUtils.publicKey.findProgramAddressSync(\n [B_CLEARING, Buffer.from([0])],\n cypherPID\n );\n};\nvar derivePrivateClearingAddress = (clearingNumber, cypherPID) => {\n const B_CLEARING = anchorUtils.bytes.utf8.encode(\"CYPHER_CLEARING\");\n return anchorUtils.publicKey.findProgramAddressSync(\n [B_CLEARING, Buffer.from([1]), Buffer.from([clearingNumber])],\n cypherPID\n );\n};\nvar derivePoolAddress = (poolName, cypherPID) => {\n const B_POOL = anchorUtils.bytes.utf8.encode(\"CYPHER_POOL\");\n return anchorUtils.publicKey.findProgramAddressSync(\n [B_POOL, Buffer.from(poolName)],\n cypherPID\n );\n};\nvar derivePoolNodeAddress = (pool, nodeNumber, cypherPID) => {\n const B_POOL_NODE = anchorUtils.bytes.utf8.encode(\"CYPHER_POOL_NODE\");\n return anchorUtils.publicKey.findProgramAddressSync(\n [B_POOL_NODE, pool.toBuffer(), Buffer.from([nodeNumber])],\n cypherPID\n );\n};\nvar derivePoolNodeVaultAddress = (poolNode, cypherPID) => {\n const B_POOL_VAULT = anchorUtils.bytes.utf8.encode(\"CYPHER_POOL_NODE_VAULT\");\n return anchorUtils.publicKey.findProgramAddressSync(\n [B_POOL_VAULT, poolNode.toBuffer()],\n cypherPID\n );\n};\nvar derivePoolNodeVaultSigner = (poolNode, cypherPID) => {\n const B_POOL_NODE_VAULT_SIGNER = anchorUtils.bytes.utf8.encode(\n \"CYPHER_POOL_NODE_VAULT_SIGNER\"\n );\n return anchorUtils.publicKey.findProgramAddressSync(\n [B_POOL_NODE_VAULT_SIGNER, poolNode.toBuffer()],\n cypherPID\n );\n};\nvar deriveMarketAddress = (marketName, cypherPID) => {\n const B_CYPHER_MARKET = anchorUtils.bytes.utf8.encode(\"CYPHER_MARKET\");\n return anchorUtils.publicKey.findProgramAddressSync(\n [B_CYPHER_MARKET, Buffer.from(marketName)],\n cypherPID\n );\n};\nvar deriveOracleProductsAddress = (symbol, cypherPID) => {\n const B_CYPHER_MARKET = anchorUtils.bytes.utf8.encode(\n \"CYPHER_ORACLE_PRODUCTS\"\n );\n return anchorUtils.publicKey.findProgramAddressSync(\n [B_CYPHER_MARKET, Buffer.from(symbol)],\n cypherPID\n );\n};\nvar deriveAccountAddress = (authority, accountNumber, cypherPID) => {\n const B_CYPHER_ACCOUNT = anchorUtils.bytes.utf8.encode(\"CYPHER_ACCOUNT\");\n return anchorUtils.publicKey.findProgramAddressSync(\n [B_CYPHER_ACCOUNT, authority.toBuffer(), Buffer.from([accountNumber])],\n cypherPID\n );\n};\nvar deriveSubAccountAddress = (masterAccount, accountNumber, cypherPID) => {\n const B_CYPHER_SUB_ACCOUNT = anchorUtils.bytes.utf8.encode(\"CYPHER_SUB_ACCOUNT\");\n return anchorUtils.publicKey.findProgramAddressSync(\n [\n B_CYPHER_SUB_ACCOUNT,\n masterAccount.toBuffer(),\n Buffer.from([accountNumber])\n ],\n cypherPID\n );\n};\nvar deriveOrdersAccountAddress = (masterAccount, market, cypherPID) => {\n const B_ORDERS_ACCOUNT = anchorUtils.bytes.utf8.encode(\n \"CYPHER_ORDERS_ACCOUNT\"\n );\n return anchorUtils.publicKey.findProgramAddressSync(\n [B_ORDERS_ACCOUNT, market.toBuffer(), masterAccount.toBuffer()],\n cypherPID\n );\n};\nvar deriveSerumOrdersAccountAddress = (dexMarket, masterAccount, subAccount, cypherPID) => {\n const B_OPEN_ORDERS = anchorUtils.bytes.utf8.encode(\"OPEN_ORDERS\");\n return anchorUtils.publicKey.findProgramAddressSync(\n [\n B_OPEN_ORDERS,\n dexMarket.toBuffer(),\n masterAccount.toBuffer(),\n subAccount.toBuffer()\n ],\n cypherPID\n );\n};\n\n// src/types/on-chain.ts\nvar OperatingStatus = class {\n};\nOperatingStatus.Active = { active: {} };\nOperatingStatus.ReduceOnly = { reduceOnly: {} };\nOperatingStatus.CancelOnly = { cancelOnly: {} };\nOperatingStatus.Halted = { halted: {} };\nvar OrderType = class {\n};\nOrderType.Limit = { limit: {} };\nOrderType.ImmediateOrCancel = { immediateOrCancel: {} };\nOrderType.PostOnly = { postOnly: {} };\nvar DerivativeOrderType = class {\n};\nDerivativeOrderType.Limit = { limit: {} };\nDerivativeOrderType.ImmediateOrCancel = { immediateOrCancel: {} };\nDerivativeOrderType.FillOrKill = { fillOrKill: {} };\nDerivativeOrderType.PostOnly = { postOnly: {} };\nvar Side = class {\n};\nSide.Bid = { bid: {} };\nSide.Ask = { ask: {} };\nvar SelfTradeBehavior = class {\n};\nSelfTradeBehavior.DecrementTake = { decrementTake: {} };\nSelfTradeBehavior.AbortTransaction = { abortTransaction: {} };\nSelfTradeBehavior.CancelProvide = { cancelProvide: {} };\nvar AccountAction = class {\n};\nAccountAction.Create = { create: {} };\nAccountAction.Close = { close: {} };\nAccountAction.SetDelegate = { setDelegate: {} };\nvar SubAccountAction = class {\n};\nSubAccountAction.Create = { create: {} };\nSubAccountAction.Close = { close: {} };\nSubAccountAction.ChangeMarginingType = { changeMarginingType: {} };\nvar ClearingAction = class {\n};\nClearingAction.Create = { create: {} };\nClearingAction.Close = { close: {} };\nClearingAction.SweepFee = { sweepFee: {} };\nvar FuturesOrdersAccountAction = class {\n};\nFuturesOrdersAccountAction.Create = { create: {} };\nFuturesOrdersAccountAction.Close = { close: {} };\nvar ClearingType = class {\n};\nClearingType.Public = { public: {} };\nClearingType.Private = { private: {} };\nvar WhitelistStatus = class {\n};\nWhitelistStatus.Pending = { pending: {} };\nWhitelistStatus.Active = { active: {} };\nWhitelistStatus.Revoked = { revoked: {} };\nvar MarketType = class {\n};\nMarketType.Default = { default: {} };\nMarketType.PairFuture = { pairFuture: {} };\nMarketType.PerpetualFuture = { perpetualFuture: {} };\nMarketType.PreIDO = { PreIDO: {} };\nMarketType.IndexFuture = { indexFuture: {} };\nvar SettlementType = class {\n};\nSettlementType.CashSettled = { cashSettled: {} };\nSettlementType.PhysicalDelivery = { physicalDelivery: {} };\nvar ProductsType = class {\n};\nProductsType.Pyth = { pyth: {} };\nProductsType.Switchboard = { switchboard: {} };\nvar SubAccountMargining = class {\n};\nSubAccountMargining.Cross = { cross: {} };\nSubAccountMargining.Isolated = { isolated: {} };\nvar AccountType = class {\n};\nAccountType.Regular = { regulard: {} };\nAccountType.Whitelisted = { whitelisted: {} };\nexport {\n AccountAction,\n AccountType,\n BPS_100_PERCENT,\n CALLBACK_INFO_LEN,\n CONFIGS,\n ClearingAction,\n ClearingType,\n CypherClient,\n DerivativeOrderType,\n FuturesOrdersAccountAction,\n MarketType,\n OperatingStatus,\n OrderType,\n ProductsType,\n QUOTE_TOKEN_DECIMALS,\n SelfTradeBehavior,\n SettlementType,\n Side,\n SubAccountAction,\n SubAccountMargining,\n WhitelistStatus,\n deriveAccountAddress,\n deriveMarketAddress,\n deriveOracleProductsAddress,\n deriveOrdersAccountAddress,\n derivePoolAddress,\n derivePoolNodeAddress,\n derivePoolNodeVaultAddress,\n derivePoolNodeVaultSigner,\n derivePrivateClearingAddress,\n derivePublicClearingAddress,\n deriveSerumOrdersAccountAddress,\n deriveSubAccountAddress,\n getDexVaultSigner\n};\n//# sourceMappingURL=index.mjs.map","export var AccountType;\n(function (AccountType) {\n AccountType[\"APY\"] = \"apy\";\n AccountType[\"VAULT_A_RESERVE\"] = \"vaultAReserve\";\n AccountType[\"VAULT_B_RESERVE\"] = \"vaultBReserve\";\n AccountType[\"VAULT_A_LP\"] = \"vaultALp\";\n AccountType[\"VAULT_B_LP\"] = \"vaultBLp\";\n AccountType[\"POOL_VAULT_A_LP\"] = \"poolVaultALp\";\n AccountType[\"POOL_VAULT_B_LP\"] = \"poolVaultBLp\";\n AccountType[\"POOL_LP_MINT\"] = \"poolLpMint\";\n AccountType[\"SYSVAR_CLOCK\"] = \"sysClockVar\";\n})(AccountType || (AccountType = {}));\n//# sourceMappingURL=index.js.map","import BN from 'bn.js';\nimport { LOCKED_PROFIT_DEGRADATION_DENOMINATOR } from '../constants';\n/**\n *\n * @param share - user's share\n * @param withdrawableAmount - vault's withdrawable amount, vaultImpl.getWithdrawableAmount()\n * @param totalSupply - vault's total lp supply\n * @returns\n */\nexport function getAmountByShare(share, withdrawableAmount, totalSupply) {\n return share.mul(withdrawableAmount).div(totalSupply);\n}\n/**\n *\n * @param amount - amount of desired underlying token to unstake\n * @param withdrawableAmount - vault's withdrawable amount, vaultImpl.getWithdrawableAmount()\n * @param totalSupply - vault's total lp supply, vaultImpl.lpSupply\n * @returns BN\n */\nexport function getUnmintAmount(amount, withdrawableAmount, totalSupply) {\n return amount.mul(totalSupply).div(withdrawableAmount);\n}\n/**\n * `calculateWithdrawableAmount` calculates the amount of funds that can be withdrawn from a vault with vault state provided\n * @param {number} onChainTime - the current time on the blockchain\n * @param {VaultState} vaultState - VaultState\n * @returns The amount of the vault that can be withdrawn.\n */\nexport function calculateWithdrawableAmount(onChainTime, vaultState) {\n const { lockedProfitTracker: { lastReport, lockedProfitDegradation, lastUpdatedLockedProfit }, totalAmount: vaultTotalAmount, } = vaultState;\n const duration = new BN(onChainTime).sub(lastReport);\n const lockedFundRatio = duration.mul(lockedProfitDegradation);\n if (lockedFundRatio.gt(LOCKED_PROFIT_DEGRADATION_DENOMINATOR)) {\n return vaultTotalAmount;\n }\n const lockedProfit = lastUpdatedLockedProfit\n .mul(LOCKED_PROFIT_DEGRADATION_DENOMINATOR.sub(lockedFundRatio))\n .div(LOCKED_PROFIT_DEGRADATION_DENOMINATOR);\n return vaultTotalAmount.sub(lockedProfit);\n}\n//# sourceMappingURL=index.js.map","import { fetch } from 'cross-fetch';\nimport tokenlist from './../tokens/solana.tokenlist.json';\nexport var ENV;\n(function (ENV) {\n ENV[ENV[\"MainnetBeta\"] = 101] = \"MainnetBeta\";\n ENV[ENV[\"Testnet\"] = 102] = \"Testnet\";\n ENV[ENV[\"Devnet\"] = 103] = \"Devnet\";\n})(ENV || (ENV = {}));\nexport const CLUSTER_SLUGS = {\n 'mainnet-beta': ENV.MainnetBeta,\n testnet: ENV.Testnet,\n devnet: ENV.Devnet,\n};\nexport class GitHubTokenListResolutionStrategy {\n constructor() {\n this.repositories = [\n 'https://raw.githubusercontent.com/solana-labs/token-list/main/src/tokens/solana.tokenlist.json',\n ];\n this.resolve = () => {\n return queryJsonFiles(this.repositories);\n };\n }\n}\nexport class CDNTokenListResolutionStrategy {\n constructor() {\n this.repositories = [\n 'https://cdn.jsdelivr.net/gh/solana-labs/token-list@main/src/tokens/solana.tokenlist.json',\n ];\n this.resolve = () => {\n return queryJsonFiles(this.repositories);\n };\n }\n}\nexport class SolanaTokenListResolutionStrategy {\n constructor() {\n this.repositories = ['https://token-list.solana.com/solana.tokenlist.json'];\n this.resolve = () => {\n return queryJsonFiles(this.repositories);\n };\n }\n}\nconst queryJsonFiles = async (files) => {\n const responses = (await Promise.all(files.map(async (repo) => {\n try {\n const response = await fetch(repo);\n const json = (await response.json());\n return json;\n }\n catch {\n console.info(`@solana/token-registry: falling back to static repository.`);\n return tokenlist;\n }\n })));\n return responses\n .map((tokenlist) => tokenlist.tokens)\n .reduce((acc, arr) => acc.concat(arr), []);\n};\nexport var Strategy;\n(function (Strategy) {\n Strategy[\"GitHub\"] = \"GitHub\";\n Strategy[\"Static\"] = \"Static\";\n Strategy[\"Solana\"] = \"Solana\";\n Strategy[\"CDN\"] = \"CDN\";\n})(Strategy || (Strategy = {}));\nexport class StaticTokenListResolutionStrategy {\n constructor() {\n this.resolve = () => {\n return tokenlist.tokens;\n };\n }\n}\nexport class TokenListProvider {\n constructor() {\n this.resolve = async (strategy = Strategy.CDN) => {\n return new TokenListContainer(await TokenListProvider.strategies[strategy].resolve());\n };\n }\n}\nTokenListProvider.strategies = {\n [Strategy.GitHub]: new GitHubTokenListResolutionStrategy(),\n [Strategy.Static]: new StaticTokenListResolutionStrategy(),\n [Strategy.Solana]: new SolanaTokenListResolutionStrategy(),\n [Strategy.CDN]: new CDNTokenListResolutionStrategy(),\n};\nexport class TokenListContainer {\n constructor(tokenList) {\n this.tokenList = tokenList;\n this.filterByTag = (tag) => {\n return new TokenListContainer(this.tokenList.filter((item) => (item.tags || []).includes(tag)));\n };\n this.filterByChainId = (chainId) => {\n return new TokenListContainer(this.tokenList.filter((item) => item.chainId === chainId));\n };\n this.excludeByChainId = (chainId) => {\n return new TokenListContainer(this.tokenList.filter((item) => item.chainId !== chainId));\n };\n this.excludeByTag = (tag) => {\n return new TokenListContainer(this.tokenList.filter((item) => !(item.tags || []).includes(tag)));\n };\n this.filterByClusterSlug = (slug) => {\n if (slug in CLUSTER_SLUGS) {\n return this.filterByChainId(CLUSTER_SLUGS[slug]);\n }\n throw new Error(`Unknown slug: ${slug}, please use one of ${Object.keys(CLUSTER_SLUGS)}`);\n };\n this.getList = () => {\n return this.tokenList;\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b2tlbmxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwQyxPQUFPLFNBQVMsTUFBTSxtQ0FBbUMsQ0FBQztBQUUxRCxNQUFNLENBQU4sSUFBWSxHQUlYO0FBSkQsV0FBWSxHQUFHO0lBQ2IsNkNBQWlCLENBQUE7SUFDakIscUNBQWEsQ0FBQTtJQUNiLG1DQUFZLENBQUE7QUFDZCxDQUFDLEVBSlcsR0FBRyxLQUFILEdBQUcsUUFJZDtBQStDRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQTBCO0lBQ2xELGNBQWMsRUFBRSxHQUFHLENBQUMsV0FBVztJQUMvQixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87SUFDcEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO0NBQ25CLENBQUM7QUFFRixNQUFNLE9BQU8saUNBQWlDO0lBQTlDO1FBQ0UsaUJBQVksR0FBRztZQUNiLGdHQUFnRztTQUNqRyxDQUFDO1FBRUYsWUFBTyxHQUFHLEdBQUcsRUFBRTtZQUNiLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sOEJBQThCO0lBQTNDO1FBQ0UsaUJBQVksR0FBRztZQUNiLDBGQUEwRjtTQUMzRixDQUFDO1FBRUYsWUFBTyxHQUFHLEdBQUcsRUFBRTtZQUNiLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8saUNBQWlDO0lBQTlDO1FBQ0UsaUJBQVksR0FBRyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFFdkUsWUFBTyxHQUFHLEdBQUcsRUFBRTtZQUNiLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQUE7QUFFRCxNQUFNLGNBQWMsR0FBRyxLQUFLLEVBQUUsS0FBZSxFQUFFLEVBQUU7SUFDL0MsTUFBTSxTQUFTLEdBQWdCLENBQUMsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUMvQyxLQUFLLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxJQUFJLEVBQUUsRUFBRTtRQUN2QixJQUFJO1lBQ0YsTUFBTSxRQUFRLEdBQUcsTUFBTSxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDbkMsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLFFBQVEsQ0FBQyxJQUFJLEVBQUUsQ0FBYyxDQUFDO1lBQ2xELE9BQU8sSUFBSSxDQUFDO1NBQ2I7UUFBQyxNQUFNO1lBQ04sT0FBTyxDQUFDLElBQUksQ0FDViw0REFBNEQsQ0FDN0QsQ0FBQztZQUNGLE9BQU8sU0FBUyxDQUFDO1NBQ2xCO0lBQ0gsQ0FBQyxDQUFDLENBQ0gsQ0FBZ0IsQ0FBQztJQUVsQixPQUFPLFNBQVM7U0FDYixHQUFHLENBQUMsQ0FBQyxTQUFvQixFQUFFLEVBQUUsQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDO1NBQy9DLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRSxDQUFFLEdBQW1CLENBQUMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBQ2hFLENBQUMsQ0FBQztBQUVGLE1BQU0sQ0FBTixJQUFZLFFBS1g7QUFMRCxXQUFZLFFBQVE7SUFDbEIsNkJBQWlCLENBQUE7SUFDakIsNkJBQWlCLENBQUE7SUFDakIsNkJBQWlCLENBQUE7SUFDakIsdUJBQVcsQ0FBQTtBQUNiLENBQUMsRUFMVyxRQUFRLEtBQVIsUUFBUSxRQUtuQjtBQUVELE1BQU0sT0FBTyxpQ0FBaUM7SUFBOUM7UUFDRSxZQUFPLEdBQUcsR0FBRyxFQUFFO1lBQ2IsT0FBTyxTQUFTLENBQUMsTUFBTSxDQUFDO1FBQzFCLENBQUMsQ0FBQztJQUNKLENBQUM7Q0FBQTtBQUVELE1BQU0sT0FBTyxpQkFBaUI7SUFBOUI7UUFRRSxZQUFPLEdBQUcsS0FBSyxFQUNiLFdBQXFCLFFBQVEsQ0FBQyxHQUFHLEVBQ0osRUFBRTtZQUMvQixPQUFPLElBQUksa0JBQWtCLENBQzNCLE1BQU0saUJBQWlCLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE9BQU8sRUFBRSxDQUN2RCxDQUFDO1FBQ0osQ0FBQyxDQUFDO0lBQ0osQ0FBQzs7QUFkUSw0QkFBVSxHQUFHO0lBQ2xCLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxFQUFFLElBQUksaUNBQWlDLEVBQUU7SUFDMUQsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLEVBQUUsSUFBSSxpQ0FBaUMsRUFBRTtJQUMxRCxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsRUFBRSxJQUFJLGlDQUFpQyxFQUFFO0lBQzFELENBQUMsUUFBUSxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksOEJBQThCLEVBQUU7Q0FDckQsQ0FBQztBQVdKLE1BQU0sT0FBTyxrQkFBa0I7SUFDN0IsWUFBb0IsU0FBc0I7UUFBdEIsY0FBUyxHQUFULFNBQVMsQ0FBYTtRQUUxQyxnQkFBVyxHQUFHLENBQUMsR0FBVyxFQUFFLEVBQUU7WUFDNUIsT0FBTyxJQUFJLGtCQUFrQixDQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxJQUFJLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUNqRSxDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRUYsb0JBQWUsR0FBRyxDQUFDLE9BQXFCLEVBQUUsRUFBRTtZQUMxQyxPQUFPLElBQUksa0JBQWtCLENBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsT0FBTyxLQUFLLE9BQU8sQ0FBQyxDQUMxRCxDQUFDO1FBQ0osQ0FBQyxDQUFDO1FBRUYscUJBQWdCLEdBQUcsQ0FBQyxPQUFxQixFQUFFLEVBQUU7WUFDM0MsT0FBTyxJQUFJLGtCQUFrQixDQUMzQixJQUFJLENBQUMsU0FBUyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxPQUFPLENBQUMsQ0FDMUQsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUVGLGlCQUFZLEdBQUcsQ0FBQyxHQUFXLEVBQUUsRUFBRTtZQUM3QixPQUFPLElBQUksa0JBQWtCLENBQzNCLElBQUksQ0FBQyxTQUFTLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksSUFBSSxFQUFFLENBQUMsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FDbEUsQ0FBQztRQUNKLENBQUMsQ0FBQztRQUVGLHdCQUFtQixHQUFHLENBQUMsSUFBWSxFQUFFLEVBQUU7WUFDckMsSUFBSSxJQUFJLElBQUksYUFBYSxFQUFFO2dCQUN6QixPQUFPLElBQUksQ0FBQyxlQUFlLENBQUMsYUFBYSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7YUFDbEQ7WUFDRCxNQUFNLElBQUksS0FBSyxDQUNiLGlCQUFpQixJQUFJLHVCQUF1QixNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQ3pFLENBQUM7UUFDSixDQUFDLENBQUM7UUFFRixZQUFPLEdBQUcsR0FBRyxFQUFFO1lBQ2IsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDO1FBQ3hCLENBQUMsQ0FBQztJQXJDMkMsQ0FBQztDQXNDL0MifQ==","import { ENV } from '@solana/spl-token-registry';\nimport { PublicKey } from '@solana/web3.js';\nimport { BN } from 'bn.js';\nexport const ERROR = {\n POOL_NOT_LOAD: 'Pool not loaded',\n INVALID_MINT: 'Invalid mint',\n INVALID_ACCOUNT: 'Account not found',\n};\nexport const PROGRAM_ID = 'Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB';\nexport const VAULT_PROGRAM_ID = '24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi';\nexport const DEVNET_COIN = [\n {\n chainId: ENV.Devnet,\n address: 'So11111111111111111111111111111111111111112',\n decimals: 9,\n name: 'Wrapped SOL',\n symbol: 'SOL',\n logoURI: 'https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/So11111111111111111111111111111111111111112/logo.png',\n extensions: {\n coingeckoId: 'solana',\n serumV3Usdc: '9wFFyRfZBsuAha4YcuxcXLKwMxJR43S7fPfQLusDBzvT',\n serumV3Usdt: 'HWHvQhFmJB3NUcu1aihKmrKegfVxBEHzwVX6yZCKEsi1',\n website: 'https://solana.com/',\n },\n },\n {\n chainId: ENV.Devnet,\n address: 'zVzi5VAf4qMEwzv7NXECVx5v2pQ7xnqVVjCXZwS9XzA',\n decimals: 6,\n name: 'USD Coin',\n symbol: 'USDC',\n logoURI: 'https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v/logo.png',\n extensions: {\n coingeckoId: 'usd-coin',\n serumV3Usdt: '77quYg4MGneUdjgXCunt9GgM1usmrxKY31twEy3WHwcS',\n website: 'https://www.centre.io/',\n },\n },\n {\n chainId: ENV.Devnet,\n address: '9NGDi2tZtNmCCp8SVLKNuGjuWAVwNF3Vap5tT8km5er9',\n decimals: 9,\n name: 'USDT',\n symbol: 'USDT',\n logoURI: 'https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB/logo.svg',\n tags: ['stablecoin'],\n extensions: {\n coingeckoId: 'tether',\n serumV3Usdc: '77quYg4MGneUdjgXCunt9GgM1usmrxKY31twEy3WHwcS',\n website: 'https://tether.to/',\n },\n },\n {\n chainId: ENV.Devnet,\n address: 'mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So',\n decimals: 9,\n symbol: 'mSOL',\n name: 'Marinade staked SOL (mSOL)',\n logoURI: 'https://raw.githubusercontent.com/solana-labs/token-list/main/assets/mainnet/mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So/logo.png',\n extensions: {\n coingeckoId: 'msol',\n discord: 'https://discord.gg/mGqZA5pjRN',\n github: 'https://github.com/marinade-finance',\n medium: 'https://medium.com/marinade-finance',\n serumV3Usdc: '6oGsL2puUgySccKzn9XA9afqF217LfxP5ocq4B3LWsjy',\n serumV3Usdt: 'HxkQdUnrPdHwXP5T9kewEXs3ApgvbufuTfdw9v1nApFd',\n twitter: 'https://twitter.com/MarinadeFinance',\n website: 'https://marinade.finance',\n },\n },\n];\nexport const DEVNET_POOL = Object.freeze({\n USDT_USDC: 'BAHscmu1NncGS7t4rc5gSBPv1UFEMkvLaon1Ahdd5rHi',\n USDT_SOL: 'Bgf1Sy5kfeDgib4go4NgzHuZwek8wE8NZus56z6uizzi',\n SOL_MSOL: '2rkn2yM4wJcHPV57T8fPWeBksrfSpiNZoEjRgjtxNDEQ',\n});\nexport const MAINNET_POOL = Object.freeze({\n USDT_USDC: '32D4zRxNc1EssbJieVHfPhZM3rH6CzfUPrWUuWxD9prG',\n USDC_SOL: '5yuefgbJJpmFNK2iiYbLSpv1aZXq7F9AUKkZKErTYCvs',\n SOL_STSOL: '7EJSgV2pthhDfb4UiER9vzTqe2eojei9GEQAQnkqJ96e',\n});\n// Extra accounts for depeg pools. Might add more addresses in the future when more different types of pools are being added\nexport const CURVE_TYPE_ACCOUNTS = {\n // Stake account of Marinade finance. Used to retrieve mSol virtual price\n marinade: new PublicKey('8szGkuLTAux9XMgZ2vtY39jVSowEcpBfFfD8hXSEqdGC'),\n // Stake account of Solana Lido. Used to retrieve stSol virtual price\n lido: new PublicKey('49Yi1TKkNyYjPAFdR9LBvoHcUjuPX4Df5T5yv39w2XTn'),\n};\nexport const SEEDS = Object.freeze({\n APY: 'apy',\n});\nexport const POOL_BASE_KEY = new PublicKey('H9NnqW5Thn9dUzW3DRXe2xDhKjwZd4qbjngnZwEvnDuC');\nexport const WRAPPED_SOL_MINT = new PublicKey('So11111111111111111111111111111111111111112');\nexport const DEFAULT_SLIPPAGE = 1;\nexport const UNLOCK_AMOUNT_BUFFER = 0.998;\nexport const VIRTUAL_PRICE_PRECISION = new BN(100000000);\n//# sourceMappingURL=constants.js.map","import { ONE, ZERO } from \"@saberhq/token-utils\";\nimport { default as JSBI } from \"jsbi\";\nconst N_COINS = JSBI.BigInt(2); // n\nconst abs = (a) => {\n if (JSBI.greaterThan(a, ZERO)) {\n return a;\n }\n return JSBI.unaryMinus(a);\n};\n// maximum iterations of newton's method approximation\nconst MAX_ITERS = 20;\n/**\n * Compute the StableSwap invariant\n * @param ampFactor Amplification coefficient (A)\n * @param amountA Swap balance of token A\n * @param amountB Swap balance of token B\n * Reference: https://github.com/curvefi/curve-contract/blob/7116b4a261580813ef057887c5009e22473ddb7d/tests/simulation.py#L31\n */\nexport const computeD = (ampFactor, amountA, amountB) => {\n const Ann = JSBI.multiply(ampFactor, N_COINS); // A*n^n\n const S = JSBI.add(amountA, amountB); // sum(x_i), a.k.a S\n if (JSBI.equal(S, ZERO)) {\n return ZERO;\n }\n let dPrev = ZERO;\n let d = S;\n for (let i = 0; JSBI.greaterThan(abs(JSBI.subtract(d, dPrev)), ONE) && i < MAX_ITERS; i++) {\n dPrev = d;\n let dP = d;\n dP = JSBI.divide(JSBI.multiply(dP, d), JSBI.multiply(amountA, N_COINS));\n dP = JSBI.divide(JSBI.multiply(dP, d), JSBI.multiply(amountB, N_COINS));\n const dNumerator = JSBI.multiply(d, JSBI.add(JSBI.multiply(Ann, S), JSBI.multiply(dP, N_COINS)));\n const dDenominator = JSBI.add(JSBI.multiply(d, JSBI.subtract(Ann, ONE)), JSBI.multiply(dP, JSBI.add(N_COINS, ONE)));\n d = JSBI.divide(dNumerator, dDenominator);\n }\n return d;\n};\n/**\n * Compute Y amount in respect to X on the StableSwap curve\n * @param ampFactor Amplification coefficient (A)\n * @param x The quantity of underlying asset\n * @param d StableSwap invariant\n * Reference: https://github.com/curvefi/curve-contract/blob/7116b4a261580813ef057887c5009e22473ddb7d/tests/simulation.py#L55\n */\nexport const computeY = (ampFactor, x, d) => {\n const Ann = JSBI.multiply(ampFactor, N_COINS); // A*n^n\n // sum' = prod' = x\n const b = JSBI.subtract(JSBI.add(x, JSBI.divide(d, Ann)), d); // b = sum' - (A*n**n - 1) * D / (A * n**n)\n const c = JSBI.divide(JSBI.multiply(JSBI.multiply(d, // c = D ** (n + 1) / (n ** (2 * n) * prod' * A)\n d), d), JSBI.multiply(N_COINS, JSBI.multiply(N_COINS, JSBI.multiply(x, Ann))));\n let yPrev = ZERO;\n let y = d;\n for (let i = 0; i < MAX_ITERS && JSBI.greaterThan(abs(JSBI.subtract(y, yPrev)), ONE); i++) {\n yPrev = y;\n y = JSBI.divide(JSBI.add(JSBI.multiply(y, y), c), JSBI.add(JSBI.multiply(N_COINS, y), b));\n }\n return y;\n};\n//# sourceMappingURL=curve.js.map","import { Fraction, ONE, TokenAmount, ZERO } from \"@saberhq/token-utils\";\nimport { default as JSBI } from \"jsbi\";\nimport { computeD, computeY } from \"./curve.js\";\n/**\n * Calculates the current virtual price of the exchange.\n * @param exchange\n * @returns\n */\nexport const calculateVirtualPrice = (exchange) => {\n const amount = exchange.lpTotalSupply;\n if (amount === undefined || amount.equalTo(0)) {\n // pool has no tokens\n return null;\n }\n const price = new Fraction(computeD(exchange.ampFactor, exchange.reserves[0].amount.raw, exchange.reserves[1].amount.raw), amount.raw);\n return price;\n};\n/**\n * Calculates the estimated output amount of a swap.\n * @param exchange\n * @param fromAmount\n * @returns\n */\nexport const calculateEstimatedSwapOutputAmount = (exchange, fromAmount) => {\n const [fromReserves, toReserves] = fromAmount.token.equals(exchange.reserves[0].amount.token)\n ? [exchange.reserves[0], exchange.reserves[1]]\n : [exchange.reserves[1], exchange.reserves[0]];\n if (fromAmount.equalTo(0)) {\n const zero = new TokenAmount(toReserves.amount.token, ZERO);\n return {\n outputAmountBeforeFees: zero,\n outputAmount: zero,\n fee: zero,\n lpFee: zero,\n adminFee: zero,\n };\n }\n const amp = exchange.ampFactor;\n const amountBeforeFees = JSBI.subtract(toReserves.amount.raw, computeY(amp, JSBI.add(fromReserves.amount.raw, fromAmount.raw), computeD(amp, fromReserves.amount.raw, toReserves.amount.raw)));\n const outputAmountBeforeFees = new TokenAmount(toReserves.amount.token, amountBeforeFees);\n const fee = new TokenAmount(toReserves.amount.token, exchange.fees.trade.asFraction.multiply(amountBeforeFees).toFixed(0));\n const adminFee = new TokenAmount(toReserves.amount.token, exchange.fees.adminTrade.asFraction.multiply(fee.raw).toFixed(0));\n const lpFee = fee.subtract(adminFee);\n const outputAmount = new TokenAmount(toReserves.amount.token, JSBI.subtract(amountBeforeFees, fee.raw));\n return {\n outputAmountBeforeFees,\n outputAmount,\n fee: fee,\n lpFee,\n adminFee,\n };\n};\nconst N_COINS = JSBI.BigInt(2);\n/**\n * Calculates the amount of tokens withdrawn if only withdrawing one token.\n * @returns\n */\nexport const calculateEstimatedWithdrawOneAmount = ({ exchange, poolTokenAmount, withdrawToken, }) => {\n var _a, _b, _c, _d;\n if (poolTokenAmount.equalTo(0)) {\n // final quantities\n const zeroQuantity = new TokenAmount(withdrawToken, ZERO);\n return {\n withdrawAmount: zeroQuantity,\n withdrawAmountBeforeFees: zeroQuantity,\n swapFee: zeroQuantity,\n withdrawFee: zeroQuantity,\n lpSwapFee: zeroQuantity,\n lpWithdrawFee: zeroQuantity,\n adminSwapFee: zeroQuantity,\n adminWithdrawFee: zeroQuantity,\n };\n }\n const { ampFactor, fees } = exchange;\n const [baseReserves, quoteReserves] = [\n (_b = (_a = exchange.reserves.find((r) => r.amount.token.equals(withdrawToken))) === null || _a === void 0 ? void 0 : _a.amount.raw) !== null && _b !== void 0 ? _b : ZERO,\n (_d = (_c = exchange.reserves.find((r) => !r.amount.token.equals(withdrawToken))) === null || _c === void 0 ? void 0 : _c.amount.raw) !== null && _d !== void 0 ? _d : ZERO,\n ];\n const d_0 = computeD(ampFactor, baseReserves, quoteReserves);\n const d_1 = JSBI.subtract(d_0, JSBI.divide(JSBI.multiply(poolTokenAmount.raw, d_0), exchange.lpTotalSupply.raw));\n const new_y = computeY(ampFactor, quoteReserves, d_1);\n // expected_base_amount = swap_base_amount * d_1 / d_0 - new_y;\n const expected_base_amount = JSBI.subtract(JSBI.divide(JSBI.multiply(baseReserves, d_1), d_0), new_y);\n // expected_quote_amount = swap_quote_amount - swap_quote_amount * d_1 / d_0;\n const expected_quote_amount = JSBI.subtract(quoteReserves, JSBI.divide(JSBI.multiply(quoteReserves, d_1), d_0));\n // new_base_amount = swap_base_amount - expected_base_amount * fee / fee_denominator;\n const new_base_amount = new Fraction(baseReserves.toString(), 1).subtract(normalizedTradeFee(fees, N_COINS, expected_base_amount));\n // new_quote_amount = swap_quote_amount - expected_quote_amount * fee / fee_denominator;\n const new_quote_amount = new Fraction(quoteReserves.toString(), 1).subtract(normalizedTradeFee(fees, N_COINS, expected_quote_amount));\n const dy = new_base_amount.subtract(computeY(ampFactor, JSBI.BigInt(new_quote_amount.toFixed(0)), d_1).toString());\n const dy_0 = JSBI.subtract(baseReserves, new_y);\n // lp fees\n const swapFee = new Fraction(dy_0.toString(), 1).subtract(dy);\n const withdrawFee = dy.multiply(fees.withdraw.asFraction);\n // admin fees\n const adminSwapFee = swapFee.multiply(fees.adminTrade.asFraction);\n const adminWithdrawFee = withdrawFee.multiply(fees.adminWithdraw.asFraction);\n // final LP fees\n const lpSwapFee = swapFee.subtract(adminSwapFee);\n const lpWithdrawFee = withdrawFee.subtract(adminWithdrawFee);\n // final withdraw amount\n const withdrawAmount = dy.subtract(withdrawFee).subtract(swapFee);\n // final quantities\n return {\n withdrawAmount: new TokenAmount(withdrawToken, withdrawAmount.toFixed(0)),\n withdrawAmountBeforeFees: new TokenAmount(withdrawToken, dy.toFixed(0)),\n swapFee: new TokenAmount(withdrawToken, swapFee.toFixed(0)),\n withdrawFee: new TokenAmount(withdrawToken, withdrawFee.toFixed(0)),\n lpSwapFee: new TokenAmount(withdrawToken, lpSwapFee.toFixed(0)),\n lpWithdrawFee: new TokenAmount(withdrawToken, lpWithdrawFee.toFixed(0)),\n adminSwapFee: new TokenAmount(withdrawToken, adminSwapFee.toFixed(0)),\n adminWithdrawFee: new TokenAmount(withdrawToken, adminWithdrawFee.toFixed(0)),\n };\n};\n/**\n * Compute normalized fee for symmetric/asymmetric deposits/withdraws\n */\nexport const normalizedTradeFee = ({ trade }, n_coins, amount) => {\n const adjustedTradeFee = new Fraction(n_coins, JSBI.multiply(JSBI.subtract(n_coins, ONE), JSBI.BigInt(4)));\n return new Fraction(amount, 1).multiply(trade).multiply(adjustedTradeFee);\n};\nexport const calculateEstimatedWithdrawAmount = ({ poolTokenAmount, reserves, fees, lpTotalSupply, }) => {\n if (lpTotalSupply.equalTo(0)) {\n const zero = reserves.map((r) => new TokenAmount(r.amount.token, ZERO));\n return {\n withdrawAmounts: zero,\n withdrawAmountsBeforeFees: zero,\n fees: zero,\n };\n }\n const share = poolTokenAmount.divide(lpTotalSupply);\n const withdrawAmounts = reserves.map(({ amount }) => {\n const baseAmount = share.multiply(amount.raw);\n const fee = baseAmount.multiply(fees.withdraw.asFraction);\n return [\n new TokenAmount(amount.token, JSBI.BigInt(baseAmount.subtract(fee).toFixed(0))),\n {\n beforeFees: JSBI.BigInt(baseAmount.toFixed(0)),\n fee: JSBI.BigInt(fee.toFixed(0)),\n },\n ];\n });\n return {\n withdrawAmountsBeforeFees: withdrawAmounts.map(([amt, { beforeFees }]) => new TokenAmount(amt.token, beforeFees)),\n withdrawAmounts: [withdrawAmounts[0][0], withdrawAmounts[1][0]],\n fees: withdrawAmounts.map(([amt, { fee }]) => new TokenAmount(amt.token, fee)),\n };\n};\n/**\n * Calculate the estimated amount of LP tokens minted after a deposit.\n * @param exchange\n * @param depositAmountA\n * @param depositAmountB\n * @returns\n */\nexport const calculateEstimatedMintAmount = (exchange, depositAmountA, depositAmountB) => {\n if (JSBI.equal(depositAmountA, ZERO) && JSBI.equal(depositAmountB, ZERO)) {\n const zero = new TokenAmount(exchange.lpTotalSupply.token, ZERO);\n return {\n mintAmountBeforeFees: zero,\n mintAmount: zero,\n fees: zero,\n };\n }\n const amp = exchange.ampFactor;\n const [reserveA, reserveB] = exchange.reserves;\n const d0 = computeD(amp, reserveA.amount.raw, reserveB.amount.raw);\n const d1 = computeD(amp, JSBI.add(reserveA.amount.raw, depositAmountA), JSBI.add(reserveB.amount.raw, depositAmountB));\n if (JSBI.lessThan(d1, d0)) {\n throw new Error(\"New D cannot be less than previous D\");\n }\n const oldBalances = exchange.reserves.map((r) => r.amount.raw);\n const newBalances = [\n JSBI.add(reserveA.amount.raw, depositAmountA),\n JSBI.add(reserveB.amount.raw, depositAmountB),\n ];\n const adjustedBalances = newBalances.map((newBalance, i) => {\n const oldBalance = oldBalances[i];\n const idealBalance = new Fraction(d1, d0).multiply(oldBalance);\n const difference = idealBalance.subtract(newBalance);\n const diffAbs = difference.greaterThan(0)\n ? difference\n : difference.multiply(-1);\n const fee = normalizedTradeFee(exchange.fees, N_COINS, JSBI.BigInt(diffAbs.toFixed(0)));\n return JSBI.subtract(newBalance, JSBI.BigInt(fee.toFixed(0)));\n });\n const d2 = computeD(amp, adjustedBalances[0], adjustedBalances[1]);\n const lpSupply = exchange.lpTotalSupply;\n const mintAmountRaw = JSBI.divide(JSBI.multiply(lpSupply.raw, JSBI.subtract(d2, d0)), d0);\n const mintAmount = new TokenAmount(exchange.lpTotalSupply.token, mintAmountRaw);\n const mintAmountRawBeforeFees = JSBI.divide(JSBI.multiply(lpSupply.raw, JSBI.subtract(d1, d0)), d0);\n const fees = new TokenAmount(exchange.lpTotalSupply.token, JSBI.subtract(mintAmountRawBeforeFees, mintAmountRaw));\n const mintAmountBeforeFees = new TokenAmount(exchange.lpTotalSupply.token, mintAmountRawBeforeFees);\n return {\n mintAmount,\n mintAmountBeforeFees,\n fees,\n };\n};\n//# sourceMappingURL=amounts.js.map","import { PublicKey } from \"@solana/web3.js\";\nexport const DEFAULT_TOKEN_DECIMALS = 6;\nexport const ZERO_TS = 0;\nexport const SWAP_PROGRAM_ID = new PublicKey(\"SSwpkEEcbUqx4vtoEByFjSkhKdCT862DNVb52nZg1UZ\");\n//# sourceMappingURL=constants.js.map","import { Percent, u64 } from \"@saberhq/token-utils\";\nexport const DEFAULT_FEE = new Percent(0, 10000);\nexport const ZERO_FEES = {\n /**\n * Fee per trade\n */\n trade: DEFAULT_FEE,\n withdraw: DEFAULT_FEE,\n adminTrade: DEFAULT_FEE,\n adminWithdraw: DEFAULT_FEE,\n};\nconst recommendedFeesRaw = {\n adminTradeFeeNumerator: 50,\n adminTradeFeeDenominator: 100,\n adminWithdrawFeeNumerator: 50,\n adminWithdrawFeeDenominator: 100,\n tradeFeeNumerator: 20,\n tradeFeeDenominator: 10000,\n withdrawFeeNumerator: 50,\n withdrawFeeDenominator: 10000,\n};\nexport const RECOMMENDED_FEES = {\n trade: new Percent(recommendedFeesRaw.tradeFeeNumerator, recommendedFeesRaw.tradeFeeDenominator),\n withdraw: new Percent(recommendedFeesRaw.withdrawFeeNumerator, recommendedFeesRaw.withdrawFeeDenominator),\n adminTrade: new Percent(recommendedFeesRaw.adminTradeFeeNumerator, recommendedFeesRaw.adminTradeFeeDenominator),\n adminWithdraw: new Percent(recommendedFeesRaw.adminWithdrawFeeNumerator, recommendedFeesRaw.adminWithdrawFeeDenominator),\n};\nexport const encodeFees = (fees) => ({\n adminTradeFeeNumerator: new u64(fees.adminTrade.numerator.toString()).toBuffer(),\n adminTradeFeeDenominator: new u64(fees.adminTrade.denominator.toString()).toBuffer(),\n adminWithdrawFeeNumerator: new u64(fees.adminWithdraw.numerator.toString()).toBuffer(),\n adminWithdrawFeeDenominator: new u64(fees.adminWithdraw.denominator.toString()).toBuffer(),\n tradeFeeNumerator: new u64(fees.trade.numerator.toString()).toBuffer(),\n tradeFeeDenominator: new u64(fees.trade.denominator.toString()).toBuffer(),\n withdrawFeeNumerator: new u64(fees.withdraw.numerator.toString()).toBuffer(),\n withdrawFeeDenominator: new u64(fees.withdraw.denominator.toString()).toBuffer(),\n});\nexport const decodeFees = (raw) => ({\n adminTrade: new Percent(u64.fromBuffer(Buffer.from(raw.adminTradeFeeNumerator)).toString(), u64.fromBuffer(Buffer.from(raw.adminTradeFeeDenominator)).toString()),\n adminWithdraw: new Percent(u64.fromBuffer(Buffer.from(raw.adminWithdrawFeeNumerator)).toString(), u64.fromBuffer(Buffer.from(raw.adminWithdrawFeeDenominator)).toString()),\n trade: new Percent(u64.fromBuffer(Buffer.from(raw.tradeFeeNumerator)).toString(), u64.fromBuffer(Buffer.from(raw.tradeFeeDenominator)).toString()),\n withdraw: new Percent(u64.fromBuffer(Buffer.from(raw.withdrawFeeNumerator)).toString(), u64.fromBuffer(Buffer.from(raw.withdrawFeeDenominator)).toString()),\n});\n//# sourceMappingURL=fees.js.map","import { PublicKeyLayout, Uint64Layout } from \"@saberhq/token-utils\";\nimport * as BufferLayout from \"@solana/buffer-layout\";\n/**\n * Layout for StableSwap fees\n */\nexport const FeesLayout = BufferLayout.struct([\n Uint64Layout(\"adminTradeFeeNumerator\"),\n Uint64Layout(\"adminTradeFeeDenominator\"),\n Uint64Layout(\"adminWithdrawFeeNumerator\"),\n Uint64Layout(\"adminWithdrawFeeDenominator\"),\n Uint64Layout(\"tradeFeeNumerator\"),\n Uint64Layout(\"tradeFeeDenominator\"),\n Uint64Layout(\"withdrawFeeNumerator\"),\n Uint64Layout(\"withdrawFeeDenominator\"),\n], \"fees\");\n/**\n * Layout for stable swap state\n */\nexport const StableSwapLayout = BufferLayout.struct([\n BufferLayout.u8(\"isInitialized\"),\n BufferLayout.u8(\"isPaused\"),\n BufferLayout.u8(\"nonce\"),\n Uint64Layout(\"initialAmpFactor\"),\n Uint64Layout(\"targetAmpFactor\"),\n BufferLayout.ns64(\"startRampTs\"),\n BufferLayout.ns64(\"stopRampTs\"),\n BufferLayout.ns64(\"futureAdminDeadline\"),\n PublicKeyLayout(\"futureAdminAccount\"),\n PublicKeyLayout(\"adminAccount\"),\n PublicKeyLayout(\"tokenAccountA\"),\n PublicKeyLayout(\"tokenAccountB\"),\n PublicKeyLayout(\"tokenPool\"),\n PublicKeyLayout(\"mintA\"),\n PublicKeyLayout(\"mintB\"),\n PublicKeyLayout(\"adminFeeAccountA\"),\n PublicKeyLayout(\"adminFeeAccountB\"),\n FeesLayout,\n]);\n//# sourceMappingURL=layout.js.map","import * as BufferLayout from \"@solana/buffer-layout\";\nimport { encodeFees, ZERO_FEES } from \"../state/fees.js\";\nimport { buildInstruction } from \"./common.js\";\nimport { ApplyNewAdminIXLayout, PauseIXLayout, RampAIXLayout, SetFeeAccountIXLayout, SetNewFeesIXLayout, StopRampAIXLayout, UnpauseIXLayout, } from \"./layouts.js\";\n/**\n * Admin instruction.\n */\nexport var AdminInstruction;\n(function (AdminInstruction) {\n AdminInstruction[AdminInstruction[\"RAMP_A\"] = 100] = \"RAMP_A\";\n AdminInstruction[AdminInstruction[\"STOP_RAMP_A\"] = 101] = \"STOP_RAMP_A\";\n AdminInstruction[AdminInstruction[\"PAUSE\"] = 102] = \"PAUSE\";\n AdminInstruction[AdminInstruction[\"UNPAUSE\"] = 103] = \"UNPAUSE\";\n AdminInstruction[AdminInstruction[\"SET_FEE_ACCOUNT\"] = 104] = \"SET_FEE_ACCOUNT\";\n AdminInstruction[AdminInstruction[\"APPLY_NEW_ADMIN\"] = 105] = \"APPLY_NEW_ADMIN\";\n AdminInstruction[AdminInstruction[\"COMMIT_NEW_ADMIN\"] = 106] = \"COMMIT_NEW_ADMIN\";\n AdminInstruction[AdminInstruction[\"SET_NEW_FEES\"] = 107] = \"SET_NEW_FEES\";\n})(AdminInstruction || (AdminInstruction = {}));\n/**\n * Creates a ramp A instruction.\n */\nexport const createAdminRampAInstruction = ({ config, state: { adminAccount }, targetAmp, stopRamp, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: true },\n { pubkey: adminAccount, isSigner: true, isWritable: false },\n ];\n const data = Buffer.alloc(RampAIXLayout.span);\n RampAIXLayout.encode({\n instruction: AdminInstruction.RAMP_A,\n targetAmp: targetAmp.toBuffer(),\n stopRampTS: Math.floor(stopRamp.getTime() / 1000),\n }, data);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n/**\n * Creates a stop ramp A instruction.\n */\nexport const createAdminStopRampAInstruction = ({ config, state: { adminAccount }, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: true },\n { pubkey: adminAccount, isSigner: true, isWritable: false },\n ];\n let data = Buffer.alloc(StopRampAIXLayout.span);\n const encodeLength = StopRampAIXLayout.encode({\n instruction: AdminInstruction.STOP_RAMP_A,\n }, data);\n data = data.slice(0, encodeLength);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n/**\n * Creates a pause instruction.\n */\nexport const createAdminPauseInstruction = ({ config, state: { adminAccount }, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: true },\n { pubkey: adminAccount, isSigner: true, isWritable: false },\n ];\n const data = Buffer.alloc(PauseIXLayout.span);\n PauseIXLayout.encode({\n instruction: AdminInstruction.PAUSE,\n }, data);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n/**\n * Creates an unpause instruction.\n */\nexport const createAdminUnpauseInstruction = ({ config, state: { adminAccount }, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: true },\n { pubkey: adminAccount, isSigner: true, isWritable: false },\n ];\n const data = Buffer.alloc(UnpauseIXLayout.span);\n UnpauseIXLayout.encode({\n instruction: AdminInstruction.UNPAUSE,\n }, data);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n/**\n * Creates a set fee account instruction.\n */\nexport const createAdminSetFeeAccountInstruction = ({ config, state: { adminAccount }, tokenAccount, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: true },\n { pubkey: adminAccount, isSigner: true, isWritable: false },\n { pubkey: tokenAccount, isSigner: false, isWritable: false },\n ];\n const data = Buffer.alloc(SetFeeAccountIXLayout.span);\n SetFeeAccountIXLayout.encode({\n instruction: AdminInstruction.SET_FEE_ACCOUNT,\n }, data);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n/**\n * Creates a set new fees instruction.\n */\nexport const createAdminApplyNewAdminInstruction = ({ config, state: { adminAccount }, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: true },\n { pubkey: adminAccount, isSigner: true, isWritable: false },\n ];\n const data = Buffer.alloc(ApplyNewAdminIXLayout.span);\n ApplyNewAdminIXLayout.encode({\n instruction: AdminInstruction.APPLY_NEW_ADMIN,\n }, data);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n/**\n * Creates a set new fees instruction.\n */\nexport const createAdminCommitNewAdminInstruction = ({ config, state: { adminAccount }, newAdminAccount, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: true },\n { pubkey: adminAccount, isSigner: true, isWritable: false },\n { pubkey: newAdminAccount, isSigner: false, isWritable: false },\n ];\n const dataLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\")]);\n const data = Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: AdminInstruction.COMMIT_NEW_ADMIN,\n }, data);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n/**\n * Creates a set new fees instruction.\n */\nexport const createAdminSetNewFeesInstruction = ({ config, state: { adminAccount }, fees = ZERO_FEES, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: true },\n { pubkey: adminAccount, isSigner: true, isWritable: false },\n ];\n const data = Buffer.alloc(SetNewFeesIXLayout.span);\n SetNewFeesIXLayout.encode({\n instruction: AdminInstruction.SET_NEW_FEES,\n fees: encodeFees(fees),\n }, data);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n//# sourceMappingURL=admin.js.map","import { encodeFees, ZERO_FEES } from \"../state/index.js\";\nimport { buildInstruction } from \"./common.js\";\nimport { DepositIXLayout, InitializeSwapIXLayout, SwapIXLayout, WithdrawIXLayout, WithdrawOneIXLayout, } from \"./layouts.js\";\n/**\n * Instruction enum.\n */\nexport var StableSwapInstruction;\n(function (StableSwapInstruction) {\n StableSwapInstruction[StableSwapInstruction[\"INITIALIZE\"] = 0] = \"INITIALIZE\";\n StableSwapInstruction[StableSwapInstruction[\"SWAP\"] = 1] = \"SWAP\";\n StableSwapInstruction[StableSwapInstruction[\"DEPOSIT\"] = 2] = \"DEPOSIT\";\n StableSwapInstruction[StableSwapInstruction[\"WITHDRAW\"] = 3] = \"WITHDRAW\";\n StableSwapInstruction[StableSwapInstruction[\"WITHDRAW_ONE\"] = 4] = \"WITHDRAW_ONE\";\n})(StableSwapInstruction || (StableSwapInstruction = {}));\nexport const initializeSwapInstructionRaw = ({ config, adminAccount, tokenA: { adminFeeAccount: adminFeeAccountA, mint: tokenMintA, reserve: tokenAccountA, }, tokenB: { adminFeeAccount: adminFeeAccountB, mint: tokenMintB, reserve: tokenAccountB, }, poolTokenMint, destinationPoolTokenAccount, nonce, ampFactor, fees, }) => {\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: false },\n { pubkey: config.authority, isSigner: false, isWritable: false },\n { pubkey: adminAccount, isSigner: false, isWritable: false },\n { pubkey: adminFeeAccountA, isSigner: false, isWritable: false },\n { pubkey: adminFeeAccountB, isSigner: false, isWritable: false },\n { pubkey: tokenMintA, isSigner: false, isWritable: false },\n { pubkey: tokenAccountA, isSigner: false, isWritable: false },\n { pubkey: tokenMintB, isSigner: false, isWritable: false },\n { pubkey: tokenAccountB, isSigner: false, isWritable: false },\n { pubkey: poolTokenMint, isSigner: false, isWritable: true },\n { pubkey: destinationPoolTokenAccount, isSigner: false, isWritable: true },\n { pubkey: config.tokenProgramID, isSigner: false, isWritable: false },\n ];\n const data = Buffer.alloc(InitializeSwapIXLayout.span);\n InitializeSwapIXLayout.encode({\n instruction: StableSwapInstruction.INITIALIZE,\n nonce,\n ampFactor: ampFactor.toBuffer(),\n fees,\n }, data);\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\nexport const initializeSwapInstruction = ({ fees = ZERO_FEES, ...args }) => {\n return initializeSwapInstructionRaw({ ...args, fees: encodeFees(fees) });\n};\nexport const swapInstruction = ({ config, userAuthority, userSource, poolSource, poolDestination, userDestination, adminDestination, amountIn, minimumAmountOut, }) => {\n const data = Buffer.alloc(SwapIXLayout.span);\n SwapIXLayout.encode({\n instruction: StableSwapInstruction.SWAP,\n amountIn: amountIn.toBuffer(),\n minimumAmountOut: minimumAmountOut.toBuffer(),\n }, data);\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: false },\n { pubkey: config.authority, isSigner: false, isWritable: false },\n { pubkey: userAuthority, isSigner: true, isWritable: false },\n { pubkey: userSource, isSigner: false, isWritable: true },\n { pubkey: poolSource, isSigner: false, isWritable: true },\n { pubkey: poolDestination, isSigner: false, isWritable: true },\n { pubkey: userDestination, isSigner: false, isWritable: true },\n { pubkey: adminDestination, isSigner: false, isWritable: true },\n { pubkey: config.tokenProgramID, isSigner: false, isWritable: false },\n ];\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\nexport const depositInstruction = ({ config, userAuthority, sourceA, sourceB, tokenAccountA, tokenAccountB, poolTokenMint, poolTokenAccount, tokenAmountA, tokenAmountB, minimumPoolTokenAmount, }) => {\n const data = Buffer.alloc(DepositIXLayout.span);\n DepositIXLayout.encode({\n instruction: StableSwapInstruction.DEPOSIT,\n tokenAmountA: tokenAmountA.toBuffer(),\n tokenAmountB: tokenAmountB.toBuffer(),\n minimumPoolTokenAmount: minimumPoolTokenAmount.toBuffer(),\n }, data);\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: false },\n { pubkey: config.authority, isSigner: false, isWritable: false },\n { pubkey: userAuthority, isSigner: true, isWritable: false },\n { pubkey: sourceA, isSigner: false, isWritable: true },\n { pubkey: sourceB, isSigner: false, isWritable: true },\n { pubkey: tokenAccountA, isSigner: false, isWritable: true },\n { pubkey: tokenAccountB, isSigner: false, isWritable: true },\n { pubkey: poolTokenMint, isSigner: false, isWritable: true },\n { pubkey: poolTokenAccount, isSigner: false, isWritable: true },\n { pubkey: config.tokenProgramID, isSigner: false, isWritable: false },\n ];\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\nexport const withdrawInstruction = ({ config, userAuthority, poolMint, sourceAccount, tokenAccountA, tokenAccountB, userAccountA, userAccountB, adminFeeAccountA, adminFeeAccountB, poolTokenAmount, minimumTokenA, minimumTokenB, }) => {\n const data = Buffer.alloc(WithdrawIXLayout.span);\n WithdrawIXLayout.encode({\n instruction: StableSwapInstruction.WITHDRAW,\n poolTokenAmount: poolTokenAmount.toBuffer(),\n minimumTokenA: minimumTokenA.toBuffer(),\n minimumTokenB: minimumTokenB.toBuffer(),\n }, data);\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: false },\n { pubkey: config.authority, isSigner: false, isWritable: false },\n { pubkey: userAuthority, isSigner: true, isWritable: false },\n { pubkey: poolMint, isSigner: false, isWritable: true },\n { pubkey: sourceAccount, isSigner: false, isWritable: true },\n { pubkey: tokenAccountA, isSigner: false, isWritable: true },\n { pubkey: tokenAccountB, isSigner: false, isWritable: true },\n { pubkey: userAccountA, isSigner: false, isWritable: true },\n { pubkey: userAccountB, isSigner: false, isWritable: true },\n { pubkey: adminFeeAccountA, isSigner: false, isWritable: true },\n { pubkey: adminFeeAccountB, isSigner: false, isWritable: true },\n { pubkey: config.tokenProgramID, isSigner: false, isWritable: false },\n ];\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\nexport const withdrawOneInstruction = ({ config, userAuthority, poolMint, sourceAccount, baseTokenAccount, quoteTokenAccount, destinationAccount, adminDestinationAccount, poolTokenAmount, minimumTokenAmount, }) => {\n const data = Buffer.alloc(WithdrawOneIXLayout.span);\n WithdrawOneIXLayout.encode({\n instruction: StableSwapInstruction.WITHDRAW_ONE,\n poolTokenAmount: poolTokenAmount.toBuffer(),\n minimumTokenAmount: minimumTokenAmount.toBuffer(),\n }, data);\n const keys = [\n { pubkey: config.swapAccount, isSigner: false, isWritable: false },\n { pubkey: config.authority, isSigner: false, isWritable: false },\n { pubkey: userAuthority, isSigner: true, isWritable: false },\n { pubkey: poolMint, isSigner: false, isWritable: true },\n { pubkey: sourceAccount, isSigner: false, isWritable: true },\n { pubkey: baseTokenAccount, isSigner: false, isWritable: true },\n { pubkey: quoteTokenAccount, isSigner: false, isWritable: true },\n { pubkey: destinationAccount, isSigner: false, isWritable: true },\n { pubkey: adminDestinationAccount, isSigner: false, isWritable: true },\n { pubkey: config.tokenProgramID, isSigner: false, isWritable: false },\n ];\n return buildInstruction({\n config,\n keys,\n data,\n });\n};\n//# sourceMappingURL=swap.js.map","import { Uint64Layout } from \"@saberhq/token-utils\";\nimport * as BufferLayout from \"@solana/buffer-layout\";\nimport { FeesLayout } from \"../state/layout.js\";\nexport const InitializeSwapIXLayout = BufferLayout.struct([\n BufferLayout.u8(\"instruction\"),\n BufferLayout.u8(\"nonce\"),\n Uint64Layout(\"ampFactor\"),\n FeesLayout,\n]);\nexport const SwapIXLayout = BufferLayout.struct([\n BufferLayout.u8(\"instruction\"),\n Uint64Layout(\"amountIn\"),\n Uint64Layout(\"minimumAmountOut\"),\n]);\nexport const DepositIXLayout = BufferLayout.struct([\n BufferLayout.u8(\"instruction\"),\n Uint64Layout(\"tokenAmountA\"),\n Uint64Layout(\"tokenAmountB\"),\n Uint64Layout(\"minimumPoolTokenAmount\"),\n]);\nexport const WithdrawIXLayout = BufferLayout.struct([\n BufferLayout.u8(\"instruction\"),\n Uint64Layout(\"poolTokenAmount\"),\n Uint64Layout(\"minimumTokenA\"),\n Uint64Layout(\"minimumTokenB\"),\n]);\nexport const WithdrawOneIXLayout = BufferLayout.struct([\n BufferLayout.u8(\"instruction\"),\n Uint64Layout(\"poolTokenAmount\"),\n Uint64Layout(\"minimumTokenAmount\"),\n]);\nexport const RampAIXLayout = BufferLayout.struct([\n BufferLayout.u8(\"instruction\"),\n Uint64Layout(\"targetAmp\"),\n BufferLayout.ns64(\"stopRampTS\"),\n]);\nexport const StopRampAIXLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\")]);\nexport const PauseIXLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\")]);\nexport const UnpauseIXLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\")]);\nexport const SetFeeAccountIXLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\")]);\nexport const ApplyNewAdminIXLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\")]);\nexport const CommitNewAdminIXLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\")]);\nexport const SetNewFeesIXLayout = BufferLayout.struct([BufferLayout.u8(\"instruction\"), FeesLayout]);\n//# sourceMappingURL=layouts.js.map","import { TransactionEnvelope } from \"@saberhq/solana-contrib\";\nimport { createInitMintInstructions, createTokenAccount, getOrCreateATA, SPLToken, TOKEN_PROGRAM_ID, u64, } from \"@saberhq/token-utils\";\nimport { Keypair, PublicKey, SystemProgram } from \"@solana/web3.js\";\nimport { SWAP_PROGRAM_ID, ZERO_TS } from \"../constants.js\";\nimport { initializeSwapInstruction as createInitializeStableSwapInstruction } from \"../instructions/swap.js\";\nimport { findSwapAuthorityKey, StableSwap } from \"../stable-swap.js\";\nimport { ZERO_FEES } from \"../state/fees.js\";\nimport { StableSwapLayout } from \"../state/layout.js\";\nimport { createMutableTransactionInstructions, mergeInstructions, } from \"./instructions.js\";\n/**\n * Initializes a new StableSwap pool with a payer and stableSwapAccount.\n *\n * If you want to use a non-filesystem wallet as a payer, you'll want to generate\n * this transaction using StableSwap.createInitializeStableSwapTransaction\n * then sign it using the wallet directly.\n */\nexport const initializeStableSwap = async (provider, stableSwapAccount, initializeSwapInstruction) => {\n if (!stableSwapAccount.publicKey.equals(initializeSwapInstruction.config.swapAccount)) {\n throw new Error(\"stable swap public key\");\n }\n const { instructions } = await createInitializeStableSwapInstructionsRaw({\n provider,\n initializeSwapInstruction,\n });\n const tx = new TransactionEnvelope(provider, instructions.slice());\n console.log(\"createAccount and InitializeSwap\");\n const txSig = (await tx.confirm()).signature;\n console.log(`TxSig: ${txSig}`);\n return loadSwapFromInitializeArgs(initializeSwapInstruction);\n};\n/**\n * Creates a new instance of StableSwap from create args.\n * @param connection\n * @param initializeArgs\n * @returns\n */\nexport const loadSwapFromInitializeArgs = (initializeArgs) => {\n var _a, _b;\n return new StableSwap(initializeArgs.config, {\n isInitialized: true,\n nonce: initializeArgs.nonce,\n futureAdminDeadline: ZERO_TS,\n futureAdminAccount: PublicKey.default,\n adminAccount: initializeArgs.adminAccount,\n tokenA: initializeArgs.tokenA,\n tokenB: initializeArgs.tokenB,\n poolTokenMint: initializeArgs.poolTokenMint,\n initialAmpFactor: new u64(initializeArgs.ampFactor),\n isPaused: (_a = initializeArgs.isPaused) !== null && _a !== void 0 ? _a : false,\n targetAmpFactor: new u64(initializeArgs.ampFactor),\n startRampTimestamp: ZERO_TS,\n stopRampTimestamp: ZERO_TS,\n fees: (_b = initializeArgs.fees) !== null && _b !== void 0 ? _b : ZERO_FEES,\n });\n};\n/**\n * Creates a set of instructions to create a new StableSwap instance.\n *\n * After calling this, you must sign this transaction with the accounts:\n * - payer -- Account that holds the SOL to seed the account.\n * - args.config.stableSwapAccount -- This account is used once then its key is no longer relevant\n * - all returned signers\n */\nexport const createInitializeStableSwapInstructions = async ({ provider, swapProgramID = SWAP_PROGRAM_ID, adminAccount, tokenAMint, tokenBMint, ampFactor, fees, initialLiquidityProvider = adminAccount, useAssociatedAccountForInitialLP, swapAccountSigner = Keypair.generate(), poolTokenMintSigner = Keypair.generate(), seedPoolAccounts, }) => {\n const instructions = {\n createLPTokenMint: new TransactionEnvelope(provider, []),\n createInitialLPTokenAccount: new TransactionEnvelope(provider, []),\n createSwapTokenAAccounts: new TransactionEnvelope(provider, []),\n createSwapTokenBAccounts: new TransactionEnvelope(provider, []),\n seedPoolAccounts: createMutableTransactionInstructions(),\n initializeSwap: createMutableTransactionInstructions(),\n };\n // Create swap account if not specified\n const swapAccount = swapAccountSigner.publicKey;\n instructions.initializeSwap.signers.push(swapAccountSigner);\n // Create authority and nonce\n const [authority, nonce] = await findSwapAuthorityKey(swapAccount, swapProgramID);\n // Create LP token mint\n const { decimals } = await new SPLToken(provider.connection, tokenAMint, TOKEN_PROGRAM_ID, Keypair.generate()).getMintInfo();\n const mintBalanceNeeded = await SPLToken.getMinBalanceRentForExemptMint(provider.connection);\n instructions.createLPTokenMint = await createInitMintInstructions({\n provider,\n mintKP: poolTokenMintSigner,\n mintAuthority: authority,\n decimals,\n });\n const poolTokenMint = poolTokenMintSigner.publicKey;\n // Create initial LP token account\n let initialLPAccount = undefined;\n if (useAssociatedAccountForInitialLP) {\n const lpAccount = await getOrCreateATA({\n provider,\n mint: poolTokenMint,\n owner: initialLiquidityProvider,\n payer: provider.wallet.publicKey,\n });\n initialLPAccount = lpAccount.address;\n if (lpAccount.instruction) {\n instructions.createInitialLPTokenAccount = new TransactionEnvelope(provider, [lpAccount.instruction]);\n }\n }\n else {\n const { key: unassociatedInitialLPAccount, tx: initialLPInstructions } = await createTokenAccount({\n provider,\n mint: poolTokenMint,\n owner: initialLiquidityProvider,\n payer: provider.wallet.publicKey,\n });\n initialLPAccount = unassociatedInitialLPAccount;\n instructions.createInitialLPTokenAccount = initialLPInstructions;\n }\n // Create Swap Token A account\n const { info: tokenA, instructions: tokenAInstructions } = await initializeSwapTokenInfo({\n provider,\n mint: tokenAMint,\n authority,\n admin: adminAccount,\n });\n mergeInstructions(instructions.createSwapTokenAAccounts, tokenAInstructions);\n // Create Swap Token B account\n const { info: tokenB, instructions: tokenBInstructions } = await initializeSwapTokenInfo({\n provider,\n mint: tokenBMint,\n authority,\n admin: adminAccount,\n });\n mergeInstructions(instructions.createSwapTokenBAccounts, tokenBInstructions);\n // Seed the swap's Token A and token B accounts with tokens\n // On testnet, this is usually a mint.\n // On mainnet, this is usually a token transfer.\n const seedPoolAccountsResult = seedPoolAccounts({\n tokenAAccount: tokenA.reserve,\n tokenBAccount: tokenB.reserve,\n });\n mergeInstructions(instructions.seedPoolAccounts, seedPoolAccountsResult);\n const initializeSwapInstruction = {\n config: {\n swapAccount: swapAccount,\n authority,\n swapProgramID,\n tokenProgramID: TOKEN_PROGRAM_ID,\n },\n adminAccount,\n tokenA,\n tokenB,\n poolTokenMint,\n destinationPoolTokenAccount: initialLPAccount,\n nonce,\n ampFactor,\n fees,\n };\n const { balanceNeeded: swapBalanceNeeded, instructions: initializeStableSwapInstructions, } = await createInitializeStableSwapInstructionsRaw({\n provider,\n initializeSwapInstruction,\n });\n mergeInstructions(instructions.initializeSwap, {\n instructions: initializeStableSwapInstructions,\n signers: [],\n });\n return {\n initializeArgs: initializeSwapInstruction,\n balanceNeeded: mintBalanceNeeded + swapBalanceNeeded,\n instructions,\n };\n};\nconst initializeSwapTokenInfo = async ({ provider, mint, authority, admin, }) => {\n // Create Swap Token Account\n const { key: tokenAccount, tx: createSwapTokenAccountInstructions } = await createTokenAccount({\n provider,\n mint,\n owner: authority,\n payer: provider.wallet.publicKey,\n });\n // Create Admin Fee Account\n const { key: adminFeeAccount, tx: createAdminFeeAccountInstructions } = await createTokenAccount({\n provider,\n mint,\n owner: admin,\n payer: provider.wallet.publicKey,\n });\n return {\n info: {\n mint,\n reserve: tokenAccount,\n adminFeeAccount: adminFeeAccount,\n },\n instructions: createSwapTokenAccountInstructions.combine(createAdminFeeAccountInstructions),\n };\n};\n/**\n * Creates an unsigned InitializeSwap transaction.\n *\n * After calling this, you must sign this transaction with the accounts:\n * - payer -- Account that holds the SOL to seed the account.\n * - args.config.stableSwapAccount -- This account is used once then its key is no longer relevant\n */\nexport const createInitializeStableSwapInstructionsRaw = async ({ provider, initializeSwapInstruction, }) => {\n // Allocate memory for the account\n const balanceNeeded = await StableSwap.getMinBalanceRentForExemptStableSwap(provider.connection);\n return {\n balanceNeeded,\n instructions: [\n SystemProgram.createAccount({\n fromPubkey: provider.wallet.publicKey,\n newAccountPubkey: initializeSwapInstruction.config.swapAccount,\n lamports: balanceNeeded,\n space: StableSwapLayout.span,\n programId: initializeSwapInstruction.config.swapProgramID,\n }),\n createInitializeStableSwapInstruction(initializeSwapInstruction),\n ],\n };\n};\n/**\n * Deploys a new StableSwap pool.\n */\nexport const deployNewSwap = async ({ enableLogging = false, ...args }) => {\n const result = await createInitializeNewSwapTx(args);\n const { txs } = result;\n const { signature: setupAccounts1 } = await txs.setupAccounts1.confirm();\n if (enableLogging) {\n console.log(`Set up accounts pt 1: ${setupAccounts1}`);\n }\n const { signature: setupAccounts2 } = await txs.setupAccounts2.confirm();\n if (enableLogging) {\n console.log(`Set up accounts pt 2: ${setupAccounts2}`);\n }\n const { signature: initializeSwap } = await txs.initializeSwap.confirm();\n if (enableLogging) {\n console.log(`Initialize swap: ${initializeSwap}`);\n }\n return {\n ...result,\n txSigs: {\n setupAccounts1,\n setupAccounts2,\n initializeSwap,\n },\n };\n};\n/**\n * Creates the transactions for creating a new swap.\n *\n * This is split into two transactions: setup and initialize, to ensure we are under the size limit.\n */\nexport const createInitializeNewSwapTx = async (args) => {\n const { provider } = args;\n const { instructions, initializeArgs } = await createInitializeStableSwapInstructions({\n ...args,\n });\n const setupAccounts1 = [\n \"createLPTokenMint\",\n \"createSwapTokenAAccounts\",\n \"createSwapTokenBAccounts\",\n ]\n .map((method) => {\n return new TransactionEnvelope(provider, instructions[method].instructions.slice(), instructions[method].signers.slice());\n })\n .reduce((acc, tx) => acc.combine(tx));\n const setupAccounts2 = [\"createInitialLPTokenAccount\", \"seedPoolAccounts\"]\n .map((method) => {\n return new TransactionEnvelope(provider, instructions[method].instructions.slice(), instructions[method].signers.slice());\n })\n .reduce((acc, tx) => acc.combine(tx));\n const initializeSwap = new TransactionEnvelope(provider, instructions.initializeSwap.instructions.slice(), instructions.initializeSwap.signers.slice());\n const newSwap = loadSwapFromInitializeArgs(initializeArgs);\n return {\n swap: newSwap,\n initializeArgs,\n txs: {\n setupAccounts1,\n setupAccounts2,\n initializeSwap,\n },\n };\n};\n//# sourceMappingURL=initialize.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getPriceImpact, TradeDirection } from '.';\nimport { BN, BorshCoder } from '@project-serum/anchor';\nimport { computeY, computeD, calculateEstimatedMintAmount, calculateEstimatedWithdrawOneAmount, } from '@saberhq/stableswap-sdk';\nimport JSBI from 'jsbi';\nimport { Token, TokenAmount, Percent, ChainId } from '@saberhq/token-utils';\nimport { Keypair, PublicKey } from '@solana/web3.js';\nimport MarinadeIDL from '../marinade-finance.json';\nimport { CURVE_TYPE_ACCOUNTS } from '../constants';\n// Precision for base pool virtual price\nconst PRECISION = new BN(1000000);\nconst BASE_CACHE_EXPIRE = new BN(60 * 10);\nexport class StableSwap {\n constructor(amp, tokenMultiplier, depeg, extraAccounts, onChainTime) {\n this.amp = amp;\n this.tokenMultiplier = tokenMultiplier;\n this.depeg = depeg;\n this.extraAccounts = extraAccounts;\n this.onChainTime = onChainTime;\n }\n getBasePoolVirtualPrice(depegType) {\n if (depegType['marinade']) {\n const account = this.extraAccounts.get(CURVE_TYPE_ACCOUNTS.marinade.toBase58());\n const coder = new BorshCoder(MarinadeIDL);\n const stake = coder.accounts.decode('State', account.data);\n const msolPrice = stake.msolPrice;\n return msolPrice.mul(PRECISION).div(new BN(4294967296));\n }\n if (depegType['lido']) {\n const account = this.extraAccounts.get(CURVE_TYPE_ACCOUNTS.lido.toBase58());\n //https://github.com/mercurial-finance/mercurial-dynamic-amm/blob/main/programs/amm/tests/test_depeg_price.rs#L33\n const stSolSupply = new BN(account.data.readBigInt64LE(73).toString());\n const stSolBalance = new BN(account.data.readBigInt64LE(81).toString());\n return stSolBalance.mul(PRECISION).div(stSolSupply);\n }\n throw new Error('UnsupportedBasePool');\n }\n updateDepegInfoIfExpired() {\n return __awaiter(this, void 0, void 0, function* () {\n if (!this.depeg.depegType['none']) {\n const expired = this.onChainTime.toNumber() > this.depeg.baseCacheUpdated.add(BASE_CACHE_EXPIRE).toNumber();\n if (expired) {\n this.depeg.baseVirtualPrice = this.getBasePoolVirtualPrice(this.depeg.depegType);\n this.depeg.baseCacheUpdated = new BN(this.onChainTime);\n }\n }\n });\n }\n upscaleTokenA(tokenAAmount) {\n const { tokenAMultiplier } = this.tokenMultiplier;\n const normalizedTokenAAmount = tokenAAmount.mul(tokenAMultiplier);\n if (!this.depeg.depegType['none']) {\n return normalizedTokenAAmount.mul(PRECISION);\n }\n return normalizedTokenAAmount;\n }\n downscaleTokenA(tokenAAmount) {\n const { tokenAMultiplier } = this.tokenMultiplier;\n const denormalizedTokenAAmount = tokenAAmount.div(tokenAMultiplier);\n if (!this.depeg.depegType['none']) {\n return denormalizedTokenAAmount.div(PRECISION);\n }\n return denormalizedTokenAAmount;\n }\n upscaleTokenB(tokenBAmount) {\n const { tokenBMultiplier } = this.tokenMultiplier;\n const normalizedTokenBAmount = tokenBAmount.mul(tokenBMultiplier);\n if (!this.depeg.depegType['none']) {\n return normalizedTokenBAmount.mul(this.depeg.baseVirtualPrice);\n }\n return normalizedTokenBAmount;\n }\n downscaleTokenB(tokenBAmount) {\n const { tokenBMultiplier } = this.tokenMultiplier;\n const denormalizedTokenBAmount = tokenBAmount.div(tokenBMultiplier);\n if (!this.depeg.depegType['none']) {\n return denormalizedTokenBAmount.div(this.depeg.baseVirtualPrice);\n }\n return denormalizedTokenBAmount;\n }\n computeOutAmountWithoutSlippage(sourceAmount, swapSourceAmount, swapDestinationAmount, invariantD) {\n const SIXTEEN = new BN(16);\n const FOUR = new BN(4);\n const TWO = new BN(2);\n const amp = new BN(this.amp);\n const a = amp.mul(SIXTEEN);\n const b = a;\n const c = invariantD.mul(FOUR).sub(invariantD.mul(amp).mul(SIXTEEN));\n const numerator = TWO.mul(a)\n .mul(swapSourceAmount)\n .add(b.mul(swapDestinationAmount))\n .add(c)\n .mul(swapDestinationAmount);\n const denominator = a.mul(swapSourceAmount).add(TWO.mul(b).mul(swapDestinationAmount).add(c)).mul(swapSourceAmount);\n return sourceAmount.mul(numerator).div(denominator);\n }\n computeOutAmount(sourceAmount, swapSourceAmount, swapDestinationAmount, tradeDirection) {\n this.updateDepegInfoIfExpired();\n const [upscaledSourceAmount, upscaledSwapSourceAmount, upscaledSwapDestinationAmount] = tradeDirection == TradeDirection.AToB\n ? [\n this.upscaleTokenA(sourceAmount),\n this.upscaleTokenA(swapSourceAmount),\n this.upscaleTokenB(swapDestinationAmount),\n ]\n : [\n this.upscaleTokenB(sourceAmount),\n this.upscaleTokenB(swapSourceAmount),\n this.upscaleTokenA(swapDestinationAmount),\n ];\n const invariantD = computeD(JSBI.BigInt(this.amp), JSBI.BigInt(upscaledSwapSourceAmount.toString()), JSBI.BigInt(upscaledSwapDestinationAmount.toString()));\n const newSwapSourceAmount = JSBI.add(JSBI.BigInt(upscaledSwapSourceAmount.toString()), JSBI.BigInt(upscaledSourceAmount.toString()));\n const newSwapDestinationAmount = computeY(JSBI.BigInt(this.amp), newSwapSourceAmount, invariantD);\n let outAmount = upscaledSwapDestinationAmount.sub(new BN(newSwapDestinationAmount.toString()));\n let outAmountWithoutSlippage = this.computeOutAmountWithoutSlippage(upscaledSourceAmount, upscaledSwapSourceAmount, upscaledSwapDestinationAmount, new BN(invariantD.toString()));\n [outAmount, outAmountWithoutSlippage] =\n tradeDirection == TradeDirection.AToB\n ? [this.downscaleTokenB(outAmount), this.downscaleTokenB(outAmountWithoutSlippage)]\n : [this.downscaleTokenA(outAmount), this.downscaleTokenA(outAmountWithoutSlippage)];\n return {\n outAmount,\n priceImpact: getPriceImpact(outAmount, outAmountWithoutSlippage),\n };\n }\n computeD(tokenAAmount, tokenBAmount) {\n this.updateDepegInfoIfExpired();\n const upscaledTokenAAmount = this.upscaleTokenA(tokenAAmount);\n const upscaledTokenBAmount = this.upscaleTokenB(tokenBAmount);\n const invariantD = new BN(computeD(JSBI.BigInt(this.amp), JSBI.BigInt(upscaledTokenAAmount.toString()), JSBI.BigInt(upscaledTokenBAmount.toString())).toString());\n if (!this.depeg.depegType['none']) {\n return invariantD.div(PRECISION);\n }\n return invariantD;\n }\n computeInAmount(destAmount, swapSourceAmount, swapDestinationAmount, tradeDirection) {\n this.updateDepegInfoIfExpired();\n const [upscaledDestAmount, upscaledSwapSourceAmount, upscaledSwapDestinationAmount] = tradeDirection == TradeDirection.AToB\n ? [\n this.upscaleTokenB(destAmount),\n this.upscaleTokenA(swapSourceAmount),\n this.upscaleTokenB(swapDestinationAmount),\n ]\n : [\n this.upscaleTokenA(destAmount),\n this.upscaleTokenB(swapSourceAmount),\n this.upscaleTokenA(swapDestinationAmount),\n ];\n const invariantD = computeD(JSBI.BigInt(this.amp), JSBI.BigInt(upscaledSwapSourceAmount.toString()), JSBI.BigInt(upscaledSwapDestinationAmount.toString()));\n const newSwapDestAmount = JSBI.subtract(JSBI.BigInt(upscaledSwapDestinationAmount.toString()), JSBI.BigInt(upscaledDestAmount.toString()));\n const newSwapSourceAmount = computeY(JSBI.BigInt(this.amp), newSwapDestAmount, invariantD);\n const inAmount = new BN(newSwapSourceAmount.toString()).sub(swapSourceAmount);\n return tradeDirection == TradeDirection.AToB ? this.downscaleTokenA(inAmount) : this.downscaleTokenB(inAmount);\n }\n computeImbalanceDeposit(depositAAmount, depositBAmount, swapTokenAAmount, swapTokenBAmount, lpSupply, fees) {\n this.updateDepegInfoIfExpired();\n const [upscaledDepositAAmount, upscaledDepositBAmount, upscaledSwapTokenAAmount, upscaledSwapTokenBAmount] = [\n this.upscaleTokenA(depositAAmount),\n this.upscaleTokenB(depositBAmount),\n this.upscaleTokenA(swapTokenAAmount),\n this.upscaleTokenB(swapTokenBAmount),\n ];\n const { mintAmount } = calculateEstimatedMintAmount(Helper.toExchange(this.amp, upscaledSwapTokenAAmount, upscaledSwapTokenBAmount, lpSupply, fees), JSBI.BigInt(upscaledDepositAAmount.toString()), JSBI.BigInt(upscaledDepositBAmount.toString()));\n return mintAmount.toU64();\n }\n computeWithdrawOne(lpAmount, lpSupply, swapTokenAAmount, swapTokenBAmount, fees, tradeDirection) {\n this.updateDepegInfoIfExpired();\n const [upscaledSwapTokenAAmount, upscaledSwapTokenBAmount] = [\n this.upscaleTokenA(swapTokenAAmount),\n this.upscaleTokenB(swapTokenBAmount),\n ];\n const exchange = Helper.toExchange(this.amp, upscaledSwapTokenAAmount, upscaledSwapTokenBAmount, lpSupply, fees);\n const withdrawToken = tradeDirection == TradeDirection.BToA ? exchange.reserves[0].amount.token : exchange.reserves[1].amount.token;\n const { withdrawAmountBeforeFees } = calculateEstimatedWithdrawOneAmount({\n exchange,\n poolTokenAmount: Helper.toTokenAmount(lpAmount),\n withdrawToken,\n });\n // Before withdrawal fee\n return tradeDirection == TradeDirection.AToB\n ? this.downscaleTokenB(withdrawAmountBeforeFees.toU64())\n : this.downscaleTokenA(withdrawAmountBeforeFees.toU64());\n }\n}\n// Helper class to convert the type to the type from saber stable calculator\nclass Helper {\n static toExchange(amp, swapTokenAAmount, swapTokenBAmount, lpSupply, fees) {\n return {\n ampFactor: JSBI.BigInt(amp),\n fees: this.toFees(fees),\n lpTotalSupply: this.toTokenAmount(lpSupply),\n reserves: [this.toReserve(swapTokenAAmount), this.toReserve(swapTokenBAmount)],\n };\n }\n static toFees(fees) {\n return {\n adminTrade: new Percent(fees.ownerTradeFeeNumerator, fees.ownerTradeFeeDenominator),\n trade: new Percent(fees.tradeFeeNumerator, fees.tradeFeeDenominator),\n adminWithdraw: new Percent(0, 100),\n withdraw: new Percent(0, 100),\n };\n }\n static toTokenAmount(amount) {\n return new TokenAmount(\n // Only amount, address, and chainId are necessary for the calculation\n new Token({\n address: Keypair.generate().publicKey.toBase58(),\n chainId: ChainId.MainnetBeta,\n decimals: 0,\n name: '',\n symbol: '',\n }), amount.toString());\n }\n static toReserve(amount) {\n // Only amount is necessary for the calculation\n return {\n adminFeeAccount: PublicKey.default,\n amount: this.toTokenAmount(amount),\n reserveAccount: PublicKey.default,\n };\n }\n}\n//# sourceMappingURL=stable-swap.js.map","import Decimal from 'decimal.js';\nexport var TradeDirection;\n(function (TradeDirection) {\n TradeDirection[TradeDirection[\"AToB\"] = 0] = \"AToB\";\n TradeDirection[TradeDirection[\"BToA\"] = 1] = \"BToA\";\n})(TradeDirection || (TradeDirection = {}));\nexport const getPriceImpact = (amount, amountWithoutSlippage) => {\n const diff = amountWithoutSlippage.sub(amount);\n return new Decimal(diff.toString()).div(new Decimal(amountWithoutSlippage.toString()));\n};\nexport * from './stable-swap';\nexport * from './constant-product';\n//# sourceMappingURL=index.js.map","import sqrt from 'bn-sqrt';\nimport { BN } from '@project-serum/anchor';\nimport { getPriceImpact } from '.';\n// Typescript implementation of https://github.com/solana-labs/solana-program-library/blob/master/libraries/math/src/checked_ceil_div.rs#L29\nfunction ceilDiv(lhs, rhs) {\n let quotient = lhs.div(rhs);\n // Avoid dividing a small number by a big one and returning 1, and instead\n // fail.\n if (quotient.eq(new BN(0))) {\n throw new Error('ceilDiv result in zero');\n }\n let remainder = lhs.mod(rhs);\n if (remainder.gt(new BN(0))) {\n quotient = quotient.add(new BN(1));\n rhs = lhs.div(quotient);\n remainder = lhs.mod(quotient);\n if (remainder.gt(new BN(0))) {\n rhs = rhs.add(new BN(1));\n }\n }\n return [quotient, rhs];\n}\nexport class ConstantProductSwap {\n constructor() { }\n computeOutAmountWithoutSlippage(sourceAmount, swapSourceAmount, swapDestinationAmount) {\n return sourceAmount.mul(swapDestinationAmount).div(swapSourceAmount);\n }\n // Typescript implementation of https://github.com/solana-labs/solana-program-library/blob/master/token-swap/program/src/curve/constant_product.rs#L27\n computeOutAmount(sourceAmount, swapSourceAmount, swapDestinationAmount, _tradeDirection) {\n let invariant = swapSourceAmount.mul(swapDestinationAmount);\n let [newSwapDestinationAmount, _newSwapSourceAmount] = ceilDiv(invariant, swapSourceAmount.add(sourceAmount));\n let destinationAmountSwapped = swapDestinationAmount.sub(newSwapDestinationAmount);\n if (destinationAmountSwapped.eq(new BN(0))) {\n throw new Error('Swap result in zero');\n }\n const destinationAmountWithoutSlippage = this.computeOutAmountWithoutSlippage(sourceAmount, swapSourceAmount, swapDestinationAmount);\n return {\n outAmount: destinationAmountSwapped,\n priceImpact: getPriceImpact(destinationAmountSwapped, destinationAmountWithoutSlippage),\n };\n }\n computeD(tokenAAmount, tokenBAmount) {\n return sqrt(tokenAAmount.mul(tokenBAmount));\n }\n computeInAmount(destAmount, swapSourceAmount, swapDestinationAmount, _tradeDirection) {\n let invariant = swapSourceAmount.mul(swapDestinationAmount);\n let [newSwapSourceAmount, _newSwapDestinationAmount] = ceilDiv(invariant, swapDestinationAmount.sub(destAmount));\n let sourceAmount = newSwapSourceAmount.sub(swapSourceAmount);\n if (sourceAmount.eq(new BN(0))) {\n throw new Error('Swap result in zero');\n }\n return sourceAmount;\n }\n computeImbalanceDeposit(_depositAAmount, _depositBAmount, _swapTokenAAmount, _swapTokenBAmount, _lpSupply, _fees) {\n throw new Error('UnsupportedOperation');\n }\n computeWithdrawOne(_lpAmount, _lpSupply, _swapTokenAAmount, _swapTokenBAmount, _fees, _tradeDirection) {\n throw new Error('UnsupportedOperation');\n }\n}\n//# sourceMappingURL=constant-product.js.map","var __defProp = Object.defineProperty;\nvar __getOwnPropDesc = Object.getOwnPropertyDescriptor;\nvar __export = (target, all) => {\n for (var name2 in all)\n __defProp(target, name2, { get: all[name2], enumerable: true });\n};\nvar __decorateClass = (decorators, target, key, kind) => {\n var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;\n for (var i = decorators.length - 1, decorator; i >= 0; i--)\n if (decorator = decorators[i])\n result = (kind ? decorator(target, key, result) : decorator(result)) || result;\n if (kind && result)\n __defProp(target, key, result);\n return result;\n};\n\n// src/index.ts\nimport Decimal3 from \"decimal.js\";\n\n// src/context.ts\nimport { AnchorProvider, Program } from \"@project-serum/anchor\";\n\n// src/artifacts/whirlpool.json\nvar whirlpool_exports = {};\n__export(whirlpool_exports, {\n accounts: () => accounts,\n default: () => whirlpool_default,\n errors: () => errors,\n instructions: () => instructions,\n name: () => name,\n types: () => types,\n version: () => version\n});\nvar version = \"0.1.0\";\nvar name = \"whirlpool\";\nvar instructions = [\n {\n name: \"initializeConfig\",\n accounts: [\n {\n name: \"config\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"funder\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"feeAuthority\",\n type: \"publicKey\"\n },\n {\n name: \"collectProtocolFeesAuthority\",\n type: \"publicKey\"\n },\n {\n name: \"rewardEmissionsSuperAuthority\",\n type: \"publicKey\"\n },\n {\n name: \"defaultProtocolFeeRate\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"initializePool\",\n accounts: [\n {\n name: \"whirlpoolsConfig\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenMintA\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenMintB\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"funder\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"whirlpool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenVaultA\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"tokenVaultB\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"feeTier\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"bumps\",\n type: {\n defined: \"WhirlpoolBumps\"\n }\n },\n {\n name: \"tickSpacing\",\n type: \"u16\"\n },\n {\n name: \"initialSqrtPrice\",\n type: \"u128\"\n }\n ]\n },\n {\n name: \"initializeTickArray\",\n accounts: [\n {\n name: \"whirlpool\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"funder\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"tickArray\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"startTickIndex\",\n type: \"i32\"\n }\n ]\n },\n {\n name: \"initializeFeeTier\",\n accounts: [\n {\n name: \"config\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"feeTier\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"funder\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"feeAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"tickSpacing\",\n type: \"u16\"\n },\n {\n name: \"defaultFeeRate\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"initializeReward\",\n accounts: [\n {\n name: \"rewardAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"funder\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"whirlpool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"rewardMint\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"rewardVault\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"rewardIndex\",\n type: \"u8\"\n }\n ]\n },\n {\n name: \"setRewardEmissions\",\n accounts: [\n {\n name: \"whirlpool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"rewardAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"rewardVault\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"rewardIndex\",\n type: \"u8\"\n },\n {\n name: \"emissionsPerSecondX64\",\n type: \"u128\"\n }\n ]\n },\n {\n name: \"openPosition\",\n accounts: [\n {\n name: \"funder\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"owner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"position\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"positionMint\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"positionTokenAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"whirlpool\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"associatedTokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"bumps\",\n type: {\n defined: \"OpenPositionBumps\"\n }\n },\n {\n name: \"tickLowerIndex\",\n type: \"i32\"\n },\n {\n name: \"tickUpperIndex\",\n type: \"i32\"\n }\n ]\n },\n {\n name: \"openPositionWithMetadata\",\n accounts: [\n {\n name: \"funder\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"owner\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"position\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"positionMint\",\n isMut: true,\n isSigner: true\n },\n {\n name: \"positionMetadataAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"positionTokenAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"whirlpool\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"systemProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"rent\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"associatedTokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"metadataProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"metadataUpdateAuth\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"bumps\",\n type: {\n defined: \"OpenPositionWithMetadataBumps\"\n }\n },\n {\n name: \"tickLowerIndex\",\n type: \"i32\"\n },\n {\n name: \"tickUpperIndex\",\n type: \"i32\"\n }\n ]\n },\n {\n name: \"increaseLiquidity\",\n accounts: [\n {\n name: \"whirlpool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"positionAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"position\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"positionTokenAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenOwnerAccountA\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenOwnerAccountB\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenVaultA\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenVaultB\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tickArrayLower\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tickArrayUpper\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"liquidityAmount\",\n type: \"u128\"\n },\n {\n name: \"tokenMaxA\",\n type: \"u64\"\n },\n {\n name: \"tokenMaxB\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"decreaseLiquidity\",\n accounts: [\n {\n name: \"whirlpool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"positionAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"position\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"positionTokenAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenOwnerAccountA\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenOwnerAccountB\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenVaultA\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenVaultB\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tickArrayLower\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tickArrayUpper\",\n isMut: true,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"liquidityAmount\",\n type: \"u128\"\n },\n {\n name: \"tokenMinA\",\n type: \"u64\"\n },\n {\n name: \"tokenMinB\",\n type: \"u64\"\n }\n ]\n },\n {\n name: \"updateFeesAndRewards\",\n accounts: [\n {\n name: \"whirlpool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"position\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tickArrayLower\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tickArrayUpper\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"collectFees\",\n accounts: [\n {\n name: \"whirlpool\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"positionAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"position\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"positionTokenAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenOwnerAccountA\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenVaultA\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenOwnerAccountB\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenVaultB\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"collectReward\",\n accounts: [\n {\n name: \"whirlpool\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"positionAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"position\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"positionTokenAccount\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"rewardOwnerAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"rewardVault\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"rewardIndex\",\n type: \"u8\"\n }\n ]\n },\n {\n name: \"collectProtocolFees\",\n accounts: [\n {\n name: \"whirlpoolsConfig\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"whirlpool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"collectProtocolFeesAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"tokenVaultA\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenVaultB\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenDestinationA\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenDestinationB\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"swap\",\n accounts: [\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"tokenAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"whirlpool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenOwnerAccountA\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenVaultA\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenOwnerAccountB\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenVaultB\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tickArray0\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tickArray1\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tickArray2\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"oracle\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"amount\",\n type: \"u64\"\n },\n {\n name: \"otherAmountThreshold\",\n type: \"u64\"\n },\n {\n name: \"sqrtPriceLimit\",\n type: \"u128\"\n },\n {\n name: \"amountSpecifiedIsInput\",\n type: \"bool\"\n },\n {\n name: \"aToB\",\n type: \"bool\"\n }\n ]\n },\n {\n name: \"closePosition\",\n accounts: [\n {\n name: \"positionAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"receiver\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"position\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"positionMint\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"positionTokenAccount\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"tokenProgram\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"setDefaultFeeRate\",\n accounts: [\n {\n name: \"whirlpoolsConfig\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"feeTier\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"feeAuthority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"defaultFeeRate\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"setDefaultProtocolFeeRate\",\n accounts: [\n {\n name: \"whirlpoolsConfig\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"feeAuthority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"defaultProtocolFeeRate\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"setFeeRate\",\n accounts: [\n {\n name: \"whirlpoolsConfig\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"whirlpool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"feeAuthority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"feeRate\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"setProtocolFeeRate\",\n accounts: [\n {\n name: \"whirlpoolsConfig\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"whirlpool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"feeAuthority\",\n isMut: false,\n isSigner: true\n }\n ],\n args: [\n {\n name: \"protocolFeeRate\",\n type: \"u16\"\n }\n ]\n },\n {\n name: \"setFeeAuthority\",\n accounts: [\n {\n name: \"whirlpoolsConfig\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"feeAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"newFeeAuthority\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"setCollectProtocolFeesAuthority\",\n accounts: [\n {\n name: \"whirlpoolsConfig\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"collectProtocolFeesAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"newCollectProtocolFeesAuthority\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n },\n {\n name: \"setRewardAuthority\",\n accounts: [\n {\n name: \"whirlpool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"rewardAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"newRewardAuthority\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"rewardIndex\",\n type: \"u8\"\n }\n ]\n },\n {\n name: \"setRewardAuthorityBySuperAuthority\",\n accounts: [\n {\n name: \"whirlpoolsConfig\",\n isMut: false,\n isSigner: false\n },\n {\n name: \"whirlpool\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"rewardEmissionsSuperAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"newRewardAuthority\",\n isMut: false,\n isSigner: false\n }\n ],\n args: [\n {\n name: \"rewardIndex\",\n type: \"u8\"\n }\n ]\n },\n {\n name: \"setRewardEmissionsSuperAuthority\",\n accounts: [\n {\n name: \"whirlpoolsConfig\",\n isMut: true,\n isSigner: false\n },\n {\n name: \"rewardEmissionsSuperAuthority\",\n isMut: false,\n isSigner: true\n },\n {\n name: \"newRewardEmissionsSuperAuthority\",\n isMut: false,\n isSigner: false\n }\n ],\n args: []\n }\n];\nvar accounts = [\n {\n name: \"WhirlpoolsConfig\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"feeAuthority\",\n type: \"publicKey\"\n },\n {\n name: \"collectProtocolFeesAuthority\",\n type: \"publicKey\"\n },\n {\n name: \"rewardEmissionsSuperAuthority\",\n type: \"publicKey\"\n },\n {\n name: \"defaultProtocolFeeRate\",\n type: \"u16\"\n }\n ]\n }\n },\n {\n name: \"FeeTier\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"whirlpoolsConfig\",\n type: \"publicKey\"\n },\n {\n name: \"tickSpacing\",\n type: \"u16\"\n },\n {\n name: \"defaultFeeRate\",\n type: \"u16\"\n }\n ]\n }\n },\n {\n name: \"Position\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"whirlpool\",\n type: \"publicKey\"\n },\n {\n name: \"positionMint\",\n type: \"publicKey\"\n },\n {\n name: \"liquidity\",\n type: \"u128\"\n },\n {\n name: \"tickLowerIndex\",\n type: \"i32\"\n },\n {\n name: \"tickUpperIndex\",\n type: \"i32\"\n },\n {\n name: \"feeGrowthCheckpointA\",\n type: \"u128\"\n },\n {\n name: \"feeOwedA\",\n type: \"u64\"\n },\n {\n name: \"feeGrowthCheckpointB\",\n type: \"u128\"\n },\n {\n name: \"feeOwedB\",\n type: \"u64\"\n },\n {\n name: \"rewardInfos\",\n type: {\n array: [\n {\n defined: \"PositionRewardInfo\"\n },\n 3\n ]\n }\n }\n ]\n }\n },\n {\n name: \"TickArray\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"startTickIndex\",\n type: \"i32\"\n },\n {\n name: \"ticks\",\n type: {\n array: [\n {\n defined: \"Tick\"\n },\n 88\n ]\n }\n },\n {\n name: \"whirlpool\",\n type: \"publicKey\"\n }\n ]\n }\n },\n {\n name: \"Whirlpool\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"whirlpoolsConfig\",\n type: \"publicKey\"\n },\n {\n name: \"whirlpoolBump\",\n type: {\n array: [\n \"u8\",\n 1\n ]\n }\n },\n {\n name: \"tickSpacing\",\n type: \"u16\"\n },\n {\n name: \"tickSpacingSeed\",\n type: {\n array: [\n \"u8\",\n 2\n ]\n }\n },\n {\n name: \"feeRate\",\n type: \"u16\"\n },\n {\n name: \"protocolFeeRate\",\n type: \"u16\"\n },\n {\n name: \"liquidity\",\n type: \"u128\"\n },\n {\n name: \"sqrtPrice\",\n type: \"u128\"\n },\n {\n name: \"tickCurrentIndex\",\n type: \"i32\"\n },\n {\n name: \"protocolFeeOwedA\",\n type: \"u64\"\n },\n {\n name: \"protocolFeeOwedB\",\n type: \"u64\"\n },\n {\n name: \"tokenMintA\",\n type: \"publicKey\"\n },\n {\n name: \"tokenVaultA\",\n type: \"publicKey\"\n },\n {\n name: \"feeGrowthGlobalA\",\n type: \"u128\"\n },\n {\n name: \"tokenMintB\",\n type: \"publicKey\"\n },\n {\n name: \"tokenVaultB\",\n type: \"publicKey\"\n },\n {\n name: \"feeGrowthGlobalB\",\n type: \"u128\"\n },\n {\n name: \"rewardLastUpdatedTimestamp\",\n type: \"u64\"\n },\n {\n name: \"rewardInfos\",\n type: {\n array: [\n {\n defined: \"WhirlpoolRewardInfo\"\n },\n 3\n ]\n }\n }\n ]\n }\n }\n];\nvar types = [\n {\n name: \"OpenPositionBumps\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"positionBump\",\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"OpenPositionWithMetadataBumps\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"positionBump\",\n type: \"u8\"\n },\n {\n name: \"metadataBump\",\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"PositionRewardInfo\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"growthInsideCheckpoint\",\n type: \"u128\"\n },\n {\n name: \"amountOwed\",\n type: \"u64\"\n }\n ]\n }\n },\n {\n name: \"Tick\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"initialized\",\n type: \"bool\"\n },\n {\n name: \"liquidityNet\",\n type: \"i128\"\n },\n {\n name: \"liquidityGross\",\n type: \"u128\"\n },\n {\n name: \"feeGrowthOutsideA\",\n type: \"u128\"\n },\n {\n name: \"feeGrowthOutsideB\",\n type: \"u128\"\n },\n {\n name: \"rewardGrowthsOutside\",\n type: {\n array: [\n \"u128\",\n 3\n ]\n }\n }\n ]\n }\n },\n {\n name: \"WhirlpoolRewardInfo\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"mint\",\n type: \"publicKey\"\n },\n {\n name: \"vault\",\n type: \"publicKey\"\n },\n {\n name: \"authority\",\n type: \"publicKey\"\n },\n {\n name: \"emissionsPerSecondX64\",\n type: \"u128\"\n },\n {\n name: \"growthGlobalX64\",\n type: \"u128\"\n }\n ]\n }\n },\n {\n name: \"WhirlpoolBumps\",\n type: {\n kind: \"struct\",\n fields: [\n {\n name: \"whirlpoolBump\",\n type: \"u8\"\n }\n ]\n }\n },\n {\n name: \"CurrIndex\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Below\"\n },\n {\n name: \"Inside\"\n },\n {\n name: \"Above\"\n }\n ]\n }\n },\n {\n name: \"TickLabel\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Upper\"\n },\n {\n name: \"Lower\"\n }\n ]\n }\n },\n {\n name: \"Direction\",\n type: {\n kind: \"enum\",\n variants: [\n {\n name: \"Left\"\n },\n {\n name: \"Right\"\n }\n ]\n }\n }\n];\nvar errors = [\n {\n code: 6e3,\n name: \"InvalidEnum\",\n msg: \"Enum value could not be converted\"\n },\n {\n code: 6001,\n name: \"InvalidStartTick\",\n msg: \"Invalid start tick index provided.\"\n },\n {\n code: 6002,\n name: \"TickArrayExistInPool\",\n msg: \"Tick-array already exists in this whirlpool\"\n },\n {\n code: 6003,\n name: \"TickArrayIndexOutofBounds\",\n msg: \"Attempt to search for a tick-array failed\"\n },\n {\n code: 6004,\n name: \"InvalidTickSpacing\",\n msg: \"Tick-spacing is not supported\"\n },\n {\n code: 6005,\n name: \"ClosePositionNotEmpty\",\n msg: \"Position is not empty It cannot be closed\"\n },\n {\n code: 6006,\n name: \"DivideByZero\",\n msg: \"Unable to divide by zero\"\n },\n {\n code: 6007,\n name: \"NumberCastError\",\n msg: \"Unable to cast number into BigInt\"\n },\n {\n code: 6008,\n name: \"NumberDownCastError\",\n msg: \"Unable to down cast number\"\n },\n {\n code: 6009,\n name: \"TickNotFound\",\n msg: \"Tick not found within tick array\"\n },\n {\n code: 6010,\n name: \"InvalidTickIndex\",\n msg: \"Provided tick index is either out of bounds or uninitializable\"\n },\n {\n code: 6011,\n name: \"SqrtPriceOutOfBounds\",\n msg: \"Provided sqrt price out of bounds\"\n },\n {\n code: 6012,\n name: \"LiquidityZero\",\n msg: \"Liquidity amount must be greater than zero\"\n },\n {\n code: 6013,\n name: \"LiquidityTooHigh\",\n msg: \"Liquidity amount must be less than i64::MAX\"\n },\n {\n code: 6014,\n name: \"LiquidityOverflow\",\n msg: \"Liquidity overflow\"\n },\n {\n code: 6015,\n name: \"LiquidityUnderflow\",\n msg: \"Liquidity underflow\"\n },\n {\n code: 6016,\n name: \"LiquidityNetError\",\n msg: \"Tick liquidity net underflowed or overflowed\"\n },\n {\n code: 6017,\n name: \"TokenMaxExceeded\",\n msg: \"Exceeded token max\"\n },\n {\n code: 6018,\n name: \"TokenMinSubceeded\",\n msg: \"Did not meet token min\"\n },\n {\n code: 6019,\n name: \"MissingOrInvalidDelegate\",\n msg: \"Position token account has a missing or invalid delegate\"\n },\n {\n code: 6020,\n name: \"InvalidPositionTokenAmount\",\n msg: \"Position token amount must be 1\"\n },\n {\n code: 6021,\n name: \"InvalidTimestampConversion\",\n msg: \"Timestamp should be convertible from i64 to u64\"\n },\n {\n code: 6022,\n name: \"InvalidTimestamp\",\n msg: \"Timestamp should be greater than the last updated timestamp\"\n },\n {\n code: 6023,\n name: \"InvalidTickArraySequence\",\n msg: \"Invalid tick array sequence provided for instruction.\"\n },\n {\n code: 6024,\n name: \"InvalidTokenMintOrder\",\n msg: \"Token Mint in wrong order\"\n },\n {\n code: 6025,\n name: \"RewardNotInitialized\",\n msg: \"Reward not initialized\"\n },\n {\n code: 6026,\n name: \"InvalidRewardIndex\",\n msg: \"Invalid reward index\"\n },\n {\n code: 6027,\n name: \"RewardVaultAmountInsufficient\",\n msg: \"Reward vault requires amount to support emissions for at least one day\"\n },\n {\n code: 6028,\n name: \"FeeRateMaxExceeded\",\n msg: \"Exceeded max fee rate\"\n },\n {\n code: 6029,\n name: \"ProtocolFeeRateMaxExceeded\",\n msg: \"Exceeded max protocol fee rate\"\n },\n {\n code: 6030,\n name: \"MultiplicationShiftRightOverflow\",\n msg: \"Multiplication with shift right overflow\"\n },\n {\n code: 6031,\n name: \"MulDivOverflow\",\n msg: \"Muldiv overflow\"\n },\n {\n code: 6032,\n name: \"MulDivInvalidInput\",\n msg: \"Invalid div_u256 input\"\n },\n {\n code: 6033,\n name: \"MultiplicationOverflow\",\n msg: \"Multiplication overflow\"\n },\n {\n code: 6034,\n name: \"InvalidSqrtPriceLimitDirection\",\n msg: \"Provided SqrtPriceLimit not in the same direction as the swap.\"\n },\n {\n code: 6035,\n name: \"ZeroTradableAmount\",\n msg: \"There are no tradable amount to swap.\"\n },\n {\n code: 6036,\n name: \"AmountOutBelowMinimum\",\n msg: \"Amount out below minimum threshold\"\n },\n {\n code: 6037,\n name: \"AmountInAboveMaximum\",\n msg: \"Amount in above maximum threshold\"\n },\n {\n code: 6038,\n name: \"TickArraySequenceInvalidIndex\",\n msg: \"Invalid index for tick array sequence\"\n },\n {\n code: 6039,\n name: \"AmountCalcOverflow\",\n msg: \"Amount calculated overflows\"\n },\n {\n code: 6040,\n name: \"AmountRemainingOverflow\",\n msg: \"Amount remaining overflows\"\n }\n];\nvar whirlpool_default = {\n version,\n name,\n instructions,\n accounts,\n types,\n errors\n};\n\n// src/network/public/fetcher.ts\nimport invariant2 from \"tiny-invariant\";\nimport { AccountLayout as AccountLayout2 } from \"@solana/spl-token\";\n\n// src/network/public/parsing.ts\nimport { MintLayout, u64 as u644 } from \"@solana/spl-token\";\nimport { PublicKey as PublicKey10 } from \"@solana/web3.js\";\n\n// src/types/public/constants.ts\nimport { BN } from \"@project-serum/anchor\";\nimport { PublicKey } from \"@solana/web3.js\";\nvar ORCA_WHIRLPOOL_PROGRAM_ID = new PublicKey(\n \"whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc\"\n);\nvar ORCA_WHIRLPOOLS_CONFIG = new PublicKey(\"2LecshUwdy9xi7meFgHtFJQNSKk4KdTrcpvaB56dP2NQ\");\nvar NUM_REWARDS = 3;\nvar MAX_TICK_INDEX = 443636;\nvar MIN_TICK_INDEX = -443636;\nvar MAX_SQRT_PRICE = \"79226673515401279992447579055\";\nvar MIN_SQRT_PRICE = \"4295048016\";\nvar TICK_ARRAY_SIZE = 88;\nvar METADATA_PROGRAM_ADDRESS = new PublicKey(\n \"metaqbxxUerdq28cj1RbAWkYQm3ybzjb6a8bt518x1s\"\n);\nvar MAX_SWAP_TICK_ARRAYS = 3;\nvar PROTOCOL_FEE_RATE_MUL_VALUE = new BN(1e4);\nvar FEE_RATE_MUL_VALUE = new BN(1e6);\n\n// src/types/public/anchor-types.ts\nimport { BorshAccountsCoder } from \"@project-serum/anchor\";\nvar AccountName = /* @__PURE__ */ ((AccountName2) => {\n AccountName2[\"WhirlpoolsConfig\"] = \"WhirlpoolsConfig\";\n AccountName2[\"Position\"] = \"Position\";\n AccountName2[\"TickArray\"] = \"TickArray\";\n AccountName2[\"Whirlpool\"] = \"Whirlpool\";\n AccountName2[\"FeeTier\"] = \"FeeTier\";\n return AccountName2;\n})(AccountName || {});\nvar IDL = whirlpool_default;\nvar WHIRLPOOL_CODER = new BorshAccountsCoder(IDL);\nvar WHIRLPOOL_ACCOUNT_SIZE = WHIRLPOOL_CODER.size(IDL.accounts[4]);\n\n// src/instructions/close-position-ix.ts\nimport { TOKEN_PROGRAM_ID } from \"@solana/spl-token\";\nfunction closePositionIx(program, params) {\n const {\n positionAuthority,\n receiver,\n position,\n positionMint,\n positionTokenAccount\n } = params;\n const ix = program.instruction.closePosition({\n accounts: {\n positionAuthority,\n receiver,\n position,\n positionMint,\n positionTokenAccount,\n tokenProgram: TOKEN_PROGRAM_ID\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/collect-fees-ix.ts\nimport { TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID2 } from \"@solana/spl-token\";\nfunction collectFeesIx(program, params) {\n const {\n whirlpool,\n positionAuthority,\n position,\n positionTokenAccount,\n tokenOwnerAccountA,\n tokenOwnerAccountB,\n tokenVaultA,\n tokenVaultB\n } = params;\n const ix = program.instruction.collectFees({\n accounts: {\n whirlpool,\n positionAuthority,\n position,\n positionTokenAccount,\n tokenOwnerAccountA,\n tokenOwnerAccountB,\n tokenVaultA,\n tokenVaultB,\n tokenProgram: TOKEN_PROGRAM_ID2\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/collect-protocol-fees-ix.ts\nimport { TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID3 } from \"@solana/spl-token\";\nfunction collectProtocolFeesIx(program, params) {\n const {\n whirlpoolsConfig,\n whirlpool,\n collectProtocolFeesAuthority,\n tokenVaultA,\n tokenVaultB,\n tokenOwnerAccountA: tokenDestinationA,\n tokenOwnerAccountB: tokenDestinationB\n } = params;\n const ix = program.instruction.collectProtocolFees({\n accounts: {\n whirlpoolsConfig,\n whirlpool,\n collectProtocolFeesAuthority,\n tokenVaultA,\n tokenVaultB,\n tokenDestinationA,\n tokenDestinationB,\n tokenProgram: TOKEN_PROGRAM_ID3\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/collect-reward-ix.ts\nimport { TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID4 } from \"@solana/spl-token\";\nfunction collectRewardIx(program, params) {\n const {\n whirlpool,\n positionAuthority,\n position,\n positionTokenAccount,\n rewardOwnerAccount,\n rewardVault,\n rewardIndex\n } = params;\n const ix = program.instruction.collectReward(rewardIndex, {\n accounts: {\n whirlpool,\n positionAuthority,\n position,\n positionTokenAccount,\n rewardOwnerAccount,\n rewardVault,\n tokenProgram: TOKEN_PROGRAM_ID4\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/composites/collect-all-txn.ts\nimport { TokenUtil as TokenUtil2, TransactionBuilder as TransactionBuilder2, ZERO as ZERO2 } from \"@orca-so/common-sdk\";\nimport { createWSOLAccountInstructions as createWSOLAccountInstructions2 } from \"@orca-so/common-sdk/dist/helpers/token-instructions\";\nimport { NATIVE_MINT as NATIVE_MINT2 } from \"@solana/spl-token\";\nimport { PACKET_DATA_SIZE, PublicKey as PublicKey4 } from \"@solana/web3.js\";\n\n// src/ix.ts\nvar WhirlpoolIx = class {\n static initializeConfigIx(program, params) {\n return initializeConfigIx(program, params);\n }\n static initializeFeeTierIx(program, params) {\n return initializeFeeTierIx(program, params);\n }\n static initializePoolIx(program, params) {\n return initializePoolIx(program, params);\n }\n static initializeRewardIx(program, params) {\n return initializeRewardIx(program, params);\n }\n static initTickArrayIx(program, params) {\n return initTickArrayIx(program, params);\n }\n static openPositionIx(program, params) {\n return openPositionIx(program, params);\n }\n static openPositionWithMetadataIx(program, params) {\n return openPositionWithMetadataIx(program, params);\n }\n static increaseLiquidityIx(program, params) {\n return increaseLiquidityIx(program, params);\n }\n static decreaseLiquidityIx(program, params) {\n return decreaseLiquidityIx(program, params);\n }\n static closePositionIx(program, params) {\n return closePositionIx(program, params);\n }\n static swapIx(program, params) {\n return swapIx(program, params);\n }\n static updateFeesAndRewardsIx(program, params) {\n return updateFeesAndRewardsIx(program, params);\n }\n static collectFeesIx(program, params) {\n return collectFeesIx(program, params);\n }\n static collectProtocolFeesIx(program, params) {\n return collectProtocolFeesIx(program, params);\n }\n static collectRewardIx(program, params) {\n return collectRewardIx(program, params);\n }\n static setCollectProtocolFeesAuthorityIx(program, params) {\n return setCollectProtocolFeesAuthorityIx(program, params);\n }\n static setDefaultFeeRateIx(program, params) {\n return setDefaultFeeRateIx(program, params);\n }\n static setDefaultProtocolFeeRateIx(program, params) {\n return setDefaultProtocolFeeRateIx(program, params);\n }\n static setFeeAuthorityIx(program, params) {\n return setFeeAuthorityIx(program, params);\n }\n static setFeeRateIx(program, params) {\n return setFeeRateIx(program, params);\n }\n static setProtocolFeeRateIx(program, params) {\n return setProtocolFeeRateIx(program, params);\n }\n static setRewardAuthorityBySuperAuthorityIx(program, params) {\n return setRewardAuthorityBySuperAuthorityIx(program, params);\n }\n static setRewardAuthorityIx(program, params) {\n return setRewardAuthorityIx(program, params);\n }\n static setRewardEmissionsIx(program, params) {\n return setRewardEmissionsIx(program, params);\n }\n static setRewardEmissionsSuperAuthorityIx(program, params) {\n return setRewardEmissionsSuperAuthorityIx(program, params);\n }\n static collectAllForPositionsTxns(ctx, params, refresh) {\n return collectAllForPositionAddressesTxns(ctx, params, refresh);\n }\n};\n\n// src/utils/public/ix-utils.ts\nimport { TransactionBuilder } from \"@orca-so/common-sdk\";\nfunction toTx(ctx, ix) {\n return new TransactionBuilder(ctx.provider.connection, ctx.provider.wallet).addInstruction(ix);\n}\n\n// src/utils/public/pda-utils.ts\nimport { AddressUtil } from \"@orca-so/common-sdk\";\nimport { BN as BN4 } from \"@project-serum/anchor\";\n\n// src/utils/public/price-math.ts\nimport { MathUtil } from \"@orca-so/common-sdk\";\nimport { BN as BN3 } from \"@project-serum/anchor\";\nimport Decimal from \"decimal.js\";\n\n// src/utils/public/tick-utils.ts\nimport invariant from \"tiny-invariant\";\nvar TickUtil = class {\n constructor() {\n }\n static getOffsetIndex(tickIndex, arrayStartIndex, tickSpacing) {\n return Math.floor((tickIndex - arrayStartIndex) / tickSpacing);\n }\n static getStartTickIndex(tickIndex, tickSpacing, offset = 0) {\n const realIndex = Math.floor(tickIndex / tickSpacing / TICK_ARRAY_SIZE);\n const startTickIndex = (realIndex + offset) * tickSpacing * TICK_ARRAY_SIZE;\n const ticksInArray = TICK_ARRAY_SIZE * tickSpacing;\n const minTickIndex = MIN_TICK_INDEX - (MIN_TICK_INDEX % ticksInArray + ticksInArray);\n invariant(startTickIndex >= minTickIndex, `startTickIndex is too small - - ${startTickIndex}`);\n invariant(startTickIndex <= MAX_TICK_INDEX, `startTickIndex is too large - ${startTickIndex}`);\n return startTickIndex;\n }\n static getInitializableTickIndex(tickIndex, tickSpacing) {\n return tickIndex - tickIndex % tickSpacing;\n }\n static getNextInitializableTickIndex(tickIndex, tickSpacing) {\n return TickUtil.getInitializableTickIndex(tickIndex, tickSpacing) + tickSpacing;\n }\n static getPrevInitializableTickIndex(tickIndex, tickSpacing) {\n return TickUtil.getInitializableTickIndex(tickIndex, tickSpacing) - tickSpacing;\n }\n static findPreviousInitializedTickIndex(account, currentTickIndex, tickSpacing) {\n return TickUtil.findInitializedTick(\n account,\n currentTickIndex,\n tickSpacing,\n 0 /* Left */\n );\n }\n static findNextInitializedTickIndex(account, currentTickIndex, tickSpacing) {\n return TickUtil.findInitializedTick(\n account,\n currentTickIndex,\n tickSpacing,\n 1 /* Right */\n );\n }\n static findInitializedTick(account, currentTickIndex, tickSpacing, searchDirection) {\n var _a;\n const currentTickArrayIndex = tickIndexToInnerIndex(\n account.startTickIndex,\n currentTickIndex,\n tickSpacing\n );\n const increment = searchDirection === 1 /* Right */ ? 1 : -1;\n let stepInitializedTickArrayIndex = searchDirection === 1 /* Right */ ? currentTickArrayIndex + increment : currentTickArrayIndex;\n while (stepInitializedTickArrayIndex >= 0 && stepInitializedTickArrayIndex < account.ticks.length) {\n if ((_a = account.ticks[stepInitializedTickArrayIndex]) == null ? void 0 : _a.initialized) {\n return innerIndexToTickIndex(\n account.startTickIndex,\n stepInitializedTickArrayIndex,\n tickSpacing\n );\n }\n stepInitializedTickArrayIndex += increment;\n }\n return null;\n }\n static checkTickInBounds(tick) {\n return tick <= MAX_TICK_INDEX && tick >= MIN_TICK_INDEX;\n }\n static isTickInitializable(tick, tickSpacing) {\n return tick % tickSpacing === 0;\n }\n static invertTick(tick) {\n return -tick;\n }\n};\nvar TickArrayUtil = class {\n static getTickFromArray(tickArray, tickIndex, tickSpacing) {\n const realIndex = tickIndexToInnerIndex(tickArray.startTickIndex, tickIndex, tickSpacing);\n const tick = tickArray.ticks[realIndex];\n invariant(\n !!tick,\n `tick realIndex out of range - start - ${tickArray.startTickIndex} index - ${tickIndex}, realIndex - ${realIndex}`\n );\n return tick;\n }\n static async getTickArrayPDAs(tick, tickSpacing, numOfTickArrays, programId, whirlpoolAddress, aToB) {\n let arrayIndexList = [...Array(numOfTickArrays).keys()];\n if (aToB) {\n arrayIndexList = arrayIndexList.map((value) => -value);\n }\n return arrayIndexList.map((value) => {\n const startTick = TickUtil.getStartTickIndex(tick, tickSpacing, value);\n return PDAUtil.getTickArray(programId, whirlpoolAddress, startTick);\n });\n }\n static async getUninitializedArraysPDAs(ticks, programId, whirlpoolAddress, tickSpacing, fetcher, refresh) {\n const startTicks = ticks.map((tick) => TickUtil.getStartTickIndex(tick, tickSpacing));\n const removeDupeTicks = [...new Set(startTicks)];\n const tickArrayPDAs = removeDupeTicks.map(\n (tick) => PDAUtil.getTickArray(programId, whirlpoolAddress, tick)\n );\n const fetchedArrays = await fetcher.listTickArrays(\n tickArrayPDAs.map((pda) => pda.publicKey),\n refresh\n );\n const uninitializedIndices = TickArrayUtil.getUninitializedArrays(fetchedArrays);\n return uninitializedIndices.map((index) => {\n return {\n startIndex: removeDupeTicks[index],\n pda: tickArrayPDAs[index]\n };\n });\n }\n static getUninitializedArrays(tickArrays) {\n return tickArrays.map((value, index) => {\n if (!value) {\n return index;\n }\n return -1;\n }).filter((index) => index >= 0);\n }\n};\nfunction tickIndexToInnerIndex(startTickIndex, tickIndex, tickSpacing) {\n return Math.floor((tickIndex - startTickIndex) / tickSpacing);\n}\nfunction innerIndexToTickIndex(startTickIndex, tickArrayIndex, tickSpacing) {\n return startTickIndex + tickArrayIndex * tickSpacing;\n}\n\n// src/utils/public/price-math.ts\nvar BIT_PRECISION = 14;\nvar LOG_B_2_X32 = \"59543866431248\";\nvar LOG_B_P_ERR_MARGIN_LOWER_X64 = \"184467440737095516\";\nvar LOG_B_P_ERR_MARGIN_UPPER_X64 = \"15793534762490258745\";\nvar PriceMath = class {\n static priceToSqrtPriceX64(price, decimalsA, decimalsB) {\n return MathUtil.toX64(price.mul(Decimal.pow(10, decimalsB - decimalsA)).sqrt());\n }\n static sqrtPriceX64ToPrice(sqrtPriceX64, decimalsA, decimalsB) {\n return MathUtil.fromX64(sqrtPriceX64).pow(2).mul(Decimal.pow(10, decimalsA - decimalsB));\n }\n static tickIndexToSqrtPriceX64(tickIndex) {\n if (tickIndex > 0) {\n return new BN3(tickIndexToSqrtPricePositive(tickIndex));\n } else {\n return new BN3(tickIndexToSqrtPriceNegative(tickIndex));\n }\n }\n static sqrtPriceX64ToTickIndex(sqrtPriceX64) {\n if (sqrtPriceX64.gt(new BN3(MAX_SQRT_PRICE)) || sqrtPriceX64.lt(new BN3(MIN_SQRT_PRICE))) {\n throw new Error(\"Provided sqrtPrice is not within the supported sqrtPrice range.\");\n }\n const msb = sqrtPriceX64.bitLength() - 1;\n const adjustedMsb = new BN3(msb - 64);\n const log2pIntegerX32 = signedShiftLeft(adjustedMsb, 32, 128);\n let bit = new BN3(\"8000000000000000\", \"hex\");\n let precision = 0;\n let log2pFractionX64 = new BN3(0);\n let r = msb >= 64 ? sqrtPriceX64.shrn(msb - 63) : sqrtPriceX64.shln(63 - msb);\n while (bit.gt(new BN3(0)) && precision < BIT_PRECISION) {\n r = r.mul(r);\n let rMoreThanTwo = r.shrn(127);\n r = r.shrn(63 + rMoreThanTwo.toNumber());\n log2pFractionX64 = log2pFractionX64.add(bit.mul(rMoreThanTwo));\n bit = bit.shrn(1);\n precision += 1;\n }\n const log2pFractionX32 = log2pFractionX64.shrn(32);\n const log2pX32 = log2pIntegerX32.add(log2pFractionX32);\n const logbpX64 = log2pX32.mul(new BN3(LOG_B_2_X32));\n const tickLow = signedShiftRight(\n logbpX64.sub(new BN3(LOG_B_P_ERR_MARGIN_LOWER_X64)),\n 64,\n 128\n ).toNumber();\n const tickHigh = signedShiftRight(\n logbpX64.add(new BN3(LOG_B_P_ERR_MARGIN_UPPER_X64)),\n 64,\n 128\n ).toNumber();\n if (tickLow == tickHigh) {\n return tickLow;\n } else {\n const derivedTickHighSqrtPriceX64 = PriceMath.tickIndexToSqrtPriceX64(tickHigh);\n if (derivedTickHighSqrtPriceX64.lte(sqrtPriceX64)) {\n return tickHigh;\n } else {\n return tickLow;\n }\n }\n }\n static tickIndexToPrice(tickIndex, decimalsA, decimalsB) {\n return PriceMath.sqrtPriceX64ToPrice(\n PriceMath.tickIndexToSqrtPriceX64(tickIndex),\n decimalsA,\n decimalsB\n );\n }\n static priceToTickIndex(price, decimalsA, decimalsB) {\n return PriceMath.sqrtPriceX64ToTickIndex(\n PriceMath.priceToSqrtPriceX64(price, decimalsA, decimalsB)\n );\n }\n static priceToInitializableTickIndex(price, decimalsA, decimalsB, tickSpacing) {\n return TickUtil.getInitializableTickIndex(\n PriceMath.priceToTickIndex(price, decimalsA, decimalsB),\n tickSpacing\n );\n }\n static invertPrice(price, decimalsA, decimalsB) {\n const tick = PriceMath.priceToTickIndex(price, decimalsA, decimalsB);\n const invTick = TickUtil.invertTick(tick);\n return PriceMath.tickIndexToPrice(invTick, decimalsB, decimalsA);\n }\n static invertSqrtPriceX64(sqrtPriceX64) {\n const tick = PriceMath.sqrtPriceX64ToTickIndex(sqrtPriceX64);\n const invTick = TickUtil.invertTick(tick);\n return PriceMath.tickIndexToSqrtPriceX64(invTick);\n }\n};\nfunction tickIndexToSqrtPricePositive(tick) {\n let ratio;\n if ((tick & 1) != 0) {\n ratio = new BN3(\"79232123823359799118286999567\");\n } else {\n ratio = new BN3(\"79228162514264337593543950336\");\n }\n if ((tick & 2) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"79236085330515764027303304731\")), 96, 256);\n }\n if ((tick & 4) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"79244008939048815603706035061\")), 96, 256);\n }\n if ((tick & 8) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"79259858533276714757314932305\")), 96, 256);\n }\n if ((tick & 16) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"79291567232598584799939703904\")), 96, 256);\n }\n if ((tick & 32) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"79355022692464371645785046466\")), 96, 256);\n }\n if ((tick & 64) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"79482085999252804386437311141\")), 96, 256);\n }\n if ((tick & 128) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"79736823300114093921829183326\")), 96, 256);\n }\n if ((tick & 256) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"80248749790819932309965073892\")), 96, 256);\n }\n if ((tick & 512) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"81282483887344747381513967011\")), 96, 256);\n }\n if ((tick & 1024) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"83390072131320151908154831281\")), 96, 256);\n }\n if ((tick & 2048) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"87770609709833776024991924138\")), 96, 256);\n }\n if ((tick & 4096) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"97234110755111693312479820773\")), 96, 256);\n }\n if ((tick & 8192) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"119332217159966728226237229890\")), 96, 256);\n }\n if ((tick & 16384) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"179736315981702064433883588727\")), 96, 256);\n }\n if ((tick & 32768) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"407748233172238350107850275304\")), 96, 256);\n }\n if ((tick & 65536) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"2098478828474011932436660412517\")), 96, 256);\n }\n if ((tick & 131072) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"55581415166113811149459800483533\")), 96, 256);\n }\n if ((tick & 262144) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"38992368544603139932233054999993551\")), 96, 256);\n }\n return signedShiftRight(ratio, 32, 256);\n}\nfunction tickIndexToSqrtPriceNegative(tickIndex) {\n let tick = Math.abs(tickIndex);\n let ratio;\n if ((tick & 1) != 0) {\n ratio = new BN3(\"18445821805675392311\");\n } else {\n ratio = new BN3(\"18446744073709551616\");\n }\n if ((tick & 2) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"18444899583751176498\")), 64, 256);\n }\n if ((tick & 4) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"18443055278223354162\")), 64, 256);\n }\n if ((tick & 8) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"18439367220385604838\")), 64, 256);\n }\n if ((tick & 16) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"18431993317065449817\")), 64, 256);\n }\n if ((tick & 32) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"18417254355718160513\")), 64, 256);\n }\n if ((tick & 64) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"18387811781193591352\")), 64, 256);\n }\n if ((tick & 128) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"18329067761203520168\")), 64, 256);\n }\n if ((tick & 256) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"18212142134806087854\")), 64, 256);\n }\n if ((tick & 512) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"17980523815641551639\")), 64, 256);\n }\n if ((tick & 1024) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"17526086738831147013\")), 64, 256);\n }\n if ((tick & 2048) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"16651378430235024244\")), 64, 256);\n }\n if ((tick & 4096) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"15030750278693429944\")), 64, 256);\n }\n if ((tick & 8192) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"12247334978882834399\")), 64, 256);\n }\n if ((tick & 16384) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"8131365268884726200\")), 64, 256);\n }\n if ((tick & 32768) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"3584323654723342297\")), 64, 256);\n }\n if ((tick & 65536) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"696457651847595233\")), 64, 256);\n }\n if ((tick & 131072) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"26294789957452057\")), 64, 256);\n }\n if ((tick & 262144) != 0) {\n ratio = signedShiftRight(ratio.mul(new BN3(\"37481735321082\")), 64, 256);\n }\n return ratio;\n}\nfunction signedShiftLeft(n0, shiftBy, bitWidth) {\n let twosN0 = n0.toTwos(bitWidth).shln(shiftBy);\n twosN0.imaskn(bitWidth + 1);\n return twosN0.fromTwos(bitWidth);\n}\nfunction signedShiftRight(n0, shiftBy, bitWidth) {\n let twoN0 = n0.toTwos(bitWidth).shrn(shiftBy);\n twoN0.imaskn(bitWidth - shiftBy + 1);\n return twoN0.fromTwos(bitWidth - shiftBy);\n}\n\n// src/utils/public/pda-utils.ts\nvar PDA_WHIRLPOOL_SEED = \"whirlpool\";\nvar PDA_POSITION_SEED = \"position\";\nvar PDA_METADATA_SEED = \"metadata\";\nvar PDA_TICK_ARRAY_SEED = \"tick_array\";\nvar PDA_FEE_TIER_SEED = \"fee_tier\";\nvar PDA_ORACLE_SEED = \"oracle\";\nvar PDAUtil = class {\n static getWhirlpool(programId, whirlpoolsConfigKey, tokenMintAKey, tokenMintBKey, tickSpacing) {\n return AddressUtil.findProgramAddress(\n [\n Buffer.from(PDA_WHIRLPOOL_SEED),\n whirlpoolsConfigKey.toBuffer(),\n tokenMintAKey.toBuffer(),\n tokenMintBKey.toBuffer(),\n new BN4(tickSpacing).toArrayLike(Buffer, \"le\", 2)\n ],\n programId\n );\n }\n static getPosition(programId, positionMintKey) {\n return AddressUtil.findProgramAddress(\n [Buffer.from(PDA_POSITION_SEED), positionMintKey.toBuffer()],\n programId\n );\n }\n static getPositionMetadata(positionMintKey) {\n return AddressUtil.findProgramAddress(\n [\n Buffer.from(PDA_METADATA_SEED),\n METADATA_PROGRAM_ADDRESS.toBuffer(),\n positionMintKey.toBuffer()\n ],\n METADATA_PROGRAM_ADDRESS\n );\n }\n static getTickArray(programId, whirlpoolAddress, startTick) {\n return AddressUtil.findProgramAddress(\n [\n Buffer.from(PDA_TICK_ARRAY_SEED),\n whirlpoolAddress.toBuffer(),\n Buffer.from(startTick.toString())\n ],\n programId\n );\n }\n static getTickArrayFromTickIndex(tickIndex, tickSpacing, whirlpool, programId, tickArrayOffset = 0) {\n const startIndex = TickUtil.getStartTickIndex(tickIndex, tickSpacing, tickArrayOffset);\n return PDAUtil.getTickArray(\n AddressUtil.toPubKey(programId),\n AddressUtil.toPubKey(whirlpool),\n startIndex\n );\n }\n static getTickArrayFromSqrtPrice(sqrtPriceX64, tickSpacing, whirlpool, programId, tickArrayOffset = 0) {\n const tickIndex = PriceMath.sqrtPriceX64ToTickIndex(sqrtPriceX64);\n return PDAUtil.getTickArrayFromTickIndex(\n tickIndex,\n tickSpacing,\n whirlpool,\n programId,\n tickArrayOffset\n );\n }\n static getFeeTier(programId, whirlpoolsConfigAddress, tickSpacing) {\n return AddressUtil.findProgramAddress(\n [\n Buffer.from(PDA_FEE_TIER_SEED),\n whirlpoolsConfigAddress.toBuffer(),\n new BN4(tickSpacing).toArrayLike(Buffer, \"le\", 2)\n ],\n programId\n );\n }\n static getOracle(programId, whirlpoolAddress) {\n return AddressUtil.findProgramAddress(\n [Buffer.from(PDA_ORACLE_SEED), whirlpoolAddress.toBuffer()],\n programId\n );\n }\n};\n\n// src/utils/public/pool-utils.ts\nimport { AddressUtil as AddressUtil2, MathUtil as MathUtil2, Percentage } from \"@orca-so/common-sdk\";\nimport { BN as BN5 } from \"@project-serum/anchor\";\nimport { u64 } from \"@solana/spl-token\";\nimport { PublicKey as PublicKey2 } from \"@solana/web3.js\";\nimport Decimal2 from \"decimal.js\";\n\n// src/utils/public/types.ts\nvar SwapDirection = /* @__PURE__ */ ((SwapDirection2) => {\n SwapDirection2[\"AtoB\"] = \"aToB\";\n SwapDirection2[\"BtoA\"] = \"bToA\";\n return SwapDirection2;\n})(SwapDirection || {});\nvar TokenType = /* @__PURE__ */ ((TokenType2) => {\n TokenType2[TokenType2[\"TokenA\"] = 1] = \"TokenA\";\n TokenType2[TokenType2[\"TokenB\"] = 2] = \"TokenB\";\n return TokenType2;\n})(TokenType || {});\n\n// src/utils/public/pool-utils.ts\nvar PoolUtil = class {\n constructor() {\n }\n static isRewardInitialized(rewardInfo) {\n return !PublicKey2.default.equals(rewardInfo.mint) && !PublicKey2.default.equals(rewardInfo.vault);\n }\n static getTokenType(pool, mint) {\n if (pool.tokenMintA.equals(mint)) {\n return 1 /* TokenA */;\n } else if (pool.tokenMintB.equals(mint)) {\n return 2 /* TokenB */;\n }\n return void 0;\n }\n static getFeeRate(feeRate) {\n return Percentage.fromFraction(feeRate, 1e6);\n }\n static getProtocolFeeRate(protocolFeeRate) {\n return Percentage.fromFraction(protocolFeeRate, 1e4);\n }\n static orderMints(mintX, mintY) {\n let mintA, mintB;\n if (Buffer.compare(\n AddressUtil2.toPubKey(mintX).toBuffer(),\n AddressUtil2.toPubKey(mintY).toBuffer()\n ) < 0) {\n mintA = mintX;\n mintB = mintY;\n } else {\n mintA = mintY;\n mintB = mintX;\n }\n return [mintA, mintB];\n }\n static getTokenAmountsFromLiquidity(liquidity, currentSqrtPrice, lowerSqrtPrice, upperSqrtPrice, round_up) {\n const _liquidity = new Decimal2(liquidity.toString());\n const _currentPrice = new Decimal2(currentSqrtPrice.toString());\n const _lowerPrice = new Decimal2(lowerSqrtPrice.toString());\n const _upperPrice = new Decimal2(upperSqrtPrice.toString());\n let tokenA, tokenB;\n if (currentSqrtPrice.lt(lowerSqrtPrice)) {\n tokenA = MathUtil2.toX64_Decimal(_liquidity).mul(_upperPrice.sub(_lowerPrice)).div(_lowerPrice.mul(_upperPrice));\n tokenB = new Decimal2(0);\n } else if (currentSqrtPrice.lt(upperSqrtPrice)) {\n tokenA = MathUtil2.toX64_Decimal(_liquidity).mul(_upperPrice.sub(_currentPrice)).div(_currentPrice.mul(_upperPrice));\n tokenB = MathUtil2.fromX64_Decimal(_liquidity.mul(_currentPrice.sub(_lowerPrice)));\n } else {\n tokenA = new Decimal2(0);\n tokenB = MathUtil2.fromX64_Decimal(_liquidity.mul(_upperPrice.sub(_lowerPrice)));\n }\n if (round_up) {\n return {\n tokenA: new u64(tokenA.ceil().toString()),\n tokenB: new u64(tokenB.ceil().toString())\n };\n } else {\n return {\n tokenA: new u64(tokenA.floor().toString()),\n tokenB: new u64(tokenB.floor().toString())\n };\n }\n }\n static estimateLiquidityFromTokenAmounts(currTick, lowerTick, upperTick, tokenAmount) {\n if (upperTick < lowerTick) {\n throw new Error(\"upper tick cannot be lower than the lower tick\");\n }\n const currSqrtPrice = PriceMath.tickIndexToSqrtPriceX64(currTick);\n const lowerSqrtPrice = PriceMath.tickIndexToSqrtPriceX64(lowerTick);\n const upperSqrtPrice = PriceMath.tickIndexToSqrtPriceX64(upperTick);\n if (currTick >= upperTick) {\n return estLiquidityForTokenB(upperSqrtPrice, lowerSqrtPrice, tokenAmount.tokenB);\n } else if (currTick < lowerTick) {\n return estLiquidityForTokenA(lowerSqrtPrice, upperSqrtPrice, tokenAmount.tokenA);\n } else {\n const estLiquidityAmountA = estLiquidityForTokenA(\n currSqrtPrice,\n upperSqrtPrice,\n tokenAmount.tokenA\n );\n const estLiquidityAmountB = estLiquidityForTokenB(\n currSqrtPrice,\n lowerSqrtPrice,\n tokenAmount.tokenB\n );\n return BN5.min(estLiquidityAmountA, estLiquidityAmountB);\n }\n }\n static toBaseQuoteOrder(tokenMintAKey, tokenMintBKey) {\n const pair = [tokenMintAKey, tokenMintBKey];\n return pair.sort(sortByQuotePriority);\n }\n};\nfunction toTokenAmount(a, b) {\n return {\n tokenA: new u64(a.toString()),\n tokenB: new u64(b.toString())\n };\n}\nvar QUOTE_TOKENS = {\n Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB: 100,\n EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v: 90,\n USDH1SM1ojwWUga67PGrgFWUHibbjqMvuMaDkRJTgkX: 80,\n So11111111111111111111111111111111111111112: 70,\n mSoLzYCxHdYgdzU16g5QSh3i5K3z3KZK7ytfqcJm7So: 60,\n \"7dHbWXmci3dT8UFYWYZweBLXgycu7Y3iL6trKn1Y7ARj\": 50\n};\nvar DEFAULT_QUOTE_PRIORITY = 0;\nfunction getQuoteTokenPriority(mint) {\n const value = QUOTE_TOKENS[mint];\n if (value) {\n return value;\n }\n return DEFAULT_QUOTE_PRIORITY;\n}\nfunction sortByQuotePriority(mintLeft, mintRight) {\n return getQuoteTokenPriority(mintLeft.toString()) - getQuoteTokenPriority(mintRight.toString());\n}\nfunction estLiquidityForTokenA(sqrtPrice1, sqrtPrice2, tokenAmount) {\n const lowerSqrtPriceX64 = BN5.min(sqrtPrice1, sqrtPrice2);\n const upperSqrtPriceX64 = BN5.max(sqrtPrice1, sqrtPrice2);\n const num = MathUtil2.fromX64_BN(tokenAmount.mul(upperSqrtPriceX64).mul(lowerSqrtPriceX64));\n const dem = upperSqrtPriceX64.sub(lowerSqrtPriceX64);\n return num.div(dem);\n}\nfunction estLiquidityForTokenB(sqrtPrice1, sqrtPrice2, tokenAmount) {\n const lowerSqrtPriceX64 = BN5.min(sqrtPrice1, sqrtPrice2);\n const upperSqrtPriceX64 = BN5.max(sqrtPrice1, sqrtPrice2);\n const delta = upperSqrtPriceX64.sub(lowerSqrtPriceX64);\n return tokenAmount.shln(64).div(delta);\n}\n\n// src/utils/public/swap-utils.ts\nimport { ZERO, U64_MAX } from \"@orca-so/common-sdk\";\nimport BN6 from \"bn.js\";\nvar SwapUtils = class {\n static getDefaultSqrtPriceLimit(aToB) {\n return new BN6(aToB ? MIN_SQRT_PRICE : MAX_SQRT_PRICE);\n }\n static getDefaultOtherAmountThreshold(amountSpecifiedIsInput) {\n return amountSpecifiedIsInput ? ZERO : U64_MAX;\n }\n static getSwapDirection(pool, swapTokenMint, swapTokenIsInput) {\n const tokenType = PoolUtil.getTokenType(pool, swapTokenMint);\n if (!tokenType) {\n return void 0;\n }\n return tokenType === 1 /* TokenA */ === swapTokenIsInput ? \"aToB\" /* AtoB */ : \"bToA\" /* BtoA */;\n }\n static getTickArrayPublicKeys(tickCurrentIndex, tickSpacing, aToB, programId, whirlpoolAddress) {\n const shift = aToB ? 0 : tickSpacing;\n let offset = 0;\n let tickArrayAddresses = [];\n for (let i = 0; i < MAX_SWAP_TICK_ARRAYS; i++) {\n let startIndex;\n try {\n startIndex = TickUtil.getStartTickIndex(tickCurrentIndex + shift, tickSpacing, offset);\n } catch {\n return tickArrayAddresses;\n }\n const pda = PDAUtil.getTickArray(programId, whirlpoolAddress, startIndex);\n tickArrayAddresses.push(pda.publicKey);\n offset = aToB ? offset - 1 : offset + 1;\n }\n return tickArrayAddresses;\n }\n static async getTickArrays(tickCurrentIndex, tickSpacing, aToB, programId, whirlpoolAddress, fetcher, refresh) {\n const addresses = SwapUtils.getTickArrayPublicKeys(\n tickCurrentIndex,\n tickSpacing,\n aToB,\n programId,\n whirlpoolAddress\n );\n const data = await fetcher.listTickArrays(addresses, refresh);\n return addresses.map((addr, index) => {\n return {\n address: addr,\n data: data[index]\n };\n });\n }\n static calculateSwapAmountsFromQuote(amount, amountSpecifiedIsInput) {\n if (amountSpecifiedIsInput) {\n return {\n amount\n };\n } else {\n return {\n amount\n };\n }\n }\n};\n\n// src/utils/spl-token-utils.ts\nimport {\n AccountLayout,\n ASSOCIATED_TOKEN_PROGRAM_ID,\n NATIVE_MINT,\n Token,\n TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID5\n} from \"@solana/spl-token\";\nimport { Keypair, PublicKey as PublicKey3, SystemProgram } from \"@solana/web3.js\";\nfunction getAssociatedTokenAddressSync(mint, owner, programId = TOKEN_PROGRAM_ID5, associatedTokenProgramId = ASSOCIATED_TOKEN_PROGRAM_ID) {\n const [address] = PublicKey3.findProgramAddressSync(\n [new PublicKey3(owner).toBuffer(), programId.toBuffer(), new PublicKey3(mint).toBuffer()],\n associatedTokenProgramId\n );\n return address;\n}\nfunction createWSOLAccountInstructions(owner, amountToWrap, accountExemption, payer, unwrapDestination) {\n const payerKey = payer ?? owner;\n const unwrapDestinationKey = unwrapDestination ?? payer ?? owner;\n const tempAccount = new Keypair();\n const createIx = SystemProgram.createAccount({\n fromPubkey: payerKey,\n newAccountPubkey: tempAccount.publicKey,\n lamports: amountToWrap.toNumber() + accountExemption,\n space: AccountLayout.span,\n programId: TOKEN_PROGRAM_ID5\n });\n const initIx = Token.createInitAccountInstruction(\n TOKEN_PROGRAM_ID5,\n NATIVE_MINT,\n tempAccount.publicKey,\n owner\n );\n const closeIx = Token.createCloseAccountInstruction(\n TOKEN_PROGRAM_ID5,\n tempAccount.publicKey,\n unwrapDestinationKey,\n owner,\n []\n );\n return {\n address: tempAccount.publicKey,\n instructions: [createIx, initIx],\n cleanupInstructions: [closeIx],\n signers: [tempAccount]\n };\n}\n\n// src/utils/txn-utils.ts\nfunction convertListToMap(fetchedData, addresses) {\n const result = {};\n fetchedData.forEach((data, index) => {\n if (data) {\n const addr = addresses[index];\n result[addr] = data;\n }\n });\n return result;\n}\n\n// src/utils/whirlpool-ata-utils.ts\nimport { resolveOrCreateATAs, TokenUtil } from \"@orca-so/common-sdk\";\nfunction getTokenMintsFromWhirlpools(whirlpoolDatas, mintTypes = \"ALL\" /* ALL */) {\n let hasNativeMint = false;\n const mints = Array.from(\n whirlpoolDatas.reduce((accu, whirlpoolData) => {\n if (whirlpoolData) {\n if (mintTypes === \"ALL\" /* ALL */ || mintTypes === \"POOL_ONLY\" /* POOL_ONLY */) {\n const { tokenMintA, tokenMintB } = whirlpoolData;\n if (!TokenUtil.isNativeMint(tokenMintA)) {\n accu.add(tokenMintA);\n } else {\n hasNativeMint = true;\n }\n if (!TokenUtil.isNativeMint(tokenMintB)) {\n accu.add(tokenMintB);\n } else {\n hasNativeMint = true;\n }\n }\n if (mintTypes === \"ALL\" /* ALL */ || mintTypes === \"REWARDS_ONLY\" /* REWARD_ONLY */) {\n const rewardInfos = whirlpoolData.rewardInfos;\n rewardInfos.forEach((reward) => {\n if (TokenUtil.isNativeMint(reward.mint)) {\n hasNativeMint = true;\n }\n if (PoolUtil.isRewardInitialized(reward)) {\n accu.add(reward.mint);\n }\n });\n }\n }\n return accu;\n }, /* @__PURE__ */ new Set())\n );\n return {\n mintMap: mints,\n hasNativeMint\n };\n}\nasync function resolveAtaForMints(ctx, params) {\n const { mints, receiver, payer, accountExemption } = params;\n const receiverKey = receiver ?? ctx.wallet.publicKey;\n const payerKey = payer ?? ctx.wallet.publicKey;\n const resolvedAtaResults = await resolveOrCreateATAs(\n ctx.connection,\n receiverKey,\n mints.map((tokenMint) => {\n return { tokenMint };\n }),\n async () => accountExemption,\n payerKey\n );\n const { resolveAtaIxs, resolvedAtas } = resolvedAtaResults.reduce(\n (accu, curr) => {\n const { address, ...ix } = curr;\n accu.resolvedAtas.push(address);\n if (ix.instructions.length) {\n accu.resolveAtaIxs.push(ix);\n }\n return accu;\n },\n { resolvedAtas: [], resolveAtaIxs: [] }\n );\n const affliatedTokenAtaMap = convertListToMap(\n resolvedAtas,\n mints.map((mint) => mint.toBase58())\n );\n return {\n ataTokenAddresses: affliatedTokenAtaMap,\n resolveAtaIxs\n };\n}\n\n// src/instructions/update-fees-and-rewards-ix.ts\nfunction updateFeesAndRewardsIx(program, params) {\n const { whirlpool, position, tickArrayLower, tickArrayUpper } = params;\n const ix = program.instruction.updateFeesAndRewards({\n accounts: {\n whirlpool,\n position,\n tickArrayLower,\n tickArrayUpper\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/composites/collect-all-txn.ts\nasync function collectAllForPositionAddressesTxns(ctx, params, refresh = false) {\n const { positions, ...rest } = params;\n const posData = convertListToMap(\n await ctx.fetcher.listPositions(positions, refresh),\n positions.map((pos) => pos.toString())\n );\n const positionMap = {};\n Object.entries(posData).forEach(([addr, pos]) => {\n if (pos) {\n positionMap[addr] = pos;\n }\n });\n return collectAllForPositionsTxns(ctx, { positions: positionMap, ...rest });\n}\nasync function collectAllForPositionsTxns(ctx, params) {\n const { positions, receiver, positionAuthority, positionOwner, payer } = params;\n const receiverKey = receiver ?? ctx.wallet.publicKey;\n const positionAuthorityKey = positionAuthority ?? ctx.wallet.publicKey;\n const positionOwnerKey = positionOwner ?? ctx.wallet.publicKey;\n const payerKey = payer ?? ctx.wallet.publicKey;\n const positionList = Object.entries(positions);\n if (positionList.length === 0) {\n return [];\n }\n const whirlpoolAddrs = positionList.map(([, pos]) => pos.whirlpool.toBase58());\n const whirlpoolDatas = await ctx.fetcher.listPools(whirlpoolAddrs, false);\n const whirlpools = convertListToMap(whirlpoolDatas, whirlpoolAddrs);\n const accountExemption = await ctx.fetcher.getAccountRentExempt();\n const { ataTokenAddresses: affliatedTokenAtaMap, resolveAtaIxs } = await resolveAtaForMints(ctx, {\n mints: getTokenMintsFromWhirlpools(whirlpoolDatas).mintMap,\n accountExemption,\n receiver: receiverKey,\n payer: payerKey\n });\n const latestBlockhash = await ctx.connection.getLatestBlockhash(\"singleGossip\");\n const txBuilders = [];\n let pendingTxBuilder = new TransactionBuilder2(ctx.connection, ctx.wallet).addInstructions(\n resolveAtaIxs\n );\n let pendingTxBuilderTxSize = await pendingTxBuilder.txnSize({ latestBlockhash });\n let posIndex = 0;\n let reattempt = false;\n while (posIndex < positionList.length) {\n const [positionAddr, position] = positionList[posIndex];\n let positionTxBuilder = new TransactionBuilder2(ctx.connection, ctx.wallet);\n const { whirlpool: whirlpoolKey, positionMint } = position;\n const whirlpool = whirlpools[whirlpoolKey.toBase58()];\n if (!whirlpool) {\n throw new Error(\n `Unable to process positionMint ${positionMint} - unable to derive whirlpool ${whirlpoolKey.toBase58()}`\n );\n }\n const posHandlesNativeMint = TokenUtil2.isNativeMint(whirlpool.tokenMintA) || TokenUtil2.isNativeMint(whirlpool.tokenMintB);\n const txBuilderHasNativeMint = !!affliatedTokenAtaMap[NATIVE_MINT2.toBase58()];\n if (posHandlesNativeMint && !txBuilderHasNativeMint) {\n addNativeMintHandlingIx(\n positionTxBuilder,\n affliatedTokenAtaMap,\n receiverKey,\n accountExemption\n );\n }\n const collectIxForPosition = constructCollectPositionIx(\n ctx,\n new PublicKey4(positionAddr),\n position,\n whirlpools,\n positionOwnerKey,\n positionAuthorityKey,\n affliatedTokenAtaMap\n );\n positionTxBuilder.addInstructions(collectIxForPosition);\n const incrementTxSize = await positionTxBuilder.txnSize({ latestBlockhash });\n if (pendingTxBuilderTxSize + incrementTxSize < PACKET_DATA_SIZE) {\n pendingTxBuilder.addInstruction(positionTxBuilder.compressIx(false));\n pendingTxBuilderTxSize = pendingTxBuilderTxSize + incrementTxSize;\n posIndex += 1;\n reattempt = false;\n } else {\n if (reattempt) {\n throw new Error(\n `Unable to fit collection ix for ${position.positionMint.toBase58()} in a Transaction.`\n );\n }\n txBuilders.push(pendingTxBuilder);\n delete affliatedTokenAtaMap[NATIVE_MINT2.toBase58()];\n pendingTxBuilder = new TransactionBuilder2(ctx.connection, ctx.provider.wallet);\n pendingTxBuilderTxSize = 0;\n reattempt = true;\n }\n }\n txBuilders.push(pendingTxBuilder);\n return txBuilders;\n}\nfunction addNativeMintHandlingIx(txBuilder, affliatedTokenAtaMap, destinationWallet, accountExemption) {\n let { address: wSOLAta, ...resolveWSolIx } = createWSOLAccountInstructions2(\n destinationWallet,\n ZERO2,\n accountExemption\n );\n affliatedTokenAtaMap[NATIVE_MINT2.toBase58()] = wSOLAta;\n txBuilder.prependInstruction(resolveWSolIx);\n}\nvar constructCollectPositionIx = (ctx, positionKey, position, whirlpools, positionOwner, positionAuthority, affliatedTokenAtaMap) => {\n const ixForPosition = [];\n const {\n whirlpool: whirlpoolKey,\n liquidity,\n tickLowerIndex,\n tickUpperIndex,\n positionMint,\n rewardInfos: positionRewardInfos\n } = position;\n const whirlpool = whirlpools[whirlpoolKey.toBase58()];\n if (!whirlpool) {\n throw new Error(\n `Unable to process positionMint ${positionMint} - unable to derive whirlpool ${whirlpoolKey.toBase58()}`\n );\n }\n const { tickSpacing } = whirlpool;\n if (!liquidity.eq(ZERO2)) {\n ixForPosition.push(\n updateFeesAndRewardsIx(ctx.program, {\n position: positionKey,\n whirlpool: whirlpoolKey,\n tickArrayLower: PDAUtil.getTickArray(\n ctx.program.programId,\n whirlpoolKey,\n TickUtil.getStartTickIndex(tickLowerIndex, tickSpacing)\n ).publicKey,\n tickArrayUpper: PDAUtil.getTickArray(\n ctx.program.programId,\n whirlpoolKey,\n TickUtil.getStartTickIndex(tickUpperIndex, tickSpacing)\n ).publicKey\n })\n );\n }\n const positionTokenAccount = getAssociatedTokenAddressSync(\n positionMint.toBase58(),\n positionOwner.toBase58()\n );\n ixForPosition.push(\n WhirlpoolIx.collectFeesIx(ctx.program, {\n whirlpool: whirlpoolKey,\n position: positionKey,\n positionAuthority,\n positionTokenAccount,\n tokenOwnerAccountA: affliatedTokenAtaMap[whirlpool.tokenMintA.toBase58()],\n tokenOwnerAccountB: affliatedTokenAtaMap[whirlpool.tokenMintB.toBase58()],\n tokenVaultA: whirlpool.tokenVaultA,\n tokenVaultB: whirlpool.tokenVaultB\n })\n );\n positionRewardInfos.forEach((_, index) => {\n const rewardInfo = whirlpool.rewardInfos[index];\n if (PoolUtil.isRewardInitialized(rewardInfo)) {\n ixForPosition.push(\n WhirlpoolIx.collectRewardIx(ctx.program, {\n whirlpool: whirlpoolKey,\n position: positionKey,\n positionAuthority,\n positionTokenAccount,\n rewardIndex: index,\n rewardOwnerAccount: affliatedTokenAtaMap[rewardInfo.mint.toBase58()],\n rewardVault: rewardInfo.vault\n })\n );\n }\n });\n return ixForPosition;\n};\n\n// src/instructions/decrease-liquidity-ix.ts\nimport { TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID6 } from \"@solana/spl-token\";\nfunction decreaseLiquidityIx(program, params) {\n const {\n liquidityAmount,\n tokenMinA,\n tokenMinB,\n whirlpool,\n positionAuthority,\n position,\n positionTokenAccount,\n tokenOwnerAccountA,\n tokenOwnerAccountB,\n tokenVaultA,\n tokenVaultB,\n tickArrayLower,\n tickArrayUpper\n } = params;\n const ix = program.instruction.decreaseLiquidity(liquidityAmount, tokenMinA, tokenMinB, {\n accounts: {\n whirlpool,\n tokenProgram: TOKEN_PROGRAM_ID6,\n positionAuthority,\n position,\n positionTokenAccount,\n tokenOwnerAccountA,\n tokenOwnerAccountB,\n tokenVaultA,\n tokenVaultB,\n tickArrayLower,\n tickArrayUpper\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/increase-liquidity-ix.ts\nimport { TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID7 } from \"@solana/spl-token\";\nfunction increaseLiquidityIx(program, params) {\n const {\n liquidityAmount,\n tokenMaxA,\n tokenMaxB,\n whirlpool,\n positionAuthority,\n position,\n positionTokenAccount,\n tokenOwnerAccountA,\n tokenOwnerAccountB,\n tokenVaultA,\n tokenVaultB,\n tickArrayLower,\n tickArrayUpper\n } = params;\n const ix = program.instruction.increaseLiquidity(liquidityAmount, tokenMaxA, tokenMaxB, {\n accounts: {\n whirlpool,\n tokenProgram: TOKEN_PROGRAM_ID7,\n positionAuthority,\n position,\n positionTokenAccount,\n tokenOwnerAccountA,\n tokenOwnerAccountB,\n tokenVaultA,\n tokenVaultB,\n tickArrayLower,\n tickArrayUpper\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/initialize-config-ix.ts\nimport { SystemProgram as SystemProgram2 } from \"@solana/web3.js\";\nfunction initializeConfigIx(program, params) {\n const {\n feeAuthority,\n collectProtocolFeesAuthority,\n rewardEmissionsSuperAuthority,\n defaultProtocolFeeRate,\n funder\n } = params;\n const ix = program.instruction.initializeConfig(\n feeAuthority,\n collectProtocolFeesAuthority,\n rewardEmissionsSuperAuthority,\n defaultProtocolFeeRate,\n {\n accounts: {\n config: params.whirlpoolsConfigKeypair.publicKey,\n funder,\n systemProgram: SystemProgram2.programId\n }\n }\n );\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: [params.whirlpoolsConfigKeypair]\n };\n}\n\n// src/instructions/initialize-fee-tier-ix.ts\nimport { SystemProgram as SystemProgram3 } from \"@solana/web3.js\";\nfunction initializeFeeTierIx(program, params) {\n const { feeTierPda, whirlpoolsConfig, tickSpacing, feeAuthority, defaultFeeRate, funder } = params;\n const ix = program.instruction.initializeFeeTier(tickSpacing, defaultFeeRate, {\n accounts: {\n config: whirlpoolsConfig,\n feeTier: feeTierPda.publicKey,\n feeAuthority,\n funder,\n systemProgram: SystemProgram3.programId\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/initialize-pool-ix.ts\nimport { SystemProgram as SystemProgram4, SYSVAR_RENT_PUBKEY } from \"@solana/web3.js\";\nimport { TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID8 } from \"@solana/spl-token\";\nfunction initializePoolIx(program, params) {\n const {\n initSqrtPrice,\n tokenMintA,\n tokenMintB,\n whirlpoolsConfig,\n whirlpoolPda,\n feeTierKey,\n tokenVaultAKeypair,\n tokenVaultBKeypair,\n tickSpacing,\n funder\n } = params;\n const whirlpoolBumps = {\n whirlpoolBump: whirlpoolPda.bump\n };\n const ix = program.instruction.initializePool(whirlpoolBumps, tickSpacing, initSqrtPrice, {\n accounts: {\n whirlpoolsConfig,\n tokenMintA,\n tokenMintB,\n funder,\n whirlpool: whirlpoolPda.publicKey,\n tokenVaultA: tokenVaultAKeypair.publicKey,\n tokenVaultB: tokenVaultBKeypair.publicKey,\n feeTier: feeTierKey,\n tokenProgram: TOKEN_PROGRAM_ID8,\n systemProgram: SystemProgram4.programId,\n rent: SYSVAR_RENT_PUBKEY\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: [tokenVaultAKeypair, tokenVaultBKeypair]\n };\n}\n\n// src/instructions/initialize-reward-ix.ts\nimport * as anchor from \"@project-serum/anchor\";\nimport { TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID9 } from \"@solana/spl-token\";\nimport { SystemProgram as SystemProgram5 } from \"@solana/web3.js\";\nfunction initializeRewardIx(program, params) {\n const { rewardAuthority, funder, whirlpool, rewardMint, rewardVaultKeypair, rewardIndex } = params;\n const ix = program.instruction.initializeReward(rewardIndex, {\n accounts: {\n rewardAuthority,\n funder,\n whirlpool,\n rewardMint,\n rewardVault: rewardVaultKeypair.publicKey,\n tokenProgram: TOKEN_PROGRAM_ID9,\n systemProgram: SystemProgram5.programId,\n rent: anchor.web3.SYSVAR_RENT_PUBKEY\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: [rewardVaultKeypair]\n };\n}\n\n// src/instructions/initialize-tick-array-ix.ts\nimport * as anchor2 from \"@project-serum/anchor\";\nfunction initTickArrayIx(program, params) {\n const { whirlpool, funder, tickArrayPda } = params;\n const ix = program.instruction.initializeTickArray(params.startTick, {\n accounts: {\n whirlpool,\n funder,\n tickArray: tickArrayPda.publicKey,\n systemProgram: anchor2.web3.SystemProgram.programId\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/open-position-ix.ts\nimport { PublicKey as PublicKey9 } from \"@solana/web3.js\";\n\n// src/utils/instructions-util.ts\nimport { TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID10, ASSOCIATED_TOKEN_PROGRAM_ID as ASSOCIATED_TOKEN_PROGRAM_ID2 } from \"@solana/spl-token\";\nimport * as anchor3 from \"@project-serum/anchor\";\nimport { SystemProgram as SystemProgram6 } from \"@solana/web3.js\";\nfunction openPositionAccounts(params) {\n const {\n funder,\n owner,\n positionPda,\n positionMintAddress,\n positionTokenAccount: positionTokenAccountAddress,\n whirlpool: whirlpoolKey\n } = params;\n return {\n funder,\n owner,\n position: positionPda.publicKey,\n positionMint: positionMintAddress,\n positionTokenAccount: positionTokenAccountAddress,\n whirlpool: whirlpoolKey,\n tokenProgram: TOKEN_PROGRAM_ID10,\n systemProgram: SystemProgram6.programId,\n rent: anchor3.web3.SYSVAR_RENT_PUBKEY,\n associatedTokenProgram: ASSOCIATED_TOKEN_PROGRAM_ID2\n };\n}\n\n// src/instructions/open-position-ix.ts\nfunction openPositionIx(program, params) {\n const { positionPda, tickLowerIndex, tickUpperIndex } = params;\n const bumps = {\n positionBump: positionPda.bump\n };\n const ix = program.instruction.openPosition(bumps, tickLowerIndex, tickUpperIndex, {\n accounts: openPositionAccounts(params)\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\nfunction openPositionWithMetadataIx(program, params) {\n const { positionPda, metadataPda, tickLowerIndex, tickUpperIndex } = params;\n const bumps = {\n positionBump: positionPda.bump,\n metadataBump: metadataPda.bump\n };\n const ix = program.instruction.openPositionWithMetadata(bumps, tickLowerIndex, tickUpperIndex, {\n accounts: {\n ...openPositionAccounts(params),\n positionMetadataAccount: metadataPda.publicKey,\n metadataProgram: METADATA_PROGRAM_ADDRESS,\n metadataUpdateAuth: new PublicKey9(\"3axbTs2z5GBy6usVbNVoqEgZMng3vZvMnAoX29BFfwhr\")\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/set-collect-protocol-fees-authority-ix.ts\nfunction setCollectProtocolFeesAuthorityIx(program, params) {\n const { whirlpoolsConfig, collectProtocolFeesAuthority, newCollectProtocolFeesAuthority } = params;\n const ix = program.instruction.setCollectProtocolFeesAuthority({\n accounts: {\n whirlpoolsConfig,\n collectProtocolFeesAuthority,\n newCollectProtocolFeesAuthority\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/set-default-fee-rate-ix.ts\nfunction setDefaultFeeRateIx(program, params) {\n const { whirlpoolsConfig, feeAuthority, tickSpacing, defaultFeeRate } = params;\n const feeTierPda = PDAUtil.getFeeTier(program.programId, whirlpoolsConfig, tickSpacing);\n const ix = program.instruction.setDefaultFeeRate(defaultFeeRate, {\n accounts: {\n whirlpoolsConfig,\n feeTier: feeTierPda.publicKey,\n feeAuthority\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/set-default-protocol-fee-rate-ix.ts\nfunction setDefaultProtocolFeeRateIx(program, params) {\n const { whirlpoolsConfig, feeAuthority, defaultProtocolFeeRate } = params;\n const ix = program.instruction.setDefaultProtocolFeeRate(defaultProtocolFeeRate, {\n accounts: {\n whirlpoolsConfig,\n feeAuthority\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/set-fee-authority-ix.ts\nfunction setFeeAuthorityIx(program, params) {\n const { whirlpoolsConfig, feeAuthority, newFeeAuthority } = params;\n const ix = program.instruction.setFeeAuthority({\n accounts: {\n whirlpoolsConfig,\n feeAuthority,\n newFeeAuthority\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/set-fee-rate-ix.ts\nfunction setFeeRateIx(program, params) {\n const { whirlpoolsConfig, whirlpool, feeAuthority, feeRate } = params;\n const ix = program.instruction.setFeeRate(feeRate, {\n accounts: {\n whirlpoolsConfig,\n whirlpool,\n feeAuthority\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/set-protocol-fee-rate-ix.ts\nfunction setProtocolFeeRateIx(program, params) {\n const { whirlpoolsConfig, whirlpool, feeAuthority, protocolFeeRate } = params;\n const ix = program.instruction.setProtocolFeeRate(protocolFeeRate, {\n accounts: {\n whirlpoolsConfig,\n whirlpool,\n feeAuthority\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/set-reward-authority-by-super-authority-ix.ts\nfunction setRewardAuthorityBySuperAuthorityIx(program, params) {\n const {\n whirlpoolsConfig,\n whirlpool,\n rewardEmissionsSuperAuthority,\n newRewardAuthority,\n rewardIndex\n } = params;\n const ix = program.instruction.setRewardAuthorityBySuperAuthority(rewardIndex, {\n accounts: {\n whirlpoolsConfig,\n whirlpool,\n rewardEmissionsSuperAuthority,\n newRewardAuthority\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/set-reward-authority-ix.ts\nfunction setRewardAuthorityIx(program, params) {\n const { whirlpool, rewardAuthority, newRewardAuthority, rewardIndex } = params;\n const ix = program.instruction.setRewardAuthority(rewardIndex, {\n accounts: {\n whirlpool,\n rewardAuthority,\n newRewardAuthority\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/set-reward-emissions-ix.ts\nfunction setRewardEmissionsIx(program, params) {\n const {\n rewardAuthority,\n whirlpool,\n rewardIndex,\n rewardVaultKey: rewardVault,\n emissionsPerSecondX64\n } = params;\n const ix = program.instruction.setRewardEmissions(rewardIndex, emissionsPerSecondX64, {\n accounts: {\n rewardAuthority,\n whirlpool,\n rewardVault\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/set-reward-emissions-super-authority-ix.ts\nfunction setRewardEmissionsSuperAuthorityIx(program, params) {\n const { whirlpoolsConfig, rewardEmissionsSuperAuthority, newRewardEmissionsSuperAuthority } = params;\n const ix = program.instruction.setRewardEmissionsSuperAuthority({\n accounts: {\n whirlpoolsConfig,\n rewardEmissionsSuperAuthority,\n newRewardEmissionsSuperAuthority\n }\n });\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/instructions/swap-ix.ts\nimport { TOKEN_PROGRAM_ID as TOKEN_PROGRAM_ID11 } from \"@solana/spl-token\";\nfunction swapIx(program, params) {\n const {\n amount,\n otherAmountThreshold,\n sqrtPriceLimit,\n amountSpecifiedIsInput,\n aToB,\n whirlpool,\n tokenAuthority,\n tokenOwnerAccountA,\n tokenVaultA,\n tokenOwnerAccountB,\n tokenVaultB,\n tickArray0,\n tickArray1,\n tickArray2,\n oracle\n } = params;\n const ix = program.instruction.swap(\n amount,\n otherAmountThreshold,\n sqrtPriceLimit,\n amountSpecifiedIsInput,\n aToB,\n {\n accounts: {\n tokenProgram: TOKEN_PROGRAM_ID11,\n tokenAuthority,\n whirlpool,\n tokenOwnerAccountA,\n tokenVaultA,\n tokenOwnerAccountB,\n tokenVaultB,\n tickArray0,\n tickArray1,\n tickArray2,\n oracle\n }\n }\n );\n return {\n instructions: [ix],\n cleanupInstructions: [],\n signers: []\n };\n}\n\n// src/network/public/parsing.ts\nimport { BorshAccountsCoder as BorshAccountsCoder2 } from \"@project-serum/anchor\";\nimport { TokenUtil as TokenUtil3 } from \"@orca-so/common-sdk\";\nvar ParsableWhirlpoolsConfig = class {\n constructor() {\n }\n static parse(data) {\n if (!data) {\n return null;\n }\n try {\n return parseAnchorAccount(\"WhirlpoolsConfig\" /* WhirlpoolsConfig */, data);\n } catch (e) {\n console.error(`error while parsing WhirlpoolsConfig: ${e}`);\n return null;\n }\n }\n};\nParsableWhirlpoolsConfig = __decorateClass([\n staticImplements()\n], ParsableWhirlpoolsConfig);\nvar ParsableWhirlpool = class {\n constructor() {\n }\n static parse(data) {\n if (!data) {\n return null;\n }\n try {\n return parseAnchorAccount(\"Whirlpool\" /* Whirlpool */, data);\n } catch (e) {\n console.error(`error while parsing Whirlpool: ${e}`);\n return null;\n }\n }\n};\nParsableWhirlpool = __decorateClass([\n staticImplements()\n], ParsableWhirlpool);\nvar ParsablePosition = class {\n constructor() {\n }\n static parse(data) {\n if (!data) {\n return null;\n }\n try {\n return parseAnchorAccount(\"Position\" /* Position */, data);\n } catch (e) {\n console.error(`error while parsing Position: ${e}`);\n return null;\n }\n }\n};\nParsablePosition = __decorateClass([\n staticImplements()\n], ParsablePosition);\nvar ParsableTickArray = class {\n constructor() {\n }\n static parse(data) {\n if (!data) {\n return null;\n }\n try {\n return parseAnchorAccount(\"TickArray\" /* TickArray */, data);\n } catch (e) {\n console.error(`error while parsing TickArray: ${e}`);\n return null;\n }\n }\n};\nParsableTickArray = __decorateClass([\n staticImplements()\n], ParsableTickArray);\nvar ParsableFeeTier = class {\n constructor() {\n }\n static parse(data) {\n if (!data) {\n return null;\n }\n try {\n return parseAnchorAccount(\"FeeTier\" /* FeeTier */, data);\n } catch (e) {\n console.error(`error while parsing FeeTier: ${e}`);\n return null;\n }\n }\n};\nParsableFeeTier = __decorateClass([\n staticImplements()\n], ParsableFeeTier);\nvar ParsableTokenInfo = class {\n constructor() {\n }\n static parse(data) {\n if (!data) {\n return null;\n }\n try {\n return TokenUtil3.deserializeTokenAccount(data);\n } catch (e) {\n console.error(`error while parsing TokenAccount: ${e}`);\n return null;\n }\n }\n};\nParsableTokenInfo = __decorateClass([\n staticImplements()\n], ParsableTokenInfo);\nvar ParsableMintInfo = class {\n constructor() {\n }\n static parse(data) {\n if (!data) {\n return null;\n }\n try {\n const buffer = MintLayout.decode(data);\n const mintInfo = {\n mintAuthority: buffer.mintAuthorityOption === 0 ? null : new PublicKey10(buffer.mintAuthority),\n supply: u644.fromBuffer(buffer.supply),\n decimals: buffer.decimals,\n isInitialized: buffer.isInitialized !== 0,\n freezeAuthority: buffer.freezeAuthority === 0 ? null : new PublicKey10(buffer.freezeAuthority)\n };\n return mintInfo;\n } catch (e) {\n console.error(`error while parsing MintInfo: ${e}`);\n return null;\n }\n }\n};\nParsableMintInfo = __decorateClass([\n staticImplements()\n], ParsableMintInfo);\nfunction staticImplements() {\n return (constructor) => {\n constructor;\n };\n}\nvar WhirlpoolCoder = new BorshAccountsCoder2(whirlpool_exports);\nfunction parseAnchorAccount(accountName, data) {\n const discriminator = BorshAccountsCoder2.accountDiscriminator(accountName);\n if (discriminator.compare(data.slice(0, 8))) {\n console.error(\"incorrect account name during parsing\");\n return null;\n }\n try {\n return WhirlpoolCoder.decode(accountName, data);\n } catch (_e) {\n console.error(\"unknown account name during parsing\");\n return null;\n }\n}\n\n// src/network/public/fetcher.ts\nimport { AddressUtil as AddressUtil3 } from \"@orca-so/common-sdk\";\nvar AccountFetcher = class {\n constructor(connection, cache) {\n this._cache = {};\n this.connection = connection;\n this._cache = cache ?? {};\n }\n async getAccountRentExempt(refresh = false) {\n if (!this._accountRentExempt || refresh) {\n this._accountRentExempt = await this.connection.getMinimumBalanceForRentExemption(\n AccountLayout2.span\n );\n }\n return this._accountRentExempt;\n }\n async getPool(address, refresh = false) {\n return this.get(AddressUtil3.toPubKey(address), ParsableWhirlpool, refresh);\n }\n async getPosition(address, refresh = false) {\n return this.get(AddressUtil3.toPubKey(address), ParsablePosition, refresh);\n }\n async getTickArray(address, refresh = false) {\n return this.get(AddressUtil3.toPubKey(address), ParsableTickArray, refresh);\n }\n async getFeeTier(address, refresh = false) {\n return this.get(AddressUtil3.toPubKey(address), ParsableFeeTier, refresh);\n }\n async getTokenInfo(address, refresh = false) {\n return this.get(AddressUtil3.toPubKey(address), ParsableTokenInfo, refresh);\n }\n async getMintInfo(address, refresh = false) {\n return this.get(AddressUtil3.toPubKey(address), ParsableMintInfo, refresh);\n }\n async getConfig(address, refresh = false) {\n return this.get(AddressUtil3.toPubKey(address), ParsableWhirlpoolsConfig, refresh);\n }\n async listPools(addresses, refresh) {\n return this.list(AddressUtil3.toPubKeys(addresses), ParsableWhirlpool, refresh);\n }\n async listPoolsWithParams({\n programId,\n configId\n }) {\n const filters = [\n { dataSize: WHIRLPOOL_ACCOUNT_SIZE },\n {\n memcmp: WHIRLPOOL_CODER.memcmp(\n \"Whirlpool\" /* Whirlpool */,\n AddressUtil3.toPubKey(configId).toBuffer()\n )\n }\n ];\n const accounts2 = await this.connection.getProgramAccounts(AddressUtil3.toPubKey(programId), {\n filters\n });\n const parsedAccounts = [];\n accounts2.forEach(({ pubkey, account }) => {\n const parsedAccount = ParsableWhirlpool.parse(account.data);\n invariant2(!!parsedAccount, `could not parse whirlpool: ${pubkey.toBase58()}`);\n parsedAccounts.push([pubkey, parsedAccount]);\n this._cache[pubkey.toBase58()] = { entity: ParsableWhirlpool, value: parsedAccount };\n });\n return parsedAccounts;\n }\n async listPositions(addresses, refresh) {\n return this.list(AddressUtil3.toPubKeys(addresses), ParsablePosition, refresh);\n }\n async listTickArrays(addresses, refresh) {\n return this.list(AddressUtil3.toPubKeys(addresses), ParsableTickArray, refresh);\n }\n async listTokenInfos(addresses, refresh) {\n return this.list(AddressUtil3.toPubKeys(addresses), ParsableTokenInfo, refresh);\n }\n async listMintInfos(addresses, refresh) {\n return this.list(AddressUtil3.toPubKeys(addresses), ParsableMintInfo, refresh);\n }\n async refreshAll() {\n const addresses = Object.keys(this._cache);\n const data = await this.bulkRequest(addresses);\n for (const [idx, [key, cachedContent]] of Object.entries(this._cache).entries()) {\n const entity = cachedContent.entity;\n const value = entity.parse(data[idx]);\n this._cache[key] = { entity, value };\n }\n }\n async get(address, entity, refresh) {\n var _a;\n const key = address.toBase58();\n const cachedValue = (_a = this._cache[key]) == null ? void 0 : _a.value;\n if (cachedValue !== void 0 && !refresh) {\n return cachedValue;\n }\n const accountInfo = await this.connection.getAccountInfo(address);\n const accountData = accountInfo == null ? void 0 : accountInfo.data;\n const value = entity.parse(accountData);\n this._cache[key] = { entity, value };\n return value;\n }\n async list(addresses, entity, refresh) {\n const keys = addresses.map((address) => address.toBase58());\n const cachedValues = keys.map((key) => {\n var _a;\n return [\n key,\n refresh ? void 0 : (_a = this._cache[key]) == null ? void 0 : _a.value\n ];\n });\n const undefinedAccounts = [];\n cachedValues.forEach(([key, value], cacheIndex) => {\n if (value === void 0) {\n undefinedAccounts.push({ cacheIndex, key });\n }\n });\n if (undefinedAccounts.length > 0) {\n const data = await this.bulkRequest(undefinedAccounts.map((account) => account.key));\n undefinedAccounts.forEach(({ cacheIndex, key }, dataIndex) => {\n var _a;\n const value = entity.parse(data[dataIndex]);\n invariant2(((_a = cachedValues[cacheIndex]) == null ? void 0 : _a[1]) === void 0, \"unexpected non-undefined value\");\n cachedValues[cacheIndex] = [key, value];\n this._cache[key] = { entity, value };\n });\n }\n const result = cachedValues.map(([_, value]) => value).filter((value) => value !== void 0);\n invariant2(result.length === addresses.length, \"not enough results fetched\");\n return result;\n }\n async bulkRequest(addresses) {\n const responses = [];\n const chunk = 100;\n for (let i = 0; i < addresses.length; i += chunk) {\n const addressesSubset = addresses.slice(i, i + chunk);\n const res = this.connection._rpcRequest(\"getMultipleAccounts\", [\n addressesSubset,\n { commitment: this.connection.commitment }\n ]);\n responses.push(res);\n }\n const combinedResult = [];\n (await Promise.all(responses)).forEach((res) => {\n var _a;\n invariant2(!res.error, `bulkRequest result error: ${res.error}`);\n invariant2(!!((_a = res.result) == null ? void 0 : _a.value), \"bulkRequest no value\");\n res.result.value.forEach((account) => {\n if (!account || account.data[1] !== \"base64\") {\n combinedResult.push(null);\n } else {\n combinedResult.push(Buffer.from(account.data[0], account.data[1]));\n }\n });\n });\n invariant2(combinedResult.length === addresses.length, \"bulkRequest not enough results\");\n return combinedResult;\n }\n};\n\n// src/context.ts\nvar WhirlpoolContext2 = class {\n static from(connection, wallet, programId, fetcher = new AccountFetcher(connection), opts = AnchorProvider.defaultOptions()) {\n const anchorProvider = new AnchorProvider(connection, wallet, opts);\n const program = new Program(whirlpool_default, programId, anchorProvider);\n return new WhirlpoolContext2(anchorProvider, anchorProvider.wallet, program, fetcher, opts);\n }\n static fromWorkspace(provider, program, fetcher = new AccountFetcher(provider.connection), opts = AnchorProvider.defaultOptions()) {\n return new WhirlpoolContext2(provider, provider.wallet, program, fetcher, opts);\n }\n static withProvider(provider, programId, fetcher = new AccountFetcher(provider.connection), opts = AnchorProvider.defaultOptions()) {\n const program = new Program(whirlpool_default, programId, provider);\n return new WhirlpoolContext2(provider, provider.wallet, program, fetcher, opts);\n }\n constructor(provider, wallet, program, fetcher, opts) {\n this.connection = provider.connection;\n this.wallet = wallet;\n this.opts = opts;\n this.program = program;\n this.provider = provider;\n this.fetcher = fetcher;\n }\n};\n\n// src/impl/position-impl.ts\nimport {\n AddressUtil as AddressUtil4,\n deriveATA,\n resolveOrCreateATAs as resolveOrCreateATAs2,\n TransactionBuilder as TransactionBuilder3,\n ZERO as ZERO3\n} from \"@orca-so/common-sdk\";\nimport { NATIVE_MINT as NATIVE_MINT3 } from \"@solana/spl-token\";\nimport invariant3 from \"tiny-invariant\";\n\n// src/utils/builder/position-builder-util.ts\nasync function getTickArrayDataForPosition(ctx, position, whirlpool, refresh) {\n const lowerTickArrayKey = PDAUtil.getTickArrayFromTickIndex(\n position.tickLowerIndex,\n whirlpool.tickSpacing,\n position.whirlpool,\n ctx.program.programId\n ).publicKey;\n const upperTickArrayKey = PDAUtil.getTickArrayFromTickIndex(\n position.tickUpperIndex,\n whirlpool.tickSpacing,\n position.whirlpool,\n ctx.program.programId\n ).publicKey;\n return await ctx.fetcher.listTickArrays([lowerTickArrayKey, upperTickArrayKey], refresh);\n}\n\n// src/impl/position-impl.ts\nvar PositionImpl = class {\n constructor(ctx, address, data, whirlpoolData, lowerTickArrayData, upperTickArrayData) {\n this.ctx = ctx;\n this.address = address;\n this.data = data;\n this.whirlpoolData = whirlpoolData;\n this.lowerTickArrayData = lowerTickArrayData;\n this.upperTickArrayData = upperTickArrayData;\n }\n getAddress() {\n return this.address;\n }\n getData() {\n return this.data;\n }\n getWhirlpoolData() {\n return this.whirlpoolData;\n }\n getLowerTickData() {\n return TickArrayUtil.getTickFromArray(\n this.lowerTickArrayData,\n this.data.tickLowerIndex,\n this.whirlpoolData.tickSpacing\n );\n }\n getUpperTickData() {\n return TickArrayUtil.getTickFromArray(\n this.upperTickArrayData,\n this.data.tickUpperIndex,\n this.whirlpoolData.tickSpacing\n );\n }\n async refreshData() {\n await this.refresh();\n return this.data;\n }\n async increaseLiquidity(liquidityInput, resolveATA = true, sourceWallet, positionWallet, ataPayer) {\n const sourceWalletKey = sourceWallet ? AddressUtil4.toPubKey(sourceWallet) : this.ctx.wallet.publicKey;\n const positionWalletKey = positionWallet ? AddressUtil4.toPubKey(positionWallet) : this.ctx.wallet.publicKey;\n const ataPayerKey = ataPayer ? AddressUtil4.toPubKey(ataPayer) : this.ctx.wallet.publicKey;\n const whirlpool = await this.ctx.fetcher.getPool(this.data.whirlpool, true);\n if (!whirlpool) {\n throw new Error(\"Unable to fetch whirlpool for this position.\");\n }\n const txBuilder = new TransactionBuilder3(\n this.ctx.provider.connection,\n this.ctx.provider.wallet\n );\n let tokenOwnerAccountA;\n let tokenOwnerAccountB;\n if (resolveATA) {\n const [ataA, ataB] = await resolveOrCreateATAs2(\n this.ctx.connection,\n sourceWalletKey,\n [\n { tokenMint: whirlpool.tokenMintA, wrappedSolAmountIn: liquidityInput.tokenMaxA },\n { tokenMint: whirlpool.tokenMintB, wrappedSolAmountIn: liquidityInput.tokenMaxB }\n ],\n () => this.ctx.fetcher.getAccountRentExempt(),\n ataPayerKey\n );\n const { address: ataAddrA, ...tokenOwnerAccountAIx } = ataA;\n const { address: ataAddrB, ...tokenOwnerAccountBIx } = ataB;\n tokenOwnerAccountA = ataAddrA;\n tokenOwnerAccountB = ataAddrB;\n txBuilder.addInstruction(tokenOwnerAccountAIx);\n txBuilder.addInstruction(tokenOwnerAccountBIx);\n } else {\n tokenOwnerAccountA = await deriveATA(sourceWalletKey, whirlpool.tokenMintA);\n tokenOwnerAccountB = await deriveATA(sourceWalletKey, whirlpool.tokenMintB);\n }\n const positionTokenAccount = await deriveATA(positionWalletKey, this.data.positionMint);\n const increaseIx = increaseLiquidityIx(this.ctx.program, {\n ...liquidityInput,\n whirlpool: this.data.whirlpool,\n position: this.address,\n positionTokenAccount,\n tokenOwnerAccountA,\n tokenOwnerAccountB,\n tokenVaultA: whirlpool.tokenVaultA,\n tokenVaultB: whirlpool.tokenVaultB,\n tickArrayLower: PDAUtil.getTickArray(\n this.ctx.program.programId,\n this.data.whirlpool,\n TickUtil.getStartTickIndex(this.data.tickLowerIndex, whirlpool.tickSpacing)\n ).publicKey,\n tickArrayUpper: PDAUtil.getTickArray(\n this.ctx.program.programId,\n this.data.whirlpool,\n TickUtil.getStartTickIndex(this.data.tickUpperIndex, whirlpool.tickSpacing)\n ).publicKey,\n positionAuthority: positionWalletKey\n });\n txBuilder.addInstruction(increaseIx);\n return txBuilder;\n }\n async decreaseLiquidity(liquidityInput, resolveATA = true, sourceWallet, positionWallet, ataPayer) {\n const sourceWalletKey = sourceWallet ? AddressUtil4.toPubKey(sourceWallet) : this.ctx.wallet.publicKey;\n const positionWalletKey = positionWallet ? AddressUtil4.toPubKey(positionWallet) : this.ctx.wallet.publicKey;\n const ataPayerKey = ataPayer ? AddressUtil4.toPubKey(ataPayer) : this.ctx.wallet.publicKey;\n const whirlpool = await this.ctx.fetcher.getPool(this.data.whirlpool, true);\n if (!whirlpool) {\n throw new Error(\"Unable to fetch whirlpool for this position.\");\n }\n const txBuilder = new TransactionBuilder3(\n this.ctx.provider.connection,\n this.ctx.provider.wallet\n );\n let tokenOwnerAccountA;\n let tokenOwnerAccountB;\n if (resolveATA) {\n const [ataA, ataB] = await resolveOrCreateATAs2(\n this.ctx.connection,\n sourceWalletKey,\n [{ tokenMint: whirlpool.tokenMintA }, { tokenMint: whirlpool.tokenMintB }],\n () => this.ctx.fetcher.getAccountRentExempt(),\n ataPayerKey\n );\n const { address: ataAddrA, ...tokenOwnerAccountAIx } = ataA;\n const { address: ataAddrB, ...tokenOwnerAccountBIx } = ataB;\n tokenOwnerAccountA = ataAddrA;\n tokenOwnerAccountB = ataAddrB;\n txBuilder.addInstruction(tokenOwnerAccountAIx);\n txBuilder.addInstruction(tokenOwnerAccountBIx);\n } else {\n tokenOwnerAccountA = await deriveATA(sourceWalletKey, whirlpool.tokenMintA);\n tokenOwnerAccountB = await deriveATA(sourceWalletKey, whirlpool.tokenMintB);\n }\n const decreaseIx = decreaseLiquidityIx(this.ctx.program, {\n ...liquidityInput,\n whirlpool: this.data.whirlpool,\n position: this.address,\n positionTokenAccount: await deriveATA(positionWalletKey, this.data.positionMint),\n tokenOwnerAccountA,\n tokenOwnerAccountB,\n tokenVaultA: whirlpool.tokenVaultA,\n tokenVaultB: whirlpool.tokenVaultB,\n tickArrayLower: PDAUtil.getTickArray(\n this.ctx.program.programId,\n this.data.whirlpool,\n TickUtil.getStartTickIndex(this.data.tickLowerIndex, whirlpool.tickSpacing)\n ).publicKey,\n tickArrayUpper: PDAUtil.getTickArray(\n this.ctx.program.programId,\n this.data.whirlpool,\n TickUtil.getStartTickIndex(this.data.tickUpperIndex, whirlpool.tickSpacing)\n ).publicKey,\n positionAuthority: positionWalletKey\n });\n txBuilder.addInstruction(decreaseIx);\n return txBuilder;\n }\n async collectFees(updateFeesAndRewards = true, ownerTokenAccountMap, destinationWallet, positionWallet, ataPayer, refresh = false) {\n const [destinationWalletKey, positionWalletKey, ataPayerKey] = AddressUtil4.toPubKeys([\n destinationWallet ?? this.ctx.wallet.publicKey,\n positionWallet ?? this.ctx.wallet.publicKey,\n ataPayer ?? this.ctx.wallet.publicKey\n ]);\n const whirlpool = await this.ctx.fetcher.getPool(this.data.whirlpool, refresh);\n if (!whirlpool) {\n throw new Error(\n `Unable to fetch whirlpool (${this.data.whirlpool}) for this position (${this.address}).`\n );\n }\n let txBuilder = new TransactionBuilder3(this.ctx.provider.connection, this.ctx.provider.wallet);\n const accountExemption = await this.ctx.fetcher.getAccountRentExempt();\n let ataMap = { ...ownerTokenAccountMap };\n if (!ownerTokenAccountMap) {\n const affliatedMints = getTokenMintsFromWhirlpools([whirlpool], \"POOL_ONLY\" /* POOL_ONLY */);\n const { ataTokenAddresses: affliatedTokenAtaMap, resolveAtaIxs } = await resolveAtaForMints(\n this.ctx,\n {\n mints: affliatedMints.mintMap,\n accountExemption,\n receiver: destinationWalletKey,\n payer: ataPayerKey\n }\n );\n txBuilder.addInstructions(resolveAtaIxs);\n if (affliatedMints.hasNativeMint) {\n let { address: wSOLAta, ...resolveWSolIx } = createWSOLAccountInstructions(\n destinationWalletKey,\n ZERO3,\n accountExemption,\n ataPayerKey,\n destinationWalletKey\n );\n affliatedTokenAtaMap[NATIVE_MINT3.toBase58()] = wSOLAta;\n txBuilder.addInstruction(resolveWSolIx);\n }\n ataMap = { ...affliatedTokenAtaMap };\n }\n const tokenOwnerAccountA = ataMap[whirlpool.tokenMintA.toBase58()];\n invariant3(\n !!tokenOwnerAccountA,\n `No owner token account provided for wallet ${destinationWalletKey.toBase58()} for token A ${whirlpool.tokenMintA.toBase58()} `\n );\n const tokenOwnerAccountB = ataMap[whirlpool.tokenMintB.toBase58()];\n invariant3(\n !!tokenOwnerAccountB,\n `No owner token account provided for wallet ${destinationWalletKey.toBase58()} for token B ${whirlpool.tokenMintB.toBase58()} `\n );\n const positionTokenAccount = await deriveATA(positionWalletKey, this.data.positionMint);\n if (updateFeesAndRewards) {\n const updateIx = await this.updateFeesAndRewards();\n txBuilder.addInstruction(updateIx);\n }\n const ix = collectFeesIx(this.ctx.program, {\n whirlpool: this.data.whirlpool,\n position: this.address,\n positionTokenAccount,\n tokenOwnerAccountA: AddressUtil4.toPubKey(tokenOwnerAccountA),\n tokenOwnerAccountB: AddressUtil4.toPubKey(tokenOwnerAccountB),\n tokenVaultA: whirlpool.tokenVaultA,\n tokenVaultB: whirlpool.tokenVaultB,\n positionAuthority: positionWalletKey\n });\n txBuilder.addInstruction(ix);\n return txBuilder;\n }\n async collectRewards(rewardsToCollect, updateFeesAndRewards = true, ownerTokenAccountMap, destinationWallet, positionWallet, ataPayer, refresh = true) {\n const [destinationWalletKey, positionWalletKey, ataPayerKey] = AddressUtil4.toPubKeys([\n destinationWallet ?? this.ctx.wallet.publicKey,\n positionWallet ?? this.ctx.wallet.publicKey,\n ataPayer ?? this.ctx.wallet.publicKey\n ]);\n const whirlpool = await this.ctx.fetcher.getPool(this.data.whirlpool, refresh);\n if (!whirlpool) {\n throw new Error(\n `Unable to fetch whirlpool(${this.data.whirlpool}) for this position(${this.address}).`\n );\n }\n const initializedRewards = whirlpool.rewardInfos.filter(\n (info) => PoolUtil.isRewardInitialized(info)\n );\n const txBuilder = new TransactionBuilder3(\n this.ctx.provider.connection,\n this.ctx.provider.wallet\n );\n const accountExemption = await this.ctx.fetcher.getAccountRentExempt();\n let ataMap = { ...ownerTokenAccountMap };\n if (!ownerTokenAccountMap) {\n const rewardMints = getTokenMintsFromWhirlpools([whirlpool], \"REWARDS_ONLY\" /* REWARD_ONLY */);\n const { ataTokenAddresses: affliatedTokenAtaMap, resolveAtaIxs } = await resolveAtaForMints(\n this.ctx,\n {\n mints: rewardMints.mintMap,\n accountExemption,\n receiver: destinationWalletKey,\n payer: ataPayerKey\n }\n );\n if (rewardMints.hasNativeMint) {\n let { address: wSOLAta, ...resolveWSolIx } = createWSOLAccountInstructions(\n destinationWalletKey,\n ZERO3,\n accountExemption\n );\n affliatedTokenAtaMap[NATIVE_MINT3.toBase58()] = wSOLAta;\n txBuilder.addInstruction(resolveWSolIx);\n }\n txBuilder.addInstructions(resolveAtaIxs);\n ataMap = { ...affliatedTokenAtaMap };\n }\n const positionTokenAccount = await deriveATA(positionWalletKey, this.data.positionMint);\n if (updateFeesAndRewards) {\n const updateIx = await this.updateFeesAndRewards();\n txBuilder.addInstruction(updateIx);\n }\n initializedRewards.forEach((info, index) => {\n if (rewardsToCollect && !rewardsToCollect.some((r) => r.toString() === info.mint.toBase58())) {\n return;\n }\n const rewardOwnerAccount = ataMap[info.mint.toBase58()];\n invariant3(\n !!rewardOwnerAccount,\n `No owner token account provided for wallet ${destinationWalletKey.toBase58()} for reward ${index} token ${info.mint.toBase58()} `\n );\n const ix = collectRewardIx(this.ctx.program, {\n whirlpool: this.data.whirlpool,\n position: this.address,\n positionTokenAccount,\n rewardIndex: index,\n rewardOwnerAccount: AddressUtil4.toPubKey(rewardOwnerAccount),\n rewardVault: info.vault,\n positionAuthority: positionWalletKey\n });\n txBuilder.addInstruction(ix);\n });\n return txBuilder;\n }\n async refresh() {\n const positionAccount = await this.ctx.fetcher.getPosition(this.address, true);\n if (!!positionAccount) {\n this.data = positionAccount;\n }\n const whirlpoolAccount = await this.ctx.fetcher.getPool(this.data.whirlpool, true);\n if (!!whirlpoolAccount) {\n this.whirlpoolData = whirlpoolAccount;\n }\n const [lowerTickArray, upperTickArray] = await getTickArrayDataForPosition(\n this.ctx,\n this.data,\n this.whirlpoolData,\n true\n );\n if (lowerTickArray) {\n this.lowerTickArrayData = lowerTickArray;\n }\n if (upperTickArray) {\n this.upperTickArrayData = upperTickArray;\n }\n }\n async updateFeesAndRewards() {\n const whirlpool = await this.ctx.fetcher.getPool(this.data.whirlpool);\n if (!whirlpool) {\n throw new Error(\n `Unable to fetch whirlpool(${this.data.whirlpool}) for this position(${this.address}).`\n );\n }\n const [tickArrayLowerPda, tickArrayUpperPda] = [\n this.data.tickLowerIndex,\n this.data.tickUpperIndex\n ].map(\n (tickIndex) => PDAUtil.getTickArrayFromTickIndex(\n tickIndex,\n whirlpool.tickSpacing,\n this.data.whirlpool,\n this.ctx.program.programId\n )\n );\n const updateIx = updateFeesAndRewardsIx(this.ctx.program, {\n whirlpool: this.data.whirlpool,\n position: this.address,\n tickArrayLower: tickArrayLowerPda.publicKey,\n tickArrayUpper: tickArrayUpperPda.publicKey\n });\n return updateIx;\n }\n};\n\n// src/quotes/public/increase-liquidity-quote.ts\nimport { AddressUtil as AddressUtil5, DecimalUtil, ZERO as ZERO4 } from \"@orca-so/common-sdk\";\nimport invariant4 from \"tiny-invariant\";\n\n// src/utils/position-util.ts\nimport { MathUtil as MathUtil4 } from \"@orca-so/common-sdk\";\n\n// src/utils/swap-utils.ts\nimport { MathUtil as MathUtil3 } from \"@orca-so/common-sdk\";\n\n// src/utils/position-util.ts\nvar PositionUtil = class {\n constructor() {\n }\n static getPositionStatus(tickCurrentIndex, tickLowerIndex, tickUpperIndex) {\n if (tickCurrentIndex < tickLowerIndex) {\n return 0 /* BelowRange */;\n } else if (tickCurrentIndex < tickUpperIndex) {\n return 1 /* InRange */;\n } else {\n return 2 /* AboveRange */;\n }\n }\n};\nfunction adjustForSlippage(n, { numerator, denominator }, adjustUp) {\n if (adjustUp) {\n return n.mul(denominator.add(numerator)).div(denominator);\n } else {\n return n.mul(denominator).div(denominator.add(numerator));\n }\n}\nfunction getLiquidityFromTokenA(amount, sqrtPriceLowerX64, sqrtPriceUpperX64, roundUp) {\n const result = amount.mul(sqrtPriceLowerX64).mul(sqrtPriceUpperX64).div(sqrtPriceUpperX64.sub(sqrtPriceLowerX64));\n if (roundUp) {\n return MathUtil4.shiftRightRoundUp(result);\n } else {\n return result.shrn(64);\n }\n}\nfunction getLiquidityFromTokenB(amount, sqrtPriceLowerX64, sqrtPriceUpperX64, roundUp) {\n const numerator = amount.shln(64);\n const denominator = sqrtPriceUpperX64.sub(sqrtPriceLowerX64);\n if (roundUp) {\n return MathUtil4.divRoundUp(numerator, denominator);\n } else {\n return numerator.div(denominator);\n }\n}\nfunction getTokenAFromLiquidity(liquidity, sqrtPrice0X64, sqrtPrice1X64, roundUp) {\n const [sqrtPriceLowerX64, sqrtPriceUpperX64] = orderSqrtPrice(sqrtPrice0X64, sqrtPrice1X64);\n const numerator = liquidity.mul(sqrtPriceUpperX64.sub(sqrtPriceLowerX64)).shln(64);\n const denominator = sqrtPriceUpperX64.mul(sqrtPriceLowerX64);\n if (roundUp) {\n return MathUtil4.divRoundUp(numerator, denominator);\n } else {\n return numerator.div(denominator);\n }\n}\nfunction getTokenBFromLiquidity(liquidity, sqrtPrice0X64, sqrtPrice1X64, roundUp) {\n const [sqrtPriceLowerX64, sqrtPriceUpperX64] = orderSqrtPrice(sqrtPrice0X64, sqrtPrice1X64);\n const result = liquidity.mul(sqrtPriceUpperX64.sub(sqrtPriceLowerX64));\n if (roundUp) {\n return MathUtil4.shiftRightRoundUp(result);\n } else {\n return result.shrn(64);\n }\n}\nfunction orderSqrtPrice(sqrtPrice0X64, sqrtPrice1X64) {\n if (sqrtPrice0X64.lt(sqrtPrice1X64)) {\n return [sqrtPrice0X64, sqrtPrice1X64];\n } else {\n return [sqrtPrice1X64, sqrtPrice0X64];\n }\n}\n\n// src/quotes/public/increase-liquidity-quote.ts\nfunction increaseLiquidityQuoteByInputToken(inputTokenMint, inputTokenAmount, tickLower, tickUpper, slippageTolerance, whirlpool) {\n const data = whirlpool.getData();\n const tokenAInfo = whirlpool.getTokenAInfo();\n const tokenBInfo = whirlpool.getTokenBInfo();\n const inputMint = AddressUtil5.toPubKey(inputTokenMint);\n const inputTokenInfo = inputMint.equals(tokenAInfo.mint) ? tokenAInfo : tokenBInfo;\n return increaseLiquidityQuoteByInputTokenWithParams({\n inputTokenMint: inputMint,\n inputTokenAmount: DecimalUtil.toU64(inputTokenAmount, inputTokenInfo.decimals),\n tickLowerIndex: TickUtil.getInitializableTickIndex(tickLower, data.tickSpacing),\n tickUpperIndex: TickUtil.getInitializableTickIndex(tickUpper, data.tickSpacing),\n slippageTolerance,\n ...data\n });\n}\nfunction increaseLiquidityQuoteByInputTokenWithParams(param) {\n invariant4(TickUtil.checkTickInBounds(param.tickLowerIndex), \"tickLowerIndex is out of bounds.\");\n invariant4(TickUtil.checkTickInBounds(param.tickUpperIndex), \"tickUpperIndex is out of bounds.\");\n invariant4(\n param.inputTokenMint.equals(param.tokenMintA) || param.inputTokenMint.equals(param.tokenMintB),\n `input token mint ${param.inputTokenMint.toBase58()} does not match any tokens in the provided pool.`\n );\n const positionStatus = PositionUtil.getPositionStatus(\n param.tickCurrentIndex,\n param.tickLowerIndex,\n param.tickUpperIndex\n );\n switch (positionStatus) {\n case 0 /* BelowRange */:\n return quotePositionBelowRange(param);\n case 1 /* InRange */:\n return quotePositionInRange(param);\n case 2 /* AboveRange */:\n return quotePositionAboveRange(param);\n default:\n throw new Error(`type ${positionStatus} is an unknown PositionStatus`);\n }\n}\nfunction quotePositionBelowRange(param) {\n const {\n tokenMintA,\n inputTokenMint,\n inputTokenAmount,\n tickLowerIndex,\n tickUpperIndex,\n slippageTolerance\n } = param;\n if (!tokenMintA.equals(inputTokenMint)) {\n return {\n tokenMaxA: ZERO4,\n tokenMaxB: ZERO4,\n tokenEstA: ZERO4,\n tokenEstB: ZERO4,\n liquidityAmount: ZERO4\n };\n }\n const sqrtPriceLowerX64 = PriceMath.tickIndexToSqrtPriceX64(tickLowerIndex);\n const sqrtPriceUpperX64 = PriceMath.tickIndexToSqrtPriceX64(tickUpperIndex);\n const liquidityAmount = getLiquidityFromTokenA(\n inputTokenAmount,\n sqrtPriceLowerX64,\n sqrtPriceUpperX64,\n false\n );\n const tokenEstA = getTokenAFromLiquidity(\n liquidityAmount,\n sqrtPriceLowerX64,\n sqrtPriceUpperX64,\n true\n );\n const tokenMaxA = adjustForSlippage(tokenEstA, slippageTolerance, true);\n return {\n tokenMaxA,\n tokenMaxB: ZERO4,\n tokenEstA,\n tokenEstB: ZERO4,\n liquidityAmount\n };\n}\nfunction quotePositionInRange(param) {\n const {\n tokenMintA,\n sqrtPrice,\n inputTokenMint,\n inputTokenAmount,\n tickLowerIndex,\n tickUpperIndex,\n slippageTolerance\n } = param;\n const sqrtPriceX64 = sqrtPrice;\n const sqrtPriceLowerX64 = PriceMath.tickIndexToSqrtPriceX64(tickLowerIndex);\n const sqrtPriceUpperX64 = PriceMath.tickIndexToSqrtPriceX64(tickUpperIndex);\n let [tokenEstA, tokenEstB] = tokenMintA.equals(inputTokenMint) ? [inputTokenAmount, void 0] : [void 0, inputTokenAmount];\n let liquidityAmount;\n if (tokenEstA) {\n liquidityAmount = getLiquidityFromTokenA(tokenEstA, sqrtPriceX64, sqrtPriceUpperX64, false);\n tokenEstA = getTokenAFromLiquidity(liquidityAmount, sqrtPriceX64, sqrtPriceUpperX64, true);\n tokenEstB = getTokenBFromLiquidity(liquidityAmount, sqrtPriceLowerX64, sqrtPriceX64, true);\n } else if (tokenEstB) {\n liquidityAmount = getLiquidityFromTokenB(tokenEstB, sqrtPriceLowerX64, sqrtPriceX64, false);\n tokenEstA = getTokenAFromLiquidity(liquidityAmount, sqrtPriceX64, sqrtPriceUpperX64, true);\n tokenEstB = getTokenBFromLiquidity(liquidityAmount, sqrtPriceLowerX64, sqrtPriceX64, true);\n } else {\n throw new Error(\"invariant violation\");\n }\n const tokenMaxA = adjustForSlippage(tokenEstA, slippageTolerance, true);\n const tokenMaxB = adjustForSlippage(tokenEstB, slippageTolerance, true);\n return {\n tokenMaxA,\n tokenMaxB,\n tokenEstA,\n tokenEstB,\n liquidityAmount\n };\n}\nfunction quotePositionAboveRange(param) {\n const {\n tokenMintB,\n inputTokenMint,\n inputTokenAmount,\n tickLowerIndex,\n tickUpperIndex,\n slippageTolerance\n } = param;\n if (!tokenMintB.equals(inputTokenMint)) {\n return {\n tokenMaxA: ZERO4,\n tokenMaxB: ZERO4,\n tokenEstA: ZERO4,\n tokenEstB: ZERO4,\n liquidityAmount: ZERO4\n };\n }\n const sqrtPriceLowerX64 = PriceMath.tickIndexToSqrtPriceX64(tickLowerIndex);\n const sqrtPriceUpperX64 = PriceMath.tickIndexToSqrtPriceX64(tickUpperIndex);\n const liquidityAmount = getLiquidityFromTokenB(\n inputTokenAmount,\n sqrtPriceLowerX64,\n sqrtPriceUpperX64,\n false\n );\n const tokenEstB = getTokenBFromLiquidity(\n liquidityAmount,\n sqrtPriceLowerX64,\n sqrtPriceUpperX64,\n true\n );\n const tokenMaxB = adjustForSlippage(tokenEstB, slippageTolerance, true);\n return {\n tokenMaxA: ZERO4,\n tokenMaxB,\n tokenEstA: ZERO4,\n tokenEstB,\n liquidityAmount\n };\n}\n\n// src/quotes/public/decrease-liquidity-quote.ts\nimport { ZERO as ZERO5 } from \"@orca-so/common-sdk\";\nimport invariant5 from \"tiny-invariant\";\nfunction decreaseLiquidityQuoteByLiquidity(liquidity, slippageTolerance, position, whirlpool) {\n const positionData = position.getData();\n const whirlpoolData = whirlpool.getData();\n invariant5(\n liquidity.lte(positionData.liquidity),\n \"Quote liquidity is more than the position liquidity.\"\n );\n return decreaseLiquidityQuoteByLiquidityWithParams({\n liquidity,\n slippageTolerance,\n tickLowerIndex: positionData.tickLowerIndex,\n tickUpperIndex: positionData.tickUpperIndex,\n sqrtPrice: whirlpoolData.sqrtPrice,\n tickCurrentIndex: whirlpoolData.tickCurrentIndex\n });\n}\nfunction decreaseLiquidityQuoteByLiquidityWithParams(param) {\n invariant5(TickUtil.checkTickInBounds(param.tickLowerIndex), \"tickLowerIndex is out of bounds.\");\n invariant5(TickUtil.checkTickInBounds(param.tickUpperIndex), \"tickUpperIndex is out of bounds.\");\n invariant5(\n TickUtil.checkTickInBounds(param.tickCurrentIndex),\n \"tickCurrentIndex is out of bounds.\"\n );\n const positionStatus = PositionUtil.getPositionStatus(\n param.tickCurrentIndex,\n param.tickLowerIndex,\n param.tickUpperIndex\n );\n switch (positionStatus) {\n case 0 /* BelowRange */:\n return quotePositionBelowRange2(param);\n case 1 /* InRange */:\n return quotePositionInRange2(param);\n case 2 /* AboveRange */:\n return quotePositionAboveRange2(param);\n default:\n throw new Error(`type ${positionStatus} is an unknown PositionStatus`);\n }\n}\nfunction quotePositionBelowRange2(param) {\n const { tickLowerIndex, tickUpperIndex, liquidity, slippageTolerance } = param;\n const sqrtPriceLowerX64 = PriceMath.tickIndexToSqrtPriceX64(tickLowerIndex);\n const sqrtPriceUpperX64 = PriceMath.tickIndexToSqrtPriceX64(tickUpperIndex);\n const tokenEstA = getTokenAFromLiquidity(liquidity, sqrtPriceLowerX64, sqrtPriceUpperX64, false);\n const tokenMinA = adjustForSlippage(tokenEstA, slippageTolerance, false);\n return {\n tokenMinA,\n tokenMinB: ZERO5,\n tokenEstA,\n tokenEstB: ZERO5,\n liquidityAmount: liquidity\n };\n}\nfunction quotePositionInRange2(param) {\n const { sqrtPrice, tickLowerIndex, tickUpperIndex, liquidity, slippageTolerance } = param;\n const sqrtPriceX64 = sqrtPrice;\n const sqrtPriceLowerX64 = PriceMath.tickIndexToSqrtPriceX64(tickLowerIndex);\n const sqrtPriceUpperX64 = PriceMath.tickIndexToSqrtPriceX64(tickUpperIndex);\n const tokenEstA = getTokenAFromLiquidity(liquidity, sqrtPriceX64, sqrtPriceUpperX64, false);\n const tokenMinA = adjustForSlippage(tokenEstA, slippageTolerance, false);\n const tokenEstB = getTokenBFromLiquidity(liquidity, sqrtPriceLowerX64, sqrtPriceX64, false);\n const tokenMinB = adjustForSlippage(tokenEstB, slippageTolerance, false);\n return {\n tokenMinA,\n tokenMinB,\n tokenEstA,\n tokenEstB,\n liquidityAmount: liquidity\n };\n}\nfunction quotePositionAboveRange2(param) {\n const { tickLowerIndex, tickUpperIndex, liquidity, slippageTolerance } = param;\n const sqrtPriceLowerX64 = PriceMath.tickIndexToSqrtPriceX64(tickLowerIndex);\n const sqrtPriceUpperX64 = PriceMath.tickIndexToSqrtPriceX64(tickUpperIndex);\n const tokenEstB = getTokenBFromLiquidity(liquidity, sqrtPriceLowerX64, sqrtPriceUpperX64, false);\n const tokenMinB = adjustForSlippage(tokenEstB, slippageTolerance, false);\n return {\n tokenMinA: ZERO5,\n tokenMinB,\n tokenEstA: ZERO5,\n tokenEstB,\n liquidityAmount: liquidity\n };\n}\n\n// src/quotes/public/collect-fees-quote.ts\nimport { MathUtil as MathUtil5 } from \"@orca-so/common-sdk\";\nfunction collectFeesQuote(param) {\n const { whirlpool, position, tickLower, tickUpper } = param;\n const {\n tickCurrentIndex,\n feeGrowthGlobalA: feeGrowthGlobalAX64,\n feeGrowthGlobalB: feeGrowthGlobalBX64\n } = whirlpool;\n const {\n tickLowerIndex,\n tickUpperIndex,\n liquidity,\n feeOwedA,\n feeOwedB,\n feeGrowthCheckpointA: feeGrowthCheckpointAX64,\n feeGrowthCheckpointB: feeGrowthCheckpointBX64\n } = position;\n const {\n feeGrowthOutsideA: tickLowerFeeGrowthOutsideAX64,\n feeGrowthOutsideB: tickLowerFeeGrowthOutsideBX64\n } = tickLower;\n const {\n feeGrowthOutsideA: tickUpperFeeGrowthOutsideAX64,\n feeGrowthOutsideB: tickUpperFeeGrowthOutsideBX64\n } = tickUpper;\n let feeGrowthBelowAX64 = null;\n let feeGrowthBelowBX64 = null;\n if (tickCurrentIndex < tickLowerIndex) {\n feeGrowthBelowAX64 = MathUtil5.subUnderflowU128(\n feeGrowthGlobalAX64,\n tickLowerFeeGrowthOutsideAX64\n );\n feeGrowthBelowBX64 = MathUtil5.subUnderflowU128(\n feeGrowthGlobalBX64,\n tickLowerFeeGrowthOutsideBX64\n );\n } else {\n feeGrowthBelowAX64 = tickLowerFeeGrowthOutsideAX64;\n feeGrowthBelowBX64 = tickLowerFeeGrowthOutsideBX64;\n }\n let feeGrowthAboveAX64 = null;\n let feeGrowthAboveBX64 = null;\n if (tickCurrentIndex < tickUpperIndex) {\n feeGrowthAboveAX64 = tickUpperFeeGrowthOutsideAX64;\n feeGrowthAboveBX64 = tickUpperFeeGrowthOutsideBX64;\n } else {\n feeGrowthAboveAX64 = MathUtil5.subUnderflowU128(\n feeGrowthGlobalAX64,\n tickUpperFeeGrowthOutsideAX64\n );\n feeGrowthAboveBX64 = MathUtil5.subUnderflowU128(\n feeGrowthGlobalBX64,\n tickUpperFeeGrowthOutsideBX64\n );\n }\n const feeGrowthInsideAX64 = MathUtil5.subUnderflowU128(\n MathUtil5.subUnderflowU128(feeGrowthGlobalAX64, feeGrowthBelowAX64),\n feeGrowthAboveAX64\n );\n const feeGrowthInsideBX64 = MathUtil5.subUnderflowU128(\n MathUtil5.subUnderflowU128(feeGrowthGlobalBX64, feeGrowthBelowBX64),\n feeGrowthAboveBX64\n );\n const feeOwedADelta = MathUtil5.subUnderflowU128(feeGrowthInsideAX64, feeGrowthCheckpointAX64).mul(liquidity).shrn(64);\n const feeOwedBDelta = MathUtil5.subUnderflowU128(feeGrowthInsideBX64, feeGrowthCheckpointBX64).mul(liquidity).shrn(64);\n const updatedFeeOwedA = feeOwedA.add(feeOwedADelta);\n const updatedFeeOwedB = feeOwedB.add(feeOwedBDelta);\n return {\n feeOwedA: updatedFeeOwedA,\n feeOwedB: updatedFeeOwedB\n };\n}\n\n// src/quotes/public/collect-rewards-quote.ts\nimport { MathUtil as MathUtil6 } from \"@orca-so/common-sdk\";\nimport { BN as BN7 } from \"@project-serum/anchor\";\nimport invariant6 from \"tiny-invariant\";\nfunction collectRewardsQuote(param) {\n var _a, _b, _c, _d, _e, _f;\n const { whirlpool, position, tickLower, tickUpper } = param;\n const { tickCurrentIndex, rewardInfos: whirlpoolRewardsInfos } = whirlpool;\n const { tickLowerIndex, tickUpperIndex, liquidity, rewardInfos } = position;\n const range = [...Array(NUM_REWARDS).keys()];\n const rewardGrowthsBelowX64 = range.map(() => new BN7(0));\n const rewardGrowthsAboveX64 = range.map(() => new BN7(0));\n for (const i of range) {\n const rewardInfo = whirlpoolRewardsInfos[i];\n invariant6(!!rewardInfo, \"whirlpoolRewardsInfos cannot be undefined\");\n const growthGlobalX64 = rewardInfo.growthGlobalX64;\n const lowerRewardGrowthsOutside = tickLower.rewardGrowthsOutside[i];\n const upperRewardGrowthsOutside = tickUpper.rewardGrowthsOutside[i];\n invariant6(!!lowerRewardGrowthsOutside, \"lowerRewardGrowthsOutside cannot be undefined\");\n invariant6(!!upperRewardGrowthsOutside, \"upperRewardGrowthsOutside cannot be undefined\");\n if (tickCurrentIndex < tickLowerIndex) {\n rewardGrowthsBelowX64[i] = MathUtil6.subUnderflowU128(\n growthGlobalX64,\n lowerRewardGrowthsOutside\n );\n } else {\n rewardGrowthsBelowX64[i] = lowerRewardGrowthsOutside;\n }\n if (tickCurrentIndex < tickUpperIndex) {\n rewardGrowthsAboveX64[i] = upperRewardGrowthsOutside;\n } else {\n rewardGrowthsAboveX64[i] = MathUtil6.subUnderflowU128(\n growthGlobalX64,\n upperRewardGrowthsOutside\n );\n }\n }\n const rewardGrowthsInsideX64 = range.map(() => [new BN7(0), false]);\n for (const i of range) {\n const rewardInfo = whirlpoolRewardsInfos[i];\n invariant6(!!rewardInfo, \"whirlpoolRewardsInfos cannot be undefined\");\n const isRewardInitialized = PoolUtil.isRewardInitialized(rewardInfo);\n if (isRewardInitialized) {\n const growthBelowX64 = rewardGrowthsBelowX64[i];\n const growthAboveX64 = rewardGrowthsAboveX64[i];\n invariant6(!!growthBelowX64, \"growthBelowX64 cannot be undefined\");\n invariant6(!!growthAboveX64, \"growthAboveX64 cannot be undefined\");\n const growthInsde = MathUtil6.subUnderflowU128(\n MathUtil6.subUnderflowU128(rewardInfo.growthGlobalX64, growthBelowX64),\n growthAboveX64\n );\n rewardGrowthsInsideX64[i] = [growthInsde, true];\n }\n }\n const updatedRewardInfosX64 = range.map(() => new BN7(0));\n for (const i of range) {\n const growthInsideX64 = rewardGrowthsInsideX64[i];\n invariant6(!!growthInsideX64, \"growthInsideX64 cannot be undefined\");\n const [rewardGrowthInsideX64, isRewardInitialized] = growthInsideX64;\n if (isRewardInitialized) {\n const rewardInfo = rewardInfos[i];\n invariant6(!!rewardInfo, \"rewardInfo cannot be undefined\");\n const amountOwedX64 = rewardInfo.amountOwed.shln(64);\n const growthInsideCheckpointX64 = rewardInfo.growthInsideCheckpoint;\n updatedRewardInfosX64[i] = amountOwedX64.add(\n MathUtil6.subUnderflowU128(rewardGrowthInsideX64, growthInsideCheckpointX64).mul(liquidity)\n );\n }\n }\n invariant6(rewardGrowthsInsideX64.length >= 3, \"rewards length is less than 3\");\n const rewardExistsA = (_a = rewardGrowthsInsideX64[0]) == null ? void 0 : _a[1];\n const rewardExistsB = (_b = rewardGrowthsInsideX64[1]) == null ? void 0 : _b[1];\n const rewardExistsC = (_c = rewardGrowthsInsideX64[2]) == null ? void 0 : _c[1];\n const rewardOwedA = rewardExistsA ? (_d = updatedRewardInfosX64[0]) == null ? void 0 : _d.shrn(64) : void 0;\n const rewardOwedB = rewardExistsB ? (_e = updatedRewardInfosX64[1]) == null ? void 0 : _e.shrn(64) : void 0;\n const rewardOwedC = rewardExistsC ? (_f = updatedRewardInfosX64[2]) == null ? void 0 : _f.shrn(64) : void 0;\n return [rewardOwedA, rewardOwedB, rewardOwedC];\n}\n\n// src/quotes/public/swap-quote.ts\nimport { AddressUtil as AddressUtil6 } from \"@orca-so/common-sdk\";\nimport invariant7 from \"tiny-invariant\";\n\n// src/quotes/swap/swap-quote-impl.ts\nimport { ZERO as ZERO9 } from \"@orca-so/common-sdk\";\nimport { BN as BN12 } from \"@project-serum/anchor\";\n\n// src/errors/errors.ts\nvar WhirlpoolsError = class extends Error {\n constructor(message, errorCode) {\n super(message);\n this.message = message;\n this.errorCode = errorCode;\n }\n static isWhirlpoolsErrorCode(e, code) {\n return e instanceof WhirlpoolsError && e.errorCode === code;\n }\n};\n\n// src/quotes/swap/tick-array-index.ts\nvar TickArrayIndex = class {\n constructor(arrayIndex, offsetIndex, tickSpacing) {\n this.arrayIndex = arrayIndex;\n this.offsetIndex = offsetIndex;\n this.tickSpacing = tickSpacing;\n if (offsetIndex >= TICK_ARRAY_SIZE) {\n throw new Error(\"Invalid offsetIndex - value has to be smaller than TICK_ARRAY_SIZE\");\n }\n if (offsetIndex < 0) {\n throw new Error(\"Invalid offsetIndex - value is smaller than 0\");\n }\n if (tickSpacing < 0) {\n throw new Error(\"Invalid tickSpacing - value is less than 0\");\n }\n }\n static fromTickIndex(index, tickSpacing) {\n const arrayIndex = Math.floor(Math.floor(index / tickSpacing) / TICK_ARRAY_SIZE);\n let offsetIndex = Math.floor(index % (tickSpacing * TICK_ARRAY_SIZE) / tickSpacing);\n if (offsetIndex < 0) {\n offsetIndex = TICK_ARRAY_SIZE + offsetIndex;\n }\n return new TickArrayIndex(arrayIndex, offsetIndex, tickSpacing);\n }\n toTickIndex() {\n return this.arrayIndex * TICK_ARRAY_SIZE * this.tickSpacing + this.offsetIndex * this.tickSpacing;\n }\n toNextInitializableTickIndex() {\n return TickArrayIndex.fromTickIndex(this.toTickIndex() + this.tickSpacing, this.tickSpacing);\n }\n toPrevInitializableTickIndex() {\n return TickArrayIndex.fromTickIndex(this.toTickIndex() - this.tickSpacing, this.tickSpacing);\n }\n};\n\n// src/quotes/swap/tick-array-sequence.ts\nvar TickArraySequence = class {\n constructor(tickArrays, tickSpacing, aToB) {\n this.tickSpacing = tickSpacing;\n this.aToB = aToB;\n if (!tickArrays[0] || !tickArrays[0].data) {\n throw new Error(\"TickArray index 0 must be initialized\");\n }\n this.sequence = [];\n for (const tickArray of tickArrays) {\n if (!tickArray || !tickArray.data) {\n break;\n }\n this.sequence.push({\n address: tickArray.address,\n data: tickArray.data\n });\n }\n this.touchedArrays = [...Array(this.sequence.length).fill(false)];\n this.startArrayIndex = TickArrayIndex.fromTickIndex(\n this.sequence[0].data.startTickIndex,\n this.tickSpacing\n ).arrayIndex;\n }\n isValidTickArray0(tickCurrentIndex) {\n const shift = this.aToB ? 0 : this.tickSpacing;\n const tickArray = this.sequence[0].data;\n return this.checkIfIndexIsInTickArrayRange(tickArray.startTickIndex, tickCurrentIndex + shift);\n }\n getNumOfTouchedArrays() {\n return this.touchedArrays.filter((val) => !!val).length;\n }\n getTouchedArrays(minArraySize) {\n let result = this.touchedArrays.reduce((prev, curr, index) => {\n if (curr) {\n prev.push(this.sequence[index].address);\n }\n return prev;\n }, []);\n if (result.length === 0) {\n return [];\n }\n const sizeDiff = minArraySize - result.length;\n if (sizeDiff > 0) {\n result = result.concat(Array(sizeDiff).fill(result[result.length - 1]));\n }\n return result;\n }\n getTick(index) {\n const targetTaIndex = TickArrayIndex.fromTickIndex(index, this.tickSpacing);\n if (!this.isArrayIndexInBounds(targetTaIndex, this.aToB)) {\n throw new Error(\"Provided tick index is out of bounds for this sequence.\");\n }\n const localArrayIndex = this.getLocalArrayIndex(targetTaIndex.arrayIndex, this.aToB);\n const tickArray = this.sequence[localArrayIndex].data;\n this.touchedArrays[localArrayIndex] = true;\n if (!tickArray) {\n throw new WhirlpoolsError(\n `TickArray at index ${localArrayIndex} is not initialized.`,\n \"TickArrayIndexNotInitialized\" /* TickArrayIndexNotInitialized */\n );\n }\n if (!this.checkIfIndexIsInTickArrayRange(tickArray.startTickIndex, index)) {\n throw new WhirlpoolsError(\n `TickArray at index ${localArrayIndex} is unexpected for this sequence.`,\n \"TickArraySequenceInvalid\" /* TickArraySequenceInvalid */\n );\n }\n return tickArray.ticks[targetTaIndex.offsetIndex];\n }\n findNextInitializedTickIndex(currIndex) {\n const searchIndex = this.aToB ? currIndex : currIndex + this.tickSpacing;\n let currTaIndex = TickArrayIndex.fromTickIndex(searchIndex, this.tickSpacing);\n if (!this.isArrayIndexInBounds(currTaIndex, this.aToB)) {\n throw new WhirlpoolsError(\n `Swap input value traversed too many arrays. Out of bounds at attempt to traverse tick index - ${currTaIndex.toTickIndex()}.`,\n \"TickArraySequenceInvalid\" /* TickArraySequenceInvalid */\n );\n }\n while (this.isArrayIndexInBounds(currTaIndex, this.aToB)) {\n const currTickData = this.getTick(currTaIndex.toTickIndex());\n if (currTickData.initialized) {\n return { nextIndex: currTaIndex.toTickIndex(), nextTickData: currTickData };\n }\n currTaIndex = this.aToB ? currTaIndex.toPrevInitializableTickIndex() : currTaIndex.toNextInitializableTickIndex();\n }\n const lastIndexInArray = Math.max(\n Math.min(\n this.aToB ? currTaIndex.toTickIndex() + this.tickSpacing : currTaIndex.toTickIndex() - 1,\n MAX_TICK_INDEX\n ),\n MIN_TICK_INDEX\n );\n return { nextIndex: lastIndexInArray, nextTickData: null };\n }\n getLocalArrayIndex(arrayIndex, aToB) {\n return aToB ? this.startArrayIndex - arrayIndex : arrayIndex - this.startArrayIndex;\n }\n isArrayIndexInBounds(index, aToB) {\n const localArrayIndex = this.getLocalArrayIndex(index.arrayIndex, aToB);\n const seqLength = this.sequence.length;\n return localArrayIndex >= 0 && localArrayIndex < seqLength;\n }\n checkIfIndexIsInTickArrayRange(startTick, tickIndex) {\n const upperBound = startTick + this.tickSpacing * TICK_ARRAY_SIZE;\n return tickIndex >= startTick && tickIndex < upperBound;\n }\n};\n\n// src/quotes/swap/swap-manager.ts\nimport { ZERO as ZERO8 } from \"@orca-so/common-sdk\";\nimport { u64 as u645 } from \"@solana/spl-token\";\nimport BN11 from \"bn.js\";\n\n// src/utils/math/swap-math.ts\nimport { BN as BN10 } from \"@project-serum/anchor\";\n\n// src/utils/math/token-math.ts\nimport { U64_MAX as U64_MAX3, ZERO as ZERO7 } from \"@orca-so/common-sdk\";\nimport { BN as BN9 } from \"@project-serum/anchor\";\n\n// src/utils/math/bit-math.ts\nimport { ZERO as ZERO6, ONE, MathUtil as MathUtil7, TWO, U64_MAX as U64_MAX2 } from \"@orca-so/common-sdk\";\nimport { BN as BN8 } from \"@project-serum/anchor\";\nvar BitMath = class {\n static mul(n0, n1, limit) {\n const result = n0.mul(n1);\n if (this.isOverLimit(result, limit)) {\n throw new WhirlpoolsError(\n `Mul result higher than u${limit}`,\n \"MultiplicationOverflow\" /* MultiplicationOverflow */\n );\n }\n return result;\n }\n static mulDiv(n0, n1, d, limit) {\n return this.mulDivRoundUpIf(n0, n1, d, false, limit);\n }\n static mulDivRoundUp(n0, n1, d, limit) {\n return this.mulDivRoundUpIf(n0, n1, d, true, limit);\n }\n static mulDivRoundUpIf(n0, n1, d, roundUp, limit) {\n if (d.eq(ZERO6)) {\n throw new WhirlpoolsError(\"mulDiv denominator is zero\", \"DivideByZero\" /* DivideByZero */);\n }\n const p = this.mul(n0, n1, limit);\n const n = p.div(d);\n return roundUp && p.mod(d).gt(ZERO6) ? n.add(ONE) : n;\n }\n static checked_mul_shift_right(n0, n1, limit) {\n return this.checked_mul_shift_right_round_up_if(n0, n1, false, limit);\n }\n static checked_mul_shift_right_round_up_if(n0, n1, roundUp, limit) {\n if (n0.eq(ZERO6) || n1.eq(ZERO6)) {\n return ZERO6;\n }\n const p = this.mul(n0, n1, limit);\n if (this.isOverLimit(p, limit)) {\n throw new WhirlpoolsError(\n `MulShiftRight overflowed u${limit}.`,\n \"MultiplicationShiftRightOverflow\" /* MultiplicationShiftRightOverflow */\n );\n }\n const result = MathUtil7.fromX64_BN(p);\n const shouldRound = roundUp && result.and(U64_MAX2).gt(ZERO6);\n if (shouldRound && result.eq(U64_MAX2)) {\n throw new WhirlpoolsError(\n `MulShiftRight overflowed u${limit}.`,\n \"MultiplicationOverflow\" /* MultiplicationOverflow */\n );\n }\n return shouldRound ? result.add(ONE) : result;\n }\n static isOverLimit(n0, limit) {\n const limitBN = TWO.pow(new BN8(limit)).sub(ONE);\n return n0.gt(limitBN);\n }\n static divRoundUp(n, d) {\n return this.divRoundUpIf(n, d, true);\n }\n static divRoundUpIf(n, d, roundUp) {\n if (d.eq(ZERO6)) {\n throw new WhirlpoolsError(\"divRoundUpIf - divide by zero\", \"DivideByZero\" /* DivideByZero */);\n }\n let q = n.div(d);\n return roundUp && n.mod(d).gt(ZERO6) ? q.add(ONE) : q;\n }\n};\n\n// src/utils/math/token-math.ts\nfunction getAmountDeltaA(currSqrtPrice, targetSqrtPrice, currLiquidity, roundUp) {\n let [sqrtPriceLower, sqrtPriceUpper] = toIncreasingPriceOrder(currSqrtPrice, targetSqrtPrice);\n let sqrtPriceDiff = sqrtPriceUpper.sub(sqrtPriceLower);\n let numerator = currLiquidity.mul(sqrtPriceDiff).shln(64);\n let denominator = sqrtPriceLower.mul(sqrtPriceUpper);\n let quotient = numerator.div(denominator);\n let remainder = numerator.mod(denominator);\n let result = roundUp && !remainder.eq(ZERO7) ? quotient.add(new BN9(1)) : quotient;\n if (result.gt(U64_MAX3)) {\n throw new WhirlpoolsError(\"Results larger than U64\", \"TokenMaxExceeded\" /* TokenMaxExceeded */);\n }\n return result;\n}\nfunction getAmountDeltaB(currSqrtPrice, targetSqrtPrice, currLiquidity, roundUp) {\n let [sqrtPriceLower, sqrtPriceUpper] = toIncreasingPriceOrder(currSqrtPrice, targetSqrtPrice);\n let sqrtPriceDiff = sqrtPriceUpper.sub(sqrtPriceLower);\n return BitMath.checked_mul_shift_right_round_up_if(currLiquidity, sqrtPriceDiff, roundUp, 128);\n}\nfunction getNextSqrtPrice(sqrtPrice, currLiquidity, amount, amountSpecifiedIsInput, aToB) {\n if (amountSpecifiedIsInput === aToB) {\n return getNextSqrtPriceFromARoundUp(sqrtPrice, currLiquidity, amount, amountSpecifiedIsInput);\n } else {\n return getNextSqrtPriceFromBRoundDown(sqrtPrice, currLiquidity, amount, amountSpecifiedIsInput);\n }\n}\nfunction toIncreasingPriceOrder(sqrtPrice0, sqrtPrice1) {\n if (sqrtPrice0.gt(sqrtPrice1)) {\n return [sqrtPrice1, sqrtPrice0];\n } else {\n return [sqrtPrice0, sqrtPrice1];\n }\n}\nfunction getNextSqrtPriceFromARoundUp(sqrtPrice, currLiquidity, amount, amountSpecifiedIsInput) {\n if (amount.eq(ZERO7)) {\n return sqrtPrice;\n }\n let p = BitMath.mul(sqrtPrice, amount, 256);\n let numerator = BitMath.mul(currLiquidity, sqrtPrice, 256).shln(64);\n if (BitMath.isOverLimit(numerator, 256)) {\n throw new WhirlpoolsError(\n \"getNextSqrtPriceFromARoundUp - numerator overflow u256\",\n \"MultiplicationOverflow\" /* MultiplicationOverflow */\n );\n }\n let currLiquidityShiftLeft = currLiquidity.shln(64);\n if (!amountSpecifiedIsInput && currLiquidityShiftLeft.lte(p)) {\n throw new WhirlpoolsError(\n \"getNextSqrtPriceFromARoundUp - Unable to divide currLiquidityX64 by product\",\n \"DivideByZero\" /* DivideByZero */\n );\n }\n let denominator = amountSpecifiedIsInput ? currLiquidityShiftLeft.add(p) : currLiquidityShiftLeft.sub(p);\n let price = BitMath.divRoundUp(numerator, denominator);\n if (price.lt(new BN9(MIN_SQRT_PRICE))) {\n throw new WhirlpoolsError(\n \"getNextSqrtPriceFromARoundUp - price less than min sqrt price\",\n \"TokenMinSubceeded\" /* TokenMinSubceeded */\n );\n } else if (price.gt(new BN9(MAX_SQRT_PRICE))) {\n throw new WhirlpoolsError(\n \"getNextSqrtPriceFromARoundUp - price less than max sqrt price\",\n \"TokenMaxExceeded\" /* TokenMaxExceeded */\n );\n }\n return price;\n}\nfunction getNextSqrtPriceFromBRoundDown(sqrtPrice, currLiquidity, amount, amountSpecifiedIsInput) {\n let amountX64 = amount.shln(64);\n let delta = BitMath.divRoundUpIf(amountX64, currLiquidity, !amountSpecifiedIsInput);\n if (amountSpecifiedIsInput) {\n sqrtPrice = sqrtPrice.add(delta);\n } else {\n sqrtPrice = sqrtPrice.sub(delta);\n }\n return sqrtPrice;\n}\n\n// src/utils/math/swap-math.ts\nfunction computeSwapStep(amountRemaining, feeRate, currLiquidity, currSqrtPrice, targetSqrtPrice, amountSpecifiedIsInput, aToB) {\n let amountFixedDelta = getAmountFixedDelta(\n currSqrtPrice,\n targetSqrtPrice,\n currLiquidity,\n amountSpecifiedIsInput,\n aToB\n );\n let amountCalc = amountRemaining;\n if (amountSpecifiedIsInput) {\n const result = BitMath.mulDiv(\n amountRemaining,\n FEE_RATE_MUL_VALUE.sub(new BN10(feeRate)),\n FEE_RATE_MUL_VALUE,\n 128\n );\n amountCalc = result;\n }\n let nextSqrtPrice = amountCalc.gte(amountFixedDelta) ? targetSqrtPrice : getNextSqrtPrice(currSqrtPrice, currLiquidity, amountCalc, amountSpecifiedIsInput, aToB);\n let isMaxSwap = nextSqrtPrice.eq(targetSqrtPrice);\n let amountUnfixedDelta = getAmountUnfixedDelta(\n currSqrtPrice,\n nextSqrtPrice,\n currLiquidity,\n amountSpecifiedIsInput,\n aToB\n );\n if (!isMaxSwap) {\n amountFixedDelta = getAmountFixedDelta(\n currSqrtPrice,\n nextSqrtPrice,\n currLiquidity,\n amountSpecifiedIsInput,\n aToB\n );\n }\n let amountIn = amountSpecifiedIsInput ? amountFixedDelta : amountUnfixedDelta;\n let amountOut = amountSpecifiedIsInput ? amountUnfixedDelta : amountFixedDelta;\n if (!amountSpecifiedIsInput && amountOut.gt(amountRemaining)) {\n amountOut = amountRemaining;\n }\n let feeAmount;\n if (amountSpecifiedIsInput && !isMaxSwap) {\n feeAmount = amountRemaining.sub(amountIn);\n } else {\n const feeRateBN = new BN10(feeRate);\n feeAmount = BitMath.mulDivRoundUp(amountIn, feeRateBN, FEE_RATE_MUL_VALUE.sub(feeRateBN), 128);\n }\n return {\n amountIn,\n amountOut,\n nextPrice: nextSqrtPrice,\n feeAmount\n };\n}\nfunction getAmountFixedDelta(currSqrtPrice, targetSqrtPrice, currLiquidity, amountSpecifiedIsInput, aToB) {\n if (aToB === amountSpecifiedIsInput) {\n return getAmountDeltaA(currSqrtPrice, targetSqrtPrice, currLiquidity, amountSpecifiedIsInput);\n } else {\n return getAmountDeltaB(currSqrtPrice, targetSqrtPrice, currLiquidity, amountSpecifiedIsInput);\n }\n}\nfunction getAmountUnfixedDelta(currSqrtPrice, targetSqrtPrice, currLiquidity, amountSpecifiedIsInput, aToB) {\n if (aToB === amountSpecifiedIsInput) {\n return getAmountDeltaB(currSqrtPrice, targetSqrtPrice, currLiquidity, !amountSpecifiedIsInput);\n } else {\n return getAmountDeltaA(currSqrtPrice, targetSqrtPrice, currLiquidity, !amountSpecifiedIsInput);\n }\n}\n\n// src/quotes/swap/swap-manager.ts\nfunction computeSwap(whirlpoolData, tickSequence, tokenAmount, sqrtPriceLimit, amountSpecifiedIsInput, aToB) {\n let amountRemaining = tokenAmount;\n let amountCalculated = ZERO8;\n let currSqrtPrice = whirlpoolData.sqrtPrice;\n let currLiquidity = whirlpoolData.liquidity;\n let currTickIndex = whirlpoolData.tickCurrentIndex;\n let totalFeeAmount = ZERO8;\n const feeRate = whirlpoolData.feeRate;\n const protocolFeeRate = whirlpoolData.protocolFeeRate;\n let currProtocolFee = new u645(0);\n let currFeeGrowthGlobalInput = aToB ? whirlpoolData.feeGrowthGlobalA : whirlpoolData.feeGrowthGlobalB;\n while (amountRemaining.gt(ZERO8) && !sqrtPriceLimit.eq(currSqrtPrice)) {\n let { nextIndex: nextTickIndex } = tickSequence.findNextInitializedTickIndex(currTickIndex);\n let { nextTickPrice, nextSqrtPriceLimit: targetSqrtPrice } = getNextSqrtPrices(\n nextTickIndex,\n sqrtPriceLimit,\n aToB\n );\n const swapComputation = computeSwapStep(\n amountRemaining,\n feeRate,\n currLiquidity,\n currSqrtPrice,\n targetSqrtPrice,\n amountSpecifiedIsInput,\n aToB\n );\n totalFeeAmount = totalFeeAmount.add(swapComputation.feeAmount);\n if (amountSpecifiedIsInput) {\n amountRemaining = amountRemaining.sub(swapComputation.amountIn);\n amountRemaining = amountRemaining.sub(swapComputation.feeAmount);\n amountCalculated = amountCalculated.add(swapComputation.amountOut);\n } else {\n amountRemaining = amountRemaining.sub(swapComputation.amountOut);\n amountCalculated = amountCalculated.add(swapComputation.amountIn);\n amountCalculated = amountCalculated.add(swapComputation.feeAmount);\n }\n let { nextProtocolFee, nextFeeGrowthGlobalInput } = calculateFees(\n swapComputation.feeAmount,\n protocolFeeRate,\n currLiquidity,\n currProtocolFee,\n currFeeGrowthGlobalInput\n );\n currProtocolFee = nextProtocolFee;\n currFeeGrowthGlobalInput = nextFeeGrowthGlobalInput;\n if (swapComputation.nextPrice.eq(nextTickPrice)) {\n const nextTick = tickSequence.getTick(nextTickIndex);\n if (nextTick.initialized) {\n currLiquidity = calculateNextLiquidity(nextTick.liquidityNet, currLiquidity, aToB);\n }\n currTickIndex = aToB ? nextTickIndex - 1 : nextTickIndex;\n } else {\n currTickIndex = PriceMath.sqrtPriceX64ToTickIndex(swapComputation.nextPrice);\n }\n currSqrtPrice = swapComputation.nextPrice;\n }\n let { amountA, amountB } = calculateEstTokens(\n tokenAmount,\n amountRemaining,\n amountCalculated,\n aToB,\n amountSpecifiedIsInput\n );\n return {\n amountA,\n amountB,\n nextTickIndex: currTickIndex,\n nextSqrtPrice: currSqrtPrice,\n totalFeeAmount\n };\n}\nfunction getNextSqrtPrices(nextTick, sqrtPriceLimit, aToB) {\n const nextTickPrice = PriceMath.tickIndexToSqrtPriceX64(nextTick);\n const nextSqrtPriceLimit = aToB ? BN11.max(sqrtPriceLimit, nextTickPrice) : BN11.min(sqrtPriceLimit, nextTickPrice);\n return { nextTickPrice, nextSqrtPriceLimit };\n}\nfunction calculateFees(feeAmount, protocolFeeRate, currLiquidity, currProtocolFee, currFeeGrowthGlobalInput) {\n let nextProtocolFee = currProtocolFee;\n let nextFeeGrowthGlobalInput = currFeeGrowthGlobalInput;\n let globalFee = feeAmount;\n if (protocolFeeRate > 0) {\n let delta = calculateProtocolFee(globalFee, protocolFeeRate);\n globalFee = globalFee.sub(delta);\n nextProtocolFee = nextProtocolFee.add(currProtocolFee);\n }\n if (currLiquidity.gt(ZERO8)) {\n const globalFeeIncrement = globalFee.shln(64).div(currLiquidity);\n nextFeeGrowthGlobalInput = nextFeeGrowthGlobalInput.add(globalFeeIncrement);\n }\n return {\n nextProtocolFee,\n nextFeeGrowthGlobalInput\n };\n}\nfunction calculateProtocolFee(globalFee, protocolFeeRate) {\n return globalFee.mul(new u645(protocolFeeRate).div(PROTOCOL_FEE_RATE_MUL_VALUE));\n}\nfunction calculateEstTokens(amount, amountRemaining, amountCalculated, aToB, amountSpecifiedIsInput) {\n return aToB === amountSpecifiedIsInput ? {\n amountA: amount.sub(amountRemaining),\n amountB: amountCalculated\n } : {\n amountA: amountCalculated,\n amountB: amount.sub(amountRemaining)\n };\n}\nfunction calculateNextLiquidity(tickNetLiquidity, currLiquidity, aToB) {\n return aToB ? currLiquidity.sub(tickNetLiquidity) : currLiquidity.add(tickNetLiquidity);\n}\n\n// src/quotes/swap/swap-quote-impl.ts\nfunction simulateSwap(params) {\n const {\n aToB,\n whirlpoolData,\n tickArrays,\n tokenAmount,\n sqrtPriceLimit,\n otherAmountThreshold,\n amountSpecifiedIsInput\n } = params;\n if (sqrtPriceLimit.gt(new BN12(MAX_SQRT_PRICE)) || sqrtPriceLimit.lt(new BN12(MIN_SQRT_PRICE))) {\n throw new WhirlpoolsError(\n \"Provided SqrtPriceLimit is out of bounds.\",\n \"SqrtPriceOutOfBounds\" /* SqrtPriceOutOfBounds */\n );\n }\n if (aToB && sqrtPriceLimit.gt(whirlpoolData.sqrtPrice) || !aToB && sqrtPriceLimit.lt(whirlpoolData.sqrtPrice)) {\n throw new WhirlpoolsError(\n \"Provided SqrtPriceLimit is in the opposite direction of the trade.\",\n \"InvalidSqrtPriceLimitDirection\" /* InvalidSqrtPriceLimitDirection */\n );\n }\n if (tokenAmount.eq(ZERO9)) {\n throw new WhirlpoolsError(\"Provided tokenAmount is zero.\", \"ZeroTradableAmount\" /* ZeroTradableAmount */);\n }\n const tickSequence = new TickArraySequence(tickArrays, whirlpoolData.tickSpacing, aToB);\n if (!tickSequence.isValidTickArray0(whirlpoolData.tickCurrentIndex)) {\n throw new WhirlpoolsError(\n \"TickArray at index 0 does not contain the Whirlpool current tick index.\",\n \"TickArraySequenceInvalid\" /* TickArraySequenceInvalid */\n );\n }\n const swapResults = computeSwap(\n whirlpoolData,\n tickSequence,\n tokenAmount,\n sqrtPriceLimit,\n amountSpecifiedIsInput,\n aToB\n );\n if (amountSpecifiedIsInput) {\n if (aToB && otherAmountThreshold.gt(swapResults.amountB) || !aToB && otherAmountThreshold.gt(swapResults.amountA)) {\n throw new WhirlpoolsError(\n \"Quoted amount for the other token is below the otherAmountThreshold.\",\n \"AmountOutBelowMinimum\" /* AmountOutBelowMinimum */\n );\n }\n } else {\n if (aToB && otherAmountThreshold.lt(swapResults.amountA) || !aToB && otherAmountThreshold.lt(swapResults.amountB)) {\n throw new WhirlpoolsError(\n \"Quoted amount for the other token is above the otherAmountThreshold.\",\n \"AmountInAboveMaximum\" /* AmountInAboveMaximum */\n );\n }\n }\n const { estimatedAmountIn, estimatedAmountOut } = remapAndAdjustTokens(\n swapResults.amountA,\n swapResults.amountB,\n aToB\n );\n const numOfTickCrossings = tickSequence.getNumOfTouchedArrays();\n if (numOfTickCrossings > MAX_SWAP_TICK_ARRAYS) {\n throw new WhirlpoolsError(\n `Input amount causes the quote to traverse more than the allowable amount of tick-arrays ${numOfTickCrossings}`,\n \"TickArrayCrossingAboveMax\" /* TickArrayCrossingAboveMax */\n );\n }\n const touchedArrays = tickSequence.getTouchedArrays(MAX_SWAP_TICK_ARRAYS);\n return {\n estimatedAmountIn,\n estimatedAmountOut,\n estimatedEndTickIndex: swapResults.nextTickIndex,\n estimatedEndSqrtPrice: swapResults.nextSqrtPrice,\n estimatedFeeAmount: swapResults.totalFeeAmount,\n amount: tokenAmount,\n amountSpecifiedIsInput,\n aToB,\n otherAmountThreshold,\n sqrtPriceLimit,\n tickArray0: touchedArrays[0],\n tickArray1: touchedArrays[1],\n tickArray2: touchedArrays[2]\n };\n}\nfunction remapAndAdjustTokens(amountA, amountB, aToB) {\n const estimatedAmountIn = aToB ? amountA : amountB;\n const estimatedAmountOut = aToB ? amountB : amountA;\n return {\n estimatedAmountIn,\n estimatedAmountOut\n };\n}\n\n// src/quotes/public/swap-quote.ts\nasync function swapQuoteByInputToken(whirlpool, inputTokenMint, tokenAmount, slippageTolerance, programId, fetcher, refresh) {\n const params = await swapQuoteByToken(\n whirlpool,\n inputTokenMint,\n tokenAmount,\n 1 /* TokenA */,\n true,\n programId,\n fetcher,\n refresh\n );\n return swapQuoteWithParams(params);\n}\nasync function swapQuoteByOutputToken(whirlpool, outputTokenMint, tokenAmount, slippageTolerance, programId, fetcher, refresh) {\n const params = await swapQuoteByToken(\n whirlpool,\n outputTokenMint,\n tokenAmount,\n 2 /* TokenB */,\n false,\n programId,\n fetcher,\n refresh\n );\n return swapQuoteWithParams(params);\n}\nfunction swapQuoteWithParams(params) {\n const quote = simulateSwap(params);\n const slippageAdjustedQuote = {\n ...quote,\n ...SwapUtils.calculateSwapAmountsFromQuote(quote.amount, quote.amountSpecifiedIsInput)\n };\n return slippageAdjustedQuote;\n}\nasync function swapQuoteByToken(whirlpool, inputTokenMint, tokenAmount, amountSpecifiedTokenType, amountSpecifiedIsInput, programId, fetcher, refresh) {\n const whirlpoolData = whirlpool.getData();\n const swapMintKey = AddressUtil6.toPubKey(inputTokenMint);\n const swapTokenType = PoolUtil.getTokenType(whirlpoolData, swapMintKey);\n invariant7(!!swapTokenType, \"swapTokenMint does not match any tokens on this pool\");\n const aToB = swapTokenType === amountSpecifiedTokenType;\n const tickArrays = await SwapUtils.getTickArrays(\n whirlpoolData.tickCurrentIndex,\n whirlpoolData.tickSpacing,\n aToB,\n AddressUtil6.toPubKey(programId),\n whirlpool.getAddress(),\n fetcher,\n refresh\n );\n return {\n whirlpoolData,\n tokenAmount,\n aToB,\n amountSpecifiedIsInput,\n sqrtPriceLimit: SwapUtils.getDefaultSqrtPriceLimit(aToB),\n otherAmountThreshold: SwapUtils.getDefaultOtherAmountThreshold(amountSpecifiedIsInput),\n tickArrays\n };\n}\n\n// src/quotes/public/dev-fee-swap-quote.ts\nasync function swapQuoteByInputTokenWithDevFees(whirlpool, inputTokenMint, tokenAmount, slippageTolerance, programId, fetcher, devFeePercentage, refresh) {\n if (devFeePercentage.toDecimal().greaterThanOrEqualTo(1)) {\n throw new WhirlpoolsError(\n \"Provided devFeePercentage must be less than 100%\",\n \"InvalidDevFeePercentage\" /* InvalidDevFeePercentage */\n );\n }\n const devFeeAmount = tokenAmount.mul(devFeePercentage.numerator).div(devFeePercentage.denominator);\n const slippageAdjustedQuote = await swapQuoteByInputToken(\n whirlpool,\n inputTokenMint,\n tokenAmount.sub(devFeeAmount),\n slippageTolerance,\n programId,\n fetcher,\n refresh\n );\n const devFeeAdjustedQuote = {\n ...slippageAdjustedQuote,\n amountSpecifiedIsInput: true,\n estimatedAmountIn: slippageAdjustedQuote.estimatedAmountIn.add(devFeeAmount),\n estimatedFeeAmount: slippageAdjustedQuote.estimatedFeeAmount.add(devFeeAmount),\n estimatedSwapFeeAmount: slippageAdjustedQuote.estimatedFeeAmount,\n devFeeAmount\n };\n return devFeeAdjustedQuote;\n}\n\n// src/impl/whirlpool-client-impl.ts\nimport { AddressUtil as AddressUtil8, TransactionBuilder as TransactionBuilder5 } from \"@orca-so/common-sdk\";\nimport { Keypair as Keypair6, PublicKey as PublicKey12 } from \"@solana/web3.js\";\nimport invariant9 from \"tiny-invariant\";\n\n// src/impl/util.ts\nimport BN13 from \"bn.js\";\nasync function getTokenMintInfos(fetcher, data, refresh) {\n const mintA = data.tokenMintA;\n const infoA = await fetcher.getMintInfo(mintA, refresh);\n if (!infoA) {\n throw new Error(`Unable to fetch MintInfo for mint - ${mintA}`);\n }\n const mintB = data.tokenMintB;\n const infoB = await fetcher.getMintInfo(mintB, refresh);\n if (!infoB) {\n throw new Error(`Unable to fetch MintInfo for mint - ${mintB}`);\n }\n return [\n { mint: mintA, ...infoA },\n { mint: mintB, ...infoB }\n ];\n}\nasync function getRewardInfos(fetcher, data, refresh) {\n const rewardInfos = [];\n for (const rewardInfo of data.rewardInfos) {\n rewardInfos.push(await getRewardInfo(fetcher, rewardInfo, refresh));\n }\n return rewardInfos;\n}\nasync function getRewardInfo(fetcher, data, refresh) {\n const rewardInfo = { ...data, initialized: false, vaultAmount: new BN13(0) };\n if (PoolUtil.isRewardInitialized(data)) {\n const vaultInfo = await fetcher.getTokenInfo(data.vault, refresh);\n if (!vaultInfo) {\n throw new Error(`Unable to fetch TokenAccountInfo for vault - ${data.vault}`);\n }\n rewardInfo.initialized = true;\n rewardInfo.vaultAmount = vaultInfo.amount;\n }\n return rewardInfo;\n}\nasync function getTokenVaultAccountInfos(fetcher, data, refresh) {\n const vaultA = data.tokenVaultA;\n const vaultInfoA = await fetcher.getTokenInfo(vaultA, refresh);\n if (!vaultInfoA) {\n throw new Error(`Unable to fetch TokenAccountInfo for vault - ${vaultA}`);\n }\n const vaultB = data.tokenVaultB;\n const vaultInfoB = await fetcher.getTokenInfo(vaultB, refresh);\n if (!vaultInfoB) {\n throw new Error(`Unable to fetch TokenAccountInfo for vault - ${vaultB}`);\n }\n return [vaultInfoA, vaultInfoB];\n}\n\n// src/impl/whirlpool-impl.ts\nimport {\n AddressUtil as AddressUtil7,\n deriveATA as deriveATA2,\n resolveOrCreateATAs as resolveOrCreateATAs3,\n TokenUtil as TokenUtil4,\n TransactionBuilder as TransactionBuilder4,\n ZERO as ZERO10\n} from \"@orca-so/common-sdk\";\nimport { BN as BN14, translateAddress } from \"@project-serum/anchor\";\nimport { NATIVE_MINT as NATIVE_MINT4 } from \"@solana/spl-token\";\nimport { Keypair as Keypair5 } from \"@solana/web3.js\";\nimport invariant8 from \"tiny-invariant\";\nvar WhirlpoolImpl = class {\n constructor(ctx, address, tokenAInfo, tokenBInfo, tokenVaultAInfo, tokenVaultBInfo, rewardInfos, data) {\n this.ctx = ctx;\n this.address = address;\n this.tokenAInfo = tokenAInfo;\n this.tokenBInfo = tokenBInfo;\n this.tokenVaultAInfo = tokenVaultAInfo;\n this.tokenVaultBInfo = tokenVaultBInfo;\n this.rewardInfos = rewardInfos;\n this.data = data;\n }\n getAddress() {\n return this.address;\n }\n getData() {\n return this.data;\n }\n getTokenAInfo() {\n return this.tokenAInfo;\n }\n getTokenBInfo() {\n return this.tokenBInfo;\n }\n getTokenVaultAInfo() {\n return this.tokenVaultAInfo;\n }\n getTokenVaultBInfo() {\n return this.tokenVaultBInfo;\n }\n getRewardInfos() {\n return this.rewardInfos;\n }\n async refreshData() {\n await this.refresh();\n return this.data;\n }\n async openPosition(tickLower, tickUpper, liquidityInput, wallet, funder) {\n await this.refresh();\n return this.getOpenPositionWithOptMetadataTx(\n tickLower,\n tickUpper,\n liquidityInput,\n !!wallet ? AddressUtil7.toPubKey(wallet) : this.ctx.wallet.publicKey,\n !!funder ? AddressUtil7.toPubKey(funder) : this.ctx.wallet.publicKey\n );\n }\n async openPositionWithMetadata(tickLower, tickUpper, liquidityInput, sourceWallet, positionWallet, funder) {\n await this.refresh();\n return this.getOpenPositionWithOptMetadataTx(\n tickLower,\n tickUpper,\n liquidityInput,\n !!sourceWallet ? AddressUtil7.toPubKey(sourceWallet) : this.ctx.wallet.publicKey,\n !!funder ? AddressUtil7.toPubKey(funder) : this.ctx.wallet.publicKey,\n true\n );\n }\n async initTickArrayForTicks(ticks, funder, refresh = true) {\n const initTickArrayStartPdas = await TickArrayUtil.getUninitializedArraysPDAs(\n ticks,\n this.ctx.program.programId,\n this.address,\n this.data.tickSpacing,\n this.ctx.fetcher,\n refresh\n );\n if (!initTickArrayStartPdas.length) {\n return null;\n }\n const txBuilder = new TransactionBuilder4(\n this.ctx.provider.connection,\n this.ctx.provider.wallet\n );\n initTickArrayStartPdas.forEach((initTickArrayInfo) => {\n txBuilder.addInstruction(\n initTickArrayIx(this.ctx.program, {\n startTick: initTickArrayInfo.startIndex,\n tickArrayPda: initTickArrayInfo.pda,\n whirlpool: this.address,\n funder: !!funder ? AddressUtil7.toPubKey(funder) : this.ctx.provider.wallet.publicKey\n })\n );\n });\n return txBuilder;\n }\n async closePosition(positionAddress, slippageTolerance, destinationWallet, positionWallet, payer) {\n await this.refresh();\n const positionWalletKey = positionWallet ? AddressUtil7.toPubKey(positionWallet) : this.ctx.wallet.publicKey;\n const destinationWalletKey = destinationWallet ? AddressUtil7.toPubKey(destinationWallet) : this.ctx.wallet.publicKey;\n const payerKey = payer ? AddressUtil7.toPubKey(payer) : this.ctx.wallet.publicKey;\n return this.getClosePositionIx(\n AddressUtil7.toPubKey(positionAddress),\n slippageTolerance,\n destinationWalletKey,\n positionWalletKey,\n payerKey\n );\n }\n async swap(quote, sourceWallet) {\n const sourceWalletKey = sourceWallet ? AddressUtil7.toPubKey(sourceWallet) : this.ctx.wallet.publicKey;\n return this.getSwapTx(quote, sourceWalletKey);\n }\n async swapWithDevFees(quote, devFeeWallet, wallet, payer) {\n const sourceWalletKey = wallet ? AddressUtil7.toPubKey(wallet) : this.ctx.wallet.publicKey;\n const payerKey = payer ? AddressUtil7.toPubKey(payer) : this.ctx.wallet.publicKey;\n const txBuilder = new TransactionBuilder4(\n this.ctx.provider.connection,\n this.ctx.provider.wallet\n );\n if (!quote.devFeeAmount.eq(ZERO10)) {\n const inputToken = quote.aToB === quote.amountSpecifiedIsInput ? this.getTokenAInfo() : this.getTokenBInfo();\n txBuilder.addInstruction(\n await TokenUtil4.createSendTokensToWalletInstruction(\n this.ctx.connection,\n sourceWalletKey,\n devFeeWallet,\n inputToken.mint,\n inputToken.decimals,\n quote.devFeeAmount,\n () => this.ctx.fetcher.getAccountRentExempt(),\n payerKey\n )\n );\n }\n return this.getSwapTx(quote, sourceWalletKey, txBuilder);\n }\n async getOpenPositionWithOptMetadataTx(tickLower, tickUpper, liquidityInput, wallet, funder, withMetadata = false) {\n invariant8(TickUtil.checkTickInBounds(tickLower), \"tickLower is out of bounds.\");\n invariant8(TickUtil.checkTickInBounds(tickUpper), \"tickUpper is out of bounds.\");\n const { liquidityAmount: liquidity, tokenMaxA, tokenMaxB } = liquidityInput;\n invariant8(liquidity.gt(new BN14(0)), \"liquidity must be greater than zero\");\n const whirlpool = await this.ctx.fetcher.getPool(this.address, false);\n if (!whirlpool) {\n throw new Error(`Whirlpool not found: ${translateAddress(this.address).toBase58()}`);\n }\n invariant8(\n TickUtil.isTickInitializable(tickLower, whirlpool.tickSpacing),\n `lower tick ${tickLower} is not an initializable tick for tick-spacing ${whirlpool.tickSpacing}`\n );\n invariant8(\n TickUtil.isTickInitializable(tickUpper, whirlpool.tickSpacing),\n `upper tick ${tickUpper} is not an initializable tick for tick-spacing ${whirlpool.tickSpacing}`\n );\n const positionMintKeypair = Keypair5.generate();\n const positionPda = PDAUtil.getPosition(\n this.ctx.program.programId,\n positionMintKeypair.publicKey\n );\n const metadataPda = PDAUtil.getPositionMetadata(positionMintKeypair.publicKey);\n const positionTokenAccountAddress = await deriveATA2(wallet, positionMintKeypair.publicKey);\n const txBuilder = new TransactionBuilder4(\n this.ctx.provider.connection,\n this.ctx.provider.wallet\n );\n const positionIx = (withMetadata ? openPositionWithMetadataIx : openPositionIx)(\n this.ctx.program,\n {\n funder,\n owner: wallet,\n positionPda,\n metadataPda,\n positionMintAddress: positionMintKeypair.publicKey,\n positionTokenAccount: positionTokenAccountAddress,\n whirlpool: this.address,\n tickLowerIndex: tickLower,\n tickUpperIndex: tickUpper\n }\n );\n txBuilder.addInstruction(positionIx).addSigner(positionMintKeypair);\n const [ataA, ataB] = await resolveOrCreateATAs3(\n this.ctx.connection,\n wallet,\n [\n { tokenMint: whirlpool.tokenMintA, wrappedSolAmountIn: tokenMaxA },\n { tokenMint: whirlpool.tokenMintB, wrappedSolAmountIn: tokenMaxB }\n ],\n () => this.ctx.fetcher.getAccountRentExempt(),\n funder\n );\n const { address: tokenOwnerAccountA, ...tokenOwnerAccountAIx } = ataA;\n const { address: tokenOwnerAccountB, ...tokenOwnerAccountBIx } = ataB;\n txBuilder.addInstruction(tokenOwnerAccountAIx);\n txBuilder.addInstruction(tokenOwnerAccountBIx);\n const tickArrayLowerPda = PDAUtil.getTickArrayFromTickIndex(\n tickLower,\n this.data.tickSpacing,\n this.address,\n this.ctx.program.programId\n );\n const tickArrayUpperPda = PDAUtil.getTickArrayFromTickIndex(\n tickUpper,\n this.data.tickSpacing,\n this.address,\n this.ctx.program.programId\n );\n const liquidityIx = increaseLiquidityIx(this.ctx.program, {\n liquidityAmount: liquidity,\n tokenMaxA,\n tokenMaxB,\n whirlpool: this.address,\n positionAuthority: wallet,\n position: positionPda.publicKey,\n positionTokenAccount: positionTokenAccountAddress,\n tokenOwnerAccountA,\n tokenOwnerAccountB,\n tokenVaultA: whirlpool.tokenVaultA,\n tokenVaultB: whirlpool.tokenVaultB,\n tickArrayLower: tickArrayLowerPda.publicKey,\n tickArrayUpper: tickArrayUpperPda.publicKey\n });\n txBuilder.addInstruction(liquidityIx);\n return {\n positionMint: positionMintKeypair.publicKey,\n tx: txBuilder\n };\n }\n async getClosePositionIx(positionAddress, slippageTolerance, destinationWallet, positionWallet, payerKey) {\n const positionData = await this.ctx.fetcher.getPosition(positionAddress, true);\n if (!positionData) {\n throw new Error(`Position not found: ${positionAddress.toBase58()}`);\n }\n const whirlpool = this.data;\n invariant8(\n positionData.whirlpool.equals(this.address),\n `Position ${positionAddress.toBase58()} is not a position for Whirlpool ${this.address.toBase58()}`\n );\n const positionTokenAccount = await deriveATA2(positionWallet, positionData.positionMint);\n const tokenAccountsTxBuilder = new TransactionBuilder4(\n this.ctx.provider.connection,\n this.ctx.provider.wallet\n );\n const accountExemption = await this.ctx.fetcher.getAccountRentExempt();\n const txBuilder = new TransactionBuilder4(\n this.ctx.provider.connection,\n this.ctx.provider.wallet\n );\n const tickArrayLower = PDAUtil.getTickArrayFromTickIndex(\n positionData.tickLowerIndex,\n whirlpool.tickSpacing,\n positionData.whirlpool,\n this.ctx.program.programId\n ).publicKey;\n const tickArrayUpper = PDAUtil.getTickArrayFromTickIndex(\n positionData.tickUpperIndex,\n whirlpool.tickSpacing,\n positionData.whirlpool,\n this.ctx.program.programId\n ).publicKey;\n const [tickArrayLowerData, tickArrayUpperData] = await getTickArrayDataForPosition(\n this.ctx,\n positionData,\n whirlpool,\n true\n );\n invariant8(\n !!tickArrayLowerData,\n `Tick array ${tickArrayLower} expected to be initialized for whirlpool ${this.address}`\n );\n invariant8(\n !!tickArrayUpperData,\n `Tick array ${tickArrayUpper} expected to be initialized for whirlpool ${this.address}`\n );\n const position = new PositionImpl(\n this.ctx,\n positionAddress,\n positionData,\n whirlpool,\n tickArrayLowerData,\n tickArrayUpperData\n );\n const tickLower = position.getLowerTickData();\n const tickUpper = position.getUpperTickData();\n const feesQuote = collectFeesQuote({\n position: positionData,\n whirlpool,\n tickLower,\n tickUpper\n });\n const rewardsQuote = collectRewardsQuote({\n position: positionData,\n whirlpool,\n tickLower,\n tickUpper\n });\n const shouldCollectFees = feesQuote.feeOwedA.gtn(0) || feesQuote.feeOwedB.gtn(0);\n invariant8(\n this.data.rewardInfos.length === rewardsQuote.length,\n \"Rewards quote does not match reward infos length\"\n );\n const shouldDecreaseLiquidity = positionData.liquidity.gtn(0);\n const rewardsToCollect = this.data.rewardInfos.filter((_, i) => (rewardsQuote[i] ?? ZERO10).gtn(0)).map((info) => info.mint);\n const shouldCollectRewards = rewardsToCollect.length > 0;\n let mintType = \"ALL\" /* ALL */;\n if ((shouldDecreaseLiquidity || shouldCollectFees) && !shouldCollectRewards) {\n mintType = \"POOL_ONLY\" /* POOL_ONLY */;\n } else if (!(shouldDecreaseLiquidity || shouldCollectFees) && shouldCollectRewards) {\n mintType = \"REWARDS_ONLY\" /* REWARD_ONLY */;\n }\n const affiliatedMints = getTokenMintsFromWhirlpools([whirlpool], mintType);\n const { ataTokenAddresses: walletTokenAccountsByMint, resolveAtaIxs } = await resolveAtaForMints(this.ctx, {\n mints: affiliatedMints.mintMap,\n accountExemption,\n receiver: destinationWallet,\n payer: payerKey\n });\n tokenAccountsTxBuilder.addInstructions(resolveAtaIxs);\n if (affiliatedMints.hasNativeMint) {\n let { address: wSOLAta, ...resolveWSolIx } = createWSOLAccountInstructions(\n destinationWallet,\n ZERO10,\n accountExemption,\n payerKey,\n destinationWallet\n );\n walletTokenAccountsByMint[NATIVE_MINT4.toBase58()] = wSOLAta;\n txBuilder.addInstruction(resolveWSolIx);\n }\n if (shouldDecreaseLiquidity) {\n const tokenOwnerAccountA = walletTokenAccountsByMint[whirlpool.tokenMintA.toBase58()];\n const tokenOwnerAccountB = walletTokenAccountsByMint[whirlpool.tokenMintB.toBase58()];\n const decreaseLiqQuote = decreaseLiquidityQuoteByLiquidityWithParams({\n liquidity: positionData.liquidity,\n slippageTolerance,\n sqrtPrice: whirlpool.sqrtPrice,\n tickCurrentIndex: whirlpool.tickCurrentIndex,\n tickLowerIndex: positionData.tickLowerIndex,\n tickUpperIndex: positionData.tickUpperIndex\n });\n const liquidityIx = decreaseLiquidityIx(this.ctx.program, {\n liquidityAmount: decreaseLiqQuote.liquidityAmount,\n tokenMinA: decreaseLiqQuote.tokenMinA,\n tokenMinB: decreaseLiqQuote.tokenMinB,\n whirlpool: positionData.whirlpool,\n positionAuthority: positionWallet,\n position: positionAddress,\n positionTokenAccount,\n tokenOwnerAccountA,\n tokenOwnerAccountB,\n tokenVaultA: whirlpool.tokenVaultA,\n tokenVaultB: whirlpool.tokenVaultB,\n tickArrayLower,\n tickArrayUpper\n });\n txBuilder.addInstruction(liquidityIx);\n }\n if (shouldCollectFees) {\n const collectFeexTx = await position.collectFees(\n false,\n walletTokenAccountsByMint,\n destinationWallet,\n positionWallet,\n payerKey,\n true\n );\n txBuilder.addInstruction(collectFeexTx.compressIx(false));\n }\n if (shouldCollectRewards) {\n const collectRewardsTx = await position.collectRewards(\n rewardsToCollect,\n false,\n walletTokenAccountsByMint,\n destinationWallet,\n positionWallet,\n payerKey\n );\n txBuilder.addInstruction(collectRewardsTx.compressIx(false));\n }\n const positionIx = closePositionIx(this.ctx.program, {\n positionAuthority: positionWallet,\n receiver: destinationWallet,\n positionTokenAccount,\n position: positionAddress,\n positionMint: positionData.positionMint\n });\n txBuilder.addInstruction(positionIx);\n const txBuilders = [];\n if (!tokenAccountsTxBuilder.isEmpty()) {\n txBuilders.push(tokenAccountsTxBuilder);\n }\n txBuilders.push(txBuilder);\n return txBuilders;\n }\n async getSwapTx(input, wallet, initTxBuilder) {\n invariant8(input.amount.gt(ZERO10), \"swap amount must be more than zero.\");\n const tickArrayAddresses = [input.tickArray0, input.tickArray1, input.tickArray2];\n const tickArrays = await this.ctx.fetcher.listTickArrays(tickArrayAddresses, true);\n const uninitializedIndices = TickArrayUtil.getUninitializedArrays(tickArrays);\n if (uninitializedIndices.length > 0) {\n const uninitializedArrays = uninitializedIndices.map((index) => tickArrayAddresses[index].toBase58()).join(\", \");\n throw new Error(`TickArray addresses - [${uninitializedArrays}] need to be initialized.`);\n }\n const { amount, aToB } = input;\n const whirlpool = this.data;\n const txBuilder = initTxBuilder ?? new TransactionBuilder4(this.ctx.provider.connection, this.ctx.provider.wallet);\n const [ataA, ataB] = await resolveOrCreateATAs3(\n this.ctx.connection,\n wallet,\n [\n { tokenMint: whirlpool.tokenMintA, wrappedSolAmountIn: aToB ? amount : ZERO10 },\n { tokenMint: whirlpool.tokenMintB, wrappedSolAmountIn: !aToB ? amount : ZERO10 }\n ],\n () => this.ctx.fetcher.getAccountRentExempt()\n );\n const { address: tokenOwnerAccountA, ...tokenOwnerAccountAIx } = ataA;\n const { address: tokenOwnerAccountB, ...tokenOwnerAccountBIx } = ataB;\n txBuilder.addInstruction(tokenOwnerAccountAIx);\n txBuilder.addInstruction(tokenOwnerAccountBIx);\n const oraclePda = PDAUtil.getOracle(this.ctx.program.programId, this.address);\n txBuilder.addInstruction(\n swapIx(this.ctx.program, {\n ...input,\n whirlpool: this.address,\n tokenAuthority: wallet,\n tokenOwnerAccountA,\n tokenVaultA: whirlpool.tokenVaultA,\n tokenOwnerAccountB,\n tokenVaultB: whirlpool.tokenVaultB,\n oracle: oraclePda.publicKey\n })\n );\n return txBuilder;\n }\n async refresh() {\n const account = await this.ctx.fetcher.getPool(this.address, true);\n if (!!account) {\n const rewardInfos = await getRewardInfos(this.ctx.fetcher, account, true);\n const [tokenVaultAInfo, tokenVaultBInfo] = await getTokenVaultAccountInfos(\n this.ctx.fetcher,\n account,\n true\n );\n this.data = account;\n this.tokenVaultAInfo = tokenVaultAInfo;\n this.tokenVaultBInfo = tokenVaultBInfo;\n this.rewardInfos = rewardInfos;\n }\n }\n};\n\n// src/impl/whirlpool-client-impl.ts\nvar WhirlpoolClientImpl = class {\n constructor(ctx) {\n this.ctx = ctx;\n }\n getContext() {\n return this.ctx;\n }\n getFetcher() {\n return this.ctx.fetcher;\n }\n async getPool(poolAddress, refresh = false) {\n const account = await this.ctx.fetcher.getPool(poolAddress, refresh);\n if (!account) {\n throw new Error(`Unable to fetch Whirlpool at address at ${poolAddress}`);\n }\n const tokenInfos = await getTokenMintInfos(this.ctx.fetcher, account, refresh);\n const vaultInfos = await getTokenVaultAccountInfos(this.ctx.fetcher, account, refresh);\n const rewardInfos = await getRewardInfos(this.ctx.fetcher, account, refresh);\n return new WhirlpoolImpl(\n this.ctx,\n AddressUtil8.toPubKey(poolAddress),\n tokenInfos[0],\n tokenInfos[1],\n vaultInfos[0],\n vaultInfos[1],\n rewardInfos,\n account\n );\n }\n async getPools(poolAddresses, refresh = false) {\n const accounts2 = (await this.ctx.fetcher.listPools(poolAddresses, refresh)).filter(\n (account) => !!account\n );\n if (accounts2.length !== poolAddresses.length) {\n throw new Error(`Unable to fetch all Whirlpools at addresses ${poolAddresses}`);\n }\n const tokenMints = /* @__PURE__ */ new Set();\n const tokenAccounts = /* @__PURE__ */ new Set();\n accounts2.forEach((account) => {\n tokenMints.add(account.tokenMintA.toBase58());\n tokenMints.add(account.tokenMintB.toBase58());\n tokenAccounts.add(account.tokenVaultA.toBase58());\n tokenAccounts.add(account.tokenVaultB.toBase58());\n account.rewardInfos.forEach((rewardInfo) => {\n if (PoolUtil.isRewardInitialized(rewardInfo)) {\n tokenAccounts.add(rewardInfo.vault.toBase58());\n }\n });\n });\n await this.ctx.fetcher.listMintInfos(Array.from(tokenMints), refresh);\n await this.ctx.fetcher.listTokenInfos(Array.from(tokenAccounts), refresh);\n const whirlpools = [];\n for (let i = 0; i < accounts2.length; i++) {\n const account = accounts2[i];\n const poolAddress = poolAddresses[i];\n const tokenInfos = await getTokenMintInfos(this.ctx.fetcher, account, false);\n const vaultInfos = await getTokenVaultAccountInfos(this.ctx.fetcher, account, false);\n const rewardInfos = await getRewardInfos(this.ctx.fetcher, account, false);\n whirlpools.push(\n new WhirlpoolImpl(\n this.ctx,\n AddressUtil8.toPubKey(poolAddress),\n tokenInfos[0],\n tokenInfos[1],\n vaultInfos[0],\n vaultInfos[1],\n rewardInfos,\n account\n )\n );\n }\n return whirlpools;\n }\n async getPosition(positionAddress, refresh = false) {\n const account = await this.ctx.fetcher.getPosition(positionAddress, refresh);\n if (!account) {\n throw new Error(`Unable to fetch Position at address at ${positionAddress}`);\n }\n const whirlAccount = await this.ctx.fetcher.getPool(account.whirlpool, refresh);\n if (!whirlAccount) {\n throw new Error(`Unable to fetch Whirlpool for Position at address at ${positionAddress}`);\n }\n const [lowerTickArray, upperTickArray] = await getTickArrayDataForPosition(\n this.ctx,\n account,\n whirlAccount,\n refresh\n );\n if (!lowerTickArray || !upperTickArray) {\n throw new Error(`Unable to fetch TickArrays for Position at address at ${positionAddress}`);\n }\n return new PositionImpl(\n this.ctx,\n AddressUtil8.toPubKey(positionAddress),\n account,\n whirlAccount,\n lowerTickArray,\n upperTickArray\n );\n }\n async getPositions(positionAddresses, refresh = false) {\n const positions = await this.ctx.fetcher.listPositions(positionAddresses, refresh);\n const whirlpoolAddrs = positions.map((position) => position == null ? void 0 : position.whirlpool.toBase58()).flatMap((x) => !!x ? x : []);\n await this.ctx.fetcher.listPools(whirlpoolAddrs, refresh);\n const tickArrayAddresses = /* @__PURE__ */ new Set();\n await Promise.all(\n positions.map(async (pos) => {\n if (pos) {\n const pool = await this.ctx.fetcher.getPool(pos.whirlpool, false);\n if (pool) {\n const lowerTickArrayPda = PDAUtil.getTickArrayFromTickIndex(\n pos.tickLowerIndex,\n pool.tickSpacing,\n pos.whirlpool,\n this.ctx.program.programId\n ).publicKey;\n const upperTickArrayPda = PDAUtil.getTickArrayFromTickIndex(\n pos.tickUpperIndex,\n pool.tickSpacing,\n pos.whirlpool,\n this.ctx.program.programId\n ).publicKey;\n tickArrayAddresses.add(lowerTickArrayPda);\n tickArrayAddresses.add(upperTickArrayPda);\n }\n }\n })\n );\n await this.ctx.fetcher.listTickArrays(Array.from(tickArrayAddresses), true);\n const results = await Promise.all(\n positionAddresses.map(async (pos) => {\n try {\n const position = await this.getPosition(pos, false);\n return [pos, position];\n } catch {\n return [pos, null];\n }\n })\n );\n return Object.fromEntries(results);\n }\n async createPool(whirlpoolsConfig, tokenMintA, tokenMintB, tickSpacing, initialTick, funder, refresh = false) {\n invariant9(TickUtil.checkTickInBounds(initialTick), \"initialTick is out of bounds.\");\n invariant9(\n TickUtil.isTickInitializable(initialTick, tickSpacing),\n `initial tick ${initialTick} is not an initializable tick for tick-spacing ${tickSpacing}`\n );\n const correctTokenOrder = PoolUtil.orderMints(tokenMintA, tokenMintB).map(\n (addr) => addr.toString()\n );\n invariant9(\n correctTokenOrder[0] === tokenMintA.toString(),\n \"Token order needs to be flipped to match the canonical ordering (i.e. sorted on the byte repr. of the mint pubkeys)\"\n );\n whirlpoolsConfig = AddressUtil8.toPubKey(whirlpoolsConfig);\n const feeTierKey = PDAUtil.getFeeTier(\n this.ctx.program.programId,\n whirlpoolsConfig,\n tickSpacing\n ).publicKey;\n const initSqrtPrice = PriceMath.tickIndexToSqrtPriceX64(initialTick);\n const tokenVaultAKeypair = Keypair6.generate();\n const tokenVaultBKeypair = Keypair6.generate();\n const whirlpoolPda = PDAUtil.getWhirlpool(\n this.ctx.program.programId,\n whirlpoolsConfig,\n new PublicKey12(tokenMintA),\n new PublicKey12(tokenMintB),\n tickSpacing\n );\n const feeTier = await this.ctx.fetcher.getFeeTier(feeTierKey, refresh);\n invariant9(!!feeTier, `Fee tier for ${tickSpacing} doesn't exist`);\n const txBuilder = new TransactionBuilder5(\n this.ctx.provider.connection,\n this.ctx.provider.wallet\n );\n const initPoolIx = WhirlpoolIx.initializePoolIx(this.ctx.program, {\n initSqrtPrice,\n whirlpoolsConfig,\n whirlpoolPda,\n tokenMintA: new PublicKey12(tokenMintA),\n tokenMintB: new PublicKey12(tokenMintB),\n tokenVaultAKeypair,\n tokenVaultBKeypair,\n feeTierKey,\n tickSpacing,\n funder: new PublicKey12(funder)\n });\n const initialTickArrayStartTick = TickUtil.getStartTickIndex(initialTick, tickSpacing);\n const initialTickArrayPda = PDAUtil.getTickArray(\n this.ctx.program.programId,\n whirlpoolPda.publicKey,\n initialTickArrayStartTick\n );\n txBuilder.addInstruction(initPoolIx);\n txBuilder.addInstruction(\n initTickArrayIx(this.ctx.program, {\n startTick: initialTickArrayStartTick,\n tickArrayPda: initialTickArrayPda,\n whirlpool: whirlpoolPda.publicKey,\n funder: AddressUtil8.toPubKey(funder)\n })\n );\n return {\n poolKey: whirlpoolPda.publicKey,\n tx: txBuilder\n };\n }\n async collectFeesAndRewardsForPositions(positionAddresses, refresh) {\n const walletKey = this.ctx.wallet.publicKey;\n return collectAllForPositionAddressesTxns(\n this.ctx,\n {\n positions: positionAddresses,\n receiver: walletKey,\n positionAuthority: walletKey,\n positionOwner: walletKey,\n payer: walletKey\n },\n refresh\n );\n }\n};\n\n// src/whirlpool-client.ts\nfunction buildWhirlpoolClient(ctx) {\n return new WhirlpoolClientImpl(ctx);\n}\n\n// src/index.ts\nimport { Percentage as Percentage9 } from \"@orca-so/common-sdk\";\nDecimal3.set({ precision: 40, toExpPos: 40, toExpNeg: -20, rounding: 1 });\nexport {\n AccountFetcher,\n AccountName,\n FEE_RATE_MUL_VALUE,\n MAX_SQRT_PRICE,\n MAX_SWAP_TICK_ARRAYS,\n MAX_TICK_INDEX,\n METADATA_PROGRAM_ADDRESS,\n MIN_SQRT_PRICE,\n MIN_TICK_INDEX,\n NUM_REWARDS,\n ORCA_WHIRLPOOLS_CONFIG,\n ORCA_WHIRLPOOL_PROGRAM_ID,\n PDAUtil,\n PROTOCOL_FEE_RATE_MUL_VALUE,\n ParsableFeeTier,\n ParsableMintInfo,\n ParsablePosition,\n ParsableTickArray,\n ParsableTokenInfo,\n ParsableWhirlpool,\n ParsableWhirlpoolsConfig,\n Percentage9 as Percentage,\n PoolUtil,\n PositionImpl,\n PriceMath,\n SwapDirection,\n SwapUtils,\n TICK_ARRAY_SIZE,\n TickArrayUtil,\n TickUtil,\n TokenType,\n WHIRLPOOL_ACCOUNT_SIZE,\n WHIRLPOOL_CODER,\n WhirlpoolContext2 as WhirlpoolContext,\n WhirlpoolIx,\n buildWhirlpoolClient,\n collectFeesQuote,\n collectRewardsQuote,\n decreaseLiquidityQuoteByLiquidity,\n decreaseLiquidityQuoteByLiquidityWithParams,\n increaseLiquidityQuoteByInputToken,\n increaseLiquidityQuoteByInputTokenWithParams,\n swapQuoteByInputToken,\n swapQuoteByInputTokenWithDevFees,\n swapQuoteByOutputToken,\n swapQuoteWithParams,\n toTokenAmount,\n toTx\n};\n//# sourceMappingURL=index.mjs.map","import { blob, Blob, Layout } from \"@solana/buffer-layout\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport BN from \"bn.js\";\nclass PublicKeyLayout extends Layout {\n constructor(property) {\n const layout = blob(32);\n super(layout.span, property);\n this.layout = layout;\n }\n getSpan(b, offset) {\n return this.layout.getSpan(b, offset);\n }\n decode(b, offset) {\n return new PublicKey(this.layout.decode(b, offset));\n }\n encode(src, b, offset) {\n return this.layout.encode(src.toBuffer(), b, offset);\n }\n}\n/**\n * Layout for a public key\n */\nexport const publicKey = (property) => new PublicKeyLayout(property);\nexport function publicKeyLayout(property) {\n return new PublicKeyLayout(property);\n}\nclass BNLayout extends Blob {\n decode(b, offset) {\n return new BN(super.decode(b, offset), 10, \"le\");\n }\n encode(src, b, offset) {\n return super.encode(src.toArrayLike(Buffer, \"le\", this.span), b, offset);\n }\n}\nexport function u64(property) {\n return new BNLayout(8, property);\n}\nexport function u128(property) {\n return new BNLayout(16, property);\n}\nexport function setLayoutDecoder(layout, decoder) {\n const originalDecode = layout.decode;\n layout.decode = function decode(b, offset = 0) {\n return decoder(originalDecode.call(this, b, offset));\n };\n}\nexport function setLayoutEncoder(layout, encoder) {\n const originalEncode = layout.encode;\n layout.encode = function encode(src, b, offset) {\n return originalEncode.call(this, encoder(src), b, offset);\n };\n return layout;\n}\n","import BN from \"bn.js\";\nimport { seq, struct, u32, u8, offset } from \"@solana/buffer-layout\";\nimport { publicKeyLayout, setLayoutDecoder, u128, u64 } from \"./base\";\nconst OB_HEADER_LAYOUT = struct([u8(\"flag\"), u32(\"len\")], \"header\");\nconst ORDER_LAYOUT = struct([\n u128(\"key\"),\n publicKeyLayout(\"owner\"),\n u64(\"quantity\"),\n u64(\"clientOrderId\"),\n u8(\"feeTier\"),\n u64(\"total\"),\n]);\nexport const OB_LAYOUT = struct([\n OB_HEADER_LAYOUT,\n seq(ORDER_LAYOUT, offset(\n // @ts-expect-error\n OB_HEADER_LAYOUT.layoutFor(\"len\"), OB_HEADER_LAYOUT.offsetOf(\"len\") - OB_HEADER_LAYOUT.span), \"nodes\"),\n]);\nexport class OrderBook {\n constructor(header, nodes) {\n this.header = header;\n this.nodes = nodes || [];\n }\n get isDescending() {\n return this.header.flag == 1 ? true : false;\n }\n static decode(buffer) {\n return OB_LAYOUT.decode(buffer);\n }\n static getPriceFromKey(key) {\n return key.ushrn(64);\n }\n get(searchKey) {\n return this.nodes.find((n) => n.key.eq(searchKey));\n }\n get items() {\n return this.nodes;\n }\n allItems(descending = false) {\n return descending != this.isDescending\n ? this.nodes.slice().reverse()\n : this.nodes;\n }\n find(clientOrderId) {\n if (!(clientOrderId instanceof BN)) {\n clientOrderId = new BN(clientOrderId);\n }\n return this.nodes.find((n) => n.clientOrderId.eq(clientOrderId));\n }\n findMinMax(isMax) {\n return this.allItems(isMax)[0] || null;\n }\n}\nsetLayoutDecoder(OB_LAYOUT, ({ header, nodes }) => new OrderBook(header, nodes));\nexport const ORDER_SIZE = ORDER_LAYOUT.span;\n","import { seq, struct, u32, u8, offset } from \"@solana/buffer-layout\";\nimport { publicKeyLayout, setLayoutDecoder, u128, u64 } from \"./base\";\nconst EVENT_ITEM_LAYOUT = struct([\n u8(\"flag\"),\n u8(\"fee_tier\"),\n seq(u8(), 6),\n u128(\"key\"),\n publicKeyLayout(\"owner\"),\n u64(\"quantity\"),\n u64(\"total\"),\n]);\nconst QUEUE_LEN = u32(\"len\");\nexport const EVENT_QUEUE_LAYOUT = struct([\n u64(\"flag\"),\n QUEUE_LEN,\n seq(u8(), 4),\n seq(EVENT_ITEM_LAYOUT, offset(QUEUE_LEN, -8), \"items\"),\n]);\nexport class EventQueue {\n constructor(len, items) {\n this.len = len;\n this.items = items;\n }\n allItems() {\n return this.items;\n }\n get length() {\n return this.len;\n }\n static decode(buffer) {\n const { len, items } = EVENT_QUEUE_LAYOUT.decode(buffer);\n return new EventQueue(len, items);\n }\n}\nsetLayoutDecoder(EVENT_QUEUE_LAYOUT, ({ len, items }) => new EventQueue(len, items));\n","import { seq } from \"@solana/buffer-layout\";\nimport { u64 } from \"./base\";\nconst PublicKeyAlignedBytesLayout = seq(u64(\"\"), 4);\nexport function publicKeyToAlignedBytes(pubkey) {\n return PublicKeyAlignedBytesLayout.decode(pubkey.toBuffer());\n}\nexport function publicKeyComparator(a, b) {\n const aa = publicKeyToAlignedBytes(a);\n const bb = publicKeyToAlignedBytes(b);\n for (const i in aa) {\n const diff = aa[i].sub(bb[i]);\n if (!diff.isZero()) {\n return Number(diff.toString());\n }\n }\n return 0;\n}\n","import { TransactionInstruction, Transaction } from \"@solana/web3.js\";\nimport { BorshCoder } from \"@project-serum/anchor\";\nimport { DexIDL } from \"@dradex/idl\";\nexport const dexCoder = new BorshCoder(DexIDL);\nexport const FEE_BPS_BASE = 10000;\nexport var Side;\n(function (Side) {\n Side[Side[\"BID\"] = 0] = \"BID\";\n Side[Side[\"ASK\"] = 1] = \"ASK\";\n})(Side || (Side = {}));\nexport class InstructionSet {\n constructor(instructions, provider) {\n this.instructions = instructions;\n this.provider = provider;\n }\n tx() {\n return new Transaction().add(...this.instructions);\n }\n add(...items) {\n items.forEach((item) => {\n if (item instanceof TransactionInstruction) {\n this.instructions.push(item);\n }\n else {\n this.instructions.push(...item.instructions);\n }\n });\n }\n instruction() {\n if (this.instructions.length == 0) {\n throw new Error(\"no instruction available\");\n }\n return this.instructions[0];\n }\n exec({ signers, ...options } = {}) {\n var _a, _b;\n if (!this.provider) {\n throw new Error(\"provider not available\");\n }\n if (!signers) {\n throw new Error(\"signers not available\");\n }\n return (_b = (_a = this.provider).send) === null || _b === void 0 ? void 0 : _b.call(_a, this.tx(), signers, options);\n }\n}\n","export const IDL = {\n \"version\": \"0.1.0\",\n \"name\": \"dex\",\n \"instructions\": [\n {\n \"name\": \"setDexConfig\",\n \"accounts\": [\n {\n \"name\": \"master\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"signer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"authority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"input\",\n \"type\": {\n \"defined\": \"DexConfigInput\"\n }\n }\n ]\n },\n {\n \"name\": \"setDexUserFeeTier\",\n \"accounts\": [\n {\n \"name\": \"dexUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"user\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"payer\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"authority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"input\",\n \"type\": {\n \"defined\": \"DexUserFeeTierInput\"\n }\n }\n ]\n },\n {\n \"name\": \"createDexUser\",\n \"accounts\": [\n {\n \"name\": \"dexUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"signer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"referrer\",\n \"type\": {\n \"option\": {\n \"array\": [\n \"u8\",\n 32\n ]\n }\n }\n }\n ]\n },\n {\n \"name\": \"createMarketUser\",\n \"accounts\": [\n {\n \"name\": \"pair\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"market\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"marketUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"signer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"createMarket\",\n \"accounts\": [\n {\n \"name\": \"pair\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"market\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"eventQueue\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t0Mint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"t1Mint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"lpTokenMint\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t0Vault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t1Vault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"bids\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"asks\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"master\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"signer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"input\",\n \"type\": {\n \"defined\": \"MarketInput\"\n }\n }\n ]\n },\n {\n \"name\": \"addLiquidity\",\n \"accounts\": [\n {\n \"name\": \"pair\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"market\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t0Mint\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t1Mint\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t0Vault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t0User\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t1Vault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t1User\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"lpTokenMint\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"lpTokenUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"lpTokenVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"master\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"signer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"logger\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"t0Amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"t1Amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"removeLiquidity\",\n \"accounts\": [\n {\n \"name\": \"pair\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"market\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t0Mint\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t1Mint\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t0Vault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t0User\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t1Vault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t1User\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"lpTokenMint\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"lpTokenUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"lpTokenVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"master\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"signer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"logger\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n }\n ]\n },\n {\n \"name\": \"createOrder\",\n \"accounts\": [\n {\n \"name\": \"pair\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"market\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"eventQueue\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"dexUser\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"marketUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"bids\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"asks\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t0Vault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t1Vault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t0User\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t1User\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"master\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"signer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"logger\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"input\",\n \"type\": {\n \"defined\": \"OrderInput\"\n }\n }\n ]\n },\n {\n \"name\": \"settleFunds\",\n \"accounts\": [\n {\n \"name\": \"pair\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"market\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"eventQueue\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"dexUser\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"marketUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t0Mint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"t1Mint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"bids\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"asks\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t0Vault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t1Vault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t0User\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t1User\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"master\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"signer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"rent\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"logger\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"cancelOrder\",\n \"accounts\": [\n {\n \"name\": \"pair\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"market\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"eventQueue\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"dexUser\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"marketUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"bids\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"asks\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t0Vault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t1Vault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t0User\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"t1User\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"master\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"signer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"logger\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"input\",\n \"type\": {\n \"defined\": \"CancelOrderInput\"\n }\n }\n ]\n },\n {\n \"name\": \"daoSetFundManager\",\n \"accounts\": [\n {\n \"name\": \"master\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"daoConfig\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"fundManager\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"signer\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"authority\",\n \"isMut\": false,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": []\n },\n {\n \"name\": \"daoClaimRevenue\",\n \"accounts\": [\n {\n \"name\": \"tokenMint\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"market\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"marketVault\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"daoConfig\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenUser\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"master\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"signer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"systemProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"tokenProgram\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"logger\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"tokenIndex\",\n \"type\": \"u8\"\n }\n ]\n },\n {\n \"name\": \"consumeEvents\",\n \"accounts\": [\n {\n \"name\": \"pair\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"market\",\n \"isMut\": false,\n \"isSigner\": false\n },\n {\n \"name\": \"eventQueue\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"signer\",\n \"isMut\": true,\n \"isSigner\": true\n },\n {\n \"name\": \"master\",\n \"isMut\": true,\n \"isSigner\": false\n },\n {\n \"name\": \"logger\",\n \"isMut\": false,\n \"isSigner\": false\n }\n ],\n \"args\": [\n {\n \"name\": \"input\",\n \"type\": {\n \"defined\": \"ConsumeEventsInput\"\n }\n }\n ]\n }\n ],\n \"accounts\": [\n {\n \"name\": \"dexState\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"crankPenalty\",\n \"type\": \"u16\"\n },\n {\n \"name\": \"reserved\",\n \"type\": {\n \"array\": [\n \"u8\",\n 7\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"daoConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"fundManager\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"reserved\",\n \"type\": {\n \"array\": [\n \"u64\",\n 32\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"pair\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": []\n }\n },\n {\n \"name\": \"market\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"pair\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"t0\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"t1\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"t0Vault\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"t1Vault\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"lpToken\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"authority\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"config\",\n \"type\": {\n \"defined\": \"MarketConfig\"\n }\n },\n {\n \"name\": \"orderBook\",\n \"type\": {\n \"defined\": \"OrderBook\"\n }\n },\n {\n \"name\": \"nextUserId\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"tokenDecimals\",\n \"type\": {\n \"array\": [\n \"u8\",\n 2\n ]\n }\n },\n {\n \"name\": \"pool\",\n \"type\": {\n \"array\": [\n \"u64\",\n 2\n ]\n }\n },\n {\n \"name\": \"daoRevenue\",\n \"type\": {\n \"array\": [\n \"u64\",\n 2\n ]\n }\n },\n {\n \"name\": \"eventQueue\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"reserved\",\n \"type\": {\n \"array\": [\n \"u64\",\n 20\n ]\n }\n }\n ]\n }\n },\n {\n \"name\": \"marketUser\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"id\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"t0Pending\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"t1Pending\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"t0Unlocked\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"t1Unlocked\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"dexUser\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"feeTier\",\n \"type\": {\n \"defined\": \"UserFeeTier\"\n }\n },\n {\n \"name\": \"stakedAmount\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"eventQueue\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"len\",\n \"type\": \"u32\"\n },\n {\n \"name\": \"padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 4\n ]\n }\n },\n {\n \"name\": \"items\",\n \"type\": {\n \"array\": [\n {\n \"defined\": \"EventItem\"\n },\n 128\n ]\n }\n }\n ]\n }\n }\n ],\n \"types\": [\n {\n \"name\": \"FeeRates\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"maker\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"taker\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"MarketConfig\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"t0LotSize\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"t1LotSize\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"feeRates\",\n \"type\": {\n \"defined\": \"FeeRates\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"MarketInput\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"t0LotSize\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"t1LotSize\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"feeTier\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"OrderInput\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"side\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"limitPrice\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"amount\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"clientOrderId\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"orderType\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"limitTotal\",\n \"type\": {\n \"option\": \"u64\"\n }\n },\n {\n \"name\": \"minAmountOut\",\n \"type\": {\n \"option\": \"u64\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"OrderBook\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"bids\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"asks\",\n \"type\": \"publicKey\"\n },\n {\n \"name\": \"nextSeqNum\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"CancelOrderInput\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"side\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"orderId\",\n \"type\": \"u128\"\n }\n ]\n }\n },\n {\n \"name\": \"EventItem\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"flag\",\n \"type\": \"u8\"\n },\n {\n \"name\": \"feeTier\",\n \"type\": {\n \"defined\": \"UserFeeTier\"\n }\n },\n {\n \"name\": \"padding\",\n \"type\": {\n \"array\": [\n \"u8\",\n 6\n ]\n }\n },\n {\n \"name\": \"key\",\n \"type\": \"u128\"\n },\n {\n \"name\": \"owner\",\n \"type\": {\n \"array\": [\n \"u64\",\n 4\n ]\n }\n },\n {\n \"name\": \"quantity\",\n \"type\": \"u64\"\n },\n {\n \"name\": \"total\",\n \"type\": \"u64\"\n }\n ]\n }\n },\n {\n \"name\": \"DexConfigInput\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"crankPenalty\",\n \"type\": \"u16\"\n }\n ]\n }\n },\n {\n \"name\": \"DexUserFeeTierInput\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"feeTier\",\n \"type\": \"u8\"\n }\n ]\n }\n },\n {\n \"name\": \"ConsumeEventsInput\",\n \"type\": {\n \"kind\": \"struct\",\n \"fields\": [\n {\n \"name\": \"limit\",\n \"type\": {\n \"option\": \"u32\"\n }\n }\n ]\n }\n },\n {\n \"name\": \"Side\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Bid\"\n },\n {\n \"name\": \"Ask\"\n }\n ]\n }\n },\n {\n \"name\": \"OrderType\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Default\"\n },\n {\n \"name\": \"ImmediateOrCancel\"\n },\n {\n \"name\": \"PostOnly\"\n }\n ]\n }\n },\n {\n \"name\": \"MarketFeeTier\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Default\"\n },\n {\n \"name\": \"None\"\n },\n {\n \"name\": \"Stable\"\n },\n {\n \"name\": \"Classic\"\n }\n ]\n }\n },\n {\n \"name\": \"UserFeeTier\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Default\"\n },\n {\n \"name\": \"None\"\n },\n {\n \"name\": \"Partner\"\n },\n {\n \"name\": \"Referrer\"\n }\n ]\n }\n },\n {\n \"name\": \"FeeRole\",\n \"type\": {\n \"kind\": \"enum\",\n \"variants\": [\n {\n \"name\": \"Taker\"\n },\n {\n \"name\": \"Maker\"\n },\n {\n \"name\": \"Both\"\n }\n ]\n }\n }\n ],\n \"errors\": [\n {\n \"code\": 6000,\n \"name\": \"Unknown\",\n \"msg\": \"Unknown error\"\n },\n {\n \"code\": 6001,\n \"name\": \"InsufficientLiquidityAdded\",\n \"msg\": \"Insufficient liquidity added\"\n },\n {\n \"code\": 6002,\n \"name\": \"InsufficientLiquidityRemoved\",\n \"msg\": \"Insufficient liquidity removed\"\n },\n {\n \"code\": 6003,\n \"name\": \"SlabTooSmall\",\n \"msg\": \"Slab too small\"\n },\n {\n \"code\": 6004,\n \"name\": \"SlabOutOfSpace\",\n \"msg\": \"Slab out of space\"\n },\n {\n \"code\": 6005,\n \"name\": \"InvalidQuantity\",\n \"msg\": \"Invalid quantity\"\n },\n {\n \"code\": 6006,\n \"name\": \"InvalidSide\",\n \"msg\": \"Invalid side\"\n },\n {\n \"code\": 6007,\n \"name\": \"OrderNotFound\",\n \"msg\": \"Order not found\"\n },\n {\n \"code\": 6008,\n \"name\": \"InvalidLotSize\",\n \"msg\": \"Invalid lot size\"\n },\n {\n \"code\": 6009,\n \"name\": \"InvalidFarmStartTime\",\n \"msg\": \"Invalid farm start time\"\n },\n {\n \"code\": 6010,\n \"name\": \"InvalidFarmEndTime\",\n \"msg\": \"Invalid farm end time\"\n },\n {\n \"code\": 6011,\n \"name\": \"InvalidFarmDuration\",\n \"msg\": \"Invalid farm duration\"\n },\n {\n \"code\": 6012,\n \"name\": \"InvalidAmount\",\n \"msg\": \"Invalid amount\"\n },\n {\n \"code\": 6013,\n \"name\": \"UnauthorizedOperation\",\n \"msg\": \"Unauthorize operation\"\n },\n {\n \"code\": 6014,\n \"name\": \"OrderbookFull\",\n \"msg\": \"Order book is full, please submit a better offer\"\n },\n {\n \"code\": 6015,\n \"name\": \"BootedOrdersNotFound\",\n \"msg\": \"Order outdated: booted orders not found\"\n },\n {\n \"code\": 6016,\n \"name\": \"InvalidFeeTier\",\n \"msg\": \"Invalid fee tier\"\n },\n {\n \"code\": 6017,\n \"name\": \"InvalidOrderType\",\n \"msg\": \"Invalid order type\"\n },\n {\n \"code\": 6018,\n \"name\": \"PostOnlyOrderCancelled\",\n \"msg\": \"Order cancelled due to Post Only condition\"\n },\n {\n \"code\": 6019,\n \"name\": \"SlippageToleranceExceeded\",\n \"msg\": \"Slippage tolerance exceeded\"\n },\n {\n \"code\": 6020,\n \"name\": \"InvalidTradingPair\",\n \"msg\": \"Invalid trading pair\"\n },\n {\n \"code\": 6021,\n \"name\": \"InvalidInput\",\n \"msg\": \"Invalid input\"\n },\n {\n \"code\": 6022,\n \"name\": \"OrderBookTooLarge\",\n \"msg\": \"Order book too large\"\n },\n {\n \"code\": 6023,\n \"name\": \"InvalidDexUser\",\n \"msg\": \"Invalid dex user\"\n },\n {\n \"code\": 6024,\n \"name\": \"InvalidMarketUser\",\n \"msg\": \"Invalid market user\"\n },\n {\n \"code\": 6025,\n \"name\": \"InvalidRebateAccount\",\n \"msg\": \"Invalid rebate account\"\n }\n ]\n};\n","import { OrderBook } from \"@dradex/idl\";\nimport { BN } from \"@project-serum/anchor\";\nimport Decimal from \"decimal.js\";\nimport JSBI from \"jsbi\";\nimport { FEE_BPS_BASE, Side } from \"./core\";\nexport var SwapMode;\n(function (SwapMode) {\n SwapMode[\"ExactIn\"] = \"ExactIn\";\n SwapMode[\"ExactOut\"] = \"ExactOut\";\n})(SwapMode || (SwapMode = {}));\nexport class ParsedOrder {\n}\nexport class QuoteCalculator {\n constructor(market, orderBook, tokens) {\n this.market = market;\n this.orderBook = orderBook;\n this.tokens = tokens;\n this.parseOrder = (order) => {\n return {\n quantity: this.toUiAmount(order.quantity, this.tokens[0]),\n price: this.toUiPrice(OrderBook.getPriceFromKey(order.key)),\n };\n };\n this.formatting = this.getMarketFormatting(this.market.config.t0LotSize.toNumber(), this.market.config.t1LotSize.toNumber(), this.tokens[0].decimals, this.tokens[1].decimals);\n this.pool = this.market.pool.map((poolAmount, i) => this.toUiAmount(poolAmount, this.tokens[i]));\n this.orders = {\n bids: orderBook.bids.map(this.parseOrder),\n asks: orderBook.asks.map(this.parseOrder),\n };\n this.feeRates = {\n maker: this.market.config.feeRates.maker.toNumber(),\n taker: this.market.config.feeRates.taker.toNumber(),\n };\n this.basePrices = [this.evaluateOrder(Side.BID, 0).unitPrice, this.evaluateOrder(Side.ASK, 0).unitPrice];\n }\n getMarketFormatting(lot0, lot1, decimals0, decimals1) {\n const lotSize = 10 ** -decimals0 * lot0;\n const quoteSize = 10 ** -decimals1 * lot1;\n const tickSize = lot1 / (lotSize * 10 ** decimals1);\n const sizeDecimals = Math.max(Math.floor(-Math.log10(lotSize)), 0);\n const priceDecimals = Math.max(Math.floor(-Math.log10(tickSize)), 0);\n const quoteDecimals = priceDecimals;\n return {\n lotSize,\n tickSize,\n quoteSize,\n sizeDecimals,\n priceDecimals,\n quoteDecimals,\n };\n }\n toUiAmount(amount, token) {\n var _a;\n const power = new Decimal(10).toPower((_a = token.decimals) !== null && _a !== void 0 ? _a : 9);\n return new Decimal(amount.toString()).div(power).toNumber();\n }\n toProgramAmount(amount, token) {\n var _a;\n const power = new Decimal(10).toPower((_a = token.decimals) !== null && _a !== void 0 ? _a : 9);\n return JSBI.BigInt(new Decimal(amount).mul(power).floor().toString());\n }\n toUiPrice(lotPrice) {\n const p0 = new Decimal(10).pow(this.tokens[0].decimals);\n const p1 = new Decimal(10).pow(this.tokens[1].decimals);\n const lot0 = this.market.config.t0LotSize.toNumber();\n const lot1 = this.market.config.t1LotSize.toNumber();\n return new Decimal(lotPrice.toString()).div(p1.div(lot1)).mul(p0.div(lot0)).toNumber();\n }\n isBetterOffer(side, a, b) {\n if (!a)\n return false;\n if (!b)\n return true;\n return !side ? a <= b : a >= b;\n }\n getBetterOffer(side, a, b) {\n if (!a)\n return b;\n if (!b)\n return a;\n return !side ? Math.min(a, b) : Math.max(a, b);\n }\n evaluateOrder(side, amount, limitPrice, limitTotal) {\n let pool = this.pool;\n const offers = !side ? this.orders.asks : this.orders.bids;\n const { lotSize, tickSize } = this.formatting;\n const hasVolume = Number(amount) > 0 || Number(limitTotal) > 0;\n amount = amount !== null && amount !== void 0 ? amount : Infinity;\n limitTotal = limitTotal !== null && limitTotal !== void 0 ? limitTotal : Infinity;\n limitPrice = limitPrice !== null && limitPrice !== void 0 ? limitPrice : 0;\n let remaining = amount;\n if (!remaining) {\n remaining = lotSize;\n }\n let remainingTotal = limitTotal;\n if (!remainingTotal) {\n remainingTotal = tickSize;\n }\n let offerIndex = 0;\n const totals = {\n filled: 0,\n cost: 0,\n lpFilled: 0,\n lpCost: 0,\n orderFilled: 0,\n orderCost: 0,\n };\n let lpPrice = pool[0] ? pool[1] / pool[0] : 0;\n const minimumLiquidityX = this.toUiAmount(new BN(100), this.tokens[0]);\n const minimumLiquidityY = this.toUiAmount(new BN(100), this.tokens[1]);\n const hasLp = pool[0] > minimumLiquidityX && pool[1] > minimumLiquidityY;\n let computeSteps = 0;\n let lastMatchPrice = 0;\n while (remaining > 0 && remainingTotal > 0) {\n const offer = offers[offerIndex++];\n const offerPrice = offer ? Number(offer.price) : 0;\n if (hasLp) {\n const x0 = Math.max(pool[0] - minimumLiquidityX, 0);\n const lpPrice = pool[1] / pool[0];\n const targetPrice = this.getBetterOffer(side, offerPrice, limitPrice);\n if (!targetPrice || this.isBetterOffer(side, lpPrice, targetPrice)) {\n const c = new Decimal(pool[0]).mul(pool[1]);\n const m = targetPrice ? Math.sqrt(c.div(targetPrice).toNumber()) : 0;\n const maxX = Math.min(c.div(minimumLiquidityY).toNumber(), x0);\n let matchSize = targetPrice ? (side == 0 ? x0 - m : Math.min(m - x0, maxX)) : Infinity;\n if (matchSize > 0) {\n let maxFillable = Infinity;\n if (remainingTotal != Infinity) {\n const y = side == 0 ? pool[1] + remainingTotal : Math.max(pool[1] - remainingTotal, minimumLiquidityY);\n const x = Math.max(c.div(y).toNumber(), minimumLiquidityX);\n maxFillable = Math.abs(x - x0);\n }\n const filled = Math.min(matchSize, remaining, maxFillable, maxX);\n const x = side == 0 ? pool[0] - filled : pool[0] + filled;\n const y = c.div(x).toNumber();\n const cost = Math.min(Math.abs(pool[1] - y), remainingTotal);\n pool = [x, y];\n remaining -= filled;\n totals.filled += filled;\n totals.cost += cost;\n totals.lpFilled += filled;\n totals.lpCost += cost;\n if (remainingTotal != Infinity) {\n remainingTotal -= cost;\n }\n if (lastMatchPrice != lpPrice) {\n computeSteps++;\n lastMatchPrice = cost / filled;\n }\n }\n }\n }\n if (remaining > 0 &&\n remainingTotal > 0 &&\n offer &&\n (limitPrice ? this.isBetterOffer(side, offerPrice, limitPrice) : true)) {\n const filled = Math.min(Number(offer.quantity), remaining, remainingTotal != Infinity ? remainingTotal / offerPrice : Infinity);\n const cost = filled * offerPrice;\n totals.filled += filled;\n totals.cost += cost;\n totals.orderFilled += filled;\n totals.orderCost += cost;\n if (remainingTotal != Infinity) {\n remainingTotal -= cost;\n }\n remaining -= filled;\n computeSteps++;\n lastMatchPrice = offerPrice;\n }\n else {\n break;\n }\n }\n if (limitPrice) {\n remaining = Math.min(remaining, remainingTotal / limitPrice);\n }\n return {\n ...totals,\n lpPrice,\n unitPrice: totals.filled ? totals.cost / totals.filled : 0,\n lpUnitPrice: totals.lpFilled ? totals.lpCost / totals.lpFilled : 0,\n orderUnitPrice: totals.orderFilled ? totals.orderCost / totals.orderFilled : 0,\n quantity: hasVolume ? totals.filled + remaining : 0,\n remaining: limitPrice ? remaining : 0,\n remainingTotal: limitPrice ? limitPrice * remaining : 0,\n computeSteps,\n output: this.applyFees(totals, side),\n };\n }\n applyFees(totals, side) {\n const { maker, taker } = this.feeRates;\n const [lpAmount, orderAmount] = !side ? [totals.lpFilled, totals.orderFilled] : [totals.lpCost, totals.orderCost];\n const feeAmount = (lpAmount * (maker + taker) + orderAmount * taker) / FEE_BPS_BASE;\n const grossAmount = lpAmount + orderAmount;\n return {\n grossAmount,\n netAmount: grossAmount - feeAmount,\n feeAmount,\n feePct: (feeAmount / grossAmount) * 100,\n };\n }\n checkMinimumAmounts(side, inAmount, outAmount) {\n const lotSize = this.toProgramAmount(this.formatting.lotSize, this.tokens[0]);\n return !side\n ? {\n outAmount: JSBI.greaterThanOrEqual(outAmount, lotSize) ? outAmount : JSBI.BigInt(0),\n minOutAmount: lotSize,\n }\n : {\n outAmount: JSBI.greaterThanOrEqual(inAmount, lotSize) ? outAmount : JSBI.BigInt(0),\n minInAmount: lotSize,\n };\n }\n getQuote(params) {\n const side = params.destinationMint.equals(this.market.t0) ? Side.BID : Side.ASK;\n const inMode = params.swapMode == SwapMode.ExactIn;\n const inputSide = inMode ? side : 1 - side;\n const inputToken = this.tokens[1 - inputSide];\n const amountUi = this.toUiAmount(new BN(params.amount.toString()), inputToken);\n const outToken = this.tokens[side];\n const inToken = this.tokens[1 - side];\n const useTotal = inMode ? !side : side;\n const result = this.evaluateOrder(side, !useTotal ? amountUi : undefined, 0, useTotal ? amountUi : undefined);\n const basePrice = this.basePrices[side];\n const { feeAmount: feeAmountUi, feePct, grossAmount: grossAmountUi } = result.output;\n const feeAmount = this.toProgramAmount(feeAmountUi, outToken);\n const netOutAmount = JSBI.subtract(this.toProgramAmount(grossAmountUi, outToken), feeAmount);\n const resultInAmount = this.toProgramAmount(!side ? result.cost : result.filled, inToken);\n const [inAmount, outAmount] = inMode ? [params.amount, netOutAmount] : [resultInAmount, netOutAmount];\n return {\n feeMint: outToken.address.toString(),\n feeAmount,\n feePct,\n inAmount,\n notEnoughLiquidity: result.remaining > 0 && result.remainingTotal > 0,\n priceImpactPct: (Math.abs(basePrice - result.unitPrice) / result.unitPrice) * 100,\n ...this.checkMinimumAmounts(side, inAmount, outAmount),\n };\n }\n}\n","var le=Object.defineProperty,ce=Object.defineProperties;var de=Object.getOwnPropertyDescriptors;var W=Object.getOwnPropertySymbols;var pe=Object.prototype.hasOwnProperty,ye=Object.prototype.propertyIsEnumerable;var j=(y,e,t)=>e in y?le(y,e,{enumerable:!0,configurable:!0,writable:!0,value:t}):y[e]=t,J=(y,e)=>{for(var t in e||(e={}))pe.call(e,t)&&j(y,t,e[t]);if(W)for(var t of W(e))ye.call(e,t)&&j(y,t,e[t]);return y},$=(y,e)=>ce(y,de(e));import G from\"bn.js\";import B from\"decimal.js\";import{PublicKey as fe}from\"@solana/web3.js\";import I from\"bn.js\";var b=new I(0),T=new I(1),N=new I(-1),_=new I(1).shln(64),L=new I(1).shln(128),Q=_.sub(T),O=64,ee=L.subn(1),F=-307200,C=-F,v=new I(\"3939943522091\"),R=new I(\"86367321006760116002434269\"),te=-307200,ne=306600,ie=14,ae=\"59543866431248\",re=\"184467440737095516\",ue=\"15793534762490258745\",V=new I(10).pow(new I(6));var Ie=new fe(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\");import l from\"bn.js\";import E from\"decimal.js\";import{PublicKey as ge}from\"@solana/web3.js\";function ke(y){let e=new ArrayBuffer(4);return new DataView(e).setInt32(0,y,!1),new Uint8Array(e)}var Se=Buffer.from(\"tick_array\",\"utf8\");function Ae(y,e){let[t,n]=ge.findProgramAddressSync(y,e);return{publicKey:t,nonce:n}}function h(y,e,t){let{publicKey:n,nonce:a}=Ae([Se,e.toBuffer(),ke(t)],y);return{publicKey:n,nonce:a}}import se from\"bn.js\";var M=60,we=1024,k=class{static getTickArrayStartIndexByTick(e,t){let n=e/(M*t);return e<0&&e%(M*t)!=0?n=Math.ceil(n)-1:n=Math.floor(n),n*(t*M)}static getTickArrayOffsetInBitmapByTick(e,t){let n=t*M,a=Math.floor(e/n)+512;return Math.abs(a)}static checkTickArrayIsInitialized(e,t,n){let a=n*M,u=Math.floor(t/a)+512,i=Math.abs(u);return{isInitialized:e.testn(i),startIndex:(i-512)*a}}static getNextTickArrayStartIndex(e,t,n){return n?e-t*M:e+t*M}static mergeTickArrayBitmap(e){return e[0].add(e[1].shln(64)).add(e[2].shln(128)).add(e[3].shln(192)).add(e[4].shln(256)).add(e[5].shln(320)).add(e[6].shln(384)).add(e[7].shln(448)).add(e[8].shln(512)).add(e[9].shln(576)).add(e[10].shln(640)).add(e[11].shln(704)).add(e[12].shln(768)).add(e[13].shln(832)).add(e[14].shln(896)).add(e[15].shln(960))}static getInitializedTickArrayInRange(e,t,n,a){if(n%(t*M)!=0)throw new Error(\"Invild tickArrayStartIndex\");let u=Math.floor(n/(t*M))+512;return[...k.searchLowBitFromStart(e,u-1,0,a,t),...k.searchHightBitFromStart(e,u,we,a,t)]}static searchLowBitFromStart(e,t,n,a,u){let i=0,r=[];for(let s=t;s>=n;s--){if(e.shrn(s).and(new se(1)).eqn(1)){let m=(s-512)*(u*M);r.push(m),i++}if(i>=a)break}return r}static searchHightBitFromStart(e,t,n,a,u){let i=0,r=[];for(let s=t;s=a)break}return r}};var oe=15,D=class{static nextInitializedTick(e,t,n,a,u,i){let{initializedTick:r,tickArrayAddress:s,tickArrayStartTickIndex:m}=this.nextInitializedTickInOneArray(e,t,n,a,u,i);for(;r==null||r.liquidityGross.lten(0);){if(m=k.getNextTickArrayStartIndex(m,u,i),mne)throw new Error(\"No enough initialized tickArray\");let p=n[m];if(p===void 0)continue;let{nextTick:g,tickArrayAddress:c,tickArrayStartTickIndex:A}=this.firstInitializedTickInOneArray(e,t,p,i);[r,s,m]=[g,c,A]}if(r==null)throw new Error(\"No invaild tickArray cache\");return{nextTick:r,tickArrayAddress:s,tickArrayStartTickIndex:m}}static firstInitializedTickInOneArray(e,t,n,a){let u;if(a){let r=M-1;for(;r>=0;){let s=n.ticks[r];if(s.liquidityGross.gtn(0)){u=s;break}r=r-1}}else{let r=0;for(;r=0;){let c=m.ticks[s];if(c.liquidityGross.gtn(0)){p=c;break}s=s-1}else for(s=s+1;sC)throw new Error(\"tick must be in MIN_TICK and MAX_TICK\");let t=e<0?e*-1:e,n=(t&1)!=0?new l(\"18445821805675395072\"):new l(\"18446744073709551616\");return(t&2)!=0&&(n=S(n,new l(\"18444899583751176192\"))),(t&4)!=0&&(n=S(n,new l(\"18443055278223355904\"))),(t&8)!=0&&(n=S(n,new l(\"18439367220385607680\"))),(t&16)!=0&&(n=S(n,new l(\"18431993317065453568\"))),(t&32)!=0&&(n=S(n,new l(\"18417254355718170624\"))),(t&64)!=0&&(n=S(n,new l(\"18387811781193609216\"))),(t&128)!=0&&(n=S(n,new l(\"18329067761203558400\"))),(t&256)!=0&&(n=S(n,new l(\"18212142134806163456\"))),(t&512)!=0&&(n=S(n,new l(\"17980523815641700352\"))),(t&1024)!=0&&(n=S(n,new l(\"17526086738831433728\"))),(t&2048)!=0&&(n=S(n,new l(\"16651378430235570176\"))),(t&4096)!=0&&(n=S(n,new l(\"15030750278694412288\"))),(t&8192)!=0&&(n=S(n,new l(\"12247334978884435968\"))),(t&16384)!=0&&(n=S(n,new l(\"8131365268886854656\"))),(t&32768)!=0&&(n=S(n,new l(\"3584323654725218816\"))),(t&65536)!=0&&(n=S(n,new l(\"696457651848324352\"))),(t&131072)!=0&&(n=S(n,new l(\"26294789957507116\"))),(t&262144)!=0&&(n=S(n,new l(\"37481735321082\"))),e>0&&(n=ee.div(n)),n}static getTickFromPrice(e,t,n){return x.getTickFromSqrtPriceX64(x.priceToSqrtPriceX64(e,t,n))}static getTickFromSqrtPriceX64(e){if(e.gt(R)||e.lt(v))throw new Error(\"Provided sqrtPrice is not within the supported sqrtPrice range.\");let t=e.bitLength()-1,n=new l(t-64),a=be(n,32,128),u=new l(\"8000000000000000\",\"hex\"),i=0,r=new l(0),s=t>=64?e.shrn(t-63):e.shln(63-t);for(;u.gt(new l(0))&&iF;){if(P>10)throw Error(\"liquidity limit\");let d={};d.sqrtPriceStartX64=o.sqrtPriceX64;let{nextTick:U,tickArrayAddress:Z,tickArrayStartTickIndex:H}=D.nextInitializedTick(e,t,n,o.tick,s,a);d.tickNext=U.tick,d.initialized=U.liquidityGross.gtn(0),g!==H&&Z&&(o.accounts.push(Z),g=H),d.tickNextC&&(d.tickNext=C),d.sqrtPriceNextX64=x.getSqrtPriceX64FromTick(d.tickNext);let X;if(a&&d.sqrtPriceNextX64.lt(c)||!a&&d.sqrtPriceNextX64.gt(c)?X=c:X=d.sqrtPriceNextX64,[o.sqrtPriceX64,d.amountIn,d.amountOut,d.feeAmount]=K.swapStepCompute(o.sqrtPriceX64,X,o.liquidity,o.amountSpecifiedRemaining,u),o.feeAmount=o.feeAmount.add(d.feeAmount),A?(o.amountSpecifiedRemaining=o.amountSpecifiedRemaining.sub(d.amountIn.add(d.feeAmount)),o.amountCalculated=o.amountCalculated.sub(d.amountOut)):(o.amountSpecifiedRemaining=o.amountSpecifiedRemaining.add(d.amountOut),o.amountCalculated=o.amountCalculated.add(d.amountIn.add(d.feeAmount))),o.sqrtPriceX64.eq(d.sqrtPriceNextX64)){if(d.initialized){let z=U.liquidityNet;a&&(z=z.mul(N)),o.liquidity=f.addDelta(o.liquidity,z)}o.tick=a?d.tickNext-1:d.tickNext}else o.sqrtPriceX64!=d.sqrtPriceStartX64&&(o.tick=x.getTickFromSqrtPriceX64(o.sqrtPriceX64));++P}return{amountCalculated:o.amountCalculated,feeAmount:o.feeAmount,sqrtPriceX64:o.sqrtPriceX64,liquidity:o.liquidity,tickCurrent:o.tick,accounts:o.accounts}}static swapStepCompute(e,t,n,a,u){let i={sqrtPriceX64Next:new l(0),amountIn:new l(0),amountOut:new l(0),feeAmount:new l(0)},r=e.gte(t),s=a.gte(b);if(s){let p=w.mulDivFloor(a,V.sub(new l(u.toString())),V);i.amountIn=r?f.getTokenAmountAFromLiquidity(t,e,n,!0):f.getTokenAmountBFromLiquidity(e,t,n,!0),p.gte(i.amountIn)?i.sqrtPriceX64Next=t:i.sqrtPriceX64Next=x.getNextSqrtPriceX64FromInput(e,n,p,r)}else i.amountOut=r?f.getTokenAmountBFromLiquidity(t,e,n,!1):f.getTokenAmountAFromLiquidity(e,t,n,!1),a.mul(N).gte(i.amountOut)?i.sqrtPriceX64Next=t:i.sqrtPriceX64Next=x.getNextSqrtPriceX64FromOutput(e,n,a.mul(N),r);let m=t.eq(i.sqrtPriceX64Next);return r?(m&&s||(i.amountIn=f.getTokenAmountAFromLiquidity(i.sqrtPriceX64Next,e,n,!0)),m&&!s||(i.amountOut=f.getTokenAmountBFromLiquidity(i.sqrtPriceX64Next,e,n,!1))):(i.amountIn=m&&s?i.amountIn:f.getTokenAmountBFromLiquidity(e,i.sqrtPriceX64Next,n,!0),i.amountOut=m&&!s?i.amountOut:f.getTokenAmountAFromLiquidity(e,i.sqrtPriceX64Next,n,!1)),!s&&i.amountOut.gt(a.mul(N))&&(i.amountOut=a.mul(N)),s&&!i.sqrtPriceX64Next.eq(t)?i.feeAmount=a.sub(i.amountIn):i.feeAmount=w.mulDivCeil(i.amountIn,new l(u),V.sub(new l(u))),[i.sqrtPriceX64Next,i.amountIn,i.amountOut,i.feeAmount]}};var q=class{static getOutputAmountAndRemainAccounts(e,t,n,a,u){let i=n.equals(e.mintA.mint),r=[],{isExist:s,startIndex:m,nextAccountMeta:p}=this.getFirstInitializedTickArray(e,i);if(!s||m===void 0||!p)throw new Error(\"Invalid tick array\");r.push(p);let{amountCalculated:g,accounts:c,sqrtPriceX64:A,feeAmount:o}=K.swapCompute(e.programId,e.id,t,i,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,a,m,u);return r.push(...c),{expectedAmountOut:g.mul(N),remainingAccounts:r,executionPrice:A,feeAmount:o}}static getInputAmountAndRemainAccounts(e,t,n,a,u){let i=n.equals(e.mintB.mint),r=[],{isExist:s,startIndex:m,nextAccountMeta:p}=this.getFirstInitializedTickArray(e,i);if(!s||m===void 0||!p)throw new Error(\"Invalid tick array\");r.push(p);let{amountCalculated:g,accounts:c,sqrtPriceX64:A,feeAmount:o}=K.swapCompute(e.programId,e.id,t,i,e.ammConfig.tradeFeeRate,e.liquidity,e.tickCurrent,e.tickSpacing,e.sqrtPriceX64,a.mul(N),m,u);return r.push(...c),{expectedAmountIn:g,remainingAccounts:r,executionPrice:A,feeAmount:o}}static getFirstInitializedTickArray(e,t){let n=k.mergeTickArrayBitmap(e.tickArrayBitmap),{isInitialized:a,startIndex:u}=k.checkTickArrayIsInitialized(n,e.tickCurrent,e.tickSpacing);if(a){let{publicKey:s}=h(e.programId,e.id,u);return{isExist:!0,startIndex:u,nextAccountMeta:s}}let{isExist:i,nextStartIndex:r}=this.nextInitializedTickArrayStartIndex(e,t);if(i){let{publicKey:s}=h(e.programId,e.id,r);return{isExist:!0,startIndex:r,nextAccountMeta:s}}return{isExist:!1,nextAccountMeta:void 0,startIndex:void 0}}static nextInitializedTickArrayStartIndex(e,t){let n=k.mergeTickArrayBitmap(e.tickArrayBitmap),a=k.getTickArrayOffsetInBitmapByTick(e.tickCurrent,e.tickSpacing),u=t?k.searchLowBitFromStart(n,a-1,0,1,e.tickSpacing):k.searchHightBitFromStart(n,a,1024,1,e.tickSpacing);return u.length>0?{isExist:!0,nextStartIndex:u[0]}:{isExist:!1,nextStartIndex:0}}};var me=class{static computeAmountOut({poolInfo:e,tickArrayCache:t,baseMint:n,amountIn:a,slippage:u,priceLimit:i=new B(0)}){let r;i.equals(new B(0))?r=n.equals(e.mintA.mint)?v.add(T):R.sub(T):r=x.priceToSqrtPriceX64(i,e.mintA.decimals,e.mintB.decimals);let{expectedAmountOut:s,remainingAccounts:m,executionPrice:p,feeAmount:g}=q.getOutputAmountAndRemainAccounts(e,t,n,a,r),c=x.sqrtPriceX64ToPrice(p,e.mintA.decimals,e.mintB.decimals),A=n.equals(e.mintA.mint)?c:new B(1).div(c),o=s.mul(new G(Math.floor((1-u)*1e10))).div(new G(1e10)),P=e.mintA.mint.equals(n)?e.currentPrice:new B(1).div(e.currentPrice),d=Math.abs(parseFloat(A.toFixed())-parseFloat(P.toFixed()))/parseFloat(P.toFixed());return{amountOut:s,minAmountOut:o,currentPrice:e.currentPrice,executionPrice:A,priceImpact:d,fee:g,remainingAccounts:m}}static computeAmountIn({poolInfo:e,tickArrayCache:t,baseMint:n,amountOut:a,slippage:u,priceLimit:i=new B(0)}){let r;i.equals(new B(0))?r=n.equals(e.mintB.mint)?v.add(T):R.sub(T):r=x.priceToSqrtPriceX64(i,e.mintA.decimals,e.mintB.decimals);let{expectedAmountIn:s,remainingAccounts:m,executionPrice:p,feeAmount:g}=q.getInputAmountAndRemainAccounts(e,t,n,a,r),c=x.sqrtPriceX64ToPrice(p,e.mintA.decimals,e.mintB.decimals),A=n.equals(e.mintA.mint)?c:new B(1).div(c),o=s.mul(new G(Math.floor((1+u)*1e10))).div(new G(1e10)),P=e.mintA.mint.equals(n)?e.currentPrice:new B(1).div(e.currentPrice),d=Math.abs(parseFloat(A.toFixed())-parseFloat(P.toFixed()))/parseFloat(P.toFixed());return{amountIn:s,maxAmountIn:o,currentPrice:e.currentPrice,executionPrice:A,priceImpact:d,fee:g,remainingAccounts:m}}static getTickArrayPks(e,t,n){let a=k.mergeTickArrayBitmap(t.tickArrayBitmap),u=k.getTickArrayStartIndexByTick(t.tickCurrent,t.tickSpacing),i=[],r=k.getInitializedTickArrayInRange(a,t.tickSpacing,u,Math.floor(oe/2));for(let s of r){let{publicKey:m}=h(n,e,s);i.push(m)}return i}static formatPoolInfo({address:e,poolState:t,ammConfig:n,programId:a}){return{id:e,mintA:{mint:t.tokenMint0,vault:t.tokenVault0,decimals:t.mintDecimals0},mintB:{mint:t.tokenMint1,vault:t.tokenVault1,decimals:t.mintDecimals1},observationId:t.observationKey,ammConfig:$(J({},n),{id:t.ammConfig}),programId:a,tickSpacing:t.tickSpacing,liquidity:t.liquidity,sqrtPriceX64:t.sqrtPriceX64,currentPrice:x.sqrtPriceX64ToPrice(t.sqrtPriceX64,t.mintDecimals0,t.mintDecimals1),tickCurrent:t.tickCurrent,observationIndex:t.observationIndex,observationUpdateDuration:t.observationUpdateDuration,tickArrayBitmap:t.tickArrayBitmap}}};var rt={version:\"0.1.0\",name:\"amm_v3\",instructions:[{name:\"createAmmConfig\",accounts:[{name:\"owner\",isMut:!0,isSigner:!0},{name:\"ammConfig\",isMut:!0,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1}],args:[{name:\"index\",type:\"u16\"},{name:\"tickSpacing\",type:\"u16\"},{name:\"tradeFeeRate\",type:\"u32\"},{name:\"protocolFeeRate\",type:\"u32\"},{name:\"fundFeeRate\",type:\"u32\"}]},{name:\"updateAmmConfig\",accounts:[{name:\"owner\",isMut:!1,isSigner:!0},{name:\"ammConfig\",isMut:!0,isSigner:!1}],args:[{name:\"param\",type:\"u8\"},{name:\"value\",type:\"u32\"}]},{name:\"createPool\",accounts:[{name:\"poolCreator\",isMut:!0,isSigner:!0},{name:\"ammConfig\",isMut:!1,isSigner:!1},{name:\"poolState\",isMut:!0,isSigner:!1},{name:\"tokenMint0\",isMut:!1,isSigner:!1},{name:\"tokenMint1\",isMut:!1,isSigner:!1},{name:\"tokenVault0\",isMut:!0,isSigner:!1},{name:\"tokenVault1\",isMut:!0,isSigner:!1},{name:\"observationState\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"sqrtPriceX64\",type:\"u128\"}]},{name:\"resetSqrtPrice\",accounts:[{name:\"owner\",isMut:!1,isSigner:!0},{name:\"poolState\",isMut:!0,isSigner:!1},{name:\"tokenVault0\",isMut:!0,isSigner:!1},{name:\"tokenVault1\",isMut:!0,isSigner:!1},{name:\"observationState\",isMut:!0,isSigner:!1},{name:\"recipientTokenAccount0\",isMut:!0,isSigner:!1},{name:\"recipientTokenAccount1\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[{name:\"sqrtPriceX64\",type:\"u128\"}]},{name:\"initializeReward\",accounts:[{name:\"rewardFunder\",isMut:!0,isSigner:!0},{name:\"funderTokenAccount\",isMut:!0,isSigner:!1},{name:\"ammConfig\",isMut:!1,isSigner:!1},{name:\"poolState\",isMut:!0,isSigner:!1},{name:\"rewardTokenMint\",isMut:!1,isSigner:!1},{name:\"rewardTokenVault\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"param\",type:{defined:\"InitializeRewardParam\"}}]},{name:\"collectRemainingRewards\",accounts:[{name:\"rewardFunder\",isMut:!0,isSigner:!0},{name:\"funderTokenAccount\",isMut:!0,isSigner:!1},{name:\"poolState\",isMut:!0,isSigner:!1},{name:\"rewardTokenVault\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[{name:\"rewardIndex\",type:\"u8\"}]},{name:\"updateRewardInfos\",accounts:[{name:\"poolState\",isMut:!0,isSigner:!1}],args:[]},{name:\"setRewardParams\",accounts:[{name:\"authority\",isMut:!0,isSigner:!0},{name:\"ammConfig\",isMut:!0,isSigner:!1},{name:\"poolState\",isMut:!0,isSigner:!1}],args:[{name:\"rewardIndex\",type:\"u8\"},{name:\"emissionsPerSecondX64\",type:\"u128\"},{name:\"openTime\",type:\"u64\"},{name:\"endTime\",type:\"u64\"}]},{name:\"collectProtocolFee\",accounts:[{name:\"owner\",isMut:!1,isSigner:!0},{name:\"poolState\",isMut:!0,isSigner:!1},{name:\"ammConfig\",isMut:!1,isSigner:!1},{name:\"tokenVault0\",isMut:!0,isSigner:!1},{name:\"tokenVault1\",isMut:!0,isSigner:!1},{name:\"recipientTokenAccount0\",isMut:!0,isSigner:!1},{name:\"recipientTokenAccount1\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[{name:\"amount0Requested\",type:\"u64\"},{name:\"amount1Requested\",type:\"u64\"}]},{name:\"collectFundFee\",accounts:[{name:\"owner\",isMut:!1,isSigner:!0},{name:\"poolState\",isMut:!0,isSigner:!1},{name:\"ammConfig\",isMut:!1,isSigner:!1},{name:\"tokenVault0\",isMut:!0,isSigner:!1},{name:\"tokenVault1\",isMut:!0,isSigner:!1},{name:\"recipientTokenAccount0\",isMut:!0,isSigner:!1},{name:\"recipientTokenAccount1\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[{name:\"amount0Requested\",type:\"u64\"},{name:\"amount1Requested\",type:\"u64\"}]},{name:\"openPosition\",accounts:[{name:\"payer\",isMut:!0,isSigner:!0},{name:\"positionNftOwner\",isMut:!1,isSigner:!1},{name:\"positionNftMint\",isMut:!0,isSigner:!0},{name:\"positionNftAccount\",isMut:!0,isSigner:!1},{name:\"metadataAccount\",isMut:!0,isSigner:!1},{name:\"poolState\",isMut:!0,isSigner:!1},{name:\"protocolPosition\",isMut:!0,isSigner:!1},{name:\"tickArrayLower\",isMut:!0,isSigner:!1},{name:\"tickArrayUpper\",isMut:!0,isSigner:!1},{name:\"personalPosition\",isMut:!0,isSigner:!1},{name:\"tokenAccount0\",isMut:!0,isSigner:!1},{name:\"tokenAccount1\",isMut:!0,isSigner:!1},{name:\"tokenVault0\",isMut:!0,isSigner:!1},{name:\"tokenVault1\",isMut:!0,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"associatedTokenProgram\",isMut:!1,isSigner:!1},{name:\"metadataProgram\",isMut:!1,isSigner:!1}],args:[{name:\"tickLowerIndex\",type:\"i32\"},{name:\"tickUpperIndex\",type:\"i32\"},{name:\"tickArrayLowerStartIndex\",type:\"i32\"},{name:\"tickArrayUpperStartIndex\",type:\"i32\"},{name:\"liquidity\",type:\"u128\"},{name:\"amount0Max\",type:\"u64\"},{name:\"amount1Max\",type:\"u64\"}]},{name:\"closePosition\",accounts:[{name:\"nftOwner\",isMut:!0,isSigner:!0},{name:\"positionNftMint\",isMut:!0,isSigner:!1},{name:\"positionNftAccount\",isMut:!0,isSigner:!1},{name:\"personalPosition\",isMut:!0,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[]},{name:\"increaseLiquidity\",accounts:[{name:\"nftOwner\",isMut:!1,isSigner:!0},{name:\"nftAccount\",isMut:!1,isSigner:!1},{name:\"poolState\",isMut:!0,isSigner:!1},{name:\"protocolPosition\",isMut:!0,isSigner:!1},{name:\"personalPosition\",isMut:!0,isSigner:!1},{name:\"tickArrayLower\",isMut:!0,isSigner:!1},{name:\"tickArrayUpper\",isMut:!0,isSigner:!1},{name:\"tokenAccount0\",isMut:!0,isSigner:!1},{name:\"tokenAccount1\",isMut:!0,isSigner:!1},{name:\"tokenVault0\",isMut:!0,isSigner:!1},{name:\"tokenVault1\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[{name:\"liquidity\",type:\"u128\"},{name:\"amount0Max\",type:\"u64\"},{name:\"amount1Max\",type:\"u64\"}]},{name:\"decreaseLiquidity\",accounts:[{name:\"nftOwner\",isMut:!1,isSigner:!0},{name:\"nftAccount\",isMut:!1,isSigner:!1},{name:\"personalPosition\",isMut:!0,isSigner:!1},{name:\"poolState\",isMut:!0,isSigner:!1},{name:\"protocolPosition\",isMut:!0,isSigner:!1},{name:\"tokenVault0\",isMut:!0,isSigner:!1},{name:\"tokenVault1\",isMut:!0,isSigner:!1},{name:\"tickArrayLower\",isMut:!0,isSigner:!1},{name:\"tickArrayUpper\",isMut:!0,isSigner:!1},{name:\"recipientTokenAccount0\",isMut:!0,isSigner:!1},{name:\"recipientTokenAccount1\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[{name:\"liquidity\",type:\"u128\"},{name:\"amount0Min\",type:\"u64\"},{name:\"amount1Min\",type:\"u64\"}]},{name:\"swap\",accounts:[{name:\"payer\",isMut:!1,isSigner:!0},{name:\"ammConfig\",isMut:!1,isSigner:!1},{name:\"poolState\",isMut:!0,isSigner:!1},{name:\"inputTokenAccount\",isMut:!0,isSigner:!1},{name:\"outputTokenAccount\",isMut:!0,isSigner:!1},{name:\"inputVault\",isMut:!0,isSigner:!1},{name:\"outputVault\",isMut:!0,isSigner:!1},{name:\"observationState\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"tickArray\",isMut:!0,isSigner:!1}],args:[{name:\"amount\",type:\"u64\"},{name:\"otherAmountThreshold\",type:\"u64\"},{name:\"sqrtPriceLimitX64\",type:\"u128\"},{name:\"isBaseInput\",type:\"bool\"}]},{name:\"swapRouterBaseIn\",accounts:[{name:\"payer\",isMut:!1,isSigner:!0},{name:\"inputTokenAccount\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[{name:\"amountIn\",type:\"u64\"},{name:\"amountOutMinimum\",type:\"u64\"}]}],accounts:[{name:\"ammConfig\",type:{kind:\"struct\",fields:[{name:\"bump\",type:\"u8\"},{name:\"index\",type:\"u16\"},{name:\"owner\",type:\"publicKey\"},{name:\"protocolFeeRate\",type:\"u32\"},{name:\"tradeFeeRate\",type:\"u32\"},{name:\"tickSpacing\",type:\"u16\"},{name:\"fundFeeRate\",type:\"u32\"},{name:\"paddingU32\",type:\"u32\"},{name:\"fundOwner\",type:\"publicKey\"},{name:\"padding\",type:{array:[\"u64\",3]}}]}},{name:\"observationState\",type:{kind:\"struct\",fields:[{name:\"initialized\",type:\"bool\"},{name:\"poolId\",type:\"publicKey\"},{name:\"observations\",type:{array:[{defined:\"Observation\"},1e3]}},{name:\"padding\",type:{array:[\"u128\",5]}}]}},{name:\"personalPositionState\",type:{kind:\"struct\",fields:[{name:\"bump\",type:\"u8\"},{name:\"nftMint\",type:\"publicKey\"},{name:\"poolId\",type:\"publicKey\"},{name:\"tickLowerIndex\",type:\"i32\"},{name:\"tickUpperIndex\",type:\"i32\"},{name:\"liquidity\",type:\"u128\"},{name:\"feeGrowthInside0LastX64\",type:\"u128\"},{name:\"feeGrowthInside1LastX64\",type:\"u128\"},{name:\"tokenFeesOwed0\",type:\"u64\"},{name:\"tokenFeesOwed1\",type:\"u64\"},{name:\"rewardInfos\",type:{array:[{defined:\"PositionRewardInfo\"},3]}},{name:\"padding\",type:{array:[\"u64\",8]}}]}},{name:\"poolState\",type:{kind:\"struct\",fields:[{name:\"bump\",type:\"u8\"},{name:\"ammConfig\",type:\"publicKey\"},{name:\"owner\",type:\"publicKey\"},{name:\"tokenMint0\",type:\"publicKey\"},{name:\"tokenMint1\",type:\"publicKey\"},{name:\"tokenVault0\",type:\"publicKey\"},{name:\"tokenVault1\",type:\"publicKey\"},{name:\"observationKey\",type:\"publicKey\"},{name:\"mintDecimals0\",type:\"u8\"},{name:\"mintDecimals1\",type:\"u8\"},{name:\"tickSpacing\",type:\"u16\"},{name:\"liquidity\",type:\"u128\"},{name:\"sqrtPriceX64\",type:\"u128\"},{name:\"tickCurrent\",type:\"i32\"},{name:\"observationIndex\",type:\"u16\"},{name:\"observationUpdateDuration\",type:\"u16\"},{name:\"feeGrowthGlobal0X64\",type:\"u128\"},{name:\"feeGrowthGlobal1X64\",type:\"u128\"},{name:\"protocolFeesToken0\",type:\"u64\"},{name:\"protocolFeesToken1\",type:\"u64\"},{name:\"swapInAmountToken0\",type:\"u128\"},{name:\"swapOutAmountToken1\",type:\"u128\"},{name:\"swapInAmountToken1\",type:\"u128\"},{name:\"swapOutAmountToken0\",type:\"u128\"},{name:\"status\",type:\"u8\"},{name:\"padding\",type:{array:[\"u8\",7]}},{name:\"rewardInfos\",type:{array:[{defined:\"RewardInfo\"},3]}},{name:\"tickArrayBitmap\",type:{array:[\"u64\",16]}},{name:\"totalFeesToken0\",type:\"u64\"},{name:\"totalFeesClaimedToken0\",type:\"u64\"},{name:\"totalFeesToken1\",type:\"u64\"},{name:\"totalFeesClaimedToken1\",type:\"u64\"},{name:\"fundFeesToken0\",type:\"u64\"},{name:\"fundFeesToken1\",type:\"u64\"},{name:\"padding1\",type:{array:[\"u64\",26]}},{name:\"padding2\",type:{array:[\"u64\",32]}}]}},{name:\"protocolPositionState\",type:{kind:\"struct\",fields:[{name:\"bump\",type:\"u8\"},{name:\"poolId\",type:\"publicKey\"},{name:\"tickLowerIndex\",type:\"i32\"},{name:\"tickUpperIndex\",type:\"i32\"},{name:\"liquidity\",type:\"u128\"},{name:\"feeGrowthInside0LastX64\",type:\"u128\"},{name:\"feeGrowthInside1LastX64\",type:\"u128\"},{name:\"tokenFeesOwed0\",type:\"u64\"},{name:\"tokenFeesOwed1\",type:\"u64\"},{name:\"rewardGrowthInside\",type:{array:[\"u128\",3]}},{name:\"padding\",type:{array:[\"u64\",8]}}]}},{name:\"tickArrayState\",type:{kind:\"struct\",fields:[{name:\"poolId\",type:\"publicKey\"},{name:\"startTickIndex\",type:\"i32\"},{name:\"ticks\",type:{array:[{defined:\"TickState\"},60]}},{name:\"initializedTickCount\",type:\"u8\"},{name:\"padding\",type:{array:[\"u8\",115]}}]}}],types:[{name:\"InitializeRewardParam\",type:{kind:\"struct\",fields:[{name:\"openTime\",type:\"u64\"},{name:\"endTime\",type:\"u64\"},{name:\"emissionsPerSecondX64\",type:\"u128\"}]}},{name:\"Observation\",type:{kind:\"struct\",fields:[{name:\"blockTimestamp\",type:\"u32\"},{name:\"sqrtPriceX64\",type:\"u128\"},{name:\"cumulativeTimePriceX64\",type:\"u128\"},{name:\"padding\",type:\"u128\"}]}},{name:\"PositionRewardInfo\",type:{kind:\"struct\",fields:[{name:\"growthInsideLastX64\",type:\"u128\"},{name:\"rewardAmountOwed\",type:\"u64\"}]}},{name:\"RewardInfo\",type:{kind:\"struct\",fields:[{name:\"rewardState\",type:\"u8\"},{name:\"openTime\",type:\"u64\"},{name:\"endTime\",type:\"u64\"},{name:\"lastUpdateTime\",type:\"u64\"},{name:\"emissionsPerSecondX64\",type:\"u128\"},{name:\"rewardTotalEmissioned\",type:\"u64\"},{name:\"rewardClaimed\",type:\"u64\"},{name:\"tokenMint\",type:\"publicKey\"},{name:\"tokenVault\",type:\"publicKey\"},{name:\"authority\",type:\"publicKey\"},{name:\"rewardGrowthGlobalX64\",type:\"u128\"}]}},{name:\"TickState\",type:{kind:\"struct\",fields:[{name:\"tick\",type:\"i32\"},{name:\"liquidityNet\",type:\"i128\"},{name:\"liquidityGross\",type:\"u128\"},{name:\"feeGrowthOutside0X64\",type:\"u128\"},{name:\"feeGrowthOutside1X64\",type:\"u128\"},{name:\"rewardGrowthsOutsideX64\",type:{array:[\"u128\",3]}},{name:\"padding\",type:{array:[\"u32\",13]}}]}},{name:\"PoolStatusBitIndex\",type:{kind:\"enum\",variants:[{name:\"OpenPositionOrIncreaseLiquidity\"},{name:\"DecreaseLiquidity\"},{name:\"CollectFee\"},{name:\"CollectReward\"},{name:\"Swap\"}]}},{name:\"PoolStatusBitFlag\",type:{kind:\"enum\",variants:[{name:\"Enable\"},{name:\"Disable\"}]}},{name:\"RewardState\",type:{kind:\"enum\",variants:[{name:\"Uninitialized\"},{name:\"Initialized\"},{name:\"Opening\"},{name:\"Ended\"}]}}],events:[{name:\"CreateConfigEvent\",fields:[{name:\"index\",type:\"u16\",index:!1},{name:\"owner\",type:\"publicKey\",index:!0},{name:\"protocolFeeRate\",type:\"u32\",index:!1},{name:\"tradeFeeRate\",type:\"u32\",index:!1},{name:\"tickSpacing\",type:\"u16\",index:!1},{name:\"fundFeeRate\",type:\"u32\",index:!1},{name:\"fundOwner\",type:\"publicKey\",index:!1}]},{name:\"UpdaterConfigEvent\",fields:[{name:\"owner\",type:\"publicKey\",index:!1},{name:\"protocolFeeRate\",type:\"u32\",index:!1},{name:\"tradeFeeRate\",type:\"u32\",index:!1},{name:\"fundFeeRate\",type:\"u32\",index:!1},{name:\"fundOwner\",type:\"publicKey\",index:!1}]},{name:\"CreatePersonalPositionEvent\",fields:[{name:\"poolState\",type:\"publicKey\",index:!1},{name:\"minter\",type:\"publicKey\",index:!1},{name:\"nftOwner\",type:\"publicKey\",index:!1},{name:\"tickLowerIndex\",type:\"i32\",index:!1},{name:\"tickUpperIndex\",type:\"i32\",index:!1},{name:\"liquidity\",type:\"u128\",index:!1},{name:\"depositAmount0\",type:\"u64\",index:!1},{name:\"depositAmount1\",type:\"u64\",index:!1}]},{name:\"IncreaseLiquidityEvent\",fields:[{name:\"positionNftMint\",type:\"publicKey\",index:!1},{name:\"liquidity\",type:\"u128\",index:!1},{name:\"amount0\",type:\"u64\",index:!1},{name:\"amount1\",type:\"u64\",index:!1}]},{name:\"DecreaseLiquidityEvent\",fields:[{name:\"positionNftMint\",type:\"publicKey\",index:!1},{name:\"liquidity\",type:\"u128\",index:!1},{name:\"decreaseAmount0\",type:\"u64\",index:!1},{name:\"decreaseAmount1\",type:\"u64\",index:!1},{name:\"feeAmount0\",type:\"u64\",index:!1},{name:\"feeAmount1\",type:\"u64\",index:!1},{name:\"rewardAmounts\",type:{array:[\"u64\",3]},index:!1}]},{name:\"CollectPersonalFeeEvent\",fields:[{name:\"positionNftMint\",type:\"publicKey\",index:!1},{name:\"recipientTokenAccount0\",type:\"publicKey\",index:!1},{name:\"recipientTokenAccount1\",type:\"publicKey\",index:!1},{name:\"amount0\",type:\"u64\",index:!1},{name:\"amount1\",type:\"u64\",index:!1}]},{name:\"UpdateRewardInfosEvent\",fields:[{name:\"rewardGrowthGlobalX64\",type:{array:[\"u128\",3]},index:!1}]},{name:\"PoolCreatedEvent\",fields:[{name:\"tokenMint0\",type:\"publicKey\",index:!1},{name:\"tokenMint1\",type:\"publicKey\",index:!1},{name:\"tickSpacing\",type:\"u16\",index:!1},{name:\"poolState\",type:\"publicKey\",index:!1},{name:\"sqrtPriceX64\",type:\"u128\",index:!1},{name:\"tick\",type:\"i32\",index:!1},{name:\"tokenVault0\",type:\"publicKey\",index:!1},{name:\"tokenVault1\",type:\"publicKey\",index:!1}]},{name:\"CollectProtocolFeeEvent\",fields:[{name:\"poolState\",type:\"publicKey\",index:!1},{name:\"recipientTokenAccount0\",type:\"publicKey\",index:!1},{name:\"recipientTokenAccount1\",type:\"publicKey\",index:!1},{name:\"amount0\",type:\"u64\",index:!1},{name:\"amount1\",type:\"u64\",index:!1}]},{name:\"SwapEvent\",fields:[{name:\"poolState\",type:\"publicKey\",index:!1},{name:\"sender\",type:\"publicKey\",index:!1},{name:\"tokenAccount0\",type:\"publicKey\",index:!1},{name:\"tokenAccount1\",type:\"publicKey\",index:!1},{name:\"amount0\",type:\"u64\",index:!1},{name:\"amount1\",type:\"u64\",index:!1},{name:\"zeroForOne\",type:\"bool\",index:!1},{name:\"sqrtPriceX64\",type:\"u128\",index:!1},{name:\"liquidity\",type:\"u128\",index:!1},{name:\"tick\",type:\"i32\",index:!1}]}],errors:[{code:6e3,name:\"LOK\",msg:\"LOK\"},{code:6001,name:\"NotApproved\",msg:\"Not approved\"},{code:6002,name:\"InvalidUpdateConfigFlag\",msg:\"invalid update amm config flag\"},{code:6003,name:\"AccountLack\",msg:\"Account lack\"},{code:6004,name:\"ClosePositionErr\",msg:\"Remove liquitity, collect fees owed and reward then you can close position account\"},{code:6005,name:\"ZeroMintAmount\",msg:\"Minting amount should be greater than 0\"},{code:6006,name:\"InvaildTickIndex\",msg:\"Tick index of lower must be smaller than upper\"},{code:6007,name:\"TickInvaildOrder\",msg:\"The lower tick must be below the upper tick\"},{code:6008,name:\"TickLowerOverflow\",msg:\"The tick must be greater, or equal to the minimum tick(-221818)\"},{code:6009,name:\"TickUpperOverflow\",msg:\"The tick must be lesser than, or equal to the maximum tick(221818)\"},{code:6010,name:\"TickAndSpacingNotMatch\",msg:\"tick % tick_spacing must be zero\"},{code:6011,name:\"InvalidTickArray\",msg:\"Invaild tick array account\"},{code:6012,name:\"SqrtPriceLimitOverflow\",msg:\"Square root price limit overflow\"},{code:6013,name:\"SqrtPriceX64\",msg:\"sqrt_price_x64 out of range\"},{code:6014,name:\"LiquiditySubValueErr\",msg:\"Liquidity sub delta L must be smaller than before\"},{code:6015,name:\"LiquidityAddValueErr\",msg:\"Liquidity add delta L must be greater, or equal to before\"},{code:6016,name:\"InvaildLiquidity\",msg:\"Invaild liquidity when update position\"},{code:6017,name:\"ForbidBothZeroForSupplyLiquidity\",msg:\"Both token amount must not be zero while supply liquidity\"},{code:6018,name:\"TransactionTooOld\",msg:\"Transaction too old\"},{code:6019,name:\"PriceSlippageCheck\",msg:\"Price slippage check\"},{code:6020,name:\"TooLittleOutputReceived\",msg:\"Too little output received\"},{code:6021,name:\"TooMuchInputPaid\",msg:\"Too much input paid\"},{code:6022,name:\"InvaildSwapAmountSpecified\",msg:\"Swap special amount can not be zero\"},{code:6023,name:\"InvalidInputPoolVault\",msg:\"Input pool vault is invalid\"},{code:6024,name:\"TooSmallInputOrOutputAmount\",msg:\"Swap input or output amount is too small\"},{code:6025,name:\"InvalidRewardIndex\",msg:\"Invalid reward index\"},{code:6026,name:\"FullRewardInfo\",msg:\"The init reward token reach to the max\"},{code:6027,name:\"RewardTokenAlreadyInUse\",msg:\"The init reward token already in use\"},{code:6028,name:\"ExceptPoolVaultMint\",msg:\"The reward tokens must contain one of pool vault mint except the last reward\"},{code:6029,name:\"InvalidRewardInitParam\",msg:\"Invalid reward init param\"},{code:6030,name:\"InvalidRewardDesiredAmount\",msg:\"Invalid collect reward desired amount\"},{code:6031,name:\"InvalidRewardInputAccountNumber\",msg:\"Invalid collect reward input account number\"},{code:6032,name:\"InvalidRewardPeriod\",msg:\"Invalid reward period\"},{code:6033,name:\"NotApproveUpdateRewardEmissiones\",msg:\"Modification of emissiones is allowed within 72 hours from the end of the previous cycle\"},{code:6034,name:\"UnInitializedRewardInfo\",msg:\"uninitialized reward info\"}]};export{me as Amm,rt as IDL,we as TICK_ARRAY_BITMAP_SIZE,M as TICK_ARRAY_SIZE,k as TickUtils,h as getPdaTickArrayAddress};\n","import{PublicKey as e,MAX_SEED_LENGTH as t,SystemProgram as n,TransactionInstruction as i,SYSVAR_RENT_PUBKEY as o,SYSVAR_CLOCK_PUBKEY as s,AddressLookupTableAccount as a,ComputeBudgetProgram as r,sendAndConfirmRawTransaction as u,Transaction as c,TransactionMessage as m,VersionedTransaction as d}from\"@solana/web3.js\";import p from\"lru-cache\";import{Market as l,OpenOrders as g,Orderbook as h}from\"@project-serum/serum\";import{calculateAmpFactor as S,SWAP_PROGRAM_ID as k,StableSwap as f}from\"@saberhq/stableswap-sdk\";import{TokenSwapStable as A,Fraction as M,TokenSwapConstantProduct as y,toDecimal as w,Stable as P,ZERO_FRACTION as T,ZERO as v,TWO as b,ONE as B}from\"@jup-ag/math\";import I from\"jsbi\";import*as L from\"fzstd\";import{deserializeAccount as F,deserializeMint as D,TransactionError as q,parseErrorForTransaction as x,UNKNOWN_ERROR as E}from\"@mercurial-finance/optimist\";export{TransactionError}from\"@mercurial-finance/optimist\";import{AnchorProvider as O,Program as V,BorshAccountsCoder as C,BorshCoder as R,BN as N,utils as U}from\"@project-serum/anchor\";import{findProgramAddressSync as K,createProgramAddressSync as W}from\"@project-serum/anchor/dist/cjs/utils/pubkey\";import{u64 as X,Token as j,TOKEN_PROGRAM_ID as Q,ASSOCIATED_TOKEN_PROGRAM_ID as z,NATIVE_MINT as Y}from\"@solana/spl-token\";import{Layout as H,blob as _,struct as J,u8 as G,u32 as $,nu64 as Z}from\"@solana/buffer-layout\";import{sha256 as ee}from\"@noble/hashes/sha256\";import te,{BN as ne}from\"bn.js\";import ie from\"decimal.js\";import{PDAUtil as oe,TickUtil as se,TICK_ARRAY_SIZE as ae,computeSwap as re,TickMath as ue,IDL as ce}from\"@jup-ag/crema-sdk-v2\";import{tickPosition as me,TickMath as de,generateBitmapWord as pe,TICK_SEED as le,u32ToSeed as ge,BITMAP_SEED as he,u16ToSeed as Se,nextInitializedBit as ke,buildTick as fe,Pool as Ae,OBSERVATION_SEED as Me,IDL as ye}from\"@jup-ag/cykura-sdk\";import{Token as we,CurrencyAmount as Pe}from\"@jup-ag/cykura-sdk-core\";import{getSwappedAmountsAndPriceImpactFromRawValue as Te,getDeltafiDexV2 as ve}from\"@jup-ag/deltafi-sdk\";import{parsePriceData as be}from\"@pythnetwork/client\";import{BigNumber as Be}from\"bignumber.js\";import{PAIR_LAYOUT as Ie,SyncSwap as Le,SSL as Fe,wasm as De,loadWasm as qe}from\"@jup-ag/goosefx-ssl-sdk\";import{calculatePriceSqrt as xe,MIN_TICK as Ee,MAX_TICK as Oe,toDecimal as Ve,simulateSwap as Ce,findClosestTicks as Re,TICK_CROSSES_PER_IX as Ne,IDL as Ue,DENOMINATOR as Ke}from\"@jup-ag/invariant\";import{LIFINITY_AMM_LAYOUT as We,getParsedData as Xe,TradeDirection as je,getCurveAmount as Qe}from\"@jup-ag/lifinity-sdk\";import{IDL as ze,getParsedData as Ye,TradeDirection as He,getCurveAmount as _e}from\"@jup-ag/lifinity-sdk-v2\";import{AmmIdl as Je,PROGRAM_ID as Ge,VaultIdl as $e,calculateSwapQuote as Ze}from\"@mercurial-finance/dynamic-amm-sdk\";import{SwapUtils as et,swapQuoteWithParams as tt,ParsableWhirlpool as nt,ParsableTickArray as it}from\"@jup-ag/whirlpools-sdk\";import{dexCoder as ot,QuoteCalculator as st}from\"@jup-ag/dradex-sdk\";import{OrderBook as at}from\"@jup-ag/dradex-idl\";import{IDL as rt,Amm as ut}from\"@jup-ag/raydium-clmm-sdk\";import{deserializeMarketData as ct,getMarketLadder as mt}from\"@jup-ag/phoenix-sdk\";import dt from\"cross-fetch\";import{bs58 as pt}from\"@project-serum/anchor/dist/cjs/utils/bytes\";const lt={Raydium:{Openbook:!0}},gt={Openbook:!0,Cykura:!0,Meteora:{Lifinity:!0,\"Lifinity V2\":!0,Balansol:!0,Crema:!0,Dradex:!0,Raydium:!0,\"Marco Polo\":!0},Crema:{Balansol:!0,Raydium:!0,Lifinity:!0,\"Lifinity V2\":!0},\"Marco Polo\":{Lifinity:!0,\"Lifinity V2\":!0,Balansol:!0,Crema:!0,Dradex:!0,Raydium:!0},Dradex:{Lifinity:!0,\"Lifinity V2\":!0,Balansol:!0,Crema:!0,Raydium:!0},Balansol:{Raydium:!0},Lifinity:{Raydium:!0},\"Lifinity V2\":{Raydium:!0}},ht={Raydium:!0,GooseFX:!0,Meteora:!0,Serum:!0,Openbook:!0,Dradex:!0,Crema:!0,Lifinity:!0,\"Lifinity V2\":!0},St=(e,t,n)=>{const i=e[t];if(i){if(!0===i||!0===i[\"*\"])return!0;if(n)return!0===i[n]}return!1},kt=(e,t,n)=>St(e,t,n)||!!n&&St(e,n,t);function ft(e,t){return Array.apply(0,new Array(Math.ceil(e.length/t))).map(((n,i)=>e.slice(i*t,(i+1)*t)))}async function At(t,n,i=1e3,o=100){return(await Promise.all(ft(n,i).map((async n=>{const i=ft(n,o).map((e=>({methodName:\"getMultipleAccounts\",args:t._buildArgs([e],t.commitment,\"base64+zstd\")})));return t._rpcBatchRequest(i).then((t=>t.reduce(((t,n)=>(n.result.value.forEach((n=>{if(n){const i=n;i.data=Buffer.from(L.decompress(Buffer.from(n.data[0],\"base64\"))),i.owner=new e(n.owner),t.push(i)}else t.push(null)})),t)),[]))).catch((e=>n.map((()=>null))))})))).flat()}var Mt;!function(e){e.ExactIn=\"ExactIn\",e.ExactOut=\"ExactOut\"}(Mt||(Mt={}));const yt=(e,t)=>t.map((t=>{const n=e.get(t.toString());if(!n)throw new Error(`Account info ${t.toBase58()} missing`);return n})),wt=e=>e.map((e=>{const t=F(e.data);if(!t)throw new Error(\"Invalid token account\");return t})).map((e=>I.BigInt(e.amount))),Pt=async(e,t)=>{const n=e.map((e=>e.getAccountsForUpdate().map((e=>e.toBase58())))).flat(),i=new Map;(await At(t,n)).forEach(((e,t)=>{e&&i.set(n[t],e)}));for(let t of e)t.update(i)},Tt={version:\"0.1.0\",name:\"jupiter\",instructions:[{name:\"route\",accounts:[{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"userTransferAuthority\",isMut:!1,isSigner:!0},{name:\"destinationTokenAccount\",isMut:!1,isSigner:!1}],args:[{name:\"swapLeg\",type:{defined:\"SwapLeg\"}},{name:\"inAmount\",type:\"u64\"},{name:\"quotedOutAmount\",type:\"u64\"},{name:\"slippageBps\",type:\"u16\"},{name:\"platformFeeBps\",type:\"u8\"}]},{name:\"whirlpoolSwapExactOutput\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"tokenAuthority\",isMut:!1,isSigner:!0},{name:\"whirlpool\",isMut:!0,isSigner:!1},{name:\"tokenOwnerAccountA\",isMut:!0,isSigner:!1},{name:\"tokenVaultA\",isMut:!0,isSigner:!1},{name:\"tokenOwnerAccountB\",isMut:!0,isSigner:!1},{name:\"tokenVaultB\",isMut:!0,isSigner:!1},{name:\"tickArray0\",isMut:!0,isSigner:!1},{name:\"tickArray1\",isMut:!0,isSigner:!1},{name:\"tickArray2\",isMut:!0,isSigner:!1},{name:\"oracle\",isMut:!1,isSigner:!1}],args:[{name:\"outAmount\",type:\"u64\"},{name:\"inAmountWithSlippage\",type:{defined:\"AmountWithSlippage\"}},{name:\"aToB\",type:\"bool\"},{name:\"platformFeeBps\",type:\"u8\"}]},{name:\"raydiumSwapExactOutput\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"ammId\",isMut:!0,isSigner:!1},{name:\"ammAuthority\",isMut:!1,isSigner:!1},{name:\"ammOpenOrders\",isMut:!0,isSigner:!1},{name:\"poolCoinTokenAccount\",isMut:!0,isSigner:!1},{name:\"poolPcTokenAccount\",isMut:!0,isSigner:!1},{name:\"serumProgramId\",isMut:!1,isSigner:!1},{name:\"serumMarket\",isMut:!0,isSigner:!1},{name:\"serumBids\",isMut:!0,isSigner:!1},{name:\"serumAsks\",isMut:!0,isSigner:!1},{name:\"serumEventQueue\",isMut:!0,isSigner:!1},{name:\"serumCoinVaultAccount\",isMut:!0,isSigner:!1},{name:\"serumPcVaultAccount\",isMut:!0,isSigner:!1},{name:\"serumVaultSigner\",isMut:!1,isSigner:!1},{name:\"userSourceTokenAccount\",isMut:!0,isSigner:!1},{name:\"userDestinationTokenAccount\",isMut:!0,isSigner:!1},{name:\"userSourceOwner\",isMut:!1,isSigner:!0}],args:[{name:\"outAmount\",type:\"u64\"},{name:\"inAmountWithSlippage\",type:{defined:\"AmountWithSlippage\"}},{name:\"platformFeeBps\",type:\"u8\"}]},{name:\"raydiumClmmSwapExactOutput\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"payer\",isMut:!1,isSigner:!0},{name:\"ammConfig\",isMut:!1,isSigner:!1},{name:\"poolState\",isMut:!0,isSigner:!1},{name:\"inputTokenAccount\",isMut:!0,isSigner:!1},{name:\"outputTokenAccount\",isMut:!0,isSigner:!1},{name:\"inputVault\",isMut:!0,isSigner:!1},{name:\"outputVault\",isMut:!0,isSigner:!1},{name:\"observationState\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"tickArray\",isMut:!0,isSigner:!1}],args:[{name:\"outAmount\",type:\"u64\"},{name:\"inAmountWithSlippage\",type:{defined:\"AmountWithSlippage\"}},{name:\"platformFeeBps\",type:\"u8\"}]},{name:\"createOpenOrders\",accounts:[{name:\"openOrders\",isMut:!0,isSigner:!1},{name:\"payer\",isMut:!0,isSigner:!0},{name:\"dexProgram\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1},{name:\"market\",isMut:!1,isSigner:!1}],args:[]},{name:\"mercurialSwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"swapState\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"poolAuthority\",isMut:!1,isSigner:!1},{name:\"userTransferAuthority\",isMut:!1,isSigner:!0},{name:\"sourceTokenAccount\",isMut:!0,isSigner:!1},{name:\"destinationTokenAccount\",isMut:!0,isSigner:!1}],args:[]},{name:\"cykuraSwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"signer\",isMut:!1,isSigner:!0},{name:\"factoryState\",isMut:!1,isSigner:!1},{name:\"poolState\",isMut:!0,isSigner:!1},{name:\"inputTokenAccount\",isMut:!0,isSigner:!1},{name:\"outputTokenAccount\",isMut:!0,isSigner:!1},{name:\"inputVault\",isMut:!0,isSigner:!1},{name:\"outputVault\",isMut:!0,isSigner:!1},{name:\"lastObservationState\",isMut:!0,isSigner:!1},{name:\"coreProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[]},{name:\"serumSwap\",accounts:[{name:\"market\",accounts:[{name:\"market\",isMut:!0,isSigner:!1},{name:\"openOrders\",isMut:!0,isSigner:!1},{name:\"requestQueue\",isMut:!0,isSigner:!1},{name:\"eventQueue\",isMut:!0,isSigner:!1},{name:\"bids\",isMut:!0,isSigner:!1},{name:\"asks\",isMut:!0,isSigner:!1},{name:\"coinVault\",isMut:!0,isSigner:!1},{name:\"pcVault\",isMut:!0,isSigner:!1},{name:\"vaultSigner\",isMut:!1,isSigner:!1}]},{name:\"authority\",isMut:!1,isSigner:!0},{name:\"orderPayerTokenAccount\",isMut:!0,isSigner:!1},{name:\"coinWallet\",isMut:!0,isSigner:!1},{name:\"pcWallet\",isMut:!0,isSigner:!1},{name:\"dexProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[]},{name:\"saberSwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"swap\",isMut:!1,isSigner:!1},{name:\"swapAuthority\",isMut:!1,isSigner:!1},{name:\"userAuthority\",isMut:!1,isSigner:!1},{name:\"inputUserAccount\",isMut:!0,isSigner:!1},{name:\"inputTokenAccount\",isMut:!0,isSigner:!1},{name:\"outputUserAccount\",isMut:!0,isSigner:!1},{name:\"outputTokenAccount\",isMut:!0,isSigner:!1},{name:\"feesTokenAccount\",isMut:!0,isSigner:!1}],args:[]},{name:\"saberAddDecimals\",accounts:[{name:\"addDecimalsProgram\",isMut:!1,isSigner:!1},{name:\"wrapper\",isMut:!1,isSigner:!1},{name:\"wrapperMint\",isMut:!0,isSigner:!1},{name:\"wrapperUnderlyingTokens\",isMut:!0,isSigner:!1},{name:\"owner\",isMut:!1,isSigner:!0},{name:\"userUnderlyingTokens\",isMut:!0,isSigner:!1},{name:\"userWrappedTokens\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[]},{name:\"tokenSwap\",accounts:[{name:\"tokenSwapProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"swap\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!1},{name:\"userTransferAuthority\",isMut:!1,isSigner:!0},{name:\"source\",isMut:!0,isSigner:!1},{name:\"swapSource\",isMut:!0,isSigner:!1},{name:\"swapDestination\",isMut:!0,isSigner:!1},{name:\"destination\",isMut:!0,isSigner:!1},{name:\"poolMint\",isMut:!0,isSigner:!1},{name:\"poolFee\",isMut:!0,isSigner:!1}],args:[]},{name:\"senchaSwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"swap\",isMut:!0,isSigner:!1},{name:\"userAuthority\",isMut:!1,isSigner:!1},{name:\"inputUserAccount\",isMut:!0,isSigner:!1},{name:\"inputTokenAccount\",isMut:!0,isSigner:!1},{name:\"inputFeesAccount\",isMut:!0,isSigner:!1},{name:\"outputUserAccount\",isMut:!0,isSigner:!1},{name:\"outputTokenAccount\",isMut:!0,isSigner:!1},{name:\"outputFeesAccount\",isMut:!0,isSigner:!1}],args:[]},{name:\"stepSwap\",accounts:[{name:\"tokenSwapProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"swap\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!1},{name:\"userTransferAuthority\",isMut:!1,isSigner:!0},{name:\"source\",isMut:!0,isSigner:!1},{name:\"swapSource\",isMut:!0,isSigner:!1},{name:\"swapDestination\",isMut:!0,isSigner:!1},{name:\"destination\",isMut:!0,isSigner:!1},{name:\"poolMint\",isMut:!0,isSigner:!1},{name:\"poolFee\",isMut:!0,isSigner:!1}],args:[]},{name:\"cropperSwap\",accounts:[{name:\"tokenSwapProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"swap\",isMut:!1,isSigner:!1},{name:\"swapState\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!1},{name:\"userTransferAuthority\",isMut:!1,isSigner:!0},{name:\"source\",isMut:!0,isSigner:!1},{name:\"swapSource\",isMut:!0,isSigner:!1},{name:\"swapDestination\",isMut:!0,isSigner:!1},{name:\"destination\",isMut:!0,isSigner:!1},{name:\"poolMint\",isMut:!0,isSigner:!1},{name:\"poolFee\",isMut:!0,isSigner:!1}],args:[]},{name:\"raydiumSwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"ammId\",isMut:!0,isSigner:!1},{name:\"ammAuthority\",isMut:!1,isSigner:!1},{name:\"ammOpenOrders\",isMut:!0,isSigner:!1},{name:\"poolCoinTokenAccount\",isMut:!0,isSigner:!1},{name:\"poolPcTokenAccount\",isMut:!0,isSigner:!1},{name:\"serumProgramId\",isMut:!1,isSigner:!1},{name:\"serumMarket\",isMut:!0,isSigner:!1},{name:\"serumBids\",isMut:!0,isSigner:!1},{name:\"serumAsks\",isMut:!0,isSigner:!1},{name:\"serumEventQueue\",isMut:!0,isSigner:!1},{name:\"serumCoinVaultAccount\",isMut:!0,isSigner:!1},{name:\"serumPcVaultAccount\",isMut:!0,isSigner:!1},{name:\"serumVaultSigner\",isMut:!1,isSigner:!1},{name:\"userSourceTokenAccount\",isMut:!0,isSigner:!1},{name:\"userDestinationTokenAccount\",isMut:!0,isSigner:!1},{name:\"userSourceOwner\",isMut:!1,isSigner:!0}],args:[]},{name:\"cremaSwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"clmmConfig\",isMut:!1,isSigner:!1},{name:\"clmmpool\",isMut:!0,isSigner:!1},{name:\"tokenA\",isMut:!1,isSigner:!1},{name:\"tokenB\",isMut:!1,isSigner:!1},{name:\"accountA\",isMut:!0,isSigner:!1},{name:\"accountB\",isMut:!0,isSigner:!1},{name:\"tokenAVault\",isMut:!0,isSigner:!1},{name:\"tokenBVault\",isMut:!0,isSigner:!1},{name:\"tickArrayMap\",isMut:!0,isSigner:!1},{name:\"owner\",isMut:!1,isSigner:!0},{name:\"partner\",isMut:!1,isSigner:!1},{name:\"partnerAtaA\",isMut:!0,isSigner:!1},{name:\"partnerAtaB\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[]},{name:\"lifinitySwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!1},{name:\"amm\",isMut:!1,isSigner:!1},{name:\"userTransferAuthority\",isMut:!1,isSigner:!0},{name:\"sourceInfo\",isMut:!0,isSigner:!1},{name:\"destinationInfo\",isMut:!0,isSigner:!1},{name:\"swapSource\",isMut:!0,isSigner:!1},{name:\"swapDestination\",isMut:!0,isSigner:!1},{name:\"poolMint\",isMut:!0,isSigner:!1},{name:\"feeAccount\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"pythAccount\",isMut:!1,isSigner:!1},{name:\"pythPcAccount\",isMut:!1,isSigner:!1},{name:\"configAccount\",isMut:!0,isSigner:!1}],args:[]},{name:\"marinadeDeposit\",accounts:[{name:\"marinadeFinanceProgram\",isMut:!1,isSigner:!1},{name:\"state\",isMut:!0,isSigner:!1},{name:\"msolMint\",isMut:!0,isSigner:!1},{name:\"liqPoolSolLegPda\",isMut:!0,isSigner:!1},{name:\"liqPoolMsolLeg\",isMut:!0,isSigner:!1},{name:\"liqPoolMsolLegAuthority\",isMut:!1,isSigner:!1},{name:\"reservePda\",isMut:!0,isSigner:!1},{name:\"transferFrom\",isMut:!0,isSigner:!1},{name:\"mintTo\",isMut:!0,isSigner:!1},{name:\"msolMintAuthority\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"userWsolTokenAccount\",isMut:!0,isSigner:!1},{name:\"tempWsolTokenAccount\",isMut:!0,isSigner:!1},{name:\"userTransferAuthority\",isMut:!0,isSigner:!0},{name:\"wsolMint\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[]},{name:\"marinadeUnstake\",accounts:[{name:\"marinadeFinanceProgram\",isMut:!1,isSigner:!1},{name:\"state\",isMut:!0,isSigner:!1},{name:\"msolMint\",isMut:!0,isSigner:!1},{name:\"liqPoolSolLegPda\",isMut:!0,isSigner:!1},{name:\"liqPoolMsolLeg\",isMut:!0,isSigner:!1},{name:\"treasuryMsolAccount\",isMut:!0,isSigner:!1},{name:\"getMsolFrom\",isMut:!0,isSigner:!1},{name:\"getMsolFromAuthority\",isMut:!1,isSigner:!0},{name:\"transferSolTo\",isMut:!0,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"userWsolTokenAccount\",isMut:!0,isSigner:!1}],args:[]},{name:\"aldrinSwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!1,isSigner:!1},{name:\"poolSigner\",isMut:!1,isSigner:!1},{name:\"poolMint\",isMut:!0,isSigner:!1},{name:\"baseTokenVault\",isMut:!0,isSigner:!1},{name:\"quoteTokenVault\",isMut:!0,isSigner:!1},{name:\"feePoolTokenAccount\",isMut:!0,isSigner:!1},{name:\"walletAuthority\",isMut:!1,isSigner:!0},{name:\"userBaseTokenAccount\",isMut:!0,isSigner:!1},{name:\"userQuoteTokenAccount\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[]},{name:\"aldrinV2Swap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!1,isSigner:!1},{name:\"poolSigner\",isMut:!1,isSigner:!1},{name:\"poolMint\",isMut:!0,isSigner:!1},{name:\"baseTokenVault\",isMut:!0,isSigner:!1},{name:\"quoteTokenVault\",isMut:!0,isSigner:!1},{name:\"feePoolTokenAccount\",isMut:!0,isSigner:!1},{name:\"walletAuthority\",isMut:!1,isSigner:!0},{name:\"userBaseTokenAccount\",isMut:!0,isSigner:!1},{name:\"userQuoteTokenAccount\",isMut:!0,isSigner:!1},{name:\"curve\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[]},{name:\"whirlpoolSwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"tokenAuthority\",isMut:!1,isSigner:!0},{name:\"whirlpool\",isMut:!0,isSigner:!1},{name:\"tokenOwnerAccountA\",isMut:!0,isSigner:!1},{name:\"tokenVaultA\",isMut:!0,isSigner:!1},{name:\"tokenOwnerAccountB\",isMut:!0,isSigner:!1},{name:\"tokenVaultB\",isMut:!0,isSigner:!1},{name:\"tickArray0\",isMut:!0,isSigner:!1},{name:\"tickArray1\",isMut:!0,isSigner:!1},{name:\"tickArray2\",isMut:!0,isSigner:!1},{name:\"oracle\",isMut:!1,isSigner:!1}],args:[]},{name:\"invariantSwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!0,isSigner:!1},{name:\"tickmap\",isMut:!0,isSigner:!1},{name:\"accountX\",isMut:!0,isSigner:!1},{name:\"accountY\",isMut:!0,isSigner:!1},{name:\"reserveX\",isMut:!0,isSigner:!1},{name:\"reserveY\",isMut:!0,isSigner:!1},{name:\"owner\",isMut:!1,isSigner:!0},{name:\"programAuthority\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[]},{name:\"meteoraSwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!0,isSigner:!1},{name:\"userSourceToken\",isMut:!0,isSigner:!1},{name:\"userDestinationToken\",isMut:!0,isSigner:!1},{name:\"aVault\",isMut:!0,isSigner:!1},{name:\"bVault\",isMut:!0,isSigner:!1},{name:\"aTokenVault\",isMut:!0,isSigner:!1},{name:\"bTokenVault\",isMut:!0,isSigner:!1},{name:\"aVaultLpMint\",isMut:!0,isSigner:!1},{name:\"bVaultLpMint\",isMut:!0,isSigner:!1},{name:\"aVaultLp\",isMut:!0,isSigner:!1},{name:\"bVaultLp\",isMut:!0,isSigner:!1},{name:\"adminTokenFee\",isMut:!0,isSigner:!1},{name:\"user\",isMut:!1,isSigner:!0},{name:\"vaultProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[]},{name:\"goosefxSwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"controller\",isMut:!1,isSigner:!1},{name:\"pair\",isMut:!0,isSigner:!1},{name:\"sslIn\",isMut:!0,isSigner:!1},{name:\"sslOut\",isMut:!0,isSigner:!1},{name:\"liabilityVaultIn\",isMut:!0,isSigner:!1},{name:\"swappedLiabilityVaultIn\",isMut:!0,isSigner:!1},{name:\"liabilityVaultOut\",isMut:!0,isSigner:!1},{name:\"swappedLiabilityVaultOut\",isMut:!0,isSigner:!1},{name:\"userInAta\",isMut:!0,isSigner:!1},{name:\"userOutAta\",isMut:!0,isSigner:!1},{name:\"feeCollectorAta\",isMut:!0,isSigner:!1},{name:\"userWallet\",isMut:!1,isSigner:!0},{name:\"feeCollector\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[]},{name:\"deltafiSwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"marketConfig\",isMut:!1,isSigner:!1},{name:\"swapInfo\",isMut:!0,isSigner:!1},{name:\"userSourceToken\",isMut:!0,isSigner:!1},{name:\"userDestinationToken\",isMut:!0,isSigner:!1},{name:\"swapSourceToken\",isMut:!0,isSigner:!1},{name:\"swapDestinationToken\",isMut:!0,isSigner:!1},{name:\"deltafiUser\",isMut:!0,isSigner:!1},{name:\"adminDestinationToken\",isMut:!0,isSigner:!1},{name:\"pythPriceBase\",isMut:!1,isSigner:!1},{name:\"pythPriceQuote\",isMut:!1,isSigner:!1},{name:\"userAuthority\",isMut:!1,isSigner:!0},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[]},{name:\"balansolSwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!0,isSigner:!0},{name:\"pool\",isMut:!0,isSigner:!1},{name:\"taxMan\",isMut:!0,isSigner:!1},{name:\"bidMint\",isMut:!1,isSigner:!1},{name:\"treasurer\",isMut:!1,isSigner:!1},{name:\"srcTreasury\",isMut:!0,isSigner:!1},{name:\"srcAssociatedTokenAccount\",isMut:!0,isSigner:!1},{name:\"askMint\",isMut:!1,isSigner:!1},{name:\"dstTreasury\",isMut:!0,isSigner:!1},{name:\"dstAssociatedTokenAccount\",isMut:!0,isSigner:!1},{name:\"dstTokenAccountTaxman\",isMut:!0,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"associatedTokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[]},{name:\"marcoPoloSwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"poolXAccount\",isMut:!0,isSigner:!1},{name:\"poolYAccount\",isMut:!0,isSigner:!1},{name:\"swapperXAccount\",isMut:!0,isSigner:!1},{name:\"swapperYAccount\",isMut:!0,isSigner:!1},{name:\"swapper\",isMut:!0,isSigner:!0},{name:\"referrerXAccount\",isMut:!0,isSigner:!1},{name:\"referrerYAccount\",isMut:!0,isSigner:!1},{name:\"referrer\",isMut:!0,isSigner:!1},{name:\"programAuthority\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"associatedTokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[]},{name:\"dradexSwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"pair\",isMut:!0,isSigner:!1},{name:\"market\",isMut:!0,isSigner:!1},{name:\"eventQueue\",isMut:!0,isSigner:!1},{name:\"dexUser\",isMut:!1,isSigner:!1},{name:\"marketUser\",isMut:!0,isSigner:!1},{name:\"bids\",isMut:!0,isSigner:!1},{name:\"asks\",isMut:!0,isSigner:!1},{name:\"t0Vault\",isMut:!0,isSigner:!1},{name:\"t1Vault\",isMut:!0,isSigner:!1},{name:\"t0User\",isMut:!0,isSigner:!1},{name:\"t1User\",isMut:!0,isSigner:!1},{name:\"master\",isMut:!1,isSigner:!1},{name:\"signer\",isMut:!0,isSigner:!0},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"logger\",isMut:!1,isSigner:!1}],args:[]},{name:\"lifinityV2Swap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!1},{name:\"amm\",isMut:!0,isSigner:!1},{name:\"userTransferAuthority\",isMut:!1,isSigner:!0},{name:\"sourceInfo\",isMut:!0,isSigner:!1},{name:\"destinationInfo\",isMut:!0,isSigner:!1},{name:\"swapSource\",isMut:!0,isSigner:!1},{name:\"swapDestination\",isMut:!0,isSigner:!1},{name:\"poolMint\",isMut:!0,isSigner:!1},{name:\"feeAccount\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"oracleMainAccount\",isMut:!1,isSigner:!1},{name:\"oracleSubAccount\",isMut:!1,isSigner:!1},{name:\"oraclePcAccount\",isMut:!1,isSigner:!1}],args:[]},{name:\"raydiumClmmSwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"payer\",isMut:!1,isSigner:!0},{name:\"ammConfig\",isMut:!1,isSigner:!1},{name:\"poolState\",isMut:!0,isSigner:!1},{name:\"inputTokenAccount\",isMut:!0,isSigner:!1},{name:\"outputTokenAccount\",isMut:!0,isSigner:!1},{name:\"inputVault\",isMut:!0,isSigner:!1},{name:\"outputVault\",isMut:!0,isSigner:!1},{name:\"observationState\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"tickArray\",isMut:!0,isSigner:!1}],args:[]},{name:\"phoenixSwap\",accounts:[{name:\"swapProgram\",isMut:!1,isSigner:!1},{name:\"logAuthority\",isMut:!1,isSigner:!1},{name:\"market\",isMut:!0,isSigner:!1},{name:\"trader\",isMut:!1,isSigner:!0},{name:\"baseAccount\",isMut:!0,isSigner:!1},{name:\"quoteAccount\",isMut:!0,isSigner:!1},{name:\"baseVault\",isMut:!0,isSigner:!1},{name:\"quoteVault\",isMut:!0,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[]}],types:[{name:\"AmountWithSlippage\",type:{kind:\"struct\",fields:[{name:\"amount\",type:\"u64\"},{name:\"slippageBps\",type:\"u16\"}]}},{name:\"SplitLegDeeper\",type:{kind:\"struct\",fields:[{name:\"percent\",type:\"u8\"},{name:\"swapLeg\",type:{defined:\"SwapLegSwap\"}}]}},{name:\"SplitLeg\",type:{kind:\"struct\",fields:[{name:\"percent\",type:\"u8\"},{name:\"swapLeg\",type:{defined:\"SwapLegDeeper\"}}]}},{name:\"SwapInstrution\",type:{kind:\"enum\",variants:[{name:\"Swap\",fields:[{defined:\"Swap\"}]}]}},{name:\"Side\",type:{kind:\"enum\",variants:[{name:\"Bid\"},{name:\"Ask\"}]}},{name:\"SwapLegSwap\",type:{kind:\"enum\",variants:[{name:\"PlaceholderOne\"},{name:\"PlaceholderTwo\"},{name:\"Swap\",fields:[{name:\"swap\",type:{defined:\"Swap\"}}]}]}},{name:\"SwapLegDeeper\",type:{kind:\"enum\",variants:[{name:\"Chain\",fields:[{name:\"swap_legs\",type:{vec:{defined:\"SwapLegSwap\"}}}]},{name:\"Split\",fields:[{name:\"split_legs\",type:{vec:{defined:\"SplitLegDeeper\"}}}]},{name:\"Swap\",fields:[{name:\"swap\",type:{defined:\"Swap\"}}]}]}},{name:\"SwapLeg\",type:{kind:\"enum\",variants:[{name:\"Chain\",fields:[{name:\"swap_legs\",type:{vec:{defined:\"SwapLegDeeper\"}}}]},{name:\"Split\",fields:[{name:\"split_legs\",type:{vec:{defined:\"SplitLeg\"}}}]},{name:\"Swap\",fields:[{name:\"swap\",type:{defined:\"Swap\"}}]}]}},{name:\"Swap\",type:{kind:\"enum\",variants:[{name:\"Saber\"},{name:\"SaberAddDecimalsDeposit\"},{name:\"SaberAddDecimalsWithdraw\"},{name:\"TokenSwap\"},{name:\"Sencha\"},{name:\"Step\"},{name:\"Cropper\"},{name:\"Raydium\"},{name:\"Crema\",fields:[{name:\"a_to_b\",type:\"bool\"}]},{name:\"Lifinity\"},{name:\"Mercurial\"},{name:\"Cykura\"},{name:\"Serum\",fields:[{name:\"side\",type:{defined:\"Side\"}}]},{name:\"MarinadeDeposit\"},{name:\"MarinadeUnstake\"},{name:\"Aldrin\",fields:[{name:\"side\",type:{defined:\"Side\"}}]},{name:\"AldrinV2\",fields:[{name:\"side\",type:{defined:\"Side\"}}]},{name:\"Whirlpool\",fields:[{name:\"a_to_b\",type:\"bool\"}]},{name:\"Invariant\",fields:[{name:\"x_to_y\",type:\"bool\"}]},{name:\"Meteora\"},{name:\"GooseFX\"},{name:\"DeltaFi\",fields:[{name:\"stable\",type:\"bool\"}]},{name:\"Balansol\"},{name:\"MarcoPolo\",fields:[{name:\"x_to_y\",type:\"bool\"}]},{name:\"Dradex\",fields:[{name:\"side\",type:{defined:\"Side\"}}]},{name:\"LifinityV2\"},{name:\"RaydiumClmm\"},{name:\"Openbook\",fields:[{name:\"side\",type:{defined:\"Side\"}}]},{name:\"Phoenix\",fields:[{name:\"side\",type:{defined:\"Side\"}}]}]}},{name:\"SwapAction\",type:{kind:\"enum\",variants:[{name:\"SetupSplit\",fields:[{name:\"percents\",type:\"bytes\"}]},{name:\"NextSplitLeg\"},{name:\"MergeSplit\"},{name:\"Swap\",fields:[{name:\"swap\",type:{defined:\"Swap\"}}]}]}}],events:[{name:\"Swap\",fields:[{name:\"amm\",type:\"publicKey\",index:!1},{name:\"inputMint\",type:\"publicKey\",index:!1},{name:\"inputAmount\",type:\"u64\",index:!1},{name:\"outputMint\",type:\"publicKey\",index:!1},{name:\"outputAmount\",type:\"u64\",index:!1}]},{name:\"Fee\",fields:[{name:\"account\",type:\"publicKey\",index:!1},{name:\"mint\",type:\"publicKey\",index:!1},{name:\"amount\",type:\"u64\",index:!1}]}],errors:[{code:6e3,name:\"EmptyRoute\",msg:\"Empty route\"},{code:6001,name:\"SlippageToleranceExceeded\",msg:\"Slippage tolerance exceeded\"},{code:6002,name:\"InvalidCalculation\",msg:\"Invalid calculation\"},{code:6003,name:\"MissingPlatformFeeAccount\",msg:\"Missing platform fee account\"},{code:6004,name:\"InvalidSlippage\",msg:\"Invalid slippage\"},{code:6005,name:\"NotEnoughPercent\",msg:\"Not enough percent to 100\"},{code:6006,name:\"InAmountsStackIsEmpty\",msg:\"In amounts stack is empty\"},{code:6007,name:\"OutAmountsStackIsEmpty\",msg:\"Out amounts stack is empty\"},{code:6008,name:\"NotEnoughAccountKeys\",msg:\"Not Enough Account keys\"}]},vt=new e(\"So11111111111111111111111111111111111111112\"),bt=new e(\"9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin\"),Bt=new e(\"DESVgJVGajEgKGXhb6XmqDHGz3VjdgP7rEVESBgxmroY\"),It={devnet:\"https://jupiter-devnet.zhen8558.workers.dev/markets?v=3\",\"mainnet-beta\":\"https://cache.jup.ag/markets?v=3\",testnet:\"https://api.jup.ag/api/markets/cache/devnet\"},Lt=\"https://cache.jup.ag/indexed-route-maps-v2\",Ft={devnet:\"https://api.jup.ag/api/tokens/devnet\",testnet:\"https://api.jup.ag/api/markets/devnet\",\"mainnet-beta\":\"https://cache.jup.ag/tokens\"},Dt=5e3,qt=new e(\"675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8\"),xt=new e(\"AMM55ShdkoGRB5jVYPjWziwk8m5MpwyDgsMWHaMSQWH6\"),Et=new e(\"CURVGoZn8zycx6FXwwevgBTB2gVvdbGTEpvMJDbgs2t4\"),Ot=new e(\"DecZY86MU5Gj7kppfUCEmd4LbXXuyZH1yHaP2NTqdiZB\"),Vt=new e(\"CTMAxxk34HjKWxQ3QLZK1HpaLXmBveao3ESePXbiyfzh\"),Ct=new e(\"SCHAtsf8mbjyjiv4LkhLKutTf6JnZAbdJKFkXQNMFHZ\"),Rt=new e(\"EewxydAPCCVuNEyrVN68PuSYdQ7wKn27V9Gjeoi8dy3S\"),Nt=new e(\"CLMM9tUoggJu2wagPkkqs9eFG4BWhVBZWkP1qv3Sp7tR\"),Ut=new e(\"FxYoB1VAx8TfLCwvmworJy16VH89v992qznUvBX5aR8K\"),Kt=new e(\"BUX7s2ef2htTGb2KKoPHWkmzxPj4nTWMWRgs5CSbQxf9\"),Wt=new e(\"MERLuDFBMmsHnsBPZw2sDQZHvXFMwp8EdjudcU2HKky\"),Xt=new e(\"whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc\"),jt=new e(\"HyaB3W9q6XdA5xwpU4XnSZV94htfmbmqJXZcEbRaJutt\"),Qt=new e(\"8NsPwRFYqob3FzYvHYTjFK6WVFJADFN8Hn7yNQKcVNW1\"),zt=new e(\"J4uBbeoWpZE8fH58PM1Fp9n9K6f1aThyeVCyRdJbaXqt\"),Yt=new e(\"cysPXAjehMpVKUapzbMCCnpFxUFFryEWEaLgnb9NrR8\"),Ht=new e(\"DBsMwKfeoUHhxMi9x6wd2AsT12UwUCssjNbUzu1aKgqj\"),_t=new e(\"MarBmsSgKXdrN1egZf5sqe1TMai9K1rChYNDJgjq7aD\"),Jt=new e(\"Dooar9JkhdZ7J3LHN3A7YCuoGRUggXhQaG4kijfLGU2j\"),Gt=new e(\"DjVE6JNiYqPL2QXyCUUh8rNjHrbz9hXHNYt99MQ59qw1\"),$t=new e(\"9W959DqEETiGZocYWCQPaJ6sBmUzgfxXfqGeTEdp3aQP\"),Zt=new e(\"SSwpMgqNDsyV7mAgN9ady4bDVu5ySjmmXejXvy2vLt1\"),en=new e(\"PSwapMdSai8tjrEXcxFeQth87xC4rRsa4VA5mhGhXkP\"),tn=new e(\"SSwapUtytfBdBn1b9NUGG6foMVPtcWgpRU32HToDUZr\"),nn=new e(\"Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB\"),on=new e(\"24Uqj9JCLxUeoC3hGfh5W3s9FM9uCHDS2SG3LYwBpyTi\"),sn=new e(\"GNExJhNUhc9LN2DauuQAUJnXoy6DJ6zey3t9kT9A2PF3\"),an=new e(\"ziSPuDShwunW4xNrCfTnSHTPVT6FZDREtdofpf1BJwe\"),rn=new e(\"7WduLbRfYhTJktjLw5FDEyrqoEv61aTTCuGAetgLjzN5\"),un=new e(\"8CxKnuJeoeQXFwiG6XiGY2akBjvJA5k3bE52BfnuEmNQ\"),cn=new e(\"D3BBjqUdCYuP18fNvvMbPAZ8DpcRi4io2EsYHQawJDag\"),mn=new e(\"dp2waEWSBy5yKmq65ergoU3G6qRLmqa6K7We4rZSKph\"),dn=new e(\"1gE3LGQze8DQ3KD2C4ZUCmRX5g4njhY5yLfYmnmcvJR\"),pn=new e(\"76ygWLcvJLR6nSzRUpiQqqtX4Pabkq4vpaTxwr3mDcXA\"),ln=new e(\"2wT8Yq49kHgDzXuPxZSaeLaH1qbmGXtEyPy64bL7aD3c\"),gn=new e(\"571oqNkJauZ2tccLwf8CUB56hpLPZkop9X1Px4DE9rnQ\"),hn=new e(\"CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK\"),Sn=new e(\"srmqPvymJeFKQ4zGQed1GFppgkRHL9kaELCbyksJtPX\"),kn=new e(\"9tKE7Mbmj4mxDjWatikzGAtkoWosiiZX9y6J4Hfm2R8H\"),fn=new e(\"BE5YRQ6N6LCw7UL3JwzVp317EWa4mzJY6JKDaudcXu7A\"),An=new e(\"JM78XNzeQRmZXDAP4DSq88ZdErbuSXSLE6fkRsVDKSu\"),Mn=new e(\"PhoeNiXZ8ByJGLkxNfZRnkUfjvmuYqLR89jjFHGqdXY\"),yn=[\"StepAscQoEioFxxWGnh2sLBDFp9d8rvKz2Yp39iDpyT\",\"DubwWZNWiNGMMeeQHPnMATNj77YZPZSAz2WVR5WjLJqz\"],wn=Object.freeze({AlreadyInUse:{code:1,name:\"AlreadyInUsed\",msg:\"Account already In Used\"},InsufficientSOL:{code:1,name:\"InsufficientSOL\",msg:\"Insufficient SOL\"},TransactionNotConfirmed:{code:7e3,name:\"TransactionNotConfirmed\",msg:\"Transaction was not confirmed\"},BalancesNotExtractedProperly:{code:7001,name:\"BalancesNotExtractedProperly\",msg:\"Balances cannot be extracted properly\"},...Tt.errors.reduce(((e,t)=>({...e,[t.name]:t})),{})}),Pn=\"development\"===process.env.NODE_ENV,Tn=\"test\"===process.env.NODE_ENV,vn=\"production\"===process.env.NODE_ENV,bn=100,Bn=new O(null,null,{skipPreflight:!1});class In extends H{constructor(e){const t=_(32);super(t.span,e),this.layout=void 0,this.layout=t}getSpan(e,t){return this.layout.getSpan(e,t)}decode(t,n){return new e(this.layout.decode(t,n))}encode(e,t,n){return this.layout.encode(e.toBuffer(),t,n)}}const Ln=e=>new In(e);class Fn extends H{constructor(e=8,t){const n=_(e);super(n.span,t),this.layout=void 0,this.layout=n}getSpan(e,t){return this.layout.getSpan(e,t)}decode(e,t){return new X(this.layout.decode(e,t),10,\"le\")}encode(e,t,n){return this.layout.encode(e.toArrayLike(Buffer,\"le\",this.layout.span),t,n)}}const Dn=e=>new Fn(8,e),qn=e=>new Fn(16,e);function xn(n,i){let o=Buffer.alloc(0);n.forEach((function(e){if(e.length>t)throw new TypeError(\"Max seed length exceeded\");var n;o=Buffer.concat([o,(n=e,Buffer.isBuffer(n)?n:n instanceof Uint8Array?Buffer.from(n.buffer,n.byteOffset,n.byteLength):Buffer.from(n))])})),o=Buffer.concat([o,i.toBuffer(),Buffer.from(\"ProgramDerivedAddress\")]);let s=ee(new Uint8Array(o)),a=new te(s,16).toArray(void 0,32);return new e(a)}const En=J([G(\"version\"),G(\"isInitialized\"),G(\"nonce\"),Ln(\"ammId\"),Ln(\"serumProgramId\"),Ln(\"serumMarket\"),Ln(\"tokenProgramId\"),Ln(\"tokenAAccount\"),Ln(\"tokenBAccount\"),Ln(\"poolMint\"),Ln(\"mintA\"),Ln(\"mintB\")]),On=J([G(\"isInitialized\"),Ln(\"stateOwner\"),Ln(\"feeOwner\"),Dn(\"initialSupply\"),Dn(\"returnFeeNumerator\"),Dn(\"fixedFeeNumerator\"),Dn(\"feeDenominator\"),G(\"curveType\"),_(32,\"curveParameters\")]),Vn=new e(\"3hsU1VgsBgBgz5jWiqdw9RfGU6TpWdCmdah1oi4kF3Tq\"),Cn=(e,t)=>{const n=t.owner,i=En.decode(t.data);return{programId:n,authority:xn([e.toBuffer(),Buffer.from([i.nonce])],n),version:i.version,isInitialized:Boolean(i.isInitialized),nonce:i.nonce,ammId:i.ammId,serumProgramId:i.serumProgramId,tokenProgramId:i.tokenProgramId,tokenAAccount:i.tokenAAccount,tokenBAccount:i.tokenBAccount,serumMarket:i.serumMarket,poolMint:i.poolMint,mintA:i.mintA,mintB:i.mintB}},Rn={Bid:{bid:{}},Ask:{ask:{}}},Nn=e=>({serum:{side:e}}),Un=e=>({crema:{aToB:e}}),Kn=e=>({aldrin:{side:e}}),Wn=e=>({aldrinV2:{side:e}}),Xn=e=>({whirlpool:{aToB:e}}),jn=e=>({invariant:{xToY:e}}),Qn=e=>({dradex:{side:e}}),zn=e=>({marcoPolo:{xToY:e}}),Yn=e=>({openbook:{side:e}}),Hn=e=>({phoenix:{side:e}}),_n=e=>({chain:{swapLegs:e}}),Jn=e=>({split:{splitLegs:e}}),Gn=e=>({swap:{swap:e}}),$n=(e,t)=>({percent:e,swapLeg:t}),Zn=()=>({setupInstructions:[],instructions:[],cleanupInstructions:[],signers:[]});async function ei({connection:e,amount:t,owner:{publicKey:i}}){const o={setupInstructions:[],instructions:[],cleanupInstructions:[],signers:[]},s=ni({walletAddress:i,tokenMintAddress:vt});return null===await e.getAccountInfo(s)&&o.setupInstructions.push(ti(i,s,i,vt)),o.setupInstructions.push(n.transfer({fromPubkey:i,toPubkey:s,lamports:I.toNumber(t)})),o.setupInstructions.push(j.createSyncNativeInstruction(Q,s)),o.cleanupInstructions=[j.createCloseAccountInstruction(Q,s,i,i,[])],{address:s,...o}}function ti(e,t,o,s,a=Q,r=z){return new i({keys:[{pubkey:e,isSigner:!0,isWritable:!0},{pubkey:t,isSigner:!1,isWritable:!0},{pubkey:o,isSigner:!1,isWritable:!1},{pubkey:s,isSigner:!1,isWritable:!1},{pubkey:n.programId,isSigner:!1,isWritable:!1},{pubkey:a,isSigner:!1,isWritable:!1}],programId:r,data:Buffer.alloc(0)})}const ni=({walletAddress:t,tokenMintAddress:n})=>e.findProgramAddressSync([t.toBuffer(),Q.toBuffer(),n.toBuffer()],z)[0],ii=new e(\"JUP4Fb2cqiRUcaTHdrPC8h2gNsA2ETXiPDD33WcGuJB\"),oi=new V(Tt,ii,{}),si={pubkey:ii,isSigner:!1,isWritable:!1};function ai(e,t,n,i,o,s,a,r){return oi.instruction.route(n,o,s,a,r,{accounts:{tokenProgram:Q,userTransferAuthority:e,destinationTokenAccount:t},remainingAccounts:i})}function ri(e,t,n,i){return{swapProgram:Wt,swapState:e.ammId,tokenProgram:Q,poolAuthority:e.authority,userTransferAuthority:i,sourceTokenAccount:t,destinationTokenAccount:n}}const[ui]=K([new Uint8Array(Buffer.from(\"amm authority\".replace(\" \",\" \"),\"utf-8\"))],qt);function ci(e,t,n,i){if(!e.serumMarketKeys)throw new Error(\"RaydiumAmm is missing serumMarketKeys\");return{swapProgram:qt,tokenProgram:Q,ammId:e.ammId,ammAuthority:ui,ammOpenOrders:e.ammOpenOrders,poolCoinTokenAccount:e.poolCoinTokenAccount,poolPcTokenAccount:e.poolPcTokenAccount,serumProgramId:e.serumProgramId,serumMarket:e.serumMarket,serumBids:e.serumMarketKeys.serumBids,serumAsks:e.serumMarketKeys.serumAsks,serumEventQueue:e.serumMarketKeys.serumEventQueue,serumCoinVaultAccount:e.serumMarketKeys.serumCoinVaultAccount,serumPcVaultAccount:e.serumMarketKeys.serumPcVaultAccount,serumVaultSigner:e.serumMarketKeys.serumVaultSigner,userSourceTokenAccount:t,userDestinationTokenAccount:n,userSourceOwner:i}}function mi(e,t,n,i,s,a){const r=W([e.address.toBuffer(),e.decoded.vaultSignerNonce.toArrayLike(Buffer,\"le\",8)],e.programId);return{market:{market:e.address,openOrders:t,requestQueue:e.decoded.requestQueue,eventQueue:e.decoded.eventQueue,bids:e.bidsAddress,asks:e.asksAddress,coinVault:e.decoded.baseVault,pcVault:e.decoded.quoteVault,vaultSigner:r},authority:a,orderPayerTokenAccount:n,coinWallet:i,pcWallet:s,dexProgram:e.programId,tokenProgram:Q,rent:o}}function di(e,t,n,i,o){const s=t.equals(e.state.tokenA.mint)?e.state.tokenB.adminFeeAccount:e.state.tokenA.adminFeeAccount,[a,r]=t.equals(e.state.tokenA.mint)?[e.state.tokenA.reserve,e.state.tokenB.reserve]:[e.state.tokenB.reserve,e.state.tokenA.reserve];return{swapProgram:e.config.swapProgramID,tokenProgram:Q,swap:e.config.swapAccount,swapAuthority:e.config.authority,userAuthority:o,inputUserAccount:n,inputTokenAccount:a,outputUserAccount:i,outputTokenAccount:r,feesTokenAccount:s}}function pi(e,t){const n=[];return n.push(e?{pubkey:e,isSigner:!1,isWritable:!0}:t?{pubkey:t,isSigner:!1,isWritable:!0}:si),n}const li=new X(0);class gi{constructor(e,t){this.numerator=void 0,this.denominator=void 0,this.toString=()=>`${this.numerator.toString()}/${this.denominator.toString()}`,this.numerator=e,this.denominator=t}static fromDecimal(e){return gi.fromFraction(e.toDecimalPlaces(1).mul(10).toNumber(),1e3)}static fromFraction(e,t){const n=\"number\"==typeof e?new X(e.toString()):e,i=\"number\"==typeof t?new X(t.toString()):t;return new gi(n,i)}toDecimal(){return this.denominator.eq(li)?new ie(0):new ie(this.numerator.toString()).div(new ie(this.denominator.toString()))}add(e){const t=this.denominator.gcd(e.denominator),n=this.denominator.div(t).mul(e.denominator),i=n.div(this.denominator),o=n.div(e.denominator),s=this.numerator.mul(i),a=e.numerator.mul(o),r=s.add(a);return new gi(new X(r.toString()),new X(n.toString()))}}const hi=J([Dn(\"tradeFeeNumerator\"),Dn(\"tradeFeeDenominator\"),Dn(\"ownerTradeFeeNumerator\"),Dn(\"ownerTradeFeeDenominator\"),Dn(\"ownerWithdrawFeeNumerator\"),Dn(\"ownerWithdrawFeeDenominator\")],\"fees\"),Si=[_(8,\"padding\"),Ln(\"lpTokenFreezeVault\"),Ln(\"poolMint\"),Ln(\"baseTokenVault\"),Ln(\"baseTokenMint\"),Ln(\"quoteTokenVault\"),Ln(\"quoteTokenMint\"),Ln(\"poolSigner\"),G(\"poolSignerNonce\"),Ln(\"authority\"),Ln(\"initializerAccount\"),Ln(\"feeBaseAccount\"),Ln(\"feeQuoteAccount\"),Ln(\"feePoolTokenAccount\"),hi],ki=J(Si),fi=J([...Si,G(\"curveType\"),Ln(\"curve\")]),Ai=J([_(8,\"padding\"),Dn(\"amp\")]);function Mi(e,t){const n=!!t.owner.equals(Et),i=(n?fi:ki).decode(t.data),o=\"curveType\"in i?{curveType:i.curveType,curve:i.curve}:{};return{isV2:n,address:e,poolMint:i.poolMint,baseTokenVault:i.baseTokenVault,baseTokenMint:i.baseTokenMint,quoteTokenVault:i.quoteTokenVault,quoteTokenMint:i.quoteTokenMint,poolSigner:i.poolSigner,feeBaseAccount:i.feeBaseAccount,feeQuoteAccount:i.feeQuoteAccount,feePoolTokenAccount:i.feePoolTokenAccount,fees:{traderFee:gi.fromFraction(i.fees.tradeFeeNumerator,i.fees.tradeFeeDenominator),ownerFee:gi.fromFraction(i.fees.ownerTradeFeeNumerator,i.fees.ownerTradeFeeDenominator)},...o}}class yi{constructor(e,t,n){if(this.params=void 0,this.id=void 0,this.label=\"Aldrin\",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.poolState=void 0,this.tokenReserveAmounts=void 0,this.calculator=void 0,this.params=n,this.poolState=Mi(e,t),this.id=e.toBase58(),1===this.poolState.curveType){const{amp:e}=this.params;if(!e)throw new Error(\"Amp is required for a stable curve\");this.calculator=new A(I.BigInt(e),new M(I.BigInt(this.poolState.fees.traderFee.numerator.toString()),I.BigInt(this.poolState.fees.traderFee.denominator.toString())),new M(I.BigInt(this.poolState.fees.ownerFee.numerator.toString()),I.BigInt(this.poolState.fees.ownerFee.denominator.toString())))}else this.calculator=new y(new M(I.BigInt(this.poolState.fees.traderFee.numerator.toString()),I.BigInt(this.poolState.fees.traderFee.denominator.toString())),new M(I.BigInt(this.poolState.fees.ownerFee.numerator.toString()),I.BigInt(this.poolState.fees.ownerFee.denominator.toString())))}static decodeStableCurveAmp(e){const{amp:t}=Ai.decode(e.data);return 2*t.toNumber()}getAccountsForUpdate(){return[this.poolState.quoteTokenVault,this.poolState.baseTokenVault]}update(e){const t=yt(e,this.getAccountsForUpdate());this.tokenReserveAmounts=wt(t)}getQuote({sourceMint:e,amount:t}){if(!this.tokenReserveAmounts)throw new Error(\"Missing tokenReserveAmounts\");let n=new ie(this.poolState.fees.traderFee.numerator.toString()).div(this.poolState.fees.traderFee.denominator.toString()).add(new ie(this.poolState.fees.ownerFee.numerator.toString()).div(this.poolState.fees.ownerFee.denominator.toString()));const i=this.poolState.baseTokenMint.equals(e)?0:1;let o=this.calculator.exchange(this.tokenReserveAmounts,t,i);return{notEnoughLiquidity:!1,inAmount:t,outAmount:o.expectedOutputAmount,feeAmount:o.fees,feeMint:e.toBase58(),feePct:n.toNumber(),priceImpactPct:o.priceImpact.toNumber()}}getSwapLegAndAccounts(e){if(this.poolState.isV2){if(!this.poolState.curve)throw new Error(\"Unable to fetch curve account.\");return function({poolState:e,sourceMint:t,userSourceTokenAccount:n,userDestinationTokenAccount:i,curve:o,userTransferAuthority:s}){const[a,r,u]=t.equals(e.baseTokenMint)?[Rn.Ask,n,i]:[Rn.Bid,i,n];return[Gn(Wn(a)),oi.instruction.aldrinV2Swap({accounts:{swapProgram:Et,pool:e.address,poolSigner:e.poolSigner,poolMint:e.poolMint,baseTokenVault:e.baseTokenVault,quoteTokenVault:e.quoteTokenVault,feePoolTokenAccount:e.feePoolTokenAccount,walletAuthority:s,userBaseTokenAccount:r,userQuoteTokenAccount:u,curve:o,tokenProgram:Q}}).keys]}({poolState:this.poolState,curve:this.poolState.curve,...e})}return function({poolState:e,sourceMint:t,userSourceTokenAccount:n,userDestinationTokenAccount:i,userTransferAuthority:o}){const[s,a,r]=t.equals(e.baseTokenMint)?[Rn.Ask,n,i]:[Rn.Bid,i,n];return[Gn(Kn(s)),oi.instruction.aldrinSwap({accounts:{swapProgram:xt,pool:e.address,poolSigner:e.poolSigner,poolMint:e.poolMint,baseTokenVault:e.baseTokenVault,quoteTokenVault:e.quoteTokenVault,feePoolTokenAccount:e.feePoolTokenAccount,walletAuthority:o,userBaseTokenAccount:a,userQuoteTokenAccount:r,tokenProgram:Q}}).keys]}({poolState:this.poolState,...e})}get reserveTokenMints(){return[this.poolState.quoteTokenMint,this.poolState.baseTokenMint]}}yi.accountInfoToAldrinPoolState=Mi;const wi={version:\"0.1.0\",name:\"balancer_amm\",instructions:[{name:\"swap\",accounts:[{name:\"authority\",isMut:!0,isSigner:!0},{name:\"pool\",isMut:!0,isSigner:!1},{name:\"taxMan\",isMut:!0,isSigner:!1},{name:\"bidMint\",isMut:!1,isSigner:!1},{name:\"treasurer\",isMut:!1,isSigner:!1},{name:\"srcTreasury\",isMut:!0,isSigner:!1},{name:\"srcAssociatedTokenAccount\",isMut:!0,isSigner:!1},{name:\"askMint\",isMut:!1,isSigner:!1},{name:\"dstTreasury\",isMut:!0,isSigner:!1},{name:\"dstAssociatedTokenAccount\",isMut:!0,isSigner:!1},{name:\"dstTokenAccountTaxman\",isMut:!0,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"associatedTokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"bidAmount\",type:\"u64\"},{name:\"limit\",type:\"u64\"}],returns:\"u64\"}],accounts:[{name:\"pool\",type:{kind:\"struct\",fields:[{name:\"authority\",type:\"publicKey\"},{name:\"fee\",type:\"u64\"},{name:\"taxFee\",type:\"u64\"},{name:\"state\",type:{defined:\"PoolState\"}},{name:\"mintLpt\",type:\"publicKey\"},{name:\"taxMan\",type:\"publicKey\"},{name:\"mints\",type:{vec:\"publicKey\"}},{name:\"actions\",type:{vec:{defined:\"MintActionState\"}}},{name:\"treasuries\",type:{vec:\"publicKey\"}},{name:\"reserves\",type:{vec:\"u64\"}},{name:\"weights\",type:{vec:\"u64\"}}]}}],types:[{name:\"PoolState\",type:{kind:\"enum\",variants:[{name:\"Uninitialized\"},{name:\"Initialized\"},{name:\"Frozen\"},{name:\"Deleted\"}]}},{name:\"MintActionState\",type:{kind:\"enum\",variants:[{name:\"Active\"},{name:\"BidOnly\"},{name:\"AskOnly\"},{name:\"Paused\"}]}}],errors:[]},Pi=(e,t)=>{const n=e.map((e=>e.toNumber()/1e9));return t.toNumber()/1e9/n.reduce(((e,t)=>e+t),0)},Ti=(e,t)=>{const{balanceIn:n,balanceOut:i,weightIn:o,weightOut:s,swapFee:a}=t,r=Number(n.toString()),u=Number(i.toString()),c=o,m=s,d=Number(a.toString())/1e9;return-r*m/(u*(-1+d)*(r/(e+r-e*d))**((c+m)/m)*c)},vi=new C(wi);class bi{constructor(e,t){this.address=void 0,this.label=\"Balansol\",this.id=void 0,this.shouldPrefetch=!0,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.poolData=void 0,this.address=e,this.id=e.toBase58(),this.poolData=vi.decode(\"pool\",t.data)}getAccountsForUpdate(){return[new e(this.id)]}update(e){let[t]=yt(e,this.getAccountsForUpdate());const n=vi.decode(\"pool\",t.data);this.poolData=n}getQuote({sourceMint:e,destinationMint:t,amount:n}){var i,o;if(!this.poolData)throw new Error(`Invalid pool data ${this.address.toBase58()}`);if(!this.poolData.state.initialized)throw new Error(`Pool is not initialized ${this.address.toBase58()}`);const s=this.poolData.mints.map((e=>e.toBase58())),a=s.indexOf(e.toBase58()),r=s.indexOf(t.toBase58());if(null===(i=this.poolData.actions[a])||void 0===i||!i.active)throw new Error(`Invalid bid mint state ${this.address.toBase58()}`);if(null===(o=this.poolData.actions[r])||void 0===o||!o.active)throw new Error(`Invalid ask mint state ${this.address.toBase58()}`);const u=Pi(this.poolData.weights,this.poolData.weights[a]),c=Pi(this.poolData.weights,this.poolData.weights[r]),m=((e,t,n,i,o,s)=>{const a=Number(t.toString()),r=Number(n.toString());return a*(1-(r/(r+e))**(o/i))*(1-Number(s.toString())/1e9)})(Number(n.toString()),this.poolData.reserves[r],this.poolData.reserves[a],c,u,this.poolData.fee.add(this.poolData.taxFee)),d=((e,t)=>{const n=Ti(0,t),i=Ti(e,t);return ie.equals(t.sourceMint))),a=this.poolData.mints.findIndex((e=>e.equals(t.destinationMint))),[r]=e.findProgramAddressSync([Buffer.from(\"treasurer\"),this.address.toBuffer()],cn),u=ni({tokenMintAddress:t.destinationMint,walletAddress:this.poolData.taxMan});return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:i,userTransferAuthority:s,sourceMint:a,destinationMint:r}){return[Gn({balansol:{}}),oi.instruction.balansolSwap({accounts:{swapProgram:cn,authority:s,pool:e.pool,taxMan:e.taxMan,bidMint:a,treasurer:e.treasurer,srcTreasury:e.srcTreasury,srcAssociatedTokenAccount:t,askMint:r,dstTreasury:e.dstTreasury,dstAssociatedTokenAccount:i,dstTokenAccountTaxman:e.dstTokenAccountTaxman,systemProgram:n.programId,tokenProgram:Q,associatedTokenProgram:z,rent:o},remainingAccounts:e.referrer?[{pubkey:e.referrer,isSigner:!1,isWritable:!0}]:[si]}).keys]}({...t,additionalArgs:{pool:this.address,taxMan:this.poolData.taxMan,dstTokenAccountTaxman:u,treasurer:r,srcTreasury:this.poolData.treasuries[s],dstTreasury:this.poolData.treasuries[a],referrer:null===(i=t.quoteMintToReferrer)||void 0===i?void 0:i.get(t.destinationMint.toBase58())}})}get reserveTokenMints(){return this.poolData.mints}}bi.getIDL=()=>wi;const Bi=new R(ce);class Ii{constructor(e,t,n){this.address=void 0,this.id=void 0,this.label=\"Crema\",this.shouldPrefetch=!0,this.exactOutputSupported=!1,this.hasDynamicAccounts=!0,this.clmmpoolData=void 0,this.reserveTokenDecimals=void 0,this.tickArrayMapPubkey=void 0,this.feeRate=void 0,this.tickArrayMap=void 0,this.tickArrayPubkeys=[],this.tickArrays=[],this.arrayStartIndex=void 0,this.swapTicks=void 0,this.address=e,this.id=e.toBase58(),this.clmmpoolData=Bi.accounts.decode(\"clmmpool\",t.data),this.feeRate=this.clmmpoolData.feeRate,this.tickArrayMapPubkey=oe.getTickArrayMapPDA(Nt,e).publicKey,this.reserveTokenDecimals=[n.decimalA,n.decimalB],this.arrayStartIndex=0}getAccountsForUpdate(){return[this.address,this.tickArrayMapPubkey,...this.tickArrayPubkeys]}update(e){const t=e.get(this.address.toBase58());if(!t)throw new Error(`Missing poolData ${this.address.toBase58()}`);this.clmmpoolData=Bi.accounts.decode(\"clmmpool\",t.data),this.feeRate=this.clmmpoolData.feeRate;const n=e.get(this.tickArrayMapPubkey.toBase58());if(!n)throw new Error(`Missing tickArrayMap ${this.tickArrayMapPubkey.toBase58()}`);const i=Bi.accounts.decode(\"tickArrayMap\",n.data);this.tickArrayPubkeys=this.getTickArrayPubkeys(this.address,i),this.tickArrayMap=i;const o=se.getArrayIndex(this.clmmpoolData.currentTickIndex,this.clmmpoolData.tickSpacing);let s=!1;const a=[];for(let t=0;t=o&&(s=!0,this.arrayStartIndex=t),a.push({address:this.tickArrayPubkeys[t],data:e})}}this.tickArrays=a;const r={aToB:[],bToA:[]};for(let e=this.arrayStartIndex;e>this.arrayStartIndex-3;e--){let t=this.tickArrays[e];t&&r.aToB.push(t)}for(let e=this.arrayStartIndex;e{for(let n=0;n=0;e--)i.data&&i.data.ticks[e].isInitialized&&this.swapTicks.aToB.push(i.data.ticks[e]);else for(let e=0;e>e&1)>0)}const i=[];for(let t=0;t{u.push({pubkey:e,isSigner:!1,isWritable:!0})})),u.push(si),[Gn(Un(s)),oi.instruction.cremaSwap({accounts:{swapProgram:Nt,clmmConfig:e.clmmConfig,clmmpool:e.clmmpool,tokenA:e.tokenA,tokenB:e.tokenB,accountA:a,accountB:r,tokenAVault:e.tokenAVault,tokenBVault:e.tokenBVault,tickArrayMap:e.tickArrayMap,owner:i,partner:Ut,partnerAtaA:ni({walletAddress:Ut,tokenMintAddress:e.tokenA}),partnerAtaB:ni({walletAddress:Ut,tokenMintAddress:e.tokenB}),tokenProgram:Q},remainingAccounts:u}).keys]}({additionalArgs:{clmmConfig:i,clmmpool:this.address,tokenA:this.clmmpoolData.tokenA,tokenB:this.clmmpoolData.tokenB,tokenAVault:this.clmmpoolData.tokenAVault,tokenBVault:this.clmmpoolData.tokenBVault,tickArrayMap:this.tickArrayMapPubkey,remainingAccounts:s.swapTickArrays},...e})}get reserveTokenMints(){return[this.clmmpoolData.tokenA,this.clmmpoolData.tokenB]}}class Li{static async getStateFromStateAccount(e){const t=await e.getAccountInfo(Vn);if(!t)throw new Error(\"State account not found\");return(e=>{const t=On.decode(e.data);return{isInitialized:Boolean(t.isInitialized),stateOwner:t.stateOwner,feeOwner:t.feeOwner,initialSupply:t.initialSupply,returnFeeNumerator:t.returnFeeNumerator.toNumber(),fixedFeeNumerator:t.fixedFeeNumerator.toNumber(),feeDenominator:t.feeDenominator.toNumber(),curveType:t.curveType,curveParameters:t.curveParameters}})(t)}constructor(t,n,i){this.id=void 0,this.label=\"Cropper\",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.poolState=void 0,this.tokenReserveAmounts=void 0,this.calculator=void 0,this.feePct=void 0,this.params=void 0,this.id=t.toBase58(),this.poolState=Cn(t,n),this.params={...i,tokenAFeeAccount:new e(i.tokenAFeeAccount),tokenBFeeAccount:new e(i.tokenBFeeAccount)},this.feePct=new ie(this.params.fixedFeeNumerator).add(new ie(this.params.returnFeeNumerator)).div(this.params.feeDenominator),this.calculator=new y(new M(I.BigInt(this.params.fixedFeeNumerator),I.BigInt(this.params.feeDenominator)),new M(I.BigInt(this.params.returnFeeNumerator),I.BigInt(this.params.feeDenominator)))}getAccountsForUpdate(){return[this.poolState.tokenAAccount,this.poolState.tokenBAccount]}update(e){const t=yt(e,this.getAccountsForUpdate());this.tokenReserveAmounts=wt(t)}getQuote({sourceMint:e,amount:t}){if(!this.tokenReserveAmounts)throw new Error(\"Missing tokenReserveAmounts\");const n=this.poolState.mintA.equals(e)?1:0,i=this.calculator.exchange(this.tokenReserveAmounts,t,n);return{notEnoughLiquidity:!1,inAmount:t,outAmount:i.expectedOutputAmount,feeAmount:i.fees,feeMint:e.toBase58(),feePct:this.feePct.toNumber(),priceImpactPct:i.priceImpact.toNumber()}}getSwapLegAndAccounts(e){const t=e.sourceMint.equals(this.poolState.mintA)?this.params.tokenAFeeAccount:this.params.tokenBFeeAccount;return function({poolState:e,feeAccount:t,sourceMint:n,userSourceTokenAccount:i,userDestinationTokenAccount:o,userTransferAuthority:s}){const[a,r]=n.equals(e.mintA)?[e.tokenAAccount,e.tokenBAccount]:[e.tokenBAccount,e.tokenAAccount];return[Gn({cropper:{}}),oi.instruction.cropperSwap({accounts:{tokenSwapProgram:e.programId,tokenProgram:Q,swap:e.ammId,swapState:Vn,authority:e.authority,userTransferAuthority:s,source:i,swapSource:a,swapDestination:r,destination:o,poolMint:e.poolMint,poolFee:t}}).keys]}({poolState:this.poolState,feeAccount:t,...e})}get reserveTokenMints(){return[this.poolState.mintA,this.poolState.mintB]}}Li.decodePoolState=Cn;class Fi{constructor(e,t){this.program=void 0,this.pool=void 0,this.bitmapCache=void 0,this.tickCache=void 0,this.accountsToFetch={bitmaps:[],ticks:[]},this.program=e,this.pool=t,this.bitmapCache=new Map,this.tickCache=new Map}async eagerLoadCache(e,t){const n=I.toNumber(I.divide(I.BigInt(e),I.BigInt(t))),{wordPos:i}=me(n);try{const e=[],{wordPos:n}=me(Math.floor(de.MIN_TICK/t)),{wordPos:s}=me(Math.floor(de.MAX_TICK/t)),a=Math.max(i-10,n),r=Math.min(i+10,s);for(let t=a;t!n.programId.equals(e)))}getAccountsForUpdate(){return[this.address,...this.pythAddresses]}getPriceData(e,t){const{id:n}=this,i=e.get(t.toBase58())||Ei[n];if(!i)throw new Error(`Missing pyth account info for ${t.toBase58()}`);return\"data\"in i?be(i.data):i}update(e){const t=e.get(this.address.toBase58());if(!t)throw new Error(`Missing ${this.address.toBase58()}`);this.swapInfo=Oi.coder.accounts.decode(\"SwapInfo\",t.data);try{const t=this.getPriceData(e,this.swapInfo.pythPriceBase),n=this.getPriceData(e,this.swapInfo.pythPriceQuote);if(t.price&&n.price){const e=new Be(t.price).dividedBy(new Be(n.price)),i=new Be(t.price+t.confidence).dividedBy(new Be(n.price-n.confidence)),o=new Be(t.price-t.confidence).dividedBy(new Be(n.price+n.confidence));this.prices={marketPrice:e,highPrice:i,lowPrice:o}}else this.prices=void 0}catch(e){this.prices=void 0}}getQuote({destinationMint:e,amount:t}){if(!this.prices)throw new Error(\"Missing price data from pyth\");const{swapInfo:n}=this,{amountIn:i,amountOut:o,priceImpact:s}=Te(n,e.equals(n.mintQuote)?{sellBase:{}}:{sellQuote:{}},new Be(t.toString()),this.prices.marketPrice,this.prices.highPrice,this.prices.lowPrice),a=o.multipliedBy(n.swapConfig.tradeFeeNumerator.toString()).dividedBy(n.swapConfig.tradeFeeDenominator.toString()).decimalPlaces(0),r=o.minus(a);return{notEnoughLiquidity:!1,inAmount:I.BigInt(i),outAmount:I.BigInt(r),feeAmount:I.BigInt(a),feeMint:e.toBase58(),feePct:this.feePct,priceImpactPct:Number(s)}}getSwapLegAndAccounts(e){var t;if(!this.prices)throw new Error(\"Missing price data from pyth\");const{swapSourceToken:n,swapDestinationToken:i,adminDestinationToken:o}=this.swapInfo.mintBase.equals(e.sourceMint)?{swapSourceToken:this.swapInfo.tokenBase,swapDestinationToken:this.swapInfo.tokenQuote,adminDestinationToken:this.swapInfo.adminFeeTokenQuote}:{swapSourceToken:this.swapInfo.tokenQuote,swapDestinationToken:this.swapInfo.tokenBase,adminDestinationToken:this.swapInfo.adminFeeTokenBase};return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i}){return[Gn((o=e.stable,{deltaFi:{stable:o}})),oi.instruction.deltafiSwap({accounts:{swapProgram:sn,marketConfig:e.marketConfig,swapInfo:e.swapInfo,userSourceToken:t,userDestinationToken:n,swapSourceToken:e.swapSourceToken,swapDestinationToken:e.swapDestinationToken,deltafiUser:an,adminDestinationToken:e.adminDestinationToken,pythPriceBase:e.pythPriceBase,pythPriceQuote:e.pythPriceQuote,userAuthority:i,tokenProgram:Q},remainingAccounts:e.referrer?[{pubkey:e.referrer,isSigner:!1,isWritable:!0}]:[si]}).keys];var o}({additionalArgs:{stable:!!this.swapInfo.swapType.stableSwap,marketConfig:this.swapInfo.configKey,swapInfo:this.address,swapSourceToken:n,swapDestinationToken:i,adminDestinationToken:o,pythPriceBase:this.swapInfo.pythPriceBase,pythPriceQuote:this.swapInfo.pythPriceQuote,referrer:null===(t=e.quoteMintToReferrer)||void 0===t?void 0:t.get(e.destinationMint.toBase58())},...e})}get reserveTokenMints(){return[this.swapInfo.mintQuote,this.swapInfo.mintBase]}}const Ci=e=>X.fromBuffer(e.data.slice(64,72)),Ri=e=>X.fromBuffer(e.data.slice(36,44));function Ni(e){const t=e.readBigUInt64LE();return Number(t)}class Ui{constructor(e,t){this.address=void 0,this.id=void 0,this.label=\"GooseFX\",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!0,this.pairLayout=void 0,this.quoter=void 0,this.gooseFxAccounts=void 0,this.fixedAccounts=void 0,this.oracleAccounts=[],this.quoteParams=void 0,this.isQuoteInvalid=!0,this.slot=void 0,this.address=e,this.id=e.toBase58(),this.pairLayout=Ie.decode(t.data);const[n,i]=this.pairLayout.mints,o=new Le;this.quoter=o.getSyncQuoter(n,i),this.gooseFxAccounts=this.quoter.getAccounts();const{pairAddress:a,sslIn:r,sslOut:u,liabilityVaultIn:c,liabilityVaultOut:m,swappedLiabilityVaultIn:d,swappedLiabilityVaultOut:p}=this.gooseFxAccounts;this.fixedAccounts=[s,a,r,u,c,m,d,p],this.updateOracles()}updateOracles(){const e=Number(this.pairLayout.nOracle.toString()),t=this.pairLayout.oracles.slice(0,e).reduce(((e,t)=>{const n=Number(t.n);for(const i of t.elements.slice(0,n))e.push(i.address);return e}),[]);this.oracleAccounts=t}getAccountsForUpdate(){return[...this.fixedAccounts,...this.oracleAccounts]}isSuspended(e){if(this.quoteParams){let t=Boolean(this.quoteParams.suspended);if(void 0!==e)for(const n of this.quoteParams.publishedSlots)t||=n+this.quoteParams.maxDelay<=e;return t}return!0}update(e){var t;const[n,i,o,s,a,r,u,c]=yt(e,this.fixedAccounts);if(!(i&&o&&s&&a&&r&&u&&c))throw new Error(\"Missing account data\");const m=De.OracleRegistry;this.pairLayout=Ie.decode(i.data);const{oracles:d,nOracle:p,maxDelay:l}=this.pairLayout,g=Number(p.toString()),h=new m;this.updateOracles();let S=[];for(const t of d.slice(0,g)){const n=Number(t.n);for(const i of t.elements.slice(0,n)){const t=e.get(i.address.toBase58());if(!t)return void(this.isQuoteInvalid=!0);h.add_oracle(i.address.toBuffer(),t.data),S.push(BigInt(be(t.data).aggregate.publishSlot))}}this.slot=BigInt(Ni(n.data)),this.isQuoteInvalid&&(this.isQuoteInvalid=!1),null===(t=this.quoteParams)||void 0===t||t.registry.free(),this.quoteParams={liabilityIn:BigInt(Ci(a).toString()),liabilityOut:BigInt(Ci(r).toString()),pairData:i.data,sslInData:o.data,sslOutData:s.data,swappedLiabilityIn:BigInt(Ci(u).toString()),swappedLiabilityOut:BigInt(Ci(c).toString()),registry:h,suspended:new Fe(o).isSuspended()||new Fe(s).isSuspended(),maxDelay:l,publishedSlots:S}}getQuote({sourceMint:e,amount:t}){if(!this.quoteParams||this.isQuoteInvalid)throw new Error(\"Missing quote data\");if(this.isSuspended(this.slot))throw new Error(\"Quote suspended\");const{quoteParams:n}=this,i=De.swap;let o;const s=e.equals(this.pairLayout.mints[0]);o=s?i(n.sslInData.slice(),n.sslOutData.slice(),n.pairData.slice(),n.liabilityIn,n.liabilityOut,n.swappedLiabilityIn,n.swappedLiabilityOut,n.registry,BigInt(t.toString())):i(n.sslOutData.slice(),n.sslInData.slice(),n.pairData.slice(),n.liabilityOut,n.liabilityIn,n.swappedLiabilityOut,n.swappedLiabilityIn,n.registry,BigInt(t.toString()));const a=this.pairLayout.feeRates[s?0:1],r={notEnoughLiquidity:!1,inAmount:I.BigInt(o.amount_in.toString()),outAmount:I.BigInt(o.amount_out.toString()),feeAmount:I.BigInt(o.fee_paid.toString()),feeMint:e.toBase58(),feePct:a/1e4,priceImpactPct:o.price_impact};return o.free(),r}getSwapLegAndAccounts(e){var t;if(!this.quoteParams)throw new Error(\"Missing quote data\");const n=e.sourceMint.equals(this.pairLayout.mints[0]),{gooseFxAccounts:i}=this,[o,s,a,r,u,c]=n?[i.sslIn,i.liabilityVaultIn,i.swappedLiabilityVaultIn,i.sslOut,i.liabilityVaultOut,i.swappedLiabilityVaultOut]:[i.sslOut,i.liabilityVaultOut,i.swappedLiabilityVaultOut,i.sslIn,i.liabilityVaultIn,i.swappedLiabilityVaultIn];return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i}){const o=[];return o.push(e.referrer?{pubkey:e.referrer,isSigner:!1,isWritable:!0}:si),e.oracles.forEach((e=>{o.push({pubkey:e,isSigner:!1,isWritable:!1})})),o.push(si),[Gn({gooseFx:{}}),oi.instruction.goosefxSwap({accounts:{swapProgram:rn,controller:un,pair:e.pair,sslIn:e.sslIn,sslOut:e.sslOut,liabilityVaultIn:e.liabilityVaultIn,swappedLiabilityVaultIn:e.swappedLiabilityVaultIn,liabilityVaultOut:e.liabilityVaultOut,swappedLiabilityVaultOut:e.swappedLiabilityVaultOut,userInAta:t,userOutAta:n,feeCollectorAta:e.feeCollectorAta,userWallet:i,feeCollector:e.feeCollector,tokenProgram:Q},remainingAccounts:o}).keys]}({additionalArgs:{pair:this.gooseFxAccounts.pairAddress,sslIn:o,sslOut:r,liabilityVaultIn:s,swappedLiabilityVaultIn:a,liabilityVaultOut:u,swappedLiabilityVaultOut:c,feeCollectorAta:ni({walletAddress:this.pairLayout.feeCollector,tokenMintAddress:e.sourceMint}),feeCollector:this.pairLayout.feeCollector,oracles:this.oracleAccounts,referrer:null===(t=e.quoteMintToReferrer)||void 0===t?void 0:t.get(e.sourceMint.toBase58())},...e})}get reserveTokenMints(){return this.pairLayout.mints}}const Ki=new V(Ue,jt,Bn);class Wi{static parsePoolStructure(e){return Ki.coder.accounts.decode(\"pool\",e.data)}static parseTickmap(e){return Ki.coder.accounts.decode(\"tickmap\",e.data)}static parseTick(e){return{...Ki.coder.accounts.decode(\"tick\",e.data)}}static getQuote(e,t,n,i,o,s){const{currentTickIndex:a,fee:r,tickSpacing:u,tokenX:c,liquidity:m,sqrtPrice:d}=e,p={currentTickIndex:a,tickSpacing:u,liquidity:m,fee:r,sqrtPrice:d},l={xToY:i.equals(c),byAmountIn:s===Mt.ExactIn,swapAmount:new ne(o.toString()),priceLimit:i.equals(c)?xe(Ee):xe(Oe),slippage:Ve(0),ticks:t,tickmap:n,pool:p};return Ce(l)}static getTickIndexToTickPubkeyHash(e,t,n){if(!n){const{tickAddress:n}=this.getTickAddress(e,t.currentTickIndex),i=new Map;return i.set(t.currentTickIndex,n),i}const i=Re(n.bitmap,t.currentTickIndex,t.tickSpacing,Ne,Infinity,\"down\"),o=Re(n.bitmap,t.currentTickIndex,t.tickSpacing,Ne,Infinity,\"up\");return i.concat([t.currentTickIndex]).concat(o).reduce(((t,n)=>{const{tickAddress:i}=this.getTickAddress(e,n);return t.set(n,i),t}),new Map)}static getTickAddress(t,n){const i=Buffer.alloc(4);i.writeInt32LE(n);const[o,s]=e.findProgramAddressSync([Buffer.from(U.bytes.utf8.encode(\"tickv1\")),t.toBuffer(),i],Ki.programId);return{tickAddress:o,tickBump:s}}}class Xi{constructor(e,t){this.address=void 0,this.id=void 0,this.label=\"Invariant\",this.shouldPrefetch=!0,this.exactOutputSupported=!1,this.hasDynamicAccounts=!0,this.poolStructure=void 0,this.tickmap=void 0,this.tickPkToTickIndexHash=void 0,this.ticks=new Map,this.feePct=void 0,this.address=e,this.id=e.toBase58(),this.poolStructure=Wi.parsePoolStructure(t),this.tickPkToTickIndexHash=Wi.getTickIndexToTickPubkeyHash(this.address,this.poolStructure,this.tickmap),this.feePct=new ie(this.poolStructure.fee.v.toString()).div(Ke.toString()).toNumber()}getAccountsForUpdate(){const e=this.tickPkToTickIndexHash.values();return[this.address,this.poolStructure.tickmap,...e]}update(e){const t=e.get(this.address.toBase58());if(!t)throw new Error(`Missing invariant pool data ${this.address.toBase58()}`);this.poolStructure=Wi.parsePoolStructure(t);const n=e.get(this.poolStructure.tickmap.toBase58());n&&(this.tickmap=Wi.parseTickmap(n)),this.tickPkToTickIndexHash=Wi.getTickIndexToTickPubkeyHash(this.address,this.poolStructure,this.tickmap),this.ticks.clear();for(const[t,n]of this.tickPkToTickIndexHash){const i=e.get(n.toBase58());if(!i)continue;const o=Wi.parseTick(i);this.ticks.set(t,o)}}getQuote({sourceMint:e,amount:t,swapMode:n}){if(!this.tickmap)throw new Error(\"Missing tickmap\");const i=Wi.getQuote(this.poolStructure,this.ticks,this.tickmap,e,t,n),o=new ie(i.priceImpact.toString()).div(Ke.toString()).toNumber();if(0!==i.status)throw new Error(`Invariant simulation failed: ${this.address}`);return{notEnoughLiquidity:!1,inAmount:I.BigInt(i.accumulatedAmountIn.toString()),outAmount:I.BigInt(i.accumulatedAmountOut.toString()),feeAmount:I.BigInt(i.accumulatedFee.toString()),feeMint:e.toBase58(),feePct:this.feePct,priceImpactPct:o}}getSwapLegAndAccounts(e){var t;if(!this.tickmap)throw new Error(\"Missing tickmap\");const n=Wi.getQuote(this.poolStructure,this.ticks,this.tickmap,e.sourceMint,e.amount,e.swapMode),i={};this.tickPkToTickIndexHash.forEach(((e,t)=>{i[t]=e}));const o=n.crossedTicks.concat(this.poolStructure.currentTickIndex).map((e=>{const t=i[e];if(!t)throw new Error(\"Missing tick account.\");return t})),s=e.sourceMint.equals(this.poolStructure.tokenX);return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i}){const[o,s]=e.xToY?[t,n]:[n,t],a=e.referrer?[{pubkey:e.referrer,isSigner:!1,isWritable:!0}]:[];return e.crossedTickAddresses.forEach((e=>{a.push({pubkey:e,isSigner:!1,isWritable:!0})})),a.push(si),[Gn(jn(e.xToY)),oi.instruction.invariantSwap({accounts:{swapProgram:jt,tokenProgram:Q,owner:i,state:Qt,pool:e.pool,tickmap:e.tickmap,accountX:o,accountY:s,reserveX:e.reserveX,reserveY:e.reserveY,programAuthority:zt},remainingAccounts:a}).keys]}({...e,additionalArgs:{xToY:s,pool:this.address,tickmap:this.poolStructure.tickmap,reserveX:this.poolStructure.tokenXReserve,reserveY:this.poolStructure.tokenYReserve,crossedTickAddresses:o,referrer:null===(t=e.quoteMintToReferrer)||void 0===t?void 0:t.get(e.sourceMint.toBase58())}})}get reserveTokenMints(){return[this.poolStructure.tokenX,this.poolStructure.tokenY]}}class ji{constructor(e,t){var n;this.ammAccountInfo=void 0,this.id=void 0,this.label=\"Lifinity\",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.swapState=void 0,this.poolInfo=void 0,this.ammData=void 0,this.slot=void 0,this.ammAccountInfo=t,this.id=e.toBase58(),this.swapState=((e,t)=>{const n=t.owner,i=We.decode(t.data),[o]=K([e.toBuffer()],n);return{programId:n,authority:o,amm:e,tokenAMint:i.tokenAMint,tokenBMint:i.tokenBMint,poolMint:i.poolMint,feeAccount:i.poolFeeAccount,pythAccount:i.pythAccount,pythPcAccount:i.pythPcAccount,configAccount:i.configAccount,poolCoinTokenAccount:i.tokenAAccount,poolCoinMint:i.tokenAMint,poolPcTokenAccount:i.tokenBAccount,poolPcMint:i.tokenBMint}})(e,t),this.poolInfo={amm:(n=this.swapState).amm.toBase58(),configAccount:n.configAccount.toBase58(),feeAccount:n.feeAccount.toBase58(),pythAccount:n.pythAccount.toBase58(),pythPcAccount:n.pythPcAccount.toBase58(),poolCoinMint:n.poolCoinMint.toBase58(),poolCoinTokenAccount:n.poolCoinTokenAccount.toBase58(),poolMint:n.poolMint.toBase58(),poolPcTokenAccount:n.poolPcTokenAccount.toBase58(),poolPcMint:n.poolPcMint.toBase58(),poolCoinDecimal:0,poolPcDecimal:0,poolMintDecimal:0,pythBaseDecimal:0}}getAccountsForUpdate(){return[this.swapState.poolCoinTokenAccount,this.swapState.poolPcTokenAccount,this.swapState.configAccount,this.swapState.pythAccount,this.swapState.pythPcAccount,s]}update(e){const t=[];this.getAccountsForUpdate().forEach(((n,i)=>{const o=e.get(n.toBase58());o&&t.push({publicKey:n,account:o})})),this.ammData=Xe([{publicKey:this.swapState.amm,account:this.ammAccountInfo},...t],this.poolInfo),this.slot=Ni(t[t.length-1].account.data)}getQuote({sourceMint:e,amount:t}){if(!this.ammData||!this.slot)throw new Error(\"Accounts not loaded, missing ammData\");if(this.isTradeFrozen)throw new Error(\"Trade is frozen\");const n=this.swapState.poolCoinMint.equals(e)?je.AtoB:je.BtoA;if(!this.ammData.pyth.status.equals(1)||this.ammData.pythPc&&!this.ammData.pythPc.status.equals(1))throw new Error(\"Pyth accounts are outdated\");const i=new ie(t.toString()),o=Qe(i,this.slot,this.ammData.amm,this.ammData.fees,this.ammData.coinBalance,this.ammData.pcBalance,this.ammData.config,this.ammData.pyth,this.ammData.pythPc,n);return{notEnoughLiquidity:!1,inAmount:t,outAmount:I.BigInt(o.amountSwapped.toString()),feeAmount:I.BigInt(o.fee.ceil().toString()),feeMint:e.toBase58(),feePct:o.feePercent.toNumber(),priceImpactPct:o.priceImpact.toNumber()}}getSwapLegAndAccounts(e){return function({swapState:e,sourceMint:t,userSourceTokenAccount:n,userDestinationTokenAccount:i,userTransferAuthority:o}){const[s,a]=t.equals(e.tokenAMint)?[e.poolCoinTokenAccount,e.poolPcTokenAccount]:[e.poolPcTokenAccount,e.poolCoinTokenAccount];return[Gn({lifinity:{}}),oi.instruction.lifinitySwap({accounts:{swapProgram:e.programId,authority:e.authority,amm:e.amm,userTransferAuthority:o,sourceInfo:n,destinationInfo:i,swapSource:s,swapDestination:a,poolMint:e.poolMint,feeAccount:e.feeAccount,tokenProgram:Q,pythAccount:e.pythAccount,pythPcAccount:e.pythPcAccount,configAccount:e.configAccount}}).keys]}({swapState:this.swapState,...e})}get reserveTokenMints(){return[this.swapState.poolCoinMint,this.swapState.poolPcMint]}get isTradeFrozen(){var e;return 1===(null===(e=this.ammData)||void 0===e?void 0:e.amm.freezeTrade)}}class Qi{constructor(e,t){this.address=void 0,this.id=void 0,this.label=\"Lifinity V2\",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.ammState=void 0,this.poolInfo=void 0,this.ammData=void 0,this.slot=void 0,this.address=e;const n=new C(ze);var i;this.id=e.toBase58(),this.ammState=n.decode(\"amm\",t.data),this.poolInfo={amm:this.id,poolMint:(i=this.ammState).poolMint.toBase58(),feeAccount:i.feeAccount.toBase58(),oracleMainAccount:i.oracleMainAccount.toBase58(),oracleSubAccount:i.oracleSubAccount.toBase58(),oraclePcAccount:i.oraclePcAccount.toBase58(),poolCoinTokenAccount:i.tokenAAccount.toBase58(),poolCoinMint:i.tokenAMint.toBase58(),poolCoinDecimal:0,poolPcTokenAccount:i.tokenBAccount.toBase58(),poolPcMint:i.tokenBMint.toBase58(),poolPcDecimal:0,poolMintDecimal:0,pythBaseDecimal:i.baseDecimals}}getAccountsForUpdate(){return[this.address,this.ammState.tokenAAccount,this.ammState.tokenBAccount,this.ammState.oracleMainAccount,this.ammState.oracleSubAccount,this.ammState.oraclePcAccount,s]}update(e){const t=this.getAccountsForUpdate().reduce(((t,n)=>{const i=e.get(n.toBase58());return i&&t.push({publicKey:n,account:i}),t}),new Array);this.ammData=Ye(t,this.poolInfo),this.slot=Ni(t[t.length-1].account.data)}getQuote({sourceMint:e,amount:t}){if(!this.ammData)throw new Error(\"Accounts not loaded, missing ammData\");if(void 0===this.slot)throw new Error(\"Slot not fetched\");if(this.isTradeFrozen)throw new Error(\"Trade is frozen\");const n=this.ammState.tokenAMint.equals(e)?He.AtoB:He.BtoA;if(this.ammData.oracleMain&&!this.ammData.oracleMain.status.equals(1)||this.ammData.oracleSub&&!this.ammData.oracleSub.status.equals(1)||this.ammData.oraclePc&&!this.ammData.oraclePc.status.equals(1))throw new Error(\"Pyth accounts are outdated\");const i=new ie(t.toString()),o=_e(i,this.slot,this.ammData.amm,this.ammData.fees,this.ammData.coinBalance,this.ammData.pcBalance,this.ammData.config,this.ammData.oracleMain,this.ammData.oracleSub,this.ammData.oraclePc,n);return{notEnoughLiquidity:!1,inAmount:t,outAmount:I.BigInt(o.amountSwapped.toString()),feeAmount:I.BigInt(o.fee.ceil().toString()),feeMint:e.toBase58(),feePct:o.feePercent.toNumber(),priceImpactPct:o.priceImpact.toNumber()}}getSwapLegAndAccounts(e){return function({ammState:e,amm:t,sourceMint:n,userSourceTokenAccount:i,userDestinationTokenAccount:o,userTransferAuthority:s}){const[a,r]=n.equals(e.tokenAMint)?[e.tokenAAccount,e.tokenBAccount]:[e.tokenBAccount,e.tokenAAccount];return[Gn({lifinityV2:{}}),oi.instruction.lifinityV2Swap({accounts:{swapProgram:ln,authority:K([t.toBuffer()],ln)[0],amm:t,userTransferAuthority:s,sourceInfo:i,destinationInfo:o,swapSource:a,swapDestination:r,poolMint:e.poolMint,feeAccount:e.feeAccount,tokenProgram:Q,oracleMainAccount:e.oracleMainAccount,oracleSubAccount:e.oracleSubAccount,oraclePcAccount:e.oraclePcAccount}}).keys]}({ammState:this.ammState,amm:this.address,...e})}get reserveTokenMints(){return[this.ammState.tokenAMint,this.ammState.tokenBMint]}get isTradeFrozen(){return 1===this.ammState.freezeTrade}}var zi=\"marinade_finance\",Yi=[{name:\"initialize\",accounts:[{name:\"creatorAuthority\",isMut:!1,isSigner:!0},{name:\"state\",isMut:!0,isSigner:!1},{name:\"reservePda\",isMut:!1,isSigner:!1},{name:\"stakeList\",isMut:!0,isSigner:!1},{name:\"validatorList\",isMut:!0,isSigner:!1},{name:\"msolMint\",isMut:!1,isSigner:!1},{name:\"operationalSolAccount\",isMut:!1,isSigner:!1},{name:\"liqPool\",accounts:[{name:\"lpMint\",isMut:!1,isSigner:!1},{name:\"solLegPda\",isMut:!1,isSigner:!1},{name:\"msolLeg\",isMut:!1,isSigner:!1}]},{name:\"treasuryMsolAccount\",isMut:!1,isSigner:!1},{name:\"clock\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"data\",type:{defined:\"InitializeData\"}}]},{name:\"changeAuthority\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"adminAuthority\",isMut:!1,isSigner:!0}],args:[{name:\"data\",type:{defined:\"ChangeAuthorityData\"}}]},{name:\"addValidator\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"managerAuthority\",isMut:!1,isSigner:!0},{name:\"validatorList\",isMut:!0,isSigner:!1},{name:\"validatorVote\",isMut:!1,isSigner:!1},{name:\"duplicationFlag\",isMut:!0,isSigner:!1},{name:\"rentPayer\",isMut:!0,isSigner:!0},{name:\"clock\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1}],args:[{name:\"score\",type:\"u32\"}]},{name:\"removeValidator\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"managerAuthority\",isMut:!1,isSigner:!0},{name:\"validatorList\",isMut:!0,isSigner:!1},{name:\"duplicationFlag\",isMut:!0,isSigner:!1},{name:\"operationalSolAccount\",isMut:!0,isSigner:!1}],args:[{name:\"index\",type:\"u32\"},{name:\"validatorVote\",type:\"publicKey\"}]},{name:\"setValidatorScore\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"managerAuthority\",isMut:!1,isSigner:!0},{name:\"validatorList\",isMut:!0,isSigner:!1}],args:[{name:\"index\",type:\"u32\"},{name:\"validatorVote\",type:\"publicKey\"},{name:\"score\",type:\"u32\"}]},{name:\"configValidatorSystem\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"managerAuthority\",isMut:!1,isSigner:!0}],args:[{name:\"extraRuns\",type:\"u32\"}]},{name:\"deposit\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"msolMint\",isMut:!0,isSigner:!1},{name:\"liqPoolSolLegPda\",isMut:!0,isSigner:!1},{name:\"liqPoolMsolLeg\",isMut:!0,isSigner:!1},{name:\"liqPoolMsolLegAuthority\",isMut:!1,isSigner:!1},{name:\"reservePda\",isMut:!0,isSigner:!1},{name:\"transferFrom\",isMut:!0,isSigner:!0},{name:\"mintTo\",isMut:!0,isSigner:!1},{name:\"msolMintAuthority\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[{name:\"lamports\",type:\"u64\"}]},{name:\"depositStakeAccount\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"validatorList\",isMut:!0,isSigner:!1},{name:\"stakeList\",isMut:!0,isSigner:!1},{name:\"stakeAccount\",isMut:!0,isSigner:!1},{name:\"stakeAuthority\",isMut:!1,isSigner:!0},{name:\"duplicationFlag\",isMut:!0,isSigner:!1},{name:\"rentPayer\",isMut:!0,isSigner:!0},{name:\"msolMint\",isMut:!0,isSigner:!1},{name:\"mintTo\",isMut:!0,isSigner:!1},{name:\"msolMintAuthority\",isMut:!1,isSigner:!1},{name:\"clock\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"stakeProgram\",isMut:!1,isSigner:!1}],args:[{name:\"validatorIndex\",type:\"u32\"}]},{name:\"liquidUnstake\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"msolMint\",isMut:!0,isSigner:!1},{name:\"liqPoolSolLegPda\",isMut:!0,isSigner:!1},{name:\"liqPoolMsolLeg\",isMut:!0,isSigner:!1},{name:\"treasuryMsolAccount\",isMut:!0,isSigner:!1},{name:\"getMsolFrom\",isMut:!0,isSigner:!1},{name:\"getMsolFromAuthority\",isMut:!1,isSigner:!0},{name:\"transferSolTo\",isMut:!0,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[{name:\"msolAmount\",type:\"u64\"}]},{name:\"addLiquidity\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"lpMint\",isMut:!0,isSigner:!1},{name:\"lpMintAuthority\",isMut:!1,isSigner:!1},{name:\"liqPoolMsolLeg\",isMut:!1,isSigner:!1},{name:\"liqPoolSolLegPda\",isMut:!0,isSigner:!1},{name:\"transferFrom\",isMut:!0,isSigner:!0},{name:\"mintTo\",isMut:!0,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[{name:\"lamports\",type:\"u64\"}]},{name:\"removeLiquidity\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"lpMint\",isMut:!0,isSigner:!1},{name:\"burnFrom\",isMut:!0,isSigner:!1},{name:\"burnFromAuthority\",isMut:!1,isSigner:!0},{name:\"transferSolTo\",isMut:!0,isSigner:!1},{name:\"transferMsolTo\",isMut:!0,isSigner:!1},{name:\"liqPoolSolLegPda\",isMut:!0,isSigner:!1},{name:\"liqPoolMsolLeg\",isMut:!0,isSigner:!1},{name:\"liqPoolMsolLegAuthority\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[{name:\"tokens\",type:\"u64\"}]},{name:\"setLpParams\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"adminAuthority\",isMut:!1,isSigner:!0}],args:[{name:\"minFee\",type:{defined:\"Fee\"}},{name:\"maxFee\",type:{defined:\"Fee\"}},{name:\"liquidityTarget\",type:\"u64\"}]},{name:\"configMarinade\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"adminAuthority\",isMut:!1,isSigner:!0}],args:[{name:\"params\",type:{defined:\"ConfigMarinadeParams\"}}]},{name:\"orderUnstake\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"msolMint\",isMut:!0,isSigner:!1},{name:\"burnMsolFrom\",isMut:!0,isSigner:!1},{name:\"burnMsolAuthority\",isMut:!1,isSigner:!0},{name:\"newTicketAccount\",isMut:!0,isSigner:!1},{name:\"clock\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[{name:\"msolAmount\",type:\"u64\"}]},{name:\"claim\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"reservePda\",isMut:!0,isSigner:!1},{name:\"ticketAccount\",isMut:!0,isSigner:!1},{name:\"transferSolTo\",isMut:!0,isSigner:!1},{name:\"clock\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1}],args:[]},{name:\"stakeReserve\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"validatorList\",isMut:!0,isSigner:!1},{name:\"stakeList\",isMut:!0,isSigner:!1},{name:\"validatorVote\",isMut:!0,isSigner:!1},{name:\"reservePda\",isMut:!0,isSigner:!1},{name:\"stakeAccount\",isMut:!0,isSigner:!1},{name:\"stakeDepositAuthority\",isMut:!1,isSigner:!1},{name:\"clock\",isMut:!1,isSigner:!1},{name:\"epochSchedule\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1},{name:\"stakeHistory\",isMut:!1,isSigner:!1},{name:\"stakeConfig\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"stakeProgram\",isMut:!1,isSigner:!1}],args:[{name:\"validatorIndex\",type:\"u32\"}]},{name:\"updateActive\",accounts:[{name:\"common\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"stakeList\",isMut:!0,isSigner:!1},{name:\"stakeAccount\",isMut:!0,isSigner:!1},{name:\"stakeWithdrawAuthority\",isMut:!1,isSigner:!1},{name:\"reservePda\",isMut:!0,isSigner:!1},{name:\"msolMint\",isMut:!0,isSigner:!1},{name:\"msolMintAuthority\",isMut:!1,isSigner:!1},{name:\"treasuryMsolAccount\",isMut:!0,isSigner:!1},{name:\"clock\",isMut:!1,isSigner:!1},{name:\"stakeHistory\",isMut:!1,isSigner:!1},{name:\"stakeProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}]},{name:\"validatorList\",isMut:!0,isSigner:!1}],args:[{name:\"stakeIndex\",type:\"u32\"},{name:\"validatorIndex\",type:\"u32\"}]},{name:\"updateDeactivated\",accounts:[{name:\"common\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"stakeList\",isMut:!0,isSigner:!1},{name:\"stakeAccount\",isMut:!0,isSigner:!1},{name:\"stakeWithdrawAuthority\",isMut:!1,isSigner:!1},{name:\"reservePda\",isMut:!0,isSigner:!1},{name:\"msolMint\",isMut:!0,isSigner:!1},{name:\"msolMintAuthority\",isMut:!1,isSigner:!1},{name:\"treasuryMsolAccount\",isMut:!0,isSigner:!1},{name:\"clock\",isMut:!1,isSigner:!1},{name:\"stakeHistory\",isMut:!1,isSigner:!1},{name:\"stakeProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}]},{name:\"operationalSolAccount\",isMut:!0,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1}],args:[{name:\"stakeIndex\",type:\"u32\"}]},{name:\"deactivateStake\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"reservePda\",isMut:!1,isSigner:!1},{name:\"validatorList\",isMut:!0,isSigner:!1},{name:\"stakeList\",isMut:!0,isSigner:!1},{name:\"stakeAccount\",isMut:!0,isSigner:!1},{name:\"stakeDepositAuthority\",isMut:!1,isSigner:!1},{name:\"splitStakeAccount\",isMut:!0,isSigner:!0},{name:\"splitStakeRentPayer\",isMut:!0,isSigner:!0},{name:\"clock\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1},{name:\"epochSchedule\",isMut:!1,isSigner:!1},{name:\"stakeHistory\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"stakeProgram\",isMut:!1,isSigner:!1}],args:[{name:\"stakeIndex\",type:\"u32\"},{name:\"validatorIndex\",type:\"u32\"}]},{name:\"emergencyUnstake\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"validatorManagerAuthority\",isMut:!1,isSigner:!0},{name:\"validatorList\",isMut:!0,isSigner:!1},{name:\"stakeList\",isMut:!0,isSigner:!1},{name:\"stakeAccount\",isMut:!0,isSigner:!1},{name:\"stakeDepositAuthority\",isMut:!1,isSigner:!1},{name:\"clock\",isMut:!1,isSigner:!1},{name:\"stakeProgram\",isMut:!1,isSigner:!1}],args:[{name:\"stakeIndex\",type:\"u32\"},{name:\"validatorIndex\",type:\"u32\"}]},{name:\"mergeStakes\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"stakeList\",isMut:!0,isSigner:!1},{name:\"validatorList\",isMut:!0,isSigner:!1},{name:\"destinationStake\",isMut:!0,isSigner:!1},{name:\"sourceStake\",isMut:!0,isSigner:!1},{name:\"stakeDepositAuthority\",isMut:!1,isSigner:!1},{name:\"stakeWithdrawAuthority\",isMut:!1,isSigner:!1},{name:\"operationalSolAccount\",isMut:!0,isSigner:!1},{name:\"clock\",isMut:!1,isSigner:!1},{name:\"stakeHistory\",isMut:!1,isSigner:!1},{name:\"stakeProgram\",isMut:!1,isSigner:!1}],args:[{name:\"destinationStakeIndex\",type:\"u32\"},{name:\"sourceStakeIndex\",type:\"u32\"},{name:\"validatorIndex\",type:\"u32\"}]}],Hi=[{name:\"State\",type:{kind:\"struct\",fields:[{name:\"msolMint\",type:\"publicKey\"},{name:\"adminAuthority\",type:\"publicKey\"},{name:\"operationalSolAccount\",type:\"publicKey\"},{name:\"treasuryMsolAccount\",type:\"publicKey\"},{name:\"reserveBumpSeed\",type:\"u8\"},{name:\"msolMintAuthorityBumpSeed\",type:\"u8\"},{name:\"rentExemptForTokenAcc\",type:\"u64\"},{name:\"rewardFee\",type:{defined:\"Fee\"}},{name:\"stakeSystem\",type:{defined:\"StakeSystem\"}},{name:\"validatorSystem\",type:{defined:\"ValidatorSystem\"}},{name:\"liqPool\",type:{defined:\"LiqPool\"}},{name:\"availableReserveBalance\",type:\"u64\"},{name:\"msolSupply\",type:\"u64\"},{name:\"msolPrice\",type:\"u64\"},{name:\"circulatingTicketCount\",type:\"u64\"},{name:\"circulatingTicketBalance\",type:\"u64\"},{name:\"lentFromReserve\",type:\"u64\"},{name:\"minDeposit\",type:\"u64\"},{name:\"minWithdraw\",type:\"u64\"},{name:\"stakingSolCap\",type:\"u64\"},{name:\"emergencyCoolingDown\",type:\"u64\"}]}},{name:\"TicketAccountData\",type:{kind:\"struct\",fields:[{name:\"stateAddress\",type:\"publicKey\"},{name:\"beneficiary\",type:\"publicKey\"},{name:\"lamportsAmount\",type:\"u64\"},{name:\"createdEpoch\",type:\"u64\"}]}}],_i=[{name:\"Fee\",type:{kind:\"struct\",fields:[{name:\"basisPoints\",type:\"u32\"}]}},{name:\"InitializeData\",type:{kind:\"struct\",fields:[{name:\"adminAuthority\",type:\"publicKey\"},{name:\"validatorManagerAuthority\",type:\"publicKey\"},{name:\"minStake\",type:\"u64\"},{name:\"rewardFee\",type:{defined:\"Fee\"}},{name:\"liqPool\",type:{defined:\"LiqPoolInitializeData\"}},{name:\"additionalStakeRecordSpace\",type:\"u32\"},{name:\"additionalValidatorRecordSpace\",type:\"u32\"},{name:\"slotsForStakeDelta\",type:\"u64\"}]}},{name:\"LiqPoolInitializeData\",type:{kind:\"struct\",fields:[{name:\"lpLiquidityTarget\",type:\"u64\"},{name:\"lpMaxFee\",type:{defined:\"Fee\"}},{name:\"lpMinFee\",type:{defined:\"Fee\"}},{name:\"lpTreasuryCut\",type:{defined:\"Fee\"}}]}},{name:\"ChangeAuthorityData\",type:{kind:\"struct\",fields:[{name:\"admin\",type:{option:\"publicKey\"}},{name:\"validatorManager\",type:{option:\"publicKey\"}},{name:\"operationalSolAccount\",type:{option:\"publicKey\"}},{name:\"treasuryMsolAccount\",type:{option:\"publicKey\"}}]}},{name:\"ConfigMarinadeParams\",type:{kind:\"struct\",fields:[{name:\"rewardsFee\",type:{option:{defined:\"Fee\"}}},{name:\"slotsForStakeDelta\",type:{option:\"u64\"}},{name:\"minStake\",type:{option:\"u64\"}},{name:\"minDeposit\",type:{option:\"u64\"}},{name:\"minWithdraw\",type:{option:\"u64\"}},{name:\"stakingSolCap\",type:{option:\"u64\"}},{name:\"liquiditySolCap\",type:{option:\"u64\"}},{name:\"autoAddValidatorEnabled\",type:{option:\"bool\"}}]}},{name:\"LiqPool\",type:{kind:\"struct\",fields:[{name:\"lpMint\",type:\"publicKey\"},{name:\"lpMintAuthorityBumpSeed\",type:\"u8\"},{name:\"solLegBumpSeed\",type:\"u8\"},{name:\"msolLegAuthorityBumpSeed\",type:\"u8\"},{name:\"msolLeg\",type:\"publicKey\"},{name:\"lpLiquidityTarget\",type:\"u64\"},{name:\"lpMaxFee\",type:{defined:\"Fee\"}},{name:\"lpMinFee\",type:{defined:\"Fee\"}},{name:\"treasuryCut\",type:{defined:\"Fee\"}},{name:\"lpSupply\",type:\"u64\"},{name:\"lentFromSolLeg\",type:\"u64\"},{name:\"liquiditySolCap\",type:\"u64\"}]}},{name:\"List\",type:{kind:\"struct\",fields:[{name:\"account\",type:\"publicKey\"},{name:\"itemSize\",type:\"u32\"},{name:\"count\",type:\"u32\"},{name:\"newAccount\",type:\"publicKey\"},{name:\"copiedCount\",type:\"u32\"}]}},{name:\"StakeRecord\",type:{kind:\"struct\",fields:[{name:\"stakeAccount\",type:\"publicKey\"},{name:\"lastUpdateDelegatedLamports\",type:\"u64\"},{name:\"lastUpdateEpoch\",type:\"u64\"},{name:\"isEmergencyUnstaking\",type:\"u8\"}]}},{name:\"StakeSystem\",type:{kind:\"struct\",fields:[{name:\"stakeList\",type:{defined:\"List\"}},{name:\"delayedUnstakeCoolingDown\",type:\"u64\"},{name:\"stakeDepositBumpSeed\",type:\"u8\"},{name:\"stakeWithdrawBumpSeed\",type:\"u8\"},{name:\"slotsForStakeDelta\",type:\"u64\"},{name:\"lastStakeDeltaEpoch\",type:\"u64\"},{name:\"minStake\",type:\"u64\"},{name:\"extraStakeDeltaRuns\",type:\"u32\"}]}},{name:\"ValidatorRecord\",type:{kind:\"struct\",fields:[{name:\"validatorAccount\",type:\"publicKey\"},{name:\"activeBalance\",type:\"u64\"},{name:\"score\",type:\"u32\"},{name:\"lastStakeDeltaEpoch\",type:\"u64\"},{name:\"duplicationFlagBumpSeed\",type:\"u8\"}]}},{name:\"ValidatorSystem\",type:{kind:\"struct\",fields:[{name:\"validatorList\",type:{defined:\"List\"}},{name:\"managerAuthority\",type:\"publicKey\"},{name:\"totalValidatorScore\",type:\"u32\"},{name:\"totalActiveBalance\",type:\"u64\"},{name:\"autoAddValidatorEnabled\",type:\"u8\"}]}},{name:\"CommonError\",type:{kind:\"enum\",variants:[{name:\"InvalidProgramId\",fields:[\"publicKey\"]},{name:\"UnexpectedAccount\",fields:[\"publicKey\"]},{name:\"CalculationFailure\"},{name:\"AccountWithLockup\"},{name:\"NumberTooLow\",fields:[\"u64\",\"u64\"]},{name:\"NumberTooHigh\",fields:[\"u64\",\"u64\"]},{name:\"FeeTooHigh\",fields:[{defined:\"Fee\"}]},{name:\"FeesWrongWayRound\",fields:[{defined:\"Fee\"},{defined:\"Fee\"}]},{name:\"LiquidityTargetTooLow\"},{name:\"TicketNotDue\",fields:[\"u64\"]},{name:\"TicketNotReady\"},{name:\"WrongBeneficiary\"},{name:\"InsufficientLiquidity\"},{name:\"InvalidValidator\"}]}},{name:\"InitializeError\",type:{kind:\"enum\",variants:[{name:\"WrongReserveOwner\",fields:[\"publicKey\"]},{name:\"NonEmptyReserveData\",fields:[{defined:\"usize\"}]},{name:\"InvalidInitialReserveLamports\",fields:[\"u64\"]},{name:\"ZeroValidatorChunkSize\"},{name:\"TooBigValidatorChunkSize\",fields:[\"u32\"]},{name:\"ZeroCreditChunkSize\"},{name:\"TooBigCreditChunkSize\",fields:[\"u32\"]},{name:\"TooLowCreditFee\",fields:[\"u64\"]},{name:\"InvalidMintAuthority\",fields:[{name:\"expected\",type:\"publicKey\"},{name:\"got\",type:\"publicKey\"}]},{name:\"MintHasInitialSupply\",fields:[\"u64\"]},{name:\"InvalidOwnerFeeState\",fields:[{defined:\"spl_token::state::AccountState\"}]}]}}],Ji={__proto__:null,version:\"0.0.0\",name:zi,instructions:Yi,accounts:Hi,types:_i,default:{version:\"0.0.0\",name:zi,instructions:Yi,accounts:Hi,types:_i}};function Gi(e,t,n){return n.isZero()?e:e.mul(t).div(n)}class $i{constructor(e,t){this.address=void 0,this.id=void 0,this.label=\"Marinade\",this.shouldPrefetch=!0,this.exactOutputSupported=!1,this.hasDynamicAccounts=!0,this.marinadeFinanceProgram=void 0,this.marinadeStateResponse=void 0,this.liqPoolSolLegPdaAddress=void 0,this.marinadeState=void 0,this.id=e.toBase58(),this.marinadeFinanceProgram=new V(Ji,_t,{}),this.marinadeStateResponse=this.marinadeFinanceProgram.coder.accounts.decode(\"State\",t.data),this.address=e,this.liqPoolSolLegPdaAddress=this.findProgramDerivedAddress(\"liq_sol\")}getAccountsForUpdate(){return[this.address,this.liqPoolSolLegPdaAddress,this.marinadeStateResponse.liqPool.msolLeg]}update(e){const[t,n,i]=yt(e,this.getAccountsForUpdate());this.marinadeStateResponse=this.marinadeFinanceProgram.coder.accounts.decode(\"State\",t.data);const o=F(i.data);if(!o)throw new Error(`liqPoolMSOLLeg token account cannot be deserialized ${this.marinadeStateResponse.liqPool.msolLeg.toBase58()}`);this.marinadeState=new Zi(this.marinadeStateResponse,new te(n.lamports),o.amount)}getQuote({sourceMint:e,amount:t}){if(!this.marinadeState)throw new Error(\"Update was not run to create a complete marinadeState\");const n=new te(t.toString()),i=e.equals(Y)?this.marinadeState.depositQuote(n):this.marinadeState.liquidUnstakeQuote(n);return{notEnoughLiquidity:!1,inAmount:t,outAmount:I.BigInt(i.outAmount.toString()),feeAmount:I.BigInt(i.feeAmount.toString()),feeMint:this.marinadeStateResponse.msolMint.toBase58(),feePct:i.feePct,priceImpactPct:0}}getSwapLegAndAccounts(e){return e.sourceMint.equals(Y)?function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:i,userTransferAuthority:s}){const a=K([Buffer.from(\"temp-wsol-token-account\"),s.toBuffer()],ii)[0],r=K([Buffer.from(\"temp-sol-pda\"),s.toBuffer()],ii)[0];return[Gn({marinadeDeposit:{}}),oi.instruction.marinadeDeposit({accounts:{marinadeFinanceProgram:_t,state:e.address,msolMint:e.marinadeStateResponse.msolMint,liqPoolSolLegPda:e.liqPoolSolLegPda,liqPoolMsolLeg:e.marinadeStateResponse.liqPool.msolLeg,liqPoolMsolLegAuthority:e.liqPoolMsolLegAuthority,reservePda:e.reservePda,transferFrom:r,mintTo:i,msolMintAuthority:e.msolMintAuthority,systemProgram:n.programId,tokenProgram:Q,userWsolTokenAccount:t,tempWsolTokenAccount:a,userTransferAuthority:s,wsolMint:Y,rent:o}}).keys]}({additionalArgs:{address:this.address,marinadeStateResponse:this.marinadeStateResponse,liqPoolSolLegPda:this.liqPoolSolLegPdaAddress,liqPoolMsolLegAuthority:this.findProgramDerivedAddress(\"liq_st_sol_authority\"),reservePda:this.findProgramDerivedAddress(\"reserve\"),msolMintAuthority:this.findProgramDerivedAddress(\"st_mint\")},...e}):function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:i,userTransferAuthority:o}){const s=K([Buffer.from(\"temp-sol-pda\"),o.toBuffer()],ii)[0];return[Gn({marinadeUnstake:{}}),oi.instruction.marinadeUnstake({accounts:{marinadeFinanceProgram:_t,state:e.address,msolMint:e.marinadeStateResponse.msolMint,liqPoolSolLegPda:e.liqPoolSolLegPda,liqPoolMsolLeg:e.marinadeStateResponse.liqPool.msolLeg,treasuryMsolAccount:e.marinadeStateResponse.treasuryMsolAccount,getMsolFrom:t,getMsolFromAuthority:o,transferSolTo:s,systemProgram:n.programId,tokenProgram:Q,userWsolTokenAccount:i}}).keys]}({additionalArgs:{address:this.address,marinadeStateResponse:this.marinadeStateResponse,liqPoolSolLegPda:this.liqPoolSolLegPdaAddress},...e})}get reserveTokenMints(){return[Y,this.marinadeStateResponse.msolMint]}findProgramDerivedAddress(e,t=[]){const n=[this.address.toBuffer(),Buffer.from(e),...t],[i]=K(n,this.marinadeFinanceProgram.programId);return i}}class Zi{constructor(e,t,n){this.state=void 0,this.liqPoolSolLegPdaLamports=void 0,this.liqPoolMSOLLegAmount=void 0,this.state=e,this.liqPoolSolLegPdaLamports=t,this.liqPoolMSOLLegAmount=n}depositQuote(e){let t=e;const n=this.calcMSOLFromLamports(t),i=te.min(n,this.liqPoolMSOLLegAmount);let o=new te(0);if(t=(()=>{if(i.gt(new te(0))){const e=n.eq(i)?t:this.calcLamportsFromMSOLAmount(i);return o=o.add(i),eo(t,e)}return t})(),t.gt(new te(0))){this.checkStakingCap(t);const e=this.calcMSOLFromLamports(t);o=o.add(e)}return{outAmount:o,feeAmount:0,feePct:0,priceImpactPct:0}}checkStakingCap(e){if(this.totalLamportsUnderControl().add(e).gt(this.state.stakingSolCap))throw new Error(\"Staking cap reached\")}calcMSOLFromLamports(e){return t=e,n=this.totalVirtualStakedLamports(),(i=this.state.msolSupply).eq(new te(0))?t:Gi(t,i,n);var t,n,i}calcLamportsFromMSOLAmount(e){return Gi(e,this.totalVirtualStakedLamports(),this.state.msolSupply)}totalVirtualStakedLamports(){return eo(this.totalLamportsUnderControl(),this.state.circulatingTicketBalance)}totalLamportsUnderControl(){return this.state.validatorSystem.totalActiveBalance.add(this.totalCoolingDown()).add(this.state.availableReserveBalance)}totalCoolingDown(){return this.state.stakeSystem.delayedUnstakeCoolingDown.add(this.state.emergencyCoolingDown)}liquidUnstakeQuote(e){const t=eo(this.liqPoolSolLegPdaLamports,this.state.rentExemptForTokenAcc),n=this.calcLamportsFromMSOLAmount(e),i=function(e,t,n,i,o){if(o.gte(i))return t;const s=i.sub(o);return s.gte(n)?e:t-Gi(new te(t-e),s,n).toNumber()}(this.state.liqPool.lpMinFee.basisPoints,this.state.liqPool.lpMaxFee.basisPoints,this.state.liqPool.lpLiquidityTarget,t,n),o=e.mul(new te(i)).div(new te(1e4)),s=this.calcLamportsFromMSOLAmount(e.sub(o));if(s.add(this.state.rentExemptForTokenAcc).gt(this.liqPoolSolLegPdaLamports))throw new Error(\"Insufficient liquidity\");return{outAmount:s,feeAmount:o,feePct:i/1e4,priceImpactPct:0}}}function eo(e,t){return e.gt(t)?e.sub(t):new te(0)}const to=Math.pow(10,10),no=J([G(\"version\"),G(\"isInitialized\"),G(\"nonce\"),Dn(\"amplificationCoefficient\"),Dn(\"feeNumerator\"),Dn(\"adminFeeNumerator\"),$(\"tokenAccountsLength\"),Dn(\"precisionFactor\"),Dn(\"precisionMultiplierA\"),Dn(\"precisionMultiplierB\"),Dn(\"precisionMultiplierC\"),Dn(\"precisionMultiplierD\"),Ln(\"tokenAccountA\"),Ln(\"tokenAccountB\"),Ln(\"tokenAccountC\"),Ln(\"tokenAccountD\")]),io=(e,t)=>{const n=t.owner,i=no.decode(t.data),o=i.tokenAccountsLength,s=xn([e.toBuffer(),Buffer.from([i.nonce])],n),a=[i.precisionMultiplierA.toNumber(),i.precisionMultiplierB.toNumber(),i.precisionMultiplierC.toNumber(),i.precisionMultiplierD.toNumber()].slice(0,o),r=[i.tokenAccountA,i.tokenAccountB,i.tokenAccountC,i.tokenAccountD].slice(0,o);return{programId:n,authority:s,isInitialized:Boolean(i.isInitialized),nonce:i.nonce,ammId:e,amplificationCoefficient:i.amplificationCoefficient.toNumber(),feeNumerator:i.feeNumerator.toNumber(),tokenAccountsLength:o,precisionFactor:i.precisionFactor.toNumber(),precisionMultipliers:a,tokenAccounts:r}};class oo{constructor(t,n,i){this.params=void 0,this.id=void 0,this.label=\"Mercurial\",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.swapLayout=void 0,this.tokenMints=void 0,this.tokenReserveAmounts=void 0,this.calculator=void 0,this.params=i,this.id=t.toBase58(),this.swapLayout=io(t,n),this.calculator=new P(I.BigInt(this.swapLayout.tokenAccountsLength),I.BigInt(this.swapLayout.amplificationCoefficient),this.swapLayout.precisionMultipliers.map((e=>I.BigInt(e))),new M(I.BigInt(this.swapLayout.feeNumerator),I.BigInt(to))),this.tokenMints=i.tokenMints.map((t=>new e(t)))}getAccountsForUpdate(){return this.swapLayout.tokenAccounts}update(e){const t=yt(e,this.getAccountsForUpdate());this.tokenReserveAmounts=wt(t)}getQuote({sourceMint:e,destinationMint:t,amount:n}){if(!this.tokenReserveAmounts)throw new Error(\"Missing tokenReserveAmounts\");const i=this.tokenReserveAmounts.findIndex(((t,n)=>this.tokenMints[n].equals(e))),o=this.tokenReserveAmounts.findIndex(((e,n)=>this.tokenMints[n].equals(t))),s=this.calculator.exchange(this.tokenReserveAmounts,n,i,o),a=this.swapLayout.feeNumerator/to;return{notEnoughLiquidity:!1,inAmount:n,outAmount:s.expectedOutputAmount,feeAmount:s.fees,feeMint:t.toBase58(),feePct:a,priceImpactPct:s.priceImpact.toNumber()}}getSwapLegAndAccounts(e){return function({swapLayout:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i}){const o=[];for(const t of e.tokenAccounts)o.push({pubkey:t,isSigner:!1,isWritable:!0});return[Gn({mercurial:{}}),oi.instruction.mercurialSwap({accounts:ri(e,t,n,i),remainingAccounts:o}).keys]}({swapLayout:this.swapLayout,...e})}get reserveTokenMints(){return this.params.tokenMints.map((t=>new e(t)))}}oo.decodeSwapLayout=io;const so=new V(Je,Ge,Bn),ao=new V($e,Ge,Bn),ro=e=>so.coder.accounts.decode(\"pool\",e.data),uo=e=>ao.coder.accounts.decode(\"vault\",e.data);class co{constructor(t,n,i){this.address=void 0,this.id=void 0,this.label=\"Meteora\",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.poolState=void 0,this.data=void 0,this.depegAccount=void 0,this.depegAccounts=new Map,this.vaultLpMint=void 0,this.vaultToken=void 0,this.feePct=void 0,this.address=t,this.id=t.toBase58(),this.poolState=ro(n),this.vaultLpMint={a:new e(i.vaultLpMint.a),b:new e(i.vaultLpMint.b)},this.vaultToken={a:new e(i.vaultToken.a),b:new e(i.vaultToken.b)},i.depegAccount&&(this.depegAccount={...i.depegAccount,pubkey:new e(i.depegAccount.pubkey),data:Buffer.from(i.depegAccount.data[0],i.depegAccount.data[1]),owner:new e(i.depegAccount.owner)},this.depegAccounts=new Map([[this.depegAccount.pubkey.toBase58(),this.depegAccount]]));const{ownerTradeFeeDenominator:o,ownerTradeFeeNumerator:s,tradeFeeDenominator:a,tradeFeeNumerator:r}=this.poolState.fees;this.feePct=new ie(s.toString()).div(o.toString()).add(new ie(r.toString()).div(a.toString())).toNumber()}getAccountsForUpdate(){var e;const t=[this.poolState.aVault,this.poolState.bVault,this.poolState.aVaultLp,this.poolState.bVaultLp,this.poolState.lpMint,this.vaultLpMint.a,this.vaultLpMint.b,this.vaultToken.a,this.vaultToken.b,s];return null!==(e=this.depegAccount)&&void 0!==e&&e.pubkey&&t.push(this.depegAccount.pubkey),t}update(e){const[t,n,i,o,s,a,r,u,c,m,d]=yt(e,this.getAccountsForUpdate());d&&this.depegAccount&&(this.depegAccount.data=d.data),this.data={vaultA:uo(t),vaultB:uo(n),poolAVaultLpAmount:Ci(i),poolBVaultLpAmount:Ci(o),poolLpTotalSupply:Ri(s),vaultALpTotalSupply:Ri(a),vaultBLpTotalSupply:Ri(r),vaultAReserve:Ci(u),vaultBReserve:Ci(c),currentTime:new ne(m.data.readBigInt64LE(32).toString()).toNumber()}}getQuote({sourceMint:e,destinationMint:t,amount:n}){if(void 0===this.data)throw new Error(\"Unable to fetch accounts.\");let i=new ne(n.toString());const o=Ze(e,i,{currentTime:this.data.currentTime,depegAccounts:this.depegAccounts,poolState:this.poolState,poolVaultALp:this.data.poolAVaultLpAmount,poolVaultBLp:this.data.poolBVaultLpAmount,vaultA:this.data.vaultA,vaultALpSupply:this.data.vaultALpTotalSupply,vaultB:this.data.vaultB,vaultBLpSupply:this.data.vaultBLpTotalSupply,vaultAReserve:this.data.vaultAReserve,vaultBReserve:this.data.vaultBReserve});return{notEnoughLiquidity:!1,inAmount:n,outAmount:I.BigInt(o.amountOut.toString()),feeAmount:I.BigInt(o.fee.toString()),feeMint:t.toBase58(),feePct:this.feePct,priceImpactPct:0}}getSwapLegAndAccounts(e){var t,n;if(void 0===this.data)throw new Error(\"Unable to fetch accounts.\");const i=e.sourceMint.equals(this.poolState.tokenAMint)?this.poolState.adminTokenAFee:this.poolState.adminTokenBFee;return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i}){const o=[];return o.push(e.referrer?{pubkey:e.referrer,isSigner:!1,isWritable:!0}:si),o.push(e.depeg?{pubkey:e.depeg,isSigner:!1,isWritable:!1}:si),[Gn({meteora:{}}),oi.instruction.meteoraSwap({accounts:{swapProgram:nn,pool:e.pool,userSourceToken:t,userDestinationToken:n,aVault:e.aVault,bVault:e.bVault,aTokenVault:e.aTokenVault,bTokenVault:e.bTokenVault,aVaultLpMint:e.aVaultLpMint,bVaultLpMint:e.bVaultLpMint,aVaultLp:e.aVaultLp,bVaultLp:e.bVaultLp,adminTokenFee:e.adminTokenFee,user:i,vaultProgram:on,tokenProgram:Q},remainingAccounts:o}).keys]}({additionalArgs:{pool:this.address,aVault:this.poolState.aVault,bVault:this.poolState.bVault,aTokenVault:this.vaultToken.a,bTokenVault:this.vaultToken.b,aVaultLpMint:this.vaultLpMint.a,bVaultLpMint:this.vaultLpMint.b,aVaultLp:this.poolState.aVaultLp,bVaultLp:this.poolState.bVaultLp,adminTokenFee:i,referrer:null===(t=e.quoteMintToReferrer)||void 0===t?void 0:t.get(e.sourceMint.toBase58()),depeg:null===(n=this.depegAccount)||void 0===n?void 0:n.pubkey},...e})}get reserveTokenMints(){return[this.poolState.tokenAMint,this.poolState.tokenBMint]}}co.accountInfoToMeteoraSwapLayout=ro,co.accountInfoToVaultLayout=uo;const mo=J([Z(\"status\"),Z(\"nonce\"),Z(\"orderNum\"),Z(\"depth\"),Z(\"coinDecimals\"),Z(\"pcDecimals\"),Z(\"state\"),Z(\"resetFlag\"),Z(\"minSize\"),Z(\"volMaxCutRatio\"),Z(\"amountWaveRatio\"),Z(\"coinLotSize\"),Z(\"pcLotSize\"),Z(\"minPriceMultiplier\"),Z(\"maxPriceMultiplier\"),Z(\"systemDecimalsValue\"),Z(\"minSeparateNumerator\"),Z(\"minSeparateDenominator\"),Z(\"tradeFeeNumerator\"),Z(\"tradeFeeDenominator\"),Z(\"pnlNumerator\"),Z(\"pnlDenominator\"),Z(\"swapFeeNumerator\"),Z(\"swapFeeDenominator\"),Z(\"needTakePnlCoin\"),Z(\"needTakePnlPc\"),Z(\"totalPnlPc\"),Z(\"totalPnlCoin\"),qn(\"poolTotalDepositPc\"),qn(\"poolTotalDepositCoin\"),qn(\"swapCoinInAmount\"),qn(\"swapPcOutAmount\"),Z(\"swapCoin2PcFee\"),qn(\"swapPcInAmount\"),qn(\"swapCoinOutAmount\"),Z(\"swapPc2CoinFee\"),Ln(\"poolCoinTokenAccount\"),Ln(\"poolPcTokenAccount\"),Ln(\"coinMintAddress\"),Ln(\"pcMintAddress\"),Ln(\"lpMintAddress\"),Ln(\"ammOpenOrders\"),Ln(\"serumMarket\"),Ln(\"serumProgramId\"),Ln(\"ammTargetOrders\"),Ln(\"poolWithdrawQueue\"),Ln(\"poolTempLpTokenAccount\"),Ln(\"ammOwner\"),Ln(\"pnlOwner\")]);class po{constructor(t,n,i){this.ammId=void 0,this.id=void 0,this.label=\"Raydium\",this.shouldPrefetch=!1,this.exactOutputSupported=!0,this.hasDynamicAccounts=!1,this.coinMint=void 0,this.pcMint=void 0,this.status=void 0,this.serumProgramId=void 0,this.serumMarket=void 0,this.ammOpenOrders=void 0,this.ammTargetOrders=void 0,this.poolCoinTokenAccount=void 0,this.poolPcTokenAccount=void 0,this.serumMarketKeys=void 0,this.coinReserve=void 0,this.pcReserve=void 0,this.feePct=void 0,this.calculator=void 0,this.ammId=t,this.id=t.toBase58();const o=mo.decode(n.data);this.status=o.status,this.coinMint=new e(o.coinMintAddress),this.pcMint=new e(o.pcMintAddress),this.poolCoinTokenAccount=new e(o.poolCoinTokenAccount),this.poolPcTokenAccount=new e(o.poolPcTokenAccount),this.serumProgramId=new e(o.serumProgramId),this.serumMarket=new e(o.serumMarket),this.ammOpenOrders=new e(o.ammOpenOrders),this.ammTargetOrders=new e(o.ammTargetOrders),this.serumMarketKeys=Object.keys(i).reduce(((t,n)=>{if(!i[n])throw new Error(`Could not find ${n} in params`);return t[n]=new e(i[n]),t}),{});const s=o.swapFeeNumerator,a=o.swapFeeDenominator;this.feePct=new ie(s.toString()).div(a.toString()),this.calculator=new y(new M(I.BigInt(s),I.BigInt(a)),T)}static decodeSerumMarketKeysString(e,t,n,i){if(!t.equals(Sn))return{serumBids:e.toBase58(),serumAsks:e.toBase58(),serumEventQueue:e.toBase58(),serumCoinVaultAccount:e.toBase58(),serumPcVaultAccount:e.toBase58(),serumVaultSigner:e.toBase58()};const o=l.getLayout(t).decode(i.data),s=xn([n.toBuffer(),o.vaultSignerNonce.toArrayLike(Buffer,\"le\",8)],t);return{serumBids:o.bids.toBase58(),serumAsks:o.asks.toBase58(),serumEventQueue:o.eventQueue.toBase58(),serumCoinVaultAccount:o.baseVault.toBase58(),serumPcVaultAccount:o.quoteVault.toBase58(),serumVaultSigner:s.toBase58()}}getAccountsForUpdate(){return[this.ammId,this.poolCoinTokenAccount,this.poolPcTokenAccount,this.ammOpenOrders]}update(e){const[t,n,i,o]=yt(e,this.getAccountsForUpdate()),[s,a]=[Ci(n),Ci(i)],r=g.fromAccountInfo(this.ammOpenOrders,o,o.owner),u=mo.decode(t.data);this.coinReserve=I.BigInt(s.add(r.baseTokenTotal).sub(new X(String(u.needTakePnlCoin)))),this.pcReserve=I.BigInt(a.add(r.quoteTokenTotal).sub(new X(String(u.needTakePnlPc))))}getQuoteInternal({amount:e,sourceMint:t,coinReserve:n,pcReserve:i,swapMode:o}){const s=this.coinMint.equals(t)?1:0;if(o==Mt.ExactIn){const t=this.calculator.exchange([n,i],e,s);return{inAmount:e,outAmount:t.expectedOutputAmount,feeAmount:t.fees,priceImpactPct:t.priceImpact.toNumber()}}{const t=this.calculator.exchangeForExactOutput([n,i],e,s);return{inAmount:t.expectedInputAmount,outAmount:e,feeAmount:t.fees,priceImpactPct:t.priceImpact.toNumber()}}}getQuote({sourceMint:e,amount:t,swapMode:n}){const{coinReserve:i,pcReserve:o}=this;if(!this.isTradable)throw new Error(\"Pool is not tradable\");if(!i||!o)throw new Error(\"Pool token accounts balances not refreshed or empty\");return{...this.getQuoteInternal({amount:t,sourceMint:e,coinReserve:i,pcReserve:o,swapMode:n}),notEnoughLiquidity:!1,feeMint:e.toBase58(),feePct:this.feePct.toNumber()}}getSwapLegAndAccounts(e){return function({raydiumAmm:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i}){return[Gn({raydium:{}}),oi.instruction.raydiumSwap({accounts:ci(e,t,n,i)}).keys]}({raydiumAmm:this,...e})}createExactOutSwapInstruction(e){return function({raydiumAmm:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i,outAmount:o,inAmount:s,slippageBps:a,platformFee:r,overflowFeeAccount:u}){var c;return oi.instruction.raydiumSwapExactOutput(o,{amount:s,slippageBps:a},null!==(c=null==r?void 0:r.feeBps)&&void 0!==c?c:0,{accounts:ci(e,t,n,i),remainingAccounts:pi(null==r?void 0:r.feeAccount,u)})}({raydiumAmm:this,...e,outAmount:new te(e.amount.toString()),inAmount:new te(e.inAmount.toString())})}get reserveTokenMints(){return[this.coinMint,this.pcMint]}get isTradable(){return 1===this.status||6===this.status}}const lo=new V({version:\"0.0.1\",name:\"add_decimals\",instructions:[],accounts:[{name:\"wrappedToken\",type:{kind:\"struct\",fields:[{name:\"decimals\",type:\"u8\"},{name:\"multiplier\",type:\"u64\"},{name:\"wrappedUnderlyingMint\",type:\"publicKey\"},{name:\"wrappedUnderlyingTokens\",type:\"publicKey\"},{name:\"wrapperMint\",type:\"publicKey\"},{name:\"nonce\",type:\"u8\"}]}}],errors:[]},Ot,Bn);class go{constructor(e,t){this.address=void 0,this.accountInfo=void 0,this.id=void 0,this.label=\"Saber (Decimals)\",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.wrappedToken=void 0,this.multiplierJsbi=void 0,this.address=e,this.accountInfo=t,this.id=e.toBase58(),this.wrappedToken=lo.coder.accounts.decode(\"wrappedToken\",t.data),this.multiplierJsbi=I.BigInt(this.wrappedToken.multiplier)}getAccountsForUpdate(){return new Array}update(e){}toWrappedAmount(e){return I.multiply(this.multiplierJsbi,e)}toUnderlyingAmount(e){return I.divide(e,this.multiplierJsbi)}getAmounts(e,t){if(t)return[e,this.toWrappedAmount(e)];{const t=this.toUnderlyingAmount(e);return[this.toWrappedAmount(t),t]}}getQuote({sourceMint:e,amount:t}){const n=this.wrappedToken.wrappedUnderlyingMint.equals(e),[i,o]=this.getAmounts(t,n);return{notEnoughLiquidity:!1,inAmount:i,outAmount:o,feeAmount:v,feeMint:e.toBase58(),feePct:0,priceImpactPct:0}}getSwapLegAndAccounts(e){return function({wrapper:e,wrappedToken:t,userSourceTokenAccount:n,userDestinationTokenAccount:i,userTransferAuthority:o,deposit:s}){return[Gn(s?{saberAddDecimalsDeposit:{}}:{saberAddDecimalsWithdraw:{}}),oi.instruction.saberAddDecimals({accounts:{addDecimalsProgram:Ot,wrapper:e,wrapperMint:t.wrapperMint,wrapperUnderlyingTokens:t.wrappedUnderlyingTokens,owner:o,userUnderlyingTokens:s?n:i,userWrappedTokens:s?i:n,tokenProgram:Q}}).keys]}({wrapper:this.address,wrappedToken:this.wrappedToken,...e,deposit:this.wrappedToken.wrappedUnderlyingMint.equals(e.sourceMint)})}get reserveTokenMints(){return[this.wrappedToken.wrappedUnderlyingMint,this.wrappedToken.wrapperMint]}get wrapperMint(){return this.wrappedToken.wrapperMint}}class ho{constructor(e){this.stableSwap=void 0,this.id=void 0,this.label=\"Saber\",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.tokenReserveAmounts=void 0,this.calculator=void 0,this.stableSwap=e,this.id=e.config.swapAccount.toBase58(),this.calculator=new P(b,S(this.stableSwap.state),[B,B],new M(this.stableSwap.state.fees.trade.numerator,this.stableSwap.state.fees.trade.denominator))}getAccountsForUpdate(){return[this.stableSwap.state.tokenA.reserve,this.stableSwap.state.tokenB.reserve]}update(e){const t=yt(e,this.getAccountsForUpdate());this.tokenReserveAmounts=wt(t)}getQuote({sourceMint:e,destinationMint:t,amount:n}){if(this.stableSwap.state.isPaused)throw new Error(\"Saber pool is paused\");if(!this.tokenReserveAmounts)throw new Error(\"Missing tokenReserveAmounts\");const i=new ie(this.stableSwap.state.fees.trade.asFraction.toFixed(4)),[o,s]=this.stableSwap.state.tokenA.mint.equals(e)?[0,1]:[1,0];this.calculator.setAmp(S(this.stableSwap.state));const a=this.calculator.exchange(this.tokenReserveAmounts,n,o,s);return{notEnoughLiquidity:!1,inAmount:n,outAmount:a.expectedOutputAmount,feeAmount:a.fees,feeMint:t.toBase58(),feePct:i.toNumber(),priceImpactPct:a.priceImpact.toNumber()}}getSwapLegAndAccounts(e){return function({stableSwap:e,sourceMint:t,userSourceTokenAccount:n,userDestinationTokenAccount:i,userTransferAuthority:o}){return[Gn({saber:{}}),oi.instruction.saberSwap({accounts:di(e,t,n,i,o)}).keys]}({stableSwap:this.stableSwap,...e})}get reserveTokenMints(){return[this.stableSwap.state.tokenA.mint,this.stableSwap.state.tokenB.mint]}}const So=J([_(8,\"discriminator\"),Ln(\"factory\"),G(\"bump\"),Dn(\"index\"),Ln(\"admin\"),Ln(\"token0Reserves\"),Ln(\"token0Mint\"),Ln(\"token0Fees\"),Ln(\"token1Reserves\"),Ln(\"token1Mint\"),Ln(\"token1Fees\"),G(\"isPaused\"),Ln(\"poolMint\"),Dn(\"tradeFeeKbps\"),Dn(\"withdrawFeeKbps\"),Dn(\"adminTradeFeeKbps\"),Dn(\"adminWithdrawFeeKbps\")]);class ko{constructor(e,t){this.id=void 0,this.label=\"Sencha\",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.poolState=void 0,this.calculator=void 0,this.tokenReserveAmounts=void 0,this.id=e.toBase58(),this.poolState=((e,t)=>{const n=t.owner,i=So.decode(t.data);return{programId:n,isPaused:Boolean(i.isPaused),bump:i.bump,ammId:e,token0Reserves:i.token0Reserves,token1Reserves:i.token1Reserves,token0Mint:i.token0Mint,token1Mint:i.token1Mint,token0Fees:i.token0Fees,token1Fees:i.token1Fees,poolMint:i.poolMint,tradeFeeKbps:i.tradeFeeKbps.toNumber()}})(e,t),this.calculator=new y(new M(I.BigInt(this.poolState.tradeFeeKbps),I.BigInt(1e7)),new M(v,v),!1)}get isPaused(){return this.poolState.isPaused}getAccountsForUpdate(){return[this.poolState.token0Reserves,this.poolState.token1Reserves]}update(e){const t=yt(e,this.getAccountsForUpdate());this.tokenReserveAmounts=wt(t)}getQuote({sourceMint:e,amount:t}){if(this.isPaused)throw new Error(\"Sencha pool is paused\");if(!this.tokenReserveAmounts)throw new Error(\"Missing tokenReserveAmounts\");const n=this.poolState.token0Mint.equals(e)?1:0;let i=this.calculator.exchange(this.tokenReserveAmounts,t,n),o=this.poolState.tradeFeeKbps/1e7;return{notEnoughLiquidity:!1,inAmount:t,outAmount:i.expectedOutputAmount,feeAmount:i.fees,feeMint:e.toBase58(),feePct:o,priceImpactPct:i.priceImpact.toNumber()}}getSwapLegAndAccounts(e){return function({poolState:e,sourceMint:t,userSourceTokenAccount:n,userDestinationTokenAccount:i,userTransferAuthority:o}){const[s,a]=t.equals(e.token0Mint)?[e.token0Reserves,e.token1Reserves]:[e.token1Reserves,e.token0Reserves],[r,u]=t.equals(e.token0Mint)?[e.token0Fees,e.token1Fees]:[e.token1Fees,e.token0Fees];return[Gn({sencha:{}}),oi.instruction.senchaSwap({accounts:{swapProgram:e.programId,tokenProgram:Q,swap:e.ammId,userAuthority:o,inputUserAccount:n,inputTokenAccount:s,inputFeesAccount:r,outputUserAccount:i,outputTokenAccount:a,outputFeesAccount:u}}).keys]}({poolState:this.poolState,...e})}get reserveTokenMints(){return[this.poolState.token0Mint,this.poolState.token1Mint]}}const fo=[\"77quYg4MGneUdjgXCunt9GgM1usmrxKY31twEy3WHwcS\",\"5cLrMai1DsLRYc1Nio9qMTicsWtvzjzZfJPXyAoF4t1Z\",\"EERNEEnBqdGzBS8dd46wwNY5F2kwnaCQ3vsq2fNKGogZ\",\"8sFf9TW3KzxLiBXcDcjAxqabEsRroo4EiRr3UG1xbJ9m\",\"2iDSTGhjJEiRxNaLF27CY6daMYPs5hgYrP2REHd5YD62\"],Ao=[\"B2na8Awyd7cpC59iEU43FagJAPLigr3AP3s38KM982bu\"];function*Mo(e){const t=e.isBids;for(const{key:n,quantity:i}of e.slab.items(t)){const e=I.BigInt(n.ushrn(64).toString());yield[e,I.BigInt(i.toString())]}}function yo(e,t){const n=e._decoded.baseLotSize;return n.isZero()?new ie(0):function(e,t){const n=new ie(e.div(t).toString()),i=e.umod(t),o=i.gcd(t);return n.add(new ie(i.div(o).toString()).div(new ie(t.div(o).toString())))}(t.mul(e._decoded.quoteLotSize).mul(e._baseSplTokenMultiplier),n.mul(e._quoteSplTokenMultiplier))}class wo{constructor(e){this.market=void 0,this.id=void 0,this.label=void 0,this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this._orderbooks=void 0,this.isOpenbook=void 0,this.market=e,this.id=e.address.toBase58(),this.isOpenbook=e.programId.equals(Sn),this.label=this.isOpenbook?\"Openbook\":\"Serum\"}get orderbooks(){return this._orderbooks}getAccountsForUpdate(){return[this.market.asksAddress,this.market.bidsAddress]}update(e){const[t,n]=yt(e,this.getAccountsForUpdate()),i=h.decode(this.market,t.data),o=h.decode(this.market,n.data);this._orderbooks={asks:i,bids:o}}getQuote({sourceMint:e,destinationMint:t,amount:n}){if(!this.orderbooks)throw new Error(\"Failed to find orderbooks\");const i=function({market:e,asks:t,bids:n,fromAmount:i,fromMint:o,toMint:s,isOpenbook:a}){const r=a?Ao.includes(e.address.toBase58())?1e-4:4e-4:fo.includes(e.address.toBase58())?1e-4:4e-4;return o.equals(e.quoteMintAddress)&&s.equals(e.baseMintAddress)?function(e,t,n,i){let o=v,s=v,a=v,r=v,u=v;const c=e.quoteSizeLotsToNumber(new te(1));let m=c?I.BigInt(new ie(n.toString()).div(1+i).div(c).floor()):v;const d=I.BigInt(e.baseSizeLotsToNumber(new te(1)).toString());for(let[e,n]of Mo(t)){I.equal(s,v)&&(s=e),a=e;const t=I.multiply(n,d),i=I.multiply(n,e);if(u=I.add(u,t),I.greaterThanOrEqual(i,m)){const t=I.divide(m,e);r=I.add(r,I.multiply(e,t)),o=I.add(o,I.multiply(d,t)),m=v;break}r=I.add(r,I.multiply(e,n)),o=I.add(o,t),m=I.subtract(m,i)}let p=0;if(I.notEqual(s,v)){const e=new ie(s.toString());p=new ie(a.toString()).sub(e).div(e).toNumber()}const l=yo(e,new te(s.toString())),g=yo(e,new te(r.toString())),h=g.mul(d.toString()).ceil(),S=g.mul(d.toString()).mul(i).ceil();return{side:\"buy\",notEnoughLiquidity:I.lessThanOrEqual(u,o),minimum:{in:I.BigInt(l.mul(d.toString()).mul(1+i).ceil()),out:d},inAmount:I.BigInt(h.add(S)),outAmount:o,feeAmount:I.BigInt(S),priceImpactPct:p,feePct:i}}(e,t,i,r):function(e,t,n,i){let o=I.BigInt(0),s=I.BigInt(0),a=I.BigInt(0),r=I.BigInt(0),u=n,c=I.BigInt(0);const m=I.BigInt(e.baseSizeLotsToNumber(new te(1))),d=I.BigInt(e.quoteSizeLotsToNumber(new te(1)));for(const[e,n]of Mo(t)){I.equal(s,v)&&(s=e),a=e;const t=I.multiply(m,n),i=I.multiply(n,I.multiply(e,d));if(r=I.add(r,t),I.greaterThanOrEqual(t,u)){const t=I.divide(u,m),n=I.multiply(t,e);o=I.add(o,I.multiply(n,d)),u=I.subtract(u,n),c=I.add(c,I.multiply(t,m));break}o=I.add(o,i),u=I.subtract(u,t),c=I.add(c,t)}let p=new ie(o.toString()).mul(1-i).floor(),l=0;const g=yo(e,new te(s.toString()));if(I.notEqual(s,v)){const t=yo(e,new te(a.toString()));l=g.minus(t).div(g).toNumber()}return{side:\"sell\",notEnoughLiquidity:I.greaterThan(I.BigInt(n),r),minimum:{in:m,out:I.BigInt(g.mul(I.toNumber(m)).mul(1-i).floor().toString())},inAmount:c,outAmount:I.BigInt(p),feeAmount:I.BigInt(new ie(o.toString()).mul(i).round()),priceImpactPct:l,feePct:i}}(e,n,i,r)}({market:this.market,asks:this.orderbooks.asks,bids:this.orderbooks.bids,fromMint:e,toMint:t,fromAmount:n,isOpenbook:this.isOpenbook});return{notEnoughLiquidity:i.notEnoughLiquidity,minInAmount:i.minimum.in,minOutAmount:i.minimum.out,inAmount:i.inAmount,outAmount:i.outAmount,feeAmount:i.feeAmount,feeMint:this.market.quoteMintAddress.toBase58(),feePct:i.feePct,priceImpactPct:i.priceImpactPct}}getSwapLegAndAccounts(e){var t;if(!e.openOrdersAddress)throw new Error(\"Missing open orders\");return function({market:e,sourceMint:t,openOrdersAddress:n,userSourceTokenAccount:i,userDestinationTokenAccount:o,userTransferAuthority:s,referrer:a,isOpenbook:r}){const{side:u,coinWallet:c,pcWallet:m}=t.equals(e.baseMintAddress)?{side:Rn.Ask,coinWallet:i,pcWallet:o}:{side:Rn.Bid,coinWallet:o,pcWallet:i};return[Gn(r?Yn(u):Nn(u)),oi.instruction.serumSwap({accounts:mi(e,n,i,c,m,s),remainingAccounts:a?[{pubkey:a,isSigner:!1,isWritable:!0}]:[si]}).keys]}({market:this.market,openOrdersAddress:e.openOrdersAddress,referrer:null==e||null===(t=e.quoteMintToReferrer)||void 0===t?void 0:t.get(this.market.quoteMintAddress.toBase58()),isOpenbook:this.isOpenbook,...e})}get reserveTokenMints(){return[this.market.baseMintAddress,this.market.quoteMintAddress]}}wo.getL2=Mo;const Po=J([G(\"version\"),G(\"isInitialized\"),G(\"bumpSeed\"),Ln(\"tokenProgramId\"),Ln(\"tokenAccountA\"),Ln(\"tokenAccountB\"),Ln(\"tokenPool\"),Ln(\"mintA\"),Ln(\"mintB\"),Ln(\"feeAccount\"),Dn(\"tradeFeeNumerator\"),Dn(\"tradeFeeDenominator\"),Dn(\"ownerTradeFeeNumerator\"),Dn(\"ownerTradeFeeDenominator\"),Dn(\"ownerWithdrawFeeNumerator\"),Dn(\"ownerWithdrawFeeDenominator\"),Dn(\"hostFeeNumerator\"),Dn(\"hostFeeDenominator\"),G(\"curveType\"),_(32,\"curveParameters\")]),To=J([G(\"version\"),G(\"isInitialized\"),G(\"bumpSeed\"),Ln(\"tokenProgramId\"),Ln(\"tokenAccountA\"),Ln(\"tokenAccountB\"),Ln(\"tokenPool\"),Ln(\"mintA\"),Ln(\"mintB\"),Ln(\"feeAccount\"),Dn(\"tradeFeeNumerator\"),Dn(\"tradeFeeDenominator\"),Dn(\"ownerTradeFeeNumerator\"),Dn(\"ownerTradeFeeDenominator\"),Dn(\"ownerWithdrawFeeNumerator\"),Dn(\"ownerWithdrawFeeDenominator\"),G(\"curveType\"),_(32,\"curveParameters\"),G(\"poolNonce\")]);var vo;!function(e){e[e.ConstantProduct=0]=\"ConstantProduct\",e[e.Stable=2]=\"Stable\"}(vo||(vo={}));class bo{constructor(t,n,i){if(this.label=void 0,this.id=void 0,this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.tokenSwapState=void 0,this.curveType=void 0,this.feePct=void 0,this.tokenReserveAmounts=void 0,this.calculator=void 0,this.label=i,this.id=t.toBase58(),this.tokenSwapState=function(t,n){const i=n.owner,o=i.equals(Zt)?To.decode(n.data):Po.decode(n.data);if(!o.isInitialized)throw new Error(\"Invalid token swap state\");const s=xn([t.toBuffer(),Buffer.from([o.bumpSeed])],i),a=new e(o.tokenPool),r=new e(o.feeAccount),u=new e(o.tokenAccountA),c=new e(o.tokenAccountB),m=new e(o.mintA),d=new e(o.mintB);return{address:t,programId:i,tokenProgramId:new e(o.tokenProgramId),poolToken:a,feeAccount:r,authority:s,tokenAccountA:u,tokenAccountB:c,mintA:m,mintB:d,tradeFeeNumerator:o.tradeFeeNumerator,tradeFeeDenominator:o.tradeFeeDenominator,ownerTradeFeeNumerator:o.ownerTradeFeeNumerator,ownerTradeFeeDenominator:o.ownerTradeFeeDenominator,ownerWithdrawFeeNumerator:o.ownerWithdrawFeeNumerator,ownerWithdrawFeeDenominator:o.ownerWithdrawFeeDenominator,curveType:o.curveType,curveParameters:o.curveParameters,poolNonce:\"poolNonce\"in o?o.poolNonce:void 0}}(t,n),this.curveType=this.tokenSwapState.curveType,!(this.curveType in vo))throw new Error(`curveType ${this.tokenSwapState.curveType} is not supported`);const o=bo.getFeeFraction(this.tokenSwapState.tradeFeeNumerator,this.tokenSwapState.tradeFeeDenominator),s=bo.getFeeFraction(this.tokenSwapState.ownerTradeFeeNumerator,this.tokenSwapState.ownerTradeFeeDenominator);this.calculator=this.tokenSwapState.curveType===vo.ConstantProduct?new y(o,s):new A(I.BigInt(this.tokenSwapState.curveParameters[0]),o,s),this.feePct=bo.getFeeDecimal(this.tokenSwapState.tradeFeeNumerator,this.tokenSwapState.tradeFeeDenominator).add(bo.getFeeDecimal(this.tokenSwapState.ownerTradeFeeNumerator,this.tokenSwapState.ownerTradeFeeDenominator)).toNumber()}static getFeeFraction(e,t){return new M(I.BigInt(e.toString()),I.BigInt(t.toString()))}static getFeeDecimal(e,t){return e.eq(new X(0))?new ie(0):new ie(e.toString()).div(t.toString())}getAccountsForUpdate(){return[this.tokenSwapState.tokenAccountA,this.tokenSwapState.tokenAccountB]}update(e){const t=yt(e,this.getAccountsForUpdate());this.tokenReserveAmounts=wt(t)}getQuote({sourceMint:e,amount:t}){if(!this.tokenReserveAmounts)throw new Error(\"Missing tokenReserveAmounts\");const n=this.reserveTokenMints[0].equals(e)?1:0,i=this.calculator.exchange(this.tokenReserveAmounts,t,n);return{notEnoughLiquidity:!1,inAmount:t,outAmount:i.expectedOutputAmount,feeAmount:i.fees,feeMint:e.toBase58(),feePct:this.feePct,priceImpactPct:i.priceImpact.toNumber()}}getSwapLegAndAccounts(e){return function({tokenSwapState:e,sourceMint:t,userSourceTokenAccount:n,userDestinationTokenAccount:i,userTransferAuthority:o,isStep:s}){const[a,r]=t.equals(e.mintA)?[e.tokenAccountA,e.tokenAccountB]:[e.tokenAccountB,e.tokenAccountA];return[Gn(s?{step:{}}:{tokenSwap:{}}),(s?oi.instruction.stepSwap:oi.instruction.tokenSwap)({accounts:{tokenSwapProgram:e.programId,tokenProgram:Q,swap:e.address,authority:e.authority,userTransferAuthority:o,source:n,swapSource:a,swapDestination:r,destination:i,poolMint:e.poolToken,poolFee:e.feeAccount}}).keys]}({tokenSwapState:this.tokenSwapState,...e,isStep:this.tokenSwapState.programId.equals(Zt)})}get reserveTokenMints(){return[this.tokenSwapState.mintA,this.tokenSwapState.mintB]}}function Bo(e){return e.reduce(((t,n)=>(e.forEach((e=>{n!==e&&t.push([n,e])})),t)),new Array)}const Io=I.BigInt(100);class Lo{constructor(e,t,n){this.firstAmm=void 0,this.secondAmm=void 0,this.reserveTokenMints=void 0,this.market=void 0,this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.portion1=0,this.portion2=0,this.firstAmm=e,this.secondAmm=t,this.reserveTokenMints=n,this.market=e instanceof wo?e.market:t instanceof wo?t.market:null}static getAmmIdsFromSplitTradeAmmId(e){const t=e.split(\"-\");return t.length>1?t:[]}static create(e,t){if(!function(e,t){return!kt(lt,e.label,t.label)}(e,t))return;const n=Bo(e.reserveTokenMints),i=Bo(t.reserveTokenMints);for(const o of n)for(const n of i)if(o.every(((e,t)=>e.equals(n[t]))))return new Lo(e,t,o)}setPortions(e,t){if(e+t!==100)throw new Error(\"Split trade portions must sum to 100\");this.portion1=e,this.portion2=t}get id(){return`${this.firstAmm.id}-${this.secondAmm.id}`}get label(){return[{label:this.firstAmm.label,portion:this.portion1},{label:this.secondAmm.label,portion:this.portion2}].sort(((e,t)=>t.portion-e.portion)).map((({label:e,portion:t})=>`${e} (${t}%)`)).join(\" + \")}getAccountsForUpdate(){return[]}update(e){}getQuote(e){const t=e.sourceMint.toBase58(),n=e.amount;let i={outAmount:v,portion:0,firstQuote:void 0,secondQuote:void 0};for(let t=100;t-=5;t>0){const o=I.divide(I.multiply(n,I.BigInt(t)),Io),s=I.subtract(n,o),a=this.firstAmm.getQuote({...e,amount:o}),r=this.secondAmm.getQuote({...e,amount:s}),u=I.add(a.outAmount,r.outAmount);if(I.lessThan(u,i.outAmount))break;i={outAmount:u,portion:t,firstQuote:a,secondQuote:r}}if(!i.firstQuote||!i.secondQuote)throw new Error(\"Unreachable: There was no better solution than getting 0 outAmount\");const{outAmount:o,portion:s,firstQuote:a,secondQuote:r}=i,u=s,c=100-u;this.portion1=u,this.portion2=c;let m={amount:a.feeAmount,mint:a.feeMint},d={amount:r.feeAmount,mint:r.feeMint};m.mint!==d.mint&&(m.mint!==t&&(m={amount:I.divide(I.divide(I.multiply(m.amount,I.multiply(n,I.BigInt(u))),Io),i.outAmount),mint:t}),d.mint!==t&&(d={amount:I.divide(I.divide(I.multiply(I.multiply(d.amount,n),I.BigInt(c)),Io),i.outAmount),mint:t}));const p=(u*a.feePct+c*r.feePct)/100,l=(u*a.priceImpactPct+c*r.priceImpactPct)/100;return{notEnoughLiquidity:!1,inAmount:e.amount,outAmount:o,feeAmount:I.add(m.amount,d.amount),feeMint:m.mint,feePct:p,priceImpactPct:l}}getSwapLegAndAccounts(e){let[t,n]=this.firstAmm.getSwapLegAndAccounts(e),[i,o]=this.secondAmm.getSwapLegAndAccounts(e),s=[$n(this.portion1,t),$n(this.portion2,i)],a=[...n,...o];return[Jn(s),a]}}function Fo(e,t){const n=nt.parse(t);if(!n)throw new Error(`Failed to parse whirlpool ${e.toBase58()}`);return n}function Do(e,t){const n=it.parse(t);if(!n)throw new Error(`Failed to parse tick array ${e.toBase58()}`);return n}class qo{constructor(e,t){this.address=void 0,this.id=void 0,this.label=\"Orca (Whirlpools)\",this.shouldPrefetch=!0,this.exactOutputSupported=!0,this.hasDynamicAccounts=!0,this.whirlpoolData=void 0,this.tickArrays={aToB:[],bToA:[]},this.tickPks=void 0,this.oracle=void 0,this.feePct=void 0,this.address=e,this.id=e.toBase58(),this.whirlpoolData=Fo(e,t.data),this.oracle=K([Buffer.from(\"oracle\"),e.toBuffer()],Xt)[0],this.feePct=new ie(this.whirlpoolData.feeRate).div(1e6),this.tickPks=this.getTickArrayPks()}getTickArrayPks(){const e={aToB:[],bToA:[]};return[!0,!1].forEach((t=>{e[t?\"aToB\":\"bToA\"].push(...et.getTickArrayPublicKeys(this.whirlpoolData.tickCurrentIndex,this.whirlpoolData.tickSpacing,t,Xt,this.address))})),e}getAccountsForUpdate(){return[this.address,...this.tickPks.aToB,...this.tickPks.bToA]}update(e){const t=e.get(this.address.toBase58());if(!t)throw new Error(`Missing ${this.address.toBase58()}`);this.whirlpoolData=Fo(this.address,t.data),this.tickPks=this.getTickArrayPks();const n={aToB:[],bToA:[]};[!0,!1].forEach((t=>{const i=t?\"aToB\":\"bToA\";for(const t of this.tickPks[i]){const o=t.toBase58(),s=e.get(o);if(!s)continue;const a=Do(t,s.data);n[i].push({address:t,data:a})}})),this.tickArrays=n}getQuote({sourceMint:e,amount:t,swapMode:n}){const i=!!e.equals(this.whirlpoolData.tokenMintA),o=n===Mt.ExactIn,s=tt({amountSpecifiedIsInput:o,aToB:i,otherAmountThreshold:et.getDefaultOtherAmountThreshold(o),sqrtPriceLimit:et.getDefaultSqrtPriceLimit(i),tickArrays:this.tickArrays[i?\"aToB\":\"bToA\"],tokenAmount:new te(t.toString()),whirlpoolData:this.whirlpoolData}),a=I.BigInt(s.estimatedAmountIn.toString()),r=I.BigInt(s.estimatedAmountOut.toString()),u=I.BigInt(s.estimatedFeeAmount.toString()),c=s.aToB?new ie(s.estimatedAmountOut.toString()).div(s.estimatedAmountIn.toString()):new ie(s.estimatedAmountIn.toString()).div(s.estimatedAmountOut.toString()),m=(d=this.whirlpoolData.sqrtPrice,new ie(d.toString()).mul(ie.pow(2,-64))).pow(2);var d;const p=m.minus(c).div(m).abs().toNumber();return{notEnoughLiquidity:!1,inAmount:a,outAmount:r,feeAmount:u,feeMint:e.toBase58(),feePct:this.feePct.toNumber(),priceImpactPct:Number(p)}}getSwapLegAndAccounts(e){const t=e.sourceMint.equals(this.whirlpoolData.tokenMintA),n=e.swapMode===Mt.ExactIn,{tickArray0:i,tickArray1:o,tickArray2:s}=tt({amountSpecifiedIsInput:n,aToB:t,otherAmountThreshold:et.getDefaultOtherAmountThreshold(n),sqrtPriceLimit:et.getDefaultSqrtPriceLimit(t),tickArrays:this.tickArrays[t?\"aToB\":\"bToA\"],tokenAmount:new te(e.amount.toString()),whirlpoolData:this.whirlpoolData});return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i}){const[o,s]=e.aToB?[t,n]:[n,t];return[Gn(Xn(e.aToB)),oi.instruction.whirlpoolSwap({accounts:{swapProgram:Xt,tokenProgram:Q,tokenAuthority:i,whirlpool:e.whirlpool,tokenOwnerAccountA:o,tokenVaultA:e.tokenVaultA,tokenOwnerAccountB:s,tokenVaultB:e.tokenVaultB,tickArray0:e.tickArray0,tickArray1:e.tickArray1,tickArray2:e.tickArray2,oracle:e.oracle}}).keys]}({additionalArgs:{aToB:t,whirlpool:this.address,tickArray0:i,tickArray1:o,tickArray2:s,oracle:this.oracle,...this.whirlpoolData},...e})}createExactOutSwapInstruction(e){const t=e.sourceMint.equals(this.whirlpoolData.tokenMintA),n=e.swapMode===Mt.ExactIn,{tickArray0:i,tickArray1:o,tickArray2:s}=tt({amountSpecifiedIsInput:n,aToB:t,otherAmountThreshold:et.getDefaultOtherAmountThreshold(n),sqrtPriceLimit:et.getDefaultSqrtPriceLimit(t),tickArrays:this.tickArrays[t?\"aToB\":\"bToA\"],tokenAmount:new te(e.amount.toString()),whirlpoolData:this.whirlpoolData});return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i,outAmount:o,inAmount:s,slippageBps:a,platformFee:r,overflowFeeAccount:u}){var c;const[m,d]=e.aToB?[t,n]:[n,t];return oi.instruction.whirlpoolSwapExactOutput(o,{amount:s,slippageBps:a},e.aToB,null!==(c=null==r?void 0:r.feeBps)&&void 0!==c?c:0,{accounts:{swapProgram:Xt,tokenProgram:Q,tokenAuthority:i,whirlpool:e.whirlpool,tokenOwnerAccountA:m,tokenVaultA:e.tokenVaultA,tokenOwnerAccountB:d,tokenVaultB:e.tokenVaultB,tickArray0:e.tickArray0,tickArray1:e.tickArray1,tickArray2:e.tickArray2,oracle:e.oracle},remainingAccounts:pi(null==r?void 0:r.feeAccount,u)})}({additionalArgs:{aToB:t,whirlpool:this.address,tickArray0:i,tickArray1:o,tickArray2:s,oracle:this.oracle,...this.whirlpoolData},...e,outAmount:new te(e.amount.toString()),inAmount:new te(e.inAmount.toString())})}get reserveTokenMints(){return[this.whirlpoolData.tokenMintA,this.whirlpoolData.tokenMintB]}}class xo{constructor(t,n,i){this.address=void 0,this.id=void 0,this.label=\"Dradex\",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.state=void 0,this.orderBookState=void 0,this.quoteCalculator=void 0,this.marketUser=void 0,this.address=t,this.id=t.toBase58(),this.state=ot.accounts.decode(\"market\",n.data),this.marketUser=new e(i.marketUser)}getAccountsForUpdate(){return[this.address,...this.reserveTokenMints,this.state.orderBook.bids,this.state.orderBook.asks]}update(e){const t=e.get(this.id),n=e.get(this.state.orderBook.bids.toString()),i=e.get(this.state.orderBook.asks.toString()),o=this.reserveTokenMints.map((t=>e.get(t.toString())));if(!t||!n||!i||o.find((e=>!e)))throw new Error(`One of the required accounts is missing: ${this.address.toBase58()}`);if(o.length!==this.reserveTokenMints.length)throw new Error(`Missing mint info: ${this.address.toBase58()}`);this.state=ot.accounts.decode(\"market\",t.data);const s=this.reserveTokenMints.map(((e,t)=>D(o[t].data,e)));this.orderBookState={bids:at.decode(n.data).items,asks:at.decode(i.data).items},this.quoteCalculator=new st(this.state,this.orderBookState,s)}getQuote(e){if(!this.quoteCalculator)throw new Error(`Quote calculator is not initialized: ${this.address.toBase58()}`);const t=this.quoteCalculator.getQuote(e);return{...t,priceImpactPct:t.priceImpactPct/100}}getSwapLegAndAccounts(e){var t;return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:i,userTransferAuthority:o,sourceMint:s}){const{side:a,t0User:r,t1User:u}=s.equals(e.t0)?{side:Rn.Ask,t0User:t,t1User:i}:{side:Rn.Bid,t0User:i,t1User:t};return[Gn(Qn(a)),oi.instruction.dradexSwap({accounts:{swapProgram:mn,pair:e.pair,market:e.market,eventQueue:e.eventQueue,dexUser:gn,marketUser:e.marketUser,bids:e.bids,asks:e.asks,t0Vault:e.t0Vault,t1Vault:e.t1Vault,t0User:r,t1User:u,master:pn,signer:o,systemProgram:n.programId,tokenProgram:Q,logger:dn},remainingAccounts:e.referrer?[{pubkey:e.referrer,isSigner:!1,isWritable:!0}]:[si]}).keys]}({additionalArgs:{pair:this.state.pair,market:this.address,eventQueue:this.state.eventQueue,marketUser:this.marketUser,bids:this.state.orderBook.bids,asks:this.state.orderBook.asks,t0:this.state.t0,t1:this.state.t1,t0Vault:this.state.t0Vault,t1Vault:this.state.t1Vault,referrer:null===(t=e.quoteMintToReferrer)||void 0===t?void 0:t.get(e.destinationMint.toBase58())},...e})}get reserveTokenMints(){return[this.state.t0,this.state.t1]}}class Eo{constructor(e,t){this.address=void 0,this.label=\"Raydium CLMM\",this.id=void 0,this.reserveTokenMints=void 0,this.hasDynamicAccounts=!0,this.shouldPrefetch=!0,this.exactOutputSupported=!0,this.programId=void 0,this.poolState=void 0,this.coder=void 0,this.tickArrayPks=void 0,this.tickArrayCache={},this.ammV3PoolInfo=void 0,this.address=e,this.id=e.toBase58(),this.address=e,this.coder=new C(rt),this.poolState=this.coder.decode(\"poolState\",t.data),this.reserveTokenMints=[this.poolState.tokenMint0,this.poolState.tokenMint1],this.programId=hn,this.tickArrayPks=ut.getTickArrayPks(this.address,this.poolState,this.programId)}getAccountsForUpdate(){return[this.address,this.poolState.ammConfig,...this.tickArrayPks]}update(e){const t=e.get(this.id);if(!t)throw new Error(\"Missing poolStateAccountInfo\");const n=e.get(this.poolState.ammConfig.toBase58());if(!n)throw new Error(\"Missing ammConfigAccoutnInfo\");this.poolState=this.coder.decode(\"poolState\",t.data);const i=this.coder.decode(\"ammConfig\",n.data);this.tickArrayPks=ut.getTickArrayPks(this.address,this.poolState,this.programId);const o={};for(const t of this.tickArrayPks){const n=e.get(t.toBase58());if(!n)continue;const i=this.coder.decode(\"tickArrayState\",n.data);o[i.startTickIndex]={...i,address:t}}this.tickArrayCache=o,this.ammV3PoolInfo=ut.formatPoolInfo({address:this.address,poolState:this.poolState,ammConfig:i,programId:this.programId})}getQuote(e){if(0!==this.poolState.status)throw new Error(\"Pool is not swapable\");if(!this.ammV3PoolInfo)throw new Error(\"Missing ammV3PoolInfo\");if(e.swapMode===Mt.ExactIn){const{amountOut:t,fee:n,priceImpact:i}=ut.computeAmountOut({poolInfo:this.ammV3PoolInfo,tickArrayCache:this.tickArrayCache,baseMint:e.sourceMint,amountIn:new te(e.amount.toString()),slippage:0});return{notEnoughLiquidity:!1,inAmount:e.amount,outAmount:I.BigInt(t.toString()),feeAmount:I.BigInt(n.toString()),feeMint:e.sourceMint.toString(),feePct:this.ammV3PoolInfo.ammConfig.tradeFeeRate/10**6,priceImpactPct:i}}{const{amountIn:t,fee:n,priceImpact:i}=ut.computeAmountIn({poolInfo:this.ammV3PoolInfo,tickArrayCache:this.tickArrayCache,baseMint:e.destinationMint,amountOut:new te(e.amount.toString()),slippage:0});return{notEnoughLiquidity:!1,inAmount:I.BigInt(t.toString()),outAmount:e.amount,feeAmount:I.BigInt(n.toString()),feeMint:e.sourceMint.toString(),feePct:this.ammV3PoolInfo.ammConfig.tradeFeeRate/10**6,priceImpactPct:i}}}getSwapLegAndAccounts(e){if(!this.ammV3PoolInfo)throw new Error(\"Missing ammV3PoolInfo\");const{remainingAccounts:t}=ut.computeAmountOut({poolInfo:this.ammV3PoolInfo,tickArrayCache:this.tickArrayCache,baseMint:e.sourceMint,amountIn:new te(e.amount.toString()),slippage:0}),[n,i]=e.sourceMint.equals(this.poolState.tokenMint0)?[this.poolState.tokenVault0,this.poolState.tokenVault1]:[this.poolState.tokenVault1,this.poolState.tokenVault0],o=t.shift();if(!o)throw new Error(\"Missing at least one tick array\");return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i}){const o=e.remainingAccounts.map((e=>({pubkey:e,isWritable:!0,isSigner:!1})));return o.push(si),[Gn({raydiumClmm:{}}),oi.instruction.raydiumClmmSwap({accounts:{swapProgram:hn,payer:i,ammConfig:e.ammConfig,poolState:e.poolState,inputTokenAccount:t,outputTokenAccount:n,inputVault:e.inputVault,outputVault:e.outputVault,observationState:e.observationState,tokenProgram:Q,tickArray:e.tickArray},remainingAccounts:o}).keys]}({additionalArgs:{poolState:this.address,inputVault:n,outputVault:i,observationState:this.poolState.observationKey,tickArray:o,remainingAccounts:t,...this.poolState},...e})}createExactOutSwapInstruction(e){if(!this.ammV3PoolInfo)throw new Error(\"Missing ammV3PoolInfo\");const{remainingAccounts:t}=ut.computeAmountIn({poolInfo:this.ammV3PoolInfo,tickArrayCache:this.tickArrayCache,baseMint:e.sourceMint,amountOut:new te(e.amount.toString()),slippage:0}),[n,i]=e.sourceMint.equals(this.poolState.tokenMint0)?[this.poolState.tokenVault0,this.poolState.tokenVault1]:[this.poolState.tokenVault1,this.poolState.tokenVault0],o=t.shift();if(!o)throw new Error(\"Missing at least one tick array\");return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:n,userTransferAuthority:i,outAmount:o,inAmount:s,slippageBps:a,platformFee:r,overflowFeeAccount:u}){var c;const m=e.remainingAccounts.map((e=>({pubkey:e,isWritable:!0,isSigner:!1})));return m.push(si),m.push(...pi(null==r?void 0:r.feeAccount,u)),oi.instruction.raydiumClmmSwapExactOutput(o,{amount:s,slippageBps:a},null!==(c=null==r?void 0:r.feeBps)&&void 0!==c?c:0,{accounts:{swapProgram:hn,payer:i,ammConfig:e.ammConfig,poolState:e.poolState,inputTokenAccount:t,outputTokenAccount:n,inputVault:e.inputVault,outputVault:e.outputVault,observationState:e.observationState,tokenProgram:Q,tickArray:e.tickArray},remainingAccounts:m})}({additionalArgs:{poolState:this.address,inputVault:n,outputVault:i,observationState:this.poolState.observationKey,tickArray:o,remainingAccounts:t,...this.poolState},...e,outAmount:new te(e.amount.toString()),inAmount:new te(e.inAmount.toString())})}}const Oo=new V({version:\"0.1.1\",name:\"marcopolo\",instructions:[{name:\"createPool\",accounts:[{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"poolXAccount\",isMut:!0,isSigner:!0},{name:\"poolYAccount\",isMut:!0,isSigner:!0},{name:\"adminXAccount\",isMut:!0,isSigner:!1},{name:\"adminYAccount\",isMut:!0,isSigner:!1},{name:\"admin\",isMut:!0,isSigner:!0},{name:\"projectOwner\",isMut:!1,isSigner:!1},{name:\"programAuthority\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"lpFee\",type:{defined:\"FixedPoint\"}},{name:\"buybackFee\",type:{defined:\"FixedPoint\"}},{name:\"projectFee\",type:{defined:\"FixedPoint\"}},{name:\"mercantiFee\",type:{defined:\"FixedPoint\"}},{name:\"initialTokenX\",type:{defined:\"Token\"}},{name:\"initialTokenY\",type:{defined:\"Token\"}},{name:\"bump\",type:\"u8\"}]},{name:\"createProvider\",accounts:[{name:\"pool\",isMut:!0,isSigner:!1},{name:\"farm\",isMut:!0,isSigner:!1},{name:\"provider\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"poolXAccount\",isMut:!0,isSigner:!1},{name:\"poolYAccount\",isMut:!0,isSigner:!1},{name:\"ownerXAccount\",isMut:!0,isSigner:!1},{name:\"ownerYAccount\",isMut:!0,isSigner:!1},{name:\"owner\",isMut:!0,isSigner:!0},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"tokenXAmount\",type:{defined:\"Token\"}},{name:\"tokenYAmount\",type:{defined:\"Token\"}},{name:\"bump\",type:\"u8\"}]},{name:\"createState\",accounts:[{name:\"state\",isMut:!0,isSigner:!1},{name:\"admin\",isMut:!0,isSigner:!0},{name:\"programAuthority\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1}],args:[{name:\"nonce\",type:\"u8\"}]},{name:\"addTokens\",accounts:[{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!0,isSigner:!1},{name:\"farm\",isMut:!0,isSigner:!1},{name:\"provider\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"tokenMarco\",isMut:!0,isSigner:!1},{name:\"tokenProjectFirst\",isMut:!0,isSigner:!1},{name:\"tokenProjectSecond\",isMut:!0,isSigner:!1},{name:\"ownerXAccount\",isMut:!0,isSigner:!1},{name:\"ownerYAccount\",isMut:!0,isSigner:!1},{name:\"poolXAccount\",isMut:!0,isSigner:!1},{name:\"poolYAccount\",isMut:!0,isSigner:!1},{name:\"ownerMarcoAccount\",isMut:!0,isSigner:!1},{name:\"ownerProjectFirstAccount\",isMut:!0,isSigner:!1},{name:\"ownerProjectSecondAccount\",isMut:!0,isSigner:!1},{name:\"tokenMarcoAccount\",isMut:!0,isSigner:!1},{name:\"tokenProjectFirstAccount\",isMut:!0,isSigner:!1},{name:\"tokenProjectSecondAccount\",isMut:!0,isSigner:!1},{name:\"owner\",isMut:!0,isSigner:!0},{name:\"programAuthority\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"associatedTokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"deltaX\",type:{defined:\"Token\"}},{name:\"deltaY\",type:{defined:\"Token\"}}]},{name:\"withdrawBuyback\",accounts:[{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"buybackXAccount\",isMut:!0,isSigner:!1},{name:\"buybackYAccount\",isMut:!0,isSigner:!1},{name:\"poolXAccount\",isMut:!0,isSigner:!1},{name:\"poolYAccount\",isMut:!0,isSigner:!1},{name:\"admin\",isMut:!0,isSigner:!0},{name:\"programAuthority\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"associatedTokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[]},{name:\"swap\",accounts:[{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"poolXAccount\",isMut:!0,isSigner:!1},{name:\"poolYAccount\",isMut:!0,isSigner:!1},{name:\"swapperXAccount\",isMut:!0,isSigner:!1},{name:\"swapperYAccount\",isMut:!0,isSigner:!1},{name:\"swapper\",isMut:!0,isSigner:!0},{name:\"referrerXAccount\",isMut:!0,isSigner:!1},{name:\"referrerYAccount\",isMut:!0,isSigner:!1},{name:\"referrer\",isMut:!0,isSigner:!1},{name:\"programAuthority\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"associatedTokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"deltaIn\",type:{defined:\"Token\"}},{name:\"priceLimit\",type:{defined:\"FixedPoint\"}},{name:\"xToY\",type:\"bool\"}]},{name:\"withdrawShares\",accounts:[{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!0,isSigner:!1},{name:\"farm\",isMut:!0,isSigner:!1},{name:\"provider\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"tokenMarco\",isMut:!0,isSigner:!1},{name:\"tokenProjectFirst\",isMut:!0,isSigner:!1},{name:\"tokenProjectSecond\",isMut:!0,isSigner:!1},{name:\"poolXAccount\",isMut:!0,isSigner:!1},{name:\"poolYAccount\",isMut:!0,isSigner:!1},{name:\"tokenMarcoAccount\",isMut:!0,isSigner:!1},{name:\"tokenProjectFirstAccount\",isMut:!0,isSigner:!1},{name:\"tokenProjectSecondAccount\",isMut:!0,isSigner:!1},{name:\"ownerXAccount\",isMut:!0,isSigner:!1},{name:\"ownerYAccount\",isMut:!0,isSigner:!1},{name:\"ownerMarcoAccount\",isMut:!0,isSigner:!1},{name:\"ownerProjectFirstAccount\",isMut:!0,isSigner:!1},{name:\"ownerProjectSecondAccount\",isMut:!0,isSigner:!1},{name:\"owner\",isMut:!0,isSigner:!0},{name:\"programAuthority\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"associatedTokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"shares\",type:{defined:\"Token\"}}]},{name:\"withdrawLpFee\",accounts:[{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!1,isSigner:!1},{name:\"provider\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"ownerXAccount\",isMut:!0,isSigner:!1},{name:\"ownerYAccount\",isMut:!0,isSigner:!1},{name:\"poolXAccount\",isMut:!0,isSigner:!1},{name:\"poolYAccount\",isMut:!0,isSigner:!1},{name:\"owner\",isMut:!0,isSigner:!0},{name:\"programAuthority\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"associatedTokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[]},{name:\"withdrawProjectFee\",accounts:[{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"projectOwnerXAccount\",isMut:!0,isSigner:!1},{name:\"projectOwnerYAccount\",isMut:!0,isSigner:!1},{name:\"poolXAccount\",isMut:!0,isSigner:!1},{name:\"poolYAccount\",isMut:!0,isSigner:!1},{name:\"projectOwner\",isMut:!0,isSigner:!0},{name:\"programAuthority\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"associatedTokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[]},{name:\"createFarm\",accounts:[{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!1,isSigner:!1},{name:\"farm\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"tokenMarco\",isMut:!1,isSigner:!1},{name:\"tokenMarcoAccount\",isMut:!0,isSigner:!0},{name:\"adminMarcoAccount\",isMut:!0,isSigner:!1},{name:\"admin\",isMut:!0,isSigner:!0},{name:\"programAuthority\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"supply\",type:{defined:\"Token\"}},{name:\"duration\",type:\"u64\"},{name:\"bump\",type:\"u8\"}]},{name:\"createDualFarm\",accounts:[{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!1,isSigner:!1},{name:\"farm\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"tokenMarco\",isMut:!1,isSigner:!1},{name:\"tokenProjectFirst\",isMut:!1,isSigner:!1},{name:\"tokenMarcoAccount\",isMut:!0,isSigner:!0},{name:\"tokenProjectFirstAccount\",isMut:!0,isSigner:!0},{name:\"adminMarcoAccount\",isMut:!0,isSigner:!1},{name:\"adminProjectFirstAccount\",isMut:!0,isSigner:!1},{name:\"admin\",isMut:!0,isSigner:!0},{name:\"programAuthority\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"supplyMarco\",type:{defined:\"Token\"}},{name:\"supplyProjectFirst\",type:{defined:\"Token\"}},{name:\"duration\",type:\"u64\"},{name:\"bump\",type:\"u8\"}]},{name:\"createTripleFarm\",accounts:[{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!1,isSigner:!1},{name:\"farm\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"tokenMarco\",isMut:!1,isSigner:!1},{name:\"tokenProjectFirst\",isMut:!1,isSigner:!1},{name:\"tokenProjectSecond\",isMut:!1,isSigner:!1},{name:\"tokenMarcoAccount\",isMut:!0,isSigner:!0},{name:\"tokenProjectFirstAccount\",isMut:!0,isSigner:!0},{name:\"tokenProjectSecondAccount\",isMut:!0,isSigner:!0},{name:\"adminMarcoAccount\",isMut:!0,isSigner:!1},{name:\"adminProjectFirstAccount\",isMut:!0,isSigner:!1},{name:\"adminProjectSecondAccount\",isMut:!0,isSigner:!1},{name:\"admin\",isMut:!0,isSigner:!0},{name:\"programAuthority\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"supplyMarco\",type:{defined:\"Token\"}},{name:\"supplyProjectFirst\",type:{defined:\"Token\"}},{name:\"supplyProjectSecond\",type:{defined:\"Token\"}},{name:\"duration\",type:\"u64\"},{name:\"bump\",type:\"u8\"}]},{name:\"withdrawRewards\",accounts:[{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!1,isSigner:!1},{name:\"farm\",isMut:!0,isSigner:!1},{name:\"provider\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"tokenMarco\",isMut:!0,isSigner:!1},{name:\"tokenProjectFirst\",isMut:!0,isSigner:!1},{name:\"tokenProjectSecond\",isMut:!0,isSigner:!1},{name:\"tokenMarcoAccount\",isMut:!0,isSigner:!1},{name:\"tokenProjectFirstAccount\",isMut:!0,isSigner:!1},{name:\"tokenProjectSecondAccount\",isMut:!0,isSigner:!1},{name:\"ownerMarcoAccount\",isMut:!0,isSigner:!1},{name:\"ownerProjectFirstAccount\",isMut:!0,isSigner:!1},{name:\"ownerProjectSecondAccount\",isMut:!0,isSigner:!1},{name:\"owner\",isMut:!0,isSigner:!0},{name:\"programAuthority\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"associatedTokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[]},{name:\"closePool\",accounts:[{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!0,isSigner:!1},{name:\"farm\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"tokenMarcoAccount\",isMut:!0,isSigner:!1},{name:\"tokenProjectFirstAccount\",isMut:!0,isSigner:!1},{name:\"tokenProjectSecondAccount\",isMut:!0,isSigner:!1},{name:\"poolXAccount\",isMut:!0,isSigner:!1},{name:\"poolYAccount\",isMut:!0,isSigner:!1},{name:\"buybackXAccount\",isMut:!0,isSigner:!1},{name:\"buybackYAccount\",isMut:!0,isSigner:!1},{name:\"admin\",isMut:!0,isSigner:!0},{name:\"programAuthority\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[]},{name:\"withdrawMercantiFee\",accounts:[{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"mercantiXAccount\",isMut:!0,isSigner:!1},{name:\"mercantiYAccount\",isMut:!0,isSigner:!1},{name:\"poolXAccount\",isMut:!0,isSigner:!1},{name:\"poolYAccount\",isMut:!0,isSigner:!1},{name:\"admin\",isMut:!0,isSigner:!0},{name:\"programAuthority\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[]},{name:\"addSupply\",accounts:[{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!0,isSigner:!1},{name:\"farm\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"tokenMarcoAccount\",isMut:!0,isSigner:!1},{name:\"tokenProjectFirstAccount\",isMut:!0,isSigner:!1},{name:\"tokenProjectSecondAccount\",isMut:!0,isSigner:!1},{name:\"adminMarcoAccount\",isMut:!0,isSigner:!1},{name:\"adminProjectFirstAccount\",isMut:!0,isSigner:!1},{name:\"adminProjectSecondAccount\",isMut:!0,isSigner:!1},{name:\"admin\",isMut:!1,isSigner:!0},{name:\"tokenProgram\",isMut:!1,isSigner:!1}],args:[{name:\"supplyMarco\",type:{defined:\"Token\"}},{name:\"supplyProjectFirst\",type:{defined:\"Token\"}},{name:\"supplyProjectSecond\",type:{defined:\"Token\"}},{name:\"duration\",type:\"u64\"}]},{name:\"updateFees\",accounts:[{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"admin\",isMut:!0,isSigner:!0},{name:\"programAuthority\",isMut:!1,isSigner:!1}],args:[{name:\"newBuybackFee\",type:{defined:\"FixedPoint\"}},{name:\"newProjectFee\",type:{defined:\"FixedPoint\"}},{name:\"newProviderFee\",type:{defined:\"FixedPoint\"}},{name:\"newMercantiFee\",type:{defined:\"FixedPoint\"}}]},{name:\"resetFarm\",accounts:[{name:\"state\",isMut:!1,isSigner:!1},{name:\"pool\",isMut:!1,isSigner:!1},{name:\"farm\",isMut:!0,isSigner:!1},{name:\"tokenX\",isMut:!1,isSigner:!1},{name:\"tokenY\",isMut:!1,isSigner:!1},{name:\"tokenMarco\",isMut:!1,isSigner:!1},{name:\"tokenMarcoAccount\",isMut:!0,isSigner:!1},{name:\"tokenProjectFirstAccount\",isMut:!0,isSigner:!1},{name:\"tokenProjectSecondAccount\",isMut:!0,isSigner:!1},{name:\"adminMarcoAccount\",isMut:!0,isSigner:!1},{name:\"adminProjectFirstAccount\",isMut:!0,isSigner:!1},{name:\"adminProjectSecondAccount\",isMut:!0,isSigner:!1},{name:\"admin\",isMut:!0,isSigner:!0},{name:\"programAuthority\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[]}],accounts:[{name:\"farm\",type:{kind:\"struct\",fields:[{name:\"pool\",type:\"publicKey\"},{name:\"tokens\",type:{array:[\"publicKey\",3]}},{name:\"tokenAccounts\",type:{array:[\"publicKey\",3]}},{name:\"supply\",type:{array:[{defined:\"Token\"},3]}},{name:\"supplyLeft\",type:{array:[{defined:\"Token\"},3]}},{name:\"accumulatedSecondsPerShare\",type:{defined:\"FixedPoint\"}},{name:\"offsetSecondsPerShare\",type:{defined:\"FixedPoint\"}},{name:\"startTime\",type:\"u64\"},{name:\"endTime\",type:\"u64\"},{name:\"lastUpdate\",type:\"u64\"},{name:\"bump\",type:\"u8\"},{name:\"farmType\",type:{defined:\"FarmType\"}}]}},{name:\"pool\",type:{kind:\"struct\",fields:[{name:\"tokenX\",type:\"publicKey\"},{name:\"tokenY\",type:\"publicKey\"},{name:\"poolXAccount\",type:\"publicKey\"},{name:\"poolYAccount\",type:\"publicKey\"},{name:\"admin\",type:\"publicKey\"},{name:\"projectOwner\",type:\"publicKey\"},{name:\"tokenXReserve\",type:{defined:\"Token\"}},{name:\"tokenYReserve\",type:{defined:\"Token\"}},{name:\"selfShares\",type:{defined:\"Token\"}},{name:\"allShares\",type:{defined:\"Token\"}},{name:\"buybackAmountX\",type:{defined:\"Token\"}},{name:\"buybackAmountY\",type:{defined:\"Token\"}},{name:\"projectAmountX\",type:{defined:\"Token\"}},{name:\"projectAmountY\",type:{defined:\"Token\"}},{name:\"mercantiAmountX\",type:{defined:\"Token\"}},{name:\"mercantiAmountY\",type:{defined:\"Token\"}},{name:\"lpAccumulatorX\",type:{defined:\"FixedPoint\"}},{name:\"lpAccumulatorY\",type:{defined:\"FixedPoint\"}},{name:\"constK\",type:{defined:\"Product\"}},{name:\"price\",type:{defined:\"FixedPoint\"}},{name:\"lpFee\",type:{defined:\"FixedPoint\"}},{name:\"buybackFee\",type:{defined:\"FixedPoint\"}},{name:\"projectFee\",type:{defined:\"FixedPoint\"}},{name:\"mercantiFee\",type:{defined:\"FixedPoint\"}},{name:\"farmCount\",type:\"u64\"},{name:\"bump\",type:\"u8\"}]}},{name:\"provider\",type:{kind:\"struct\",fields:[{name:\"tokenX\",type:\"publicKey\"},{name:\"tokenY\",type:\"publicKey\"},{name:\"owner\",type:\"publicKey\"},{name:\"shares\",type:{defined:\"Token\"}},{name:\"lastFeeAccumulatorX\",type:{defined:\"FixedPoint\"}},{name:\"lastFeeAccumulatorY\",type:{defined:\"FixedPoint\"}},{name:\"lastSecondsPerShare\",type:{defined:\"FixedPoint\"}},{name:\"lastWithdrawTime\",type:\"u64\"},{name:\"tokensOwedX\",type:{defined:\"Token\"}},{name:\"tokensOwedY\",type:{defined:\"Token\"}},{name:\"currentFarmCount\",type:\"u64\"},{name:\"bump\",type:\"u8\"}]}},{name:\"state\",type:{kind:\"struct\",fields:[{name:\"admin\",type:\"publicKey\"},{name:\"programAuthority\",type:\"publicKey\"},{name:\"bump\",type:\"u8\"},{name:\"nonce\",type:\"u8\"}]}}],types:[{name:\"FixedPoint\",type:{kind:\"struct\",fields:[{name:\"v\",type:\"u128\"}]}},{name:\"Token\",type:{kind:\"struct\",fields:[{name:\"v\",type:\"u64\"}]}},{name:\"Product\",type:{kind:\"struct\",fields:[{name:\"v\",type:\"u128\"}]}},{name:\"FarmType\",type:{kind:\"enum\",variants:[{name:\"Single\"},{name:\"Dual\"},{name:\"Triple\"}]}}],errors:[{code:6e3,name:\"DeltaTooBig\",msg:\"Delta greater than provider's tokens\"},{code:6001,name:\"TokenUnderflow\",msg:\"Token amount underflow\"},{code:6002,name:\"WrongRatio\",msg:\"Wrong tokens ratio\"},{code:6003,name:\"TooMuchShares\",msg:\"Too much shares provided\"},{code:6004,name:\"SwapToBig\",msg:\"Swap too big\"},{code:6005,name:\"FeeExceeded\",msg:\"Fee exceeded 100%\"},{code:6007,name:\"ScalesNotEqual\",msg:\"Scales have to be equal\"},{code:6008,name:\"FeeExceededDeltaOut\",msg:\"Fees exceeded delta_out\"},{code:6009,name:\"PriceLimitExceeded\",msg:\"Price limit exceeded\"},{code:6010,name:\"MintMismatch\",msg:\"Mint mismatch\"},{code:6011,name:\"TokensAreTheSame\",msg:\"Tokens are the same\"},{code:6012,name:\"WrongFarm\",msg:\"Cannot add supply to wrong farm\"},{code:6013,name:\"RewardsExceedingSupply\",msg:\"Cannot withdraw rewards exceeding supply left\"},{code:6014,name:\"FarmNotEnded\",msg:\"Farm has not ended, cannot add additional rewards\"},{code:6015,name:\"ZeroAmount\",msg:\"Must provide a nonzero amount\"},{code:6016,name:\"InvariantChanged\",msg:\"Invariant has changed\"}],metadata:{address:\"9tKE7Mbmj4mxDjWatikzGAtkoWosiiZX9y6J4Hfm2R8H\"}},kn,Bn),Vo=new ie(10).pow(12);class Co{constructor(e,t){this.address=void 0,this.id=void 0,this.label=\"Marco Polo\",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.pool=void 0,this.calculator=void 0,this.feePct=void 0,this.tokenReserveAmounts=void 0,this.address=e,this.id=e.toBase58(),this.pool=this.decodePoolState(t);const n=this.pool.lpFee.v.add(this.pool.buybackFee.v).add(this.pool.mercantiFee.v).add(this.pool.projectFee.v);this.feePct=new ie(n.toString()).div(Vo),this.calculator=new y(new M(I.BigInt(n),I.BigInt(Vo)),T,!1)}decodePoolState(e){return Oo.coder.accounts.decode(\"pool\",e.data)}getAccountsForUpdate(){return[this.address]}update(e){const t=e.get(this.id);if(!t)throw new Error(`Pool account info is not found: ${this.id}`);const n=this.decodePoolState(t);this.pool=n,this.tokenReserveAmounts=[I.BigInt(n.tokenXReserve.v),I.BigInt(n.tokenYReserve.v)]}getQuote({destinationMint:e,amount:t}){const{tokenX:n}=this.pool;if(!this.tokenReserveAmounts)throw new Error(\"Missing tokenReserveAmounts\");const i=e.equals(n)?0:1,o=this.calculator.exchange(this.tokenReserveAmounts,t,i);return{notEnoughLiquidity:!1,inAmount:t,outAmount:o.expectedOutputAmount,feeAmount:o.fees,feeMint:e.toBase58(),feePct:this.feePct.toNumber(),priceImpactPct:o.priceImpact.toNumber()}}getSwapLegAndAccounts(e){const t=Kt;return function({additionalArgs:e,userSourceTokenAccount:t,userDestinationTokenAccount:i,userTransferAuthority:s,sourceMint:a}){const r=a.equals(e.tokenX),{swapperXAccount:u,swapperYAccount:c}=r?{swapperXAccount:t,swapperYAccount:i}:{swapperXAccount:i,swapperYAccount:t};return[Gn(zn(r)),oi.instruction.marcoPoloSwap({accounts:{swapProgram:kn,state:fn,pool:e.pool,tokenX:e.tokenX,tokenY:e.tokenY,poolXAccount:e.poolXAccount,poolYAccount:e.poolYAccount,swapperXAccount:u,swapperYAccount:c,swapper:s,referrerXAccount:e.referrerXAccount,referrerYAccount:e.referrerYAccount,referrer:e.referrer,programAuthority:An,systemProgram:n.programId,tokenProgram:Q,associatedTokenProgram:z,rent:o}}).keys]}({additionalArgs:{pool:this.address,tokenX:this.pool.tokenX,tokenY:this.pool.tokenY,poolXAccount:this.pool.poolXAccount,poolYAccount:this.pool.poolYAccount,referrer:t,referrerXAccount:ni({walletAddress:t,tokenMintAddress:this.pool.tokenX}),referrerYAccount:ni({walletAddress:t,tokenMintAddress:this.pool.tokenY})},...e})}get reserveTokenMints(){return[this.pool.tokenX,this.pool.tokenY]}}Co.getProgram=()=>Oo;const Ro=I.BigInt(1e4);class No{constructor(e,t){this.address=void 0,this.id=void 0,this.label=\"Phoenix\",this.shouldPrefetch=!1,this.exactOutputSupported=!1,this.hasDynamicAccounts=!1,this.marketData=void 0,this.ladder=void 0,this.outAmountWithoutFeesMultiplier=void 0,this.baseLotsPerBaseUnit=void 0,this.baseLotSize=void 0,this.quoteLotSize=void 0,this.tickSizeInQuoteLotsPerBaseUnitPerTick=void 0,this.address=e,this.id=e.toBase58(),this.marketData=ct(t.data),this.ladder=mt(this.marketData,-1),this.outAmountWithoutFeesMultiplier=I.BigInt(1e4-this.marketData.takerFeeBps),this.baseLotsPerBaseUnit=I.BigInt(this.marketData.baseLotsPerBaseUnit);const n=this.marketData.header;this.baseLotSize=I.BigInt(n.baseLotSize.toString()),this.quoteLotSize=I.BigInt(n.quoteLotSize.toString()),this.tickSizeInQuoteLotsPerBaseUnitPerTick=I.divide(I.BigInt(n.tickSizeInQuoteAtomsPerBaseUnit.toString()),this.quoteLotSize)}getAccountsForUpdate(){return[this.address]}update(e){const t=e.get(this.address.toBase58());if(!t)throw new Error(`Missing market accountInfo ${this.address.toBase58()}`);this.marketData=ct(t.data),this.ladder=mt(this.marketData,-1)}JSBImin(e,t){return I.lessThan(e,t)?e:t}computeQuote({sourceMint:e,amount:t}){let n,i=I.BigInt(0),o=v;if(e.equals(this.marketData.header.baseParams.mintKey)){let e=I.divide(t,this.baseLotSize);const s=I.BigInt(e);for(const[t,o]of this.ladder.bids){if(I.lessThanOrEqual(e,v))break;const s=I.BigInt(t.toString()),a=I.BigInt(o.toString()),r=this.JSBImin(a,e),u=I.divide(I.multiply(I.multiply(I.multiply(s,r),this.tickSizeInQuoteLotsPerBaseUnitPerTick),this.quoteLotSize),this.baseLotsPerBaseUnit);if(!n){const e=I.multiply(r,this.baseLotSize);n=new ie(u.toString()).div(e.toString())}i=I.add(i,u),e=I.subtract(e,r)}o=I.multiply(I.subtract(s,e),this.baseLotSize)}else{let e=I.divide(t,this.quoteLotSize);const s=I.BigInt(e);for(const[t,o]of this.ladder.asks){if(I.lessThanOrEqual(e,v))break;const s=I.BigInt(t.toString()),a=I.BigInt(o.toString()),r=I.divide(I.divide(I.multiply(e,this.baseLotsPerBaseUnit),this.tickSizeInQuoteLotsPerBaseUnitPerTick),I.BigInt(t)),u=this.JSBImin(a,r),c=I.multiply(u,this.baseLotSize),m=I.divide(I.multiply(I.multiply(s,u),this.tickSizeInQuoteLotsPerBaseUnitPerTick),this.baseLotsPerBaseUnit);if(!n){const e=I.multiply(m,this.quoteLotSize);n=new ie(c.toString()).div(e.toString())}i=I.add(i,c),e=I.subtract(e,m)}o=I.multiply(I.subtract(s,e),this.quoteLotSize)}const s=this.computAmountAfterFees(i),a=I.subtract(i,s),r=new ie(i.toString()).div(t.toString());if(!n)throw new Error(\"No best price\");return{inAmount:o,outAmount:s,feeAmount:a,priceImpactPct:n.sub(r).div(n).toNumber()}}computAmountAfterFees(e){return I.divide(I.multiply(e,this.outAmountWithoutFeesMultiplier),Ro)}getQuote({sourceMint:e,amount:t}){const{inAmount:n,outAmount:i,feeAmount:o,priceImpactPct:s}=this.computeQuote({sourceMint:e,amount:t});return{notEnoughLiquidity:!1,inAmount:n,outAmount:i,feeAmount:o,feeMint:e.toBase58(),feePct:this.marketData.takerFeeBps/1e4,priceImpactPct:s}}getSwapLegAndAccounts(t){return function({additionalArgs:e,sourceMint:t,userSourceTokenAccount:n,userDestinationTokenAccount:i,userTransferAuthority:o}){const{side:s,baseAccount:a,quoteAccount:r}=t.equals(e.baseMint)?{side:Rn.Ask,baseAccount:n,quoteAccount:i}:{side:Rn.Bid,baseAccount:i,quoteAccount:n};return[Gn(Hn(s)),oi.instruction.phoenixSwap({accounts:{swapProgram:Mn,logAuthority:e.logAuthority,market:e.market,trader:o,baseAccount:a,quoteAccount:r,baseVault:e.baseVault,quoteVault:e.quoteVault,tokenProgram:Q}}).keys]}({...t,additionalArgs:{logAuthority:e.findProgramAddressSync([Buffer.from(\"log\")],Mn)[0],market:this.address,baseVault:this.marketData.header.baseParams.vaultKey,quoteVault:this.marketData.header.quoteParams.vaultKey,baseMint:this.marketData.header.baseParams.mintKey}})}get reserveTokenMints(){return[this.marketData.header.baseParams.mintKey,this.marketData.header.quoteParams.mintKey]}}const Uo=({amms:e,asLegacyTransaction:t,isSplit:n})=>{if(t){if(e.length>2)return!1;const[t,i]=e;return n?!kt(gt,t.label,i.label):!kt(ht,t.label,i.label)}return!0},Ko=new Map([[Gt.toString(),\"Orca\"],[$t.toString(),\"Orca\"],[Zt.toString(),\"Step\"],[en.toString(),\"Penguin\"],[tn.toString(),\"Saros\"],[Jt.toString(),\"Stepn\"]]);function Wo(t,n,i){const o=new e(n.owner);if(o.equals(bt)||o.equals(Bt)||o.equals(Sn)){const e=l.getLayout(o).decode(n.data);if(!e.accountFlags.initialized||!e.accountFlags.market)throw new Error(\"Invalid market\");const t=new l(e,0,0,{},o);return new wo(t)}if(o.equals(qt))return new po(t,n,i);if(o.equals(Wt))return new oo(t,n,i);if(o.equals(k)){const e=n.data.slice(2,3),i=f.loadWithData(t,n.data,xn([t.toBuffer(),e],k));if(!i.state.isInitialized)return;return new ho(i)}if(o.equals(Ot))return new go(t,n);if(o.equals(Nt))return new Ii(t,n,i);if(o.equals(xt)||o.equals(Et))return new yi(t,n,i);if([...Ko.keys()].includes(o.toBase58())){var s;const e=null!==(s=Ko.get(n.owner.toBase58()))&&void 0!==s?s:\"Unknown\";return new bo(t,n,e)}return o.equals(Vt)?new Li(t,n,i):o.equals(Ct)?new ko(t,n):o.equals(Rt)?new ji(t,n):o.equals(ln)?new Qi(t,n):o.equals(Xt)?new qo(t,n):o.equals(Yt)?new xi(t,n):o.equals(_t)?new $i(t,n):o.equals(nn)?new co(t,n,i):o.equals(rn)?new Ui(t,n):o.equals(jt)?new Xi(t,n):o.equals(mn)?new xo(t,n,i):o.equals(cn)?new bi(t,n):o.equals(hn)?new Eo(t,n):o.equals(kn)?new Co(t,n):o.equals(Mn)?new No(t,n):void 0}class Xo{constructor(e,t){this.connection=void 0,this.ammIdToAddressLookupTable=void 0,this.ammIdToAddressLookupTableAccount=new Map,this.connection=e,this.ammIdToAddressLookupTable=t}async getAdressLookupTableAccounts(t){const n=new Map,i=[...t.reduce(((e,t)=>{const i=this.ammIdToAddressLookupTableAccount.get(t);if(i){const e=i.key.toBase58();n.has(e)||n.set(e,t)}else{const i=this.ammIdToAddressLookupTable.get(t);i&&(e.add(i),n.set(t,i))}return e}),new Set)];return(await At(this.connection,i)).reduce(((t,o,s)=>{const r=i[s];if(o){const i=new a({key:new e(r),state:a.deserialize(o.data)});t.push(i);const s=n.get(r);s&&this.ammIdToAddressLookupTableAccount.set(s,i)}return t}),new Array)}}class jo{constructor(e){this.ammIdToAddressLookupTableAccount=void 0,this.ammIdToAddressLookupTableAccount=e}static async load(t,n){const i=[...n.entries()],o=await At(t,i.map((([e,t])=>t))),s=new Map;for(const[t,n]of o.entries()){const[o,r]=i[t];n&&s.set(o,new a({key:new e(r),state:a.deserialize(n.data)}))}return new jo(s)}getAdressLookupTableAccounts(e){const t=new Set,n=e.reduce(((e,n)=>{const i=this.ammIdToAddressLookupTableAccount.get(n);if(i){const n=i.key.toBase58();t.has(n)||(e.push(i),t.add(n))}return e}),new Array);return Promise.resolve(n)}}async function Qo(e,t,n){const i=t.reduce(((e,t)=>{var n;const i=null==t||null===(n=t.params)||void 0===n?void 0:n.addressLookupTableAddress;return i&&e.set(t.pubkey,i),e}),new Map);return n?await jo.load(e,i):new Xo(e,i)}const zo={};function Yo(e){const t=e._bn.toString(),n=zo[t];if(n)return n;{const n=e.toBase58();return zo[t]=n,n}}function Ho(e){const t=new Map;return e.forEach((e=>{Bo(e.reserveTokenMints).forEach((([n,i])=>{!function(e,t,n,i){let o=i.get(e);o||(o=new Map([[t,[]]]),i.set(e,o));let s=o.get(t);s||(s=[],o.set(t,s)),s.push(n)}(Yo(n),Yo(i),e,t)}))})),t}function _o(e,t,n){return Boolean(e&&t>100&&!e.has(n))}function Jo(e){return e.marketInfos.map((e=>`${e.amm.id}-${e.inputMint}`)).join(\"-\")}async function Go({connection:t,marketInfos:n,owner:i,unwrapSOL:o}){const s=await Promise.all(n.map((({outputMint:n})=>async function({connection:t,payer:n,owner:{publicKey:i},mintAddress:o,unwrapSOL:s}){const a=\"string\"==typeof o?new e(o):o,r=ni({tokenMintAddress:a,walletAddress:i}),u={setupInstructions:[],instructions:[],cleanupInstructions:[],signers:[]},c=await t.getAccountInfo(r);if(null===c)u.setupInstructions.push(ti(n,r,i,a));else{const e=F(c.data);if(e&&!e.owner.equals(i))throw new Error(`/! ATA ${r.toBase58()} is not owned by ${i.toBase58()}`)}return a.equals(vt)&&s&&u.cleanupInstructions.push(j.createCloseAccountInstruction(Q,r,i,i,[])),{address:r,...u}}({connection:t,payer:i.publicKey,owner:i,mintAddress:n,unwrapSOL:o})))),[a]=s.splice(s.length-1,1);return{userIntermediaryTokenAccountResults:s,userDestinationTokenAccountResult:a}}async function $o(e,t,i,s){const a={setupInstructions:[],instructions:[],cleanupInstructions:[],signers:[]},r=i.address.toString();if(s){let t=s.get(r);if(t){let n=null;if(n=await e.getAccountInfo(t,\"confirmed\"),n)return{...a,address:t}}}const[u,c]=function(e,t){const[i]=K([Buffer.from(\"open_orders\"),e.publicKey.toBuffer(),t.toBuffer()],ii);return[i,oi.instruction.createOpenOrders({accounts:{openOrders:i,payer:t,dexProgram:e.programId,systemProgram:n.programId,rent:o,market:e.publicKey}})]}(i,t);return await e.getAccountInfo(u)||(a.setupInstructions=[c]),null==s||s.set(i.address.toString(),u),{...a,address:u}}function Zo(e){return e.reduce(((e,t)=>t+e),0)}const es={feeBps:0,feeAccounts:new Map};async function ts(e,t){return(await e.getTokenAccountsByOwner(t,{programId:Q})).value.reduce(((e,t)=>{const n=F(t.account.data);return n&&e.set(n.mint.toBase58(),t.pubkey),e}),new Map)}const ns=e=>new Promise((t=>setTimeout(t,e)));function is(e,t,n){if(!e)return;const i=t.get(n.toBase58());return void 0!==i?function(e,t){var n,i,o,s;const a=null===(n=t.postTokenBalances)||void 0===n||null===(i=n.find((t=>t.accountIndex===e)))||void 0===i?void 0:i.uiTokenAmount.amount,r=null===(o=t.preTokenBalances)||void 0===o||null===(s=o.find((t=>t.accountIndex===e)))||void 0===s?void 0:s.uiTokenAmount.amount;if(a)return Math.abs(parseInt(a)-(void 0!==r?parseInt(r):0))}(i,e):void 0}function os(e,t,n){const i=t.get(n.toBase58());return void 0!==i?Math.abs(e.postBalances[i]-e.preBalances[i]):0}function ss(){return(new Date).getTime()}const as={skipPreflight:!0,maxRetries:2};async function rs(e,t,n=12e4,i=500,o=2e3,s=40){const a=t.serialize(),r=await e.sendRawTransaction(a,as),u=ss();let c=ss(),m=0;for(;ss()-uo&&(c=t,m+=1,await e.sendRawTransaction(a,as));const n=await Promise.any([e.getTransaction(r,{commitment:\"confirmed\",maxSupportedTransactionVersion:0}),ns(5e3)]);if(n)return{txid:r,transactionResponse:n};await ns(i)}return{txid:r,transactionResponse:null}}function us(e){const t=\"signature\"in e?e.signature:e.signatures[0];if(!t)throw new Error(\"Transaction has no signature\");return pt.encode(t)}function cs(e,t){return\"message\"in e?e.sign(t):e.sign(...t),us(e)}class ms{constructor(e,t,n){this.connection=void 0,this.feePayer=void 0,this.instructions=void 0,this.owner=void 0,this.connection=e,this.feePayer=t,this.instructions=[],this.owner=n}addInstruction(e){return this.instructions.push(e),this}async build(e,t,n){let i=[],o=[],s=[],a=[];this.instructions.forEach((e=>{o=o.concat(e.setupInstructions),i=i.concat(e.instructions),s=s.concat(e.cleanupInstructions),a=a.concat(e.signers)}));const r=o.concat(i).concat(s),c=n?this.buildLegacyTransaction({transactionInstructions:r,blockhashWithExpiryBlockHeight:e}):this.buildVersionedTransaction({transactionInstructions:r,blockhashWithExpiryBlockHeight:e,addressLookupTables:t});return{transaction:c,signers:a,execute:this.owner.isKeyPair?()=>{const t=cs(c,[this.owner.signer,...a]),n=c.serialize();return u(this.connection,Buffer.from(n),{signature:t,...e})}:async()=>{throw new Error(\"Please use a Keypair for the owner parameter to enable the execute function\")}}}buildLegacyTransaction({transactionInstructions:e,blockhashWithExpiryBlockHeight:t}){return new c({feePayer:this.feePayer,...t}).add(...e)}buildVersionedTransaction({transactionInstructions:e,blockhashWithExpiryBlockHeight:t,addressLookupTables:n}){const i=new m({payerKey:this.feePayer,instructions:e,recentBlockhash:t.blockhash}).compileToV0Message(n);return new d(i)}}class ds{constructor(e){this._owner=void 0,this._owner=e}get publicKey(){return ds.isKeyPair(this._owner)?this._owner.publicKey:this._owner}get signer(){return ds.isKeyPair(this._owner)?this._owner:void 0}get isKeyPair(){return ds.isKeyPair(this._owner)}get isPublicKey(){return ds.isPublicKey(this._owner)}static isKeyPair(e){return void 0!==e.secretKey}static isPublicKey(e){return!ds.isKeyPair(e)}}const ps=function(e){if(!Array.isArray(e))throw new TypeError(`Argument must be an array: ${e}`)},ls=function(e,t){return e*t.length},gs={},hs=function(e,t){return String(t)};function Ss(e){return null!=e}const ks=I.BigInt(1e4);function fs({inputMint:e,outputMint:t}){return`${e}-${t}`}function As({ammId:e,amount:t}){return`${e}-${t.toString()}`}function Ms(e,t,n){return{ExactIn:I.greaterThanOrEqual(t.outAmount,e.outAmount)?1:-1,ExactOut:I.lessThanOrEqual(t.inAmount,e.inAmount)?1:-1}[n]}async function ys({inputRouteSegment:t,inputMint:n,outputMint:i,amount:o,getDepositAndFeeForRoute:s,platformFeeBps:a,slippageBps:r,filterTopNResult:u=1,onlyDirectRoutes:c,swapMode:m,asLegacyTransaction:d}){const p=n.toBase58(),l=i.toBase58();if(!t.get(p))throw new Error(\"No routes found for the input and output mints\");const g=c||m===Mt.ExactOut?1:d?2:3,h=new Map,S=[],k=new Map;return function o({startMint:s,amount:a,level:r=1,walked:p=[s]}){const f=t.get(s);f&&f.forEach(((A,M)=>{const y=fs({inputMint:s,outputMint:M}),w=function({amms:t,inputMint:n,outputMint:i,amount:o,swapMode:s}){return t.map((t=>{try{return{quote:t.getQuote({amount:o,sourceMint:new e(n),destinationMint:new e(i),swapMode:s}),amm:t}}catch(e){return}})).filter(Ss).sort(((e,t)=>Ms(e.quote,t.quote,s)))}({amms:A,inputMint:s,outputMint:M,amount:a,swapMode:m}),{filteredAmms:P,quoteMap:T}=w.reduce(((e,t)=>(e.filteredAmms.lengthe)),((t,o)=>{if(vn&&e)return;const s=(()=>{if(Uo({amms:[t,o],asLegacyTransaction:d,isSplit:!0}))return Lo.create(t,o)})();s&&(e=!0,S.push({amms:[s],mints:[n,i]}))}))}if(f.set(M,P),h.set(y,T),M!==l&&T.size&&!p.includes(M)&&rnew e(t))),o=n.reduce(((e,i,o)=>{var s;return o=100)throw new TypeError(`Too many arrays (${e}): please use the 'big-cartesian' library instead of 'fast-cartesian'`)}(e),function(e){const t=e.reduce(ls,1);if(t>=4294967296){const e=Number.isFinite(t)?` (${t.toExponential(0)})`:\"\";throw new TypeError(`Too many combinations${e}: please use the 'big-cartesian' library instead of 'fast-cartesian'`)}}(e)}(e),0===e.length)return[];const t=[];return function(e){const t=gs[e];if(void 0!==t)return t;const n=function(e){const t=Array.from({length:e},hs),n=t.map((e=>`for (const value${e} of arrays[${e}]) {`)).join(\"\\n\"),i=t.map((e=>`value${e}`)).join(\", \"),o=\"}\\n\".repeat(e);return new Function(\"arrays\",\"result\",`${n}\\nresult.push([${i}])\\n${o}`)}(e);return gs[e]=n,n}(e.length)(e,t),t}(o);for(let e of s)(1===e.length||Uo({amms:e,asLegacyTransaction:d}))&&S.push({amms:e,mints:i})}}))}({startMint:p,amount:o}),S.map((e=>{const{amms:t,mints:n}=e;let i=[],u=o,c=v;const d=n,p=t.length;for(const[e,n]of t.entries())try{var l;const t=d[e],s=d[e+1],g=fs({inputMint:t.toBase58(),outputMint:s.toBase58()}),S=null===(l=h.get(g))||void 0===l?void 0:l.get(As({ammId:n.id,amount:u}));if(I.equal(u,v))return;const k=S||n.getQuote({sourceMint:t,destinationMint:s,amount:u,swapMode:m}),f=ws({quote:k,sourceMint:t,destinationMint:s,swapMode:m,legIndex:e,isLastLeg:p-1===e,platformFeeBps:a}),A=m===Mt.ExactIn?k.outAmount:k.inAmount;let M=m===Mt.ExactIn?I.subtract(A,f.amount):I.add(A,f.amount);I.lessThan(M,v)&&(M=v);const y=I.BigInt(m===Mt.ExactIn?new ie(M.toString()).mul(1-r/I.toNumber(ks)).ceil():new ie(M.toString()).mul(1+r/I.toNumber(ks)).floor()),[w,P]=m===Mt.ExactIn?[k.inAmount,M]:[M,u];i.push({amm:n,inputMint:t,outputMint:s,notEnoughLiquidity:k.notEnoughLiquidity,minInAmount:k.minInAmount,minOutAmount:k.minOutAmount,inAmount:w,outAmount:P,priceImpactPct:k.priceImpactPct,lpFee:{amount:k.feeAmount,mint:k.feeMint,pct:k.feePct},platformFee:f}),u=m===Mt.ExactIn?M:o,c=y}catch(e){return}return{marketInfos:i,getDepositAndFee:()=>s({marketInfos:i}),inAmount:i[0].inAmount,outAmount:u,amount:o,otherAmountThreshold:c,swapMode:m,slippageBps:r,priceImpactPct:1-i.reduce(((e,t)=>e*(1-t.priceImpactPct)),1)}})).filter(Ss).sort(((e,t)=>Ms(e,t,m)))}function ws({quote:e,sourceMint:t,destinationMint:n,swapMode:i,legIndex:o,isLastLeg:s,platformFeeBps:a}){return s&&i===Mt.ExactIn?{amount:I.divide(I.multiply(e.outAmount,I.BigInt(a)),ks),mint:n.toBase58(),pct:a/100}:0===o&&i===Mt.ExactOut?{amount:I.divide(I.multiply(e.inAmount,I.BigInt(a)),ks),mint:t.toBase58(),pct:a/100}:{amount:v,mint:n.toBase58(),pct:0}}const Ps=Object.values(wn).reduce(((e,t)=>(e[t.code]=t,e)),{});function Ts(e,t){let n=t.get(e);return void 0===n&&(n=t.size,t.set(e,n)),n}function vs(e){const{mintToIndexMap:t,indexedRouteMap:n}=Array.from(e).reduce((({mintToIndexMap:e,indexedRouteMap:t},[n,i])=>{const o=Ts(n,e),s=[];for(const t of i){const n=Ts(t,e);s.push(n)}return t[o]=s,{mintToIndexMap:e,indexedRouteMap:t}}),{mintToIndexMap:new Map,indexedRouteMap:{}});return{mintKeys:[...t.keys()],indexedRouteMap:n}}function bs(e){const t=t=>e.mintKeys[t],n=new Map;return Object.keys(e.indexedRouteMap).forEach((i=>{n.set(t(i),e.indexedRouteMap[i].map((e=>t(e))))})),n}async function Bs({onlyDirectRoutes:e,restrictIntermediateTokens:t,asLegacyTransaction:n},i){let o=i||\"https://cache.jup.ag/indexed-route-maps-v2\";return e?o=o.concat(\"?onlyDirectRoutes=true\"):t&&(o=o.concat(\"?restrictIntermediateTokens=true\")),n&&(o=o.concat(\"?asLegacyTransaction=true\")),bs(await(await fetch(o)).json())}class Is{constructor(e,t,n,i,o,s,a=0,u=!0,c,m,d){this.connection=void 0,this.cluster=void 0,this.tokenRouteSegments=void 0,this.feeCalculator=void 0,this.platformFeeAndAccounts=void 0,this.quoteMintToReferrer=void 0,this.routeCacheDuration=void 0,this.wrapUnwrapSOL=void 0,this.intermediateTokens=void 0,this.shouldLoadSerumOpenOrders=void 0,this.addressLookupTableProvider=void 0,this.serumOpenOrdersPromise=void 0,this.user=void 0,this.routeCache=new Map,this.routeSegmentCache=new p({max:500}),this.getDepositAndFees=async({marketInfos:e,userPublicKey:t,serumOpenOrdersPromise:n=Promise.resolve(new Map)})=>(async({connection:e,owner:t,inputMint:n,marketInfos:i,feeCalculator:o,serumOpenOrdersPromise:s,wrapUnwrapSOL:a})=>{const r=await Promise.all(i.map((async n=>{const i=n.amm;if(i instanceof wo||i instanceof Lo){if(!i.market)return;return await $o(e,t.publicKey,i.market,await s)}}))),{userIntermediaryTokenAccountResults:u,userDestinationTokenAccountResult:c}=await Go({connection:e,marketInfos:i,owner:t,unwrapSOL:a});return(({intermediates:e,destination:t,openOrders:n,hasWrapUnwrapSOL:i,feeCalculator:o})=>{const s=n.filter((e=>e&&e.setupInstructions.length>0)).map((()=>23352760)),a=[...e,t].filter((e=>(null==e?void 0:e.setupInstructions.length)&&0===e.cleanupInstructions.length)).map((()=>2039280)),r=o.lamportsPerSignature;return{signatureFee:r,openOrdersDeposits:s,ataDeposits:a,totalFeeAndDeposits:Zo([r,...s,...a]),minimumSOLForTransaction:Zo([r,...s,...a,890880,i?2039280:0])}})({intermediates:u,destination:c,openOrders:r,hasWrapUnwrapSOL:!!a&&[n,...i.map((e=>e.outputMint))].some((e=>e.equals(vt))),feeCalculator:o})})({connection:this.connection,feeCalculator:this.feeCalculator,inputMint:e[0].inputMint,marketInfos:e,serumOpenOrdersPromise:n,owner:new ds(t),wrapUnwrapSOL:this.wrapUnwrapSOL}),this.getDepositAndFeesForUser=({marketInfos:e})=>{if(this.user&&this.serumOpenOrdersPromise){const t=new ds(this.user);return this.getDepositAndFees({marketInfos:e,userPublicKey:t.publicKey,serumOpenOrdersPromise:this.serumOpenOrdersPromise})}return Promise.resolve(void 0)},this.exchange=async({routeInfo:e,userPublicKey:t,feeAccount:n,wrapUnwrapSOL:i,blockhashWithExpiryBlockHeight:o,asLegacyTransaction:s,computeUnitPriceMicroLamports:a})=>{var u;const{connection:c,serumOpenOrdersPromise:m}=this,d=t||this.user;if(!d)throw new Error(\"user not found\");const p=new ds(d),l=e.marketInfos.length-1,g=e.marketInfos[0].inputMint,h=e.marketInfos[l].outputMint,S=null!=i?i:this.wrapUnwrapSOL,[k,f,A]=await Promise.all([g.equals(vt)&&S?ei({connection:c,owner:p,amount:e.swapMode===Mt.ExactIn?e.amount:e.otherAmountThreshold}):{setupInstructions:[],instructions:[],cleanupInstructions:[],signers:[],address:ni({tokenMintAddress:g,walletAddress:p.publicKey})},Go({connection:c,marketInfos:e.marketInfos,owner:p,unwrapSOL:S}),Promise.all(e.marketInfos.map((async({amm:e})=>{if(e instanceof wo||e instanceof Lo){if(!e.market)return;return await $o(c,p.publicKey,e.market,await m)}})))]),M={intermediates:f.userIntermediaryTokenAccountResults,destination:f.userDestinationTokenAccountResult,openOrders:A},y=M.openOrders.filter(Boolean).length>0,w=(n=null!==(u=n)&&void 0!==u?u:this.platformFeeAndAccounts.feeAccounts.get(e.swapMode===Mt.ExactIn?h.toBase58():g.toBase58()))?{feeBps:this.platformFeeAndAccounts.feeBps||Math.floor(100*e.marketInfos[l].platformFee.pct),feeAccount:n}:void 0,{instruction:P}=await async function({user:e,openOrdersAddresses:t,userSourceTokenAccountAddress:n,userIntermediateTokenAccountAddresses:i,userDestinationTokenAccountAddress:o,routeInfo:s,platformFee:a,computeUnitPriceMicroLamports:u,quoteMintToReferrer:c}){if(s.marketInfos.length-1!==i.length)throw new Error(\"Missing intermediary token account address\");const m=[n,...i,o],d=!!a&&a.feeBps>0,p=e.publicKey,l=[r.setComputeUnitLimit({units:14e5})];u&&u>0&&l.push(r.setComputeUnitPrice({microLamports:u}));const g=[];if(s.swapMode===Mt.ExactIn){const e=function(e,t,n,i,o,s,a,r){const u=[],c=[];for(const[t,i]of e.marketInfos.entries()){const r=i.amm,[m,d]=o.slice(t),[p,l]=r.getSwapLegAndAccounts({sourceMint:i.inputMint,destinationMint:i.outputMint,userSourceTokenAccount:m,userDestinationTokenAccount:d,userTransferAuthority:n,openOrdersAddress:s[t],quoteMintToReferrer:a,swapMode:e.swapMode,amount:i.inAmount});u.push(p),c.push(...l)}return t&&r&&c.push({pubkey:r.feeAccount,isWritable:!0,isSigner:!1}),{swapInstruction:ai(n,i,_n(u),c,new ne(e.amount.toString()),new ne(e.outAmount.toString()),e.slippageBps,t&&r?r.feeBps:0)}}(s,d,p,o,m,t,c,a),{swapInstruction:n}=e;g.push(n)}else if(s.swapMode===Mt.ExactOut){const{swapInstruction:e}=function(e,t,n,i,o,s){const a=e.marketInfos[0],r=a.amm;if(r.createExactOutSwapInstruction)return{swapInstruction:r.createExactOutSwapInstruction({sourceMint:a.inputMint,destinationMint:a.outputMint,userSourceTokenAccount:n,userDestinationTokenAccount:i,userTransferAuthority:t,quoteMintToReferrer:o,swapMode:e.swapMode,amount:e.amount,slippageBps:e.slippageBps,inAmount:e.inAmount,platformFee:s,overflowFeeAccount:null==o?void 0:o.get(a.inputMint.toBase58())})};throw new Error(`ExactOutInstruction missing for ${r.label}.`)}(s,p,n,o,c,a);g.push(e)}const{signers:h,cleanupInstructions:S}={setupInstructions:[],instructions:[],cleanupInstructions:[],signers:[]};return e.isKeyPair&&e.signer&&h.push(e.signer),{instruction:{setupInstructions:l,signers:h,cleanupInstructions:S,instructions:g}}}({user:p,openOrdersAddresses:M.openOrders.map((e=>null==e?void 0:e.address)),userSourceTokenAccountAddress:k.address,userIntermediateTokenAccountAddresses:M.intermediates.map((({address:e})=>e)),userDestinationTokenAccountAddress:M.destination.address,routeInfo:e,platformFee:w,computeUnitPriceMicroLamports:a,quoteMintToReferrer:this.quoteMintToReferrer,asLegacyTransaction:s}),T=new ms(c,p.publicKey,p),v=[...M.intermediates,k,!M.destination.address.equals(k.address)&&M.destination];T.addInstruction(P),y&&M.openOrders.forEach((e=>{e&&T.addInstruction(e)})),v.forEach((e=>{e&&T.addInstruction(e)})),o=o||await this.connection.getLatestBlockhash(\"confirmed\");const b=await this.addressLookupTableProvider.getAdressLookupTableAccounts(e.marketInfos.map((({amm:e})=>e instanceof Lo?[e.firstAmm.id,e.secondAmm.id]:e.id)).flat()),{transaction:B}=await T.build(o,b,s),I=M;return{swapTransaction:B,addressLookupTableAccounts:b,execute:({wallet:e,onTransaction:t}={})=>Ls({connection:this.connection,wallet:e,onTransaction:t,inputMint:g,outputMint:h,sourceAddress:k.address,destinationAddress:I.destination.address,swapTransaction:B,wrapUnwrapSOL:S,owner:p}).finally((()=>{this.routeCache.clear()}))}},this.connection=e,this.cluster=t,this.tokenRouteSegments=n,this.feeCalculator=i,this.platformFeeAndAccounts=o,this.quoteMintToReferrer=s,this.routeCacheDuration=a,this.wrapUnwrapSOL=u,this.intermediateTokens=c,this.shouldLoadSerumOpenOrders=m,this.addressLookupTableProvider=d}static async load({connection:t,cluster:n,user:i,platformFeeAndAccounts:o=es,quoteMintToReferrer:s,routeCacheDuration:a=0,wrapUnwrapSOL:r=!0,marketUrl:u,restrictIntermediateTokens:c=!1,shouldLoadSerumOpenOrders:m=!0,ammsToExclude:d={GooseFX:!0,Serum:!0},usePreloadedAddressLookupTableCache:p=!1}){const[{tokenRouteSegments:l,addressLookupTableProvider:g,saberWrapperMints:h},{value:{feeCalculator:S}},k]=await Promise.all([Is.fetchAmms(t,n,d,u,p).then((({amms:e,saberWrapperMints:t,addressLookupTableProvider:n})=>({tokenRouteSegments:Ho(e),addressLookupTableProvider:n,saberWrapperMints:t}))),t.getRecentBlockhashAndContext(\"processed\"),null!=s?s:ts(t,new e(Kt))]),f=c?await Is.getIntermediateTokens(h):void 0,A=new Is(t,n,l,S,o,k,a,r,f?new Set(f):void 0,m,g);return i&&A.setUserPublicKey(i),A}getAccountToAmmIdsMap(){const e=new Map;return this.tokenRouteSegments.forEach((t=>{Array.from(t.values()).forEach((t=>{t.forEach((t=>{t.getAccountsForUpdate().forEach((n=>{const i=e.get(n.toBase58())||new Set;i.add(t.id),e.set(n.toBase58(),i)}))}))}))})),e}getAmmIdToAmmMap(){const e=new Map;return this.tokenRouteSegments.forEach((t=>{Array.from(t.values()).forEach((t=>{t.forEach((t=>{e.set(t.id,t)}))}))})),e}async computeRoutes({inputMint:e,outputMint:t,amount:n,slippageBps:i,feeBps:o=0,forceFetch:s,onlyDirectRoutes:a,swapMode:r=Mt.ExactIn,filterTopNResult:u,asLegacyTransaction:c}){const m=e.toBase58(),d=t.toBase58(),p=o||(this.platformFeeAndAccounts.feeAccounts.get(d)?this.platformFeeAndAccounts.feeBps:0),l=(new Date).getTime(),g=[m,d].sort(((e,t)=>e.localeCompare(t))).join()+a+r+c,h=this.routeCache.get(g);let S=this.routeSegmentCache.get(g);S||(S=function({inputMint:e,outputMint:t,tokenRouteSegments:n,swapMode:i,intermediateTokens:o,onlyDirectRoutes:s,asLegacyTransaction:a}){const r=new Map,u=n.get(e),c=n.get(t);if(u&&c){const d=Math.min(u.size,c.size),p=new Map,l=new Map,[g,h,S,k]=[u,c,e,t];for(let[e,t]of g.entries()){if(t=i===Mt.ExactIn?t.slice():t.filter((e=>e.exactOutputSupported)),e===k){const e=t;p.set(k,e),l.set(S,e);continue}if(s||i===Mt.ExactOut||_o(o,d,e))continue;let u=n.get(e)||new Map;for(let[n,i]of u){if(i=i.slice(),n===k){const n=i;if(r.set(e,new Map([[S,t],[k,n]])),p.set(e,t),l.set(e,n),a)break}if(!a){var m;if(_o(o,d,n))continue;const s=null===(m=h.get(n))||void 0===m?void 0:m.slice();if(s){p.set(e,t);const o=r.get(e)||new Map;o.set(n,i),r.set(e,o);const a=r.get(n)||new Map;a.set(k,s),r.set(n,a)}}}}r.set(S,p),r.set(k,l)}return r}({inputMint:m,outputMint:d,tokenRouteSegments:this.tokenRouteSegments,intermediateTokens:this.intermediateTokens,onlyDirectRoutes:a,swapMode:r,asLegacyTransaction:c}),this.routeSegmentCache.set(g,S));let k=!1;if(-1===this.routeCacheDuration)k=!1;else if(0===this.routeCacheDuration)k=!0;else if(h){const{fetchTimestamp:e}=h;l-e>this.routeCacheDuration&&(k=!0)}else k=!0;(s||k)&&(await async function(e,t){const n=new Map,i=new Set,o=new Map;t.forEach((e=>{e.forEach((e=>{e.forEach((e=>{o.set(e.id,e),e.getAccountsForUpdate().forEach((e=>{i.add(e.toBase58())}))}))}))}));const s=Array.from(i);s.length>0&&((await At(e,s)).forEach(((e,t)=>{e&&n.set(s[t],e)})),o.forEach((e=>{e.update(n)})))}(this.connection,S),this.routeCache.set(g,{fetchTimestamp:(new Date).getTime()}));try{return{routesInfos:await ys({inputRouteSegment:S,inputMint:e,outputMint:t,amount:n,getDepositAndFeeForRoute:this.getDepositAndFeesForUser,onlyDirectRoutes:a,slippageBps:i,platformFeeBps:p,filterTopNResult:u,swapMode:r,asLegacyTransaction:c}),cached:!(s||k)}}catch(e){throw e}finally{this.routeCache.forEach((({fetchTimestamp:e},t)=>{e-l>this.routeCacheDuration&&this.routeCache.delete(t)}))}}setUserPublicKey(e){this.user=e;const t=new ds(this.user);this.serumOpenOrdersPromise=this.shouldLoadSerumOpenOrders?Is.findSerumOpenOrdersForOwner({connection:this.connection,cluster:this.cluster,userPublicKey:t.publicKey}):Promise.resolve(new Map)}static async fetchAmms(t,n,i,o,s=!1){return async function(t,n,i={},o){const s=(t=>t.map((t=>{const{data:[n,i],pubkey:o,...s}=t;return{...s,pubkey:new e(o),data:Buffer.from(n,i),owner:new e(s.owner)}})))(n);if(Pn){const e=[];if(e.length){const n=await async function(e,t){return await Promise.all((await At(e,t.map((e=>e.toBase58())))).map((async(e,n)=>{const i=t[n];if(!e)throw new Error(`Failed to fetch pool ${i.toBase58()}`);return{pubkey:i,...e}})))}(t,e);s.push(...n)}}const a=[],r=[],u=s.reduce(((e,t)=>{const n=Wo(t.pubkey,t,t.params);if(n){if(kt(i,n.label))return e;e.push(n),n.shouldPrefetch&&a.push(n),n instanceof go&&r.push(n.wrapperMint.toBase58())}return e}),new Array),[c,m,d]=await Promise.all([Pt(a,t),qe(),await Qo(t,n,o)]);return{amms:u,saberWrapperMints:r,addressLookupTableProvider:d}}(t,await(async e=>await(await dt(e)).json())(o||It[n]),i,s)}getRouteMap(e,t){return function(e,t,n,i){const o=new Map,s=new Set(e.keys());s.forEach((e=>{o.set(e,new Set)}));for(const[S,k]of e){const f=new Set(s);for(let e of k.keys()){var a,r;null===(a=o.get(S))||void 0===a||a.add(e),null===(r=o.get(e))||void 0===r||r.add(S),f.delete(e)}if(!n)for(let s of f){var u;let a=null===(u=o.get(S))||void 0===u?void 0:u.has(s);if(a)continue;const r=e.get(S),k=e.get(s);if(r&&k){const u=Math.min(r.size,k.size);let[f,A,M,y]=[r,k,S,s];for(let[r,k]of f.entries()){if(n||_o(t,u,r))continue;let f=e.get(r)||new Map;for(let[e,n]of f){if(e===y){if(!i){var c,m;null===(c=o.get(S))||void 0===c||c.add(s),null===(m=o.get(s))||void 0===m||m.add(S),a=!0;break}for(let e of k){for(let t of n)if(Uo({amms:[e,t],asLegacyTransaction:i})){var d,p;null===(d=o.get(S))||void 0===d||d.add(s),null===(p=o.get(s))||void 0===p||p.add(S),a=!0;break}if(a)break}}if(!i){var l;if(_o(t,u,e))continue;if(null===(l=A.get(e))||void 0===l?void 0:l.slice()){var g,h;null===(g=o.get(S))||void 0===g||g.add(s),null===(h=o.get(s))||void 0===h||h.add(S),a=!0;break}}}if(a)break}}}}return Array.from(o.entries()).reduce(((e,[t,n])=>(e.set(t,[...n]),e)),new Map)}(this.tokenRouteSegments,this.intermediateTokens,e,t)}static async getIntermediateTokens(e){const t=await async function(){const e=await(await dt(\"https://cache.jup.ag/top-tokens\")).json();return new Set(e.filter(((e,t)=>t<60)))}();for(const e of yn)t.add(e);return e.forEach((e=>t.add(e))),Array.from(t)}}Is.getRemoteRouteMap=Bs,Is.findSerumOpenOrdersForOwner=async({userPublicKey:e,cluster:t,connection:n})=>{const i=new Map;if(e){const o=\"mainnet-beta\"===t?bt:Bt;(await g.findForOwner(n,e,o)).forEach((e=>{i.set(e.market.toString(),e.address)}))}return i};const Ls=async({connection:e,wallet:t,onTransaction:n,inputMint:i,outputMint:o,sourceAddress:s,destinationAddress:a,swapTransaction:r,owner:u,wrapUnwrapSOL:c})=>{let m,d;try{if(u.signer)cs(r,[u.signer]);else{if(!t)throw new Error(\"Signer wallet not found\");r=await t.signTransaction(r)}const p=us(r);try{const t=async()=>await async function({txid:e,transactionResponse:t}){var n;if(!t)return new q(\"Transaction was not confirmed\",e);if(null!=t&&null!==(n=t.meta)&&void 0!==n&&n.err){let{message:n,programId:o,code:s}=x(t);var i;return o===ii.toBase58()&&s&&(n=null===(i=Ps[s])||void 0===i?void 0:i.msg),n||(n=E),new q(n||\"Something went wrong\",e,s)}return t}(await rs(e,r)),m=t();null==n||n(p,1,\"SWAP\",m);const l=await m;if(l instanceof Error)throw l;const[g,h]=await async function({txid:e,inputMint:t,outputMint:n,user:i,sourceAddress:o,destinationAddress:s,transactionResponse:a,hasWrappedSOL:r}){let u,c;if(a){let{meta:e,transaction:m}=a;if(e){const a=m.message.getAccountKeys({accountKeysFromLookups:e.loadedAddresses}).keySegments().flat().reduce(((e,t,n)=>(e.set(t.toBase58(),n),e)),new Map);u=t.equals(vt)&&!r?os(e,a,i):is(e,a,o),c=n.equals(vt)&&!r?os(e,a,i):is(e,a,s)}}if(!u||!c)throw new q(\"Cannot find source or destination token account balance change\",e,wn.BalancesNotExtractedProperly.code);return[u,c]}({txid:p,inputMint:i,outputMint:o,user:u.publicKey,sourceAddress:s,destinationAddress:a,transactionResponse:l,hasWrappedSOL:!c});d={txid:p,inputAddress:s,outputAddress:a,inputAmount:g,outputAmount:h}}catch(e){m=e}if(m||!d)throw m||new Error(\"Swap failed\");return d}catch(e){return{error:e}}};export{xt as ALDRIN_SWAP_PROGRAM_ID,Et as ALDRIN_SWAP_V2_PROGRAM_ID,yi as AldrinAmm,cn as BALANSOL_PROGRAM_ID,bi as BalansolAmm,Ut as CREMA_PARTNER_ACCOUNT,Nt as CREMA_PROGRAM_ID,Vt as CROPPER_PROGRAM_ID,Ht as CYKURA_FACTORY_STATE_ADDRESS,Yt as CYKURA_PROGRAM_ID,Ii as CremaAmm,Li as CropperAmm,xi as CykuraAmm,sn as DELTA_FI_PROGRAM_ID,an as DELTA_FI_USER_ID,Bt as DEVNET_SERUM_DEX_PROGRAM,gn as DRADEX_DEX_USER,dn as DRADEX_LOGGER_PROGRAM_ID,pn as DRADEX_MASTER_ID,mn as DRADEX_PROGRAM_ID,Vi as DeltaFiAmm,xo as DradexAmm,Bn as FAKE_PROVIDER,un as GOOSE_FX_CONTROLLER_ID,rn as GOOSE_FX_PROGRAM_ID,Ui as GooseFXAmm,Lt as INDEXED_ROUTE_MAP_URL,zt as INVARIANT_PROGRAM_AUTHORITY_ID,jt as INVARIANT_PROGRAM_ID,Qt as INVARIANT_STATE_ID,Pn as IS_DEV,vn as IS_PROD,Tn as IS_TEST,Xi as InvariantAmm,wn as JUPITER_ERRORS,Kt as JUPITER_FEE_OWNER,Is as Jupiter,Dt as LAMPORTS_PER_SIGNATURE,Rt as LIFINITY_PROGRAM_ID,ln as LIFINITY_V2_PROGRAM_ID,ji as LifinityAmm,Qi as LifinityV2Amm,bt as MAINNET_SERUM_DEX_PROGRAM,An as MARCO_POLO_PROGRAM_AUTHORITY,kn as MARCO_POLO_PROGRAM_ID,fn as MARCO_POLO_STATE_ID,_t as MARINADE_PROGRAM_ID,It as MARKETS_URL,Wt as MERCURIAL_SWAP_PROGRAM_ID,nn as METEORA_PROGRAM_ID,on as METEORA_VAULT_PROGRAM_ID,bn as MIN_SEGMENT_SIZE_FOR_INTERMEDIATE_MINTS,Co as MarcoPoloAmm,$i as MarinadeAmm,oo as MercurialAmm,co as MeteoraAmm,Sn as OPENBOOK_PROGRAM_ID,Gt as ORCA_V1_PROGRAM_ID,$t as ORCA_V2_PROGRAM_ID,ds as Owner,en as PENGUIN_PROGRAM_ID,Mn as PHOENIX_PROGRAM_ID,No as PhoenixAmm,qt as RAYDIUM_AMM_V4_PROGRAM_ID,hn as RAYDIUM_CLMM_PROGRAM_ID,po as RaydiumAmm,Eo as RaydiumClmm,Ot as SABER_ADD_DECIMALS_PROGRAM_ID,tn as SAROS_PROGRAM_ID,Ct as SENCHA_PROGRAM_ID,Jt as STEPN_PROGRAM_ID,Zt as STEP_TOKEN_SWAP_PROGRAM_ID,yn as SWAP_PROTOCOL_TOKENS,go as SaberAddDecimalsAmm,ho as SaberAmm,ko as SenchaAmm,wo as SerumAmm,bo as SplTokenSwapAmm,Lo as SplitTradeAmm,Mt as SwapMode,Ft as TOKEN_LIST_URL,ms as TransactionBuilder,Xt as WHIRLPOOL_PROGRAM_ID,vt as WRAPPED_SOL_MINT,qo as WhirlpoolAmm,Wo as ammFactory,Ls as executeTransactions,Zn as getEmptyInstruction,ts as getPlatformFeeAccounts,Bs as getRemoteRouteMap,Jo as getRouteInfoUniqueId,bs as indexedRouteMapToRouteMap,vs as routeMapToIndexedRouteMap,rs as transactionSenderAndConfirmationWaiter};\n//# sourceMappingURL=core.esm.min.js.map\n","export const IDL = {\n version: '0.4.0',\n name: 'amm',\n instructions: [\n {\n name: 'initialize',\n accounts: [\n {\n name: 'pool',\n isMut: true,\n isSigner: true,\n },\n {\n name: 'lpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'tokenAMint',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenBMint',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'aVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aTokenVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bTokenVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aVaultLpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVaultLpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aVaultLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVaultLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'adminTokenA',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'adminTokenB',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'adminPoolLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'adminTokenAFee',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'adminTokenBFee',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'apy',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'admin',\n isMut: true,\n isSigner: true,\n },\n {\n name: 'rent',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'vaultProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'systemProgram',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'curveType',\n type: {\n defined: 'CurveType',\n },\n },\n {\n name: 'tokenAAmount',\n type: 'u64',\n },\n {\n name: 'tokenBAmount',\n type: 'u64',\n },\n {\n name: 'invariantD',\n type: 'u64',\n },\n ],\n },\n {\n name: 'enableOrDisablePool',\n accounts: [\n {\n name: 'pool',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'admin',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: 'enable',\n type: 'bool',\n },\n ],\n },\n {\n name: 'swap',\n accounts: [\n {\n name: 'pool',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userSourceToken',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userDestinationToken',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aTokenVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bTokenVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aVaultLpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVaultLpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aVaultLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVaultLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'adminTokenFee',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'user',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'vaultProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'inAmount',\n type: 'u64',\n },\n {\n name: 'minimumOutAmount',\n type: 'u64',\n },\n ],\n },\n {\n name: 'removeLiquiditySingleSide',\n accounts: [\n {\n name: 'pool',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'lpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userPoolLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aVaultLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVaultLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aVaultLpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVaultLpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aTokenVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bTokenVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userDestinationToken',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'user',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'vaultProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'poolTokenAmount',\n type: 'u64',\n },\n {\n name: 'minimumOutAmount',\n type: 'u64',\n },\n ],\n },\n {\n name: 'addImbalanceLiquidity',\n accounts: [\n {\n name: 'pool',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'lpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userPoolLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aVaultLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVaultLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aVaultLpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVaultLpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aTokenVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bTokenVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userAToken',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userBToken',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'user',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'vaultProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'minimumPoolTokenAmount',\n type: 'u64',\n },\n {\n name: 'tokenAAmount',\n type: 'u64',\n },\n {\n name: 'tokenBAmount',\n type: 'u64',\n },\n ],\n },\n {\n name: 'removeBalanceLiquidity',\n accounts: [\n {\n name: 'pool',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'lpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userPoolLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aVaultLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVaultLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aVaultLpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVaultLpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aTokenVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bTokenVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userAToken',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userBToken',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'user',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'vaultProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'poolTokenAmount',\n type: 'u64',\n },\n {\n name: 'minimumATokenOut',\n type: 'u64',\n },\n {\n name: 'minimumBTokenOut',\n type: 'u64',\n },\n ],\n },\n {\n name: 'addBalanceLiquidity',\n accounts: [\n {\n name: 'pool',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'lpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userPoolLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aVaultLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVaultLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aVaultLpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bVaultLpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'aTokenVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'bTokenVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userAToken',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userBToken',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'user',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'vaultProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'poolTokenAmount',\n type: 'u64',\n },\n {\n name: 'maximumTokenAAmount',\n type: 'u64',\n },\n {\n name: 'maximumTokenBAmount',\n type: 'u64',\n },\n ],\n },\n {\n name: 'setPoolFees',\n accounts: [\n {\n name: 'pool',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'admin',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: 'fees',\n type: {\n defined: 'PoolFees',\n },\n },\n ],\n },\n {\n name: 'overrideCurveParam',\n accounts: [\n {\n name: 'pool',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'admin',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: 'curveType',\n type: {\n defined: 'CurveType',\n },\n },\n ],\n },\n {\n name: 'transferAdmin',\n accounts: [\n {\n name: 'pool',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'admin',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'newAdmin',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [],\n },\n {\n name: 'setAdminFeeAccount',\n accounts: [\n {\n name: 'pool',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'newAdminTokenAFee',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'newAdminTokenBFee',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'admin',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [],\n },\n {\n name: 'syncApy',\n accounts: [\n {\n name: 'pool',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'lpMint',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'aVaultLp',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'bVaultLp',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'aVault',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'bVault',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'aVaultLpMint',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'bVaultLpMint',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'apy',\n isMut: true,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: 'getPoolInfo',\n accounts: [\n {\n name: 'pool',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'lpMint',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'aVaultLp',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'bVaultLp',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'aVault',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'bVault',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'aVaultLpMint',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'bVaultLpMint',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'apy',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n ],\n accounts: [\n {\n name: 'pool',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'lpMint',\n type: 'publicKey',\n },\n {\n name: 'tokenAMint',\n type: 'publicKey',\n },\n {\n name: 'tokenBMint',\n type: 'publicKey',\n },\n {\n name: 'aVault',\n type: 'publicKey',\n },\n {\n name: 'bVault',\n type: 'publicKey',\n },\n {\n name: 'aVaultLp',\n type: 'publicKey',\n },\n {\n name: 'bVaultLp',\n type: 'publicKey',\n },\n {\n name: 'aVaultLpBump',\n type: 'u8',\n },\n {\n name: 'enabled',\n type: 'bool',\n },\n {\n name: 'adminTokenAFee',\n type: 'publicKey',\n },\n {\n name: 'adminTokenBFee',\n type: 'publicKey',\n },\n {\n name: 'admin',\n type: 'publicKey',\n },\n {\n name: 'fees',\n type: {\n defined: 'PoolFees',\n },\n },\n {\n name: 'padding',\n type: {\n defined: 'Padding',\n },\n },\n {\n name: 'curveType',\n type: {\n defined: 'CurveType',\n },\n },\n ],\n },\n },\n {\n name: 'apy',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'pool',\n type: 'publicKey',\n },\n {\n name: 'snapshot',\n type: {\n defined: 'SnapShot',\n },\n },\n ],\n },\n },\n ],\n types: [\n {\n name: 'TokenMultiplier',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'tokenAMultiplier',\n type: 'u64',\n },\n {\n name: 'tokenBMultiplier',\n type: 'u64',\n },\n {\n name: 'precisionFactor',\n type: 'u8',\n },\n ],\n },\n },\n {\n name: 'PoolFees',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'tradeFeeNumerator',\n type: 'u64',\n },\n {\n name: 'tradeFeeDenominator',\n type: 'u64',\n },\n {\n name: 'ownerTradeFeeNumerator',\n type: 'u64',\n },\n {\n name: 'ownerTradeFeeDenominator',\n type: 'u64',\n },\n ],\n },\n },\n {\n name: 'Depeg',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'baseVirtualPrice',\n type: 'u64',\n },\n {\n name: 'baseCacheUpdated',\n type: 'u64',\n },\n {\n name: 'depegType',\n type: {\n defined: 'DepegType',\n },\n },\n ],\n },\n },\n {\n name: 'Padding',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'padding',\n type: {\n array: ['u128', 32],\n },\n },\n ],\n },\n },\n {\n name: 'VirtualPrice',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'price',\n type: 'u64',\n },\n {\n name: 'timestamp',\n type: 'i64',\n },\n ],\n },\n },\n {\n name: 'SnapShot',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'pointer',\n type: 'u64',\n },\n {\n name: 'virtualPrices',\n type: {\n array: [\n {\n defined: 'VirtualPrice',\n },\n 28,\n ],\n },\n },\n ],\n },\n },\n {\n name: 'RoundDirection',\n type: {\n kind: 'enum',\n variants: [\n {\n name: 'Floor',\n },\n {\n name: 'Ceiling',\n },\n ],\n },\n },\n {\n name: 'TradeDirection',\n type: {\n kind: 'enum',\n variants: [\n {\n name: 'AtoB',\n },\n {\n name: 'BtoA',\n },\n ],\n },\n },\n {\n name: 'NewCurveType',\n type: {\n kind: 'enum',\n variants: [\n {\n name: 'ConstantProduct',\n },\n {\n name: 'Stable',\n fields: [\n {\n name: 'amp',\n type: 'u64',\n },\n {\n name: 'token_multiplier',\n type: {\n defined: 'TokenMultiplier',\n },\n },\n {\n name: 'depeg',\n type: {\n defined: 'Depeg',\n },\n },\n ],\n },\n {\n name: 'NewCurve',\n fields: [\n {\n name: 'field_one',\n type: 'u64',\n },\n {\n name: 'field_two',\n type: 'u64',\n },\n ],\n },\n ],\n },\n },\n {\n name: 'CurveType',\n type: {\n kind: 'enum',\n variants: [\n {\n name: 'ConstantProduct',\n },\n {\n name: 'Stable',\n fields: [\n {\n name: 'amp',\n type: 'u64',\n },\n {\n name: 'token_multiplier',\n type: {\n defined: 'TokenMultiplier',\n },\n },\n {\n name: 'depeg',\n type: {\n defined: 'Depeg',\n },\n },\n ],\n },\n ],\n },\n },\n {\n name: 'DepegType',\n type: {\n kind: 'enum',\n variants: [\n {\n name: 'None',\n },\n {\n name: 'Marinade',\n },\n {\n name: 'Lido',\n },\n ],\n },\n },\n ],\n events: [\n {\n name: 'AddLiquidity',\n fields: [\n {\n name: 'lpMintAmount',\n type: 'u64',\n index: false,\n },\n {\n name: 'tokenAAmount',\n type: 'u64',\n index: false,\n },\n {\n name: 'tokenBAmount',\n type: 'u64',\n index: false,\n },\n ],\n },\n {\n name: 'RemoveLiquidity',\n fields: [\n {\n name: 'lpUnmintAmount',\n type: 'u64',\n index: false,\n },\n {\n name: 'tokenAOutAmount',\n type: 'u64',\n index: false,\n },\n {\n name: 'tokenBOutAmount',\n type: 'u64',\n index: false,\n },\n ],\n },\n {\n name: 'Swap',\n fields: [\n {\n name: 'inAmount',\n type: 'u64',\n index: false,\n },\n {\n name: 'outAmount',\n type: 'u64',\n index: false,\n },\n {\n name: 'tradeFee',\n type: 'u64',\n index: false,\n },\n {\n name: 'adminFee',\n type: 'u64',\n index: false,\n },\n ],\n },\n {\n name: 'SetPoolFees',\n fields: [\n {\n name: 'tradeFeeNumerator',\n type: 'u64',\n index: false,\n },\n {\n name: 'tradeFeeDenominator',\n type: 'u64',\n index: false,\n },\n {\n name: 'ownerTradeFeeNumerator',\n type: 'u64',\n index: false,\n },\n {\n name: 'ownerTradeFeeDenominator',\n type: 'u64',\n index: false,\n },\n ],\n },\n {\n name: 'PoolInfo',\n fields: [\n {\n name: 'tokenAAmount',\n type: 'u64',\n index: false,\n },\n {\n name: 'tokenBAmount',\n type: 'u64',\n index: false,\n },\n {\n name: 'virtualPrice',\n type: 'f64',\n index: false,\n },\n {\n name: 'firstVirtualPrice',\n type: 'f64',\n index: false,\n },\n {\n name: 'firstTimestamp',\n type: 'u64',\n index: false,\n },\n {\n name: 'currentTimestamp',\n type: 'u64',\n index: false,\n },\n {\n name: 'apy',\n type: 'f64',\n index: false,\n },\n ],\n },\n {\n name: 'TransferAdmin',\n fields: [\n {\n name: 'admin',\n type: 'publicKey',\n index: false,\n },\n {\n name: 'newAdmin',\n type: 'publicKey',\n index: false,\n },\n ],\n },\n {\n name: 'SetAdminFeeAccount',\n fields: [\n {\n name: 'adminTokenAFee',\n type: 'publicKey',\n index: false,\n },\n {\n name: 'adminTokenBFee',\n type: 'publicKey',\n index: false,\n },\n {\n name: 'newAdminTokenAFee',\n type: 'publicKey',\n index: false,\n },\n {\n name: 'newAdminTokenBFee',\n type: 'publicKey',\n index: false,\n },\n ],\n },\n ],\n errors: [\n {\n code: 6000,\n name: 'MathOverflow',\n msg: 'Math operation overflow',\n },\n {\n code: 6001,\n name: 'InvalidFee',\n msg: 'Invalid fee setup',\n },\n {\n code: 6002,\n name: 'InvalidInvariant',\n msg: 'Invalid invariant d',\n },\n {\n code: 6003,\n name: 'FeeCalculationFailure',\n msg: 'Fee calculation failure',\n },\n {\n code: 6004,\n name: 'ExceededSlippage',\n msg: 'Exceeded slippage tolerance',\n },\n {\n code: 6005,\n name: 'InvalidCalculation',\n msg: 'Invalid curve calculation',\n },\n {\n code: 6006,\n name: 'ZeroTradingTokens',\n msg: 'Given pool token amount results in zero trading tokens',\n },\n {\n code: 6007,\n name: 'ConversionError',\n msg: 'Math conversion overflow',\n },\n {\n code: 6008,\n name: 'FaultyLpMint',\n msg: \"LP mint authority must be 'A' vault lp, without freeze authority, and 0 supply\",\n },\n {\n code: 6009,\n name: 'MismatchedTokenMint',\n msg: 'Token mint mismatched',\n },\n {\n code: 6010,\n name: 'MismatchedLpMint',\n msg: 'LP mint mismatched',\n },\n {\n code: 6011,\n name: 'MismatchedOwner',\n msg: 'Invalid lp token owner',\n },\n {\n code: 6012,\n name: 'InvalidVaultAccount',\n msg: 'Invalid vault account',\n },\n {\n code: 6013,\n name: 'InvalidVaultLpAccount',\n msg: 'Invalid vault lp account',\n },\n {\n code: 6014,\n name: 'InvalidPoolLpMintAccount',\n msg: 'Invalid pool lp mint account',\n },\n {\n code: 6015,\n name: 'PoolDisabled',\n msg: 'Pool disabled',\n },\n {\n code: 6016,\n name: 'InvalidAdminAccount',\n msg: 'Invalid admin account',\n },\n {\n code: 6017,\n name: 'InvalidAdminFeeAccount',\n msg: 'Invalid admin fee account',\n },\n {\n code: 6018,\n name: 'SameAdminAccount',\n msg: 'Same admin account',\n },\n {\n code: 6019,\n name: 'IdenticalSourceDestination',\n msg: 'Identical user source and destination token account',\n },\n {\n code: 6020,\n name: 'ApyCalculationError',\n msg: 'Apy calculation error',\n },\n {\n code: 6021,\n name: 'InsufficientSnapshot',\n msg: 'Insufficient virtual price snapshot',\n },\n {\n code: 6022,\n name: 'NonUpdatableCurve',\n msg: 'Current curve is non-updatable',\n },\n {\n code: 6023,\n name: 'MisMatchedCurve',\n msg: 'New curve is mismatched with old curve',\n },\n {\n code: 6024,\n name: 'InvalidAmplification',\n msg: 'Amplification is invalid',\n },\n {\n code: 6025,\n name: 'UnsupportedOperation',\n msg: 'Operation is not supported',\n },\n {\n code: 6026,\n name: 'ExceedMaxAChanges',\n msg: 'Exceed max amplification changes',\n },\n {\n code: 6027,\n name: 'InvalidRemainingAccountsLen',\n msg: 'Invalid remaining accounts length',\n },\n {\n code: 6028,\n name: 'InvalidRemainingAccounts',\n msg: 'Invalid remaining account',\n },\n {\n code: 6029,\n name: 'MismatchedDepegMint',\n msg: \"Token mint B doesn't matches depeg type token mint\",\n },\n {\n code: 6030,\n name: 'InvalidApyAccount',\n msg: 'Invalid APY account',\n },\n {\n code: 6031,\n name: 'InvalidTokenMultiplier',\n msg: 'Invalid token multiplier',\n },\n {\n code: 6032,\n name: 'InvalidDepegInformation',\n msg: 'Invalid depeg information',\n },\n ],\n};\n//# sourceMappingURL=idl.js.map","export const IDL = {\n version: '0.5.1',\n name: 'vault',\n instructions: [\n {\n name: 'initialize',\n accounts: [\n {\n name: 'base',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'admin',\n isMut: true,\n isSigner: true,\n },\n {\n name: 'tokenVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'tokenMint',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'feeVault',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'lpMint',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'rent',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'systemProgram',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: 'enableVault',\n accounts: [\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'admin',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: 'enabled',\n type: 'u8',\n },\n ],\n },\n {\n name: 'setOperator',\n accounts: [\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'operator',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'admin',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [],\n },\n {\n name: 'updateLockedProfitDegradation',\n accounts: [\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'admin',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [\n {\n name: 'lockedProfitDegradation',\n type: 'u64',\n },\n ],\n },\n {\n name: 'getUnlockedAmount',\n accounts: [\n {\n name: 'vault',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: 'transferAdmin',\n accounts: [\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'admin',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'newAdmin',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [],\n },\n {\n name: 'transferFeeVault',\n accounts: [\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'admin',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'newFeeVault',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [],\n },\n {\n name: 'initializeStrategy',\n accounts: [\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'strategyProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'strategy',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'reserve',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'collateralVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'collateralMint',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'admin',\n isMut: true,\n isSigner: true,\n },\n {\n name: 'systemProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'rent',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'bumps',\n type: {\n defined: 'StrategyBumps',\n },\n },\n {\n name: 'strategyType',\n type: {\n defined: 'StrategyType',\n },\n },\n ],\n },\n {\n name: 'removeStrategy',\n accounts: [\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'strategy',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'strategyProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'collateralVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'reserve',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'tokenVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'feeVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'lpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'admin',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [],\n },\n {\n name: 'addStrategy',\n accounts: [\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'strategy',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'admin',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [],\n },\n {\n name: 'depositStrategy',\n accounts: [\n {\n name: 'userInfo',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'assetPoolSpl',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'poolSummaries',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'priceSummaries',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'userInfoSignerPda',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'basePda',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'userPagesStats',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'amount',\n type: 'u64',\n },\n ],\n },\n {\n name: 'withdrawStrategy',\n accounts: [\n {\n name: 'userInfo',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'assetPoolSpl',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'poolSummaries',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'priceSummaries',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'userInfoSignerPda',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'basePda',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'userPagesStats',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'amount',\n type: 'u64',\n },\n ],\n },\n {\n name: 'claimRewards',\n accounts: [\n {\n name: 'vault',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'strategy',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'tokenRewardAcc',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'operator',\n isMut: false,\n isSigner: true,\n },\n ],\n args: [],\n },\n {\n name: 'deposit',\n accounts: [\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'tokenVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'lpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userToken',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'user',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'tokenAmount',\n type: 'u64',\n },\n {\n name: 'minimumLpTokenAmount',\n type: 'u64',\n },\n ],\n },\n {\n name: 'withdraw',\n accounts: [\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'tokenVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'lpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userToken',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'user',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'unmintAmount',\n type: 'u64',\n },\n {\n name: 'minOutAmount',\n type: 'u64',\n },\n ],\n },\n {\n name: 'withdrawDirectlyFromStrategy',\n accounts: [\n {\n name: 'vault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'strategy',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'reserve',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'strategyProgram',\n isMut: false,\n isSigner: false,\n },\n {\n name: 'collateralVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'tokenVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'lpMint',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'feeVault',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userToken',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'userLp',\n isMut: true,\n isSigner: false,\n },\n {\n name: 'user',\n isMut: false,\n isSigner: true,\n },\n {\n name: 'tokenProgram',\n isMut: false,\n isSigner: false,\n },\n ],\n args: [\n {\n name: 'unmintAmount',\n type: 'u64',\n },\n {\n name: 'minOutAmount',\n type: 'u64',\n },\n ],\n },\n ],\n accounts: [\n {\n name: 'vault',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'enabled',\n type: 'u8',\n },\n {\n name: 'bumps',\n type: {\n defined: 'VaultBumps',\n },\n },\n {\n name: 'totalAmount',\n type: 'u64',\n },\n {\n name: 'tokenVault',\n type: 'publicKey',\n },\n {\n name: 'feeVault',\n type: 'publicKey',\n },\n {\n name: 'tokenMint',\n type: 'publicKey',\n },\n {\n name: 'lpMint',\n type: 'publicKey',\n },\n {\n name: 'strategies',\n type: {\n array: ['publicKey', 30],\n },\n },\n {\n name: 'base',\n type: 'publicKey',\n },\n {\n name: 'admin',\n type: 'publicKey',\n },\n {\n name: 'operator',\n type: 'publicKey',\n },\n {\n name: 'lockedProfitTracker',\n type: {\n defined: 'LockedProfitTracker',\n },\n },\n ],\n },\n },\n {\n name: 'strategy',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'reserve',\n type: 'publicKey',\n },\n {\n name: 'collateralVault',\n type: 'publicKey',\n },\n {\n name: 'strategyType',\n type: {\n defined: 'StrategyType',\n },\n },\n {\n name: 'currentLiquidity',\n type: 'u64',\n },\n {\n name: 'bumps',\n type: {\n array: ['u8', 10],\n },\n },\n {\n name: 'vault',\n type: 'publicKey',\n },\n ],\n },\n },\n ],\n types: [\n {\n name: 'VaultBumps',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'vaultBump',\n type: 'u8',\n },\n {\n name: 'tokenVaultBump',\n type: 'u8',\n },\n ],\n },\n },\n {\n name: 'StrategyBumps',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'strategyIndex',\n type: 'u8',\n },\n {\n name: 'otherBumps',\n type: {\n array: ['u8', 10],\n },\n },\n ],\n },\n },\n {\n name: 'LockedProfitTracker',\n type: {\n kind: 'struct',\n fields: [\n {\n name: 'lastUpdatedLockedProfit',\n type: 'u64',\n },\n {\n name: 'lastReport',\n type: 'u64',\n },\n {\n name: 'lockedProfitDegradation',\n type: 'u64',\n },\n ],\n },\n },\n {\n name: 'StrategyType',\n type: {\n kind: 'enum',\n variants: [\n {\n name: 'PortFinanceWithoutLM',\n },\n {\n name: 'PortFinanceWithLM',\n },\n {\n name: 'SolendWithoutLM',\n },\n {\n name: 'Mango',\n },\n {\n name: 'SolendWithLM',\n },\n {\n name: 'ApricotWithoutLM',\n },\n {\n name: 'Francium',\n },\n ],\n },\n },\n ],\n events: [\n {\n name: 'AddLiquidity',\n fields: [\n {\n name: 'lpMintAmount',\n type: 'u64',\n index: false,\n },\n {\n name: 'tokenAmount',\n type: 'u64',\n index: false,\n },\n ],\n },\n {\n name: 'RemoveLiquidity',\n fields: [\n {\n name: 'lpUnmintAmount',\n type: 'u64',\n index: false,\n },\n {\n name: 'tokenAmount',\n type: 'u64',\n index: false,\n },\n ],\n },\n {\n name: 'StrategyDeposit',\n fields: [\n {\n name: 'strategyType',\n type: {\n defined: 'StrategyType',\n },\n index: false,\n },\n {\n name: 'tokenAmount',\n type: 'u64',\n index: false,\n },\n ],\n },\n {\n name: 'StrategyWithdraw',\n fields: [\n {\n name: 'strategyType',\n type: {\n defined: 'StrategyType',\n },\n index: false,\n },\n {\n name: 'collateralAmount',\n type: 'u64',\n index: false,\n },\n {\n name: 'estimatedTokenAmount',\n type: 'u64',\n index: false,\n },\n ],\n },\n {\n name: 'ClaimReward',\n fields: [\n {\n name: 'strategyType',\n type: {\n defined: 'StrategyType',\n },\n index: false,\n },\n {\n name: 'tokenAmount',\n type: 'u64',\n index: false,\n },\n {\n name: 'mintAccount',\n type: 'publicKey',\n index: false,\n },\n ],\n },\n {\n name: 'PerformanceFee',\n fields: [\n {\n name: 'lpMintMore',\n type: 'u64',\n index: false,\n },\n ],\n },\n {\n name: 'ReportLoss',\n fields: [\n {\n name: 'strategy',\n type: 'publicKey',\n index: false,\n },\n {\n name: 'loss',\n type: 'u64',\n index: false,\n },\n ],\n },\n {\n name: 'TotalAmount',\n fields: [\n {\n name: 'totalAmount',\n type: 'u64',\n index: false,\n },\n ],\n },\n ],\n errors: [\n {\n code: 6000,\n name: 'VaultIsDisabled',\n msg: 'Vault is disabled',\n },\n {\n code: 6001,\n name: 'ExceededSlippage',\n msg: 'Exceeded slippage tolerance',\n },\n {\n code: 6002,\n name: 'StrategyIsNotExisted',\n msg: 'Strategy is not existed',\n },\n {\n code: 6003,\n name: 'UnAuthorized',\n msg: 'UnAuthorized',\n },\n {\n code: 6004,\n name: 'MathOverflow',\n msg: 'Math operation overflow',\n },\n {\n code: 6005,\n name: 'ProtocolIsNotSupported',\n msg: 'Protocol is not supported',\n },\n {\n code: 6006,\n name: 'UnMatchReserve',\n msg: 'Reserve does not support token mint',\n },\n {\n code: 6007,\n name: 'InvalidLockedProfitDegradation',\n msg: 'lockedProfitDegradation is invalid',\n },\n {\n code: 6008,\n name: 'MaxStrategyReached',\n msg: 'Maximum number of strategies have been reached',\n },\n {\n code: 6009,\n name: 'StrategyExisted',\n msg: 'Strategy existed',\n },\n {\n code: 6010,\n name: 'InvalidUnmintAmount',\n msg: 'Invalid unmint amount',\n },\n {\n code: 6011,\n name: 'InvalidAccountsForStrategy',\n msg: 'Invalid accounts for strategy',\n },\n {\n code: 6012,\n name: 'InvalidBump',\n msg: 'Invalid bump',\n },\n {\n code: 6013,\n name: 'AmountMustGreaterThanZero',\n msg: 'Amount must be greater than 0',\n },\n ],\n};\n//# sourceMappingURL=vault-idl.js.map","var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nimport { getAmountByShare, calculateWithdrawableAmount, getUnmintAmount, } from '@mercurial-finance/vault-sdk';\nimport { AnchorProvider, BN, Program } from '@project-serum/anchor';\nimport { ASSOCIATED_TOKEN_PROGRAM_ID, Token, TOKEN_PROGRAM_ID, AccountLayout, u64, } from '@solana/spl-token';\nimport { PublicKey, SystemProgram, SYSVAR_CLOCK_PUBKEY, TransactionInstruction, } from '@solana/web3.js';\nimport invariant from 'invariant';\nimport { CURVE_TYPE_ACCOUNTS, ERROR, VIRTUAL_PRICE_PRECISION, WRAPPED_SOL_MINT, PROGRAM_ID, VAULT_PROGRAM_ID, } from './constants';\nimport { ConstantProductSwap, StableSwap, TradeDirection } from './curve';\nimport { IDL as AmmIdl } from './idl';\nimport { IDL as VaultIdl } from './vault-idl';\nexport const createProgram = (connection, cluster) => {\n const provider = new AnchorProvider(connection, {}, AnchorProvider.defaultOptions());\n const ammProgram = new Program(AmmIdl, PROGRAM_ID, provider);\n const vaultProgram = new Program(VaultIdl, VAULT_PROGRAM_ID, provider);\n return { provider, ammProgram, vaultProgram };\n};\n/**\n * It takes an amount and a slippage rate, and returns the maximum amount that can be received with\n * that slippage rate\n * @param {BN} amount - The amount of tokens you want to buy.\n * @param {number} slippageRate - The maximum percentage of slippage you're willing to accept. (Max to 2 decimal place)\n * @returns The maximum amount of tokens that can be bought with the given amount of ETH, given the\n * slippage rate.\n */\nexport const getMaxAmountWithSlippage = (amount, slippageRate) => {\n const slippage = ((100 + slippageRate) / 100) * 10000;\n return amount.mul(new BN(slippage)).div(new BN(10000));\n};\n/**\n * It takes an amount and a slippage rate, and returns the minimum amount that will be received after\n * slippage\n * @param {BN} amount - The amount of tokens you want to sell.\n * @param {number} slippageRate - The percentage of slippage you're willing to accept. (Max to 2 decimal place)\n * @returns The minimum amount that can be received after slippage is applied.\n */\nexport const getMinAmountWithSlippage = (amount, slippageRate) => {\n const slippage = ((100 - slippageRate) / 100) * 10000;\n return amount.mul(new BN(slippage)).div(new BN(10000));\n};\nexport const getAssociatedTokenAccount = (tokenMint, owner, allowOwnerOffCurve = false) => __awaiter(void 0, void 0, void 0, function* () {\n return yield Token.getAssociatedTokenAddress(ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID, tokenMint, owner, allowOwnerOffCurve);\n});\nexport const getOrCreateATAInstruction = (tokenMint, owner, connection, allowOwnerOffCurve) => __awaiter(void 0, void 0, void 0, function* () {\n let toAccount;\n try {\n toAccount = yield Token.getAssociatedTokenAddress(ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID, tokenMint, owner, allowOwnerOffCurve !== null && allowOwnerOffCurve !== void 0 ? allowOwnerOffCurve : false);\n const account = yield connection.getAccountInfo(toAccount);\n if (!account) {\n const ix = Token.createAssociatedTokenAccountInstruction(ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID, tokenMint, toAccount, owner, owner);\n return [toAccount, ix];\n }\n return [toAccount, undefined];\n }\n catch (e) {\n /* handle error */\n console.error('Error::getOrCreateATAInstruction', e);\n throw e;\n }\n});\nexport const wrapSOLInstruction = (from, to, amount) => {\n return [\n SystemProgram.transfer({\n fromPubkey: from,\n toPubkey: to,\n lamports: amount,\n }),\n new TransactionInstruction({\n keys: [\n {\n pubkey: to,\n isSigner: false,\n isWritable: true,\n },\n ],\n data: Buffer.from(new Uint8Array([17])),\n programId: TOKEN_PROGRAM_ID,\n }),\n ];\n};\nexport const unwrapSOLInstruction = (owner, allowOwnerOffCurve) => __awaiter(void 0, void 0, void 0, function* () {\n const wSolATAAccount = yield Token.getAssociatedTokenAddress(ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID, WRAPPED_SOL_MINT, owner, allowOwnerOffCurve !== null && allowOwnerOffCurve !== void 0 ? allowOwnerOffCurve : false);\n if (wSolATAAccount) {\n const closedWrappedSolInstruction = Token.createCloseAccountInstruction(TOKEN_PROGRAM_ID, wSolATAAccount, owner, owner, []);\n return closedWrappedSolInstruction;\n }\n return null;\n});\nexport const deserializeAccount = (data) => {\n if (data == undefined || data.length == 0) {\n return undefined;\n }\n const accountInfo = AccountLayout.decode(data);\n accountInfo.mint = new PublicKey(accountInfo.mint);\n accountInfo.owner = new PublicKey(accountInfo.owner);\n accountInfo.amount = u64.fromBuffer(accountInfo.amount);\n if (accountInfo.delegateOption === 0) {\n accountInfo.delegate = null;\n accountInfo.delegatedAmount = new u64(0);\n }\n else {\n accountInfo.delegate = new PublicKey(accountInfo.delegate);\n accountInfo.delegatedAmount = u64.fromBuffer(accountInfo.delegatedAmount);\n }\n accountInfo.isInitialized = accountInfo.state !== 0;\n accountInfo.isFrozen = accountInfo.state === 2;\n if (accountInfo.isNativeOption === 1) {\n accountInfo.rentExemptReserve = u64.fromBuffer(accountInfo.isNative);\n accountInfo.isNative = true;\n }\n else {\n accountInfo.rentExemptReserve = null;\n accountInfo.isNative = false;\n }\n if (accountInfo.closeAuthorityOption === 0) {\n accountInfo.closeAuthority = null;\n }\n else {\n accountInfo.closeAuthority = new PublicKey(accountInfo.closeAuthority);\n }\n return accountInfo;\n};\nexport const getOnchainTime = (connection) => __awaiter(void 0, void 0, void 0, function* () {\n const parsedClock = yield connection.getParsedAccountInfo(SYSVAR_CLOCK_PUBKEY);\n const parsedClockAccount = parsedClock.value.data.parsed;\n const currentTime = parsedClockAccount.info.unixTimestamp;\n return currentTime;\n});\n// Typescript implementation of https://github.com/mercurial-finance/mercurial-dynamic-amm/blob/main/programs/amm/src/state.rs#L87\nconst getLastVirtualPrice = (apyState) => {\n const { snapshot } = apyState;\n const virtualPrices = snapshot.virtualPrices;\n let prev = ((_) => {\n if (snapshot.pointer.eq(new BN(0))) {\n return virtualPrices.length - 1;\n }\n else {\n return snapshot.pointer.toNumber() - 1;\n }\n })();\n const virtualPrice = virtualPrices[prev];\n if (virtualPrice.price.eq(new BN(0))) {\n return null;\n }\n return virtualPrice;\n};\n// Typescript implementation of https://github.com/mercurial-finance/mercurial-dynamic-amm/blob/main/programs/amm/src/state.rs#L101\nconst getFirstVirtualPrice = (apyState) => {\n const { snapshot } = apyState;\n let initial = snapshot.pointer.toNumber();\n let current = initial;\n const virtualPrices = snapshot.virtualPrices;\n while ((current + 1) % virtualPrices.length != initial) {\n if (virtualPrices[current].price.eq(new BN(0))) {\n current = (current + 1) % virtualPrices.length;\n }\n else {\n break;\n }\n }\n let virtualPrice = virtualPrices[current];\n if (virtualPrice.price.eq(new BN(0))) {\n return null;\n }\n return virtualPrice;\n};\n/**\n * Compute \"actual\" amount deposited to vault (precision loss)\n * @param depositAmount\n * @param beforeAmount\n * @param vaultLpBalance\n * @param vaultLpSupply\n * @param vaultTotalAmount\n * @returns\n */\nexport const computeActualDepositAmount = (depositAmount, beforeAmount, vaultLpBalance, vaultLpSupply, vaultTotalAmount) => {\n if (depositAmount.eq(new BN(0)))\n return depositAmount;\n const vaultLpMinted = depositAmount.mul(vaultLpSupply).div(vaultTotalAmount);\n vaultLpSupply = vaultLpSupply.add(vaultLpMinted);\n vaultTotalAmount = vaultTotalAmount.add(depositAmount);\n vaultLpBalance = vaultLpBalance.add(vaultLpMinted);\n const afterAmount = vaultLpBalance.mul(vaultTotalAmount).div(vaultLpSupply);\n return afterAmount.sub(beforeAmount);\n};\n/**\n * Compute pool information, Typescript implementation of https://github.com/mercurial-finance/mercurial-dynamic-amm/blob/main/programs/amm/src/lib.rs#L960\n * @param {number} currentTime - the on solana chain time in seconds (SYSVAR_CLOCK_PUBKEY)\n * @param {BN} poolVaultALp - The amount of LP tokens in the pool for token A\n * @param {BN} poolVaultBLp - The amount of Lp tokens in the pool for token B,\n * @param {BN} vaultALpSupply - The total amount of Vault A LP tokens in the pool.\n * @param {BN} vaultBLpSupply - The total amount of Vault B LP token in the pool.\n * @param {BN} poolLpSupply - The total amount of LP tokens in the pool.\n * @param {ApyState} apyState - ApyState\n * @param {SwapCurve} swapCurve - SwapCurve - the swap curve used to calculate the virtual price\n * @param {VaultState} vaultA - VaultState of vault A\n * @param {VaultState} vaultB - VaultState of Vault B\n * @returns an object of type PoolInformation.\n */\nexport const calculatePoolInfo = (currentTimestamp, poolVaultALp, poolVaultBLp, vaultALpSupply, vaultBLpSupply, poolLpSupply, apyState, swapCurve, vaultA, vaultB) => {\n const vaultAWithdrawableAmount = calculateWithdrawableAmount(currentTimestamp.toNumber(), vaultA);\n const vaultBWithdrawableAmount = calculateWithdrawableAmount(currentTimestamp.toNumber(), vaultB);\n const tokenAAmount = getAmountByShare(poolVaultALp, vaultAWithdrawableAmount, vaultALpSupply);\n const tokenBAmount = getAmountByShare(poolVaultBLp, vaultBWithdrawableAmount, vaultBLpSupply);\n let firstTimestamp = new BN(0);\n let apy, virtualPriceNumber, firstVirtualPriceNumber = 0;\n const d = swapCurve.computeD(tokenAAmount, tokenBAmount);\n let latestVirtualPrice = d.mul(VIRTUAL_PRICE_PRECISION).div(poolLpSupply);\n if (latestVirtualPrice.eq(new BN(0))) {\n const lastVirtualPrice = getLastVirtualPrice(apyState);\n if (lastVirtualPrice) {\n latestVirtualPrice = lastVirtualPrice.price;\n }\n }\n const firstVirtualPrice = getFirstVirtualPrice(apyState);\n if (firstVirtualPrice && latestVirtualPrice.gt(new BN(0))) {\n // Compute APY\n const second = latestVirtualPrice.toNumber() / VIRTUAL_PRICE_PRECISION.toNumber();\n const first = firstVirtualPrice.price.toNumber() / VIRTUAL_PRICE_PRECISION.toNumber();\n const timeElapsed = currentTimestamp.sub(firstVirtualPrice.timestamp).toNumber();\n const rate = second / first;\n const frequency = (365 * 24 * 3600) / timeElapsed;\n const compoundRate = Math.pow(rate, frequency);\n apy = (compoundRate - 1) * 100;\n virtualPriceNumber = second;\n firstVirtualPriceNumber = first;\n firstTimestamp = firstVirtualPrice.timestamp;\n }\n const poolInformation = {\n tokenAAmount,\n tokenBAmount,\n currentTimestamp,\n apy,\n firstTimestamp,\n firstVirtualPrice: firstVirtualPriceNumber,\n virtualPrice: virtualPriceNumber,\n };\n return poolInformation;\n};\nexport const calculateAdminTradingFee = (amount, poolState) => {\n const { ownerTradeFeeDenominator, ownerTradeFeeNumerator } = poolState.fees;\n return amount.mul(ownerTradeFeeNumerator).div(ownerTradeFeeDenominator);\n};\nexport const calculateTradingFee = (amount, poolState) => {\n const { tradeFeeDenominator, tradeFeeNumerator } = poolState.fees;\n return amount.mul(tradeFeeNumerator).div(tradeFeeDenominator);\n};\n/**\n * \"Calculate the maximum amount of tokens that can be swapped out of a pool.\"\n *\n * @param {PublicKey} tokenMint - The mint that want to swap out\n * @param {PublicKey} tokenAMint - The public key of the token A mint.\n * @param {PublicKey} tokenBMint - The public key of the token B mint.\n * @param {BN} tokenAAmount - The amount of token A that the user wants to swap out.\n * @param {BN} tokenBAmount - The amount of token B that the user wants to swap out.\n * @param {BN} vaultAReserve - The amount of tokenA that the vault has in reserve.\n * @param {BN} vaultBReserve - The amount of tokenB that the vault has in reserve.\n * @returns The max amount of tokens that can be swapped out.\n */\nexport const calculateMaxSwapOutAmount = (tokenMint, tokenAMint, tokenBMint, tokenAAmount, tokenBAmount, vaultAReserve, vaultBReserve) => {\n invariant(tokenMint.equals(tokenAMint) || tokenMint.equals(tokenBMint), ERROR.INVALID_MINT);\n const [outTotalAmount, outReserveBalance] = tokenMint.equals(tokenAMint)\n ? [tokenAAmount, vaultAReserve]\n : [tokenBAmount, vaultBReserve];\n return outTotalAmount.gt(outReserveBalance) ? outReserveBalance : outTotalAmount;\n};\n/**\n * It gets the account info for the two accounts that are used in depeg Pool\n * @param {Connection} connection - Connection - The connection to the Solana cluster\n * @returns A map of the depeg accounts.\n */\nexport const getDepegAccounts = (connection) => __awaiter(void 0, void 0, void 0, function* () {\n const depegAccounts = new Map();\n const [marinadeBuffer, solidoBuffer] = yield connection.getMultipleAccountsInfo([\n CURVE_TYPE_ACCOUNTS.marinade,\n CURVE_TYPE_ACCOUNTS.lido,\n ]);\n depegAccounts.set(CURVE_TYPE_ACCOUNTS.marinade.toBase58(), marinadeBuffer);\n depegAccounts.set(CURVE_TYPE_ACCOUNTS.lido.toBase58(), solidoBuffer);\n return depegAccounts;\n});\n/**\n * It calculates the amount of tokens you will receive after swapping your tokens\n * @param {PublicKey} inTokenMint - The mint of the token you're swapping in.\n * @param {BN} inAmountLamport - The amount of the input token you want to swap.\n * @param {SwapQuoteParam} params - SwapQuoteParam\n * @param {PoolState} params.poolState - pool state that fetch from program\n * @param {VaultState} params.vaultA - vault A state that fetch from vault program\n * @param {VaultState} params.vaultB - vault B state that fetch from vault program\n * @param {BN} params.poolVaultALp - The amount of LP tokens in the pool for token A (`PoolState.aVaultLp` accountInfo)\n * @param {BN} params.poolVaultBLp - The amount of LP tokens in the pool for token B (`PoolState.bVaultLp` accountInfo)\n * @param {BN} params.vaultALpSupply - vault A lp supply (`VaultState.lpMint` accountInfo)\n * @param {BN} params.vaultBLpSupply - vault B lp supply (`VaultState.lpMint` accountInfo)\n * @param {BN} params.vaultAReserve - vault A reserve (`VaultState.tokenVault` accountInfo)\n * @param {BN} params.vaultBReserve - vault B reserve (`VaultState.tokenVault` accountInfo)\n * @param {BN} params.currentTime - on chain time (use `SYSVAR_CLOCK_PUBKEY`)\n * @param {BN} params.depegAccounts - A map of the depeg accounts. (get from `getDepegAccounts` util)\n * @returns The amount of tokens that will be received after the swap.\n */\nexport const calculateSwapQuote = (inTokenMint, inAmountLamport, params) => {\n const { vaultA, vaultB, vaultALpSupply, vaultBLpSupply, poolState, poolVaultALp, poolVaultBLp, currentTime, depegAccounts, vaultAReserve, vaultBReserve, } = params;\n const { tokenAMint, tokenBMint } = poolState;\n invariant(inTokenMint.equals(tokenAMint) || inTokenMint.equals(tokenBMint), ERROR.INVALID_MINT);\n let swapCurve;\n if ('stable' in poolState.curveType) {\n const { amp, depeg, tokenMultiplier } = poolState.curveType['stable'];\n swapCurve = new StableSwap(amp.toNumber(), tokenMultiplier, depeg, depegAccounts, new BN(currentTime));\n }\n else {\n swapCurve = new ConstantProductSwap();\n }\n const vaultAWithdrawableAmount = calculateWithdrawableAmount(currentTime, vaultA);\n const vaultBWithdrawableAmount = calculateWithdrawableAmount(currentTime, vaultB);\n const tokenAAmount = getAmountByShare(poolVaultALp, vaultAWithdrawableAmount, vaultALpSupply);\n const tokenBAmount = getAmountByShare(poolVaultBLp, vaultBWithdrawableAmount, vaultBLpSupply);\n const isFromAToB = inTokenMint.equals(tokenAMint);\n const [sourceAmount, swapSourceAmount, swapDestinationAmount, swapSourceVault, swapDestinationVault, swapSourceVaultLpSupply, swapDestinationVaultLpSupply, tradeDirection,] = isFromAToB\n ? [inAmountLamport, tokenAAmount, tokenBAmount, vaultA, vaultB, vaultALpSupply, vaultBLpSupply, TradeDirection.AToB]\n : [\n inAmountLamport,\n tokenBAmount,\n tokenAAmount,\n vaultB,\n vaultA,\n vaultBLpSupply,\n vaultALpSupply,\n TradeDirection.BToA,\n ];\n const adminFee = calculateAdminTradingFee(sourceAmount, poolState);\n const tradeFee = calculateTradingFee(sourceAmount, poolState);\n const sourceVaultWithdrawableAmount = calculateWithdrawableAmount(currentTime, swapSourceVault);\n // Get vault lp minted when deposit to the vault\n const sourceVaultLp = getUnmintAmount(sourceAmount.sub(adminFee), sourceVaultWithdrawableAmount, swapSourceVaultLpSupply);\n const actualSourceAmount = getAmountByShare(sourceVaultLp, sourceVaultWithdrawableAmount, swapSourceVaultLpSupply);\n let sourceAmountWithFee = actualSourceAmount.sub(tradeFee);\n const { outAmount: destinationAmount, priceImpact } = swapCurve.computeOutAmount(sourceAmountWithFee, swapSourceAmount, swapDestinationAmount, tradeDirection);\n const destinationVaultWithdrawableAmount = calculateWithdrawableAmount(currentTime, swapDestinationVault);\n // Get vault lp to burn when withdraw from the vault\n const destinationVaultLp = getUnmintAmount(destinationAmount, destinationVaultWithdrawableAmount, swapDestinationVaultLpSupply);\n let actualDestinationAmount = getAmountByShare(destinationVaultLp, destinationVaultWithdrawableAmount, swapDestinationVaultLpSupply);\n const maxSwapOutAmount = calculateMaxSwapOutAmount(tradeDirection == TradeDirection.AToB ? tokenBMint : tokenAMint, tokenAMint, tokenBMint, tokenAAmount, tokenBAmount, vaultAReserve, vaultBReserve);\n invariant(actualDestinationAmount.lt(maxSwapOutAmount), 'Out amount > vault reserve');\n return {\n amountOut: actualDestinationAmount,\n fee: adminFee.add(tradeFee),\n priceImpact,\n };\n};\nexport function chunks(array, size) {\n return Array.apply(0, new Array(Math.ceil(array.length / size))).map((_, index) => array.slice(index * size, (index + 1) * size));\n}\nexport function chunkedGetMultipleAccountInfos(connection, pks, chunkSize = 100) {\n return __awaiter(this, void 0, void 0, function* () {\n const accountInfoMap = new Map();\n const accountInfos = (yield Promise.all(chunks(pks, chunkSize).map((chunk) => connection.getMultipleAccountsInfo(chunk)))).flat();\n return accountInfos;\n });\n}\n//# sourceMappingURL=utils.js.map","// generated/runtime.ts\nvar BASE_PATH = \"http://localhost\".replace(/\\/+$/, \"\");\nvar isBlob = (value) => typeof Blob !== \"undefined\" && value instanceof Blob;\nvar BaseAPI = class {\n constructor(configuration = new Configuration()) {\n this.configuration = configuration;\n this.fetchApi = async (url, init) => {\n let fetchParams = { url, init };\n for (const middleware of this.middleware) {\n if (middleware.pre) {\n fetchParams = await middleware.pre({\n fetch: this.fetchApi,\n ...fetchParams\n }) || fetchParams;\n }\n }\n let response = await (this.configuration.fetchApi || fetch)(fetchParams.url, fetchParams.init);\n for (const middleware of this.middleware) {\n if (middleware.post) {\n response = await middleware.post({\n fetch: this.fetchApi,\n url: fetchParams.url,\n init: fetchParams.init,\n response: response.clone()\n }) || response;\n }\n }\n return response;\n };\n this.middleware = configuration.middleware;\n }\n withMiddleware(...middlewares) {\n const next = this.clone();\n next.middleware = next.middleware.concat(...middlewares);\n return next;\n }\n withPreMiddleware(...preMiddlewares) {\n const middlewares = preMiddlewares.map((pre) => ({ pre }));\n return this.withMiddleware(...middlewares);\n }\n withPostMiddleware(...postMiddlewares) {\n const middlewares = postMiddlewares.map((post) => ({ post }));\n return this.withMiddleware(...middlewares);\n }\n async request(context, initOverrides) {\n const { url, init } = this.createFetchParams(context, initOverrides);\n const response = await this.fetchApi(url, init);\n if (response.status >= 200 && response.status < 300) {\n return response;\n }\n throw response;\n }\n createFetchParams(context, initOverrides) {\n let url = this.configuration.basePath + context.path;\n if (context.query !== void 0 && Object.keys(context.query).length !== 0) {\n url += \"?\" + this.configuration.queryParamsStringify(context.query);\n }\n const body = typeof FormData !== \"undefined\" && context.body instanceof FormData || context.body instanceof URLSearchParams || isBlob(context.body) ? context.body : JSON.stringify(context.body);\n const headers = Object.assign({}, this.configuration.headers, context.headers);\n const init = {\n method: context.method,\n headers,\n body,\n credentials: this.configuration.credentials,\n ...initOverrides\n };\n return { url, init };\n }\n clone() {\n const constructor = this.constructor;\n const next = new constructor(this.configuration);\n next.middleware = this.middleware.slice();\n return next;\n }\n};\nvar RequiredError = class extends Error {\n constructor(field, msg) {\n super(msg);\n this.field = field;\n this.name = \"RequiredError\";\n }\n};\nvar COLLECTION_FORMATS = {\n csv: \",\",\n ssv: \" \",\n tsv: \"\t\",\n pipes: \"|\"\n};\nvar Configuration = class {\n constructor(configuration = {}) {\n this.configuration = configuration;\n }\n get basePath() {\n return this.configuration.basePath != null ? this.configuration.basePath : BASE_PATH;\n }\n get fetchApi() {\n return this.configuration.fetchApi;\n }\n get middleware() {\n return this.configuration.middleware || [];\n }\n get queryParamsStringify() {\n return this.configuration.queryParamsStringify || querystring;\n }\n get username() {\n return this.configuration.username;\n }\n get password() {\n return this.configuration.password;\n }\n get apiKey() {\n const apiKey = this.configuration.apiKey;\n if (apiKey) {\n return typeof apiKey === \"function\" ? apiKey : () => apiKey;\n }\n return void 0;\n }\n get accessToken() {\n const accessToken = this.configuration.accessToken;\n if (accessToken) {\n return typeof accessToken === \"function\" ? accessToken : async () => accessToken;\n }\n return void 0;\n }\n get headers() {\n return this.configuration.headers;\n }\n get credentials() {\n return this.configuration.credentials;\n }\n};\nfunction exists(json, key) {\n const value = json[key];\n return value !== null && value !== void 0;\n}\nfunction querystring(params, prefix = \"\") {\n return Object.keys(params).map((key) => {\n const fullKey = prefix + (prefix.length ? `[${key}]` : key);\n const value = params[key];\n if (value instanceof Array) {\n const multiValue = value.map((singleValue) => encodeURIComponent(String(singleValue))).join(`&${encodeURIComponent(fullKey)}=`);\n return `${encodeURIComponent(fullKey)}=${multiValue}`;\n }\n if (value instanceof Date) {\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(value.toISOString())}`;\n }\n if (value instanceof Object) {\n return querystring(value, fullKey);\n }\n return `${encodeURIComponent(fullKey)}=${encodeURIComponent(String(value))}`;\n }).filter((part) => part.length > 0).join(\"&\");\n}\nfunction mapValues(data, fn) {\n return Object.keys(data).reduce(\n (acc, key) => ({ ...acc, [key]: fn(data[key]) }),\n {}\n );\n}\nfunction canConsumeForm(consumes) {\n for (const consume of consumes) {\n if (\"multipart/form-data\" === consume.contentType) {\n return true;\n }\n }\n return false;\n}\nvar JSONApiResponse = class {\n constructor(raw, transformer = (jsonValue) => jsonValue) {\n this.raw = raw;\n this.transformer = transformer;\n }\n async value() {\n return this.transformer(await this.raw.json());\n }\n};\nvar VoidApiResponse = class {\n constructor(raw) {\n this.raw = raw;\n }\n async value() {\n return void 0;\n }\n};\nvar BlobApiResponse = class {\n constructor(raw) {\n this.raw = raw;\n }\n async value() {\n return await this.raw.blob();\n }\n};\nvar TextApiResponse = class {\n constructor(raw) {\n this.raw = raw;\n }\n async value() {\n return await this.raw.text();\n }\n};\n\n// generated/models/InlineResponse200LpFee.ts\nfunction InlineResponse200LpFeeFromJSON(json) {\n return InlineResponse200LpFeeFromJSONTyped(json, false);\n}\nfunction InlineResponse200LpFeeFromJSONTyped(json, ignoreDiscriminator) {\n if (json === void 0 || json === null) {\n return json;\n }\n return {\n \"amount\": !exists(json, \"amount\") ? void 0 : json[\"amount\"],\n \"mint\": !exists(json, \"mint\") ? void 0 : json[\"mint\"],\n \"pct\": !exists(json, \"pct\") ? void 0 : json[\"pct\"]\n };\n}\nfunction InlineResponse200LpFeeToJSON(value) {\n if (value === void 0) {\n return void 0;\n }\n if (value === null) {\n return null;\n }\n return {\n \"amount\": value.amount,\n \"mint\": value.mint,\n \"pct\": value.pct\n };\n}\n\n// generated/models/Def0.ts\nfunction Def0FromJSON(json) {\n return Def0FromJSONTyped(json, false);\n}\nfunction Def0FromJSONTyped(json, ignoreDiscriminator) {\n if (json === void 0 || json === null) {\n return json;\n }\n return {\n \"id\": !exists(json, \"id\") ? void 0 : json[\"id\"],\n \"label\": !exists(json, \"label\") ? void 0 : json[\"label\"],\n \"inputMint\": !exists(json, \"inputMint\") ? void 0 : json[\"inputMint\"],\n \"outputMint\": !exists(json, \"outputMint\") ? void 0 : json[\"outputMint\"],\n \"notEnoughLiquidity\": !exists(json, \"notEnoughLiquidity\") ? void 0 : json[\"notEnoughLiquidity\"],\n \"inAmount\": !exists(json, \"inAmount\") ? void 0 : json[\"inAmount\"],\n \"outAmount\": !exists(json, \"outAmount\") ? void 0 : json[\"outAmount\"],\n \"minInAmount\": !exists(json, \"minInAmount\") ? void 0 : json[\"minInAmount\"],\n \"minOutAmount\": !exists(json, \"minOutAmount\") ? void 0 : json[\"minOutAmount\"],\n \"priceImpactPct\": !exists(json, \"priceImpactPct\") ? void 0 : json[\"priceImpactPct\"],\n \"lpFee\": !exists(json, \"lpFee\") ? void 0 : InlineResponse200LpFeeFromJSON(json[\"lpFee\"]),\n \"platformFee\": !exists(json, \"platformFee\") ? void 0 : InlineResponse200LpFeeFromJSON(json[\"platformFee\"])\n };\n}\nfunction Def0ToJSON(value) {\n if (value === void 0) {\n return void 0;\n }\n if (value === null) {\n return null;\n }\n return {\n \"id\": value.id,\n \"label\": value.label,\n \"inputMint\": value.inputMint,\n \"outputMint\": value.outputMint,\n \"notEnoughLiquidity\": value.notEnoughLiquidity,\n \"inAmount\": value.inAmount,\n \"outAmount\": value.outAmount,\n \"minInAmount\": value.minInAmount,\n \"minOutAmount\": value.minOutAmount,\n \"priceImpactPct\": value.priceImpactPct,\n \"lpFee\": InlineResponse200LpFeeToJSON(value.lpFee),\n \"platformFee\": InlineResponse200LpFeeToJSON(value.platformFee)\n };\n}\n\n// generated/models/InlineResponse200Fees.ts\nfunction InlineResponse200FeesFromJSON(json) {\n return InlineResponse200FeesFromJSONTyped(json, false);\n}\nfunction InlineResponse200FeesFromJSONTyped(json, ignoreDiscriminator) {\n if (json === void 0 || json === null) {\n return json;\n }\n return {\n \"signatureFee\": !exists(json, \"signatureFee\") ? void 0 : json[\"signatureFee\"],\n \"openOrdersDeposits\": !exists(json, \"openOrdersDeposits\") ? void 0 : json[\"openOrdersDeposits\"],\n \"ataDeposits\": !exists(json, \"ataDeposits\") ? void 0 : json[\"ataDeposits\"],\n \"totalFeeAndDeposits\": !exists(json, \"totalFeeAndDeposits\") ? void 0 : json[\"totalFeeAndDeposits\"],\n \"minimumSOLForTransaction\": !exists(json, \"minimumSOLForTransaction\") ? void 0 : json[\"minimumSOLForTransaction\"]\n };\n}\nfunction InlineResponse200FeesToJSON(value) {\n if (value === void 0) {\n return void 0;\n }\n if (value === null) {\n return null;\n }\n return {\n \"signatureFee\": value.signatureFee,\n \"openOrdersDeposits\": value.openOrdersDeposits,\n \"ataDeposits\": value.ataDeposits,\n \"totalFeeAndDeposits\": value.totalFeeAndDeposits,\n \"minimumSOLForTransaction\": value.minimumSOLForTransaction\n };\n}\n\n// generated/models/InlineResponse200MarketInfos.ts\nfunction InlineResponse200MarketInfosFromJSON(json) {\n return InlineResponse200MarketInfosFromJSONTyped(json, false);\n}\nfunction InlineResponse200MarketInfosFromJSONTyped(json, ignoreDiscriminator) {\n if (json === void 0 || json === null) {\n return json;\n }\n return {\n \"id\": !exists(json, \"id\") ? void 0 : json[\"id\"],\n \"label\": !exists(json, \"label\") ? void 0 : json[\"label\"],\n \"inputMint\": !exists(json, \"inputMint\") ? void 0 : json[\"inputMint\"],\n \"outputMint\": !exists(json, \"outputMint\") ? void 0 : json[\"outputMint\"],\n \"notEnoughLiquidity\": !exists(json, \"notEnoughLiquidity\") ? void 0 : json[\"notEnoughLiquidity\"],\n \"inAmount\": !exists(json, \"inAmount\") ? void 0 : json[\"inAmount\"],\n \"outAmount\": !exists(json, \"outAmount\") ? void 0 : json[\"outAmount\"],\n \"minInAmount\": !exists(json, \"minInAmount\") ? void 0 : json[\"minInAmount\"],\n \"minOutAmount\": !exists(json, \"minOutAmount\") ? void 0 : json[\"minOutAmount\"],\n \"priceImpactPct\": !exists(json, \"priceImpactPct\") ? void 0 : json[\"priceImpactPct\"],\n \"lpFee\": !exists(json, \"lpFee\") ? void 0 : InlineResponse200LpFeeFromJSON(json[\"lpFee\"]),\n \"platformFee\": !exists(json, \"platformFee\") ? void 0 : InlineResponse200LpFeeFromJSON(json[\"platformFee\"])\n };\n}\nfunction InlineResponse200MarketInfosToJSON(value) {\n if (value === void 0) {\n return void 0;\n }\n if (value === null) {\n return null;\n }\n return {\n \"id\": value.id,\n \"label\": value.label,\n \"inputMint\": value.inputMint,\n \"outputMint\": value.outputMint,\n \"notEnoughLiquidity\": value.notEnoughLiquidity,\n \"inAmount\": value.inAmount,\n \"outAmount\": value.outAmount,\n \"minInAmount\": value.minInAmount,\n \"minOutAmount\": value.minOutAmount,\n \"priceImpactPct\": value.priceImpactPct,\n \"lpFee\": InlineResponse200LpFeeToJSON(value.lpFee),\n \"platformFee\": InlineResponse200LpFeeToJSON(value.platformFee)\n };\n}\n\n// generated/models/Def1.ts\nvar Def1SwapModeEnum = /* @__PURE__ */ ((Def1SwapModeEnum2) => {\n Def1SwapModeEnum2[\"ExactIn\"] = \"ExactIn\";\n Def1SwapModeEnum2[\"ExactOut\"] = \"ExactOut\";\n return Def1SwapModeEnum2;\n})(Def1SwapModeEnum || {});\nfunction Def1FromJSON(json) {\n return Def1FromJSONTyped(json, false);\n}\nfunction Def1FromJSONTyped(json, ignoreDiscriminator) {\n if (json === void 0 || json === null) {\n return json;\n }\n return {\n \"inAmount\": json[\"inAmount\"],\n \"outAmount\": json[\"outAmount\"],\n \"priceImpactPct\": json[\"priceImpactPct\"],\n \"marketInfos\": json[\"marketInfos\"].map(InlineResponse200MarketInfosFromJSON),\n \"amount\": json[\"amount\"],\n \"slippageBps\": json[\"slippageBps\"],\n \"otherAmountThreshold\": json[\"otherAmountThreshold\"],\n \"swapMode\": json[\"swapMode\"],\n \"fees\": !exists(json, \"fees\") ? void 0 : InlineResponse200FeesFromJSON(json[\"fees\"])\n };\n}\nfunction Def1ToJSON(value) {\n if (value === void 0) {\n return void 0;\n }\n if (value === null) {\n return null;\n }\n return {\n \"inAmount\": value.inAmount,\n \"outAmount\": value.outAmount,\n \"priceImpactPct\": value.priceImpactPct,\n \"marketInfos\": value.marketInfos.map(InlineResponse200MarketInfosToJSON),\n \"amount\": value.amount,\n \"slippageBps\": value.slippageBps,\n \"otherAmountThreshold\": value.otherAmountThreshold,\n \"swapMode\": value.swapMode,\n \"fees\": InlineResponse200FeesToJSON(value.fees)\n };\n}\n\n// generated/models/Def2.ts\nfunction Def2FromJSON(json) {\n return Def2FromJSONTyped(json, false);\n}\nfunction Def2FromJSONTyped(json, ignoreDiscriminator) {\n if (json === void 0 || json === null) {\n return json;\n }\n return {\n \"id\": !exists(json, \"id\") ? void 0 : json[\"id\"],\n \"mintSymbol\": !exists(json, \"mintSymbol\") ? void 0 : json[\"mintSymbol\"],\n \"vsToken\": !exists(json, \"vsToken\") ? void 0 : json[\"vsToken\"],\n \"vsTokenSymbol\": !exists(json, \"vsTokenSymbol\") ? void 0 : json[\"vsTokenSymbol\"],\n \"price\": !exists(json, \"price\") ? void 0 : json[\"price\"]\n };\n}\nfunction Def2ToJSON(value) {\n if (value === void 0) {\n return void 0;\n }\n if (value === null) {\n return null;\n }\n return {\n \"id\": value.id,\n \"mintSymbol\": value.mintSymbol,\n \"vsToken\": value.vsToken,\n \"vsTokenSymbol\": value.vsTokenSymbol,\n \"price\": value.price\n };\n}\n\n// generated/models/InlineObject.ts\nfunction InlineObjectFromJSON(json) {\n return InlineObjectFromJSONTyped(json, false);\n}\nfunction InlineObjectFromJSONTyped(json, ignoreDiscriminator) {\n if (json === void 0 || json === null) {\n return json;\n }\n return {\n \"route\": Def1FromJSON(json[\"route\"]),\n \"userPublicKey\": json[\"userPublicKey\"],\n \"wrapUnwrapSOL\": !exists(json, \"wrapUnwrapSOL\") ? void 0 : json[\"wrapUnwrapSOL\"],\n \"feeAccount\": !exists(json, \"feeAccount\") ? void 0 : json[\"feeAccount\"],\n \"asLegacyTransaction\": !exists(json, \"asLegacyTransaction\") ? void 0 : json[\"asLegacyTransaction\"],\n \"computeUnitPriceMicroLamports\": !exists(json, \"computeUnitPriceMicroLamports\") ? void 0 : json[\"computeUnitPriceMicroLamports\"],\n \"destinationWallet\": !exists(json, \"destinationWallet\") ? void 0 : json[\"destinationWallet\"]\n };\n}\nfunction InlineObjectToJSON(value) {\n if (value === void 0) {\n return void 0;\n }\n if (value === null) {\n return null;\n }\n return {\n \"route\": Def1ToJSON(value.route),\n \"userPublicKey\": value.userPublicKey,\n \"wrapUnwrapSOL\": value.wrapUnwrapSOL,\n \"feeAccount\": value.feeAccount,\n \"asLegacyTransaction\": value.asLegacyTransaction,\n \"computeUnitPriceMicroLamports\": value.computeUnitPriceMicroLamports,\n \"destinationWallet\": value.destinationWallet\n };\n}\n\n// generated/models/InlineResponse200Data.ts\nvar InlineResponse200DataSwapModeEnum = /* @__PURE__ */ ((InlineResponse200DataSwapModeEnum2) => {\n InlineResponse200DataSwapModeEnum2[\"ExactIn\"] = \"ExactIn\";\n InlineResponse200DataSwapModeEnum2[\"ExactOut\"] = \"ExactOut\";\n return InlineResponse200DataSwapModeEnum2;\n})(InlineResponse200DataSwapModeEnum || {});\nfunction InlineResponse200DataFromJSON(json) {\n return InlineResponse200DataFromJSONTyped(json, false);\n}\nfunction InlineResponse200DataFromJSONTyped(json, ignoreDiscriminator) {\n if (json === void 0 || json === null) {\n return json;\n }\n return {\n \"inAmount\": json[\"inAmount\"],\n \"outAmount\": json[\"outAmount\"],\n \"priceImpactPct\": json[\"priceImpactPct\"],\n \"marketInfos\": json[\"marketInfos\"].map(InlineResponse200MarketInfosFromJSON),\n \"amount\": json[\"amount\"],\n \"slippageBps\": json[\"slippageBps\"],\n \"otherAmountThreshold\": json[\"otherAmountThreshold\"],\n \"swapMode\": json[\"swapMode\"],\n \"fees\": !exists(json, \"fees\") ? void 0 : InlineResponse200FeesFromJSON(json[\"fees\"])\n };\n}\nfunction InlineResponse200DataToJSON(value) {\n if (value === void 0) {\n return void 0;\n }\n if (value === null) {\n return null;\n }\n return {\n \"inAmount\": value.inAmount,\n \"outAmount\": value.outAmount,\n \"priceImpactPct\": value.priceImpactPct,\n \"marketInfos\": value.marketInfos.map(InlineResponse200MarketInfosToJSON),\n \"amount\": value.amount,\n \"slippageBps\": value.slippageBps,\n \"otherAmountThreshold\": value.otherAmountThreshold,\n \"swapMode\": value.swapMode,\n \"fees\": InlineResponse200FeesToJSON(value.fees)\n };\n}\n\n// generated/models/InlineResponse200.ts\nfunction InlineResponse200FromJSON(json) {\n return InlineResponse200FromJSONTyped(json, false);\n}\nfunction InlineResponse200FromJSONTyped(json, ignoreDiscriminator) {\n if (json === void 0 || json === null) {\n return json;\n }\n return {\n \"data\": !exists(json, \"data\") ? void 0 : json[\"data\"].map(InlineResponse200DataFromJSON),\n \"timeTaken\": !exists(json, \"timeTaken\") ? void 0 : json[\"timeTaken\"],\n \"contextSlot\": !exists(json, \"contextSlot\") ? void 0 : json[\"contextSlot\"]\n };\n}\nfunction InlineResponse200ToJSON(value) {\n if (value === void 0) {\n return void 0;\n }\n if (value === null) {\n return null;\n }\n return {\n \"data\": value.data === void 0 ? void 0 : value.data.map(InlineResponse200DataToJSON),\n \"timeTaken\": value.timeTaken,\n \"contextSlot\": value.contextSlot\n };\n}\n\n// generated/models/InlineResponse2001.ts\nfunction InlineResponse2001FromJSON(json) {\n return InlineResponse2001FromJSONTyped(json, false);\n}\nfunction InlineResponse2001FromJSONTyped(json, ignoreDiscriminator) {\n if (json === void 0 || json === null) {\n return json;\n }\n return {\n \"swapTransaction\": !exists(json, \"swapTransaction\") ? void 0 : json[\"swapTransaction\"]\n };\n}\nfunction InlineResponse2001ToJSON(value) {\n if (value === void 0) {\n return void 0;\n }\n if (value === null) {\n return null;\n }\n return {\n \"swapTransaction\": value.swapTransaction\n };\n}\n\n// generated/models/InlineResponse2002.ts\nfunction InlineResponse2002FromJSON(json) {\n return InlineResponse2002FromJSONTyped(json, false);\n}\nfunction InlineResponse2002FromJSONTyped(json, ignoreDiscriminator) {\n if (json === void 0 || json === null) {\n return json;\n }\n return {\n \"data\": !exists(json, \"data\") ? void 0 : mapValues(json[\"data\"], Def2FromJSON),\n \"timeTaken\": !exists(json, \"timeTaken\") ? void 0 : json[\"timeTaken\"],\n \"contextSlot\": !exists(json, \"contextSlot\") ? void 0 : json[\"contextSlot\"]\n };\n}\nfunction InlineResponse2002ToJSON(value) {\n if (value === void 0) {\n return void 0;\n }\n if (value === null) {\n return null;\n }\n return {\n \"data\": value.data === void 0 ? void 0 : mapValues(value.data, Def2ToJSON),\n \"timeTaken\": value.timeTaken,\n \"contextSlot\": value.contextSlot\n };\n}\n\n// generated/models/InlineResponse2003.ts\nfunction InlineResponse2003FromJSON(json) {\n return InlineResponse2003FromJSONTyped(json, false);\n}\nfunction InlineResponse2003FromJSONTyped(json, ignoreDiscriminator) {\n if (json === void 0 || json === null) {\n return json;\n }\n return {\n \"mintKeys\": !exists(json, \"mintKeys\") ? void 0 : json[\"mintKeys\"],\n \"indexedRouteMap\": !exists(json, \"indexedRouteMap\") ? void 0 : json[\"indexedRouteMap\"]\n };\n}\nfunction InlineResponse2003ToJSON(value) {\n if (value === void 0) {\n return void 0;\n }\n if (value === null) {\n return null;\n }\n return {\n \"mintKeys\": value.mintKeys,\n \"indexedRouteMap\": value.indexedRouteMap\n };\n}\n\n// generated/models/InlineResponse409Data.ts\nfunction InlineResponse409DataFromJSON(json) {\n return InlineResponse409DataFromJSONTyped(json, false);\n}\nfunction InlineResponse409DataFromJSONTyped(json, ignoreDiscriminator) {\n if (json === void 0 || json === null) {\n return json;\n }\n return {\n \"error\": !exists(json, \"error\") ? void 0 : json[\"error\"],\n \"addresses\": !exists(json, \"addresses\") ? void 0 : json[\"addresses\"]\n };\n}\nfunction InlineResponse409DataToJSON(value) {\n if (value === void 0) {\n return void 0;\n }\n if (value === null) {\n return null;\n }\n return {\n \"error\": value.error,\n \"addresses\": value.addresses\n };\n}\n\n// generated/models/InlineResponse409.ts\nfunction InlineResponse409FromJSON(json) {\n return InlineResponse409FromJSONTyped(json, false);\n}\nfunction InlineResponse409FromJSONTyped(json, ignoreDiscriminator) {\n if (json === void 0 || json === null) {\n return json;\n }\n return {\n \"data\": !exists(json, \"data\") ? void 0 : InlineResponse409DataFromJSON(json[\"data\"])\n };\n}\nfunction InlineResponse409ToJSON(value) {\n if (value === void 0) {\n return void 0;\n }\n if (value === null) {\n return null;\n }\n return {\n \"data\": InlineResponse409DataToJSON(value.data)\n };\n}\n\n// generated/apis/DefaultApi.ts\nvar DefaultApi = class extends BaseAPI {\n async v4IndexedRouteMapGetRaw(requestParameters, initOverrides) {\n const queryParameters = {};\n if (requestParameters.onlyDirectRoutes !== void 0) {\n queryParameters[\"onlyDirectRoutes\"] = requestParameters.onlyDirectRoutes;\n }\n const headerParameters = {};\n const response = await this.request({\n path: `/v4/indexed-route-map`,\n method: \"GET\",\n headers: headerParameters,\n query: queryParameters\n }, initOverrides);\n return new JSONApiResponse(response, (jsonValue) => InlineResponse2003FromJSON(jsonValue));\n }\n async v4IndexedRouteMapGet(requestParameters = {}, initOverrides) {\n const response = await this.v4IndexedRouteMapGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n async v4PriceGetRaw(requestParameters, initOverrides) {\n if (requestParameters.ids === null || requestParameters.ids === void 0) {\n throw new RequiredError(\"ids\", \"Required parameter requestParameters.ids was null or undefined when calling v4PriceGet.\");\n }\n const queryParameters = {};\n if (requestParameters.ids !== void 0) {\n queryParameters[\"ids\"] = requestParameters.ids;\n }\n if (requestParameters.vsToken !== void 0) {\n queryParameters[\"vsToken\"] = requestParameters.vsToken;\n }\n if (requestParameters.vsAmount !== void 0) {\n queryParameters[\"vsAmount\"] = requestParameters.vsAmount;\n }\n const headerParameters = {};\n const response = await this.request({\n path: `/v4/price`,\n method: \"GET\",\n headers: headerParameters,\n query: queryParameters\n }, initOverrides);\n return new JSONApiResponse(response, (jsonValue) => InlineResponse2002FromJSON(jsonValue));\n }\n async v4PriceGet(requestParameters, initOverrides) {\n const response = await this.v4PriceGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n async v4QuoteGetRaw(requestParameters, initOverrides) {\n if (requestParameters.inputMint === null || requestParameters.inputMint === void 0) {\n throw new RequiredError(\"inputMint\", \"Required parameter requestParameters.inputMint was null or undefined when calling v4QuoteGet.\");\n }\n if (requestParameters.outputMint === null || requestParameters.outputMint === void 0) {\n throw new RequiredError(\"outputMint\", \"Required parameter requestParameters.outputMint was null or undefined when calling v4QuoteGet.\");\n }\n if (requestParameters.amount === null || requestParameters.amount === void 0) {\n throw new RequiredError(\"amount\", \"Required parameter requestParameters.amount was null or undefined when calling v4QuoteGet.\");\n }\n const queryParameters = {};\n if (requestParameters.inputMint !== void 0) {\n queryParameters[\"inputMint\"] = requestParameters.inputMint;\n }\n if (requestParameters.outputMint !== void 0) {\n queryParameters[\"outputMint\"] = requestParameters.outputMint;\n }\n if (requestParameters.amount !== void 0) {\n queryParameters[\"amount\"] = requestParameters.amount;\n }\n if (requestParameters.swapMode !== void 0) {\n queryParameters[\"swapMode\"] = requestParameters.swapMode;\n }\n if (requestParameters.slippageBps !== void 0) {\n queryParameters[\"slippageBps\"] = requestParameters.slippageBps;\n }\n if (requestParameters.feeBps !== void 0) {\n queryParameters[\"feeBps\"] = requestParameters.feeBps;\n }\n if (requestParameters.onlyDirectRoutes !== void 0) {\n queryParameters[\"onlyDirectRoutes\"] = requestParameters.onlyDirectRoutes;\n }\n if (requestParameters.userPublicKey !== void 0) {\n queryParameters[\"userPublicKey\"] = requestParameters.userPublicKey;\n }\n if (requestParameters.asLegacyTransaction !== void 0) {\n queryParameters[\"asLegacyTransaction\"] = requestParameters.asLegacyTransaction;\n }\n const headerParameters = {};\n const response = await this.request({\n path: `/v4/quote`,\n method: \"GET\",\n headers: headerParameters,\n query: queryParameters\n }, initOverrides);\n return new JSONApiResponse(response, (jsonValue) => InlineResponse200FromJSON(jsonValue));\n }\n async v4QuoteGet(requestParameters, initOverrides) {\n const response = await this.v4QuoteGetRaw(requestParameters, initOverrides);\n return await response.value();\n }\n async v4SwapPostRaw(requestParameters, initOverrides) {\n const queryParameters = {};\n const headerParameters = {};\n headerParameters[\"Content-Type\"] = \"application/json\";\n const response = await this.request({\n path: `/v4/swap`,\n method: \"POST\",\n headers: headerParameters,\n query: queryParameters,\n body: InlineObjectToJSON(requestParameters.body)\n }, initOverrides);\n return new JSONApiResponse(response, (jsonValue) => InlineResponse2001FromJSON(jsonValue));\n }\n async v4SwapPost(requestParameters = {}, initOverrides) {\n const response = await this.v4SwapPostRaw(requestParameters, initOverrides);\n return await response.value();\n }\n};\nvar V4QuoteGetSwapModeEnum = /* @__PURE__ */ ((V4QuoteGetSwapModeEnum2) => {\n V4QuoteGetSwapModeEnum2[\"ExactIn\"] = \"ExactIn\";\n V4QuoteGetSwapModeEnum2[\"ExactOut\"] = \"ExactOut\";\n return V4QuoteGetSwapModeEnum2;\n})(V4QuoteGetSwapModeEnum || {});\nexport {\n BASE_PATH,\n BaseAPI,\n BlobApiResponse,\n COLLECTION_FORMATS,\n Configuration,\n Def0FromJSON,\n Def0FromJSONTyped,\n Def0ToJSON,\n Def1FromJSON,\n Def1FromJSONTyped,\n Def1SwapModeEnum,\n Def1ToJSON,\n Def2FromJSON,\n Def2FromJSONTyped,\n Def2ToJSON,\n DefaultApi,\n InlineObjectFromJSON,\n InlineObjectFromJSONTyped,\n InlineObjectToJSON,\n InlineResponse2001FromJSON,\n InlineResponse2001FromJSONTyped,\n InlineResponse2001ToJSON,\n InlineResponse2002FromJSON,\n InlineResponse2002FromJSONTyped,\n InlineResponse2002ToJSON,\n InlineResponse2003FromJSON,\n InlineResponse2003FromJSONTyped,\n InlineResponse2003ToJSON,\n InlineResponse200DataFromJSON,\n InlineResponse200DataFromJSONTyped,\n InlineResponse200DataSwapModeEnum,\n InlineResponse200DataToJSON,\n InlineResponse200FeesFromJSON,\n InlineResponse200FeesFromJSONTyped,\n InlineResponse200FeesToJSON,\n InlineResponse200FromJSON,\n InlineResponse200FromJSONTyped,\n InlineResponse200LpFeeFromJSON,\n InlineResponse200LpFeeFromJSONTyped,\n InlineResponse200LpFeeToJSON,\n InlineResponse200MarketInfosFromJSON,\n InlineResponse200MarketInfosFromJSONTyped,\n InlineResponse200MarketInfosToJSON,\n InlineResponse200ToJSON,\n InlineResponse409DataFromJSON,\n InlineResponse409DataFromJSONTyped,\n InlineResponse409DataToJSON,\n InlineResponse409FromJSON,\n InlineResponse409FromJSONTyped,\n InlineResponse409ToJSON,\n JSONApiResponse,\n RequiredError,\n TextApiResponse,\n V4QuoteGetSwapModeEnum,\n VoidApiResponse,\n canConsumeForm,\n exists,\n mapValues,\n querystring\n};\n","import React, { useState, useEffect, useMemo, useContext, useRef, useCallback, createContext } from 'react';\nimport { PublicKey, Transaction, VersionedTransaction } from '@solana/web3.js';\nimport { TransactionError, executeTransactions, Owner, INDEXED_ROUTE_MAP_URL, getRemoteRouteMap, SwapMode } from '@jup-ag/core';\nexport { JUPITER_ERRORS, JUPITER_FEE_OWNER, LAMPORTS_PER_SIGNATURE, MARKETS_URL, Owner, SwapMode, TOKEN_LIST_URL, TransactionBuilder, getPlatformFeeAccounts } from '@jup-ag/core';\nimport JSBI from 'jsbi';\nimport { Configuration, DefaultApi, V4QuoteGetSwapModeEnum } from '@jup-ag/api';\nimport fetch from 'cross-fetch';\nimport { Token, ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID } from '@solana/spl-token';\n\nconst Errors = {\n INITIALIZE_ERROR: 'INITIALIZE_ERROR',\n ROUTES_ERROR: 'ROUTES_ERROR'\n};\n\nfunction useDebounce(value, delay) {\n const [debouncedValue, setDebouncedValue] = useState(value);\n useEffect(() => {\n // Update debounced value after delay\n const handler = setTimeout(() => {\n setDebouncedValue(value);\n }, delay); // Cancel the timeout if value changes (also on delay change or unmount)\n\n return () => {\n clearTimeout(handler);\n };\n }, [value, delay]);\n return debouncedValue;\n}\n\nconst parseAPISerializedRouteInfoToRouteInfo = serializedRouteInfos => {\n return serializedRouteInfos.map(serializedRouteInfo => ({\n marketInfos: serializedRouteInfo.marketInfos.map(({\n id,\n inAmount,\n inputMint,\n label,\n lpFee,\n notEnoughLiquidity,\n outAmount,\n outputMint,\n platformFee,\n priceImpactPct,\n minInAmount,\n minOutAmount\n }) => ({\n id,\n label,\n notEnoughLiquidity,\n priceImpactPct,\n inputMint: new PublicKey(inputMint),\n outputMint: new PublicKey(outputMint),\n lpFee: {\n mint: lpFee.mint,\n pct: lpFee.pct,\n amount: JSBI.BigInt(lpFee.amount)\n },\n platformFee: {\n mint: platformFee.mint,\n pct: platformFee.pct,\n amount: JSBI.BigInt(platformFee.amount)\n },\n inAmount: JSBI.BigInt(inAmount),\n outAmount: JSBI.BigInt(outAmount),\n minInAmount: minInAmount ? JSBI.BigInt(minInAmount) : undefined,\n minOutAmount: minOutAmount ? JSBI.BigInt(minOutAmount) : undefined\n })),\n fees: serializedRouteInfo.fees,\n priceImpactPct: serializedRouteInfo.priceImpactPct,\n slippageBps: serializedRouteInfo.slippageBps,\n swapMode: serializedRouteInfo.swapMode,\n inAmount: JSBI.BigInt(serializedRouteInfo.inAmount),\n outAmount: JSBI.BigInt(serializedRouteInfo.outAmount),\n amount: JSBI.BigInt(serializedRouteInfo.amount),\n otherAmountThreshold: JSBI.BigInt(serializedRouteInfo.otherAmountThreshold)\n }));\n};\nconst serializeRouteInfo = routeInfo => {\n return { ...routeInfo,\n marketInfos: routeInfo.marketInfos.map(marketInfo => ({ ...marketInfo,\n inputMint: marketInfo.inputMint.toBase58(),\n outputMint: marketInfo.outputMint.toBase58(),\n lpFee: { ...marketInfo.lpFee,\n amount: marketInfo.lpFee.amount.toString()\n },\n platformFee: { ...marketInfo.platformFee,\n amount: marketInfo.platformFee.amount.toString()\n },\n inAmount: marketInfo.inAmount.toString(),\n outAmount: marketInfo.outAmount.toString(),\n minInAmount: marketInfo.minInAmount ? marketInfo.minInAmount.toString() : undefined,\n minOutAmount: marketInfo.minOutAmount ? marketInfo.minOutAmount.toString() : undefined\n })),\n inAmount: routeInfo.inAmount.toString(),\n outAmount: routeInfo.outAmount.toString(),\n amount: routeInfo.amount.toString(),\n otherAmountThreshold: routeInfo.otherAmountThreshold.toString()\n };\n};\n\nconst JupiterContext = /*#__PURE__*/createContext(null);\nconst JupiterProvider = ({\n onlyDirectRoutes,\n userPublicKey,\n jupiterQuoteApiUrl,\n children,\n ...jupiterLoadProps\n}) => {\n const [routeMap, setRouteMap] = useState(new Map());\n const [error, setError] = useState();\n const jupiterApiClient = useMemo(() => {\n const configuration = new Configuration({\n basePath: jupiterQuoteApiUrl ?? 'https://quote-api.jup.ag',\n fetchApi: fetch\n });\n return new DefaultApi(configuration);\n }, [jupiterQuoteApiUrl]);\n useEffect(() => {\n async function update() {\n // so that we follow the marketUrl host name and get preprod and prod\n const url = new URL(INDEXED_ROUTE_MAP_URL).toString();\n const routeMap = await getRemoteRouteMap({\n onlyDirectRoutes,\n restrictIntermediateTokens: true,\n asLegacyTransaction: jupiterLoadProps.asLegacyTransaction\n }, url);\n setRouteMap(routeMap);\n }\n\n update();\n }, [onlyDirectRoutes, jupiterLoadProps.asLegacyTransaction]);\n const allTokenMints = useMemo(() => {\n return Array.from(routeMap.keys());\n }, [routeMap]);\n return React.createElement(JupiterContext.Provider, {\n value: { ...jupiterLoadProps,\n userPublicKey,\n jupiterApiClient,\n allTokenMints,\n routeMap,\n error,\n setError,\n onlyDirectRoutes\n }\n }, children);\n};\nconst useJupiterRouteMap = () => {\n const context = useContext(JupiterContext);\n\n if (!context) {\n throw new Error('JupiterProvider is required');\n }\n\n return context.routeMap;\n};\nconst useJupiter = ({\n amount,\n inputMint,\n outputMint,\n slippageBps,\n swapMode,\n debounceTime = 250\n}) => {\n const context = useContext(JupiterContext);\n const [loading, setLoading] = useState(false);\n const [routes, setRoutes] = useState();\n const [refreshCount, setRefreshCount] = useState(0); // lastRefreshCount indicate when the last refresh was triggered on which refreshCount\n\n const lastRefreshCount = useRef(refreshCount);\n const [debouncedAmount, debouncedInputMint, debouncedOutputMint] = useDebounce(React.useMemo(() => {\n // called immediaetly instead of waiting debounce because we want to show the loading state\n if (JSBI.greaterThan(amount, JSBI.BigInt(0))) {\n setLoading(true);\n }\n\n return [amount, inputMint, outputMint];\n }, [amount.toString(), inputMint?.toBase58(), outputMint?.toBase58()]), debounceTime);\n const lastRefreshTimestamp = useRef(0);\n const lastQueryTimestamp = useRef(0);\n\n if (!context) {\n throw new Error('JupiterProvider is required');\n }\n\n const {\n routeMap,\n allTokenMints,\n error,\n setError,\n routeCacheDuration = 0,\n onlyDirectRoutes,\n jupiterApiClient,\n userPublicKey,\n connection,\n wrapUnwrapSOL,\n asLegacyTransaction,\n platformFeeAndAccounts\n } = context; // lastRefreshCount to determine when the last refresh was triggered, reset this to -1 to trigger a re-fetch\n\n useEffect(() => {\n lastRefreshCount.current = -1;\n }, [[debouncedInputMint?.toString(), debouncedOutputMint?.toString()].sort().join('-'), slippageBps]);\n useEffect(() => {\n // if now - lastRefreshTimestamp > routeCacheDuration, then we need to refresh\n if (lastRefreshTimestamp.current && new Date().getTime() - lastRefreshTimestamp.current >= routeCacheDuration) {\n lastRefreshCount.current = -1;\n } // don't set loading if there is no input amount\n\n\n if (JSBI.greaterThan(debouncedAmount, JSBI.BigInt(0))) {\n setLoading(true);\n } else {\n setLoading(false);\n }\n }, [refreshCount, debouncedAmount, slippageBps, debouncedInputMint, debouncedOutputMint, onlyDirectRoutes, asLegacyTransaction]);\n useEffect(() => {\n async function fetch() {\n if (JSBI.equal(debouncedAmount, JSBI.BigInt(0)) || error === Errors.INITIALIZE_ERROR) {\n setLoading(false);\n setRoutes(undefined);\n } else if (debouncedAmount) {\n if (!debouncedInputMint || !debouncedOutputMint || !routeMap) return;\n const lastUpdatedTime = new Date().getTime();\n lastQueryTimestamp.current = lastUpdatedTime;\n\n try {\n const inputMint = debouncedInputMint.toBase58();\n const outputMint = debouncedOutputMint.toBase58();\n const platformFeeMint = swapMode === SwapMode.ExactOut ? inputMint : outputMint;\n const response = await jupiterApiClient.v4QuoteGet({\n amount: debouncedAmount.toString(),\n inputMint,\n outputMint,\n userPublicKey: userPublicKey?.toBase58(),\n slippageBps,\n swapMode: swapMode ? V4QuoteGetSwapModeEnum[swapMode] : undefined,\n onlyDirectRoutes: onlyDirectRoutes,\n asLegacyTransaction,\n feeBps: platformFeeAndAccounts?.feeAccounts.get(platformFeeMint) ? platformFeeAndAccounts?.feeBps : undefined\n });\n\n if (lastQueryTimestamp.current !== lastUpdatedTime) {\n return;\n }\n\n if (response.data) {\n const parsedRoutes = parseAPISerializedRouteInfoToRouteInfo(response.data);\n setRoutes(parsedRoutes);\n setError(undefined);\n lastRefreshTimestamp.current = new Date().getTime();\n }\n } catch (e) {\n console.error(e);\n\n if (lastQueryTimestamp.current !== lastUpdatedTime) {\n return;\n } // Clear routes when erring to avoid bad pricing\n\n\n setRoutes(undefined);\n setError(Errors.ROUTES_ERROR);\n } finally {\n if (lastQueryTimestamp.current !== lastUpdatedTime) {\n return;\n }\n\n lastRefreshCount.current = refreshCount;\n setLoading(false);\n }\n }\n }\n\n fetch();\n }, [platformFeeAndAccounts, debouncedAmount, debouncedInputMint, debouncedOutputMint, slippageBps, swapMode, userPublicKey, refreshCount, onlyDirectRoutes, asLegacyTransaction]);\n const exchange = useCallback(async ({\n wallet,\n routeInfo,\n onTransaction,\n computeUnitPriceMicroLamports,\n ...restExchangeProps\n }) => {\n if (!userPublicKey) throw new Error('User public key is required');\n if (!wallet) throw new Error('Wallet is required');\n const [inputMint, outputMint] = [routeInfo.marketInfos[0].inputMint, routeInfo.marketInfos[routeInfo.marketInfos.length - 1].outputMint];\n const useWrappedSOL = restExchangeProps.wrapUnwrapSOL ?? wrapUnwrapSOL ?? true;\n const platformFeeMint = swapMode === SwapMode.ExactOut ? inputMint : outputMint;\n const result = await jupiterApiClient.v4SwapPost({\n body: {\n route: serializeRouteInfo(routeInfo),\n userPublicKey: userPublicKey.toBase58(),\n wrapUnwrapSOL: useWrappedSOL,\n computeUnitPriceMicroLamports: computeUnitPriceMicroLamports || undefined,\n asLegacyTransaction,\n feeAccount: platformFeeAndAccounts?.feeAccounts.get(platformFeeMint.toBase58())?.toBase58()\n }\n }).catch(async res => {\n const {\n error,\n message\n } = await res.json();\n return {\n error: new TransactionError(message, undefined, error)\n };\n });\n\n if ('error' in result) {\n return result;\n }\n\n const {\n swapTransaction: swapTransactionSerialized\n } = result;\n const swapTransactionBuf = Buffer.from(swapTransactionSerialized, 'base64');\n let swapTransaction = asLegacyTransaction ? Transaction.from(swapTransactionBuf) : VersionedTransaction.deserialize(swapTransactionBuf);\n const [sourceAddress, destinationAddress] = await Promise.all([inputMint, outputMint].map(mint => Token.getAssociatedTokenAddress(ASSOCIATED_TOKEN_PROGRAM_ID, TOKEN_PROGRAM_ID, mint, userPublicKey, true)));\n return executeTransactions({\n connection,\n wallet,\n onTransaction,\n inputMint,\n outputMint,\n sourceAddress,\n destinationAddress,\n swapTransaction,\n wrapUnwrapSOL: useWrappedSOL,\n owner: new Owner(userPublicKey)\n });\n }, [userPublicKey, wrapUnwrapSOL, asLegacyTransaction, connection, platformFeeAndAccounts]);\n return {\n allTokenMints,\n routeMap,\n exchange,\n refresh: () => {\n if (!loading && lastRefreshTimestamp.current) {\n setRefreshCount(refreshCount => refreshCount + 1);\n }\n },\n lastRefreshTimestamp: lastRefreshTimestamp.current,\n loading,\n routes,\n error\n };\n};\n\nexport { Errors, JupiterProvider, useJupiter, useJupiterRouteMap };\n//# sourceMappingURL=react-hook.esm.js.map\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.supportedTypeMap = void 0;\nconst keys_1 = require(\"./keys\");\n__exportStar(require(\"./keys\"), exports);\n__exportStar(require(\"./gpa\"), exports);\n/**\n * Maps solana beet exports to metadata which describes in which package it\n * is defined as well as which TypeScript type is used to represent the\n * deserialized value in JavaScript.\n *\n * @category TypeDefinition\n */\nexports.supportedTypeMap = keys_1.keysTypeMap;\n//# sourceMappingURL=beet-solana.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.GpaBuilder = void 0;\nconst beet_1 = require(\"@metaplex-foundation/beet\");\nconst assert_1 = require(\"assert\");\nconst utils_1 = require(\"../utils\");\nconst util_1 = require(\"./util\");\n/**\n * Provides an Account specific GPA builder.\n *\n * @template T - the type of the account for which the GpaBuilder is used\n */\nclass GpaBuilder {\n constructor(programId, beets, accountSize) {\n this.programId = programId;\n this.beets = beets;\n this.accountSize = accountSize;\n /**\n * web3.js {@link GetProgramAccountsConfig} configured via filter GpaBuilder filter methods.\n */\n this.config = {};\n }\n _addFilter(filter) {\n if (this.config.filters == null) {\n this.config.filters = [];\n }\n this.config.filters.push(filter);\n return this;\n }\n _addInnerFilter(key, innerKey, val) {\n (0, utils_1.logTrace)(`gpa.addInnerFilter: ${key}.${innerKey}`);\n const outerBeetInfo = this.beets.get(key);\n (0, assert_1.strict)(outerBeetInfo != null, 'Outer filter key needs to be an existing field name');\n const beetInfo = outerBeetInfo.beet;\n let offset = outerBeetInfo.offset;\n const outerBeet = (0, beet_1.isFixedSizeBeet)(beetInfo)\n ? beetInfo\n : beetInfo.toFixedFromValue(val);\n let beet;\n for (const [k, v] of outerBeet.fields) {\n if (k === innerKey) {\n beet = v;\n break;\n }\n offset += v.byteSize;\n }\n (0, assert_1.strict)(beet != null, `${innerKey} is not a field of the ${key} struct`);\n const bytes = (0, util_1.encodeFixedBeet)(beet, val);\n this._addFilter({ memcmp: { offset, bytes } });\n return this;\n }\n /**\n * Adds a _memcmp_ filter for a field inside a field which is a struct value.\n * The provided keys need to be separated by a `.` and only one level of\n * nesting is supported at this point.\n *\n * The filter is applied to the inner value.\n *\n * ## Example\n *\n * ### Given:\n *\n * ```typescript\n * type Inner = {\n * a: number\n * }\n * type Outer = {\n * idx: number\n * inner: Inner\n * }\n * ```\n * ### Apply a filter on `a` of the `Inner` type:\n *\n * ```typescript\n * gpaBuilder.addInnerFilter('inner.a', 2)\n * ```\n *\n * @param keys - the names of the fields by which to filter, i.e. `'outer.inner'`\n * @param val - the field value that the filter should match\n */\n addInnerFilter(keys, val) {\n const parts = keys.split('.');\n assert_1.strict.equal(parts.length, 2, `inner filters can go only one level deep, i.e. 'outer.inner' is ok, but 'outer.inner.deep' is not`);\n const [ka, kb] = parts;\n return this._addInnerFilter(ka, kb, val);\n }\n /**\n * Adds a _memcmp_ filter for the provided {@link key} of the struct.\n *\n * @param key - the name of the field by which to filter\n * @param val - the field value that the filter should match\n */\n addFilter(key, val) {\n const beetInfo = this.beets.get(key);\n (0, assert_1.strict)(beetInfo != null, 'Filter key needs to be an existing field name');\n const beet = (0, beet_1.isFixedSizeBeet)(beetInfo.beet)\n ? beetInfo.beet\n : beetInfo.beet.toFixedFromValue(val);\n const bytes = (0, util_1.encodeFixedBeet)(beet, val);\n this._addFilter({ memcmp: { offset: beetInfo.offset, bytes } });\n return this;\n }\n /**\n * Adds a `dataSize` filter which will match on account's sizes.\n * You have to provide that {@link size} for accounts that don't have a fixed size.\n * For _fixed_ size accounts that size is determined for you.\n *\n * @param size - the account size to match for\n */\n dataSize(size) {\n size = size !== null && size !== void 0 ? size : this.accountSize;\n (0, assert_1.strict)(size != null, 'for accounts of dynamic size the dataSize arg needs to be provided');\n return this._addFilter({ dataSize: size });\n }\n /**\n * Attempts to find the accounts matching the configured filters.\n *\n * @param connection used to query the program accounts on the cluster\n */\n run(connection) {\n return connection.getProgramAccounts(this.programId, this.config);\n }\n /**\n * Creates a GPA builder that supports adding up to four filters for\n * fixed size fields.\n *\n * Once a non-fixed field is encountered, the remaining fields following it\n * will not be included as a filter option since their position in the\n * bytes array will change depending on the content of the non-fixed field.\n *\n * @param programId - the id of the program that owns the accounts we are querying\n * @param beetFields - the beet fields that make up the structure of the account data\n */\n static fromBeetFields(programId, beetFields) {\n const map = new Map();\n let offset = 0;\n let encounteredNonFixed = false;\n for (const [k, v] of beetFields) {\n map.set(k, { beet: v, offset });\n if (!(0, beet_1.isFixedSizeBeet)(v)) {\n encounteredNonFixed = true;\n break;\n }\n offset += v.byteSize;\n }\n const accountSize = encounteredNonFixed ? undefined : offset;\n return new GpaBuilder(programId, map, accountSize);\n }\n /**\n * Convenience wrapper around {@link GpaBuilder.fromBeetFields} that allows\n * providing a struct which contains the beet fields.\n *\n * @param programId - the id of the program that owns the accounts we are querying\n * @param struct - containing the beet `fields` specifying the layout of the account\n */\n static fromStruct(programId, struct) {\n return GpaBuilder.fromBeetFields(programId, struct.fields);\n }\n}\nexports.GpaBuilder = GpaBuilder;\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encodeFixedBeet = void 0;\nconst bs58_1 = __importDefault(require(\"bs58\"));\nfunction encodeFixedBeet(beet, val) {\n const buf = Buffer.alloc(beet.byteSize);\n beet.write(buf, 0, val);\n return bs58_1.default.encode(buf);\n}\nexports.encodeFixedBeet = encodeFixedBeet;\n//# sourceMappingURL=util.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.keysTypeMap = exports.publicKey = void 0;\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst beet_1 = require(\"@metaplex-foundation/beet\");\nconst BEET_SOLANA_PACKAGE = '@metaplex-foundation/beet-solana';\nconst SOLANA_WEB3_PACKAGE = '@solana/web3.js';\nconst uint8Array32 = (0, beet_1.fixedSizeUint8Array)(32);\n/**\n * De/Serializer for solana {@link PublicKey}s aka `publicKey`.\n *\n *\n * ## Using PublicKey Directly\n *\n * ```ts\n * import { publicKey } from '@metaplex-foundation/beet-solana'\n *\n * const generatedKey = Keypair.generate().publicKey\n * const buf = Buffer.alloc(publicKey.byteSize)\n * beet.write(buf, 0, generatedKey)\n * beet.read(buf, 0) // same as generatedKey\n * ```\n *\n * ## PublicKey as part of a Struct Configuration\n *\n * ```ts\n * import { publicKey } from '@metaplex-foundation/beet-solana'\n *\n * type InstructionArgs = {\n * authority: web3.PublicKey\n * }\n *\n * const createStruct = new beet.BeetArgsStruct(\n * [\n * ['authority', publicKey]\n * ],\n * 'InstructionArgs'\n * )\n * ```\n *\n * @category beet/solana\n */\nexports.publicKey = {\n write: function (buf, offset, value) {\n const arr = value.toBytes();\n uint8Array32.write(buf, offset, arr);\n },\n read: function (buf, offset) {\n const bytes = uint8Array32.read(buf, offset);\n return new web3_js_1.PublicKey(bytes);\n },\n byteSize: uint8Array32.byteSize,\n description: 'PublicKey',\n};\n/**\n * Maps solana keys beet exports to metadata which describes in which package it\n * is defined as well as which TypeScript type is used to represent the\n * deserialized value in JavaScript.\n *\n * @category TypeDefinition\n */\nexports.keysTypeMap = {\n publicKey: {\n beet: 'publicKey',\n isFixable: false,\n sourcePack: BEET_SOLANA_PACKAGE,\n ts: 'PublicKey',\n pack: SOLANA_WEB3_PACKAGE,\n },\n};\n//# sourceMappingURL=keys.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.logTrace = exports.logDebug = exports.logInfo = exports.logError = void 0;\nconst debug_1 = __importDefault(require(\"debug\"));\nexports.logError = (0, debug_1.default)('beet:error');\nexports.logInfo = (0, debug_1.default)('beet:info');\nexports.logDebug = (0, debug_1.default)('beet:debug');\nexports.logTrace = (0, debug_1.default)('beet:trace');\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.fixBeetFromValue = exports.fixBeetFromData = void 0;\nconst types_1 = require(\"./types\");\nconst utils_1 = require(\"./utils\");\n/**\n * Converts the provided beet into a {@link FixedBeet} unless it already is.\n * The sizes for {@link FixableBeet}s are determined from the provided data.\n *\n * @param beet to convert\n * @param buf containing serialized data that the fixed beet needs to process\n * @param offset at which the data for the beet starts\n *\n * @category beet\n */\nfunction fixBeetFromData(beet, buf, offset) {\n if ((0, types_1.isFixedSizeBeet)(beet)) {\n return beet;\n }\n if ((0, types_1.isFixableBeet)(beet)) {\n return beet.toFixedFromData(buf, offset);\n }\n throw new utils_1.UnreachableCaseError(beet);\n}\nexports.fixBeetFromData = fixBeetFromData;\n/**\n * Converts the provided beet into a {@link FixedBeet} unless it already is.\n * The sizes for {@link FixableBeet}s are determined from the provided value.\n *\n * @param beet to convert\n * @param val value that the fixed beet needs to process\n *\n * @category beet\n */\nfunction fixBeetFromValue(beet, val) {\n if ((0, types_1.isFixedSizeBeet)(beet)) {\n return beet;\n }\n if ((0, types_1.isFixableBeet)(beet)) {\n return beet.toFixedFromValue(val);\n }\n throw new utils_1.UnreachableCaseError(beet);\n}\nexports.fixBeetFromValue = fixBeetFromValue;\n//# sourceMappingURL=beet.fixable.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.supportedTypeMap = void 0;\nconst collections_1 = require(\"./beets/collections\");\nconst composites_1 = require(\"./beets/composites\");\nconst numbers_1 = require(\"./beets/numbers\");\nconst string_1 = require(\"./beets/string\");\nconst enums_1 = require(\"./beets/enums\");\nconst aliases_1 = require(\"./beets/aliases\");\nconst tuples_1 = require(\"./beets/tuples\");\nconst maps_1 = require(\"./beets/maps\");\nconst unit_1 = require(\"./beets/unit\");\nconst sets_1 = require(\"./beets/sets\");\n__exportStar(require(\"./beets/aliases\"), exports);\n__exportStar(require(\"./beets/collections\"), exports);\n__exportStar(require(\"./beets/composites\"), exports);\n__exportStar(require(\"./beets/enums\"), exports);\n__exportStar(require(\"./beets/maps\"), exports);\n__exportStar(require(\"./beets/numbers\"), exports);\n__exportStar(require(\"./beets/sets\"), exports);\n__exportStar(require(\"./beets/string\"), exports);\n__exportStar(require(\"./beets/tuples\"), exports);\n__exportStar(require(\"./beets/unit\"), exports);\n__exportStar(require(\"./beet.fixable\"), exports);\n__exportStar(require(\"./read-write\"), exports);\n__exportStar(require(\"./struct\"), exports);\n__exportStar(require(\"./struct.fixable\"), exports);\n__exportStar(require(\"./types\"), exports);\n/**\n * Maps all {@link Beet} de/serializers to metadata which describes in which\n * package it is defined as well as which TypeScript type is used to represent\n * the deserialized value in JavaScript.\n *\n * @category TypeDefinition\n */\nexports.supportedTypeMap = {\n ...collections_1.collectionsTypeMap,\n ...string_1.stringTypeMap,\n ...composites_1.compositesTypeMap,\n ...enums_1.enumsTypeMap,\n ...numbers_1.numbersTypeMap,\n ...aliases_1.aliasesTypeMap,\n ...tuples_1.tuplesTypeMap,\n ...maps_1.mapsTypeMap,\n ...sets_1.setsTypeMap,\n ...unit_1.unitTypeMap,\n};\n//# sourceMappingURL=beet.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.aliasesTypeMap = exports.bytes = void 0;\nconst collections_1 = require(\"./collections\");\n/**\n * Alias for {@link uint8Array}.\n * @category TypeDefinition\n */\nexports.bytes = collections_1.uint8Array;\nexports.aliasesTypeMap = {\n // @ts-ignore\n bytes: collections_1.collectionsTypeMap.Uint8Array,\n};\n//# sourceMappingURL=aliases.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.collectionsTypeMap = exports.uint8Array = exports.fixedSizeUint8Array = exports.fixedSizeBuffer = exports.array = exports.fixedSizeArray = exports.uniformFixedSizeArray = void 0;\nconst types_1 = require(\"../types\");\nconst assert_1 = require(\"assert\");\nconst numbers_1 = require(\"./numbers\");\nconst types_2 = require(\"../types\");\nconst utils_1 = require(\"../utils\");\nconst beet_fixable_1 = require(\"../beet.fixable\");\n/**\n * De/Serializes an array with a specific number of elements of type {@link T}\n * which all have the same size.\n *\n * @template T type of elements held in the array\n *\n * @param element the De/Serializer for the element type\n * @param len the number of elements in the array\n * @param lenPrefix if `true` a 4 byte number indicating the size of the array\n * will be included before serialized array data\n *\n * @category beet/collection\n */\nfunction uniformFixedSizeArray(element, len, lenPrefix = false) {\n const arraySize = element.byteSize * len;\n const byteSize = lenPrefix ? 4 + arraySize : arraySize;\n return {\n write: function (buf, offset, value) {\n assert_1.strict.equal(value.length, len, `array length ${value.length} should match len ${len}`);\n if (lenPrefix) {\n numbers_1.u32.write(buf, offset, len);\n offset += 4;\n }\n for (let i = 0; i < len; i++) {\n element.write(buf, offset + i * element.byteSize, value[i]);\n }\n },\n read: function (buf, offset) {\n if (lenPrefix) {\n const size = numbers_1.u32.read(buf, offset);\n assert_1.strict.equal(size, len, 'invalid byte size');\n offset += 4;\n }\n const arr = new Array(len);\n for (let i = 0; i < len; i++) {\n arr[i] = element.read(buf, offset + i * element.byteSize);\n }\n return arr;\n },\n byteSize,\n length: len,\n elementByteSize: element.byteSize,\n lenPrefixByteSize: 4,\n description: `Array<${element.description}>(${len})`,\n };\n}\nexports.uniformFixedSizeArray = uniformFixedSizeArray;\n/**\n * De/Serializes an array with a specific number of elements of type {@link T}\n * which do not all have the same size.\n *\n * @template T type of elements held in the array\n *\n * @param elements the De/Serializers for the element types\n * @param elementsByteSize size of all elements in the array combined\n *\n * @category beet/collection\n */\nfunction fixedSizeArray(elements, elementsByteSize) {\n const len = elements.length;\n const firstElement = len === 0 ? '' : elements[0].description;\n return {\n write: function (buf, offset, value) {\n assert_1.strict.equal(value.length, len, `array length ${value.length} should match len ${len}`);\n numbers_1.u32.write(buf, offset, len);\n let cursor = offset + 4;\n for (let i = 0; i < len; i++) {\n const element = elements[i];\n element.write(buf, cursor, value[i]);\n cursor += element.byteSize;\n }\n },\n read: function (buf, offset) {\n const size = numbers_1.u32.read(buf, offset);\n assert_1.strict.equal(size, len, 'invalid byte size');\n let cursor = offset + 4;\n const arr = new Array(len);\n for (let i = 0; i < len; i++) {\n const element = elements[i];\n arr[i] = element.read(buf, cursor);\n cursor += element.byteSize;\n }\n return arr;\n },\n byteSize: 4 + elementsByteSize,\n length: len,\n description: `Array<${firstElement}>(${len})[ 4 + ${elementsByteSize} ]`,\n };\n}\nexports.fixedSizeArray = fixedSizeArray;\n/**\n * Wraps an array De/Serializer with with elements of type {@link T} which do\n * not all have the same size.\n *\n * @template T type of elements held in the array\n *\n * @param element the De/Serializer for the element types\n *\n * @category beet/collection\n */\nfunction array(element) {\n return {\n toFixedFromData(buf, offset) {\n const len = numbers_1.u32.read(buf, offset);\n (0, utils_1.logTrace)(`${this.description}[${len}]`);\n const cursorStart = offset + 4;\n let cursor = cursorStart;\n const fixedElements = new Array(len);\n for (let i = 0; i < len; i++) {\n const fixedElement = (0, beet_fixable_1.fixBeetFromData)(element, buf, cursor);\n fixedElements[i] = fixedElement;\n cursor += fixedElement.byteSize;\n }\n return fixedSizeArray(fixedElements, cursor - cursorStart);\n },\n toFixedFromValue(vals) {\n (0, assert_1.strict)(Array.isArray(vals), `${vals} should be an array`);\n let elementsSize = 0;\n const fixedElements = new Array(vals.length);\n for (let i = 0; i < vals.length; i++) {\n const fixedElement = (0, beet_fixable_1.fixBeetFromValue)(element, vals[i]);\n fixedElements[i] = fixedElement;\n elementsSize += fixedElement.byteSize;\n }\n return fixedSizeArray(fixedElements, elementsSize);\n },\n description: `array`,\n };\n}\nexports.array = array;\n/**\n * A De/Serializer for raw {@link Buffer}s that just copies/reads the buffer bytes\n * to/from the provided buffer.\n *\n * @param bytes the byte size of the buffer to de/serialize\n * @category beet/collection\n */\nfunction fixedSizeBuffer(bytes) {\n return {\n write: function (buf, offset, value) {\n value.copy(buf, offset, 0, bytes);\n },\n read: function (buf, offset) {\n return buf.slice(offset, offset + bytes);\n },\n byteSize: bytes,\n description: `Buffer(${bytes})`,\n };\n}\nexports.fixedSizeBuffer = fixedSizeBuffer;\n/**\n * A De/Serializer for {@link Uint8Array}s of known size that just copies/reads\n * the array bytes to/from the provided buffer.\n *\n * @category beet/collection\n */\nfunction fixedSizeUint8Array(len, lenPrefix = false) {\n const arrayBufferBeet = fixedSizeBuffer(len);\n const byteSize = lenPrefix ? len + 4 : len;\n return {\n write: function (buf, offset, value) {\n assert_1.strict.equal(value.byteLength, len, `Uint8Array length ${value.byteLength} should match len ${len}`);\n if (lenPrefix) {\n numbers_1.u32.write(buf, offset, len);\n offset += 4;\n }\n const valueBuf = Buffer.from(value);\n arrayBufferBeet.write(buf, offset, valueBuf);\n },\n read: function (buf, offset) {\n if (lenPrefix) {\n const size = numbers_1.u32.read(buf, offset);\n assert_1.strict.equal(size, len, 'invalid byte size');\n offset += 4;\n }\n const arrayBuffer = arrayBufferBeet.read(buf, offset);\n return Uint8Array.from(arrayBuffer);\n },\n byteSize,\n description: `Uint8Array(${len})`,\n };\n}\nexports.fixedSizeUint8Array = fixedSizeUint8Array;\n/**\n * A De/Serializer for {@link Uint8Array}s that just copies/reads the array bytes\n * to/from the provided buffer.\n *\n * @category beet/collection\n */\nexports.uint8Array = {\n toFixedFromData(buf, offset) {\n const len = numbers_1.u32.read(buf, offset);\n (0, utils_1.logTrace)(`${this.description}[${len}]`);\n return fixedSizeUint8Array(len, true);\n },\n toFixedFromValue(val) {\n const len = val.byteLength;\n return fixedSizeUint8Array(len, true);\n },\n description: `Uint8Array`,\n};\n/**\n * Maps collections beet exports to metadata which describes in which package it\n * is defined as well as which TypeScript type is used to represent the\n * deserialized value in JavaScript.\n *\n * @category TypeDefinition\n */\nexports.collectionsTypeMap = {\n Array: {\n beet: 'array',\n isFixable: true,\n sourcePack: types_2.BEET_PACKAGE,\n ts: 'Array',\n arg: types_1.BEET_TYPE_ARG_LEN,\n },\n FixedSizeArray: {\n beet: 'fixedSizeArray',\n isFixable: false,\n sourcePack: types_2.BEET_PACKAGE,\n ts: 'Array',\n arg: types_1.BEET_TYPE_ARG_LEN,\n },\n UniformFixedSizeArray: {\n beet: 'uniformFixedSizeArray',\n isFixable: false,\n sourcePack: types_2.BEET_PACKAGE,\n ts: 'Array',\n arg: types_1.BEET_TYPE_ARG_LEN,\n },\n Buffer: {\n beet: 'fixedSizeBuffer',\n isFixable: false,\n sourcePack: types_2.BEET_PACKAGE,\n ts: 'Buffer',\n arg: types_1.BEET_TYPE_ARG_LEN,\n },\n FixedSizeUint8Array: {\n beet: 'fixedSizeUint8Array',\n isFixable: false,\n sourcePack: types_2.BEET_PACKAGE,\n ts: 'Uint8Array',\n arg: types_1.BEET_TYPE_ARG_LEN,\n },\n Uint8Array: {\n beet: 'uint8Array',\n isFixable: true,\n sourcePack: types_2.BEET_PACKAGE,\n ts: 'Uint8Array',\n arg: types_1.BEET_TYPE_ARG_LEN,\n },\n};\n//# sourceMappingURL=collections.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.compositesTypeMap = exports.coption = exports.coptionSome = exports.coptionNone = exports.isNoneBuffer = exports.isSomeBuffer = void 0;\nconst assert_1 = require(\"assert\");\nconst types_1 = require(\"../types\");\nconst types_2 = require(\"../types\");\nconst utils_1 = require(\"../utils\");\nconst beet_fixable_1 = require(\"../beet.fixable\");\nconst NONE = 0;\nconst SOME = 1;\n/**\n * @private\n */\nfunction isSomeBuffer(buf, offset) {\n return buf[offset] === SOME;\n}\nexports.isSomeBuffer = isSomeBuffer;\n/**\n * @private\n */\nfunction isNoneBuffer(buf, offset) {\n return buf[offset] === NONE;\n}\nexports.isNoneBuffer = isNoneBuffer;\n/**\n * De/Serializes `None` case of an _Option_ of type {@link T} represented by\n * {@link COption}.\n *\n * The de/serialized type is prefixed with `0`.\n * This matches the `COption::None` type borsh representation.\n *\n * @template T inner option type\n * @param description the description of the inner type\n *\n * @category beet/option\n */\nfunction coptionNone(description) {\n (0, utils_1.logTrace)(`coptionNone(${description})`);\n return {\n write: function (buf, offset, value) {\n (0, assert_1.strict)(value == null, 'coptionNone can only handle `null` values');\n buf[offset] = NONE;\n },\n read: function (buf, offset) {\n (0, assert_1.strict)(isNoneBuffer(buf, offset), 'coptionNone can only handle `NONE` data');\n return null;\n },\n byteSize: 1,\n description: `COption`,\n };\n}\nexports.coptionNone = coptionNone;\n/**\n * De/Serializes `Some` case of an _Option_ of type {@link T} represented by\n * {@link COption}.\n *\n * The de/serialized type is prefixed with `1`.\n * This matches the `COption::Some` type borsh representation.\n *\n * @template T inner option type\n * @param inner the De/Serializer for the inner type\n *\n * @category beet/composite\n */\nfunction coptionSome(inner) {\n const byteSize = 1 + inner.byteSize;\n const beet = {\n write: function (buf, offset, value) {\n (0, types_1.assertFixedSizeBeet)(inner, `coption inner type ${inner.description} needs to be fixed before calling write`);\n (0, assert_1.strict)(value != null, 'coptionSome cannot handle `null` values');\n buf[offset] = SOME;\n inner.write(buf, offset + 1, value);\n },\n read: function (buf, offset) {\n (0, types_1.assertFixedSizeBeet)(inner, `coption inner type ${inner.description} needs to be fixed before calling read`);\n (0, assert_1.strict)(isSomeBuffer(buf, offset), 'coptionSome can only handle `SOME` data');\n return inner.read(buf, offset + 1);\n },\n description: `COption<${inner.description}>[1 + ${inner.byteSize}]`,\n byteSize,\n inner,\n };\n (0, utils_1.logTrace)(beet.description);\n return beet;\n}\nexports.coptionSome = coptionSome;\n/**\n * De/Serializes an _Option_ of type {@link T} represented by {@link COption}.\n *\n * The de/serialized type is prefixed with `1` if the inner value is present\n * and with `0` if not.\n * This matches the `COption` type borsh representation.\n *\n * @template T inner option type\n * @param inner the De/Serializer for the inner type\n *\n * @category beet/composite\n */\nfunction coption(inner) {\n return {\n toFixedFromData(buf, offset) {\n if (isSomeBuffer(buf, offset)) {\n const innerFixed = (0, beet_fixable_1.fixBeetFromData)(inner, buf, offset + 1);\n return coptionSome(innerFixed);\n }\n else {\n (0, assert_1.strict)(isNoneBuffer(buf, offset), `Expected ${buf} to hold a COption`);\n return coptionNone(inner.description);\n }\n },\n toFixedFromValue(val) {\n return val == null\n ? coptionNone(inner.description)\n : coptionSome((0, beet_fixable_1.fixBeetFromValue)(inner, val));\n },\n description: `COption<${inner.description}>`,\n };\n}\nexports.coption = coption;\n/**\n * Maps composite beet exports to metadata which describes in which package it\n * is defined as well as which TypeScript type is used to represent the\n * deserialized value in JavaScript.\n *\n * @category TypeDefinition\n */\nexports.compositesTypeMap = {\n option: {\n beet: 'coption',\n isFixable: true,\n sourcePack: types_2.BEET_PACKAGE,\n ts: 'COption',\n arg: types_1.BEET_TYPE_ARG_INNER,\n pack: types_2.BEET_PACKAGE,\n },\n};\n//# sourceMappingURL=composites.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.enumsTypeMap = exports.dataEnum = exports.uniformDataEnum = exports.fixedScalarEnum = void 0;\nconst types_1 = require(\"../types\");\nconst numbers_1 = require(\"./numbers\");\nconst assert_1 = require(\"assert\");\nconst struct_1 = require(\"../struct\");\nconst struct_fixable_1 = require(\"../struct.fixable\");\nconst unit_1 = require(\"./unit\");\n// -----------------\n// Fixed Scalar Enum\n// -----------------\nfunction resolveEnumVariant(value, isNumVariant) {\n return (isNumVariant ? `${value}` : value);\n}\n/**\n * De/serializer for enums with up to 255 less variants which have no data.\n *\n * @param enumType type of enum to process, i.e. Color or Direction\n *\n * @category beet/enum\n */\nfunction fixedScalarEnum(enumType) {\n const keys = Object.keys(enumType);\n return {\n write(buf, offset, value) {\n const isNumVariant = typeof value === 'number';\n const variantKey = resolveEnumVariant(value, isNumVariant);\n if (!keys.includes(variantKey)) {\n assert_1.strict.fail(`${value} should be a variant of the provided enum type, i.e. [ ${Object.values(enumType).join(', ')} ], but isn't`);\n }\n if (isNumVariant) {\n numbers_1.u8.write(buf, offset, value);\n }\n else {\n const enumValue = enumType[variantKey];\n numbers_1.u8.write(buf, offset, enumValue);\n }\n },\n read(buf, offset) {\n const value = numbers_1.u8.read(buf, offset);\n const isNumVariant = typeof value === 'number';\n const variantKey = resolveEnumVariant(value, isNumVariant);\n if (!keys.includes(variantKey)) {\n assert_1.strict.fail(`${value} should be a of a variant of the provided enum type, i.e. [ ${Object.values(enumType).join(', ')} ], but isn't`);\n }\n return (isNumVariant ? value : enumType[variantKey]);\n },\n byteSize: numbers_1.u8.byteSize,\n description: 'Enum',\n };\n}\nexports.fixedScalarEnum = fixedScalarEnum;\n/**\n * De/Serializes an {@link Enum} that contains a type of data, i.e. a {@link Struct}.\n * The main difference to a Rust enum is that the type of data has to be the\n * same for all enum variants.\n *\n * @template T inner enum data type\n *\n * @param inner the De/Serializer for the data type\n *\n * @category beet/enum\n */\nfunction uniformDataEnum(inner) {\n return {\n write: function (buf, offset, value) {\n numbers_1.u8.write(buf, offset, value.kind);\n inner.write(buf, offset + 1, value.data);\n },\n read: function (buf, offset) {\n const kind = numbers_1.u8.read(buf, offset);\n const data = inner.read(buf, offset + 1);\n return { kind, data };\n },\n byteSize: 1 + inner.byteSize,\n description: `UniformDataEnum<${inner.description}>`,\n };\n}\nexports.uniformDataEnum = uniformDataEnum;\nfunction enumDataVariantBeet(inner, discriminant, kind) {\n return {\n write(buf, offset, value) {\n numbers_1.u8.write(buf, offset, discriminant);\n inner.write(buf, offset + numbers_1.u8.byteSize, value);\n },\n read(buf, offset) {\n const val = inner.read(buf, offset + numbers_1.u8.byteSize);\n return { __kind: kind, ...val };\n },\n byteSize: inner.byteSize + numbers_1.u8.byteSize,\n description: `EnumData<${inner.description}>`,\n };\n}\n/**\n * De/serializes Data Enums.\n * They are represented as a discriminated unions in TypeScript.\n *\n * NOTE: only structs, i.e. {@link BeetArgsStruct} and\n * {@link FixableBeetArgsStruct} are supported as the data of each enum variant.\n *\n * ## Example\n *\n * ```ts\n * type Simple = {\n * First: { n1: number }\n * Second: { n2: number }\n * }\n *\n * const beet = dataEnum([\n * ['First', new BeetArgsStruct([['n1', u32]])],\n * ['Second', new BeetArgsStruct([['n2', u32]])],\n * ])\n * ```\n *\n * @category beet/enum\n * @param variants an array of {@link DataEnumBeet}s each a tuple of `[ kind, data ]`\n */\nfunction dataEnum(variants) {\n for (const [_, beet] of variants) {\n (0, assert_1.strict)((0, struct_1.isBeetStruct)(beet) ||\n (0, struct_fixable_1.isFixableBeetStruct)(beet) ||\n // scalar variant\n beet === unit_1.unit, 'dataEnum: variants must be a data beet struct or a scalar unit');\n }\n return {\n toFixedFromData(buf, offset) {\n const discriminant = numbers_1.u8.read(buf, offset);\n const variant = variants[discriminant];\n (0, assert_1.strict)(variant != null, `Discriminant ${discriminant} out of range for ${variants.length} variants`);\n const [__kind, dataBeet] = variant;\n const fixed = (0, types_1.isFixedSizeBeet)(dataBeet)\n ? dataBeet\n : dataBeet.toFixedFromData(buf, offset + 1);\n return enumDataVariantBeet(fixed, discriminant, __kind);\n },\n toFixedFromValue(val) {\n if (val.__kind == null) {\n const keys = Object.keys(val).join(', ');\n const validKinds = variants.map(([__kind]) => __kind).join(', ');\n assert_1.strict.fail(`Value with fields [ ${keys} ] is missing __kind, ` +\n `which needs to be set to one of [ ${validKinds} ]`);\n }\n const discriminant = variants.findIndex(([__kind]) => __kind === val.__kind);\n if (discriminant < 0) {\n const validKinds = variants.map(([__kind]) => __kind).join(', ');\n assert_1.strict.fail(`${val.__kind} is not a valid kind, needs to be one of [ ${validKinds} ]`);\n }\n const variant = variants[discriminant];\n const { __kind, ...dataValue } = val;\n const [__variantKind, dataBeet] = variant;\n const fixed = (0, types_1.isFixedSizeBeet)(dataBeet)\n ? dataBeet\n : dataBeet.toFixedFromValue(dataValue);\n return enumDataVariantBeet(fixed, discriminant, __variantKind);\n },\n description: `DataEnum<${variants.length} variants>`,\n };\n}\nexports.dataEnum = dataEnum;\n/**\n * Maps composite beet exports to metadata which describes in which package it\n * is defined as well as which TypeScript type is used to represent the\n * deserialized value in JavaScript.\n *\n * @category TypeDefinition\n */\nexports.enumsTypeMap = {\n fixedScalarEnum: {\n beet: 'fixedScalarEnum',\n isFixable: false,\n sourcePack: types_1.BEET_PACKAGE,\n ts: '',\n arg: types_1.BEET_TYPE_ARG_INNER,\n pack: types_1.BEET_PACKAGE,\n },\n dataEnum: {\n beet: 'dataEnum',\n isFixable: false,\n sourcePack: types_1.BEET_PACKAGE,\n ts: 'DataEnum',\n arg: types_1.BEET_TYPE_ARG_INNER,\n pack: types_1.BEET_PACKAGE,\n },\n};\n//# sourceMappingURL=enums.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.mapsTypeMap = exports.map = void 0;\nconst types_1 = require(\"../types\");\nconst numbers_1 = require(\"./numbers\");\nconst utils_1 = require(\"../utils\");\nconst assert_1 = require(\"assert\");\n/**\n * De/Serializes a map with a specific number of key/values of type {@link K}\n * and {@link V} respectively.\n *\n * NOTE: that it is not exported as no fixed size map exists but will have to\n * be derived from data or value instead.\n *\n * @template K type of key elements held in the map\n * @template V type of value elements held in the map\n *\n * @param keyElement the De/Serializers for the key element types\n * @param valElement the De/Serializers for the value element types\n * @param len amount of entries in the map\n *\n * @category beet/composite\n * @private\n */\nfunction fixedSizeMap(keyElement, valElement, fixedElements, len) {\n const keyElementFixed = (0, types_1.isFixedSizeBeet)(keyElement);\n const valElementFixed = (0, types_1.isFixedSizeBeet)(valElement);\n function determineSizes() {\n if (keyElementFixed && valElementFixed) {\n const elementByteSize = keyElement.byteSize + valElement.byteSize;\n return {\n elementByteSize,\n byteSize: 4 + len * elementByteSize,\n };\n }\n else if (keyElementFixed) {\n let valsByteSize = 0;\n for (const [_, v] of fixedElements.values()) {\n valsByteSize += v.byteSize;\n }\n // If any element has a dynamic size all we can do here is take an average\n const elementByteSize = keyElement.byteSize + Math.ceil(valsByteSize / len);\n return {\n elementByteSize,\n byteSize: 4 + keyElement.byteSize * len + valsByteSize,\n };\n }\n else if (valElementFixed) {\n let keysByteSize = 0;\n for (const [k, _] of fixedElements.values()) {\n keysByteSize += k.byteSize;\n }\n const elementByteSize = Math.ceil(keysByteSize / len) + valElement.byteSize;\n return {\n elementByteSize,\n byteSize: 4 + keysByteSize + valElement.byteSize * len,\n };\n }\n else {\n let keysByteSize = 0;\n let valsByteSize = 0;\n for (const [k, v] of fixedElements.values()) {\n keysByteSize += k.byteSize;\n valsByteSize += v.byteSize;\n }\n const elementByteSize = Math.ceil(keysByteSize / len + valsByteSize / len);\n return {\n elementByteSize,\n byteSize: 4 + keysByteSize + valsByteSize,\n };\n }\n }\n const { elementByteSize, byteSize } = determineSizes();\n return {\n write: function (buf, offset, map) {\n // Write the values first and then the size as it comes clear while we do the former\n let cursor = offset + 4;\n let size = 0;\n for (const [k, v] of map.entries()) {\n let fixedKey = keyElementFixed ? keyElement : null;\n let fixedVal = valElementFixed ? valElement : null;\n if (fixedKey == null || fixedVal == null) {\n // When we write the value we know the key and an just pull the\n // matching fixed beet for key/val from the provided map which is\n // faster than fixing it by value\n const els = fixedElements.get(k);\n (0, assert_1.strict)(els != null, `Should be able to find beet els for ${(0, utils_1.stringify)(k)}, but could not`);\n fixedKey !== null && fixedKey !== void 0 ? fixedKey : (fixedKey = els[0]);\n fixedVal !== null && fixedVal !== void 0 ? fixedVal : (fixedVal = els[1]);\n }\n fixedKey.write(buf, cursor, k);\n cursor += fixedKey.byteSize;\n fixedVal.write(buf, cursor, v);\n cursor += fixedVal.byteSize;\n size++;\n }\n numbers_1.u32.write(buf, offset, size);\n assert_1.strict.equal(size, len, `Expected map to have size ${len}, but has ${size}.`);\n },\n read: function (buf, offset) {\n const size = numbers_1.u32.read(buf, offset);\n assert_1.strict.equal(size, len, `Expected map to have size ${len}, but has ${size}.`);\n let cursor = offset + 4;\n const map = new Map();\n for (let i = 0; i < size; i++) {\n // When we read the value from a buffer we don't know the key we're\n // reading yet and thus cannot use the provided map of fixed\n // de/serializers.\n // Therefore we obtain it by fixing it by data instead.\n const fixedKey = keyElementFixed\n ? keyElement\n : keyElement.toFixedFromData(buf, cursor);\n const k = fixedKey.read(buf, cursor);\n cursor += fixedKey.byteSize;\n const fixedVal = valElementFixed\n ? valElement\n : valElement.toFixedFromData(buf, cursor);\n const v = fixedVal.read(buf, cursor);\n cursor += fixedVal.byteSize;\n map.set(k, v);\n }\n return map;\n },\n elementByteSize,\n byteSize,\n length: len,\n lenPrefixByteSize: 4,\n description: `Map<${keyElement.description}, ${valElement.description}>`,\n };\n}\n/**\n * De/Serializes a map with a specific number of key/values of type {@link K}\n * and {@link V} respectively.\n *\n * @template K type of key elements held in the map\n * @template V type of value elements held in the map\n *\n * @param keyElement the _fixable_ or _fixed_ de/serializers for the key element types\n * @param valElement the _fixable_ or _fixed_ de/serializers for the value element types\n *\n * @category beet/composite\n */\nfunction map(keyElement, valElement) {\n const keyIsFixed = (0, types_1.isFixedSizeBeet)(keyElement);\n const valIsFixed = (0, types_1.isFixedSizeBeet)(valElement);\n return {\n toFixedFromData(buf, offset) {\n const len = numbers_1.u32.read(buf, offset);\n let cursor = offset + 4;\n // Shortcut for the case that both key and value are fixed size beets\n if (keyIsFixed && valIsFixed) {\n return fixedSizeMap(keyElement, valElement, new Map(), len);\n }\n // If either key or val are not fixed size beets we need to determine the\n // fixed versions and add them to a map by key\n const fixedBeets = new Map();\n for (let i = 0; i < len; i++) {\n const keyFixed = keyIsFixed\n ? keyElement\n : keyElement.toFixedFromData(buf, cursor);\n const key = keyFixed.read(buf, cursor);\n cursor += keyFixed.byteSize;\n const valFixed = valIsFixed\n ? valElement\n : valElement.toFixedFromData(buf, cursor);\n cursor += valFixed.byteSize;\n fixedBeets.set(key, [keyFixed, valFixed]);\n }\n return fixedSizeMap(keyElement, valElement, fixedBeets, len);\n },\n toFixedFromValue(mapVal) {\n const len = mapVal.size;\n // As above shortcut for the optimal case and build a map for all others\n if (keyIsFixed && valIsFixed) {\n return fixedSizeMap(keyElement, valElement, new Map(), len);\n }\n const fixedBeets = new Map();\n for (const [k, v] of mapVal) {\n const keyFixed = keyIsFixed\n ? keyElement\n : keyElement.toFixedFromValue(k);\n const valFixed = valIsFixed\n ? valElement\n : valElement.toFixedFromValue(v);\n fixedBeets.set(k, [keyFixed, valFixed]);\n }\n return fixedSizeMap(keyElement, valElement, fixedBeets, len);\n },\n description: `FixableMap<${keyElement.description}, ${valElement.description}>`,\n };\n}\nexports.map = map;\n/**\n * Maps maps beet exports to metadata which describes in which package it\n * is defined as well as which TypeScript type is used to represent the\n * deserialized value in JavaScript.\n *\n * @category TypeDefinition\n */\nexports.mapsTypeMap = {\n Map: {\n beet: 'map',\n isFixable: true,\n sourcePack: types_1.BEET_PACKAGE,\n ts: 'Map',\n },\n};\n//# sourceMappingURL=maps.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.numbersTypeMap = exports.bool = exports.i512 = exports.i256 = exports.i128 = exports.i64 = exports.i32 = exports.i16 = exports.i8 = exports.u512 = exports.u256 = exports.u128 = exports.u64 = exports.u32 = exports.u16 = exports.u8 = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst types_1 = require(\"../types\");\n// -----------------\n// Unsigned\n// -----------------\n/**\n * De/Serializer for 8-bit unsigned integers aka `u8`.\n *\n * @category beet/primitive\n */\nexports.u8 = {\n write: function (buf, offset, value) {\n buf.writeUInt8(value, offset);\n },\n read: function (buf, offset) {\n return buf.readUInt8(offset);\n },\n byteSize: 1,\n description: 'u8',\n};\n/**\n * De/Serializer 16-bit unsigned integers aka `u16`.\n *\n * @category beet/primitive\n */\nexports.u16 = {\n write: function (buf, offset, value) {\n buf.writeUInt16LE(value, offset);\n },\n read: function (buf, offset) {\n return buf.readUInt16LE(offset);\n },\n byteSize: 2,\n description: 'u16',\n};\n/**\n * De/Serializer for 32-bit unsigned integers aka `u32`.\n *\n * @category beet/primitive\n */\nexports.u32 = {\n write: function (buf, offset, value) {\n buf.writeUInt32LE(value, offset);\n },\n read: function (buf, offset) {\n return buf.readUInt32LE(offset);\n },\n byteSize: 4,\n description: 'u32',\n};\nfunction unsignedLargeBeet(byteSize, description) {\n return {\n write: function (buf, offset, value) {\n const bn = bn_js_1.default.isBN(value) ? value : new bn_js_1.default(value);\n const bytesArray = bn.toArray('le', this.byteSize);\n const bytesArrayBuf = Buffer.from(bytesArray);\n bytesArrayBuf.copy(buf, offset, 0, this.byteSize);\n },\n read: function (buf, offset) {\n const slice = buf.slice(offset, offset + this.byteSize);\n return new bn_js_1.default(slice, 'le');\n },\n byteSize,\n description,\n };\n}\n/**\n * De/Serializer for 64-bit unsigned integers aka `u64` which serializes to a JavaScript\n * _BigNum_ via {@link https://github.com/indutny/bn.js | BN}.\n *\n * @category beet/primitive\n */\nexports.u64 = unsignedLargeBeet(8, 'u64');\n/**\n * De/Serializer for 128-bit unsigned integers aka `u128` which serializes to a JavaScript\n * _BigNum_ via {@link https://github.com/indutny/bn.js | BN}.\n *\n * @category beet/primitive\n */\nexports.u128 = unsignedLargeBeet(16, 'u128');\n/**\n * De/Serializer for 256-bit unsigned integers aka `u256` which serializes to a JavaScript\n * _BigNum_ via {@link https://github.com/indutny/bn.js | BN}.\n *\n * @category beet/primitive\n */\nexports.u256 = unsignedLargeBeet(32, 'u256');\n/**\n * De/Serializer for 512-bit unsigned integers aka `u512` which serializes to a JavaScript\n * _BigNum_ via {@link https://github.com/indutny/bn.js | BN}.\n *\n * @category beet/primitive\n */\nexports.u512 = unsignedLargeBeet(64, 'u512');\n// -----------------\n// Signed\n// -----------------\n/**\n * De/Serializer 8-bit signed integers aka `i8`.\n *\n * @category beet/primitive\n */\nexports.i8 = {\n write: function (buf, offset, value) {\n buf.writeInt8(value, offset);\n },\n read: function (buf, offset) {\n return buf.readInt8(offset);\n },\n byteSize: 1,\n description: 'i8',\n};\n/**\n * De/Serializer 16-bit signed integers aka `i16`.\n *\n * @category beet/primitive\n */\nexports.i16 = {\n write: function (buf, offset, value) {\n buf.writeInt16LE(value, offset);\n },\n read: function (buf, offset) {\n return buf.readInt16LE(offset);\n },\n byteSize: 2,\n description: 'i16',\n};\n/**\n * De/Serializer 32-bit signed integers aka `i32`.\n *\n * @category beet/primitive\n */\nexports.i32 = {\n write: function (buf, offset, value) {\n buf.writeInt32LE(value, offset);\n },\n read: function (buf, offset) {\n return buf.readInt32LE(offset);\n },\n byteSize: 4,\n description: 'i32',\n};\nfunction signedLargeBeet(byteSize, description) {\n const bitSize = byteSize * 8;\n return {\n write: function (buf, offset, value) {\n const bn = (bn_js_1.default.isBN(value) ? value : new bn_js_1.default(value)).toTwos(bitSize);\n const bytesArray = bn.toArray('le', this.byteSize);\n const bytesArrayBuf = Buffer.from(bytesArray);\n bytesArrayBuf.copy(buf, offset, 0, this.byteSize);\n },\n read: function (buf, offset) {\n const slice = buf.slice(offset, offset + this.byteSize);\n const x = new bn_js_1.default(slice, 'le');\n return x.fromTwos(bitSize);\n },\n byteSize,\n description,\n };\n}\n/**\n * De/Serializer for 64-bit signed integers aka `i64` which serializes to a JavaScript\n * _BigNum_ via {@link https://github.com/indutny/bn.js | BN}.\n *\n * @category beet/primitive\n */\nexports.i64 = signedLargeBeet(8, 'i64');\n/**\n * De/Serializer for 128-bit signed integers aka `i128` which serializes to a JavaScript\n * _BigNum_ via {@link https://github.com/indutny/bn.js | BN}.\n *\n * @category beet/primitive\n */\nexports.i128 = signedLargeBeet(16, 'i128');\n/**\n * De/Serializer for 256-bit signed integers aka `i256` which serializes to a JavaScript\n * _BigNum_ via {@link https://github.com/indutny/bn.js | BN}.\n *\n * @category beet/primitive\n */\nexports.i256 = signedLargeBeet(32, 'i256');\n/**\n * De/Serializer for 512-bit signed integers aka `i512` which serializes to a JavaScript\n * _BigNum_ via {@link https://github.com/indutny/bn.js | BN}.\n *\n * @category beet/primitive\n */\nexports.i512 = signedLargeBeet(64, 'i512');\n// -----------------\n// Boolean\n// -----------------\n/**\n * De/Serializer booleans aka `bool`.\n *\n * @category beet/primitive\n */\nexports.bool = {\n write: function (buf, offset, value) {\n const n = value ? 1 : 0;\n exports.u8.write(buf, offset, n);\n },\n read: function (buf, offset) {\n return exports.u8.read(buf, offset) === 1;\n },\n byteSize: 1,\n description: 'bool',\n};\n/**\n * Maps primitive beet exports to metadata which describes in which package it\n * is defined as well as which TypeScript type is used to represent the\n * deserialized value in JavaScript.\n *\n * @category TypeDefinition\n */\n// prettier-ignore\nexports.numbersTypeMap = {\n // <= 32-bit numbers and boolean\n u8: { beet: 'u8', isFixable: false, sourcePack: types_1.BEET_PACKAGE, ts: 'number' },\n u16: { beet: 'u16', isFixable: false, sourcePack: types_1.BEET_PACKAGE, ts: 'number' },\n u32: { beet: 'u32', isFixable: false, sourcePack: types_1.BEET_PACKAGE, ts: 'number' },\n i8: { beet: 'i8', isFixable: false, sourcePack: types_1.BEET_PACKAGE, ts: 'number' },\n i16: { beet: 'i16', isFixable: false, sourcePack: types_1.BEET_PACKAGE, ts: 'number' },\n i32: { beet: 'i32', isFixable: false, sourcePack: types_1.BEET_PACKAGE, ts: 'number' },\n bool: { beet: 'bool', isFixable: false, sourcePack: types_1.BEET_PACKAGE, ts: 'boolean' },\n // Big Number, they use, the 'bignum' type which is defined in this package\n u64: { beet: 'u64', isFixable: false, sourcePack: types_1.BEET_PACKAGE, ts: 'bignum', pack: types_1.BEET_PACKAGE },\n u128: { beet: 'u128', isFixable: false, sourcePack: types_1.BEET_PACKAGE, ts: 'bignum', pack: types_1.BEET_PACKAGE },\n u256: { beet: 'u256', isFixable: false, sourcePack: types_1.BEET_PACKAGE, ts: 'bignum', pack: types_1.BEET_PACKAGE },\n u512: { beet: 'u512', isFixable: false, sourcePack: types_1.BEET_PACKAGE, ts: 'bignum', pack: types_1.BEET_PACKAGE },\n i64: { beet: 'i64', isFixable: false, sourcePack: types_1.BEET_PACKAGE, ts: 'bignum', pack: types_1.BEET_PACKAGE },\n i128: { beet: 'i128', isFixable: false, sourcePack: types_1.BEET_PACKAGE, ts: 'bignum', pack: types_1.BEET_PACKAGE },\n i256: { beet: 'i256', isFixable: false, sourcePack: types_1.BEET_PACKAGE, ts: 'bignum', pack: types_1.BEET_PACKAGE },\n i512: { beet: 'i512', isFixable: false, sourcePack: types_1.BEET_PACKAGE, ts: 'bignum', pack: types_1.BEET_PACKAGE },\n};\n//# sourceMappingURL=numbers.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setsTypeMap = exports.set = void 0;\nconst types_1 = require(\"../types\");\nconst numbers_1 = require(\"./numbers\");\nconst utils_1 = require(\"../utils\");\nconst assert_1 = require(\"assert\");\n/**\n * De/Serializes a set with a specific number of keys of type {@link K}.\n *\n * NOTE: that it is not exported as no fixed size set exists but will have to\n * be derived from data or value instead.\n *\n * @template K type of key elements held in the set\n *\n * @param keyElement the De/Serializers for the key element types\n * @param len amount of entries in the set\n *\n * @category beet/composite\n * @private\n */\nfunction fixedSizeSet(keyElement, fixedElements, len) {\n const keyElementFixed = (0, types_1.isFixedSizeBeet)(keyElement);\n function determineSizes() {\n if (keyElementFixed) {\n const elementByteSize = keyElement.byteSize;\n return {\n elementByteSize,\n byteSize: 4 + len * elementByteSize,\n };\n }\n else {\n let keysByteSize = 0;\n for (const k of fixedElements.values()) {\n keysByteSize += k.byteSize;\n }\n const elementByteSize = Math.ceil(keysByteSize / len);\n return {\n elementByteSize,\n byteSize: 4 + keysByteSize,\n };\n }\n }\n const { elementByteSize, byteSize } = determineSizes();\n return {\n write: function (buf, offset, set) {\n // Write the values first and then the size as it comes clear while we do the former\n let cursor = offset + 4;\n let size = 0;\n for (const k of set.keys()) {\n let fixedKey = keyElementFixed ? keyElement : null;\n if (fixedKey == null) {\n // When we write the value we know the key and an just pull the\n // matching fixed beet for key from the provided set which is\n // faster than fixing it by value\n const el = fixedElements.get(k);\n (0, assert_1.strict)(el != null, `Should be able to find beet el for ${(0, utils_1.stringify)(k)}, but could not`);\n fixedKey !== null && fixedKey !== void 0 ? fixedKey : (fixedKey = el);\n }\n fixedKey.write(buf, cursor, k);\n cursor += fixedKey.byteSize;\n size++;\n }\n numbers_1.u32.write(buf, offset, size);\n assert_1.strict.equal(size, len, `Expected set to have size ${len}, but has ${size}.`);\n },\n read: function (buf, offset) {\n const size = numbers_1.u32.read(buf, offset);\n assert_1.strict.equal(size, len, `Expected set to have size ${len}, but has ${size}.`);\n let cursor = offset + 4;\n const set = new Set();\n for (let i = 0; i < size; i++) {\n // When we read the value from a buffer we don't know the key we're\n // reading yet and thus cannot use the provided set of fixed\n // de/serializers.\n // Therefore we obtain it by fixing it by data instead.\n const fixedKey = keyElementFixed\n ? keyElement\n : keyElement.toFixedFromData(buf, cursor);\n const k = fixedKey.read(buf, cursor);\n cursor += fixedKey.byteSize;\n set.add(k);\n }\n return set;\n },\n elementByteSize,\n byteSize,\n length: len,\n lenPrefixByteSize: 4,\n description: `Set<${keyElement.description}>`,\n };\n}\n/**\n * De/Serializes a set with a specific number of keys of type {@link K}\n *\n * @template K type of key elements held in the set\n *\n * @param keyElement the _fixable_ or _fixed_ de/serializers for the key element types\n *\n * @category beet/composite\n */\nfunction set(keyElement) {\n const keyIsFixed = (0, types_1.isFixedSizeBeet)(keyElement);\n return {\n toFixedFromData(buf, offset) {\n const len = numbers_1.u32.read(buf, offset);\n let cursor = offset + 4;\n // Shortcut for the case that both key and value are fixed size beets\n if (keyIsFixed) {\n return fixedSizeSet(keyElement, new Map(), len);\n }\n // If key is not fixed size beet we need to determine the fixed versions and add them to a set by key\n const fixedBeets = new Map();\n for (let i = 0; i < len; i++) {\n const keyFixed = keyIsFixed\n ? keyElement\n : keyElement.toFixedFromData(buf, cursor);\n const key = keyFixed.read(buf, cursor);\n cursor += keyFixed.byteSize;\n fixedBeets.set(key, keyFixed);\n }\n return fixedSizeSet(keyElement, fixedBeets, len);\n },\n toFixedFromValue(setVal) {\n const len = setVal.size;\n // As above shortcut for the optimal case and build a set for all others\n if (keyIsFixed) {\n return fixedSizeSet(keyElement, new Map(), len);\n }\n const fixedBeets = new Map();\n for (const k of setVal) {\n const keyFixed = keyIsFixed\n ? keyElement\n : keyElement.toFixedFromValue(k);\n fixedBeets.set(k, keyFixed);\n }\n return fixedSizeSet(keyElement, fixedBeets, len);\n },\n description: `FixableSet<${keyElement.description}>`,\n };\n}\nexports.set = set;\n/**\n * Sets sets beet exports to metadata which describes in which package it\n * is defined as well as which TypeScript type is used to represent the\n * deserialized value in JavaScript.\n *\n * @category TypeDefinition\n */\nexports.setsTypeMap = {\n Set: {\n beet: 'set',\n isFixable: true,\n sourcePack: types_1.BEET_PACKAGE,\n ts: 'Set',\n },\n};\n//# sourceMappingURL=sets.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.stringTypeMap = exports.utf8String = exports.fixedSizeUtf8String = void 0;\nconst types_1 = require(\"../types\");\nconst assert_1 = require(\"assert\");\nconst numbers_1 = require(\"./numbers\");\nconst utils_1 = require(\"../utils\");\n/**\n * De/Serializes a UTF8 string of a particular size.\n *\n * @param stringByteLength the number of bytes of the string\n *\n * @category beet/collection\n */\nconst fixedSizeUtf8String = (stringByteLength) => {\n return {\n write: function (buf, offset, value) {\n const stringBuf = Buffer.from(value, 'utf8');\n assert_1.strict.equal(stringBuf.byteLength, stringByteLength, `${value} has invalid byte size`);\n numbers_1.u32.write(buf, offset, stringByteLength);\n stringBuf.copy(buf, offset + 4, 0, stringByteLength);\n },\n read: function (buf, offset) {\n const size = numbers_1.u32.read(buf, offset);\n assert_1.strict.equal(size, stringByteLength, `invalid byte size`);\n const stringSlice = buf.slice(offset + 4, offset + 4 + stringByteLength);\n return stringSlice.toString('utf8');\n },\n elementByteSize: 1,\n length: stringByteLength,\n lenPrefixByteSize: 4,\n byteSize: 4 + stringByteLength,\n description: `Utf8String(4 + ${stringByteLength})`,\n };\n};\nexports.fixedSizeUtf8String = fixedSizeUtf8String;\n/**\n * De/Serializes a UTF8 string of any size.\n *\n * @category beet/collection\n */\nexports.utf8String = {\n toFixedFromData(buf, offset) {\n const len = numbers_1.u32.read(buf, offset);\n (0, utils_1.logTrace)(`${this.description}[${len}]`);\n return (0, exports.fixedSizeUtf8String)(len);\n },\n toFixedFromValue(val) {\n const len = Buffer.from(val).byteLength;\n return (0, exports.fixedSizeUtf8String)(len);\n },\n description: `Utf8String`,\n};\n/**\n * Maps string beet exports to metadata which describes in which package it\n * is defined as well as which TypeScript type is used to represent the\n * deserialized value in JavaScript.\n *\n * @category TypeDefinition\n */\nexports.stringTypeMap = {\n fixedSizeString: {\n beet: 'fixedSizeUtf8String',\n isFixable: false,\n sourcePack: types_1.BEET_PACKAGE,\n ts: 'string',\n arg: types_1.BEET_TYPE_ARG_LEN,\n },\n string: {\n beet: 'utf8String',\n isFixable: true,\n sourcePack: types_1.BEET_PACKAGE,\n ts: 'string',\n },\n};\n//# sourceMappingURL=string.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.tuplesTypeMap = exports.tuple = exports.fixedSizeTuple = void 0;\nconst types_1 = require(\"../types\");\nconst assert_1 = require(\"assert\");\nconst beet_fixable_1 = require(\"../beet.fixable\");\n// Tuples are a special kind of composite which can be understood as\n// fixed length arrays where each tuple element can have a different data type.\n// Since the Tuple type itself dictates the length, and buffer layout, no extra\n// information is included in the serialized data.\n/**\n * De/Serializes a tuple with all fixed size tuple elements .\n * Since each tuple element can be of a different type not much type safety can\n * be provided here.\n *\n * @param elements the De/Serializer for each tuple element type\n *\n * @category beet/composite\n */\nfunction fixedSizeTuple(elements) {\n const len = elements.length;\n const elDescs = elements.map((x) => x.description);\n const byteSizes = elements.map((x) => x.byteSize);\n const byteSize = byteSizes.reduce((acc, x) => acc + x, 0);\n return {\n write: function (buf, offset, value) {\n assert_1.strict.equal(value.length, len, `tuple value element size ${value.length} should match len ${len}`);\n let cursor = offset;\n for (let i = 0; i < len; i++) {\n const v = value[i];\n const beetEl = elements[i];\n beetEl.write(buf, cursor, v);\n cursor += beetEl.byteSize;\n }\n },\n read: function (buf, offset) {\n const els = [];\n let cursor = offset;\n for (let i = 0; i < len; i++) {\n const elBeet = elements[i];\n els[i] = elBeet.read(buf, cursor);\n cursor += elBeet.byteSize;\n }\n return els;\n },\n byteSize,\n length: len,\n description: `FixedSizeTuple<${elDescs.join(',')}>[ ${byteSizes.join(', ')} ]`,\n };\n}\nexports.fixedSizeTuple = fixedSizeTuple;\n/**\n * De/Serializes a tuple which contains some non-fixed size tuple elements.\n *\n * Since each tuple element can be of a different type not much type safety can\n * be provided here.\n *\n * @param elements the De/Serializer for each tuple element type\n * @category beet/composite\n */\nfunction tuple(elements) {\n const len = elements.length;\n const elDescs = elements.map((x) => x.description);\n return {\n toFixedFromData(buf, offset) {\n let cursor = offset;\n const fixedElements = new Array(len);\n for (let i = 0; i < len; i++) {\n const fixedElement = (0, beet_fixable_1.fixBeetFromData)(elements[i], buf, cursor);\n fixedElements[i] = fixedElement;\n cursor += fixedElement.byteSize;\n }\n return fixedSizeTuple(fixedElements);\n },\n toFixedFromValue(vals) {\n (0, assert_1.strict)(Array.isArray(vals), `${vals} should be an array of tuple values`);\n assert_1.strict.equal(vals.length, len, `There should be ${len} tuple values, but there are ${vals.length}`);\n const fixedElements = new Array(len);\n for (let i = 0; i < vals.length; i++) {\n const fixedElement = (0, beet_fixable_1.fixBeetFromValue)(elements[i], vals[i]);\n fixedElements[i] = fixedElement;\n }\n return fixedSizeTuple(fixedElements);\n },\n description: `Tuple<${elDescs.join(',')}>`,\n };\n}\nexports.tuple = tuple;\n/**\n * Maps tuples beet exports to metadata which describes in which package it\n * is defined as well as which TypeScript type is used to represent the\n * deserialized value in JavaScript.\n *\n * @category TypeDefinition\n */\nexports.tuplesTypeMap = {\n Tuple: {\n beet: 'tuple',\n isFixable: true,\n sourcePack: types_1.BEET_PACKAGE,\n ts: '[__tuple_elements__]',\n },\n FixedSizeTuple: {\n beet: 'fixedSizeTuple',\n isFixable: false,\n sourcePack: types_1.BEET_PACKAGE,\n ts: '[__tuple_elements__]',\n },\n};\n//# sourceMappingURL=tuples.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.unitTypeMap = exports.unit = void 0;\nconst types_1 = require(\"../types\");\n/**\n * De/Serializer for non-values, i.e. `void`, `()`, `undefined` aka the _unit_ type .\n *\n * @category beet/primitive\n */\nexports.unit = {\n write: function (_buf, _offset, _value) { },\n read: function (_buf, _offset) {\n return undefined;\n },\n byteSize: 0,\n description: 'unit',\n};\n/**\n * Maps unit beet exports to metadata which describes in which package it\n * is defined as well as which TypeScript type is used to represent the\n * deserialized value in JavaScript.\n *\n * @category TypeDefinition\n */\nexports.unitTypeMap = {\n unit: {\n beet: 'unit',\n isFixable: false,\n sourcePack: types_1.BEET_PACKAGE,\n ts: 'void',\n },\n};\n//# sourceMappingURL=unit.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BeetReader = exports.BeetWriter = void 0;\nconst assert_1 = require(\"assert\");\n/**\n * Underlying writer used to serialize structs.\n *\n * @private\n * @category beet/struct\n */\nclass BeetWriter {\n constructor(byteSize) {\n this.buf = Buffer.alloc(byteSize);\n this._offset = 0;\n }\n get buffer() {\n return this.buf;\n }\n get offset() {\n return this._offset;\n }\n maybeResize(bytesNeeded) {\n if (this._offset + bytesNeeded > this.buf.length) {\n assert_1.strict.fail(`We shouldn't ever need to resize, but ${this._offset + bytesNeeded} > ${this.buf.length}`);\n // this.buf = Buffer.concat([this.buf, Buffer.alloc(this.allocateBytes)])\n }\n }\n write(beet, value) {\n this.maybeResize(beet.byteSize);\n beet.write(this.buf, this._offset, value);\n this._offset += beet.byteSize;\n }\n writeStruct(instance, fields) {\n for (const [key, beet] of fields) {\n const value = instance[key];\n this.write(beet, value);\n }\n }\n}\nexports.BeetWriter = BeetWriter;\n/**\n * Underlying reader used to deserialize structs.\n *\n * @private\n * @category beet/struct\n */\nclass BeetReader {\n constructor(buffer, _offset = 0) {\n this.buffer = buffer;\n this._offset = _offset;\n }\n get offset() {\n return this._offset;\n }\n read(beet) {\n const value = beet.read(this.buffer, this._offset);\n this._offset += beet.byteSize;\n return value;\n }\n readStruct(fields) {\n const acc = {};\n for (const [key, beet] of fields) {\n acc[key] = this.read(beet);\n }\n return acc;\n }\n}\nexports.BeetReader = BeetReader;\n//# sourceMappingURL=read-write.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.FixableBeetArgsStruct = exports.isFixableBeetStruct = exports.FixableBeetStruct = void 0;\nconst beet_fixable_1 = require(\"./beet.fixable\");\nconst struct_1 = require(\"./struct\");\nconst types_1 = require(\"./types\");\nconst assert_1 = require(\"assert\");\nconst utils_1 = require(\"./utils\");\nconst ansicolors_1 = __importDefault(require(\"ansicolors\"));\nconst { brightBlack } = ansicolors_1.default;\n/**\n * Configures a class or any JavaScript object type for de/serialization aka\n * read/write. Not all fields of that class have to be of fixed size.\n * If none of the fields requires a {@link FixableBeet} use the {@link BeetStruct} instead.\n *\n * @template Class the type to produce when deserializing\n * @template Args contains all fields, is typically a subset of Class and is\n * used to construct an instance of it\n *\n * @category beet/struct\n */\nclass FixableBeetStruct {\n /**\n * Creates an instance of the {@link FixableBeetStruct}.\n *\n * @param fields fixed or fixable de/serializers for each field of the {@link Class}\n * @param construct the function that creates an instance of {@link Class}\n * from the args\n * @param description identifies this struct for diagnostics/debugging\n * purposes\n */\n constructor(fields, construct, description = FixableBeetStruct.description) {\n this.fields = fields;\n this.construct = construct;\n this.description = description;\n let minByteSize = 0;\n if (utils_1.logDebug.enabled) {\n const flds = fields\n .map(([key, val]) => {\n if ((0, types_1.isFixedSizeBeet)(val)) {\n minByteSize += val.byteSize;\n }\n return `${key}: ${val.description} ${(0, utils_1.beetBytes)(val)}`;\n })\n .join('\\n ');\n const bytes = `> ${minByteSize} B`;\n (0, utils_1.logDebug)(`struct ${description} {\\n ${flds}\\n} ${brightBlack(bytes)}`);\n }\n }\n /**\n * Deserializes an instance of the Class from the provided buffer starting to\n * read at the provided offset.\n *\n * @returns `[instance of Class, offset into buffer after deserialization completed]`\n */\n deserialize(buffer, offset = 0) {\n return this.toFixedFromData(buffer, offset).deserialize(buffer, offset);\n }\n /**\n * Serializes the provided instance into a new {@link Buffer}\n *\n * **NOTE:** that the `instance` is traversed and each of its fields accessed\n * twice, once to derive a _fixed size_ {@link BeetStruct} and then use it to\n * serialize the `instance`.\n * Therefore ensure that none of the properties that are part of the struct\n * have side effects, i.e. via `Getter`s.\n *\n * @param instance of the struct to serialize\n * @param byteSize allows to override the size fo the created Buffer and\n * defaults to the size of the struct to serialize\n */\n serialize(instance, byteSize) {\n return this.toFixedFromValue(instance).serialize(instance, byteSize);\n }\n toFixedFromData(buf, offset) {\n let cursor = offset;\n const fixedFields = new Array(this.fields.length);\n for (let i = 0; i < this.fields.length; i++) {\n const [key, beet] = this.fields[i];\n const fixedBeet = (0, beet_fixable_1.fixBeetFromData)(beet, buf, cursor);\n fixedFields[i] = [key, fixedBeet];\n cursor += fixedBeet.byteSize;\n }\n return this.description !== FixableBeetStruct.description\n ? new struct_1.BeetStruct(fixedFields, this.construct, this.description)\n : new struct_1.BeetStruct(fixedFields, this.construct);\n }\n toFixedFromValue(args) {\n const argsKeys = Object.keys(args);\n const fixedFields = new Array(this.fields.length);\n for (let i = 0; i < this.fields.length; i++) {\n const [key, beet] = this.fields[i];\n (0, assert_1.strict)(argsKeys.includes(key), `Value with keys [ ${argsKeys} ] should include struct key '${key}' but doesn't.`);\n const val = args[key];\n const fixedBeet = (0, beet_fixable_1.fixBeetFromValue)(beet, val);\n fixedFields[i] = [key, fixedBeet];\n }\n return this.description !== FixableBeetStruct.description\n ? new struct_1.BeetStruct(fixedFields, this.construct, this.description)\n : new struct_1.BeetStruct(fixedFields, this.construct);\n }\n get type() {\n return FixableBeetStruct.TYPE;\n }\n}\nexports.FixableBeetStruct = FixableBeetStruct;\nFixableBeetStruct.description = 'FixableBeetStruct';\nFixableBeetStruct.TYPE = 'FixableBeetStruct';\nfunction isFixableBeetStruct(beet) {\n return beet.type === FixableBeetStruct.TYPE;\n}\nexports.isFixableBeetStruct = isFixableBeetStruct;\n/**\n * Convenience wrapper around {@link FixableBeetStruct} which is used for plain JavasScript\n * objects, like are used for option args passed to functions.\n *\n * @category beet/struct\n */\nclass FixableBeetArgsStruct extends FixableBeetStruct {\n constructor(fields, description = FixableBeetArgsStruct.description) {\n super(fields, (args) => args, description);\n }\n}\nexports.FixableBeetArgsStruct = FixableBeetArgsStruct;\nFixableBeetArgsStruct.description = 'FixableBeetArgsStruct';\n//# sourceMappingURL=struct.fixable.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.BeetArgsStruct = exports.isBeetStruct = exports.BeetStruct = void 0;\nconst read_write_1 = require(\"./read-write\");\nconst utils_1 = require(\"./utils\");\n/**\n * Configures a class or any JavaScript object type for de/serialization aka\n * read/write. All fields of that class have to be of fixed size.\n * If a field requires a {@link FixableBeet} use the {@link FixableBeetStruct}\n * instead.\n *\n * @template Class the type to produce when deserializing\n * @template Args contains all fields, is typically a subset of Class and is\n * used to construct an instance of it\n *\n * @category beet/struct\n */\nclass BeetStruct {\n /**\n * Creates an instance of the BeetStruct.\n *\n * @param fields de/serializers for each field of the {@link Class}\n * @param construct the function that creates an instance of {@link Class}\n * from the args\n * @param description identifies this struct for diagnostics/debugging\n * purposes\n */\n constructor(fields, construct, description = BeetStruct.description) {\n this.fields = fields;\n this.construct = construct;\n this.description = description;\n this.byteSize = this.getByteSize();\n if (utils_1.logDebug.enabled) {\n const flds = fields\n .map(([key, val]) => `${String(key)}: ${val.description} ${(0, utils_1.beetBytes)(val)}`)\n .join('\\n ');\n (0, utils_1.logDebug)(`struct ${description} {\\n ${flds}\\n} ${(0, utils_1.beetBytes)(this)}`);\n }\n }\n /**\n * Along with `write` this allows structs to be treated as {@link Beet}s and\n * thus supports composing/nesting them the same way.\n * @private\n */\n read(buf, offset) {\n const [value] = this.deserialize(buf, offset);\n return value;\n }\n /**\n * Along with `read` this allows structs to be treated as {@link Beet}s and\n * thus supports composing/nesting them the same way.\n * @private\n */\n write(buf, offset, value) {\n const [innerBuf, innerOffset] = this.serialize(value);\n innerBuf.copy(buf, offset, 0, innerOffset);\n }\n /**\n * Deserializes an instance of the Class from the provided buffer starting to\n * read at the provided offset.\n *\n * @returns `[instance of Class, offset into buffer after deserialization completed]`\n */\n deserialize(buffer, offset = 0) {\n if (utils_1.logTrace.enabled) {\n (0, utils_1.logTrace)('deserializing [%s] from %d bytes buffer', this.description, buffer.byteLength);\n (0, utils_1.logTrace)(buffer);\n (0, utils_1.logTrace)(buffer.toJSON().data);\n }\n const reader = new read_write_1.BeetReader(buffer, offset);\n const args = reader.readStruct(this.fields);\n return [this.construct(args), reader.offset];\n }\n /**\n * Serializes the provided instance into a new {@link Buffer}\n *\n * @param instance of the struct to serialize\n * @param byteSize allows to override the size fo the created Buffer and\n * defaults to the size of the struct to serialize\n */\n serialize(instance, byteSize = this.byteSize) {\n (0, utils_1.logTrace)('serializing [%s] %o to %d bytes buffer', this.description, instance, byteSize);\n const writer = new read_write_1.BeetWriter(byteSize);\n writer.writeStruct(instance, this.fields);\n return [writer.buffer, writer.offset];\n }\n getByteSize() {\n return this.fields.reduce((acc, [_, beet]) => acc + beet.byteSize, 0);\n }\n get type() {\n return BeetStruct.TYPE;\n }\n}\nexports.BeetStruct = BeetStruct;\nBeetStruct.description = 'BeetStruct';\nBeetStruct.TYPE = 'BeetStruct';\nfunction isBeetStruct(beet) {\n return beet.type === BeetStruct.TYPE;\n}\nexports.isBeetStruct = isBeetStruct;\n/**\n * Convenience wrapper around {@link BeetStruct} which is used for plain JavasScript\n * objects, like are used for option args passed to functions.\n *\n * @category beet/struct\n */\nclass BeetArgsStruct extends BeetStruct {\n constructor(fields, description = BeetArgsStruct.description) {\n super(fields, (args) => args, description);\n }\n}\nexports.BeetArgsStruct = BeetArgsStruct;\nBeetArgsStruct.description = 'BeetArgsStruct';\n//# sourceMappingURL=struct.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isElementCollectionFixedSizeBeet = exports.isFixableBeet = exports.assertFixedSizeBeet = exports.isFixedSizeBeet = exports.BEET_TYPE_ARG_INNER = exports.BEET_TYPE_ARG_LEN = exports.BEET_PACKAGE = void 0;\nconst assert_1 = require(\"assert\");\n/**\n * Matches name in package.json\n *\n * @private\n */\nexports.BEET_PACKAGE = '@metaplex-foundation/beet';\n/**\n * @private\n * @category beet\n */\nexports.BEET_TYPE_ARG_LEN = 'len';\n/**\n * @private\n * @category beet\n */\nexports.BEET_TYPE_ARG_INNER = 'Beet<{innner}>';\n// -----------------\n// Guards\n// -----------------\n/**\n * @private\n */\nfunction isFixedSizeBeet(x) {\n return Object.keys(x).includes('byteSize');\n}\nexports.isFixedSizeBeet = isFixedSizeBeet;\n/**\n * @private\n */\nfunction assertFixedSizeBeet(x, msg = `${x} should have been a fixed beet`) {\n (0, assert_1.strict)(isFixedSizeBeet(x), msg);\n}\nexports.assertFixedSizeBeet = assertFixedSizeBeet;\n/**\n * @private\n */\nfunction isFixableBeet(x) {\n return (typeof x.toFixedFromData === 'function' &&\n typeof x.toFixedFromValue === 'function');\n}\nexports.isFixableBeet = isFixableBeet;\n/**\n * @private\n */\nfunction isElementCollectionFixedSizeBeet(x) {\n const keys = Object.keys(x);\n return (keys.includes('length') &&\n keys.includes('elementByteSize') &&\n keys.includes('lenPrefixByteSize'));\n}\nexports.isElementCollectionFixedSizeBeet = isElementCollectionFixedSizeBeet;\n//# sourceMappingURL=types.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.UnreachableCaseError = exports.stringify = exports.bytes = exports.beetBytes = exports.logTrace = exports.logDebug = exports.logInfo = exports.logError = void 0;\nconst debug_1 = __importDefault(require(\"debug\"));\nconst ansicolors_1 = __importDefault(require(\"ansicolors\"));\nconst types_1 = require(\"./types\");\nconst { brightBlack } = ansicolors_1.default;\nexports.logError = (0, debug_1.default)('beet:error');\nexports.logInfo = (0, debug_1.default)('beet:info');\nexports.logDebug = (0, debug_1.default)('beet:debug');\nexports.logTrace = (0, debug_1.default)('beet:trace');\nfunction beetBytes(beet, isFixable = false) {\n let bytes;\n if ((0, types_1.isFixableBeet)(beet)) {\n bytes = '? B';\n }\n else if ((0, types_1.isElementCollectionFixedSizeBeet)(beet)) {\n const len = isFixable ? 'length' : beet.length;\n const lenBytes = beet.lenPrefixByteSize;\n bytes =\n lenBytes > 0\n ? `${lenBytes} + (${beet.elementByteSize} * ${len}) B (${beet.byteSize} B)`\n : `(${beet.elementByteSize} * ${len}) B (${beet.byteSize} B)`;\n }\n else {\n bytes = `${beet.byteSize} B`;\n }\n return brightBlack(bytes);\n}\nexports.beetBytes = beetBytes;\nfunction bytes(n) {\n return brightBlack(`${n} B`);\n}\nexports.bytes = bytes;\nfunction stringify(x) {\n return x.toString === 'function' ? x.toString() : x;\n}\nexports.stringify = stringify;\nclass UnreachableCaseError extends Error {\n constructor(value) {\n super(`Unreachable case: ${value}`);\n }\n}\nexports.UnreachableCaseError = UnreachableCaseError;\n//# sourceMappingURL=utils.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.createWSOLAccountInstructions = void 0;\nconst spl_token_1 = require(\"@solana/spl-token\");\nconst web3_js_1 = require(\"@solana/web3.js\");\n// TODO use native-mint instead\nfunction createWSOLAccountInstructions(walletAddress, amountIn, rentExemptLamports) {\n const tempAccount = new web3_js_1.Keypair();\n const createAccountInstruction = web3_js_1.SystemProgram.createAccount({\n fromPubkey: walletAddress,\n newAccountPubkey: tempAccount.publicKey,\n lamports: amountIn.toNumber() + rentExemptLamports,\n space: spl_token_1.AccountLayout.span,\n programId: spl_token_1.TOKEN_PROGRAM_ID,\n });\n const initAccountInstruction = spl_token_1.Token.createInitAccountInstruction(spl_token_1.TOKEN_PROGRAM_ID, spl_token_1.NATIVE_MINT, tempAccount.publicKey, walletAddress);\n const closeWSOLAccountInstruction = spl_token_1.Token.createCloseAccountInstruction(spl_token_1.TOKEN_PROGRAM_ID, tempAccount.publicKey, walletAddress, walletAddress, []);\n return {\n address: tempAccount.publicKey,\n instructions: [createAccountInstruction, initAccountInstruction],\n cleanupInstructions: [closeWSOLAccountInstruction],\n signers: [tempAccount],\n };\n}\nexports.createWSOLAccountInstructions = createWSOLAccountInstructions;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./math\"), exports);\n__exportStar(require(\"./web3\"), exports);\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DecimalUtil = void 0;\nconst spl_token_1 = require(\"@solana/spl-token\");\nconst decimal_js_1 = __importDefault(require(\"decimal.js\"));\nclass DecimalUtil {\n static adjustDecimals(input, shift = 0) {\n return input.div(decimal_js_1.default.pow(10, shift));\n }\n static fromU64(input, shift = 0) {\n return new decimal_js_1.default(input.toString()).div(new decimal_js_1.default(10).pow(shift));\n }\n static fromNumber(input, shift = 0) {\n return new decimal_js_1.default(input).div(new decimal_js_1.default(10).pow(shift));\n }\n static toU64(input, shift = 0) {\n if (input.isNeg()) {\n throw new Error(\"Negative decimal value ${input} cannot be converted to u64.\");\n }\n const shiftedValue = input.mul(new decimal_js_1.default(10).pow(shift));\n const zeroDecimalValue = shiftedValue.trunc();\n return new spl_token_1.u64(zeroDecimalValue.toString());\n }\n}\nexports.DecimalUtil = DecimalUtil;\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./decimal-util\"), exports);\n__exportStar(require(\"./math-util\"), exports);\n__exportStar(require(\"./percentage\"), exports);\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MathUtil = exports.U64_MAX = exports.U128 = exports.TWO = exports.ONE = exports.ZERO = void 0;\nconst anchor_1 = require(\"@project-serum/anchor\");\nconst decimal_js_1 = __importDefault(require(\"decimal.js\"));\n/**\n * @category Math\n */\nexports.ZERO = new anchor_1.BN(0);\n/**\n * @category Math\n */\nexports.ONE = new anchor_1.BN(1);\n/**\n * @category Math\n */\nexports.TWO = new anchor_1.BN(2);\n/**\n * @category Math\n */\nexports.U128 = exports.TWO.pow(new anchor_1.BN(128));\n/**\n * @category Math\n */\nexports.U64_MAX = exports.TWO.pow(new anchor_1.BN(64)).sub(exports.ONE);\n/**\n * @category Math\n */\nclass MathUtil {\n static toX64_BN(num) {\n return num.mul(new anchor_1.BN(2).pow(new anchor_1.BN(64)));\n }\n static toX64_Decimal(num) {\n return num.mul(decimal_js_1.default.pow(2, 64));\n }\n static toX64(num) {\n return new anchor_1.BN(num.mul(decimal_js_1.default.pow(2, 64)).floor().toFixed());\n }\n static fromX64(num) {\n return new decimal_js_1.default(num.toString()).mul(decimal_js_1.default.pow(2, -64));\n }\n static fromX64_Decimal(num) {\n return num.mul(decimal_js_1.default.pow(2, -64));\n }\n static fromX64_BN(num) {\n return num.div(new anchor_1.BN(2).pow(new anchor_1.BN(64)));\n }\n static shiftRightRoundUp(n) {\n let result = n.shrn(64);\n if (n.mod(exports.U64_MAX).gt(exports.ZERO)) {\n result = result.add(exports.ONE);\n }\n return result;\n }\n static divRoundUp(n0, n1) {\n const hasRemainder = !n0.mod(n1).eq(exports.ZERO);\n if (hasRemainder) {\n return n0.div(n1).add(new anchor_1.BN(1));\n }\n else {\n return n0.div(n1);\n }\n }\n static subUnderflowU128(n0, n1) {\n return n0.add(exports.U128).sub(n1).mod(exports.U128);\n }\n}\nexports.MathUtil = MathUtil;\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Percentage = void 0;\nconst spl_token_1 = require(\"@solana/spl-token\");\nconst decimal_js_1 = __importDefault(require(\"decimal.js\"));\n/**\n * @category Math\n */\nclass Percentage {\n constructor(numerator, denominator) {\n this.toString = () => {\n return `${this.numerator.toString()}/${this.denominator.toString()}`;\n };\n this.numerator = numerator;\n this.denominator = denominator;\n }\n static fromDecimal(number) {\n return Percentage.fromFraction(number.toDecimalPlaces(1).mul(10).toNumber(), 1000);\n }\n static fromFraction(numerator, denominator) {\n const num = typeof numerator === \"number\" ? new spl_token_1.u64(numerator.toString()) : numerator;\n const denom = typeof denominator === \"number\" ? new spl_token_1.u64(denominator.toString()) : denominator;\n return new Percentage(num, denom);\n }\n toDecimal() {\n if (this.denominator.eq(new spl_token_1.u64(0))) {\n return new decimal_js_1.default(0);\n }\n return new decimal_js_1.default(this.numerator.toString()).div(new decimal_js_1.default(this.denominator.toString()));\n }\n add(p2) {\n const denomGcd = this.denominator.gcd(p2.denominator);\n const denomLcm = this.denominator.div(denomGcd).mul(p2.denominator);\n const p1DenomAdjustment = denomLcm.div(this.denominator);\n const p2DenomAdjustment = denomLcm.div(p2.denominator);\n const p1NumeratorAdjusted = this.numerator.mul(p1DenomAdjustment);\n const p2NumeratorAdjusted = p2.numerator.mul(p2DenomAdjustment);\n const newNumerator = p1NumeratorAdjusted.add(p2NumeratorAdjusted);\n return new Percentage(new spl_token_1.u64(newNumerator.toString()), new spl_token_1.u64(denomLcm.toString()));\n }\n}\nexports.Percentage = Percentage;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.AddressUtil = void 0;\nconst anchor_1 = require(\"@project-serum/anchor\");\n/**\n * @category Util\n */\nclass AddressUtil {\n static toPubKey(address) {\n return (0, anchor_1.translateAddress)(address);\n }\n static toPubKeys(addresses) {\n return addresses.map((address) => AddressUtil.toPubKey(address));\n }\n static findProgramAddress(seeds, programId) {\n const [publicKey, bump] = anchor_1.utils.publicKey.findProgramAddressSync(seeds, programId);\n return { publicKey, bump };\n }\n}\nexports.AddressUtil = AddressUtil;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deriveATA = exports.resolveOrCreateATAs = exports.resolveOrCreateATA = void 0;\nconst spl_token_1 = require(\"@solana/spl-token\");\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst token_instructions_1 = require(\"../helpers/token-instructions\");\nconst token_util_1 = require(\"./token-util\");\nconst types_1 = require(\"./transactions/types\");\n/**\n * IMPORTANT: wrappedSolAmountIn should only be used for input/source token that\n * could be SOL. This is because when SOL is the output, it is the end\n * destination, and thus does not need to be wrapped with an amount.\n *\n * @param connection Solana connection class\n * @param ownerAddress The user's public key\n * @param tokenMint Token mint address\n * @param wrappedSolAmountIn Optional. Only use for input/source token that could be SOL\n * @param payer Payer that would pay the rent for the creation of the ATAs\n * @param modeIdempotent Optional. Use CreateIdempotent instruction instead of Create instruction\n * @returns\n */\nfunction resolveOrCreateATA(connection, ownerAddress, tokenMint, getAccountRentExempt, wrappedSolAmountIn = new spl_token_1.u64(0), payer = ownerAddress, modeIdempotent = false) {\n return __awaiter(this, void 0, void 0, function* () {\n const instructions = yield resolveOrCreateATAs(connection, ownerAddress, [{ tokenMint, wrappedSolAmountIn }], getAccountRentExempt, payer, modeIdempotent);\n return instructions[0];\n });\n}\nexports.resolveOrCreateATA = resolveOrCreateATA;\n/**\n * IMPORTANT: wrappedSolAmountIn should only be used for input/source token that\n * could be SOL. This is because when SOL is the output, it is the end\n * destination, and thus does not need to be wrapped with an amount.\n *\n * @param connection Solana connection class\n * @param ownerAddress The user's public key\n * @param tokenMint Token mint address\n * @param wrappedSolAmountIn Optional. Only use for input/source token that could be SOL\n * @param payer Payer that would pay the rent for the creation of the ATAs\n * @param modeIdempotent Optional. Use CreateIdempotent instruction instead of Create instruction\n * @returns\n */\nfunction resolveOrCreateATAs(connection, ownerAddress, requests, getAccountRentExempt, payer = ownerAddress, modeIdempotent = false) {\n var _a;\n return __awaiter(this, void 0, void 0, function* () {\n const nonNativeMints = requests.filter(({ tokenMint }) => !tokenMint.equals(spl_token_1.NATIVE_MINT));\n const nativeMints = requests.filter(({ tokenMint }) => tokenMint.equals(spl_token_1.NATIVE_MINT));\n if (nativeMints.length > 1) {\n throw new Error(\"Cannot resolve multiple WSolAccounts\");\n }\n let instructionMap = {};\n if (nonNativeMints.length > 0) {\n const nonNativeAddresses = yield Promise.all(nonNativeMints.map(({ tokenMint }) => deriveATA(ownerAddress, tokenMint)));\n const tokenAccountInfos = yield connection.getMultipleAccountsInfo(nonNativeAddresses);\n const tokenAccounts = tokenAccountInfos.map((tai) => token_util_1.TokenUtil.deserializeTokenAccount(tai === null || tai === void 0 ? void 0 : tai.data));\n tokenAccounts.forEach((tokenAccount, index) => {\n const ataAddress = nonNativeAddresses[index];\n let resolvedInstruction;\n if (tokenAccount) {\n resolvedInstruction = Object.assign({ address: ataAddress }, types_1.EMPTY_INSTRUCTION);\n }\n else {\n const createAtaInstruction = createAssociatedTokenAccountInstruction(spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID, spl_token_1.TOKEN_PROGRAM_ID, nonNativeMints[index].tokenMint, ataAddress, ownerAddress, payer, modeIdempotent);\n resolvedInstruction = {\n address: ataAddress,\n instructions: [createAtaInstruction],\n cleanupInstructions: [],\n signers: [],\n };\n }\n instructionMap[nonNativeMints[index].tokenMint.toBase58()] = resolvedInstruction;\n });\n }\n if (nativeMints.length > 0) {\n const accountRentExempt = yield getAccountRentExempt();\n const wrappedSolAmountIn = ((_a = nativeMints[0]) === null || _a === void 0 ? void 0 : _a.wrappedSolAmountIn) || new spl_token_1.u64(0);\n instructionMap[spl_token_1.NATIVE_MINT.toBase58()] = (0, token_instructions_1.createWSOLAccountInstructions)(ownerAddress, wrappedSolAmountIn, accountRentExempt);\n }\n // Preserve order of resolution\n return requests.map(({ tokenMint }) => instructionMap[tokenMint.toBase58()]);\n });\n}\nexports.resolveOrCreateATAs = resolveOrCreateATAs;\nfunction deriveATA(ownerAddress, tokenMint) {\n return __awaiter(this, void 0, void 0, function* () {\n return yield spl_token_1.Token.getAssociatedTokenAddress(spl_token_1.ASSOCIATED_TOKEN_PROGRAM_ID, spl_token_1.TOKEN_PROGRAM_ID, tokenMint, ownerAddress);\n });\n}\nexports.deriveATA = deriveATA;\nfunction createAssociatedTokenAccountInstruction(associatedTokenProgramId, tokenProgramId, mint, associatedAccount, owner, payer, modeIdempotent) {\n if (!modeIdempotent) {\n return spl_token_1.Token.createAssociatedTokenAccountInstruction(associatedTokenProgramId, tokenProgramId, mint, associatedAccount, owner, payer);\n }\n // create CreateIdempotent instruction\n // spl-token v0.1.8 doesn't have a method for CreateIdempotent.\n // https://github.com/solana-labs/solana-program-library/blob/master/associated-token-account/program/src/instruction.rs#L26\n const keys = [\n { pubkey: payer, isSigner: true, isWritable: true },\n { pubkey: associatedAccount, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: false, isWritable: false },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false },\n { pubkey: tokenProgramId, isSigner: false, isWritable: false },\n ];\n const instructionData = Buffer.from([1]);\n return new web3_js_1.TransactionInstruction({\n keys,\n programId: associatedTokenProgramId,\n data: instructionData,\n });\n}\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./address-util\"), exports);\n__exportStar(require(\"./ata-util\"), exports);\n__exportStar(require(\"./public-key-utils\"), exports);\n__exportStar(require(\"./token-util\"), exports);\n__exportStar(require(\"./transactions\"), exports);\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PublicKeyUtils = void 0;\nclass PublicKeyUtils {\n /**\n * Check whether a string is a Base58 string.\n * @param value\n * @returns Whether the string is a Base58 string.\n */\n static isBase58(value) {\n return /^[A-HJ-NP-Za-km-z1-9]*$/.test(value);\n }\n /**\n * Order a list of public keys by bytes.\n * @param keys a list of public keys to order\n * @returns an ordered array of public keys\n */\n static orderKeys(...keys) {\n return keys.sort(comparePublicKeys);\n }\n}\nexports.PublicKeyUtils = PublicKeyUtils;\nfunction comparePublicKeys(key1, key2) {\n const bytes1 = key1.toBytes();\n const bytes2 = key2.toBytes();\n // PublicKeys should be zero-padded 32 byte length\n if (bytes1.byteLength !== bytes2.byteLength) {\n return bytes1.byteLength - bytes2.byteLength;\n }\n for (let i = 0; i < bytes1.byteLength; i++) {\n let byte1 = bytes1[i];\n let byte2 = bytes2[i];\n if (byte1 !== byte2) {\n return byte1 - byte2;\n }\n }\n return 0;\n}\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TokenUtil = void 0;\nconst spl_token_1 = require(\"@solana/spl-token\");\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst tiny_invariant_1 = __importDefault(require(\"tiny-invariant\"));\nconst math_1 = require(\"../math\");\nconst web3_1 = require(\"../web3\");\n/**\n * @category Util\n */\nclass TokenUtil {\n static isNativeMint(mint) {\n return mint.equals(spl_token_1.NATIVE_MINT);\n }\n /**\n * Create an ix to send a spl-token / native-mint to another wallet.\n * This function will handle the associated token accounts internally for spl-token.\n * SOL is sent directly to the user's wallet.\n *\n * @param connection - Connection object\n * @param sourceWallet - PublicKey for the sender's wallet\n * @param destinationWallet - PublicKey for the receiver's wallet\n * @param tokenMint - Mint for the token that is being sent.\n * @param tokenDecimals - Decimal for the token that is being sent.\n * @param amount - Amount of token to send\n * @param getAccountRentExempt - Fn to fetch the account rent exempt value\n * @param payer - PublicKey for the payer that would fund the possibly new token-accounts. (must sign the txn)\n * @returns\n */\n static createSendTokensToWalletInstruction(connection, sourceWallet, destinationWallet, tokenMint, tokenDecimals, amount, getAccountRentExempt, payer) {\n return __awaiter(this, void 0, void 0, function* () {\n (0, tiny_invariant_1.default)(!amount.eq(math_1.ZERO), \"SendToken transaction must send more than 0 tokens.\");\n // Specifically handle SOL, which is not a spl-token.\n if (tokenMint.equals(spl_token_1.NATIVE_MINT)) {\n const sendSolTxn = web3_js_1.SystemProgram.transfer({\n fromPubkey: sourceWallet,\n toPubkey: destinationWallet,\n lamports: BigInt(amount.toString())\n });\n return {\n instructions: [sendSolTxn],\n cleanupInstructions: [],\n signers: []\n };\n }\n const sourceTokenAccount = yield (0, web3_1.deriveATA)(sourceWallet, tokenMint);\n const _a = yield (0, web3_1.resolveOrCreateATA)(connection, destinationWallet, tokenMint, getAccountRentExempt, amount, payer), { address: destinationTokenAccount } = _a, destinationAtaIx = __rest(_a, [\"address\"]);\n const transferIx = spl_token_1.Token.createTransferCheckedInstruction(spl_token_1.TOKEN_PROGRAM_ID, sourceTokenAccount, tokenMint, destinationTokenAccount, sourceWallet, [], new spl_token_1.u64(amount.toString()), tokenDecimals);\n return {\n instructions: destinationAtaIx.instructions.concat(transferIx),\n cleanupInstructions: destinationAtaIx.cleanupInstructions,\n signers: destinationAtaIx.signers,\n };\n });\n }\n}\nexports.TokenUtil = TokenUtil;\nTokenUtil.deserializeTokenAccount = (data) => {\n if (!data) {\n return null;\n }\n const accountInfo = spl_token_1.AccountLayout.decode(data);\n accountInfo.mint = new web3_js_1.PublicKey(accountInfo.mint);\n accountInfo.owner = new web3_js_1.PublicKey(accountInfo.owner);\n accountInfo.amount = spl_token_1.u64.fromBuffer(accountInfo.amount);\n if (accountInfo.delegateOption === 0) {\n accountInfo.delegate = null;\n accountInfo.delegatedAmount = new spl_token_1.u64(0);\n }\n else {\n accountInfo.delegate = new web3_js_1.PublicKey(accountInfo.delegate);\n accountInfo.delegatedAmount = spl_token_1.u64.fromBuffer(accountInfo.delegatedAmount);\n }\n accountInfo.isInitialized = accountInfo.state !== 0;\n accountInfo.isFrozen = accountInfo.state === 2;\n if (accountInfo.isNativeOption === 1) {\n accountInfo.rentExemptReserve = spl_token_1.u64.fromBuffer(accountInfo.isNative);\n accountInfo.isNative = true;\n }\n else {\n accountInfo.rentExemptReserve = null;\n accountInfo.isNative = false;\n }\n if (accountInfo.closeAuthorityOption === 0) {\n accountInfo.closeAuthority = null;\n }\n else {\n accountInfo.closeAuthority = new web3_js_1.PublicKey(accountInfo.closeAuthority);\n }\n return accountInfo;\n};\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\n__exportStar(require(\"./transactions-builder\"), exports);\n__exportStar(require(\"./transactions-processor\"), exports);\n__exportStar(require(\"./types\"), exports);\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TransactionBuilder = void 0;\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst transactions_processor_1 = require(\"./transactions-processor\");\n/**\n * @category Transactions Util\n */\nclass TransactionBuilder {\n constructor(connection, wallet) {\n this.connection = connection;\n this.wallet = wallet;\n this.instructions = [];\n this.signers = [];\n }\n /**\n * Append an instruction into this builder.\n * @param instruction - An Instruction\n * @returns Returns this transaction builder.\n */\n addInstruction(instruction) {\n this.instructions.push(instruction);\n return this;\n }\n /**\n * Append a list of instructions into this builder.\n * @param instructions - A list of Instructions\n * @returns Returns this transaction builder.\n */\n addInstructions(instructions) {\n this.instructions = this.instructions.concat(instructions);\n return this;\n }\n /**\n * Prepend a list of instructions into this builder.\n * @param instruction - An Instruction\n * @returns Returns this transaction builder.\n */\n prependInstruction(instruction) {\n this.instructions.unshift(instruction);\n return this;\n }\n /**\n * Prepend a list of instructions into this builder.\n * @param instructions - A list of Instructions\n * @returns Returns this transaction builder.\n */\n prependInstructions(instructions) {\n this.instructions = instructions.concat(this.instructions);\n return this;\n }\n addSigner(signer) {\n this.signers.push(signer);\n return this;\n }\n isEmpty() {\n return this.instructions.length == 0;\n }\n /**\n * Compresses all instructions & signers in this builder\n * into one single instruction\n * @param compressPost Compress all post instructions into the instructions field\n * @returns Instruction object containing all\n */\n compressIx(compressPost) {\n let instructions = [];\n let cleanupInstructions = [];\n let signers = [];\n this.instructions.forEach((curr) => {\n instructions = instructions.concat(curr.instructions);\n // Cleanup instructions should execute in reverse order\n cleanupInstructions = curr.cleanupInstructions.concat(cleanupInstructions);\n signers = signers.concat(curr.signers);\n });\n if (compressPost) {\n instructions = instructions.concat(cleanupInstructions);\n cleanupInstructions = [];\n }\n return {\n instructions: [...instructions],\n cleanupInstructions: [...cleanupInstructions],\n signers,\n };\n }\n /**\n * Returns the size of the current transaction in bytes.\n * @returns the size of the current transaction in bytes.\n * @throws error if transaction is over maximum package size.\n */\n txnSize(options = { latestBlockhash: undefined }) {\n return __awaiter(this, void 0, void 0, function* () {\n if (this.isEmpty()) {\n return 0;\n }\n const request = yield this.build(options);\n return request.transaction.serialize({ requireAllSignatures: false }).length;\n });\n }\n /**\n * Constructs a transaction payload with the gathered instructions\n * @returns a TransactionPayload object that can be excuted or agregated into other transactions\n */\n build(options = { latestBlockhash: undefined }) {\n return __awaiter(this, void 0, void 0, function* () {\n const { latestBlockhash } = options;\n let recentBlockhash = !latestBlockhash\n ? yield this.connection.getLatestBlockhash(\"singleGossip\")\n : latestBlockhash;\n const transaction = new web3_js_1.Transaction(Object.assign(Object.assign({}, recentBlockhash), { feePayer: this.wallet.publicKey }));\n const ix = this.compressIx(true);\n transaction.add(...ix.instructions);\n transaction.feePayer = this.wallet.publicKey;\n return {\n transaction: transaction,\n signers: ix.signers.concat(this.signers),\n };\n });\n }\n /**\n * Constructs a transaction payload with the gathered instructions, sign it with the provider and send it out\n * @returns the txId of the transaction\n */\n buildAndExecute() {\n return __awaiter(this, void 0, void 0, function* () {\n const tx = yield this.build();\n const tp = new transactions_processor_1.TransactionProcessor(this.connection, this.wallet);\n const { execute } = yield tp.signAndConstructTransaction(tx);\n return execute();\n });\n }\n /**\n * Send multiple transactions at once.\n * @deprecated This method is here for legacy reasons and we prefer the use of TransactionProcessor\n */\n static sendAll(provider, txns, opts) {\n return __awaiter(this, void 0, void 0, function* () {\n const txRequest = yield Promise.all(txns.map((txBuilder) => __awaiter(this, void 0, void 0, function* () {\n const { transaction, signers } = yield txBuilder.build();\n return { tx: transaction, signers };\n })));\n return yield provider.sendAll(txRequest, opts);\n });\n }\n}\nexports.TransactionBuilder = TransactionBuilder;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.TransactionProcessor = void 0;\n// Only used internally\nvar TransactionStatus;\n(function (TransactionStatus) {\n TransactionStatus[TransactionStatus[\"CONFIRMED\"] = 0] = \"CONFIRMED\";\n TransactionStatus[TransactionStatus[\"EXPIRED\"] = 1] = \"EXPIRED\";\n})(TransactionStatus || (TransactionStatus = {}));\nclass TransactionProcessor {\n constructor(connection, wallet, commitment = \"confirmed\") {\n this.connection = connection;\n this.wallet = wallet;\n this.commitment = commitment;\n }\n signTransaction(txRequest) {\n return __awaiter(this, void 0, void 0, function* () {\n const { transactions, lastValidBlockHeight } = yield this.signTransactions([txRequest]);\n return { transaction: transactions[0], lastValidBlockHeight };\n });\n }\n signTransactions(txRequests) {\n return __awaiter(this, void 0, void 0, function* () {\n // TODO: Neither Solana nor Anchor currently correctly handle latest block height confirmation\n const { blockhash, lastValidBlockHeight } = yield this.connection.getLatestBlockhash(this.commitment);\n const feePayer = this.wallet.publicKey;\n const pSignedTxs = txRequests.map((txRequest) => {\n return rewriteTransaction(txRequest, feePayer, blockhash);\n });\n const transactions = yield this.wallet.signAllTransactions(pSignedTxs);\n return {\n transactions,\n lastValidBlockHeight,\n };\n });\n }\n sendTransaction(transaction, lastValidBlockHeight) {\n return __awaiter(this, void 0, void 0, function* () {\n const execute = this.constructSendTransactions([transaction], lastValidBlockHeight);\n const txs = yield execute();\n const ex = txs[0];\n if (ex.status === \"fulfilled\") {\n return ex.value;\n }\n else {\n throw ex.reason;\n }\n });\n }\n constructSendTransactions(transactions, lastValidBlockHeight, parallel = true) {\n return () => __awaiter(this, void 0, void 0, function* () {\n let done = false;\n const isDone = () => done;\n // We separate the block expiry promise so that it can be shared for all the transactions\n const expiry = checkBlockHeightExpiry(this.connection, lastValidBlockHeight, this.commitment, isDone);\n const txs = transactions.map((tx) => tx.serialize());\n const txPromises = txs.map((tx) => __awaiter(this, void 0, void 0, function* () { return confirmOrExpire(this.connection, tx, this.commitment, expiry); }));\n let results = [];\n if (parallel) {\n results = yield Promise.allSettled(txPromises);\n }\n else {\n for (const txPromise of txPromises) {\n // We might be able to have these transactions individually signed and updated, but not sure\n // of the implications of the resigning - could be quite annoying from a user perspective\n // if their wallet forces them to sign for each\n results.push(yield promiseToSettled(txPromise));\n }\n }\n done = true;\n return results;\n });\n }\n signAndConstructTransaction(txRequest) {\n return __awaiter(this, void 0, void 0, function* () {\n const { transaction, lastValidBlockHeight } = yield this.signTransaction(txRequest);\n return {\n signedTx: transaction,\n execute: () => __awaiter(this, void 0, void 0, function* () { return this.sendTransaction(transaction, lastValidBlockHeight); }),\n };\n });\n }\n signAndConstructTransactions(txRequests, parallel = true) {\n return __awaiter(this, void 0, void 0, function* () {\n const { transactions, lastValidBlockHeight } = yield this.signTransactions(txRequests);\n const execute = this.constructSendTransactions(transactions, lastValidBlockHeight, parallel);\n return { signedTxs: transactions, execute };\n });\n }\n}\nexports.TransactionProcessor = TransactionProcessor;\nfunction promiseToSettled(promise) {\n return __awaiter(this, void 0, void 0, function* () {\n try {\n const value = yield promise;\n return {\n status: \"fulfilled\",\n value: value,\n };\n }\n catch (err) {\n return {\n status: \"rejected\",\n reason: err,\n };\n }\n });\n}\n/**\n * Send a tx and confirm that it has reached `commitment` or expiration\n */\nfunction confirmOrExpire(connection, tx, commitment, expiry) {\n return __awaiter(this, void 0, void 0, function* () {\n const txId = yield connection.sendRawTransaction(tx, {\n preflightCommitment: commitment,\n });\n // Inlined to properly clear subscription id if expired before signature\n let subscriptionId;\n // Subscribe to onSignature to detect that the transactionId has been\n // signed with the `commitment` level\n const confirm = new Promise((resolve, reject) => {\n try {\n subscriptionId = connection.onSignature(txId, () => {\n subscriptionId = undefined;\n resolve(TransactionStatus.CONFIRMED);\n }, commitment);\n }\n catch (err) {\n reject(err);\n }\n });\n try {\n // Race confirm and expiry to see whether the transaction is confirmed or expires\n const status = yield Promise.race([confirm, expiry]);\n if (status === TransactionStatus.CONFIRMED) {\n return txId;\n }\n else {\n throw new Error(\"Transaction failed to be confirmed before expiring\");\n }\n }\n finally {\n if (subscriptionId) {\n connection.removeSignatureListener(subscriptionId);\n }\n }\n });\n}\nfunction checkBlockHeightExpiry(connection, lastValidBlockHeight, commitment, isDone) {\n return __awaiter(this, void 0, void 0, function* () {\n while (!isDone()) {\n let blockHeight = yield connection.getBlockHeight(commitment);\n if (blockHeight > lastValidBlockHeight) {\n break;\n }\n // The more remaining valid blocks, the less frequently we need to check\n yield sleep((lastValidBlockHeight - blockHeight) * 5 + 500);\n }\n return TransactionStatus.EXPIRED;\n });\n}\nfunction rewriteTransaction(txRequest, feePayer, blockhash) {\n var _a;\n const signers = (_a = txRequest.signers) !== null && _a !== void 0 ? _a : [];\n const tx = txRequest.transaction;\n tx.feePayer = feePayer;\n tx.recentBlockhash = blockhash;\n signers.filter((s) => s !== undefined).forEach((keypair) => tx.partialSign(keypair));\n return tx;\n}\nfunction sleep(ms) {\n return new Promise((resolve) => setTimeout(resolve, ms));\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EMPTY_INSTRUCTION = void 0;\n/**\n * @category Transactions Util\n */\nexports.EMPTY_INSTRUCTION = {\n instructions: [],\n cleanupInstructions: [],\n signers: [],\n};\n","var _a;\n/**\n * Returns true if being run inside a web browser,\n * false if in a Node process or electron app.\n */\nexport const isBrowser = typeof window !== \"undefined\" && !((_a = window.process) === null || _a === void 0 ? void 0 : _a.hasOwnProperty(\"type\"));\n//# sourceMappingURL=common.js.map","import { Connection, Keypair, sendAndConfirmRawTransaction, } from \"@solana/web3.js\";\nimport { isBrowser } from \"./utils/common\";\n/**\n * The network and wallet context used to send transactions paid for and signed\n * by the provider.\n */\nexport default class Provider {\n /**\n * @param connection The cluster connection where the program is deployed.\n * @param wallet The wallet used to pay for and sign all transactions.\n * @param opts Transaction confirmation options to use by default.\n */\n constructor(connection, wallet, opts) {\n this.connection = connection;\n this.wallet = wallet;\n this.opts = opts;\n }\n static defaultOptions() {\n return {\n preflightCommitment: \"recent\",\n commitment: \"recent\",\n };\n }\n /**\n * Returns a `Provider` with a wallet read from the local filesystem.\n *\n * @param url The network cluster url.\n * @param opts The default transaction confirmation options.\n *\n * (This api is for Node only.)\n */\n static local(url, opts) {\n opts = opts !== null && opts !== void 0 ? opts : Provider.defaultOptions();\n const connection = new Connection(url !== null && url !== void 0 ? url : \"http://localhost:8899\", opts.preflightCommitment);\n const wallet = NodeWallet.local();\n return new Provider(connection, wallet, opts);\n }\n /**\n * Returns a `Provider` read from the `ANCHOR_PROVIDER_URL` environment\n * variable\n *\n * (This api is for Node only.)\n */\n static env() {\n if (isBrowser)\n return;\n const process = require(\"process\");\n const url = process.env.ANCHOR_PROVIDER_URL;\n if (url === undefined) {\n throw new Error(\"ANCHOR_PROVIDER_URL is not defined\");\n }\n const options = Provider.defaultOptions();\n const connection = new Connection(url, options.commitment);\n const wallet = NodeWallet.local();\n return new Provider(connection, wallet, options);\n }\n /**\n * Sends the given transaction, paid for and signed by the provider's wallet.\n *\n * @param tx The transaction to send.\n * @param signers The set of signers in addition to the provdier wallet that\n * will sign the transaction.\n * @param opts Transaction confirmation options.\n */\n async send(tx, signers, opts) {\n if (signers === undefined) {\n signers = [];\n }\n if (opts === undefined) {\n opts = this.opts;\n }\n tx.feePayer = this.wallet.publicKey;\n tx.recentBlockhash = (await this.connection.getRecentBlockhash(opts.preflightCommitment)).blockhash;\n await this.wallet.signTransaction(tx);\n signers\n .filter((s) => s !== undefined)\n .forEach((kp) => {\n tx.partialSign(kp);\n });\n const rawTx = tx.serialize();\n const txId = await sendAndConfirmRawTransaction(this.connection, rawTx, opts);\n return txId;\n }\n /**\n * Similar to `send`, but for an array of transactions and signers.\n */\n async sendAll(reqs, opts) {\n if (opts === undefined) {\n opts = this.opts;\n }\n const blockhash = await this.connection.getRecentBlockhash(opts.preflightCommitment);\n let txs = reqs.map((r) => {\n let tx = r.tx;\n let signers = r.signers;\n if (signers === undefined) {\n signers = [];\n }\n tx.feePayer = this.wallet.publicKey;\n tx.recentBlockhash = blockhash.blockhash;\n signers\n .filter((s) => s !== undefined)\n .forEach((kp) => {\n tx.partialSign(kp);\n });\n return tx;\n });\n const signedTxs = await this.wallet.signAllTransactions(txs);\n const sigs = [];\n for (let k = 0; k < txs.length; k += 1) {\n const tx = signedTxs[k];\n const rawTx = tx.serialize();\n sigs.push(await sendAndConfirmRawTransaction(this.connection, rawTx, opts));\n }\n return sigs;\n }\n /**\n * Simulates the given transaction, returning emitted logs from execution.\n *\n * @param tx The transaction to send.\n * @param signers The set of signers in addition to the provdier wallet that\n * will sign the transaction.\n * @param opts Transaction confirmation options.\n */\n async simulate(tx, signers, opts) {\n var _a, _b;\n if (signers === undefined) {\n signers = [];\n }\n if (opts === undefined) {\n opts = this.opts;\n }\n tx.feePayer = this.wallet.publicKey;\n tx.recentBlockhash = (await this.connection.getRecentBlockhash((_a = opts.preflightCommitment) !== null && _a !== void 0 ? _a : this.opts.preflightCommitment)).blockhash;\n await this.wallet.signTransaction(tx);\n signers\n .filter((s) => s !== undefined)\n .forEach((kp) => {\n tx.partialSign(kp);\n });\n return await simulateTransaction(this.connection, tx, (_b = opts.commitment) !== null && _b !== void 0 ? _b : this.opts.commitment);\n }\n}\n/**\n * Node only wallet.\n */\nexport class NodeWallet {\n constructor(payer) {\n this.payer = payer;\n }\n static local() {\n const payer = Keypair.fromSecretKey(Buffer.from(JSON.parse(require(\"fs\").readFileSync(require(\"os\").homedir() + \"/.config/solana/id.json\", {\n encoding: \"utf-8\",\n }))));\n return new NodeWallet(payer);\n }\n async signTransaction(tx) {\n tx.partialSign(this.payer);\n return tx;\n }\n async signAllTransactions(txs) {\n return txs.map((t) => {\n t.partialSign(this.payer);\n return t;\n });\n }\n get publicKey() {\n return this.payer.publicKey;\n }\n}\n// Copy of Connection.simulateTransaction that takes a commitment parameter.\nasync function simulateTransaction(connection, transaction, commitment) {\n // @ts-ignore\n transaction.recentBlockhash = await connection._recentBlockhash(\n // @ts-ignore\n connection._disableBlockhashCaching);\n const signData = transaction.serializeMessage();\n // @ts-ignore\n const wireTransaction = transaction._serialize(signData);\n const encodedTransaction = wireTransaction.toString(\"base64\");\n const config = { encoding: \"base64\", commitment };\n const args = [encodedTransaction, config];\n // @ts-ignore\n const res = await connection._rpcRequest(\"simulateTransaction\", args);\n if (res.error) {\n throw new Error(\"failed to simulate transaction: \" + res.error.message);\n }\n return res.result;\n}\n/**\n * Sets the default provider on the client.\n */\nexport function setProvider(provider) {\n _provider = provider;\n}\n/**\n * Returns the default provider being used by the client.\n */\nexport function getProvider() {\n if (_provider === null) {\n return Provider.local();\n }\n return _provider;\n}\n// Global provider used as the default when a provider is not given.\nlet _provider = null;\n//# sourceMappingURL=provider.js.map","export class IdlError extends Error {\n}\n// An error from a user defined program.\nexport class ProgramError extends Error {\n constructor(code, msg, ...params) {\n super(...params);\n this.code = code;\n this.msg = msg;\n }\n static parse(err, idlErrors) {\n // TODO: don't rely on the error string. web3.js should preserve the error\n // code information instead of giving us an untyped string.\n let components = err.toString().split(\"custom program error: \");\n if (components.length !== 2) {\n return null;\n }\n let errorCode;\n try {\n errorCode = parseInt(components[1]);\n }\n catch (parseErr) {\n return null;\n }\n // Parse user error.\n let errorMsg = idlErrors.get(errorCode);\n if (errorMsg !== undefined) {\n return new ProgramError(errorCode, errorMsg);\n }\n // Parse framework internal error.\n errorMsg = LangErrorMessage.get(errorCode);\n if (errorMsg !== undefined) {\n return new ProgramError(errorCode, errorMsg);\n }\n // Unable to parse the error. Just return the untranslated error.\n return null;\n }\n toString() {\n return this.msg;\n }\n}\nconst LangErrorCode = {\n // Instructions.\n InstructionMissing: 100,\n InstructionFallbackNotFound: 101,\n InstructionDidNotDeserialize: 102,\n InstructionDidNotSerialize: 103,\n // IDL instructions.\n IdlInstructionStub: 120,\n IdlInstructionInvalidProgram: 121,\n // Constraints.\n ConstraintMut: 140,\n ConstraintHasOne: 141,\n ConstraintSigner: 142,\n ConstraintRaw: 143,\n ConstraintOwner: 144,\n ConstraintRentExempt: 145,\n ConstraintSeeds: 146,\n ConstraintExecutable: 147,\n ConstraintState: 148,\n ConstraintAssociated: 149,\n ConstraintAssociatedInit: 150,\n ConstraintClose: 151,\n ConstraintAddress: 152,\n // Accounts.\n AccountDiscriminatorAlreadySet: 160,\n AccountDiscriminatorNotFound: 161,\n AccountDiscriminatorMismatch: 162,\n AccountDidNotDeserialize: 163,\n AccountDidNotSerialize: 164,\n AccountNotEnoughKeys: 165,\n AccountNotMutable: 166,\n AccountNotProgramOwned: 167,\n // State.\n StateInvalidAddress: 180,\n // Used for APIs that shouldn't be used anymore.\n Deprecated: 299,\n};\nconst LangErrorMessage = new Map([\n // Instructions.\n [\n LangErrorCode.InstructionMissing,\n \"8 byte instruction identifier not provided\",\n ],\n [\n LangErrorCode.InstructionFallbackNotFound,\n \"Fallback functions are not supported\",\n ],\n [\n LangErrorCode.InstructionDidNotDeserialize,\n \"The program could not deserialize the given instruction\",\n ],\n [\n LangErrorCode.InstructionDidNotSerialize,\n \"The program could not serialize the given instruction\",\n ],\n // Idl instructions.\n [\n LangErrorCode.IdlInstructionStub,\n \"The program was compiled without idl instructions\",\n ],\n [\n LangErrorCode.IdlInstructionInvalidProgram,\n \"The transaction was given an invalid program for the IDL instruction\",\n ],\n // Constraints.\n [LangErrorCode.ConstraintMut, \"A mut constraint was violated\"],\n [LangErrorCode.ConstraintHasOne, \"A has_one constraint was violated\"],\n [LangErrorCode.ConstraintSigner, \"A signer constraint was violated\"],\n [LangErrorCode.ConstraintRaw, \"A raw constraint as violated\"],\n [LangErrorCode.ConstraintOwner, \"An owner constraint was violated\"],\n [LangErrorCode.ConstraintRentExempt, \"A rent exempt constraint was violated\"],\n [LangErrorCode.ConstraintSeeds, \"A seeds constraint was violated\"],\n [LangErrorCode.ConstraintExecutable, \"An executable constraint was violated\"],\n [LangErrorCode.ConstraintState, \"A state constraint was violated\"],\n [LangErrorCode.ConstraintAssociated, \"An associated constraint was violated\"],\n [\n LangErrorCode.ConstraintAssociatedInit,\n \"An associated init constraint was violated\",\n ],\n [LangErrorCode.ConstraintClose, \"A close constraint was violated\"],\n [LangErrorCode.ConstraintAddress, \"An address constraint was violated\"],\n // Accounts.\n [\n LangErrorCode.AccountDiscriminatorAlreadySet,\n \"The account discriminator was already set on this account\",\n ],\n [\n LangErrorCode.AccountDiscriminatorNotFound,\n \"No 8 byte discriminator was found on the account\",\n ],\n [\n LangErrorCode.AccountDiscriminatorMismatch,\n \"8 byte discriminator did not match what was expected\",\n ],\n [LangErrorCode.AccountDidNotDeserialize, \"Failed to deserialize the account\"],\n [LangErrorCode.AccountDidNotSerialize, \"Failed to serialize the account\"],\n [\n LangErrorCode.AccountNotEnoughKeys,\n \"Not enough account keys given to the instruction\",\n ],\n [LangErrorCode.AccountNotMutable, \"The given account is not mutable\"],\n [\n LangErrorCode.AccountNotProgramOwned,\n \"The given account is not owned by the executing program\",\n ],\n // State.\n [\n LangErrorCode.StateInvalidAddress,\n \"The given state account does not have the correct address\",\n ],\n // Misc.\n [\n LangErrorCode.Deprecated,\n \"The API being used is deprecated and should no longer be used\",\n ],\n]);\n//# sourceMappingURL=error.js.map","import camelCase from \"camelcase\";\nimport * as borsh from \"@project-serum/borsh\";\nimport { IdlError } from \"../error\";\nexport class IdlCoder {\n static fieldLayout(field, types) {\n const fieldName = field.name !== undefined ? camelCase(field.name) : undefined;\n switch (field.type) {\n case \"bool\": {\n return borsh.bool(fieldName);\n }\n case \"u8\": {\n return borsh.u8(fieldName);\n }\n case \"i8\": {\n return borsh.i8(fieldName);\n }\n case \"u16\": {\n return borsh.u16(fieldName);\n }\n case \"i16\": {\n return borsh.i16(fieldName);\n }\n case \"u32\": {\n return borsh.u32(fieldName);\n }\n case \"i32\": {\n return borsh.i32(fieldName);\n }\n case \"u64\": {\n return borsh.u64(fieldName);\n }\n case \"i64\": {\n return borsh.i64(fieldName);\n }\n case \"u128\": {\n return borsh.u128(fieldName);\n }\n case \"i128\": {\n return borsh.i128(fieldName);\n }\n case \"bytes\": {\n return borsh.vecU8(fieldName);\n }\n case \"string\": {\n return borsh.str(fieldName);\n }\n case \"publicKey\": {\n return borsh.publicKey(fieldName);\n }\n default: {\n // @ts-ignore\n if (field.type.vec) {\n return borsh.vec(IdlCoder.fieldLayout({\n name: undefined,\n // @ts-ignore\n type: field.type.vec,\n }, types), fieldName);\n // @ts-ignore\n }\n else if (field.type.option) {\n return borsh.option(IdlCoder.fieldLayout({\n name: undefined,\n // @ts-ignore\n type: field.type.option,\n }, types), fieldName);\n // @ts-ignore\n }\n else if (field.type.defined) {\n // User defined type.\n if (types === undefined) {\n throw new IdlError(\"User defined types not provided\");\n }\n // @ts-ignore\n const filtered = types.filter((t) => t.name === field.type.defined);\n if (filtered.length !== 1) {\n throw new IdlError(`Type not found: ${JSON.stringify(field)}`);\n }\n return IdlCoder.typeDefLayout(filtered[0], types, fieldName);\n // @ts-ignore\n }\n else if (field.type.array) {\n // @ts-ignore\n let arrayTy = field.type.array[0];\n // @ts-ignore\n let arrayLen = field.type.array[1];\n let innerLayout = IdlCoder.fieldLayout({\n name: undefined,\n type: arrayTy,\n }, types);\n return borsh.array(innerLayout, arrayLen, fieldName);\n }\n else {\n throw new Error(`Not yet implemented: ${field}`);\n }\n }\n }\n }\n static typeDefLayout(typeDef, types, name) {\n if (typeDef.type.kind === \"struct\") {\n const fieldLayouts = typeDef.type.fields.map((field) => {\n const x = IdlCoder.fieldLayout(field, types);\n return x;\n });\n return borsh.struct(fieldLayouts, name);\n }\n else if (typeDef.type.kind === \"enum\") {\n let variants = typeDef.type.variants.map((variant) => {\n const name = camelCase(variant.name);\n if (variant.fields === undefined) {\n return borsh.struct([], name);\n }\n // @ts-ignore\n const fieldLayouts = variant.fields.map((f) => {\n // @ts-ignore\n if (f.name === undefined) {\n throw new Error(\"Tuple enum variants not yet implemented.\");\n }\n // @ts-ignore\n return IdlCoder.fieldLayout(f, types);\n });\n return borsh.struct(fieldLayouts, name);\n });\n if (name !== undefined) {\n // Buffer-layout lib requires the name to be null (on construction)\n // when used as a field.\n return borsh.rustEnum(variants).replicate(name);\n }\n return borsh.rustEnum(variants, name);\n }\n else {\n throw new Error(`Unknown type kint: ${typeDef}`);\n }\n }\n}\n//# sourceMappingURL=idl.js.map","import { snakeCase } from \"snake-case\";\nimport { sha256 } from \"js-sha256\";\nimport { IdlError } from \"../error\";\nexport function accountSize(idl, idlAccount) {\n if (idlAccount.type.kind === \"enum\") {\n let variantSizes = idlAccount.type.variants.map((variant) => {\n if (variant.fields === undefined) {\n return 0;\n }\n return (variant.fields\n // @ts-ignore\n .map((f) => {\n // @ts-ignore\n if (f.name === undefined) {\n throw new Error(\"Tuple enum variants not yet implemented.\");\n }\n // @ts-ignore\n return typeSize(idl, f.type);\n })\n .reduce((a, b) => a + b));\n });\n return Math.max(...variantSizes) + 1;\n }\n if (idlAccount.type.fields === undefined) {\n return 0;\n }\n return idlAccount.type.fields\n .map((f) => typeSize(idl, f.type))\n .reduce((a, b) => a + b);\n}\n// Returns the size of the type in bytes. For variable length types, just return\n// 1. Users should override this value in such cases.\nfunction typeSize(idl, ty) {\n switch (ty) {\n case \"bool\":\n return 1;\n case \"u8\":\n return 1;\n case \"i8\":\n return 1;\n case \"i16\":\n return 2;\n case \"u16\":\n return 2;\n case \"u32\":\n return 4;\n case \"i32\":\n return 4;\n case \"u64\":\n return 8;\n case \"i64\":\n return 8;\n case \"u128\":\n return 16;\n case \"i128\":\n return 16;\n case \"bytes\":\n return 1;\n case \"string\":\n return 1;\n case \"publicKey\":\n return 32;\n default:\n // @ts-ignore\n if (ty.vec !== undefined) {\n return 1;\n }\n // @ts-ignore\n if (ty.option !== undefined) {\n // @ts-ignore\n return 1 + typeSize(idl, ty.option);\n }\n // @ts-ignore\n if (ty.defined !== undefined) {\n // @ts-ignore\n const filtered = idl.types.filter((t) => t.name === ty.defined);\n if (filtered.length !== 1) {\n throw new IdlError(`Type not found: ${JSON.stringify(ty)}`);\n }\n let typeDef = filtered[0];\n return accountSize(idl, typeDef);\n }\n // @ts-ignore\n if (ty.array !== undefined) {\n // @ts-ignore\n let arrayTy = ty.array[0];\n // @ts-ignore\n let arraySize = ty.array[1];\n // @ts-ignore\n return typeSize(idl, arrayTy) * arraySize;\n }\n throw new Error(`Invalid type ${JSON.stringify(ty)}`);\n }\n}\n// Not technically sighash, since we don't include the arguments, as Rust\n// doesn't allow function overloading.\nexport function sighash(nameSpace, ixName) {\n let name = snakeCase(ixName);\n let preimage = `${nameSpace}:${name}`;\n return Buffer.from(sha256.digest(preimage)).slice(0, 8);\n}\n//# sourceMappingURL=common.js.map","import camelCase from \"camelcase\";\nimport * as borsh from \"@project-serum/borsh\";\nimport * as bs58 from \"bs58\";\nimport { IdlCoder } from \"./idl\";\nimport { sighash } from \"./common\";\n/**\n * Namespace for state method function signatures.\n */\nexport const SIGHASH_STATE_NAMESPACE = \"state\";\n/**\n * Namespace for global instruction function signatures (i.e. functions\n * that aren't namespaced by the state or any of its trait implementations).\n */\nexport const SIGHASH_GLOBAL_NAMESPACE = \"global\";\n/**\n * Encodes and decodes program instructions.\n */\nexport class InstructionCoder {\n constructor(idl) {\n this.idl = idl;\n this.ixLayout = InstructionCoder.parseIxLayout(idl);\n const sighashLayouts = new Map();\n idl.instructions.forEach((ix) => {\n const sh = sighash(SIGHASH_GLOBAL_NAMESPACE, ix.name);\n sighashLayouts.set(bs58.encode(sh), {\n layout: this.ixLayout.get(ix.name),\n name: ix.name,\n });\n });\n if (idl.state) {\n idl.state.methods.map((ix) => {\n const sh = sighash(SIGHASH_STATE_NAMESPACE, ix.name);\n sighashLayouts.set(bs58.encode(sh), {\n layout: this.ixLayout.get(ix.name),\n name: ix.name,\n });\n });\n }\n this.sighashLayouts = sighashLayouts;\n }\n /**\n * Encodes a program instruction.\n */\n encode(ixName, ix) {\n return this._encode(SIGHASH_GLOBAL_NAMESPACE, ixName, ix);\n }\n /**\n * Encodes a program state instruction.\n */\n encodeState(ixName, ix) {\n return this._encode(SIGHASH_STATE_NAMESPACE, ixName, ix);\n }\n _encode(nameSpace, ixName, ix) {\n const buffer = Buffer.alloc(1000); // TODO: use a tighter buffer.\n const methodName = camelCase(ixName);\n const len = this.ixLayout.get(methodName).encode(ix, buffer);\n const data = buffer.slice(0, len);\n return Buffer.concat([sighash(nameSpace, ixName), data]);\n }\n static parseIxLayout(idl) {\n const stateMethods = idl.state ? idl.state.methods : [];\n const ixLayouts = stateMethods\n .map((m) => {\n let fieldLayouts = m.args.map((arg) => {\n return IdlCoder.fieldLayout(arg, idl.types);\n });\n const name = camelCase(m.name);\n return [name, borsh.struct(fieldLayouts, name)];\n })\n .concat(idl.instructions.map((ix) => {\n let fieldLayouts = ix.args.map((arg) => IdlCoder.fieldLayout(arg, idl.types));\n const name = camelCase(ix.name);\n return [name, borsh.struct(fieldLayouts, name)];\n }));\n // @ts-ignore\n return new Map(ixLayouts);\n }\n /**\n * Dewcodes a program instruction.\n */\n decode(ix) {\n if (typeof ix === \"string\") {\n ix = bs58.decode(ix);\n }\n let sighash = bs58.encode(ix.slice(0, 8));\n let data = ix.slice(8);\n const decoder = this.sighashLayouts.get(sighash);\n if (!decoder) {\n return null;\n }\n return {\n data: decoder.layout.decode(data),\n name: decoder.name,\n };\n }\n /**\n * Returns a formatted table of all the fields in the given instruction data.\n */\n format(ix, accountMetas) {\n return InstructionFormatter.format(ix, accountMetas, this.idl);\n }\n}\nclass InstructionFormatter {\n static format(ix, accountMetas, idl) {\n const idlIx = idl.instructions.filter((i) => ix.name === i.name)[0];\n if (idlIx === undefined) {\n console.error(\"Invalid instruction given\");\n return null;\n }\n const args = idlIx.args.map((idlField) => {\n return {\n name: idlField.name,\n type: InstructionFormatter.formatIdlType(idlField.type),\n data: InstructionFormatter.formatIdlData(idlField, ix.data[idlField.name], idl.types),\n };\n });\n const flatIdlAccounts = InstructionFormatter.flattenIdlAccounts(idlIx.accounts);\n const accounts = accountMetas.map((meta, idx) => {\n if (idx < flatIdlAccounts.length) {\n return {\n name: flatIdlAccounts[idx].name,\n ...meta,\n };\n }\n // \"Remaining accounts\" are unnamed in Anchor.\n else {\n return {\n name: undefined,\n ...meta,\n };\n }\n });\n return {\n args,\n accounts,\n };\n }\n static formatIdlType(idlType) {\n if (typeof idlType === \"string\") {\n return idlType;\n }\n // @ts-ignore\n if (idlType.vec) {\n // @ts-ignore\n return `Vec<${this.formatIdlType(idlType.vec)}>`;\n }\n // @ts-ignore\n if (idlType.option) {\n // @ts-ignore\n return `Option<${this.formatIdlType(idlType.option)}>`;\n }\n // @ts-ignore\n if (idlType.defined) {\n // @ts-ignore\n return idlType.defined;\n }\n }\n static formatIdlData(idlField, data, types) {\n if (typeof idlField.type === \"string\") {\n return data.toString();\n }\n // @ts-ignore\n if (idlField.type.vec) {\n // @ts-ignore\n return (\"[\" +\n data\n // @ts-ignore\n .map((d) => this.formatIdlData(\n // @ts-ignore\n { name: \"\", type: idlField.type.vec }, d))\n .join(\", \") +\n \"]\");\n }\n // @ts-ignore\n if (idlField.type.option) {\n // @ts-ignore\n return data === null\n ? \"null\"\n : this.formatIdlData(\n // @ts-ignore\n { name: \"\", type: idlField.type.option }, data);\n }\n // @ts-ignore\n if (idlField.type.defined) {\n if (types === undefined) {\n throw new Error(\"User defined types not provided\");\n }\n // @ts-ignore\n const filtered = types.filter((t) => t.name === idlField.type.defined);\n if (filtered.length !== 1) {\n // @ts-ignore\n throw new Error(`Type not found: ${idlField.type.defined}`);\n }\n return InstructionFormatter.formatIdlDataDefined(filtered[0], data, types);\n }\n return \"unknown\";\n }\n static formatIdlDataDefined(typeDef, data, types) {\n if (typeDef.type.kind === \"struct\") {\n const fields = Object.keys(data)\n .map((k) => {\n const f = typeDef.type.fields.filter((f) => f.name === k)[0];\n if (f === undefined) {\n throw new Error(\"Unable to find type\");\n }\n return (k + \": \" + InstructionFormatter.formatIdlData(f, data[k], types));\n })\n .join(\", \");\n return \"{ \" + fields + \" }\";\n }\n else {\n if (typeDef.type.variants.length === 0) {\n return \"{}\";\n }\n // Struct enum.\n if (typeDef.type.variants[0].name) {\n const variant = Object.keys(data)[0];\n const enumType = data[variant];\n const namedFields = Object.keys(enumType)\n .map((f) => {\n var _a;\n const fieldData = enumType[f];\n const idlField = (_a = typeDef.type.variants[variant]) === null || _a === void 0 ? void 0 : _a.filter((v) => v.name === f)[0];\n if (idlField === undefined) {\n throw new Error(\"Unable to find variant\");\n }\n return (f +\n \": \" +\n InstructionFormatter.formatIdlData(idlField, fieldData, types));\n })\n .join(\", \");\n const variantName = camelCase(variant, { pascalCase: true });\n if (namedFields.length === 0) {\n return variantName;\n }\n return `${variantName} { ${namedFields} }`;\n }\n // Tuple enum.\n else {\n // TODO.\n return \"Tuple formatting not yet implemented\";\n }\n }\n }\n static flattenIdlAccounts(accounts, prefix) {\n // @ts-ignore\n return accounts\n .map((account) => {\n const accName = sentenceCase(account.name);\n // @ts-ignore\n if (account.accounts) {\n const newPrefix = prefix ? `${prefix} > ${accName}` : accName;\n // @ts-ignore\n return InstructionFormatter.flattenIdlAccounts(\n // @ts-ignore\n account.accounts, newPrefix);\n }\n else {\n return {\n ...account,\n name: prefix ? `${prefix} > ${accName}` : accName,\n };\n }\n })\n .flat();\n }\n}\nfunction sentenceCase(field) {\n const result = field.replace(/([A-Z])/g, \" $1\");\n return result.charAt(0).toUpperCase() + result.slice(1);\n}\n//# sourceMappingURL=instruction.js.map","import { IdlCoder } from \"./idl\";\nimport { sha256 } from \"js-sha256\";\n/**\n * Number of bytes of the account discriminator.\n */\nexport const ACCOUNT_DISCRIMINATOR_SIZE = 8;\n/**\n * Encodes and decodes account objects.\n */\nexport class AccountsCoder {\n constructor(idl) {\n if (idl.accounts === undefined) {\n this.accountLayouts = new Map();\n return;\n }\n const layouts = idl.accounts.map((acc) => {\n return [acc.name, IdlCoder.typeDefLayout(acc, idl.types)];\n });\n this.accountLayouts = new Map(layouts);\n }\n async encode(accountName, account) {\n const buffer = Buffer.alloc(1000); // TODO: use a tighter buffer.\n const layout = this.accountLayouts.get(accountName);\n const len = layout.encode(account, buffer);\n let accountData = buffer.slice(0, len);\n let discriminator = await accountDiscriminator(accountName);\n return Buffer.concat([discriminator, accountData]);\n }\n decode(accountName, ix) {\n // Chop off the discriminator before decoding.\n const data = ix.slice(8);\n const layout = this.accountLayouts.get(accountName);\n return layout.decode(data);\n }\n}\n// Calculates unique 8 byte discriminator prepended to all anchor accounts.\nexport async function accountDiscriminator(name) {\n return Buffer.from(sha256.digest(`account:${name}`)).slice(0, 8);\n}\n//# sourceMappingURL=accounts.js.map","import { IdlCoder } from \"./idl\";\n/**\n * Encodes and decodes user defined types.\n */\nexport class TypesCoder {\n constructor(idl) {\n if (idl.types === undefined) {\n this.layouts = new Map();\n return;\n }\n const layouts = idl.types.map((acc) => {\n return [acc.name, IdlCoder.typeDefLayout(acc, idl.types)];\n });\n // @ts-ignore\n this.layouts = new Map(layouts);\n }\n encode(accountName, account) {\n const buffer = Buffer.alloc(1000); // TODO: use a tighter buffer.\n const layout = this.layouts.get(accountName);\n const len = layout.encode(account, buffer);\n return buffer.slice(0, len);\n }\n decode(accountName, ix) {\n const layout = this.layouts.get(accountName);\n return layout.decode(ix);\n }\n}\n//# sourceMappingURL=types.js.map","import * as base64 from \"base64-js\";\nimport { sha256 } from \"js-sha256\";\nimport { IdlCoder } from \"./idl\";\nexport class EventCoder {\n constructor(idl) {\n if (idl.events === undefined) {\n this.layouts = new Map();\n return;\n }\n const layouts = idl.events.map((event) => {\n let eventTypeDef = {\n name: event.name,\n type: {\n kind: \"struct\",\n fields: event.fields.map((f) => {\n return { name: f.name, type: f.type };\n }),\n },\n };\n return [event.name, IdlCoder.typeDefLayout(eventTypeDef, idl.types)];\n });\n // @ts-ignore\n this.layouts = new Map(layouts);\n this.discriminators = new Map(idl.events === undefined\n ? []\n : idl.events.map((e) => [\n base64.fromByteArray(eventDiscriminator(e.name)),\n e.name,\n ]));\n }\n decode(log) {\n let logArr;\n // This will throw if log length is not a multiple of 4.\n try {\n logArr = Buffer.from(base64.toByteArray(log));\n }\n catch (e) {\n return null;\n }\n const disc = base64.fromByteArray(logArr.slice(0, 8));\n // Only deserialize if the discriminator implies a proper event.\n const eventName = this.discriminators.get(disc);\n if (eventName === undefined) {\n return null;\n }\n const layout = this.layouts.get(eventName);\n const data = layout.decode(logArr.slice(8));\n return { data, name: eventName };\n }\n}\nexport function eventDiscriminator(name) {\n return Buffer.from(sha256.digest(`event:${name}`)).slice(0, 8);\n}\n//# sourceMappingURL=event.js.map","const _AVAILABLE_FEATURES = new Set([\"anchor-deprecated-state\"]);\nconst _FEATURES = new Map();\nexport function set(key) {\n if (!_AVAILABLE_FEATURES.has(key)) {\n throw new Error(\"Invalid feature\");\n }\n _FEATURES.set(key, true);\n}\nexport function isSet(key) {\n return _FEATURES.get(key) !== undefined;\n}\n//# sourceMappingURL=features.js.map","import { sha256 } from \"js-sha256\";\nimport { IdlCoder } from \"./idl\";\nimport * as features from \"../utils/features\";\nexport class StateCoder {\n constructor(idl) {\n if (idl.state === undefined) {\n throw new Error(\"Idl state not defined.\");\n }\n this.layout = IdlCoder.typeDefLayout(idl.state.struct, idl.types);\n }\n async encode(name, account) {\n const buffer = Buffer.alloc(1000); // TODO: use a tighter buffer.\n const len = this.layout.encode(account, buffer);\n const disc = await stateDiscriminator(name);\n const accData = buffer.slice(0, len);\n return Buffer.concat([disc, accData]);\n }\n decode(ix) {\n // Chop off discriminator.\n const data = ix.slice(8);\n return this.layout.decode(data);\n }\n}\n// Calculates unique 8 byte discriminator prepended to all anchor state accounts.\nexport async function stateDiscriminator(name) {\n let ns = features.isSet(\"anchor-deprecated-state\") ? \"account\" : \"state\";\n return Buffer.from(sha256.digest(`${ns}:${name}`)).slice(0, 8);\n}\n//# sourceMappingURL=state.js.map","import { InstructionCoder } from \"./instruction\";\nimport { AccountsCoder } from \"./accounts\";\nimport { TypesCoder } from \"./types\";\nimport { EventCoder } from \"./event\";\nimport { StateCoder } from \"./state\";\nimport { sighash } from \"./common\";\nexport { accountSize } from \"./common\";\nexport { TypesCoder } from \"./types\";\nexport { InstructionCoder } from \"./instruction\";\nexport { AccountsCoder, accountDiscriminator, ACCOUNT_DISCRIMINATOR_SIZE, } from \"./accounts\";\nexport { EventCoder, eventDiscriminator } from \"./event\";\nexport { StateCoder, stateDiscriminator } from \"./state\";\n/**\n * Coder provides a facade for encoding and decoding all IDL related objects.\n */\nexport default class Coder {\n constructor(idl) {\n this.instruction = new InstructionCoder(idl);\n this.accounts = new AccountsCoder(idl);\n this.types = new TypesCoder(idl);\n this.events = new EventCoder(idl);\n if (idl.state) {\n this.state = new StateCoder(idl);\n }\n }\n sighash(nameSpace, ixName) {\n return sighash(nameSpace, ixName);\n }\n}\n//# sourceMappingURL=index.js.map","import { PublicKey } from \"@solana/web3.js\";\nimport * as borsh from \"@project-serum/borsh\";\n// Deterministic IDL address as a function of the program id.\nexport async function idlAddress(programId) {\n const base = (await PublicKey.findProgramAddress([], programId))[0];\n return await PublicKey.createWithSeed(base, seed(), programId);\n}\n// Seed for generating the idlAddress.\nexport function seed() {\n return \"anchor:idl\";\n}\nconst IDL_ACCOUNT_LAYOUT = borsh.struct([\n borsh.publicKey(\"authority\"),\n borsh.vecU8(\"data\"),\n]);\nexport function decodeIdlAccount(data) {\n return IDL_ACCOUNT_LAYOUT.decode(data);\n}\nexport function encodeIdlAccount(acc) {\n const buffer = Buffer.alloc(1000); // TODO: use a tighter buffer.\n const len = IDL_ACCOUNT_LAYOUT.encode(acc, buffer);\n return buffer.slice(0, len);\n}\n//# sourceMappingURL=idl.js.map","import { PublicKey } from \"@solana/web3.js\";\nexport function parseIdlErrors(idl) {\n const errors = new Map();\n if (idl.errors) {\n idl.errors.forEach((e) => {\n var _a;\n let msg = (_a = e.msg) !== null && _a !== void 0 ? _a : e.name;\n errors.set(e.code, msg);\n });\n }\n return errors;\n}\n// Allow either IdLInstruction or IdlStateMethod since the types share fields.\nexport function toInstruction(idlIx, ...args) {\n if (idlIx.args.length != args.length) {\n throw new Error(\"Invalid argument length\");\n }\n const ix = {};\n let idx = 0;\n idlIx.args.forEach((ixArg) => {\n ix[ixArg.name] = args[idx];\n idx += 1;\n });\n return ix;\n}\n// Throws error if any account required for the `ix` is not given.\nexport function validateAccounts(ixAccounts, accounts) {\n ixAccounts.forEach((acc) => {\n // @ts-ignore\n if (acc.accounts !== undefined) {\n // @ts-ignore\n validateAccounts(acc.accounts, accounts[acc.name]);\n }\n else {\n if (accounts[acc.name] === undefined) {\n throw new Error(`Invalid arguments: ${acc.name} not provided.`);\n }\n }\n });\n}\n// Translates an address to a Pubkey.\nexport function translateAddress(address) {\n if (typeof address === \"string\") {\n const pk = new PublicKey(address);\n return pk;\n }\n else {\n return address;\n }\n}\n//# sourceMappingURL=common.js.map","import BN from \"bn.js\";\nimport { sha256 as sha256Sync } from \"js-sha256\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport { translateAddress } from \"../program/common\";\n// Sync version of web3.PublicKey.createWithSeed.\nexport function createWithSeedSync(fromPublicKey, seed, programId) {\n const buffer = Buffer.concat([\n fromPublicKey.toBuffer(),\n Buffer.from(seed),\n programId.toBuffer(),\n ]);\n const hash = sha256Sync.digest(buffer);\n return new PublicKey(Buffer.from(hash));\n}\n// Sync version of web3.PublicKey.createProgramAddress.\nexport function createProgramAddressSync(seeds, programId) {\n const MAX_SEED_LENGTH = 32;\n let buffer = Buffer.alloc(0);\n seeds.forEach(function (seed) {\n if (seed.length > MAX_SEED_LENGTH) {\n throw new TypeError(`Max seed length exceeded`);\n }\n buffer = Buffer.concat([buffer, toBuffer(seed)]);\n });\n buffer = Buffer.concat([\n buffer,\n programId.toBuffer(),\n Buffer.from(\"ProgramDerivedAddress\"),\n ]);\n let hash = sha256Sync(new Uint8Array(buffer));\n let publicKeyBytes = new BN(hash, 16).toArray(undefined, 32);\n if (PublicKey.isOnCurve(new Uint8Array(publicKeyBytes))) {\n throw new Error(`Invalid seeds, address must fall off the curve`);\n }\n return new PublicKey(publicKeyBytes);\n}\n// Sync version of web3.PublicKey.findProgramAddress.\nexport function findProgramAddressSync(seeds, programId) {\n let nonce = 255;\n let address;\n while (nonce != 0) {\n try {\n const seedsWithNonce = seeds.concat(Buffer.from([nonce]));\n address = createProgramAddressSync(seedsWithNonce, programId);\n }\n catch (err) {\n if (err instanceof TypeError) {\n throw err;\n }\n nonce--;\n continue;\n }\n return [address, nonce];\n }\n throw new Error(`Unable to find a viable program address nonce`);\n}\nconst toBuffer = (arr) => {\n if (arr instanceof Buffer) {\n return arr;\n }\n else if (arr instanceof Uint8Array) {\n return Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength);\n }\n else {\n return Buffer.from(arr);\n }\n};\nexport async function associated(programId, ...args) {\n let seeds = [Buffer.from([97, 110, 99, 104, 111, 114])]; // b\"anchor\".\n args.forEach((arg) => {\n seeds.push(\n // @ts-ignore\n arg.buffer !== undefined ? arg : translateAddress(arg).toBuffer());\n });\n const [assoc] = await PublicKey.findProgramAddress(seeds, translateAddress(programId));\n return assoc;\n}\n//# sourceMappingURL=pubkey.js.map","export function splitArgsAndCtx(idlIx, args) {\n let options = {};\n const inputLen = idlIx.args ? idlIx.args.length : 0;\n if (args.length > inputLen) {\n if (args.length !== inputLen + 1) {\n throw new Error(\"provided too many arguments ${args}\");\n }\n options = args.pop();\n }\n return [args, options];\n}\n//# sourceMappingURL=context.js.map","import { TransactionInstruction } from \"@solana/web3.js\";\nimport { IdlError } from \"../../error\";\nimport { toInstruction, validateAccounts, translateAddress, } from \"../common\";\nimport { splitArgsAndCtx } from \"../context\";\nexport default class InstructionNamespaceFactory {\n static build(idlIx, encodeFn, programId) {\n if (idlIx.name === \"_inner\") {\n throw new IdlError(\"the _inner name is reserved\");\n }\n const ix = (...args) => {\n const [ixArgs, ctx] = splitArgsAndCtx(idlIx, [...args]);\n validateAccounts(idlIx.accounts, ctx.accounts);\n validateInstruction(idlIx, ...args);\n const keys = ix.accounts(ctx.accounts);\n if (ctx.remainingAccounts !== undefined) {\n keys.push(...ctx.remainingAccounts);\n }\n if (ctx.__private && ctx.__private.logAccounts) {\n console.log(\"Outgoing account metas:\", keys);\n }\n return new TransactionInstruction({\n keys,\n programId,\n data: encodeFn(idlIx.name, toInstruction(idlIx, ...ixArgs)),\n });\n };\n // Utility fn for ordering the accounts for this instruction.\n ix[\"accounts\"] = (accs) => {\n return InstructionNamespaceFactory.accountsArray(accs, idlIx.accounts);\n };\n return ix;\n }\n static accountsArray(ctx, accounts) {\n return accounts\n .map((acc) => {\n // Nested accounts.\n // @ts-ignore\n const nestedAccounts = acc.accounts;\n if (nestedAccounts !== undefined) {\n const rpcAccs = ctx[acc.name];\n return InstructionNamespaceFactory.accountsArray(rpcAccs, nestedAccounts).flat();\n }\n else {\n const account = acc;\n return {\n pubkey: translateAddress(ctx[acc.name]),\n isWritable: account.isMut,\n isSigner: account.isSigner,\n };\n }\n })\n .flat();\n }\n}\n// Throws error if any argument required for the `ix` is not given.\nfunction validateInstruction(ix, ...args) {\n // todo\n}\n//# sourceMappingURL=instruction.js.map","import { splitArgsAndCtx } from \"../context\";\nimport { ProgramError } from \"../../error\";\nexport default class RpcFactory {\n static build(idlIx, txFn, idlErrors, provider) {\n const rpc = async (...args) => {\n const tx = txFn(...args);\n const [, ctx] = splitArgsAndCtx(idlIx, [...args]);\n try {\n const txSig = await provider.send(tx, ctx.signers, ctx.options);\n return txSig;\n }\n catch (err) {\n console.log(\"Translating error\", err);\n let translatedErr = ProgramError.parse(err, idlErrors);\n if (translatedErr === null) {\n throw err;\n }\n throw translatedErr;\n }\n };\n return rpc;\n }\n}\n//# sourceMappingURL=rpc.js.map","import { Transaction } from \"@solana/web3.js\";\nimport { splitArgsAndCtx } from \"../context\";\nexport default class TransactionFactory {\n static build(idlIx, ixFn) {\n const txFn = (...args) => {\n const [, ctx] = splitArgsAndCtx(idlIx, [...args]);\n const tx = new Transaction();\n if (ctx.instructions !== undefined) {\n tx.add(...ctx.instructions);\n }\n tx.add(ixFn(...args));\n return tx;\n };\n return txFn;\n }\n}\n//# sourceMappingURL=transaction.js.map","import EventEmitter from \"eventemitter3\";\nimport camelCase from \"camelcase\";\nimport { SystemProgram, SYSVAR_RENT_PUBKEY, } from \"@solana/web3.js\";\nimport Coder, { stateDiscriminator } from \"../../coder\";\nimport { getProvider } from \"../../\";\nimport { validateAccounts, parseIdlErrors } from \"../common\";\nimport { findProgramAddressSync, createWithSeedSync } from \"../../utils/pubkey\";\nimport InstructionNamespaceFactory from \"./instruction\";\nimport RpcNamespaceFactory from \"./rpc\";\nimport TransactionNamespaceFactory from \"./transaction\";\nexport default class StateFactory {\n static build(idl, coder, programId, provider) {\n if (idl.state === undefined) {\n return undefined;\n }\n return new StateClient(idl, programId, provider, coder);\n }\n}\n/**\n * A client for the program state. Similar to the base [[Program]] client,\n * one can use this to send transactions and read accounts for the state\n * abstraction.\n */\nexport class StateClient {\n constructor(idl, programId, provider, coder) {\n this._idl = idl;\n this._programId = programId;\n this._address = programStateAddress(programId);\n this._provider = provider !== null && provider !== void 0 ? provider : getProvider();\n this._coder = coder !== null && coder !== void 0 ? coder : new Coder(idl);\n this._sub = null;\n // Build namespaces.\n const [instruction, transaction, rpc] = (() => {\n let instruction = {};\n let transaction = {};\n let rpc = {};\n idl.state.methods.forEach((m) => {\n // Build instruction method.\n const ixItem = InstructionNamespaceFactory.build(m, (ixName, ix) => coder.instruction.encodeState(ixName, ix), programId);\n ixItem[\"accounts\"] = (accounts) => {\n const keys = stateInstructionKeys(programId, provider, m, accounts);\n return keys.concat(InstructionNamespaceFactory.accountsArray(accounts, m.accounts));\n };\n // Build transaction method.\n const txItem = TransactionNamespaceFactory.build(m, ixItem);\n // Build RPC method.\n const rpcItem = RpcNamespaceFactory.build(m, txItem, parseIdlErrors(idl), provider);\n // Attach them all to their respective namespaces.\n const name = camelCase(m.name);\n instruction[name] = ixItem;\n transaction[name] = txItem;\n rpc[name] = rpcItem;\n });\n return [instruction, transaction, rpc];\n })();\n this.instruction = instruction;\n this.transaction = transaction;\n this.rpc = rpc;\n }\n /**\n * Returns the program ID owning the state.\n */\n get programId() {\n return this._programId;\n }\n /**\n * Returns the client's wallet and network provider.\n */\n get provider() {\n return this._provider;\n }\n /**\n * Returns the coder.\n */\n get coder() {\n return this._coder;\n }\n /**\n * Returns the deserialized state account.\n */\n async fetch() {\n const addr = this.address();\n const accountInfo = await this.provider.connection.getAccountInfo(addr);\n if (accountInfo === null) {\n throw new Error(`Account does not exist ${addr.toString()}`);\n }\n // Assert the account discriminator is correct.\n const expectedDiscriminator = await stateDiscriminator(this._idl.state.struct.name);\n if (expectedDiscriminator.compare(accountInfo.data.slice(0, 8))) {\n throw new Error(\"Invalid account discriminator\");\n }\n return this.coder.state.decode(accountInfo.data);\n }\n /**\n * Returns the state address.\n */\n address() {\n return this._address;\n }\n /**\n * Returns an `EventEmitter` with a `\"change\"` event that's fired whenever\n * the state account cahnges.\n */\n subscribe(commitment) {\n if (this._sub !== null) {\n return this._sub.ee;\n }\n const ee = new EventEmitter();\n const listener = this.provider.connection.onAccountChange(this.address(), (acc) => {\n const account = this.coder.state.decode(acc.data);\n ee.emit(\"change\", account);\n }, commitment);\n this._sub = {\n ee,\n listener,\n };\n return ee;\n }\n /**\n * Unsubscribes to state changes.\n */\n unsubscribe() {\n if (this._sub !== null) {\n this.provider.connection\n .removeAccountChangeListener(this._sub.listener)\n .then(async () => {\n this._sub = null;\n })\n .catch(console.error);\n }\n }\n}\n// Calculates the deterministic address of the program's \"state\" account.\nfunction programStateAddress(programId) {\n let [registrySigner] = findProgramAddressSync([], programId);\n return createWithSeedSync(registrySigner, \"unversioned\", programId);\n}\n// Returns the common keys that are prepended to all instructions targeting\n// the \"state\" of a program.\nfunction stateInstructionKeys(programId, provider, m, accounts) {\n if (m.name === \"new\") {\n // Ctor `new` method.\n const [programSigner] = findProgramAddressSync([], programId);\n return [\n {\n pubkey: provider.wallet.publicKey,\n isWritable: false,\n isSigner: true,\n },\n {\n pubkey: programStateAddress(programId),\n isWritable: true,\n isSigner: false,\n },\n { pubkey: programSigner, isWritable: false, isSigner: false },\n {\n pubkey: SystemProgram.programId,\n isWritable: false,\n isSigner: false,\n },\n { pubkey: programId, isWritable: false, isSigner: false },\n {\n pubkey: SYSVAR_RENT_PUBKEY,\n isWritable: false,\n isSigner: false,\n },\n ];\n }\n else {\n validateAccounts(m.accounts, accounts);\n return [\n {\n pubkey: programStateAddress(programId),\n isWritable: true,\n isSigner: false,\n },\n ];\n }\n}\n//# sourceMappingURL=state.js.map","import camelCase from \"camelcase\";\nimport EventEmitter from \"eventemitter3\";\nimport * as bs58 from \"bs58\";\nimport { SystemProgram, } from \"@solana/web3.js\";\nimport Coder, { ACCOUNT_DISCRIMINATOR_SIZE, accountDiscriminator, accountSize, } from \"../../coder\";\nimport { translateAddress } from \"../common\";\nimport { getProvider } from \"../../\";\nimport * as pubkeyUtil from \"../../utils/pubkey\";\nexport default class AccountFactory {\n static build(idl, coder, programId, provider) {\n const accountFns = {};\n idl.accounts.forEach((idlAccount) => {\n const name = camelCase(idlAccount.name);\n accountFns[name] = new AccountClient(idl, idlAccount, programId, provider, coder);\n });\n return accountFns;\n }\n}\nexport class AccountClient {\n constructor(idl, idlAccount, programId, provider, coder) {\n this._idlAccount = idlAccount;\n this._programId = programId;\n this._provider = provider !== null && provider !== void 0 ? provider : getProvider();\n this._coder = coder !== null && coder !== void 0 ? coder : new Coder(idl);\n this._size = ACCOUNT_DISCRIMINATOR_SIZE + accountSize(idl, idlAccount);\n }\n /**\n * Returns the number of bytes in this account.\n */\n get size() {\n return this._size;\n }\n /**\n * Returns the program ID owning all accounts.\n */\n get programId() {\n return this._programId;\n }\n /**\n * Returns the client's wallet and network provider.\n */\n get provider() {\n return this._provider;\n }\n /**\n * Returns the coder.\n */\n get coder() {\n return this._coder;\n }\n /**\n * Returns a deserialized account.\n *\n * @param address The address of the account to fetch.\n */\n async fetch(address) {\n const accountInfo = await this._provider.connection.getAccountInfo(translateAddress(address));\n if (accountInfo === null) {\n throw new Error(`Account does not exist ${address.toString()}`);\n }\n // Assert the account discriminator is correct.\n const discriminator = await accountDiscriminator(this._idlAccount.name);\n if (discriminator.compare(accountInfo.data.slice(0, 8))) {\n throw new Error(\"Invalid account discriminator\");\n }\n return this._coder.accounts.decode(this._idlAccount.name, accountInfo.data);\n }\n /**\n * Returns all instances of this account type for the program.\n */\n async all(filter) {\n let bytes = await accountDiscriminator(this._idlAccount.name);\n if (filter !== undefined) {\n bytes = Buffer.concat([bytes, filter]);\n }\n let resp = await this._provider.connection.getProgramAccounts(this._programId, {\n commitment: this._provider.connection.commitment,\n filters: [\n {\n memcmp: {\n offset: 0,\n bytes: bs58.encode(bytes),\n },\n },\n ],\n });\n return resp.map(({ pubkey, account }) => {\n return {\n publicKey: pubkey,\n account: this._coder.accounts.decode(this._idlAccount.name, account.data),\n };\n });\n }\n /**\n * Returns an `EventEmitter` emitting a \"change\" event whenever the account\n * changes.\n */\n subscribe(address, commitment) {\n if (subscriptions.get(address.toString())) {\n return subscriptions.get(address.toString()).ee;\n }\n const ee = new EventEmitter();\n address = translateAddress(address);\n const listener = this._provider.connection.onAccountChange(address, (acc) => {\n const account = this._coder.accounts.decode(this._idlAccount.name, acc.data);\n ee.emit(\"change\", account);\n }, commitment);\n subscriptions.set(address.toString(), {\n ee,\n listener,\n });\n return ee;\n }\n /**\n * Unsubscribes from the account at the given address.\n */\n unsubscribe(address) {\n let sub = subscriptions.get(address.toString());\n if (!sub) {\n console.warn(\"Address is not subscribed\");\n return;\n }\n if (subscriptions) {\n this._provider.connection\n .removeAccountChangeListener(sub.listener)\n .then(() => {\n subscriptions.delete(address.toString());\n })\n .catch(console.error);\n }\n }\n /**\n * Returns an instruction for creating this account.\n */\n async createInstruction(signer, sizeOverride) {\n const size = this.size;\n return SystemProgram.createAccount({\n fromPubkey: this._provider.wallet.publicKey,\n newAccountPubkey: signer.publicKey,\n space: sizeOverride !== null && sizeOverride !== void 0 ? sizeOverride : size,\n lamports: await this._provider.connection.getMinimumBalanceForRentExemption(sizeOverride !== null && sizeOverride !== void 0 ? sizeOverride : size),\n programId: this._programId,\n });\n }\n /**\n * Function returning the associated account. Args are keys to associate.\n * Order matters.\n */\n async associated(...args) {\n const addr = await this.associatedAddress(...args);\n return await this.fetch(addr);\n }\n /**\n * Function returning the associated address. Args are keys to associate.\n * Order matters.\n */\n async associatedAddress(...args) {\n return await pubkeyUtil.associated(this._programId, ...args);\n }\n}\n// Tracks all subscriptions.\nconst subscriptions = new Map();\n//# sourceMappingURL=account.js.map","import * as assert from \"assert\";\nconst LOG_START_INDEX = \"Program log: \".length;\nexport class EventParser {\n constructor(coder, programId) {\n this.coder = coder;\n this.programId = programId;\n }\n // Each log given, represents an array of messages emitted by\n // a single transaction, which can execute many different programs across\n // CPI boundaries. However, the subscription is only interested in the\n // events emitted by *this* program. In achieving this, we keep track of the\n // program execution context by parsing each log and looking for a CPI\n // `invoke` call. If one exists, we know a new program is executing. So we\n // push the programId onto a stack and switch the program context. This\n // allows us to track, for a given log, which program was executing during\n // its emission, thereby allowing us to know if a given log event was\n // emitted by *this* program. If it was, then we parse the raw string and\n // emit the event if the string matches the event being subscribed to.\n parseLogs(logs, callback) {\n const logScanner = new LogScanner(logs);\n const execution = new ExecutionContext(logScanner.next());\n let log = logScanner.next();\n while (log !== null) {\n let [event, newProgram, didPop] = this.handleLog(execution, log);\n if (event) {\n callback(event);\n }\n if (newProgram) {\n execution.push(newProgram);\n }\n if (didPop) {\n execution.pop();\n }\n log = logScanner.next();\n }\n }\n // Main log handler. Returns a three element array of the event, the\n // next program that was invoked for CPI, and a boolean indicating if\n // a program has completed execution (and thus should be popped off the\n // execution stack).\n handleLog(execution, log) {\n // Executing program is this program.\n if (execution.program() === this.programId.toString()) {\n return this.handleProgramLog(log);\n }\n // Executing program is not this program.\n else {\n return [null, ...this.handleSystemLog(log)];\n }\n }\n // Handles logs from *this* program.\n handleProgramLog(log) {\n // This is a `msg!` log.\n if (log.startsWith(\"Program log:\")) {\n const logStr = log.slice(LOG_START_INDEX);\n const event = this.coder.events.decode(logStr);\n return [event, null, false];\n }\n // System log.\n else {\n return [null, ...this.handleSystemLog(log)];\n }\n }\n // Handles logs when the current program being executing is *not* this.\n handleSystemLog(log) {\n // System component.\n const logStart = log.split(\":\")[0];\n // Did the program finish executing?\n if (logStart.match(/^Program (.*) success/g) !== null) {\n return [null, true];\n // Recursive call.\n }\n else if (logStart.startsWith(`Program ${this.programId.toString()} invoke`)) {\n return [this.programId.toString(), false];\n }\n // CPI call.\n else if (logStart.includes(\"invoke\")) {\n return [\"cpi\", false]; // Any string will do.\n }\n else {\n return [null, false];\n }\n }\n}\n// Stack frame execution context, allowing one to track what program is\n// executing for a given log.\nclass ExecutionContext {\n constructor(log) {\n // Assumes the first log in every transaction is an `invoke` log from the\n // runtime.\n const program = /^Program (.*) invoke.*$/g.exec(log)[1];\n this.stack = [program];\n }\n program() {\n assert.ok(this.stack.length > 0);\n return this.stack[this.stack.length - 1];\n }\n push(newProgram) {\n this.stack.push(newProgram);\n }\n pop() {\n assert.ok(this.stack.length > 0);\n this.stack.pop();\n }\n}\nclass LogScanner {\n constructor(logs) {\n this.logs = logs;\n }\n next() {\n if (this.logs.length === 0) {\n return null;\n }\n let l = this.logs[0];\n this.logs = this.logs.slice(1);\n return l;\n }\n}\n//# sourceMappingURL=event.js.map","import { splitArgsAndCtx } from \"../context\";\nimport { EventParser } from \"../event\";\nimport { ProgramError } from \"../../error\";\nexport default class SimulateFactory {\n static build(idlIx, txFn, idlErrors, provider, coder, programId, idl) {\n const simulate = async (...args) => {\n const tx = txFn(...args);\n const [, ctx] = splitArgsAndCtx(idlIx, [...args]);\n let resp = undefined;\n try {\n resp = await provider.simulate(tx, ctx.signers, ctx.options);\n }\n catch (err) {\n console.log(\"Translating error\", err);\n let translatedErr = ProgramError.parse(err, idlErrors);\n if (translatedErr === null) {\n throw err;\n }\n throw translatedErr;\n }\n if (resp === undefined) {\n throw new Error(\"Unable to simulate transaction\");\n }\n if (resp.value.err) {\n throw new Error(`Simulate error: ${resp.value.err.toString()}`);\n }\n const logs = resp.value.logs;\n if (!logs) {\n throw new Error(\"Simulated logs not found\");\n }\n const events = [];\n if (idl.events) {\n let parser = new EventParser(coder, programId);\n parser.parseLogs(logs, (event) => {\n events.push(event);\n });\n }\n return { events, raw: logs };\n };\n return simulate;\n }\n}\n//# sourceMappingURL=simulate.js.map","import camelCase from \"camelcase\";\nimport StateFactory from \"./state\";\nimport InstructionFactory from \"./instruction\";\nimport TransactionFactory from \"./transaction\";\nimport RpcFactory from \"./rpc\";\nimport AccountFactory from \"./account\";\nimport SimulateFactory from \"./simulate\";\nimport { parseIdlErrors } from \"../common\";\n// Re-exports.\nexport { StateClient } from \"./state\";\nexport { AccountClient } from \"./account\";\nexport default class NamespaceFactory {\n /**\n * Generates all namespaces for a given program.\n */\n static build(idl, coder, programId, provider) {\n const rpc = {};\n const instruction = {};\n const transaction = {};\n const simulate = {};\n const idlErrors = parseIdlErrors(idl);\n const state = StateFactory.build(idl, coder, programId, provider);\n idl.instructions.forEach((idlIx) => {\n const ixItem = InstructionFactory.build(idlIx, (ixName, ix) => coder.instruction.encode(ixName, ix), programId);\n const txItem = TransactionFactory.build(idlIx, ixItem);\n const rpcItem = RpcFactory.build(idlIx, txItem, idlErrors, provider);\n const simulateItem = SimulateFactory.build(idlIx, txItem, idlErrors, provider, coder, programId, idl);\n const name = camelCase(idlIx.name);\n instruction[name] = ixItem;\n transaction[name] = txItem;\n rpc[name] = rpcItem;\n simulate[name] = simulateItem;\n });\n const account = idl.accounts\n ? AccountFactory.build(idl, coder, programId, provider)\n : {};\n return [rpc, instruction, transaction, account, simulate, state];\n }\n}\n//# sourceMappingURL=index.js.map","export function encode(data) {\n return data.reduce((str, byte) => str + byte.toString(16).padStart(2, \"0\"), \"0x\");\n}\nexport function decode(data) {\n if (data.indexOf(\"0x\") === 0) {\n data = data.substr(2);\n }\n if (data.length % 2 === 1) {\n data = \"0\" + data;\n }\n let key = data.match(/.{2}/g);\n if (key === null) {\n return Buffer.from([]);\n }\n return Buffer.from(key.map((byte) => parseInt(byte, 16)));\n}\n//# sourceMappingURL=hex.js.map","export function decode(array) {\n const decoder = typeof TextDecoder === \"undefined\"\n ? new (require(\"util\").TextDecoder)(\"utf-8\") // Node.\n : new TextDecoder(\"utf-8\"); // Browser.\n return decoder.decode(array);\n}\nexport function encode(input) {\n const encoder = typeof TextEncoder === \"undefined\"\n ? new (require(\"util\").TextEncoder)(\"utf-8\") // Node.\n : new TextEncoder(); // Browser.\n return encoder.encode(input);\n}\n//# sourceMappingURL=utf8.js.map","import * as bs58 from \"bs58\";\nexport function encode(data) {\n return bs58.encode(data);\n}\nexport function decode(data) {\n return bs58.decode(data);\n}\n//# sourceMappingURL=bs58.js.map","import * as base64 from \"base64-js\";\nexport function encode(data) {\n return base64.fromByteArray(data);\n}\nexport function decode(data) {\n return Buffer.from(base64.toByteArray(data));\n}\n//# sourceMappingURL=base64.js.map","import { inflate } from \"pako\";\nimport { idlAddress, decodeIdlAccount } from \"../idl\";\nimport Coder from \"../coder\";\nimport NamespaceFactory from \"./namespace\";\nimport { getProvider } from \"../\";\nimport { utf8 } from \"../utils/bytes\";\nimport { EventParser } from \"./event\";\nimport { translateAddress } from \"./common\";\n/**\n * ## Program\n *\n * Program provides the IDL deserialized client representation of an Anchor\n * program.\n *\n * This API is the one stop shop for all things related to communicating with\n * on-chain programs. Among other things, one can send transactions, fetch\n * deserialized accounts, decode instruction data, subscribe to account\n * changes, and listen to events.\n *\n * In addition to field accessors and methods, the object provides a set of\n * dynamically generated properties, also known as namespaces, that\n * map one-to-one to program methods and accounts. These namespaces generally\n * can be used as follows:\n *\n * ## Usage\n *\n * ```javascript\n * program..\n * ```\n *\n * API specifics are namespace dependent. The examples used in the documentation\n * below will refer to the two counter examples found\n * [here](https://github.com/project-serum/anchor#examples).\n */\nexport class Program {\n /**\n * @param idl The interface definition.\n * @param programId The on-chain address of the program.\n * @param provider The network and wallet context to use. If not provided\n * then uses [[getProvider]].\n */\n constructor(idl, programId, provider) {\n programId = translateAddress(programId);\n // Fields.\n this._idl = idl;\n this._programId = programId;\n this._provider = provider !== null && provider !== void 0 ? provider : getProvider();\n this._coder = new Coder(idl);\n // Dynamic namespaces.\n const [rpc, instruction, transaction, account, simulate, state] = NamespaceFactory.build(idl, this._coder, programId, this._provider);\n this.rpc = rpc;\n this.instruction = instruction;\n this.transaction = transaction;\n this.account = account;\n this.simulate = simulate;\n this.state = state;\n }\n /**\n * Address of the program.\n */\n get programId() {\n return this._programId;\n }\n /**\n * IDL defining the program's interface.\n */\n get idl() {\n return this._idl;\n }\n /**\n * Coder for serializing requests.\n */\n get coder() {\n return this._coder;\n }\n /**\n * Wallet and network provider.\n */\n get provider() {\n return this._provider;\n }\n /**\n * Generates a Program client by fetching the IDL from the network.\n *\n * In order to use this method, an IDL must have been previously initialized\n * via the anchor CLI's `anchor idl init` command.\n *\n * @param programId The on-chain address of the program.\n * @param provider The network and wallet context.\n */\n static async at(address, provider) {\n const programId = translateAddress(address);\n const idl = await Program.fetchIdl(programId, provider);\n return new Program(idl, programId, provider);\n }\n /**\n * Fetches an idl from the blockchain.\n *\n * In order to use this method, an IDL must have been previously initialized\n * via the anchor CLI's `anchor idl init` command.\n *\n * @param programId The on-chain address of the program.\n * @param provider The network and wallet context.\n */\n static async fetchIdl(address, provider) {\n provider = provider !== null && provider !== void 0 ? provider : getProvider();\n const programId = translateAddress(address);\n const idlAddr = await idlAddress(programId);\n const accountInfo = await provider.connection.getAccountInfo(idlAddr);\n // Chop off account discriminator.\n let idlAccount = decodeIdlAccount(accountInfo.data.slice(8));\n const inflatedIdl = inflate(idlAccount.data);\n return JSON.parse(utf8.decode(inflatedIdl));\n }\n /**\n * Invokes the given callback every time the given event is emitted.\n *\n * @param eventName The PascalCase name of the event, provided by the IDL.\n * @param callback The function to invoke whenever the event is emitted from\n * program logs.\n */\n addEventListener(eventName, callback) {\n const eventParser = new EventParser(this._coder, this._programId);\n return this._provider.connection.onLogs(this._programId, (logs, ctx) => {\n if (logs.err) {\n console.error(logs);\n return;\n }\n eventParser.parseLogs(logs.logs, (event) => {\n if (event.name === eventName) {\n callback(event.data, ctx.slot);\n }\n });\n });\n }\n /**\n * Unsubscribes from the given event listener.\n */\n async removeEventListener(listener) {\n return this._provider.connection.removeOnLogsListener(listener);\n }\n}\n//# sourceMappingURL=index.js.map","import camelCase from \"camelcase\";\nimport * as toml from \"toml\";\nimport { PublicKey } from \"@solana/web3.js\";\nimport { Program } from \"./program\";\nimport { isBrowser } from \"./utils/common\";\nlet _populatedWorkspace = false;\n/**\n * The `workspace` namespace provides a convenience API to automatically\n * search for and deserialize [[Program]] objects defined by compiled IDLs\n * in an Anchor workspace.\n *\n * This API is for Node only.\n */\nconst workspace = new Proxy({}, {\n get(workspaceCache, programName) {\n if (isBrowser) {\n console.log(\"Workspaces aren't available in the browser\");\n return undefined;\n }\n const fs = require(\"fs\");\n const process = require(\"process\");\n if (!_populatedWorkspace) {\n const path = require(\"path\");\n let projectRoot = process.cwd();\n while (!fs.existsSync(path.join(projectRoot, \"Anchor.toml\"))) {\n const parentDir = path.dirname(projectRoot);\n if (parentDir === projectRoot) {\n projectRoot = undefined;\n }\n projectRoot = parentDir;\n }\n if (projectRoot === undefined) {\n throw new Error(\"Could not find workspace root.\");\n }\n const idlFolder = `${projectRoot}/target/idl`;\n if (!fs.existsSync(idlFolder)) {\n throw new Error(`${idlFolder} doesn't exist. Did you use \"anchor build\"?`);\n }\n const idlMap = new Map();\n fs.readdirSync(idlFolder).forEach(file => {\n const filePath = `${idlFolder}/${file}`;\n const idlStr = fs.readFileSync(filePath);\n const idl = JSON.parse(idlStr);\n idlMap.set(idl.name, idl);\n const name = camelCase(idl.name, { pascalCase: true });\n if (idl.metadata && idl.metadata.address) {\n workspaceCache[name] = new Program(idl, new PublicKey(idl.metadata.address));\n }\n });\n // Override the workspace programs if the user put them in the config.\n const anchorToml = toml.parse(fs.readFileSync(path.join(projectRoot, \"Anchor.toml\"), \"utf-8\"));\n const clusterId = anchorToml.provider.cluster;\n if (anchorToml.clusters && anchorToml.clusters[clusterId]) {\n attachWorkspaceOverride(workspaceCache, anchorToml.clusters[clusterId], idlMap);\n }\n _populatedWorkspace = true;\n }\n return workspaceCache[programName];\n },\n});\nfunction attachWorkspaceOverride(workspaceCache, overrideConfig, idlMap) {\n Object.keys(overrideConfig).forEach((programName) => {\n const wsProgramName = camelCase(programName, { pascalCase: true });\n const entry = overrideConfig[programName];\n const overrideAddress = new PublicKey(typeof entry === \"string\" ? entry : entry.address);\n let idl = idlMap.get(programName);\n if (typeof entry !== \"string\" && entry.idl) {\n idl = JSON.parse(require(\"fs\").readFileSync(entry.idl, \"utf-8\"));\n }\n workspaceCache[wsProgramName] = new Program(idl, overrideAddress);\n });\n}\nexport default workspace;\n//# sourceMappingURL=workspace.js.map","import { sha256 } from \"js-sha256\";\nexport function hash(data) {\n return sha256(data);\n}\n//# sourceMappingURL=sha256.js.map","import assert from \"assert\";\nimport { PublicKey, Transaction, TransactionInstruction, } from \"@solana/web3.js\";\nimport { translateAddress } from \"../program/common\";\nimport { getProvider } from \"../provider\";\n/**\n * Sends a transaction to a program with the given accounts and instruction\n * data.\n */\nexport async function invoke(programId, accounts, data, provider) {\n programId = translateAddress(programId);\n if (!provider) {\n provider = getProvider();\n }\n const tx = new Transaction();\n tx.add(new TransactionInstruction({\n programId,\n keys: accounts !== null && accounts !== void 0 ? accounts : [],\n data,\n }));\n return await provider.send(tx);\n}\nexport async function getMultipleAccounts(connection, publicKeys) {\n const args = [publicKeys.map((k) => k.toBase58()), { commitment: \"recent\" }];\n // @ts-ignore\n const res = await connection._rpcRequest(\"getMultipleAccounts\", args);\n if (res.error) {\n throw new Error(\"failed to get info about accounts \" +\n publicKeys.map((k) => k.toBase58()).join(\", \") +\n \": \" +\n res.error.message);\n }\n assert(typeof res.result !== \"undefined\");\n const accounts = [];\n for (const account of res.result.value) {\n let value = null;\n if (account === null) {\n accounts.push(null);\n continue;\n }\n if (res.result.value) {\n const { executable, owner, lamports, data } = account;\n assert(data[1] === \"base64\");\n value = {\n executable,\n owner: new PublicKey(owner),\n lamports,\n data: Buffer.from(data[0], \"base64\"),\n };\n }\n if (value === null) {\n throw new Error(\"Invalid response\");\n }\n accounts.push(value);\n }\n return accounts.map((account, idx) => {\n if (account === null) {\n return null;\n }\n return {\n publicKey: publicKeys[idx],\n account,\n };\n });\n}\n//# sourceMappingURL=rpc.js.map","import { PublicKey } from \"@solana/web3.js\";\nconst TOKEN_PROGRAM_ID = new PublicKey(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\");\nconst ASSOCIATED_PROGRAM_ID = new PublicKey(\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\");\nexport async function associatedAddress({ mint, owner, }) {\n return (await PublicKey.findProgramAddress([owner.toBuffer(), TOKEN_PROGRAM_ID.toBuffer(), mint.toBuffer()], ASSOCIATED_PROGRAM_ID))[0];\n}\n//# sourceMappingURL=token.js.map","import t from\"bn.js\";export{default as BN}from\"bn.js\";import{sendAndConfirmRawTransaction as e,PublicKey as n,Transaction as r,TransactionInstruction as o,SystemProgram as i}from\"@solana/web3.js\";import*as s from\"@solana/web3.js\";export{s as web3};import{Buffer as a}from\"buffer\";import c from\"camelcase\";import*as u from\"@project-serum/borsh\";import l from\"bs58\";import{sha256 as d}from\"js-sha256\";import*as h from\"base64-js\";import*as p from\"assert\";import f from\"assert\";import{inflate as m}from\"pako\";import g from\"eventemitter3\";class v{constructor(t,e,n){this.connection=t,this.wallet=e,this.opts=n}static defaultOptions(){return{preflightCommitment:\"processed\",commitment:\"processed\"}}static local(t,e){throw new Error(\"Provider local is not available on browser.\")}static env(){throw new Error(\"Provider env is not available on browser.\")}async send(t,n,r){void 0===n&&(n=[]),void 0===r&&(r=this.opts),t.feePayer=this.wallet.publicKey,t.recentBlockhash=(await this.connection.getRecentBlockhash(r.preflightCommitment)).blockhash,await this.wallet.signTransaction(t),n.filter((t=>void 0!==t)).forEach((e=>{t.partialSign(e)}));const o=t.serialize();return await e(this.connection,o,r)}async sendAll(t,n){void 0===n&&(n=this.opts);const r=await this.connection.getRecentBlockhash(n.preflightCommitment);let o=t.map((t=>{let e=t.tx,n=t.signers;return void 0===n&&(n=[]),e.feePayer=this.wallet.publicKey,e.recentBlockhash=r.blockhash,n.filter((t=>void 0!==t)).forEach((t=>{e.partialSign(t)})),e}));const i=await this.wallet.signAllTransactions(o),s=[];for(let t=0;tvoid 0!==t)).forEach((e=>{t.partialSign(e)})),await async function(t,e,n){e.recentBlockhash=await t._recentBlockhash(t._disableBlockhashCaching);const r=e.serializeMessage(),o=e._serialize(r).toString(\"base64\"),i=[o,{encoding:\"base64\",commitment:n}],s=await t._rpcRequest(\"simulateTransaction\",i);if(s.error)throw new Error(\"failed to simulate transaction: \"+s.error.message);return s.result}(this.connection,t,null!==(i=null!==(o=n.commitment)&&void 0!==o?o:this.opts.commitment)&&void 0!==i?i:\"processed\")}}function y(t){b=t}function w(){return null===b?v.local():b}let b=null;class _ extends Error{constructor(t){super(t),this.name=\"IdlError\"}}class A extends Error{constructor(t,e,...n){super(...n),this.code=t,this.msg=e}static parse(t,e){let n,r=t.toString().split(\"custom program error: \");if(2!==r.length)return null;try{n=parseInt(r[1])}catch(t){return null}let o=e.get(n);return void 0!==o?new A(n,o,n+\": \"+o):(o=I.get(n),void 0!==o?new A(n,o,n+\": \"+o):null)}toString(){return this.msg}}const I=new Map([[100,\"8 byte instruction identifier not provided\"],[101,\"Fallback functions are not supported\"],[102,\"The program could not deserialize the given instruction\"],[103,\"The program could not serialize the given instruction\"],[1e3,\"The program was compiled without idl instructions\"],[1001,\"The transaction was given an invalid program for the IDL instruction\"],[2e3,\"A mut constraint was violated\"],[2001,\"A has_one constraint was violated\"],[2002,\"A signer constraint was violated\"],[2003,\"A raw constraint was violated\"],[2004,\"An owner constraint was violated\"],[2005,\"A rent exempt constraint was violated\"],[2006,\"A seeds constraint was violated\"],[2007,\"An executable constraint was violated\"],[2008,\"A state constraint was violated\"],[2009,\"An associated constraint was violated\"],[2010,\"An associated init constraint was violated\"],[2011,\"A close constraint was violated\"],[2012,\"An address constraint was violated\"],[2013,\"Expected zero account discriminant\"],[2014,\"A token mint constraint was violated\"],[2015,\"A token owner constraint was violated\"],[2016,\"A mint mint authority constraint was violated\"],[2017,\"A mint freeze authority constraint was violated\"],[2018,\"A mint decimals constraint was violated\"],[2019,\"A space constraint was violated\"],[3e3,\"The account discriminator was already set on this account\"],[3001,\"No 8 byte discriminator was found on the account\"],[3002,\"8 byte discriminator did not match what was expected\"],[3003,\"Failed to deserialize the account\"],[3004,\"Failed to serialize the account\"],[3005,\"Not enough account keys given to the instruction\"],[3006,\"The given account is not mutable\"],[3007,\"The given account is owned by a different program than expected\"],[3008,\"Program ID was not as expected\"],[3009,\"Program account is not executable\"],[3010,\"The given account did not sign\"],[3011,\"The given account is not owned by the system program\"],[3012,\"The program expected this account to be already initialized\"],[3013,\"The given account is not a program data account\"],[3014,\"The given account is not the associated token account\"],[4e3,\"The given state account does not have the correct address\"],[5e3,\"The API being used is deprecated and should no longer be used\"]]);class E{static fieldLayout(t,e){const n=void 0!==t.name?c(t.name):void 0;switch(t.type){case\"bool\":return u.bool(n);case\"u8\":return u.u8(n);case\"i8\":return u.i8(n);case\"u16\":return u.u16(n);case\"i16\":return u.i16(n);case\"u32\":return u.u32(n);case\"i32\":return u.i32(n);case\"u64\":return u.u64(n);case\"i64\":return u.i64(n);case\"u128\":return u.u128(n);case\"i128\":return u.i128(n);case\"bytes\":return u.vecU8(n);case\"string\":return u.str(n);case\"publicKey\":return u.publicKey(n);default:if(\"vec\"in t.type)return u.vec(E.fieldLayout({name:void 0,type:t.type.vec},e),n);if(\"option\"in t.type)return u.option(E.fieldLayout({name:void 0,type:t.type.option},e),n);if(\"defined\"in t.type){const r=t.type.defined;if(void 0===e)throw new _(\"User defined types not provided\");const o=e.filter((t=>t.name===r));if(1!==o.length)throw new _(`Type not found: ${JSON.stringify(t)}`);return E.typeDefLayout(o[0],e,n)}if(\"array\"in t.type){let r=t.type.array[0],o=t.type.array[1],i=E.fieldLayout({name:void 0,type:r},e);return u.array(i,o,n)}throw new Error(`Not yet implemented: ${t}`)}}static typeDefLayout(t,e=[],n){if(\"struct\"===t.type.kind){const r=t.type.fields.map((t=>E.fieldLayout(t,e)));return u.struct(r,n)}if(\"enum\"===t.type.kind){let r=t.type.variants.map((t=>{const n=c(t.name);if(void 0===t.fields)return u.struct([],n);const r=t.fields.map((t=>{if(!t.hasOwnProperty(\"name\"))throw new Error(\"Tuple enum variants not yet implemented.\");return E.fieldLayout(t,e)}));return u.struct(r,n)}));return void 0!==n?u.rustEnum(r).replicate(n):u.rustEnum(r,n)}throw new Error(`Unknown type kint: ${t}`)}}\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */var k=function(){return k=Object.assign||function(t){for(var e,n=1,r=arguments.length;nvoid 0===e.fields?0:e.fields.map((e=>{if(\"object\"!=typeof e||!(\"name\"in e))throw new Error(\"Tuple enum variants not yet implemented.\");return j(t,e.type)})).reduce(((t,e)=>t+e))));return Math.max(...n)+1}return void 0===e.type.fields?0:e.type.fields.map((e=>j(t,e.type))).reduce(((t,e)=>t+e),0)}function j(t,e){var n,r;switch(e){case\"bool\":case\"u8\":case\"i8\":case\"bytes\":case\"string\":return 1;case\"i16\":case\"u16\":return 2;case\"u32\":case\"i32\":return 4;case\"u64\":case\"i64\":return 8;case\"u128\":case\"i128\":return 16;case\"publicKey\":return 32;default:if(\"vec\"in e)return 1;if(\"option\"in e)return 1+j(t,e.option);if(\"defined\"in e){const o=null!==(r=null===(n=t.types)||void 0===n?void 0:n.filter((t=>t.name===e.defined)))&&void 0!==r?r:[];if(1!==o.length)throw new _(`Type not found: ${JSON.stringify(e)}`);return O(t,o[0])}if(\"array\"in e){let n=e.array[0],r=e.array[1];return j(t,n)*r}throw new Error(`Invalid type ${JSON.stringify(e)}`)}}function z(t,e){var n;let r=`${t}:${void 0===n&&(n={}),T(e,k({delimiter:\"_\"},n))}`;return a.from(d.digest(r)).slice(0,8)}class D{constructor(t){this.idl=t,this.ixLayout=D.parseIxLayout(t);const e=new Map;t.instructions.forEach((t=>{const n=z(\"global\",t.name);e.set(l.encode(n),{layout:this.ixLayout.get(t.name),name:t.name})})),t.state&&t.state.methods.map((t=>{const n=z(\"state\",t.name);e.set(l.encode(n),{layout:this.ixLayout.get(t.name),name:t.name})})),this.sighashLayouts=e}encode(t,e){return this._encode(\"global\",t,e)}encodeState(t,e){return this._encode(\"state\",t,e)}_encode(t,e,n){const r=a.alloc(1e3),o=c(e),i=this.ixLayout.get(o);if(!i)throw new Error(`Unknown method: ${o}`);const s=i.encode(n,r),u=r.slice(0,s);return a.concat([z(t,e),u])}static parseIxLayout(t){const e=(t.state?t.state.methods:[]).map((e=>{let n=e.args.map((e=>{var n,r;return E.fieldLayout(e,Array.from([...null!==(n=t.accounts)&&void 0!==n?n:[],...null!==(r=t.types)&&void 0!==r?r:[]]))}));const r=c(e.name);return[r,u.struct(n,r)]})).concat(t.instructions.map((e=>{let n=e.args.map((e=>{var n,r;return E.fieldLayout(e,Array.from([...null!==(n=t.accounts)&&void 0!==n?n:[],...null!==(r=t.types)&&void 0!==r?r:[]]))}));const r=c(e.name);return[r,u.struct(n,r)]})));return new Map(e)}decode(t,e=\"hex\"){\"string\"==typeof t&&(t=\"hex\"===e?a.from(t,\"hex\"):l.decode(t));let n=l.encode(t.slice(0,8)),r=t.slice(8);const o=this.sighashLayouts.get(n);return o?{data:o.layout.decode(r),name:o.name}:null}format(t,e){return C.format(t,e,this.idl)}}class C{static format(t,e,n){const r=n.instructions.filter((e=>t.name===e.name))[0];if(void 0===r)return console.error(\"Invalid instruction given\"),null;const o=r.args.map((e=>({name:e.name,type:C.formatIdlType(e.type),data:C.formatIdlData(e,t.data[e.name],n.types)}))),i=C.flattenIdlAccounts(r.accounts);return{args:o,accounts:e.map(((t,e)=>e`;if(\"option\"in t)return`Option<${this.formatIdlType(t.option)}>`;if(\"defined\"in t)return t.defined;if(\"array\"in t)return`Array<${t.array[0]}; ${t.array[1]}>`;throw new Error(`Unknown IDL type: ${t}`)}static formatIdlData(t,e,n){if(\"string\"==typeof t.type)return e.toString();if(t.type.hasOwnProperty(\"vec\"))return\"[\"+e.map((e=>this.formatIdlData({name:\"\",type:t.type.vec},e))).join(\", \")+\"]\";if(t.type.hasOwnProperty(\"option\"))return null===e?\"null\":this.formatIdlData({name:\"\",type:t.type.option},e);if(t.type.hasOwnProperty(\"defined\")){if(void 0===n)throw new Error(\"User defined types not provided\");const r=n.filter((e=>e.name===t.type.defined));if(1!==r.length)throw new Error(`Type not found: ${t.type.defined}`);return C.formatIdlDataDefined(r[0],e,n)}return\"unknown\"}static formatIdlDataDefined(t,e,n){if(\"struct\"===t.type.kind){const r=t.type;return\"{ \"+Object.keys(e).map((t=>{const o=r.fields.filter((e=>e.name===t))[0];if(void 0===o)throw new Error(\"Unable to find type\");return t+\": \"+C.formatIdlData(o,e[t],n)})).join(\", \")+\" }\"}if(0===t.type.variants.length)return\"{}\";if(t.type.variants[0].name){const r=t.type.variants,o=Object.keys(e)[0],i=e[o],s=Object.keys(i).map((t=>{var e;const s=i[t],a=null===(e=r[o])||void 0===e?void 0:e.filter((e=>e.name===t))[0];if(void 0===a)throw new Error(\"Unable to find variant\");return t+\": \"+C.formatIdlData(a,s,n)})).join(\", \"),a=c(o,{pascalCase:!0});return 0===s.length?a:`${a} { ${s} }`}return\"Tuple formatting not yet implemented\"}static flattenIdlAccounts(t,e){return t.map((t=>{const n=function(t){const e=t.replace(/([A-Z])/g,\" $1\");return e.charAt(0).toUpperCase()+e.slice(1)}(t.name);if(t.hasOwnProperty(\"accounts\")){const r=e?`${e} > ${n}`:n;return C.flattenIdlAccounts(t.accounts,r)}return{...t,name:e?`${e} > ${n}`:n}})).flat()}}class B{constructor(t){if(void 0===t.accounts)return void(this.accountLayouts=new Map);const e=t.accounts.map((e=>[e.name,E.typeDefLayout(e,t.types)]));this.accountLayouts=new Map(e)}async encode(t,e){const n=a.alloc(1e3),r=this.accountLayouts.get(t);if(!r)throw new Error(`Unknown account: ${t}`);const o=r.encode(e,n);let i=n.slice(0,o),s=B.accountDiscriminator(t);return a.concat([s,i])}decode(t,e){const n=e.slice(8),r=this.accountLayouts.get(t);if(!r)throw new Error(`Unknown account: ${t}`);return r.decode(n)}static accountDiscriminator(t){return a.from(d.digest(`account:${c(t,{pascalCase:!0})}`)).slice(0,8)}}class M{constructor(t){if(void 0===t.events)return void(this.layouts=new Map);const e=t.events.map((e=>{let n={name:e.name,type:{kind:\"struct\",fields:e.fields.map((t=>({name:t.name,type:t.type})))}};return[e.name,E.typeDefLayout(n,t.types)]}));this.layouts=new Map(e),this.discriminators=new Map(void 0===t.events?[]:t.events.map((t=>{return[h.fromByteArray((e=t.name,a.from(d.digest(`event:${e}`)).slice(0,8))),t.name];var e})))}decode(t){let e;try{e=a.from(h.toByteArray(t))}catch(t){return null}const n=h.fromByteArray(e.slice(0,8)),r=this.discriminators.get(n);if(void 0===r)return null;const o=this.layouts.get(r);if(!o)throw new Error(`Unknown event: ${r}`);return{data:o.decode(e.slice(8)),name:r}}}const U=new Set([\"anchor-deprecated-state\"]),K=new Map;function W(t){return void 0!==K.get(t)}var N=Object.freeze({__proto__:null,set:function(t){if(!U.has(t))throw new Error(\"Invalid feature\");K.set(t,!0)},isSet:W});class R{constructor(t){if(void 0===t.state)throw new Error(\"Idl state not defined.\");this.layout=E.typeDefLayout(t.state.struct,t.types)}async encode(t,e){const n=a.alloc(1e3),r=this.layout.encode(e,n),o=await Z(t),i=n.slice(0,r);return a.concat([o,i])}decode(t){const e=t.slice(8);return this.layout.decode(e)}}async function Z(t){let e=W(\"anchor-deprecated-state\")?\"account\":\"state\";return a.from(d.digest(`${e}:${t}`)).slice(0,8)}class J{constructor(t){this.instruction=new D(t),this.accounts=new B(t),this.events=new M(t),t.state&&(this.state=new R(t))}sighash(t,e){return z(t,e)}}var F=Object.freeze({__proto__:null,hash:function(t){return d(t)}});function q(t){const e=new Map;return t.errors&&t.errors.forEach((t=>{var n;let r=null!==(n=t.msg)&&void 0!==n?n:t.name;e.set(t.code,r)})),e}function G(t,...e){if(t.args.length!=e.length)throw new Error(\"Invalid argument length\");const n={};let r=0;return t.args.forEach((t=>{n[t.name]=e[r],r+=1})),n}function V(t,e={}){t.forEach((t=>{if(\"accounts\"in t)V(t.accounts,e[t.name]);else if(void 0===e[t.name])throw new Error(`Invalid arguments: ${t.name} not provided.`)}))}function Q(t){return t instanceof n?t:new n(t)}async function H(t,e,n){if(e.length<=99)return await X(t,e,n);{const i=(r=e,o=99,Array.apply(0,new Array(Math.ceil(r.length/o))).map(((t,e)=>r.slice(e*o,(e+1)*o))));return(await Promise.all(i.map((e=>X(t,e,n))))).flat()}var r,o}async function X(t,e,r){const o=null!=r?r:t.commitment,i=[e.map((t=>t.toBase58()))];o&&i.push({commitment:o});const s=await t._rpcRequest(\"getMultipleAccounts\",i);if(s.error)throw new Error(\"failed to get info about accounts \"+e.map((t=>t.toBase58())).join(\", \")+\": \"+s.error.message);f(void 0!==s.result);const c=[];for(const t of s.result.value){let e=null;if(null!==t){if(s.result.value){const{executable:r,owner:o,lamports:i,data:s}=t;f(\"base64\"===s[1]),e={executable:r,owner:new n(o),lamports:i,data:a.from(s[0],\"base64\")}}if(null===e)throw new Error(\"Invalid response\");c.push(e)}else c.push(null)}return c.map(((t,n)=>null===t?null:{publicKey:e[n],account:t}))}var Y=Object.freeze({__proto__:null,invoke:async function(t,e,n,i){t=Q(t),i||(i=w());const s=new r;return s.add(new o({programId:t,keys:null!=e?e:[],data:n})),await i.send(s)},getMultipleAccounts:H});function tt(t,e,r){const o=a.concat([t.toBuffer(),a.from(e),r.toBuffer()]),i=d.digest(o);return new n(a.from(i))}function et(e,r){let o=a.alloc(0);e.forEach((function(t){if(t.length>32)throw new TypeError(\"Max seed length exceeded\");o=a.concat([o,rt(t)])})),o=a.concat([o,r.toBuffer(),a.from(\"ProgramDerivedAddress\")]);let i=d(new Uint8Array(o)),s=new t(i,16).toArray(void 0,32);if(n.isOnCurve(new Uint8Array(s)))throw new Error(\"Invalid seeds, address must fall off the curve\");return new n(s)}function nt(t,e){let n,r=255;for(;0!=r;){try{n=et(t.concat(a.from([r])),e)}catch(t){if(t instanceof TypeError)throw t;r--;continue}return[n,r]}throw new Error(\"Unable to find a viable program address nonce\")}const rt=t=>t instanceof a?t:t instanceof Uint8Array?a.from(t.buffer,t.byteOffset,t.byteLength):a.from(t);async function ot(t,...e){let r=[a.from([97,110,99,104,111,114])];e.forEach((t=>{r.push(t instanceof a?t:Q(t).toBuffer())}));const[o]=await n.findProgramAddress(r,Q(t));return o}var it=Object.freeze({__proto__:null,createWithSeedSync:tt,createProgramAddressSync:et,findProgramAddressSync:nt,associated:ot});var st=Object.freeze({__proto__:null,encode:function(t){return t.reduce(((t,e)=>t+e.toString(16).padStart(2,\"0\")),\"0x\")},decode:function(t){0===t.indexOf(\"0x\")&&(t=t.substr(2)),t.length%2==1&&(t=\"0\"+t);let e=t.match(/.{2}/g);return null===e?a.from([]):a.from(e.map((t=>parseInt(t,16))))}});function at(t){return new TextDecoder(\"utf-8\").decode(t)}var ct=Object.freeze({__proto__:null,decode:at,encode:function(t){return(new TextEncoder).encode(t)}});var ut=Object.freeze({__proto__:null,encode:function(t){return l.encode(t)},decode:function(t){return l.decode(t)}});var lt=Object.freeze({__proto__:null,encode:function(t){return h.fromByteArray(t)},decode:function(t){return a.from(h.toByteArray(t))}}),dt=Object.freeze({__proto__:null,hex:st,utf8:ct,bs58:ut,base64:lt});const ht=new n(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"),pt=new n(\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\");var ft=Object.freeze({__proto__:null,associatedAddress:async function({mint:t,owner:e}){return(await n.findProgramAddress([e.toBuffer(),ht.toBuffer(),t.toBuffer()],pt))[0]}}),mt=Object.freeze({__proto__:null,sha256:F,rpc:Y,publicKey:it,bytes:dt,token:ft,features:N});const gt=u.struct([u.publicKey(\"authority\"),u.vecU8(\"data\")]);function vt(t,e){var n,r;let o={};const i=t.args?t.args.length:0;if(e.length>i){if(e.length!==i+1)throw new Error(`provided too many arguments ${e} to instruction ${null==t?void 0:t.name} expecting: ${null!==(r=null===(n=t.args)||void 0===n?void 0:n.map((t=>t.name)))&&void 0!==r?r:[]}`);o=e.pop()}return[e,o]}class yt{static build(t,e,n){if(\"_inner\"===t.name)throw new _(\"the _inner name is reserved\");const r=(...i)=>{const[s,a]=vt(t,[...i]);V(t.accounts,a.accounts);const c=r.accounts(a.accounts);return void 0!==a.remainingAccounts&&c.push(...a.remainingAccounts),W(\"debug-logs\")&&console.log(\"Outgoing account metas:\",c),new o({keys:c,programId:n,data:e(t.name,G(t,...s))})};return r.accounts=e=>yt.accountsArray(e,t.accounts,t.name),r}static accountsArray(t,e,n){return t?e.map((e=>{if(void 0!==(\"accounts\"in e?e.accounts:void 0)){const r=t[e.name];return yt.accountsArray(r,e.accounts,n).flat()}{const r=e;let o;try{o=Q(t[e.name])}catch(t){throw new Error(`Wrong input type for account \"${e.name}\" in the instruction accounts object${void 0!==n?' for instruction \"'+n+'\"':\"\"}. Expected PublicKey or string.`)}return{pubkey:o,isWritable:r.isMut,isSigner:r.isSigner}}})).flat():[]}}class wt{static build(t,e,n,r){return async(...o)=>{const i=e(...o),[,s]=vt(t,[...o]);try{return await r.send(i,s.signers,s.options)}catch(t){W(\"debug-logs\")&&console.log(\"Translating error:\",t);let e=A.parse(t,n);if(null===e)throw t;throw e}}}}class bt{static build(t,e){return(...n)=>{var o,i,s;const[,a]=vt(t,[...n]),c=new r;if(a.preInstructions&&a.instructions)throw new Error(\"instructions is deprecated, use preInstructions\");return null===(o=a.preInstructions)||void 0===o||o.forEach((t=>c.add(t))),null===(i=a.instructions)||void 0===i||i.forEach((t=>c.add(t))),c.add(e(...n)),null===(s=a.postInstructions)||void 0===s||s.forEach((t=>c.add(t))),c}}}class _t{constructor(t,e,n=w(),r=new J(t)){this.provider=n,this.coder=r,this._idl=t,this._programId=e,this._address=At(e),this._sub=null;const[o,s,a]=(()=>{var o;let s={},a={},u={};return null===(o=t.state)||void 0===o||o.methods.forEach((o=>{const l=yt.build(o,((t,e)=>r.instruction.encodeState(t,e)),e);l.accounts=t=>{const r=function(t,e,n,r){if(\"new\"===n.name){const[n]=nt([],t);return[{pubkey:e.wallet.publicKey,isWritable:!1,isSigner:!0},{pubkey:At(t),isWritable:!0,isSigner:!1},{pubkey:n,isWritable:!1,isSigner:!1},{pubkey:i.programId,isWritable:!1,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1}]}return V(n.accounts,r),[{pubkey:At(t),isWritable:!0,isSigner:!1}]}(e,n,o,t);return r.concat(yt.accountsArray(t,o.accounts,o.name))};const d=bt.build(o,l),h=wt.build(o,d,q(t),n),p=c(o.name);s[p]=l,a[p]=d,u[p]=h})),[s,a,u]})();this.instruction=o,this.transaction=s,this.rpc=a}get programId(){return this._programId}async fetch(){const t=this.address(),e=await this.provider.connection.getAccountInfo(t);if(null===e)throw new Error(`Account does not exist ${t.toString()}`);const n=this._idl.state;if(!n)throw new Error(\"State is not specified in IDL.\");if((await Z(n.struct.name)).compare(e.data.slice(0,8)))throw new Error(\"Invalid account discriminator\");return this.coder.state.decode(e.data)}address(){return this._address}subscribe(t){if(null!==this._sub)return this._sub.ee;const e=new g,n=this.provider.connection.onAccountChange(this.address(),(t=>{const n=this.coder.state.decode(t.data);e.emit(\"change\",n)}),t);return this._sub={ee:e,listener:n},e}unsubscribe(){null!==this._sub&&this.provider.connection.removeAccountChangeListener(this._sub.listener).then((async()=>{this._sub=null})).catch(console.error)}}function At(t){let[e]=nt([],t);return tt(e,\"unversioned\",t)}class It{constructor(t,e,n,r,o){var i;this._idlAccount=e,this._programId=n,this._provider=null!=r?r:w(),this._coder=null!=o?o:new J(t),this._size=8+(null!==(i=O(t,e))&&void 0!==i?i:0)}get size(){return this._size}get programId(){return this._programId}get provider(){return this._provider}get coder(){return this._coder}async fetchNullable(t,e){const n=await this.getAccountInfo(t,e);if(null===n)return null;if(B.accountDiscriminator(this._idlAccount.name).compare(n.data.slice(0,8)))throw new Error(\"Invalid account discriminator\");return this._coder.accounts.decode(this._idlAccount.name,n.data)}async fetch(t,e){const n=await this.fetchNullable(t,e);if(null===n)throw new Error(`Account does not exist ${t.toString()}`);return n}async fetchMultiple(t,e){const n=await H(this._provider.connection,t.map((t=>Q(t))),e),r=B.accountDiscriminator(this._idlAccount.name);return n.map((t=>null==t||r.compare(null==t?void 0:t.account.data.slice(0,8))?null:this._coder.accounts.decode(this._idlAccount.name,null==t?void 0:t.account.data)))}async all(t){const e=B.accountDiscriminator(this._idlAccount.name);return(await this._provider.connection.getProgramAccounts(this._programId,{commitment:this._provider.connection.commitment,filters:[{memcmp:{offset:0,bytes:l.encode(t instanceof a?a.concat([e,t]):e)}},...Array.isArray(t)?t:[]]})).map((({pubkey:t,account:e})=>({publicKey:t,account:this._coder.accounts.decode(this._idlAccount.name,e.data)})))}subscribe(t,e){const n=Et.get(t.toString());if(n)return n.ee;const r=new g;t=Q(t);const o=this._provider.connection.onAccountChange(t,(t=>{const e=this._coder.accounts.decode(this._idlAccount.name,t.data);r.emit(\"change\",e)}),e);return Et.set(t.toString(),{ee:r,listener:o}),r}async unsubscribe(t){let e=Et.get(t.toString());e?Et&&await this._provider.connection.removeAccountChangeListener(e.listener).then((()=>{Et.delete(t.toString())})).catch(console.error):console.warn(\"Address is not subscribed\")}async createInstruction(t,e){const n=this.size;return i.createAccount({fromPubkey:this._provider.wallet.publicKey,newAccountPubkey:t.publicKey,space:null!=e?e:n,lamports:await this._provider.connection.getMinimumBalanceForRentExemption(null!=e?e:n),programId:this._programId})}async associated(...t){const e=await this.associatedAddress(...t);return await this.fetch(e)}async associatedAddress(...t){return await ot(this._programId,...t)}async getAccountInfo(t,e){return await this._provider.connection.getAccountInfo(Q(t),e)}}const Et=new Map,kt=\"Program log: \".length;class Lt{constructor(t,e,n){this._programId=t,this._provider=e,this._eventParser=new St(t,n),this._eventCallbacks=new Map,this._eventListeners=new Map,this._listenerIdCount=0}addEventListener(t,e){var n;let r=this._listenerIdCount;return this._listenerIdCount+=1,t in this._eventCallbacks||this._eventListeners.set(t,[]),this._eventListeners.set(t,(null!==(n=this._eventListeners.get(t))&&void 0!==n?n:[]).concat(r)),this._eventCallbacks.set(r,[t,e]),void 0!==this._onLogsSubscriptionId||(this._onLogsSubscriptionId=this._provider.connection.onLogs(this._programId,((t,e)=>{t.err?console.error(t):this._eventParser.parseLogs(t.logs,(t=>{const n=this._eventListeners.get(t.name);n&&n.forEach((n=>{const r=this._eventCallbacks.get(n);if(r){const[,n]=r;n(t.data,e.slot)}}))}))}))),r}async removeEventListener(t){const e=this._eventCallbacks.get(t);if(!e)throw new Error(`Event listener ${t} doesn't exist!`);const[n]=e;let r=this._eventListeners.get(n);if(!r)throw new Error(`Event listeners don't exist for ${n}!`);this._eventCallbacks.delete(t),r=r.filter((e=>e!==t)),0===r.length&&this._eventListeners.delete(n),0==this._eventCallbacks.size&&(p.ok(0===this._eventListeners.size),void 0!==this._onLogsSubscriptionId&&(await this._provider.connection.removeOnLogsListener(this._onLogsSubscriptionId),this._onLogsSubscriptionId=void 0))}}class St{constructor(t,e){this.coder=e,this.programId=t}parseLogs(t,e){const n=new $t(t),r=new xt(n.next());let o=n.next();for(;null!==o;){let[t,i,s]=this.handleLog(r,o);t&&e(t),i&&r.push(i),s&&r.pop(),o=n.next()}}handleLog(t,e){return t.stack.length>0&&t.program()===this.programId.toString()?this.handleProgramLog(e):[null,...this.handleSystemLog(e)]}handleProgramLog(t){if(t.startsWith(\"Program log:\")){const e=t.slice(kt);return[this.coder.events.decode(e),null,!1]}return[null,...this.handleSystemLog(t)]}handleSystemLog(t){const e=t.split(\":\")[0];return null!==e.match(/^Program (.*) success/g)?[null,!0]:e.startsWith(`Program ${this.programId.toString()} invoke`)?[this.programId.toString(),!1]:e.includes(\"invoke\")?[\"cpi\",!1]:[null,!1]}}class xt{constructor(t){var e;const n=null===(e=/^Program (.*) invoke.*$/g.exec(t))||void 0===e?void 0:e[1];if(!n)throw new Error(\"Could not find program invocation log line\");this.stack=[n]}program(){return p.ok(this.stack.length>0),this.stack[this.stack.length-1]}push(t){this.stack.push(t)}pop(){p.ok(this.stack.length>0),this.stack.pop()}}class $t{constructor(t){this.logs=t}next(){if(0===this.logs.length)return null;let t=this.logs[0];return this.logs=this.logs.slice(1),t}}class Pt{constructor(t,e,n){e=Q(e),n||(n=w()),this._idl=t,this._provider=n,this._programId=e,this._coder=new J(t),this._events=new Lt(this._programId,n,this._coder);const[r,o,i,s,a,u]=class{static build(t,e,n,r){const o={},i={},s={},a={},u=q(t),l=class{static build(t,e,n,r){if(void 0!==t.state)return new _t(t,n,r,e)}}.build(t,e,n,r);t.instructions.forEach((l=>{const d=yt.build(l,((t,n)=>e.instruction.encode(t,n)),n),h=bt.build(l,d),p=wt.build(l,h,u,r),f=class{static build(t,e,n,r,o,i,s){return async(...a)=>{const c=e(...a),[,u]=vt(t,[...a]);let l;try{l=await r.simulate(c,u.signers,u.options)}catch(t){W(\"debug-logs\")&&console.log(\"Translating error:\",t);let e=A.parse(t,n);if(null===e)throw t;throw e}if(void 0===l)throw new Error(\"Unable to simulate transaction\");if(l.value.err)throw new Error(`Simulate error: ${l.value.err.toString()}`);const d=l.value.logs;if(!d)throw new Error(\"Simulated logs not found\");const h=[];return s.events&&new St(i,o).parseLogs(d,(t=>{h.push(t)})),{events:h,raw:d}}}}.build(l,h,u,r,e,n,t),m=c(l.name);i[m]=d,s[m]=h,o[m]=p,a[m]=f}));const d=t.accounts?class{static build(t,e,n,r){var o;const i={};return null===(o=t.accounts)||void 0===o||o.forEach((o=>{const s=c(o.name);i[s]=new It(t,o,n,r,e)})),i}}.build(t,e,n,r):{};return[o,i,s,d,a,l]}}.build(t,this._coder,e,n);this.rpc=r,this.instruction=o,this.transaction=i,this.account=s,this.simulate=a,this.state=u}get programId(){return this._programId}get idl(){return this._idl}get coder(){return this._coder}get provider(){return this._provider}static async at(t,e){const n=Q(t),r=await Pt.fetchIdl(n,e);if(!r)throw new Error(`IDL not found for program: ${t.toString()}`);return new Pt(r,n,e)}static async fetchIdl(t,e){e=null!=e?e:w();const r=Q(t),o=await async function(t){const e=(await n.findProgramAddress([],t))[0];return await n.createWithSeed(e,\"anchor:idl\",t)}(r),i=await e.connection.getAccountInfo(o);if(!i)return null;let s=(a=i.data.slice(8),gt.decode(a));var a;const c=m(s.data);return JSON.parse(at(c))}addEventListener(t,e){return this._events.addEventListener(t,e)}async removeEventListener(t){return await this._events.removeEventListener(t)}}export{It as AccountClient,B as AccountsCoder,J as Coder,M as EventCoder,Lt as EventManager,St as EventParser,_ as IdlError,D as InstructionCoder,Pt as Program,A as ProgramError,v as Provider,_t as StateClient,R as StateCoder,w as getProvider,q as parseIdlErrors,y as setProvider,vt as splitArgsAndCtx,G as toInstruction,Q as translateAddress,mt as utils,V as validateAccounts};\n//# sourceMappingURL=index.js.map\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LangErrorMessage = exports.LangErrorCode = exports.translateError = exports.ProgramError = exports.AnchorError = exports.ProgramErrorStack = exports.IdlError = void 0;\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst features = __importStar(require(\"./utils/features.js\"));\nclass IdlError extends Error {\n constructor(message) {\n super(message);\n this.name = \"IdlError\";\n }\n}\nexports.IdlError = IdlError;\nclass ProgramErrorStack {\n constructor(stack) {\n this.stack = stack;\n }\n static parse(logs) {\n var _a;\n const programKeyRegex = /^Program (\\w*) invoke/;\n const successRegex = /^Program \\w* success/;\n const programStack = [];\n for (let i = 0; i < logs.length; i++) {\n if (successRegex.exec(logs[i])) {\n programStack.pop();\n continue;\n }\n const programKey = (_a = programKeyRegex.exec(logs[i])) === null || _a === void 0 ? void 0 : _a[1];\n if (!programKey) {\n continue;\n }\n programStack.push(new web3_js_1.PublicKey(programKey));\n }\n return new ProgramErrorStack(programStack);\n }\n}\nexports.ProgramErrorStack = ProgramErrorStack;\nclass AnchorError extends Error {\n constructor(errorCode, errorMessage, errorLogs, logs, origin, comparedValues) {\n super(errorLogs.join(\"\\n\").replace(\"Program log: \", \"\"));\n this.errorLogs = errorLogs;\n this.logs = logs;\n this.error = { errorCode, errorMessage, comparedValues, origin };\n this._programErrorStack = ProgramErrorStack.parse(logs);\n }\n static parse(logs) {\n if (!logs) {\n return null;\n }\n const anchorErrorLogIndex = logs.findIndex((log) => log.startsWith(\"Program log: AnchorError\"));\n if (anchorErrorLogIndex === -1) {\n return null;\n }\n const anchorErrorLog = logs[anchorErrorLogIndex];\n const errorLogs = [anchorErrorLog];\n let comparedValues;\n if (anchorErrorLogIndex + 1 < logs.length) {\n // This catches the comparedValues where the following is logged\n // \n // Left:\n // \n // Right:\n // \n if (logs[anchorErrorLogIndex + 1] === \"Program log: Left:\") {\n const pubkeyRegex = /^Program log: (.*)$/;\n const leftPubkey = pubkeyRegex.exec(logs[anchorErrorLogIndex + 2])[1];\n const rightPubkey = pubkeyRegex.exec(logs[anchorErrorLogIndex + 4])[1];\n comparedValues = [\n new web3_js_1.PublicKey(leftPubkey),\n new web3_js_1.PublicKey(rightPubkey),\n ];\n errorLogs.push(...logs.slice(anchorErrorLogIndex + 1, anchorErrorLogIndex + 5));\n }\n // This catches the comparedValues where the following is logged\n // \n // Left: \n // Right: \n else if (logs[anchorErrorLogIndex + 1].startsWith(\"Program log: Left:\")) {\n const valueRegex = /^Program log: (Left|Right): (.*)$/;\n const leftValue = valueRegex.exec(logs[anchorErrorLogIndex + 1])[2];\n const rightValue = valueRegex.exec(logs[anchorErrorLogIndex + 2])[2];\n errorLogs.push(...logs.slice(anchorErrorLogIndex + 1, anchorErrorLogIndex + 3));\n comparedValues = [leftValue, rightValue];\n }\n }\n const regexNoInfo = /^Program log: AnchorError occurred\\. Error Code: (.*)\\. Error Number: (\\d*)\\. Error Message: (.*)\\./;\n const noInfoAnchorErrorLog = regexNoInfo.exec(anchorErrorLog);\n const regexFileLine = /^Program log: AnchorError thrown in (.*):(\\d*)\\. Error Code: (.*)\\. Error Number: (\\d*)\\. Error Message: (.*)\\./;\n const fileLineAnchorErrorLog = regexFileLine.exec(anchorErrorLog);\n const regexAccountName = /^Program log: AnchorError caused by account: (.*)\\. Error Code: (.*)\\. Error Number: (\\d*)\\. Error Message: (.*)\\./;\n const accountNameAnchorErrorLog = regexAccountName.exec(anchorErrorLog);\n if (noInfoAnchorErrorLog) {\n const [errorCodeString, errorNumber, errorMessage] = noInfoAnchorErrorLog.slice(1, 4);\n const errorCode = {\n code: errorCodeString,\n number: parseInt(errorNumber),\n };\n return new AnchorError(errorCode, errorMessage, errorLogs, logs, undefined, comparedValues);\n }\n else if (fileLineAnchorErrorLog) {\n const [file, line, errorCodeString, errorNumber, errorMessage] = fileLineAnchorErrorLog.slice(1, 6);\n const errorCode = {\n code: errorCodeString,\n number: parseInt(errorNumber),\n };\n const fileLine = { file, line: parseInt(line) };\n return new AnchorError(errorCode, errorMessage, errorLogs, logs, fileLine, comparedValues);\n }\n else if (accountNameAnchorErrorLog) {\n const [accountName, errorCodeString, errorNumber, errorMessage] = accountNameAnchorErrorLog.slice(1, 5);\n const origin = accountName;\n const errorCode = {\n code: errorCodeString,\n number: parseInt(errorNumber),\n };\n return new AnchorError(errorCode, errorMessage, errorLogs, logs, origin, comparedValues);\n }\n else {\n return null;\n }\n }\n get program() {\n return this._programErrorStack.stack[this._programErrorStack.stack.length - 1];\n }\n get programErrorStack() {\n return this._programErrorStack.stack;\n }\n toString() {\n return this.message;\n }\n}\nexports.AnchorError = AnchorError;\n// An error from a user defined program.\nclass ProgramError extends Error {\n constructor(code, msg, logs) {\n super();\n this.code = code;\n this.msg = msg;\n this.logs = logs;\n if (logs) {\n this._programErrorStack = ProgramErrorStack.parse(logs);\n }\n }\n static parse(err, idlErrors) {\n const errString = err.toString();\n // TODO: don't rely on the error string. web3.js should preserve the error\n // code information instead of giving us an untyped string.\n let unparsedErrorCode;\n if (errString.includes(\"custom program error:\")) {\n let components = errString.split(\"custom program error: \");\n if (components.length !== 2) {\n return null;\n }\n else {\n unparsedErrorCode = components[1];\n }\n }\n else {\n const matches = errString.match(/\"Custom\":([0-9]+)}/g);\n if (!matches || matches.length > 1) {\n return null;\n }\n unparsedErrorCode = matches[0].match(/([0-9]+)/g)[0];\n }\n let errorCode;\n try {\n errorCode = parseInt(unparsedErrorCode);\n }\n catch (parseErr) {\n return null;\n }\n // Parse user error.\n let errorMsg = idlErrors.get(errorCode);\n if (errorMsg !== undefined) {\n return new ProgramError(errorCode, errorMsg, err.logs);\n }\n // Parse framework internal error.\n errorMsg = exports.LangErrorMessage.get(errorCode);\n if (errorMsg !== undefined) {\n return new ProgramError(errorCode, errorMsg, err.logs);\n }\n // Unable to parse the error. Just return the untranslated error.\n return null;\n }\n get program() {\n var _a;\n return (_a = this._programErrorStack) === null || _a === void 0 ? void 0 : _a.stack[this._programErrorStack.stack.length - 1];\n }\n get programErrorStack() {\n var _a;\n return (_a = this._programErrorStack) === null || _a === void 0 ? void 0 : _a.stack;\n }\n toString() {\n return this.msg;\n }\n}\nexports.ProgramError = ProgramError;\nfunction translateError(err, idlErrors) {\n if (features.isSet(\"debug-logs\")) {\n console.log(\"Translating error:\", err);\n }\n const anchorError = AnchorError.parse(err.logs);\n if (anchorError) {\n return anchorError;\n }\n const programError = ProgramError.parse(err, idlErrors);\n if (programError) {\n return programError;\n }\n if (err.logs) {\n const handler = {\n get: function (target, prop) {\n if (prop === \"programErrorStack\") {\n return target.programErrorStack.stack;\n }\n else if (prop === \"program\") {\n return target.programErrorStack.stack[err.programErrorStack.stack.length - 1];\n }\n else {\n // this is the normal way to return all other props\n // without modifying them.\n // @ts-expect-error\n return Reflect.get(...arguments);\n }\n },\n };\n err.programErrorStack = ProgramErrorStack.parse(err.logs);\n return new Proxy(err, handler);\n }\n return err;\n}\nexports.translateError = translateError;\nexports.LangErrorCode = {\n // Instructions.\n InstructionMissing: 100,\n InstructionFallbackNotFound: 101,\n InstructionDidNotDeserialize: 102,\n InstructionDidNotSerialize: 103,\n // IDL instructions.\n IdlInstructionStub: 1000,\n IdlInstructionInvalidProgram: 1001,\n // Constraints.\n ConstraintMut: 2000,\n ConstraintHasOne: 2001,\n ConstraintSigner: 2002,\n ConstraintRaw: 2003,\n ConstraintOwner: 2004,\n ConstraintRentExempt: 2005,\n ConstraintSeeds: 2006,\n ConstraintExecutable: 2007,\n ConstraintState: 2008,\n ConstraintAssociated: 2009,\n ConstraintAssociatedInit: 2010,\n ConstraintClose: 2011,\n ConstraintAddress: 2012,\n ConstraintZero: 2013,\n ConstraintTokenMint: 2014,\n ConstraintTokenOwner: 2015,\n ConstraintMintMintAuthority: 2016,\n ConstraintMintFreezeAuthority: 2017,\n ConstraintMintDecimals: 2018,\n ConstraintSpace: 2019,\n // Require.\n RequireViolated: 2500,\n RequireEqViolated: 2501,\n RequireKeysEqViolated: 2502,\n RequireNeqViolated: 2503,\n RequireKeysNeqViolated: 2504,\n RequireGtViolated: 2505,\n RequireGteViolated: 2506,\n // Accounts.\n AccountDiscriminatorAlreadySet: 3000,\n AccountDiscriminatorNotFound: 3001,\n AccountDiscriminatorMismatch: 3002,\n AccountDidNotDeserialize: 3003,\n AccountDidNotSerialize: 3004,\n AccountNotEnoughKeys: 3005,\n AccountNotMutable: 3006,\n AccountOwnedByWrongProgram: 3007,\n InvalidProgramId: 3008,\n InvalidProgramExecutable: 3009,\n AccountNotSigner: 3010,\n AccountNotSystemOwned: 3011,\n AccountNotInitialized: 3012,\n AccountNotProgramData: 3013,\n AccountNotAssociatedTokenAccount: 3014,\n AccountSysvarMismatch: 3015,\n // State.\n StateInvalidAddress: 4000,\n // Miscellaneous\n DeclaredProgramIdMismatch: 4100,\n // Used for APIs that shouldn't be used anymore.\n Deprecated: 5000,\n};\nexports.LangErrorMessage = new Map([\n // Instructions.\n [\n exports.LangErrorCode.InstructionMissing,\n \"8 byte instruction identifier not provided\",\n ],\n [\n exports.LangErrorCode.InstructionFallbackNotFound,\n \"Fallback functions are not supported\",\n ],\n [\n exports.LangErrorCode.InstructionDidNotDeserialize,\n \"The program could not deserialize the given instruction\",\n ],\n [\n exports.LangErrorCode.InstructionDidNotSerialize,\n \"The program could not serialize the given instruction\",\n ],\n // Idl instructions.\n [\n exports.LangErrorCode.IdlInstructionStub,\n \"The program was compiled without idl instructions\",\n ],\n [\n exports.LangErrorCode.IdlInstructionInvalidProgram,\n \"The transaction was given an invalid program for the IDL instruction\",\n ],\n // Constraints.\n [exports.LangErrorCode.ConstraintMut, \"A mut constraint was violated\"],\n [exports.LangErrorCode.ConstraintHasOne, \"A has_one constraint was violated\"],\n [exports.LangErrorCode.ConstraintSigner, \"A signer constraint was violated\"],\n [exports.LangErrorCode.ConstraintRaw, \"A raw constraint was violated\"],\n [exports.LangErrorCode.ConstraintOwner, \"An owner constraint was violated\"],\n [\n exports.LangErrorCode.ConstraintRentExempt,\n \"A rent exemption constraint was violated\",\n ],\n [exports.LangErrorCode.ConstraintSeeds, \"A seeds constraint was violated\"],\n [exports.LangErrorCode.ConstraintExecutable, \"An executable constraint was violated\"],\n [exports.LangErrorCode.ConstraintState, \"A state constraint was violated\"],\n [exports.LangErrorCode.ConstraintAssociated, \"An associated constraint was violated\"],\n [\n exports.LangErrorCode.ConstraintAssociatedInit,\n \"An associated init constraint was violated\",\n ],\n [exports.LangErrorCode.ConstraintClose, \"A close constraint was violated\"],\n [exports.LangErrorCode.ConstraintAddress, \"An address constraint was violated\"],\n [exports.LangErrorCode.ConstraintZero, \"Expected zero account discriminant\"],\n [exports.LangErrorCode.ConstraintTokenMint, \"A token mint constraint was violated\"],\n [exports.LangErrorCode.ConstraintTokenOwner, \"A token owner constraint was violated\"],\n [\n exports.LangErrorCode.ConstraintMintMintAuthority,\n \"A mint mint authority constraint was violated\",\n ],\n [\n exports.LangErrorCode.ConstraintMintFreezeAuthority,\n \"A mint freeze authority constraint was violated\",\n ],\n [\n exports.LangErrorCode.ConstraintMintDecimals,\n \"A mint decimals constraint was violated\",\n ],\n [exports.LangErrorCode.ConstraintSpace, \"A space constraint was violated\"],\n // Require.\n [exports.LangErrorCode.RequireViolated, \"A require expression was violated\"],\n [exports.LangErrorCode.RequireEqViolated, \"A require_eq expression was violated\"],\n [\n exports.LangErrorCode.RequireKeysEqViolated,\n \"A require_keys_eq expression was violated\",\n ],\n [exports.LangErrorCode.RequireNeqViolated, \"A require_neq expression was violated\"],\n [\n exports.LangErrorCode.RequireKeysNeqViolated,\n \"A require_keys_neq expression was violated\",\n ],\n [exports.LangErrorCode.RequireGtViolated, \"A require_gt expression was violated\"],\n [exports.LangErrorCode.RequireGteViolated, \"A require_gte expression was violated\"],\n // Accounts.\n [\n exports.LangErrorCode.AccountDiscriminatorAlreadySet,\n \"The account discriminator was already set on this account\",\n ],\n [\n exports.LangErrorCode.AccountDiscriminatorNotFound,\n \"No 8 byte discriminator was found on the account\",\n ],\n [\n exports.LangErrorCode.AccountDiscriminatorMismatch,\n \"8 byte discriminator did not match what was expected\",\n ],\n [exports.LangErrorCode.AccountDidNotDeserialize, \"Failed to deserialize the account\"],\n [exports.LangErrorCode.AccountDidNotSerialize, \"Failed to serialize the account\"],\n [\n exports.LangErrorCode.AccountNotEnoughKeys,\n \"Not enough account keys given to the instruction\",\n ],\n [exports.LangErrorCode.AccountNotMutable, \"The given account is not mutable\"],\n [\n exports.LangErrorCode.AccountOwnedByWrongProgram,\n \"The given account is owned by a different program than expected\",\n ],\n [exports.LangErrorCode.InvalidProgramId, \"Program ID was not as expected\"],\n [exports.LangErrorCode.InvalidProgramExecutable, \"Program account is not executable\"],\n [exports.LangErrorCode.AccountNotSigner, \"The given account did not sign\"],\n [\n exports.LangErrorCode.AccountNotSystemOwned,\n \"The given account is not owned by the system program\",\n ],\n [\n exports.LangErrorCode.AccountNotInitialized,\n \"The program expected this account to be already initialized\",\n ],\n [\n exports.LangErrorCode.AccountNotProgramData,\n \"The given account is not a program data account\",\n ],\n [\n exports.LangErrorCode.AccountNotAssociatedTokenAccount,\n \"The given account is not the associated token account\",\n ],\n [\n exports.LangErrorCode.AccountSysvarMismatch,\n \"The given public key does not match the required sysvar\",\n ],\n // State.\n [\n exports.LangErrorCode.StateInvalidAddress,\n \"The given state account does not have the correct address\",\n ],\n // Miscellaneous\n [\n exports.LangErrorCode.DeclaredProgramIdMismatch,\n \"The declared program id does not match the actual program id\",\n ],\n // Deprecated\n [\n exports.LangErrorCode.Deprecated,\n \"The API being used is deprecated and should no longer be used\",\n ],\n]);\n//# sourceMappingURL=error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.translateAddress = exports.validateAccounts = exports.toInstruction = exports.parseIdlErrors = void 0;\nconst web3_js_1 = require(\"@solana/web3.js\");\nfunction parseIdlErrors(idl) {\n const errors = new Map();\n if (idl.errors) {\n idl.errors.forEach((e) => {\n var _a;\n let msg = (_a = e.msg) !== null && _a !== void 0 ? _a : e.name;\n errors.set(e.code, msg);\n });\n }\n return errors;\n}\nexports.parseIdlErrors = parseIdlErrors;\n// Allow either IdLInstruction or IdlStateMethod since the types share fields.\nfunction toInstruction(idlIx, ...args) {\n if (idlIx.args.length != args.length) {\n throw new Error(\"Invalid argument length\");\n }\n const ix = {};\n let idx = 0;\n idlIx.args.forEach((ixArg) => {\n ix[ixArg.name] = args[idx];\n idx += 1;\n });\n return ix;\n}\nexports.toInstruction = toInstruction;\n// Throws error if any account required for the `ix` is not given.\nfunction validateAccounts(ixAccounts, accounts = {}) {\n ixAccounts.forEach((acc) => {\n if (\"accounts\" in acc) {\n validateAccounts(acc.accounts, accounts[acc.name]);\n }\n else {\n if (accounts[acc.name] === undefined) {\n throw new Error(`Invalid arguments: ${acc.name} not provided.`);\n }\n }\n });\n}\nexports.validateAccounts = validateAccounts;\n// Translates an address to a Pubkey.\nfunction translateAddress(address) {\n return address instanceof web3_js_1.PublicKey ? address : new web3_js_1.PublicKey(address);\n}\nexports.translateAddress = translateAddress;\n//# sourceMappingURL=common.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.splitArgsAndCtx = void 0;\nfunction splitArgsAndCtx(idlIx, args) {\n var _a, _b;\n let options = {};\n const inputLen = idlIx.args ? idlIx.args.length : 0;\n if (args.length > inputLen) {\n if (args.length !== inputLen + 1) {\n throw new Error(`provided too many arguments ${args} to instruction ${idlIx === null || idlIx === void 0 ? void 0 : idlIx.name} expecting: ${(_b = (_a = idlIx.args) === null || _a === void 0 ? void 0 : _a.map((a) => a.name)) !== null && _b !== void 0 ? _b : []}`);\n }\n options = args.pop();\n }\n return [args, options];\n}\nexports.splitArgsAndCtx = splitArgsAndCtx;\n//# sourceMappingURL=context.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst error_js_1 = require(\"../../error.js\");\nconst common_js_1 = require(\"../common.js\");\nconst context_js_1 = require(\"../context.js\");\nconst features = __importStar(require(\"../../utils/features.js\"));\nclass InstructionNamespaceFactory {\n static build(idlIx, encodeFn, programId) {\n if (idlIx.name === \"_inner\") {\n throw new error_js_1.IdlError(\"the _inner name is reserved\");\n }\n const ix = (...args) => {\n const [ixArgs, ctx] = (0, context_js_1.splitArgsAndCtx)(idlIx, [...args]);\n (0, common_js_1.validateAccounts)(idlIx.accounts, ctx.accounts);\n validateInstruction(idlIx, ...args);\n const keys = ix.accounts(ctx.accounts);\n if (ctx.remainingAccounts !== undefined) {\n keys.push(...ctx.remainingAccounts);\n }\n if (features.isSet(\"debug-logs\")) {\n console.log(\"Outgoing account metas:\", keys);\n }\n return new web3_js_1.TransactionInstruction({\n keys,\n programId,\n data: encodeFn(idlIx.name, (0, common_js_1.toInstruction)(idlIx, ...ixArgs)),\n });\n };\n // Utility fn for ordering the accounts for this instruction.\n ix[\"accounts\"] = (accs) => {\n return InstructionNamespaceFactory.accountsArray(accs, idlIx.accounts, idlIx.name);\n };\n return ix;\n }\n static accountsArray(ctx, accounts, ixName) {\n if (!ctx) {\n return [];\n }\n return accounts\n .map((acc) => {\n // Nested accounts.\n const nestedAccounts = \"accounts\" in acc ? acc.accounts : undefined;\n if (nestedAccounts !== undefined) {\n const rpcAccs = ctx[acc.name];\n return InstructionNamespaceFactory.accountsArray(rpcAccs, acc.accounts, ixName).flat();\n }\n else {\n const account = acc;\n let pubkey;\n try {\n pubkey = (0, common_js_1.translateAddress)(ctx[acc.name]);\n }\n catch (err) {\n throw new Error(`Wrong input type for account \"${acc.name}\" in the instruction accounts object${ixName !== undefined ? ' for instruction \"' + ixName + '\"' : \"\"}. Expected PublicKey or string.`);\n }\n return {\n pubkey,\n isWritable: account.isMut,\n isSigner: account.isSigner,\n };\n }\n })\n .flat();\n }\n}\nexports.default = InstructionNamespaceFactory;\n// Throws error if any argument required for the `ix` is not given.\nfunction validateInstruction(ix, ...args) {\n // todo\n}\n//# sourceMappingURL=instruction.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decode = exports.encode = void 0;\nconst buffer_1 = require(\"buffer\");\nconst base64 = __importStar(require(\"base64-js\"));\nfunction encode(data) {\n return base64.fromByteArray(data);\n}\nexports.encode = encode;\nfunction decode(data) {\n return buffer_1.Buffer.from(base64.toByteArray(data));\n}\nexports.decode = decode;\n//# sourceMappingURL=base64.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decode = exports.encode = void 0;\nconst bs58_1 = __importDefault(require(\"bs58\"));\nfunction encode(data) {\n return bs58_1.default.encode(data);\n}\nexports.encode = encode;\nfunction decode(data) {\n return bs58_1.default.decode(data);\n}\nexports.decode = decode;\n//# sourceMappingURL=bs58.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.decode = exports.encode = void 0;\nconst buffer_1 = require(\"buffer\");\nfunction encode(data) {\n return data.reduce((str, byte) => str + byte.toString(16).padStart(2, \"0\"), \"0x\");\n}\nexports.encode = encode;\nfunction decode(data) {\n if (data.indexOf(\"0x\") === 0) {\n data = data.substr(2);\n }\n if (data.length % 2 === 1) {\n data = \"0\" + data;\n }\n let key = data.match(/.{2}/g);\n if (key === null) {\n return buffer_1.Buffer.from([]);\n }\n return buffer_1.Buffer.from(key.map((byte) => parseInt(byte, 16)));\n}\nexports.decode = decode;\n//# sourceMappingURL=hex.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.base64 = exports.bs58 = exports.utf8 = exports.hex = void 0;\nexports.hex = __importStar(require(\"./hex.js\"));\nexports.utf8 = __importStar(require(\"./utf8.js\"));\nexports.bs58 = __importStar(require(\"./bs58.js\"));\nexports.base64 = __importStar(require(\"./base64.js\"));\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.encode = exports.decode = void 0;\nconst common_1 = require(\"../common\");\nfunction decode(array) {\n const decoder = common_1.isBrowser\n ? new TextDecoder(\"utf-8\") // Browser https://caniuse.com/textencoder.\n : new (require(\"util\").TextDecoder)(\"utf-8\"); // Node.\n return decoder.decode(array);\n}\nexports.decode = decode;\nfunction encode(input) {\n const encoder = common_1.isBrowser\n ? new TextEncoder() // Browser.\n : new (require(\"util\").TextEncoder)(\"utf-8\"); // Node.\n return encoder.encode(input);\n}\nexports.encode = encode;\n//# sourceMappingURL=utf8.js.map","\"use strict\";\nvar _a;\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.chunks = exports.isBrowser = void 0;\n/**\n * Returns true if being run inside a web browser,\n * false if in a Node process or electron app.\n */\nexports.isBrowser = process.env.BROWSER ||\n (typeof window !== \"undefined\" && !((_a = window.process) === null || _a === void 0 ? void 0 : _a.hasOwnProperty(\"type\")));\n/**\n * Splits an array into chunks\n *\n * @param array Array of objects to chunk.\n * @param size The max size of a chunk.\n * @returns A two dimensional array where each T[] length is < the provided size.\n */\nfunction chunks(array, size) {\n return Array.apply(0, new Array(Math.ceil(array.length / size))).map((_, index) => array.slice(index * size, (index + 1) * size));\n}\nexports.chunks = chunks;\n//# sourceMappingURL=common.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isSet = exports.set = void 0;\nconst _AVAILABLE_FEATURES = new Set([\"anchor-deprecated-state\", \"debug-logs\"]);\nconst _FEATURES = new Map();\nfunction set(key) {\n if (!_AVAILABLE_FEATURES.has(key)) {\n throw new Error(\"Invalid feature\");\n }\n _FEATURES.set(key, true);\n}\nexports.set = set;\nfunction isSet(key) {\n return _FEATURES.get(key) !== undefined;\n}\nexports.isSet = isSet;\n//# sourceMappingURL=features.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.associated = exports.findProgramAddressSync = exports.createProgramAddressSync = exports.createWithSeedSync = void 0;\nconst buffer_1 = require(\"buffer\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst js_sha256_1 = require(\"js-sha256\");\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst common_js_1 = require(\"../program/common.js\");\n// Sync version of web3.PublicKey.createWithSeed.\nfunction createWithSeedSync(fromPublicKey, seed, programId) {\n const buffer = buffer_1.Buffer.concat([\n fromPublicKey.toBuffer(),\n buffer_1.Buffer.from(seed),\n programId.toBuffer(),\n ]);\n const hash = js_sha256_1.sha256.digest(buffer);\n return new web3_js_1.PublicKey(buffer_1.Buffer.from(hash));\n}\nexports.createWithSeedSync = createWithSeedSync;\n// Sync version of web3.PublicKey.createProgramAddress.\nfunction createProgramAddressSync(seeds, programId) {\n const MAX_SEED_LENGTH = 32;\n let buffer = buffer_1.Buffer.alloc(0);\n seeds.forEach(function (seed) {\n if (seed.length > MAX_SEED_LENGTH) {\n throw new TypeError(`Max seed length exceeded`);\n }\n buffer = buffer_1.Buffer.concat([buffer, toBuffer(seed)]);\n });\n buffer = buffer_1.Buffer.concat([\n buffer,\n programId.toBuffer(),\n buffer_1.Buffer.from(\"ProgramDerivedAddress\"),\n ]);\n let hash = (0, js_sha256_1.sha256)(new Uint8Array(buffer));\n let publicKeyBytes = new bn_js_1.default(hash, 16).toArray(undefined, 32);\n if (web3_js_1.PublicKey.isOnCurve(new Uint8Array(publicKeyBytes))) {\n throw new Error(`Invalid seeds, address must fall off the curve`);\n }\n return new web3_js_1.PublicKey(publicKeyBytes);\n}\nexports.createProgramAddressSync = createProgramAddressSync;\n// Sync version of web3.PublicKey.findProgramAddress.\nfunction findProgramAddressSync(seeds, programId) {\n let nonce = 255;\n let address;\n while (nonce != 0) {\n try {\n const seedsWithNonce = seeds.concat(buffer_1.Buffer.from([nonce]));\n address = createProgramAddressSync(seedsWithNonce, programId);\n }\n catch (err) {\n if (err instanceof TypeError) {\n throw err;\n }\n nonce--;\n continue;\n }\n return [address, nonce];\n }\n throw new Error(`Unable to find a viable program address nonce`);\n}\nexports.findProgramAddressSync = findProgramAddressSync;\nconst toBuffer = (arr) => {\n if (arr instanceof buffer_1.Buffer) {\n return arr;\n }\n else if (arr instanceof Uint8Array) {\n return buffer_1.Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength);\n }\n else {\n return buffer_1.Buffer.from(arr);\n }\n};\nasync function associated(programId, ...args) {\n let seeds = [buffer_1.Buffer.from([97, 110, 99, 104, 111, 114])]; // b\"anchor\".\n args.forEach((arg) => {\n seeds.push(arg instanceof buffer_1.Buffer ? arg : (0, common_js_1.translateAddress)(arg).toBuffer());\n });\n const [assoc] = await web3_js_1.PublicKey.findProgramAddress(seeds, (0, common_js_1.translateAddress)(programId));\n return assoc;\n}\nexports.associated = associated;\n//# sourceMappingURL=pubkey.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.IdlCoder = void 0;\nconst camelcase_1 = __importDefault(require(\"camelcase\"));\nconst borsh = __importStar(require(\"@project-serum/borsh\"));\nconst error_js_1 = require(\"../../error.js\");\nclass IdlCoder {\n static fieldLayout(field, types) {\n const fieldName = field.name !== undefined ? (0, camelcase_1.default)(field.name) : undefined;\n switch (field.type) {\n case \"bool\": {\n return borsh.bool(fieldName);\n }\n case \"u8\": {\n return borsh.u8(fieldName);\n }\n case \"i8\": {\n return borsh.i8(fieldName);\n }\n case \"u16\": {\n return borsh.u16(fieldName);\n }\n case \"i16\": {\n return borsh.i16(fieldName);\n }\n case \"u32\": {\n return borsh.u32(fieldName);\n }\n case \"i32\": {\n return borsh.i32(fieldName);\n }\n case \"f32\": {\n return borsh.f32(fieldName);\n }\n case \"u64\": {\n return borsh.u64(fieldName);\n }\n case \"i64\": {\n return borsh.i64(fieldName);\n }\n case \"f64\": {\n return borsh.f64(fieldName);\n }\n case \"u128\": {\n return borsh.u128(fieldName);\n }\n case \"i128\": {\n return borsh.i128(fieldName);\n }\n case \"bytes\": {\n return borsh.vecU8(fieldName);\n }\n case \"string\": {\n return borsh.str(fieldName);\n }\n case \"publicKey\": {\n return borsh.publicKey(fieldName);\n }\n default: {\n if (\"vec\" in field.type) {\n return borsh.vec(IdlCoder.fieldLayout({\n name: undefined,\n type: field.type.vec,\n }, types), fieldName);\n }\n else if (\"option\" in field.type) {\n return borsh.option(IdlCoder.fieldLayout({\n name: undefined,\n type: field.type.option,\n }, types), fieldName);\n }\n else if (\"defined\" in field.type) {\n const defined = field.type.defined;\n // User defined type.\n if (types === undefined) {\n throw new error_js_1.IdlError(\"User defined types not provided\");\n }\n const filtered = types.filter((t) => t.name === defined);\n if (filtered.length !== 1) {\n throw new error_js_1.IdlError(`Type not found: ${JSON.stringify(field)}`);\n }\n return IdlCoder.typeDefLayout(filtered[0], types, fieldName);\n }\n else if (\"array\" in field.type) {\n let arrayTy = field.type.array[0];\n let arrayLen = field.type.array[1];\n let innerLayout = IdlCoder.fieldLayout({\n name: undefined,\n type: arrayTy,\n }, types);\n return borsh.array(innerLayout, arrayLen, fieldName);\n }\n else {\n throw new Error(`Not yet implemented: ${field}`);\n }\n }\n }\n }\n static typeDefLayout(typeDef, types = [], name) {\n if (typeDef.type.kind === \"struct\") {\n const fieldLayouts = typeDef.type.fields.map((field) => {\n const x = IdlCoder.fieldLayout(field, types);\n return x;\n });\n return borsh.struct(fieldLayouts, name);\n }\n else if (typeDef.type.kind === \"enum\") {\n let variants = typeDef.type.variants.map((variant) => {\n const name = (0, camelcase_1.default)(variant.name);\n if (variant.fields === undefined) {\n return borsh.struct([], name);\n }\n const fieldLayouts = variant.fields.map((f) => {\n if (!f.hasOwnProperty(\"name\")) {\n throw new Error(\"Tuple enum variants not yet implemented.\");\n }\n // this typescript conversion is ok\n // because if f were of type IdlType\n // (that does not have a name property)\n // the check before would've errored\n return IdlCoder.fieldLayout(f, types);\n });\n return borsh.struct(fieldLayouts, name);\n });\n if (name !== undefined) {\n // Buffer-layout lib requires the name to be null (on construction)\n // when used as a field.\n return borsh.rustEnum(variants).replicate(name);\n }\n return borsh.rustEnum(variants, name);\n }\n else {\n throw new Error(`Unknown type kint: ${typeDef}`);\n }\n }\n}\nexports.IdlCoder = IdlCoder;\n//# sourceMappingURL=idl.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n var desc = Object.getOwnPropertyDescriptor(m, k);\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\n desc = { enumerable: true, get: function() { return m[k]; } };\n }\n Object.defineProperty(o, k2, desc);\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.LangErrorMessage = exports.LangErrorCode = exports.translateError = exports.ProgramError = exports.AnchorError = exports.ProgramErrorStack = exports.IdlError = void 0;\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst features = __importStar(require(\"./utils/features.js\"));\nclass IdlError extends Error {\n constructor(message) {\n super(message);\n this.name = \"IdlError\";\n }\n}\nexports.IdlError = IdlError;\nclass ProgramErrorStack {\n constructor(stack) {\n this.stack = stack;\n }\n static parse(logs) {\n var _a;\n const programKeyRegex = /^Program (\\w*) invoke/;\n const successRegex = /^Program \\w* success/;\n const programStack = [];\n for (let i = 0; i < logs.length; i++) {\n if (successRegex.exec(logs[i])) {\n programStack.pop();\n continue;\n }\n const programKey = (_a = programKeyRegex.exec(logs[i])) === null || _a === void 0 ? void 0 : _a[1];\n if (!programKey) {\n continue;\n }\n programStack.push(new web3_js_1.PublicKey(programKey));\n }\n return new ProgramErrorStack(programStack);\n }\n}\nexports.ProgramErrorStack = ProgramErrorStack;\nclass AnchorError extends Error {\n constructor(errorCode, errorMessage, errorLogs, logs, origin, comparedValues) {\n super(errorLogs.join(\"\\n\").replace(\"Program log: \", \"\"));\n this.errorLogs = errorLogs;\n this.logs = logs;\n this.error = { errorCode, errorMessage, comparedValues, origin };\n this._programErrorStack = ProgramErrorStack.parse(logs);\n }\n static parse(logs) {\n if (!logs) {\n return null;\n }\n const anchorErrorLogIndex = logs.findIndex((log) => log.startsWith(\"Program log: AnchorError\"));\n if (anchorErrorLogIndex === -1) {\n return null;\n }\n const anchorErrorLog = logs[anchorErrorLogIndex];\n const errorLogs = [anchorErrorLog];\n let comparedValues;\n if (anchorErrorLogIndex + 1 < logs.length) {\n // This catches the comparedValues where the following is logged\n // \n // Left:\n // \n // Right:\n // \n if (logs[anchorErrorLogIndex + 1] === \"Program log: Left:\") {\n const pubkeyRegex = /^Program log: (.*)$/;\n const leftPubkey = pubkeyRegex.exec(logs[anchorErrorLogIndex + 2])[1];\n const rightPubkey = pubkeyRegex.exec(logs[anchorErrorLogIndex + 4])[1];\n comparedValues = [\n new web3_js_1.PublicKey(leftPubkey),\n new web3_js_1.PublicKey(rightPubkey),\n ];\n errorLogs.push(...logs.slice(anchorErrorLogIndex + 1, anchorErrorLogIndex + 5));\n }\n // This catches the comparedValues where the following is logged\n // \n // Left: \n // Right: \n else if (logs[anchorErrorLogIndex + 1].startsWith(\"Program log: Left:\")) {\n const valueRegex = /^Program log: (Left|Right): (.*)$/;\n const leftValue = valueRegex.exec(logs[anchorErrorLogIndex + 1])[2];\n const rightValue = valueRegex.exec(logs[anchorErrorLogIndex + 2])[2];\n errorLogs.push(...logs.slice(anchorErrorLogIndex + 1, anchorErrorLogIndex + 3));\n comparedValues = [leftValue, rightValue];\n }\n }\n const regexNoInfo = /^Program log: AnchorError occurred\\. Error Code: (.*)\\. Error Number: (\\d*)\\. Error Message: (.*)\\./;\n const noInfoAnchorErrorLog = regexNoInfo.exec(anchorErrorLog);\n const regexFileLine = /^Program log: AnchorError thrown in (.*):(\\d*)\\. Error Code: (.*)\\. Error Number: (\\d*)\\. Error Message: (.*)\\./;\n const fileLineAnchorErrorLog = regexFileLine.exec(anchorErrorLog);\n const regexAccountName = /^Program log: AnchorError caused by account: (.*)\\. Error Code: (.*)\\. Error Number: (\\d*)\\. Error Message: (.*)\\./;\n const accountNameAnchorErrorLog = regexAccountName.exec(anchorErrorLog);\n if (noInfoAnchorErrorLog) {\n const [errorCodeString, errorNumber, errorMessage] = noInfoAnchorErrorLog.slice(1, 4);\n const errorCode = {\n code: errorCodeString,\n number: parseInt(errorNumber),\n };\n return new AnchorError(errorCode, errorMessage, errorLogs, logs, undefined, comparedValues);\n }\n else if (fileLineAnchorErrorLog) {\n const [file, line, errorCodeString, errorNumber, errorMessage] = fileLineAnchorErrorLog.slice(1, 6);\n const errorCode = {\n code: errorCodeString,\n number: parseInt(errorNumber),\n };\n const fileLine = { file, line: parseInt(line) };\n return new AnchorError(errorCode, errorMessage, errorLogs, logs, fileLine, comparedValues);\n }\n else if (accountNameAnchorErrorLog) {\n const [accountName, errorCodeString, errorNumber, errorMessage] = accountNameAnchorErrorLog.slice(1, 5);\n const origin = accountName;\n const errorCode = {\n code: errorCodeString,\n number: parseInt(errorNumber),\n };\n return new AnchorError(errorCode, errorMessage, errorLogs, logs, origin, comparedValues);\n }\n else {\n return null;\n }\n }\n get program() {\n return this._programErrorStack.stack[this._programErrorStack.stack.length - 1];\n }\n get programErrorStack() {\n return this._programErrorStack.stack;\n }\n toString() {\n return this.message;\n }\n}\nexports.AnchorError = AnchorError;\n// An error from a user defined program.\nclass ProgramError extends Error {\n constructor(code, msg, logs) {\n super();\n this.code = code;\n this.msg = msg;\n this.logs = logs;\n if (logs) {\n this._programErrorStack = ProgramErrorStack.parse(logs);\n }\n }\n static parse(err, idlErrors) {\n const errString = err.toString();\n // TODO: don't rely on the error string. web3.js should preserve the error\n // code information instead of giving us an untyped string.\n let unparsedErrorCode;\n if (errString.includes(\"custom program error:\")) {\n let components = errString.split(\"custom program error: \");\n if (components.length !== 2) {\n return null;\n }\n else {\n unparsedErrorCode = components[1];\n }\n }\n else {\n const matches = errString.match(/\"Custom\":([0-9]+)}/g);\n if (!matches || matches.length > 1) {\n return null;\n }\n unparsedErrorCode = matches[0].match(/([0-9]+)/g)[0];\n }\n let errorCode;\n try {\n errorCode = parseInt(unparsedErrorCode);\n }\n catch (parseErr) {\n return null;\n }\n // Parse user error.\n let errorMsg = idlErrors.get(errorCode);\n if (errorMsg !== undefined) {\n return new ProgramError(errorCode, errorMsg, err.logs);\n }\n // Parse framework internal error.\n errorMsg = exports.LangErrorMessage.get(errorCode);\n if (errorMsg !== undefined) {\n return new ProgramError(errorCode, errorMsg, err.logs);\n }\n // Unable to parse the error. Just return the untranslated error.\n return null;\n }\n get program() {\n var _a;\n return (_a = this._programErrorStack) === null || _a === void 0 ? void 0 : _a.stack[this._programErrorStack.stack.length - 1];\n }\n get programErrorStack() {\n var _a;\n return (_a = this._programErrorStack) === null || _a === void 0 ? void 0 : _a.stack;\n }\n toString() {\n return this.msg;\n }\n}\nexports.ProgramError = ProgramError;\nfunction translateError(err, idlErrors) {\n if (features.isSet(\"debug-logs\")) {\n console.log(\"Translating error:\", err);\n }\n const anchorError = AnchorError.parse(err.logs);\n if (anchorError) {\n return anchorError;\n }\n const programError = ProgramError.parse(err, idlErrors);\n if (programError) {\n return programError;\n }\n if (err.logs) {\n const handler = {\n get: function (target, prop) {\n if (prop === \"programErrorStack\") {\n return target.programErrorStack.stack;\n }\n else if (prop === \"program\") {\n return target.programErrorStack.stack[err.programErrorStack.stack.length - 1];\n }\n else {\n // this is the normal way to return all other props\n // without modifying them.\n // @ts-expect-error\n return Reflect.get(...arguments);\n }\n },\n };\n err.programErrorStack = ProgramErrorStack.parse(err.logs);\n return new Proxy(err, handler);\n }\n return err;\n}\nexports.translateError = translateError;\nexports.LangErrorCode = {\n // Instructions.\n InstructionMissing: 100,\n InstructionFallbackNotFound: 101,\n InstructionDidNotDeserialize: 102,\n InstructionDidNotSerialize: 103,\n // IDL instructions.\n IdlInstructionStub: 1000,\n IdlInstructionInvalidProgram: 1001,\n // Constraints.\n ConstraintMut: 2000,\n ConstraintHasOne: 2001,\n ConstraintSigner: 2002,\n ConstraintRaw: 2003,\n ConstraintOwner: 2004,\n ConstraintRentExempt: 2005,\n ConstraintSeeds: 2006,\n ConstraintExecutable: 2007,\n ConstraintState: 2008,\n ConstraintAssociated: 2009,\n ConstraintAssociatedInit: 2010,\n ConstraintClose: 2011,\n ConstraintAddress: 2012,\n ConstraintZero: 2013,\n ConstraintTokenMint: 2014,\n ConstraintTokenOwner: 2015,\n ConstraintMintMintAuthority: 2016,\n ConstraintMintFreezeAuthority: 2017,\n ConstraintMintDecimals: 2018,\n ConstraintSpace: 2019,\n // Require.\n RequireViolated: 2500,\n RequireEqViolated: 2501,\n RequireKeysEqViolated: 2502,\n RequireNeqViolated: 2503,\n RequireKeysNeqViolated: 2504,\n RequireGtViolated: 2505,\n RequireGteViolated: 2506,\n // Accounts.\n AccountDiscriminatorAlreadySet: 3000,\n AccountDiscriminatorNotFound: 3001,\n AccountDiscriminatorMismatch: 3002,\n AccountDidNotDeserialize: 3003,\n AccountDidNotSerialize: 3004,\n AccountNotEnoughKeys: 3005,\n AccountNotMutable: 3006,\n AccountOwnedByWrongProgram: 3007,\n InvalidProgramId: 3008,\n InvalidProgramExecutable: 3009,\n AccountNotSigner: 3010,\n AccountNotSystemOwned: 3011,\n AccountNotInitialized: 3012,\n AccountNotProgramData: 3013,\n AccountNotAssociatedTokenAccount: 3014,\n AccountSysvarMismatch: 3015,\n // State.\n StateInvalidAddress: 4000,\n // Miscellaneous\n DeclaredProgramIdMismatch: 4100,\n // Used for APIs that shouldn't be used anymore.\n Deprecated: 5000,\n};\nexports.LangErrorMessage = new Map([\n // Instructions.\n [\n exports.LangErrorCode.InstructionMissing,\n \"8 byte instruction identifier not provided\",\n ],\n [\n exports.LangErrorCode.InstructionFallbackNotFound,\n \"Fallback functions are not supported\",\n ],\n [\n exports.LangErrorCode.InstructionDidNotDeserialize,\n \"The program could not deserialize the given instruction\",\n ],\n [\n exports.LangErrorCode.InstructionDidNotSerialize,\n \"The program could not serialize the given instruction\",\n ],\n // Idl instructions.\n [\n exports.LangErrorCode.IdlInstructionStub,\n \"The program was compiled without idl instructions\",\n ],\n [\n exports.LangErrorCode.IdlInstructionInvalidProgram,\n \"The transaction was given an invalid program for the IDL instruction\",\n ],\n // Constraints.\n [exports.LangErrorCode.ConstraintMut, \"A mut constraint was violated\"],\n [exports.LangErrorCode.ConstraintHasOne, \"A has_one constraint was violated\"],\n [exports.LangErrorCode.ConstraintSigner, \"A signer constraint was violated\"],\n [exports.LangErrorCode.ConstraintRaw, \"A raw constraint was violated\"],\n [exports.LangErrorCode.ConstraintOwner, \"An owner constraint was violated\"],\n [\n exports.LangErrorCode.ConstraintRentExempt,\n \"A rent exemption constraint was violated\",\n ],\n [exports.LangErrorCode.ConstraintSeeds, \"A seeds constraint was violated\"],\n [exports.LangErrorCode.ConstraintExecutable, \"An executable constraint was violated\"],\n [exports.LangErrorCode.ConstraintState, \"A state constraint was violated\"],\n [exports.LangErrorCode.ConstraintAssociated, \"An associated constraint was violated\"],\n [\n exports.LangErrorCode.ConstraintAssociatedInit,\n \"An associated init constraint was violated\",\n ],\n [exports.LangErrorCode.ConstraintClose, \"A close constraint was violated\"],\n [exports.LangErrorCode.ConstraintAddress, \"An address constraint was violated\"],\n [exports.LangErrorCode.ConstraintZero, \"Expected zero account discriminant\"],\n [exports.LangErrorCode.ConstraintTokenMint, \"A token mint constraint was violated\"],\n [exports.LangErrorCode.ConstraintTokenOwner, \"A token owner constraint was violated\"],\n [\n exports.LangErrorCode.ConstraintMintMintAuthority,\n \"A mint mint authority constraint was violated\",\n ],\n [\n exports.LangErrorCode.ConstraintMintFreezeAuthority,\n \"A mint freeze authority constraint was violated\",\n ],\n [\n exports.LangErrorCode.ConstraintMintDecimals,\n \"A mint decimals constraint was violated\",\n ],\n [exports.LangErrorCode.ConstraintSpace, \"A space constraint was violated\"],\n // Require.\n [exports.LangErrorCode.RequireViolated, \"A require expression was violated\"],\n [exports.LangErrorCode.RequireEqViolated, \"A require_eq expression was violated\"],\n [\n exports.LangErrorCode.RequireKeysEqViolated,\n \"A require_keys_eq expression was violated\",\n ],\n [exports.LangErrorCode.RequireNeqViolated, \"A require_neq expression was violated\"],\n [\n exports.LangErrorCode.RequireKeysNeqViolated,\n \"A require_keys_neq expression was violated\",\n ],\n [exports.LangErrorCode.RequireGtViolated, \"A require_gt expression was violated\"],\n [exports.LangErrorCode.RequireGteViolated, \"A require_gte expression was violated\"],\n // Accounts.\n [\n exports.LangErrorCode.AccountDiscriminatorAlreadySet,\n \"The account discriminator was already set on this account\",\n ],\n [\n exports.LangErrorCode.AccountDiscriminatorNotFound,\n \"No 8 byte discriminator was found on the account\",\n ],\n [\n exports.LangErrorCode.AccountDiscriminatorMismatch,\n \"8 byte discriminator did not match what was expected\",\n ],\n [exports.LangErrorCode.AccountDidNotDeserialize, \"Failed to deserialize the account\"],\n [exports.LangErrorCode.AccountDidNotSerialize, \"Failed to serialize the account\"],\n [\n exports.LangErrorCode.AccountNotEnoughKeys,\n \"Not enough account keys given to the instruction\",\n ],\n [exports.LangErrorCode.AccountNotMutable, \"The given account is not mutable\"],\n [\n exports.LangErrorCode.AccountOwnedByWrongProgram,\n \"The given account is owned by a different program than expected\",\n ],\n [exports.LangErrorCode.InvalidProgramId, \"Program ID was not as expected\"],\n [exports.LangErrorCode.InvalidProgramExecutable, \"Program account is not executable\"],\n [exports.LangErrorCode.AccountNotSigner, \"The given account did not sign\"],\n [\n exports.LangErrorCode.AccountNotSystemOwned,\n \"The given account is not owned by the system program\",\n ],\n [\n exports.LangErrorCode.AccountNotInitialized,\n \"The program expected this account to be already initialized\",\n ],\n [\n exports.LangErrorCode.AccountNotProgramData,\n \"The given account is not a program data account\",\n ],\n [\n exports.LangErrorCode.AccountNotAssociatedTokenAccount,\n \"The given account is not the associated token account\",\n ],\n [\n exports.LangErrorCode.AccountSysvarMismatch,\n \"The given public key does not match the required sysvar\",\n ],\n // State.\n [\n exports.LangErrorCode.StateInvalidAddress,\n \"The given state account does not have the correct address\",\n ],\n // Miscellaneous\n [\n exports.LangErrorCode.DeclaredProgramIdMismatch,\n \"The declared program id does not match the actual program id\",\n ],\n // Deprecated\n [\n exports.LangErrorCode.Deprecated,\n \"The API being used is deprecated and should no longer be used\",\n ],\n]);\n//# sourceMappingURL=error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.isSet = exports.set = void 0;\nconst _AVAILABLE_FEATURES = new Set([\"anchor-deprecated-state\", \"debug-logs\"]);\nconst _FEATURES = new Map();\nfunction set(key) {\n if (!_AVAILABLE_FEATURES.has(key)) {\n throw new Error(\"Invalid feature\");\n }\n _FEATURES.set(key, true);\n}\nexports.set = set;\nfunction isSet(key) {\n return _FEATURES.get(key) !== undefined;\n}\nexports.isSet = isSet;\n//# sourceMappingURL=features.js.map","import{Buffer as t}from\"buffer\";import{PublicKey as e,Transaction as n,TransactionInstruction as r,SendTransactionError as o,NONCE_ACCOUNT_LENGTH as i,SystemProgram as s,SYSVAR_RENT_PUBKEY as a}from\"@solana/web3.js\";import*as c from\"@solana/web3.js\";export{c as web3};import u from\"bn.js\";export{default as BN}from\"bn.js\";import d from\"bs58\";import*as l from\"base64-js\";import h from\"camelcase\";import{sha256 as p}from\"js-sha256\";import*as f from\"@project-serum/borsh\";import{inflate as m}from\"pako\";import y from\"eventemitter3\";import*as g from\"assert\";var w=Object.freeze({__proto__:null,encode:function(t){return t.reduce(((t,e)=>t+e.toString(16).padStart(2,\"0\")),\"0x\")},decode:function(e){0===e.indexOf(\"0x\")&&(e=e.substr(2)),e.length%2==1&&(e=\"0\"+e);let n=e.match(/.{2}/g);return null===n?t.from([]):t.from(n.map((t=>parseInt(t,16))))}});function v(t){return new TextDecoder(\"utf-8\").decode(t)}function b(t){return(new TextEncoder).encode(t)}var A=Object.freeze({__proto__:null,decode:v,encode:b});function _(t){return d.encode(t)}var S=Object.freeze({__proto__:null,encode:_,decode:function(t){return d.decode(t)}});function E(e){return t.from(l.toByteArray(e))}var I=Object.freeze({__proto__:null,encode:function(t){return l.fromByteArray(t)},decode:E}),k=Object.freeze({__proto__:null,hex:w,utf8:A,bs58:S,base64:I});function M(t){const e=new Map;return t.errors&&t.errors.forEach((t=>{var n;let r=null!==(n=t.msg)&&void 0!==n?n:t.name;e.set(t.code,r)})),e}function x(t,...e){if(t.args.length!=e.length)throw new Error(\"Invalid argument length\");const n={};let r=0;return t.args.forEach((t=>{n[t.name]=e[r],r+=1})),n}function P(t,e={}){t.forEach((t=>{if(\"accounts\"in t)P(t.accounts,e[t.name]);else if(void 0===e[t.name])throw new Error(`Invalid arguments: ${t.name} not provided.`)}))}function L(t){return t instanceof e?t:new e(t)}class T extends TypeError{constructor(t,e){let n;const{message:r,...o}=t,{path:i}=t;super(0===i.length?r:\"At path: \"+i.join(\".\")+\" -- \"+r),this.value=void 0,this.key=void 0,this.type=void 0,this.refinement=void 0,this.path=void 0,this.branch=void 0,this.failures=void 0,Object.assign(this,o),this.name=this.constructor.name,this.failures=()=>{var r;return null!=(r=n)?r:n=[t,...e()]}}}function C(t){return\"object\"==typeof t&&null!=t}function z(t){return\"string\"==typeof t?JSON.stringify(t):\"\"+t}function B(t,e,n,r){if(!0===t)return;!1===t?t={}:\"string\"==typeof t&&(t={message:t});const{path:o,branch:i}=e,{type:s}=n,{refinement:a,message:c=\"Expected a value of type `\"+s+\"`\"+(a?\" with refinement `\"+a+\"`\":\"\")+\", but received: `\"+z(r)+\"`\"}=t;return{value:r,type:s,refinement:a,key:o[o.length-1],path:o,branch:i,...t,message:c}}function*O(t,e,n,r){var o;C(o=t)&&\"function\"==typeof o[Symbol.iterator]||(t=[t]);for(const o of t){const t=B(o,e,n,r);t&&(yield t)}}function*D(t,e,n){void 0===n&&(n={});const{path:r=[],branch:o=[t],coerce:i=!1,mask:s=!1}=n,a={path:r,branch:o};if(i&&(t=e.coercer(t,a),s&&\"type\"!==e.type&&C(e.schema)&&C(t)&&!Array.isArray(t)))for(const n in t)void 0===e.schema[n]&&delete t[n];let c=!0;for(const n of e.validator(t,a))c=!1,yield[n,void 0];for(let[n,u,d]of e.entries(t,a)){const e=D(u,d,{path:void 0===n?r:[...r,n],branch:void 0===n?o:[...o,u],coerce:i,mask:s});for(const r of e)r[0]?(c=!1,yield[r[0],void 0]):i&&(u=r[1],void 0===n?t=u:t instanceof Map?t.set(n,u):t instanceof Set?t.add(u):C(t)&&(t[n]=u))}if(c)for(const n of e.refiner(t,a))c=!1,yield[n,void 0];c&&(yield[void 0,t])}class N{constructor(t){this.TYPE=void 0,this.type=void 0,this.schema=void 0,this.coercer=void 0,this.validator=void 0,this.refiner=void 0,this.entries=void 0;const{type:e,schema:n,validator:r,refiner:o,coercer:i=(t=>t),entries:s=function*(){}}=t;this.type=e,this.schema=n,this.entries=s,this.coercer=i,this.validator=r?(t,e)=>O(r(t,e),e,this,t):()=>[],this.refiner=o?(t,e)=>O(o(t,e),e,this,t):()=>[]}assert(t){return function(t,e){const n=U(t,e);if(n[0])throw n[0]}(t,this)}create(t){return R(t,this)}is(t){return V(t,this)}mask(t){return function(t,e){const n=U(t,e,{coerce:!0,mask:!0});if(n[0])throw n[0];return n[1]}(t,this)}validate(t,e){return void 0===e&&(e={}),U(t,this,e)}}function R(t,e){const n=U(t,e,{coerce:!0});if(n[0])throw n[0];return n[1]}function V(t,e){return!U(t,e)[0]}function U(t,e,n){void 0===n&&(n={});const r=D(t,e,n),o=function(t){const{done:e,value:n}=t.next();return e?void 0:n}(r);if(o[0]){return[new T(o[0],(function*(){for(const t of r)t[0]&&(yield t[0])})),void 0]}return[void 0,o[1]]}function j(t,e){return new N({type:t,schema:null,validator:e})}function $(t){return new N({type:\"array\",schema:t,*entries(e){if(t&&Array.isArray(e))for(const[n,r]of e.entries())yield[n,r,t]},coercer:t=>Array.isArray(t)?t.slice():t,validator:t=>Array.isArray(t)||\"Expected an array value, but received: \"+z(t)})}function K(t){const e=z(t),n=typeof t;return new N({type:\"literal\",schema:\"string\"===n||\"number\"===n||\"boolean\"===n?t:null,validator:n=>n===t||\"Expected the literal `\"+e+\"`, but received: \"+z(n)})}function q(t){return new N({...t,validator:(e,n)=>null===e||t.validator(e,n),refiner:(e,n)=>null===e||t.refiner(e,n)})}function F(){return j(\"number\",(t=>\"number\"==typeof t&&!isNaN(t)||\"Expected a number, but received: \"+z(t)))}function W(t){return new N({...t,validator:(e,n)=>void 0===e||t.validator(e,n),refiner:(e,n)=>void 0===e||t.refiner(e,n)})}function G(){return j(\"string\",(t=>\"string\"==typeof t||\"Expected a string, but received: \"+z(t)))}function H(t){const e=Object.keys(t);return new N({type:\"type\",schema:t,*entries(n){if(C(n))for(const r of e)yield[r,n[r],t[r]]},validator:t=>C(t)||\"Expected an object, but received: \"+z(t)})}function J(t){const e=t.map((t=>t.type)).join(\" | \");return new N({type:\"union\",schema:null,coercer:(e,n)=>(t.find((t=>{const[n]=t.validate(e,{coerce:!0});return!n}))||Z()).coercer(e,n),validator(n,r){const o=[];for(const e of t){const[...t]=D(n,e,r),[i]=t;if(!i[0])return[];for(const[e]of t)e&&o.push(e)}return[\"Expected the value to satisfy a union of `\"+e+\"`, but received: \"+z(n),...o]}})}function Z(){return j(\"unknown\",(()=>!0))}async function X(t,e,n){if(e.length<=99)return await Q(t,e,n);{const r=function(t,e){return Array.apply(0,new Array(Math.ceil(t.length/e))).map(((n,r)=>t.slice(r*e,(r+1)*e)))}(e,99);return(await Promise.all(r.map((e=>Q(t,e,n))))).flat()}}async function Q(t,e,n){const r=null!=n?n:t.commitment;return(await t.getMultipleAccountsInfo(e,r)).map(((t,n)=>null===t?null:{publicKey:e[n],account:t}))}async function Y(t,e,n,r,i){n&&n.length>0&&e.sign(...n);const s=e._compile(),a=s.serialize(),c=e._serialize(a).toString(\"base64\"),u={encoding:\"base64\",commitment:null!=r?r:t.commitment};if(i){const t=(Array.isArray(i)?i:s.nonProgramIds()).map((t=>t.toBase58()));u.accounts={encoding:\"base64\",addresses:t}}n&&(u.sigVerify=!0);const d=[c,u],l=R(await t._rpcRequest(\"simulateTransaction\",d),rt);if(\"error\"in l){let t;if(\"data\"in l.error&&(t=l.error.data.logs,t&&Array.isArray(t))){const e=\"\\n \",n=e+t.join(e);console.error(l.error.message,n)}throw new o(\"failed to simulate transaction: \"+l.error.message,t)}return l.result}function tt(t){return function(t,e,n){return new N({...t,coercer:(r,o)=>V(r,e)?t.coercer(n(r,o),o):t.coercer(r,o)})}(nt(t),et,(e=>\"error\"in e?e:{...e,result:R(e.result,t)}))}const et=nt(Z());function nt(t){return J([H({jsonrpc:K(\"2.0\"),id:G(),result:t}),H({jsonrpc:K(\"2.0\"),id:G(),error:H({code:Z(),message:G(),data:W(j(\"any\",(()=>!0)))})})])}const rt=(ot=H({err:q(J([H({}),G()])),logs:q($(G())),accounts:W(q($(q(H({executable:j(\"boolean\",(t=>\"boolean\"==typeof t)),owner:G(),lamports:F(),data:$(G()),rentEpoch:W(F())}))))),unitsConsumed:W(F())}),tt(H({context:H({slot:F()}),value:ot})));var ot,it=Object.freeze({__proto__:null,invoke:async function(t,e,o,i){t=L(t),i||(i=lt());const s=new n;if(s.add(new r({programId:t,keys:null!=e?e:[],data:o})),void 0===i.sendAndConfirm)throw new Error(\"This function requires 'Provider.sendAndConfirm' to be implemented.\");return await i.sendAndConfirm(s,[])},getMultipleAccounts:X,simulateTransaction:Y});class st{constructor(t,e,n){this.connection=t,this.wallet=e,this.opts=n,this.publicKey=e.publicKey}static defaultOptions(){return{preflightCommitment:\"processed\",commitment:\"processed\"}}static local(t,e){throw new Error(\"Provider local is not available on browser.\")}static env(){throw new Error(\"Provider env is not available on browser.\")}async sendAndConfirm(t,e,n){var r;void 0===n&&(n=this.opts),t.feePayer=this.wallet.publicKey,t.recentBlockhash=(await this.connection.getRecentBlockhash(n.preflightCommitment)).blockhash,t=await this.wallet.signTransaction(t),(null!=e?e:[]).forEach((e=>{t.partialSign(e)}));const i=t.serialize();try{return await ct(this.connection,i,n)}catch(e){if(e instanceof ut){const n=await this.connection.getTransaction(_(t.signature),{commitment:\"confirmed\"});if(n){const t=null===(r=n.meta)||void 0===r?void 0:r.logMessages;throw t?new o(e.message,t):e}throw e}throw e}}async sendAll(t,e){void 0===e&&(e=this.opts);const n=await this.connection.getRecentBlockhash(e.preflightCommitment);let r=t.map((t=>{var e;let r=t.tx,o=null!==(e=t.signers)&&void 0!==e?e:[];return r.feePayer=this.wallet.publicKey,r.recentBlockhash=n.blockhash,o.forEach((t=>{r.partialSign(t)})),r}));const o=await this.wallet.signAllTransactions(r),i=[];for(let t=0;tt.startsWith(\"Program log: AnchorError\")));if(-1===n)return null;const r=t[n],o=[r];let i;if(n+11)return null;r=t[0].match(/([0-9]+)/g)[0]}try{o=parseInt(r)}catch(t){return null}let i=e.get(o);return void 0!==i?new bt(o,i,t.logs):(i=St.get(o),void 0!==i?new bt(o,i,t.logs):null)}get program(){var t;return null===(t=this._programErrorStack)||void 0===t?void 0:t.stack[this._programErrorStack.stack.length-1]}get programErrorStack(){var t;return null===(t=this._programErrorStack)||void 0===t?void 0:t.stack}toString(){return this.msg}}function At(t,e){mt(\"debug-logs\")&&console.log(\"Translating error:\",t);const n=vt.parse(t.logs);if(n)return n;const r=bt.parse(t,e);if(r)return r;if(t.logs){const e={get:function(e,n){return\"programErrorStack\"===n?e.programErrorStack.stack:\"program\"===n?e.programErrorStack.stack[t.programErrorStack.stack.length-1]:Reflect.get(...arguments)}};return t.programErrorStack=wt.parse(t.logs),new Proxy(t,e)}return t}const _t={InstructionMissing:100,InstructionFallbackNotFound:101,InstructionDidNotDeserialize:102,InstructionDidNotSerialize:103,IdlInstructionStub:1e3,IdlInstructionInvalidProgram:1001,ConstraintMut:2e3,ConstraintHasOne:2001,ConstraintSigner:2002,ConstraintRaw:2003,ConstraintOwner:2004,ConstraintRentExempt:2005,ConstraintSeeds:2006,ConstraintExecutable:2007,ConstraintState:2008,ConstraintAssociated:2009,ConstraintAssociatedInit:2010,ConstraintClose:2011,ConstraintAddress:2012,ConstraintZero:2013,ConstraintTokenMint:2014,ConstraintTokenOwner:2015,ConstraintMintMintAuthority:2016,ConstraintMintFreezeAuthority:2017,ConstraintMintDecimals:2018,ConstraintSpace:2019,RequireViolated:2500,RequireEqViolated:2501,RequireKeysEqViolated:2502,RequireNeqViolated:2503,RequireKeysNeqViolated:2504,RequireGtViolated:2505,RequireGteViolated:2506,AccountDiscriminatorAlreadySet:3e3,AccountDiscriminatorNotFound:3001,AccountDiscriminatorMismatch:3002,AccountDidNotDeserialize:3003,AccountDidNotSerialize:3004,AccountNotEnoughKeys:3005,AccountNotMutable:3006,AccountOwnedByWrongProgram:3007,InvalidProgramId:3008,InvalidProgramExecutable:3009,AccountNotSigner:3010,AccountNotSystemOwned:3011,AccountNotInitialized:3012,AccountNotProgramData:3013,AccountNotAssociatedTokenAccount:3014,AccountSysvarMismatch:3015,AccountReallocExceedsLimit:3016,AccountDuplicateReallocs:3017,StateInvalidAddress:4e3,DeclaredProgramIdMismatch:4100,Deprecated:5e3},St=new Map([[_t.InstructionMissing,\"8 byte instruction identifier not provided\"],[_t.InstructionFallbackNotFound,\"Fallback functions are not supported\"],[_t.InstructionDidNotDeserialize,\"The program could not deserialize the given instruction\"],[_t.InstructionDidNotSerialize,\"The program could not serialize the given instruction\"],[_t.IdlInstructionStub,\"The program was compiled without idl instructions\"],[_t.IdlInstructionInvalidProgram,\"The transaction was given an invalid program for the IDL instruction\"],[_t.ConstraintMut,\"A mut constraint was violated\"],[_t.ConstraintHasOne,\"A has_one constraint was violated\"],[_t.ConstraintSigner,\"A signer constraint was violated\"],[_t.ConstraintRaw,\"A raw constraint was violated\"],[_t.ConstraintOwner,\"An owner constraint was violated\"],[_t.ConstraintRentExempt,\"A rent exemption constraint was violated\"],[_t.ConstraintSeeds,\"A seeds constraint was violated\"],[_t.ConstraintExecutable,\"An executable constraint was violated\"],[_t.ConstraintState,\"A state constraint was violated\"],[_t.ConstraintAssociated,\"An associated constraint was violated\"],[_t.ConstraintAssociatedInit,\"An associated init constraint was violated\"],[_t.ConstraintClose,\"A close constraint was violated\"],[_t.ConstraintAddress,\"An address constraint was violated\"],[_t.ConstraintZero,\"Expected zero account discriminant\"],[_t.ConstraintTokenMint,\"A token mint constraint was violated\"],[_t.ConstraintTokenOwner,\"A token owner constraint was violated\"],[_t.ConstraintMintMintAuthority,\"A mint mint authority constraint was violated\"],[_t.ConstraintMintFreezeAuthority,\"A mint freeze authority constraint was violated\"],[_t.ConstraintMintDecimals,\"A mint decimals constraint was violated\"],[_t.ConstraintSpace,\"A space constraint was violated\"],[_t.RequireViolated,\"A require expression was violated\"],[_t.RequireEqViolated,\"A require_eq expression was violated\"],[_t.RequireKeysEqViolated,\"A require_keys_eq expression was violated\"],[_t.RequireNeqViolated,\"A require_neq expression was violated\"],[_t.RequireKeysNeqViolated,\"A require_keys_neq expression was violated\"],[_t.RequireGtViolated,\"A require_gt expression was violated\"],[_t.RequireGteViolated,\"A require_gte expression was violated\"],[_t.AccountDiscriminatorAlreadySet,\"The account discriminator was already set on this account\"],[_t.AccountDiscriminatorNotFound,\"No 8 byte discriminator was found on the account\"],[_t.AccountDiscriminatorMismatch,\"8 byte discriminator did not match what was expected\"],[_t.AccountDidNotDeserialize,\"Failed to deserialize the account\"],[_t.AccountDidNotSerialize,\"Failed to serialize the account\"],[_t.AccountNotEnoughKeys,\"Not enough account keys given to the instruction\"],[_t.AccountNotMutable,\"The given account is not mutable\"],[_t.AccountOwnedByWrongProgram,\"The given account is owned by a different program than expected\"],[_t.InvalidProgramId,\"Program ID was not as expected\"],[_t.InvalidProgramExecutable,\"Program account is not executable\"],[_t.AccountNotSigner,\"The given account did not sign\"],[_t.AccountNotSystemOwned,\"The given account is not owned by the system program\"],[_t.AccountNotInitialized,\"The program expected this account to be already initialized\"],[_t.AccountNotProgramData,\"The given account is not a program data account\"],[_t.AccountNotAssociatedTokenAccount,\"The given account is not the associated token account\"],[_t.AccountSysvarMismatch,\"The given public key does not match the required sysvar\"],[_t.AccountReallocExceedsLimit,\"The account reallocation exceeds the MAX_PERMITTED_DATA_INCREASE limit\"],[_t.AccountDuplicateReallocs,\"The account was duplicated for more than one reallocation\"],[_t.StateInvalidAddress,\"The given state account does not have the correct address\"],[_t.DeclaredProgramIdMismatch,\"The declared program id does not match the actual program id\"],[_t.Deprecated,\"The API being used is deprecated and should no longer be used\"]]);\n/*! *****************************************************************************\nCopyright (c) Microsoft Corporation.\n\nPermission to use, copy, modify, and/or distribute this software for any\npurpose with or without fee is hereby granted.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\nPERFORMANCE OF THIS SOFTWARE.\n***************************************************************************** */\nvar Et=function(){return Et=Object.assign||function(t){for(var e,n=1,r=arguments.length;nt.name===r));if(1!==o.length)throw new gt(`Type not found: ${JSON.stringify(t)}`);return Lt.typeDefLayout(o[0],e,n)}if(\"array\"in t.type){let r=t.type.array[0],o=t.type.array[1],i=Lt.fieldLayout({name:void 0,type:r},e);return f.array(i,o,n)}throw new Error(`Not yet implemented: ${t}`)}}static typeDefLayout(t,e=[],n){if(\"struct\"===t.type.kind){const r=t.type.fields.map((t=>Lt.fieldLayout(t,e)));return f.struct(r,n)}if(\"enum\"===t.type.kind){let r=t.type.variants.map((t=>{const n=h(t.name);if(void 0===t.fields)return f.struct([],n);const r=t.fields.map((t=>{if(!t.hasOwnProperty(\"name\"))throw new Error(\"Tuple enum variants not yet implemented.\");return Lt.fieldLayout(t,e)}));return f.struct(r,n)}));return void 0!==n?f.rustEnum(r).replicate(n):f.rustEnum(r,n)}throw new Error(`Unknown type kint: ${t}`)}}class Tt{constructor(t){this.idl=t,this.ixLayout=Tt.parseIxLayout(t);const e=new Map;t.instructions.forEach((t=>{const n=zt(\"global\",t.name);e.set(d.encode(n),{layout:this.ixLayout.get(t.name),name:t.name})})),t.state&&t.state.methods.map((t=>{const n=zt(\"state\",t.name);e.set(d.encode(n),{layout:this.ixLayout.get(t.name),name:t.name})})),this.sighashLayouts=e}encode(t,e){return this._encode(\"global\",t,e)}encodeState(t,e){return this._encode(\"state\",t,e)}_encode(e,n,r){const o=t.alloc(1e3),i=h(n),s=this.ixLayout.get(i);if(!s)throw new Error(`Unknown method: ${i}`);const a=s.encode(r,o),c=o.slice(0,a);return t.concat([zt(e,n),c])}static parseIxLayout(t){const e=(t.state?t.state.methods:[]).map((e=>{let n=e.args.map((e=>{var n,r;return Lt.fieldLayout(e,Array.from([...null!==(n=t.accounts)&&void 0!==n?n:[],...null!==(r=t.types)&&void 0!==r?r:[]]))}));const r=h(e.name);return[r,f.struct(n,r)]})).concat(t.instructions.map((e=>{let n=e.args.map((e=>{var n,r;return Lt.fieldLayout(e,Array.from([...null!==(n=t.accounts)&&void 0!==n?n:[],...null!==(r=t.types)&&void 0!==r?r:[]]))}));const r=h(e.name);return[r,f.struct(n,r)]})));return new Map(e)}decode(e,n=\"hex\"){\"string\"==typeof e&&(e=\"hex\"===n?t.from(e,\"hex\"):d.decode(e));let r=d.encode(e.slice(0,8)),o=e.slice(8);const i=this.sighashLayouts.get(r);return i?{data:i.layout.decode(o),name:i.name}:null}format(t,e){return Ct.format(t,e,this.idl)}}class Ct{static format(t,e,n){const r=n.instructions.filter((e=>t.name===e.name))[0];if(void 0===r)return console.error(\"Invalid instruction given\"),null;const o=r.args.map((e=>({name:e.name,type:Ct.formatIdlType(e.type),data:Ct.formatIdlData(e,t.data[e.name],n.types)}))),i=Ct.flattenIdlAccounts(r.accounts);return{args:o,accounts:e.map(((t,e)=>e`;if(\"option\"in t)return`Option<${this.formatIdlType(t.option)}>`;if(\"defined\"in t)return t.defined;if(\"array\"in t)return`Array<${t.array[0]}; ${t.array[1]}>`;throw new Error(`Unknown IDL type: ${t}`)}static formatIdlData(t,e,n){if(\"string\"==typeof t.type)return e.toString();if(t.type.hasOwnProperty(\"vec\"))return\"[\"+e.map((e=>this.formatIdlData({name:\"\",type:t.type.vec},e))).join(\", \")+\"]\";if(t.type.hasOwnProperty(\"option\"))return null===e?\"null\":this.formatIdlData({name:\"\",type:t.type.option},e,n);if(t.type.hasOwnProperty(\"defined\")){if(void 0===n)throw new Error(\"User defined types not provided\");const r=n.filter((e=>e.name===t.type.defined));if(1!==r.length)throw new Error(`Type not found: ${t.type.defined}`);return Ct.formatIdlDataDefined(r[0],e,n)}return\"unknown\"}static formatIdlDataDefined(t,e,n){if(\"struct\"===t.type.kind){const r=t.type;return\"{ \"+Object.keys(e).map((t=>{const o=r.fields.filter((e=>e.name===t))[0];if(void 0===o)throw new Error(\"Unable to find type\");return t+\": \"+Ct.formatIdlData(o,e[t],n)})).join(\", \")+\" }\"}if(0===t.type.variants.length)return\"{}\";if(t.type.variants[0].name){const r=t.type.variants,o=Object.keys(e)[0],i=e[o],s=Object.keys(i).map((t=>{var e;const s=i[t],a=null===(e=r[o])||void 0===e?void 0:e.filter((e=>e.name===t))[0];if(void 0===a)throw new Error(\"Unable to find variant\");return t+\": \"+Ct.formatIdlData(a,s,n)})).join(\", \"),a=h(o,{pascalCase:!0});return 0===s.length?a:`${a} { ${s} }`}return\"Tuple formatting not yet implemented\"}static flattenIdlAccounts(t,e){return t.map((t=>{const n=function(t){const e=t.replace(/([A-Z])/g,\" $1\");return e.charAt(0).toUpperCase()+e.slice(1)}(t.name);if(t.hasOwnProperty(\"accounts\")){const r=e?`${e} > ${n}`:n;return Ct.flattenIdlAccounts(t.accounts,r)}return{...t,name:e?`${e} > ${n}`:n}})).flat()}}function zt(e,n){var r;let o=`${e}:${void 0===r&&(r={}),Pt(n,Et({delimiter:\"_\"},r))}`;return t.from(p.digest(o)).slice(0,8)}function Bt(t,e){if(\"enum\"===e.type.kind){let n=e.type.variants.map((e=>void 0===e.fields?0:e.fields.map((e=>{if(\"object\"!=typeof e||!(\"name\"in e))throw new Error(\"Tuple enum variants not yet implemented.\");return Ot(t,e.type)})).reduce(((t,e)=>t+e))));return Math.max(...n)+1}return void 0===e.type.fields?0:e.type.fields.map((e=>Ot(t,e.type))).reduce(((t,e)=>t+e),0)}function Ot(t,e){var n,r;switch(e){case\"bool\":case\"u8\":case\"i8\":case\"bytes\":case\"string\":return 1;case\"i16\":case\"u16\":return 2;case\"u32\":case\"i32\":case\"f32\":return 4;case\"u64\":case\"i64\":case\"f64\":return 8;case\"u128\":case\"i128\":return 16;case\"publicKey\":return 32;default:if(\"vec\"in e)return 1;if(\"option\"in e)return 1+Ot(t,e.option);if(\"coption\"in e)return 4+Ot(t,e.coption);if(\"defined\"in e){const o=null!==(r=null===(n=t.types)||void 0===n?void 0:n.filter((t=>t.name===e.defined)))&&void 0!==r?r:[];if(1!==o.length)throw new gt(`Type not found: ${JSON.stringify(e)}`);return Bt(t,o[0])}if(\"array\"in e){let n=e.array[0],r=e.array[1];return Ot(t,n)*r}throw new Error(`Invalid type ${JSON.stringify(e)}`)}}const Dt=8;class Nt{constructor(t){if(void 0===t.accounts)return void(this.accountLayouts=new Map);const e=t.accounts.map((e=>[e.name,Lt.typeDefLayout(e,t.types)]));this.accountLayouts=new Map(e),this.idl=t}async encode(e,n){const r=t.alloc(1e3),o=this.accountLayouts.get(e);if(!o)throw new Error(`Unknown account: ${e}`);const i=o.encode(n,r);let s=r.slice(0,i),a=Nt.accountDiscriminator(e);return t.concat([a,s])}decode(t,e){if(Nt.accountDiscriminator(t).compare(e.slice(0,8)))throw new Error(\"Invalid account discriminator\");return this.decodeUnchecked(t,e)}decodeUnchecked(t,e){const n=e.slice(8),r=this.accountLayouts.get(t);if(!r)throw new Error(`Unknown account: ${t}`);return r.decode(n)}memcmp(e,n){const r=Nt.accountDiscriminator(e);return{offset:0,bytes:d.encode(n?t.concat([r,n]):r)}}size(t){var e;return 8+(null!==(e=Bt(this.idl,t))&&void 0!==e?e:0)}static accountDiscriminator(e){return t.from(p.digest(`account:${h(e,{pascalCase:!0})}`)).slice(0,8)}}class Rt{constructor(t){if(void 0===t.events)return void(this.layouts=new Map);const e=t.events.map((e=>{let n={name:e.name,type:{kind:\"struct\",fields:e.fields.map((t=>({name:t.name,type:t.type})))}};return[e.name,Lt.typeDefLayout(n,t.types)]}));this.layouts=new Map(e),this.discriminators=new Map(void 0===t.events?[]:t.events.map((t=>[l.fromByteArray(Vt(t.name)),t.name])))}decode(e){let n;try{n=t.from(l.toByteArray(e))}catch(t){return null}const r=l.fromByteArray(n.slice(0,8)),o=this.discriminators.get(r);if(void 0===o)return null;const i=this.layouts.get(o);if(!i)throw new Error(`Unknown event: ${o}`);return{data:i.decode(n.slice(8)),name:o}}}function Vt(e){return t.from(p.digest(`event:${e}`)).slice(0,8)}class Ut{constructor(t){if(void 0===t.state)throw new Error(\"Idl state not defined.\");this.layout=Lt.typeDefLayout(t.state.struct,t.types)}async encode(e,n){const r=t.alloc(1e3),o=this.layout.encode(n,r),i=await jt(e),s=r.slice(0,o);return t.concat([i,s])}decode(t){const e=t.slice(8);return this.layout.decode(e)}}async function jt(e){let n=mt(\"anchor-deprecated-state\")?\"account\":\"state\";return t.from(p.digest(`${n}:${e}`)).slice(0,8)}class $t{constructor(t){if(void 0===t.types)return void(this.typeLayouts=new Map);const e=t.types.map((e=>[e.name,Lt.typeDefLayout(e,t.types)]));this.typeLayouts=new Map(e),this.idl=t}encode(e,n){const r=t.alloc(1e3),o=this.typeLayouts.get(e);if(!o)throw new Error(`Unknown type: ${e}`);const i=o.encode(n,r);return r.slice(0,i)}decode(t,e){const n=this.typeLayouts.get(t);if(!n)throw new Error(`Unknown type: ${t}`);return n.decode(e)}}class Kt{constructor(t){this.instruction=new Tt(t),this.accounts=new Nt(t),this.events=new Rt(t),t.state&&(this.state=new Ut(t)),this.types=new $t(t)}}var qt=\"undefined\"!=typeof globalThis?globalThis:\"undefined\"!=typeof window?window:\"undefined\"!=typeof global?global:\"undefined\"!=typeof self?self:{};function Ft(t){return t&&t.__esModule&&Object.prototype.hasOwnProperty.call(t,\"default\")?t.default:t}class Wt{constructor(t,e){if(!Number.isInteger(t))throw new TypeError(\"span must be an integer\");this.span=t,this.property=e}makeDestinationObject(){return{}}decode(t,e){throw new Error(\"Layout is abstract\")}encode(t,e,n){throw new Error(\"Layout is abstract\")}getSpan(t,e){if(0>this.span)throw new RangeError(\"indeterminate span\");return this.span}replicate(t){const e=Object.create(this.constructor.prototype);return Object.assign(e,this),e.property=t,e}fromArray(t){}}var Gt=Wt;class Ht extends Wt{isCount(){throw new Error(\"ExternalLayout is abstract\")}}class Jt extends Ht{constructor(t,e,n){if(!(t instanceof Wt))throw new TypeError(\"layout must be a Layout\");if(void 0===e)e=0;else if(!Number.isInteger(e))throw new TypeError(\"offset must be integer or undefined\");super(t.span,n||t.property),this.layout=t,this.offset=e}isCount(){return this.layout instanceof Zt||this.layout instanceof Xt}decode(t,e){return void 0===e&&(e=0),this.layout.decode(t,e+this.offset)}encode(t,e,n){return void 0===n&&(n=0),this.layout.encode(t,e,n+this.offset)}}class Zt extends Wt{constructor(t,e){if(super(t,e),6t&&e instanceof Wt),!0))throw new TypeError(\"fields must be array of Layout instances\");\"boolean\"==typeof e&&void 0===n&&(n=e,e=void 0);for(const e of t)if(0>e.span&&void 0===e.property)throw new Error(\"fields cannot contain unnamed variable-length layout\");let r=-1;try{r=t.reduce(((t,e)=>t+e.getSpan()),0)}catch(t){}super(r,e),this.fields=t,this.decodePrefixes=!!n}getSpan(t,e){if(0<=this.span)return this.span;void 0===e&&(e=0);let n=0;try{n=this.fields.reduce(((n,r)=>{const o=r.getSpan(t,e);return e+=o,n+o}),0)}catch(t){throw new RangeError(\"indeterminate span\")}return n}decode(t,e){void 0===e&&(e=0);const n=this.makeDestinationObject();for(const r of this.fields)if(void 0!==r.property&&(n[r.property]=r.decode(t,e)),e+=r.getSpan(t,e),this.decodePrefixes&&t.length===e)break;return n}encode(t,e,n){void 0===n&&(n=0);const r=n;let o=0,i=0;for(const r of this.fields){let s=r.span;if(i=0s&&(s=r.getSpan(e,n)))}o=n,n+=s}return o+i-r}fromArray(t){const e=this.makeDestinationObject();for(const n of this.fields)void 0!==n.property&&0n.span?e=-1:0<=e&&(e+=n.span)}}}class oe{constructor(t){this.property=t}decode(){throw new Error(\"UnionDiscriminator is abstract\")}encode(){throw new Error(\"UnionDiscriminator is abstract\")}}class ie extends oe{constructor(t,e){if(!(t instanceof Ht&&t.isCount()))throw new TypeError(\"layout must be an unsigned integer ExternalLayout\");super(e||t.property||\"variant\"),this.layout=t}decode(t,e){return this.layout.decode(t,e)}encode(t,e,n){return this.layout.encode(t,e,n)}}class se extends Wt{constructor(t,e,n){const r=t instanceof Zt||t instanceof Xt;if(r)t=new ie(new Jt(t));else if(t instanceof Ht&&t.isCount())t=new ie(t);else if(!(t instanceof oe))throw new TypeError(\"discr must be a UnionDiscriminator or an unsigned integer layout\");if(void 0===e&&(e=null),!(null===e||e instanceof Wt))throw new TypeError(\"defaultLayout must be null or a Layout\");if(null!==e){if(0>e.span)throw new Error(\"defaultLayout must have constant span\");void 0===e.property&&(e=e.replicate(\"content\"))}let o=-1;e&&(o=e.span,0<=o&&r&&(o+=t.layout.span)),super(o,n),this.discriminator=t,this.usesPrefixDiscriminator=r,this.defaultLayout=e,this.registry={};let i=this.defaultGetSourceVariant.bind(this);this.getSourceVariant=function(t){return i(t)},this.configGetSourceVariant=function(t){i=t.bind(this)}}getSpan(t,e){if(0<=this.span)return this.span;void 0===e&&(e=0);const n=this.getVariant(t,e);if(!n)throw new Error(\"unable to determine span for unrecognized variant\");return n.getSpan(t,e)}defaultGetSourceVariant(t){if(t.hasOwnProperty(this.discriminator.property)){if(this.defaultLayout&&t.hasOwnProperty(this.defaultLayout.property))return;const e=this.registry[t[this.discriminator.property]];if(e&&(!e.layout||t.hasOwnProperty(e.property)))return e}else for(const e in this.registry){const n=this.registry[e];if(t.hasOwnProperty(n.property))return n}throw new Error(\"unable to infer src variant\")}decode(t,e){let n;void 0===e&&(e=0);const r=this.discriminator,o=r.decode(t,e);let i=this.registry[o];if(void 0===i){let s=0;i=this.defaultLayout,this.usesPrefixDiscriminator&&(s=r.layout.span),n=this.makeDestinationObject(),n[r.property]=o,n[i.property]=this.defaultLayout.decode(t,e+s)}else n=i.decode(t,e);return n}encode(t,e,n){void 0===n&&(n=0);const r=this.getSourceVariant(t);if(void 0===r){const r=this.discriminator,o=this.defaultLayout;let i=0;return this.usesPrefixDiscriminator&&(i=r.layout.span),r.encode(t[r.property],e,n),i+o.encode(t[o.property],e,n+i)}return r.encode(t,e,n)}addVariant(t,e,n){const r=new ae(this,t,e,n);return this.registry[t]=r,r}getVariant(t,e){let n=t;return Buffer.isBuffer(t)&&(void 0===e&&(e=0),n=this.discriminator.decode(t,e)),this.registry[n]}}class ae extends Wt{constructor(t,e,n,r){if(!(t instanceof se))throw new TypeError(\"union must be a Union\");if(!Number.isInteger(e)||0>e)throw new TypeError(\"variant must be a (non-negative) integer\");if(\"string\"==typeof n&&void 0===r&&(r=n,n=null),n){if(!(n instanceof Wt))throw new TypeError(\"layout must be a Layout\");if(null!==t.defaultLayout&&0<=n.span&&n.span>t.defaultLayout.span)throw new Error(\"variant span exceeds span of containing union\");if(\"string\"!=typeof r)throw new TypeError(\"variant must have a String property\")}let o=t.span;0>t.span&&(o=n?n.span:0,0<=o&&t.usesPrefixDiscriminator&&(o+=t.discriminator.layout.span)),super(o,r),this.union=t,this.variant=e,this.layout=n||null}getSpan(t,e){if(0<=this.span)return this.span;void 0===e&&(e=0);let n=0;return this.union.usesPrefixDiscriminator&&(n=this.union.discriminator.layout.span),n+this.layout.getSpan(t,e+n)}decode(t,e){const n=this.makeDestinationObject();if(void 0===e&&(e=0),this!==this.union.getVariant(t,e))throw new Error(\"variant mismatch\");let r=0;return this.union.usesPrefixDiscriminator&&(r=this.union.discriminator.layout.span),this.layout?n[this.property]=this.layout.decode(t,e+r):this.property?n[this.property]=!0:this.union.usesPrefixDiscriminator&&(n[this.union.discriminator.property]=this.variant),n}encode(t,e,n){void 0===n&&(n=0);let r=0;if(this.union.usesPrefixDiscriminator&&(r=this.union.discriminator.layout.span),this.layout&&!t.hasOwnProperty(this.property))throw new TypeError(\"variant lacks property \"+this.property);this.union.discriminator.encode(this.variant,e,n);let o=r;if(this.layout&&(this.layout.encode(t[this.property],e,n+r),o+=this.layout.getSpan(e,n+r),0<=this.union.span&&o>this.union.span))throw new Error(\"encoded variant overruns containing union\");return o}fromArray(t){if(this.layout)return this.layout.fromArray(t)}}class ce extends Wt{constructor(t,e){if(!(t instanceof Ht&&t.isCount()||Number.isInteger(t)&&0<=t))throw new TypeError(\"length must be positive integer or an unsigned integer ExternalLayout\");let n=-1;t instanceof Ht||(n=t),super(n,e),this.length=t}getSpan(t,e){let n=this.span;return 0>n&&(n=this.length.decode(t,e)),n}decode(t,e){void 0===e&&(e=0);let n=this.span;return 0>n&&(n=this.length.decode(t,e)),t.slice(e,e+n)}encode(t,e,n){let r=this.length;if(this.length instanceof Ht&&(r=t.length),!Buffer.isBuffer(t)||r!==t.length)throw new TypeError((o=\"Blob.encode\",((i=this).property?o+\"[\"+i.property+\"]\":o)+\" requires (length \"+r+\") Buffer as src\"));var o,i;if(n+r>e.length)throw new RangeError(\"encoding overruns Buffer\");return e.write(t.toString(\"hex\"),n,r,\"hex\"),this.length instanceof Ht&&this.length.encode(r,e,n),r}}var ue=(t,e,n)=>new Jt(t,e,n),de=t=>new Zt(1,t),le=t=>new Zt(4,t),he=t=>new ee(t),pe=t=>new ne(t),fe=(t,e,n)=>new re(t,e,n),me=(t,e,n)=>new se(t,e,n),ye=(t,e)=>new ce(t,e);class ge{constructor(t){}encode(t,n){switch(h(t)){case\"initializeMint\":return function({decimals:t,mintAuthority:n,freezeAuthority:r}){return be({initializeMint:{decimals:t,mintAuthority:n.toBuffer(),freezeAuthorityOption:!!r,freezeAuthority:(r||e.default).toBuffer()}})}(n);case\"initializeAccount\":return be({initializeAccount:{}});case\"initializeMultisig\":return function({m:t}){return be({initializeMultisig:{m:t}})}(n);case\"transfer\":return function({amount:t}){return be({transfer:{amount:t}})}(n);case\"approve\":return function({amount:t}){return be({approve:{amount:t}})}(n);case\"revoke\":return be({revoke:{}});case\"setAuthority\":return function({authorityType:t,newAuthority:e}){return be({setAuthority:{authorityType:t,newAuthority:e}})}(n);case\"mintTo\":return function({amount:t}){return be({mintTo:{amount:t}})}(n);case\"burn\":return function({amount:t}){return be({burn:{amount:t}})}(n);case\"closeAccount\":return be({closeAccount:{}});case\"freezeAccount\":return be({freezeAccount:{}});case\"thawAccount\":return be({thawAccount:{}});case\"transferChecked\":return function({amount:t,decimals:e}){return be({transferChecked:{amount:t,decimals:e}})}(n);case\"approvedChecked\":return function({amount:t,decimals:e}){return be({approveChecked:{amount:t,decimals:e}})}(n);case\"mintToChecked\":return function({amount:t,decimals:e}){return be({mintToChecked:{amount:t,decimals:e}})}(n);case\"burnChecked\":return function({amount:t,decimals:e}){return be({burnChecked:{amount:t,decimals:e}})}(n);case\"intializeAccount2\":return function({authority:t}){return be({initilaizeAccount2:{authority:t}})}(n);case\"syncNative\":return be({syncNative:{}});case\"initializeAccount3\":return function({authority:t}){return be({initializeAccount3:{authority:t}})}(n);case\"initializeMultisig2\":return function({m:t}){return be({initializeMultisig2:{m:t}})}(n);case\"initializeMint2\":return function({decimals:t,mintAuthority:e,freezeAuthority:n}){return be({encodeInitializeMint2:{decimals:t,mintAuthority:e,freezeAuthority:n}})}(n);default:throw new Error(`Invalid instruction: ${t}`)}}encodeState(t,e){throw new Error(\"SPL token does not have state\")}}const we=me(de(\"instruction\"));function ve(t){return ye(32,t)}function be(t){let e=Buffer.alloc(Ae),n=we.encode(t,e);return e.slice(0,n)}we.addVariant(0,fe([de(\"decimals\"),ye(32,\"mintAuthority\"),de(\"freezeAuthorityOption\"),ve(\"freezeAuthority\")]),\"initializeMint\"),we.addVariant(1,fe([]),\"initializeAccount\"),we.addVariant(2,fe([de(\"m\")]),\"initializeMultisig\"),we.addVariant(3,fe([he(\"amount\")]),\"transfer\"),we.addVariant(4,fe([he(\"amount\")]),\"approve\"),we.addVariant(5,fe([]),\"revoke\"),we.addVariant(6,fe([de(\"authorityType\"),de(\"newAuthorityOption\"),ve(\"newAuthority\")]),\"setAuthority\"),we.addVariant(7,fe([he(\"amount\")]),\"mintTo\"),we.addVariant(8,fe([he(\"amount\")]),\"burn\"),we.addVariant(9,fe([]),\"closeAccount\"),we.addVariant(10,fe([]),\"freezeAccount\"),we.addVariant(11,fe([]),\"thawAccount\"),we.addVariant(12,fe([he(\"amount\"),de(\"decimals\")]),\"transferChecked\"),we.addVariant(13,fe([he(\"amount\"),de(\"decimals\")]),\"approvedChecked\"),we.addVariant(14,fe([he(\"amount\"),de(\"decimals\")]),\"mintToChecked\"),we.addVariant(15,fe([he(\"amount\"),de(\"decimals\")]),\"burnedChecked\"),we.addVariant(16,fe([ve(\"authority\")]),\"InitializeAccount2\"),we.addVariant(17,fe([]),\"syncNative\"),we.addVariant(18,fe([ve(\"authority\")]),\"initializeAccount3\"),we.addVariant(19,fe([de(\"m\")]),\"initializeMultisig2\"),we.addVariant(20,fe([de(\"decimals\"),ve(\"mintAuthority\"),de(\"freezeAuthorityOption\"),ve(\"freezeAuthority\")]),\"initializeMint2\");const Ae=Math.max(...Object.values(we.registry).map((t=>t.span)));class _e{constructor(t){}encode(t,e){throw new Error(\"SPL token does not have state\")}decode(t){throw new Error(\"SPL token does not have state\")}}function Se(t){return new ke(ye(8),(t=>Le.fromBuffer(t)),(t=>t.toBuffer()),t)}function Ee(t){return new ke(ye(32),(t=>new e(t)),(t=>t.toBuffer()),t)}function Ie(t,e){return new Me(t,e)}class ke extends Gt{constructor(t,e,n,r){super(t.span,r),this.layout=t,this.decoder=e,this.encoder=n}decode(t,e){return this.decoder(this.layout.decode(t,e))}encode(t,e,n){return this.layout.encode(this.encoder(t),e,n)}getSpan(t,e){return this.layout.getSpan(t,e)}}class Me extends Gt{constructor(t,e){super(-1,e),this.layout=t,this.discriminator=le()}encode(t,e,n=0){return null==t?this.layout.span+this.discriminator.encode(0,e,n):(this.discriminator.encode(1,e,n),this.layout.encode(t,e,n+4)+4)}decode(t,e=0){const n=this.discriminator.decode(t,e);if(0===n)return null;if(1===n)return this.layout.decode(t,e+4);throw new Error(\"Invalid coption \"+this.layout.property)}getSpan(t,e=0){return this.layout.getSpan(t,e+4)+4}}function xe(t){if(0===t)return!1;if(1===t)return!0;throw new Error(\"Invalid bool: \"+t)}function Pe(t){return t?1:0}class Le extends u{toBuffer(){const t=super.toArray().reverse(),e=Buffer.from(t);if(8===e.length)return e;if(e.length>=8)throw new Error(\"u64 too large\");const n=Buffer.alloc(8);return e.copy(n),n}static fromBuffer(t){if(8!==t.length)throw new Error(`Invalid buffer length: ${t.length}`);return new Le([...t].reverse().map((t=>`00${t.toString(16)}`.slice(-2))).join(\"\"),16)}}class Te{constructor(t){this.idl=t}async encode(t,e){switch(t){case\"token\":{const t=Buffer.alloc(165),n=Be.encode(e,t);return t.slice(0,n)}case\"mint\":{const t=Buffer.alloc(82),n=Ce.encode(e,t);return t.slice(0,n)}default:throw new Error(`Invalid account name: ${t}`)}}decode(t,e){return this.decodeUnchecked(t,e)}decodeUnchecked(t,e){switch(t){case\"token\":return function(t){return Be.decode(t)}(e);case\"mint\":return function(t){return Ce.decode(t)}(e);default:throw new Error(`Invalid account name: ${t}`)}}memcmp(t,e){switch(t){case\"token\":return{dataSize:165};case\"mint\":return{dataSize:82};default:throw new Error(`Invalid account name: ${t}`)}}size(t){var e;return null!==(e=Bt(this.idl,t))&&void 0!==e?e:0}}const Ce=fe([Ie(Ee(),\"mintAuthority\"),Se(\"supply\"),de(\"decimals\"),(ze=\"isInitialized\",new ke(de(),xe,Pe,ze)),Ie(Ee(),\"freezeAuthority\")]);var ze;const Be=fe([Ee(\"mint\"),Ee(\"authority\"),Se(\"amount\"),Ie(Ee(),\"delegate\"),de(\"state\"),Ie(Se(),\"isNative\"),Se(\"delegatedAmount\"),Ie(Ee(),\"closeAuthority\")]);class Oe{constructor(t){}decode(t){throw new Error(\"SPL token program does not have events\")}}class De{constructor(t){}encode(t,e){throw new Error(\"SPL token does not have user-defined types\")}decode(t,e){throw new Error(\"SPL token does not have user-defined types\")}}class Ne{constructor(t){this.instruction=new ge(t),this.accounts=new Te(t),this.events=new Oe(t),this.state=new _e(t),this.types=new De(t)}}class Re{constructor(t){}encode(t,e){switch(h(t)){case\"createAccount\":return function({lamports:t,space:e,owner:n}){return Ke({createAccount:{lamports:t,space:e,owner:n.toBuffer()}})}(e);case\"assign\":return function({owner:t}){return Ke({assign:{owner:t.toBuffer()}})}(e);case\"transfer\":return function({lamports:t}){return Ke({transfer:{lamports:t}})}(e);case\"createAccountWithSeed\":return function({base:t,seed:e,lamports:n,space:r,owner:o}){return Ke({createAccountWithSeed:{base:t.toBuffer(),seed:e,lamports:n,space:r,owner:o.toBuffer()}},$e.getVariant(3).span+e.length)}(e);case\"advanceNonceAccount\":return function({authorized:t}){return Ke({advanceNonceAccount:{authorized:t.toBuffer()}})}(e);case\"withdrawNonceAccount\":return function({lamports:t}){return Ke({withdrawNonceAccount:{lamports:t}})}(e);case\"initializeNonceAccount\":return function({authorized:t}){return Ke({initializeNonceAccount:{authorized:t.toBuffer()}})}(e);case\"authorizeNonceAccount\":return function({authorized:t}){return Ke({authorizeNonceAccount:{authorized:t.toBuffer()}})}(e);case\"allocate\":return function({space:t}){return Ke({allocate:{space:t}})}(e);case\"allocateWithSeed\":return function({base:t,seed:e,space:n,owner:r}){return Ke({allocateWithSeed:{base:t.toBuffer(),seed:e,space:n,owner:r.toBuffer()}},$e.getVariant(9).span+e.length)}(e);case\"assignWithSeed\":return function({base:t,seed:e,owner:n}){return Ke({assignWithSeed:{base:t.toBuffer(),seed:e,owner:n.toBuffer()}},$e.getVariant(10).span+e.length)}(e);case\"transferWithSeed\":return function({lamports:t,seed:e,owner:n}){return Ke({transferWithSeed:{lamports:t,seed:e,owner:n.toBuffer()}},$e.getVariant(11).span+e.length)}(e);default:throw new Error(`Invalid instruction: ${t}`)}}encodeState(t,e){throw new Error(\"System does not have state\")}}class Ve extends Gt{constructor(t){super(-1,t),this.property=t,this.layout=fe([le(\"length\"),le(\"lengthPadding\"),ye(ue(le(),-8),\"chars\")],this.property)}encode(t,e,n=0){if(null==t)return this.layout.span;const r={chars:Buffer.from(t,\"utf8\")};return this.layout.encode(r,e,n)}decode(t,e=0){return this.layout.decode(t,e).chars.toString()}getSpan(t,e=0){return le().span+le().span+new u(new Uint8Array(t).slice(e,e+4),10,\"le\").toNumber()}}function Ue(t){return new Ve(t)}function je(t){return ye(32,t)}const $e=me(le(\"instruction\"));function Ke(t,e){const n=Buffer.alloc(null!=e?e:qe),r=$e.encode(t,n);return void 0===e?n.slice(0,r):n}$e.addVariant(0,fe([pe(\"lamports\"),pe(\"space\"),je(\"owner\")]),\"createAccount\"),$e.addVariant(1,fe([je(\"owner\")]),\"assign\"),$e.addVariant(2,fe([pe(\"lamports\")]),\"transfer\"),$e.addVariant(3,fe([je(\"base\"),Ue(\"seed\"),pe(\"lamports\"),pe(\"space\"),je(\"owner\")]),\"createAccountWithSeed\"),$e.addVariant(4,fe([je(\"authorized\")]),\"advanceNonceAccount\"),$e.addVariant(5,fe([pe(\"lamports\")]),\"withdrawNonceAccount\"),$e.addVariant(6,fe([je(\"authorized\")]),\"initializeNonceAccount\"),$e.addVariant(7,fe([je(\"authorized\")]),\"authorizeNonceAccount\"),$e.addVariant(8,fe([pe(\"space\")]),\"allocate\"),$e.addVariant(9,fe([je(\"base\"),Ue(\"seed\"),pe(\"space\"),je(\"owner\")]),\"allocateWithSeed\"),$e.addVariant(10,fe([je(\"base\"),Ue(\"seed\"),je(\"owner\")]),\"assignWithSeed\"),$e.addVariant(11,fe([pe(\"lamports\"),Ue(\"seed\"),je(\"owner\")]),\"transferWithSeed\");const qe=Math.max(...Object.values($e.registry).map((t=>t.span)));class Fe{constructor(t){}encode(t,e){throw new Error(\"System does not have state\")}decode(t){throw new Error(\"System does not have state\")}}class We{constructor(t){this.idl=t}async encode(t,e){if(\"nonce\"===t){const t=Buffer.alloc(i),n=Je.encode(e,t);return t.slice(0,n)}throw new Error(`Invalid account name: ${t}`)}decode(t,e){return this.decodeUnchecked(t,e)}decodeUnchecked(t,e){if(\"nonce\"===t)return function(t){return Je.decode(t)}(e);throw new Error(`Invalid account name: ${t}`)}memcmp(t,e){if(\"nonce\"===t)return{dataSize:i};throw new Error(`Invalid account name: ${t}`)}size(t){var e;return null!==(e=Bt(this.idl,t))&&void 0!==e?e:0}}class Ge extends Gt{constructor(t,e,n,r){super(t.span,r),this.layout=t,this.decoder=e,this.encoder=n}decode(t,e){return this.decoder(this.layout.decode(t,e))}encode(t,e,n){return this.layout.encode(this.encoder(t),e,n)}getSpan(t,e){return this.layout.getSpan(t,e)}}function He(t){return new Ge(ye(32),(t=>new e(t)),(t=>t.toBuffer()),t)}const Je=fe([le(\"version\"),le(\"state\"),He(\"authorizedPubkey\"),He(\"nonce\"),fe([he(\"lamportsPerSignature\")],\"feeCalculator\")]);class Ze{constructor(t){}decode(t){throw new Error(\"System program does not have events\")}}class Xe{constructor(t){}encode(t,e){throw new Error(\"System does not have user-defined types\")}decode(t,e){throw new Error(\"System does not have user-defined types\")}}class Qe{constructor(t){this.instruction=new Re(t),this.accounts=new We(t),this.events=new Ze(t),this.state=new Fe(t),this.types=new Xe(t)}}var Ye=Object.freeze({__proto__:null,hash:function(t){return p(t)}});function tn(n,r,o){const i=t.concat([n.toBuffer(),t.from(r),o.toBuffer()]),s=p.digest(i);return new e(t.from(s))}function en(n,r){let o=t.alloc(0);n.forEach((function(e){if(e.length>32)throw new TypeError(\"Max seed length exceeded\");o=t.concat([o,rn(e)])})),o=t.concat([o,r.toBuffer(),t.from(\"ProgramDerivedAddress\")]);let i=p(new Uint8Array(o)),s=new u(i,16).toArray(void 0,32);if(e.isOnCurve(new Uint8Array(s)))throw new Error(\"Invalid seeds, address must fall off the curve\");return new e(s)}function nn(e,n){let r,o=255;for(;0!=o;){try{r=en(e.concat(t.from([o])),n)}catch(t){if(t instanceof TypeError)throw t;o--;continue}return[r,o]}throw new Error(\"Unable to find a viable program address nonce\")}const rn=e=>e instanceof t?e:e instanceof Uint8Array?t.from(e.buffer,e.byteOffset,e.byteLength):t.from(e);async function on(n,...r){let o=[t.from([97,110,99,104,111,114])];r.forEach((e=>{o.push(e instanceof t?e:L(e).toBuffer())}));const[i]=await e.findProgramAddress(o,L(n));return i}var sn=Object.freeze({__proto__:null,createWithSeedSync:tn,createProgramAddressSync:en,findProgramAddressSync:nn,associated:on});const an=new e(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\"),cn=new e(\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\");var un=Object.freeze({__proto__:null,TOKEN_PROGRAM_ID:an,ASSOCIATED_PROGRAM_ID:cn,associatedAddress:async function({mint:t,owner:n}){return(await e.findProgramAddress([n.toBuffer(),an.toBuffer(),t.toBuffer()],cn))[0]}}),dn={exports:{}};!function(t,e){var n=\"undefined\"!=typeof self?self:qt,r=function(){function t(){this.fetch=!1,this.DOMException=n.DOMException}return t.prototype=n,new t}();!function(t){!function(e){var n=\"URLSearchParams\"in t,r=\"Symbol\"in t&&\"iterator\"in Symbol,o=\"FileReader\"in t&&\"Blob\"in t&&function(){try{return new Blob,!0}catch(t){return!1}}(),i=\"FormData\"in t,s=\"ArrayBuffer\"in t;if(s)var a=[\"[object Int8Array]\",\"[object Uint8Array]\",\"[object Uint8ClampedArray]\",\"[object Int16Array]\",\"[object Uint16Array]\",\"[object Int32Array]\",\"[object Uint32Array]\",\"[object Float32Array]\",\"[object Float64Array]\"],c=ArrayBuffer.isView||function(t){return t&&a.indexOf(Object.prototype.toString.call(t))>-1};function u(t){if(\"string\"!=typeof t&&(t=String(t)),/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError(\"Invalid character in header field name\");return t.toLowerCase()}function d(t){return\"string\"!=typeof t&&(t=String(t)),t}function l(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return r&&(e[Symbol.iterator]=function(){return e}),e}function h(t){this.map={},t instanceof h?t.forEach((function(t,e){this.append(e,t)}),this):Array.isArray(t)?t.forEach((function(t){this.append(t[0],t[1])}),this):t&&Object.getOwnPropertyNames(t).forEach((function(e){this.append(e,t[e])}),this)}function p(t){if(t.bodyUsed)return Promise.reject(new TypeError(\"Already read\"));t.bodyUsed=!0}function f(t){return new Promise((function(e,n){t.onload=function(){e(t.result)},t.onerror=function(){n(t.error)}}))}function m(t){var e=new FileReader,n=f(e);return e.readAsArrayBuffer(t),n}function y(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function g(){return this.bodyUsed=!1,this._initBody=function(t){var e;this._bodyInit=t,t?\"string\"==typeof t?this._bodyText=t:o&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:i&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:n&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():s&&o&&((e=t)&&DataView.prototype.isPrototypeOf(e))?(this._bodyArrayBuffer=y(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):s&&(ArrayBuffer.prototype.isPrototypeOf(t)||c(t))?this._bodyArrayBuffer=y(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText=\"\",this.headers.get(\"content-type\")||(\"string\"==typeof t?this.headers.set(\"content-type\",\"text/plain;charset=UTF-8\"):this._bodyBlob&&this._bodyBlob.type?this.headers.set(\"content-type\",this._bodyBlob.type):n&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set(\"content-type\",\"application/x-www-form-urlencoded;charset=UTF-8\"))},o&&(this.blob=function(){var t=p(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error(\"could not read FormData body as blob\");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?p(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(m)}),this.text=function(){var t=p(this);if(t)return t;if(this._bodyBlob)return function(t){var e=new FileReader,n=f(e);return e.readAsText(t),n}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),n=new Array(e.length),r=0;r-1?r:n),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,(\"GET\"===this.method||\"HEAD\"===this.method)&&o)throw new TypeError(\"Body not allowed for GET or HEAD requests\");this._initBody(o)}function b(t){var e=new FormData;return t.trim().split(\"&\").forEach((function(t){if(t){var n=t.split(\"=\"),r=n.shift().replace(/\\+/g,\" \"),o=n.join(\"=\").replace(/\\+/g,\" \");e.append(decodeURIComponent(r),decodeURIComponent(o))}})),e}function A(t,e){e||(e={}),this.type=\"default\",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText=\"statusText\"in e?e.statusText:\"OK\",this.headers=new h(e.headers),this.url=e.url||\"\",this._initBody(t)}v.prototype.clone=function(){return new v(this,{body:this._bodyInit})},g.call(v.prototype),g.call(A.prototype),A.prototype.clone=function(){return new A(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new h(this.headers),url:this.url})},A.error=function(){var t=new A(null,{status:0,statusText:\"\"});return t.type=\"error\",t};var _=[301,302,303,307,308];A.redirect=function(t,e){if(-1===_.indexOf(e))throw new RangeError(\"Invalid status code\");return new A(null,{status:e,headers:{location:t}})},e.DOMException=t.DOMException;try{new e.DOMException}catch(t){e.DOMException=function(t,e){this.message=t,this.name=e;var n=Error(t);this.stack=n.stack},e.DOMException.prototype=Object.create(Error.prototype),e.DOMException.prototype.constructor=e.DOMException}function S(t,n){return new Promise((function(r,i){var s=new v(t,n);if(s.signal&&s.signal.aborted)return i(new e.DOMException(\"Aborted\",\"AbortError\"));var a=new XMLHttpRequest;function c(){a.abort()}a.onload=function(){var t,e,n={status:a.status,statusText:a.statusText,headers:(t=a.getAllResponseHeaders()||\"\",e=new h,t.replace(/\\r?\\n[\\t ]+/g,\" \").split(/\\r?\\n/).forEach((function(t){var n=t.split(\":\"),r=n.shift().trim();if(r){var o=n.join(\":\").trim();e.append(r,o)}})),e)};n.url=\"responseURL\"in a?a.responseURL:n.headers.get(\"X-Request-URL\");var o=\"response\"in a?a.response:a.responseText;r(new A(o,n))},a.onerror=function(){i(new TypeError(\"Network request failed\"))},a.ontimeout=function(){i(new TypeError(\"Network request failed\"))},a.onabort=function(){i(new e.DOMException(\"Aborted\",\"AbortError\"))},a.open(s.method,s.url,!0),\"include\"===s.credentials?a.withCredentials=!0:\"omit\"===s.credentials&&(a.withCredentials=!1),\"responseType\"in a&&o&&(a.responseType=\"blob\"),s.headers.forEach((function(t,e){a.setRequestHeader(e,t)})),s.signal&&(s.signal.addEventListener(\"abort\",c),a.onreadystatechange=function(){4===a.readyState&&s.signal.removeEventListener(\"abort\",c)}),a.send(void 0===s._bodyInit?null:s._bodyInit)}))}S.polyfill=!0,t.fetch||(t.fetch=S,t.Headers=h,t.Request=v,t.Response=A),e.Headers=h,e.Request=v,e.Response=A,e.fetch=S,Object.defineProperty(e,\"__esModule\",{value:!0})}({})}(r),r.fetch.ponyfill=!0,delete r.fetch.polyfill;var o=r;(e=o.fetch).default=o.fetch,e.fetch=o.fetch,e.Headers=o.Headers,e.Request=o.Request,e.Response=o.Response,t.exports=e}(dn,dn.exports);var ln=Ft(dn.exports);async function hn(t,e){const n=await t.getAccountInfo(e);if(null===n)throw new Error(\"program account not found\");const{program:r}=fn(n.data),o=await t.getAccountInfo(r.programdataAddress);if(null===o)throw new Error(\"program data account not found\");const{programData:i}=fn(o.data);return i}const pn=f.rustEnum([f.struct([],\"uninitialized\"),f.struct([f.option(f.publicKey(),\"authorityAddress\")],\"buffer\"),f.struct([f.publicKey(\"programdataAddress\")],\"program\"),f.struct([f.u64(\"slot\"),f.option(f.publicKey(),\"upgradeAuthorityAddress\")],\"programData\")],void 0,f.u32());function fn(t){return pn.decode(t)}var mn=Object.freeze({__proto__:null,verifiedBuild:async function(t,e,n=5){const r=`https://api.apr.dev/api/v0/program/${e.toString()}/latest?limit=${n}`,[o,i]=await Promise.all([hn(t,e),ln(r)]),s=(await i.json()).filter((t=>!t.aborted&&\"Built\"===t.state&&\"Verified\"===t.verified));if(0===s.length)return null;const a=s[0];return o.slot.toNumber()!==a.verified_slot?null:a},fetchData:hn,decodeUpgradeableLoaderState:fn}),yn=Object.freeze({__proto__:null,sha256:Ye,rpc:it,publicKey:sn,bytes:k,token:un,features:yt,registry:mn});const gn=f.struct([f.publicKey(\"authority\"),f.vecU8(\"data\")]);function wn(t,e){var n,r;let o={};const i=t.args?t.args.length:0;if(e.length>i){if(e.length!==i+1)throw new Error(`provided too many arguments ${e} to instruction ${null==t?void 0:t.name} expecting: ${null!==(r=null===(n=t.args)||void 0===n?void 0:n.map((t=>t.name)))&&void 0!==r?r:[]}`);o=e.pop()}return[e,o]}class vn{static build(t,e,n){if(\"_inner\"===t.name)throw new gt(\"the _inner name is reserved\");const o=(...i)=>{const[s,a]=wn(t,[...i]);P(t.accounts,a.accounts);const c=o.accounts(a.accounts);return void 0!==a.remainingAccounts&&c.push(...a.remainingAccounts),mt(\"debug-logs\")&&console.log(\"Outgoing account metas:\",c),new r({keys:c,programId:n,data:e(t.name,x(t,...s))})};return o.accounts=e=>vn.accountsArray(e,t.accounts,t.name),o}static accountsArray(t,e,n){return t?e.map((e=>{if(void 0!==(\"accounts\"in e?e.accounts:void 0)){const r=t[e.name];return vn.accountsArray(r,e.accounts,n).flat()}{const r=e;let o;try{o=L(t[e.name])}catch(t){throw new Error(`Wrong input type for account \"${e.name}\" in the instruction accounts object${void 0!==n?' for instruction \"'+n+'\"':\"\"}. Expected PublicKey or string.`)}return{pubkey:o,isWritable:r.isMut,isSigner:r.isSigner}}})).flat():[]}}class bn{static build(t,e,n,r){return async(...o)=>{var i;const s=e(...o),[,a]=wn(t,[...o]);if(void 0===r.sendAndConfirm)throw new Error(\"This function requires 'Provider.sendAndConfirm' to be implemented.\");try{return await r.sendAndConfirm(s,null!==(i=a.signers)&&void 0!==i?i:[],a.options)}catch(t){throw At(t,n)}}}}class An{static build(t,e){return(...r)=>{var o,i,s;const[,a]=wn(t,[...r]),c=new n;if(a.preInstructions&&a.instructions)throw new Error(\"instructions is deprecated, use preInstructions\");return null===(o=a.preInstructions)||void 0===o||o.forEach((t=>c.add(t))),null===(i=a.instructions)||void 0===i||i.forEach((t=>c.add(t))),c.add(e(...r)),null===(s=a.postInstructions)||void 0===s||s.forEach((t=>c.add(t))),c}}}class _n{constructor(t,e,n=lt(),r=new Kt(t)){this.provider=n,this.coder=r,this._idl=t,this._programId=e,this._address=Sn(e),this._sub=null;const[o,i,a]=(()=>{var o;let i={},a={},c={};return null===(o=t.state)||void 0===o||o.methods.forEach((o=>{const u=vn.build(o,((t,e)=>r.instruction.encodeState(t,e)),e);u.accounts=t=>{const r=function(t,e,n,r){if(\"new\"===n.name){const[n]=nn([],t);if(void 0===e.wallet)throw new Error(\"This function requires the Provider interface implementor to have a 'wallet' field.\");return[{pubkey:e.wallet.publicKey,isWritable:!1,isSigner:!0},{pubkey:Sn(t),isWritable:!0,isSigner:!1},{pubkey:n,isWritable:!1,isSigner:!1},{pubkey:s.programId,isWritable:!1,isSigner:!1},{pubkey:t,isWritable:!1,isSigner:!1}]}return P(n.accounts,r),[{pubkey:Sn(t),isWritable:!0,isSigner:!1}]}(e,n,o,t);return r.concat(vn.accountsArray(t,o.accounts,o.name))};const d=An.build(o,u),l=bn.build(o,d,M(t),n),p=h(o.name);i[p]=u,a[p]=d,c[p]=l})),[i,a,c]})();this.instruction=o,this.transaction=i,this.rpc=a}get programId(){return this._programId}async fetch(){const t=this.address(),e=await this.provider.connection.getAccountInfo(t);if(null===e)throw new Error(`Account does not exist ${t.toString()}`);const n=this._idl.state;if(!n)throw new Error(\"State is not specified in IDL.\");if((await jt(n.struct.name)).compare(e.data.slice(0,8)))throw new Error(\"Invalid account discriminator\");return this.coder.state.decode(e.data)}address(){return this._address}subscribe(t){if(null!==this._sub)return this._sub.ee;const e=new y,n=this.provider.connection.onAccountChange(this.address(),(t=>{const n=this.coder.state.decode(t.data);e.emit(\"change\",n)}),t);return this._sub={ee:e,listener:n},e}unsubscribe(){null!==this._sub&&this.provider.connection.removeAccountChangeListener(this._sub.listener).then((async()=>{this._sub=null})).catch(console.error)}}function Sn(t){let[e]=nn([],t);return tn(e,\"unversioned\",t)}class En{constructor(t,e,n,r,o){this._idlAccount=e,this._programId=n,this._provider=null!=r?r:lt(),this._coder=null!=o?o:new Kt(t),this._size=this._coder.accounts.size(e)}get size(){return this._size}get programId(){return this._programId}get provider(){return this._provider}get coder(){return this._coder}async fetchNullable(t,e){const n=await this.getAccountInfo(t,e);return null===n?null:this._coder.accounts.decode(this._idlAccount.name,n.data)}async fetch(t,e){const n=await this.fetchNullable(t,e);if(null===n)throw new Error(`Account does not exist ${t.toString()}`);return n}async fetchMultiple(t,e){return(await X(this._provider.connection,t.map((t=>L(t))),e)).map((t=>null==t?null:this._coder.accounts.decode(this._idlAccount.name,null==t?void 0:t.account.data)))}async all(t){return(await this._provider.connection.getProgramAccounts(this._programId,{commitment:this._provider.connection.commitment,filters:[{memcmp:this.coder.accounts.memcmp(this._idlAccount.name,t instanceof Buffer?t:void 0)},...Array.isArray(t)?t:[]]})).map((({pubkey:t,account:e})=>({publicKey:t,account:this._coder.accounts.decode(this._idlAccount.name,e.data)})))}subscribe(t,e){const n=In.get(t.toString());if(n)return n.ee;const r=new y;t=L(t);const o=this._provider.connection.onAccountChange(t,(t=>{const e=this._coder.accounts.decode(this._idlAccount.name,t.data);r.emit(\"change\",e)}),e);return In.set(t.toString(),{ee:r,listener:o}),r}async unsubscribe(t){let e=In.get(t.toString());e?In&&await this._provider.connection.removeAccountChangeListener(e.listener).then((()=>{In.delete(t.toString())})).catch(console.error):console.warn(\"Address is not subscribed\")}async createInstruction(t,e){const n=this.size;if(void 0===this._provider.wallet)throw new Error(\"This function requires the Provider interface implementor to have a 'wallet' field.\");return s.createAccount({fromPubkey:this._provider.wallet.publicKey,newAccountPubkey:t.publicKey,space:null!=e?e:n,lamports:await this._provider.connection.getMinimumBalanceForRentExemption(null!=e?e:n),programId:this._programId})}async associated(...t){const e=await this.associatedAddress(...t);return await this.fetch(e)}async associatedAddress(...t){return await on(this._programId,...t)}async getAccountInfo(t,e){return await this._provider.connection.getAccountInfo(L(t),e)}}const In=new Map,kn=\"Program log: \".length,Mn=\"Program data: \".length;class xn{constructor(t,e,n){this._programId=t,this._provider=e,this._eventParser=new Pn(t,n),this._eventCallbacks=new Map,this._eventListeners=new Map,this._listenerIdCount=0}addEventListener(t,e){var n;let r=this._listenerIdCount;return this._listenerIdCount+=1,t in this._eventCallbacks||this._eventListeners.set(t,[]),this._eventListeners.set(t,(null!==(n=this._eventListeners.get(t))&&void 0!==n?n:[]).concat(r)),this._eventCallbacks.set(r,[t,e]),void 0!==this._onLogsSubscriptionId||(this._onLogsSubscriptionId=this._provider.connection.onLogs(this._programId,((t,e)=>{if(!t.err)for(const n of this._eventParser.parseLogs(t.logs)){const r=this._eventListeners.get(n.name);r&&r.forEach((r=>{const o=this._eventCallbacks.get(r);if(o){const[,r]=o;r(n.data,e.slot,t.signature)}}))}}))),r}async removeEventListener(t){const e=this._eventCallbacks.get(t);if(!e)throw new Error(`Event listener ${t} doesn't exist!`);const[n]=e;let r=this._eventListeners.get(n);if(!r)throw new Error(`Event listeners don't exist for ${n}!`);this._eventCallbacks.delete(t),r=r.filter((e=>e!==t)),0===r.length&&this._eventListeners.delete(n),0==this._eventCallbacks.size&&(g.ok(0===this._eventListeners.size),void 0!==this._onLogsSubscriptionId&&(await this._provider.connection.removeOnLogsListener(this._onLogsSubscriptionId),this._onLogsSubscriptionId=void 0))}}class Pn{constructor(t,e){this.coder=e,this.programId=t}*parseLogs(t){const e=new Tn(t),n=new Ln;let r=e.next();for(;null!==r;){let[t,o,i]=this.handleLog(n,r);t&&(yield t),o&&n.push(o),i&&n.pop(),r=e.next()}}handleLog(t,e){return t.stack.length>0&&t.program()===this.programId.toString()?this.handleProgramLog(e):[null,...this.handleSystemLog(e)]}handleProgramLog(t){if(t.startsWith(\"Program log: \")||t.startsWith(\"Program data: \")){const e=t.startsWith(\"Program log: \")?t.slice(kn):t.slice(Mn);return[this.coder.events.decode(e),null,!1]}return[null,...this.handleSystemLog(t)]}handleSystemLog(t){const e=t.split(\":\")[0];return null!==e.match(/^Program (.*) success/g)?[null,!0]:e.startsWith(`Program ${this.programId.toString()} invoke`)?[this.programId.toString(),!1]:e.includes(\"invoke\")?[\"cpi\",!1]:[null,!1]}}class Ln{constructor(){this.stack=[]}program(){return g.ok(this.stack.length>0),this.stack[this.stack.length-1]}push(t){this.stack.push(t)}pop(){g.ok(this.stack.length>0),this.stack.pop()}}class Tn{constructor(t){this.logs=t}next(){if(0===this.logs.length)return null;let t=this.logs[0];return this.logs=this.logs.slice(1),t}}const Cn=new e(\"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA\");function zn(){return new Ne(Bn)}const Bn={version:\"0.1.0\",name:\"spl_token\",instructions:[{name:\"initializeMint\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"decimals\",type:\"u8\"},{name:\"mintAuthority\",type:\"publicKey\"},{name:\"freezeAuthority\",type:{coption:\"publicKey\"}}]},{name:\"initializeAccount\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[]},{name:\"initializeMultisig\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"m\",type:\"u8\"}]},{name:\"transfer\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"destination\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"}]},{name:\"approve\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"delegate\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"}]},{name:\"revoke\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[]},{name:\"setAuthority\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"authorityType\",type:\"u8\"},{name:\"newAuthority\",type:{coption:\"publicKey\"}}]},{name:\"mintTo\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1},{name:\"to\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"}]},{name:\"burn\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"}]},{name:\"closeAccount\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"destination\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!1}],args:[]},{name:\"freezeAccount\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[]},{name:\"thawAccount\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[]},{name:\"transferChecked\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"destination\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"},{name:\"decimals\",type:\"u8\"}]},{name:\"approveChecked\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"delegate\",isMut:!1,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"},{name:\"decimals\",type:\"u8\"}]},{name:\"mintToChecked\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1},{name:\"to\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"},{name:\"decimals\",type:\"u8\"}]},{name:\"burnChecked\",accounts:[{name:\"source\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!0,isSigner:!1},{name:\"authority\",isMut:!1,isSigner:!0}],args:[{name:\"amount\",type:\"u64\"},{name:\"decimals\",type:\"u8\"}]},{name:\"initializeAccount2\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"authority\",type:\"publicKey\"}]},{name:\"syncNative\",accounts:[{name:\"account\",isMut:!0,isSigner:!1}],args:[]},{name:\"initializeAccount3\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1}],args:[{name:\"authority\",type:\"publicKey\"}]},{name:\"initializeMultisig2\",accounts:[{name:\"account\",isMut:!0,isSigner:!1}],args:[{name:\"m\",type:\"u8\"}]},{name:\"initializeMint2\",accounts:[{name:\"mint\",isMut:!0,isSigner:!1}],args:[{name:\"decimals\",type:\"u8\"},{name:\"mintAuthority\",type:\"publicKey\"},{name:\"freezeAuthority\",type:{coption:\"publicKey\"}}]}],accounts:[{name:\"mint\",type:{kind:\"struct\",fields:[{name:\"mintAuthority\",type:{coption:\"publicKey\"}},{name:\"supply\",type:\"u64\"},{name:\"decimals\",type:\"u8\"},{name:\"isInitialized\",type:\"bool\"},{name:\"freezeAuthority\",type:{coption:\"publicKey\"}}]}},{name:\"token\",type:{kind:\"struct\",fields:[{name:\"mint\",type:\"publicKey\"},{name:\"authority\",type:\"publicKey\"},{name:\"amount\",type:\"u64\"},{name:\"delegate\",type:{coption:\"publicKey\"}},{name:\"state\",type:\"u8\"},{name:\"isNative\",type:{coption:\"u64\"}},{name:\"delegatedAmount\",type:\"u64\"},{name:\"closeAuthority\",type:{coption:\"publicKey\"}}]}}]};class On{constructor(t,e,n,r,o,i){this._args=t,this._accounts=e,this._provider=n,this._programId=r,this._idlIx=o,this._accountStore=new Dn(n,i)}async resolve(){for(let t=0;t0&&!this._accounts[n]&&await this.autoPopulatePda(e)}}async autoPopulatePda(t){if(!t.pda||!t.pda.seeds)throw new Error(\"Must have seeds\");const n=await Promise.all(t.pda.seeds.map((t=>this.toBuffer(t)))),r=await this.parseProgramId(t),[o]=await e.findProgramAddress(n,r);this._accounts[h(t.name)]=o}async parseProgramId(t){var n;if(!(null===(n=t.pda)||void 0===n?void 0:n.programId))return this._programId;switch(t.pda.programId.kind){case\"const\":return new e(this.toBufferConst(t.pda.programId.value));case\"arg\":return this.argValue(t.pda.programId);case\"account\":return await this.accountValue(t.pda.programId);default:throw new Error(`Unexpected program seed kind: ${t.pda.programId.kind}`)}}async toBuffer(t){switch(t.kind){case\"const\":return this.toBufferConst(t);case\"arg\":return await this.toBufferArg(t);case\"account\":return await this.toBufferAccount(t);default:throw new Error(`Unexpected seed kind: ${t.kind}`)}}toBufferConst(t){return this.toBufferValue(t.type,t.value)}async toBufferArg(t){const e=this.argValue(t);return this.toBufferValue(t.type,e)}argValue(t){const e=h(t.path.split(\".\")[0]),n=this._idlIx.args.findIndex((t=>t.name===e));if(-1===n)throw new Error(`Unable to find argument for seed: ${e}`);return this._args[n]}async toBufferAccount(t){const e=await this.accountValue(t);return this.toBufferValue(t.type,e)}async accountValue(t){const e=t.path.split(\".\"),n=e[0],r=this._accounts[h(n)];if(1===e.length)return r;const o=await this._accountStore.fetchAccount(t.account,r);return this.parseAccountValue(o,e.slice(1))}parseAccountValue(t,e){let n;for(;e.length>0;)n=t[h(e[0])],e=e.slice(1);return n}toBufferValue(t,e){switch(t){case\"u8\":return Buffer.from([e]);case\"u16\":let n=Buffer.alloc(2);return n.writeUInt16LE(e),n;case\"u32\":let r=Buffer.alloc(4);return r.writeUInt32LE(e),r;case\"u64\":let o=Buffer.alloc(8);return o.writeBigUInt64LE(BigInt(e)),o;case\"string\":return Buffer.from(b(e));case\"publicKey\":return e.toBuffer();default:if(t.array)return Buffer.from(e);throw new Error(`Unexpected seed type: ${t}`)}}}On.CONST_ACCOUNTS={associatedTokenProgram:cn,rent:a,systemProgram:s.programId,tokenProgram:an};class Dn{constructor(t,e){this._provider=t,this._accounts=e,this._cache=new Map}async fetchAccount(t,e){const n=e.toString();if(!this._cache.has(n))if(\"TokenAccount\"===t){const t=await this._provider.connection.getAccountInfo(e);if(null===t)throw new Error(`invalid account info for ${n}`);const r=zn().accounts.decode(\"token\",t.data);this._cache.set(n,r)}else{const r=this._accounts[h(t)].fetch(e);this._cache.set(n,r)}return this._cache.get(n)}}class Nn{static build(t,e,n,r,o,i,s,a,c){return(...u)=>new Rn(u,r,o,i,s,a,t,e,n,c)}}class Rn{constructor(t,e,n,r,o,i,s,a,c,u){this._args=t,this._ixFn=e,this._txFn=n,this._rpcFn=r,this._simulateFn=o,this._viewFn=i,this._accounts={},this._remainingAccounts=[],this._signers=[],this._preInstructions=[],this._postInstructions=[],this._autoResolveAccounts=!0,this._accountsResolver=new On(t,this._accounts,s,a,c,u)}async pubkeys(){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._accounts}accounts(t){return this._autoResolveAccounts=!0,Object.assign(this._accounts,t),this}accountsStrict(t){return this._autoResolveAccounts=!1,Object.assign(this._accounts,t),this}signers(t){return this._signers=this._signers.concat(t),this}remainingAccounts(t){return this._remainingAccounts=this._remainingAccounts.concat(t),this}preInstructions(t){return this._preInstructions=this._preInstructions.concat(t),this}postInstructions(t){return this._postInstructions=this._postInstructions.concat(t),this}async rpc(t){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._rpcFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:t})}async view(t){if(this._autoResolveAccounts&&await this._accountsResolver.resolve(),!this._viewFn)throw new Error(\"Method does not support views\");return this._viewFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:t})}async simulate(t){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._simulateFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions,options:t})}async instruction(){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._ixFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions})}async transaction(){return this._autoResolveAccounts&&await this._accountsResolver.resolve(),this._txFn(...this._args,{accounts:this._accounts,signers:this._signers,remainingAccounts:this._remainingAccounts,preInstructions:this._preInstructions,postInstructions:this._postInstructions})}}class Vn{constructor(t,e,n,r){e=L(e),n||(n=lt()),this._idl=t,this._provider=n,this._programId=e,this._coder=null!=r?r:new Kt(t),this._events=new xn(this._programId,n,this._coder);const[o,i,s,a,c,u,d,l]=class{static build(t,e,n,r){const o={},i={},s={},a={},c={},u={},d=M(t),l=t.accounts?class{static build(t,e,n,r){var o;const i={};return null===(o=t.accounts)||void 0===o||o.forEach((o=>{const s=h(o.name);i[s]=new En(t,o,n,r,e)})),i}}.build(t,e,n,r):{},p=class{static build(t,e,n,r){if(void 0!==t.state)return new _n(t,n,r,e)}}.build(t,e,n,r);return t.instructions.forEach((p=>{const f=vn.build(p,((t,n)=>e.instruction.encode(t,n)),n),m=An.build(p,f),y=bn.build(p,m,d,r),g=class{static build(t,e,n,r,o,i,s){return async(...a)=>{var c;const u=e(...a),[,d]=wn(t,[...a]);let l;if(void 0===r.simulate)throw new Error(\"This function requires 'Provider.simulate' to be implemented.\");try{l=await r.simulate(u,d.signers,null===(c=d.options)||void 0===c?void 0:c.commitment)}catch(t){throw At(t,n)}if(void 0===l)throw new Error(\"Unable to simulate transaction\");const h=l.logs;if(!h)throw new Error(\"Simulated logs not found\");const p=[];if(s.events){let t=new Pn(i,o);for(const e of t.parseLogs(h))p.push(e)}return{events:p,raw:h}}}}.build(p,m,d,r,e,n,t),w=class{static build(t,e,n,r){const o=e.accounts.find((t=>t.isMut)),i=!!e.returns;if(!o&&i)return async(...o)=>{var i,s;let a=await n(...o);const c=`Program return: ${t} `;let u=a.raw.find((t=>t.startsWith(c)));if(!u)throw new Error(\"View expected return log\");let d=E(u.slice(c.length)),l=e.returns;if(!l)throw new Error(\"View expected return type\");return Lt.fieldLayout({type:l},Array.from([...null!==(i=r.accounts)&&void 0!==i?i:[],...null!==(s=r.types)&&void 0!==s?s:[]])).decode(d)}}}.build(n,p,g,t),v=Nn.build(r,n,p,f,m,y,g,w,l),b=h(p.name);i[b]=f,s[b]=m,o[b]=y,a[b]=g,c[b]=v,w&&(u[b]=w)})),[o,i,s,l,a,c,p,u]}}.build(t,this._coder,e,n);this.rpc=o,this.instruction=i,this.transaction=s,this.account=a,this.simulate=c,this.methods=u,this.state=d,this.views=l}get programId(){return this._programId}get idl(){return this._idl}get coder(){return this._coder}get provider(){return this._provider}static async at(t,e){const n=L(t),r=await Vn.fetchIdl(n,e);if(!r)throw new Error(`IDL not found for program: ${t.toString()}`);return new Vn(r,n,e)}static async fetchIdl(t,n){n=null!=n?n:lt();const r=L(t),o=await async function(t){const n=(await e.findProgramAddress([],t))[0];return await e.createWithSeed(n,\"anchor:idl\",t)}(r),i=await n.connection.getAccountInfo(o);if(!i)return null;let s=(a=i.data.slice(8),gn.decode(a));var a;const c=m(s.data);return JSON.parse(v(c))}addEventListener(t,e){return this._events.addEventListener(t,e)}async removeEventListener(t){return await this._events.removeEventListener(t)}}class Un{constructor(t){}encode(t,e){if(\"create\"===h(t))return Buffer.alloc(0);throw new Error(`Invalid instruction: ${t}`)}encodeState(t,e){throw new Error(\"SPL associated token does not have state\")}}class jn{constructor(t){}encode(t,e){throw new Error(\"SPL associated token does not have state\")}decode(t){throw new Error(\"SPL associated token does not have state\")}}class $n{constructor(t){this.idl=t}async encode(t,e){throw new Error(`Invalid account name: ${t}`)}decode(t,e){return this.decodeUnchecked(t,e)}decodeUnchecked(t,e){throw new Error(`Invalid account name: ${t}`)}memcmp(t,e){throw new Error(`Invalid account name: ${t}`)}size(t){var e;return null!==(e=Bt(this.idl,t))&&void 0!==e?e:0}}class Kn{constructor(t){}decode(t){throw new Error(\"SPL associated token program does not have events\")}}class qn{constructor(t){}encode(t,e){throw new Error(\"SPL associated token does not have user-defined types\")}decode(t,e){throw new Error(\"SPL associated token does not have user-defined types\")}}class Fn{constructor(t){this.instruction=new Un(t),this.accounts=new $n(t),this.events=new Kn(t),this.state=new jn(t),this.types=new qn(t)}}const Wn=new e(\"ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL\");function Gn(t){return new Vn(Hn,Wn,t,new Fn(Hn))}const Hn={version:\"0.1.0\",name:\"spl_associated_token\",instructions:[{name:\"create\",accounts:[{name:\"authority\",isMut:!0,isSigner:!0},{name:\"associatedAccount\",isMut:!0,isSigner:!1},{name:\"owner\",isMut:!1,isSigner:!1},{name:\"mint\",isMut:!1,isSigner:!1},{name:\"systemProgram\",isMut:!1,isSigner:!1},{name:\"tokenProgram\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[]}]};class Jn{static token(t){return function(t){return new Vn(Bn,Cn,t,zn())}(t)}static associatedToken(t){return Gn(t)}}const Zn=new e(\"11111111111111111111111111111111\");function Xn(t){return new Vn(Qn,Zn,t,new Qe(Qn))}const Qn={version:\"0.1.0\",name:\"system_program\",instructions:[{name:\"createAccount\",accounts:[{name:\"from\",isMut:!0,isSigner:!0},{name:\"to\",isMut:!0,isSigner:!0}],args:[{name:\"lamports\",type:\"u64\"},{name:\"space\",type:\"u64\"},{name:\"owner\",type:\"publicKey\"}]},{name:\"assign\",accounts:[{name:\"pubkey\",isMut:!0,isSigner:!0}],args:[{name:\"owner\",type:\"publicKey\"}]},{name:\"transfer\",accounts:[{name:\"from\",isMut:!0,isSigner:!0},{name:\"to\",isMut:!0,isSigner:!1}],args:[{name:\"lamports\",type:\"u64\"}]},{name:\"createAccountWithSeed\",accounts:[{name:\"from\",isMut:!0,isSigner:!0},{name:\"to\",isMut:!0,isSigner:!1},{name:\"base\",isMut:!1,isSigner:!0}],args:[{name:\"base\",type:\"publicKey\"},{name:\"seed\",type:\"string\"},{name:\"lamports\",type:\"u64\"},{name:\"space\",type:\"u64\"},{name:\"owner\",type:\"publicKey\"}]},{name:\"advanceNonceAccount\",accounts:[{name:\"nonce\",isMut:!0,isSigner:!1},{name:\"recentBlockhashes\",isMut:!1,isSigner:!1},{name:\"authorized\",isMut:!1,isSigner:!0}],args:[{name:\"authorized\",type:\"publicKey\"}]},{name:\"withdrawNonceAccount\",accounts:[{name:\"nonce\",isMut:!0,isSigner:!1},{name:\"to\",isMut:!0,isSigner:!1},{name:\"recentBlockhashes\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1},{name:\"authorized\",isMut:!1,isSigner:!0}],args:[{name:\"lamports\",type:\"u64\"}]},{name:\"initializeNonceAccount\",accounts:[{name:\"nonce\",isMut:!0,isSigner:!0},{name:\"recentBlockhashes\",isMut:!1,isSigner:!1},{name:\"rent\",isMut:!1,isSigner:!1}],args:[{name:\"authorized\",type:\"publicKey\"}]},{name:\"authorizeNonceAccount\",accounts:[{name:\"nonce\",isMut:!0,isSigner:!1},{name:\"authorized\",isMut:!1,isSigner:!0}],args:[{name:\"authorized\",type:\"publicKey\"}]},{name:\"allocate\",accounts:[{name:\"pubkey\",isMut:!0,isSigner:!0}],args:[{name:\"space\",type:\"u64\"}]},{name:\"allocateWithSeed\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"base\",isMut:!1,isSigner:!0}],args:[{name:\"base\",type:\"publicKey\"},{name:\"seed\",type:\"string\"},{name:\"space\",type:\"u64\"},{name:\"owner\",type:\"publicKey\"}]},{name:\"assignWithSeed\",accounts:[{name:\"account\",isMut:!0,isSigner:!1},{name:\"base\",isMut:!1,isSigner:!0}],args:[{name:\"base\",type:\"publicKey\"},{name:\"seed\",type:\"string\"},{name:\"owner\",type:\"publicKey\"}]},{name:\"transferWithSeed\",accounts:[{name:\"from\",isMut:!0,isSigner:!1},{name:\"base\",isMut:!1,isSigner:!0},{name:\"to\",isMut:!0,isSigner:!1}],args:[{name:\"lamports\",type:\"u64\"},{name:\"seed\",type:\"string\"},{name:\"owner\",type:\"publicKey\"}]}],accounts:[{name:\"nonce\",type:{kind:\"struct\",fields:[{name:\"version\",type:\"u32\"},{name:\"state\",type:\"u32\"},{name:\"authorizedPubkey\",type:\"publicKey\"},{name:\"nonce\",type:\"publicKey\"},{name:\"feeCalculator\",type:{defined:\"FeeCalculator\"}}]}}],types:[{name:\"FeeCalculator\",type:{kind:\"struct\",fields:[{name:\"lamportsPerSignature\",type:\"u64\"}]}}]};class Yn{static system(t){return Xn(t)}}export{Dt as ACCOUNT_DISCRIMINATOR_SIZE,En as AccountClient,vt as AnchorError,st as AnchorProvider,Nt as BorshAccountsCoder,Kt as BorshCoder,Rt as BorshEventCoder,Tt as BorshInstructionCoder,Ut as BorshStateCoder,xn as EventManager,Pn as EventParser,gt as IdlError,_t as LangErrorCode,St as LangErrorMessage,Nn as MethodsBuilderFactory,Yn as Native,Vn as Program,bt as ProgramError,wt as ProgramErrorStack,Jn as Spl,Ne as SplTokenCoder,_n as StateClient,Qe as SystemCoder,Vt as eventDiscriminator,lt as getProvider,M as parseIdlErrors,dt as setProvider,wn as splitArgsAndCtx,jt as stateDiscriminator,x as toInstruction,L as translateAddress,At as translateError,yn as utils,P as validateAccounts};\n//# sourceMappingURL=index.js.map\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.map = exports.array = exports.rustEnum = exports.str = exports.vecU8 = exports.tagged = exports.vec = exports.bool = exports.option = exports.publicKey = exports.i128 = exports.u128 = exports.i64 = exports.u64 = exports.struct = exports.f64 = exports.f32 = exports.i32 = exports.u32 = exports.i16 = exports.u16 = exports.i8 = exports.u8 = void 0;\nconst buffer_layout_1 = require(\"buffer-layout\");\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nvar buffer_layout_2 = require(\"buffer-layout\");\nObject.defineProperty(exports, \"u8\", { enumerable: true, get: function () { return buffer_layout_2.u8; } });\nObject.defineProperty(exports, \"i8\", { enumerable: true, get: function () { return buffer_layout_2.s8; } });\nObject.defineProperty(exports, \"u16\", { enumerable: true, get: function () { return buffer_layout_2.u16; } });\nObject.defineProperty(exports, \"i16\", { enumerable: true, get: function () { return buffer_layout_2.s16; } });\nObject.defineProperty(exports, \"u32\", { enumerable: true, get: function () { return buffer_layout_2.u32; } });\nObject.defineProperty(exports, \"i32\", { enumerable: true, get: function () { return buffer_layout_2.s32; } });\nObject.defineProperty(exports, \"f32\", { enumerable: true, get: function () { return buffer_layout_2.f32; } });\nObject.defineProperty(exports, \"f64\", { enumerable: true, get: function () { return buffer_layout_2.f64; } });\nObject.defineProperty(exports, \"struct\", { enumerable: true, get: function () { return buffer_layout_2.struct; } });\nclass BNLayout extends buffer_layout_1.Layout {\n constructor(span, signed, property) {\n super(span, property);\n this.blob = buffer_layout_1.blob(span);\n this.signed = signed;\n }\n decode(b, offset = 0) {\n const num = new bn_js_1.default(this.blob.decode(b, offset), 10, 'le');\n if (this.signed) {\n return num.fromTwos(this.span * 8).clone();\n }\n return num;\n }\n encode(src, b, offset = 0) {\n if (this.signed) {\n src = src.toTwos(this.span * 8);\n }\n return this.blob.encode(src.toArrayLike(Buffer, 'le', this.span), b, offset);\n }\n}\nfunction u64(property) {\n return new BNLayout(8, false, property);\n}\nexports.u64 = u64;\nfunction i64(property) {\n return new BNLayout(8, true, property);\n}\nexports.i64 = i64;\nfunction u128(property) {\n return new BNLayout(16, false, property);\n}\nexports.u128 = u128;\nfunction i128(property) {\n return new BNLayout(16, true, property);\n}\nexports.i128 = i128;\nclass WrappedLayout extends buffer_layout_1.Layout {\n constructor(layout, decoder, encoder, property) {\n super(layout.span, property);\n this.layout = layout;\n this.decoder = decoder;\n this.encoder = encoder;\n }\n decode(b, offset) {\n return this.decoder(this.layout.decode(b, offset));\n }\n encode(src, b, offset) {\n return this.layout.encode(this.encoder(src), b, offset);\n }\n getSpan(b, offset) {\n return this.layout.getSpan(b, offset);\n }\n}\nfunction publicKey(property) {\n return new WrappedLayout(buffer_layout_1.blob(32), (b) => new web3_js_1.PublicKey(b), (key) => key.toBuffer(), property);\n}\nexports.publicKey = publicKey;\nclass OptionLayout extends buffer_layout_1.Layout {\n constructor(layout, property) {\n super(-1, property);\n this.layout = layout;\n this.discriminator = buffer_layout_1.u8();\n }\n encode(src, b, offset = 0) {\n if (src === null || src === undefined) {\n return this.discriminator.encode(0, b, offset);\n }\n this.discriminator.encode(1, b, offset);\n return this.layout.encode(src, b, offset + 1) + 1;\n }\n decode(b, offset = 0) {\n const discriminator = this.discriminator.decode(b, offset);\n if (discriminator === 0) {\n return null;\n }\n else if (discriminator === 1) {\n return this.layout.decode(b, offset + 1);\n }\n throw new Error('Invalid option ' + this.property);\n }\n getSpan(b, offset = 0) {\n const discriminator = this.discriminator.decode(b, offset);\n if (discriminator === 0) {\n return 1;\n }\n else if (discriminator === 1) {\n return this.layout.getSpan(b, offset + 1) + 1;\n }\n throw new Error('Invalid option ' + this.property);\n }\n}\nfunction option(layout, property) {\n return new OptionLayout(layout, property);\n}\nexports.option = option;\nfunction bool(property) {\n return new WrappedLayout(buffer_layout_1.u8(), decodeBool, encodeBool, property);\n}\nexports.bool = bool;\nfunction decodeBool(value) {\n if (value === 0) {\n return false;\n }\n else if (value === 1) {\n return true;\n }\n throw new Error('Invalid bool: ' + value);\n}\nfunction encodeBool(value) {\n return value ? 1 : 0;\n}\nfunction vec(elementLayout, property) {\n const length = buffer_layout_1.u32('length');\n const layout = buffer_layout_1.struct([\n length,\n buffer_layout_1.seq(elementLayout, buffer_layout_1.offset(length, -length.span), 'values'),\n ]);\n return new WrappedLayout(layout, ({ values }) => values, values => ({ values }), property);\n}\nexports.vec = vec;\nfunction tagged(tag, layout, property) {\n const wrappedLayout = buffer_layout_1.struct([\n u64('tag'),\n layout.replicate('data'),\n ]);\n function decodeTag({ tag: receivedTag, data }) {\n if (!receivedTag.eq(tag)) {\n throw new Error('Invalid tag, expected: ' +\n tag.toString('hex') +\n ', got: ' +\n receivedTag.toString('hex'));\n }\n return data;\n }\n return new WrappedLayout(wrappedLayout, decodeTag, data => ({ tag, data }), property);\n}\nexports.tagged = tagged;\nfunction vecU8(property) {\n const length = buffer_layout_1.u32('length');\n const layout = buffer_layout_1.struct([\n length,\n buffer_layout_1.blob(buffer_layout_1.offset(length, -length.span), 'data'),\n ]);\n return new WrappedLayout(layout, ({ data }) => data, data => ({ data }), property);\n}\nexports.vecU8 = vecU8;\nfunction str(property) {\n return new WrappedLayout(vecU8(), data => data.toString('utf-8'), s => Buffer.from(s, 'utf-8'), property);\n}\nexports.str = str;\nfunction rustEnum(variants, property, discriminant) {\n const unionLayout = buffer_layout_1.union(discriminant !== null && discriminant !== void 0 ? discriminant : buffer_layout_1.u8(), property);\n variants.forEach((variant, index) => unionLayout.addVariant(index, variant, variant.property));\n return unionLayout;\n}\nexports.rustEnum = rustEnum;\nfunction array(elementLayout, length, property) {\n const layout = buffer_layout_1.struct([\n buffer_layout_1.seq(elementLayout, length, 'values'),\n ]);\n return new WrappedLayout(layout, ({ values }) => values, values => ({ values }), property);\n}\nexports.array = array;\nclass MapEntryLayout extends buffer_layout_1.Layout {\n constructor(keyLayout, valueLayout, property) {\n super(keyLayout.span + valueLayout.span, property);\n this.keyLayout = keyLayout;\n this.valueLayout = valueLayout;\n }\n decode(b, offset) {\n offset = offset || 0;\n const key = this.keyLayout.decode(b, offset);\n const value = this.valueLayout.decode(b, offset + this.keyLayout.getSpan(b, offset));\n return [key, value];\n }\n encode(src, b, offset) {\n offset = offset || 0;\n const keyBytes = this.keyLayout.encode(src[0], b, offset);\n const valueBytes = this.valueLayout.encode(src[1], b, offset + keyBytes);\n return keyBytes + valueBytes;\n }\n getSpan(b, offset) {\n return (this.keyLayout.getSpan(b, offset) + this.valueLayout.getSpan(b, offset));\n }\n}\nfunction map(keyLayout, valueLayout, property) {\n const length = buffer_layout_1.u32('length');\n const layout = buffer_layout_1.struct([\n length,\n buffer_layout_1.seq(new MapEntryLayout(keyLayout, valueLayout), buffer_layout_1.offset(length, -length.span), 'values'),\n ]);\n return new WrappedLayout(layout, ({ values }) => new Map(values), values => ({ values: Array.from(values.entries()) }), property);\n}\nexports.map = map;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.parseInstructionErrorResponse = exports.KNOWN_PROGRAMS = exports.DexError = void 0;\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst tokens_and_markets_1 = require(\"./tokens_and_markets\");\nconst token_instructions_1 = require(\"./token-instructions\");\nvar DexError;\n(function (DexError) {\n DexError[DexError[\"InvalidMarketFlags\"] = 0] = \"InvalidMarketFlags\";\n DexError[DexError[\"InvalidAskFlags\"] = 1] = \"InvalidAskFlags\";\n DexError[DexError[\"InvalidBidFlags\"] = 2] = \"InvalidBidFlags\";\n DexError[DexError[\"InvalidQueueLength\"] = 3] = \"InvalidQueueLength\";\n DexError[DexError[\"OwnerAccountNotProvided\"] = 4] = \"OwnerAccountNotProvided\";\n DexError[DexError[\"ConsumeEventsQueueFailure\"] = 5] = \"ConsumeEventsQueueFailure\";\n DexError[DexError[\"WrongCoinVault\"] = 6] = \"WrongCoinVault\";\n DexError[DexError[\"WrongPcVault\"] = 7] = \"WrongPcVault\";\n DexError[DexError[\"WrongCoinMint\"] = 8] = \"WrongCoinMint\";\n DexError[DexError[\"WrongPcMint\"] = 9] = \"WrongPcMint\";\n DexError[DexError[\"CoinVaultProgramId\"] = 10] = \"CoinVaultProgramId\";\n DexError[DexError[\"PcVaultProgramId\"] = 11] = \"PcVaultProgramId\";\n DexError[DexError[\"CoinMintProgramId\"] = 12] = \"CoinMintProgramId\";\n DexError[DexError[\"PcMintProgramId\"] = 13] = \"PcMintProgramId\";\n DexError[DexError[\"WrongCoinMintSize\"] = 14] = \"WrongCoinMintSize\";\n DexError[DexError[\"WrongPcMintSize\"] = 15] = \"WrongPcMintSize\";\n DexError[DexError[\"WrongCoinVaultSize\"] = 16] = \"WrongCoinVaultSize\";\n DexError[DexError[\"WrongPcVaultSize\"] = 17] = \"WrongPcVaultSize\";\n DexError[DexError[\"UninitializedVault\"] = 18] = \"UninitializedVault\";\n DexError[DexError[\"UninitializedMint\"] = 19] = \"UninitializedMint\";\n DexError[DexError[\"CoinMintUninitialized\"] = 20] = \"CoinMintUninitialized\";\n DexError[DexError[\"PcMintUninitialized\"] = 21] = \"PcMintUninitialized\";\n DexError[DexError[\"WrongMint\"] = 22] = \"WrongMint\";\n DexError[DexError[\"WrongVaultOwner\"] = 23] = \"WrongVaultOwner\";\n DexError[DexError[\"VaultHasDelegate\"] = 24] = \"VaultHasDelegate\";\n DexError[DexError[\"AlreadyInitialized\"] = 25] = \"AlreadyInitialized\";\n DexError[DexError[\"WrongAccountDataAlignment\"] = 26] = \"WrongAccountDataAlignment\";\n DexError[DexError[\"WrongAccountDataPaddingLength\"] = 27] = \"WrongAccountDataPaddingLength\";\n DexError[DexError[\"WrongAccountHeadPadding\"] = 28] = \"WrongAccountHeadPadding\";\n DexError[DexError[\"WrongAccountTailPadding\"] = 29] = \"WrongAccountTailPadding\";\n DexError[DexError[\"RequestQueueEmpty\"] = 30] = \"RequestQueueEmpty\";\n DexError[DexError[\"EventQueueTooSmall\"] = 31] = \"EventQueueTooSmall\";\n DexError[DexError[\"SlabTooSmall\"] = 32] = \"SlabTooSmall\";\n DexError[DexError[\"BadVaultSignerNonce\"] = 33] = \"BadVaultSignerNonce\";\n DexError[DexError[\"InsufficientFunds\"] = 34] = \"InsufficientFunds\";\n DexError[DexError[\"SplAccountProgramId\"] = 35] = \"SplAccountProgramId\";\n DexError[DexError[\"SplAccountLen\"] = 36] = \"SplAccountLen\";\n DexError[DexError[\"WrongFeeDiscountAccountOwner\"] = 37] = \"WrongFeeDiscountAccountOwner\";\n DexError[DexError[\"WrongFeeDiscountMint\"] = 38] = \"WrongFeeDiscountMint\";\n DexError[DexError[\"CoinPayerProgramId\"] = 39] = \"CoinPayerProgramId\";\n DexError[DexError[\"PcPayerProgramId\"] = 40] = \"PcPayerProgramId\";\n DexError[DexError[\"ClientIdNotFound\"] = 41] = \"ClientIdNotFound\";\n DexError[DexError[\"TooManyOpenOrders\"] = 42] = \"TooManyOpenOrders\";\n DexError[DexError[\"FakeErrorSoWeDontChangeNumbers\"] = 43] = \"FakeErrorSoWeDontChangeNumbers\";\n DexError[DexError[\"BorrowError\"] = 44] = \"BorrowError\";\n DexError[DexError[\"WrongOrdersAccount\"] = 45] = \"WrongOrdersAccount\";\n DexError[DexError[\"WrongBidsAccount\"] = 46] = \"WrongBidsAccount\";\n DexError[DexError[\"WrongAsksAccount\"] = 47] = \"WrongAsksAccount\";\n DexError[DexError[\"WrongRequestQueueAccount\"] = 48] = \"WrongRequestQueueAccount\";\n DexError[DexError[\"WrongEventQueueAccount\"] = 49] = \"WrongEventQueueAccount\";\n DexError[DexError[\"RequestQueueFull\"] = 50] = \"RequestQueueFull\";\n DexError[DexError[\"EventQueueFull\"] = 51] = \"EventQueueFull\";\n DexError[DexError[\"MarketIsDisabled\"] = 52] = \"MarketIsDisabled\";\n DexError[DexError[\"WrongSigner\"] = 53] = \"WrongSigner\";\n DexError[DexError[\"TransferFailed\"] = 54] = \"TransferFailed\";\n DexError[DexError[\"ClientOrderIdIsZero\"] = 55] = \"ClientOrderIdIsZero\";\n DexError[DexError[\"WrongRentSysvarAccount\"] = 56] = \"WrongRentSysvarAccount\";\n DexError[DexError[\"RentNotProvided\"] = 57] = \"RentNotProvided\";\n DexError[DexError[\"OrdersNotRentExempt\"] = 58] = \"OrdersNotRentExempt\";\n DexError[DexError[\"OrderNotFound\"] = 59] = \"OrderNotFound\";\n DexError[DexError[\"OrderNotYours\"] = 60] = \"OrderNotYours\";\n DexError[DexError[\"WouldSelfTrade\"] = 61] = \"WouldSelfTrade\";\n DexError[DexError[\"Unknown\"] = 1000] = \"Unknown\";\n})(DexError = exports.DexError || (exports.DexError = {}));\nexports.KNOWN_PROGRAMS = {\n [token_instructions_1.TOKEN_PROGRAM_ID.toString()]: 'Token program',\n [web3_js_1.SystemProgram.programId.toString()]: 'System program',\n};\nfunction parseInstructionErrorResponse(transaction, errorResponse) {\n const [failedInstructionIndex, customError] = errorResponse;\n const failedInstruction = transaction.instructions[failedInstructionIndex];\n let parsedError;\n if (failedInstruction.programId.toString() in tokens_and_markets_1.PROGRAM_LAYOUT_VERSIONS) {\n parsedError = DexError[customError['Custom']];\n }\n else if (failedInstruction.programId.toString() in exports.KNOWN_PROGRAMS) {\n const program = exports.KNOWN_PROGRAMS[failedInstruction.programId.toString()];\n parsedError = `${program} error ${customError['Custom']}`;\n }\n else {\n parsedError = `Unknown program ${failedInstruction.programId.toString()} custom error: ${customError['Custom']}`;\n }\n return {\n failedInstructionIndex,\n error: parsedError,\n failedProgram: failedInstruction.programId.toString(),\n };\n}\nexports.parseInstructionErrorResponse = parseInstructionErrorResponse;\n//# sourceMappingURL=error.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getFeeTier = exports.getFeeRates = exports.supportsSrmFeeDiscounts = void 0;\nconst tokens_and_markets_1 = require(\"./tokens_and_markets\");\nfunction supportsSrmFeeDiscounts(programId) {\n return tokens_and_markets_1.getLayoutVersion(programId) > 1;\n}\nexports.supportsSrmFeeDiscounts = supportsSrmFeeDiscounts;\nfunction getFeeRates(feeTier) {\n if (feeTier === 1) {\n // SRM2\n return { taker: 0.002, maker: -0.0003 };\n }\n else if (feeTier === 2) {\n // SRM3\n return { taker: 0.0018, maker: -0.0003 };\n }\n else if (feeTier === 3) {\n // SRM4\n return { taker: 0.0016, maker: -0.0003 };\n }\n else if (feeTier === 4) {\n // SRM5\n return { taker: 0.0014, maker: -0.0003 };\n }\n else if (feeTier === 5) {\n // SRM6\n return { taker: 0.0012, maker: -0.0003 };\n }\n else if (feeTier === 6) {\n // MSRM\n return { taker: 0.001, maker: -0.0005 };\n }\n // Base\n return { taker: 0.0022, maker: -0.0003 };\n}\nexports.getFeeRates = getFeeRates;\nfunction getFeeTier(msrmBalance, srmBalance) {\n if (msrmBalance >= 1) {\n return 6;\n }\n else if (srmBalance >= 1000000) {\n return 5;\n }\n else if (srmBalance >= 100000) {\n return 4;\n }\n else if (srmBalance >= 10000) {\n return 3;\n }\n else if (srmBalance >= 1000) {\n return 2;\n }\n else if (srmBalance >= 100) {\n return 1;\n }\n else {\n return 0;\n }\n}\nexports.getFeeTier = getFeeTier;\n//# sourceMappingURL=fees.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __exportStar = (this && this.__exportStar) || function(m, exports) {\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Logger = exports.PermissionedCrank = exports.ReferralFees = exports.OpenOrdersPda = exports.MarketProxyBuilder = exports.MarketProxy = exports.TokenInstructions = exports.EVENT_QUEUE_LAYOUT = exports.REQUEST_QUEUE_LAYOUT = exports.decodeRequestQueue = exports.decodeEventQueue = exports.getLayoutVersion = exports.MARKETS = exports.TOKEN_MINTS = exports.supportsSrmFeeDiscounts = exports.getFeeRates = exports.getFeeTier = exports.NEW_ORDER_V3_OWNER_INDEX = exports.NEW_ORDER_V3_OPEN_ORDERS_INDEX = exports.NEW_ORDER_OWNER_INDEX = exports.NEW_ORDER_OPEN_ORDERS_INDEX = exports.SETTLE_FUNDS_QUOTE_WALLET_INDEX = exports.SETTLE_FUNDS_BASE_WALLET_INDEX = exports.decodeInstructionV2 = exports.decodeInstruction = exports.DexInstructions = exports.MARKET_STATE_LAYOUT_V2 = exports.MARKET_STATE_LAYOUT_V3 = exports.OpenOrders = exports.Orderbook = exports.Market = void 0;\nvar market_1 = require(\"./market\");\nObject.defineProperty(exports, \"Market\", { enumerable: true, get: function () { return market_1.Market; } });\nObject.defineProperty(exports, \"Orderbook\", { enumerable: true, get: function () { return market_1.Orderbook; } });\nObject.defineProperty(exports, \"OpenOrders\", { enumerable: true, get: function () { return market_1.OpenOrders; } });\nObject.defineProperty(exports, \"MARKET_STATE_LAYOUT_V3\", { enumerable: true, get: function () { return market_1.MARKET_STATE_LAYOUT_V3; } });\nObject.defineProperty(exports, \"MARKET_STATE_LAYOUT_V2\", { enumerable: true, get: function () { return market_1.MARKET_STATE_LAYOUT_V2; } });\nvar instructions_1 = require(\"./instructions\");\nObject.defineProperty(exports, \"DexInstructions\", { enumerable: true, get: function () { return instructions_1.DexInstructions; } });\nObject.defineProperty(exports, \"decodeInstruction\", { enumerable: true, get: function () { return instructions_1.decodeInstruction; } });\nObject.defineProperty(exports, \"decodeInstructionV2\", { enumerable: true, get: function () { return instructions_1.decodeInstructionV2; } });\nObject.defineProperty(exports, \"SETTLE_FUNDS_BASE_WALLET_INDEX\", { enumerable: true, get: function () { return instructions_1.SETTLE_FUNDS_BASE_WALLET_INDEX; } });\nObject.defineProperty(exports, \"SETTLE_FUNDS_QUOTE_WALLET_INDEX\", { enumerable: true, get: function () { return instructions_1.SETTLE_FUNDS_QUOTE_WALLET_INDEX; } });\nObject.defineProperty(exports, \"NEW_ORDER_OPEN_ORDERS_INDEX\", { enumerable: true, get: function () { return instructions_1.NEW_ORDER_OPEN_ORDERS_INDEX; } });\nObject.defineProperty(exports, \"NEW_ORDER_OWNER_INDEX\", { enumerable: true, get: function () { return instructions_1.NEW_ORDER_OWNER_INDEX; } });\nObject.defineProperty(exports, \"NEW_ORDER_V3_OPEN_ORDERS_INDEX\", { enumerable: true, get: function () { return instructions_1.NEW_ORDER_V3_OPEN_ORDERS_INDEX; } });\nObject.defineProperty(exports, \"NEW_ORDER_V3_OWNER_INDEX\", { enumerable: true, get: function () { return instructions_1.NEW_ORDER_V3_OWNER_INDEX; } });\nvar fees_1 = require(\"./fees\");\nObject.defineProperty(exports, \"getFeeTier\", { enumerable: true, get: function () { return fees_1.getFeeTier; } });\nObject.defineProperty(exports, \"getFeeRates\", { enumerable: true, get: function () { return fees_1.getFeeRates; } });\nObject.defineProperty(exports, \"supportsSrmFeeDiscounts\", { enumerable: true, get: function () { return fees_1.supportsSrmFeeDiscounts; } });\nvar tokens_and_markets_1 = require(\"./tokens_and_markets\");\nObject.defineProperty(exports, \"TOKEN_MINTS\", { enumerable: true, get: function () { return tokens_and_markets_1.TOKEN_MINTS; } });\nObject.defineProperty(exports, \"MARKETS\", { enumerable: true, get: function () { return tokens_and_markets_1.MARKETS; } });\nObject.defineProperty(exports, \"getLayoutVersion\", { enumerable: true, get: function () { return tokens_and_markets_1.getLayoutVersion; } });\nvar queue_1 = require(\"./queue\");\nObject.defineProperty(exports, \"decodeEventQueue\", { enumerable: true, get: function () { return queue_1.decodeEventQueue; } });\nObject.defineProperty(exports, \"decodeRequestQueue\", { enumerable: true, get: function () { return queue_1.decodeRequestQueue; } });\nObject.defineProperty(exports, \"REQUEST_QUEUE_LAYOUT\", { enumerable: true, get: function () { return queue_1.REQUEST_QUEUE_LAYOUT; } });\nObject.defineProperty(exports, \"EVENT_QUEUE_LAYOUT\", { enumerable: true, get: function () { return queue_1.EVENT_QUEUE_LAYOUT; } });\nexports.TokenInstructions = __importStar(require(\"./token-instructions\"));\n__exportStar(require(\"./error\"), exports);\nvar market_proxy_1 = require(\"./market-proxy\");\nObject.defineProperty(exports, \"MarketProxy\", { enumerable: true, get: function () { return market_proxy_1.MarketProxy; } });\nObject.defineProperty(exports, \"MarketProxyBuilder\", { enumerable: true, get: function () { return market_proxy_1.MarketProxyBuilder; } });\nvar middleware_1 = require(\"./market-proxy/middleware\");\nObject.defineProperty(exports, \"OpenOrdersPda\", { enumerable: true, get: function () { return middleware_1.OpenOrdersPda; } });\nObject.defineProperty(exports, \"ReferralFees\", { enumerable: true, get: function () { return middleware_1.ReferralFees; } });\nObject.defineProperty(exports, \"PermissionedCrank\", { enumerable: true, get: function () { return middleware_1.PermissionedCrank; } });\nObject.defineProperty(exports, \"Logger\", { enumerable: true, get: function () { return middleware_1.Logger; } });\n//# sourceMappingURL=index.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.DexInstructions = exports.decodeInstructionV2 = exports.decodeInstruction = exports.encodeInstructionV2 = exports.encodeInstruction = exports.INSTRUCTION_LAYOUT_V2 = exports.INSTRUCTION_LAYOUT = exports.NEW_ORDER_V3_OWNER_INDEX = exports.NEW_ORDER_V3_OPEN_ORDERS_INDEX = exports.NEW_ORDER_OWNER_INDEX = exports.NEW_ORDER_OPEN_ORDERS_INDEX = exports.SETTLE_FUNDS_QUOTE_WALLET_INDEX = exports.SETTLE_FUNDS_BASE_WALLET_INDEX = void 0;\nconst buffer_layout_1 = require(\"buffer-layout\");\nconst layout_1 = require(\"./layout\");\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst token_instructions_1 = require(\"./token-instructions\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\n// NOTE: Update these if the position of arguments for the settleFunds instruction changes\nexports.SETTLE_FUNDS_BASE_WALLET_INDEX = 5;\nexports.SETTLE_FUNDS_QUOTE_WALLET_INDEX = 6;\n// NOTE: Update these if the position of arguments for the newOrder instruction changes\nexports.NEW_ORDER_OPEN_ORDERS_INDEX = 1;\nexports.NEW_ORDER_OWNER_INDEX = 4;\n// NOTE: Update these if the position of arguments for the newOrder instruction changes\nexports.NEW_ORDER_V3_OPEN_ORDERS_INDEX = 1;\nexports.NEW_ORDER_V3_OWNER_INDEX = 7;\nexports.INSTRUCTION_LAYOUT = new layout_1.VersionedLayout(0, buffer_layout_1.union(buffer_layout_1.u32('instruction')));\nexports.INSTRUCTION_LAYOUT.inner.addVariant(0, buffer_layout_1.struct([\n layout_1.u64('baseLotSize'),\n layout_1.u64('quoteLotSize'),\n buffer_layout_1.u16('feeRateBps'),\n layout_1.u64('vaultSignerNonce'),\n layout_1.u64('quoteDustThreshold'),\n]), 'initializeMarket');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(1, buffer_layout_1.struct([\n layout_1.sideLayout('side'),\n layout_1.u64('limitPrice'),\n layout_1.u64('maxQuantity'),\n layout_1.orderTypeLayout('orderType'),\n layout_1.u64('clientId'),\n]), 'newOrder');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(2, buffer_layout_1.struct([buffer_layout_1.u16('limit')]), 'matchOrders');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(3, buffer_layout_1.struct([buffer_layout_1.u16('limit')]), 'consumeEvents');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(4, buffer_layout_1.struct([\n layout_1.sideLayout('side'),\n layout_1.u128('orderId'),\n layout_1.publicKeyLayout('openOrders'),\n buffer_layout_1.u8('openOrdersSlot'),\n]), 'cancelOrder');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(5, buffer_layout_1.struct([]), 'settleFunds');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(6, buffer_layout_1.struct([layout_1.u64('clientId')]), 'cancelOrderByClientId');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(10, buffer_layout_1.struct([\n layout_1.sideLayout('side'),\n layout_1.u64('limitPrice'),\n layout_1.u64('maxBaseQuantity'),\n layout_1.u64('maxQuoteQuantity'),\n layout_1.selfTradeBehaviorLayout('selfTradeBehavior'),\n layout_1.orderTypeLayout('orderType'),\n layout_1.u64('clientId'),\n buffer_layout_1.u16('limit'),\n]), 'newOrderV3');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(11, buffer_layout_1.struct([layout_1.sideLayout('side'), layout_1.u128('orderId')]), 'cancelOrderV2');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(12, buffer_layout_1.struct([layout_1.u64('clientId')]), 'cancelOrderByClientIdV2');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(14, buffer_layout_1.struct([]), 'closeOpenOrders');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(15, buffer_layout_1.struct([]), 'initOpenOrders');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(16, buffer_layout_1.struct([buffer_layout_1.u16('limit')]), 'prune');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(17, buffer_layout_1.struct([buffer_layout_1.u16('limit')]), 'consumeEventsPermissioned');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(18, buffer_layout_1.struct([buffer_layout_1.seq(layout_1.u64(), 8, 'clientIds')]), 'cancelOrdersByClientIds');\nconst orderStruct = () => buffer_layout_1.struct([\n layout_1.sideLayout('side'),\n layout_1.u64('limitPrice'),\n layout_1.u64('maxBaseQuantity'),\n layout_1.u64('maxQuoteQuantity'),\n layout_1.selfTradeBehaviorLayout('selfTradeBehavior'),\n layout_1.orderTypeLayout('orderType'),\n layout_1.u64('clientId'),\n buffer_layout_1.u16('limit'),\n layout_1.i64('maxTs'),\n]);\nexports.INSTRUCTION_LAYOUT.inner.addVariant(19, orderStruct(), 'replaceOrderByClientId');\nexports.INSTRUCTION_LAYOUT.inner.addVariant(20, buffer_layout_1.struct([layout_1.u64('orderAmount'), buffer_layout_1.seq(orderStruct(), 8, 'orders')]), 'replaceOrdersByClientIds');\nexports.INSTRUCTION_LAYOUT_V2 = new layout_1.VersionedLayout(0, buffer_layout_1.union(buffer_layout_1.u32('instruction')));\nexports.INSTRUCTION_LAYOUT_V2.inner.addVariant(10, orderStruct(), 'newOrderV3');\nfunction encodeInstruction(instruction, maxLength = 100) {\n const b = Buffer.alloc(maxLength);\n return b.slice(0, exports.INSTRUCTION_LAYOUT.encode(instruction, b));\n}\nexports.encodeInstruction = encodeInstruction;\nfunction encodeInstructionV2(instruction) {\n const b = Buffer.alloc(100);\n return b.slice(0, exports.INSTRUCTION_LAYOUT_V2.encode(instruction, b));\n}\nexports.encodeInstructionV2 = encodeInstructionV2;\nfunction decodeInstruction(message) {\n return exports.INSTRUCTION_LAYOUT.decode(message);\n}\nexports.decodeInstruction = decodeInstruction;\nfunction decodeInstructionV2(message) {\n return exports.INSTRUCTION_LAYOUT_V2.decode(message);\n}\nexports.decodeInstructionV2 = decodeInstructionV2;\nclass DexInstructions {\n static initializeMarket({ market, requestQueue, eventQueue, bids, asks, baseVault, quoteVault, baseMint, quoteMint, baseLotSize, quoteLotSize, feeRateBps, vaultSignerNonce, quoteDustThreshold, programId, authority = undefined, pruneAuthority = undefined, crankAuthority = undefined, }) {\n let rentSysvar = new web3_js_1.PublicKey('SysvarRent111111111111111111111111111111111');\n return new web3_js_1.TransactionInstruction({\n keys: [\n { pubkey: market, isSigner: false, isWritable: true },\n { pubkey: requestQueue, isSigner: false, isWritable: true },\n { pubkey: eventQueue, isSigner: false, isWritable: true },\n { pubkey: bids, isSigner: false, isWritable: true },\n { pubkey: asks, isSigner: false, isWritable: true },\n { pubkey: baseVault, isSigner: false, isWritable: true },\n { pubkey: quoteVault, isSigner: false, isWritable: true },\n { pubkey: baseMint, isSigner: false, isWritable: false },\n { pubkey: quoteMint, isSigner: false, isWritable: false },\n // Use a dummy address if using the new dex upgrade to save tx space.\n {\n pubkey: authority ? quoteMint : web3_js_1.SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false,\n },\n ]\n .concat(authority\n ? { pubkey: authority, isSigner: false, isWritable: false }\n : [])\n .concat(authority && pruneAuthority\n ? { pubkey: pruneAuthority, isSigner: false, isWritable: false }\n : [])\n .concat(authority && pruneAuthority && crankAuthority\n ? { pubkey: crankAuthority, isSigner: false, isWritable: false }\n : []),\n programId,\n data: encodeInstruction({\n initializeMarket: {\n baseLotSize,\n quoteLotSize,\n feeRateBps,\n vaultSignerNonce,\n quoteDustThreshold,\n },\n }),\n });\n }\n static newOrder({ market, openOrders, payer, owner, requestQueue, baseVault, quoteVault, side, limitPrice, maxQuantity, orderType, clientId, programId, feeDiscountPubkey = null, }) {\n const keys = [\n { pubkey: market, isSigner: false, isWritable: true },\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: requestQueue, isSigner: false, isWritable: true },\n { pubkey: payer, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n { pubkey: baseVault, isSigner: false, isWritable: true },\n { pubkey: quoteVault, isSigner: false, isWritable: true },\n { pubkey: token_instructions_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: web3_js_1.SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n if (feeDiscountPubkey) {\n keys.push({\n pubkey: feeDiscountPubkey,\n isSigner: false,\n isWritable: false,\n });\n }\n return new web3_js_1.TransactionInstruction({\n keys,\n programId,\n data: encodeInstruction({\n newOrder: clientId\n ? { side, limitPrice, maxQuantity, orderType, clientId }\n : { side, limitPrice, maxQuantity, orderType },\n }),\n });\n }\n static newOrderV3({ market, openOrders, payer, owner, requestQueue, eventQueue, bids, asks, baseVault, quoteVault, side, limitPrice, maxBaseQuantity, maxQuoteQuantity, orderType, clientId, programId, selfTradeBehavior, feeDiscountPubkey = null, maxTs = null, replaceIfExists = false, }) {\n const keys = [\n { pubkey: market, isSigner: false, isWritable: true },\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: requestQueue, isSigner: false, isWritable: true },\n { pubkey: eventQueue, isSigner: false, isWritable: true },\n { pubkey: bids, isSigner: false, isWritable: true },\n { pubkey: asks, isSigner: false, isWritable: true },\n { pubkey: payer, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n { pubkey: baseVault, isSigner: false, isWritable: true },\n { pubkey: quoteVault, isSigner: false, isWritable: true },\n { pubkey: token_instructions_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: web3_js_1.SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n if (feeDiscountPubkey) {\n keys.push({\n pubkey: feeDiscountPubkey,\n isSigner: false,\n isWritable: false,\n });\n }\n let instructionName, encoder;\n if (replaceIfExists) {\n instructionName = 'replaceOrderByClientId';\n encoder = encodeInstruction;\n }\n else {\n instructionName = 'newOrderV3';\n encoder = maxTs ? encodeInstructionV2 : encodeInstruction;\n }\n return new web3_js_1.TransactionInstruction({\n keys,\n programId,\n data: encoder({\n [instructionName]: {\n side,\n limitPrice,\n maxBaseQuantity,\n maxQuoteQuantity,\n selfTradeBehavior,\n orderType,\n clientId,\n limit: 65535,\n maxTs: new bn_js_1.default(maxTs !== null && maxTs !== void 0 ? maxTs : '9223372036854775807'),\n },\n }),\n });\n }\n static replaceOrdersByClientIds({ market, openOrders, payer, owner, requestQueue, eventQueue, bids, asks, baseVault, quoteVault, feeDiscountPubkey = null, programId, orders }) {\n const keys = [\n { pubkey: market, isSigner: false, isWritable: true },\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: requestQueue, isSigner: false, isWritable: true },\n { pubkey: eventQueue, isSigner: false, isWritable: true },\n { pubkey: bids, isSigner: false, isWritable: true },\n { pubkey: asks, isSigner: false, isWritable: true },\n { pubkey: payer, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n { pubkey: baseVault, isSigner: false, isWritable: true },\n { pubkey: quoteVault, isSigner: false, isWritable: true },\n { pubkey: token_instructions_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n { pubkey: web3_js_1.SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n if (feeDiscountPubkey) {\n keys.push({\n pubkey: feeDiscountPubkey,\n isSigner: false,\n isWritable: false,\n });\n }\n return new web3_js_1.TransactionInstruction({\n keys,\n programId,\n data: encodeInstruction({\n replaceOrdersByClientIds: {\n orderAmount: new bn_js_1.default(orders.length),\n orders: orders.map(order => {\n var _a;\n return ({\n ...order,\n maxTs: new bn_js_1.default((_a = order.maxTs) !== null && _a !== void 0 ? _a : '9223372036854775807'),\n limit: 65535,\n });\n })\n }\n }, 15 + orders.length * 60).slice(0, 13 + orders.length * 54)\n });\n }\n static matchOrders({ market, requestQueue, eventQueue, bids, asks, baseVault, quoteVault, limit, programId, }) {\n return new web3_js_1.TransactionInstruction({\n keys: [\n { pubkey: market, isSigner: false, isWritable: true },\n { pubkey: requestQueue, isSigner: false, isWritable: true },\n { pubkey: eventQueue, isSigner: false, isWritable: true },\n { pubkey: bids, isSigner: false, isWritable: true },\n { pubkey: asks, isSigner: false, isWritable: true },\n { pubkey: baseVault, isSigner: false, isWritable: true },\n { pubkey: quoteVault, isSigner: false, isWritable: true },\n ],\n programId,\n data: encodeInstruction({ matchOrders: { limit } }),\n });\n }\n static consumeEvents({ market, eventQueue, coinFee, pcFee, openOrdersAccounts, limit, programId, }) {\n return new web3_js_1.TransactionInstruction({\n keys: [\n ...openOrdersAccounts.map((account) => ({\n pubkey: account,\n isSigner: false,\n isWritable: true,\n })),\n { pubkey: market, isSigner: false, isWritable: true },\n { pubkey: eventQueue, isSigner: false, isWritable: true },\n { pubkey: coinFee, isSigner: false, isWriteable: true },\n { pubkey: pcFee, isSigner: false, isWritable: true },\n ],\n programId,\n data: encodeInstruction({ consumeEvents: { limit } }),\n });\n }\n static consumeEventsPermissioned({ market, eventQueue, crankAuthority, openOrdersAccounts, limit, programId, }) {\n return new web3_js_1.TransactionInstruction({\n keys: [\n ...openOrdersAccounts.map((account) => ({\n pubkey: account,\n isSigner: false,\n isWritable: true,\n })),\n { pubkey: market, isSigner: false, isWritable: true },\n { pubkey: eventQueue, isSigner: false, isWritable: true },\n { pubkey: crankAuthority, isSigner: true, isWritable: false },\n ],\n programId,\n data: encodeInstruction({ consumeEventsPermissioned: { limit } }),\n });\n }\n static cancelOrder({ market, openOrders, owner, requestQueue, side, orderId, openOrdersSlot, programId, }) {\n return new web3_js_1.TransactionInstruction({\n keys: [\n { pubkey: market, isSigner: false, isWritable: false },\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: requestQueue, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n ],\n programId,\n data: encodeInstruction({\n cancelOrder: { side, orderId, openOrders, openOrdersSlot },\n }),\n });\n }\n static cancelOrderV2(order) {\n const { market, bids, asks, eventQueue, openOrders, owner, side, orderId, programId, } = order;\n return new web3_js_1.TransactionInstruction({\n keys: [\n { pubkey: market, isSigner: false, isWritable: false },\n { pubkey: bids, isSigner: false, isWritable: true },\n { pubkey: asks, isSigner: false, isWritable: true },\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n { pubkey: eventQueue, isSigner: false, isWritable: true },\n ],\n programId,\n data: encodeInstruction({\n cancelOrderV2: { side, orderId },\n }),\n });\n }\n static cancelOrderByClientId({ market, openOrders, owner, requestQueue, clientId, programId, }) {\n return new web3_js_1.TransactionInstruction({\n keys: [\n { pubkey: market, isSigner: false, isWritable: false },\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: requestQueue, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n ],\n programId,\n data: encodeInstruction({\n cancelOrderByClientId: { clientId },\n }),\n });\n }\n static cancelOrderByClientIdV2({ market, openOrders, owner, bids, asks, eventQueue, clientId, programId, }) {\n return new web3_js_1.TransactionInstruction({\n keys: [\n { pubkey: market, isSigner: false, isWritable: false },\n { pubkey: bids, isSigner: false, isWritable: true },\n { pubkey: asks, isSigner: false, isWritable: true },\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n { pubkey: eventQueue, isSigner: false, isWritable: true },\n ],\n programId,\n data: encodeInstruction({\n cancelOrderByClientIdV2: { clientId },\n }),\n });\n }\n static cancelOrdersByClientIds({ market, openOrders, owner, bids, asks, eventQueue, clientIds, programId, }) {\n if (clientIds.length > 8) {\n throw new Error(\"Number of client ids cannot exceed 8!\");\n }\n while (clientIds.length < 8) {\n clientIds.push(new bn_js_1.default(0));\n }\n return new web3_js_1.TransactionInstruction({\n keys: [\n { pubkey: market, isSigner: false, isWritable: false },\n { pubkey: bids, isSigner: false, isWritable: true },\n { pubkey: asks, isSigner: false, isWritable: true },\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n { pubkey: eventQueue, isSigner: false, isWritable: true },\n ],\n programId,\n data: encodeInstruction({\n cancelOrdersByClientIds: { clientIds },\n }),\n });\n }\n static settleFunds({ market, openOrders, owner, baseVault, quoteVault, baseWallet, quoteWallet, vaultSigner, programId, referrerQuoteWallet = null, }) {\n const keys = [\n { pubkey: market, isSigner: false, isWritable: true },\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n { pubkey: baseVault, isSigner: false, isWritable: true },\n { pubkey: quoteVault, isSigner: false, isWritable: true },\n { pubkey: baseWallet, isSigner: false, isWritable: true },\n { pubkey: quoteWallet, isSigner: false, isWritable: true },\n { pubkey: vaultSigner, isSigner: false, isWritable: false },\n { pubkey: token_instructions_1.TOKEN_PROGRAM_ID, isSigner: false, isWritable: false },\n ];\n if (referrerQuoteWallet) {\n keys.push({\n pubkey: referrerQuoteWallet,\n isSigner: false,\n isWritable: true,\n });\n }\n return new web3_js_1.TransactionInstruction({\n keys,\n programId,\n data: encodeInstruction({\n settleFunds: {},\n }),\n });\n }\n static closeOpenOrders({ market, openOrders, owner, solWallet, programId }) {\n const keys = [\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n { pubkey: solWallet, isSigner: false, isWritable: true },\n { pubkey: market, isSigner: false, isWritable: false },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n programId,\n data: encodeInstruction({\n closeOpenOrders: {},\n }),\n });\n }\n static initOpenOrders({ market, openOrders, owner, programId, marketAuthority, }) {\n const keys = [\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n { pubkey: market, isSigner: false, isWritable: false },\n { pubkey: web3_js_1.SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ].concat(marketAuthority\n ? { pubkey: marketAuthority, isSigner: false, isWritable: false }\n : []);\n return new web3_js_1.TransactionInstruction({\n keys,\n programId,\n data: encodeInstruction({\n initOpenOrders: {},\n }),\n });\n }\n static prune({ market, bids, asks, eventQueue, pruneAuthority, openOrders, openOrdersOwner, programId, limit, }) {\n const keys = [\n { pubkey: market, isSigner: false, isWritable: true },\n { pubkey: bids, isSigner: false, isWritable: true },\n { pubkey: asks, isSigner: false, isWritable: true },\n // Keep signer false so that one can use a PDA.\n { pubkey: pruneAuthority, isSigner: false, isWritable: false },\n { pubkey: openOrders, isSigner: false, isWritable: true },\n { pubkey: openOrdersOwner, isSigner: false, isWritable: false },\n { pubkey: eventQueue, isSigner: false, isWritable: true },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n programId,\n data: encodeInstruction({\n prune: { limit },\n }),\n });\n }\n}\nexports.DexInstructions = DexInstructions;\n//# sourceMappingURL=instructions.js.map","\"use strict\";\n// @ts-nocheck\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.setLayoutEncoder = exports.setLayoutDecoder = exports.accountFlagsLayout = exports.selfTradeBehaviorLayout = exports.orderTypeLayout = exports.sideLayout = exports.VersionedLayout = exports.WideBits = exports.u128 = exports.i64 = exports.u64 = exports.publicKeyLayout = exports.zeros = void 0;\nconst buffer_layout_1 = require(\"buffer-layout\");\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nclass Zeros extends buffer_layout_1.Blob {\n decode(b, offset) {\n const slice = super.decode(b, offset);\n if (!slice.every((v) => v === 0)) {\n throw new Error('nonzero padding bytes');\n }\n return slice;\n }\n}\nfunction zeros(length) {\n return new Zeros(length);\n}\nexports.zeros = zeros;\nclass PublicKeyLayout extends buffer_layout_1.Blob {\n constructor(property) {\n super(32, property);\n }\n decode(b, offset) {\n return new web3_js_1.PublicKey(super.decode(b, offset));\n }\n encode(src, b, offset) {\n return super.encode(src.toBuffer(), b, offset);\n }\n}\nfunction publicKeyLayout(property) {\n return new PublicKeyLayout(property);\n}\nexports.publicKeyLayout = publicKeyLayout;\nclass BNLayout extends buffer_layout_1.Blob {\n decode(b, offset) {\n return new bn_js_1.default(super.decode(b, offset), 10, 'le');\n }\n encode(src, b, offset) {\n return super.encode(src.toArrayLike(Buffer, 'le', this.span), b, offset);\n }\n}\nfunction u64(property) {\n return new BNLayout(8, property);\n}\nexports.u64 = u64;\nfunction i64(property) {\n return new BNLayout(8, property);\n}\nexports.i64 = i64;\nfunction u128(property) {\n return new BNLayout(16, property);\n}\nexports.u128 = u128;\nclass WideBits extends buffer_layout_1.Layout {\n constructor(property) {\n super(8, property);\n this._lower = buffer_layout_1.bits(buffer_layout_1.u32(), false);\n this._upper = buffer_layout_1.bits(buffer_layout_1.u32(), false);\n }\n addBoolean(property) {\n if (this._lower.fields.length < 32) {\n this._lower.addBoolean(property);\n }\n else {\n this._upper.addBoolean(property);\n }\n }\n decode(b, offset = 0) {\n const lowerDecoded = this._lower.decode(b, offset);\n const upperDecoded = this._upper.decode(b, offset + this._lower.span);\n return { ...lowerDecoded, ...upperDecoded };\n }\n encode(src, b, offset = 0) {\n return (this._lower.encode(src, b, offset) +\n this._upper.encode(src, b, offset + this._lower.span));\n }\n}\nexports.WideBits = WideBits;\nclass VersionedLayout extends buffer_layout_1.Layout {\n constructor(version, inner, property) {\n super(inner.span > 0 ? inner.span + 1 : inner.span, property);\n this.version = version;\n this.inner = inner;\n }\n decode(b, offset = 0) {\n // if (b.readUInt8(offset) !== this._version) {\n // throw new Error('invalid version');\n // }\n return this.inner.decode(b, offset + 1);\n }\n encode(src, b, offset = 0) {\n b.writeUInt8(this.version, offset);\n return 1 + this.inner.encode(src, b, offset + 1);\n }\n getSpan(b, offset = 0) {\n return 1 + this.inner.getSpan(b, offset + 1);\n }\n}\nexports.VersionedLayout = VersionedLayout;\nclass EnumLayout extends buffer_layout_1.UInt {\n constructor(values, span, property) {\n super(span, property);\n this.values = values;\n }\n encode(src, b, offset) {\n if (this.values[src] !== undefined) {\n return super.encode(this.values[src], b, offset);\n }\n throw new Error('Invalid ' + this.property);\n }\n decode(b, offset) {\n const decodedValue = super.decode(b, offset);\n const entry = Object.entries(this.values).find(([, value]) => value === decodedValue);\n if (entry) {\n return entry[0];\n }\n throw new Error('Invalid ' + this.property);\n }\n}\nfunction sideLayout(property) {\n return new EnumLayout({ buy: 0, sell: 1 }, 4, property);\n}\nexports.sideLayout = sideLayout;\nfunction orderTypeLayout(property) {\n return new EnumLayout({ limit: 0, ioc: 1, postOnly: 2 }, 4, property);\n}\nexports.orderTypeLayout = orderTypeLayout;\nfunction selfTradeBehaviorLayout(property) {\n return new EnumLayout({ decrementTake: 0, cancelProvide: 1, abortTransaction: 2 }, 4, property);\n}\nexports.selfTradeBehaviorLayout = selfTradeBehaviorLayout;\nconst ACCOUNT_FLAGS_LAYOUT = new WideBits();\nACCOUNT_FLAGS_LAYOUT.addBoolean('initialized');\nACCOUNT_FLAGS_LAYOUT.addBoolean('market');\nACCOUNT_FLAGS_LAYOUT.addBoolean('openOrders');\nACCOUNT_FLAGS_LAYOUT.addBoolean('requestQueue');\nACCOUNT_FLAGS_LAYOUT.addBoolean('eventQueue');\nACCOUNT_FLAGS_LAYOUT.addBoolean('bids');\nACCOUNT_FLAGS_LAYOUT.addBoolean('asks');\nfunction accountFlagsLayout(property = 'accountFlags') {\n return ACCOUNT_FLAGS_LAYOUT.replicate(property);\n}\nexports.accountFlagsLayout = accountFlagsLayout;\nfunction setLayoutDecoder(layout, decoder) {\n const originalDecode = layout.decode;\n layout.decode = function decode(b, offset = 0) {\n return decoder(originalDecode.call(this, b, offset));\n };\n}\nexports.setLayoutDecoder = setLayoutDecoder;\nfunction setLayoutEncoder(layout, encoder) {\n const originalEncode = layout.encode;\n layout.encode = function encode(src, b, offset) {\n return originalEncode.call(this, encoder(src), b, offset);\n };\n return layout;\n}\nexports.setLayoutEncoder = setLayoutEncoder;\n//# sourceMappingURL=layout.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MarketProxyBuilder = exports.MarketProxyInstruction = exports.MarketProxy = void 0;\nconst anchor_1 = require(\"@project-serum/anchor\");\nconst market_1 = require(\"../market\");\nconst instructions_1 = require(\"../instructions\");\n// MarketProxy provides an API for constructing transactions to an on-chain\n// DEX proxy, which relays all instructions to the orderbook. Minimally, this\n// requires two modifications for DEX instructions.\n//\n// 1. Transasctions are sent to the proxy program--not the DEX.\n// 2. The DEX program ID must be inserted as the first account in instructions\n// using the proxy relay, so that the proxy can use the account for CPI.\n// The program is responsible for removing this account before relaying to\n// the dex.\n//\n// Additionally, a middleware abstraction is provided so that one can configure\n// both the client and the smart contract with the ability to send and processs\n// arbitrary accounts and instruction data *in addition* to what the Serum DEX\n// expects.\n//\n// Similar to the layers of an onion, each middleware wraps a transaction\n// request with additional accounts and instruction data before sending it to\n// the program. Upon receiving the request, the program--with its own set of\n// middleware-- unwraps and processes each layer. The process ends with all\n// layers being unwrapped and the proxy relaying the transaction to the DEX.\n//\n// As a result, the order of the middleware matters and the client should\n// process middleware in the *reverse* order of the proxy smart contract.\nclass MarketProxy {\n // Ctor.\n constructor(market, instruction) {\n this._market = market;\n this._instruction = instruction;\n }\n // DEX market being proxied.\n get market() {\n return this._market;\n }\n // Instruction namespace.\n get instruction() {\n return this._instruction;\n }\n // Serum DEX program ID.\n get dexProgramId() {\n return this._market.programId;\n }\n // Proxy program ID.\n get proxyProgramId() {\n return this._instruction.proxyProgramId;\n }\n}\nexports.MarketProxy = MarketProxy;\n// Instruction builder for the market proxy.\nclass MarketProxyInstruction {\n constructor(proxyProgramId, dexProgramId, market, middlewares) {\n this._proxyProgramId = proxyProgramId;\n this._dexProgramId = dexProgramId;\n this._market = market;\n this._middlewares = middlewares;\n }\n // Program ID of the permissioning proxy program.\n get proxyProgramId() {\n return this._proxyProgramId;\n }\n newOrderV3(params) {\n const tradeIx = this._market.makeNewOrderV3Instruction({\n ...params,\n programId: this._proxyProgramId,\n });\n this._middlewares.forEach((mw) => mw.newOrderV3(tradeIx));\n return this.proxy(tradeIx);\n }\n initOpenOrders(owner, market, openOrders, marketAuthority) {\n const ix = instructions_1.DexInstructions.initOpenOrders({\n market,\n openOrders,\n owner,\n programId: this._proxyProgramId,\n marketAuthority,\n });\n this._middlewares.forEach((mw) => mw.initOpenOrders(ix));\n return this.proxy(ix);\n }\n cancelOrder(owner, order) {\n const ix = instructions_1.DexInstructions.cancelOrderV2({\n market: this._market.address,\n owner,\n openOrders: order.openOrdersAddress,\n bids: this._market.decoded.bids,\n asks: this._market.decoded.asks,\n eventQueue: this._market.decoded.eventQueue,\n side: order.side,\n orderId: order.orderId,\n openOrdersSlot: order.openOrdersSlot,\n programId: this._proxyProgramId,\n });\n this._middlewares.forEach((mw) => mw.cancelOrderV2(ix));\n return this.proxy(ix);\n }\n cancelOrderByClientId(owner, openOrders, clientId) {\n const ix = instructions_1.DexInstructions.cancelOrderByClientIdV2({\n market: this._market.address,\n openOrders,\n owner,\n bids: this._market.decoded.bids,\n asks: this._market.decoded.asks,\n eventQueue: this._market.decoded.eventQueue,\n clientId,\n programId: this._proxyProgramId,\n });\n this._middlewares.forEach((mw) => mw.cancelOrderByClientIdV2(ix));\n return this.proxy(ix);\n }\n settleFunds(openOrders, owner, baseWallet, quoteWallet, referrerQuoteWallet) {\n const ix = instructions_1.DexInstructions.settleFunds({\n market: this._market.address,\n openOrders,\n owner,\n baseVault: this._market.decoded.baseVault,\n quoteVault: this._market.decoded.quoteVault,\n baseWallet,\n quoteWallet,\n vaultSigner: anchor_1.utils.publicKey.createProgramAddressSync([\n this._market.address.toBuffer(),\n this._market.decoded.vaultSignerNonce.toArrayLike(Buffer, 'le', 8),\n ], this._dexProgramId),\n programId: this._proxyProgramId,\n referrerQuoteWallet,\n });\n this._middlewares.forEach((mw) => mw.settleFunds(ix));\n return this.proxy(ix);\n }\n closeOpenOrders(openOrders, owner, solWallet) {\n const ix = instructions_1.DexInstructions.closeOpenOrders({\n market: this._market.address,\n openOrders,\n owner,\n solWallet,\n programId: this._proxyProgramId,\n });\n this._middlewares.forEach((mw) => mw.closeOpenOrders(ix));\n return this.proxy(ix);\n }\n prune(openOrders, openOrdersOwner, limit) {\n if (!limit) {\n limit = 65535;\n }\n const ix = instructions_1.DexInstructions.prune({\n market: this._market.address,\n bids: this._market.decoded.bids,\n asks: this._market.decoded.asks,\n eventQueue: this._market.decoded.eventQueue,\n pruneAuthority: this._market.decoded.pruneAuthority,\n openOrders,\n openOrdersOwner,\n programId: this._proxyProgramId,\n limit,\n });\n this._middlewares.forEach((mw) => mw.prune(ix));\n return this.proxy(ix);\n }\n consumeEvents(openOrdersAccounts, limit) {\n const ix = instructions_1.DexInstructions.consumeEvents({\n market: this._market.address,\n eventQueue: this._market.decoded.eventQueue,\n coinFee: this._market.decoded.eventQueue,\n pcFee: this._market.decoded.eventQueue,\n openOrdersAccounts,\n limit,\n programId: this._proxyProgramId,\n });\n this._middlewares.forEach((mw) => mw.consumeEvents(ix));\n return this.proxy(ix);\n }\n consumeEventsPermissioned(openOrdersAccounts, limit) {\n const ix = instructions_1.DexInstructions.consumeEventsPermissioned({\n market: this._market.address,\n eventQueue: this._market.decoded.eventQueue,\n crankAuthority: this._market.decoded.consumeEventsAuthority,\n openOrdersAccounts,\n limit,\n programId: this._proxyProgramId,\n });\n this._middlewares.forEach((mw) => mw.consumeEventsPermissioned(ix));\n return this.proxy(ix);\n }\n // Adds the serum dex account to the instruction so that proxies can\n // relay (CPI requires the executable account).\n proxy(ix) {\n ix.keys = [\n { pubkey: this._dexProgramId, isWritable: false, isSigner: false },\n ...ix.keys,\n ];\n return ix;\n }\n}\nexports.MarketProxyInstruction = MarketProxyInstruction;\nclass MarketProxyBuilder {\n constructor() {\n this._middlewares = [];\n }\n middleware(mw) {\n this._middlewares.push(mw);\n return this;\n }\n async load({ connection, market, options = {}, dexProgramId, proxyProgramId, }) {\n const marketClient = await market_1.Market.load(connection, market, options, dexProgramId, market_1.MARKET_STATE_LAYOUT_V3);\n const instruction = new MarketProxyInstruction(proxyProgramId, dexProgramId, marketClient, this._middlewares);\n return new MarketProxy(marketClient, instruction);\n }\n}\nexports.MarketProxyBuilder = MarketProxyBuilder;\n//# sourceMappingURL=index.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Logger = exports.PermissionedCrank = exports.ReferralFees = exports.OpenOrdersPda = void 0;\nconst anchor_1 = require(\"@project-serum/anchor\");\nconst web3_js_1 = require(\"@solana/web3.js\");\nclass OpenOrdersPda {\n constructor({ proxyProgramId, dexProgramId, }) {\n this._proxyProgramId = proxyProgramId;\n this._dexProgramId = dexProgramId;\n }\n // PDA authorized to create open orders accounts.\n static async marketAuthority(market, dexProgramId, proxyProgramId) {\n // b\"open-orders-init\"\n const openOrdersStr = Buffer.from([\n 111,\n 112,\n 101,\n 110,\n 45,\n 111,\n 114,\n 100,\n 101,\n 114,\n 115,\n 45,\n 105,\n 110,\n 105,\n 116,\n ]);\n const [addr] = await web3_js_1.PublicKey.findProgramAddress([openOrdersStr, dexProgramId.toBuffer(), market.toBuffer()], proxyProgramId);\n return addr;\n }\n static async openOrdersAddress(market, owner, dexProgramId, proxyProgramId) {\n // b\"open-orders\".\n const openOrdersStr = Buffer.from([\n 111,\n 112,\n 101,\n 110,\n 45,\n 111,\n 114,\n 100,\n 101,\n 114,\n 115,\n ]);\n const [addr] = await web3_js_1.PublicKey.findProgramAddress([\n openOrdersStr,\n dexProgramId.toBuffer(),\n market.toBuffer(),\n owner.toBuffer(),\n ], proxyProgramId);\n return addr;\n }\n initOpenOrders(ix) {\n const market = ix.keys[2].pubkey;\n const owner = ix.keys[1].pubkey;\n // b\"open-orders\"\n const openOrdersSeed = Buffer.from([\n 111,\n 112,\n 101,\n 110,\n 45,\n 111,\n 114,\n 100,\n 101,\n 114,\n 115,\n ]);\n // b\"open-orders-init\"\n const openOrdersInitSeed = Buffer.from([\n 111,\n 112,\n 101,\n 110,\n 45,\n 111,\n 114,\n 100,\n 101,\n 114,\n 115,\n 45,\n 105,\n 110,\n 105,\n 116,\n ]);\n const [openOrders, bump] = anchor_1.utils.publicKey.findProgramAddressSync([\n openOrdersSeed,\n this._dexProgramId.toBuffer(),\n market.toBuffer(),\n owner.toBuffer(),\n ], this._proxyProgramId);\n const [marketAuthority, bumpInit] = anchor_1.utils.publicKey.findProgramAddressSync([openOrdersInitSeed, this._dexProgramId.toBuffer(), market.toBuffer()], this._proxyProgramId);\n // Override the open orders account and market authority.\n ix.keys[0].pubkey = openOrders;\n ix.keys[4].pubkey = marketAuthority;\n // Writable because it must pay for the PDA initialization.\n ix.keys[1].isWritable = true;\n // Prepend to the account list extra accounts needed for PDA initialization.\n ix.keys = [\n { pubkey: this._dexProgramId, isSigner: false, isWritable: false },\n { pubkey: web3_js_1.SystemProgram.programId, isSigner: false, isWritable: false },\n ...ix.keys,\n ];\n // Prepend the ix discriminator, bump, and bumpInit to the instruction data,\n // which saves the program compute by avoiding recalculating them in the\n // program.\n ix.data = Buffer.concat([Buffer.from([0, bump, bumpInit]), ix.data]);\n }\n newOrderV3(ix) {\n ix.data = Buffer.concat([Buffer.from([1]), ix.data]);\n }\n cancelOrderV2(ix) {\n ix.data = Buffer.concat([Buffer.from([2]), ix.data]);\n }\n cancelOrderByClientIdV2(ix) {\n ix.data = Buffer.concat([Buffer.from([3]), ix.data]);\n }\n settleFunds(ix) {\n ix.data = Buffer.concat([Buffer.from([4]), ix.data]);\n }\n closeOpenOrders(ix) {\n ix.data = Buffer.concat([Buffer.from([5]), ix.data]);\n }\n prune(ix) {\n ix.data = Buffer.concat([Buffer.from([6]), ix.data]);\n }\n consumeEvents(ix) {\n ix.data = Buffer.concat([Buffer.from([7]), ix.data]);\n }\n consumeEventsPermissioned(ix) {\n ix.data = Buffer.concat([Buffer.from([8]), ix.data]);\n }\n}\nexports.OpenOrdersPda = OpenOrdersPda;\nclass ReferralFees {\n // eslint-disable-next-line\n initOpenOrders(_ix) { }\n // eslint-disable-next-line\n newOrderV3(_ix) { }\n // eslint-disable-next-line\n cancelOrderV2(_ix) { }\n // eslint-disable-next-line\n cancelOrderByClientIdV2(_ix) { }\n // eslint-disable-next-line\n settleFunds(_ix) { }\n // eslint-disable-next-line\n closeOpenOrders(_ix) { }\n // eslint-disable-next-line\n prune(_ix) { }\n // eslint-disable-next-line\n consumeEvents(_ix) { }\n // eslint-disable-next-line\n consumeEventsPermissioned(_ix) { }\n}\nexports.ReferralFees = ReferralFees;\nclass PermissionedCrank {\n // eslint-disable-next-line\n initOpenOrders(_ix) { }\n // eslint-disable-next-line\n newOrderV3(_ix) { }\n // eslint-disable-next-line\n cancelOrderV2(_ix) { }\n // eslint-disable-next-line\n cancelOrderByClientIdV2(_ix) { }\n // eslint-disable-next-line\n settleFunds(_ix) { }\n // eslint-disable-next-line\n closeOpenOrders(_ix) { }\n // eslint-disable-next-line\n prune(_ix) { }\n // eslint-disable-next-line\n consumeEvents(_ix) { }\n // eslint-disable-next-line\n consumeEventsPermissioned(ix) {\n ix.keys[ix.keys.length - 1].isSigner = false;\n }\n}\nexports.PermissionedCrank = PermissionedCrank;\nclass Logger {\n initOpenOrders(ix) {\n console.log('Proxying initOpenOrders', this.ixToDisplay(ix));\n }\n newOrderV3(ix) {\n console.log('Proxying newOrderV3', this.ixToDisplay(ix));\n }\n cancelOrderV2(ix) {\n console.log('Proxying cancelOrderV2', this.ixToDisplay(ix));\n }\n cancelOrderByClientIdV2(ix) {\n console.log('Proxying cancelOrderByClientIdV2', this.ixToDisplay(ix));\n }\n settleFunds(ix) {\n console.log('Proxying settleFunds', this.ixToDisplay(ix));\n }\n closeOpenOrders(ix) {\n console.log('Proxying closeOpenOrders', this.ixToDisplay(ix));\n }\n prune(ix) {\n console.log('Proxying prune', this.ixToDisplay(ix));\n }\n consumeEvents(ix) {\n console.log('Proxying consumeEvents', this.ixToDisplay(ix));\n }\n consumeEventsPermissioned(ix) {\n console.log('Proxying consumeEventsPermissioned', this.ixToDisplay(ix));\n }\n ixToDisplay(ix) {\n const keys = ix.keys.map((i) => {\n return { ...i, pubkey: i.pubkey.toString() };\n });\n const programId = ix.programId.toString();\n const data = new Uint8Array(ix.data);\n return { keys, programId, data };\n }\n}\nexports.Logger = Logger;\n//# sourceMappingURL=middleware.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getMintDecimals = exports.Orderbook = exports.ORDERBOOK_LAYOUT = exports.OpenOrders = exports._OPEN_ORDERS_LAYOUT_V2 = exports._OPEN_ORDERS_LAYOUT_V1 = exports.Market = exports.MARKET_STATE_LAYOUT_V3 = exports.MARKET_STATE_LAYOUT_V2 = exports._MARKET_STAT_LAYOUT_V1 = void 0;\nconst buffer_layout_1 = require(\"buffer-layout\");\nconst layout_1 = require(\"./layout\");\nconst slab_1 = require(\"./slab\");\nconst instructions_1 = require(\"./instructions\");\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst queue_1 = require(\"./queue\");\nconst buffer_1 = require(\"buffer\");\nconst fees_1 = require(\"./fees\");\nconst token_instructions_1 = require(\"./token-instructions\");\nconst tokens_and_markets_1 = require(\"./tokens_and_markets\");\nexports._MARKET_STAT_LAYOUT_V1 = buffer_layout_1.struct([\n buffer_layout_1.blob(5),\n layout_1.accountFlagsLayout('accountFlags'),\n layout_1.publicKeyLayout('ownAddress'),\n layout_1.u64('vaultSignerNonce'),\n layout_1.publicKeyLayout('baseMint'),\n layout_1.publicKeyLayout('quoteMint'),\n layout_1.publicKeyLayout('baseVault'),\n layout_1.u64('baseDepositsTotal'),\n layout_1.u64('baseFeesAccrued'),\n layout_1.publicKeyLayout('quoteVault'),\n layout_1.u64('quoteDepositsTotal'),\n layout_1.u64('quoteFeesAccrued'),\n layout_1.u64('quoteDustThreshold'),\n layout_1.publicKeyLayout('requestQueue'),\n layout_1.publicKeyLayout('eventQueue'),\n layout_1.publicKeyLayout('bids'),\n layout_1.publicKeyLayout('asks'),\n layout_1.u64('baseLotSize'),\n layout_1.u64('quoteLotSize'),\n layout_1.u64('feeRateBps'),\n buffer_layout_1.blob(7),\n]);\nexports.MARKET_STATE_LAYOUT_V2 = buffer_layout_1.struct([\n buffer_layout_1.blob(5),\n layout_1.accountFlagsLayout('accountFlags'),\n layout_1.publicKeyLayout('ownAddress'),\n layout_1.u64('vaultSignerNonce'),\n layout_1.publicKeyLayout('baseMint'),\n layout_1.publicKeyLayout('quoteMint'),\n layout_1.publicKeyLayout('baseVault'),\n layout_1.u64('baseDepositsTotal'),\n layout_1.u64('baseFeesAccrued'),\n layout_1.publicKeyLayout('quoteVault'),\n layout_1.u64('quoteDepositsTotal'),\n layout_1.u64('quoteFeesAccrued'),\n layout_1.u64('quoteDustThreshold'),\n layout_1.publicKeyLayout('requestQueue'),\n layout_1.publicKeyLayout('eventQueue'),\n layout_1.publicKeyLayout('bids'),\n layout_1.publicKeyLayout('asks'),\n layout_1.u64('baseLotSize'),\n layout_1.u64('quoteLotSize'),\n layout_1.u64('feeRateBps'),\n layout_1.u64('referrerRebatesAccrued'),\n buffer_layout_1.blob(7),\n]);\nexports.MARKET_STATE_LAYOUT_V3 = buffer_layout_1.struct([\n buffer_layout_1.blob(5),\n layout_1.accountFlagsLayout('accountFlags'),\n layout_1.publicKeyLayout('ownAddress'),\n layout_1.u64('vaultSignerNonce'),\n layout_1.publicKeyLayout('baseMint'),\n layout_1.publicKeyLayout('quoteMint'),\n layout_1.publicKeyLayout('baseVault'),\n layout_1.u64('baseDepositsTotal'),\n layout_1.u64('baseFeesAccrued'),\n layout_1.publicKeyLayout('quoteVault'),\n layout_1.u64('quoteDepositsTotal'),\n layout_1.u64('quoteFeesAccrued'),\n layout_1.u64('quoteDustThreshold'),\n layout_1.publicKeyLayout('requestQueue'),\n layout_1.publicKeyLayout('eventQueue'),\n layout_1.publicKeyLayout('bids'),\n layout_1.publicKeyLayout('asks'),\n layout_1.u64('baseLotSize'),\n layout_1.u64('quoteLotSize'),\n layout_1.u64('feeRateBps'),\n layout_1.u64('referrerRebatesAccrued'),\n layout_1.publicKeyLayout('authority'),\n layout_1.publicKeyLayout('pruneAuthority'),\n layout_1.publicKeyLayout('consumeEventsAuthority'),\n buffer_layout_1.blob(992),\n buffer_layout_1.blob(7),\n]);\nclass Market {\n constructor(decoded, baseMintDecimals, quoteMintDecimals, options = {}, programId, layoutOverride) {\n const { skipPreflight = false, commitment = 'recent' } = options;\n if (!decoded.accountFlags.initialized || !decoded.accountFlags.market) {\n throw new Error('Invalid market state');\n }\n this._decoded = decoded;\n this._baseSplTokenDecimals = baseMintDecimals;\n this._quoteSplTokenDecimals = quoteMintDecimals;\n this._skipPreflight = skipPreflight;\n this._commitment = commitment;\n this._programId = programId;\n this._openOrdersAccountsCache = {};\n this._feeDiscountKeysCache = {};\n this._layoutOverride = layoutOverride;\n }\n static getLayout(programId) {\n if (tokens_and_markets_1.getLayoutVersion(programId) === 1) {\n return exports._MARKET_STAT_LAYOUT_V1;\n }\n return exports.MARKET_STATE_LAYOUT_V2;\n }\n static async findAccountsByMints(connection, baseMintAddress, quoteMintAddress, programId) {\n const filters = [\n {\n memcmp: {\n offset: this.getLayout(programId).offsetOf('baseMint'),\n bytes: baseMintAddress.toBase58(),\n },\n },\n {\n memcmp: {\n offset: Market.getLayout(programId).offsetOf('quoteMint'),\n bytes: quoteMintAddress.toBase58(),\n },\n },\n ];\n return getFilteredProgramAccounts(connection, programId, filters);\n }\n static async load(connection, address, options = {}, programId, layoutOverride) {\n const { owner, data } = throwIfNull(await connection.getAccountInfo(address), 'Market not found');\n if (!owner.equals(programId)) {\n throw new Error('Address not owned by program: ' + owner.toBase58());\n }\n const decoded = (layoutOverride !== null && layoutOverride !== void 0 ? layoutOverride : this.getLayout(programId)).decode(data);\n if (!decoded.accountFlags.initialized ||\n !decoded.accountFlags.market ||\n !decoded.ownAddress.equals(address)) {\n throw new Error('Invalid market');\n }\n const [baseMintDecimals, quoteMintDecimals] = await Promise.all([\n getMintDecimals(connection, decoded.baseMint),\n getMintDecimals(connection, decoded.quoteMint),\n ]);\n return new Market(decoded, baseMintDecimals, quoteMintDecimals, options, programId, layoutOverride);\n }\n get programId() {\n return this._programId;\n }\n get address() {\n return this._decoded.ownAddress;\n }\n get publicKey() {\n return this.address;\n }\n get baseMintAddress() {\n return this._decoded.baseMint;\n }\n get quoteMintAddress() {\n return this._decoded.quoteMint;\n }\n get bidsAddress() {\n return this._decoded.bids;\n }\n get asksAddress() {\n return this._decoded.asks;\n }\n get decoded() {\n return this._decoded;\n }\n async loadBids(connection) {\n const { data } = throwIfNull(await connection.getAccountInfo(this._decoded.bids));\n return Orderbook.decode(this, data);\n }\n async loadAsks(connection) {\n const { data } = throwIfNull(await connection.getAccountInfo(this._decoded.asks));\n return Orderbook.decode(this, data);\n }\n async loadOrdersForOwner(connection, ownerAddress, cacheDurationMs = 0) {\n const [bids, asks, openOrdersAccounts] = await Promise.all([\n this.loadBids(connection),\n this.loadAsks(connection),\n this.findOpenOrdersAccountsForOwner(connection, ownerAddress, cacheDurationMs),\n ]);\n return this.filterForOpenOrders(bids, asks, openOrdersAccounts);\n }\n filterForOpenOrders(bids, asks, openOrdersAccounts) {\n return [...bids, ...asks].filter((order) => openOrdersAccounts.some((openOrders) => order.openOrdersAddress.equals(openOrders.address)));\n }\n async findBaseTokenAccountsForOwner(connection, ownerAddress, includeUnwrappedSol = false) {\n if (this.baseMintAddress.equals(token_instructions_1.WRAPPED_SOL_MINT) && includeUnwrappedSol) {\n const [wrapped, unwrapped] = await Promise.all([\n this.findBaseTokenAccountsForOwner(connection, ownerAddress, false),\n connection.getAccountInfo(ownerAddress),\n ]);\n if (unwrapped !== null) {\n return [{ pubkey: ownerAddress, account: unwrapped }, ...wrapped];\n }\n return wrapped;\n }\n return await this.getTokenAccountsByOwnerForMint(connection, ownerAddress, this.baseMintAddress);\n }\n async getTokenAccountsByOwnerForMint(connection, ownerAddress, mintAddress) {\n return (await connection.getTokenAccountsByOwner(ownerAddress, {\n mint: mintAddress,\n })).value;\n }\n async findQuoteTokenAccountsForOwner(connection, ownerAddress, includeUnwrappedSol = false) {\n if (this.quoteMintAddress.equals(token_instructions_1.WRAPPED_SOL_MINT) && includeUnwrappedSol) {\n const [wrapped, unwrapped] = await Promise.all([\n this.findQuoteTokenAccountsForOwner(connection, ownerAddress, false),\n connection.getAccountInfo(ownerAddress),\n ]);\n if (unwrapped !== null) {\n return [{ pubkey: ownerAddress, account: unwrapped }, ...wrapped];\n }\n return wrapped;\n }\n return await this.getTokenAccountsByOwnerForMint(connection, ownerAddress, this.quoteMintAddress);\n }\n async findOpenOrdersAccountsForOwner(connection, ownerAddress, cacheDurationMs = 0) {\n const strOwner = ownerAddress.toBase58();\n const now = new Date().getTime();\n if (strOwner in this._openOrdersAccountsCache &&\n now - this._openOrdersAccountsCache[strOwner].ts < cacheDurationMs) {\n return this._openOrdersAccountsCache[strOwner].accounts;\n }\n const openOrdersAccountsForOwner = await OpenOrders.findForMarketAndOwner(connection, this.address, ownerAddress, this._programId);\n this._openOrdersAccountsCache[strOwner] = {\n accounts: openOrdersAccountsForOwner,\n ts: now,\n };\n return openOrdersAccountsForOwner;\n }\n async replaceOrders(connection, accounts, orders, cacheDurationMs = 0) {\n var _a;\n if (!accounts.openOrdersAccount && !accounts.openOrdersAddressKey) {\n const ownerAddress = (_a = accounts.owner.publicKey) !== null && _a !== void 0 ? _a : accounts.owner;\n const openOrdersAccounts = await this.findOpenOrdersAccountsForOwner(connection, ownerAddress, cacheDurationMs);\n accounts.openOrdersAddressKey = openOrdersAccounts[0].address;\n }\n const transaction = new web3_js_1.Transaction();\n transaction.add(this.makeReplaceOrdersByClientIdsInstruction(accounts, orders));\n return await this._sendTransaction(connection, transaction, [\n accounts.owner,\n ]);\n }\n async placeOrder(connection, { owner, payer, side, price, size, orderType = 'limit', clientId, openOrdersAddressKey, openOrdersAccount, feeDiscountPubkey, maxTs, replaceIfExists = false, }) {\n const { transaction, signers } = await this.makePlaceOrderTransaction(connection, {\n owner,\n payer,\n side,\n price,\n size,\n orderType,\n clientId,\n openOrdersAddressKey,\n openOrdersAccount,\n feeDiscountPubkey,\n maxTs,\n replaceIfExists,\n });\n return await this._sendTransaction(connection, transaction, [\n owner,\n ...signers,\n ]);\n }\n getSplTokenBalanceFromAccountInfo(accountInfo, decimals) {\n return divideBnToNumber(new bn_js_1.default(accountInfo.data.slice(64, 72), 10, 'le'), new bn_js_1.default(10).pow(new bn_js_1.default(decimals)));\n }\n get supportsSrmFeeDiscounts() {\n return fees_1.supportsSrmFeeDiscounts(this._programId);\n }\n get supportsReferralFees() {\n return tokens_and_markets_1.getLayoutVersion(this._programId) > 1;\n }\n get usesRequestQueue() {\n return tokens_and_markets_1.getLayoutVersion(this._programId) <= 2;\n }\n async findFeeDiscountKeys(connection, ownerAddress, cacheDurationMs = 0) {\n let sortedAccounts = [];\n const now = new Date().getTime();\n const strOwner = ownerAddress.toBase58();\n if (strOwner in this._feeDiscountKeysCache &&\n now - this._feeDiscountKeysCache[strOwner].ts < cacheDurationMs) {\n return this._feeDiscountKeysCache[strOwner].accounts;\n }\n if (this.supportsSrmFeeDiscounts) {\n // Fee discounts based on (M)SRM holdings supported in newer versions\n const msrmAccounts = (await this.getTokenAccountsByOwnerForMint(connection, ownerAddress, token_instructions_1.MSRM_MINT)).map(({ pubkey, account }) => {\n const balance = this.getSplTokenBalanceFromAccountInfo(account, token_instructions_1.MSRM_DECIMALS);\n return {\n pubkey,\n mint: token_instructions_1.MSRM_MINT,\n balance,\n feeTier: fees_1.getFeeTier(balance, 0),\n };\n });\n const srmAccounts = (await this.getTokenAccountsByOwnerForMint(connection, ownerAddress, token_instructions_1.SRM_MINT)).map(({ pubkey, account }) => {\n const balance = this.getSplTokenBalanceFromAccountInfo(account, token_instructions_1.SRM_DECIMALS);\n return {\n pubkey,\n mint: token_instructions_1.SRM_MINT,\n balance,\n feeTier: fees_1.getFeeTier(0, balance),\n };\n });\n sortedAccounts = msrmAccounts.concat(srmAccounts).sort((a, b) => {\n if (a.feeTier > b.feeTier) {\n return -1;\n }\n else if (a.feeTier < b.feeTier) {\n return 1;\n }\n else {\n if (a.balance > b.balance) {\n return -1;\n }\n else if (a.balance < b.balance) {\n return 1;\n }\n else {\n return 0;\n }\n }\n });\n }\n this._feeDiscountKeysCache[strOwner] = {\n accounts: sortedAccounts,\n ts: now,\n };\n return sortedAccounts;\n }\n async findBestFeeDiscountKey(connection, ownerAddress, cacheDurationMs = 30000) {\n const accounts = await this.findFeeDiscountKeys(connection, ownerAddress, cacheDurationMs);\n if (accounts.length > 0) {\n return {\n pubkey: accounts[0].pubkey,\n feeTier: accounts[0].feeTier,\n };\n }\n return {\n pubkey: null,\n feeTier: 0,\n };\n }\n async makePlaceOrderTransaction(connection, { owner, payer, side, price, size, orderType = 'limit', clientId, openOrdersAddressKey, openOrdersAccount, feeDiscountPubkey = undefined, selfTradeBehavior = 'decrementTake', maxTs, replaceIfExists = false, }, cacheDurationMs = 0, feeDiscountPubkeyCacheDurationMs = 0) {\n var _a, _b;\n // @ts-ignore\n const ownerAddress = (_a = owner.publicKey) !== null && _a !== void 0 ? _a : owner;\n const openOrdersAccounts = await this.findOpenOrdersAccountsForOwner(connection, ownerAddress, cacheDurationMs);\n const transaction = new web3_js_1.Transaction();\n const signers = [];\n // Fetch an SRM fee discount key if the market supports discounts and it is not supplied\n let useFeeDiscountPubkey;\n if (feeDiscountPubkey) {\n useFeeDiscountPubkey = feeDiscountPubkey;\n }\n else if (feeDiscountPubkey === undefined &&\n this.supportsSrmFeeDiscounts) {\n useFeeDiscountPubkey = (await this.findBestFeeDiscountKey(connection, ownerAddress, feeDiscountPubkeyCacheDurationMs)).pubkey;\n }\n else {\n useFeeDiscountPubkey = null;\n }\n let openOrdersAddress;\n if (openOrdersAccounts.length === 0) {\n let account;\n if (openOrdersAccount) {\n account = openOrdersAccount;\n }\n else {\n account = new web3_js_1.Account();\n }\n transaction.add(await OpenOrders.makeCreateAccountTransaction(connection, this.address, ownerAddress, account.publicKey, this._programId));\n openOrdersAddress = account.publicKey;\n signers.push(account);\n // refresh the cache of open order accounts on next fetch\n this._openOrdersAccountsCache[ownerAddress.toBase58()].ts = 0;\n }\n else if (openOrdersAccount) {\n openOrdersAddress = openOrdersAccount.publicKey;\n }\n else if (openOrdersAddressKey) {\n openOrdersAddress = openOrdersAddressKey;\n }\n else {\n openOrdersAddress = openOrdersAccounts[0].address;\n }\n let wrappedSolAccount = null;\n if (payer.equals(ownerAddress)) {\n if ((side === 'buy' && this.quoteMintAddress.equals(token_instructions_1.WRAPPED_SOL_MINT)) ||\n (side === 'sell' && this.baseMintAddress.equals(token_instructions_1.WRAPPED_SOL_MINT))) {\n wrappedSolAccount = new web3_js_1.Account();\n let lamports;\n if (side === 'buy') {\n lamports = Math.round(price * size * 1.01 * web3_js_1.LAMPORTS_PER_SOL);\n if (openOrdersAccounts.length > 0) {\n lamports -= openOrdersAccounts[0].quoteTokenFree.toNumber();\n }\n }\n else {\n lamports = Math.round(size * web3_js_1.LAMPORTS_PER_SOL);\n if (openOrdersAccounts.length > 0) {\n lamports -= openOrdersAccounts[0].baseTokenFree.toNumber();\n }\n }\n lamports = Math.max(lamports, 0) + 1e7;\n transaction.add(web3_js_1.SystemProgram.createAccount({\n fromPubkey: ownerAddress,\n newAccountPubkey: wrappedSolAccount.publicKey,\n lamports,\n space: 165,\n programId: token_instructions_1.TOKEN_PROGRAM_ID,\n }));\n transaction.add(token_instructions_1.initializeAccount({\n account: wrappedSolAccount.publicKey,\n mint: token_instructions_1.WRAPPED_SOL_MINT,\n owner: ownerAddress,\n }));\n signers.push(wrappedSolAccount);\n }\n else {\n throw new Error('Invalid payer account');\n }\n }\n const placeOrderInstruction = this.makePlaceOrderInstruction(connection, {\n owner,\n payer: (_b = wrappedSolAccount === null || wrappedSolAccount === void 0 ? void 0 : wrappedSolAccount.publicKey) !== null && _b !== void 0 ? _b : payer,\n side,\n price,\n size,\n orderType,\n clientId,\n openOrdersAddressKey: openOrdersAddress,\n feeDiscountPubkey: useFeeDiscountPubkey,\n selfTradeBehavior,\n maxTs,\n replaceIfExists,\n });\n transaction.add(placeOrderInstruction);\n if (wrappedSolAccount) {\n transaction.add(token_instructions_1.closeAccount({\n source: wrappedSolAccount.publicKey,\n destination: ownerAddress,\n owner: ownerAddress,\n }));\n }\n return { transaction, signers, payer: owner };\n }\n makePlaceOrderInstruction(connection, params) {\n var _a;\n const { owner, payer, side, price, size, orderType = 'limit', clientId, openOrdersAddressKey, openOrdersAccount, feeDiscountPubkey = null, } = params;\n // @ts-ignore\n const ownerAddress = (_a = owner.publicKey) !== null && _a !== void 0 ? _a : owner;\n if (this.baseSizeNumberToLots(size).lte(new bn_js_1.default(0))) {\n throw new Error('size too small');\n }\n if (this.priceNumberToLots(price).lte(new bn_js_1.default(0))) {\n throw new Error('invalid price');\n }\n if (this.usesRequestQueue) {\n return instructions_1.DexInstructions.newOrder({\n market: this.address,\n requestQueue: this._decoded.requestQueue,\n baseVault: this._decoded.baseVault,\n quoteVault: this._decoded.quoteVault,\n openOrders: openOrdersAccount\n ? openOrdersAccount.publicKey\n : openOrdersAddressKey,\n owner: ownerAddress,\n payer,\n side,\n limitPrice: this.priceNumberToLots(price),\n maxQuantity: this.baseSizeNumberToLots(size),\n orderType,\n clientId,\n programId: this._programId,\n // @ts-ignore\n feeDiscountPubkey: this.supportsSrmFeeDiscounts\n ? feeDiscountPubkey\n : null,\n });\n }\n else {\n return this.makeNewOrderV3Instruction(params);\n }\n }\n makeNewOrderV3Instruction(params) {\n var _a;\n const { owner, payer, side, price, size, orderType = 'limit', clientId, openOrdersAddressKey, openOrdersAccount, feeDiscountPubkey = null, selfTradeBehavior = 'decrementTake', programId, maxTs, replaceIfExists, } = params;\n // @ts-ignore\n const ownerAddress = (_a = owner.publicKey) !== null && _a !== void 0 ? _a : owner;\n return instructions_1.DexInstructions.newOrderV3({\n market: this.address,\n bids: this._decoded.bids,\n asks: this._decoded.asks,\n requestQueue: this._decoded.requestQueue,\n eventQueue: this._decoded.eventQueue,\n baseVault: this._decoded.baseVault,\n quoteVault: this._decoded.quoteVault,\n openOrders: openOrdersAccount\n ? openOrdersAccount.publicKey\n : openOrdersAddressKey,\n owner: ownerAddress,\n payer,\n side,\n limitPrice: this.priceNumberToLots(price),\n maxBaseQuantity: this.baseSizeNumberToLots(size),\n maxQuoteQuantity: new bn_js_1.default(this._decoded.quoteLotSize.toNumber()).mul(this.baseSizeNumberToLots(size).mul(this.priceNumberToLots(price))),\n orderType,\n clientId,\n programId: programId !== null && programId !== void 0 ? programId : this._programId,\n selfTradeBehavior,\n // @ts-ignore\n feeDiscountPubkey: this.supportsSrmFeeDiscounts\n ? feeDiscountPubkey\n : null,\n // @ts-ignore\n maxTs,\n replaceIfExists,\n });\n }\n makeReplaceOrdersByClientIdsInstruction(accounts, orders) {\n var _a, _b;\n // @ts-ignore\n const ownerAddress = (_a = accounts.owner.publicKey) !== null && _a !== void 0 ? _a : accounts.owner;\n return instructions_1.DexInstructions.replaceOrdersByClientIds({\n market: this.address,\n bids: this._decoded.bids,\n asks: this._decoded.asks,\n requestQueue: this._decoded.requestQueue,\n eventQueue: this._decoded.eventQueue,\n baseVault: this._decoded.baseVault,\n quoteVault: this._decoded.quoteVault,\n openOrders: accounts.openOrdersAccount\n ? accounts.openOrdersAccount.publicKey\n : accounts.openOrdersAddressKey,\n owner: ownerAddress,\n payer: accounts.payer,\n programId: (_b = accounts.programId) !== null && _b !== void 0 ? _b : this._programId,\n // @ts-ignore\n feeDiscountPubkey: this.supportsSrmFeeDiscounts\n ? accounts.feeDiscountPubkey\n : null,\n orders: orders.map(order => {\n var _a;\n return ({\n side: order.side,\n limitPrice: this.priceNumberToLots(order.price),\n maxBaseQuantity: this.baseSizeNumberToLots(order.size),\n maxQuoteQuantity: new bn_js_1.default(this._decoded.quoteLotSize.toNumber()).mul(this.baseSizeNumberToLots(order.size).mul(this.priceNumberToLots(order.price))),\n orderType: order.orderType,\n clientId: order.clientId,\n programId: (_a = accounts.programId) !== null && _a !== void 0 ? _a : this._programId,\n selfTradeBehavior: order.selfTradeBehavior,\n // @ts-ignore\n maxTs: order.maxTs,\n });\n })\n });\n }\n async _sendTransaction(connection, transaction, signers) {\n const signature = await connection.sendTransaction(transaction, signers, {\n skipPreflight: this._skipPreflight,\n });\n const { value } = await connection.confirmTransaction(signature, this._commitment);\n if (value === null || value === void 0 ? void 0 : value.err) {\n throw new Error(JSON.stringify(value.err));\n }\n return signature;\n }\n async cancelOrderByClientId(connection, owner, openOrders, clientId) {\n const transaction = await this.makeCancelOrderByClientIdTransaction(connection, owner.publicKey, openOrders, clientId);\n return await this._sendTransaction(connection, transaction, [owner]);\n }\n async cancelOrdersByClientIds(connection, owner, openOrders, clientIds) {\n const transaction = await this.makeCancelOrdersByClientIdsTransaction(connection, owner.publicKey, openOrders, clientIds);\n return await this._sendTransaction(connection, transaction, [owner]);\n }\n async makeCancelOrderByClientIdTransaction(connection, owner, openOrders, clientId) {\n const transaction = new web3_js_1.Transaction();\n if (this.usesRequestQueue) {\n transaction.add(instructions_1.DexInstructions.cancelOrderByClientId({\n market: this.address,\n owner,\n openOrders,\n requestQueue: this._decoded.requestQueue,\n clientId,\n programId: this._programId,\n }));\n }\n else {\n transaction.add(instructions_1.DexInstructions.cancelOrderByClientIdV2({\n market: this.address,\n openOrders,\n owner,\n bids: this._decoded.bids,\n asks: this._decoded.asks,\n eventQueue: this._decoded.eventQueue,\n clientId,\n programId: this._programId,\n }));\n }\n return transaction;\n }\n async makeCancelOrdersByClientIdsTransaction(connection, owner, openOrders, clientIds) {\n const transaction = new web3_js_1.Transaction();\n transaction.add(instructions_1.DexInstructions.cancelOrdersByClientIds({\n market: this.address,\n openOrders,\n owner,\n bids: this._decoded.bids,\n asks: this._decoded.asks,\n eventQueue: this._decoded.eventQueue,\n clientIds,\n programId: this._programId,\n }));\n return transaction;\n }\n async cancelOrder(connection, owner, order) {\n const transaction = await this.makeCancelOrderTransaction(connection, owner.publicKey, order);\n return await this._sendTransaction(connection, transaction, [owner]);\n }\n async makeCancelOrderTransaction(connection, owner, order) {\n const transaction = new web3_js_1.Transaction();\n transaction.add(this.makeCancelOrderInstruction(connection, owner, order));\n return transaction;\n }\n makeCancelOrderInstruction(connection, owner, order) {\n if (this.usesRequestQueue) {\n return instructions_1.DexInstructions.cancelOrder({\n market: this.address,\n owner,\n openOrders: order.openOrdersAddress,\n requestQueue: this._decoded.requestQueue,\n side: order.side,\n orderId: order.orderId,\n openOrdersSlot: order.openOrdersSlot,\n programId: this._programId,\n });\n }\n else {\n return instructions_1.DexInstructions.cancelOrderV2({\n market: this.address,\n owner,\n openOrders: order.openOrdersAddress,\n bids: this._decoded.bids,\n asks: this._decoded.asks,\n eventQueue: this._decoded.eventQueue,\n side: order.side,\n orderId: order.orderId,\n openOrdersSlot: order.openOrdersSlot,\n programId: this._programId,\n });\n }\n }\n makeConsumeEventsInstruction(openOrdersAccounts, limit) {\n return instructions_1.DexInstructions.consumeEvents({\n market: this.address,\n eventQueue: this._decoded.eventQueue,\n coinFee: this._decoded.eventQueue,\n pcFee: this._decoded.eventQueue,\n openOrdersAccounts,\n limit,\n programId: this._programId,\n });\n }\n makeConsumeEventsPermissionedInstruction(openOrdersAccounts, limit) {\n return instructions_1.DexInstructions.consumeEventsPermissioned({\n market: this.address,\n eventQueue: this._decoded.eventQueue,\n crankAuthority: this._decoded.consumeEventsAuthority,\n openOrdersAccounts,\n limit,\n programId: this._programId,\n });\n }\n async settleFunds(connection, owner, openOrders, baseWallet, quoteWallet, referrerQuoteWallet = null) {\n if (!openOrders.owner.equals(owner.publicKey)) {\n throw new Error('Invalid open orders account');\n }\n if (referrerQuoteWallet && !this.supportsReferralFees) {\n throw new Error('This program ID does not support referrerQuoteWallet');\n }\n const { transaction, signers } = await this.makeSettleFundsTransaction(connection, openOrders, baseWallet, quoteWallet, referrerQuoteWallet);\n return await this._sendTransaction(connection, transaction, [\n owner,\n ...signers,\n ]);\n }\n async makeSettleFundsTransaction(connection, openOrders, baseWallet, quoteWallet, referrerQuoteWallet = null) {\n // @ts-ignore\n const vaultSigner = await web3_js_1.PublicKey.createProgramAddress([\n this.address.toBuffer(),\n this._decoded.vaultSignerNonce.toArrayLike(buffer_1.Buffer, 'le', 8),\n ], this._programId);\n const transaction = new web3_js_1.Transaction();\n const signers = [];\n let wrappedSolAccount = null;\n if ((this.baseMintAddress.equals(token_instructions_1.WRAPPED_SOL_MINT) &&\n baseWallet.equals(openOrders.owner)) ||\n (this.quoteMintAddress.equals(token_instructions_1.WRAPPED_SOL_MINT) &&\n quoteWallet.equals(openOrders.owner))) {\n wrappedSolAccount = new web3_js_1.Account();\n transaction.add(web3_js_1.SystemProgram.createAccount({\n fromPubkey: openOrders.owner,\n newAccountPubkey: wrappedSolAccount.publicKey,\n lamports: await connection.getMinimumBalanceForRentExemption(165),\n space: 165,\n programId: token_instructions_1.TOKEN_PROGRAM_ID,\n }));\n transaction.add(token_instructions_1.initializeAccount({\n account: wrappedSolAccount.publicKey,\n mint: token_instructions_1.WRAPPED_SOL_MINT,\n owner: openOrders.owner,\n }));\n signers.push(wrappedSolAccount);\n }\n transaction.add(instructions_1.DexInstructions.settleFunds({\n market: this.address,\n openOrders: openOrders.address,\n owner: openOrders.owner,\n baseVault: this._decoded.baseVault,\n quoteVault: this._decoded.quoteVault,\n baseWallet: baseWallet.equals(openOrders.owner) && wrappedSolAccount\n ? wrappedSolAccount.publicKey\n : baseWallet,\n quoteWallet: quoteWallet.equals(openOrders.owner) && wrappedSolAccount\n ? wrappedSolAccount.publicKey\n : quoteWallet,\n vaultSigner,\n programId: this._programId,\n referrerQuoteWallet,\n }));\n if (wrappedSolAccount) {\n transaction.add(token_instructions_1.closeAccount({\n source: wrappedSolAccount.publicKey,\n destination: openOrders.owner,\n owner: openOrders.owner,\n }));\n }\n return { transaction, signers, payer: openOrders.owner };\n }\n async matchOrders(connection, feePayer, limit) {\n const tx = this.makeMatchOrdersTransaction(limit);\n return await this._sendTransaction(connection, tx, [feePayer]);\n }\n makeMatchOrdersTransaction(limit) {\n const tx = new web3_js_1.Transaction();\n tx.add(instructions_1.DexInstructions.matchOrders({\n market: this.address,\n requestQueue: this._decoded.requestQueue,\n eventQueue: this._decoded.eventQueue,\n bids: this._decoded.bids,\n asks: this._decoded.asks,\n baseVault: this._decoded.baseVault,\n quoteVault: this._decoded.quoteVault,\n limit,\n programId: this._programId,\n }));\n return tx;\n }\n async loadRequestQueue(connection) {\n const { data } = throwIfNull(await connection.getAccountInfo(this._decoded.requestQueue));\n return queue_1.decodeRequestQueue(data);\n }\n async loadEventQueue(connection) {\n const { data } = throwIfNull(await connection.getAccountInfo(this._decoded.eventQueue));\n return queue_1.decodeEventQueue(data);\n }\n async loadFills(connection, limit = 100) {\n // TODO: once there's a separate source of fills use that instead\n const { data } = throwIfNull(await connection.getAccountInfo(this._decoded.eventQueue));\n const events = queue_1.decodeEventQueue(data, limit);\n return events\n .filter((event) => event.eventFlags.fill && event.nativeQuantityPaid.gtn(0))\n .map(this.parseFillEvent.bind(this));\n }\n parseFillEvent(event) {\n let size, price, side, priceBeforeFees;\n if (event.eventFlags.bid) {\n side = 'buy';\n priceBeforeFees = event.eventFlags.maker\n ? event.nativeQuantityPaid.add(event.nativeFeeOrRebate)\n : event.nativeQuantityPaid.sub(event.nativeFeeOrRebate);\n price = divideBnToNumber(priceBeforeFees.mul(this._baseSplTokenMultiplier), this._quoteSplTokenMultiplier.mul(event.nativeQuantityReleased));\n size = divideBnToNumber(event.nativeQuantityReleased, this._baseSplTokenMultiplier);\n }\n else {\n side = 'sell';\n priceBeforeFees = event.eventFlags.maker\n ? event.nativeQuantityReleased.sub(event.nativeFeeOrRebate)\n : event.nativeQuantityReleased.add(event.nativeFeeOrRebate);\n price = divideBnToNumber(priceBeforeFees.mul(this._baseSplTokenMultiplier), this._quoteSplTokenMultiplier.mul(event.nativeQuantityPaid));\n size = divideBnToNumber(event.nativeQuantityPaid, this._baseSplTokenMultiplier);\n }\n return {\n ...event,\n side,\n price,\n feeCost: this.quoteSplSizeToNumber(event.nativeFeeOrRebate) *\n (event.eventFlags.maker ? -1 : 1),\n size,\n };\n }\n get _baseSplTokenMultiplier() {\n return new bn_js_1.default(10).pow(new bn_js_1.default(this._baseSplTokenDecimals));\n }\n get _quoteSplTokenMultiplier() {\n return new bn_js_1.default(10).pow(new bn_js_1.default(this._quoteSplTokenDecimals));\n }\n priceLotsToNumber(price) {\n return divideBnToNumber(price.mul(this._decoded.quoteLotSize).mul(this._baseSplTokenMultiplier), this._decoded.baseLotSize.mul(this._quoteSplTokenMultiplier));\n }\n priceNumberToLots(price) {\n return new bn_js_1.default(Math.round((price *\n Math.pow(10, this._quoteSplTokenDecimals) *\n this._decoded.baseLotSize.toNumber()) /\n (Math.pow(10, this._baseSplTokenDecimals) *\n this._decoded.quoteLotSize.toNumber())));\n }\n baseSplSizeToNumber(size) {\n return divideBnToNumber(size, this._baseSplTokenMultiplier);\n }\n quoteSplSizeToNumber(size) {\n return divideBnToNumber(size, this._quoteSplTokenMultiplier);\n }\n baseSizeLotsToNumber(size) {\n return divideBnToNumber(size.mul(this._decoded.baseLotSize), this._baseSplTokenMultiplier);\n }\n baseSizeNumberToLots(size) {\n const native = new bn_js_1.default(Math.round(size * Math.pow(10, this._baseSplTokenDecimals)));\n // rounds down to the nearest lot size\n return native.div(this._decoded.baseLotSize);\n }\n quoteSizeLotsToNumber(size) {\n return divideBnToNumber(size.mul(this._decoded.quoteLotSize), this._quoteSplTokenMultiplier);\n }\n quoteSizeNumberToLots(size) {\n const native = new bn_js_1.default(Math.round(size * Math.pow(10, this._quoteSplTokenDecimals)));\n // rounds down to the nearest lot size\n return native.div(this._decoded.quoteLotSize);\n }\n get minOrderSize() {\n return this.baseSizeLotsToNumber(new bn_js_1.default(1));\n }\n get tickSize() {\n return this.priceLotsToNumber(new bn_js_1.default(1));\n }\n}\nexports.Market = Market;\nexports._OPEN_ORDERS_LAYOUT_V1 = buffer_layout_1.struct([\n buffer_layout_1.blob(5),\n layout_1.accountFlagsLayout('accountFlags'),\n layout_1.publicKeyLayout('market'),\n layout_1.publicKeyLayout('owner'),\n // These are in spl-token (i.e. not lot) units\n layout_1.u64('baseTokenFree'),\n layout_1.u64('baseTokenTotal'),\n layout_1.u64('quoteTokenFree'),\n layout_1.u64('quoteTokenTotal'),\n layout_1.u128('freeSlotBits'),\n layout_1.u128('isBidBits'),\n buffer_layout_1.seq(layout_1.u128(), 128, 'orders'),\n buffer_layout_1.seq(layout_1.u64(), 128, 'clientIds'),\n buffer_layout_1.blob(7),\n]);\nexports._OPEN_ORDERS_LAYOUT_V2 = buffer_layout_1.struct([\n buffer_layout_1.blob(5),\n layout_1.accountFlagsLayout('accountFlags'),\n layout_1.publicKeyLayout('market'),\n layout_1.publicKeyLayout('owner'),\n // These are in spl-token (i.e. not lot) units\n layout_1.u64('baseTokenFree'),\n layout_1.u64('baseTokenTotal'),\n layout_1.u64('quoteTokenFree'),\n layout_1.u64('quoteTokenTotal'),\n layout_1.u128('freeSlotBits'),\n layout_1.u128('isBidBits'),\n buffer_layout_1.seq(layout_1.u128(), 128, 'orders'),\n buffer_layout_1.seq(layout_1.u64(), 128, 'clientIds'),\n layout_1.u64('referrerRebatesAccrued'),\n buffer_layout_1.blob(7),\n]);\nclass OpenOrders {\n constructor(address, decoded, programId) {\n this.address = address;\n this._programId = programId;\n Object.assign(this, decoded);\n }\n static getLayout(programId) {\n if (tokens_and_markets_1.getLayoutVersion(programId) === 1) {\n return exports._OPEN_ORDERS_LAYOUT_V1;\n }\n return exports._OPEN_ORDERS_LAYOUT_V2;\n }\n static async findForOwner(connection, ownerAddress, programId) {\n const filters = [\n {\n memcmp: {\n offset: this.getLayout(programId).offsetOf('owner'),\n bytes: ownerAddress.toBase58(),\n },\n },\n {\n dataSize: this.getLayout(programId).span,\n },\n ];\n const accounts = await getFilteredProgramAccounts(connection, programId, filters);\n return accounts.map(({ publicKey, accountInfo }) => OpenOrders.fromAccountInfo(publicKey, accountInfo, programId));\n }\n static async findForMarketAndOwner(connection, marketAddress, ownerAddress, programId) {\n const filters = [\n {\n memcmp: {\n offset: this.getLayout(programId).offsetOf('market'),\n bytes: marketAddress.toBase58(),\n },\n },\n {\n memcmp: {\n offset: this.getLayout(programId).offsetOf('owner'),\n bytes: ownerAddress.toBase58(),\n },\n },\n {\n dataSize: this.getLayout(programId).span,\n },\n ];\n const accounts = await getFilteredProgramAccounts(connection, programId, filters);\n return accounts.map(({ publicKey, accountInfo }) => OpenOrders.fromAccountInfo(publicKey, accountInfo, programId));\n }\n static async load(connection, address, programId) {\n const accountInfo = await connection.getAccountInfo(address);\n if (accountInfo === null) {\n throw new Error('Open orders account not found');\n }\n return OpenOrders.fromAccountInfo(address, accountInfo, programId);\n }\n static fromAccountInfo(address, accountInfo, programId) {\n const { owner, data } = accountInfo;\n if (!owner.equals(programId)) {\n throw new Error('Address not owned by program');\n }\n const decoded = this.getLayout(programId).decode(data);\n if (!decoded.accountFlags.initialized || !decoded.accountFlags.openOrders) {\n throw new Error('Invalid open orders account');\n }\n return new OpenOrders(address, decoded, programId);\n }\n static async makeCreateAccountTransaction(connection, marketAddress, ownerAddress, newAccountAddress, programId) {\n return web3_js_1.SystemProgram.createAccount({\n fromPubkey: ownerAddress,\n newAccountPubkey: newAccountAddress,\n lamports: await connection.getMinimumBalanceForRentExemption(this.getLayout(programId).span),\n space: this.getLayout(programId).span,\n programId,\n });\n }\n get publicKey() {\n return this.address;\n }\n}\nexports.OpenOrders = OpenOrders;\nexports.ORDERBOOK_LAYOUT = buffer_layout_1.struct([\n buffer_layout_1.blob(5),\n layout_1.accountFlagsLayout('accountFlags'),\n slab_1.SLAB_LAYOUT.replicate('slab'),\n buffer_layout_1.blob(7),\n]);\nclass Orderbook {\n constructor(market, accountFlags, slab) {\n if (!accountFlags.initialized || !(accountFlags.bids ^ accountFlags.asks)) {\n throw new Error('Invalid orderbook');\n }\n this.market = market;\n this.isBids = accountFlags.bids;\n this.slab = slab;\n }\n static get LAYOUT() {\n return exports.ORDERBOOK_LAYOUT;\n }\n static decode(market, buffer) {\n const { accountFlags, slab } = exports.ORDERBOOK_LAYOUT.decode(buffer);\n return new Orderbook(market, accountFlags, slab);\n }\n getL2(depth) {\n const descending = this.isBids;\n const levels = []; // (price, size)\n for (const { key, quantity } of this.slab.items(descending)) {\n const price = getPriceFromKey(key);\n if (levels.length > 0 && levels[levels.length - 1][0].eq(price)) {\n levels[levels.length - 1][1] = levels[levels.length - 1][1].add(quantity);\n }\n else if (levels.length === depth) {\n break;\n }\n else {\n levels.push([price, quantity]);\n }\n }\n return levels.map(([priceLots, sizeLots]) => [\n this.market.priceLotsToNumber(priceLots),\n this.market.baseSizeLotsToNumber(sizeLots),\n priceLots,\n sizeLots,\n ]);\n }\n [Symbol.iterator]() {\n return this.items(false);\n }\n *items(descending = false) {\n for (const { key, ownerSlot, owner, quantity, feeTier, clientOrderId, } of this.slab.items(descending)) {\n const price = getPriceFromKey(key);\n yield {\n orderId: key,\n clientId: clientOrderId,\n openOrdersAddress: owner,\n openOrdersSlot: ownerSlot,\n feeTier,\n price: this.market.priceLotsToNumber(price),\n priceLots: price,\n size: this.market.baseSizeLotsToNumber(quantity),\n sizeLots: quantity,\n side: (this.isBids ? 'buy' : 'sell'),\n };\n }\n }\n}\nexports.Orderbook = Orderbook;\nfunction getPriceFromKey(key) {\n return key.ushrn(64);\n}\nfunction divideBnToNumber(numerator, denominator) {\n const quotient = numerator.div(denominator).toNumber();\n const rem = numerator.umod(denominator);\n const gcd = rem.gcd(denominator);\n return quotient + rem.div(gcd).toNumber() / denominator.div(gcd).toNumber();\n}\nconst MINT_LAYOUT = buffer_layout_1.struct([buffer_layout_1.blob(44), buffer_layout_1.u8('decimals'), buffer_layout_1.blob(37)]);\nasync function getMintDecimals(connection, mint) {\n if (mint.equals(token_instructions_1.WRAPPED_SOL_MINT)) {\n return 9;\n }\n const { data } = throwIfNull(await connection.getAccountInfo(mint), 'mint not found');\n const { decimals } = MINT_LAYOUT.decode(data);\n return decimals;\n}\nexports.getMintDecimals = getMintDecimals;\nasync function getFilteredProgramAccounts(connection, programId, filters) {\n // @ts-ignore\n const resp = await connection._rpcRequest('getProgramAccounts', [\n programId.toBase58(),\n {\n commitment: connection.commitment,\n filters,\n encoding: 'base64',\n },\n ]);\n if (resp.error) {\n throw new Error(resp.error.message);\n }\n return resp.result.map(({ pubkey, account: { data, executable, owner, lamports } }) => ({\n publicKey: new web3_js_1.PublicKey(pubkey),\n accountInfo: {\n data: buffer_1.Buffer.from(data[0], 'base64'),\n executable,\n owner: new web3_js_1.PublicKey(owner),\n lamports,\n },\n }));\n}\nfunction throwIfNull(value, message = 'account not found') {\n if (value === null) {\n throw new Error(message);\n }\n return value;\n}\n//# sourceMappingURL=market.js.map","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.EVENT_QUEUE_LAYOUT = exports.REQUEST_QUEUE_LAYOUT = exports.decodeEventQueue = exports.decodeRequestQueue = exports.decodeEventsSince = void 0;\nconst buffer_layout_1 = require(\"buffer-layout\");\nconst layout_1 = require(\"./layout\");\nconst REQUEST_QUEUE_HEADER = buffer_layout_1.struct([\n buffer_layout_1.blob(5),\n layout_1.accountFlagsLayout('accountFlags'),\n buffer_layout_1.u32('head'),\n layout_1.zeros(4),\n buffer_layout_1.u32('count'),\n layout_1.zeros(4),\n buffer_layout_1.u32('nextSeqNum'),\n layout_1.zeros(4),\n]);\nconst REQUEST_FLAGS = buffer_layout_1.bits(buffer_layout_1.u8(), false, 'requestFlags');\nREQUEST_FLAGS.addBoolean('newOrder');\nREQUEST_FLAGS.addBoolean('cancelOrder');\nREQUEST_FLAGS.addBoolean('bid');\nREQUEST_FLAGS.addBoolean('postOnly');\nREQUEST_FLAGS.addBoolean('ioc');\nconst REQUEST = buffer_layout_1.struct([\n REQUEST_FLAGS,\n buffer_layout_1.u8('openOrdersSlot'),\n buffer_layout_1.u8('feeTier'),\n buffer_layout_1.blob(5),\n layout_1.u64('maxBaseSizeOrCancelId'),\n layout_1.u64('nativeQuoteQuantityLocked'),\n layout_1.u128('orderId'),\n layout_1.publicKeyLayout('openOrders'),\n layout_1.u64('clientOrderId'),\n]);\nconst EVENT_QUEUE_HEADER = buffer_layout_1.struct([\n buffer_layout_1.blob(5),\n layout_1.accountFlagsLayout('accountFlags'),\n buffer_layout_1.u32('head'),\n layout_1.zeros(4),\n buffer_layout_1.u32('count'),\n layout_1.zeros(4),\n buffer_layout_1.u32('seqNum'),\n layout_1.zeros(4),\n]);\nconst EVENT_FLAGS = buffer_layout_1.bits(buffer_layout_1.u8(), false, 'eventFlags');\nEVENT_FLAGS.addBoolean('fill');\nEVENT_FLAGS.addBoolean('out');\nEVENT_FLAGS.addBoolean('bid');\nEVENT_FLAGS.addBoolean('maker');\nconst EVENT = buffer_layout_1.struct([\n EVENT_FLAGS,\n buffer_layout_1.u8('openOrdersSlot'),\n buffer_layout_1.u8('feeTier'),\n buffer_layout_1.blob(5),\n layout_1.u64('nativeQuantityReleased'),\n layout_1.u64('nativeQuantityPaid'),\n layout_1.u64('nativeFeeOrRebate'),\n layout_1.u128('orderId'),\n layout_1.publicKeyLayout('openOrders'),\n layout_1.u64('clientOrderId'),\n]);\nfunction decodeQueueItem(headerLayout, nodeLayout, buffer, nodeIndex) {\n return nodeLayout.decode(buffer, headerLayout.span + nodeIndex * nodeLayout.span);\n}\nfunction decodeQueue(headerLayout, nodeLayout, buffer, history) {\n const header = headerLayout.decode(buffer);\n const allocLen = Math.floor((buffer.length - headerLayout.span) / nodeLayout.span);\n const nodes = [];\n if (history) {\n for (let i = 0; i < Math.min(history, allocLen); ++i) {\n const nodeIndex = (header.head + header.count + allocLen - 1 - i) % allocLen;\n nodes.push(decodeQueueItem(headerLayout, nodeLayout, buffer, nodeIndex));\n }\n }\n else {\n for (let i = 0; i < header.count; ++i) {\n const nodeIndex = (header.head + i) % allocLen;\n nodes.push(decodeQueueItem(headerLayout, nodeLayout, buffer, nodeIndex));\n }\n }\n return { header, nodes };\n}\nfunction decodeEventsSince(buffer, lastSeqNum) {\n const header = EVENT_QUEUE_HEADER.decode(buffer);\n const allocLen = Math.floor((buffer.length - EVENT_QUEUE_HEADER.span) / EVENT.span);\n // calculate number of missed events\n // account for u32 & ringbuffer overflows\n const modulo32Uint = 0x100000000;\n let missedEvents = (header.seqNum - lastSeqNum + modulo32Uint) % modulo32Uint;\n if (missedEvents > allocLen) {\n missedEvents = allocLen - 1;\n }\n const startSeq = (header.seqNum - missedEvents + modulo32Uint) % modulo32Uint;\n // define boundary indexes in ring buffer [start;end)\n const endIndex = (header.head + header.count) % allocLen;\n const startIndex = (endIndex - missedEvents + allocLen) % allocLen;\n const results = [];\n for (let i = 0; i < missedEvents; ++i) {\n const nodeIndex = (startIndex + i) % allocLen;\n const event = decodeQueueItem(EVENT_QUEUE_HEADER, EVENT, buffer, nodeIndex);\n event.seqNum = (startSeq + i) % modulo32Uint;\n results.push(event);\n }\n return results;\n}\nexports.decodeEventsSince = decodeEventsSince;\nfunction decodeRequestQueue(buffer, history) {\n const { header, nodes } = decodeQueue(REQUEST_QUEUE_HEADER, REQUEST, buffer, history);\n if (!header.accountFlags.initialized || !header.accountFlags.requestQueue) {\n throw new Error('Invalid requests queue');\n }\n return nodes;\n}\nexports.decodeRequestQueue = decodeRequestQueue;\nfunction decodeEventQueue(buffer, history) {\n const { header, nodes } = decodeQueue(EVENT_QUEUE_HEADER, EVENT, buffer, history);\n if (!header.accountFlags.initialized || !header.accountFlags.eventQueue) {\n throw new Error('Invalid events queue');\n }\n return nodes;\n}\nexports.decodeEventQueue = decodeEventQueue;\nexports.REQUEST_QUEUE_LAYOUT = {\n HEADER: REQUEST_QUEUE_HEADER,\n NODE: REQUEST,\n};\nexports.EVENT_QUEUE_LAYOUT = {\n HEADER: EVENT_QUEUE_HEADER,\n NODE: EVENT,\n};\n//# sourceMappingURL=queue.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.Slab = exports.SLAB_LAYOUT = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst buffer_layout_1 = require(\"buffer-layout\");\nconst layout_1 = require(\"./layout\");\nconst SLAB_HEADER_LAYOUT = buffer_layout_1.struct([\n // Number of modified slab nodes\n buffer_layout_1.u32('bumpIndex'),\n layout_1.zeros(4),\n // Linked list of unused nodes\n buffer_layout_1.u32('freeListLen'),\n layout_1.zeros(4),\n buffer_layout_1.u32('freeListHead'),\n buffer_layout_1.u32('root'),\n buffer_layout_1.u32('leafCount'),\n layout_1.zeros(4),\n], 'header');\nconst SLAB_NODE_LAYOUT = buffer_layout_1.union(buffer_layout_1.u32('tag'), buffer_layout_1.blob(68), 'node');\nSLAB_NODE_LAYOUT.addVariant(0, buffer_layout_1.struct([]), 'uninitialized');\nSLAB_NODE_LAYOUT.addVariant(1, buffer_layout_1.struct([\n // Only the first prefixLen high-order bits of key are meaningful\n buffer_layout_1.u32('prefixLen'),\n layout_1.u128('key'),\n buffer_layout_1.seq(buffer_layout_1.u32(), 2, 'children'),\n]), 'innerNode');\nSLAB_NODE_LAYOUT.addVariant(2, buffer_layout_1.struct([\n buffer_layout_1.u8('ownerSlot'),\n buffer_layout_1.u8('feeTier'),\n buffer_layout_1.blob(2),\n layout_1.u128('key'),\n layout_1.publicKeyLayout('owner'),\n layout_1.u64('quantity'),\n layout_1.u64('clientOrderId'),\n]), 'leafNode');\nSLAB_NODE_LAYOUT.addVariant(3, buffer_layout_1.struct([buffer_layout_1.u32('next')]), 'freeNode');\nSLAB_NODE_LAYOUT.addVariant(4, buffer_layout_1.struct([]), 'lastFreeNode');\nexports.SLAB_LAYOUT = buffer_layout_1.struct([\n SLAB_HEADER_LAYOUT,\n buffer_layout_1.seq(SLAB_NODE_LAYOUT, buffer_layout_1.offset(SLAB_HEADER_LAYOUT.layoutFor('bumpIndex'), SLAB_HEADER_LAYOUT.offsetOf('bumpIndex') - SLAB_HEADER_LAYOUT.span), 'nodes'),\n]);\nclass Slab {\n constructor(header, nodes) {\n this.header = header;\n this.nodes = nodes;\n }\n static decode(buffer) {\n return exports.SLAB_LAYOUT.decode(buffer);\n }\n get(searchKey) {\n if (this.header.leafCount === 0) {\n return null;\n }\n if (!(searchKey instanceof bn_js_1.default)) {\n searchKey = new bn_js_1.default(searchKey);\n }\n let index = this.header.root;\n while (true) {\n const { leafNode, innerNode } = this.nodes[index];\n if (leafNode) {\n if (leafNode.key.eq(searchKey)) {\n return leafNode;\n }\n return null;\n }\n else if (innerNode) {\n if (!innerNode.key\n .xor(searchKey)\n .iushrn(128 - innerNode.prefixLen)\n .isZero()) {\n return null;\n }\n index =\n innerNode.children[searchKey.testn(128 - innerNode.prefixLen - 1) ? 1 : 0];\n }\n else {\n throw new Error('Invalid slab');\n }\n }\n }\n [Symbol.iterator]() {\n return this.items(false);\n }\n *items(descending = false) {\n if (this.header.leafCount === 0) {\n return;\n }\n const stack = [this.header.root];\n while (stack.length > 0) {\n const index = stack.pop();\n const { leafNode, innerNode } = this.nodes[index];\n if (leafNode) {\n yield leafNode;\n }\n else if (innerNode) {\n if (descending) {\n stack.push(innerNode.children[0], innerNode.children[1]);\n }\n else {\n stack.push(innerNode.children[1], innerNode.children[0]);\n }\n }\n }\n }\n}\nexports.Slab = Slab;\nlayout_1.setLayoutDecoder(exports.SLAB_LAYOUT, ({ header, nodes }) => new Slab(header, nodes));\n//# sourceMappingURL=slab.js.map","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.closeAccount = exports.mintTo = exports.setAuthority = exports.revoke = exports.approve = exports.transfer = exports.initializeAccount = exports.initializeMint = exports.decodeTokenInstructionData = exports.SRM_DECIMALS = exports.SRM_MINT = exports.MSRM_DECIMALS = exports.MSRM_MINT = exports.WRAPPED_SOL_MINT = exports.TOKEN_PROGRAM_ID = exports.CLOSE_ACCOUNT_OWNER_INDEX = exports.CLOSE_ACCOUNT_DESTINATION_INDEX = exports.CLOSE_ACCOUNT_SOURCE_INDEX = exports.TRANSFER_OWNER_INDEX = exports.TRANSFER_DESTINATION_INDEX = exports.TRANSFER_SOURCE_INDEX = exports.INITIALIZE_ACCOUNT_OWNER_INDEX = exports.INITIALIZE_ACCOUNT_MINT_INDEX = exports.INITIALIZE_ACCOUNT_ACCOUNT_INDEX = void 0;\nconst BufferLayout = __importStar(require(\"buffer-layout\"));\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst layout_1 = require(\"./layout\");\n// NOTE: Update these if the position of arguments for the initializeAccount instruction changes\nexports.INITIALIZE_ACCOUNT_ACCOUNT_INDEX = 0;\nexports.INITIALIZE_ACCOUNT_MINT_INDEX = 1;\nexports.INITIALIZE_ACCOUNT_OWNER_INDEX = 2;\n// NOTE: Update these if the position of arguments for the transfer instruction changes\nexports.TRANSFER_SOURCE_INDEX = 0;\nexports.TRANSFER_DESTINATION_INDEX = 1;\nexports.TRANSFER_OWNER_INDEX = 2;\n// NOTE: Update these if the position of arguments for the closeAccount instruction changes\nexports.CLOSE_ACCOUNT_SOURCE_INDEX = 0;\nexports.CLOSE_ACCOUNT_DESTINATION_INDEX = 1;\nexports.CLOSE_ACCOUNT_OWNER_INDEX = 2;\nexports.TOKEN_PROGRAM_ID = new web3_js_1.PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA');\nexports.WRAPPED_SOL_MINT = new web3_js_1.PublicKey('So11111111111111111111111111111111111111112');\nexports.MSRM_MINT = new web3_js_1.PublicKey('MSRMcoVyrFxnSgo5uXwone5SKcGhT1KEJMFEkMEWf9L');\nexports.MSRM_DECIMALS = 0;\nexports.SRM_MINT = new web3_js_1.PublicKey('SRMuApVNdxXokk5GT7XD5cUUgXMBCoAz2LHeuAoKWRt');\nexports.SRM_DECIMALS = 6;\nconst LAYOUT = BufferLayout.union(BufferLayout.u8('instruction'));\nLAYOUT.addVariant(0, BufferLayout.struct([\n BufferLayout.u8('decimals'),\n layout_1.publicKeyLayout('mintAuthority'),\n BufferLayout.u8('freezeAuthorityOption'),\n layout_1.publicKeyLayout('freezeAuthority'),\n]), 'initializeMint');\nLAYOUT.addVariant(1, BufferLayout.struct([]), 'initializeAccount');\nLAYOUT.addVariant(3, BufferLayout.struct([BufferLayout.nu64('amount')]), 'transfer');\nLAYOUT.addVariant(4, BufferLayout.struct([BufferLayout.nu64('amount')]), 'approve');\nLAYOUT.addVariant(5, BufferLayout.struct([]), 'revoke');\nLAYOUT.addVariant(6, BufferLayout.struct([\n BufferLayout.u8('authorityType'),\n BufferLayout.u8('newAuthorityOption'),\n layout_1.publicKeyLayout('newAuthority'),\n]), 'setAuthority');\nLAYOUT.addVariant(7, BufferLayout.struct([BufferLayout.nu64('amount')]), 'mintTo');\nLAYOUT.addVariant(8, BufferLayout.struct([BufferLayout.nu64('amount')]), 'burn');\nLAYOUT.addVariant(9, BufferLayout.struct([]), 'closeAccount');\nconst instructionMaxSpan = Math.max(...Object.values(LAYOUT.registry).map((r) => r.span));\nfunction encodeTokenInstructionData(instruction) {\n const b = Buffer.alloc(instructionMaxSpan);\n const span = LAYOUT.encode(instruction, b);\n return b.slice(0, span);\n}\nfunction decodeTokenInstructionData(instruction) {\n return LAYOUT.decode(instruction);\n}\nexports.decodeTokenInstructionData = decodeTokenInstructionData;\nfunction initializeMint({ mint, decimals, mintAuthority, freezeAuthority = null, }) {\n const keys = [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: web3_js_1.SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n initializeMint: {\n decimals,\n mintAuthority,\n freezeAuthorityOption: !!freezeAuthority,\n freezeAuthority: freezeAuthority || new web3_js_1.PublicKey(0),\n },\n }),\n programId: exports.TOKEN_PROGRAM_ID,\n });\n}\nexports.initializeMint = initializeMint;\nfunction initializeAccount({ account, mint, owner }) {\n const keys = [\n { pubkey: account, isSigner: false, isWritable: true },\n { pubkey: mint, isSigner: false, isWritable: false },\n { pubkey: owner, isSigner: false, isWritable: false },\n { pubkey: web3_js_1.SYSVAR_RENT_PUBKEY, isSigner: false, isWritable: false },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n initializeAccount: {},\n }),\n programId: exports.TOKEN_PROGRAM_ID,\n });\n}\nexports.initializeAccount = initializeAccount;\nfunction transfer({ source, destination, amount, owner }) {\n const keys = [\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n transfer: { amount },\n }),\n programId: exports.TOKEN_PROGRAM_ID,\n });\n}\nexports.transfer = transfer;\nfunction approve({ source, delegate, amount, owner }) {\n const keys = [\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: delegate, isSigner: false, isWritable: false },\n { pubkey: owner, isSigner: true, isWritable: false },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n approve: { amount },\n }),\n programId: exports.TOKEN_PROGRAM_ID,\n });\n}\nexports.approve = approve;\nfunction revoke({ source, owner }) {\n const keys = [\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n revoke: {},\n }),\n programId: exports.TOKEN_PROGRAM_ID,\n });\n}\nexports.revoke = revoke;\nfunction setAuthority({ target, currentAuthority, newAuthority, authorityType, }) {\n const keys = [\n { pubkey: target, isSigner: false, isWritable: true },\n { pubkey: currentAuthority, isSigner: true, isWritable: false },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n setAuthority: {\n authorityType,\n newAuthorityOption: !!newAuthority,\n newAuthority,\n },\n }),\n programId: exports.TOKEN_PROGRAM_ID,\n });\n}\nexports.setAuthority = setAuthority;\nfunction mintTo({ mint, destination, amount, mintAuthority }) {\n const keys = [\n { pubkey: mint, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n { pubkey: mintAuthority, isSigner: true, isWritable: false },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n mintTo: { amount },\n }),\n programId: exports.TOKEN_PROGRAM_ID,\n });\n}\nexports.mintTo = mintTo;\nfunction closeAccount({ source, destination, owner }) {\n const keys = [\n { pubkey: source, isSigner: false, isWritable: true },\n { pubkey: destination, isSigner: false, isWritable: true },\n { pubkey: owner, isSigner: true, isWritable: false },\n ];\n return new web3_js_1.TransactionInstruction({\n keys,\n data: encodeTokenInstructionData({\n closeAccount: {},\n }),\n programId: exports.TOKEN_PROGRAM_ID,\n });\n}\nexports.closeAccount = closeAccount;\n//# sourceMappingURL=token-instructions.js.map","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.MARKETS = exports.TOKEN_MINTS = exports.getLayoutVersion = exports.PROGRAM_LAYOUT_VERSIONS = void 0;\nconst web3_js_1 = require(\"@solana/web3.js\");\nconst markets_json_1 = __importDefault(require(\"./markets.json\"));\nconst token_mints_json_1 = __importDefault(require(\"./token-mints.json\"));\nexports.PROGRAM_LAYOUT_VERSIONS = {\n '4ckmDgGdxQoPDLUkDT3vHgSAkzA3QRdNq5ywwY4sUSJn': 1,\n BJ3jrUzddfuSrZHXSCxMUUQsjKEyLmuuyZebkcaFp2fg: 1,\n EUqojwWA2rd19FZrzeBncJsm38Jm1hEhE3zsmX3bRc2o: 2,\n '9xQeWvG816bUx9EPjHmaT23yvVM2ZWbrrpZb9PusVFin': 3,\n};\nfunction getLayoutVersion(programId) {\n return exports.PROGRAM_LAYOUT_VERSIONS[programId.toString()] || 3;\n}\nexports.getLayoutVersion = getLayoutVersion;\nexports.TOKEN_MINTS = token_mints_json_1.default.map((mint) => {\n return {\n address: new web3_js_1.PublicKey(mint.address),\n name: mint.name,\n };\n});\nexports.MARKETS = markets_json_1.default.map((market) => {\n return {\n address: new web3_js_1.PublicKey(market.address),\n name: market.name,\n programId: new web3_js_1.PublicKey(market.programId),\n deprecated: market.deprecated,\n };\n});\n//# sourceMappingURL=tokens_and_markets.js.map","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PythConnection = void 0;\nvar index_1 = require(\"./index\");\nvar ONES = '11111111111111111111111111111111';\n/**\n * Reads Pyth price data from a solana web3 connection. This class uses a callback-driven model,\n * similar to the solana web3 methods for tracking updates to accounts.\n */\nvar PythConnection = /** @class */ (function () {\n /** Create a PythConnection that reads its data from an underlying solana web3 connection.\n * pythProgramKey is the public key of the Pyth program running on the chosen solana cluster.\n */\n function PythConnection(connection, pythProgramKey, commitment) {\n if (commitment === void 0) { commitment = 'finalized'; }\n this.productAccountKeyToProduct = {};\n this.priceAccountKeyToProductAccountKey = {};\n this.callbacks = [];\n this.connection = connection;\n this.pythProgramKey = pythProgramKey;\n this.commitment = commitment;\n }\n PythConnection.prototype.handleProductAccount = function (key, account) {\n var _a = index_1.parseProductData(account.data), priceAccountKey = _a.priceAccountKey, type = _a.type, product = _a.product;\n this.productAccountKeyToProduct[key.toString()] = product;\n if (priceAccountKey.toString() !== ONES) {\n this.priceAccountKeyToProductAccountKey[priceAccountKey.toString()] = key.toString();\n }\n };\n PythConnection.prototype.handlePriceAccount = function (key, account) {\n var product = this.productAccountKeyToProduct[this.priceAccountKeyToProductAccountKey[key.toString()]];\n if (product === undefined) {\n // This shouldn't happen since we're subscribed to all of the program's accounts,\n // but let's be good defensive programmers.\n throw new Error('Got a price update for an unknown product. This is a bug in the library, please report it to the developers.');\n }\n var priceData = index_1.parsePriceData(account.data);\n for (var _i = 0, _a = this.callbacks; _i < _a.length; _i++) {\n var callback = _a[_i];\n callback(product, priceData);\n }\n };\n PythConnection.prototype.handleAccount = function (key, account, productOnly) {\n var base = index_1.parseBaseData(account.data);\n // The pyth program owns accounts that don't contain pyth data, which we can safely ignore.\n if (base) {\n switch (index_1.AccountType[base.type]) {\n case 'Mapping':\n // We can skip these because we're going to get every account owned by this program anyway.\n break;\n case 'Product':\n this.handleProductAccount(key, account);\n break;\n case 'Price':\n if (!productOnly) {\n this.handlePriceAccount(key, account);\n }\n break;\n case 'Test':\n break;\n default:\n throw new Error(\"Unknown account type: \" + base.type + \". Try upgrading pyth-client.\");\n }\n }\n };\n /** Start receiving price updates. Once this method is called, any registered callbacks will be invoked\n * each time a Pyth price account is updated.\n */\n PythConnection.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n var accounts, _i, accounts_1, account;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.connection.getProgramAccounts(this.pythProgramKey, this.commitment)];\n case 1:\n accounts = _a.sent();\n for (_i = 0, accounts_1 = accounts; _i < accounts_1.length; _i++) {\n account = accounts_1[_i];\n this.handleAccount(account.pubkey, account.account, true);\n }\n this.connection.onProgramAccountChange(this.pythProgramKey, function (keyedAccountInfo, context) {\n _this.handleAccount(keyedAccountInfo.accountId, keyedAccountInfo.accountInfo, false);\n }, this.commitment);\n return [2 /*return*/];\n }\n });\n });\n };\n /** Register callback to receive price updates. */\n PythConnection.prototype.onPriceChange = function (callback) {\n this.callbacks.push(callback);\n };\n /** Stop receiving price updates. Note that this also currently deletes all registered callbacks. */\n PythConnection.prototype.stop = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n // There's no way to actually turn off the solana web3 subscription x_x, but there should be.\n // Leave this method in so we don't have to update our API when solana fixes theirs.\n // In the interim, delete callbacks.\n this.callbacks = [];\n return [2 /*return*/];\n });\n });\n };\n return PythConnection;\n}());\nexports.PythConnection = PythConnection;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PythHttpClient = void 0;\nvar _1 = require(\".\");\n/**\n * Reads Pyth price data from a solana web3 connection. This class uses a single HTTP call.\n * Use the method getData() to get updated prices values.\n */\nvar PythHttpClient = /** @class */ (function () {\n function PythHttpClient(connection, pythProgramKey, commitment) {\n if (commitment === void 0) { commitment = 'finalized'; }\n this.connection = connection;\n this.pythProgramKey = pythProgramKey;\n this.commitment = commitment;\n }\n /*\n * Get Pyth Network account information and return actual price state.\n * The result contains lists of asset types, product symbols and their prices.\n */\n PythHttpClient.prototype.getData = function () {\n return __awaiter(this, void 0, void 0, function () {\n var assetTypes, productSymbols, products, productFromSymbol, productPrice, prices, accountList, priceDataQueue, productAccountKeyToProduct, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n assetTypes = new Set();\n productSymbols = new Set();\n products = new Set();\n productFromSymbol = new Map();\n productPrice = new Map();\n prices = new Array();\n return [4 /*yield*/, this.connection.getProgramAccounts(this.pythProgramKey, this.commitment)];\n case 1:\n accountList = _a.sent();\n priceDataQueue = new Array();\n productAccountKeyToProduct = new Map();\n accountList.forEach(function (singleAccount) {\n var base = _1.parseBaseData(singleAccount.account.data);\n if (base) {\n switch (_1.AccountType[base.type]) {\n case 'Mapping':\n // We can skip these because we're going to get every account owned by this program anyway.\n break;\n case 'Product':\n var productData = _1.parseProductData(singleAccount.account.data);\n productAccountKeyToProduct.set(singleAccount.pubkey.toBase58(), productData.product);\n assetTypes.add(productData.product.asset_type);\n productSymbols.add(productData.product.symbol);\n products.add(productData.product);\n productFromSymbol.set(productData.product.symbol, productData.product);\n break;\n case 'Price':\n var priceData = _1.parsePriceData(singleAccount.account.data);\n priceDataQueue.push(priceData);\n break;\n case 'Test':\n break;\n default:\n throw new Error(\"Unknown account type: \" + base.type + \". Try upgrading pyth-client.\");\n }\n }\n });\n priceDataQueue.forEach(function (priceData) {\n var product = productAccountKeyToProduct.get(priceData.productAccountKey.toBase58());\n if (product) {\n productPrice.set(product.symbol, priceData);\n prices.push(priceData);\n }\n });\n result = {\n assetTypes: Array.from(assetTypes),\n symbols: Array.from(productSymbols),\n products: Array.from(products),\n productFromSymbol: productFromSymbol,\n productPrice: productPrice,\n prices: prices\n };\n return [2 /*return*/, result];\n }\n });\n });\n };\n return PythHttpClient;\n}());\nexports.PythHttpClient = PythHttpClient;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPythProgramKeyForCluster = void 0;\nvar web3_js_1 = require(\"@solana/web3.js\");\n/** Mapping from solana clusters to the public key of the pyth program. */\nvar clusterToPythProgramKey = {\n 'mainnet-beta': 'FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH',\n devnet: 'gSbePebfvPy7tRqimPoVecS2UsBvYv46ynrzWocc92s',\n testnet: '8tfDNiaEyrV6Q1U4DEXrEigs9DoDtkugzFbybENEbCDz',\n};\n/** Gets the public key of the Pyth program running on the given cluster. */\nfunction getPythProgramKeyForCluster(cluster) {\n if (clusterToPythProgramKey[cluster] !== undefined) {\n return new web3_js_1.PublicKey(clusterToPythProgramKey[cluster]);\n }\n else {\n throw new Error(\"Invalid Solana cluster name: \" + cluster + \". Valid options are: \" + JSON.stringify(Object.keys(clusterToPythProgramKey)));\n }\n}\nexports.getPythProgramKeyForCluster = getPythProgramKeyForCluster;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPythProgramKeyForCluster = exports.PythHttpClient = exports.PythConnection = exports.parsePriceData = exports.parseProductData = exports.parseMappingData = exports.parseBaseData = exports.MAX_SLOT_DIFFERENCE = exports.AccountType = exports.DeriveType = exports.PriceType = exports.CorpAction = exports.PriceStatus = exports.Version = exports.Version2 = exports.Magic = void 0;\nvar web3_js_1 = require(\"@solana/web3.js\");\nvar buffer_1 = require(\"buffer\");\nvar readBig_1 = require(\"./readBig\");\n/** Constants. This section must be kept in sync with the on-chain program. */\nexports.Magic = 0xa1b2c3d4;\nexports.Version2 = 2;\nexports.Version = exports.Version2;\nexports.PriceStatus = ['Unknown', 'Trading', 'Halted', 'Auction'];\nexports.CorpAction = ['NoCorpAct'];\nexports.PriceType = ['Unknown', 'Price'];\nexports.DeriveType = ['Unknown', 'TWAP', 'Volatility'];\nexports.AccountType = ['Unknown', 'Mapping', 'Product', 'Price', 'Test'];\n/** Number of slots that can pass before a publisher's price is no longer included in the aggregate. */\nexports.MAX_SLOT_DIFFERENCE = 25;\nvar empty32Buffer = buffer_1.Buffer.alloc(32);\nvar PKorNull = function (data) { return (data.equals(empty32Buffer) ? null : new web3_js_1.PublicKey(data)); };\n/** Parse data as a generic Pyth account. Use this method if you don't know the account type. */\nfunction parseBaseData(data) {\n // data is too short to have the magic number.\n if (data.byteLength < 4) {\n return undefined;\n }\n var magic = data.readUInt32LE(0);\n if (magic === exports.Magic) {\n // program version\n var version = data.readUInt32LE(4);\n // account type\n var type = data.readUInt32LE(8);\n // account used size\n var size = data.readUInt32LE(12);\n return { magic: magic, version: version, type: type, size: size };\n }\n else {\n return undefined;\n }\n}\nexports.parseBaseData = parseBaseData;\nvar parseMappingData = function (data) {\n // pyth magic number\n var magic = data.readUInt32LE(0);\n // program version\n var version = data.readUInt32LE(4);\n // account type\n var type = data.readUInt32LE(8);\n // account used size\n var size = data.readUInt32LE(12);\n // number of product accounts\n var numProducts = data.readUInt32LE(16);\n // unused\n // const unused = accountInfo.data.readUInt32LE(20)\n // next mapping account (if any)\n var nextMappingAccount = PKorNull(data.slice(24, 56));\n // read each symbol account\n var offset = 56;\n var productAccountKeys = [];\n for (var i = 0; i < numProducts; i++) {\n var productAccountBytes = data.slice(offset, offset + 32);\n var productAccountKey = new web3_js_1.PublicKey(productAccountBytes);\n offset += 32;\n productAccountKeys.push(productAccountKey);\n }\n return {\n magic: magic,\n version: version,\n type: type,\n size: size,\n nextMappingAccount: nextMappingAccount,\n productAccountKeys: productAccountKeys,\n };\n};\nexports.parseMappingData = parseMappingData;\nvar parseProductData = function (data) {\n // pyth magic number\n var magic = data.readUInt32LE(0);\n // program version\n var version = data.readUInt32LE(4);\n // account type\n var type = data.readUInt32LE(8);\n // price account size\n var size = data.readUInt32LE(12);\n // first price account in list\n var priceAccountBytes = data.slice(16, 48);\n var priceAccountKey = new web3_js_1.PublicKey(priceAccountBytes);\n var product = {};\n var idx = 48;\n while (idx < size) {\n var keyLength = data[idx];\n idx++;\n if (keyLength) {\n var key = data.slice(idx, idx + keyLength).toString();\n idx += keyLength;\n var valueLength = data[idx];\n idx++;\n var value = data.slice(idx, idx + valueLength).toString();\n idx += valueLength;\n product[key] = value;\n }\n }\n return { magic: magic, version: version, type: type, size: size, priceAccountKey: priceAccountKey, product: product };\n};\nexports.parseProductData = parseProductData;\nvar parseEma = function (data, exponent) {\n // current value of ema\n var valueComponent = readBig_1.readBigInt64LE(data, 0);\n var value = Number(valueComponent) * Math.pow(10, exponent);\n // numerator state for next update\n var numerator = readBig_1.readBigInt64LE(data, 8);\n // denominator state for next update\n var denominator = readBig_1.readBigInt64LE(data, 16);\n return { valueComponent: valueComponent, value: value, numerator: numerator, denominator: denominator };\n};\nvar parsePriceInfo = function (data, exponent) {\n // aggregate price\n var priceComponent = readBig_1.readBigInt64LE(data, 0);\n var price = Number(priceComponent) * Math.pow(10, exponent);\n // aggregate confidence\n var confidenceComponent = readBig_1.readBigUInt64LE(data, 8);\n var confidence = Number(confidenceComponent) * Math.pow(10, exponent);\n // aggregate status\n var status = data.readUInt32LE(16);\n // aggregate corporate action\n var corporateAction = data.readUInt32LE(20);\n // aggregate publish slot\n var publishSlot = readBig_1.readBigUInt64LE(data, 24);\n return {\n priceComponent: priceComponent,\n price: price,\n confidenceComponent: confidenceComponent,\n confidence: confidence,\n status: status,\n corporateAction: corporateAction,\n publishSlot: publishSlot,\n };\n};\nvar parsePriceData = function (data) {\n // pyth magic number\n var magic = data.readUInt32LE(0);\n // program version\n var version = data.readUInt32LE(4);\n // account type\n var type = data.readUInt32LE(8);\n // price account size\n var size = data.readUInt32LE(12);\n // price or calculation type\n var priceType = data.readUInt32LE(16);\n // price exponent\n var exponent = data.readInt32LE(20);\n // number of component prices\n var numComponentPrices = data.readUInt32LE(24);\n // number of quoters that make up aggregate\n var numQuoters = data.readUInt32LE(28);\n // slot of last valid (not unknown) aggregate price\n var lastSlot = readBig_1.readBigUInt64LE(data, 32);\n // valid on-chain slot of aggregate price\n var validSlot = readBig_1.readBigUInt64LE(data, 40);\n // time-weighted average price\n var twap = parseEma(data.slice(48, 72), exponent);\n // time-weighted average confidence interval\n var twac = parseEma(data.slice(72, 96), exponent);\n // space for future derived values\n var drv1Component = readBig_1.readBigInt64LE(data, 96);\n var drv1 = Number(drv1Component) * Math.pow(10, exponent);\n // minimum number of publishers for status to be TRADING\n var minPublishers = data.readUInt8(104);\n // space for future derived values\n var drv2 = data.readInt8(105);\n // space for future derived values\n var drv3 = data.readInt16LE(106);\n // space for future derived values\n var drv4 = data.readInt32LE(108);\n // product id / reference account\n var productAccountKey = new web3_js_1.PublicKey(data.slice(112, 144));\n // next price account in list\n var nextPriceAccountKey = PKorNull(data.slice(144, 176));\n // valid slot of previous update\n var previousSlot = readBig_1.readBigUInt64LE(data, 176);\n // aggregate price of previous update\n var previousPriceComponent = readBig_1.readBigInt64LE(data, 184);\n var previousPrice = Number(previousPriceComponent) * Math.pow(10, exponent);\n // confidence interval of previous update\n var previousConfidenceComponent = readBig_1.readBigUInt64LE(data, 192);\n var previousConfidence = Number(previousConfidenceComponent) * Math.pow(10, exponent);\n // space for future derived values\n var drv5Component = readBig_1.readBigInt64LE(data, 200);\n var drv5 = Number(drv5Component) * Math.pow(10, exponent);\n var aggregate = parsePriceInfo(data.slice(208, 240), exponent);\n var price;\n var confidence;\n if (aggregate.status === 1) {\n price = aggregate.price;\n confidence = aggregate.confidence;\n }\n // price components - up to 32\n var priceComponents = [];\n var offset = 240;\n var shouldContinue = true;\n while (offset < data.length && shouldContinue) {\n var publisher = PKorNull(data.slice(offset, offset + 32));\n offset += 32;\n if (publisher) {\n var componentAggregate = parsePriceInfo(data.slice(offset, offset + 32), exponent);\n offset += 32;\n var latest = parsePriceInfo(data.slice(offset, offset + 32), exponent);\n offset += 32;\n priceComponents.push({ publisher: publisher, aggregate: componentAggregate, latest: latest });\n }\n else {\n shouldContinue = false;\n }\n }\n return {\n magic: magic,\n version: version,\n type: type,\n size: size,\n priceType: priceType,\n exponent: exponent,\n numComponentPrices: numComponentPrices,\n numQuoters: numQuoters,\n lastSlot: lastSlot,\n validSlot: validSlot,\n twap: twap,\n twac: twac,\n drv1Component: drv1Component,\n drv1: drv1,\n minPublishers: minPublishers,\n drv2: drv2,\n drv3: drv3,\n drv4: drv4,\n productAccountKey: productAccountKey,\n nextPriceAccountKey: nextPriceAccountKey,\n previousSlot: previousSlot,\n previousPriceComponent: previousPriceComponent,\n previousPrice: previousPrice,\n previousConfidenceComponent: previousConfidenceComponent,\n previousConfidence: previousConfidence,\n drv5Component: drv5Component,\n drv5: drv5,\n aggregate: aggregate,\n priceComponents: priceComponents,\n price: price,\n confidence: confidence,\n };\n};\nexports.parsePriceData = parsePriceData;\nvar PythConnection_1 = require(\"./PythConnection\");\nObject.defineProperty(exports, \"PythConnection\", { enumerable: true, get: function () { return PythConnection_1.PythConnection; } });\nvar PythHttpClient_1 = require(\"./PythHttpClient\");\nObject.defineProperty(exports, \"PythHttpClient\", { enumerable: true, get: function () { return PythHttpClient_1.PythHttpClient; } });\nvar cluster_1 = require(\"./cluster\");\nObject.defineProperty(exports, \"getPythProgramKeyForCluster\", { enumerable: true, get: function () { return cluster_1.getPythProgramKeyForCluster; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.readBigUInt64LE = exports.readBigInt64LE = void 0;\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/errors.js#L758\nvar ERR_BUFFER_OUT_OF_BOUNDS = function () { return new Error('Attempt to access memory outside buffer bounds'); };\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/errors.js#L968\nvar ERR_INVALID_ARG_TYPE = function (name, expected, actual) {\n return new Error(\"The \\\"\" + name + \"\\\" argument must be of type \" + expected + \". Received \" + actual);\n};\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/errors.js#L1262\nvar ERR_OUT_OF_RANGE = function (str, range, received) {\n return new Error(\"The value of \\\"\" + str + \" is out of range. It must be \" + range + \". Received \" + received);\n};\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/validators.js#L127-L130\nfunction validateNumber(value, name) {\n if (typeof value !== 'number')\n throw ERR_INVALID_ARG_TYPE(name, 'number', value);\n}\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/buffer.js#L68-L80\nfunction boundsError(value, length) {\n if (Math.floor(value) !== value) {\n validateNumber(value, 'offset');\n throw ERR_OUT_OF_RANGE('offset', 'an integer', value);\n }\n if (length < 0)\n throw ERR_BUFFER_OUT_OF_BOUNDS();\n throw ERR_OUT_OF_RANGE('offset', \">= 0 and <= \" + length, value);\n}\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/buffer.js#L129-L145\nfunction readBigInt64LE(buffer, offset) {\n if (offset === void 0) { offset = 0; }\n validateNumber(offset, 'offset');\n var first = buffer[offset];\n var last = buffer[offset + 7];\n if (first === undefined || last === undefined)\n boundsError(offset, buffer.length - 8);\n // tslint:disable-next-line:no-bitwise\n var val = buffer[offset + 4] + buffer[offset + 5] * Math.pow(2, 8) + buffer[offset + 6] * Math.pow(2, 16) + (last << 24); // Overflow\n return ((BigInt(val) << BigInt(32)) + // tslint:disable-line:no-bitwise\n BigInt(first + buffer[++offset] * Math.pow(2, 8) + buffer[++offset] * Math.pow(2, 16) + buffer[++offset] * Math.pow(2, 24)));\n}\nexports.readBigInt64LE = readBigInt64LE;\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/buffer.js#L89-L107\nfunction readBigUInt64LE(buffer, offset) {\n if (offset === void 0) { offset = 0; }\n validateNumber(offset, 'offset');\n var first = buffer[offset];\n var last = buffer[offset + 7];\n if (first === undefined || last === undefined)\n boundsError(offset, buffer.length - 8);\n var lo = first + buffer[++offset] * Math.pow(2, 8) + buffer[++offset] * Math.pow(2, 16) + buffer[++offset] * Math.pow(2, 24);\n var hi = buffer[++offset] + buffer[++offset] * Math.pow(2, 8) + buffer[++offset] * Math.pow(2, 16) + last * Math.pow(2, 24);\n return BigInt(lo) + (BigInt(hi) << BigInt(32)); // tslint:disable-line:no-bitwise\n}\nexports.readBigUInt64LE = readBigUInt64LE;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PythConnection = void 0;\nvar index_1 = require(\"./index\");\nvar ONES = '11111111111111111111111111111111';\n/**\n * Reads Pyth price data from a solana web3 connection. This class uses a callback-driven model,\n * similar to the solana web3 methods for tracking updates to accounts.\n */\nvar PythConnection = /** @class */ (function () {\n /** Create a PythConnection that reads its data from an underlying solana web3 connection.\n * pythProgramKey is the public key of the Pyth program running on the chosen solana cluster.\n */\n function PythConnection(connection, pythProgramKey, commitment) {\n if (commitment === void 0) { commitment = 'finalized'; }\n this.productAccountKeyToProduct = {};\n this.priceAccountKeyToProductAccountKey = {};\n this.callbacks = [];\n this.connection = connection;\n this.pythProgramKey = pythProgramKey;\n this.commitment = commitment;\n }\n PythConnection.prototype.handleProductAccount = function (key, account) {\n var _a = index_1.parseProductData(account.data), priceAccountKey = _a.priceAccountKey, type = _a.type, product = _a.product;\n this.productAccountKeyToProduct[key.toString()] = product;\n if (priceAccountKey.toString() !== ONES) {\n this.priceAccountKeyToProductAccountKey[priceAccountKey.toString()] = key.toString();\n }\n };\n PythConnection.prototype.handlePriceAccount = function (key, account, slot) {\n var product = this.productAccountKeyToProduct[this.priceAccountKeyToProductAccountKey[key.toString()]];\n if (product === undefined) {\n // This shouldn't happen since we're subscribed to all of the program's accounts,\n // but let's be good defensive programmers.\n throw new Error('Got a price update for an unknown product. This is a bug in the library, please report it to the developers.');\n }\n var priceData = index_1.parsePriceData(account.data, slot);\n for (var _i = 0, _a = this.callbacks; _i < _a.length; _i++) {\n var callback = _a[_i];\n callback(product, priceData);\n }\n };\n PythConnection.prototype.handleAccount = function (key, account, productOnly, slot) {\n var base = index_1.parseBaseData(account.data);\n // The pyth program owns accounts that don't contain pyth data, which we can safely ignore.\n if (base) {\n switch (base.type) {\n case index_1.AccountType.Mapping:\n // We can skip these because we're going to get every account owned by this program anyway.\n break;\n case index_1.AccountType.Product:\n this.handleProductAccount(key, account);\n break;\n case index_1.AccountType.Price:\n if (!productOnly) {\n this.handlePriceAccount(key, account, slot);\n }\n break;\n case index_1.AccountType.Test:\n break;\n default:\n throw new Error(\"Unknown account type: \" + base.type + \". Try upgrading pyth-client.\");\n }\n }\n };\n /** Start receiving price updates. Once this method is called, any registered callbacks will be invoked\n * each time a Pyth price account is updated.\n */\n PythConnection.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n var accounts, currentSlot, _i, accounts_1, account;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.connection.getProgramAccounts(this.pythProgramKey, this.commitment)];\n case 1:\n accounts = _a.sent();\n return [4 /*yield*/, this.connection.getSlot(this.commitment)];\n case 2:\n currentSlot = _a.sent();\n for (_i = 0, accounts_1 = accounts; _i < accounts_1.length; _i++) {\n account = accounts_1[_i];\n this.handleAccount(account.pubkey, account.account, true, currentSlot);\n }\n this.connection.onProgramAccountChange(this.pythProgramKey, function (keyedAccountInfo, context) {\n _this.handleAccount(keyedAccountInfo.accountId, keyedAccountInfo.accountInfo, false, context.slot);\n }, this.commitment);\n return [2 /*return*/];\n }\n });\n });\n };\n /** Register callback to receive price updates. */\n PythConnection.prototype.onPriceChange = function (callback) {\n this.callbacks.push(callback);\n };\n /** Stop receiving price updates. Note that this also currently deletes all registered callbacks. */\n PythConnection.prototype.stop = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n // There's no way to actually turn off the solana web3 subscription x_x, but there should be.\n // Leave this method in so we don't have to update our API when solana fixes theirs.\n // In the interim, delete callbacks.\n this.callbacks = [];\n return [2 /*return*/];\n });\n });\n };\n return PythConnection;\n}());\nexports.PythConnection = PythConnection;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PythHttpClient = void 0;\nvar _1 = require(\".\");\n/**\n * Reads Pyth price data from a solana web3 connection. This class uses a single HTTP call.\n * Use the method getData() to get updated prices values.\n */\nvar PythHttpClient = /** @class */ (function () {\n function PythHttpClient(connection, pythProgramKey, commitment) {\n if (commitment === void 0) { commitment = 'finalized'; }\n this.connection = connection;\n this.pythProgramKey = pythProgramKey;\n this.commitment = commitment;\n }\n /*\n * Get Pyth Network account information and return actual price state.\n * The result contains lists of asset types, product symbols and their prices.\n */\n PythHttpClient.prototype.getData = function () {\n return __awaiter(this, void 0, void 0, function () {\n var assetTypes, productSymbols, products, productFromSymbol, productPrice, prices, accountList, priceDataQueue, productAccountKeyToProduct, currentSlot, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n assetTypes = new Set();\n productSymbols = new Set();\n products = new Set();\n productFromSymbol = new Map();\n productPrice = new Map();\n prices = new Array();\n return [4 /*yield*/, this.connection.getProgramAccounts(this.pythProgramKey, this.commitment)\n // Populate products and prices\n ];\n case 1:\n accountList = _a.sent();\n priceDataQueue = new Array();\n productAccountKeyToProduct = new Map();\n return [4 /*yield*/, this.connection.getSlot(this.commitment)];\n case 2:\n currentSlot = _a.sent();\n accountList.forEach(function (singleAccount) {\n var base = _1.parseBaseData(singleAccount.account.data);\n if (base) {\n switch (base.type) {\n case _1.AccountType.Mapping:\n // We can skip these because we're going to get every account owned by this program anyway.\n break;\n case _1.AccountType.Product:\n var productData = _1.parseProductData(singleAccount.account.data);\n productAccountKeyToProduct.set(singleAccount.pubkey.toBase58(), productData.product);\n assetTypes.add(productData.product.asset_type);\n productSymbols.add(productData.product.symbol);\n products.add(productData.product);\n productFromSymbol.set(productData.product.symbol, productData.product);\n break;\n case _1.AccountType.Price:\n var priceData = _1.parsePriceData(singleAccount.account.data, currentSlot);\n priceDataQueue.push(priceData);\n break;\n case _1.AccountType.Test:\n break;\n default:\n throw new Error(\"Unknown account type: \" + base.type + \". Try upgrading pyth-client.\");\n }\n }\n });\n priceDataQueue.forEach(function (priceData) {\n var product = productAccountKeyToProduct.get(priceData.productAccountKey.toBase58());\n if (product) {\n productPrice.set(product.symbol, priceData);\n prices.push(priceData);\n }\n });\n result = {\n assetTypes: Array.from(assetTypes),\n symbols: Array.from(productSymbols),\n products: Array.from(products),\n productFromSymbol: productFromSymbol,\n productPrice: productPrice,\n prices: prices,\n };\n return [2 /*return*/, result];\n }\n });\n });\n };\n return PythHttpClient;\n}());\nexports.PythHttpClient = PythHttpClient;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPythClusterApiUrl = exports.getPythProgramKeyForCluster = void 0;\nvar web3_js_1 = require(\"@solana/web3.js\");\n/** Mapping from solana clusters to the public key of the pyth program. */\nvar clusterToPythProgramKey = {\n 'mainnet-beta': 'FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH',\n devnet: 'gSbePebfvPy7tRqimPoVecS2UsBvYv46ynrzWocc92s',\n testnet: '8tfDNiaEyrV6Q1U4DEXrEigs9DoDtkugzFbybENEbCDz',\n pythtest: '8tfDNiaEyrV6Q1U4DEXrEigs9DoDtkugzFbybENEbCDz',\n pythnet: 'FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH',\n};\n/** Gets the public key of the Pyth program running on the given cluster. */\nfunction getPythProgramKeyForCluster(cluster) {\n if (clusterToPythProgramKey[cluster] !== undefined) {\n return new web3_js_1.PublicKey(clusterToPythProgramKey[cluster]);\n }\n else {\n throw new Error(\"Invalid Solana cluster name: \" + cluster + \". Valid options are: \" + JSON.stringify(Object.keys(clusterToPythProgramKey)));\n }\n}\nexports.getPythProgramKeyForCluster = getPythProgramKeyForCluster;\n/** Retrieves the RPC API URL for the specified Pyth cluster */\nfunction getPythClusterApiUrl(cluster) {\n // TODO: Add pythnet when it's ready\n if (cluster === 'pythtest') {\n return 'https://api.pythtest.pyth.network';\n }\n else if (cluster === 'pythnet') {\n return 'https://pythnet.rpcpool.com';\n }\n else {\n return web3_js_1.clusterApiUrl(cluster);\n }\n}\nexports.getPythClusterApiUrl = getPythClusterApiUrl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPythProgramKeyForCluster = exports.PythHttpClient = exports.PythConnection = exports.parsePriceData = exports.parseProductData = exports.parseMappingData = exports.parseBaseData = exports.AccountType = exports.DeriveType = exports.PriceType = exports.CorpAction = exports.PriceStatus = exports.MAX_SLOT_DIFFERENCE = exports.Version = exports.Version2 = exports.Magic = void 0;\nvar web3_js_1 = require(\"@solana/web3.js\");\nvar buffer_1 = require(\"buffer\");\nvar readBig_1 = require(\"./readBig\");\n/** Constants. This section must be kept in sync with the on-chain program. */\nexports.Magic = 0xa1b2c3d4;\nexports.Version2 = 2;\nexports.Version = exports.Version2;\n/** Number of slots that can pass before a publisher's price is no longer included in the aggregate. */\nexports.MAX_SLOT_DIFFERENCE = 25;\nvar PriceStatus;\n(function (PriceStatus) {\n PriceStatus[PriceStatus[\"Unknown\"] = 0] = \"Unknown\";\n PriceStatus[PriceStatus[\"Trading\"] = 1] = \"Trading\";\n PriceStatus[PriceStatus[\"Halted\"] = 2] = \"Halted\";\n PriceStatus[PriceStatus[\"Auction\"] = 3] = \"Auction\";\n})(PriceStatus = exports.PriceStatus || (exports.PriceStatus = {}));\nvar CorpAction;\n(function (CorpAction) {\n CorpAction[CorpAction[\"NoCorpAct\"] = 0] = \"NoCorpAct\";\n})(CorpAction = exports.CorpAction || (exports.CorpAction = {}));\nvar PriceType;\n(function (PriceType) {\n PriceType[PriceType[\"Unknown\"] = 0] = \"Unknown\";\n PriceType[PriceType[\"Price\"] = 1] = \"Price\";\n})(PriceType = exports.PriceType || (exports.PriceType = {}));\nvar DeriveType;\n(function (DeriveType) {\n DeriveType[DeriveType[\"Unknown\"] = 0] = \"Unknown\";\n DeriveType[DeriveType[\"Volatility\"] = 1] = \"Volatility\";\n})(DeriveType = exports.DeriveType || (exports.DeriveType = {}));\nvar AccountType;\n(function (AccountType) {\n AccountType[AccountType[\"Unknown\"] = 0] = \"Unknown\";\n AccountType[AccountType[\"Mapping\"] = 1] = \"Mapping\";\n AccountType[AccountType[\"Product\"] = 2] = \"Product\";\n AccountType[AccountType[\"Price\"] = 3] = \"Price\";\n AccountType[AccountType[\"Test\"] = 4] = \"Test\";\n})(AccountType = exports.AccountType || (exports.AccountType = {}));\nvar empty32Buffer = buffer_1.Buffer.alloc(32);\nvar PKorNull = function (data) { return (data.equals(empty32Buffer) ? null : new web3_js_1.PublicKey(data)); };\n/** Parse data as a generic Pyth account. Use this method if you don't know the account type. */\nfunction parseBaseData(data) {\n // data is too short to have the magic number.\n if (data.byteLength < 4) {\n return undefined;\n }\n var magic = data.readUInt32LE(0);\n if (magic === exports.Magic) {\n // program version\n var version = data.readUInt32LE(4);\n // account type\n var type = data.readUInt32LE(8);\n // account used size\n var size = data.readUInt32LE(12);\n return { magic: magic, version: version, type: type, size: size };\n }\n else {\n return undefined;\n }\n}\nexports.parseBaseData = parseBaseData;\nvar parseMappingData = function (data) {\n // pyth magic number\n var magic = data.readUInt32LE(0);\n // program version\n var version = data.readUInt32LE(4);\n // account type\n var type = data.readUInt32LE(8);\n // account used size\n var size = data.readUInt32LE(12);\n // number of product accounts\n var numProducts = data.readUInt32LE(16);\n // unused\n // const unused = accountInfo.data.readUInt32LE(20)\n // next mapping account (if any)\n var nextMappingAccount = PKorNull(data.slice(24, 56));\n // read each symbol account\n var offset = 56;\n var productAccountKeys = [];\n for (var i = 0; i < numProducts; i++) {\n var productAccountBytes = data.slice(offset, offset + 32);\n var productAccountKey = new web3_js_1.PublicKey(productAccountBytes);\n offset += 32;\n productAccountKeys.push(productAccountKey);\n }\n return {\n magic: magic,\n version: version,\n type: type,\n size: size,\n nextMappingAccount: nextMappingAccount,\n productAccountKeys: productAccountKeys,\n };\n};\nexports.parseMappingData = parseMappingData;\nvar parseProductData = function (data) {\n // pyth magic number\n var magic = data.readUInt32LE(0);\n // program version\n var version = data.readUInt32LE(4);\n // account type\n var type = data.readUInt32LE(8);\n // price account size\n var size = data.readUInt32LE(12);\n // first price account in list\n var priceAccountBytes = data.slice(16, 48);\n var priceAccountKey = new web3_js_1.PublicKey(priceAccountBytes);\n var product = {};\n product.price_account = priceAccountKey.toBase58();\n var idx = 48;\n while (idx < size) {\n var keyLength = data[idx];\n idx++;\n if (keyLength) {\n var key = data.slice(idx, idx + keyLength).toString();\n idx += keyLength;\n var valueLength = data[idx];\n idx++;\n var value = data.slice(idx, idx + valueLength).toString();\n idx += valueLength;\n product[key] = value;\n }\n }\n return { magic: magic, version: version, type: type, size: size, priceAccountKey: priceAccountKey, product: product };\n};\nexports.parseProductData = parseProductData;\nvar parseEma = function (data, exponent) {\n // current value of ema\n var valueComponent = readBig_1.readBigInt64LE(data, 0);\n var value = Number(valueComponent) * Math.pow(10, exponent);\n // numerator state for next update\n var numerator = readBig_1.readBigInt64LE(data, 8);\n // denominator state for next update\n var denominator = readBig_1.readBigInt64LE(data, 16);\n return { valueComponent: valueComponent, value: value, numerator: numerator, denominator: denominator };\n};\nvar parsePriceInfo = function (data, exponent) {\n // aggregate price\n var priceComponent = readBig_1.readBigInt64LE(data, 0);\n var price = Number(priceComponent) * Math.pow(10, exponent);\n // aggregate confidence\n var confidenceComponent = readBig_1.readBigUInt64LE(data, 8);\n var confidence = Number(confidenceComponent) * Math.pow(10, exponent);\n // aggregate status\n var status = data.readUInt32LE(16);\n // aggregate corporate action\n var corporateAction = data.readUInt32LE(20);\n // aggregate publish slot. It is converted to number to be consistent with Solana's library interface (Slot there is number)\n var publishSlot = Number(readBig_1.readBigUInt64LE(data, 24));\n return {\n priceComponent: priceComponent,\n price: price,\n confidenceComponent: confidenceComponent,\n confidence: confidence,\n status: status,\n corporateAction: corporateAction,\n publishSlot: publishSlot,\n };\n};\n// Provide currentSlot when available to allow status to consider the case when price goes stale. It is optional because\n// it requires an extra request to get it when it is not available which is not always efficient.\nvar parsePriceData = function (data, currentSlot) {\n // pyth magic number\n var magic = data.readUInt32LE(0);\n // program version\n var version = data.readUInt32LE(4);\n // account type\n var type = data.readUInt32LE(8);\n // price account size\n var size = data.readUInt32LE(12);\n // price or calculation type\n var priceType = data.readUInt32LE(16);\n // price exponent\n var exponent = data.readInt32LE(20);\n // number of component prices\n var numComponentPrices = data.readUInt32LE(24);\n // number of quoters that make up aggregate\n var numQuoters = data.readUInt32LE(28);\n // slot of last valid (not unknown) aggregate price\n var lastSlot = readBig_1.readBigUInt64LE(data, 32);\n // valid on-chain slot of aggregate price\n var validSlot = readBig_1.readBigUInt64LE(data, 40);\n // exponential moving average price\n var emaPrice = parseEma(data.slice(48, 72), exponent);\n // exponential moving average confidence interval\n var emaConfidence = parseEma(data.slice(72, 96), exponent);\n // timestamp of the current price\n var timestamp = readBig_1.readBigInt64LE(data, 96);\n // minimum number of publishers for status to be TRADING\n var minPublishers = data.readUInt8(104);\n // space for future derived values\n var drv2 = data.readInt8(105);\n // space for future derived values\n var drv3 = data.readInt16LE(106);\n // space for future derived values\n var drv4 = data.readInt32LE(108);\n // product id / reference account\n var productAccountKey = new web3_js_1.PublicKey(data.slice(112, 144));\n // next price account in list\n var nextPriceAccountKey = PKorNull(data.slice(144, 176));\n // valid slot of previous update\n var previousSlot = readBig_1.readBigUInt64LE(data, 176);\n // aggregate price of previous update\n var previousPriceComponent = readBig_1.readBigInt64LE(data, 184);\n var previousPrice = Number(previousPriceComponent) * Math.pow(10, exponent);\n // confidence interval of previous update\n var previousConfidenceComponent = readBig_1.readBigUInt64LE(data, 192);\n var previousConfidence = Number(previousConfidenceComponent) * Math.pow(10, exponent);\n // space for future derived values\n var previousTimestamp = readBig_1.readBigInt64LE(data, 200);\n var aggregate = parsePriceInfo(data.slice(208, 240), exponent);\n var status = aggregate.status;\n if (currentSlot && status === PriceStatus.Trading) {\n if (currentSlot - aggregate.publishSlot > exports.MAX_SLOT_DIFFERENCE) {\n status = PriceStatus.Unknown;\n }\n }\n var price;\n var confidence;\n if (status === PriceStatus.Trading) {\n price = aggregate.price;\n confidence = aggregate.confidence;\n }\n // price components - up to 32\n var priceComponents = [];\n var offset = 240;\n var shouldContinue = true;\n while (offset < data.length && shouldContinue) {\n var publisher = PKorNull(data.slice(offset, offset + 32));\n offset += 32;\n if (publisher) {\n var componentAggregate = parsePriceInfo(data.slice(offset, offset + 32), exponent);\n offset += 32;\n var latest = parsePriceInfo(data.slice(offset, offset + 32), exponent);\n offset += 32;\n priceComponents.push({ publisher: publisher, aggregate: componentAggregate, latest: latest });\n }\n else {\n shouldContinue = false;\n }\n }\n return {\n magic: magic,\n version: version,\n type: type,\n size: size,\n priceType: priceType,\n exponent: exponent,\n numComponentPrices: numComponentPrices,\n numQuoters: numQuoters,\n lastSlot: lastSlot,\n validSlot: validSlot,\n emaPrice: emaPrice,\n emaConfidence: emaConfidence,\n timestamp: timestamp,\n minPublishers: minPublishers,\n drv2: drv2,\n drv3: drv3,\n drv4: drv4,\n productAccountKey: productAccountKey,\n nextPriceAccountKey: nextPriceAccountKey,\n previousSlot: previousSlot,\n previousPriceComponent: previousPriceComponent,\n previousPrice: previousPrice,\n previousConfidenceComponent: previousConfidenceComponent,\n previousConfidence: previousConfidence,\n previousTimestamp: previousTimestamp,\n aggregate: aggregate,\n priceComponents: priceComponents,\n price: price,\n confidence: confidence,\n status: status,\n };\n};\nexports.parsePriceData = parsePriceData;\nvar PythConnection_1 = require(\"./PythConnection\");\nObject.defineProperty(exports, \"PythConnection\", { enumerable: true, get: function () { return PythConnection_1.PythConnection; } });\nvar PythHttpClient_1 = require(\"./PythHttpClient\");\nObject.defineProperty(exports, \"PythHttpClient\", { enumerable: true, get: function () { return PythHttpClient_1.PythHttpClient; } });\nvar cluster_1 = require(\"./cluster\");\nObject.defineProperty(exports, \"getPythProgramKeyForCluster\", { enumerable: true, get: function () { return cluster_1.getPythProgramKeyForCluster; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.readBigUInt64LE = exports.readBigInt64LE = void 0;\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/errors.js#L758\nvar ERR_BUFFER_OUT_OF_BOUNDS = function () { return new Error('Attempt to access memory outside buffer bounds'); };\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/errors.js#L968\nvar ERR_INVALID_ARG_TYPE = function (name, expected, actual) {\n return new Error(\"The \\\"\" + name + \"\\\" argument must be of type \" + expected + \". Received \" + actual);\n};\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/errors.js#L1262\nvar ERR_OUT_OF_RANGE = function (str, range, received) {\n return new Error(\"The value of \\\"\" + str + \" is out of range. It must be \" + range + \". Received \" + received);\n};\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/validators.js#L127-L130\nfunction validateNumber(value, name) {\n if (typeof value !== 'number')\n throw ERR_INVALID_ARG_TYPE(name, 'number', value);\n}\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/buffer.js#L68-L80\nfunction boundsError(value, length) {\n if (Math.floor(value) !== value) {\n validateNumber(value, 'offset');\n throw ERR_OUT_OF_RANGE('offset', 'an integer', value);\n }\n if (length < 0)\n throw ERR_BUFFER_OUT_OF_BOUNDS();\n throw ERR_OUT_OF_RANGE('offset', \">= 0 and <= \" + length, value);\n}\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/buffer.js#L129-L145\nfunction readBigInt64LE(buffer, offset) {\n if (offset === void 0) { offset = 0; }\n validateNumber(offset, 'offset');\n var first = buffer[offset];\n var last = buffer[offset + 7];\n if (first === undefined || last === undefined)\n boundsError(offset, buffer.length - 8);\n // tslint:disable-next-line:no-bitwise\n var val = buffer[offset + 4] + buffer[offset + 5] * Math.pow(2, 8) + buffer[offset + 6] * Math.pow(2, 16) + (last << 24); // Overflow\n return ((BigInt(val) << BigInt(32)) + // tslint:disable-line:no-bitwise\n BigInt(first + buffer[++offset] * Math.pow(2, 8) + buffer[++offset] * Math.pow(2, 16) + buffer[++offset] * Math.pow(2, 24)));\n}\nexports.readBigInt64LE = readBigInt64LE;\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/buffer.js#L89-L107\nfunction readBigUInt64LE(buffer, offset) {\n if (offset === void 0) { offset = 0; }\n validateNumber(offset, 'offset');\n var first = buffer[offset];\n var last = buffer[offset + 7];\n if (first === undefined || last === undefined)\n boundsError(offset, buffer.length - 8);\n var lo = first + buffer[++offset] * Math.pow(2, 8) + buffer[++offset] * Math.pow(2, 16) + buffer[++offset] * Math.pow(2, 24);\n var hi = buffer[++offset] + buffer[++offset] * Math.pow(2, 8) + buffer[++offset] * Math.pow(2, 16) + last * Math.pow(2, 24);\n return BigInt(lo) + (BigInt(hi) << BigInt(32)); // tslint:disable-line:no-bitwise\n}\nexports.readBigUInt64LE = readBigUInt64LE;\n","\"use strict\";\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PythConnection = void 0;\nvar index_1 = require(\"./index\");\nvar ONES = '11111111111111111111111111111111';\n/**\n * Reads Pyth price data from a solana web3 connection. This class uses a callback-driven model,\n * similar to the solana web3 methods for tracking updates to accounts.\n */\nvar PythConnection = /** @class */ (function () {\n /** Create a PythConnection that reads its data from an underlying solana web3 connection.\n * pythProgramKey is the public key of the Pyth program running on the chosen solana cluster.\n */\n function PythConnection(connection, pythProgramKey, commitment) {\n if (commitment === void 0) { commitment = 'finalized'; }\n this.productAccountKeyToProduct = {};\n this.priceAccountKeyToProductAccountKey = {};\n this.callbacks = [];\n this.connection = connection;\n this.pythProgramKey = pythProgramKey;\n this.commitment = commitment;\n }\n PythConnection.prototype.handleProductAccount = function (key, account, slot) {\n var productData = index_1.parseProductData(account.data);\n this.productAccountKeyToProduct[key.toString()] = {\n key: key,\n slot: slot,\n accountInfo: __assign(__assign({}, account), { data: productData }),\n };\n if (productData.priceAccountKey.toString() !== ONES) {\n this.priceAccountKeyToProductAccountKey[productData.priceAccountKey.toString()] = key.toString();\n }\n };\n PythConnection.prototype.handlePriceAccount = function (key, account, slot) {\n var productUpdate = this.productAccountKeyToProduct[this.priceAccountKeyToProductAccountKey[key.toString()]];\n if (productUpdate === undefined) {\n // This shouldn't happen since we're subscribed to all of the program's accounts,\n // but let's be good defensive programmers.\n throw new Error('Got a price update for an unknown product. This is a bug in the library, please report it to the developers.');\n }\n var priceData = index_1.parsePriceData(account.data, slot);\n var priceUpdate = {\n key: key,\n slot: slot,\n accountInfo: __assign(__assign({}, account), { data: priceData }),\n };\n for (var _i = 0, _a = this.callbacks; _i < _a.length; _i++) {\n var callback = _a[_i];\n callback(productUpdate, priceUpdate);\n }\n };\n PythConnection.prototype.handleAccount = function (key, account, productOnly, slot) {\n var base = index_1.parseBaseData(account.data);\n // The pyth program owns accounts that don't contain pyth data, which we can safely ignore.\n if (base) {\n switch (base.type) {\n case index_1.AccountType.Mapping:\n // We can skip these because we're going to get every account owned by this program anyway.\n break;\n case index_1.AccountType.Product:\n this.handleProductAccount(key, account, slot);\n break;\n case index_1.AccountType.Price:\n if (!productOnly) {\n this.handlePriceAccount(key, account, slot);\n }\n break;\n case index_1.AccountType.Test:\n break;\n default:\n throw new Error(\"Unknown account type: \" + base.type + \". Try upgrading pyth-client.\");\n }\n }\n };\n /** Start receiving price updates. Once this method is called, any registered callbacks will be invoked\n * each time a Pyth price account is updated.\n */\n PythConnection.prototype.start = function () {\n return __awaiter(this, void 0, void 0, function () {\n var accounts, currentSlot, _i, accounts_1, account;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.connection.getProgramAccounts(this.pythProgramKey, this.commitment)];\n case 1:\n accounts = _a.sent();\n return [4 /*yield*/, this.connection.getSlot(this.commitment)];\n case 2:\n currentSlot = _a.sent();\n for (_i = 0, accounts_1 = accounts; _i < accounts_1.length; _i++) {\n account = accounts_1[_i];\n this.handleAccount(account.pubkey, account.account, true, currentSlot);\n }\n this.connection.onProgramAccountChange(this.pythProgramKey, function (keyedAccountInfo, context) {\n _this.handleAccount(keyedAccountInfo.accountId, keyedAccountInfo.accountInfo, false, context.slot);\n }, this.commitment);\n return [2 /*return*/];\n }\n });\n });\n };\n /** Register callback to receive price updates. */\n PythConnection.prototype.onPriceChange = function (callback) {\n this.callbacks.push(function (product, price) { return callback(product.accountInfo.data.product, price.accountInfo.data); });\n };\n /** Register a verbose callback to receive price updates. */\n PythConnection.prototype.onPriceChangeVerbose = function (callback) {\n this.callbacks.push(callback);\n };\n /** Stop receiving price updates. Note that this also currently deletes all registered callbacks. */\n PythConnection.prototype.stop = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n // There's no way to actually turn off the solana web3 subscription x_x, but there should be.\n // Leave this method in so we don't have to update our API when solana fixes theirs.\n // In the interim, delete callbacks.\n this.callbacks = [];\n return [2 /*return*/];\n });\n });\n };\n return PythConnection;\n}());\nexports.PythConnection = PythConnection;\n","\"use strict\";\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.PythHttpClient = void 0;\nvar _1 = require(\".\");\n/**\n * Reads Pyth price data from a solana web3 connection. This class uses a single HTTP call.\n * Use the method getData() to get updated prices values.\n */\nvar PythHttpClient = /** @class */ (function () {\n function PythHttpClient(connection, pythProgramKey, commitment) {\n if (commitment === void 0) { commitment = 'finalized'; }\n this.connection = connection;\n this.pythProgramKey = pythProgramKey;\n this.commitment = commitment;\n }\n /*\n * Get Pyth Network account information and return actual price state.\n * The result contains lists of asset types, product symbols and their prices.\n */\n PythHttpClient.prototype.getData = function () {\n return __awaiter(this, void 0, void 0, function () {\n var assetTypes, productSymbols, products, productFromSymbol, productPrice, prices, accountList, priceDataQueue, productAccountKeyToProduct, currentSlot, result;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n assetTypes = new Set();\n productSymbols = new Set();\n products = new Set();\n productFromSymbol = new Map();\n productPrice = new Map();\n prices = new Array();\n return [4 /*yield*/, this.connection.getProgramAccounts(this.pythProgramKey, this.commitment)\n // Populate products and prices\n ];\n case 1:\n accountList = _a.sent();\n priceDataQueue = new Array();\n productAccountKeyToProduct = new Map();\n return [4 /*yield*/, this.connection.getSlot(this.commitment)];\n case 2:\n currentSlot = _a.sent();\n accountList.forEach(function (singleAccount) {\n var base = _1.parseBaseData(singleAccount.account.data);\n if (base) {\n switch (base.type) {\n case _1.AccountType.Mapping:\n // We can skip these because we're going to get every account owned by this program anyway.\n break;\n case _1.AccountType.Product:\n var productData = _1.parseProductData(singleAccount.account.data);\n productAccountKeyToProduct.set(singleAccount.pubkey.toBase58(), productData.product);\n assetTypes.add(productData.product.asset_type);\n productSymbols.add(productData.product.symbol);\n products.add(productData.product);\n productFromSymbol.set(productData.product.symbol, productData.product);\n break;\n case _1.AccountType.Price:\n var priceData = _1.parsePriceData(singleAccount.account.data, currentSlot);\n priceDataQueue.push(priceData);\n break;\n case _1.AccountType.Test:\n break;\n default:\n throw new Error(\"Unknown account type: \" + base.type + \". Try upgrading pyth-client.\");\n }\n }\n });\n priceDataQueue.forEach(function (priceData) {\n var product = productAccountKeyToProduct.get(priceData.productAccountKey.toBase58());\n if (product) {\n productPrice.set(product.symbol, priceData);\n prices.push(priceData);\n }\n });\n result = {\n assetTypes: Array.from(assetTypes),\n symbols: Array.from(productSymbols),\n products: Array.from(products),\n productFromSymbol: productFromSymbol,\n productPrice: productPrice,\n prices: prices,\n };\n return [2 /*return*/, result];\n }\n });\n });\n };\n return PythHttpClient;\n}());\nexports.PythHttpClient = PythHttpClient;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPythClusterApiUrl = exports.getPythProgramKeyForCluster = void 0;\nvar web3_js_1 = require(\"@solana/web3.js\");\n/** Mapping from solana clusters to the public key of the pyth program. */\nvar clusterToPythProgramKey = {\n 'mainnet-beta': 'FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH',\n devnet: 'gSbePebfvPy7tRqimPoVecS2UsBvYv46ynrzWocc92s',\n testnet: '8tfDNiaEyrV6Q1U4DEXrEigs9DoDtkugzFbybENEbCDz',\n pythtest: '8tfDNiaEyrV6Q1U4DEXrEigs9DoDtkugzFbybENEbCDz',\n pythnet: 'FsJ3A3u2vn5cTVofAjvy6y5kwABJAqYWpe4975bi2epH',\n};\n/** Gets the public key of the Pyth program running on the given cluster. */\nfunction getPythProgramKeyForCluster(cluster) {\n if (clusterToPythProgramKey[cluster] !== undefined) {\n return new web3_js_1.PublicKey(clusterToPythProgramKey[cluster]);\n }\n else {\n throw new Error(\"Invalid Solana cluster name: \" + cluster + \". Valid options are: \" + JSON.stringify(Object.keys(clusterToPythProgramKey)));\n }\n}\nexports.getPythProgramKeyForCluster = getPythProgramKeyForCluster;\n/** Retrieves the RPC API URL for the specified Pyth cluster */\nfunction getPythClusterApiUrl(cluster) {\n // TODO: Add pythnet when it's ready\n if (cluster === 'pythtest') {\n return 'https://api.pythtest.pyth.network';\n }\n else if (cluster === 'pythnet') {\n return 'https://pythnet.rpcpool.com';\n }\n else {\n return web3_js_1.clusterApiUrl(cluster);\n }\n}\nexports.getPythClusterApiUrl = getPythClusterApiUrl;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.getPythProgramKeyForCluster = exports.PythHttpClient = exports.PythConnection = exports.parsePriceData = exports.parseProductData = exports.parseMappingData = exports.parseBaseData = exports.AccountType = exports.DeriveType = exports.PriceType = exports.CorpAction = exports.PriceStatus = exports.MAX_SLOT_DIFFERENCE = exports.Version = exports.Version2 = exports.Magic = void 0;\nvar web3_js_1 = require(\"@solana/web3.js\");\nvar buffer_1 = require(\"buffer\");\nvar readBig_1 = require(\"./readBig\");\n/** Constants. This section must be kept in sync with the on-chain program. */\nexports.Magic = 0xa1b2c3d4;\nexports.Version2 = 2;\nexports.Version = exports.Version2;\n/** Number of slots that can pass before a publisher's price is no longer included in the aggregate. */\nexports.MAX_SLOT_DIFFERENCE = 25;\nvar PriceStatus;\n(function (PriceStatus) {\n PriceStatus[PriceStatus[\"Unknown\"] = 0] = \"Unknown\";\n PriceStatus[PriceStatus[\"Trading\"] = 1] = \"Trading\";\n PriceStatus[PriceStatus[\"Halted\"] = 2] = \"Halted\";\n PriceStatus[PriceStatus[\"Auction\"] = 3] = \"Auction\";\n})(PriceStatus = exports.PriceStatus || (exports.PriceStatus = {}));\nvar CorpAction;\n(function (CorpAction) {\n CorpAction[CorpAction[\"NoCorpAct\"] = 0] = \"NoCorpAct\";\n})(CorpAction = exports.CorpAction || (exports.CorpAction = {}));\nvar PriceType;\n(function (PriceType) {\n PriceType[PriceType[\"Unknown\"] = 0] = \"Unknown\";\n PriceType[PriceType[\"Price\"] = 1] = \"Price\";\n})(PriceType = exports.PriceType || (exports.PriceType = {}));\nvar DeriveType;\n(function (DeriveType) {\n DeriveType[DeriveType[\"Unknown\"] = 0] = \"Unknown\";\n DeriveType[DeriveType[\"Volatility\"] = 1] = \"Volatility\";\n})(DeriveType = exports.DeriveType || (exports.DeriveType = {}));\nvar AccountType;\n(function (AccountType) {\n AccountType[AccountType[\"Unknown\"] = 0] = \"Unknown\";\n AccountType[AccountType[\"Mapping\"] = 1] = \"Mapping\";\n AccountType[AccountType[\"Product\"] = 2] = \"Product\";\n AccountType[AccountType[\"Price\"] = 3] = \"Price\";\n AccountType[AccountType[\"Test\"] = 4] = \"Test\";\n})(AccountType = exports.AccountType || (exports.AccountType = {}));\nvar empty32Buffer = buffer_1.Buffer.alloc(32);\nvar PKorNull = function (data) { return (data.equals(empty32Buffer) ? null : new web3_js_1.PublicKey(data)); };\n/** Parse data as a generic Pyth account. Use this method if you don't know the account type. */\nfunction parseBaseData(data) {\n // data is too short to have the magic number.\n if (data.byteLength < 4) {\n return undefined;\n }\n var magic = data.readUInt32LE(0);\n if (magic === exports.Magic) {\n // program version\n var version = data.readUInt32LE(4);\n // account type\n var type = data.readUInt32LE(8);\n // account used size\n var size = data.readUInt32LE(12);\n return { magic: magic, version: version, type: type, size: size };\n }\n else {\n return undefined;\n }\n}\nexports.parseBaseData = parseBaseData;\nvar parseMappingData = function (data) {\n // pyth magic number\n var magic = data.readUInt32LE(0);\n // program version\n var version = data.readUInt32LE(4);\n // account type\n var type = data.readUInt32LE(8);\n // account used size\n var size = data.readUInt32LE(12);\n // number of product accounts\n var numProducts = data.readUInt32LE(16);\n // unused\n // const unused = accountInfo.data.readUInt32LE(20)\n // next mapping account (if any)\n var nextMappingAccount = PKorNull(data.slice(24, 56));\n // read each symbol account\n var offset = 56;\n var productAccountKeys = [];\n for (var i = 0; i < numProducts; i++) {\n var productAccountBytes = data.slice(offset, offset + 32);\n var productAccountKey = new web3_js_1.PublicKey(productAccountBytes);\n offset += 32;\n productAccountKeys.push(productAccountKey);\n }\n return {\n magic: magic,\n version: version,\n type: type,\n size: size,\n nextMappingAccount: nextMappingAccount,\n productAccountKeys: productAccountKeys,\n };\n};\nexports.parseMappingData = parseMappingData;\nvar parseProductData = function (data) {\n // pyth magic number\n var magic = data.readUInt32LE(0);\n // program version\n var version = data.readUInt32LE(4);\n // account type\n var type = data.readUInt32LE(8);\n // price account size\n var size = data.readUInt32LE(12);\n // first price account in list\n var priceAccountBytes = data.slice(16, 48);\n var priceAccountKey = new web3_js_1.PublicKey(priceAccountBytes);\n var product = {};\n product.price_account = priceAccountKey.toBase58();\n var idx = 48;\n while (idx < size) {\n var keyLength = data[idx];\n idx++;\n if (keyLength) {\n var key = data.slice(idx, idx + keyLength).toString();\n idx += keyLength;\n var valueLength = data[idx];\n idx++;\n var value = data.slice(idx, idx + valueLength).toString();\n idx += valueLength;\n product[key] = value;\n }\n }\n return { magic: magic, version: version, type: type, size: size, priceAccountKey: priceAccountKey, product: product };\n};\nexports.parseProductData = parseProductData;\nvar parseEma = function (data, exponent) {\n // current value of ema\n var valueComponent = readBig_1.readBigInt64LE(data, 0);\n var value = Number(valueComponent) * Math.pow(10, exponent);\n // numerator state for next update\n var numerator = readBig_1.readBigInt64LE(data, 8);\n // denominator state for next update\n var denominator = readBig_1.readBigInt64LE(data, 16);\n return { valueComponent: valueComponent, value: value, numerator: numerator, denominator: denominator };\n};\nvar parsePriceInfo = function (data, exponent) {\n // aggregate price\n var priceComponent = readBig_1.readBigInt64LE(data, 0);\n var price = Number(priceComponent) * Math.pow(10, exponent);\n // aggregate confidence\n var confidenceComponent = readBig_1.readBigUInt64LE(data, 8);\n var confidence = Number(confidenceComponent) * Math.pow(10, exponent);\n // aggregate status\n var status = data.readUInt32LE(16);\n // aggregate corporate action\n var corporateAction = data.readUInt32LE(20);\n // aggregate publish slot. It is converted to number to be consistent with Solana's library interface (Slot there is number)\n var publishSlot = Number(readBig_1.readBigUInt64LE(data, 24));\n return {\n priceComponent: priceComponent,\n price: price,\n confidenceComponent: confidenceComponent,\n confidence: confidence,\n status: status,\n corporateAction: corporateAction,\n publishSlot: publishSlot,\n };\n};\n// Provide currentSlot when available to allow status to consider the case when price goes stale. It is optional because\n// it requires an extra request to get it when it is not available which is not always efficient.\nvar parsePriceData = function (data, currentSlot) {\n // pyth magic number\n var magic = data.readUInt32LE(0);\n // program version\n var version = data.readUInt32LE(4);\n // account type\n var type = data.readUInt32LE(8);\n // price account size\n var size = data.readUInt32LE(12);\n // price or calculation type\n var priceType = data.readUInt32LE(16);\n // price exponent\n var exponent = data.readInt32LE(20);\n // number of component prices\n var numComponentPrices = data.readUInt32LE(24);\n // number of quoters that make up aggregate\n var numQuoters = data.readUInt32LE(28);\n // slot of last valid (not unknown) aggregate price\n var lastSlot = readBig_1.readBigUInt64LE(data, 32);\n // valid on-chain slot of aggregate price\n var validSlot = readBig_1.readBigUInt64LE(data, 40);\n // exponential moving average price\n var emaPrice = parseEma(data.slice(48, 72), exponent);\n // exponential moving average confidence interval\n var emaConfidence = parseEma(data.slice(72, 96), exponent);\n // timestamp of the current price\n var timestamp = readBig_1.readBigInt64LE(data, 96);\n // minimum number of publishers for status to be TRADING\n var minPublishers = data.readUInt8(104);\n // space for future derived values\n var drv2 = data.readInt8(105);\n // space for future derived values\n var drv3 = data.readInt16LE(106);\n // space for future derived values\n var drv4 = data.readInt32LE(108);\n // product id / reference account\n var productAccountKey = new web3_js_1.PublicKey(data.slice(112, 144));\n // next price account in list\n var nextPriceAccountKey = PKorNull(data.slice(144, 176));\n // valid slot of previous update\n var previousSlot = readBig_1.readBigUInt64LE(data, 176);\n // aggregate price of previous update\n var previousPriceComponent = readBig_1.readBigInt64LE(data, 184);\n var previousPrice = Number(previousPriceComponent) * Math.pow(10, exponent);\n // confidence interval of previous update\n var previousConfidenceComponent = readBig_1.readBigUInt64LE(data, 192);\n var previousConfidence = Number(previousConfidenceComponent) * Math.pow(10, exponent);\n // space for future derived values\n var previousTimestamp = readBig_1.readBigInt64LE(data, 200);\n var aggregate = parsePriceInfo(data.slice(208, 240), exponent);\n var status = aggregate.status;\n if (currentSlot && status === PriceStatus.Trading) {\n if (currentSlot - aggregate.publishSlot > exports.MAX_SLOT_DIFFERENCE) {\n status = PriceStatus.Unknown;\n }\n }\n var price;\n var confidence;\n if (status === PriceStatus.Trading) {\n price = aggregate.price;\n confidence = aggregate.confidence;\n }\n // price components - up to 32\n var priceComponents = [];\n var offset = 240;\n var shouldContinue = true;\n while (offset < data.length && shouldContinue) {\n var publisher = PKorNull(data.slice(offset, offset + 32));\n offset += 32;\n if (publisher) {\n var componentAggregate = parsePriceInfo(data.slice(offset, offset + 32), exponent);\n offset += 32;\n var latest = parsePriceInfo(data.slice(offset, offset + 32), exponent);\n offset += 32;\n priceComponents.push({ publisher: publisher, aggregate: componentAggregate, latest: latest });\n }\n else {\n shouldContinue = false;\n }\n }\n return {\n magic: magic,\n version: version,\n type: type,\n size: size,\n priceType: priceType,\n exponent: exponent,\n numComponentPrices: numComponentPrices,\n numQuoters: numQuoters,\n lastSlot: lastSlot,\n validSlot: validSlot,\n emaPrice: emaPrice,\n emaConfidence: emaConfidence,\n timestamp: timestamp,\n minPublishers: minPublishers,\n drv2: drv2,\n drv3: drv3,\n drv4: drv4,\n productAccountKey: productAccountKey,\n nextPriceAccountKey: nextPriceAccountKey,\n previousSlot: previousSlot,\n previousPriceComponent: previousPriceComponent,\n previousPrice: previousPrice,\n previousConfidenceComponent: previousConfidenceComponent,\n previousConfidence: previousConfidence,\n previousTimestamp: previousTimestamp,\n aggregate: aggregate,\n priceComponents: priceComponents,\n price: price,\n confidence: confidence,\n status: status,\n };\n};\nexports.parsePriceData = parsePriceData;\nvar PythConnection_1 = require(\"./PythConnection\");\nObject.defineProperty(exports, \"PythConnection\", { enumerable: true, get: function () { return PythConnection_1.PythConnection; } });\nvar PythHttpClient_1 = require(\"./PythHttpClient\");\nObject.defineProperty(exports, \"PythHttpClient\", { enumerable: true, get: function () { return PythHttpClient_1.PythHttpClient; } });\nvar cluster_1 = require(\"./cluster\");\nObject.defineProperty(exports, \"getPythProgramKeyForCluster\", { enumerable: true, get: function () { return cluster_1.getPythProgramKeyForCluster; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.readBigUInt64LE = exports.readBigInt64LE = void 0;\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/errors.js#L758\nvar ERR_BUFFER_OUT_OF_BOUNDS = function () { return new Error('Attempt to access memory outside buffer bounds'); };\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/errors.js#L968\nvar ERR_INVALID_ARG_TYPE = function (name, expected, actual) {\n return new Error(\"The \\\"\" + name + \"\\\" argument must be of type \" + expected + \". Received \" + actual);\n};\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/errors.js#L1262\nvar ERR_OUT_OF_RANGE = function (str, range, received) {\n return new Error(\"The value of \\\"\" + str + \" is out of range. It must be \" + range + \". Received \" + received);\n};\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/validators.js#L127-L130\nfunction validateNumber(value, name) {\n if (typeof value !== 'number')\n throw ERR_INVALID_ARG_TYPE(name, 'number', value);\n}\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/buffer.js#L68-L80\nfunction boundsError(value, length) {\n if (Math.floor(value) !== value) {\n validateNumber(value, 'offset');\n throw ERR_OUT_OF_RANGE('offset', 'an integer', value);\n }\n if (length < 0)\n throw ERR_BUFFER_OUT_OF_BOUNDS();\n throw ERR_OUT_OF_RANGE('offset', \">= 0 and <= \" + length, value);\n}\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/buffer.js#L129-L145\nfunction readBigInt64LE(buffer, offset) {\n if (offset === void 0) { offset = 0; }\n validateNumber(offset, 'offset');\n var first = buffer[offset];\n var last = buffer[offset + 7];\n if (first === undefined || last === undefined)\n boundsError(offset, buffer.length - 8);\n // tslint:disable-next-line:no-bitwise\n var val = buffer[offset + 4] + buffer[offset + 5] * Math.pow(2, 8) + buffer[offset + 6] * Math.pow(2, 16) + (last << 24); // Overflow\n return ((BigInt(val) << BigInt(32)) + // tslint:disable-line:no-bitwise\n BigInt(first + buffer[++offset] * Math.pow(2, 8) + buffer[++offset] * Math.pow(2, 16) + buffer[++offset] * Math.pow(2, 24)));\n}\nexports.readBigInt64LE = readBigInt64LE;\n// https://github.com/nodejs/node/blob/v14.17.0/lib/internal/buffer.js#L89-L107\nfunction readBigUInt64LE(buffer, offset) {\n if (offset === void 0) { offset = 0; }\n validateNumber(offset, 'offset');\n var first = buffer[offset];\n var last = buffer[offset + 7];\n if (first === undefined || last === undefined)\n boundsError(offset, buffer.length - 8);\n var lo = first + buffer[++offset] * Math.pow(2, 8) + buffer[++offset] * Math.pow(2, 16) + buffer[++offset] * Math.pow(2, 24);\n var hi = buffer[++offset] + buffer[++offset] * Math.pow(2, 8) + buffer[++offset] * Math.pow(2, 16) + last * Math.pow(2, 24);\n return BigInt(lo) + (BigInt(hi) << BigInt(32)); // tslint:disable-line:no-bitwise\n}\nexports.readBigUInt64LE = readBigUInt64LE;\n","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"rive\"] = factory();\n\telse\n\t\troot[\"rive\"] = factory();\n})(this, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \t\"use strict\";\n/******/ \tvar __webpack_modules__ = ([\n/* 0 */,\n/* 1 */\n/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n\nvar Rive = (() => {\n var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;\n \n return (\nfunction(Rive) {\n Rive = Rive || {};\n\n\nnull;var m;m||(m=typeof Rive !== 'undefined' ? Rive : {});var aa,ba;m.ready=new Promise(function(b,a){aa=b;ba=a});\nfunction ca(){function b(h){const g=d;c=a=0;d=new Map;g.forEach(l=>{try{l(h)}catch(k){console.error(k)}});this.La();e&&e.fb()}let a=0,c=0,d=new Map,e=null,f=null;this.requestAnimationFrame=function(h){a||(a=requestAnimationFrame(b.bind(this)));const g=++c;d.set(g,h);return g};this.cancelAnimationFrame=function(h){d.delete(h);a&&0==d.size&&(cancelAnimationFrame(a),a=0)};this.cb=function(h){f&&(document.body.remove(f),f=null);h||(f=document.createElement(\"div\"),f.style.backgroundColor=\"black\",f.style.position=\n\"fixed\",f.style.right=0,f.style.top=0,f.style.color=\"white\",f.style.padding=\"4px\",f.innerHTML=\"RIVE FPS\",h=function(g){f.innerHTML=\"RIVE FPS \"+g.toFixed(1)},document.body.appendChild(f));e=new function(){let g=0,l=0;this.fb=function(){var k=performance.now();l?(++g,k-=l,1E3>b;a.has(d)&&clearTimeout(a.get(d));a.set(d,setTimeout(function(){a.delete(d);0==a.length?c=-Infinity:d==c&&(c=Math.max(...a.keys()),console.assert(cda.Oa-z.Oa);w=p.push(C);h!=w&&(a.bufferData(a.ARRAY_BUFFER,8*w,a.DYNAMIC_DRAW),h=w);w=0;for(var G of q)a.bufferSubData(a.ARRAY_BUFFER,w,G.Aa),w+=4*G.Aa.length;console.assert(w==4*C);for(var N of q)a.bufferSubData(a.ARRAY_BUFFER,w,N.Ra),w+=4*N.Ra.length;console.assert(w==8*C);w=r.push(F);g!=w&&(a.bufferData(a.ELEMENT_ARRAY_BUFFER,2*w,a.DYNAMIC_DRAW),g=w);G=0;for(var X of q)a.bufferSubData(a.ELEMENT_ARRAY_BUFFER,\nG,X.indices),G+=2*X.indices.length;console.assert(G==2*F);X=0;N=!0;w=G=0;for(const z of q){z.image.va!=X&&(a.bindTexture(a.TEXTURE_2D,z.image.Va||null),X=z.image.va);z.rb?(a.scissor(z.Ea,A-z.Fa-z.Ka,z.yb,z.Ka),N=!0):N&&(a.scissor(0,A-v,u,v),N=!1);q=2/u;const da=-2/v;a.uniform4f(e,z.la[0]*q*z.ra,z.la[1]*da*z.sa,z.la[2]*q*z.ra,z.la[3]*da*z.sa);a.uniform2f(f,z.la[4]*q*z.ra+q*(z.Ea-z.pb*z.ra)-1,z.la[5]*da*z.sa+da*(z.Fa-z.qb*z.sa)+1);a.vertexAttribPointer(0,2,a.FLOAT,!1,0,w);a.vertexAttribPointer(1,2,\na.FLOAT,!1,0,w+4*C);a.drawElements(a.TRIANGLES,z.indices.length,a.UNSIGNED_SHORT,G);w+=4*z.Aa.length;G+=2*z.indices.length}console.assert(w==4*C);console.assert(G==2*F)}};this.canvas=function(){return b()&&a.canvas}};\nRive.onRuntimeInitialized=function(){function b(n){switch(n){case k.srcOver:return\"source-over\";case k.screen:return\"screen\";case k.overlay:return\"overlay\";case k.darken:return\"darken\";case k.lighten:return\"lighten\";case k.colorDodge:return\"color-dodge\";case k.colorBurn:return\"color-burn\";case k.hardLight:return\"hard-light\";case k.softLight:return\"soft-light\";case k.difference:return\"difference\";case k.exclusion:return\"exclusion\";case k.multiply:return\"multiply\";case k.hue:return\"hue\";case k.saturation:return\"saturation\";\ncase k.color:return\"color\";case k.luminosity:return\"luminosity\"}}function a(n){return\"rgba(\"+((16711680&n)>>>16)+\",\"+((65280&n)>>>8)+\",\"+((255&n)>>>0)+\",\"+((4278190080&n)>>>24)/255+\")\"}function c(){0n)throw\"restore() called without matching save().\";this.fa.splice(n);this.da.push(this.Z.restore.bind(this.Z))},\ntransform:function(n){const t=this.fa,y=t.length-6;t.splice(y,6,t[y]*n.xx+t[y+2]*n.xy,t[y+1]*n.xx+t[y+3]*n.xy,t[y]*n.yx+t[y+2]*n.yy,t[y+1]*n.yx+t[y+3]*n.yy,t[y]*n.tx+t[y+2]*n.ty+t[y+4],t[y+1]*n.tx+t[y+3]*n.ty+t[y+5]);this.da.push(this.Z.transform.bind(this.Z,n.xx,n.xy,n.yx,n.yy,n.tx,n.ty))},rotate:function(n){const t=Math.sin(n);n=Math.cos(n);this.transform({xx:n,xy:t,yx:-t,yy:n,tx:0,ty:0})},_drawPath:function(n,t){this.da.push(t.draw.bind(t,this.Z,n.ga,n.Ca===u?\"evenodd\":\"nonzero\"))},_drawImage:function(n,\nt,y){var D=n.Ta;if(D){var B=this.Z,I=b(t);this.da.push(function(){B.globalCompositeOperation=I;B.globalAlpha=y;B.drawImage(D,0,0);B.globalAlpha=1})}},_getMatrix:function(n){const t=this.fa,y=t.length-6;for(let D=0;6>D;++D)n[D]=t[y+D]},_drawImageMesh:function(n,t,y,D,B,I,L,R,T,S){var U=this.Z.canvas.width,H=this.Z.canvas.height;const pb=T-L,qb=S-R;L=Math.max(L,0);R=Math.max(R,0);T=Math.min(T,U);S=Math.min(S,H);const sa=T-L,ta=S-R;console.assert(sa<=Math.min(pb,U));console.assert(ta<=Math.min(qb,H));\nif(!(0>=sa||0>=ta)){T=saH&&(S*=H/ia,ia=H);ja>H&&(U*=H/ja,ja=H);A||(A=new m.DynamicRectanizer(H),A.reset(512,512));H=A.addRect(ia,ja);0>H&&(c(),w.add(this),H=A.addRect(ia,ja),console.assert(0<=H));var rb=H&65535,sb=H>>16;G.push({la:this.fa.slice(this.fa.length-6),image:n,Ea:rb,Fa:sb,pb:L,qb:R,yb:ia,Ka:ja,ra:S,sa:U,Aa:new Float32Array(D),Ra:new Float32Array(B),indices:new Uint16Array(I),rb:T,Oa:n.va<<1|(T?1:0)});N+=D.length;X+=\nI.length;var na=this.Z,Yb=b(t);this.da.push(function(){na.save();na.resetTransform();na.globalCompositeOperation=Yb;na.globalAlpha=y;na.drawImage(fa.canvas(),rb,sb,ia,ja,L,R,sa,ta);na.restore()})}},_clipPath:function(n){this.da.push(this.Z.clip.bind(this.Z,n.ga,n.Ca===u?\"evenodd\":\"nonzero\"))},clear:function(){w.add(this);this.da.push(this.Z.clearRect.bind(this.Z,0,0,this.Ba.width,this.Ba.height))},flush:function(){},translate:function(n,t){this.transform({xx:1,xy:0,yx:0,yy:1,tx:n,ty:t})}});Rive.makeRenderer=\nfunction(n){return new z(n)};Rive.renderFactory={makeRenderPaint:function(){return new F},makeRenderPath:function(){return new C},makeRenderImage:function(){return new q}};let da=Rive.load,Xa=null;Rive.load=function(n){return new Promise(function(t){let y=null;Xa={total:0,loaded:0,ready:function(){t(y)}};y=da(n);0==Xa.total&&t(y)})};d=new ca;Rive.requestAnimationFrame=d.requestAnimationFrame.bind(d);Rive.cancelAnimationFrame=d.cancelAnimationFrame.bind(d);Rive.enableFPSCounter=d.cb.bind(d);Rive.disableFPSCounter=\nd.$a;d.La=c;Rive.cleanup=function(){A&&A.delete()}};var ha=Object.assign({},m),ka=\"object\"==typeof window,la=\"function\"==typeof importScripts,x=\"\",ma,oa;\nif(ka||la)la?x=self.location.href:\"undefined\"!=typeof document&&document.currentScript&&(x=document.currentScript.src),_scriptDir&&(x=_scriptDir),0!==x.indexOf(\"blob:\")?x=x.substr(0,x.replace(/[?#].*/,\"\").lastIndexOf(\"/\")+1):x=\"\",la&&(oa=b=>{var a=new XMLHttpRequest;a.open(\"GET\",b,!1);a.responseType=\"arraybuffer\";a.send(null);return new Uint8Array(a.response)}),ma=(b,a,c)=>{var d=new XMLHttpRequest;d.open(\"GET\",b,!0);d.responseType=\"arraybuffer\";d.onload=()=>{200==d.status||0==d.status&&d.response?\na(d.response):c()};d.onerror=c;d.send(null)};var pa=m.print||console.log.bind(console),qa=m.printErr||console.warn.bind(console);Object.assign(m,ha);ha=null;var ra;m.wasmBinary&&(ra=m.wasmBinary);var noExitRuntime=m.noExitRuntime||!0;\"object\"!=typeof WebAssembly&&ua(\"no native wasm support detected\");var va,wa=!1,xa=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf8\"):void 0;\nfunction ya(b,a,c){var d=a+c;for(c=a;b[c]&&!(c>=d);)++c;if(16e?d+=String.fromCharCode(e):(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023))}}else d+=String.fromCharCode(e)}return d}var za,Aa,E,Ba,Ca,Da,J,Ea,Fa;\nfunction Ga(){var b=va.buffer;za=b;m.HEAP8=Aa=new Int8Array(b);m.HEAP16=Ba=new Int16Array(b);m.HEAP32=Da=new Int32Array(b);m.HEAPU8=E=new Uint8Array(b);m.HEAPU16=Ca=new Uint16Array(b);m.HEAPU32=J=new Uint32Array(b);m.HEAPF32=Ea=new Float32Array(b);m.HEAPF64=Fa=new Float64Array(b)}var Ha,Ia=[],Ja=[],Ka=[];function La(){var b=m.preRun.shift();Ia.unshift(b)}var Ma=0,Na=null,Oa=null;\nfunction ua(b){if(m.onAbort)m.onAbort(b);b=\"Aborted(\"+b+\")\";qa(b);wa=!0;b=new WebAssembly.RuntimeError(b+\". Build with -sASSERTIONS for more info.\");ba(b);throw b;}function Pa(){return K.startsWith(\"data:application/octet-stream;base64,\")}var K;K=\"canvas_advanced.wasm\";if(!Pa()){var Qa=K;K=m.locateFile?m.locateFile(Qa,x):x+Qa}function Ra(){var b=K;try{if(b==K&&ra)return new Uint8Array(ra);if(oa)return oa(b);throw\"both async and sync fetching of the wasm failed\";}catch(a){ua(a)}}\nfunction Sa(){if(!ra&&(ka||la)){if(\"function\"==typeof fetch&&!K.startsWith(\"file://\"))return fetch(K,{credentials:\"same-origin\"}).then(function(b){if(!b.ok)throw\"failed to load wasm binary file at '\"+K+\"'\";return b.arrayBuffer()}).catch(function(){return Ra()});if(ma)return new Promise(function(b,a){ma(K,function(c){b(new Uint8Array(c))},a)})}return Promise.resolve().then(function(){return Ra()})}function Ta(b){for(;0=a?\"_\"+b:b}function Va(b,a){b=Ua(b);return function(){null;return a.apply(this,arguments)}}var M=[{},{value:void 0},{value:null},{value:!0},{value:!1}],Wa=[];\nfunction Ya(b){var a=Error,c=Va(b,function(d){this.name=b;this.message=d;d=Error(d).stack;void 0!==d&&(this.stack=this.toString()+\"\\n\"+d.replace(/^Error(:[^\\n]*)?\\n/,\"\"))});c.prototype=Object.create(a.prototype);c.prototype.constructor=c;c.prototype.toString=function(){return void 0===this.message?this.name:this.name+\": \"+this.message};return c}var Za=void 0;function O(b){throw new Za(b);}\nvar $a=b=>{b||O(\"Cannot use deleted val. handle = \"+b);return M[b].value},P=b=>{switch(b){case void 0:return 1;case null:return 2;case !0:return 3;case !1:return 4;default:var a=Wa.length?Wa.pop():M.length;M[a]={ya:1,value:b};return a}},ab=void 0,bb=void 0;function Q(b){for(var a=\"\";E[b];)a+=bb[E[b++]];return a}var cb=[];function db(){for(;cb.length;){var b=cb.pop();b.U.ka=!1;b[\"delete\"]()}}var eb=void 0,V={};\nfunction fb(b,a){for(void 0===a&&O(\"ptr should not be undefined\");b.$;)a=b.na(a),b=b.$;return a}var gb={};function hb(b){b=ib(b);var a=Q(b);jb(b);return a}function kb(b,a){var c=gb[b];void 0===c&&O(a+\" has unknown type \"+hb(b));return c}function lb(){}var mb=!1;function nb(b){--b.count.value;0===b.count.value&&(b.aa?b.ca.ha(b.aa):b.X.V.ha(b.W))}function ob(b,a,c){if(a===c)return b;if(void 0===c.$)return null;b=ob(b,a,c.$);return null===b?null:c.ab(b)}var tb={};\nfunction ub(b,a){a=fb(b,a);return V[a]}var vb=void 0;function wb(b){throw new vb(b);}function xb(b,a){a.X&&a.W||wb(\"makeClassHandle requires ptr and ptrType\");!!a.ca!==!!a.aa&&wb(\"Both smartPtrType and smartPtr must be specified\");a.count={value:1};return yb(Object.create(b,{U:{value:a}}))}\nfunction yb(b){if(\"undefined\"===typeof FinalizationRegistry)return yb=a=>a,b;mb=new FinalizationRegistry(a=>{nb(a.U)});yb=a=>{var c=a.U;c.aa&&mb.register(a,{U:c},a);return a};lb=a=>{mb.unregister(a)};return yb(b)}var zb={};function Ab(b){for(;b.length;){var a=b.pop();b.pop()(a)}}function Bb(b){return this.fromWireType(Da[b>>2])}var Cb={},Db={};\nfunction W(b,a,c){function d(g){g=c(g);g.length!==b.length&&wb(\"Mismatched type converter count\");for(var l=0;l{gb.hasOwnProperty(g)?e[l]=gb[g]:(f.push(g),Cb.hasOwnProperty(g)||(Cb[g]=[]),Cb[g].push(()=>{e[l]=gb[g];++h;h===f.length&&d(e)}))});0===f.length&&d(e)}\nfunction Eb(b){switch(b){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(\"Unknown type size: \"+b);}}\nfunction Y(b,a,c={}){if(!(\"argPackAdvance\"in a))throw new TypeError(\"registerType registeredInstance requires argPackAdvance\");var d=a.name;b||O('type \"'+d+'\" must have a positive integer typeid pointer');if(gb.hasOwnProperty(b)){if(c.lb)return;O(\"Cannot register type '\"+d+\"' twice\")}gb[b]=a;delete Db[b];Cb.hasOwnProperty(b)&&(a=Cb[b],delete Cb[b],a.forEach(e=>e()))}function Fb(b){O(b.U.X.V.name+\" instance already deleted\")}function Gb(){}\nfunction Hb(b,a,c){if(void 0===b[a].Y){var d=b[a];b[a]=function(){b[a].Y.hasOwnProperty(arguments.length)||O(\"Function '\"+c+\"' called with an invalid number of arguments (\"+arguments.length+\") - expects one of (\"+b[a].Y+\")!\");return b[a].Y[arguments.length].apply(this,arguments)};b[a].Y=[];b[a].Y[d.ja]=d}}\nfunction Ib(b,a,c){m.hasOwnProperty(b)?((void 0===c||void 0!==m[b].Y&&void 0!==m[b].Y[c])&&O(\"Cannot register public name '\"+b+\"' twice\"),Hb(m,b,b),m.hasOwnProperty(c)&&O(\"Cannot register multiple overloads of a function with the same number of arguments (\"+c+\")!\"),m[b].Y[c]=a):(m[b]=a,void 0!==c&&(m[b].zb=c))}function Jb(b,a,c,d,e,f,h,g){this.name=b;this.constructor=a;this.ea=c;this.ha=d;this.$=e;this.gb=f;this.na=h;this.ab=g;this.Ma=[]}\nfunction Kb(b,a,c){for(;a!==c;)a.na||O(\"Expected null or instance of \"+c.name+\", got an instance of \"+a.name),b=a.na(b),a=a.$;return b}function Lb(b,a){if(null===a)return this.wa&&O(\"null is not a valid \"+this.name),0;a.U||O('Cannot pass \"'+Mb(a)+'\" as a '+this.name);a.U.W||O(\"Cannot pass deleted object as a pointer of type \"+this.name);return Kb(a.U.W,a.U.X.V,this.V)}\nfunction Nb(b,a){if(null===a){this.wa&&O(\"null is not a valid \"+this.name);if(this.qa){var c=this.xa();null!==b&&b.push(this.ha,c);return c}return 0}a.U||O('Cannot pass \"'+Mb(a)+'\" as a '+this.name);a.U.W||O(\"Cannot pass deleted object as a pointer of type \"+this.name);!this.pa&&a.U.X.pa&&O(\"Cannot convert argument of type \"+(a.U.ca?a.U.ca.name:a.U.X.name)+\" to parameter type \"+this.name);c=Kb(a.U.W,a.U.X.V,this.V);if(this.qa)switch(void 0===a.U.aa&&O(\"Passing raw pointer to smart pointer is illegal\"),\nthis.xb){case 0:a.U.ca===this?c=a.U.aa:O(\"Cannot convert argument of type \"+(a.U.ca?a.U.ca.name:a.U.X.name)+\" to parameter type \"+this.name);break;case 1:c=a.U.aa;break;case 2:if(a.U.ca===this)c=a.U.aa;else{var d=a.clone();c=this.tb(c,P(function(){d[\"delete\"]()}));null!==b&&b.push(this.ha,c)}break;default:O(\"Unsupporting sharing policy\")}return c}\nfunction Ob(b,a){if(null===a)return this.wa&&O(\"null is not a valid \"+this.name),0;a.U||O('Cannot pass \"'+Mb(a)+'\" as a '+this.name);a.U.W||O(\"Cannot pass deleted object as a pointer of type \"+this.name);a.U.X.pa&&O(\"Cannot convert argument of type \"+a.U.X.name+\" to parameter type \"+this.name);return Kb(a.U.W,a.U.X.V,this.V)}\nfunction Pb(b,a,c,d){this.name=b;this.V=a;this.wa=c;this.pa=d;this.qa=!1;this.ha=this.tb=this.xa=this.Na=this.xb=this.sb=void 0;void 0!==a.$?this.toWireType=Nb:(this.toWireType=d?Lb:Ob,this.ba=null)}function Qb(b,a,c){m.hasOwnProperty(b)||wb(\"Replacing nonexistant public symbol\");void 0!==m[b].Y&&void 0!==c?m[b].Y[c]=a:(m[b]=a,m[b].ja=c)}\nfunction Rb(b,a){var c=[];return function(){c.length=0;Object.assign(c,arguments);if(b.includes(\"j\")){var d=m[\"dynCall_\"+b];d=c&&c.length?d.apply(null,[a].concat(c)):d.call(null,a)}else d=Ha.get(a).apply(null,c);return d}}function Z(b,a){b=Q(b);var c=b.includes(\"j\")?Rb(b,a):Ha.get(a);\"function\"!=typeof c&&O(\"unknown function pointer with signature \"+b+\": \"+a);return c}var Sb=void 0;\nfunction Tb(b,a){function c(f){e[f]||gb[f]||(Db[f]?Db[f].forEach(c):(d.push(f),e[f]=!0))}var d=[],e={};a.forEach(c);throw new Sb(b+\": \"+d.map(hb).join([\", \"]));}\nfunction Ub(b,a,c,d,e){var f=a.length;2>f&&O(\"argTypes array size mismatch! Must at least get return value and 'this' types!\");var h=null!==a[1]&&null!==c,g=!1;for(c=1;c>2]);return c}\nfunction Wb(b,a,c){b instanceof Object||O(c+' with invalid \"this\": '+b);b instanceof a.V.constructor||O(c+' incompatible with \"this\" of type '+b.constructor.name);b.U.W||O(\"cannot call emscripten binding method \"+c+\" on deleted object\");return Kb(b.U.W,b.U.X.V,a.V)}function Xb(b){4>1])};case 2:return function(d){return this.fromWireType((c?Da:J)[d>>2])};default:throw new TypeError(\"Unknown integer type: \"+b);}}function Mb(b){if(null===b)return\"null\";var a=typeof b;return\"object\"===a||\"array\"===a||\"function\"===a?b.toString():\"\"+b}\nfunction $b(b,a){switch(a){case 2:return function(c){return this.fromWireType(Ea[c>>2])};case 3:return function(c){return this.fromWireType(Fa[c>>3])};default:throw new TypeError(\"Unknown float type: \"+b);}}\nfunction ac(b,a,c){switch(a){case 0:return c?function(d){return Aa[d]}:function(d){return E[d]};case 1:return c?function(d){return Ba[d>>1]}:function(d){return Ca[d>>1]};case 2:return c?function(d){return Da[d>>2]}:function(d){return J[d>>2]};default:throw new TypeError(\"Unknown integer type: \"+b);}}var bc=\"undefined\"!=typeof TextDecoder?new TextDecoder(\"utf-16le\"):void 0;\nfunction cc(b,a){var c=b>>1;for(var d=c+a/2;!(c>=d)&&Ca[c];)++c;c<<=1;if(32=a/2);++d){var e=Ba[b+2*d>>1];if(0==e)break;c+=String.fromCharCode(e)}return c}function dc(b,a,c){void 0===c&&(c=2147483647);if(2>c)return 0;c-=2;var d=a;c=c<2*b.length?c/2:b.length;for(var e=0;e>1]=b.charCodeAt(e),a+=2;Ba[a>>1]=0;return a-d}function ec(b){return 2*b.length}\nfunction fc(b,a){for(var c=0,d=\"\";!(c>=a/4);){var e=Da[b+4*c>>2];if(0==e)break;++c;65536<=e?(e-=65536,d+=String.fromCharCode(55296|e>>10,56320|e&1023)):d+=String.fromCharCode(e)}return d}function gc(b,a,c){void 0===c&&(c=2147483647);if(4>c)return 0;var d=a;c=d+c-4;for(var e=0;e=f){var h=b.charCodeAt(++e);f=65536+((f&1023)<<10)|h&1023}Da[a>>2]=f;a+=4;if(a+4>c)break}Da[a>>2]=0;return a-d}\nfunction hc(b){for(var a=0,c=0;c=d&&++c;a+=4}return a}var ic={};function jc(b){var a=ic[b];return void 0===a?Q(b):a}var kc=[];function lc(b){var a=kc.length;kc.push(b);return a}function mc(b,a){for(var c=Array(b),d=0;d>2],\"parameter \"+d);return c}var nc=[],oc=[null,[],[]];Za=m.BindingError=Ya(\"BindingError\");m.count_emval_handles=function(){for(var b=0,a=5;aqc;++qc)pc[qc]=String.fromCharCode(qc);bb=pc;m.getInheritedInstanceCount=function(){return Object.keys(V).length};m.getLiveInheritedInstances=function(){var b=[],a;for(a in V)V.hasOwnProperty(a)&&b.push(V[a]);return b};m.flushPendingDeletes=db;m.setDelayFunction=function(b){eb=b;cb.length&&eb&&eb(db)};vb=m.InternalError=Ya(\"InternalError\");\nGb.prototype.isAliasOf=function(b){if(!(this instanceof Gb&&b instanceof Gb))return!1;var a=this.U.X.V,c=this.U.W,d=b.U.X.V;for(b=b.U.W;a.$;)c=a.na(c),a=a.$;for(;d.$;)b=d.na(b),d=d.$;return a===d&&c===b};Gb.prototype.clone=function(){this.U.W||Fb(this);if(this.U.ma)return this.U.count.value+=1,this;var b=yb,a=Object,c=a.create,d=Object.getPrototypeOf(this),e=this.U;b=b(c.call(a,d,{U:{value:{count:e.count,ka:e.ka,ma:e.ma,W:e.W,X:e.X,aa:e.aa,ca:e.ca}}}));b.U.count.value+=1;b.U.ka=!1;return b};\nGb.prototype[\"delete\"]=function(){this.U.W||Fb(this);this.U.ka&&!this.U.ma&&O(\"Object already scheduled for deletion\");lb(this);nb(this.U);this.U.ma||(this.U.aa=void 0,this.U.W=void 0)};Gb.prototype.isDeleted=function(){return!this.U.W};Gb.prototype.deleteLater=function(){this.U.W||Fb(this);this.U.ka&&!this.U.ma&&O(\"Object already scheduled for deletion\");cb.push(this);1===cb.length&&eb&&eb(db);this.U.ka=!0;return this};Pb.prototype.hb=function(b){this.Na&&(b=this.Na(b));return b};\nPb.prototype.Ga=function(b){this.ha&&this.ha(b)};Pb.prototype.argPackAdvance=8;Pb.prototype.readValueFromPointer=Bb;Pb.prototype.deleteObject=function(b){if(null!==b)b[\"delete\"]()};\nPb.prototype.fromWireType=function(b){function a(){return this.qa?xb(this.V.ea,{X:this.sb,W:c,ca:this,aa:b}):xb(this.V.ea,{X:this,W:b})}var c=this.hb(b);if(!c)return this.Ga(b),null;var d=ub(this.V,c);if(void 0!==d){if(0===d.U.count.value)return d.U.W=c,d.U.aa=b,d.clone();d=d.clone();this.Ga(b);return d}d=this.V.gb(c);d=tb[d];if(!d)return a.call(this);d=this.pa?d.Xa:d.pointerType;var e=ob(c,this.V,d.V);return null===e?a.call(this):this.qa?xb(d.V.ea,{X:d,W:e,ca:this,aa:b}):xb(d.V.ea,{X:d,W:e})};\nSb=m.UnboundTypeError=Ya(\"UnboundTypeError\");\nvar sc={l:function(b,a,c){b=Q(b);a=kb(a,\"wrapper\");c=$a(c);var d=[].slice,e=a.V,f=e.ea,h=e.$.ea,g=e.$.constructor;b=Va(b,function(){e.$.Ma.forEach(function(k){if(this[k]===h[k])throw new ab(\"Pure virtual function \"+k+\" must be implemented in JavaScript\");}.bind(this));Object.defineProperty(this,\"__parent\",{value:f});this.__construct.apply(this,d.call(arguments))});f.__construct=function(){this===f&&O(\"Pass correct 'this' to __construct\");var k=g.implement.apply(void 0,[this].concat(d.call(arguments)));\nlb(k);var p=k.U;k.notifyOnDestruction();p.ma=!0;Object.defineProperties(this,{U:{value:p}});yb(this);k=p.W;k=fb(e,k);V.hasOwnProperty(k)?O(\"Tried to register registered instance: \"+k):V[k]=this};f.__destruct=function(){this===f&&O(\"Pass correct 'this' to __destruct\");lb(this);var k=this.U.W;k=fb(e,k);V.hasOwnProperty(k)?delete V[k]:O(\"Tried to unregister unregistered instance: \"+k)};b.prototype=Object.create(f);for(var l in c)b.prototype[l]=c[l];return P(b)},I:function(b){var a=zb[b];delete zb[b];\nvar c=a.xa,d=a.ha,e=a.Ja,f=e.map(h=>h.kb).concat(e.map(h=>h.vb));W([b],f,h=>{var g={};e.forEach((l,k)=>{var p=h[k],r=l.ib,u=l.jb,v=h[k+e.length],q=l.ub,C=l.wb;g[l.eb]={read:F=>p.fromWireType(r(u,F)),write:(F,w)=>{var A=[];q(C,F,v.toWireType(A,w));Ab(A)}}});return[{name:a.name,fromWireType:function(l){var k={},p;for(p in g)k[p]=g[p].read(l);d(l);return k},toWireType:function(l,k){for(var p in g)if(!(p in k))throw new TypeError('Missing field: \"'+p+'\"');var r=c();for(p in g)g[p].write(r,k[p]);null!==\nl&&l.push(d,r);return r},argPackAdvance:8,readValueFromPointer:Bb,ba:d}]})},x:function(){},B:function(b,a,c,d,e){var f=Eb(c);a=Q(a);Y(b,{name:a,fromWireType:function(h){return!!h},toWireType:function(h,g){return g?d:e},argPackAdvance:8,readValueFromPointer:function(h){if(1===c)var g=Aa;else if(2===c)g=Ba;else if(4===c)g=Da;else throw new TypeError(\"Unknown boolean type size: \"+a);return this.fromWireType(g[h>>f])},ba:null})},c:function(b,a,c,d,e,f,h,g,l,k,p,r,u){p=Q(p);f=Z(e,f);g&&(g=Z(h,g));k&&(k=\nZ(l,k));u=Z(r,u);var v=Ua(p);Ib(v,function(){Tb(\"Cannot construct \"+p+\" due to unbound types\",[d])});W([b,a,c],d?[d]:[],function(q){q=q[0];if(d){var C=q.V;var F=C.ea}else F=Gb.prototype;q=Va(v,function(){if(Object.getPrototypeOf(this)!==w)throw new Za(\"Use 'new' to construct \"+p);if(void 0===A.ia)throw new Za(p+\" has no accessible constructor\");var N=A.ia[arguments.length];if(void 0===N)throw new Za(\"Tried to invoke ctor of \"+p+\" with invalid number of parameters (\"+arguments.length+\") - expected (\"+\nObject.keys(A.ia).toString()+\") parameters instead!\");return N.apply(this,arguments)});var w=Object.create(F,{constructor:{value:q}});q.prototype=w;var A=new Jb(p,q,w,u,C,f,g,k);C=new Pb(p,A,!0,!1);F=new Pb(p+\"*\",A,!1,!1);var G=new Pb(p+\" const*\",A,!1,!0);tb[b]={pointerType:F,Xa:G};Qb(v,q);return[C,F,G]})},h:function(b,a,c,d,e,f,h){var g=Vb(c,d);a=Q(a);f=Z(e,f);W([],[b],function(l){function k(){Tb(\"Cannot call \"+p+\" due to unbound types\",g)}l=l[0];var p=l.name+\".\"+a;a.startsWith(\"@@\")&&(a=Symbol[a.substring(2)]);\nvar r=l.V.constructor;void 0===r[a]?(k.ja=c-1,r[a]=k):(Hb(r,a,p),r[a].Y[c-1]=k);W([],g,function(u){u=Ub(p,[u[0],null].concat(u.slice(1)),null,f,h);void 0===r[a].Y?(u.ja=c-1,r[a]=u):r[a].Y[c-1]=u;return[]});return[]})},n:function(b,a,c,d,e,f,h,g){a=Q(a);f=Z(e,f);W([],[b],function(l){l=l[0];var k=l.name+\".\"+a,p={get:function(){Tb(\"Cannot access \"+k+\" due to unbound types\",[c])},enumerable:!0,configurable:!0};p.set=g?()=>{Tb(\"Cannot access \"+k+\" due to unbound types\",[c])}:()=>{O(k+\" is a read-only property\")};\nObject.defineProperty(l.V.constructor,a,p);W([],[c],function(r){r=r[0];var u={get:function(){return r.fromWireType(f(d))},enumerable:!0};g&&(g=Z(h,g),u.set=v=>{var q=[];g(d,r.toWireType(q,v));Ab(q)});Object.defineProperty(l.V.constructor,a,u);return[]});return[]})},k:function(b,a,c,d,e,f){0{Tb(\"Cannot construct \"+g.name+\" due to unbound types\",h)};W([],h,function(k){k.splice(1,0,null);g.V.ia[a-1]=Ub(l,k,null,e,f);return[]});return[]})},a:function(b,a,c,d,e,f,h,g){var l=Vb(c,d);a=Q(a);f=Z(e,f);W([],[b],function(k){function p(){Tb(\"Cannot call \"+r+\" due to unbound types\",l)}k=k[0];var r=k.name+\".\"+a;a.startsWith(\"@@\")&&(a=Symbol[a.substring(2)]);\ng&&k.V.Ma.push(a);var u=k.V.ea,v=u[a];void 0===v||void 0===v.Y&&v.className!==k.name&&v.ja===c-2?(p.ja=c-2,p.className=k.name,u[a]=p):(Hb(u,a,r),u[a].Y[c-2]=p);W([],l,function(q){q=Ub(r,q,k,f,h);void 0===u[a].Y?(q.ja=c-2,u[a]=q):u[a].Y[c-2]=q;return[]});return[]})},b:function(b,a,c,d,e,f,h,g,l,k){a=Q(a);e=Z(d,e);W([],[b],function(p){p=p[0];var r=p.name+\".\"+a,u={get:function(){Tb(\"Cannot access \"+r+\" due to unbound types\",[c,h])},enumerable:!0,configurable:!0};u.set=l?()=>{Tb(\"Cannot access \"+r+\" due to unbound types\",\n[c,h])}:()=>{O(r+\" is a read-only property\")};Object.defineProperty(p.V.ea,a,u);W([],l?[c,h]:[c],function(v){var q=v[0],C={get:function(){var w=Wb(this,p,r+\" getter\");return q.fromWireType(e(f,w))},enumerable:!0};if(l){l=Z(g,l);var F=v[1];C.set=function(w){var A=Wb(this,p,r+\" setter\"),G=[];l(k,A,F.toWireType(G,w));Ab(G)}}Object.defineProperty(p.V.ea,a,C);return[]});return[]})},A:function(b,a){a=Q(a);Y(b,{name:a,fromWireType:function(c){var d=$a(c);Xb(c);return d},toWireType:function(c,d){return P(d)},\nargPackAdvance:8,readValueFromPointer:Bb,ba:null})},j:function(b,a,c,d){function e(){}c=Eb(c);a=Q(a);e.values={};Y(b,{name:a,constructor:e,fromWireType:function(f){return this.constructor.values[f]},toWireType:function(f,h){return h.value},argPackAdvance:8,readValueFromPointer:Zb(a,c,d),ba:null});Ib(a,e)},i:function(b,a,c){var d=kb(b,\"enum\");a=Q(a);b=d.constructor;d=Object.create(d.constructor.prototype,{value:{value:c},constructor:{value:Va(d.name+\"_\"+a,function(){})}});b.values[c]=d;b[a]=d},r:function(b,\na,c){c=Eb(c);a=Q(a);Y(b,{name:a,fromWireType:function(d){return d},toWireType:function(d,e){return e},argPackAdvance:8,readValueFromPointer:$b(a,c),ba:null})},q:function(b,a,c,d,e,f){var h=Vb(a,c);b=Q(b);e=Z(d,e);Ib(b,function(){Tb(\"Cannot call \"+b+\" due to unbound types\",h)},a-1);W([],h,function(g){Qb(b,Ub(b,[g[0],null].concat(g.slice(1)),null,e,f),a-1);return[]})},g:function(b,a,c,d,e){a=Q(a);-1===e&&(e=4294967295);e=Eb(c);var f=g=>g;if(0===d){var h=32-8*c;f=g=>g<>>h}c=a.includes(\"unsigned\")?\nfunction(g,l){return l>>>0}:function(g,l){return l};Y(b,{name:a,fromWireType:f,toWireType:c,argPackAdvance:8,readValueFromPointer:ac(a,e,0!==d),ba:null})},d:function(b,a,c){function d(f){f>>=2;var h=J;return new e(za,h[f+1],h[f])}var e=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array][a];c=Q(c);Y(b,{name:c,fromWireType:d,argPackAdvance:8,readValueFromPointer:d},{lb:!0})},s:function(b,a){a=Q(a);var c=\"std::string\"===a;Y(b,{name:a,fromWireType:function(d){var e=\nJ[d>>2],f=d+4;if(c)for(var h=f,g=0;g<=e;++g){var l=f+g;if(g==e||0==E[l]){h=h?ya(E,h,l-h):\"\";if(void 0===k)var k=h;else k+=String.fromCharCode(0),k+=h;h=l+1}}else{k=Array(e);for(g=0;g=l?g++:2047>=l?g+=2:55296<=l&&57343>=l?(g+=4,++f):g+=3}else g=e.length;f=g;g=rc(4+f+1);l=g+4;J[g>>2]=f;if(c&&h){if(h=l,l=f+1,f=E,0=p){var r=e.charCodeAt(++k);p=65536+((p&1023)<<10)|r&1023}if(127>=p){if(h>=l)break;f[h++]=p}else{if(2047>=p){if(h+1>=l)break;f[h++]=192|p>>6}else{if(65535>=p){if(h+2>=l)break;f[h++]=224|p>>12}else{if(h+3>=l)break;f[h++]=240|p>>18;f[h++]=128|p>>12&63}f[h++]=\n128|p>>6&63}f[h++]=128|p&63}}f[h]=0}}else if(h)for(h=0;hCa;var g=1}else 4===a&&(d=fc,e=gc,f=hc,h=()=>J,g=2);Y(b,{name:c,fromWireType:function(l){for(var k=J[l>>2],p=h(),r,u=l+4,v=0;v<=k;++v){var q=\nl+4+v*a;if(v==k||0==p[q>>g])u=d(u,q-u),void 0===r?r=u:(r+=String.fromCharCode(0),r+=u),u=q+a}jb(l);return r},toWireType:function(l,k){\"string\"!=typeof k&&O(\"Cannot pass non-string to C++ string type \"+c);var p=f(k),r=rc(4+p+a);J[r>>2]=p>>g;e(k,r+4,p+a);null!==l&&l.push(jb,r);return r},argPackAdvance:8,readValueFromPointer:Bb,ba:function(l){jb(l)}})},K:function(b,a,c,d,e,f){zb[b]={name:Q(a),xa:Z(c,d),ha:Z(e,f),Ja:[]}},J:function(b,a,c,d,e,f,h,g,l,k){zb[b].Ja.push({eb:Q(a),kb:c,ib:Z(d,e),jb:f,vb:h,\nub:Z(g,l),wb:k})},C:function(b,a){a=Q(a);Y(b,{nb:!0,name:a,argPackAdvance:0,fromWireType:function(){},toWireType:function(){}})},m:function(b,a,c){b=$a(b);a=kb(a,\"emval::as\");var d=[],e=P(d);J[c>>2]=e;return a.toWireType(d,b)},t:function(b,a,c,d,e){b=kc[b];a=$a(a);c=jc(c);var f=[];J[d>>2]=P(f);return b(a,c,f,e)},f:function(b,a,c,d){b=kc[b];a=$a(a);c=jc(c);b(a,c,null,d)},L:Xb,e:function(b,a){var c=mc(b,a),d=c[0];a=d.name+\"_$\"+c.slice(1).map(function(h){return h.name}).join(\"_\")+\"$\";var e=nc[a];if(void 0!==\ne)return e;var f=Array(b-1);e=lc((h,g,l,k)=>{for(var p=0,r=0;r>>=0;if(2147483648=c;c*=2){var d=a*(1+.2/c);d=Math.min(d,b+100663296);var e=Math;d=Math.max(b,d);e=e.min.call(e,2147483648,d+(65536-d%65536)%65536);a:{try{va.grow(e-za.byteLength+65535>>>16);Ga();var f=1;break a}catch(h){}f=void 0}if(f)return!0}return!1},z:function(){return 52},w:function(){return 70},y:function(b,a,c,d){for(var e=0,f=0;f>2],g=J[a+4>>2];a+=8;for(var l=0;l>2]=e;return 0}};\n(function(){function b(e){m.asm=e.exports;va=m.asm.M;Ga();Ha=m.asm.S;Ja.unshift(m.asm.N);Ma--;m.monitorRunDependencies&&m.monitorRunDependencies(Ma);0==Ma&&(null!==Na&&(clearInterval(Na),Na=null),Oa&&(e=Oa,Oa=null,e()))}function a(e){b(e.instance)}function c(e){return Sa().then(function(f){return WebAssembly.instantiate(f,d)}).then(function(f){return f}).then(e,function(f){qa(\"failed to asynchronously prepare wasm: \"+f);ua(f)})}var d={a:sc};Ma++;m.monitorRunDependencies&&m.monitorRunDependencies(Ma);\nif(m.instantiateWasm)try{return m.instantiateWasm(d,b)}catch(e){return qa(\"Module.instantiateWasm callback failed with error: \"+e),!1}(function(){return ra||\"function\"!=typeof WebAssembly.instantiateStreaming||Pa()||K.startsWith(\"file://\")||\"function\"!=typeof fetch?c(a):fetch(K,{credentials:\"same-origin\"}).then(function(e){return WebAssembly.instantiateStreaming(e,d).then(a,function(f){qa(\"wasm streaming compile failed: \"+f);qa(\"falling back to ArrayBuffer instantiation\");return c(a)})})})().catch(ba);\nreturn{}})();m.___wasm_call_ctors=function(){return(m.___wasm_call_ctors=m.asm.N).apply(null,arguments)};var jb=m._free=function(){return(jb=m._free=m.asm.O).apply(null,arguments)},rc=m._malloc=function(){return(rc=m._malloc=m.asm.P).apply(null,arguments)},ib=m.___getTypeName=function(){return(ib=m.___getTypeName=m.asm.Q).apply(null,arguments)};m.__embind_initialize_bindings=function(){return(m.__embind_initialize_bindings=m.asm.R).apply(null,arguments)};\nm.dynCall_jiji=function(){return(m.dynCall_jiji=m.asm.T).apply(null,arguments)};var tc;Oa=function uc(){tc||vc();tc||(Oa=uc)};\nfunction vc(){function b(){if(!tc&&(tc=!0,m.calledRun=!0,!wa)){Ta(Ja);aa(m);if(m.onRuntimeInitialized)m.onRuntimeInitialized();if(m.postRun)for(\"function\"==typeof m.postRun&&(m.postRun=[m.postRun]);m.postRun.length;){var a=m.postRun.shift();Ka.unshift(a)}Ta(Ka)}}if(!(0 {\n\nmodule.exports = JSON.parse('{\"name\":\"@rive-app/canvas\",\"version\":\"1.0.95\",\"description\":\"Rive\\'s canvas based web api.\",\"main\":\"rive.js\",\"homepage\":\"https://rive.app\",\"repository\":{\"type\":\"git\",\"url\":\"https://github.com/rive-app/rive-wasm/tree/master/js\"},\"keywords\":[\"rive\",\"animation\"],\"author\":\"Rive\",\"contributors\":[\"Luigi Rosso (https://rive.app)\",\"Maxwell Talbot (https://rive.app)\",\"Arthur Vivian (https://rive.app)\",\"Umberto Sonnino (https://rive.app)\",\"Matthew Sullivan (mailto:matt.j.sullivan@gmail.com)\"],\"license\":\"MIT\",\"files\":[\"rive.js\",\"rive.js.map\",\"rive.wasm\",\"rive.d.ts\",\"rive_advanced.mjs.d.ts\"],\"typings\":\"rive.d.ts\",\"dependencies\":{},\"browser\":{\"fs\":false,\"path\":false}}');\n\n/***/ }),\n/* 3 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"registerTouchInteractions\": () => (/* reexport safe */ _registerTouchInteractions__WEBPACK_IMPORTED_MODULE_0__.registerTouchInteractions)\n/* harmony export */ });\n/* harmony import */ var _registerTouchInteractions__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(4);\n\n\n\n/***/ }),\n/* 4 */\n/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {\n\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"registerTouchInteractions\": () => (/* binding */ registerTouchInteractions)\n/* harmony export */ });\n/**\n * Registers mouse move/up/down callback handlers on the canvas to send meaningful coordinates to\n * the state machine pointer move/up/down functions based on cursor interaction\n */\nconst registerTouchInteractions = ({\n canvas,\n artboard,\n stateMachines = [],\n renderer,\n rive,\n fit,\n alignment,\n}) => {\n if (!canvas || !stateMachines.length || !renderer || !rive || !artboard) {\n return null;\n }\n\n const mouseCallback = (event) => {\n const boundingRect = event.currentTarget.getBoundingClientRect();\n\n const canvasX = event.clientX - boundingRect.left;\n const canvasY = event.clientY - boundingRect.top;\n const forwardMatrix = rive.computeAlignment(\n fit,\n alignment,\n {\n minX: 0,\n minY: 0,\n maxX: boundingRect.width,\n maxY: boundingRect.height,\n },\n artboard.bounds\n );\n let invertedMatrix = new rive.Mat2D();\n forwardMatrix.invert(invertedMatrix);\n const canvasCoordinatesVector = new rive.Vec2D(canvasX, canvasY);\n const transformedVector = rive.mapXY(\n invertedMatrix,\n canvasCoordinatesVector\n );\n const transformedX = transformedVector.x();\n const transformedY = transformedVector.y();\n\n transformedVector.delete();\n invertedMatrix.delete();\n canvasCoordinatesVector.delete();\n forwardMatrix.delete();\n\n switch (event.type) {\n // Pointer moving/hovering on the canvas\n case \"mouseover\":\n case \"mouseout\":\n case \"mousemove\": {\n for (const stateMachine of stateMachines) {\n stateMachine.pointerMove(transformedX, transformedY);\n }\n break;\n }\n // Pointer click initiated but not released yet on the canvas\n case \"mousedown\": {\n for (const stateMachine of stateMachines) {\n stateMachine.pointerDown(transformedX, transformedY);\n }\n break;\n }\n // Pointer click released on the canvas\n case \"mouseup\": {\n for (const stateMachine of stateMachines) {\n stateMachine.pointerUp(transformedX, transformedY);\n }\n break;\n }\n default:\n }\n };\n const callback = mouseCallback.bind(undefined);\n canvas.addEventListener(\"mouseover\", callback);\n canvas.addEventListener(\"mouseout\", callback);\n canvas.addEventListener(\"mousemove\", callback);\n canvas.addEventListener(\"mousedown\", callback);\n canvas.addEventListener(\"mouseup\", callback);\n return () => {\n canvas.removeEventListener(\"mouseover\", callback);\n canvas.removeEventListener(\"mouseout\", callback);\n canvas.removeEventListener(\"mousemove\", callback);\n canvas.removeEventListener(\"mousedown\", callback);\n canvas.removeEventListener(\"mouseup\", callback);\n };\n};\n\n\n/***/ })\n/******/ \t]);\n/************************************************************************/\n/******/ \t// The module cache\n/******/ \tvar __webpack_module_cache__ = {};\n/******/ \t\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/ \t\t// Check if module is in cache\n/******/ \t\tvar cachedModule = __webpack_module_cache__[moduleId];\n/******/ \t\tif (cachedModule !== undefined) {\n/******/ \t\t\treturn cachedModule.exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = __webpack_module_cache__[moduleId] = {\n/******/ \t\t\t// no module.id needed\n/******/ \t\t\t// no module.loaded needed\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/ \t\n/******/ \t\t// Execute the module function\n/******/ \t\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n/******/ \t\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/ \t\n/************************************************************************/\n/******/ \t/* webpack/runtime/define property getters */\n/******/ \t(() => {\n/******/ \t\t// define getter functions for harmony exports\n/******/ \t\t__webpack_require__.d = (exports, definition) => {\n/******/ \t\t\tfor(var key in definition) {\n/******/ \t\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n/******/ \t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n/******/ \t\t\t\t}\n/******/ \t\t\t}\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/hasOwnProperty shorthand */\n/******/ \t(() => {\n/******/ \t\t__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))\n/******/ \t})();\n/******/ \t\n/******/ \t/* webpack/runtime/make namespace object */\n/******/ \t(() => {\n/******/ \t\t// define __esModule on exports\n/******/ \t\t__webpack_require__.r = (exports) => {\n/******/ \t\t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t\t}\n/******/ \t\t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t\t};\n/******/ \t})();\n/******/ \t\n/************************************************************************/\nvar __webpack_exports__ = {};\n// This entry need to be wrapped in an IIFE because it need to be isolated against other modules in the chunk.\n(() => {\n__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"Fit\": () => (/* binding */ Fit),\n/* harmony export */ \"Alignment\": () => (/* binding */ Alignment),\n/* harmony export */ \"Layout\": () => (/* binding */ Layout),\n/* harmony export */ \"RuntimeLoader\": () => (/* binding */ RuntimeLoader),\n/* harmony export */ \"StateMachineInputType\": () => (/* binding */ StateMachineInputType),\n/* harmony export */ \"StateMachineInput\": () => (/* binding */ StateMachineInput),\n/* harmony export */ \"EventType\": () => (/* binding */ EventType),\n/* harmony export */ \"LoopType\": () => (/* binding */ LoopType),\n/* harmony export */ \"Rive\": () => (/* binding */ Rive),\n/* harmony export */ \"Testing\": () => (/* binding */ Testing)\n/* harmony export */ });\n/* harmony import */ var _rive_advanced_mjs__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);\n/* harmony import */ var package_json__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);\n/* harmony import */ var _utils__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(3);\nvar __awaiter = (undefined && undefined.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (undefined && undefined.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\n\n\n\n// Tracks playback states; numbers map to the runtime's numerical values\n// i.e. play: 0, pause: 1, stop: 2\nvar PlaybackState;\n(function (PlaybackState) {\n PlaybackState[PlaybackState[\"Play\"] = 0] = \"Play\";\n PlaybackState[PlaybackState[\"Pause\"] = 1] = \"Pause\";\n PlaybackState[PlaybackState[\"Stop\"] = 2] = \"Stop\";\n})(PlaybackState || (PlaybackState = {}));\n// #region layout\n// Fit options for the canvas\nvar Fit;\n(function (Fit) {\n Fit[\"Cover\"] = \"cover\";\n Fit[\"Contain\"] = \"contain\";\n Fit[\"Fill\"] = \"fill\";\n Fit[\"FitWidth\"] = \"fitWidth\";\n Fit[\"FitHeight\"] = \"fitHeight\";\n Fit[\"None\"] = \"none\";\n Fit[\"ScaleDown\"] = \"scaleDown\";\n})(Fit || (Fit = {}));\n// Alignment options for the canvas\nvar Alignment;\n(function (Alignment) {\n Alignment[\"Center\"] = \"center\";\n Alignment[\"TopLeft\"] = \"topLeft\";\n Alignment[\"TopCenter\"] = \"topCenter\";\n Alignment[\"TopRight\"] = \"topRight\";\n Alignment[\"CenterLeft\"] = \"centerLeft\";\n Alignment[\"CenterRight\"] = \"centerRight\";\n Alignment[\"BottomLeft\"] = \"bottomLeft\";\n Alignment[\"BottomCenter\"] = \"bottomCenter\";\n Alignment[\"BottomRight\"] = \"bottomRight\";\n})(Alignment || (Alignment = {}));\n// Alignment options for Rive animations in a HTML canvas\nvar Layout = /** @class */ (function () {\n function Layout(params) {\n var _a, _b, _c, _d, _e, _f;\n this.fit = (_a = params === null || params === void 0 ? void 0 : params.fit) !== null && _a !== void 0 ? _a : Fit.Contain;\n this.alignment = (_b = params === null || params === void 0 ? void 0 : params.alignment) !== null && _b !== void 0 ? _b : Alignment.Center;\n this.minX = (_c = params === null || params === void 0 ? void 0 : params.minX) !== null && _c !== void 0 ? _c : 0;\n this.minY = (_d = params === null || params === void 0 ? void 0 : params.minY) !== null && _d !== void 0 ? _d : 0;\n this.maxX = (_e = params === null || params === void 0 ? void 0 : params.maxX) !== null && _e !== void 0 ? _e : 0;\n this.maxY = (_f = params === null || params === void 0 ? void 0 : params.maxY) !== null && _f !== void 0 ? _f : 0;\n }\n // Alternative constructor to build a Layout from an interface/object\n Layout.new = function (_a) {\n var fit = _a.fit, alignment = _a.alignment, minX = _a.minX, minY = _a.minY, maxX = _a.maxX, maxY = _a.maxY;\n console.warn(\"This function is deprecated: please use `new Layout({})` instead\");\n return new Layout({ fit: fit, alignment: alignment, minX: minX, minY: minY, maxX: maxX, maxY: maxY });\n };\n /**\n * Makes a copy of the layout, replacing any specified parameters\n */\n Layout.prototype.copyWith = function (_a) {\n var fit = _a.fit, alignment = _a.alignment, minX = _a.minX, minY = _a.minY, maxX = _a.maxX, maxY = _a.maxY;\n return new Layout({\n fit: fit !== null && fit !== void 0 ? fit : this.fit,\n alignment: alignment !== null && alignment !== void 0 ? alignment : this.alignment,\n minX: minX !== null && minX !== void 0 ? minX : this.minX,\n minY: minY !== null && minY !== void 0 ? minY : this.minY,\n maxX: maxX !== null && maxX !== void 0 ? maxX : this.maxX,\n maxY: maxY !== null && maxY !== void 0 ? maxY : this.maxY,\n });\n };\n // Returns fit for the Wasm runtime format\n Layout.prototype.runtimeFit = function (rive) {\n if (this.cachedRuntimeFit)\n return this.cachedRuntimeFit;\n var fit;\n if (this.fit === Fit.Cover)\n fit = rive.Fit.cover;\n else if (this.fit === Fit.Contain)\n fit = rive.Fit.contain;\n else if (this.fit === Fit.Fill)\n fit = rive.Fit.fill;\n else if (this.fit === Fit.FitWidth)\n fit = rive.Fit.fitWidth;\n else if (this.fit === Fit.FitHeight)\n fit = rive.Fit.fitHeight;\n else if (this.fit === Fit.ScaleDown)\n fit = rive.Fit.scaleDown;\n else\n fit = rive.Fit.none;\n this.cachedRuntimeFit = fit;\n return fit;\n };\n // Returns alignment for the Wasm runtime format\n Layout.prototype.runtimeAlignment = function (rive) {\n if (this.cachedRuntimeAlignment)\n return this.cachedRuntimeAlignment;\n var alignment;\n if (this.alignment === Alignment.TopLeft)\n alignment = rive.Alignment.topLeft;\n else if (this.alignment === Alignment.TopCenter)\n alignment = rive.Alignment.topCenter;\n else if (this.alignment === Alignment.TopRight)\n alignment = rive.Alignment.topRight;\n else if (this.alignment === Alignment.CenterLeft)\n alignment = rive.Alignment.centerLeft;\n else if (this.alignment === Alignment.CenterRight)\n alignment = rive.Alignment.centerRight;\n else if (this.alignment === Alignment.BottomLeft)\n alignment = rive.Alignment.bottomLeft;\n else if (this.alignment === Alignment.BottomCenter)\n alignment = rive.Alignment.bottomCenter;\n else if (this.alignment === Alignment.BottomRight)\n alignment = rive.Alignment.bottomRight;\n else\n alignment = rive.Alignment.center;\n this.cachedRuntimeAlignment = alignment;\n return alignment;\n };\n return Layout;\n}());\n\n// Runtime singleton; use getInstance to provide a callback that returns the\n// Rive runtime\nvar RuntimeLoader = /** @class */ (function () {\n // Class is never instantiated\n function RuntimeLoader() {\n }\n // Loads the runtime\n RuntimeLoader.loadRuntime = function () {\n _rive_advanced_mjs__WEBPACK_IMPORTED_MODULE_0__.default({\n // Loads Wasm bundle\n locateFile: function (_) { return RuntimeLoader.wasmURL; },\n }).then(function (rive) {\n var _a;\n RuntimeLoader.runtime = rive;\n // Fire all the callbacks\n while (RuntimeLoader.callBackQueue.length > 0) {\n (_a = RuntimeLoader.callBackQueue.shift()) === null || _a === void 0 ? void 0 : _a(RuntimeLoader.runtime);\n }\n });\n };\n // Provides a runtime instance via a callback\n RuntimeLoader.getInstance = function (callback) {\n // If it's not loading, start loading runtime\n if (!RuntimeLoader.isLoading) {\n RuntimeLoader.isLoading = true;\n RuntimeLoader.loadRuntime();\n }\n if (!RuntimeLoader.runtime) {\n RuntimeLoader.callBackQueue.push(callback);\n }\n else {\n callback(RuntimeLoader.runtime);\n }\n };\n // Provides a runtime instance via a promise\n RuntimeLoader.awaitInstance = function () {\n return new Promise(function (resolve, reject) {\n return RuntimeLoader.getInstance(function (rive) { return resolve(rive); });\n });\n };\n // Manually sets the wasm url\n RuntimeLoader.setWasmUrl = function (url) {\n RuntimeLoader.wasmURL = url;\n };\n // Flag to indicate that loading has started/completed\n RuntimeLoader.isLoading = false;\n // List of callbacks for the runtime that come in while loading\n RuntimeLoader.callBackQueue = [];\n // Path to the Wasm file; default path works for testing only;\n // if embedded wasm is used then this is never used.\n RuntimeLoader.wasmURL = \"https://unpkg.com/\" + package_json__WEBPACK_IMPORTED_MODULE_1__.name + \"@\" + package_json__WEBPACK_IMPORTED_MODULE_1__.version + \"/rive.wasm\";\n return RuntimeLoader;\n}());\n\n// #endregion\n// #region animations\n// Wraps animations and instances from the runtime and keeps track of playback\n// state\nvar Animation = /** @class */ (function () {\n /**\n * Constructs a new animation\n * @constructor\n * @param {any} animation: runtime animation object\n * @param {any} instance: runtime animation instance object\n */\n function Animation(animation, artboard, runtime, playing) {\n this.animation = animation;\n this.artboard = artboard;\n this.playing = playing;\n this.loopCount = 0;\n // Time to which the animation should move to on the next render\n this.scrubTo = null;\n this.instance = new runtime.LinearAnimationInstance(animation, artboard);\n }\n Object.defineProperty(Animation.prototype, \"name\", {\n // Returns the animation's name\n get: function () {\n return this.animation.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animation.prototype, \"time\", {\n // Returns the animation's current time\n get: function () {\n return this.instance.time;\n },\n // Sets the animation's current time\n set: function (value) {\n this.instance.time = value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animation.prototype, \"loopValue\", {\n // Returns the animation's loop type\n get: function () {\n return this.animation.loopValue;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Advances the animation by the give time. If the animation needs scrubbing,\n * time is ignored and the stored scrub value is used.\n * @param time the time to advance the animation by if no scrubbing required\n */\n Animation.prototype.advance = function (time) {\n if (this.scrubTo === null) {\n this.instance.advance(time);\n }\n else {\n this.instance.time = 0;\n this.instance.advance(this.scrubTo);\n this.scrubTo = null;\n }\n };\n /**\n * Apply interpolated keyframe values to the artboard. This should be called after calling\n * .advance() on an animation instance so that new values are applied to properties.\n *\n * Note: This does not advance the artboard, which updates all objects on the artboard\n * @param mix - Mix value for the animation from 0 to 1\n */\n Animation.prototype.apply = function (mix) {\n this.instance.apply(mix);\n };\n Object.defineProperty(Animation.prototype, \"needsScrub\", {\n get: function () {\n return this.scrubTo !== null;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Deletes the backing Wasm animation instance; once this is called, this\n * animation is no more.\n */\n Animation.prototype.cleanup = function () {\n this.instance.delete();\n };\n return Animation;\n}());\n// #endregion\n// #region state machines\nvar StateMachineInputType;\n(function (StateMachineInputType) {\n StateMachineInputType[StateMachineInputType[\"Number\"] = 56] = \"Number\";\n StateMachineInputType[StateMachineInputType[\"Trigger\"] = 58] = \"Trigger\";\n StateMachineInputType[StateMachineInputType[\"Boolean\"] = 59] = \"Boolean\";\n})(StateMachineInputType || (StateMachineInputType = {}));\n/**\n * An input for a state machine\n */\nvar StateMachineInput = /** @class */ (function () {\n function StateMachineInput(type, runtimeInput) {\n this.type = type;\n this.runtimeInput = runtimeInput;\n }\n Object.defineProperty(StateMachineInput.prototype, \"name\", {\n /**\n * Returns the name of the input\n */\n get: function () {\n return this.runtimeInput.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateMachineInput.prototype, \"value\", {\n /**\n * Returns the current value of the input\n */\n get: function () {\n return this.runtimeInput.value;\n },\n /**\n * Sets the value of the input\n */\n set: function (value) {\n this.runtimeInput.value = value;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Fires a trigger; does nothing on Number or Boolean input types\n */\n StateMachineInput.prototype.fire = function () {\n if (this.type === StateMachineInputType.Trigger) {\n this.runtimeInput.fire();\n }\n };\n return StateMachineInput;\n}());\n\nvar StateMachine = /** @class */ (function () {\n /**\n * @constructor\n * @param stateMachine runtime state machine object\n * @param instance runtime state machine instance object\n */\n function StateMachine(stateMachine, runtime, playing, artboard) {\n this.stateMachine = stateMachine;\n this.playing = playing;\n this.artboard = artboard;\n /**\n * Caches the inputs from the runtime\n */\n this.inputs = [];\n this.instance = new runtime.StateMachineInstance(stateMachine, artboard);\n this.initInputs(runtime);\n }\n Object.defineProperty(StateMachine.prototype, \"name\", {\n get: function () {\n return this.stateMachine.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(StateMachine.prototype, \"statesChanged\", {\n /**\n * Returns a list of state names that have changed on this frame\n */\n get: function () {\n var names = [];\n for (var i = 0; i < this.instance.stateChangedCount(); i++) {\n names.push(this.instance.stateChangedNameByIndex(i));\n }\n return names;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Advances the state machine instance by a given time.\n * @param time - the time to advance the animation by in seconds\n */\n StateMachine.prototype.advance = function (time) {\n this.instance.advance(time);\n };\n /**\n * Fetches references to the state machine's inputs and caches them\n * @param runtime an instance of the runtime; needed for the SMIInput types\n */\n StateMachine.prototype.initInputs = function (runtime) {\n // Fetch the inputs from the runtime if we don't have them\n for (var i = 0; i < this.instance.inputCount(); i++) {\n var input = this.instance.input(i);\n this.inputs.push(this.mapRuntimeInput(input, runtime));\n }\n };\n /**\n * Maps a runtime input to it's appropriate type\n * @param input\n */\n StateMachine.prototype.mapRuntimeInput = function (input, runtime) {\n if (input.type === runtime.SMIInput.bool) {\n return new StateMachineInput(StateMachineInputType.Boolean, input.asBool());\n }\n else if (input.type === runtime.SMIInput.number) {\n return new StateMachineInput(StateMachineInputType.Number, input.asNumber());\n }\n else if (input.type === runtime.SMIInput.trigger) {\n return new StateMachineInput(StateMachineInputType.Trigger, input.asTrigger());\n }\n };\n /**\n * Deletes the backing Wasm state machine instance; once this is called, this\n * state machine is no more.\n */\n StateMachine.prototype.cleanup = function () {\n this.instance.delete();\n };\n return StateMachine;\n}());\n// #endregion\n// #region animator\n/**\n * Manages animation\n */\nvar Animator = /** @class */ (function () {\n /**\n * Constructs a new animator\n * @constructor\n * @param runtime Rive runtime; needed to instance animations & state machines\n * @param artboard the artboard that holds all animations and state machines\n * @param animations optional list of animations\n * @param stateMachines optional list of state machines\n */\n function Animator(runtime, artboard, eventManager, animations, stateMachines) {\n if (animations === void 0) { animations = []; }\n if (stateMachines === void 0) { stateMachines = []; }\n this.runtime = runtime;\n this.artboard = artboard;\n this.eventManager = eventManager;\n this.animations = animations;\n this.stateMachines = stateMachines;\n }\n /**\n * Adds animations and state machines by their names. If names are shared\n * between animations & state machines, then the first one found will be\n * created. Best not to use the same names for these in your Rive file.\n * @param animatable the name(s) of animations and state machines to add\n * @returns a list of names of the playing animations and state machines\n */\n Animator.prototype.add = function (animatables, playing, fireEvent) {\n if (fireEvent === void 0) { fireEvent = true; }\n animatables = mapToStringArray(animatables);\n // If animatables is empty, play or pause everything\n if (animatables.length === 0) {\n this.animations.forEach(function (a) { return (a.playing = playing); });\n this.stateMachines.forEach(function (m) { return (m.playing = playing); });\n }\n else {\n // Play/pause already instanced items, or create new instances\n var instancedAnimationNames = this.animations.map(function (a) { return a.name; });\n var instancedMachineNames = this.stateMachines.map(function (m) { return m.name; });\n for (var i in animatables) {\n var aIndex = instancedAnimationNames.indexOf(animatables[i]);\n var mIndex = instancedMachineNames.indexOf(animatables[i]);\n if (aIndex >= 0 || mIndex >= 0) {\n if (aIndex >= 0) {\n // Animation is instanced, play/pause it\n this.animations[aIndex].playing = playing;\n }\n else {\n // State machine is instanced, play/pause it\n this.stateMachines[mIndex].playing = playing;\n }\n }\n else {\n // Try to create a new animation instance\n var anim = this.artboard.animationByName(animatables[i]);\n if (anim) {\n var newAnimation = new Animation(anim, this.artboard, this.runtime, playing);\n // Display the first frame of the specified animation\n newAnimation.advance(0);\n newAnimation.apply(1.0);\n this.animations.push(newAnimation);\n }\n else {\n // Try to create a new state machine instance\n var sm = this.artboard.stateMachineByName(animatables[i]);\n if (sm) {\n var newStateMachine = new StateMachine(sm, this.runtime, playing, this.artboard);\n this.stateMachines.push(newStateMachine);\n }\n }\n }\n }\n }\n // Fire play/paused events for animations\n if (fireEvent) {\n if (playing) {\n this.eventManager.fire({\n type: EventType.Play,\n data: this.playing,\n });\n }\n else {\n this.eventManager.fire({\n type: EventType.Pause,\n data: this.paused,\n });\n }\n }\n return playing ? this.playing : this.paused;\n };\n /**\n * Play the named animations/state machines\n * @param animatables the names of the animations/machines to play; plays all if empty\n * @returns a list of the playing items\n */\n Animator.prototype.play = function (animatables) {\n return this.add(animatables, true);\n };\n /**\n * Pauses named animations and state machines, or everything if nothing is\n * specified\n * @param animatables names of the animations and state machines to pause\n * @returns a list of names of the animations and state machines paused\n */\n Animator.prototype.pause = function (animatables) {\n return this.add(animatables, false);\n };\n /**\n * Set time of named animations\n * @param animations names of the animations to scrub\n * @param value time scrub value, a floating point number to which the playhead is jumped\n * @returns a list of names of the animations that were scrubbed\n */\n Animator.prototype.scrub = function (animatables, value) {\n var forScrubbing = this.animations.filter(function (a) {\n return animatables.includes(a.name);\n });\n forScrubbing.forEach(function (a) { return (a.scrubTo = value); });\n return forScrubbing.map(function (a) { return a.name; });\n };\n Object.defineProperty(Animator.prototype, \"playing\", {\n /**\n * Returns a list of names of all animations and state machines currently\n * playing\n */\n get: function () {\n return this.animations\n .filter(function (a) { return a.playing; })\n .map(function (a) { return a.name; })\n .concat(this.stateMachines.filter(function (m) { return m.playing; }).map(function (m) { return m.name; }));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animator.prototype, \"paused\", {\n /**\n * Returns a list of names of all animations and state machines currently\n * paused\n */\n get: function () {\n return this.animations\n .filter(function (a) { return !a.playing; })\n .map(function (a) { return a.name; })\n .concat(this.stateMachines.filter(function (m) { return !m.playing; }).map(function (m) { return m.name; }));\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Stops and removes all named animations and state machines\n * @param animatables animations and state machines to remove\n * @returns a list of names of removed items\n */\n Animator.prototype.stop = function (animatables) {\n var _this = this;\n animatables = mapToStringArray(animatables);\n // If nothing's specified, wipe them out, all of them\n var removedNames = [];\n // Stop everything\n if (animatables.length === 0) {\n removedNames = this.animations\n .map(function (a) { return a.name; })\n .concat(this.stateMachines.map(function (m) { return m.name; }));\n // Clean up before emptying the arrays\n this.animations.forEach(function (a) { return a.cleanup(); });\n this.stateMachines.forEach(function (m) { return m.cleanup(); });\n // Empty out the arrays\n this.animations.splice(0, this.animations.length);\n this.stateMachines.splice(0, this.stateMachines.length);\n }\n else {\n // Remove only the named animations/state machines\n var animationsToRemove = this.animations.filter(function (a) {\n return animatables.includes(a.name);\n });\n animationsToRemove.forEach(function (a) {\n a.cleanup();\n _this.animations.splice(_this.animations.indexOf(a), 1);\n });\n var machinesToRemove = this.stateMachines.filter(function (m) {\n return animatables.includes(m.name);\n });\n machinesToRemove.forEach(function (m) {\n m.cleanup();\n _this.stateMachines.splice(_this.stateMachines.indexOf(m), 1);\n });\n removedNames = animationsToRemove\n .map(function (a) { return a.name; })\n .concat(machinesToRemove.map(function (m) { return m.name; }));\n }\n this.eventManager.fire({\n type: EventType.Stop,\n data: removedNames,\n });\n // Return the list of animations removed\n return removedNames;\n };\n Object.defineProperty(Animator.prototype, \"isPlaying\", {\n /**\n * Returns true if at least one animation is active\n */\n get: function () {\n return (this.animations.reduce(function (acc, curr) { return acc || curr.playing; }, false) ||\n this.stateMachines.reduce(function (acc, curr) { return acc || curr.playing; }, false));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animator.prototype, \"isPaused\", {\n /**\n * Returns true if all animations are paused and there's at least one animation\n */\n get: function () {\n return (!this.isPlaying &&\n (this.animations.length > 0 || this.stateMachines.length > 0));\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Animator.prototype, \"isStopped\", {\n /**\n * Returns true if there are no playing or paused animations/state machines\n */\n get: function () {\n return this.animations.length === 0 && this.stateMachines.length === 0;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * If there are no animations or state machines, add the first one found\n * @returns the name of the animation or state machine instanced\n */\n Animator.prototype.atLeastOne = function (playing, fireEvent) {\n if (fireEvent === void 0) { fireEvent = true; }\n var instancedName;\n if (this.animations.length === 0 && this.stateMachines.length === 0) {\n if (this.artboard.animationCount() > 0) {\n // Add the first animation\n this.add([(instancedName = this.artboard.animationByIndex(0).name)], playing, fireEvent);\n }\n else if (this.artboard.stateMachineCount() > 0) {\n // Add the first state machine\n this.add([(instancedName = this.artboard.stateMachineByIndex(0).name)], playing, fireEvent);\n }\n }\n return instancedName;\n };\n /**\n * Checks if any animations have looped and if so, fire the appropriate event\n */\n Animator.prototype.handleLooping = function () {\n for (var _i = 0, _a = this.animations.filter(function (a) { return a.playing; }); _i < _a.length; _i++) {\n var animation = _a[_i];\n // Emit if the animation looped\n if (animation.loopValue === 0 && animation.loopCount) {\n animation.loopCount = 0;\n // This is a one-shot; if it has ended, delete the instance\n this.stop(animation.name);\n }\n else if (animation.loopValue === 1 && animation.loopCount) {\n this.eventManager.fire({\n type: EventType.Loop,\n data: { animation: animation.name, type: LoopType.Loop },\n });\n animation.loopCount = 0;\n }\n // Wasm indicates a loop at each time the animation\n // changes direction, so a full loop/lap occurs every\n // two loop counts\n else if (animation.loopValue === 2 && animation.loopCount > 1) {\n this.eventManager.fire({\n type: EventType.Loop,\n data: { animation: animation.name, type: LoopType.PingPong },\n });\n animation.loopCount = 0;\n }\n }\n };\n /**\n * Checks if states have changed in state machines and fires a statechange\n * event\n */\n Animator.prototype.handleStateChanges = function () {\n var statesChanged = [];\n for (var _i = 0, _a = this.stateMachines.filter(function (sm) { return sm.playing; }); _i < _a.length; _i++) {\n var stateMachine = _a[_i];\n statesChanged.push.apply(statesChanged, stateMachine.statesChanged);\n }\n if (statesChanged.length > 0) {\n this.eventManager.fire({\n type: EventType.StateChange,\n data: statesChanged,\n });\n }\n };\n return Animator;\n}());\n// #endregion\n// #region events\n/**\n * Supported event types triggered in Rive\n */\nvar EventType;\n(function (EventType) {\n EventType[\"Load\"] = \"load\";\n EventType[\"LoadError\"] = \"loaderror\";\n EventType[\"Play\"] = \"play\";\n EventType[\"Pause\"] = \"pause\";\n EventType[\"Stop\"] = \"stop\";\n EventType[\"Loop\"] = \"loop\";\n EventType[\"Draw\"] = \"draw\";\n EventType[\"StateChange\"] = \"statechange\";\n})(EventType || (EventType = {}));\n/**\n * Looping types: one-shot, loop, and ping-pong\n */\nvar LoopType;\n(function (LoopType) {\n LoopType[\"OneShot\"] = \"oneshot\";\n LoopType[\"Loop\"] = \"loop\";\n LoopType[\"PingPong\"] = \"pingpong\";\n})(LoopType || (LoopType = {}));\n// Manages Rive events and listeners\nvar EventManager = /** @class */ (function () {\n function EventManager(listeners) {\n if (listeners === void 0) { listeners = []; }\n this.listeners = listeners;\n }\n // Gets listeners of specified type\n EventManager.prototype.getListeners = function (type) {\n return this.listeners.filter(function (e) { return e.type === type; });\n };\n // Adds a listener\n EventManager.prototype.add = function (listener) {\n if (!this.listeners.includes(listener)) {\n this.listeners.push(listener);\n }\n };\n /**\n * Removes a listener\n * @param listener the listener with the callback to be removed\n */\n EventManager.prototype.remove = function (listener) {\n // We can't simply look for the listener as it'll be a different instance to\n // one originally subscribed. Find all the listeners of the right type and\n // then check their callbacks which should match.\n for (var i = 0; i < this.listeners.length; i++) {\n var currentListener = this.listeners[i];\n if (currentListener.type === listener.type) {\n if (currentListener.callback === listener.callback) {\n this.listeners.splice(i, 1);\n break;\n }\n }\n }\n };\n /**\n * Clears all listeners of specified type, or every listener if no type is\n * specified\n * @param type the type of listeners to clear, or all listeners if not\n * specified\n */\n EventManager.prototype.removeAll = function (type) {\n var _this = this;\n if (!type) {\n this.listeners.splice(0, this.listeners.length);\n }\n else {\n this.listeners\n .filter(function (l) { return l.type === type; })\n .forEach(function (l) { return _this.remove(l); });\n }\n };\n // Fires an event\n EventManager.prototype.fire = function (event) {\n var eventListeners = this.getListeners(event.type);\n eventListeners.forEach(function (listener) { return listener.callback(event); });\n };\n return EventManager;\n}());\n// Manages a queue of tasks\nvar TaskQueueManager = /** @class */ (function () {\n function TaskQueueManager(eventManager) {\n this.eventManager = eventManager;\n this.queue = [];\n }\n // Adds a task top the queue\n TaskQueueManager.prototype.add = function (task) {\n this.queue.push(task);\n };\n // Processes all tasks in the queue\n TaskQueueManager.prototype.process = function () {\n while (this.queue.length > 0) {\n var task = this.queue.shift();\n task === null || task === void 0 ? void 0 : task.action();\n if (task === null || task === void 0 ? void 0 : task.event) {\n this.eventManager.fire(task.event);\n }\n }\n };\n return TaskQueueManager;\n}());\nvar Rive = /** @class */ (function () {\n function Rive(params) {\n var _a;\n // Flag to indicate if the layout has changed; used by the renderer to know\n // when to align\n this._updateLayout = true;\n /**\n * Flag to active/deactivate renderer\n */\n this.isRendererActive = true;\n // Tracks if a Rive file is loaded\n this.loaded = false;\n /**\n * Tracks if a Rive file is loaded; we need this in addition to loaded as some\n * commands (e.g. contents) can be called as soon as the file is loaded.\n * However, playback commands need to be queued and run in order once initial\n * animations and autoplay has been sorted out. This applies to play, pause,\n * and start.\n */\n this.readyForPlaying = false;\n // Runtime artboard\n this.artboard = null;\n // place to clear up event listeners\n this.eventCleanup = null;\n // Durations to generate a frame for the last second. Used for performance profiling.\n this.durations = [];\n this.frameTimes = [];\n this.frameCount = 0;\n /**\n * Used be draw to track when a second of active rendering time has passed. Used for debugging purposes\n */\n this.renderSecondTimer = 0;\n this.canvas = params.canvas;\n this.src = params.src;\n this.buffer = params.buffer;\n this.layout = (_a = params.layout) !== null && _a !== void 0 ? _a : new Layout();\n // New event management system\n this.eventManager = new EventManager();\n if (params.onLoad)\n this.on(EventType.Load, params.onLoad);\n if (params.onLoadError)\n this.on(EventType.LoadError, params.onLoadError);\n if (params.onPlay)\n this.on(EventType.Play, params.onPlay);\n if (params.onPause)\n this.on(EventType.Pause, params.onPause);\n if (params.onStop)\n this.on(EventType.Stop, params.onStop);\n if (params.onLoop)\n this.on(EventType.Loop, params.onLoop);\n if (params.onStateChange)\n this.on(EventType.StateChange, params.onStateChange);\n /**\n * @deprecated Use camelCase'd versions instead.\n */\n if (params.onload && !params.onLoad)\n this.on(EventType.Load, params.onload);\n if (params.onloaderror && !params.onLoadError)\n this.on(EventType.LoadError, params.onloaderror);\n if (params.onplay && !params.onPlay)\n this.on(EventType.Play, params.onplay);\n if (params.onpause && !params.onPause)\n this.on(EventType.Pause, params.onpause);\n if (params.onstop && !params.onStop)\n this.on(EventType.Stop, params.onstop);\n if (params.onloop && !params.onLoop)\n this.on(EventType.Loop, params.onloop);\n if (params.onstatechange && !params.onStateChange)\n this.on(EventType.StateChange, params.onstatechange);\n // Hook up the task queue\n this.taskQueue = new TaskQueueManager(this.eventManager);\n this.init({\n src: this.src,\n buffer: this.buffer,\n autoplay: params.autoplay,\n animations: params.animations,\n stateMachines: params.stateMachines,\n artboard: params.artboard,\n useOffscreenRenderer: params.useOffscreenRenderer,\n });\n }\n // Alternative constructor to build a Rive instance from an interface/object\n Rive.new = function (params) {\n console.warn(\"This function is deprecated: please use `new Rive({})` instead\");\n return new Rive(params);\n };\n // Initializes the Rive object either from constructor or load()\n Rive.prototype.init = function (_a) {\n var _this = this;\n var src = _a.src, buffer = _a.buffer, animations = _a.animations, stateMachines = _a.stateMachines, artboard = _a.artboard, _b = _a.autoplay, autoplay = _b === void 0 ? false : _b, _c = _a.useOffscreenRenderer, useOffscreenRenderer = _c === void 0 ? false : _c;\n this.src = src;\n this.buffer = buffer;\n // If no source file url specified, it's a bust\n if (!this.src && !this.buffer) {\n throw new Error(Rive.missingErrorMessage);\n }\n // List of animations that should be initialized.\n var startingAnimationNames = mapToStringArray(animations);\n // List of state machines that should be initialized\n var startingStateMachineNames = mapToStringArray(stateMachines);\n // Ensure loaded is marked as false if loading new file\n this.loaded = false;\n this.readyForPlaying = false;\n // Ensure the runtime is loaded\n RuntimeLoader.awaitInstance()\n .then(function (runtime) {\n _this.runtime = runtime;\n // Get the canvas where you want to render the animation and create a renderer\n _this.renderer = _this.runtime.makeRenderer(_this.canvas, useOffscreenRenderer);\n // Initial size adjustment based on devicePixelRatio if no width/height are specified explicitly\n if (!(_this.canvas.width || _this.canvas.height)) {\n _this.resizeDrawingSurfaceToCanvas();\n }\n // Load Rive data from a source uri or a data buffer\n _this.initData(artboard, startingAnimationNames, startingStateMachineNames, autoplay)\n .then(function () {\n var activeStateMachineInstances = (_this.animator.stateMachines || [])\n .filter(function (sm) { return sm.playing; })\n .map(function (sm) { return sm.instance; });\n _this.eventCleanup = (0,_utils__WEBPACK_IMPORTED_MODULE_2__.registerTouchInteractions)({\n canvas: _this.canvas,\n artboard: _this.artboard,\n stateMachines: activeStateMachineInstances,\n renderer: _this.renderer,\n rive: _this.runtime,\n fit: _this._layout.runtimeFit(_this.runtime),\n alignment: _this._layout.runtimeAlignment(_this.runtime),\n });\n })\n .catch(function (e) {\n console.error(e);\n });\n })\n .catch(function (e) {\n console.error(e);\n });\n };\n // Initializes runtime with Rive data and preps for playing\n Rive.prototype.initData = function (artboardName, animationNames, stateMachineNames, autoplay) {\n var _a;\n return __awaiter(this, void 0, void 0, function () {\n var _b, _c, msg;\n return __generator(this, function (_d) {\n switch (_d.label) {\n case 0:\n if (!this.src) return [3 /*break*/, 2];\n _b = this;\n return [4 /*yield*/, loadRiveFile(this.src)];\n case 1:\n _b.buffer = _d.sent();\n _d.label = 2;\n case 2:\n // Load the Rive file\n _c = this;\n return [4 /*yield*/, this.runtime.load(new Uint8Array(this.buffer))];\n case 3:\n // Load the Rive file\n _c.file = _d.sent();\n if (this.file) {\n // Initialize and draw frame\n this.initArtboard(artboardName, animationNames, stateMachineNames, autoplay);\n // Everything's set up, emit a load event\n this.loaded = true;\n this.eventManager.fire({\n type: EventType.Load,\n data: (_a = this.src) !== null && _a !== void 0 ? _a : \"buffer\",\n });\n // Flag ready for playback commands and clear the task queue; this order\n // is important or it may infinitely recurse\n this.readyForPlaying = true;\n this.taskQueue.process();\n this.drawFrame();\n return [2 /*return*/, Promise.resolve()];\n }\n else {\n msg = \"Problem loading file; may be corrupt!\";\n console.warn(msg);\n this.eventManager.fire({ type: EventType.LoadError, data: msg });\n return [2 /*return*/, Promise.reject(msg)];\n }\n return [2 /*return*/];\n }\n });\n });\n };\n // Initialize for playback\n Rive.prototype.initArtboard = function (artboardName, animationNames, stateMachineNames, autoplay) {\n // Fetch the artboard\n var rootArtboard = artboardName\n ? this.file.artboardByName(artboardName)\n : this.file.defaultArtboard();\n // Check we have a working artboard\n if (!rootArtboard) {\n var msg = \"Invalid artboard name or no default artboard\";\n console.warn(msg);\n this.eventManager.fire({ type: EventType.LoadError, data: msg });\n return;\n }\n this.artboard = rootArtboard;\n // Check that the artboard has at least 1 animation\n if (this.artboard.animationCount() < 1) {\n var msg = \"Artboard has no animations\";\n this.eventManager.fire({ type: EventType.LoadError, data: msg });\n throw msg;\n }\n // Initialize the animator\n this.animator = new Animator(this.runtime, this.artboard, this.eventManager);\n // Initialize the animations; as loaded hasn't happened yet, we need to\n // suppress firing the play/pause events until the load event has fired. To\n // do this we tell the animator to suppress firing events, and add event\n // firing to the task queue.\n var instanceNames;\n if (animationNames.length > 0 || stateMachineNames.length > 0) {\n instanceNames = animationNames.concat(stateMachineNames);\n this.animator.add(instanceNames, autoplay, false);\n }\n else {\n instanceNames = [this.animator.atLeastOne(autoplay, false)];\n }\n // Queue up firing the playback events\n this.taskQueue.add({\n action: function () { },\n event: {\n type: autoplay ? EventType.Play : EventType.Pause,\n data: instanceNames,\n },\n });\n };\n // Draws the current artboard frame\n Rive.prototype.drawFrame = function () {\n this.startRendering();\n };\n /**\n * Draw rendering loop; renders animation frames at the correct time interval.\n * @param time the time at which to render a frame\n */\n Rive.prototype.draw = function (time, onSecond) {\n var before = performance.now();\n // Clear the frameRequestId, as we're now rendering a fresh frame\n this.frameRequestId = null;\n // On the first pass, make sure lastTime has a valid value\n if (!this.lastRenderTime) {\n this.lastRenderTime = time;\n }\n // Handle the onSecond callback\n this.renderSecondTimer += time - this.lastRenderTime;\n if (this.renderSecondTimer > 5000) {\n this.renderSecondTimer = 0;\n onSecond === null || onSecond === void 0 ? void 0 : onSecond();\n }\n // Calculate the elapsed time between frames in seconds\n var elapsedTime = (time - this.lastRenderTime) / 1000;\n this.lastRenderTime = time;\n // - Advance non-paused animations by the elapsed number of seconds\n // - Advance any animations that require scrubbing\n // - Advance to the first frame even when autoplay is false\n var activeAnimations = this.animator.animations\n .filter(function (a) { return a.playing || a.needsScrub; })\n // The scrubbed animations must be applied first to prevent weird artifacts\n // if the playing animations conflict with the scrubbed animating attribuates.\n .sort(function (first, second) { return (first.needsScrub ? -1 : 1); });\n for (var _i = 0, activeAnimations_1 = activeAnimations; _i < activeAnimations_1.length; _i++) {\n var animation = activeAnimations_1[_i];\n animation.advance(elapsedTime);\n if (animation.instance.didLoop) {\n animation.loopCount += 1;\n }\n animation.apply(1.0);\n }\n // - Advance non-paused state machines by the elapsed number of seconds\n // - Advance to the first frame even when autoplay is false\n var activeStateMachines = this.animator.stateMachines.filter(function (a) { return a.playing; });\n for (var _a = 0, activeStateMachines_1 = activeStateMachines; _a < activeStateMachines_1.length; _a++) {\n var stateMachine = activeStateMachines_1[_a];\n stateMachine.advance(elapsedTime);\n // stateMachine.instance.apply(this.artboard);\n }\n // Once the animations have been applied to the artboard, advance it\n // by the elapsed time.\n this.artboard.advance(elapsedTime);\n var renderer = this.renderer;\n // Canvas must be wiped to prevent artifacts\n renderer.clear();\n renderer.save();\n // Update the renderer alignment if necessary\n this.alignRenderer();\n this.artboard.draw(renderer);\n renderer.restore();\n renderer.flush();\n // Check for any animations that looped\n this.animator.handleLooping();\n // Check for any state machines that had a state change\n this.animator.handleStateChanges();\n // Add duration to create frame to durations array\n this.frameCount++;\n var after = performance.now();\n this.frameTimes.push(after);\n this.durations.push(after - before);\n while (this.frameTimes[0] <= after - 1000) {\n this.frameTimes.shift();\n this.durations.shift();\n }\n // Calling requestAnimationFrame will rerun draw() at the correct rate:\n // https://developer.mozilla.org/en-US/docs/Web/API/Canvas_API/Tutorial/Basic_animations\n if (this.animator.isPlaying) {\n // Request a new rendering frame\n this.startRendering();\n }\n else if (this.animator.isPaused) {\n // Reset the end time so on playback it starts at the correct frame\n this.lastRenderTime = 0;\n }\n else if (this.animator.isStopped) {\n // Reset animation instances, artboard and time\n // TODO: implement this properly when we have instancing\n // this.initArtboard();\n // this.drawFrame();\n this.lastRenderTime = 0;\n }\n };\n /**\n * Align the renderer\n */\n Rive.prototype.alignRenderer = function () {\n var _a = this, renderer = _a.renderer, runtime = _a.runtime, _layout = _a._layout, artboard = _a.artboard;\n // Align things up safe in the knowledge we can restore if changed\n renderer.align(_layout.runtimeFit(runtime), _layout.runtimeAlignment(runtime), {\n minX: _layout.minX,\n minY: _layout.minY,\n maxX: _layout.maxX,\n maxY: _layout.maxY,\n }, artboard.bounds);\n };\n Object.defineProperty(Rive.prototype, \"fps\", {\n get: function () {\n return this.durations.length;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"frameTime\", {\n get: function () {\n if (this.durations.length === 0) {\n return 0;\n }\n return (this.durations.reduce(function (a, b) { return a + b; }, 0) / this.durations.length).toFixed(4);\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Cleans up all Wasm-generated objects that need to be manually destroyed:\n * artboard instances, animation instances, state machine instances,\n * renderer instance, file and runtime.\n *\n * Once this is called, you will need to initialise a new instance of the\n * Rive class\n */\n Rive.prototype.cleanup = function () {\n // Stop the renderer if it hasn't already been stopped.\n this.stopRendering();\n // Clean up any artboard, animation or state machine instances.\n this.cleanupInstances();\n // Delete the renderer\n this.renderer.delete();\n // Delete the rive file\n this.file.delete();\n };\n /**\n * Cleans up any Wasm-generated objects that need to be manually destroyed:\n * artboard instances, animation instances, state machine instances.\n *\n * Once this is called, things will need to be reinitialized or bad things\n * might happen.\n */\n Rive.prototype.cleanupInstances = function () {\n if (this.eventCleanup !== null) {\n this.eventCleanup();\n }\n // Delete all animation and state machine instances\n this.stop();\n if (this.artboard) {\n this.artboard.delete();\n this.artboard = null;\n }\n };\n // Plays specified animations; if none specified, it unpauses everything.\n Rive.prototype.play = function (animationNames, autoplay) {\n var _this = this;\n animationNames = mapToStringArray(animationNames);\n // If the file's not loaded, queue up the play\n if (!this.readyForPlaying) {\n this.taskQueue.add({\n action: function () { return _this.play(animationNames, autoplay); },\n });\n return;\n }\n this.animator.play(animationNames);\n this.startRendering();\n };\n // Pauses specified animations; if none specified, pauses all.\n Rive.prototype.pause = function (animationNames) {\n var _this = this;\n animationNames = mapToStringArray(animationNames);\n // If the file's not loaded, early out, nothing to pause\n if (!this.readyForPlaying) {\n this.taskQueue.add({\n action: function () { return _this.pause(animationNames); },\n });\n return;\n }\n this.animator.pause(animationNames);\n };\n Rive.prototype.scrub = function (animationNames, value) {\n var _this = this;\n animationNames = mapToStringArray(animationNames);\n // If the file's not loaded, early out, nothing to pause\n if (!this.readyForPlaying) {\n this.taskQueue.add({\n action: function () { return _this.scrub(animationNames, value); },\n });\n return;\n }\n // Scrub the animation time; we draw a single frame here so that if\n // nothing's currently playing, the scrubbed animation is still rendered/\n this.animator.scrub(animationNames, value || 0);\n this.drawFrame();\n };\n // Stops specified animations; if none specifies, stops them all.\n Rive.prototype.stop = function (animationNames) {\n var _this = this;\n animationNames = mapToStringArray(animationNames);\n // If the file's not loaded, early out, nothing to pause\n if (!this.readyForPlaying) {\n this.taskQueue.add({\n action: function () { return _this.stop(animationNames); },\n });\n return;\n }\n this.animator.stop(animationNames);\n };\n /**\n * Resets the animation\n * @param artboard the name of the artboard, or default if none given\n * @param animations the names of animations for playback\n * @param stateMachines the names of state machines for playback\n * @param autoplay whether to autoplay when reset, defaults to false\n *\n */\n Rive.prototype.reset = function (params) {\n var _a;\n // Get the current artboard, animations, state machines, and playback states\n var artBoardName = params === null || params === void 0 ? void 0 : params.artboard;\n var animationNames = mapToStringArray(params === null || params === void 0 ? void 0 : params.animations);\n var stateMachineNames = mapToStringArray(params === null || params === void 0 ? void 0 : params.stateMachines);\n var autoplay = (_a = params === null || params === void 0 ? void 0 : params.autoplay) !== null && _a !== void 0 ? _a : false;\n // Stop everything and clean up\n this.cleanupInstances();\n // Reinitialize an artboard instance with the state\n this.initArtboard(artBoardName, animationNames, stateMachineNames, autoplay);\n this.taskQueue.process();\n };\n // Loads a new Rive file, keeping listeners in place\n Rive.prototype.load = function (params) {\n // Stop all animations\n this.stop();\n // Reinitialize\n this.init(params);\n };\n Object.defineProperty(Rive.prototype, \"layout\", {\n /**\n * Returns the current layout. Note that layout should be treated as\n * immutable. If you want to change the layout, create a new one use the\n * layout setter\n */\n get: function () {\n return this._layout;\n },\n // Sets a new layout\n set: function (layout) {\n this._layout = layout;\n // If the maxX or maxY are 0, then set them to the canvas width and height\n if (!layout.maxX || !layout.maxY) {\n this.resizeToCanvas();\n }\n if (this.loaded && !this.animator.isPlaying) {\n this.drawFrame();\n }\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Sets the layout bounds to the current canvas size; this is typically called\n * when the canvas is resized\n */\n Rive.prototype.resizeToCanvas = function () {\n this._layout = this.layout.copyWith({\n minX: 0,\n minY: 0,\n maxX: this.canvas.width,\n maxY: this.canvas.height,\n });\n };\n /**\n * Accounts for devicePixelRatio as a multiplier to render the size of the canvas drawing surface.\n * Uses the size of the backing canvas to set new width/height attributes. Need to re-render\n * and resize the layout to match the new drawing surface afterwards. Useful function for consumers\n * to include in a window resize listener\n */\n Rive.prototype.resizeDrawingSurfaceToCanvas = function () {\n if (this.canvas instanceof HTMLCanvasElement && !!window) {\n var _a = this.canvas.getBoundingClientRect(), width = _a.width, height = _a.height;\n var dpr = window.devicePixelRatio || 1;\n this.canvas.width = dpr * width;\n this.canvas.height = dpr * height;\n this.startRendering();\n this.resizeToCanvas();\n }\n };\n Object.defineProperty(Rive.prototype, \"source\", {\n // Returns the animation source, which may be undefined\n get: function () {\n return this.src;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"activeArtboard\", {\n /**\n * Returns the name of the active artboard\n */\n get: function () {\n return this.artboard ? this.artboard.name : \"\";\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"animationNames\", {\n // Returns a list of animation names on the chosen artboard\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded) {\n return [];\n }\n var animationNames = [];\n for (var i = 0; i < this.artboard.animationCount(); i++) {\n animationNames.push(this.artboard.animationByIndex(i).name);\n }\n return animationNames;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"stateMachineNames\", {\n /**\n * Returns a list of state machine names from the current artboard\n */\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded) {\n return [];\n }\n var stateMachineNames = [];\n for (var i = 0; i < this.artboard.stateMachineCount(); i++) {\n stateMachineNames.push(this.artboard.stateMachineByIndex(i).name);\n }\n return stateMachineNames;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Returns the inputs for the specified instanced state machine, or an empty\n * list if the name is invalid or the state machine is not instanced\n * @param name the state machine name\n * @returns the inputs for the named state machine\n */\n Rive.prototype.stateMachineInputs = function (name) {\n // If the file's not loaded, early out, nothing to pause\n if (!this.loaded) {\n return;\n }\n var stateMachine = this.animator.stateMachines.find(function (m) { return m.name === name; });\n return stateMachine === null || stateMachine === void 0 ? void 0 : stateMachine.inputs;\n };\n Object.defineProperty(Rive.prototype, \"playingStateMachineNames\", {\n // Returns a list of playing machine names\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded) {\n return [];\n }\n return this.animator.stateMachines\n .filter(function (m) { return m.playing; })\n .map(function (m) { return m.name; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"playingAnimationNames\", {\n // Returns a list of playing animation names\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded) {\n return [];\n }\n return this.animator.animations.filter(function (a) { return a.playing; }).map(function (a) { return a.name; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"pausedAnimationNames\", {\n // Returns a list of paused animation names\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded) {\n return [];\n }\n return this.animator.animations\n .filter(function (a) { return !a.playing; })\n .map(function (a) { return a.name; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"pausedStateMachineNames\", {\n /**\n * Returns a list of paused machine names\n * @returns a list of state machine names that are paused\n */\n get: function () {\n // If the file's not loaded, we got nothing to return\n if (!this.loaded) {\n return [];\n }\n return this.animator.stateMachines\n .filter(function (m) { return !m.playing; })\n .map(function (m) { return m.name; });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"isPlaying\", {\n /**\n * @returns true if any animation is playing\n */\n get: function () {\n return this.animator.isPlaying;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"isPaused\", {\n /**\n * @returns true if all instanced animations are paused\n */\n get: function () {\n return this.animator.isPaused;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"isStopped\", {\n /**\n * @returns true if no animations are playing or paused\n */\n get: function () {\n return this.animator.isStopped;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Rive.prototype, \"bounds\", {\n /**\n * @returns the bounds of the current artboard, or undefined if the artboard\n * isn't loaded yet.\n */\n get: function () {\n return this.artboard ? this.artboard.bounds : undefined;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * Subscribe to Rive-generated events\n * @param type the type of event to subscribe to\n * @param callback callback to fire when the event occurs\n */\n Rive.prototype.on = function (type, callback) {\n this.eventManager.add({\n type: type,\n callback: callback,\n });\n };\n /**\n * Unsubscribes from a Rive-generated event\n * @param callback the callback to unsubscribe from\n */\n Rive.prototype.unsubscribe = function (type, callback) {\n this.eventManager.remove({\n type: type,\n callback: callback,\n });\n };\n /**\n * Unsubscribes all listeners from an event type, or everything if no type is\n * given\n * @param type the type of event to unsubscribe from, or all types if\n * undefined\n */\n Rive.prototype.unsubscribeAll = function (type) {\n this.eventManager.removeAll(type);\n };\n /**\n * Stops the rendering loop; this is different from pausing in that it doesn't\n * change the state of any animation. It stops rendering from occurring. This\n * is designed for situations such as when Rive isn't visible.\n *\n * The only way to start rendering again is to call `startRendering`.\n * Animations that are marked as playing will start from the position that\n * they would have been at if rendering had not been stopped.\n */\n Rive.prototype.stopRendering = function () {\n if (this.loaded && this.frameRequestId) {\n if (this.runtime.cancelAnimationFrame) {\n this.runtime.cancelAnimationFrame(this.frameRequestId);\n }\n else {\n cancelAnimationFrame(this.frameRequestId);\n }\n this.frameRequestId = null;\n }\n };\n /**\n * Starts the rendering loop if it has been previously stopped. If the\n * renderer is already active, then this will have zero effect.\n */\n Rive.prototype.startRendering = function () {\n if (this.loaded && this.artboard && !this.frameRequestId) {\n if (this.runtime.requestAnimationFrame) {\n this.frameRequestId = this.runtime.requestAnimationFrame(this.draw.bind(this));\n }\n else {\n this.frameRequestId = requestAnimationFrame(this.draw.bind(this));\n }\n }\n };\n /**\n * Enables frames-per-second (FPS) reporting for the runtime\n * If no callback is provided, Rive will append a fixed-position div at the top-right corner of the page with the FPS reading\n * @param fpsCallback - Callback from the runtime during the RAF loop that supplies the FPS value\n */\n Rive.prototype.enableFPSCounter = function (fpsCallback) {\n this.runtime.enableFPSCounter(fpsCallback);\n };\n /**\n * Disables frames-per-second (FPS) reporting for the runtime\n */\n Rive.prototype.disableFPSCounter = function () {\n this.runtime.disableFPSCounter();\n };\n Object.defineProperty(Rive.prototype, \"contents\", {\n /**\n * Returns the contents of a Rive file: the artboards, animations, and state machines\n */\n get: function () {\n if (!this.loaded) {\n return undefined;\n }\n var riveContents = {\n artboards: [],\n };\n for (var i = 0; i < this.file.artboardCount(); i++) {\n var artboard = this.file.artboardByIndex(i);\n var artboardContents = {\n name: artboard.name,\n animations: [],\n stateMachines: [],\n };\n for (var j = 0; j < artboard.animationCount(); j++) {\n var animation = artboard.animationByIndex(j);\n artboardContents.animations.push(animation.name);\n }\n for (var k = 0; k < artboard.stateMachineCount(); k++) {\n var stateMachine = artboard.stateMachineByIndex(k);\n var name_1 = stateMachine.name;\n var instance = new this.runtime.StateMachineInstance(stateMachine, artboard);\n var inputContents = [];\n for (var l = 0; l < instance.inputCount(); l++) {\n var input = instance.input(l);\n inputContents.push({ name: input.name, type: input.type });\n }\n artboardContents.stateMachines.push({\n name: name_1,\n inputs: inputContents,\n });\n }\n riveContents.artboards.push(artboardContents);\n }\n return riveContents;\n },\n enumerable: false,\n configurable: true\n });\n // Error message for missing source or buffer\n Rive.missingErrorMessage = \"Rive source file or data buffer required\";\n return Rive;\n}());\n\n// Loads Rive data from a URI via fetch.\nvar loadRiveFile = function (src) { return __awaiter(void 0, void 0, void 0, function () {\n var req, res, buffer;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n req = new Request(src);\n return [4 /*yield*/, fetch(req)];\n case 1:\n res = _a.sent();\n return [4 /*yield*/, res.arrayBuffer()];\n case 2:\n buffer = _a.sent();\n return [2 /*return*/, buffer];\n }\n });\n}); };\n// #endregion\n// #region utility functions\n/*\n * Utility function to ensure an object is a string array\n */\nvar mapToStringArray = function (obj) {\n if (typeof obj === \"string\") {\n return [obj];\n }\n else if (obj instanceof Array) {\n return obj;\n }\n // If obj is undefined, return empty array\n return [];\n};\n// #endregion\n// #region testing utilities\n// Exports to only be used for tests\nvar Testing = {\n EventManager: EventManager,\n TaskQueueManager: TaskQueueManager,\n};\n// #endregion\n\n})();\n\n/******/ \treturn __webpack_exports__;\n/******/ })()\n;\n});\n//# sourceMappingURL=rive.js.map","Object.defineProperty(exports,\"__esModule\",{value:!0});var e=require(\"react\"),t=require(\"@rive-app/canvas\");function n(e){return e&&\"object\"==typeof e&&\"default\"in e?e:{default:e}}var r=n(e),i=function(){return i=Object.assign||function(e){for(var t,n=1,r=arguments.length;n this.span) {\n throw new RangeError('indeterminate span');\n }\n return this.span;\n }\n /**\n * Replicate the layout using a new property.\n *\n * This function must be used to get a structurally-equivalent layout\n * with a different name since all {@link Layout} instances are\n * immutable.\n *\n * **NOTE** This is a shallow copy. All fields except {@link\n * Layout#property|property} are strictly equal to the origin layout.\n *\n * @param {String} property - the value for {@link\n * Layout#property|property} in the replica.\n *\n * @returns {Layout} - the copy with {@link Layout#property|property}\n * set to `property`.\n */\n replicate(property) {\n const rv = Object.create(this.constructor.prototype);\n Object.assign(rv, this);\n rv.property = property;\n return rv;\n }\n /**\n * Create an object from layout properties and an array of values.\n *\n * **NOTE** This function returns `undefined` if invoked on a layout\n * that does not return its value as an Object. Objects are\n * returned for things that are a {@link Structure}, which includes\n * {@link VariantLayout|variant layouts} if they are structures, and\n * excludes {@link Union}s. If you want this feature for a union\n * you must use {@link Union.getVariant|getVariant} to select the\n * desired layout.\n *\n * @param {Array} values - an array of values that correspond to the\n * default order for properties. As with {@link Layout#decode|decode}\n * layout elements that have no property name are skipped when\n * iterating over the array values. Only the top-level properties are\n * assigned; arguments are not assigned to properties of contained\n * layouts. Any unused values are ignored.\n *\n * @return {(Object|undefined)}\n */\n fromArray(values) {\n return undefined;\n }\n}\nexports.Layout = Layout;\n/* Provide text that carries a name (such as for a function that will\n * be throwing an error) annotated with the property of a given layout\n * (such as one for which the value was unacceptable).\n *\n * @ignore */\nfunction nameWithProperty(name, lo) {\n if (lo.property) {\n return name + '[' + lo.property + ']';\n }\n return name;\n}\nexports.nameWithProperty = nameWithProperty;\n/**\n * Augment a class so that instances can be encoded/decoded using a\n * given layout.\n *\n * Calling this function couples `Class` with `layout` in several ways:\n *\n * * `Class.layout_` becomes a static member property equal to `layout`;\n * * `layout.boundConstructor_` becomes a static member property equal\n * to `Class`;\n * * The {@link Layout#makeDestinationObject|makeDestinationObject()}\n * property of `layout` is set to a function that returns a `new\n * Class()`;\n * * `Class.decode(b, offset)` becomes a static member function that\n * delegates to {@link Layout#decode|layout.decode}. The\n * synthesized function may be captured and extended.\n * * `Class.prototype.encode(b, offset)` provides an instance member\n * function that delegates to {@link Layout#encode|layout.encode}\n * with `src` set to `this`. The synthesized function may be\n * captured and extended, but when the extension is invoked `this`\n * must be explicitly bound to the instance.\n *\n * @param {class} Class - a JavaScript class with a nullary\n * constructor.\n *\n * @param {Layout} layout - the {@link Layout} instance used to encode\n * instances of `Class`.\n */\n// `Class` must be a constructor Function, but the assignment of a `layout_` property to it makes it difficult to type\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction bindConstructorLayout(Class, layout) {\n if ('function' !== typeof Class) {\n throw new TypeError('Class must be constructor');\n }\n if (Object.prototype.hasOwnProperty.call(Class, 'layout_')) {\n throw new Error('Class is already bound to a layout');\n }\n if (!(layout && (layout instanceof Layout))) {\n throw new TypeError('layout must be a Layout');\n }\n if (Object.prototype.hasOwnProperty.call(layout, 'boundConstructor_')) {\n throw new Error('layout is already bound to a constructor');\n }\n Class.layout_ = layout;\n layout.boundConstructor_ = Class;\n layout.makeDestinationObject = (() => new Class());\n Object.defineProperty(Class.prototype, 'encode', {\n value(b, offset) {\n return layout.encode(this, b, offset);\n },\n writable: true,\n });\n Object.defineProperty(Class, 'decode', {\n value(b, offset) {\n return layout.decode(b, offset);\n },\n writable: true,\n });\n}\nexports.bindConstructorLayout = bindConstructorLayout;\n/**\n * An object that behaves like a layout but does not consume space\n * within its containing layout.\n *\n * This is primarily used to obtain metadata about a member, such as a\n * {@link OffsetLayout} that can provide data about a {@link\n * Layout#getSpan|value-specific span}.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support {@link\n * ExternalLayout#isCount|isCount} or other {@link Layout} functions.\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @abstract\n * @augments {Layout}\n */\nclass ExternalLayout extends Layout {\n /**\n * Return `true` iff the external layout decodes to an unsigned\n * integer layout.\n *\n * In that case it can be used as the source of {@link\n * Sequence#count|Sequence counts}, {@link Blob#length|Blob lengths},\n * or as {@link UnionLayoutDiscriminator#layout|external union\n * discriminators}.\n *\n * @abstract\n */\n isCount() {\n throw new Error('ExternalLayout is abstract');\n }\n}\nexports.ExternalLayout = ExternalLayout;\n/**\n * An {@link ExternalLayout} that determines its {@link\n * Layout#decode|value} based on offset into and length of the buffer\n * on which it is invoked.\n *\n * *Factory*: {@link module:Layout.greedy|greedy}\n *\n * @param {Number} [elementSpan] - initializer for {@link\n * GreedyCount#elementSpan|elementSpan}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {ExternalLayout}\n */\nclass GreedyCount extends ExternalLayout {\n constructor(elementSpan = 1, property) {\n if ((!Number.isInteger(elementSpan)) || (0 >= elementSpan)) {\n throw new TypeError('elementSpan must be a (positive) integer');\n }\n super(-1, property);\n /** The layout for individual elements of the sequence. The value\n * must be a positive integer. If not provided, the value will be\n * 1. */\n this.elementSpan = elementSpan;\n }\n /** @override */\n isCount() {\n return true;\n }\n /** @override */\n decode(b, offset = 0) {\n checkUint8Array(b);\n const rem = b.length - offset;\n return Math.floor(rem / this.elementSpan);\n }\n /** @override */\n encode(src, b, offset) {\n return 0;\n }\n}\nexports.GreedyCount = GreedyCount;\n/**\n * An {@link ExternalLayout} that supports accessing a {@link Layout}\n * at a fixed offset from the start of another Layout. The offset may\n * be before, within, or after the base layout.\n *\n * *Factory*: {@link module:Layout.offset|offset}\n *\n * @param {Layout} layout - initializer for {@link\n * OffsetLayout#layout|layout}, modulo `property`.\n *\n * @param {Number} [offset] - Initializes {@link\n * OffsetLayout#offset|offset}. Defaults to zero.\n *\n * @param {string} [property] - Optional new property name for a\n * {@link Layout#replicate| replica} of `layout` to be used as {@link\n * OffsetLayout#layout|layout}. If not provided the `layout` is used\n * unchanged.\n *\n * @augments {Layout}\n */\nclass OffsetLayout extends ExternalLayout {\n constructor(layout, offset = 0, property) {\n if (!(layout instanceof Layout)) {\n throw new TypeError('layout must be a Layout');\n }\n if (!Number.isInteger(offset)) {\n throw new TypeError('offset must be integer or undefined');\n }\n super(layout.span, property || layout.property);\n /** The subordinated layout. */\n this.layout = layout;\n /** The location of {@link OffsetLayout#layout} relative to the\n * start of another layout.\n *\n * The value may be positive or negative, but an error will thrown\n * if at the point of use it goes outside the span of the Uint8Array\n * being accessed. */\n this.offset = offset;\n }\n /** @override */\n isCount() {\n return ((this.layout instanceof UInt)\n || (this.layout instanceof UIntBE));\n }\n /** @override */\n decode(b, offset = 0) {\n return this.layout.decode(b, offset + this.offset);\n }\n /** @override */\n encode(src, b, offset = 0) {\n return this.layout.encode(src, b, offset + this.offset);\n }\n}\nexports.OffsetLayout = OffsetLayout;\n/**\n * Represent an unsigned integer in little-endian format.\n *\n * *Factory*: {@link module:Layout.u8|u8}, {@link\n * module:Layout.u16|u16}, {@link module:Layout.u24|u24}, {@link\n * module:Layout.u32|u32}, {@link module:Layout.u40|u40}, {@link\n * module:Layout.u48|u48}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UInt extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readUIntLE(offset, this.span);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeUIntLE(src, offset, this.span);\n return this.span;\n }\n}\nexports.UInt = UInt;\n/**\n * Represent an unsigned integer in big-endian format.\n *\n * *Factory*: {@link module:Layout.u8be|u8be}, {@link\n * module:Layout.u16be|u16be}, {@link module:Layout.u24be|u24be},\n * {@link module:Layout.u32be|u32be}, {@link\n * module:Layout.u40be|u40be}, {@link module:Layout.u48be|u48be}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UIntBE extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readUIntBE(offset, this.span);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeUIntBE(src, offset, this.span);\n return this.span;\n }\n}\nexports.UIntBE = UIntBE;\n/**\n * Represent a signed integer in little-endian format.\n *\n * *Factory*: {@link module:Layout.s8|s8}, {@link\n * module:Layout.s16|s16}, {@link module:Layout.s24|s24}, {@link\n * module:Layout.s32|s32}, {@link module:Layout.s40|s40}, {@link\n * module:Layout.s48|s48}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Int extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readIntLE(offset, this.span);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeIntLE(src, offset, this.span);\n return this.span;\n }\n}\nexports.Int = Int;\n/**\n * Represent a signed integer in big-endian format.\n *\n * *Factory*: {@link module:Layout.s8be|s8be}, {@link\n * module:Layout.s16be|s16be}, {@link module:Layout.s24be|s24be},\n * {@link module:Layout.s32be|s32be}, {@link\n * module:Layout.s40be|s40be}, {@link module:Layout.s48be|s48be}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass IntBE extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readIntBE(offset, this.span);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeIntBE(src, offset, this.span);\n return this.span;\n }\n}\nexports.IntBE = IntBE;\nconst V2E32 = Math.pow(2, 32);\n/* True modulus high and low 32-bit words, where low word is always\n * non-negative. */\nfunction divmodInt64(src) {\n const hi32 = Math.floor(src / V2E32);\n const lo32 = src - (hi32 * V2E32);\n return { hi32, lo32 };\n}\n/* Reconstruct Number from quotient and non-negative remainder */\nfunction roundedInt64(hi32, lo32) {\n return hi32 * V2E32 + lo32;\n}\n/**\n * Represent an unsigned 64-bit integer in little-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.nu64|nu64}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearUInt64 extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n const buffer = uint8ArrayToBuffer(b);\n const lo32 = buffer.readUInt32LE(offset);\n const hi32 = buffer.readUInt32LE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n /** @override */\n encode(src, b, offset = 0) {\n const split = divmodInt64(src);\n const buffer = uint8ArrayToBuffer(b);\n buffer.writeUInt32LE(split.lo32, offset);\n buffer.writeUInt32LE(split.hi32, offset + 4);\n return 8;\n }\n}\nexports.NearUInt64 = NearUInt64;\n/**\n * Represent an unsigned 64-bit integer in big-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.nu64be|nu64be}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearUInt64BE extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n const buffer = uint8ArrayToBuffer(b);\n const hi32 = buffer.readUInt32BE(offset);\n const lo32 = buffer.readUInt32BE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n /** @override */\n encode(src, b, offset = 0) {\n const split = divmodInt64(src);\n const buffer = uint8ArrayToBuffer(b);\n buffer.writeUInt32BE(split.hi32, offset);\n buffer.writeUInt32BE(split.lo32, offset + 4);\n return 8;\n }\n}\nexports.NearUInt64BE = NearUInt64BE;\n/**\n * Represent a signed 64-bit integer in little-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.ns64|ns64}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearInt64 extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n const buffer = uint8ArrayToBuffer(b);\n const lo32 = buffer.readUInt32LE(offset);\n const hi32 = buffer.readInt32LE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n /** @override */\n encode(src, b, offset = 0) {\n const split = divmodInt64(src);\n const buffer = uint8ArrayToBuffer(b);\n buffer.writeUInt32LE(split.lo32, offset);\n buffer.writeInt32LE(split.hi32, offset + 4);\n return 8;\n }\n}\nexports.NearInt64 = NearInt64;\n/**\n * Represent a signed 64-bit integer in big-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.ns64be|ns64be}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearInt64BE extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n const buffer = uint8ArrayToBuffer(b);\n const hi32 = buffer.readInt32BE(offset);\n const lo32 = buffer.readUInt32BE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n /** @override */\n encode(src, b, offset = 0) {\n const split = divmodInt64(src);\n const buffer = uint8ArrayToBuffer(b);\n buffer.writeInt32BE(split.hi32, offset);\n buffer.writeUInt32BE(split.lo32, offset + 4);\n return 8;\n }\n}\nexports.NearInt64BE = NearInt64BE;\n/**\n * Represent a 32-bit floating point number in little-endian format.\n *\n * *Factory*: {@link module:Layout.f32|f32}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Float extends Layout {\n constructor(property) {\n super(4, property);\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readFloatLE(offset);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeFloatLE(src, offset);\n return 4;\n }\n}\nexports.Float = Float;\n/**\n * Represent a 32-bit floating point number in big-endian format.\n *\n * *Factory*: {@link module:Layout.f32be|f32be}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass FloatBE extends Layout {\n constructor(property) {\n super(4, property);\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readFloatBE(offset);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeFloatBE(src, offset);\n return 4;\n }\n}\nexports.FloatBE = FloatBE;\n/**\n * Represent a 64-bit floating point number in little-endian format.\n *\n * *Factory*: {@link module:Layout.f64|f64}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Double extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readDoubleLE(offset);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeDoubleLE(src, offset);\n return 8;\n }\n}\nexports.Double = Double;\n/**\n * Represent a 64-bit floating point number in big-endian format.\n *\n * *Factory*: {@link module:Layout.f64be|f64be}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass DoubleBE extends Layout {\n constructor(property) {\n super(8, property);\n }\n /** @override */\n decode(b, offset = 0) {\n return uint8ArrayToBuffer(b).readDoubleBE(offset);\n }\n /** @override */\n encode(src, b, offset = 0) {\n uint8ArrayToBuffer(b).writeDoubleBE(src, offset);\n return 8;\n }\n}\nexports.DoubleBE = DoubleBE;\n/**\n * Represent a contiguous sequence of a specific layout as an Array.\n *\n * *Factory*: {@link module:Layout.seq|seq}\n *\n * @param {Layout} elementLayout - initializer for {@link\n * Sequence#elementLayout|elementLayout}.\n *\n * @param {(Number|ExternalLayout)} count - initializer for {@link\n * Sequence#count|count}. The parameter must be either a positive\n * integer or an instance of {@link ExternalLayout}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Sequence extends Layout {\n constructor(elementLayout, count, property) {\n if (!(elementLayout instanceof Layout)) {\n throw new TypeError('elementLayout must be a Layout');\n }\n if (!(((count instanceof ExternalLayout) && count.isCount())\n || (Number.isInteger(count) && (0 <= count)))) {\n throw new TypeError('count must be non-negative integer '\n + 'or an unsigned integer ExternalLayout');\n }\n let span = -1;\n if ((!(count instanceof ExternalLayout))\n && (0 < elementLayout.span)) {\n span = count * elementLayout.span;\n }\n super(span, property);\n /** The layout for individual elements of the sequence. */\n this.elementLayout = elementLayout;\n /** The number of elements in the sequence.\n *\n * This will be either a non-negative integer or an instance of\n * {@link ExternalLayout} for which {@link\n * ExternalLayout#isCount|isCount()} is `true`. */\n this.count = count;\n }\n /** @override */\n getSpan(b, offset = 0) {\n if (0 <= this.span) {\n return this.span;\n }\n let span = 0;\n let count = this.count;\n if (count instanceof ExternalLayout) {\n count = count.decode(b, offset);\n }\n if (0 < this.elementLayout.span) {\n span = count * this.elementLayout.span;\n }\n else {\n let idx = 0;\n while (idx < count) {\n span += this.elementLayout.getSpan(b, offset + span);\n ++idx;\n }\n }\n return span;\n }\n /** @override */\n decode(b, offset = 0) {\n const rv = [];\n let i = 0;\n let count = this.count;\n if (count instanceof ExternalLayout) {\n count = count.decode(b, offset);\n }\n while (i < count) {\n rv.push(this.elementLayout.decode(b, offset));\n offset += this.elementLayout.getSpan(b, offset);\n i += 1;\n }\n return rv;\n }\n /** Implement {@link Layout#encode|encode} for {@link Sequence}.\n *\n * **NOTE** If `src` is shorter than {@link Sequence#count|count} then\n * the unused space in the buffer is left unchanged. If `src` is\n * longer than {@link Sequence#count|count} the unneeded elements are\n * ignored.\n *\n * **NOTE** If {@link Layout#count|count} is an instance of {@link\n * ExternalLayout} then the length of `src` will be encoded as the\n * count after `src` is encoded. */\n encode(src, b, offset = 0) {\n const elo = this.elementLayout;\n const span = src.reduce((span, v) => {\n return span + elo.encode(v, b, offset + span);\n }, 0);\n if (this.count instanceof ExternalLayout) {\n this.count.encode(src.length, b, offset);\n }\n return span;\n }\n}\nexports.Sequence = Sequence;\n/**\n * Represent a contiguous sequence of arbitrary layout elements as an\n * Object.\n *\n * *Factory*: {@link module:Layout.struct|struct}\n *\n * **NOTE** The {@link Layout#span|span} of the structure is variable\n * if any layout in {@link Structure#fields|fields} has a variable\n * span. When {@link Layout#encode|encoding} we must have a value for\n * all variable-length fields, or we wouldn't be able to figure out\n * how much space to use for storage. We can only identify the value\n * for a field when it has a {@link Layout#property|property}. As\n * such, although a structure may contain both unnamed fields and\n * variable-length fields, it cannot contain an unnamed\n * variable-length field.\n *\n * @param {Layout[]} fields - initializer for {@link\n * Structure#fields|fields}. An error is raised if this contains a\n * variable-length field for which a {@link Layout#property|property}\n * is not defined.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @param {Boolean} [decodePrefixes] - initializer for {@link\n * Structure#decodePrefixes|property}.\n *\n * @throws {Error} - if `fields` contains an unnamed variable-length\n * layout.\n *\n * @augments {Layout}\n */\nclass Structure extends Layout {\n constructor(fields, property, decodePrefixes) {\n if (!(Array.isArray(fields)\n && fields.reduce((acc, v) => acc && (v instanceof Layout), true))) {\n throw new TypeError('fields must be array of Layout instances');\n }\n if (('boolean' === typeof property)\n && (undefined === decodePrefixes)) {\n decodePrefixes = property;\n property = undefined;\n }\n /* Verify absence of unnamed variable-length fields. */\n for (const fd of fields) {\n if ((0 > fd.span)\n && (undefined === fd.property)) {\n throw new Error('fields cannot contain unnamed variable-length layout');\n }\n }\n let span = -1;\n try {\n span = fields.reduce((span, fd) => span + fd.getSpan(), 0);\n }\n catch (e) {\n // ignore error\n }\n super(span, property);\n /** The sequence of {@link Layout} values that comprise the\n * structure.\n *\n * The individual elements need not be the same type, and may be\n * either scalar or aggregate layouts. If a member layout leaves\n * its {@link Layout#property|property} undefined the\n * corresponding region of the buffer associated with the element\n * will not be mutated.\n *\n * @type {Layout[]} */\n this.fields = fields;\n /** Control behavior of {@link Layout#decode|decode()} given short\n * buffers.\n *\n * In some situations a structure many be extended with additional\n * fields over time, with older installations providing only a\n * prefix of the full structure. If this property is `true`\n * decoding will accept those buffers and leave subsequent fields\n * undefined, as long as the buffer ends at a field boundary.\n * Defaults to `false`. */\n this.decodePrefixes = !!decodePrefixes;\n }\n /** @override */\n getSpan(b, offset = 0) {\n if (0 <= this.span) {\n return this.span;\n }\n let span = 0;\n try {\n span = this.fields.reduce((span, fd) => {\n const fsp = fd.getSpan(b, offset);\n offset += fsp;\n return span + fsp;\n }, 0);\n }\n catch (e) {\n throw new RangeError('indeterminate span');\n }\n return span;\n }\n /** @override */\n decode(b, offset = 0) {\n checkUint8Array(b);\n const dest = this.makeDestinationObject();\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n dest[fd.property] = fd.decode(b, offset);\n }\n offset += fd.getSpan(b, offset);\n if (this.decodePrefixes\n && (b.length === offset)) {\n break;\n }\n }\n return dest;\n }\n /** Implement {@link Layout#encode|encode} for {@link Structure}.\n *\n * If `src` is missing a property for a member with a defined {@link\n * Layout#property|property} the corresponding region of the buffer is\n * left unmodified. */\n encode(src, b, offset = 0) {\n const firstOffset = offset;\n let lastOffset = 0;\n let lastWrote = 0;\n for (const fd of this.fields) {\n let span = fd.span;\n lastWrote = (0 < span) ? span : 0;\n if (undefined !== fd.property) {\n const fv = src[fd.property];\n if (undefined !== fv) {\n lastWrote = fd.encode(fv, b, offset);\n if (0 > span) {\n /* Read the as-encoded span, which is not necessarily the\n * same as what we wrote. */\n span = fd.getSpan(b, offset);\n }\n }\n }\n lastOffset = offset;\n offset += span;\n }\n /* Use (lastOffset + lastWrote) instead of offset because the last\n * item may have had a dynamic length and we don't want to include\n * the padding between it and the end of the space reserved for\n * it. */\n return (lastOffset + lastWrote) - firstOffset;\n }\n /** @override */\n fromArray(values) {\n const dest = this.makeDestinationObject();\n for (const fd of this.fields) {\n if ((undefined !== fd.property)\n && (0 < values.length)) {\n dest[fd.property] = values.shift();\n }\n }\n return dest;\n }\n /**\n * Get access to the layout of a given property.\n *\n * @param {String} property - the structure member of interest.\n *\n * @return {Layout} - the layout associated with `property`, or\n * undefined if there is no such property.\n */\n layoutFor(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n for (const fd of this.fields) {\n if (fd.property === property) {\n return fd;\n }\n }\n return undefined;\n }\n /**\n * Get the offset of a structure member.\n *\n * @param {String} property - the structure member of interest.\n *\n * @return {Number} - the offset in bytes to the start of `property`\n * within the structure, or undefined if `property` is not a field\n * within the structure. If the property is a member but follows a\n * variable-length structure member a negative number will be\n * returned.\n */\n offsetOf(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n let offset = 0;\n for (const fd of this.fields) {\n if (fd.property === property) {\n return offset;\n }\n if (0 > fd.span) {\n offset = -1;\n }\n else if (0 <= offset) {\n offset += fd.span;\n }\n }\n return undefined;\n }\n}\nexports.Structure = Structure;\n/**\n * An object that can provide a {@link\n * Union#discriminator|discriminator} API for {@link Union}.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support the {@link\n * UnionDiscriminator#encode|encode} or {@link\n * UnionDiscriminator#decode|decode} functions.\n *\n * @param {string} [property] - Default for {@link\n * UnionDiscriminator#property|property}.\n *\n * @abstract\n */\nclass UnionDiscriminator {\n constructor(property) {\n /** The {@link Layout#property|property} to be used when the\n * discriminator is referenced in isolation (generally when {@link\n * Union#decode|Union decode} cannot delegate to a specific\n * variant). */\n this.property = property;\n }\n /** Analog to {@link Layout#decode|Layout decode} for union discriminators.\n *\n * The implementation of this method need not reference the buffer if\n * variant information is available through other means. */\n decode(b, offset) {\n throw new Error('UnionDiscriminator is abstract');\n }\n /** Analog to {@link Layout#decode|Layout encode} for union discriminators.\n *\n * The implementation of this method need not store the value if\n * variant information is maintained through other means. */\n encode(src, b, offset) {\n throw new Error('UnionDiscriminator is abstract');\n }\n}\nexports.UnionDiscriminator = UnionDiscriminator;\n/**\n * An object that can provide a {@link\n * UnionDiscriminator|discriminator API} for {@link Union} using an\n * unsigned integral {@link Layout} instance located either inside or\n * outside the union.\n *\n * @param {ExternalLayout} layout - initializes {@link\n * UnionLayoutDiscriminator#layout|layout}. Must satisfy {@link\n * ExternalLayout#isCount|isCount()}.\n *\n * @param {string} [property] - Default for {@link\n * UnionDiscriminator#property|property}, superseding the property\n * from `layout`, but defaulting to `variant` if neither `property`\n * nor layout provide a property name.\n *\n * @augments {UnionDiscriminator}\n */\nclass UnionLayoutDiscriminator extends UnionDiscriminator {\n constructor(layout, property) {\n if (!((layout instanceof ExternalLayout)\n && layout.isCount())) {\n throw new TypeError('layout must be an unsigned integer ExternalLayout');\n }\n super(property || layout.property || 'variant');\n /** The {@link ExternalLayout} used to access the discriminator\n * value. */\n this.layout = layout;\n }\n /** Delegate decoding to {@link UnionLayoutDiscriminator#layout|layout}. */\n decode(b, offset) {\n return this.layout.decode(b, offset);\n }\n /** Delegate encoding to {@link UnionLayoutDiscriminator#layout|layout}. */\n encode(src, b, offset) {\n return this.layout.encode(src, b, offset);\n }\n}\nexports.UnionLayoutDiscriminator = UnionLayoutDiscriminator;\n/**\n * Represent any number of span-compatible layouts.\n *\n * *Factory*: {@link module:Layout.union|union}\n *\n * If the union has a {@link Union#defaultLayout|default layout} that\n * layout must have a non-negative {@link Layout#span|span}. The span\n * of a fixed-span union includes its {@link\n * Union#discriminator|discriminator} if the variant is a {@link\n * Union#usesPrefixDiscriminator|prefix of the union}, plus the span\n * of its {@link Union#defaultLayout|default layout}.\n *\n * If the union does not have a default layout then the encoded span\n * of the union depends on the encoded span of its variant (which may\n * be fixed or variable).\n *\n * {@link VariantLayout#layout|Variant layout}s are added through\n * {@link Union#addVariant|addVariant}. If the union has a default\n * layout, the span of the {@link VariantLayout#layout|layout\n * contained by the variant} must not exceed the span of the {@link\n * Union#defaultLayout|default layout} (minus the span of a {@link\n * Union#usesPrefixDiscriminator|prefix disriminator}, if used). The\n * span of the variant will equal the span of the union itself.\n *\n * The variant for a buffer can only be identified from the {@link\n * Union#discriminator|discriminator} {@link\n * UnionDiscriminator#property|property} (in the case of the {@link\n * Union#defaultLayout|default layout}), or by using {@link\n * Union#getVariant|getVariant} and examining the resulting {@link\n * VariantLayout} instance.\n *\n * A variant compatible with a JavaScript object can be identified\n * using {@link Union#getSourceVariant|getSourceVariant}.\n *\n * @param {(UnionDiscriminator|ExternalLayout|Layout)} discr - How to\n * identify the layout used to interpret the union contents. The\n * parameter must be an instance of {@link UnionDiscriminator}, an\n * {@link ExternalLayout} that satisfies {@link\n * ExternalLayout#isCount|isCount()}, or {@link UInt} (or {@link\n * UIntBE}). When a non-external layout element is passed the layout\n * appears at the start of the union. In all cases the (synthesized)\n * {@link UnionDiscriminator} instance is recorded as {@link\n * Union#discriminator|discriminator}.\n *\n * @param {(Layout|null)} defaultLayout - initializer for {@link\n * Union#defaultLayout|defaultLayout}. If absent defaults to `null`.\n * If `null` there is no default layout: the union has data-dependent\n * length and attempts to decode or encode unrecognized variants will\n * throw an exception. A {@link Layout} instance must have a\n * non-negative {@link Layout#span|span}, and if it lacks a {@link\n * Layout#property|property} the {@link\n * Union#defaultLayout|defaultLayout} will be a {@link\n * Layout#replicate|replica} with property `content`.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Union extends Layout {\n constructor(discr, defaultLayout, property) {\n let discriminator;\n if ((discr instanceof UInt)\n || (discr instanceof UIntBE)) {\n discriminator = new UnionLayoutDiscriminator(new OffsetLayout(discr));\n }\n else if ((discr instanceof ExternalLayout)\n && discr.isCount()) {\n discriminator = new UnionLayoutDiscriminator(discr);\n }\n else if (!(discr instanceof UnionDiscriminator)) {\n throw new TypeError('discr must be a UnionDiscriminator '\n + 'or an unsigned integer layout');\n }\n else {\n discriminator = discr;\n }\n if (undefined === defaultLayout) {\n defaultLayout = null;\n }\n if (!((null === defaultLayout)\n || (defaultLayout instanceof Layout))) {\n throw new TypeError('defaultLayout must be null or a Layout');\n }\n if (null !== defaultLayout) {\n if (0 > defaultLayout.span) {\n throw new Error('defaultLayout must have constant span');\n }\n if (undefined === defaultLayout.property) {\n defaultLayout = defaultLayout.replicate('content');\n }\n }\n /* The union span can be estimated only if there's a default\n * layout. The union spans its default layout, plus any prefix\n * variant layout. By construction both layouts, if present, have\n * non-negative span. */\n let span = -1;\n if (defaultLayout) {\n span = defaultLayout.span;\n if ((0 <= span) && ((discr instanceof UInt)\n || (discr instanceof UIntBE))) {\n span += discriminator.layout.span;\n }\n }\n super(span, property);\n /** The interface for the discriminator value in isolation.\n *\n * This a {@link UnionDiscriminator} either passed to the\n * constructor or synthesized from the `discr` constructor\n * argument. {@link\n * Union#usesPrefixDiscriminator|usesPrefixDiscriminator} will be\n * `true` iff the `discr` parameter was a non-offset {@link\n * Layout} instance. */\n this.discriminator = discriminator;\n /** `true` if the {@link Union#discriminator|discriminator} is the\n * first field in the union.\n *\n * If `false` the discriminator is obtained from somewhere\n * else. */\n this.usesPrefixDiscriminator = (discr instanceof UInt)\n || (discr instanceof UIntBE);\n /** The layout for non-discriminator content when the value of the\n * discriminator is not recognized.\n *\n * This is the value passed to the constructor. It is\n * structurally equivalent to the second component of {@link\n * Union#layout|layout} but may have a different property\n * name. */\n this.defaultLayout = defaultLayout;\n /** A registry of allowed variants.\n *\n * The keys are unsigned integers which should be compatible with\n * {@link Union.discriminator|discriminator}. The property value\n * is the corresponding {@link VariantLayout} instances assigned\n * to this union by {@link Union#addVariant|addVariant}.\n *\n * **NOTE** The registry remains mutable so that variants can be\n * {@link Union#addVariant|added} at any time. Users should not\n * manipulate the content of this property. */\n this.registry = {};\n /* Private variable used when invoking getSourceVariant */\n let boundGetSourceVariant = this.defaultGetSourceVariant.bind(this);\n /** Function to infer the variant selected by a source object.\n *\n * Defaults to {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant} but may\n * be overridden using {@link\n * Union#configGetSourceVariant|configGetSourceVariant}.\n *\n * @param {Object} src - as with {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant}.\n *\n * @returns {(undefined|VariantLayout)} The default variant\n * (`undefined`) or first registered variant that uses a property\n * available in `src`. */\n this.getSourceVariant = function (src) {\n return boundGetSourceVariant(src);\n };\n /** Function to override the implementation of {@link\n * Union#getSourceVariant|getSourceVariant}.\n *\n * Use this if the desired variant cannot be identified using the\n * algorithm of {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant}.\n *\n * **NOTE** The provided function will be invoked bound to this\n * Union instance, providing local access to {@link\n * Union#registry|registry}.\n *\n * @param {Function} gsv - a function that follows the API of\n * {@link Union#defaultGetSourceVariant|defaultGetSourceVariant}. */\n this.configGetSourceVariant = function (gsv) {\n boundGetSourceVariant = gsv.bind(this);\n };\n }\n /** @override */\n getSpan(b, offset = 0) {\n if (0 <= this.span) {\n return this.span;\n }\n /* Default layouts always have non-negative span, so we don't have\n * one and we have to recognize the variant which will in turn\n * determine the span. */\n const vlo = this.getVariant(b, offset);\n if (!vlo) {\n throw new Error('unable to determine span for unrecognized variant');\n }\n return vlo.getSpan(b, offset);\n }\n /**\n * Method to infer a registered Union variant compatible with `src`.\n *\n * The first satisfied rule in the following sequence defines the\n * return value:\n * * If `src` has properties matching the Union discriminator and\n * the default layout, `undefined` is returned regardless of the\n * value of the discriminator property (this ensures the default\n * layout will be used);\n * * If `src` has a property matching the Union discriminator, the\n * value of the discriminator identifies a registered variant, and\n * either (a) the variant has no layout, or (b) `src` has the\n * variant's property, then the variant is returned (because the\n * source satisfies the constraints of the variant it identifies);\n * * If `src` does not have a property matching the Union\n * discriminator, but does have a property matching a registered\n * variant, then the variant is returned (because the source\n * matches a variant without an explicit conflict);\n * * An error is thrown (because we either can't identify a variant,\n * or we were explicitly told the variant but can't satisfy it).\n *\n * @param {Object} src - an object presumed to be compatible with\n * the content of the Union.\n *\n * @return {(undefined|VariantLayout)} - as described above.\n *\n * @throws {Error} - if `src` cannot be associated with a default or\n * registered variant.\n */\n defaultGetSourceVariant(src) {\n if (Object.prototype.hasOwnProperty.call(src, this.discriminator.property)) {\n if (this.defaultLayout && this.defaultLayout.property\n && Object.prototype.hasOwnProperty.call(src, this.defaultLayout.property)) {\n return undefined;\n }\n const vlo = this.registry[src[this.discriminator.property]];\n if (vlo\n && ((!vlo.layout)\n || (vlo.property && Object.prototype.hasOwnProperty.call(src, vlo.property)))) {\n return vlo;\n }\n }\n else {\n for (const tag in this.registry) {\n const vlo = this.registry[tag];\n if (vlo.property && Object.prototype.hasOwnProperty.call(src, vlo.property)) {\n return vlo;\n }\n }\n }\n throw new Error('unable to infer src variant');\n }\n /** Implement {@link Layout#decode|decode} for {@link Union}.\n *\n * If the variant is {@link Union#addVariant|registered} the return\n * value is an instance of that variant, with no explicit\n * discriminator. Otherwise the {@link Union#defaultLayout|default\n * layout} is used to decode the content. */\n decode(b, offset = 0) {\n let dest;\n const dlo = this.discriminator;\n const discr = dlo.decode(b, offset);\n const clo = this.registry[discr];\n if (undefined === clo) {\n const defaultLayout = this.defaultLayout;\n let contentOffset = 0;\n if (this.usesPrefixDiscriminator) {\n contentOffset = dlo.layout.span;\n }\n dest = this.makeDestinationObject();\n dest[dlo.property] = discr;\n // defaultLayout.property can be undefined, but this is allowed by buffer-layout\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n dest[defaultLayout.property] = defaultLayout.decode(b, offset + contentOffset);\n }\n else {\n dest = clo.decode(b, offset);\n }\n return dest;\n }\n /** Implement {@link Layout#encode|encode} for {@link Union}.\n *\n * This API assumes the `src` object is consistent with the union's\n * {@link Union#defaultLayout|default layout}. To encode variants\n * use the appropriate variant-specific {@link VariantLayout#encode}\n * method. */\n encode(src, b, offset = 0) {\n const vlo = this.getSourceVariant(src);\n if (undefined === vlo) {\n const dlo = this.discriminator;\n // this.defaultLayout is not undefined when vlo is undefined\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n const clo = this.defaultLayout;\n let contentOffset = 0;\n if (this.usesPrefixDiscriminator) {\n contentOffset = dlo.layout.span;\n }\n dlo.encode(src[dlo.property], b, offset);\n // clo.property is not undefined when vlo is undefined\n // eslint-disable-next-line @typescript-eslint/no-non-null-assertion\n return contentOffset + clo.encode(src[clo.property], b, offset + contentOffset);\n }\n return vlo.encode(src, b, offset);\n }\n /** Register a new variant structure within a union. The newly\n * created variant is returned.\n *\n * @param {Number} variant - initializer for {@link\n * VariantLayout#variant|variant}.\n *\n * @param {Layout} layout - initializer for {@link\n * VariantLayout#layout|layout}.\n *\n * @param {String} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {VariantLayout} */\n addVariant(variant, layout, property) {\n const rv = new VariantLayout(this, variant, layout, property);\n this.registry[variant] = rv;\n return rv;\n }\n /**\n * Get the layout associated with a registered variant.\n *\n * If `vb` does not produce a registered variant the function returns\n * `undefined`.\n *\n * @param {(Number|Uint8Array)} vb - either the variant number, or a\n * buffer from which the discriminator is to be read.\n *\n * @param {Number} offset - offset into `vb` for the start of the\n * union. Used only when `vb` is an instance of {Uint8Array}.\n *\n * @return {({VariantLayout}|undefined)}\n */\n getVariant(vb, offset = 0) {\n let variant;\n if (vb instanceof Uint8Array) {\n variant = this.discriminator.decode(vb, offset);\n }\n else {\n variant = vb;\n }\n return this.registry[variant];\n }\n}\nexports.Union = Union;\n/**\n * Represent a specific variant within a containing union.\n *\n * **NOTE** The {@link Layout#span|span} of the variant may include\n * the span of the {@link Union#discriminator|discriminator} used to\n * identify it, but values read and written using the variant strictly\n * conform to the content of {@link VariantLayout#layout|layout}.\n *\n * **NOTE** User code should not invoke this constructor directly. Use\n * the union {@link Union#addVariant|addVariant} helper method.\n *\n * @param {Union} union - initializer for {@link\n * VariantLayout#union|union}.\n *\n * @param {Number} variant - initializer for {@link\n * VariantLayout#variant|variant}.\n *\n * @param {Layout} [layout] - initializer for {@link\n * VariantLayout#layout|layout}. If absent the variant carries no\n * data.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}. Unlike many other layouts, variant\n * layouts normally include a property name so they can be identified\n * within their containing {@link Union}. The property identifier may\n * be absent only if `layout` is is absent.\n *\n * @augments {Layout}\n */\nclass VariantLayout extends Layout {\n constructor(union, variant, layout, property) {\n if (!(union instanceof Union)) {\n throw new TypeError('union must be a Union');\n }\n if ((!Number.isInteger(variant)) || (0 > variant)) {\n throw new TypeError('variant must be a (non-negative) integer');\n }\n if (('string' === typeof layout)\n && (undefined === property)) {\n property = layout;\n layout = null;\n }\n if (layout) {\n if (!(layout instanceof Layout)) {\n throw new TypeError('layout must be a Layout');\n }\n if ((null !== union.defaultLayout)\n && (0 <= layout.span)\n && (layout.span > union.defaultLayout.span)) {\n throw new Error('variant span exceeds span of containing union');\n }\n if ('string' !== typeof property) {\n throw new TypeError('variant must have a String property');\n }\n }\n let span = union.span;\n if (0 > union.span) {\n span = layout ? layout.span : 0;\n if ((0 <= span) && union.usesPrefixDiscriminator) {\n span += union.discriminator.layout.span;\n }\n }\n super(span, property);\n /** The {@link Union} to which this variant belongs. */\n this.union = union;\n /** The unsigned integral value identifying this variant within\n * the {@link Union#discriminator|discriminator} of the containing\n * union. */\n this.variant = variant;\n /** The {@link Layout} to be used when reading/writing the\n * non-discriminator part of the {@link\n * VariantLayout#union|union}. If `null` the variant carries no\n * data. */\n this.layout = layout || null;\n }\n /** @override */\n getSpan(b, offset = 0) {\n if (0 <= this.span) {\n /* Will be equal to the containing union span if that is not\n * variable. */\n return this.span;\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n /* Span is defined solely by the variant (and prefix discriminator) */\n let span = 0;\n if (this.layout) {\n span = this.layout.getSpan(b, offset + contentOffset);\n }\n return contentOffset + span;\n }\n /** @override */\n decode(b, offset = 0) {\n const dest = this.makeDestinationObject();\n if (this !== this.union.getVariant(b, offset)) {\n throw new Error('variant mismatch');\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n if (this.layout) {\n dest[this.property] = this.layout.decode(b, offset + contentOffset);\n }\n else if (this.property) {\n dest[this.property] = true;\n }\n else if (this.union.usesPrefixDiscriminator) {\n dest[this.union.discriminator.property] = this.variant;\n }\n return dest;\n }\n /** @override */\n encode(src, b, offset = 0) {\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n if (this.layout\n && (!Object.prototype.hasOwnProperty.call(src, this.property))) {\n throw new TypeError('variant lacks property ' + this.property);\n }\n this.union.discriminator.encode(this.variant, b, offset);\n let span = contentOffset;\n if (this.layout) {\n this.layout.encode(src[this.property], b, offset + contentOffset);\n span += this.layout.getSpan(b, offset + contentOffset);\n if ((0 <= this.union.span)\n && (span > this.union.span)) {\n throw new Error('encoded variant overruns containing union');\n }\n }\n return span;\n }\n /** Delegate {@link Layout#fromArray|fromArray} to {@link\n * VariantLayout#layout|layout}. */\n fromArray(values) {\n if (this.layout) {\n return this.layout.fromArray(values);\n }\n return undefined;\n }\n}\nexports.VariantLayout = VariantLayout;\n/** JavaScript chose to define bitwise operations as operating on\n * signed 32-bit values in 2's complement form, meaning any integer\n * with bit 31 set is going to look negative. For right shifts that's\n * not a problem, because `>>>` is a logical shift, but for every\n * other bitwise operator we have to compensate for possible negative\n * results. */\nfunction fixBitwiseResult(v) {\n if (0 > v) {\n v += 0x100000000;\n }\n return v;\n}\n/**\n * Contain a sequence of bit fields as an unsigned integer.\n *\n * *Factory*: {@link module:Layout.bits|bits}\n *\n * This is a container element; within it there are {@link BitField}\n * instances that provide the extracted properties. The container\n * simply defines the aggregate representation and its bit ordering.\n * The representation is an object containing properties with numeric\n * or {@link Boolean} values.\n *\n * {@link BitField}s are added with the {@link\n * BitStructure#addField|addField} and {@link\n * BitStructure#addBoolean|addBoolean} methods.\n\n * @param {Layout} word - initializer for {@link\n * BitStructure#word|word}. The parameter must be an instance of\n * {@link UInt} (or {@link UIntBE}) that is no more than 4 bytes wide.\n *\n * @param {bool} [msb] - `true` if the bit numbering starts at the\n * most significant bit of the containing word; `false` (default) if\n * it starts at the least significant bit of the containing word. If\n * the parameter at this position is a string and `property` is\n * `undefined` the value of this argument will instead be used as the\n * value of `property`.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass BitStructure extends Layout {\n constructor(word, msb, property) {\n if (!((word instanceof UInt)\n || (word instanceof UIntBE))) {\n throw new TypeError('word must be a UInt or UIntBE layout');\n }\n if (('string' === typeof msb)\n && (undefined === property)) {\n property = msb;\n msb = false;\n }\n if (4 < word.span) {\n throw new RangeError('word cannot exceed 32 bits');\n }\n super(word.span, property);\n /** The layout used for the packed value. {@link BitField}\n * instances are packed sequentially depending on {@link\n * BitStructure#msb|msb}. */\n this.word = word;\n /** Whether the bit sequences are packed starting at the most\n * significant bit growing down (`true`), or the least significant\n * bit growing up (`false`).\n *\n * **NOTE** Regardless of this value, the least significant bit of\n * any {@link BitField} value is the least significant bit of the\n * corresponding section of the packed value. */\n this.msb = !!msb;\n /** The sequence of {@link BitField} layouts that comprise the\n * packed structure.\n *\n * **NOTE** The array remains mutable to allow fields to be {@link\n * BitStructure#addField|added} after construction. Users should\n * not manipulate the content of this property.*/\n this.fields = [];\n /* Storage for the value. Capture a variable instead of using an\n * instance property because we don't want anything to change the\n * value without going through the mutator. */\n let value = 0;\n this._packedSetValue = function (v) {\n value = fixBitwiseResult(v);\n return this;\n };\n this._packedGetValue = function () {\n return value;\n };\n }\n /** @override */\n decode(b, offset = 0) {\n const dest = this.makeDestinationObject();\n const value = this.word.decode(b, offset);\n this._packedSetValue(value);\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n dest[fd.property] = fd.decode(b);\n }\n }\n return dest;\n }\n /** Implement {@link Layout#encode|encode} for {@link BitStructure}.\n *\n * If `src` is missing a property for a member with a defined {@link\n * Layout#property|property} the corresponding region of the packed\n * value is left unmodified. Unused bits are also left unmodified. */\n encode(src, b, offset = 0) {\n const value = this.word.decode(b, offset);\n this._packedSetValue(value);\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n const fv = src[fd.property];\n if (undefined !== fv) {\n fd.encode(fv);\n }\n }\n }\n return this.word.encode(this._packedGetValue(), b, offset);\n }\n /** Register a new bitfield with a containing bit structure. The\n * resulting bitfield is returned.\n *\n * @param {Number} bits - initializer for {@link BitField#bits|bits}.\n *\n * @param {string} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {BitField} */\n addField(bits, property) {\n const bf = new BitField(this, bits, property);\n this.fields.push(bf);\n return bf;\n }\n /** As with {@link BitStructure#addField|addField} for single-bit\n * fields with `boolean` value representation.\n *\n * @param {string} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {Boolean} */\n // `Boolean` conflicts with the native primitive type\n // eslint-disable-next-line @typescript-eslint/ban-types\n addBoolean(property) {\n // This is my Boolean, not the Javascript one.\n const bf = new Boolean(this, property);\n this.fields.push(bf);\n return bf;\n }\n /**\n * Get access to the bit field for a given property.\n *\n * @param {String} property - the bit field of interest.\n *\n * @return {BitField} - the field associated with `property`, or\n * undefined if there is no such property.\n */\n fieldFor(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n for (const fd of this.fields) {\n if (fd.property === property) {\n return fd;\n }\n }\n return undefined;\n }\n}\nexports.BitStructure = BitStructure;\n/**\n * Represent a sequence of bits within a {@link BitStructure}.\n *\n * All bit field values are represented as unsigned integers.\n *\n * **NOTE** User code should not invoke this constructor directly.\n * Use the container {@link BitStructure#addField|addField} helper\n * method.\n *\n * **NOTE** BitField instances are not instances of {@link Layout}\n * since {@link Layout#span|span} measures 8-bit units.\n *\n * @param {BitStructure} container - initializer for {@link\n * BitField#container|container}.\n *\n * @param {Number} bits - initializer for {@link BitField#bits|bits}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n */\nclass BitField {\n constructor(container, bits, property) {\n if (!(container instanceof BitStructure)) {\n throw new TypeError('container must be a BitStructure');\n }\n if ((!Number.isInteger(bits)) || (0 >= bits)) {\n throw new TypeError('bits must be positive integer');\n }\n const totalBits = 8 * container.span;\n const usedBits = container.fields.reduce((sum, fd) => sum + fd.bits, 0);\n if ((bits + usedBits) > totalBits) {\n throw new Error('bits too long for span remainder ('\n + (totalBits - usedBits) + ' of '\n + totalBits + ' remain)');\n }\n /** The {@link BitStructure} instance to which this bit field\n * belongs. */\n this.container = container;\n /** The span of this value in bits. */\n this.bits = bits;\n /** A mask of {@link BitField#bits|bits} bits isolating value bits\n * that fit within the field.\n *\n * That is, it masks a value that has not yet been shifted into\n * position within its containing packed integer. */\n this.valueMask = (1 << bits) - 1;\n if (32 === bits) { // shifted value out of range\n this.valueMask = 0xFFFFFFFF;\n }\n /** The offset of the value within the containing packed unsigned\n * integer. The least significant bit of the packed value is at\n * offset zero, regardless of bit ordering used. */\n this.start = usedBits;\n if (this.container.msb) {\n this.start = totalBits - usedBits - bits;\n }\n /** A mask of {@link BitField#bits|bits} isolating the field value\n * within the containing packed unsigned integer. */\n this.wordMask = fixBitwiseResult(this.valueMask << this.start);\n /** The property name used when this bitfield is represented in an\n * Object.\n *\n * Intended to be functionally equivalent to {@link\n * Layout#property}.\n *\n * If left undefined the corresponding span of bits will be\n * treated as padding: it will not be mutated by {@link\n * Layout#encode|encode} nor represented as a property in the\n * decoded Object. */\n this.property = property;\n }\n /** Store a value into the corresponding subsequence of the containing\n * bit field. */\n decode(b, offset) {\n const word = this.container._packedGetValue();\n const wordValue = fixBitwiseResult(word & this.wordMask);\n const value = wordValue >>> this.start;\n return value;\n }\n /** Store a value into the corresponding subsequence of the containing\n * bit field.\n *\n * **NOTE** This is not a specialization of {@link\n * Layout#encode|Layout.encode} and there is no return value. */\n encode(value) {\n if ('number' !== typeof value\n || !Number.isInteger(value)\n || (value !== fixBitwiseResult(value & this.valueMask))) {\n throw new TypeError(nameWithProperty('BitField.encode', this)\n + ' value must be integer not exceeding ' + this.valueMask);\n }\n const word = this.container._packedGetValue();\n const wordValue = fixBitwiseResult(value << this.start);\n this.container._packedSetValue(fixBitwiseResult(word & ~this.wordMask)\n | wordValue);\n }\n}\nexports.BitField = BitField;\n/**\n * Represent a single bit within a {@link BitStructure} as a\n * JavaScript boolean.\n *\n * **NOTE** User code should not invoke this constructor directly.\n * Use the container {@link BitStructure#addBoolean|addBoolean} helper\n * method.\n *\n * @param {BitStructure} container - initializer for {@link\n * BitField#container|container}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {BitField}\n */\n/* eslint-disable no-extend-native */\nclass Boolean extends BitField {\n constructor(container, property) {\n super(container, 1, property);\n }\n /** Override {@link BitField#decode|decode} for {@link Boolean|Boolean}.\n *\n * @returns {boolean} */\n decode(b, offset) {\n return !!super.decode(b, offset);\n }\n /** @override */\n encode(value) {\n if ('boolean' === typeof value) {\n // BitField requires integer values\n value = +value;\n }\n super.encode(value);\n }\n}\nexports.Boolean = Boolean;\n/* eslint-enable no-extend-native */\n/**\n * Contain a fixed-length block of arbitrary data, represented as a\n * Uint8Array.\n *\n * *Factory*: {@link module:Layout.blob|blob}\n *\n * @param {(Number|ExternalLayout)} length - initializes {@link\n * Blob#length|length}.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Blob extends Layout {\n constructor(length, property) {\n if (!(((length instanceof ExternalLayout) && length.isCount())\n || (Number.isInteger(length) && (0 <= length)))) {\n throw new TypeError('length must be positive integer '\n + 'or an unsigned integer ExternalLayout');\n }\n let span = -1;\n if (!(length instanceof ExternalLayout)) {\n span = length;\n }\n super(span, property);\n /** The number of bytes in the blob.\n *\n * This may be a non-negative integer, or an instance of {@link\n * ExternalLayout} that satisfies {@link\n * ExternalLayout#isCount|isCount()}. */\n this.length = length;\n }\n /** @override */\n getSpan(b, offset) {\n let span = this.span;\n if (0 > span) {\n span = this.length.decode(b, offset);\n }\n return span;\n }\n /** @override */\n decode(b, offset = 0) {\n let span = this.span;\n if (0 > span) {\n span = this.length.decode(b, offset);\n }\n return uint8ArrayToBuffer(b).slice(offset, offset + span);\n }\n /** Implement {@link Layout#encode|encode} for {@link Blob}.\n *\n * **NOTE** If {@link Layout#count|count} is an instance of {@link\n * ExternalLayout} then the length of `src` will be encoded as the\n * count after `src` is encoded. */\n encode(src, b, offset) {\n let span = this.length;\n if (this.length instanceof ExternalLayout) {\n span = src.length;\n }\n if (!(src instanceof Uint8Array && span === src.length)) {\n throw new TypeError(nameWithProperty('Blob.encode', this)\n + ' requires (length ' + span + ') Uint8Array as src');\n }\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Uint8Array');\n }\n const srcBuffer = uint8ArrayToBuffer(src);\n uint8ArrayToBuffer(b).write(srcBuffer.toString('hex'), offset, span, 'hex');\n if (this.length instanceof ExternalLayout) {\n this.length.encode(span, b, offset);\n }\n return span;\n }\n}\nexports.Blob = Blob;\n/**\n * Contain a `NUL`-terminated UTF8 string.\n *\n * *Factory*: {@link module:Layout.cstr|cstr}\n *\n * **NOTE** Any UTF8 string that incorporates a zero-valued byte will\n * not be correctly decoded by this layout.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass CString extends Layout {\n constructor(property) {\n super(-1, property);\n }\n /** @override */\n getSpan(b, offset = 0) {\n checkUint8Array(b);\n let idx = offset;\n while ((idx < b.length) && (0 !== b[idx])) {\n idx += 1;\n }\n return 1 + idx - offset;\n }\n /** @override */\n decode(b, offset = 0) {\n const span = this.getSpan(b, offset);\n return uint8ArrayToBuffer(b).slice(offset, offset + span - 1).toString('utf-8');\n }\n /** @override */\n encode(src, b, offset = 0) {\n /* Must force this to a string, lest it be a number and the\n * \"utf8-encoding\" below actually allocate a buffer of length\n * src */\n if ('string' !== typeof src) {\n src = String(src);\n }\n const srcb = buffer_1.Buffer.from(src, 'utf8');\n const span = srcb.length;\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n const buffer = uint8ArrayToBuffer(b);\n srcb.copy(buffer, offset);\n buffer[offset + span] = 0;\n return span + 1;\n }\n}\nexports.CString = CString;\n/**\n * Contain a UTF8 string with implicit length.\n *\n * *Factory*: {@link module:Layout.utf8|utf8}\n *\n * **NOTE** Because the length is implicit in the size of the buffer\n * this layout should be used only in isolation, or in a situation\n * where the length can be expressed by operating on a slice of the\n * containing buffer.\n *\n * @param {Number} [maxSpan] - the maximum length allowed for encoded\n * string content. If not provided there is no bound on the allowed\n * content.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UTF8 extends Layout {\n constructor(maxSpan, property) {\n if (('string' === typeof maxSpan) && (undefined === property)) {\n property = maxSpan;\n maxSpan = undefined;\n }\n if (undefined === maxSpan) {\n maxSpan = -1;\n }\n else if (!Number.isInteger(maxSpan)) {\n throw new TypeError('maxSpan must be an integer');\n }\n super(-1, property);\n /** The maximum span of the layout in bytes.\n *\n * Positive values are generally expected. Zero is abnormal.\n * Attempts to encode or decode a value that exceeds this length\n * will throw a `RangeError`.\n *\n * A negative value indicates that there is no bound on the length\n * of the content. */\n this.maxSpan = maxSpan;\n }\n /** @override */\n getSpan(b, offset = 0) {\n checkUint8Array(b);\n return b.length - offset;\n }\n /** @override */\n decode(b, offset = 0) {\n const span = this.getSpan(b, offset);\n if ((0 <= this.maxSpan)\n && (this.maxSpan < span)) {\n throw new RangeError('text length exceeds maxSpan');\n }\n return uint8ArrayToBuffer(b).slice(offset, offset + span).toString('utf-8');\n }\n /** @override */\n encode(src, b, offset = 0) {\n /* Must force this to a string, lest it be a number and the\n * \"utf8-encoding\" below actually allocate a buffer of length\n * src */\n if ('string' !== typeof src) {\n src = String(src);\n }\n const srcb = buffer_1.Buffer.from(src, 'utf8');\n const span = srcb.length;\n if ((0 <= this.maxSpan)\n && (this.maxSpan < span)) {\n throw new RangeError('text length exceeds maxSpan');\n }\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n srcb.copy(uint8ArrayToBuffer(b), offset);\n return span;\n }\n}\nexports.UTF8 = UTF8;\n/**\n * Contain a constant value.\n *\n * This layout may be used in cases where a JavaScript value can be\n * inferred without an expression in the binary encoding. An example\n * would be a {@link VariantLayout|variant layout} where the content\n * is implied by the union {@link Union#discriminator|discriminator}.\n *\n * @param {Object|Number|String} value - initializer for {@link\n * Constant#value|value}. If the value is an object (or array) and\n * the application intends the object to remain unchanged regardless\n * of what is done to values decoded by this layout, the value should\n * be frozen prior passing it to this constructor.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Constant extends Layout {\n constructor(value, property) {\n super(0, property);\n /** The value produced by this constant when the layout is {@link\n * Constant#decode|decoded}.\n *\n * Any JavaScript value including `null` and `undefined` is\n * permitted.\n *\n * **WARNING** If `value` passed in the constructor was not\n * frozen, it is possible for users of decoded values to change\n * the content of the value. */\n this.value = value;\n }\n /** @override */\n decode(b, offset) {\n return this.value;\n }\n /** @override */\n encode(src, b, offset) {\n /* Constants take no space */\n return 0;\n }\n}\nexports.Constant = Constant;\n/** Factory for {@link GreedyCount}. */\nexports.greedy = ((elementSpan, property) => new GreedyCount(elementSpan, property));\n/** Factory for {@link OffsetLayout}. */\nexports.offset = ((layout, offset, property) => new OffsetLayout(layout, offset, property));\n/** Factory for {@link UInt|unsigned int layouts} spanning one\n * byte. */\nexports.u8 = ((property) => new UInt(1, property));\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning two bytes. */\nexports.u16 = ((property) => new UInt(2, property));\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning three bytes. */\nexports.u24 = ((property) => new UInt(3, property));\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning four bytes. */\nexports.u32 = ((property) => new UInt(4, property));\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning five bytes. */\nexports.u40 = ((property) => new UInt(5, property));\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning six bytes. */\nexports.u48 = ((property) => new UInt(6, property));\n/** Factory for {@link NearUInt64|little-endian unsigned int\n * layouts} interpreted as Numbers. */\nexports.nu64 = ((property) => new NearUInt64(property));\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning two bytes. */\nexports.u16be = ((property) => new UIntBE(2, property));\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning three bytes. */\nexports.u24be = ((property) => new UIntBE(3, property));\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning four bytes. */\nexports.u32be = ((property) => new UIntBE(4, property));\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning five bytes. */\nexports.u40be = ((property) => new UIntBE(5, property));\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning six bytes. */\nexports.u48be = ((property) => new UIntBE(6, property));\n/** Factory for {@link NearUInt64BE|big-endian unsigned int\n * layouts} interpreted as Numbers. */\nexports.nu64be = ((property) => new NearUInt64BE(property));\n/** Factory for {@link Int|signed int layouts} spanning one\n * byte. */\nexports.s8 = ((property) => new Int(1, property));\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning two bytes. */\nexports.s16 = ((property) => new Int(2, property));\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning three bytes. */\nexports.s24 = ((property) => new Int(3, property));\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning four bytes. */\nexports.s32 = ((property) => new Int(4, property));\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning five bytes. */\nexports.s40 = ((property) => new Int(5, property));\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning six bytes. */\nexports.s48 = ((property) => new Int(6, property));\n/** Factory for {@link NearInt64|little-endian signed int layouts}\n * interpreted as Numbers. */\nexports.ns64 = ((property) => new NearInt64(property));\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning two bytes. */\nexports.s16be = ((property) => new IntBE(2, property));\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning three bytes. */\nexports.s24be = ((property) => new IntBE(3, property));\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning four bytes. */\nexports.s32be = ((property) => new IntBE(4, property));\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning five bytes. */\nexports.s40be = ((property) => new IntBE(5, property));\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning six bytes. */\nexports.s48be = ((property) => new IntBE(6, property));\n/** Factory for {@link NearInt64BE|big-endian signed int layouts}\n * interpreted as Numbers. */\nexports.ns64be = ((property) => new NearInt64BE(property));\n/** Factory for {@link Float|little-endian 32-bit floating point} values. */\nexports.f32 = ((property) => new Float(property));\n/** Factory for {@link FloatBE|big-endian 32-bit floating point} values. */\nexports.f32be = ((property) => new FloatBE(property));\n/** Factory for {@link Double|little-endian 64-bit floating point} values. */\nexports.f64 = ((property) => new Double(property));\n/** Factory for {@link DoubleBE|big-endian 64-bit floating point} values. */\nexports.f64be = ((property) => new DoubleBE(property));\n/** Factory for {@link Structure} values. */\nexports.struct = ((fields, property, decodePrefixes) => new Structure(fields, property, decodePrefixes));\n/** Factory for {@link BitStructure} values. */\nexports.bits = ((word, msb, property) => new BitStructure(word, msb, property));\n/** Factory for {@link Sequence} values. */\nexports.seq = ((elementLayout, count, property) => new Sequence(elementLayout, count, property));\n/** Factory for {@link Union} values. */\nexports.union = ((discr, defaultLayout, property) => new Union(discr, defaultLayout, property));\n/** Factory for {@link UnionLayoutDiscriminator} values. */\nexports.unionLayoutDiscriminator = ((layout, property) => new UnionLayoutDiscriminator(layout, property));\n/** Factory for {@link Blob} values. */\nexports.blob = ((length, property) => new Blob(length, property));\n/** Factory for {@link CString} values. */\nexports.cstr = ((property) => new CString(property));\n/** Factory for {@link UTF8} values. */\nexports.utf8 = ((maxSpan, property) => new UTF8(maxSpan, property));\n/** Factory for {@link Constant} values. */\nexports.constant = ((value, property) => new Constant(value, property));\n//# sourceMappingURL=Layout.js.map","import { fetch } from 'cross-fetch';\nimport tokenlist from './../tokens/solana.tokenlist.json';\nexport var ENV;\n(function (ENV) {\n ENV[ENV[\"MainnetBeta\"] = 101] = \"MainnetBeta\";\n ENV[ENV[\"Testnet\"] = 102] = \"Testnet\";\n ENV[ENV[\"Devnet\"] = 103] = \"Devnet\";\n})(ENV || (ENV = {}));\nexport const CLUSTER_SLUGS = {\n 'mainnet-beta': ENV.MainnetBeta,\n testnet: ENV.Testnet,\n devnet: ENV.Devnet,\n};\nexport class GitHubTokenListResolutionStrategy {\n constructor() {\n this.repositories = [\n 'https://raw.githubusercontent.com/solana-labs/token-list/main/src/tokens/solana.tokenlist.json',\n ];\n this.resolve = () => {\n return queryJsonFiles(this.repositories);\n };\n }\n}\nexport class CDNTokenListResolutionStrategy {\n constructor() {\n this.repositories = [\n 'https://cdn.jsdelivr.net/gh/solana-labs/token-list@latest/src/tokens/solana.tokenlist.json',\n ];\n this.resolve = () => {\n return queryJsonFiles(this.repositories);\n };\n }\n}\nexport class SolanaTokenListResolutionStrategy {\n constructor() {\n this.repositories = ['https://token-list.solana.com/solana.tokenlist.json'];\n this.resolve = () => {\n return queryJsonFiles(this.repositories);\n };\n }\n}\nconst queryJsonFiles = async (files) => {\n const responses = (await Promise.all(files.map(async (repo) => {\n try {\n const response = await fetch(repo);\n const json = (await response.json());\n return json;\n }\n catch {\n console.info(`@solana/token-registry: falling back to static repository.`);\n return tokenlist;\n }\n })));\n return responses\n .map((tokenlist) => tokenlist.tokens || [])\n .reduce((acc, arr) => acc.concat(arr), []);\n};\nexport var Strategy;\n(function (Strategy) {\n Strategy[\"GitHub\"] = \"GitHub\";\n Strategy[\"Static\"] = \"Static\";\n Strategy[\"Solana\"] = \"Solana\";\n Strategy[\"CDN\"] = \"CDN\";\n})(Strategy || (Strategy = {}));\nexport class StaticTokenListResolutionStrategy {\n constructor() {\n this.resolve = () => {\n return tokenlist.tokens || [];\n };\n }\n}\nexport class TokenListProvider {\n constructor() {\n this.resolve = async (strategy = Strategy.CDN) => {\n return new TokenListContainer(await TokenListProvider.strategies[strategy].resolve());\n };\n }\n}\nTokenListProvider.strategies = {\n [Strategy.GitHub]: new GitHubTokenListResolutionStrategy(),\n [Strategy.Static]: new StaticTokenListResolutionStrategy(),\n [Strategy.Solana]: new SolanaTokenListResolutionStrategy(),\n [Strategy.CDN]: new CDNTokenListResolutionStrategy(),\n};\nexport class TokenListContainer {\n constructor(tokenList) {\n this.tokenList = tokenList;\n this.filterByTag = (tag) => {\n return new TokenListContainer(this.tokenList.filter((item) => (item.tags || []).includes(tag)));\n };\n this.filterByChainId = (chainId) => {\n return new TokenListContainer(this.tokenList.filter((item) => item.chainId === chainId));\n };\n this.excludeByChainId = (chainId) => {\n return new TokenListContainer(this.tokenList.filter((item) => item.chainId !== chainId));\n };\n this.excludeByTag = (tag) => {\n return new TokenListContainer(this.tokenList.filter((item) => !(item.tags || []).includes(tag)));\n };\n this.filterByClusterSlug = (slug) => {\n if (slug in CLUSTER_SLUGS) {\n return this.filterByChainId(CLUSTER_SLUGS[slug]);\n }\n throw new Error(`Unknown slug: ${slug}, please use one of ${Object.keys(CLUSTER_SLUGS)}`);\n };\n this.getList = () => {\n return this.tokenList;\n };\n }\n}\n//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5saXN0LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2xpYi90b2tlbmxpc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUVwQyxPQUFPLFNBQVMsTUFBTSxtQ0FBbUMsQ0FBQztBQUUxRCxNQUFNLENBQU4sSUFBWSxHQUlYO0FBSkQsV0FBWSxHQUFHO0lBQ2IsNkNBQWlCLENBQUE7SUFDakIscUNBQWEsQ0FBQTtJQUNiLG1DQUFZLENBQUE7QUFDZCxDQUFDLEVBSlcsR0FBRyxLQUFILEdBQUcsUUFJZDtBQStDRCxNQUFNLENBQUMsTUFBTSxhQUFhLEdBQTBCO0lBQ2xELGNBQWMsRUFBRSxHQUFHLENBQUMsV0FBVztJQUMvQixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87SUFDcEIsTUFBTSxFQUFFLEdBQUcsQ0FBQyxNQUFNO0NBQ25CLENBQUM7QUFFRixNQUFNLE9BQU8saUNBQWlDO0lBQTlDO1FBQ0UsaUJBQVksR0FBRztZQUNiLGdHQUFnRztTQUNqRyxDQUFDO1FBRUYsWUFBTyxHQUFHLEdBQUcsRUFBRTtZQUNiLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8sOEJBQThCO0lBQTNDO1FBQ0UsaUJBQVksR0FBRztZQUNiLDRGQUE0RjtTQUM3RixDQUFDO1FBRUYsWUFBTyxHQUFHLEdBQUcsRUFBRTtZQUNiLE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxZQUFZLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUM7SUFDSixDQUFDO0NBQUE7QUFFRCxNQUFNLE9BQU8saUNBQWlDO0lBQTlDO1FBQ0UsaUJBQVksR0FBRyxDQUFDLHFEQUFxRCxDQUFDLENBQUM7UUFFdkUsWUFBTyxHQUFHLEdBQUcsRUFBRTtZQUNiLE9BQU8sY0FBYyxDQUFD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","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import _defineProperty from '@babel/runtime/helpers/defineProperty';\nimport BN from 'bn.js';\nimport { sendAndConfirmTransaction as sendAndConfirmTransaction$1, PublicKey, Keypair, Transaction, SystemProgram, SYSVAR_RENT_PUBKEY, TransactionInstruction } from '@solana/web3.js';\n\nvar buffer = {};\n\nvar base64Js = {};\n\nbase64Js.byteLength = byteLength;\nbase64Js.toByteArray = toByteArray;\nbase64Js.fromByteArray = fromByteArray;\n\nvar lookup = [];\nvar revLookup = [];\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array;\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i];\n revLookup[code.charCodeAt(i)] = i;\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62;\nrevLookup['_'.charCodeAt(0)] = 63;\n\nfunction getLens (b64) {\n var len = b64.length;\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=');\n if (validLen === -1) validLen = len;\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4);\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp;\n var lens = getLens(b64);\n var validLen = lens[0];\n var placeHoldersLen = lens[1];\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen));\n\n var curByte = 0;\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen;\n\n var i;\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)];\n arr[curByte++] = (tmp >> 16) & 0xFF;\n arr[curByte++] = (tmp >> 8) & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4);\n arr[curByte++] = tmp & 0xFF;\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2);\n arr[curByte++] = (tmp >> 8) & 0xFF;\n arr[curByte++] = tmp & 0xFF;\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp;\n var output = [];\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF);\n output.push(tripletToBase64(tmp));\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp;\n var len = uint8.length;\n var extraBytes = len % 3; // if we have 1 byte left, pad 2 bytes\n var parts = [];\n var maxChunkLength = 16383; // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)));\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1];\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n );\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1];\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n );\n }\n\n return parts.join('')\n}\n\nvar ieee754 = {};\n\n/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\n\nieee754.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m;\n var eLen = (nBytes * 8) - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var nBits = -7;\n var i = isLE ? (nBytes - 1) : 0;\n var d = isLE ? -1 : 1;\n var s = buffer[offset + i];\n\n i += d;\n\n e = s & ((1 << (-nBits)) - 1);\n s >>= (-nBits);\n nBits += eLen;\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1);\n e >>= (-nBits);\n nBits += mLen;\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias;\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen);\n e = e - eBias;\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n};\n\nieee754.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c;\n var eLen = (nBytes * 8) - mLen - 1;\n var eMax = (1 << eLen) - 1;\n var eBias = eMax >> 1;\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0);\n var i = isLE ? 0 : (nBytes - 1);\n var d = isLE ? 1 : -1;\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0;\n\n value = Math.abs(value);\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0;\n e = eMax;\n } else {\n e = Math.floor(Math.log(value) / Math.LN2);\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--;\n c *= 2;\n }\n if (e + eBias >= 1) {\n value += rt / c;\n } else {\n value += rt * Math.pow(2, 1 - eBias);\n }\n if (value * c >= 2) {\n e++;\n c /= 2;\n }\n\n if (e + eBias >= eMax) {\n m = 0;\n e = eMax;\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen);\n e = e + eBias;\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen);\n e = 0;\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m;\n eLen += mLen;\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128;\n};\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n(function (exports) {\n\nconst base64 = base64Js;\nconst ieee754$1 = ieee754;\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null;\n\nexports.Buffer = Buffer;\nexports.SlowBuffer = SlowBuffer;\nexports.INSPECT_MAX_BYTES = 50;\n\nconst K_MAX_LENGTH = 0x7fffffff;\nexports.kMaxLength = K_MAX_LENGTH;\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport();\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n );\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1);\n const proto = { foo: function () { return 42 } };\n Object.setPrototypeOf(proto, Uint8Array.prototype);\n Object.setPrototypeOf(arr, proto);\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n});\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n});\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length);\n Object.setPrototypeOf(buf, Buffer.prototype);\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192; // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf();\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value);\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n};\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype);\nObject.setPrototypeOf(Buffer, Uint8Array);\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size);\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n};\n\nfunction allocUnsafe (size) {\n assertSize(size);\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n};\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n};\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8';\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0;\n let buf = createBuffer(length);\n\n const actual = buf.write(string, encoding);\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual);\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0;\n const buf = createBuffer(length);\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255;\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView);\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf;\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array);\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset);\n } else {\n buf = new Uint8Array(array, byteOffset, length);\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype);\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0;\n const buf = createBuffer(len);\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len);\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0;\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n};\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength);\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength);\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length;\n let y = b.length;\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n};\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i;\n if (length === undefined) {\n length = 0;\n for (i = 0; i < list.length; ++i) {\n length += list[i].length;\n }\n }\n\n const buffer = Buffer.allocUnsafe(length);\n let pos = 0;\n for (i = 0; i < list.length; ++i) {\n let buf = list[i];\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf);\n buf.copy(buffer, pos);\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n );\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos);\n }\n pos += buf.length;\n }\n return buffer\n};\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length;\n const mustMatch = (arguments.length > 2 && arguments[2] === true);\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n}\nBuffer.byteLength = byteLength;\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false;\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0;\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length;\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0;\n start >>>= 0;\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8';\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase();\n loweredCase = true;\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true;\n\nfunction swap (b, n, m) {\n const i = b[n];\n b[n] = b[m];\n b[m] = i;\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length;\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1);\n }\n return this\n};\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length;\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3);\n swap(this, i + 1, i + 2);\n }\n return this\n};\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length;\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7);\n swap(this, i + 1, i + 6);\n swap(this, i + 2, i + 5);\n swap(this, i + 3, i + 4);\n }\n return this\n};\n\nBuffer.prototype.toString = function toString () {\n const length = this.length;\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n};\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString;\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n};\n\nBuffer.prototype.inspect = function inspect () {\n let str = '';\n const max = exports.INSPECT_MAX_BYTES;\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim();\n if (this.length > max) str += ' ... ';\n return ''\n};\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect;\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength);\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0;\n }\n if (end === undefined) {\n end = target ? target.length : 0;\n }\n if (thisStart === undefined) {\n thisStart = 0;\n }\n if (thisEnd === undefined) {\n thisEnd = this.length;\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0;\n end >>>= 0;\n thisStart >>>= 0;\n thisEnd >>>= 0;\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart;\n let y = end - start;\n const len = Math.min(x, y);\n\n const thisCopy = this.slice(thisStart, thisEnd);\n const targetCopy = target.slice(start, end);\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i];\n y = targetCopy[i];\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n};\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset;\n byteOffset = 0;\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff;\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000;\n }\n byteOffset = +byteOffset; // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1);\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset;\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1;\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0;\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding);\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF; // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1;\n let arrLength = arr.length;\n let valLength = val.length;\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase();\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2;\n arrLength /= 2;\n valLength /= 2;\n byteOffset /= 2;\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i;\n if (dir) {\n let foundIndex = -1;\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i;\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex;\n foundIndex = -1;\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength;\n for (i = byteOffset; i >= 0; i--) {\n let found = true;\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false;\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n};\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n};\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n};\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0;\n const remaining = buf.length - offset;\n if (!length) {\n length = remaining;\n } else {\n length = Number(length);\n if (length > remaining) {\n length = remaining;\n }\n }\n\n const strLen = string.length;\n\n if (length > strLen / 2) {\n length = strLen / 2;\n }\n let i;\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16);\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed;\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8';\n length = this.length;\n offset = 0;\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset;\n length = this.length;\n offset = 0;\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0;\n if (isFinite(length)) {\n length = length >>> 0;\n if (encoding === undefined) encoding = 'utf8';\n } else {\n encoding = length;\n length = undefined;\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset;\n if (length === undefined || length > remaining) length = remaining;\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8';\n\n let loweredCase = false;\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase();\n loweredCase = true;\n }\n }\n};\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n};\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end);\n const res = [];\n\n let i = start;\n while (i < end) {\n const firstByte = buf[i];\n let codePoint = null;\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1;\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint;\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte;\n }\n break\n case 2:\n secondByte = buf[i + 1];\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F);\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 3:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F);\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint;\n }\n }\n break\n case 4:\n secondByte = buf[i + 1];\n thirdByte = buf[i + 2];\n fourthByte = buf[i + 3];\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F);\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint;\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD;\n bytesPerSequence = 1;\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000;\n res.push(codePoint >>> 10 & 0x3FF | 0xD800);\n codePoint = 0xDC00 | codePoint & 0x3FF;\n }\n\n res.push(codePoint);\n i += bytesPerSequence;\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000;\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length;\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = '';\n let i = 0;\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n );\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = '';\n end = Math.min(buf.length, end);\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F);\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = '';\n end = Math.min(buf.length, end);\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i]);\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length;\n\n if (!start || start < 0) start = 0;\n if (!end || end < 0 || end > len) end = len;\n\n let out = '';\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]];\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end);\n let res = '';\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256));\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length;\n start = ~~start;\n end = end === undefined ? len : ~~end;\n\n if (start < 0) {\n start += len;\n if (start < 0) start = 0;\n } else if (start > len) {\n start = len;\n }\n\n if (end < 0) {\n end += len;\n if (end < 0) end = 0;\n } else if (end > len) {\n end = len;\n }\n\n if (end < start) end = start;\n\n const newBuf = this.subarray(start, end);\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype);\n\n return newBuf\n};\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n let val = this[offset];\n let mul = 1;\n let i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length);\n }\n\n let val = this[offset + --byteLength];\n let mul = 1;\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul;\n }\n\n return val\n};\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 1, this.length);\n return this[offset]\n};\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n return this[offset] | (this[offset + 1] << 8)\n};\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n return (this[offset] << 8) | this[offset + 1]\n};\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n};\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n};\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0;\n validateNumber(offset, 'offset');\n const first = this[offset];\n const last = this[offset + 7];\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24;\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24;\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n});\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0;\n validateNumber(offset, 'offset');\n const first = this[offset];\n const last = this[offset + 7];\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset];\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last;\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n});\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n let val = this[offset];\n let mul = 1;\n let i = 0;\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) checkOffset(offset, byteLength, this.length);\n\n let i = byteLength;\n let mul = 1;\n let val = this[offset + --i];\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul;\n }\n mul *= 0x80;\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength);\n\n return val\n};\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 1, this.length);\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n};\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n const val = this[offset] | (this[offset + 1] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 2, this.length);\n const val = this[offset + 1] | (this[offset] << 8);\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n};\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n};\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n};\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0;\n validateNumber(offset, 'offset');\n const first = this[offset];\n const last = this[offset + 7];\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24); // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n});\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0;\n validateNumber(offset, 'offset');\n const first = this[offset];\n const last = this[offset + 7];\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8);\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset];\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n});\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754$1.read(this, offset, true, 23, 4)\n};\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 4, this.length);\n return ieee754$1.read(this, offset, false, 23, 4)\n};\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754$1.read(this, offset, true, 52, 8)\n};\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0;\n if (!noAssert) checkOffset(offset, 8, this.length);\n return ieee754$1.read(this, offset, false, 52, 8)\n};\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n let mul = 1;\n let i = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n byteLength = byteLength >>> 0;\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1;\n checkInt(this, value, offset, byteLength, maxBytes, 0);\n }\n\n let i = byteLength - 1;\n let mul = 1;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0);\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n return offset + 2\n};\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0);\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n return offset + 2\n};\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n this[offset + 3] = (value >>> 24);\n this[offset + 2] = (value >>> 16);\n this[offset + 1] = (value >>> 8);\n this[offset] = (value & 0xff);\n return offset + 4\n};\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0);\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n return offset + 4\n};\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7);\n\n let lo = Number(value & BigInt(0xffffffff));\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n lo = lo >> 8;\n buf[offset++] = lo;\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n hi = hi >> 8;\n buf[offset++] = hi;\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7);\n\n let lo = Number(value & BigInt(0xffffffff));\n buf[offset + 7] = lo;\n lo = lo >> 8;\n buf[offset + 6] = lo;\n lo = lo >> 8;\n buf[offset + 5] = lo;\n lo = lo >> 8;\n buf[offset + 4] = lo;\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff));\n buf[offset + 3] = hi;\n hi = hi >> 8;\n buf[offset + 2] = hi;\n hi = hi >> 8;\n buf[offset + 1] = hi;\n hi = hi >> 8;\n buf[offset] = hi;\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n});\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n});\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n let i = 0;\n let mul = 1;\n let sub = 0;\n this[offset] = value & 0xFF;\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1);\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit);\n }\n\n let i = byteLength - 1;\n let mul = 1;\n let sub = 0;\n this[offset + i] = value & 0xFF;\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1;\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF;\n }\n\n return offset + byteLength\n};\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80);\n if (value < 0) value = 0xff + value + 1;\n this[offset] = (value & 0xff);\n return offset + 1\n};\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n return offset + 2\n};\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000);\n this[offset] = (value >>> 8);\n this[offset + 1] = (value & 0xff);\n return offset + 2\n};\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n this[offset] = (value & 0xff);\n this[offset + 1] = (value >>> 8);\n this[offset + 2] = (value >>> 16);\n this[offset + 3] = (value >>> 24);\n return offset + 4\n};\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000);\n if (value < 0) value = 0xffffffff + value + 1;\n this[offset] = (value >>> 24);\n this[offset + 1] = (value >>> 16);\n this[offset + 2] = (value >>> 8);\n this[offset + 3] = (value & 0xff);\n return offset + 4\n};\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n});\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n});\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4);\n }\n ieee754$1.write(buf, value, offset, littleEndian, 23, 4);\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n};\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value;\n offset = offset >>> 0;\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8);\n }\n ieee754$1.write(buf, value, offset, littleEndian, 52, 8);\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n};\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n};\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0;\n if (!end && end !== 0) end = this.length;\n if (targetStart >= target.length) targetStart = target.length;\n if (!targetStart) targetStart = 0;\n if (end > 0 && end < start) end = start;\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length;\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start;\n }\n\n const len = end - start;\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end);\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n );\n }\n\n return len\n};\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start;\n start = 0;\n end = this.length;\n } else if (typeof end === 'string') {\n encoding = end;\n end = this.length;\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0);\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code;\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255;\n } else if (typeof val === 'boolean') {\n val = Number(val);\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0;\n end = end === undefined ? this.length : end >>> 0;\n\n if (!val) val = 0;\n\n let i;\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val;\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding);\n const len = bytes.length;\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len];\n }\n }\n\n return this\n};\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {};\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super();\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n });\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`;\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack; // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name;\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n });\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n };\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError);\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError);\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`;\n let received = input;\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input));\n } else if (typeof input === 'bigint') {\n received = String(input);\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received);\n }\n received += 'n';\n }\n msg += ` It must be ${range}. Received ${received}`;\n return msg\n }, RangeError);\n\nfunction addNumericalSeparator (val) {\n let res = '';\n let i = val.length;\n const start = val[0] === '-' ? 1 : 0;\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`;\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset');\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1));\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : '';\n let range;\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`;\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`;\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`;\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength);\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type);\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g;\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0];\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '');\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '=';\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity;\n let codePoint;\n const length = string.length;\n let leadSurrogate = null;\n const bytes = [];\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i);\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint;\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n leadSurrogate = codePoint;\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000;\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD);\n }\n\n leadSurrogate = null;\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint);\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n );\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = [];\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF);\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo;\n const byteArray = [];\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i);\n hi = c >> 8;\n lo = c % 256;\n byteArray.push(lo);\n byteArray.push(hi);\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i;\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i];\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef';\n const table = new Array(256);\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16;\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j];\n }\n }\n return table\n})();\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n}(buffer));\n\nvar global$1 = (typeof global !== \"undefined\" ? global :\n typeof self !== \"undefined\" ? self :\n typeof window !== \"undefined\" ? window : {});\n\nvar inherits;\nif (typeof Object.create === 'function'){\n inherits = function inherits(ctor, superCtor) {\n // implementation from standard node.js 'util' module\n ctor.super_ = superCtor;\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n };\n} else {\n inherits = function inherits(ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n };\n}\nvar inherits$1 = inherits;\n\n/**\n * Echos the value of a value. Trys to print the value out\n * in the best way possible given the different types.\n *\n * @param {Object} obj The object to print out.\n * @param {Object} opts Optional options object that alters the output.\n */\n/* legacy: obj, showHidden, depth, colors*/\nfunction inspect$1(obj, opts) {\n // default options\n var ctx = {\n seen: [],\n stylize: stylizeNoColor\n };\n // legacy...\n if (arguments.length >= 3) ctx.depth = arguments[2];\n if (arguments.length >= 4) ctx.colors = arguments[3];\n if (isBoolean(opts)) {\n // legacy...\n ctx.showHidden = opts;\n } else if (opts) {\n // got an \"options\" object\n _extend(ctx, opts);\n }\n // set default options\n if (isUndefined(ctx.showHidden)) ctx.showHidden = false;\n if (isUndefined(ctx.depth)) ctx.depth = 2;\n if (isUndefined(ctx.colors)) ctx.colors = false;\n if (isUndefined(ctx.customInspect)) ctx.customInspect = true;\n if (ctx.colors) ctx.stylize = stylizeWithColor;\n return formatValue(ctx, obj, ctx.depth);\n}\n\n// http://en.wikipedia.org/wiki/ANSI_escape_code#graphics\ninspect$1.colors = {\n 'bold' : [1, 22],\n 'italic' : [3, 23],\n 'underline' : [4, 24],\n 'inverse' : [7, 27],\n 'white' : [37, 39],\n 'grey' : [90, 39],\n 'black' : [30, 39],\n 'blue' : [34, 39],\n 'cyan' : [36, 39],\n 'green' : [32, 39],\n 'magenta' : [35, 39],\n 'red' : [31, 39],\n 'yellow' : [33, 39]\n};\n\n// Don't use 'blue' not visible on cmd.exe\ninspect$1.styles = {\n 'special': 'cyan',\n 'number': 'yellow',\n 'boolean': 'yellow',\n 'undefined': 'grey',\n 'null': 'bold',\n 'string': 'green',\n 'date': 'magenta',\n // \"name\": intentionally not styling\n 'regexp': 'red'\n};\n\n\nfunction stylizeWithColor(str, styleType) {\n var style = inspect$1.styles[styleType];\n\n if (style) {\n return '\\u001b[' + inspect$1.colors[style][0] + 'm' + str +\n '\\u001b[' + inspect$1.colors[style][1] + 'm';\n } else {\n return str;\n }\n}\n\n\nfunction stylizeNoColor(str, styleType) {\n return str;\n}\n\n\nfunction arrayToHash(array) {\n var hash = {};\n\n array.forEach(function(val, idx) {\n hash[val] = true;\n });\n\n return hash;\n}\n\n\nfunction formatValue(ctx, value, recurseTimes) {\n // Provide a hook for user-specified inspect functions.\n // Check that value is an object with an inspect function on it\n if (ctx.customInspect &&\n value &&\n isFunction(value.inspect) &&\n // Filter out the util module, it's inspect function is special\n value.inspect !== inspect$1 &&\n // Also filter out any prototype objects using the circular check.\n !(value.constructor && value.constructor.prototype === value)) {\n var ret = value.inspect(recurseTimes, ctx);\n if (!isString(ret)) {\n ret = formatValue(ctx, ret, recurseTimes);\n }\n return ret;\n }\n\n // Primitive types cannot have properties\n var primitive = formatPrimitive(ctx, value);\n if (primitive) {\n return primitive;\n }\n\n // Look up the keys of the object.\n var keys = Object.keys(value);\n var visibleKeys = arrayToHash(keys);\n\n if (ctx.showHidden) {\n keys = Object.getOwnPropertyNames(value);\n }\n\n // IE doesn't make error fields non-enumerable\n // http://msdn.microsoft.com/en-us/library/ie/dww52sbt(v=vs.94).aspx\n if (isError(value)\n && (keys.indexOf('message') >= 0 || keys.indexOf('description') >= 0)) {\n return formatError(value);\n }\n\n // Some type of object without properties can be shortcutted.\n if (keys.length === 0) {\n if (isFunction(value)) {\n var name = value.name ? ': ' + value.name : '';\n return ctx.stylize('[Function' + name + ']', 'special');\n }\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n }\n if (isDate(value)) {\n return ctx.stylize(Date.prototype.toString.call(value), 'date');\n }\n if (isError(value)) {\n return formatError(value);\n }\n }\n\n var base = '', array = false, braces = ['{', '}'];\n\n // Make Array say that they are Array\n if (isArray(value)) {\n array = true;\n braces = ['[', ']'];\n }\n\n // Make functions say that they are functions\n if (isFunction(value)) {\n var n = value.name ? ': ' + value.name : '';\n base = ' [Function' + n + ']';\n }\n\n // Make RegExps say that they are RegExps\n if (isRegExp(value)) {\n base = ' ' + RegExp.prototype.toString.call(value);\n }\n\n // Make dates with properties first say the date\n if (isDate(value)) {\n base = ' ' + Date.prototype.toUTCString.call(value);\n }\n\n // Make error with message first say the error\n if (isError(value)) {\n base = ' ' + formatError(value);\n }\n\n if (keys.length === 0 && (!array || value.length == 0)) {\n return braces[0] + base + braces[1];\n }\n\n if (recurseTimes < 0) {\n if (isRegExp(value)) {\n return ctx.stylize(RegExp.prototype.toString.call(value), 'regexp');\n } else {\n return ctx.stylize('[Object]', 'special');\n }\n }\n\n ctx.seen.push(value);\n\n var output;\n if (array) {\n output = formatArray(ctx, value, recurseTimes, visibleKeys, keys);\n } else {\n output = keys.map(function(key) {\n return formatProperty(ctx, value, recurseTimes, visibleKeys, key, array);\n });\n }\n\n ctx.seen.pop();\n\n return reduceToSingleString(output, base, braces);\n}\n\n\nfunction formatPrimitive(ctx, value) {\n if (isUndefined(value))\n return ctx.stylize('undefined', 'undefined');\n if (isString(value)) {\n var simple = '\\'' + JSON.stringify(value).replace(/^\"|\"$/g, '')\n .replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"') + '\\'';\n return ctx.stylize(simple, 'string');\n }\n if (isNumber(value))\n return ctx.stylize('' + value, 'number');\n if (isBoolean(value))\n return ctx.stylize('' + value, 'boolean');\n // For some reason typeof null is \"object\", so special case here.\n if (isNull(value))\n return ctx.stylize('null', 'null');\n}\n\n\nfunction formatError(value) {\n return '[' + Error.prototype.toString.call(value) + ']';\n}\n\n\nfunction formatArray(ctx, value, recurseTimes, visibleKeys, keys) {\n var output = [];\n for (var i = 0, l = value.length; i < l; ++i) {\n if (hasOwnProperty(value, String(i))) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n String(i), true));\n } else {\n output.push('');\n }\n }\n keys.forEach(function(key) {\n if (!key.match(/^\\d+$/)) {\n output.push(formatProperty(ctx, value, recurseTimes, visibleKeys,\n key, true));\n }\n });\n return output;\n}\n\n\nfunction formatProperty(ctx, value, recurseTimes, visibleKeys, key, array) {\n var name, str, desc;\n desc = Object.getOwnPropertyDescriptor(value, key) || { value: value[key] };\n if (desc.get) {\n if (desc.set) {\n str = ctx.stylize('[Getter/Setter]', 'special');\n } else {\n str = ctx.stylize('[Getter]', 'special');\n }\n } else {\n if (desc.set) {\n str = ctx.stylize('[Setter]', 'special');\n }\n }\n if (!hasOwnProperty(visibleKeys, key)) {\n name = '[' + key + ']';\n }\n if (!str) {\n if (ctx.seen.indexOf(desc.value) < 0) {\n if (isNull(recurseTimes)) {\n str = formatValue(ctx, desc.value, null);\n } else {\n str = formatValue(ctx, desc.value, recurseTimes - 1);\n }\n if (str.indexOf('\\n') > -1) {\n if (array) {\n str = str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n').substr(2);\n } else {\n str = '\\n' + str.split('\\n').map(function(line) {\n return ' ' + line;\n }).join('\\n');\n }\n }\n } else {\n str = ctx.stylize('[Circular]', 'special');\n }\n }\n if (isUndefined(name)) {\n if (array && key.match(/^\\d+$/)) {\n return str;\n }\n name = JSON.stringify('' + key);\n if (name.match(/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)) {\n name = name.substr(1, name.length - 2);\n name = ctx.stylize(name, 'name');\n } else {\n name = name.replace(/'/g, \"\\\\'\")\n .replace(/\\\\\"/g, '\"')\n .replace(/(^\"|\"$)/g, \"'\");\n name = ctx.stylize(name, 'string');\n }\n }\n\n return name + ': ' + str;\n}\n\n\nfunction reduceToSingleString(output, base, braces) {\n var length = output.reduce(function(prev, cur) {\n if (cur.indexOf('\\n') >= 0) ;\n return prev + cur.replace(/\\u001b\\[\\d\\d?m/g, '').length + 1;\n }, 0);\n\n if (length > 60) {\n return braces[0] +\n (base === '' ? '' : base + '\\n ') +\n ' ' +\n output.join(',\\n ') +\n ' ' +\n braces[1];\n }\n\n return braces[0] + base + ' ' + output.join(', ') + ' ' + braces[1];\n}\n\n\n// NOTE: These type checking functions intentionally don't use `instanceof`\n// because it is fragile and can be easily faked with `Object.create()`.\nfunction isArray(ar) {\n return Array.isArray(ar);\n}\n\nfunction isBoolean(arg) {\n return typeof arg === 'boolean';\n}\n\nfunction isNull(arg) {\n return arg === null;\n}\n\nfunction isNumber(arg) {\n return typeof arg === 'number';\n}\n\nfunction isString(arg) {\n return typeof arg === 'string';\n}\n\nfunction isUndefined(arg) {\n return arg === void 0;\n}\n\nfunction isRegExp(re) {\n return isObject(re) && objectToString(re) === '[object RegExp]';\n}\n\nfunction isObject(arg) {\n return typeof arg === 'object' && arg !== null;\n}\n\nfunction isDate(d) {\n return isObject(d) && objectToString(d) === '[object Date]';\n}\n\nfunction isError(e) {\n return isObject(e) &&\n (objectToString(e) === '[object Error]' || e instanceof Error);\n}\n\nfunction isFunction(arg) {\n return typeof arg === 'function';\n}\n\nfunction isPrimitive(arg) {\n return arg === null ||\n typeof arg === 'boolean' ||\n typeof arg === 'number' ||\n typeof arg === 'string' ||\n typeof arg === 'symbol' || // ES6 symbol\n typeof arg === 'undefined';\n}\n\nfunction objectToString(o) {\n return Object.prototype.toString.call(o);\n}\n\nfunction _extend(origin, add) {\n // Don't do anything if add isn't an object\n if (!add || !isObject(add)) return origin;\n\n var keys = Object.keys(add);\n var i = keys.length;\n while (i--) {\n origin[keys[i]] = add[keys[i]];\n }\n return origin;\n}\nfunction hasOwnProperty(obj, prop) {\n return Object.prototype.hasOwnProperty.call(obj, prop);\n}\n\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n if (y < x) {\n return 1;\n }\n return 0;\n}\nvar hasOwn = Object.prototype.hasOwnProperty;\n\nvar objectKeys = Object.keys || function (obj) {\n var keys = [];\n for (var key in obj) {\n if (hasOwn.call(obj, key)) keys.push(key);\n }\n return keys;\n};\nvar pSlice = Array.prototype.slice;\nvar _functionsHaveNames;\nfunction functionsHaveNames() {\n if (typeof _functionsHaveNames !== 'undefined') {\n return _functionsHaveNames;\n }\n return _functionsHaveNames = (function () {\n return function foo() {}.name === 'foo';\n }());\n}\nfunction pToString (obj) {\n return Object.prototype.toString.call(obj);\n}\nfunction isView(arrbuf) {\n if (buffer.isBuffer(arrbuf)) {\n return false;\n }\n if (typeof global$1.ArrayBuffer !== 'function') {\n return false;\n }\n if (typeof ArrayBuffer.isView === 'function') {\n return ArrayBuffer.isView(arrbuf);\n }\n if (!arrbuf) {\n return false;\n }\n if (arrbuf instanceof DataView) {\n return true;\n }\n if (arrbuf.buffer && arrbuf.buffer instanceof ArrayBuffer) {\n return true;\n }\n return false;\n}\n// 1. The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nfunction assert(value, message) {\n if (!value) fail(value, true, message, '==', ok);\n}\n\n// 2. The AssertionError is defined in assert.\n// new assert.AssertionError({ message: message,\n// actual: actual,\n// expected: expected })\n\nvar regex = /\\s*function\\s+([^\\(\\s]*)\\s*/;\n// based on https://github.com/ljharb/function.prototype.name/blob/adeeeec8bfcc6068b187d7d9fb3d5bb1d3a30899/implementation.js\nfunction getName(func) {\n if (!isFunction(func)) {\n return;\n }\n if (functionsHaveNames()) {\n return func.name;\n }\n var str = func.toString();\n var match = str.match(regex);\n return match && match[1];\n}\nassert.AssertionError = AssertionError;\nfunction AssertionError(options) {\n this.name = 'AssertionError';\n this.actual = options.actual;\n this.expected = options.expected;\n this.operator = options.operator;\n if (options.message) {\n this.message = options.message;\n this.generatedMessage = false;\n } else {\n this.message = getMessage(this);\n this.generatedMessage = true;\n }\n var stackStartFunction = options.stackStartFunction || fail;\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, stackStartFunction);\n } else {\n // non v8 browsers so we can have a stacktrace\n var err = new Error();\n if (err.stack) {\n var out = err.stack;\n\n // try to strip useless frames\n var fn_name = getName(stackStartFunction);\n var idx = out.indexOf('\\n' + fn_name);\n if (idx >= 0) {\n // once we have located the function frame\n // we need to strip out everything before it (and its line)\n var next_line = out.indexOf('\\n', idx + 1);\n out = out.substring(next_line + 1);\n }\n\n this.stack = out;\n }\n }\n}\n\n// assert.AssertionError instanceof Error\ninherits$1(AssertionError, Error);\n\nfunction truncate(s, n) {\n if (typeof s === 'string') {\n return s.length < n ? s : s.slice(0, n);\n } else {\n return s;\n }\n}\nfunction inspect(something) {\n if (functionsHaveNames() || !isFunction(something)) {\n return inspect$1(something);\n }\n var rawname = getName(something);\n var name = rawname ? ': ' + rawname : '';\n return '[Function' + name + ']';\n}\nfunction getMessage(self) {\n return truncate(inspect(self.actual), 128) + ' ' +\n self.operator + ' ' +\n truncate(inspect(self.expected), 128);\n}\n\n// At present only the three keys mentioned above are used and\n// understood by the spec. Implementations or sub modules can pass\n// other keys to the AssertionError's constructor - they will be\n// ignored.\n\n// 3. All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction fail(actual, expected, message, operator, stackStartFunction) {\n throw new AssertionError({\n message: message,\n actual: actual,\n expected: expected,\n operator: operator,\n stackStartFunction: stackStartFunction\n });\n}\n\n// EXTENSION! allows for well behaved errors defined elsewhere.\nassert.fail = fail;\n\n// 4. Pure assertion tests whether a value is truthy, as determined\n// by !!guard.\n// assert.ok(guard, message_opt);\n// This statement is equivalent to assert.equal(true, !!guard,\n// message_opt);. To test strictly for the value true, use\n// assert.strictEqual(true, guard, message_opt);.\n\nfunction ok(value, message) {\n if (!value) fail(value, true, message, '==', ok);\n}\nassert.ok = ok;\n\n// 5. The equality assertion tests shallow, coercive equality with\n// ==.\n// assert.equal(actual, expected, message_opt);\nassert.equal = equal;\nfunction equal(actual, expected, message) {\n if (actual != expected) fail(actual, expected, message, '==', equal);\n}\n\n// 6. The non-equality assertion tests for whether two objects are not equal\n// with != assert.notEqual(actual, expected, message_opt);\nassert.notEqual = notEqual;\nfunction notEqual(actual, expected, message) {\n if (actual == expected) {\n fail(actual, expected, message, '!=', notEqual);\n }\n}\n\n// 7. The equivalence assertion tests a deep equality relation.\n// assert.deepEqual(actual, expected, message_opt);\nassert.deepEqual = deepEqual;\nfunction deepEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'deepEqual', deepEqual);\n }\n}\nassert.deepStrictEqual = deepStrictEqual;\nfunction deepStrictEqual(actual, expected, message) {\n if (!_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'deepStrictEqual', deepStrictEqual);\n }\n}\n\nfunction _deepEqual(actual, expected, strict, memos) {\n // 7.1. All identical values are equivalent, as determined by ===.\n if (actual === expected) {\n return true;\n } else if (buffer.isBuffer(actual) && buffer.isBuffer(expected)) {\n return compare(actual, expected) === 0;\n\n // 7.2. If the expected value is a Date object, the actual value is\n // equivalent if it is also a Date object that refers to the same time.\n } else if (isDate(actual) && isDate(expected)) {\n return actual.getTime() === expected.getTime();\n\n // 7.3 If the expected value is a RegExp object, the actual value is\n // equivalent if it is also a RegExp object with the same source and\n // properties (`global`, `multiline`, `lastIndex`, `ignoreCase`).\n } else if (isRegExp(actual) && isRegExp(expected)) {\n return actual.source === expected.source &&\n actual.global === expected.global &&\n actual.multiline === expected.multiline &&\n actual.lastIndex === expected.lastIndex &&\n actual.ignoreCase === expected.ignoreCase;\n\n // 7.4. Other pairs that do not both pass typeof value == 'object',\n // equivalence is determined by ==.\n } else if ((actual === null || typeof actual !== 'object') &&\n (expected === null || typeof expected !== 'object')) {\n return strict ? actual === expected : actual == expected;\n\n // If both values are instances of typed arrays, wrap their underlying\n // ArrayBuffers in a Buffer each to increase performance\n // This optimization requires the arrays to have the same type as checked by\n // Object.prototype.toString (aka pToString). Never perform binary\n // comparisons for Float*Arrays, though, since e.g. +0 === -0 but their\n // bit patterns are not identical.\n } else if (isView(actual) && isView(expected) &&\n pToString(actual) === pToString(expected) &&\n !(actual instanceof Float32Array ||\n actual instanceof Float64Array)) {\n return compare(new Uint8Array(actual.buffer),\n new Uint8Array(expected.buffer)) === 0;\n\n // 7.5 For all other Object pairs, including Array objects, equivalence is\n // determined by having the same number of owned properties (as verified\n // with Object.prototype.hasOwnProperty.call), the same set of keys\n // (although not necessarily the same order), equivalent values for every\n // corresponding key, and an identical 'prototype' property. Note: this\n // accounts for both named and indexed properties on Arrays.\n } else if (buffer.isBuffer(actual) !== buffer.isBuffer(expected)) {\n return false;\n } else {\n memos = memos || {actual: [], expected: []};\n\n var actualIndex = memos.actual.indexOf(actual);\n if (actualIndex !== -1) {\n if (actualIndex === memos.expected.indexOf(expected)) {\n return true;\n }\n }\n\n memos.actual.push(actual);\n memos.expected.push(expected);\n\n return objEquiv(actual, expected, strict, memos);\n }\n}\n\nfunction isArguments(object) {\n return Object.prototype.toString.call(object) == '[object Arguments]';\n}\n\nfunction objEquiv(a, b, strict, actualVisitedObjects) {\n if (a === null || a === undefined || b === null || b === undefined)\n return false;\n // if one is a primitive, the other must be same\n if (isPrimitive(a) || isPrimitive(b))\n return a === b;\n if (strict && Object.getPrototypeOf(a) !== Object.getPrototypeOf(b))\n return false;\n var aIsArgs = isArguments(a);\n var bIsArgs = isArguments(b);\n if ((aIsArgs && !bIsArgs) || (!aIsArgs && bIsArgs))\n return false;\n if (aIsArgs) {\n a = pSlice.call(a);\n b = pSlice.call(b);\n return _deepEqual(a, b, strict);\n }\n var ka = objectKeys(a);\n var kb = objectKeys(b);\n var key, i;\n // having the same number of owned properties (keys incorporates\n // hasOwnProperty)\n if (ka.length !== kb.length)\n return false;\n //the same set of keys (although not necessarily the same order),\n ka.sort();\n kb.sort();\n //~~~cheap key test\n for (i = ka.length - 1; i >= 0; i--) {\n if (ka[i] !== kb[i])\n return false;\n }\n //equivalent values for every corresponding key, and\n //~~~possibly expensive deep test\n for (i = ka.length - 1; i >= 0; i--) {\n key = ka[i];\n if (!_deepEqual(a[key], b[key], strict, actualVisitedObjects))\n return false;\n }\n return true;\n}\n\n// 8. The non-equivalence assertion tests for any deep inequality.\n// assert.notDeepEqual(actual, expected, message_opt);\nassert.notDeepEqual = notDeepEqual;\nfunction notDeepEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, false)) {\n fail(actual, expected, message, 'notDeepEqual', notDeepEqual);\n }\n}\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\nfunction notDeepStrictEqual(actual, expected, message) {\n if (_deepEqual(actual, expected, true)) {\n fail(actual, expected, message, 'notDeepStrictEqual', notDeepStrictEqual);\n }\n}\n\n\n// 9. The strict equality assertion tests strict equality, as determined by ===.\n// assert.strictEqual(actual, expected, message_opt);\nassert.strictEqual = strictEqual;\nfunction strictEqual(actual, expected, message) {\n if (actual !== expected) {\n fail(actual, expected, message, '===', strictEqual);\n }\n}\n\n// 10. The strict non-equality assertion tests for strict inequality, as\n// determined by !==. assert.notStrictEqual(actual, expected, message_opt);\nassert.notStrictEqual = notStrictEqual;\nfunction notStrictEqual(actual, expected, message) {\n if (actual === expected) {\n fail(actual, expected, message, '!==', notStrictEqual);\n }\n}\n\nfunction expectedException(actual, expected) {\n if (!actual || !expected) {\n return false;\n }\n\n if (Object.prototype.toString.call(expected) == '[object RegExp]') {\n return expected.test(actual);\n }\n\n try {\n if (actual instanceof expected) {\n return true;\n }\n } catch (e) {\n // Ignore. The instanceof check doesn't work for arrow functions.\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction _tryBlock(block) {\n var error;\n try {\n block();\n } catch (e) {\n error = e;\n }\n return error;\n}\n\nfunction _throws(shouldThrow, block, expected, message) {\n var actual;\n\n if (typeof block !== 'function') {\n throw new TypeError('\"block\" argument must be a function');\n }\n\n if (typeof expected === 'string') {\n message = expected;\n expected = null;\n }\n\n actual = _tryBlock(block);\n\n message = (expected && expected.name ? ' (' + expected.name + ').' : '.') +\n (message ? ' ' + message : '.');\n\n if (shouldThrow && !actual) {\n fail(actual, expected, 'Missing expected exception' + message);\n }\n\n var userProvidedMessage = typeof message === 'string';\n var isUnwantedException = !shouldThrow && isError(actual);\n var isUnexpectedException = !shouldThrow && actual && !expected;\n\n if ((isUnwantedException &&\n userProvidedMessage &&\n expectedException(actual, expected)) ||\n isUnexpectedException) {\n fail(actual, expected, 'Got unwanted exception' + message);\n }\n\n if ((shouldThrow && actual && expected &&\n !expectedException(actual, expected)) || (!shouldThrow && actual)) {\n throw actual;\n }\n}\n\n// 11. Expected to throw an error:\n// assert.throws(block, Error_opt, message_opt);\nassert.throws = throws;\nfunction throws(block, /*optional*/error, /*optional*/message) {\n _throws(true, block, error, message);\n}\n\n// EXTENSION! This is annoying to write outside this module.\nassert.doesNotThrow = doesNotThrow;\nfunction doesNotThrow(block, /*optional*/error, /*optional*/message) {\n _throws(false, block, error, message);\n}\n\nassert.ifError = ifError;\nfunction ifError(err) {\n if (err) throw err;\n}\n\nvar Layout$1 = {};\n\n/**\n * Base class for layout objects.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support the {@link\n * Layout#encode|encode} or {@link Layout#decode|decode} functions.\n *\n * @param {Number} span - Initializer for {@link Layout#span|span}. The\n * parameter must be an integer; a negative value signifies that the\n * span is {@link Layout#getSpan|value-specific}.\n *\n * @param {string} [property] - Initializer for {@link\n * Layout#property|property}.\n *\n * @abstract\n */\nclass Layout {\n constructor(span, property) {\n if (!Number.isInteger(span)) {\n throw new TypeError('span must be an integer');\n }\n\n /** The span of the layout in bytes.\n *\n * Positive values are generally expected.\n *\n * Zero will only appear in {@link Constant}s and in {@link\n * Sequence}s where the {@link Sequence#count|count} is zero.\n *\n * A negative value indicates that the span is value-specific, and\n * must be obtained using {@link Layout#getSpan|getSpan}. */\n this.span = span;\n\n /** The property name used when this layout is represented in an\n * Object.\n *\n * Used only for layouts that {@link Layout#decode|decode} to Object\n * instances. If left undefined the span of the unnamed layout will\n * be treated as padding: it will not be mutated by {@link\n * Layout#encode|encode} nor represented as a property in the\n * decoded Object. */\n this.property = property;\n }\n\n /** Function to create an Object into which decoded properties will\n * be written.\n *\n * Used only for layouts that {@link Layout#decode|decode} to Object\n * instances, which means:\n * * {@link Structure}\n * * {@link Union}\n * * {@link VariantLayout}\n * * {@link BitStructure}\n *\n * If left undefined the JavaScript representation of these layouts\n * will be Object instances.\n *\n * See {@link bindConstructorLayout}.\n */\n makeDestinationObject() {\n return {};\n }\n\n /**\n * Decode from a Buffer into an JavaScript value.\n *\n * @param {Buffer} b - the buffer from which encoded data is read.\n *\n * @param {Number} [offset] - the offset at which the encoded data\n * starts. If absent a zero offset is inferred.\n *\n * @returns {(Number|Array|Object)} - the value of the decoded data.\n *\n * @abstract\n */\n decode(b, offset) {\n throw new Error('Layout is abstract');\n }\n\n /**\n * Encode a JavaScript value into a Buffer.\n *\n * @param {(Number|Array|Object)} src - the value to be encoded into\n * the buffer. The type accepted depends on the (sub-)type of {@link\n * Layout}.\n *\n * @param {Buffer} b - the buffer into which encoded data will be\n * written.\n *\n * @param {Number} [offset] - the offset at which the encoded data\n * starts. If absent a zero offset is inferred.\n *\n * @returns {Number} - the number of bytes encoded, including the\n * space skipped for internal padding, but excluding data such as\n * {@link Sequence#count|lengths} when stored {@link\n * ExternalLayout|externally}. This is the adjustment to `offset`\n * producing the offset where data for the next layout would be\n * written.\n *\n * @abstract\n */\n encode(src, b, offset) {\n throw new Error('Layout is abstract');\n }\n\n /**\n * Calculate the span of a specific instance of a layout.\n *\n * @param {Buffer} b - the buffer that contains an encoded instance.\n *\n * @param {Number} [offset] - the offset at which the encoded instance\n * starts. If absent a zero offset is inferred.\n *\n * @return {Number} - the number of bytes covered by the layout\n * instance. If this method is not overridden in a subclass the\n * definition-time constant {@link Layout#span|span} will be\n * returned.\n *\n * @throws {RangeError} - if the length of the value cannot be\n * determined.\n */\n getSpan(b, offset) {\n if (0 > this.span) {\n throw new RangeError('indeterminate span');\n }\n return this.span;\n }\n\n /**\n * Replicate the layout using a new property.\n *\n * This function must be used to get a structurally-equivalent layout\n * with a different name since all {@link Layout} instances are\n * immutable.\n *\n * **NOTE** This is a shallow copy. All fields except {@link\n * Layout#property|property} are strictly equal to the origin layout.\n *\n * @param {String} property - the value for {@link\n * Layout#property|property} in the replica.\n *\n * @returns {Layout} - the copy with {@link Layout#property|property}\n * set to `property`.\n */\n replicate(property) {\n const rv = Object.create(this.constructor.prototype);\n Object.assign(rv, this);\n rv.property = property;\n return rv;\n }\n\n /**\n * Create an object from layout properties and an array of values.\n *\n * **NOTE** This function returns `undefined` if invoked on a layout\n * that does not return its value as an Object. Objects are\n * returned for things that are a {@link Structure}, which includes\n * {@link VariantLayout|variant layouts} if they are structures, and\n * excludes {@link Union}s. If you want this feature for a union\n * you must use {@link Union.getVariant|getVariant} to select the\n * desired layout.\n *\n * @param {Array} values - an array of values that correspond to the\n * default order for properties. As with {@link Layout#decode|decode}\n * layout elements that have no property name are skipped when\n * iterating over the array values. Only the top-level properties are\n * assigned; arguments are not assigned to properties of contained\n * layouts. Any unused values are ignored.\n *\n * @return {(Object|undefined)}\n */\n fromArray(values) {\n return undefined;\n }\n}\nLayout$1.Layout = Layout;\n\n/* Provide text that carries a name (such as for a function that will\n * be throwing an error) annotated with the property of a given layout\n * (such as one for which the value was unacceptable).\n *\n * @ignore */\nfunction nameWithProperty(name, lo) {\n if (lo.property) {\n return name + '[' + lo.property + ']';\n }\n return name;\n}\nLayout$1.nameWithProperty = nameWithProperty;\n\n/**\n * Augment a class so that instances can be encoded/decoded using a\n * given layout.\n *\n * Calling this function couples `Class` with `layout` in several ways:\n *\n * * `Class.layout_` becomes a static member property equal to `layout`;\n * * `layout.boundConstructor_` becomes a static member property equal\n * to `Class`;\n * * The {@link Layout#makeDestinationObject|makeDestinationObject()}\n * property of `layout` is set to a function that returns a `new\n * Class()`;\n * * `Class.decode(b, offset)` becomes a static member function that\n * delegates to {@link Layout#decode|layout.decode}. The\n * synthesized function may be captured and extended.\n * * `Class.prototype.encode(b, offset)` provides an instance member\n * function that delegates to {@link Layout#encode|layout.encode}\n * with `src` set to `this`. The synthesized function may be\n * captured and extended, but when the extension is invoked `this`\n * must be explicitly bound to the instance.\n *\n * @param {class} Class - a JavaScript class with a nullary\n * constructor.\n *\n * @param {Layout} layout - the {@link Layout} instance used to encode\n * instances of `Class`.\n */\nfunction bindConstructorLayout(Class, layout) {\n if ('function' !== typeof Class) {\n throw new TypeError('Class must be constructor');\n }\n if (Class.hasOwnProperty('layout_')) {\n throw new Error('Class is already bound to a layout');\n }\n if (!(layout && (layout instanceof Layout))) {\n throw new TypeError('layout must be a Layout');\n }\n if (layout.hasOwnProperty('boundConstructor_')) {\n throw new Error('layout is already bound to a constructor');\n }\n Class.layout_ = layout;\n layout.boundConstructor_ = Class;\n layout.makeDestinationObject = (() => new Class());\n Object.defineProperty(Class.prototype, 'encode', {\n value: function(b, offset) {\n return layout.encode(this, b, offset);\n },\n writable: true,\n });\n Object.defineProperty(Class, 'decode', {\n value: function(b, offset) {\n return layout.decode(b, offset);\n },\n writable: true,\n });\n}\nLayout$1.bindConstructorLayout = bindConstructorLayout;\n\n/**\n * An object that behaves like a layout but does not consume space\n * within its containing layout.\n *\n * This is primarily used to obtain metadata about a member, such as a\n * {@link OffsetLayout} that can provide data about a {@link\n * Layout#getSpan|value-specific span}.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support {@link\n * ExternalLayout#isCount|isCount} or other {@link Layout} functions.\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @abstract\n * @augments {Layout}\n */\nclass ExternalLayout extends Layout {\n /**\n * Return `true` iff the external layout decodes to an unsigned\n * integer layout.\n *\n * In that case it can be used as the source of {@link\n * Sequence#count|Sequence counts}, {@link Blob#length|Blob lengths},\n * or as {@link UnionLayoutDiscriminator#layout|external union\n * discriminators}.\n *\n * @abstract\n */\n isCount() {\n throw new Error('ExternalLayout is abstract');\n }\n}\n\n/**\n * An {@link ExternalLayout} that determines its {@link\n * Layout#decode|value} based on offset into and length of the buffer\n * on which it is invoked.\n *\n * *Factory*: {@link module:Layout.greedy|greedy}\n *\n * @param {Number} [elementSpan] - initializer for {@link\n * GreedyCount#elementSpan|elementSpan}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {ExternalLayout}\n */\nclass GreedyCount extends ExternalLayout {\n constructor(elementSpan, property) {\n if (undefined === elementSpan) {\n elementSpan = 1;\n }\n if ((!Number.isInteger(elementSpan)) || (0 >= elementSpan)) {\n throw new TypeError('elementSpan must be a (positive) integer');\n }\n super(-1, property);\n\n /** The layout for individual elements of the sequence. The value\n * must be a positive integer. If not provided, the value will be\n * 1. */\n this.elementSpan = elementSpan;\n }\n\n /** @override */\n isCount() {\n return true;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const rem = b.length - offset;\n return Math.floor(rem / this.elementSpan);\n }\n\n /** @override */\n encode(src, b, offset) {\n return 0;\n }\n}\n\n/**\n * An {@link ExternalLayout} that supports accessing a {@link Layout}\n * at a fixed offset from the start of another Layout. The offset may\n * be before, within, or after the base layout.\n *\n * *Factory*: {@link module:Layout.offset|offset}\n *\n * @param {Layout} layout - initializer for {@link\n * OffsetLayout#layout|layout}, modulo `property`.\n *\n * @param {Number} [offset] - Initializes {@link\n * OffsetLayout#offset|offset}. Defaults to zero.\n *\n * @param {string} [property] - Optional new property name for a\n * {@link Layout#replicate| replica} of `layout` to be used as {@link\n * OffsetLayout#layout|layout}. If not provided the `layout` is used\n * unchanged.\n *\n * @augments {Layout}\n */\nclass OffsetLayout extends ExternalLayout {\n constructor(layout, offset, property) {\n if (!(layout instanceof Layout)) {\n throw new TypeError('layout must be a Layout');\n }\n\n if (undefined === offset) {\n offset = 0;\n } else if (!Number.isInteger(offset)) {\n throw new TypeError('offset must be integer or undefined');\n }\n\n super(layout.span, property || layout.property);\n\n /** The subordinated layout. */\n this.layout = layout;\n\n /** The location of {@link OffsetLayout#layout} relative to the\n * start of another layout.\n *\n * The value may be positive or negative, but an error will thrown\n * if at the point of use it goes outside the span of the Buffer\n * being accessed. */\n this.offset = offset;\n }\n\n /** @override */\n isCount() {\n return ((this.layout instanceof UInt)\n || (this.layout instanceof UIntBE));\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return this.layout.decode(b, offset + this.offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return this.layout.encode(src, b, offset + this.offset);\n }\n}\n\n/**\n * Represent an unsigned integer in little-endian format.\n *\n * *Factory*: {@link module:Layout.u8|u8}, {@link\n * module:Layout.u16|u16}, {@link module:Layout.u24|u24}, {@link\n * module:Layout.u32|u32}, {@link module:Layout.u40|u40}, {@link\n * module:Layout.u48|u48}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UInt extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readUIntLE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeUIntLE(src, offset, this.span);\n return this.span;\n }\n}\n\n/**\n * Represent an unsigned integer in big-endian format.\n *\n * *Factory*: {@link module:Layout.u8be|u8be}, {@link\n * module:Layout.u16be|u16be}, {@link module:Layout.u24be|u24be},\n * {@link module:Layout.u32be|u32be}, {@link\n * module:Layout.u40be|u40be}, {@link module:Layout.u48be|u48be}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UIntBE extends Layout {\n constructor(span, property) {\n super( span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readUIntBE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeUIntBE(src, offset, this.span);\n return this.span;\n }\n}\n\n/**\n * Represent a signed integer in little-endian format.\n *\n * *Factory*: {@link module:Layout.s8|s8}, {@link\n * module:Layout.s16|s16}, {@link module:Layout.s24|s24}, {@link\n * module:Layout.s32|s32}, {@link module:Layout.s40|s40}, {@link\n * module:Layout.s48|s48}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Int extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readIntLE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeIntLE(src, offset, this.span);\n return this.span;\n }\n}\n\n/**\n * Represent a signed integer in big-endian format.\n *\n * *Factory*: {@link module:Layout.s8be|s8be}, {@link\n * module:Layout.s16be|s16be}, {@link module:Layout.s24be|s24be},\n * {@link module:Layout.s32be|s32be}, {@link\n * module:Layout.s40be|s40be}, {@link module:Layout.s48be|s48be}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass IntBE extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readIntBE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeIntBE(src, offset, this.span);\n return this.span;\n }\n}\n\nconst V2E32 = Math.pow(2, 32);\n\n/* True modulus high and low 32-bit words, where low word is always\n * non-negative. */\nfunction divmodInt64(src) {\n const hi32 = Math.floor(src / V2E32);\n const lo32 = src - (hi32 * V2E32);\n return {hi32, lo32};\n}\n/* Reconstruct Number from quotient and non-negative remainder */\nfunction roundedInt64(hi32, lo32) {\n return hi32 * V2E32 + lo32;\n}\n\n/**\n * Represent an unsigned 64-bit integer in little-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.nu64|nu64}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearUInt64 extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const lo32 = b.readUInt32LE(offset);\n const hi32 = b.readUInt32LE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeUInt32LE(split.lo32, offset);\n b.writeUInt32LE(split.hi32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent an unsigned 64-bit integer in big-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.nu64be|nu64be}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearUInt64BE extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const hi32 = b.readUInt32BE(offset);\n const lo32 = b.readUInt32BE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeUInt32BE(split.hi32, offset);\n b.writeUInt32BE(split.lo32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent a signed 64-bit integer in little-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.ns64|ns64}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearInt64 extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const lo32 = b.readUInt32LE(offset);\n const hi32 = b.readInt32LE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeUInt32LE(split.lo32, offset);\n b.writeInt32LE(split.hi32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent a signed 64-bit integer in big-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.ns64be|ns64be}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearInt64BE extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const hi32 = b.readInt32BE(offset);\n const lo32 = b.readUInt32BE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeInt32BE(split.hi32, offset);\n b.writeUInt32BE(split.lo32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent a 32-bit floating point number in little-endian format.\n *\n * *Factory*: {@link module:Layout.f32|f32}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Float extends Layout {\n constructor(property) {\n super(4, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readFloatLE(offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeFloatLE(src, offset);\n return 4;\n }\n}\n\n/**\n * Represent a 32-bit floating point number in big-endian format.\n *\n * *Factory*: {@link module:Layout.f32be|f32be}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass FloatBE extends Layout {\n constructor(property) {\n super(4, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readFloatBE(offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeFloatBE(src, offset);\n return 4;\n }\n}\n\n/**\n * Represent a 64-bit floating point number in little-endian format.\n *\n * *Factory*: {@link module:Layout.f64|f64}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Double extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readDoubleLE(offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeDoubleLE(src, offset);\n return 8;\n }\n}\n\n/**\n * Represent a 64-bit floating point number in big-endian format.\n *\n * *Factory*: {@link module:Layout.f64be|f64be}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass DoubleBE extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readDoubleBE(offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeDoubleBE(src, offset);\n return 8;\n }\n}\n\n/**\n * Represent a contiguous sequence of a specific layout as an Array.\n *\n * *Factory*: {@link module:Layout.seq|seq}\n *\n * @param {Layout} elementLayout - initializer for {@link\n * Sequence#elementLayout|elementLayout}.\n *\n * @param {(Number|ExternalLayout)} count - initializer for {@link\n * Sequence#count|count}. The parameter must be either a positive\n * integer or an instance of {@link ExternalLayout}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Sequence extends Layout {\n constructor(elementLayout, count, property) {\n if (!(elementLayout instanceof Layout)) {\n throw new TypeError('elementLayout must be a Layout');\n }\n if (!(((count instanceof ExternalLayout) && count.isCount())\n || (Number.isInteger(count) && (0 <= count)))) {\n throw new TypeError('count must be non-negative integer '\n + 'or an unsigned integer ExternalLayout');\n }\n let span = -1;\n if ((!(count instanceof ExternalLayout))\n && (0 < elementLayout.span)) {\n span = count * elementLayout.span;\n }\n\n super(span, property);\n\n /** The layout for individual elements of the sequence. */\n this.elementLayout = elementLayout;\n\n /** The number of elements in the sequence.\n *\n * This will be either a non-negative integer or an instance of\n * {@link ExternalLayout} for which {@link\n * ExternalLayout#isCount|isCount()} is `true`. */\n this.count = count;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n let span = 0;\n let count = this.count;\n if (count instanceof ExternalLayout) {\n count = count.decode(b, offset);\n }\n if (0 < this.elementLayout.span) {\n span = count * this.elementLayout.span;\n } else {\n let idx = 0;\n while (idx < count) {\n span += this.elementLayout.getSpan(b, offset + span);\n ++idx;\n }\n }\n return span;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const rv = [];\n let i = 0;\n let count = this.count;\n if (count instanceof ExternalLayout) {\n count = count.decode(b, offset);\n }\n while (i < count) {\n rv.push(this.elementLayout.decode(b, offset));\n offset += this.elementLayout.getSpan(b, offset);\n i += 1;\n }\n return rv;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Sequence}.\n *\n * **NOTE** If `src` is shorter than {@link Sequence#count|count} then\n * the unused space in the buffer is left unchanged. If `src` is\n * longer than {@link Sequence#count|count} the unneeded elements are\n * ignored.\n *\n * **NOTE** If {@link Layout#count|count} is an instance of {@link\n * ExternalLayout} then the length of `src` will be encoded as the\n * count after `src` is encoded. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const elo = this.elementLayout;\n const span = src.reduce((span, v) => {\n return span + elo.encode(v, b, offset + span);\n }, 0);\n if (this.count instanceof ExternalLayout) {\n this.count.encode(src.length, b, offset);\n }\n return span;\n }\n}\n\n/**\n * Represent a contiguous sequence of arbitrary layout elements as an\n * Object.\n *\n * *Factory*: {@link module:Layout.struct|struct}\n *\n * **NOTE** The {@link Layout#span|span} of the structure is variable\n * if any layout in {@link Structure#fields|fields} has a variable\n * span. When {@link Layout#encode|encoding} we must have a value for\n * all variable-length fields, or we wouldn't be able to figure out\n * how much space to use for storage. We can only identify the value\n * for a field when it has a {@link Layout#property|property}. As\n * such, although a structure may contain both unnamed fields and\n * variable-length fields, it cannot contain an unnamed\n * variable-length field.\n *\n * @param {Layout[]} fields - initializer for {@link\n * Structure#fields|fields}. An error is raised if this contains a\n * variable-length field for which a {@link Layout#property|property}\n * is not defined.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @param {Boolean} [decodePrefixes] - initializer for {@link\n * Structure#decodePrefixes|property}.\n *\n * @throws {Error} - if `fields` contains an unnamed variable-length\n * layout.\n *\n * @augments {Layout}\n */\nclass Structure extends Layout {\n constructor(fields, property, decodePrefixes) {\n if (!(Array.isArray(fields)\n && fields.reduce((acc, v) => acc && (v instanceof Layout), true))) {\n throw new TypeError('fields must be array of Layout instances');\n }\n if (('boolean' === typeof property)\n && (undefined === decodePrefixes)) {\n decodePrefixes = property;\n property = undefined;\n }\n\n /* Verify absence of unnamed variable-length fields. */\n for (const fd of fields) {\n if ((0 > fd.span)\n && (undefined === fd.property)) {\n throw new Error('fields cannot contain unnamed variable-length layout');\n }\n }\n\n let span = -1;\n try {\n span = fields.reduce((span, fd) => span + fd.getSpan(), 0);\n } catch (e) {\n }\n super(span, property);\n\n /** The sequence of {@link Layout} values that comprise the\n * structure.\n *\n * The individual elements need not be the same type, and may be\n * either scalar or aggregate layouts. If a member layout leaves\n * its {@link Layout#property|property} undefined the\n * corresponding region of the buffer associated with the element\n * will not be mutated.\n *\n * @type {Layout[]} */\n this.fields = fields;\n\n /** Control behavior of {@link Layout#decode|decode()} given short\n * buffers.\n *\n * In some situations a structure many be extended with additional\n * fields over time, with older installations providing only a\n * prefix of the full structure. If this property is `true`\n * decoding will accept those buffers and leave subsequent fields\n * undefined, as long as the buffer ends at a field boundary.\n * Defaults to `false`. */\n this.decodePrefixes = !!decodePrefixes;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n let span = 0;\n try {\n span = this.fields.reduce((span, fd) => {\n const fsp = fd.getSpan(b, offset);\n offset += fsp;\n return span + fsp;\n }, 0);\n } catch (e) {\n throw new RangeError('indeterminate span');\n }\n return span;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const dest = this.makeDestinationObject();\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n dest[fd.property] = fd.decode(b, offset);\n }\n offset += fd.getSpan(b, offset);\n if (this.decodePrefixes\n && (b.length === offset)) {\n break;\n }\n }\n return dest;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Structure}.\n *\n * If `src` is missing a property for a member with a defined {@link\n * Layout#property|property} the corresponding region of the buffer is\n * left unmodified. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const firstOffset = offset;\n let lastOffset = 0;\n let lastWrote = 0;\n for (const fd of this.fields) {\n let span = fd.span;\n lastWrote = (0 < span) ? span : 0;\n if (undefined !== fd.property) {\n const fv = src[fd.property];\n if (undefined !== fv) {\n lastWrote = fd.encode(fv, b, offset);\n if (0 > span) {\n /* Read the as-encoded span, which is not necessarily the\n * same as what we wrote. */\n span = fd.getSpan(b, offset);\n }\n }\n }\n lastOffset = offset;\n offset += span;\n }\n /* Use (lastOffset + lastWrote) instead of offset because the last\n * item may have had a dynamic length and we don't want to include\n * the padding between it and the end of the space reserved for\n * it. */\n return (lastOffset + lastWrote) - firstOffset;\n }\n\n /** @override */\n fromArray(values) {\n const dest = this.makeDestinationObject();\n for (const fd of this.fields) {\n if ((undefined !== fd.property)\n && (0 < values.length)) {\n dest[fd.property] = values.shift();\n }\n }\n return dest;\n }\n\n /**\n * Get access to the layout of a given property.\n *\n * @param {String} property - the structure member of interest.\n *\n * @return {Layout} - the layout associated with `property`, or\n * undefined if there is no such property.\n */\n layoutFor(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n for (const fd of this.fields) {\n if (fd.property === property) {\n return fd;\n }\n }\n }\n\n /**\n * Get the offset of a structure member.\n *\n * @param {String} property - the structure member of interest.\n *\n * @return {Number} - the offset in bytes to the start of `property`\n * within the structure, or undefined if `property` is not a field\n * within the structure. If the property is a member but follows a\n * variable-length structure member a negative number will be\n * returned.\n */\n offsetOf(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n let offset = 0;\n for (const fd of this.fields) {\n if (fd.property === property) {\n return offset;\n }\n if (0 > fd.span) {\n offset = -1;\n } else if (0 <= offset) {\n offset += fd.span;\n }\n }\n }\n}\n\n/**\n * An object that can provide a {@link\n * Union#discriminator|discriminator} API for {@link Union}.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support the {@link\n * UnionDiscriminator#encode|encode} or {@link\n * UnionDiscriminator#decode|decode} functions.\n *\n * @param {string} [property] - Default for {@link\n * UnionDiscriminator#property|property}.\n *\n * @abstract\n */\nclass UnionDiscriminator {\n constructor(property) {\n /** The {@link Layout#property|property} to be used when the\n * discriminator is referenced in isolation (generally when {@link\n * Union#decode|Union decode} cannot delegate to a specific\n * variant). */\n this.property = property;\n }\n\n /** Analog to {@link Layout#decode|Layout decode} for union discriminators.\n *\n * The implementation of this method need not reference the buffer if\n * variant information is available through other means. */\n decode() {\n throw new Error('UnionDiscriminator is abstract');\n }\n\n /** Analog to {@link Layout#decode|Layout encode} for union discriminators.\n *\n * The implementation of this method need not store the value if\n * variant information is maintained through other means. */\n encode() {\n throw new Error('UnionDiscriminator is abstract');\n }\n}\n\n/**\n * An object that can provide a {@link\n * UnionDiscriminator|discriminator API} for {@link Union} using an\n * unsigned integral {@link Layout} instance located either inside or\n * outside the union.\n *\n * @param {ExternalLayout} layout - initializes {@link\n * UnionLayoutDiscriminator#layout|layout}. Must satisfy {@link\n * ExternalLayout#isCount|isCount()}.\n *\n * @param {string} [property] - Default for {@link\n * UnionDiscriminator#property|property}, superseding the property\n * from `layout`, but defaulting to `variant` if neither `property`\n * nor layout provide a property name.\n *\n * @augments {UnionDiscriminator}\n */\nclass UnionLayoutDiscriminator extends UnionDiscriminator {\n constructor(layout, property) {\n if (!((layout instanceof ExternalLayout)\n && layout.isCount())) {\n throw new TypeError('layout must be an unsigned integer ExternalLayout');\n }\n\n super(property || layout.property || 'variant');\n\n /** The {@link ExternalLayout} used to access the discriminator\n * value. */\n this.layout = layout;\n }\n\n /** Delegate decoding to {@link UnionLayoutDiscriminator#layout|layout}. */\n decode(b, offset) {\n return this.layout.decode(b, offset);\n }\n\n /** Delegate encoding to {@link UnionLayoutDiscriminator#layout|layout}. */\n encode(src, b, offset) {\n return this.layout.encode(src, b, offset);\n }\n}\n\n/**\n * Represent any number of span-compatible layouts.\n *\n * *Factory*: {@link module:Layout.union|union}\n *\n * If the union has a {@link Union#defaultLayout|default layout} that\n * layout must have a non-negative {@link Layout#span|span}. The span\n * of a fixed-span union includes its {@link\n * Union#discriminator|discriminator} if the variant is a {@link\n * Union#usesPrefixDiscriminator|prefix of the union}, plus the span\n * of its {@link Union#defaultLayout|default layout}.\n *\n * If the union does not have a default layout then the encoded span\n * of the union depends on the encoded span of its variant (which may\n * be fixed or variable).\n *\n * {@link VariantLayout#layout|Variant layout}s are added through\n * {@link Union#addVariant|addVariant}. If the union has a default\n * layout, the span of the {@link VariantLayout#layout|layout\n * contained by the variant} must not exceed the span of the {@link\n * Union#defaultLayout|default layout} (minus the span of a {@link\n * Union#usesPrefixDiscriminator|prefix disriminator}, if used). The\n * span of the variant will equal the span of the union itself.\n *\n * The variant for a buffer can only be identified from the {@link\n * Union#discriminator|discriminator} {@link\n * UnionDiscriminator#property|property} (in the case of the {@link\n * Union#defaultLayout|default layout}), or by using {@link\n * Union#getVariant|getVariant} and examining the resulting {@link\n * VariantLayout} instance.\n *\n * A variant compatible with a JavaScript object can be identified\n * using {@link Union#getSourceVariant|getSourceVariant}.\n *\n * @param {(UnionDiscriminator|ExternalLayout|Layout)} discr - How to\n * identify the layout used to interpret the union contents. The\n * parameter must be an instance of {@link UnionDiscriminator}, an\n * {@link ExternalLayout} that satisfies {@link\n * ExternalLayout#isCount|isCount()}, or {@link UInt} (or {@link\n * UIntBE}). When a non-external layout element is passed the layout\n * appears at the start of the union. In all cases the (synthesized)\n * {@link UnionDiscriminator} instance is recorded as {@link\n * Union#discriminator|discriminator}.\n *\n * @param {(Layout|null)} defaultLayout - initializer for {@link\n * Union#defaultLayout|defaultLayout}. If absent defaults to `null`.\n * If `null` there is no default layout: the union has data-dependent\n * length and attempts to decode or encode unrecognized variants will\n * throw an exception. A {@link Layout} instance must have a\n * non-negative {@link Layout#span|span}, and if it lacks a {@link\n * Layout#property|property} the {@link\n * Union#defaultLayout|defaultLayout} will be a {@link\n * Layout#replicate|replica} with property `content`.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Union extends Layout {\n constructor(discr, defaultLayout, property) {\n const upv = ((discr instanceof UInt)\n || (discr instanceof UIntBE));\n if (upv) {\n discr = new UnionLayoutDiscriminator(new OffsetLayout(discr));\n } else if ((discr instanceof ExternalLayout)\n && discr.isCount()) {\n discr = new UnionLayoutDiscriminator(discr);\n } else if (!(discr instanceof UnionDiscriminator)) {\n throw new TypeError('discr must be a UnionDiscriminator '\n + 'or an unsigned integer layout');\n }\n if (undefined === defaultLayout) {\n defaultLayout = null;\n }\n if (!((null === defaultLayout)\n || (defaultLayout instanceof Layout))) {\n throw new TypeError('defaultLayout must be null or a Layout');\n }\n if (null !== defaultLayout) {\n if (0 > defaultLayout.span) {\n throw new Error('defaultLayout must have constant span');\n }\n if (undefined === defaultLayout.property) {\n defaultLayout = defaultLayout.replicate('content');\n }\n }\n\n /* The union span can be estimated only if there's a default\n * layout. The union spans its default layout, plus any prefix\n * variant layout. By construction both layouts, if present, have\n * non-negative span. */\n let span = -1;\n if (defaultLayout) {\n span = defaultLayout.span;\n if ((0 <= span) && upv) {\n span += discr.layout.span;\n }\n }\n super(span, property);\n\n /** The interface for the discriminator value in isolation.\n *\n * This a {@link UnionDiscriminator} either passed to the\n * constructor or synthesized from the `discr` constructor\n * argument. {@link\n * Union#usesPrefixDiscriminator|usesPrefixDiscriminator} will be\n * `true` iff the `discr` parameter was a non-offset {@link\n * Layout} instance. */\n this.discriminator = discr;\n\n /** `true` if the {@link Union#discriminator|discriminator} is the\n * first field in the union.\n *\n * If `false` the discriminator is obtained from somewhere\n * else. */\n this.usesPrefixDiscriminator = upv;\n\n /** The layout for non-discriminator content when the value of the\n * discriminator is not recognized.\n *\n * This is the value passed to the constructor. It is\n * structurally equivalent to the second component of {@link\n * Union#layout|layout} but may have a different property\n * name. */\n this.defaultLayout = defaultLayout;\n\n /** A registry of allowed variants.\n *\n * The keys are unsigned integers which should be compatible with\n * {@link Union.discriminator|discriminator}. The property value\n * is the corresponding {@link VariantLayout} instances assigned\n * to this union by {@link Union#addVariant|addVariant}.\n *\n * **NOTE** The registry remains mutable so that variants can be\n * {@link Union#addVariant|added} at any time. Users should not\n * manipulate the content of this property. */\n this.registry = {};\n\n /* Private variable used when invoking getSourceVariant */\n let boundGetSourceVariant = this.defaultGetSourceVariant.bind(this);\n\n /** Function to infer the variant selected by a source object.\n *\n * Defaults to {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant} but may\n * be overridden using {@link\n * Union#configGetSourceVariant|configGetSourceVariant}.\n *\n * @param {Object} src - as with {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant}.\n *\n * @returns {(undefined|VariantLayout)} The default variant\n * (`undefined`) or first registered variant that uses a property\n * available in `src`. */\n this.getSourceVariant = function(src) {\n return boundGetSourceVariant(src);\n };\n\n /** Function to override the implementation of {@link\n * Union#getSourceVariant|getSourceVariant}.\n *\n * Use this if the desired variant cannot be identified using the\n * algorithm of {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant}.\n *\n * **NOTE** The provided function will be invoked bound to this\n * Union instance, providing local access to {@link\n * Union#registry|registry}.\n *\n * @param {Function} gsv - a function that follows the API of\n * {@link Union#defaultGetSourceVariant|defaultGetSourceVariant}. */\n this.configGetSourceVariant = function(gsv) {\n boundGetSourceVariant = gsv.bind(this);\n };\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n /* Default layouts always have non-negative span, so we don't have\n * one and we have to recognize the variant which will in turn\n * determine the span. */\n const vlo = this.getVariant(b, offset);\n if (!vlo) {\n throw new Error('unable to determine span for unrecognized variant');\n }\n return vlo.getSpan(b, offset);\n }\n\n /**\n * Method to infer a registered Union variant compatible with `src`.\n *\n * The first satisified rule in the following sequence defines the\n * return value:\n * * If `src` has properties matching the Union discriminator and\n * the default layout, `undefined` is returned regardless of the\n * value of the discriminator property (this ensures the default\n * layout will be used);\n * * If `src` has a property matching the Union discriminator, the\n * value of the discriminator identifies a registered variant, and\n * either (a) the variant has no layout, or (b) `src` has the\n * variant's property, then the variant is returned (because the\n * source satisfies the constraints of the variant it identifies);\n * * If `src` does not have a property matching the Union\n * discriminator, but does have a property matching a registered\n * variant, then the variant is returned (because the source\n * matches a variant without an explicit conflict);\n * * An error is thrown (because we either can't identify a variant,\n * or we were explicitly told the variant but can't satisfy it).\n *\n * @param {Object} src - an object presumed to be compatible with\n * the content of the Union.\n *\n * @return {(undefined|VariantLayout)} - as described above.\n *\n * @throws {Error} - if `src` cannot be associated with a default or\n * registered variant.\n */\n defaultGetSourceVariant(src) {\n if (src.hasOwnProperty(this.discriminator.property)) {\n if (this.defaultLayout\n && src.hasOwnProperty(this.defaultLayout.property)) {\n return undefined;\n }\n const vlo = this.registry[src[this.discriminator.property]];\n if (vlo\n && ((!vlo.layout)\n || src.hasOwnProperty(vlo.property))) {\n return vlo;\n }\n } else {\n for (const tag in this.registry) {\n const vlo = this.registry[tag];\n if (src.hasOwnProperty(vlo.property)) {\n return vlo;\n }\n }\n }\n throw new Error('unable to infer src variant');\n }\n\n /** Implement {@link Layout#decode|decode} for {@link Union}.\n *\n * If the variant is {@link Union#addVariant|registered} the return\n * value is an instance of that variant, with no explicit\n * discriminator. Otherwise the {@link Union#defaultLayout|default\n * layout} is used to decode the content. */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n let dest;\n const dlo = this.discriminator;\n const discr = dlo.decode(b, offset);\n let clo = this.registry[discr];\n if (undefined === clo) {\n let contentOffset = 0;\n clo = this.defaultLayout;\n if (this.usesPrefixDiscriminator) {\n contentOffset = dlo.layout.span;\n }\n dest = this.makeDestinationObject();\n dest[dlo.property] = discr;\n dest[clo.property] = this.defaultLayout.decode(b, offset + contentOffset);\n } else {\n dest = clo.decode(b, offset);\n }\n return dest;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Union}.\n *\n * This API assumes the `src` object is consistent with the union's\n * {@link Union#defaultLayout|default layout}. To encode variants\n * use the appropriate variant-specific {@link VariantLayout#encode}\n * method. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const vlo = this.getSourceVariant(src);\n if (undefined === vlo) {\n const dlo = this.discriminator;\n const clo = this.defaultLayout;\n let contentOffset = 0;\n if (this.usesPrefixDiscriminator) {\n contentOffset = dlo.layout.span;\n }\n dlo.encode(src[dlo.property], b, offset);\n return contentOffset + clo.encode(src[clo.property], b,\n offset + contentOffset);\n }\n return vlo.encode(src, b, offset);\n }\n\n /** Register a new variant structure within a union. The newly\n * created variant is returned.\n *\n * @param {Number} variant - initializer for {@link\n * VariantLayout#variant|variant}.\n *\n * @param {Layout} layout - initializer for {@link\n * VariantLayout#layout|layout}.\n *\n * @param {String} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {VariantLayout} */\n addVariant(variant, layout, property) {\n const rv = new VariantLayout(this, variant, layout, property);\n this.registry[variant] = rv;\n return rv;\n }\n\n /**\n * Get the layout associated with a registered variant.\n *\n * If `vb` does not produce a registered variant the function returns\n * `undefined`.\n *\n * @param {(Number|Buffer)} vb - either the variant number, or a\n * buffer from which the discriminator is to be read.\n *\n * @param {Number} offset - offset into `vb` for the start of the\n * union. Used only when `vb` is an instance of {Buffer}.\n *\n * @return {({VariantLayout}|undefined)}\n */\n getVariant(vb, offset) {\n let variant = vb;\n if (buffer.Buffer.isBuffer(vb)) {\n if (undefined === offset) {\n offset = 0;\n }\n variant = this.discriminator.decode(vb, offset);\n }\n return this.registry[variant];\n }\n}\n\n/**\n * Represent a specific variant within a containing union.\n *\n * **NOTE** The {@link Layout#span|span} of the variant may include\n * the span of the {@link Union#discriminator|discriminator} used to\n * identify it, but values read and written using the variant strictly\n * conform to the content of {@link VariantLayout#layout|layout}.\n *\n * **NOTE** User code should not invoke this constructor directly. Use\n * the union {@link Union#addVariant|addVariant} helper method.\n *\n * @param {Union} union - initializer for {@link\n * VariantLayout#union|union}.\n *\n * @param {Number} variant - initializer for {@link\n * VariantLayout#variant|variant}.\n *\n * @param {Layout} [layout] - initializer for {@link\n * VariantLayout#layout|layout}. If absent the variant carries no\n * data.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}. Unlike many other layouts, variant\n * layouts normally include a property name so they can be identified\n * within their containing {@link Union}. The property identifier may\n * be absent only if `layout` is is absent.\n *\n * @augments {Layout}\n */\nclass VariantLayout extends Layout {\n constructor(union, variant, layout, property) {\n if (!(union instanceof Union)) {\n throw new TypeError('union must be a Union');\n }\n if ((!Number.isInteger(variant)) || (0 > variant)) {\n throw new TypeError('variant must be a (non-negative) integer');\n }\n if (('string' === typeof layout)\n && (undefined === property)) {\n property = layout;\n layout = null;\n }\n if (layout) {\n if (!(layout instanceof Layout)) {\n throw new TypeError('layout must be a Layout');\n }\n if ((null !== union.defaultLayout)\n && (0 <= layout.span)\n && (layout.span > union.defaultLayout.span)) {\n throw new Error('variant span exceeds span of containing union');\n }\n if ('string' !== typeof property) {\n throw new TypeError('variant must have a String property');\n }\n }\n let span = union.span;\n if (0 > union.span) {\n span = layout ? layout.span : 0;\n if ((0 <= span) && union.usesPrefixDiscriminator) {\n span += union.discriminator.layout.span;\n }\n }\n super(span, property);\n\n /** The {@link Union} to which this variant belongs. */\n this.union = union;\n\n /** The unsigned integral value identifying this variant within\n * the {@link Union#discriminator|discriminator} of the containing\n * union. */\n this.variant = variant;\n\n /** The {@link Layout} to be used when reading/writing the\n * non-discriminator part of the {@link\n * VariantLayout#union|union}. If `null` the variant carries no\n * data. */\n this.layout = layout || null;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n /* Will be equal to the containing union span if that is not\n * variable. */\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n /* Span is defined solely by the variant (and prefix discriminator) */\n return contentOffset + this.layout.getSpan(b, offset + contentOffset);\n }\n\n /** @override */\n decode(b, offset) {\n const dest = this.makeDestinationObject();\n if (undefined === offset) {\n offset = 0;\n }\n if (this !== this.union.getVariant(b, offset)) {\n throw new Error('variant mismatch');\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n if (this.layout) {\n dest[this.property] = this.layout.decode(b, offset + contentOffset);\n } else if (this.property) {\n dest[this.property] = true;\n } else if (this.union.usesPrefixDiscriminator) {\n dest[this.union.discriminator.property] = this.variant;\n }\n return dest;\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n if (this.layout\n && (!src.hasOwnProperty(this.property))) {\n throw new TypeError('variant lacks property ' + this.property);\n }\n this.union.discriminator.encode(this.variant, b, offset);\n let span = contentOffset;\n if (this.layout) {\n this.layout.encode(src[this.property], b, offset + contentOffset);\n span += this.layout.getSpan(b, offset + contentOffset);\n if ((0 <= this.union.span)\n && (span > this.union.span)) {\n throw new Error('encoded variant overruns containing union');\n }\n }\n return span;\n }\n\n /** Delegate {@link Layout#fromArray|fromArray} to {@link\n * VariantLayout#layout|layout}. */\n fromArray(values) {\n if (this.layout) {\n return this.layout.fromArray(values);\n }\n }\n}\n\n/** JavaScript chose to define bitwise operations as operating on\n * signed 32-bit values in 2's complement form, meaning any integer\n * with bit 31 set is going to look negative. For right shifts that's\n * not a problem, because `>>>` is a logical shift, but for every\n * other bitwise operator we have to compensate for possible negative\n * results. */\nfunction fixBitwiseResult(v) {\n if (0 > v) {\n v += 0x100000000;\n }\n return v;\n}\n\n/**\n * Contain a sequence of bit fields as an unsigned integer.\n *\n * *Factory*: {@link module:Layout.bits|bits}\n *\n * This is a container element; within it there are {@link BitField}\n * instances that provide the extracted properties. The container\n * simply defines the aggregate representation and its bit ordering.\n * The representation is an object containing properties with numeric\n * or {@link Boolean} values.\n *\n * {@link BitField}s are added with the {@link\n * BitStructure#addField|addField} and {@link\n * BitStructure#addBoolean|addBoolean} methods.\n\n * @param {Layout} word - initializer for {@link\n * BitStructure#word|word}. The parameter must be an instance of\n * {@link UInt} (or {@link UIntBE}) that is no more than 4 bytes wide.\n *\n * @param {bool} [msb] - `true` if the bit numbering starts at the\n * most significant bit of the containing word; `false` (default) if\n * it starts at the least significant bit of the containing word. If\n * the parameter at this position is a string and `property` is\n * `undefined` the value of this argument will instead be used as the\n * value of `property`.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass BitStructure extends Layout {\n constructor(word, msb, property) {\n if (!((word instanceof UInt)\n || (word instanceof UIntBE))) {\n throw new TypeError('word must be a UInt or UIntBE layout');\n }\n if (('string' === typeof msb)\n && (undefined === property)) {\n property = msb;\n msb = undefined;\n }\n if (4 < word.span) {\n throw new RangeError('word cannot exceed 32 bits');\n }\n super(word.span, property);\n\n /** The layout used for the packed value. {@link BitField}\n * instances are packed sequentially depending on {@link\n * BitStructure#msb|msb}. */\n this.word = word;\n\n /** Whether the bit sequences are packed starting at the most\n * significant bit growing down (`true`), or the least significant\n * bit growing up (`false`).\n *\n * **NOTE** Regardless of this value, the least significant bit of\n * any {@link BitField} value is the least significant bit of the\n * corresponding section of the packed value. */\n this.msb = !!msb;\n\n /** The sequence of {@link BitField} layouts that comprise the\n * packed structure.\n *\n * **NOTE** The array remains mutable to allow fields to be {@link\n * BitStructure#addField|added} after construction. Users should\n * not manipulate the content of this property.*/\n this.fields = [];\n\n /* Storage for the value. Capture a variable instead of using an\n * instance property because we don't want anything to change the\n * value without going through the mutator. */\n let value = 0;\n this._packedSetValue = function(v) {\n value = fixBitwiseResult(v);\n return this;\n };\n this._packedGetValue = function() {\n return value;\n };\n }\n\n /** @override */\n decode(b, offset) {\n const dest = this.makeDestinationObject();\n if (undefined === offset) {\n offset = 0;\n }\n const value = this.word.decode(b, offset);\n this._packedSetValue(value);\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n dest[fd.property] = fd.decode(value);\n }\n }\n return dest;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link BitStructure}.\n *\n * If `src` is missing a property for a member with a defined {@link\n * Layout#property|property} the corresponding region of the packed\n * value is left unmodified. Unused bits are also left unmodified. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const value = this.word.decode(b, offset);\n this._packedSetValue(value);\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n const fv = src[fd.property];\n if (undefined !== fv) {\n fd.encode(fv);\n }\n }\n }\n return this.word.encode(this._packedGetValue(), b, offset);\n }\n\n /** Register a new bitfield with a containing bit structure. The\n * resulting bitfield is returned.\n *\n * @param {Number} bits - initializer for {@link BitField#bits|bits}.\n *\n * @param {string} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {BitField} */\n addField(bits, property) {\n const bf = new BitField(this, bits, property);\n this.fields.push(bf);\n return bf;\n }\n\n /** As with {@link BitStructure#addField|addField} for single-bit\n * fields with `boolean` value representation.\n *\n * @param {string} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {Boolean} */\n addBoolean(property) {\n // This is my Boolean, not the Javascript one.\n // eslint-disable-next-line no-new-wrappers\n const bf = new Boolean(this, property);\n this.fields.push(bf);\n return bf;\n }\n\n /**\n * Get access to the bit field for a given property.\n *\n * @param {String} property - the bit field of interest.\n *\n * @return {BitField} - the field associated with `property`, or\n * undefined if there is no such property.\n */\n fieldFor(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n for (const fd of this.fields) {\n if (fd.property === property) {\n return fd;\n }\n }\n }\n}\n\n/**\n * Represent a sequence of bits within a {@link BitStructure}.\n *\n * All bit field values are represented as unsigned integers.\n *\n * **NOTE** User code should not invoke this constructor directly.\n * Use the container {@link BitStructure#addField|addField} helper\n * method.\n *\n * **NOTE** BitField instances are not instances of {@link Layout}\n * since {@link Layout#span|span} measures 8-bit units.\n *\n * @param {BitStructure} container - initializer for {@link\n * BitField#container|container}.\n *\n * @param {Number} bits - initializer for {@link BitField#bits|bits}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n */\nclass BitField {\n constructor(container, bits, property) {\n if (!(container instanceof BitStructure)) {\n throw new TypeError('container must be a BitStructure');\n }\n if ((!Number.isInteger(bits)) || (0 >= bits)) {\n throw new TypeError('bits must be positive integer');\n }\n const totalBits = 8 * container.span;\n const usedBits = container.fields.reduce((sum, fd) => sum + fd.bits, 0);\n if ((bits + usedBits) > totalBits) {\n throw new Error('bits too long for span remainder ('\n + (totalBits - usedBits) + ' of '\n + totalBits + ' remain)');\n }\n\n /** The {@link BitStructure} instance to which this bit field\n * belongs. */\n this.container = container;\n\n /** The span of this value in bits. */\n this.bits = bits;\n\n /** A mask of {@link BitField#bits|bits} bits isolating value bits\n * that fit within the field.\n *\n * That is, it masks a value that has not yet been shifted into\n * position within its containing packed integer. */\n this.valueMask = (1 << bits) - 1;\n if (32 === bits) { // shifted value out of range\n this.valueMask = 0xFFFFFFFF;\n }\n\n /** The offset of the value within the containing packed unsigned\n * integer. The least significant bit of the packed value is at\n * offset zero, regardless of bit ordering used. */\n this.start = usedBits;\n if (this.container.msb) {\n this.start = totalBits - usedBits - bits;\n }\n\n /** A mask of {@link BitField#bits|bits} isolating the field value\n * within the containing packed unsigned integer. */\n this.wordMask = fixBitwiseResult(this.valueMask << this.start);\n\n /** The property name used when this bitfield is represented in an\n * Object.\n *\n * Intended to be functionally equivalent to {@link\n * Layout#property}.\n *\n * If left undefined the corresponding span of bits will be\n * treated as padding: it will not be mutated by {@link\n * Layout#encode|encode} nor represented as a property in the\n * decoded Object. */\n this.property = property;\n }\n\n /** Store a value into the corresponding subsequence of the containing\n * bit field. */\n decode() {\n const word = this.container._packedGetValue();\n const wordValue = fixBitwiseResult(word & this.wordMask);\n const value = wordValue >>> this.start;\n return value;\n }\n\n /** Store a value into the corresponding subsequence of the containing\n * bit field.\n *\n * **NOTE** This is not a specialization of {@link\n * Layout#encode|Layout.encode} and there is no return value. */\n encode(value) {\n if ((!Number.isInteger(value))\n || (value !== fixBitwiseResult(value & this.valueMask))) {\n throw new TypeError(nameWithProperty('BitField.encode', this)\n + ' value must be integer not exceeding ' + this.valueMask);\n }\n const word = this.container._packedGetValue();\n const wordValue = fixBitwiseResult(value << this.start);\n this.container._packedSetValue(fixBitwiseResult(word & ~this.wordMask)\n | wordValue);\n };\n}\n\n/**\n * Represent a single bit within a {@link BitStructure} as a\n * JavaScript boolean.\n *\n * **NOTE** User code should not invoke this constructor directly.\n * Use the container {@link BitStructure#addBoolean|addBoolean} helper\n * method.\n *\n * @param {BitStructure} container - initializer for {@link\n * BitField#container|container}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {BitField}\n */\n/* eslint-disable no-extend-native */\nclass Boolean extends BitField {\n constructor(container, property) {\n super(container, 1, property);\n }\n\n /** Override {@link BitField#decode|decode} for {@link Boolean|Boolean}.\n *\n * @returns {boolean} */\n decode(b, offset) {\n return !!BitField.prototype.decode.call(this, b, offset);\n }\n\n /** @override */\n encode(value) {\n if ('boolean' === typeof value) {\n // BitField requires integer values\n value = +value;\n }\n return BitField.prototype.encode.call(this, value);\n }\n}\n/* eslint-enable no-extend-native */\n\n/**\n * Contain a fixed-length block of arbitrary data, represented as a\n * Buffer.\n *\n * *Factory*: {@link module:Layout.blob|blob}\n *\n * @param {(Number|ExternalLayout)} length - initializes {@link\n * Blob#length|length}.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Blob extends Layout {\n constructor(length, property) {\n if (!(((length instanceof ExternalLayout) && length.isCount())\n || (Number.isInteger(length) && (0 <= length)))) {\n throw new TypeError('length must be positive integer '\n + 'or an unsigned integer ExternalLayout');\n }\n\n let span = -1;\n if (!(length instanceof ExternalLayout)) {\n span = length;\n }\n super(span, property);\n\n /** The number of bytes in the blob.\n *\n * This may be a non-negative integer, or an instance of {@link\n * ExternalLayout} that satisfies {@link\n * ExternalLayout#isCount|isCount()}. */\n this.length = length;\n }\n\n /** @override */\n getSpan(b, offset) {\n let span = this.span;\n if (0 > span) {\n span = this.length.decode(b, offset);\n }\n return span;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n let span = this.span;\n if (0 > span) {\n span = this.length.decode(b, offset);\n }\n return b.slice(offset, offset + span);\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Blob}.\n *\n * **NOTE** If {@link Layout#count|count} is an instance of {@link\n * ExternalLayout} then the length of `src` will be encoded as the\n * count after `src` is encoded. */\n encode(src, b, offset) {\n let span = this.length;\n if (this.length instanceof ExternalLayout) {\n span = src.length;\n }\n if (!(buffer.Buffer.isBuffer(src)\n && (span === src.length))) {\n throw new TypeError(nameWithProperty('Blob.encode', this)\n + ' requires (length ' + span + ') Buffer as src');\n }\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n b.write(src.toString('hex'), offset, span, 'hex');\n if (this.length instanceof ExternalLayout) {\n this.length.encode(span, b, offset);\n }\n return span;\n }\n}\n\n/**\n * Contain a `NUL`-terminated UTF8 string.\n *\n * *Factory*: {@link module:Layout.cstr|cstr}\n *\n * **NOTE** Any UTF8 string that incorporates a zero-valued byte will\n * not be correctly decoded by this layout.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass CString extends Layout {\n constructor(property) {\n super(-1, property);\n }\n\n /** @override */\n getSpan(b, offset) {\n if (!buffer.Buffer.isBuffer(b)) {\n throw new TypeError('b must be a Buffer');\n }\n if (undefined === offset) {\n offset = 0;\n }\n let idx = offset;\n while ((idx < b.length) && (0 !== b[idx])) {\n idx += 1;\n }\n return 1 + idx - offset;\n }\n\n /** @override */\n decode(b, offset, dest) {\n if (undefined === offset) {\n offset = 0;\n }\n let span = this.getSpan(b, offset);\n return b.slice(offset, offset + span - 1).toString('utf-8');\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n /* Must force this to a string, lest it be a number and the\n * \"utf8-encoding\" below actually allocate a buffer of length\n * src */\n if ('string' !== typeof src) {\n src = src.toString();\n }\n const srcb = new buffer.Buffer(src, 'utf8');\n const span = srcb.length;\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n srcb.copy(b, offset);\n b[offset + span] = 0;\n return span + 1;\n }\n}\n\n/**\n * Contain a UTF8 string with implicit length.\n *\n * *Factory*: {@link module:Layout.utf8|utf8}\n *\n * **NOTE** Because the length is implicit in the size of the buffer\n * this layout should be used only in isolation, or in a situation\n * where the length can be expressed by operating on a slice of the\n * containing buffer.\n *\n * @param {Number} [maxSpan] - the maximum length allowed for encoded\n * string content. If not provided there is no bound on the allowed\n * content.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UTF8 extends Layout {\n constructor(maxSpan, property) {\n if (('string' === typeof maxSpan)\n && (undefined === property)) {\n property = maxSpan;\n maxSpan = undefined;\n }\n if (undefined === maxSpan) {\n maxSpan = -1;\n } else if (!Number.isInteger(maxSpan)) {\n throw new TypeError('maxSpan must be an integer');\n }\n\n super(-1, property);\n\n /** The maximum span of the layout in bytes.\n *\n * Positive values are generally expected. Zero is abnormal.\n * Attempts to encode or decode a value that exceeds this length\n * will throw a `RangeError`.\n *\n * A negative value indicates that there is no bound on the length\n * of the content. */\n this.maxSpan = maxSpan;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (!buffer.Buffer.isBuffer(b)) {\n throw new TypeError('b must be a Buffer');\n }\n if (undefined === offset) {\n offset = 0;\n }\n return b.length - offset;\n }\n\n /** @override */\n decode(b, offset, dest) {\n if (undefined === offset) {\n offset = 0;\n }\n let span = this.getSpan(b, offset);\n if ((0 <= this.maxSpan)\n && (this.maxSpan < span)) {\n throw new RangeError('text length exceeds maxSpan');\n }\n return b.slice(offset, offset + span).toString('utf-8');\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n /* Must force this to a string, lest it be a number and the\n * \"utf8-encoding\" below actually allocate a buffer of length\n * src */\n if ('string' !== typeof src) {\n src = src.toString();\n }\n const srcb = new buffer.Buffer(src, 'utf8');\n const span = srcb.length;\n if ((0 <= this.maxSpan)\n && (this.maxSpan < span)) {\n throw new RangeError('text length exceeds maxSpan');\n }\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n srcb.copy(b, offset);\n return span;\n }\n}\n\n/**\n * Contain a constant value.\n *\n * This layout may be used in cases where a JavaScript value can be\n * inferred without an expression in the binary encoding. An example\n * would be a {@link VariantLayout|variant layout} where the content\n * is implied by the union {@link Union#discriminator|discriminator}.\n *\n * @param {Object|Number|String} value - initializer for {@link\n * Constant#value|value}. If the value is an object (or array) and\n * the application intends the object to remain unchanged regardless\n * of what is done to values decoded by this layout, the value should\n * be frozen prior passing it to this constructor.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Constant extends Layout {\n constructor(value, property) {\n super(0, property);\n\n /** The value produced by this constant when the layout is {@link\n * Constant#decode|decoded}.\n *\n * Any JavaScript value including `null` and `undefined` is\n * permitted.\n *\n * **WARNING** If `value` passed in the constructor was not\n * frozen, it is possible for users of decoded values to change\n * the content of the value. */\n this.value = value;\n }\n\n /** @override */\n decode(b, offset, dest) {\n return this.value;\n }\n\n /** @override */\n encode(src, b, offset) {\n /* Constants take no space */\n return 0;\n }\n}\n\nLayout$1.ExternalLayout = ExternalLayout;\nLayout$1.GreedyCount = GreedyCount;\nLayout$1.OffsetLayout = OffsetLayout;\nLayout$1.UInt = UInt;\nLayout$1.UIntBE = UIntBE;\nLayout$1.Int = Int;\nLayout$1.IntBE = IntBE;\nLayout$1.Float = Float;\nLayout$1.FloatBE = FloatBE;\nLayout$1.Double = Double;\nLayout$1.DoubleBE = DoubleBE;\nLayout$1.Sequence = Sequence;\nLayout$1.Structure = Structure;\nLayout$1.UnionDiscriminator = UnionDiscriminator;\nLayout$1.UnionLayoutDiscriminator = UnionLayoutDiscriminator;\nLayout$1.Union = Union;\nLayout$1.VariantLayout = VariantLayout;\nLayout$1.BitStructure = BitStructure;\nLayout$1.BitField = BitField;\nLayout$1.Boolean = Boolean;\nLayout$1.Blob = Blob;\nLayout$1.CString = CString;\nLayout$1.UTF8 = UTF8;\nLayout$1.Constant = Constant;\n\n/** Factory for {@link GreedyCount}. */\nLayout$1.greedy = ((elementSpan, property) => new GreedyCount(elementSpan, property));\n\n/** Factory for {@link OffsetLayout}. */\nLayout$1.offset = ((layout, offset, property) => new OffsetLayout(layout, offset, property));\n\n/** Factory for {@link UInt|unsigned int layouts} spanning one\n * byte. */\nvar u8 = Layout$1.u8 = (property => new UInt(1, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning two bytes. */\nLayout$1.u16 = (property => new UInt(2, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning three bytes. */\nLayout$1.u24 = (property => new UInt(3, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning four bytes. */\nvar u32 = Layout$1.u32 = (property => new UInt(4, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning five bytes. */\nLayout$1.u40 = (property => new UInt(5, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning six bytes. */\nLayout$1.u48 = (property => new UInt(6, property));\n\n/** Factory for {@link NearUInt64|little-endian unsigned int\n * layouts} interpreted as Numbers. */\nLayout$1.nu64 = (property => new NearUInt64(property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning two bytes. */\nLayout$1.u16be = (property => new UIntBE(2, property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning three bytes. */\nLayout$1.u24be = (property => new UIntBE(3, property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning four bytes. */\nLayout$1.u32be = (property => new UIntBE(4, property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning five bytes. */\nLayout$1.u40be = (property => new UIntBE(5, property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning six bytes. */\nLayout$1.u48be = (property => new UIntBE(6, property));\n\n/** Factory for {@link NearUInt64BE|big-endian unsigned int\n * layouts} interpreted as Numbers. */\nLayout$1.nu64be = (property => new NearUInt64BE(property));\n\n/** Factory for {@link Int|signed int layouts} spanning one\n * byte. */\nLayout$1.s8 = (property => new Int(1, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning two bytes. */\nLayout$1.s16 = (property => new Int(2, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning three bytes. */\nLayout$1.s24 = (property => new Int(3, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning four bytes. */\nLayout$1.s32 = (property => new Int(4, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning five bytes. */\nLayout$1.s40 = (property => new Int(5, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning six bytes. */\nLayout$1.s48 = (property => new Int(6, property));\n\n/** Factory for {@link NearInt64|little-endian signed int layouts}\n * interpreted as Numbers. */\nLayout$1.ns64 = (property => new NearInt64(property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning two bytes. */\nLayout$1.s16be = (property => new IntBE(2, property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning three bytes. */\nLayout$1.s24be = (property => new IntBE(3, property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning four bytes. */\nLayout$1.s32be = (property => new IntBE(4, property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning five bytes. */\nLayout$1.s40be = (property => new IntBE(5, property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning six bytes. */\nLayout$1.s48be = (property => new IntBE(6, property));\n\n/** Factory for {@link NearInt64BE|big-endian signed int layouts}\n * interpreted as Numbers. */\nLayout$1.ns64be = (property => new NearInt64BE(property));\n\n/** Factory for {@link Float|little-endian 32-bit floating point} values. */\nLayout$1.f32 = (property => new Float(property));\n\n/** Factory for {@link FloatBE|big-endian 32-bit floating point} values. */\nLayout$1.f32be = (property => new FloatBE(property));\n\n/** Factory for {@link Double|little-endian 64-bit floating point} values. */\nLayout$1.f64 = (property => new Double(property));\n\n/** Factory for {@link DoubleBE|big-endian 64-bit floating point} values. */\nLayout$1.f64be = (property => new DoubleBE(property));\n\n/** Factory for {@link Structure} values. */\nvar struct = Layout$1.struct = ((fields, property, decodePrefixes) => new Structure(fields, property, decodePrefixes));\n\n/** Factory for {@link BitStructure} values. */\nLayout$1.bits = ((word, msb, property) => new BitStructure(word, msb, property));\n\n/** Factory for {@link Sequence} values. */\nLayout$1.seq = ((elementLayout, count, property) => new Sequence(elementLayout, count, property));\n\n/** Factory for {@link Union} values. */\nLayout$1.union = ((discr, defaultLayout, property) => new Union(discr, defaultLayout, property));\n\n/** Factory for {@link UnionLayoutDiscriminator} values. */\nLayout$1.unionLayoutDiscriminator = ((layout, property) => new UnionLayoutDiscriminator(layout, property));\n\n/** Factory for {@link Blob} values. */\nvar blob = Layout$1.blob = ((length, property) => new Blob(length, property));\n\n/** Factory for {@link CString} values. */\nLayout$1.cstr = (property => new CString(property));\n\n/** Factory for {@link UTF8} values. */\nLayout$1.utf8 = ((maxSpan, property) => new UTF8(maxSpan, property));\n\n/** Factory for {@link Constant} values. */\nLayout$1.const = ((value, property) => new Constant(value, property));\n\n// \n/**\n * Layout for a public key\n */\n\nconst publicKey = (property = 'publicKey') => {\n return blob(32, property);\n};\n/**\n * Layout for a 64bit unsigned value\n */\n\nconst uint64 = (property = 'uint64') => {\n return blob(8, property);\n};\n\n// \nfunction sendAndConfirmTransaction(title, connection, transaction, ...signers) {\n return sendAndConfirmTransaction$1(connection, transaction, signers, {\n skipPreflight: false\n });\n}\n\nconst TOKEN_PROGRAM_ID = new PublicKey('TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA');\nconst ASSOCIATED_TOKEN_PROGRAM_ID = new PublicKey('ATokenGPvbdGVxr1b2hvZbsiqW5xWH25efTNsLJA8knL');\nconst FAILED_TO_FIND_ACCOUNT = 'Failed to find account';\nconst INVALID_ACCOUNT_OWNER = 'Invalid account owner';\n/**\n * Unfortunately, BufferLayout.encode uses an `instanceof` check for `Buffer`\n * which fails when using `publicKey.toBuffer()` directly because the bundled `Buffer`\n * class in `@solana/web3.js` is different from the bundled `Buffer` class in this package\n */\n\nfunction pubkeyToBuffer(publicKey) {\n return buffer.Buffer.from(publicKey.toBuffer());\n}\n/**\n * 64-bit value\n */\n\n\nclass u64 extends BN {\n /**\n * Convert to Buffer representation\n */\n toBuffer() {\n const a = super.toArray().reverse();\n const b = buffer.Buffer.from(a);\n\n if (b.length === 8) {\n return b;\n }\n\n assert(b.length < 8, 'u64 too large');\n const zeroPad = buffer.Buffer.alloc(8);\n b.copy(zeroPad);\n return zeroPad;\n }\n /**\n * Construct a u64 from Buffer representation\n */\n\n\n static fromBuffer(buffer) {\n assert(buffer.length === 8, `Invalid buffer length: ${buffer.length}`);\n return new u64([...buffer].reverse().map(i => `00${i.toString(16)}`.slice(-2)).join(''), 16);\n }\n\n}\n\nfunction isAccount(accountOrPublicKey) {\n return 'publicKey' in accountOrPublicKey;\n}\n\nconst AuthorityTypeCodes = {\n MintTokens: 0,\n FreezeAccount: 1,\n AccountOwner: 2,\n CloseAccount: 3\n}; // The address of the special mint for wrapped native token.\n\nconst NATIVE_MINT = new PublicKey('So11111111111111111111111111111111111111112');\n/**\n * Information about the mint\n */\n\nconst MintLayout = struct([u32('mintAuthorityOption'), publicKey('mintAuthority'), uint64('supply'), u8('decimals'), u8('isInitialized'), u32('freezeAuthorityOption'), publicKey('freezeAuthority')]);\n/**\n * Information about an account\n */\n\n/**\n * @private\n */\n\nconst AccountLayout = struct([publicKey('mint'), publicKey('owner'), uint64('amount'), u32('delegateOption'), publicKey('delegate'), u8('state'), u32('isNativeOption'), uint64('isNative'), uint64('delegatedAmount'), u32('closeAuthorityOption'), publicKey('closeAuthority')]);\n/**\n * Information about an multisig\n */\n\n/**\n * @private\n */\n\nconst MultisigLayout = struct([u8('m'), u8('n'), u8('is_initialized'), publicKey('signer1'), publicKey('signer2'), publicKey('signer3'), publicKey('signer4'), publicKey('signer5'), publicKey('signer6'), publicKey('signer7'), publicKey('signer8'), publicKey('signer9'), publicKey('signer10'), publicKey('signer11')]);\n/**\n * An ERC20-like Token\n */\n\nclass Token {\n /**\n * @private\n */\n\n /**\n * The public key identifying this mint\n */\n\n /**\n * Program Identifier for the Token program\n */\n\n /**\n * Program Identifier for the Associated Token program\n */\n\n /**\n * Fee payer\n */\n\n /**\n * Create a Token object attached to the specific mint\n *\n * @param connection The connection to use\n * @param token Public key of the mint\n * @param programId token programId\n * @param payer Payer of fees\n */\n constructor(connection, publicKey, programId, payer) {\n _defineProperty(this, \"connection\", void 0);\n\n _defineProperty(this, \"publicKey\", void 0);\n\n _defineProperty(this, \"programId\", void 0);\n\n _defineProperty(this, \"associatedProgramId\", void 0);\n\n _defineProperty(this, \"payer\", void 0);\n\n Object.assign(this, {\n connection,\n publicKey,\n programId,\n payer,\n // Hard code is ok; Overriding is needed only for tests\n associatedProgramId: ASSOCIATED_TOKEN_PROGRAM_ID\n });\n }\n /**\n * Get the minimum balance for the mint to be rent exempt\n *\n * @return Number of lamports required\n */\n\n\n static async getMinBalanceRentForExemptMint(connection) {\n return await connection.getMinimumBalanceForRentExemption(MintLayout.span);\n }\n /**\n * Get the minimum balance for the account to be rent exempt\n *\n * @return Number of lamports required\n */\n\n\n static async getMinBalanceRentForExemptAccount(connection) {\n return await connection.getMinimumBalanceForRentExemption(AccountLayout.span);\n }\n /**\n * Get the minimum balance for the multsig to be rent exempt\n *\n * @return Number of lamports required\n */\n\n\n static async getMinBalanceRentForExemptMultisig(connection) {\n return await connection.getMinimumBalanceForRentExemption(MultisigLayout.span);\n }\n /**\n * Create and initialize a token.\n *\n * @param connection The connection to use\n * @param payer Fee payer for transaction\n * @param mintAuthority Account or multisig that will control minting\n * @param freezeAuthority Optional account or multisig that can freeze token accounts\n * @param decimals Location of the decimal place\n * @param programId Optional token programId, uses the system programId by default\n * @return Token object for the newly minted token\n */\n\n\n static async createMint(connection, payer, mintAuthority, freezeAuthority, decimals, programId) {\n const mintAccount = Keypair.generate();\n const token = new Token(connection, mintAccount.publicKey, programId, payer); // Allocate memory for the account\n\n const balanceNeeded = await Token.getMinBalanceRentForExemptMint(connection);\n const transaction = new Transaction();\n transaction.add(SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: mintAccount.publicKey,\n lamports: balanceNeeded,\n space: MintLayout.span,\n programId\n }));\n transaction.add(Token.createInitMintInstruction(programId, mintAccount.publicKey, decimals, mintAuthority, freezeAuthority)); // Send the two instructions\n\n await sendAndConfirmTransaction('createAccount and InitializeMint', connection, transaction, payer, mintAccount);\n return token;\n }\n /**\n * Create and initialize a new account.\n *\n * This account may then be used as a `transfer()` or `approve()` destination\n *\n * @param owner User account that will own the new account\n * @return Public key of the new empty account\n */\n\n\n async createAccount(owner) {\n // Allocate memory for the account\n const balanceNeeded = await Token.getMinBalanceRentForExemptAccount(this.connection);\n const newAccount = Keypair.generate();\n const transaction = new Transaction();\n transaction.add(SystemProgram.createAccount({\n fromPubkey: this.payer.publicKey,\n newAccountPubkey: newAccount.publicKey,\n lamports: balanceNeeded,\n space: AccountLayout.span,\n programId: this.programId\n }));\n const mintPublicKey = this.publicKey;\n transaction.add(Token.createInitAccountInstruction(this.programId, mintPublicKey, newAccount.publicKey, owner)); // Send the two instructions\n\n await sendAndConfirmTransaction('createAccount and InitializeAccount', this.connection, transaction, this.payer, newAccount);\n return newAccount.publicKey;\n }\n /**\n * Create and initialize the associated account.\n *\n * This account may then be used as a `transfer()` or `approve()` destination\n *\n * @param owner User account that will own the new account\n * @return Public key of the new associated account\n */\n\n\n async createAssociatedTokenAccount(owner) {\n const associatedAddress = await Token.getAssociatedTokenAddress(this.associatedProgramId, this.programId, this.publicKey, owner);\n return this.createAssociatedTokenAccountInternal(owner, associatedAddress);\n }\n\n async createAssociatedTokenAccountInternal(owner, associatedAddress) {\n await sendAndConfirmTransaction('CreateAssociatedTokenAccount', this.connection, new Transaction().add(Token.createAssociatedTokenAccountInstruction(this.associatedProgramId, this.programId, this.publicKey, associatedAddress, owner, this.payer.publicKey)), this.payer);\n return associatedAddress;\n }\n /**\n * Retrieve the associated account or create one if not found.\n *\n * This account may then be used as a `transfer()` or `approve()` destination\n *\n * @param owner User account that will own the new account\n * @return The new associated account\n */\n\n\n async getOrCreateAssociatedAccountInfo(owner) {\n const associatedAddress = await Token.getAssociatedTokenAddress(this.associatedProgramId, this.programId, this.publicKey, owner); // This is the optimum logic, considering TX fee, client-side computation,\n // RPC roundtrips and guaranteed idempotent.\n // Sadly we can't do this atomically;\n\n try {\n return await this.getAccountInfo(associatedAddress);\n } catch (err) {\n // INVALID_ACCOUNT_OWNER can be possible if the associatedAddress has\n // already been received some lamports (= became system accounts).\n // Assuming program derived addressing is safe, this is the only case\n // for the INVALID_ACCOUNT_OWNER in this code-path\n if (err.message === FAILED_TO_FIND_ACCOUNT || err.message === INVALID_ACCOUNT_OWNER) {\n // as this isn't atomic, it's possible others can create associated\n // accounts meanwhile\n try {\n await this.createAssociatedTokenAccountInternal(owner, associatedAddress);\n } catch (err) {// ignore all errors; for now there is no API compatible way to\n // selectively ignore the expected instruction error if the\n // associated account is existing already.\n } // Now this should always succeed\n\n\n return await this.getAccountInfo(associatedAddress);\n } else {\n throw err;\n }\n }\n }\n /**\n * Create and initialize a new account on the special native token mint.\n *\n * In order to be wrapped, the account must have a balance of native tokens\n * when it is initialized with the token program.\n *\n * This function sends lamports to the new account before initializing it.\n *\n * @param connection A solana web3 connection\n * @param programId The token program ID\n * @param owner The owner of the new token account\n * @param payer The source of the lamports to initialize, and payer of the initialization fees.\n * @param amount The amount of lamports to wrap\n * @return {Promise} The new token account\n */\n\n\n static async createWrappedNativeAccount(connection, programId, owner, payer, amount) {\n // Allocate memory for the account\n const balanceNeeded = await Token.getMinBalanceRentForExemptAccount(connection); // Create a new account\n\n const newAccount = Keypair.generate();\n const transaction = new Transaction();\n transaction.add(SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: newAccount.publicKey,\n lamports: balanceNeeded,\n space: AccountLayout.span,\n programId\n })); // Send lamports to it (these will be wrapped into native tokens by the token program)\n\n transaction.add(SystemProgram.transfer({\n fromPubkey: payer.publicKey,\n toPubkey: newAccount.publicKey,\n lamports: amount\n })); // Assign the new account to the native token mint.\n // the account will be initialized with a balance equal to the native token balance.\n // (i.e. amount)\n\n transaction.add(Token.createInitAccountInstruction(programId, NATIVE_MINT, newAccount.publicKey, owner)); // Send the three instructions\n\n await sendAndConfirmTransaction('createAccount, transfer, and initializeAccount', connection, transaction, payer, newAccount);\n return newAccount.publicKey;\n }\n /**\n * Create and initialize a new multisig.\n *\n * This account may then be used for multisignature verification\n *\n * @param m Number of required signatures\n * @param signers Full set of signers\n * @return Public key of the new multisig account\n */\n\n\n async createMultisig(m, signers) {\n const multisigAccount = Keypair.generate(); // Allocate memory for the account\n\n const balanceNeeded = await Token.getMinBalanceRentForExemptMultisig(this.connection);\n const transaction = new Transaction();\n transaction.add(SystemProgram.createAccount({\n fromPubkey: this.payer.publicKey,\n newAccountPubkey: multisigAccount.publicKey,\n lamports: balanceNeeded,\n space: MultisigLayout.span,\n programId: this.programId\n })); // create the new account\n\n let keys = [{\n pubkey: multisigAccount.publicKey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false\n }];\n signers.forEach(signer => keys.push({\n pubkey: signer,\n isSigner: false,\n isWritable: false\n }));\n const dataLayout = struct([u8('instruction'), u8('m')]);\n const data = buffer.Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: 2,\n // InitializeMultisig instruction\n m\n }, data);\n transaction.add({\n keys,\n programId: this.programId,\n data\n }); // Send the two instructions\n\n await sendAndConfirmTransaction('createAccount and InitializeMultisig', this.connection, transaction, this.payer, multisigAccount);\n return multisigAccount.publicKey;\n }\n /**\n * Retrieve mint information\n */\n\n\n async getMintInfo() {\n const info = await this.connection.getAccountInfo(this.publicKey);\n\n if (info === null) {\n throw new Error('Failed to find mint account');\n }\n\n if (!info.owner.equals(this.programId)) {\n throw new Error(`Invalid mint owner: ${JSON.stringify(info.owner)}`);\n }\n\n if (info.data.length != MintLayout.span) {\n throw new Error(`Invalid mint size`);\n }\n\n const data = buffer.Buffer.from(info.data);\n const mintInfo = MintLayout.decode(data);\n\n if (mintInfo.mintAuthorityOption === 0) {\n mintInfo.mintAuthority = null;\n } else {\n mintInfo.mintAuthority = new PublicKey(mintInfo.mintAuthority);\n }\n\n mintInfo.supply = u64.fromBuffer(mintInfo.supply);\n mintInfo.isInitialized = mintInfo.isInitialized != 0;\n\n if (mintInfo.freezeAuthorityOption === 0) {\n mintInfo.freezeAuthority = null;\n } else {\n mintInfo.freezeAuthority = new PublicKey(mintInfo.freezeAuthority);\n }\n\n return mintInfo;\n }\n /**\n * Retrieve account information\n *\n * @param account Public key of the account\n */\n\n\n async getAccountInfo(account, commitment) {\n const info = await this.connection.getAccountInfo(account, commitment);\n\n if (info === null) {\n throw new Error(FAILED_TO_FIND_ACCOUNT);\n }\n\n if (!info.owner.equals(this.programId)) {\n throw new Error(INVALID_ACCOUNT_OWNER);\n }\n\n if (info.data.length != AccountLayout.span) {\n throw new Error(`Invalid account size`);\n }\n\n const data = buffer.Buffer.from(info.data);\n const accountInfo = AccountLayout.decode(data);\n accountInfo.address = account;\n accountInfo.mint = new PublicKey(accountInfo.mint);\n accountInfo.owner = new PublicKey(accountInfo.owner);\n accountInfo.amount = u64.fromBuffer(accountInfo.amount);\n\n if (accountInfo.delegateOption === 0) {\n accountInfo.delegate = null;\n accountInfo.delegatedAmount = new u64();\n } else {\n accountInfo.delegate = new PublicKey(accountInfo.delegate);\n accountInfo.delegatedAmount = u64.fromBuffer(accountInfo.delegatedAmount);\n }\n\n accountInfo.isInitialized = accountInfo.state !== 0;\n accountInfo.isFrozen = accountInfo.state === 2;\n\n if (accountInfo.isNativeOption === 1) {\n accountInfo.rentExemptReserve = u64.fromBuffer(accountInfo.isNative);\n accountInfo.isNative = true;\n } else {\n accountInfo.rentExemptReserve = null;\n accountInfo.isNative = false;\n }\n\n if (accountInfo.closeAuthorityOption === 0) {\n accountInfo.closeAuthority = null;\n } else {\n accountInfo.closeAuthority = new PublicKey(accountInfo.closeAuthority);\n }\n\n if (!accountInfo.mint.equals(this.publicKey)) {\n throw new Error(`Invalid account mint: ${JSON.stringify(accountInfo.mint)} !== ${JSON.stringify(this.publicKey)}`);\n }\n\n return accountInfo;\n }\n /**\n * Retrieve Multisig information\n *\n * @param multisig Public key of the account\n */\n\n\n async getMultisigInfo(multisig) {\n const info = await this.connection.getAccountInfo(multisig);\n\n if (info === null) {\n throw new Error('Failed to find multisig');\n }\n\n if (!info.owner.equals(this.programId)) {\n throw new Error(`Invalid multisig owner`);\n }\n\n if (info.data.length != MultisigLayout.span) {\n throw new Error(`Invalid multisig size`);\n }\n\n const data = buffer.Buffer.from(info.data);\n const multisigInfo = MultisigLayout.decode(data);\n multisigInfo.signer1 = new PublicKey(multisigInfo.signer1);\n multisigInfo.signer2 = new PublicKey(multisigInfo.signer2);\n multisigInfo.signer3 = new PublicKey(multisigInfo.signer3);\n multisigInfo.signer4 = new PublicKey(multisigInfo.signer4);\n multisigInfo.signer5 = new PublicKey(multisigInfo.signer5);\n multisigInfo.signer6 = new PublicKey(multisigInfo.signer6);\n multisigInfo.signer7 = new PublicKey(multisigInfo.signer7);\n multisigInfo.signer8 = new PublicKey(multisigInfo.signer8);\n multisigInfo.signer9 = new PublicKey(multisigInfo.signer9);\n multisigInfo.signer10 = new PublicKey(multisigInfo.signer10);\n multisigInfo.signer11 = new PublicKey(multisigInfo.signer11);\n return multisigInfo;\n }\n /**\n * Transfer tokens to another account\n *\n * @param source Source account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param multiSigners Signing accounts if `owner` is a multiSig\n * @param amount Number of tokens to transfer\n */\n\n\n async transfer(source, destination, owner, multiSigners, amount) {\n let ownerPublicKey;\n let signers;\n\n if (isAccount(owner)) {\n ownerPublicKey = owner.publicKey;\n signers = [owner];\n } else {\n ownerPublicKey = owner;\n signers = multiSigners;\n }\n\n return await sendAndConfirmTransaction('Transfer', this.connection, new Transaction().add(Token.createTransferInstruction(this.programId, source, destination, ownerPublicKey, multiSigners, amount)), this.payer, ...signers);\n }\n /**\n * Grant a third-party permission to transfer up the specified number of tokens from an account\n *\n * @param account Public key of the account\n * @param delegate Account authorized to perform a transfer tokens from the source account\n * @param owner Owner of the source account\n * @param multiSigners Signing accounts if `owner` is a multiSig\n * @param amount Maximum number of tokens the delegate may transfer\n */\n\n\n async approve(account, delegate, owner, multiSigners, amount) {\n let ownerPublicKey;\n let signers;\n\n if (isAccount(owner)) {\n ownerPublicKey = owner.publicKey;\n signers = [owner];\n } else {\n ownerPublicKey = owner;\n signers = multiSigners;\n }\n\n await sendAndConfirmTransaction('Approve', this.connection, new Transaction().add(Token.createApproveInstruction(this.programId, account, delegate, ownerPublicKey, multiSigners, amount)), this.payer, ...signers);\n }\n /**\n * Remove approval for the transfer of any remaining tokens\n *\n * @param account Public key of the account\n * @param owner Owner of the source account\n * @param multiSigners Signing accounts if `owner` is a multiSig\n */\n\n\n async revoke(account, owner, multiSigners) {\n let ownerPublicKey;\n let signers;\n\n if (isAccount(owner)) {\n ownerPublicKey = owner.publicKey;\n signers = [owner];\n } else {\n ownerPublicKey = owner;\n signers = multiSigners;\n }\n\n await sendAndConfirmTransaction('Revoke', this.connection, new Transaction().add(Token.createRevokeInstruction(this.programId, account, ownerPublicKey, multiSigners)), this.payer, ...signers);\n }\n /**\n * Assign a new authority to the account\n *\n * @param account Public key of the account\n * @param newAuthority New authority of the account\n * @param authorityType Type of authority to set\n * @param currentAuthority Current authority of the account\n * @param multiSigners Signing accounts if `currentAuthority` is a multiSig\n */\n\n\n async setAuthority(account, newAuthority, authorityType, currentAuthority, multiSigners) {\n let currentAuthorityPublicKey;\n let signers;\n\n if (isAccount(currentAuthority)) {\n currentAuthorityPublicKey = currentAuthority.publicKey;\n signers = [currentAuthority];\n } else {\n currentAuthorityPublicKey = currentAuthority;\n signers = multiSigners;\n }\n\n await sendAndConfirmTransaction('SetAuthority', this.connection, new Transaction().add(Token.createSetAuthorityInstruction(this.programId, account, newAuthority, authorityType, currentAuthorityPublicKey, multiSigners)), this.payer, ...signers);\n }\n /**\n * Mint new tokens\n *\n * @param dest Public key of the account to mint to\n * @param authority Minting authority\n * @param multiSigners Signing accounts if `authority` is a multiSig\n * @param amount Amount to mint\n */\n\n\n async mintTo(dest, authority, multiSigners, amount) {\n let ownerPublicKey;\n let signers;\n\n if (isAccount(authority)) {\n ownerPublicKey = authority.publicKey;\n signers = [authority];\n } else {\n ownerPublicKey = authority;\n signers = multiSigners;\n }\n\n await sendAndConfirmTransaction('MintTo', this.connection, new Transaction().add(Token.createMintToInstruction(this.programId, this.publicKey, dest, ownerPublicKey, multiSigners, amount)), this.payer, ...signers);\n }\n /**\n * Burn tokens\n *\n * @param account Account to burn tokens from\n * @param owner Account owner\n * @param multiSigners Signing accounts if `owner` is a multiSig\n * @param amount Amount to burn\n */\n\n\n async burn(account, owner, multiSigners, amount) {\n let ownerPublicKey;\n let signers;\n\n if (isAccount(owner)) {\n ownerPublicKey = owner.publicKey;\n signers = [owner];\n } else {\n ownerPublicKey = owner;\n signers = multiSigners;\n }\n\n await sendAndConfirmTransaction('Burn', this.connection, new Transaction().add(Token.createBurnInstruction(this.programId, this.publicKey, account, ownerPublicKey, multiSigners, amount)), this.payer, ...signers);\n }\n /**\n * Close account\n *\n * @param account Account to close\n * @param dest Account to receive the remaining balance of the closed account\n * @param authority Authority which is allowed to close the account\n * @param multiSigners Signing accounts if `authority` is a multiSig\n */\n\n\n async closeAccount(account, dest, authority, multiSigners) {\n let authorityPublicKey;\n let signers;\n\n if (isAccount(authority)) {\n authorityPublicKey = authority.publicKey;\n signers = [authority];\n } else {\n authorityPublicKey = authority;\n signers = multiSigners;\n }\n\n await sendAndConfirmTransaction('CloseAccount', this.connection, new Transaction().add(Token.createCloseAccountInstruction(this.programId, account, dest, authorityPublicKey, multiSigners)), this.payer, ...signers);\n }\n /**\n * Freeze account\n *\n * @param account Account to freeze\n * @param authority The mint freeze authority\n * @param multiSigners Signing accounts if `authority` is a multiSig\n */\n\n\n async freezeAccount(account, authority, multiSigners) {\n let authorityPublicKey;\n let signers;\n\n if (isAccount(authority)) {\n authorityPublicKey = authority.publicKey;\n signers = [authority];\n } else {\n authorityPublicKey = authority;\n signers = multiSigners;\n }\n\n await sendAndConfirmTransaction('FreezeAccount', this.connection, new Transaction().add(Token.createFreezeAccountInstruction(this.programId, account, this.publicKey, authorityPublicKey, multiSigners)), this.payer, ...signers);\n }\n /**\n * Thaw account\n *\n * @param account Account to thaw\n * @param authority The mint freeze authority\n * @param multiSigners Signing accounts if `authority` is a multiSig\n */\n\n\n async thawAccount(account, authority, multiSigners) {\n let authorityPublicKey;\n let signers;\n\n if (isAccount(authority)) {\n authorityPublicKey = authority.publicKey;\n signers = [authority];\n } else {\n authorityPublicKey = authority;\n signers = multiSigners;\n }\n\n await sendAndConfirmTransaction('ThawAccount', this.connection, new Transaction().add(Token.createThawAccountInstruction(this.programId, account, this.publicKey, authorityPublicKey, multiSigners)), this.payer, ...signers);\n }\n /**\n * Transfer tokens to another account, asserting the token mint and decimals\n *\n * @param source Source account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param multiSigners Signing accounts if `owner` is a multiSig\n * @param amount Number of tokens to transfer\n * @param decimals Number of decimals in transfer amount\n */\n\n\n async transferChecked(source, destination, owner, multiSigners, amount, decimals) {\n let ownerPublicKey;\n let signers;\n\n if (isAccount(owner)) {\n ownerPublicKey = owner.publicKey;\n signers = [owner];\n } else {\n ownerPublicKey = owner;\n signers = multiSigners;\n }\n\n return await sendAndConfirmTransaction('TransferChecked', this.connection, new Transaction().add(Token.createTransferCheckedInstruction(this.programId, source, this.publicKey, destination, ownerPublicKey, multiSigners, amount, decimals)), this.payer, ...signers);\n }\n /**\n * Grant a third-party permission to transfer up the specified number of tokens from an account,\n * asserting the token mint and decimals\n *\n * @param account Public key of the account\n * @param delegate Account authorized to perform a transfer tokens from the source account\n * @param owner Owner of the source account\n * @param multiSigners Signing accounts if `owner` is a multiSig\n * @param amount Maximum number of tokens the delegate may transfer\n * @param decimals Number of decimals in approve amount\n */\n\n\n async approveChecked(account, delegate, owner, multiSigners, amount, decimals) {\n let ownerPublicKey;\n let signers;\n\n if (isAccount(owner)) {\n ownerPublicKey = owner.publicKey;\n signers = [owner];\n } else {\n ownerPublicKey = owner;\n signers = multiSigners;\n }\n\n await sendAndConfirmTransaction('ApproveChecked', this.connection, new Transaction().add(Token.createApproveCheckedInstruction(this.programId, account, this.publicKey, delegate, ownerPublicKey, multiSigners, amount, decimals)), this.payer, ...signers);\n }\n /**\n * Mint new tokens, asserting the token mint and decimals\n *\n * @param dest Public key of the account to mint to\n * @param authority Minting authority\n * @param multiSigners Signing accounts if `authority` is a multiSig\n * @param amount Amount to mint\n * @param decimals Number of decimals in amount to mint\n */\n\n\n async mintToChecked(dest, authority, multiSigners, amount, decimals) {\n let ownerPublicKey;\n let signers;\n\n if (isAccount(authority)) {\n ownerPublicKey = authority.publicKey;\n signers = [authority];\n } else {\n ownerPublicKey = authority;\n signers = multiSigners;\n }\n\n await sendAndConfirmTransaction('MintToChecked', this.connection, new Transaction().add(Token.createMintToCheckedInstruction(this.programId, this.publicKey, dest, ownerPublicKey, multiSigners, amount, decimals)), this.payer, ...signers);\n }\n /**\n * Burn tokens, asserting the token mint and decimals\n *\n * @param account Account to burn tokens from\n * @param owner Account owner\n * @param multiSigners Signing accounts if `owner` is a multiSig\n * @param amount Amount to burn\n * @param decimals Number of decimals in amount to burn\n */\n\n\n async burnChecked(account, owner, multiSigners, amount, decimals) {\n let ownerPublicKey;\n let signers;\n\n if (isAccount(owner)) {\n ownerPublicKey = owner.publicKey;\n signers = [owner];\n } else {\n ownerPublicKey = owner;\n signers = multiSigners;\n }\n\n await sendAndConfirmTransaction('BurnChecked', this.connection, new Transaction().add(Token.createBurnCheckedInstruction(this.programId, this.publicKey, account, ownerPublicKey, multiSigners, amount, decimals)), this.payer, ...signers);\n }\n /**\n * Sync amount in native SPL token account to underlying lamports\n *\n * @param nativeAccount Account to sync\n */\n\n\n async syncNative(nativeAccount) {\n await sendAndConfirmTransaction('SyncNative', this.connection, new Transaction().add(Token.createSyncNativeInstruction(this.programId, nativeAccount)), this.payer);\n }\n /**\n * Construct an InitializeMint instruction\n *\n * @param programId SPL Token program account\n * @param mint Token mint account\n * @param decimals Number of decimals in token account amounts\n * @param mintAuthority Minting authority\n * @param freezeAuthority Optional authority that can freeze token accounts\n */\n\n\n static createInitMintInstruction(programId, mint, decimals, mintAuthority, freezeAuthority) {\n let keys = [{\n pubkey: mint,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false\n }];\n const commandDataLayout = struct([u8('instruction'), u8('decimals'), publicKey('mintAuthority'), u8('option'), publicKey('freezeAuthority')]);\n let data = buffer.Buffer.alloc(1024);\n {\n const encodeLength = commandDataLayout.encode({\n instruction: 0,\n // InitializeMint instruction\n decimals,\n mintAuthority: pubkeyToBuffer(mintAuthority),\n option: freezeAuthority === null ? 0 : 1,\n freezeAuthority: pubkeyToBuffer(freezeAuthority || new PublicKey(0))\n }, data);\n data = data.slice(0, encodeLength);\n }\n return new TransactionInstruction({\n keys,\n programId,\n data\n });\n }\n /**\n * Construct an InitializeAccount instruction\n *\n * @param programId SPL Token program account\n * @param mint Token mint account\n * @param account New account\n * @param owner Owner of the new account\n */\n\n\n static createInitAccountInstruction(programId, mint, account, owner) {\n const keys = [{\n pubkey: account,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: mint,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: owner,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false\n }];\n const dataLayout = struct([u8('instruction')]);\n const data = buffer.Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: 1 // InitializeAccount instruction\n\n }, data);\n return new TransactionInstruction({\n keys,\n programId,\n data\n });\n }\n /**\n * Construct a Transfer instruction\n *\n * @param programId SPL Token program account\n * @param source Source account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param multiSigners Signing accounts if `authority` is a multiSig\n * @param amount Number of tokens to transfer\n */\n\n\n static createTransferInstruction(programId, source, destination, owner, multiSigners, amount) {\n const dataLayout = struct([u8('instruction'), uint64('amount')]);\n const data = buffer.Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: 3,\n // Transfer instruction\n amount: new u64(amount).toBuffer()\n }, data);\n let keys = [{\n pubkey: source,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: destination,\n isSigner: false,\n isWritable: true\n }];\n\n if (multiSigners.length === 0) {\n keys.push({\n pubkey: owner,\n isSigner: true,\n isWritable: false\n });\n } else {\n keys.push({\n pubkey: owner,\n isSigner: false,\n isWritable: false\n });\n multiSigners.forEach(signer => keys.push({\n pubkey: signer.publicKey,\n isSigner: true,\n isWritable: false\n }));\n }\n\n return new TransactionInstruction({\n keys,\n programId: programId,\n data\n });\n }\n /**\n * Construct an Approve instruction\n *\n * @param programId SPL Token program account\n * @param account Public key of the account\n * @param delegate Account authorized to perform a transfer of tokens from the source account\n * @param owner Owner of the source account\n * @param multiSigners Signing accounts if `owner` is a multiSig\n * @param amount Maximum number of tokens the delegate may transfer\n */\n\n\n static createApproveInstruction(programId, account, delegate, owner, multiSigners, amount) {\n const dataLayout = struct([u8('instruction'), uint64('amount')]);\n const data = buffer.Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: 4,\n // Approve instruction\n amount: new u64(amount).toBuffer()\n }, data);\n let keys = [{\n pubkey: account,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: delegate,\n isSigner: false,\n isWritable: false\n }];\n\n if (multiSigners.length === 0) {\n keys.push({\n pubkey: owner,\n isSigner: true,\n isWritable: false\n });\n } else {\n keys.push({\n pubkey: owner,\n isSigner: false,\n isWritable: false\n });\n multiSigners.forEach(signer => keys.push({\n pubkey: signer.publicKey,\n isSigner: true,\n isWritable: false\n }));\n }\n\n return new TransactionInstruction({\n keys,\n programId: programId,\n data\n });\n }\n /**\n * Construct a Revoke instruction\n *\n * @param programId SPL Token program account\n * @param account Public key of the account\n * @param owner Owner of the source account\n * @param multiSigners Signing accounts if `owner` is a multiSig\n */\n\n\n static createRevokeInstruction(programId, account, owner, multiSigners) {\n const dataLayout = struct([u8('instruction')]);\n const data = buffer.Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: 5 // Approve instruction\n\n }, data);\n let keys = [{\n pubkey: account,\n isSigner: false,\n isWritable: true\n }];\n\n if (multiSigners.length === 0) {\n keys.push({\n pubkey: owner,\n isSigner: true,\n isWritable: false\n });\n } else {\n keys.push({\n pubkey: owner,\n isSigner: false,\n isWritable: false\n });\n multiSigners.forEach(signer => keys.push({\n pubkey: signer.publicKey,\n isSigner: true,\n isWritable: false\n }));\n }\n\n return new TransactionInstruction({\n keys,\n programId: programId,\n data\n });\n }\n /**\n * Construct a SetAuthority instruction\n *\n * @param programId SPL Token program account\n * @param account Public key of the account\n * @param newAuthority New authority of the account\n * @param authorityType Type of authority to set\n * @param currentAuthority Current authority of the specified type\n * @param multiSigners Signing accounts if `currentAuthority` is a multiSig\n */\n\n\n static createSetAuthorityInstruction(programId, account, newAuthority, authorityType, currentAuthority, multiSigners) {\n const commandDataLayout = struct([u8('instruction'), u8('authorityType'), u8('option'), publicKey('newAuthority')]);\n let data = buffer.Buffer.alloc(1024);\n {\n const encodeLength = commandDataLayout.encode({\n instruction: 6,\n // SetAuthority instruction\n authorityType: AuthorityTypeCodes[authorityType],\n option: newAuthority === null ? 0 : 1,\n newAuthority: pubkeyToBuffer(newAuthority || new PublicKey(0))\n }, data);\n data = data.slice(0, encodeLength);\n }\n let keys = [{\n pubkey: account,\n isSigner: false,\n isWritable: true\n }];\n\n if (multiSigners.length === 0) {\n keys.push({\n pubkey: currentAuthority,\n isSigner: true,\n isWritable: false\n });\n } else {\n keys.push({\n pubkey: currentAuthority,\n isSigner: false,\n isWritable: false\n });\n multiSigners.forEach(signer => keys.push({\n pubkey: signer.publicKey,\n isSigner: true,\n isWritable: false\n }));\n }\n\n return new TransactionInstruction({\n keys,\n programId: programId,\n data\n });\n }\n /**\n * Construct a MintTo instruction\n *\n * @param programId SPL Token program account\n * @param mint Public key of the mint\n * @param dest Public key of the account to mint to\n * @param authority The mint authority\n * @param multiSigners Signing accounts if `authority` is a multiSig\n * @param amount Amount to mint\n */\n\n\n static createMintToInstruction(programId, mint, dest, authority, multiSigners, amount) {\n const dataLayout = struct([u8('instruction'), uint64('amount')]);\n const data = buffer.Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: 7,\n // MintTo instruction\n amount: new u64(amount).toBuffer()\n }, data);\n let keys = [{\n pubkey: mint,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: dest,\n isSigner: false,\n isWritable: true\n }];\n\n if (multiSigners.length === 0) {\n keys.push({\n pubkey: authority,\n isSigner: true,\n isWritable: false\n });\n } else {\n keys.push({\n pubkey: authority,\n isSigner: false,\n isWritable: false\n });\n multiSigners.forEach(signer => keys.push({\n pubkey: signer.publicKey,\n isSigner: true,\n isWritable: false\n }));\n }\n\n return new TransactionInstruction({\n keys,\n programId: programId,\n data\n });\n }\n /**\n * Construct a Burn instruction\n *\n * @param programId SPL Token program account\n * @param mint Mint for the account\n * @param account Account to burn tokens from\n * @param owner Owner of the account\n * @param multiSigners Signing accounts if `authority` is a multiSig\n * @param amount amount to burn\n */\n\n\n static createBurnInstruction(programId, mint, account, owner, multiSigners, amount) {\n const dataLayout = struct([u8('instruction'), uint64('amount')]);\n const data = buffer.Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: 8,\n // Burn instruction\n amount: new u64(amount).toBuffer()\n }, data);\n let keys = [{\n pubkey: account,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: mint,\n isSigner: false,\n isWritable: true\n }];\n\n if (multiSigners.length === 0) {\n keys.push({\n pubkey: owner,\n isSigner: true,\n isWritable: false\n });\n } else {\n keys.push({\n pubkey: owner,\n isSigner: false,\n isWritable: false\n });\n multiSigners.forEach(signer => keys.push({\n pubkey: signer.publicKey,\n isSigner: true,\n isWritable: false\n }));\n }\n\n return new TransactionInstruction({\n keys,\n programId: programId,\n data\n });\n }\n /**\n * Construct a Close instruction\n *\n * @param programId SPL Token program account\n * @param account Account to close\n * @param dest Account to receive the remaining balance of the closed account\n * @param authority Account Close authority\n * @param multiSigners Signing accounts if `owner` is a multiSig\n */\n\n\n static createCloseAccountInstruction(programId, account, dest, owner, multiSigners) {\n const dataLayout = struct([u8('instruction')]);\n const data = buffer.Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: 9 // CloseAccount instruction\n\n }, data);\n let keys = [{\n pubkey: account,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: dest,\n isSigner: false,\n isWritable: true\n }];\n\n if (multiSigners.length === 0) {\n keys.push({\n pubkey: owner,\n isSigner: true,\n isWritable: false\n });\n } else {\n keys.push({\n pubkey: owner,\n isSigner: false,\n isWritable: false\n });\n multiSigners.forEach(signer => keys.push({\n pubkey: signer.publicKey,\n isSigner: true,\n isWritable: false\n }));\n }\n\n return new TransactionInstruction({\n keys,\n programId: programId,\n data\n });\n }\n /**\n * Construct a Freeze instruction\n *\n * @param programId SPL Token program account\n * @param account Account to freeze\n * @param mint Mint account\n * @param authority Mint freeze authority\n * @param multiSigners Signing accounts if `owner` is a multiSig\n */\n\n\n static createFreezeAccountInstruction(programId, account, mint, authority, multiSigners) {\n const dataLayout = struct([u8('instruction')]);\n const data = buffer.Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: 10 // FreezeAccount instruction\n\n }, data);\n let keys = [{\n pubkey: account,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: mint,\n isSigner: false,\n isWritable: false\n }];\n\n if (multiSigners.length === 0) {\n keys.push({\n pubkey: authority,\n isSigner: true,\n isWritable: false\n });\n } else {\n keys.push({\n pubkey: authority,\n isSigner: false,\n isWritable: false\n });\n multiSigners.forEach(signer => keys.push({\n pubkey: signer.publicKey,\n isSigner: true,\n isWritable: false\n }));\n }\n\n return new TransactionInstruction({\n keys,\n programId: programId,\n data\n });\n }\n /**\n * Construct a Thaw instruction\n *\n * @param programId SPL Token program account\n * @param account Account to thaw\n * @param mint Mint account\n * @param authority Mint freeze authority\n * @param multiSigners Signing accounts if `owner` is a multiSig\n */\n\n\n static createThawAccountInstruction(programId, account, mint, authority, multiSigners) {\n const dataLayout = struct([u8('instruction')]);\n const data = buffer.Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: 11 // ThawAccount instruction\n\n }, data);\n let keys = [{\n pubkey: account,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: mint,\n isSigner: false,\n isWritable: false\n }];\n\n if (multiSigners.length === 0) {\n keys.push({\n pubkey: authority,\n isSigner: true,\n isWritable: false\n });\n } else {\n keys.push({\n pubkey: authority,\n isSigner: false,\n isWritable: false\n });\n multiSigners.forEach(signer => keys.push({\n pubkey: signer.publicKey,\n isSigner: true,\n isWritable: false\n }));\n }\n\n return new TransactionInstruction({\n keys,\n programId: programId,\n data\n });\n }\n /**\n * Construct a TransferChecked instruction\n *\n * @param programId SPL Token program account\n * @param source Source account\n * @param mint Mint account\n * @param destination Destination account\n * @param owner Owner of the source account\n * @param multiSigners Signing accounts if `authority` is a multiSig\n * @param amount Number of tokens to transfer\n * @param decimals Number of decimals in transfer amount\n */\n\n\n static createTransferCheckedInstruction(programId, source, mint, destination, owner, multiSigners, amount, decimals) {\n const dataLayout = struct([u8('instruction'), uint64('amount'), u8('decimals')]);\n const data = buffer.Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: 12,\n // TransferChecked instruction\n amount: new u64(amount).toBuffer(),\n decimals\n }, data);\n let keys = [{\n pubkey: source,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: mint,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: destination,\n isSigner: false,\n isWritable: true\n }];\n\n if (multiSigners.length === 0) {\n keys.push({\n pubkey: owner,\n isSigner: true,\n isWritable: false\n });\n } else {\n keys.push({\n pubkey: owner,\n isSigner: false,\n isWritable: false\n });\n multiSigners.forEach(signer => keys.push({\n pubkey: signer.publicKey,\n isSigner: true,\n isWritable: false\n }));\n }\n\n return new TransactionInstruction({\n keys,\n programId: programId,\n data\n });\n }\n /**\n * Construct an ApproveChecked instruction\n *\n * @param programId SPL Token program account\n * @param account Public key of the account\n * @param mint Mint account\n * @param delegate Account authorized to perform a transfer of tokens from the source account\n * @param owner Owner of the source account\n * @param multiSigners Signing accounts if `owner` is a multiSig\n * @param amount Maximum number of tokens the delegate may transfer\n * @param decimals Number of decimals in approve amount\n */\n\n\n static createApproveCheckedInstruction(programId, account, mint, delegate, owner, multiSigners, amount, decimals) {\n const dataLayout = struct([u8('instruction'), uint64('amount'), u8('decimals')]);\n const data = buffer.Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: 13,\n // ApproveChecked instruction\n amount: new u64(amount).toBuffer(),\n decimals\n }, data);\n let keys = [{\n pubkey: account,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: mint,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: delegate,\n isSigner: false,\n isWritable: false\n }];\n\n if (multiSigners.length === 0) {\n keys.push({\n pubkey: owner,\n isSigner: true,\n isWritable: false\n });\n } else {\n keys.push({\n pubkey: owner,\n isSigner: false,\n isWritable: false\n });\n multiSigners.forEach(signer => keys.push({\n pubkey: signer.publicKey,\n isSigner: true,\n isWritable: false\n }));\n }\n\n return new TransactionInstruction({\n keys,\n programId: programId,\n data\n });\n }\n /**\n * Construct a MintToChecked instruction\n *\n * @param programId SPL Token program account\n * @param mint Public key of the mint\n * @param dest Public key of the account to mint to\n * @param authority The mint authority\n * @param multiSigners Signing accounts if `authority` is a multiSig\n * @param amount Amount to mint\n * @param decimals Number of decimals in amount to mint\n */\n\n\n static createMintToCheckedInstruction(programId, mint, dest, authority, multiSigners, amount, decimals) {\n const dataLayout = struct([u8('instruction'), uint64('amount'), u8('decimals')]);\n const data = buffer.Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: 14,\n // MintToChecked instruction\n amount: new u64(amount).toBuffer(),\n decimals\n }, data);\n let keys = [{\n pubkey: mint,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: dest,\n isSigner: false,\n isWritable: true\n }];\n\n if (multiSigners.length === 0) {\n keys.push({\n pubkey: authority,\n isSigner: true,\n isWritable: false\n });\n } else {\n keys.push({\n pubkey: authority,\n isSigner: false,\n isWritable: false\n });\n multiSigners.forEach(signer => keys.push({\n pubkey: signer.publicKey,\n isSigner: true,\n isWritable: false\n }));\n }\n\n return new TransactionInstruction({\n keys,\n programId: programId,\n data\n });\n }\n /**\n * Construct a BurnChecked instruction\n *\n * @param programId SPL Token program account\n * @param mint Mint for the account\n * @param account Account to burn tokens from\n * @param owner Owner of the account\n * @param multiSigners Signing accounts if `authority` is a multiSig\n * @param amount amount to burn\n */\n\n\n static createBurnCheckedInstruction(programId, mint, account, owner, multiSigners, amount, decimals) {\n const dataLayout = struct([u8('instruction'), uint64('amount'), u8('decimals')]);\n const data = buffer.Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: 15,\n // BurnChecked instruction\n amount: new u64(amount).toBuffer(),\n decimals\n }, data);\n let keys = [{\n pubkey: account,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: mint,\n isSigner: false,\n isWritable: true\n }];\n\n if (multiSigners.length === 0) {\n keys.push({\n pubkey: owner,\n isSigner: true,\n isWritable: false\n });\n } else {\n keys.push({\n pubkey: owner,\n isSigner: false,\n isWritable: false\n });\n multiSigners.forEach(signer => keys.push({\n pubkey: signer.publicKey,\n isSigner: true,\n isWritable: false\n }));\n }\n\n return new TransactionInstruction({\n keys,\n programId: programId,\n data\n });\n }\n /**\n * Construct a SyncNative instruction\n *\n * @param programId SPL Token program account\n * @param nativeAccount Account to sync lamports from\n */\n\n\n static createSyncNativeInstruction(programId, nativeAccount) {\n const dataLayout = struct([u8('instruction')]);\n const data = buffer.Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: 17 // SyncNative instruction\n\n }, data);\n let keys = [{\n pubkey: nativeAccount,\n isSigner: false,\n isWritable: true\n }];\n return new TransactionInstruction({\n keys,\n programId: programId,\n data\n });\n }\n /**\n * Get the address for the associated token account\n *\n * @param associatedProgramId SPL Associated Token program account\n * @param programId SPL Token program account\n * @param mint Token mint account\n * @param owner Owner of the new account\n * @return Public key of the associated token account\n */\n\n\n static async getAssociatedTokenAddress(associatedProgramId, programId, mint, owner, allowOwnerOffCurve = false) {\n if (!allowOwnerOffCurve && !PublicKey.isOnCurve(owner.toBuffer())) {\n throw new Error(`Owner cannot sign: ${owner.toString()}`);\n }\n\n return (await PublicKey.findProgramAddress([owner.toBuffer(), programId.toBuffer(), mint.toBuffer()], associatedProgramId))[0];\n }\n /**\n * Construct the AssociatedTokenProgram instruction to create the associated\n * token account\n *\n * @param associatedProgramId SPL Associated Token program account\n * @param programId SPL Token program account\n * @param mint Token mint account\n * @param associatedAccount New associated account\n * @param owner Owner of the new account\n * @param payer Payer of fees\n */\n\n\n static createAssociatedTokenAccountInstruction(associatedProgramId, programId, mint, associatedAccount, owner, payer) {\n const data = buffer.Buffer.alloc(0);\n let keys = [{\n pubkey: payer,\n isSigner: true,\n isWritable: true\n }, {\n pubkey: associatedAccount,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: owner,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: mint,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: SystemProgram.programId,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: programId,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false\n }];\n return new TransactionInstruction({\n keys,\n programId: associatedProgramId,\n data\n });\n }\n\n}\n\nexport { ASSOCIATED_TOKEN_PROGRAM_ID, AccountLayout, MintLayout, NATIVE_MINT, TOKEN_PROGRAM_ID, Token, u64 };\n//# sourceMappingURL=index.browser.esm.js.map\n","export function number(n) {\n if (!Number.isSafeInteger(n) || n < 0)\n throw new Error(`Wrong positive integer: ${n}`);\n}\nexport function bool(b) {\n if (typeof b !== 'boolean')\n throw new Error(`Expected boolean, not ${b}`);\n}\nexport function bytes(b, ...lengths) {\n if (!(b instanceof Uint8Array))\n throw new TypeError('Expected Uint8Array');\n if (lengths.length > 0 && !lengths.includes(b.length))\n throw new TypeError(`Expected Uint8Array of length ${lengths}, not of length=${b.length}`);\n}\nexport function hash(hash) {\n if (typeof hash !== 'function' || typeof hash.create !== 'function')\n throw new Error('Hash should be wrapped by utils.wrapConstructor');\n number(hash.outputLen);\n number(hash.blockLen);\n}\nexport function exists(instance, checkFinished = true) {\n if (instance.destroyed)\n throw new Error('Hash instance has been destroyed');\n if (checkFinished && instance.finished)\n throw new Error('Hash#digest() has already been called');\n}\nexport function output(out, instance) {\n bytes(out);\n const min = instance.outputLen;\n if (out.length < min) {\n throw new Error(`digestInto() expects output buffer of length at least ${min}`);\n }\n}\nconst assert = {\n number,\n bool,\n bytes,\n hash,\n exists,\n output,\n};\nexport default assert;\n","/*! noble-hashes - MIT License (c) 2022 Paul Miller (paulmillr.com) */\n// The import here is via the package name. This is to ensure\n// that exports mapping/resolution does fall into place.\nimport { crypto } from '@noble/hashes/crypto';\n// Cast array to different type\nexport const u8 = (arr) => new Uint8Array(arr.buffer, arr.byteOffset, arr.byteLength);\nexport const u32 = (arr) => new Uint32Array(arr.buffer, arr.byteOffset, Math.floor(arr.byteLength / 4));\n// Cast array to view\nexport const createView = (arr) => new DataView(arr.buffer, arr.byteOffset, arr.byteLength);\n// The rotate right (circular right shift) operation for uint32\nexport const rotr = (word, shift) => (word << (32 - shift)) | (word >>> shift);\nexport const isLE = new Uint8Array(new Uint32Array([0x11223344]).buffer)[0] === 0x44;\n// There is almost no big endian hardware, but js typed arrays uses platform specific endianness.\n// So, just to be sure not to corrupt anything.\nif (!isLE)\n throw new Error('Non little-endian hardware is not supported');\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\n/**\n * @example bytesToHex(Uint8Array.from([0xde, 0xad, 0xbe, 0xef]))\n */\nexport function bytesToHex(uint8a) {\n // pre-caching improves the speed 6x\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Uint8Array expected');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\n/**\n * @example hexToBytes('deadbeef')\n */\nexport function hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\n// There is no setImmediate in browser and setTimeout is slow. However, call to async function will return Promise\n// which will be fullfiled only on next scheduler queue processing step and this is exactly what we need.\nexport const nextTick = async () => { };\n// Returns control to thread each 'tick' ms to avoid blocking\nexport async function asyncLoop(iters, tick, cb) {\n let ts = Date.now();\n for (let i = 0; i < iters; i++) {\n cb(i);\n // Date.now() is not monotonic, so in case if clock goes backwards we return return control too\n const diff = Date.now() - ts;\n if (diff >= 0 && diff < tick)\n continue;\n await nextTick();\n ts += diff;\n }\n}\nexport function utf8ToBytes(str) {\n if (typeof str !== 'string') {\n throw new TypeError(`utf8ToBytes expected string, got ${typeof str}`);\n }\n return new TextEncoder().encode(str);\n}\nexport function toBytes(data) {\n if (typeof data === 'string')\n data = utf8ToBytes(data);\n if (!(data instanceof Uint8Array))\n throw new TypeError(`Expected input type is Uint8Array (got ${typeof data})`);\n return data;\n}\n/**\n * Concats Uint8Array-s into one; like `Buffer.concat([buf1, buf2])`\n * @example concatBytes(buf1, buf2)\n */\nexport function concatBytes(...arrays) {\n if (!arrays.every((a) => a instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\n// For runtime check if class implements interface\nexport class Hash {\n // Safe version that clones internal state\n clone() {\n return this._cloneInto();\n }\n}\n// Check if object doens't have custom constructor (like Uint8Array/Array)\nconst isPlainObject = (obj) => Object.prototype.toString.call(obj) === '[object Object]' && obj.constructor === Object;\nexport function checkOpts(defaults, opts) {\n if (opts !== undefined && (typeof opts !== 'object' || !isPlainObject(opts)))\n throw new TypeError('Options should be object or undefined');\n const merged = Object.assign(defaults, opts);\n return merged;\n}\nexport function wrapConstructor(hashConstructor) {\n const hashC = (message) => hashConstructor().update(toBytes(message)).digest();\n const tmp = hashConstructor();\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = () => hashConstructor();\n return hashC;\n}\nexport function wrapConstructorWithOpts(hashCons) {\n const hashC = (msg, opts) => hashCons(opts).update(toBytes(msg)).digest();\n const tmp = hashCons({});\n hashC.outputLen = tmp.outputLen;\n hashC.blockLen = tmp.blockLen;\n hashC.create = (opts) => hashCons(opts);\n return hashC;\n}\n/**\n * Secure PRNG\n */\nexport function randomBytes(bytesLength = 32) {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n return new Uint8Array(crypto.node.randomBytes(bytesLength).buffer);\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n}\n","export const crypto = {\n node: undefined,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\n","import assert from './_assert.js';\nimport { Hash, createView, toBytes } from './utils.js';\n// Polyfill for Safari 14\nfunction setBigUint64(view, byteOffset, value, isLE) {\n if (typeof view.setBigUint64 === 'function')\n return view.setBigUint64(byteOffset, value, isLE);\n const _32n = BigInt(32);\n const _u32_max = BigInt(0xffffffff);\n const wh = Number((value >> _32n) & _u32_max);\n const wl = Number(value & _u32_max);\n const h = isLE ? 4 : 0;\n const l = isLE ? 0 : 4;\n view.setUint32(byteOffset + h, wh, isLE);\n view.setUint32(byteOffset + l, wl, isLE);\n}\n// Base SHA2 class (RFC 6234)\nexport class SHA2 extends Hash {\n constructor(blockLen, outputLen, padOffset, isLE) {\n super();\n this.blockLen = blockLen;\n this.outputLen = outputLen;\n this.padOffset = padOffset;\n this.isLE = isLE;\n this.finished = false;\n this.length = 0;\n this.pos = 0;\n this.destroyed = false;\n this.buffer = new Uint8Array(blockLen);\n this.view = createView(this.buffer);\n }\n update(data) {\n assert.exists(this);\n const { view, buffer, blockLen } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n // Fast path: we have at least one block in input, cast it to view and process\n if (take === blockLen) {\n const dataView = createView(data);\n for (; blockLen <= len - pos; pos += blockLen)\n this.process(dataView, pos);\n continue;\n }\n buffer.set(data.subarray(pos, pos + take), this.pos);\n this.pos += take;\n pos += take;\n if (this.pos === blockLen) {\n this.process(view, 0);\n this.pos = 0;\n }\n }\n this.length += data.length;\n this.roundClean();\n return this;\n }\n digestInto(out) {\n assert.exists(this);\n assert.output(out, this);\n this.finished = true;\n // Padding\n // We can avoid allocation of buffer for padding completely if it\n // was previously not allocated here. But it won't change performance.\n const { buffer, view, blockLen, isLE } = this;\n let { pos } = this;\n // append the bit '1' to the message\n buffer[pos++] = 0b10000000;\n this.buffer.subarray(pos).fill(0);\n // we have less than padOffset left in buffer, so we cannot put length in current block, need process it and pad again\n if (this.padOffset > blockLen - pos) {\n this.process(view, 0);\n pos = 0;\n }\n // Pad until full block byte with zeros\n for (let i = pos; i < blockLen; i++)\n buffer[i] = 0;\n // Note: sha512 requires length to be 128bit integer, but length in JS will overflow before that\n // You need to write around 2 exabytes (u64_max / 8 / (1024**6)) for this to happen.\n // So we just write lowest 64 bits of that value.\n setBigUint64(view, blockLen - 8, BigInt(this.length * 8), isLE);\n this.process(view, 0);\n const oview = createView(out);\n this.get().forEach((v, i) => oview.setUint32(4 * i, v, isLE));\n }\n digest() {\n const { buffer, outputLen } = this;\n this.digestInto(buffer);\n const res = buffer.slice(0, outputLen);\n this.destroy();\n return res;\n }\n _cloneInto(to) {\n to || (to = new this.constructor());\n to.set(...this.get());\n const { blockLen, buffer, length, finished, destroyed, pos } = this;\n to.length = length;\n to.pos = pos;\n to.finished = finished;\n to.destroyed = destroyed;\n if (length % blockLen)\n to.buffer.set(buffer);\n return to;\n }\n}\n","const U32_MASK64 = BigInt(2 ** 32 - 1);\nconst _32n = BigInt(32);\n// We are not using BigUint64Array, because they are extremely slow as per 2022\nexport function fromBig(n, le = false) {\n if (le)\n return { h: Number(n & U32_MASK64), l: Number((n >> _32n) & U32_MASK64) };\n return { h: Number((n >> _32n) & U32_MASK64) | 0, l: Number(n & U32_MASK64) | 0 };\n}\nexport function split(lst, le = false) {\n let Ah = new Uint32Array(lst.length);\n let Al = new Uint32Array(lst.length);\n for (let i = 0; i < lst.length; i++) {\n const { h, l } = fromBig(lst[i], le);\n [Ah[i], Al[i]] = [h, l];\n }\n return [Ah, Al];\n}\nexport const toBig = (h, l) => (BigInt(h >>> 0) << _32n) | BigInt(l >>> 0);\n// for Shift in [0, 32)\nconst shrSH = (h, l, s) => h >>> s;\nconst shrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in [1, 32)\nconst rotrSH = (h, l, s) => (h >>> s) | (l << (32 - s));\nconst rotrSL = (h, l, s) => (h << (32 - s)) | (l >>> s);\n// Right rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotrBH = (h, l, s) => (h << (64 - s)) | (l >>> (s - 32));\nconst rotrBL = (h, l, s) => (h >>> (s - 32)) | (l << (64 - s));\n// Right rotate for shift===32 (just swaps l&h)\nconst rotr32H = (h, l) => l;\nconst rotr32L = (h, l) => h;\n// Left rotate for Shift in [1, 32)\nconst rotlSH = (h, l, s) => (h << s) | (l >>> (32 - s));\nconst rotlSL = (h, l, s) => (l << s) | (h >>> (32 - s));\n// Left rotate for Shift in (32, 64), NOTE: 32 is special case.\nconst rotlBH = (h, l, s) => (l << (s - 32)) | (h >>> (64 - s));\nconst rotlBL = (h, l, s) => (h << (s - 32)) | (l >>> (64 - s));\n// JS uses 32-bit signed integers for bitwise operations which means we cannot\n// simple take carry out of low bit sum by shift, we need to use division.\n// Removing \"export\" has 5% perf penalty -_-\nexport function add(Ah, Al, Bh, Bl) {\n const l = (Al >>> 0) + (Bl >>> 0);\n return { h: (Ah + Bh + ((l / 2 ** 32) | 0)) | 0, l: l | 0 };\n}\n// Addition with more than 2 elements\nconst add3L = (Al, Bl, Cl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0);\nconst add3H = (low, Ah, Bh, Ch) => (Ah + Bh + Ch + ((low / 2 ** 32) | 0)) | 0;\nconst add4L = (Al, Bl, Cl, Dl) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0);\nconst add4H = (low, Ah, Bh, Ch, Dh) => (Ah + Bh + Ch + Dh + ((low / 2 ** 32) | 0)) | 0;\nconst add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);\nconst add5H = (low, Ah, Bh, Ch, Dh, Eh) => (Ah + Bh + Ch + Dh + Eh + ((low / 2 ** 32) | 0)) | 0;\n// prettier-ignore\nconst u64 = {\n fromBig, split, toBig,\n shrSH, shrSL,\n rotrSH, rotrSL, rotrBH, rotrBL,\n rotr32H, rotr32L,\n rotlSH, rotlSL, rotlBH, rotlBL,\n add, add3L, add3H, add4L, add4H, add5H, add5L,\n};\nexport default u64;\n","import { SHA2 } from './_sha2.js';\nimport u64 from './_u64.js';\nimport { wrapConstructor } from './utils.js';\n// Round contants (first 32 bits of the fractional parts of the cube roots of the first 80 primes 2..409):\n// prettier-ignore\nconst [SHA512_Kh, SHA512_Kl] = u64.split([\n '0x428a2f98d728ae22', '0x7137449123ef65cd', '0xb5c0fbcfec4d3b2f', '0xe9b5dba58189dbbc',\n '0x3956c25bf348b538', '0x59f111f1b605d019', '0x923f82a4af194f9b', '0xab1c5ed5da6d8118',\n '0xd807aa98a3030242', '0x12835b0145706fbe', '0x243185be4ee4b28c', '0x550c7dc3d5ffb4e2',\n '0x72be5d74f27b896f', '0x80deb1fe3b1696b1', '0x9bdc06a725c71235', '0xc19bf174cf692694',\n '0xe49b69c19ef14ad2', '0xefbe4786384f25e3', '0x0fc19dc68b8cd5b5', '0x240ca1cc77ac9c65',\n '0x2de92c6f592b0275', '0x4a7484aa6ea6e483', '0x5cb0a9dcbd41fbd4', '0x76f988da831153b5',\n '0x983e5152ee66dfab', '0xa831c66d2db43210', '0xb00327c898fb213f', '0xbf597fc7beef0ee4',\n '0xc6e00bf33da88fc2', '0xd5a79147930aa725', '0x06ca6351e003826f', '0x142929670a0e6e70',\n '0x27b70a8546d22ffc', '0x2e1b21385c26c926', '0x4d2c6dfc5ac42aed', '0x53380d139d95b3df',\n '0x650a73548baf63de', '0x766a0abb3c77b2a8', '0x81c2c92e47edaee6', '0x92722c851482353b',\n '0xa2bfe8a14cf10364', '0xa81a664bbc423001', '0xc24b8b70d0f89791', '0xc76c51a30654be30',\n '0xd192e819d6ef5218', '0xd69906245565a910', '0xf40e35855771202a', '0x106aa07032bbd1b8',\n '0x19a4c116b8d2d0c8', '0x1e376c085141ab53', '0x2748774cdf8eeb99', '0x34b0bcb5e19b48a8',\n '0x391c0cb3c5c95a63', '0x4ed8aa4ae3418acb', '0x5b9cca4f7763e373', '0x682e6ff3d6b2b8a3',\n '0x748f82ee5defb2fc', '0x78a5636f43172f60', '0x84c87814a1f0ab72', '0x8cc702081a6439ec',\n '0x90befffa23631e28', '0xa4506cebde82bde9', '0xbef9a3f7b2c67915', '0xc67178f2e372532b',\n '0xca273eceea26619c', '0xd186b8c721c0c207', '0xeada7dd6cde0eb1e', '0xf57d4f7fee6ed178',\n '0x06f067aa72176fba', '0x0a637dc5a2c898a6', '0x113f9804bef90dae', '0x1b710b35131c471b',\n '0x28db77f523047d84', '0x32caab7b40c72493', '0x3c9ebe0a15c9bebc', '0x431d67c49c100d4c',\n '0x4cc5d4becb3e42b6', '0x597f299cfc657e2a', '0x5fcb6fab3ad6faec', '0x6c44198c4a475817'\n].map(n => BigInt(n)));\n// Temporary buffer, not used to store anything between runs\nconst SHA512_W_H = new Uint32Array(80);\nconst SHA512_W_L = new Uint32Array(80);\nexport class SHA512 extends SHA2 {\n constructor() {\n super(128, 64, 16, false);\n // We cannot use array here since array allows indexing by variable which means optimizer/compiler cannot use registers.\n // Also looks cleaner and easier to verify with spec.\n // Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x6a09e667 | 0;\n this.Al = 0xf3bcc908 | 0;\n this.Bh = 0xbb67ae85 | 0;\n this.Bl = 0x84caa73b | 0;\n this.Ch = 0x3c6ef372 | 0;\n this.Cl = 0xfe94f82b | 0;\n this.Dh = 0xa54ff53a | 0;\n this.Dl = 0x5f1d36f1 | 0;\n this.Eh = 0x510e527f | 0;\n this.El = 0xade682d1 | 0;\n this.Fh = 0x9b05688c | 0;\n this.Fl = 0x2b3e6c1f | 0;\n this.Gh = 0x1f83d9ab | 0;\n this.Gl = 0xfb41bd6b | 0;\n this.Hh = 0x5be0cd19 | 0;\n this.Hl = 0x137e2179 | 0;\n }\n // prettier-ignore\n get() {\n const { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n return [Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl];\n }\n // prettier-ignore\n set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl) {\n this.Ah = Ah | 0;\n this.Al = Al | 0;\n this.Bh = Bh | 0;\n this.Bl = Bl | 0;\n this.Ch = Ch | 0;\n this.Cl = Cl | 0;\n this.Dh = Dh | 0;\n this.Dl = Dl | 0;\n this.Eh = Eh | 0;\n this.El = El | 0;\n this.Fh = Fh | 0;\n this.Fl = Fl | 0;\n this.Gh = Gh | 0;\n this.Gl = Gl | 0;\n this.Hh = Hh | 0;\n this.Hl = Hl | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 64 words w[16..79] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4) {\n SHA512_W_H[i] = view.getUint32(offset);\n SHA512_W_L[i] = view.getUint32((offset += 4));\n }\n for (let i = 16; i < 80; i++) {\n // s0 := (w[i-15] rightrotate 1) xor (w[i-15] rightrotate 8) xor (w[i-15] rightshift 7)\n const W15h = SHA512_W_H[i - 15] | 0;\n const W15l = SHA512_W_L[i - 15] | 0;\n const s0h = u64.rotrSH(W15h, W15l, 1) ^ u64.rotrSH(W15h, W15l, 8) ^ u64.shrSH(W15h, W15l, 7);\n const s0l = u64.rotrSL(W15h, W15l, 1) ^ u64.rotrSL(W15h, W15l, 8) ^ u64.shrSL(W15h, W15l, 7);\n // s1 := (w[i-2] rightrotate 19) xor (w[i-2] rightrotate 61) xor (w[i-2] rightshift 6)\n const W2h = SHA512_W_H[i - 2] | 0;\n const W2l = SHA512_W_L[i - 2] | 0;\n const s1h = u64.rotrSH(W2h, W2l, 19) ^ u64.rotrBH(W2h, W2l, 61) ^ u64.shrSH(W2h, W2l, 6);\n const s1l = u64.rotrSL(W2h, W2l, 19) ^ u64.rotrBL(W2h, W2l, 61) ^ u64.shrSL(W2h, W2l, 6);\n // SHA256_W[i] = s0 + s1 + SHA256_W[i - 7] + SHA256_W[i - 16];\n const SUMl = u64.add4L(s0l, s1l, SHA512_W_L[i - 7], SHA512_W_L[i - 16]);\n const SUMh = u64.add4H(SUMl, s0h, s1h, SHA512_W_H[i - 7], SHA512_W_H[i - 16]);\n SHA512_W_H[i] = SUMh | 0;\n SHA512_W_L[i] = SUMl | 0;\n }\n let { Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl } = this;\n // Compression function main loop, 80 rounds\n for (let i = 0; i < 80; i++) {\n // S1 := (e rightrotate 14) xor (e rightrotate 18) xor (e rightrotate 41)\n const sigma1h = u64.rotrSH(Eh, El, 14) ^ u64.rotrSH(Eh, El, 18) ^ u64.rotrBH(Eh, El, 41);\n const sigma1l = u64.rotrSL(Eh, El, 14) ^ u64.rotrSL(Eh, El, 18) ^ u64.rotrBL(Eh, El, 41);\n //const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const CHIh = (Eh & Fh) ^ (~Eh & Gh);\n const CHIl = (El & Fl) ^ (~El & Gl);\n // T1 = H + sigma1 + Chi(E, F, G) + SHA512_K[i] + SHA512_W[i]\n // prettier-ignore\n const T1ll = u64.add5L(Hl, sigma1l, CHIl, SHA512_Kl[i], SHA512_W_L[i]);\n const T1h = u64.add5H(T1ll, Hh, sigma1h, CHIh, SHA512_Kh[i], SHA512_W_H[i]);\n const T1l = T1ll | 0;\n // S0 := (a rightrotate 28) xor (a rightrotate 34) xor (a rightrotate 39)\n const sigma0h = u64.rotrSH(Ah, Al, 28) ^ u64.rotrBH(Ah, Al, 34) ^ u64.rotrBH(Ah, Al, 39);\n const sigma0l = u64.rotrSL(Ah, Al, 28) ^ u64.rotrBL(Ah, Al, 34) ^ u64.rotrBL(Ah, Al, 39);\n const MAJh = (Ah & Bh) ^ (Ah & Ch) ^ (Bh & Ch);\n const MAJl = (Al & Bl) ^ (Al & Cl) ^ (Bl & Cl);\n Hh = Gh | 0;\n Hl = Gl | 0;\n Gh = Fh | 0;\n Gl = Fl | 0;\n Fh = Eh | 0;\n Fl = El | 0;\n ({ h: Eh, l: El } = u64.add(Dh | 0, Dl | 0, T1h | 0, T1l | 0));\n Dh = Ch | 0;\n Dl = Cl | 0;\n Ch = Bh | 0;\n Cl = Bl | 0;\n Bh = Ah | 0;\n Bl = Al | 0;\n const All = u64.add3L(T1l, sigma0l, MAJl);\n Ah = u64.add3H(All, T1h, sigma0h, MAJh);\n Al = All | 0;\n }\n // Add the compressed chunk to the current hash value\n ({ h: Ah, l: Al } = u64.add(this.Ah | 0, this.Al | 0, Ah | 0, Al | 0));\n ({ h: Bh, l: Bl } = u64.add(this.Bh | 0, this.Bl | 0, Bh | 0, Bl | 0));\n ({ h: Ch, l: Cl } = u64.add(this.Ch | 0, this.Cl | 0, Ch | 0, Cl | 0));\n ({ h: Dh, l: Dl } = u64.add(this.Dh | 0, this.Dl | 0, Dh | 0, Dl | 0));\n ({ h: Eh, l: El } = u64.add(this.Eh | 0, this.El | 0, Eh | 0, El | 0));\n ({ h: Fh, l: Fl } = u64.add(this.Fh | 0, this.Fl | 0, Fh | 0, Fl | 0));\n ({ h: Gh, l: Gl } = u64.add(this.Gh | 0, this.Gl | 0, Gh | 0, Gl | 0));\n ({ h: Hh, l: Hl } = u64.add(this.Hh | 0, this.Hl | 0, Hh | 0, Hl | 0));\n this.set(Ah, Al, Bh, Bl, Ch, Cl, Dh, Dl, Eh, El, Fh, Fl, Gh, Gl, Hh, Hl);\n }\n roundClean() {\n SHA512_W_H.fill(0);\n SHA512_W_L.fill(0);\n }\n destroy() {\n this.buffer.fill(0);\n this.set(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0);\n }\n}\nclass SHA512_256 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0x22312194 | 0;\n this.Al = 0xfc2bf72c | 0;\n this.Bh = 0x9f555fa3 | 0;\n this.Bl = 0xc84c64c2 | 0;\n this.Ch = 0x2393b86b | 0;\n this.Cl = 0x6f53b151 | 0;\n this.Dh = 0x96387719 | 0;\n this.Dl = 0x5940eabd | 0;\n this.Eh = 0x96283ee2 | 0;\n this.El = 0xa88effe3 | 0;\n this.Fh = 0xbe5e1e25 | 0;\n this.Fl = 0x53863992 | 0;\n this.Gh = 0x2b0199fc | 0;\n this.Gl = 0x2c85b8aa | 0;\n this.Hh = 0x0eb72ddc | 0;\n this.Hl = 0x81c52ca2 | 0;\n this.outputLen = 32;\n }\n}\nclass SHA384 extends SHA512 {\n constructor() {\n super();\n // h -- high 32 bits, l -- low 32 bits\n this.Ah = 0xcbbb9d5d | 0;\n this.Al = 0xc1059ed8 | 0;\n this.Bh = 0x629a292a | 0;\n this.Bl = 0x367cd507 | 0;\n this.Ch = 0x9159015a | 0;\n this.Cl = 0x3070dd17 | 0;\n this.Dh = 0x152fecd8 | 0;\n this.Dl = 0xf70e5939 | 0;\n this.Eh = 0x67332667 | 0;\n this.El = 0xffc00b31 | 0;\n this.Fh = 0x8eb44a87 | 0;\n this.Fl = 0x68581511 | 0;\n this.Gh = 0xdb0c2e0d | 0;\n this.Gl = 0x64f98fa7 | 0;\n this.Hh = 0x47b5481d | 0;\n this.Hl = 0xbefa4fa4 | 0;\n this.outputLen = 48;\n }\n}\nexport const sha512 = wrapConstructor(() => new SHA512());\nexport const sha512_256 = wrapConstructor(() => new SHA512_256());\nexport const sha384 = wrapConstructor(() => new SHA384());\n","/*! noble-ed25519 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport * as nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst CU_O = BigInt('7237005577332262213973186563042994240857116359379907606001950938285454250989');\nconst CURVE = Object.freeze({\n a: BigInt(-1),\n d: BigInt('37095705934669439343138083508754565189542113879843219016388785533085940283555'),\n P: BigInt('57896044618658097711785492504343953926634992332820282019728792003956564819949'),\n l: CU_O,\n n: CU_O,\n h: BigInt(8),\n Gx: BigInt('15112221349535400772501151409588531511454012693041857206046113283949847762202'),\n Gy: BigInt('46316835694926478169428394003475163141307993866256225615783033603165251855960'),\n});\nexport { CURVE };\nconst POW_2_256 = BigInt('0x10000000000000000000000000000000000000000000000000000000000000000');\nconst SQRT_M1 = BigInt('19681161376707505956807079304988542015446066515923890162744021073123829784752');\nconst SQRT_D = BigInt('6853475219497561581579357271197624642482790079785650197046958215289687604742');\nconst SQRT_AD_MINUS_ONE = BigInt('25063068953384623474111414158702152701244531502492656460079210482610430750235');\nconst INVSQRT_A_MINUS_D = BigInt('54469307008909316920995813868745141605393597292927456921205312896311721017578');\nconst ONE_MINUS_D_SQ = BigInt('1159843021668779879193775521855586647937357759715417654439879720876111806838');\nconst D_MINUS_ONE_SQ = BigInt('40440834346308536858101042469323190826248399146238708352240133220865137265952');\nclass ExtendedPoint {\n constructor(x, y, z, t) {\n this.x = x;\n this.y = y;\n this.z = z;\n this.t = t;\n }\n static fromAffine(p) {\n if (!(p instanceof Point)) {\n throw new TypeError('ExtendedPoint#fromAffine: expected Point');\n }\n if (p.equals(Point.ZERO))\n return ExtendedPoint.ZERO;\n return new ExtendedPoint(p.x, p.y, _1n, mod(p.x * p.y));\n }\n static toAffineBatch(points) {\n const toInv = invertBatch(points.map((p) => p.z));\n return points.map((p, i) => p.toAffine(toInv[i]));\n }\n static normalizeZ(points) {\n return this.toAffineBatch(points).map(this.fromAffine);\n }\n equals(other) {\n assertExtPoint(other);\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n const X1Z2 = mod(X1 * Z2);\n const X2Z1 = mod(X2 * Z1);\n const Y1Z2 = mod(Y1 * Z2);\n const Y2Z1 = mod(Y2 * Z1);\n return X1Z2 === X2Z1 && Y1Z2 === Y2Z1;\n }\n negate() {\n return new ExtendedPoint(mod(-this.x), this.y, this.z, mod(-this.t));\n }\n double() {\n const { x: X1, y: Y1, z: Z1 } = this;\n const { a } = CURVE;\n const A = mod(X1 * X1);\n const B = mod(Y1 * Y1);\n const C = mod(_2n * mod(Z1 * Z1));\n const D = mod(a * A);\n const x1y1 = X1 + Y1;\n const E = mod(mod(x1y1 * x1y1) - A - B);\n const G = D + B;\n const F = G - C;\n const H = D - B;\n const X3 = mod(E * F);\n const Y3 = mod(G * H);\n const T3 = mod(E * H);\n const Z3 = mod(F * G);\n return new ExtendedPoint(X3, Y3, Z3, T3);\n }\n add(other) {\n assertExtPoint(other);\n const { x: X1, y: Y1, z: Z1, t: T1 } = this;\n const { x: X2, y: Y2, z: Z2, t: T2 } = other;\n const A = mod((Y1 - X1) * (Y2 + X2));\n const B = mod((Y1 + X1) * (Y2 - X2));\n const F = mod(B - A);\n if (F === _0n)\n return this.double();\n const C = mod(Z1 * _2n * T2);\n const D = mod(T1 * _2n * Z2);\n const E = D + C;\n const G = B + A;\n const H = D - C;\n const X3 = mod(E * F);\n const Y3 = mod(G * H);\n const T3 = mod(E * H);\n const Z3 = mod(F * G);\n return new ExtendedPoint(X3, Y3, Z3, T3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n precomputeWindow(W) {\n const windows = 1 + 256 / W;\n const points = [];\n let p = this;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n for (let i = 1; i < 2 ** (W - 1); i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n wNAF(n, affinePoint) {\n if (!affinePoint && this.equals(ExtendedPoint.BASE))\n affinePoint = Point.BASE;\n const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n if (256 % W) {\n throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n }\n let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n if (!precomputes) {\n precomputes = this.precomputeWindow(W);\n if (affinePoint && W !== 1) {\n precomputes = ExtendedPoint.normalizeZ(precomputes);\n pointPrecomputes.set(affinePoint, precomputes);\n }\n }\n let p = ExtendedPoint.ZERO;\n let f = ExtendedPoint.ZERO;\n const windows = 1 + 256 / W;\n const windowSize = 2 ** (W - 1);\n const mask = BigInt(2 ** W - 1);\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n let wbits = Number(n & mask);\n n >>= shiftBy;\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n if (wbits === 0) {\n let pr = precomputes[offset];\n if (window % 2)\n pr = pr.negate();\n f = f.add(pr);\n }\n else {\n let cached = precomputes[offset + Math.abs(wbits) - 1];\n if (wbits < 0)\n cached = cached.negate();\n p = p.add(cached);\n }\n }\n return ExtendedPoint.normalizeZ([p, f])[0];\n }\n multiply(scalar, affinePoint) {\n return this.wNAF(normalizeScalar(scalar, CURVE.l), affinePoint);\n }\n multiplyUnsafe(scalar) {\n let n = normalizeScalar(scalar, CURVE.l, false);\n const G = ExtendedPoint.BASE;\n const P0 = ExtendedPoint.ZERO;\n if (n === _0n)\n return P0;\n if (this.equals(P0) || n === _1n)\n return this;\n if (this.equals(G))\n return this.wNAF(n);\n let p = P0;\n let d = this;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n isSmallOrder() {\n return this.multiplyUnsafe(CURVE.h).equals(ExtendedPoint.ZERO);\n }\n isTorsionFree() {\n return this.multiplyUnsafe(CURVE.l).equals(ExtendedPoint.ZERO);\n }\n toAffine(invZ = invert(this.z)) {\n const { x, y, z } = this;\n const ax = mod(x * invZ);\n const ay = mod(y * invZ);\n const zz = mod(z * invZ);\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return new Point(ax, ay);\n }\n fromRistrettoBytes() {\n legacyRist();\n }\n toRistrettoBytes() {\n legacyRist();\n }\n fromRistrettoHash() {\n legacyRist();\n }\n}\nExtendedPoint.BASE = new ExtendedPoint(CURVE.Gx, CURVE.Gy, _1n, mod(CURVE.Gx * CURVE.Gy));\nExtendedPoint.ZERO = new ExtendedPoint(_0n, _1n, _1n, _0n);\nfunction assertExtPoint(other) {\n if (!(other instanceof ExtendedPoint))\n throw new TypeError('ExtendedPoint expected');\n}\nfunction assertRstPoint(other) {\n if (!(other instanceof RistrettoPoint))\n throw new TypeError('RistrettoPoint expected');\n}\nfunction legacyRist() {\n throw new Error('Legacy method: switch to RistrettoPoint');\n}\nclass RistrettoPoint {\n constructor(ep) {\n this.ep = ep;\n }\n static calcElligatorRistrettoMap(r0) {\n const { d } = CURVE;\n const r = mod(SQRT_M1 * r0 * r0);\n const Ns = mod((r + _1n) * ONE_MINUS_D_SQ);\n let c = BigInt(-1);\n const D = mod((c - d * r) * mod(r + d));\n let { isValid: Ns_D_is_sq, value: s } = uvRatio(Ns, D);\n let s_ = mod(s * r0);\n if (!edIsNegative(s_))\n s_ = mod(-s_);\n if (!Ns_D_is_sq)\n s = s_;\n if (!Ns_D_is_sq)\n c = r;\n const Nt = mod(c * (r - _1n) * D_MINUS_ONE_SQ - D);\n const s2 = s * s;\n const W0 = mod((s + s) * D);\n const W1 = mod(Nt * SQRT_AD_MINUS_ONE);\n const W2 = mod(_1n - s2);\n const W3 = mod(_1n + s2);\n return new ExtendedPoint(mod(W0 * W3), mod(W2 * W1), mod(W1 * W3), mod(W0 * W2));\n }\n static hashToCurve(hex) {\n hex = ensureBytes(hex, 64);\n const r1 = bytes255ToNumberLE(hex.slice(0, 32));\n const R1 = this.calcElligatorRistrettoMap(r1);\n const r2 = bytes255ToNumberLE(hex.slice(32, 64));\n const R2 = this.calcElligatorRistrettoMap(r2);\n return new RistrettoPoint(R1.add(R2));\n }\n static fromHex(hex) {\n hex = ensureBytes(hex, 32);\n const { a, d } = CURVE;\n const emsg = 'RistrettoPoint.fromHex: the hex is not valid encoding of RistrettoPoint';\n const s = bytes255ToNumberLE(hex);\n if (!equalBytes(numberTo32BytesLE(s), hex) || edIsNegative(s))\n throw new Error(emsg);\n const s2 = mod(s * s);\n const u1 = mod(_1n + a * s2);\n const u2 = mod(_1n - a * s2);\n const u1_2 = mod(u1 * u1);\n const u2_2 = mod(u2 * u2);\n const v = mod(a * d * u1_2 - u2_2);\n const { isValid, value: I } = invertSqrt(mod(v * u2_2));\n const Dx = mod(I * u2);\n const Dy = mod(I * Dx * v);\n let x = mod((s + s) * Dx);\n if (edIsNegative(x))\n x = mod(-x);\n const y = mod(u1 * Dy);\n const t = mod(x * y);\n if (!isValid || edIsNegative(t) || y === _0n)\n throw new Error(emsg);\n return new RistrettoPoint(new ExtendedPoint(x, y, _1n, t));\n }\n toRawBytes() {\n let { x, y, z, t } = this.ep;\n const u1 = mod(mod(z + y) * mod(z - y));\n const u2 = mod(x * y);\n const u2sq = mod(u2 * u2);\n const { value: invsqrt } = invertSqrt(mod(u1 * u2sq));\n const D1 = mod(invsqrt * u1);\n const D2 = mod(invsqrt * u2);\n const zInv = mod(D1 * D2 * t);\n let D;\n if (edIsNegative(t * zInv)) {\n let _x = mod(y * SQRT_M1);\n let _y = mod(x * SQRT_M1);\n x = _x;\n y = _y;\n D = mod(D1 * INVSQRT_A_MINUS_D);\n }\n else {\n D = D2;\n }\n if (edIsNegative(x * zInv))\n y = mod(-y);\n let s = mod((z - y) * D);\n if (edIsNegative(s))\n s = mod(-s);\n return numberTo32BytesLE(s);\n }\n toHex() {\n return bytesToHex(this.toRawBytes());\n }\n toString() {\n return this.toHex();\n }\n equals(other) {\n assertRstPoint(other);\n const a = this.ep;\n const b = other.ep;\n const one = mod(a.x * b.y) === mod(a.y * b.x);\n const two = mod(a.y * b.y) === mod(a.x * b.x);\n return one || two;\n }\n add(other) {\n assertRstPoint(other);\n return new RistrettoPoint(this.ep.add(other.ep));\n }\n subtract(other) {\n assertRstPoint(other);\n return new RistrettoPoint(this.ep.subtract(other.ep));\n }\n multiply(scalar) {\n return new RistrettoPoint(this.ep.multiply(scalar));\n }\n multiplyUnsafe(scalar) {\n return new RistrettoPoint(this.ep.multiplyUnsafe(scalar));\n }\n}\nRistrettoPoint.BASE = new RistrettoPoint(ExtendedPoint.BASE);\nRistrettoPoint.ZERO = new RistrettoPoint(ExtendedPoint.ZERO);\nconst pointPrecomputes = new WeakMap();\nclass Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n static fromHex(hex, strict = true) {\n const { d, P } = CURVE;\n hex = ensureBytes(hex, 32);\n const normed = hex.slice();\n normed[31] = hex[31] & ~0x80;\n const y = bytesToNumberLE(normed);\n if (strict && y >= P)\n throw new Error('Expected 0 < hex < P');\n if (!strict && y >= POW_2_256)\n throw new Error('Expected 0 < hex < 2**256');\n const y2 = mod(y * y);\n const u = mod(y2 - _1n);\n const v = mod(d * y2 + _1n);\n let { isValid, value: x } = uvRatio(u, v);\n if (!isValid)\n throw new Error('Point.fromHex: invalid y coordinate');\n const isXOdd = (x & _1n) === _1n;\n const isLastByteOdd = (hex[31] & 0x80) !== 0;\n if (isLastByteOdd !== isXOdd) {\n x = mod(-x);\n }\n return new Point(x, y);\n }\n static async fromPrivateKey(privateKey) {\n return (await getExtendedPublicKey(privateKey)).point;\n }\n toRawBytes() {\n const bytes = numberTo32BytesLE(this.y);\n bytes[31] |= this.x & _1n ? 0x80 : 0;\n return bytes;\n }\n toHex() {\n return bytesToHex(this.toRawBytes());\n }\n toX25519() {\n const { y } = this;\n const u = mod((_1n + y) * invert(_1n - y));\n return numberTo32BytesLE(u);\n }\n isTorsionFree() {\n return ExtendedPoint.fromAffine(this).isTorsionFree();\n }\n equals(other) {\n return this.x === other.x && this.y === other.y;\n }\n negate() {\n return new Point(mod(-this.x), this.y);\n }\n add(other) {\n return ExtendedPoint.fromAffine(this).add(ExtendedPoint.fromAffine(other)).toAffine();\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiply(scalar) {\n return ExtendedPoint.fromAffine(this).multiply(scalar, this).toAffine();\n }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _1n);\nclass Signature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex, 64);\n const r = Point.fromHex(bytes.slice(0, 32), false);\n const s = bytesToNumberLE(bytes.slice(32, 64));\n return new Signature(r, s);\n }\n assertValidity() {\n const { r, s } = this;\n if (!(r instanceof Point))\n throw new Error('Expected Point instance');\n normalizeScalar(s, CURVE.l, false);\n return this;\n }\n toRawBytes() {\n const u8 = new Uint8Array(64);\n u8.set(this.r.toRawBytes());\n u8.set(numberTo32BytesLE(this.s), 32);\n return u8;\n }\n toHex() {\n return bytesToHex(this.toRawBytes());\n }\n}\nexport { ExtendedPoint, RistrettoPoint, Point, Signature };\nfunction concatBytes(...arrays) {\n if (!arrays.every((a) => a instanceof Uint8Array))\n throw new Error('Expected Uint8Array list');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Uint8Array expected');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex');\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nfunction numberTo32BytesBE(num) {\n const length = 32;\n const hex = num.toString(16).padStart(length * 2, '0');\n return hexToBytes(hex);\n}\nfunction numberTo32BytesLE(num) {\n return numberTo32BytesBE(num).reverse();\n}\nfunction edIsNegative(num) {\n return (mod(num) & _1n) === _1n;\n}\nfunction bytesToNumberLE(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n return BigInt('0x' + bytesToHex(Uint8Array.from(uint8a).reverse()));\n}\nconst MAX_255B = BigInt('0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff');\nfunction bytes255ToNumberLE(bytes) {\n return mod(bytesToNumberLE(bytes) & MAX_255B);\n}\nfunction mod(a, b = CURVE.P) {\n const res = a % b;\n return res >= _0n ? res : b + res;\n}\nfunction invert(number, modulo = CURVE.P) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n let a = mod(number, modulo);\n let b = modulo;\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n const tmp = new Array(nums.length);\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (num === _0n)\n return acc;\n tmp[i] = acc;\n return mod(acc * num, p);\n }, _1n);\n const inverted = invert(lastMultiplied, p);\n nums.reduceRight((acc, num, i) => {\n if (num === _0n)\n return acc;\n tmp[i] = mod(acc * tmp[i], p);\n return mod(acc * num, p);\n }, inverted);\n return tmp;\n}\nfunction pow2(x, power) {\n const { P } = CURVE;\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= P;\n }\n return res;\n}\nfunction pow_2_252_3(x) {\n const { P } = CURVE;\n const _5n = BigInt(5);\n const _10n = BigInt(10);\n const _20n = BigInt(20);\n const _40n = BigInt(40);\n const _80n = BigInt(80);\n const x2 = (x * x) % P;\n const b2 = (x2 * x) % P;\n const b4 = (pow2(b2, _2n) * b2) % P;\n const b5 = (pow2(b4, _1n) * x) % P;\n const b10 = (pow2(b5, _5n) * b5) % P;\n const b20 = (pow2(b10, _10n) * b10) % P;\n const b40 = (pow2(b20, _20n) * b20) % P;\n const b80 = (pow2(b40, _40n) * b40) % P;\n const b160 = (pow2(b80, _80n) * b80) % P;\n const b240 = (pow2(b160, _80n) * b80) % P;\n const b250 = (pow2(b240, _10n) * b10) % P;\n const pow_p_5_8 = (pow2(b250, _2n) * x) % P;\n return { pow_p_5_8, b2 };\n}\nfunction uvRatio(u, v) {\n const v3 = mod(v * v * v);\n const v7 = mod(v3 * v3 * v);\n const pow = pow_2_252_3(u * v7).pow_p_5_8;\n let x = mod(u * v3 * pow);\n const vx2 = mod(v * x * x);\n const root1 = x;\n const root2 = mod(x * SQRT_M1);\n const useRoot1 = vx2 === u;\n const useRoot2 = vx2 === mod(-u);\n const noRoot = vx2 === mod(-u * SQRT_M1);\n if (useRoot1)\n x = root1;\n if (useRoot2 || noRoot)\n x = root2;\n if (edIsNegative(x))\n x = mod(-x);\n return { isValid: useRoot1 || useRoot2, value: x };\n}\nfunction invertSqrt(number) {\n return uvRatio(_1n, number);\n}\nfunction modlLE(hash) {\n return mod(bytesToNumberLE(hash), CURVE.l);\n}\nfunction equalBytes(b1, b2) {\n if (b1.length !== b2.length) {\n return false;\n }\n for (let i = 0; i < b1.length; i++) {\n if (b1[i] !== b2[i]) {\n return false;\n }\n }\n return true;\n}\nfunction ensureBytes(hex, expectedLength) {\n const bytes = hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n if (typeof expectedLength === 'number' && bytes.length !== expectedLength)\n throw new Error(`Expected ${expectedLength} bytes`);\n return bytes;\n}\nfunction normalizeScalar(num, max, strict = true) {\n if (!max)\n throw new TypeError('Specify max value');\n if (typeof num === 'number' && Number.isSafeInteger(num))\n num = BigInt(num);\n if (typeof num === 'bigint' && num < max) {\n if (strict) {\n if (_0n < num)\n return num;\n }\n else {\n if (_0n <= num)\n return num;\n }\n }\n throw new TypeError('Expected valid scalar: 0 < scalar < max');\n}\nfunction adjustBytes25519(bytes) {\n bytes[0] &= 248;\n bytes[31] &= 127;\n bytes[31] |= 64;\n return bytes;\n}\nfunction decodeScalar25519(n) {\n return bytesToNumberLE(adjustBytes25519(ensureBytes(n, 32)));\n}\nfunction checkPrivateKey(key) {\n key =\n typeof key === 'bigint' || typeof key === 'number'\n ? numberTo32BytesBE(normalizeScalar(key, POW_2_256))\n : ensureBytes(key);\n if (key.length !== 32)\n throw new Error(`Expected 32 bytes`);\n return key;\n}\nfunction getKeyFromHash(hashed) {\n const head = adjustBytes25519(hashed.slice(0, 32));\n const prefix = hashed.slice(32, 64);\n const scalar = modlLE(head);\n const point = Point.BASE.multiply(scalar);\n const pointBytes = point.toRawBytes();\n return { head, prefix, scalar, point, pointBytes };\n}\nlet _sha512Sync;\nfunction sha512s(...m) {\n if (typeof _sha512Sync !== 'function')\n throw new Error('utils.sha512Sync must be set to use sync methods');\n return _sha512Sync(...m);\n}\nasync function getExtendedPublicKey(key) {\n return getKeyFromHash(await utils.sha512(checkPrivateKey(key)));\n}\nfunction getExtendedPublicKeySync(key) {\n return getKeyFromHash(sha512s(checkPrivateKey(key)));\n}\nexport async function getPublicKey(privateKey) {\n return (await getExtendedPublicKey(privateKey)).pointBytes;\n}\nfunction getPublicKeySync(privateKey) {\n return getExtendedPublicKeySync(privateKey).pointBytes;\n}\nexport async function sign(message, privateKey) {\n message = ensureBytes(message);\n const { prefix, scalar, pointBytes } = await getExtendedPublicKey(privateKey);\n const r = modlLE(await utils.sha512(prefix, message));\n const R = Point.BASE.multiply(r);\n const k = modlLE(await utils.sha512(R.toRawBytes(), pointBytes, message));\n const s = mod(r + k * scalar, CURVE.l);\n return new Signature(R, s).toRawBytes();\n}\nfunction signSync(message, privateKey) {\n message = ensureBytes(message);\n const { prefix, scalar, pointBytes } = getExtendedPublicKeySync(privateKey);\n const r = modlLE(sha512s(prefix, message));\n const R = Point.BASE.multiply(r);\n const k = modlLE(sha512s(R.toRawBytes(), pointBytes, message));\n const s = mod(r + k * scalar, CURVE.l);\n return new Signature(R, s).toRawBytes();\n}\nfunction prepareVerification(sig, message, publicKey) {\n message = ensureBytes(message);\n if (!(publicKey instanceof Point))\n publicKey = Point.fromHex(publicKey, false);\n const { r, s } = sig instanceof Signature ? sig.assertValidity() : Signature.fromHex(sig);\n const SB = ExtendedPoint.BASE.multiplyUnsafe(s);\n return { r, s, SB, pub: publicKey, msg: message };\n}\nfunction finishVerification(publicKey, r, SB, hashed) {\n const k = modlLE(hashed);\n const kA = ExtendedPoint.fromAffine(publicKey).multiplyUnsafe(k);\n const RkA = ExtendedPoint.fromAffine(r).add(kA);\n return RkA.subtract(SB).multiplyUnsafe(CURVE.h).equals(ExtendedPoint.ZERO);\n}\nexport async function verify(sig, message, publicKey) {\n const { r, SB, msg, pub } = prepareVerification(sig, message, publicKey);\n const hashed = await utils.sha512(r.toRawBytes(), pub.toRawBytes(), msg);\n return finishVerification(pub, r, SB, hashed);\n}\nfunction verifySync(sig, message, publicKey) {\n const { r, SB, msg, pub } = prepareVerification(sig, message, publicKey);\n const hashed = sha512s(r.toRawBytes(), pub.toRawBytes(), msg);\n return finishVerification(pub, r, SB, hashed);\n}\nexport const sync = {\n getExtendedPublicKey: getExtendedPublicKeySync,\n getPublicKey: getPublicKeySync,\n sign: signSync,\n verify: verifySync,\n};\nexport async function getSharedSecret(privateKey, publicKey) {\n const { head } = await getExtendedPublicKey(privateKey);\n const u = Point.fromHex(publicKey).toX25519();\n return curve25519.scalarMult(head, u);\n}\nPoint.BASE._setWindowSize(8);\nfunction cswap(swap, x_2, x_3) {\n const dummy = mod(swap * (x_2 - x_3));\n x_2 = mod(x_2 - dummy);\n x_3 = mod(x_3 + dummy);\n return [x_2, x_3];\n}\nfunction montgomeryLadder(pointU, scalar) {\n const { P } = CURVE;\n const u = normalizeScalar(pointU, P);\n const k = normalizeScalar(scalar, P);\n const a24 = BigInt(121665);\n const x_1 = u;\n let x_2 = _1n;\n let z_2 = _0n;\n let x_3 = u;\n let z_3 = _1n;\n let swap = _0n;\n let sw;\n for (let t = BigInt(255 - 1); t >= _0n; t--) {\n const k_t = (k >> t) & _1n;\n swap ^= k_t;\n sw = cswap(swap, x_2, x_3);\n x_2 = sw[0];\n x_3 = sw[1];\n sw = cswap(swap, z_2, z_3);\n z_2 = sw[0];\n z_3 = sw[1];\n swap = k_t;\n const A = x_2 + z_2;\n const AA = mod(A * A);\n const B = x_2 - z_2;\n const BB = mod(B * B);\n const E = AA - BB;\n const C = x_3 + z_3;\n const D = x_3 - z_3;\n const DA = mod(D * A);\n const CB = mod(C * B);\n const dacb = DA + CB;\n const da_cb = DA - CB;\n x_3 = mod(dacb * dacb);\n z_3 = mod(x_1 * mod(da_cb * da_cb));\n x_2 = mod(AA * BB);\n z_2 = mod(E * (AA + mod(a24 * E)));\n }\n sw = cswap(swap, x_2, x_3);\n x_2 = sw[0];\n x_3 = sw[1];\n sw = cswap(swap, z_2, z_3);\n z_2 = sw[0];\n z_3 = sw[1];\n const { pow_p_5_8, b2 } = pow_2_252_3(z_2);\n const xp2 = mod(pow2(pow_p_5_8, BigInt(3)) * b2);\n return mod(x_2 * xp2);\n}\nfunction encodeUCoordinate(u) {\n return numberTo32BytesLE(mod(u, CURVE.P));\n}\nfunction decodeUCoordinate(uEnc) {\n const u = ensureBytes(uEnc, 32);\n u[31] &= 127;\n return bytesToNumberLE(u);\n}\nexport const curve25519 = {\n BASE_POINT_U: '0900000000000000000000000000000000000000000000000000000000000000',\n scalarMult(privateKey, publicKey) {\n const u = decodeUCoordinate(publicKey);\n const p = decodeScalar25519(privateKey);\n const pu = montgomeryLadder(u, p);\n if (pu === _0n)\n throw new Error('Invalid private or public key received');\n return encodeUCoordinate(pu);\n },\n scalarMultBase(privateKey) {\n return curve25519.scalarMult(privateKey, curve25519.BASE_POINT_U);\n },\n};\nconst crypto = {\n node: nodeCrypto,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nexport const utils = {\n bytesToHex,\n hexToBytes,\n concatBytes,\n getExtendedPublicKey,\n mod,\n invert,\n TORSION_SUBGROUP: [\n '0100000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac037a',\n '0000000000000000000000000000000000000000000000000000000000000080',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc05',\n 'ecffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f',\n '26e8958fc2b227b045c3f489f2ef98f0d5dfac05d3c63339b13802886d53fc85',\n '0000000000000000000000000000000000000000000000000000000000000000',\n 'c7176a703d4dd84fba3c0b760d10670f2a2053fa2c39ccc64ec7fd7792ac03fa',\n ],\n hashToPrivateScalar: (hash) => {\n hash = ensureBytes(hash);\n if (hash.length < 40 || hash.length > 1024)\n throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n return mod(bytesToNumberLE(hash), CURVE.l - _1n) + _1n;\n },\n randomBytes: (bytesLength = 32) => {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n const { randomBytes } = crypto.node;\n return new Uint8Array(randomBytes(bytesLength).buffer);\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n },\n randomPrivateKey: () => {\n return utils.randomBytes(32);\n },\n sha512: async (...messages) => {\n const message = concatBytes(...messages);\n if (crypto.web) {\n const buffer = await crypto.web.subtle.digest('SHA-512', message.buffer);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n return Uint8Array.from(crypto.node.createHash('sha512').update(message).digest());\n }\n else {\n throw new Error(\"The environment doesn't have sha512 function\");\n }\n },\n precompute(windowSize = 8, point = Point.BASE) {\n const cached = point.equals(Point.BASE) ? point : new Point(point.x, point.y);\n cached._setWindowSize(windowSize);\n cached.multiply(_2n);\n return cached;\n },\n sha512Sync: undefined,\n};\nObject.defineProperties(utils, {\n sha512Sync: {\n configurable: false,\n get() {\n return _sha512Sync;\n },\n set(val) {\n if (!_sha512Sync)\n _sha512Sync = val;\n },\n },\n});\n","import { SHA2 } from './_sha2.js';\nimport { rotr, wrapConstructor } from './utils.js';\n// Choice: a ? b : c\nconst Chi = (a, b, c) => (a & b) ^ (~a & c);\n// Majority function, true if any two inpust is true\nconst Maj = (a, b, c) => (a & b) ^ (a & c) ^ (b & c);\n// Round constants:\n// first 32 bits of the fractional parts of the cube roots of the first 64 primes 2..311)\n// prettier-ignore\nconst SHA256_K = new Uint32Array([\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n]);\n// Initial state (first 32 bits of the fractional parts of the square roots of the first 8 primes 2..19):\n// prettier-ignore\nconst IV = new Uint32Array([\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a, 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n]);\n// Temporary buffer, not used to store anything between runs\n// Named this way because it matches specification.\nconst SHA256_W = new Uint32Array(64);\nclass SHA256 extends SHA2 {\n constructor() {\n super(64, 32, 8, false);\n // We cannot use array here since array allows indexing by variable\n // which means optimizer/compiler cannot use registers.\n this.A = IV[0] | 0;\n this.B = IV[1] | 0;\n this.C = IV[2] | 0;\n this.D = IV[3] | 0;\n this.E = IV[4] | 0;\n this.F = IV[5] | 0;\n this.G = IV[6] | 0;\n this.H = IV[7] | 0;\n }\n get() {\n const { A, B, C, D, E, F, G, H } = this;\n return [A, B, C, D, E, F, G, H];\n }\n // prettier-ignore\n set(A, B, C, D, E, F, G, H) {\n this.A = A | 0;\n this.B = B | 0;\n this.C = C | 0;\n this.D = D | 0;\n this.E = E | 0;\n this.F = F | 0;\n this.G = G | 0;\n this.H = H | 0;\n }\n process(view, offset) {\n // Extend the first 16 words into the remaining 48 words w[16..63] of the message schedule array\n for (let i = 0; i < 16; i++, offset += 4)\n SHA256_W[i] = view.getUint32(offset, false);\n for (let i = 16; i < 64; i++) {\n const W15 = SHA256_W[i - 15];\n const W2 = SHA256_W[i - 2];\n const s0 = rotr(W15, 7) ^ rotr(W15, 18) ^ (W15 >>> 3);\n const s1 = rotr(W2, 17) ^ rotr(W2, 19) ^ (W2 >>> 10);\n SHA256_W[i] = (s1 + SHA256_W[i - 7] + s0 + SHA256_W[i - 16]) | 0;\n }\n // Compression function main loop, 64 rounds\n let { A, B, C, D, E, F, G, H } = this;\n for (let i = 0; i < 64; i++) {\n const sigma1 = rotr(E, 6) ^ rotr(E, 11) ^ rotr(E, 25);\n const T1 = (H + sigma1 + Chi(E, F, G) + SHA256_K[i] + SHA256_W[i]) | 0;\n const sigma0 = rotr(A, 2) ^ rotr(A, 13) ^ rotr(A, 22);\n const T2 = (sigma0 + Maj(A, B, C)) | 0;\n H = G;\n G = F;\n F = E;\n E = (D + T1) | 0;\n D = C;\n C = B;\n B = A;\n A = (T1 + T2) | 0;\n }\n // Add the compressed chunk to the current hash value\n A = (A + this.A) | 0;\n B = (B + this.B) | 0;\n C = (C + this.C) | 0;\n D = (D + this.D) | 0;\n E = (E + this.E) | 0;\n F = (F + this.F) | 0;\n G = (G + this.G) | 0;\n H = (H + this.H) | 0;\n this.set(A, B, C, D, E, F, G, H);\n }\n roundClean() {\n SHA256_W.fill(0);\n }\n destroy() {\n this.set(0, 0, 0, 0, 0, 0, 0, 0);\n this.buffer.fill(0);\n }\n}\n/**\n * SHA2-256 hash function\n * @param message - data that would be hashed\n */\nexport const sha256 = wrapConstructor(() => new SHA256());\n","/**\n * A `StructFailure` represents a single specific failure in validation.\n */\n\n/**\n * `StructError` objects are thrown (or returned) when validation fails.\n *\n * Validation logic is design to exit early for maximum performance. The error\n * represents the first error encountered during validation. For more detail,\n * the `error.failures` property is a generator function that can be run to\n * continue validation and receive all the failures in the data.\n */\nclass StructError extends TypeError {\n constructor(failure, failures) {\n let cached;\n const {\n message,\n ...rest\n } = failure;\n const {\n path\n } = failure;\n const msg = path.length === 0 ? message : \"At path: \" + path.join('.') + \" -- \" + message;\n super(msg);\n Object.assign(this, rest);\n this.name = this.constructor.name;\n\n this.failures = () => {\n var _cached;\n\n return (_cached = cached) != null ? _cached : cached = [failure, ...failures()];\n };\n }\n\n}\n\n/**\n * Check if a value is an iterator.\n */\nfunction isIterable(x) {\n return isObject(x) && typeof x[Symbol.iterator] === 'function';\n}\n/**\n * Check if a value is a plain object.\n */\n\n\nfunction isObject(x) {\n return typeof x === 'object' && x != null;\n}\n/**\n * Check if a value is a plain object.\n */\n\nfunction isPlainObject(x) {\n if (Object.prototype.toString.call(x) !== '[object Object]') {\n return false;\n }\n\n const prototype = Object.getPrototypeOf(x);\n return prototype === null || prototype === Object.prototype;\n}\n/**\n * Return a value as a printable string.\n */\n\nfunction print(value) {\n return typeof value === 'string' ? JSON.stringify(value) : \"\" + value;\n}\n/**\n * Shifts (removes and returns) the first value from the `input` iterator.\n * Like `Array.prototype.shift()` but for an `Iterator`.\n */\n\nfunction shiftIterator(input) {\n const {\n done,\n value\n } = input.next();\n return done ? undefined : value;\n}\n/**\n * Convert a single validation result to a failure.\n */\n\nfunction toFailure(result, context, struct, value) {\n if (result === true) {\n return;\n } else if (result === false) {\n result = {};\n } else if (typeof result === 'string') {\n result = {\n message: result\n };\n }\n\n const {\n path,\n branch\n } = context;\n const {\n type\n } = struct;\n const {\n refinement,\n message = \"Expected a value of type `\" + type + \"`\" + (refinement ? \" with refinement `\" + refinement + \"`\" : '') + \", but received: `\" + print(value) + \"`\"\n } = result;\n return {\n value,\n type,\n refinement,\n key: path[path.length - 1],\n path,\n branch,\n ...result,\n message\n };\n}\n/**\n * Convert a validation result to an iterable of failures.\n */\n\nfunction* toFailures(result, context, struct, value) {\n if (!isIterable(result)) {\n result = [result];\n }\n\n for (const r of result) {\n const failure = toFailure(r, context, struct, value);\n\n if (failure) {\n yield failure;\n }\n }\n}\n/**\n * Check a value against a struct, traversing deeply into nested values, and\n * returning an iterator of failures or success.\n */\n\nfunction* run(value, struct, options = {}) {\n const {\n path = [],\n branch = [value],\n coerce = false,\n mask = false\n } = options;\n const ctx = {\n path,\n branch\n };\n\n if (coerce) {\n value = struct.coercer(value, ctx);\n\n if (mask && struct.type !== 'type' && isObject(struct.schema) && isObject(value) && !Array.isArray(value)) {\n for (const key in value) {\n if (struct.schema[key] === undefined) {\n delete value[key];\n }\n }\n }\n }\n\n let valid = true;\n\n for (const failure of struct.validator(value, ctx)) {\n valid = false;\n yield [failure, undefined];\n }\n\n for (let [k, v, s] of struct.entries(value, ctx)) {\n const ts = run(v, s, {\n path: k === undefined ? path : [...path, k],\n branch: k === undefined ? branch : [...branch, v],\n coerce,\n mask\n });\n\n for (const t of ts) {\n if (t[0]) {\n valid = false;\n yield [t[0], undefined];\n } else if (coerce) {\n v = t[1];\n\n if (k === undefined) {\n value = v;\n } else if (value instanceof Map) {\n value.set(k, v);\n } else if (value instanceof Set) {\n value.add(v);\n } else if (isObject(value)) {\n value[k] = v;\n }\n }\n }\n }\n\n if (valid) {\n for (const failure of struct.refiner(value, ctx)) {\n valid = false;\n yield [failure, undefined];\n }\n }\n\n if (valid) {\n yield [undefined, value];\n }\n}\n\n/**\n * `Struct` objects encapsulate the validation logic for a specific type of\n * values. Once constructed, you use the `assert`, `is` or `validate` helpers to\n * validate unknown input data against the struct.\n */\n\nclass Struct {\n constructor(props) {\n const {\n type,\n schema,\n validator,\n refiner,\n coercer = value => value,\n entries = function* () {}\n } = props;\n this.type = type;\n this.schema = schema;\n this.entries = entries;\n this.coercer = coercer;\n\n if (validator) {\n this.validator = (value, context) => {\n const result = validator(value, context);\n return toFailures(result, context, this, value);\n };\n } else {\n this.validator = () => [];\n }\n\n if (refiner) {\n this.refiner = (value, context) => {\n const result = refiner(value, context);\n return toFailures(result, context, this, value);\n };\n } else {\n this.refiner = () => [];\n }\n }\n /**\n * Assert that a value passes the struct's validation, throwing if it doesn't.\n */\n\n\n assert(value) {\n return assert(value, this);\n }\n /**\n * Create a value with the struct's coercion logic, then validate it.\n */\n\n\n create(value) {\n return create(value, this);\n }\n /**\n * Check if a value passes the struct's validation.\n */\n\n\n is(value) {\n return is(value, this);\n }\n /**\n * Mask a value, coercing and validating it, but returning only the subset of\n * properties defined by the struct's schema.\n */\n\n\n mask(value) {\n return mask(value, this);\n }\n /**\n * Validate a value with the struct's validation logic, returning a tuple\n * representing the result.\n *\n * You may optionally pass `true` for the `withCoercion` argument to coerce\n * the value before attempting to validate it. If you do, the result will\n * contain the coerced result when successful.\n */\n\n\n validate(value, options = {}) {\n return validate(value, this, options);\n }\n\n}\n/**\n * Assert that a value passes a struct, throwing if it doesn't.\n */\n\nfunction assert(value, struct) {\n const result = validate(value, struct);\n\n if (result[0]) {\n throw result[0];\n }\n}\n/**\n * Create a value with the coercion logic of struct and validate it.\n */\n\nfunction create(value, struct) {\n const result = validate(value, struct, {\n coerce: true\n });\n\n if (result[0]) {\n throw result[0];\n } else {\n return result[1];\n }\n}\n/**\n * Mask a value, returning only the subset of properties defined by a struct.\n */\n\nfunction mask(value, struct) {\n const result = validate(value, struct, {\n coerce: true,\n mask: true\n });\n\n if (result[0]) {\n throw result[0];\n } else {\n return result[1];\n }\n}\n/**\n * Check if a value passes a struct.\n */\n\nfunction is(value, struct) {\n const result = validate(value, struct);\n return !result[0];\n}\n/**\n * Validate a value against a struct, returning an error if invalid, or the\n * value (with potential coercion) if valid.\n */\n\nfunction validate(value, struct, options = {}) {\n const tuples = run(value, struct, options);\n const tuple = shiftIterator(tuples);\n\n if (tuple[0]) {\n const error = new StructError(tuple[0], function* () {\n for (const t of tuples) {\n if (t[0]) {\n yield t[0];\n }\n }\n });\n return [error, undefined];\n } else {\n const v = tuple[1];\n return [undefined, v];\n }\n}\n\nfunction assign(...Structs) {\n const schemas = Structs.map(s => s.schema);\n const schema = Object.assign({}, ...schemas);\n return object(schema);\n}\n/**\n * Define a new struct type with a custom validation function.\n */\n\nfunction define(name, validator) {\n return new Struct({\n type: name,\n schema: null,\n validator\n });\n}\n/**\n * Create a new struct based on an existing struct, but the value is allowed to\n * be `undefined`. `log` will be called if the value is not `undefined`.\n */\n\nfunction deprecated(struct, log) {\n return new Struct({ ...struct,\n refiner: (value, ctx) => value === undefined || struct.refiner(value, ctx),\n\n validator(value, ctx) {\n if (value === undefined) {\n return true;\n } else {\n log(value, ctx);\n return struct.validator(value, ctx);\n }\n }\n\n });\n}\n/**\n * Create a struct with dynamic validation logic.\n *\n * The callback will receive the value currently being validated, and must\n * return a struct object to validate it with. This can be useful to model\n * validation logic that changes based on its input.\n */\n\nfunction dynamic(fn) {\n return new Struct({\n type: 'dynamic',\n schema: null,\n\n *entries(value, ctx) {\n const struct = fn(value, ctx);\n yield* struct.entries(value, ctx);\n },\n\n validator(value, ctx) {\n const struct = fn(value, ctx);\n return struct.validator(value, ctx);\n },\n\n coercer(value, ctx) {\n const struct = fn(value, ctx);\n return struct.coercer(value, ctx);\n }\n\n });\n}\n/**\n * Create a struct with lazily evaluated validation logic.\n *\n * The first time validation is run with the struct, the callback will be called\n * and must return a struct object to use. This is useful for cases where you\n * want to have self-referential structs for nested data structures to avoid a\n * circular definition problem.\n */\n\nfunction lazy(fn) {\n let struct;\n return new Struct({\n type: 'lazy',\n schema: null,\n\n *entries(value, ctx) {\n var _struct;\n\n (_struct = struct) != null ? _struct : struct = fn();\n yield* struct.entries(value, ctx);\n },\n\n validator(value, ctx) {\n var _struct2;\n\n (_struct2 = struct) != null ? _struct2 : struct = fn();\n return struct.validator(value, ctx);\n },\n\n coercer(value, ctx) {\n var _struct3;\n\n (_struct3 = struct) != null ? _struct3 : struct = fn();\n return struct.coercer(value, ctx);\n }\n\n });\n}\n/**\n * Create a new struct based on an existing object struct, but excluding\n * specific properties.\n *\n * Like TypeScript's `Omit` utility.\n */\n\nfunction omit(struct, keys) {\n const {\n schema\n } = struct;\n const subschema = { ...schema\n };\n\n for (const key of keys) {\n delete subschema[key];\n }\n\n return object(subschema);\n}\n/**\n * Create a new struct based on an existing object struct, but with all of its\n * properties allowed to be `undefined`.\n *\n * Like TypeScript's `Partial` utility.\n */\n\nfunction partial(struct) {\n const schema = struct instanceof Struct ? { ...struct.schema\n } : { ...struct\n };\n\n for (const key in schema) {\n schema[key] = optional(schema[key]);\n }\n\n return object(schema);\n}\n/**\n * Create a new struct based on an existing object struct, but only including\n * specific properties.\n *\n * Like TypeScript's `Pick` utility.\n */\n\nfunction pick(struct, keys) {\n const {\n schema\n } = struct;\n const subschema = {};\n\n for (const key of keys) {\n subschema[key] = schema[key];\n }\n\n return object(subschema);\n}\n/**\n * Define a new struct type with a custom validation function.\n *\n * @deprecated This function has been renamed to `define`.\n */\n\nfunction struct(name, validator) {\n console.warn('superstruct@0.11 - The `struct` helper has been renamed to `define`.');\n return define(name, validator);\n}\n\n/**\n * Ensure that any value passes validation.\n */\n\nfunction any() {\n return define('any', () => true);\n}\nfunction array(Element) {\n return new Struct({\n type: 'array',\n schema: Element,\n\n *entries(value) {\n if (Element && Array.isArray(value)) {\n for (const [i, v] of value.entries()) {\n yield [i, v, Element];\n }\n }\n },\n\n coercer(value) {\n return Array.isArray(value) ? value.slice() : value;\n },\n\n validator(value) {\n return Array.isArray(value) || \"Expected an array value, but received: \" + print(value);\n }\n\n });\n}\n/**\n * Ensure that a value is a boolean.\n */\n\nfunction boolean() {\n return define('boolean', value => {\n return typeof value === 'boolean';\n });\n}\n/**\n * Ensure that a value is a valid `Date`.\n *\n * Note: this also ensures that the value is *not* an invalid `Date` object,\n * which can occur when parsing a date fails but still returns a `Date`.\n */\n\nfunction date() {\n return define('date', value => {\n return value instanceof Date && !isNaN(value.getTime()) || \"Expected a valid `Date` object, but received: \" + print(value);\n });\n}\nfunction enums(values) {\n const schema = {};\n const description = values.map(v => print(v)).join();\n\n for (const key of values) {\n schema[key] = key;\n }\n\n return new Struct({\n type: 'enums',\n schema,\n\n validator(value) {\n return values.includes(value) || \"Expected one of `\" + description + \"`, but received: \" + print(value);\n }\n\n });\n}\n/**\n * Ensure that a value is a function.\n */\n\nfunction func() {\n return define('func', value => {\n return typeof value === 'function' || \"Expected a function, but received: \" + print(value);\n });\n}\n/**\n * Ensure that a value is an instance of a specific class.\n */\n\nfunction instance(Class) {\n return define('instance', value => {\n return value instanceof Class || \"Expected a `\" + Class.name + \"` instance, but received: \" + print(value);\n });\n}\n/**\n * Ensure that a value is an integer.\n */\n\nfunction integer() {\n return define('integer', value => {\n return typeof value === 'number' && !isNaN(value) && Number.isInteger(value) || \"Expected an integer, but received: \" + print(value);\n });\n}\nfunction intersection(Structs) {\n return new Struct({\n type: 'intersection',\n schema: null,\n\n *entries(value, ctx) {\n for (const S of Structs) {\n yield* S.entries(value, ctx);\n }\n },\n\n *validator(value, ctx) {\n for (const S of Structs) {\n yield* S.validator(value, ctx);\n }\n },\n\n *refiner(value, ctx) {\n for (const S of Structs) {\n yield* S.refiner(value, ctx);\n }\n }\n\n });\n}\nfunction literal(constant) {\n const description = print(constant);\n const t = typeof constant;\n return new Struct({\n type: 'literal',\n schema: t === 'string' || t === 'number' || t === 'boolean' ? constant : null,\n\n validator(value) {\n return value === constant || \"Expected the literal `\" + description + \"`, but received: \" + print(value);\n }\n\n });\n}\nfunction map(Key, Value) {\n return new Struct({\n type: 'map',\n schema: null,\n\n *entries(value) {\n if (Key && Value && value instanceof Map) {\n for (const [k, v] of value.entries()) {\n yield [k, k, Key];\n yield [k, v, Value];\n }\n }\n },\n\n coercer(value) {\n return value instanceof Map ? new Map(value) : value;\n },\n\n validator(value) {\n return value instanceof Map || \"Expected a `Map` object, but received: \" + print(value);\n }\n\n });\n}\n/**\n * Ensure that no value ever passes validation.\n */\n\nfunction never() {\n return define('never', () => false);\n}\n/**\n * Augment an existing struct to allow `null` values.\n */\n\nfunction nullable(struct) {\n return new Struct({ ...struct,\n validator: (value, ctx) => value === null || struct.validator(value, ctx),\n refiner: (value, ctx) => value === null || struct.refiner(value, ctx)\n });\n}\n/**\n * Ensure that a value is a number.\n */\n\nfunction number() {\n return define('number', value => {\n return typeof value === 'number' && !isNaN(value) || \"Expected a number, but received: \" + print(value);\n });\n}\nfunction object(schema) {\n const knowns = schema ? Object.keys(schema) : [];\n const Never = never();\n return new Struct({\n type: 'object',\n schema: schema ? schema : null,\n\n *entries(value) {\n if (schema && isObject(value)) {\n const unknowns = new Set(Object.keys(value));\n\n for (const key of knowns) {\n unknowns.delete(key);\n yield [key, value[key], schema[key]];\n }\n\n for (const key of unknowns) {\n yield [key, value[key], Never];\n }\n }\n },\n\n validator(value) {\n return isObject(value) || \"Expected an object, but received: \" + print(value);\n },\n\n coercer(value) {\n return isObject(value) ? { ...value\n } : value;\n }\n\n });\n}\n/**\n * Augment a struct to allow `undefined` values.\n */\n\nfunction optional(struct) {\n return new Struct({ ...struct,\n validator: (value, ctx) => value === undefined || struct.validator(value, ctx),\n refiner: (value, ctx) => value === undefined || struct.refiner(value, ctx)\n });\n}\n/**\n * Ensure that a value is an object with keys and values of specific types, but\n * without ensuring any specific shape of properties.\n *\n * Like TypeScript's `Record` utility.\n */\n\nfunction record(Key, Value) {\n return new Struct({\n type: 'record',\n schema: null,\n\n *entries(value) {\n if (isObject(value)) {\n for (const k in value) {\n const v = value[k];\n yield [k, k, Key];\n yield [k, v, Value];\n }\n }\n },\n\n validator(value) {\n return isObject(value) || \"Expected an object, but received: \" + print(value);\n }\n\n });\n}\n/**\n * Ensure that a value is a `RegExp`.\n *\n * Note: this does not test the value against the regular expression! For that\n * you need to use the `pattern()` refinement.\n */\n\nfunction regexp() {\n return define('regexp', value => {\n return value instanceof RegExp;\n });\n}\nfunction set(Element) {\n return new Struct({\n type: 'set',\n schema: null,\n\n *entries(value) {\n if (Element && value instanceof Set) {\n for (const v of value) {\n yield [v, v, Element];\n }\n }\n },\n\n coercer(value) {\n return value instanceof Set ? new Set(value) : value;\n },\n\n validator(value) {\n return value instanceof Set || \"Expected a `Set` object, but received: \" + print(value);\n }\n\n });\n}\n/**\n * Ensure that a value is a string.\n */\n\nfunction string() {\n return define('string', value => {\n return typeof value === 'string' || \"Expected a string, but received: \" + print(value);\n });\n}\nfunction tuple(Elements) {\n const Never = never();\n return new Struct({\n type: 'tuple',\n schema: null,\n\n *entries(value) {\n if (Array.isArray(value)) {\n const length = Math.max(Elements.length, value.length);\n\n for (let i = 0; i < length; i++) {\n yield [i, value[i], Elements[i] || Never];\n }\n }\n },\n\n validator(value) {\n return Array.isArray(value) || \"Expected an array, but received: \" + print(value);\n }\n\n });\n}\n/**\n * Ensure that a value has a set of known properties of specific types.\n *\n * Note: Unrecognized properties are allowed and untouched. This is similar to\n * how TypeScript's structural typing works.\n */\n\nfunction type(schema) {\n const keys = Object.keys(schema);\n return new Struct({\n type: 'type',\n schema,\n\n *entries(value) {\n if (isObject(value)) {\n for (const k of keys) {\n yield [k, value[k], schema[k]];\n }\n }\n },\n\n validator(value) {\n return isObject(value) || \"Expected an object, but received: \" + print(value);\n }\n\n });\n}\nfunction union(Structs) {\n const description = Structs.map(s => s.type).join(' | ');\n return new Struct({\n type: 'union',\n schema: null,\n\n validator(value, ctx) {\n const failures = [];\n\n for (const S of Structs) {\n const [...tuples] = run(value, S, ctx);\n const [first] = tuples;\n\n if (!first[0]) {\n return [];\n } else {\n for (const [failure] of tuples) {\n if (failure) {\n failures.push(failure);\n }\n }\n }\n }\n\n return [\"Expected the value to satisfy a union of `\" + description + \"`, but received: \" + print(value), ...failures];\n }\n\n });\n}\n/**\n * Ensure that any value passes validation, without widening its type to `any`.\n */\n\nfunction unknown() {\n return define('unknown', () => true);\n}\n\n/**\n * Augment a `Struct` to add an additional coercion step to its input.\n *\n * This allows you to transform input data before validating it, to increase the\n * likelihood that it passes validation—for example for default values, parsing\n * different formats, etc.\n *\n * Note: You must use `create(value, Struct)` on the value to have the coercion\n * take effect! Using simply `assert()` or `is()` will not use coercion.\n */\n\nfunction coerce(struct, condition, coercer) {\n return new Struct({ ...struct,\n coercer: (value, ctx) => {\n return is(value, condition) ? struct.coercer(coercer(value, ctx), ctx) : struct.coercer(value, ctx);\n }\n });\n}\n/**\n * Augment a struct to replace `undefined` values with a default.\n *\n * Note: You must use `create(value, Struct)` on the value to have the coercion\n * take effect! Using simply `assert()` or `is()` will not use coercion.\n */\n\nfunction defaulted(struct, fallback, options = {}) {\n return coerce(struct, unknown(), x => {\n const f = typeof fallback === 'function' ? fallback() : fallback;\n\n if (x === undefined) {\n return f;\n }\n\n if (!options.strict && isPlainObject(x) && isPlainObject(f)) {\n const ret = { ...x\n };\n let changed = false;\n\n for (const key in f) {\n if (ret[key] === undefined) {\n ret[key] = f[key];\n changed = true;\n }\n }\n\n if (changed) {\n return ret;\n }\n }\n\n return x;\n });\n}\n/**\n * Augment a struct to trim string inputs.\n *\n * Note: You must use `create(value, Struct)` on the value to have the coercion\n * take effect! Using simply `assert()` or `is()` will not use coercion.\n */\n\nfunction trimmed(struct) {\n return coerce(struct, string(), x => x.trim());\n}\n\n/**\n * Ensure that a string, array, map, or set is empty.\n */\n\nfunction empty(struct) {\n const expected = \"Expected an empty \" + struct.type;\n return refine(struct, 'empty', value => {\n if (value instanceof Map || value instanceof Set) {\n const {\n size\n } = value;\n return size === 0 || expected + \" but received one with a size of `\" + size + \"`\";\n } else {\n const {\n length\n } = value;\n return length === 0 || expected + \" but received one with a length of `\" + length + \"`\";\n }\n });\n}\n/**\n * Ensure that a number or date is below a threshold.\n */\n\nfunction max(struct, threshold, options = {}) {\n const {\n exclusive\n } = options;\n return refine(struct, 'max', value => {\n return exclusive ? value < threshold : value <= threshold || \"Expected a \" + struct.type + \" greater than \" + (exclusive ? '' : 'or equal to ') + threshold + \" but received `\" + value + \"`\";\n });\n}\n/**\n * Ensure that a number or date is above a threshold.\n */\n\nfunction min(struct, threshold, options = {}) {\n const {\n exclusive\n } = options;\n return refine(struct, 'min', value => {\n return exclusive ? value > threshold : value >= threshold || \"Expected a \" + struct.type + \" greater than \" + (exclusive ? '' : 'or equal to ') + threshold + \" but received `\" + value + \"`\";\n });\n}\n/**\n * Ensure that a string matches a regular expression.\n */\n\nfunction pattern(struct, regexp) {\n return refine(struct, 'pattern', value => {\n return regexp.test(value) || \"Expected a \" + struct.type + \" matching `/\" + regexp.source + \"/` but received \\\"\" + value + \"\\\"\";\n });\n}\n/**\n * Ensure that a string, array, number, date, map, or set has a size (or length, or time) between `min` and `max`.\n */\n\nfunction size(struct, min, max = min) {\n const expected = \"Expected a \" + struct.type;\n const of = min === max ? \"of `\" + min + \"`\" : \"between `\" + min + \"` and `\" + max + \"`\";\n return refine(struct, 'size', value => {\n if (typeof value === 'number' || value instanceof Date) {\n return min <= value && value <= max || expected + \" \" + of + \" but received `\" + value + \"`\";\n } else if (value instanceof Map || value instanceof Set) {\n const {\n size\n } = value;\n return min <= size && size <= max || expected + \" with a size \" + of + \" but received one with a size of `\" + size + \"`\";\n } else {\n const {\n length\n } = value;\n return min <= length && length <= max || expected + \" with a length \" + of + \" but received one with a length of `\" + length + \"`\";\n }\n });\n}\n/**\n * Augment a `Struct` to add an additional refinement to the validation.\n *\n * The refiner function is guaranteed to receive a value of the struct's type,\n * because the struct's existing validation will already have passed. This\n * allows you to layer additional validation on top of existing structs.\n */\n\nfunction refine(struct, name, refiner) {\n return new Struct({ ...struct,\n\n *refiner(value, ctx) {\n yield* struct.refiner(value, ctx);\n const result = refiner(value, ctx);\n const failures = toFailures(result, ctx, struct, value);\n\n for (const failure of failures) {\n yield { ...failure,\n refinement: name\n };\n }\n }\n\n });\n}\n\nexport { Struct, StructError, any, array, assert, assign, boolean, coerce, create, date, defaulted, define, deprecated, dynamic, empty, enums, func, instance, integer, intersection, is, lazy, literal, map, mask, max, min, never, nullable, number, object, omit, optional, partial, pattern, pick, record, refine, regexp, set, size, string, struct, trimmed, tuple, type, union, unknown, validate };\n//# sourceMappingURL=index.es.js.map\n","import assert from './_assert.js';\nimport u64 from './_u64.js';\nimport { Hash, u32, toBytes, wrapConstructor, wrapConstructorWithOpts, } from './utils.js';\n// Various per round constants calculations\nconst [SHA3_PI, SHA3_ROTL, _SHA3_IOTA] = [[], [], []];\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _7n = BigInt(7);\nconst _256n = BigInt(256);\nconst _0x71n = BigInt(0x71);\nfor (let round = 0, R = _1n, x = 1, y = 0; round < 24; round++) {\n // Pi\n [x, y] = [y, (2 * x + 3 * y) % 5];\n SHA3_PI.push(2 * (5 * y + x));\n // Rotational\n SHA3_ROTL.push((((round + 1) * (round + 2)) / 2) % 64);\n // Iota\n let t = _0n;\n for (let j = 0; j < 7; j++) {\n R = ((R << _1n) ^ ((R >> _7n) * _0x71n)) % _256n;\n if (R & _2n)\n t ^= _1n << ((_1n << BigInt(j)) - _1n);\n }\n _SHA3_IOTA.push(t);\n}\nconst [SHA3_IOTA_H, SHA3_IOTA_L] = u64.split(_SHA3_IOTA, true);\n// Left rotation (without 0, 32, 64)\nconst rotlH = (h, l, s) => s > 32 ? u64.rotlBH(h, l, s) : u64.rotlSH(h, l, s);\nconst rotlL = (h, l, s) => s > 32 ? u64.rotlBL(h, l, s) : u64.rotlSL(h, l, s);\n// Same as keccakf1600, but allows to skip some rounds\nexport function keccakP(s, rounds = 24) {\n const B = new Uint32Array(5 * 2);\n // NOTE: all indices are x2 since we store state as u32 instead of u64 (bigints to slow in js)\n for (let round = 24 - rounds; round < 24; round++) {\n // Theta θ\n for (let x = 0; x < 10; x++)\n B[x] = s[x] ^ s[x + 10] ^ s[x + 20] ^ s[x + 30] ^ s[x + 40];\n for (let x = 0; x < 10; x += 2) {\n const idx1 = (x + 8) % 10;\n const idx0 = (x + 2) % 10;\n const B0 = B[idx0];\n const B1 = B[idx0 + 1];\n const Th = rotlH(B0, B1, 1) ^ B[idx1];\n const Tl = rotlL(B0, B1, 1) ^ B[idx1 + 1];\n for (let y = 0; y < 50; y += 10) {\n s[x + y] ^= Th;\n s[x + y + 1] ^= Tl;\n }\n }\n // Rho (ρ) and Pi (π)\n let curH = s[2];\n let curL = s[3];\n for (let t = 0; t < 24; t++) {\n const shift = SHA3_ROTL[t];\n const Th = rotlH(curH, curL, shift);\n const Tl = rotlL(curH, curL, shift);\n const PI = SHA3_PI[t];\n curH = s[PI];\n curL = s[PI + 1];\n s[PI] = Th;\n s[PI + 1] = Tl;\n }\n // Chi (χ)\n for (let y = 0; y < 50; y += 10) {\n for (let x = 0; x < 10; x++)\n B[x] = s[y + x];\n for (let x = 0; x < 10; x++)\n s[y + x] ^= ~B[(x + 2) % 10] & B[(x + 4) % 10];\n }\n // Iota (ι)\n s[0] ^= SHA3_IOTA_H[round];\n s[1] ^= SHA3_IOTA_L[round];\n }\n B.fill(0);\n}\nexport class Keccak extends Hash {\n // NOTE: we accept arguments in bytes instead of bits here.\n constructor(blockLen, suffix, outputLen, enableXOF = false, rounds = 24) {\n super();\n this.blockLen = blockLen;\n this.suffix = suffix;\n this.outputLen = outputLen;\n this.enableXOF = enableXOF;\n this.rounds = rounds;\n this.pos = 0;\n this.posOut = 0;\n this.finished = false;\n this.destroyed = false;\n // Can be passed from user as dkLen\n assert.number(outputLen);\n // 1600 = 5x5 matrix of 64bit. 1600 bits === 200 bytes\n if (0 >= this.blockLen || this.blockLen >= 200)\n throw new Error('Sha3 supports only keccak-f1600 function');\n this.state = new Uint8Array(200);\n this.state32 = u32(this.state);\n }\n keccak() {\n keccakP(this.state32, this.rounds);\n this.posOut = 0;\n this.pos = 0;\n }\n update(data) {\n assert.exists(this);\n const { blockLen, state } = this;\n data = toBytes(data);\n const len = data.length;\n for (let pos = 0; pos < len;) {\n const take = Math.min(blockLen - this.pos, len - pos);\n for (let i = 0; i < take; i++)\n state[this.pos++] ^= data[pos++];\n if (this.pos === blockLen)\n this.keccak();\n }\n return this;\n }\n finish() {\n if (this.finished)\n return;\n this.finished = true;\n const { state, suffix, pos, blockLen } = this;\n // Do the padding\n state[pos] ^= suffix;\n if ((suffix & 0x80) !== 0 && pos === blockLen - 1)\n this.keccak();\n state[blockLen - 1] ^= 0x80;\n this.keccak();\n }\n writeInto(out) {\n assert.exists(this, false);\n assert.bytes(out);\n this.finish();\n const bufferOut = this.state;\n const { blockLen } = this;\n for (let pos = 0, len = out.length; pos < len;) {\n if (this.posOut >= blockLen)\n this.keccak();\n const take = Math.min(blockLen - this.posOut, len - pos);\n out.set(bufferOut.subarray(this.posOut, this.posOut + take), pos);\n this.posOut += take;\n pos += take;\n }\n return out;\n }\n xofInto(out) {\n // Sha3/Keccak usage with XOF is probably mistake, only SHAKE instances can do XOF\n if (!this.enableXOF)\n throw new Error('XOF is not possible for this instance');\n return this.writeInto(out);\n }\n xof(bytes) {\n assert.number(bytes);\n return this.xofInto(new Uint8Array(bytes));\n }\n digestInto(out) {\n assert.output(out, this);\n if (this.finished)\n throw new Error('digest() was already called');\n this.writeInto(out);\n this.destroy();\n return out;\n }\n digest() {\n return this.digestInto(new Uint8Array(this.outputLen));\n }\n destroy() {\n this.destroyed = true;\n this.state.fill(0);\n }\n _cloneInto(to) {\n const { blockLen, suffix, outputLen, rounds, enableXOF } = this;\n to || (to = new Keccak(blockLen, suffix, outputLen, enableXOF, rounds));\n to.state32.set(this.state32);\n to.pos = this.pos;\n to.posOut = this.posOut;\n to.finished = this.finished;\n to.rounds = rounds;\n // Suffix can change in cSHAKE\n to.suffix = suffix;\n to.outputLen = outputLen;\n to.enableXOF = enableXOF;\n to.destroyed = this.destroyed;\n return to;\n }\n}\nconst gen = (suffix, blockLen, outputLen) => wrapConstructor(() => new Keccak(blockLen, suffix, outputLen));\nexport const sha3_224 = gen(0x06, 144, 224 / 8);\n/**\n * SHA3-256 hash function\n * @param message - that would be hashed\n */\nexport const sha3_256 = gen(0x06, 136, 256 / 8);\nexport const sha3_384 = gen(0x06, 104, 384 / 8);\nexport const sha3_512 = gen(0x06, 72, 512 / 8);\nexport const keccak_224 = gen(0x01, 144, 224 / 8);\n/**\n * keccak-256 hash function. Different from SHA3-256.\n * @param message - that would be hashed\n */\nexport const keccak_256 = gen(0x01, 136, 256 / 8);\nexport const keccak_384 = gen(0x01, 104, 384 / 8);\nexport const keccak_512 = gen(0x01, 72, 512 / 8);\nconst genShake = (suffix, blockLen, outputLen) => wrapConstructorWithOpts((opts = {}) => new Keccak(blockLen, suffix, opts.dkLen === undefined ? outputLen : opts.dkLen, true));\nexport const shake128 = genShake(0x1f, 168, 128 / 8);\nexport const shake256 = genShake(0x1f, 136, 256 / 8);\n","import assert from './_assert.js';\nimport { Hash, toBytes } from './utils.js';\n// HMAC (RFC 2104)\nclass HMAC extends Hash {\n constructor(hash, _key) {\n super();\n this.finished = false;\n this.destroyed = false;\n assert.hash(hash);\n const key = toBytes(_key);\n this.iHash = hash.create();\n if (typeof this.iHash.update !== 'function')\n throw new TypeError('Expected instance of class which extends utils.Hash');\n this.blockLen = this.iHash.blockLen;\n this.outputLen = this.iHash.outputLen;\n const blockLen = this.blockLen;\n const pad = new Uint8Array(blockLen);\n // blockLen can be bigger than outputLen\n pad.set(key.length > blockLen ? hash.create().update(key).digest() : key);\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36;\n this.iHash.update(pad);\n // By doing update (processing of first block) of outer hash here we can re-use it between multiple calls via clone\n this.oHash = hash.create();\n // Undo internal XOR && apply outer XOR\n for (let i = 0; i < pad.length; i++)\n pad[i] ^= 0x36 ^ 0x5c;\n this.oHash.update(pad);\n pad.fill(0);\n }\n update(buf) {\n assert.exists(this);\n this.iHash.update(buf);\n return this;\n }\n digestInto(out) {\n assert.exists(this);\n assert.bytes(out, this.outputLen);\n this.finished = true;\n this.iHash.digestInto(out);\n this.oHash.update(out);\n this.oHash.digestInto(out);\n this.destroy();\n }\n digest() {\n const out = new Uint8Array(this.oHash.outputLen);\n this.digestInto(out);\n return out;\n }\n _cloneInto(to) {\n // Create new instance without calling constructor since key already in state and we don't know it.\n to || (to = Object.create(Object.getPrototypeOf(this), {}));\n const { oHash, iHash, finished, destroyed, blockLen, outputLen } = this;\n to = to;\n to.finished = finished;\n to.destroyed = destroyed;\n to.blockLen = blockLen;\n to.outputLen = outputLen;\n to.oHash = oHash._cloneInto(to.oHash);\n to.iHash = iHash._cloneInto(to.iHash);\n return to;\n }\n destroy() {\n this.destroyed = true;\n this.oHash.destroy();\n this.iHash.destroy();\n }\n}\n/**\n * HMAC: RFC2104 message authentication code.\n * @param hash - function that would be used e.g. sha256\n * @param key - message key\n * @param message - message data\n */\nexport const hmac = (hash, key, message) => new HMAC(hash, key).update(message).digest();\nhmac.create = (hash, key) => new HMAC(hash, key);\n","/*! noble-secp256k1 - MIT License (c) 2019 Paul Miller (paulmillr.com) */\nimport * as nodeCrypto from 'crypto';\nconst _0n = BigInt(0);\nconst _1n = BigInt(1);\nconst _2n = BigInt(2);\nconst _3n = BigInt(3);\nconst _8n = BigInt(8);\nconst CURVE = Object.freeze({\n a: _0n,\n b: BigInt(7),\n P: BigInt('0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f'),\n n: BigInt('0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141'),\n h: _1n,\n Gx: BigInt('55066263022277343669578718895168534326250603453777594175500187360389116729240'),\n Gy: BigInt('32670510020758816978083085130507043184471273380659243275938904335757337482424'),\n beta: BigInt('0x7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee'),\n});\nexport { CURVE };\nfunction weistrass(x) {\n const { a, b } = CURVE;\n const x2 = mod(x * x);\n const x3 = mod(x2 * x);\n return mod(x3 + a * x + b);\n}\nconst USE_ENDOMORPHISM = CURVE.a === _0n;\nclass ShaError extends Error {\n constructor(message) {\n super(message);\n }\n}\nclass JacobianPoint {\n constructor(x, y, z) {\n this.x = x;\n this.y = y;\n this.z = z;\n }\n static fromAffine(p) {\n if (!(p instanceof Point)) {\n throw new TypeError('JacobianPoint#fromAffine: expected Point');\n }\n return new JacobianPoint(p.x, p.y, _1n);\n }\n static toAffineBatch(points) {\n const toInv = invertBatch(points.map((p) => p.z));\n return points.map((p, i) => p.toAffine(toInv[i]));\n }\n static normalizeZ(points) {\n return JacobianPoint.toAffineBatch(points).map(JacobianPoint.fromAffine);\n }\n equals(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n const Z1Z1 = mod(Z1 * Z1);\n const Z2Z2 = mod(Z2 * Z2);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n return U1 === U2 && S1 === S2;\n }\n negate() {\n return new JacobianPoint(this.x, mod(-this.y), this.z);\n }\n double() {\n const { x: X1, y: Y1, z: Z1 } = this;\n const A = mod(X1 * X1);\n const B = mod(Y1 * Y1);\n const C = mod(B * B);\n const x1b = X1 + B;\n const D = mod(_2n * (mod(x1b * x1b) - A - C));\n const E = mod(_3n * A);\n const F = mod(E * E);\n const X3 = mod(F - _2n * D);\n const Y3 = mod(E * (D - X3) - _8n * C);\n const Z3 = mod(_2n * Y1 * Z1);\n return new JacobianPoint(X3, Y3, Z3);\n }\n add(other) {\n if (!(other instanceof JacobianPoint))\n throw new TypeError('JacobianPoint expected');\n const { x: X1, y: Y1, z: Z1 } = this;\n const { x: X2, y: Y2, z: Z2 } = other;\n if (X2 === _0n || Y2 === _0n)\n return this;\n if (X1 === _0n || Y1 === _0n)\n return other;\n const Z1Z1 = mod(Z1 * Z1);\n const Z2Z2 = mod(Z2 * Z2);\n const U1 = mod(X1 * Z2Z2);\n const U2 = mod(X2 * Z1Z1);\n const S1 = mod(mod(Y1 * Z2) * Z2Z2);\n const S2 = mod(mod(Y2 * Z1) * Z1Z1);\n const H = mod(U2 - U1);\n const r = mod(S2 - S1);\n if (H === _0n) {\n if (r === _0n) {\n return this.double();\n }\n else {\n return JacobianPoint.ZERO;\n }\n }\n const HH = mod(H * H);\n const HHH = mod(H * HH);\n const V = mod(U1 * HH);\n const X3 = mod(r * r - HHH - _2n * V);\n const Y3 = mod(r * (V - X3) - S1 * HHH);\n const Z3 = mod(Z1 * Z2 * H);\n return new JacobianPoint(X3, Y3, Z3);\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiplyUnsafe(scalar) {\n const P0 = JacobianPoint.ZERO;\n if (typeof scalar === 'bigint' && scalar === _0n)\n return P0;\n let n = normalizeScalar(scalar);\n if (n === _1n)\n return this;\n if (!USE_ENDOMORPHISM) {\n let p = P0;\n let d = this;\n while (n > _0n) {\n if (n & _1n)\n p = p.add(d);\n d = d.double();\n n >>= _1n;\n }\n return p;\n }\n let { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let k1p = P0;\n let k2p = P0;\n let d = this;\n while (k1 > _0n || k2 > _0n) {\n if (k1 & _1n)\n k1p = k1p.add(d);\n if (k2 & _1n)\n k2p = k2p.add(d);\n d = d.double();\n k1 >>= _1n;\n k2 >>= _1n;\n }\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n return k1p.add(k2p);\n }\n precomputeWindow(W) {\n const windows = USE_ENDOMORPHISM ? 128 / W + 1 : 256 / W + 1;\n const points = [];\n let p = this;\n let base = p;\n for (let window = 0; window < windows; window++) {\n base = p;\n points.push(base);\n for (let i = 1; i < 2 ** (W - 1); i++) {\n base = base.add(p);\n points.push(base);\n }\n p = base.double();\n }\n return points;\n }\n wNAF(n, affinePoint) {\n if (!affinePoint && this.equals(JacobianPoint.BASE))\n affinePoint = Point.BASE;\n const W = (affinePoint && affinePoint._WINDOW_SIZE) || 1;\n if (256 % W) {\n throw new Error('Point#wNAF: Invalid precomputation window, must be power of 2');\n }\n let precomputes = affinePoint && pointPrecomputes.get(affinePoint);\n if (!precomputes) {\n precomputes = this.precomputeWindow(W);\n if (affinePoint && W !== 1) {\n precomputes = JacobianPoint.normalizeZ(precomputes);\n pointPrecomputes.set(affinePoint, precomputes);\n }\n }\n let p = JacobianPoint.ZERO;\n let f = JacobianPoint.ZERO;\n const windows = 1 + (USE_ENDOMORPHISM ? 128 / W : 256 / W);\n const windowSize = 2 ** (W - 1);\n const mask = BigInt(2 ** W - 1);\n const maxNumber = 2 ** W;\n const shiftBy = BigInt(W);\n for (let window = 0; window < windows; window++) {\n const offset = window * windowSize;\n let wbits = Number(n & mask);\n n >>= shiftBy;\n if (wbits > windowSize) {\n wbits -= maxNumber;\n n += _1n;\n }\n if (wbits === 0) {\n let pr = precomputes[offset];\n if (window % 2)\n pr = pr.negate();\n f = f.add(pr);\n }\n else {\n let cached = precomputes[offset + Math.abs(wbits) - 1];\n if (wbits < 0)\n cached = cached.negate();\n p = p.add(cached);\n }\n }\n return { p, f };\n }\n multiply(scalar, affinePoint) {\n let n = normalizeScalar(scalar);\n let point;\n let fake;\n if (USE_ENDOMORPHISM) {\n const { k1neg, k1, k2neg, k2 } = splitScalarEndo(n);\n let { p: k1p, f: f1p } = this.wNAF(k1, affinePoint);\n let { p: k2p, f: f2p } = this.wNAF(k2, affinePoint);\n if (k1neg)\n k1p = k1p.negate();\n if (k2neg)\n k2p = k2p.negate();\n k2p = new JacobianPoint(mod(k2p.x * CURVE.beta), k2p.y, k2p.z);\n point = k1p.add(k2p);\n fake = f1p.add(f2p);\n }\n else {\n const { p, f } = this.wNAF(n, affinePoint);\n point = p;\n fake = f;\n }\n return JacobianPoint.normalizeZ([point, fake])[0];\n }\n toAffine(invZ = invert(this.z)) {\n const { x, y, z } = this;\n const iz1 = invZ;\n const iz2 = mod(iz1 * iz1);\n const iz3 = mod(iz2 * iz1);\n const ax = mod(x * iz2);\n const ay = mod(y * iz3);\n const zz = mod(z * iz1);\n if (zz !== _1n)\n throw new Error('invZ was invalid');\n return new Point(ax, ay);\n }\n}\nJacobianPoint.BASE = new JacobianPoint(CURVE.Gx, CURVE.Gy, _1n);\nJacobianPoint.ZERO = new JacobianPoint(_0n, _1n, _0n);\nconst pointPrecomputes = new WeakMap();\nexport class Point {\n constructor(x, y) {\n this.x = x;\n this.y = y;\n }\n _setWindowSize(windowSize) {\n this._WINDOW_SIZE = windowSize;\n pointPrecomputes.delete(this);\n }\n hasEvenY() {\n return this.y % _2n === _0n;\n }\n static fromCompressedHex(bytes) {\n const isShort = bytes.length === 32;\n const x = bytesToNumber(isShort ? bytes : bytes.subarray(1));\n if (!isValidFieldElement(x))\n throw new Error('Point is not on curve');\n const y2 = weistrass(x);\n let y = sqrtMod(y2);\n const isYOdd = (y & _1n) === _1n;\n if (isShort) {\n if (isYOdd)\n y = mod(-y);\n }\n else {\n const isFirstByteOdd = (bytes[0] & 1) === 1;\n if (isFirstByteOdd !== isYOdd)\n y = mod(-y);\n }\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromUncompressedHex(bytes) {\n const x = bytesToNumber(bytes.subarray(1, 33));\n const y = bytesToNumber(bytes.subarray(33, 65));\n const point = new Point(x, y);\n point.assertValidity();\n return point;\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n const len = bytes.length;\n const header = bytes[0];\n if (len === 32 || (len === 33 && (header === 0x02 || header === 0x03))) {\n return this.fromCompressedHex(bytes);\n }\n if (len === 65 && header === 0x04)\n return this.fromUncompressedHex(bytes);\n throw new Error(`Point.fromHex: received invalid point. Expected 32-33 compressed bytes or 65 uncompressed bytes, not ${len}`);\n }\n static fromPrivateKey(privateKey) {\n return Point.BASE.multiply(normalizePrivateKey(privateKey));\n }\n static fromSignature(msgHash, signature, recovery) {\n msgHash = ensureBytes(msgHash);\n const h = truncateHash(msgHash);\n const { r, s } = normalizeSignature(signature);\n if (recovery !== 0 && recovery !== 1) {\n throw new Error('Cannot recover signature: invalid recovery bit');\n }\n const prefix = recovery & 1 ? '03' : '02';\n const R = Point.fromHex(prefix + numTo32bStr(r));\n const { n } = CURVE;\n const rinv = invert(r, n);\n const u1 = mod(-h * rinv, n);\n const u2 = mod(s * rinv, n);\n const Q = Point.BASE.multiplyAndAddUnsafe(R, u1, u2);\n if (!Q)\n throw new Error('Cannot recover signature: point at infinify');\n Q.assertValidity();\n return Q;\n }\n toRawBytes(isCompressed = false) {\n return hexToBytes(this.toHex(isCompressed));\n }\n toHex(isCompressed = false) {\n const x = numTo32bStr(this.x);\n if (isCompressed) {\n const prefix = this.hasEvenY() ? '02' : '03';\n return `${prefix}${x}`;\n }\n else {\n return `04${x}${numTo32bStr(this.y)}`;\n }\n }\n toHexX() {\n return this.toHex(true).slice(2);\n }\n toRawX() {\n return this.toRawBytes(true).slice(1);\n }\n assertValidity() {\n const msg = 'Point is not on elliptic curve';\n const { x, y } = this;\n if (!isValidFieldElement(x) || !isValidFieldElement(y))\n throw new Error(msg);\n const left = mod(y * y);\n const right = weistrass(x);\n if (mod(left - right) !== _0n)\n throw new Error(msg);\n }\n equals(other) {\n return this.x === other.x && this.y === other.y;\n }\n negate() {\n return new Point(this.x, mod(-this.y));\n }\n double() {\n return JacobianPoint.fromAffine(this).double().toAffine();\n }\n add(other) {\n return JacobianPoint.fromAffine(this).add(JacobianPoint.fromAffine(other)).toAffine();\n }\n subtract(other) {\n return this.add(other.negate());\n }\n multiply(scalar) {\n return JacobianPoint.fromAffine(this).multiply(scalar, this).toAffine();\n }\n multiplyAndAddUnsafe(Q, a, b) {\n const P = JacobianPoint.fromAffine(this);\n const aP = a === _0n || a === _1n || this !== Point.BASE ? P.multiplyUnsafe(a) : P.multiply(a);\n const bQ = JacobianPoint.fromAffine(Q).multiplyUnsafe(b);\n const sum = aP.add(bQ);\n return sum.equals(JacobianPoint.ZERO) ? undefined : sum.toAffine();\n }\n}\nPoint.BASE = new Point(CURVE.Gx, CURVE.Gy);\nPoint.ZERO = new Point(_0n, _0n);\nfunction sliceDER(s) {\n return Number.parseInt(s[0], 16) >= 8 ? '00' + s : s;\n}\nfunction parseDERInt(data) {\n if (data.length < 2 || data[0] !== 0x02) {\n throw new Error(`Invalid signature integer tag: ${bytesToHex(data)}`);\n }\n const len = data[1];\n const res = data.subarray(2, len + 2);\n if (!len || res.length !== len) {\n throw new Error(`Invalid signature integer: wrong length`);\n }\n if (res[0] === 0x00 && res[1] <= 0x7f) {\n throw new Error('Invalid signature integer: trailing length');\n }\n return { data: bytesToNumber(res), left: data.subarray(len + 2) };\n}\nfunction parseDERSignature(data) {\n if (data.length < 2 || data[0] != 0x30) {\n throw new Error(`Invalid signature tag: ${bytesToHex(data)}`);\n }\n if (data[1] !== data.length - 2) {\n throw new Error('Invalid signature: incorrect length');\n }\n const { data: r, left: sBytes } = parseDERInt(data.subarray(2));\n const { data: s, left: rBytesLeft } = parseDERInt(sBytes);\n if (rBytesLeft.length) {\n throw new Error(`Invalid signature: left bytes after parsing: ${bytesToHex(rBytesLeft)}`);\n }\n return { r, s };\n}\nexport class Signature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromCompact(hex) {\n const arr = hex instanceof Uint8Array;\n const name = 'Signature.fromCompact';\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`${name}: Expected string or Uint8Array`);\n const str = arr ? bytesToHex(hex) : hex;\n if (str.length !== 128)\n throw new Error(`${name}: Expected 64-byte hex`);\n return new Signature(hexToNumber(str.slice(0, 64)), hexToNumber(str.slice(64, 128)));\n }\n static fromDER(hex) {\n const arr = hex instanceof Uint8Array;\n if (typeof hex !== 'string' && !arr)\n throw new TypeError(`Signature.fromDER: Expected string or Uint8Array`);\n const { r, s } = parseDERSignature(arr ? hex : hexToBytes(hex));\n return new Signature(r, s);\n }\n static fromHex(hex) {\n return this.fromDER(hex);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isWithinCurveOrder(r))\n throw new Error('Invalid Signature: r must be 0 < r < n');\n if (!isWithinCurveOrder(s))\n throw new Error('Invalid Signature: s must be 0 < s < n');\n }\n hasHighS() {\n const HALF = CURVE.n >> _1n;\n return this.s > HALF;\n }\n normalizeS() {\n return this.hasHighS() ? new Signature(this.r, CURVE.n - this.s) : this;\n }\n toDERRawBytes(isCompressed = false) {\n return hexToBytes(this.toDERHex(isCompressed));\n }\n toDERHex(isCompressed = false) {\n const sHex = sliceDER(numberToHexUnpadded(this.s));\n if (isCompressed)\n return sHex;\n const rHex = sliceDER(numberToHexUnpadded(this.r));\n const rLen = numberToHexUnpadded(rHex.length / 2);\n const sLen = numberToHexUnpadded(sHex.length / 2);\n const length = numberToHexUnpadded(rHex.length / 2 + sHex.length / 2 + 4);\n return `30${length}02${rLen}${rHex}02${sLen}${sHex}`;\n }\n toRawBytes() {\n return this.toDERRawBytes();\n }\n toHex() {\n return this.toDERHex();\n }\n toCompactRawBytes() {\n return hexToBytes(this.toCompactHex());\n }\n toCompactHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n}\nfunction concatBytes(...arrays) {\n if (!arrays.every((b) => b instanceof Uint8Array))\n throw new Error('Uint8Array list expected');\n if (arrays.length === 1)\n return arrays[0];\n const length = arrays.reduce((a, arr) => a + arr.length, 0);\n const result = new Uint8Array(length);\n for (let i = 0, pad = 0; i < arrays.length; i++) {\n const arr = arrays[i];\n result.set(arr, pad);\n pad += arr.length;\n }\n return result;\n}\nconst hexes = Array.from({ length: 256 }, (v, i) => i.toString(16).padStart(2, '0'));\nfunction bytesToHex(uint8a) {\n if (!(uint8a instanceof Uint8Array))\n throw new Error('Expected Uint8Array');\n let hex = '';\n for (let i = 0; i < uint8a.length; i++) {\n hex += hexes[uint8a[i]];\n }\n return hex;\n}\nconst POW_2_256 = BigInt('0x10000000000000000000000000000000000000000000000000000000000000000');\nfunction numTo32bStr(num) {\n if (typeof num !== 'bigint')\n throw new Error('Expected bigint');\n if (!(_0n <= num && num < POW_2_256))\n throw new Error('Expected number < 2^256');\n return num.toString(16).padStart(64, '0');\n}\nfunction numTo32b(num) {\n const b = hexToBytes(numTo32bStr(num));\n if (b.length !== 32)\n throw new Error('Error: expected 32 bytes');\n return b;\n}\nfunction numberToHexUnpadded(num) {\n const hex = num.toString(16);\n return hex.length & 1 ? `0${hex}` : hex;\n}\nfunction hexToNumber(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToNumber: expected string, got ' + typeof hex);\n }\n return BigInt(`0x${hex}`);\n}\nfunction hexToBytes(hex) {\n if (typeof hex !== 'string') {\n throw new TypeError('hexToBytes: expected string, got ' + typeof hex);\n }\n if (hex.length % 2)\n throw new Error('hexToBytes: received invalid unpadded hex' + hex.length);\n const array = new Uint8Array(hex.length / 2);\n for (let i = 0; i < array.length; i++) {\n const j = i * 2;\n const hexByte = hex.slice(j, j + 2);\n const byte = Number.parseInt(hexByte, 16);\n if (Number.isNaN(byte) || byte < 0)\n throw new Error('Invalid byte sequence');\n array[i] = byte;\n }\n return array;\n}\nfunction bytesToNumber(bytes) {\n return hexToNumber(bytesToHex(bytes));\n}\nfunction ensureBytes(hex) {\n return hex instanceof Uint8Array ? Uint8Array.from(hex) : hexToBytes(hex);\n}\nfunction normalizeScalar(num) {\n if (typeof num === 'number' && Number.isSafeInteger(num) && num > 0)\n return BigInt(num);\n if (typeof num === 'bigint' && isWithinCurveOrder(num))\n return num;\n throw new TypeError('Expected valid private scalar: 0 < scalar < curve.n');\n}\nfunction mod(a, b = CURVE.P) {\n const result = a % b;\n return result >= _0n ? result : b + result;\n}\nfunction pow2(x, power) {\n const { P } = CURVE;\n let res = x;\n while (power-- > _0n) {\n res *= res;\n res %= P;\n }\n return res;\n}\nfunction sqrtMod(x) {\n const { P } = CURVE;\n const _6n = BigInt(6);\n const _11n = BigInt(11);\n const _22n = BigInt(22);\n const _23n = BigInt(23);\n const _44n = BigInt(44);\n const _88n = BigInt(88);\n const b2 = (x * x * x) % P;\n const b3 = (b2 * b2 * x) % P;\n const b6 = (pow2(b3, _3n) * b3) % P;\n const b9 = (pow2(b6, _3n) * b3) % P;\n const b11 = (pow2(b9, _2n) * b2) % P;\n const b22 = (pow2(b11, _11n) * b11) % P;\n const b44 = (pow2(b22, _22n) * b22) % P;\n const b88 = (pow2(b44, _44n) * b44) % P;\n const b176 = (pow2(b88, _88n) * b88) % P;\n const b220 = (pow2(b176, _44n) * b44) % P;\n const b223 = (pow2(b220, _3n) * b3) % P;\n const t1 = (pow2(b223, _23n) * b22) % P;\n const t2 = (pow2(t1, _6n) * b2) % P;\n return pow2(t2, _2n);\n}\nfunction invert(number, modulo = CURVE.P) {\n if (number === _0n || modulo <= _0n) {\n throw new Error(`invert: expected positive integers, got n=${number} mod=${modulo}`);\n }\n let a = mod(number, modulo);\n let b = modulo;\n let x = _0n, y = _1n, u = _1n, v = _0n;\n while (a !== _0n) {\n const q = b / a;\n const r = b % a;\n const m = x - u * q;\n const n = y - v * q;\n b = a, a = r, x = u, y = v, u = m, v = n;\n }\n const gcd = b;\n if (gcd !== _1n)\n throw new Error('invert: does not exist');\n return mod(x, modulo);\n}\nfunction invertBatch(nums, p = CURVE.P) {\n const scratch = new Array(nums.length);\n const lastMultiplied = nums.reduce((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = acc;\n return mod(acc * num, p);\n }, _1n);\n const inverted = invert(lastMultiplied, p);\n nums.reduceRight((acc, num, i) => {\n if (num === _0n)\n return acc;\n scratch[i] = mod(acc * scratch[i], p);\n return mod(acc * num, p);\n }, inverted);\n return scratch;\n}\nconst divNearest = (a, b) => (a + b / _2n) / b;\nconst ENDO = {\n a1: BigInt('0x3086d221a7d46bcde86c90e49284eb15'),\n b1: -_1n * BigInt('0xe4437ed6010e88286f547fa90abfe4c3'),\n a2: BigInt('0x114ca50f7a8e2f3f657c1108d9d44cfd8'),\n b2: BigInt('0x3086d221a7d46bcde86c90e49284eb15'),\n POW_2_128: BigInt('0x100000000000000000000000000000000'),\n};\nfunction splitScalarEndo(k) {\n const { n } = CURVE;\n const { a1, b1, a2, b2, POW_2_128 } = ENDO;\n const c1 = divNearest(b2 * k, n);\n const c2 = divNearest(-b1 * k, n);\n let k1 = mod(k - c1 * a1 - c2 * a2, n);\n let k2 = mod(-c1 * b1 - c2 * b2, n);\n const k1neg = k1 > POW_2_128;\n const k2neg = k2 > POW_2_128;\n if (k1neg)\n k1 = n - k1;\n if (k2neg)\n k2 = n - k2;\n if (k1 > POW_2_128 || k2 > POW_2_128) {\n throw new Error('splitScalarEndo: Endomorphism failed, k=' + k);\n }\n return { k1neg, k1, k2neg, k2 };\n}\nfunction truncateHash(hash) {\n const { n } = CURVE;\n const byteLength = hash.length;\n const delta = byteLength * 8 - 256;\n let h = bytesToNumber(hash);\n if (delta > 0)\n h = h >> BigInt(delta);\n if (h >= n)\n h -= n;\n return h;\n}\nlet _sha256Sync;\nlet _hmacSha256Sync;\nclass HmacDrbg {\n constructor() {\n this.v = new Uint8Array(32).fill(1);\n this.k = new Uint8Array(32).fill(0);\n this.counter = 0;\n }\n hmac(...values) {\n return utils.hmacSha256(this.k, ...values);\n }\n hmacSync(...values) {\n return _hmacSha256Sync(this.k, ...values);\n }\n checkSync() {\n if (typeof _hmacSha256Sync !== 'function')\n throw new ShaError('hmacSha256Sync needs to be set');\n }\n incr() {\n if (this.counter >= 1000)\n throw new Error('Tried 1,000 k values for sign(), all were invalid');\n this.counter += 1;\n }\n async reseed(seed = new Uint8Array()) {\n this.k = await this.hmac(this.v, Uint8Array.from([0x00]), seed);\n this.v = await this.hmac(this.v);\n if (seed.length === 0)\n return;\n this.k = await this.hmac(this.v, Uint8Array.from([0x01]), seed);\n this.v = await this.hmac(this.v);\n }\n reseedSync(seed = new Uint8Array()) {\n this.checkSync();\n this.k = this.hmacSync(this.v, Uint8Array.from([0x00]), seed);\n this.v = this.hmacSync(this.v);\n if (seed.length === 0)\n return;\n this.k = this.hmacSync(this.v, Uint8Array.from([0x01]), seed);\n this.v = this.hmacSync(this.v);\n }\n async generate() {\n this.incr();\n this.v = await this.hmac(this.v);\n return this.v;\n }\n generateSync() {\n this.checkSync();\n this.incr();\n this.v = this.hmacSync(this.v);\n return this.v;\n }\n}\nfunction isWithinCurveOrder(num) {\n return _0n < num && num < CURVE.n;\n}\nfunction isValidFieldElement(num) {\n return _0n < num && num < CURVE.P;\n}\nfunction kmdToSig(kBytes, m, d) {\n const k = bytesToNumber(kBytes);\n if (!isWithinCurveOrder(k))\n return;\n const { n } = CURVE;\n const q = Point.BASE.multiply(k);\n const r = mod(q.x, n);\n if (r === _0n)\n return;\n const s = mod(invert(k, n) * mod(m + d * r, n), n);\n if (s === _0n)\n return;\n const sig = new Signature(r, s);\n const recovery = (q.x === sig.r ? 0 : 2) | Number(q.y & _1n);\n return { sig, recovery };\n}\nfunction normalizePrivateKey(key) {\n let num;\n if (typeof key === 'bigint') {\n num = key;\n }\n else if (typeof key === 'number' && Number.isSafeInteger(key) && key > 0) {\n num = BigInt(key);\n }\n else if (typeof key === 'string') {\n if (key.length !== 64)\n throw new Error('Expected 32 bytes of private key');\n num = hexToNumber(key);\n }\n else if (key instanceof Uint8Array) {\n if (key.length !== 32)\n throw new Error('Expected 32 bytes of private key');\n num = bytesToNumber(key);\n }\n else {\n throw new TypeError('Expected valid private key');\n }\n if (!isWithinCurveOrder(num))\n throw new Error('Expected private key: 0 < key < n');\n return num;\n}\nfunction normalizePublicKey(publicKey) {\n if (publicKey instanceof Point) {\n publicKey.assertValidity();\n return publicKey;\n }\n else {\n return Point.fromHex(publicKey);\n }\n}\nfunction normalizeSignature(signature) {\n if (signature instanceof Signature) {\n signature.assertValidity();\n return signature;\n }\n try {\n return Signature.fromDER(signature);\n }\n catch (error) {\n return Signature.fromCompact(signature);\n }\n}\nexport function getPublicKey(privateKey, isCompressed = false) {\n return Point.fromPrivateKey(privateKey).toRawBytes(isCompressed);\n}\nexport function recoverPublicKey(msgHash, signature, recovery, isCompressed = false) {\n return Point.fromSignature(msgHash, signature, recovery).toRawBytes(isCompressed);\n}\nfunction isProbPub(item) {\n const arr = item instanceof Uint8Array;\n const str = typeof item === 'string';\n const len = (arr || str) && item.length;\n if (arr)\n return len === 33 || len === 65;\n if (str)\n return len === 66 || len === 130;\n if (item instanceof Point)\n return true;\n return false;\n}\nexport function getSharedSecret(privateA, publicB, isCompressed = false) {\n if (isProbPub(privateA))\n throw new TypeError('getSharedSecret: first arg must be private key');\n if (!isProbPub(publicB))\n throw new TypeError('getSharedSecret: second arg must be public key');\n const b = normalizePublicKey(publicB);\n b.assertValidity();\n return b.multiply(normalizePrivateKey(privateA)).toRawBytes(isCompressed);\n}\nfunction bits2int(bytes) {\n const slice = bytes.length > 32 ? bytes.slice(0, 32) : bytes;\n return bytesToNumber(slice);\n}\nfunction bits2octets(bytes) {\n const z1 = bits2int(bytes);\n const z2 = mod(z1, CURVE.n);\n return int2octets(z2 < _0n ? z1 : z2);\n}\nfunction int2octets(num) {\n return numTo32b(num);\n}\nfunction initSigArgs(msgHash, privateKey, extraEntropy) {\n if (msgHash == null)\n throw new Error(`sign: expected valid message hash, not \"${msgHash}\"`);\n const h1 = ensureBytes(msgHash);\n const d = normalizePrivateKey(privateKey);\n const seedArgs = [int2octets(d), bits2octets(h1)];\n if (extraEntropy != null) {\n if (extraEntropy === true)\n extraEntropy = utils.randomBytes(32);\n const e = ensureBytes(extraEntropy);\n if (e.length !== 32)\n throw new Error('sign: Expected 32 bytes of extra data');\n seedArgs.push(e);\n }\n const seed = concatBytes(...seedArgs);\n const m = bits2int(h1);\n return { seed, m, d };\n}\nfunction finalizeSig(recSig, opts) {\n let { sig, recovery } = recSig;\n const { canonical, der, recovered } = Object.assign({ canonical: true, der: true }, opts);\n if (canonical && sig.hasHighS()) {\n sig = sig.normalizeS();\n recovery ^= 1;\n }\n const hashed = der ? sig.toDERRawBytes() : sig.toCompactRawBytes();\n return recovered ? [hashed, recovery] : hashed;\n}\nasync function sign(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n await drbg.reseed(seed);\n while (!(sig = kmdToSig(await drbg.generate(), m, d)))\n await drbg.reseed();\n return finalizeSig(sig, opts);\n}\nfunction signSync(msgHash, privKey, opts = {}) {\n const { seed, m, d } = initSigArgs(msgHash, privKey, opts.extraEntropy);\n let sig;\n const drbg = new HmacDrbg();\n drbg.reseedSync(seed);\n while (!(sig = kmdToSig(drbg.generateSync(), m, d)))\n drbg.reseedSync();\n return finalizeSig(sig, opts);\n}\nexport { sign, signSync };\nconst vopts = { strict: true };\nexport function verify(signature, msgHash, publicKey, opts = vopts) {\n let sig;\n try {\n sig = normalizeSignature(signature);\n msgHash = ensureBytes(msgHash);\n }\n catch (error) {\n return false;\n }\n const { r, s } = sig;\n if (opts.strict && sig.hasHighS())\n return false;\n const h = truncateHash(msgHash);\n let P;\n try {\n P = normalizePublicKey(publicKey);\n }\n catch (error) {\n return false;\n }\n const { n } = CURVE;\n const sinv = invert(s, n);\n const u1 = mod(h * sinv, n);\n const u2 = mod(r * sinv, n);\n const R = Point.BASE.multiplyAndAddUnsafe(P, u1, u2);\n if (!R)\n return false;\n const v = mod(R.x, n);\n return v === r;\n}\nfunction schnorrChallengeFinalize(ch) {\n return mod(bytesToNumber(ch), CURVE.n);\n}\nclass SchnorrSignature {\n constructor(r, s) {\n this.r = r;\n this.s = s;\n this.assertValidity();\n }\n static fromHex(hex) {\n const bytes = ensureBytes(hex);\n if (bytes.length !== 64)\n throw new TypeError(`SchnorrSignature.fromHex: expected 64 bytes, not ${bytes.length}`);\n const r = bytesToNumber(bytes.subarray(0, 32));\n const s = bytesToNumber(bytes.subarray(32, 64));\n return new SchnorrSignature(r, s);\n }\n assertValidity() {\n const { r, s } = this;\n if (!isValidFieldElement(r) || !isWithinCurveOrder(s))\n throw new Error('Invalid signature');\n }\n toHex() {\n return numTo32bStr(this.r) + numTo32bStr(this.s);\n }\n toRawBytes() {\n return hexToBytes(this.toHex());\n }\n}\nfunction schnorrGetPublicKey(privateKey) {\n return Point.fromPrivateKey(privateKey).toRawX();\n}\nclass InternalSchnorrSignature {\n constructor(message, privateKey, auxRand = utils.randomBytes()) {\n if (message == null)\n throw new TypeError(`sign: Expected valid message, not \"${message}\"`);\n this.m = ensureBytes(message);\n const { x, scalar } = this.getScalar(normalizePrivateKey(privateKey));\n this.px = x;\n this.d = scalar;\n this.rand = ensureBytes(auxRand);\n if (this.rand.length !== 32)\n throw new TypeError('sign: Expected 32 bytes of aux randomness');\n }\n getScalar(priv) {\n const point = Point.fromPrivateKey(priv);\n const scalar = point.hasEvenY() ? priv : CURVE.n - priv;\n return { point, scalar, x: point.toRawX() };\n }\n initNonce(d, t0h) {\n return numTo32b(d ^ bytesToNumber(t0h));\n }\n finalizeNonce(k0h) {\n const k0 = mod(bytesToNumber(k0h), CURVE.n);\n if (k0 === _0n)\n throw new Error('sign: Creation of signature failed. k is zero');\n const { point: R, x: rx, scalar: k } = this.getScalar(k0);\n return { R, rx, k };\n }\n finalizeSig(R, k, e, d) {\n return new SchnorrSignature(R.x, mod(k + e * d, CURVE.n)).toRawBytes();\n }\n error() {\n throw new Error('sign: Invalid signature produced');\n }\n async calc() {\n const { m, d, px, rand } = this;\n const tag = utils.taggedHash;\n const t = this.initNonce(d, await tag(TAGS.aux, rand));\n const { R, rx, k } = this.finalizeNonce(await tag(TAGS.nonce, t, px, m));\n const e = schnorrChallengeFinalize(await tag(TAGS.challenge, rx, px, m));\n const sig = this.finalizeSig(R, k, e, d);\n if (!(await schnorrVerify(sig, m, px)))\n this.error();\n return sig;\n }\n calcSync() {\n const { m, d, px, rand } = this;\n const tag = utils.taggedHashSync;\n const t = this.initNonce(d, tag(TAGS.aux, rand));\n const { R, rx, k } = this.finalizeNonce(tag(TAGS.nonce, t, px, m));\n const e = schnorrChallengeFinalize(tag(TAGS.challenge, rx, px, m));\n const sig = this.finalizeSig(R, k, e, d);\n if (!schnorrVerifySync(sig, m, px))\n this.error();\n return sig;\n }\n}\nasync function schnorrSign(msg, privKey, auxRand) {\n return new InternalSchnorrSignature(msg, privKey, auxRand).calc();\n}\nfunction schnorrSignSync(msg, privKey, auxRand) {\n return new InternalSchnorrSignature(msg, privKey, auxRand).calcSync();\n}\nfunction initSchnorrVerify(signature, message, publicKey) {\n const raw = signature instanceof SchnorrSignature;\n const sig = raw ? signature : SchnorrSignature.fromHex(signature);\n if (raw)\n sig.assertValidity();\n return {\n ...sig,\n m: ensureBytes(message),\n P: normalizePublicKey(publicKey),\n };\n}\nfunction finalizeSchnorrVerify(r, P, s, e) {\n const R = Point.BASE.multiplyAndAddUnsafe(P, normalizePrivateKey(s), mod(-e, CURVE.n));\n if (!R || !R.hasEvenY() || R.x !== r)\n return false;\n return true;\n}\nasync function schnorrVerify(signature, message, publicKey) {\n try {\n const { r, s, m, P } = initSchnorrVerify(signature, message, publicKey);\n const e = schnorrChallengeFinalize(await utils.taggedHash(TAGS.challenge, numTo32b(r), P.toRawX(), m));\n return finalizeSchnorrVerify(r, P, s, e);\n }\n catch (error) {\n return false;\n }\n}\nfunction schnorrVerifySync(signature, message, publicKey) {\n try {\n const { r, s, m, P } = initSchnorrVerify(signature, message, publicKey);\n const e = schnorrChallengeFinalize(utils.taggedHashSync(TAGS.challenge, numTo32b(r), P.toRawX(), m));\n return finalizeSchnorrVerify(r, P, s, e);\n }\n catch (error) {\n if (error instanceof ShaError)\n throw error;\n return false;\n }\n}\nexport const schnorr = {\n Signature: SchnorrSignature,\n getPublicKey: schnorrGetPublicKey,\n sign: schnorrSign,\n verify: schnorrVerify,\n signSync: schnorrSignSync,\n verifySync: schnorrVerifySync,\n};\nPoint.BASE._setWindowSize(8);\nconst crypto = {\n node: nodeCrypto,\n web: typeof self === 'object' && 'crypto' in self ? self.crypto : undefined,\n};\nconst TAGS = {\n challenge: 'BIP0340/challenge',\n aux: 'BIP0340/aux',\n nonce: 'BIP0340/nonce',\n};\nconst TAGGED_HASH_PREFIXES = {};\nexport const utils = {\n bytesToHex,\n hexToBytes,\n concatBytes,\n mod,\n invert,\n isValidPrivateKey(privateKey) {\n try {\n normalizePrivateKey(privateKey);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n _bigintTo32Bytes: numTo32b,\n _normalizePrivateKey: normalizePrivateKey,\n hashToPrivateKey: (hash) => {\n hash = ensureBytes(hash);\n if (hash.length < 40 || hash.length > 1024)\n throw new Error('Expected 40-1024 bytes of private key as per FIPS 186');\n const num = mod(bytesToNumber(hash), CURVE.n - _1n) + _1n;\n return numTo32b(num);\n },\n randomBytes: (bytesLength = 32) => {\n if (crypto.web) {\n return crypto.web.getRandomValues(new Uint8Array(bytesLength));\n }\n else if (crypto.node) {\n const { randomBytes } = crypto.node;\n return Uint8Array.from(randomBytes(bytesLength));\n }\n else {\n throw new Error(\"The environment doesn't have randomBytes function\");\n }\n },\n randomPrivateKey: () => {\n return utils.hashToPrivateKey(utils.randomBytes(40));\n },\n sha256: async (...messages) => {\n if (crypto.web) {\n const buffer = await crypto.web.subtle.digest('SHA-256', concatBytes(...messages));\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHash } = crypto.node;\n const hash = createHash('sha256');\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have sha256 function\");\n }\n },\n hmacSha256: async (key, ...messages) => {\n if (crypto.web) {\n const ckey = await crypto.web.subtle.importKey('raw', key, { name: 'HMAC', hash: { name: 'SHA-256' } }, false, ['sign']);\n const message = concatBytes(...messages);\n const buffer = await crypto.web.subtle.sign('HMAC', ckey, message);\n return new Uint8Array(buffer);\n }\n else if (crypto.node) {\n const { createHmac } = crypto.node;\n const hash = createHmac('sha256', key);\n messages.forEach((m) => hash.update(m));\n return Uint8Array.from(hash.digest());\n }\n else {\n throw new Error(\"The environment doesn't have hmac-sha256 function\");\n }\n },\n sha256Sync: undefined,\n hmacSha256Sync: undefined,\n taggedHash: async (tag, ...messages) => {\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = await utils.sha256(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return utils.sha256(tagP, ...messages);\n },\n taggedHashSync: (tag, ...messages) => {\n if (typeof _sha256Sync !== 'function')\n throw new ShaError('sha256Sync is undefined, you need to set it');\n let tagP = TAGGED_HASH_PREFIXES[tag];\n if (tagP === undefined) {\n const tagH = _sha256Sync(Uint8Array.from(tag, (c) => c.charCodeAt(0)));\n tagP = concatBytes(tagH, tagH);\n TAGGED_HASH_PREFIXES[tag] = tagP;\n }\n return _sha256Sync(tagP, ...messages);\n },\n precompute(windowSize = 8, point = Point.BASE) {\n const cached = point === Point.BASE ? point : new Point(point.x, point.y);\n cached._setWindowSize(windowSize);\n cached.multiply(_3n);\n return cached;\n },\n};\nObject.defineProperties(utils, {\n sha256Sync: {\n configurable: false,\n get() {\n return _sha256Sync;\n },\n set(val) {\n if (!_sha256Sync)\n _sha256Sync = val;\n },\n },\n hmacSha256Sync: {\n configurable: false,\n get() {\n return _hmacSha256Sync;\n },\n set(val) {\n if (!_hmacSha256Sync)\n _hmacSha256Sync = val;\n },\n },\n});\n","import { Buffer } from 'buffer';\nimport { sha512 } from '@noble/hashes/sha512';\nimport * as ed25519 from '@noble/ed25519';\nimport BN from 'bn.js';\nimport bs58 from 'bs58';\nimport { sha256 } from '@noble/hashes/sha256';\nimport { serialize, deserialize, deserializeUnchecked } from 'borsh';\nimport * as BufferLayout from '@solana/buffer-layout';\nimport { blob } from '@solana/buffer-layout';\nimport { toBigIntLE, toBufferLE } from 'bigint-buffer';\nimport { coerce, instance, string, tuple, literal, unknown, union, type, optional, any, number, array, nullable, create, boolean, record, assert as assert$1 } from 'superstruct';\nimport { Client } from 'rpc-websockets';\nimport RpcClient from 'jayson/lib/client/browser';\nimport { keccak_256 } from '@noble/hashes/sha3';\nimport { hmac } from '@noble/hashes/hmac';\nimport * as secp256k1 from '@noble/secp256k1';\n\n/**\n * A 64 byte secret key, the first 32 bytes of which is the\n * private scalar and the last 32 bytes is the public key.\n * Read more: https://blog.mozilla.org/warner/2011/11/29/ed25519-keys/\n */\n\ned25519.utils.sha512Sync = (...m) => sha512(ed25519.utils.concatBytes(...m));\n\nconst generatePrivateKey = ed25519.utils.randomPrivateKey;\nconst generateKeypair = () => {\n const privateScalar = ed25519.utils.randomPrivateKey();\n const publicKey = getPublicKey(privateScalar);\n const secretKey = new Uint8Array(64);\n secretKey.set(privateScalar);\n secretKey.set(publicKey, 32);\n return {\n publicKey,\n secretKey\n };\n};\nconst getPublicKey = ed25519.sync.getPublicKey;\nfunction isOnCurve(publicKey) {\n try {\n ed25519.Point.fromHex(publicKey, true\n /* strict */\n );\n return true;\n } catch {\n return false;\n }\n}\nconst sign = (message, secretKey) => ed25519.sync.sign(message, secretKey.slice(0, 32));\nconst verify = ed25519.sync.verify;\n\nconst toBuffer = arr => {\n if (Buffer.isBuffer(arr)) {\n return arr;\n } else if (arr instanceof Uint8Array) {\n return Buffer.from(arr.buffer, arr.byteOffset, arr.byteLength);\n } else {\n return Buffer.from(arr);\n }\n};\n\nclass Struct {\n constructor(properties) {\n Object.assign(this, properties);\n }\n\n encode() {\n return Buffer.from(serialize(SOLANA_SCHEMA, this));\n }\n\n static decode(data) {\n return deserialize(SOLANA_SCHEMA, this, data);\n }\n\n static decodeUnchecked(data) {\n return deserializeUnchecked(SOLANA_SCHEMA, this, data);\n }\n\n} // Class representing a Rust-compatible enum, since enums are only strings or\n// numbers in pure JS\n\nclass Enum extends Struct {\n constructor(properties) {\n super(properties);\n this.enum = '';\n\n if (Object.keys(properties).length !== 1) {\n throw new Error('Enum can only take single value');\n }\n\n Object.keys(properties).map(key => {\n this.enum = key;\n });\n }\n\n}\nconst SOLANA_SCHEMA = new Map();\n\nlet _Symbol$toStringTag;\n/**\n * Maximum length of derived pubkey seed\n */\n\nconst MAX_SEED_LENGTH = 32;\n/**\n * Size of public key in bytes\n */\n\nconst PUBLIC_KEY_LENGTH = 32;\n/**\n * Value to be converted into public key\n */\n\nfunction isPublicKeyData(value) {\n return value._bn !== undefined;\n} // local counter used by PublicKey.unique()\n\n\nlet uniquePublicKeyCounter = 1;\n/**\n * A public key\n */\n\n_Symbol$toStringTag = Symbol.toStringTag;\nclass PublicKey extends Struct {\n /** @internal */\n\n /**\n * Create a new PublicKey object\n * @param value ed25519 public key as buffer or base-58 encoded string\n */\n constructor(value) {\n super({});\n this._bn = void 0;\n\n if (isPublicKeyData(value)) {\n this._bn = value._bn;\n } else {\n if (typeof value === 'string') {\n // assume base 58 encoding by default\n const decoded = bs58.decode(value);\n\n if (decoded.length != PUBLIC_KEY_LENGTH) {\n throw new Error(`Invalid public key input`);\n }\n\n this._bn = new BN(decoded);\n } else {\n this._bn = new BN(value);\n }\n\n if (this._bn.byteLength() > PUBLIC_KEY_LENGTH) {\n throw new Error(`Invalid public key input`);\n }\n }\n }\n /**\n * Returns a unique PublicKey for tests and benchmarks using a counter\n */\n\n\n static unique() {\n const key = new PublicKey(uniquePublicKeyCounter);\n uniquePublicKeyCounter += 1;\n return new PublicKey(key.toBuffer());\n }\n /**\n * Default public key value. The base58-encoded string representation is all ones (as seen below)\n * The underlying BN number is 32 bytes that are all zeros\n */\n\n\n /**\n * Checks if two publicKeys are equal\n */\n equals(publicKey) {\n return this._bn.eq(publicKey._bn);\n }\n /**\n * Return the base-58 representation of the public key\n */\n\n\n toBase58() {\n return bs58.encode(this.toBytes());\n }\n\n toJSON() {\n return this.toBase58();\n }\n /**\n * Return the byte array representation of the public key in big endian\n */\n\n\n toBytes() {\n const buf = this.toBuffer();\n return new Uint8Array(buf.buffer, buf.byteOffset, buf.byteLength);\n }\n /**\n * Return the Buffer representation of the public key in big endian\n */\n\n\n toBuffer() {\n const b = this._bn.toArrayLike(Buffer);\n\n if (b.length === PUBLIC_KEY_LENGTH) {\n return b;\n }\n\n const zeroPad = Buffer.alloc(32);\n b.copy(zeroPad, 32 - b.length);\n return zeroPad;\n }\n\n get [_Symbol$toStringTag]() {\n return `PublicKey(${this.toString()})`;\n }\n /**\n * Return the base-58 representation of the public key\n */\n\n\n toString() {\n return this.toBase58();\n }\n /**\n * Derive a public key from another key, a seed, and a program ID.\n * The program ID will also serve as the owner of the public key, giving\n * it permission to write data to the account.\n */\n\n /* eslint-disable require-await */\n\n\n static async createWithSeed(fromPublicKey, seed, programId) {\n const buffer = Buffer.concat([fromPublicKey.toBuffer(), Buffer.from(seed), programId.toBuffer()]);\n const publicKeyBytes = sha256(buffer);\n return new PublicKey(publicKeyBytes);\n }\n /**\n * Derive a program address from seeds and a program ID.\n */\n\n /* eslint-disable require-await */\n\n\n static createProgramAddressSync(seeds, programId) {\n let buffer = Buffer.alloc(0);\n seeds.forEach(function (seed) {\n if (seed.length > MAX_SEED_LENGTH) {\n throw new TypeError(`Max seed length exceeded`);\n }\n\n buffer = Buffer.concat([buffer, toBuffer(seed)]);\n });\n buffer = Buffer.concat([buffer, programId.toBuffer(), Buffer.from('ProgramDerivedAddress')]);\n const publicKeyBytes = sha256(buffer);\n\n if (isOnCurve(publicKeyBytes)) {\n throw new Error(`Invalid seeds, address must fall off the curve`);\n }\n\n return new PublicKey(publicKeyBytes);\n }\n /**\n * Async version of createProgramAddressSync\n * For backwards compatibility\n *\n * @deprecated Use {@link createProgramAddressSync} instead\n */\n\n /* eslint-disable require-await */\n\n\n static async createProgramAddress(seeds, programId) {\n return this.createProgramAddressSync(seeds, programId);\n }\n /**\n * Find a valid program address\n *\n * Valid program addresses must fall off the ed25519 curve. This function\n * iterates a nonce until it finds one that when combined with the seeds\n * results in a valid program address.\n */\n\n\n static findProgramAddressSync(seeds, programId) {\n let nonce = 255;\n let address;\n\n while (nonce != 0) {\n try {\n const seedsWithNonce = seeds.concat(Buffer.from([nonce]));\n address = this.createProgramAddressSync(seedsWithNonce, programId);\n } catch (err) {\n if (err instanceof TypeError) {\n throw err;\n }\n\n nonce--;\n continue;\n }\n\n return [address, nonce];\n }\n\n throw new Error(`Unable to find a viable program address nonce`);\n }\n /**\n * Async version of findProgramAddressSync\n * For backwards compatibility\n *\n * @deprecated Use {@link findProgramAddressSync} instead\n */\n\n\n static async findProgramAddress(seeds, programId) {\n return this.findProgramAddressSync(seeds, programId);\n }\n /**\n * Check that a pubkey is on the ed25519 curve.\n */\n\n\n static isOnCurve(pubkeyData) {\n const pubkey = new PublicKey(pubkeyData);\n return isOnCurve(pubkey.toBytes());\n }\n\n}\nPublicKey.default = new PublicKey('11111111111111111111111111111111');\nSOLANA_SCHEMA.set(PublicKey, {\n kind: 'struct',\n fields: [['_bn', 'u256']]\n});\n\n/**\n * An account key pair (public and secret keys).\n *\n * @deprecated since v1.10.0, please use {@link Keypair} instead.\n */\n\nclass Account {\n /** @internal */\n\n /** @internal */\n\n /**\n * Create a new Account object\n *\n * If the secretKey parameter is not provided a new key pair is randomly\n * created for the account\n *\n * @param secretKey Secret key for the account\n */\n constructor(secretKey) {\n this._publicKey = void 0;\n this._secretKey = void 0;\n\n if (secretKey) {\n const secretKeyBuffer = toBuffer(secretKey);\n\n if (secretKey.length !== 64) {\n throw new Error('bad secret key size');\n }\n\n this._publicKey = secretKeyBuffer.slice(32, 64);\n this._secretKey = secretKeyBuffer.slice(0, 32);\n } else {\n this._secretKey = toBuffer(generatePrivateKey());\n this._publicKey = toBuffer(getPublicKey(this._secretKey));\n }\n }\n /**\n * The public key for this account\n */\n\n\n get publicKey() {\n return new PublicKey(this._publicKey);\n }\n /**\n * The **unencrypted** secret key for this account. The first 32 bytes\n * is the private scalar and the last 32 bytes is the public key.\n * Read more: https://blog.mozilla.org/warner/2011/11/29/ed25519-keys/\n */\n\n\n get secretKey() {\n return Buffer.concat([this._secretKey, this._publicKey], 64);\n }\n\n}\n\nconst BPF_LOADER_DEPRECATED_PROGRAM_ID = new PublicKey('BPFLoader1111111111111111111111111111111111');\n\n/**\n * Maximum over-the-wire size of a Transaction\n *\n * 1280 is IPv6 minimum MTU\n * 40 bytes is the size of the IPv6 header\n * 8 bytes is the size of the fragment header\n */\nconst PACKET_DATA_SIZE = 1280 - 40 - 8;\nconst VERSION_PREFIX_MASK = 0x7f;\nconst SIGNATURE_LENGTH_IN_BYTES = 64;\n\nclass TransactionExpiredBlockheightExceededError extends Error {\n constructor(signature) {\n super(`Signature ${signature} has expired: block height exceeded.`);\n this.signature = void 0;\n this.signature = signature;\n }\n\n}\nObject.defineProperty(TransactionExpiredBlockheightExceededError.prototype, 'name', {\n value: 'TransactionExpiredBlockheightExceededError'\n});\nclass TransactionExpiredTimeoutError extends Error {\n constructor(signature, timeoutSeconds) {\n super(`Transaction was not confirmed in ${timeoutSeconds.toFixed(2)} seconds. It is ` + 'unknown if it succeeded or failed. Check signature ' + `${signature} using the Solana Explorer or CLI tools.`);\n this.signature = void 0;\n this.signature = signature;\n }\n\n}\nObject.defineProperty(TransactionExpiredTimeoutError.prototype, 'name', {\n value: 'TransactionExpiredTimeoutError'\n});\nclass TransactionExpiredNonceInvalidError extends Error {\n constructor(signature) {\n super(`Signature ${signature} has expired: the nonce is no longer valid.`);\n this.signature = void 0;\n this.signature = signature;\n }\n\n}\nObject.defineProperty(TransactionExpiredNonceInvalidError.prototype, 'name', {\n value: 'TransactionExpiredNonceInvalidError'\n});\n\nclass MessageAccountKeys {\n constructor(staticAccountKeys, accountKeysFromLookups) {\n this.staticAccountKeys = void 0;\n this.accountKeysFromLookups = void 0;\n this.staticAccountKeys = staticAccountKeys;\n this.accountKeysFromLookups = accountKeysFromLookups;\n }\n\n keySegments() {\n const keySegments = [this.staticAccountKeys];\n\n if (this.accountKeysFromLookups) {\n keySegments.push(this.accountKeysFromLookups.writable);\n keySegments.push(this.accountKeysFromLookups.readonly);\n }\n\n return keySegments;\n }\n\n get(index) {\n for (const keySegment of this.keySegments()) {\n if (index < keySegment.length) {\n return keySegment[index];\n } else {\n index -= keySegment.length;\n }\n }\n\n return;\n }\n\n get length() {\n return this.keySegments().flat().length;\n }\n\n compileInstructions(instructions) {\n // Bail early if any account indexes would overflow a u8\n const U8_MAX = 255;\n\n if (this.length > U8_MAX + 1) {\n throw new Error('Account index overflow encountered during compilation');\n }\n\n const keyIndexMap = new Map();\n this.keySegments().flat().forEach((key, index) => {\n keyIndexMap.set(key.toBase58(), index);\n });\n\n const findKeyIndex = key => {\n const keyIndex = keyIndexMap.get(key.toBase58());\n if (keyIndex === undefined) throw new Error('Encountered an unknown instruction account key during compilation');\n return keyIndex;\n };\n\n return instructions.map(instruction => {\n return {\n programIdIndex: findKeyIndex(instruction.programId),\n accountKeyIndexes: instruction.keys.map(meta => findKeyIndex(meta.pubkey)),\n data: instruction.data\n };\n });\n }\n\n}\n\n/**\n * Layout for a public key\n */\nconst publicKey = (property = 'publicKey') => {\n return BufferLayout.blob(32, property);\n};\n/**\n * Layout for a signature\n */\n\nconst signature = (property = 'signature') => {\n return BufferLayout.blob(64, property);\n};\n\n/**\n * Layout for a Rust String type\n */\nconst rustString = (property = 'string') => {\n const rsl = BufferLayout.struct([BufferLayout.u32('length'), BufferLayout.u32('lengthPadding'), BufferLayout.blob(BufferLayout.offset(BufferLayout.u32(), -8), 'chars')], property);\n\n const _decode = rsl.decode.bind(rsl);\n\n const _encode = rsl.encode.bind(rsl);\n\n const rslShim = rsl;\n\n rslShim.decode = (b, offset) => {\n const data = _decode(b, offset);\n\n return data['chars'].toString();\n };\n\n rslShim.encode = (str, b, offset) => {\n const data = {\n chars: Buffer.from(str, 'utf8')\n };\n return _encode(data, b, offset);\n };\n\n rslShim.alloc = str => {\n return BufferLayout.u32().span + BufferLayout.u32().span + Buffer.from(str, 'utf8').length;\n };\n\n return rslShim;\n};\n/**\n * Layout for an Authorized object\n */\n\nconst authorized = (property = 'authorized') => {\n return BufferLayout.struct([publicKey('staker'), publicKey('withdrawer')], property);\n};\n/**\n * Layout for a Lockup object\n */\n\nconst lockup = (property = 'lockup') => {\n return BufferLayout.struct([BufferLayout.ns64('unixTimestamp'), BufferLayout.ns64('epoch'), publicKey('custodian')], property);\n};\n/**\n * Layout for a VoteInit object\n */\n\nconst voteInit = (property = 'voteInit') => {\n return BufferLayout.struct([publicKey('nodePubkey'), publicKey('authorizedVoter'), publicKey('authorizedWithdrawer'), BufferLayout.u8('commission')], property);\n};\n/**\n * Layout for a VoteAuthorizeWithSeedArgs object\n */\n\nconst voteAuthorizeWithSeedArgs = (property = 'voteAuthorizeWithSeedArgs') => {\n return BufferLayout.struct([BufferLayout.u32('voteAuthorizationType'), publicKey('currentAuthorityDerivedKeyOwnerPubkey'), rustString('currentAuthorityDerivedKeySeed'), publicKey('newAuthorized')], property);\n};\nfunction getAlloc(type, fields) {\n const getItemAlloc = item => {\n if (item.span >= 0) {\n return item.span;\n } else if (typeof item.alloc === 'function') {\n return item.alloc(fields[item.property]);\n } else if ('count' in item && 'elementLayout' in item) {\n const field = fields[item.property];\n\n if (Array.isArray(field)) {\n return field.length * getItemAlloc(item.elementLayout);\n }\n } else if ('fields' in item) {\n // This is a `Structure` whose size needs to be recursively measured.\n return getAlloc({\n layout: item\n }, fields[item.property]);\n } // Couldn't determine allocated size of layout\n\n\n return 0;\n };\n\n let alloc = 0;\n type.layout.fields.forEach(item => {\n alloc += getItemAlloc(item);\n });\n return alloc;\n}\n\nfunction decodeLength(bytes) {\n let len = 0;\n let size = 0;\n\n for (;;) {\n let elem = bytes.shift();\n len |= (elem & 0x7f) << size * 7;\n size += 1;\n\n if ((elem & 0x80) === 0) {\n break;\n }\n }\n\n return len;\n}\nfunction encodeLength(bytes, len) {\n let rem_len = len;\n\n for (;;) {\n let elem = rem_len & 0x7f;\n rem_len >>= 7;\n\n if (rem_len == 0) {\n bytes.push(elem);\n break;\n } else {\n elem |= 0x80;\n bytes.push(elem);\n }\n }\n}\n\nfunction assert (condition, message) {\n if (!condition) {\n throw new Error(message || 'Assertion failed');\n }\n}\n\nclass CompiledKeys {\n constructor(payer, keyMetaMap) {\n this.payer = void 0;\n this.keyMetaMap = void 0;\n this.payer = payer;\n this.keyMetaMap = keyMetaMap;\n }\n\n static compile(instructions, payer) {\n const keyMetaMap = new Map();\n\n const getOrInsertDefault = pubkey => {\n const address = pubkey.toBase58();\n let keyMeta = keyMetaMap.get(address);\n\n if (keyMeta === undefined) {\n keyMeta = {\n isSigner: false,\n isWritable: false,\n isInvoked: false\n };\n keyMetaMap.set(address, keyMeta);\n }\n\n return keyMeta;\n };\n\n const payerKeyMeta = getOrInsertDefault(payer);\n payerKeyMeta.isSigner = true;\n payerKeyMeta.isWritable = true;\n\n for (const ix of instructions) {\n getOrInsertDefault(ix.programId).isInvoked = true;\n\n for (const accountMeta of ix.keys) {\n const keyMeta = getOrInsertDefault(accountMeta.pubkey);\n keyMeta.isSigner || (keyMeta.isSigner = accountMeta.isSigner);\n keyMeta.isWritable || (keyMeta.isWritable = accountMeta.isWritable);\n }\n }\n\n return new CompiledKeys(payer, keyMetaMap);\n }\n\n getMessageComponents() {\n const mapEntries = [...this.keyMetaMap.entries()];\n assert(mapEntries.length <= 256, 'Max static account keys length exceeded');\n const writableSigners = mapEntries.filter(([, meta]) => meta.isSigner && meta.isWritable);\n const readonlySigners = mapEntries.filter(([, meta]) => meta.isSigner && !meta.isWritable);\n const writableNonSigners = mapEntries.filter(([, meta]) => !meta.isSigner && meta.isWritable);\n const readonlyNonSigners = mapEntries.filter(([, meta]) => !meta.isSigner && !meta.isWritable);\n const header = {\n numRequiredSignatures: writableSigners.length + readonlySigners.length,\n numReadonlySignedAccounts: readonlySigners.length,\n numReadonlyUnsignedAccounts: readonlyNonSigners.length\n }; // sanity checks\n\n {\n assert(writableSigners.length > 0, 'Expected at least one writable signer key');\n const [payerAddress] = writableSigners[0];\n assert(payerAddress === this.payer.toBase58(), 'Expected first writable signer key to be the fee payer');\n }\n const staticAccountKeys = [...writableSigners.map(([address]) => new PublicKey(address)), ...readonlySigners.map(([address]) => new PublicKey(address)), ...writableNonSigners.map(([address]) => new PublicKey(address)), ...readonlyNonSigners.map(([address]) => new PublicKey(address))];\n return [header, staticAccountKeys];\n }\n\n extractTableLookup(lookupTable) {\n const [writableIndexes, drainedWritableKeys] = this.drainKeysFoundInLookupTable(lookupTable.state.addresses, keyMeta => !keyMeta.isSigner && !keyMeta.isInvoked && keyMeta.isWritable);\n const [readonlyIndexes, drainedReadonlyKeys] = this.drainKeysFoundInLookupTable(lookupTable.state.addresses, keyMeta => !keyMeta.isSigner && !keyMeta.isInvoked && !keyMeta.isWritable); // Don't extract lookup if no keys were found\n\n if (writableIndexes.length === 0 && readonlyIndexes.length === 0) {\n return;\n }\n\n return [{\n accountKey: lookupTable.key,\n writableIndexes,\n readonlyIndexes\n }, {\n writable: drainedWritableKeys,\n readonly: drainedReadonlyKeys\n }];\n }\n /** @internal */\n\n\n drainKeysFoundInLookupTable(lookupTableEntries, keyMetaFilter) {\n const lookupTableIndexes = new Array();\n const drainedKeys = new Array();\n\n for (const [address, keyMeta] of this.keyMetaMap.entries()) {\n if (keyMetaFilter(keyMeta)) {\n const key = new PublicKey(address);\n const lookupTableIndex = lookupTableEntries.findIndex(entry => entry.equals(key));\n\n if (lookupTableIndex >= 0) {\n assert(lookupTableIndex < 256, 'Max lookup table index exceeded');\n lookupTableIndexes.push(lookupTableIndex);\n drainedKeys.push(key);\n this.keyMetaMap.delete(address);\n }\n }\n }\n\n return [lookupTableIndexes, drainedKeys];\n }\n\n}\n\n/**\n * An instruction to execute by a program\n *\n * @property {number} programIdIndex\n * @property {number[]} accounts\n * @property {string} data\n */\n\n/**\n * List of instructions to be processed atomically\n */\nclass Message {\n constructor(args) {\n this.header = void 0;\n this.accountKeys = void 0;\n this.recentBlockhash = void 0;\n this.instructions = void 0;\n this.indexToProgramIds = new Map();\n this.header = args.header;\n this.accountKeys = args.accountKeys.map(account => new PublicKey(account));\n this.recentBlockhash = args.recentBlockhash;\n this.instructions = args.instructions;\n this.instructions.forEach(ix => this.indexToProgramIds.set(ix.programIdIndex, this.accountKeys[ix.programIdIndex]));\n }\n\n get version() {\n return 'legacy';\n }\n\n get staticAccountKeys() {\n return this.accountKeys;\n }\n\n get compiledInstructions() {\n return this.instructions.map(ix => ({\n programIdIndex: ix.programIdIndex,\n accountKeyIndexes: ix.accounts,\n data: bs58.decode(ix.data)\n }));\n }\n\n get addressTableLookups() {\n return [];\n }\n\n getAccountKeys() {\n return new MessageAccountKeys(this.staticAccountKeys);\n }\n\n static compile(args) {\n const compiledKeys = CompiledKeys.compile(args.instructions, args.payerKey);\n const [header, staticAccountKeys] = compiledKeys.getMessageComponents();\n const accountKeys = new MessageAccountKeys(staticAccountKeys);\n const instructions = accountKeys.compileInstructions(args.instructions).map(ix => ({\n programIdIndex: ix.programIdIndex,\n accounts: ix.accountKeyIndexes,\n data: bs58.encode(ix.data)\n }));\n return new Message({\n header,\n accountKeys: staticAccountKeys,\n recentBlockhash: args.recentBlockhash,\n instructions\n });\n }\n\n isAccountSigner(index) {\n return index < this.header.numRequiredSignatures;\n }\n\n isAccountWritable(index) {\n const numSignedAccounts = this.header.numRequiredSignatures;\n\n if (index >= this.header.numRequiredSignatures) {\n const unsignedAccountIndex = index - numSignedAccounts;\n const numUnsignedAccounts = this.accountKeys.length - numSignedAccounts;\n const numWritableUnsignedAccounts = numUnsignedAccounts - this.header.numReadonlyUnsignedAccounts;\n return unsignedAccountIndex < numWritableUnsignedAccounts;\n } else {\n const numWritableSignedAccounts = numSignedAccounts - this.header.numReadonlySignedAccounts;\n return index < numWritableSignedAccounts;\n }\n }\n\n isProgramId(index) {\n return this.indexToProgramIds.has(index);\n }\n\n programIds() {\n return [...this.indexToProgramIds.values()];\n }\n\n nonProgramIds() {\n return this.accountKeys.filter((_, index) => !this.isProgramId(index));\n }\n\n serialize() {\n const numKeys = this.accountKeys.length;\n let keyCount = [];\n encodeLength(keyCount, numKeys);\n const instructions = this.instructions.map(instruction => {\n const {\n accounts,\n programIdIndex\n } = instruction;\n const data = Array.from(bs58.decode(instruction.data));\n let keyIndicesCount = [];\n encodeLength(keyIndicesCount, accounts.length);\n let dataCount = [];\n encodeLength(dataCount, data.length);\n return {\n programIdIndex,\n keyIndicesCount: Buffer.from(keyIndicesCount),\n keyIndices: accounts,\n dataLength: Buffer.from(dataCount),\n data\n };\n });\n let instructionCount = [];\n encodeLength(instructionCount, instructions.length);\n let instructionBuffer = Buffer.alloc(PACKET_DATA_SIZE);\n Buffer.from(instructionCount).copy(instructionBuffer);\n let instructionBufferLength = instructionCount.length;\n instructions.forEach(instruction => {\n const instructionLayout = BufferLayout.struct([BufferLayout.u8('programIdIndex'), BufferLayout.blob(instruction.keyIndicesCount.length, 'keyIndicesCount'), BufferLayout.seq(BufferLayout.u8('keyIndex'), instruction.keyIndices.length, 'keyIndices'), BufferLayout.blob(instruction.dataLength.length, 'dataLength'), BufferLayout.seq(BufferLayout.u8('userdatum'), instruction.data.length, 'data')]);\n const length = instructionLayout.encode(instruction, instructionBuffer, instructionBufferLength);\n instructionBufferLength += length;\n });\n instructionBuffer = instructionBuffer.slice(0, instructionBufferLength);\n const signDataLayout = BufferLayout.struct([BufferLayout.blob(1, 'numRequiredSignatures'), BufferLayout.blob(1, 'numReadonlySignedAccounts'), BufferLayout.blob(1, 'numReadonlyUnsignedAccounts'), BufferLayout.blob(keyCount.length, 'keyCount'), BufferLayout.seq(publicKey('key'), numKeys, 'keys'), publicKey('recentBlockhash')]);\n const transaction = {\n numRequiredSignatures: Buffer.from([this.header.numRequiredSignatures]),\n numReadonlySignedAccounts: Buffer.from([this.header.numReadonlySignedAccounts]),\n numReadonlyUnsignedAccounts: Buffer.from([this.header.numReadonlyUnsignedAccounts]),\n keyCount: Buffer.from(keyCount),\n keys: this.accountKeys.map(key => toBuffer(key.toBytes())),\n recentBlockhash: bs58.decode(this.recentBlockhash)\n };\n let signData = Buffer.alloc(2048);\n const length = signDataLayout.encode(transaction, signData);\n instructionBuffer.copy(signData, length);\n return signData.slice(0, length + instructionBuffer.length);\n }\n /**\n * Decode a compiled message into a Message object.\n */\n\n\n static from(buffer) {\n // Slice up wire data\n let byteArray = [...buffer];\n const numRequiredSignatures = byteArray.shift();\n\n if (numRequiredSignatures !== (numRequiredSignatures & VERSION_PREFIX_MASK)) {\n throw new Error('Versioned messages must be deserialized with VersionedMessage.deserialize()');\n }\n\n const numReadonlySignedAccounts = byteArray.shift();\n const numReadonlyUnsignedAccounts = byteArray.shift();\n const accountCount = decodeLength(byteArray);\n let accountKeys = [];\n\n for (let i = 0; i < accountCount; i++) {\n const account = byteArray.slice(0, PUBLIC_KEY_LENGTH);\n byteArray = byteArray.slice(PUBLIC_KEY_LENGTH);\n accountKeys.push(new PublicKey(Buffer.from(account)));\n }\n\n const recentBlockhash = byteArray.slice(0, PUBLIC_KEY_LENGTH);\n byteArray = byteArray.slice(PUBLIC_KEY_LENGTH);\n const instructionCount = decodeLength(byteArray);\n let instructions = [];\n\n for (let i = 0; i < instructionCount; i++) {\n const programIdIndex = byteArray.shift();\n const accountCount = decodeLength(byteArray);\n const accounts = byteArray.slice(0, accountCount);\n byteArray = byteArray.slice(accountCount);\n const dataLength = decodeLength(byteArray);\n const dataSlice = byteArray.slice(0, dataLength);\n const data = bs58.encode(Buffer.from(dataSlice));\n byteArray = byteArray.slice(dataLength);\n instructions.push({\n programIdIndex,\n accounts,\n data\n });\n }\n\n const messageArgs = {\n header: {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts\n },\n recentBlockhash: bs58.encode(Buffer.from(recentBlockhash)),\n accountKeys,\n instructions\n };\n return new Message(messageArgs);\n }\n\n}\n\n/**\n * Message constructor arguments\n */\n\nclass MessageV0 {\n constructor(args) {\n this.header = void 0;\n this.staticAccountKeys = void 0;\n this.recentBlockhash = void 0;\n this.compiledInstructions = void 0;\n this.addressTableLookups = void 0;\n this.header = args.header;\n this.staticAccountKeys = args.staticAccountKeys;\n this.recentBlockhash = args.recentBlockhash;\n this.compiledInstructions = args.compiledInstructions;\n this.addressTableLookups = args.addressTableLookups;\n }\n\n get version() {\n return 0;\n }\n\n get numAccountKeysFromLookups() {\n let count = 0;\n\n for (const lookup of this.addressTableLookups) {\n count += lookup.readonlyIndexes.length + lookup.writableIndexes.length;\n }\n\n return count;\n }\n\n getAccountKeys(args) {\n let accountKeysFromLookups;\n\n if (args && 'accountKeysFromLookups' in args && args.accountKeysFromLookups) {\n if (this.numAccountKeysFromLookups != args.accountKeysFromLookups.writable.length + args.accountKeysFromLookups.readonly.length) {\n throw new Error('Failed to get account keys because of a mismatch in the number of account keys from lookups');\n }\n\n accountKeysFromLookups = args.accountKeysFromLookups;\n } else if (args && 'addressLookupTableAccounts' in args && args.addressLookupTableAccounts) {\n accountKeysFromLookups = this.resolveAddressTableLookups(args.addressLookupTableAccounts);\n } else if (this.addressTableLookups.length > 0) {\n throw new Error('Failed to get account keys because address table lookups were not resolved');\n }\n\n return new MessageAccountKeys(this.staticAccountKeys, accountKeysFromLookups);\n }\n\n isAccountSigner(index) {\n return index < this.header.numRequiredSignatures;\n }\n\n isAccountWritable(index) {\n const numSignedAccounts = this.header.numRequiredSignatures;\n const numStaticAccountKeys = this.staticAccountKeys.length;\n\n if (index >= numStaticAccountKeys) {\n const lookupAccountKeysIndex = index - numStaticAccountKeys;\n const numWritableLookupAccountKeys = this.addressTableLookups.reduce((count, lookup) => count + lookup.writableIndexes.length, 0);\n return lookupAccountKeysIndex < numWritableLookupAccountKeys;\n } else if (index >= this.header.numRequiredSignatures) {\n const unsignedAccountIndex = index - numSignedAccounts;\n const numUnsignedAccounts = numStaticAccountKeys - numSignedAccounts;\n const numWritableUnsignedAccounts = numUnsignedAccounts - this.header.numReadonlyUnsignedAccounts;\n return unsignedAccountIndex < numWritableUnsignedAccounts;\n } else {\n const numWritableSignedAccounts = numSignedAccounts - this.header.numReadonlySignedAccounts;\n return index < numWritableSignedAccounts;\n }\n }\n\n resolveAddressTableLookups(addressLookupTableAccounts) {\n const accountKeysFromLookups = {\n writable: [],\n readonly: []\n };\n\n for (const tableLookup of this.addressTableLookups) {\n const tableAccount = addressLookupTableAccounts.find(account => account.key.equals(tableLookup.accountKey));\n\n if (!tableAccount) {\n throw new Error(`Failed to find address lookup table account for table key ${tableLookup.accountKey.toBase58()}`);\n }\n\n for (const index of tableLookup.writableIndexes) {\n if (index < tableAccount.state.addresses.length) {\n accountKeysFromLookups.writable.push(tableAccount.state.addresses[index]);\n } else {\n throw new Error(`Failed to find address for index ${index} in address lookup table ${tableLookup.accountKey.toBase58()}`);\n }\n }\n\n for (const index of tableLookup.readonlyIndexes) {\n if (index < tableAccount.state.addresses.length) {\n accountKeysFromLookups.readonly.push(tableAccount.state.addresses[index]);\n } else {\n throw new Error(`Failed to find address for index ${index} in address lookup table ${tableLookup.accountKey.toBase58()}`);\n }\n }\n }\n\n return accountKeysFromLookups;\n }\n\n static compile(args) {\n const compiledKeys = CompiledKeys.compile(args.instructions, args.payerKey);\n const addressTableLookups = new Array();\n const accountKeysFromLookups = {\n writable: new Array(),\n readonly: new Array()\n };\n const lookupTableAccounts = args.addressLookupTableAccounts || [];\n\n for (const lookupTable of lookupTableAccounts) {\n const extractResult = compiledKeys.extractTableLookup(lookupTable);\n\n if (extractResult !== undefined) {\n const [addressTableLookup, {\n writable,\n readonly\n }] = extractResult;\n addressTableLookups.push(addressTableLookup);\n accountKeysFromLookups.writable.push(...writable);\n accountKeysFromLookups.readonly.push(...readonly);\n }\n }\n\n const [header, staticAccountKeys] = compiledKeys.getMessageComponents();\n const accountKeys = new MessageAccountKeys(staticAccountKeys, accountKeysFromLookups);\n const compiledInstructions = accountKeys.compileInstructions(args.instructions);\n return new MessageV0({\n header,\n staticAccountKeys,\n recentBlockhash: args.recentBlockhash,\n compiledInstructions,\n addressTableLookups\n });\n }\n\n serialize() {\n const encodedStaticAccountKeysLength = Array();\n encodeLength(encodedStaticAccountKeysLength, this.staticAccountKeys.length);\n const serializedInstructions = this.serializeInstructions();\n const encodedInstructionsLength = Array();\n encodeLength(encodedInstructionsLength, this.compiledInstructions.length);\n const serializedAddressTableLookups = this.serializeAddressTableLookups();\n const encodedAddressTableLookupsLength = Array();\n encodeLength(encodedAddressTableLookupsLength, this.addressTableLookups.length);\n const messageLayout = BufferLayout.struct([BufferLayout.u8('prefix'), BufferLayout.struct([BufferLayout.u8('numRequiredSignatures'), BufferLayout.u8('numReadonlySignedAccounts'), BufferLayout.u8('numReadonlyUnsignedAccounts')], 'header'), BufferLayout.blob(encodedStaticAccountKeysLength.length, 'staticAccountKeysLength'), BufferLayout.seq(publicKey(), this.staticAccountKeys.length, 'staticAccountKeys'), publicKey('recentBlockhash'), BufferLayout.blob(encodedInstructionsLength.length, 'instructionsLength'), BufferLayout.blob(serializedInstructions.length, 'serializedInstructions'), BufferLayout.blob(encodedAddressTableLookupsLength.length, 'addressTableLookupsLength'), BufferLayout.blob(serializedAddressTableLookups.length, 'serializedAddressTableLookups')]);\n const serializedMessage = new Uint8Array(PACKET_DATA_SIZE);\n const MESSAGE_VERSION_0_PREFIX = 1 << 7;\n const serializedMessageLength = messageLayout.encode({\n prefix: MESSAGE_VERSION_0_PREFIX,\n header: this.header,\n staticAccountKeysLength: new Uint8Array(encodedStaticAccountKeysLength),\n staticAccountKeys: this.staticAccountKeys.map(key => key.toBytes()),\n recentBlockhash: bs58.decode(this.recentBlockhash),\n instructionsLength: new Uint8Array(encodedInstructionsLength),\n serializedInstructions,\n addressTableLookupsLength: new Uint8Array(encodedAddressTableLookupsLength),\n serializedAddressTableLookups\n }, serializedMessage);\n return serializedMessage.slice(0, serializedMessageLength);\n }\n\n serializeInstructions() {\n let serializedLength = 0;\n const serializedInstructions = new Uint8Array(PACKET_DATA_SIZE);\n\n for (const instruction of this.compiledInstructions) {\n const encodedAccountKeyIndexesLength = Array();\n encodeLength(encodedAccountKeyIndexesLength, instruction.accountKeyIndexes.length);\n const encodedDataLength = Array();\n encodeLength(encodedDataLength, instruction.data.length);\n const instructionLayout = BufferLayout.struct([BufferLayout.u8('programIdIndex'), BufferLayout.blob(encodedAccountKeyIndexesLength.length, 'encodedAccountKeyIndexesLength'), BufferLayout.seq(BufferLayout.u8(), instruction.accountKeyIndexes.length, 'accountKeyIndexes'), BufferLayout.blob(encodedDataLength.length, 'encodedDataLength'), BufferLayout.blob(instruction.data.length, 'data')]);\n serializedLength += instructionLayout.encode({\n programIdIndex: instruction.programIdIndex,\n encodedAccountKeyIndexesLength: new Uint8Array(encodedAccountKeyIndexesLength),\n accountKeyIndexes: instruction.accountKeyIndexes,\n encodedDataLength: new Uint8Array(encodedDataLength),\n data: instruction.data\n }, serializedInstructions, serializedLength);\n }\n\n return serializedInstructions.slice(0, serializedLength);\n }\n\n serializeAddressTableLookups() {\n let serializedLength = 0;\n const serializedAddressTableLookups = new Uint8Array(PACKET_DATA_SIZE);\n\n for (const lookup of this.addressTableLookups) {\n const encodedWritableIndexesLength = Array();\n encodeLength(encodedWritableIndexesLength, lookup.writableIndexes.length);\n const encodedReadonlyIndexesLength = Array();\n encodeLength(encodedReadonlyIndexesLength, lookup.readonlyIndexes.length);\n const addressTableLookupLayout = BufferLayout.struct([publicKey('accountKey'), BufferLayout.blob(encodedWritableIndexesLength.length, 'encodedWritableIndexesLength'), BufferLayout.seq(BufferLayout.u8(), lookup.writableIndexes.length, 'writableIndexes'), BufferLayout.blob(encodedReadonlyIndexesLength.length, 'encodedReadonlyIndexesLength'), BufferLayout.seq(BufferLayout.u8(), lookup.readonlyIndexes.length, 'readonlyIndexes')]);\n serializedLength += addressTableLookupLayout.encode({\n accountKey: lookup.accountKey.toBytes(),\n encodedWritableIndexesLength: new Uint8Array(encodedWritableIndexesLength),\n writableIndexes: lookup.writableIndexes,\n encodedReadonlyIndexesLength: new Uint8Array(encodedReadonlyIndexesLength),\n readonlyIndexes: lookup.readonlyIndexes\n }, serializedAddressTableLookups, serializedLength);\n }\n\n return serializedAddressTableLookups.slice(0, serializedLength);\n }\n\n static deserialize(serializedMessage) {\n let byteArray = [...serializedMessage];\n const prefix = byteArray.shift();\n const maskedPrefix = prefix & VERSION_PREFIX_MASK;\n assert(prefix !== maskedPrefix, `Expected versioned message but received legacy message`);\n const version = maskedPrefix;\n assert(version === 0, `Expected versioned message with version 0 but found version ${version}`);\n const header = {\n numRequiredSignatures: byteArray.shift(),\n numReadonlySignedAccounts: byteArray.shift(),\n numReadonlyUnsignedAccounts: byteArray.shift()\n };\n const staticAccountKeys = [];\n const staticAccountKeysLength = decodeLength(byteArray);\n\n for (let i = 0; i < staticAccountKeysLength; i++) {\n staticAccountKeys.push(new PublicKey(byteArray.splice(0, PUBLIC_KEY_LENGTH)));\n }\n\n const recentBlockhash = bs58.encode(byteArray.splice(0, PUBLIC_KEY_LENGTH));\n const instructionCount = decodeLength(byteArray);\n const compiledInstructions = [];\n\n for (let i = 0; i < instructionCount; i++) {\n const programIdIndex = byteArray.shift();\n const accountKeyIndexesLength = decodeLength(byteArray);\n const accountKeyIndexes = byteArray.splice(0, accountKeyIndexesLength);\n const dataLength = decodeLength(byteArray);\n const data = new Uint8Array(byteArray.splice(0, dataLength));\n compiledInstructions.push({\n programIdIndex,\n accountKeyIndexes,\n data\n });\n }\n\n const addressTableLookupsCount = decodeLength(byteArray);\n const addressTableLookups = [];\n\n for (let i = 0; i < addressTableLookupsCount; i++) {\n const accountKey = new PublicKey(byteArray.splice(0, PUBLIC_KEY_LENGTH));\n const writableIndexesLength = decodeLength(byteArray);\n const writableIndexes = byteArray.splice(0, writableIndexesLength);\n const readonlyIndexesLength = decodeLength(byteArray);\n const readonlyIndexes = byteArray.splice(0, readonlyIndexesLength);\n addressTableLookups.push({\n accountKey,\n writableIndexes,\n readonlyIndexes\n });\n }\n\n return new MessageV0({\n header,\n staticAccountKeys,\n recentBlockhash,\n compiledInstructions,\n addressTableLookups\n });\n }\n\n}\n\n// eslint-disable-next-line no-redeclare\nconst VersionedMessage = {\n deserializeMessageVersion(serializedMessage) {\n const prefix = serializedMessage[0];\n const maskedPrefix = prefix & VERSION_PREFIX_MASK; // if the highest bit of the prefix is not set, the message is not versioned\n\n if (maskedPrefix === prefix) {\n return 'legacy';\n } // the lower 7 bits of the prefix indicate the message version\n\n\n return maskedPrefix;\n },\n\n deserialize: serializedMessage => {\n const version = VersionedMessage.deserializeMessageVersion(serializedMessage);\n\n if (version === 'legacy') {\n return Message.from(serializedMessage);\n }\n\n if (version === 0) {\n return MessageV0.deserialize(serializedMessage);\n } else {\n throw new Error(`Transaction message version ${version} deserialization is not supported`);\n }\n }\n};\n\n/**\n * Transaction signature as base-58 encoded string\n */\n\nlet TransactionStatus;\n/**\n * Default (empty) signature\n */\n\n(function (TransactionStatus) {\n TransactionStatus[TransactionStatus[\"BLOCKHEIGHT_EXCEEDED\"] = 0] = \"BLOCKHEIGHT_EXCEEDED\";\n TransactionStatus[TransactionStatus[\"PROCESSED\"] = 1] = \"PROCESSED\";\n TransactionStatus[TransactionStatus[\"TIMED_OUT\"] = 2] = \"TIMED_OUT\";\n TransactionStatus[TransactionStatus[\"NONCE_INVALID\"] = 3] = \"NONCE_INVALID\";\n})(TransactionStatus || (TransactionStatus = {}));\n\nconst DEFAULT_SIGNATURE = Buffer.alloc(SIGNATURE_LENGTH_IN_BYTES).fill(0);\n/**\n * Account metadata used to define instructions\n */\n\n/**\n * Transaction Instruction class\n */\nclass TransactionInstruction {\n /**\n * Public keys to include in this transaction\n * Boolean represents whether this pubkey needs to sign the transaction\n */\n\n /**\n * Program Id to execute\n */\n\n /**\n * Program input\n */\n constructor(opts) {\n this.keys = void 0;\n this.programId = void 0;\n this.data = Buffer.alloc(0);\n this.programId = opts.programId;\n this.keys = opts.keys;\n\n if (opts.data) {\n this.data = opts.data;\n }\n }\n /**\n * @internal\n */\n\n\n toJSON() {\n return {\n keys: this.keys.map(({\n pubkey,\n isSigner,\n isWritable\n }) => ({\n pubkey: pubkey.toJSON(),\n isSigner,\n isWritable\n })),\n programId: this.programId.toJSON(),\n data: [...this.data]\n };\n }\n\n}\n/**\n * Pair of signature and corresponding public key\n */\n\n/**\n * Transaction class\n */\nclass Transaction {\n /**\n * Signatures for the transaction. Typically created by invoking the\n * `sign()` method\n */\n\n /**\n * The first (payer) Transaction signature\n */\n get signature() {\n if (this.signatures.length > 0) {\n return this.signatures[0].signature;\n }\n\n return null;\n }\n /**\n * The transaction fee payer\n */\n\n\n /**\n * Construct an empty Transaction\n */\n constructor(opts) {\n this.signatures = [];\n this.feePayer = void 0;\n this.instructions = [];\n this.recentBlockhash = void 0;\n this.lastValidBlockHeight = void 0;\n this.nonceInfo = void 0;\n this.minNonceContextSlot = void 0;\n this._message = void 0;\n this._json = void 0;\n\n if (!opts) {\n return;\n }\n\n if (opts.feePayer) {\n this.feePayer = opts.feePayer;\n }\n\n if (opts.signatures) {\n this.signatures = opts.signatures;\n }\n\n if (Object.prototype.hasOwnProperty.call(opts, 'nonceInfo')) {\n const {\n minContextSlot,\n nonceInfo\n } = opts;\n this.minNonceContextSlot = minContextSlot;\n this.nonceInfo = nonceInfo;\n } else if (Object.prototype.hasOwnProperty.call(opts, 'lastValidBlockHeight')) {\n const {\n blockhash,\n lastValidBlockHeight\n } = opts;\n this.recentBlockhash = blockhash;\n this.lastValidBlockHeight = lastValidBlockHeight;\n } else {\n const {\n recentBlockhash,\n nonceInfo\n } = opts;\n\n if (nonceInfo) {\n this.nonceInfo = nonceInfo;\n }\n\n this.recentBlockhash = recentBlockhash;\n }\n }\n /**\n * @internal\n */\n\n\n toJSON() {\n return {\n recentBlockhash: this.recentBlockhash || null,\n feePayer: this.feePayer ? this.feePayer.toJSON() : null,\n nonceInfo: this.nonceInfo ? {\n nonce: this.nonceInfo.nonce,\n nonceInstruction: this.nonceInfo.nonceInstruction.toJSON()\n } : null,\n instructions: this.instructions.map(instruction => instruction.toJSON()),\n signers: this.signatures.map(({\n publicKey\n }) => {\n return publicKey.toJSON();\n })\n };\n }\n /**\n * Add one or more instructions to this Transaction\n */\n\n\n add(...items) {\n if (items.length === 0) {\n throw new Error('No instructions');\n }\n\n items.forEach(item => {\n if ('instructions' in item) {\n this.instructions = this.instructions.concat(item.instructions);\n } else if ('data' in item && 'programId' in item && 'keys' in item) {\n this.instructions.push(item);\n } else {\n this.instructions.push(new TransactionInstruction(item));\n }\n });\n return this;\n }\n /**\n * Compile transaction data\n */\n\n\n compileMessage() {\n if (this._message && JSON.stringify(this.toJSON()) === JSON.stringify(this._json)) {\n return this._message;\n }\n\n let recentBlockhash;\n let instructions;\n\n if (this.nonceInfo) {\n recentBlockhash = this.nonceInfo.nonce;\n\n if (this.instructions[0] != this.nonceInfo.nonceInstruction) {\n instructions = [this.nonceInfo.nonceInstruction, ...this.instructions];\n } else {\n instructions = this.instructions;\n }\n } else {\n recentBlockhash = this.recentBlockhash;\n instructions = this.instructions;\n }\n\n if (!recentBlockhash) {\n throw new Error('Transaction recentBlockhash required');\n }\n\n if (instructions.length < 1) {\n console.warn('No instructions provided');\n }\n\n let feePayer;\n\n if (this.feePayer) {\n feePayer = this.feePayer;\n } else if (this.signatures.length > 0 && this.signatures[0].publicKey) {\n // Use implicit fee payer\n feePayer = this.signatures[0].publicKey;\n } else {\n throw new Error('Transaction fee payer required');\n }\n\n for (let i = 0; i < instructions.length; i++) {\n if (instructions[i].programId === undefined) {\n throw new Error(`Transaction instruction index ${i} has undefined program id`);\n }\n }\n\n const programIds = [];\n const accountMetas = [];\n instructions.forEach(instruction => {\n instruction.keys.forEach(accountMeta => {\n accountMetas.push({ ...accountMeta\n });\n });\n const programId = instruction.programId.toString();\n\n if (!programIds.includes(programId)) {\n programIds.push(programId);\n }\n }); // Append programID account metas\n\n programIds.forEach(programId => {\n accountMetas.push({\n pubkey: new PublicKey(programId),\n isSigner: false,\n isWritable: false\n });\n }); // Cull duplicate account metas\n\n const uniqueMetas = [];\n accountMetas.forEach(accountMeta => {\n const pubkeyString = accountMeta.pubkey.toString();\n const uniqueIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.toString() === pubkeyString;\n });\n\n if (uniqueIndex > -1) {\n uniqueMetas[uniqueIndex].isWritable = uniqueMetas[uniqueIndex].isWritable || accountMeta.isWritable;\n uniqueMetas[uniqueIndex].isSigner = uniqueMetas[uniqueIndex].isSigner || accountMeta.isSigner;\n } else {\n uniqueMetas.push(accountMeta);\n }\n }); // Sort. Prioritizing first by signer, then by writable\n\n uniqueMetas.sort(function (x, y) {\n if (x.isSigner !== y.isSigner) {\n // Signers always come before non-signers\n return x.isSigner ? -1 : 1;\n }\n\n if (x.isWritable !== y.isWritable) {\n // Writable accounts always come before read-only accounts\n return x.isWritable ? -1 : 1;\n } // Otherwise, sort by pubkey, stringwise.\n\n\n return x.pubkey.toBase58().localeCompare(y.pubkey.toBase58());\n }); // Move fee payer to the front\n\n const feePayerIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.equals(feePayer);\n });\n\n if (feePayerIndex > -1) {\n const [payerMeta] = uniqueMetas.splice(feePayerIndex, 1);\n payerMeta.isSigner = true;\n payerMeta.isWritable = true;\n uniqueMetas.unshift(payerMeta);\n } else {\n uniqueMetas.unshift({\n pubkey: feePayer,\n isSigner: true,\n isWritable: true\n });\n } // Disallow unknown signers\n\n\n for (const signature of this.signatures) {\n const uniqueIndex = uniqueMetas.findIndex(x => {\n return x.pubkey.equals(signature.publicKey);\n });\n\n if (uniqueIndex > -1) {\n if (!uniqueMetas[uniqueIndex].isSigner) {\n uniqueMetas[uniqueIndex].isSigner = true;\n console.warn('Transaction references a signature that is unnecessary, ' + 'only the fee payer and instruction signer accounts should sign a transaction. ' + 'This behavior is deprecated and will throw an error in the next major version release.');\n }\n } else {\n throw new Error(`unknown signer: ${signature.publicKey.toString()}`);\n }\n }\n\n let numRequiredSignatures = 0;\n let numReadonlySignedAccounts = 0;\n let numReadonlyUnsignedAccounts = 0; // Split out signing from non-signing keys and count header values\n\n const signedKeys = [];\n const unsignedKeys = [];\n uniqueMetas.forEach(({\n pubkey,\n isSigner,\n isWritable\n }) => {\n if (isSigner) {\n signedKeys.push(pubkey.toString());\n numRequiredSignatures += 1;\n\n if (!isWritable) {\n numReadonlySignedAccounts += 1;\n }\n } else {\n unsignedKeys.push(pubkey.toString());\n\n if (!isWritable) {\n numReadonlyUnsignedAccounts += 1;\n }\n }\n });\n const accountKeys = signedKeys.concat(unsignedKeys);\n const compiledInstructions = instructions.map(instruction => {\n const {\n data,\n programId\n } = instruction;\n return {\n programIdIndex: accountKeys.indexOf(programId.toString()),\n accounts: instruction.keys.map(meta => accountKeys.indexOf(meta.pubkey.toString())),\n data: bs58.encode(data)\n };\n });\n compiledInstructions.forEach(instruction => {\n assert(instruction.programIdIndex >= 0);\n instruction.accounts.forEach(keyIndex => assert(keyIndex >= 0));\n });\n return new Message({\n header: {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts\n },\n accountKeys,\n recentBlockhash,\n instructions: compiledInstructions\n });\n }\n /**\n * @internal\n */\n\n\n _compile() {\n const message = this.compileMessage();\n const signedKeys = message.accountKeys.slice(0, message.header.numRequiredSignatures);\n\n if (this.signatures.length === signedKeys.length) {\n const valid = this.signatures.every((pair, index) => {\n return signedKeys[index].equals(pair.publicKey);\n });\n if (valid) return message;\n }\n\n this.signatures = signedKeys.map(publicKey => ({\n signature: null,\n publicKey\n }));\n return message;\n }\n /**\n * Get a buffer of the Transaction data that need to be covered by signatures\n */\n\n\n serializeMessage() {\n return this._compile().serialize();\n }\n /**\n * Get the estimated fee associated with a transaction\n */\n\n\n async getEstimatedFee(connection) {\n return (await connection.getFeeForMessage(this.compileMessage())).value;\n }\n /**\n * Specify the public keys which will be used to sign the Transaction.\n * The first signer will be used as the transaction fee payer account.\n *\n * Signatures can be added with either `partialSign` or `addSignature`\n *\n * @deprecated Deprecated since v0.84.0. Only the fee payer needs to be\n * specified and it can be set in the Transaction constructor or with the\n * `feePayer` property.\n */\n\n\n setSigners(...signers) {\n if (signers.length === 0) {\n throw new Error('No signers');\n }\n\n const seen = new Set();\n this.signatures = signers.filter(publicKey => {\n const key = publicKey.toString();\n\n if (seen.has(key)) {\n return false;\n } else {\n seen.add(key);\n return true;\n }\n }).map(publicKey => ({\n signature: null,\n publicKey\n }));\n }\n /**\n * Sign the Transaction with the specified signers. Multiple signatures may\n * be applied to a Transaction. The first signature is considered \"primary\"\n * and is used identify and confirm transactions.\n *\n * If the Transaction `feePayer` is not set, the first signer will be used\n * as the transaction fee payer account.\n *\n * Transaction fields should not be modified after the first call to `sign`,\n * as doing so may invalidate the signature and cause the Transaction to be\n * rejected.\n *\n * The Transaction must be assigned a valid `recentBlockhash` before invoking this method\n */\n\n\n sign(...signers) {\n if (signers.length === 0) {\n throw new Error('No signers');\n } // Dedupe signers\n\n\n const seen = new Set();\n const uniqueSigners = [];\n\n for (const signer of signers) {\n const key = signer.publicKey.toString();\n\n if (seen.has(key)) {\n continue;\n } else {\n seen.add(key);\n uniqueSigners.push(signer);\n }\n }\n\n this.signatures = uniqueSigners.map(signer => ({\n signature: null,\n publicKey: signer.publicKey\n }));\n\n const message = this._compile();\n\n this._partialSign(message, ...uniqueSigners);\n }\n /**\n * Partially sign a transaction with the specified accounts. All accounts must\n * correspond to either the fee payer or a signer account in the transaction\n * instructions.\n *\n * All the caveats from the `sign` method apply to `partialSign`\n */\n\n\n partialSign(...signers) {\n if (signers.length === 0) {\n throw new Error('No signers');\n } // Dedupe signers\n\n\n const seen = new Set();\n const uniqueSigners = [];\n\n for (const signer of signers) {\n const key = signer.publicKey.toString();\n\n if (seen.has(key)) {\n continue;\n } else {\n seen.add(key);\n uniqueSigners.push(signer);\n }\n }\n\n const message = this._compile();\n\n this._partialSign(message, ...uniqueSigners);\n }\n /**\n * @internal\n */\n\n\n _partialSign(message, ...signers) {\n const signData = message.serialize();\n signers.forEach(signer => {\n const signature = sign(signData, signer.secretKey);\n\n this._addSignature(signer.publicKey, toBuffer(signature));\n });\n }\n /**\n * Add an externally created signature to a transaction. The public key\n * must correspond to either the fee payer or a signer account in the transaction\n * instructions.\n */\n\n\n addSignature(pubkey, signature) {\n this._compile(); // Ensure signatures array is populated\n\n\n this._addSignature(pubkey, signature);\n }\n /**\n * @internal\n */\n\n\n _addSignature(pubkey, signature) {\n assert(signature.length === 64);\n const index = this.signatures.findIndex(sigpair => pubkey.equals(sigpair.publicKey));\n\n if (index < 0) {\n throw new Error(`unknown signer: ${pubkey.toString()}`);\n }\n\n this.signatures[index].signature = Buffer.from(signature);\n }\n /**\n * Verify signatures of a Transaction\n * Optional parameter specifies if we're expecting a fully signed Transaction or a partially signed one.\n * If no boolean is provided, we expect a fully signed Transaction by default.\n */\n\n\n verifySignatures(requireAllSignatures) {\n return this._verifySignatures(this.serializeMessage(), requireAllSignatures === undefined ? true : requireAllSignatures);\n }\n /**\n * @internal\n */\n\n\n _verifySignatures(signData, requireAllSignatures) {\n for (const {\n signature,\n publicKey\n } of this.signatures) {\n if (signature === null) {\n if (requireAllSignatures) {\n return false;\n }\n } else {\n if (!verify(signature, signData, publicKey.toBytes())) {\n return false;\n }\n }\n }\n\n return true;\n }\n /**\n * Serialize the Transaction in the wire format.\n */\n\n\n serialize(config) {\n const {\n requireAllSignatures,\n verifySignatures\n } = Object.assign({\n requireAllSignatures: true,\n verifySignatures: true\n }, config);\n const signData = this.serializeMessage();\n\n if (verifySignatures && !this._verifySignatures(signData, requireAllSignatures)) {\n throw new Error('Signature verification failed');\n }\n\n return this._serialize(signData);\n }\n /**\n * @internal\n */\n\n\n _serialize(signData) {\n const {\n signatures\n } = this;\n const signatureCount = [];\n encodeLength(signatureCount, signatures.length);\n const transactionLength = signatureCount.length + signatures.length * 64 + signData.length;\n const wireTransaction = Buffer.alloc(transactionLength);\n assert(signatures.length < 256);\n Buffer.from(signatureCount).copy(wireTransaction, 0);\n signatures.forEach(({\n signature\n }, index) => {\n if (signature !== null) {\n assert(signature.length === 64, `signature has invalid length`);\n Buffer.from(signature).copy(wireTransaction, signatureCount.length + index * 64);\n }\n });\n signData.copy(wireTransaction, signatureCount.length + signatures.length * 64);\n assert(wireTransaction.length <= PACKET_DATA_SIZE, `Transaction too large: ${wireTransaction.length} > ${PACKET_DATA_SIZE}`);\n return wireTransaction;\n }\n /**\n * Deprecated method\n * @internal\n */\n\n\n get keys() {\n assert(this.instructions.length === 1);\n return this.instructions[0].keys.map(keyObj => keyObj.pubkey);\n }\n /**\n * Deprecated method\n * @internal\n */\n\n\n get programId() {\n assert(this.instructions.length === 1);\n return this.instructions[0].programId;\n }\n /**\n * Deprecated method\n * @internal\n */\n\n\n get data() {\n assert(this.instructions.length === 1);\n return this.instructions[0].data;\n }\n /**\n * Parse a wire transaction into a Transaction object.\n */\n\n\n static from(buffer) {\n // Slice up wire data\n let byteArray = [...buffer];\n const signatureCount = decodeLength(byteArray);\n let signatures = [];\n\n for (let i = 0; i < signatureCount; i++) {\n const signature = byteArray.slice(0, SIGNATURE_LENGTH_IN_BYTES);\n byteArray = byteArray.slice(SIGNATURE_LENGTH_IN_BYTES);\n signatures.push(bs58.encode(Buffer.from(signature)));\n }\n\n return Transaction.populate(Message.from(byteArray), signatures);\n }\n /**\n * Populate Transaction object from message and signatures\n */\n\n\n static populate(message, signatures = []) {\n const transaction = new Transaction();\n transaction.recentBlockhash = message.recentBlockhash;\n\n if (message.header.numRequiredSignatures > 0) {\n transaction.feePayer = message.accountKeys[0];\n }\n\n signatures.forEach((signature, index) => {\n const sigPubkeyPair = {\n signature: signature == bs58.encode(DEFAULT_SIGNATURE) ? null : bs58.decode(signature),\n publicKey: message.accountKeys[index]\n };\n transaction.signatures.push(sigPubkeyPair);\n });\n message.instructions.forEach(instruction => {\n const keys = instruction.accounts.map(account => {\n const pubkey = message.accountKeys[account];\n return {\n pubkey,\n isSigner: transaction.signatures.some(keyObj => keyObj.publicKey.toString() === pubkey.toString()) || message.isAccountSigner(account),\n isWritable: message.isAccountWritable(account)\n };\n });\n transaction.instructions.push(new TransactionInstruction({\n keys,\n programId: message.accountKeys[instruction.programIdIndex],\n data: bs58.decode(instruction.data)\n }));\n });\n transaction._message = message;\n transaction._json = transaction.toJSON();\n return transaction;\n }\n\n}\n\nclass TransactionMessage {\n constructor(args) {\n this.payerKey = void 0;\n this.instructions = void 0;\n this.recentBlockhash = void 0;\n this.payerKey = args.payerKey;\n this.instructions = args.instructions;\n this.recentBlockhash = args.recentBlockhash;\n }\n\n static decompile(message, args) {\n const {\n header,\n compiledInstructions,\n recentBlockhash\n } = message;\n const {\n numRequiredSignatures,\n numReadonlySignedAccounts,\n numReadonlyUnsignedAccounts\n } = header;\n const numWritableSignedAccounts = numRequiredSignatures - numReadonlySignedAccounts;\n assert(numWritableSignedAccounts > 0, 'Message header is invalid');\n const numWritableUnsignedAccounts = message.staticAccountKeys.length - numRequiredSignatures - numReadonlyUnsignedAccounts;\n assert(numWritableUnsignedAccounts >= 0, 'Message header is invalid');\n const accountKeys = message.getAccountKeys(args);\n const payerKey = accountKeys.get(0);\n\n if (payerKey === undefined) {\n throw new Error('Failed to decompile message because no account keys were found');\n }\n\n const instructions = [];\n\n for (const compiledIx of compiledInstructions) {\n const keys = [];\n\n for (const keyIndex of compiledIx.accountKeyIndexes) {\n const pubkey = accountKeys.get(keyIndex);\n\n if (pubkey === undefined) {\n throw new Error(`Failed to find key for account key index ${keyIndex}`);\n }\n\n const isSigner = keyIndex < numRequiredSignatures;\n let isWritable;\n\n if (isSigner) {\n isWritable = keyIndex < numWritableSignedAccounts;\n } else if (keyIndex < accountKeys.staticAccountKeys.length) {\n isWritable = keyIndex - numRequiredSignatures < numWritableUnsignedAccounts;\n } else {\n isWritable = keyIndex - accountKeys.staticAccountKeys.length < // accountKeysFromLookups cannot be undefined because we already found a pubkey for this index above\n accountKeys.accountKeysFromLookups.writable.length;\n }\n\n keys.push({\n pubkey,\n isSigner: keyIndex < header.numRequiredSignatures,\n isWritable\n });\n }\n\n const programId = accountKeys.get(compiledIx.programIdIndex);\n\n if (programId === undefined) {\n throw new Error(`Failed to find program id for program id index ${compiledIx.programIdIndex}`);\n }\n\n instructions.push(new TransactionInstruction({\n programId,\n data: toBuffer(compiledIx.data),\n keys\n }));\n }\n\n return new TransactionMessage({\n payerKey,\n instructions,\n recentBlockhash\n });\n }\n\n compileToLegacyMessage() {\n return Message.compile({\n payerKey: this.payerKey,\n recentBlockhash: this.recentBlockhash,\n instructions: this.instructions\n });\n }\n\n compileToV0Message(addressLookupTableAccounts) {\n return MessageV0.compile({\n payerKey: this.payerKey,\n recentBlockhash: this.recentBlockhash,\n instructions: this.instructions,\n addressLookupTableAccounts\n });\n }\n\n}\n\n/**\n * Versioned transaction class\n */\nclass VersionedTransaction {\n get version() {\n return this.message.version;\n }\n\n constructor(message, signatures) {\n this.signatures = void 0;\n this.message = void 0;\n\n if (signatures !== undefined) {\n assert(signatures.length === message.header.numRequiredSignatures, 'Expected signatures length to be equal to the number of required signatures');\n this.signatures = signatures;\n } else {\n const defaultSignatures = [];\n\n for (let i = 0; i < message.header.numRequiredSignatures; i++) {\n defaultSignatures.push(new Uint8Array(SIGNATURE_LENGTH_IN_BYTES));\n }\n\n this.signatures = defaultSignatures;\n }\n\n this.message = message;\n }\n\n serialize() {\n const serializedMessage = this.message.serialize();\n const encodedSignaturesLength = Array();\n encodeLength(encodedSignaturesLength, this.signatures.length);\n const transactionLayout = BufferLayout.struct([BufferLayout.blob(encodedSignaturesLength.length, 'encodedSignaturesLength'), BufferLayout.seq(signature(), this.signatures.length, 'signatures'), BufferLayout.blob(serializedMessage.length, 'serializedMessage')]);\n const serializedTransaction = new Uint8Array(2048);\n const serializedTransactionLength = transactionLayout.encode({\n encodedSignaturesLength: new Uint8Array(encodedSignaturesLength),\n signatures: this.signatures,\n serializedMessage\n }, serializedTransaction);\n return serializedTransaction.slice(0, serializedTransactionLength);\n }\n\n static deserialize(serializedTransaction) {\n let byteArray = [...serializedTransaction];\n const signatures = [];\n const signaturesLength = decodeLength(byteArray);\n\n for (let i = 0; i < signaturesLength; i++) {\n signatures.push(new Uint8Array(byteArray.splice(0, SIGNATURE_LENGTH_IN_BYTES)));\n }\n\n const message = VersionedMessage.deserialize(new Uint8Array(byteArray));\n return new VersionedTransaction(message, signatures);\n }\n\n sign(signers) {\n const messageData = this.message.serialize();\n const signerPubkeys = this.message.staticAccountKeys.slice(0, this.message.header.numRequiredSignatures);\n\n for (const signer of signers) {\n const signerIndex = signerPubkeys.findIndex(pubkey => pubkey.equals(signer.publicKey));\n assert(signerIndex >= 0, `Cannot sign with non signer key ${signer.publicKey.toBase58()}`);\n this.signatures[signerIndex] = sign(messageData, signer.secretKey);\n }\n }\n\n addSignature(publicKey, signature) {\n assert(signature.byteLength === 64, 'Signature must be 64 bytes long');\n const signerPubkeys = this.message.staticAccountKeys.slice(0, this.message.header.numRequiredSignatures);\n const signerIndex = signerPubkeys.findIndex(pubkey => pubkey.equals(publicKey));\n assert(signerIndex >= 0, `Can not add signature; \\`${publicKey.toBase58()}\\` is not required to sign this transaction`);\n this.signatures[signerIndex] = signature;\n }\n\n}\n\nconst SYSVAR_CLOCK_PUBKEY = new PublicKey('SysvarC1ock11111111111111111111111111111111');\nconst SYSVAR_EPOCH_SCHEDULE_PUBKEY = new PublicKey('SysvarEpochSchedu1e111111111111111111111111');\nconst SYSVAR_INSTRUCTIONS_PUBKEY = new PublicKey('Sysvar1nstructions1111111111111111111111111');\nconst SYSVAR_RECENT_BLOCKHASHES_PUBKEY = new PublicKey('SysvarRecentB1ockHashes11111111111111111111');\nconst SYSVAR_RENT_PUBKEY = new PublicKey('SysvarRent111111111111111111111111111111111');\nconst SYSVAR_REWARDS_PUBKEY = new PublicKey('SysvarRewards111111111111111111111111111111');\nconst SYSVAR_SLOT_HASHES_PUBKEY = new PublicKey('SysvarS1otHashes111111111111111111111111111');\nconst SYSVAR_SLOT_HISTORY_PUBKEY = new PublicKey('SysvarS1otHistory11111111111111111111111111');\nconst SYSVAR_STAKE_HISTORY_PUBKEY = new PublicKey('SysvarStakeHistory1111111111111111111111111');\n\n/**\n * Sign, send and confirm a transaction.\n *\n * If `commitment` option is not specified, defaults to 'max' commitment.\n *\n * @param {Connection} connection\n * @param {Transaction} transaction\n * @param {Array} signers\n * @param {ConfirmOptions} [options]\n * @returns {Promise}\n */\nasync function sendAndConfirmTransaction(connection, transaction, signers, options) {\n const sendOptions = options && {\n skipPreflight: options.skipPreflight,\n preflightCommitment: options.preflightCommitment || options.commitment,\n maxRetries: options.maxRetries,\n minContextSlot: options.minContextSlot\n };\n const signature = await connection.sendTransaction(transaction, signers, sendOptions);\n let status;\n\n if (transaction.recentBlockhash != null && transaction.lastValidBlockHeight != null) {\n status = (await connection.confirmTransaction({\n abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal,\n signature: signature,\n blockhash: transaction.recentBlockhash,\n lastValidBlockHeight: transaction.lastValidBlockHeight\n }, options && options.commitment)).value;\n } else if (transaction.minNonceContextSlot != null && transaction.nonceInfo != null) {\n const {\n nonceInstruction\n } = transaction.nonceInfo;\n const nonceAccountPubkey = nonceInstruction.keys[0].pubkey;\n status = (await connection.confirmTransaction({\n abortSignal: options === null || options === void 0 ? void 0 : options.abortSignal,\n minContextSlot: transaction.minNonceContextSlot,\n nonceAccountPubkey,\n nonceValue: transaction.nonceInfo.nonce,\n signature\n }, options && options.commitment)).value;\n } else {\n if ((options === null || options === void 0 ? void 0 : options.abortSignal) != null) {\n console.warn('sendAndConfirmTransaction(): A transaction with a deprecated confirmation strategy was ' + 'supplied along with an `abortSignal`. Only transactions having `lastValidBlockHeight` ' + 'or a combination of `nonceInfo` and `minNonceContextSlot` are abortable.');\n }\n\n status = (await connection.confirmTransaction(signature, options && options.commitment)).value;\n }\n\n if (status.err) {\n throw new Error(`Transaction ${signature} failed (${JSON.stringify(status)})`);\n }\n\n return signature;\n}\n\n// zzz\nfunction sleep(ms) {\n return new Promise(resolve => setTimeout(resolve, ms));\n}\n\n/**\n * Populate a buffer of instruction data using an InstructionType\n * @internal\n */\nfunction encodeData(type, fields) {\n const allocLength = type.layout.span >= 0 ? type.layout.span : getAlloc(type, fields);\n const data = Buffer.alloc(allocLength);\n const layoutFields = Object.assign({\n instruction: type.index\n }, fields);\n type.layout.encode(layoutFields, data);\n return data;\n}\n/**\n * Decode instruction data buffer using an InstructionType\n * @internal\n */\n\nfunction decodeData$1(type, buffer) {\n let data;\n\n try {\n data = type.layout.decode(buffer);\n } catch (err) {\n throw new Error('invalid instruction; ' + err);\n }\n\n if (data.instruction !== type.index) {\n throw new Error(`invalid instruction; instruction index mismatch ${data.instruction} != ${type.index}`);\n }\n\n return data;\n}\n\n/**\n * https://github.com/solana-labs/solana/blob/90bedd7e067b5b8f3ddbb45da00a4e9cabb22c62/sdk/src/fee_calculator.rs#L7-L11\n *\n * @internal\n */\n\nconst FeeCalculatorLayout = BufferLayout.nu64('lamportsPerSignature');\n/**\n * Calculator for transaction fees.\n *\n * @deprecated Deprecated since Solana v1.8.0.\n */\n\n/**\n * See https://github.com/solana-labs/solana/blob/0ea2843ec9cdc517572b8e62c959f41b55cf4453/sdk/src/nonce_state.rs#L29-L32\n *\n * @internal\n */\n\nconst NonceAccountLayout = BufferLayout.struct([BufferLayout.u32('version'), BufferLayout.u32('state'), publicKey('authorizedPubkey'), publicKey('nonce'), BufferLayout.struct([FeeCalculatorLayout], 'feeCalculator')]);\nconst NONCE_ACCOUNT_LENGTH = NonceAccountLayout.span;\n/**\n * A durable nonce is a 32 byte value encoded as a base58 string.\n */\n\n/**\n * NonceAccount class\n */\nclass NonceAccount {\n /**\n * @internal\n */\n constructor(args) {\n this.authorizedPubkey = void 0;\n this.nonce = void 0;\n this.feeCalculator = void 0;\n this.authorizedPubkey = args.authorizedPubkey;\n this.nonce = args.nonce;\n this.feeCalculator = args.feeCalculator;\n }\n /**\n * Deserialize NonceAccount from the account data.\n *\n * @param buffer account data\n * @return NonceAccount\n */\n\n\n static fromAccountData(buffer) {\n const nonceAccount = NonceAccountLayout.decode(toBuffer(buffer), 0);\n return new NonceAccount({\n authorizedPubkey: new PublicKey(nonceAccount.authorizedPubkey),\n nonce: new PublicKey(nonceAccount.nonce).toString(),\n feeCalculator: nonceAccount.feeCalculator\n });\n }\n\n}\n\nconst encodeDecode = layout => {\n const decode = layout.decode.bind(layout);\n const encode = layout.encode.bind(layout);\n return {\n decode,\n encode\n };\n};\n\nconst bigInt = length => property => {\n const layout = blob(length, property);\n const {\n encode,\n decode\n } = encodeDecode(layout);\n const bigIntLayout = layout;\n\n bigIntLayout.decode = (buffer, offset) => {\n const src = decode(buffer, offset);\n return toBigIntLE(Buffer.from(src));\n };\n\n bigIntLayout.encode = (bigInt, buffer, offset) => {\n const src = toBufferLE(bigInt, length);\n return encode(src, buffer, offset);\n };\n\n return bigIntLayout;\n};\n\nconst u64 = bigInt(8);\n\n/**\n * Create account system transaction params\n */\n\n/**\n * System Instruction class\n */\nclass SystemInstruction {\n /**\n * @internal\n */\n constructor() {}\n /**\n * Decode a system instruction and retrieve the instruction type.\n */\n\n\n static decodeInstructionType(instruction) {\n this.checkProgramId(instruction.programId);\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n let type;\n\n for (const [ixType, layout] of Object.entries(SYSTEM_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a SystemInstruction');\n }\n\n return type;\n }\n /**\n * Decode a create account system instruction and retrieve the instruction params.\n */\n\n\n static decodeCreateAccount(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n const {\n lamports,\n space,\n programId\n } = decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.Create, instruction.data);\n return {\n fromPubkey: instruction.keys[0].pubkey,\n newAccountPubkey: instruction.keys[1].pubkey,\n lamports,\n space,\n programId: new PublicKey(programId)\n };\n }\n /**\n * Decode a transfer system instruction and retrieve the instruction params.\n */\n\n\n static decodeTransfer(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n const {\n lamports\n } = decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.Transfer, instruction.data);\n return {\n fromPubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n lamports\n };\n }\n /**\n * Decode a transfer with seed system instruction and retrieve the instruction params.\n */\n\n\n static decodeTransferWithSeed(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {\n lamports,\n seed,\n programId\n } = decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed, instruction.data);\n return {\n fromPubkey: instruction.keys[0].pubkey,\n basePubkey: instruction.keys[1].pubkey,\n toPubkey: instruction.keys[2].pubkey,\n lamports,\n seed,\n programId: new PublicKey(programId)\n };\n }\n /**\n * Decode an allocate system instruction and retrieve the instruction params.\n */\n\n\n static decodeAllocate(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n const {\n space\n } = decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.Allocate, instruction.data);\n return {\n accountPubkey: instruction.keys[0].pubkey,\n space\n };\n }\n /**\n * Decode an allocate with seed system instruction and retrieve the instruction params.\n */\n\n\n static decodeAllocateWithSeed(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n const {\n base,\n seed,\n space,\n programId\n } = decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed, instruction.data);\n return {\n accountPubkey: instruction.keys[0].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n space,\n programId: new PublicKey(programId)\n };\n }\n /**\n * Decode an assign system instruction and retrieve the instruction params.\n */\n\n\n static decodeAssign(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n const {\n programId\n } = decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.Assign, instruction.data);\n return {\n accountPubkey: instruction.keys[0].pubkey,\n programId: new PublicKey(programId)\n };\n }\n /**\n * Decode an assign with seed system instruction and retrieve the instruction params.\n */\n\n\n static decodeAssignWithSeed(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 1);\n const {\n base,\n seed,\n programId\n } = decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed, instruction.data);\n return {\n accountPubkey: instruction.keys[0].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n programId: new PublicKey(programId)\n };\n }\n /**\n * Decode a create account with seed system instruction and retrieve the instruction params.\n */\n\n\n static decodeCreateWithSeed(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n const {\n base,\n seed,\n lamports,\n space,\n programId\n } = decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed, instruction.data);\n return {\n fromPubkey: instruction.keys[0].pubkey,\n newAccountPubkey: instruction.keys[1].pubkey,\n basePubkey: new PublicKey(base),\n seed,\n lamports,\n space,\n programId: new PublicKey(programId)\n };\n }\n /**\n * Decode a nonce initialize system instruction and retrieve the instruction params.\n */\n\n\n static decodeNonceInitialize(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {\n authorized\n } = decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount, instruction.data);\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: new PublicKey(authorized)\n };\n }\n /**\n * Decode a nonce advance system instruction and retrieve the instruction params.\n */\n\n\n static decodeNonceAdvance(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount, instruction.data);\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey\n };\n }\n /**\n * Decode a nonce withdraw system instruction and retrieve the instruction params.\n */\n\n\n static decodeNonceWithdraw(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 5);\n const {\n lamports\n } = decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount, instruction.data);\n return {\n noncePubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n lamports\n };\n }\n /**\n * Decode a nonce authorize system instruction and retrieve the instruction params.\n */\n\n\n static decodeNonceAuthorize(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n const {\n authorized\n } = decodeData$1(SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount, instruction.data);\n return {\n noncePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[1].pubkey,\n newAuthorizedPubkey: new PublicKey(authorized)\n };\n }\n /**\n * @internal\n */\n\n\n static checkProgramId(programId) {\n if (!programId.equals(SystemProgram.programId)) {\n throw new Error('invalid instruction; programId is not SystemProgram');\n }\n }\n /**\n * @internal\n */\n\n\n static checkKeyLength(keys, expectedLength) {\n if (keys.length < expectedLength) {\n throw new Error(`invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`);\n }\n }\n\n}\n/**\n * An enumeration of valid SystemInstructionType's\n */\n\n/**\n * An enumeration of valid system InstructionType's\n * @internal\n */\nconst SYSTEM_INSTRUCTION_LAYOUTS = Object.freeze({\n Create: {\n index: 0,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), BufferLayout.ns64('lamports'), BufferLayout.ns64('space'), publicKey('programId')])\n },\n Assign: {\n index: 1,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), publicKey('programId')])\n },\n Transfer: {\n index: 2,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), u64('lamports')])\n },\n CreateWithSeed: {\n index: 3,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), publicKey('base'), rustString('seed'), BufferLayout.ns64('lamports'), BufferLayout.ns64('space'), publicKey('programId')])\n },\n AdvanceNonceAccount: {\n index: 4,\n layout: BufferLayout.struct([BufferLayout.u32('instruction')])\n },\n WithdrawNonceAccount: {\n index: 5,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), BufferLayout.ns64('lamports')])\n },\n InitializeNonceAccount: {\n index: 6,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), publicKey('authorized')])\n },\n AuthorizeNonceAccount: {\n index: 7,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), publicKey('authorized')])\n },\n Allocate: {\n index: 8,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), BufferLayout.ns64('space')])\n },\n AllocateWithSeed: {\n index: 9,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), publicKey('base'), rustString('seed'), BufferLayout.ns64('space'), publicKey('programId')])\n },\n AssignWithSeed: {\n index: 10,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), publicKey('base'), rustString('seed'), publicKey('programId')])\n },\n TransferWithSeed: {\n index: 11,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), u64('lamports'), rustString('seed'), publicKey('programId')])\n },\n UpgradeNonceAccount: {\n index: 12,\n layout: BufferLayout.struct([BufferLayout.u32('instruction')])\n }\n});\n/**\n * Factory class for transactions to interact with the System program\n */\n\nclass SystemProgram {\n /**\n * @internal\n */\n constructor() {}\n /**\n * Public key that identifies the System program\n */\n\n\n /**\n * Generate a transaction instruction that creates a new account\n */\n static createAccount(params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Create;\n const data = encodeData(type, {\n lamports: params.lamports,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer())\n });\n return new TransactionInstruction({\n keys: [{\n pubkey: params.fromPubkey,\n isSigner: true,\n isWritable: true\n }, {\n pubkey: params.newAccountPubkey,\n isSigner: true,\n isWritable: true\n }],\n programId: this.programId,\n data\n });\n }\n /**\n * Generate a transaction instruction that transfers lamports from one account to another\n */\n\n\n static transfer(params) {\n let data;\n let keys;\n\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.TransferWithSeed;\n data = encodeData(type, {\n lamports: BigInt(params.lamports),\n seed: params.seed,\n programId: toBuffer(params.programId.toBuffer())\n });\n keys = [{\n pubkey: params.fromPubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: params.basePubkey,\n isSigner: true,\n isWritable: false\n }, {\n pubkey: params.toPubkey,\n isSigner: false,\n isWritable: true\n }];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Transfer;\n data = encodeData(type, {\n lamports: BigInt(params.lamports)\n });\n keys = [{\n pubkey: params.fromPubkey,\n isSigner: true,\n isWritable: true\n }, {\n pubkey: params.toPubkey,\n isSigner: false,\n isWritable: true\n }];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data\n });\n }\n /**\n * Generate a transaction instruction that assigns an account to a program\n */\n\n\n static assign(params) {\n let data;\n let keys;\n\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AssignWithSeed;\n data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n programId: toBuffer(params.programId.toBuffer())\n });\n keys = [{\n pubkey: params.accountPubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: params.basePubkey,\n isSigner: true,\n isWritable: false\n }];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Assign;\n data = encodeData(type, {\n programId: toBuffer(params.programId.toBuffer())\n });\n keys = [{\n pubkey: params.accountPubkey,\n isSigner: true,\n isWritable: true\n }];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data\n });\n }\n /**\n * Generate a transaction instruction that creates a new account at\n * an address generated with `from`, a seed, and programId\n */\n\n\n static createAccountWithSeed(params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.CreateWithSeed;\n const data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n lamports: params.lamports,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer())\n });\n let keys = [{\n pubkey: params.fromPubkey,\n isSigner: true,\n isWritable: true\n }, {\n pubkey: params.newAccountPubkey,\n isSigner: false,\n isWritable: true\n }];\n\n if (params.basePubkey != params.fromPubkey) {\n keys.push({\n pubkey: params.basePubkey,\n isSigner: true,\n isWritable: false\n });\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data\n });\n }\n /**\n * Generate a transaction that creates a new Nonce account\n */\n\n\n static createNonceAccount(params) {\n const transaction = new Transaction();\n\n if ('basePubkey' in params && 'seed' in params) {\n transaction.add(SystemProgram.createAccountWithSeed({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.noncePubkey,\n basePubkey: params.basePubkey,\n seed: params.seed,\n lamports: params.lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: this.programId\n }));\n } else {\n transaction.add(SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.noncePubkey,\n lamports: params.lamports,\n space: NONCE_ACCOUNT_LENGTH,\n programId: this.programId\n }));\n }\n\n const initParams = {\n noncePubkey: params.noncePubkey,\n authorizedPubkey: params.authorizedPubkey\n };\n transaction.add(this.nonceInitialize(initParams));\n return transaction;\n }\n /**\n * Generate an instruction to initialize a Nonce account\n */\n\n\n static nonceInitialize(params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.InitializeNonceAccount;\n const data = encodeData(type, {\n authorized: toBuffer(params.authorizedPubkey.toBuffer())\n });\n const instructionData = {\n keys: [{\n pubkey: params.noncePubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false\n }],\n programId: this.programId,\n data\n };\n return new TransactionInstruction(instructionData);\n }\n /**\n * Generate an instruction to advance the nonce in a Nonce account\n */\n\n\n static nonceAdvance(params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AdvanceNonceAccount;\n const data = encodeData(type);\n const instructionData = {\n keys: [{\n pubkey: params.noncePubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: params.authorizedPubkey,\n isSigner: true,\n isWritable: false\n }],\n programId: this.programId,\n data\n };\n return new TransactionInstruction(instructionData);\n }\n /**\n * Generate a transaction instruction that withdraws lamports from a Nonce account\n */\n\n\n static nonceWithdraw(params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.WithdrawNonceAccount;\n const data = encodeData(type, {\n lamports: params.lamports\n });\n return new TransactionInstruction({\n keys: [{\n pubkey: params.noncePubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: params.toPubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: SYSVAR_RECENT_BLOCKHASHES_PUBKEY,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: params.authorizedPubkey,\n isSigner: true,\n isWritable: false\n }],\n programId: this.programId,\n data\n });\n }\n /**\n * Generate a transaction instruction that authorizes a new PublicKey as the authority\n * on a Nonce account.\n */\n\n\n static nonceAuthorize(params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AuthorizeNonceAccount;\n const data = encodeData(type, {\n authorized: toBuffer(params.newAuthorizedPubkey.toBuffer())\n });\n return new TransactionInstruction({\n keys: [{\n pubkey: params.noncePubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: params.authorizedPubkey,\n isSigner: true,\n isWritable: false\n }],\n programId: this.programId,\n data\n });\n }\n /**\n * Generate a transaction instruction that allocates space in an account without funding\n */\n\n\n static allocate(params) {\n let data;\n let keys;\n\n if ('basePubkey' in params) {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.AllocateWithSeed;\n data = encodeData(type, {\n base: toBuffer(params.basePubkey.toBuffer()),\n seed: params.seed,\n space: params.space,\n programId: toBuffer(params.programId.toBuffer())\n });\n keys = [{\n pubkey: params.accountPubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: params.basePubkey,\n isSigner: true,\n isWritable: false\n }];\n } else {\n const type = SYSTEM_INSTRUCTION_LAYOUTS.Allocate;\n data = encodeData(type, {\n space: params.space\n });\n keys = [{\n pubkey: params.accountPubkey,\n isSigner: true,\n isWritable: true\n }];\n }\n\n return new TransactionInstruction({\n keys,\n programId: this.programId,\n data\n });\n }\n\n}\nSystemProgram.programId = new PublicKey('11111111111111111111111111111111');\n\n// Keep program chunks under PACKET_DATA_SIZE, leaving enough room for the\n// rest of the Transaction fields\n//\n// TODO: replace 300 with a proper constant for the size of the other\n// Transaction fields\nconst CHUNK_SIZE = PACKET_DATA_SIZE - 300;\n/**\n * Program loader interface\n */\n\nclass Loader {\n /**\n * @internal\n */\n constructor() {}\n /**\n * Amount of program data placed in each load Transaction\n */\n\n\n /**\n * Minimum number of signatures required to load a program not including\n * retries\n *\n * Can be used to calculate transaction fees\n */\n static getMinNumSignatures(dataLength) {\n return 2 * ( // Every transaction requires two signatures (payer + program)\n Math.ceil(dataLength / Loader.chunkSize) + 1 + // Add one for Create transaction\n 1) // Add one for Finalize transaction\n ;\n }\n /**\n * Loads a generic program\n *\n * @param connection The connection to use\n * @param payer System account that pays to load the program\n * @param program Account to load the program into\n * @param programId Public key that identifies the loader\n * @param data Program octets\n * @return true if program was loaded successfully, false if program was already loaded\n */\n\n\n static async load(connection, payer, program, programId, data) {\n {\n const balanceNeeded = await connection.getMinimumBalanceForRentExemption(data.length); // Fetch program account info to check if it has already been created\n\n const programInfo = await connection.getAccountInfo(program.publicKey, 'confirmed');\n let transaction = null;\n\n if (programInfo !== null) {\n if (programInfo.executable) {\n console.error('Program load failed, account is already executable');\n return false;\n }\n\n if (programInfo.data.length !== data.length) {\n transaction = transaction || new Transaction();\n transaction.add(SystemProgram.allocate({\n accountPubkey: program.publicKey,\n space: data.length\n }));\n }\n\n if (!programInfo.owner.equals(programId)) {\n transaction = transaction || new Transaction();\n transaction.add(SystemProgram.assign({\n accountPubkey: program.publicKey,\n programId\n }));\n }\n\n if (programInfo.lamports < balanceNeeded) {\n transaction = transaction || new Transaction();\n transaction.add(SystemProgram.transfer({\n fromPubkey: payer.publicKey,\n toPubkey: program.publicKey,\n lamports: balanceNeeded - programInfo.lamports\n }));\n }\n } else {\n transaction = new Transaction().add(SystemProgram.createAccount({\n fromPubkey: payer.publicKey,\n newAccountPubkey: program.publicKey,\n lamports: balanceNeeded > 0 ? balanceNeeded : 1,\n space: data.length,\n programId\n }));\n } // If the account is already created correctly, skip this step\n // and proceed directly to loading instructions\n\n\n if (transaction !== null) {\n await sendAndConfirmTransaction(connection, transaction, [payer, program], {\n commitment: 'confirmed'\n });\n }\n }\n const dataLayout = BufferLayout.struct([BufferLayout.u32('instruction'), BufferLayout.u32('offset'), BufferLayout.u32('bytesLength'), BufferLayout.u32('bytesLengthPadding'), BufferLayout.seq(BufferLayout.u8('byte'), BufferLayout.offset(BufferLayout.u32(), -8), 'bytes')]);\n const chunkSize = Loader.chunkSize;\n let offset = 0;\n let array = data;\n let transactions = [];\n\n while (array.length > 0) {\n const bytes = array.slice(0, chunkSize);\n const data = Buffer.alloc(chunkSize + 16);\n dataLayout.encode({\n instruction: 0,\n // Load instruction\n offset,\n bytes: bytes,\n bytesLength: 0,\n bytesLengthPadding: 0\n }, data);\n const transaction = new Transaction().add({\n keys: [{\n pubkey: program.publicKey,\n isSigner: true,\n isWritable: true\n }],\n programId,\n data\n });\n transactions.push(sendAndConfirmTransaction(connection, transaction, [payer, program], {\n commitment: 'confirmed'\n })); // Delay between sends in an attempt to reduce rate limit errors\n\n if (connection._rpcEndpoint.includes('solana.com')) {\n const REQUESTS_PER_SECOND = 4;\n await sleep(1000 / REQUESTS_PER_SECOND);\n }\n\n offset += chunkSize;\n array = array.slice(chunkSize);\n }\n\n await Promise.all(transactions); // Finalize the account loaded with program data for execution\n\n {\n const dataLayout = BufferLayout.struct([BufferLayout.u32('instruction')]);\n const data = Buffer.alloc(dataLayout.span);\n dataLayout.encode({\n instruction: 1 // Finalize instruction\n\n }, data);\n const transaction = new Transaction().add({\n keys: [{\n pubkey: program.publicKey,\n isSigner: true,\n isWritable: true\n }, {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false\n }],\n programId,\n data\n });\n await sendAndConfirmTransaction(connection, transaction, [payer, program], {\n commitment: 'confirmed'\n });\n } // success\n\n return true;\n }\n\n}\nLoader.chunkSize = CHUNK_SIZE;\n\nconst BPF_LOADER_PROGRAM_ID = new PublicKey('BPFLoader2111111111111111111111111111111111');\n/**\n * Factory class for transactions to interact with a program loader\n */\n\nclass BpfLoader {\n /**\n * Minimum number of signatures required to load a program not including\n * retries\n *\n * Can be used to calculate transaction fees\n */\n static getMinNumSignatures(dataLength) {\n return Loader.getMinNumSignatures(dataLength);\n }\n /**\n * Load a SBF program\n *\n * @param connection The connection to use\n * @param payer Account that will pay program loading fees\n * @param program Account to load the program into\n * @param elf The entire ELF containing the SBF program\n * @param loaderProgramId The program id of the BPF loader to use\n * @return true if program was loaded successfully, false if program was already loaded\n */\n\n\n static load(connection, payer, program, elf, loaderProgramId) {\n return Loader.load(connection, payer, program, loaderProgramId, elf);\n }\n\n}\n\nvar objToString = Object.prototype.toString;\nvar objKeys = Object.keys || function(obj) {\n\t\tvar keys = [];\n\t\tfor (var name in obj) {\n\t\t\tkeys.push(name);\n\t\t}\n\t\treturn keys;\n\t};\n\nfunction stringify(val, isArrayProp) {\n\tvar i, max, str, keys, key, propVal, toStr;\n\tif (val === true) {\n\t\treturn \"true\";\n\t}\n\tif (val === false) {\n\t\treturn \"false\";\n\t}\n\tswitch (typeof val) {\n\t\tcase \"object\":\n\t\t\tif (val === null) {\n\t\t\t\treturn null;\n\t\t\t} else if (val.toJSON && typeof val.toJSON === \"function\") {\n\t\t\t\treturn stringify(val.toJSON(), isArrayProp);\n\t\t\t} else {\n\t\t\t\ttoStr = objToString.call(val);\n\t\t\t\tif (toStr === \"[object Array]\") {\n\t\t\t\t\tstr = '[';\n\t\t\t\t\tmax = val.length - 1;\n\t\t\t\t\tfor(i = 0; i < max; i++) {\n\t\t\t\t\t\tstr += stringify(val[i], true) + ',';\n\t\t\t\t\t}\n\t\t\t\t\tif (max > -1) {\n\t\t\t\t\t\tstr += stringify(val[i], true);\n\t\t\t\t\t}\n\t\t\t\t\treturn str + ']';\n\t\t\t\t} else if (toStr === \"[object Object]\") {\n\t\t\t\t\t// only object is left\n\t\t\t\t\tkeys = objKeys(val).sort();\n\t\t\t\t\tmax = keys.length;\n\t\t\t\t\tstr = \"\";\n\t\t\t\t\ti = 0;\n\t\t\t\t\twhile (i < max) {\n\t\t\t\t\t\tkey = keys[i];\n\t\t\t\t\t\tpropVal = stringify(val[key], false);\n\t\t\t\t\t\tif (propVal !== undefined) {\n\t\t\t\t\t\t\tif (str) {\n\t\t\t\t\t\t\t\tstr += ',';\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\tstr += JSON.stringify(key) + ':' + propVal;\n\t\t\t\t\t\t}\n\t\t\t\t\t\ti++;\n\t\t\t\t\t}\n\t\t\t\t\treturn '{' + str + '}';\n\t\t\t\t} else {\n\t\t\t\t\treturn JSON.stringify(val);\n\t\t\t\t}\n\t\t\t}\n\t\tcase \"function\":\n\t\tcase \"undefined\":\n\t\t\treturn isArrayProp ? null : undefined;\n\t\tcase \"string\":\n\t\t\treturn JSON.stringify(val);\n\t\tdefault:\n\t\t\treturn isFinite(val) ? val : null;\n\t}\n}\n\nvar fastStableStringify = function(val) {\n\tvar returnVal = stringify(val, false);\n\tif (returnVal !== undefined) {\n\t\treturn ''+ returnVal;\n\t}\n};\n\nvar fastStableStringify$1 = fastStableStringify;\n\nconst MINIMUM_SLOT_PER_EPOCH = 32; // Returns the number of trailing zeros in the binary representation of self.\n\nfunction trailingZeros(n) {\n let trailingZeros = 0;\n\n while (n > 1) {\n n /= 2;\n trailingZeros++;\n }\n\n return trailingZeros;\n} // Returns the smallest power of two greater than or equal to n\n\n\nfunction nextPowerOfTwo(n) {\n if (n === 0) return 1;\n n--;\n n |= n >> 1;\n n |= n >> 2;\n n |= n >> 4;\n n |= n >> 8;\n n |= n >> 16;\n n |= n >> 32;\n return n + 1;\n}\n/**\n * Epoch schedule\n * (see https://docs.solana.com/terminology#epoch)\n * Can be retrieved with the {@link Connection.getEpochSchedule} method\n */\n\n\nclass EpochSchedule {\n /** The maximum number of slots in each epoch */\n\n /** The number of slots before beginning of an epoch to calculate a leader schedule for that epoch */\n\n /** Indicates whether epochs start short and grow */\n\n /** The first epoch with `slotsPerEpoch` slots */\n\n /** The first slot of `firstNormalEpoch` */\n constructor(slotsPerEpoch, leaderScheduleSlotOffset, warmup, firstNormalEpoch, firstNormalSlot) {\n this.slotsPerEpoch = void 0;\n this.leaderScheduleSlotOffset = void 0;\n this.warmup = void 0;\n this.firstNormalEpoch = void 0;\n this.firstNormalSlot = void 0;\n this.slotsPerEpoch = slotsPerEpoch;\n this.leaderScheduleSlotOffset = leaderScheduleSlotOffset;\n this.warmup = warmup;\n this.firstNormalEpoch = firstNormalEpoch;\n this.firstNormalSlot = firstNormalSlot;\n }\n\n getEpoch(slot) {\n return this.getEpochAndSlotIndex(slot)[0];\n }\n\n getEpochAndSlotIndex(slot) {\n if (slot < this.firstNormalSlot) {\n const epoch = trailingZeros(nextPowerOfTwo(slot + MINIMUM_SLOT_PER_EPOCH + 1)) - trailingZeros(MINIMUM_SLOT_PER_EPOCH) - 1;\n const epochLen = this.getSlotsInEpoch(epoch);\n const slotIndex = slot - (epochLen - MINIMUM_SLOT_PER_EPOCH);\n return [epoch, slotIndex];\n } else {\n const normalSlotIndex = slot - this.firstNormalSlot;\n const normalEpochIndex = Math.floor(normalSlotIndex / this.slotsPerEpoch);\n const epoch = this.firstNormalEpoch + normalEpochIndex;\n const slotIndex = normalSlotIndex % this.slotsPerEpoch;\n return [epoch, slotIndex];\n }\n }\n\n getFirstSlotInEpoch(epoch) {\n if (epoch <= this.firstNormalEpoch) {\n return (Math.pow(2, epoch) - 1) * MINIMUM_SLOT_PER_EPOCH;\n } else {\n return (epoch - this.firstNormalEpoch) * this.slotsPerEpoch + this.firstNormalSlot;\n }\n }\n\n getLastSlotInEpoch(epoch) {\n return this.getFirstSlotInEpoch(epoch) + this.getSlotsInEpoch(epoch) - 1;\n }\n\n getSlotsInEpoch(epoch) {\n if (epoch < this.firstNormalEpoch) {\n return Math.pow(2, epoch + trailingZeros(MINIMUM_SLOT_PER_EPOCH));\n } else {\n return this.slotsPerEpoch;\n }\n }\n\n}\n\nclass SendTransactionError extends Error {\n constructor(message, logs) {\n super(message);\n this.logs = void 0;\n this.logs = logs;\n }\n\n} // Keep in sync with client/src/rpc_custom_errors.rs\n// Typescript `enums` thwart tree-shaking. See https://bargsten.org/jsts/enums/\n\nconst SolanaJSONRPCErrorCode = {\n JSON_RPC_SERVER_ERROR_BLOCK_CLEANED_UP: -32001,\n JSON_RPC_SERVER_ERROR_SEND_TRANSACTION_PREFLIGHT_FAILURE: -32002,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_VERIFICATION_FAILURE: -32003,\n JSON_RPC_SERVER_ERROR_BLOCK_NOT_AVAILABLE: -32004,\n JSON_RPC_SERVER_ERROR_NODE_UNHEALTHY: -32005,\n JSON_RPC_SERVER_ERROR_TRANSACTION_PRECOMPILE_VERIFICATION_FAILURE: -32006,\n JSON_RPC_SERVER_ERROR_SLOT_SKIPPED: -32007,\n JSON_RPC_SERVER_ERROR_NO_SNAPSHOT: -32008,\n JSON_RPC_SERVER_ERROR_LONG_TERM_STORAGE_SLOT_SKIPPED: -32009,\n JSON_RPC_SERVER_ERROR_KEY_EXCLUDED_FROM_SECONDARY_INDEX: -32010,\n JSON_RPC_SERVER_ERROR_TRANSACTION_HISTORY_NOT_AVAILABLE: -32011,\n JSON_RPC_SCAN_ERROR: -32012,\n JSON_RPC_SERVER_ERROR_TRANSACTION_SIGNATURE_LEN_MISMATCH: -32013,\n JSON_RPC_SERVER_ERROR_BLOCK_STATUS_NOT_AVAILABLE_YET: -32014,\n JSON_RPC_SERVER_ERROR_UNSUPPORTED_TRANSACTION_VERSION: -32015,\n JSON_RPC_SERVER_ERROR_MIN_CONTEXT_SLOT_NOT_REACHED: -32016\n};\nclass SolanaJSONRPCError extends Error {\n constructor({\n code,\n message,\n data\n }, customMessage) {\n super(customMessage != null ? `${customMessage}: ${message}` : message);\n this.code = void 0;\n this.data = void 0;\n this.code = code;\n this.data = data;\n this.name = 'SolanaJSONRPCError';\n }\n\n}\n\nvar fetchImpl = globalThis.fetch;\n\n// TODO: These constants should be removed in favor of reading them out of a\n// Syscall account\n\n/**\n * @internal\n */\nconst NUM_TICKS_PER_SECOND = 160;\n/**\n * @internal\n */\n\nconst DEFAULT_TICKS_PER_SLOT = 64;\n/**\n * @internal\n */\n\nconst NUM_SLOTS_PER_SECOND = NUM_TICKS_PER_SECOND / DEFAULT_TICKS_PER_SLOT;\n/**\n * @internal\n */\n\nconst MS_PER_SLOT = 1000 / NUM_SLOTS_PER_SECOND;\n\n/**\n * @internal\n */\n\n/**\n * Decode account data buffer using an AccountType\n * @internal\n */\nfunction decodeData(type, data) {\n let decoded;\n\n try {\n decoded = type.layout.decode(data);\n } catch (err) {\n throw new Error('invalid instruction; ' + err);\n }\n\n if (decoded.typeIndex !== type.index) {\n throw new Error(`invalid account data; account type mismatch ${decoded.typeIndex} != ${type.index}`);\n }\n\n return decoded;\n}\n\n/// The serialized size of lookup table metadata\nconst LOOKUP_TABLE_META_SIZE = 56;\nclass AddressLookupTableAccount {\n constructor(args) {\n this.key = void 0;\n this.state = void 0;\n this.key = args.key;\n this.state = args.state;\n }\n\n isActive() {\n const U64_MAX = BigInt('0xffffffffffffffff');\n return this.state.deactivationSlot === U64_MAX;\n }\n\n static deserialize(accountData) {\n const meta = decodeData(LookupTableMetaLayout, accountData);\n const serializedAddressesLen = accountData.length - LOOKUP_TABLE_META_SIZE;\n assert(serializedAddressesLen >= 0, 'lookup table is invalid');\n assert(serializedAddressesLen % 32 === 0, 'lookup table is invalid');\n const numSerializedAddresses = serializedAddressesLen / 32;\n const {\n addresses\n } = BufferLayout.struct([BufferLayout.seq(publicKey(), numSerializedAddresses, 'addresses')]).decode(accountData.slice(LOOKUP_TABLE_META_SIZE));\n return {\n deactivationSlot: meta.deactivationSlot,\n lastExtendedSlot: meta.lastExtendedSlot,\n lastExtendedSlotStartIndex: meta.lastExtendedStartIndex,\n authority: meta.authority.length !== 0 ? new PublicKey(meta.authority[0]) : undefined,\n addresses: addresses.map(address => new PublicKey(address))\n };\n }\n\n}\nconst LookupTableMetaLayout = {\n index: 1,\n layout: BufferLayout.struct([BufferLayout.u32('typeIndex'), u64('deactivationSlot'), BufferLayout.nu64('lastExtendedSlot'), BufferLayout.u8('lastExtendedStartIndex'), BufferLayout.u8(), // option\n BufferLayout.seq(publicKey(), BufferLayout.offset(BufferLayout.u8(), -1), 'authority')])\n};\n\nconst URL_RE = /^[^:]+:\\/\\/([^:[]+|\\[[^\\]]+\\])(:\\d+)?(.*)/i;\nfunction makeWebsocketUrl(endpoint) {\n const matches = endpoint.match(URL_RE);\n\n if (matches == null) {\n throw TypeError(`Failed to validate endpoint URL \\`${endpoint}\\``);\n }\n\n const [_, // eslint-disable-line @typescript-eslint/no-unused-vars\n hostish, portWithColon, rest] = matches;\n const protocol = endpoint.startsWith('https:') ? 'wss:' : 'ws:';\n const startPort = portWithColon == null ? null : parseInt(portWithColon.slice(1), 10);\n const websocketPort = // Only shift the port by +1 as a convention for ws(s) only if given endpoint\n // is explictly specifying the endpoint port (HTTP-based RPC), assuming\n // we're directly trying to connect to solana-validator's ws listening port.\n // When the endpoint omits the port, we're connecting to the protocol\n // default ports: http(80) or https(443) and it's assumed we're behind a reverse\n // proxy which manages WebSocket upgrade and backend port redirection.\n startPort == null ? '' : `:${startPort + 1}`;\n return `${protocol}//${hostish}${websocketPort}${rest}`;\n}\n\nvar _process$env$npm_pack;\nconst PublicKeyFromString = coerce(instance(PublicKey), string(), value => new PublicKey(value));\nconst RawAccountDataResult = tuple([string(), literal('base64')]);\nconst BufferFromRawAccountData = coerce(instance(Buffer), RawAccountDataResult, value => Buffer.from(value[0], 'base64'));\n/**\n * Attempt to use a recent blockhash for up to 30 seconds\n * @internal\n */\n\nconst BLOCKHASH_CACHE_TIMEOUT_MS = 30 * 1000;\n/**\n * HACK.\n * Copied from rpc-websockets/dist/lib/client.\n * Otherwise, `yarn build` fails with:\n * https://gist.github.com/steveluscher/c057eca81d479ef705cdb53162f9971d\n */\n\n/* @internal */\nfunction assertEndpointUrl(putativeUrl) {\n if (/^https?:/.test(putativeUrl) === false) {\n throw new TypeError('Endpoint URL must start with `http:` or `https:`.');\n }\n\n return putativeUrl;\n}\n/** @internal */\n\n\nfunction extractCommitmentFromConfig(commitmentOrConfig) {\n let commitment;\n let config;\n\n if (typeof commitmentOrConfig === 'string') {\n commitment = commitmentOrConfig;\n } else if (commitmentOrConfig) {\n const {\n commitment: specifiedCommitment,\n ...specifiedConfig\n } = commitmentOrConfig;\n commitment = specifiedCommitment;\n config = specifiedConfig;\n }\n\n return {\n commitment,\n config\n };\n}\n/**\n * @internal\n */\n\n\nfunction createRpcResult(result) {\n return union([type({\n jsonrpc: literal('2.0'),\n id: string(),\n result\n }), type({\n jsonrpc: literal('2.0'),\n id: string(),\n error: type({\n code: unknown(),\n message: string(),\n data: optional(any())\n })\n })]);\n}\n\nconst UnknownRpcResult = createRpcResult(unknown());\n/**\n * @internal\n */\n\nfunction jsonRpcResult(schema) {\n return coerce(createRpcResult(schema), UnknownRpcResult, value => {\n if ('error' in value) {\n return value;\n } else {\n return { ...value,\n result: create(value.result, schema)\n };\n }\n });\n}\n/**\n * @internal\n */\n\n\nfunction jsonRpcResultAndContext(value) {\n return jsonRpcResult(type({\n context: type({\n slot: number()\n }),\n value\n }));\n}\n/**\n * @internal\n */\n\n\nfunction notificationResultAndContext(value) {\n return type({\n context: type({\n slot: number()\n }),\n value\n });\n}\n/**\n * @internal\n */\n\n\nfunction versionedMessageFromResponse(version, response) {\n if (version === 0) {\n return new MessageV0({\n header: response.header,\n staticAccountKeys: response.accountKeys.map(accountKey => new PublicKey(accountKey)),\n recentBlockhash: response.recentBlockhash,\n compiledInstructions: response.instructions.map(ix => ({\n programIdIndex: ix.programIdIndex,\n accountKeyIndexes: ix.accounts,\n data: bs58.decode(ix.data)\n })),\n addressTableLookups: response.addressTableLookups\n });\n } else {\n return new Message(response);\n }\n}\n/**\n * The level of commitment desired when querying state\n *
\n *   'processed': Query the most recent block which has reached 1 confirmation by the connected node\n *   'confirmed': Query the most recent block which has reached 1 confirmation by the cluster\n *   'finalized': Query the most recent block which has been finalized by the cluster\n * 
\n */\n\n\nconst GetInflationGovernorResult = type({\n foundation: number(),\n foundationTerm: number(),\n initial: number(),\n taper: number(),\n terminal: number()\n});\n/**\n * The inflation reward for an epoch\n */\n\n/**\n * Expected JSON RPC response for the \"getInflationReward\" message\n */\nconst GetInflationRewardResult = jsonRpcResult(array(nullable(type({\n epoch: number(),\n effectiveSlot: number(),\n amount: number(),\n postBalance: number(),\n commission: optional(nullable(number()))\n}))));\n\n/**\n * Expected JSON RPC response for the \"getInflationRate\" message\n */\nconst GetInflationRateResult = type({\n total: number(),\n validator: number(),\n foundation: number(),\n epoch: number()\n});\n/**\n * Information about the current epoch\n */\n\nconst GetEpochInfoResult = type({\n epoch: number(),\n slotIndex: number(),\n slotsInEpoch: number(),\n absoluteSlot: number(),\n blockHeight: optional(number()),\n transactionCount: optional(number())\n});\nconst GetEpochScheduleResult = type({\n slotsPerEpoch: number(),\n leaderScheduleSlotOffset: number(),\n warmup: boolean(),\n firstNormalEpoch: number(),\n firstNormalSlot: number()\n});\n/**\n * Leader schedule\n * (see https://docs.solana.com/terminology#leader-schedule)\n */\n\nconst GetLeaderScheduleResult = record(string(), array(number()));\n/**\n * Transaction error or null\n */\n\nconst TransactionErrorResult = nullable(union([type({}), string()]));\n/**\n * Signature status for a transaction\n */\n\nconst SignatureStatusResult = type({\n err: TransactionErrorResult\n});\n/**\n * Transaction signature received notification\n */\n\nconst SignatureReceivedResult = literal('receivedSignature');\n/**\n * Version info for a node\n */\n\nconst VersionResult = type({\n 'solana-core': string(),\n 'feature-set': optional(number())\n});\nconst SimulatedTransactionResponseStruct = jsonRpcResultAndContext(type({\n err: nullable(union([type({}), string()])),\n logs: nullable(array(string())),\n accounts: optional(nullable(array(nullable(type({\n executable: boolean(),\n owner: string(),\n lamports: number(),\n data: array(string()),\n rentEpoch: optional(number())\n }))))),\n unitsConsumed: optional(number()),\n returnData: optional(nullable(type({\n programId: string(),\n data: tuple([string(), literal('base64')])\n })))\n}));\n\n/**\n * Expected JSON RPC response for the \"getBlockProduction\" message\n */\nconst BlockProductionResponseStruct = jsonRpcResultAndContext(type({\n byIdentity: record(string(), array(number())),\n range: type({\n firstSlot: number(),\n lastSlot: number()\n })\n}));\n/**\n * A performance sample\n */\n\nfunction createRpcClient(url, httpHeaders, customFetch, fetchMiddleware, disableRetryOnRateLimit, httpAgent) {\n const fetch = customFetch ? customFetch : fetchImpl;\n let agent;\n\n {\n if (httpAgent != null) {\n console.warn('You have supplied an `httpAgent` when creating a `Connection` in a browser environment.' + 'It has been ignored; `httpAgent` is only used in Node environments.');\n }\n }\n\n let fetchWithMiddleware;\n\n if (fetchMiddleware) {\n fetchWithMiddleware = async (info, init) => {\n const modifiedFetchArgs = await new Promise((resolve, reject) => {\n try {\n fetchMiddleware(info, init, (modifiedInfo, modifiedInit) => resolve([modifiedInfo, modifiedInit]));\n } catch (error) {\n reject(error);\n }\n });\n return await fetch(...modifiedFetchArgs);\n };\n }\n\n const clientBrowser = new RpcClient(async (request, callback) => {\n const options = {\n method: 'POST',\n body: request,\n agent,\n headers: Object.assign({\n 'Content-Type': 'application/json'\n }, httpHeaders || {}, COMMON_HTTP_HEADERS)\n };\n\n try {\n let too_many_requests_retries = 5;\n let res;\n let waitTime = 500;\n\n for (;;) {\n if (fetchWithMiddleware) {\n res = await fetchWithMiddleware(url, options);\n } else {\n res = await fetch(url, options);\n }\n\n if (res.status !== 429\n /* Too many requests */\n ) {\n break;\n }\n\n if (disableRetryOnRateLimit === true) {\n break;\n }\n\n too_many_requests_retries -= 1;\n\n if (too_many_requests_retries === 0) {\n break;\n }\n\n console.log(`Server responded with ${res.status} ${res.statusText}. Retrying after ${waitTime}ms delay...`);\n await sleep(waitTime);\n waitTime *= 2;\n }\n\n const text = await res.text();\n\n if (res.ok) {\n callback(null, text);\n } else {\n callback(new Error(`${res.status} ${res.statusText}: ${text}`));\n }\n } catch (err) {\n if (err instanceof Error) callback(err);\n }\n }, {});\n return clientBrowser;\n}\n\nfunction createRpcRequest(client) {\n return (method, args) => {\n return new Promise((resolve, reject) => {\n client.request(method, args, (err, response) => {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(response);\n });\n });\n };\n}\n\nfunction createRpcBatchRequest(client) {\n return requests => {\n return new Promise((resolve, reject) => {\n // Do nothing if requests is empty\n if (requests.length === 0) resolve([]);\n const batch = requests.map(params => {\n return client.request(params.methodName, params.args);\n });\n client.request(batch, (err, response) => {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(response);\n });\n });\n };\n}\n/**\n * Expected JSON RPC response for the \"getInflationGovernor\" message\n */\n\n\nconst GetInflationGovernorRpcResult = jsonRpcResult(GetInflationGovernorResult);\n/**\n * Expected JSON RPC response for the \"getInflationRate\" message\n */\n\nconst GetInflationRateRpcResult = jsonRpcResult(GetInflationRateResult);\n/**\n * Expected JSON RPC response for the \"getEpochInfo\" message\n */\n\nconst GetEpochInfoRpcResult = jsonRpcResult(GetEpochInfoResult);\n/**\n * Expected JSON RPC response for the \"getEpochSchedule\" message\n */\n\nconst GetEpochScheduleRpcResult = jsonRpcResult(GetEpochScheduleResult);\n/**\n * Expected JSON RPC response for the \"getLeaderSchedule\" message\n */\n\nconst GetLeaderScheduleRpcResult = jsonRpcResult(GetLeaderScheduleResult);\n/**\n * Expected JSON RPC response for the \"minimumLedgerSlot\" and \"getFirstAvailableBlock\" messages\n */\n\nconst SlotRpcResult = jsonRpcResult(number());\n/**\n * Supply\n */\n\n/**\n * Expected JSON RPC response for the \"getSupply\" message\n */\nconst GetSupplyRpcResult = jsonRpcResultAndContext(type({\n total: number(),\n circulating: number(),\n nonCirculating: number(),\n nonCirculatingAccounts: array(PublicKeyFromString)\n}));\n/**\n * Token amount object which returns a token amount in different formats\n * for various client use cases.\n */\n\n/**\n * Expected JSON RPC structure for token amounts\n */\nconst TokenAmountResult = type({\n amount: string(),\n uiAmount: nullable(number()),\n decimals: number(),\n uiAmountString: optional(string())\n});\n/**\n * Token address and balance.\n */\n\n/**\n * Expected JSON RPC response for the \"getTokenLargestAccounts\" message\n */\nconst GetTokenLargestAccountsResult = jsonRpcResultAndContext(array(type({\n address: PublicKeyFromString,\n amount: string(),\n uiAmount: nullable(number()),\n decimals: number(),\n uiAmountString: optional(string())\n})));\n/**\n * Expected JSON RPC response for the \"getTokenAccountsByOwner\" message\n */\n\nconst GetTokenAccountsByOwner = jsonRpcResultAndContext(array(type({\n pubkey: PublicKeyFromString,\n account: type({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: BufferFromRawAccountData,\n rentEpoch: number()\n })\n})));\nconst ParsedAccountDataResult = type({\n program: string(),\n parsed: unknown(),\n space: number()\n});\n/**\n * Expected JSON RPC response for the \"getTokenAccountsByOwner\" message with parsed data\n */\n\nconst GetParsedTokenAccountsByOwner = jsonRpcResultAndContext(array(type({\n pubkey: PublicKeyFromString,\n account: type({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: ParsedAccountDataResult,\n rentEpoch: number()\n })\n})));\n/**\n * Pair of an account address and its balance\n */\n\n/**\n * Expected JSON RPC response for the \"getLargestAccounts\" message\n */\nconst GetLargestAccountsRpcResult = jsonRpcResultAndContext(array(type({\n lamports: number(),\n address: PublicKeyFromString\n})));\n/**\n * @internal\n */\n\nconst AccountInfoResult = type({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: BufferFromRawAccountData,\n rentEpoch: number()\n});\n/**\n * @internal\n */\n\nconst KeyedAccountInfoResult = type({\n pubkey: PublicKeyFromString,\n account: AccountInfoResult\n});\nconst ParsedOrRawAccountData = coerce(union([instance(Buffer), ParsedAccountDataResult]), union([RawAccountDataResult, ParsedAccountDataResult]), value => {\n if (Array.isArray(value)) {\n return create(value, BufferFromRawAccountData);\n } else {\n return value;\n }\n});\n/**\n * @internal\n */\n\nconst ParsedAccountInfoResult = type({\n executable: boolean(),\n owner: PublicKeyFromString,\n lamports: number(),\n data: ParsedOrRawAccountData,\n rentEpoch: number()\n});\nconst KeyedParsedAccountInfoResult = type({\n pubkey: PublicKeyFromString,\n account: ParsedAccountInfoResult\n});\n/**\n * @internal\n */\n\nconst StakeActivationResult = type({\n state: union([literal('active'), literal('inactive'), literal('activating'), literal('deactivating')]),\n active: number(),\n inactive: number()\n});\n/**\n * Expected JSON RPC response for the \"getConfirmedSignaturesForAddress2\" message\n */\n\nconst GetConfirmedSignaturesForAddress2RpcResult = jsonRpcResult(array(type({\n signature: string(),\n slot: number(),\n err: TransactionErrorResult,\n memo: nullable(string()),\n blockTime: optional(nullable(number()))\n})));\n/**\n * Expected JSON RPC response for the \"getSignaturesForAddress\" message\n */\n\nconst GetSignaturesForAddressRpcResult = jsonRpcResult(array(type({\n signature: string(),\n slot: number(),\n err: TransactionErrorResult,\n memo: nullable(string()),\n blockTime: optional(nullable(number()))\n})));\n/***\n * Expected JSON RPC response for the \"accountNotification\" message\n */\n\nconst AccountNotificationResult = type({\n subscription: number(),\n result: notificationResultAndContext(AccountInfoResult)\n});\n/**\n * @internal\n */\n\nconst ProgramAccountInfoResult = type({\n pubkey: PublicKeyFromString,\n account: AccountInfoResult\n});\n/***\n * Expected JSON RPC response for the \"programNotification\" message\n */\n\nconst ProgramAccountNotificationResult = type({\n subscription: number(),\n result: notificationResultAndContext(ProgramAccountInfoResult)\n});\n/**\n * @internal\n */\n\nconst SlotInfoResult = type({\n parent: number(),\n slot: number(),\n root: number()\n});\n/**\n * Expected JSON RPC response for the \"slotNotification\" message\n */\n\nconst SlotNotificationResult = type({\n subscription: number(),\n result: SlotInfoResult\n});\n/**\n * Slot updates which can be used for tracking the live progress of a cluster.\n * - `\"firstShredReceived\"`: connected node received the first shred of a block.\n * Indicates that a new block that is being produced.\n * - `\"completed\"`: connected node has received all shreds of a block. Indicates\n * a block was recently produced.\n * - `\"optimisticConfirmation\"`: block was optimistically confirmed by the\n * cluster. It is not guaranteed that an optimistic confirmation notification\n * will be sent for every finalized blocks.\n * - `\"root\"`: the connected node rooted this block.\n * - `\"createdBank\"`: the connected node has started validating this block.\n * - `\"frozen\"`: the connected node has validated this block.\n * - `\"dead\"`: the connected node failed to validate this block.\n */\n\n/**\n * @internal\n */\nconst SlotUpdateResult = union([type({\n type: union([literal('firstShredReceived'), literal('completed'), literal('optimisticConfirmation'), literal('root')]),\n slot: number(),\n timestamp: number()\n}), type({\n type: literal('createdBank'),\n parent: number(),\n slot: number(),\n timestamp: number()\n}), type({\n type: literal('frozen'),\n slot: number(),\n timestamp: number(),\n stats: type({\n numTransactionEntries: number(),\n numSuccessfulTransactions: number(),\n numFailedTransactions: number(),\n maxTransactionsPerEntry: number()\n })\n}), type({\n type: literal('dead'),\n slot: number(),\n timestamp: number(),\n err: string()\n})]);\n/**\n * Expected JSON RPC response for the \"slotsUpdatesNotification\" message\n */\n\nconst SlotUpdateNotificationResult = type({\n subscription: number(),\n result: SlotUpdateResult\n});\n/**\n * Expected JSON RPC response for the \"signatureNotification\" message\n */\n\nconst SignatureNotificationResult = type({\n subscription: number(),\n result: notificationResultAndContext(union([SignatureStatusResult, SignatureReceivedResult]))\n});\n/**\n * Expected JSON RPC response for the \"rootNotification\" message\n */\n\nconst RootNotificationResult = type({\n subscription: number(),\n result: number()\n});\nconst ContactInfoResult = type({\n pubkey: string(),\n gossip: nullable(string()),\n tpu: nullable(string()),\n rpc: nullable(string()),\n version: nullable(string())\n});\nconst VoteAccountInfoResult = type({\n votePubkey: string(),\n nodePubkey: string(),\n activatedStake: number(),\n epochVoteAccount: boolean(),\n epochCredits: array(tuple([number(), number(), number()])),\n commission: number(),\n lastVote: number(),\n rootSlot: nullable(number())\n});\n/**\n * Expected JSON RPC response for the \"getVoteAccounts\" message\n */\n\nconst GetVoteAccounts = jsonRpcResult(type({\n current: array(VoteAccountInfoResult),\n delinquent: array(VoteAccountInfoResult)\n}));\nconst ConfirmationStatus = union([literal('processed'), literal('confirmed'), literal('finalized')]);\nconst SignatureStatusResponse = type({\n slot: number(),\n confirmations: nullable(number()),\n err: TransactionErrorResult,\n confirmationStatus: optional(ConfirmationStatus)\n});\n/**\n * Expected JSON RPC response for the \"getSignatureStatuses\" message\n */\n\nconst GetSignatureStatusesRpcResult = jsonRpcResultAndContext(array(nullable(SignatureStatusResponse)));\n/**\n * Expected JSON RPC response for the \"getMinimumBalanceForRentExemption\" message\n */\n\nconst GetMinimumBalanceForRentExemptionRpcResult = jsonRpcResult(number());\nconst AddressTableLookupStruct = type({\n accountKey: PublicKeyFromString,\n writableIndexes: array(number()),\n readonlyIndexes: array(number())\n});\nconst ConfirmedTransactionResult = type({\n signatures: array(string()),\n message: type({\n accountKeys: array(string()),\n header: type({\n numRequiredSignatures: number(),\n numReadonlySignedAccounts: number(),\n numReadonlyUnsignedAccounts: number()\n }),\n instructions: array(type({\n accounts: array(number()),\n data: string(),\n programIdIndex: number()\n })),\n recentBlockhash: string(),\n addressTableLookups: optional(array(AddressTableLookupStruct))\n })\n});\nconst AnnotatedAccountKey = type({\n pubkey: PublicKeyFromString,\n signer: boolean(),\n writable: boolean(),\n source: optional(union([literal('transaction'), literal('lookupTable')]))\n});\nconst ConfirmedTransactionAccountsModeResult = type({\n accountKeys: array(AnnotatedAccountKey),\n signatures: array(string())\n});\nconst ParsedInstructionResult = type({\n parsed: unknown(),\n program: string(),\n programId: PublicKeyFromString\n});\nconst RawInstructionResult = type({\n accounts: array(PublicKeyFromString),\n data: string(),\n programId: PublicKeyFromString\n});\nconst InstructionResult = union([RawInstructionResult, ParsedInstructionResult]);\nconst UnknownInstructionResult = union([type({\n parsed: unknown(),\n program: string(),\n programId: string()\n}), type({\n accounts: array(string()),\n data: string(),\n programId: string()\n})]);\nconst ParsedOrRawInstruction = coerce(InstructionResult, UnknownInstructionResult, value => {\n if ('accounts' in value) {\n return create(value, RawInstructionResult);\n } else {\n return create(value, ParsedInstructionResult);\n }\n});\n/**\n * @internal\n */\n\nconst ParsedConfirmedTransactionResult = type({\n signatures: array(string()),\n message: type({\n accountKeys: array(AnnotatedAccountKey),\n instructions: array(ParsedOrRawInstruction),\n recentBlockhash: string(),\n addressTableLookups: optional(nullable(array(AddressTableLookupStruct)))\n })\n});\nconst TokenBalanceResult = type({\n accountIndex: number(),\n mint: string(),\n owner: optional(string()),\n uiTokenAmount: TokenAmountResult\n});\nconst LoadedAddressesResult = type({\n writable: array(PublicKeyFromString),\n readonly: array(PublicKeyFromString)\n});\n/**\n * @internal\n */\n\nconst ConfirmedTransactionMetaResult = type({\n err: TransactionErrorResult,\n fee: number(),\n innerInstructions: optional(nullable(array(type({\n index: number(),\n instructions: array(type({\n accounts: array(number()),\n data: string(),\n programIdIndex: number()\n }))\n })))),\n preBalances: array(number()),\n postBalances: array(number()),\n logMessages: optional(nullable(array(string()))),\n preTokenBalances: optional(nullable(array(TokenBalanceResult))),\n postTokenBalances: optional(nullable(array(TokenBalanceResult))),\n loadedAddresses: optional(LoadedAddressesResult),\n computeUnitsConsumed: optional(number())\n});\n/**\n * @internal\n */\n\nconst ParsedConfirmedTransactionMetaResult = type({\n err: TransactionErrorResult,\n fee: number(),\n innerInstructions: optional(nullable(array(type({\n index: number(),\n instructions: array(ParsedOrRawInstruction)\n })))),\n preBalances: array(number()),\n postBalances: array(number()),\n logMessages: optional(nullable(array(string()))),\n preTokenBalances: optional(nullable(array(TokenBalanceResult))),\n postTokenBalances: optional(nullable(array(TokenBalanceResult))),\n loadedAddresses: optional(LoadedAddressesResult),\n computeUnitsConsumed: optional(number())\n});\nconst TransactionVersionStruct = union([literal(0), literal('legacy')]);\n/** @internal */\n\nconst RewardsResult = type({\n pubkey: string(),\n lamports: number(),\n postBalance: nullable(number()),\n rewardType: nullable(string()),\n commission: optional(nullable(number()))\n});\n/**\n * Expected JSON RPC response for the \"getBlock\" message\n */\n\nconst GetBlockRpcResult = jsonRpcResult(nullable(type({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(type({\n transaction: ConfirmedTransactionResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct)\n })),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number())\n})));\n/**\n * Expected JSON RPC response for the \"getBlock\" message when `transactionDetails` is `none`\n */\n\nconst GetNoneModeBlockRpcResult = jsonRpcResult(nullable(type({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number())\n})));\n/**\n * Expected JSON RPC response for the \"getBlock\" message when `transactionDetails` is `accounts`\n */\n\nconst GetAccountsModeBlockRpcResult = jsonRpcResult(nullable(type({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(type({\n transaction: ConfirmedTransactionAccountsModeResult,\n meta: nullable(ConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct)\n })),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number())\n})));\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message\n */\n\nconst GetParsedBlockRpcResult = jsonRpcResult(nullable(type({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(type({\n transaction: ParsedConfirmedTransactionResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct)\n })),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number())\n})));\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message when `transactionDetails` is `accounts`\n */\n\nconst GetParsedAccountsModeBlockRpcResult = jsonRpcResult(nullable(type({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(type({\n transaction: ConfirmedTransactionAccountsModeResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n version: optional(TransactionVersionStruct)\n })),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number())\n})));\n/**\n * Expected parsed JSON RPC response for the \"getBlock\" message when `transactionDetails` is `none`\n */\n\nconst GetParsedNoneModeBlockRpcResult = jsonRpcResult(nullable(type({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number()),\n blockHeight: nullable(number())\n})));\n/**\n * Expected JSON RPC response for the \"getConfirmedBlock\" message\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link GetBlockRpcResult} instead.\n */\n\nconst GetConfirmedBlockRpcResult = jsonRpcResult(nullable(type({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n transactions: array(type({\n transaction: ConfirmedTransactionResult,\n meta: nullable(ConfirmedTransactionMetaResult)\n })),\n rewards: optional(array(RewardsResult)),\n blockTime: nullable(number())\n})));\n/**\n * Expected JSON RPC response for the \"getBlock\" message\n */\n\nconst GetBlockSignaturesRpcResult = jsonRpcResult(nullable(type({\n blockhash: string(),\n previousBlockhash: string(),\n parentSlot: number(),\n signatures: array(string()),\n blockTime: nullable(number())\n})));\n/**\n * Expected JSON RPC response for the \"getTransaction\" message\n */\n\nconst GetTransactionRpcResult = jsonRpcResult(nullable(type({\n slot: number(),\n meta: ConfirmedTransactionMetaResult,\n blockTime: optional(nullable(number())),\n transaction: ConfirmedTransactionResult,\n version: optional(TransactionVersionStruct)\n})));\n/**\n * Expected parsed JSON RPC response for the \"getTransaction\" message\n */\n\nconst GetParsedTransactionRpcResult = jsonRpcResult(nullable(type({\n slot: number(),\n transaction: ParsedConfirmedTransactionResult,\n meta: nullable(ParsedConfirmedTransactionMetaResult),\n blockTime: optional(nullable(number())),\n version: optional(TransactionVersionStruct)\n})));\n/**\n * Expected JSON RPC response for the \"getRecentBlockhash\" message\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link GetLatestBlockhashRpcResult} instead.\n */\n\nconst GetRecentBlockhashAndContextRpcResult = jsonRpcResultAndContext(type({\n blockhash: string(),\n feeCalculator: type({\n lamportsPerSignature: number()\n })\n}));\n/**\n * Expected JSON RPC response for the \"getLatestBlockhash\" message\n */\n\nconst GetLatestBlockhashRpcResult = jsonRpcResultAndContext(type({\n blockhash: string(),\n lastValidBlockHeight: number()\n}));\nconst PerfSampleResult = type({\n slot: number(),\n numTransactions: number(),\n numSlots: number(),\n samplePeriodSecs: number()\n});\n/*\n * Expected JSON RPC response for \"getRecentPerformanceSamples\" message\n */\n\nconst GetRecentPerformanceSamplesRpcResult = jsonRpcResult(array(PerfSampleResult));\n/**\n * Expected JSON RPC response for the \"getFeeCalculatorForBlockhash\" message\n */\n\nconst GetFeeCalculatorRpcResult = jsonRpcResultAndContext(nullable(type({\n feeCalculator: type({\n lamportsPerSignature: number()\n })\n})));\n/**\n * Expected JSON RPC response for the \"requestAirdrop\" message\n */\n\nconst RequestAirdropRpcResult = jsonRpcResult(string());\n/**\n * Expected JSON RPC response for the \"sendTransaction\" message\n */\n\nconst SendTransactionRpcResult = jsonRpcResult(string());\n/**\n * Information about the latest slot being processed by a node\n */\n\n/**\n * @internal\n */\nconst LogsResult = type({\n err: TransactionErrorResult,\n logs: array(string()),\n signature: string()\n});\n/**\n * Logs result.\n */\n\n/**\n * Expected JSON RPC response for the \"logsNotification\" message.\n */\nconst LogsNotificationResult = type({\n result: notificationResultAndContext(LogsResult),\n subscription: number()\n});\n/**\n * Filter for log subscriptions.\n */\n\n/** @internal */\nconst COMMON_HTTP_HEADERS = {\n 'solana-client': `js/${(_process$env$npm_pack = \"0.0.0-development\") !== null && _process$env$npm_pack !== void 0 ? _process$env$npm_pack : 'UNKNOWN'}`\n};\n/**\n * A connection to a fullnode JSON RPC endpoint\n */\n\nclass Connection {\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal\n * A number that we increment every time an active connection closes.\n * Used to determine whether the same socket connection that was open\n * when an async operation started is the same one that's active when\n * its continuation fires.\n *\n */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /** @internal */\n\n /**\n * Special case.\n * After a signature is processed, RPCs automatically dispose of the\n * subscription on the server side. We need to track which of these\n * subscriptions have been disposed in such a way, so that we know\n * whether the client is dealing with a not-yet-processed signature\n * (in which case we must tear down the server subscription) or an\n * already-processed signature (in which case the client can simply\n * clear out the subscription locally without telling the server).\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n\n /** @internal */\n\n /**\n * Establish a JSON RPC connection\n *\n * @param endpoint URL to the fullnode JSON RPC endpoint\n * @param commitmentOrConfig optional default commitment level or optional ConnectionConfig configuration object\n */\n constructor(endpoint, commitmentOrConfig) {\n this._commitment = void 0;\n this._confirmTransactionInitialTimeout = void 0;\n this._rpcEndpoint = void 0;\n this._rpcWsEndpoint = void 0;\n this._rpcClient = void 0;\n this._rpcRequest = void 0;\n this._rpcBatchRequest = void 0;\n this._rpcWebSocket = void 0;\n this._rpcWebSocketConnected = false;\n this._rpcWebSocketHeartbeat = null;\n this._rpcWebSocketIdleTimeout = null;\n this._rpcWebSocketGeneration = 0;\n this._disableBlockhashCaching = false;\n this._pollingBlockhash = false;\n this._blockhashInfo = {\n latestBlockhash: null,\n lastFetch: 0,\n transactionSignatures: [],\n simulatedSignatures: []\n };\n this._nextClientSubscriptionId = 0;\n this._subscriptionDisposeFunctionsByClientSubscriptionId = {};\n this._subscriptionHashByClientSubscriptionId = {};\n this._subscriptionStateChangeCallbacksByHash = {};\n this._subscriptionCallbacksByServerSubscriptionId = {};\n this._subscriptionsByHash = {};\n this._subscriptionsAutoDisposedByRpc = new Set();\n let wsEndpoint;\n let httpHeaders;\n let fetch;\n let fetchMiddleware;\n let disableRetryOnRateLimit;\n let httpAgent;\n\n if (commitmentOrConfig && typeof commitmentOrConfig === 'string') {\n this._commitment = commitmentOrConfig;\n } else if (commitmentOrConfig) {\n this._commitment = commitmentOrConfig.commitment;\n this._confirmTransactionInitialTimeout = commitmentOrConfig.confirmTransactionInitialTimeout;\n wsEndpoint = commitmentOrConfig.wsEndpoint;\n httpHeaders = commitmentOrConfig.httpHeaders;\n fetch = commitmentOrConfig.fetch;\n fetchMiddleware = commitmentOrConfig.fetchMiddleware;\n disableRetryOnRateLimit = commitmentOrConfig.disableRetryOnRateLimit;\n httpAgent = commitmentOrConfig.httpAgent;\n }\n\n this._rpcEndpoint = assertEndpointUrl(endpoint);\n this._rpcWsEndpoint = wsEndpoint || makeWebsocketUrl(endpoint);\n this._rpcClient = createRpcClient(endpoint, httpHeaders, fetch, fetchMiddleware, disableRetryOnRateLimit, httpAgent);\n this._rpcRequest = createRpcRequest(this._rpcClient);\n this._rpcBatchRequest = createRpcBatchRequest(this._rpcClient);\n this._rpcWebSocket = new Client(this._rpcWsEndpoint, {\n autoconnect: false,\n max_reconnects: Infinity\n });\n\n this._rpcWebSocket.on('open', this._wsOnOpen.bind(this));\n\n this._rpcWebSocket.on('error', this._wsOnError.bind(this));\n\n this._rpcWebSocket.on('close', this._wsOnClose.bind(this));\n\n this._rpcWebSocket.on('accountNotification', this._wsOnAccountNotification.bind(this));\n\n this._rpcWebSocket.on('programNotification', this._wsOnProgramAccountNotification.bind(this));\n\n this._rpcWebSocket.on('slotNotification', this._wsOnSlotNotification.bind(this));\n\n this._rpcWebSocket.on('slotsUpdatesNotification', this._wsOnSlotUpdatesNotification.bind(this));\n\n this._rpcWebSocket.on('signatureNotification', this._wsOnSignatureNotification.bind(this));\n\n this._rpcWebSocket.on('rootNotification', this._wsOnRootNotification.bind(this));\n\n this._rpcWebSocket.on('logsNotification', this._wsOnLogsNotification.bind(this));\n }\n /**\n * The default commitment used for requests\n */\n\n\n get commitment() {\n return this._commitment;\n }\n /**\n * The RPC endpoint\n */\n\n\n get rpcEndpoint() {\n return this._rpcEndpoint;\n }\n /**\n * Fetch the balance for the specified public key, return with context\n */\n\n\n async getBalanceAndContext(publicKey, commitmentOrConfig) {\n /** @internal */\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(commitmentOrConfig);\n\n const args = this._buildArgs([publicKey.toBase58()], commitment, undefined\n /* encoding */\n , config);\n\n const unsafeRes = await this._rpcRequest('getBalance', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(number()));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, `failed to get balance for ${publicKey.toBase58()}`);\n }\n\n return res.result;\n }\n /**\n * Fetch the balance for the specified public key\n */\n\n\n async getBalance(publicKey, commitmentOrConfig) {\n return await this.getBalanceAndContext(publicKey, commitmentOrConfig).then(x => x.value).catch(e => {\n throw new Error('failed to get balance of account ' + publicKey.toBase58() + ': ' + e);\n });\n }\n /**\n * Fetch the estimated production time of a block\n */\n\n\n async getBlockTime(slot) {\n const unsafeRes = await this._rpcRequest('getBlockTime', [slot]);\n const res = create(unsafeRes, jsonRpcResult(nullable(number())));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, `failed to get block time for slot ${slot}`);\n }\n\n return res.result;\n }\n /**\n * Fetch the lowest slot that the node has information about in its ledger.\n * This value may increase over time if the node is configured to purge older ledger data\n */\n\n\n async getMinimumLedgerSlot() {\n const unsafeRes = await this._rpcRequest('minimumLedgerSlot', []);\n const res = create(unsafeRes, jsonRpcResult(number()));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get minimum ledger slot');\n }\n\n return res.result;\n }\n /**\n * Fetch the slot of the lowest confirmed block that has not been purged from the ledger\n */\n\n\n async getFirstAvailableBlock() {\n const unsafeRes = await this._rpcRequest('getFirstAvailableBlock', []);\n const res = create(unsafeRes, SlotRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get first available block');\n }\n\n return res.result;\n }\n /**\n * Fetch information about the current supply\n */\n\n\n async getSupply(config) {\n let configArg = {};\n\n if (typeof config === 'string') {\n configArg = {\n commitment: config\n };\n } else if (config) {\n configArg = { ...config,\n commitment: config && config.commitment || this.commitment\n };\n } else {\n configArg = {\n commitment: this.commitment\n };\n }\n\n const unsafeRes = await this._rpcRequest('getSupply', [configArg]);\n const res = create(unsafeRes, GetSupplyRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get supply');\n }\n\n return res.result;\n }\n /**\n * Fetch the current supply of a token mint\n */\n\n\n async getTokenSupply(tokenMintAddress, commitment) {\n const args = this._buildArgs([tokenMintAddress.toBase58()], commitment);\n\n const unsafeRes = await this._rpcRequest('getTokenSupply', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(TokenAmountResult));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get token supply');\n }\n\n return res.result;\n }\n /**\n * Fetch the current balance of a token account\n */\n\n\n async getTokenAccountBalance(tokenAddress, commitment) {\n const args = this._buildArgs([tokenAddress.toBase58()], commitment);\n\n const unsafeRes = await this._rpcRequest('getTokenAccountBalance', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(TokenAmountResult));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get token account balance');\n }\n\n return res.result;\n }\n /**\n * Fetch all the token accounts owned by the specified account\n *\n * @return {Promise}>>>}\n */\n\n\n async getTokenAccountsByOwner(ownerAddress, filter, commitmentOrConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(commitmentOrConfig);\n let _args = [ownerAddress.toBase58()];\n\n if ('mint' in filter) {\n _args.push({\n mint: filter.mint.toBase58()\n });\n } else {\n _args.push({\n programId: filter.programId.toBase58()\n });\n }\n\n const args = this._buildArgs(_args, commitment, 'base64', config);\n\n const unsafeRes = await this._rpcRequest('getTokenAccountsByOwner', args);\n const res = create(unsafeRes, GetTokenAccountsByOwner);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, `failed to get token accounts owned by account ${ownerAddress.toBase58()}`);\n }\n\n return res.result;\n }\n /**\n * Fetch parsed token accounts owned by the specified account\n *\n * @return {Promise}>>>}\n */\n\n\n async getParsedTokenAccountsByOwner(ownerAddress, filter, commitment) {\n let _args = [ownerAddress.toBase58()];\n\n if ('mint' in filter) {\n _args.push({\n mint: filter.mint.toBase58()\n });\n } else {\n _args.push({\n programId: filter.programId.toBase58()\n });\n }\n\n const args = this._buildArgs(_args, commitment, 'jsonParsed');\n\n const unsafeRes = await this._rpcRequest('getTokenAccountsByOwner', args);\n const res = create(unsafeRes, GetParsedTokenAccountsByOwner);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, `failed to get token accounts owned by account ${ownerAddress.toBase58()}`);\n }\n\n return res.result;\n }\n /**\n * Fetch the 20 largest accounts with their current balances\n */\n\n\n async getLargestAccounts(config) {\n const arg = { ...config,\n commitment: config && config.commitment || this.commitment\n };\n const args = arg.filter || arg.commitment ? [arg] : [];\n const unsafeRes = await this._rpcRequest('getLargestAccounts', args);\n const res = create(unsafeRes, GetLargestAccountsRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get largest accounts');\n }\n\n return res.result;\n }\n /**\n * Fetch the 20 largest token accounts with their current balances\n * for a given mint.\n */\n\n\n async getTokenLargestAccounts(mintAddress, commitment) {\n const args = this._buildArgs([mintAddress.toBase58()], commitment);\n\n const unsafeRes = await this._rpcRequest('getTokenLargestAccounts', args);\n const res = create(unsafeRes, GetTokenLargestAccountsResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get token largest accounts');\n }\n\n return res.result;\n }\n /**\n * Fetch all the account info for the specified public key, return with context\n */\n\n\n async getAccountInfoAndContext(publicKey, commitmentOrConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(commitmentOrConfig);\n\n const args = this._buildArgs([publicKey.toBase58()], commitment, 'base64', config);\n\n const unsafeRes = await this._rpcRequest('getAccountInfo', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(nullable(AccountInfoResult)));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, `failed to get info about account ${publicKey.toBase58()}`);\n }\n\n return res.result;\n }\n /**\n * Fetch parsed account info for the specified public key\n */\n\n\n async getParsedAccountInfo(publicKey, commitmentOrConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(commitmentOrConfig);\n\n const args = this._buildArgs([publicKey.toBase58()], commitment, 'jsonParsed', config);\n\n const unsafeRes = await this._rpcRequest('getAccountInfo', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(nullable(ParsedAccountInfoResult)));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, `failed to get info about account ${publicKey.toBase58()}`);\n }\n\n return res.result;\n }\n /**\n * Fetch all the account info for the specified public key\n */\n\n\n async getAccountInfo(publicKey, commitmentOrConfig) {\n try {\n const res = await this.getAccountInfoAndContext(publicKey, commitmentOrConfig);\n return res.value;\n } catch (e) {\n throw new Error('failed to get info about account ' + publicKey.toBase58() + ': ' + e);\n }\n }\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys, return with context\n */\n\n\n async getMultipleParsedAccounts(publicKeys, rawConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(rawConfig);\n const keys = publicKeys.map(key => key.toBase58());\n\n const args = this._buildArgs([keys], commitment, 'jsonParsed', config);\n\n const unsafeRes = await this._rpcRequest('getMultipleAccounts', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(array(nullable(ParsedAccountInfoResult))));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, `failed to get info for accounts ${keys}`);\n }\n\n return res.result;\n }\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys, return with context\n */\n\n\n async getMultipleAccountsInfoAndContext(publicKeys, commitmentOrConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(commitmentOrConfig);\n const keys = publicKeys.map(key => key.toBase58());\n\n const args = this._buildArgs([keys], commitment, 'base64', config);\n\n const unsafeRes = await this._rpcRequest('getMultipleAccounts', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(array(nullable(AccountInfoResult))));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, `failed to get info for accounts ${keys}`);\n }\n\n return res.result;\n }\n /**\n * Fetch all the account info for multiple accounts specified by an array of public keys\n */\n\n\n async getMultipleAccountsInfo(publicKeys, commitmentOrConfig) {\n const res = await this.getMultipleAccountsInfoAndContext(publicKeys, commitmentOrConfig);\n return res.value;\n }\n /**\n * Returns epoch activation information for a stake account that has been delegated\n */\n\n\n async getStakeActivation(publicKey, commitmentOrConfig, epoch) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(commitmentOrConfig);\n\n const args = this._buildArgs([publicKey.toBase58()], commitment, undefined\n /* encoding */\n , { ...config,\n epoch: epoch != null ? epoch : config === null || config === void 0 ? void 0 : config.epoch\n });\n\n const unsafeRes = await this._rpcRequest('getStakeActivation', args);\n const res = create(unsafeRes, jsonRpcResult(StakeActivationResult));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, `failed to get Stake Activation ${publicKey.toBase58()}`);\n }\n\n return res.result;\n }\n /**\n * Fetch all the accounts owned by the specified program id\n *\n * @return {Promise}>>}\n */\n\n\n async getProgramAccounts(programId, configOrCommitment) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(configOrCommitment);\n const {\n encoding,\n ...configWithoutEncoding\n } = config || {};\n\n const args = this._buildArgs([programId.toBase58()], commitment, encoding || 'base64', configWithoutEncoding);\n\n const unsafeRes = await this._rpcRequest('getProgramAccounts', args);\n const res = create(unsafeRes, jsonRpcResult(array(KeyedAccountInfoResult)));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, `failed to get accounts owned by program ${programId.toBase58()}`);\n }\n\n return res.result;\n }\n /**\n * Fetch and parse all the accounts owned by the specified program id\n *\n * @return {Promise}>>}\n */\n\n\n async getParsedProgramAccounts(programId, configOrCommitment) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(configOrCommitment);\n\n const args = this._buildArgs([programId.toBase58()], commitment, 'jsonParsed', config);\n\n const unsafeRes = await this._rpcRequest('getProgramAccounts', args);\n const res = create(unsafeRes, jsonRpcResult(array(KeyedParsedAccountInfoResult)));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, `failed to get accounts owned by program ${programId.toBase58()}`);\n }\n\n return res.result;\n }\n\n // eslint-disable-next-line no-dupe-class-members\n async confirmTransaction(strategy, commitment) {\n let rawSignature;\n\n if (typeof strategy == 'string') {\n rawSignature = strategy;\n } else {\n var _config$abortSignal;\n\n const config = strategy;\n\n if ((_config$abortSignal = config.abortSignal) !== null && _config$abortSignal !== void 0 && _config$abortSignal.aborted) {\n return Promise.reject(config.abortSignal.reason);\n }\n\n rawSignature = config.signature;\n }\n\n let decodedSignature;\n\n try {\n decodedSignature = bs58.decode(rawSignature);\n } catch (err) {\n throw new Error('signature must be base58 encoded: ' + rawSignature);\n }\n\n assert(decodedSignature.length === 64, 'signature has invalid length');\n\n if (typeof strategy === 'string') {\n return await this.confirmTransactionUsingLegacyTimeoutStrategy({\n commitment: commitment || this.commitment,\n signature: rawSignature\n });\n } else if ('lastValidBlockHeight' in strategy) {\n return await this.confirmTransactionUsingBlockHeightExceedanceStrategy({\n commitment: commitment || this.commitment,\n strategy\n });\n } else {\n return await this.confirmTransactionUsingDurableNonceStrategy({\n commitment: commitment || this.commitment,\n strategy\n });\n }\n }\n\n getCancellationPromise(signal) {\n return new Promise((_, reject) => {\n if (signal == null) {\n return;\n }\n\n if (signal.aborted) {\n reject(signal.reason);\n } else {\n signal.addEventListener('abort', () => {\n reject(signal.reason);\n });\n }\n });\n }\n\n getTransactionConfirmationPromise({\n commitment,\n signature\n }) {\n let signatureSubscriptionId;\n let disposeSignatureSubscriptionStateChangeObserver;\n let done = false;\n const confirmationPromise = new Promise((resolve, reject) => {\n try {\n signatureSubscriptionId = this.onSignature(signature, (result, context) => {\n signatureSubscriptionId = undefined;\n const response = {\n context,\n value: result\n };\n resolve({\n __type: TransactionStatus.PROCESSED,\n response\n });\n }, commitment);\n const subscriptionSetupPromise = new Promise(resolveSubscriptionSetup => {\n if (signatureSubscriptionId == null) {\n resolveSubscriptionSetup();\n } else {\n disposeSignatureSubscriptionStateChangeObserver = this._onSubscriptionStateChange(signatureSubscriptionId, nextState => {\n if (nextState === 'subscribed') {\n resolveSubscriptionSetup();\n }\n });\n }\n });\n\n (async () => {\n await subscriptionSetupPromise;\n if (done) return;\n const response = await this.getSignatureStatus(signature);\n if (done) return;\n\n if (response == null) {\n return;\n }\n\n const {\n context,\n value\n } = response;\n\n if (value == null) {\n return;\n }\n\n if (value !== null && value !== void 0 && value.err) {\n reject(value.err);\n } else {\n switch (commitment) {\n case 'confirmed':\n case 'single':\n case 'singleGossip':\n {\n if (value.confirmationStatus === 'processed') {\n return;\n }\n\n break;\n }\n\n case 'finalized':\n case 'max':\n case 'root':\n {\n if (value.confirmationStatus === 'processed' || value.confirmationStatus === 'confirmed') {\n return;\n }\n\n break;\n }\n // exhaust enums to ensure full coverage\n\n case 'processed':\n case 'recent':\n }\n\n done = true;\n resolve({\n __type: TransactionStatus.PROCESSED,\n response: {\n context,\n value\n }\n });\n }\n })();\n } catch (err) {\n reject(err);\n }\n });\n\n const abortConfirmation = () => {\n if (disposeSignatureSubscriptionStateChangeObserver) {\n disposeSignatureSubscriptionStateChangeObserver();\n disposeSignatureSubscriptionStateChangeObserver = undefined;\n }\n\n if (signatureSubscriptionId != null) {\n this.removeSignatureListener(signatureSubscriptionId);\n signatureSubscriptionId = undefined;\n }\n };\n\n return {\n abortConfirmation,\n confirmationPromise\n };\n }\n\n async confirmTransactionUsingBlockHeightExceedanceStrategy({\n commitment,\n strategy: {\n abortSignal,\n lastValidBlockHeight,\n signature\n }\n }) {\n let done = false;\n const expiryPromise = new Promise(resolve => {\n const checkBlockHeight = async () => {\n try {\n const blockHeight = await this.getBlockHeight(commitment);\n return blockHeight;\n } catch (_e) {\n return -1;\n }\n };\n\n (async () => {\n let currentBlockHeight = await checkBlockHeight();\n if (done) return;\n\n while (currentBlockHeight <= lastValidBlockHeight) {\n await sleep(1000);\n if (done) return;\n currentBlockHeight = await checkBlockHeight();\n if (done) return;\n }\n\n resolve({\n __type: TransactionStatus.BLOCKHEIGHT_EXCEEDED\n });\n })();\n });\n const {\n abortConfirmation,\n confirmationPromise\n } = this.getTransactionConfirmationPromise({\n commitment,\n signature\n });\n const cancellationPromise = this.getCancellationPromise(abortSignal);\n let result;\n\n try {\n const outcome = await Promise.race([cancellationPromise, confirmationPromise, expiryPromise]);\n\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n throw new TransactionExpiredBlockheightExceededError(signature);\n }\n } finally {\n done = true;\n abortConfirmation();\n }\n\n return result;\n }\n\n async confirmTransactionUsingDurableNonceStrategy({\n commitment,\n strategy: {\n abortSignal,\n minContextSlot,\n nonceAccountPubkey,\n nonceValue,\n signature\n }\n }) {\n let done = false;\n const expiryPromise = new Promise(resolve => {\n let currentNonceValue = nonceValue;\n let lastCheckedSlot = null;\n\n const getCurrentNonceValue = async () => {\n try {\n const {\n context,\n value: nonceAccount\n } = await this.getNonceAndContext(nonceAccountPubkey, {\n commitment,\n minContextSlot\n });\n lastCheckedSlot = context.slot;\n return nonceAccount === null || nonceAccount === void 0 ? void 0 : nonceAccount.nonce;\n } catch (e) {\n // If for whatever reason we can't reach/read the nonce\n // account, just keep using the last-known value.\n return currentNonceValue;\n }\n };\n\n (async () => {\n currentNonceValue = await getCurrentNonceValue();\n if (done) return;\n\n while (true // eslint-disable-line no-constant-condition\n ) {\n if (nonceValue !== currentNonceValue) {\n resolve({\n __type: TransactionStatus.NONCE_INVALID,\n slotInWhichNonceDidAdvance: lastCheckedSlot\n });\n return;\n }\n\n await sleep(2000);\n if (done) return;\n currentNonceValue = await getCurrentNonceValue();\n if (done) return;\n }\n })();\n });\n const {\n abortConfirmation,\n confirmationPromise\n } = this.getTransactionConfirmationPromise({\n commitment,\n signature\n });\n const cancellationPromise = this.getCancellationPromise(abortSignal);\n let result;\n\n try {\n const outcome = await Promise.race([cancellationPromise, confirmationPromise, expiryPromise]);\n\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n var _signatureStatus;\n\n // Double check that the transaction is indeed unconfirmed.\n let signatureStatus;\n\n while (true // eslint-disable-line no-constant-condition\n ) {\n var _outcome$slotInWhichN;\n\n const status = await this.getSignatureStatus(signature);\n\n if (status == null) {\n break;\n }\n\n if (status.context.slot < ((_outcome$slotInWhichN = outcome.slotInWhichNonceDidAdvance) !== null && _outcome$slotInWhichN !== void 0 ? _outcome$slotInWhichN : minContextSlot)) {\n await sleep(400);\n continue;\n }\n\n signatureStatus = status;\n break;\n }\n\n if ((_signatureStatus = signatureStatus) !== null && _signatureStatus !== void 0 && _signatureStatus.value) {\n const commitmentForStatus = commitment || 'finalized';\n const {\n confirmationStatus\n } = signatureStatus.value;\n\n switch (commitmentForStatus) {\n case 'processed':\n case 'recent':\n if (confirmationStatus !== 'processed' && confirmationStatus !== 'confirmed' && confirmationStatus !== 'finalized') {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n\n break;\n\n case 'confirmed':\n case 'single':\n case 'singleGossip':\n if (confirmationStatus !== 'confirmed' && confirmationStatus !== 'finalized') {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n\n break;\n\n case 'finalized':\n case 'max':\n case 'root':\n if (confirmationStatus !== 'finalized') {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n\n break;\n\n default:\n // Exhaustive switch.\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n (_ => {})(commitmentForStatus);\n\n }\n\n result = {\n context: signatureStatus.context,\n value: {\n err: signatureStatus.value.err\n }\n };\n } else {\n throw new TransactionExpiredNonceInvalidError(signature);\n }\n }\n } finally {\n done = true;\n abortConfirmation();\n }\n\n return result;\n }\n\n async confirmTransactionUsingLegacyTimeoutStrategy({\n commitment,\n signature\n }) {\n let timeoutId;\n const expiryPromise = new Promise(resolve => {\n let timeoutMs = this._confirmTransactionInitialTimeout || 60 * 1000;\n\n switch (commitment) {\n case 'processed':\n case 'recent':\n case 'single':\n case 'confirmed':\n case 'singleGossip':\n {\n timeoutMs = this._confirmTransactionInitialTimeout || 30 * 1000;\n break;\n }\n }\n\n timeoutId = setTimeout(() => resolve({\n __type: TransactionStatus.TIMED_OUT,\n timeoutMs\n }), timeoutMs);\n });\n const {\n abortConfirmation,\n confirmationPromise\n } = this.getTransactionConfirmationPromise({\n commitment,\n signature\n });\n let result;\n\n try {\n const outcome = await Promise.race([confirmationPromise, expiryPromise]);\n\n if (outcome.__type === TransactionStatus.PROCESSED) {\n result = outcome.response;\n } else {\n throw new TransactionExpiredTimeoutError(signature, outcome.timeoutMs / 1000);\n }\n } finally {\n clearTimeout(timeoutId);\n abortConfirmation();\n }\n\n return result;\n }\n /**\n * Return the list of nodes that are currently participating in the cluster\n */\n\n\n async getClusterNodes() {\n const unsafeRes = await this._rpcRequest('getClusterNodes', []);\n const res = create(unsafeRes, jsonRpcResult(array(ContactInfoResult)));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get cluster nodes');\n }\n\n return res.result;\n }\n /**\n * Return the list of nodes that are currently participating in the cluster\n */\n\n\n async getVoteAccounts(commitment) {\n const args = this._buildArgs([], commitment);\n\n const unsafeRes = await this._rpcRequest('getVoteAccounts', args);\n const res = create(unsafeRes, GetVoteAccounts);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get vote accounts');\n }\n\n return res.result;\n }\n /**\n * Fetch the current slot that the node is processing\n */\n\n\n async getSlot(commitmentOrConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(commitmentOrConfig);\n\n const args = this._buildArgs([], commitment, undefined\n /* encoding */\n , config);\n\n const unsafeRes = await this._rpcRequest('getSlot', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot');\n }\n\n return res.result;\n }\n /**\n * Fetch the current slot leader of the cluster\n */\n\n\n async getSlotLeader(commitmentOrConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(commitmentOrConfig);\n\n const args = this._buildArgs([], commitment, undefined\n /* encoding */\n , config);\n\n const unsafeRes = await this._rpcRequest('getSlotLeader', args);\n const res = create(unsafeRes, jsonRpcResult(string()));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot leader');\n }\n\n return res.result;\n }\n /**\n * Fetch `limit` number of slot leaders starting from `startSlot`\n *\n * @param startSlot fetch slot leaders starting from this slot\n * @param limit number of slot leaders to return\n */\n\n\n async getSlotLeaders(startSlot, limit) {\n const args = [startSlot, limit];\n const unsafeRes = await this._rpcRequest('getSlotLeaders', args);\n const res = create(unsafeRes, jsonRpcResult(array(PublicKeyFromString)));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get slot leaders');\n }\n\n return res.result;\n }\n /**\n * Fetch the current status of a signature\n */\n\n\n async getSignatureStatus(signature, config) {\n const {\n context,\n value: values\n } = await this.getSignatureStatuses([signature], config);\n assert(values.length === 1);\n const value = values[0];\n return {\n context,\n value\n };\n }\n /**\n * Fetch the current statuses of a batch of signatures\n */\n\n\n async getSignatureStatuses(signatures, config) {\n const params = [signatures];\n\n if (config) {\n params.push(config);\n }\n\n const unsafeRes = await this._rpcRequest('getSignatureStatuses', params);\n const res = create(unsafeRes, GetSignatureStatusesRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get signature status');\n }\n\n return res.result;\n }\n /**\n * Fetch the current transaction count of the cluster\n */\n\n\n async getTransactionCount(commitmentOrConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(commitmentOrConfig);\n\n const args = this._buildArgs([], commitment, undefined\n /* encoding */\n , config);\n\n const unsafeRes = await this._rpcRequest('getTransactionCount', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction count');\n }\n\n return res.result;\n }\n /**\n * Fetch the current total currency supply of the cluster in lamports\n *\n * @deprecated Deprecated since v1.2.8. Please use {@link getSupply} instead.\n */\n\n\n async getTotalSupply(commitment) {\n const result = await this.getSupply({\n commitment,\n excludeNonCirculatingAccountsList: true\n });\n return result.value.total;\n }\n /**\n * Fetch the cluster InflationGovernor parameters\n */\n\n\n async getInflationGovernor(commitment) {\n const args = this._buildArgs([], commitment);\n\n const unsafeRes = await this._rpcRequest('getInflationGovernor', args);\n const res = create(unsafeRes, GetInflationGovernorRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation');\n }\n\n return res.result;\n }\n /**\n * Fetch the inflation reward for a list of addresses for an epoch\n */\n\n\n async getInflationReward(addresses, epoch, commitmentOrConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(commitmentOrConfig);\n\n const args = this._buildArgs([addresses.map(pubkey => pubkey.toBase58())], commitment, undefined\n /* encoding */\n , { ...config,\n epoch: epoch != null ? epoch : config === null || config === void 0 ? void 0 : config.epoch\n });\n\n const unsafeRes = await this._rpcRequest('getInflationReward', args);\n const res = create(unsafeRes, GetInflationRewardResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation reward');\n }\n\n return res.result;\n }\n /**\n * Fetch the specific inflation values for the current epoch\n */\n\n\n async getInflationRate() {\n const unsafeRes = await this._rpcRequest('getInflationRate', []);\n const res = create(unsafeRes, GetInflationRateRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get inflation rate');\n }\n\n return res.result;\n }\n /**\n * Fetch the Epoch Info parameters\n */\n\n\n async getEpochInfo(commitmentOrConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(commitmentOrConfig);\n\n const args = this._buildArgs([], commitment, undefined\n /* encoding */\n , config);\n\n const unsafeRes = await this._rpcRequest('getEpochInfo', args);\n const res = create(unsafeRes, GetEpochInfoRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get epoch info');\n }\n\n return res.result;\n }\n /**\n * Fetch the Epoch Schedule parameters\n */\n\n\n async getEpochSchedule() {\n const unsafeRes = await this._rpcRequest('getEpochSchedule', []);\n const res = create(unsafeRes, GetEpochScheduleRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get epoch schedule');\n }\n\n const epochSchedule = res.result;\n return new EpochSchedule(epochSchedule.slotsPerEpoch, epochSchedule.leaderScheduleSlotOffset, epochSchedule.warmup, epochSchedule.firstNormalEpoch, epochSchedule.firstNormalSlot);\n }\n /**\n * Fetch the leader schedule for the current epoch\n * @return {Promise>}\n */\n\n\n async getLeaderSchedule() {\n const unsafeRes = await this._rpcRequest('getLeaderSchedule', []);\n const res = create(unsafeRes, GetLeaderScheduleRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get leader schedule');\n }\n\n return res.result;\n }\n /**\n * Fetch the minimum balance needed to exempt an account of `dataLength`\n * size from rent\n */\n\n\n async getMinimumBalanceForRentExemption(dataLength, commitment) {\n const args = this._buildArgs([dataLength], commitment);\n\n const unsafeRes = await this._rpcRequest('getMinimumBalanceForRentExemption', args);\n const res = create(unsafeRes, GetMinimumBalanceForRentExemptionRpcResult);\n\n if ('error' in res) {\n console.warn('Unable to fetch minimum balance for rent exemption');\n return 0;\n }\n\n return res.result;\n }\n /**\n * Fetch a recent blockhash from the cluster, return with context\n * @return {Promise>}\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getLatestBlockhash} instead.\n */\n\n\n async getRecentBlockhashAndContext(commitment) {\n const args = this._buildArgs([], commitment);\n\n const unsafeRes = await this._rpcRequest('getRecentBlockhash', args);\n const res = create(unsafeRes, GetRecentBlockhashAndContextRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get recent blockhash');\n }\n\n return res.result;\n }\n /**\n * Fetch recent performance samples\n * @return {Promise>}\n */\n\n\n async getRecentPerformanceSamples(limit) {\n const unsafeRes = await this._rpcRequest('getRecentPerformanceSamples', limit ? [limit] : []);\n const res = create(unsafeRes, GetRecentPerformanceSamplesRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get recent performance samples');\n }\n\n return res.result;\n }\n /**\n * Fetch the fee calculator for a recent blockhash from the cluster, return with context\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getFeeForMessage} instead.\n */\n\n\n async getFeeCalculatorForBlockhash(blockhash, commitment) {\n const args = this._buildArgs([blockhash], commitment);\n\n const unsafeRes = await this._rpcRequest('getFeeCalculatorForBlockhash', args);\n const res = create(unsafeRes, GetFeeCalculatorRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get fee calculator');\n }\n\n const {\n context,\n value\n } = res.result;\n return {\n context,\n value: value !== null ? value.feeCalculator : null\n };\n }\n /**\n * Fetch the fee for a message from the cluster, return with context\n */\n\n\n async getFeeForMessage(message, commitment) {\n const wireMessage = toBuffer(message.serialize()).toString('base64');\n\n const args = this._buildArgs([wireMessage], commitment);\n\n const unsafeRes = await this._rpcRequest('getFeeForMessage', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(nullable(number())));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get fee for message');\n }\n\n if (res.result === null) {\n throw new Error('invalid blockhash');\n }\n\n return res.result;\n }\n /**\n * Fetch a recent blockhash from the cluster\n * @return {Promise<{blockhash: Blockhash, feeCalculator: FeeCalculator}>}\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getLatestBlockhash} instead.\n */\n\n\n async getRecentBlockhash(commitment) {\n try {\n const res = await this.getRecentBlockhashAndContext(commitment);\n return res.value;\n } catch (e) {\n throw new Error('failed to get recent blockhash: ' + e);\n }\n }\n /**\n * Fetch the latest blockhash from the cluster\n * @return {Promise}\n */\n\n\n async getLatestBlockhash(commitmentOrConfig) {\n try {\n const res = await this.getLatestBlockhashAndContext(commitmentOrConfig);\n return res.value;\n } catch (e) {\n throw new Error('failed to get recent blockhash: ' + e);\n }\n }\n /**\n * Fetch the latest blockhash from the cluster\n * @return {Promise}\n */\n\n\n async getLatestBlockhashAndContext(commitmentOrConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(commitmentOrConfig);\n\n const args = this._buildArgs([], commitment, undefined\n /* encoding */\n , config);\n\n const unsafeRes = await this._rpcRequest('getLatestBlockhash', args);\n const res = create(unsafeRes, GetLatestBlockhashRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get latest blockhash');\n }\n\n return res.result;\n }\n /**\n * Fetch the node version\n */\n\n\n async getVersion() {\n const unsafeRes = await this._rpcRequest('getVersion', []);\n const res = create(unsafeRes, jsonRpcResult(VersionResult));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get version');\n }\n\n return res.result;\n }\n /**\n * Fetch the genesis hash\n */\n\n\n async getGenesisHash() {\n const unsafeRes = await this._rpcRequest('getGenesisHash', []);\n const res = create(unsafeRes, jsonRpcResult(string()));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get genesis hash');\n }\n\n return res.result;\n }\n /**\n * Fetch a processed block from the cluster.\n *\n * @deprecated Instead, call `getBlock` using a `GetVersionedBlockConfig` by\n * setting the `maxSupportedTransactionVersion` property.\n */\n\n\n /**\n * Fetch a processed block from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getBlock(slot, rawConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(rawConfig);\n\n const args = this._buildArgsAtLeastConfirmed([slot], commitment, undefined\n /* encoding */\n , config);\n\n const unsafeRes = await this._rpcRequest('getBlock', args);\n\n try {\n switch (config === null || config === void 0 ? void 0 : config.transactionDetails) {\n case 'accounts':\n {\n const res = create(unsafeRes, GetAccountsModeBlockRpcResult);\n\n if ('error' in res) {\n throw res.error;\n }\n\n return res.result;\n }\n\n case 'none':\n {\n const res = create(unsafeRes, GetNoneModeBlockRpcResult);\n\n if ('error' in res) {\n throw res.error;\n }\n\n return res.result;\n }\n\n default:\n {\n const res = create(unsafeRes, GetBlockRpcResult);\n\n if ('error' in res) {\n throw res.error;\n }\n\n const {\n result\n } = res;\n return result ? { ...result,\n transactions: result.transactions.map(({\n transaction,\n meta,\n version\n }) => ({\n meta,\n transaction: { ...transaction,\n message: versionedMessageFromResponse(version, transaction.message)\n },\n version\n }))\n } : null;\n }\n }\n } catch (e) {\n throw new SolanaJSONRPCError(e, 'failed to get confirmed block');\n }\n }\n /**\n * Fetch parsed transaction details for a confirmed or finalized block\n */\n\n\n // eslint-disable-next-line no-dupe-class-members\n async getParsedBlock(slot, rawConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(rawConfig);\n\n const args = this._buildArgsAtLeastConfirmed([slot], commitment, 'jsonParsed', config);\n\n const unsafeRes = await this._rpcRequest('getBlock', args);\n\n try {\n switch (config === null || config === void 0 ? void 0 : config.transactionDetails) {\n case 'accounts':\n {\n const res = create(unsafeRes, GetParsedAccountsModeBlockRpcResult);\n\n if ('error' in res) {\n throw res.error;\n }\n\n return res.result;\n }\n\n case 'none':\n {\n const res = create(unsafeRes, GetParsedNoneModeBlockRpcResult);\n\n if ('error' in res) {\n throw res.error;\n }\n\n return res.result;\n }\n\n default:\n {\n const res = create(unsafeRes, GetParsedBlockRpcResult);\n\n if ('error' in res) {\n throw res.error;\n }\n\n return res.result;\n }\n }\n } catch (e) {\n throw new SolanaJSONRPCError(e, 'failed to get block');\n }\n }\n /*\n * Returns the current block height of the node\n */\n\n\n async getBlockHeight(commitmentOrConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(commitmentOrConfig);\n\n const args = this._buildArgs([], commitment, undefined\n /* encoding */\n , config);\n\n const unsafeRes = await this._rpcRequest('getBlockHeight', args);\n const res = create(unsafeRes, jsonRpcResult(number()));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get block height information');\n }\n\n return res.result;\n }\n /*\n * Returns recent block production information from the current or previous epoch\n */\n\n\n async getBlockProduction(configOrCommitment) {\n let extra;\n let commitment;\n\n if (typeof configOrCommitment === 'string') {\n commitment = configOrCommitment;\n } else if (configOrCommitment) {\n const {\n commitment: c,\n ...rest\n } = configOrCommitment;\n commitment = c;\n extra = rest;\n }\n\n const args = this._buildArgs([], commitment, 'base64', extra);\n\n const unsafeRes = await this._rpcRequest('getBlockProduction', args);\n const res = create(unsafeRes, BlockProductionResponseStruct);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get block production information');\n }\n\n return res.result;\n }\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n *\n * @deprecated Instead, call `getTransaction` using a\n * `GetVersionedTransactionConfig` by setting the\n * `maxSupportedTransactionVersion` property.\n */\n\n\n /**\n * Fetch a confirmed or finalized transaction from the cluster.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransaction(signature, rawConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(rawConfig);\n\n const args = this._buildArgsAtLeastConfirmed([signature], commitment, undefined\n /* encoding */\n , config);\n\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetTransactionRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n\n const result = res.result;\n if (!result) return result;\n return { ...result,\n transaction: { ...result.transaction,\n message: versionedMessageFromResponse(result.version, result.transaction.message)\n }\n };\n }\n /**\n * Fetch parsed transaction details for a confirmed or finalized transaction\n */\n\n\n async getParsedTransaction(signature, commitmentOrConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(commitmentOrConfig);\n\n const args = this._buildArgsAtLeastConfirmed([signature], commitment, 'jsonParsed', config);\n\n const unsafeRes = await this._rpcRequest('getTransaction', args);\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n\n return res.result;\n }\n /**\n * Fetch parsed transaction details for a batch of confirmed transactions\n */\n\n\n async getParsedTransactions(signatures, commitmentOrConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(commitmentOrConfig);\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed([signature], commitment, 'jsonParsed', config);\n\n return {\n methodName: 'getTransaction',\n args\n };\n });\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map(unsafeRes => {\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transactions');\n }\n\n return res.result;\n });\n return res;\n }\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link TransactionResponse}.\n *\n * @deprecated Instead, call `getTransactions` using a\n * `GetVersionedTransactionConfig` by setting the\n * `maxSupportedTransactionVersion` property.\n */\n\n\n /**\n * Fetch transaction details for a batch of confirmed transactions.\n * Similar to {@link getParsedTransactions} but returns a {@link\n * VersionedTransactionResponse}.\n */\n // eslint-disable-next-line no-dupe-class-members\n async getTransactions(signatures, commitmentOrConfig) {\n const {\n commitment,\n config\n } = extractCommitmentFromConfig(commitmentOrConfig);\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed([signature], commitment, undefined\n /* encoding */\n , config);\n\n return {\n methodName: 'getTransaction',\n args\n };\n });\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map(unsafeRes => {\n const res = create(unsafeRes, GetTransactionRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transactions');\n }\n\n const result = res.result;\n if (!result) return result;\n return { ...result,\n transaction: { ...result.transaction,\n message: versionedMessageFromResponse(result.version, result.transaction.message)\n }\n };\n });\n return res;\n }\n /**\n * Fetch a list of Transactions and transaction statuses from the cluster\n * for a confirmed block.\n *\n * @deprecated Deprecated since v1.13.0. Please use {@link getBlock} instead.\n */\n\n\n async getConfirmedBlock(slot, commitment) {\n const args = this._buildArgsAtLeastConfirmed([slot], commitment);\n\n const unsafeRes = await this._rpcRequest('getConfirmedBlock', args);\n const res = create(unsafeRes, GetConfirmedBlockRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed block');\n }\n\n const result = res.result;\n\n if (!result) {\n throw new Error('Confirmed block ' + slot + ' not found');\n }\n\n const block = { ...result,\n transactions: result.transactions.map(({\n transaction,\n meta\n }) => {\n const message = new Message(transaction.message);\n return {\n meta,\n transaction: { ...transaction,\n message\n }\n };\n })\n };\n return { ...block,\n transactions: block.transactions.map(({\n transaction,\n meta\n }) => {\n return {\n meta,\n transaction: Transaction.populate(transaction.message, transaction.signatures)\n };\n })\n };\n }\n /**\n * Fetch confirmed blocks between two slots\n */\n\n\n async getBlocks(startSlot, endSlot, commitment) {\n const args = this._buildArgsAtLeastConfirmed(endSlot !== undefined ? [startSlot, endSlot] : [startSlot], commitment);\n\n const unsafeRes = await this._rpcRequest('getBlocks', args);\n const res = create(unsafeRes, jsonRpcResult(array(number())));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get blocks');\n }\n\n return res.result;\n }\n /**\n * Fetch a list of Signatures from the cluster for a block, excluding rewards\n */\n\n\n async getBlockSignatures(slot, commitment) {\n const args = this._buildArgsAtLeastConfirmed([slot], commitment, undefined, {\n transactionDetails: 'signatures',\n rewards: false\n });\n\n const unsafeRes = await this._rpcRequest('getBlock', args);\n const res = create(unsafeRes, GetBlockSignaturesRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get block');\n }\n\n const result = res.result;\n\n if (!result) {\n throw new Error('Block ' + slot + ' not found');\n }\n\n return result;\n }\n /**\n * Fetch a list of Signatures from the cluster for a confirmed block, excluding rewards\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getBlockSignatures} instead.\n */\n\n\n async getConfirmedBlockSignatures(slot, commitment) {\n const args = this._buildArgsAtLeastConfirmed([slot], commitment, undefined, {\n transactionDetails: 'signatures',\n rewards: false\n });\n\n const unsafeRes = await this._rpcRequest('getConfirmedBlock', args);\n const res = create(unsafeRes, GetBlockSignaturesRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed block');\n }\n\n const result = res.result;\n\n if (!result) {\n throw new Error('Confirmed block ' + slot + ' not found');\n }\n\n return result;\n }\n /**\n * Fetch a transaction details for a confirmed transaction\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getTransaction} instead.\n */\n\n\n async getConfirmedTransaction(signature, commitment) {\n const args = this._buildArgsAtLeastConfirmed([signature], commitment);\n\n const unsafeRes = await this._rpcRequest('getConfirmedTransaction', args);\n const res = create(unsafeRes, GetTransactionRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get transaction');\n }\n\n const result = res.result;\n if (!result) return result;\n const message = new Message(result.transaction.message);\n const signatures = result.transaction.signatures;\n return { ...result,\n transaction: Transaction.populate(message, signatures)\n };\n }\n /**\n * Fetch parsed transaction details for a confirmed transaction\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getParsedTransaction} instead.\n */\n\n\n async getParsedConfirmedTransaction(signature, commitment) {\n const args = this._buildArgsAtLeastConfirmed([signature], commitment, 'jsonParsed');\n\n const unsafeRes = await this._rpcRequest('getConfirmedTransaction', args);\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed transaction');\n }\n\n return res.result;\n }\n /**\n * Fetch parsed transaction details for a batch of confirmed transactions\n *\n * @deprecated Deprecated since Solana v1.8.0. Please use {@link getParsedTransactions} instead.\n */\n\n\n async getParsedConfirmedTransactions(signatures, commitment) {\n const batch = signatures.map(signature => {\n const args = this._buildArgsAtLeastConfirmed([signature], commitment, 'jsonParsed');\n\n return {\n methodName: 'getConfirmedTransaction',\n args\n };\n });\n const unsafeRes = await this._rpcBatchRequest(batch);\n const res = unsafeRes.map(unsafeRes => {\n const res = create(unsafeRes, GetParsedTransactionRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed transactions');\n }\n\n return res.result;\n });\n return res;\n }\n /**\n * Fetch a list of all the confirmed signatures for transactions involving an address\n * within a specified slot range. Max range allowed is 10,000 slots.\n *\n * @deprecated Deprecated since v1.3. Please use {@link getConfirmedSignaturesForAddress2} instead.\n *\n * @param address queried address\n * @param startSlot start slot, inclusive\n * @param endSlot end slot, inclusive\n */\n\n\n async getConfirmedSignaturesForAddress(address, startSlot, endSlot) {\n let options = {};\n let firstAvailableBlock = await this.getFirstAvailableBlock();\n\n while (!('until' in options)) {\n startSlot--;\n\n if (startSlot <= 0 || startSlot < firstAvailableBlock) {\n break;\n }\n\n try {\n const block = await this.getConfirmedBlockSignatures(startSlot, 'finalized');\n\n if (block.signatures.length > 0) {\n options.until = block.signatures[block.signatures.length - 1].toString();\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes('skipped')) {\n continue;\n } else {\n throw err;\n }\n }\n }\n\n let highestConfirmedRoot = await this.getSlot('finalized');\n\n while (!('before' in options)) {\n endSlot++;\n\n if (endSlot > highestConfirmedRoot) {\n break;\n }\n\n try {\n const block = await this.getConfirmedBlockSignatures(endSlot);\n\n if (block.signatures.length > 0) {\n options.before = block.signatures[block.signatures.length - 1].toString();\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes('skipped')) {\n continue;\n } else {\n throw err;\n }\n }\n }\n\n const confirmedSignatureInfo = await this.getConfirmedSignaturesForAddress2(address, options);\n return confirmedSignatureInfo.map(info => info.signature);\n }\n /**\n * Returns confirmed signatures for transactions involving an\n * address backwards in time from the provided signature or most recent confirmed block\n *\n *\n * @param address queried address\n * @param options\n */\n\n\n async getConfirmedSignaturesForAddress2(address, options, commitment) {\n const args = this._buildArgsAtLeastConfirmed([address.toBase58()], commitment, undefined, options);\n\n const unsafeRes = await this._rpcRequest('getConfirmedSignaturesForAddress2', args);\n const res = create(unsafeRes, GetConfirmedSignaturesForAddress2RpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get confirmed signatures for address');\n }\n\n return res.result;\n }\n /**\n * Returns confirmed signatures for transactions involving an\n * address backwards in time from the provided signature or most recent confirmed block\n *\n *\n * @param address queried address\n * @param options\n */\n\n\n async getSignaturesForAddress(address, options, commitment) {\n const args = this._buildArgsAtLeastConfirmed([address.toBase58()], commitment, undefined, options);\n\n const unsafeRes = await this._rpcRequest('getSignaturesForAddress', args);\n const res = create(unsafeRes, GetSignaturesForAddressRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, 'failed to get signatures for address');\n }\n\n return res.result;\n }\n\n async getAddressLookupTable(accountKey, config) {\n const {\n context,\n value: accountInfo\n } = await this.getAccountInfoAndContext(accountKey, config);\n let value = null;\n\n if (accountInfo !== null) {\n value = new AddressLookupTableAccount({\n key: accountKey,\n state: AddressLookupTableAccount.deserialize(accountInfo.data)\n });\n }\n\n return {\n context,\n value\n };\n }\n /**\n * Fetch the contents of a Nonce account from the cluster, return with context\n */\n\n\n async getNonceAndContext(nonceAccount, commitmentOrConfig) {\n const {\n context,\n value: accountInfo\n } = await this.getAccountInfoAndContext(nonceAccount, commitmentOrConfig);\n let value = null;\n\n if (accountInfo !== null) {\n value = NonceAccount.fromAccountData(accountInfo.data);\n }\n\n return {\n context,\n value\n };\n }\n /**\n * Fetch the contents of a Nonce account from the cluster\n */\n\n\n async getNonce(nonceAccount, commitmentOrConfig) {\n return await this.getNonceAndContext(nonceAccount, commitmentOrConfig).then(x => x.value).catch(e => {\n throw new Error('failed to get nonce for account ' + nonceAccount.toBase58() + ': ' + e);\n });\n }\n /**\n * Request an allocation of lamports to the specified address\n *\n * ```typescript\n * import { Connection, PublicKey, LAMPORTS_PER_SOL } from \"@solana/web3.js\";\n *\n * (async () => {\n * const connection = new Connection(\"https://api.testnet.solana.com\", \"confirmed\");\n * const myAddress = new PublicKey(\"2nr1bHFT86W9tGnyvmYW4vcHKsQB3sVQfnddasz4kExM\");\n * const signature = await connection.requestAirdrop(myAddress, LAMPORTS_PER_SOL);\n * await connection.confirmTransaction(signature);\n * })();\n * ```\n */\n\n\n async requestAirdrop(to, lamports) {\n const unsafeRes = await this._rpcRequest('requestAirdrop', [to.toBase58(), lamports]);\n const res = create(unsafeRes, RequestAirdropRpcResult);\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, `airdrop to ${to.toBase58()} failed`);\n }\n\n return res.result;\n }\n /**\n * @internal\n */\n\n\n async _blockhashWithExpiryBlockHeight(disableCache) {\n if (!disableCache) {\n // Wait for polling to finish\n while (this._pollingBlockhash) {\n await sleep(100);\n }\n\n const timeSinceFetch = Date.now() - this._blockhashInfo.lastFetch;\n\n const expired = timeSinceFetch >= BLOCKHASH_CACHE_TIMEOUT_MS;\n\n if (this._blockhashInfo.latestBlockhash !== null && !expired) {\n return this._blockhashInfo.latestBlockhash;\n }\n }\n\n return await this._pollNewBlockhash();\n }\n /**\n * @internal\n */\n\n\n async _pollNewBlockhash() {\n this._pollingBlockhash = true;\n\n try {\n const startTime = Date.now();\n const cachedLatestBlockhash = this._blockhashInfo.latestBlockhash;\n const cachedBlockhash = cachedLatestBlockhash ? cachedLatestBlockhash.blockhash : null;\n\n for (let i = 0; i < 50; i++) {\n const latestBlockhash = await this.getLatestBlockhash('finalized');\n\n if (cachedBlockhash !== latestBlockhash.blockhash) {\n this._blockhashInfo = {\n latestBlockhash,\n lastFetch: Date.now(),\n transactionSignatures: [],\n simulatedSignatures: []\n };\n return latestBlockhash;\n } // Sleep for approximately half a slot\n\n\n await sleep(MS_PER_SLOT / 2);\n }\n\n throw new Error(`Unable to obtain a new blockhash after ${Date.now() - startTime}ms`);\n } finally {\n this._pollingBlockhash = false;\n }\n }\n /**\n * get the stake minimum delegation\n */\n\n\n async getStakeMinimumDelegation(config) {\n const {\n commitment,\n config: configArg\n } = extractCommitmentFromConfig(config);\n\n const args = this._buildArgs([], commitment, 'base64', configArg);\n\n const unsafeRes = await this._rpcRequest('getStakeMinimumDelegation', args);\n const res = create(unsafeRes, jsonRpcResultAndContext(number()));\n\n if ('error' in res) {\n throw new SolanaJSONRPCError(res.error, `failed to get stake minimum delegation`);\n }\n\n return res.result;\n }\n /**\n * Simulate a transaction\n *\n * @deprecated Instead, call {@link simulateTransaction} with {@link\n * VersionedTransaction} and {@link SimulateTransactionConfig} parameters\n */\n\n\n /**\n * Simulate a transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n async simulateTransaction(transactionOrMessage, configOrSigners, includeAccounts) {\n if ('message' in transactionOrMessage) {\n const versionedTx = transactionOrMessage;\n const wireTransaction = versionedTx.serialize();\n const encodedTransaction = Buffer.from(wireTransaction).toString('base64');\n\n if (Array.isArray(configOrSigners) || includeAccounts !== undefined) {\n throw new Error('Invalid arguments');\n }\n\n const config = configOrSigners || {};\n config.encoding = 'base64';\n\n if (!('commitment' in config)) {\n config.commitment = this.commitment;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('simulateTransaction', args);\n const res = create(unsafeRes, SimulatedTransactionResponseStruct);\n\n if ('error' in res) {\n throw new Error('failed to simulate transaction: ' + res.error.message);\n }\n\n return res.result;\n }\n\n let transaction;\n\n if (transactionOrMessage instanceof Transaction) {\n let originalTx = transactionOrMessage;\n transaction = new Transaction();\n transaction.feePayer = originalTx.feePayer;\n transaction.instructions = transactionOrMessage.instructions;\n transaction.nonceInfo = originalTx.nonceInfo;\n transaction.signatures = originalTx.signatures;\n } else {\n transaction = Transaction.populate(transactionOrMessage); // HACK: this function relies on mutating the populated transaction\n\n transaction._message = transaction._json = undefined;\n }\n\n if (configOrSigners !== undefined && !Array.isArray(configOrSigners)) {\n throw new Error('Invalid arguments');\n }\n\n const signers = configOrSigners;\n\n if (transaction.nonceInfo && signers) {\n transaction.sign(...signers);\n } else {\n let disableCache = this._disableBlockhashCaching;\n\n for (;;) {\n const latestBlockhash = await this._blockhashWithExpiryBlockHeight(disableCache);\n transaction.lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n transaction.recentBlockhash = latestBlockhash.blockhash;\n if (!signers) break;\n transaction.sign(...signers);\n\n if (!transaction.signature) {\n throw new Error('!signature'); // should never happen\n }\n\n const signature = transaction.signature.toString('base64');\n\n if (!this._blockhashInfo.simulatedSignatures.includes(signature) && !this._blockhashInfo.transactionSignatures.includes(signature)) {\n // The signature of this transaction has not been seen before with the\n // current recentBlockhash, all done. Let's break\n this._blockhashInfo.simulatedSignatures.push(signature);\n\n break;\n } else {\n // This transaction would be treated as duplicate (its derived signature\n // matched to one of already recorded signatures).\n // So, we must fetch a new blockhash for a different signature by disabling\n // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS).\n disableCache = true;\n }\n }\n }\n\n const message = transaction._compile();\n\n const signData = message.serialize();\n\n const wireTransaction = transaction._serialize(signData);\n\n const encodedTransaction = wireTransaction.toString('base64');\n const config = {\n encoding: 'base64',\n commitment: this.commitment\n };\n\n if (includeAccounts) {\n const addresses = (Array.isArray(includeAccounts) ? includeAccounts : message.nonProgramIds()).map(key => key.toBase58());\n config['accounts'] = {\n encoding: 'base64',\n addresses\n };\n }\n\n if (signers) {\n config.sigVerify = true;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('simulateTransaction', args);\n const res = create(unsafeRes, SimulatedTransactionResponseStruct);\n\n if ('error' in res) {\n let logs;\n\n if ('data' in res.error) {\n logs = res.error.data.logs;\n\n if (logs && Array.isArray(logs)) {\n const traceIndent = '\\n ';\n const logTrace = traceIndent + logs.join(traceIndent);\n console.error(res.error.message, logTrace);\n }\n }\n\n throw new SendTransactionError('failed to simulate transaction: ' + res.error.message, logs);\n }\n\n return res.result;\n }\n /**\n * Sign and send a transaction\n *\n * @deprecated Instead, call {@link sendTransaction} with a {@link\n * VersionedTransaction}\n */\n\n\n /**\n * Sign and send a transaction\n */\n // eslint-disable-next-line no-dupe-class-members\n async sendTransaction(transaction, signersOrOptions, options) {\n if ('version' in transaction) {\n if (signersOrOptions && Array.isArray(signersOrOptions)) {\n throw new Error('Invalid arguments');\n }\n\n const wireTransaction = transaction.serialize();\n return await this.sendRawTransaction(wireTransaction, options);\n }\n\n if (signersOrOptions === undefined || !Array.isArray(signersOrOptions)) {\n throw new Error('Invalid arguments');\n }\n\n const signers = signersOrOptions;\n\n if (transaction.nonceInfo) {\n transaction.sign(...signers);\n } else {\n let disableCache = this._disableBlockhashCaching;\n\n for (;;) {\n const latestBlockhash = await this._blockhashWithExpiryBlockHeight(disableCache);\n transaction.lastValidBlockHeight = latestBlockhash.lastValidBlockHeight;\n transaction.recentBlockhash = latestBlockhash.blockhash;\n transaction.sign(...signers);\n\n if (!transaction.signature) {\n throw new Error('!signature'); // should never happen\n }\n\n const signature = transaction.signature.toString('base64');\n\n if (!this._blockhashInfo.transactionSignatures.includes(signature)) {\n // The signature of this transaction has not been seen before with the\n // current recentBlockhash, all done. Let's break\n this._blockhashInfo.transactionSignatures.push(signature);\n\n break;\n } else {\n // This transaction would be treated as duplicate (its derived signature\n // matched to one of already recorded signatures).\n // So, we must fetch a new blockhash for a different signature by disabling\n // our cache not to wait for the cache expiration (BLOCKHASH_CACHE_TIMEOUT_MS).\n disableCache = true;\n }\n }\n }\n\n const wireTransaction = transaction.serialize();\n return await this.sendRawTransaction(wireTransaction, options);\n }\n /**\n * Send a transaction that has already been signed and serialized into the\n * wire format\n */\n\n\n async sendRawTransaction(rawTransaction, options) {\n const encodedTransaction = toBuffer(rawTransaction).toString('base64');\n const result = await this.sendEncodedTransaction(encodedTransaction, options);\n return result;\n }\n /**\n * Send a transaction that has already been signed, serialized into the\n * wire format, and encoded as a base64 string\n */\n\n\n async sendEncodedTransaction(encodedTransaction, options) {\n const config = {\n encoding: 'base64'\n };\n const skipPreflight = options && options.skipPreflight;\n const preflightCommitment = options && options.preflightCommitment || this.commitment;\n\n if (options && options.maxRetries != null) {\n config.maxRetries = options.maxRetries;\n }\n\n if (options && options.minContextSlot != null) {\n config.minContextSlot = options.minContextSlot;\n }\n\n if (skipPreflight) {\n config.skipPreflight = skipPreflight;\n }\n\n if (preflightCommitment) {\n config.preflightCommitment = preflightCommitment;\n }\n\n const args = [encodedTransaction, config];\n const unsafeRes = await this._rpcRequest('sendTransaction', args);\n const res = create(unsafeRes, SendTransactionRpcResult);\n\n if ('error' in res) {\n let logs;\n\n if ('data' in res.error) {\n logs = res.error.data.logs;\n }\n\n throw new SendTransactionError('failed to send transaction: ' + res.error.message, logs);\n }\n\n return res.result;\n }\n /**\n * @internal\n */\n\n\n _wsOnOpen() {\n this._rpcWebSocketConnected = true;\n this._rpcWebSocketHeartbeat = setInterval(() => {\n // Ping server every 5s to prevent idle timeouts\n this._rpcWebSocket.notify('ping').catch(() => {});\n }, 5000);\n\n this._updateSubscriptions();\n }\n /**\n * @internal\n */\n\n\n _wsOnError(err) {\n this._rpcWebSocketConnected = false;\n console.error('ws error:', err.message);\n }\n /**\n * @internal\n */\n\n\n _wsOnClose(code) {\n this._rpcWebSocketConnected = false;\n this._rpcWebSocketGeneration = (this._rpcWebSocketGeneration + 1) % Number.MAX_SAFE_INTEGER;\n\n if (this._rpcWebSocketIdleTimeout) {\n clearTimeout(this._rpcWebSocketIdleTimeout);\n this._rpcWebSocketIdleTimeout = null;\n }\n\n if (this._rpcWebSocketHeartbeat) {\n clearInterval(this._rpcWebSocketHeartbeat);\n this._rpcWebSocketHeartbeat = null;\n }\n\n if (code === 1000) {\n // explicit close, check if any subscriptions have been made since close\n this._updateSubscriptions();\n\n return;\n } // implicit close, prepare subscriptions for auto-reconnect\n\n\n this._subscriptionCallbacksByServerSubscriptionId = {};\n Object.entries(this._subscriptionsByHash).forEach(([hash, subscription]) => {\n this._setSubscription(hash, { ...subscription,\n state: 'pending'\n });\n });\n }\n /**\n * @internal\n */\n\n\n _setSubscription(hash, nextSubscription) {\n var _this$_subscriptionsB;\n\n const prevState = (_this$_subscriptionsB = this._subscriptionsByHash[hash]) === null || _this$_subscriptionsB === void 0 ? void 0 : _this$_subscriptionsB.state;\n this._subscriptionsByHash[hash] = nextSubscription;\n\n if (prevState !== nextSubscription.state) {\n const stateChangeCallbacks = this._subscriptionStateChangeCallbacksByHash[hash];\n\n if (stateChangeCallbacks) {\n stateChangeCallbacks.forEach(cb => {\n try {\n cb(nextSubscription.state); // eslint-disable-next-line no-empty\n } catch {}\n });\n }\n }\n }\n /**\n * @internal\n */\n\n\n _onSubscriptionStateChange(clientSubscriptionId, callback) {\n var _this$_subscriptionSt;\n\n const hash = this._subscriptionHashByClientSubscriptionId[clientSubscriptionId];\n\n if (hash == null) {\n return () => {};\n }\n\n const stateChangeCallbacks = (_this$_subscriptionSt = this._subscriptionStateChangeCallbacksByHash)[hash] || (_this$_subscriptionSt[hash] = new Set());\n stateChangeCallbacks.add(callback);\n return () => {\n stateChangeCallbacks.delete(callback);\n\n if (stateChangeCallbacks.size === 0) {\n delete this._subscriptionStateChangeCallbacksByHash[hash];\n }\n };\n }\n /**\n * @internal\n */\n\n\n async _updateSubscriptions() {\n if (Object.keys(this._subscriptionsByHash).length === 0) {\n if (this._rpcWebSocketConnected) {\n this._rpcWebSocketConnected = false;\n this._rpcWebSocketIdleTimeout = setTimeout(() => {\n this._rpcWebSocketIdleTimeout = null;\n\n try {\n this._rpcWebSocket.close();\n } catch (err) {\n // swallow error if socket has already been closed.\n if (err instanceof Error) {\n console.log(`Error when closing socket connection: ${err.message}`);\n }\n }\n }, 500);\n }\n\n return;\n }\n\n if (this._rpcWebSocketIdleTimeout !== null) {\n clearTimeout(this._rpcWebSocketIdleTimeout);\n this._rpcWebSocketIdleTimeout = null;\n this._rpcWebSocketConnected = true;\n }\n\n if (!this._rpcWebSocketConnected) {\n this._rpcWebSocket.connect();\n\n return;\n }\n\n const activeWebSocketGeneration = this._rpcWebSocketGeneration;\n\n const isCurrentConnectionStillActive = () => {\n return activeWebSocketGeneration === this._rpcWebSocketGeneration;\n };\n\n await Promise.all( // Don't be tempted to change this to `Object.entries`. We call\n // `_updateSubscriptions` recursively when processing the state,\n // so it's important that we look up the *current* version of\n // each subscription, every time we process a hash.\n Object.keys(this._subscriptionsByHash).map(async hash => {\n const subscription = this._subscriptionsByHash[hash];\n\n if (subscription === undefined) {\n // This entry has since been deleted. Skip.\n return;\n }\n\n switch (subscription.state) {\n case 'pending':\n case 'unsubscribed':\n if (subscription.callbacks.size === 0) {\n /**\n * You can end up here when:\n *\n * - a subscription has recently unsubscribed\n * without having new callbacks added to it\n * while the unsubscribe was in flight, or\n * - when a pending subscription has its\n * listeners removed before a request was\n * sent to the server.\n *\n * Being that nobody is interested in this\n * subscription any longer, delete it.\n */\n delete this._subscriptionsByHash[hash];\n\n if (subscription.state === 'unsubscribed') {\n delete this._subscriptionCallbacksByServerSubscriptionId[subscription.serverSubscriptionId];\n }\n\n await this._updateSubscriptions();\n return;\n }\n\n await (async () => {\n const {\n args,\n method\n } = subscription;\n\n try {\n this._setSubscription(hash, { ...subscription,\n state: 'subscribing'\n });\n\n const serverSubscriptionId = await this._rpcWebSocket.call(method, args);\n\n this._setSubscription(hash, { ...subscription,\n serverSubscriptionId,\n state: 'subscribed'\n });\n\n this._subscriptionCallbacksByServerSubscriptionId[serverSubscriptionId] = subscription.callbacks;\n await this._updateSubscriptions();\n } catch (e) {\n if (e instanceof Error) {\n console.error(`${method} error for argument`, args, e.message);\n }\n\n if (!isCurrentConnectionStillActive()) {\n return;\n } // TODO: Maybe add an 'errored' state or a retry limit?\n\n\n this._setSubscription(hash, { ...subscription,\n state: 'pending'\n });\n\n await this._updateSubscriptions();\n }\n })();\n break;\n\n case 'subscribed':\n if (subscription.callbacks.size === 0) {\n // By the time we successfully set up a subscription\n // with the server, the client stopped caring about it.\n // Tear it down now.\n await (async () => {\n const {\n serverSubscriptionId,\n unsubscribeMethod\n } = subscription;\n\n if (this._subscriptionsAutoDisposedByRpc.has(serverSubscriptionId)) {\n /**\n * Special case.\n * If we're dealing with a subscription that has been auto-\n * disposed by the RPC, then we can skip the RPC call to\n * tear down the subscription here.\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n this._subscriptionsAutoDisposedByRpc.delete(serverSubscriptionId);\n } else {\n this._setSubscription(hash, { ...subscription,\n state: 'unsubscribing'\n });\n\n this._setSubscription(hash, { ...subscription,\n state: 'unsubscribing'\n });\n\n try {\n await this._rpcWebSocket.call(unsubscribeMethod, [serverSubscriptionId]);\n } catch (e) {\n if (e instanceof Error) {\n console.error(`${unsubscribeMethod} error:`, e.message);\n }\n\n if (!isCurrentConnectionStillActive()) {\n return;\n } // TODO: Maybe add an 'errored' state or a retry limit?\n\n\n this._setSubscription(hash, { ...subscription,\n state: 'subscribed'\n });\n\n await this._updateSubscriptions();\n return;\n }\n }\n\n this._setSubscription(hash, { ...subscription,\n state: 'unsubscribed'\n });\n\n await this._updateSubscriptions();\n })();\n }\n\n break;\n }\n }));\n }\n /**\n * @internal\n */\n\n\n _handleServerNotification(serverSubscriptionId, callbackArgs) {\n const callbacks = this._subscriptionCallbacksByServerSubscriptionId[serverSubscriptionId];\n\n if (callbacks === undefined) {\n return;\n }\n\n callbacks.forEach(cb => {\n try {\n cb( // I failed to find a way to convince TypeScript that `cb` is of type\n // `TCallback` which is certainly compatible with `Parameters`.\n // See https://github.com/microsoft/TypeScript/issues/47615\n // @ts-ignore\n ...callbackArgs);\n } catch (e) {\n console.error(e);\n }\n });\n }\n /**\n * @internal\n */\n\n\n _wsOnAccountNotification(notification) {\n const {\n result,\n subscription\n } = create(notification, AccountNotificationResult);\n\n this._handleServerNotification(subscription, [result.value, result.context]);\n }\n /**\n * @internal\n */\n\n\n _makeSubscription(subscriptionConfig,\n /**\n * When preparing `args` for a call to `_makeSubscription`, be sure\n * to carefully apply a default `commitment` property, if necessary.\n *\n * - If the user supplied a `commitment` use that.\n * - Otherwise, if the `Connection::commitment` is set, use that.\n * - Otherwise, set it to the RPC server default: `finalized`.\n *\n * This is extremely important to ensure that these two fundamentally\n * identical subscriptions produce the same identifying hash:\n *\n * - A subscription made without specifying a commitment.\n * - A subscription made where the commitment specified is the same\n * as the default applied to the subscription above.\n *\n * Example; these two subscriptions must produce the same hash:\n *\n * - An `accountSubscribe` subscription for `'PUBKEY'`\n * - An `accountSubscribe` subscription for `'PUBKEY'` with commitment\n * `'finalized'`.\n *\n * See the 'making a subscription with defaulted params omitted' test\n * in `connection-subscriptions.ts` for more.\n */\n args) {\n const clientSubscriptionId = this._nextClientSubscriptionId++;\n const hash = fastStableStringify$1([subscriptionConfig.method, args], true\n /* isArrayProp */\n );\n const existingSubscription = this._subscriptionsByHash[hash];\n\n if (existingSubscription === undefined) {\n this._subscriptionsByHash[hash] = { ...subscriptionConfig,\n args,\n callbacks: new Set([subscriptionConfig.callback]),\n state: 'pending'\n };\n } else {\n existingSubscription.callbacks.add(subscriptionConfig.callback);\n }\n\n this._subscriptionHashByClientSubscriptionId[clientSubscriptionId] = hash;\n\n this._subscriptionDisposeFunctionsByClientSubscriptionId[clientSubscriptionId] = async () => {\n delete this._subscriptionDisposeFunctionsByClientSubscriptionId[clientSubscriptionId];\n delete this._subscriptionHashByClientSubscriptionId[clientSubscriptionId];\n const subscription = this._subscriptionsByHash[hash];\n assert(subscription !== undefined, `Could not find a \\`Subscription\\` when tearing down client subscription #${clientSubscriptionId}`);\n subscription.callbacks.delete(subscriptionConfig.callback);\n await this._updateSubscriptions();\n };\n\n this._updateSubscriptions();\n\n return clientSubscriptionId;\n }\n /**\n * Register a callback to be invoked whenever the specified account changes\n *\n * @param publicKey Public key of the account to monitor\n * @param callback Function to invoke whenever the account is changed\n * @param commitment Specify the commitment level account changes must reach before notification\n * @return subscription id\n */\n\n\n onAccountChange(publicKey, callback, commitment) {\n const args = this._buildArgs([publicKey.toBase58()], commitment || this._commitment || 'finalized', // Apply connection/server default.\n 'base64');\n\n return this._makeSubscription({\n callback,\n method: 'accountSubscribe',\n unsubscribeMethod: 'accountUnsubscribe'\n }, args);\n }\n /**\n * Deregister an account notification callback\n *\n * @param id client subscription id to deregister\n */\n\n\n async removeAccountChangeListener(clientSubscriptionId) {\n await this._unsubscribeClientSubscription(clientSubscriptionId, 'account change');\n }\n /**\n * @internal\n */\n\n\n _wsOnProgramAccountNotification(notification) {\n const {\n result,\n subscription\n } = create(notification, ProgramAccountNotificationResult);\n\n this._handleServerNotification(subscription, [{\n accountId: result.value.pubkey,\n accountInfo: result.value.account\n }, result.context]);\n }\n /**\n * Register a callback to be invoked whenever accounts owned by the\n * specified program change\n *\n * @param programId Public key of the program to monitor\n * @param callback Function to invoke whenever the account is changed\n * @param commitment Specify the commitment level account changes must reach before notification\n * @param filters The program account filters to pass into the RPC method\n * @return subscription id\n */\n\n\n onProgramAccountChange(programId, callback, commitment, filters) {\n const args = this._buildArgs([programId.toBase58()], commitment || this._commitment || 'finalized', // Apply connection/server default.\n 'base64'\n /* encoding */\n , filters ? {\n filters: filters\n } : undefined\n /* extra */\n );\n\n return this._makeSubscription({\n callback,\n method: 'programSubscribe',\n unsubscribeMethod: 'programUnsubscribe'\n }, args);\n }\n /**\n * Deregister an account notification callback\n *\n * @param id client subscription id to deregister\n */\n\n\n async removeProgramAccountChangeListener(clientSubscriptionId) {\n await this._unsubscribeClientSubscription(clientSubscriptionId, 'program account change');\n }\n /**\n * Registers a callback to be invoked whenever logs are emitted.\n */\n\n\n onLogs(filter, callback, commitment) {\n const args = this._buildArgs([typeof filter === 'object' ? {\n mentions: [filter.toString()]\n } : filter], commitment || this._commitment || 'finalized' // Apply connection/server default.\n );\n\n return this._makeSubscription({\n callback,\n method: 'logsSubscribe',\n unsubscribeMethod: 'logsUnsubscribe'\n }, args);\n }\n /**\n * Deregister a logs callback.\n *\n * @param id client subscription id to deregister.\n */\n\n\n async removeOnLogsListener(clientSubscriptionId) {\n await this._unsubscribeClientSubscription(clientSubscriptionId, 'logs');\n }\n /**\n * @internal\n */\n\n\n _wsOnLogsNotification(notification) {\n const {\n result,\n subscription\n } = create(notification, LogsNotificationResult);\n\n this._handleServerNotification(subscription, [result.value, result.context]);\n }\n /**\n * @internal\n */\n\n\n _wsOnSlotNotification(notification) {\n const {\n result,\n subscription\n } = create(notification, SlotNotificationResult);\n\n this._handleServerNotification(subscription, [result]);\n }\n /**\n * Register a callback to be invoked upon slot changes\n *\n * @param callback Function to invoke whenever the slot changes\n * @return subscription id\n */\n\n\n onSlotChange(callback) {\n return this._makeSubscription({\n callback,\n method: 'slotSubscribe',\n unsubscribeMethod: 'slotUnsubscribe'\n }, []\n /* args */\n );\n }\n /**\n * Deregister a slot notification callback\n *\n * @param id client subscription id to deregister\n */\n\n\n async removeSlotChangeListener(clientSubscriptionId) {\n await this._unsubscribeClientSubscription(clientSubscriptionId, 'slot change');\n }\n /**\n * @internal\n */\n\n\n _wsOnSlotUpdatesNotification(notification) {\n const {\n result,\n subscription\n } = create(notification, SlotUpdateNotificationResult);\n\n this._handleServerNotification(subscription, [result]);\n }\n /**\n * Register a callback to be invoked upon slot updates. {@link SlotUpdate}'s\n * may be useful to track live progress of a cluster.\n *\n * @param callback Function to invoke whenever the slot updates\n * @return subscription id\n */\n\n\n onSlotUpdate(callback) {\n return this._makeSubscription({\n callback,\n method: 'slotsUpdatesSubscribe',\n unsubscribeMethod: 'slotsUpdatesUnsubscribe'\n }, []\n /* args */\n );\n }\n /**\n * Deregister a slot update notification callback\n *\n * @param id client subscription id to deregister\n */\n\n\n async removeSlotUpdateListener(clientSubscriptionId) {\n await this._unsubscribeClientSubscription(clientSubscriptionId, 'slot update');\n }\n /**\n * @internal\n */\n\n\n async _unsubscribeClientSubscription(clientSubscriptionId, subscriptionName) {\n const dispose = this._subscriptionDisposeFunctionsByClientSubscriptionId[clientSubscriptionId];\n\n if (dispose) {\n await dispose();\n } else {\n console.warn('Ignored unsubscribe request because an active subscription with id ' + `\\`${clientSubscriptionId}\\` for '${subscriptionName}' events ` + 'could not be found.');\n }\n }\n\n _buildArgs(args, override, encoding, extra) {\n const commitment = override || this._commitment;\n\n if (commitment || encoding || extra) {\n let options = {};\n\n if (encoding) {\n options.encoding = encoding;\n }\n\n if (commitment) {\n options.commitment = commitment;\n }\n\n if (extra) {\n options = Object.assign(options, extra);\n }\n\n args.push(options);\n }\n\n return args;\n }\n /**\n * @internal\n */\n\n\n _buildArgsAtLeastConfirmed(args, override, encoding, extra) {\n const commitment = override || this._commitment;\n\n if (commitment && !['confirmed', 'finalized'].includes(commitment)) {\n throw new Error('Using Connection with default commitment: `' + this._commitment + '`, but method requires at least `confirmed`');\n }\n\n return this._buildArgs(args, override, encoding, extra);\n }\n /**\n * @internal\n */\n\n\n _wsOnSignatureNotification(notification) {\n const {\n result,\n subscription\n } = create(notification, SignatureNotificationResult);\n\n if (result.value !== 'receivedSignature') {\n /**\n * Special case.\n * After a signature is processed, RPCs automatically dispose of the\n * subscription on the server side. We need to track which of these\n * subscriptions have been disposed in such a way, so that we know\n * whether the client is dealing with a not-yet-processed signature\n * (in which case we must tear down the server subscription) or an\n * already-processed signature (in which case the client can simply\n * clear out the subscription locally without telling the server).\n *\n * NOTE: There is a proposal to eliminate this special case, here:\n * https://github.com/solana-labs/solana/issues/18892\n */\n this._subscriptionsAutoDisposedByRpc.add(subscription);\n }\n\n this._handleServerNotification(subscription, result.value === 'receivedSignature' ? [{\n type: 'received'\n }, result.context] : [{\n type: 'status',\n result: result.value\n }, result.context]);\n }\n /**\n * Register a callback to be invoked upon signature updates\n *\n * @param signature Transaction signature string in base 58\n * @param callback Function to invoke on signature notifications\n * @param commitment Specify the commitment level signature must reach before notification\n * @return subscription id\n */\n\n\n onSignature(signature, callback, commitment) {\n const args = this._buildArgs([signature], commitment || this._commitment || 'finalized' // Apply connection/server default.\n );\n\n const clientSubscriptionId = this._makeSubscription({\n callback: (notification, context) => {\n if (notification.type === 'status') {\n callback(notification.result, context); // Signatures subscriptions are auto-removed by the RPC service\n // so no need to explicitly send an unsubscribe message.\n\n try {\n this.removeSignatureListener(clientSubscriptionId); // eslint-disable-next-line no-empty\n } catch (_err) {// Already removed.\n }\n }\n },\n method: 'signatureSubscribe',\n unsubscribeMethod: 'signatureUnsubscribe'\n }, args);\n\n return clientSubscriptionId;\n }\n /**\n * Register a callback to be invoked when a transaction is\n * received and/or processed.\n *\n * @param signature Transaction signature string in base 58\n * @param callback Function to invoke on signature notifications\n * @param options Enable received notifications and set the commitment\n * level that signature must reach before notification\n * @return subscription id\n */\n\n\n onSignatureWithOptions(signature, callback, options) {\n const {\n commitment,\n ...extra\n } = { ...options,\n commitment: options && options.commitment || this._commitment || 'finalized' // Apply connection/server default.\n\n };\n\n const args = this._buildArgs([signature], commitment, undefined\n /* encoding */\n , extra);\n\n const clientSubscriptionId = this._makeSubscription({\n callback: (notification, context) => {\n callback(notification, context); // Signatures subscriptions are auto-removed by the RPC service\n // so no need to explicitly send an unsubscribe message.\n\n try {\n this.removeSignatureListener(clientSubscriptionId); // eslint-disable-next-line no-empty\n } catch (_err) {// Already removed.\n }\n },\n method: 'signatureSubscribe',\n unsubscribeMethod: 'signatureUnsubscribe'\n }, args);\n\n return clientSubscriptionId;\n }\n /**\n * Deregister a signature notification callback\n *\n * @param id client subscription id to deregister\n */\n\n\n async removeSignatureListener(clientSubscriptionId) {\n await this._unsubscribeClientSubscription(clientSubscriptionId, 'signature result');\n }\n /**\n * @internal\n */\n\n\n _wsOnRootNotification(notification) {\n const {\n result,\n subscription\n } = create(notification, RootNotificationResult);\n\n this._handleServerNotification(subscription, [result]);\n }\n /**\n * Register a callback to be invoked upon root changes\n *\n * @param callback Function to invoke whenever the root changes\n * @return subscription id\n */\n\n\n onRootChange(callback) {\n return this._makeSubscription({\n callback,\n method: 'rootSubscribe',\n unsubscribeMethod: 'rootUnsubscribe'\n }, []\n /* args */\n );\n }\n /**\n * Deregister a root notification callback\n *\n * @param id client subscription id to deregister\n */\n\n\n async removeRootChangeListener(clientSubscriptionId) {\n await this._unsubscribeClientSubscription(clientSubscriptionId, 'root change');\n }\n\n}\n\n/**\n * Keypair signer interface\n */\n\n/**\n * An account keypair used for signing transactions.\n */\nclass Keypair {\n /**\n * Create a new keypair instance.\n * Generate random keypair if no {@link Ed25519Keypair} is provided.\n *\n * @param keypair ed25519 keypair\n */\n constructor(keypair) {\n this._keypair = void 0;\n this._keypair = keypair !== null && keypair !== void 0 ? keypair : generateKeypair();\n }\n /**\n * Generate a new random keypair\n */\n\n\n static generate() {\n return new Keypair(generateKeypair());\n }\n /**\n * Create a keypair from a raw secret key byte array.\n *\n * This method should only be used to recreate a keypair from a previously\n * generated secret key. Generating keypairs from a random seed should be done\n * with the {@link Keypair.fromSeed} method.\n *\n * @throws error if the provided secret key is invalid and validation is not skipped.\n *\n * @param secretKey secret key byte array\n * @param options: skip secret key validation\n */\n\n\n static fromSecretKey(secretKey, options) {\n if (secretKey.byteLength !== 64) {\n throw new Error('bad secret key size');\n }\n\n const publicKey = secretKey.slice(32, 64);\n\n if (!options || !options.skipValidation) {\n const privateScalar = secretKey.slice(0, 32);\n const computedPublicKey = getPublicKey(privateScalar);\n\n for (let ii = 0; ii < 32; ii++) {\n if (publicKey[ii] !== computedPublicKey[ii]) {\n throw new Error('provided secretKey is invalid');\n }\n }\n }\n\n return new Keypair({\n publicKey,\n secretKey\n });\n }\n /**\n * Generate a keypair from a 32 byte seed.\n *\n * @param seed seed byte array\n */\n\n\n static fromSeed(seed) {\n const publicKey = getPublicKey(seed);\n const secretKey = new Uint8Array(64);\n secretKey.set(seed);\n secretKey.set(publicKey, 32);\n return new Keypair({\n publicKey,\n secretKey\n });\n }\n /**\n * The public key for this keypair\n */\n\n\n get publicKey() {\n return new PublicKey(this._keypair.publicKey);\n }\n /**\n * The raw secret key for this keypair\n */\n\n\n get secretKey() {\n return new Uint8Array(this._keypair.secretKey);\n }\n\n}\n\n/**\n * An enumeration of valid address lookup table InstructionType's\n * @internal\n */\nconst LOOKUP_TABLE_INSTRUCTION_LAYOUTS = Object.freeze({\n CreateLookupTable: {\n index: 0,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), u64('recentSlot'), BufferLayout.u8('bumpSeed')])\n },\n FreezeLookupTable: {\n index: 1,\n layout: BufferLayout.struct([BufferLayout.u32('instruction')])\n },\n ExtendLookupTable: {\n index: 2,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), u64(), BufferLayout.seq(publicKey(), BufferLayout.offset(BufferLayout.u32(), -8), 'addresses')])\n },\n DeactivateLookupTable: {\n index: 3,\n layout: BufferLayout.struct([BufferLayout.u32('instruction')])\n },\n CloseLookupTable: {\n index: 4,\n layout: BufferLayout.struct([BufferLayout.u32('instruction')])\n }\n});\nclass AddressLookupTableInstruction {\n /**\n * @internal\n */\n constructor() {}\n\n static decodeInstructionType(instruction) {\n this.checkProgramId(instruction.programId);\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const index = instructionTypeLayout.decode(instruction.data);\n let type;\n\n for (const [layoutType, layout] of Object.entries(LOOKUP_TABLE_INSTRUCTION_LAYOUTS)) {\n if (layout.index == index) {\n type = layoutType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Invalid Instruction. Should be a LookupTable Instruction');\n }\n\n return type;\n }\n\n static decodeCreateLookupTable(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 4);\n const {\n recentSlot\n } = decodeData$1(LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable, instruction.data);\n return {\n authority: instruction.keys[1].pubkey,\n payer: instruction.keys[2].pubkey,\n recentSlot: Number(recentSlot)\n };\n }\n\n static decodeExtendLookupTable(instruction) {\n this.checkProgramId(instruction.programId);\n\n if (instruction.keys.length < 2) {\n throw new Error(`invalid instruction; found ${instruction.keys.length} keys, expected at least 2`);\n }\n\n const {\n addresses\n } = decodeData$1(LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable, instruction.data);\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n payer: instruction.keys.length > 2 ? instruction.keys[2].pubkey : undefined,\n addresses: addresses.map(buffer => new PublicKey(buffer))\n };\n }\n\n static decodeCloseLookupTable(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 3);\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey,\n recipient: instruction.keys[2].pubkey\n };\n }\n\n static decodeFreezeLookupTable(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 2);\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey\n };\n }\n\n static decodeDeactivateLookupTable(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeysLength(instruction.keys, 2);\n return {\n lookupTable: instruction.keys[0].pubkey,\n authority: instruction.keys[1].pubkey\n };\n }\n /**\n * @internal\n */\n\n\n static checkProgramId(programId) {\n if (!programId.equals(AddressLookupTableProgram.programId)) {\n throw new Error('invalid instruction; programId is not AddressLookupTable Program');\n }\n }\n /**\n * @internal\n */\n\n\n static checkKeysLength(keys, expectedLength) {\n if (keys.length < expectedLength) {\n throw new Error(`invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`);\n }\n }\n\n}\nclass AddressLookupTableProgram {\n /**\n * @internal\n */\n constructor() {}\n\n static createLookupTable(params) {\n const [lookupTableAddress, bumpSeed] = PublicKey.findProgramAddressSync([params.authority.toBuffer(), toBufferLE(BigInt(params.recentSlot), 8)], this.programId);\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CreateLookupTable;\n const data = encodeData(type, {\n recentSlot: BigInt(params.recentSlot),\n bumpSeed: bumpSeed\n });\n const keys = [{\n pubkey: lookupTableAddress,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false\n }, {\n pubkey: params.payer,\n isSigner: true,\n isWritable: true\n }, {\n pubkey: SystemProgram.programId,\n isSigner: false,\n isWritable: false\n }];\n return [new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data\n }), lookupTableAddress];\n }\n\n static freezeLookupTable(params) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.FreezeLookupTable;\n const data = encodeData(type);\n const keys = [{\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false\n }];\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data\n });\n }\n\n static extendLookupTable(params) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.ExtendLookupTable;\n const data = encodeData(type, {\n addresses: params.addresses.map(addr => addr.toBytes())\n });\n const keys = [{\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false\n }];\n\n if (params.payer) {\n keys.push({\n pubkey: params.payer,\n isSigner: true,\n isWritable: true\n }, {\n pubkey: SystemProgram.programId,\n isSigner: false,\n isWritable: false\n });\n }\n\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data\n });\n }\n\n static deactivateLookupTable(params) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.DeactivateLookupTable;\n const data = encodeData(type);\n const keys = [{\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false\n }];\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data\n });\n }\n\n static closeLookupTable(params) {\n const type = LOOKUP_TABLE_INSTRUCTION_LAYOUTS.CloseLookupTable;\n const data = encodeData(type);\n const keys = [{\n pubkey: params.lookupTable,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: params.authority,\n isSigner: true,\n isWritable: false\n }, {\n pubkey: params.recipient,\n isSigner: false,\n isWritable: true\n }];\n return new TransactionInstruction({\n programId: this.programId,\n keys: keys,\n data: data\n });\n }\n\n}\nAddressLookupTableProgram.programId = new PublicKey('AddressLookupTab1e1111111111111111111111111');\n\n/**\n * Compute Budget Instruction class\n */\n\nclass ComputeBudgetInstruction {\n /**\n * @internal\n */\n constructor() {}\n /**\n * Decode a compute budget instruction and retrieve the instruction type.\n */\n\n\n static decodeInstructionType(instruction) {\n this.checkProgramId(instruction.programId);\n const instructionTypeLayout = BufferLayout.u8('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n let type;\n\n for (const [ixType, layout] of Object.entries(COMPUTE_BUDGET_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a ComputeBudgetInstruction');\n }\n\n return type;\n }\n /**\n * Decode request units compute budget instruction and retrieve the instruction params.\n */\n\n\n static decodeRequestUnits(instruction) {\n this.checkProgramId(instruction.programId);\n const {\n units,\n additionalFee\n } = decodeData$1(COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits, instruction.data);\n return {\n units,\n additionalFee\n };\n }\n /**\n * Decode request heap frame compute budget instruction and retrieve the instruction params.\n */\n\n\n static decodeRequestHeapFrame(instruction) {\n this.checkProgramId(instruction.programId);\n const {\n bytes\n } = decodeData$1(COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame, instruction.data);\n return {\n bytes\n };\n }\n /**\n * Decode set compute unit limit compute budget instruction and retrieve the instruction params.\n */\n\n\n static decodeSetComputeUnitLimit(instruction) {\n this.checkProgramId(instruction.programId);\n const {\n units\n } = decodeData$1(COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit, instruction.data);\n return {\n units\n };\n }\n /**\n * Decode set compute unit price compute budget instruction and retrieve the instruction params.\n */\n\n\n static decodeSetComputeUnitPrice(instruction) {\n this.checkProgramId(instruction.programId);\n const {\n microLamports\n } = decodeData$1(COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice, instruction.data);\n return {\n microLamports\n };\n }\n /**\n * @internal\n */\n\n\n static checkProgramId(programId) {\n if (!programId.equals(ComputeBudgetProgram.programId)) {\n throw new Error('invalid instruction; programId is not ComputeBudgetProgram');\n }\n }\n\n}\n/**\n * An enumeration of valid ComputeBudgetInstructionType's\n */\n\n/**\n * An enumeration of valid ComputeBudget InstructionType's\n * @internal\n */\nconst COMPUTE_BUDGET_INSTRUCTION_LAYOUTS = Object.freeze({\n RequestUnits: {\n index: 0,\n layout: BufferLayout.struct([BufferLayout.u8('instruction'), BufferLayout.u32('units'), BufferLayout.u32('additionalFee')])\n },\n RequestHeapFrame: {\n index: 1,\n layout: BufferLayout.struct([BufferLayout.u8('instruction'), BufferLayout.u32('bytes')])\n },\n SetComputeUnitLimit: {\n index: 2,\n layout: BufferLayout.struct([BufferLayout.u8('instruction'), BufferLayout.u32('units')])\n },\n SetComputeUnitPrice: {\n index: 3,\n layout: BufferLayout.struct([BufferLayout.u8('instruction'), u64('microLamports')])\n }\n});\n/**\n * Factory class for transaction instructions to interact with the Compute Budget program\n */\n\nclass ComputeBudgetProgram {\n /**\n * @internal\n */\n constructor() {}\n /**\n * Public key that identifies the Compute Budget program\n */\n\n\n /**\n * @deprecated Instead, call {@link setComputeUnitLimit} and/or {@link setComputeUnitPrice}\n */\n static requestUnits(params) {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestUnits;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data\n });\n }\n\n static requestHeapFrame(params) {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.RequestHeapFrame;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data\n });\n }\n\n static setComputeUnitLimit(params) {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitLimit;\n const data = encodeData(type, params);\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data\n });\n }\n\n static setComputeUnitPrice(params) {\n const type = COMPUTE_BUDGET_INSTRUCTION_LAYOUTS.SetComputeUnitPrice;\n const data = encodeData(type, {\n microLamports: BigInt(params.microLamports)\n });\n return new TransactionInstruction({\n keys: [],\n programId: this.programId,\n data\n });\n }\n\n}\nComputeBudgetProgram.programId = new PublicKey('ComputeBudget111111111111111111111111111111');\n\nconst PRIVATE_KEY_BYTES$1 = 64;\nconst PUBLIC_KEY_BYTES$1 = 32;\nconst SIGNATURE_BYTES = 64;\n/**\n * Params for creating an ed25519 instruction using a public key\n */\n\nconst ED25519_INSTRUCTION_LAYOUT = BufferLayout.struct([BufferLayout.u8('numSignatures'), BufferLayout.u8('padding'), BufferLayout.u16('signatureOffset'), BufferLayout.u16('signatureInstructionIndex'), BufferLayout.u16('publicKeyOffset'), BufferLayout.u16('publicKeyInstructionIndex'), BufferLayout.u16('messageDataOffset'), BufferLayout.u16('messageDataSize'), BufferLayout.u16('messageInstructionIndex')]);\nclass Ed25519Program {\n /**\n * @internal\n */\n constructor() {}\n /**\n * Public key that identifies the ed25519 program\n */\n\n\n /**\n * Create an ed25519 instruction with a public key and signature. The\n * public key must be a buffer that is 32 bytes long, and the signature\n * must be a buffer of 64 bytes.\n */\n static createInstructionWithPublicKey(params) {\n const {\n publicKey,\n message,\n signature,\n instructionIndex\n } = params;\n assert(publicKey.length === PUBLIC_KEY_BYTES$1, `Public Key must be ${PUBLIC_KEY_BYTES$1} bytes but received ${publicKey.length} bytes`);\n assert(signature.length === SIGNATURE_BYTES, `Signature must be ${SIGNATURE_BYTES} bytes but received ${signature.length} bytes`);\n const publicKeyOffset = ED25519_INSTRUCTION_LAYOUT.span;\n const signatureOffset = publicKeyOffset + publicKey.length;\n const messageDataOffset = signatureOffset + signature.length;\n const numSignatures = 1;\n const instructionData = Buffer.alloc(messageDataOffset + message.length);\n const index = instructionIndex == null ? 0xffff // An index of `u16::MAX` makes it default to the current instruction.\n : instructionIndex;\n ED25519_INSTRUCTION_LAYOUT.encode({\n numSignatures,\n padding: 0,\n signatureOffset,\n signatureInstructionIndex: index,\n publicKeyOffset,\n publicKeyInstructionIndex: index,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: index\n }, instructionData);\n instructionData.fill(publicKey, publicKeyOffset);\n instructionData.fill(signature, signatureOffset);\n instructionData.fill(message, messageDataOffset);\n return new TransactionInstruction({\n keys: [],\n programId: Ed25519Program.programId,\n data: instructionData\n });\n }\n /**\n * Create an ed25519 instruction with a private key. The private key\n * must be a buffer that is 64 bytes long.\n */\n\n\n static createInstructionWithPrivateKey(params) {\n const {\n privateKey,\n message,\n instructionIndex\n } = params;\n assert(privateKey.length === PRIVATE_KEY_BYTES$1, `Private key must be ${PRIVATE_KEY_BYTES$1} bytes but received ${privateKey.length} bytes`);\n\n try {\n const keypair = Keypair.fromSecretKey(privateKey);\n const publicKey = keypair.publicKey.toBytes();\n const signature = sign(message, keypair.secretKey);\n return this.createInstructionWithPublicKey({\n publicKey,\n message,\n signature,\n instructionIndex\n });\n } catch (error) {\n throw new Error(`Error creating instruction; ${error}`);\n }\n }\n\n}\nEd25519Program.programId = new PublicKey('Ed25519SigVerify111111111111111111111111111');\n\n// library interoperable with the synchronous APIs in web3.js.\n\nsecp256k1.utils.hmacSha256Sync = (key, ...msgs) => {\n const h = hmac.create(sha256, key);\n msgs.forEach(msg => h.update(msg));\n return h.digest();\n};\n\nconst ecdsaSign = (msgHash, privKey) => secp256k1.signSync(msgHash, privKey, {\n der: false,\n recovered: true\n});\nsecp256k1.utils.isValidPrivateKey;\nconst publicKeyCreate = secp256k1.getPublicKey;\n\nconst PRIVATE_KEY_BYTES = 32;\nconst ETHEREUM_ADDRESS_BYTES = 20;\nconst PUBLIC_KEY_BYTES = 64;\nconst SIGNATURE_OFFSETS_SERIALIZED_SIZE = 11;\n/**\n * Params for creating an secp256k1 instruction using a public key\n */\n\nconst SECP256K1_INSTRUCTION_LAYOUT = BufferLayout.struct([BufferLayout.u8('numSignatures'), BufferLayout.u16('signatureOffset'), BufferLayout.u8('signatureInstructionIndex'), BufferLayout.u16('ethAddressOffset'), BufferLayout.u8('ethAddressInstructionIndex'), BufferLayout.u16('messageDataOffset'), BufferLayout.u16('messageDataSize'), BufferLayout.u8('messageInstructionIndex'), BufferLayout.blob(20, 'ethAddress'), BufferLayout.blob(64, 'signature'), BufferLayout.u8('recoveryId')]);\nclass Secp256k1Program {\n /**\n * @internal\n */\n constructor() {}\n /**\n * Public key that identifies the secp256k1 program\n */\n\n\n /**\n * Construct an Ethereum address from a secp256k1 public key buffer.\n * @param {Buffer} publicKey a 64 byte secp256k1 public key buffer\n */\n static publicKeyToEthAddress(publicKey) {\n assert(publicKey.length === PUBLIC_KEY_BYTES, `Public key must be ${PUBLIC_KEY_BYTES} bytes but received ${publicKey.length} bytes`);\n\n try {\n return Buffer.from(keccak_256(toBuffer(publicKey))).slice(-ETHEREUM_ADDRESS_BYTES);\n } catch (error) {\n throw new Error(`Error constructing Ethereum address: ${error}`);\n }\n }\n /**\n * Create an secp256k1 instruction with a public key. The public key\n * must be a buffer that is 64 bytes long.\n */\n\n\n static createInstructionWithPublicKey(params) {\n const {\n publicKey,\n message,\n signature,\n recoveryId,\n instructionIndex\n } = params;\n return Secp256k1Program.createInstructionWithEthAddress({\n ethAddress: Secp256k1Program.publicKeyToEthAddress(publicKey),\n message,\n signature,\n recoveryId,\n instructionIndex\n });\n }\n /**\n * Create an secp256k1 instruction with an Ethereum address. The address\n * must be a hex string or a buffer that is 20 bytes long.\n */\n\n\n static createInstructionWithEthAddress(params) {\n const {\n ethAddress: rawAddress,\n message,\n signature,\n recoveryId,\n instructionIndex = 0\n } = params;\n let ethAddress;\n\n if (typeof rawAddress === 'string') {\n if (rawAddress.startsWith('0x')) {\n ethAddress = Buffer.from(rawAddress.substr(2), 'hex');\n } else {\n ethAddress = Buffer.from(rawAddress, 'hex');\n }\n } else {\n ethAddress = rawAddress;\n }\n\n assert(ethAddress.length === ETHEREUM_ADDRESS_BYTES, `Address must be ${ETHEREUM_ADDRESS_BYTES} bytes but received ${ethAddress.length} bytes`);\n const dataStart = 1 + SIGNATURE_OFFSETS_SERIALIZED_SIZE;\n const ethAddressOffset = dataStart;\n const signatureOffset = dataStart + ethAddress.length;\n const messageDataOffset = signatureOffset + signature.length + 1;\n const numSignatures = 1;\n const instructionData = Buffer.alloc(SECP256K1_INSTRUCTION_LAYOUT.span + message.length);\n SECP256K1_INSTRUCTION_LAYOUT.encode({\n numSignatures,\n signatureOffset,\n signatureInstructionIndex: instructionIndex,\n ethAddressOffset,\n ethAddressInstructionIndex: instructionIndex,\n messageDataOffset,\n messageDataSize: message.length,\n messageInstructionIndex: instructionIndex,\n signature: toBuffer(signature),\n ethAddress: toBuffer(ethAddress),\n recoveryId\n }, instructionData);\n instructionData.fill(toBuffer(message), SECP256K1_INSTRUCTION_LAYOUT.span);\n return new TransactionInstruction({\n keys: [],\n programId: Secp256k1Program.programId,\n data: instructionData\n });\n }\n /**\n * Create an secp256k1 instruction with a private key. The private key\n * must be a buffer that is 32 bytes long.\n */\n\n\n static createInstructionWithPrivateKey(params) {\n const {\n privateKey: pkey,\n message,\n instructionIndex\n } = params;\n assert(pkey.length === PRIVATE_KEY_BYTES, `Private key must be ${PRIVATE_KEY_BYTES} bytes but received ${pkey.length} bytes`);\n\n try {\n const privateKey = toBuffer(pkey);\n const publicKey = publicKeyCreate(privateKey, false\n /* isCompressed */\n ).slice(1); // throw away leading byte\n\n const messageHash = Buffer.from(keccak_256(toBuffer(message)));\n const [signature, recoveryId] = ecdsaSign(messageHash, privateKey);\n return this.createInstructionWithPublicKey({\n publicKey,\n message,\n signature,\n recoveryId,\n instructionIndex\n });\n } catch (error) {\n throw new Error(`Error creating instruction; ${error}`);\n }\n }\n\n}\nSecp256k1Program.programId = new PublicKey('KeccakSecp256k11111111111111111111111111111');\n\n/**\n * Address of the stake config account which configures the rate\n * of stake warmup and cooldown as well as the slashing penalty.\n */\n\nconst STAKE_CONFIG_ID = new PublicKey('StakeConfig11111111111111111111111111111111');\n/**\n * Stake account authority info\n */\n\nclass Authorized {\n /** stake authority */\n\n /** withdraw authority */\n\n /**\n * Create a new Authorized object\n * @param staker the stake authority\n * @param withdrawer the withdraw authority\n */\n constructor(staker, withdrawer) {\n this.staker = void 0;\n this.withdrawer = void 0;\n this.staker = staker;\n this.withdrawer = withdrawer;\n }\n\n}\n\n/**\n * Stake account lockup info\n */\nclass Lockup {\n /** Unix timestamp of lockup expiration */\n\n /** Epoch of lockup expiration */\n\n /** Lockup custodian authority */\n\n /**\n * Create a new Lockup object\n */\n constructor(unixTimestamp, epoch, custodian) {\n this.unixTimestamp = void 0;\n this.epoch = void 0;\n this.custodian = void 0;\n this.unixTimestamp = unixTimestamp;\n this.epoch = epoch;\n this.custodian = custodian;\n }\n /**\n * Default, inactive Lockup value\n */\n\n\n}\nLockup.default = new Lockup(0, 0, PublicKey.default);\n\n/**\n * Stake Instruction class\n */\nclass StakeInstruction {\n /**\n * @internal\n */\n constructor() {}\n /**\n * Decode a stake instruction and retrieve the instruction type.\n */\n\n\n static decodeInstructionType(instruction) {\n this.checkProgramId(instruction.programId);\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n let type;\n\n for (const [ixType, layout] of Object.entries(STAKE_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a StakeInstruction');\n }\n\n return type;\n }\n /**\n * Decode a initialize stake instruction and retrieve the instruction params.\n */\n\n\n static decodeInitialize(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n const {\n authorized,\n lockup\n } = decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Initialize, instruction.data);\n return {\n stakePubkey: instruction.keys[0].pubkey,\n authorized: new Authorized(new PublicKey(authorized.staker), new PublicKey(authorized.withdrawer)),\n lockup: new Lockup(lockup.unixTimestamp, lockup.epoch, new PublicKey(lockup.custodian))\n };\n }\n /**\n * Decode a delegate stake instruction and retrieve the instruction params.\n */\n\n\n static decodeDelegate(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 6);\n decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Delegate, instruction.data);\n return {\n stakePubkey: instruction.keys[0].pubkey,\n votePubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[5].pubkey\n };\n }\n /**\n * Decode an authorize stake instruction and retrieve the instruction params.\n */\n\n\n static decodeAuthorize(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {\n newAuthorized,\n stakeAuthorizationType\n } = decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Authorize, instruction.data);\n const o = {\n stakePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n stakeAuthorizationType: {\n index: stakeAuthorizationType\n }\n };\n\n if (instruction.keys.length > 3) {\n o.custodianPubkey = instruction.keys[3].pubkey;\n }\n\n return o;\n }\n /**\n * Decode an authorize-with-seed stake instruction and retrieve the instruction params.\n */\n\n\n static decodeAuthorizeWithSeed(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 2);\n const {\n newAuthorized,\n stakeAuthorizationType,\n authoritySeed,\n authorityOwner\n } = decodeData$1(STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed, instruction.data);\n const o = {\n stakePubkey: instruction.keys[0].pubkey,\n authorityBase: instruction.keys[1].pubkey,\n authoritySeed: authoritySeed,\n authorityOwner: new PublicKey(authorityOwner),\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n stakeAuthorizationType: {\n index: stakeAuthorizationType\n }\n };\n\n if (instruction.keys.length > 3) {\n o.custodianPubkey = instruction.keys[3].pubkey;\n }\n\n return o;\n }\n /**\n * Decode a split stake instruction and retrieve the instruction params.\n */\n\n\n static decodeSplit(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {\n lamports\n } = decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Split, instruction.data);\n return {\n stakePubkey: instruction.keys[0].pubkey,\n splitStakePubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n lamports\n };\n }\n /**\n * Decode a merge stake instruction and retrieve the instruction params.\n */\n\n\n static decodeMerge(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Merge, instruction.data);\n return {\n stakePubkey: instruction.keys[0].pubkey,\n sourceStakePubKey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey\n };\n }\n /**\n * Decode a withdraw stake instruction and retrieve the instruction params.\n */\n\n\n static decodeWithdraw(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 5);\n const {\n lamports\n } = decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Withdraw, instruction.data);\n const o = {\n stakePubkey: instruction.keys[0].pubkey,\n toPubkey: instruction.keys[1].pubkey,\n authorizedPubkey: instruction.keys[4].pubkey,\n lamports\n };\n\n if (instruction.keys.length > 5) {\n o.custodianPubkey = instruction.keys[5].pubkey;\n }\n\n return o;\n }\n /**\n * Decode a deactivate stake instruction and retrieve the instruction params.\n */\n\n\n static decodeDeactivate(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n decodeData$1(STAKE_INSTRUCTION_LAYOUTS.Deactivate, instruction.data);\n return {\n stakePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey\n };\n }\n /**\n * @internal\n */\n\n\n static checkProgramId(programId) {\n if (!programId.equals(StakeProgram.programId)) {\n throw new Error('invalid instruction; programId is not StakeProgram');\n }\n }\n /**\n * @internal\n */\n\n\n static checkKeyLength(keys, expectedLength) {\n if (keys.length < expectedLength) {\n throw new Error(`invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`);\n }\n }\n\n}\n/**\n * An enumeration of valid StakeInstructionType's\n */\n\n/**\n * An enumeration of valid stake InstructionType's\n * @internal\n */\nconst STAKE_INSTRUCTION_LAYOUTS = Object.freeze({\n Initialize: {\n index: 0,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), authorized(), lockup()])\n },\n Authorize: {\n index: 1,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), publicKey('newAuthorized'), BufferLayout.u32('stakeAuthorizationType')])\n },\n Delegate: {\n index: 2,\n layout: BufferLayout.struct([BufferLayout.u32('instruction')])\n },\n Split: {\n index: 3,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), BufferLayout.ns64('lamports')])\n },\n Withdraw: {\n index: 4,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), BufferLayout.ns64('lamports')])\n },\n Deactivate: {\n index: 5,\n layout: BufferLayout.struct([BufferLayout.u32('instruction')])\n },\n Merge: {\n index: 7,\n layout: BufferLayout.struct([BufferLayout.u32('instruction')])\n },\n AuthorizeWithSeed: {\n index: 8,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), publicKey('newAuthorized'), BufferLayout.u32('stakeAuthorizationType'), rustString('authoritySeed'), publicKey('authorityOwner')])\n }\n});\n/**\n * Stake authorization type\n */\n\n/**\n * An enumeration of valid StakeAuthorizationLayout's\n */\nconst StakeAuthorizationLayout = Object.freeze({\n Staker: {\n index: 0\n },\n Withdrawer: {\n index: 1\n }\n});\n/**\n * Factory class for transactions to interact with the Stake program\n */\n\nclass StakeProgram {\n /**\n * @internal\n */\n constructor() {}\n /**\n * Public key that identifies the Stake program\n */\n\n\n /**\n * Generate an Initialize instruction to add to a Stake Create transaction\n */\n static initialize(params) {\n const {\n stakePubkey,\n authorized,\n lockup: maybeLockup\n } = params;\n const lockup = maybeLockup || Lockup.default;\n const type = STAKE_INSTRUCTION_LAYOUTS.Initialize;\n const data = encodeData(type, {\n authorized: {\n staker: toBuffer(authorized.staker.toBuffer()),\n withdrawer: toBuffer(authorized.withdrawer.toBuffer())\n },\n lockup: {\n unixTimestamp: lockup.unixTimestamp,\n epoch: lockup.epoch,\n custodian: toBuffer(lockup.custodian.toBuffer())\n }\n });\n const instructionData = {\n keys: [{\n pubkey: stakePubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false\n }],\n programId: this.programId,\n data\n };\n return new TransactionInstruction(instructionData);\n }\n /**\n * Generate a Transaction that creates a new Stake account at\n * an address generated with `from`, a seed, and the Stake programId\n */\n\n\n static createAccountWithSeed(params) {\n const transaction = new Transaction();\n transaction.add(SystemProgram.createAccountWithSeed({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.stakePubkey,\n basePubkey: params.basePubkey,\n seed: params.seed,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId\n }));\n const {\n stakePubkey,\n authorized,\n lockup\n } = params;\n return transaction.add(this.initialize({\n stakePubkey,\n authorized,\n lockup\n }));\n }\n /**\n * Generate a Transaction that creates a new Stake account\n */\n\n\n static createAccount(params) {\n const transaction = new Transaction();\n transaction.add(SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.stakePubkey,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId\n }));\n const {\n stakePubkey,\n authorized,\n lockup\n } = params;\n return transaction.add(this.initialize({\n stakePubkey,\n authorized,\n lockup\n }));\n }\n /**\n * Generate a Transaction that delegates Stake tokens to a validator\n * Vote PublicKey. This transaction can also be used to redelegate Stake\n * to a new validator Vote PublicKey.\n */\n\n\n static delegate(params) {\n const {\n stakePubkey,\n authorizedPubkey,\n votePubkey\n } = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Delegate;\n const data = encodeData(type);\n return new Transaction().add({\n keys: [{\n pubkey: stakePubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: votePubkey,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: SYSVAR_CLOCK_PUBKEY,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: STAKE_CONFIG_ID,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: authorizedPubkey,\n isSigner: true,\n isWritable: false\n }],\n programId: this.programId,\n data\n });\n }\n /**\n * Generate a Transaction that authorizes a new PublicKey as Staker\n * or Withdrawer on the Stake account.\n */\n\n\n static authorize(params) {\n const {\n stakePubkey,\n authorizedPubkey,\n newAuthorizedPubkey,\n stakeAuthorizationType,\n custodianPubkey\n } = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Authorize;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n stakeAuthorizationType: stakeAuthorizationType.index\n });\n const keys = [{\n pubkey: stakePubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: SYSVAR_CLOCK_PUBKEY,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: authorizedPubkey,\n isSigner: true,\n isWritable: false\n }];\n\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: false,\n isWritable: false\n });\n }\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data\n });\n }\n /**\n * Generate a Transaction that authorizes a new PublicKey as Staker\n * or Withdrawer on the Stake account.\n */\n\n\n static authorizeWithSeed(params) {\n const {\n stakePubkey,\n authorityBase,\n authoritySeed,\n authorityOwner,\n newAuthorizedPubkey,\n stakeAuthorizationType,\n custodianPubkey\n } = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n stakeAuthorizationType: stakeAuthorizationType.index,\n authoritySeed: authoritySeed,\n authorityOwner: toBuffer(authorityOwner.toBuffer())\n });\n const keys = [{\n pubkey: stakePubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: authorityBase,\n isSigner: true,\n isWritable: false\n }, {\n pubkey: SYSVAR_CLOCK_PUBKEY,\n isSigner: false,\n isWritable: false\n }];\n\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: false,\n isWritable: false\n });\n }\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data\n });\n }\n /**\n * @internal\n */\n\n\n static splitInstruction(params) {\n const {\n stakePubkey,\n authorizedPubkey,\n splitStakePubkey,\n lamports\n } = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Split;\n const data = encodeData(type, {\n lamports\n });\n return new TransactionInstruction({\n keys: [{\n pubkey: stakePubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: splitStakePubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: authorizedPubkey,\n isSigner: true,\n isWritable: false\n }],\n programId: this.programId,\n data\n });\n }\n /**\n * Generate a Transaction that splits Stake tokens into another stake account\n */\n\n\n static split(params) {\n const transaction = new Transaction();\n transaction.add(SystemProgram.createAccount({\n fromPubkey: params.authorizedPubkey,\n newAccountPubkey: params.splitStakePubkey,\n lamports: 0,\n space: this.space,\n programId: this.programId\n }));\n return transaction.add(this.splitInstruction(params));\n }\n /**\n * Generate a Transaction that splits Stake tokens into another account\n * derived from a base public key and seed\n */\n\n\n static splitWithSeed(params) {\n const {\n stakePubkey,\n authorizedPubkey,\n splitStakePubkey,\n basePubkey,\n seed,\n lamports\n } = params;\n const transaction = new Transaction();\n transaction.add(SystemProgram.allocate({\n accountPubkey: splitStakePubkey,\n basePubkey,\n seed,\n space: this.space,\n programId: this.programId\n }));\n return transaction.add(this.splitInstruction({\n stakePubkey,\n authorizedPubkey,\n splitStakePubkey,\n lamports\n }));\n }\n /**\n * Generate a Transaction that merges Stake accounts.\n */\n\n\n static merge(params) {\n const {\n stakePubkey,\n sourceStakePubKey,\n authorizedPubkey\n } = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Merge;\n const data = encodeData(type);\n return new Transaction().add({\n keys: [{\n pubkey: stakePubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: sourceStakePubKey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: SYSVAR_CLOCK_PUBKEY,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: authorizedPubkey,\n isSigner: true,\n isWritable: false\n }],\n programId: this.programId,\n data\n });\n }\n /**\n * Generate a Transaction that withdraws deactivated Stake tokens.\n */\n\n\n static withdraw(params) {\n const {\n stakePubkey,\n authorizedPubkey,\n toPubkey,\n lamports,\n custodianPubkey\n } = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Withdraw;\n const data = encodeData(type, {\n lamports\n });\n const keys = [{\n pubkey: stakePubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: toPubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: SYSVAR_CLOCK_PUBKEY,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: SYSVAR_STAKE_HISTORY_PUBKEY,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: authorizedPubkey,\n isSigner: true,\n isWritable: false\n }];\n\n if (custodianPubkey) {\n keys.push({\n pubkey: custodianPubkey,\n isSigner: false,\n isWritable: false\n });\n }\n\n return new Transaction().add({\n keys,\n programId: this.programId,\n data\n });\n }\n /**\n * Generate a Transaction that deactivates Stake tokens.\n */\n\n\n static deactivate(params) {\n const {\n stakePubkey,\n authorizedPubkey\n } = params;\n const type = STAKE_INSTRUCTION_LAYOUTS.Deactivate;\n const data = encodeData(type);\n return new Transaction().add({\n keys: [{\n pubkey: stakePubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: SYSVAR_CLOCK_PUBKEY,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: authorizedPubkey,\n isSigner: true,\n isWritable: false\n }],\n programId: this.programId,\n data\n });\n }\n\n}\nStakeProgram.programId = new PublicKey('Stake11111111111111111111111111111111111111');\nStakeProgram.space = 200;\n\n/**\n * Vote account info\n */\n\nclass VoteInit {\n /** [0, 100] */\n constructor(nodePubkey, authorizedVoter, authorizedWithdrawer, commission) {\n this.nodePubkey = void 0;\n this.authorizedVoter = void 0;\n this.authorizedWithdrawer = void 0;\n this.commission = void 0;\n this.nodePubkey = nodePubkey;\n this.authorizedVoter = authorizedVoter;\n this.authorizedWithdrawer = authorizedWithdrawer;\n this.commission = commission;\n }\n\n}\n/**\n * Create vote account transaction params\n */\n\n/**\n * Vote Instruction class\n */\nclass VoteInstruction {\n /**\n * @internal\n */\n constructor() {}\n /**\n * Decode a vote instruction and retrieve the instruction type.\n */\n\n\n static decodeInstructionType(instruction) {\n this.checkProgramId(instruction.programId);\n const instructionTypeLayout = BufferLayout.u32('instruction');\n const typeIndex = instructionTypeLayout.decode(instruction.data);\n let type;\n\n for (const [ixType, layout] of Object.entries(VOTE_INSTRUCTION_LAYOUTS)) {\n if (layout.index == typeIndex) {\n type = ixType;\n break;\n }\n }\n\n if (!type) {\n throw new Error('Instruction type incorrect; not a VoteInstruction');\n }\n\n return type;\n }\n /**\n * Decode an initialize vote instruction and retrieve the instruction params.\n */\n\n\n static decodeInitializeAccount(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 4);\n const {\n voteInit\n } = decodeData$1(VOTE_INSTRUCTION_LAYOUTS.InitializeAccount, instruction.data);\n return {\n votePubkey: instruction.keys[0].pubkey,\n nodePubkey: instruction.keys[3].pubkey,\n voteInit: new VoteInit(new PublicKey(voteInit.nodePubkey), new PublicKey(voteInit.authorizedVoter), new PublicKey(voteInit.authorizedWithdrawer), voteInit.commission)\n };\n }\n /**\n * Decode an authorize instruction and retrieve the instruction params.\n */\n\n\n static decodeAuthorize(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {\n newAuthorized,\n voteAuthorizationType\n } = decodeData$1(VOTE_INSTRUCTION_LAYOUTS.Authorize, instruction.data);\n return {\n votePubkey: instruction.keys[0].pubkey,\n authorizedPubkey: instruction.keys[2].pubkey,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n voteAuthorizationType: {\n index: voteAuthorizationType\n }\n };\n }\n /**\n * Decode an authorize instruction and retrieve the instruction params.\n */\n\n\n static decodeAuthorizeWithSeed(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {\n voteAuthorizeWithSeedArgs: {\n currentAuthorityDerivedKeyOwnerPubkey,\n currentAuthorityDerivedKeySeed,\n newAuthorized,\n voteAuthorizationType\n }\n } = decodeData$1(VOTE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed, instruction.data);\n return {\n currentAuthorityDerivedKeyBasePubkey: instruction.keys[2].pubkey,\n currentAuthorityDerivedKeyOwnerPubkey: new PublicKey(currentAuthorityDerivedKeyOwnerPubkey),\n currentAuthorityDerivedKeySeed: currentAuthorityDerivedKeySeed,\n newAuthorizedPubkey: new PublicKey(newAuthorized),\n voteAuthorizationType: {\n index: voteAuthorizationType\n },\n votePubkey: instruction.keys[0].pubkey\n };\n }\n /**\n * Decode a withdraw instruction and retrieve the instruction params.\n */\n\n\n static decodeWithdraw(instruction) {\n this.checkProgramId(instruction.programId);\n this.checkKeyLength(instruction.keys, 3);\n const {\n lamports\n } = decodeData$1(VOTE_INSTRUCTION_LAYOUTS.Withdraw, instruction.data);\n return {\n votePubkey: instruction.keys[0].pubkey,\n authorizedWithdrawerPubkey: instruction.keys[2].pubkey,\n lamports,\n toPubkey: instruction.keys[1].pubkey\n };\n }\n /**\n * @internal\n */\n\n\n static checkProgramId(programId) {\n if (!programId.equals(VoteProgram.programId)) {\n throw new Error('invalid instruction; programId is not VoteProgram');\n }\n }\n /**\n * @internal\n */\n\n\n static checkKeyLength(keys, expectedLength) {\n if (keys.length < expectedLength) {\n throw new Error(`invalid instruction; found ${keys.length} keys, expected at least ${expectedLength}`);\n }\n }\n\n}\n/**\n * An enumeration of valid VoteInstructionType's\n */\n\nconst VOTE_INSTRUCTION_LAYOUTS = Object.freeze({\n InitializeAccount: {\n index: 0,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), voteInit()])\n },\n Authorize: {\n index: 1,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), publicKey('newAuthorized'), BufferLayout.u32('voteAuthorizationType')])\n },\n Withdraw: {\n index: 3,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), BufferLayout.ns64('lamports')])\n },\n AuthorizeWithSeed: {\n index: 10,\n layout: BufferLayout.struct([BufferLayout.u32('instruction'), voteAuthorizeWithSeedArgs()])\n }\n});\n/**\n * VoteAuthorize type\n */\n\n/**\n * An enumeration of valid VoteAuthorization layouts.\n */\nconst VoteAuthorizationLayout = Object.freeze({\n Voter: {\n index: 0\n },\n Withdrawer: {\n index: 1\n }\n});\n/**\n * Factory class for transactions to interact with the Vote program\n */\n\nclass VoteProgram {\n /**\n * @internal\n */\n constructor() {}\n /**\n * Public key that identifies the Vote program\n */\n\n\n /**\n * Generate an Initialize instruction.\n */\n static initializeAccount(params) {\n const {\n votePubkey,\n nodePubkey,\n voteInit\n } = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.InitializeAccount;\n const data = encodeData(type, {\n voteInit: {\n nodePubkey: toBuffer(voteInit.nodePubkey.toBuffer()),\n authorizedVoter: toBuffer(voteInit.authorizedVoter.toBuffer()),\n authorizedWithdrawer: toBuffer(voteInit.authorizedWithdrawer.toBuffer()),\n commission: voteInit.commission\n }\n });\n const instructionData = {\n keys: [{\n pubkey: votePubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: SYSVAR_RENT_PUBKEY,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: SYSVAR_CLOCK_PUBKEY,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: nodePubkey,\n isSigner: true,\n isWritable: false\n }],\n programId: this.programId,\n data\n };\n return new TransactionInstruction(instructionData);\n }\n /**\n * Generate a transaction that creates a new Vote account.\n */\n\n\n static createAccount(params) {\n const transaction = new Transaction();\n transaction.add(SystemProgram.createAccount({\n fromPubkey: params.fromPubkey,\n newAccountPubkey: params.votePubkey,\n lamports: params.lamports,\n space: this.space,\n programId: this.programId\n }));\n return transaction.add(this.initializeAccount({\n votePubkey: params.votePubkey,\n nodePubkey: params.voteInit.nodePubkey,\n voteInit: params.voteInit\n }));\n }\n /**\n * Generate a transaction that authorizes a new Voter or Withdrawer on the Vote account.\n */\n\n\n static authorize(params) {\n const {\n votePubkey,\n authorizedPubkey,\n newAuthorizedPubkey,\n voteAuthorizationType\n } = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.Authorize;\n const data = encodeData(type, {\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n voteAuthorizationType: voteAuthorizationType.index\n });\n const keys = [{\n pubkey: votePubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: SYSVAR_CLOCK_PUBKEY,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: authorizedPubkey,\n isSigner: true,\n isWritable: false\n }];\n return new Transaction().add({\n keys,\n programId: this.programId,\n data\n });\n }\n /**\n * Generate a transaction that authorizes a new Voter or Withdrawer on the Vote account\n * where the current Voter or Withdrawer authority is a derived key.\n */\n\n\n static authorizeWithSeed(params) {\n const {\n currentAuthorityDerivedKeyBasePubkey,\n currentAuthorityDerivedKeyOwnerPubkey,\n currentAuthorityDerivedKeySeed,\n newAuthorizedPubkey,\n voteAuthorizationType,\n votePubkey\n } = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.AuthorizeWithSeed;\n const data = encodeData(type, {\n voteAuthorizeWithSeedArgs: {\n currentAuthorityDerivedKeyOwnerPubkey: toBuffer(currentAuthorityDerivedKeyOwnerPubkey.toBuffer()),\n currentAuthorityDerivedKeySeed: currentAuthorityDerivedKeySeed,\n newAuthorized: toBuffer(newAuthorizedPubkey.toBuffer()),\n voteAuthorizationType: voteAuthorizationType.index\n }\n });\n const keys = [{\n pubkey: votePubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: SYSVAR_CLOCK_PUBKEY,\n isSigner: false,\n isWritable: false\n }, {\n pubkey: currentAuthorityDerivedKeyBasePubkey,\n isSigner: true,\n isWritable: false\n }];\n return new Transaction().add({\n keys,\n programId: this.programId,\n data\n });\n }\n /**\n * Generate a transaction to withdraw from a Vote account.\n */\n\n\n static withdraw(params) {\n const {\n votePubkey,\n authorizedWithdrawerPubkey,\n lamports,\n toPubkey\n } = params;\n const type = VOTE_INSTRUCTION_LAYOUTS.Withdraw;\n const data = encodeData(type, {\n lamports\n });\n const keys = [{\n pubkey: votePubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: toPubkey,\n isSigner: false,\n isWritable: true\n }, {\n pubkey: authorizedWithdrawerPubkey,\n isSigner: true,\n isWritable: false\n }];\n return new Transaction().add({\n keys,\n programId: this.programId,\n data\n });\n }\n /**\n * Generate a transaction to withdraw safely from a Vote account.\n *\n * This function was created as a safeguard for vote accounts running validators, `safeWithdraw`\n * checks that the withdraw amount will not exceed the specified balance while leaving enough left\n * to cover rent. If you wish to close the vote account by withdrawing the full amount, call the\n * `withdraw` method directly.\n */\n\n\n static safeWithdraw(params, currentVoteAccountBalance, rentExemptMinimum) {\n if (params.lamports > currentVoteAccountBalance - rentExemptMinimum) {\n throw new Error('Withdraw will leave vote account with insuffcient funds.');\n }\n\n return VoteProgram.withdraw(params);\n }\n\n}\nVoteProgram.programId = new PublicKey('Vote111111111111111111111111111111111111111');\nVoteProgram.space = 3731;\n\nconst VALIDATOR_INFO_KEY = new PublicKey('Va1idator1nfo111111111111111111111111111111');\n/**\n * @internal\n */\n\nconst InfoString = type({\n name: string(),\n website: optional(string()),\n details: optional(string()),\n keybaseUsername: optional(string())\n});\n/**\n * ValidatorInfo class\n */\n\nclass ValidatorInfo {\n /**\n * validator public key\n */\n\n /**\n * validator information\n */\n\n /**\n * Construct a valid ValidatorInfo\n *\n * @param key validator public key\n * @param info validator information\n */\n constructor(key, info) {\n this.key = void 0;\n this.info = void 0;\n this.key = key;\n this.info = info;\n }\n /**\n * Deserialize ValidatorInfo from the config account data. Exactly two config\n * keys are required in the data.\n *\n * @param buffer config account data\n * @return null if info was not found\n */\n\n\n static fromConfigData(buffer) {\n let byteArray = [...buffer];\n const configKeyCount = decodeLength(byteArray);\n if (configKeyCount !== 2) return null;\n const configKeys = [];\n\n for (let i = 0; i < 2; i++) {\n const publicKey = new PublicKey(byteArray.slice(0, PUBLIC_KEY_LENGTH));\n byteArray = byteArray.slice(PUBLIC_KEY_LENGTH);\n const isSigner = byteArray.slice(0, 1)[0] === 1;\n byteArray = byteArray.slice(1);\n configKeys.push({\n publicKey,\n isSigner\n });\n }\n\n if (configKeys[0].publicKey.equals(VALIDATOR_INFO_KEY)) {\n if (configKeys[1].isSigner) {\n const rawInfo = rustString().decode(Buffer.from(byteArray));\n const info = JSON.parse(rawInfo);\n assert$1(info, InfoString);\n return new ValidatorInfo(configKeys[1].publicKey, info);\n }\n }\n\n return null;\n }\n\n}\n\nconst VOTE_PROGRAM_ID = new PublicKey('Vote111111111111111111111111111111111111111');\n\n/**\n * See https://github.com/solana-labs/solana/blob/8a12ed029cfa38d4a45400916c2463fb82bbec8c/programs/vote_api/src/vote_state.rs#L68-L88\n *\n * @internal\n */\nconst VoteAccountLayout = BufferLayout.struct([publicKey('nodePubkey'), publicKey('authorizedWithdrawer'), BufferLayout.u8('commission'), BufferLayout.nu64(), // votes.length\nBufferLayout.seq(BufferLayout.struct([BufferLayout.nu64('slot'), BufferLayout.u32('confirmationCount')]), BufferLayout.offset(BufferLayout.u32(), -8), 'votes'), BufferLayout.u8('rootSlotValid'), BufferLayout.nu64('rootSlot'), BufferLayout.nu64(), // authorizedVoters.length\nBufferLayout.seq(BufferLayout.struct([BufferLayout.nu64('epoch'), publicKey('authorizedVoter')]), BufferLayout.offset(BufferLayout.u32(), -8), 'authorizedVoters'), BufferLayout.struct([BufferLayout.seq(BufferLayout.struct([publicKey('authorizedPubkey'), BufferLayout.nu64('epochOfLastAuthorizedSwitch'), BufferLayout.nu64('targetEpoch')]), 32, 'buf'), BufferLayout.nu64('idx'), BufferLayout.u8('isEmpty')], 'priorVoters'), BufferLayout.nu64(), // epochCredits.length\nBufferLayout.seq(BufferLayout.struct([BufferLayout.nu64('epoch'), BufferLayout.nu64('credits'), BufferLayout.nu64('prevCredits')]), BufferLayout.offset(BufferLayout.u32(), -8), 'epochCredits'), BufferLayout.struct([BufferLayout.nu64('slot'), BufferLayout.nu64('timestamp')], 'lastTimestamp')]);\n\n/**\n * VoteAccount class\n */\nclass VoteAccount {\n /**\n * @internal\n */\n constructor(args) {\n this.nodePubkey = void 0;\n this.authorizedWithdrawer = void 0;\n this.commission = void 0;\n this.rootSlot = void 0;\n this.votes = void 0;\n this.authorizedVoters = void 0;\n this.priorVoters = void 0;\n this.epochCredits = void 0;\n this.lastTimestamp = void 0;\n this.nodePubkey = args.nodePubkey;\n this.authorizedWithdrawer = args.authorizedWithdrawer;\n this.commission = args.commission;\n this.rootSlot = args.rootSlot;\n this.votes = args.votes;\n this.authorizedVoters = args.authorizedVoters;\n this.priorVoters = args.priorVoters;\n this.epochCredits = args.epochCredits;\n this.lastTimestamp = args.lastTimestamp;\n }\n /**\n * Deserialize VoteAccount from the account data.\n *\n * @param buffer account data\n * @return VoteAccount\n */\n\n\n static fromAccountData(buffer) {\n const versionOffset = 4;\n const va = VoteAccountLayout.decode(toBuffer(buffer), versionOffset);\n let rootSlot = va.rootSlot;\n\n if (!va.rootSlotValid) {\n rootSlot = null;\n }\n\n return new VoteAccount({\n nodePubkey: new PublicKey(va.nodePubkey),\n authorizedWithdrawer: new PublicKey(va.authorizedWithdrawer),\n commission: va.commission,\n votes: va.votes,\n rootSlot,\n authorizedVoters: va.authorizedVoters.map(parseAuthorizedVoter),\n priorVoters: getPriorVoters(va.priorVoters),\n epochCredits: va.epochCredits,\n lastTimestamp: va.lastTimestamp\n });\n }\n\n}\n\nfunction parseAuthorizedVoter({\n authorizedVoter,\n epoch\n}) {\n return {\n epoch,\n authorizedVoter: new PublicKey(authorizedVoter)\n };\n}\n\nfunction parsePriorVoters({\n authorizedPubkey,\n epochOfLastAuthorizedSwitch,\n targetEpoch\n}) {\n return {\n authorizedPubkey: new PublicKey(authorizedPubkey),\n epochOfLastAuthorizedSwitch,\n targetEpoch\n };\n}\n\nfunction getPriorVoters({\n buf,\n idx,\n isEmpty\n}) {\n if (isEmpty) {\n return [];\n }\n\n return [...buf.slice(idx + 1).map(parsePriorVoters), ...buf.slice(0, idx).map(parsePriorVoters)];\n}\n\nconst endpoint = {\n http: {\n devnet: 'http://api.devnet.solana.com',\n testnet: 'http://api.testnet.solana.com',\n 'mainnet-beta': 'http://api.mainnet-beta.solana.com/'\n },\n https: {\n devnet: 'https://api.devnet.solana.com',\n testnet: 'https://api.testnet.solana.com',\n 'mainnet-beta': 'https://api.mainnet-beta.solana.com/'\n }\n};\n\n/**\n * Retrieves the RPC API URL for the specified cluster\n */\nfunction clusterApiUrl(cluster, tls) {\n const key = tls === false ? 'http' : 'https';\n\n if (!cluster) {\n return endpoint[key]['devnet'];\n }\n\n const url = endpoint[key][cluster];\n\n if (!url) {\n throw new Error(`Unknown ${key} cluster: ${cluster}`);\n }\n\n return url;\n}\n\n/**\n * Send and confirm a raw transaction\n *\n * If `commitment` option is not specified, defaults to 'max' commitment.\n *\n * @param {Connection} connection\n * @param {Buffer} rawTransaction\n * @param {TransactionConfirmationStrategy} confirmationStrategy\n * @param {ConfirmOptions} [options]\n * @returns {Promise}\n */\n\n/**\n * @deprecated Calling `sendAndConfirmRawTransaction()` without a `confirmationStrategy`\n * is no longer supported and will be removed in a future version.\n */\n// eslint-disable-next-line no-redeclare\n// eslint-disable-next-line no-redeclare\nasync function sendAndConfirmRawTransaction(connection, rawTransaction, confirmationStrategyOrConfirmOptions, maybeConfirmOptions) {\n let confirmationStrategy;\n let options;\n\n if (confirmationStrategyOrConfirmOptions && Object.prototype.hasOwnProperty.call(confirmationStrategyOrConfirmOptions, 'lastValidBlockHeight')) {\n confirmationStrategy = confirmationStrategyOrConfirmOptions;\n options = maybeConfirmOptions;\n } else if (confirmationStrategyOrConfirmOptions && Object.prototype.hasOwnProperty.call(confirmationStrategyOrConfirmOptions, 'nonceValue')) {\n confirmationStrategy = confirmationStrategyOrConfirmOptions;\n options = maybeConfirmOptions;\n } else {\n options = confirmationStrategyOrConfirmOptions;\n }\n\n const sendOptions = options && {\n skipPreflight: options.skipPreflight,\n preflightCommitment: options.preflightCommitment || options.commitment,\n minContextSlot: options.minContextSlot\n };\n const signature = await connection.sendRawTransaction(rawTransaction, sendOptions);\n const commitment = options && options.commitment;\n const confirmationPromise = confirmationStrategy ? connection.confirmTransaction(confirmationStrategy, commitment) : connection.confirmTransaction(signature, commitment);\n const status = (await confirmationPromise).value;\n\n if (status.err) {\n throw new Error(`Raw transaction ${signature} failed (${JSON.stringify(status)})`);\n }\n\n return signature;\n}\n\n/**\n * There are 1-billion lamports in one SOL\n */\n\nconst LAMPORTS_PER_SOL = 1000000000;\n\nexport { Account, AddressLookupTableAccount, AddressLookupTableInstruction, AddressLookupTableProgram, Authorized, BLOCKHASH_CACHE_TIMEOUT_MS, BPF_LOADER_DEPRECATED_PROGRAM_ID, BPF_LOADER_PROGRAM_ID, BpfLoader, COMPUTE_BUDGET_INSTRUCTION_LAYOUTS, ComputeBudgetInstruction, ComputeBudgetProgram, Connection, Ed25519Program, Enum, EpochSchedule, FeeCalculatorLayout, Keypair, LAMPORTS_PER_SOL, LOOKUP_TABLE_INSTRUCTION_LAYOUTS, Loader, Lockup, MAX_SEED_LENGTH, Message, MessageAccountKeys, MessageV0, NONCE_ACCOUNT_LENGTH, NonceAccount, PACKET_DATA_SIZE, PUBLIC_KEY_LENGTH, PublicKey, SIGNATURE_LENGTH_IN_BYTES, SOLANA_SCHEMA, STAKE_CONFIG_ID, STAKE_INSTRUCTION_LAYOUTS, SYSTEM_INSTRUCTION_LAYOUTS, SYSVAR_CLOCK_PUBKEY, SYSVAR_EPOCH_SCHEDULE_PUBKEY, SYSVAR_INSTRUCTIONS_PUBKEY, SYSVAR_RECENT_BLOCKHASHES_PUBKEY, SYSVAR_RENT_PUBKEY, SYSVAR_REWARDS_PUBKEY, SYSVAR_SLOT_HASHES_PUBKEY, SYSVAR_SLOT_HISTORY_PUBKEY, SYSVAR_STAKE_HISTORY_PUBKEY, Secp256k1Program, SendTransactionError, SolanaJSONRPCError, SolanaJSONRPCErrorCode, StakeAuthorizationLayout, StakeInstruction, StakeProgram, Struct, SystemInstruction, SystemProgram, Transaction, TransactionExpiredBlockheightExceededError, TransactionExpiredNonceInvalidError, TransactionExpiredTimeoutError, TransactionInstruction, TransactionMessage, TransactionStatus, VALIDATOR_INFO_KEY, VERSION_PREFIX_MASK, VOTE_PROGRAM_ID, ValidatorInfo, VersionedMessage, VersionedTransaction, VoteAccount, VoteAuthorizationLayout, VoteInit, VoteInstruction, VoteProgram, clusterApiUrl, sendAndConfirmRawTransaction, sendAndConfirmTransaction };\n//# sourceMappingURL=index.browser.esm.js.map\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport EventEmitter from 'eventemitter3';\nvar WalletAdapter = /** @class */ (function (_super) {\n __extends(WalletAdapter, _super);\n function WalletAdapter() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n return WalletAdapter;\n}(EventEmitter));\nexport default WalletAdapter;\n","import EventEmitter from 'eventemitter3';\nimport { PublicKey } from '@solana/web3.js';\nimport bs58 from 'bs58';\n\nclass Wallet extends EventEmitter {\n constructor(provider, network) {\n var _this;\n\n super();\n _this = this;\n\n this._handleMessage = e => {\n if (this._injectedProvider && e.source === window || e.origin === this._providerUrl.origin && e.source === this._popup) {\n if (e.data.method === 'connected') {\n const newPublicKey = new PublicKey(e.data.params.publicKey);\n\n if (!this._publicKey || !this._publicKey.equals(newPublicKey)) {\n if (this._publicKey && !this._publicKey.equals(newPublicKey)) {\n this._handleDisconnect();\n }\n\n this._publicKey = newPublicKey;\n this._autoApprove = !!e.data.params.autoApprove;\n this.emit('connect', this._publicKey);\n }\n } else if (e.data.method === 'disconnected') {\n this._handleDisconnect();\n } else if (e.data.result || e.data.error) {\n if (this._responsePromises.has(e.data.id)) {\n const [resolve, reject] = this._responsePromises.get(e.data.id);\n\n if (e.data.result) {\n resolve(e.data.result);\n } else {\n reject(new Error(e.data.error));\n }\n }\n }\n }\n };\n\n this._handleConnect = () => {\n if (!this._handlerAdded) {\n this._handlerAdded = true;\n window.addEventListener('message', this._handleMessage);\n window.addEventListener('beforeunload', this.disconnect);\n }\n\n if (this._injectedProvider) {\n return new Promise(resolve => {\n this._sendRequest('connect', {});\n\n resolve();\n });\n } else {\n window.name = 'parent';\n this._popup = window.open(this._providerUrl.toString(), '_blank', 'location,resizable,width=460,height=675');\n return new Promise(resolve => {\n this.once('connect', resolve);\n });\n }\n };\n\n this._handleDisconnect = () => {\n if (this._handlerAdded) {\n this._handlerAdded = false;\n window.removeEventListener('message', this._handleMessage);\n window.removeEventListener('beforeunload', this.disconnect);\n }\n\n if (this._publicKey) {\n this._publicKey = null;\n this.emit('disconnect');\n }\n\n this._responsePromises.forEach(([resolve, reject], id) => {\n this._responsePromises.delete(id);\n\n reject('Wallet disconnected');\n });\n };\n\n this._sendRequest = async function (method, params) {\n if (method !== 'connect' && !_this.connected) {\n throw new Error('Wallet not connected');\n }\n\n const requestId = _this._nextRequestId;\n ++_this._nextRequestId;\n return new Promise((resolve, reject) => {\n _this._responsePromises.set(requestId, [resolve, reject]);\n\n if (_this._injectedProvider) {\n _this._injectedProvider.postMessage({\n jsonrpc: '2.0',\n id: requestId,\n method,\n params: {\n network: _this._network,\n ...params\n }\n });\n } else {\n _this._popup.postMessage({\n jsonrpc: '2.0',\n id: requestId,\n method,\n params\n }, _this._providerUrl.origin);\n\n if (!_this.autoApprove) {\n _this._popup.focus();\n }\n }\n });\n };\n\n this.connect = () => {\n if (this._popup) {\n this._popup.close();\n }\n\n return this._handleConnect();\n };\n\n this.disconnect = async function () {\n if (_this._injectedProvider) {\n await _this._sendRequest('disconnect', {});\n }\n\n if (_this._popup) {\n _this._popup.close();\n }\n\n _this._handleDisconnect();\n };\n\n this.sign = async function (data, display) {\n if (!(data instanceof Uint8Array)) {\n throw new Error('Data must be an instance of Uint8Array');\n }\n\n const response = await _this._sendRequest('sign', {\n data,\n display\n });\n const signature = bs58.decode(response.signature);\n const publicKey = new PublicKey(response.publicKey);\n return {\n signature,\n publicKey\n };\n };\n\n this.signTransaction = async function (transaction) {\n const response = await _this._sendRequest('signTransaction', {\n message: bs58.encode(transaction.serializeMessage())\n });\n const signature = bs58.decode(response.signature);\n const publicKey = new PublicKey(response.publicKey);\n transaction.addSignature(publicKey, signature);\n return transaction;\n };\n\n this.signAllTransactions = async function (transactions) {\n const response = await _this._sendRequest('signAllTransactions', {\n messages: transactions.map(tx => bs58.encode(tx.serializeMessage()))\n });\n const signatures = response.signatures.map(s => bs58.decode(s));\n const publicKey = new PublicKey(response.publicKey);\n transactions = transactions.map((tx, idx) => {\n tx.addSignature(publicKey, signatures[idx]);\n return tx;\n });\n return transactions;\n };\n\n if (isInjectedProvider(provider)) {\n this._injectedProvider = provider;\n } else if (isString(provider)) {\n this._providerUrl = new URL(provider);\n this._providerUrl.hash = new URLSearchParams({\n origin: window.location.origin,\n network\n }).toString();\n } else {\n throw new Error('provider parameter must be an injected provider or a URL string.');\n }\n\n this._network = network;\n this._publicKey = null;\n this._autoApprove = false;\n this._popup = null;\n this._handlerAdded = false;\n this._nextRequestId = 1;\n this._responsePromises = new Map();\n }\n\n get publicKey() {\n return this._publicKey;\n }\n\n get connected() {\n return this._publicKey !== null;\n }\n\n get autoApprove() {\n return this._autoApprove;\n }\n\n}\n\nfunction isString(a) {\n return typeof a === 'string';\n}\n\nfunction isInjectedProvider(a) {\n return isObject(a) && isFunction(a.postMessage);\n}\n\nfunction isObject(a) {\n return typeof a === 'object' && a !== null;\n}\n\nfunction isFunction(a) {\n return typeof a === 'function';\n}\n\nexport default Wallet;\n//# sourceMappingURL=index.modern.js.map\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport WalletAdapter from './base';\nimport Wallet from '@project-serum/sol-wallet-adapter';\nimport bs58 from 'bs58';\nvar WebAdapter = /** @class */ (function (_super) {\n __extends(WebAdapter, _super);\n // @ts-ignore\n function WebAdapter(iframe, network, provider) {\n var _this = _super.call(this) || this;\n _this._instance = null;\n // @ts-ignore\n _this.handleMessage = function (data) {\n // nothing to do here\n };\n _this._sendRequest = function (method, params) { return __awaiter(_this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._instance.sendRequest) return [3 /*break*/, 2];\n return [4 /*yield*/, this._instance.sendRequest(method, params)];\n case 1: return [2 /*return*/, _a.sent()];\n case 2:\n if (!this._instance._sendRequest) return [3 /*break*/, 4];\n return [4 /*yield*/, this._instance._sendRequest(method, params)];\n case 3: return [2 /*return*/, _a.sent()];\n case 4: throw new Error('Unsupported version of `@project-serum/sol-wallet-adapter`');\n }\n });\n }); };\n _this._handleConnect = function () {\n _this.emit('connect');\n };\n _this._handleDisconnect = function () {\n window.clearInterval(_this._pollTimer);\n _this.emit('disconnect');\n };\n _this._network = network;\n _this._provider = provider;\n return _this;\n }\n Object.defineProperty(WebAdapter.prototype, \"publicKey\", {\n get: function () {\n return this._instance.publicKey || null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(WebAdapter.prototype, \"connected\", {\n get: function () {\n return this._instance.connected || false;\n },\n enumerable: false,\n configurable: true\n });\n WebAdapter.prototype.connect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n this._instance = new Wallet(this._provider, this._network);\n this._instance.on('connect', this._handleConnect);\n this._instance.on('disconnect', this._handleDisconnect);\n this._pollTimer = window.setInterval(function () {\n var _a, _b;\n // @ts-ignore\n if (((_b = (_a = _this._instance) === null || _a === void 0 ? void 0 : _a._popup) === null || _b === void 0 ? void 0 : _b.closed) !== false) {\n _this._handleDisconnect();\n }\n }, 200);\n return [4 /*yield*/, this._instance.connect()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n WebAdapter.prototype.disconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.connected) {\n throw new Error('Wallet not connected');\n }\n this._instance.removeAllListeners('connect');\n this._instance.removeAllListeners('disconnect');\n return [4 /*yield*/, this._instance.disconnect()];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n WebAdapter.prototype.signTransaction = function (message) {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.connected) {\n throw new Error('Wallet not connected');\n }\n return [4 /*yield*/, this._sendRequest('signTransaction', {\n message: bs58.encode(message)\n })];\n case 1:\n response = (_a.sent());\n return [2 /*return*/, bs58.decode(response.signature)];\n }\n });\n });\n };\n WebAdapter.prototype.signAllTransactions = function (messages) {\n return __awaiter(this, void 0, void 0, function () {\n var response;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.connected) {\n throw new Error('Wallet not connected');\n }\n return [4 /*yield*/, this._sendRequest('signAllTransactions', {\n messages: messages.map(function (message) { return bs58.encode(message); })\n })];\n case 1:\n response = (_a.sent());\n return [2 /*return*/, response.signatures.map(function (signature) { return bs58.decode(signature); })];\n }\n });\n });\n };\n WebAdapter.prototype.signMessage = function (data, display) {\n if (display === void 0) { display = 'hex'; }\n return __awaiter(this, void 0, void 0, function () {\n var signature;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.connected) {\n throw new Error('Wallet not connected');\n }\n return [4 /*yield*/, this._instance.sign(data, display)];\n case 1:\n signature = (_a.sent()).signature;\n return [2 /*return*/, Uint8Array.from(signature)];\n }\n });\n });\n };\n return WebAdapter;\n}(WalletAdapter));\nexport default WebAdapter;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nimport { PublicKey } from '@solana/web3.js';\nimport WalletAdapter from './base';\nimport { v4 as uuidv4 } from 'uuid';\nimport bs58 from 'bs58';\nvar IframeAdapter = /** @class */ (function (_super) {\n __extends(IframeAdapter, _super);\n function IframeAdapter(iframe, publicKey) {\n var _this = this;\n var _a;\n _this = _super.call(this) || this;\n _this._publicKey = null;\n _this._messageHandlers = {};\n _this.handleMessage = function (data) {\n if (_this._messageHandlers[data.id]) {\n var _a = _this._messageHandlers[data.id], resolve = _a.resolve, reject = _a.reject;\n delete _this._messageHandlers[data.id];\n if (data.error) {\n reject(data.error);\n }\n else {\n resolve(data.result);\n }\n }\n };\n _this._sendMessage = function (data) {\n if (!_this.connected) {\n throw new Error('Wallet not connected');\n }\n return new Promise(function (resolve, reject) {\n var _a, _b;\n var messageId = uuidv4();\n _this._messageHandlers[messageId] = { resolve: resolve, reject: reject };\n (_b = (_a = _this._iframe) === null || _a === void 0 ? void 0 : _a.contentWindow) === null || _b === void 0 ? void 0 : _b.postMessage({\n channel: 'solflareWalletAdapterToIframe',\n data: __assign({ id: messageId }, data)\n }, '*');\n });\n };\n _this._iframe = iframe;\n _this._publicKey = new PublicKey((_a = publicKey === null || publicKey === void 0 ? void 0 : publicKey.toString) === null || _a === void 0 ? void 0 : _a.call(publicKey));\n return _this;\n }\n Object.defineProperty(IframeAdapter.prototype, \"publicKey\", {\n get: function () {\n return this._publicKey || null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(IframeAdapter.prototype, \"connected\", {\n get: function () {\n return true;\n },\n enumerable: false,\n configurable: true\n });\n IframeAdapter.prototype.connect = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n return [2 /*return*/];\n });\n });\n };\n IframeAdapter.prototype.disconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this._sendMessage({\n method: 'disconnect'\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n IframeAdapter.prototype.signTransaction = function (message) {\n return __awaiter(this, void 0, void 0, function () {\n var signature, e_1;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.connected) {\n throw new Error('Wallet not connected');\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._sendMessage({\n method: 'signTransaction',\n params: {\n message: bs58.encode(message)\n }\n })];\n case 2:\n signature = (_a.sent()).signature;\n return [2 /*return*/, bs58.decode(signature)];\n case 3:\n e_1 = _a.sent();\n console.log(e_1);\n throw new Error('Failed to sign transaction');\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n IframeAdapter.prototype.signAllTransactions = function (messages) {\n return __awaiter(this, void 0, void 0, function () {\n var signatures, e_2;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.connected) {\n throw new Error('Wallet not connected');\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._sendMessage({\n method: 'signAllTransactions',\n params: {\n messages: messages.map(function (message) { return bs58.encode(message); })\n }\n })];\n case 2:\n signatures = (_a.sent()).signatures;\n return [2 /*return*/, signatures.map(function (signature) { return bs58.decode(signature); })];\n case 3:\n e_2 = _a.sent();\n console.log(e_2);\n throw new Error('Failed to sign transactions');\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n IframeAdapter.prototype.signMessage = function (data, display) {\n if (display === void 0) { display = 'hex'; }\n return __awaiter(this, void 0, void 0, function () {\n var result, e_3;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.connected) {\n throw new Error('Wallet not connected');\n }\n _a.label = 1;\n case 1:\n _a.trys.push([1, 3, , 4]);\n return [4 /*yield*/, this._sendMessage({\n method: 'signMessage',\n params: {\n data: data,\n display: display\n }\n })];\n case 2:\n result = _a.sent();\n return [2 /*return*/, Uint8Array.from(bs58.decode(result))];\n case 3:\n e_3 = _a.sent();\n console.log(e_3);\n throw new Error('Failed to sign message');\n case 4: return [2 /*return*/];\n }\n });\n });\n };\n return IframeAdapter;\n}(WalletAdapter));\nexport default IframeAdapter;\n","export function isLegacyTransactionInstance(transaction) {\n return transaction.version === undefined;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\n return new (P || (P = Promise))(function (resolve, reject) {\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\n step((generator = generator.apply(thisArg, _arguments || [])).next());\n });\n};\nvar __generator = (this && this.__generator) || function (thisArg, body) {\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\n function verb(n) { return function (v) { return step([n, v]); }; }\n function step(op) {\n if (f) throw new TypeError(\"Generator is already executing.\");\n while (_) try {\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\n if (y = 0, t) op = [op[0] & 2, t.value];\n switch (op[0]) {\n case 0: case 1: t = op; break;\n case 4: _.label++; return { value: op[1], done: false };\n case 5: _.label++; y = op[1]; op = [0]; continue;\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\n default:\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\n if (t[2]) _.ops.pop();\n _.trys.pop(); continue;\n }\n op = body.call(thisArg, _);\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\n }\n};\nvar __values = (this && this.__values) || function(o) {\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\n if (m) return m.call(o);\n if (o && typeof o.length === \"number\") return {\n next: function () {\n if (o && i >= o.length) o = void 0;\n return { value: o && o[i++], done: !o };\n }\n };\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\n};\nimport EventEmitter from 'eventemitter3';\nimport WebAdapter from './adapters/web';\nimport IframeAdapter from './adapters/iframe';\nimport { isLegacyTransactionInstance } from './utils';\nvar Solflare = /** @class */ (function (_super) {\n __extends(Solflare, _super);\n // private static IFRAME_URL = 'http://localhost:3090/';\n function Solflare(config) {\n var _this = _super.call(this) || this;\n _this._network = 'mainnet-beta';\n _this._provider = null;\n _this._adapterInstance = null;\n _this._element = null;\n _this._iframe = null;\n _this._connectHandler = null;\n _this._flutterHandlerInterval = null;\n _this._handleEvent = function (event) {\n var _a, _b, _c, _d;\n switch (event.type) {\n case 'connect_native_web': {\n _this._collapseIframe();\n _this._adapterInstance = new WebAdapter(_this._iframe, _this._network, ((_a = event.data) === null || _a === void 0 ? void 0 : _a.provider) || _this._provider || 'https://solflare.com/provider');\n _this._adapterInstance.on('connect', _this._webConnected);\n _this._adapterInstance.on('disconnect', _this._webDisconnected);\n _this._adapterInstance.connect();\n _this._setPreferredAdapter('native_web');\n return;\n }\n case 'connect': {\n _this._collapseIframe();\n _this._adapterInstance = new IframeAdapter(_this._iframe, ((_b = event.data) === null || _b === void 0 ? void 0 : _b.publicKey) || '');\n _this._adapterInstance.connect();\n _this._setPreferredAdapter((_c = event.data) === null || _c === void 0 ? void 0 : _c.adapter);\n if (_this._connectHandler) {\n _this._connectHandler.resolve();\n _this._connectHandler = null;\n }\n _this.emit('connect', _this.publicKey);\n return;\n }\n case 'disconnect': {\n if (_this._connectHandler) {\n _this._connectHandler.reject();\n _this._connectHandler = null;\n }\n _this._disconnected();\n _this.emit('disconnect');\n return;\n }\n case 'accountChanged': {\n if ((_d = event.data) === null || _d === void 0 ? void 0 : _d.publicKey) {\n _this._adapterInstance = new IframeAdapter(_this._iframe, event.data.publicKey);\n _this._adapterInstance.connect();\n _this.emit('accountChanged', _this.publicKey);\n }\n else {\n _this.emit('accountChanged', undefined);\n }\n return;\n }\n // legacy event, use resize message type instead\n case 'collapse': {\n _this._collapseIframe();\n return;\n }\n default: {\n return;\n }\n }\n };\n _this._handleResize = function (data) {\n if (data.resizeMode === 'full') {\n if (data.params.mode === 'fullscreen') {\n _this._expandIframe();\n }\n else if (data.params.mode === 'hide') {\n _this._collapseIframe();\n }\n }\n else if (data.resizeMode === 'coordinates') {\n if (_this._iframe) {\n _this._iframe.style.top = isFinite(data.params.top) ? \"\".concat(data.params.top, \"px\") : '';\n _this._iframe.style.bottom = isFinite(data.params.bottom) ? \"\".concat(data.params.bottom, \"px\") : '';\n _this._iframe.style.left = isFinite(data.params.left) ? \"\".concat(data.params.left, \"px\") : '';\n _this._iframe.style.right = isFinite(data.params.right) ? \"\".concat(data.params.right, \"px\") : '';\n _this._iframe.style.width = isFinite(data.params.width) ? \"\".concat(data.params.width, \"px\") : data.params.width;\n _this._iframe.style.height = isFinite(data.params.height) ? \"\".concat(data.params.height, \"px\") : data.params.height;\n }\n }\n };\n _this._handleMessage = function (event) {\n var _a;\n if (((_a = event.data) === null || _a === void 0 ? void 0 : _a.channel) !== 'solflareIframeToWalletAdapter') {\n return;\n }\n var data = event.data.data || {};\n if (data.type === 'event') {\n _this._handleEvent(data.event);\n }\n else if (data.type === 'resize') {\n _this._handleResize(data);\n }\n else if (data.type === 'response') {\n if (_this._adapterInstance) {\n _this._adapterInstance.handleMessage(data);\n }\n }\n };\n _this._removeElement = function () {\n if (_this._flutterHandlerInterval !== null) {\n clearInterval(_this._flutterHandlerInterval);\n _this._flutterHandlerInterval = null;\n }\n if (_this._element) {\n _this._element.remove();\n _this._element = null;\n }\n };\n _this._removeDanglingElements = function () {\n var e_1, _a;\n var elements = document.getElementsByClassName('solflare-wallet-adapter-iframe');\n try {\n for (var elements_1 = __values(elements), elements_1_1 = elements_1.next(); !elements_1_1.done; elements_1_1 = elements_1.next()) {\n var element = elements_1_1.value;\n if (element.parentElement) {\n element.remove();\n }\n }\n }\n catch (e_1_1) { e_1 = { error: e_1_1 }; }\n finally {\n try {\n if (elements_1_1 && !elements_1_1.done && (_a = elements_1.return)) _a.call(elements_1);\n }\n finally { if (e_1) throw e_1.error; }\n }\n };\n _this._injectElement = function () {\n _this._removeElement();\n _this._removeDanglingElements();\n var iframeUrl = \"\".concat(Solflare.IFRAME_URL, \"?cluster=\").concat(encodeURIComponent(_this._network), \"&origin=\").concat(encodeURIComponent(window.location.origin), \"&version=1\");\n var preferredAdapter = _this._getPreferredAdapter();\n if (preferredAdapter) {\n iframeUrl += \"&adapter=\".concat(encodeURIComponent(preferredAdapter));\n }\n _this._element = document.createElement('div');\n _this._element.className = 'solflare-wallet-adapter-iframe';\n _this._element.innerHTML = \"\\n \\n \");\n document.body.appendChild(_this._element);\n _this._iframe = _this._element.querySelector('iframe');\n // @ts-ignore\n window.fromFlutter = _this._handleMobileMessage;\n _this._flutterHandlerInterval = setInterval(function () {\n // @ts-ignore\n window.fromFlutter = _this._handleMobileMessage;\n }, 100);\n window.addEventListener('message', _this._handleMessage, false);\n };\n _this._collapseIframe = function () {\n if (_this._iframe) {\n _this._iframe.style.top = '';\n _this._iframe.style.right = '';\n _this._iframe.style.height = '2px';\n _this._iframe.style.width = '2px';\n }\n };\n _this._expandIframe = function () {\n if (_this._iframe) {\n _this._iframe.style.top = '0px';\n _this._iframe.style.bottom = '0px';\n _this._iframe.style.left = '0px';\n _this._iframe.style.right = '0px';\n _this._iframe.style.width = '100%';\n _this._iframe.style.height = '100%';\n }\n };\n _this._getPreferredAdapter = function () {\n if (localStorage) {\n return localStorage.getItem('solflarePreferredWalletAdapter') || null;\n }\n return null;\n };\n _this._setPreferredAdapter = function (adapter) {\n if (localStorage && adapter) {\n localStorage.setItem('solflarePreferredWalletAdapter', adapter);\n }\n };\n _this._clearPreferredAdapter = function () {\n if (localStorage) {\n localStorage.removeItem('solflarePreferredWalletAdapter');\n }\n };\n _this._webConnected = function () {\n if (_this._connectHandler) {\n _this._connectHandler.resolve();\n _this._connectHandler = null;\n }\n _this.emit('connect', _this.publicKey);\n };\n _this._webDisconnected = function () {\n if (_this._connectHandler) {\n _this._connectHandler.reject();\n _this._connectHandler = null;\n }\n _this._disconnected();\n _this.emit('disconnect');\n };\n _this._disconnected = function () {\n window.removeEventListener('message', _this._handleMessage, false);\n _this._removeElement();\n _this._clearPreferredAdapter();\n _this._adapterInstance = null;\n };\n _this._handleMobileMessage = function (data) {\n var _a, _b;\n (_b = (_a = _this._iframe) === null || _a === void 0 ? void 0 : _a.contentWindow) === null || _b === void 0 ? void 0 : _b.postMessage({\n channel: 'solflareMobileToIframe',\n data: data\n }, '*');\n };\n if (config === null || config === void 0 ? void 0 : config.network) {\n _this._network = config === null || config === void 0 ? void 0 : config.network;\n }\n if (config === null || config === void 0 ? void 0 : config.provider) {\n _this._provider = config === null || config === void 0 ? void 0 : config.provider;\n }\n return _this;\n }\n Object.defineProperty(Solflare.prototype, \"publicKey\", {\n get: function () {\n var _a;\n return ((_a = this._adapterInstance) === null || _a === void 0 ? void 0 : _a.publicKey) || null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Solflare.prototype, \"isConnected\", {\n get: function () {\n var _a;\n return !!((_a = this._adapterInstance) === null || _a === void 0 ? void 0 : _a.connected);\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Solflare.prototype, \"connected\", {\n get: function () {\n return this.isConnected;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Solflare.prototype, \"autoApprove\", {\n get: function () {\n return false;\n },\n enumerable: false,\n configurable: true\n });\n Solflare.prototype.connect = function () {\n return __awaiter(this, void 0, void 0, function () {\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (this.connected) {\n return [2 /*return*/];\n }\n this._injectElement();\n return [4 /*yield*/, new Promise(function (resolve, reject) {\n _this._connectHandler = { resolve: resolve, reject: reject };\n })];\n case 1:\n _a.sent();\n return [2 /*return*/];\n }\n });\n });\n };\n Solflare.prototype.disconnect = function () {\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this._adapterInstance) {\n return [2 /*return*/];\n }\n return [4 /*yield*/, this._adapterInstance.disconnect()];\n case 1:\n _a.sent();\n this._disconnected();\n this.emit('disconnect');\n return [2 /*return*/];\n }\n });\n });\n };\n Solflare.prototype.signTransaction = function (transaction) {\n return __awaiter(this, void 0, void 0, function () {\n var serializedMessage, signature, signerPubkeys, signerIndex;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.connected) {\n throw new Error('Wallet not connected');\n }\n serializedMessage = isLegacyTransactionInstance(transaction) ? transaction.serializeMessage() : transaction.message.serialize();\n return [4 /*yield*/, this._adapterInstance.signTransaction(serializedMessage)];\n case 1:\n signature = _a.sent();\n if (isLegacyTransactionInstance(transaction)) {\n transaction.addSignature(this.publicKey, Buffer.from(signature));\n }\n else {\n signerPubkeys = transaction.message.staticAccountKeys.slice(0, transaction.message.header.numRequiredSignatures);\n signerIndex = signerPubkeys.findIndex(function (pubkey) { return pubkey.equals(_this.publicKey); });\n if (signerIndex >= 0) {\n transaction.signatures[signerIndex] = signature;\n }\n }\n return [2 /*return*/, transaction];\n }\n });\n });\n };\n Solflare.prototype.signAllTransactions = function (transactions) {\n return __awaiter(this, void 0, void 0, function () {\n var serializedMessages, signatures, i, transaction, signerPubkeys, signerIndex;\n var _this = this;\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.connected) {\n throw new Error('Wallet not connected');\n }\n serializedMessages = transactions.map(function (transaction) {\n return isLegacyTransactionInstance(transaction) ? transaction.serializeMessage() : transaction.message.serialize();\n });\n return [4 /*yield*/, this._adapterInstance.signAllTransactions(serializedMessages)];\n case 1:\n signatures = _a.sent();\n for (i = 0; i < transactions.length; i++) {\n transaction = transactions[i];\n if (isLegacyTransactionInstance(transaction)) {\n transaction.addSignature(this.publicKey, Buffer.from(signatures[i]));\n }\n else {\n signerPubkeys = transaction.message.staticAccountKeys.slice(0, transaction.message.header.numRequiredSignatures);\n signerIndex = signerPubkeys.findIndex(function (pubkey) { return pubkey.equals(_this.publicKey); });\n if (signerIndex >= 0) {\n transaction.signatures[signerIndex] = signatures[i];\n }\n }\n }\n return [2 /*return*/, transactions];\n }\n });\n });\n };\n Solflare.prototype.signMessage = function (data, display) {\n if (display === void 0) { display = 'utf8'; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n if (!this.connected) {\n throw new Error('Wallet not connected');\n }\n return [4 /*yield*/, this._adapterInstance.signMessage(data, display)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Solflare.prototype.sign = function (data, display) {\n if (display === void 0) { display = 'utf8'; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_a) {\n switch (_a.label) {\n case 0: return [4 /*yield*/, this.signMessage(data, display)];\n case 1: return [2 /*return*/, _a.sent()];\n }\n });\n });\n };\n Solflare.prototype.detectWallet = function (timeout) {\n var _a;\n if (timeout === void 0) { timeout = 10; }\n return __awaiter(this, void 0, void 0, function () {\n return __generator(this, function (_b) {\n if (window.SolflareApp || ((_a = window.solflare) === null || _a === void 0 ? void 0 : _a.isSolflare)) {\n return [2 /*return*/, true];\n }\n return [2 /*return*/, new Promise(function (resolve) {\n var pollInterval, pollTimeout;\n pollInterval = setInterval(function () {\n var _a;\n if (window.SolflareApp || ((_a = window.solflare) === null || _a === void 0 ? void 0 : _a.isSolflare)) {\n clearInterval(pollInterval);\n clearTimeout(pollTimeout);\n resolve(true);\n }\n }, 500);\n pollTimeout = setTimeout(function () {\n clearInterval(pollInterval);\n resolve(false);\n }, timeout * 1000);\n })];\n });\n });\n };\n Solflare.IFRAME_URL = 'https://connect.solflare.com/';\n return Solflare;\n}(EventEmitter));\nexport default Solflare;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _extends;\n }\n});\nfunction extends_() {\n extends_ = Object.assign || function(target) {\n for(var i = 1; i < arguments.length; i++){\n var source = arguments[i];\n for(var key in source){\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return extends_.apply(this, arguments);\n}\nfunction _extends() {\n return extends_.apply(this, arguments);\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _interopRequireDefault;\n }\n});\nfunction _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n default: obj\n };\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _interopRequireWildcard;\n }\n});\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interopRequireWildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) {\n return obj;\n }\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") {\n return {\n default: obj\n };\n }\n var cache = _getRequireWildcardCache(nodeInterop);\n if (cache && cache.has(obj)) {\n return cache.get(obj);\n }\n var newObj = {};\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n for(var key in obj){\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) {\n Object.defineProperty(newObj, key, desc);\n } else {\n newObj[key] = obj[key];\n }\n }\n }\n newObj.default = obj;\n if (cache) {\n cache.set(obj, newObj);\n }\n return newObj;\n}\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"default\", {\n enumerable: true,\n get: function() {\n return _objectWithoutPropertiesLoose;\n }\n});\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n for(i = 0; i < sourceKeys.length; i++){\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n return target;\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar subscribable = require('./subscribable.js');\nvar utils = require('./utils.js');\n\nclass FocusManager extends subscribable.Subscribable {\n constructor() {\n super();\n\n this.setup = onFocus => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!utils.isServer && window.addEventListener) {\n const listener = () => onFocus(); // Listen to visibillitychange and focus\n\n\n window.addEventListener('visibilitychange', listener, false);\n window.addEventListener('focus', listener, false);\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('visibilitychange', listener);\n window.removeEventListener('focus', listener);\n };\n }\n\n return;\n };\n }\n\n onSubscribe() {\n if (!this.cleanup) {\n this.setEventListener(this.setup);\n }\n }\n\n onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$cleanup;\n\n (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n this.cleanup = undefined;\n }\n }\n\n setEventListener(setup) {\n var _this$cleanup2;\n\n this.setup = setup;\n (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n this.cleanup = setup(focused => {\n if (typeof focused === 'boolean') {\n this.setFocused(focused);\n } else {\n this.onFocus();\n }\n });\n }\n\n setFocused(focused) {\n this.focused = focused;\n\n if (focused) {\n this.onFocus();\n }\n }\n\n onFocus() {\n this.listeners.forEach(({\n listener\n }) => {\n listener();\n });\n }\n\n isFocused() {\n if (typeof this.focused === 'boolean') {\n return this.focused;\n } // document global can be unavailable in react native\n\n\n if (typeof document === 'undefined') {\n return true;\n }\n\n return [undefined, 'visible', 'prerender'].includes(document.visibilityState);\n }\n\n}\nconst focusManager = new FocusManager();\n\nexports.FocusManager = FocusManager;\nexports.focusManager = focusManager;\n//# sourceMappingURL=focusManager.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// TYPES\n// FUNCTIONS\nfunction dehydrateMutation(mutation) {\n return {\n mutationKey: mutation.options.mutationKey,\n state: mutation.state\n };\n} // Most config is not dehydrated but instead meant to configure again when\n// consuming the de/rehydrated data, typically with useQuery on the client.\n// Sometimes it might make sense to prefetch data on the server and include\n// in the html-payload, but not consume it on the initial render.\n\n\nfunction dehydrateQuery(query) {\n return {\n state: query.state,\n queryKey: query.queryKey,\n queryHash: query.queryHash\n };\n}\n\nfunction defaultShouldDehydrateMutation(mutation) {\n return mutation.state.isPaused;\n}\nfunction defaultShouldDehydrateQuery(query) {\n return query.state.status === 'success';\n}\nfunction dehydrate(client, options = {}) {\n const mutations = [];\n const queries = [];\n\n if (options.dehydrateMutations !== false) {\n const shouldDehydrateMutation = options.shouldDehydrateMutation || defaultShouldDehydrateMutation;\n client.getMutationCache().getAll().forEach(mutation => {\n if (shouldDehydrateMutation(mutation)) {\n mutations.push(dehydrateMutation(mutation));\n }\n });\n }\n\n if (options.dehydrateQueries !== false) {\n const shouldDehydrateQuery = options.shouldDehydrateQuery || defaultShouldDehydrateQuery;\n client.getQueryCache().getAll().forEach(query => {\n if (shouldDehydrateQuery(query)) {\n queries.push(dehydrateQuery(query));\n }\n });\n }\n\n return {\n mutations,\n queries\n };\n}\nfunction hydrate(client, dehydratedState, options) {\n if (typeof dehydratedState !== 'object' || dehydratedState === null) {\n return;\n }\n\n const mutationCache = client.getMutationCache();\n const queryCache = client.getQueryCache(); // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\n const mutations = dehydratedState.mutations || []; // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n\n const queries = dehydratedState.queries || [];\n mutations.forEach(dehydratedMutation => {\n var _options$defaultOptio;\n\n mutationCache.build(client, { ...(options == null ? void 0 : (_options$defaultOptio = options.defaultOptions) == null ? void 0 : _options$defaultOptio.mutations),\n mutationKey: dehydratedMutation.mutationKey\n }, dehydratedMutation.state);\n });\n queries.forEach(dehydratedQuery => {\n var _options$defaultOptio2;\n\n const query = queryCache.get(dehydratedQuery.queryHash); // Reset fetch status to idle in the dehydrated state to avoid\n // query being stuck in fetching state upon hydration\n\n const dehydratedQueryState = { ...dehydratedQuery.state,\n fetchStatus: 'idle'\n }; // Do not hydrate if an existing query exists with newer data\n\n if (query) {\n if (query.state.dataUpdatedAt < dehydratedQueryState.dataUpdatedAt) {\n query.setState(dehydratedQueryState);\n }\n\n return;\n } // Restore query\n\n\n queryCache.build(client, { ...(options == null ? void 0 : (_options$defaultOptio2 = options.defaultOptions) == null ? void 0 : _options$defaultOptio2.queries),\n queryKey: dehydratedQuery.queryKey,\n queryHash: dehydratedQuery.queryHash\n }, dehydratedQueryState);\n });\n}\n\nexports.defaultShouldDehydrateMutation = defaultShouldDehydrateMutation;\nexports.defaultShouldDehydrateQuery = defaultShouldDehydrateQuery;\nexports.dehydrate = dehydrate;\nexports.hydrate = hydrate;\n//# sourceMappingURL=hydration.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar retryer = require('./retryer.js');\nvar queryCache = require('./queryCache.js');\nvar queryClient = require('./queryClient.js');\nvar queryObserver = require('./queryObserver.js');\nvar queriesObserver = require('./queriesObserver.js');\nvar infiniteQueryObserver = require('./infiniteQueryObserver.js');\nvar mutationCache = require('./mutationCache.js');\nvar mutationObserver = require('./mutationObserver.js');\nvar notifyManager = require('./notifyManager.js');\nvar focusManager = require('./focusManager.js');\nvar onlineManager = require('./onlineManager.js');\nvar utils = require('./utils.js');\nvar hydration = require('./hydration.js');\n\n\n\nexports.CancelledError = retryer.CancelledError;\nexports.isCancelledError = retryer.isCancelledError;\nexports.QueryCache = queryCache.QueryCache;\nexports.QueryClient = queryClient.QueryClient;\nexports.QueryObserver = queryObserver.QueryObserver;\nexports.QueriesObserver = queriesObserver.QueriesObserver;\nexports.InfiniteQueryObserver = infiniteQueryObserver.InfiniteQueryObserver;\nexports.MutationCache = mutationCache.MutationCache;\nexports.MutationObserver = mutationObserver.MutationObserver;\nexports.notifyManager = notifyManager.notifyManager;\nexports.focusManager = focusManager.focusManager;\nexports.onlineManager = onlineManager.onlineManager;\nexports.hashQueryKey = utils.hashQueryKey;\nexports.isError = utils.isError;\nexports.isServer = utils.isServer;\nexports.matchQuery = utils.matchQuery;\nexports.parseFilterArgs = utils.parseFilterArgs;\nexports.parseMutationArgs = utils.parseMutationArgs;\nexports.parseMutationFilterArgs = utils.parseMutationFilterArgs;\nexports.parseQueryArgs = utils.parseQueryArgs;\nexports.replaceEqualDeep = utils.replaceEqualDeep;\nexports.defaultShouldDehydrateMutation = hydration.defaultShouldDehydrateMutation;\nexports.defaultShouldDehydrateQuery = hydration.defaultShouldDehydrateQuery;\nexports.dehydrate = hydration.dehydrate;\nexports.hydrate = hydration.hydrate;\n//# sourceMappingURL=index.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction infiniteQueryBehavior() {\n return {\n onFetch: context => {\n context.fetchFn = () => {\n var _context$fetchOptions, _context$fetchOptions2, _context$fetchOptions3, _context$fetchOptions4, _context$state$data, _context$state$data2;\n\n const refetchPage = (_context$fetchOptions = context.fetchOptions) == null ? void 0 : (_context$fetchOptions2 = _context$fetchOptions.meta) == null ? void 0 : _context$fetchOptions2.refetchPage;\n const fetchMore = (_context$fetchOptions3 = context.fetchOptions) == null ? void 0 : (_context$fetchOptions4 = _context$fetchOptions3.meta) == null ? void 0 : _context$fetchOptions4.fetchMore;\n const pageParam = fetchMore == null ? void 0 : fetchMore.pageParam;\n const isFetchingNextPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'forward';\n const isFetchingPreviousPage = (fetchMore == null ? void 0 : fetchMore.direction) === 'backward';\n const oldPages = ((_context$state$data = context.state.data) == null ? void 0 : _context$state$data.pages) || [];\n const oldPageParams = ((_context$state$data2 = context.state.data) == null ? void 0 : _context$state$data2.pageParams) || [];\n let newPageParams = oldPageParams;\n let cancelled = false;\n\n const addSignalProperty = object => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n var _context$signal;\n\n if ((_context$signal = context.signal) != null && _context$signal.aborted) {\n cancelled = true;\n } else {\n var _context$signal2;\n\n (_context$signal2 = context.signal) == null ? void 0 : _context$signal2.addEventListener('abort', () => {\n cancelled = true;\n });\n }\n\n return context.signal;\n }\n });\n }; // Get query function\n\n\n const queryFn = context.options.queryFn || (() => Promise.reject('Missing queryFn'));\n\n const buildNewPages = (pages, param, page, previous) => {\n newPageParams = previous ? [param, ...newPageParams] : [...newPageParams, param];\n return previous ? [page, ...pages] : [...pages, page];\n }; // Create function to fetch a page\n\n\n const fetchPage = (pages, manual, param, previous) => {\n if (cancelled) {\n return Promise.reject('Cancelled');\n }\n\n if (typeof param === 'undefined' && !manual && pages.length) {\n return Promise.resolve(pages);\n }\n\n const queryFnContext = {\n queryKey: context.queryKey,\n pageParam: param,\n meta: context.options.meta\n };\n addSignalProperty(queryFnContext);\n const queryFnResult = queryFn(queryFnContext);\n const promise = Promise.resolve(queryFnResult).then(page => buildNewPages(pages, param, page, previous));\n return promise;\n };\n\n let promise; // Fetch first page?\n\n if (!oldPages.length) {\n promise = fetchPage([]);\n } // Fetch next page?\n else if (isFetchingNextPage) {\n const manual = typeof pageParam !== 'undefined';\n const param = manual ? pageParam : getNextPageParam(context.options, oldPages);\n promise = fetchPage(oldPages, manual, param);\n } // Fetch previous page?\n else if (isFetchingPreviousPage) {\n const manual = typeof pageParam !== 'undefined';\n const param = manual ? pageParam : getPreviousPageParam(context.options, oldPages);\n promise = fetchPage(oldPages, manual, param, true);\n } // Refetch pages\n else {\n newPageParams = [];\n const manual = typeof context.options.getNextPageParam === 'undefined';\n const shouldFetchFirstPage = refetchPage && oldPages[0] ? refetchPage(oldPages[0], 0, oldPages) : true; // Fetch first page\n\n promise = shouldFetchFirstPage ? fetchPage([], manual, oldPageParams[0]) : Promise.resolve(buildNewPages([], oldPageParams[0], oldPages[0])); // Fetch remaining pages\n\n for (let i = 1; i < oldPages.length; i++) {\n promise = promise.then(pages => {\n const shouldFetchNextPage = refetchPage && oldPages[i] ? refetchPage(oldPages[i], i, oldPages) : true;\n\n if (shouldFetchNextPage) {\n const param = manual ? oldPageParams[i] : getNextPageParam(context.options, pages);\n return fetchPage(pages, manual, param);\n }\n\n return Promise.resolve(buildNewPages(pages, oldPageParams[i], oldPages[i]));\n });\n }\n }\n\n const finalPromise = promise.then(pages => ({\n pages,\n pageParams: newPageParams\n }));\n return finalPromise;\n };\n }\n };\n}\nfunction getNextPageParam(options, pages) {\n return options.getNextPageParam == null ? void 0 : options.getNextPageParam(pages[pages.length - 1], pages);\n}\nfunction getPreviousPageParam(options, pages) {\n return options.getPreviousPageParam == null ? void 0 : options.getPreviousPageParam(pages[0], pages);\n}\n/**\n * Checks if there is a next page.\n * Returns `undefined` if it cannot be determined.\n */\n\nfunction hasNextPage(options, pages) {\n if (options.getNextPageParam && Array.isArray(pages)) {\n const nextPageParam = getNextPageParam(options, pages);\n return typeof nextPageParam !== 'undefined' && nextPageParam !== null && nextPageParam !== false;\n }\n\n return;\n}\n/**\n * Checks if there is a previous page.\n * Returns `undefined` if it cannot be determined.\n */\n\nfunction hasPreviousPage(options, pages) {\n if (options.getPreviousPageParam && Array.isArray(pages)) {\n const previousPageParam = getPreviousPageParam(options, pages);\n return typeof previousPageParam !== 'undefined' && previousPageParam !== null && previousPageParam !== false;\n }\n\n return;\n}\n\nexports.getNextPageParam = getNextPageParam;\nexports.getPreviousPageParam = getPreviousPageParam;\nexports.hasNextPage = hasNextPage;\nexports.hasPreviousPage = hasPreviousPage;\nexports.infiniteQueryBehavior = infiniteQueryBehavior;\n//# sourceMappingURL=infiniteQueryBehavior.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar queryObserver = require('./queryObserver.js');\nvar infiniteQueryBehavior = require('./infiniteQueryBehavior.js');\n\nclass InfiniteQueryObserver extends queryObserver.QueryObserver {\n // Type override\n // Type override\n // Type override\n // eslint-disable-next-line @typescript-eslint/no-useless-constructor\n constructor(client, options) {\n super(client, options);\n }\n\n bindMethods() {\n super.bindMethods();\n this.fetchNextPage = this.fetchNextPage.bind(this);\n this.fetchPreviousPage = this.fetchPreviousPage.bind(this);\n }\n\n setOptions(options, notifyOptions) {\n super.setOptions({ ...options,\n behavior: infiniteQueryBehavior.infiniteQueryBehavior()\n }, notifyOptions);\n }\n\n getOptimisticResult(options) {\n options.behavior = infiniteQueryBehavior.infiniteQueryBehavior();\n return super.getOptimisticResult(options);\n }\n\n fetchNextPage({\n pageParam,\n ...options\n } = {}) {\n return this.fetch({ ...options,\n meta: {\n fetchMore: {\n direction: 'forward',\n pageParam\n }\n }\n });\n }\n\n fetchPreviousPage({\n pageParam,\n ...options\n } = {}) {\n return this.fetch({ ...options,\n meta: {\n fetchMore: {\n direction: 'backward',\n pageParam\n }\n }\n });\n }\n\n createResult(query, options) {\n var _state$fetchMeta, _state$fetchMeta$fetc, _state$fetchMeta2, _state$fetchMeta2$fet, _state$data, _state$data2;\n\n const {\n state\n } = query;\n const result = super.createResult(query, options);\n const {\n isFetching,\n isRefetching\n } = result;\n const isFetchingNextPage = isFetching && ((_state$fetchMeta = state.fetchMeta) == null ? void 0 : (_state$fetchMeta$fetc = _state$fetchMeta.fetchMore) == null ? void 0 : _state$fetchMeta$fetc.direction) === 'forward';\n const isFetchingPreviousPage = isFetching && ((_state$fetchMeta2 = state.fetchMeta) == null ? void 0 : (_state$fetchMeta2$fet = _state$fetchMeta2.fetchMore) == null ? void 0 : _state$fetchMeta2$fet.direction) === 'backward';\n return { ...result,\n fetchNextPage: this.fetchNextPage,\n fetchPreviousPage: this.fetchPreviousPage,\n hasNextPage: infiniteQueryBehavior.hasNextPage(options, (_state$data = state.data) == null ? void 0 : _state$data.pages),\n hasPreviousPage: infiniteQueryBehavior.hasPreviousPage(options, (_state$data2 = state.data) == null ? void 0 : _state$data2.pages),\n isFetchingNextPage,\n isFetchingPreviousPage,\n isRefetching: isRefetching && !isFetchingNextPage && !isFetchingPreviousPage\n };\n }\n\n}\n\nexports.InfiniteQueryObserver = InfiniteQueryObserver;\n//# sourceMappingURL=infiniteQueryObserver.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst defaultLogger = console;\n\nexports.defaultLogger = defaultLogger;\n//# sourceMappingURL=logger.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar logger = require('./logger');\nvar notifyManager = require('./notifyManager.js');\nvar removable = require('./removable.js');\nvar retryer = require('./retryer.js');\n\n// CLASS\nclass Mutation extends removable.Removable {\n constructor(config) {\n super();\n this.defaultOptions = config.defaultOptions;\n this.mutationId = config.mutationId;\n this.mutationCache = config.mutationCache;\n this.logger = config.logger || logger.defaultLogger;\n this.observers = [];\n this.state = config.state || getDefaultState();\n this.setOptions(config.options);\n this.scheduleGc();\n }\n\n setOptions(options) {\n this.options = { ...this.defaultOptions,\n ...options\n };\n this.updateCacheTime(this.options.cacheTime);\n }\n\n get meta() {\n return this.options.meta;\n }\n\n setState(state) {\n this.dispatch({\n type: 'setState',\n state\n });\n }\n\n addObserver(observer) {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer); // Stop the mutation from being garbage collected\n\n this.clearGcTimeout();\n this.mutationCache.notify({\n type: 'observerAdded',\n mutation: this,\n observer\n });\n }\n }\n\n removeObserver(observer) {\n this.observers = this.observers.filter(x => x !== observer);\n this.scheduleGc();\n this.mutationCache.notify({\n type: 'observerRemoved',\n mutation: this,\n observer\n });\n }\n\n optionalRemove() {\n if (!this.observers.length) {\n if (this.state.status === 'loading') {\n this.scheduleGc();\n } else {\n this.mutationCache.remove(this);\n }\n }\n }\n\n continue() {\n var _this$retryer$continu, _this$retryer;\n\n return (_this$retryer$continu = (_this$retryer = this.retryer) == null ? void 0 : _this$retryer.continue()) != null ? _this$retryer$continu : this.execute();\n }\n\n async execute() {\n const executeMutation = () => {\n var _this$options$retry;\n\n this.retryer = retryer.createRetryer({\n fn: () => {\n if (!this.options.mutationFn) {\n return Promise.reject('No mutationFn found');\n }\n\n return this.options.mutationFn(this.state.variables);\n },\n onFail: (failureCount, error) => {\n this.dispatch({\n type: 'failed',\n failureCount,\n error\n });\n },\n onPause: () => {\n this.dispatch({\n type: 'pause'\n });\n },\n onContinue: () => {\n this.dispatch({\n type: 'continue'\n });\n },\n retry: (_this$options$retry = this.options.retry) != null ? _this$options$retry : 0,\n retryDelay: this.options.retryDelay,\n networkMode: this.options.networkMode\n });\n return this.retryer.promise;\n };\n\n const restored = this.state.status === 'loading';\n\n try {\n var _this$mutationCache$c3, _this$mutationCache$c4, _this$options$onSucce, _this$options2, _this$mutationCache$c5, _this$mutationCache$c6, _this$options$onSettl, _this$options3;\n\n if (!restored) {\n var _this$mutationCache$c, _this$mutationCache$c2, _this$options$onMutat, _this$options;\n\n this.dispatch({\n type: 'loading',\n variables: this.options.variables\n }); // Notify cache callback\n\n await ((_this$mutationCache$c = (_this$mutationCache$c2 = this.mutationCache.config).onMutate) == null ? void 0 : _this$mutationCache$c.call(_this$mutationCache$c2, this.state.variables, this));\n const context = await ((_this$options$onMutat = (_this$options = this.options).onMutate) == null ? void 0 : _this$options$onMutat.call(_this$options, this.state.variables));\n\n if (context !== this.state.context) {\n this.dispatch({\n type: 'loading',\n context,\n variables: this.state.variables\n });\n }\n }\n\n const data = await executeMutation(); // Notify cache callback\n\n await ((_this$mutationCache$c3 = (_this$mutationCache$c4 = this.mutationCache.config).onSuccess) == null ? void 0 : _this$mutationCache$c3.call(_this$mutationCache$c4, data, this.state.variables, this.state.context, this));\n await ((_this$options$onSucce = (_this$options2 = this.options).onSuccess) == null ? void 0 : _this$options$onSucce.call(_this$options2, data, this.state.variables, this.state.context)); // Notify cache callback\n\n await ((_this$mutationCache$c5 = (_this$mutationCache$c6 = this.mutationCache.config).onSettled) == null ? void 0 : _this$mutationCache$c5.call(_this$mutationCache$c6, data, null, this.state.variables, this.state.context, this));\n await ((_this$options$onSettl = (_this$options3 = this.options).onSettled) == null ? void 0 : _this$options$onSettl.call(_this$options3, data, null, this.state.variables, this.state.context));\n this.dispatch({\n type: 'success',\n data\n });\n return data;\n } catch (error) {\n try {\n var _this$mutationCache$c7, _this$mutationCache$c8, _this$options$onError, _this$options4, _this$mutationCache$c9, _this$mutationCache$c10, _this$options$onSettl2, _this$options5;\n\n // Notify cache callback\n await ((_this$mutationCache$c7 = (_this$mutationCache$c8 = this.mutationCache.config).onError) == null ? void 0 : _this$mutationCache$c7.call(_this$mutationCache$c8, error, this.state.variables, this.state.context, this));\n\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(error);\n }\n\n await ((_this$options$onError = (_this$options4 = this.options).onError) == null ? void 0 : _this$options$onError.call(_this$options4, error, this.state.variables, this.state.context)); // Notify cache callback\n\n await ((_this$mutationCache$c9 = (_this$mutationCache$c10 = this.mutationCache.config).onSettled) == null ? void 0 : _this$mutationCache$c9.call(_this$mutationCache$c10, undefined, error, this.state.variables, this.state.context, this));\n await ((_this$options$onSettl2 = (_this$options5 = this.options).onSettled) == null ? void 0 : _this$options$onSettl2.call(_this$options5, undefined, error, this.state.variables, this.state.context));\n throw error;\n } finally {\n this.dispatch({\n type: 'error',\n error: error\n });\n }\n }\n }\n\n dispatch(action) {\n const reducer = state => {\n switch (action.type) {\n case 'failed':\n return { ...state,\n failureCount: action.failureCount,\n failureReason: action.error\n };\n\n case 'pause':\n return { ...state,\n isPaused: true\n };\n\n case 'continue':\n return { ...state,\n isPaused: false\n };\n\n case 'loading':\n return { ...state,\n context: action.context,\n data: undefined,\n failureCount: 0,\n failureReason: null,\n error: null,\n isPaused: !retryer.canFetch(this.options.networkMode),\n status: 'loading',\n variables: action.variables\n };\n\n case 'success':\n return { ...state,\n data: action.data,\n failureCount: 0,\n failureReason: null,\n error: null,\n status: 'success',\n isPaused: false\n };\n\n case 'error':\n return { ...state,\n data: undefined,\n error: action.error,\n failureCount: state.failureCount + 1,\n failureReason: action.error,\n isPaused: false,\n status: 'error'\n };\n\n case 'setState':\n return { ...state,\n ...action.state\n };\n }\n };\n\n this.state = reducer(this.state);\n notifyManager.notifyManager.batch(() => {\n this.observers.forEach(observer => {\n observer.onMutationUpdate(action);\n });\n this.mutationCache.notify({\n mutation: this,\n type: 'updated',\n action\n });\n });\n }\n\n}\nfunction getDefaultState() {\n return {\n context: undefined,\n data: undefined,\n error: null,\n failureCount: 0,\n failureReason: null,\n isPaused: false,\n status: 'idle',\n variables: undefined\n };\n}\n\nexports.Mutation = Mutation;\nexports.getDefaultState = getDefaultState;\n//# sourceMappingURL=mutation.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar notifyManager = require('./notifyManager.js');\nvar mutation = require('./mutation.js');\nvar utils = require('./utils.js');\nvar subscribable = require('./subscribable.js');\n\n// CLASS\nclass MutationCache extends subscribable.Subscribable {\n constructor(config) {\n super();\n this.config = config || {};\n this.mutations = [];\n this.mutationId = 0;\n }\n\n build(client, options, state) {\n const mutation$1 = new mutation.Mutation({\n mutationCache: this,\n logger: client.getLogger(),\n mutationId: ++this.mutationId,\n options: client.defaultMutationOptions(options),\n state,\n defaultOptions: options.mutationKey ? client.getMutationDefaults(options.mutationKey) : undefined\n });\n this.add(mutation$1);\n return mutation$1;\n }\n\n add(mutation) {\n this.mutations.push(mutation);\n this.notify({\n type: 'added',\n mutation\n });\n }\n\n remove(mutation) {\n this.mutations = this.mutations.filter(x => x !== mutation);\n this.notify({\n type: 'removed',\n mutation\n });\n }\n\n clear() {\n notifyManager.notifyManager.batch(() => {\n this.mutations.forEach(mutation => {\n this.remove(mutation);\n });\n });\n }\n\n getAll() {\n return this.mutations;\n }\n\n find(filters) {\n if (typeof filters.exact === 'undefined') {\n filters.exact = true;\n }\n\n return this.mutations.find(mutation => utils.matchMutation(filters, mutation));\n }\n\n findAll(filters) {\n return this.mutations.filter(mutation => utils.matchMutation(filters, mutation));\n }\n\n notify(event) {\n notifyManager.notifyManager.batch(() => {\n this.listeners.forEach(({\n listener\n }) => {\n listener(event);\n });\n });\n }\n\n resumePausedMutations() {\n var _this$resuming;\n\n this.resuming = ((_this$resuming = this.resuming) != null ? _this$resuming : Promise.resolve()).then(() => {\n const pausedMutations = this.mutations.filter(x => x.state.isPaused);\n return notifyManager.notifyManager.batch(() => pausedMutations.reduce((promise, mutation) => promise.then(() => mutation.continue().catch(utils.noop)), Promise.resolve()));\n }).then(() => {\n this.resuming = undefined;\n });\n return this.resuming;\n }\n\n}\n\nexports.MutationCache = MutationCache;\n//# sourceMappingURL=mutationCache.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar mutation = require('./mutation.js');\nvar notifyManager = require('./notifyManager.js');\nvar subscribable = require('./subscribable.js');\nvar utils = require('./utils.js');\n\n// CLASS\nclass MutationObserver extends subscribable.Subscribable {\n constructor(client, options) {\n super();\n this.client = client;\n this.setOptions(options);\n this.bindMethods();\n this.updateResult();\n }\n\n bindMethods() {\n this.mutate = this.mutate.bind(this);\n this.reset = this.reset.bind(this);\n }\n\n setOptions(options) {\n var _this$currentMutation;\n\n const prevOptions = this.options;\n this.options = this.client.defaultMutationOptions(options);\n\n if (!utils.shallowEqualObjects(prevOptions, this.options)) {\n this.client.getMutationCache().notify({\n type: 'observerOptionsUpdated',\n mutation: this.currentMutation,\n observer: this\n });\n }\n\n (_this$currentMutation = this.currentMutation) == null ? void 0 : _this$currentMutation.setOptions(this.options);\n }\n\n onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$currentMutation2;\n\n (_this$currentMutation2 = this.currentMutation) == null ? void 0 : _this$currentMutation2.removeObserver(this);\n }\n }\n\n onMutationUpdate(action) {\n this.updateResult(); // Determine which callbacks to trigger\n\n const notifyOptions = {\n listeners: true\n };\n\n if (action.type === 'success') {\n notifyOptions.onSuccess = true;\n } else if (action.type === 'error') {\n notifyOptions.onError = true;\n }\n\n this.notify(notifyOptions);\n }\n\n getCurrentResult() {\n return this.currentResult;\n }\n\n reset() {\n this.currentMutation = undefined;\n this.updateResult();\n this.notify({\n listeners: true\n });\n }\n\n mutate(variables, options) {\n this.mutateOptions = options;\n\n if (this.currentMutation) {\n this.currentMutation.removeObserver(this);\n }\n\n this.currentMutation = this.client.getMutationCache().build(this.client, { ...this.options,\n variables: typeof variables !== 'undefined' ? variables : this.options.variables\n });\n this.currentMutation.addObserver(this);\n return this.currentMutation.execute();\n }\n\n updateResult() {\n const state = this.currentMutation ? this.currentMutation.state : mutation.getDefaultState();\n const result = { ...state,\n isLoading: state.status === 'loading',\n isSuccess: state.status === 'success',\n isError: state.status === 'error',\n isIdle: state.status === 'idle',\n mutate: this.mutate,\n reset: this.reset\n };\n this.currentResult = result;\n }\n\n notify(options) {\n notifyManager.notifyManager.batch(() => {\n // First trigger the mutate callbacks\n if (this.mutateOptions && this.hasListeners()) {\n if (options.onSuccess) {\n var _this$mutateOptions$o, _this$mutateOptions, _this$mutateOptions$o2, _this$mutateOptions2;\n\n (_this$mutateOptions$o = (_this$mutateOptions = this.mutateOptions).onSuccess) == null ? void 0 : _this$mutateOptions$o.call(_this$mutateOptions, this.currentResult.data, this.currentResult.variables, this.currentResult.context);\n (_this$mutateOptions$o2 = (_this$mutateOptions2 = this.mutateOptions).onSettled) == null ? void 0 : _this$mutateOptions$o2.call(_this$mutateOptions2, this.currentResult.data, null, this.currentResult.variables, this.currentResult.context);\n } else if (options.onError) {\n var _this$mutateOptions$o3, _this$mutateOptions3, _this$mutateOptions$o4, _this$mutateOptions4;\n\n (_this$mutateOptions$o3 = (_this$mutateOptions3 = this.mutateOptions).onError) == null ? void 0 : _this$mutateOptions$o3.call(_this$mutateOptions3, this.currentResult.error, this.currentResult.variables, this.currentResult.context);\n (_this$mutateOptions$o4 = (_this$mutateOptions4 = this.mutateOptions).onSettled) == null ? void 0 : _this$mutateOptions$o4.call(_this$mutateOptions4, undefined, this.currentResult.error, this.currentResult.variables, this.currentResult.context);\n }\n } // Then trigger the listeners\n\n\n if (options.listeners) {\n this.listeners.forEach(({\n listener\n }) => {\n listener(this.currentResult);\n });\n }\n });\n }\n\n}\n\nexports.MutationObserver = MutationObserver;\n//# sourceMappingURL=mutationObserver.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar utils = require('./utils.js');\n\nfunction createNotifyManager() {\n let queue = [];\n let transactions = 0;\n\n let notifyFn = callback => {\n callback();\n };\n\n let batchNotifyFn = callback => {\n callback();\n };\n\n const batch = callback => {\n let result;\n transactions++;\n\n try {\n result = callback();\n } finally {\n transactions--;\n\n if (!transactions) {\n flush();\n }\n }\n\n return result;\n };\n\n const schedule = callback => {\n if (transactions) {\n queue.push(callback);\n } else {\n utils.scheduleMicrotask(() => {\n notifyFn(callback);\n });\n }\n };\n /**\n * All calls to the wrapped function will be batched.\n */\n\n\n const batchCalls = callback => {\n return (...args) => {\n schedule(() => {\n callback(...args);\n });\n };\n };\n\n const flush = () => {\n const originalQueue = queue;\n queue = [];\n\n if (originalQueue.length) {\n utils.scheduleMicrotask(() => {\n batchNotifyFn(() => {\n originalQueue.forEach(callback => {\n notifyFn(callback);\n });\n });\n });\n }\n };\n /**\n * Use this method to set a custom notify function.\n * This can be used to for example wrap notifications with `React.act` while running tests.\n */\n\n\n const setNotifyFunction = fn => {\n notifyFn = fn;\n };\n /**\n * Use this method to set a custom function to batch notifications together into a single tick.\n * By default React Query will use the batch function provided by ReactDOM or React Native.\n */\n\n\n const setBatchNotifyFunction = fn => {\n batchNotifyFn = fn;\n };\n\n return {\n batch,\n batchCalls,\n schedule,\n setNotifyFunction,\n setBatchNotifyFunction\n };\n} // SINGLETON\n\nconst notifyManager = createNotifyManager();\n\nexports.createNotifyManager = createNotifyManager;\nexports.notifyManager = notifyManager;\n//# sourceMappingURL=notifyManager.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar subscribable = require('./subscribable.js');\nvar utils = require('./utils.js');\n\nclass OnlineManager extends subscribable.Subscribable {\n constructor() {\n super();\n\n this.setup = onOnline => {\n // addEventListener does not exist in React Native, but window does\n // eslint-disable-next-line @typescript-eslint/no-unnecessary-condition\n if (!utils.isServer && window.addEventListener) {\n const listener = () => onOnline(); // Listen to online\n\n\n window.addEventListener('online', listener, false);\n window.addEventListener('offline', listener, false);\n return () => {\n // Be sure to unsubscribe if a new handler is set\n window.removeEventListener('online', listener);\n window.removeEventListener('offline', listener);\n };\n }\n\n return;\n };\n }\n\n onSubscribe() {\n if (!this.cleanup) {\n this.setEventListener(this.setup);\n }\n }\n\n onUnsubscribe() {\n if (!this.hasListeners()) {\n var _this$cleanup;\n\n (_this$cleanup = this.cleanup) == null ? void 0 : _this$cleanup.call(this);\n this.cleanup = undefined;\n }\n }\n\n setEventListener(setup) {\n var _this$cleanup2;\n\n this.setup = setup;\n (_this$cleanup2 = this.cleanup) == null ? void 0 : _this$cleanup2.call(this);\n this.cleanup = setup(online => {\n if (typeof online === 'boolean') {\n this.setOnline(online);\n } else {\n this.onOnline();\n }\n });\n }\n\n setOnline(online) {\n this.online = online;\n\n if (online) {\n this.onOnline();\n }\n }\n\n onOnline() {\n this.listeners.forEach(({\n listener\n }) => {\n listener();\n });\n }\n\n isOnline() {\n if (typeof this.online === 'boolean') {\n return this.online;\n }\n\n if (typeof navigator === 'undefined' || typeof navigator.onLine === 'undefined') {\n return true;\n }\n\n return navigator.onLine;\n }\n\n}\nconst onlineManager = new OnlineManager();\n\nexports.OnlineManager = OnlineManager;\nexports.onlineManager = onlineManager;\n//# sourceMappingURL=onlineManager.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar utils = require('./utils.js');\nvar notifyManager = require('./notifyManager.js');\nvar queryObserver = require('./queryObserver.js');\nvar subscribable = require('./subscribable.js');\n\nclass QueriesObserver extends subscribable.Subscribable {\n constructor(client, queries) {\n super();\n this.client = client;\n this.queries = [];\n this.result = [];\n this.observers = [];\n this.observersMap = {};\n\n if (queries) {\n this.setQueries(queries);\n }\n }\n\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.observers.forEach(observer => {\n observer.subscribe(result => {\n this.onUpdate(observer, result);\n });\n });\n }\n }\n\n onUnsubscribe() {\n if (!this.listeners.size) {\n this.destroy();\n }\n }\n\n destroy() {\n this.listeners = new Set();\n this.observers.forEach(observer => {\n observer.destroy();\n });\n }\n\n setQueries(queries, notifyOptions) {\n this.queries = queries;\n notifyManager.notifyManager.batch(() => {\n const prevObservers = this.observers;\n const newObserverMatches = this.findMatchingObservers(this.queries); // set options for the new observers to notify of changes\n\n newObserverMatches.forEach(match => match.observer.setOptions(match.defaultedQueryOptions, notifyOptions));\n const newObservers = newObserverMatches.map(match => match.observer);\n const newObserversMap = Object.fromEntries(newObservers.map(observer => [observer.options.queryHash, observer]));\n const newResult = newObservers.map(observer => observer.getCurrentResult());\n const hasIndexChange = newObservers.some((observer, index) => observer !== prevObservers[index]);\n\n if (prevObservers.length === newObservers.length && !hasIndexChange) {\n return;\n }\n\n this.observers = newObservers;\n this.observersMap = newObserversMap;\n this.result = newResult;\n\n if (!this.hasListeners()) {\n return;\n }\n\n utils.difference(prevObservers, newObservers).forEach(observer => {\n observer.destroy();\n });\n utils.difference(newObservers, prevObservers).forEach(observer => {\n observer.subscribe(result => {\n this.onUpdate(observer, result);\n });\n });\n this.notify();\n });\n }\n\n getCurrentResult() {\n return this.result;\n }\n\n getQueries() {\n return this.observers.map(observer => observer.getCurrentQuery());\n }\n\n getObservers() {\n return this.observers;\n }\n\n getOptimisticResult(queries) {\n return this.findMatchingObservers(queries).map(match => match.observer.getOptimisticResult(match.defaultedQueryOptions));\n }\n\n findMatchingObservers(queries) {\n const prevObservers = this.observers;\n const prevObserversMap = new Map(prevObservers.map(observer => [observer.options.queryHash, observer]));\n const defaultedQueryOptions = queries.map(options => this.client.defaultQueryOptions(options));\n const matchingObservers = defaultedQueryOptions.flatMap(defaultedOptions => {\n const match = prevObserversMap.get(defaultedOptions.queryHash);\n\n if (match != null) {\n return [{\n defaultedQueryOptions: defaultedOptions,\n observer: match\n }];\n }\n\n return [];\n });\n const matchedQueryHashes = new Set(matchingObservers.map(match => match.defaultedQueryOptions.queryHash));\n const unmatchedQueries = defaultedQueryOptions.filter(defaultedOptions => !matchedQueryHashes.has(defaultedOptions.queryHash));\n const matchingObserversSet = new Set(matchingObservers.map(match => match.observer));\n const unmatchedObservers = prevObservers.filter(prevObserver => !matchingObserversSet.has(prevObserver));\n\n const getObserver = options => {\n const defaultedOptions = this.client.defaultQueryOptions(options);\n const currentObserver = this.observersMap[defaultedOptions.queryHash];\n return currentObserver != null ? currentObserver : new queryObserver.QueryObserver(this.client, defaultedOptions);\n };\n\n const newOrReusedObservers = unmatchedQueries.map((options, index) => {\n if (options.keepPreviousData) {\n // return previous data from one of the observers that no longer match\n const previouslyUsedObserver = unmatchedObservers[index];\n\n if (previouslyUsedObserver !== undefined) {\n return {\n defaultedQueryOptions: options,\n observer: previouslyUsedObserver\n };\n }\n }\n\n return {\n defaultedQueryOptions: options,\n observer: getObserver(options)\n };\n });\n\n const sortMatchesByOrderOfQueries = (a, b) => defaultedQueryOptions.indexOf(a.defaultedQueryOptions) - defaultedQueryOptions.indexOf(b.defaultedQueryOptions);\n\n return matchingObservers.concat(newOrReusedObservers).sort(sortMatchesByOrderOfQueries);\n }\n\n onUpdate(observer, result) {\n const index = this.observers.indexOf(observer);\n\n if (index !== -1) {\n this.result = utils.replaceAt(this.result, index, result);\n this.notify();\n }\n }\n\n notify() {\n notifyManager.notifyManager.batch(() => {\n this.listeners.forEach(({\n listener\n }) => {\n listener(this.result);\n });\n });\n }\n\n}\n\nexports.QueriesObserver = QueriesObserver;\n//# sourceMappingURL=queriesObserver.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar utils = require('./utils.js');\nvar logger = require('./logger');\nvar notifyManager = require('./notifyManager.js');\nvar retryer = require('./retryer.js');\nvar removable = require('./removable.js');\n\n// CLASS\nclass Query extends removable.Removable {\n constructor(config) {\n super();\n this.abortSignalConsumed = false;\n this.defaultOptions = config.defaultOptions;\n this.setOptions(config.options);\n this.observers = [];\n this.cache = config.cache;\n this.logger = config.logger || logger.defaultLogger;\n this.queryKey = config.queryKey;\n this.queryHash = config.queryHash;\n this.initialState = config.state || getDefaultState(this.options);\n this.state = this.initialState;\n this.scheduleGc();\n }\n\n get meta() {\n return this.options.meta;\n }\n\n setOptions(options) {\n this.options = { ...this.defaultOptions,\n ...options\n };\n this.updateCacheTime(this.options.cacheTime);\n }\n\n optionalRemove() {\n if (!this.observers.length && this.state.fetchStatus === 'idle') {\n this.cache.remove(this);\n }\n }\n\n setData(newData, options) {\n const data = utils.replaceData(this.state.data, newData, this.options); // Set data and mark it as cached\n\n this.dispatch({\n data,\n type: 'success',\n dataUpdatedAt: options == null ? void 0 : options.updatedAt,\n manual: options == null ? void 0 : options.manual\n });\n return data;\n }\n\n setState(state, setStateOptions) {\n this.dispatch({\n type: 'setState',\n state,\n setStateOptions\n });\n }\n\n cancel(options) {\n var _this$retryer;\n\n const promise = this.promise;\n (_this$retryer = this.retryer) == null ? void 0 : _this$retryer.cancel(options);\n return promise ? promise.then(utils.noop).catch(utils.noop) : Promise.resolve();\n }\n\n destroy() {\n super.destroy();\n this.cancel({\n silent: true\n });\n }\n\n reset() {\n this.destroy();\n this.setState(this.initialState);\n }\n\n isActive() {\n return this.observers.some(observer => observer.options.enabled !== false);\n }\n\n isDisabled() {\n return this.getObserversCount() > 0 && !this.isActive();\n }\n\n isStale() {\n return this.state.isInvalidated || !this.state.dataUpdatedAt || this.observers.some(observer => observer.getCurrentResult().isStale);\n }\n\n isStaleByTime(staleTime = 0) {\n return this.state.isInvalidated || !this.state.dataUpdatedAt || !utils.timeUntilStale(this.state.dataUpdatedAt, staleTime);\n }\n\n onFocus() {\n var _this$retryer2;\n\n const observer = this.observers.find(x => x.shouldFetchOnWindowFocus());\n\n if (observer) {\n observer.refetch({\n cancelRefetch: false\n });\n } // Continue fetch if currently paused\n\n\n (_this$retryer2 = this.retryer) == null ? void 0 : _this$retryer2.continue();\n }\n\n onOnline() {\n var _this$retryer3;\n\n const observer = this.observers.find(x => x.shouldFetchOnReconnect());\n\n if (observer) {\n observer.refetch({\n cancelRefetch: false\n });\n } // Continue fetch if currently paused\n\n\n (_this$retryer3 = this.retryer) == null ? void 0 : _this$retryer3.continue();\n }\n\n addObserver(observer) {\n if (this.observers.indexOf(observer) === -1) {\n this.observers.push(observer); // Stop the query from being garbage collected\n\n this.clearGcTimeout();\n this.cache.notify({\n type: 'observerAdded',\n query: this,\n observer\n });\n }\n }\n\n removeObserver(observer) {\n if (this.observers.indexOf(observer) !== -1) {\n this.observers = this.observers.filter(x => x !== observer);\n\n if (!this.observers.length) {\n // If the transport layer does not support cancellation\n // we'll let the query continue so the result can be cached\n if (this.retryer) {\n if (this.abortSignalConsumed) {\n this.retryer.cancel({\n revert: true\n });\n } else {\n this.retryer.cancelRetry();\n }\n }\n\n this.scheduleGc();\n }\n\n this.cache.notify({\n type: 'observerRemoved',\n query: this,\n observer\n });\n }\n }\n\n getObserversCount() {\n return this.observers.length;\n }\n\n invalidate() {\n if (!this.state.isInvalidated) {\n this.dispatch({\n type: 'invalidate'\n });\n }\n }\n\n fetch(options, fetchOptions) {\n var _this$options$behavio, _context$fetchOptions;\n\n if (this.state.fetchStatus !== 'idle') {\n if (this.state.dataUpdatedAt && fetchOptions != null && fetchOptions.cancelRefetch) {\n // Silently cancel current fetch if the user wants to cancel refetches\n this.cancel({\n silent: true\n });\n } else if (this.promise) {\n var _this$retryer4;\n\n // make sure that retries that were potentially cancelled due to unmounts can continue\n (_this$retryer4 = this.retryer) == null ? void 0 : _this$retryer4.continueRetry(); // Return current promise if we are already fetching\n\n return this.promise;\n }\n } // Update config if passed, otherwise the config from the last execution is used\n\n\n if (options) {\n this.setOptions(options);\n } // Use the options from the first observer with a query function if no function is found.\n // This can happen when the query is hydrated or created with setQueryData.\n\n\n if (!this.options.queryFn) {\n const observer = this.observers.find(x => x.options.queryFn);\n\n if (observer) {\n this.setOptions(observer.options);\n }\n }\n\n if (!Array.isArray(this.options.queryKey)) {\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(\"As of v4, queryKey needs to be an Array. If you are using a string like 'repoData', please change it to an Array, e.g. ['repoData']\");\n }\n }\n\n const abortController = utils.getAbortController(); // Create query function context\n\n const queryFnContext = {\n queryKey: this.queryKey,\n pageParam: undefined,\n meta: this.meta\n }; // Adds an enumerable signal property to the object that\n // which sets abortSignalConsumed to true when the signal\n // is read.\n\n const addSignalProperty = object => {\n Object.defineProperty(object, 'signal', {\n enumerable: true,\n get: () => {\n if (abortController) {\n this.abortSignalConsumed = true;\n return abortController.signal;\n }\n\n return undefined;\n }\n });\n };\n\n addSignalProperty(queryFnContext); // Create fetch function\n\n const fetchFn = () => {\n if (!this.options.queryFn) {\n return Promise.reject('Missing queryFn');\n }\n\n this.abortSignalConsumed = false;\n return this.options.queryFn(queryFnContext);\n }; // Trigger behavior hook\n\n\n const context = {\n fetchOptions,\n options: this.options,\n queryKey: this.queryKey,\n state: this.state,\n fetchFn\n };\n addSignalProperty(context);\n (_this$options$behavio = this.options.behavior) == null ? void 0 : _this$options$behavio.onFetch(context); // Store state in case the current fetch needs to be reverted\n\n this.revertState = this.state; // Set to fetching state if not already in it\n\n if (this.state.fetchStatus === 'idle' || this.state.fetchMeta !== ((_context$fetchOptions = context.fetchOptions) == null ? void 0 : _context$fetchOptions.meta)) {\n var _context$fetchOptions2;\n\n this.dispatch({\n type: 'fetch',\n meta: (_context$fetchOptions2 = context.fetchOptions) == null ? void 0 : _context$fetchOptions2.meta\n });\n }\n\n const onError = error => {\n // Optimistically update state if needed\n if (!(retryer.isCancelledError(error) && error.silent)) {\n this.dispatch({\n type: 'error',\n error: error\n });\n }\n\n if (!retryer.isCancelledError(error)) {\n var _this$cache$config$on, _this$cache$config, _this$cache$config$on2, _this$cache$config2;\n\n // Notify cache callback\n (_this$cache$config$on = (_this$cache$config = this.cache.config).onError) == null ? void 0 : _this$cache$config$on.call(_this$cache$config, error, this);\n (_this$cache$config$on2 = (_this$cache$config2 = this.cache.config).onSettled) == null ? void 0 : _this$cache$config$on2.call(_this$cache$config2, this.state.data, error, this);\n\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(error);\n }\n }\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc();\n }\n\n this.isFetchingOptimistic = false;\n }; // Try to fetch the data\n\n\n this.retryer = retryer.createRetryer({\n fn: context.fetchFn,\n abort: abortController == null ? void 0 : abortController.abort.bind(abortController),\n onSuccess: data => {\n var _this$cache$config$on3, _this$cache$config3, _this$cache$config$on4, _this$cache$config4;\n\n if (typeof data === 'undefined') {\n if (process.env.NODE_ENV !== 'production') {\n this.logger.error(\"Query data cannot be undefined. Please make sure to return a value other than undefined from your query function. Affected query key: \" + this.queryHash);\n }\n\n onError(new Error(this.queryHash + \" data is undefined\"));\n return;\n }\n\n this.setData(data); // Notify cache callback\n\n (_this$cache$config$on3 = (_this$cache$config3 = this.cache.config).onSuccess) == null ? void 0 : _this$cache$config$on3.call(_this$cache$config3, data, this);\n (_this$cache$config$on4 = (_this$cache$config4 = this.cache.config).onSettled) == null ? void 0 : _this$cache$config$on4.call(_this$cache$config4, data, this.state.error, this);\n\n if (!this.isFetchingOptimistic) {\n // Schedule query gc after fetching\n this.scheduleGc();\n }\n\n this.isFetchingOptimistic = false;\n },\n onError,\n onFail: (failureCount, error) => {\n this.dispatch({\n type: 'failed',\n failureCount,\n error\n });\n },\n onPause: () => {\n this.dispatch({\n type: 'pause'\n });\n },\n onContinue: () => {\n this.dispatch({\n type: 'continue'\n });\n },\n retry: context.options.retry,\n retryDelay: context.options.retryDelay,\n networkMode: context.options.networkMode\n });\n this.promise = this.retryer.promise;\n return this.promise;\n }\n\n dispatch(action) {\n const reducer = state => {\n var _action$meta, _action$dataUpdatedAt;\n\n switch (action.type) {\n case 'failed':\n return { ...state,\n fetchFailureCount: action.failureCount,\n fetchFailureReason: action.error\n };\n\n case 'pause':\n return { ...state,\n fetchStatus: 'paused'\n };\n\n case 'continue':\n return { ...state,\n fetchStatus: 'fetching'\n };\n\n case 'fetch':\n return { ...state,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: (_action$meta = action.meta) != null ? _action$meta : null,\n fetchStatus: retryer.canFetch(this.options.networkMode) ? 'fetching' : 'paused',\n ...(!state.dataUpdatedAt && {\n error: null,\n status: 'loading'\n })\n };\n\n case 'success':\n return { ...state,\n data: action.data,\n dataUpdateCount: state.dataUpdateCount + 1,\n dataUpdatedAt: (_action$dataUpdatedAt = action.dataUpdatedAt) != null ? _action$dataUpdatedAt : Date.now(),\n error: null,\n isInvalidated: false,\n status: 'success',\n ...(!action.manual && {\n fetchStatus: 'idle',\n fetchFailureCount: 0,\n fetchFailureReason: null\n })\n };\n\n case 'error':\n const error = action.error;\n\n if (retryer.isCancelledError(error) && error.revert && this.revertState) {\n return { ...this.revertState\n };\n }\n\n return { ...state,\n error: error,\n errorUpdateCount: state.errorUpdateCount + 1,\n errorUpdatedAt: Date.now(),\n fetchFailureCount: state.fetchFailureCount + 1,\n fetchFailureReason: error,\n fetchStatus: 'idle',\n status: 'error'\n };\n\n case 'invalidate':\n return { ...state,\n isInvalidated: true\n };\n\n case 'setState':\n return { ...state,\n ...action.state\n };\n }\n };\n\n this.state = reducer(this.state);\n notifyManager.notifyManager.batch(() => {\n this.observers.forEach(observer => {\n observer.onQueryUpdate(action);\n });\n this.cache.notify({\n query: this,\n type: 'updated',\n action\n });\n });\n }\n\n}\n\nfunction getDefaultState(options) {\n const data = typeof options.initialData === 'function' ? options.initialData() : options.initialData;\n const hasData = typeof data !== 'undefined';\n const initialDataUpdatedAt = hasData ? typeof options.initialDataUpdatedAt === 'function' ? options.initialDataUpdatedAt() : options.initialDataUpdatedAt : 0;\n return {\n data,\n dataUpdateCount: 0,\n dataUpdatedAt: hasData ? initialDataUpdatedAt != null ? initialDataUpdatedAt : Date.now() : 0,\n error: null,\n errorUpdateCount: 0,\n errorUpdatedAt: 0,\n fetchFailureCount: 0,\n fetchFailureReason: null,\n fetchMeta: null,\n isInvalidated: false,\n status: hasData ? 'success' : 'loading',\n fetchStatus: 'idle'\n };\n}\n\nexports.Query = Query;\n//# sourceMappingURL=query.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar utils = require('./utils.js');\nvar query = require('./query.js');\nvar notifyManager = require('./notifyManager.js');\nvar subscribable = require('./subscribable.js');\n\n// CLASS\nclass QueryCache extends subscribable.Subscribable {\n constructor(config) {\n super();\n this.config = config || {};\n this.queries = [];\n this.queriesMap = {};\n }\n\n build(client, options, state) {\n var _options$queryHash;\n\n const queryKey = options.queryKey;\n const queryHash = (_options$queryHash = options.queryHash) != null ? _options$queryHash : utils.hashQueryKeyByOptions(queryKey, options);\n let query$1 = this.get(queryHash);\n\n if (!query$1) {\n query$1 = new query.Query({\n cache: this,\n logger: client.getLogger(),\n queryKey,\n queryHash,\n options: client.defaultQueryOptions(options),\n state,\n defaultOptions: client.getQueryDefaults(queryKey)\n });\n this.add(query$1);\n }\n\n return query$1;\n }\n\n add(query) {\n if (!this.queriesMap[query.queryHash]) {\n this.queriesMap[query.queryHash] = query;\n this.queries.push(query);\n this.notify({\n type: 'added',\n query\n });\n }\n }\n\n remove(query) {\n const queryInMap = this.queriesMap[query.queryHash];\n\n if (queryInMap) {\n query.destroy();\n this.queries = this.queries.filter(x => x !== query);\n\n if (queryInMap === query) {\n delete this.queriesMap[query.queryHash];\n }\n\n this.notify({\n type: 'removed',\n query\n });\n }\n }\n\n clear() {\n notifyManager.notifyManager.batch(() => {\n this.queries.forEach(query => {\n this.remove(query);\n });\n });\n }\n\n get(queryHash) {\n return this.queriesMap[queryHash];\n }\n\n getAll() {\n return this.queries;\n }\n\n find(arg1, arg2) {\n const [filters] = utils.parseFilterArgs(arg1, arg2);\n\n if (typeof filters.exact === 'undefined') {\n filters.exact = true;\n }\n\n return this.queries.find(query => utils.matchQuery(filters, query));\n }\n\n findAll(arg1, arg2) {\n const [filters] = utils.parseFilterArgs(arg1, arg2);\n return Object.keys(filters).length > 0 ? this.queries.filter(query => utils.matchQuery(filters, query)) : this.queries;\n }\n\n notify(event) {\n notifyManager.notifyManager.batch(() => {\n this.listeners.forEach(({\n listener\n }) => {\n listener(event);\n });\n });\n }\n\n onFocus() {\n notifyManager.notifyManager.batch(() => {\n this.queries.forEach(query => {\n query.onFocus();\n });\n });\n }\n\n onOnline() {\n notifyManager.notifyManager.batch(() => {\n this.queries.forEach(query => {\n query.onOnline();\n });\n });\n }\n\n}\n\nexports.QueryCache = QueryCache;\n//# sourceMappingURL=queryCache.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar utils = require('./utils.js');\nvar queryCache = require('./queryCache.js');\nvar mutationCache = require('./mutationCache.js');\nvar focusManager = require('./focusManager.js');\nvar onlineManager = require('./onlineManager.js');\nvar notifyManager = require('./notifyManager.js');\nvar infiniteQueryBehavior = require('./infiniteQueryBehavior.js');\nvar logger = require('./logger');\n\n// CLASS\nclass QueryClient {\n constructor(config = {}) {\n this.queryCache = config.queryCache || new queryCache.QueryCache();\n this.mutationCache = config.mutationCache || new mutationCache.MutationCache();\n this.logger = config.logger || logger.defaultLogger;\n this.defaultOptions = config.defaultOptions || {};\n this.queryDefaults = [];\n this.mutationDefaults = [];\n this.mountCount = 0;\n\n if (process.env.NODE_ENV !== 'production' && config.logger) {\n this.logger.error(\"Passing a custom logger has been deprecated and will be removed in the next major version.\");\n }\n }\n\n mount() {\n this.mountCount++;\n if (this.mountCount !== 1) return;\n this.unsubscribeFocus = focusManager.focusManager.subscribe(() => {\n if (focusManager.focusManager.isFocused()) {\n this.resumePausedMutations();\n this.queryCache.onFocus();\n }\n });\n this.unsubscribeOnline = onlineManager.onlineManager.subscribe(() => {\n if (onlineManager.onlineManager.isOnline()) {\n this.resumePausedMutations();\n this.queryCache.onOnline();\n }\n });\n }\n\n unmount() {\n var _this$unsubscribeFocu, _this$unsubscribeOnli;\n\n this.mountCount--;\n if (this.mountCount !== 0) return;\n (_this$unsubscribeFocu = this.unsubscribeFocus) == null ? void 0 : _this$unsubscribeFocu.call(this);\n this.unsubscribeFocus = undefined;\n (_this$unsubscribeOnli = this.unsubscribeOnline) == null ? void 0 : _this$unsubscribeOnli.call(this);\n this.unsubscribeOnline = undefined;\n }\n\n isFetching(arg1, arg2) {\n const [filters] = utils.parseFilterArgs(arg1, arg2);\n filters.fetchStatus = 'fetching';\n return this.queryCache.findAll(filters).length;\n }\n\n isMutating(filters) {\n return this.mutationCache.findAll({ ...filters,\n fetching: true\n }).length;\n }\n\n getQueryData(queryKey, filters) {\n var _this$queryCache$find;\n\n return (_this$queryCache$find = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find.state.data;\n }\n\n ensureQueryData(arg1, arg2, arg3) {\n const parsedOptions = utils.parseQueryArgs(arg1, arg2, arg3);\n const cachedData = this.getQueryData(parsedOptions.queryKey);\n return cachedData ? Promise.resolve(cachedData) : this.fetchQuery(parsedOptions);\n }\n\n getQueriesData(queryKeyOrFilters) {\n return this.getQueryCache().findAll(queryKeyOrFilters).map(({\n queryKey,\n state\n }) => {\n const data = state.data;\n return [queryKey, data];\n });\n }\n\n setQueryData(queryKey, updater, options) {\n const query = this.queryCache.find(queryKey);\n const prevData = query == null ? void 0 : query.state.data;\n const data = utils.functionalUpdate(updater, prevData);\n\n if (typeof data === 'undefined') {\n return undefined;\n }\n\n const parsedOptions = utils.parseQueryArgs(queryKey);\n const defaultedOptions = this.defaultQueryOptions(parsedOptions);\n return this.queryCache.build(this, defaultedOptions).setData(data, { ...options,\n manual: true\n });\n }\n\n setQueriesData(queryKeyOrFilters, updater, options) {\n return notifyManager.notifyManager.batch(() => this.getQueryCache().findAll(queryKeyOrFilters).map(({\n queryKey\n }) => [queryKey, this.setQueryData(queryKey, updater, options)]));\n }\n\n getQueryState(queryKey, filters) {\n var _this$queryCache$find2;\n\n return (_this$queryCache$find2 = this.queryCache.find(queryKey, filters)) == null ? void 0 : _this$queryCache$find2.state;\n }\n\n removeQueries(arg1, arg2) {\n const [filters] = utils.parseFilterArgs(arg1, arg2);\n const queryCache = this.queryCache;\n notifyManager.notifyManager.batch(() => {\n queryCache.findAll(filters).forEach(query => {\n queryCache.remove(query);\n });\n });\n }\n\n resetQueries(arg1, arg2, arg3) {\n const [filters, options] = utils.parseFilterArgs(arg1, arg2, arg3);\n const queryCache = this.queryCache;\n const refetchFilters = {\n type: 'active',\n ...filters\n };\n return notifyManager.notifyManager.batch(() => {\n queryCache.findAll(filters).forEach(query => {\n query.reset();\n });\n return this.refetchQueries(refetchFilters, options);\n });\n }\n\n cancelQueries(arg1, arg2, arg3) {\n const [filters, cancelOptions = {}] = utils.parseFilterArgs(arg1, arg2, arg3);\n\n if (typeof cancelOptions.revert === 'undefined') {\n cancelOptions.revert = true;\n }\n\n const promises = notifyManager.notifyManager.batch(() => this.queryCache.findAll(filters).map(query => query.cancel(cancelOptions)));\n return Promise.all(promises).then(utils.noop).catch(utils.noop);\n }\n\n invalidateQueries(arg1, arg2, arg3) {\n const [filters, options] = utils.parseFilterArgs(arg1, arg2, arg3);\n return notifyManager.notifyManager.batch(() => {\n var _ref, _filters$refetchType;\n\n this.queryCache.findAll(filters).forEach(query => {\n query.invalidate();\n });\n\n if (filters.refetchType === 'none') {\n return Promise.resolve();\n }\n\n const refetchFilters = { ...filters,\n type: (_ref = (_filters$refetchType = filters.refetchType) != null ? _filters$refetchType : filters.type) != null ? _ref : 'active'\n };\n return this.refetchQueries(refetchFilters, options);\n });\n }\n\n refetchQueries(arg1, arg2, arg3) {\n const [filters, options] = utils.parseFilterArgs(arg1, arg2, arg3);\n const promises = notifyManager.notifyManager.batch(() => this.queryCache.findAll(filters).filter(query => !query.isDisabled()).map(query => {\n var _options$cancelRefetc;\n\n return query.fetch(undefined, { ...options,\n cancelRefetch: (_options$cancelRefetc = options == null ? void 0 : options.cancelRefetch) != null ? _options$cancelRefetc : true,\n meta: {\n refetchPage: filters.refetchPage\n }\n });\n }));\n let promise = Promise.all(promises).then(utils.noop);\n\n if (!(options != null && options.throwOnError)) {\n promise = promise.catch(utils.noop);\n }\n\n return promise;\n }\n\n fetchQuery(arg1, arg2, arg3) {\n const parsedOptions = utils.parseQueryArgs(arg1, arg2, arg3);\n const defaultedOptions = this.defaultQueryOptions(parsedOptions); // https://github.com/tannerlinsley/react-query/issues/652\n\n if (typeof defaultedOptions.retry === 'undefined') {\n defaultedOptions.retry = false;\n }\n\n const query = this.queryCache.build(this, defaultedOptions);\n return query.isStaleByTime(defaultedOptions.staleTime) ? query.fetch(defaultedOptions) : Promise.resolve(query.state.data);\n }\n\n prefetchQuery(arg1, arg2, arg3) {\n return this.fetchQuery(arg1, arg2, arg3).then(utils.noop).catch(utils.noop);\n }\n\n fetchInfiniteQuery(arg1, arg2, arg3) {\n const parsedOptions = utils.parseQueryArgs(arg1, arg2, arg3);\n parsedOptions.behavior = infiniteQueryBehavior.infiniteQueryBehavior();\n return this.fetchQuery(parsedOptions);\n }\n\n prefetchInfiniteQuery(arg1, arg2, arg3) {\n return this.fetchInfiniteQuery(arg1, arg2, arg3).then(utils.noop).catch(utils.noop);\n }\n\n resumePausedMutations() {\n return this.mutationCache.resumePausedMutations();\n }\n\n getQueryCache() {\n return this.queryCache;\n }\n\n getMutationCache() {\n return this.mutationCache;\n }\n\n getLogger() {\n return this.logger;\n }\n\n getDefaultOptions() {\n return this.defaultOptions;\n }\n\n setDefaultOptions(options) {\n this.defaultOptions = options;\n }\n\n setQueryDefaults(queryKey, options) {\n const result = this.queryDefaults.find(x => utils.hashQueryKey(queryKey) === utils.hashQueryKey(x.queryKey));\n\n if (result) {\n result.defaultOptions = options;\n } else {\n this.queryDefaults.push({\n queryKey,\n defaultOptions: options\n });\n }\n }\n\n getQueryDefaults(queryKey) {\n if (!queryKey) {\n return undefined;\n } // Get the first matching defaults\n\n\n const firstMatchingDefaults = this.queryDefaults.find(x => utils.partialMatchKey(queryKey, x.queryKey)); // Additional checks and error in dev mode\n\n if (process.env.NODE_ENV !== 'production') {\n // Retrieve all matching defaults for the given key\n const matchingDefaults = this.queryDefaults.filter(x => utils.partialMatchKey(queryKey, x.queryKey)); // It is ok not having defaults, but it is error prone to have more than 1 default for a given key\n\n if (matchingDefaults.length > 1) {\n this.logger.error(\"[QueryClient] Several query defaults match with key '\" + JSON.stringify(queryKey) + \"'. The first matching query defaults are used. Please check how query defaults are registered. Order does matter here. cf. https://react-query.tanstack.com/reference/QueryClient#queryclientsetquerydefaults.\");\n }\n }\n\n return firstMatchingDefaults == null ? void 0 : firstMatchingDefaults.defaultOptions;\n }\n\n setMutationDefaults(mutationKey, options) {\n const result = this.mutationDefaults.find(x => utils.hashQueryKey(mutationKey) === utils.hashQueryKey(x.mutationKey));\n\n if (result) {\n result.defaultOptions = options;\n } else {\n this.mutationDefaults.push({\n mutationKey,\n defaultOptions: options\n });\n }\n }\n\n getMutationDefaults(mutationKey) {\n if (!mutationKey) {\n return undefined;\n } // Get the first matching defaults\n\n\n const firstMatchingDefaults = this.mutationDefaults.find(x => utils.partialMatchKey(mutationKey, x.mutationKey)); // Additional checks and error in dev mode\n\n if (process.env.NODE_ENV !== 'production') {\n // Retrieve all matching defaults for the given key\n const matchingDefaults = this.mutationDefaults.filter(x => utils.partialMatchKey(mutationKey, x.mutationKey)); // It is ok not having defaults, but it is error prone to have more than 1 default for a given key\n\n if (matchingDefaults.length > 1) {\n this.logger.error(\"[QueryClient] Several mutation defaults match with key '\" + JSON.stringify(mutationKey) + \"'. The first matching mutation defaults are used. Please check how mutation defaults are registered. Order does matter here. cf. https://react-query.tanstack.com/reference/QueryClient#queryclientsetmutationdefaults.\");\n }\n }\n\n return firstMatchingDefaults == null ? void 0 : firstMatchingDefaults.defaultOptions;\n }\n\n defaultQueryOptions(options) {\n if (options != null && options._defaulted) {\n return options;\n }\n\n const defaultedOptions = { ...this.defaultOptions.queries,\n ...this.getQueryDefaults(options == null ? void 0 : options.queryKey),\n ...options,\n _defaulted: true\n };\n\n if (!defaultedOptions.queryHash && defaultedOptions.queryKey) {\n defaultedOptions.queryHash = utils.hashQueryKeyByOptions(defaultedOptions.queryKey, defaultedOptions);\n } // dependent default values\n\n\n if (typeof defaultedOptions.refetchOnReconnect === 'undefined') {\n defaultedOptions.refetchOnReconnect = defaultedOptions.networkMode !== 'always';\n }\n\n if (typeof defaultedOptions.useErrorBoundary === 'undefined') {\n defaultedOptions.useErrorBoundary = !!defaultedOptions.suspense;\n }\n\n return defaultedOptions;\n }\n\n defaultMutationOptions(options) {\n if (options != null && options._defaulted) {\n return options;\n }\n\n return { ...this.defaultOptions.mutations,\n ...this.getMutationDefaults(options == null ? void 0 : options.mutationKey),\n ...options,\n _defaulted: true\n };\n }\n\n clear() {\n this.queryCache.clear();\n this.mutationCache.clear();\n }\n\n}\n\nexports.QueryClient = QueryClient;\n//# sourceMappingURL=queryClient.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar utils = require('./utils.js');\nvar notifyManager = require('./notifyManager.js');\nvar focusManager = require('./focusManager.js');\nvar subscribable = require('./subscribable.js');\nvar retryer = require('./retryer.js');\n\nclass QueryObserver extends subscribable.Subscribable {\n constructor(client, options) {\n super();\n this.client = client;\n this.options = options;\n this.trackedProps = new Set();\n this.selectError = null;\n this.bindMethods();\n this.setOptions(options);\n }\n\n bindMethods() {\n this.remove = this.remove.bind(this);\n this.refetch = this.refetch.bind(this);\n }\n\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.currentQuery.addObserver(this);\n\n if (shouldFetchOnMount(this.currentQuery, this.options)) {\n this.executeFetch();\n }\n\n this.updateTimers();\n }\n }\n\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.destroy();\n }\n }\n\n shouldFetchOnReconnect() {\n return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnReconnect);\n }\n\n shouldFetchOnWindowFocus() {\n return shouldFetchOn(this.currentQuery, this.options, this.options.refetchOnWindowFocus);\n }\n\n destroy() {\n this.listeners = new Set();\n this.clearStaleTimeout();\n this.clearRefetchInterval();\n this.currentQuery.removeObserver(this);\n }\n\n setOptions(options, notifyOptions) {\n const prevOptions = this.options;\n const prevQuery = this.currentQuery;\n this.options = this.client.defaultQueryOptions(options);\n\n if (process.env.NODE_ENV !== 'production' && typeof (options == null ? void 0 : options.isDataEqual) !== 'undefined') {\n this.client.getLogger().error(\"The isDataEqual option has been deprecated and will be removed in the next major version. You can achieve the same functionality by passing a function as the structuralSharing option\");\n }\n\n if (!utils.shallowEqualObjects(prevOptions, this.options)) {\n this.client.getQueryCache().notify({\n type: 'observerOptionsUpdated',\n query: this.currentQuery,\n observer: this\n });\n }\n\n if (typeof this.options.enabled !== 'undefined' && typeof this.options.enabled !== 'boolean') {\n throw new Error('Expected enabled to be a boolean');\n } // Keep previous query key if the user does not supply one\n\n\n if (!this.options.queryKey) {\n this.options.queryKey = prevOptions.queryKey;\n }\n\n this.updateQuery();\n const mounted = this.hasListeners(); // Fetch if there are subscribers\n\n if (mounted && shouldFetchOptionally(this.currentQuery, prevQuery, this.options, prevOptions)) {\n this.executeFetch();\n } // Update result\n\n\n this.updateResult(notifyOptions); // Update stale interval if needed\n\n if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || this.options.staleTime !== prevOptions.staleTime)) {\n this.updateStaleTimeout();\n }\n\n const nextRefetchInterval = this.computeRefetchInterval(); // Update refetch interval if needed\n\n if (mounted && (this.currentQuery !== prevQuery || this.options.enabled !== prevOptions.enabled || nextRefetchInterval !== this.currentRefetchInterval)) {\n this.updateRefetchInterval(nextRefetchInterval);\n }\n }\n\n getOptimisticResult(options) {\n const query = this.client.getQueryCache().build(this.client, options);\n return this.createResult(query, options);\n }\n\n getCurrentResult() {\n return this.currentResult;\n }\n\n trackResult(result) {\n const trackedResult = {};\n Object.keys(result).forEach(key => {\n Object.defineProperty(trackedResult, key, {\n configurable: false,\n enumerable: true,\n get: () => {\n this.trackedProps.add(key);\n return result[key];\n }\n });\n });\n return trackedResult;\n }\n\n getCurrentQuery() {\n return this.currentQuery;\n }\n\n remove() {\n this.client.getQueryCache().remove(this.currentQuery);\n }\n\n refetch({\n refetchPage,\n ...options\n } = {}) {\n return this.fetch({ ...options,\n meta: {\n refetchPage\n }\n });\n }\n\n fetchOptimistic(options) {\n const defaultedOptions = this.client.defaultQueryOptions(options);\n const query = this.client.getQueryCache().build(this.client, defaultedOptions);\n query.isFetchingOptimistic = true;\n return query.fetch().then(() => this.createResult(query, defaultedOptions));\n }\n\n fetch(fetchOptions) {\n var _fetchOptions$cancelR;\n\n return this.executeFetch({ ...fetchOptions,\n cancelRefetch: (_fetchOptions$cancelR = fetchOptions.cancelRefetch) != null ? _fetchOptions$cancelR : true\n }).then(() => {\n this.updateResult();\n return this.currentResult;\n });\n }\n\n executeFetch(fetchOptions) {\n // Make sure we reference the latest query as the current one might have been removed\n this.updateQuery(); // Fetch\n\n let promise = this.currentQuery.fetch(this.options, fetchOptions);\n\n if (!(fetchOptions != null && fetchOptions.throwOnError)) {\n promise = promise.catch(utils.noop);\n }\n\n return promise;\n }\n\n updateStaleTimeout() {\n this.clearStaleTimeout();\n\n if (utils.isServer || this.currentResult.isStale || !utils.isValidTimeout(this.options.staleTime)) {\n return;\n }\n\n const time = utils.timeUntilStale(this.currentResult.dataUpdatedAt, this.options.staleTime); // The timeout is sometimes triggered 1 ms before the stale time expiration.\n // To mitigate this issue we always add 1 ms to the timeout.\n\n const timeout = time + 1;\n this.staleTimeoutId = setTimeout(() => {\n if (!this.currentResult.isStale) {\n this.updateResult();\n }\n }, timeout);\n }\n\n computeRefetchInterval() {\n var _this$options$refetch;\n\n return typeof this.options.refetchInterval === 'function' ? this.options.refetchInterval(this.currentResult.data, this.currentQuery) : (_this$options$refetch = this.options.refetchInterval) != null ? _this$options$refetch : false;\n }\n\n updateRefetchInterval(nextInterval) {\n this.clearRefetchInterval();\n this.currentRefetchInterval = nextInterval;\n\n if (utils.isServer || this.options.enabled === false || !utils.isValidTimeout(this.currentRefetchInterval) || this.currentRefetchInterval === 0) {\n return;\n }\n\n this.refetchIntervalId = setInterval(() => {\n if (this.options.refetchIntervalInBackground || focusManager.focusManager.isFocused()) {\n this.executeFetch();\n }\n }, this.currentRefetchInterval);\n }\n\n updateTimers() {\n this.updateStaleTimeout();\n this.updateRefetchInterval(this.computeRefetchInterval());\n }\n\n clearStaleTimeout() {\n if (this.staleTimeoutId) {\n clearTimeout(this.staleTimeoutId);\n this.staleTimeoutId = undefined;\n }\n }\n\n clearRefetchInterval() {\n if (this.refetchIntervalId) {\n clearInterval(this.refetchIntervalId);\n this.refetchIntervalId = undefined;\n }\n }\n\n createResult(query, options) {\n const prevQuery = this.currentQuery;\n const prevOptions = this.options;\n const prevResult = this.currentResult;\n const prevResultState = this.currentResultState;\n const prevResultOptions = this.currentResultOptions;\n const queryChange = query !== prevQuery;\n const queryInitialState = queryChange ? query.state : this.currentQueryInitialState;\n const prevQueryResult = queryChange ? this.currentResult : this.previousQueryResult;\n const {\n state\n } = query;\n let {\n dataUpdatedAt,\n error,\n errorUpdatedAt,\n fetchStatus,\n status\n } = state;\n let isPreviousData = false;\n let isPlaceholderData = false;\n let data; // Optimistically set result in fetching state if needed\n\n if (options._optimisticResults) {\n const mounted = this.hasListeners();\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n\n if (fetchOnMount || fetchOptionally) {\n fetchStatus = retryer.canFetch(query.options.networkMode) ? 'fetching' : 'paused';\n\n if (!dataUpdatedAt) {\n status = 'loading';\n }\n }\n\n if (options._optimisticResults === 'isRestoring') {\n fetchStatus = 'idle';\n }\n } // Keep previous data if needed\n\n\n if (options.keepPreviousData && !state.dataUpdatedAt && prevQueryResult != null && prevQueryResult.isSuccess && status !== 'error') {\n data = prevQueryResult.data;\n dataUpdatedAt = prevQueryResult.dataUpdatedAt;\n status = prevQueryResult.status;\n isPreviousData = true;\n } // Select data if needed\n else if (options.select && typeof state.data !== 'undefined') {\n // Memoize select result\n if (prevResult && state.data === (prevResultState == null ? void 0 : prevResultState.data) && options.select === this.selectFn) {\n data = this.selectResult;\n } else {\n try {\n this.selectFn = options.select;\n data = options.select(state.data);\n data = utils.replaceData(prevResult == null ? void 0 : prevResult.data, data, options);\n this.selectResult = data;\n this.selectError = null;\n } catch (selectError) {\n if (process.env.NODE_ENV !== 'production') {\n this.client.getLogger().error(selectError);\n }\n\n this.selectError = selectError;\n }\n }\n } // Use query data\n else {\n data = state.data;\n } // Show placeholder data if needed\n\n\n if (typeof options.placeholderData !== 'undefined' && typeof data === 'undefined' && status === 'loading') {\n let placeholderData; // Memoize placeholder data\n\n if (prevResult != null && prevResult.isPlaceholderData && options.placeholderData === (prevResultOptions == null ? void 0 : prevResultOptions.placeholderData)) {\n placeholderData = prevResult.data;\n } else {\n placeholderData = typeof options.placeholderData === 'function' ? options.placeholderData() : options.placeholderData;\n\n if (options.select && typeof placeholderData !== 'undefined') {\n try {\n placeholderData = options.select(placeholderData);\n this.selectError = null;\n } catch (selectError) {\n if (process.env.NODE_ENV !== 'production') {\n this.client.getLogger().error(selectError);\n }\n\n this.selectError = selectError;\n }\n }\n }\n\n if (typeof placeholderData !== 'undefined') {\n status = 'success';\n data = utils.replaceData(prevResult == null ? void 0 : prevResult.data, placeholderData, options);\n isPlaceholderData = true;\n }\n }\n\n if (this.selectError) {\n error = this.selectError;\n data = this.selectResult;\n errorUpdatedAt = Date.now();\n status = 'error';\n }\n\n const isFetching = fetchStatus === 'fetching';\n const isLoading = status === 'loading';\n const isError = status === 'error';\n const result = {\n status,\n fetchStatus,\n isLoading,\n isSuccess: status === 'success',\n isError,\n isInitialLoading: isLoading && isFetching,\n data,\n dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: state.fetchFailureCount,\n failureReason: state.fetchFailureReason,\n errorUpdateCount: state.errorUpdateCount,\n isFetched: state.dataUpdateCount > 0 || state.errorUpdateCount > 0,\n isFetchedAfterMount: state.dataUpdateCount > queryInitialState.dataUpdateCount || state.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isLoading,\n isLoadingError: isError && state.dataUpdatedAt === 0,\n isPaused: fetchStatus === 'paused',\n isPlaceholderData,\n isPreviousData,\n isRefetchError: isError && state.dataUpdatedAt !== 0,\n isStale: isStale(query, options),\n refetch: this.refetch,\n remove: this.remove\n };\n return result;\n }\n\n updateResult(notifyOptions) {\n const prevResult = this.currentResult;\n const nextResult = this.createResult(this.currentQuery, this.options);\n this.currentResultState = this.currentQuery.state;\n this.currentResultOptions = this.options; // Only notify and update result if something has changed\n\n if (utils.shallowEqualObjects(nextResult, prevResult)) {\n return;\n }\n\n this.currentResult = nextResult; // Determine which callbacks to trigger\n\n const defaultNotifyOptions = {\n cache: true\n };\n\n const shouldNotifyListeners = () => {\n if (!prevResult) {\n return true;\n }\n\n const {\n notifyOnChangeProps\n } = this.options;\n\n if (notifyOnChangeProps === 'all' || !notifyOnChangeProps && !this.trackedProps.size) {\n return true;\n }\n\n const includedProps = new Set(notifyOnChangeProps != null ? notifyOnChangeProps : this.trackedProps);\n\n if (this.options.useErrorBoundary) {\n includedProps.add('error');\n }\n\n return Object.keys(this.currentResult).some(key => {\n const typedKey = key;\n const changed = this.currentResult[typedKey] !== prevResult[typedKey];\n return changed && includedProps.has(typedKey);\n });\n };\n\n if ((notifyOptions == null ? void 0 : notifyOptions.listeners) !== false && shouldNotifyListeners()) {\n defaultNotifyOptions.listeners = true;\n }\n\n this.notify({ ...defaultNotifyOptions,\n ...notifyOptions\n });\n }\n\n updateQuery() {\n const query = this.client.getQueryCache().build(this.client, this.options);\n\n if (query === this.currentQuery) {\n return;\n }\n\n const prevQuery = this.currentQuery;\n this.currentQuery = query;\n this.currentQueryInitialState = query.state;\n this.previousQueryResult = this.currentResult;\n\n if (this.hasListeners()) {\n prevQuery == null ? void 0 : prevQuery.removeObserver(this);\n query.addObserver(this);\n }\n }\n\n onQueryUpdate(action) {\n const notifyOptions = {};\n\n if (action.type === 'success') {\n notifyOptions.onSuccess = !action.manual;\n } else if (action.type === 'error' && !retryer.isCancelledError(action.error)) {\n notifyOptions.onError = true;\n }\n\n this.updateResult(notifyOptions);\n\n if (this.hasListeners()) {\n this.updateTimers();\n }\n }\n\n notify(notifyOptions) {\n notifyManager.notifyManager.batch(() => {\n // First trigger the configuration callbacks\n if (notifyOptions.onSuccess) {\n var _this$options$onSucce, _this$options, _this$options$onSettl, _this$options2;\n\n (_this$options$onSucce = (_this$options = this.options).onSuccess) == null ? void 0 : _this$options$onSucce.call(_this$options, this.currentResult.data);\n (_this$options$onSettl = (_this$options2 = this.options).onSettled) == null ? void 0 : _this$options$onSettl.call(_this$options2, this.currentResult.data, null);\n } else if (notifyOptions.onError) {\n var _this$options$onError, _this$options3, _this$options$onSettl2, _this$options4;\n\n (_this$options$onError = (_this$options3 = this.options).onError) == null ? void 0 : _this$options$onError.call(_this$options3, this.currentResult.error);\n (_this$options$onSettl2 = (_this$options4 = this.options).onSettled) == null ? void 0 : _this$options$onSettl2.call(_this$options4, undefined, this.currentResult.error);\n } // Then trigger the listeners\n\n\n if (notifyOptions.listeners) {\n this.listeners.forEach(({\n listener\n }) => {\n listener(this.currentResult);\n });\n } // Then the cache listeners\n\n\n if (notifyOptions.cache) {\n this.client.getQueryCache().notify({\n query: this.currentQuery,\n type: 'observerResultsUpdated'\n });\n }\n });\n }\n\n}\n\nfunction shouldLoadOnMount(query, options) {\n return options.enabled !== false && !query.state.dataUpdatedAt && !(query.state.status === 'error' && options.retryOnMount === false);\n}\n\nfunction shouldFetchOnMount(query, options) {\n return shouldLoadOnMount(query, options) || query.state.dataUpdatedAt > 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\n\nfunction shouldFetchOn(query, options, field) {\n if (options.enabled !== false) {\n const value = typeof field === 'function' ? field(query) : field;\n return value === 'always' || value !== false && isStale(query, options);\n }\n\n return false;\n}\n\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n return options.enabled !== false && (query !== prevQuery || prevOptions.enabled === false) && (!options.suspense || query.state.status !== 'error') && isStale(query, options);\n}\n\nfunction isStale(query, options) {\n return query.isStaleByTime(options.staleTime);\n}\n\nexports.QueryObserver = QueryObserver;\n//# sourceMappingURL=queryObserver.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar utils = require('./utils.js');\n\nclass Removable {\n destroy() {\n this.clearGcTimeout();\n }\n\n scheduleGc() {\n this.clearGcTimeout();\n\n if (utils.isValidTimeout(this.cacheTime)) {\n this.gcTimeout = setTimeout(() => {\n this.optionalRemove();\n }, this.cacheTime);\n }\n }\n\n updateCacheTime(newCacheTime) {\n // Default to 5 minutes (Infinity for server-side) if no cache time is set\n this.cacheTime = Math.max(this.cacheTime || 0, newCacheTime != null ? newCacheTime : utils.isServer ? Infinity : 5 * 60 * 1000);\n }\n\n clearGcTimeout() {\n if (this.gcTimeout) {\n clearTimeout(this.gcTimeout);\n this.gcTimeout = undefined;\n }\n }\n\n}\n\nexports.Removable = Removable;\n//# sourceMappingURL=removable.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar focusManager = require('./focusManager.js');\nvar onlineManager = require('./onlineManager.js');\nvar utils = require('./utils.js');\n\nfunction defaultRetryDelay(failureCount) {\n return Math.min(1000 * 2 ** failureCount, 30000);\n}\n\nfunction canFetch(networkMode) {\n return (networkMode != null ? networkMode : 'online') === 'online' ? onlineManager.onlineManager.isOnline() : true;\n}\nclass CancelledError {\n constructor(options) {\n this.revert = options == null ? void 0 : options.revert;\n this.silent = options == null ? void 0 : options.silent;\n }\n\n}\nfunction isCancelledError(value) {\n return value instanceof CancelledError;\n}\nfunction createRetryer(config) {\n let isRetryCancelled = false;\n let failureCount = 0;\n let isResolved = false;\n let continueFn;\n let promiseResolve;\n let promiseReject;\n const promise = new Promise((outerResolve, outerReject) => {\n promiseResolve = outerResolve;\n promiseReject = outerReject;\n });\n\n const cancel = cancelOptions => {\n if (!isResolved) {\n reject(new CancelledError(cancelOptions));\n config.abort == null ? void 0 : config.abort();\n }\n };\n\n const cancelRetry = () => {\n isRetryCancelled = true;\n };\n\n const continueRetry = () => {\n isRetryCancelled = false;\n };\n\n const shouldPause = () => !focusManager.focusManager.isFocused() || config.networkMode !== 'always' && !onlineManager.onlineManager.isOnline();\n\n const resolve = value => {\n if (!isResolved) {\n isResolved = true;\n config.onSuccess == null ? void 0 : config.onSuccess(value);\n continueFn == null ? void 0 : continueFn();\n promiseResolve(value);\n }\n };\n\n const reject = value => {\n if (!isResolved) {\n isResolved = true;\n config.onError == null ? void 0 : config.onError(value);\n continueFn == null ? void 0 : continueFn();\n promiseReject(value);\n }\n };\n\n const pause = () => {\n return new Promise(continueResolve => {\n continueFn = value => {\n const canContinue = isResolved || !shouldPause();\n\n if (canContinue) {\n continueResolve(value);\n }\n\n return canContinue;\n };\n\n config.onPause == null ? void 0 : config.onPause();\n }).then(() => {\n continueFn = undefined;\n\n if (!isResolved) {\n config.onContinue == null ? void 0 : config.onContinue();\n }\n });\n }; // Create loop function\n\n\n const run = () => {\n // Do nothing if already resolved\n if (isResolved) {\n return;\n }\n\n let promiseOrValue; // Execute query\n\n try {\n promiseOrValue = config.fn();\n } catch (error) {\n promiseOrValue = Promise.reject(error);\n }\n\n Promise.resolve(promiseOrValue).then(resolve).catch(error => {\n var _config$retry, _config$retryDelay;\n\n // Stop if the fetch is already resolved\n if (isResolved) {\n return;\n } // Do we need to retry the request?\n\n\n const retry = (_config$retry = config.retry) != null ? _config$retry : 3;\n const retryDelay = (_config$retryDelay = config.retryDelay) != null ? _config$retryDelay : defaultRetryDelay;\n const delay = typeof retryDelay === 'function' ? retryDelay(failureCount, error) : retryDelay;\n const shouldRetry = retry === true || typeof retry === 'number' && failureCount < retry || typeof retry === 'function' && retry(failureCount, error);\n\n if (isRetryCancelled || !shouldRetry) {\n // We are done if the query does not need to be retried\n reject(error);\n return;\n }\n\n failureCount++; // Notify on fail\n\n config.onFail == null ? void 0 : config.onFail(failureCount, error); // Delay\n\n utils.sleep(delay) // Pause if the document is not visible or when the device is offline\n .then(() => {\n if (shouldPause()) {\n return pause();\n }\n\n return;\n }).then(() => {\n if (isRetryCancelled) {\n reject(error);\n } else {\n run();\n }\n });\n });\n }; // Start loop\n\n\n if (canFetch(config.networkMode)) {\n run();\n } else {\n pause().then(run);\n }\n\n return {\n promise,\n cancel,\n continue: () => {\n const didContinue = continueFn == null ? void 0 : continueFn();\n return didContinue ? promise : Promise.resolve();\n },\n cancelRetry,\n continueRetry\n };\n}\n\nexports.CancelledError = CancelledError;\nexports.canFetch = canFetch;\nexports.createRetryer = createRetryer;\nexports.isCancelledError = isCancelledError;\n//# sourceMappingURL=retryer.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nclass Subscribable {\n constructor() {\n this.listeners = new Set();\n this.subscribe = this.subscribe.bind(this);\n }\n\n subscribe(listener) {\n const identity = {\n listener\n };\n this.listeners.add(identity);\n this.onSubscribe();\n return () => {\n this.listeners.delete(identity);\n this.onUnsubscribe();\n };\n }\n\n hasListeners() {\n return this.listeners.size > 0;\n }\n\n onSubscribe() {// Do nothing\n }\n\n onUnsubscribe() {// Do nothing\n }\n\n}\n\nexports.Subscribable = Subscribable;\n//# sourceMappingURL=subscribable.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\n// TYPES\n// UTILS\nconst isServer = typeof window === 'undefined' || 'Deno' in window;\nfunction noop() {\n return undefined;\n}\nfunction functionalUpdate(updater, input) {\n return typeof updater === 'function' ? updater(input) : updater;\n}\nfunction isValidTimeout(value) {\n return typeof value === 'number' && value >= 0 && value !== Infinity;\n}\nfunction difference(array1, array2) {\n return array1.filter(x => array2.indexOf(x) === -1);\n}\nfunction replaceAt(array, index, value) {\n const copy = array.slice(0);\n copy[index] = value;\n return copy;\n}\nfunction timeUntilStale(updatedAt, staleTime) {\n return Math.max(updatedAt + (staleTime || 0) - Date.now(), 0);\n}\nfunction parseQueryArgs(arg1, arg2, arg3) {\n if (!isQueryKey(arg1)) {\n return arg1;\n }\n\n if (typeof arg2 === 'function') {\n return { ...arg3,\n queryKey: arg1,\n queryFn: arg2\n };\n }\n\n return { ...arg2,\n queryKey: arg1\n };\n}\nfunction parseMutationArgs(arg1, arg2, arg3) {\n if (isQueryKey(arg1)) {\n if (typeof arg2 === 'function') {\n return { ...arg3,\n mutationKey: arg1,\n mutationFn: arg2\n };\n }\n\n return { ...arg2,\n mutationKey: arg1\n };\n }\n\n if (typeof arg1 === 'function') {\n return { ...arg2,\n mutationFn: arg1\n };\n }\n\n return { ...arg1\n };\n}\nfunction parseFilterArgs(arg1, arg2, arg3) {\n return isQueryKey(arg1) ? [{ ...arg2,\n queryKey: arg1\n }, arg3] : [arg1 || {}, arg2];\n}\nfunction parseMutationFilterArgs(arg1, arg2, arg3) {\n return isQueryKey(arg1) ? [{ ...arg2,\n mutationKey: arg1\n }, arg3] : [arg1 || {}, arg2];\n}\nfunction matchQuery(filters, query) {\n const {\n type = 'all',\n exact,\n fetchStatus,\n predicate,\n queryKey,\n stale\n } = filters;\n\n if (isQueryKey(queryKey)) {\n if (exact) {\n if (query.queryHash !== hashQueryKeyByOptions(queryKey, query.options)) {\n return false;\n }\n } else if (!partialMatchKey(query.queryKey, queryKey)) {\n return false;\n }\n }\n\n if (type !== 'all') {\n const isActive = query.isActive();\n\n if (type === 'active' && !isActive) {\n return false;\n }\n\n if (type === 'inactive' && isActive) {\n return false;\n }\n }\n\n if (typeof stale === 'boolean' && query.isStale() !== stale) {\n return false;\n }\n\n if (typeof fetchStatus !== 'undefined' && fetchStatus !== query.state.fetchStatus) {\n return false;\n }\n\n if (predicate && !predicate(query)) {\n return false;\n }\n\n return true;\n}\nfunction matchMutation(filters, mutation) {\n const {\n exact,\n fetching,\n predicate,\n mutationKey\n } = filters;\n\n if (isQueryKey(mutationKey)) {\n if (!mutation.options.mutationKey) {\n return false;\n }\n\n if (exact) {\n if (hashQueryKey(mutation.options.mutationKey) !== hashQueryKey(mutationKey)) {\n return false;\n }\n } else if (!partialMatchKey(mutation.options.mutationKey, mutationKey)) {\n return false;\n }\n }\n\n if (typeof fetching === 'boolean' && mutation.state.status === 'loading' !== fetching) {\n return false;\n }\n\n if (predicate && !predicate(mutation)) {\n return false;\n }\n\n return true;\n}\nfunction hashQueryKeyByOptions(queryKey, options) {\n const hashFn = (options == null ? void 0 : options.queryKeyHashFn) || hashQueryKey;\n return hashFn(queryKey);\n}\n/**\n * Default query keys hash function.\n * Hashes the value into a stable hash.\n */\n\nfunction hashQueryKey(queryKey) {\n return JSON.stringify(queryKey, (_, val) => isPlainObject(val) ? Object.keys(val).sort().reduce((result, key) => {\n result[key] = val[key];\n return result;\n }, {}) : val);\n}\n/**\n * Checks if key `b` partially matches with key `a`.\n */\n\nfunction partialMatchKey(a, b) {\n return partialDeepEqual(a, b);\n}\n/**\n * Checks if `b` partially matches with `a`.\n */\n\nfunction partialDeepEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (typeof a !== typeof b) {\n return false;\n }\n\n if (a && b && typeof a === 'object' && typeof b === 'object') {\n return !Object.keys(b).some(key => !partialDeepEqual(a[key], b[key]));\n }\n\n return false;\n}\n/**\n * This function returns `a` if `b` is deeply equal.\n * If not, it will replace any deeply equal children of `b` with those of `a`.\n * This can be used for structural sharing between JSON values for example.\n */\n\nfunction replaceEqualDeep(a, b) {\n if (a === b) {\n return a;\n }\n\n const array = isPlainArray(a) && isPlainArray(b);\n\n if (array || isPlainObject(a) && isPlainObject(b)) {\n const aSize = array ? a.length : Object.keys(a).length;\n const bItems = array ? b : Object.keys(b);\n const bSize = bItems.length;\n const copy = array ? [] : {};\n let equalItems = 0;\n\n for (let i = 0; i < bSize; i++) {\n const key = array ? i : bItems[i];\n copy[key] = replaceEqualDeep(a[key], b[key]);\n\n if (copy[key] === a[key]) {\n equalItems++;\n }\n }\n\n return aSize === bSize && equalItems === aSize ? a : copy;\n }\n\n return b;\n}\n/**\n * Shallow compare objects. Only works with objects that always have the same properties.\n */\n\nfunction shallowEqualObjects(a, b) {\n if (a && !b || b && !a) {\n return false;\n }\n\n for (const key in a) {\n if (a[key] !== b[key]) {\n return false;\n }\n }\n\n return true;\n}\nfunction isPlainArray(value) {\n return Array.isArray(value) && value.length === Object.keys(value).length;\n} // Copied from: https://github.com/jonschlinkert/is-plain-object\n\nfunction isPlainObject(o) {\n if (!hasObjectPrototype(o)) {\n return false;\n } // If has modified constructor\n\n\n const ctor = o.constructor;\n\n if (typeof ctor === 'undefined') {\n return true;\n } // If has modified prototype\n\n\n const prot = ctor.prototype;\n\n if (!hasObjectPrototype(prot)) {\n return false;\n } // If constructor does not have an Object-specific method\n\n\n if (!prot.hasOwnProperty('isPrototypeOf')) {\n return false;\n } // Most likely a plain Object\n\n\n return true;\n}\n\nfunction hasObjectPrototype(o) {\n return Object.prototype.toString.call(o) === '[object Object]';\n}\n\nfunction isQueryKey(value) {\n return Array.isArray(value);\n}\nfunction isError(value) {\n return value instanceof Error;\n}\nfunction sleep(timeout) {\n return new Promise(resolve => {\n setTimeout(resolve, timeout);\n });\n}\n/**\n * Schedules a microtask.\n * This can be useful to schedule state updates after rendering.\n */\n\nfunction scheduleMicrotask(callback) {\n sleep(0).then(callback);\n}\nfunction getAbortController() {\n if (typeof AbortController === 'function') {\n return new AbortController();\n }\n\n return;\n}\nfunction replaceData(prevData, data, options) {\n // Use prev data if an isDataEqual function is defined and returns `true`\n if (options.isDataEqual != null && options.isDataEqual(prevData, data)) {\n return prevData;\n } else if (typeof options.structuralSharing === 'function') {\n return options.structuralSharing(prevData, data);\n } else if (options.structuralSharing !== false) {\n // Structurally share data between prev and new data if needed\n return replaceEqualDeep(prevData, data);\n }\n\n return data;\n}\n\nexports.difference = difference;\nexports.functionalUpdate = functionalUpdate;\nexports.getAbortController = getAbortController;\nexports.hashQueryKey = hashQueryKey;\nexports.hashQueryKeyByOptions = hashQueryKeyByOptions;\nexports.isError = isError;\nexports.isPlainArray = isPlainArray;\nexports.isPlainObject = isPlainObject;\nexports.isQueryKey = isQueryKey;\nexports.isServer = isServer;\nexports.isValidTimeout = isValidTimeout;\nexports.matchMutation = matchMutation;\nexports.matchQuery = matchQuery;\nexports.noop = noop;\nexports.parseFilterArgs = parseFilterArgs;\nexports.parseMutationArgs = parseMutationArgs;\nexports.parseMutationFilterArgs = parseMutationFilterArgs;\nexports.parseQueryArgs = parseQueryArgs;\nexports.partialDeepEqual = partialDeepEqual;\nexports.partialMatchKey = partialMatchKey;\nexports.replaceAt = replaceAt;\nexports.replaceData = replaceData;\nexports.replaceEqualDeep = replaceEqualDeep;\nexports.scheduleMicrotask = scheduleMicrotask;\nexports.shallowEqualObjects = shallowEqualObjects;\nexports.sleep = sleep;\nexports.timeUntilStale = timeUntilStale;\n//# sourceMappingURL=utils.js.map\n","'use client';\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar React = require('react');\nvar queryCore = require('@tanstack/query-core');\nvar QueryClientProvider = require('./QueryClientProvider.js');\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar React__namespace = /*#__PURE__*/_interopNamespace(React);\n\nfunction useHydrate(state, options = {}) {\n const queryClient = QueryClientProvider.useQueryClient({\n context: options.context\n });\n const optionsRef = React__namespace.useRef(options);\n optionsRef.current = options; // Running hydrate again with the same queries is safe,\n // it wont overwrite or initialize existing queries,\n // relying on useMemo here is only a performance optimization.\n // hydrate can and should be run *during* render here for SSR to work properly\n\n React__namespace.useMemo(() => {\n if (state) {\n queryCore.hydrate(queryClient, state, optionsRef.current);\n }\n }, [queryClient, state]);\n}\nconst Hydrate = ({\n children,\n options,\n state\n}) => {\n useHydrate(state, options);\n return children;\n};\n\nexports.Hydrate = Hydrate;\nexports.useHydrate = useHydrate;\n//# sourceMappingURL=Hydrate.js.map\n","'use client';\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar React = require('react');\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar React__namespace = /*#__PURE__*/_interopNamespace(React);\n\nconst defaultContext = /*#__PURE__*/React__namespace.createContext(undefined);\nconst QueryClientSharingContext = /*#__PURE__*/React__namespace.createContext(false); // If we are given a context, we will use it.\n// Otherwise, if contextSharing is on, we share the first and at least one\n// instance of the context across the window\n// to ensure that if React Query is used across\n// different bundles or microfrontends they will\n// all use the same **instance** of context, regardless\n// of module scoping.\n\nfunction getQueryClientContext(context, contextSharing) {\n if (context) {\n return context;\n }\n\n if (contextSharing && typeof window !== 'undefined') {\n if (!window.ReactQueryClientContext) {\n window.ReactQueryClientContext = defaultContext;\n }\n\n return window.ReactQueryClientContext;\n }\n\n return defaultContext;\n}\n\nconst useQueryClient = ({\n context\n} = {}) => {\n const queryClient = React__namespace.useContext(getQueryClientContext(context, React__namespace.useContext(QueryClientSharingContext)));\n\n if (!queryClient) {\n throw new Error('No QueryClient set, use QueryClientProvider to set one');\n }\n\n return queryClient;\n};\nconst QueryClientProvider = ({\n client,\n children,\n context,\n contextSharing = false\n}) => {\n React__namespace.useEffect(() => {\n client.mount();\n return () => {\n client.unmount();\n };\n }, [client]);\n\n if (process.env.NODE_ENV !== 'production' && contextSharing) {\n client.getLogger().error(\"The contextSharing option has been deprecated and will be removed in the next major version\");\n }\n\n const Context = getQueryClientContext(context, contextSharing);\n return /*#__PURE__*/React__namespace.createElement(QueryClientSharingContext.Provider, {\n value: !context && contextSharing\n }, /*#__PURE__*/React__namespace.createElement(Context.Provider, {\n value: client\n }, children));\n};\n\nexports.QueryClientProvider = QueryClientProvider;\nexports.defaultContext = defaultContext;\nexports.useQueryClient = useQueryClient;\n//# sourceMappingURL=QueryClientProvider.js.map\n","'use client';\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar React = require('react');\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar React__namespace = /*#__PURE__*/_interopNamespace(React);\n\nfunction createValue() {\n let isReset = false;\n return {\n clearReset: () => {\n isReset = false;\n },\n reset: () => {\n isReset = true;\n },\n isReset: () => {\n return isReset;\n }\n };\n}\n\nconst QueryErrorResetBoundaryContext = /*#__PURE__*/React__namespace.createContext(createValue()); // HOOK\n\nconst useQueryErrorResetBoundary = () => React__namespace.useContext(QueryErrorResetBoundaryContext); // COMPONENT\n\nconst QueryErrorResetBoundary = ({\n children\n}) => {\n const [value] = React__namespace.useState(() => createValue());\n return /*#__PURE__*/React__namespace.createElement(QueryErrorResetBoundaryContext.Provider, {\n value: value\n }, typeof children === 'function' ? children(value) : children);\n};\n\nexports.QueryErrorResetBoundary = QueryErrorResetBoundary;\nexports.useQueryErrorResetBoundary = useQueryErrorResetBoundary;\n//# sourceMappingURL=QueryErrorResetBoundary.js.map\n","'use client';\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar React = require('react');\nvar utils = require('./utils.js');\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar React__namespace = /*#__PURE__*/_interopNamespace(React);\n\nconst ensurePreventErrorBoundaryRetry = (options, errorResetBoundary) => {\n if (options.suspense || options.useErrorBoundary) {\n // Prevent retrying failed query if the error boundary has not been reset yet\n if (!errorResetBoundary.isReset()) {\n options.retryOnMount = false;\n }\n }\n};\nconst useClearResetErrorBoundary = errorResetBoundary => {\n React__namespace.useEffect(() => {\n errorResetBoundary.clearReset();\n }, [errorResetBoundary]);\n};\nconst getHasError = ({\n result,\n errorResetBoundary,\n useErrorBoundary,\n query\n}) => {\n return result.isError && !errorResetBoundary.isReset() && !result.isFetching && utils.shouldThrowError(useErrorBoundary, [result.error, query]);\n};\n\nexports.ensurePreventErrorBoundaryRetry = ensurePreventErrorBoundaryRetry;\nexports.getHasError = getHasError;\nexports.useClearResetErrorBoundary = useClearResetErrorBoundary;\n//# sourceMappingURL=errorBoundaryUtils.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nrequire('./setBatchUpdatesFn.js');\nvar queryCore = require('@tanstack/query-core');\nvar useQueries = require('./useQueries.js');\nvar useQuery = require('./useQuery.js');\nvar QueryClientProvider = require('./QueryClientProvider.js');\nvar Hydrate = require('./Hydrate.js');\nvar QueryErrorResetBoundary = require('./QueryErrorResetBoundary.js');\nvar useIsFetching = require('./useIsFetching.js');\nvar useIsMutating = require('./useIsMutating.js');\nvar useMutation = require('./useMutation.js');\nvar useInfiniteQuery = require('./useInfiniteQuery.js');\nvar isRestoring = require('./isRestoring.js');\n\n\n\nexports.useQueries = useQueries.useQueries;\nexports.useQuery = useQuery.useQuery;\nexports.QueryClientProvider = QueryClientProvider.QueryClientProvider;\nexports.defaultContext = QueryClientProvider.defaultContext;\nexports.useQueryClient = QueryClientProvider.useQueryClient;\nexports.Hydrate = Hydrate.Hydrate;\nexports.useHydrate = Hydrate.useHydrate;\nexports.QueryErrorResetBoundary = QueryErrorResetBoundary.QueryErrorResetBoundary;\nexports.useQueryErrorResetBoundary = QueryErrorResetBoundary.useQueryErrorResetBoundary;\nexports.useIsFetching = useIsFetching.useIsFetching;\nexports.useIsMutating = useIsMutating.useIsMutating;\nexports.useMutation = useMutation.useMutation;\nexports.useInfiniteQuery = useInfiniteQuery.useInfiniteQuery;\nexports.IsRestoringProvider = isRestoring.IsRestoringProvider;\nexports.useIsRestoring = isRestoring.useIsRestoring;\nObject.keys(queryCore).forEach(function (k) {\n if (k !== 'default' && !exports.hasOwnProperty(k)) Object.defineProperty(exports, k, {\n enumerable: true,\n get: function () { return queryCore[k]; }\n });\n});\n//# sourceMappingURL=index.js.map\n","'use client';\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar React = require('react');\n\nfunction _interopNamespace(e) {\n\tif (e && e.__esModule) return e;\n\tvar n = Object.create(null);\n\tif (e) {\n\t\tObject.keys(e).forEach(function (k) {\n\t\t\tif (k !== 'default') {\n\t\t\t\tvar d = Object.getOwnPropertyDescriptor(e, k);\n\t\t\t\tObject.defineProperty(n, k, d.get ? d : {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function () { return e[k]; }\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\tn[\"default\"] = e;\n\treturn Object.freeze(n);\n}\n\nvar React__namespace = /*#__PURE__*/_interopNamespace(React);\n\nconst IsRestoringContext = /*#__PURE__*/React__namespace.createContext(false);\nconst useIsRestoring = () => React__namespace.useContext(IsRestoringContext);\nconst IsRestoringProvider = IsRestoringContext.Provider;\n\nexports.IsRestoringProvider = IsRestoringProvider;\nexports.useIsRestoring = useIsRestoring;\n//# sourceMappingURL=isRestoring.js.map\n","'use client';\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar ReactDOM = require('react-dom');\n\nfunction _interopNamespace(e) {\n\tif (e && e.__esModule) return e;\n\tvar n = Object.create(null);\n\tif (e) {\n\t\tObject.keys(e).forEach(function (k) {\n\t\t\tif (k !== 'default') {\n\t\t\t\tvar d = Object.getOwnPropertyDescriptor(e, k);\n\t\t\t\tObject.defineProperty(n, k, d.get ? d : {\n\t\t\t\t\tenumerable: true,\n\t\t\t\t\tget: function () { return e[k]; }\n\t\t\t\t});\n\t\t\t}\n\t\t});\n\t}\n\tn[\"default\"] = e;\n\treturn Object.freeze(n);\n}\n\nvar ReactDOM__namespace = /*#__PURE__*/_interopNamespace(ReactDOM);\n\nconst unstable_batchedUpdates = ReactDOM__namespace.unstable_batchedUpdates;\n\nexports.unstable_batchedUpdates = unstable_batchedUpdates;\n//# sourceMappingURL=reactBatchedUpdates.js.map\n","'use strict';\n\nvar queryCore = require('@tanstack/query-core');\nvar reactBatchedUpdates = require('./reactBatchedUpdates');\n\nqueryCore.notifyManager.setBatchNotifyFunction(reactBatchedUpdates.unstable_batchedUpdates);\n//# sourceMappingURL=setBatchUpdatesFn.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nconst ensureStaleTime = defaultedOptions => {\n if (defaultedOptions.suspense) {\n // Always set stale time when using suspense to prevent\n // fetching again when directly mounting after suspending\n if (typeof defaultedOptions.staleTime !== 'number') {\n defaultedOptions.staleTime = 1000;\n }\n }\n};\nconst willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;\nconst shouldSuspend = (defaultedOptions, result, isRestoring) => (defaultedOptions == null ? void 0 : defaultedOptions.suspense) && willFetch(result, isRestoring);\nconst fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).then(({\n data\n}) => {\n defaultedOptions.onSuccess == null ? void 0 : defaultedOptions.onSuccess(data);\n defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(data, null);\n}).catch(error => {\n errorResetBoundary.clearReset();\n defaultedOptions.onError == null ? void 0 : defaultedOptions.onError(error);\n defaultedOptions.onSettled == null ? void 0 : defaultedOptions.onSettled(undefined, error);\n});\n\nexports.ensureStaleTime = ensureStaleTime;\nexports.fetchOptimistic = fetchOptimistic;\nexports.shouldSuspend = shouldSuspend;\nexports.willFetch = willFetch;\n//# sourceMappingURL=suspense.js.map\n","'use client';\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar React = require('react');\nvar useSyncExternalStore = require('./useSyncExternalStore');\nvar queryCore = require('@tanstack/query-core');\nvar QueryErrorResetBoundary = require('./QueryErrorResetBoundary.js');\nvar QueryClientProvider = require('./QueryClientProvider.js');\nvar isRestoring = require('./isRestoring.js');\nvar errorBoundaryUtils = require('./errorBoundaryUtils.js');\nvar suspense = require('./suspense.js');\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar React__namespace = /*#__PURE__*/_interopNamespace(React);\n\nfunction useBaseQuery(options, Observer) {\n const queryClient = QueryClientProvider.useQueryClient({\n context: options.context\n });\n const isRestoring$1 = isRestoring.useIsRestoring();\n const errorResetBoundary = QueryErrorResetBoundary.useQueryErrorResetBoundary();\n const defaultedOptions = queryClient.defaultQueryOptions(options); // Make sure results are optimistically set in fetching state before subscribing or updating options\n\n defaultedOptions._optimisticResults = isRestoring$1 ? 'isRestoring' : 'optimistic'; // Include callbacks in batch renders\n\n if (defaultedOptions.onError) {\n defaultedOptions.onError = queryCore.notifyManager.batchCalls(defaultedOptions.onError);\n }\n\n if (defaultedOptions.onSuccess) {\n defaultedOptions.onSuccess = queryCore.notifyManager.batchCalls(defaultedOptions.onSuccess);\n }\n\n if (defaultedOptions.onSettled) {\n defaultedOptions.onSettled = queryCore.notifyManager.batchCalls(defaultedOptions.onSettled);\n }\n\n suspense.ensureStaleTime(defaultedOptions);\n errorBoundaryUtils.ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary);\n errorBoundaryUtils.useClearResetErrorBoundary(errorResetBoundary);\n const [observer] = React__namespace.useState(() => new Observer(queryClient, defaultedOptions));\n const result = observer.getOptimisticResult(defaultedOptions);\n useSyncExternalStore.useSyncExternalStore(React__namespace.useCallback(onStoreChange => isRestoring$1 ? () => undefined : observer.subscribe(queryCore.notifyManager.batchCalls(onStoreChange)), [observer, isRestoring$1]), () => observer.getCurrentResult(), () => observer.getCurrentResult());\n React__namespace.useEffect(() => {\n // Do not notify on updates because of changes in the options because\n // these changes should already be reflected in the optimistic result.\n observer.setOptions(defaultedOptions, {\n listeners: false\n });\n }, [defaultedOptions, observer]); // Handle suspense\n\n if (suspense.shouldSuspend(defaultedOptions, result, isRestoring$1)) {\n throw suspense.fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n } // Handle error boundary\n\n\n if (errorBoundaryUtils.getHasError({\n result,\n errorResetBoundary,\n useErrorBoundary: defaultedOptions.useErrorBoundary,\n query: observer.getCurrentQuery()\n })) {\n throw result.error;\n } // Handle result property usage tracking\n\n\n return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\n\nexports.useBaseQuery = useBaseQuery;\n//# sourceMappingURL=useBaseQuery.js.map\n","'use client';\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar queryCore = require('@tanstack/query-core');\nvar useBaseQuery = require('./useBaseQuery.js');\n\nfunction useInfiniteQuery(arg1, arg2, arg3) {\n const options = queryCore.parseQueryArgs(arg1, arg2, arg3);\n return useBaseQuery.useBaseQuery(options, queryCore.InfiniteQueryObserver);\n}\n\nexports.useInfiniteQuery = useInfiniteQuery;\n//# sourceMappingURL=useInfiniteQuery.js.map\n","'use client';\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar React = require('react');\nvar queryCore = require('@tanstack/query-core');\nvar useSyncExternalStore = require('./useSyncExternalStore');\nvar QueryClientProvider = require('./QueryClientProvider.js');\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar React__namespace = /*#__PURE__*/_interopNamespace(React);\n\nfunction useIsFetching(arg1, arg2, arg3) {\n const [filters, options = {}] = queryCore.parseFilterArgs(arg1, arg2, arg3);\n const queryClient = QueryClientProvider.useQueryClient({\n context: options.context\n });\n const queryCache = queryClient.getQueryCache();\n return useSyncExternalStore.useSyncExternalStore(React__namespace.useCallback(onStoreChange => queryCache.subscribe(queryCore.notifyManager.batchCalls(onStoreChange)), [queryCache]), () => queryClient.isFetching(filters), () => queryClient.isFetching(filters));\n}\n\nexports.useIsFetching = useIsFetching;\n//# sourceMappingURL=useIsFetching.js.map\n","'use client';\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar React = require('react');\nvar useSyncExternalStore = require('./useSyncExternalStore');\nvar queryCore = require('@tanstack/query-core');\nvar QueryClientProvider = require('./QueryClientProvider.js');\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar React__namespace = /*#__PURE__*/_interopNamespace(React);\n\nfunction useIsMutating(arg1, arg2, arg3) {\n const [filters, options = {}] = queryCore.parseMutationFilterArgs(arg1, arg2, arg3);\n const queryClient = QueryClientProvider.useQueryClient({\n context: options.context\n });\n const mutationCache = queryClient.getMutationCache();\n return useSyncExternalStore.useSyncExternalStore(React__namespace.useCallback(onStoreChange => mutationCache.subscribe(queryCore.notifyManager.batchCalls(onStoreChange)), [mutationCache]), () => queryClient.isMutating(filters), () => queryClient.isMutating(filters));\n}\n\nexports.useIsMutating = useIsMutating;\n//# sourceMappingURL=useIsMutating.js.map\n","'use client';\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar React = require('react');\nvar useSyncExternalStore = require('./useSyncExternalStore');\nvar queryCore = require('@tanstack/query-core');\nvar QueryClientProvider = require('./QueryClientProvider.js');\nvar utils = require('./utils.js');\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar React__namespace = /*#__PURE__*/_interopNamespace(React);\n\nfunction useMutation(arg1, arg2, arg3) {\n const options = queryCore.parseMutationArgs(arg1, arg2, arg3);\n const queryClient = QueryClientProvider.useQueryClient({\n context: options.context\n });\n const [observer] = React__namespace.useState(() => new queryCore.MutationObserver(queryClient, options));\n React__namespace.useEffect(() => {\n observer.setOptions(options);\n }, [observer, options]);\n const result = useSyncExternalStore.useSyncExternalStore(React__namespace.useCallback(onStoreChange => observer.subscribe(queryCore.notifyManager.batchCalls(onStoreChange)), [observer]), () => observer.getCurrentResult(), () => observer.getCurrentResult());\n const mutate = React__namespace.useCallback((variables, mutateOptions) => {\n observer.mutate(variables, mutateOptions).catch(noop);\n }, [observer]);\n\n if (result.error && utils.shouldThrowError(observer.options.useErrorBoundary, [result.error])) {\n throw result.error;\n }\n\n return { ...result,\n mutate,\n mutateAsync: result.mutate\n };\n} // eslint-disable-next-line @typescript-eslint/no-empty-function\n\nfunction noop() {}\n\nexports.useMutation = useMutation;\n//# sourceMappingURL=useMutation.js.map\n","'use client';\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar React = require('react');\nvar useSyncExternalStore = require('./useSyncExternalStore');\nvar queryCore = require('@tanstack/query-core');\nvar QueryClientProvider = require('./QueryClientProvider.js');\nvar isRestoring = require('./isRestoring.js');\nvar QueryErrorResetBoundary = require('./QueryErrorResetBoundary.js');\nvar errorBoundaryUtils = require('./errorBoundaryUtils.js');\nvar suspense = require('./suspense.js');\n\nfunction _interopNamespace(e) {\n if (e && e.__esModule) return e;\n var n = Object.create(null);\n if (e) {\n Object.keys(e).forEach(function (k) {\n if (k !== 'default') {\n var d = Object.getOwnPropertyDescriptor(e, k);\n Object.defineProperty(n, k, d.get ? d : {\n enumerable: true,\n get: function () { return e[k]; }\n });\n }\n });\n }\n n[\"default\"] = e;\n return Object.freeze(n);\n}\n\nvar React__namespace = /*#__PURE__*/_interopNamespace(React);\n\n// - `context` is omitted as it is passed as a root-level option to `useQueries` instead.\n\nfunction useQueries({\n queries,\n context\n}) {\n const queryClient = QueryClientProvider.useQueryClient({\n context\n });\n const isRestoring$1 = isRestoring.useIsRestoring();\n const errorResetBoundary = QueryErrorResetBoundary.useQueryErrorResetBoundary();\n const defaultedQueries = React__namespace.useMemo(() => queries.map(options => {\n const defaultedOptions = queryClient.defaultQueryOptions(options); // Make sure the results are already in fetching state before subscribing or updating options\n\n defaultedOptions._optimisticResults = isRestoring$1 ? 'isRestoring' : 'optimistic';\n return defaultedOptions;\n }), [queries, queryClient, isRestoring$1]);\n defaultedQueries.forEach(query => {\n suspense.ensureStaleTime(query);\n errorBoundaryUtils.ensurePreventErrorBoundaryRetry(query, errorResetBoundary);\n });\n errorBoundaryUtils.useClearResetErrorBoundary(errorResetBoundary);\n const [observer] = React__namespace.useState(() => new queryCore.QueriesObserver(queryClient, defaultedQueries));\n const optimisticResult = observer.getOptimisticResult(defaultedQueries);\n useSyncExternalStore.useSyncExternalStore(React__namespace.useCallback(onStoreChange => isRestoring$1 ? () => undefined : observer.subscribe(queryCore.notifyManager.batchCalls(onStoreChange)), [observer, isRestoring$1]), () => observer.getCurrentResult(), () => observer.getCurrentResult());\n React__namespace.useEffect(() => {\n // Do not notify on updates because of changes in the options because\n // these changes should already be reflected in the optimistic result.\n observer.setQueries(defaultedQueries, {\n listeners: false\n });\n }, [defaultedQueries, observer]);\n const shouldAtLeastOneSuspend = optimisticResult.some((result, index) => suspense.shouldSuspend(defaultedQueries[index], result, isRestoring$1));\n const suspensePromises = shouldAtLeastOneSuspend ? optimisticResult.flatMap((result, index) => {\n const options = defaultedQueries[index];\n const queryObserver = observer.getObservers()[index];\n\n if (options && queryObserver) {\n if (suspense.shouldSuspend(options, result, isRestoring$1)) {\n return suspense.fetchOptimistic(options, queryObserver, errorResetBoundary);\n } else if (suspense.willFetch(result, isRestoring$1)) {\n void suspense.fetchOptimistic(options, queryObserver, errorResetBoundary);\n }\n }\n\n return [];\n }) : [];\n\n if (suspensePromises.length > 0) {\n throw Promise.all(suspensePromises);\n }\n\n const observerQueries = observer.getQueries();\n const firstSingleResultWhichShouldThrow = optimisticResult.find((result, index) => {\n var _defaultedQueries$ind, _defaultedQueries$ind2;\n\n return errorBoundaryUtils.getHasError({\n result,\n errorResetBoundary,\n useErrorBoundary: (_defaultedQueries$ind = (_defaultedQueries$ind2 = defaultedQueries[index]) == null ? void 0 : _defaultedQueries$ind2.useErrorBoundary) != null ? _defaultedQueries$ind : false,\n query: observerQueries[index]\n });\n });\n\n if (firstSingleResultWhichShouldThrow != null && firstSingleResultWhichShouldThrow.error) {\n throw firstSingleResultWhichShouldThrow.error;\n }\n\n return optimisticResult;\n}\n\nexports.useQueries = useQueries;\n//# sourceMappingURL=useQueries.js.map\n","'use client';\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar queryCore = require('@tanstack/query-core');\nvar useBaseQuery = require('./useBaseQuery.js');\n\nfunction useQuery(arg1, arg2, arg3) {\n const parsedOptions = queryCore.parseQueryArgs(arg1, arg2, arg3);\n return useBaseQuery.useBaseQuery(parsedOptions, queryCore.QueryObserver);\n}\n\nexports.useQuery = useQuery;\n//# sourceMappingURL=useQuery.js.map\n","'use client';\n'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar index_js = require('use-sync-external-store/shim/index.js');\n\nconst useSyncExternalStore = index_js.useSyncExternalStore;\n\nexports.useSyncExternalStore = useSyncExternalStore;\n//# sourceMappingURL=useSyncExternalStore.js.map\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nfunction shouldThrowError(_useErrorBoundary, params) {\n // Allow useErrorBoundary function to override throwing behavior on a per-error basis\n if (typeof _useErrorBoundary === 'function') {\n return _useErrorBoundary(...params);\n }\n\n return !!_useErrorBoundary;\n}\n\nexports.shouldThrowError = shouldThrowError;\n//# sourceMappingURL=utils.js.map\n","// ColorCodes explained: http://www.termsys.demon.co.uk/vtansi.htm\n'use strict';\n\nvar colorNums = {\n white : 37\n , black : 30\n , blue : 34\n , cyan : 36\n , green : 32\n , magenta : 35\n , red : 31\n , yellow : 33\n , brightBlack : 90\n , brightRed : 91\n , brightGreen : 92\n , brightYellow : 93\n , brightBlue : 94\n , brightMagenta : 95\n , brightCyan : 96\n , brightWhite : 97\n }\n , backgroundColorNums = {\n bgBlack : 40\n , bgRed : 41\n , bgGreen : 42\n , bgYellow : 43\n , bgBlue : 44\n , bgMagenta : 45\n , bgCyan : 46\n , bgWhite : 47\n , bgBrightBlack : 100\n , bgBrightRed : 101\n , bgBrightGreen : 102\n , bgBrightYellow : 103\n , bgBrightBlue : 104\n , bgBrightMagenta : 105\n , bgBrightCyan : 106\n , bgBrightWhite : 107\n } \n , open = {}\n , close = {}\n , colors = {}\n ;\n\nObject.keys(colorNums).forEach(function (k) {\n var o = open[k] = '\\u001b[' + colorNums[k] + 'm';\n var c = close[k] = '\\u001b[39m';\n\n colors[k] = function (s) { \n return o + s + c;\n };\n});\n\nObject.keys(backgroundColorNums).forEach(function (k) {\n var o = open[k] = '\\u001b[' + backgroundColorNums[k] + 'm';\n var c = close[k] = '\\u001b[49m';\n\n colors[k] = function (s) { \n return o + s + c;\n };\n});\n\nmodule.exports = colors;\ncolors.open = open;\ncolors.close = close;\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (source instanceof Uint8Array) {\n } else if (ArrayBuffer.isView(source)) {\n source = new Uint8Array(source.buffer, source.byteOffset, source.byteLength)\n } else if (Array.isArray(source)) {\n source = Uint8Array.from(source)\n }\n if (!(source instanceof Uint8Array)) { throw new TypeError('Expected Uint8Array') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return new Uint8Array() }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = new Uint8Array(zeroes + (size - it4))\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","/*\r\n * big.js v5.2.2\r\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\r\n * Copyright (c) 2018 Michael Mclaughlin \r\n * https://github.com/MikeMcl/big.js/LICENCE\r\n */\r\n;(function (GLOBAL) {\r\n 'use strict';\r\n var Big,\r\n\r\n\r\n/************************************** EDITABLE DEFAULTS *****************************************/\r\n\r\n\r\n // The default values below must be integers within the stated ranges.\r\n\r\n /*\r\n * The maximum number of decimal places (DP) of the results of operations involving division:\r\n * div and sqrt, and pow with negative exponents.\r\n */\r\n DP = 20, // 0 to MAX_DP\r\n\r\n /*\r\n * The rounding mode (RM) used when rounding to the above decimal places.\r\n *\r\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\r\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\r\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\r\n * 3 Away from zero. (ROUND_UP)\r\n */\r\n RM = 1, // 0, 1, 2 or 3\r\n\r\n // The maximum value of DP and Big.DP.\r\n MAX_DP = 1E6, // 0 to 1000000\r\n\r\n // The maximum magnitude of the exponent argument to the pow method.\r\n MAX_POWER = 1E6, // 1 to 1000000\r\n\r\n /*\r\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\r\n * (JavaScript numbers: -7)\r\n * -1000000 is the minimum recommended exponent value of a Big.\r\n */\r\n NE = -7, // 0 to -1000000\r\n\r\n /*\r\n * The positive exponent (PE) at and above which toString returns exponential notation.\r\n * (JavaScript numbers: 21)\r\n * 1000000 is the maximum recommended exponent value of a Big.\r\n * (This limit is not enforced or checked.)\r\n */\r\n PE = 21, // 0 to 1000000\r\n\r\n\r\n/**************************************************************************************************/\r\n\r\n\r\n // Error messages.\r\n NAME = '[big.js] ',\r\n INVALID = NAME + 'Invalid ',\r\n INVALID_DP = INVALID + 'decimal places',\r\n INVALID_RM = INVALID + 'rounding mode',\r\n DIV_BY_ZERO = NAME + 'Division by zero',\r\n\r\n // The shared prototype object.\r\n P = {},\r\n UNDEFINED = void 0,\r\n NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\r\n\r\n\r\n /*\r\n * Create and return a Big constructor.\r\n *\r\n */\r\n function _Big_() {\r\n\r\n /*\r\n * The Big constructor and exported function.\r\n * Create and return a new instance of a Big number object.\r\n *\r\n * n {number|string|Big} A numeric value.\r\n */\r\n function Big(n) {\r\n var x = this;\r\n\r\n // Enable constructor usage without new.\r\n if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n);\r\n\r\n // Duplicate.\r\n if (n instanceof Big) {\r\n x.s = n.s;\r\n x.e = n.e;\r\n x.c = n.c.slice();\r\n } else {\r\n parse(x, n);\r\n }\r\n\r\n /*\r\n * Retain a reference to this Big constructor, and shadow Big.prototype.constructor which\r\n * points to Object.\r\n */\r\n x.constructor = Big;\r\n }\r\n\r\n Big.prototype = P;\r\n Big.DP = DP;\r\n Big.RM = RM;\r\n Big.NE = NE;\r\n Big.PE = PE;\r\n Big.version = '5.2.2';\r\n\r\n return Big;\r\n }\r\n\r\n\r\n /*\r\n * Parse the number or string value passed to a Big constructor.\r\n *\r\n * x {Big} A Big number instance.\r\n * n {number|string} A numeric value.\r\n */\r\n function parse(x, n) {\r\n var e, i, nl;\r\n\r\n // Minus zero?\r\n if (n === 0 && 1 / n < 0) n = '-0';\r\n else if (!NUMERIC.test(n += '')) throw Error(INVALID + 'number');\r\n\r\n // Determine sign.\r\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\r\n\r\n // Decimal point?\r\n if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = n.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +n.slice(i + 1);\r\n n = n.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = n.length;\r\n }\r\n\r\n nl = n.length;\r\n\r\n // Determine leading zeros.\r\n for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\r\n\r\n if (i == nl) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n\r\n // Determine trailing zeros.\r\n for (; nl > 0 && n.charAt(--nl) == '0';);\r\n x.e = e - i - 1;\r\n x.c = [];\r\n\r\n // Convert string to array of digits without leading/trailing zeros.\r\n for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Round Big x to a maximum of dp decimal places using rounding mode rm.\r\n * Called by stringify, P.div, P.round and P.sqrt.\r\n *\r\n * x {Big} The Big to round.\r\n * dp {number} Integer, 0 to MAX_DP inclusive.\r\n * rm {number} 0, 1, 2 or 3 (DOWN, HALF_UP, HALF_EVEN, UP)\r\n * [more] {boolean} Whether the result of division was truncated.\r\n */\r\n function round(x, dp, rm, more) {\r\n var xc = x.c,\r\n i = x.e + dp + 1;\r\n\r\n if (i < xc.length) {\r\n if (rm === 1) {\r\n\r\n // xc[i] is the digit after the digit that may be rounded up.\r\n more = xc[i] >= 5;\r\n } else if (rm === 2) {\r\n more = xc[i] > 5 || xc[i] == 5 &&\r\n (more || i < 0 || xc[i + 1] !== UNDEFINED || xc[i - 1] & 1);\r\n } else if (rm === 3) {\r\n more = more || !!xc[0];\r\n } else {\r\n more = false;\r\n if (rm !== 0) throw Error(INVALID_RM);\r\n }\r\n\r\n if (i < 1) {\r\n xc.length = 1;\r\n\r\n if (more) {\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n x.e = -dp;\r\n xc[0] = 1;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n } else {\r\n\r\n // Remove any digits after the required decimal places.\r\n xc.length = i--;\r\n\r\n // Round up?\r\n if (more) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up.\r\n for (; ++xc[i] > 9;) {\r\n xc[i] = 0;\r\n if (!i--) {\r\n ++x.e;\r\n xc.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; !xc[--i];) xc.pop();\r\n }\r\n } else if (rm < 0 || rm > 3 || rm !== ~~rm) {\r\n throw Error(INVALID_RM);\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Return a string representing the value of Big x in normal or exponential notation.\r\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\r\n *\r\n * x {Big}\r\n * id? {number} Caller id.\r\n * 1 toExponential\r\n * 2 toFixed\r\n * 3 toPrecision\r\n * 4 valueOf\r\n * n? {number|undefined} Caller's argument.\r\n * k? {number|undefined}\r\n */\r\n function stringify(x, id, n, k) {\r\n var e, s,\r\n Big = x.constructor,\r\n z = !x.c[0];\r\n\r\n if (n !== UNDEFINED) {\r\n if (n !== ~~n || n < (id == 3) || n > MAX_DP) {\r\n throw Error(id == 3 ? INVALID + 'precision' : INVALID_DP);\r\n }\r\n\r\n x = new Big(x);\r\n\r\n // The index of the digit that may be rounded up.\r\n n = k - x.e;\r\n\r\n // Round?\r\n if (x.c.length > ++k) round(x, n, Big.RM);\r\n\r\n // toFixed: recalculate k as x.e may have changed if value rounded up.\r\n if (id == 2) k = x.e + n + 1;\r\n\r\n // Append zeros?\r\n for (; x.c.length < k;) x.c.push(0);\r\n }\r\n\r\n e = x.e;\r\n s = x.c.join('');\r\n n = s.length;\r\n\r\n // Exponential notation?\r\n if (id != 2 && (id == 1 || id == 3 && k <= e || e <= Big.NE || e >= Big.PE)) {\r\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\r\n\r\n // Normal notation.\r\n } else if (e < 0) {\r\n for (; ++e;) s = '0' + s;\r\n s = '0.' + s;\r\n } else if (e > 0) {\r\n if (++e > n) for (e -= n; e--;) s += '0';\r\n else if (e < n) s = s.slice(0, e) + '.' + s.slice(e);\r\n } else if (n > 1) {\r\n s = s.charAt(0) + '.' + s.slice(1);\r\n }\r\n\r\n return x.s < 0 && (!z || id == 4) ? '-' + s : s;\r\n }\r\n\r\n\r\n // Prototype/instance methods\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the absolute value of this Big.\r\n */\r\n P.abs = function () {\r\n var x = new this.constructor(this);\r\n x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return 1 if the value of this Big is greater than the value of Big y,\r\n * -1 if the value of this Big is less than the value of Big y, or\r\n * 0 if they have the same value.\r\n */\r\n P.cmp = function (y) {\r\n var isneg,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new x.constructor(y)).c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n isneg = i < 0;\r\n\r\n // Compare exponents.\r\n if (k != l) return k > l ^ isneg ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = -1; ++i < j;) {\r\n if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ isneg ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\r\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\n P.div = function (y) {\r\n var x = this,\r\n Big = x.constructor,\r\n a = x.c, // dividend\r\n b = (y = new Big(y)).c, // divisor\r\n k = x.s == y.s ? 1 : -1,\r\n dp = Big.DP;\r\n\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) throw Error(INVALID_DP);\r\n\r\n // Divisor is zero?\r\n if (!b[0]) throw Error(DIV_BY_ZERO);\r\n\r\n // Dividend is 0? Return +-0.\r\n if (!a[0]) return new Big(k * 0);\r\n\r\n var bl, bt, n, cmp, ri,\r\n bz = b.slice(),\r\n ai = bl = b.length,\r\n al = a.length,\r\n r = a.slice(0, bl), // remainder\r\n rl = r.length,\r\n q = y, // quotient\r\n qc = q.c = [],\r\n qi = 0,\r\n d = dp + (q.e = x.e - y.e) + 1; // number of digits of the result\r\n\r\n q.s = k;\r\n k = d < 0 ? 0 : d;\r\n\r\n // Create version of divisor with leading zero.\r\n bz.unshift(0);\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; rl++ < bl;) r.push(0);\r\n\r\n do {\r\n\r\n // n is how many times the divisor goes into current remainder.\r\n for (n = 0; n < 10; n++) {\r\n\r\n // Compare divisor and remainder.\r\n if (bl != (rl = r.length)) {\r\n cmp = bl > rl ? 1 : -1;\r\n } else {\r\n for (ri = -1, cmp = 0; ++ri < bl;) {\r\n if (b[ri] != r[ri]) {\r\n cmp = b[ri] > r[ri] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // If divisor < remainder, subtract divisor from remainder.\r\n if (cmp < 0) {\r\n\r\n // Remainder can't be more than 1 digit longer than divisor.\r\n // Equalise lengths using divisor with extra leading zero?\r\n for (bt = rl == bl ? b : bz; rl;) {\r\n if (r[--rl] < bt[rl]) {\r\n ri = rl;\r\n for (; ri && !r[--ri];) r[ri] = 9;\r\n --r[ri];\r\n r[rl] += 10;\r\n }\r\n r[rl] -= bt[rl];\r\n }\r\n\r\n for (; !r[0];) r.shift();\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // Add the digit n to the result array.\r\n qc[qi++] = cmp ? n : ++n;\r\n\r\n // Update the remainder.\r\n if (r[0] && cmp) r[rl] = a[ai] || 0;\r\n else r = [a[ai]];\r\n\r\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\r\n\r\n // Leading zero? Do not remove if result is simply zero (qi == 1).\r\n if (!qc[0] && qi != 1) {\r\n\r\n // There can't be more than one zero.\r\n qc.shift();\r\n q.e--;\r\n }\r\n\r\n // Round?\r\n if (qi > d) round(q, dp, Big.RM, r[0] !== UNDEFINED);\r\n\r\n return q;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\r\n */\r\n P.eq = function (y) {\r\n return !this.cmp(y);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\r\n * false.\r\n */\r\n P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\n P.gte = function (y) {\r\n return this.cmp(y) > -1;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\r\n */\r\n P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is less than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\n P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big minus the value of Big y.\r\n */\r\n P.minus = P.sub = function (y) {\r\n var i, j, t, xlty,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xc = x.c.slice(),\r\n xe = x.e,\r\n yc = y.c,\r\n ye = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // y is non-zero? x is non-zero? Or both are zero.\r\n return yc[0] ? (y.s = -b, y) : new Big(xc[0] ? x : 0);\r\n }\r\n\r\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\r\n if (a = xe - ye) {\r\n\r\n if (xlty = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n for (b = a; b--;) t.push(0);\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n if (xc[b] != yc[b]) {\r\n xlty = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xlty) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n /*\r\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\r\n * needs to start at yc.length.\r\n */\r\n if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0;\r\n\r\n // Subtract yc from xc.\r\n for (b = i; j > a;) {\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i];) xc[i] = 9;\r\n --xc[i];\r\n xc[j] += 10;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--b] === 0;) xc.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] === 0;) {\r\n xc.shift();\r\n --ye;\r\n }\r\n\r\n if (!xc[0]) {\r\n\r\n // n - n = +0\r\n y.s = 1;\r\n\r\n // Result must be zero.\r\n xc = [ye = 0];\r\n }\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\r\n */\r\n P.mod = function (y) {\r\n var ygtx,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n if (!y.c[0]) throw Error(DIV_BY_ZERO);\r\n\r\n x.s = y.s = 1;\r\n ygtx = y.cmp(x) == 1;\r\n x.s = a;\r\n y.s = b;\r\n\r\n if (ygtx) return new Big(x);\r\n\r\n a = Big.DP;\r\n b = Big.RM;\r\n Big.DP = Big.RM = 0;\r\n x = x.div(y);\r\n Big.DP = a;\r\n Big.RM = b;\r\n\r\n return this.minus(x.times(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big plus the value of Big y.\r\n */\r\n P.plus = P.add = function (y) {\r\n var t,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e,\r\n xc = x.c,\r\n ye = y.e,\r\n yc = y.c;\r\n\r\n // Either zero? y is non-zero? x is non-zero? Or both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new Big(xc[0] ? x : a * 0);\r\n\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents.\r\n // Note: reverse faster than unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--;) t.push(0);\r\n t.reverse();\r\n }\r\n\r\n // Point xc to the longer array.\r\n if (xc.length - yc.length < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n }\r\n\r\n a = yc.length;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\r\n for (b = 0; a; xc[a] %= 10) b = (xc[--a] = xc[a] + yc[a] + b) / 10 | 0;\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n\r\n if (b) {\r\n xc.unshift(b);\r\n ++ye;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (a = xc.length; xc[--a] === 0;) xc.pop();\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a Big whose value is the value of this Big raised to the power n.\r\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\r\n * mode Big.RM.\r\n *\r\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\r\n */\r\n P.pow = function (n) {\r\n var x = this,\r\n one = new x.constructor(1),\r\n y = one,\r\n isneg = n < 0;\r\n\r\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) throw Error(INVALID + 'exponent');\r\n if (isneg) n = -n;\r\n\r\n for (;;) {\r\n if (n & 1) y = y.times(x);\r\n n >>= 1;\r\n if (!n) break;\r\n x = x.times(x);\r\n }\r\n\r\n return isneg ? one.div(y) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big rounded using rounding mode rm\r\n * to a maximum of dp decimal places, or, if dp is negative, to an integer which is a\r\n * multiple of 10**-dp.\r\n * If dp is not specified, round to 0 decimal places.\r\n * If rm is not specified, use Big.RM.\r\n *\r\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\r\n * rm? 0, 1, 2 or 3 (ROUND_DOWN, ROUND_HALF_UP, ROUND_HALF_EVEN, ROUND_UP)\r\n */\r\n P.round = function (dp, rm) {\r\n var Big = this.constructor;\r\n if (dp === UNDEFINED) dp = 0;\r\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) throw Error(INVALID_DP);\r\n return round(new Big(this), dp, rm === UNDEFINED ? Big.RM : rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\r\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\n P.sqrt = function () {\r\n var r, c, t,\r\n x = this,\r\n Big = x.constructor,\r\n s = x.s,\r\n e = x.e,\r\n half = new Big(0.5);\r\n\r\n // Zero?\r\n if (!x.c[0]) return new Big(x);\r\n\r\n // Negative?\r\n if (s < 0) throw Error(NAME + 'No square root');\r\n\r\n // Estimate.\r\n s = Math.sqrt(x + '');\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\r\n if (s === 0 || s === 1 / 0) {\r\n c = x.c.join('');\r\n if (!(c.length + e & 1)) c += '0';\r\n s = Math.sqrt(c);\r\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\r\n r = new Big((s == 1 / 0 ? '1e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\r\n } else {\r\n r = new Big(s);\r\n }\r\n\r\n e = r.e + (Big.DP += 4);\r\n\r\n // Newton-Raphson iteration.\r\n do {\r\n t = r;\r\n r = half.times(t.plus(x.div(t)));\r\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\r\n\r\n return round(r, Big.DP -= 4, Big.RM);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big times the value of Big y.\r\n */\r\n P.times = P.mul = function (y) {\r\n var c,\r\n x = this,\r\n Big = x.constructor,\r\n xc = x.c,\r\n yc = (y = new Big(y)).c,\r\n a = xc.length,\r\n b = yc.length,\r\n i = x.e,\r\n j = y.e;\r\n\r\n // Determine sign of result.\r\n y.s = x.s == y.s ? 1 : -1;\r\n\r\n // Return signed 0 if either 0.\r\n if (!xc[0] || !yc[0]) return new Big(y.s * 0);\r\n\r\n // Initialise exponent of result as x.e + y.e.\r\n y.e = i + j;\r\n\r\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\r\n if (a < b) {\r\n c = xc;\r\n xc = yc;\r\n yc = c;\r\n j = a;\r\n a = b;\r\n b = j;\r\n }\r\n\r\n // Initialise coefficient array of result with zeros.\r\n for (c = new Array(j = a + b); j--;) c[j] = 0;\r\n\r\n // Multiply.\r\n\r\n // i is initially xc.length.\r\n for (i = b; i--;) {\r\n b = 0;\r\n\r\n // a is yc.length.\r\n for (j = a + i; j > i;) {\r\n\r\n // Current sum of products at this digit position, plus carry.\r\n b = c[j] + yc[i] * xc[j - i - 1] + b;\r\n c[j--] = b % 10;\r\n\r\n // carry\r\n b = b / 10 | 0;\r\n }\r\n\r\n c[j] = (c[j] + b) % 10;\r\n }\r\n\r\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\r\n if (b) ++y.e;\r\n else c.shift();\r\n\r\n // Remove trailing zeros.\r\n for (i = c.length; !c[--i];) c.pop();\r\n y.c = c;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big in exponential notation to dp fixed decimal\r\n * places and rounded using Big.RM.\r\n *\r\n * dp? {number} Integer, 0 to MAX_DP inclusive.\r\n */\r\n P.toExponential = function (dp) {\r\n return stringify(this, 1, dp, dp);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big in normal notation to dp fixed decimal\r\n * places and rounded using Big.RM.\r\n *\r\n * dp? {number} Integer, 0 to MAX_DP inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n */\r\n P.toFixed = function (dp) {\r\n return stringify(this, 2, dp, this.e + dp);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big rounded to sd significant digits using\r\n * Big.RM. Use exponential notation if sd is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * sd {number} Integer, 1 to MAX_DP inclusive.\r\n */\r\n P.toPrecision = function (sd) {\r\n return stringify(this, 3, sd, sd - 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Omit the sign for negative zero.\r\n */\r\n P.toString = function () {\r\n return stringify(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Include the sign for negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return stringify(this, 4);\r\n };\r\n\r\n\r\n // Export\r\n\r\n\r\n Big = _Big_();\r\n\r\n Big['default'] = Big.Big = Big;\r\n\r\n //AMD.\r\n if (typeof define === 'function' && define.amd) {\r\n define(function () { return Big; });\r\n\r\n // Node and other CommonJS-like environments that support module.exports.\r\n } else if (typeof module !== 'undefined' && module.exports) {\r\n module.exports = Big;\r\n\r\n //Browser.\r\n } else {\r\n GLOBAL.Big = Big;\r\n }\r\n})(this);\r\n","/*\r\n * big.js v6.2.1\r\n * A small, fast, easy-to-use library for arbitrary-precision decimal arithmetic.\r\n * Copyright (c) 2022 Michael Mclaughlin\r\n * https://github.com/MikeMcl/big.js/LICENCE.md\r\n */\r\n;(function (GLOBAL) {\r\n 'use strict';\r\n var Big,\r\n\r\n\r\n/************************************** EDITABLE DEFAULTS *****************************************/\r\n\r\n\r\n // The default values below must be integers within the stated ranges.\r\n\r\n /*\r\n * The maximum number of decimal places (DP) of the results of operations involving division:\r\n * div and sqrt, and pow with negative exponents.\r\n */\r\n DP = 20, // 0 to MAX_DP\r\n\r\n /*\r\n * The rounding mode (RM) used when rounding to the above decimal places.\r\n *\r\n * 0 Towards zero (i.e. truncate, no rounding). (ROUND_DOWN)\r\n * 1 To nearest neighbour. If equidistant, round up. (ROUND_HALF_UP)\r\n * 2 To nearest neighbour. If equidistant, to even. (ROUND_HALF_EVEN)\r\n * 3 Away from zero. (ROUND_UP)\r\n */\r\n RM = 1, // 0, 1, 2 or 3\r\n\r\n // The maximum value of DP and Big.DP.\r\n MAX_DP = 1E6, // 0 to 1000000\r\n\r\n // The maximum magnitude of the exponent argument to the pow method.\r\n MAX_POWER = 1E6, // 1 to 1000000\r\n\r\n /*\r\n * The negative exponent (NE) at and beneath which toString returns exponential notation.\r\n * (JavaScript numbers: -7)\r\n * -1000000 is the minimum recommended exponent value of a Big.\r\n */\r\n NE = -7, // 0 to -1000000\r\n\r\n /*\r\n * The positive exponent (PE) at and above which toString returns exponential notation.\r\n * (JavaScript numbers: 21)\r\n * 1000000 is the maximum recommended exponent value of a Big, but this limit is not enforced.\r\n */\r\n PE = 21, // 0 to 1000000\r\n\r\n /*\r\n * When true, an error will be thrown if a primitive number is passed to the Big constructor,\r\n * or if valueOf is called, or if toNumber is called on a Big which cannot be converted to a\r\n * primitive number without a loss of precision.\r\n */\r\n STRICT = false, // true or false\r\n\r\n\r\n/**************************************************************************************************/\r\n\r\n\r\n // Error messages.\r\n NAME = '[big.js] ',\r\n INVALID = NAME + 'Invalid ',\r\n INVALID_DP = INVALID + 'decimal places',\r\n INVALID_RM = INVALID + 'rounding mode',\r\n DIV_BY_ZERO = NAME + 'Division by zero',\r\n\r\n // The shared prototype object.\r\n P = {},\r\n UNDEFINED = void 0,\r\n NUMERIC = /^-?(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i;\r\n\r\n\r\n /*\r\n * Create and return a Big constructor.\r\n */\r\n function _Big_() {\r\n\r\n /*\r\n * The Big constructor and exported function.\r\n * Create and return a new instance of a Big number object.\r\n *\r\n * n {number|string|Big} A numeric value.\r\n */\r\n function Big(n) {\r\n var x = this;\r\n\r\n // Enable constructor usage without new.\r\n if (!(x instanceof Big)) return n === UNDEFINED ? _Big_() : new Big(n);\r\n\r\n // Duplicate.\r\n if (n instanceof Big) {\r\n x.s = n.s;\r\n x.e = n.e;\r\n x.c = n.c.slice();\r\n } else {\r\n if (typeof n !== 'string') {\r\n if (Big.strict === true && typeof n !== 'bigint') {\r\n throw TypeError(INVALID + 'value');\r\n }\r\n\r\n // Minus zero?\r\n n = n === 0 && 1 / n < 0 ? '-0' : String(n);\r\n }\r\n\r\n parse(x, n);\r\n }\r\n\r\n // Retain a reference to this Big constructor.\r\n // Shadow Big.prototype.constructor which points to Object.\r\n x.constructor = Big;\r\n }\r\n\r\n Big.prototype = P;\r\n Big.DP = DP;\r\n Big.RM = RM;\r\n Big.NE = NE;\r\n Big.PE = PE;\r\n Big.strict = STRICT;\r\n Big.roundDown = 0;\r\n Big.roundHalfUp = 1;\r\n Big.roundHalfEven = 2;\r\n Big.roundUp = 3;\r\n\r\n return Big;\r\n }\r\n\r\n\r\n /*\r\n * Parse the number or string value passed to a Big constructor.\r\n *\r\n * x {Big} A Big number instance.\r\n * n {number|string} A numeric value.\r\n */\r\n function parse(x, n) {\r\n var e, i, nl;\r\n\r\n if (!NUMERIC.test(n)) {\r\n throw Error(INVALID + 'number');\r\n }\r\n\r\n // Determine sign.\r\n x.s = n.charAt(0) == '-' ? (n = n.slice(1), -1) : 1;\r\n\r\n // Decimal point?\r\n if ((e = n.indexOf('.')) > -1) n = n.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = n.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +n.slice(i + 1);\r\n n = n.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = n.length;\r\n }\r\n\r\n nl = n.length;\r\n\r\n // Determine leading zeros.\r\n for (i = 0; i < nl && n.charAt(i) == '0';) ++i;\r\n\r\n if (i == nl) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n\r\n // Determine trailing zeros.\r\n for (; nl > 0 && n.charAt(--nl) == '0';);\r\n x.e = e - i - 1;\r\n x.c = [];\r\n\r\n // Convert string to array of digits without leading/trailing zeros.\r\n for (e = 0; i <= nl;) x.c[e++] = +n.charAt(i++);\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Round Big x to a maximum of sd significant digits using rounding mode rm.\r\n *\r\n * x {Big} The Big to round.\r\n * sd {number} Significant digits: integer, 0 to MAX_DP inclusive.\r\n * rm {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n * [more] {boolean} Whether the result of division was truncated.\r\n */\r\n function round(x, sd, rm, more) {\r\n var xc = x.c;\r\n\r\n if (rm === UNDEFINED) rm = x.constructor.RM;\r\n if (rm !== 0 && rm !== 1 && rm !== 2 && rm !== 3) {\r\n throw Error(INVALID_RM);\r\n }\r\n\r\n if (sd < 1) {\r\n more =\r\n rm === 3 && (more || !!xc[0]) || sd === 0 && (\r\n rm === 1 && xc[0] >= 5 ||\r\n rm === 2 && (xc[0] > 5 || xc[0] === 5 && (more || xc[1] !== UNDEFINED))\r\n );\r\n\r\n xc.length = 1;\r\n\r\n if (more) {\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n x.e = x.e - sd + 1;\r\n xc[0] = 1;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n } else if (sd < xc.length) {\r\n\r\n // xc[sd] is the digit after the digit that may be rounded up.\r\n more =\r\n rm === 1 && xc[sd] >= 5 ||\r\n rm === 2 && (xc[sd] > 5 || xc[sd] === 5 &&\r\n (more || xc[sd + 1] !== UNDEFINED || xc[sd - 1] & 1)) ||\r\n rm === 3 && (more || !!xc[0]);\r\n\r\n // Remove any digits after the required precision.\r\n xc.length = sd;\r\n\r\n // Round up?\r\n if (more) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up.\r\n for (; ++xc[--sd] > 9;) {\r\n xc[sd] = 0;\r\n if (sd === 0) {\r\n ++x.e;\r\n xc.unshift(1);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (sd = xc.length; !xc[--sd];) xc.pop();\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Return a string representing the value of Big x in normal or exponential notation.\r\n * Handles P.toExponential, P.toFixed, P.toJSON, P.toPrecision, P.toString and P.valueOf.\r\n */\r\n function stringify(x, doExponential, isNonzero) {\r\n var e = x.e,\r\n s = x.c.join(''),\r\n n = s.length;\r\n\r\n // Exponential notation?\r\n if (doExponential) {\r\n s = s.charAt(0) + (n > 1 ? '.' + s.slice(1) : '') + (e < 0 ? 'e' : 'e+') + e;\r\n\r\n // Normal notation.\r\n } else if (e < 0) {\r\n for (; ++e;) s = '0' + s;\r\n s = '0.' + s;\r\n } else if (e > 0) {\r\n if (++e > n) {\r\n for (e -= n; e--;) s += '0';\r\n } else if (e < n) {\r\n s = s.slice(0, e) + '.' + s.slice(e);\r\n }\r\n } else if (n > 1) {\r\n s = s.charAt(0) + '.' + s.slice(1);\r\n }\r\n\r\n return x.s < 0 && isNonzero ? '-' + s : s;\r\n }\r\n\r\n\r\n // Prototype/instance methods\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the absolute value of this Big.\r\n */\r\n P.abs = function () {\r\n var x = new this.constructor(this);\r\n x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return 1 if the value of this Big is greater than the value of Big y,\r\n * -1 if the value of this Big is less than the value of Big y, or\r\n * 0 if they have the same value.\r\n */\r\n P.cmp = function (y) {\r\n var isneg,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new x.constructor(y)).c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) return !xc[0] ? !yc[0] ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n isneg = i < 0;\r\n\r\n // Compare exponents.\r\n if (k != l) return k > l ^ isneg ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = -1; ++i < j;) {\r\n if (xc[i] != yc[i]) return xc[i] > yc[i] ^ isneg ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ isneg ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big divided by the value of Big y, rounded,\r\n * if necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\n P.div = function (y) {\r\n var x = this,\r\n Big = x.constructor,\r\n a = x.c, // dividend\r\n b = (y = new Big(y)).c, // divisor\r\n k = x.s == y.s ? 1 : -1,\r\n dp = Big.DP;\r\n\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n\r\n // Divisor is zero?\r\n if (!b[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n // Dividend is 0? Return +-0.\r\n if (!a[0]) {\r\n y.s = k;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n var bl, bt, n, cmp, ri,\r\n bz = b.slice(),\r\n ai = bl = b.length,\r\n al = a.length,\r\n r = a.slice(0, bl), // remainder\r\n rl = r.length,\r\n q = y, // quotient\r\n qc = q.c = [],\r\n qi = 0,\r\n p = dp + (q.e = x.e - y.e) + 1; // precision of the result\r\n\r\n q.s = k;\r\n k = p < 0 ? 0 : p;\r\n\r\n // Create version of divisor with leading zero.\r\n bz.unshift(0);\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; rl++ < bl;) r.push(0);\r\n\r\n do {\r\n\r\n // n is how many times the divisor goes into current remainder.\r\n for (n = 0; n < 10; n++) {\r\n\r\n // Compare divisor and remainder.\r\n if (bl != (rl = r.length)) {\r\n cmp = bl > rl ? 1 : -1;\r\n } else {\r\n for (ri = -1, cmp = 0; ++ri < bl;) {\r\n if (b[ri] != r[ri]) {\r\n cmp = b[ri] > r[ri] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // If divisor < remainder, subtract divisor from remainder.\r\n if (cmp < 0) {\r\n\r\n // Remainder can't be more than 1 digit longer than divisor.\r\n // Equalise lengths using divisor with extra leading zero?\r\n for (bt = rl == bl ? b : bz; rl;) {\r\n if (r[--rl] < bt[rl]) {\r\n ri = rl;\r\n for (; ri && !r[--ri];) r[ri] = 9;\r\n --r[ri];\r\n r[rl] += 10;\r\n }\r\n r[rl] -= bt[rl];\r\n }\r\n\r\n for (; !r[0];) r.shift();\r\n } else {\r\n break;\r\n }\r\n }\r\n\r\n // Add the digit n to the result array.\r\n qc[qi++] = cmp ? n : ++n;\r\n\r\n // Update the remainder.\r\n if (r[0] && cmp) r[rl] = a[ai] || 0;\r\n else r = [a[ai]];\r\n\r\n } while ((ai++ < al || r[0] !== UNDEFINED) && k--);\r\n\r\n // Leading zero? Do not remove if result is simply zero (qi == 1).\r\n if (!qc[0] && qi != 1) {\r\n\r\n // There can't be more than one zero.\r\n qc.shift();\r\n q.e--;\r\n p--;\r\n }\r\n\r\n // Round?\r\n if (qi > p) round(q, p, Big.RM, r[0] !== UNDEFINED);\r\n\r\n return q;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is equal to the value of Big y, otherwise return false.\r\n */\r\n P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is greater than the value of Big y, otherwise return\r\n * false.\r\n */\r\n P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is greater than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\n P.gte = function (y) {\r\n return this.cmp(y) > -1;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is less than the value of Big y, otherwise return false.\r\n */\r\n P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Big is less than or equal to the value of Big y, otherwise\r\n * return false.\r\n */\r\n P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big minus the value of Big y.\r\n */\r\n P.minus = P.sub = function (y) {\r\n var i, j, t, xlty,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xc = x.c.slice(),\r\n xe = x.e,\r\n yc = y.c,\r\n ye = y.e;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (yc[0]) {\r\n y.s = -b;\r\n } else if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = 1;\r\n }\r\n return y;\r\n }\r\n\r\n // Determine which is the bigger number. Prepend zeros to equalise exponents.\r\n if (a = xe - ye) {\r\n\r\n if (xlty = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n for (b = a; b--;) t.push(0);\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = ((xlty = xc.length < yc.length) ? xc : yc).length;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n if (xc[b] != yc[b]) {\r\n xlty = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xlty) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n }\r\n\r\n /*\r\n * Append zeros to xc if shorter. No need to add zeros to yc if shorter as subtraction only\r\n * needs to start at yc.length.\r\n */\r\n if ((b = (j = yc.length) - (i = xc.length)) > 0) for (; b--;) xc[i++] = 0;\r\n\r\n // Subtract yc from xc.\r\n for (b = i; j > a;) {\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i];) xc[i] = 9;\r\n --xc[i];\r\n xc[j] += 10;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--b] === 0;) xc.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] === 0;) {\r\n xc.shift();\r\n --ye;\r\n }\r\n\r\n if (!xc[0]) {\r\n\r\n // n - n = +0\r\n y.s = 1;\r\n\r\n // Result must be zero.\r\n xc = [ye = 0];\r\n }\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big modulo the value of Big y.\r\n */\r\n P.mod = function (y) {\r\n var ygtx,\r\n x = this,\r\n Big = x.constructor,\r\n a = x.s,\r\n b = (y = new Big(y)).s;\r\n\r\n if (!y.c[0]) {\r\n throw Error(DIV_BY_ZERO);\r\n }\r\n\r\n x.s = y.s = 1;\r\n ygtx = y.cmp(x) == 1;\r\n x.s = a;\r\n y.s = b;\r\n\r\n if (ygtx) return new Big(x);\r\n\r\n a = Big.DP;\r\n b = Big.RM;\r\n Big.DP = Big.RM = 0;\r\n x = x.div(y);\r\n Big.DP = a;\r\n Big.RM = b;\r\n\r\n return this.minus(x.times(y));\r\n };\r\n \r\n \r\n /*\r\n * Return a new Big whose value is the value of this Big negated.\r\n */\r\n P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big plus the value of Big y.\r\n */\r\n P.plus = P.add = function (y) {\r\n var e, k, t,\r\n x = this,\r\n Big = x.constructor;\r\n\r\n y = new Big(y);\r\n\r\n // Signs differ?\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e,\r\n xc = x.c,\r\n ye = y.e,\r\n yc = y.c;\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n if (!yc[0]) {\r\n if (xc[0]) {\r\n y = new Big(x);\r\n } else {\r\n y.s = x.s;\r\n }\r\n }\r\n return y;\r\n }\r\n\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents.\r\n // Note: reverse faster than unshifts.\r\n if (e = xe - ye) {\r\n if (e > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n e = -e;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; e--;) t.push(0);\r\n t.reverse();\r\n }\r\n\r\n // Point xc to the longer array.\r\n if (xc.length - yc.length < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n }\r\n\r\n e = yc.length;\r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be left as they are.\r\n for (k = 0; e; xc[e] %= 10) k = (xc[--e] = xc[e] + yc[e] + k) / 10 | 0;\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n\r\n if (k) {\r\n xc.unshift(k);\r\n ++ye;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (e = xc.length; xc[--e] === 0;) xc.pop();\r\n\r\n y.c = xc;\r\n y.e = ye;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a Big whose value is the value of this Big raised to the power n.\r\n * If n is negative, round to a maximum of Big.DP decimal places using rounding\r\n * mode Big.RM.\r\n *\r\n * n {number} Integer, -MAX_POWER to MAX_POWER inclusive.\r\n */\r\n P.pow = function (n) {\r\n var x = this,\r\n one = new x.constructor('1'),\r\n y = one,\r\n isneg = n < 0;\r\n\r\n if (n !== ~~n || n < -MAX_POWER || n > MAX_POWER) {\r\n throw Error(INVALID + 'exponent');\r\n }\r\n\r\n if (isneg) n = -n;\r\n\r\n for (;;) {\r\n if (n & 1) y = y.times(x);\r\n n >>= 1;\r\n if (!n) break;\r\n x = x.times(x);\r\n }\r\n\r\n return isneg ? one.div(y) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum precision of sd\r\n * significant digits using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\n P.prec = function (sd, rm) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n return round(new this.constructor(this), sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big rounded to a maximum of dp decimal places\r\n * using rounding mode rm, or Big.RM if rm is not specified.\r\n * If dp is negative, round to an integer which is a multiple of 10**-dp.\r\n * If dp is not specified, round to 0 decimal places.\r\n *\r\n * dp? {number} Integer, -MAX_DP to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\n P.round = function (dp, rm) {\r\n if (dp === UNDEFINED) dp = 0;\r\n else if (dp !== ~~dp || dp < -MAX_DP || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n return round(new this.constructor(this), dp + this.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the square root of the value of this Big, rounded, if\r\n * necessary, to a maximum of Big.DP decimal places using rounding mode Big.RM.\r\n */\r\n P.sqrt = function () {\r\n var r, c, t,\r\n x = this,\r\n Big = x.constructor,\r\n s = x.s,\r\n e = x.e,\r\n half = new Big('0.5');\r\n\r\n // Zero?\r\n if (!x.c[0]) return new Big(x);\r\n\r\n // Negative?\r\n if (s < 0) {\r\n throw Error(NAME + 'No square root');\r\n }\r\n\r\n // Estimate.\r\n s = Math.sqrt(x + '');\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Re-estimate: pass x coefficient to Math.sqrt as integer, then adjust the result exponent.\r\n if (s === 0 || s === 1 / 0) {\r\n c = x.c.join('');\r\n if (!(c.length + e & 1)) c += '0';\r\n s = Math.sqrt(c);\r\n e = ((e + 1) / 2 | 0) - (e < 0 || e & 1);\r\n r = new Big((s == 1 / 0 ? '5e' : (s = s.toExponential()).slice(0, s.indexOf('e') + 1)) + e);\r\n } else {\r\n r = new Big(s + '');\r\n }\r\n\r\n e = r.e + (Big.DP += 4);\r\n\r\n // Newton-Raphson iteration.\r\n do {\r\n t = r;\r\n r = half.times(t.plus(x.div(t)));\r\n } while (t.c.slice(0, e).join('') !== r.c.slice(0, e).join(''));\r\n\r\n return round(r, (Big.DP -= 4) + r.e + 1, Big.RM);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Big whose value is the value of this Big times the value of Big y.\r\n */\r\n P.times = P.mul = function (y) {\r\n var c,\r\n x = this,\r\n Big = x.constructor,\r\n xc = x.c,\r\n yc = (y = new Big(y)).c,\r\n a = xc.length,\r\n b = yc.length,\r\n i = x.e,\r\n j = y.e;\r\n\r\n // Determine sign of result.\r\n y.s = x.s == y.s ? 1 : -1;\r\n\r\n // Return signed 0 if either 0.\r\n if (!xc[0] || !yc[0]) {\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // Initialise exponent of result as x.e + y.e.\r\n y.e = i + j;\r\n\r\n // If array xc has fewer digits than yc, swap xc and yc, and lengths.\r\n if (a < b) {\r\n c = xc;\r\n xc = yc;\r\n yc = c;\r\n j = a;\r\n a = b;\r\n b = j;\r\n }\r\n\r\n // Initialise coefficient array of result with zeros.\r\n for (c = new Array(j = a + b); j--;) c[j] = 0;\r\n\r\n // Multiply.\r\n\r\n // i is initially xc.length.\r\n for (i = b; i--;) {\r\n b = 0;\r\n\r\n // a is yc.length.\r\n for (j = a + i; j > i;) {\r\n\r\n // Current sum of products at this digit position, plus carry.\r\n b = c[j] + yc[i] * xc[j - i - 1] + b;\r\n c[j--] = b % 10;\r\n\r\n // carry\r\n b = b / 10 | 0;\r\n }\r\n\r\n c[j] = b;\r\n }\r\n\r\n // Increment result exponent if there is a final carry, otherwise remove leading zero.\r\n if (b) ++y.e;\r\n else c.shift();\r\n\r\n // Remove trailing zeros.\r\n for (i = c.length; !c[--i];) c.pop();\r\n y.c = c;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big in exponential notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\n P.toExponential = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), ++dp, rm);\r\n for (; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, true, !!n);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big in normal notation rounded to dp fixed\r\n * decimal places using rounding mode rm, or Big.RM if rm is not specified.\r\n *\r\n * dp? {number} Decimal places: integer, 0 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n */\r\n P.toFixed = function (dp, rm) {\r\n var x = this,\r\n n = x.c[0];\r\n\r\n if (dp !== UNDEFINED) {\r\n if (dp !== ~~dp || dp < 0 || dp > MAX_DP) {\r\n throw Error(INVALID_DP);\r\n }\r\n x = round(new x.constructor(x), dp + x.e + 1, rm);\r\n\r\n // x.e may have changed if the value is rounded up.\r\n for (dp = dp + x.e + 1; x.c.length < dp;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, false, !!n);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Omit the sign for negative zero.\r\n */\r\n P.toJSON = P.toString = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, !!x.c[0]);\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this Big as a primitve number.\r\n */\r\n P.toNumber = function () {\r\n var n = Number(stringify(this, true, true));\r\n if (this.constructor.strict === true && !this.eq(n.toString())) {\r\n throw Error(NAME + 'Imprecise conversion');\r\n }\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big rounded to sd significant digits using\r\n * rounding mode rm, or Big.RM if rm is not specified.\r\n * Use exponential notation if sd is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * sd {number} Significant digits: integer, 1 to MAX_DP inclusive.\r\n * rm? {number} Rounding mode: 0 (down), 1 (half-up), 2 (half-even) or 3 (up).\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n var x = this,\r\n Big = x.constructor,\r\n n = x.c[0];\r\n\r\n if (sd !== UNDEFINED) {\r\n if (sd !== ~~sd || sd < 1 || sd > MAX_DP) {\r\n throw Error(INVALID + 'precision');\r\n }\r\n x = round(new Big(x), sd, rm);\r\n for (; x.c.length < sd;) x.c.push(0);\r\n }\r\n\r\n return stringify(x, sd <= x.e || x.e <= Big.NE || x.e >= Big.PE, !!n);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Big.\r\n * Return exponential notation if this Big has a positive exponent equal to or greater than\r\n * Big.PE, or a negative exponent equal to or less than Big.NE.\r\n * Include the sign for negative zero.\r\n */\r\n P.valueOf = function () {\r\n var x = this,\r\n Big = x.constructor;\r\n if (Big.strict === true) {\r\n throw Error(NAME + 'valueOf disallowed');\r\n }\r\n return stringify(x, x.e <= Big.NE || x.e >= Big.PE, true);\r\n };\r\n\r\n\r\n // Export\r\n\r\n\r\n Big = _Big_();\r\n\r\n Big['default'] = Big.Big = Big;\r\n\r\n //AMD.\r\n if (typeof define === 'function' && define.amd) {\r\n define(function () { return Big; });\r\n\r\n // Node and other CommonJS-like environments that support module.exports.\r\n } else if (typeof module !== 'undefined' && module.exports) {\r\n module.exports = Big;\r\n\r\n //Browser.\r\n } else {\r\n GLOBAL.Big = Big;\r\n }\r\n})(this);\r\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", { value: true });\nlet converter;\n/**\n * Convert a little-endian buffer into a BigInt.\n * @param buf The little-endian buffer to convert\n * @returns A BigInt with the little-endian representation of buf.\n */\nfunction toBigIntLE(buf) {\n {\n const reversed = Buffer.from(buf);\n reversed.reverse();\n const hex = reversed.toString('hex');\n if (hex.length === 0) {\n return BigInt(0);\n }\n return BigInt(`0x${hex}`);\n }\n return converter.toBigInt(buf, false);\n}\nexports.toBigIntLE = toBigIntLE;\n/**\n * Convert a big-endian buffer into a BigInt\n * @param buf The big-endian buffer to convert.\n * @returns A BigInt with the big-endian representation of buf.\n */\nfunction toBigIntBE(buf) {\n {\n const hex = buf.toString('hex');\n if (hex.length === 0) {\n return BigInt(0);\n }\n return BigInt(`0x${hex}`);\n }\n return converter.toBigInt(buf, true);\n}\nexports.toBigIntBE = toBigIntBE;\n/**\n * Convert a BigInt to a little-endian buffer.\n * @param num The BigInt to convert.\n * @param width The number of bytes that the resulting buffer should be.\n * @returns A little-endian buffer representation of num.\n */\nfunction toBufferLE(num, width) {\n {\n const hex = num.toString(16);\n const buffer = Buffer.from(hex.padStart(width * 2, '0').slice(0, width * 2), 'hex');\n buffer.reverse();\n return buffer;\n }\n // Allocation is done here, since it is slower using napi in C\n return converter.fromBigInt(num, Buffer.allocUnsafe(width), false);\n}\nexports.toBufferLE = toBufferLE;\n/**\n * Convert a BigInt to a big-endian buffer.\n * @param num The BigInt to convert.\n * @param width The number of bytes that the resulting buffer should be.\n * @returns A big-endian buffer representation of num.\n */\nfunction toBufferBE(num, width) {\n {\n const hex = num.toString(16);\n return Buffer.from(hex.padStart(width * 2, '0').slice(0, width * 2), 'hex');\n }\n return converter.fromBigInt(num, Buffer.allocUnsafe(width), true);\n}\nexports.toBufferBE = toBufferBE;\n",";(function (globalObject) {\r\n 'use strict';\r\n\r\n/*\r\n * bignumber.js v9.1.0\r\n * A JavaScript library for arbitrary-precision arithmetic.\r\n * https://github.com/MikeMcl/bignumber.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licensed.\r\n *\r\n * BigNumber.prototype methods | BigNumber methods\r\n * |\r\n * absoluteValue abs | clone\r\n * comparedTo | config set\r\n * decimalPlaces dp | DECIMAL_PLACES\r\n * dividedBy div | ROUNDING_MODE\r\n * dividedToIntegerBy idiv | EXPONENTIAL_AT\r\n * exponentiatedBy pow | RANGE\r\n * integerValue | CRYPTO\r\n * isEqualTo eq | MODULO_MODE\r\n * isFinite | POW_PRECISION\r\n * isGreaterThan gt | FORMAT\r\n * isGreaterThanOrEqualTo gte | ALPHABET\r\n * isInteger | isBigNumber\r\n * isLessThan lt | maximum max\r\n * isLessThanOrEqualTo lte | minimum min\r\n * isNaN | random\r\n * isNegative | sum\r\n * isPositive |\r\n * isZero |\r\n * minus |\r\n * modulo mod |\r\n * multipliedBy times |\r\n * negated |\r\n * plus |\r\n * precision sd |\r\n * shiftedBy |\r\n * squareRoot sqrt |\r\n * toExponential |\r\n * toFixed |\r\n * toFormat |\r\n * toFraction |\r\n * toJSON |\r\n * toNumber |\r\n * toPrecision |\r\n * toString |\r\n * valueOf |\r\n *\r\n */\r\n\r\n\r\n var BigNumber,\r\n isNumeric = /^-?(?:\\d+(?:\\.\\d*)?|\\.\\d+)(?:e[+-]?\\d+)?$/i,\r\n mathceil = Math.ceil,\r\n mathfloor = Math.floor,\r\n\r\n bignumberError = '[BigNumber Error] ',\r\n tooManyDigits = bignumberError + 'Number primitive has more than 15 significant digits: ',\r\n\r\n BASE = 1e14,\r\n LOG_BASE = 14,\r\n MAX_SAFE_INTEGER = 0x1fffffffffffff, // 2^53 - 1\r\n // MAX_INT32 = 0x7fffffff, // 2^31 - 1\r\n POWS_TEN = [1, 10, 100, 1e3, 1e4, 1e5, 1e6, 1e7, 1e8, 1e9, 1e10, 1e11, 1e12, 1e13],\r\n SQRT_BASE = 1e7,\r\n\r\n // EDITABLE\r\n // The limit on the value of DECIMAL_PLACES, TO_EXP_NEG, TO_EXP_POS, MIN_EXP, MAX_EXP, and\r\n // the arguments to toExponential, toFixed, toFormat, and toPrecision.\r\n MAX = 1E9; // 0 to MAX_INT32\r\n\r\n\r\n /*\r\n * Create and return a BigNumber constructor.\r\n */\r\n function clone(configObject) {\r\n var div, convertBase, parseNumeric,\r\n P = BigNumber.prototype = { constructor: BigNumber, toString: null, valueOf: null },\r\n ONE = new BigNumber(1),\r\n\r\n\r\n //----------------------------- EDITABLE CONFIG DEFAULTS -------------------------------\r\n\r\n\r\n // The default values below must be integers within the inclusive ranges stated.\r\n // The values can also be changed at run-time using BigNumber.set.\r\n\r\n // The maximum number of decimal places for operations involving division.\r\n DECIMAL_PLACES = 20, // 0 to MAX\r\n\r\n // The rounding mode used when rounding to the above decimal places, and when using\r\n // toExponential, toFixed, toFormat and toPrecision, and round (default value).\r\n // UP 0 Away from zero.\r\n // DOWN 1 Towards zero.\r\n // CEIL 2 Towards +Infinity.\r\n // FLOOR 3 Towards -Infinity.\r\n // HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n ROUNDING_MODE = 4, // 0 to 8\r\n\r\n // EXPONENTIAL_AT : [TO_EXP_NEG , TO_EXP_POS]\r\n\r\n // The exponent value at and beneath which toString returns exponential notation.\r\n // Number type: -7\r\n TO_EXP_NEG = -7, // 0 to -MAX\r\n\r\n // The exponent value at and above which toString returns exponential notation.\r\n // Number type: 21\r\n TO_EXP_POS = 21, // 0 to MAX\r\n\r\n // RANGE : [MIN_EXP, MAX_EXP]\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // Number type: -324 (5e-324)\r\n MIN_EXP = -1e7, // -1 to -MAX\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // Number type: 308 (1.7976931348623157e+308)\r\n // For MAX_EXP > 1e7, e.g. new BigNumber('1e100000000').plus(1) may be slow.\r\n MAX_EXP = 1e7, // 1 to MAX\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n CRYPTO = false, // true or false\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend.\r\n // This modulo mode is commonly known as 'truncated division' and is\r\n // equivalent to (a % n) in JavaScript.\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 This modulo mode implements the IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)).\r\n // The remainder is always positive.\r\n //\r\n // The truncated division, floored division, Euclidian division and IEEE 754 remainder\r\n // modes are commonly used for the modulus operation.\r\n // Although the other rounding modes can also be used, they may not give useful results.\r\n MODULO_MODE = 1, // 0 to 9\r\n\r\n // The maximum number of significant digits of the result of the exponentiatedBy operation.\r\n // If POW_PRECISION is 0, there will be unlimited significant digits.\r\n POW_PRECISION = 0, // 0 to MAX\r\n\r\n // The format specification used by the BigNumber.prototype.toFormat method.\r\n FORMAT = {\r\n prefix: '',\r\n groupSize: 3,\r\n secondaryGroupSize: 0,\r\n groupSeparator: ',',\r\n decimalSeparator: '.',\r\n fractionGroupSize: 0,\r\n fractionGroupSeparator: '\\xA0', // non-breaking space\r\n suffix: ''\r\n },\r\n\r\n // The alphabet used for base conversion. It must be at least 2 characters long, with no '+',\r\n // '-', '.', whitespace, or repeated character.\r\n // '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ$_'\r\n ALPHABET = '0123456789abcdefghijklmnopqrstuvwxyz',\r\n alphabetHasNormalDecimalDigits = true;\r\n\r\n\r\n //------------------------------------------------------------------------------------------\r\n\r\n\r\n // CONSTRUCTOR\r\n\r\n\r\n /*\r\n * The BigNumber constructor and exported function.\r\n * Create and return a new instance of a BigNumber object.\r\n *\r\n * v {number|string|BigNumber} A numeric value.\r\n * [b] {number} The base of v. Integer, 2 to ALPHABET.length inclusive.\r\n */\r\n function BigNumber(v, b) {\r\n var alphabet, c, caseChanged, e, i, isNum, len, str,\r\n x = this;\r\n\r\n // Enable constructor call without `new`.\r\n if (!(x instanceof BigNumber)) return new BigNumber(v, b);\r\n\r\n if (b == null) {\r\n\r\n if (v && v._isBigNumber === true) {\r\n x.s = v.s;\r\n\r\n if (!v.c || v.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else if (v.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = v.e;\r\n x.c = v.c.slice();\r\n }\r\n\r\n return;\r\n }\r\n\r\n if ((isNum = typeof v == 'number') && v * 0 == 0) {\r\n\r\n // Use `1 / n` to handle minus zero also.\r\n x.s = 1 / v < 0 ? (v = -v, -1) : 1;\r\n\r\n // Fast path for integers, where n < 2147483648 (2**31).\r\n if (v === ~~v) {\r\n for (e = 0, i = v; i >= 10; i /= 10, e++);\r\n\r\n if (e > MAX_EXP) {\r\n x.c = x.e = null;\r\n } else {\r\n x.e = e;\r\n x.c = [v];\r\n }\r\n\r\n return;\r\n }\r\n\r\n str = String(v);\r\n } else {\r\n\r\n if (!isNumeric.test(str = String(v))) return parseNumeric(x, str, isNum);\r\n\r\n x.s = str.charCodeAt(0) == 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n\r\n // Allow exponential notation to be used with base 10 argument, while\r\n // also rounding to DECIMAL_PLACES as with other bases.\r\n if (b == 10 && alphabetHasNormalDecimalDigits) {\r\n x = new BigNumber(v);\r\n return round(x, DECIMAL_PLACES + x.e + 1, ROUNDING_MODE);\r\n }\r\n\r\n str = String(v);\r\n\r\n if (isNum = typeof v == 'number') {\r\n\r\n // Avoid potential interpretation of Infinity and NaN as base 44+ values.\r\n if (v * 0 != 0) return parseNumeric(x, str, isNum, b);\r\n\r\n x.s = 1 / v < 0 ? (str = str.slice(1), -1) : 1;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (BigNumber.DEBUG && str.replace(/^0\\.0*|\\./, '').length > 15) {\r\n throw Error\r\n (tooManyDigits + v);\r\n }\r\n } else {\r\n x.s = str.charCodeAt(0) === 45 ? (str = str.slice(1), -1) : 1;\r\n }\r\n\r\n alphabet = ALPHABET.slice(0, b);\r\n e = i = 0;\r\n\r\n // Check that str is a valid base b number.\r\n // Don't use RegExp, so alphabet can contain special characters.\r\n for (len = str.length; i < len; i++) {\r\n if (alphabet.indexOf(c = str.charAt(i)) < 0) {\r\n if (c == '.') {\r\n\r\n // If '.' is not the first character and it has not be found before.\r\n if (i > e) {\r\n e = len;\r\n continue;\r\n }\r\n } else if (!caseChanged) {\r\n\r\n // Allow e.g. hexadecimal 'FF' as well as 'ff'.\r\n if (str == str.toUpperCase() && (str = str.toLowerCase()) ||\r\n str == str.toLowerCase() && (str = str.toUpperCase())) {\r\n caseChanged = true;\r\n i = -1;\r\n e = 0;\r\n continue;\r\n }\r\n }\r\n\r\n return parseNumeric(x, String(v), isNum, b);\r\n }\r\n }\r\n\r\n // Prevent later check for length on converted number.\r\n isNum = false;\r\n str = convertBase(str, b, 10, x.s);\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n else e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(--len) === 48;);\r\n\r\n if (str = str.slice(i, ++len)) {\r\n len -= i;\r\n\r\n // '[BigNumber Error] Number primitive has more than 15 significant digits: {n}'\r\n if (isNum && BigNumber.DEBUG &&\r\n len > 15 && (v > MAX_SAFE_INTEGER || v !== mathfloor(v))) {\r\n throw Error\r\n (tooManyDigits + (x.s * v));\r\n }\r\n\r\n // Overflow?\r\n if ((e = e - i - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n x.c = x.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n } else {\r\n x.e = e;\r\n x.c = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first element of the coefficient array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE; // i < 1\r\n\r\n if (i < len) {\r\n if (i) x.c.push(+str.slice(0, i));\r\n\r\n for (len -= LOG_BASE; i < len;) {\r\n x.c.push(+str.slice(i, i += LOG_BASE));\r\n }\r\n\r\n i = LOG_BASE - (str = str.slice(i)).length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--; str += '0');\r\n x.c.push(+str);\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n\r\n // CONSTRUCTOR PROPERTIES\r\n\r\n\r\n BigNumber.clone = clone;\r\n\r\n BigNumber.ROUND_UP = 0;\r\n BigNumber.ROUND_DOWN = 1;\r\n BigNumber.ROUND_CEIL = 2;\r\n BigNumber.ROUND_FLOOR = 3;\r\n BigNumber.ROUND_HALF_UP = 4;\r\n BigNumber.ROUND_HALF_DOWN = 5;\r\n BigNumber.ROUND_HALF_EVEN = 6;\r\n BigNumber.ROUND_HALF_CEIL = 7;\r\n BigNumber.ROUND_HALF_FLOOR = 8;\r\n BigNumber.EUCLID = 9;\r\n\r\n\r\n /*\r\n * Configure infrequently-changing library-wide settings.\r\n *\r\n * Accept an object with the following optional properties (if the value of a property is\r\n * a number, it must be an integer within the inclusive range stated):\r\n *\r\n * DECIMAL_PLACES {number} 0 to MAX\r\n * ROUNDING_MODE {number} 0 to 8\r\n * EXPONENTIAL_AT {number|number[]} -MAX to MAX or [-MAX to 0, 0 to MAX]\r\n * RANGE {number|number[]} -MAX to MAX (not zero) or [-MAX to -1, 1 to MAX]\r\n * CRYPTO {boolean} true or false\r\n * MODULO_MODE {number} 0 to 9\r\n * POW_PRECISION {number} 0 to MAX\r\n * ALPHABET {string} A string of two or more unique characters which does\r\n * not contain '.'.\r\n * FORMAT {object} An object with some of the following properties:\r\n * prefix {string}\r\n * groupSize {number}\r\n * secondaryGroupSize {number}\r\n * groupSeparator {string}\r\n * decimalSeparator {string}\r\n * fractionGroupSize {number}\r\n * fractionGroupSeparator {string}\r\n * suffix {string}\r\n *\r\n * (The values assigned to the above FORMAT object properties are not checked for validity.)\r\n *\r\n * E.g.\r\n * BigNumber.config({ DECIMAL_PLACES : 20, ROUNDING_MODE : 4 })\r\n *\r\n * Ignore properties/parameters set to null or undefined, except for ALPHABET.\r\n *\r\n * Return an object with the properties current values.\r\n */\r\n BigNumber.config = BigNumber.set = function (obj) {\r\n var p, v;\r\n\r\n if (obj != null) {\r\n\r\n if (typeof obj == 'object') {\r\n\r\n // DECIMAL_PLACES {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] DECIMAL_PLACES {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'DECIMAL_PLACES')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n DECIMAL_PLACES = v;\r\n }\r\n\r\n // ROUNDING_MODE {number} Integer, 0 to 8 inclusive.\r\n // '[BigNumber Error] ROUNDING_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'ROUNDING_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 8, p);\r\n ROUNDING_MODE = v;\r\n }\r\n\r\n // EXPONENTIAL_AT {number|number[]}\r\n // Integer, -MAX to MAX inclusive or\r\n // [integer -MAX to 0 inclusive, 0 to MAX inclusive].\r\n // '[BigNumber Error] EXPONENTIAL_AT {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'EXPONENTIAL_AT')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, 0, p);\r\n intCheck(v[1], 0, MAX, p);\r\n TO_EXP_NEG = v[0];\r\n TO_EXP_POS = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n TO_EXP_NEG = -(TO_EXP_POS = v < 0 ? -v : v);\r\n }\r\n }\r\n\r\n // RANGE {number|number[]} Non-zero integer, -MAX to MAX inclusive or\r\n // [integer -MAX to -1 inclusive, integer 1 to MAX inclusive].\r\n // '[BigNumber Error] RANGE {not a primitive number|not an integer|out of range|cannot be zero}: {v}'\r\n if (obj.hasOwnProperty(p = 'RANGE')) {\r\n v = obj[p];\r\n if (v && v.pop) {\r\n intCheck(v[0], -MAX, -1, p);\r\n intCheck(v[1], 1, MAX, p);\r\n MIN_EXP = v[0];\r\n MAX_EXP = v[1];\r\n } else {\r\n intCheck(v, -MAX, MAX, p);\r\n if (v) {\r\n MIN_EXP = -(MAX_EXP = v < 0 ? -v : v);\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' cannot be zero: ' + v);\r\n }\r\n }\r\n }\r\n\r\n // CRYPTO {boolean} true or false.\r\n // '[BigNumber Error] CRYPTO not true or false: {v}'\r\n // '[BigNumber Error] crypto unavailable'\r\n if (obj.hasOwnProperty(p = 'CRYPTO')) {\r\n v = obj[p];\r\n if (v === !!v) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n CRYPTO = v;\r\n } else {\r\n CRYPTO = !v;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n } else {\r\n CRYPTO = v;\r\n }\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' not true or false: ' + v);\r\n }\r\n }\r\n\r\n // MODULO_MODE {number} Integer, 0 to 9 inclusive.\r\n // '[BigNumber Error] MODULO_MODE {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'MODULO_MODE')) {\r\n v = obj[p];\r\n intCheck(v, 0, 9, p);\r\n MODULO_MODE = v;\r\n }\r\n\r\n // POW_PRECISION {number} Integer, 0 to MAX inclusive.\r\n // '[BigNumber Error] POW_PRECISION {not a primitive number|not an integer|out of range}: {v}'\r\n if (obj.hasOwnProperty(p = 'POW_PRECISION')) {\r\n v = obj[p];\r\n intCheck(v, 0, MAX, p);\r\n POW_PRECISION = v;\r\n }\r\n\r\n // FORMAT {object}\r\n // '[BigNumber Error] FORMAT not an object: {v}'\r\n if (obj.hasOwnProperty(p = 'FORMAT')) {\r\n v = obj[p];\r\n if (typeof v == 'object') FORMAT = v;\r\n else throw Error\r\n (bignumberError + p + ' not an object: ' + v);\r\n }\r\n\r\n // ALPHABET {string}\r\n // '[BigNumber Error] ALPHABET invalid: {v}'\r\n if (obj.hasOwnProperty(p = 'ALPHABET')) {\r\n v = obj[p];\r\n\r\n // Disallow if less than two characters,\r\n // or if it contains '+', '-', '.', whitespace, or a repeated character.\r\n if (typeof v == 'string' && !/^.?$|[+\\-.\\s]|(.).*\\1/.test(v)) {\r\n alphabetHasNormalDecimalDigits = v.slice(0, 10) == '0123456789';\r\n ALPHABET = v;\r\n } else {\r\n throw Error\r\n (bignumberError + p + ' invalid: ' + v);\r\n }\r\n }\r\n\r\n } else {\r\n\r\n // '[BigNumber Error] Object expected: {v}'\r\n throw Error\r\n (bignumberError + 'Object expected: ' + obj);\r\n }\r\n }\r\n\r\n return {\r\n DECIMAL_PLACES: DECIMAL_PLACES,\r\n ROUNDING_MODE: ROUNDING_MODE,\r\n EXPONENTIAL_AT: [TO_EXP_NEG, TO_EXP_POS],\r\n RANGE: [MIN_EXP, MAX_EXP],\r\n CRYPTO: CRYPTO,\r\n MODULO_MODE: MODULO_MODE,\r\n POW_PRECISION: POW_PRECISION,\r\n FORMAT: FORMAT,\r\n ALPHABET: ALPHABET\r\n };\r\n };\r\n\r\n\r\n /*\r\n * Return true if v is a BigNumber instance, otherwise return false.\r\n *\r\n * If BigNumber.DEBUG is true, throw if a BigNumber instance is not well-formed.\r\n *\r\n * v {any}\r\n *\r\n * '[BigNumber Error] Invalid BigNumber: {v}'\r\n */\r\n BigNumber.isBigNumber = function (v) {\r\n if (!v || v._isBigNumber !== true) return false;\r\n if (!BigNumber.DEBUG) return true;\r\n\r\n var i, n,\r\n c = v.c,\r\n e = v.e,\r\n s = v.s;\r\n\r\n out: if ({}.toString.call(c) == '[object Array]') {\r\n\r\n if ((s === 1 || s === -1) && e >= -MAX && e <= MAX && e === mathfloor(e)) {\r\n\r\n // If the first element is zero, the BigNumber value must be zero.\r\n if (c[0] === 0) {\r\n if (e === 0 && c.length === 1) return true;\r\n break out;\r\n }\r\n\r\n // Calculate number of digits that c[0] should have, based on the exponent.\r\n i = (e + 1) % LOG_BASE;\r\n if (i < 1) i += LOG_BASE;\r\n\r\n // Calculate number of digits of c[0].\r\n //if (Math.ceil(Math.log(c[0] + 1) / Math.LN10) == i) {\r\n if (String(c[0]).length == i) {\r\n\r\n for (i = 0; i < c.length; i++) {\r\n n = c[i];\r\n if (n < 0 || n >= BASE || n !== mathfloor(n)) break out;\r\n }\r\n\r\n // Last element cannot be zero, unless it is the only element.\r\n if (n !== 0) return true;\r\n }\r\n }\r\n\r\n // Infinity/NaN\r\n } else if (c === null && e === null && (s === null || s === 1 || s === -1)) {\r\n return true;\r\n }\r\n\r\n throw Error\r\n (bignumberError + 'Invalid BigNumber: ' + v);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.maximum = BigNumber.max = function () {\r\n return maxOrMin(arguments, P.lt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.minimum = BigNumber.min = function () {\r\n return maxOrMin(arguments, P.gt);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber with a random value equal to or greater than 0 and less than 1,\r\n * and with dp, or DECIMAL_PLACES if dp is omitted, decimal places (or less if trailing\r\n * zeros are produced).\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp}'\r\n * '[BigNumber Error] crypto unavailable'\r\n */\r\n BigNumber.random = (function () {\r\n var pow2_53 = 0x20000000000000;\r\n\r\n // Return a 53 bit integer n, where 0 <= n < 9007199254740992.\r\n // Check if Math.random() produces more than 32 bits of randomness.\r\n // If it does, assume at least 53 bits are produced, otherwise assume at least 30 bits.\r\n // 0x40000000 is 2^30, 0x800000 is 2^23, 0x1fffff is 2^21 - 1.\r\n var random53bitInt = (Math.random() * pow2_53) & 0x1fffff\r\n ? function () { return mathfloor(Math.random() * pow2_53); }\r\n : function () { return ((Math.random() * 0x40000000 | 0) * 0x800000) +\r\n (Math.random() * 0x800000 | 0); };\r\n\r\n return function (dp) {\r\n var a, b, e, k, v,\r\n i = 0,\r\n c = [],\r\n rand = new BigNumber(ONE);\r\n\r\n if (dp == null) dp = DECIMAL_PLACES;\r\n else intCheck(dp, 0, MAX);\r\n\r\n k = mathceil(dp / LOG_BASE);\r\n\r\n if (CRYPTO) {\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n if (crypto.getRandomValues) {\r\n\r\n a = crypto.getRandomValues(new Uint32Array(k *= 2));\r\n\r\n for (; i < k;) {\r\n\r\n // 53 bits:\r\n // ((Math.pow(2, 32) - 1) * Math.pow(2, 21)).toString(2)\r\n // 11111 11111111 11111111 11111111 11100000 00000000 00000000\r\n // ((Math.pow(2, 32) - 1) >>> 11).toString(2)\r\n // 11111 11111111 11111111\r\n // 0x20000 is 2^21.\r\n v = a[i] * 0x20000 + (a[i + 1] >>> 11);\r\n\r\n // Rejection sampling:\r\n // 0 <= v < 9007199254740992\r\n // Probability that v >= 9e15, is\r\n // 7199254740992 / 9007199254740992 ~= 0.0008, i.e. 1 in 1251\r\n if (v >= 9e15) {\r\n b = crypto.getRandomValues(new Uint32Array(2));\r\n a[i] = b[0];\r\n a[i + 1] = b[1];\r\n } else {\r\n\r\n // 0 <= v <= 8999999999999999\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 2;\r\n }\r\n }\r\n i = k / 2;\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n a = crypto.randomBytes(k *= 7);\r\n\r\n for (; i < k;) {\r\n\r\n // 0x1000000000000 is 2^48, 0x10000000000 is 2^40\r\n // 0x100000000 is 2^32, 0x1000000 is 2^24\r\n // 11111 11111111 11111111 11111111 11111111 11111111 11111111\r\n // 0 <= v < 9007199254740992\r\n v = ((a[i] & 31) * 0x1000000000000) + (a[i + 1] * 0x10000000000) +\r\n (a[i + 2] * 0x100000000) + (a[i + 3] * 0x1000000) +\r\n (a[i + 4] << 16) + (a[i + 5] << 8) + a[i + 6];\r\n\r\n if (v >= 9e15) {\r\n crypto.randomBytes(7).copy(a, i);\r\n } else {\r\n\r\n // 0 <= (v % 1e14) <= 99999999999999\r\n c.push(v % 1e14);\r\n i += 7;\r\n }\r\n }\r\n i = k / 7;\r\n } else {\r\n CRYPTO = false;\r\n throw Error\r\n (bignumberError + 'crypto unavailable');\r\n }\r\n }\r\n\r\n // Use Math.random.\r\n if (!CRYPTO) {\r\n\r\n for (; i < k;) {\r\n v = random53bitInt();\r\n if (v < 9e15) c[i++] = v % 1e14;\r\n }\r\n }\r\n\r\n k = c[--i];\r\n dp %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to dp.\r\n if (k && dp) {\r\n v = POWS_TEN[LOG_BASE - dp];\r\n c[i] = mathfloor(k / v) * v;\r\n }\r\n\r\n // Remove trailing elements which are zero.\r\n for (; c[i] === 0; c.pop(), i--);\r\n\r\n // Zero?\r\n if (i < 0) {\r\n c = [e = 0];\r\n } else {\r\n\r\n // Remove leading elements which are zero and adjust exponent accordingly.\r\n for (e = -1 ; c[0] === 0; c.splice(0, 1), e -= LOG_BASE);\r\n\r\n // Count the digits of the first element of c to determine leading zeros, and...\r\n for (i = 1, v = c[0]; v >= 10; v /= 10, i++);\r\n\r\n // adjust the exponent accordingly.\r\n if (i < LOG_BASE) e -= LOG_BASE - i;\r\n }\r\n\r\n rand.e = e;\r\n rand.c = c;\r\n return rand;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the sum of the arguments.\r\n *\r\n * arguments {number|string|BigNumber}\r\n */\r\n BigNumber.sum = function () {\r\n var i = 1,\r\n args = arguments,\r\n sum = new BigNumber(args[0]);\r\n for (; i < args.length;) sum = sum.plus(args[i++]);\r\n return sum;\r\n };\r\n\r\n\r\n // PRIVATE FUNCTIONS\r\n\r\n\r\n // Called by BigNumber and BigNumber.prototype.toString.\r\n convertBase = (function () {\r\n var decimal = '0123456789';\r\n\r\n /*\r\n * Convert string of baseIn to an array of numbers of baseOut.\r\n * Eg. toBaseOut('255', 10, 16) returns [15, 15].\r\n * Eg. toBaseOut('ff', 16, 10) returns [2, 5, 5].\r\n */\r\n function toBaseOut(str, baseIn, baseOut, alphabet) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n len = str.length;\r\n\r\n for (; i < len;) {\r\n for (arrL = arr.length; arrL--; arr[arrL] *= baseIn);\r\n\r\n arr[0] += alphabet.indexOf(str.charAt(i++));\r\n\r\n for (j = 0; j < arr.length; j++) {\r\n\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] == null) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n // Convert a numeric string of baseIn to a numeric string of baseOut.\r\n // If the caller is toString, we are converting from base 10 to baseOut.\r\n // If the caller is BigNumber, we are converting from baseIn to base 10.\r\n return function (str, baseIn, baseOut, sign, callerIsToString) {\r\n var alphabet, d, e, k, r, x, xc, y,\r\n i = str.indexOf('.'),\r\n dp = DECIMAL_PLACES,\r\n rm = ROUNDING_MODE;\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n k = POW_PRECISION;\r\n\r\n // Unlimited precision.\r\n POW_PRECISION = 0;\r\n str = str.replace('.', '');\r\n y = new BigNumber(baseIn);\r\n x = y.pow(str.length - i);\r\n POW_PRECISION = k;\r\n\r\n // Convert str as if an integer, then restore the fraction part by dividing the\r\n // result by its base raised to a power.\r\n\r\n y.c = toBaseOut(toFixedPoint(coeffToString(x.c), x.e, '0'),\r\n 10, baseOut, decimal);\r\n y.e = y.c.length;\r\n }\r\n\r\n // Convert the number as integer.\r\n\r\n xc = toBaseOut(str, baseIn, baseOut, callerIsToString\r\n ? (alphabet = ALPHABET, decimal)\r\n : (alphabet = decimal, ALPHABET));\r\n\r\n // xc now represents str as an integer and converted to baseOut. e is the exponent.\r\n e = k = xc.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xc[--k] == 0; xc.pop());\r\n\r\n // Zero?\r\n if (!xc[0]) return alphabet.charAt(0);\r\n\r\n // Does str represent an integer? If so, no need for the division.\r\n if (i < 0) {\r\n --e;\r\n } else {\r\n x.c = xc;\r\n x.e = e;\r\n\r\n // The sign is needed for correct rounding.\r\n x.s = sign;\r\n x = div(x, y, dp, rm, baseOut);\r\n xc = x.c;\r\n r = x.r;\r\n e = x.e;\r\n }\r\n\r\n // xc now represents str converted to baseOut.\r\n\r\n // THe index of the rounding digit.\r\n d = e + dp + 1;\r\n\r\n // The rounding digit: the digit to the right of the digit that may be rounded up.\r\n i = xc[d];\r\n\r\n // Look at the rounding digits and mode to determine whether to round up.\r\n\r\n k = baseOut / 2;\r\n r = r || d < 0 || xc[d + 1] != null;\r\n\r\n r = rm < 4 ? (i != null || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : i > k || i == k &&(rm == 4 || r || rm == 6 && xc[d - 1] & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n // If the index of the rounding digit is not greater than zero, or xc represents\r\n // zero, then the result of the base conversion is zero or, if rounding up, a value\r\n // such as 0.00001.\r\n if (d < 1 || !xc[0]) {\r\n\r\n // 1^-dp or 0\r\n str = r ? toFixedPoint(alphabet.charAt(1), -dp, alphabet.charAt(0)) : alphabet.charAt(0);\r\n } else {\r\n\r\n // Truncate xc to the required number of decimal places.\r\n xc.length = d;\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (--baseOut; ++xc[--d] > baseOut;) {\r\n xc[d] = 0;\r\n\r\n if (!d) {\r\n ++e;\r\n xc = [1].concat(xc);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (k = xc.length; !xc[--k];);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i <= k; str += alphabet.charAt(xc[i++]));\r\n\r\n // Add leading zeros, decimal point and trailing zeros as required.\r\n str = toFixedPoint(str, e, alphabet.charAt(0));\r\n }\r\n\r\n // The caller will add the sign.\r\n return str;\r\n };\r\n })();\r\n\r\n\r\n // Perform division in the specified base. Called by div and convertBase.\r\n div = (function () {\r\n\r\n // Assume non-zero x and k.\r\n function multiply(x, k, base) {\r\n var m, temp, xlo, xhi,\r\n carry = 0,\r\n i = x.length,\r\n klo = k % SQRT_BASE,\r\n khi = k / SQRT_BASE | 0;\r\n\r\n for (x = x.slice(); i--;) {\r\n xlo = x[i] % SQRT_BASE;\r\n xhi = x[i] / SQRT_BASE | 0;\r\n m = khi * xlo + xhi * klo;\r\n temp = klo * xlo + ((m % SQRT_BASE) * SQRT_BASE) + carry;\r\n carry = (temp / base | 0) + (m / SQRT_BASE | 0) + khi * xhi;\r\n x[i] = temp % base;\r\n }\r\n\r\n if (carry) x = [carry].concat(x);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, cmp;\r\n\r\n if (aL != bL) {\r\n cmp = aL > bL ? 1 : -1;\r\n } else {\r\n\r\n for (i = cmp = 0; i < aL; i++) {\r\n\r\n if (a[i] != b[i]) {\r\n cmp = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return cmp;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1; a.splice(0, 1));\r\n }\r\n\r\n // x: dividend, y: divisor.\r\n return function (x, y, dp, rm, base) {\r\n var cmp, e, i, more, n, prod, prodL, q, qc, rem, remL, rem0, xi, xL, yc0,\r\n yL, yz,\r\n s = x.s == y.s ? 1 : -1,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xc || !xc[0] || !yc || !yc[0]) {\r\n\r\n return new BigNumber(\r\n\r\n // Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xc ? yc && xc[0] == yc[0] : !yc) ? NaN :\r\n\r\n // Return ±0 if x is ±0 or y is ±Infinity, or return ±Infinity as y is ±0.\r\n xc && xc[0] == 0 || !yc ? s * 0 : s / 0\r\n );\r\n }\r\n\r\n q = new BigNumber(s);\r\n qc = q.c = [];\r\n e = x.e - y.e;\r\n s = dp + e + 1;\r\n\r\n if (!base) {\r\n base = BASE;\r\n e = bitFloor(x.e / LOG_BASE) - bitFloor(y.e / LOG_BASE);\r\n s = s / LOG_BASE | 0;\r\n }\r\n\r\n // Result exponent may be one less then the current value of e.\r\n // The coefficients of the BigNumbers from convertBase may have trailing zeros.\r\n for (i = 0; yc[i] == (xc[i] || 0); i++);\r\n\r\n if (yc[i] > (xc[i] || 0)) e--;\r\n\r\n if (s < 0) {\r\n qc.push(1);\r\n more = true;\r\n } else {\r\n xL = xc.length;\r\n yL = yc.length;\r\n i = 0;\r\n s += 2;\r\n\r\n // Normalise xc and yc so highest order digit of yc is >= base / 2.\r\n\r\n n = mathfloor(base / (yc[0] + 1));\r\n\r\n // Not necessary, but to handle odd bases where yc[0] == (base / 2) - 1.\r\n // if (n > 1 || n++ == 1 && yc[0] < base / 2) {\r\n if (n > 1) {\r\n yc = multiply(yc, n, base);\r\n xc = multiply(xc, n, base);\r\n yL = yc.length;\r\n xL = xc.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xc.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL; rem[remL++] = 0);\r\n yz = yc.slice();\r\n yz = [0].concat(yz);\r\n yc0 = yc[0];\r\n if (yc[1] >= base / 2) yc0++;\r\n // Not necessary, but to prevent trial digit n > base, when using base 3.\r\n // else if (base == 3 && yc0 == 1) yc0 = 1 + 1e-15;\r\n\r\n do {\r\n n = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yc, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, n.\r\n\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // n is how many times the divisor goes into the current remainder.\r\n n = mathfloor(rem0 / yc0);\r\n\r\n // Algorithm:\r\n // product = divisor multiplied by trial digit (n).\r\n // Compare product and remainder.\r\n // If product is greater than remainder:\r\n // Subtract divisor from product, decrement trial digit.\r\n // Subtract product from remainder.\r\n // If product was less than remainder at the last compare:\r\n // Compare new remainder and divisor.\r\n // If remainder is greater than divisor:\r\n // Subtract divisor from remainder, increment trial digit.\r\n\r\n if (n > 1) {\r\n\r\n // n may be > base only when base is 3.\r\n if (n >= base) n = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiply(yc, n, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n // If product > remainder then trial digit n too high.\r\n // n is 1 too high about 5% of the time, and is not known to have\r\n // ever been more than 1 too high.\r\n while (compare(prod, rem, prodL, remL) == 1) {\r\n n--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yc, prodL, base);\r\n prodL = prod.length;\r\n cmp = 1;\r\n }\r\n } else {\r\n\r\n // n is 0 or 1, cmp is -1.\r\n // If n is 0, there is no need to compare yc and rem again below,\r\n // so change cmp to 1 to avoid it.\r\n // If n is 1, leave cmp as -1, so yc and rem are compared again.\r\n if (n == 0) {\r\n\r\n // divisor < remainder, so n must be at least 1.\r\n cmp = n = 1;\r\n }\r\n\r\n // product = divisor\r\n prod = yc.slice();\r\n prodL = prod.length;\r\n }\r\n\r\n if (prodL < remL) prod = [0].concat(prod);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n remL = rem.length;\r\n\r\n // If product was < remainder.\r\n if (cmp == -1) {\r\n\r\n // Compare divisor and new remainder.\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n // Trial digit n too low.\r\n // n is 1 too low about 5% of the time, and very rarely 2 too low.\r\n while (compare(yc, rem, yL, remL) < 1) {\r\n n++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yc, remL, base);\r\n remL = rem.length;\r\n }\r\n }\r\n } else if (cmp === 0) {\r\n n++;\r\n rem = [0];\r\n } // else cmp === 1 and n will be 0\r\n\r\n // Add the next digit, n, to the result array.\r\n qc[i++] = n;\r\n\r\n // Update the remainder.\r\n if (rem[0]) {\r\n rem[remL++] = xc[xi] || 0;\r\n } else {\r\n rem = [xc[xi]];\r\n remL = 1;\r\n }\r\n } while ((xi++ < xL || rem[0] != null) && s--);\r\n\r\n more = rem[0] != null;\r\n\r\n // Leading zero?\r\n if (!qc[0]) qc.splice(0, 1);\r\n }\r\n\r\n if (base == BASE) {\r\n\r\n // To calculate q.e, first get the number of digits of qc[0].\r\n for (i = 1, s = qc[0]; s >= 10; s /= 10, i++);\r\n\r\n round(q, dp + (q.e = i + e * LOG_BASE - 1) + 1, rm, more);\r\n\r\n // Caller is convertBase.\r\n } else {\r\n q.e = e;\r\n q.r = +more;\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a string representing the value of BigNumber n in fixed-point or exponential\r\n * notation rounded to the specified decimal places or significant digits.\r\n *\r\n * n: a BigNumber.\r\n * i: the index of the last digit required (i.e. the digit that may be rounded up).\r\n * rm: the rounding mode.\r\n * id: 1 (toExponential) or 2 (toPrecision).\r\n */\r\n function format(n, i, rm, id) {\r\n var c0, e, ne, len, str;\r\n\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n if (!n.c) return n.toString();\r\n\r\n c0 = n.c[0];\r\n ne = n.e;\r\n\r\n if (i == null) {\r\n str = coeffToString(n.c);\r\n str = id == 1 || id == 2 && (ne <= TO_EXP_NEG || ne >= TO_EXP_POS)\r\n ? toExponential(str, ne)\r\n : toFixedPoint(str, ne, '0');\r\n } else {\r\n n = round(new BigNumber(n), i, rm);\r\n\r\n // n.e may have changed if the value was rounded up.\r\n e = n.e;\r\n\r\n str = coeffToString(n.c);\r\n len = str.length;\r\n\r\n // toPrecision returns exponential notation if the number of significant digits\r\n // specified is less than the number of digits necessary to represent the integer\r\n // part of the value in fixed-point notation.\r\n\r\n // Exponential notation.\r\n if (id == 1 || id == 2 && (i <= e || e <= TO_EXP_NEG)) {\r\n\r\n // Append zeros?\r\n for (; len < i; str += '0', len++);\r\n str = toExponential(str, e);\r\n\r\n // Fixed-point notation.\r\n } else {\r\n i -= ne;\r\n str = toFixedPoint(str, e, '0');\r\n\r\n // Append zeros?\r\n if (e + 1 > len) {\r\n if (--i > 0) for (str += '.'; i--; str += '0');\r\n } else {\r\n i += e - len;\r\n if (i > 0) {\r\n if (e + 1 == len) str += '.';\r\n for (; i--; str += '0');\r\n }\r\n }\r\n }\r\n }\r\n\r\n return n.s < 0 && c0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Handle BigNumber.max and BigNumber.min.\r\n function maxOrMin(args, method) {\r\n var n,\r\n i = 1,\r\n m = new BigNumber(args[0]);\r\n\r\n for (; i < args.length; i++) {\r\n n = new BigNumber(args[i]);\r\n\r\n // If any number is NaN, return NaN.\r\n if (!n.s) {\r\n m = n;\r\n break;\r\n } else if (method.call(m, n)) {\r\n m = n;\r\n }\r\n }\r\n\r\n return m;\r\n }\r\n\r\n\r\n /*\r\n * Strip trailing zeros, calculate base 10 exponent and check against MIN_EXP and MAX_EXP.\r\n * Called by minus, plus and times.\r\n */\r\n function normalise(n, c, e) {\r\n var i = 1,\r\n j = c.length;\r\n\r\n // Remove trailing zeros.\r\n for (; !c[--j]; c.pop());\r\n\r\n // Calculate the base 10 exponent. First get the number of digits of c[0].\r\n for (j = c[0]; j >= 10; j /= 10, i++);\r\n\r\n // Overflow?\r\n if ((e = i + e * LOG_BASE - 1) > MAX_EXP) {\r\n\r\n // Infinity.\r\n n.c = n.e = null;\r\n\r\n // Underflow?\r\n } else if (e < MIN_EXP) {\r\n\r\n // Zero.\r\n n.c = [n.e = 0];\r\n } else {\r\n n.e = e;\r\n n.c = c;\r\n }\r\n\r\n return n;\r\n }\r\n\r\n\r\n // Handle values that fail the validity test in BigNumber.\r\n parseNumeric = (function () {\r\n var basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i,\r\n dotAfter = /^([^.]+)\\.$/,\r\n dotBefore = /^\\.([^.]+)$/,\r\n isInfinityOrNaN = /^-?(Infinity|NaN)$/,\r\n whitespaceOrPlus = /^\\s*\\+(?=[\\w.])|^\\s+|\\s+$/g;\r\n\r\n return function (x, str, isNum, b) {\r\n var base,\r\n s = isNum ? str : str.replace(whitespaceOrPlus, '');\r\n\r\n // No exception on ±Infinity or NaN.\r\n if (isInfinityOrNaN.test(s)) {\r\n x.s = isNaN(s) ? null : s < 0 ? -1 : 1;\r\n } else {\r\n if (!isNum) {\r\n\r\n // basePrefix = /^(-?)0([xbo])(?=\\w[\\w.]*$)/i\r\n s = s.replace(basePrefix, function (m, p1, p2) {\r\n base = (p2 = p2.toLowerCase()) == 'x' ? 16 : p2 == 'b' ? 2 : 8;\r\n return !b || b == base ? p1 : m;\r\n });\r\n\r\n if (b) {\r\n base = b;\r\n\r\n // E.g. '1.' to '1', '.1' to '0.1'\r\n s = s.replace(dotAfter, '$1').replace(dotBefore, '0.$1');\r\n }\r\n\r\n if (str != s) return new BigNumber(s, base);\r\n }\r\n\r\n // '[BigNumber Error] Not a number: {n}'\r\n // '[BigNumber Error] Not a base {b} number: {n}'\r\n if (BigNumber.DEBUG) {\r\n throw Error\r\n (bignumberError + 'Not a' + (b ? ' base ' + b : '') + ' number: ' + str);\r\n }\r\n\r\n // NaN\r\n x.s = null;\r\n }\r\n\r\n x.c = x.e = null;\r\n }\r\n })();\r\n\r\n\r\n /*\r\n * Round x to sd significant digits using rounding mode rm. Check for over/under-flow.\r\n * If r is truthy, it is known that there are more digits after the rounding digit.\r\n */\r\n function round(x, sd, rm, r) {\r\n var d, i, j, k, n, ni, rd,\r\n xc = x.c,\r\n pows10 = POWS_TEN;\r\n\r\n // if x is not Infinity or NaN...\r\n if (xc) {\r\n\r\n // rd is the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // n is a base 1e14 number, the value of the element of array x.c containing rd.\r\n // ni is the index of n within x.c.\r\n // d is the number of digits of n.\r\n // i is the index of rd within n including leading zeros.\r\n // j is the actual index of rd within n (if < 0, rd is a leading zero).\r\n out: {\r\n\r\n // Get the number of digits of the first element of xc.\r\n for (d = 1, k = xc[0]; k >= 10; k /= 10, d++);\r\n i = sd - d;\r\n\r\n // If the rounding digit is in the first element of xc...\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n n = xc[ni = 0];\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = n / pows10[d - j - 1] % 10 | 0;\r\n } else {\r\n ni = mathceil((i + 1) / LOG_BASE);\r\n\r\n if (ni >= xc.length) {\r\n\r\n if (r) {\r\n\r\n // Needed by sqrt.\r\n for (; xc.length <= ni; xc.push(0));\r\n n = rd = 0;\r\n d = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n n = k = xc[ni];\r\n\r\n // Get the number of digits of n.\r\n for (d = 1; k >= 10; k /= 10, d++);\r\n\r\n // Get the index of rd within n.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within n, adjusted for leading zeros.\r\n // The number of leading zeros of n is given by LOG_BASE - d.\r\n j = i - LOG_BASE + d;\r\n\r\n // Get the rounding digit at index j of n.\r\n rd = j < 0 ? 0 : n / pows10[d - j - 1] % 10 | 0;\r\n }\r\n }\r\n\r\n r = r || sd < 0 ||\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n // The expression n % pows10[d - j - 1] returns all digits of n to the right\r\n // of the digit at j, e.g. if n is 908714 and j is 2, the expression gives 714.\r\n xc[ni + 1] != null || (j < 0 ? n : n % pows10[d - j - 1]);\r\n\r\n r = rm < 4\r\n ? (rd || r) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || r || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? n / pows10[d - j] : 0 : xc[ni - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xc[0]) {\r\n xc.length = 0;\r\n\r\n if (r) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xc[0] = pows10[(LOG_BASE - sd % LOG_BASE) % LOG_BASE];\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xc[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xc.length = ni;\r\n k = 1;\r\n ni--;\r\n } else {\r\n xc.length = ni + 1;\r\n k = pows10[LOG_BASE - i];\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of n.\r\n xc[ni] = j > 0 ? mathfloor(n / pows10[d - j] % pows10[j]) * k : 0;\r\n }\r\n\r\n // Round up?\r\n if (r) {\r\n\r\n for (; ;) {\r\n\r\n // If the digit to be rounded up is in the first element of xc...\r\n if (ni == 0) {\r\n\r\n // i will be the length of xc[0] before k is added.\r\n for (i = 1, j = xc[0]; j >= 10; j /= 10, i++);\r\n j = xc[0] += k;\r\n for (k = 1; j >= 10; j /= 10, k++);\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xc[0] == BASE) xc[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xc[ni] += k;\r\n if (xc[ni] != BASE) break;\r\n xc[ni--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xc.length; xc[--i] === 0; xc.pop());\r\n }\r\n\r\n // Overflow? Infinity.\r\n if (x.e > MAX_EXP) {\r\n x.c = x.e = null;\r\n\r\n // Underflow? Zero.\r\n } else if (x.e < MIN_EXP) {\r\n x.c = [x.e = 0];\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function valueOf(n) {\r\n var str,\r\n e = n.e;\r\n\r\n if (e === null) return n.toString();\r\n\r\n str = coeffToString(n.c);\r\n\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(str, e)\r\n : toFixedPoint(str, e, '0');\r\n\r\n return n.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // PROTOTYPE/INSTANCE METHODS\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the absolute value of this BigNumber.\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new BigNumber(this);\r\n if (x.s < 0) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * -1 if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * 0 if they have the same value,\r\n * or null if the value of either is NaN.\r\n */\r\n P.comparedTo = function (y, b) {\r\n return compare(this, new BigNumber(y, b));\r\n };\r\n\r\n\r\n /*\r\n * If dp is undefined or null or true or false, return the number of decimal places of the\r\n * value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n *\r\n * Otherwise, if dp is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of dp decimal places using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * [dp] {number} Decimal places: integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.decimalPlaces = P.dp = function (dp, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), dp + x.e + 1, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n n = ((v = c.length - 1) - bitFloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last number.\r\n if (v = c[v]) for (; v % 10 == 0; v /= 10, n--);\r\n if (n < 0) n = 0;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber divided by the value of\r\n * BigNumber(y, b), rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.dividedBy = P.div = function (y, b) {\r\n return div(this, new BigNumber(y, b), DECIMAL_PLACES, ROUNDING_MODE);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the integer part of dividing the value of this\r\n * BigNumber by the value of BigNumber(y, b).\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y, b) {\r\n return div(this, new BigNumber(y, b), 0, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a BigNumber whose value is the value of this BigNumber exponentiated by n.\r\n *\r\n * If m is present, return the result modulo m.\r\n * If n is negative round according to DECIMAL_PLACES and ROUNDING_MODE.\r\n * If POW_PRECISION is non-zero and m is not present, round to POW_PRECISION using ROUNDING_MODE.\r\n *\r\n * The modular power operation works efficiently when x, n, and m are integers, otherwise it\r\n * is equivalent to calculating x.exponentiatedBy(n).modulo(m) with a POW_PRECISION of 0.\r\n *\r\n * n {number|string|BigNumber} The exponent. An integer.\r\n * [m] {number|string|BigNumber} The modulus.\r\n *\r\n * '[BigNumber Error] Exponent not an integer: {n}'\r\n */\r\n P.exponentiatedBy = P.pow = function (n, m) {\r\n var half, isModExp, i, k, more, nIsBig, nIsNeg, nIsOdd, y,\r\n x = this;\r\n\r\n n = new BigNumber(n);\r\n\r\n // Allow NaN and ±Infinity, but not other non-integers.\r\n if (n.c && !n.isInteger()) {\r\n throw Error\r\n (bignumberError + 'Exponent not an integer: ' + valueOf(n));\r\n }\r\n\r\n if (m != null) m = new BigNumber(m);\r\n\r\n // Exponent of MAX_SAFE_INTEGER is 15.\r\n nIsBig = n.e > 14;\r\n\r\n // If x is NaN, ±Infinity, ±0 or ±1, or n is ±Infinity, NaN or ±0.\r\n if (!x.c || !x.c[0] || x.c[0] == 1 && !x.e && x.c.length == 1 || !n.c || !n.c[0]) {\r\n\r\n // The sign of the result of pow when x is negative depends on the evenness of n.\r\n // If +n overflows to ±Infinity, the evenness of n would be not be known.\r\n y = new BigNumber(Math.pow(+valueOf(x), nIsBig ? 2 - isOdd(n) : +valueOf(n)));\r\n return m ? y.mod(m) : y;\r\n }\r\n\r\n nIsNeg = n.s < 0;\r\n\r\n if (m) {\r\n\r\n // x % m returns NaN if abs(m) is zero, or m is NaN.\r\n if (m.c ? !m.c[0] : !m.s) return new BigNumber(NaN);\r\n\r\n isModExp = !nIsNeg && x.isInteger() && m.isInteger();\r\n\r\n if (isModExp) x = x.mod(m);\r\n\r\n // Overflow to ±Infinity: >=2**1e10 or >=1.0000024**1e15.\r\n // Underflow to ±0: <=0.79**1e10 or <=0.9999975**1e15.\r\n } else if (n.e > 9 && (x.e > 0 || x.e < -1 || (x.e == 0\r\n // [1, 240000000]\r\n ? x.c[0] > 1 || nIsBig && x.c[1] >= 24e7\r\n // [80000000000000] [99999750000000]\r\n : x.c[0] < 8e13 || nIsBig && x.c[0] <= 9999975e7))) {\r\n\r\n // If x is negative and n is odd, k = -0, else k = 0.\r\n k = x.s < 0 && isOdd(n) ? -0 : 0;\r\n\r\n // If x >= 1, k = ±Infinity.\r\n if (x.e > -1) k = 1 / k;\r\n\r\n // If n is negative return ±0, else return ±Infinity.\r\n return new BigNumber(nIsNeg ? 1 / k : k);\r\n\r\n } else if (POW_PRECISION) {\r\n\r\n // Truncating each coefficient array to a length of k after each multiplication\r\n // equates to truncating significant digits to POW_PRECISION + [28, 41],\r\n // i.e. there will be a minimum of 28 guard digits retained.\r\n k = mathceil(POW_PRECISION / LOG_BASE + 2);\r\n }\r\n\r\n if (nIsBig) {\r\n half = new BigNumber(0.5);\r\n if (nIsNeg) n.s = 1;\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = Math.abs(+valueOf(n));\r\n nIsOdd = i % 2;\r\n }\r\n\r\n y = new BigNumber(ONE);\r\n\r\n // Performs 54 loop iterations for n of 9007199254740991.\r\n for (; ;) {\r\n\r\n if (nIsOdd) {\r\n y = y.times(x);\r\n if (!y.c) break;\r\n\r\n if (k) {\r\n if (y.c.length > k) y.c.length = k;\r\n } else if (isModExp) {\r\n y = y.mod(m); //y = y.minus(div(y, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (i) {\r\n i = mathfloor(i / 2);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n } else {\r\n n = n.times(half);\r\n round(n, n.e + 1, 1);\r\n\r\n if (n.e > 14) {\r\n nIsOdd = isOdd(n);\r\n } else {\r\n i = +valueOf(n);\r\n if (i === 0) break;\r\n nIsOdd = i % 2;\r\n }\r\n }\r\n\r\n x = x.times(x);\r\n\r\n if (k) {\r\n if (x.c && x.c.length > k) x.c.length = k;\r\n } else if (isModExp) {\r\n x = x.mod(m); //x = x.minus(div(x, m, 0, MODULO_MODE).times(m));\r\n }\r\n }\r\n\r\n if (isModExp) return y;\r\n if (nIsNeg) y = ONE.div(y);\r\n\r\n return m ? y.mod(m) : k ? round(y, POW_PRECISION, ROUNDING_MODE, more) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber rounded to an integer\r\n * using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {rm}'\r\n */\r\n P.integerValue = function (rm) {\r\n var n = new BigNumber(this);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n return round(n, n.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is equal to the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isEqualTo = P.eq = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is a finite number, otherwise return false.\r\n */\r\n P.isFinite = function () {\r\n return !!this.c;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isGreaterThan = P.gt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is greater than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isGreaterThanOrEqualTo = P.gte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === 1 || b === 0;\r\n\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is an integer, otherwise return false.\r\n */\r\n P.isInteger = function () {\r\n return !!this.c && bitFloor(this.e / LOG_BASE) > this.c.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than the value of BigNumber(y, b),\r\n * otherwise return false.\r\n */\r\n P.isLessThan = P.lt = function (y, b) {\r\n return compare(this, new BigNumber(y, b)) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is less than or equal to the value of\r\n * BigNumber(y, b), otherwise return false.\r\n */\r\n P.isLessThanOrEqualTo = P.lte = function (y, b) {\r\n return (b = compare(this, new BigNumber(y, b))) === -1 || b === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is NaN, otherwise return false.\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is negative, otherwise return false.\r\n */\r\n P.isNegative = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is positive, otherwise return false.\r\n */\r\n P.isPositive = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this BigNumber is 0 or -0, otherwise return false.\r\n */\r\n P.isZero = function () {\r\n return !!this.c && this.c[0] == 0;\r\n };\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber minus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.minus = function (y, b) {\r\n var i, j, t, xLTy,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.plus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return xc ? (y.s = -b, y) : new BigNumber(yc ? x : NaN);\r\n\r\n // Either zero?\r\n if (!xc[0] || !yc[0]) {\r\n\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n return yc[0] ? (y.s = -b, y) : new BigNumber(xc[0] ? x :\r\n\r\n // IEEE 754 (2008) 6.3: n - n = -0 when rounding to -Infinity\r\n ROUNDING_MODE == 3 ? -0 : 0);\r\n }\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Determine which is the bigger number.\r\n if (a = xe - ye) {\r\n\r\n if (xLTy = a < 0) {\r\n a = -a;\r\n t = xc;\r\n } else {\r\n ye = xe;\r\n t = yc;\r\n }\r\n\r\n t.reverse();\r\n\r\n // Prepend zeros to equalise exponents.\r\n for (b = a; b--; t.push(0));\r\n t.reverse();\r\n } else {\r\n\r\n // Exponents equal. Check digit by digit.\r\n j = (xLTy = (a = xc.length) < (b = yc.length)) ? a : b;\r\n\r\n for (a = b = 0; b < j; b++) {\r\n\r\n if (xc[b] != yc[b]) {\r\n xLTy = xc[b] < yc[b];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // x < y? Point xc to the array of the bigger number.\r\n if (xLTy) {\r\n t = xc;\r\n xc = yc;\r\n yc = t;\r\n y.s = -y.s;\r\n } \r\n\r\n b = (j = yc.length) - (i = xc.length);\r\n\r\n // Append zeros to xc if shorter.\r\n // No need to add zeros to yc if shorter as subtract only needs to start at yc.length.\r\n if (b > 0) for (; b--; xc[i++] = 0);\r\n b = BASE - 1;\r\n\r\n // Subtract yc from xc.\r\n for (; j > a;) {\r\n\r\n if (xc[--j] < yc[j]) {\r\n for (i = j; i && !xc[--i]; xc[i] = b);\r\n --xc[i];\r\n xc[j] += BASE;\r\n }\r\n\r\n xc[j] -= yc[j];\r\n }\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xc[0] == 0; xc.splice(0, 1), --ye);\r\n\r\n // Zero?\r\n if (!xc[0]) {\r\n\r\n // Following IEEE 754 (2008) 6.3,\r\n // n - n = +0 but n - n = -0 when rounding towards -Infinity.\r\n y.s = ROUNDING_MODE == 3 ? -1 : 1;\r\n y.c = [y.e = 0];\r\n return y;\r\n }\r\n\r\n // No need to check for Infinity as +x - +y != Infinity && -x - -y != Infinity\r\n // for finite x and y.\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber modulo the value of\r\n * BigNumber(y, b). The result depends on the value of MODULO_MODE.\r\n */\r\n P.modulo = P.mod = function (y, b) {\r\n var q, s,\r\n x = this;\r\n\r\n y = new BigNumber(y, b);\r\n\r\n // Return NaN if x is Infinity or NaN, or y is NaN or zero.\r\n if (!x.c || !y.s || y.c && !y.c[0]) {\r\n return new BigNumber(NaN);\r\n\r\n // Return x if y is Infinity or x is zero.\r\n } else if (!y.c || x.c && !x.c[0]) {\r\n return new BigNumber(x);\r\n }\r\n\r\n if (MODULO_MODE == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // r = x - qy where 0 <= r < abs(y)\r\n s = y.s;\r\n y.s = 1;\r\n q = div(x, y, 0, 3);\r\n y.s = s;\r\n q.s *= s;\r\n } else {\r\n q = div(x, y, 0, MODULO_MODE);\r\n }\r\n\r\n y = x.minus(q.times(y));\r\n\r\n // To match JavaScript %, ensure sign of zero is sign of dividend.\r\n if (!y.c[0] && MODULO_MODE == 1) y.s = x.s;\r\n\r\n return y;\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber multiplied by the value\r\n * of BigNumber(y, b).\r\n */\r\n P.multipliedBy = P.times = function (y, b) {\r\n var c, e, i, j, k, m, xcL, xlo, xhi, ycL, ylo, yhi, zc,\r\n base, sqrtBase,\r\n x = this,\r\n xc = x.c,\r\n yc = (y = new BigNumber(y, b)).c;\r\n\r\n // Either NaN, ±Infinity or ±0?\r\n if (!xc || !yc || !xc[0] || !yc[0]) {\r\n\r\n // Return NaN if either is NaN, or one is 0 and the other is Infinity.\r\n if (!x.s || !y.s || xc && !xc[0] && !yc || yc && !yc[0] && !xc) {\r\n y.c = y.e = y.s = null;\r\n } else {\r\n y.s *= x.s;\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n if (!xc || !yc) {\r\n y.c = y.e = null;\r\n\r\n // Return ±0 if either is ±0.\r\n } else {\r\n y.c = [0];\r\n y.e = 0;\r\n }\r\n }\r\n\r\n return y;\r\n }\r\n\r\n e = bitFloor(x.e / LOG_BASE) + bitFloor(y.e / LOG_BASE);\r\n y.s *= x.s;\r\n xcL = xc.length;\r\n ycL = yc.length;\r\n\r\n // Ensure xc points to longer array and xcL to its length.\r\n if (xcL < ycL) {\r\n zc = xc;\r\n xc = yc;\r\n yc = zc;\r\n i = xcL;\r\n xcL = ycL;\r\n ycL = i;\r\n } \r\n\r\n // Initialise the result array with zeros.\r\n for (i = xcL + ycL, zc = []; i--; zc.push(0));\r\n\r\n base = BASE;\r\n sqrtBase = SQRT_BASE;\r\n\r\n for (i = ycL; --i >= 0;) {\r\n c = 0;\r\n ylo = yc[i] % sqrtBase;\r\n yhi = yc[i] / sqrtBase | 0;\r\n\r\n for (k = xcL, j = i + k; j > i;) {\r\n xlo = xc[--k] % sqrtBase;\r\n xhi = xc[k] / sqrtBase | 0;\r\n m = yhi * xlo + xhi * ylo;\r\n xlo = ylo * xlo + ((m % sqrtBase) * sqrtBase) + zc[j] + c;\r\n c = (xlo / base | 0) + (m / sqrtBase | 0) + yhi * xhi;\r\n zc[j--] = xlo % base;\r\n }\r\n\r\n zc[j] = c;\r\n }\r\n\r\n if (c) {\r\n ++e;\r\n } else {\r\n zc.splice(0, 1);\r\n }\r\n\r\n return normalise(y, zc, e);\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber negated,\r\n * i.e. multiplied by -1.\r\n */\r\n P.negated = function () {\r\n var x = new BigNumber(this);\r\n x.s = -x.s || null;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new BigNumber whose value is the value of this BigNumber plus the value of\r\n * BigNumber(y, b).\r\n */\r\n P.plus = function (y, b) {\r\n var t,\r\n x = this,\r\n a = x.s;\r\n\r\n y = new BigNumber(y, b);\r\n b = y.s;\r\n\r\n // Either NaN?\r\n if (!a || !b) return new BigNumber(NaN);\r\n\r\n // Signs differ?\r\n if (a != b) {\r\n y.s = -b;\r\n return x.minus(y);\r\n }\r\n\r\n var xe = x.e / LOG_BASE,\r\n ye = y.e / LOG_BASE,\r\n xc = x.c,\r\n yc = y.c;\r\n\r\n if (!xe || !ye) {\r\n\r\n // Return ±Infinity if either ±Infinity.\r\n if (!xc || !yc) return new BigNumber(a / 0);\r\n\r\n // Either zero?\r\n // Return y if y is non-zero, x if x is non-zero, or zero if both are zero.\r\n if (!xc[0] || !yc[0]) return yc[0] ? y : new BigNumber(xc[0] ? x : a * 0);\r\n }\r\n\r\n xe = bitFloor(xe);\r\n ye = bitFloor(ye);\r\n xc = xc.slice();\r\n\r\n // Prepend zeros to equalise exponents. Faster to use reverse then do unshifts.\r\n if (a = xe - ye) {\r\n if (a > 0) {\r\n ye = xe;\r\n t = yc;\r\n } else {\r\n a = -a;\r\n t = xc;\r\n }\r\n\r\n t.reverse();\r\n for (; a--; t.push(0));\r\n t.reverse();\r\n }\r\n\r\n a = xc.length;\r\n b = yc.length;\r\n\r\n // Point xc to the longer array, and b to the shorter length.\r\n if (a - b < 0) {\r\n t = yc;\r\n yc = xc;\r\n xc = t;\r\n b = a;\r\n } \r\n\r\n // Only start adding at yc.length - 1 as the further digits of xc can be ignored.\r\n for (a = 0; b;) {\r\n a = (xc[--b] = xc[b] + yc[b] + a) / BASE | 0;\r\n xc[b] = BASE === xc[b] ? 0 : xc[b] % BASE;\r\n }\r\n\r\n if (a) {\r\n xc = [a].concat(xc);\r\n ++ye;\r\n }\r\n\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n // ye = MAX_EXP + 1 possible\r\n return normalise(y, xc, ye);\r\n };\r\n\r\n\r\n /*\r\n * If sd is undefined or null or true or false, return the number of significant digits of\r\n * the value of this BigNumber, or null if the value of this BigNumber is ±Infinity or NaN.\r\n * If sd is true include integer-part trailing zeros in the count.\r\n *\r\n * Otherwise, if sd is a number, return a new BigNumber whose value is the value of this\r\n * BigNumber rounded to a maximum of sd significant digits using rounding mode rm, or\r\n * ROUNDING_MODE if rm is omitted.\r\n *\r\n * sd {number|boolean} number: significant digits: integer, 1 to MAX inclusive.\r\n * boolean: whether to count integer-part trailing zeros: true or false.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.precision = P.sd = function (sd, rm) {\r\n var c, n, v,\r\n x = this;\r\n\r\n if (sd != null && sd !== !!sd) {\r\n intCheck(sd, 1, MAX);\r\n if (rm == null) rm = ROUNDING_MODE;\r\n else intCheck(rm, 0, 8);\r\n\r\n return round(new BigNumber(x), sd, rm);\r\n }\r\n\r\n if (!(c = x.c)) return null;\r\n v = c.length - 1;\r\n n = v * LOG_BASE + 1;\r\n\r\n if (v = c[v]) {\r\n\r\n // Subtract the number of trailing zeros of the last element.\r\n for (; v % 10 == 0; v /= 10, n--);\r\n\r\n // Add the number of digits of the first element.\r\n for (v = c[0]; v >= 10; v /= 10, n++);\r\n }\r\n\r\n if (sd && x.e + 1 > n) n = x.e + 1;\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * Return a new BigNumber whose value is the value of this BigNumber shifted by k places\r\n * (powers of 10). Shift to the right if n > 0, and to the left if n < 0.\r\n *\r\n * k {number} Integer, -MAX_SAFE_INTEGER to MAX_SAFE_INTEGER inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {k}'\r\n */\r\n P.shiftedBy = function (k) {\r\n intCheck(k, -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER);\r\n return this.times('1e' + k);\r\n };\r\n\r\n\r\n /*\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n * Return a new BigNumber whose value is the square root of the value of this BigNumber,\r\n * rounded according to DECIMAL_PLACES and ROUNDING_MODE.\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, r, rep, t,\r\n x = this,\r\n c = x.c,\r\n s = x.s,\r\n e = x.e,\r\n dp = DECIMAL_PLACES + 4,\r\n half = new BigNumber('0.5');\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !c || !c[0]) {\r\n return new BigNumber(!s || s < 0 && (!c || c[0]) ? NaN : c ? x : 1 / 0);\r\n }\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+valueOf(x));\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = coeffToString(c);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(+n);\r\n e = bitFloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new BigNumber(n);\r\n } else {\r\n r = new BigNumber(s + '');\r\n }\r\n\r\n // Check for zero.\r\n // r could be zero if MIN_EXP is changed after the this value was created.\r\n // This would cause a division by zero (x/t) and hence Infinity below, which would cause\r\n // coeffToString to throw.\r\n if (r.c[0]) {\r\n e = r.e;\r\n s = e + dp;\r\n if (s < 3) s = 0;\r\n\r\n // Newton-Raphson iteration.\r\n for (; ;) {\r\n t = r;\r\n r = half.times(t.plus(div(x, t, dp, 1)));\r\n\r\n if (coeffToString(t.c).slice(0, s) === (n = coeffToString(r.c)).slice(0, s)) {\r\n\r\n // The exponent of r may here be one less than the final result exponent,\r\n // e.g 0.0009999 (e-4) --> 0.001 (e-3), so adjust s so the rounding digits\r\n // are indexed correctly.\r\n if (r.e < e) --s;\r\n n = n.slice(s - 3, s + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits\r\n // are 9999 or 4999 (i.e. approaching a rounding boundary) continue the\r\n // iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the\r\n // exact result as the nines may infinitely repeat.\r\n if (!rep) {\r\n round(t, t.e + DECIMAL_PLACES + 2, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n dp += 4;\r\n s += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If rounding digits are null, 0{0,4} or 50{0,3}, check for exact\r\n // result. If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n round(r, r.e + DECIMAL_PLACES + 2, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return round(r, r.e + DECIMAL_PLACES + 1, ROUNDING_MODE, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in exponential notation and\r\n * rounded using ROUNDING_MODE to dp fixed decimal places.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toExponential = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp++;\r\n }\r\n return format(this, dp, rm, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounding\r\n * to dp fixed decimal places using rounding mode rm, or ROUNDING_MODE if rm is omitted.\r\n *\r\n * Note: as with JavaScript's number type, (-0).toFixed(0) is '0',\r\n * but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n */\r\n P.toFixed = function (dp, rm) {\r\n if (dp != null) {\r\n intCheck(dp, 0, MAX);\r\n dp = dp + this.e + 1;\r\n }\r\n return format(this, dp, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in fixed-point notation rounded\r\n * using rm or ROUNDING_MODE to dp decimal places, and formatted according to the properties\r\n * of the format or FORMAT object (see BigNumber.set).\r\n *\r\n * The formatting object may contain some or all of the properties shown below.\r\n *\r\n * FORMAT = {\r\n * prefix: '',\r\n * groupSize: 3,\r\n * secondaryGroupSize: 0,\r\n * groupSeparator: ',',\r\n * decimalSeparator: '.',\r\n * fractionGroupSize: 0,\r\n * fractionGroupSeparator: '\\xA0', // non-breaking space\r\n * suffix: ''\r\n * };\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n * [format] {object} Formatting options. See FORMAT pbject above.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {dp|rm}'\r\n * '[BigNumber Error] Argument not an object: {format}'\r\n */\r\n P.toFormat = function (dp, rm, format) {\r\n var str,\r\n x = this;\r\n\r\n if (format == null) {\r\n if (dp != null && rm && typeof rm == 'object') {\r\n format = rm;\r\n rm = null;\r\n } else if (dp && typeof dp == 'object') {\r\n format = dp;\r\n dp = rm = null;\r\n } else {\r\n format = FORMAT;\r\n }\r\n } else if (typeof format != 'object') {\r\n throw Error\r\n (bignumberError + 'Argument not an object: ' + format);\r\n }\r\n\r\n str = x.toFixed(dp, rm);\r\n\r\n if (x.c) {\r\n var i,\r\n arr = str.split('.'),\r\n g1 = +format.groupSize,\r\n g2 = +format.secondaryGroupSize,\r\n groupSeparator = format.groupSeparator || '',\r\n intPart = arr[0],\r\n fractionPart = arr[1],\r\n isNeg = x.s < 0,\r\n intDigits = isNeg ? intPart.slice(1) : intPart,\r\n len = intDigits.length;\r\n\r\n if (g2) {\r\n i = g1;\r\n g1 = g2;\r\n g2 = i;\r\n len -= i;\r\n } \r\n\r\n if (g1 > 0 && len > 0) {\r\n i = len % g1 || g1;\r\n intPart = intDigits.substr(0, i);\r\n for (; i < len; i += g1) intPart += groupSeparator + intDigits.substr(i, g1);\r\n if (g2 > 0) intPart += groupSeparator + intDigits.slice(i);\r\n if (isNeg) intPart = '-' + intPart;\r\n }\r\n\r\n str = fractionPart\r\n ? intPart + (format.decimalSeparator || '') + ((g2 = +format.fractionGroupSize)\r\n ? fractionPart.replace(new RegExp('\\\\d{' + g2 + '}\\\\B', 'g'),\r\n '$&' + (format.fractionGroupSeparator || ''))\r\n : fractionPart)\r\n : intPart;\r\n }\r\n\r\n return (format.prefix || '') + str + (format.suffix || '');\r\n };\r\n\r\n\r\n /*\r\n * Return an array of two BigNumbers representing the value of this BigNumber as a simple\r\n * fraction with an integer numerator and an integer denominator.\r\n * The denominator will be a positive non-zero value less than or equal to the specified\r\n * maximum denominator. If a maximum denominator is not specified, the denominator will be\r\n * the lowest value necessary to represent the number exactly.\r\n *\r\n * [md] {number|string|BigNumber} Integer >= 1, or Infinity. The maximum denominator.\r\n *\r\n * '[BigNumber Error] Argument {not an integer|out of range} : {md}'\r\n */\r\n P.toFraction = function (md) {\r\n var d, d0, d1, d2, e, exp, n, n0, n1, q, r, s,\r\n x = this,\r\n xc = x.c;\r\n\r\n if (md != null) {\r\n n = new BigNumber(md);\r\n\r\n // Throw if md is less than one or is not an integer, unless it is Infinity.\r\n if (!n.isInteger() && (n.c || n.s !== 1) || n.lt(ONE)) {\r\n throw Error\r\n (bignumberError + 'Argument ' +\r\n (n.isInteger() ? 'out of range: ' : 'not an integer: ') + valueOf(n));\r\n }\r\n }\r\n\r\n if (!xc) return new BigNumber(x);\r\n\r\n d = new BigNumber(ONE);\r\n n1 = d0 = new BigNumber(ONE);\r\n d1 = n0 = new BigNumber(ONE);\r\n s = coeffToString(xc);\r\n\r\n // Determine initial denominator.\r\n // d is a power of 10 and the minimum max denominator that specifies the value exactly.\r\n e = d.e = s.length - x.e - 1;\r\n d.c[0] = POWS_TEN[(exp = e % LOG_BASE) < 0 ? LOG_BASE + exp : exp];\r\n md = !md || n.comparedTo(d) > 0 ? (e > 0 ? d : n1) : n;\r\n\r\n exp = MAX_EXP;\r\n MAX_EXP = 1 / 0;\r\n n = new BigNumber(s);\r\n\r\n // n0 = d1 = 0\r\n n0.c[0] = 0;\r\n\r\n for (; ;) {\r\n q = div(n, d, 0, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.comparedTo(md) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n n1 = n0.plus(q.times(d2 = n1));\r\n n0 = d2;\r\n d = n.minus(q.times(d2 = d));\r\n n = d2;\r\n }\r\n\r\n d2 = div(md.minus(d0), d1, 0, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n e = e * 2;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1\r\n r = div(n1, d1, e, ROUNDING_MODE).minus(x).abs().comparedTo(\r\n div(n0, d0, e, ROUNDING_MODE).minus(x).abs()) < 1 ? [n1, d1] : [n0, d0];\r\n\r\n MAX_EXP = exp;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this BigNumber converted to a number primitive.\r\n */\r\n P.toNumber = function () {\r\n return +valueOf(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber rounded to sd significant digits\r\n * using rounding mode rm or ROUNDING_MODE. If sd is less than the number of digits\r\n * necessary to represent the integer part of the value in fixed-point notation, then use\r\n * exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * '[BigNumber Error] Argument {not a primitive number|not an integer|out of range}: {sd|rm}'\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n if (sd != null) intCheck(sd, 1, MAX);\r\n return format(this, sd, rm, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this BigNumber in base b, or base 10 if b is\r\n * omitted. If a base is specified, including base 10, round according to DECIMAL_PLACES and\r\n * ROUNDING_MODE. If a base is not specified, and this BigNumber has a positive exponent\r\n * that is equal to or greater than TO_EXP_POS, or a negative exponent equal to or less than\r\n * TO_EXP_NEG, return exponential notation.\r\n *\r\n * [b] {number} Integer, 2 to ALPHABET.length inclusive.\r\n *\r\n * '[BigNumber Error] Base {not a primitive number|not an integer|out of range}: {b}'\r\n */\r\n P.toString = function (b) {\r\n var str,\r\n n = this,\r\n s = n.s,\r\n e = n.e;\r\n\r\n // Infinity or NaN?\r\n if (e === null) {\r\n if (s) {\r\n str = 'Infinity';\r\n if (s < 0) str = '-' + str;\r\n } else {\r\n str = 'NaN';\r\n }\r\n } else {\r\n if (b == null) {\r\n str = e <= TO_EXP_NEG || e >= TO_EXP_POS\r\n ? toExponential(coeffToString(n.c), e)\r\n : toFixedPoint(coeffToString(n.c), e, '0');\r\n } else if (b === 10 && alphabetHasNormalDecimalDigits) {\r\n n = round(new BigNumber(n), DECIMAL_PLACES + e + 1, ROUNDING_MODE);\r\n str = toFixedPoint(coeffToString(n.c), n.e, '0');\r\n } else {\r\n intCheck(b, 2, ALPHABET.length, 'Base');\r\n str = convertBase(toFixedPoint(coeffToString(n.c), e, '0'), 10, b, s, true);\r\n }\r\n\r\n if (s < 0 && n.c[0]) str = '-' + str;\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return as toString, but do not accept a base argument, and include the minus sign for\r\n * negative zero.\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n return valueOf(this);\r\n };\r\n\r\n\r\n P._isBigNumber = true;\r\n\r\n if (configObject != null) BigNumber.set(configObject);\r\n\r\n return BigNumber;\r\n }\r\n\r\n\r\n // PRIVATE HELPER FUNCTIONS\r\n\r\n // These functions don't need access to variables,\r\n // e.g. DECIMAL_PLACES, in the scope of the `clone` function above.\r\n\r\n\r\n function bitFloor(n) {\r\n var i = n | 0;\r\n return n > 0 || n === i ? i : i - 1;\r\n }\r\n\r\n\r\n // Return a coefficient array as a string of base 10 digits.\r\n function coeffToString(a) {\r\n var s, z,\r\n i = 1,\r\n j = a.length,\r\n r = a[0] + '';\r\n\r\n for (; i < j;) {\r\n s = a[i++] + '';\r\n z = LOG_BASE - s.length;\r\n for (; z--; s = '0' + s);\r\n r += s;\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (j = r.length; r.charCodeAt(--j) === 48;);\r\n\r\n return r.slice(0, j + 1 || 1);\r\n }\r\n\r\n\r\n // Compare the value of BigNumbers x and y.\r\n function compare(x, y) {\r\n var a, b,\r\n xc = x.c,\r\n yc = y.c,\r\n i = x.s,\r\n j = y.s,\r\n k = x.e,\r\n l = y.e;\r\n\r\n // Either NaN?\r\n if (!i || !j) return null;\r\n\r\n a = xc && !xc[0];\r\n b = yc && !yc[0];\r\n\r\n // Either zero?\r\n if (a || b) return a ? b ? 0 : -j : i;\r\n\r\n // Signs differ?\r\n if (i != j) return i;\r\n\r\n a = i < 0;\r\n b = k == l;\r\n\r\n // Either Infinity?\r\n if (!xc || !yc) return b ? 0 : !xc ^ a ? 1 : -1;\r\n\r\n // Compare exponents.\r\n if (!b) return k > l ^ a ? 1 : -1;\r\n\r\n j = (k = xc.length) < (l = yc.length) ? k : l;\r\n\r\n // Compare digit by digit.\r\n for (i = 0; i < j; i++) if (xc[i] != yc[i]) return xc[i] > yc[i] ^ a ? 1 : -1;\r\n\r\n // Compare lengths.\r\n return k == l ? 0 : k > l ^ a ? 1 : -1;\r\n }\r\n\r\n\r\n /*\r\n * Check that n is a primitive number, an integer, and in range, otherwise throw.\r\n */\r\n function intCheck(n, min, max, name) {\r\n if (n < min || n > max || n !== mathfloor(n)) {\r\n throw Error\r\n (bignumberError + (name || 'Argument') + (typeof n == 'number'\r\n ? n < min || n > max ? ' out of range: ' : ' not an integer: '\r\n : ' not a primitive number: ') + String(n));\r\n }\r\n }\r\n\r\n\r\n // Assumes finite n.\r\n function isOdd(n) {\r\n var k = n.c.length - 1;\r\n return bitFloor(n.e / LOG_BASE) == k && n.c[k] % 2 != 0;\r\n }\r\n\r\n\r\n function toExponential(str, e) {\r\n return (str.length > 1 ? str.charAt(0) + '.' + str.slice(1) : str) +\r\n (e < 0 ? 'e' : 'e+') + e;\r\n }\r\n\r\n\r\n function toFixedPoint(str, e, z) {\r\n var len, zs;\r\n\r\n // Negative exponent?\r\n if (e < 0) {\r\n\r\n // Prepend zeros.\r\n for (zs = z + '.'; ++e; zs += z);\r\n str = zs + str;\r\n\r\n // Positive exponent\r\n } else {\r\n len = str.length;\r\n\r\n // Append zeros.\r\n if (++e > len) {\r\n for (zs = z, e -= len; --e; zs += z);\r\n str += zs;\r\n } else if (e < len) {\r\n str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // EXPORT\r\n\r\n\r\n BigNumber = clone();\r\n BigNumber['default'] = BigNumber.BigNumber = BigNumber;\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () { return BigNumber; });\r\n\r\n // Node.js and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = BigNumber;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalObject) {\r\n globalObject = typeof self != 'undefined' && self ? self : window;\r\n }\r\n\r\n globalObject.BigNumber = BigNumber;\r\n }\r\n})(this);\r\n","\"use strict\";\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nexports.__esModule = true;\nexports.sqrt = void 0;\nvar bn_js_1 = __importDefault(require(\"bn.js\"));\nvar sqrt = function (num) {\n if (num.lt(new bn_js_1[\"default\"](0))) {\n throw new Error(\"Sqrt only works on non-negtiave inputs\");\n }\n if (num.lt(new bn_js_1[\"default\"](2))) {\n return num;\n }\n var smallCand = (0, exports.sqrt)(num.shrn(2)).shln(1);\n var largeCand = smallCand.add(new bn_js_1[\"default\"](1));\n if (largeCand.mul(largeCand).gt(num)) {\n return smallCand;\n }\n else {\n return largeCand;\n }\n};\nexports.sqrt = sqrt;\nexports[\"default\"] = exports.sqrt;\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","\"use strict\";\nvar __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\n}) : (function(o, m, k, k2) {\n if (k2 === undefined) k2 = k;\n o[k2] = m[k];\n}));\nvar __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\n}) : function(o, v) {\n o[\"default\"] = v;\n});\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nvar __importStar = (this && this.__importStar) || function (mod) {\n if (mod && mod.__esModule) return mod;\n var result = {};\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\n __setModuleDefault(result, mod);\n return result;\n};\nvar __importDefault = (this && this.__importDefault) || function (mod) {\n return (mod && mod.__esModule) ? mod : { \"default\": mod };\n};\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.deserializeUnchecked = exports.deserialize = exports.serialize = exports.BinaryReader = exports.BinaryWriter = exports.BorshError = exports.baseDecode = exports.baseEncode = void 0;\nconst bn_js_1 = __importDefault(require(\"bn.js\"));\nconst bs58_1 = __importDefault(require(\"bs58\"));\n// TODO: Make sure this polyfill not included when not required\nconst encoding = __importStar(require(\"text-encoding-utf-8\"));\nconst ResolvedTextDecoder = typeof TextDecoder !== \"function\" ? encoding.TextDecoder : TextDecoder;\nconst textDecoder = new ResolvedTextDecoder(\"utf-8\", { fatal: true });\nfunction baseEncode(value) {\n if (typeof value === \"string\") {\n value = Buffer.from(value, \"utf8\");\n }\n return bs58_1.default.encode(Buffer.from(value));\n}\nexports.baseEncode = baseEncode;\nfunction baseDecode(value) {\n return Buffer.from(bs58_1.default.decode(value));\n}\nexports.baseDecode = baseDecode;\nconst INITIAL_LENGTH = 1024;\nclass BorshError extends Error {\n constructor(message) {\n super(message);\n this.fieldPath = [];\n this.originalMessage = message;\n }\n addToFieldPath(fieldName) {\n this.fieldPath.splice(0, 0, fieldName);\n // NOTE: Modifying message directly as jest doesn't use .toString()\n this.message = this.originalMessage + \": \" + this.fieldPath.join(\".\");\n }\n}\nexports.BorshError = BorshError;\n/// Binary encoder.\nclass BinaryWriter {\n constructor() {\n this.buf = Buffer.alloc(INITIAL_LENGTH);\n this.length = 0;\n }\n maybeResize() {\n if (this.buf.length < 16 + this.length) {\n this.buf = Buffer.concat([this.buf, Buffer.alloc(INITIAL_LENGTH)]);\n }\n }\n writeU8(value) {\n this.maybeResize();\n this.buf.writeUInt8(value, this.length);\n this.length += 1;\n }\n writeU16(value) {\n this.maybeResize();\n this.buf.writeUInt16LE(value, this.length);\n this.length += 2;\n }\n writeU32(value) {\n this.maybeResize();\n this.buf.writeUInt32LE(value, this.length);\n this.length += 4;\n }\n writeU64(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray(\"le\", 8)));\n }\n writeU128(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray(\"le\", 16)));\n }\n writeU256(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray(\"le\", 32)));\n }\n writeU512(value) {\n this.maybeResize();\n this.writeBuffer(Buffer.from(new bn_js_1.default(value).toArray(\"le\", 64)));\n }\n writeBuffer(buffer) {\n // Buffer.from is needed as this.buf.subarray can return plain Uint8Array in browser\n this.buf = Buffer.concat([\n Buffer.from(this.buf.subarray(0, this.length)),\n buffer,\n Buffer.alloc(INITIAL_LENGTH),\n ]);\n this.length += buffer.length;\n }\n writeString(str) {\n this.maybeResize();\n const b = Buffer.from(str, \"utf8\");\n this.writeU32(b.length);\n this.writeBuffer(b);\n }\n writeFixedArray(array) {\n this.writeBuffer(Buffer.from(array));\n }\n writeArray(array, fn) {\n this.maybeResize();\n this.writeU32(array.length);\n for (const elem of array) {\n this.maybeResize();\n fn(elem);\n }\n }\n toArray() {\n return this.buf.subarray(0, this.length);\n }\n}\nexports.BinaryWriter = BinaryWriter;\nfunction handlingRangeError(target, propertyKey, propertyDescriptor) {\n const originalMethod = propertyDescriptor.value;\n propertyDescriptor.value = function (...args) {\n try {\n return originalMethod.apply(this, args);\n }\n catch (e) {\n if (e instanceof RangeError) {\n const code = e.code;\n if ([\"ERR_BUFFER_OUT_OF_BOUNDS\", \"ERR_OUT_OF_RANGE\"].indexOf(code) >= 0) {\n throw new BorshError(\"Reached the end of buffer when deserializing\");\n }\n }\n throw e;\n }\n };\n}\nclass BinaryReader {\n constructor(buf) {\n this.buf = buf;\n this.offset = 0;\n }\n readU8() {\n const value = this.buf.readUInt8(this.offset);\n this.offset += 1;\n return value;\n }\n readU16() {\n const value = this.buf.readUInt16LE(this.offset);\n this.offset += 2;\n return value;\n }\n readU32() {\n const value = this.buf.readUInt32LE(this.offset);\n this.offset += 4;\n return value;\n }\n readU64() {\n const buf = this.readBuffer(8);\n return new bn_js_1.default(buf, \"le\");\n }\n readU128() {\n const buf = this.readBuffer(16);\n return new bn_js_1.default(buf, \"le\");\n }\n readU256() {\n const buf = this.readBuffer(32);\n return new bn_js_1.default(buf, \"le\");\n }\n readU512() {\n const buf = this.readBuffer(64);\n return new bn_js_1.default(buf, \"le\");\n }\n readBuffer(len) {\n if (this.offset + len > this.buf.length) {\n throw new BorshError(`Expected buffer length ${len} isn't within bounds`);\n }\n const result = this.buf.slice(this.offset, this.offset + len);\n this.offset += len;\n return result;\n }\n readString() {\n const len = this.readU32();\n const buf = this.readBuffer(len);\n try {\n // NOTE: Using TextDecoder to fail on invalid UTF-8\n return textDecoder.decode(buf);\n }\n catch (e) {\n throw new BorshError(`Error decoding UTF-8 string: ${e}`);\n }\n }\n readFixedArray(len) {\n return new Uint8Array(this.readBuffer(len));\n }\n readArray(fn) {\n const len = this.readU32();\n const result = Array();\n for (let i = 0; i < len; ++i) {\n result.push(fn());\n }\n return result;\n }\n}\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU8\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU16\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU32\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU64\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU128\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU256\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readU512\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readString\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readFixedArray\", null);\n__decorate([\n handlingRangeError\n], BinaryReader.prototype, \"readArray\", null);\nexports.BinaryReader = BinaryReader;\nfunction capitalizeFirstLetter(string) {\n return string.charAt(0).toUpperCase() + string.slice(1);\n}\nfunction serializeField(schema, fieldName, value, fieldType, writer) {\n try {\n // TODO: Handle missing values properly (make sure they never result in just skipped write)\n if (typeof fieldType === \"string\") {\n writer[`write${capitalizeFirstLetter(fieldType)}`](value);\n }\n else if (fieldType instanceof Array) {\n if (typeof fieldType[0] === \"number\") {\n if (value.length !== fieldType[0]) {\n throw new BorshError(`Expecting byte array of length ${fieldType[0]}, but got ${value.length} bytes`);\n }\n writer.writeFixedArray(value);\n }\n else if (fieldType.length === 2 && typeof fieldType[1] === \"number\") {\n if (value.length !== fieldType[1]) {\n throw new BorshError(`Expecting byte array of length ${fieldType[1]}, but got ${value.length} bytes`);\n }\n for (let i = 0; i < fieldType[1]; i++) {\n serializeField(schema, null, value[i], fieldType[0], writer);\n }\n }\n else {\n writer.writeArray(value, (item) => {\n serializeField(schema, fieldName, item, fieldType[0], writer);\n });\n }\n }\n else if (fieldType.kind !== undefined) {\n switch (fieldType.kind) {\n case \"option\": {\n if (value === null || value === undefined) {\n writer.writeU8(0);\n }\n else {\n writer.writeU8(1);\n serializeField(schema, fieldName, value, fieldType.type, writer);\n }\n break;\n }\n case \"map\": {\n writer.writeU32(value.size);\n value.forEach((val, key) => {\n serializeField(schema, fieldName, key, fieldType.key, writer);\n serializeField(schema, fieldName, val, fieldType.value, writer);\n });\n break;\n }\n default:\n throw new BorshError(`FieldType ${fieldType} unrecognized`);\n }\n }\n else {\n serializeStruct(schema, value, writer);\n }\n }\n catch (error) {\n if (error instanceof BorshError) {\n error.addToFieldPath(fieldName);\n }\n throw error;\n }\n}\nfunction serializeStruct(schema, obj, writer) {\n if (typeof obj.borshSerialize === \"function\") {\n obj.borshSerialize(writer);\n return;\n }\n const structSchema = schema.get(obj.constructor);\n if (!structSchema) {\n throw new BorshError(`Class ${obj.constructor.name} is missing in schema`);\n }\n if (structSchema.kind === \"struct\") {\n structSchema.fields.map(([fieldName, fieldType]) => {\n serializeField(schema, fieldName, obj[fieldName], fieldType, writer);\n });\n }\n else if (structSchema.kind === \"enum\") {\n const name = obj[structSchema.field];\n for (let idx = 0; idx < structSchema.values.length; ++idx) {\n const [fieldName, fieldType] = structSchema.values[idx];\n if (fieldName === name) {\n writer.writeU8(idx);\n serializeField(schema, fieldName, obj[fieldName], fieldType, writer);\n break;\n }\n }\n }\n else {\n throw new BorshError(`Unexpected schema kind: ${structSchema.kind} for ${obj.constructor.name}`);\n }\n}\n/// Serialize given object using schema of the form:\n/// { class_name -> [ [field_name, field_type], .. ], .. }\nfunction serialize(schema, obj, Writer = BinaryWriter) {\n const writer = new Writer();\n serializeStruct(schema, obj, writer);\n return writer.toArray();\n}\nexports.serialize = serialize;\nfunction deserializeField(schema, fieldName, fieldType, reader) {\n try {\n if (typeof fieldType === \"string\") {\n return reader[`read${capitalizeFirstLetter(fieldType)}`]();\n }\n if (fieldType instanceof Array) {\n if (typeof fieldType[0] === \"number\") {\n return reader.readFixedArray(fieldType[0]);\n }\n else if (typeof fieldType[1] === \"number\") {\n const arr = [];\n for (let i = 0; i < fieldType[1]; i++) {\n arr.push(deserializeField(schema, null, fieldType[0], reader));\n }\n return arr;\n }\n else {\n return reader.readArray(() => deserializeField(schema, fieldName, fieldType[0], reader));\n }\n }\n if (fieldType.kind === \"option\") {\n const option = reader.readU8();\n if (option) {\n return deserializeField(schema, fieldName, fieldType.type, reader);\n }\n return undefined;\n }\n if (fieldType.kind === \"map\") {\n let map = new Map();\n const length = reader.readU32();\n for (let i = 0; i < length; i++) {\n const key = deserializeField(schema, fieldName, fieldType.key, reader);\n const val = deserializeField(schema, fieldName, fieldType.value, reader);\n map.set(key, val);\n }\n return map;\n }\n return deserializeStruct(schema, fieldType, reader);\n }\n catch (error) {\n if (error instanceof BorshError) {\n error.addToFieldPath(fieldName);\n }\n throw error;\n }\n}\nfunction deserializeStruct(schema, classType, reader) {\n if (typeof classType.borshDeserialize === \"function\") {\n return classType.borshDeserialize(reader);\n }\n const structSchema = schema.get(classType);\n if (!structSchema) {\n throw new BorshError(`Class ${classType.name} is missing in schema`);\n }\n if (structSchema.kind === \"struct\") {\n const result = {};\n for (const [fieldName, fieldType] of schema.get(classType).fields) {\n result[fieldName] = deserializeField(schema, fieldName, fieldType, reader);\n }\n return new classType(result);\n }\n if (structSchema.kind === \"enum\") {\n const idx = reader.readU8();\n if (idx >= structSchema.values.length) {\n throw new BorshError(`Enum index: ${idx} is out of range`);\n }\n const [fieldName, fieldType] = structSchema.values[idx];\n const fieldValue = deserializeField(schema, fieldName, fieldType, reader);\n return new classType({ [fieldName]: fieldValue });\n }\n throw new BorshError(`Unexpected schema kind: ${structSchema.kind} for ${classType.constructor.name}`);\n}\n/// Deserializes object from bytes using schema.\nfunction deserialize(schema, classType, buffer, Reader = BinaryReader) {\n const reader = new Reader(buffer);\n const result = deserializeStruct(schema, classType, reader);\n if (reader.offset < buffer.length) {\n throw new BorshError(`Unexpected ${buffer.length - reader.offset} bytes after deserialized data`);\n }\n return result;\n}\nexports.deserialize = deserialize;\n/// Deserializes object from bytes using schema, without checking the length read\nfunction deserializeUnchecked(schema, classType, buffer, Reader = BinaryReader) {\n const reader = new Reader(buffer);\n return deserializeStruct(schema, classType, reader);\n}\nexports.deserializeUnchecked = deserializeUnchecked;\n","var basex = require('base-x')\nvar ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","const basex = require('base-x')\nconst ALPHABET = '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'\n\nmodule.exports = basex(ALPHABET)\n","/* The MIT License (MIT)\n *\n * Copyright 2015-2018 Peter A. Bigot\n *\n * Permission is hereby granted, free of charge, to any person obtaining a copy\n * of this software and associated documentation files (the \"Software\"), to deal\n * in the Software without restriction, including without limitation the rights\n * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell\n * copies of the Software, and to permit persons to whom the Software is\n * furnished to do so, subject to the following conditions:\n *\n * The above copyright notice and this permission notice shall be included in\n * all copies or substantial portions of the Software.\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n */\n\n/**\n * Support for translating between Buffer instances and JavaScript\n * native types.\n *\n * {@link module:Layout~Layout|Layout} is the basis of a class\n * hierarchy that associates property names with sequences of encoded\n * bytes.\n *\n * Layouts are supported for these scalar (numeric) types:\n * * {@link module:Layout~UInt|Unsigned integers in little-endian\n * format} with {@link module:Layout.u8|8-bit}, {@link\n * module:Layout.u16|16-bit}, {@link module:Layout.u24|24-bit},\n * {@link module:Layout.u32|32-bit}, {@link\n * module:Layout.u40|40-bit}, and {@link module:Layout.u48|48-bit}\n * representation ranges;\n * * {@link module:Layout~UIntBE|Unsigned integers in big-endian\n * format} with {@link module:Layout.u16be|16-bit}, {@link\n * module:Layout.u24be|24-bit}, {@link module:Layout.u32be|32-bit},\n * {@link module:Layout.u40be|40-bit}, and {@link\n * module:Layout.u48be|48-bit} representation ranges;\n * * {@link module:Layout~Int|Signed integers in little-endian\n * format} with {@link module:Layout.s8|8-bit}, {@link\n * module:Layout.s16|16-bit}, {@link module:Layout.s24|24-bit},\n * {@link module:Layout.s32|32-bit}, {@link\n * module:Layout.s40|40-bit}, and {@link module:Layout.s48|48-bit}\n * representation ranges;\n * * {@link module:Layout~IntBE|Signed integers in big-endian format}\n * with {@link module:Layout.s16be|16-bit}, {@link\n * module:Layout.s24be|24-bit}, {@link module:Layout.s32be|32-bit},\n * {@link module:Layout.s40be|40-bit}, and {@link\n * module:Layout.s48be|48-bit} representation ranges;\n * * 64-bit integral values that decode to an exact (if magnitude is\n * less than 2^53) or nearby integral Number in {@link\n * module:Layout.nu64|unsigned little-endian}, {@link\n * module:Layout.nu64be|unsigned big-endian}, {@link\n * module:Layout.ns64|signed little-endian}, and {@link\n * module:Layout.ns64be|unsigned big-endian} encodings;\n * * 32-bit floating point values with {@link\n * module:Layout.f32|little-endian} and {@link\n * module:Layout.f32be|big-endian} representations;\n * * 64-bit floating point values with {@link\n * module:Layout.f64|little-endian} and {@link\n * module:Layout.f64be|big-endian} representations;\n * * {@link module:Layout.const|Constants} that take no space in the\n * encoded expression.\n *\n * and for these aggregate types:\n * * {@link module:Layout.seq|Sequence}s of instances of a {@link\n * module:Layout~Layout|Layout}, with JavaScript representation as\n * an Array and constant or data-dependent {@link\n * module:Layout~Sequence#count|length};\n * * {@link module:Layout.struct|Structure}s that aggregate a\n * heterogeneous sequence of {@link module:Layout~Layout|Layout}\n * instances, with JavaScript representation as an Object;\n * * {@link module:Layout.union|Union}s that support multiple {@link\n * module:Layout~VariantLayout|variant layouts} over a fixed\n * (padded) or variable (not padded) span of bytes, using an\n * unsigned integer at the start of the data or a separate {@link\n * module:Layout.unionLayoutDiscriminator|layout element} to\n * determine which layout to use when interpreting the buffer\n * contents;\n * * {@link module:Layout.bits|BitStructure}s that contain a sequence\n * of individual {@link\n * module:Layout~BitStructure#addField|BitField}s packed into an 8,\n * 16, 24, or 32-bit unsigned integer starting at the least- or\n * most-significant bit;\n * * {@link module:Layout.cstr|C strings} of varying length;\n * * {@link module:Layout.blob|Blobs} of fixed- or variable-{@link\n * module:Layout~Blob#length|length} raw data.\n *\n * All {@link module:Layout~Layout|Layout} instances are immutable\n * after construction, to prevent internal state from becoming\n * inconsistent.\n *\n * @local Layout\n * @local ExternalLayout\n * @local GreedyCount\n * @local OffsetLayout\n * @local UInt\n * @local UIntBE\n * @local Int\n * @local IntBE\n * @local NearUInt64\n * @local NearUInt64BE\n * @local NearInt64\n * @local NearInt64BE\n * @local Float\n * @local FloatBE\n * @local Double\n * @local DoubleBE\n * @local Sequence\n * @local Structure\n * @local UnionDiscriminator\n * @local UnionLayoutDiscriminator\n * @local Union\n * @local VariantLayout\n * @local BitStructure\n * @local BitField\n * @local Boolean\n * @local Blob\n * @local CString\n * @local Constant\n * @local bindConstructorLayout\n * @module Layout\n * @license MIT\n * @author Peter A. Bigot\n * @see {@link https://github.com/pabigot/buffer-layout|buffer-layout on GitHub}\n */\n\n'use strict';\n\n/**\n * Base class for layout objects.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support the {@link\n * Layout#encode|encode} or {@link Layout#decode|decode} functions.\n *\n * @param {Number} span - Initializer for {@link Layout#span|span}. The\n * parameter must be an integer; a negative value signifies that the\n * span is {@link Layout#getSpan|value-specific}.\n *\n * @param {string} [property] - Initializer for {@link\n * Layout#property|property}.\n *\n * @abstract\n */\nclass Layout {\n constructor(span, property) {\n if (!Number.isInteger(span)) {\n throw new TypeError('span must be an integer');\n }\n\n /** The span of the layout in bytes.\n *\n * Positive values are generally expected.\n *\n * Zero will only appear in {@link Constant}s and in {@link\n * Sequence}s where the {@link Sequence#count|count} is zero.\n *\n * A negative value indicates that the span is value-specific, and\n * must be obtained using {@link Layout#getSpan|getSpan}. */\n this.span = span;\n\n /** The property name used when this layout is represented in an\n * Object.\n *\n * Used only for layouts that {@link Layout#decode|decode} to Object\n * instances. If left undefined the span of the unnamed layout will\n * be treated as padding: it will not be mutated by {@link\n * Layout#encode|encode} nor represented as a property in the\n * decoded Object. */\n this.property = property;\n }\n\n /** Function to create an Object into which decoded properties will\n * be written.\n *\n * Used only for layouts that {@link Layout#decode|decode} to Object\n * instances, which means:\n * * {@link Structure}\n * * {@link Union}\n * * {@link VariantLayout}\n * * {@link BitStructure}\n *\n * If left undefined the JavaScript representation of these layouts\n * will be Object instances.\n *\n * See {@link bindConstructorLayout}.\n */\n makeDestinationObject() {\n return {};\n }\n\n /**\n * Decode from a Buffer into an JavaScript value.\n *\n * @param {Buffer} b - the buffer from which encoded data is read.\n *\n * @param {Number} [offset] - the offset at which the encoded data\n * starts. If absent a zero offset is inferred.\n *\n * @returns {(Number|Array|Object)} - the value of the decoded data.\n *\n * @abstract\n */\n decode(b, offset) {\n throw new Error('Layout is abstract');\n }\n\n /**\n * Encode a JavaScript value into a Buffer.\n *\n * @param {(Number|Array|Object)} src - the value to be encoded into\n * the buffer. The type accepted depends on the (sub-)type of {@link\n * Layout}.\n *\n * @param {Buffer} b - the buffer into which encoded data will be\n * written.\n *\n * @param {Number} [offset] - the offset at which the encoded data\n * starts. If absent a zero offset is inferred.\n *\n * @returns {Number} - the number of bytes encoded, including the\n * space skipped for internal padding, but excluding data such as\n * {@link Sequence#count|lengths} when stored {@link\n * ExternalLayout|externally}. This is the adjustment to `offset`\n * producing the offset where data for the next layout would be\n * written.\n *\n * @abstract\n */\n encode(src, b, offset) {\n throw new Error('Layout is abstract');\n }\n\n /**\n * Calculate the span of a specific instance of a layout.\n *\n * @param {Buffer} b - the buffer that contains an encoded instance.\n *\n * @param {Number} [offset] - the offset at which the encoded instance\n * starts. If absent a zero offset is inferred.\n *\n * @return {Number} - the number of bytes covered by the layout\n * instance. If this method is not overridden in a subclass the\n * definition-time constant {@link Layout#span|span} will be\n * returned.\n *\n * @throws {RangeError} - if the length of the value cannot be\n * determined.\n */\n getSpan(b, offset) {\n if (0 > this.span) {\n throw new RangeError('indeterminate span');\n }\n return this.span;\n }\n\n /**\n * Replicate the layout using a new property.\n *\n * This function must be used to get a structurally-equivalent layout\n * with a different name since all {@link Layout} instances are\n * immutable.\n *\n * **NOTE** This is a shallow copy. All fields except {@link\n * Layout#property|property} are strictly equal to the origin layout.\n *\n * @param {String} property - the value for {@link\n * Layout#property|property} in the replica.\n *\n * @returns {Layout} - the copy with {@link Layout#property|property}\n * set to `property`.\n */\n replicate(property) {\n const rv = Object.create(this.constructor.prototype);\n Object.assign(rv, this);\n rv.property = property;\n return rv;\n }\n\n /**\n * Create an object from layout properties and an array of values.\n *\n * **NOTE** This function returns `undefined` if invoked on a layout\n * that does not return its value as an Object. Objects are\n * returned for things that are a {@link Structure}, which includes\n * {@link VariantLayout|variant layouts} if they are structures, and\n * excludes {@link Union}s. If you want this feature for a union\n * you must use {@link Union.getVariant|getVariant} to select the\n * desired layout.\n *\n * @param {Array} values - an array of values that correspond to the\n * default order for properties. As with {@link Layout#decode|decode}\n * layout elements that have no property name are skipped when\n * iterating over the array values. Only the top-level properties are\n * assigned; arguments are not assigned to properties of contained\n * layouts. Any unused values are ignored.\n *\n * @return {(Object|undefined)}\n */\n fromArray(values) {\n return undefined;\n }\n}\nexports.Layout = Layout;\n\n/* Provide text that carries a name (such as for a function that will\n * be throwing an error) annotated with the property of a given layout\n * (such as one for which the value was unacceptable).\n *\n * @ignore */\nfunction nameWithProperty(name, lo) {\n if (lo.property) {\n return name + '[' + lo.property + ']';\n }\n return name;\n}\nexports.nameWithProperty = nameWithProperty;\n\n/**\n * Augment a class so that instances can be encoded/decoded using a\n * given layout.\n *\n * Calling this function couples `Class` with `layout` in several ways:\n *\n * * `Class.layout_` becomes a static member property equal to `layout`;\n * * `layout.boundConstructor_` becomes a static member property equal\n * to `Class`;\n * * The {@link Layout#makeDestinationObject|makeDestinationObject()}\n * property of `layout` is set to a function that returns a `new\n * Class()`;\n * * `Class.decode(b, offset)` becomes a static member function that\n * delegates to {@link Layout#decode|layout.decode}. The\n * synthesized function may be captured and extended.\n * * `Class.prototype.encode(b, offset)` provides an instance member\n * function that delegates to {@link Layout#encode|layout.encode}\n * with `src` set to `this`. The synthesized function may be\n * captured and extended, but when the extension is invoked `this`\n * must be explicitly bound to the instance.\n *\n * @param {class} Class - a JavaScript class with a nullary\n * constructor.\n *\n * @param {Layout} layout - the {@link Layout} instance used to encode\n * instances of `Class`.\n */\nfunction bindConstructorLayout(Class, layout) {\n if ('function' !== typeof Class) {\n throw new TypeError('Class must be constructor');\n }\n if (Class.hasOwnProperty('layout_')) {\n throw new Error('Class is already bound to a layout');\n }\n if (!(layout && (layout instanceof Layout))) {\n throw new TypeError('layout must be a Layout');\n }\n if (layout.hasOwnProperty('boundConstructor_')) {\n throw new Error('layout is already bound to a constructor');\n }\n Class.layout_ = layout;\n layout.boundConstructor_ = Class;\n layout.makeDestinationObject = (() => new Class());\n Object.defineProperty(Class.prototype, 'encode', {\n value: function(b, offset) {\n return layout.encode(this, b, offset);\n },\n writable: true,\n });\n Object.defineProperty(Class, 'decode', {\n value: function(b, offset) {\n return layout.decode(b, offset);\n },\n writable: true,\n });\n}\nexports.bindConstructorLayout = bindConstructorLayout;\n\n/**\n * An object that behaves like a layout but does not consume space\n * within its containing layout.\n *\n * This is primarily used to obtain metadata about a member, such as a\n * {@link OffsetLayout} that can provide data about a {@link\n * Layout#getSpan|value-specific span}.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support {@link\n * ExternalLayout#isCount|isCount} or other {@link Layout} functions.\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @abstract\n * @augments {Layout}\n */\nclass ExternalLayout extends Layout {\n /**\n * Return `true` iff the external layout decodes to an unsigned\n * integer layout.\n *\n * In that case it can be used as the source of {@link\n * Sequence#count|Sequence counts}, {@link Blob#length|Blob lengths},\n * or as {@link UnionLayoutDiscriminator#layout|external union\n * discriminators}.\n *\n * @abstract\n */\n isCount() {\n throw new Error('ExternalLayout is abstract');\n }\n}\n\n/**\n * An {@link ExternalLayout} that determines its {@link\n * Layout#decode|value} based on offset into and length of the buffer\n * on which it is invoked.\n *\n * *Factory*: {@link module:Layout.greedy|greedy}\n *\n * @param {Number} [elementSpan] - initializer for {@link\n * GreedyCount#elementSpan|elementSpan}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {ExternalLayout}\n */\nclass GreedyCount extends ExternalLayout {\n constructor(elementSpan, property) {\n if (undefined === elementSpan) {\n elementSpan = 1;\n }\n if ((!Number.isInteger(elementSpan)) || (0 >= elementSpan)) {\n throw new TypeError('elementSpan must be a (positive) integer');\n }\n super(-1, property);\n\n /** The layout for individual elements of the sequence. The value\n * must be a positive integer. If not provided, the value will be\n * 1. */\n this.elementSpan = elementSpan;\n }\n\n /** @override */\n isCount() {\n return true;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const rem = b.length - offset;\n return Math.floor(rem / this.elementSpan);\n }\n\n /** @override */\n encode(src, b, offset) {\n return 0;\n }\n}\n\n/**\n * An {@link ExternalLayout} that supports accessing a {@link Layout}\n * at a fixed offset from the start of another Layout. The offset may\n * be before, within, or after the base layout.\n *\n * *Factory*: {@link module:Layout.offset|offset}\n *\n * @param {Layout} layout - initializer for {@link\n * OffsetLayout#layout|layout}, modulo `property`.\n *\n * @param {Number} [offset] - Initializes {@link\n * OffsetLayout#offset|offset}. Defaults to zero.\n *\n * @param {string} [property] - Optional new property name for a\n * {@link Layout#replicate| replica} of `layout` to be used as {@link\n * OffsetLayout#layout|layout}. If not provided the `layout` is used\n * unchanged.\n *\n * @augments {Layout}\n */\nclass OffsetLayout extends ExternalLayout {\n constructor(layout, offset, property) {\n if (!(layout instanceof Layout)) {\n throw new TypeError('layout must be a Layout');\n }\n\n if (undefined === offset) {\n offset = 0;\n } else if (!Number.isInteger(offset)) {\n throw new TypeError('offset must be integer or undefined');\n }\n\n super(layout.span, property || layout.property);\n\n /** The subordinated layout. */\n this.layout = layout;\n\n /** The location of {@link OffsetLayout#layout} relative to the\n * start of another layout.\n *\n * The value may be positive or negative, but an error will thrown\n * if at the point of use it goes outside the span of the Buffer\n * being accessed. */\n this.offset = offset;\n }\n\n /** @override */\n isCount() {\n return ((this.layout instanceof UInt)\n || (this.layout instanceof UIntBE));\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return this.layout.decode(b, offset + this.offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return this.layout.encode(src, b, offset + this.offset);\n }\n}\n\n/**\n * Represent an unsigned integer in little-endian format.\n *\n * *Factory*: {@link module:Layout.u8|u8}, {@link\n * module:Layout.u16|u16}, {@link module:Layout.u24|u24}, {@link\n * module:Layout.u32|u32}, {@link module:Layout.u40|u40}, {@link\n * module:Layout.u48|u48}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UInt extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readUIntLE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeUIntLE(src, offset, this.span);\n return this.span;\n }\n}\n\n/**\n * Represent an unsigned integer in big-endian format.\n *\n * *Factory*: {@link module:Layout.u8be|u8be}, {@link\n * module:Layout.u16be|u16be}, {@link module:Layout.u24be|u24be},\n * {@link module:Layout.u32be|u32be}, {@link\n * module:Layout.u40be|u40be}, {@link module:Layout.u48be|u48be}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UIntBE extends Layout {\n constructor(span, property) {\n super( span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readUIntBE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeUIntBE(src, offset, this.span);\n return this.span;\n }\n}\n\n/**\n * Represent a signed integer in little-endian format.\n *\n * *Factory*: {@link module:Layout.s8|s8}, {@link\n * module:Layout.s16|s16}, {@link module:Layout.s24|s24}, {@link\n * module:Layout.s32|s32}, {@link module:Layout.s40|s40}, {@link\n * module:Layout.s48|s48}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Int extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readIntLE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeIntLE(src, offset, this.span);\n return this.span;\n }\n}\n\n/**\n * Represent a signed integer in big-endian format.\n *\n * *Factory*: {@link module:Layout.s8be|s8be}, {@link\n * module:Layout.s16be|s16be}, {@link module:Layout.s24be|s24be},\n * {@link module:Layout.s32be|s32be}, {@link\n * module:Layout.s40be|s40be}, {@link module:Layout.s48be|s48be}\n *\n * @param {Number} span - initializer for {@link Layout#span|span}.\n * The parameter can range from 1 through 6.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass IntBE extends Layout {\n constructor(span, property) {\n super(span, property);\n if (6 < this.span) {\n throw new RangeError('span must not exceed 6 bytes');\n }\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readIntBE(offset, this.span);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeIntBE(src, offset, this.span);\n return this.span;\n }\n}\n\nconst V2E32 = Math.pow(2, 32);\n\n/* True modulus high and low 32-bit words, where low word is always\n * non-negative. */\nfunction divmodInt64(src) {\n const hi32 = Math.floor(src / V2E32);\n const lo32 = src - (hi32 * V2E32);\n return {hi32, lo32};\n}\n/* Reconstruct Number from quotient and non-negative remainder */\nfunction roundedInt64(hi32, lo32) {\n return hi32 * V2E32 + lo32;\n}\n\n/**\n * Represent an unsigned 64-bit integer in little-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.nu64|nu64}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearUInt64 extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const lo32 = b.readUInt32LE(offset);\n const hi32 = b.readUInt32LE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeUInt32LE(split.lo32, offset);\n b.writeUInt32LE(split.hi32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent an unsigned 64-bit integer in big-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.nu64be|nu64be}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearUInt64BE extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const hi32 = b.readUInt32BE(offset);\n const lo32 = b.readUInt32BE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeUInt32BE(split.hi32, offset);\n b.writeUInt32BE(split.lo32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent a signed 64-bit integer in little-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.ns64|ns64}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearInt64 extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const lo32 = b.readUInt32LE(offset);\n const hi32 = b.readInt32LE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeUInt32LE(split.lo32, offset);\n b.writeInt32LE(split.hi32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent a signed 64-bit integer in big-endian format when\n * encoded and as a near integral JavaScript Number when decoded.\n *\n * *Factory*: {@link module:Layout.ns64be|ns64be}\n *\n * **NOTE** Values with magnitude greater than 2^52 may not decode to\n * the exact value of the encoded representation.\n *\n * @augments {Layout}\n */\nclass NearInt64BE extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const hi32 = b.readInt32BE(offset);\n const lo32 = b.readUInt32BE(offset + 4);\n return roundedInt64(hi32, lo32);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const split = divmodInt64(src);\n b.writeInt32BE(split.hi32, offset);\n b.writeUInt32BE(split.lo32, offset + 4);\n return 8;\n }\n}\n\n/**\n * Represent a 32-bit floating point number in little-endian format.\n *\n * *Factory*: {@link module:Layout.f32|f32}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Float extends Layout {\n constructor(property) {\n super(4, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readFloatLE(offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeFloatLE(src, offset);\n return 4;\n }\n}\n\n/**\n * Represent a 32-bit floating point number in big-endian format.\n *\n * *Factory*: {@link module:Layout.f32be|f32be}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass FloatBE extends Layout {\n constructor(property) {\n super(4, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readFloatBE(offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeFloatBE(src, offset);\n return 4;\n }\n}\n\n/**\n * Represent a 64-bit floating point number in little-endian format.\n *\n * *Factory*: {@link module:Layout.f64|f64}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Double extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readDoubleLE(offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeDoubleLE(src, offset);\n return 8;\n }\n}\n\n/**\n * Represent a 64-bit floating point number in big-endian format.\n *\n * *Factory*: {@link module:Layout.f64be|f64be}\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass DoubleBE extends Layout {\n constructor(property) {\n super(8, property);\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n return b.readDoubleBE(offset);\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n b.writeDoubleBE(src, offset);\n return 8;\n }\n}\n\n/**\n * Represent a contiguous sequence of a specific layout as an Array.\n *\n * *Factory*: {@link module:Layout.seq|seq}\n *\n * @param {Layout} elementLayout - initializer for {@link\n * Sequence#elementLayout|elementLayout}.\n *\n * @param {(Number|ExternalLayout)} count - initializer for {@link\n * Sequence#count|count}. The parameter must be either a positive\n * integer or an instance of {@link ExternalLayout}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Sequence extends Layout {\n constructor(elementLayout, count, property) {\n if (!(elementLayout instanceof Layout)) {\n throw new TypeError('elementLayout must be a Layout');\n }\n if (!(((count instanceof ExternalLayout) && count.isCount())\n || (Number.isInteger(count) && (0 <= count)))) {\n throw new TypeError('count must be non-negative integer '\n + 'or an unsigned integer ExternalLayout');\n }\n let span = -1;\n if ((!(count instanceof ExternalLayout))\n && (0 < elementLayout.span)) {\n span = count * elementLayout.span;\n }\n\n super(span, property);\n\n /** The layout for individual elements of the sequence. */\n this.elementLayout = elementLayout;\n\n /** The number of elements in the sequence.\n *\n * This will be either a non-negative integer or an instance of\n * {@link ExternalLayout} for which {@link\n * ExternalLayout#isCount|isCount()} is `true`. */\n this.count = count;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n let span = 0;\n let count = this.count;\n if (count instanceof ExternalLayout) {\n count = count.decode(b, offset);\n }\n if (0 < this.elementLayout.span) {\n span = count * this.elementLayout.span;\n } else {\n let idx = 0;\n while (idx < count) {\n span += this.elementLayout.getSpan(b, offset + span);\n ++idx;\n }\n }\n return span;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const rv = [];\n let i = 0;\n let count = this.count;\n if (count instanceof ExternalLayout) {\n count = count.decode(b, offset);\n }\n while (i < count) {\n rv.push(this.elementLayout.decode(b, offset));\n offset += this.elementLayout.getSpan(b, offset);\n i += 1;\n }\n return rv;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Sequence}.\n *\n * **NOTE** If `src` is shorter than {@link Sequence#count|count} then\n * the unused space in the buffer is left unchanged. If `src` is\n * longer than {@link Sequence#count|count} the unneeded elements are\n * ignored.\n *\n * **NOTE** If {@link Layout#count|count} is an instance of {@link\n * ExternalLayout} then the length of `src` will be encoded as the\n * count after `src` is encoded. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const elo = this.elementLayout;\n const span = src.reduce((span, v) => {\n return span + elo.encode(v, b, offset + span);\n }, 0);\n if (this.count instanceof ExternalLayout) {\n this.count.encode(src.length, b, offset);\n }\n return span;\n }\n}\n\n/**\n * Represent a contiguous sequence of arbitrary layout elements as an\n * Object.\n *\n * *Factory*: {@link module:Layout.struct|struct}\n *\n * **NOTE** The {@link Layout#span|span} of the structure is variable\n * if any layout in {@link Structure#fields|fields} has a variable\n * span. When {@link Layout#encode|encoding} we must have a value for\n * all variable-length fields, or we wouldn't be able to figure out\n * how much space to use for storage. We can only identify the value\n * for a field when it has a {@link Layout#property|property}. As\n * such, although a structure may contain both unnamed fields and\n * variable-length fields, it cannot contain an unnamed\n * variable-length field.\n *\n * @param {Layout[]} fields - initializer for {@link\n * Structure#fields|fields}. An error is raised if this contains a\n * variable-length field for which a {@link Layout#property|property}\n * is not defined.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @param {Boolean} [decodePrefixes] - initializer for {@link\n * Structure#decodePrefixes|property}.\n *\n * @throws {Error} - if `fields` contains an unnamed variable-length\n * layout.\n *\n * @augments {Layout}\n */\nclass Structure extends Layout {\n constructor(fields, property, decodePrefixes) {\n if (!(Array.isArray(fields)\n && fields.reduce((acc, v) => acc && (v instanceof Layout), true))) {\n throw new TypeError('fields must be array of Layout instances');\n }\n if (('boolean' === typeof property)\n && (undefined === decodePrefixes)) {\n decodePrefixes = property;\n property = undefined;\n }\n\n /* Verify absence of unnamed variable-length fields. */\n for (const fd of fields) {\n if ((0 > fd.span)\n && (undefined === fd.property)) {\n throw new Error('fields cannot contain unnamed variable-length layout');\n }\n }\n\n let span = -1;\n try {\n span = fields.reduce((span, fd) => span + fd.getSpan(), 0);\n } catch (e) {\n }\n super(span, property);\n\n /** The sequence of {@link Layout} values that comprise the\n * structure.\n *\n * The individual elements need not be the same type, and may be\n * either scalar or aggregate layouts. If a member layout leaves\n * its {@link Layout#property|property} undefined the\n * corresponding region of the buffer associated with the element\n * will not be mutated.\n *\n * @type {Layout[]} */\n this.fields = fields;\n\n /** Control behavior of {@link Layout#decode|decode()} given short\n * buffers.\n *\n * In some situations a structure many be extended with additional\n * fields over time, with older installations providing only a\n * prefix of the full structure. If this property is `true`\n * decoding will accept those buffers and leave subsequent fields\n * undefined, as long as the buffer ends at a field boundary.\n * Defaults to `false`. */\n this.decodePrefixes = !!decodePrefixes;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n let span = 0;\n try {\n span = this.fields.reduce((span, fd) => {\n const fsp = fd.getSpan(b, offset);\n offset += fsp;\n return span + fsp;\n }, 0);\n } catch (e) {\n throw new RangeError('indeterminate span');\n }\n return span;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const dest = this.makeDestinationObject();\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n dest[fd.property] = fd.decode(b, offset);\n }\n offset += fd.getSpan(b, offset);\n if (this.decodePrefixes\n && (b.length === offset)) {\n break;\n }\n }\n return dest;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Structure}.\n *\n * If `src` is missing a property for a member with a defined {@link\n * Layout#property|property} the corresponding region of the buffer is\n * left unmodified. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const firstOffset = offset;\n let lastOffset = 0;\n let lastWrote = 0;\n for (const fd of this.fields) {\n let span = fd.span;\n lastWrote = (0 < span) ? span : 0;\n if (undefined !== fd.property) {\n const fv = src[fd.property];\n if (undefined !== fv) {\n lastWrote = fd.encode(fv, b, offset);\n if (0 > span) {\n /* Read the as-encoded span, which is not necessarily the\n * same as what we wrote. */\n span = fd.getSpan(b, offset);\n }\n }\n }\n lastOffset = offset;\n offset += span;\n }\n /* Use (lastOffset + lastWrote) instead of offset because the last\n * item may have had a dynamic length and we don't want to include\n * the padding between it and the end of the space reserved for\n * it. */\n return (lastOffset + lastWrote) - firstOffset;\n }\n\n /** @override */\n fromArray(values) {\n const dest = this.makeDestinationObject();\n for (const fd of this.fields) {\n if ((undefined !== fd.property)\n && (0 < values.length)) {\n dest[fd.property] = values.shift();\n }\n }\n return dest;\n }\n\n /**\n * Get access to the layout of a given property.\n *\n * @param {String} property - the structure member of interest.\n *\n * @return {Layout} - the layout associated with `property`, or\n * undefined if there is no such property.\n */\n layoutFor(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n for (const fd of this.fields) {\n if (fd.property === property) {\n return fd;\n }\n }\n }\n\n /**\n * Get the offset of a structure member.\n *\n * @param {String} property - the structure member of interest.\n *\n * @return {Number} - the offset in bytes to the start of `property`\n * within the structure, or undefined if `property` is not a field\n * within the structure. If the property is a member but follows a\n * variable-length structure member a negative number will be\n * returned.\n */\n offsetOf(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n let offset = 0;\n for (const fd of this.fields) {\n if (fd.property === property) {\n return offset;\n }\n if (0 > fd.span) {\n offset = -1;\n } else if (0 <= offset) {\n offset += fd.span;\n }\n }\n }\n}\n\n/**\n * An object that can provide a {@link\n * Union#discriminator|discriminator} API for {@link Union}.\n *\n * **NOTE** This is an abstract base class; you can create instances\n * if it amuses you, but they won't support the {@link\n * UnionDiscriminator#encode|encode} or {@link\n * UnionDiscriminator#decode|decode} functions.\n *\n * @param {string} [property] - Default for {@link\n * UnionDiscriminator#property|property}.\n *\n * @abstract\n */\nclass UnionDiscriminator {\n constructor(property) {\n /** The {@link Layout#property|property} to be used when the\n * discriminator is referenced in isolation (generally when {@link\n * Union#decode|Union decode} cannot delegate to a specific\n * variant). */\n this.property = property;\n }\n\n /** Analog to {@link Layout#decode|Layout decode} for union discriminators.\n *\n * The implementation of this method need not reference the buffer if\n * variant information is available through other means. */\n decode() {\n throw new Error('UnionDiscriminator is abstract');\n }\n\n /** Analog to {@link Layout#decode|Layout encode} for union discriminators.\n *\n * The implementation of this method need not store the value if\n * variant information is maintained through other means. */\n encode() {\n throw new Error('UnionDiscriminator is abstract');\n }\n}\n\n/**\n * An object that can provide a {@link\n * UnionDiscriminator|discriminator API} for {@link Union} using an\n * unsigned integral {@link Layout} instance located either inside or\n * outside the union.\n *\n * @param {ExternalLayout} layout - initializes {@link\n * UnionLayoutDiscriminator#layout|layout}. Must satisfy {@link\n * ExternalLayout#isCount|isCount()}.\n *\n * @param {string} [property] - Default for {@link\n * UnionDiscriminator#property|property}, superseding the property\n * from `layout`, but defaulting to `variant` if neither `property`\n * nor layout provide a property name.\n *\n * @augments {UnionDiscriminator}\n */\nclass UnionLayoutDiscriminator extends UnionDiscriminator {\n constructor(layout, property) {\n if (!((layout instanceof ExternalLayout)\n && layout.isCount())) {\n throw new TypeError('layout must be an unsigned integer ExternalLayout');\n }\n\n super(property || layout.property || 'variant');\n\n /** The {@link ExternalLayout} used to access the discriminator\n * value. */\n this.layout = layout;\n }\n\n /** Delegate decoding to {@link UnionLayoutDiscriminator#layout|layout}. */\n decode(b, offset) {\n return this.layout.decode(b, offset);\n }\n\n /** Delegate encoding to {@link UnionLayoutDiscriminator#layout|layout}. */\n encode(src, b, offset) {\n return this.layout.encode(src, b, offset);\n }\n}\n\n/**\n * Represent any number of span-compatible layouts.\n *\n * *Factory*: {@link module:Layout.union|union}\n *\n * If the union has a {@link Union#defaultLayout|default layout} that\n * layout must have a non-negative {@link Layout#span|span}. The span\n * of a fixed-span union includes its {@link\n * Union#discriminator|discriminator} if the variant is a {@link\n * Union#usesPrefixDiscriminator|prefix of the union}, plus the span\n * of its {@link Union#defaultLayout|default layout}.\n *\n * If the union does not have a default layout then the encoded span\n * of the union depends on the encoded span of its variant (which may\n * be fixed or variable).\n *\n * {@link VariantLayout#layout|Variant layout}s are added through\n * {@link Union#addVariant|addVariant}. If the union has a default\n * layout, the span of the {@link VariantLayout#layout|layout\n * contained by the variant} must not exceed the span of the {@link\n * Union#defaultLayout|default layout} (minus the span of a {@link\n * Union#usesPrefixDiscriminator|prefix disriminator}, if used). The\n * span of the variant will equal the span of the union itself.\n *\n * The variant for a buffer can only be identified from the {@link\n * Union#discriminator|discriminator} {@link\n * UnionDiscriminator#property|property} (in the case of the {@link\n * Union#defaultLayout|default layout}), or by using {@link\n * Union#getVariant|getVariant} and examining the resulting {@link\n * VariantLayout} instance.\n *\n * A variant compatible with a JavaScript object can be identified\n * using {@link Union#getSourceVariant|getSourceVariant}.\n *\n * @param {(UnionDiscriminator|ExternalLayout|Layout)} discr - How to\n * identify the layout used to interpret the union contents. The\n * parameter must be an instance of {@link UnionDiscriminator}, an\n * {@link ExternalLayout} that satisfies {@link\n * ExternalLayout#isCount|isCount()}, or {@link UInt} (or {@link\n * UIntBE}). When a non-external layout element is passed the layout\n * appears at the start of the union. In all cases the (synthesized)\n * {@link UnionDiscriminator} instance is recorded as {@link\n * Union#discriminator|discriminator}.\n *\n * @param {(Layout|null)} defaultLayout - initializer for {@link\n * Union#defaultLayout|defaultLayout}. If absent defaults to `null`.\n * If `null` there is no default layout: the union has data-dependent\n * length and attempts to decode or encode unrecognized variants will\n * throw an exception. A {@link Layout} instance must have a\n * non-negative {@link Layout#span|span}, and if it lacks a {@link\n * Layout#property|property} the {@link\n * Union#defaultLayout|defaultLayout} will be a {@link\n * Layout#replicate|replica} with property `content`.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Union extends Layout {\n constructor(discr, defaultLayout, property) {\n const upv = ((discr instanceof UInt)\n || (discr instanceof UIntBE));\n if (upv) {\n discr = new UnionLayoutDiscriminator(new OffsetLayout(discr));\n } else if ((discr instanceof ExternalLayout)\n && discr.isCount()) {\n discr = new UnionLayoutDiscriminator(discr);\n } else if (!(discr instanceof UnionDiscriminator)) {\n throw new TypeError('discr must be a UnionDiscriminator '\n + 'or an unsigned integer layout');\n }\n if (undefined === defaultLayout) {\n defaultLayout = null;\n }\n if (!((null === defaultLayout)\n || (defaultLayout instanceof Layout))) {\n throw new TypeError('defaultLayout must be null or a Layout');\n }\n if (null !== defaultLayout) {\n if (0 > defaultLayout.span) {\n throw new Error('defaultLayout must have constant span');\n }\n if (undefined === defaultLayout.property) {\n defaultLayout = defaultLayout.replicate('content');\n }\n }\n\n /* The union span can be estimated only if there's a default\n * layout. The union spans its default layout, plus any prefix\n * variant layout. By construction both layouts, if present, have\n * non-negative span. */\n let span = -1;\n if (defaultLayout) {\n span = defaultLayout.span;\n if ((0 <= span) && upv) {\n span += discr.layout.span;\n }\n }\n super(span, property);\n\n /** The interface for the discriminator value in isolation.\n *\n * This a {@link UnionDiscriminator} either passed to the\n * constructor or synthesized from the `discr` constructor\n * argument. {@link\n * Union#usesPrefixDiscriminator|usesPrefixDiscriminator} will be\n * `true` iff the `discr` parameter was a non-offset {@link\n * Layout} instance. */\n this.discriminator = discr;\n\n /** `true` if the {@link Union#discriminator|discriminator} is the\n * first field in the union.\n *\n * If `false` the discriminator is obtained from somewhere\n * else. */\n this.usesPrefixDiscriminator = upv;\n\n /** The layout for non-discriminator content when the value of the\n * discriminator is not recognized.\n *\n * This is the value passed to the constructor. It is\n * structurally equivalent to the second component of {@link\n * Union#layout|layout} but may have a different property\n * name. */\n this.defaultLayout = defaultLayout;\n\n /** A registry of allowed variants.\n *\n * The keys are unsigned integers which should be compatible with\n * {@link Union.discriminator|discriminator}. The property value\n * is the corresponding {@link VariantLayout} instances assigned\n * to this union by {@link Union#addVariant|addVariant}.\n *\n * **NOTE** The registry remains mutable so that variants can be\n * {@link Union#addVariant|added} at any time. Users should not\n * manipulate the content of this property. */\n this.registry = {};\n\n /* Private variable used when invoking getSourceVariant */\n let boundGetSourceVariant = this.defaultGetSourceVariant.bind(this);\n\n /** Function to infer the variant selected by a source object.\n *\n * Defaults to {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant} but may\n * be overridden using {@link\n * Union#configGetSourceVariant|configGetSourceVariant}.\n *\n * @param {Object} src - as with {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant}.\n *\n * @returns {(undefined|VariantLayout)} The default variant\n * (`undefined`) or first registered variant that uses a property\n * available in `src`. */\n this.getSourceVariant = function(src) {\n return boundGetSourceVariant(src);\n };\n\n /** Function to override the implementation of {@link\n * Union#getSourceVariant|getSourceVariant}.\n *\n * Use this if the desired variant cannot be identified using the\n * algorithm of {@link\n * Union#defaultGetSourceVariant|defaultGetSourceVariant}.\n *\n * **NOTE** The provided function will be invoked bound to this\n * Union instance, providing local access to {@link\n * Union#registry|registry}.\n *\n * @param {Function} gsv - a function that follows the API of\n * {@link Union#defaultGetSourceVariant|defaultGetSourceVariant}. */\n this.configGetSourceVariant = function(gsv) {\n boundGetSourceVariant = gsv.bind(this);\n };\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n /* Default layouts always have non-negative span, so we don't have\n * one and we have to recognize the variant which will in turn\n * determine the span. */\n const vlo = this.getVariant(b, offset);\n if (!vlo) {\n throw new Error('unable to determine span for unrecognized variant');\n }\n return vlo.getSpan(b, offset);\n }\n\n /**\n * Method to infer a registered Union variant compatible with `src`.\n *\n * The first satisified rule in the following sequence defines the\n * return value:\n * * If `src` has properties matching the Union discriminator and\n * the default layout, `undefined` is returned regardless of the\n * value of the discriminator property (this ensures the default\n * layout will be used);\n * * If `src` has a property matching the Union discriminator, the\n * value of the discriminator identifies a registered variant, and\n * either (a) the variant has no layout, or (b) `src` has the\n * variant's property, then the variant is returned (because the\n * source satisfies the constraints of the variant it identifies);\n * * If `src` does not have a property matching the Union\n * discriminator, but does have a property matching a registered\n * variant, then the variant is returned (because the source\n * matches a variant without an explicit conflict);\n * * An error is thrown (because we either can't identify a variant,\n * or we were explicitly told the variant but can't satisfy it).\n *\n * @param {Object} src - an object presumed to be compatible with\n * the content of the Union.\n *\n * @return {(undefined|VariantLayout)} - as described above.\n *\n * @throws {Error} - if `src` cannot be associated with a default or\n * registered variant.\n */\n defaultGetSourceVariant(src) {\n if (src.hasOwnProperty(this.discriminator.property)) {\n if (this.defaultLayout\n && src.hasOwnProperty(this.defaultLayout.property)) {\n return undefined;\n }\n const vlo = this.registry[src[this.discriminator.property]];\n if (vlo\n && ((!vlo.layout)\n || src.hasOwnProperty(vlo.property))) {\n return vlo;\n }\n } else {\n for (const tag in this.registry) {\n const vlo = this.registry[tag];\n if (src.hasOwnProperty(vlo.property)) {\n return vlo;\n }\n }\n }\n throw new Error('unable to infer src variant');\n }\n\n /** Implement {@link Layout#decode|decode} for {@link Union}.\n *\n * If the variant is {@link Union#addVariant|registered} the return\n * value is an instance of that variant, with no explicit\n * discriminator. Otherwise the {@link Union#defaultLayout|default\n * layout} is used to decode the content. */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n let dest;\n const dlo = this.discriminator;\n const discr = dlo.decode(b, offset);\n let clo = this.registry[discr];\n if (undefined === clo) {\n let contentOffset = 0;\n clo = this.defaultLayout;\n if (this.usesPrefixDiscriminator) {\n contentOffset = dlo.layout.span;\n }\n dest = this.makeDestinationObject();\n dest[dlo.property] = discr;\n dest[clo.property] = this.defaultLayout.decode(b, offset + contentOffset);\n } else {\n dest = clo.decode(b, offset);\n }\n return dest;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Union}.\n *\n * This API assumes the `src` object is consistent with the union's\n * {@link Union#defaultLayout|default layout}. To encode variants\n * use the appropriate variant-specific {@link VariantLayout#encode}\n * method. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const vlo = this.getSourceVariant(src);\n if (undefined === vlo) {\n const dlo = this.discriminator;\n const clo = this.defaultLayout;\n let contentOffset = 0;\n if (this.usesPrefixDiscriminator) {\n contentOffset = dlo.layout.span;\n }\n dlo.encode(src[dlo.property], b, offset);\n return contentOffset + clo.encode(src[clo.property], b,\n offset + contentOffset);\n }\n return vlo.encode(src, b, offset);\n }\n\n /** Register a new variant structure within a union. The newly\n * created variant is returned.\n *\n * @param {Number} variant - initializer for {@link\n * VariantLayout#variant|variant}.\n *\n * @param {Layout} layout - initializer for {@link\n * VariantLayout#layout|layout}.\n *\n * @param {String} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {VariantLayout} */\n addVariant(variant, layout, property) {\n const rv = new VariantLayout(this, variant, layout, property);\n this.registry[variant] = rv;\n return rv;\n }\n\n /**\n * Get the layout associated with a registered variant.\n *\n * If `vb` does not produce a registered variant the function returns\n * `undefined`.\n *\n * @param {(Number|Buffer)} vb - either the variant number, or a\n * buffer from which the discriminator is to be read.\n *\n * @param {Number} offset - offset into `vb` for the start of the\n * union. Used only when `vb` is an instance of {Buffer}.\n *\n * @return {({VariantLayout}|undefined)}\n */\n getVariant(vb, offset) {\n let variant = vb;\n if (Buffer.isBuffer(vb)) {\n if (undefined === offset) {\n offset = 0;\n }\n variant = this.discriminator.decode(vb, offset);\n }\n return this.registry[variant];\n }\n}\n\n/**\n * Represent a specific variant within a containing union.\n *\n * **NOTE** The {@link Layout#span|span} of the variant may include\n * the span of the {@link Union#discriminator|discriminator} used to\n * identify it, but values read and written using the variant strictly\n * conform to the content of {@link VariantLayout#layout|layout}.\n *\n * **NOTE** User code should not invoke this constructor directly. Use\n * the union {@link Union#addVariant|addVariant} helper method.\n *\n * @param {Union} union - initializer for {@link\n * VariantLayout#union|union}.\n *\n * @param {Number} variant - initializer for {@link\n * VariantLayout#variant|variant}.\n *\n * @param {Layout} [layout] - initializer for {@link\n * VariantLayout#layout|layout}. If absent the variant carries no\n * data.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}. Unlike many other layouts, variant\n * layouts normally include a property name so they can be identified\n * within their containing {@link Union}. The property identifier may\n * be absent only if `layout` is is absent.\n *\n * @augments {Layout}\n */\nclass VariantLayout extends Layout {\n constructor(union, variant, layout, property) {\n if (!(union instanceof Union)) {\n throw new TypeError('union must be a Union');\n }\n if ((!Number.isInteger(variant)) || (0 > variant)) {\n throw new TypeError('variant must be a (non-negative) integer');\n }\n if (('string' === typeof layout)\n && (undefined === property)) {\n property = layout;\n layout = null;\n }\n if (layout) {\n if (!(layout instanceof Layout)) {\n throw new TypeError('layout must be a Layout');\n }\n if ((null !== union.defaultLayout)\n && (0 <= layout.span)\n && (layout.span > union.defaultLayout.span)) {\n throw new Error('variant span exceeds span of containing union');\n }\n if ('string' !== typeof property) {\n throw new TypeError('variant must have a String property');\n }\n }\n let span = union.span;\n if (0 > union.span) {\n span = layout ? layout.span : 0;\n if ((0 <= span) && union.usesPrefixDiscriminator) {\n span += union.discriminator.layout.span;\n }\n }\n super(span, property);\n\n /** The {@link Union} to which this variant belongs. */\n this.union = union;\n\n /** The unsigned integral value identifying this variant within\n * the {@link Union#discriminator|discriminator} of the containing\n * union. */\n this.variant = variant;\n\n /** The {@link Layout} to be used when reading/writing the\n * non-discriminator part of the {@link\n * VariantLayout#union|union}. If `null` the variant carries no\n * data. */\n this.layout = layout || null;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (0 <= this.span) {\n /* Will be equal to the containing union span if that is not\n * variable. */\n return this.span;\n }\n if (undefined === offset) {\n offset = 0;\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n /* Span is defined solely by the variant (and prefix discriminator) */\n return contentOffset + this.layout.getSpan(b, offset + contentOffset);\n }\n\n /** @override */\n decode(b, offset) {\n const dest = this.makeDestinationObject();\n if (undefined === offset) {\n offset = 0;\n }\n if (this !== this.union.getVariant(b, offset)) {\n throw new Error('variant mismatch');\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n if (this.layout) {\n dest[this.property] = this.layout.decode(b, offset + contentOffset);\n } else if (this.property) {\n dest[this.property] = true;\n } else if (this.union.usesPrefixDiscriminator) {\n dest[this.union.discriminator.property] = this.variant;\n }\n return dest;\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n let contentOffset = 0;\n if (this.union.usesPrefixDiscriminator) {\n contentOffset = this.union.discriminator.layout.span;\n }\n if (this.layout\n && (!src.hasOwnProperty(this.property))) {\n throw new TypeError('variant lacks property ' + this.property);\n }\n this.union.discriminator.encode(this.variant, b, offset);\n let span = contentOffset;\n if (this.layout) {\n this.layout.encode(src[this.property], b, offset + contentOffset);\n span += this.layout.getSpan(b, offset + contentOffset);\n if ((0 <= this.union.span)\n && (span > this.union.span)) {\n throw new Error('encoded variant overruns containing union');\n }\n }\n return span;\n }\n\n /** Delegate {@link Layout#fromArray|fromArray} to {@link\n * VariantLayout#layout|layout}. */\n fromArray(values) {\n if (this.layout) {\n return this.layout.fromArray(values);\n }\n }\n}\n\n/** JavaScript chose to define bitwise operations as operating on\n * signed 32-bit values in 2's complement form, meaning any integer\n * with bit 31 set is going to look negative. For right shifts that's\n * not a problem, because `>>>` is a logical shift, but for every\n * other bitwise operator we have to compensate for possible negative\n * results. */\nfunction fixBitwiseResult(v) {\n if (0 > v) {\n v += 0x100000000;\n }\n return v;\n}\n\n/**\n * Contain a sequence of bit fields as an unsigned integer.\n *\n * *Factory*: {@link module:Layout.bits|bits}\n *\n * This is a container element; within it there are {@link BitField}\n * instances that provide the extracted properties. The container\n * simply defines the aggregate representation and its bit ordering.\n * The representation is an object containing properties with numeric\n * or {@link Boolean} values.\n *\n * {@link BitField}s are added with the {@link\n * BitStructure#addField|addField} and {@link\n * BitStructure#addBoolean|addBoolean} methods.\n\n * @param {Layout} word - initializer for {@link\n * BitStructure#word|word}. The parameter must be an instance of\n * {@link UInt} (or {@link UIntBE}) that is no more than 4 bytes wide.\n *\n * @param {bool} [msb] - `true` if the bit numbering starts at the\n * most significant bit of the containing word; `false` (default) if\n * it starts at the least significant bit of the containing word. If\n * the parameter at this position is a string and `property` is\n * `undefined` the value of this argument will instead be used as the\n * value of `property`.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass BitStructure extends Layout {\n constructor(word, msb, property) {\n if (!((word instanceof UInt)\n || (word instanceof UIntBE))) {\n throw new TypeError('word must be a UInt or UIntBE layout');\n }\n if (('string' === typeof msb)\n && (undefined === property)) {\n property = msb;\n msb = undefined;\n }\n if (4 < word.span) {\n throw new RangeError('word cannot exceed 32 bits');\n }\n super(word.span, property);\n\n /** The layout used for the packed value. {@link BitField}\n * instances are packed sequentially depending on {@link\n * BitStructure#msb|msb}. */\n this.word = word;\n\n /** Whether the bit sequences are packed starting at the most\n * significant bit growing down (`true`), or the least significant\n * bit growing up (`false`).\n *\n * **NOTE** Regardless of this value, the least significant bit of\n * any {@link BitField} value is the least significant bit of the\n * corresponding section of the packed value. */\n this.msb = !!msb;\n\n /** The sequence of {@link BitField} layouts that comprise the\n * packed structure.\n *\n * **NOTE** The array remains mutable to allow fields to be {@link\n * BitStructure#addField|added} after construction. Users should\n * not manipulate the content of this property.*/\n this.fields = [];\n\n /* Storage for the value. Capture a variable instead of using an\n * instance property because we don't want anything to change the\n * value without going through the mutator. */\n let value = 0;\n this._packedSetValue = function(v) {\n value = fixBitwiseResult(v);\n return this;\n };\n this._packedGetValue = function() {\n return value;\n };\n }\n\n /** @override */\n decode(b, offset) {\n const dest = this.makeDestinationObject();\n if (undefined === offset) {\n offset = 0;\n }\n const value = this.word.decode(b, offset);\n this._packedSetValue(value);\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n dest[fd.property] = fd.decode(value);\n }\n }\n return dest;\n }\n\n /** Implement {@link Layout#encode|encode} for {@link BitStructure}.\n *\n * If `src` is missing a property for a member with a defined {@link\n * Layout#property|property} the corresponding region of the packed\n * value is left unmodified. Unused bits are also left unmodified. */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n const value = this.word.decode(b, offset);\n this._packedSetValue(value);\n for (const fd of this.fields) {\n if (undefined !== fd.property) {\n const fv = src[fd.property];\n if (undefined !== fv) {\n fd.encode(fv);\n }\n }\n }\n return this.word.encode(this._packedGetValue(), b, offset);\n }\n\n /** Register a new bitfield with a containing bit structure. The\n * resulting bitfield is returned.\n *\n * @param {Number} bits - initializer for {@link BitField#bits|bits}.\n *\n * @param {string} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {BitField} */\n addField(bits, property) {\n const bf = new BitField(this, bits, property);\n this.fields.push(bf);\n return bf;\n }\n\n /** As with {@link BitStructure#addField|addField} for single-bit\n * fields with `boolean` value representation.\n *\n * @param {string} property - initializer for {@link\n * Layout#property|property}.\n *\n * @return {Boolean} */\n addBoolean(property) {\n // This is my Boolean, not the Javascript one.\n // eslint-disable-next-line no-new-wrappers\n const bf = new Boolean(this, property);\n this.fields.push(bf);\n return bf;\n }\n\n /**\n * Get access to the bit field for a given property.\n *\n * @param {String} property - the bit field of interest.\n *\n * @return {BitField} - the field associated with `property`, or\n * undefined if there is no such property.\n */\n fieldFor(property) {\n if ('string' !== typeof property) {\n throw new TypeError('property must be string');\n }\n for (const fd of this.fields) {\n if (fd.property === property) {\n return fd;\n }\n }\n }\n}\n\n/**\n * Represent a sequence of bits within a {@link BitStructure}.\n *\n * All bit field values are represented as unsigned integers.\n *\n * **NOTE** User code should not invoke this constructor directly.\n * Use the container {@link BitStructure#addField|addField} helper\n * method.\n *\n * **NOTE** BitField instances are not instances of {@link Layout}\n * since {@link Layout#span|span} measures 8-bit units.\n *\n * @param {BitStructure} container - initializer for {@link\n * BitField#container|container}.\n *\n * @param {Number} bits - initializer for {@link BitField#bits|bits}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n */\nclass BitField {\n constructor(container, bits, property) {\n if (!(container instanceof BitStructure)) {\n throw new TypeError('container must be a BitStructure');\n }\n if ((!Number.isInteger(bits)) || (0 >= bits)) {\n throw new TypeError('bits must be positive integer');\n }\n const totalBits = 8 * container.span;\n const usedBits = container.fields.reduce((sum, fd) => sum + fd.bits, 0);\n if ((bits + usedBits) > totalBits) {\n throw new Error('bits too long for span remainder ('\n + (totalBits - usedBits) + ' of '\n + totalBits + ' remain)');\n }\n\n /** The {@link BitStructure} instance to which this bit field\n * belongs. */\n this.container = container;\n\n /** The span of this value in bits. */\n this.bits = bits;\n\n /** A mask of {@link BitField#bits|bits} bits isolating value bits\n * that fit within the field.\n *\n * That is, it masks a value that has not yet been shifted into\n * position within its containing packed integer. */\n this.valueMask = (1 << bits) - 1;\n if (32 === bits) { // shifted value out of range\n this.valueMask = 0xFFFFFFFF;\n }\n\n /** The offset of the value within the containing packed unsigned\n * integer. The least significant bit of the packed value is at\n * offset zero, regardless of bit ordering used. */\n this.start = usedBits;\n if (this.container.msb) {\n this.start = totalBits - usedBits - bits;\n }\n\n /** A mask of {@link BitField#bits|bits} isolating the field value\n * within the containing packed unsigned integer. */\n this.wordMask = fixBitwiseResult(this.valueMask << this.start);\n\n /** The property name used when this bitfield is represented in an\n * Object.\n *\n * Intended to be functionally equivalent to {@link\n * Layout#property}.\n *\n * If left undefined the corresponding span of bits will be\n * treated as padding: it will not be mutated by {@link\n * Layout#encode|encode} nor represented as a property in the\n * decoded Object. */\n this.property = property;\n }\n\n /** Store a value into the corresponding subsequence of the containing\n * bit field. */\n decode() {\n const word = this.container._packedGetValue();\n const wordValue = fixBitwiseResult(word & this.wordMask);\n const value = wordValue >>> this.start;\n return value;\n }\n\n /** Store a value into the corresponding subsequence of the containing\n * bit field.\n *\n * **NOTE** This is not a specialization of {@link\n * Layout#encode|Layout.encode} and there is no return value. */\n encode(value) {\n if ((!Number.isInteger(value))\n || (value !== fixBitwiseResult(value & this.valueMask))) {\n throw new TypeError(nameWithProperty('BitField.encode', this)\n + ' value must be integer not exceeding ' + this.valueMask);\n }\n const word = this.container._packedGetValue();\n const wordValue = fixBitwiseResult(value << this.start);\n this.container._packedSetValue(fixBitwiseResult(word & ~this.wordMask)\n | wordValue);\n };\n}\n\n/**\n * Represent a single bit within a {@link BitStructure} as a\n * JavaScript boolean.\n *\n * **NOTE** User code should not invoke this constructor directly.\n * Use the container {@link BitStructure#addBoolean|addBoolean} helper\n * method.\n *\n * @param {BitStructure} container - initializer for {@link\n * BitField#container|container}.\n *\n * @param {string} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {BitField}\n */\n/* eslint-disable no-extend-native */\nclass Boolean extends BitField {\n constructor(container, property) {\n super(container, 1, property);\n }\n\n /** Override {@link BitField#decode|decode} for {@link Boolean|Boolean}.\n *\n * @returns {boolean} */\n decode(b, offset) {\n return !!BitField.prototype.decode.call(this, b, offset);\n }\n\n /** @override */\n encode(value) {\n if ('boolean' === typeof value) {\n // BitField requires integer values\n value = +value;\n }\n return BitField.prototype.encode.call(this, value);\n }\n}\n/* eslint-enable no-extend-native */\n\n/**\n * Contain a fixed-length block of arbitrary data, represented as a\n * Buffer.\n *\n * *Factory*: {@link module:Layout.blob|blob}\n *\n * @param {(Number|ExternalLayout)} length - initializes {@link\n * Blob#length|length}.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Blob extends Layout {\n constructor(length, property) {\n if (!(((length instanceof ExternalLayout) && length.isCount())\n || (Number.isInteger(length) && (0 <= length)))) {\n throw new TypeError('length must be positive integer '\n + 'or an unsigned integer ExternalLayout');\n }\n\n let span = -1;\n if (!(length instanceof ExternalLayout)) {\n span = length;\n }\n super(span, property);\n\n /** The number of bytes in the blob.\n *\n * This may be a non-negative integer, or an instance of {@link\n * ExternalLayout} that satisfies {@link\n * ExternalLayout#isCount|isCount()}. */\n this.length = length;\n }\n\n /** @override */\n getSpan(b, offset) {\n let span = this.span;\n if (0 > span) {\n span = this.length.decode(b, offset);\n }\n return span;\n }\n\n /** @override */\n decode(b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n let span = this.span;\n if (0 > span) {\n span = this.length.decode(b, offset);\n }\n return b.slice(offset, offset + span);\n }\n\n /** Implement {@link Layout#encode|encode} for {@link Blob}.\n *\n * **NOTE** If {@link Layout#count|count} is an instance of {@link\n * ExternalLayout} then the length of `src` will be encoded as the\n * count after `src` is encoded. */\n encode(src, b, offset) {\n let span = this.length;\n if (this.length instanceof ExternalLayout) {\n span = src.length;\n }\n if (!(Buffer.isBuffer(src)\n && (span === src.length))) {\n throw new TypeError(nameWithProperty('Blob.encode', this)\n + ' requires (length ' + span + ') Buffer as src');\n }\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n b.write(src.toString('hex'), offset, span, 'hex');\n if (this.length instanceof ExternalLayout) {\n this.length.encode(span, b, offset);\n }\n return span;\n }\n}\n\n/**\n * Contain a `NUL`-terminated UTF8 string.\n *\n * *Factory*: {@link module:Layout.cstr|cstr}\n *\n * **NOTE** Any UTF8 string that incorporates a zero-valued byte will\n * not be correctly decoded by this layout.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass CString extends Layout {\n constructor(property) {\n super(-1, property);\n }\n\n /** @override */\n getSpan(b, offset) {\n if (!Buffer.isBuffer(b)) {\n throw new TypeError('b must be a Buffer');\n }\n if (undefined === offset) {\n offset = 0;\n }\n let idx = offset;\n while ((idx < b.length) && (0 !== b[idx])) {\n idx += 1;\n }\n return 1 + idx - offset;\n }\n\n /** @override */\n decode(b, offset, dest) {\n if (undefined === offset) {\n offset = 0;\n }\n let span = this.getSpan(b, offset);\n return b.slice(offset, offset + span - 1).toString('utf-8');\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n /* Must force this to a string, lest it be a number and the\n * \"utf8-encoding\" below actually allocate a buffer of length\n * src */\n if ('string' !== typeof src) {\n src = src.toString();\n }\n const srcb = new Buffer(src, 'utf8');\n const span = srcb.length;\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n srcb.copy(b, offset);\n b[offset + span] = 0;\n return span + 1;\n }\n}\n\n/**\n * Contain a UTF8 string with implicit length.\n *\n * *Factory*: {@link module:Layout.utf8|utf8}\n *\n * **NOTE** Because the length is implicit in the size of the buffer\n * this layout should be used only in isolation, or in a situation\n * where the length can be expressed by operating on a slice of the\n * containing buffer.\n *\n * @param {Number} [maxSpan] - the maximum length allowed for encoded\n * string content. If not provided there is no bound on the allowed\n * content.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass UTF8 extends Layout {\n constructor(maxSpan, property) {\n if (('string' === typeof maxSpan)\n && (undefined === property)) {\n property = maxSpan;\n maxSpan = undefined;\n }\n if (undefined === maxSpan) {\n maxSpan = -1;\n } else if (!Number.isInteger(maxSpan)) {\n throw new TypeError('maxSpan must be an integer');\n }\n\n super(-1, property);\n\n /** The maximum span of the layout in bytes.\n *\n * Positive values are generally expected. Zero is abnormal.\n * Attempts to encode or decode a value that exceeds this length\n * will throw a `RangeError`.\n *\n * A negative value indicates that there is no bound on the length\n * of the content. */\n this.maxSpan = maxSpan;\n }\n\n /** @override */\n getSpan(b, offset) {\n if (!Buffer.isBuffer(b)) {\n throw new TypeError('b must be a Buffer');\n }\n if (undefined === offset) {\n offset = 0;\n }\n return b.length - offset;\n }\n\n /** @override */\n decode(b, offset, dest) {\n if (undefined === offset) {\n offset = 0;\n }\n let span = this.getSpan(b, offset);\n if ((0 <= this.maxSpan)\n && (this.maxSpan < span)) {\n throw new RangeError('text length exceeds maxSpan');\n }\n return b.slice(offset, offset + span).toString('utf-8');\n }\n\n /** @override */\n encode(src, b, offset) {\n if (undefined === offset) {\n offset = 0;\n }\n /* Must force this to a string, lest it be a number and the\n * \"utf8-encoding\" below actually allocate a buffer of length\n * src */\n if ('string' !== typeof src) {\n src = src.toString();\n }\n const srcb = new Buffer(src, 'utf8');\n const span = srcb.length;\n if ((0 <= this.maxSpan)\n && (this.maxSpan < span)) {\n throw new RangeError('text length exceeds maxSpan');\n }\n if ((offset + span) > b.length) {\n throw new RangeError('encoding overruns Buffer');\n }\n srcb.copy(b, offset);\n return span;\n }\n}\n\n/**\n * Contain a constant value.\n *\n * This layout may be used in cases where a JavaScript value can be\n * inferred without an expression in the binary encoding. An example\n * would be a {@link VariantLayout|variant layout} where the content\n * is implied by the union {@link Union#discriminator|discriminator}.\n *\n * @param {Object|Number|String} value - initializer for {@link\n * Constant#value|value}. If the value is an object (or array) and\n * the application intends the object to remain unchanged regardless\n * of what is done to values decoded by this layout, the value should\n * be frozen prior passing it to this constructor.\n *\n * @param {String} [property] - initializer for {@link\n * Layout#property|property}.\n *\n * @augments {Layout}\n */\nclass Constant extends Layout {\n constructor(value, property) {\n super(0, property);\n\n /** The value produced by this constant when the layout is {@link\n * Constant#decode|decoded}.\n *\n * Any JavaScript value including `null` and `undefined` is\n * permitted.\n *\n * **WARNING** If `value` passed in the constructor was not\n * frozen, it is possible for users of decoded values to change\n * the content of the value. */\n this.value = value;\n }\n\n /** @override */\n decode(b, offset, dest) {\n return this.value;\n }\n\n /** @override */\n encode(src, b, offset) {\n /* Constants take no space */\n return 0;\n }\n}\n\nexports.ExternalLayout = ExternalLayout;\nexports.GreedyCount = GreedyCount;\nexports.OffsetLayout = OffsetLayout;\nexports.UInt = UInt;\nexports.UIntBE = UIntBE;\nexports.Int = Int;\nexports.IntBE = IntBE;\nexports.Float = Float;\nexports.FloatBE = FloatBE;\nexports.Double = Double;\nexports.DoubleBE = DoubleBE;\nexports.Sequence = Sequence;\nexports.Structure = Structure;\nexports.UnionDiscriminator = UnionDiscriminator;\nexports.UnionLayoutDiscriminator = UnionLayoutDiscriminator;\nexports.Union = Union;\nexports.VariantLayout = VariantLayout;\nexports.BitStructure = BitStructure;\nexports.BitField = BitField;\nexports.Boolean = Boolean;\nexports.Blob = Blob;\nexports.CString = CString;\nexports.UTF8 = UTF8;\nexports.Constant = Constant;\n\n/** Factory for {@link GreedyCount}. */\nexports.greedy = ((elementSpan, property) => new GreedyCount(elementSpan, property));\n\n/** Factory for {@link OffsetLayout}. */\nexports.offset = ((layout, offset, property) => new OffsetLayout(layout, offset, property));\n\n/** Factory for {@link UInt|unsigned int layouts} spanning one\n * byte. */\nexports.u8 = (property => new UInt(1, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning two bytes. */\nexports.u16 = (property => new UInt(2, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning three bytes. */\nexports.u24 = (property => new UInt(3, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning four bytes. */\nexports.u32 = (property => new UInt(4, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning five bytes. */\nexports.u40 = (property => new UInt(5, property));\n\n/** Factory for {@link UInt|little-endian unsigned int layouts}\n * spanning six bytes. */\nexports.u48 = (property => new UInt(6, property));\n\n/** Factory for {@link NearUInt64|little-endian unsigned int\n * layouts} interpreted as Numbers. */\nexports.nu64 = (property => new NearUInt64(property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning two bytes. */\nexports.u16be = (property => new UIntBE(2, property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning three bytes. */\nexports.u24be = (property => new UIntBE(3, property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning four bytes. */\nexports.u32be = (property => new UIntBE(4, property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning five bytes. */\nexports.u40be = (property => new UIntBE(5, property));\n\n/** Factory for {@link UInt|big-endian unsigned int layouts}\n * spanning six bytes. */\nexports.u48be = (property => new UIntBE(6, property));\n\n/** Factory for {@link NearUInt64BE|big-endian unsigned int\n * layouts} interpreted as Numbers. */\nexports.nu64be = (property => new NearUInt64BE(property));\n\n/** Factory for {@link Int|signed int layouts} spanning one\n * byte. */\nexports.s8 = (property => new Int(1, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning two bytes. */\nexports.s16 = (property => new Int(2, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning three bytes. */\nexports.s24 = (property => new Int(3, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning four bytes. */\nexports.s32 = (property => new Int(4, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning five bytes. */\nexports.s40 = (property => new Int(5, property));\n\n/** Factory for {@link Int|little-endian signed int layouts}\n * spanning six bytes. */\nexports.s48 = (property => new Int(6, property));\n\n/** Factory for {@link NearInt64|little-endian signed int layouts}\n * interpreted as Numbers. */\nexports.ns64 = (property => new NearInt64(property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning two bytes. */\nexports.s16be = (property => new IntBE(2, property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning three bytes. */\nexports.s24be = (property => new IntBE(3, property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning four bytes. */\nexports.s32be = (property => new IntBE(4, property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning five bytes. */\nexports.s40be = (property => new IntBE(5, property));\n\n/** Factory for {@link Int|big-endian signed int layouts}\n * spanning six bytes. */\nexports.s48be = (property => new IntBE(6, property));\n\n/** Factory for {@link NearInt64BE|big-endian signed int layouts}\n * interpreted as Numbers. */\nexports.ns64be = (property => new NearInt64BE(property));\n\n/** Factory for {@link Float|little-endian 32-bit floating point} values. */\nexports.f32 = (property => new Float(property));\n\n/** Factory for {@link FloatBE|big-endian 32-bit floating point} values. */\nexports.f32be = (property => new FloatBE(property));\n\n/** Factory for {@link Double|little-endian 64-bit floating point} values. */\nexports.f64 = (property => new Double(property));\n\n/** Factory for {@link DoubleBE|big-endian 64-bit floating point} values. */\nexports.f64be = (property => new DoubleBE(property));\n\n/** Factory for {@link Structure} values. */\nexports.struct = ((fields, property, decodePrefixes) => new Structure(fields, property, decodePrefixes));\n\n/** Factory for {@link BitStructure} values. */\nexports.bits = ((word, msb, property) => new BitStructure(word, msb, property));\n\n/** Factory for {@link Sequence} values. */\nexports.seq = ((elementLayout, count, property) => new Sequence(elementLayout, count, property));\n\n/** Factory for {@link Union} values. */\nexports.union = ((discr, defaultLayout, property) => new Union(discr, defaultLayout, property));\n\n/** Factory for {@link UnionLayoutDiscriminator} values. */\nexports.unionLayoutDiscriminator = ((layout, property) => new UnionLayoutDiscriminator(layout, property));\n\n/** Factory for {@link Blob} values. */\nexports.blob = ((length, property) => new Blob(length, property));\n\n/** Factory for {@link CString} values. */\nexports.cstr = (property => new CString(property));\n\n/** Factory for {@link UTF8} values. */\nexports.utf8 = ((maxSpan, property) => new UTF8(maxSpan, property));\n\n/** Factory for {@link Constant} values. */\nexports.const = ((value, property) => new Constant(value, property));\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","'use strict';\n\nconst preserveCamelCase = string => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && /[a-zA-Z]/.test(character) && character.toUpperCase() === character) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && /[a-zA-Z]/.test(character) && character.toLowerCase() === character) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = character.toLowerCase() === character && character.toUpperCase() !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = character.toUpperCase() === character && character.toLowerCase() !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = Object.assign({\n\t\tpascalCase: false\n\t}, options);\n\n\tconst postProcess = x => options.pascalCase ? x.charAt(0).toUpperCase() + x.slice(1) : x;\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? input.toUpperCase() : input.toLowerCase();\n\t}\n\n\tconst hasUpperCase = input !== input.toLowerCase();\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input);\n\t}\n\n\tinput = input\n\t\t.replace(/^[_.\\- ]+/, '')\n\t\t.toLowerCase()\n\t\t.replace(/[_.\\- ]+(\\w|$)/g, (_, p1) => p1.toUpperCase())\n\t\t.replace(/\\d+(\\w|$)/g, m => m.toUpperCase());\n\n\treturn postProcess(input);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n","'use strict';\n\nconst UPPERCASE = /[\\p{Lu}]/u;\nconst LOWERCASE = /[\\p{Ll}]/u;\nconst LEADING_CAPITAL = /^[\\p{Lu}](?![\\p{Lu}])/gu;\nconst IDENTIFIER = /([\\p{Alpha}\\p{N}_]|$)/u;\nconst SEPARATORS = /[_.\\- ]+/;\n\nconst LEADING_SEPARATORS = new RegExp('^' + SEPARATORS.source);\nconst SEPARATORS_AND_IDENTIFIER = new RegExp(SEPARATORS.source + IDENTIFIER.source, 'gu');\nconst NUMBERS_AND_IDENTIFIER = new RegExp('\\\\d+' + IDENTIFIER.source, 'gu');\n\nconst preserveCamelCase = (string, toLowerCase, toUpperCase) => {\n\tlet isLastCharLower = false;\n\tlet isLastCharUpper = false;\n\tlet isLastLastCharUpper = false;\n\n\tfor (let i = 0; i < string.length; i++) {\n\t\tconst character = string[i];\n\n\t\tif (isLastCharLower && UPPERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i) + '-' + string.slice(i);\n\t\t\tisLastCharLower = false;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = true;\n\t\t\ti++;\n\t\t} else if (isLastCharUpper && isLastLastCharUpper && LOWERCASE.test(character)) {\n\t\t\tstring = string.slice(0, i - 1) + '-' + string.slice(i - 1);\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = false;\n\t\t\tisLastCharLower = true;\n\t\t} else {\n\t\t\tisLastCharLower = toLowerCase(character) === character && toUpperCase(character) !== character;\n\t\t\tisLastLastCharUpper = isLastCharUpper;\n\t\t\tisLastCharUpper = toUpperCase(character) === character && toLowerCase(character) !== character;\n\t\t}\n\t}\n\n\treturn string;\n};\n\nconst preserveConsecutiveUppercase = (input, toLowerCase) => {\n\tLEADING_CAPITAL.lastIndex = 0;\n\n\treturn input.replace(LEADING_CAPITAL, m1 => toLowerCase(m1));\n};\n\nconst postProcess = (input, toUpperCase) => {\n\tSEPARATORS_AND_IDENTIFIER.lastIndex = 0;\n\tNUMBERS_AND_IDENTIFIER.lastIndex = 0;\n\n\treturn input.replace(SEPARATORS_AND_IDENTIFIER, (_, identifier) => toUpperCase(identifier))\n\t\t.replace(NUMBERS_AND_IDENTIFIER, m => toUpperCase(m));\n};\n\nconst camelCase = (input, options) => {\n\tif (!(typeof input === 'string' || Array.isArray(input))) {\n\t\tthrow new TypeError('Expected the input to be `string | string[]`');\n\t}\n\n\toptions = {\n\t\tpascalCase: false,\n\t\tpreserveConsecutiveUppercase: false,\n\t\t...options\n\t};\n\n\tif (Array.isArray(input)) {\n\t\tinput = input.map(x => x.trim())\n\t\t\t.filter(x => x.length)\n\t\t\t.join('-');\n\t} else {\n\t\tinput = input.trim();\n\t}\n\n\tif (input.length === 0) {\n\t\treturn '';\n\t}\n\n\tconst toLowerCase = options.locale === false ?\n\t\tstring => string.toLowerCase() :\n\t\tstring => string.toLocaleLowerCase(options.locale);\n\tconst toUpperCase = options.locale === false ?\n\t\tstring => string.toUpperCase() :\n\t\tstring => string.toLocaleUpperCase(options.locale);\n\n\tif (input.length === 1) {\n\t\treturn options.pascalCase ? toUpperCase(input) : toLowerCase(input);\n\t}\n\n\tconst hasUpperCase = input !== toLowerCase(input);\n\n\tif (hasUpperCase) {\n\t\tinput = preserveCamelCase(input, toLowerCase, toUpperCase);\n\t}\n\n\tinput = input.replace(LEADING_SEPARATORS, '');\n\n\tif (options.preserveConsecutiveUppercase) {\n\t\tinput = preserveConsecutiveUppercase(input, toLowerCase);\n\t} else {\n\t\tinput = toLowerCase(input);\n\t}\n\n\tif (options.pascalCase) {\n\t\tinput = toUpperCase(input.charAt(0)) + input.slice(1);\n\t}\n\n\treturn postProcess(input, toUpperCase);\n};\n\nmodule.exports = camelCase;\n// TODO: Remove this for the next major release\nmodule.exports.default = camelCase;\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // avoid screen readers from reading out loud the text\n mark.ariaHidden = \"true\"\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","var __self__ = (function (root) {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = root.DOMException\n}\nF.prototype = root;\nreturn new F();\n})(typeof self !== 'undefined' ? self : this);\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n return exports;\n\n}({}));\n})(__self__);\ndelete __self__.fetch.polyfill\nexports = __self__.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = __self__.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = __self__.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = __self__.Headers\nexports.Request = __self__.Request\nexports.Response = __self__.Response\nmodule.exports = exports\n","var global = typeof self !== 'undefined' ? self : this;\nvar __self__ = (function () {\nfunction F() {\nthis.fetch = false;\nthis.DOMException = global.DOMException\n}\nF.prototype = global;\nreturn new F();\n})();\n(function(self) {\n\nvar irrelevant = (function (exports) {\n\n var support = {\n searchParams: 'URLSearchParams' in self,\n iterable: 'Symbol' in self && 'iterator' in Symbol,\n blob:\n 'FileReader' in self &&\n 'Blob' in self &&\n (function() {\n try {\n new Blob();\n return true\n } catch (e) {\n return false\n }\n })(),\n formData: 'FormData' in self,\n arrayBuffer: 'ArrayBuffer' in self\n };\n\n function isDataView(obj) {\n return obj && DataView.prototype.isPrototypeOf(obj)\n }\n\n if (support.arrayBuffer) {\n var viewClasses = [\n '[object Int8Array]',\n '[object Uint8Array]',\n '[object Uint8ClampedArray]',\n '[object Int16Array]',\n '[object Uint16Array]',\n '[object Int32Array]',\n '[object Uint32Array]',\n '[object Float32Array]',\n '[object Float64Array]'\n ];\n\n var isArrayBufferView =\n ArrayBuffer.isView ||\n function(obj) {\n return obj && viewClasses.indexOf(Object.prototype.toString.call(obj)) > -1\n };\n }\n\n function normalizeName(name) {\n if (typeof name !== 'string') {\n name = String(name);\n }\n if (/[^a-z0-9\\-#$%&'*+.^_`|~]/i.test(name)) {\n throw new TypeError('Invalid character in header field name')\n }\n return name.toLowerCase()\n }\n\n function normalizeValue(value) {\n if (typeof value !== 'string') {\n value = String(value);\n }\n return value\n }\n\n // Build a destructive iterator for the value list\n function iteratorFor(items) {\n var iterator = {\n next: function() {\n var value = items.shift();\n return {done: value === undefined, value: value}\n }\n };\n\n if (support.iterable) {\n iterator[Symbol.iterator] = function() {\n return iterator\n };\n }\n\n return iterator\n }\n\n function Headers(headers) {\n this.map = {};\n\n if (headers instanceof Headers) {\n headers.forEach(function(value, name) {\n this.append(name, value);\n }, this);\n } else if (Array.isArray(headers)) {\n headers.forEach(function(header) {\n this.append(header[0], header[1]);\n }, this);\n } else if (headers) {\n Object.getOwnPropertyNames(headers).forEach(function(name) {\n this.append(name, headers[name]);\n }, this);\n }\n }\n\n Headers.prototype.append = function(name, value) {\n name = normalizeName(name);\n value = normalizeValue(value);\n var oldValue = this.map[name];\n this.map[name] = oldValue ? oldValue + ', ' + value : value;\n };\n\n Headers.prototype['delete'] = function(name) {\n delete this.map[normalizeName(name)];\n };\n\n Headers.prototype.get = function(name) {\n name = normalizeName(name);\n return this.has(name) ? this.map[name] : null\n };\n\n Headers.prototype.has = function(name) {\n return this.map.hasOwnProperty(normalizeName(name))\n };\n\n Headers.prototype.set = function(name, value) {\n this.map[normalizeName(name)] = normalizeValue(value);\n };\n\n Headers.prototype.forEach = function(callback, thisArg) {\n for (var name in this.map) {\n if (this.map.hasOwnProperty(name)) {\n callback.call(thisArg, this.map[name], name, this);\n }\n }\n };\n\n Headers.prototype.keys = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push(name);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.values = function() {\n var items = [];\n this.forEach(function(value) {\n items.push(value);\n });\n return iteratorFor(items)\n };\n\n Headers.prototype.entries = function() {\n var items = [];\n this.forEach(function(value, name) {\n items.push([name, value]);\n });\n return iteratorFor(items)\n };\n\n if (support.iterable) {\n Headers.prototype[Symbol.iterator] = Headers.prototype.entries;\n }\n\n function consumed(body) {\n if (body.bodyUsed) {\n return Promise.reject(new TypeError('Already read'))\n }\n body.bodyUsed = true;\n }\n\n function fileReaderReady(reader) {\n return new Promise(function(resolve, reject) {\n reader.onload = function() {\n resolve(reader.result);\n };\n reader.onerror = function() {\n reject(reader.error);\n };\n })\n }\n\n function readBlobAsArrayBuffer(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsArrayBuffer(blob);\n return promise\n }\n\n function readBlobAsText(blob) {\n var reader = new FileReader();\n var promise = fileReaderReady(reader);\n reader.readAsText(blob);\n return promise\n }\n\n function readArrayBufferAsText(buf) {\n var view = new Uint8Array(buf);\n var chars = new Array(view.length);\n\n for (var i = 0; i < view.length; i++) {\n chars[i] = String.fromCharCode(view[i]);\n }\n return chars.join('')\n }\n\n function bufferClone(buf) {\n if (buf.slice) {\n return buf.slice(0)\n } else {\n var view = new Uint8Array(buf.byteLength);\n view.set(new Uint8Array(buf));\n return view.buffer\n }\n }\n\n function Body() {\n this.bodyUsed = false;\n\n this._initBody = function(body) {\n this._bodyInit = body;\n if (!body) {\n this._bodyText = '';\n } else if (typeof body === 'string') {\n this._bodyText = body;\n } else if (support.blob && Blob.prototype.isPrototypeOf(body)) {\n this._bodyBlob = body;\n } else if (support.formData && FormData.prototype.isPrototypeOf(body)) {\n this._bodyFormData = body;\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this._bodyText = body.toString();\n } else if (support.arrayBuffer && support.blob && isDataView(body)) {\n this._bodyArrayBuffer = bufferClone(body.buffer);\n // IE 10-11 can't handle a DataView body.\n this._bodyInit = new Blob([this._bodyArrayBuffer]);\n } else if (support.arrayBuffer && (ArrayBuffer.prototype.isPrototypeOf(body) || isArrayBufferView(body))) {\n this._bodyArrayBuffer = bufferClone(body);\n } else {\n this._bodyText = body = Object.prototype.toString.call(body);\n }\n\n if (!this.headers.get('content-type')) {\n if (typeof body === 'string') {\n this.headers.set('content-type', 'text/plain;charset=UTF-8');\n } else if (this._bodyBlob && this._bodyBlob.type) {\n this.headers.set('content-type', this._bodyBlob.type);\n } else if (support.searchParams && URLSearchParams.prototype.isPrototypeOf(body)) {\n this.headers.set('content-type', 'application/x-www-form-urlencoded;charset=UTF-8');\n }\n }\n };\n\n if (support.blob) {\n this.blob = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return Promise.resolve(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(new Blob([this._bodyArrayBuffer]))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as blob')\n } else {\n return Promise.resolve(new Blob([this._bodyText]))\n }\n };\n\n this.arrayBuffer = function() {\n if (this._bodyArrayBuffer) {\n return consumed(this) || Promise.resolve(this._bodyArrayBuffer)\n } else {\n return this.blob().then(readBlobAsArrayBuffer)\n }\n };\n }\n\n this.text = function() {\n var rejected = consumed(this);\n if (rejected) {\n return rejected\n }\n\n if (this._bodyBlob) {\n return readBlobAsText(this._bodyBlob)\n } else if (this._bodyArrayBuffer) {\n return Promise.resolve(readArrayBufferAsText(this._bodyArrayBuffer))\n } else if (this._bodyFormData) {\n throw new Error('could not read FormData body as text')\n } else {\n return Promise.resolve(this._bodyText)\n }\n };\n\n if (support.formData) {\n this.formData = function() {\n return this.text().then(decode)\n };\n }\n\n this.json = function() {\n return this.text().then(JSON.parse)\n };\n\n return this\n }\n\n // HTTP methods whose capitalization should be normalized\n var methods = ['DELETE', 'GET', 'HEAD', 'OPTIONS', 'POST', 'PUT'];\n\n function normalizeMethod(method) {\n var upcased = method.toUpperCase();\n return methods.indexOf(upcased) > -1 ? upcased : method\n }\n\n function Request(input, options) {\n options = options || {};\n var body = options.body;\n\n if (input instanceof Request) {\n if (input.bodyUsed) {\n throw new TypeError('Already read')\n }\n this.url = input.url;\n this.credentials = input.credentials;\n if (!options.headers) {\n this.headers = new Headers(input.headers);\n }\n this.method = input.method;\n this.mode = input.mode;\n this.signal = input.signal;\n if (!body && input._bodyInit != null) {\n body = input._bodyInit;\n input.bodyUsed = true;\n }\n } else {\n this.url = String(input);\n }\n\n this.credentials = options.credentials || this.credentials || 'same-origin';\n if (options.headers || !this.headers) {\n this.headers = new Headers(options.headers);\n }\n this.method = normalizeMethod(options.method || this.method || 'GET');\n this.mode = options.mode || this.mode || null;\n this.signal = options.signal || this.signal;\n this.referrer = null;\n\n if ((this.method === 'GET' || this.method === 'HEAD') && body) {\n throw new TypeError('Body not allowed for GET or HEAD requests')\n }\n this._initBody(body);\n }\n\n Request.prototype.clone = function() {\n return new Request(this, {body: this._bodyInit})\n };\n\n function decode(body) {\n var form = new FormData();\n body\n .trim()\n .split('&')\n .forEach(function(bytes) {\n if (bytes) {\n var split = bytes.split('=');\n var name = split.shift().replace(/\\+/g, ' ');\n var value = split.join('=').replace(/\\+/g, ' ');\n form.append(decodeURIComponent(name), decodeURIComponent(value));\n }\n });\n return form\n }\n\n function parseHeaders(rawHeaders) {\n var headers = new Headers();\n // Replace instances of \\r\\n and \\n followed by at least one space or horizontal tab with a space\n // https://tools.ietf.org/html/rfc7230#section-3.2\n var preProcessedHeaders = rawHeaders.replace(/\\r?\\n[\\t ]+/g, ' ');\n preProcessedHeaders.split(/\\r?\\n/).forEach(function(line) {\n var parts = line.split(':');\n var key = parts.shift().trim();\n if (key) {\n var value = parts.join(':').trim();\n headers.append(key, value);\n }\n });\n return headers\n }\n\n Body.call(Request.prototype);\n\n function Response(bodyInit, options) {\n if (!options) {\n options = {};\n }\n\n this.type = 'default';\n this.status = options.status === undefined ? 200 : options.status;\n this.ok = this.status >= 200 && this.status < 300;\n this.statusText = 'statusText' in options ? options.statusText : 'OK';\n this.headers = new Headers(options.headers);\n this.url = options.url || '';\n this._initBody(bodyInit);\n }\n\n Body.call(Response.prototype);\n\n Response.prototype.clone = function() {\n return new Response(this._bodyInit, {\n status: this.status,\n statusText: this.statusText,\n headers: new Headers(this.headers),\n url: this.url\n })\n };\n\n Response.error = function() {\n var response = new Response(null, {status: 0, statusText: ''});\n response.type = 'error';\n return response\n };\n\n var redirectStatuses = [301, 302, 303, 307, 308];\n\n Response.redirect = function(url, status) {\n if (redirectStatuses.indexOf(status) === -1) {\n throw new RangeError('Invalid status code')\n }\n\n return new Response(null, {status: status, headers: {location: url}})\n };\n\n exports.DOMException = self.DOMException;\n try {\n new exports.DOMException();\n } catch (err) {\n exports.DOMException = function(message, name) {\n this.message = message;\n this.name = name;\n var error = Error(message);\n this.stack = error.stack;\n };\n exports.DOMException.prototype = Object.create(Error.prototype);\n exports.DOMException.prototype.constructor = exports.DOMException;\n }\n\n function fetch(input, init) {\n return new Promise(function(resolve, reject) {\n var request = new Request(input, init);\n\n if (request.signal && request.signal.aborted) {\n return reject(new exports.DOMException('Aborted', 'AbortError'))\n }\n\n var xhr = new XMLHttpRequest();\n\n function abortXhr() {\n xhr.abort();\n }\n\n xhr.onload = function() {\n var options = {\n status: xhr.status,\n statusText: xhr.statusText,\n headers: parseHeaders(xhr.getAllResponseHeaders() || '')\n };\n options.url = 'responseURL' in xhr ? xhr.responseURL : options.headers.get('X-Request-URL');\n var body = 'response' in xhr ? xhr.response : xhr.responseText;\n resolve(new Response(body, options));\n };\n\n xhr.onerror = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.ontimeout = function() {\n reject(new TypeError('Network request failed'));\n };\n\n xhr.onabort = function() {\n reject(new exports.DOMException('Aborted', 'AbortError'));\n };\n\n xhr.open(request.method, request.url, true);\n\n if (request.credentials === 'include') {\n xhr.withCredentials = true;\n } else if (request.credentials === 'omit') {\n xhr.withCredentials = false;\n }\n\n if ('responseType' in xhr && support.blob) {\n xhr.responseType = 'blob';\n }\n\n request.headers.forEach(function(value, name) {\n xhr.setRequestHeader(name, value);\n });\n\n if (request.signal) {\n request.signal.addEventListener('abort', abortXhr);\n\n xhr.onreadystatechange = function() {\n // DONE (success or failure)\n if (xhr.readyState === 4) {\n request.signal.removeEventListener('abort', abortXhr);\n }\n };\n }\n\n xhr.send(typeof request._bodyInit === 'undefined' ? null : request._bodyInit);\n })\n }\n\n fetch.polyfill = true;\n\n if (!self.fetch) {\n self.fetch = fetch;\n self.Headers = Headers;\n self.Request = Request;\n self.Response = Response;\n }\n\n exports.Headers = Headers;\n exports.Request = Request;\n exports.Response = Response;\n exports.fetch = fetch;\n\n Object.defineProperty(exports, '__esModule', { value: true });\n\n return exports;\n\n})({});\n})(__self__);\n__self__.fetch.ponyfill = true;\n// Remove \"polyfill\" property added by whatwg-fetch\ndelete __self__.fetch.polyfill;\n// Choose between native implementation (global) or custom implementation (__self__)\n// var ctx = global.fetch ? global : __self__;\nvar ctx = __self__; // this line disable service worker support temporarily\nexports = ctx.fetch // To enable: import fetch from 'cross-fetch'\nexports.default = ctx.fetch // For TypeScript consumers without esModuleInterop.\nexports.fetch = ctx.fetch // To enable: import {fetch} from 'cross-fetch'\nexports.Headers = ctx.Headers\nexports.Request = ctx.Request\nexports.Response = ctx.Response\nmodule.exports = exports\n","/* eslint-env browser */\n\n/**\n * This is the web browser implementation of `debug()`.\n */\n\nexports.formatArgs = formatArgs;\nexports.save = save;\nexports.load = load;\nexports.useColors = useColors;\nexports.storage = localstorage();\nexports.destroy = (() => {\n\tlet warned = false;\n\n\treturn () => {\n\t\tif (!warned) {\n\t\t\twarned = true;\n\t\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t\t}\n\t};\n})();\n\n/**\n * Colors.\n */\n\nexports.colors = [\n\t'#0000CC',\n\t'#0000FF',\n\t'#0033CC',\n\t'#0033FF',\n\t'#0066CC',\n\t'#0066FF',\n\t'#0099CC',\n\t'#0099FF',\n\t'#00CC00',\n\t'#00CC33',\n\t'#00CC66',\n\t'#00CC99',\n\t'#00CCCC',\n\t'#00CCFF',\n\t'#3300CC',\n\t'#3300FF',\n\t'#3333CC',\n\t'#3333FF',\n\t'#3366CC',\n\t'#3366FF',\n\t'#3399CC',\n\t'#3399FF',\n\t'#33CC00',\n\t'#33CC33',\n\t'#33CC66',\n\t'#33CC99',\n\t'#33CCCC',\n\t'#33CCFF',\n\t'#6600CC',\n\t'#6600FF',\n\t'#6633CC',\n\t'#6633FF',\n\t'#66CC00',\n\t'#66CC33',\n\t'#9900CC',\n\t'#9900FF',\n\t'#9933CC',\n\t'#9933FF',\n\t'#99CC00',\n\t'#99CC33',\n\t'#CC0000',\n\t'#CC0033',\n\t'#CC0066',\n\t'#CC0099',\n\t'#CC00CC',\n\t'#CC00FF',\n\t'#CC3300',\n\t'#CC3333',\n\t'#CC3366',\n\t'#CC3399',\n\t'#CC33CC',\n\t'#CC33FF',\n\t'#CC6600',\n\t'#CC6633',\n\t'#CC9900',\n\t'#CC9933',\n\t'#CCCC00',\n\t'#CCCC33',\n\t'#FF0000',\n\t'#FF0033',\n\t'#FF0066',\n\t'#FF0099',\n\t'#FF00CC',\n\t'#FF00FF',\n\t'#FF3300',\n\t'#FF3333',\n\t'#FF3366',\n\t'#FF3399',\n\t'#FF33CC',\n\t'#FF33FF',\n\t'#FF6600',\n\t'#FF6633',\n\t'#FF9900',\n\t'#FF9933',\n\t'#FFCC00',\n\t'#FFCC33'\n];\n\n/**\n * Currently only WebKit-based Web Inspectors, Firefox >= v31,\n * and the Firebug extension (any Firefox version) are known\n * to support \"%c\" CSS customizations.\n *\n * TODO: add a `localStorage` variable to explicitly enable/disable colors\n */\n\n// eslint-disable-next-line complexity\nfunction useColors() {\n\t// NB: In an Electron preload script, document will be defined but not fully\n\t// initialized. Since we know we're in Chrome, we'll just detect this case\n\t// explicitly\n\tif (typeof window !== 'undefined' && window.process && (window.process.type === 'renderer' || window.process.__nwjs)) {\n\t\treturn true;\n\t}\n\n\t// Internet Explorer and Edge do not support colors.\n\tif (typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/(edge|trident)\\/(\\d+)/)) {\n\t\treturn false;\n\t}\n\n\t// Is webkit? http://stackoverflow.com/a/16459606/376773\n\t// document is undefined in react-native: https://github.com/facebook/react-native/pull/1632\n\treturn (typeof document !== 'undefined' && document.documentElement && document.documentElement.style && document.documentElement.style.WebkitAppearance) ||\n\t\t// Is firebug? http://stackoverflow.com/a/398120/376773\n\t\t(typeof window !== 'undefined' && window.console && (window.console.firebug || (window.console.exception && window.console.table))) ||\n\t\t// Is firefox >= v31?\n\t\t// https://developer.mozilla.org/en-US/docs/Tools/Web_Console#Styling_messages\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/firefox\\/(\\d+)/) && parseInt(RegExp.$1, 10) >= 31) ||\n\t\t// Double check webkit in userAgent just in case we are in a worker\n\t\t(typeof navigator !== 'undefined' && navigator.userAgent && navigator.userAgent.toLowerCase().match(/applewebkit\\/(\\d+)/));\n}\n\n/**\n * Colorize log arguments if enabled.\n *\n * @api public\n */\n\nfunction formatArgs(args) {\n\targs[0] = (this.useColors ? '%c' : '') +\n\t\tthis.namespace +\n\t\t(this.useColors ? ' %c' : ' ') +\n\t\targs[0] +\n\t\t(this.useColors ? '%c ' : ' ') +\n\t\t'+' + module.exports.humanize(this.diff);\n\n\tif (!this.useColors) {\n\t\treturn;\n\t}\n\n\tconst c = 'color: ' + this.color;\n\targs.splice(1, 0, c, 'color: inherit');\n\n\t// The final \"%c\" is somewhat tricky, because there could be other\n\t// arguments passed either before or after the %c, so we need to\n\t// figure out the correct index to insert the CSS into\n\tlet index = 0;\n\tlet lastC = 0;\n\targs[0].replace(/%[a-zA-Z%]/g, match => {\n\t\tif (match === '%%') {\n\t\t\treturn;\n\t\t}\n\t\tindex++;\n\t\tif (match === '%c') {\n\t\t\t// We only are interested in the *last* %c\n\t\t\t// (the user may have provided their own)\n\t\t\tlastC = index;\n\t\t}\n\t});\n\n\targs.splice(lastC, 0, c);\n}\n\n/**\n * Invokes `console.debug()` when available.\n * No-op when `console.debug` is not a \"function\".\n * If `console.debug` is not available, falls back\n * to `console.log`.\n *\n * @api public\n */\nexports.log = console.debug || console.log || (() => {});\n\n/**\n * Save `namespaces`.\n *\n * @param {String} namespaces\n * @api private\n */\nfunction save(namespaces) {\n\ttry {\n\t\tif (namespaces) {\n\t\t\texports.storage.setItem('debug', namespaces);\n\t\t} else {\n\t\t\texports.storage.removeItem('debug');\n\t\t}\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\n/**\n * Load `namespaces`.\n *\n * @return {String} returns the previously persisted debug modes\n * @api private\n */\nfunction load() {\n\tlet r;\n\ttry {\n\t\tr = exports.storage.getItem('debug');\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n\n\t// If debug isn't set in LS, and we're in Electron, try to load $DEBUG\n\tif (!r && typeof process !== 'undefined' && 'env' in process) {\n\t\tr = process.env.DEBUG;\n\t}\n\n\treturn r;\n}\n\n/**\n * Localstorage attempts to return the localstorage.\n *\n * This is necessary because safari throws\n * when a user disables cookies/localstorage\n * and you attempt to access it.\n *\n * @return {LocalStorage}\n * @api private\n */\n\nfunction localstorage() {\n\ttry {\n\t\t// TVMLKit (Apple TV JS Runtime) does not have a window object, just localStorage in the global context\n\t\t// The Browser also has localStorage in the global context.\n\t\treturn localStorage;\n\t} catch (error) {\n\t\t// Swallow\n\t\t// XXX (@Qix-) should we be logging these?\n\t}\n}\n\nmodule.exports = require('./common')(exports);\n\nconst {formatters} = module.exports;\n\n/**\n * Map %j to `JSON.stringify()`, since no Web Inspectors do that by default.\n */\n\nformatters.j = function (v) {\n\ttry {\n\t\treturn JSON.stringify(v);\n\t} catch (error) {\n\t\treturn '[UnexpectedJSONParseError]: ' + error.message;\n\t}\n};\n","\n/**\n * This is the common logic for both the Node.js and web browser\n * implementations of `debug()`.\n */\n\nfunction setup(env) {\n\tcreateDebug.debug = createDebug;\n\tcreateDebug.default = createDebug;\n\tcreateDebug.coerce = coerce;\n\tcreateDebug.disable = disable;\n\tcreateDebug.enable = enable;\n\tcreateDebug.enabled = enabled;\n\tcreateDebug.humanize = require('ms');\n\tcreateDebug.destroy = destroy;\n\n\tObject.keys(env).forEach(key => {\n\t\tcreateDebug[key] = env[key];\n\t});\n\n\t/**\n\t* The currently active debug mode names, and names to skip.\n\t*/\n\n\tcreateDebug.names = [];\n\tcreateDebug.skips = [];\n\n\t/**\n\t* Map of special \"%n\" handling functions, for the debug \"format\" argument.\n\t*\n\t* Valid key names are a single, lower or upper-case letter, i.e. \"n\" and \"N\".\n\t*/\n\tcreateDebug.formatters = {};\n\n\t/**\n\t* Selects a color for a debug namespace\n\t* @param {String} namespace The namespace string for the debug instance to be colored\n\t* @return {Number|String} An ANSI color code for the given namespace\n\t* @api private\n\t*/\n\tfunction selectColor(namespace) {\n\t\tlet hash = 0;\n\n\t\tfor (let i = 0; i < namespace.length; i++) {\n\t\t\thash = ((hash << 5) - hash) + namespace.charCodeAt(i);\n\t\t\thash |= 0; // Convert to 32bit integer\n\t\t}\n\n\t\treturn createDebug.colors[Math.abs(hash) % createDebug.colors.length];\n\t}\n\tcreateDebug.selectColor = selectColor;\n\n\t/**\n\t* Create a debugger with the given `namespace`.\n\t*\n\t* @param {String} namespace\n\t* @return {Function}\n\t* @api public\n\t*/\n\tfunction createDebug(namespace) {\n\t\tlet prevTime;\n\t\tlet enableOverride = null;\n\t\tlet namespacesCache;\n\t\tlet enabledCache;\n\n\t\tfunction debug(...args) {\n\t\t\t// Disabled?\n\t\t\tif (!debug.enabled) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst self = debug;\n\n\t\t\t// Set `diff` timestamp\n\t\t\tconst curr = Number(new Date());\n\t\t\tconst ms = curr - (prevTime || curr);\n\t\t\tself.diff = ms;\n\t\t\tself.prev = prevTime;\n\t\t\tself.curr = curr;\n\t\t\tprevTime = curr;\n\n\t\t\targs[0] = createDebug.coerce(args[0]);\n\n\t\t\tif (typeof args[0] !== 'string') {\n\t\t\t\t// Anything else let's inspect with %O\n\t\t\t\targs.unshift('%O');\n\t\t\t}\n\n\t\t\t// Apply any `formatters` transformations\n\t\t\tlet index = 0;\n\t\t\targs[0] = args[0].replace(/%([a-zA-Z%])/g, (match, format) => {\n\t\t\t\t// If we encounter an escaped % then don't increase the array index\n\t\t\t\tif (match === '%%') {\n\t\t\t\t\treturn '%';\n\t\t\t\t}\n\t\t\t\tindex++;\n\t\t\t\tconst formatter = createDebug.formatters[format];\n\t\t\t\tif (typeof formatter === 'function') {\n\t\t\t\t\tconst val = args[index];\n\t\t\t\t\tmatch = formatter.call(self, val);\n\n\t\t\t\t\t// Now we need to remove `args[index]` since it's inlined in the `format`\n\t\t\t\t\targs.splice(index, 1);\n\t\t\t\t\tindex--;\n\t\t\t\t}\n\t\t\t\treturn match;\n\t\t\t});\n\n\t\t\t// Apply env-specific formatting (colors, etc.)\n\t\t\tcreateDebug.formatArgs.call(self, args);\n\n\t\t\tconst logFn = self.log || createDebug.log;\n\t\t\tlogFn.apply(self, args);\n\t\t}\n\n\t\tdebug.namespace = namespace;\n\t\tdebug.useColors = createDebug.useColors();\n\t\tdebug.color = createDebug.selectColor(namespace);\n\t\tdebug.extend = extend;\n\t\tdebug.destroy = createDebug.destroy; // XXX Temporary. Will be removed in the next major release.\n\n\t\tObject.defineProperty(debug, 'enabled', {\n\t\t\tenumerable: true,\n\t\t\tconfigurable: false,\n\t\t\tget: () => {\n\t\t\t\tif (enableOverride !== null) {\n\t\t\t\t\treturn enableOverride;\n\t\t\t\t}\n\t\t\t\tif (namespacesCache !== createDebug.namespaces) {\n\t\t\t\t\tnamespacesCache = createDebug.namespaces;\n\t\t\t\t\tenabledCache = createDebug.enabled(namespace);\n\t\t\t\t}\n\n\t\t\t\treturn enabledCache;\n\t\t\t},\n\t\t\tset: v => {\n\t\t\t\tenableOverride = v;\n\t\t\t}\n\t\t});\n\n\t\t// Env-specific initialization logic for debug instances\n\t\tif (typeof createDebug.init === 'function') {\n\t\t\tcreateDebug.init(debug);\n\t\t}\n\n\t\treturn debug;\n\t}\n\n\tfunction extend(namespace, delimiter) {\n\t\tconst newDebug = createDebug(this.namespace + (typeof delimiter === 'undefined' ? ':' : delimiter) + namespace);\n\t\tnewDebug.log = this.log;\n\t\treturn newDebug;\n\t}\n\n\t/**\n\t* Enables a debug mode by namespaces. This can include modes\n\t* separated by a colon and wildcards.\n\t*\n\t* @param {String} namespaces\n\t* @api public\n\t*/\n\tfunction enable(namespaces) {\n\t\tcreateDebug.save(namespaces);\n\t\tcreateDebug.namespaces = namespaces;\n\n\t\tcreateDebug.names = [];\n\t\tcreateDebug.skips = [];\n\n\t\tlet i;\n\t\tconst split = (typeof namespaces === 'string' ? namespaces : '').split(/[\\s,]+/);\n\t\tconst len = split.length;\n\n\t\tfor (i = 0; i < len; i++) {\n\t\t\tif (!split[i]) {\n\t\t\t\t// ignore empty strings\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tnamespaces = split[i].replace(/\\*/g, '.*?');\n\n\t\t\tif (namespaces[0] === '-') {\n\t\t\t\tcreateDebug.skips.push(new RegExp('^' + namespaces.slice(1) + '$'));\n\t\t\t} else {\n\t\t\t\tcreateDebug.names.push(new RegExp('^' + namespaces + '$'));\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t* Disable debug output.\n\t*\n\t* @return {String} namespaces\n\t* @api public\n\t*/\n\tfunction disable() {\n\t\tconst namespaces = [\n\t\t\t...createDebug.names.map(toNamespace),\n\t\t\t...createDebug.skips.map(toNamespace).map(namespace => '-' + namespace)\n\t\t].join(',');\n\t\tcreateDebug.enable('');\n\t\treturn namespaces;\n\t}\n\n\t/**\n\t* Returns true if the given mode name is enabled, false otherwise.\n\t*\n\t* @param {String} name\n\t* @return {Boolean}\n\t* @api public\n\t*/\n\tfunction enabled(name) {\n\t\tif (name[name.length - 1] === '*') {\n\t\t\treturn true;\n\t\t}\n\n\t\tlet i;\n\t\tlet len;\n\n\t\tfor (i = 0, len = createDebug.skips.length; i < len; i++) {\n\t\t\tif (createDebug.skips[i].test(name)) {\n\t\t\t\treturn false;\n\t\t\t}\n\t\t}\n\n\t\tfor (i = 0, len = createDebug.names.length; i < len; i++) {\n\t\t\tif (createDebug.names[i].test(name)) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\n\t\treturn false;\n\t}\n\n\t/**\n\t* Convert regexp to namespace\n\t*\n\t* @param {RegExp} regxep\n\t* @return {String} namespace\n\t* @api private\n\t*/\n\tfunction toNamespace(regexp) {\n\t\treturn regexp.toString()\n\t\t\t.substring(2, regexp.toString().length - 2)\n\t\t\t.replace(/\\.\\*\\?$/, '*');\n\t}\n\n\t/**\n\t* Coerce `val`.\n\t*\n\t* @param {Mixed} val\n\t* @return {Mixed}\n\t* @api private\n\t*/\n\tfunction coerce(val) {\n\t\tif (val instanceof Error) {\n\t\t\treturn val.stack || val.message;\n\t\t}\n\t\treturn val;\n\t}\n\n\t/**\n\t* XXX DO NOT USE. This is a temporary stub function.\n\t* XXX It WILL be removed in the next major release.\n\t*/\n\tfunction destroy() {\n\t\tconsole.warn('Instance method `debug.destroy()` is deprecated and no longer does anything. It will be removed in the next major version of `debug`.');\n\t}\n\n\tcreateDebug.enable(createDebug.load());\n\n\treturn createDebug;\n}\n\nmodule.exports = setup;\n","/*! decimal.js-light v2.5.1 https://github.com/MikeMcl/decimal.js-light/LICENCE */\r\n;(function (globalScope) {\r\n 'use strict';\r\n\r\n\r\n /*\r\n * decimal.js-light v2.5.1\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js-light\r\n * Copyright (c) 2020 Michael Mclaughlin \r\n * MIT Expat Licence\r\n */\r\n\r\n\r\n // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n var MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n Decimal = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed during run-time using `Decimal.config`.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used by default by `toInteger`, `toDecimalPlaces`, `toExponential`,\r\n // `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -MAX_E\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to MAX_E\r\n\r\n // The natural logarithm of 10.\r\n // 115 digits\r\n LN10: '2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286'\r\n },\r\n\r\n\r\n // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n exponentOutOfRange = decimalError + 'Exponent out of range: ',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n ONE,\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n MAX_E = mathfloor(MAX_SAFE_INTEGER / LOG_BASE), // 1286742750677284\r\n\r\n // Decimal.prototype object\r\n P = {};\r\n\r\n\r\n // Decimal prototype methods\r\n\r\n\r\n /*\r\n * absoluteValue abs\r\n * comparedTo cmp\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy idiv\r\n * equals eq\r\n * exponent\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * isInteger isint\r\n * isNegative isneg\r\n * isPositive ispos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * squareRoot sqrt\r\n * times mul\r\n * toDecimalPlaces todp\r\n * toExponential\r\n * toFixed\r\n * toInteger toint\r\n * toNumber\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits tosd\r\n * toString\r\n * valueOf val\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s) x.s = 1;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value\r\n *\r\n */\r\n P.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this;\r\n\r\n y = new x.constructor(y);\r\n\r\n // Signs differ?\r\n if (x.s !== y.s) return x.s || -y.s;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ x.s < 0 ? 1 : -1;\r\n\r\n xdL = x.d.length;\r\n ydL = y.d.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (x.d[i] !== y.d[i]) return x.d[i] > y.d[i] ^ x.s < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ x.s < 0 ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\n P.decimalPlaces = P.dp = function () {\r\n var x = this,\r\n w = x.d.length - 1,\r\n dp = (w - x.e) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = x.d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) dp--;\r\n\r\n return dp < 0 ? 0 : dp;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, truncated to `precision` significant digits.\r\n *\r\n */\r\n P.dividedToIntegerBy = P.idiv = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(divide(x, new Ctor(y), 0, 1), Ctor.precision);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\n P.equals = P.eq = function (y) {\r\n return !this.cmp(y);\r\n };\r\n\r\n\r\n /*\r\n * Return the (base 10) exponent value of this Decimal (this.e is the base 10000000 exponent).\r\n *\r\n */\r\n P.exponent = function () {\r\n return getBase10Exponent(this);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\n P.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\n P.greaterThanOrEqualTo = P.gte = function (y) {\r\n return this.cmp(y) >= 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\n P.isInteger = P.isint = function () {\r\n return this.e > this.d.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\n P.isNegative = P.isneg = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\n P.isPositive = P.ispos = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is 0, otherwise return false.\r\n *\r\n */\r\n P.isZero = function () {\r\n return this.s === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return the logarithm of the value of this Decimal to the specified base, truncated to\r\n * `precision` significant digits.\r\n *\r\n * If no base is specified, return log[10](x).\r\n *\r\n * log[base](x) = ln(x) / ln(base)\r\n *\r\n * The maximum error of the result is 1 ulp (unit in the last place).\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n P.logarithm = P.log = function (base) {\r\n var r,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n wpr = pr + 5;\r\n\r\n // Default base is 10.\r\n if (base === void 0) {\r\n base = new Ctor(10);\r\n } else {\r\n base = new Ctor(base);\r\n\r\n // log[-b](x) = NaN\r\n // log[0](x) = NaN\r\n // log[1](x) = NaN\r\n if (base.s < 1 || base.eq(ONE)) throw Error(decimalError + 'NaN');\r\n }\r\n\r\n // log[b](-x) = NaN\r\n // log[b](0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // log[b](1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n external = false;\r\n r = divide(ln(x, wpr), ln(base, wpr), wpr);\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.minus = P.sub = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? subtract(x, y) : add(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n y = new Ctor(y);\r\n\r\n // x % 0 = NaN\r\n if (!y.s) throw Error(decimalError + 'NaN');\r\n\r\n // Return x if x is 0.\r\n if (!x.s) return round(new Ctor(x), pr);\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n q = divide(x, y, 0, 1).times(y);\r\n external = true;\r\n\r\n return x.minus(q);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.naturalExponential = P.exp = function () {\r\n return exp(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * truncated to `precision` significant digits.\r\n *\r\n */\r\n P.naturalLogarithm = P.ln = function () {\r\n return ln(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\n P.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s || 0;\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.plus = P.add = function (y) {\r\n var x = this;\r\n y = new x.constructor(y);\r\n return x.s == y.s ? add(x, y) : subtract(x, (y.s = -y.s, y));\r\n };\r\n\r\n\r\n /*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\n P.precision = P.sd = function (z) {\r\n var e, sd, w,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n e = getBase10Exponent(x) + 1;\r\n w = x.d.length - 1;\r\n sd = w * LOG_BASE + 1;\r\n w = x.d[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) sd--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = x.d[0]; w >= 10; w /= 10) sd++;\r\n }\r\n\r\n return z && e > sd ? e : sd;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of this Decimal, truncated to `precision`\r\n * significant digits.\r\n *\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var e, n, pr, r, s, t, wpr,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n // Negative or zero?\r\n if (x.s < 1) {\r\n if (!x.s) return new Ctor(0);\r\n\r\n // sqrt(-x) = NaN\r\n throw Error(decimalError + 'NaN');\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(x.d);\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n pr = Ctor.precision;\r\n s = wpr = pr + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, wpr + 2)).times(0.5);\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === (n = digitsToString(r.d)).slice(0, wpr)) {\r\n n = n.slice(wpr - 3, wpr + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (s == wpr && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n round(t, pr + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n } else if (n != '9999') {\r\n break;\r\n }\r\n\r\n wpr += 4;\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return round(r, pr);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal times `y`, truncated to\r\n * `precision` significant digits.\r\n *\r\n */\r\n P.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n // Return 0 if either is 0.\r\n if (!x.s || !y.s) return new Ctor(0);\r\n\r\n y.s *= x.s;\r\n e = x.e + y.e;\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = e;\r\n\r\n return external ? round(y, Ctor.precision) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toDecimalPlaces = P.todp = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return round(x, dp + getBase10Exponent(x) + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = toString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), dp + 1, rm);\r\n str = toString(x, true, dp + 1);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\n P.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) return toString(x);\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = round(new Ctor(x), dp + getBase10Exponent(x) + 1, rm);\r\n str = toString(y.abs(), false, dp + getBase10Exponent(y) + 1);\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isneg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\n P.toInteger = P.toint = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return round(new Ctor(x), getBase10Exponent(x) + 1, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this Decimal converted to a number primitive.\r\n *\r\n */\r\n P.toNumber = function () {\r\n return +this;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`,\r\n * truncated to `precision` significant digits.\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * The maximum error is 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\n P.toPower = P.pow = function (y) {\r\n var e, k, pr, r, sign, yIsInt,\r\n x = this,\r\n Ctor = x.constructor,\r\n guard = 12,\r\n yn = +(y = new Ctor(y));\r\n\r\n // pow(x, 0) = 1\r\n if (!y.s) return new Ctor(ONE);\r\n\r\n x = new Ctor(x);\r\n\r\n // pow(0, y > 0) = 0\r\n // pow(0, y < 0) = Infinity\r\n if (!x.s) {\r\n if (y.s < 1) throw Error(decimalError + 'Infinity');\r\n return x;\r\n }\r\n\r\n // pow(1, y) = 1\r\n if (x.eq(ONE)) return x;\r\n\r\n pr = Ctor.precision;\r\n\r\n // pow(x, 1) = x\r\n if (y.eq(ONE)) return round(x, pr);\r\n\r\n e = y.e;\r\n k = y.d.length - 1;\r\n yIsInt = e >= k;\r\n sign = x.s;\r\n\r\n if (!yIsInt) {\r\n\r\n // pow(x < 0, y non-integer) = NaN\r\n if (sign < 0) throw Error(decimalError + 'NaN');\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n } else if ((k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = new Ctor(ONE);\r\n\r\n // Max k of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n e = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (k % 2) {\r\n r = r.times(x);\r\n truncate(r.d, e);\r\n }\r\n\r\n k = mathfloor(k / 2);\r\n if (k === 0) break;\r\n\r\n x = x.times(x);\r\n truncate(x.d, e);\r\n }\r\n\r\n external = true;\r\n\r\n return y.s < 0 ? new Ctor(ONE).div(r) : round(r, pr);\r\n }\r\n\r\n // Result is negative if x is negative and the last digit of integer y is odd.\r\n sign = sign < 0 && y.d[Math.max(e, k)] & 1 ? -1 : 1;\r\n\r\n x.s = 1;\r\n external = false;\r\n r = y.times(ln(x, pr + guard));\r\n external = true;\r\n r = exp(r);\r\n r.s = sign;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n var e, str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n e = getBase10Exponent(x);\r\n str = toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = round(new Ctor(x), sd, rm);\r\n e = getBase10Exponent(x);\r\n str = toString(x, sd <= e || e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toSignificantDigits = P.tosd = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return round(new Ctor(x), sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\n P.toString = P.valueOf = P.val = P.toJSON = function () {\r\n var x = this,\r\n e = getBase10Exponent(x),\r\n Ctor = x.constructor;\r\n\r\n return toString(x, e <= Ctor.toExpNeg || e >= Ctor.toExpPos);\r\n };\r\n\r\n\r\n // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n /*\r\n * add P.minus, P.plus\r\n * checkInt32 P.todp, P.toExponential, P.toFixed, P.toPrecision, P.tosd\r\n * digitsToString P.log, P.sqrt, P.pow, toString, exp, ln\r\n * divide P.div, P.idiv, P.log, P.mod, P.sqrt, exp, ln\r\n * exp P.exp, P.pow\r\n * getBase10Exponent P.exponent, P.sd, P.toint, P.sqrt, P.todp, P.toFixed, P.toPrecision,\r\n * P.toString, divide, round, toString, exp, ln\r\n * getLn10 P.log, ln\r\n * getZeroString digitsToString, toString\r\n * ln P.log, P.ln, P.pow, exp\r\n * parseDecimal Decimal\r\n * round P.abs, P.idiv, P.log, P.minus, P.mod, P.neg, P.plus, P.toint, P.sqrt,\r\n * P.times, P.todp, P.toExponential, P.toFixed, P.pow, P.toPrecision, P.tosd,\r\n * divide, getLn10, exp, ln\r\n * subtract P.minus, P.plus\r\n * toString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf\r\n * truncate P.pow\r\n *\r\n * Throws: P.log, P.mod, P.sd, P.sqrt, P.pow, checkInt32, divide, round,\r\n * getLn10, exp, ln, parseDecimal, Decimal, config\r\n */\r\n\r\n\r\n function add(x, y) {\r\n var carry, d, e, i, k, len, xd, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // If either is zero...\r\n if (!x.s || !y.s) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!y.s) y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n k = x.e;\r\n e = y.e;\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n }\r\n\r\n\r\n function digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n }\r\n\r\n\r\n var divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % BASE | 0;\r\n carry = temp / BASE | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * BASE + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, dp) {\r\n var cmp, e, i, k, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0, yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either 0?\r\n if (!x.s) return new Ctor(x);\r\n if (!y.s) throw Error(decimalError + 'Division by zero');\r\n\r\n e = x.e - y.e;\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n for (i = 0; yd[i] == (xd[i] || 0); ) ++i;\r\n if (yd[i] > (xd[i] || 0)) --e;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n } else if (dp) {\r\n sd = pr + (getBase10Exponent(x) - getBase10Exponent(y)) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) return new Ctor(0);\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / LOG_BASE + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * BASE + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= BASE/2\r\n k = BASE / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k);\r\n xd = multiplyInteger(xd, k);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= BASE / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * BASE + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= BASE) k = BASE - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n\r\n q.e = e;\r\n\r\n return round(q, dp ? pr + getBase10Exponent(q) + 1 : pr);\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x` truncated to `sd`\r\n * significant digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n */\r\n function exp(x, sd) {\r\n var denominator, guard, pow, sum, t, wpr,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n if (getBase10Exponent(x) > 16) throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n\r\n // exp(0) = 1\r\n if (!x.s) return new Ctor(ONE);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n while (x.abs().gte(0.1)) {\r\n x = x.times(t); // x = x / 2^5\r\n k += 5;\r\n }\r\n\r\n // Estimate the precision increase necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(ONE);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = round(pow.times(x), wpr);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n while (k--) sum = round(sum.times(sum), wpr);\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n }\r\n }\r\n\r\n\r\n // Calculate the base 10 exponent from the base 1e7 exponent.\r\n function getBase10Exponent(x) {\r\n var e = x.e * LOG_BASE,\r\n w = x.d[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for (; w >= 10; w /= 10) e++;\r\n return e;\r\n }\r\n\r\n\r\n function getLn10(Ctor, sd, pr) {\r\n\r\n if (sd > Ctor.LN10.sd()) {\r\n\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(decimalError + 'LN10 precision limit exceeded');\r\n }\r\n\r\n return round(new Ctor(Ctor.LN10), sd);\r\n }\r\n\r\n\r\n function getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x` truncated to `sd` significant\r\n * digits.\r\n *\r\n * ln(n) is non-terminating (n != 1)\r\n *\r\n */\r\n function ln(y, sd) {\r\n var c, c0, denominator, e, numerator, sum, t, wpr, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // ln(-x) = NaN\r\n // ln(0) = -Infinity\r\n if (x.s < 1) throw Error(decimalError + (x.s ? 'NaN' : '-Infinity'));\r\n\r\n // ln(1) = 0\r\n if (x.eq(ONE)) return new Ctor(0);\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n if (x.eq(10)) {\r\n if (sd == null) external = true;\r\n return getLn10(Ctor, wpr);\r\n }\r\n\r\n wpr += guard;\r\n Ctor.precision = wpr;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n e = getBase10Exponent(x);\r\n\r\n if (Math.abs(e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = getBase10Exponent(x);\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = ln(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(x, pr)) : x;\r\n }\r\n\r\n // x is reduced to a value near 1.\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(ONE), x.plus(ONE), wpr);\r\n x2 = round(x.times(x), wpr);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = round(numerator.times(x2), wpr);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr);\r\n\r\n Ctor.precision = pr;\r\n return sd == null ? (external = true, round(sum, pr)) : sum;\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\n function parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48;) ++i;\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48;) --len;\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n e = e - i - 1;\r\n x.e = mathfloor(e / LOG_BASE);\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) throw Error(exponentOutOfRange + e);\r\n } else {\r\n\r\n // Zero.\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Round `x` to `sd` significant digits, using rounding mode `rm` if present (truncate otherwise).\r\n */\r\n function round(x, sd, rm) {\r\n var i, j, k, n, rd, doRound, w, xdi,\r\n xd = x.d;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd which contains the rounding digit, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // n: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (n = 1, k = xd[0]; k >= 10; k /= 10) n++;\r\n i = sd - n;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) return x;\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (n = 1; k >= 10; k /= 10) n++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - n.\r\n j = i - LOG_BASE + n;\r\n }\r\n\r\n if (rm !== void 0) {\r\n k = mathpow(10, n - j - 1);\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / k % 10 | 0;\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n doRound = sd < 0 || xd[xdi + 1] !== void 0 || w % k;\r\n\r\n // The expression `w % mathpow(10, n - j - 1)` returns all the digits of w to the right of the\r\n // digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression will give\r\n // 714.\r\n\r\n doRound = rm < 4\r\n ? (rd || doRound) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || doRound || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, n - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n }\r\n\r\n if (sd < 1 || !xd[0]) {\r\n if (doRound) {\r\n k = getBase10Exponent(x);\r\n xd.length = 1;\r\n\r\n // Convert sd to decimal places.\r\n sd = sd - k - 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = mathfloor(-sd / LOG_BASE) || 0;\r\n } else {\r\n xd.length = 1;\r\n\r\n // Zero.\r\n xd[0] = x.e = x.s = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, n - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (doRound) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n if ((xd[0] += k) == BASE) {\r\n xd[0] = 1;\r\n ++x.e;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n\r\n if (external && (x.e > MAX_E || x.e < -MAX_E)) {\r\n throw Error(exponentOutOfRange + getBase10Exponent(x));\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function subtract(x, y) {\r\n var d, e, i, j, k, len, xd, xe, xLTy, yd,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision;\r\n\r\n // Return y negated if x is zero.\r\n // Return x if y is zero and x is non-zero.\r\n if (!x.s || !y.s) {\r\n if (y.s) y.s = -y.s;\r\n else y = new Ctor(x);\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n\r\n // x and y are non-zero numbers with the same sign.\r\n\r\n e = y.e;\r\n xe = x.e;\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of zeros\r\n // needing to be prepended, but this can be avoided while still ensuring correct rounding by\r\n // limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to xd if shorter.\r\n // Don't add zeros to yd if shorter as subtraction only needs to start at yd length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(0);\r\n\r\n y.d = xd;\r\n y.e = e;\r\n\r\n //return external && xd.length >= pr / LOG_BASE ? round(y, pr) : y;\r\n return external ? round(y, pr) : y;\r\n }\r\n\r\n\r\n function toString(x, isExp, sd) {\r\n var k,\r\n e = getBase10Exponent(x),\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (e < 0 ? 'e' : 'e+') + e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Does not strip trailing zeros.\r\n function truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n }\r\n\r\n\r\n // Decimal methods\r\n\r\n\r\n /*\r\n * clone\r\n * config/set\r\n */\r\n\r\n\r\n /*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\n function clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * value {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(value) {\r\n var x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(value);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (value instanceof Decimal) {\r\n x.s = value.s;\r\n x.e = value.e;\r\n x.d = (value = value.d) ? value.slice() : value;\r\n return;\r\n }\r\n\r\n if (typeof value === 'number') {\r\n\r\n // Reject Infinity/NaN.\r\n if (value * 0 !== 0) {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n if (value > 0) {\r\n x.s = 1;\r\n } else if (value < 0) {\r\n value = -value;\r\n x.s = -1;\r\n } else {\r\n x.s = 0;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (value === ~~value && value < 1e7) {\r\n x.e = 0;\r\n x.d = [value];\r\n return;\r\n }\r\n\r\n return parseDecimal(x, value.toString());\r\n } else if (typeof value !== 'string') {\r\n throw Error(invalidArgument + value);\r\n }\r\n\r\n // Minus sign?\r\n if (value.charCodeAt(0) === 45) {\r\n value = value.slice(1);\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n if (isDecimal.test(value)) parseDecimal(x, value);\r\n else throw Error(invalidArgument + value);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n\r\n Decimal.clone = clone;\r\n Decimal.config = Decimal.set = config;\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'LN10'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n }\r\n\r\n\r\n /*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\n function config(obj) {\r\n if (!obj || typeof obj !== 'object') {\r\n throw Error(decimalError + 'Object expected');\r\n }\r\n var i, p, v,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -1 / 0, 0,\r\n 'toExpPos', 0, 1 / 0\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if ((v = obj[p = ps[i]]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if ((v = obj[p = 'LN10']) !== void 0) {\r\n if (v == Math.LN10) this[p] = new this(v);\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n\r\n return this;\r\n }\r\n\r\n\r\n // Create and configure initial Decimal constructor.\r\n Decimal = clone(Decimal);\r\n\r\n Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n // Internal constant.\r\n ONE = new Decimal(1);\r\n\r\n\r\n // Export.\r\n\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () {\r\n return Decimal;\r\n });\r\n\r\n // Node and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n module.exports = Decimal;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalScope) {\r\n globalScope = typeof self != 'undefined' && self && self.self == self\r\n ? self : Function('return this')();\r\n }\r\n\r\n globalScope.Decimal = Decimal;\r\n }\r\n})(this);\r\n",";(function (globalScope) {\r\n 'use strict';\r\n\r\n\r\n /*!\r\n * decimal.js v10.4.3\r\n * An arbitrary-precision Decimal type for JavaScript.\r\n * https://github.com/MikeMcl/decimal.js\r\n * Copyright (c) 2022 Michael Mclaughlin \r\n * MIT Licence\r\n */\r\n\r\n\r\n // ----------------------------------- EDITABLE DEFAULTS ------------------------------------ //\r\n\r\n\r\n // The maximum exponent magnitude.\r\n // The limit on the value of `toExpNeg`, `toExpPos`, `minE` and `maxE`.\r\n var EXP_LIMIT = 9e15, // 0 to 9e15\r\n\r\n // The limit on the value of `precision`, and on the value of the first argument to\r\n // `toDecimalPlaces`, `toExponential`, `toFixed`, `toPrecision` and `toSignificantDigits`.\r\n MAX_DIGITS = 1e9, // 0 to 1e9\r\n\r\n // Base conversion alphabet.\r\n NUMERALS = '0123456789abcdef',\r\n\r\n // The natural logarithm of 10 (1025 digits).\r\n LN10 = '2.3025850929940456840179914546843642076011014886287729760333279009675726096773524802359972050895982983419677840422862486334095254650828067566662873690987816894829072083255546808437998948262331985283935053089653777326288461633662222876982198867465436674744042432743651550489343149393914796194044002221051017141748003688084012647080685567743216228355220114804663715659121373450747856947683463616792101806445070648000277502684916746550586856935673420670581136429224554405758925724208241314695689016758940256776311356919292033376587141660230105703089634572075440370847469940168269282808481184289314848524948644871927809676271275775397027668605952496716674183485704422507197965004714951050492214776567636938662976979522110718264549734772662425709429322582798502585509785265383207606726317164309505995087807523710333101197857547331541421808427543863591778117054309827482385045648019095610299291824318237525357709750539565187697510374970888692180205189339507238539205144634197265287286965110862571492198849978748873771345686209167058',\r\n\r\n // Pi (1025 digits).\r\n PI = '3.1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659334461284756482337867831652712019091456485669234603486104543266482133936072602491412737245870066063155881748815209209628292540917153643678925903600113305305488204665213841469519415116094330572703657595919530921861173819326117931051185480744623799627495673518857527248912279381830119491298336733624406566430860213949463952247371907021798609437027705392171762931767523846748184676694051320005681271452635608277857713427577896091736371787214684409012249534301465495853710507922796892589235420199561121290219608640344181598136297747713099605187072113499999983729780499510597317328160963185950244594553469083026425223082533446850352619311881710100031378387528865875332083814206171776691473035982534904287554687311595628638823537875937519577818577805321712268066130019278766111959092164201989380952572010654858632789',\r\n\r\n\r\n // The initial configuration properties of the Decimal constructor.\r\n DEFAULTS = {\r\n\r\n // These values must be integers within the stated ranges (inclusive).\r\n // Most of these values can be changed at run-time using the `Decimal.config` method.\r\n\r\n // The maximum number of significant digits of the result of a calculation or base conversion.\r\n // E.g. `Decimal.config({ precision: 20 });`\r\n precision: 20, // 1 to MAX_DIGITS\r\n\r\n // The rounding mode used when rounding to `precision`.\r\n //\r\n // ROUND_UP 0 Away from zero.\r\n // ROUND_DOWN 1 Towards zero.\r\n // ROUND_CEIL 2 Towards +Infinity.\r\n // ROUND_FLOOR 3 Towards -Infinity.\r\n // ROUND_HALF_UP 4 Towards nearest neighbour. If equidistant, up.\r\n // ROUND_HALF_DOWN 5 Towards nearest neighbour. If equidistant, down.\r\n // ROUND_HALF_EVEN 6 Towards nearest neighbour. If equidistant, towards even neighbour.\r\n // ROUND_HALF_CEIL 7 Towards nearest neighbour. If equidistant, towards +Infinity.\r\n // ROUND_HALF_FLOOR 8 Towards nearest neighbour. If equidistant, towards -Infinity.\r\n //\r\n // E.g.\r\n // `Decimal.rounding = 4;`\r\n // `Decimal.rounding = Decimal.ROUND_HALF_UP;`\r\n rounding: 4, // 0 to 8\r\n\r\n // The modulo mode used when calculating the modulus: a mod n.\r\n // The quotient (q = a / n) is calculated according to the corresponding rounding mode.\r\n // The remainder (r) is calculated as: r = a - n * q.\r\n //\r\n // UP 0 The remainder is positive if the dividend is negative, else is negative.\r\n // DOWN 1 The remainder has the same sign as the dividend (JavaScript %).\r\n // FLOOR 3 The remainder has the same sign as the divisor (Python %).\r\n // HALF_EVEN 6 The IEEE 754 remainder function.\r\n // EUCLID 9 Euclidian division. q = sign(n) * floor(a / abs(n)). Always positive.\r\n //\r\n // Truncated division (1), floored division (3), the IEEE 754 remainder (6), and Euclidian\r\n // division (9) are commonly used for the modulus operation. The other rounding modes can also\r\n // be used, but they may not give useful results.\r\n modulo: 1, // 0 to 9\r\n\r\n // The exponent value at and beneath which `toString` returns exponential notation.\r\n // JavaScript numbers: -7\r\n toExpNeg: -7, // 0 to -EXP_LIMIT\r\n\r\n // The exponent value at and above which `toString` returns exponential notation.\r\n // JavaScript numbers: 21\r\n toExpPos: 21, // 0 to EXP_LIMIT\r\n\r\n // The minimum exponent value, beneath which underflow to zero occurs.\r\n // JavaScript numbers: -324 (5e-324)\r\n minE: -EXP_LIMIT, // -1 to -EXP_LIMIT\r\n\r\n // The maximum exponent value, above which overflow to Infinity occurs.\r\n // JavaScript numbers: 308 (1.7976931348623157e+308)\r\n maxE: EXP_LIMIT, // 1 to EXP_LIMIT\r\n\r\n // Whether to use cryptographically-secure random number generation, if available.\r\n crypto: false // true/false\r\n },\r\n\r\n\r\n // ----------------------------------- END OF EDITABLE DEFAULTS ------------------------------- //\r\n\r\n\r\n Decimal, inexact, noConflict, quadrant,\r\n external = true,\r\n\r\n decimalError = '[DecimalError] ',\r\n invalidArgument = decimalError + 'Invalid argument: ',\r\n precisionLimitExceeded = decimalError + 'Precision limit exceeded',\r\n cryptoUnavailable = decimalError + 'crypto unavailable',\r\n tag = '[object Decimal]',\r\n\r\n mathfloor = Math.floor,\r\n mathpow = Math.pow,\r\n\r\n isBinary = /^0b([01]+(\\.[01]*)?|\\.[01]+)(p[+-]?\\d+)?$/i,\r\n isHex = /^0x([0-9a-f]+(\\.[0-9a-f]*)?|\\.[0-9a-f]+)(p[+-]?\\d+)?$/i,\r\n isOctal = /^0o([0-7]+(\\.[0-7]*)?|\\.[0-7]+)(p[+-]?\\d+)?$/i,\r\n isDecimal = /^(\\d+(\\.\\d*)?|\\.\\d+)(e[+-]?\\d+)?$/i,\r\n\r\n BASE = 1e7,\r\n LOG_BASE = 7,\r\n MAX_SAFE_INTEGER = 9007199254740991,\r\n\r\n LN10_PRECISION = LN10.length - 1,\r\n PI_PRECISION = PI.length - 1,\r\n\r\n // Decimal.prototype object\r\n P = { toStringTag: tag };\r\n\r\n\r\n // Decimal prototype methods\r\n\r\n\r\n /*\r\n * absoluteValue abs\r\n * ceil\r\n * clampedTo clamp\r\n * comparedTo cmp\r\n * cosine cos\r\n * cubeRoot cbrt\r\n * decimalPlaces dp\r\n * dividedBy div\r\n * dividedToIntegerBy divToInt\r\n * equals eq\r\n * floor\r\n * greaterThan gt\r\n * greaterThanOrEqualTo gte\r\n * hyperbolicCosine cosh\r\n * hyperbolicSine sinh\r\n * hyperbolicTangent tanh\r\n * inverseCosine acos\r\n * inverseHyperbolicCosine acosh\r\n * inverseHyperbolicSine asinh\r\n * inverseHyperbolicTangent atanh\r\n * inverseSine asin\r\n * inverseTangent atan\r\n * isFinite\r\n * isInteger isInt\r\n * isNaN\r\n * isNegative isNeg\r\n * isPositive isPos\r\n * isZero\r\n * lessThan lt\r\n * lessThanOrEqualTo lte\r\n * logarithm log\r\n * [maximum] [max]\r\n * [minimum] [min]\r\n * minus sub\r\n * modulo mod\r\n * naturalExponential exp\r\n * naturalLogarithm ln\r\n * negated neg\r\n * plus add\r\n * precision sd\r\n * round\r\n * sine sin\r\n * squareRoot sqrt\r\n * tangent tan\r\n * times mul\r\n * toBinary\r\n * toDecimalPlaces toDP\r\n * toExponential\r\n * toFixed\r\n * toFraction\r\n * toHexadecimal toHex\r\n * toNearest\r\n * toNumber\r\n * toOctal\r\n * toPower pow\r\n * toPrecision\r\n * toSignificantDigits toSD\r\n * toString\r\n * truncated trunc\r\n * valueOf toJSON\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of this Decimal.\r\n *\r\n */\r\n P.absoluteValue = P.abs = function () {\r\n var x = new this.constructor(this);\r\n if (x.s < 0) x.s = 1;\r\n return finalise(x);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of positive Infinity.\r\n *\r\n */\r\n P.ceil = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 2);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal clamped to the range\r\n * delineated by `min` and `max`.\r\n *\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\r\n P.clampedTo = P.clamp = function (min, max) {\r\n var k,\r\n x = this,\r\n Ctor = x.constructor;\r\n min = new Ctor(min);\r\n max = new Ctor(max);\r\n if (!min.s || !max.s) return new Ctor(NaN);\r\n if (min.gt(max)) throw Error(invalidArgument + max);\r\n k = x.cmp(min);\r\n return k < 0 ? min : x.cmp(max) > 0 ? max : new Ctor(x);\r\n };\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if the value of this Decimal is greater than the value of `y`,\r\n * -1 if the value of this Decimal is less than the value of `y`,\r\n * 0 if they have the same value,\r\n * NaN if the value of either Decimal is NaN.\r\n *\r\n */\r\n P.comparedTo = P.cmp = function (y) {\r\n var i, j, xdL, ydL,\r\n x = this,\r\n xd = x.d,\r\n yd = (y = new x.constructor(y)).d,\r\n xs = x.s,\r\n ys = y.s;\r\n\r\n // Either NaN or ±Infinity?\r\n if (!xd || !yd) {\r\n return !xs || !ys ? NaN : xs !== ys ? xs : xd === yd ? 0 : !xd ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Either zero?\r\n if (!xd[0] || !yd[0]) return xd[0] ? xs : yd[0] ? -ys : 0;\r\n\r\n // Signs differ?\r\n if (xs !== ys) return xs;\r\n\r\n // Compare exponents.\r\n if (x.e !== y.e) return x.e > y.e ^ xs < 0 ? 1 : -1;\r\n\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Compare digit by digit.\r\n for (i = 0, j = xdL < ydL ? xdL : ydL; i < j; ++i) {\r\n if (xd[i] !== yd[i]) return xd[i] > yd[i] ^ xs < 0 ? 1 : -1;\r\n }\r\n\r\n // Compare lengths.\r\n return xdL === ydL ? 0 : xdL > ydL ^ xs < 0 ? 1 : -1;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the cosine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * cos(0) = 1\r\n * cos(-0) = 1\r\n * cos(Infinity) = NaN\r\n * cos(-Infinity) = NaN\r\n * cos(NaN) = NaN\r\n *\r\n */\r\n P.cosine = P.cos = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.d) return new Ctor(NaN);\r\n\r\n // cos(0) = cos(-0) = 1\r\n if (!x.d[0]) return new Ctor(1);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = cosine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 3 ? x.neg() : x, pr, rm, true);\r\n };\r\n\r\n\r\n /*\r\n *\r\n * Return a new Decimal whose value is the cube root of the value of this Decimal, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * cbrt(0) = 0\r\n * cbrt(-0) = -0\r\n * cbrt(1) = 1\r\n * cbrt(-1) = -1\r\n * cbrt(N) = N\r\n * cbrt(-I) = -I\r\n * cbrt(I) = I\r\n *\r\n * Math.cbrt(x) = (x < 0 ? -Math.pow(-x, 1/3) : Math.pow(x, 1/3))\r\n *\r\n */\r\n P.cubeRoot = P.cbrt = function () {\r\n var e, m, n, r, rep, s, sd, t, t3, t3plusx,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = x.s * mathpow(x.s * x, 1 / 3);\r\n\r\n // Math.cbrt underflow/overflow?\r\n // Pass x to Math.pow as integer, then adjust the exponent of the result.\r\n if (!s || Math.abs(s) == 1 / 0) {\r\n n = digitsToString(x.d);\r\n e = x.e;\r\n\r\n // Adjust n exponent so it is a multiple of 3 away from x exponent.\r\n if (s = (e - n.length + 1) % 3) n += (s == 1 || s == -2 ? '0' : '00');\r\n s = mathpow(n, 1 / 3);\r\n\r\n // Rarely, e may be one less than the result exponent value.\r\n e = mathfloor((e + 1) / 3) - (e % 3 == (e < 0 ? -1 : 2));\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n r.s = x.s;\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Halley's method.\r\n // TODO? Compare Newton's method.\r\n for (;;) {\r\n t = r;\r\n t3 = t.times(t).times(t);\r\n t3plusx = t3.plus(x);\r\n r = divide(t3plusx.plus(x).times(t), t3plusx.plus(t3), sd + 2, 1);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or 4999\r\n // , i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n };\r\n\r\n\r\n /*\r\n * Return the number of decimal places of the value of this Decimal.\r\n *\r\n */\r\n P.decimalPlaces = P.dp = function () {\r\n var w,\r\n d = this.d,\r\n n = NaN;\r\n\r\n if (d) {\r\n w = d.length - 1;\r\n n = (w - mathfloor(this.e / LOG_BASE)) * LOG_BASE;\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n w = d[w];\r\n if (w) for (; w % 10 == 0; w /= 10) n--;\r\n if (n < 0) n = 0;\r\n }\r\n\r\n return n;\r\n };\r\n\r\n\r\n /*\r\n * n / 0 = I\r\n * n / N = N\r\n * n / I = 0\r\n * 0 / n = 0\r\n * 0 / 0 = N\r\n * 0 / N = N\r\n * 0 / I = 0\r\n * N / n = N\r\n * N / 0 = N\r\n * N / N = N\r\n * N / I = N\r\n * I / n = I\r\n * I / 0 = I\r\n * I / N = N\r\n * I / I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal divided by `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.dividedBy = P.div = function (y) {\r\n return divide(this, new this.constructor(y));\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the integer part of dividing the value of this Decimal\r\n * by the value of `y`, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.dividedToIntegerBy = P.divToInt = function (y) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n return finalise(divide(x, new Ctor(y), 0, 1, 1), Ctor.precision, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is equal to the value of `y`, otherwise return false.\r\n *\r\n */\r\n P.equals = P.eq = function (y) {\r\n return this.cmp(y) === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number in the\r\n * direction of negative Infinity.\r\n *\r\n */\r\n P.floor = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 3);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than the value of `y`, otherwise return\r\n * false.\r\n *\r\n */\r\n P.greaterThan = P.gt = function (y) {\r\n return this.cmp(y) > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is greater than or equal to the value of `y`,\r\n * otherwise return false.\r\n *\r\n */\r\n P.greaterThanOrEqualTo = P.gte = function (y) {\r\n var k = this.cmp(y);\r\n return k == 1 || k === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic cosine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [1, Infinity]\r\n *\r\n * cosh(x) = 1 + x^2/2! + x^4/4! + x^6/6! + ...\r\n *\r\n * cosh(0) = 1\r\n * cosh(-0) = 1\r\n * cosh(Infinity) = Infinity\r\n * cosh(-Infinity) = Infinity\r\n * cosh(NaN) = NaN\r\n *\r\n * x time taken (ms) result\r\n * 1000 9 9.8503555700852349694e+433\r\n * 10000 25 4.4034091128314607936e+4342\r\n * 100000 171 1.4033316802130615897e+43429\r\n * 1000000 3817 1.5166076984010437725e+434294\r\n * 10000000 abandoned after 2 minute wait\r\n *\r\n * TODO? Compare performance of cosh(x) = 0.5 * (exp(x) + exp(-x))\r\n *\r\n */\r\n P.hyperbolicCosine = P.cosh = function () {\r\n var k, n, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor,\r\n one = new Ctor(1);\r\n\r\n if (!x.isFinite()) return new Ctor(x.s ? 1 / 0 : NaN);\r\n if (x.isZero()) return one;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n // Argument reduction: cos(4x) = 1 - 8cos^2(x) + 8cos^4(x) + 1\r\n // i.e. cos(x) = 1 - cos^2(x/4)(8 - 8cos^2(x/4))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n // TODO? Estimation reused from cosine() and may not be optimal here.\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n n = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n n = '2.3283064365386962890625e-10';\r\n }\r\n\r\n x = taylorSeries(Ctor, 1, x.times(n), new Ctor(1), true);\r\n\r\n // Reverse argument reduction\r\n var cosh2_x,\r\n i = k,\r\n d8 = new Ctor(8);\r\n for (; i--;) {\r\n cosh2_x = x.times(x);\r\n x = one.minus(cosh2_x.times(d8.minus(cosh2_x.times(d8))));\r\n }\r\n\r\n return finalise(x, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic sine of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * sinh(x) = x + x^3/3! + x^5/5! + x^7/7! + ...\r\n *\r\n * sinh(0) = 0\r\n * sinh(-0) = -0\r\n * sinh(Infinity) = Infinity\r\n * sinh(-Infinity) = -Infinity\r\n * sinh(NaN) = NaN\r\n *\r\n * x time taken (ms)\r\n * 10 2 ms\r\n * 100 5 ms\r\n * 1000 14 ms\r\n * 10000 82 ms\r\n * 100000 886 ms 1.4033316802130615897e+43429\r\n * 200000 2613 ms\r\n * 300000 5407 ms\r\n * 400000 8824 ms\r\n * 500000 13026 ms 8.7080643612718084129e+217146\r\n * 1000000 48543 ms\r\n *\r\n * TODO? Compare performance of sinh(x) = 0.5 * (exp(x) - exp(-x))\r\n *\r\n */\r\n P.hyperbolicSine = P.sinh = function () {\r\n var k, pr, rm, len,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n } else {\r\n\r\n // Alternative argument reduction: sinh(3x) = sinh(x)(3 + 4sinh^2(x))\r\n // i.e. sinh(x) = sinh(x/3)(3 + 4sinh^2(x/3))\r\n // 3 multiplications and 1 addition\r\n\r\n // Argument reduction: sinh(5x) = sinh(x)(5 + sinh^2(x)(20 + 16sinh^2(x)))\r\n // i.e. sinh(x) = sinh(x/5)(5 + sinh^2(x/5)(20 + 16sinh^2(x/5)))\r\n // 4 multiplications and 2 additions\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x, true);\r\n\r\n // Reverse argument reduction\r\n var sinh2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sinh2_x = x.times(x);\r\n x = x.times(d5.plus(sinh2_x.times(d16.times(sinh2_x).plus(d20))));\r\n }\r\n }\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(x, pr, rm, true);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic tangent of the value in radians of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * tanh(x) = sinh(x) / cosh(x)\r\n *\r\n * tanh(0) = 0\r\n * tanh(-0) = -0\r\n * tanh(Infinity) = 1\r\n * tanh(-Infinity) = -1\r\n * tanh(NaN) = NaN\r\n *\r\n */\r\n P.hyperbolicTangent = P.tanh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(x.s);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 7;\r\n Ctor.rounding = 1;\r\n\r\n return divide(x.sinh(), x.cosh(), Ctor.precision = pr, Ctor.rounding = rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arccosine (inverse cosine) in radians of the value of\r\n * this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [0, pi]\r\n *\r\n * acos(x) = pi/2 - asin(x)\r\n *\r\n * acos(0) = pi/2\r\n * acos(-0) = pi/2\r\n * acos(1) = 0\r\n * acos(-1) = pi\r\n * acos(1/2) = pi/3\r\n * acos(-1/2) = 2*pi/3\r\n * acos(|x| > 1) = NaN\r\n * acos(NaN) = NaN\r\n *\r\n */\r\n P.inverseCosine = P.acos = function () {\r\n var halfPi,\r\n x = this,\r\n Ctor = x.constructor,\r\n k = x.abs().cmp(1),\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n return k === 0\r\n // |x| is 1\r\n ? x.isNeg() ? getPi(Ctor, pr, rm) : new Ctor(0)\r\n // |x| > 1 or x is NaN\r\n : new Ctor(NaN);\r\n }\r\n\r\n if (x.isZero()) return getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n // TODO? Special case acos(0.5) = pi/3 and acos(-0.5) = 2*pi/3\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.asin();\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return halfPi.minus(x);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [1, Infinity]\r\n * Range: [0, Infinity]\r\n *\r\n * acosh(x) = ln(x + sqrt(x^2 - 1))\r\n *\r\n * acosh(x < 1) = NaN\r\n * acosh(NaN) = NaN\r\n * acosh(Infinity) = Infinity\r\n * acosh(-Infinity) = NaN\r\n * acosh(0) = NaN\r\n * acosh(-0) = NaN\r\n * acosh(1) = 0\r\n * acosh(-1) = NaN\r\n *\r\n */\r\n P.inverseHyperbolicCosine = P.acosh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.lte(1)) return new Ctor(x.eq(1) ? 0 : NaN);\r\n if (!x.isFinite()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(Math.abs(x.e), x.sd()) + 4;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).minus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * asinh(x) = ln(x + sqrt(x^2 + 1))\r\n *\r\n * asinh(NaN) = NaN\r\n * asinh(Infinity) = Infinity\r\n * asinh(-Infinity) = -Infinity\r\n * asinh(0) = 0\r\n * asinh(-0) = -0\r\n *\r\n */\r\n P.inverseHyperbolicSine = P.asinh = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite() || x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 2 * Math.max(Math.abs(x.e), x.sd()) + 6;\r\n Ctor.rounding = 1;\r\n external = false;\r\n\r\n x = x.times(x).plus(1).sqrt().plus(x);\r\n\r\n external = true;\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.ln();\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent in radians of the\r\n * value of this Decimal.\r\n *\r\n * Domain: [-1, 1]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * atanh(x) = 0.5 * ln((1 + x) / (1 - x))\r\n *\r\n * atanh(|x| > 1) = NaN\r\n * atanh(NaN) = NaN\r\n * atanh(Infinity) = NaN\r\n * atanh(-Infinity) = NaN\r\n * atanh(0) = 0\r\n * atanh(-0) = -0\r\n * atanh(1) = Infinity\r\n * atanh(-1) = -Infinity\r\n *\r\n */\r\n P.inverseHyperbolicTangent = P.atanh = function () {\r\n var pr, rm, wpr, xsd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.e >= 0) return new Ctor(x.abs().eq(1) ? x.s / 0 : x.isZero() ? x : NaN);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n xsd = x.sd();\r\n\r\n if (Math.max(xsd, pr) < 2 * -x.e - 1) return finalise(new Ctor(x), pr, rm, true);\r\n\r\n Ctor.precision = wpr = xsd - x.e;\r\n\r\n x = divide(x.plus(1), new Ctor(1).minus(x), wpr + pr, 1);\r\n\r\n Ctor.precision = pr + 4;\r\n Ctor.rounding = 1;\r\n\r\n x = x.ln();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(0.5);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arcsine (inverse sine) in radians of the value of this\r\n * Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * asin(x) = 2*atan(x/(1 + sqrt(1 - x^2)))\r\n *\r\n * asin(0) = 0\r\n * asin(-0) = -0\r\n * asin(1/2) = pi/6\r\n * asin(-1/2) = -pi/6\r\n * asin(1) = pi/2\r\n * asin(-1) = -pi/2\r\n * asin(|x| > 1) = NaN\r\n * asin(NaN) = NaN\r\n *\r\n * TODO? Compare performance of Taylor series.\r\n *\r\n */\r\n P.inverseSine = P.asin = function () {\r\n var halfPi, k,\r\n pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n k = x.abs().cmp(1);\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (k !== -1) {\r\n\r\n // |x| is 1\r\n if (k === 0) {\r\n halfPi = getPi(Ctor, pr + 4, rm).times(0.5);\r\n halfPi.s = x.s;\r\n return halfPi;\r\n }\r\n\r\n // |x| > 1 or x is NaN\r\n return new Ctor(NaN);\r\n }\r\n\r\n // TODO? Special case asin(1/2) = pi/6 and asin(-1/2) = -pi/6\r\n\r\n Ctor.precision = pr + 6;\r\n Ctor.rounding = 1;\r\n\r\n x = x.div(new Ctor(1).minus(x.times(x)).sqrt().plus(1)).atan();\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return x.times(2);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arctangent (inverse tangent) in radians of the value\r\n * of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi/2, pi/2]\r\n *\r\n * atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n *\r\n * atan(0) = 0\r\n * atan(-0) = -0\r\n * atan(1) = pi/4\r\n * atan(-1) = -pi/4\r\n * atan(Infinity) = pi/2\r\n * atan(-Infinity) = -pi/2\r\n * atan(NaN) = NaN\r\n *\r\n */\r\n P.inverseTangent = P.atan = function () {\r\n var i, j, k, n, px, t, r, wpr, x2,\r\n x = this,\r\n Ctor = x.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding;\r\n\r\n if (!x.isFinite()) {\r\n if (!x.s) return new Ctor(NaN);\r\n if (pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.5);\r\n r.s = x.s;\r\n return r;\r\n }\r\n } else if (x.isZero()) {\r\n return new Ctor(x);\r\n } else if (x.abs().eq(1) && pr + 4 <= PI_PRECISION) {\r\n r = getPi(Ctor, pr + 4, rm).times(0.25);\r\n r.s = x.s;\r\n return r;\r\n }\r\n\r\n Ctor.precision = wpr = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n // TODO? if (x >= 1 && pr <= PI_PRECISION) atan(x) = halfPi * x.s - atan(1 / x);\r\n\r\n // Argument reduction\r\n // Ensure |x| < 0.42\r\n // atan(x) = 2 * atan(x / (1 + sqrt(1 + x^2)))\r\n\r\n k = Math.min(28, wpr / LOG_BASE + 2 | 0);\r\n\r\n for (i = k; i; --i) x = x.div(x.times(x).plus(1).sqrt().plus(1));\r\n\r\n external = false;\r\n\r\n j = Math.ceil(wpr / LOG_BASE);\r\n n = 1;\r\n x2 = x.times(x);\r\n r = new Ctor(x);\r\n px = x;\r\n\r\n // atan(x) = x - x^3/3 + x^5/5 - x^7/7 + ...\r\n for (; i !== -1;) {\r\n px = px.times(x2);\r\n t = r.minus(px.div(n += 2));\r\n\r\n px = px.times(x2);\r\n r = t.plus(px.div(n += 2));\r\n\r\n if (r.d[j] !== void 0) for (i = j; r.d[i] === t.d[i] && i--;);\r\n }\r\n\r\n if (k) r = r.times(2 << (k - 1));\r\n\r\n external = true;\r\n\r\n return finalise(r, Ctor.precision = pr, Ctor.rounding = rm, true);\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is a finite number, otherwise return false.\r\n *\r\n */\r\n P.isFinite = function () {\r\n return !!this.d;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is an integer, otherwise return false.\r\n *\r\n */\r\n P.isInteger = P.isInt = function () {\r\n return !!this.d && mathfloor(this.e / LOG_BASE) > this.d.length - 2;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is NaN, otherwise return false.\r\n *\r\n */\r\n P.isNaN = function () {\r\n return !this.s;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is negative, otherwise return false.\r\n *\r\n */\r\n P.isNegative = P.isNeg = function () {\r\n return this.s < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is positive, otherwise return false.\r\n *\r\n */\r\n P.isPositive = P.isPos = function () {\r\n return this.s > 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is 0 or -0, otherwise return false.\r\n *\r\n */\r\n P.isZero = function () {\r\n return !!this.d && this.d[0] === 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThan = P.lt = function (y) {\r\n return this.cmp(y) < 0;\r\n };\r\n\r\n\r\n /*\r\n * Return true if the value of this Decimal is less than or equal to `y`, otherwise return false.\r\n *\r\n */\r\n P.lessThanOrEqualTo = P.lte = function (y) {\r\n return this.cmp(y) < 1;\r\n };\r\n\r\n\r\n /*\r\n * Return the logarithm of the value of this Decimal to the specified base, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * If no base is specified, return log[10](arg).\r\n *\r\n * log[base](arg) = ln(arg) / ln(base)\r\n *\r\n * The result will always be correctly rounded if the base of the log is 10, and 'almost always'\r\n * otherwise:\r\n *\r\n * Depending on the rounding mode, the result may be incorrectly rounded if the first fifteen\r\n * rounding digits are [49]99999999999999 or [50]00000000000000. In that case, the maximum error\r\n * between the result and the correctly rounded result will be one ulp (unit in the last place).\r\n *\r\n * log[-b](a) = NaN\r\n * log[0](a) = NaN\r\n * log[1](a) = NaN\r\n * log[NaN](a) = NaN\r\n * log[Infinity](a) = NaN\r\n * log[b](0) = -Infinity\r\n * log[b](-0) = -Infinity\r\n * log[b](-a) = NaN\r\n * log[b](1) = 0\r\n * log[b](Infinity) = Infinity\r\n * log[b](NaN) = NaN\r\n *\r\n * [base] {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n P.logarithm = P.log = function (base) {\r\n var isBase10, d, denominator, k, inf, num, sd, r,\r\n arg = this,\r\n Ctor = arg.constructor,\r\n pr = Ctor.precision,\r\n rm = Ctor.rounding,\r\n guard = 5;\r\n\r\n // Default base is 10.\r\n if (base == null) {\r\n base = new Ctor(10);\r\n isBase10 = true;\r\n } else {\r\n base = new Ctor(base);\r\n d = base.d;\r\n\r\n // Return NaN if base is negative, or non-finite, or is 0 or 1.\r\n if (base.s < 0 || !d || !d[0] || base.eq(1)) return new Ctor(NaN);\r\n\r\n isBase10 = base.eq(10);\r\n }\r\n\r\n d = arg.d;\r\n\r\n // Is arg negative, non-finite, 0 or 1?\r\n if (arg.s < 0 || !d || !d[0] || arg.eq(1)) {\r\n return new Ctor(d && !d[0] ? -1 / 0 : arg.s != 1 ? NaN : d ? 0 : 1 / 0);\r\n }\r\n\r\n // The result will have a non-terminating decimal expansion if base is 10 and arg is not an\r\n // integer power of 10.\r\n if (isBase10) {\r\n if (d.length > 1) {\r\n inf = true;\r\n } else {\r\n for (k = d[0]; k % 10 === 0;) k /= 10;\r\n inf = k !== 1;\r\n }\r\n }\r\n\r\n external = false;\r\n sd = pr + guard;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n\r\n // The result will have 5 rounding digits.\r\n r = divide(num, denominator, sd, 1);\r\n\r\n // If at a rounding boundary, i.e. the result's rounding digits are [49]9999 or [50]0000,\r\n // calculate 10 further digits.\r\n //\r\n // If the result is known to have an infinite decimal expansion, repeat this until it is clear\r\n // that the result is above or below the boundary. Otherwise, if after calculating the 10\r\n // further digits, the last 14 are nines, round up and assume the result is exact.\r\n // Also assume the result is exact if the last 14 are zero.\r\n //\r\n // Example of a result that will be incorrectly rounded:\r\n // log[1048576](4503599627370502) = 2.60000000000000009610279511444746...\r\n // The above result correctly rounded using ROUND_CEIL to 1 decimal place should be 2.7, but it\r\n // will be given as 2.6 as there are 15 zeros immediately after the requested decimal place, so\r\n // the exact result would be assumed to be 2.6, which rounded using ROUND_CEIL to 1 decimal\r\n // place is still 2.6.\r\n if (checkRoundingDigits(r.d, k = pr, rm)) {\r\n\r\n do {\r\n sd += 10;\r\n num = naturalLogarithm(arg, sd);\r\n denominator = isBase10 ? getLn10(Ctor, sd + 10) : naturalLogarithm(base, sd);\r\n r = divide(num, denominator, sd, 1);\r\n\r\n if (!inf) {\r\n\r\n // Check for 14 nines from the 2nd rounding digit, as the first may be 4.\r\n if (+digitsToString(r.d).slice(k + 1, k + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n\r\n break;\r\n }\r\n } while (checkRoundingDigits(r.d, k += 10, rm));\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, pr, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n P.max = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'lt');\r\n };\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n P.min = function () {\r\n Array.prototype.push.call(arguments, this);\r\n return maxOrMin(this.constructor, arguments, 'gt');\r\n };\r\n */\r\n\r\n\r\n /*\r\n * n - 0 = n\r\n * n - N = N\r\n * n - I = -I\r\n * 0 - n = -n\r\n * 0 - 0 = 0\r\n * 0 - N = N\r\n * 0 - I = -I\r\n * N - n = N\r\n * N - 0 = N\r\n * N - N = N\r\n * N - I = N\r\n * I - n = I\r\n * I - 0 = I\r\n * I - N = N\r\n * I - I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal minus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.minus = P.sub = function (y) {\r\n var d, e, i, j, k, len, pr, rm, xd, xe, xLTy, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return y negated if x is finite and y is ±Infinity.\r\n else if (x.d) y.s = -y.s;\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with different signs.\r\n // Return NaN if both are ±Infinity with the same sign.\r\n else y = new Ctor(y.d || x.s !== y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.plus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return y negated if x is zero and y is non-zero.\r\n if (yd[0]) y.s = -y.s;\r\n\r\n // Return x if y is zero and x is non-zero.\r\n else if (xd[0]) y = new Ctor(x);\r\n\r\n // Return zero if both are zero.\r\n // From IEEE 754 (2008) 6.3: 0 - 0 = -0 - -0 = -0 when rounding to -Infinity.\r\n else return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n e = mathfloor(y.e / LOG_BASE);\r\n xe = mathfloor(x.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n k = xe - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (k) {\r\n xLTy = k < 0;\r\n\r\n if (xLTy) {\r\n d = xd;\r\n k = -k;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = xe;\r\n len = xd.length;\r\n }\r\n\r\n // Numbers with massively different exponents would result in a very high number of\r\n // zeros needing to be prepended, but this can be avoided while still ensuring correct\r\n // rounding by limiting the number of zeros to `Math.ceil(pr / LOG_BASE) + 2`.\r\n i = Math.max(Math.ceil(pr / LOG_BASE), len) + 2;\r\n\r\n if (k > i) {\r\n k = i;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents.\r\n d.reverse();\r\n for (i = k; i--;) d.push(0);\r\n d.reverse();\r\n\r\n // Base 1e7 exponents equal.\r\n } else {\r\n\r\n // Check digits to determine which is the bigger number.\r\n\r\n i = xd.length;\r\n len = yd.length;\r\n xLTy = i < len;\r\n if (xLTy) len = i;\r\n\r\n for (i = 0; i < len; i++) {\r\n if (xd[i] != yd[i]) {\r\n xLTy = xd[i] < yd[i];\r\n break;\r\n }\r\n }\r\n\r\n k = 0;\r\n }\r\n\r\n if (xLTy) {\r\n d = xd;\r\n xd = yd;\r\n yd = d;\r\n y.s = -y.s;\r\n }\r\n\r\n len = xd.length;\r\n\r\n // Append zeros to `xd` if shorter.\r\n // Don't add zeros to `yd` if shorter as subtraction only needs to start at `yd` length.\r\n for (i = yd.length - len; i > 0; --i) xd[len++] = 0;\r\n\r\n // Subtract yd from xd.\r\n for (i = yd.length; i > k;) {\r\n\r\n if (xd[--i] < yd[i]) {\r\n for (j = i; j && xd[--j] === 0;) xd[j] = BASE - 1;\r\n --xd[j];\r\n xd[i] += BASE;\r\n }\r\n\r\n xd[i] -= yd[i];\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] === 0;) xd.pop();\r\n\r\n // Remove leading zeros and adjust exponent accordingly.\r\n for (; xd[0] === 0; xd.shift()) --e;\r\n\r\n // Zero?\r\n if (!xd[0]) return new Ctor(rm === 3 ? -0 : 0);\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n };\r\n\r\n\r\n /*\r\n * n % 0 = N\r\n * n % N = N\r\n * n % I = n\r\n * 0 % n = 0\r\n * -0 % n = -0\r\n * 0 % 0 = N\r\n * 0 % N = N\r\n * 0 % I = 0\r\n * N % n = N\r\n * N % 0 = N\r\n * N % N = N\r\n * N % I = N\r\n * I % n = N\r\n * I % 0 = N\r\n * I % N = N\r\n * I % I = N\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal modulo `y`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * The result depends on the modulo mode.\r\n *\r\n */\r\n P.modulo = P.mod = function (y) {\r\n var q,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // Return NaN if x is ±Infinity or NaN, or y is NaN or ±0.\r\n if (!x.d || !y.s || y.d && !y.d[0]) return new Ctor(NaN);\r\n\r\n // Return x if y is ±Infinity or x is ±0.\r\n if (!y.d || x.d && !x.d[0]) {\r\n return finalise(new Ctor(x), Ctor.precision, Ctor.rounding);\r\n }\r\n\r\n // Prevent rounding of intermediate calculations.\r\n external = false;\r\n\r\n if (Ctor.modulo == 9) {\r\n\r\n // Euclidian division: q = sign(y) * floor(x / abs(y))\r\n // result = x - q * y where 0 <= result < abs(y)\r\n q = divide(x, y.abs(), 0, 3, 1);\r\n q.s *= y.s;\r\n } else {\r\n q = divide(x, y, 0, Ctor.modulo, 1);\r\n }\r\n\r\n q = q.times(y);\r\n\r\n external = true;\r\n\r\n return x.minus(q);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of the value of this Decimal,\r\n * i.e. the base e raised to the power the value of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.naturalExponential = P.exp = function () {\r\n return naturalExponential(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of the value of this Decimal,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.naturalLogarithm = P.ln = function () {\r\n return naturalLogarithm(this);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal negated, i.e. as if multiplied by\r\n * -1.\r\n *\r\n */\r\n P.negated = P.neg = function () {\r\n var x = new this.constructor(this);\r\n x.s = -x.s;\r\n return finalise(x);\r\n };\r\n\r\n\r\n /*\r\n * n + 0 = n\r\n * n + N = N\r\n * n + I = I\r\n * 0 + n = n\r\n * 0 + 0 = 0\r\n * 0 + N = N\r\n * 0 + I = I\r\n * N + n = N\r\n * N + 0 = N\r\n * N + N = N\r\n * N + I = N\r\n * I + n = I\r\n * I + 0 = I\r\n * I + N = N\r\n * I + I = I\r\n *\r\n * Return a new Decimal whose value is the value of this Decimal plus `y`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.plus = P.add = function (y) {\r\n var carry, d, e, i, k, len, pr, rm, xd, yd,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n y = new Ctor(y);\r\n\r\n // If either is not finite...\r\n if (!x.d || !y.d) {\r\n\r\n // Return NaN if either is NaN.\r\n if (!x.s || !y.s) y = new Ctor(NaN);\r\n\r\n // Return x if y is finite and x is ±Infinity.\r\n // Return x if both are ±Infinity with the same sign.\r\n // Return NaN if both are ±Infinity with different signs.\r\n // Return y if x is finite and y is ±Infinity.\r\n else if (!x.d) y = new Ctor(y.d || x.s === y.s ? x : NaN);\r\n\r\n return y;\r\n }\r\n\r\n // If signs differ...\r\n if (x.s != y.s) {\r\n y.s = -y.s;\r\n return x.minus(y);\r\n }\r\n\r\n xd = x.d;\r\n yd = y.d;\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n // If either is zero...\r\n if (!xd[0] || !yd[0]) {\r\n\r\n // Return x if y is zero.\r\n // Return y if y is non-zero.\r\n if (!yd[0]) y = new Ctor(x);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n }\r\n\r\n // x and y are finite, non-zero numbers with the same sign.\r\n\r\n // Calculate base 1e7 exponents.\r\n k = mathfloor(x.e / LOG_BASE);\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n xd = xd.slice();\r\n i = k - e;\r\n\r\n // If base 1e7 exponents differ...\r\n if (i) {\r\n\r\n if (i < 0) {\r\n d = xd;\r\n i = -i;\r\n len = yd.length;\r\n } else {\r\n d = yd;\r\n e = k;\r\n len = xd.length;\r\n }\r\n\r\n // Limit number of zeros prepended to max(ceil(pr / LOG_BASE), len) + 1.\r\n k = Math.ceil(pr / LOG_BASE);\r\n len = k > len ? k + 1 : len + 1;\r\n\r\n if (i > len) {\r\n i = len;\r\n d.length = 1;\r\n }\r\n\r\n // Prepend zeros to equalise exponents. Note: Faster to use reverse then do unshifts.\r\n d.reverse();\r\n for (; i--;) d.push(0);\r\n d.reverse();\r\n }\r\n\r\n len = xd.length;\r\n i = yd.length;\r\n\r\n // If yd is longer than xd, swap xd and yd so xd points to the longer array.\r\n if (len - i < 0) {\r\n i = len;\r\n d = yd;\r\n yd = xd;\r\n xd = d;\r\n }\r\n\r\n // Only start adding at yd.length - 1 as the further digits of xd can be left as they are.\r\n for (carry = 0; i;) {\r\n carry = (xd[--i] = xd[i] + yd[i] + carry) / BASE | 0;\r\n xd[i] %= BASE;\r\n }\r\n\r\n if (carry) {\r\n xd.unshift(carry);\r\n ++e;\r\n }\r\n\r\n // Remove trailing zeros.\r\n // No need to check for zero, as +x + +y != 0 && -x + -y != 0\r\n for (len = xd.length; xd[--len] == 0;) xd.pop();\r\n\r\n y.d = xd;\r\n y.e = getBase10Exponent(xd, e);\r\n\r\n return external ? finalise(y, pr, rm) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return the number of significant digits of the value of this Decimal.\r\n *\r\n * [z] {boolean|number} Whether to count integer-part trailing zeros: true, false, 1 or 0.\r\n *\r\n */\r\n P.precision = P.sd = function (z) {\r\n var k,\r\n x = this;\r\n\r\n if (z !== void 0 && z !== !!z && z !== 1 && z !== 0) throw Error(invalidArgument + z);\r\n\r\n if (x.d) {\r\n k = getPrecision(x.d);\r\n if (z && x.e + 1 > k) k = x.e + 1;\r\n } else {\r\n k = NaN;\r\n }\r\n\r\n return k;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a whole number using\r\n * rounding mode `rounding`.\r\n *\r\n */\r\n P.round = function () {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n return finalise(new Ctor(x), x.e + 1, Ctor.rounding);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the sine of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-1, 1]\r\n *\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n *\r\n * sin(0) = 0\r\n * sin(-0) = -0\r\n * sin(Infinity) = NaN\r\n * sin(-Infinity) = NaN\r\n * sin(NaN) = NaN\r\n *\r\n */\r\n P.sine = P.sin = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + Math.max(x.e, x.sd()) + LOG_BASE;\r\n Ctor.rounding = 1;\r\n\r\n x = sine(Ctor, toLessThanHalfPi(Ctor, x));\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant > 2 ? x.neg() : x, pr, rm, true);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of this Decimal, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * sqrt(-n) = N\r\n * sqrt(N) = N\r\n * sqrt(-I) = N\r\n * sqrt(I) = I\r\n * sqrt(0) = 0\r\n * sqrt(-0) = -0\r\n *\r\n */\r\n P.squareRoot = P.sqrt = function () {\r\n var m, n, sd, r, rep, t,\r\n x = this,\r\n d = x.d,\r\n e = x.e,\r\n s = x.s,\r\n Ctor = x.constructor;\r\n\r\n // Negative/NaN/Infinity/zero?\r\n if (s !== 1 || !d || !d[0]) {\r\n return new Ctor(!s || s < 0 && (!d || d[0]) ? NaN : d ? x : 1 / 0);\r\n }\r\n\r\n external = false;\r\n\r\n // Initial estimate.\r\n s = Math.sqrt(+x);\r\n\r\n // Math.sqrt underflow/overflow?\r\n // Pass x to Math.sqrt as integer, then adjust the exponent of the result.\r\n if (s == 0 || s == 1 / 0) {\r\n n = digitsToString(d);\r\n\r\n if ((n.length + e) % 2 == 0) n += '0';\r\n s = Math.sqrt(n);\r\n e = mathfloor((e + 1) / 2) - (e < 0 || e % 2);\r\n\r\n if (s == 1 / 0) {\r\n n = '5e' + e;\r\n } else {\r\n n = s.toExponential();\r\n n = n.slice(0, n.indexOf('e') + 1) + e;\r\n }\r\n\r\n r = new Ctor(n);\r\n } else {\r\n r = new Ctor(s.toString());\r\n }\r\n\r\n sd = (e = Ctor.precision) + 3;\r\n\r\n // Newton-Raphson iteration.\r\n for (;;) {\r\n t = r;\r\n r = t.plus(divide(x, t, sd + 2, 1)).times(0.5);\r\n\r\n // TODO? Replace with for-loop and checkRoundingDigits.\r\n if (digitsToString(t.d).slice(0, sd) === (n = digitsToString(r.d)).slice(0, sd)) {\r\n n = n.slice(sd - 3, sd + 1);\r\n\r\n // The 4th rounding digit may be in error by -1 so if the 4 rounding digits are 9999 or\r\n // 4999, i.e. approaching a rounding boundary, continue the iteration.\r\n if (n == '9999' || !rep && n == '4999') {\r\n\r\n // On the first iteration only, check to see if rounding up gives the exact result as the\r\n // nines may infinitely repeat.\r\n if (!rep) {\r\n finalise(t, e + 1, 0);\r\n\r\n if (t.times(t).eq(x)) {\r\n r = t;\r\n break;\r\n }\r\n }\r\n\r\n sd += 4;\r\n rep = 1;\r\n } else {\r\n\r\n // If the rounding digits are null, 0{0,4} or 50{0,3}, check for an exact result.\r\n // If not, then there are further digits and m will be truthy.\r\n if (!+n || !+n.slice(1) && n.charAt(0) == '5') {\r\n\r\n // Truncate to the first rounding digit.\r\n finalise(r, e + 1, 1);\r\n m = !r.times(r).eq(x);\r\n }\r\n\r\n break;\r\n }\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return finalise(r, e, Ctor.rounding, m);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the tangent of the value in radians of this Decimal.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-Infinity, Infinity]\r\n *\r\n * tan(0) = 0\r\n * tan(-0) = -0\r\n * tan(Infinity) = NaN\r\n * tan(-Infinity) = NaN\r\n * tan(NaN) = NaN\r\n *\r\n */\r\n P.tangent = P.tan = function () {\r\n var pr, rm,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (!x.isFinite()) return new Ctor(NaN);\r\n if (x.isZero()) return new Ctor(x);\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n Ctor.precision = pr + 10;\r\n Ctor.rounding = 1;\r\n\r\n x = x.sin();\r\n x.s = 1;\r\n x = divide(x, new Ctor(1).minus(x.times(x)).sqrt(), pr + 10, 0);\r\n\r\n Ctor.precision = pr;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(quadrant == 2 || quadrant == 4 ? x.neg() : x, pr, rm, true);\r\n };\r\n\r\n\r\n /*\r\n * n * 0 = 0\r\n * n * N = N\r\n * n * I = I\r\n * 0 * n = 0\r\n * 0 * 0 = 0\r\n * 0 * N = N\r\n * 0 * I = N\r\n * N * n = N\r\n * N * 0 = N\r\n * N * N = N\r\n * N * I = N\r\n * I * n = I\r\n * I * 0 = N\r\n * I * N = N\r\n * I * I = I\r\n *\r\n * Return a new Decimal whose value is this Decimal times `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n */\r\n P.times = P.mul = function (y) {\r\n var carry, e, i, k, r, rL, t, xdL, ydL,\r\n x = this,\r\n Ctor = x.constructor,\r\n xd = x.d,\r\n yd = (y = new Ctor(y)).d;\r\n\r\n y.s *= x.s;\r\n\r\n // If either is NaN, ±Infinity or ±0...\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(!y.s || xd && !xd[0] && !yd || yd && !yd[0] && !xd\r\n\r\n // Return NaN if either is NaN.\r\n // Return NaN if x is ±0 and y is ±Infinity, or y is ±0 and x is ±Infinity.\r\n ? NaN\r\n\r\n // Return ±Infinity if either is ±Infinity.\r\n // Return ±0 if either is ±0.\r\n : !xd || !yd ? y.s / 0 : y.s * 0);\r\n }\r\n\r\n e = mathfloor(x.e / LOG_BASE) + mathfloor(y.e / LOG_BASE);\r\n xdL = xd.length;\r\n ydL = yd.length;\r\n\r\n // Ensure xd points to the longer array.\r\n if (xdL < ydL) {\r\n r = xd;\r\n xd = yd;\r\n yd = r;\r\n rL = xdL;\r\n xdL = ydL;\r\n ydL = rL;\r\n }\r\n\r\n // Initialise the result array with zeros.\r\n r = [];\r\n rL = xdL + ydL;\r\n for (i = rL; i--;) r.push(0);\r\n\r\n // Multiply!\r\n for (i = ydL; --i >= 0;) {\r\n carry = 0;\r\n for (k = xdL + i; k > i;) {\r\n t = r[k] + yd[i] * xd[k - i - 1] + carry;\r\n r[k--] = t % BASE | 0;\r\n carry = t / BASE | 0;\r\n }\r\n\r\n r[k] = (r[k] + carry) % BASE | 0;\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (; !r[--rL];) r.pop();\r\n\r\n if (carry) ++e;\r\n else r.shift();\r\n\r\n y.d = r;\r\n y.e = getBase10Exponent(r, e);\r\n\r\n return external ? finalise(y, Ctor.precision, Ctor.rounding) : y;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in base 2, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toBinary = function (sd, rm) {\r\n return toStringBinary(this, 2, sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `dp`\r\n * decimal places using rounding mode `rm` or `rounding` if `rm` is omitted.\r\n *\r\n * If `dp` is omitted, return a new Decimal whose value is the value of this Decimal.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toDecimalPlaces = P.toDP = function (dp, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n if (dp === void 0) return x;\r\n\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n return finalise(x, dp + x.e + 1, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in exponential notation rounded to\r\n * `dp` fixed decimal places using rounding mode `rounding`.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toExponential = function (dp, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x, true);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), dp + 1, rm);\r\n str = finiteToString(x, true, dp + 1);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in normal (fixed-point) notation to\r\n * `dp` fixed decimal places and rounded using rounding mode `rm` or `rounding` if `rm` is\r\n * omitted.\r\n *\r\n * As with JavaScript numbers, (-0).toFixed(0) is '0', but e.g. (-0.00001).toFixed(0) is '-0'.\r\n *\r\n * [dp] {number} Decimal places. Integer, 0 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * (-0).toFixed(0) is '0', but (-0.1).toFixed(0) is '-0'.\r\n * (-0).toFixed(1) is '0.0', but (-0.01).toFixed(1) is '-0.0'.\r\n * (-0).toFixed(3) is '0.000'.\r\n * (-0.5).toFixed(0) is '-0'.\r\n *\r\n */\r\n P.toFixed = function (dp, rm) {\r\n var str, y,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (dp === void 0) {\r\n str = finiteToString(x);\r\n } else {\r\n checkInt32(dp, 0, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n y = finalise(new Ctor(x), dp + x.e + 1, rm);\r\n str = finiteToString(y, false, dp + y.e + 1);\r\n }\r\n\r\n // To determine whether to add the minus sign look at the value before it was rounded,\r\n // i.e. look at `x` rather than `y`.\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return an array representing the value of this Decimal as a simple fraction with an integer\r\n * numerator and an integer denominator.\r\n *\r\n * The denominator will be a positive non-zero value less than or equal to the specified maximum\r\n * denominator. If a maximum denominator is not specified, the denominator will be the lowest\r\n * value necessary to represent the number exactly.\r\n *\r\n * [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity.\r\n *\r\n */\r\n P.toFraction = function (maxD) {\r\n var d, d0, d1, d2, e, k, n, n0, n1, pr, q, r,\r\n x = this,\r\n xd = x.d,\r\n Ctor = x.constructor;\r\n\r\n if (!xd) return new Ctor(x);\r\n\r\n n1 = d0 = new Ctor(1);\r\n d1 = n0 = new Ctor(0);\r\n\r\n d = new Ctor(d1);\r\n e = d.e = getPrecision(xd) - x.e - 1;\r\n k = e % LOG_BASE;\r\n d.d[0] = mathpow(10, k < 0 ? LOG_BASE + k : k);\r\n\r\n if (maxD == null) {\r\n\r\n // d is 10**e, the minimum max-denominator needed.\r\n maxD = e > 0 ? d : n1;\r\n } else {\r\n n = new Ctor(maxD);\r\n if (!n.isInt() || n.lt(n1)) throw Error(invalidArgument + n);\r\n maxD = n.gt(d) ? (e > 0 ? d : n1) : n;\r\n }\r\n\r\n external = false;\r\n n = new Ctor(digitsToString(xd));\r\n pr = Ctor.precision;\r\n Ctor.precision = e = xd.length * LOG_BASE * 2;\r\n\r\n for (;;) {\r\n q = divide(n, d, 0, 1, 1);\r\n d2 = d0.plus(q.times(d1));\r\n if (d2.cmp(maxD) == 1) break;\r\n d0 = d1;\r\n d1 = d2;\r\n d2 = n1;\r\n n1 = n0.plus(q.times(d2));\r\n n0 = d2;\r\n d2 = d;\r\n d = n.minus(q.times(d2));\r\n n = d2;\r\n }\r\n\r\n d2 = divide(maxD.minus(d0), d1, 0, 1, 1);\r\n n0 = n0.plus(d2.times(n1));\r\n d0 = d0.plus(d2.times(d1));\r\n n0.s = n1.s = x.s;\r\n\r\n // Determine which fraction is closer to x, n0/d0 or n1/d1?\r\n r = divide(n1, d1, e, 1).minus(x).abs().cmp(divide(n0, d0, e, 1).minus(x).abs()) < 1\r\n ? [n1, d1] : [n0, d0];\r\n\r\n Ctor.precision = pr;\r\n external = true;\r\n\r\n return r;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in base 16, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toHexadecimal = P.toHex = function (sd, rm) {\r\n return toStringBinary(this, 16, sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Returns a new Decimal whose value is the nearest multiple of `y` in the direction of rounding\r\n * mode `rm`, or `Decimal.rounding` if `rm` is omitted, to the value of this Decimal.\r\n *\r\n * The return value will always have the same sign as this Decimal, unless either this Decimal\r\n * or `y` is NaN, in which case the return value will be also be NaN.\r\n *\r\n * The return value is not affected by the value of `precision`.\r\n *\r\n * y {number|string|Decimal} The magnitude to round to a multiple of.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toNearest() rounding mode not an integer: {rm}'\r\n * 'toNearest() rounding mode out of range: {rm}'\r\n *\r\n */\r\n P.toNearest = function (y, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n x = new Ctor(x);\r\n\r\n if (y == null) {\r\n\r\n // If x is not finite, return x.\r\n if (!x.d) return x;\r\n\r\n y = new Ctor(1);\r\n rm = Ctor.rounding;\r\n } else {\r\n y = new Ctor(y);\r\n if (rm === void 0) {\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(rm, 0, 8);\r\n }\r\n\r\n // If x is not finite, return x if y is not NaN, else NaN.\r\n if (!x.d) return y.s ? x : y;\r\n\r\n // If y is not finite, return Infinity with the sign of x if y is Infinity, else NaN.\r\n if (!y.d) {\r\n if (y.s) y.s = x.s;\r\n return y;\r\n }\r\n }\r\n\r\n // If y is not zero, calculate the nearest multiple of y to x.\r\n if (y.d[0]) {\r\n external = false;\r\n x = divide(x, y, 0, rm, 1).times(y);\r\n external = true;\r\n finalise(x);\r\n\r\n // If y is zero, return zero with the sign of x.\r\n } else {\r\n y.s = x.s;\r\n x = y;\r\n }\r\n\r\n return x;\r\n };\r\n\r\n\r\n /*\r\n * Return the value of this Decimal converted to a number primitive.\r\n * Zero keeps its sign.\r\n *\r\n */\r\n P.toNumber = function () {\r\n return +this;\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal in base 8, round to `sd` significant\r\n * digits using rounding mode `rm`.\r\n *\r\n * If the optional `sd` argument is present then return binary exponential notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toOctal = function (sd, rm) {\r\n return toStringBinary(this, 8, sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal raised to the power `y`, rounded\r\n * to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * ECMAScript compliant.\r\n *\r\n * pow(x, NaN) = NaN\r\n * pow(x, ±0) = 1\r\n\r\n * pow(NaN, non-zero) = NaN\r\n * pow(abs(x) > 1, +Infinity) = +Infinity\r\n * pow(abs(x) > 1, -Infinity) = +0\r\n * pow(abs(x) == 1, ±Infinity) = NaN\r\n * pow(abs(x) < 1, +Infinity) = +0\r\n * pow(abs(x) < 1, -Infinity) = +Infinity\r\n * pow(+Infinity, y > 0) = +Infinity\r\n * pow(+Infinity, y < 0) = +0\r\n * pow(-Infinity, odd integer > 0) = -Infinity\r\n * pow(-Infinity, even integer > 0) = +Infinity\r\n * pow(-Infinity, odd integer < 0) = -0\r\n * pow(-Infinity, even integer < 0) = +0\r\n * pow(+0, y > 0) = +0\r\n * pow(+0, y < 0) = +Infinity\r\n * pow(-0, odd integer > 0) = -0\r\n * pow(-0, even integer > 0) = +0\r\n * pow(-0, odd integer < 0) = -Infinity\r\n * pow(-0, even integer < 0) = +Infinity\r\n * pow(finite x < 0, finite non-integer) = NaN\r\n *\r\n * For non-integer or very large exponents pow(x, y) is calculated using\r\n *\r\n * x^y = exp(y*ln(x))\r\n *\r\n * Assuming the first 15 rounding digits are each equally likely to be any digit 0-9, the\r\n * probability of an incorrectly rounded result\r\n * P([49]9{14} | [50]0{14}) = 2 * 0.2 * 10^-14 = 4e-15 = 1/2.5e+14\r\n * i.e. 1 in 250,000,000,000,000\r\n *\r\n * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).\r\n *\r\n * y {number|string|Decimal} The power to which to raise this Decimal.\r\n *\r\n */\r\n P.toPower = P.pow = function (y) {\r\n var e, k, pr, r, rm, s,\r\n x = this,\r\n Ctor = x.constructor,\r\n yn = +(y = new Ctor(y));\r\n\r\n // Either ±Infinity, NaN or ±0?\r\n if (!x.d || !y.d || !x.d[0] || !y.d[0]) return new Ctor(mathpow(+x, yn));\r\n\r\n x = new Ctor(x);\r\n\r\n if (x.eq(1)) return x;\r\n\r\n pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n\r\n if (y.eq(1)) return finalise(x, pr, rm);\r\n\r\n // y exponent\r\n e = mathfloor(y.e / LOG_BASE);\r\n\r\n // If y is a small integer use the 'exponentiation by squaring' algorithm.\r\n if (e >= y.d.length - 1 && (k = yn < 0 ? -yn : yn) <= MAX_SAFE_INTEGER) {\r\n r = intPow(Ctor, x, k, pr);\r\n return y.s < 0 ? new Ctor(1).div(r) : finalise(r, pr, rm);\r\n }\r\n\r\n s = x.s;\r\n\r\n // if x is negative\r\n if (s < 0) {\r\n\r\n // if y is not an integer\r\n if (e < y.d.length - 1) return new Ctor(NaN);\r\n\r\n // Result is positive if x is negative and the last digit of integer y is even.\r\n if ((y.d[e] & 1) == 0) s = 1;\r\n\r\n // if x.eq(-1)\r\n if (x.e == 0 && x.d[0] == 1 && x.d.length == 1) {\r\n x.s = s;\r\n return x;\r\n }\r\n }\r\n\r\n // Estimate result exponent.\r\n // x^y = 10^e, where e = y * log10(x)\r\n // log10(x) = log10(x_significand) + x_exponent\r\n // log10(x_significand) = ln(x_significand) / ln(10)\r\n k = mathpow(+x, yn);\r\n e = k == 0 || !isFinite(k)\r\n ? mathfloor(yn * (Math.log('0.' + digitsToString(x.d)) / Math.LN10 + x.e + 1))\r\n : new Ctor(k + '').e;\r\n\r\n // Exponent estimate may be incorrect e.g. x: 0.999999999999999999, y: 2.29, e: 0, r.e: -1.\r\n\r\n // Overflow/underflow?\r\n if (e > Ctor.maxE + 1 || e < Ctor.minE - 1) return new Ctor(e > 0 ? s / 0 : 0);\r\n\r\n external = false;\r\n Ctor.rounding = x.s = 1;\r\n\r\n // Estimate the extra guard digits needed to ensure five correct rounding digits from\r\n // naturalLogarithm(x). Example of failure without these extra digits (precision: 10):\r\n // new Decimal(2.32456).pow('2087987436534566.46411')\r\n // should be 1.162377823e+764914905173815, but is 1.162355823e+764914905173815\r\n k = Math.min(12, (e + '').length);\r\n\r\n // r = x^y = exp(y*ln(x))\r\n r = naturalExponential(y.times(naturalLogarithm(x, pr + k)), pr);\r\n\r\n // r may be Infinity, e.g. (0.9999999999999999).pow(-1e+40)\r\n if (r.d) {\r\n\r\n // Truncate to the required precision plus five rounding digits.\r\n r = finalise(r, pr + 5, 1);\r\n\r\n // If the rounding digits are [49]9999 or [50]0000 increase the precision by 10 and recalculate\r\n // the result.\r\n if (checkRoundingDigits(r.d, pr, rm)) {\r\n e = pr + 10;\r\n\r\n // Truncate to the increased precision plus five rounding digits.\r\n r = finalise(naturalExponential(y.times(naturalLogarithm(x, e + k)), e), e + 5, 1);\r\n\r\n // Check for 14 nines from the 2nd rounding digit (the first rounding digit may be 4 or 9).\r\n if (+digitsToString(r.d).slice(pr + 1, pr + 15) + 1 == 1e14) {\r\n r = finalise(r, pr + 1, 0);\r\n }\r\n }\r\n }\r\n\r\n r.s = s;\r\n external = true;\r\n Ctor.rounding = rm;\r\n\r\n return finalise(r, pr, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal rounded to `sd` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * Return exponential notation if `sd` is less than the number of digits necessary to represent\r\n * the integer part of the value in normal notation.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n */\r\n P.toPrecision = function (sd, rm) {\r\n var str,\r\n x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n\r\n x = finalise(new Ctor(x), sd, rm);\r\n str = finiteToString(x, sd <= x.e || x.e <= Ctor.toExpNeg, sd);\r\n }\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal rounded to a maximum of `sd`\r\n * significant digits using rounding mode `rm`, or to `precision` and `rounding` respectively if\r\n * omitted.\r\n *\r\n * [sd] {number} Significant digits. Integer, 1 to MAX_DIGITS inclusive.\r\n * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.\r\n *\r\n * 'toSD() digits out of range: {sd}'\r\n * 'toSD() digits not an integer: {sd}'\r\n * 'toSD() rounding mode not an integer: {rm}'\r\n * 'toSD() rounding mode out of range: {rm}'\r\n *\r\n */\r\n P.toSignificantDigits = P.toSD = function (sd, rm) {\r\n var x = this,\r\n Ctor = x.constructor;\r\n\r\n if (sd === void 0) {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n }\r\n\r\n return finalise(new Ctor(x), sd, rm);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n *\r\n * Return exponential notation if this Decimal has a positive exponent equal to or greater than\r\n * `toExpPos`, or a negative exponent equal to or less than `toExpNeg`.\r\n *\r\n */\r\n P.toString = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() && !x.isZero() ? '-' + str : str;\r\n };\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of this Decimal truncated to a whole number.\r\n *\r\n */\r\n P.truncated = P.trunc = function () {\r\n return finalise(new this.constructor(this), this.e + 1, 1);\r\n };\r\n\r\n\r\n /*\r\n * Return a string representing the value of this Decimal.\r\n * Unlike `toString`, negative zero will include the minus sign.\r\n *\r\n */\r\n P.valueOf = P.toJSON = function () {\r\n var x = this,\r\n Ctor = x.constructor,\r\n str = finiteToString(x, x.e <= Ctor.toExpNeg || x.e >= Ctor.toExpPos);\r\n\r\n return x.isNeg() ? '-' + str : str;\r\n };\r\n\r\n\r\n // Helper functions for Decimal.prototype (P) and/or Decimal methods, and their callers.\r\n\r\n\r\n /*\r\n * digitsToString P.cubeRoot, P.logarithm, P.squareRoot, P.toFraction, P.toPower,\r\n * finiteToString, naturalExponential, naturalLogarithm\r\n * checkInt32 P.toDecimalPlaces, P.toExponential, P.toFixed, P.toNearest,\r\n * P.toPrecision, P.toSignificantDigits, toStringBinary, random\r\n * checkRoundingDigits P.logarithm, P.toPower, naturalExponential, naturalLogarithm\r\n * convertBase toStringBinary, parseOther\r\n * cos P.cos\r\n * divide P.atanh, P.cubeRoot, P.dividedBy, P.dividedToIntegerBy,\r\n * P.logarithm, P.modulo, P.squareRoot, P.tan, P.tanh, P.toFraction,\r\n * P.toNearest, toStringBinary, naturalExponential, naturalLogarithm,\r\n * taylorSeries, atan2, parseOther\r\n * finalise P.absoluteValue, P.atan, P.atanh, P.ceil, P.cos, P.cosh,\r\n * P.cubeRoot, P.dividedToIntegerBy, P.floor, P.logarithm, P.minus,\r\n * P.modulo, P.negated, P.plus, P.round, P.sin, P.sinh, P.squareRoot,\r\n * P.tan, P.times, P.toDecimalPlaces, P.toExponential, P.toFixed,\r\n * P.toNearest, P.toPower, P.toPrecision, P.toSignificantDigits,\r\n * P.truncated, divide, getLn10, getPi, naturalExponential,\r\n * naturalLogarithm, ceil, floor, round, trunc\r\n * finiteToString P.toExponential, P.toFixed, P.toPrecision, P.toString, P.valueOf,\r\n * toStringBinary\r\n * getBase10Exponent P.minus, P.plus, P.times, parseOther\r\n * getLn10 P.logarithm, naturalLogarithm\r\n * getPi P.acos, P.asin, P.atan, toLessThanHalfPi, atan2\r\n * getPrecision P.precision, P.toFraction\r\n * getZeroString digitsToString, finiteToString\r\n * intPow P.toPower, parseOther\r\n * isOdd toLessThanHalfPi\r\n * maxOrMin max, min\r\n * naturalExponential P.naturalExponential, P.toPower\r\n * naturalLogarithm P.acosh, P.asinh, P.atanh, P.logarithm, P.naturalLogarithm,\r\n * P.toPower, naturalExponential\r\n * nonFiniteToString finiteToString, toStringBinary\r\n * parseDecimal Decimal\r\n * parseOther Decimal\r\n * sin P.sin\r\n * taylorSeries P.cosh, P.sinh, cos, sin\r\n * toLessThanHalfPi P.cos, P.sin\r\n * toStringBinary P.toBinary, P.toHexadecimal, P.toOctal\r\n * truncate intPow\r\n *\r\n * Throws: P.logarithm, P.precision, P.toFraction, checkInt32, getLn10, getPi,\r\n * naturalLogarithm, config, parseOther, random, Decimal\r\n */\r\n\r\n\r\n function digitsToString(d) {\r\n var i, k, ws,\r\n indexOfLastWord = d.length - 1,\r\n str = '',\r\n w = d[0];\r\n\r\n if (indexOfLastWord > 0) {\r\n str += w;\r\n for (i = 1; i < indexOfLastWord; i++) {\r\n ws = d[i] + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n str += ws;\r\n }\r\n\r\n w = d[i];\r\n ws = w + '';\r\n k = LOG_BASE - ws.length;\r\n if (k) str += getZeroString(k);\r\n } else if (w === 0) {\r\n return '0';\r\n }\r\n\r\n // Remove trailing zeros of last w.\r\n for (; w % 10 === 0;) w /= 10;\r\n\r\n return str + w;\r\n }\r\n\r\n\r\n function checkInt32(i, min, max) {\r\n if (i !== ~~i || i < min || i > max) {\r\n throw Error(invalidArgument + i);\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Check 5 rounding digits if `repeating` is null, 4 otherwise.\r\n * `repeating == null` if caller is `log` or `pow`,\r\n * `repeating != null` if caller is `naturalLogarithm` or `naturalExponential`.\r\n */\r\n function checkRoundingDigits(d, i, rm, repeating) {\r\n var di, k, r, rd;\r\n\r\n // Get the length of the first word of the array d.\r\n for (k = d[0]; k >= 10; k /= 10) --i;\r\n\r\n // Is the rounding digit in the first word of d?\r\n if (--i < 0) {\r\n i += LOG_BASE;\r\n di = 0;\r\n } else {\r\n di = Math.ceil((i + 1) / LOG_BASE);\r\n i %= LOG_BASE;\r\n }\r\n\r\n // i is the index (0 - 6) of the rounding digit.\r\n // E.g. if within the word 3487563 the first rounding digit is 5,\r\n // then i = 4, k = 1000, rd = 3487563 % 1000 = 563\r\n k = mathpow(10, LOG_BASE - i);\r\n rd = d[di] % k | 0;\r\n\r\n if (repeating == null) {\r\n if (i < 3) {\r\n if (i == 0) rd = rd / 100 | 0;\r\n else if (i == 1) rd = rd / 10 | 0;\r\n r = rm < 4 && rd == 99999 || rm > 3 && rd == 49999 || rd == 50000 || rd == 0;\r\n } else {\r\n r = (rm < 4 && rd + 1 == k || rm > 3 && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 100 | 0) == mathpow(10, i - 2) - 1 ||\r\n (rd == k / 2 || rd == 0) && (d[di + 1] / k / 100 | 0) == 0;\r\n }\r\n } else {\r\n if (i < 4) {\r\n if (i == 0) rd = rd / 1000 | 0;\r\n else if (i == 1) rd = rd / 100 | 0;\r\n else if (i == 2) rd = rd / 10 | 0;\r\n r = (repeating || rm < 4) && rd == 9999 || !repeating && rm > 3 && rd == 4999;\r\n } else {\r\n r = ((repeating || rm < 4) && rd + 1 == k ||\r\n (!repeating && rm > 3) && rd + 1 == k / 2) &&\r\n (d[di + 1] / k / 1000 | 0) == mathpow(10, i - 3) - 1;\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n\r\n // Convert string of `baseIn` to an array of numbers of `baseOut`.\r\n // Eg. convertBase('255', 10, 16) returns [15, 15].\r\n // Eg. convertBase('ff', 16, 10) returns [2, 5, 5].\r\n function convertBase(str, baseIn, baseOut) {\r\n var j,\r\n arr = [0],\r\n arrL,\r\n i = 0,\r\n strL = str.length;\r\n\r\n for (; i < strL;) {\r\n for (arrL = arr.length; arrL--;) arr[arrL] *= baseIn;\r\n arr[0] += NUMERALS.indexOf(str.charAt(i++));\r\n for (j = 0; j < arr.length; j++) {\r\n if (arr[j] > baseOut - 1) {\r\n if (arr[j + 1] === void 0) arr[j + 1] = 0;\r\n arr[j + 1] += arr[j] / baseOut | 0;\r\n arr[j] %= baseOut;\r\n }\r\n }\r\n }\r\n\r\n return arr.reverse();\r\n }\r\n\r\n\r\n /*\r\n * cos(x) = 1 - x^2/2! + x^4/4! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\n function cosine(Ctor, x) {\r\n var k, len, y;\r\n\r\n if (x.isZero()) return x;\r\n\r\n // Argument reduction: cos(4x) = 8*(cos^4(x) - cos^2(x)) + 1\r\n // i.e. cos(x) = 8*(cos^4(x/4) - cos^2(x/4)) + 1\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n len = x.d.length;\r\n if (len < 32) {\r\n k = Math.ceil(len / 3);\r\n y = (1 / tinyPow(4, k)).toString();\r\n } else {\r\n k = 16;\r\n y = '2.3283064365386962890625e-10';\r\n }\r\n\r\n Ctor.precision += k;\r\n\r\n x = taylorSeries(Ctor, 1, x.times(y), new Ctor(1));\r\n\r\n // Reverse argument reduction\r\n for (var i = k; i--;) {\r\n var cos2x = x.times(x);\r\n x = cos2x.times(cos2x).minus(cos2x).times(8).plus(1);\r\n }\r\n\r\n Ctor.precision -= k;\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Perform division in the specified base.\r\n */\r\n var divide = (function () {\r\n\r\n // Assumes non-zero x and k, and hence non-zero result.\r\n function multiplyInteger(x, k, base) {\r\n var temp,\r\n carry = 0,\r\n i = x.length;\r\n\r\n for (x = x.slice(); i--;) {\r\n temp = x[i] * k + carry;\r\n x[i] = temp % base | 0;\r\n carry = temp / base | 0;\r\n }\r\n\r\n if (carry) x.unshift(carry);\r\n\r\n return x;\r\n }\r\n\r\n function compare(a, b, aL, bL) {\r\n var i, r;\r\n\r\n if (aL != bL) {\r\n r = aL > bL ? 1 : -1;\r\n } else {\r\n for (i = r = 0; i < aL; i++) {\r\n if (a[i] != b[i]) {\r\n r = a[i] > b[i] ? 1 : -1;\r\n break;\r\n }\r\n }\r\n }\r\n\r\n return r;\r\n }\r\n\r\n function subtract(a, b, aL, base) {\r\n var i = 0;\r\n\r\n // Subtract b from a.\r\n for (; aL--;) {\r\n a[aL] -= i;\r\n i = a[aL] < b[aL] ? 1 : 0;\r\n a[aL] = i * base + a[aL] - b[aL];\r\n }\r\n\r\n // Remove leading zeros.\r\n for (; !a[0] && a.length > 1;) a.shift();\r\n }\r\n\r\n return function (x, y, pr, rm, dp, base) {\r\n var cmp, e, i, k, logBase, more, prod, prodL, q, qd, rem, remL, rem0, sd, t, xi, xL, yd0,\r\n yL, yz,\r\n Ctor = x.constructor,\r\n sign = x.s == y.s ? 1 : -1,\r\n xd = x.d,\r\n yd = y.d;\r\n\r\n // Either NaN, Infinity or 0?\r\n if (!xd || !xd[0] || !yd || !yd[0]) {\r\n\r\n return new Ctor(// Return NaN if either NaN, or both Infinity or 0.\r\n !x.s || !y.s || (xd ? yd && xd[0] == yd[0] : !yd) ? NaN :\r\n\r\n // Return ±0 if x is 0 or y is ±Infinity, or return ±Infinity as y is 0.\r\n xd && xd[0] == 0 || !yd ? sign * 0 : sign / 0);\r\n }\r\n\r\n if (base) {\r\n logBase = 1;\r\n e = x.e - y.e;\r\n } else {\r\n base = BASE;\r\n logBase = LOG_BASE;\r\n e = mathfloor(x.e / logBase) - mathfloor(y.e / logBase);\r\n }\r\n\r\n yL = yd.length;\r\n xL = xd.length;\r\n q = new Ctor(sign);\r\n qd = q.d = [];\r\n\r\n // Result exponent may be one less than e.\r\n // The digit array of a Decimal from toStringBinary may have trailing zeros.\r\n for (i = 0; yd[i] == (xd[i] || 0); i++);\r\n\r\n if (yd[i] > (xd[i] || 0)) e--;\r\n\r\n if (pr == null) {\r\n sd = pr = Ctor.precision;\r\n rm = Ctor.rounding;\r\n } else if (dp) {\r\n sd = pr + (x.e - y.e) + 1;\r\n } else {\r\n sd = pr;\r\n }\r\n\r\n if (sd < 0) {\r\n qd.push(1);\r\n more = true;\r\n } else {\r\n\r\n // Convert precision in number of base 10 digits to base 1e7 digits.\r\n sd = sd / logBase + 2 | 0;\r\n i = 0;\r\n\r\n // divisor < 1e7\r\n if (yL == 1) {\r\n k = 0;\r\n yd = yd[0];\r\n sd++;\r\n\r\n // k is the carry.\r\n for (; (i < xL || k) && sd--; i++) {\r\n t = k * base + (xd[i] || 0);\r\n qd[i] = t / yd | 0;\r\n k = t % yd | 0;\r\n }\r\n\r\n more = k || i < xL;\r\n\r\n // divisor >= 1e7\r\n } else {\r\n\r\n // Normalise xd and yd so highest order digit of yd is >= base/2\r\n k = base / (yd[0] + 1) | 0;\r\n\r\n if (k > 1) {\r\n yd = multiplyInteger(yd, k, base);\r\n xd = multiplyInteger(xd, k, base);\r\n yL = yd.length;\r\n xL = xd.length;\r\n }\r\n\r\n xi = yL;\r\n rem = xd.slice(0, yL);\r\n remL = rem.length;\r\n\r\n // Add zeros to make remainder as long as divisor.\r\n for (; remL < yL;) rem[remL++] = 0;\r\n\r\n yz = yd.slice();\r\n yz.unshift(0);\r\n yd0 = yd[0];\r\n\r\n if (yd[1] >= base / 2) ++yd0;\r\n\r\n do {\r\n k = 0;\r\n\r\n // Compare divisor and remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < remainder.\r\n if (cmp < 0) {\r\n\r\n // Calculate trial digit, k.\r\n rem0 = rem[0];\r\n if (yL != remL) rem0 = rem0 * base + (rem[1] || 0);\r\n\r\n // k will be how many times the divisor goes into the current remainder.\r\n k = rem0 / yd0 | 0;\r\n\r\n // Algorithm:\r\n // 1. product = divisor * trial digit (k)\r\n // 2. if product > remainder: product -= divisor, k--\r\n // 3. remainder -= product\r\n // 4. if product was < remainder at 2:\r\n // 5. compare new remainder and divisor\r\n // 6. If remainder > divisor: remainder -= divisor, k++\r\n\r\n if (k > 1) {\r\n if (k >= base) k = base - 1;\r\n\r\n // product = divisor * trial digit.\r\n prod = multiplyInteger(yd, k, base);\r\n prodL = prod.length;\r\n remL = rem.length;\r\n\r\n // Compare product and remainder.\r\n cmp = compare(prod, rem, prodL, remL);\r\n\r\n // product > remainder.\r\n if (cmp == 1) {\r\n k--;\r\n\r\n // Subtract divisor from product.\r\n subtract(prod, yL < prodL ? yz : yd, prodL, base);\r\n }\r\n } else {\r\n\r\n // cmp is -1.\r\n // If k is 0, there is no need to compare yd and rem again below, so change cmp to 1\r\n // to avoid it. If k is 1 there is a need to compare yd and rem again below.\r\n if (k == 0) cmp = k = 1;\r\n prod = yd.slice();\r\n }\r\n\r\n prodL = prod.length;\r\n if (prodL < remL) prod.unshift(0);\r\n\r\n // Subtract product from remainder.\r\n subtract(rem, prod, remL, base);\r\n\r\n // If product was < previous remainder.\r\n if (cmp == -1) {\r\n remL = rem.length;\r\n\r\n // Compare divisor and new remainder.\r\n cmp = compare(yd, rem, yL, remL);\r\n\r\n // If divisor < new remainder, subtract divisor from remainder.\r\n if (cmp < 1) {\r\n k++;\r\n\r\n // Subtract divisor from remainder.\r\n subtract(rem, yL < remL ? yz : yd, remL, base);\r\n }\r\n }\r\n\r\n remL = rem.length;\r\n } else if (cmp === 0) {\r\n k++;\r\n rem = [0];\r\n } // if cmp === 1, k will be 0\r\n\r\n // Add the next digit, k, to the result array.\r\n qd[i++] = k;\r\n\r\n // Update the remainder.\r\n if (cmp && rem[0]) {\r\n rem[remL++] = xd[xi] || 0;\r\n } else {\r\n rem = [xd[xi]];\r\n remL = 1;\r\n }\r\n\r\n } while ((xi++ < xL || rem[0] !== void 0) && sd--);\r\n\r\n more = rem[0] !== void 0;\r\n }\r\n\r\n // Leading zero?\r\n if (!qd[0]) qd.shift();\r\n }\r\n\r\n // logBase is 1 when divide is being used for base conversion.\r\n if (logBase == 1) {\r\n q.e = e;\r\n inexact = more;\r\n } else {\r\n\r\n // To calculate q.e, first get the number of digits of qd[0].\r\n for (i = 1, k = qd[0]; k >= 10; k /= 10) i++;\r\n q.e = i + e * logBase - 1;\r\n\r\n finalise(q, dp ? pr + q.e + 1 : pr, rm, more);\r\n }\r\n\r\n return q;\r\n };\r\n })();\r\n\r\n\r\n /*\r\n * Round `x` to `sd` significant digits using rounding mode `rm`.\r\n * Check for over/under-flow.\r\n */\r\n function finalise(x, sd, rm, isTruncated) {\r\n var digits, i, j, k, rd, roundUp, w, xd, xdi,\r\n Ctor = x.constructor;\r\n\r\n // Don't round if sd is null or undefined.\r\n out: if (sd != null) {\r\n xd = x.d;\r\n\r\n // Infinity/NaN.\r\n if (!xd) return x;\r\n\r\n // rd: the rounding digit, i.e. the digit after the digit that may be rounded up.\r\n // w: the word of xd containing rd, a base 1e7 number.\r\n // xdi: the index of w within xd.\r\n // digits: the number of digits of w.\r\n // i: what would be the index of rd within w if all the numbers were 7 digits long (i.e. if\r\n // they had leading zeros)\r\n // j: if > 0, the actual index of rd within w (if < 0, rd is a leading zero).\r\n\r\n // Get the length of the first word of the digits array xd.\r\n for (digits = 1, k = xd[0]; k >= 10; k /= 10) digits++;\r\n i = sd - digits;\r\n\r\n // Is the rounding digit in the first word of xd?\r\n if (i < 0) {\r\n i += LOG_BASE;\r\n j = sd;\r\n w = xd[xdi = 0];\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = w / mathpow(10, digits - j - 1) % 10 | 0;\r\n } else {\r\n xdi = Math.ceil((i + 1) / LOG_BASE);\r\n k = xd.length;\r\n if (xdi >= k) {\r\n if (isTruncated) {\r\n\r\n // Needed by `naturalExponential`, `naturalLogarithm` and `squareRoot`.\r\n for (; k++ <= xdi;) xd.push(0);\r\n w = rd = 0;\r\n digits = 1;\r\n i %= LOG_BASE;\r\n j = i - LOG_BASE + 1;\r\n } else {\r\n break out;\r\n }\r\n } else {\r\n w = k = xd[xdi];\r\n\r\n // Get the number of digits of w.\r\n for (digits = 1; k >= 10; k /= 10) digits++;\r\n\r\n // Get the index of rd within w.\r\n i %= LOG_BASE;\r\n\r\n // Get the index of rd within w, adjusted for leading zeros.\r\n // The number of leading zeros of w is given by LOG_BASE - digits.\r\n j = i - LOG_BASE + digits;\r\n\r\n // Get the rounding digit at index j of w.\r\n rd = j < 0 ? 0 : w / mathpow(10, digits - j - 1) % 10 | 0;\r\n }\r\n }\r\n\r\n // Are there any non-zero digits after the rounding digit?\r\n isTruncated = isTruncated || sd < 0 ||\r\n xd[xdi + 1] !== void 0 || (j < 0 ? w : w % mathpow(10, digits - j - 1));\r\n\r\n // The expression `w % mathpow(10, digits - j - 1)` returns all the digits of w to the right\r\n // of the digit at (left-to-right) index j, e.g. if w is 908714 and j is 2, the expression\r\n // will give 714.\r\n\r\n roundUp = rm < 4\r\n ? (rd || isTruncated) && (rm == 0 || rm == (x.s < 0 ? 3 : 2))\r\n : rd > 5 || rd == 5 && (rm == 4 || isTruncated || rm == 6 &&\r\n\r\n // Check whether the digit to the left of the rounding digit is odd.\r\n ((i > 0 ? j > 0 ? w / mathpow(10, digits - j) : 0 : xd[xdi - 1]) % 10) & 1 ||\r\n rm == (x.s < 0 ? 8 : 7));\r\n\r\n if (sd < 1 || !xd[0]) {\r\n xd.length = 0;\r\n if (roundUp) {\r\n\r\n // Convert sd to decimal places.\r\n sd -= x.e + 1;\r\n\r\n // 1, 0.1, 0.01, 0.001, 0.0001 etc.\r\n xd[0] = mathpow(10, (LOG_BASE - sd % LOG_BASE) % LOG_BASE);\r\n x.e = -sd || 0;\r\n } else {\r\n\r\n // Zero.\r\n xd[0] = x.e = 0;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n // Remove excess digits.\r\n if (i == 0) {\r\n xd.length = xdi;\r\n k = 1;\r\n xdi--;\r\n } else {\r\n xd.length = xdi + 1;\r\n k = mathpow(10, LOG_BASE - i);\r\n\r\n // E.g. 56700 becomes 56000 if 7 is the rounding digit.\r\n // j > 0 means i > number of leading zeros of w.\r\n xd[xdi] = j > 0 ? (w / mathpow(10, digits - j) % mathpow(10, j) | 0) * k : 0;\r\n }\r\n\r\n if (roundUp) {\r\n for (;;) {\r\n\r\n // Is the digit to be rounded up in the first word of xd?\r\n if (xdi == 0) {\r\n\r\n // i will be the length of xd[0] before k is added.\r\n for (i = 1, j = xd[0]; j >= 10; j /= 10) i++;\r\n j = xd[0] += k;\r\n for (k = 1; j >= 10; j /= 10) k++;\r\n\r\n // if i != k the length has increased.\r\n if (i != k) {\r\n x.e++;\r\n if (xd[0] == BASE) xd[0] = 1;\r\n }\r\n\r\n break;\r\n } else {\r\n xd[xdi] += k;\r\n if (xd[xdi] != BASE) break;\r\n xd[xdi--] = 0;\r\n k = 1;\r\n }\r\n }\r\n }\r\n\r\n // Remove trailing zeros.\r\n for (i = xd.length; xd[--i] === 0;) xd.pop();\r\n }\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > Ctor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < Ctor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // Ctor.underflow = true;\r\n } // else Ctor.underflow = false;\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n function finiteToString(x, isExp, sd) {\r\n if (!x.isFinite()) return nonFiniteToString(x);\r\n var k,\r\n e = x.e,\r\n str = digitsToString(x.d),\r\n len = str.length;\r\n\r\n if (isExp) {\r\n if (sd && (k = sd - len) > 0) {\r\n str = str.charAt(0) + '.' + str.slice(1) + getZeroString(k);\r\n } else if (len > 1) {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n\r\n str = str + (x.e < 0 ? 'e' : 'e+') + x.e;\r\n } else if (e < 0) {\r\n str = '0.' + getZeroString(-e - 1) + str;\r\n if (sd && (k = sd - len) > 0) str += getZeroString(k);\r\n } else if (e >= len) {\r\n str += getZeroString(e + 1 - len);\r\n if (sd && (k = sd - e - 1) > 0) str = str + '.' + getZeroString(k);\r\n } else {\r\n if ((k = e + 1) < len) str = str.slice(0, k) + '.' + str.slice(k);\r\n if (sd && (k = sd - len) > 0) {\r\n if (e + 1 === len) str += '.';\r\n str += getZeroString(k);\r\n }\r\n }\r\n\r\n return str;\r\n }\r\n\r\n\r\n // Calculate the base 10 exponent from the base 1e7 exponent.\r\n function getBase10Exponent(digits, e) {\r\n var w = digits[0];\r\n\r\n // Add the number of digits of the first word of the digits array.\r\n for ( e *= LOG_BASE; w >= 10; w /= 10) e++;\r\n return e;\r\n }\r\n\r\n\r\n function getLn10(Ctor, sd, pr) {\r\n if (sd > LN10_PRECISION) {\r\n\r\n // Reset global state in case the exception is caught.\r\n external = true;\r\n if (pr) Ctor.precision = pr;\r\n throw Error(precisionLimitExceeded);\r\n }\r\n return finalise(new Ctor(LN10), sd, 1, true);\r\n }\r\n\r\n\r\n function getPi(Ctor, sd, rm) {\r\n if (sd > PI_PRECISION) throw Error(precisionLimitExceeded);\r\n return finalise(new Ctor(PI), sd, rm, true);\r\n }\r\n\r\n\r\n function getPrecision(digits) {\r\n var w = digits.length - 1,\r\n len = w * LOG_BASE + 1;\r\n\r\n w = digits[w];\r\n\r\n // If non-zero...\r\n if (w) {\r\n\r\n // Subtract the number of trailing zeros of the last word.\r\n for (; w % 10 == 0; w /= 10) len--;\r\n\r\n // Add the number of digits of the first word.\r\n for (w = digits[0]; w >= 10; w /= 10) len++;\r\n }\r\n\r\n return len;\r\n }\r\n\r\n\r\n function getZeroString(k) {\r\n var zs = '';\r\n for (; k--;) zs += '0';\r\n return zs;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the value of Decimal `x` to the power `n`, where `n` is an\r\n * integer of type number.\r\n *\r\n * Implements 'exponentiation by squaring'. Called by `pow` and `parseOther`.\r\n *\r\n */\r\n function intPow(Ctor, x, n, pr) {\r\n var isTruncated,\r\n r = new Ctor(1),\r\n\r\n // Max n of 9007199254740991 takes 53 loop iterations.\r\n // Maximum digits array length; leaves [28, 34] guard digits.\r\n k = Math.ceil(pr / LOG_BASE + 4);\r\n\r\n external = false;\r\n\r\n for (;;) {\r\n if (n % 2) {\r\n r = r.times(x);\r\n if (truncate(r.d, k)) isTruncated = true;\r\n }\r\n\r\n n = mathfloor(n / 2);\r\n if (n === 0) {\r\n\r\n // To ensure correct rounding when r.d is truncated, increment the last word if it is zero.\r\n n = r.d.length - 1;\r\n if (isTruncated && r.d[n] === 0) ++r.d[n];\r\n break;\r\n }\r\n\r\n x = x.times(x);\r\n truncate(x.d, k);\r\n }\r\n\r\n external = true;\r\n\r\n return r;\r\n }\r\n\r\n\r\n function isOdd(n) {\r\n return n.d[n.d.length - 1] & 1;\r\n }\r\n\r\n\r\n /*\r\n * Handle `max` and `min`. `ltgt` is 'lt' or 'gt'.\r\n */\r\n function maxOrMin(Ctor, args, ltgt) {\r\n var y,\r\n x = new Ctor(args[0]),\r\n i = 0;\r\n\r\n for (; ++i < args.length;) {\r\n y = new Ctor(args[i]);\r\n if (!y.s) {\r\n x = y;\r\n break;\r\n } else if (x[ltgt](y)) {\r\n x = y;\r\n }\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * Taylor/Maclaurin series.\r\n *\r\n * exp(x) = x^0/0! + x^1/1! + x^2/2! + x^3/3! + ...\r\n *\r\n * Argument reduction:\r\n * Repeat x = x / 32, k += 5, until |x| < 0.1\r\n * exp(x) = exp(x / 2^k)^(2^k)\r\n *\r\n * Previously, the argument was initially reduced by\r\n * exp(x) = exp(r) * 10^k where r = x - k * ln10, k = floor(x / ln10)\r\n * to first put r in the range [0, ln10], before dividing by 32 until |x| < 0.1, but this was\r\n * found to be slower than just dividing repeatedly by 32 as above.\r\n *\r\n * Max integer argument: exp('20723265836946413') = 6.3e+9000000000000000\r\n * Min integer argument: exp('-20723265836946411') = 1.2e-9000000000000000\r\n * (Math object integer min/max: Math.exp(709) = 8.2e+307, Math.exp(-745) = 5e-324)\r\n *\r\n * exp(Infinity) = Infinity\r\n * exp(-Infinity) = 0\r\n * exp(NaN) = NaN\r\n * exp(±0) = 1\r\n *\r\n * exp(x) is non-terminating for any finite, non-zero x.\r\n *\r\n * The result will always be correctly rounded.\r\n *\r\n */\r\n function naturalExponential(x, sd) {\r\n var denominator, guard, j, pow, sum, t, wpr,\r\n rep = 0,\r\n i = 0,\r\n k = 0,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // 0/NaN/Infinity?\r\n if (!x.d || !x.d[0] || x.e > 17) {\r\n\r\n return new Ctor(x.d\r\n ? !x.d[0] ? 1 : x.s < 0 ? 0 : 1 / 0\r\n : x.s ? x.s < 0 ? 0 : x : 0 / 0);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n t = new Ctor(0.03125);\r\n\r\n // while abs(x) >= 0.1\r\n while (x.e > -2) {\r\n\r\n // x = x / 2^5\r\n x = x.times(t);\r\n k += 5;\r\n }\r\n\r\n // Use 2 * log10(2^k) + 5 (empirically derived) to estimate the increase in precision\r\n // necessary to ensure the first 4 rounding digits are correct.\r\n guard = Math.log(mathpow(2, k)) / Math.LN10 * 2 + 5 | 0;\r\n wpr += guard;\r\n denominator = pow = sum = new Ctor(1);\r\n Ctor.precision = wpr;\r\n\r\n for (;;) {\r\n pow = finalise(pow.times(x), wpr, 1);\r\n denominator = denominator.times(++i);\r\n t = sum.plus(divide(pow, denominator, wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n j = k;\r\n while (j--) sum = finalise(sum.times(sum), wpr, 1);\r\n\r\n // Check to see if the first 4 rounding digits are [49]999.\r\n // If so, repeat the summation with a higher precision, otherwise\r\n // e.g. with precision: 18, rounding: 1\r\n // exp(18.404272462595034083567793919843761) = 98372560.1229999999 (should be 98372560.123)\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n\r\n if (rep < 3 && checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += 10;\r\n denominator = pow = t = new Ctor(1);\r\n i = 0;\r\n rep++;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n }\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x` rounded to `sd` significant\r\n * digits.\r\n *\r\n * ln(-n) = NaN\r\n * ln(0) = -Infinity\r\n * ln(-0) = -Infinity\r\n * ln(1) = 0\r\n * ln(Infinity) = Infinity\r\n * ln(-Infinity) = NaN\r\n * ln(NaN) = NaN\r\n *\r\n * ln(n) (n != 1) is non-terminating.\r\n *\r\n */\r\n function naturalLogarithm(y, sd) {\r\n var c, c0, denominator, e, numerator, rep, sum, t, wpr, x1, x2,\r\n n = 1,\r\n guard = 10,\r\n x = y,\r\n xd = x.d,\r\n Ctor = x.constructor,\r\n rm = Ctor.rounding,\r\n pr = Ctor.precision;\r\n\r\n // Is x negative or Infinity, NaN, 0 or 1?\r\n if (x.s < 0 || !xd || !xd[0] || !x.e && xd[0] == 1 && xd.length == 1) {\r\n return new Ctor(xd && !xd[0] ? -1 / 0 : x.s != 1 ? NaN : xd ? 0 : x);\r\n }\r\n\r\n if (sd == null) {\r\n external = false;\r\n wpr = pr;\r\n } else {\r\n wpr = sd;\r\n }\r\n\r\n Ctor.precision = wpr += guard;\r\n c = digitsToString(xd);\r\n c0 = c.charAt(0);\r\n\r\n if (Math.abs(e = x.e) < 1.5e15) {\r\n\r\n // Argument reduction.\r\n // The series converges faster the closer the argument is to 1, so using\r\n // ln(a^b) = b * ln(a), ln(a) = ln(a^b) / b\r\n // multiply the argument by itself until the leading digits of the significand are 7, 8, 9,\r\n // 10, 11, 12 or 13, recording the number of multiplications so the sum of the series can\r\n // later be divided by this number, then separate out the power of 10 using\r\n // ln(a*10^b) = ln(a) + b*ln(10).\r\n\r\n // max n is 21 (gives 0.9, 1.0 or 1.1) (9e15 / 21 = 4.2e14).\r\n //while (c0 < 9 && c0 != 1 || c0 == 1 && c.charAt(1) > 1) {\r\n // max n is 6 (gives 0.7 - 1.3)\r\n while (c0 < 7 && c0 != 1 || c0 == 1 && c.charAt(1) > 3) {\r\n x = x.times(y);\r\n c = digitsToString(x.d);\r\n c0 = c.charAt(0);\r\n n++;\r\n }\r\n\r\n e = x.e;\r\n\r\n if (c0 > 1) {\r\n x = new Ctor('0.' + c);\r\n e++;\r\n } else {\r\n x = new Ctor(c0 + '.' + c.slice(1));\r\n }\r\n } else {\r\n\r\n // The argument reduction method above may result in overflow if the argument y is a massive\r\n // number with exponent >= 1500000000000000 (9e15 / 6 = 1.5e15), so instead recall this\r\n // function using ln(x*10^e) = ln(x) + e*ln(10).\r\n t = getLn10(Ctor, wpr + 2, pr).times(e + '');\r\n x = naturalLogarithm(new Ctor(c0 + '.' + c.slice(1)), wpr - guard).plus(t);\r\n Ctor.precision = pr;\r\n\r\n return sd == null ? finalise(x, pr, rm, external = true) : x;\r\n }\r\n\r\n // x1 is x reduced to a value near 1.\r\n x1 = x;\r\n\r\n // Taylor series.\r\n // ln(y) = ln((1 + x)/(1 - x)) = 2(x + x^3/3 + x^5/5 + x^7/7 + ...)\r\n // where x = (y - 1)/(y + 1) (|x| < 1)\r\n sum = numerator = x = divide(x.minus(1), x.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = 3;\r\n\r\n for (;;) {\r\n numerator = finalise(numerator.times(x2), wpr, 1);\r\n t = sum.plus(divide(numerator, new Ctor(denominator), wpr, 1));\r\n\r\n if (digitsToString(t.d).slice(0, wpr) === digitsToString(sum.d).slice(0, wpr)) {\r\n sum = sum.times(2);\r\n\r\n // Reverse the argument reduction. Check that e is not 0 because, besides preventing an\r\n // unnecessary calculation, -0 + 0 = +0 and to ensure correct rounding -0 needs to stay -0.\r\n if (e !== 0) sum = sum.plus(getLn10(Ctor, wpr + 2, pr).times(e + ''));\r\n sum = divide(sum, new Ctor(n), wpr, 1);\r\n\r\n // Is rm > 3 and the first 4 rounding digits 4999, or rm < 4 (or the summation has\r\n // been repeated previously) and the first 4 rounding digits 9999?\r\n // If so, restart the summation with a higher precision, otherwise\r\n // e.g. with precision: 12, rounding: 1\r\n // ln(135520028.6126091714265381533) = 18.7246299999 when it should be 18.72463.\r\n // `wpr - guard` is the index of first rounding digit.\r\n if (sd == null) {\r\n if (checkRoundingDigits(sum.d, wpr - guard, rm, rep)) {\r\n Ctor.precision = wpr += guard;\r\n t = numerator = x = divide(x1.minus(1), x1.plus(1), wpr, 1);\r\n x2 = finalise(x.times(x), wpr, 1);\r\n denominator = rep = 1;\r\n } else {\r\n return finalise(sum, Ctor.precision = pr, rm, external = true);\r\n }\r\n } else {\r\n Ctor.precision = pr;\r\n return sum;\r\n }\r\n }\r\n\r\n sum = t;\r\n denominator += 2;\r\n }\r\n }\r\n\r\n\r\n // ±Infinity, NaN.\r\n function nonFiniteToString(x) {\r\n // Unsigned.\r\n return String(x.s * x.s / 0);\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from string `str`.\r\n */\r\n function parseDecimal(x, str) {\r\n var e, i, len;\r\n\r\n // Decimal point?\r\n if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');\r\n\r\n // Exponential form?\r\n if ((i = str.search(/e/i)) > 0) {\r\n\r\n // Determine exponent.\r\n if (e < 0) e = i;\r\n e += +str.slice(i + 1);\r\n str = str.substring(0, i);\r\n } else if (e < 0) {\r\n\r\n // Integer.\r\n e = str.length;\r\n }\r\n\r\n // Determine leading zeros.\r\n for (i = 0; str.charCodeAt(i) === 48; i++);\r\n\r\n // Determine trailing zeros.\r\n for (len = str.length; str.charCodeAt(len - 1) === 48; --len);\r\n str = str.slice(i, len);\r\n\r\n if (str) {\r\n len -= i;\r\n x.e = e = e - i - 1;\r\n x.d = [];\r\n\r\n // Transform base\r\n\r\n // e is the base 10 exponent.\r\n // i is where to slice str to get the first word of the digits array.\r\n i = (e + 1) % LOG_BASE;\r\n if (e < 0) i += LOG_BASE;\r\n\r\n if (i < len) {\r\n if (i) x.d.push(+str.slice(0, i));\r\n for (len -= LOG_BASE; i < len;) x.d.push(+str.slice(i, i += LOG_BASE));\r\n str = str.slice(i);\r\n i = LOG_BASE - str.length;\r\n } else {\r\n i -= len;\r\n }\r\n\r\n for (; i--;) str += '0';\r\n x.d.push(+str);\r\n\r\n if (external) {\r\n\r\n // Overflow?\r\n if (x.e > x.constructor.maxE) {\r\n\r\n // Infinity.\r\n x.d = null;\r\n x.e = NaN;\r\n\r\n // Underflow?\r\n } else if (x.e < x.constructor.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n // x.constructor.underflow = true;\r\n } // else x.constructor.underflow = false;\r\n }\r\n } else {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * Parse the value of a new Decimal `x` from a string `str`, which is not a decimal value.\r\n */\r\n function parseOther(x, str) {\r\n var base, Ctor, divisor, i, isFloat, len, p, xd, xe;\r\n\r\n if (str.indexOf('_') > -1) {\r\n str = str.replace(/(\\d)_(?=\\d)/g, '$1');\r\n if (isDecimal.test(str)) return parseDecimal(x, str);\r\n } else if (str === 'Infinity' || str === 'NaN') {\r\n if (!+str) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return x;\r\n }\r\n\r\n if (isHex.test(str)) {\r\n base = 16;\r\n str = str.toLowerCase();\r\n } else if (isBinary.test(str)) {\r\n base = 2;\r\n } else if (isOctal.test(str)) {\r\n base = 8;\r\n } else {\r\n throw Error(invalidArgument + str);\r\n }\r\n\r\n // Is there a binary exponent part?\r\n i = str.search(/p/i);\r\n\r\n if (i > 0) {\r\n p = +str.slice(i + 1);\r\n str = str.substring(2, i);\r\n } else {\r\n str = str.slice(2);\r\n }\r\n\r\n // Convert `str` as an integer then divide the result by `base` raised to a power such that the\r\n // fraction part will be restored.\r\n i = str.indexOf('.');\r\n isFloat = i >= 0;\r\n Ctor = x.constructor;\r\n\r\n if (isFloat) {\r\n str = str.replace('.', '');\r\n len = str.length;\r\n i = len - i;\r\n\r\n // log[10](16) = 1.2041... , log[10](88) = 1.9444....\r\n divisor = intPow(Ctor, new Ctor(base), i, i * 2);\r\n }\r\n\r\n xd = convertBase(str, base, BASE);\r\n xe = xd.length - 1;\r\n\r\n // Remove trailing zeros.\r\n for (i = xe; xd[i] === 0; --i) xd.pop();\r\n if (i < 0) return new Ctor(x.s * 0);\r\n x.e = getBase10Exponent(xd, xe);\r\n x.d = xd;\r\n external = false;\r\n\r\n // At what precision to perform the division to ensure exact conversion?\r\n // maxDecimalIntegerPartDigitCount = ceil(log[10](b) * otherBaseIntegerPartDigitCount)\r\n // log[10](2) = 0.30103, log[10](8) = 0.90309, log[10](16) = 1.20412\r\n // E.g. ceil(1.2 * 3) = 4, so up to 4 decimal digits are needed to represent 3 hex int digits.\r\n // maxDecimalFractionPartDigitCount = {Hex:4|Oct:3|Bin:1} * otherBaseFractionPartDigitCount\r\n // Therefore using 4 * the number of digits of str will always be enough.\r\n if (isFloat) x = divide(x, divisor, len * 4);\r\n\r\n // Multiply by the binary exponent part if present.\r\n if (p) x = x.times(Math.abs(p) < 54 ? mathpow(2, p) : Decimal.pow(2, p));\r\n external = true;\r\n\r\n return x;\r\n }\r\n\r\n\r\n /*\r\n * sin(x) = x - x^3/3! + x^5/5! - ...\r\n * |x| < pi/2\r\n *\r\n */\r\n function sine(Ctor, x) {\r\n var k,\r\n len = x.d.length;\r\n\r\n if (len < 3) {\r\n return x.isZero() ? x : taylorSeries(Ctor, 2, x, x);\r\n }\r\n\r\n // Argument reduction: sin(5x) = 16*sin^5(x) - 20*sin^3(x) + 5*sin(x)\r\n // i.e. sin(x) = 16*sin^5(x/5) - 20*sin^3(x/5) + 5*sin(x/5)\r\n // and sin(x) = sin(x/5)(5 + sin^2(x/5)(16sin^2(x/5) - 20))\r\n\r\n // Estimate the optimum number of times to use the argument reduction.\r\n k = 1.4 * Math.sqrt(len);\r\n k = k > 16 ? 16 : k | 0;\r\n\r\n x = x.times(1 / tinyPow(5, k));\r\n x = taylorSeries(Ctor, 2, x, x);\r\n\r\n // Reverse argument reduction\r\n var sin2_x,\r\n d5 = new Ctor(5),\r\n d16 = new Ctor(16),\r\n d20 = new Ctor(20);\r\n for (; k--;) {\r\n sin2_x = x.times(x);\r\n x = x.times(d5.plus(sin2_x.times(d16.times(sin2_x).minus(d20))));\r\n }\r\n\r\n return x;\r\n }\r\n\r\n\r\n // Calculate Taylor series for `cos`, `cosh`, `sin` and `sinh`.\r\n function taylorSeries(Ctor, n, x, y, isHyperbolic) {\r\n var j, t, u, x2,\r\n i = 1,\r\n pr = Ctor.precision,\r\n k = Math.ceil(pr / LOG_BASE);\r\n\r\n external = false;\r\n x2 = x.times(x);\r\n u = new Ctor(y);\r\n\r\n for (;;) {\r\n t = divide(u.times(x2), new Ctor(n++ * n++), pr, 1);\r\n u = isHyperbolic ? y.plus(t) : y.minus(t);\r\n y = divide(t.times(x2), new Ctor(n++ * n++), pr, 1);\r\n t = u.plus(y);\r\n\r\n if (t.d[k] !== void 0) {\r\n for (j = k; t.d[j] === u.d[j] && j--;);\r\n if (j == -1) break;\r\n }\r\n\r\n j = u;\r\n u = y;\r\n y = t;\r\n t = j;\r\n i++;\r\n }\r\n\r\n external = true;\r\n t.d.length = k + 1;\r\n\r\n return t;\r\n }\r\n\r\n\r\n // Exponent e must be positive and non-zero.\r\n function tinyPow(b, e) {\r\n var n = b;\r\n while (--e) n *= b;\r\n return n;\r\n }\r\n\r\n\r\n // Return the absolute value of `x` reduced to less than or equal to half pi.\r\n function toLessThanHalfPi(Ctor, x) {\r\n var t,\r\n isNeg = x.s < 0,\r\n pi = getPi(Ctor, Ctor.precision, 1),\r\n halfPi = pi.times(0.5);\r\n\r\n x = x.abs();\r\n\r\n if (x.lte(halfPi)) {\r\n quadrant = isNeg ? 4 : 1;\r\n return x;\r\n }\r\n\r\n t = x.divToInt(pi);\r\n\r\n if (t.isZero()) {\r\n quadrant = isNeg ? 3 : 2;\r\n } else {\r\n x = x.minus(t.times(pi));\r\n\r\n // 0 <= x < pi\r\n if (x.lte(halfPi)) {\r\n quadrant = isOdd(t) ? (isNeg ? 2 : 3) : (isNeg ? 4 : 1);\r\n return x;\r\n }\r\n\r\n quadrant = isOdd(t) ? (isNeg ? 1 : 4) : (isNeg ? 3 : 2);\r\n }\r\n\r\n return x.minus(pi).abs();\r\n }\r\n\r\n\r\n /*\r\n * Return the value of Decimal `x` as a string in base `baseOut`.\r\n *\r\n * If the optional `sd` argument is present include a binary exponent suffix.\r\n */\r\n function toStringBinary(x, baseOut, sd, rm) {\r\n var base, e, i, k, len, roundUp, str, xd, y,\r\n Ctor = x.constructor,\r\n isExp = sd !== void 0;\r\n\r\n if (isExp) {\r\n checkInt32(sd, 1, MAX_DIGITS);\r\n if (rm === void 0) rm = Ctor.rounding;\r\n else checkInt32(rm, 0, 8);\r\n } else {\r\n sd = Ctor.precision;\r\n rm = Ctor.rounding;\r\n }\r\n\r\n if (!x.isFinite()) {\r\n str = nonFiniteToString(x);\r\n } else {\r\n str = finiteToString(x);\r\n i = str.indexOf('.');\r\n\r\n // Use exponential notation according to `toExpPos` and `toExpNeg`? No, but if required:\r\n // maxBinaryExponent = floor((decimalExponent + 1) * log[2](10))\r\n // minBinaryExponent = floor(decimalExponent * log[2](10))\r\n // log[2](10) = 3.321928094887362347870319429489390175864\r\n\r\n if (isExp) {\r\n base = 2;\r\n if (baseOut == 16) {\r\n sd = sd * 4 - 3;\r\n } else if (baseOut == 8) {\r\n sd = sd * 3 - 2;\r\n }\r\n } else {\r\n base = baseOut;\r\n }\r\n\r\n // Convert the number as an integer then divide the result by its base raised to a power such\r\n // that the fraction part will be restored.\r\n\r\n // Non-integer.\r\n if (i >= 0) {\r\n str = str.replace('.', '');\r\n y = new Ctor(1);\r\n y.e = str.length - i;\r\n y.d = convertBase(finiteToString(y), 10, base);\r\n y.e = y.d.length;\r\n }\r\n\r\n xd = convertBase(str, 10, base);\r\n e = len = xd.length;\r\n\r\n // Remove trailing zeros.\r\n for (; xd[--len] == 0;) xd.pop();\r\n\r\n if (!xd[0]) {\r\n str = isExp ? '0p+0' : '0';\r\n } else {\r\n if (i < 0) {\r\n e--;\r\n } else {\r\n x = new Ctor(x);\r\n x.d = xd;\r\n x.e = e;\r\n x = divide(x, y, sd, rm, 0, base);\r\n xd = x.d;\r\n e = x.e;\r\n roundUp = inexact;\r\n }\r\n\r\n // The rounding digit, i.e. the digit after the digit that may be rounded up.\r\n i = xd[sd];\r\n k = base / 2;\r\n roundUp = roundUp || xd[sd + 1] !== void 0;\r\n\r\n roundUp = rm < 4\r\n ? (i !== void 0 || roundUp) && (rm === 0 || rm === (x.s < 0 ? 3 : 2))\r\n : i > k || i === k && (rm === 4 || roundUp || rm === 6 && xd[sd - 1] & 1 ||\r\n rm === (x.s < 0 ? 8 : 7));\r\n\r\n xd.length = sd;\r\n\r\n if (roundUp) {\r\n\r\n // Rounding up may mean the previous digit has to be rounded up and so on.\r\n for (; ++xd[--sd] > base - 1;) {\r\n xd[sd] = 0;\r\n if (!sd) {\r\n ++e;\r\n xd.unshift(1);\r\n }\r\n }\r\n }\r\n\r\n // Determine trailing zeros.\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // E.g. [4, 11, 15] becomes 4bf.\r\n for (i = 0, str = ''; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n\r\n // Add binary exponent suffix?\r\n if (isExp) {\r\n if (len > 1) {\r\n if (baseOut == 16 || baseOut == 8) {\r\n i = baseOut == 16 ? 4 : 3;\r\n for (--len; len % i; len++) str += '0';\r\n xd = convertBase(str, base, baseOut);\r\n for (len = xd.length; !xd[len - 1]; --len);\r\n\r\n // xd[0] will always be be 1\r\n for (i = 1, str = '1.'; i < len; i++) str += NUMERALS.charAt(xd[i]);\r\n } else {\r\n str = str.charAt(0) + '.' + str.slice(1);\r\n }\r\n }\r\n\r\n str = str + (e < 0 ? 'p' : 'p+') + e;\r\n } else if (e < 0) {\r\n for (; ++e;) str = '0' + str;\r\n str = '0.' + str;\r\n } else {\r\n if (++e > len) for (e -= len; e-- ;) str += '0';\r\n else if (e < len) str = str.slice(0, e) + '.' + str.slice(e);\r\n }\r\n }\r\n\r\n str = (baseOut == 16 ? '0x' : baseOut == 2 ? '0b' : baseOut == 8 ? '0o' : '') + str;\r\n }\r\n\r\n return x.s < 0 ? '-' + str : str;\r\n }\r\n\r\n\r\n // Does not strip trailing zeros.\r\n function truncate(arr, len) {\r\n if (arr.length > len) {\r\n arr.length = len;\r\n return true;\r\n }\r\n }\r\n\r\n\r\n // Decimal methods\r\n\r\n\r\n /*\r\n * abs\r\n * acos\r\n * acosh\r\n * add\r\n * asin\r\n * asinh\r\n * atan\r\n * atanh\r\n * atan2\r\n * cbrt\r\n * ceil\r\n * clamp\r\n * clone\r\n * config\r\n * cos\r\n * cosh\r\n * div\r\n * exp\r\n * floor\r\n * hypot\r\n * ln\r\n * log\r\n * log2\r\n * log10\r\n * max\r\n * min\r\n * mod\r\n * mul\r\n * pow\r\n * random\r\n * round\r\n * set\r\n * sign\r\n * sin\r\n * sinh\r\n * sqrt\r\n * sub\r\n * sum\r\n * tan\r\n * tanh\r\n * trunc\r\n */\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the absolute value of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function abs(x) {\r\n return new this(x).abs();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arccosine in radians of `x`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function acos(x) {\r\n return new this(x).acos();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function acosh(x) {\r\n return new this(x).acosh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function add(x, y) {\r\n return new this(x).plus(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function asin(x) {\r\n return new this(x).asin();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function asinh(x) {\r\n return new this(x).asinh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function atan(x) {\r\n return new this(x).atan();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to\r\n * `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function atanh(x) {\r\n return new this(x).atanh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the arctangent in radians of `y/x` in the range -pi to pi\r\n * (inclusive), rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * Domain: [-Infinity, Infinity]\r\n * Range: [-pi, pi]\r\n *\r\n * y {number|string|Decimal} The y-coordinate.\r\n * x {number|string|Decimal} The x-coordinate.\r\n *\r\n * atan2(±0, -0) = ±pi\r\n * atan2(±0, +0) = ±0\r\n * atan2(±0, -x) = ±pi for x > 0\r\n * atan2(±0, x) = ±0 for x > 0\r\n * atan2(-y, ±0) = -pi/2 for y > 0\r\n * atan2(y, ±0) = pi/2 for y > 0\r\n * atan2(±y, -Infinity) = ±pi for finite y > 0\r\n * atan2(±y, +Infinity) = ±0 for finite y > 0\r\n * atan2(±Infinity, x) = ±pi/2 for finite x\r\n * atan2(±Infinity, -Infinity) = ±3*pi/4\r\n * atan2(±Infinity, +Infinity) = ±pi/4\r\n * atan2(NaN, x) = NaN\r\n * atan2(y, NaN) = NaN\r\n *\r\n */\r\n function atan2(y, x) {\r\n y = new this(y);\r\n x = new this(x);\r\n var r,\r\n pr = this.precision,\r\n rm = this.rounding,\r\n wpr = pr + 4;\r\n\r\n // Either NaN\r\n if (!y.s || !x.s) {\r\n r = new this(NaN);\r\n\r\n // Both ±Infinity\r\n } else if (!y.d && !x.d) {\r\n r = getPi(this, wpr, 1).times(x.s > 0 ? 0.25 : 0.75);\r\n r.s = y.s;\r\n\r\n // x is ±Infinity or y is ±0\r\n } else if (!x.d || y.isZero()) {\r\n r = x.s < 0 ? getPi(this, pr, rm) : new this(0);\r\n r.s = y.s;\r\n\r\n // y is ±Infinity or x is ±0\r\n } else if (!y.d || x.isZero()) {\r\n r = getPi(this, wpr, 1).times(0.5);\r\n r.s = y.s;\r\n\r\n // Both non-zero and finite\r\n } else if (x.s < 0) {\r\n this.precision = wpr;\r\n this.rounding = 1;\r\n r = this.atan(divide(y, x, wpr, 1));\r\n x = getPi(this, wpr, 1);\r\n this.precision = pr;\r\n this.rounding = rm;\r\n r = y.s < 0 ? r.minus(x) : r.plus(x);\r\n } else {\r\n r = this.atan(divide(y, x, wpr, 1));\r\n }\r\n\r\n return r;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function cbrt(x) {\r\n return new this(x).cbrt();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function ceil(x) {\r\n return finalise(x = new this(x), x.e + 1, 2);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`.\r\n *\r\n * x {number|string|Decimal}\r\n * min {number|string|Decimal}\r\n * max {number|string|Decimal}\r\n *\r\n */\r\n function clamp(x, min, max) {\r\n return new this(x).clamp(min, max);\r\n }\r\n\r\n\r\n /*\r\n * Configure global settings for a Decimal constructor.\r\n *\r\n * `obj` is an object with one or more of the following properties,\r\n *\r\n * precision {number}\r\n * rounding {number}\r\n * toExpNeg {number}\r\n * toExpPos {number}\r\n * maxE {number}\r\n * minE {number}\r\n * modulo {number}\r\n * crypto {boolean|number}\r\n * defaults {true}\r\n *\r\n * E.g. Decimal.config({ precision: 20, rounding: 4 })\r\n *\r\n */\r\n function config(obj) {\r\n if (!obj || typeof obj !== 'object') throw Error(decimalError + 'Object expected');\r\n var i, p, v,\r\n useDefaults = obj.defaults === true,\r\n ps = [\r\n 'precision', 1, MAX_DIGITS,\r\n 'rounding', 0, 8,\r\n 'toExpNeg', -EXP_LIMIT, 0,\r\n 'toExpPos', 0, EXP_LIMIT,\r\n 'maxE', 0, EXP_LIMIT,\r\n 'minE', -EXP_LIMIT, 0,\r\n 'modulo', 0, 9\r\n ];\r\n\r\n for (i = 0; i < ps.length; i += 3) {\r\n if (p = ps[i], useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (mathfloor(v) === v && v >= ps[i + 1] && v <= ps[i + 2]) this[p] = v;\r\n else throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n if (p = 'crypto', useDefaults) this[p] = DEFAULTS[p];\r\n if ((v = obj[p]) !== void 0) {\r\n if (v === true || v === false || v === 0 || v === 1) {\r\n if (v) {\r\n if (typeof crypto != 'undefined' && crypto &&\r\n (crypto.getRandomValues || crypto.randomBytes)) {\r\n this[p] = true;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n } else {\r\n this[p] = false;\r\n }\r\n } else {\r\n throw Error(invalidArgument + p + ': ' + v);\r\n }\r\n }\r\n\r\n return this;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function cos(x) {\r\n return new this(x).cos();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function cosh(x) {\r\n return new this(x).cosh();\r\n }\r\n\r\n\r\n /*\r\n * Create and return a Decimal constructor with the same configuration properties as this Decimal\r\n * constructor.\r\n *\r\n */\r\n function clone(obj) {\r\n var i, p, ps;\r\n\r\n /*\r\n * The Decimal constructor and exported function.\r\n * Return a new Decimal instance.\r\n *\r\n * v {number|string|Decimal} A numeric value.\r\n *\r\n */\r\n function Decimal(v) {\r\n var e, i, t,\r\n x = this;\r\n\r\n // Decimal called without new.\r\n if (!(x instanceof Decimal)) return new Decimal(v);\r\n\r\n // Retain a reference to this Decimal constructor, and shadow Decimal.prototype.constructor\r\n // which points to Object.\r\n x.constructor = Decimal;\r\n\r\n // Duplicate.\r\n if (isDecimalInstance(v)) {\r\n x.s = v.s;\r\n\r\n if (external) {\r\n if (!v.d || v.e > Decimal.maxE) {\r\n\r\n // Infinity.\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (v.e < Decimal.minE) {\r\n\r\n // Zero.\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d.slice();\r\n }\r\n } else {\r\n x.e = v.e;\r\n x.d = v.d ? v.d.slice() : v.d;\r\n }\r\n\r\n return;\r\n }\r\n\r\n t = typeof v;\r\n\r\n if (t === 'number') {\r\n if (v === 0) {\r\n x.s = 1 / v < 0 ? -1 : 1;\r\n x.e = 0;\r\n x.d = [0];\r\n return;\r\n }\r\n\r\n if (v < 0) {\r\n v = -v;\r\n x.s = -1;\r\n } else {\r\n x.s = 1;\r\n }\r\n\r\n // Fast path for small integers.\r\n if (v === ~~v && v < 1e7) {\r\n for (e = 0, i = v; i >= 10; i /= 10) e++;\r\n\r\n if (external) {\r\n if (e > Decimal.maxE) {\r\n x.e = NaN;\r\n x.d = null;\r\n } else if (e < Decimal.minE) {\r\n x.e = 0;\r\n x.d = [0];\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n } else {\r\n x.e = e;\r\n x.d = [v];\r\n }\r\n\r\n return;\r\n\r\n // Infinity, NaN.\r\n } else if (v * 0 !== 0) {\r\n if (!v) x.s = NaN;\r\n x.e = NaN;\r\n x.d = null;\r\n return;\r\n }\r\n\r\n return parseDecimal(x, v.toString());\r\n\r\n } else if (t !== 'string') {\r\n throw Error(invalidArgument + v);\r\n }\r\n\r\n // Minus sign?\r\n if ((i = v.charCodeAt(0)) === 45) {\r\n v = v.slice(1);\r\n x.s = -1;\r\n } else {\r\n // Plus sign?\r\n if (i === 43) v = v.slice(1);\r\n x.s = 1;\r\n }\r\n\r\n return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);\r\n }\r\n\r\n Decimal.prototype = P;\r\n\r\n Decimal.ROUND_UP = 0;\r\n Decimal.ROUND_DOWN = 1;\r\n Decimal.ROUND_CEIL = 2;\r\n Decimal.ROUND_FLOOR = 3;\r\n Decimal.ROUND_HALF_UP = 4;\r\n Decimal.ROUND_HALF_DOWN = 5;\r\n Decimal.ROUND_HALF_EVEN = 6;\r\n Decimal.ROUND_HALF_CEIL = 7;\r\n Decimal.ROUND_HALF_FLOOR = 8;\r\n Decimal.EUCLID = 9;\r\n\r\n Decimal.config = Decimal.set = config;\r\n Decimal.clone = clone;\r\n Decimal.isDecimal = isDecimalInstance;\r\n\r\n Decimal.abs = abs;\r\n Decimal.acos = acos;\r\n Decimal.acosh = acosh; // ES6\r\n Decimal.add = add;\r\n Decimal.asin = asin;\r\n Decimal.asinh = asinh; // ES6\r\n Decimal.atan = atan;\r\n Decimal.atanh = atanh; // ES6\r\n Decimal.atan2 = atan2;\r\n Decimal.cbrt = cbrt; // ES6\r\n Decimal.ceil = ceil;\r\n Decimal.clamp = clamp;\r\n Decimal.cos = cos;\r\n Decimal.cosh = cosh; // ES6\r\n Decimal.div = div;\r\n Decimal.exp = exp;\r\n Decimal.floor = floor;\r\n Decimal.hypot = hypot; // ES6\r\n Decimal.ln = ln;\r\n Decimal.log = log;\r\n Decimal.log10 = log10; // ES6\r\n Decimal.log2 = log2; // ES6\r\n Decimal.max = max;\r\n Decimal.min = min;\r\n Decimal.mod = mod;\r\n Decimal.mul = mul;\r\n Decimal.pow = pow;\r\n Decimal.random = random;\r\n Decimal.round = round;\r\n Decimal.sign = sign; // ES6\r\n Decimal.sin = sin;\r\n Decimal.sinh = sinh; // ES6\r\n Decimal.sqrt = sqrt;\r\n Decimal.sub = sub;\r\n Decimal.sum = sum;\r\n Decimal.tan = tan;\r\n Decimal.tanh = tanh; // ES6\r\n Decimal.trunc = trunc; // ES6\r\n\r\n if (obj === void 0) obj = {};\r\n if (obj) {\r\n if (obj.defaults !== true) {\r\n ps = ['precision', 'rounding', 'toExpNeg', 'toExpPos', 'maxE', 'minE', 'modulo', 'crypto'];\r\n for (i = 0; i < ps.length;) if (!obj.hasOwnProperty(p = ps[i++])) obj[p] = this[p];\r\n }\r\n }\r\n\r\n Decimal.config(obj);\r\n\r\n return Decimal;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function div(x, y) {\r\n return new this(x).div(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The power to which to raise the base of the natural log.\r\n *\r\n */\r\n function exp(x) {\r\n return new this(x).exp();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function floor(x) {\r\n return finalise(x = new this(x), x.e + 1, 3);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of the sum of the squares of the arguments,\r\n * rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\n function hypot() {\r\n var i, n,\r\n t = new this(0);\r\n\r\n external = false;\r\n\r\n for (i = 0; i < arguments.length;) {\r\n n = new this(arguments[i++]);\r\n if (!n.d) {\r\n if (n.s) {\r\n external = true;\r\n return new this(1 / 0);\r\n }\r\n t = n;\r\n } else if (t.d) {\r\n t = t.plus(n.times(n));\r\n }\r\n }\r\n\r\n external = true;\r\n\r\n return t.sqrt();\r\n }\r\n\r\n\r\n /*\r\n * Return true if object is a Decimal instance (where Decimal is any Decimal constructor),\r\n * otherwise return false.\r\n *\r\n */\r\n function isDecimalInstance(obj) {\r\n return obj instanceof Decimal || obj && obj.toStringTag === tag || false;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function ln(x) {\r\n return new this(x).ln();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the log of `x` to the base `y`, or to base 10 if no base\r\n * is specified, rounded to `precision` significant digits using rounding mode `rounding`.\r\n *\r\n * log[y](x)\r\n *\r\n * x {number|string|Decimal} The argument of the logarithm.\r\n * y {number|string|Decimal} The base of the logarithm.\r\n *\r\n */\r\n function log(x, y) {\r\n return new this(x).log(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function log2(x) {\r\n return new this(x).log(2);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function log10(x) {\r\n return new this(x).log(10);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the maximum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\n function max() {\r\n return maxOrMin(this, arguments, 'lt');\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the minimum of the arguments.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\n function min() {\r\n return maxOrMin(this, arguments, 'gt');\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function mod(x, y) {\r\n return new this(x).mod(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function mul(x, y) {\r\n return new this(x).mul(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} The base.\r\n * y {number|string|Decimal} The exponent.\r\n *\r\n */\r\n function pow(x, y) {\r\n return new this(x).pow(y);\r\n }\r\n\r\n\r\n /*\r\n * Returns a new Decimal with a random value equal to or greater than 0 and less than 1, and with\r\n * `sd`, or `Decimal.precision` if `sd` is omitted, significant digits (or less if trailing zeros\r\n * are produced).\r\n *\r\n * [sd] {number} Significant digits. Integer, 0 to MAX_DIGITS inclusive.\r\n *\r\n */\r\n function random(sd) {\r\n var d, e, k, n,\r\n i = 0,\r\n r = new this(1),\r\n rd = [];\r\n\r\n if (sd === void 0) sd = this.precision;\r\n else checkInt32(sd, 1, MAX_DIGITS);\r\n\r\n k = Math.ceil(sd / LOG_BASE);\r\n\r\n if (!this.crypto) {\r\n for (; i < k;) rd[i++] = Math.random() * 1e7 | 0;\r\n\r\n // Browsers supporting crypto.getRandomValues.\r\n } else if (crypto.getRandomValues) {\r\n d = crypto.getRandomValues(new Uint32Array(k));\r\n\r\n for (; i < k;) {\r\n n = d[i];\r\n\r\n // 0 <= n < 4294967296\r\n // Probability n >= 4.29e9, is 4967296 / 4294967296 = 0.00116 (1 in 865).\r\n if (n >= 4.29e9) {\r\n d[i] = crypto.getRandomValues(new Uint32Array(1))[0];\r\n } else {\r\n\r\n // 0 <= n <= 4289999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd[i++] = n % 1e7;\r\n }\r\n }\r\n\r\n // Node.js supporting crypto.randomBytes.\r\n } else if (crypto.randomBytes) {\r\n\r\n // buffer\r\n d = crypto.randomBytes(k *= 4);\r\n\r\n for (; i < k;) {\r\n\r\n // 0 <= n < 2147483648\r\n n = d[i] + (d[i + 1] << 8) + (d[i + 2] << 16) + ((d[i + 3] & 0x7f) << 24);\r\n\r\n // Probability n >= 2.14e9, is 7483648 / 2147483648 = 0.0035 (1 in 286).\r\n if (n >= 2.14e9) {\r\n crypto.randomBytes(4).copy(d, i);\r\n } else {\r\n\r\n // 0 <= n <= 2139999999\r\n // 0 <= (n % 1e7) <= 9999999\r\n rd.push(n % 1e7);\r\n i += 4;\r\n }\r\n }\r\n\r\n i = k / 4;\r\n } else {\r\n throw Error(cryptoUnavailable);\r\n }\r\n\r\n k = rd[--i];\r\n sd %= LOG_BASE;\r\n\r\n // Convert trailing digits to zeros according to sd.\r\n if (k && sd) {\r\n n = mathpow(10, LOG_BASE - sd);\r\n rd[i] = (k / n | 0) * n;\r\n }\r\n\r\n // Remove trailing words which are zero.\r\n for (; rd[i] === 0; i--) rd.pop();\r\n\r\n // Zero?\r\n if (i < 0) {\r\n e = 0;\r\n rd = [0];\r\n } else {\r\n e = -1;\r\n\r\n // Remove leading words which are zero and adjust exponent accordingly.\r\n for (; rd[0] === 0; e -= LOG_BASE) rd.shift();\r\n\r\n // Count the digits of the first word of rd to determine leading zeros.\r\n for (k = 1, n = rd[0]; n >= 10; n /= 10) k++;\r\n\r\n // Adjust the exponent for leading zeros of the first word of rd.\r\n if (k < LOG_BASE) e -= LOG_BASE - k;\r\n }\r\n\r\n r.e = e;\r\n r.d = rd;\r\n\r\n return r;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` rounded to an integer using rounding mode `rounding`.\r\n *\r\n * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function round(x) {\r\n return finalise(x = new this(x), x.e + 1, this.rounding);\r\n }\r\n\r\n\r\n /*\r\n * Return\r\n * 1 if x > 0,\r\n * -1 if x < 0,\r\n * 0 if x is 0,\r\n * -0 if x is -0,\r\n * NaN otherwise\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function sign(x) {\r\n x = new this(x);\r\n return x.d ? (x.d[0] ? x.s : 0 * x.s) : x.s || NaN;\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function sin(x) {\r\n return new this(x).sin();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function sinh(x) {\r\n return new this(x).sinh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function sqrt(x) {\r\n return new this(x).sqrt();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits\r\n * using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal}\r\n * y {number|string|Decimal}\r\n *\r\n */\r\n function sub(x, y) {\r\n return new this(x).sub(y);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the sum of the arguments, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * Only the result is rounded, not the intermediate calculations.\r\n *\r\n * arguments {number|string|Decimal}\r\n *\r\n */\r\n function sum() {\r\n var i = 0,\r\n args = arguments,\r\n x = new this(args[i]);\r\n\r\n external = false;\r\n for (; x.s && ++i < args.length;) x = x.plus(args[i]);\r\n external = true;\r\n\r\n return finalise(x, this.precision, this.rounding);\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant\r\n * digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function tan(x) {\r\n return new this(x).tan();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`\r\n * significant digits using rounding mode `rounding`.\r\n *\r\n * x {number|string|Decimal} A value in radians.\r\n *\r\n */\r\n function tanh(x) {\r\n return new this(x).tanh();\r\n }\r\n\r\n\r\n /*\r\n * Return a new Decimal whose value is `x` truncated to an integer.\r\n *\r\n * x {number|string|Decimal}\r\n *\r\n */\r\n function trunc(x) {\r\n return finalise(x = new this(x), x.e + 1, 1);\r\n }\r\n\r\n\r\n // Create and configure initial Decimal constructor.\r\n Decimal = clone(DEFAULTS);\r\n Decimal.prototype.constructor = Decimal;\r\n Decimal['default'] = Decimal.Decimal = Decimal;\r\n\r\n // Create the internal constants from their string values.\r\n LN10 = new Decimal(LN10);\r\n PI = new Decimal(PI);\r\n\r\n\r\n // Export.\r\n\r\n\r\n // AMD.\r\n if (typeof define == 'function' && define.amd) {\r\n define(function () {\r\n return Decimal;\r\n });\r\n\r\n // Node and other environments that support module.exports.\r\n } else if (typeof module != 'undefined' && module.exports) {\r\n if (typeof Symbol == 'function' && typeof Symbol.iterator == 'symbol') {\r\n P[Symbol['for']('nodejs.util.inspect.custom')] = P.toString;\r\n P[Symbol.toStringTag] = 'Decimal';\r\n }\r\n\r\n module.exports = Decimal;\r\n\r\n // Browser.\r\n } else {\r\n if (!globalScope) {\r\n globalScope = typeof self != 'undefined' && self && self.self == self ? self : window;\r\n }\r\n\r\n noConflict = globalScope.Decimal;\r\n Decimal.noConflict = function () {\r\n globalScope.Decimal = noConflict;\r\n return Decimal;\r\n };\r\n\r\n globalScope.Decimal = Decimal;\r\n }\r\n})(this);\r\n","'use strict';\n\nfunction assign(obj, props) {\n for (const key in props) {\n Object.defineProperty(obj, key, {\n value: props[key],\n enumerable: true,\n configurable: true,\n });\n }\n\n return obj;\n}\n\nfunction createError(err, code, props) {\n if (!err || typeof err === 'string') {\n throw new TypeError('Please pass an Error to err-code');\n }\n\n if (!props) {\n props = {};\n }\n\n if (typeof code === 'object') {\n props = code;\n code = undefined;\n }\n\n if (code != null) {\n props.code = code;\n }\n\n try {\n return assign(err, props);\n } catch (_) {\n props.message = err.message;\n props.stack = err.stack;\n\n const ErrClass = function () {};\n\n ErrClass.prototype = Object.create(Object.getPrototypeOf(err));\n\n return assign(new ErrClass(), props);\n }\n}\n\nmodule.exports = createError;\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","'use strict';\n\n// do not edit .js files directly - edit src/index.jst\n\n\n\nmodule.exports = function equal(a, b) {\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n if (a.valueOf !== Object.prototype.valueOf) return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString) return a.toString() === b.toString();\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n\n for (i = length; i-- !== 0;) {\n var key = keys[i];\n\n if (key === '_owner' && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner.\n // _owner contains circular references\n // and is not needed when comparing the actual elements (and not their owners)\n continue;\n }\n\n if (!equal(a[key], b[key])) return false;\n }\n\n return true;\n }\n\n // true if both NaN, false otherwise\n return a!==a && b!==b;\n};\n","var keyList = Object.keys;\n\nexports.equal = function equal (a, b) {\n if (a === b) return true;\n if (!(a instanceof Object) || !(b instanceof Object)) return false;\n\n var keys = keyList(a);\n var length = keys.length;\n\n for (var i = 0; i < length; i++)\n if (!(keys[i] in b)) return false;\n\n for (var i = 0; i < length; i++)\n if (a[keys[i]] !== b[keys[i]]) return false;\n\n return length === keyList(b).length;\n};\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\n/**\n * Use invariant() to assert state which your program assumes to be true.\n *\n * Provide sprintf-style format (only %s is supported) and arguments\n * to provide information about what broke and what you were\n * expecting.\n *\n * The invariant message will be stripped in production, but the invariant\n * will remain to ensure logic does not differ in production.\n */\n\nvar invariant = function(condition, format, a, b, c, d, e, f) {\n if (process.env.NODE_ENV !== 'production') {\n if (format === undefined) {\n throw new Error('invariant requires an error message argument');\n }\n }\n\n if (!condition) {\n var error;\n if (format === undefined) {\n error = new Error(\n 'Minified exception occurred; use the non-minified dev environment ' +\n 'for the full error message and additional helpful warnings.'\n );\n } else {\n var args = [a, b, c, d, e, f];\n var argIndex = 0;\n error = new Error(\n format.replace(/%s/g, function() { return args[argIndex++]; })\n );\n error.name = 'Invariant Violation';\n }\n\n error.framesToPop = 1; // we don't care about invariant's own frame\n throw error;\n }\n};\n\nmodule.exports = invariant;\n","'use strict';\n\nconst uuid = require('uuid').v4;\nconst generateRequest = require('../../generateRequest');\n\n/**\n * Constructor for a Jayson Browser Client that does not depend any node.js core libraries\n * @class ClientBrowser\n * @param {Function} callServer Method that calls the server, receives the stringified request and a regular node-style callback\n * @param {Object} [options]\n * @param {Function} [options.reviver] Reviver function for JSON\n * @param {Function} [options.replacer] Replacer function for JSON\n * @param {Number} [options.version=2] JSON-RPC version to use (1|2)\n * @param {Function} [options.generator] Function to use for generating request IDs\n * @param {Boolean} [options.notificationIdNull=false] When true, version 2 requests will set id to null instead of omitting it\n * @return {ClientBrowser}\n */\nconst ClientBrowser = function(callServer, options) {\n if(!(this instanceof ClientBrowser)) {\n return new ClientBrowser(callServer, options);\n }\n\n if (!options) {\n options = {};\n }\n\n this.options = {\n reviver: typeof options.reviver !== 'undefined' ? options.reviver : null,\n replacer: typeof options.replacer !== 'undefined' ? options.replacer : null,\n generator: typeof options.generator !== 'undefined' ? options.generator : function() { return uuid(); },\n version: typeof options.version !== 'undefined' ? options.version : 2,\n notificationIdNull: typeof options.notificationIdNull === 'boolean' ? options.notificationIdNull : false,\n };\n\n this.callServer = callServer;\n};\n\nmodule.exports = ClientBrowser;\n\n/**\n * Creates a request and dispatches it if given a callback.\n * @param {String|Array} method A batch request if passed an Array, or a method name if passed a String\n * @param {Array|Object} [params] Parameters for the method\n * @param {String|Number} [id] Optional id. If undefined an id will be generated. If null it creates a notification request\n * @param {Function} [callback] Request callback. If specified, executes the request rather than only returning it.\n * @throws {TypeError} Invalid parameters\n * @return {Object} JSON-RPC 1.0 or 2.0 compatible request\n */\nClientBrowser.prototype.request = function(method, params, id, callback) {\n const self = this;\n let request = null;\n\n // is this a batch request?\n const isBatch = Array.isArray(method) && typeof params === 'function';\n\n if (this.options.version === 1 && isBatch) {\n throw new TypeError('JSON-RPC 1.0 does not support batching');\n }\n\n // is this a raw request?\n const isRaw = !isBatch && method && typeof method === 'object' && typeof params === 'function';\n\n if(isBatch || isRaw) {\n callback = params;\n request = method;\n } else {\n if(typeof id === 'function') {\n callback = id;\n // specifically undefined because \"null\" is a notification request\n id = undefined;\n }\n\n const hasCallback = typeof callback === 'function';\n\n try {\n request = generateRequest(method, params, id, {\n generator: this.options.generator,\n version: this.options.version,\n notificationIdNull: this.options.notificationIdNull,\n });\n } catch(err) {\n if(hasCallback) {\n return callback(err);\n }\n throw err;\n }\n\n // no callback means we should just return a raw request\n if(!hasCallback) {\n return request;\n }\n\n }\n\n let message;\n try {\n message = JSON.stringify(request, this.options.replacer);\n } catch(err) {\n return callback(err);\n }\n\n this.callServer(message, function(err, response) {\n self._parseResponse(err, response, callback);\n });\n\n // always return the raw request\n return request;\n};\n\n/**\n * Parses a response from a server\n * @param {Object} err Error to pass on that is unrelated to the actual response\n * @param {String} responseText JSON-RPC 1.0 or 2.0 response\n * @param {Function} callback Callback that will receive different arguments depending on the amount of parameters\n * @private\n */\nClientBrowser.prototype._parseResponse = function(err, responseText, callback) {\n if(err) {\n callback(err);\n return;\n }\n\n if(!responseText) {\n // empty response text, assume that is correct because it could be a\n // notification which jayson does not give any body for\n return callback();\n }\n\n let response;\n try {\n response = JSON.parse(responseText, this.options.reviver);\n } catch(err) {\n return callback(err);\n }\n\n if(callback.length === 3) {\n // if callback length is 3, we split callback arguments on error and response\n\n // is batch response?\n if(Array.isArray(response)) {\n\n // neccesary to split strictly on validity according to spec here\n const isError = function(res) {\n return typeof res.error !== 'undefined';\n };\n\n const isNotError = function (res) {\n return !isError(res);\n };\n\n return callback(null, response.filter(isError), response.filter(isNotError));\n \n } else {\n\n // split regardless of validity\n return callback(null, response.error, response.result);\n \n }\n \n }\n\n callback(null, response);\n};\n","'use strict';\n\nconst uuid = require('uuid').v4;\n\n/**\n * Generates a JSON-RPC 1.0 or 2.0 request\n * @param {String} method Name of method to call\n * @param {Array|Object} params Array of parameters passed to the method as specified, or an object of parameter names and corresponding value\n * @param {String|Number|null} [id] Request ID can be a string, number, null for explicit notification or left out for automatic generation\n * @param {Object} [options]\n * @param {Number} [options.version=2] JSON-RPC version to use (1 or 2)\n * @param {Boolean} [options.notificationIdNull=false] When true, version 2 requests will set id to null instead of omitting it\n * @param {Function} [options.generator] Passed the request, and the options object and is expected to return a request ID\n * @throws {TypeError} If any of the parameters are invalid\n * @return {Object} A JSON-RPC 1.0 or 2.0 request\n * @memberOf Utils\n */\nconst generateRequest = function(method, params, id, options) {\n if(typeof method !== 'string') {\n throw new TypeError(method + ' must be a string');\n }\n\n options = options || {};\n\n // check valid version provided\n const version = typeof options.version === 'number' ? options.version : 2;\n if (version !== 1 && version !== 2) {\n throw new TypeError(version + ' must be 1 or 2');\n }\n\n const request = {\n method: method\n };\n\n if(version === 2) {\n request.jsonrpc = '2.0';\n }\n\n if(params) {\n // params given, but invalid?\n if(typeof params !== 'object' && !Array.isArray(params)) {\n throw new TypeError(params + ' must be an object, array or omitted');\n }\n request.params = params;\n }\n\n // if id was left out, generate one (null means explicit notification)\n if(typeof(id) === 'undefined') {\n const generator = typeof options.generator === 'function' ? options.generator : function() { return uuid(); };\n request.id = generator(request, options);\n } else if (version === 2 && id === null) {\n // we have a version 2 notification\n if (options.notificationIdNull) {\n request.id = null; // id will not be set at all unless option provided\n }\n } else {\n request.id = id;\n }\n\n return request;\n};\n\nmodule.exports = generateRequest;\n","/*!\n * JavaScript Cookie v2.2.1\n * https://github.com/js-cookie/js-cookie\n *\n * Copyright 2006, 2015 Klaus Hartl & Fagner Brack\n * Released under the MIT license\n */\n;(function (factory) {\n\tvar registeredInModuleLoader;\n\tif (typeof define === 'function' && define.amd) {\n\t\tdefine(factory);\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (typeof exports === 'object') {\n\t\tmodule.exports = factory();\n\t\tregisteredInModuleLoader = true;\n\t}\n\tif (!registeredInModuleLoader) {\n\t\tvar OldCookies = window.Cookies;\n\t\tvar api = window.Cookies = factory();\n\t\tapi.noConflict = function () {\n\t\t\twindow.Cookies = OldCookies;\n\t\t\treturn api;\n\t\t};\n\t}\n}(function () {\n\tfunction extend () {\n\t\tvar i = 0;\n\t\tvar result = {};\n\t\tfor (; i < arguments.length; i++) {\n\t\t\tvar attributes = arguments[ i ];\n\t\t\tfor (var key in attributes) {\n\t\t\t\tresult[key] = attributes[key];\n\t\t\t}\n\t\t}\n\t\treturn result;\n\t}\n\n\tfunction decode (s) {\n\t\treturn s.replace(/(%[0-9A-Z]{2})+/g, decodeURIComponent);\n\t}\n\n\tfunction init (converter) {\n\t\tfunction api() {}\n\n\t\tfunction set (key, value, attributes) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tattributes = extend({\n\t\t\t\tpath: '/'\n\t\t\t}, api.defaults, attributes);\n\n\t\t\tif (typeof attributes.expires === 'number') {\n\t\t\t\tattributes.expires = new Date(new Date() * 1 + attributes.expires * 864e+5);\n\t\t\t}\n\n\t\t\t// We're using \"expires\" because \"max-age\" is not supported by IE\n\t\t\tattributes.expires = attributes.expires ? attributes.expires.toUTCString() : '';\n\n\t\t\ttry {\n\t\t\t\tvar result = JSON.stringify(value);\n\t\t\t\tif (/^[\\{\\[]/.test(result)) {\n\t\t\t\t\tvalue = result;\n\t\t\t\t}\n\t\t\t} catch (e) {}\n\n\t\t\tvalue = converter.write ?\n\t\t\t\tconverter.write(value, key) :\n\t\t\t\tencodeURIComponent(String(value))\n\t\t\t\t\t.replace(/%(23|24|26|2B|3A|3C|3E|3D|2F|3F|40|5B|5D|5E|60|7B|7D|7C)/g, decodeURIComponent);\n\n\t\t\tkey = encodeURIComponent(String(key))\n\t\t\t\t.replace(/%(23|24|26|2B|5E|60|7C)/g, decodeURIComponent)\n\t\t\t\t.replace(/[\\(\\)]/g, escape);\n\n\t\t\tvar stringifiedAttributes = '';\n\t\t\tfor (var attributeName in attributes) {\n\t\t\t\tif (!attributes[attributeName]) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\t\t\t\tstringifiedAttributes += '; ' + attributeName;\n\t\t\t\tif (attributes[attributeName] === true) {\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\t// Considers RFC 6265 section 5.2:\n\t\t\t\t// ...\n\t\t\t\t// 3. If the remaining unparsed-attributes contains a %x3B (\";\")\n\t\t\t\t// character:\n\t\t\t\t// Consume the characters of the unparsed-attributes up to,\n\t\t\t\t// not including, the first %x3B (\";\") character.\n\t\t\t\t// ...\n\t\t\t\tstringifiedAttributes += '=' + attributes[attributeName].split(';')[0];\n\t\t\t}\n\n\t\t\treturn (document.cookie = key + '=' + value + stringifiedAttributes);\n\t\t}\n\n\t\tfunction get (key, json) {\n\t\t\tif (typeof document === 'undefined') {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tvar jar = {};\n\t\t\t// To prevent the for loop in the first place assign an empty array\n\t\t\t// in case there are no cookies at all.\n\t\t\tvar cookies = document.cookie ? document.cookie.split('; ') : [];\n\t\t\tvar i = 0;\n\n\t\t\tfor (; i < cookies.length; i++) {\n\t\t\t\tvar parts = cookies[i].split('=');\n\t\t\t\tvar cookie = parts.slice(1).join('=');\n\n\t\t\t\tif (!json && cookie.charAt(0) === '\"') {\n\t\t\t\t\tcookie = cookie.slice(1, -1);\n\t\t\t\t}\n\n\t\t\t\ttry {\n\t\t\t\t\tvar name = decode(parts[0]);\n\t\t\t\t\tcookie = (converter.read || converter)(cookie, name) ||\n\t\t\t\t\t\tdecode(cookie);\n\n\t\t\t\t\tif (json) {\n\t\t\t\t\t\ttry {\n\t\t\t\t\t\t\tcookie = JSON.parse(cookie);\n\t\t\t\t\t\t} catch (e) {}\n\t\t\t\t\t}\n\n\t\t\t\t\tjar[name] = cookie;\n\n\t\t\t\t\tif (key === name) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t} catch (e) {}\n\t\t\t}\n\n\t\t\treturn key ? jar[key] : jar;\n\t\t}\n\n\t\tapi.set = set;\n\t\tapi.get = function (key) {\n\t\t\treturn get(key, false /* read as raw */);\n\t\t};\n\t\tapi.getJSON = function (key) {\n\t\t\treturn get(key, true /* read as json */);\n\t\t};\n\t\tapi.remove = function (key, attributes) {\n\t\t\tset(key, '', extend(attributes, {\n\t\t\t\texpires: -1\n\t\t\t}));\n\t\t};\n\n\t\tapi.defaults = {};\n\n\t\tapi.withConverter = init;\n\n\t\treturn api;\n\t}\n\n\treturn init(function () {});\n}));\n","/**\n * [js-sha256]{@link https://github.com/emn178/js-sha256}\n *\n * @version 0.9.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2014-2017\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var ERROR = 'input is invalid type';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA256_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA256_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA256_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA256_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var EXTRA = [-2147483648, 8388608, 32768, 128];\n var SHIFT = [24, 16, 8, 0];\n var K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5, 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3, 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc, 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7, 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13, 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3, 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5, 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208, 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n ];\n var OUTPUT_TYPES = ['hex', 'array', 'digest', 'arrayBuffer'];\n\n var blocks = [];\n\n if (root.JS_SHA256_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA256_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (outputType, is224) {\n return function (message) {\n return new Sha256(is224, true).update(message)[outputType]();\n };\n };\n\n var createMethod = function (is224) {\n var method = createOutputMethod('hex', is224);\n if (NODE_JS) {\n method = nodeWrap(method, is224);\n }\n method.create = function () {\n return new Sha256(is224);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createOutputMethod(type, is224);\n }\n return method;\n };\n\n var nodeWrap = function (method, is224) {\n var crypto = eval(\"require('crypto')\");\n var Buffer = eval(\"require('buffer').Buffer\");\n var algorithm = is224 ? 'sha224' : 'sha256';\n var nodeMethod = function (message) {\n if (typeof message === 'string') {\n return crypto.createHash(algorithm).update(message, 'utf8').digest('hex');\n } else {\n if (message === null || message === undefined) {\n throw new Error(ERROR);\n } else if (message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n }\n }\n if (Array.isArray(message) || ArrayBuffer.isView(message) ||\n message.constructor === Buffer) {\n return crypto.createHash(algorithm).update(new Buffer(message)).digest('hex');\n } else {\n return method(message);\n }\n };\n return nodeMethod;\n };\n\n var createHmacOutputMethod = function (outputType, is224) {\n return function (key, message) {\n return new HmacSha256(key, is224, true).update(message)[outputType]();\n };\n };\n\n var createHmacMethod = function (is224) {\n var method = createHmacOutputMethod('hex', is224);\n method.create = function (key) {\n return new HmacSha256(key, is224);\n };\n method.update = function (key, message) {\n return method.create(key).update(message);\n };\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createHmacOutputMethod(type, is224);\n }\n return method;\n };\n\n function Sha256(is224, sharedMemory) {\n if (sharedMemory) {\n blocks[0] = blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n this.blocks = blocks;\n } else {\n this.blocks = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];\n }\n\n if (is224) {\n this.h0 = 0xc1059ed8;\n this.h1 = 0x367cd507;\n this.h2 = 0x3070dd17;\n this.h3 = 0xf70e5939;\n this.h4 = 0xffc00b31;\n this.h5 = 0x68581511;\n this.h6 = 0x64f98fa7;\n this.h7 = 0xbefa4fa4;\n } else { // 256\n this.h0 = 0x6a09e667;\n this.h1 = 0xbb67ae85;\n this.h2 = 0x3c6ef372;\n this.h3 = 0xa54ff53a;\n this.h4 = 0x510e527f;\n this.h5 = 0x9b05688c;\n this.h6 = 0x1f83d9ab;\n this.h7 = 0x5be0cd19;\n }\n\n this.block = this.start = this.bytes = this.hBytes = 0;\n this.finalized = this.hashed = false;\n this.first = true;\n this.is224 = is224;\n }\n\n Sha256.prototype.update = function (message) {\n if (this.finalized) {\n return;\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n notString = true;\n }\n var code, index = 0, i, length = message.length, blocks = this.blocks;\n\n while (index < length) {\n if (this.hashed) {\n this.hashed = false;\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n\n if (notString) {\n for (i = this.start; index < length && i < 64; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < 64; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n\n this.lastByteIndex = i;\n this.bytes += i - this.start;\n if (i >= 64) {\n this.block = blocks[16];\n this.start = i - 64;\n this.hash();\n this.hashed = true;\n } else {\n this.start = i;\n }\n }\n if (this.bytes > 4294967295) {\n this.hBytes += this.bytes / 4294967296 << 0;\n this.bytes = this.bytes % 4294967296;\n }\n return this;\n };\n\n Sha256.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex;\n blocks[16] = this.block;\n blocks[i >> 2] |= EXTRA[i & 3];\n this.block = blocks[16];\n if (i >= 56) {\n if (!this.hashed) {\n this.hash();\n }\n blocks[0] = this.block;\n blocks[16] = blocks[1] = blocks[2] = blocks[3] =\n blocks[4] = blocks[5] = blocks[6] = blocks[7] =\n blocks[8] = blocks[9] = blocks[10] = blocks[11] =\n blocks[12] = blocks[13] = blocks[14] = blocks[15] = 0;\n }\n blocks[14] = this.hBytes << 3 | this.bytes >>> 29;\n blocks[15] = this.bytes << 3;\n this.hash();\n };\n\n Sha256.prototype.hash = function () {\n var a = this.h0, b = this.h1, c = this.h2, d = this.h3, e = this.h4, f = this.h5, g = this.h6,\n h = this.h7, blocks = this.blocks, j, s0, s1, maj, t1, t2, ch, ab, da, cd, bc;\n\n for (j = 16; j < 64; ++j) {\n // rightrotate\n t1 = blocks[j - 15];\n s0 = ((t1 >>> 7) | (t1 << 25)) ^ ((t1 >>> 18) | (t1 << 14)) ^ (t1 >>> 3);\n t1 = blocks[j - 2];\n s1 = ((t1 >>> 17) | (t1 << 15)) ^ ((t1 >>> 19) | (t1 << 13)) ^ (t1 >>> 10);\n blocks[j] = blocks[j - 16] + s0 + blocks[j - 7] + s1 << 0;\n }\n\n bc = b & c;\n for (j = 0; j < 64; j += 4) {\n if (this.first) {\n if (this.is224) {\n ab = 300032;\n t1 = blocks[0] - 1413257819;\n h = t1 - 150054599 << 0;\n d = t1 + 24177077 << 0;\n } else {\n ab = 704751109;\n t1 = blocks[0] - 210244248;\n h = t1 - 1521486534 << 0;\n d = t1 + 143694565 << 0;\n }\n this.first = false;\n } else {\n s0 = ((a >>> 2) | (a << 30)) ^ ((a >>> 13) | (a << 19)) ^ ((a >>> 22) | (a << 10));\n s1 = ((e >>> 6) | (e << 26)) ^ ((e >>> 11) | (e << 21)) ^ ((e >>> 25) | (e << 7));\n ab = a & b;\n maj = ab ^ (a & c) ^ bc;\n ch = (e & f) ^ (~e & g);\n t1 = h + s1 + ch + K[j] + blocks[j];\n t2 = s0 + maj;\n h = d + t1 << 0;\n d = t1 + t2 << 0;\n }\n s0 = ((d >>> 2) | (d << 30)) ^ ((d >>> 13) | (d << 19)) ^ ((d >>> 22) | (d << 10));\n s1 = ((h >>> 6) | (h << 26)) ^ ((h >>> 11) | (h << 21)) ^ ((h >>> 25) | (h << 7));\n da = d & a;\n maj = da ^ (d & b) ^ ab;\n ch = (h & e) ^ (~h & f);\n t1 = g + s1 + ch + K[j + 1] + blocks[j + 1];\n t2 = s0 + maj;\n g = c + t1 << 0;\n c = t1 + t2 << 0;\n s0 = ((c >>> 2) | (c << 30)) ^ ((c >>> 13) | (c << 19)) ^ ((c >>> 22) | (c << 10));\n s1 = ((g >>> 6) | (g << 26)) ^ ((g >>> 11) | (g << 21)) ^ ((g >>> 25) | (g << 7));\n cd = c & d;\n maj = cd ^ (c & a) ^ da;\n ch = (g & h) ^ (~g & e);\n t1 = f + s1 + ch + K[j + 2] + blocks[j + 2];\n t2 = s0 + maj;\n f = b + t1 << 0;\n b = t1 + t2 << 0;\n s0 = ((b >>> 2) | (b << 30)) ^ ((b >>> 13) | (b << 19)) ^ ((b >>> 22) | (b << 10));\n s1 = ((f >>> 6) | (f << 26)) ^ ((f >>> 11) | (f << 21)) ^ ((f >>> 25) | (f << 7));\n bc = b & c;\n maj = bc ^ (b & d) ^ cd;\n ch = (f & g) ^ (~f & h);\n t1 = e + s1 + ch + K[j + 3] + blocks[j + 3];\n t2 = s0 + maj;\n e = a + t1 << 0;\n a = t1 + t2 << 0;\n }\n\n this.h0 = this.h0 + a << 0;\n this.h1 = this.h1 + b << 0;\n this.h2 = this.h2 + c << 0;\n this.h3 = this.h3 + d << 0;\n this.h4 = this.h4 + e << 0;\n this.h5 = this.h5 + f << 0;\n this.h6 = this.h6 + g << 0;\n this.h7 = this.h7 + h << 0;\n };\n\n Sha256.prototype.hex = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var hex = HEX_CHARS[(h0 >> 28) & 0x0F] + HEX_CHARS[(h0 >> 24) & 0x0F] +\n HEX_CHARS[(h0 >> 20) & 0x0F] + HEX_CHARS[(h0 >> 16) & 0x0F] +\n HEX_CHARS[(h0 >> 12) & 0x0F] + HEX_CHARS[(h0 >> 8) & 0x0F] +\n HEX_CHARS[(h0 >> 4) & 0x0F] + HEX_CHARS[h0 & 0x0F] +\n HEX_CHARS[(h1 >> 28) & 0x0F] + HEX_CHARS[(h1 >> 24) & 0x0F] +\n HEX_CHARS[(h1 >> 20) & 0x0F] + HEX_CHARS[(h1 >> 16) & 0x0F] +\n HEX_CHARS[(h1 >> 12) & 0x0F] + HEX_CHARS[(h1 >> 8) & 0x0F] +\n HEX_CHARS[(h1 >> 4) & 0x0F] + HEX_CHARS[h1 & 0x0F] +\n HEX_CHARS[(h2 >> 28) & 0x0F] + HEX_CHARS[(h2 >> 24) & 0x0F] +\n HEX_CHARS[(h2 >> 20) & 0x0F] + HEX_CHARS[(h2 >> 16) & 0x0F] +\n HEX_CHARS[(h2 >> 12) & 0x0F] + HEX_CHARS[(h2 >> 8) & 0x0F] +\n HEX_CHARS[(h2 >> 4) & 0x0F] + HEX_CHARS[h2 & 0x0F] +\n HEX_CHARS[(h3 >> 28) & 0x0F] + HEX_CHARS[(h3 >> 24) & 0x0F] +\n HEX_CHARS[(h3 >> 20) & 0x0F] + HEX_CHARS[(h3 >> 16) & 0x0F] +\n HEX_CHARS[(h3 >> 12) & 0x0F] + HEX_CHARS[(h3 >> 8) & 0x0F] +\n HEX_CHARS[(h3 >> 4) & 0x0F] + HEX_CHARS[h3 & 0x0F] +\n HEX_CHARS[(h4 >> 28) & 0x0F] + HEX_CHARS[(h4 >> 24) & 0x0F] +\n HEX_CHARS[(h4 >> 20) & 0x0F] + HEX_CHARS[(h4 >> 16) & 0x0F] +\n HEX_CHARS[(h4 >> 12) & 0x0F] + HEX_CHARS[(h4 >> 8) & 0x0F] +\n HEX_CHARS[(h4 >> 4) & 0x0F] + HEX_CHARS[h4 & 0x0F] +\n HEX_CHARS[(h5 >> 28) & 0x0F] + HEX_CHARS[(h5 >> 24) & 0x0F] +\n HEX_CHARS[(h5 >> 20) & 0x0F] + HEX_CHARS[(h5 >> 16) & 0x0F] +\n HEX_CHARS[(h5 >> 12) & 0x0F] + HEX_CHARS[(h5 >> 8) & 0x0F] +\n HEX_CHARS[(h5 >> 4) & 0x0F] + HEX_CHARS[h5 & 0x0F] +\n HEX_CHARS[(h6 >> 28) & 0x0F] + HEX_CHARS[(h6 >> 24) & 0x0F] +\n HEX_CHARS[(h6 >> 20) & 0x0F] + HEX_CHARS[(h6 >> 16) & 0x0F] +\n HEX_CHARS[(h6 >> 12) & 0x0F] + HEX_CHARS[(h6 >> 8) & 0x0F] +\n HEX_CHARS[(h6 >> 4) & 0x0F] + HEX_CHARS[h6 & 0x0F];\n if (!this.is224) {\n hex += HEX_CHARS[(h7 >> 28) & 0x0F] + HEX_CHARS[(h7 >> 24) & 0x0F] +\n HEX_CHARS[(h7 >> 20) & 0x0F] + HEX_CHARS[(h7 >> 16) & 0x0F] +\n HEX_CHARS[(h7 >> 12) & 0x0F] + HEX_CHARS[(h7 >> 8) & 0x0F] +\n HEX_CHARS[(h7 >> 4) & 0x0F] + HEX_CHARS[h7 & 0x0F];\n }\n return hex;\n };\n\n Sha256.prototype.toString = Sha256.prototype.hex;\n\n Sha256.prototype.digest = function () {\n this.finalize();\n\n var h0 = this.h0, h1 = this.h1, h2 = this.h2, h3 = this.h3, h4 = this.h4, h5 = this.h5,\n h6 = this.h6, h7 = this.h7;\n\n var arr = [\n (h0 >> 24) & 0xFF, (h0 >> 16) & 0xFF, (h0 >> 8) & 0xFF, h0 & 0xFF,\n (h1 >> 24) & 0xFF, (h1 >> 16) & 0xFF, (h1 >> 8) & 0xFF, h1 & 0xFF,\n (h2 >> 24) & 0xFF, (h2 >> 16) & 0xFF, (h2 >> 8) & 0xFF, h2 & 0xFF,\n (h3 >> 24) & 0xFF, (h3 >> 16) & 0xFF, (h3 >> 8) & 0xFF, h3 & 0xFF,\n (h4 >> 24) & 0xFF, (h4 >> 16) & 0xFF, (h4 >> 8) & 0xFF, h4 & 0xFF,\n (h5 >> 24) & 0xFF, (h5 >> 16) & 0xFF, (h5 >> 8) & 0xFF, h5 & 0xFF,\n (h6 >> 24) & 0xFF, (h6 >> 16) & 0xFF, (h6 >> 8) & 0xFF, h6 & 0xFF\n ];\n if (!this.is224) {\n arr.push((h7 >> 24) & 0xFF, (h7 >> 16) & 0xFF, (h7 >> 8) & 0xFF, h7 & 0xFF);\n }\n return arr;\n };\n\n Sha256.prototype.array = Sha256.prototype.digest;\n\n Sha256.prototype.arrayBuffer = function () {\n this.finalize();\n\n var buffer = new ArrayBuffer(this.is224 ? 28 : 32);\n var dataView = new DataView(buffer);\n dataView.setUint32(0, this.h0);\n dataView.setUint32(4, this.h1);\n dataView.setUint32(8, this.h2);\n dataView.setUint32(12, this.h3);\n dataView.setUint32(16, this.h4);\n dataView.setUint32(20, this.h5);\n dataView.setUint32(24, this.h6);\n if (!this.is224) {\n dataView.setUint32(28, this.h7);\n }\n return buffer;\n };\n\n function HmacSha256(key, is224, sharedMemory) {\n var i, type = typeof key;\n if (type === 'string') {\n var bytes = [], length = key.length, index = 0, code;\n for (i = 0; i < length; ++i) {\n code = key.charCodeAt(i);\n if (code < 0x80) {\n bytes[index++] = code;\n } else if (code < 0x800) {\n bytes[index++] = (0xc0 | (code >> 6));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes[index++] = (0xe0 | (code >> 12));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (key.charCodeAt(++i) & 0x3ff));\n bytes[index++] = (0xf0 | (code >> 18));\n bytes[index++] = (0x80 | ((code >> 12) & 0x3f));\n bytes[index++] = (0x80 | ((code >> 6) & 0x3f));\n bytes[index++] = (0x80 | (code & 0x3f));\n }\n }\n key = bytes;\n } else {\n if (type === 'object') {\n if (key === null) {\n throw new Error(ERROR);\n } else if (ARRAY_BUFFER && key.constructor === ArrayBuffer) {\n key = new Uint8Array(key);\n } else if (!Array.isArray(key)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(key)) {\n throw new Error(ERROR);\n }\n }\n } else {\n throw new Error(ERROR);\n }\n }\n\n if (key.length > 64) {\n key = (new Sha256(is224, true)).update(key).array();\n }\n\n var oKeyPad = [], iKeyPad = [];\n for (i = 0; i < 64; ++i) {\n var b = key[i] || 0;\n oKeyPad[i] = 0x5c ^ b;\n iKeyPad[i] = 0x36 ^ b;\n }\n\n Sha256.call(this, is224, sharedMemory);\n\n this.update(iKeyPad);\n this.oKeyPad = oKeyPad;\n this.inner = true;\n this.sharedMemory = sharedMemory;\n }\n HmacSha256.prototype = new Sha256();\n\n HmacSha256.prototype.finalize = function () {\n Sha256.prototype.finalize.call(this);\n if (this.inner) {\n this.inner = false;\n var innerHash = this.array();\n Sha256.call(this, this.is224, this.sharedMemory);\n this.update(this.oKeyPad);\n this.update(innerHash);\n Sha256.prototype.finalize.call(this);\n }\n };\n\n var exports = createMethod();\n exports.sha256 = exports;\n exports.sha224 = createMethod(true);\n exports.sha256.hmac = createHmacMethod();\n exports.sha224.hmac = createHmacMethod(true);\n\n if (COMMON_JS) {\n module.exports = exports;\n } else {\n root.sha256 = exports.sha256;\n root.sha224 = exports.sha224;\n if (AMD) {\n define(function () {\n return exports;\n });\n }\n }\n})();\n","(function(e,t){\"object\"==typeof exports&&\"undefined\"!=typeof module?module.exports=t():\"function\"==typeof define&&define.amd?define(t):(e=e||self,e.JSBI=t())})(this,function(){\"use strict\";var e=Math.imul,t=Math.clz32;function i(e){\"@babel/helpers - typeof\";return i=\"function\"==typeof Symbol&&\"symbol\"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&\"function\"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?\"symbol\":typeof e},i(e)}function _(e,t){if(!(e instanceof t))throw new TypeError(\"Cannot call a class as a function\")}function n(e,t){for(var _,n=0;ne.length)&&(t=e.length);for(var _=0,n=Array(t);_=e.length?{done:!0}:{done:!1,value:e[n++]}},e:function(t){throw t},f:l}}throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\")}var g,a=!0,u=!1;return{s:function(){_=_.call(e)},n:function(){var e=_.next();return a=e.done,e},e:function(t){u=!0,g=t},f:function(){try{a||null==_.return||_.return()}finally{if(u)throw g}}}}var S=function(e){var t=Math.abs,n=Math.max,o=Math.floor;function a(e,t){var i;if(_(this,a),i=u.call(this,e),i.sign=t,Object.setPrototypeOf(b(i),a.prototype),e>a.__kMaxLength)throw new RangeError(\"Maximum BigInt size exceeded\");return i}g(a,e);var u=c(a);return l(a,[{key:\"toDebugString\",value:function(){var e,t=[\"BigInt[\"],i=B(this);try{for(i.s();!(e=i.n()).done;){var _=e.value;t.push((_?(_>>>0).toString(16):_)+\", \")}}catch(e){i.e(e)}finally{i.f()}return t.push(\"]\"),t.join(\"\")}},{key:\"toString\",value:function(){var e=0e||36this.length&&(_=this.length);for(var n=32767&e,l=e>>>15,g=0,o=t,u=0;u<_;u++){var s=this.__digit(u),r=32767&s,d=s>>>15,h=a.__imul(r,n),b=a.__imul(r,l),m=a.__imul(d,n),c=a.__imul(d,l),v=o+h+g;g=v>>>30,v&=1073741823,v+=((32767&b)<<15)+((32767&m)<<15),g+=v>>>30,o=c+(b>>>15)+(m>>>15),this.__setDigit(u,1073741823&v)}if(0!==g||0!==o)throw new Error(\"implementation bug\")}},{key:\"__inplaceAdd\",value:function(e,t,_){for(var n,l=0,g=0;g<_;g++)n=this.__halfDigit(t+g)+e.__halfDigit(g)+l,l=n>>>15,this.__setHalfDigit(t+g,32767&n);return l}},{key:\"__inplaceSub\",value:function(e,t,_){var n=0;if(1&t){t>>=1;for(var l=this.__digit(t),g=32767&l,o=0;o<_-1>>>1;o++){var a=e.__digit(o),u=(l>>>15)-(32767&a)-n;n=1&u>>>15,this.__setDigit(t+o,(32767&u)<<15|32767&g),l=this.__digit(t+o+1),g=(32767&l)-(a>>>15)-n,n=1&g>>>15}var s=e.__digit(o),r=(l>>>15)-(32767&s)-n;n=1&r>>>15,this.__setDigit(t+o,(32767&r)<<15|32767&g);if(t+o+1>=this.length)throw new RangeError(\"out of bounds\");0==(1&_)&&(l=this.__digit(t+o+1),g=(32767&l)-(s>>>15)-n,n=1&g>>>15,this.__setDigit(t+e.length,1073709056&l|32767&g))}else{t>>=1;for(var d=0;d>>15;var c=(h>>>15)-(b>>>15)-n;n=1&c>>>15,this.__setDigit(t+d,(32767&c)<<15|32767&m)}var v=this.__digit(t+d),y=e.__digit(d),f=(32767&v)-(32767&y)-n;n=1&f>>>15;var D=0;0==(1&_)&&(D=(v>>>15)-(y>>>15)-n,n=1&D>>>15),this.__setDigit(t+d,(32767&D)<<15|32767&f)}return n}},{key:\"__inplaceRightShift\",value:function(e){if(0!==e){for(var t,_=this.__digit(0)>>>e,n=this.length-1,l=0;l>>e;this.__setDigit(n,_)}}},{key:\"__digit\",value:function(e){return this[e]}},{key:\"__unsignedDigit\",value:function(e){return this[e]>>>0}},{key:\"__setDigit\",value:function(e,t){this[e]=0|t}},{key:\"__setDigitGrow\",value:function(e,t){this[e]=0|t}},{key:\"__halfDigitLength\",value:function(){var e=this.length;return 32767>=this.__unsignedDigit(e-1)?2*e-1:2*e}},{key:\"__halfDigit\",value:function(e){return 32767&this[e>>>1]>>>15*(1&e)}},{key:\"__setHalfDigit\",value:function(e,t){var i=e>>>1,_=this.__digit(i),n=1&e?32767&_|t<<15:1073709056&_|32767&t;this.__setDigit(i,n)}}],[{key:\"BigInt\",value:function(e){var t=Number.isFinite;if(\"number\"==typeof e){if(0===e)return a.__zero();if(a.__isOneDigitInt(e))return 0>e?a.__oneDigit(-e,!0):a.__oneDigit(e,!1);if(!t(e)||o(e)!==e)throw new RangeError(\"The number \"+e+\" cannot be converted to BigInt because it is not an integer\");return a.__fromDouble(e)}if(\"string\"==typeof e){var _=a.__fromString(e);if(null===_)throw new SyntaxError(\"Cannot convert \"+e+\" to a BigInt\");return _}if(\"boolean\"==typeof e)return!0===e?a.__oneDigit(1,!1):a.__zero();if(\"object\"===i(e)){if(e.constructor===a)return e;var n=a.__toPrimitive(e);return a.BigInt(n)}throw new TypeError(\"Cannot convert \"+e+\" to a BigInt\")}},{key:\"toNumber\",value:function(e){var t=e.length;if(0===t)return 0;if(1===t){var i=e.__unsignedDigit(0);return e.sign?-i:i}var _=e.__digit(t-1),n=a.__clz30(_),l=30*t-n;if(1024>>=12;var d=s-12,h=12<=s?0:o<<20+s,b=20+s;for(0>>30-d,h=o<>>30-b,b-=30;var m=a.__decideRounding(e,b,u,o);if((1===m||0===m&&1==(1&h))&&(h=h+1>>>0,0===h&&(r++,0!=r>>>20&&(r=0,g++,1023=a.__kMaxLengthBits)throw new RangeError(\"BigInt too big\");if(1===e.length&&2===e.__digit(0)){var _=1+(0|i/30),n=e.sign&&0!=(1&i),l=new a(_,n);l.__initializeDigits();var g=1<>=1;0!==i;i>>=1)u=a.multiply(u,u),0!=(1&i)&&(null===o?o=u:o=a.multiply(o,u));return o}},{key:\"multiply\",value:function(e,t){if(0===e.length)return e;if(0===t.length)return t;var _=e.length+t.length;30<=e.__clzmsd()+t.__clzmsd()&&_--;var n=new a(_,e.sign!==t.sign);n.__initializeDigits();for(var l=0;la.__absoluteCompare(e,t))return a.__zero();var i,_=e.sign!==t.sign,n=t.__unsignedDigit(0);if(1===t.length&&32767>=n){if(1===n)return _===e.sign?e:a.unaryMinus(e);i=a.__absoluteDivSmall(e,n,null)}else i=a.__absoluteDivLarge(e,t,!0,!1);return i.sign=_,i.__trim()}},{key:\"remainder\",value:function i(e,t){if(0===t.length)throw new RangeError(\"Division by zero\");if(0>a.__absoluteCompare(e,t))return e;var _=t.__unsignedDigit(0);if(1===t.length&&32767>=_){if(1===_)return a.__zero();var n=a.__absoluteModSmall(e,_);return 0===n?a.__zero():a.__oneDigit(n,e.sign)}var i=a.__absoluteDivLarge(e,t,!1,!0);return i.sign=e.sign,i.__trim()}},{key:\"add\",value:function(e,t){var i=e.sign;return i===t.sign?a.__absoluteAdd(e,t,i):0<=a.__absoluteCompare(e,t)?a.__absoluteSub(e,t,i):a.__absoluteSub(t,e,!i)}},{key:\"subtract\",value:function(e,t){var i=e.sign;return i===t.sign?0<=a.__absoluteCompare(e,t)?a.__absoluteSub(e,t,i):a.__absoluteSub(t,e,!i):a.__absoluteAdd(e,t,i)}},{key:\"leftShift\",value:function(e,t){return 0===t.length||0===e.length?e:t.sign?a.__rightShiftByAbsolute(e,t):a.__leftShiftByAbsolute(e,t)}},{key:\"signedRightShift\",value:function(e,t){return 0===t.length||0===e.length?e:t.sign?a.__leftShiftByAbsolute(e,t):a.__rightShiftByAbsolute(e,t)}},{key:\"unsignedRightShift\",value:function(){throw new TypeError(\"BigInts have no unsigned right shift; use >> instead\")}},{key:\"lessThan\",value:function(e,t){return 0>a.__compareToBigInt(e,t)}},{key:\"lessThanOrEqual\",value:function(e,t){return 0>=a.__compareToBigInt(e,t)}},{key:\"greaterThan\",value:function(e,t){return 0e)throw new RangeError(\"Invalid value: not (convertible to) a safe integer\");if(0===e)return a.__zero();if(e>=a.__kMaxLengthBits)return t;var _=0|(e+29)/30;if(t.length<_)return t;var l=t.__unsignedDigit(_-1),g=1<<(e-1)%30;if(t.length===_&&le)throw new RangeError(\"Invalid value: not (convertible to) a safe integer\");if(0===e)return a.__zero();if(t.sign){if(e>a.__kMaxLengthBits)throw new RangeError(\"BigInt too big\");return a.__truncateAndSubFromPowerOfTwo(e,t,!1)}if(e>=a.__kMaxLengthBits)return t;var i=0|(e+29)/30;if(t.length>>_)return t}return a.__truncateToNBits(e,t)}},{key:\"ADD\",value:function(e,t){if(e=a.__toPrimitive(e),t=a.__toPrimitive(t),\"string\"==typeof e)return\"string\"!=typeof t&&(t=t.toString()),e+t;if(\"string\"==typeof t)return e.toString()+t;if(e=a.__toNumeric(e),t=a.__toNumeric(t),a.__isBigInt(e)&&a.__isBigInt(t))return a.add(e,t);if(\"number\"==typeof e&&\"number\"==typeof t)return e+t;throw new TypeError(\"Cannot mix BigInt and other types, use explicit conversions\")}},{key:\"LT\",value:function(e,t){return a.__compare(e,t,0)}},{key:\"LE\",value:function(e,t){return a.__compare(e,t,1)}},{key:\"GT\",value:function(e,t){return a.__compare(e,t,2)}},{key:\"GE\",value:function(e,t){return a.__compare(e,t,3)}},{key:\"EQ\",value:function(e,t){for(;;){if(a.__isBigInt(e))return a.__isBigInt(t)?a.equal(e,t):a.EQ(t,e);if(\"number\"==typeof e){if(a.__isBigInt(t))return a.__equalToNumber(t,e);if(\"object\"!==i(t))return e==t;t=a.__toPrimitive(t)}else if(\"string\"==typeof e){if(a.__isBigInt(t))return e=a.__fromString(e),null!==e&&a.equal(e,t);if(\"object\"!==i(t))return e==t;t=a.__toPrimitive(t)}else if(\"boolean\"==typeof e){if(a.__isBigInt(t))return a.__equalToNumber(t,+e);if(\"object\"!==i(t))return e==t;t=a.__toPrimitive(t)}else if(\"symbol\"===i(e)){if(a.__isBigInt(t))return!1;if(\"object\"!==i(t))return e==t;t=a.__toPrimitive(t)}else if(\"object\"===i(e)){if(\"object\"===i(t)&&t.constructor!==a)return e==t;e=a.__toPrimitive(e)}else return e==t}}},{key:\"NE\",value:function(e,t){return!a.EQ(e,t)}},{key:\"DataViewGetBigInt64\",value:function(e,t){var i=!!(2>>30),s.__setDigit(2,l>>>28),s.__trim()}},{key:\"DataViewSetBigInt64\",value:function(e,t,i){var _=!!(3>>2,2t)n=-t-1;else{if(0===i)return-1;i--,_=e.__digit(i),n=29}var l=1<>>20,_=i-1023,n=(0|_/30)+1,l=new a(n,0>e),g=1048575&a.__kBitConversionInts[1]|1048576,o=a.__kBitConversionInts[0],u=20,s=_%30,r=0;if(s>>d,g=g<<32-d|o>>>d,o<<=32-d}else if(s===u)r=32,t=g,g=o,o=0;else{var h=s-u;r=32-h,t=g<>>32-h,g=o<>>2,g=g<<30|o>>>2,o<<=30):t=0,l.__setDigit(b,t);return l.__trim()}},{key:\"__isWhitespace\",value:function(e){return!!(13>=e&&9<=e)||(159>=e?32==e:131071>=e?160==e||5760==e:196607>=e?(e&=131071,10>=e||40==e||41==e||47==e||95==e||4096==e):65279==e)}},{key:\"__fromString\",value:function(e){var t=11073741824/o)return null;var s=o*g+u>>>a.__kBitsPerCharTableShift,r=new a(0|(s+29)/30,!1),h=10>t?t:10,b=10>=a.__kBitsPerCharTableShift;var c=[],v=[],y=!1;do{for(var f,D=0,p=0;;){if(f=void 0,l-48>>>0>>0>>0>>0>>a.__kBitsPerCharTableShift)/30;r.__inplaceMultiplyAdd(I,C,m)}while(!k)}if(n!==_){if(!a.__isWhitespace(l))return null;for(n++;n<_;n++)if(l=e.charCodeAt(n),!a.__isWhitespace(l))return null}return r.sign=-1===i,r.__trim()}},{key:\"__fillFromParts\",value:function(e,t,_){for(var n=0,l=0,g=0,o=t.length-1;0<=o;o--){var a=t[o],u=_[o];l|=a<>>u-g)}if(0!==l){if(n>=e.length)throw new Error(\"implementation bug\");e.__setDigit(n++,l)}for(;n>>1)+(85&n),n=(51&n>>>2)+(51&n),n=(15&n>>>4)+(15&n);var l=n,g=t-1,o=e.__digit(_-1),u=a.__clz30(o),s=0|(30*_-u+l-1)/l;if(e.sign&&s++,268435456>>y,b=30-y;b>=l;)r[d--]=a.__kConversionChars[h&g],h>>>=l,b-=l}var f=(h|o<>>l-b;0!==h;)r[d--]=a.__kConversionChars[h&g],h>>>=l;if(e.sign&&(r[d--]=\"-\"),-1!==d)throw new Error(\"implementation bug\");return r.join(\"\")}},{key:\"__toStringGeneric\",value:function(e,t,_){var n=e.length;if(0===n)return\"\";if(1===n){var l=e.__unsignedDigit(0).toString(t);return!1===_&&e.sign&&(l=\"-\"+l),l}var g=30*n-a.__clz30(e.__digit(n-1)),o=a.__kMaxBitsPerChar[t],u=o-1,s=g*a.__kBitsPerCharTableMultiplier;s+=u-1,s=0|s/u;var r,d,h=s+1>>1,b=a.exponentiate(a.__oneDigit(t,!1),a.__oneDigit(h,!1)),m=b.__unsignedDigit(0);if(1===b.length&&32767>=m){r=new a(e.length,!1),r.__initializeDigits();for(var c,v=0,y=2*e.length-1;0<=y;y--)c=v<<15|e.__halfDigit(y),r.__setHalfDigit(y,0|c/m),v=0|c%m;d=v.toString(t)}else{var f=a.__absoluteDivLarge(e,b,!0,!0);r=f.quotient;var D=f.remainder.__trim();d=a.__toStringGeneric(D,t,!0)}r.__trim();for(var p=a.__toStringGeneric(r,t,!0);d.length_?a.__absoluteLess(i):0}},{key:\"__compareToNumber\",value:function(e,i){if(a.__isOneDigitInt(i)){var _=e.sign,n=0>i;if(_!==n)return a.__unequalSign(_);if(0===e.length){if(n)throw new Error(\"implementation bug\");return 0===i?0:-1}if(1l?a.__absoluteGreater(_):gt)return a.__unequalSign(i);if(0===t)throw new Error(\"implementation bug: should be handled elsewhere\");if(0===e.length)return-1;a.__kBitConversionDouble[0]=t;var _=2047&a.__kBitConversionInts[1]>>>20;if(2047==_)throw new Error(\"implementation bug: handled elsewhere\");var n=_-1023;if(0>n)return a.__absoluteGreater(i);var l=e.length,g=e.__digit(l-1),o=a.__clz30(g),u=30*l-o,s=n+1;if(us)return a.__absoluteGreater(i);var r=1048576|1048575&a.__kBitConversionInts[1],d=a.__kBitConversionInts[0],h=20,b=29-o;if(b!==(0|(u-1)%30))throw new Error(\"implementation bug\");var m,c=0;if(b>>v,r=r<<32-v|d>>>v,d<<=32-v}else if(b===h)c=32,m=r,r=d,d=0;else{var y=b-h;c=32-y,m=r<>>32-y,r=d<>>=0,m>>>=0,g>m)return a.__absoluteGreater(i);if(g>>2,r=r<<30|d>>>2,d<<=30):m=0;var D=e.__unsignedDigit(f);if(D>m)return a.__absoluteGreater(i);if(Di&&e.__unsignedDigit(0)===t(i):0===a.__compareToDouble(e,i)}},{key:\"__comparisonResultToBool\",value:function(e,t){return 0===t?0>e:1===t?0>=e:2===t?0t;case 3:return e>=t;}if(a.__isBigInt(e)&&\"string\"==typeof t)return t=a.__fromString(t),null!==t&&a.__comparisonResultToBool(a.__compareToBigInt(e,t),i);if(\"string\"==typeof e&&a.__isBigInt(t))return e=a.__fromString(e),null!==e&&a.__comparisonResultToBool(a.__compareToBigInt(e,t),i);if(e=a.__toNumeric(e),t=a.__toNumeric(t),a.__isBigInt(e)){if(a.__isBigInt(t))return a.__comparisonResultToBool(a.__compareToBigInt(e,t),i);if(\"number\"!=typeof t)throw new Error(\"implementation bug\");return a.__comparisonResultToBool(a.__compareToNumber(e,t),i)}if(\"number\"!=typeof e)throw new Error(\"implementation bug\");if(a.__isBigInt(t))return a.__comparisonResultToBool(a.__compareToNumber(t,e),2^i);if(\"number\"!=typeof t)throw new Error(\"implementation bug\");return 0===i?et:3===i?e>=t:void 0}},{key:\"__absoluteAdd\",value:function(e,t,_){if(e.length>>30,g.__setDigit(u,1073741823&l);for(;u>>30,g.__setDigit(u,1073741823&s)}return u>>30,l.__setDigit(o,1073741823&n);for(;o>>30,l.__setDigit(o,1073741823&u)}return l.__trim()}},{key:\"__absoluteAddOne\",value:function(e,t){var _=2>>30,_.__setDigit(o,1073741823&l);return 0!==g&&_.__setDigitGrow(n,1),_}},{key:\"__absoluteSubOne\",value:function(e,t){var _=e.length;t=t||_;for(var n,l=new a(t,!1),g=1,o=0;o<_;o++)n=e.__digit(o)-g,g=1&n>>>30,l.__setDigit(o,1073741823&n);if(0!==g)throw new Error(\"implementation bug\");for(var u=_;un?0:e.__unsignedDigit(n)>t.__unsignedDigit(n)?1:-1}},{key:\"__multiplyAccumulate\",value:function(e,t,_,n){if(0!==t){for(var l=32767&t,g=t>>>15,o=0,u=0,s=0;s>>15,m=a.__imul(h,l),c=a.__imul(h,g),v=a.__imul(b,l),y=a.__imul(b,g);r+=u+m+o,o=r>>>30,r&=1073741823,r+=((32767&c)<<15)+((32767&v)<<15),o+=r>>>30,u=y+(c>>>15)+(v>>>15),_.__setDigit(n,1073741823&r)}for(;0!==o||0!==u;n++){var f=_.__digit(n);f+=o+u,u=0,o=f>>>30,_.__setDigit(n,1073741823&f)}}}},{key:\"__internalMultiplyAdd\",value:function(e,t,_,l,g){for(var o=_,u=0,s=0;s>>15,t),m=h+((32767&b)<<15)+u+o;o=m>>>30,u=b>>>15,g.__setDigit(s,1073741823&m)}if(g.length>l)for(g.__setDigit(l++,o+u);l>>0,o=0|g/t;n=0|g%t,g=(n<<15|e.__halfDigit(l-1))>>>0;var u=0|g/t;n=0|g%t,_.__setDigit(l>>>1,o<<15|u)}return _}},{key:\"__absoluteModSmall\",value:function(e,t){for(var _,n=0,l=2*e.length-1;0<=l;l--)_=(n<<15|e.__halfDigit(l))>>>0,n=0|_%t;return n}},{key:\"__absoluteDivLarge\",value:function(e,t,i,_){var l=t.__halfDigitLength(),n=t.length,g=e.__halfDigitLength()-l,o=null;i&&(o=new a(g+2>>>1,!1),o.__initializeDigits());var s=new a(l+2>>>1,!1);s.__initializeDigits();var r=a.__clz15(t.__halfDigit(l-1));0>>0;m=0|y/u;for(var f=0|y%u,D=t.__halfDigit(l-2),p=d.__halfDigit(b+l-2);a.__imul(m,D)>>>0>(f<<16|p)>>>0&&(m--,f+=u,!(32767>>1,h|m))}if(_)return d.__inplaceRightShift(r),i?{quotient:o,remainder:d}:d;if(i)return o;throw new Error(\"unreachable\")}},{key:\"__clz15\",value:function(e){return a.__clz30(e)-15}},{key:\"__specialLeftShift\",value:function(e,t,_){var l=e.length,n=new a(l+_,!1);if(0===t){for(var g=0;g>>30-t;return 0<_&&n.__setDigit(l,u),n}},{key:\"__leftShiftByAbsolute\",value:function(e,t){var _=a.__toShiftAmount(t);if(0>_)throw new RangeError(\"BigInt too big\");var n=0|_/30,l=_%30,g=e.length,o=0!==l&&0!=e.__digit(g-1)>>>30-l,u=g+n+(o?1:0),s=new a(u,e.sign);if(0===l){for(var r=0;r>>30-l;if(o)s.__setDigit(g+n,h);else if(0!==h)throw new Error(\"implementation bug\")}return s.__trim()}},{key:\"__rightShiftByAbsolute\",value:function(e,t){var _=e.length,n=e.sign,l=a.__toShiftAmount(t);if(0>l)return a.__rightShiftByMaximum(n);var g=0|l/30,o=l%30,u=_-g;if(0>=u)return a.__rightShiftByMaximum(n);var s=!1;if(n){if(0!=(e.__digit(g)&(1<>>o,y=_-g-1,f=0;f>>o;b.__setDigit(y,v)}return s&&(b=a.__absoluteAddOne(b,!0,b)),b.__trim()}},{key:\"__rightShiftByMaximum\",value:function(e){return e?a.__oneDigit(1,!0):a.__zero()}},{key:\"__toShiftAmount\",value:function(e){if(1a.__kMaxLengthBits?-1:t}},{key:\"__toPrimitive\",value:function(e){var t=1>>u}return n.__setDigit(l,o),n.__trim()}},{key:\"__truncateAndSubFromPowerOfTwo\",value:function(e,t,_){for(var n=Math.min,l,g=0|(e+29)/30,o=new a(g,_),u=0,s=g-1,d=0,h=n(s,t.length);u>>30,o.__setDigit(u,1073741823&l);for(;u>>v;var y=1<<32-v;b=y-m-d,b&=y-1}return o.__setDigit(s,b),o.__trim()}},{key:\"__digitPow\",value:function(e,t){for(var i=1;0>>=1,e*=e;return i}},{key:\"__isOneDigitInt\",value:function(e){return(1073741823&e)===e}}]),a}(h(Array));return S.__kMaxLength=33554432,S.__kMaxLengthBits=S.__kMaxLength<<5,S.__kMaxBitsPerChar=[0,0,32,51,64,75,83,90,96,102,107,111,115,119,122,126,128,131,134,136,139,141,143,145,147,149,151,153,154,156,158,159,160,162,163,165,166],S.__kBitsPerCharTableShift=5,S.__kBitsPerCharTableMultiplier=1<>>0)/t)},S.__imul=e||function(e,t){return 0|e*t},S});\n//# sourceMappingURL=jsbi-umd.js.map\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f\\\\ufe20-\\\\ufe23',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20f0',\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboMarksRange + rsComboSymbolsRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsLowerMisc = '(?:' + rsLower + '|' + rsMisc + ')',\n rsUpperMisc = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptLowerContr = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptUpperContr = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptLowerContr + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsUpperMisc + '+' + rsOptUpperContr + '(?=' + [rsBreak, rsUpper + rsLowerMisc, '$'].join('|') + ')',\n rsUpper + '?' + rsLowerMisc + '+' + rsOptLowerContr,\n rsUpper + '+' + rsOptUpperContr,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboMarksRange + rsComboSymbolsRange + rsVarRange + ']');\n\n/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2,}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 'ss'\n};\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array ? array.length : 0;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\n/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\n/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\n/**\n * Converts the first character of `string` to upper case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.upperFirst('fred');\n * // => 'Fred'\n *\n * _.upperFirst('FRED');\n * // => 'FRED'\n */\nvar upperFirst = createCaseFirst('toUpperCase');\n\n/**\n * Splits `string` into an array of its words.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {RegExp|string} [pattern] The pattern to match words.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the words of `string`.\n * @example\n *\n * _.words('fred, barney, & pebbles');\n * // => ['fred', 'barney', 'pebbles']\n *\n * _.words('fred, barney, & pebbles', /[^, ]+/g);\n * // => ['fred', 'barney', '&', 'pebbles']\n */\nfunction words(string, pattern, guard) {\n string = toString(string);\n pattern = guard ? undefined : pattern;\n\n if (pattern === undefined) {\n return hasUnicodeWord(string) ? unicodeWords(string) : asciiWords(string);\n }\n return string.match(pattern) || [];\n}\n\nmodule.exports = camelCase;\n","/**\n * lodash (Custom Build) \n * Build: `lodash modularize exports=\"npm\" -o ./`\n * Copyright jQuery Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/** Used as the `TypeError` message for \"Functions\" methods. */\nvar FUNC_ERROR_TEXT = 'Expected a function';\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used to compose bitmasks for comparison styles. */\nvar UNORDERED_COMPARE_FLAG = 1,\n PARTIAL_COMPARE_FLAG = 2;\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n reLeadingDot = /^\\./,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n return freeProcess && freeProcess.binding('util');\n } catch (e) {}\n}());\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array ? array.length : 0;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\n/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\n/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\n/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\n/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\n/**\n * Checks if `value` is a host object in IE < 9.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a host object, else `false`.\n */\nfunction isHostObject(value) {\n // Many host objects are `Object` objects that can coerce to strings\n // despite having improperly defined `toString` methods.\n var result = false;\n if (value != null && typeof value.toString != 'function') {\n try {\n result = !!(value + '');\n } catch (e) {}\n }\n return result;\n}\n\n/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\n/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\n/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar objectToString = objectProto.toString;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/** Built-in value references. */\nvar Symbol = root.Symbol,\n Uint8Array = root.Uint8Array,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView'),\n Map = getNative(root, 'Map'),\n Promise = getNative(root, 'Promise'),\n Set = getNative(root, 'Set'),\n WeakMap = getNative(root, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n}\n\n/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n return this.has(key) && delete this.__data__[key];\n}\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? data[key] !== undefined : hasOwnProperty.call(data, key);\n}\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n}\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n return true;\n}\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries ? entries.length : 0;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n return getMapData(this, key)['delete'](key);\n}\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n getMapData(this, key).set(key, value);\n return this;\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values ? values.length : 0;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\n/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n this.__data__ = new ListCache(entries);\n}\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n}\n\n/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n return this.__data__['delete'](key);\n}\n\n/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\n/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var cache = this.__data__;\n if (cache instanceof ListCache) {\n var pairs = cache.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n return this;\n }\n cache = this.__data__ = new MapCache(pairs);\n }\n cache.set(key, value);\n return this;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n // Safari 9 makes `arguments.length` enumerable in strict mode.\n var result = (isArray(value) || isArguments(value))\n ? baseTimes(value.length, String)\n : [];\n\n var length = result.length,\n skipIndexes = !!length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (key == 'length' || isIndex(key, length)))) {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\n/**\n * The base implementation of `getTag`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n return objectToString.call(value);\n}\n\n/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {boolean} [bitmask] The bitmask of comparison flags.\n * The bitmask may be composed of the following flags:\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, customizer, bitmask, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObject(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, baseIsEqual, customizer, bitmask, stack);\n}\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {number} [bitmask] The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, equalFunc, customizer, bitmask, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = arrayTag,\n othTag = arrayTag;\n\n if (!objIsArr) {\n objTag = getTag(object);\n objTag = objTag == argsTag ? objectTag : objTag;\n }\n if (!othIsArr) {\n othTag = getTag(other);\n othTag = othTag == argsTag ? objectTag : othTag;\n }\n var objIsObj = objTag == objectTag && !isHostObject(object),\n othIsObj = othTag == objectTag && !isHostObject(other),\n isSameTag = objTag == othTag;\n\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, equalFunc, customizer, bitmask, stack)\n : equalByTag(object, other, objTag, equalFunc, customizer, bitmask, stack);\n }\n if (!(bitmask & PARTIAL_COMPARE_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, customizer, bitmask, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, equalFunc, customizer, bitmask, stack);\n}\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, customizer, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = (isFunction(value) || isHostObject(value)) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[objectToString.call(value)];\n}\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, undefined, UNORDERED_COMPARE_FLAG | PARTIAL_COMPARE_FLAG);\n };\n}\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value) {\n return isArray(value) ? value : stringToPath(value);\n}\n\n/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(array);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var index = -1,\n result = true,\n seen = (bitmask & UNORDERED_COMPARE_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!seen.has(othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, customizer, bitmask, stack))) {\n return seen.add(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, customizer, bitmask, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, equalFunc, customizer, bitmask, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= UNORDERED_COMPARE_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), equalFunc, customizer, bitmask, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Function} customizer The function to customize comparisons.\n * @param {number} bitmask The bitmask of comparison flags. See `baseIsEqual`\n * for more details.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, equalFunc, customizer, bitmask, stack) {\n var isPartial = bitmask & PARTIAL_COMPARE_FLAG,\n objProps = keys(object),\n objLength = objProps.length,\n othProps = keys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked && stack.get(other)) {\n return stacked == other;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, customizer, bitmask, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11,\n// for data views in Edge < 14, and promises in Node.js.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = objectToString.call(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : undefined;\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = isKey(path, object) ? [path] : castPath(path);\n\n var result,\n index = -1,\n length = path.length;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result) {\n return result;\n }\n var length = object ? object.length : 0;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n length = length == null ? MAX_SAFE_INTEGER : length;\n return !!length &&\n (typeof value == 'number' || reIsUint.test(value)) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\n/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\n/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoize(function(string) {\n string = toString(string);\n\n var result = [];\n if (reLeadingDot.test(string)) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, string) {\n result.push(quote ? string.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to process.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\n/**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\nfunction memoize(func, resolver) {\n if (typeof func != 'function' || (resolver && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result);\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n}\n\n// Assign cache to `_.memoize`.\nmemoize.Cache = MapCache;\n\n/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nfunction isArguments(value) {\n // Safari 8.1 makes `arguments.callee` enumerable in strict mode.\n return isArrayLikeObject(value) && hasOwnProperty.call(value, 'callee') &&\n (!propertyIsEnumerable.call(value, 'callee') || objectToString.call(value) == argsTag);\n}\n\n/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\n/**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\nfunction isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n}\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 8-9 which returns 'object' for typed array and other constructors.\n var tag = isObject(value) ? objectToString.call(value) : '';\n return tag == funcTag || tag == genTag;\n}\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\n/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return !!value && (type == 'object' || type == 'function');\n}\n\n/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return !!value && typeof value == 'object';\n}\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && objectToString.call(value) == symbolTag);\n}\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n/**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\nfunction toString(value) {\n return value == null ? '' : baseToString(value);\n}\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\n/**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\nfunction mapValues(object, iteratee) {\n var result = {};\n iteratee = baseIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n result[key] = iteratee(value, key, object);\n });\n return result;\n}\n\n/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\n/**\n * Creates a function that returns the value at `path` of a given object.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Util\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n * @example\n *\n * var objects = [\n * { 'a': { 'b': 2 } },\n * { 'a': { 'b': 1 } }\n * ];\n *\n * _.map(objects, _.property('a.b'));\n * // => [2, 1]\n *\n * _.map(_.sortBy(objects, _.property(['a', 'b'])), 'a.b');\n * // => [1, 2]\n */\nfunction property(path) {\n return isKey(path) ? baseProperty(toKey(path)) : basePropertyDeep(path);\n}\n\nmodule.exports = mapValues;\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '